diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..63890c7 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..badbc02 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +_site +.sass-cache diff --git a/404.html b/404.html new file mode 100644 index 0000000..b4ce7b4 --- /dev/null +++ b/404.html @@ -0,0 +1,18 @@ +--- +title: Limbo +--- + + + + + {% include head.html %} + + +
+

404

+

+ Did You steal the content from me? No?! Well, somebody did, and you're the only one here... +

+
+ + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c2b2b32 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Aigars + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 78100c3..5a2a327 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -websiteflash.github.com -======================= +# websiteflash's github page + +welcome to my github page, this is the link http://websiteflash.github.io/ -welcome to my github blog! diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..6d39e3a --- /dev/null +++ b/_config.yml @@ -0,0 +1,22 @@ +# Site settings +title: 学习笔记 +email: delsen_web@163.com +description: > # this means to ignore newlines until "baseurl:" + 本博客使用jekyll构建,用于记录学习笔记。 +baseurl: "" # the subpath of your site, e.g. /blog/ +url: "http://websiteflash.github.io/" # the base hostname & protocol for your site +twitter_username: websiteflash +github_username: websiteflash + +# Build settings +markdown: redcarpet + +highlighter: pygments +permalink: /:title + +redcarpet: + extensions: [strikethrough, tables] + +sass: + sass_dir: public/css + style: :compressed diff --git a/_data/brume.yml b/_data/brume.yml new file mode 100644 index 0000000..993ad2c --- /dev/null +++ b/_data/brume.yml @@ -0,0 +1,3 @@ +name: websiteflash'blog +author: Jessedeng jessedeng@tencent.com +description: It's a simple github page blog. diff --git a/_data/links.yml b/_data/links.yml new file mode 100644 index 0000000..0098a66 --- /dev/null +++ b/_data/links.yml @@ -0,0 +1,5 @@ +- url: / + title: Home + +- url: /about + title: About diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..be3976f --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,55 @@ + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..86a98f3 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,31 @@ + + + + + + + + + +{{ page.title }} · {{ site.data.brume.name }} + + + + + + + + + + + + +{% if site.paginate %} + + +{% endif %} + + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..cfe381f --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,27 @@ + diff --git a/_includes/navigation.html b/_includes/navigation.html new file mode 100644 index 0000000..dfcdf2b --- /dev/null +++ b/_includes/navigation.html @@ -0,0 +1,6 @@ + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..6ac41ce --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,46 @@ + + + + {% include head.html %} + + +
+
+
+ + +
+ {% include navigation.html %} +
+ + {{ content }} + + +
+ + + + + + + + + diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..3e17fa5 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,9 @@ +--- +layout: default +--- + +
+

{{ page.title }}

+ + {{ content }} +
diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..079f5fc --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,30 @@ +--- +layout: default +--- + +
+ +

{{ page.title }}

+ + {{ content }} +
+ +
+ \ No newline at end of file diff --git a/_posts/2015-01-16-start-with-jekyll.md b/_posts/2015-01-16-start-with-jekyll.md new file mode 100644 index 0000000..0ee8530 --- /dev/null +++ b/_posts/2015-01-16-start-with-jekyll.md @@ -0,0 +1,87 @@ +--- +layout: post +title: "Start with Jekyll" +date: 2015-01-16 00:31:30 +categories: jekyll +--- + +> 最近准备用jekyll搭建一个博客,用来记录平时学习的笔记,这个做为使用jekyll写得第一篇文章,就记录怎么使用jekyll搭建博客! + +# 安装jekyll + +只需要简单几步就可以完成安装 + +```bash +$ gem install jekyll + +$ jekyll new myblog + +$ cd myblog + +~/myblog $ jekyll serve + +# => Now browse to http://localhost:4000 +``` + +执行上面几步后就在本地初始化好了一个博客系统,执行`jekyll serve`启动博客,之后就可以通过浏览器访问了。 + +# 环境依赖 + +* Ruby +* Rubygems +* Linux,Unix, or Mac OSX +* NodeJS + +如果要在windows下搭建需要准备的环境很多,在mac下就会简单很多,具体每个环境怎么安装就不在详述,都是可以google到的,我们重点说下怎么用。 + +# 目录介绍 + +说下我们需要关心和常用的目录 + +* _includes ——页面片的目录,可以把一些通用的内容抽出来放在这里,在布局中引用 +* _layouts ——页面布局结构的目录,布局之间可以嵌套引用 +* _posts ——文章markdown的目录,平时写得内容都是放在这里 +* _sass ——sass文件的目录 +* _site ——生成的页面和样式文件的目录 + +# 写文章 + +编写文章很简单,按照格式建好一个md文档,剩下的就是用markdown编写,保存后jekyll就会编译生成html文章,如果没有自动生成,也可以手动运行`jekyll build` + +参考格式: + +```text +--- +layout: post +title: "Welcome to Jekyll!" +date: 2015-01-16 00:31:30 +categories: jekyll update +--- + +这里是文章内容开始!! +``` + +参数说明: + +* layout —— 文章使用的页面布局结构 +* title —— 文章的标题 +* date —— 文章的撰写时间 +* categories —— 文章的类别,子类别空格分隔,会按照这个类别生成目录 + +文件命名: + +文件命名也需要按照一定规范{YYYY}-{MM}-{DD}-{title}.md,jekyll会按照前面的日期来生成目录,比如: + +`2015-01-16-welcomen-to-jekyll.md` => `2015/01/16/welcome-to-jekyll.html` + +# 其他 + +一些高级的使用,比如模板、配置等,建议去官网查看[Jekyll docs][jekyll] + +更详细的文档教程可以参考下面的内容: + +> Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll’s dedicated Help repository][jekyll-help]. + +[jekyll]: http://jekyllrb.com +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-help]: https://github.com/jekyll/jekyll-help diff --git a/_posts/2015-01-17-markdown-learn.md b/_posts/2015-01-17-markdown-learn.md new file mode 100644 index 0000000..4b7698a --- /dev/null +++ b/_posts/2015-01-17-markdown-learn.md @@ -0,0 +1,180 @@ +--- +layout: post +title: "Markdown学习笔记" +date: 2015-01-17 13:13:30 +categories: markdown +--- + +> 知识这东西学了不用,很快就忘记了 + 刚好最近想要用jekll搭建一个笔记博客,使用markdown编写,就再重新学习一下,并记录下来 + +#段落 + +使用空行作为段落的分隔,每个空行都会被转为`
` +如果单纯想实现换行,可以在上一行后面输入两个空格,然后回车 + + this is a content + + this is another content + +> this is a content +> +> this is another content + +#标题 + +标题有两种写法,分别是**类Setext**和**类atx** + +类Setext用底线的形式 + + this is a h1 title + ================== + + this is a h2 title + ------------------ + +> this is a h1 title +> ================== +> +> this is a h2 title +> ------------------ + +类atx使用#形式 + + # this is a h1 title + + ## this is a h2 title + + ### this is a h3 title + + #### this is a h4 title + +> # this is a h1 title +> +> ## this is a h2 title +> +> ### this is a h3 title +> +> #### this is a h4 title + +#区块引用 + +区块引用使用`>`,可以放在一段的开头,也可以每行都写,引用内部可以嵌套,引用内的markdonw语法也会正常解析 + + > 引用内容 + > + > 引用内容 + + > 引用内容 + 引用内容 + + > 引用内容`强调` + +> 引用内容 +> +> 引用内容 +> +> 引用内容 + 引用内容 +> +> 引用内容`强调` + +#列表 + +列表分为无序列表和有序列表 +无序列表使用*、+、-表示,有序列表使用数字加点的方式表示 + +无序列表 + + * red + * green + * white + + + red + + green + + white + +> * red +> * green +> * white +> +> + red +> + green +> + white + +有序列表 + + 1. red + 2. green + 3. white + +> 1. red +> 2. green +> 3. white + +#代码区块 + +代码区块使用4个空格或者一个tab开始,直到遇到没有4个空格或tab的地方结束 +行内的代码使用`括起来表示 + + var test = {}; + test.hello = function(){} + + 上面就是一段`code`块 + +上面就是一段`code`块 + +#链接 + +链接有两种方式,内联或引用 + + this is an [example](http://example.com) + this is an [example](http://example.com "with a title") with a title + + this is an reference [example][2], you can click [google][1] or [yahoo][3] + + [1]: http://www.google.com "google" + [2]: http://example.com "example title" + [3]: http://yahoo.com "yahoo" + +> this is an [example](http://example.com) +> +> this is an [example](http://example.com "with a title") with a title +> +> this is an reference [example][example], you can click those links: [google][1] or [yahoo][3] +> +> [1]: http://www.google.com "google" +> [example]: http://example.com "example title" +> [3]: http://yahoo.com "yahoo" + +#图片 + +图片和链接类似,也是有两种方式,内联或引用 + + ![alt text](path/to/demo.png "title text") + + ![alt text][id] + + [id]: path/to/demo.png "title text" + +#强调 + +强调在行内使用*、_表示,可以是一个或两个 + + this is a *test* + this is a **test** + this is a _test_ + this is a __test__ + +> this is a *test* +> this is a **test** +> this is a _test_ +> this is a __test__ + +#参考链接 + +[Markdown语法说明-简体中文][4] +[Daring Fireball: Markdown][5] + +[4]: http://wowubuntu.com/markdown/ "Markdown语法说明-简体中文" +[5]: http://daringfireball.net/projects/markdown/basics "Daring Fireball: Markdown" diff --git a/_posts/2015-03-06-git-command.md b/_posts/2015-03-06-git-command.md new file mode 100644 index 0000000..e854c86 --- /dev/null +++ b/_posts/2015-03-06-git-command.md @@ -0,0 +1,96 @@ +--- +layout: post +title: "Git 常用操作" +date: 2015-03-06 20:03 +categories: git +--- + +> git 常用操作笔记 + +# git init + +`git init` 用于创建新的代码仓库 + +# git clone + +`git clone` 用于克隆一个远程仓库的本地版本 + +```bash +git clone https://github.com/websiteflash/javascript.git +``` + +# git add + +`git add ` 将修改的文件添加到缓存区,以备后续提交 + +```bash +git add . + +git add ./ --all +``` + +# git commit + +`git commit -m "commit log message"` 将缓存区的代码提交,但是还未发送到远端代码库 + +```bash +git commit -m "init project" +``` + +# git push + +`git push origin master` 将修改提交到远程代码库 +如果还没克隆仓库,可以使用 +`git remote add origin ` 连接到远程服务器,并推送修改 + +# git pull + +`git pull` 将远程仓库的代码合并到本地分支 + +# git status + +`git status` 查看当前的版本库的状态,包括分支信息,待提交文件等 + +# git log + +`git log` 查看提交的日志记录,可以待负数,表示最近的几条日志,默认显示全部 + +```bash +git log -1 # 查看最近的一条日志 + +git log -5 # 查看最近的5天日志 +``` + +# git branch + +`git branch` 列出当前本地的所有分支 + +# git checkout + +```bash +git checkout dev # 切换到dev分支 + +git checkout -b dev # 创建一个dev分支 + +git checkout --orphan dev # 创建一个独立的分支 +``` + + +# **Notes** + +# 切换分支 + +每次切换分支最好保留一个清洁的工作区域,否则当前的修改会被带到切换的分支,通常的做法是切换之前`git commit`提交所有修改,或者`git stash`缓存修改,切换回来时用`git stash apply`将缓存的修改还原 + +其背后的原因是:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切换到另一个分支 + +![img local][img-local] + +# 参考资料 + +* [git 简易指南][git-guide] +* [git 切换分支问题][git-checkout] + +[img-local]: /assets/images/git/local.png +[git-checkout]: http://segmentfault.com/q/1010000000156026 +[git-guide]: http://www.bootcss.com/p/git-guide/ \ No newline at end of file diff --git a/_posts/2015-03-09-github-pages-with-jekyll.md b/_posts/2015-03-09-github-pages-with-jekyll.md new file mode 100644 index 0000000..756e2ec --- /dev/null +++ b/_posts/2015-03-09-github-pages-with-jekyll.md @@ -0,0 +1,81 @@ +--- +layout: post +title: Github Pages with Jekyll +date: 2015-03-09 17:06:30 +categories: jekyll +--- + +> 生命在于折腾,最近折腾jekyll+github pages生成个人github博客和项目主页,走了一些弯路,这里总结一下以作备忘。 + +# 什么是github pages + +简单来说,github pages是github提供给开发者的一个免费存放静态网页的地方,开发者可以通过github pages来放置项目的主页或个人、组织的主页,比如: + +* [http://websiteflash.github.io/][websiteflash] +* [http://websiteflash.github.io/canvas-log/][canvas-log] + +详细介绍可以参考官网说明[github pages][github pages] + +# 怎么创建github pages + +github pages创建对项目和个人,有一些稍微的差别 + +* 项目: 创建一个名叫gh-pages的分支,可以通过项目的`setting`自动创建,也可以手动创建分支,自动创建会有一些模版可以选择,页面代码就放在这个分支里面,通过`username.github.io/project-name`访问 +* 个人或组织: 直接把页面代码放在对应项目的主干中就可以,然后通过`username.github.io`直接访问 + +详细步骤也可以参考官网说明[github pages][github pages] + +# github pages 和 jekyll + +github pages是如何实现这个功能的呢,其实它背后就是jekyll,只是它的jekyll是在服务器端,而一般我们都是自己的电脑上,所以这里仅仅是对我们透明了而已。 + +所以我们在本地写的jekyll markdown文件可以直接上传,github会自动给我们生成对应的静态页面 + +不过,编译生成静态页面会有一些依赖库,为了确保本地的编译环境和github服务器构建的环境一致,有一个叫[pages-gem][pages gem]工具,可以帮助我们实现这一目的,具体可以参考: + +* [github pages width jekyll][github pages width jekyll] +* [github pages gem][github pages gem] + +按照上面的步骤安装完成后,只是建好了jekyll的目录,此时只能根据markdown生成一个没有样式的简单文件,我们还需要初始化jekyll的必要目录,项目目录下执行 + +```bash +bundle exec jekyll new ./ +``` + +这会收到一个错误提示: + +```bash +Conflict: /Users/test/Documents/code/github/websiteflash.github.com exists and is not empty. +``` + +此时我们只能先将现有目录下得文件拷贝到一个临时目录,待安装完成后再拷贝出来,new的执行方式也稍微调整 + +```bash +jekyll new ./ +``` + +这样就可以生成带样式的页面 + +# 总结 + +* 项目主页不建议在本地再搞一套jekyll + + + 过于复杂,很多文件基本都不需要 + + 难以满足需求实现,项目主页一般都会包含一些演示demo,这些都不是纯静态html页面能完成的,还需要写css和javascript配合,所以这里markdown的优势就不再明显 + + 项目主页一般都很简单,也不会涉及到过多的页面,所以不存在太多管理和维护上得问题 + + +* jekyll更适合是配合github pages搭建个人博客 + + + markdown的书写方式 + + 自动生成目录和文章导航 + + 参数可配置 + + 页面片可共用 + + ...... + +[github pages]: https://pages.github.com/ +[pages gem]: https://github.com/github/pages-gem +[github pages width jekyll]: https://help.github.com/articles/using-jekyll-with-pages/ +[github pages gem]: http://wcc723.github.io/jekyll/2014/09/05/github-page/ +[websiteflash]: http://websiteflash.github.io/ +[canvas-log]: http://websiteflash.github.io/canvas-log/ \ No newline at end of file diff --git a/_posts/2015-03-13-how-video-play.md b/_posts/2015-03-13-how-video-play.md new file mode 100644 index 0000000..9beee4a --- /dev/null +++ b/_posts/2015-03-13-how-video-play.md @@ -0,0 +1,14 @@ +--- +layout: post +title: How Video Play +date: 2015-03-13 00:55:30 +categories: jekyll +--- + +> 在公司分享的PPT,主要介绍html5 video的用法,以及底层实现,进一步介绍了视频整个播放的体系。 +> +> 放在这里,做个记录,以备以后查阅。 + +# 《How Video Play》PPT + +
How video play from websiteflash
\ No newline at end of file diff --git a/_posts/2015-03-17-fiddler-extension-rosin.md b/_posts/2015-03-17-fiddler-extension-rosin.md new file mode 100644 index 0000000..fc16ced --- /dev/null +++ b/_posts/2015-03-17-fiddler-extension-rosin.md @@ -0,0 +1,95 @@ +--- +layout: post +title: Rosin-移动端web开发调试利器 +date: 2015-03-17 10:55:30 +categories: rosin +--- + +> Rosin 是一个Fiddler插件,它能接收页面中的console的输出,将内容持久存储在本地,并展现在Fiddler面板。同时,它还提供很多其他便捷功能,详细内容见下文中的特性部分。 +> Rosin 的开发初衷,是由于我们缺少移动端的调试手段,当涉及到真机调试时,往往只能通过alert、img请求、日志框等方式来获取当前页面的运行状态,这些方法都存在各自的弊端,Rosin就是为解决这些弊端而生。 + +# Rosin +A tool for web developers debug mobile page. [http://alloyteam.github.io/Rosin/][Rosin github] + +Rosin是一个Fiddler插件,协助开发者进行移动端页面开发调试,是移动端web开发、调试利器。 + +# 版本 + +v1.0.0 + +# 下载安装 + +下载对应Fiddler版本的Rosin,解压之后运行RosinInstall.exe安装 +( 如果电脑有权限控制,请 "右键->以管理员身份运行" ) + +[Roisn for Fiddler2][Roisn for Fiddler2] +[Roisn for Fiddler4][Roisn for Fiddler4] + +# 特性 + +* 基于Fiddler实现 +* 配置页面匹配规则 +* 拦截console方法输出 +* 日志内容本地存储 +* 日志内容展示、搜索、过滤 +* 复杂对象JOSN解析 +* 脚本运行错误捕获 + +# 使用方法 + +1. 打开Fiddler,切换到Rosin Tab +2. 点击“Add Rule”按钮,打开规则添加面板 +![step-1][step-1] +3. 选择规则匹配类型,支持三种匹配类型: +     Host——域名,如:qq.com +     Path——路径或者具体的页面地址,如:http://web.p.qq.com/coupon 或者 http://web.p.qq.com/coupon/demo.html +     Regex——正则表达式,如:^http:\/\/web\.p\.qq\.com +4. 输入具体的规则内容 +![step-2][step-2] +5. 打开测试页面,在测试页面代码中调用console打日志,或者在PC控制台模拟 +![step-3][step-3] +6. 回到Fiddler,切换到Rosin的Log选项卡,选择我们的测试页面,查看日志 +7. 对于复杂对象,双击Object字符区域选中,然后右键 +![step-4][step-4] +8. 复杂对象都会被转为JSON对象,生成一个JSON View +![step-5][step-5] +9. 功能区,一些功能按钮,包括:日志文件导出、日志清空、日志文件删除 +10. 搜索功能,搜索框中输入文本,会自动高亮匹配结果,按Enter切换匹配区域 +![step-6][step-6] +11. javascript运行时错误信息捕获,并且支持跨域情况下的捕获(还记得那些Script.error 0的错误吗) +![step-7][step-7] + +# 更新日志 + +v1.0.0 -- 2015.01.20 + +* 支持日志级别按颜色区分 +* 支持按级别筛选日志 +* 支持日志文件导出 +* 支持日志内容清除 +* 支持日志文件删除 +* 支持日志记录自动清理 +* 支持日志内容JSON对象解析 +* 支持script error信息输出 +* 支持跨域script error信息获取 +* 优化日志展示 + +v0.0.1 -- 2014.12.03 + +* 支持console日志接收 +* 支持fiddler日志展示 +* 支持页面规则配置 +* 支持日志列表展示 + + + +[Rosin github]: http://alloyteam.github.io/Rosin/ +[Roisn for Fiddler2]: http://alloyteam.github.io/Rosin/download/1.0.1/Rosin-v1-for-fiddler2.zip +[Roisn for Fiddler4]: http://alloyteam.github.io/Rosin/download/1.0.1/Rosin-v1-for-fiddler4.zip +[step-1]: http://alloyteam.github.io/Rosin/images/step-1.jpg +[step-2]: http://alloyteam.github.io/Rosin/images/step-2.jpg +[step-3]: http://alloyteam.github.io/Rosin/images/step-3.jpg +[step-4]: http://alloyteam.github.io/Rosin/images/step-4.jpg +[step-5]: http://alloyteam.github.io/Rosin/images/step-5.jpg +[step-6]: http://alloyteam.github.io/Rosin/images/step-6.jpg +[step-7]: http://alloyteam.github.io/Rosin/images/step-7.jpg \ No newline at end of file diff --git a/_posts/2015-03-26-compass-sass-install.md b/_posts/2015-03-26-compass-sass-install.md new file mode 100644 index 0000000..aac4c2e --- /dev/null +++ b/_posts/2015-03-26-compass-sass-install.md @@ -0,0 +1,70 @@ +--- +layout: post +title: Compass Sass 安装笔记 +date: 2015-03-26 19:20:30 +categories: compass +--- + +> 一直不想用sass,就是因为安装起来太费劲,以前的项目中也因为这个原因而选择less,可不想什么就偏偏来什么。最近,加入一个新的项目,里面就用的sass,折腾了我大半天的时间来安装环境,最终在大神的帮助下算是跑起来了,赶紧记录一下。 + +# 安装ruby + +首先,compass和sass都需要在ruby的环境下才能运行,所以第一步是安装ruby。Mac下自带ruby,不需要安装,后面记录的也都是window下安装的方法。 + +去[rubyinstaller][rubyinstaller]下载安装程序,直接安装就好了,唯一要注意的是勾选"添加到系统路径" + +![install ruby][img-install-ruby] + +安装完成后在命令窗口中运行`ruby -v`查看是否安装成功 + +![install ruby success][img-install-ruby-success] + +如果提示找不到ruby命令,重启一下电脑 + +# 设置镜像 + +ruby对应的包管理器rubygem会随ruby一起安装。另外,默认包的镜像地址是 `https://rubygems.org/` ,有时候也可能没有,可以通过 `gem sources -l` 查看当前的镜像地址列表 + +由于相关原因, `https://rubygems.org/` 在国内不访问不到的,不过可以使用淘宝提供的镜像地址: `http://ruby.taobao.org/` ,具体做法是: +1. 先移除原有的镜像地址,`gem sources -r https://rubygems.org/` +2. 添加新的镜像地址,`gem sources -a http://ruby.taobao.org/` + +# 安装comapss + +设置完镜像地址之后,我们就可以开始安装compass,运行 `gem install compass` ,如果没有网络问题,gem就会去下载相应的包以及依赖的包 + +# 无网络下安装 + +上面都是在网络正常的情况下安装,但是公司的环境比较特殊,有两台电脑,一台电脑只能访问内部网,所以以上的方法在这里都失效了。 + +采用曲线的方案,通过外网电脑将compass包安装下载好,然后到ruby gems的目录中,找到对应的包,拷贝到内网电脑上,最后运行 `gem install --local compass-1.0.3.gem` ,这样ruby直接从本地文件进行包的安装。 + +在已安装compass的电脑上,找到ruby目录下的gems包,我的是在 `C:\Ruby21-x64\lib\ruby\gems\2.1.0\cache` 下 + +![install ruby gems][img-install-ruby-gems] + +可以看到里面有compass的安装包以及它的依赖包,将所有的包文件拷贝到内网电脑,cd到放置包的目录,运行 `gem install --local compass-1.0.3.gem` + +![install ruby compass local][img-install-compass-local] + +到此,compass安装完成。 + +# 各种问题 + +1. 公司网络限制,连 `gem sources` 增加淘宝的镜像地址都不行,只能通过设置公司的代理来解决 + +``` +gem sources -a http://ruby.taobao.org/ --http-proxy=http://proxy.example.com:8080 +``` + +参考链接 [设置镜像代理][link-set-proxy] + +2. 无网络安装,两台电脑的ruby版本必须是一致的,否则会出现兼容性问题,导致运行失败 + +[rubyinstaller]: http://rubyinstaller.org/downloads/ +[img-install-ruby]: /assets/images/compass/install-ruby.jpg +[img-install-ruby-gems]: /assets/images/compass/install-ruby-gems.jpg +[img-install-ruby-success]: /assets/images/compass/install-ruby-success.jpg +[img-install-compass-local]: /assets/images/compass/install-compass-local.jpg + +[link-set-proxy]: http://segmentfault.com/a/1190000002435496 \ No newline at end of file diff --git a/_posts/2015-03-28-rosin-develop-debug.md b/_posts/2015-03-28-rosin-develop-debug.md new file mode 100644 index 0000000..933395a --- /dev/null +++ b/_posts/2015-03-28-rosin-develop-debug.md @@ -0,0 +1,39 @@ +--- +layout: post +title: Rosin 开发调试笔记 +date: 2015-03-28 12:20:30 +categories: rosin +--- + +> 开发Fiddler插件Rosin,被各种问题折腾得欲仙欲死,其实开发Fiddler插件很简单,主要是使用C#编程遇到各种问题。跟使用前端脚本编程还是大不相同。 + +# List 和 Array + +List和Array都可以用来表示列表,不同之处是List是不固定长度,Array是固定长度的,另外List可以通过toArray()方法转为Array + +# Collection 遍历时不可编辑 + +在Rosin运行时报错 `collection was modified enumeration operation may not execute` ,查阅资料得知是collection在foreach时,是不能对其进行修改、增加、删除的,否则会导致报错,解决方案是,在foreach时拷贝一个collection的复制,对复制对象进行foreach,`Collection.ToArray()` + +参考链接 [stackoverflow link][stackoverflow link] + +# 文件进程占用 + +Rosin的日志内容都是先写在本地文件,再通过事件通知从本地文件读取内容输出到Fiddler面板,这里就涉及到同时访问同一个io进程的问题,针对读写进程的共用,可以通过配置`FileShare`参数实现: + +``` +new FileStream(this.sFileDir, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); +``` + +但是对于高频访问,导致同时要对同一文件进行写操作,必然导致io进程占用报错,这只能通过改变写文件的机制去解决,具体的做法是: + +1. 建立一个文件的管理collection,管理所有涉及过的file +2. 每个文件需要写入的内容先分别缓存起来,每次调用写方法后,遍历缓存对象,依次写入 + +# 高并发写入 + +上面的方案解决了写文件进程占用的问题,但是由于瞬时高频大量的日志内容需要写入,最终引发了更多的并发问题。解决方案其实很简单了,既然高频会造成问题,就采用降频的方式,将每次日志发送触发条件的最高阈值调高,这样到Rosin里面时,基本就不会存在高频的问题。 + +最后,不得不说,方法比努力重要,只需一分钟就能解决的问题花了我一个星期。 + +[stackoverflow link]: http://stackoverflow.com/questions/6177697/c-sharp-collection-was-modified-enumeration-operation-may-not-execute \ No newline at end of file diff --git a/_posts/2015-04-03-rosin-develop-debug-2.md b/_posts/2015-04-03-rosin-develop-debug-2.md new file mode 100644 index 0000000..c70515a --- /dev/null +++ b/_posts/2015-04-03-rosin-develop-debug-2.md @@ -0,0 +1,62 @@ +--- +layout: post +title: Rosin 开发调试笔记(二) +date: 2015-04-03 15:20:30 +categories: rosin +--- + +> 最近把Rosin开源,在公司和github上对外发布,收到不少同学的反馈,到昨天基本都解决完。这里做一个总结,记录反馈的问题以及解决方案。 + +# 设置Fiddler插件图标的问题 + +之前开发时,自定义设置图标的问题一直没有解决,都是使用系统自带的图标,但是在低版本的Fiddler中,有的图标类型是没有的。有同学反馈这个问题,尝试了多种方法后依然不可行,最后无意在github上发现了Fiddler Docs的项目,向作者提问才得知,icon的设置应该放在tabPage添加到tabViews之后,究其原因是.Net的UI在渲染前是不会去加载图片的,具体可以看下这个[issue](https://github.com/telerik/fiddler-docs/issues/4) + +搞清楚这个问题,那设置图标的代码就很简单 + +```c# +TabPage oPage = new TabPage("Rosin"); + +oPage.Controls.Add(this.oConfigControl); +this.oConfigControl.Dock = DockStyle.Fill; + +int size = FiddlerApplication.UI.tabsViews.TabPages.Count; +FiddlerApplication.UI.tabsViews.TabPages.Insert(size, oPage); + +// 这里的图片是通过资源的方式打包到项目中的 +FiddlerApplication.UI.imglSessionIcons.Images.Add("Rosin", Rosin.Properties.Resources.icon); +oPage.ImageKey = "Rosin"; +``` + +# 违反安全透明规则 + +京东的同学给我反馈,在使用时报了一个奇怪的错误,`尝试访问违反安全按透明规则的方法`,一开始我以为是京东内部it系统做了什么限制,导致没有权限。后来,google了一下,发现这个是.Net Framework 4中引入的一个特性,可以设置代码的执行权限,具体说明可以看下[官网文档](https://msdn.microsoft.com/zh-cn/library/dd233102(v=vs.110).aspx),要解决这个报错,按照官方的示例写就可以,即将下面的代码添加到 `Properties/AssemblyInfo.cs` + +```c# +[assembly: SecurityRules(SecurityRuleSet.Level1)] +``` + +# 缺少编译器要求的成员`System.Runtime.CompilerServices.ExtensionAttribute..ctor` + +出现的原因不是很清楚,只是在低版本的Fiddler上会出现这个问题,编译也不能通过,应该是缺少部分类的原因,修复方案就是自己写一个静态类,可以参考下这篇文章,[链接](http://www.cnblogs.com/zihuxinyu/archive/2013/05/06/3063181.html) + +```c# +//缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor” +namespace System.Runtime.CompilerServices +{ + public class ExtensionAttribute : Attribute { } +} +``` + +# https页面支持 + +https的情况由于平时业务基本没有涉及,所以在开发Rosin时将这点遗漏。受微信同事的提醒,新增加对https的支持,但实现方案和之前设想的大不相同。设想之初,认为只要将发送日志的协议由http改为https就可以简单实现,但现实告诉我们,too simple! + +首先,要讲一下http/https和fiddler这些代理工具之间的一个关系,所谓代理,就是fiddler在接受到客户端的请求后,自己模拟一个同样的请求发送到服务器,再将服务器返回的数据返回给客户端,这样它就能得到整个过程中的所有数据,这在处理http协议的请求时很好实现,但是我们知道https和http一个最大的不同就是数据加密,所以fiddler不能直接获取到服务器端返回的数据。 + +那fiddler是怎么实现对https的支持的呢,其中的关键就是服务器的443端口。fiddler首先通过向服务器的443端口发送一个请求,获取到服务器的ip地址和端口号,然后通过IP地址和端口号直接同服务器建立TCP/IP连接通道,从而进行数据传输,这也就是为什么我们在抓https的包时,总能看到一个端口为443的请求的原因。 + +理解了fiddler怎么实现对https的支持,再来看Rosin的实现原理,Rosin是通过在页面端发送一个\_\_rosin\_\_.qq.com的请求,将日志内容带上,在fiddler侧拦截这个请求,接收日志数据,所以当协议换为https的时候,这样的实现方式就意味着我们还需要模拟一个服务器去处理443的请求,实现的成本太高了。 + +最后改变策略,针对https的请求,利用已建好的tcp/ip通道,将日志请求域名改为页面的域名,在请求的链接上带上特殊标识,以便Rosin能够识别,最后再拦截fiddler模拟的请求,从而达到获取日志数据的目的。不过,这样的实现方式存在一个问题,即这次请求一定会先到达服务器 +端,在开发测试时,量比较小还可以接受。 + diff --git a/_posts/2015-06-03-webpack-reactjs-workflow.md b/_posts/2015-06-03-webpack-reactjs-workflow.md new file mode 100644 index 0000000..0db3c82 --- /dev/null +++ b/_posts/2015-06-03-webpack-reactjs-workflow.md @@ -0,0 +1,9 @@ +--- +layout: post +title: 使用webpack搭建reactjs开发工作流 +date: 2015-06-03 15:20:30 +categories: webpack reactjs workflow +--- + +> + diff --git a/_posts/2015-08-05-nodejs-with-shell.md b/_posts/2015-08-05-nodejs-with-shell.md new file mode 100644 index 0000000..55bcfca --- /dev/null +++ b/_posts/2015-08-05-nodejs-with-shell.md @@ -0,0 +1,12 @@ +--- +layout: post +title: nodejs运行linux命令 +date: 2015-08-05 17:20:30 +categories: nodejs shell child_process +--- + +> 这是一个忧伤的故事,前几天用nodejs写了一个定时脚本来跑任务,感觉棒棒的。但是,诡异的是每隔3天这个进程就会意外挂掉,没办法,查日志,发现有报错`Error: maxBuffer exceeded`,原来是`child_preocess.exec`有一个输出最大限制200k,达到上限后就会导致进程退出。这个问题说明对`child_preocess`的`spawn`和`exec`用法掌握不足,需要好好学习总结。 + +# 关于child_preocess + +有时候,需要在服务器上执行linux命令,但是又不想写shell脚本(其实是不太会写),好在有node,给我们提供了执行linux命令方法。 diff --git a/_posts/2015-08-07-vps-shadowsocks-proxy.md b/_posts/2015-08-07-vps-shadowsocks-proxy.md new file mode 100644 index 0000000..b64b39d --- /dev/null +++ b/_posts/2015-08-07-vps-shadowsocks-proxy.md @@ -0,0 +1,64 @@ +--- +layout: post +title: 搭建自己的代理 +date: 2015-08-06 20:20:30 +categories: vps shadowsocks proxy +--- + +> 习惯了使用Google来搜索各种资料,不能Google感觉整个人都不好了。最近一直在用的代理工具又被取缔了,于是,抱着学习的心态,准备自己来搭建一个代理。 + +## 准备一台服务器 + +代理的过程就是将我们的网络请求转给一台可访问世界网络的服务器,通过它访问被限制的网络,所以我们的首先要准备一台可访问世界网络的服务器,这样的服务器一般放在国外。比较著名的服务器提供商有digitalocean、linode,经过对比和同事推荐,最终我选择了[digitalocean][digitalocean]。 + +1. 首先注册一个账号,然后往账号充钱,充值这里建议使用Paypal +2. 创建Droplet,选择$5一个月的就够用,系统选择Ubuntu,这样你的vps主机就创建完成 +3. 使用ssh登录,默认账号是root,密码在注册时发送到邮箱,`ssh root@128.128.128.128`,首次登录会要求修改密码 + +## 安装shadowsocks + +shadowsocks是一个代理工具,项目托管在github上,[shadowsocks][shadowsocks],按照教程安装 + +```bash +apt-get install python-pip + +pip install shadowsocks +``` + +## 启动shadowsocks + +```bash +# 启动shadowsocks +ssserver -p 443 -k password -m aes-256-cfb + +# 后台启动shadowsocks +ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start +``` + +参数说明: + +* p 启动的端口号 +* k 连接密码 +* m 通信的加密方式 + +当然还有停止的命令 + +```bash +# 停止shadowsocks +ssserver -d stop +``` + +## 设置client代理 + +shadowsocks分别提供了windows/OS X、android/iOS客户端的client版本 + +以OS X为例,下载client并安装,启动,设置服务器: + +![img client][img-client] + +配置完成后,重启shadowsocks,打开Google,成功。 + +[digitalocean]: https://www.digitalocean.com/ +[shadowsocks]: https://github.com/shadowsocks/shadowsocks + +[img-client]: /assets/images/shadowsocks/client.png \ No newline at end of file diff --git a/_posts/2015-08-13-chrome-exensions-communicate.md b/_posts/2015-08-13-chrome-exensions-communicate.md new file mode 100644 index 0000000..97c13d0 --- /dev/null +++ b/_posts/2015-08-13-chrome-exensions-communicate.md @@ -0,0 +1,137 @@ +--- +layout: post +title: chrome插件开发组件间通信 +date: 2015-08-13 21:20:30 +categories: chrome extensions communicate +--- + +> 最近研究chrome插件开发,还是挺有意思,可以做很多插件帮助我们去做事,非常方便省事。chrome官方开发文档还是很齐全的,边学边看,不过,对其中的插件各部分之间通信方式还不是很清楚。今天花一天的学习再次学习官方文档,总算有个基本的掌握,本文即是对学习后的一个总结。 + +# 组件间关系 + +chrome插件的实现形式有多种,包含不通的组件部分,下面这张图摘自chrome官方开发文档,我觉得很形象的表述了chrome插件各组件之间的关系。 +![img-devtools-extension][img-devtools-extension] +一个复杂插件的运行时,包含了很多组成部分,对图中的几个部分简单介绍: + +1. Inspected Window,当前所打开的chrome窗口,也可以理解为当前所在的web页面 + + a. web scripts,即web页面原本的脚本,运行在一个独立的sandbox内 + b. content scripts,通过插件插入的脚本,运行在独立的sanbox内 + +2. Background Page,插件后台程序,顾名思义,是不可见的,运行在浏览器的后台,起着通信控制的作用 +3. DevTools Page,调试工具栏,即我们常见的netwrok等 + +当然,还有其他的比如popup page,暂不讨论。 + +# 组件间通信 + +这几个组件的脚本都有运行在自己的sandbox内,那他们之间是如何进行消息通信和数据传输的呢,根据官方的说明整理,大致可以归纳为下面这张流程图 +![img-message][img-message] + +1. web scripts 和 content scripts之间,通过postMessage进行通信 + + ```javascript + // in web scrips + window.addEventListener('message', function(e){ + if(e.data.from == 'content'){ + console.log(e.data.text) + } + }); + window.postMessage({from:'web', text:'hello, content scrips.'}, '*'); + + // in content scripts + window.addEventListener('message', function(e){ + if(e.data.from == 'web'){ + console.log(e.data.text) + } + }); + window.postMessage({from:'content', text:'hello, web scrips.'}, '*'); + ``` +2. content scrips 和 Background Page之间,通过chrome.runtime.onMessage进行通信,还可以通过chrome.tab由Background Page到content scrips + + ```javascript + // in content scripts + chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { + console.log(request); + }); + chrome.runtime.sendMessage('hello, background page, i am from content script.'); + + // in background page + chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { + console.log(request); + }); + chrome.runtime.sendMessage('hello, content script, i am from background page.'); + + // 还可以通过chrome.tab从Background Page到content scripts传递消息 + + // in content scripts + chrome.extension.onMessage.addListener(function(request){ + console.log(request); + }); + + // in background page + chrome.tabs.query({active: true}, function(tab){ + chrome.tabs.sendMessage(tab[0].id, 'hello, content script, from background page.'); + }); + ``` +3. Background Page 和 Devtools Page之间,通过chrome.runtime.onConnect进行通信 + + ```javascript + // in background page + + // listen devtools page connect create + chrome.runtime.onConnect.addListener(function (port) { + + var extensionListener = function (message, sender, sendResponse) { + console.log(message); + }; + + // listen devtools page send message + port.onMessage.addListener(extensionListener); + + // remove listner when conect close + port.onDisconnect.addListener(function(port) { + port.onMessage.removeListener(extensionListener); + }); + + // send a message to devtools page + port.postMessage('hello, devtools page, i am from background page.'); + }); + + // in devtools page + + // create a connect + var backgroundPageConnection = chrome.runtime.connect({ + name: "devtools-page" + }); + + // listen message from background + backgroundPageConnection.onMessage.addListener(function (message) { + console.log(message); + }); + + // send a message to background page + backgroundPageConnection.postMessage('hello, background page, i am from devtolls page.'); + ``` +4. Devtools Page 和 content scripts只能通过Devtools Page主动去调用content scripts的方法进行通信 + + ```javascript + // in content scripts + function selectAll(text){ + console.log('select all called. ' + text); + } + + // in devtools page + chrome.devtools.inspectedWindow.eval( + "selectAll('i am from devtools page.')", + function(result, isException){ + + } + ); + ``` + +组件间的通信大致就是这样。完整demo参考[chrome extension message demo][demo] + +[img-devtools-extension]: /assets/images/chrome/devtools-extension.png +[img-message]: /assets/images/chrome/message.png +[demo]: https://github.com/websiteflash/websiteflash.github.com/tree/master/public/demo/chrome-extension-message-demo diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..8e5e1d9 --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,204 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; +} + + + +/** + * Basic styling + */ +body { + font-family: $base-font-family; + font-size: $base-font-size; + line-height: $base-line-height; + font-weight: 300; + color: $text-color; + background-color: $background-color; + -webkit-text-size-adjust: 100%; +} + + + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +%vertical-rhythm { + margin-bottom: $spacing-unit / 2; +} + + + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; +} + + + +/** + * Figures + */ +figure > img { + display: block; +} + +figcaption { + font-size: $small-font-size; +} + + + +/** + * Lists + */ +ul, ol { + margin-left: $spacing-unit; +} + +li { + > ul, + > ol { + margin-bottom: 0; + } +} + + + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: 300; +} + + + +/** + * Links + */ +a { + color: $brand-color; + text-decoration: none; + + &:visited { + color: darken($brand-color, 15%); + } + + &:hover { + color: $text-color; + text-decoration: underline; + } +} + + + +/** + * Blockquotes + */ +blockquote { + color: $grey-color; + border-left: 4px solid $grey-color-light; + padding-left: $spacing-unit / 2; + font-size: 18px; + letter-spacing: -1px; + /*font-style: italic;*/ + + > :last-child { + margin-bottom: 0; + } +} + + + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid $grey-color-light; + border-radius: 3px; + background-color: #eef; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: scroll; + + > code { + border: 0; + padding-right: 0; + padding-left: 0; + } +} + + + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); + max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); + margin-right: auto; + margin-left: auto; + padding-right: $spacing-unit; + padding-left: $spacing-unit; + @extend %clearfix; + + @include media-query($on-laptop) { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); + max-width: calc(#{$content-width} - (#{$spacing-unit})); + padding-right: $spacing-unit / 2; + padding-left: $spacing-unit / 2; + } +} + + + +/** + * Clearfix + */ +%clearfix { + + &:after { + content: ""; + display: table; + clear: both; + } +} + + + +/** + * Icons + */ +.icon { + + > svg { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + + path { + fill: $grey-color; + } + } +} diff --git a/_sass/_layout.scss b/_sass/_layout.scss new file mode 100644 index 0000000..def56f8 --- /dev/null +++ b/_sass/_layout.scss @@ -0,0 +1,236 @@ +/** + * Site header + */ +.site-header { + border-top: 5px solid $grey-color-dark; + border-bottom: 1px solid $grey-color-light; + min-height: 56px; + + // Positioning context for the mobile navigation icon + position: relative; +} + +.site-title { + font-size: 26px; + line-height: 56px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; + + &, + &:visited { + color: $grey-color-dark; + } +} + +.site-nav { + float: right; + line-height: 56px; + + .menu-icon { + display: none; + } + + .page-link { + color: $text-color; + line-height: $base-line-height; + + // Gaps between nav items, but not on the first one + &:not(:first-child) { + margin-left: 20px; + } + } + + @include media-query($on-palm) { + position: absolute; + top: 9px; + right: 30px; + background-color: $background-color; + border: 1px solid $grey-color-light; + border-radius: 5px; + text-align: right; + + .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + + > svg { + width: 18px; + height: 15px; + + path { + fill: $grey-color-dark; + } + } + } + + .trigger { + clear: both; + display: none; + } + + &:hover .trigger { + display: block; + padding-bottom: 5px; + } + + .page-link { + display: block; + padding: 5px 10px; + } + } +} + + + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid $grey-color-light; + padding: $spacing-unit 0; +} + +.footer-heading { + font-size: 18px; + margin-bottom: $spacing-unit / 2; +} + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; +} + +.footer-col-wrapper { + font-size: 15px; + color: $grey-color; + margin-left: -$spacing-unit / 2; + @extend %clearfix; +} + +.footer-col { + float: left; + margin-bottom: $spacing-unit / 2; + padding-left: $spacing-unit / 2; +} + +.footer-col-1 { + width: -webkit-calc(35% - (#{$spacing-unit} / 2)); + width: calc(35% - (#{$spacing-unit} / 2)); +} + +.footer-col-2 { + width: -webkit-calc(20% - (#{$spacing-unit} / 2)); + width: calc(20% - (#{$spacing-unit} / 2)); +} + +.footer-col-3 { + width: -webkit-calc(45% - (#{$spacing-unit} / 2)); + width: calc(45% - (#{$spacing-unit} / 2)); +} + +@include media-query($on-laptop) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (#{$spacing-unit} / 2)); + width: calc(50% - (#{$spacing-unit} / 2)); + } + + .footer-col-3 { + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + +@include media-query($on-palm) { + .footer-col { + float: none; + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + + + +/** + * Page content + */ +.page-content { + padding: $spacing-unit 0; +} + +.page-heading { + font-size: 20px; +} + +.post-list { + margin-left: 0; + list-style: none; + + > li { + margin-bottom: $spacing-unit; + } +} + +.post-meta { + font-size: $small-font-size; + color: $grey-color; +} + +.post-link { + display: block; + font-size: 24px; +} + + + +/** + * Posts + */ +.post-header { + margin-bottom: $spacing-unit; +} + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; + + @include media-query($on-laptop) { + font-size: 36px; + } +} + +.post-content { + margin-bottom: $spacing-unit; + + h2 { + font-size: 32px; + + @include media-query($on-laptop) { + font-size: 28px; + } + } + + h3 { + font-size: 26px; + + @include media-query($on-laptop) { + font-size: 22px; + } + } + + h4 { + font-size: 20px; + + @include media-query($on-laptop) { + font-size: 18px; + } + } +} diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss new file mode 100644 index 0000000..e36627d --- /dev/null +++ b/_sass/_syntax-highlighting.scss @@ -0,0 +1,67 @@ +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; + @extend %vertical-rhythm; + + .c { color: #998; font-style: italic } // Comment + .err { color: #a61717; background-color: #e3d2d2 } // Error + .k { font-weight: bold } // Keyword + .o { font-weight: bold } // Operator + .cm { color: #998; font-style: italic } // Comment.Multiline + .cp { color: #999; font-weight: bold } // Comment.Preproc + .c1 { color: #998; font-style: italic } // Comment.Single + .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: #000; background-color: #fdd } // Generic.Deleted + .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific + .ge { font-style: italic } // Generic.Emph + .gr { color: #a00 } // Generic.Error + .gh { color: #999 } // Generic.Heading + .gi { color: #000; background-color: #dfd } // Generic.Inserted + .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific + .go { color: #888 } // Generic.Output + .gp { color: #555 } // Generic.Prompt + .gs { font-weight: bold } // Generic.Strong + .gu { color: #aaa } // Generic.Subheading + .gt { color: #a00 } // Generic.Traceback + .kc { font-weight: bold } // Keyword.Constant + .kd { font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #458; font-weight: bold } // Keyword.Type + .m { color: #099 } // Literal.Number + .s { color: #d14 } // Literal.String + .na { color: #008080 } // Name.Attribute + .nb { color: #0086B3 } // Name.Builtin + .nc { color: #458; font-weight: bold } // Name.Class + .no { color: #008080 } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #900; font-weight: bold } // Name.Exception + .nf { color: #900; font-weight: bold } // Name.Function + .nn { color: #555 } // Name.Namespace + .nt { color: #000080 } // Name.Tag + .nv { color: #008080 } // Name.Variable + .ow { font-weight: bold } // Operator.Word + .w { color: #bbb } // Text.Whitespace + .mf { color: #099 } // Literal.Number.Float + .mh { color: #099 } // Literal.Number.Hex + .mi { color: #099 } // Literal.Number.Integer + .mo { color: #099 } // Literal.Number.Oct + .sb { color: #d14 } // Literal.String.Backtick + .sc { color: #d14 } // Literal.String.Char + .sd { color: #d14 } // Literal.String.Doc + .s2 { color: #d14 } // Literal.String.Double + .se { color: #d14 } // Literal.String.Escape + .sh { color: #d14 } // Literal.String.Heredoc + .si { color: #d14 } // Literal.String.Interpol + .sx { color: #d14 } // Literal.String.Other + .sr { color: #009926 } // Literal.String.Regex + .s1 { color: #d14 } // Literal.String.Single + .ss { color: #990073 } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #008080 } // Name.Variable.Class + .vg { color: #008080 } // Name.Variable.Global + .vi { color: #008080 } // Name.Variable.Instance + .il { color: #099 } // Literal.Number.Integer.Long +} diff --git a/about/about.md b/about/about.md new file mode 100644 index 0000000..a36e7da --- /dev/null +++ b/about/about.md @@ -0,0 +1,7 @@ +--- +layout: page +title: 我 +permalink: /about/ +--- + +还没想好写什么。。。。。 \ No newline at end of file diff --git a/about/index.md b/about/index.md new file mode 100644 index 0000000..7871b1e --- /dev/null +++ b/about/index.md @@ -0,0 +1,6 @@ +--- +layout: page +title: About +--- + +Nothing yet :( diff --git a/assets/.DS_Store b/assets/.DS_Store new file mode 100644 index 0000000..50c27e7 Binary files /dev/null and b/assets/.DS_Store differ diff --git a/assets/images/chrome/devtools-extension.png b/assets/images/chrome/devtools-extension.png new file mode 100644 index 0000000..af8fd41 Binary files /dev/null and b/assets/images/chrome/devtools-extension.png differ diff --git a/assets/images/chrome/message.png b/assets/images/chrome/message.png new file mode 100644 index 0000000..777b6ef Binary files /dev/null and b/assets/images/chrome/message.png differ diff --git a/assets/images/compass/install-compass-local.jpg b/assets/images/compass/install-compass-local.jpg new file mode 100644 index 0000000..044fee0 Binary files /dev/null and b/assets/images/compass/install-compass-local.jpg differ diff --git a/assets/images/compass/install-ruby-gems.jpg b/assets/images/compass/install-ruby-gems.jpg new file mode 100644 index 0000000..f7a57d5 Binary files /dev/null and b/assets/images/compass/install-ruby-gems.jpg differ diff --git a/assets/images/compass/install-ruby-success.jpg b/assets/images/compass/install-ruby-success.jpg new file mode 100644 index 0000000..16d1637 Binary files /dev/null and b/assets/images/compass/install-ruby-success.jpg differ diff --git a/assets/images/compass/install-ruby.jpg b/assets/images/compass/install-ruby.jpg new file mode 100644 index 0000000..afb70d4 Binary files /dev/null and b/assets/images/compass/install-ruby.jpg differ diff --git a/assets/images/git/local.png b/assets/images/git/local.png new file mode 100644 index 0000000..752d3d9 Binary files /dev/null and b/assets/images/git/local.png differ diff --git a/assets/images/shadowsocks/client.png b/assets/images/shadowsocks/client.png new file mode 100644 index 0000000..f026898 Binary files /dev/null and b/assets/images/shadowsocks/client.png differ diff --git a/blog/201408/learn-how-to-use-git-basic.html b/blog/201408/learn-how-to-use-git-basic.html deleted file mode 100644 index e69de29..0000000 diff --git a/blog/201408/learn-how-to-use-git-basic.md b/blog/201408/learn-how-to-use-git-basic.md deleted file mode 100644 index cb828f3..0000000 --- a/blog/201408/learn-how-to-use-git-basic.md +++ /dev/null @@ -1,3 +0,0 @@ -```[learn notes] how to use git basic``` - - diff --git a/data/.DS_Store b/data/.DS_Store new file mode 100644 index 0000000..354bc5c Binary files /dev/null and b/data/.DS_Store differ diff --git a/data/camera_para.dat b/data/camera_para.dat new file mode 100644 index 0000000..67102ed Binary files /dev/null and b/data/camera_para.dat differ diff --git a/data/data/camera_para.dat b/data/data/camera_para.dat new file mode 100644 index 0000000..67102ed Binary files /dev/null and b/data/data/camera_para.dat differ diff --git a/data/data/multi-marker-hirokanji.dat b/data/data/multi-marker-hirokanji.dat new file mode 100644 index 0000000..63055c9 --- /dev/null +++ b/data/data/multi-marker-hirokanji.dat @@ -0,0 +1,16 @@ +#the number of patterns to be recognized +2 + +#marker 1 +patt.hiro +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.kanji +1.0 +1.0000 0.0000 0.0000 2.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/data/data/patt.hiro b/data/data/patt.hiro new file mode 100644 index 0000000..7f78e3c --- /dev/null +++ b/data/data/patt.hiro @@ -0,0 +1,196 @@ + 234 235 240 233 240 234 240 235 240 237 240 238 240 240 240 232 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 228 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 239 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 231 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 149 240 240 186 216 225 174 240 240 240 237 238 240 240 240 + 150 107 238 231 75 208 115 147 238 228 223 226 237 180 226 240 + 150 62 181 213 62 187 113 169 197 72 29 237 120 50 53 207 + 149 63 47 78 53 184 113 101 142 5 150 150 45 217 186 83 + 121 84 220 222 58 180 121 92 128 109 237 124 155 232 161 64 + 149 71 240 240 76 210 98 109 122 108 240 129 51 119 161 155 + 149 186 240 240 98 219 135 152 207 191 236 227 152 77 175 209 + 235 235 240 233 240 234 240 235 240 236 240 238 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 156 240 240 186 216 225 186 240 240 240 240 240 240 240 240 + 150 117 240 231 72 206 115 162 240 232 223 237 240 180 226 240 + 150 74 187 213 51 184 103 168 197 78 29 237 120 50 53 216 + 144 77 51 74 61 184 106 101 142 5 150 152 52 217 186 85 + 117 89 219 219 65 184 121 92 128 100 236 125 156 240 170 73 + 148 71 240 240 76 210 109 109 121 99 240 137 51 120 166 164 + 140 186 240 240 98 220 150 156 207 192 236 230 152 77 176 212 + 234 235 240 233 240 234 240 235 240 236 240 238 240 240 240 233 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 239 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 235 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 228 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 156 240 240 182 212 225 180 240 240 240 240 240 240 240 240 + 150 116 238 228 66 205 115 151 238 236 225 240 240 180 226 240 + 156 84 186 211 47 184 109 170 200 92 30 240 120 50 53 216 + 147 83 51 73 50 184 106 110 148 17 151 150 45 217 186 85 + 127 98 219 219 58 179 109 101 128 107 237 125 155 240 163 72 + 155 86 240 240 76 201 85 108 121 95 232 137 51 118 153 155 + 149 189 240 240 98 220 141 154 206 178 235 230 152 77 175 209 + + 232 228 239 240 240 240 240 240 240 240 240 207 83 64 155 209 + 240 240 240 240 240 240 240 240 240 240 226 53 186 161 161 175 + 240 240 240 240 240 240 240 240 240 240 180 50 217 232 119 77 + 240 240 240 240 240 240 240 240 240 238 237 120 45 155 51 152 + 238 240 240 240 240 240 240 240 240 237 226 237 150 124 129 227 + 240 240 240 240 240 240 240 240 240 240 223 29 150 237 240 236 + 237 240 240 240 240 240 240 240 240 240 228 72 5 109 108 191 + 240 240 240 240 240 240 240 240 240 240 238 197 142 128 122 207 + 235 240 240 240 240 240 240 240 240 174 147 169 101 92 109 152 + 240 240 240 240 240 240 240 240 240 225 115 113 113 121 98 135 + 234 240 240 240 240 240 240 240 240 216 208 187 184 180 210 219 + 240 240 240 240 240 240 240 240 240 186 75 62 53 58 76 98 + 233 240 240 240 240 240 240 240 240 240 231 213 78 222 240 240 + 240 240 240 240 240 240 240 240 240 240 238 181 47 220 240 240 + 235 240 240 240 240 240 240 240 240 149 107 62 63 84 71 186 + 234 229 227 240 236 234 236 231 229 225 150 150 149 121 149 149 + 240 240 240 240 240 240 240 240 240 240 240 216 85 73 164 212 + 240 240 240 240 240 240 240 240 240 240 226 53 186 170 166 176 + 240 240 240 240 240 240 240 240 240 240 180 50 217 240 120 77 + 240 240 240 240 240 240 240 240 240 240 240 120 52 156 51 152 + 238 240 240 240 240 240 240 240 240 240 237 237 152 125 137 230 + 240 240 240 240 240 240 240 240 240 240 223 29 150 236 240 236 + 236 240 240 240 240 240 240 240 240 240 232 78 5 100 99 192 + 240 240 240 240 240 240 240 240 240 240 240 197 142 128 121 207 + 235 240 240 240 240 240 240 240 240 186 162 168 101 92 109 156 + 240 240 240 240 240 240 240 240 240 225 115 103 106 121 109 150 + 234 240 240 240 240 240 240 240 240 216 206 184 184 184 210 220 + 240 240 240 240 240 240 240 240 240 186 72 51 61 65 76 98 + 233 240 240 240 240 240 240 240 240 240 231 213 74 219 240 240 + 240 240 240 240 240 240 240 240 240 240 240 187 51 219 240 240 + 235 240 240 240 240 240 240 240 240 156 117 74 77 89 71 186 + 235 229 227 240 236 234 236 232 229 225 150 150 144 117 148 140 + 233 239 240 240 240 240 240 240 240 240 240 216 85 72 155 209 + 240 240 240 240 240 240 240 240 240 240 226 53 186 163 153 175 + 240 240 240 240 240 240 240 240 240 240 180 50 217 240 118 77 + 240 240 240 240 240 240 240 240 240 240 240 120 45 155 51 152 + 238 240 240 240 240 240 240 240 240 240 240 240 150 125 137 230 + 240 240 240 240 240 240 240 240 240 240 225 30 151 237 232 235 + 236 240 240 240 240 240 240 240 240 240 236 92 17 107 95 178 + 240 240 240 240 240 240 240 240 240 240 238 200 148 128 121 206 + 235 240 240 240 240 240 240 240 240 180 151 170 110 101 108 154 + 240 240 240 240 240 240 240 240 240 225 115 109 106 109 85 141 + 234 240 240 240 240 240 240 240 240 212 205 184 184 179 201 220 + 240 240 240 240 240 240 240 240 240 182 66 47 50 58 76 98 + 233 240 240 240 240 240 240 240 240 240 228 211 73 219 240 240 + 240 240 240 240 240 240 240 240 240 240 238 186 51 219 240 240 + 235 240 240 240 240 240 240 240 240 156 116 84 83 98 86 189 + 234 229 227 240 234 232 235 232 228 225 150 156 147 127 155 149 + + 209 175 77 152 227 236 191 207 152 135 219 98 240 240 186 149 + 155 161 119 51 129 240 108 122 109 98 210 76 240 240 71 149 + 64 161 232 155 124 237 109 128 92 121 180 58 222 220 84 121 + 83 186 217 45 150 150 5 142 101 113 184 53 78 47 63 149 + 207 53 50 120 237 29 72 197 169 113 187 62 213 181 62 150 + 240 226 180 237 226 223 228 238 147 115 208 75 231 238 107 150 + 240 240 240 238 237 240 240 240 174 225 216 186 240 240 149 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 231 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 239 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 228 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 232 240 240 240 238 240 237 240 235 240 234 240 233 240 235 234 + 212 176 77 152 230 236 192 207 156 150 220 98 240 240 186 140 + 164 166 120 51 137 240 99 121 109 109 210 76 240 240 71 148 + 73 170 240 156 125 236 100 128 92 121 184 65 219 219 89 117 + 85 186 217 52 152 150 5 142 101 106 184 61 74 51 77 144 + 216 53 50 120 237 29 78 197 168 103 184 51 213 187 74 150 + 240 226 180 240 237 223 232 240 162 115 206 72 231 240 117 150 + 240 240 240 240 240 240 240 240 186 225 216 186 240 240 156 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 238 240 236 240 235 240 234 240 233 240 235 235 + 209 175 77 152 230 235 178 206 154 141 220 98 240 240 189 149 + 155 153 118 51 137 232 95 121 108 85 201 76 240 240 86 155 + 72 163 240 155 125 237 107 128 101 109 179 58 219 219 98 127 + 85 186 217 45 150 151 17 148 110 106 184 50 73 51 83 147 + 216 53 50 120 240 30 92 200 170 109 184 47 211 186 84 156 + 240 226 180 240 240 225 236 238 151 115 205 66 228 238 116 150 + 240 240 240 240 240 240 240 240 180 225 212 182 240 240 156 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 228 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 235 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 239 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 233 240 240 240 238 240 236 240 235 240 234 240 233 240 235 234 + + 149 149 121 149 150 150 225 229 231 236 234 236 240 227 229 234 + 186 71 84 63 62 107 149 240 240 240 240 240 240 240 240 235 + 240 240 220 47 181 238 240 240 240 240 240 240 240 240 240 240 + 240 240 222 78 213 231 240 240 240 240 240 240 240 240 240 233 + 98 76 58 53 62 75 186 240 240 240 240 240 240 240 240 240 + 219 210 180 184 187 208 216 240 240 240 240 240 240 240 240 234 + 135 98 121 113 113 115 225 240 240 240 240 240 240 240 240 240 + 152 109 92 101 169 147 174 240 240 240 240 240 240 240 240 235 + 207 122 128 142 197 238 240 240 240 240 240 240 240 240 240 240 + 191 108 109 5 72 228 240 240 240 240 240 240 240 240 240 237 + 236 240 237 150 29 223 240 240 240 240 240 240 240 240 240 240 + 227 129 124 150 237 226 237 240 240 240 240 240 240 240 240 238 + 152 51 155 45 120 237 238 240 240 240 240 240 240 240 240 240 + 77 119 232 217 50 180 240 240 240 240 240 240 240 240 240 240 + 175 161 161 186 53 226 240 240 240 240 240 240 240 240 240 240 + 209 155 64 83 207 240 240 240 240 240 240 240 240 239 228 232 + 140 148 117 144 150 150 225 229 232 236 234 236 240 227 229 235 + 186 71 89 77 74 117 156 240 240 240 240 240 240 240 240 235 + 240 240 219 51 187 240 240 240 240 240 240 240 240 240 240 240 + 240 240 219 74 213 231 240 240 240 240 240 240 240 240 240 233 + 98 76 65 61 51 72 186 240 240 240 240 240 240 240 240 240 + 220 210 184 184 184 206 216 240 240 240 240 240 240 240 240 234 + 150 109 121 106 103 115 225 240 240 240 240 240 240 240 240 240 + 156 109 92 101 168 162 186 240 240 240 240 240 240 240 240 235 + 207 121 128 142 197 240 240 240 240 240 240 240 240 240 240 240 + 192 99 100 5 78 232 240 240 240 240 240 240 240 240 240 236 + 236 240 236 150 29 223 240 240 240 240 240 240 240 240 240 240 + 230 137 125 152 237 237 240 240 240 240 240 240 240 240 240 238 + 152 51 156 52 120 240 240 240 240 240 240 240 240 240 240 240 + 77 120 240 217 50 180 240 240 240 240 240 240 240 240 240 240 + 176 166 170 186 53 226 240 240 240 240 240 240 240 240 240 240 + 212 164 73 85 216 240 240 240 240 240 240 240 240 240 240 240 + 149 155 127 147 156 150 225 228 232 235 232 234 240 227 229 234 + 189 86 98 83 84 116 156 240 240 240 240 240 240 240 240 235 + 240 240 219 51 186 238 240 240 240 240 240 240 240 240 240 240 + 240 240 219 73 211 228 240 240 240 240 240 240 240 240 240 233 + 98 76 58 50 47 66 182 240 240 240 240 240 240 240 240 240 + 220 201 179 184 184 205 212 240 240 240 240 240 240 240 240 234 + 141 85 109 106 109 115 225 240 240 240 240 240 240 240 240 240 + 154 108 101 110 170 151 180 240 240 240 240 240 240 240 240 235 + 206 121 128 148 200 238 240 240 240 240 240 240 240 240 240 240 + 178 95 107 17 92 236 240 240 240 240 240 240 240 240 240 236 + 235 232 237 151 30 225 240 240 240 240 240 240 240 240 240 240 + 230 137 125 150 240 240 240 240 240 240 240 240 240 240 240 238 + 152 51 155 45 120 240 240 240 240 240 240 240 240 240 240 240 + 77 118 240 217 50 180 240 240 240 240 240 240 240 240 240 240 + 175 153 163 186 53 226 240 240 240 240 240 240 240 240 240 240 + 209 155 72 85 216 240 240 240 240 240 240 240 240 240 239 233 + diff --git a/data/data/patt.kanji b/data/data/patt.kanji new file mode 100644 index 0000000..87d32bb --- /dev/null +++ b/data/data/patt.kanji @@ -0,0 +1,196 @@ + 214 225 240 225 214 240 216 204 214 227 181 192 198 192 181 192 + 240 240 240 240 240 240 225 232 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 75 128 220 240 240 240 240 240 240 240 + 240 240 240 240 240 240 106 53 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 31 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 74 49 207 240 240 240 240 240 240 240 + 240 240 240 240 240 240 53 54 177 240 240 240 240 240 240 240 + 240 240 240 240 240 240 64 31 130 240 240 240 240 240 240 219 + 240 240 240 240 240 180 37 57 78 228 240 240 240 240 240 240 + 240 240 240 240 240 118 62 157 36 185 240 240 240 240 240 231 + 240 240 240 240 240 82 65 225 67 80 230 240 240 240 240 217 + 240 240 240 225 53 76 225 240 156 62 158 240 240 240 240 226 + 240 240 199 61 9 111 235 240 240 104 58 174 228 240 240 240 + 240 142 64 26 92 227 240 240 240 229 93 64 170 226 238 216 + 90 26 12 156 240 240 240 240 240 240 204 95 30 117 192 200 + 156 16 195 233 235 240 236 240 238 239 240 186 93 53 120 237 + 214 226 240 225 212 240 216 204 212 226 181 192 198 192 185 194 + 240 240 240 240 240 240 227 232 240 240 240 240 240 240 240 238 + 240 240 240 240 240 240 95 138 225 240 240 240 240 240 240 240 + 240 240 240 240 240 240 108 59 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 31 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 83 47 207 240 240 240 240 240 240 240 + 240 240 240 240 240 240 56 49 177 240 240 240 240 240 240 240 + 240 240 240 240 240 240 73 41 130 240 240 240 240 240 240 222 + 240 240 240 240 240 185 46 49 86 230 240 240 240 240 240 240 + 240 240 240 240 240 118 58 165 45 192 240 240 240 240 240 234 + 240 240 240 240 240 91 63 222 74 82 240 240 240 240 240 222 + 240 240 240 226 66 86 225 240 158 63 162 240 240 240 240 228 + 240 240 202 76 11 103 235 240 234 91 49 174 228 240 240 240 + 240 142 68 16 91 226 240 240 240 228 96 74 178 233 239 222 + 90 26 4 150 240 240 240 240 240 240 213 109 46 133 204 213 + 156 14 195 234 236 240 237 240 239 240 240 192 106 57 125 238 + 214 226 240 225 212 240 216 204 214 227 181 192 198 192 184 192 + 240 240 240 240 240 240 226 232 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 85 134 220 240 240 240 240 240 240 240 + 240 240 240 240 240 240 107 58 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 32 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 87 60 210 240 240 240 240 240 240 240 + 240 240 240 240 240 240 58 58 178 240 240 240 240 240 240 240 + 240 240 240 240 240 240 73 31 130 240 240 240 240 240 240 219 + 240 240 240 240 240 185 46 59 86 228 240 240 240 240 240 240 + 240 240 240 240 240 118 62 168 41 186 240 240 240 240 240 231 + 240 240 240 240 240 90 65 225 60 92 235 240 240 240 240 219 + 240 240 240 225 53 82 225 240 146 63 163 240 240 240 240 228 + 240 240 198 61 5 103 235 240 234 102 58 175 232 240 240 240 + 240 134 54 13 91 226 240 240 240 229 96 68 188 238 239 222 + 90 15 3 150 240 240 240 240 240 240 213 105 48 134 204 213 + 156 14 195 233 236 240 237 240 239 239 240 192 106 57 125 238 + + 192 236 240 237 234 240 240 219 240 231 217 226 240 216 200 237 + 181 240 240 240 240 240 240 240 240 240 240 240 240 238 192 120 + 192 240 240 240 240 240 240 240 240 240 240 240 240 226 117 53 + 198 240 240 240 240 240 240 240 240 240 240 240 228 170 30 93 + 192 240 240 240 240 240 240 240 240 240 240 240 174 64 95 186 + 181 240 240 240 240 240 240 240 240 240 230 158 58 93 204 240 + 227 240 240 240 240 240 240 240 228 185 80 62 104 229 240 239 + 214 240 220 240 240 207 177 130 78 36 67 156 240 240 240 238 + 204 232 128 53 31 49 54 31 57 157 225 240 240 240 240 240 + 216 225 75 106 118 74 53 64 37 62 65 225 235 240 240 236 + 240 240 240 240 238 240 240 240 180 118 82 76 111 227 240 240 + 214 240 240 240 240 240 240 240 240 240 240 53 9 92 240 235 + 225 240 240 240 240 240 240 240 240 240 240 225 61 26 156 233 + 240 240 240 240 240 240 240 240 240 240 240 240 199 64 12 195 + 225 240 240 240 240 240 240 240 240 240 240 240 240 142 26 16 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + 194 238 240 237 234 240 240 222 240 234 222 228 240 222 213 238 + 185 240 240 240 240 240 240 240 240 240 240 240 240 239 204 125 + 192 240 240 240 240 240 240 240 240 240 240 240 240 233 133 57 + 198 240 240 240 240 240 240 240 240 240 240 240 228 178 46 106 + 192 240 240 240 240 240 240 240 240 240 240 240 174 74 109 192 + 181 240 240 240 240 240 240 240 240 240 240 162 49 96 213 240 + 226 240 240 240 240 240 240 240 230 192 82 63 91 228 240 240 + 212 240 225 240 240 207 177 130 86 45 74 158 234 240 240 239 + 204 232 138 59 31 47 49 41 49 165 222 240 240 240 240 240 + 216 227 95 108 118 83 56 73 46 58 63 225 235 240 240 237 + 240 240 240 240 238 240 240 240 185 118 91 86 103 226 240 240 + 212 240 240 240 240 240 240 240 240 240 240 66 11 91 240 236 + 225 240 240 240 240 240 240 240 240 240 240 226 76 16 150 234 + 240 240 240 240 240 240 240 240 240 240 240 240 202 68 4 195 + 226 240 240 240 240 240 240 240 240 240 240 240 240 142 26 14 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + 192 236 240 237 234 240 240 219 240 231 219 228 240 222 213 238 + 184 240 240 240 240 240 240 240 240 240 240 240 240 239 204 125 + 192 240 240 240 240 240 240 240 240 240 240 240 240 238 134 57 + 198 240 240 240 240 240 240 240 240 240 240 240 232 188 48 106 + 192 240 240 240 240 240 240 240 240 240 240 240 175 68 105 192 + 181 240 240 240 240 240 240 240 240 240 235 163 58 96 213 240 + 227 240 240 240 240 240 240 240 228 186 92 63 102 229 240 239 + 214 240 220 240 240 210 178 130 86 41 60 146 234 240 240 239 + 204 232 134 58 32 60 58 31 59 168 225 240 240 240 240 240 + 216 226 85 107 118 87 58 73 46 62 65 225 235 240 240 237 + 240 240 240 240 238 240 240 240 185 118 90 82 103 226 240 240 + 212 240 240 240 240 240 240 240 240 240 240 53 5 91 240 236 + 225 240 240 240 240 240 240 240 240 240 240 225 61 13 150 233 + 240 240 240 240 240 240 240 240 240 240 240 240 198 54 3 195 + 226 240 240 240 240 240 240 240 240 240 240 240 240 134 15 14 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + + 237 120 53 93 186 240 239 238 240 236 240 235 233 195 16 156 + 200 192 117 30 95 204 240 240 240 240 240 240 156 12 26 90 + 216 238 226 170 64 93 229 240 240 240 227 92 26 64 142 240 + 240 240 240 228 174 58 104 240 240 235 111 9 61 199 240 240 + 226 240 240 240 240 158 62 156 240 225 76 53 225 240 240 240 + 217 240 240 240 240 230 80 67 225 65 82 240 240 240 240 240 + 231 240 240 240 240 240 185 36 157 62 118 240 240 240 240 240 + 240 240 240 240 240 240 228 78 57 37 180 240 240 240 240 240 + 219 240 240 240 240 240 240 130 31 64 240 240 240 240 240 240 + 240 240 240 240 240 240 240 177 54 53 240 240 240 240 240 240 + 240 240 240 240 240 240 240 207 49 74 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 31 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 53 106 240 240 240 240 240 240 + 240 240 240 240 240 240 240 220 128 75 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 232 225 240 240 240 240 240 240 + 192 181 192 198 192 181 227 214 204 216 240 214 225 240 225 214 + 238 125 57 106 192 240 240 239 240 237 240 236 234 195 14 156 + 213 204 133 46 109 213 240 240 240 240 240 240 150 4 26 90 + 222 239 233 178 74 96 228 240 240 240 226 91 16 68 142 240 + 240 240 240 228 174 49 91 234 240 235 103 11 76 202 240 240 + 228 240 240 240 240 162 63 158 240 225 86 66 226 240 240 240 + 222 240 240 240 240 240 82 74 222 63 91 240 240 240 240 240 + 234 240 240 240 240 240 192 45 165 58 118 240 240 240 240 240 + 240 240 240 240 240 240 230 86 49 46 185 240 240 240 240 240 + 222 240 240 240 240 240 240 130 41 73 240 240 240 240 240 240 + 240 240 240 240 240 240 240 177 49 56 240 240 240 240 240 240 + 240 240 240 240 240 240 240 207 47 83 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 31 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 59 108 240 240 240 240 240 240 + 240 240 240 240 240 240 240 225 138 95 240 240 240 240 240 240 + 238 240 240 240 240 240 240 240 232 227 240 240 240 240 240 240 + 194 185 192 198 192 181 226 212 204 216 240 212 225 240 226 214 + 238 125 57 106 192 240 239 239 240 237 240 236 233 195 14 156 + 213 204 134 48 105 213 240 240 240 240 240 240 150 3 15 90 + 222 239 238 188 68 96 229 240 240 240 226 91 13 54 134 240 + 240 240 240 232 175 58 102 234 240 235 103 5 61 198 240 240 + 228 240 240 240 240 163 63 146 240 225 82 53 225 240 240 240 + 219 240 240 240 240 235 92 60 225 65 90 240 240 240 240 240 + 231 240 240 240 240 240 186 41 168 62 118 240 240 240 240 240 + 240 240 240 240 240 240 228 86 59 46 185 240 240 240 240 240 + 219 240 240 240 240 240 240 130 31 73 240 240 240 240 240 240 + 240 240 240 240 240 240 240 178 58 58 240 240 240 240 240 240 + 240 240 240 240 240 240 240 210 60 87 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 32 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 58 107 240 240 240 240 240 240 + 240 240 240 240 240 240 240 220 134 85 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 232 226 240 240 240 240 240 240 + 192 184 192 198 192 181 227 214 204 216 240 212 225 240 226 214 + + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 16 26 142 240 240 240 240 240 240 240 240 240 240 240 240 225 + 195 12 64 199 240 240 240 240 240 240 240 240 240 240 240 240 + 233 156 26 61 225 240 240 240 240 240 240 240 240 240 240 225 + 235 240 92 9 53 240 240 240 240 240 240 240 240 240 240 214 + 240 240 227 111 76 82 118 180 240 240 240 238 240 240 240 240 + 236 240 240 235 225 65 62 37 64 53 74 118 106 75 225 216 + 240 240 240 240 240 225 157 57 31 54 49 31 53 128 232 204 + 238 240 240 240 156 67 36 78 130 177 207 240 240 220 240 214 + 239 240 229 104 62 80 185 228 240 240 240 240 240 240 240 227 + 240 204 93 58 158 230 240 240 240 240 240 240 240 240 240 181 + 186 95 64 174 240 240 240 240 240 240 240 240 240 240 240 192 + 93 30 170 228 240 240 240 240 240 240 240 240 240 240 240 198 + 53 117 226 240 240 240 240 240 240 240 240 240 240 240 240 192 + 120 192 238 240 240 240 240 240 240 240 240 240 240 240 240 181 + 237 200 216 240 226 217 231 240 219 240 240 234 237 240 236 192 + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 14 26 142 240 240 240 240 240 240 240 240 240 240 240 240 226 + 195 4 68 202 240 240 240 240 240 240 240 240 240 240 240 240 + 234 150 16 76 226 240 240 240 240 240 240 240 240 240 240 225 + 236 240 91 11 66 240 240 240 240 240 240 240 240 240 240 212 + 240 240 226 103 86 91 118 185 240 240 240 238 240 240 240 240 + 237 240 240 235 225 63 58 46 73 56 83 118 108 95 227 216 + 240 240 240 240 240 222 165 49 41 49 47 31 59 138 232 204 + 239 240 240 234 158 74 45 86 130 177 207 240 240 225 240 212 + 240 240 228 91 63 82 192 230 240 240 240 240 240 240 240 226 + 240 213 96 49 162 240 240 240 240 240 240 240 240 240 240 181 + 192 109 74 174 240 240 240 240 240 240 240 240 240 240 240 192 + 106 46 178 228 240 240 240 240 240 240 240 240 240 240 240 198 + 57 133 233 240 240 240 240 240 240 240 240 240 240 240 240 192 + 125 204 239 240 240 240 240 240 240 240 240 240 240 240 240 185 + 238 213 222 240 228 222 234 240 222 240 240 234 237 240 238 194 + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 14 15 134 240 240 240 240 240 240 240 240 240 240 240 240 226 + 195 3 54 198 240 240 240 240 240 240 240 240 240 240 240 240 + 233 150 13 61 225 240 240 240 240 240 240 240 240 240 240 225 + 236 240 91 5 53 240 240 240 240 240 240 240 240 240 240 212 + 240 240 226 103 82 90 118 185 240 240 240 238 240 240 240 240 + 237 240 240 235 225 65 62 46 73 58 87 118 107 85 226 216 + 240 240 240 240 240 225 168 59 31 58 60 32 58 134 232 204 + 239 240 240 234 146 60 41 86 130 178 210 240 240 220 240 214 + 239 240 229 102 63 92 186 228 240 240 240 240 240 240 240 227 + 240 213 96 58 163 235 240 240 240 240 240 240 240 240 240 181 + 192 105 68 175 240 240 240 240 240 240 240 240 240 240 240 192 + 106 48 188 232 240 240 240 240 240 240 240 240 240 240 240 198 + 57 134 238 240 240 240 240 240 240 240 240 240 240 240 240 192 + 125 204 239 240 240 240 240 240 240 240 240 240 240 240 240 184 + 238 213 222 240 228 219 231 240 219 240 240 234 237 240 236 192 + diff --git a/data/dataNFT/kouzhao.fset b/data/dataNFT/kouzhao.fset new file mode 100644 index 0000000..ddd4f63 Binary files /dev/null and b/data/dataNFT/kouzhao.fset differ diff --git a/data/dataNFT/kouzhao.fset3 b/data/dataNFT/kouzhao.fset3 new file mode 100644 index 0000000..63c9b37 Binary files /dev/null and b/data/dataNFT/kouzhao.fset3 differ diff --git a/data/dataNFT/kouzhao.iset b/data/dataNFT/kouzhao.iset new file mode 100644 index 0000000..09d1705 Binary files /dev/null and b/data/dataNFT/kouzhao.iset differ diff --git a/data/dataNFT/nft.fset b/data/dataNFT/nft.fset new file mode 100644 index 0000000..107b05e Binary files /dev/null and b/data/dataNFT/nft.fset differ diff --git a/data/dataNFT/nft.fset3 b/data/dataNFT/nft.fset3 new file mode 100644 index 0000000..259d4fe Binary files /dev/null and b/data/dataNFT/nft.fset3 differ diff --git a/data/dataNFT/nft.iset b/data/dataNFT/nft.iset new file mode 100644 index 0000000..d6432e2 Binary files /dev/null and b/data/dataNFT/nft.iset differ diff --git a/data/dataNFT/pinball.fset b/data/dataNFT/pinball.fset new file mode 100644 index 0000000..586f7bf Binary files /dev/null and b/data/dataNFT/pinball.fset differ diff --git a/data/dataNFT/pinball.fset3 b/data/dataNFT/pinball.fset3 new file mode 100644 index 0000000..0291b4a Binary files /dev/null and b/data/dataNFT/pinball.fset3 differ diff --git a/data/dataNFT/pinball.iset b/data/dataNFT/pinball.iset new file mode 100644 index 0000000..5d22898 Binary files /dev/null and b/data/dataNFT/pinball.iset differ diff --git a/data/images/25P1geh.png b/data/images/25P1geh.png new file mode 100644 index 0000000..f05ae84 Binary files /dev/null and b/data/images/25P1geh.png differ diff --git a/data/images/HIRO.jpg b/data/images/HIRO.jpg new file mode 100644 index 0000000..7239676 Binary files /dev/null and b/data/images/HIRO.jpg differ diff --git a/data/images/armchair.jpg b/data/images/armchair.jpg new file mode 100644 index 0000000..862f5f4 Binary files /dev/null and b/data/images/armchair.jpg differ diff --git a/data/images/box.png b/data/images/box.png new file mode 100644 index 0000000..0031ff9 --- /dev/null +++ b/data/images/box.png @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + webvr-experiments/box.png at master · jeromeetienne/webvr-experiments · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + + + +
+ +
+ +
+
+ + + +
+
+
+ + + + + +
+
+ + + +Permalink + + + +
+ +
+ + + +
+ +
+ + Find file + + +
+ +
+ + + +
+ + + 55218bc + + May 7, 2016 + + + +
+ + +
+ + +
+ +
+
+
+ + + + +
+ +
+ +
+ 6.6 KB +
+
+ + + +
+
+ box.png +
+
+ +
+ + + + +
+ +
+ + + + +
+
+ +
+ + + + + + + +
+ + + You can't perform that action at this time. +
+ + + + + + + + + +
+ + You signed in with another tab or window. Reload to refresh your session. + You signed out in another tab or window. Reload to refresh your session. +
+ + + + + + diff --git a/data/images/chalk.jpg b/data/images/chalk.jpg new file mode 100644 index 0000000..82d7fe0 Binary files /dev/null and b/data/images/chalk.jpg differ diff --git a/data/images/chalk_multi.jpg b/data/images/chalk_multi.jpg new file mode 100644 index 0000000..4b2d55a Binary files /dev/null and b/data/images/chalk_multi.jpg differ diff --git a/data/images/hiro.png b/data/images/hiro.png new file mode 100644 index 0000000..48bbff6 Binary files /dev/null and b/data/images/hiro.png differ diff --git a/data/images/img.jpg b/data/images/img.jpg new file mode 100644 index 0000000..5c020ef Binary files /dev/null and b/data/images/img.jpg differ diff --git a/data/images/kuva.jpg b/data/images/kuva.jpg new file mode 100644 index 0000000..0711462 Binary files /dev/null and b/data/images/kuva.jpg differ diff --git a/data/images/marker_cube_hamming63.jpg b/data/images/marker_cube_hamming63.jpg new file mode 100644 index 0000000..73c347a Binary files /dev/null and b/data/images/marker_cube_hamming63.jpg differ diff --git a/data/images/multi-pattern-template-abcdgf.png b/data/images/multi-pattern-template-abcdgf.png new file mode 100644 index 0000000..7c0d379 Binary files /dev/null and b/data/images/multi-pattern-template-abcdgf.png differ diff --git a/data/images/multimarker.jpg b/data/images/multimarker.jpg new file mode 100644 index 0000000..7c83478 Binary files /dev/null and b/data/images/multimarker.jpg differ diff --git a/data/images/pinball.jpg b/data/images/pinball.jpg new file mode 100644 index 0000000..d1444ad Binary files /dev/null and b/data/images/pinball.jpg differ diff --git a/data/images/qrcode-in-marker.png b/data/images/qrcode-in-marker.png new file mode 100644 index 0000000..479865c Binary files /dev/null and b/data/images/qrcode-in-marker.png differ diff --git a/data/images/trex.gif b/data/images/trex.gif new file mode 100644 index 0000000..9c75031 Binary files /dev/null and b/data/images/trex.gif differ diff --git a/data/logo/README.md b/data/logo/README.md new file mode 100644 index 0000000..95162c0 --- /dev/null +++ b/data/logo/README.md @@ -0,0 +1,2 @@ +Original logo by @tentone or on twitter [@tentone](https://twitter.com/tentonej) +Released under [MIT license](https://github.com/jeromeetienne/AR.js/issues/4#issuecomment-281746031) diff --git a/data/logo/logo-black-transparent-1280x512.png b/data/logo/logo-black-transparent-1280x512.png new file mode 100644 index 0000000..920849c Binary files /dev/null and b/data/logo/logo-black-transparent-1280x512.png differ diff --git a/data/marker-generator/.npmignore b/data/marker-generator/.npmignore new file mode 100644 index 0000000..2641667 --- /dev/null +++ b/data/marker-generator/.npmignore @@ -0,0 +1 @@ +*.mp4 diff --git a/data/marker-generator/MGO2.swf b/data/marker-generator/MGO2.swf new file mode 100644 index 0000000..315289a Binary files /dev/null and b/data/marker-generator/MGO2.swf differ diff --git a/data/marker-generator/README.md b/data/marker-generator/README.md new file mode 100644 index 0000000..568b131 --- /dev/null +++ b/data/marker-generator/README.md @@ -0,0 +1,5 @@ +from http://flash.tarotaro.org/blog/2009/07/12/mgo2/ + +by https://twitter.com/tarotarorg + +Use on firefox, as chrome seems to be flacky diff --git a/data/multimarkers/multi-abcdef/marker-small.dat b/data/multimarkers/multi-abcdef/marker-small.dat new file mode 100644 index 0000000..110bdd1 --- /dev/null +++ b/data/multimarkers/multi-abcdef/marker-small.dat @@ -0,0 +1,44 @@ +#the number of patterns to be recognized +6 + +#marker 1 +patt.a +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.b +1.0 +1.0000 0.0000 0.0000 2.5000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 3 +patt.c +1.0 +1.0000 0.0000 0.0000 5.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 4 +patt.d +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 + +#marker 5 +patt.g +1.0 +1.0000 0.0000 0.0000 2.5000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 + +#marker 6 +patt.f +1.0 +1.0000 0.0000 0.0000 5.0000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 diff --git a/data/multimarkers/multi-abcdef/marker.dat b/data/multimarkers/multi-abcdef/marker.dat new file mode 100644 index 0000000..f700794 --- /dev/null +++ b/data/multimarkers/multi-abcdef/marker.dat @@ -0,0 +1,44 @@ +#the number of patterns to be recognized +6 + +#marker 1 +patt.a +40.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.b +40.0 +1.0000 0.0000 0.0000 100.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 3 +patt.c +40.0 +1.0000 0.0000 0.0000 200.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 4 +patt.d +40.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 5 +patt.g +40.0 +1.0000 0.0000 0.0000 100.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 6 +patt.f +40.0 +1.0000 0.0000 0.0000 200.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/data/multimarkers/multi-abcdef/patt.a b/data/multimarkers/multi-abcdef/patt.a new file mode 100644 index 0000000..bbbec0c --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.a @@ -0,0 +1,196 @@ + 201 211 215 214 217 221 222 219 198 223 223 225 226 226 225 225 + 193 219 223 222 223 220 223 216 96 216 225 225 227 227 228 224 + 193 217 220 221 222 221 223 164 63 190 224 223 226 223 224 224 + 174 214 219 217 220 217 211 107 80 129 218 219 221 223 222 219 + 180 215 217 217 218 219 181 75 78 79 190 216 220 221 221 220 + 183 213 211 217 216 214 92 82 78 76 142 212 217 218 218 216 + 195 214 216 216 217 190 108 137 78 74 90 196 215 217 217 214 + 197 213 214 215 213 130 165 188 75 71 69 137 211 212 212 211 + 192 209 212 212 180 86 204 208 120 74 71 93 205 209 210 207 + 193 207 210 208 123 139 211 207 166 71 71 72 180 205 207 202 + 168 203 206 199 72 113 128 117 113 78 69 72 107 206 206 203 + 152 204 208 151 127 196 199 198 203 170 66 72 73 185 203 198 + 164 206 209 94 192 208 208 209 208 203 73 69 60 131 202 194 + 176 213 156 82 211 208 207 207 208 211 115 68 62 84 190 188 + 184 179 79 91 145 195 207 207 202 178 103 88 88 91 110 180 + 191 191 200 195 204 199 206 202 204 189 198 187 193 188 196 170 + 175 193 203 206 210 208 209 210 192 214 211 214 217 222 217 219 + 184 211 215 215 216 213 216 206 92 213 218 217 220 220 221 222 + 186 209 211 212 214 215 218 157 49 178 215 215 219 217 218 220 + 157 206 210 208 213 211 205 94 62 107 212 214 214 216 217 220 + 162 207 208 208 210 212 172 63 60 56 180 209 213 215 216 219 + 164 205 203 208 206 207 89 65 61 56 123 204 207 211 213 215 + 172 203 207 205 206 181 92 128 60 60 72 187 206 207 207 211 + 178 203 202 205 206 114 153 183 69 59 52 125 204 204 205 213 + 179 201 201 203 174 82 202 202 106 58 56 69 199 201 203 208 + 172 198 201 202 108 119 202 201 159 49 55 47 164 200 200 200 + 156 194 197 192 53 95 111 103 101 51 53 51 84 200 199 201 + 151 195 200 142 103 176 187 181 185 151 47 50 37 176 196 196 + 161 196 200 80 182 200 199 198 200 198 57 50 44 113 197 193 + 172 206 146 69 202 200 199 200 200 203 97 46 48 60 187 182 + 180 165 62 67 133 178 198 199 192 160 85 62 58 57 84 161 + 184 182 187 178 184 184 197 192 195 176 185 177 186 176 183 160 + 201 216 220 220 226 229 228 226 204 238 233 235 232 237 238 241 + 216 239 241 240 241 240 242 238 146 246 242 243 243 244 245 246 + 208 239 239 240 241 239 242 213 82 212 242 242 243 244 244 245 + 183 238 238 237 239 237 239 149 77 144 241 239 241 243 243 245 + 183 235 237 236 239 239 215 106 73 73 214 238 241 242 243 247 + 191 234 232 237 235 239 154 95 77 75 157 237 240 237 239 244 + 199 235 234 235 236 225 138 162 80 74 100 222 236 238 241 242 + 201 234 231 234 236 166 180 215 97 74 70 161 237 233 235 240 + 207 233 231 234 222 136 224 234 141 72 71 97 235 232 234 238 + 207 230 232 232 166 160 229 230 199 72 74 72 200 231 231 237 + 194 227 230 230 125 140 147 162 163 80 70 71 119 233 230 233 + 187 227 232 195 141 198 205 208 212 180 66 70 58 215 229 230 + 195 230 235 138 202 228 231 234 230 231 85 66 62 149 235 230 + 203 232 199 113 226 231 232 232 231 235 131 67 63 83 224 228 + 215 210 110 89 183 215 231 231 227 203 136 86 74 87 119 206 + 218 208 201 202 212 204 230 227 228 212 205 198 213 209 210 196 + + 225 224 224 219 220 216 214 211 207 202 203 198 194 188 180 170 + 225 228 224 222 221 218 217 212 210 207 206 203 202 190 110 196 + 226 227 223 223 221 218 217 212 209 205 206 185 131 84 91 188 + 226 227 226 221 220 217 215 211 205 180 107 73 60 62 88 193 + 225 225 223 219 216 212 196 137 93 72 72 72 69 68 88 187 + 223 225 224 218 190 142 90 69 71 71 69 66 73 115 103 198 + 223 216 190 129 79 76 74 71 74 71 78 170 203 211 178 189 + 198 96 63 80 78 78 78 75 120 166 113 203 208 208 202 204 + 219 216 164 107 75 82 137 188 208 207 117 198 209 207 207 202 + 222 223 223 211 181 92 108 165 204 211 128 199 208 207 207 206 + 221 220 221 217 219 214 190 130 86 139 113 196 208 208 195 199 + 217 223 222 220 218 216 217 213 180 123 72 127 192 211 145 204 + 214 222 221 217 217 217 216 215 212 208 199 151 94 82 91 195 + 215 223 220 219 217 211 216 214 212 210 206 208 209 156 79 200 + 211 219 217 214 215 213 214 213 209 207 203 204 206 213 179 191 + 201 193 193 174 180 183 195 197 192 193 168 152 164 176 184 191 + 219 222 220 220 219 215 211 213 208 200 201 196 193 182 161 160 + 217 221 218 217 216 213 207 205 203 200 199 196 197 187 84 183 + 222 220 217 216 215 211 207 204 201 200 200 176 113 60 57 176 + 217 220 219 214 213 207 206 204 199 164 84 37 44 48 58 186 + 214 217 215 214 209 204 187 125 69 47 51 50 50 46 62 177 + 211 218 215 212 180 123 72 52 56 55 53 47 57 97 85 185 + 214 213 178 107 56 56 60 59 58 49 51 151 198 203 160 176 + 192 92 49 62 60 61 60 69 106 159 101 185 200 200 192 195 + 210 206 157 94 63 65 128 183 202 201 103 181 198 200 199 192 + 209 216 218 205 172 89 92 153 202 202 111 187 199 199 198 197 + 208 213 215 211 212 207 181 114 82 119 95 176 200 200 178 184 + 210 216 214 213 210 206 206 206 174 108 53 103 182 202 133 184 + 206 215 212 208 208 208 205 205 203 202 192 142 80 69 67 178 + 203 215 211 210 208 203 207 202 201 201 197 200 200 146 62 187 + 193 211 209 206 207 205 203 203 201 198 194 195 196 206 165 182 + 175 184 186 157 162 164 172 178 179 172 156 151 161 172 180 184 + 241 246 245 245 247 244 242 240 238 237 233 230 230 228 206 196 + 238 245 244 243 243 239 241 235 234 231 230 229 235 224 119 210 + 237 244 244 243 242 237 238 233 232 231 233 215 149 83 87 209 + 232 243 243 241 241 240 236 237 235 200 119 58 62 63 74 213 + 235 243 242 239 238 237 222 161 97 72 71 70 66 67 86 198 + 233 242 242 241 214 157 100 70 71 74 70 66 85 131 136 205 + 238 246 212 144 73 75 74 74 72 72 80 180 231 235 203 212 + 204 146 82 77 73 77 80 97 141 199 163 212 230 231 227 228 + 226 238 213 149 106 95 162 215 234 230 162 208 234 232 231 227 + 228 242 242 239 215 154 138 180 224 229 147 205 231 232 231 230 + 229 240 239 237 239 239 225 166 136 160 140 198 228 231 215 204 + 226 241 241 239 239 235 236 236 222 166 125 141 202 226 183 212 + 220 240 240 237 236 237 235 234 234 232 230 195 138 113 89 202 + 220 241 239 238 237 232 234 231 231 232 230 232 235 199 110 201 + 216 239 239 238 235 234 235 234 233 230 227 227 230 232 210 208 + 201 216 208 183 183 191 199 201 207 207 194 187 195 203 215 218 + + 170 196 188 193 187 198 189 204 202 206 199 204 195 200 191 191 + 180 110 91 88 88 103 178 202 207 207 195 145 91 79 179 184 + 188 190 84 62 68 115 211 208 207 207 208 211 82 156 213 176 + 194 202 131 60 69 73 203 208 209 208 208 192 94 209 206 164 + 198 203 185 73 72 66 170 203 198 199 196 127 151 208 204 152 + 203 206 206 107 72 69 78 113 117 128 113 72 199 206 203 168 + 202 207 205 180 72 71 71 166 207 211 139 123 208 210 207 193 + 207 210 209 205 93 71 74 120 208 204 86 180 212 212 209 192 + 211 212 212 211 137 69 71 75 188 165 130 213 215 214 213 197 + 214 217 217 215 196 90 74 78 137 108 190 217 216 216 214 195 + 216 218 218 217 212 142 76 78 82 92 214 216 217 211 213 183 + 220 221 221 220 216 190 79 78 75 181 219 218 217 217 215 180 + 219 222 223 221 219 218 129 80 107 211 217 220 217 219 214 174 + 224 224 223 226 223 224 190 63 164 223 221 222 221 220 217 193 + 224 228 227 227 225 225 216 96 216 223 220 223 222 223 219 193 + 225 225 226 226 225 223 223 198 219 222 221 217 214 215 211 201 + 160 183 176 186 177 185 176 195 192 197 184 184 178 187 182 184 + 161 84 57 58 62 85 160 192 199 198 178 133 67 62 165 180 + 182 187 60 48 46 97 203 200 200 199 200 202 69 146 206 172 + 193 197 113 44 50 57 198 200 198 199 200 182 80 200 196 161 + 196 196 176 37 50 47 151 185 181 187 176 103 142 200 195 151 + 201 199 200 84 51 53 51 101 103 111 95 53 192 197 194 156 + 200 200 200 164 47 55 49 159 201 202 119 108 202 201 198 172 + 208 203 201 199 69 56 58 106 202 202 82 174 203 201 201 179 + 213 205 204 204 125 52 59 69 183 153 114 206 205 202 203 178 + 211 207 207 206 187 72 60 60 128 92 181 206 205 207 203 172 + 215 213 211 207 204 123 56 61 65 89 207 206 208 203 205 164 + 219 216 215 213 209 180 56 60 63 172 212 210 208 208 207 162 + 220 217 216 214 214 212 107 62 94 205 211 213 208 210 206 157 + 220 218 217 219 215 215 178 49 157 218 215 214 212 211 209 186 + 222 221 220 220 217 218 213 92 206 216 213 216 215 215 211 184 + 219 217 222 217 214 211 214 192 210 209 208 210 206 203 193 175 + 196 210 209 213 198 205 212 228 227 230 204 212 202 201 208 218 + 206 119 87 74 86 136 203 227 231 231 215 183 89 110 210 215 + 228 224 83 63 67 131 235 231 232 232 231 226 113 199 232 203 + 230 235 149 62 66 85 231 230 234 231 228 202 138 235 230 195 + 230 229 215 58 70 66 180 212 208 205 198 141 195 232 227 187 + 233 230 233 119 71 70 80 163 162 147 140 125 230 230 227 194 + 237 231 231 200 72 74 72 199 230 229 160 166 232 232 230 207 + 238 234 232 235 97 71 72 141 234 224 136 222 234 231 233 207 + 240 235 233 237 161 70 74 97 215 180 166 236 234 231 234 201 + 242 241 238 236 222 100 74 80 162 138 225 236 235 234 235 199 + 244 239 237 240 237 157 75 77 95 154 239 235 237 232 234 191 + 247 243 242 241 238 214 73 73 106 215 239 239 236 237 235 183 + 245 243 243 241 239 241 144 77 149 239 237 239 237 238 238 183 + 245 244 244 243 242 242 212 82 213 242 239 241 240 239 239 208 + 246 245 244 243 243 242 246 146 238 242 240 241 240 241 239 216 + 241 238 237 232 235 233 238 204 226 228 229 226 220 220 216 201 + + 191 184 176 164 152 168 193 192 197 195 183 180 174 193 193 201 + 191 179 213 206 204 203 207 209 213 214 213 215 214 217 219 211 + 200 79 156 209 208 206 210 212 214 216 211 217 219 220 223 215 + 195 91 82 94 151 199 208 212 215 216 217 217 217 221 222 214 + 204 145 211 192 127 72 123 180 213 217 216 218 220 222 223 217 + 199 195 208 208 196 113 139 86 130 190 214 219 217 221 220 221 + 206 207 207 208 199 128 211 204 165 108 92 181 211 223 223 222 + 202 207 207 209 198 117 207 208 188 137 82 75 107 164 216 219 + 204 202 208 208 203 113 166 120 75 78 78 78 80 63 96 198 + 189 178 211 203 170 78 71 74 71 74 76 79 129 190 216 223 + 198 103 115 73 66 69 71 71 69 90 142 190 218 224 225 223 + 187 88 68 69 72 72 72 93 137 196 212 216 219 223 225 225 + 193 88 62 60 73 107 180 205 211 215 217 220 221 226 227 226 + 188 91 84 131 185 206 205 209 212 217 218 221 223 223 227 226 + 196 110 190 202 203 206 207 210 212 217 218 221 222 224 228 225 + 170 180 188 194 198 203 202 207 211 214 216 220 219 224 224 225 + 184 180 172 161 151 156 172 179 178 172 164 162 157 186 184 175 + 182 165 206 196 195 194 198 201 203 203 205 207 206 209 211 193 + 187 62 146 200 200 197 201 201 202 207 203 208 210 211 215 203 + 178 67 69 80 142 192 202 203 205 205 208 208 208 212 215 206 + 184 133 202 182 103 53 108 174 206 206 206 210 213 214 216 210 + 184 178 200 200 176 95 119 82 114 181 207 212 211 215 213 208 + 197 198 199 199 187 111 202 202 153 92 89 172 205 218 216 209 + 192 199 200 198 181 103 201 202 183 128 65 63 94 157 206 210 + 195 192 200 200 185 101 159 106 69 60 61 60 62 49 92 192 + 176 160 203 198 151 51 49 58 59 60 56 56 107 178 213 214 + 185 85 97 57 47 53 55 56 52 72 123 180 212 215 218 211 + 177 62 46 50 50 51 47 69 125 187 204 209 214 215 217 214 + 186 58 48 44 37 84 164 199 204 206 207 213 214 219 220 217 + 176 57 60 113 176 200 200 201 204 207 211 215 216 217 220 222 + 183 84 187 197 196 199 200 203 205 207 213 216 217 218 221 217 + 160 161 182 193 196 201 200 208 213 211 215 219 220 220 222 219 + 218 215 203 195 187 194 207 207 201 199 191 183 183 208 216 201 + 208 210 232 230 227 227 230 233 234 235 234 235 238 239 239 216 + 201 110 199 235 232 230 232 231 231 234 232 237 238 239 241 220 + 202 89 113 138 195 230 232 234 234 235 237 236 237 240 240 220 + 212 183 226 202 141 125 166 222 236 236 235 239 239 241 241 226 + 204 215 231 228 198 140 160 136 166 225 239 239 237 239 240 229 + 230 231 232 231 205 147 229 224 180 138 154 215 239 242 242 228 + 227 231 232 234 208 162 230 234 215 162 95 106 149 213 238 226 + 228 227 231 230 212 163 199 141 97 80 77 73 77 82 146 204 + 212 203 235 231 180 80 72 72 74 74 75 73 144 212 246 238 + 205 136 131 85 66 70 74 71 70 100 157 214 241 242 242 233 + 198 86 67 66 70 71 72 97 161 222 237 238 239 242 243 235 + 213 74 63 62 58 119 200 235 237 236 240 241 241 243 243 232 + 209 87 83 149 215 233 231 232 233 238 237 242 243 244 244 237 + 210 119 224 235 229 230 231 234 235 241 239 243 243 244 245 238 + 196 206 228 230 230 233 237 238 240 242 244 247 245 245 246 241 + diff --git a/data/multimarkers/multi-abcdef/patt.b b/data/multimarkers/multi-abcdef/patt.b new file mode 100644 index 0000000..70f9466 --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.b @@ -0,0 +1,196 @@ + 130 137 144 139 153 148 139 141 141 144 142 149 148 135 131 120 + 159 157 131 144 145 143 153 147 135 143 152 160 169 169 167 144 + 159 154 122 83 23 35 32 83 81 30 22 49 114 166 165 142 + 160 162 161 154 33 44 44 149 165 137 45 29 35 117 166 146 + 153 163 162 150 28 40 38 145 163 163 101 35 34 65 159 145 + 156 162 162 144 34 39 32 149 161 168 122 39 40 47 153 141 + 159 156 162 150 43 35 35 147 164 161 77 36 30 87 168 130 + 160 160 163 149 24 32 37 142 147 82 22 39 85 157 166 135 + 145 160 163 158 23 43 47 57 56 41 40 93 145 166 167 139 + 138 160 162 155 32 41 35 161 175 146 67 28 30 95 166 133 + 152 162 160 131 37 34 33 158 165 170 129 39 42 26 141 139 + 159 159 161 144 24 32 38 149 165 165 157 32 38 32 110 147 + 155 161 161 147 20 36 40 154 162 160 139 21 41 40 114 137 + 157 162 159 154 30 35 33 153 163 157 83 26 27 43 154 126 + 156 161 154 116 21 24 18 81 112 62 11 18 55 140 165 128 + 142 144 87 109 103 106 113 100 87 96 118 144 159 158 165 128 + 123 136 141 138 149 145 138 144 144 144 141 149 145 139 141 129 + 158 159 142 144 140 136 143 145 138 147 155 162 169 170 171 150 + 152 157 126 92 26 24 16 64 77 36 25 52 119 165 168 143 + 146 159 163 153 23 27 28 137 167 142 49 27 30 115 168 137 + 142 161 161 155 23 29 29 142 166 166 102 24 24 55 159 146 + 153 161 162 149 26 24 19 145 160 166 109 26 27 43 156 141 + 153 155 156 140 35 27 20 140 162 167 79 26 19 69 165 132 + 154 159 160 148 19 25 24 132 141 94 24 27 81 157 166 139 + 146 160 162 155 16 30 21 49 48 32 27 84 140 161 165 141 + 143 159 162 153 20 30 25 148 167 135 62 19 20 84 160 139 + 152 160 161 138 28 24 21 152 163 169 123 28 29 14 131 140 + 154 157 161 145 15 21 26 143 162 164 152 28 28 16 95 144 + 149 154 158 149 11 22 24 146 160 162 145 18 26 23 104 140 + 142 156 159 151 16 21 16 155 165 161 94 20 17 31 147 122 + 149 160 152 114 13 17 9 81 96 69 12 15 50 137 162 126 + 143 144 105 103 89 95 101 102 88 94 113 143 155 155 160 126 + 152 174 185 180 191 187 178 177 180 186 181 191 187 177 178 169 + 197 209 192 183 182 182 190 187 176 185 190 201 213 218 217 196 + 190 207 177 138 69 62 51 105 125 82 72 90 155 209 217 196 + 177 207 208 200 59 48 54 168 210 187 88 50 58 159 210 196 + 176 208 210 200 52 49 50 176 213 215 152 58 48 95 198 196 + 181 206 209 198 67 44 40 183 210 212 170 56 46 72 191 189 + 182 205 205 187 74 47 44 183 209 212 132 58 48 112 201 179 + 188 206 207 196 57 45 46 171 184 132 56 55 110 197 214 189 + 184 206 207 202 62 51 50 98 104 79 55 117 175 203 211 188 + 184 204 207 195 63 48 49 186 210 181 100 48 50 127 205 189 + 195 207 211 187 73 45 50 189 211 210 168 64 53 41 172 190 + 198 205 208 196 57 40 51 177 211 208 199 66 48 43 135 187 + 189 203 205 195 46 37 45 173 205 208 193 50 45 44 141 178 + 179 203 204 189 49 41 32 180 205 205 142 48 38 57 185 167 + 179 202 195 143 39 38 29 106 136 106 46 47 86 174 207 172 + 169 182 146 135 121 129 137 131 120 122 139 176 195 195 201 174 + + 120 144 142 146 145 141 130 135 139 133 139 147 137 126 128 128 + 131 167 165 166 159 153 168 166 167 166 141 110 114 154 165 165 + 135 169 166 117 65 47 87 157 166 95 26 32 40 43 140 158 + 148 169 114 35 34 40 30 85 145 30 42 38 41 27 55 159 + 149 160 49 29 35 39 36 39 93 28 39 32 21 26 18 144 + 142 152 22 45 101 122 77 22 40 67 129 157 139 83 11 118 + 144 143 30 137 163 168 161 82 41 146 170 165 160 157 62 96 + 141 135 81 165 163 161 164 147 56 175 165 165 162 163 112 87 + 141 147 83 149 145 149 147 142 57 161 158 149 154 153 81 100 + 139 153 32 44 38 32 35 37 47 35 33 38 40 33 18 113 + 148 143 35 44 40 39 35 32 43 41 34 32 36 35 24 106 + 153 145 23 33 28 34 43 24 23 32 37 24 20 30 21 103 + 139 144 83 154 150 144 150 149 158 155 131 144 147 154 116 109 + 144 131 122 161 162 162 162 163 163 162 160 161 161 159 154 87 + 137 157 154 162 163 162 156 160 160 160 162 159 161 162 161 144 + 130 159 159 160 153 156 159 160 145 138 152 159 155 157 156 142 + 129 150 143 137 146 141 132 139 141 139 140 144 140 122 126 126 + 141 171 168 168 159 156 165 166 165 160 131 95 104 147 162 160 + 139 170 165 115 55 43 69 157 161 84 14 16 23 31 137 155 + 145 169 119 30 24 27 19 81 140 20 29 28 26 17 50 155 + 149 162 52 27 24 26 26 27 84 19 28 28 18 20 15 143 + 141 155 25 49 102 109 79 24 27 62 123 152 145 94 12 113 + 144 147 36 142 166 166 167 94 32 135 169 164 162 161 69 94 + 144 138 77 167 166 160 162 141 48 167 163 162 160 165 96 88 + 144 145 64 137 142 145 140 132 49 148 152 143 146 155 81 102 + 138 143 16 28 29 19 20 24 21 25 21 26 24 16 9 101 + 145 136 24 27 29 24 27 25 30 30 24 21 22 21 17 95 + 149 140 26 23 23 26 35 19 16 20 28 15 11 16 13 89 + 138 144 92 153 155 149 140 148 155 153 138 145 149 151 114 103 + 141 142 126 163 161 162 156 160 162 162 161 161 158 159 152 105 + 136 159 157 159 161 161 155 159 160 159 160 157 154 156 160 144 + 123 158 152 146 142 153 153 154 146 143 152 154 149 142 149 143 + 169 196 196 196 196 189 179 189 188 189 190 187 178 167 172 174 + 178 217 217 210 198 191 201 214 211 205 172 135 141 185 207 201 + 177 218 209 159 95 72 112 197 203 127 41 43 44 57 174 195 + 187 213 155 58 48 46 48 110 175 50 53 48 45 38 86 195 + 191 201 90 50 58 56 58 55 117 48 64 66 50 48 47 176 + 181 190 72 88 152 170 132 56 55 100 168 199 193 142 46 139 + 186 185 82 187 215 212 212 132 79 181 210 208 208 205 106 122 + 180 176 125 210 213 210 209 184 104 210 211 211 205 205 136 120 + 177 187 105 168 176 183 183 171 98 186 189 177 173 180 106 131 + 178 190 51 54 50 40 44 46 50 49 50 51 45 32 29 137 + 187 182 62 48 49 44 47 45 51 48 45 40 37 41 38 129 + 191 182 69 59 52 67 74 57 62 63 73 57 46 49 39 121 + 180 183 138 200 200 198 187 196 202 195 187 196 195 189 143 135 + 185 192 177 208 210 209 205 207 207 207 211 208 205 204 195 146 + 174 209 207 207 208 206 205 206 206 204 207 205 203 203 202 182 + 152 197 190 177 176 181 182 188 184 184 195 198 189 179 179 169 + + 128 165 158 159 144 118 96 87 100 113 106 103 109 87 144 142 + 128 165 140 55 18 11 62 112 81 18 24 21 116 154 161 156 + 126 154 43 27 26 83 157 163 153 33 35 30 154 159 162 157 + 137 114 40 41 21 139 160 162 154 40 36 20 147 161 161 155 + 147 110 32 38 32 157 165 165 149 38 32 24 144 161 159 159 + 139 141 26 42 39 129 170 165 158 33 34 37 131 160 162 152 + 133 166 95 30 28 67 146 175 161 35 41 32 155 162 160 138 + 139 167 166 145 93 40 41 56 57 47 43 23 158 163 160 145 + 135 166 157 85 39 22 82 147 142 37 32 24 149 163 160 160 + 130 168 87 30 36 77 161 164 147 35 35 43 150 162 156 159 + 141 153 47 40 39 122 168 161 149 32 39 34 144 162 162 156 + 145 159 65 34 35 101 163 163 145 38 40 28 150 162 163 153 + 146 166 117 35 29 45 137 165 149 44 44 33 154 161 162 160 + 142 165 166 114 49 22 30 81 83 32 35 23 83 122 154 159 + 144 167 169 169 160 152 143 135 147 153 143 145 144 131 157 159 + 120 131 135 148 149 142 144 141 141 139 148 153 139 144 137 130 + 126 160 155 155 143 113 94 88 102 101 95 89 103 105 144 143 + 126 162 137 50 15 12 69 96 81 9 17 13 114 152 160 149 + 122 147 31 17 20 94 161 165 155 16 21 16 151 159 156 142 + 140 104 23 26 18 145 162 160 146 24 22 11 149 158 154 149 + 144 95 16 28 28 152 164 162 143 26 21 15 145 161 157 154 + 140 131 14 29 28 123 169 163 152 21 24 28 138 161 160 152 + 139 160 84 20 19 62 135 167 148 25 30 20 153 162 159 143 + 141 165 161 140 84 27 32 48 49 21 30 16 155 162 160 146 + 139 166 157 81 27 24 94 141 132 24 25 19 148 160 159 154 + 132 165 69 19 26 79 167 162 140 20 27 35 140 156 155 153 + 141 156 43 27 26 109 166 160 145 19 24 26 149 162 161 153 + 146 159 55 24 24 102 166 166 142 29 29 23 155 161 161 142 + 137 168 115 30 27 49 142 167 137 28 27 23 153 163 159 146 + 143 168 165 119 52 25 36 77 64 16 24 26 92 126 157 152 + 150 171 170 169 162 155 147 138 145 143 136 140 144 142 159 158 + 129 141 139 145 149 141 144 144 144 138 145 149 138 141 136 123 + 174 201 195 195 176 139 122 120 131 137 129 121 135 146 182 169 + 172 207 174 86 47 46 106 136 106 29 38 39 143 195 202 179 + 167 185 57 38 48 142 205 205 180 32 41 49 189 204 203 179 + 178 141 44 45 50 193 208 205 173 45 37 46 195 205 203 189 + 187 135 43 48 66 199 208 211 177 51 40 57 196 208 205 198 + 190 172 41 53 64 168 210 211 189 50 45 73 187 211 207 195 + 189 205 127 50 48 100 181 210 186 49 48 63 195 207 204 184 + 188 211 203 175 117 55 79 104 98 50 51 62 202 207 206 184 + 189 214 197 110 55 56 132 184 171 46 45 57 196 207 206 188 + 179 201 112 48 58 132 212 209 183 44 47 74 187 205 205 182 + 189 191 72 46 56 170 212 210 183 40 44 67 198 209 206 181 + 196 198 95 48 58 152 215 213 176 50 49 52 200 210 208 176 + 196 210 159 58 50 88 187 210 168 54 48 59 200 208 207 177 + 196 217 209 155 90 72 82 125 105 51 62 69 138 177 207 190 + 196 217 218 213 201 190 185 176 187 190 182 182 183 192 209 197 + 169 178 177 187 191 181 186 180 177 178 187 191 180 185 174 152 + + 142 156 157 155 159 152 138 145 160 159 156 153 160 159 159 130 + 144 161 162 161 159 162 160 160 160 156 162 163 162 154 157 137 + 87 154 159 161 161 160 162 163 163 162 162 162 161 122 131 144 + 109 116 154 147 144 131 155 158 149 150 144 150 154 83 144 139 + 103 21 30 20 24 37 32 23 24 43 34 28 33 23 145 153 + 106 24 35 36 32 34 41 43 32 35 39 40 44 35 143 148 + 113 18 33 40 38 33 35 47 37 35 32 38 44 32 153 139 + 100 81 153 154 149 158 161 57 142 147 149 145 149 83 147 141 + 87 112 163 162 165 165 175 56 147 164 161 163 165 81 135 141 + 96 62 157 160 165 170 146 41 82 161 168 163 137 30 143 144 + 118 11 83 139 157 129 67 40 22 77 122 101 45 22 152 142 + 144 18 26 21 32 39 28 93 39 36 39 35 29 49 160 149 + 159 55 27 41 38 42 30 145 85 30 40 34 35 114 169 148 + 158 140 43 40 32 26 95 166 157 87 47 65 117 166 169 135 + 165 165 154 114 110 141 166 167 166 168 153 159 166 165 167 131 + 128 128 126 137 147 139 133 139 135 130 141 145 146 142 144 120 + 143 149 142 149 154 152 143 146 154 153 153 142 146 152 158 123 + 144 160 156 154 157 160 159 160 159 155 161 161 159 157 159 136 + 105 152 159 158 161 161 162 162 160 156 162 161 163 126 142 141 + 103 114 151 149 145 138 153 155 148 140 149 155 153 92 144 138 + 89 13 16 11 15 28 20 16 19 35 26 23 23 26 140 149 + 95 17 21 22 21 24 30 30 25 27 24 29 27 24 136 145 + 101 9 16 24 26 21 25 21 24 20 19 29 28 16 143 138 + 102 81 155 146 143 152 148 49 132 140 145 142 137 64 145 144 + 88 96 165 160 162 163 167 48 141 162 160 166 167 77 138 144 + 94 69 161 162 164 169 135 32 94 167 166 166 142 36 147 144 + 113 12 94 145 152 123 62 27 24 79 109 102 49 25 155 141 + 143 15 20 18 28 28 19 84 27 26 26 24 27 52 162 149 + 155 50 17 26 28 29 20 140 81 19 27 24 30 119 169 145 + 155 137 31 23 16 14 84 161 157 69 43 55 115 165 170 139 + 160 162 147 104 95 131 160 165 166 165 156 159 168 168 171 141 + 126 126 122 140 144 140 139 141 139 132 141 146 137 143 150 129 + 169 179 179 189 198 195 184 184 188 182 181 176 177 190 197 152 + 182 202 203 203 205 207 204 206 206 205 206 208 207 207 209 174 + 146 195 204 205 208 211 207 207 207 205 209 210 208 177 192 185 + 135 143 189 195 196 187 195 202 196 187 198 200 200 138 183 180 + 121 39 49 46 57 73 63 62 57 74 67 52 59 69 182 191 + 129 38 41 37 40 45 48 51 45 47 44 49 48 62 182 187 + 137 29 32 45 51 50 49 50 46 44 40 50 54 51 190 178 + 131 106 180 173 177 189 186 98 171 183 183 176 168 105 187 177 + 120 136 205 205 211 211 210 104 184 209 210 213 210 125 176 180 + 122 106 205 208 208 210 181 79 132 212 212 215 187 82 185 186 + 139 46 142 193 199 168 100 55 56 132 170 152 88 72 190 181 + 176 47 48 50 66 64 48 117 55 58 56 58 50 90 201 191 + 195 86 38 45 48 53 50 175 110 48 46 48 58 155 213 187 + 195 174 57 44 43 41 127 203 197 112 72 95 159 209 218 177 + 201 207 185 141 135 172 205 211 214 201 191 198 210 217 217 178 + 174 172 167 178 187 190 189 188 189 179 189 196 196 196 196 169 + diff --git a/data/multimarkers/multi-abcdef/patt.c b/data/multimarkers/multi-abcdef/patt.c new file mode 100644 index 0000000..7605a43 --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.c @@ -0,0 +1,196 @@ + 141 153 152 152 150 151 154 154 150 153 140 144 146 136 147 120 + 163 171 168 171 171 152 117 90 78 99 121 158 176 132 174 159 + 155 171 171 157 100 46 48 112 148 154 131 81 80 72 175 156 + 149 168 160 72 38 43 145 175 174 175 180 167 76 49 169 155 + 151 164 76 39 31 115 176 175 177 176 178 172 156 71 174 156 + 155 133 38 38 40 150 169 173 175 177 175 174 174 102 175 152 + 155 85 38 39 56 166 166 171 170 175 174 173 175 164 172 159 + 147 57 32 37 90 165 163 168 169 171 172 172 176 174 173 146 + 155 42 34 35 88 169 168 168 170 169 174 167 172 172 174 144 + 157 52 35 32 67 169 169 169 170 169 170 169 171 172 172 158 + 147 71 32 38 64 157 169 171 169 168 170 169 169 170 172 150 + 150 111 25 37 46 142 168 167 165 167 167 170 169 164 169 148 + 147 154 60 32 33 103 168 167 169 165 168 170 161 126 172 147 + 149 166 149 49 33 51 128 162 163 166 167 147 80 127 171 150 + 146 167 166 153 93 50 53 76 98 100 81 82 135 170 175 146 + 153 163 155 159 156 153 135 111 114 104 138 160 162 162 167 129 + 123 140 140 148 142 143 146 145 149 138 135 133 131 130 131 106 + 148 161 160 162 164 145 106 73 67 77 95 141 164 132 162 149 + 145 156 161 146 91 29 26 88 133 137 111 59 43 55 163 148 + 138 158 143 56 19 32 128 165 168 169 171 161 64 36 161 151 + 133 152 68 21 19 104 162 165 167 168 169 169 152 56 165 152 + 144 120 25 18 27 147 162 163 162 165 165 165 165 101 160 147 + 138 74 18 15 45 155 161 162 161 164 164 164 164 162 164 149 + 128 42 16 14 64 157 157 159 161 162 163 163 164 166 162 144 + 132 27 19 16 65 156 156 159 160 161 164 162 164 165 164 145 + 133 35 15 14 48 158 155 158 158 159 162 163 161 164 164 150 + 133 60 13 18 36 149 155 157 159 158 159 159 161 162 161 143 + 136 105 15 19 22 133 155 154 156 158 159 157 160 157 160 147 + 140 152 51 13 13 78 155 153 153 153 157 157 152 114 161 143 + 143 158 138 36 8 19 112 156 153 157 159 135 71 102 161 140 + 133 155 154 146 77 26 17 51 78 90 67 63 121 158 160 147 + 130 153 149 155 152 145 116 97 96 99 127 151 149 151 150 131 + 157 180 173 183 174 179 180 180 184 176 173 171 167 169 166 149 + 175 207 209 210 209 193 153 123 123 132 146 194 216 184 204 201 + 176 205 210 197 147 83 62 123 172 184 152 93 90 103 197 199 + 168 206 197 116 52 53 156 206 214 215 218 204 105 61 197 206 + 165 198 126 52 35 122 204 209 214 214 215 215 202 93 193 203 + 174 176 71 39 44 175 205 208 214 213 213 214 215 151 200 203 + 163 130 49 34 68 191 204 207 209 209 212 215 213 207 207 201 + 162 97 36 33 91 192 202 207 210 210 212 209 210 212 215 200 + 161 74 36 34 94 196 202 204 208 208 210 209 212 211 216 200 + 163 68 36 30 68 194 204 205 205 206 206 207 210 210 214 206 + 165 100 33 33 60 184 204 203 203 205 208 207 209 211 210 202 + 162 155 35 33 40 166 202 202 202 204 204 207 207 208 209 200 + 168 196 96 23 24 106 200 202 203 201 205 208 199 163 201 197 + 168 202 190 64 22 36 151 200 201 201 204 186 130 139 200 193 + 163 201 199 186 99 42 38 86 118 139 116 110 155 193 205 196 + 164 196 194 192 193 186 160 120 121 129 164 186 193 197 194 190 + + 120 159 156 155 156 152 159 146 144 158 150 148 147 150 146 129 + 147 174 175 169 174 175 172 173 174 172 172 169 172 171 175 167 + 136 132 72 49 71 102 164 174 172 172 170 164 126 127 170 162 + 146 176 80 76 156 174 175 176 172 171 169 169 161 80 135 162 + 144 158 81 167 172 174 173 172 167 169 169 170 170 147 82 160 + 140 121 131 180 178 175 174 172 174 170 170 167 168 167 81 138 + 153 99 154 175 176 177 175 171 169 169 168 167 165 166 100 104 + 150 78 148 174 177 175 170 169 170 170 169 165 169 163 98 114 + 154 90 112 175 175 173 171 168 168 169 171 167 167 162 76 111 + 154 117 48 145 176 169 166 163 168 169 169 168 168 128 53 135 + 151 152 46 43 115 150 166 165 169 169 157 142 103 51 50 153 + 150 171 100 38 31 40 56 90 88 67 64 46 33 33 93 156 + 152 171 157 72 39 38 39 37 35 32 38 37 32 49 153 159 + 152 168 171 160 76 38 38 32 34 35 32 25 60 149 166 155 + 153 171 171 168 164 133 85 57 42 52 71 111 154 166 167 163 + 141 163 155 149 151 155 155 147 155 157 147 150 147 149 146 153 + 106 149 148 151 152 147 149 144 145 150 143 147 143 140 147 131 + 131 162 163 161 165 160 164 162 164 164 161 160 161 161 160 150 + 130 132 55 36 56 101 162 166 165 164 162 157 114 102 158 151 + 131 164 43 64 152 165 164 164 164 161 161 160 152 71 121 149 + 133 141 59 161 169 165 164 163 162 163 159 157 157 135 63 151 + 135 95 111 171 169 165 164 163 164 162 159 159 157 159 67 127 + 138 77 137 169 168 165 164 162 161 159 158 158 153 157 90 99 + 149 67 133 168 167 162 161 161 160 158 159 156 153 153 78 96 + 145 73 88 165 165 163 162 159 159 158 157 154 153 156 51 97 + 146 106 26 128 162 162 161 157 156 155 155 155 155 112 17 116 + 143 145 29 32 104 147 155 157 156 158 149 133 78 19 26 145 + 142 164 91 19 19 27 45 64 65 48 36 22 13 8 77 152 + 148 162 146 56 21 18 15 14 16 14 18 19 13 36 146 155 + 140 160 161 143 68 25 18 16 19 15 13 15 51 138 154 149 + 140 161 156 158 152 120 74 42 27 35 60 105 152 158 155 153 + 123 148 145 138 133 144 138 128 132 133 133 136 140 143 133 130 + 149 201 199 206 203 203 201 200 200 206 202 200 197 193 196 190 + 166 204 197 197 193 200 207 215 216 214 210 209 201 200 205 194 + 169 184 103 61 93 151 207 212 211 210 211 208 163 139 193 197 + 167 216 90 105 202 215 213 210 212 210 209 207 199 130 155 193 + 171 194 93 204 215 214 215 209 209 207 207 207 208 186 110 186 + 173 146 152 218 215 213 212 212 210 206 208 204 205 204 116 164 + 176 132 184 215 214 213 209 210 208 206 205 204 201 201 139 129 + 184 123 172 214 214 214 209 210 208 205 203 202 203 201 118 121 + 180 123 123 206 209 208 207 207 204 205 203 202 202 200 86 120 + 180 153 62 156 204 205 204 202 202 204 204 202 200 151 38 160 + 179 193 83 53 122 175 191 192 196 194 184 166 106 36 42 186 + 174 209 147 52 35 44 68 91 94 68 60 40 24 22 99 193 + 183 210 197 116 52 39 34 33 34 30 33 33 23 64 186 192 + 173 209 210 197 126 71 49 36 36 36 33 35 96 190 199 194 + 180 207 205 206 198 176 130 97 74 68 100 155 196 202 201 196 + 157 175 176 168 165 174 163 162 161 163 165 162 168 168 163 164 + + 129 167 162 162 160 138 104 114 111 135 153 156 159 155 163 153 + 146 175 170 135 82 81 100 98 76 53 50 93 153 166 167 146 + 150 171 127 80 147 167 166 163 162 128 51 33 49 149 166 149 + 147 172 126 161 170 168 165 169 167 168 103 33 32 60 154 147 + 148 169 164 169 170 167 167 165 167 168 142 46 37 25 111 150 + 150 172 170 169 169 170 168 169 171 169 157 64 38 32 71 147 + 158 172 172 171 169 170 169 170 169 169 169 67 32 35 52 157 + 144 174 172 172 167 174 169 170 168 168 169 88 35 34 42 155 + 146 173 174 176 172 172 171 169 168 163 165 90 37 32 57 147 + 159 172 164 175 173 174 175 170 171 166 166 56 39 38 85 155 + 152 175 102 174 174 175 177 175 173 169 150 40 38 38 133 155 + 156 174 71 156 172 178 176 177 175 176 115 31 39 76 164 151 + 155 169 49 76 167 180 175 174 175 145 43 38 72 160 168 149 + 156 175 72 80 81 131 154 148 112 48 46 100 157 171 171 155 + 159 174 132 176 158 121 99 78 90 117 152 171 171 168 171 163 + 120 147 136 146 144 140 153 150 154 154 151 150 152 152 153 141 + 131 150 151 149 151 127 99 96 97 116 145 152 155 149 153 130 + 147 160 158 121 63 67 90 78 51 17 26 77 146 154 155 133 + 140 161 102 71 135 159 157 153 156 112 19 8 36 138 158 143 + 143 161 114 152 157 157 153 153 153 155 78 13 13 51 152 140 + 147 160 157 160 157 159 158 156 154 155 133 22 19 15 105 136 + 143 161 162 161 159 159 158 159 157 155 149 36 18 13 60 133 + 150 164 164 161 163 162 159 158 158 155 158 48 14 15 35 133 + 145 164 165 164 162 164 161 160 159 156 156 65 16 19 27 132 + 144 162 166 164 163 163 162 161 159 157 157 64 14 16 42 128 + 149 164 162 164 164 164 164 161 162 161 155 45 15 18 74 138 + 147 160 101 165 165 165 165 162 163 162 147 27 18 25 120 144 + 152 165 56 152 169 169 168 167 165 162 104 19 21 68 152 133 + 151 161 36 64 161 171 169 168 165 128 32 19 56 143 158 138 + 148 163 55 43 59 111 137 133 88 26 29 91 146 161 156 145 + 149 162 132 164 141 95 77 67 73 106 145 164 162 160 161 148 + 106 131 130 131 133 135 138 149 145 146 143 142 148 140 140 123 + 190 194 197 193 186 164 129 121 120 160 186 193 192 194 196 164 + 196 205 193 155 110 116 139 118 86 38 42 99 186 199 201 163 + 193 200 139 130 186 204 201 201 200 151 36 22 64 190 202 168 + 197 201 163 199 208 205 201 203 202 200 106 24 23 96 196 168 + 200 209 208 207 207 204 204 202 202 202 166 40 33 35 155 162 + 202 210 211 209 207 208 205 203 203 204 184 60 33 33 100 165 + 206 214 210 210 207 206 206 205 205 204 194 68 30 36 68 163 + 200 216 211 212 209 210 208 208 204 202 196 94 34 36 74 161 + 200 215 212 210 209 212 210 210 207 202 192 91 33 36 97 162 + 201 207 207 213 215 212 209 209 207 204 191 68 34 49 130 163 + 203 200 151 215 214 213 213 214 208 205 175 44 39 71 176 174 + 203 193 93 202 215 215 214 214 209 204 122 35 52 126 198 165 + 206 197 61 105 204 218 215 214 206 156 53 52 116 197 206 168 + 199 197 103 90 93 152 184 172 123 62 83 147 197 210 205 176 + 201 204 184 216 194 146 132 123 123 153 193 209 210 209 207 175 + 149 166 169 167 171 173 176 184 180 180 179 174 183 173 180 157 + + 153 146 149 147 150 147 157 155 147 155 155 151 149 155 163 141 + 163 167 166 154 111 71 52 42 57 85 133 164 168 171 171 153 + 155 166 149 60 25 32 35 34 32 38 38 76 160 171 168 152 + 159 153 49 32 37 38 32 35 37 39 38 39 72 157 171 152 + 156 93 33 33 46 64 67 88 90 56 40 31 38 100 171 150 + 153 50 51 103 142 157 169 169 165 166 150 115 43 46 152 151 + 135 53 128 168 168 169 169 168 163 166 169 176 145 48 117 154 + 111 76 162 167 167 171 169 168 168 171 173 175 175 112 90 154 + 114 98 163 169 165 169 170 170 169 170 175 177 174 148 78 150 + 104 100 166 165 167 168 169 169 171 175 177 176 175 154 99 153 + 138 81 167 168 167 170 170 174 172 174 175 178 180 131 121 140 + 160 82 147 170 170 169 169 167 172 173 174 172 167 81 158 144 + 162 135 80 161 169 169 171 172 176 175 174 156 76 80 176 146 + 162 170 127 126 164 170 172 172 174 164 102 71 49 72 132 136 + 167 175 171 172 169 172 172 174 173 172 175 174 169 175 174 147 + 129 146 150 147 148 150 158 144 146 159 152 156 155 156 159 120 + 130 133 143 140 136 133 133 132 128 138 144 133 138 145 148 123 + 153 155 158 152 105 60 35 27 42 74 120 152 158 156 161 140 + 149 154 138 51 15 13 15 19 16 18 25 68 143 161 160 140 + 155 146 36 13 19 18 14 16 14 15 18 21 56 146 162 148 + 152 77 8 13 22 36 48 65 64 45 27 19 19 91 164 142 + 145 26 19 78 133 149 158 156 157 155 147 104 32 29 145 143 + 116 17 112 155 155 155 155 156 157 161 162 162 128 26 106 146 + 97 51 156 153 154 157 158 159 159 162 163 165 165 88 73 145 + 96 78 153 153 156 159 158 160 161 161 162 167 168 133 67 149 + 99 90 157 153 158 158 159 161 162 164 165 168 169 137 77 138 + 127 67 159 157 159 159 162 164 163 164 165 169 171 111 95 135 + 151 63 135 157 157 159 163 162 163 164 165 169 161 59 141 133 + 149 121 71 152 160 161 161 164 164 164 165 152 64 43 164 131 + 151 158 102 114 157 162 164 165 166 162 101 56 36 55 132 130 + 150 160 161 161 160 161 164 164 162 164 160 165 161 163 162 131 + 131 147 140 143 147 143 150 145 144 149 147 152 151 148 149 106 + 164 163 168 168 162 165 163 161 162 163 174 165 168 176 175 157 + 196 201 202 196 155 100 68 74 97 130 176 198 206 205 207 180 + 194 199 190 96 35 33 36 36 36 49 71 126 197 210 209 173 + 192 186 64 23 33 33 30 34 33 34 39 52 116 197 210 183 + 193 99 22 24 40 60 68 94 91 68 44 35 52 147 209 174 + 186 42 36 106 166 184 194 196 192 191 175 122 53 83 193 179 + 160 38 151 200 202 204 204 202 202 204 205 204 156 62 153 180 + 120 86 200 202 202 203 205 204 207 207 208 209 206 123 123 180 + 121 118 201 203 202 203 205 208 210 209 214 214 214 172 123 184 + 129 139 201 201 204 205 206 208 210 209 213 214 215 184 132 176 + 164 116 204 205 204 208 206 210 212 212 213 215 218 152 146 173 + 186 110 186 208 207 207 207 209 209 215 214 215 204 93 194 171 + 193 155 130 199 207 209 210 212 210 213 215 202 105 90 216 167 + 197 193 139 163 208 211 210 211 212 207 151 93 61 103 184 169 + 194 205 200 201 209 210 214 216 215 207 200 193 197 197 204 166 + 190 196 193 197 200 202 206 200 200 201 203 203 206 199 201 149 + diff --git a/data/multimarkers/multi-abcdef/patt.d b/data/multimarkers/multi-abcdef/patt.d new file mode 100644 index 0000000..614c2c0 --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.d @@ -0,0 +1,196 @@ + 96 131 130 134 123 130 136 130 133 125 134 118 125 125 129 119 + 96 130 86 81 83 84 84 85 79 104 124 145 148 145 147 138 + 84 146 144 66 19 24 47 114 89 38 21 38 113 148 146 134 + 89 147 147 101 19 23 45 149 149 143 56 21 19 102 148 131 + 91 147 147 101 21 22 37 145 148 150 133 25 25 18 131 140 + 98 147 147 94 23 24 37 142 148 148 150 50 23 20 74 137 + 102 143 144 91 21 23 42 142 148 149 149 77 25 21 36 136 + 107 144 145 90 21 22 42 139 146 148 148 86 24 23 25 136 + 91 144 148 86 21 20 41 146 148 148 148 94 19 22 21 133 + 82 144 145 81 22 23 51 146 146 147 149 105 22 20 28 137 + 92 143 144 75 22 22 51 148 149 150 149 93 22 20 50 142 + 101 144 144 92 15 18 50 146 145 150 151 75 24 19 95 138 + 105 147 150 96 17 17 56 144 145 150 134 24 19 50 149 139 + 114 148 150 85 18 15 56 146 147 140 46 17 51 137 153 141 + 104 125 114 30 18 18 19 55 57 32 38 93 141 150 149 136 + 95 121 122 116 129 129 119 122 124 136 141 155 143 140 138 136 + 85 120 116 117 119 121 123 116 125 115 125 118 118 115 122 118 + 82 122 79 77 78 80 77 82 81 99 114 138 140 140 140 132 + 74 136 132 56 9 8 42 106 80 32 10 31 111 140 140 127 + 78 135 135 84 7 10 38 139 141 133 43 11 12 96 141 126 + 81 134 133 81 8 10 28 136 137 139 121 12 10 10 123 127 + 87 133 134 76 10 11 28 134 137 139 142 39 11 9 66 128 + 95 134 134 76 7 10 30 135 137 139 140 61 11 11 28 128 + 98 133 133 69 8 8 34 136 138 139 138 77 9 11 16 121 + 80 131 134 63 8 9 34 136 136 137 140 84 7 11 10 118 + 77 132 133 60 10 10 39 138 138 138 141 93 7 10 17 125 + 87 135 134 55 8 8 42 138 136 139 139 84 9 10 37 128 + 92 135 134 73 6 6 43 136 134 137 139 58 12 8 89 125 + 95 132 133 79 7 7 47 136 134 138 125 16 10 39 132 128 + 102 135 137 75 8 7 47 136 135 131 44 9 39 120 140 127 + 92 120 106 28 8 8 8 45 47 24 29 79 131 138 139 129 + 80 114 113 103 112 114 109 108 113 124 129 137 130 132 132 124 + 113 147 147 146 139 143 149 137 147 146 153 140 147 147 151 134 + 109 150 107 101 108 105 103 119 107 126 144 166 173 172 176 162 + 101 166 161 68 19 16 63 139 107 54 29 53 138 174 177 157 + 102 167 167 106 17 17 58 171 173 163 59 17 23 124 179 156 + 109 169 169 102 15 17 47 167 172 176 145 23 17 21 158 159 + 115 166 167 95 16 16 48 165 170 172 174 57 21 15 97 157 + 119 165 166 97 15 15 50 164 171 173 174 83 18 19 50 153 + 124 167 165 90 16 16 57 163 171 173 175 103 19 21 33 143 + 106 162 165 86 16 13 56 165 171 174 174 113 15 22 26 138 + 103 164 164 82 16 14 61 166 172 172 173 118 15 18 36 142 + 113 168 164 76 13 13 66 167 170 173 172 108 17 20 60 153 + 119 168 167 94 10 13 65 166 168 170 169 82 21 17 114 153 + 122 166 165 107 13 11 66 166 167 171 156 34 19 63 163 158 + 131 166 166 101 16 11 66 163 165 156 64 18 62 151 173 154 + 120 148 132 53 21 20 23 75 76 53 54 107 158 172 172 155 + 104 138 137 127 127 125 135 134 131 140 151 163 159 159 157 155 + + 119 138 134 131 140 137 136 136 133 137 142 138 139 141 136 136 + 129 147 146 148 131 74 36 25 21 28 50 95 149 153 149 138 + 125 145 148 102 18 20 21 23 22 20 20 19 50 137 150 140 + 125 148 113 19 25 23 25 24 19 22 22 24 19 51 141 143 + 118 145 38 21 25 50 77 86 94 105 93 75 24 17 93 155 + 134 124 21 56 133 150 149 148 148 149 149 151 134 46 38 141 + 125 104 38 143 150 148 149 148 148 147 150 150 150 140 32 136 + 133 79 89 149 148 148 148 146 148 146 149 145 145 147 57 124 + 130 85 114 149 145 142 142 139 146 146 148 146 144 146 55 122 + 136 84 47 45 37 37 42 42 41 51 51 50 56 56 19 119 + 130 84 24 23 22 24 23 22 20 23 22 18 17 15 18 129 + 123 83 19 19 21 23 21 21 21 22 22 15 17 18 18 129 + 134 81 66 101 101 94 91 90 86 81 75 92 96 85 30 116 + 130 86 144 147 147 147 144 145 148 145 144 144 150 150 114 122 + 131 130 146 147 147 147 143 144 144 144 143 144 147 148 125 121 + 96 96 84 89 91 98 102 107 91 82 92 101 105 114 104 95 + 118 132 127 126 127 128 128 121 118 125 128 125 128 127 129 124 + 122 140 140 141 123 66 28 16 10 17 37 89 132 140 139 132 + 115 140 140 96 10 9 11 11 11 10 10 8 39 120 138 132 + 118 140 111 12 10 11 11 9 7 7 9 12 10 39 131 130 + 118 138 31 11 12 39 61 77 84 93 84 58 16 9 79 137 + 125 114 10 43 121 142 140 138 140 141 139 139 125 44 29 129 + 115 99 32 133 139 139 139 139 137 138 139 137 138 131 24 124 + 125 81 80 141 137 137 137 138 136 138 136 134 134 135 47 113 + 116 82 106 139 136 134 135 136 136 138 138 136 136 136 45 108 + 123 77 42 38 28 28 30 34 34 39 42 43 47 47 8 109 + 121 80 8 10 10 11 10 8 9 10 8 6 7 7 8 114 + 119 78 9 7 8 10 7 8 8 10 8 6 7 8 8 112 + 117 77 56 84 81 76 76 69 63 60 55 73 79 75 28 103 + 116 79 132 135 133 134 134 133 134 133 134 134 133 137 106 113 + 120 122 136 135 134 133 134 133 131 132 135 135 132 135 120 114 + 85 82 74 78 81 87 95 98 80 77 87 92 95 102 92 80 + 134 162 157 156 159 157 153 143 138 142 153 153 158 154 155 155 + 151 176 177 179 158 97 50 33 26 36 60 114 163 173 172 157 + 147 172 174 124 21 15 19 21 22 18 20 17 63 151 172 159 + 147 173 138 23 17 21 18 19 15 15 17 21 19 62 158 159 + 140 166 53 17 23 57 83 103 113 118 108 82 34 18 107 163 + 153 144 29 59 145 174 174 175 174 173 172 169 156 64 54 151 + 146 126 54 163 176 172 173 173 174 172 173 170 171 156 53 140 + 147 107 107 173 172 170 171 171 171 172 170 168 167 165 76 131 + 137 119 139 171 167 165 164 163 165 166 167 166 166 163 75 134 + 149 103 63 58 47 48 50 57 56 61 66 65 66 66 23 135 + 143 105 16 17 17 16 15 16 13 14 13 13 11 11 20 125 + 139 108 19 17 15 16 15 16 16 16 13 10 13 16 21 127 + 146 101 68 106 102 95 97 90 86 82 76 94 107 101 53 127 + 147 107 161 167 169 167 166 165 165 164 164 167 165 166 132 137 + 147 150 166 167 169 166 165 167 162 164 168 168 166 166 148 138 + 113 109 101 102 109 115 119 124 106 103 113 119 122 131 120 104 + + 136 138 140 143 155 141 136 124 122 119 129 129 116 122 121 95 + 136 149 150 141 93 38 32 57 55 19 18 18 30 114 125 104 + 141 153 137 51 17 46 140 147 146 56 15 18 85 150 148 114 + 139 149 50 19 24 134 150 145 144 56 17 17 96 150 147 105 + 138 95 19 24 75 151 150 145 146 50 18 15 92 144 144 101 + 142 50 20 22 93 149 150 149 148 51 22 22 75 144 143 92 + 137 28 20 22 105 149 147 146 146 51 23 22 81 145 144 82 + 133 21 22 19 94 148 148 148 146 41 20 21 86 148 144 91 + 136 25 23 24 86 148 148 146 139 42 22 21 90 145 144 107 + 136 36 21 25 77 149 149 148 142 42 23 21 91 144 143 102 + 137 74 20 23 50 150 148 148 142 37 24 23 94 147 147 98 + 140 131 18 25 25 133 150 148 145 37 22 21 101 147 147 91 + 131 148 102 19 21 56 143 149 149 45 23 19 101 147 147 89 + 134 146 148 113 38 21 38 89 114 47 24 19 66 144 146 84 + 138 147 145 148 145 124 104 79 85 84 84 83 81 86 130 96 + 119 129 125 125 118 134 125 133 130 136 130 123 134 130 131 96 + 124 132 132 130 137 129 124 113 108 109 114 112 103 113 114 80 + 129 139 138 131 79 29 24 47 45 8 8 8 28 106 120 92 + 127 140 120 39 9 44 131 135 136 47 7 8 75 137 135 102 + 128 132 39 10 16 125 138 134 136 47 7 7 79 133 132 95 + 125 89 8 12 58 139 137 134 136 43 6 6 73 134 135 92 + 128 37 10 9 84 139 139 136 138 42 8 8 55 134 135 87 + 125 17 10 7 93 141 138 138 138 39 10 10 60 133 132 77 + 118 10 11 7 84 140 137 136 136 34 9 8 63 134 131 80 + 121 16 11 9 77 138 139 138 136 34 8 8 69 133 133 98 + 128 28 11 11 61 140 139 137 135 30 10 7 76 134 134 95 + 128 66 9 11 39 142 139 137 134 28 11 10 76 134 133 87 + 127 123 10 10 12 121 139 137 136 28 10 8 81 133 134 81 + 126 141 96 12 11 43 133 141 139 38 10 7 84 135 135 78 + 127 140 140 111 31 10 32 80 106 42 8 9 56 132 136 74 + 132 140 140 140 138 114 99 81 82 77 80 78 77 79 122 82 + 118 122 115 118 118 125 115 125 116 123 121 119 117 116 120 85 + 155 157 159 159 163 151 140 131 134 135 125 127 127 137 138 104 + 155 172 172 158 107 54 53 76 75 23 20 21 53 132 148 120 + 154 173 151 62 18 64 156 165 163 66 11 16 101 166 166 131 + 158 163 63 19 34 156 171 167 166 66 11 13 107 165 166 122 + 153 114 17 21 82 169 170 168 166 65 13 10 94 167 168 119 + 153 60 20 17 108 172 173 170 167 66 13 13 76 164 168 113 + 142 36 18 15 118 173 172 172 166 61 14 16 82 164 164 103 + 138 26 22 15 113 174 174 171 165 56 13 16 86 165 162 106 + 143 33 21 19 103 175 173 171 163 57 16 16 90 165 167 124 + 153 50 19 18 83 174 173 171 164 50 15 15 97 166 165 119 + 157 97 15 21 57 174 172 170 165 48 16 16 95 167 166 115 + 159 158 21 17 23 145 176 172 167 47 17 15 102 169 169 109 + 156 179 124 23 17 59 163 173 171 58 17 17 106 167 167 102 + 157 177 174 138 53 29 54 107 139 63 16 19 68 161 166 101 + 162 176 172 173 166 144 126 107 119 103 105 108 101 107 150 109 + 134 151 147 147 140 153 146 147 137 149 143 139 146 147 147 113 + + 95 104 114 105 101 92 82 91 107 102 98 91 89 84 96 96 + 121 125 148 147 144 143 144 144 144 143 147 147 147 146 130 131 + 122 114 150 150 144 144 145 148 145 144 147 147 147 144 86 130 + 116 30 85 96 92 75 81 86 90 91 94 101 101 66 81 134 + 129 18 18 17 15 22 22 21 21 21 23 21 19 19 83 123 + 129 18 15 17 18 22 23 20 22 23 24 22 23 24 84 130 + 119 19 56 56 50 51 51 41 42 42 37 37 45 47 84 136 + 122 55 146 144 146 148 146 146 139 142 142 145 149 114 85 130 + 124 57 147 145 145 149 146 148 146 148 148 148 149 89 79 133 + 136 32 140 150 150 150 147 148 148 149 148 150 143 38 104 125 + 141 38 46 134 151 149 149 148 148 149 150 133 56 21 124 134 + 155 93 17 24 75 93 105 94 86 77 50 25 21 38 145 118 + 143 141 51 19 24 22 22 19 24 25 23 25 19 113 148 125 + 140 150 137 50 19 20 20 22 23 21 20 18 102 148 145 125 + 138 149 153 149 95 50 28 21 25 36 74 131 148 146 147 129 + 136 136 141 139 138 142 137 133 136 136 137 140 131 134 138 119 + 80 92 102 95 92 87 77 80 98 95 87 81 78 74 82 85 + 114 120 135 132 135 135 132 131 133 134 133 134 135 136 122 120 + 113 106 137 133 134 134 133 134 133 134 134 133 135 132 79 116 + 103 28 75 79 73 55 60 63 69 76 76 81 84 56 77 117 + 112 8 8 7 6 8 10 8 8 7 10 8 7 9 78 119 + 114 8 7 7 6 8 10 9 8 10 11 10 10 8 80 121 + 109 8 47 47 43 42 39 34 34 30 28 28 38 42 77 123 + 108 45 136 136 136 138 138 136 136 135 134 136 139 106 82 116 + 113 47 135 134 134 136 138 136 138 137 137 137 141 80 81 125 + 124 24 131 138 137 139 138 137 139 139 139 139 133 32 99 115 + 129 29 44 125 139 139 141 140 138 140 142 121 43 10 114 125 + 137 79 9 16 58 84 93 84 77 61 39 12 11 31 138 118 + 130 131 39 10 12 9 7 7 9 11 11 10 12 111 140 118 + 132 138 120 39 8 10 10 11 11 11 9 10 96 140 140 115 + 132 139 140 132 89 37 17 10 16 28 66 123 141 140 140 122 + 124 129 127 128 125 128 125 118 121 128 128 127 126 127 132 118 + 104 120 131 122 119 113 103 106 124 119 115 109 102 101 109 113 + 138 148 166 166 168 168 164 162 167 165 166 169 167 166 150 147 + 137 132 166 165 167 164 164 165 165 166 167 169 167 161 107 147 + 127 53 101 107 94 76 82 86 90 97 95 102 106 68 101 146 + 127 21 16 13 10 13 16 16 16 15 16 15 17 19 108 139 + 125 20 11 11 13 13 14 13 16 15 16 17 17 16 105 143 + 135 23 66 66 65 66 61 56 57 50 48 47 58 63 103 149 + 134 75 163 166 166 167 166 165 163 164 165 167 171 139 119 137 + 131 76 165 167 168 170 172 171 171 171 170 172 173 107 107 147 + 140 53 156 171 170 173 172 174 173 173 172 176 163 54 126 146 + 151 54 64 156 169 172 173 174 175 174 174 145 59 29 144 153 + 163 107 18 34 82 108 118 113 103 83 57 23 17 53 166 140 + 159 158 62 19 21 17 15 15 19 18 21 17 23 138 173 147 + 159 172 151 63 17 20 18 22 21 19 15 21 124 174 172 147 + 157 172 173 163 114 60 36 26 33 50 97 158 179 177 176 151 + 155 155 154 158 153 153 142 138 143 153 157 159 156 157 162 134 + diff --git a/data/multimarkers/multi-abcdef/patt.f b/data/multimarkers/multi-abcdef/patt.f new file mode 100644 index 0000000..9dd7777 --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.f @@ -0,0 +1,196 @@ + 123 136 143 142 151 150 142 144 148 149 149 148 150 147 149 129 + 126 151 128 110 120 122 113 120 112 119 113 110 114 133 157 140 + 123 155 139 94 28 27 26 86 101 95 81 39 22 110 157 133 + 125 153 151 147 23 26 22 137 159 158 158 154 52 99 155 128 + 124 151 153 139 28 25 18 134 154 157 148 157 118 93 154 137 + 124 148 152 145 28 25 15 127 153 158 88 156 150 131 155 123 + 122 149 153 136 26 26 21 136 153 143 61 151 155 153 154 135 + 132 152 152 135 21 24 23 131 128 63 41 149 156 153 156 129 + 128 149 151 139 26 24 22 69 38 23 44 155 153 155 152 125 + 124 151 151 137 30 27 18 137 151 96 46 154 154 157 154 127 + 125 148 151 139 24 26 17 135 152 151 46 150 153 156 158 123 + 125 150 151 133 26 23 17 125 151 155 111 154 155 152 152 126 + 123 149 150 139 30 23 21 126 149 149 153 151 150 151 152 128 + 116 147 150 143 29 23 18 124 145 148 146 147 146 148 152 126 + 119 144 126 81 26 23 23 73 115 138 145 148 146 148 149 122 + 112 130 109 105 106 102 102 108 103 125 127 120 124 126 123 105 + 111 128 130 130 133 136 129 132 139 137 140 140 144 141 140 116 + 118 143 123 107 110 110 108 111 103 107 107 112 105 132 154 135 + 123 146 134 80 11 13 13 72 82 82 70 31 12 100 148 127 + 122 144 145 135 11 14 10 133 148 148 152 146 46 96 150 121 + 120 143 144 128 13 15 11 128 144 146 142 149 114 96 147 128 + 122 142 144 128 12 14 9 125 142 148 83 147 145 124 147 122 + 121 142 143 125 11 12 13 125 141 134 58 145 144 144 146 131 + 123 140 143 127 10 13 10 117 114 55 36 145 146 147 146 121 + 120 139 141 126 11 13 10 52 33 11 37 147 143 146 144 118 + 118 141 141 125 15 14 9 130 140 83 44 146 145 145 146 121 + 125 140 142 129 13 14 8 126 140 144 45 144 143 143 145 126 + 118 139 140 118 10 12 7 118 138 143 93 144 141 139 142 114 + 127 138 142 124 9 11 10 123 136 139 142 139 140 141 144 118 + 113 137 140 129 9 10 7 119 135 135 137 138 137 139 140 122 + 110 134 118 70 11 9 8 63 110 132 135 135 135 138 137 117 + 103 113 94 89 88 93 92 90 94 118 115 110 113 117 114 100 + 131 145 149 147 150 154 152 152 160 155 160 159 165 163 163 145 + 134 175 149 137 143 138 138 144 136 143 142 142 140 166 187 170 + 136 176 158 94 28 28 26 101 103 108 92 37 27 119 185 171 + 145 176 177 166 33 21 15 150 178 181 185 167 64 105 183 164 + 147 175 176 165 33 22 18 149 178 180 170 180 152 117 178 161 + 138 175 174 167 34 17 20 146 176 180 114 178 175 138 179 158 + 140 172 173 161 30 17 19 142 172 170 90 174 178 177 180 168 + 144 174 173 162 30 19 19 140 145 89 52 171 177 179 182 164 + 132 170 171 162 28 19 17 79 55 20 45 173 174 176 178 151 + 139 172 172 157 34 18 16 146 162 104 49 175 175 176 178 157 + 144 172 174 162 31 16 18 148 170 175 62 170 176 176 176 159 + 140 176 172 160 29 18 14 139 172 171 105 172 177 176 174 150 + 145 169 173 157 27 18 18 145 167 169 168 169 171 173 174 156 + 132 168 171 161 22 18 13 143 168 166 166 167 168 169 170 153 + 128 163 148 102 23 17 18 90 140 163 162 164 165 170 172 151 + 133 142 123 116 104 101 105 109 116 143 144 139 141 147 144 134 + + 129 140 133 128 137 123 135 129 125 127 123 126 128 126 122 105 + 149 157 157 155 154 155 154 156 152 154 158 152 152 152 149 123 + 147 133 110 99 93 131 153 153 155 157 156 152 151 148 148 126 + 150 114 22 52 118 150 155 156 153 154 153 155 150 146 146 124 + 148 110 39 154 157 156 151 149 155 154 150 154 151 147 148 120 + 149 113 81 158 148 88 61 41 44 46 46 111 153 146 145 127 + 149 119 95 158 157 158 143 63 23 96 151 155 149 148 138 125 + 148 112 101 159 154 153 153 128 38 151 152 151 149 145 115 103 + 144 120 86 137 134 127 136 131 69 137 135 125 126 124 73 108 + 142 113 26 22 18 15 21 23 22 18 17 17 21 18 23 102 + 150 122 27 26 25 25 26 24 24 27 26 23 23 23 23 102 + 151 120 28 23 28 28 26 21 26 30 24 26 30 29 26 106 + 142 110 94 147 139 145 136 135 139 137 139 133 139 143 81 105 + 143 128 139 151 153 152 153 152 151 151 151 151 150 150 126 109 + 136 151 155 153 151 148 149 152 149 151 148 150 149 147 144 130 + 123 126 123 125 124 124 122 132 128 124 125 125 123 116 119 112 + 116 135 127 121 128 122 131 121 118 121 126 114 118 122 117 100 + 140 154 148 150 147 147 146 146 144 146 145 142 144 140 137 114 + 141 132 100 96 96 124 144 147 146 145 143 139 141 139 138 117 + 144 105 12 46 114 145 144 146 143 145 143 141 140 137 135 113 + 140 112 31 146 149 147 145 145 147 146 144 144 139 138 135 110 + 140 107 70 152 142 83 58 36 37 44 45 93 142 137 135 115 + 137 107 82 148 146 148 134 55 11 83 144 143 139 135 132 118 + 139 103 82 148 144 142 141 114 33 140 140 138 136 135 110 94 + 132 111 72 133 128 125 125 117 52 130 126 118 123 119 63 90 + 129 108 13 10 11 9 13 10 10 9 8 7 10 7 8 92 + 136 110 13 14 15 14 12 13 13 14 14 12 11 10 9 93 + 133 110 11 11 13 12 11 10 11 15 13 10 9 9 11 88 + 130 107 80 135 128 128 125 127 126 125 129 118 124 129 70 89 + 130 123 134 145 144 144 143 143 141 141 142 140 142 140 118 94 + 128 143 146 144 143 142 142 140 139 141 140 139 138 137 134 113 + 111 118 123 122 120 122 121 123 120 118 125 118 127 113 110 103 + 145 170 171 164 161 158 168 164 151 157 159 150 156 153 151 134 + 163 187 185 183 178 179 180 182 178 178 176 174 174 170 172 144 + 163 166 119 105 117 138 177 179 176 176 176 176 173 169 170 147 + 165 140 27 64 152 175 178 177 174 175 176 177 171 168 165 141 + 159 142 37 167 180 178 174 171 173 175 170 172 169 167 164 139 + 160 142 92 185 170 114 90 52 45 49 62 105 168 166 162 144 + 155 143 108 181 180 180 170 89 20 104 175 171 169 166 163 143 + 160 136 103 178 178 176 172 145 55 162 170 172 167 168 140 116 + 152 144 101 150 149 146 142 140 79 146 148 139 145 143 90 109 + 152 138 26 15 18 20 19 19 17 16 18 14 18 13 18 105 + 154 138 28 21 22 17 17 19 19 18 16 18 18 18 17 101 + 150 143 28 33 33 34 30 30 28 34 31 29 27 22 23 104 + 147 137 94 166 165 167 161 162 162 157 162 160 157 161 102 116 + 149 149 158 177 176 174 173 173 171 172 174 172 173 171 148 123 + 145 175 176 176 175 175 172 174 170 172 172 176 169 168 163 142 + 131 134 136 145 147 138 140 144 132 139 144 140 145 132 128 133 + + 105 123 126 124 120 127 125 103 108 102 102 106 105 109 130 112 + 122 149 148 146 148 145 138 115 73 23 23 26 81 126 144 119 + 126 152 148 146 147 146 148 145 124 18 23 29 143 150 147 116 + 128 152 151 150 151 153 149 149 126 21 23 30 139 150 149 123 + 126 152 152 155 154 111 155 151 125 17 23 26 133 151 150 125 + 123 158 156 153 150 46 151 152 135 17 26 24 139 151 148 125 + 127 154 157 154 154 46 96 151 137 18 27 30 137 151 151 124 + 125 152 155 153 155 44 23 38 69 22 24 26 139 151 149 128 + 129 156 153 156 149 41 63 128 131 23 24 21 135 152 152 132 + 135 154 153 155 151 61 143 153 136 21 26 26 136 153 149 122 + 123 155 131 150 156 88 158 153 127 15 25 28 145 152 148 124 + 137 154 93 118 157 148 157 154 134 18 25 28 139 153 151 124 + 128 155 99 52 154 158 158 159 137 22 26 23 147 151 153 125 + 133 157 110 22 39 81 95 101 86 26 27 28 94 139 155 123 + 140 157 133 114 110 113 119 112 120 113 122 120 110 128 151 126 + 129 149 147 150 148 149 149 148 144 142 150 151 142 143 136 123 + 100 114 117 113 110 115 118 94 90 92 93 88 89 94 113 103 + 117 137 138 135 135 135 132 110 63 8 9 11 70 118 134 110 + 122 140 139 137 138 137 135 135 119 7 10 9 129 140 137 113 + 118 144 141 140 139 142 139 136 123 10 11 9 124 142 138 127 + 114 142 139 141 144 93 143 138 118 7 12 10 118 140 139 118 + 126 145 143 143 144 45 144 140 126 8 14 13 129 142 140 125 + 121 146 145 145 146 44 83 140 130 9 14 15 125 141 141 118 + 118 144 146 143 147 37 11 33 52 10 13 11 126 141 139 120 + 121 146 147 146 145 36 55 114 117 10 13 10 127 143 140 123 + 131 146 144 144 145 58 134 141 125 13 12 11 125 143 142 121 + 122 147 124 145 147 83 148 142 125 9 14 12 128 144 142 122 + 128 147 96 114 149 142 146 144 128 11 15 13 128 144 143 120 + 121 150 96 46 146 152 148 148 133 10 14 11 135 145 144 122 + 127 148 100 12 31 70 82 82 72 13 13 11 80 134 146 123 + 135 154 132 105 112 107 107 103 111 108 110 110 107 123 143 118 + 116 140 141 144 140 140 137 139 132 129 136 133 130 130 128 111 + 134 144 147 141 139 144 143 116 109 105 101 104 116 123 142 133 + 151 172 170 165 164 162 163 140 90 18 17 23 102 148 163 128 + 153 170 169 168 167 166 166 168 143 13 18 22 161 171 168 132 + 156 174 173 171 169 168 169 167 145 18 18 27 157 173 169 145 + 150 174 176 177 172 105 171 172 139 14 18 29 160 172 176 140 + 159 176 176 176 170 62 175 170 148 18 16 31 162 174 172 144 + 157 178 176 175 175 49 104 162 146 16 18 34 157 172 172 139 + 151 178 176 174 173 45 20 55 79 17 19 28 162 171 170 132 + 164 182 179 177 171 52 89 145 140 19 19 30 162 173 174 144 + 168 180 177 178 174 90 170 172 142 19 17 30 161 173 172 140 + 158 179 138 175 178 114 180 176 146 20 17 34 167 174 175 138 + 161 178 117 152 180 170 180 178 149 18 22 33 165 176 175 147 + 164 183 105 64 167 185 181 178 150 15 21 33 166 177 176 145 + 171 185 119 27 37 92 108 103 101 26 28 28 94 158 176 136 + 170 187 166 140 142 142 143 136 144 138 138 143 137 149 175 134 + 145 163 163 165 159 160 155 160 152 152 154 150 147 149 145 131 + + 112 119 116 123 125 125 124 128 132 122 124 124 125 123 126 123 + 130 144 147 149 150 148 151 149 152 149 148 151 153 155 151 136 + 109 126 150 150 151 151 151 151 152 153 152 153 151 139 128 143 + 105 81 143 139 133 139 137 139 135 136 145 139 147 94 110 142 + 106 26 29 30 26 24 30 26 21 26 28 28 23 28 120 151 + 102 23 23 23 23 26 27 24 24 26 25 25 26 27 122 150 + 102 23 18 21 17 17 18 22 23 21 15 18 22 26 113 142 + 108 73 124 126 125 135 137 69 131 136 127 134 137 86 120 144 + 103 115 145 149 151 152 151 38 128 153 153 154 159 101 112 148 + 125 138 148 149 155 151 96 23 63 143 158 157 158 95 119 149 + 127 145 146 153 111 46 46 44 41 61 88 148 158 81 113 149 + 120 148 147 151 154 150 154 155 149 151 156 157 154 39 110 148 + 124 146 146 150 155 153 154 153 156 155 150 118 52 22 114 150 + 126 148 148 151 152 156 157 155 153 153 131 93 99 110 133 147 + 123 149 152 152 152 158 154 152 156 154 155 154 155 157 157 149 + 105 122 126 128 126 123 127 125 129 135 123 137 128 133 140 129 + 103 110 113 127 118 125 118 120 123 121 122 120 122 123 118 111 + 113 134 137 138 139 140 141 139 140 142 142 143 144 146 143 128 + 94 118 140 142 140 142 141 141 143 143 144 144 145 134 123 130 + 89 70 129 124 118 129 125 126 127 125 128 128 135 80 107 130 + 88 11 9 9 10 13 15 11 10 11 12 13 11 11 110 133 + 93 9 10 11 12 14 14 13 13 12 14 15 14 13 110 136 + 92 8 7 10 7 8 9 10 10 13 9 11 10 13 108 129 + 90 63 119 123 118 126 130 52 117 125 125 128 133 72 111 132 + 94 110 135 136 138 140 140 33 114 141 142 144 148 82 103 139 + 118 132 135 139 143 144 83 11 55 134 148 146 148 82 107 137 + 115 135 137 142 93 45 44 37 36 58 83 142 152 70 107 140 + 110 135 138 139 144 144 146 147 145 145 147 149 146 31 112 140 + 113 135 137 140 141 143 145 143 146 144 145 114 46 12 105 144 + 117 138 139 141 139 143 145 146 147 144 124 96 96 100 132 141 + 114 137 140 144 142 145 146 144 146 146 147 147 150 148 154 140 + 100 117 122 118 114 126 121 118 121 131 122 128 121 127 135 116 + 133 128 132 145 140 144 139 132 144 140 138 147 145 136 134 131 + 142 163 168 169 176 172 172 170 174 172 175 175 176 176 175 145 + 123 148 171 173 172 174 172 171 173 173 174 176 177 158 149 149 + 116 102 161 157 160 162 157 162 162 161 167 165 166 94 137 147 + 104 23 22 27 29 31 34 28 30 30 34 33 33 28 143 150 + 101 17 18 18 18 16 18 19 19 17 17 22 21 28 138 154 + 105 18 13 18 14 18 16 17 19 19 20 18 15 26 138 152 + 109 90 143 145 139 148 146 79 140 142 146 149 150 101 144 152 + 116 140 168 167 172 170 162 55 145 172 176 178 178 103 136 160 + 143 163 166 169 171 175 104 20 89 170 180 180 181 108 143 155 + 144 162 166 168 105 62 49 45 52 90 114 170 185 92 142 160 + 139 164 167 169 172 170 175 173 171 174 178 180 167 37 142 159 + 141 165 168 171 177 176 175 174 177 178 175 152 64 27 140 165 + 147 170 169 173 176 176 176 176 179 177 138 117 105 119 166 163 + 144 172 170 174 174 176 178 178 182 180 179 178 183 185 187 163 + 134 151 153 156 150 159 157 151 164 168 158 161 164 171 170 145 + diff --git a/data/multimarkers/multi-abcdef/patt.g b/data/multimarkers/multi-abcdef/patt.g new file mode 100644 index 0000000..51a7259 --- /dev/null +++ b/data/multimarkers/multi-abcdef/patt.g @@ -0,0 +1,196 @@ + 145 150 162 167 159 167 161 157 159 169 165 155 156 157 152 145 + 153 164 164 167 173 147 119 88 90 83 114 139 164 138 145 141 + 145 160 163 154 98 48 54 126 138 158 117 57 73 45 134 148 + 144 157 141 52 36 65 157 170 169 171 175 155 79 36 150 155 + 145 162 63 49 40 122 171 170 169 167 171 173 164 49 156 153 + 148 125 38 45 61 164 166 165 166 168 172 170 169 111 147 136 + 138 71 43 41 86 164 165 166 164 165 165 165 167 161 165 143 + 160 54 41 37 93 166 163 165 165 166 164 166 165 165 171 152 + 148 48 38 38 90 162 163 166 166 166 167 165 164 167 171 161 + 158 37 41 43 79 162 162 162 164 113 110 102 119 112 115 123 + 155 46 45 42 69 164 163 161 163 163 112 32 39 32 107 149 + 160 94 39 41 44 155 161 160 162 165 143 37 47 44 140 155 + 158 162 45 34 34 149 162 159 161 165 149 39 49 45 164 149 + 151 168 154 58 25 74 159 159 161 166 161 52 43 33 158 136 + 149 163 169 149 60 24 65 128 144 133 117 39 37 50 160 139 + 142 167 152 161 167 133 99 68 66 78 100 133 133 168 170 145 + 127 137 149 149 145 149 152 151 146 152 150 146 155 148 141 134 + 136 153 155 156 156 137 110 84 89 92 113 139 157 138 145 131 + 131 150 153 144 84 34 47 116 130 144 113 71 65 34 132 137 + 130 149 131 43 21 51 148 162 161 162 165 151 74 31 140 143 + 130 147 52 27 23 109 158 158 160 159 161 164 152 41 146 141 + 131 113 24 27 45 157 154 156 158 159 161 163 165 100 140 129 + 129 62 22 23 68 154 154 155 156 157 159 160 162 155 157 137 + 147 38 23 25 79 155 153 154 155 158 156 156 161 158 163 147 + 132 24 23 18 78 153 153 153 156 156 159 158 159 161 163 144 + 135 19 24 20 67 151 150 152 156 118 101 98 109 108 109 109 + 144 32 25 25 51 150 152 153 154 155 108 22 23 19 95 133 + 144 79 19 22 25 147 150 151 153 153 140 26 29 26 128 144 + 139 141 25 19 16 131 149 151 149 155 142 27 29 25 148 139 + 138 154 126 33 15 65 146 148 150 154 148 28 26 20 139 128 + 134 151 155 134 46 12 57 115 139 122 108 21 27 42 140 133 + 129 150 138 147 154 122 77 60 65 61 71 105 122 157 160 136 + 152 169 183 184 176 180 177 176 178 183 180 174 182 182 175 170 + 173 190 190 194 191 167 140 128 130 126 152 171 192 176 180 172 + 166 188 190 177 121 65 72 147 169 176 149 109 103 63 153 178 + 163 187 170 80 35 67 178 197 197 200 202 183 110 50 165 181 + 161 184 87 39 38 130 192 196 196 198 201 204 187 76 176 178 + 161 150 36 36 67 184 193 195 196 196 201 201 204 150 175 161 + 161 94 34 34 89 191 193 193 195 196 199 200 202 194 193 171 + 179 68 32 31 96 193 191 193 195 194 196 194 200 199 203 183 + 170 56 33 29 96 189 193 192 195 194 195 192 194 196 199 181 + 172 39 35 35 96 189 191 190 195 153 143 138 144 141 137 145 + 171 58 35 32 76 186 189 189 195 188 138 51 42 40 118 166 + 173 108 36 31 42 176 187 189 192 196 174 57 44 44 156 179 + 166 179 53 32 36 165 186 187 191 191 178 54 38 45 181 177 + 164 191 166 61 30 86 178 183 188 192 184 62 38 40 171 164 + 156 188 193 166 78 38 84 152 170 156 144 50 46 79 180 169 + 144 182 173 181 186 140 101 86 91 98 104 130 141 178 191 168 + + 145 141 148 155 153 136 143 152 161 123 149 155 149 136 139 145 + 152 145 134 150 156 147 165 171 171 115 107 140 164 158 160 170 + 157 138 45 36 49 111 161 165 167 112 32 44 45 33 50 168 + 156 164 73 79 164 169 167 165 164 119 39 47 49 43 37 133 + 155 139 57 155 173 170 165 166 165 102 32 37 39 52 39 133 + 165 114 117 175 171 172 165 164 167 110 112 143 149 161 117 100 + 169 83 158 171 167 168 165 166 166 113 163 165 165 166 133 78 + 159 90 138 169 169 166 164 165 166 164 163 162 161 161 144 66 + 157 88 126 170 170 165 166 165 166 162 161 160 159 159 128 68 + 161 119 54 157 171 166 165 163 163 162 163 161 162 159 65 99 + 167 147 48 65 122 164 164 166 162 162 164 155 149 74 24 133 + 159 173 98 36 40 61 86 93 90 79 69 44 34 25 60 167 + 167 167 154 52 49 45 41 37 38 43 42 41 34 58 149 161 + 162 164 163 141 63 38 43 41 38 41 45 39 45 154 169 152 + 150 164 160 157 162 125 71 54 48 37 46 94 162 168 163 167 + 145 153 145 144 145 148 138 160 148 158 155 160 158 151 149 142 + 134 131 137 143 141 129 137 147 144 109 133 144 139 128 133 136 + 141 145 132 140 146 140 157 163 163 109 95 128 148 139 140 160 + 148 138 34 31 41 100 155 158 161 108 19 26 25 20 42 157 + 155 157 65 74 152 165 162 161 159 109 23 29 29 26 27 122 + 146 139 71 151 164 163 160 156 158 98 22 26 27 28 21 105 + 150 113 113 165 161 161 159 156 159 101 108 140 142 148 108 71 + 152 92 144 162 159 159 157 158 156 118 155 153 155 154 122 61 + 146 89 130 161 160 158 156 155 156 156 154 153 149 150 139 65 + 151 84 116 162 158 156 155 154 153 152 153 151 151 148 115 60 + 152 110 47 148 158 154 154 153 153 150 152 150 149 146 57 77 + 149 137 34 51 109 157 154 155 153 151 150 147 131 65 12 122 + 145 156 84 21 23 45 68 79 78 67 51 25 16 15 46 154 + 149 156 144 43 27 27 23 25 18 20 25 22 19 33 134 147 + 149 155 153 131 52 24 22 23 23 24 25 19 25 126 155 138 + 137 153 150 149 147 113 62 38 24 19 32 79 141 154 151 150 + 127 136 131 130 130 131 129 147 132 135 144 144 139 138 134 129 + 170 172 178 181 178 161 171 183 181 145 166 179 177 164 169 168 + 175 180 153 165 176 175 193 203 199 137 118 156 181 171 180 191 + 182 176 63 50 76 150 194 199 196 141 40 44 45 40 79 178 + 182 192 103 110 187 204 202 200 194 144 42 44 38 38 46 141 + 174 171 109 183 204 201 200 194 192 138 51 57 54 62 50 130 + 180 152 149 202 201 201 199 196 195 143 138 174 178 184 144 104 + 183 126 176 200 198 196 196 194 194 153 188 196 191 192 156 98 + 178 130 169 197 196 196 195 195 195 195 195 192 191 188 170 91 + 176 128 147 197 196 195 193 193 192 190 189 189 187 183 152 86 + 177 140 72 178 192 193 193 191 193 191 189 187 186 178 84 101 + 180 167 65 67 130 184 191 193 189 189 186 176 165 86 38 140 + 176 191 121 35 38 67 89 96 96 96 76 42 36 30 78 186 + 184 194 177 80 39 36 34 31 29 35 32 31 32 61 166 181 + 183 190 190 170 87 36 34 32 33 35 35 36 53 166 193 173 + 169 190 188 187 184 150 94 68 56 39 58 108 179 191 188 182 + 152 173 166 163 161 161 161 179 170 172 171 173 166 164 156 144 + + 145 170 168 133 133 100 78 66 68 99 133 167 161 152 167 142 + 139 160 50 37 39 117 133 144 128 65 24 60 149 169 163 149 + 136 158 33 43 52 161 166 161 159 159 74 25 58 154 168 151 + 149 164 45 49 39 149 165 161 159 162 149 34 34 45 162 158 + 155 140 44 47 37 143 165 162 160 161 155 44 41 39 94 160 + 149 107 32 39 32 112 163 163 161 163 164 69 42 45 46 155 + 123 115 112 119 102 110 113 164 162 162 162 79 43 41 37 158 + 161 171 167 164 165 167 166 166 166 163 162 90 38 38 48 148 + 152 171 165 165 166 164 166 165 165 163 166 93 37 41 54 160 + 143 165 161 167 165 165 165 164 166 165 164 86 41 43 71 138 + 136 147 111 169 170 172 168 166 165 166 164 61 45 38 125 148 + 153 156 49 164 173 171 167 169 170 171 122 40 49 63 162 145 + 155 150 36 79 155 175 171 169 170 157 65 36 52 141 157 144 + 148 134 45 73 57 117 158 138 126 54 48 98 154 163 160 145 + 141 145 138 164 139 114 83 90 88 119 147 173 167 164 164 153 + 145 152 157 156 155 165 169 159 157 161 167 159 167 162 150 145 + 136 160 157 122 105 71 61 65 60 77 122 154 147 138 150 129 + 133 140 42 27 21 108 122 139 115 57 12 46 134 155 151 134 + 128 139 20 26 28 148 154 150 148 146 65 15 33 126 154 138 + 139 148 25 29 27 142 155 149 151 149 131 16 19 25 141 139 + 144 128 26 29 26 140 153 153 151 150 147 25 22 19 79 144 + 133 95 19 23 22 108 155 154 153 152 150 51 25 25 32 144 + 109 109 108 109 98 101 118 156 152 150 151 67 20 24 19 135 + 144 163 161 159 158 159 156 156 153 153 153 78 18 23 24 132 + 147 163 158 161 156 156 158 155 154 153 155 79 25 23 38 147 + 137 157 155 162 160 159 157 156 155 154 154 68 23 22 62 129 + 129 140 100 165 163 161 159 158 156 154 157 45 27 24 113 131 + 141 146 41 152 164 161 159 160 158 158 109 23 27 52 147 130 + 143 140 31 74 151 165 162 161 162 148 51 21 43 131 149 130 + 137 132 34 65 71 113 144 130 116 47 34 84 144 153 150 131 + 131 145 138 157 139 113 92 89 84 110 137 156 156 155 153 136 + 134 141 148 155 146 150 152 146 151 152 149 145 149 149 137 127 + 168 191 178 141 130 104 98 91 86 101 140 186 181 173 182 144 + 169 180 79 46 50 144 156 170 152 84 38 78 166 193 188 156 + 164 171 40 38 62 184 192 188 183 178 86 30 61 166 191 164 + 177 181 45 38 54 178 191 191 187 186 165 36 32 53 179 166 + 179 156 44 44 57 174 196 192 189 187 176 42 31 36 108 173 + 166 118 40 42 51 138 188 195 189 189 186 76 32 35 58 171 + 145 137 141 144 138 143 153 195 190 191 189 96 35 35 39 172 + 181 199 196 194 192 195 194 195 192 193 189 96 29 33 56 170 + 183 203 199 200 194 196 194 195 193 191 193 96 31 32 68 179 + 171 193 194 202 200 199 196 195 193 193 191 89 34 34 94 161 + 161 175 150 204 201 201 196 196 195 193 184 67 36 36 150 161 + 178 176 76 187 204 201 198 196 196 192 130 38 39 87 184 161 + 181 165 50 110 183 202 200 197 197 178 67 35 80 170 187 163 + 178 153 63 103 109 149 176 169 147 72 65 121 177 190 188 166 + 172 180 176 192 171 152 126 130 128 140 167 191 194 190 190 173 + 170 175 182 182 174 180 183 178 176 177 180 176 184 183 169 152 + + 142 149 151 158 160 155 158 148 160 138 148 145 144 145 153 145 + 167 163 168 162 94 46 37 48 54 71 125 162 157 160 164 150 + 152 169 154 45 39 45 41 38 41 43 38 63 141 163 164 162 + 161 149 58 34 41 42 43 38 37 41 45 49 52 154 167 167 + 167 60 25 34 44 69 79 90 93 86 61 40 36 98 173 159 + 133 24 74 149 155 164 162 162 166 164 164 122 65 48 147 167 + 99 65 159 162 161 163 162 163 163 165 166 171 157 54 119 161 + 68 128 159 159 160 161 162 166 165 166 165 170 170 126 88 157 + 66 144 161 161 162 163 164 166 165 164 166 169 169 138 90 159 + 78 133 166 165 165 163 113 166 166 165 168 167 171 158 83 169 + 100 117 161 149 143 112 110 167 164 165 172 171 175 117 114 165 + 133 39 52 39 37 32 102 165 166 165 170 173 155 57 139 155 + 133 37 43 49 47 39 119 164 165 167 169 164 79 73 164 156 + 168 50 33 45 44 32 112 167 165 161 111 49 36 45 138 157 + 170 160 158 164 140 107 115 171 171 165 147 156 150 134 145 152 + 145 139 136 149 155 149 123 161 152 143 136 153 155 148 141 145 + 129 134 138 139 144 144 135 132 147 129 131 130 130 131 136 127 + 150 151 154 141 79 32 19 24 38 62 113 147 149 150 153 137 + 138 155 126 25 19 25 24 23 23 22 24 52 131 153 155 149 + 147 134 33 19 22 25 20 18 25 23 27 27 43 144 156 149 + 154 46 15 16 25 51 67 78 79 68 45 23 21 84 156 145 + 122 12 65 131 147 150 151 153 155 154 157 109 51 34 137 149 + 77 57 146 149 150 152 150 153 153 154 154 158 148 47 110 152 + 60 115 148 151 151 153 152 153 154 155 156 158 162 116 84 151 + 65 139 150 149 153 154 156 156 155 156 158 160 161 130 89 146 + 61 122 154 155 153 155 118 156 158 157 159 159 162 144 92 152 + 71 108 148 142 140 108 101 159 156 159 161 161 165 113 113 150 + 105 21 28 27 26 22 98 158 156 160 163 164 151 71 139 146 + 122 27 26 29 29 23 109 159 161 162 165 152 74 65 157 155 + 157 42 20 25 26 19 108 161 158 155 100 41 31 34 138 148 + 160 140 139 148 128 95 109 163 163 157 140 146 140 132 145 141 + 136 133 128 139 144 133 109 144 147 137 129 141 143 137 131 134 + 144 156 164 166 173 171 172 170 179 161 161 161 163 166 173 152 + 182 188 191 179 108 58 39 56 68 94 150 184 187 188 190 169 + 173 193 166 53 36 35 35 33 32 34 36 87 170 190 190 183 + 181 166 61 32 31 32 35 29 31 34 36 39 80 177 194 184 + 186 78 30 36 42 76 96 96 96 89 67 38 35 121 191 176 + 140 38 86 165 176 186 189 189 193 191 184 130 67 65 167 180 + 101 84 178 186 187 189 191 193 191 193 193 192 178 72 140 177 + 86 152 183 187 189 189 190 192 193 193 195 196 197 147 128 176 + 91 170 188 191 192 195 195 195 195 195 196 196 197 169 130 178 + 98 156 192 191 196 188 153 194 194 196 196 198 200 176 126 183 + 104 144 184 178 174 138 143 195 196 199 201 201 202 149 152 180 + 130 50 62 54 57 51 138 192 194 200 201 204 183 109 171 174 + 141 46 38 38 44 42 144 194 200 202 204 187 110 103 192 182 + 178 79 40 45 44 40 141 196 199 194 150 76 50 63 176 182 + 191 180 171 181 156 118 137 199 203 193 175 176 165 153 180 175 + 168 169 164 177 179 166 145 181 183 171 161 178 181 178 172 170 + diff --git a/data/multimarkers/multi-barcode-4x3.dat b/data/multimarkers/multi-barcode-4x3.dat new file mode 100644 index 0000000..adb94f0 --- /dev/null +++ b/data/multimarkers/multi-barcode-4x3.dat @@ -0,0 +1,73 @@ +12 + +00 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +01 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +02 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +03 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +04 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +05 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +06 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +07 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +08 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +09 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +10 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +11 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 diff --git a/data/multimarkers/multi-marker-hirokanji.dat b/data/multimarkers/multi-marker-hirokanji.dat new file mode 100644 index 0000000..9a9f653 --- /dev/null +++ b/data/multimarkers/multi-marker-hirokanji.dat @@ -0,0 +1,16 @@ +#the number of patterns to be recognized +2 + +#marker 1 +../data/patt.hiro +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +../data/patt.kanji +1.0 +1.0000 0.0000 0.0000 2.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/demo/.DS_Store b/demo/.DS_Store new file mode 100644 index 0000000..89b58cf Binary files /dev/null and b/demo/.DS_Store differ diff --git a/demo/ar/.DS_Store b/demo/ar/.DS_Store new file mode 100644 index 0000000..71f7dee Binary files /dev/null and b/demo/ar/.DS_Store differ diff --git a/demo/ar/aframe.example.html b/demo/ar/aframe.example.html new file mode 100644 index 0000000..52366e6 --- /dev/null +++ b/demo/ar/aframe.example.html @@ -0,0 +1,18 @@ + + + + + + Document + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/ar/aframe/Makefile b/demo/ar/aframe/Makefile new file mode 100644 index 0000000..ae6e72d --- /dev/null +++ b/demo/ar/aframe/Makefile @@ -0,0 +1,27 @@ +watch: build + fswatch -0 src/*.js ../three.js/src/*/*.js | xargs -0 -n 1 -I {} make build + +.PHONY: build + +build-default: + (cd ../three.js/ && make build-main) + cat ../three.js/build/ar.js \ + src/component-anchor.js \ + src/component-hit-testing.js \ + src/location-based/*.js \ + src/system-arjs.js \ + > build/aframe-ar.js + +build-nft: + (cd ../three.js/ && make build-main-nft) + cat ../three.js/build/ar-nft.js \ + src/component-anchor-nft.js \ + src/component-hit-testing.js \ + src/location-based/*.js \ + src/system-arjs.js \ + > build/aframe-ar-nft.js + +build-location-only: + cat src/location-based/*.js > build/aframe-ar-location-only.js + +build: build-default build-nft diff --git a/demo/ar/aframe/build/aframe-ar-location-only.js b/demo/ar/aframe/build/aframe-ar-location-only.js new file mode 100644 index 0000000..8444908 --- /dev/null +++ b/demo/ar/aframe/build/aframe-ar-location-only.js @@ -0,0 +1,1856 @@ + +/** + * @author richt / http://richt.me + * @author WestLangley / http://github.com/WestLangley + * + * W3C Device Orientation control (http://w3c.github.io/deviceorientation/spec-source-orientation.html) + */ + +/* NOTE that this is a modified version of THREE.DeviceOrientationControls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +ArjsDeviceOrientationControls = function ( object ) { + + var scope = this; + + this.object = object; + this.object.rotation.reorder( 'YXZ' ); + + this.enabled = true; + + this.deviceOrientation = {}; + this.screenOrientation = 0; + + this.alphaOffset = 0; // radians + + this.smoothingFactor = 1; + + this.TWO_PI = 2 * Math.PI; + this.HALF_PI = 0.5 * Math.PI; + + var onDeviceOrientationChangeEvent = function ( event ) { + + scope.deviceOrientation = event; + + }; + + var onScreenOrientationChangeEvent = function () { + + scope.screenOrientation = window.orientation || 0; + + }; + + // The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y'' + + var setObjectQuaternion = function () { + + var zee = new THREE.Vector3( 0, 0, 1 ); + + var euler = new THREE.Euler(); + + var q0 = new THREE.Quaternion(); + + var q1 = new THREE.Quaternion( - Math.sqrt( 0.5 ), 0, 0, Math.sqrt( 0.5 ) ); // - PI/2 around the x-axis + + return function ( quaternion, alpha, beta, gamma, orient ) { + + euler.set( beta, alpha, - gamma, 'YXZ' ); // 'ZXY' for the device, but 'YXZ' for us + + quaternion.setFromEuler( euler ); // orient the device + + quaternion.multiply( q1 ); // camera looks out the back of the device, not the top + + quaternion.multiply( q0.setFromAxisAngle( zee, - orient ) ); // adjust for screen orientation + + }; + + }(); + + this.connect = function () { + + onScreenOrientationChangeEvent(); + + window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = true; + + }; + + this.disconnect = function () { + + window.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = false; + + }; + + this.update = function () { + + if ( scope.enabled === false ) return; + + var device = scope.deviceOrientation; + + if ( device ) { + + var alpha = device.alpha ? THREE.Math.degToRad( device.alpha ) + scope.alphaOffset : 0; // Z + + var beta = device.beta ? THREE.Math.degToRad( device.beta ) : 0; // X' + + var gamma = device.gamma ? THREE.Math.degToRad( device.gamma ) : 0; // Y'' + + var orient = scope.screenOrientation ? THREE.Math.degToRad( scope.screenOrientation ) : 0; // O + + // NW Added smoothing code + var k = this.smoothingFactor; + + if(this.lastOrientation) { + alpha = this._getSmoothedAngle(alpha, this.lastOrientation.alpha, k); + beta = this._getSmoothedAngle(beta + Math.PI, this.lastOrientation.beta, k); + gamma = this._getSmoothedAngle(gamma + this.HALF_PI, this.lastOrientation.gamma, k, Math.PI); + + } else { + beta += Math.PI; + gamma += this.HALF_PI; + } + + this.lastOrientation = { + alpha: alpha, + beta: beta, + gamma: gamma + }; + setObjectQuaternion( scope.object.quaternion, alpha, beta - Math.PI, gamma - this.HALF_PI, orient ); + + } + }; + + + // NW Added + this._orderAngle = function(a, b, range = this.TWO_PI) { + if ((b > a && Math.abs(b - a) < range / 2) || (a > b && Math.abs(b - a) > range / 2)) { + return { left: a, right: b } + } else { + return { left: b, right: a } + } + }; + + // NW Added + this._getSmoothedAngle = function(a, b, k, range = this.TWO_PI) { + const angles = this._orderAngle(a, b, range); + const angleshift = angles.left; + const origAnglesRight = angles.right; + angles.left = 0; + angles.right -= angleshift; + if(angles.right < 0) angles.right += range; + let newangle = origAnglesRight == b ? (1 - k)*angles.right + k * angles.left : k * angles.right + (1 - k) * angles.left; + newangle += angleshift; + if(newangle >= range) newangle -= range; + return newangle; + }; + + this.dispose = function () { + scope.disconnect(); + }; + + this.connect(); + +}; +// To avoid recalculation at every mouse movement tick +var PI_2 = Math.PI / 2; + + +/** + * look-controls. Update entity pose, factoring mouse, touch, and WebVR API data. + */ + +/* NOTE that this is a modified version of A-Frame's look-controls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +AFRAME.registerComponent('arjs-look-controls', { + dependencies: ['position', 'rotation'], + + schema: { + enabled: {default: true}, + magicWindowTrackingEnabled: {default: true}, + pointerLockEnabled: {default: false}, + reverseMouseDrag: {default: false}, + reverseTouchDrag: {default: false}, + touchEnabled: {default: true}, + smoothingFactor: { type: 'number', default: 1 } + }, + + init: function () { + this.deltaYaw = 0; + this.previousHMDPosition = new THREE.Vector3(); + this.hmdQuaternion = new THREE.Quaternion(); + this.magicWindowAbsoluteEuler = new THREE.Euler(); + this.magicWindowDeltaEuler = new THREE.Euler(); + this.position = new THREE.Vector3(); + this.magicWindowObject = new THREE.Object3D(); + this.rotation = {}; + this.deltaRotation = {}; + this.savedPose = null; + this.pointerLocked = false; + this.setupMouseControls(); + this.bindMethods(); + this.previousMouseEvent = {}; + + this.setupMagicWindowControls(); + + // To save / restore camera pose + this.savedPose = { + position: new THREE.Vector3(), + rotation: new THREE.Euler() + }; + + // Call enter VR handler if the scene has entered VR before the event listeners attached. + if (this.el.sceneEl.is('vr-mode')) { this.onEnterVR(); } + }, + + setupMagicWindowControls: function () { + var magicWindowControls; + var data = this.data; + + // Only on mobile devices and only enabled if DeviceOrientation permission has been granted. + if (AFRAME.utils.device.isMobile()) { + magicWindowControls = this.magicWindowControls = new ArjsDeviceOrientationControls(this.magicWindowObject); + if (typeof DeviceOrientationEvent !== 'undefined' && DeviceOrientationEvent.requestPermission) { + magicWindowControls.enabled = false; + if (this.el.sceneEl.components['device-orientation-permission-ui'].permissionGranted) { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + } else { + this.el.sceneEl.addEventListener('deviceorientationpermissiongranted', function () { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + }); + } + } + } + }, + + update: function (oldData) { + var data = this.data; + + // Disable grab cursor classes if no longer enabled. + if (data.enabled !== oldData.enabled) { + this.updateGrabCursor(data.enabled); + } + + // Reset magic window eulers if tracking is disabled. + if (oldData && !data.magicWindowTrackingEnabled && oldData.magicWindowTrackingEnabled) { + this.magicWindowAbsoluteEuler.set(0, 0, 0); + this.magicWindowDeltaEuler.set(0, 0, 0); + } + + // Pass on magic window tracking setting to magicWindowControls. + if (this.magicWindowControls) { + this.magicWindowControls.enabled = data.magicWindowTrackingEnabled; + this.magicWindowControls.smoothingFactor = data.smoothingFactor; + } + + if (oldData && !data.pointerLockEnabled !== oldData.pointerLockEnabled) { + this.removeEventListeners(); + this.addEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + } + }, + + tick: function (t) { + var data = this.data; + if (!data.enabled) { return; } + this.updateOrientation(); + }, + + play: function () { + this.addEventListeners(); + }, + + pause: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + remove: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + bindMethods: function () { + this.onMouseDown = AFRAME.utils.bind(this.onMouseDown, this); + this.onMouseMove = AFRAME.utils.bind(this.onMouseMove, this); + this.onMouseUp = AFRAME.utils.bind(this.onMouseUp, this); + this.onTouchStart = AFRAME.utils.bind(this.onTouchStart, this); + this.onTouchMove = AFRAME.utils.bind(this.onTouchMove, this); + this.onTouchEnd = AFRAME.utils.bind(this.onTouchEnd, this); + this.onEnterVR = AFRAME.utils.bind(this.onEnterVR, this); + this.onExitVR = AFRAME.utils.bind(this.onExitVR, this); + this.onPointerLockChange = AFRAME.utils.bind(this.onPointerLockChange, this); + this.onPointerLockError = AFRAME.utils.bind(this.onPointerLockError, this); + }, + + /** + * Set up states and Object3Ds needed to store rotation data. + */ + setupMouseControls: function () { + this.mouseDown = false; + this.pitchObject = new THREE.Object3D(); + this.yawObject = new THREE.Object3D(); + this.yawObject.position.y = 10; + this.yawObject.add(this.pitchObject); + }, + + /** + * Add mouse and touch event listeners to canvas. + */ + addEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl.canvas; + + // Wait for canvas to load. + if (!canvasEl) { + sceneEl.addEventListener('render-target-loaded', AFRAME.utils.bind(this.addEventListeners, this)); + return; + } + + // Mouse events. + canvasEl.addEventListener('mousedown', this.onMouseDown, false); + window.addEventListener('mousemove', this.onMouseMove, false); + window.addEventListener('mouseup', this.onMouseUp, false); + + // Touch events. + canvasEl.addEventListener('touchstart', this.onTouchStart); + window.addEventListener('touchmove', this.onTouchMove); + window.addEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.addEventListener('enter-vr', this.onEnterVR); + sceneEl.addEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + if (this.data.pointerLockEnabled) { + document.addEventListener('pointerlockchange', this.onPointerLockChange, false); + document.addEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.addEventListener('pointerlockerror', this.onPointerLockError, false); + } + }, + + /** + * Remove mouse and touch event listeners from canvas. + */ + removeEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl && sceneEl.canvas; + + if (!canvasEl) { return; } + + // Mouse events. + canvasEl.removeEventListener('mousedown', this.onMouseDown); + window.removeEventListener('mousemove', this.onMouseMove); + window.removeEventListener('mouseup', this.onMouseUp); + + // Touch events. + canvasEl.removeEventListener('touchstart', this.onTouchStart); + window.removeEventListener('touchmove', this.onTouchMove); + window.removeEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.removeEventListener('enter-vr', this.onEnterVR); + sceneEl.removeEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + document.removeEventListener('pointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('pointerlockerror', this.onPointerLockError, false); + }, + + /** + * Update orientation for mobile, mouse drag, and headset. + * Mouse-drag only enabled if HMD is not active. + */ + updateOrientation: (function () { + var poseMatrix = new THREE.Matrix4(); + + return function () { + var object3D = this.el.object3D; + var pitchObject = this.pitchObject; + var yawObject = this.yawObject; + var pose; + var sceneEl = this.el.sceneEl; + + // In VR mode, THREE is in charge of updating the camera pose. + if (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected()) { + // With WebXR THREE applies headset pose to the object3D matrixWorld internally. + // Reflect values back on position, rotation, scale for getAttribute to return the expected values. + if (sceneEl.hasWebXR) { + pose = sceneEl.renderer.xr.getCameraPose(); + if (pose) { + poseMatrix.elements = pose.transform.matrix; + poseMatrix.decompose(object3D.position, object3D.rotation, object3D.scale); + } + } + return; + } + + this.updateMagicWindowOrientation(); + + // On mobile, do camera rotation with touch events and sensors. + object3D.rotation.x = this.magicWindowDeltaEuler.x + pitchObject.rotation.x; + object3D.rotation.y = this.magicWindowDeltaEuler.y + yawObject.rotation.y; + object3D.rotation.z = this.magicWindowDeltaEuler.z; + }; + })(), + + updateMagicWindowOrientation: function () { + var magicWindowAbsoluteEuler = this.magicWindowAbsoluteEuler; + var magicWindowDeltaEuler = this.magicWindowDeltaEuler; + // Calculate magic window HMD quaternion. + if (this.magicWindowControls && this.magicWindowControls.enabled) { + this.magicWindowControls.update(); + magicWindowAbsoluteEuler.setFromQuaternion(this.magicWindowObject.quaternion, 'YXZ'); + if (!this.previousMagicWindowYaw && magicWindowAbsoluteEuler.y !== 0) { + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + if (this.previousMagicWindowYaw) { + magicWindowDeltaEuler.x = magicWindowAbsoluteEuler.x; + magicWindowDeltaEuler.y += magicWindowAbsoluteEuler.y - this.previousMagicWindowYaw; + magicWindowDeltaEuler.z = magicWindowAbsoluteEuler.z; + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + } + }, + + /** + * Translate mouse drag into rotation. + * + * Dragging up and down rotates the camera around the X-axis (yaw). + * Dragging left and right rotates the camera around the Y-axis (pitch). + */ + onMouseMove: function (evt) { + var direction; + var movementX; + var movementY; + var pitchObject = this.pitchObject; + var previousMouseEvent = this.previousMouseEvent; + var yawObject = this.yawObject; + + // Not dragging or not enabled. + if (!this.data.enabled || (!this.mouseDown && !this.pointerLocked)) { return; } + + // Calculate delta. + if (this.pointerLocked) { + movementX = evt.movementX || evt.mozMovementX || 0; + movementY = evt.movementY || evt.mozMovementY || 0; + } else { + movementX = evt.screenX - previousMouseEvent.screenX; + movementY = evt.screenY - previousMouseEvent.screenY; + } + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + + // Calculate rotation. + direction = this.data.reverseMouseDrag ? 1 : -1; + yawObject.rotation.y += movementX * 0.002 * direction; + pitchObject.rotation.x += movementY * 0.002 * direction; + pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x)); + }, + + /** + * Register mouse down to detect mouse drag. + */ + onMouseDown: function (evt) { + var sceneEl = this.el.sceneEl; + if (!this.data.enabled || (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected())) { return; } + // Handle only primary button. + if (evt.button !== 0) { return; } + + var canvasEl = sceneEl && sceneEl.canvas; + + this.mouseDown = true; + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + this.showGrabbingCursor(); + + if (this.data.pointerLockEnabled && !this.pointerLocked) { + if (canvasEl.requestPointerLock) { + canvasEl.requestPointerLock(); + } else if (canvasEl.mozRequestPointerLock) { + canvasEl.mozRequestPointerLock(); + } + } + }, + + /** + * Shows grabbing cursor on scene + */ + showGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = 'grabbing'; + }, + + /** + * Hides grabbing cursor on scene + */ + hideGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = ''; + }, + + /** + * Register mouse up to detect release of mouse drag. + */ + onMouseUp: function () { + this.mouseDown = false; + this.hideGrabbingCursor(); + }, + + /** + * Register touch down to detect touch drag. + */ + onTouchStart: function (evt) { + if (evt.touches.length !== 1 || + !this.data.touchEnabled || + this.el.sceneEl.is('vr-mode')) { return; } + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + this.touchStarted = true; + }, + + /** + * Translate touch move to Y-axis rotation. + */ + onTouchMove: function (evt) { + var direction; + var canvas = this.el.sceneEl.canvas; + var deltaY; + var yawObject = this.yawObject; + + if (!this.touchStarted || !this.data.touchEnabled) { return; } + + deltaY = 2 * Math.PI * (evt.touches[0].pageX - this.touchStart.x) / canvas.clientWidth; + + direction = this.data.reverseTouchDrag ? 1 : -1; + // Limit touch orientaion to to yaw (y axis). + yawObject.rotation.y -= deltaY * 0.5 * direction; + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + }, + + /** + * Register touch end to detect release of touch drag. + */ + onTouchEnd: function () { + this.touchStarted = false; + }, + + /** + * Save pose. + */ + onEnterVR: function () { + var sceneEl = this.el.sceneEl; + if (!sceneEl.checkHeadsetConnected()) { return; } + this.saveCameraPose(); + this.el.object3D.position.set(0, 0, 0); + this.el.object3D.rotation.set(0, 0, 0); + if (sceneEl.hasWebXR) { + this.el.object3D.matrixAutoUpdate = false; + this.el.object3D.updateMatrix(); + } + }, + + /** + * Restore the pose. + */ + onExitVR: function () { + if (!this.el.sceneEl.checkHeadsetConnected()) { return; } + this.restoreCameraPose(); + this.previousHMDPosition.set(0, 0, 0); + this.el.object3D.matrixAutoUpdate = true; + }, + + /** + * Update Pointer Lock state. + */ + onPointerLockChange: function () { + this.pointerLocked = !!(document.pointerLockElement || document.mozPointerLockElement); + }, + + /** + * Recover from Pointer Lock error. + */ + onPointerLockError: function () { + this.pointerLocked = false; + }, + + // Exits pointer-locked mode. + exitPointerLock: function () { + document.exitPointerLock(); + this.pointerLocked = false; + }, + + /** + * Toggle the feature of showing/hiding the grab cursor. + */ + updateGrabCursor: function (enabled) { + var sceneEl = this.el.sceneEl; + + function enableGrabCursor () { sceneEl.canvas.classList.add('a-grab-cursor'); } + function disableGrabCursor () { sceneEl.canvas.classList.remove('a-grab-cursor'); } + + if (!sceneEl.canvas) { + if (enabled) { + sceneEl.addEventListener('render-target-loaded', enableGrabCursor); + } else { + sceneEl.addEventListener('render-target-loaded', disableGrabCursor); + } + return; + } + + if (enabled) { + enableGrabCursor(); + return; + } + disableGrabCursor(); + }, + + /** + * Save camera pose before entering VR to restore later if exiting. + */ + saveCameraPose: function () { + var el = this.el; + + this.savedPose.position.copy(el.object3D.position); + this.savedPose.rotation.copy(el.object3D.rotation); + this.hasSavedPose = true; + }, + + /** + * Reset camera pose to before entering VR. + */ + restoreCameraPose: function () { + var el = this.el; + var savedPose = this.savedPose; + + if (!this.hasSavedPose) { return; } + + // Reset camera orientation. + el.object3D.position.copy(savedPose.position); + el.object3D.rotation.copy(savedPose.rotation); + this.hasSavedPose = false; + } +}); +AFRAME.registerComponent('arjs-webcam-texture', { + + init: function() { + this.scene = this.el.sceneEl; + this.texCamera = new THREE.OrthographicCamera(-0.5, 0.5, 0.5, -0.5, 0, 10); + this.texScene = new THREE.Scene(); + + this.scene.renderer.autoClear = false; + this.video = document.createElement("video"); + this.video.setAttribute("autoplay", true); + this.video.setAttribute("display", "none"); + document.body.appendChild(this.video); + this.geom = new THREE.PlaneBufferGeometry(); //0.5, 0.5); + this.texture = new THREE.VideoTexture(this.video); + this.material = new THREE.MeshBasicMaterial( { map: this.texture } ); + const mesh = new THREE.Mesh(this.geom, this.material); + this.texScene.add(mesh); + }, + + play: function() { + if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + const constraints = { video: { + facingMode: 'environment' } + }; + navigator.mediaDevices.getUserMedia(constraints).then( stream=> { + this.video.srcObject = stream; + this.video.play(); + }) + .catch(e => { alert(`Webcam error: ${e}`); }); + } else { + alert('sorry - media devices API not supported'); + } + }, + + tick: function() { + this.scene.renderer.clear(); + this.scene.renderer.render(this.texScene, this.texCamera); + this.scene.renderer.clearDepth(); + }, + + pause: function() { + this.video.srcObject.getTracks().forEach ( track => { + track.stop(); + }); + }, + + remove: function() { + this.material.dispose(); + this.texture.dispose(); + this.geom.dispose(); + } +}); +/* + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-camera', { + _watchPositionId: null, + originCoords: null, + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + maxDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 5, + }, + gpsTimeInterval: { + type: 'number', + default: 0, + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function () { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function () { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function () { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function () { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function () { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function () { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function () { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function () { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function (onSuccess, onError) { + if (!onError) { + onError = function (err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function () { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + this.originCoords = this.currentCoords; + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + _setPosition: function () { + var position = this.el.getAttribute('position'); + + // compute position.x + var dstCoords = { + longitude: this.currentCoords.longitude, + latitude: this.originCoords.latitude, + }; + + position.x = this.computeDistanceMeters(this.originCoords, dstCoords); + position.x *= this.currentCoords.longitude > this.originCoords.longitude ? 1 : -1; + + // compute position.z + var dstCoords = { + longitude: this.originCoords.longitude, + latitude: this.currentCoords.latitude, + } + + position.z = this.computeDistanceMeters(this.originCoords, dstCoords); + position.z *= this.currentCoords.latitude > this.originCoords.latitude ? -1 : 1; + + // update position + this.el.setAttribute('position', position); + + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between source and destination inputs. + * + * Calculate distance, bearing and more between Latitude/Longitude points + * Details: https://www.movable-type.co.uk/scripts/latlong.html + * + * @param {Position} src + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function (src, dest, isPlace) { + var distance = this._haversineDist (src, dest); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + // if function has been called for a place, and if it's too far and a max distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.maxDistance && this.data.maxDistance > 0 && distance > this.data.maxDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + + _haversineDist: function (src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function (alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function (event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function () { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); +AFRAME.registerComponent('gps-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-camera]'); + if (!camera.components['gps-camera']) { + console.error('gps-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-camera']; + } + this._updatePosition(); + }; + + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = { + longitude: this.data.longitude, + latitude: this.data.latitude, + }; + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + var distanceForMsg = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + _updatePosition: function() { + var position = { x: 0, y: this.el.getAttribute('position').y || 0, z: 0 } + + // update position.x + var dstCoords = { + longitude: this.data.longitude, + latitude: this._cameraGps.originCoords.latitude, + }; + + position.x = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + this._positionXDebug = position.x; + + position.x *= this.data.longitude > this._cameraGps.originCoords.longitude ? 1 : -1; + + // update position.z + var dstCoords = { + longitude: this._cameraGps.originCoords.longitude, + latitude: this.data.latitude, + }; + + position.z = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + position.z *= this.data.latitude > this._cameraGps.originCoords.latitude ? -1 : 1; + + if (position.y !== 0) { + var altitude = this._cameraGps.originCoords.altitude !== undefined ? this._cameraGps.originCoords.altitude : 0; + position.y = position.y - altitude; + } + + // update element's position in 3D world + this.el.setAttribute('position', position); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; +/** gps-projected-camera + * + * based on the original gps-camera, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original position (lat/lon) is projected into Spherical Mercator and + * stored. + * + * Then, when we receive a new position (lat/lon), this new position is + * projected into Spherical Mercator and then its world position calculated + * by comparing against the original position. + * + * The same is also the case for 'entity-places'; when these are added, their + * Spherical Mercator coords are calculated (see gps-projected-entity-place). + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + * + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-projected-camera', { + _watchPositionId: null, + originCoords: null, // original coords now in Spherical Mercator + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 0 + }, + gpsTimeInterval: { + type: 'number', + default: 0 + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function() { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function() { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function() { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function() { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function() { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function() { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function() { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function() { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function(onSuccess, onError) { + if (!onError) { + onError = function(err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function() { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + // Now store originCoords as PROJECTED original lat/lon, so that + // we can set the world origin to the original position in "metres" + this.originCoords = this._project(this.currentCoords.latitude, this.currentCoords.longitude); + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + /** + * Set the current position (in world coords, based on Spherical Mercator) + * + * @returns {void} + */ + _setPosition: function() { + var position = this.el.getAttribute('position'); + + var worldCoords = this.latLonToWorld(this.currentCoords.latitude, this.currentCoords.longitude); + + position.x = worldCoords[0]; + position.z = worldCoords[1]; + + // update position + this.el.setAttribute('position', position); + + // add the sphmerc position to the event (for testing only) + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between camera and destination input. + * + * Assume we are using a metre-based projection. Not all 'metre-based' + * projections give exact metres, e.g. Spherical Mercator, but it appears + * close enough to be used for AR at least in middle temperate + * latitudes (40 - 55). It is heavily distorted near the poles, however. + * + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function(dest, isPlace) { + var src = this.el.getAttribute("position"); + var dx = dest.x - src.x; + var dz = dest.z - src.z; + var distance = Math.sqrt(dx * dx + dz * dz); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the method caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + /** + * Converts latitude/longitude to OpenGL world coordinates. + * + * First projects lat/lon to absolute Spherical Mercator and then + * calculates the world coordinates by comparing the Spherical Mercator + * coordinates with the Spherical Mercator coordinates of the origin point. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} world coordinates + */ + latLonToWorld: function(lat, lon) { + var projected = this._project(lat, lon); + // Sign of z needs to be reversed compared to projected coordinates + return [projected[0] - this.originCoords[0], -(projected[1] - this.originCoords[1])]; + }, + /** + * Converts latitude/longitude to Spherical Mercator coordinates. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} Spherical Mercator coordinates + */ + _project: function(lat, lon) { + const HALF_EARTH = 20037508.34; + + // Convert the supplied coords to Spherical Mercator (EPSG:3857), also + // known as 'Google Projection', using the algorithm used extensively + // in various OpenStreetMap software. + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); + return [(lon / 180.0) * HALF_EARTH, y * HALF_EARTH / 180.0]; + }, + /** + * Converts Spherical Mercator coordinates to latitude/longitude. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} spherical mercator easting + * @param {Number} spherical mercator northing + * + * @returns {object} lon/lat + */ + _unproject: function(e, n) { + const HALF_EARTH = 20037508.34; + var yp = (n / HALF_EARTH) * 180.0; + return { + longitude: (e / HALF_EARTH) * 180.0, + latitude: 180.0 / Math.PI * (2 * Math.atan(Math.exp(yp * Math.PI / 180.0)) - Math.PI / 2) + }; + }, + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function(alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function(event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function() { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + /** + * Calculate haversine distance between two lat/lon pairs. + * + * Taken from gps-camera + */ + _haversineDist: function(src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); + +/** gps-projected-entity-place + * + * based on the original gps-entity-place, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original location on startup (lat/lon) is projected into Spherical + * Mercator and stored. + * + * When 'entity-places' are added, their Spherical Mercator coords are + * calculated and converted into world coordinates, relative to the original + * position, using the Spherical Mercator projection calculation in + * gps-projected-camera. + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + */ +AFRAME.registerComponent('gps-projected-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + // Used now to get the GPS camera when it's been setup + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-projected-camera']; + this._updatePosition(); + } + }; + + + + // update position needs to worry about distance but nothing else? + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = this.el.getAttribute('position'); + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + // _computeDistanceMeters is now going to use the projected + var distanceForMsg = this._cameraGps.computeDistanceMeters(dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + // Retain as this event is fired when the GPS camera is set up + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + + // set position to world coords using the lat/lon + _updatePosition: function() { + var worldPos = this._cameraGps.latLonToWorld(this.data.latitude, this.data.longitude); + var position = this.el.getAttribute('position'); + + // update element's position in 3D world + //this.el.setAttribute('position', position); + this.el.setAttribute('position', { + x: worldPos[0], + y: position.y, + z: worldPos[1] + }); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; diff --git a/demo/ar/aframe/build/aframe-ar-nft.js b/demo/ar/aframe/build/aframe-ar-nft.js new file mode 100644 index 0000000..44fe00a --- /dev/null +++ b/demo/ar/aframe/build/aframe-ar-nft.js @@ -0,0 +1,6057 @@ + +var Module=typeof Module!=="undefined"?Module:{};(function(){"use strict";var scope;if(typeof window!=="undefined"){scope=window}else{scope=self}if(scope.artoolkit_wasm_url){var downloadWasm=function(url){return new Promise(function(resolve,reject){var wasmXHR=new XMLHttpRequest;wasmXHR.open("GET",url,true);wasmXHR.responseType="arraybuffer";wasmXHR.onload=function(){resolve(wasmXHR.response)};wasmXHR.onerror=function(){reject("error "+wasmXHR.status)};wasmXHR.send(null)})};var wasm=downloadWasm(scope.artoolkit_wasm_url);Module.instantiateWasm=function(imports,successCallback){console.log("instantiateWasm: instantiating synchronously");wasm.then(function(wasmBinary){console.log("wasm download finished, begin instantiating");var wasmInstantiate=WebAssembly.instantiate(new Uint8Array(wasmBinary),imports).then(function(output){console.log("wasm instantiation succeeded");successCallback(output.instance)}).catch(function(e){console.log("wasm instantiation failed! "+e)})});return{}}}var ARController=function(width,height,cameraPara){this.id=undefined;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;cameraPara=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.width=w;this.height=h;this.nftMarkerCount=0;this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.nftMarkers={};this.transform_mat=new Float32Array(16);this.transformGL_RH=new Float64Array(16);if(typeof document!=="undefined"){this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d")}this.videoWidth=w;this.videoHeight=h;this.videoSize=this.videoWidth*this.videoHeight;this.framepointer=null;this.framesize=null;this.dataHeap=null;this.videoLuma=null;this.camera_mat=null;this.marker_transform_mat=null;this.videoLumaPointer=null;this._bwpointer=undefined;this._lumaCtx=undefined;if(typeof cameraPara==="string"){this.cameraParam=new ARCameraParam(cameraPara,function(){this._initialize()}.bind(this),function(err){console.error("ARController: Failed to load ARCameraParam",err);this.onload(err)}.bind(this))}else{this.cameraParam=cameraPara;this._initialize()}};ARController.prototype.dispose=function(){if(this.id>-1){artoolkit.teardown(this.id)}if(this.image&&this.image.srcObject){ARController._teardownVideo(this.image)}for(var t in this){this[t]=null}};ARController.prototype.process=function(image){var result=this.detectMarker(image);if(result!=0){console.error("detectMarker error: "+result)}var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.nftMarkers){o=this.nftMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var nftMarkerCount=this.nftMarkerCount;this.detectNFTMarker();var MARKER_LOST_TIME=200;for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i>3;q+=4}}if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(){if(readyToPlay){video.play().then(function(){onSuccess(video)}).catch(function(error){onError(error);ARController._teardownVideo(video)});if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){if(window.URL.createObjectURL){try{video.srcObject=stream}catch(ex){}}video.srcObject=stream;readyToPlay=true;video.autoplay=true;video.playsInline=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.min}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.min}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;mediaDevicesConstraints.deviceId=configuration.deviceId;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:constraints};if(navigator.mediaDevices||window.MediaStreamTrack.getSources){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{window.MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback,errorCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=57888,DYNAMIC_BASE=5300768,DYNAMICTOP_PTR=57696;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;if(Module["buffer"]){buffer=Module["buffer"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw what}var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;var ASM_CONSTS=[function($0,$1,$2,$3,$4,$5){if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4;frameMalloc["videoLumaPointer"]=$5},function($0,$1,$2,$3){if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=$a[i++];markerInfo["found"]=1;markerInfo["pose"][0]=$a[i++];markerInfo["pose"][1]=$a[i++];markerInfo["pose"][2]=$a[i++];markerInfo["pose"][3]=$a[i++];markerInfo["pose"][4]=$a[i++];markerInfo["pose"][5]=$a[i++];markerInfo["pose"][6]=$a[i++];markerInfo["pose"][7]=$a[i++];markerInfo["pose"][8]=$a[i++];markerInfo["pose"][9]=$a[i++];markerInfo["pose"][10]=$a[i++];markerInfo["pose"][11]=$a[i++]},function($0){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=-1;markerInfo["found"]=0;markerInfo["pose"][0]=0;markerInfo["pose"][1]=0;markerInfo["pose"][2]=0;markerInfo["pose"][3]=0;markerInfo["pose"][4]=0;markerInfo["pose"][5]=0;markerInfo["pose"][6]=0;markerInfo["pose"][7]=0;markerInfo["pose"][8]=0;markerInfo["pose"][9]=0;markerInfo["pose"][10]=0;markerInfo["pose"][11]=0}];function _emscripten_asm_const_iiiiiii(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiddddddddddddd(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _emscripten_asm_const_iiiiiiiidddddddddddddddddddddddddi(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}__ATINIT__.push({func:function(){__GLOBAL__I_000101()}},{func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){___emscripten_environ_constructor()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}},{func:function(){__GLOBAL__sub_I_iostream_cpp()}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACKTQAAkU0AAJ1NAACnTQAAtU0AAAAAAAAAAAAAAAAAAP//////////AAAAAAEAAAABAAAAAQAAAAAAAAD/////AAAAAAEAAAABAAAAAQAAAAAAAAD///////////////8AAAABAAEBAQACBP//BQMBAAL/Bgf/AwECAgMCAwIDAwD/BAYHBf8BBAUEBAUFBAUHBgYGBwcHBv8CBAYHBQP/AAEBAQEBAQABAQEAAAEBAQEBAAEBAAEBAQABAQEBAAEBAAEBAQEAAQEBAAEBAAEBAQEBAAABAQEAAQEBAQEBAAD//wP/BQb//wkK/wz//w//ERL/FP//Fxj//xv/HR7//wEC/wT//wcI//8L/w0O/xD//xP/FRb//xka/xz//x8BAAAAAgAAAAQAAAAIAAAAEAAAAAUAAAAKAAAAFAAAAA0AAAAaAAAAEQAAAAcAAAAOAAAAHAAAAB0AAAAfAAAAGwAAABMAAAADAAAABgAAAAwAAAAYAAAAFQAAAA8AAAAeAAAAGQAAABcAAAALAAAAFgAAAAkAAAASAAAAAAAAAAEAAAACAAAABAAAAAgAAAADAAAABgAAAAwAAAALAAAABQAAAAoAAAAHAAAADgAAAA8AAAANAAAACQAAAAAAAAD/////AAAAAAEAAAASAAAAAgAAAAUAAAATAAAACwAAAAMAAAAdAAAABgAAABsAAAAUAAAACAAAAAwAAAAXAAAABAAAAAoAAAAeAAAAEQAAAAcAAAAWAAAAHAAAABoAAAAVAAAAGQAAAAkAAAAQAAAADQAAAA4AAAAYAAAADwAAAP////8AAAAAAQAAAAQAAAACAAAACAAAAAUAAAAKAAAAAwAAAA4AAAAJAAAABwAAAAYAAAANAAAACwAAAAwAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAAwAAAAYAAAAMAAAAGAAAADAAAABgAAAAQwAAAAUAAAAKAAAAFAAAACgAAABQAAAAIwAAAEYAAAAPAAAAHgAAADwAAAB4AAAAcwAAAGUAAABJAAAAEQAAACIAAABEAAAACwAAABYAAAAsAAAAWAAAADMAAABmAAAATwAAAB0AAAA6AAAAdAAAAGsAAABVAAAAKQAAAFIAAAAnAAAATgAAAB8AAAA+AAAAfAAAAHsAAAB1AAAAaQAAAFEAAAAhAAAAQgAAAAcAAAAOAAAAHAAAADgAAABwAAAAYwAAAEUAAAAJAAAAEgAAACQAAABIAAAAEwAAACYAAABMAAAAGwAAADYAAABsAAAAWwAAADUAAABqAAAAVwAAAC0AAABaAAAANwAAAG4AAABfAAAAPQAAAHoAAAB3AAAAbQAAAFkAAAAxAAAAYgAAAEcAAAANAAAAGgAAADQAAABoAAAAUwAAACUAAABKAAAAFwAAAC4AAABcAAAAOwAAAHYAAABvAAAAXQAAADkAAAByAAAAZwAAAE0AAAAZAAAAMgAAAGQAAABLAAAAFQAAACoAAABUAAAAKwAAAFYAAAAvAAAAXgAAAD8AAAB+AAAAfwAAAH0AAAB5AAAAcQAAAGEAAABBAAAAAAAAAP////8AAAAAAQAAAAcAAAACAAAADgAAAAgAAAA4AAAAAwAAAD8AAAAPAAAAHwAAAAkAAABaAAAAOQAAABUAAAAEAAAAHAAAAEAAAABDAAAAEAAAAHAAAAAgAAAAYQAAAAoAAABsAAAAWwAAAEYAAAA6AAAAJgAAABYAAAAvAAAABQAAADYAAAAdAAAAEwAAAEEAAABfAAAARAAAAC0AAAARAAAAKwAAAHEAAABzAAAAIQAAAE0AAABiAAAAdQAAAAsAAABXAAAAbQAAACMAAABcAAAASgAAAEcAAABPAAAAOwAAAGgAAAAnAAAAZAAAABcAAABSAAAAMAAAAHcAAAAGAAAAfgAAADcAAAANAAAAHgAAAD4AAAAUAAAAWQAAAEIAAAAbAAAAYAAAAG8AAABFAAAAawAAAC4AAAAlAAAAEgAAADUAAAAsAAAAXgAAAHIAAAAqAAAAdAAAAEwAAAAiAAAAVgAAAE4AAABJAAAAYwAAAGcAAAB2AAAAUQAAAAwAAAB9AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAABAAAAIgAAAAFAAAAkAAAAAYAAACYAAAACQAAALAAAAA3VAAAPVQAAEJUAABKVAAAAAAAALK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/ADcAAAA3AAAANwAAADcAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAMAAAAKAAAAEQAAABgAAAAgAAAAGQAAABIAAAALAAAABAAAAAUAAAAMAAAAEwAAABoAAAAhAAAAKAAAADAAAAApAAAAIgAAABsAAAAUAAAADQAAAAYAAAAHAAAADgAAABUAAAAcAAAAIwAAACoAAAAxAAAAOAAAADkAAAAyAAAAKwAAACQAAAAdAAAAFgAAAA8AAAAXAAAAHgAAACUAAAAsAAAAMwAAADoAAAA7AAAANAAAAC0AAAAmAAAAHwAAACcAAAAuAAAANQAAADwAAAA9AAAANgAAAC8AAAA3AAAAPgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAABQAAAAwAAAATAAAAGgAAACEAAAAoAAAAMAAAACkAAAAiAAAAGwAAABQAAAANAAAABgAAAA4AAAAVAAAAHAAAACMAAAAqAAAAMQAAADIAAAArAAAAJAAAAB0AAAAWAAAAHgAAACUAAAAsAAAAMwAAADQAAAAtAAAAJgAAAC4AAAA1AAAANgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAIAAAABkAAAASAAAACwAAAAQAAAAFAAAADAAAABMAAAAaAAAAIQAAACgAAAApAAAAIgAAABsAAAAUAAAADQAAABUAAAAcAAAAIwAAACoAAAArAAAAJAAAAB0AAAAlAAAALAAAAC0AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAADAAAABMAAAAaAAAAIQAAACIAAAAbAAAAFAAAABwAAAAjAAAAJAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAJAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAIEBHVoOAoYlEAMUERIECwgUBdgDFwbaARkH5QAcCG8AHgk2ACEKGgAjCw0ACQwGAAoNAwAMDQEAjw9/WiQQJT8mEfIsJxJ8ICgTuRcqFIIRKxXvDC0WoQkuFy8HMBhcBTEZBgQzGgMDNBtAAjYcsQE4HUQBOR71ADsftwA8IIoAPiFoAD8iTgAgIzsAIQksAKUl4VpAJkxIQScNOkMo8S5EKR8mRSozH0YrqBlILBgVSS13EUoudA5LL/sLTTD4CU4xYQhPMgYHMDPNBTI03gQyNQ8EMzZjAzQ31AI1OFwCNjn4ATc6pAE4O2ABOTwlATo99gA7PssAPT+rAD0gjwDBQRJbUEIETVFDLEFSRNg3U0XoL1RGPClWR3kjV0jfHldJqRpISk4XSEskFEpMnBFKTWsPS05RDU1PtgtNMEAK0FEyWFhSHE1ZU45DWlTdO1tV7jRcVq4uXVeaKVZHFiXYWXBVX1qpTGBb2URhXCI+Y10kOGNetDJdVhcu32CoVmVhRk9mYuVHZ2PPQWhkPTxjXV43aWYxUmpnD0xraDlGZ2NeQelqJ1Zsa+dQbWeFS25tl1Vva09Q7m8QWnBtIlXwb+tZcXEdWgAAAAAAAAAA1aMAAOujAAALpAAAMKQAAEqkAABppAAAfqQAAJukAADFpAAABaUAACSlAAA7pQAAUaUAAGWlAACipQAA0qUAAO6lAAARpgAASKYAAH+mAACWpgAAtqYAAOCmAAAtpwAASKcAAHOnAACPpwAAtKcAANqnAAD/pwAAEqgAACeoAAA6qAAATagAAHKoAACHqAAAm6gAALyoAADSqAAAAakAACmpAABKqQAAa6kAAJqpAACrqQAAx6kAAAWqAAAsqgAAU6oAAGeqAACVqgAAvaoAANmqAAD+qgAAIKsAAEqrAAB1qwAAk6sAAMGrAADpqwAAEKwAADusAABorAAAmKwAAMKsAADvrAAAEq0AADCtAABOrQAAhK0AAK6tAADNrQAA8K0AABeuAAAsrgAAQK4AAHWuAACFrgAAw64AAAWvAAAvrwAAW68AAIKvAACerwAAya8AAOSvAAD4rwAAD7AAABywAABEsAAAebAAALWwAADjsAAABLEAACuxAABEsQAAbLEAAI+xAACnsQAAy7EAAPCxAAD2sQAAL7IAAGmyAACIsgAAl7IAALSyAADSsgAA77IAAAizAAAhswAAY7MAAJ2zAADTswAAB7QAABu0AAAytAAAWLQAAH+0AADBtAAA/bQAAC61AABStQAAgLUAAJu1AADTtQAA/rUAAAAAAAAAAAAAAQAAAAIAAAADAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAAGAAAAAwAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAAIAAAAEAAAABwAAAAwAAAADAAAACAAAAAsAAAANAAAACQAAAAoAAAAOAAAADwAAAAAAAAABAAAABQAAAAYAAAAOAAAAAgAAAAQAAAAHAAAADQAAAA8AAAADAAAACAAAAAwAAAAQAAAAFQAAAAkAAAALAAAAEQAAABQAAAAWAAAACgAAABIAAAATAAAAFwAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAACAAAABAAAAAcAAAANAAAAEAAAABkAAAADAAAACAAAAAwAAAARAAAAGAAAABoAAAAJAAAACwAAABIAAAAXAAAAGwAAACAAAAAKAAAAEwAAABYAAAAcAAAAHwAAACEAAAAUAAAAFQAAAB0AAAAeAAAAIgAAACMAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAAbAAAAAgAAAAQAAAAHAAAADQAAABAAAAAaAAAAHAAAAAMAAAAIAAAADAAAABEAAAAZAAAAHQAAACYAAAAJAAAACwAAABIAAAAYAAAAHgAAACUAAAAnAAAACgAAABMAAAAXAAAAHwAAACQAAAAoAAAALQAAABQAAAAWAAAAIAAAACMAAAApAAAALAAAAC4AAAAVAAAAIQAAACIAAAAqAAAAKwAAAC8AAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAA4AAAAPAAAAGwAAABwAAAACAAAABAAAAAcAAAANAAAAEAAAABoAAAAdAAAAKgAAAAMAAAAIAAAADAAAABEAAAAZAAAAHgAAACkAAAArAAAACQAAAAsAAAASAAAAGAAAAB8AAAAoAAAALAAAADUAAAAKAAAAEwAAABcAAAAgAAAAJwAAAC0AAAA0AAAANgAAABQAAAAWAAAAIQAAACYAAAAuAAAAMwAAADcAAAA8AAAAFQAAACIAAAAlAAAALwAAADIAAAA4AAAAOwAAAD0AAAAjAAAAJAAAADAAAAAxAAAAOQAAADoAAAA+AAAAPwAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAAAQMVYn1NCSwBASTKjIqgRxVghe/xzYmjFWL9FCzB+GJ9T/HNBbVRin1OzQUEtEhdCS2JoVGJ+WEJLITu6KMMUAEDFWJ9TQksAQEkyoyKoEUkyv0WzQSE7STKCJzcb4A2jIgswQS26KKMiNxu/Eo4JqBF+GBIXwxSoEeANjgnfBAAAAAAAAPA/72FIsVAx9j/Kb02Rruf0P6oRbO9i0PI/AAAAAAAA8D87v6fAaSTpP7sgx3t6UeE/Xaty3lWo0T8AwDDwDMw8/APDM/MPzz//gECwcIxMvHyDQ7Nzj0+/fyDgENAs7BzcI+MT0y/vH9+gYJBQrGycXKNjk1Ovb59fCMg4+ATENPQLyzv7B8c394hIuHiERLR0i0u7e4dHt3co6BjYJOQU1CvrG9sn5xfXqGiYWKRklFSra5tbp2eXVwLCMvIOzj7+AcEx8Q3NPf2CQrJyjk6+foFBsXGNTb19IuIS0i7uHt4h4RHRLe0d3aJiklKubp5eoWGRUa1tnV0Kyjr6BsY29gnJOfkFxTX1ikq6eoZGtnaJSbl5hUW1dSrqGtom5hbWKekZ2SXlFdWqappapmaWVqlpmVmlZZVV3hIElQAAAAD///////////////8AAAAAAAAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNMAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAyACIAIgAiACIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAFgBMAEwATABMAEwATABMAEwATABMAEwATABMAEwATACNgI2AjYCNgI2AjYCNgI2AjYCNgEwATABMAEwATABMAEwAjVCNUI1QjVCNUI1QjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUEwATABMAEwATABMAI1gjWCNYI1gjWCNYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGBMAEwATABMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAAAAAAAAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAAAAAAAAAAAAAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAAAAAAAAAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAApD8AABVdAADMPwAAiWkAAIAzAAAAAAAAzD8AAHRsAAA4NgAAAAAAAMw/AAAjdwAAGD0AAAAAAADMPwAAi4cAABg9AAAAAAAAzD8AAP+HAAAYPQAAAAAAADhAAADlngAAAAAAAAEAAADwMwAAAAAAAKQ/AAAknwAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAABG4QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAIyQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAYzQAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApD8AAEe3AADMPwAAp7cAAFA2AAAAAAAAzD8AAFS3AABgNgAAAAAAAKQ/AAB1twAAzD8AAIK3AABANgAAAAAAAMw/AADxtwAAODYAAAAAAADMPwAAAbgAAHg2AAAAAAAAzD8AABK4AABQNgAAAAAAAMw/AAA0uAAAmDYAAAAAAADMPwAAWLgAAFA2AAAAAAAAHEAAAIC4AAAcQAAAgrgAABxAAACEuAAAHEAAAIa4AAAcQAAAiLgAABxAAACKuAAAHEAAAIy4AAAcQAAAjrgAABxAAACQuAAAHEAAAA3BAAAcQAAAkrgAABxAAACUuAAAHEAAAJa4AADMPwAAmLgAAEA2AAAAAAAApD8AANu7AACkPwAA+rsAAKQ/AAAZvAAApD8AADi8AACkPwAAV7wAAKQ/AAB2vAAApD8AAJW8AACkPwAAtLwAAKQ/AADTvAAApD8AAPK8AACkPwAAEb0AAKQ/AAAwvQAApD8AAE+9AAA4QAAAYr0AAAAAAAABAAAA8DMAAAAAAAA4QAAAob0AAAAAAAABAAAA8DMAAAAAAADMPwAA8r0AAOg3AAAAAAAApD8AAOC9AADMPwAAHL4AAOg3AAAAAAAApD8AAEa+AACkPwAAd74AADhAAACovgAAAAAAAAEAAADYNwAAA/T//zhAAADXvgAAAAAAAAEAAADwNwAAA/T//zhAAAAGvwAAAAAAAAEAAADYNwAAA/T//zhAAAA1vwAAAAAAAAEAAADwNwAAA/T//8w/AABkvwAACDgAAAAAAADMPwAAfb8AAAA4AAAAAAAAzD8AALy/AAAIOAAAAAAAAMw/AADUvwAAADgAAAAAAADMPwAA7L8AAMA4AAAAAAAAzD8AAADAAAAQPQAAAAAAAMw/AAAWwAAAwDgAAAAAAAA4QAAAL8AAAAAAAAACAAAAwDgAAAIAAAAAOQAAAAAAADhAAABzwAAAAAAAAAEAAAAYOQAAAAAAAKQ/AACJwAAAOEAAAKLAAAAAAAAAAgAAAMA4AAACAAAAQDkAAAAAAAA4QAAA5sAAAAAAAAABAAAAGDkAAAAAAAA4QAAAD8EAAAAAAAACAAAAwDgAAAIAAAB4OQAAAAAAADhAAABTwQAAAAAAAAEAAACQOQAAAAAAAKQ/AABpwQAAOEAAAILBAAAAAAAAAgAAAMA4AAACAAAAuDkAAAAAAAA4QAAAxsEAAAAAAAABAAAAkDkAAAAAAAA4QAAAHMMAAAAAAAADAAAAwDgAAAIAAAD4OQAAAgAAAAA6AAAACAAApD8AAIPDAACkPwAAYcMAADhAAACWwwAAAAAAAAMAAADAOAAAAgAAAPg5AAACAAAAMDoAAAAIAACkPwAA28MAADhAAAD9wwAAAAAAAAIAAADAOAAAAgAAAFg6AAAACAAApD8AAELEAAA4QAAAV8QAAAAAAAACAAAAwDgAAAIAAABYOgAAAAgAADhAAACcxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAApD8AALjEAAA4QAAAzcQAAAAAAAACAAAAwDgAAAIAAACgOgAAAgAAADhAAADpxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAAOEAAAAXFAAAAAAAAAgAAAMA4AAACAAAAoDoAAAIAAAA4QAAAMMUAAAAAAAACAAAAwDgAAAIAAAAoOwAAAAAAAKQ/AAB2xQAAOEAAAJrFAAAAAAAAAgAAAMA4AAACAAAAUDsAAAAAAACkPwAA4MUAADhAAAD/xQAAAAAAAAIAAADAOAAAAgAAAHg7AAAAAAAApD8AAEXGAAA4QAAAXsYAAAAAAAACAAAAwDgAAAIAAACgOwAAAAAAAKQ/AACkxgAAOEAAAL3GAAAAAAAAAgAAAMA4AAACAAAAyDsAAAIAAACkPwAA0sYAADhAAABpxwAAAAAAAAIAAADAOAAAAgAAAMg7AAACAAAAzD8AAOrGAAAAPAAAAAAAADhAAAANxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAApD8AADDHAADMPwAAR8cAAAA8AAAAAAAAOEAAAH7HAAAAAAAAAgAAAMA4AAACAAAAIDwAAAIAAAA4QAAAoMcAAAAAAAACAAAAwDgAAAIAAAAgPAAAAgAAADhAAADCxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAAzD8AAOXHAADAOAAAAAAAADhAAAD7xwAAAAAAAAIAAADAOAAAAgAAAMg8AAACAAAApD8AAA3IAAA4QAAAIsgAAAAAAAACAAAAwDgAAAIAAADIPAAAAgAAAMw/AAA/yAAAwDgAAAAAAADMPwAAVMgAAMA4AAAAAAAApD8AAGnIAAA4QAAAgsgAAAAAAAABAAAAED0AAAAAAAABAAAAAAAAAIgzAAABAAAAAgAAAAAAAACAMwAAAwAAAAQAAAAAAAAAmDMAAAUAAAAGAAAAAQAAALlSjD6OWuc+uVKMPgAAAACoMwAABwAAAAgAAAAJAAAAAQAAAAoAAAAAAAAAuDMAAAcAAAALAAAADAAAAAIAAAANAAAAAAAAAMgzAAAHAAAADgAAAA8AAAADAAAAEAAAAP/////+/////f///8g2AAAANwAAIDcAAMg2AAAANwAAADcAACg3AAAANwAAyDYAAAA3AAAoNwAAADcAAMg2AAAANwAAADcAANgzAAAANwAAADcAAAA3AAAANwAAADcAANgzAAAANwAAADcAAAEAAAAAAAAAAgAAAEAGAACAPgAAAAAAAIgTAABAFgAAFAAAAEMuVVRGLTgAAAAAAAAAAAAAAAAAUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA+DMAAIg0AAAYNQAAGDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGwAAIB8AACAlAABfcIkA/wkvDwAAAABANgAAEQAAABIAAAATAAAAFAAAAAQAAAABAAAAAQAAAAEAAAAAAAAAaDYAABEAAAAVAAAAEwAAABQAAAAEAAAAAgAAAAIAAAACAAAAAAAAAHg2AAAWAAAAFwAAAAQAAAAAAAAAiDYAABYAAAAYAAAABAAAAAAAAAC4NgAAEQAAABkAAAATAAAAFAAAAAUAAAAAAAAAMDcAABEAAAAaAAAAEwAAABQAAAAEAAAAAwAAAAMAAAADAAAAAAAAAOg3AAAbAAAAHAAAAAAAAAAAOAAAHQAAAB4AAAABAAAABgAAAAQAAAAEAAAABQAAAAYAAAAHAAAABwAAAAgAAAAEAAAACAAAAAUAAAAAAAAACDgAAB8AAAAgAAAAAgAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAAsAAAAMAAAABgAAAAsAAAAHAAAACAAAAAAAAAAQOAAAIQAAACIAAAD4////+P///xA4AAAjAAAAJAAAAPRAAAAIQQAACAAAAAAAAAAoOAAAJQAAACYAAAD4////+P///yg4AAAnAAAAKAAAACRBAAA4QQAABAAAAAAAAABAOAAAKQAAACoAAAD8/////P///0A4AAArAAAALAAAAFRBAABoQQAABAAAAAAAAABYOAAALQAAAC4AAAD8/////P///1g4AAAvAAAAMAAAAIRBAACYQQAAAAAAAHA4AAAfAAAAMQAAAAMAAAAJAAAABQAAAAUAAAANAAAACgAAAAoAAAALAAAADAAAAAYAAAAMAAAACAAAAAAAAACAOAAAHQAAADIAAAAEAAAABgAAAAQAAAAEAAAADgAAAAYAAAAHAAAABwAAAAgAAAAEAAAADQAAAAkAAAAAAAAAkDgAAB8AAAAzAAAABQAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAA8AAAAQAAAACgAAAAsAAAAHAAAAAAAAAKA4AAAdAAAANAAAAAYAAAAGAAAABAAAAAQAAAAFAAAABgAAAAcAAAARAAAAEgAAAAsAAAAIAAAABQAAAAAAAACwOAAANQAAADYAAAA3AAAAAQAAAAYAAAAOAAAAAAAAANA4AAA4AAAAOQAAADcAAAACAAAABwAAAA8AAAAAAAAA4DgAADoAAAA7AAAANwAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAACA5AAA8AAAAPQAAADcAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAAAAAABYOQAAPgAAAD8AAAA3AAAAAwAAAAQAAAAXAAAABQAAABgAAAABAAAAAgAAAAYAAAAAAAAAmDkAAEAAAABBAAAANwAAAAcAAAAIAAAAGQAAAAkAAAAaAAAAAwAAAAQAAAAKAAAAAAAAANA5AABCAAAAQwAAADcAAAATAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAAA+P///9A5AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAAAAAAAg6AABEAAAARQAAADcAAAAbAAAAIAAAACEAAAAiAAAAIwAAACQAAAACAAAA+P///wg6AAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAAAAAAAAODoAAEYAAABHAAAANwAAAAEAAAAAAAAAYDoAAEgAAABJAAAANwAAAAIAAAAAAAAAgDoAAEoAAABLAAAANwAAACMAAAAkAAAABwAAAAgAAAAJAAAACgAAACUAAAALAAAADAAAAAAAAACoOgAATAAAAE0AAAA3AAAAJgAAACcAAAANAAAADgAAAA8AAAAQAAAAKAAAABEAAAASAAAAAAAAAMg6AABOAAAATwAAADcAAAApAAAAKgAAABMAAAAUAAAAFQAAABYAAAArAAAAFwAAABgAAAAAAAAA6DoAAFAAAABRAAAANwAAACwAAAAtAAAAGQAAABoAAAAbAAAAHAAAAC4AAAAdAAAAHgAAAAAAAAAIOwAAUgAAAFMAAAA3AAAAAwAAAAQAAAAAAAAAMDsAAFQAAABVAAAANwAAAAUAAAAGAAAAAAAAAFg7AABWAAAAVwAAADcAAAABAAAAJQAAAAAAAACAOwAAWAAAAFkAAAA3AAAAAgAAACYAAAAAAAAAqDsAAFoAAABbAAAANwAAABAAAAAGAAAAHwAAAAAAAADQOwAAXAAAAF0AAAA3AAAAEQAAAAcAAAAgAAAAAAAAACg8AABeAAAAXwAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAPA7AABeAAAAYAAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAFg8AABhAAAAYgAAADcAAAAFAAAABgAAAA0AAAAyAAAAMwAAAA4AAAA0AAAAAAAAAJg8AABjAAAAZAAAADcAAAAAAAAAqDwAAGUAAABmAAAANwAAAAwAAAASAAAADQAAABMAAAAOAAAAAwAAABQAAAAPAAAAAAAAAPA8AABnAAAAaAAAADcAAAA1AAAANgAAACEAAAAiAAAAIwAAAAAAAAAAPQAAaQAAAGoAAAA3AAAANwAAADgAAAAkAAAAJQAAACYAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAB0AAAAcgAAAHUAAABlAAAAAAAAAAAAAADAOAAAXgAAAGsAAAA3AAAAAAAAANA8AABeAAAAbAAAADcAAAAVAAAABAAAAAUAAAAGAAAADwAAABYAAAAQAAAAFwAAABEAAAAHAAAAGAAAABAAAAAAAAAAODwAAF4AAABtAAAANwAAAAcAAAAIAAAAEQAAADkAAAA6AAAAEgAAADsAAAAAAAAAeDwAAF4AAABuAAAANwAAAAkAAAAKAAAAEwAAADwAAAA9AAAAFAAAAD4AAAAAAAAAADwAAF4AAABvAAAANwAAAAMAAAAEAAAACwAAAC8AAAAwAAAADAAAADEAAAAAAAAAADoAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAAAAAAMDoAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABFcnJvcjogbGFiZWxpbmcgd29yayBvdmVyZmxvdy4KAFVua25vd24gb3IgdW5zdXBwb3J0ZWQgbGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgcmVxdWVzdGVkLiBTZXQgdG8gbWFudWFsLgoATGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgc2V0IHRvICVzLgoATUFOVUFMAEFVVE9fTUVESUFOAEFVVE9fT1RTVQBBVVRPX0FEQVBUSVZFAEFVVE9fQlJBQ0tFVElORwBFcnJvcjogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICglZCkgcmVxdWVzdGVkLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIG1hcmtlciBjb3VudHMgLVslM2Q6ICUzZF0gWyUzZDogJTNkXSBbJTNkOiAlM2RdKy4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgBtZWRpYW4AT3RzdQBBdXRvIHRocmVzaG9sZCAoJXMpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAD8/PyAxCgA/Pz8gMgoAPz8/IDMKAEVycm9yOiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARXJyb3I6IGNhbid0IGxvYWQgcGF0dGVybiBmcm9tIE5VTEwgYnVmZmVyLgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgAgCQoNAFBhdHRlcm4gRGF0YSByZWFkIGVycm9yISEKAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgbGVuZ3RoLgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAEVycm9yICglZCk6IHVuYWJsZSB0byByZWFkIGZyb20gZmlsZS4AYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAEVycm9yOiBpY3BHZXRKX1VfWGMARXJyb3IgMTogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDY6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNzogaWNwR2V0SW5pdFh3MlhjCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogRmlyc3QgbGluZSBtdXN0IGJlIG51bWJlciBvZiBtYXJrZXIgY29uZmlncyB0byByZWFkLgoAJWxsdSVjAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGRpcmVjdG9yeSBuYW1lLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gbG9hZCBwYXR0ZXJuICclcycuCgAlbGYARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IEZpcnN0IGxpbmUgbXVzdCBiZSBwYXR0ZXJuIHdpZHRoLgoAJWxmICVsZiAlbGYgJWxmACVmICVmAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJywgbWFya2VyIGRlZmluaXRpb24gJTNkOiBMaW5lcyAyIC0gNCBtdXN0IGJlIG1hcmtlciB0cmFuc2Zvcm0uCgBbJXNdIABkZWJ1ZwBpbmZvAHdhcm5pbmcAZXJyb3IAJXMlcwAuaXNldABFcnJvcjogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciByZWFkaW5nIGltYWdlU2V0LgoASW1hZ2VzZXQgY29udGFpbnMgJWQgaW1hZ2VzLgoARmFsbGluZyBiYWNrIHRvIHJlYWRpbmcgJyVzJXMnIGluIEFSVG9vbEtpdCB2NC54IGZvcm1hdC4KAEVycm9yIHJlYWRpbmcgSlBFRyBmaWxlLgoARXJyb3IgcmVhZGluZyBKUEVHIGZpbGUgaGVhZGVyLgoAJWYARmlsZSBvcGVuIGVycm9yLiAlcwoAUmVhZCBlcnJvciEhCgByAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAAJXMlcwoAJWQACiMjIyBTdXJmYWNlIE5vLiVkICMjIwoAJXMAICBSZWFkIEltYWdlU2V0LgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5pc2V0Jy4KACAgICBlbmQuCgAgIFJlYWQgRmVhdHVyZVNldC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuZnNldCcuCgAgIFJlYWQgTWFya2VyU2V0LgoAbXJrAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMubXJrJy4KACVmICVmICVmICVmAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAGpwZwBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0cjEvcmVmRGF0YVNldFB0cjIuCgBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0ci4KAHJiAGtwbUxvYWRSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldFB0ci4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciBsb2FkaW5nIEtQTSBkYXRhOiBlcnJvciByZWFkaW5nIGRhdGEuCgBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiBOVUxMIGtwbUhhbmRsZS9yZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiByZWZEYXRhU2V0LgoAcG9pbnRzLSVkCgBrcG1NYXRjaGluZygpOiBOVUxMIGtwbUhhbmRsZS9pbkltYWdlTHVtYS4KAFBhZ2VbJWRdICBwcmU6JTNkLCBhZnQ6JTNkLCBlcnJvciA9ICVmCgAlcy4lcwBBc3NlcnRpb24gYHB5cmFtaWQtPnNpemUoKSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmNwcABQeXJhbWlkIGlzIG5vdCBhbGxvY2F0ZWQAT2N0YXZlIG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBtSW1hZ2VzLnNpemUoKSA+IDBgIGZhaWxlZCBpbiAATGFwbGFjaWFuIHB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZABBc3NlcnRpb24gYHB5cmFtaWQtPm51bU9jdGF2ZXMoKSA+IDBgIGZhaWxlZCBpbiAAUHlyYW1pZCBkb2VzIG5vdCBjb250YWluIGFueSBsZXZlbHMAQXNzZXJ0aW9uIGBkeW5hbWljX2Nhc3Q8Y29uc3QgQmlub21pYWxQeXJhbWlkMzJmKj4ocHlyYW1pZClgIGZhaWxlZCBpbiAAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAEFzc2VydGlvbiBgaW0xLnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBc3NlcnRpb24gYGltMS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgd2lkdGgAQXNzZXJ0aW9uIGBkLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodABBc3NlcnRpb24gYGltMS53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHJvdyA8IG1IZWlnaHRgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2ZyYW1ld29yay9pbWFnZS5oAHJvdyBvdXQgb2YgYm91bmRzAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQBEb0cgUHlyYW1pZABOb24tbWF4IHN1cHByZXNzaW9uAFN1YnBpeGVsAHBydW5lRmVhdHVyZXMARmluZCBPcmllbnRhdGlvbnMAQXNzZXJ0aW9uIGBtQnVja2V0cy5zaXplKCkgPT0gbU51bUJ1Y2tldHNYYCBmYWlsZWQgaW4gAEJ1Y2tldHMgYXJlIG5vdCBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBtQnVja2V0c1swXS5zaXplKCkgPT0gbU51bUJ1Y2tldHNZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUZlYXR1cmVQb2ludHMuc2l6ZSgpIDw9IG1NYXhOdW1GZWF0dXJlUG9pbnRzYCBmYWlsZWQgaW4gAFRvbyBtYW55IGZlYXR1cmUgcG9pbnRzAEFzc2VydGlvbiBgYnVja2V0WzBdLmZpcnN0ID49IGJ1Y2tldFtuXS5maXJzdGAgZmFpbGVkIGluIABudGhfZWxlbWVudCBmYWlsZWQAQXNzZXJ0aW9uIGBrcC5zY2FsZSA8IG1MYXBsYWNpYW5QeXJhbWlkLm51bVNjYWxlUGVyT2N0YXZlKClgIGZhaWxlZCBpbiAARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBga3Auc2NvcmUgPT0gbGFwMS5nZXQ8ZmxvYXQ+KHkpW3hdYCBmYWlsZWQgaW4gAFNjb3JlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIERvRyBpbWFnZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMS5oZWlnaHQoKSA9PSBsYXAyLmhlaWdodCgpYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvRG9HX3NjYWxlX2ludmFyaWFudF9kZXRlY3Rvci5oAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKSkgJiYgKGxhcDEud2lkdGgoKSA9PSBsYXAyLndpZHRoKCkpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAHggb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIABJbWFnZSBkaW1lbnNpb25zIGluY29uc2lzdGVudABBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDIud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGxhcDAuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvaW50ZXJwb2xhdGUuaABmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgaW0ud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB4X2Rpdl8yLTAuNWYgPj0gMGAgZmFpbGVkIGluIAB4X2Rpdl8yIG91dCBvZiBib3VuZHMgb3V0IG9mIGJvdW5kcyBmb3IgaW50ZXJwb2xhdGlvbgBBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAEFzc2VydGlvbiBgeF9kaXZfMiswLjVmIDwgbGFwMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeV9kaXZfMiswLjVmIDwgbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMS5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPCBtSW1hZ2VzLnNpemUoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgcmFuZ2UATjZ2aXNpb24xOEJpbm9taWFsUHlyYW1pZDMyZkUAQXNzZXJ0aW9uIGB3aWR0aCA+PSA1YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5jcHAASW1hZ2UgaXMgdG9vIHNtYWxsAEFzc2VydGlvbiBgaGVpZ2h0ID49IDVgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAQXNzZXJ0aW9uIGBpbWFnZS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBoYXZlIDEgY2hhbm5lbABBc3NlcnRpb24gYG1QeXJhbWlkLnNpemUoKSA9PSBtTnVtT2N0YXZlcyptTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQAQXNzZXJ0aW9uIGBpbWFnZS53aWR0aCgpID09IG1QeXJhbWlkWzBdLndpZHRoKClgIGZhaWxlZCBpbiAASW1hZ2Ugb2Ygd3Jvbmcgc2l6ZSBmb3IgcHlyYW1pZABBc3NlcnRpb24gYGltYWdlLmhlaWdodCgpID09IG1QeXJhbWlkWzBdLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAARGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIGEgZmxvYXQAVW5rbm93biBpbWFnZSB0eXBlAFVuc3VwcG9ydGVkIGltYWdlIHR5cGUATjZ2aXNpb245RXhjZXB0aW9uRQBBc3NlcnRpb24gYGltLndpZHRoKCkgPT0gaW0uc3RlcCgpL3NpemVvZihmbG9hdClgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmNwcABTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEFzc2VydGlvbiBgeCA+PSAwYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHggPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS53aWR0aCgpYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAHkgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHkgPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS5oZWlnaHQoKWAgZmFpbGVkIGluIAB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAQXNzZXJ0aW9uIGBnLmNoYW5uZWxzKCkgPT0gMmAgZmFpbGVkIGluIABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBtYXhfaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABNYXhpbXVtIGJpbiBzaG91bGQgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgASGlzdG9ncmFtIHBvaW50ZXIgaXMgTlVMTABBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYG1hZ25pdHVkZSA+PSAwYCBmYWlsZWQgaW4gAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAQXNzZXJ0aW9uIGBudW1fYmlucyA+PSAwYCBmYWlsZWQgaW4gAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gAHcxIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAHcyIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBiMSA+PSAwICYmIGIxIDwgbnVtX2JpbnNgIGZhaWxlZCBpbiAAYjEgYmluIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGIyID49IDAgJiYgYjIgPCBudW1fYmluc2AgZmFpbGVkIGluIABiMiBiaW4gaW5kZXggb3V0IG9mIHJhbmdlAElEIGFscmVhZHkgZXhpc3RzAEJ1aWxkIFB5cmFtaWQARXh0cmFjdCBGZWF0dXJlcwBBc3NlcnRpb24gYGFzc2lnbm1lbnQuc2l6ZSgpID09IG51bV9pbmRpY2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9iaW5hcnlfaGllcmFyY2hpY2FsX2NsdXN0ZXJpbmcuaABBc3NpZ25tZW50IHNpemUgd3JvbmcAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2lnbm1lbnQgaXMgaW52YWxpZABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABBc3NpZ25tZW50IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpdC0+c2Vjb25kLnNpemUoKSAhPSAwYCBmYWlsZWQgaW4gAENsdXN0ZXIgbXVzdCBoYXZlIGF0bGVhc2V0IDEgZmVhdHVyZQBBc3NlcnRpb24gYG1LID09IG1DZW50ZXJzLnNpemUoKWAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMva21lZG9pZHMuaABrIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgY2VudGVycwBBc3NlcnRpb24gYG51bV9mZWF0dXJlcyA+IDBgIGZhaWxlZCBpbiAATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA8PSBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA+PSBtS2AgZmFpbGVkIGluIABOb3QgZW5vdWdoIGZlYXR1cmVzAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBudW1fY2VudGVycyA+IDBgIGZhaWxlZCBpbiAAVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAxIGNlbnRlcgAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAQXNzZXJ0aW9uIGBkZXRlY3RvcmAgZmFpbGVkIGluIABEZXRlY3RvciBpcyBOVUxMAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQeXJhbWlkIGlzIGVtcHR5AEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSU42dmlzaW9uOEtleWZyYW1lSUxpOTZFRUVFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAWyVzXSBbJXNdIFslc10gOiBGb3VuZCAlZCBmZWF0dXJlcyBpbiBxdWVyeQBib29sIHZpc2lvbjo6VmlzdWFsRGF0YWJhc2U8dmlzaW9uOjpGUkVBS0V4dHJhY3RvciwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIHZpc2lvbjo6QmluYXJ5RmVhdHVyZU1hdGNoZXI8OTY+ID46OnF1ZXJ5KGNvbnN0IHZpc2lvbjo6R2F1c3NpYW5TY2FsZVNwYWNlUHlyYW1pZCAqKSBbRkVBVFVSRV9FWFRSQUNUT1IgPSB2aXNpb246OkZSRUFLRXh0cmFjdG9yLCBTVE9SRSA9IHZpc2lvbjo6QmluYXJ5RmVhdHVyZVN0b3JlLCBNQVRDSEVSID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj5dAEZpbmQgTWF0Y2hlcyAoMSkASG91Z2ggVm90aW5nICgxKQBGaW5kIEhvdWdoIE1hdGNoZXMgKDEpAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkARmluZCBNYXRjaGVzICgyKQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikARXN0aW1hdGUgSG9tb2dyYXBoeSAoMikARmluZCBJbmxpZXJzICgyKQBBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2ZlYXR1cmVfbWF0Y2hlci1pbmxpbmUuaABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBBc3NlcnRpb24gYGJlc3RfaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKWAgZmFpbGVkIGluIABTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAQXNzZXJ0aW9uIGBoeXAuc2l6ZSgpID49IDkqbWF4X251bV9oeXBvdGhlc2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9ob21vZ3JhcGh5X2VzdGltYXRpb24vcm9idXN0X2hvbW9ncmFwaHkuaABoeXAgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIDkqbWF4X251bV9oeXBvdGhlc2VzAEFzc2VydGlvbiBgdG1wX2kuc2l6ZSgpID49IG51bV9wb2ludHNgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABoeXBfY29zdHMgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG1heF9udW1faHlwb3RoZXNlcwBBc3NlcnRpb24gYG4gPD0gaW5fbWF0Y2hlcy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgbVJvb3QuZ2V0KClgIGZhaWxlZCBpbiAAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAATWluaW11bSBpbmRleCBub3Qgc2V0AEFzc2VydGlvbiBgeCA+PSBtTWluWGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaAB4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYHggPCBtTWF4WGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAeSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGB5IDwgbU1heFlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA+IC1QSWAgZmFpbGVkIGluIABhbmdsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABzY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBzY2FsZSA8IG1NYXhTY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGluZGV4ID49IDBgIGZhaWxlZCBpbiAAaW5kZXggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAGJpblggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA8IG1OdW1YQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblkgPj0gMGAgZmFpbGVkIGluIABiaW5ZIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpblkgPCBtTnVtWUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblNjYWxlID49IDBgIGZhaWxlZCBpbiAAYmluU2NhbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2l6ZSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcABzaXplIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VXaWR0aCA+IDBgIGZhaWxlZCBpbiAAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1SZWZJbWFnZUhlaWdodCA+IDBgIGZhaWxlZCBpbiAAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBuID4gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvdXRpbHMvcGFydGlhbF9zb3J0LmgAbiBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgcHlyYW1pZGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZnJlYWsuaABQeXJhbWlkIGlzIE5VTEwAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIABGZWF0dXJlIHN0b3JlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBudW1fcG9pbnRzID09IHBvaW50cy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHNhbWUgc2l6ZQBBc3NlcnRpb24gYG9jdGF2ZSA+PSAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAE9jdGF2ZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABTY2FsZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlACVtLSVkLSVZLSVILSVNLSVTAEFzc2VydGlvbiBgd2lkdGggPiAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAFdpZHRoIGNhbm5vdCBiZSB6ZXJvAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABIZWlnaHQgY2Fubm90IGJlIHplcm8AQXNzZXJ0aW9uIGBzdGVwID49IHdpZHRoYCBmYWlsZWQgaW4gAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAEFzc2VydGlvbiBgY2hhbm5lbHMgPiAwYCBmYWlsZWQgaW4gAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwBBc3NlcnRpb24gYG1EYXRhLmdldCgpYCBmYWlsZWQgaW4gAERhdGEgcG9pbnRlciBpcyBOVUxMAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSWhFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQaE5TXzE0ZGVmYXVsdF9kZWxldGVJaEVFTlNfOWFsbG9jYXRvckloRUVFRQBJbnZhbGlkIGltYWdlIHR5cGUAMTZOdWxsQXJyYXlEZWxldGVySWhFAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQBBc3NlcnRpb24gYG1TdGFydFRpbWUgPj0gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAIGxpbmUgADogAENsb2NrIGhhcyBub3QgYmVlbiBzdGFydGVkAEFzc2VydGlvbiBgbVN0b3BUaW1lID49IDBgIGZhaWxlZCBpbiAAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMAIElORk8gIAB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBzZXR1cAB0ZWFyZG93bgBzZXR1cEFSMgBfYWRkTWFya2VyAF9hZGRNdWx0aU1hcmtlcgBfYWRkTkZUTWFya2VyAGdldE11bHRpTWFya2VyTnVtAGdldE11bHRpTWFya2VyQ291bnQAX2xvYWRDYW1lcmEAc2V0TWFya2VySW5mb0RpcgBzZXRNYXJrZXJJbmZvVmVydGV4AGdldFRyYW5zTWF0U3F1YXJlAGdldFRyYW5zTWF0U3F1YXJlQ29udABnZXRUcmFuc01hdE11bHRpU3F1YXJlAGdldFRyYW5zTWF0TXVsdGlTcXVhcmVSb2J1c3QAZGV0ZWN0TWFya2VyAGdldE1hcmtlck51bQBkZXRlY3RORlRNYXJrZXIAZ2V0TXVsdGlFYWNoTWFya2VyAGdldE1hcmtlcgBnZXRORlRNYXJrZXIAc2V0RGVidWdNb2RlAGdldERlYnVnTW9kZQBnZXRQcm9jZXNzaW5nSW1hZ2UAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldFRocmVzaG9sZABnZXRUaHJlc2hvbGQAc2V0UGF0dGVybkRldGVjdGlvbk1vZGUAZ2V0UGF0dGVybkRldGVjdGlvbk1vZGUAc2V0UGF0dFJhdGlvAGdldFBhdHRSYXRpbwBzZXRNYXRyaXhDb2RlVHlwZQBnZXRNYXRyaXhDb2RlVHlwZQBzZXRMYWJlbGluZ01vZGUAZ2V0TGFiZWxpbmdNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBFUlJPUl9BUkNPTlRST0xMRVJfTk9UX0ZPVU5EAEVSUk9SX01VTFRJTUFSS0VSX05PVF9GT1VORABFUlJPUl9NQVJLRVJfSU5ERVhfT1VUX09GX0JPVU5EUwBBUl9ERUJVR19ESVNBQkxFAEFSX0RFQlVHX0VOQUJMRQBBUl9ERUZBVUxUX0RFQlVHX01PREUAQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAEFSX0xBQkVMSU5HX0JMQUNLX1JFR0lPTgBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfSU1BR0VfUFJPQ19GUkFNRV9JTUFHRQBBUl9JTUFHRV9QUk9DX0ZJRUxEX0lNQUdFAEFSX0RFRkFVTFRfSU1BR0VfUFJPQ19NT0RFAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SAEFSX1RFTVBMQVRFX01BVENISU5HX01PTk8AQVJfTUFUUklYX0NPREVfREVURUNUSU9OAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0RFRkFVTFRfUEFUVEVSTl9ERVRFQ1RJT05fTU9ERQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZAEFSX1VTRV9UUkFDS0lOR19ISVNUT1JZX1YyAEFSX0RFRkFVTFRfTUFSS0VSX0VYVFJBQ1RJT05fTU9ERQBBUl9NQVhfTE9PUF9DT1VOVABBUl9MT09QX0JSRUFLX1RIUkVTSABBUl9MT0dfTEVWRUxfREVCVUcAQVJfTE9HX0xFVkVMX0lORk8AQVJfTE9HX0xFVkVMX1dBUk4AQVJfTE9HX0xFVkVMX0VSUk9SAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9NQVRSSVhfQ09ERV8zeDMAQVJfTUFUUklYX0NPREVfM3gzX0hBTU1JTkc2MwBBUl9NQVRSSVhfQ09ERV8zeDNfUEFSSVRZNjUAQVJfTUFUUklYX0NPREVfNHg0AEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfNV81AEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX01BTlVBTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX09UU1UAQVJfTEFCRUxJTkdfVEhSRVNIX01PREVfQVVUT19BREFQVElWRQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTk9ORQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUEFUVEVSTl9FWFRSQUNUSU9OAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9DT05UUkFTVABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfRURDX0ZBSUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1IAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX0hFVVJJU1RJQ19UUk9VQkxFU09NRV9NQVRSSVhfQ09ERVMAYWxsb2NhdG9yPFQ+OjphbGxvY2F0ZShzaXplX3QgbikgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZQBJbWFnZSBwcm9jLiBtb2RlIHNldCB0byAlZC4KAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgB2aWlmAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAFRocmVzaG9sZCBzZXQgdG8gJWQKAHZpaWkAVGhyZXNob2xkIG1vZGUgc2V0IHRvICVkCgBkaWkAdmlpZABpaQB2aWkAb24uAG9mZi4ARGVidWcgbW9kZSBzZXQgdG8gJXMKAFRyYWNraW5nIGxvc3QuICVkCgBUcmFja2VkIHBhZ2UgJWQgKG1heCAlZCkuCgB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAwOyBpZiAoIWFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdKSB7IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdID0gKHsgaWQ6IDAsIGVycm9yOiAtMSwgZm91bmQ6IDAsIHBvc2U6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSB9KTsgfSB2YXIgbWFya2VySW5mbyA9IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdOyBtYXJrZXJJbmZvWyJpZCJdID0gJGFbaSsrXTsgbWFya2VySW5mb1siZXJyb3IiXSA9ICRhW2krK107IG1hcmtlckluZm9bImZvdW5kIl0gPSAxOyBtYXJrZXJJbmZvWyJwb3NlIl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bM10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bN10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sicG9zZSJdWzExXSA9ICRhW2krK107IH0AeyB2YXIgJGEgPSBhcmd1bWVudHM7IHZhciBpID0gMDsgaWYgKCFhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSA9ICh7IGlkOiAwLCBlcnJvcjogLTEsIGZvdW5kOiAwLCBwb3NlOiBbMCwwLDAsMCwgMCwwLDAsMCwgMCwwLDAsMF0gfSk7IH0gdmFyIG1hcmtlckluZm8gPSBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXTsgbWFya2VySW5mb1siaWQiXSA9ICRhW2krK107IG1hcmtlckluZm9bImVycm9yIl0gPSAtMTsgbWFya2VySW5mb1siZm91bmQiXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVswXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsyXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVszXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs0XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs1XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs2XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs3XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs4XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs5XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxMF0gPSAwOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTFdID0gMDsgfQB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAxMjsgaWYgKCFhcnRvb2xraXRbIm1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIm1hcmtlckluZm8iXSA9ICh7IHBvczogWzAsMF0sIGxpbmU6IFtbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdXSwgdmVydGV4OiBbWzAsMF0sIFswLDBdLCBbMCwwXSwgWzAsMF1dIH0pOyB9IHZhciBtYXJrZXJJbmZvID0gYXJ0b29sa2l0WyJtYXJrZXJJbmZvIl07IG1hcmtlckluZm9bImFyZWEiXSA9ICQwOyBtYXJrZXJJbmZvWyJpZCJdID0gJDE7IG1hcmtlckluZm9bImlkUGF0dCJdID0gJDI7IG1hcmtlckluZm9bImlkTWF0cml4Il0gPSAkMzsgbWFya2VySW5mb1siZGlyIl0gPSAkNDsgbWFya2VySW5mb1siZGlyUGF0dCJdID0gJDU7IG1hcmtlckluZm9bImRpck1hdHJpeCJdID0gJDY7IG1hcmtlckluZm9bImNmIl0gPSAkNzsgbWFya2VySW5mb1siY2ZQYXR0Il0gPSAkODsgbWFya2VySW5mb1siY2ZNYXRyaXgiXSA9ICQ5OyBtYXJrZXJJbmZvWyJwb3MiXVswXSA9ICQxMDsgbWFya2VySW5mb1sicG9zIl1bMV0gPSAkMTE7IG1hcmtlckluZm9bImxpbmUiXVswXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzBdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMF1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzFdWzFdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzNdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bM11bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJlcnJvckNvcnJlY3RlZCJdID0gJGFbaSsrXTsgfQB7IGlmICghYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0pIHsgYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0gPSAoe30pOyB9IHZhciBtdWx0aUVhY2hNYXJrZXIgPSBhcnRvb2xraXRbIm11bHRpRWFjaE1hcmtlckluZm8iXTsgbXVsdGlFYWNoTWFya2VyWyd2aXNpYmxlJ10gPSAkMDsgbXVsdGlFYWNoTWFya2VyWydwYXR0SWQnXSA9ICQxOyBtdWx0aUVhY2hNYXJrZXJbJ3BhdHRUeXBlJ10gPSAkMjsgbXVsdGlFYWNoTWFya2VyWyd3aWR0aCddID0gJDM7IH0AaWlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUAbG9hZENhbWVyYSgpOiBFcnJvciBsb2FkaW5nIHBhcmFtZXRlciBmaWxlICVzIGZvciBjYW1lcmEuCgBpaWlpAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgTkZUIG1hcmtlci4KAFJlYWRpbmcgJXMuZnNldDMKAGZzZXQzAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAEVycm9yOiBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQKAEVycm9yOiBrcG1NZXJnZVJlZkRhdGFTZXQKACAgRG9uZS4KAFJlYWRpbmcgJXMuZnNldAoAZnNldABFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBFcnJvcjoga3BtU2V0UmVmRGF0YVNldAoATG9hZGluZyBvZiBORlQgZGF0YSBjb21wbGV0ZS4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBjb25maWcgZGF0YSBsb2FkIGVycm9yICEhCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAGxvYWRNYXJrZXIoKTogRXJyb3IgbG9hZGluZyBwYXR0ZXJuIGZpbGUgJXMuCgBFcnJvcjogYXIyQ3JlYXRlSGFuZGxlLgoAaWlpaWkAc2V0dXAoKTogRXJyb3I6IGFyUGF0dENyZWF0ZUhhbmRsZS4KAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAeyBpZiAoIWFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXSkgeyBhcnRvb2xraXRbImZyYW1lTWFsbG9jIl0gPSAoe30pOyB9IHZhciBmcmFtZU1hbGxvYyA9IGFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXTsgZnJhbWVNYWxsb2NbImZyYW1lcG9pbnRlciJdID0gJDE7IGZyYW1lTWFsbG9jWyJmcmFtZXNpemUiXSA9ICQyOyBmcmFtZU1hbGxvY1siY2FtZXJhIl0gPSAkMzsgZnJhbWVNYWxsb2NbInRyYW5zZm9ybSJdID0gJDQ7IGZyYW1lTWFsbG9jWyJ2aWRlb0x1bWFQb2ludGVyIl0gPSAkNTsgfQAqKiogQ2FtZXJhIFBhcmFtZXRlciByZXNpemVkIGZyb20gJWQsICVkLiAqKioKAHNldENhbWVyYSgpOiBFcnJvcjogYXJQYXJhbUxUQ3JlYXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAT3V0IG9mIG1lbW9yeSEhCgBFcnJvcjogbWFsbG9jCgAjIyMgRmVhdHVyZSBjYW5kaWRhdGVzIGZvciB0cmFja2luZyBhcmUgb3ZlcmZsb3cuCgBCb2d1cyBtZXNzYWdlIGNvZGUgJWQAQUxJR05fVFlQRSBpcyB3cm9uZywgcGxlYXNlIGZpeABNQVhfQUxMT0NfQ0hVTksgaXMgd3JvbmcsIHBsZWFzZSBmaXgAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MASW52YWxpZCBjcm9wIHJlcXVlc3QARENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZQBEQ1Qgc2NhbGVkIGJsb2NrIHNpemUgJWR4JWQgbm90IHN1cHBvcnRlZABDb21wb25lbnQgaW5kZXggJWQ6IG1pc21hdGNoaW5nIHNhbXBsaW5nIHJhdGlvICVkOiVkLCAlZDolZCwgJWMAQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAEJvZ3VzIGlucHV0IGNvbG9yc3BhY2UAQm9ndXMgSlBFRyBjb2xvcnNwYWNlAEJvZ3VzIG1hcmtlciBsZW5ndGgAV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkAFNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkAEludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBJbnZhbGlkIHNjYW4gc2NyaXB0IGF0IGVudHJ5ICVkAEltcHJvcGVyIGNhbGwgdG8gSlBFRyBsaWJyYXJ5IGluIHN0YXRlICVkAEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQnVmZmVyIHBhc3NlZCB0byBKUEVHIGxpYnJhcnkgaXMgdG9vIHNtYWxsAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBDQ0lSNjAxIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQAVG9vIG1hbnkgY29sb3IgY29tcG9uZW50czogJWQsIG1heCAlZABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAQm9ndXMgREFDIGluZGV4ICVkAEJvZ3VzIERBQyB2YWx1ZSAweCV4AEJvZ3VzIERIVCBpbmRleCAlZABCb2d1cyBEUVQgaW5kZXggJWQARW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdyaXRlIHRvIEVNUyBmYWlsZWQARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4ASW5wdXQgZmlsZSByZWFkIGVycm9yAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8ARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE1pc3NpbmcgSHVmZm1hbiBjb2RlIHRhYmxlIGVudHJ5AE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMARW1wdHkgaW5wdXQgZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGlucHV0IGZpbGUAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YQBJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZQBOb3QgaW1wbGVtZW50ZWQgeWV0AFJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZQBBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UAUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AEluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpAENhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cwBDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMAQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAFVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4AEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPSSBtYXJrZXJzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMAVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4AFZpcnR1YWwgYXJyYXkgY29udHJvbGxlciBtZXNzZWQgdXAASW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24AUmVhZCBmcm9tIFhNUyBmYWlsZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nADljICAxNC1KYW4tMjAxOABDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHAEFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkAFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUARGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZABEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldQBGcmVlZCBFTVMgaGFuZGxlICV1AE9idGFpbmVkIEVNUyBoYW5kbGUgJXUARW5kIE9mIEltYWdlACAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZABKRklGIEFQUDAgbWFya2VyOiB2ZXJzaW9uICVkLiUwMmQsIGRlbnNpdHkgJWR4JWQgICVkAFdhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldQAgICAgd2l0aCAlZCB4ICVkIHRodW1ibmFpbCBpbWFnZQBNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldQBVbmV4cGVjdGVkIG1hcmtlciAweCUwMngAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AFF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMAUXVhbnRpemluZyB0byAlZCBjb2xvcnMAU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24AQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkAFJTVCVkAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAFN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZAAgICAgQ29tcG9uZW50ICVkOiAlZGh4JWR2IHE9JWQAU3RhcnQgb2YgSW1hZ2UAU3RhcnQgT2YgU2NhbjogJWQgY29tcG9uZW50cwAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZAAgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkAENsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcwBPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMASkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiBwYWxldHRlIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBGcmVlZCBYTVMgaGFuZGxlICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUAVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZABDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZABDb3JydXB0IEpQRUcgZGF0YTogJXUgZXh0cmFuZW91cyBieXRlcyBiZWZvcmUgbWFya2VyIDB4JTAyeABDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQAQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcwBTT1MATFNFAEpQRUdNRU0AJWxkJWMAJXMKAAABAgQHAwYFAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AaW5maW5pdHkAbmFuAExDX0FMTABMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIAHJ3YQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAYgBjAGgAYQBzAHQAaQBqAG0AZgBkAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAdm9pZABib29sAGNoYXIAc2lnbmVkIGNoYXIAdW5zaWduZWQgY2hhcgBzaG9ydAB1bnNpZ25lZCBzaG9ydABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBmbG9hdABkb3VibGUAc3RkOjpzdHJpbmcAc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4Ac3RkOjp3c3RyaW5nAGVtc2NyaXB0ZW46OnZhbABlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmcgZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0llRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjhpb3NfYmFzZUUATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQBOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQBOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQBOU3QzX18yN2NvbGxhdGVJY0VFAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQBOU3QzX18yN2NvbGxhdGVJd0VFACVwAEMATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFACVwAAAAAEwAbGwAJQAAAAAAbABOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAJUg6JU06JVMAJW0vJWQvJXkAJUk6JU06JVMgJXAAJWEgJWIgJWQgJUg6JU06JVMgJVkAQU0AUE0ASmFudWFyeQBGZWJydWFyeQBNYXJjaABBcHJpbABNYXkASnVuZQBKdWx5AEF1Z3VzdABTZXB0ZW1iZXIAT2N0b2JlcgBOb3ZlbWJlcgBEZWNlbWJlcgBKYW4ARmViAE1hcgBBcHIASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdAAlbS8lZC8leSVZLSVtLSVkJUk6JU06JVMgJXAlSDolTSVIOiVNOiVTJUg6JU06JVNOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAMDEyMzQ1Njc4OQAlTGYATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAwMTIzNDU2Nzg5AE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAJS4wTGYATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQBOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAE5TdDNfXzI4bWVzc2FnZXNJY0VFAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAE5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUUATlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjZsb2NhbGU1X19pbXBFAE5TdDNfXzI1Y3R5cGVJY0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAE5TdDNfXzI1Y3R5cGVJd0VFAGZhbHNlAHRydWUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE0X19zaGFyZWRfY291bnRFAE5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRF";var tempDoublePtr=57872;function demangle(func){return func}function demangleAll(text){var regex=/\b__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";ENV["_"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=value;return value}function ___map_file(pathname,size){___setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(fd){if(fd===undefined)fd=SYSCALLS.get();var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_read(){return _fd_read.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function __embind_register_constant(name,type,value){name=readLatin1String(name);whenDependentTypesAreResolved([],[type],function(type){type=type[0];Module[name]=type["fromWireType"](value);return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;iLIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=57728;var ___tm_timezone=(stringToUTF8("GMT",57776,4),57776);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Yb[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)==0?2:e,f);return}function nB(a){a=a|0;return ((oB(a)|0)^1)&1|0}function oB(b){b=b|0;return (a[b>>0]|0)!=0|0}function pB(a){a=a|0;c[a>>2]=0;qB(a);return}function qB(a){a=a|0;c[a>>2]=c[a>>2]|1;return}function rB(a){a=a|0;c[a>>2]=0;return}function sB(){return 0}function tB(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=FO(b)|0;if(a|0)break;a=sB()|0;if(!a){a=0;break}Rb[a&1]()}return a|0}function uB(a){a=a|0;return tB(a)|0}function vB(a){a=a|0;SA(a);return}function wB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=c[d>>2];a=Jb[c[(c[a>>2]|0)+16>>2]&63](a,b,e)|0;if(a)c[d>>2]=c[e>>2];zb=f;return a&1|0}function xB(a){a=a|0;if(!a)a=0;else a=(NA(a,13904,13992,0)|0)!=0&1;return a|0}function yB(){return 0}function zB(){N(55684);return}function AB(){return 55668}function BB(){return 55676}function CB(){return 55680}function DB(){return 55684}function EB(){FB();return}function FB(){GB(57670);return}function GB(a){a=a|0;var b=0;b=zb;zb=zb+16|0;c[b>>2]=a;HB();zb=b;return}function HB(){pa(IB()|0,47294);ga(JB()|0,47299,1,1,0);KB(47304);LB(47309);MB(47321);NB(47335);OB(47341);PB(47356);QB(47360);RB(47373);SB(47378);TB(47392);UB(47398);na(VB()|0,47405);na(WB()|0,47417);oa(XB()|0,4,47450);ia(YB()|0,47463);ZB(47479);_B(47509);$B(47546);aC(47585);bC(47616);cC(47656);dC(47685);eC(47723);fC(47753);_B(47792);$B(47824);aC(47857);bC(47890);cC(47924);dC(47957);gC(47991);hC(48022);iC(48054);return}function IB(){return sD()|0}function JB(){return rD()|0}function KB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=pD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function LB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=nD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function MB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=lD()|0;la(a|0,c[d>>2]|0,1,0,255);zb=b;return}function NB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=jD()|0;la(a|0,c[d>>2]|0,2,-32768<<16>>16|0,32767<<16>>16|0);zb=b;return}function OB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=hD()|0;la(a|0,c[d>>2]|0,2,0,65535);zb=b;return}function PB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=fD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function QB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=dD()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function RB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=bD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function SB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=$C()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function TB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=ZC()|0;ja(a|0,c[d>>2]|0,4);zb=b;return}function UB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=XC()|0;ja(a|0,c[d>>2]|0,8);zb=b;return}function VB(){return WC()|0}function WB(){return VC()|0}function XB(){return UC()|0}function YB(){return TC()|0}function ZB(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=QC()|0;a=RC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function _B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=NC()|0;a=OC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function $B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=KC()|0;a=LC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function aC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=HC()|0;a=IC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function bC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=EC()|0;a=FC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function cC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=BC()|0;a=CC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function dC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=yC()|0;a=zC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function eC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=vC()|0;a=wC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function fC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=sC()|0;a=tC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function gC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=pC()|0;a=qC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function hC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=mC()|0;a=nC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function iC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=jC()|0;a=kC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function jC(){return lC()|0}function kC(){return 7}function lC(){return 14144}function mC(){return oC()|0}function nC(){return 7}function oC(){return 14152}function pC(){return rC()|0}function qC(){return 6}function rC(){return 14160}function sC(){return uC()|0}function tC(){return 5}function uC(){return 14168}function vC(){return xC()|0}function wC(){return 4}function xC(){return 14176}function yC(){return AC()|0}function zC(){return 5}function AC(){return 14184}function BC(){return DC()|0}function CC(){return 4}function DC(){return 14192}function EC(){return GC()|0}function FC(){return 3}function GC(){return 14200}function HC(){return JC()|0}function IC(){return 2}function JC(){return 14208}function KC(){return MC()|0}function LC(){return 1}function MC(){return 14216}function NC(){return PC()|0}function OC(){return 0}function PC(){return 14224}function QC(){return SC()|0}function RC(){return 0}function SC(){return 14232}function TC(){return 14240}function UC(){return 14248}function VC(){return 14272}function WC(){return 13272}function XC(){return YC()|0}function YC(){return 14120}function ZC(){return _C()|0}function _C(){return 14112}function $C(){return aD()|0}function aD(){return 14104}function bD(){return cD()|0}function cD(){return 14096}function dD(){return eD()|0}function eD(){return 14088}function fD(){return gD()|0}function gD(){return 14080}function hD(){return iD()|0}function iD(){return 14072}function jD(){return kD()|0}function kD(){return 14064}function lD(){return mD()|0}function mD(){return 14048}function nD(){return oD()|0}function oD(){return 14056}function pD(){return qD()|0}function qD(){return 14040}function rD(){return 14032}function sD(){return 14024}function tD(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b+4|0;e=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=jz(c[(c[d>>2]|0)+4>>2]|0)|0;zb=b;return a|0}function uD(a){a=a|0;return 0}function vD(a){a=a|0;return 0}function wD(a,b){a=a|0;b=b|0;return 0}function xD(a){a=a|0;return 0}function yD(){return (zD()|0)>0|0}function zD(){return yB()|0}function AD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k;i=k+8|0;e=k+4|0;c[i>>2]=a;do if(a>>>0>=212){h=(a>>>0)/210|0;b=h*210|0;c[e>>2]=a-b;a=0;g=(BD(12736,12928,e,d)|0)-12736>>2;a:while(1){f=(c[12736+(g<<2)>>2]|0)+b|0;b=5;while(1){if(b>>>0>=47){j=6;break}d=c[12544+(b<<2)>>2]|0;e=(f>>>0)/(d>>>0)|0;if(e>>>0>>0){j=107;break a}if((f|0)==(B(e,d)|0))break;else b=b+1|0}b:do if((j|0)==6){j=0;e=211;c:while(1){b=(f>>>0)/(e>>>0)|0;do if(b>>>0>=e>>>0)if((f|0)!=(B(b,e)|0)){b=e+10|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+12|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+16|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+18|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+22|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+28|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)==(B(d,b)|0))d=9;else{b=e+30|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+36|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+40|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+42|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+46|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+52|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+58|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+60|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+66|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+70|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+72|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+78|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+82|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+88|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+96|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+100|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+102|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+106|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+108|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+112|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+120|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+126|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+130|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+136|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+138|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+142|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+148|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+150|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+156|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+162|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+166|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+168|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+172|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+178|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+180|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+186|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+190|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+192|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+196|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+198|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+208|0;d=(f>>>0)/(b>>>0)|0;l=d>>>0>>0;d=(f|0)==(B(d,b)|0);b=l|d?b:e+210|0;d=l?1:d?9:0;a=l?f:a}else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else{b=e;d=9}else{b=e;d=1;a=f}while(0);switch(d&15){case 9:break b;case 0:{e=b;break}default:break c}}if(d){j=108;break a}}while(0);l=g+1|0;f=(l|0)==48;b=h+(f&1)|0;h=b;b=b*210|0;g=f?0:l}if((j|0)==107){c[i>>2]=f;a=f;break}else if((j|0)==108){c[i>>2]=f;break}}else{a=BD(12544,12736,i,d)|0;a=c[a>>2]|0}while(0);zb=k;return a|0}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[d>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=d>>>1;g=e+(b<<2)|0;a=(c[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function CD(a){a=a|0;DD(a);return}function DD(a){a=a|0;c[a>>2]=16480;ED(a,0);YF(a+28|0);GO(c[a+32>>2]|0);GO(c[a+36>>2]|0);GO(c[a+48>>2]|0);GO(c[a+60>>2]|0);return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+32|0;f=a+36|0;d=c[a+40>>2]|0;while(1){if(!d)break;g=d+-1|0;Wb[c[(c[e>>2]|0)+(g<<2)>>2]&3](b,a,c[(c[f>>2]|0)+(g<<2)>>2]|0);d=g}return}function FD(a){a=a|0;DD(a);SA(a);return}function GD(a){a=a|0;DD(a);return}function HD(a){a=a|0;c[a>>2]=16496;YF(a+4|0);return}function ID(a){a=a|0;HD(a);SA(a);return}function JD(a,b){a=a|0;b=b|0;return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function LD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function MD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function ND(a){a=a|0;return 0}function OD(a){a=a|0;return 0}function PD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;Wf()|0;i=b+12|0;j=b+16|0;h=0;while(1){if((h|0)>=(e|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f|0;k=e-h|0;g=(k|0)<(g|0)?k:g;VD(d,f,g)|0;c[i>>2]=(c[i>>2]|0)+g;d=d+g|0;f=g}else{f=Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((f|0)==-1)break;f=eg(f)|0;a[d>>0]=f;d=d+1|0;f=1}h=f+h|0}return h|0}function QD(a){a=a|0;return Wf()|0}function RD(b){b=b|0;var d=0;d=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;if((d|0)==(Wf()|0))b=Wf()|0;else{d=b+12|0;b=c[d>>2]|0;c[d>>2]=b+1;b=cg(a[b>>0]|0)|0}return b|0}function SD(a,b){a=a|0;b=b|0;return Wf()|0}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Wf()|0;j=b+24|0;k=b+28|0;f=0;while(1){if((f|0)>=(e|0))break;g=c[j>>2]|0;h=c[k>>2]|0;if(g>>>0>>0){h=h-g|0;l=e-f|0;h=(l|0)<(h|0)?l:h;VD(g,d,h)|0;c[j>>2]=(c[j>>2]|0)+h;d=d+h|0;f=h+f|0}else{h=c[(c[b>>2]|0)+52>>2]|0;l=cg(a[d>>0]|0)|0;if((Ib[h&63](b,l)|0)==(i|0))break;d=d+1|0;f=f+1|0}}return f|0}function UD(a,b){a=a|0;b=b|0;return Wf()|0}function VD(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)_O(a|0,b|0,c|0)|0;return a|0}function WD(a){a=a|0;c[a>>2]=16560;YF(a+4|0);return}function XD(a){a=a|0;WD(a);SA(a);return}function YD(a,b){a=a|0;b=b|0;return}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function _D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function $D(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function aE(a){a=a|0;return 0}function bE(a){a=a|0;return 0}function cE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;iE()|0;h=a+12|0;i=a+16|0;g=0;while(1){if((g|0)>=(d|0))break;e=c[h>>2]|0;f=c[i>>2]|0;if(e>>>0>>0){f=f-e>>2;j=d-g|0;f=(j|0)<(f|0)?j:f;kE(b,e,f)|0;c[h>>2]=(c[h>>2]|0)+(f<<2);b=b+(f<<2)|0;e=f}else{e=Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((e|0)==-1)break;e=lE(e)|0;c[b>>2]=e;b=b+4|0;e=1}g=e+g|0}return g|0}function dE(a){a=a|0;return iE()|0}function eE(a){a=a|0;var b=0;b=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(iE()|0))a=iE()|0;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=jE(c[a>>2]|0)|0}return a|0}function fE(a,b){a=a|0;b=b|0;return iE()|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=iE()|0;i=a+24|0;j=a+28|0;e=0;while(1){if((e|0)>=(d|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f>>2;k=d-e|0;g=(k|0)<(g|0)?k:g;kE(f,b,g)|0;c[i>>2]=(c[i>>2]|0)+(g<<2);b=b+(g<<2)|0;e=g+e|0}else{g=c[(c[a>>2]|0)+52>>2]|0;k=jE(c[b>>2]|0)|0;if((Ib[g&63](a,k)|0)==(h|0))break;b=b+4|0;e=e+1|0}}return e|0}function hE(a,b){a=a|0;b=b|0;return iE()|0}function iE(){return -1}function jE(a){a=a|0;return a|0}function kE(a,b,c){a=a|0;b=b|0;c=c|0;if(c)gz(a,b,c)|0;return a|0}function lE(a){a=a|0;return a|0}function mE(a){a=a|0;qE(a,16656);CD(a+8|0);return}function nE(a){a=a|0;mE(a);SA(a);return}function oE(a){a=a|0;mE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function pE(a){a=a|0;nE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function qE(a,b){a=a|0;b=b|0;return}function rE(a){a=a|0;vE(a,16704);GD(a+8|0);return}function sE(a){a=a|0;rE(a);SA(a);return}function tE(a){a=a|0;rE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function uE(a){a=a|0;sE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function vE(a,b){a=a|0;b=b|0;return}function wE(a){a=a|0;AE(a,16752);CD(a+4|0);return}function xE(a){a=a|0;wE(a);SA(a);return}function yE(a){a=a|0;wE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function zE(a){a=a|0;xE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function AE(a,b){a=a|0;b=b|0;return}function BE(a){a=a|0;FE(a,16800);GD(a+4|0);return}function CE(a){a=a|0;BE(a);SA(a);return}function DE(a){a=a|0;BE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function EE(a){a=a|0;CE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function FE(a,b){a=a|0;b=b|0;return}function GE(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[a+24>>2]|0)==0|b;return}function HE(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));YN(d);return}function IE(a,b){a=a|0;b=b|0;WN(a,b+28|0);return}function JE(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function KE(a){a=a|0;c[a>>2]=16496;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function LE(a){a=a|0;c[a>>2]=16560;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function ME(b){b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;if(c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0){NE(d,b);if(a[d>>0]|0?(f=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(f,c[f+16>>2]|1)}OE(d)}zb=e;return b|0}function NE(b,d){b=b|0;d=d|0;a[b>>0]=0;c[b+4>>2]=d;d=d+(c[(c[d>>2]|0)+-12>>2]|0)|0;if(!(c[d+16>>2]|0)){d=c[d+72>>2]|0;if(d|0)ME(d)|0;a[b>>0]=1}return}function OE(a){a=a|0;var b=0;a=a+4|0;b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;if((((c[b+24>>2]|0?(c[b+16>>2]|0)==0:0)?c[b+4>>2]&8192|0:0)?!(yD()|0):0)?(b=c[a>>2]|0,b=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(b,c[b+16>>2]|1)}return}function PE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;f=l+12|0;j=l+8|0;k=l;NE(k,b);if(a[k>>0]|0){IE(f,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);g=XF(f,56792)|0;YF(f);h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;i=c[h+24>>2]|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(f,h);m=XF(f,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(f);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;m=c[(c[g>>2]|0)+16>>2]|0;c[j>>2]=i;c[f>>2]=c[j>>2];if(!(Mb[m&31](g,f,h,e&255,d)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(k);zb=l;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;NE(i,b);do if(a[i>>0]|0){e=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0;f=e;if(e|0){g=f+24|0;h=c[g>>2]|0;if((h|0)==(c[f+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;d=cg(d)|0;d=Ib[h&63](f,d)|0}else{c[g>>2]=h+1;a[h>>0]=d;d=cg(d)|0}if(!(_f(d,Wf()|0)|0))break}h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(h,c[h+16>>2]|1)}while(0);OE(i);zb=j;return b|0}function RE(a){a=a|0;a=a+16|0;c[a>>2]=c[a>>2]|1;return}function SE(){UE();return}function TE(){return}function UE(){VE(0);return}function VE(a){a=a|0;var b=0,d=0;b=c[4002]|0;WE(56368,b,56424);c[13922]=16628;c[13924]=16648;c[13923]=0;HE(55696,56368);c[13942]=0;a=Wf()|0;c[13943]=a;XE(56432,b,56488);c[13944]=16676;c[13946]=16696;c[13945]=0;HE(55784,56432);c[13964]=0;b=iE()|0;c[13965]=b;b=c[4003]|0;YE(56496,b,56544);c[13966]=16724;c[13967]=16744;HE(55868,56496);c[13985]=0;a=Wf()|0;c[13986]=a;ZE(56552,b,56600);c[13987]=16772;c[13988]=16792;HE(55952,56552);c[14006]=0;b=iE()|0;c[14007]=b;b=c[4001]|0;YE(56608,b,56656);c[14008]=16724;c[14009]=16744;HE(56036,56608);c[14027]=0;a=Wf()|0;c[14028]=a;a=c[56032+(c[(c[14008]|0)+-12>>2]|0)+24>>2]|0;c[14050]=16724;c[14051]=16744;HE(56204,a);c[14069]=0;a=Wf()|0;c[14070]=a;ZE(56664,b,56712);c[14029]=16772;c[14030]=16792;HE(56120,56664);c[14048]=0;b=iE()|0;c[14049]=b;b=c[56116+(c[(c[14029]|0)+-12>>2]|0)+24>>2]|0;c[14071]=16772;c[14072]=16792;HE(56288,b);c[14090]=0;b=iE()|0;c[14091]=b;c[55688+(c[(c[13922]|0)+-12>>2]|0)+72>>2]=55864;c[55776+(c[(c[13944]|0)+-12>>2]|0)+72>>2]=55948;b=(c[14008]|0)+-12|0;a=56032+(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|8192;a=(c[14029]|0)+-12|0;d=56116+(c[a>>2]|0)+4|0;c[d>>2]=c[d>>2]|8192;c[56032+(c[b>>2]|0)+72>>2]=55864;c[56116+(c[a>>2]|0)+72>>2]=55948;return}function WE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=17008;c[b+32>>2]=d;c[b+40>>2]=e;e=Wf()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function XE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16944;c[b+32>>2]=d;c[b+40>>2]=e;e=iE()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function YE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=16880;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57040)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function ZE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16816;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57048)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function _E(a){a=a|0;WD(a);SA(a);return}function $E(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57048)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function aF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function bF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=jE(c[d>>2]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(iE()|0))break a;f=f+1|0;d=d+4|0}}else f=lz(d,4,e,c[b+32>>2]|0)|0;while(0);return f|0}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(JE(d,iE()|0)|0)){k=lE(d)|0;c[f>>2]=k;if(a[b+44>>0]|0){if((lz(f,4,1,c[b+32>>2]|0)|0)==1){e=15;break}b=iE()|0;break}c[m>>2]=l;e=f+4|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=iE()|0;break}}else e=15;while(0);if((e|0)==15)b=dF(d)|0;zb=o;return b|0}function dF(a){a=a|0;if(JE(a,iE()|0)|0)a=~(iE()|0);return a|0}function eF(a){a=a|0;HD(a);SA(a);return}function fF(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57040)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function gF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function hF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=cg(a[d>>0]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(Wf()|0))break a;f=f+1|0;d=d+1|0}}else f=lz(d,1,e,c[b+32>>2]|0)|0;while(0);return f|0}function iF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(_f(d,Wf()|0)|0)){k=eg(d)|0;a[f>>0]=k;if(a[b+44>>0]|0){if((lz(f,1,1,c[b+32>>2]|0)|0)==1){e=15;break}b=Wf()|0;break}c[m>>2]=l;e=f+1|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=Wf()|0;break}}else e=15;while(0);if((e|0)==15)b=dg(d)|0;zb=o;return b|0}function jF(a){a=a|0;WD(a);SA(a);return}function kF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57048)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function lF(a){a=a|0;return oF(a,0)|0}function mF(a){a=a|0;return oF(a,1)|0}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+8|0;f=l+4|0;g=l;j=JE(d,iE()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((JE(e,iE()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=lE(c[j>>2]|0)|0;c[f>>2]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=iE()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function oF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=iE()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=iE()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+4|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)c[q>>2]=a[p>>0];else if((n|0)==17){e=iE()|0;break}n=19}else{c[q>>2]=a[p>>0];n=19}while(0);b:do if((n|0)==19){c:do if(d){t=jE(c[q>>2]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=jE(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=iE()|0;break b}while(0);e=jE(c[q>>2]|0)|0}while(0)}}zb=r;return e|0}function pF(a){a=a|0;HD(a);SA(a);return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57040)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function rF(a){a=a|0;return uF(a,0)|0}function sF(a){a=a|0;return uF(a,1)|0}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+4|0;f=l+8|0;g=l;j=_f(d,Wf()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((_f(e,Wf()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=eg(c[j>>2]|0)|0;a[f>>0]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=Wf()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=Wf()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=Wf()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+1|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)a[q>>0]=a[p>>0]|0;else if((n|0)==17){e=Wf()|0;break}n=19}else{a[q>>0]=a[p>>0]|0;n=19}while(0);b:do if((n|0)==19){c:do if(d){t=cg(a[q>>0]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=cg(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=Wf()|0;break b}while(0);e=cg(a[q>>0]|0)|0}while(0)}}zb=r;return e|0}function vF(a){a=a|0;CF(a);return}function wF(a){a=a|0;vF(a);SA(a);return}function xF(a){a=a|0;if(a|0)Sb[c[(c[a>>2]|0)+4>>2]&255](a);return}function yF(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=c;while(1){if((e|0)==(f|0)){h=7;break}if((b|0)==(d|0)){b=-1;break}c=a[b>>0]|0;g=a[e>>0]|0;if(c<<24>>24>24){b=-1;break}if(g<<24>>24>24){b=1;break}e=e+1|0;b=b+1|0}if((h|0)==7)b=(b|0)!=(d|0)&1;return b|0}function zF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;BF(a,d,e);return}function AF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=0;while(1){if((c|0)==(d|0))break;e=(b<<4)+(a[c>>0]|0)|0;f=e&-268435456;b=(f>>>24|f)^e;c=c+1|0}return b|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function CF(a){a=a|0;return}function DF(a){a=a|0;CF(a);return}function EF(a){a=a|0;DF(a);SA(a);return}function FF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=b;while(1){if((e|0)==(f|0)){h=7;break}if((a|0)==(d|0)){a=-1;break}b=c[a>>2]|0;g=c[e>>2]|0;if((b|0)<(g|0)){a=-1;break}if((g|0)<(b|0)){a=1;break}e=e+4|0;a=a+4|0}if((h|0)==7)a=(a|0)!=(d|0)&1;return a|0}function GF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;IF(a,d,e);return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=0;while(1){if((b|0)==(d|0))break;e=(c[b>>2]|0)+(a<<4)|0;f=e&-268435456;a=(f>>>24|f)^e;b=b+4|0}return a|0}function IF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function JF(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return}function KF(a){a=a|0;CF(a);return}function LF(a){a=a|0;CF(a);SA(a);return}function MF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56736)|0;YF(i);IE(i,f);b=XF(i,56752)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(FG(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;jO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function NF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=DG(a,j,i,e,f,g)|0;zb=h;return g|0}function OF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=BG(a,j,i,e,f,g)|0;zb=h;return g|0}function PF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=zG(a,j,i,e,f,g)|0;zb=h;return g|0}function QF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=xG(a,j,i,e,f,g)|0;zb=h;return g|0}function RF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=vG(a,j,i,e,f,g)|0;zb=h;return g|0}function SF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=pG(a,j,i,e,f,g)|0;zb=h;return g|0}function TF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=nG(a,j,i,e,f,g)|0;zb=h;return g|0}function UF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=lG(a,j,i,e,f,g)|0;zb=h;return g|0}function VF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=gG(a,j,i,e,f,g)|0;zb=h;return g|0}function WF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+240|0;v=y+192|0;t=y+160|0;w=y+220|0;x=y+208|0;u=y+204|0;q=y;r=y+200|0;s=y+196|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56736)|0;Kb[c[(c[b>>2]|0)+32>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function XF(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return bG(a,aG(b)|0)|0}function YF(a){a=a|0;var b=0,d=0;a=c[a>>2]|0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b)Sb[c[(c[a>>2]|0)+8>>2]&255](a);return}function ZF(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if(b<<24>>24==h<<24>>24?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+26|0;h=0;while(1){m=l+h|0;if((h|0)==26){m=i;break}if((a[m>>0]|0)==b<<24>>24)break;else h=h+1|0}m=m-l|0;if((m|0)>23)m=-1;else{switch(d|0){case 10:case 8:{if((m|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function _F(){var b=0;if((a[54800]|0)==0?nB(54800)|0:0){b=az(2147483647,49197,0)|0;c[14186]=b;pB(54800)}return c[14186]|0}function $F(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=Dz(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function aG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=zb;zb=zb+48|0;b=f+32|0;d=f+24|0;e=f;g=f+16|0;c[g>>2]=143;c[g+4>>2]=0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];dG(e,b,a);if((c[a>>2]|0)!=-1){c[b>>2]=e;c[d>>2]=b;$N(a,d,144)}zb=f;return (c[a+4>>2]|0)+-1|0}function bG(a,b){a=a|0;b=b|0;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}function cG(a){a=a|0;var b=0;b=c[14187]|0;c[14187]=b+1;c[a+4>>2]=b+1;return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;b=c[b+4>>2]|0;c[a>>2]=d;c[a+4>>2]=e;c[a+8>>2]=b;return}function eG(a){a=a|0;fG(c[c[a>>2]>>2]|0);return}function fG(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;e=c[a+8>>2]|0;d=(c[a>>2]|0)+(e>>1)|0;if(!(e&1))a=b;else a=c[(c[d>>2]|0)+b>>2]|0;Sb[a&255](d);return}function gG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function hG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;i=h;IE(i,d);d=XF(i,56736)|0;Kb[c[(c[d>>2]|0)+32>>2]&15](d,12928,12960,e)|0;e=XF(i,56752)|0;d=Gb[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[f>>0]=d;f=Gb[c[(c[e>>2]|0)+16>>2]&127](e)|0;a[g>>0]=f;Ub[c[(c[e>>2]|0)+20>>2]&63](b,e);YF(i);zb=h;return}function iG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if(b<<24>>24==h<<24>>24)if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if(b<<24>>24==i<<24>>24?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+32|0;h=0;while(1){o=n+h|0;if((h|0)==32){o=i;break}if((a[o>>0]|0)==b<<24>>24)break;else h=h+1|0}h=o-n|0;if((h|0)>31)o=-1;else{i=a[12928+h>>0]|0;switch(h|0){case 24:case 25:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 23:case 22:{a[e>>0]=80;o=c[g>>2]|0;c[g>>2]=o+1;a[o>>0]=i;o=0;break a}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>21){o=0;break a}c[m>>2]=(c[m>>2]|0)+1;o=0;break a}}}}while(0);return o|0}function jG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+rA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function kG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=b+11|0;h=a[j>>0]|0;k=b+4|0;g=c[k>>2]|0;i=h&255;do if((h<<24>>24<0?g:i)|0){if((d|0)!=(e|0)){g=e;h=d;while(1){g=g+-4|0;if(h>>>0>=g>>>0)break;i=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=i;h=h+4|0}h=a[j>>0]|0;i=h&255;g=c[k>>2]|0}j=h<<24>>24<0;b=j?c[b>>2]|0:b;k=e+-4|0;j=b+(j?g:i)|0;g=b;while(1){h=a[g>>0]|0;i=h<<24>>24>0&h<<24>>24!=127;if(d>>>0>=k>>>0)break;if(i?(c[d>>2]|0)!=(h<<24>>24|0):0){l=11;break}d=d+4|0;g=(j-g|0)>1?g+1|0:g}if((l|0)==11){c[f>>2]=4;break}if(i?((c[k>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function lG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+qA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function nG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(iG(g&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+pA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function pG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function qG(a){a=a|0;switch(c[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function rG(a,b,c){a=a|0;b=b|0;c=c|0;return uG(a,b,c)|0}function sG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=zb;zb=zb+16|0;g=f;IE(g,d);d=XF(g,56752)|0;h=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[e>>0]=h;Ub[c[(c[d>>2]|0)+20>>2]&63](b,d);YF(g);zb=f;return}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;g=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if((f|0)==68){c[e>>2]=4;b=-1;f=-1;break}else{l=PO(0,0,b|0,g|0)|0;f=F()|0;b=j?l:b;f=j?f:g;break}else{c[e>>2]=4;b=0;f=0}while(0)}while(0);E(f|0);zb=k;return b|0}function uG(a,b,c){a=a|0;b=b|0;c=c|0;return 12928}function vG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function wG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function xG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function yG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function zG(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+240|0;s=C+224|0;z=C+212|0;A=C+200|0;t=C+196|0;u=C;w=C+192|0;x=C+188|0;y=qG(g)|0;r=rG(d,g,C+160|0)|0;sG(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(ZF(g&255,y,d,t,x,a[s>>0]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=cg(a[d>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function AG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0)){if(f>>>0>0|(f|0)==0&b>>>0>65535|(g|0)==68){c[e>>2]=4;b=-1;break}if(j)b=0-b&65535;else b=b&65535}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function BG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function CG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;e=0;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}if((c[g>>2]|0)==(b|0)){if((f|0)==68){c[d>>2]=4;e=(e|0)>0|(e|0)==0&a>>>0>0;a=e?-1:0;e=e?2147483647:-2147483648}}else{c[d>>2]=4;a=0;e=0}}E(e|0);zb=i;return a|0}function DG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function EG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}a:do if((c[g>>2]|0)==(b|0)){do if((f|0)==68){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{c[d>>2]=4;a=0}while(0)}zb=i;return a|0}function FG(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}n=e;o=j;k=0;while(1){if((n|0)==(f|0))break;m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;l=l+-1|0;k=k+1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=cg(a[m>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;k=k&255;if(!i)k=Ib[c[(c[g>>2]|0)+12>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+11|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=a[m+t>>0]|0;if(!i)m=Ib[c[(c[g>>2]|0)+12>>2]&63](g,m)|0;if(k<<24>>24!=m<<24>>24){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+1;cg(a[n>>0]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(!(_f(k,Wf()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function GG(a){a=a|0;CF(a);return}function HG(a){a=a|0;CF(a);SA(a);return}function IG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56768)|0;YF(i);IE(i,f);b=XF(i,56776)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(gH(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;wO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function JG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=fH(a,j,i,e,f,g)|0;zb=h;return g|0}function KG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eH(a,j,i,e,f,g)|0;zb=h;return g|0}function LG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=dH(a,j,i,e,f,g)|0;zb=h;return g|0}function MG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=cH(a,j,i,e,f,g)|0;zb=h;return g|0}function NG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=bH(a,j,i,e,f,g)|0;zb=h;return g|0}function OG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=ZG(a,j,i,e,f,g)|0;zb=h;return g|0}function PG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=YG(a,j,i,e,f,g)|0;zb=h;return g|0}function QG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=XG(a,j,i,e,f,g)|0;zb=h;return g|0}function RG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=UG(a,j,i,e,f,g)|0;zb=h;return g|0}function SG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+304|0;v=y+264|0;t=y+160|0;w=y+292|0;x=y+280|0;u=y+276|0;q=y;r=y+272|0;s=y+268|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function TG(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if((b|0)==(h|0)?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+104|0;h=0;while(1){m=l+(h<<2)|0;if((h|0)==26){m=i;break}if((c[m>>2]|0)==(b|0))break;else h=h+1|0}m=m-l|0;h=m>>2;if((m|0)>92)m=-1;else{switch(d|0){case 10:case 8:{if((h|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function UG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function VG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;IE(h,b);b=XF(h,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12960,d)|0;d=XF(h,56776)|0;b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[e>>2]=b;e=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;c[f>>2]=e;Ub[c[(c[d>>2]|0)+20>>2]&63](a,d);YF(h);zb=g;return}function WG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if((b|0)==(h|0))if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if((b|0)==(i|0)?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+128|0;h=0;while(1){o=n+(h<<2)|0;if((h|0)==32){o=i;break}if((c[o>>2]|0)==(b|0))break;else h=h+1|0}h=o-n|0;if((h|0)<=124){i=a[12928+(h>>2)>>0]|0;n=h+-88|0;switch(n>>>2|n<<30|0){case 2:case 3:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 1:case 0:{a[e>>0]=80;break}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}}}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>84)o=0;else{c[m>>2]=(c[m>>2]|0)+1;o=0}}else o=-1}while(0);return o|0}function XG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function YG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(WG(g,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function ZG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function _G(a,b,c){a=a|0;b=b|0;c=c|0;return aH(a,b,c)|0}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;IE(f,b);b=XF(f,56776)|0;g=Gb[c[(c[b>>2]|0)+16>>2]&127](b)|0;c[d>>2]=g;Ub[c[(c[b>>2]|0)+20>>2]&63](a,b);YF(f);zb=e;return}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=zb;zb=zb+16|0;e=a;IE(e,b);b=XF(e,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,d)|0;YF(e);zb=a;return d|0}function bH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function cH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function dH(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+304|0;s=C+300|0;z=C+288|0;A=C+276|0;t=C+272|0;u=C;w=C+268|0;x=C+264|0;y=qG(g)|0;r=_G(d,g,C+160|0)|0;$G(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(TG(g,y,d,t,x,c[s>>2]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=jE(c[d>>2]|0)|0;if(JE(d,iE()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=jE(c[d>>2]|0)|0;if(!(JE(d,iE()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function eH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function fH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function gH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}k=0;n=e;o=j;while(1){if((n|0)==(f|0))break;m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;k=k+1|0;l=l+-1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=jE(c[m>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!i)k=Ib[c[(c[g>>2]|0)+28>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+8+3|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=c[m+(t<<2)>>2]|0;if(!i)m=Ib[c[(c[g>>2]|0)+28>>2]&63](g,m)|0;if((k|0)!=(m|0)){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+4;jE(c[n>>2]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function hH(a){a=a|0;CF(a);return}function iH(a){a=a|0;CF(a);SA(a);return}function jH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56752)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+11|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+(h?c[j>>2]|0:b&255)|0))break;b=a[g>>0]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=cg(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+1;a[h>>0]=b;b=cg(b)|0}if(_f(b,Wf()|0)|0)c[d>>2]=0}g=g+1|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;jO(k)}zb=l;return b|0}function kH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1|0)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function lH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function mH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*(p<<1|21)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function pH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function qH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+96|0;l=b+72|0;k=b+80|0;h=b+48|0;j=b;m=b+76|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56736)|0;YF(l);Kb[c[(c[n>>2]|0)+32>>2]&15](n,h,k,j)|0;g=j+g|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=$f(l,j,(i|0)==(k|0)?g:j+(i-h)|0,g,e,f)|0;zb=b;return g|0}function rH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;c[h>>2]=f;f=ez(d)|0;d=Jx(a,b,e,h)|0;if(f|0)ez(f)|0;zb=g;return d|0}function sH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do switch((c[e+4>>2]&176)<<24>>24){case 16:{e=a[b>>0]|0;switch(e<<24>>24){case 43:case 45:{b=b+1|0;break a}default:{}}if((d-b|0)>1&e<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}b=b+2|0}else f=7;break}case 32:{b=d;break}default:f=7}while(0);return b|0}function tH(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}g=d&260;e=d&16384;f=(g|0)==260;if(f)h=0;else{a[b>>0]=46;a[b+1>>0]=42;h=1;b=b+2|0}while(1){d=a[c>>0]|0;if(!(d<<24>>24))break;a[b>>0]=d;c=c+1|0;b=b+1|0}a:do switch(g&511){case 4:{d=e>>>9&255^102;break}case 256:{d=e>>>9&255^101;break}default:{d=e>>>9&255;if(f){d=d^97;break a}else{d=d^103;break a}}}while(0);a[b>>0]=d;return h|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=bA(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function vH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56736)|0;r=XF(i,56752)|0;Ub[c[(c[r>>2]|0)+20>>2]&63](s,r);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{q=Ib[c[(c[t>>2]|0)+28>>2]&63](t,i)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=q;j=b+1|0;break}default:j=b}q=e;a:do if((q-j|0)>1?(a[j>>0]|0)==48:0){i=j+1|0;switch(a[i>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+28>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=o;j=j+2|0;p=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[i>>0]|0)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=j;while(1){if(i>>>0>=e>>>0)break a;p=a[i>>0]|0;if(!(_y(p,_F()|0)|0))break a;i=i+1|0}}else u=4;while(0);b:do if((u|0)==4){i=j;while(1){if(i>>>0>=e>>>0)break b;p=a[i>>0]|0;if(!(Zy(p,_F()|0)|0))break b;i=i+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((j|0)!=(i|0)){k=i;l=j;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[r>>2]|0)+16>>2]&127](r)|0;m=j;l=0;k=0;while(1){if(m>>>0>=i>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+1;a[w>>0]=x;m=m+1|0;l=l+1|0}k=f+(j-b)|0;j=c[h>>2]|0;if((k|0)==(j|0))k=t;else while(1){j=j+-1|0;if(k>>>0>=j>>>0){k=t;break c}x=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=x;k=k+1|0}}else{Kb[c[(c[t>>2]|0)+32>>2]&15](t,j,i,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(i-j);k=t}while(0);while(1){if(i>>>0>=e>>>0)break;j=a[i>>0]|0;if(j<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+28>>2]&63](t,j)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}if((u|0)==32){w=Gb[c[(c[r>>2]|0)+12>>2]&127](r)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}Kb[c[(c[t>>2]|0)+32>>2]&15](t,i,e,c[h>>2]|0)|0;x=(c[h>>2]|0)+(q-i)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b)|0;jO(s);zb=v;return}function wH(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=b;while(1){b=a[c>>0]|0;if(!(b<<24>>24))break;a[f>>0]=b;c=c+1|0;f=f+1|0}switch(e&74){case 64:{b=111;break}case 8:{b=e>>>9&32^120;break}default:b=d?100:117}a[f>>0]=b;return}function xH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56736)|0;l=XF(i,56752)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+1|0;k=k+1|0}i=f+(i-b)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-1|0;if(i>>>0>=j>>>0)break;t=a[i>>0]|0;a[i>>0]=a[j>>0]|0;a[j>>0]=t;i=i+1|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+32>>2]&15](p,b,e,f)|0;i=f+(e-b)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b)|0;jO(q);zb=r;return}function yH(a){a=a|0;CF(a);return}function zH(a){a=a|0;CF(a);SA(a);return}function AH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56776)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+8+3|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+((h?c[j>>2]|0:b&255)<<2)|0))break;b=c[g>>2]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=jE(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+4;c[h>>2]=b;b=jE(b)|0}if(JE(b,iE()|0)|0)c[d>>2]=0}g=g+4|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;wO(k)}zb=l;return b|0}function BH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function CH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function DH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|21)<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function EH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function FH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function GH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function HH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+208|0;l=b+184|0;k=b+192|0;h=b+160|0;j=b;m=b+188|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56768)|0;YF(l);Kb[c[(c[n>>2]|0)+48>>2]&15](n,h,k,j)|0;g=j+(g<<2)|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=IH(l,j,(i|0)==(k|0)?g:j+(i-h<<2)|0,g,e,f)|0;zb=b;return g|0}function IH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{o=d;j=f-o>>2;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;o=j-o|0;k=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;uO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+8+3>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){wO(m);break}else{c[b>>2]=0;wO(m);i=0;break a}}while(0);o=f-j|0;f=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function JH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56768)|0;q=XF(i,56776)|0;Ub[c[(c[q>>2]|0)+20>>2]&63](s,q);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{r=Ib[c[(c[t>>2]|0)+44>>2]&63](t,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=r;i=b+1|0;break}default:i=b}r=e;a:do if((r-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+44>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=o;i=i+2|0;p=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[j>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=p;j=i;while(1){if(j>>>0>=e>>>0)break a;p=a[j>>0]|0;if(!(_y(p,_F()|0)|0))break a;j=j+1|0}}else u=4;while(0);b:do if((u|0)==4){j=i;while(1){if(j>>>0>=e>>>0)break b;p=a[j>>0]|0;if(!(Zy(p,_F()|0)|0))break b;j=j+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((i|0)!=(j|0)){k=j;l=i;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[q>>2]|0)+16>>2]&127](q)|0;m=i;k=0;l=0;while(1){if(m>>>0>=j>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+4;c[w>>2]=x;m=m+1|0;l=l+1|0}i=f+(i-b<<2)|0;l=c[h>>2]|0;if((i|0)==(l|0))k=t;else{k=l;while(1){k=k+-4|0;if(i>>>0>=k>>>0){k=t;i=l;break c}x=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=x;i=i+4|0}}}else{Kb[c[(c[t>>2]|0)+48>>2]&15](t,i,j,c[h>>2]|0)|0;i=(c[h>>2]|0)+(j-i<<2)|0;c[h>>2]=i;k=t}while(0);while(1){if(j>>>0>=e>>>0)break;i=a[j>>0]|0;if(i<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+44>>2]&63](t,i)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}if((u|0)==32){w=Gb[c[(c[q>>2]|0)+12>>2]&127](q)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}Kb[c[(c[t>>2]|0)+48>>2]&15](t,j,e,i)|0;x=(c[h>>2]|0)+(r-j<<2)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b<<2)|0;jO(s);zb=v;return}function KH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56768)|0;l=XF(i,56776)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+1|0;k=k+1|0}i=f+(i-b<<2)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-4|0;if(i>>>0>=j>>>0)break;t=c[i>>2]|0;c[i>>2]=c[j>>2];c[j>>2]=t;i=i+4|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+48>>2]&15](p,b,e,f)|0;i=f+(e-b<<2)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b<<2)|0;jO(q);zb=r;return}function LH(a){a=a|0;CF(a);return}function MH(a){a=a|0;CF(a);SA(a);return}function NH(a){a=a|0;return 2}function OH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eI(a,j,i,e,f,g,49940,49948)|0;zb=h;return g|0}function PH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+11>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+(o?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=eI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function QH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];cI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function RH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];dI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function SH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];pI(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function TH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56736)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];cI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];dI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];fI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=eI(b,j,k,f,g,h,49900,49908)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=eI(b,j,k,f,g,h,49908,49916)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];gI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];hI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];iI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];jI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];kI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];lI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];mI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=eI(b,j,k,f,g,h,49916,49927)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=eI(b,j,k,f,g,h,49927,49932)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];nI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=eI(b,j,k,f,g,h,49932,49940)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];oI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];pI(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];qI(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];rI(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function UH(b){b=b|0;if((a[54872]|0)==0?nB(54872)|0:0){bI();c[14216]=53856;pB(54872)}return c[14216]|0}function VH(b){b=b|0;if((a[54856]|0)==0?nB(54856)|0:0){aI();c[14215]=53568;pB(54856)}return c[14215]|0}function WH(b){b=b|0;if((a[54840]|0)==0?nB(54840)|0:0){$H();c[14214]=53536;pB(54840)}return c[14214]|0}function XH(b){b=b|0;if((a[54832]|0)==0?nB(54832)|0:0){c[14211]=0;c[14212]=0;c[14213]=0;gO(56844,49658,Yf(49658)|0);pB(54832)}return 56844}function YH(b){b=b|0;if((a[54824]|0)==0?nB(54824)|0:0){c[14208]=0;c[14209]=0;c[14210]=0;gO(56832,49646,Yf(49646)|0);pB(54824)}return 56832}function ZH(b){b=b|0;if((a[54816]|0)==0?nB(54816)|0:0){c[14205]=0;c[14206]=0;c[14207]=0;gO(56820,49637,Yf(49637)|0);pB(54816)}return 56820}function _H(b){b=b|0;if((a[54808]|0)==0?nB(54808)|0:0){c[14202]=0;c[14203]=0;c[14204]=0;gO(56808,49628,Yf(49628)|0);pB(54808)}return 56808}function $H(){var b=0,d=0;if((a[54848]|0)==0?nB(54848)|0:0){d=53536;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53560);pB(54848)}nO(53536,49679)|0;nO(53548,49682)|0;return} +function sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g+8|0;e=g;d=We(b,0)|0;if(!d){c[e>>2]=b;Ue(0,3,20325,e);a=ox()|0;a=By(c[a>>2]|0)|0;c[f>>2]=57671;c[f+4>>2]=a;Ue(0,3,21881,f);a=-1}else{a=rd(a,d)|0;GO(d)}zb=g;return a|0}function td(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;f=a+(d<<5)|0;h=a+(d<<5)+8|0;i=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;g[c+(d<<5)+(e<<3)>>3]=+g[f>>3]*+g[b+(e<<3)>>3]+ +g[h>>3]*+g[b+32+(e<<3)>>3]+ +g[i>>3]*+g[b+64+(e<<3)>>3];e=e+1|0}i=c+(d<<5)+24|0;g[i>>3]=+g[a+(d<<5)+24>>3]+ +g[i>>3];d=d+1|0}return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,h=0,i=0,j=0;d=0;while(1){if((d|0)==3)break;h=a+(d<<5)|0;i=a+(d<<5)+8|0;j=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[b+(e<<2)>>2]*+g[h>>3]+ +f[b+16+(e<<2)>>2]*+g[i>>3]+ +f[b+32+(e<<2)>>2]*+g[j>>3];e=e+1|0}j=c+(d<<4)+12|0;f[j>>2]=+f[j>>2]+ +g[a+(d<<5)+24>>3];d=d+1|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;g=a+(d<<4)|0;h=a+(d<<4)+4|0;i=a+(d<<4)+8|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[g>>2]*+f[b+(e<<2)>>2]+ +f[h>>2]*+f[b+16+(e<<2)>>2]+ +f[i>>2]*+f[b+32+(e<<2)>>2];e=e+1|0}i=c+(d<<4)+12|0;f[i>>2]=+f[a+(d<<4)+12>>2]+ +f[i>>2];d=d+1|0}return 0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;h=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;f=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[h>>2]|0)+(e+f<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}d=c[h>>2]|0;f=d+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[d+120>>3]=1.0;Xd(h)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[(c[h>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(h)|0;return 0}function yd(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0;i=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;h=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[i>>2]|0)+(e+h<<3)>>3]=+f[a+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}d=c[i>>2]|0;h=d+96|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;g[d+120>>3]=1.0;Xd(i)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;f[b+(d<<4)+(e<<2)>>2]=+g[(c[i>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(i)|0;return 0}function zd(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Ad(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Oz(c,47)|0;if(!f){a[b>>0]=0;break}e=f+((e|0)!=0&1)-c|0;if((e+1|0)>>>0<=d>>>0){Wz(b,c,e)|0;a[b+e>>0]=0}else b=0}else b=0;while(0);return b|0}function Bd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;h=0;a:while(1){switch(a[b+h>>0]|0){case 0:break a;case 46:{e=h;break}default:{}}h=h+1|0}f=b+h|0;g=(Qy(d)|0)+2|0;if(!e)if((g+h|0)>(c|0))e=-1;else{a[f>>0]=46;e=h;i=9}else if((g+e|0)>(c|0))e=-1;else i=9;if((i|0)==9){a[b+(e+1)>>0]=0;aA(b,d)|0;e=0}return e|0}function Cd(b){b=b|0;var c=0,d=0;c=-1;d=0;a:while(1){switch(a[b+d>>0]|0){case 0:break a;case 46:{c=d;break}default:{}}d=d+1|0}if((c|0)!=-1)a[b+c>>0]=0;return 0}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<3,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<2,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Fd(a){a=a|0;var b=0;b=Dd(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Kd(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Gd(a,b){a=a|0;b=b|0;var d=0;d=Dd(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Nd(d,a,b)|0)<0){Ld(d)|0;d=0}}else d=0;return d|0}function Hd(a,b){a=a|0;b=b|0;var d=0;d=Ed(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Od(d,a,b)|0)<0){Md(d)|0;d=0}}else d=0;return d|0}function Id(a){a=a|0;var b=0;b=Dd(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($d(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Jd(a){a=a|0;var b=0;b=Ed(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if((ae(b,a)|0)<0){Md(b)|0;b=0}}else b=0;return b|0}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+4>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+8>>2]|0)):0){e=0;while(1){if((e|0)>=(h|0)){d=0;break a}f=B(e,i)|0;d=0;while(1){if((d|0)>=(i|0))break;j=d+f|0;g[(c[a>>2]|0)+(j<<3)>>3]=+g[(c[b>>2]|0)+(j<<3)>>3];d=d+1|0}e=e+1|0}}else d=-1;while(0);return d|0}function Ld(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Md(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;g[a>>3]=0.0;e=(c[d>>2]|0)+(j<<3)|0;f=(c[b>>2]|0)+(l<<3)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +g[f>>3]*+g[e>>3];g[a>>3]=p;e=e+(m<<3)|0;f=f+8|0;h=h+1|0;i=p}j=j+1|0;a=a+8|0}k=k+1|0}}else a=-1;while(0);return a|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;f[a>>2]=0.0;e=(c[d>>2]|0)+(j<<2)|0;g=(c[b>>2]|0)+(l<<2)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +f[g>>2]*+f[e>>2];f[a>>2]=p;e=e+(m<<2)|0;g=g+4|0;h=h+1|0;i=p}j=j+1|0;a=a+4|0}k=k+1|0}}else a=-1;while(0);return a|0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;j=c[a+8>>2]|0;f=(i|0)<(j|0)?i:j;a:do if(((((!((i|0)<2|(j|0)<2)?(c[b+8>>2]|0)==(j|0):0)?(c[b+4>>2]|0)==(f|0):0)?(k=d+4|0,(c[k>>2]|0)==(f|0)):0)?(c[e+4>>2]|0)==(j|0):0)?(l=Fd(a)|0,(l|0)!=0):0){h=+u(+(+(i|0)));if((Qd(l,e)|0)<0){Ld(l)|0;a=-1;break}if((Rd(l,e)|0)<0){Ld(l)|0;a=-1;break}f=B(j,i)|0;a=0;while(1){if((a|0)>=(f|0))break;j=(c[l>>2]|0)+(a<<3)|0;g[j>>3]=+g[j>>3]/h;a=a+1|0}a=Sd(l,b,d)|0;Ld(l)|0;e=c[k>>2]|0;h=0.0;f=0;while(1){if((f|0)>=(e|0))break;h=h+ +g[(c[d>>2]|0)+(f<<3)>>3];f=f+1|0}f=0;while(1){if((f|0)>=(e|0))break a;l=(c[d>>2]|0)+(f<<3)|0;g[l>>3]=+g[l>>3]/h;f=f+1|0}}else a=-1;while(0);return a|0}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,i=0,j=0,k=0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;a:do if(!((j|0)<1|(k|0)<1)?(c[b+4>>2]|0)==(k|0):0){d=0;while(1){if((d|0)==(k|0))break;g[(c[b>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}a=c[a>>2]|0;h=0;while(1){if((h|0)==(j|0))break;d=0;f=c[b>>2]|0;i=a;while(1){if((d|0)==(k|0))break;g[f>>3]=+g[i>>3]+ +g[f>>3];d=d+1|0;f=f+8|0;i=i+8|0}a=a+(k<<3)|0;h=h+1|0}e=+(j|0);d=0;while(1){if((d|0)==(k|0)){d=0;break a}j=(c[b>>2]|0)+(d<<3)|0;g[j>>3]=+g[j>>3]/e;d=d+1|0}}else d=-1;while(0);return d|0}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;i=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(i|0)){f=0;a=c[a>>2]|0;while(1){if((f|0)>=(h|0)){a=0;break a}d=0;e=c[b>>2]|0;while(1){if((d|0)>=(i|0))break;g[a>>3]=+g[a>>3]-+g[e>>3];d=d+1|0;e=e+8|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=c[a+4>>2]|0;f=c[a+8>>2]|0;i=(f|0)<(e|0)?f:e;a:do if(((!((e|0)<2|(f|0)<2)?(c[b+8>>2]|0)==(f|0):0)?(c[b+4>>2]|0)==(i|0):0)?(c[d+4>>2]|0)==(i|0):0){h=Dd(i,i)|0;if((c[h+4>>2]|0)==(i|0)?(c[h+8>>2]|0)==(i|0):0){e=(e|0)<(f|0);if(e){if((Td(a,h)|0)<0){Ld(h)|0;e=-1;break}}else if((Ud(a,h)|0)<0){Ld(h)|0;e=-1;break}if((Vd(h,d)|0)<0){Ld(h)|0;e=-1;break}b:do if(e){if((Wd(a,h,b,d)|0)<0){Ld(h)|0;e=-1;break a}}else{a=0;f=c[h>>2]|0;e=c[b>>2]|0;while(1){if((a|0)>=(i|0))break;if(+g[(c[d>>2]|0)+(a<<3)>>3]<1.0e-16)break;b=0;while(1){if((b|0)>=(i|0))break;g[e>>3]=+g[f>>3];b=b+1|0;f=f+8|0;e=e+8|0}a=a+1|0}while(1){if((a|0)>=(i|0))break b;g[(c[d>>2]|0)+(a<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(i|0))break;g[e>>3]=0.0;f=f+1|0;e=e+8|0}a=a+1|0}}while(0);Ld(h)|0;e=0;break}Ld(h)|0;e=-1}else e=-1;while(0);return e|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0;n=c[a+4>>2]|0;o=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}l=B(e,o)|0;d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{f=c[a>>2]|0;i=f+((B(d,o)|0)<<3)|0;g[j>>3]=0.0;b=0;f=f+(l<<3)|0;m=0.0;while(1){if((b|0)>=(o|0))break b;p=m+ +g[f>>3]*+g[i>>3];g[j>>3]=p;b=b+1|0;f=f+8|0;i=i+8|0;m=p}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0;m=c[a+4>>2]|0;n=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{i=c[a>>2]|0;g[j>>3]=0.0;b=0;f=i+(e<<3)|0;i=i+(d<<3)|0;l=0.0;while(1){if((b|0)>=(m|0))break b;o=l+ +g[f>>3]*+g[i>>3];g[j>>3]=o;b=b+1|0;f=f+(n<<3)|0;i=i+(n<<3)|0;l=o}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;F=zb;zb=zb+16|0;d=F;E=c[a+4>>2]|0;do if((!((E|0)<2?1:(E|0)!=(c[a+8>>2]|0))?(c[b+4>>2]|0)==(E|0):0)?(C=qe(E)|0,(C|0)!=0):0){D=E+-1|0;c[d+4>>2]=D;c[d>>2]=(c[C>>2]|0)+8;if((ue(a,b,d)|0)<0){re(C)|0;d=-1;break}A=c[C>>2]|0;g[A>>3]=0.0;y=D;while(1){if((y|0)<=0)break;z=y;while(1){if((z|0)<=0)break;n=+t(+(+g[A+(z<<3)>>3]));x=c[b>>2]|0;d=z+-1|0;o=+t(+(+g[x+(d<<3)>>3]));if(n>(o+ +t(+(+g[x+(z<<3)>>3])))*1.0e-06)z=d;else break}q=y+-1|0;a:do if((z|0)!=(y|0)){r=A+(y<<3)|0;s=A+(z+1<<3)|0;p=0;do{if(p>>>0>99)break a;p=p+1|0;v=c[b>>2]|0;w=v+(q<<3)|0;x=v+(y<<3)|0;h=+g[x>>3];o=(+g[w>>3]-h)*.5;m=+g[r>>3];m=m*m;j=+u(+(m+o*o));l=z;n=+g[s>>3];j=+g[v+(z<<3)>>3]-h+m/(o+(o<0.0?-j:j));while(1){if((l|0)>=(y|0))break;h=+t(+j);if(h>=+t(+n))if(h>1.0e-16){h=-n/j;o=1.0/+u(+(h*h+1.0));m=o;o=h*o}else{m=1.0;o=0.0}else{m=-j/n;o=1.0/+u(+(m*m+1.0));m=m*o}f=v+(l<<3)|0;I=+g[f>>3];k=l+1|0;d=v+(k<<3)|0;H=+g[d>>3];h=I-H;i=A+(k<<3)|0;G=o*(o*h+m*2.0*+g[i>>3]);g[f>>3]=I-G;g[d>>3]=H+G;d=A+(l<<3)|0;if((l|0)>(z|0))g[d>>3]=m*+g[d>>3]-n*o;I=+g[i>>3];g[i>>3]=I+o*(m*h-o*2.0*I);e=B(l,E)|0;f=B(k,E)|0;d=0;h=n;while(1){if((d|0)==(E|0))break;J=c[a>>2]|0;K=J+(d+e<<3)|0;j=+g[K>>3];J=J+(d+f<<3)|0;h=+g[J>>3];g[K>>3]=m*j-o*h;g[J>>3]=o*j+m*h;d=d+1|0}if((l|0)<(q|0)){j=+g[i>>3];K=A+(l+2<<3)|0;h=+g[K>>3];g[K>>3]=m*h;h=-(o*h)}l=k;n=h}H=+t(+(+g[r>>3]));I=+t(+(+g[w>>3]))}while(H>(I+ +t(+(+g[x>>3])))*1.0e-06)}while(0);y=q}d=0;while(1){if((d|0)==(D|0))break;f=c[b>>2]|0;i=f+(d<<3)|0;j=+g[i>>3];l=d+1|0;h=j;k=d;e=l;while(1){if((e|0)>=(E|0))break;I=+g[f+(e<<3)>>3];K=I>h;h=K?I:h;k=K?e:k;e=e+1|0}g[f+(k<<3)>>3]=j;g[i>>3]=h;e=c[a>>2]|0;f=e+((B(d,E)|0)<<3)|0;d=e+((B(k,E)|0)<<3)|0;e=0;while(1){if((e|0)==(E|0))break;I=+g[d>>3];g[d>>3]=+g[f>>3];g[f>>3]=I;f=f+8|0;d=d+8|0;e=e+1|0}d=l}re(C)|0;d=0}else d=-1;while(0);zb=F;return d|0}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0;p=c[a+4>>2]|0;q=c[a+8>>2]|0;a:do if(((((!((p|0)<1|(q|0)<1)?(c[b+4>>2]|0)==(p|0):0)?(c[b+8>>2]|0)==(p|0):0)?(c[d+4>>2]|0)==(p|0):0)?(c[d+8>>2]|0)==(q|0):0)?(c[e+4>>2]|0)==(p|0):0){h=0;d=c[d>>2]|0;while(1){if((h|0)>=(p|0))break;i=+g[(c[e>>2]|0)+(h<<3)>>3];if(i<1.0e-16)break;n=1.0/+u(+(+t(+i)));o=B(h,p)|0;j=0;m=d;while(1){if((j|0)==(q|0))break;f=0;k=(c[b>>2]|0)+(o<<3)|0;i=0.0;l=(c[a>>2]|0)+(j<<3)|0;while(1){if((f|0)==(p|0))break;r=i+ +g[k>>3]*+g[l>>3];f=f+1|0;k=k+8|0;i=r;l=l+(q<<3)|0}g[m>>3]=n*i;j=j+1|0;m=m+8|0}h=h+1|0;d=d+(q<<3)|0}while(1){if((h|0)>=(p|0)){d=0;break a}g[(c[e>>2]|0)+(h<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(q|0))break;g[d>>3]=0.0;f=f+1|0;d=d+8|0}h=h+1|0}}else d=-1;while(0);return d|0}function Xd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((Yd(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{g[a>>3]=1.0/+g[a>>3];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<3)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<3)|0;k=0.0;e=m;i=-1;f=l;while(1){if((f|0)==(b|0))break;r=+t(+(+g[e>>3]));j=k>2]|0;f=p+(l<<2)|0;c[e>>2]=c[f>>2];c[f>>2]=h;f=0;h=m;e=a+((B(i,d)|0)<<3)|0;while(1){if((f|0)==(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+8|0;e=e+8|0}k=+g[m>>3];e=1;f=m;while(1){if((e|0)==(b|0))break;j=f+8|0;g[f>>3]=+g[j>>3]/k;e=e+1|0;f=j}g[n>>3]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<3)|0;k=+g[i>>3];f=m;h=1;while(1){if((h|0)==(b|0))break;s=i+8|0;g[i>>3]=+g[s>>3]-k*+g[f>>3];f=f+8|0;h=h+1|0;i=s}g[j>>3]=-(k*+g[n>>3])}e=e+1|0;j=j+(d<<3)|0}l=l+1|0;n=n+(d<<3)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];f=0;h=a+(j<<3)|0;e=a+(i<<3)|0;while(1){if((f|0)>=(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+(d<<3)|0;e=e+(d<<3)|0}j=j+1|0}}while(0);zb=q;return a|0}function Zd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((_d(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function _d(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{f[a>>2]=1.0/+f[a>>2];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<2)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<2)|0;k=0.0;e=m;i=-1;g=l;while(1){if((g|0)==(b|0))break;r=+t(+(+f[e>>2]));j=k>2]|0;g=p+(l<<2)|0;c[e>>2]=c[g>>2];c[g>>2]=h;g=0;h=m;e=a+((B(i,d)|0)<<2)|0;while(1){if((g|0)==(b|0))break;j=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=j;g=g+1|0;h=h+4|0;e=e+4|0}k=+f[m>>2];e=1;g=m;while(1){if((e|0)==(b|0))break;j=g+4|0;f[g>>2]=+f[j>>2]/k;e=e+1|0;g=j}f[n>>2]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<2)|0;k=+f[i>>2];g=m;h=1;while(1){if((h|0)==(b|0))break;s=i+4|0;f[i>>2]=+f[s>>2]-k*+f[g>>2];g=g+4|0;h=h+1|0;i=s}f[j>>2]=-(k*+f[n>>2])}e=e+1|0;j=j+(d<<2)|0}l=l+1|0;n=n+(d<<2)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];g=0;h=a+(j<<2)|0;e=a+(i<<2)|0;while(1){if((g|0)>=(b|0))break;s=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=s;g=g+1|0;h=h+(d<<2)|0;e=e+(d<<2)|0}j=j+1|0}}while(0);zb=q;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+8>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(h|0)){a=0;break a}d=(c[b>>2]|0)+(f<<3)|0;e=0;while(1){if((e|0)>=(i|0))break;g[a>>3]=+g[d>>3];d=d+(h<<3)|0;e=e+1|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;a:do if((g|0)==(c[b+8>>2]|0)?(h=c[a+8>>2]|0,(h|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(g|0)){a=0;break a}d=(c[b>>2]|0)+(f<<2)|0;e=0;while(1){if((e|0)>=(h|0))break;c[a>>2]=c[d>>2];d=d+(g<<2)|0;e=e+1|0;a=a+4|0}f=f+1|0}}else a=-1;while(0);return a|0}function be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0;h=+(b|0)/+(c[a>>2]|0);f=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;while(1){if((b|0)==4)break;g[e+8+(b<<3)>>3]=h*+g[a+8+(b<<3)>>3];g[e+40+(b<<3)>>3]=f*+g[a+40+(b<<3)>>3];g[e+72+(b<<3)>>3]=+g[a+72+(b<<3)>>3];b=b+1|0}b=c[a+176>>2]|0;switch(b|0){case 4:{g[e+104>>3]=+g[a+104>>3];g[e+112>>3]=+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=h*+g[a+136>>3];g[e+144>>3]=f*+g[a+144>>3];g[e+152>>3]=h*+g[a+152>>3];g[e+160>>3]=f*+g[a+160>>3];g[e+168>>3]=+g[a+168>>3];i=9;break}case 3:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=+g[a+136>>3]/(h*f);g[e+144>>3]=+g[a+144>>3]/(f*(h*h*f));i=9;break}case 2:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);g[e+136>>3]=+g[a+136>>3]/(f*(h*h*f));i=9;break}case 1:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);i=9;break}default:b=-1}if((i|0)==9){c[e+176>>2]=b;b=0}return b|0}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;h=zb;zb=zb+96|0;f=h;a:do if(!(+g[a+88>>3]>=0.0)){d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=-+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}else{d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}while(0);d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=0.0;e=e+1|0}d=d+1|0}i=+g[f+64>>3];n=+g[f+72>>3];o=+g[f+80>>3];w=+de(i,n,o);a=b+80|0;g[a>>3]=w;w=i/w;u=c+64|0;g[u>>3]=w;n=n/+g[a>>3];s=c+72|0;g[s>>3]=n;o=o/+g[a>>3];p=c+80|0;g[p>>3]=o;m=c+88|0;g[m>>3]=+g[f+88>>3]/+g[a>>3];i=+g[f+32>>3];j=+g[f+40>>3];r=+g[f+48>>3];o=+ee(w,n,o,i,j,r);l=b+48|0;g[l>>3]=o;i=i-o*+g[u>>3];j=j-o*+g[s>>3];o=r-o*+g[p>>3];r=+de(i,j,o);k=b+40|0;g[k>>3]=r;v=c+32|0;g[v>>3]=i/r;t=c+40|0;g[t>>3]=j/+g[k>>3];q=c+48|0;g[q>>3]=o/+g[k>>3];o=+g[f>>3];j=+g[f+8>>3];r=+g[f+16>>3];i=+ee(+g[u>>3],+g[s>>3],+g[p>>3],o,j,r);d=b+16|0;g[d>>3]=i;n=+ee(+g[v>>3],+g[t>>3],+g[q>>3],o,j,r);e=b+8|0;g[e>>3]=n;o=o-n*+g[v>>3]-i*+g[u>>3];j=j-n*+g[t>>3]-i*+g[s>>3];i=r-n*+g[q>>3]-i*+g[p>>3];n=+de(o,j,i);g[b>>3]=n;g[c>>3]=o/n;g[c+8>>3]=j/+g[b>>3];g[c+16>>3]=i/+g[b>>3];i=+g[m>>3];j=(+g[f+56>>3]-+g[l>>3]*i)/+g[k>>3];g[c+56>>3]=j;g[c+24>>3]=(+g[f+24>>3]-j*+g[e>>3]-i*+g[d>>3])/+g[b>>3];d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==3)break;v=b+(d<<5)+(e<<3)|0;g[v>>3]=+g[v>>3]/+g[a>>3];e=e+1|0}d=d+1|0}zb=h;return 0}function de(a,b,c){a=+a;b=+b;c=+c;return +(+u(+(a*a+b*b+c*c)))}function ee(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;return +(a*d+b*e+c*f)}function fe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;switch(f|0){case 4:{t=+g[a>>3];v=+g[a+8>>3];r=+g[a+16>>3];s=+g[a+24>>3];x=+g[a+32>>3];y=+g[a+40>>3];z=+g[a+48>>3];A=+g[a+56>>3];w=+g[a+64>>3];q=(b-z)/x;l=(c-A)/y;m=r*2.0;n=s*6.0;o=s*2.0;p=r*6.0;i=q;j=l;k=q*q;b=l*l;f=1;while(1){if(!(b!=0.0|k!=0.0)){c=0.0;b=0.0;break}D=b+k;C=t*D+1.0+D*(v*D);c=k*3.0;B=b*c;c=i-(s*(D+k*2.0)+(j*(m*i)+i*C)-q)/(n*i+(m*j+(t*(b+c)+1.0+v*(b*b+(k*(k*5.0)+B)))));i=o*c;b=j-(r*(b*2.0+D)+j*C+j*i-l)/(p*j+(t*(k+b*3.0)+1.0+v*(b*(b*5.0)+(k*k+B)))+i);if((f|0)==4)break;i=c;j=b;k=c*c;b=b*b;f=f+1|0}g[d>>3]=z+x*c/w;b=A+y*b/w;h=22;break}case 3:{p=+g[a>>3];b=(b-p)/+g[a+24>>3];h=a+8|0;c=c-+g[h>>3];k=+g[a+32>>3]/1.0e8;l=+g[a+40>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;j=b*b+c*c;i=j;f=f+1|0;j=+u(+j)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 2:{p=+g[a>>3];b=b-p;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;l=+g[a+32>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 1:{n=+g[a>>3];b=b-n;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;i=b*b+c*c;l=+u(+i);m=k*3.0;f=1;j=l;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i)-l)/(1.0-m*i);b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=n+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}default:f=-1}if((h|0)==22){g[e>>3]=b;f=0}return f|0}function ge(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do switch(f|0){case 4:{h=+g[a+16>>3];l=+g[a+24>>3];o=+g[a+32>>3];m=+g[a+40>>3];p=+g[a+48>>3];n=+g[a+56>>3];i=+g[a+64>>3];k=(b-p)*i/o;c=(c-n)*i/m;i=k*k+c*c;b=+g[a>>3]*i+1.0+i*(+g[a+8>>3]*i);g[d>>3]=p+o*(l*(i+k*(k*2.0))+(c*(h*2.0*k)+k*b));b=n+m*(c*(l*2.0*k)+(h*(i+c*(c*2.0))+c*b));j=12;break}case 3:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+32>>3]/1.0e8)-p*(p*(+g[a+40>>3]/1.0e8/1.0e5));g[d>>3]=i+ +g[a+24>>3]*(h*p);b=+g[f>>3]+b*p;j=12;break a}}case 2:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+24>>3]/1.0e8)-p*(p*(+g[a+32>>3]/1.0e8/1.0e5));g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}case 1:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=1.0-(h*h+b*b)*(+g[a+24>>3]/1.0e8);g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}default:f=-1}while(0);if((j|0)==12){g[e>>3]=b;f=0}return f|0}function he(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+192|0;f=g;ie(a,f);ie(a+4|0,f+4|0);b=0;while(1){if((b|0)==3)break;d=0;while(1){if((d|0)==4)break;je(a+8+(b<<5)+(d<<3)|0,f+8+(b<<5)+(d<<3)|0);d=d+1|0}b=b+1|0}d=a+176|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[1712+(e+-1<<3)>>2]|0))break;je(a+104+(b<<3)|0,f+104+(b<<3)|0);b=b+1|0}c[f+176>>2]=e;_O(a|0,f|0,184)|0;zb=g;return}function ie(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==4)break;a[c+d>>0]=a[b+(3-d)>>0]|0;d=d+1|0}return}function je(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==8)break;a[c+d>>0]=a[b+(7-d)>>0]|0;d=d+1|0}return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+256|0;n=s+248|0;l=s+240|0;k=s+232|0;j=s+224|0;i=s+216|0;h=s+208|0;f=s+200|0;p=s;q=s+16|0;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=rz(a,22236)|0;if(!r){r=ox()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Ue(0,3,20359,f);a=ox()|0;a=By(c[a>>2]|0)|0;c[h>>2]=57671;c[h+4>>2]=a;Ue(0,3,21881,h);a=-1;break}Kz(r,0,2)|0;a:do if(!(Bz(r)|0)){h=hA(r)|0;iA(r);f=0;while(1){if(f>>>0>=4){o=9;break}a=c[1712+(f<<3)+4>>2]|0;f=f+1|0;if(!((h|0)%(a|0)|0)){m=f;break}}do if((o|0)==9)if((f|0)==4){Ue(0,3,20473,k);a=-1;break a}else{m=0;a=c[1712+(0<<3)+4>>2]|0;break}while(0);if((gA(q,a,1,r)|0)!=1){a=ox()|0;c[l>>2]=c[a>>2];Ue(0,3,20553,l);a=ox()|0;a=By(c[a>>2]|0)|0;c[n>>2]=57671;c[n+4>>2]=a;Ue(0,3,21881,n);a=-1;break}j=q+176|0;c[j>>2]=m;he(q);k=(m|0)==1;l=q+120|0;if(k){t=+g[l>>3];i=q+128|0;g[l>>3]=+g[i>>3];g[i>>3]=t}else i=q+128|0;_O(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;a=1;while(1){if((a|0)>=(b|0)){a=0;break a}e=(c[p>>2]|0)+(4-1)&~(4-1);h=c[e>>2]|0;c[p>>2]=e+4;c[h+176>>2]=c[f>>2];if((gA(q,c[1712+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[j>>2]=m;he(q);if(k){t=+g[l>>3];g[l>>3]=+g[i>>3];g[i>>3]=t}_O(h|0,q|0,184)|0;a=a+1|0}}else{a=ox()|0;c[i>>2]=c[a>>2];Ue(0,3,20428,i);a=ox()|0;a=By(c[a>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=a;Ue(0,3,21881,j);a=-1}while(0);xz(r)|0}else a=-1;while(0);zb=s;return a|0}function le(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+416|0;j=o+304|0;m=o+208|0;k=o+128|0;n=o;l=c[a>>2]|0;f=c[a+4>>2]|0;a:do if((ce(a+8|0,j,m)|0)<0)Ue(0,3,20591,o+400|0);else{i=+(f+-1|0);a=0;while(1){if((a|0)==4)break;f=j+32+(a<<3)|0;g[f>>3]=+g[j+64+(a<<3)>>3]*i-+g[f>>3];a=a+1|0}h=+g[j+80>>3];f=0;while(1){if((f|0)==3)break;a=0;while(1){if((a|0)==3)break;g[k+(f*24|0)+(a<<3)>>3]=+g[j+(f<<5)+(a<<3)>>3]/h;a=a+1|0}f=f+1|0}h=+(l+-1|0);g[n>>3]=+g[k>>3]*2.0/h;g[n+8>>3]=+g[k+8>>3]*2.0/h;g[n+16>>3]=-(+g[k+16>>3]*2.0/h+-1.0);f=n+24|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+40>>3]=-(+g[k+32>>3]*2.0/i);g[n+48>>3]=-(+g[k+40>>3]*2.0/i+-1.0);f=n+56|0;h=b-d;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[n+80>>3]=(b+d)/h;g[n+88>>3]=d*2.0*b/h;f=n+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+112>>3]=-1.0;g[n+120>>3]=0.0;h=+g[m+24>>3];i=+g[m+56>>3];b=+g[m+88>>3];f=0;while(1){if((f|0)==4)break a;d=+g[n+(f<<5)>>3];j=n+(f<<5)+8|0;k=n+(f<<5)+16|0;a=0;while(1){if((a|0)==3)break;g[e+((a<<2)+f<<3)>>3]=d*+g[m+(a<<3)>>3]+ +g[j>>3]*+g[m+32+(a<<3)>>3]+ +g[k>>3]*+g[m+64+(a<<3)>>3];a=a+1|0}g[e+(f+12<<3)>>3]=+g[n+(f<<5)+24>>3]+(d*h+ +g[j>>3]*i+ +g[k>>3]*b);f=f+1|0}}while(0);zb=o;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+64|0;n=s+24|0;o=s+16|0;p=s+8|0;q=s;r=FO(208)|0;if(!r){Ue(0,3,41858,s+32|0);Ea(1)}_O(r|0,a|0,184)|0;m=b<<1;l=(c[a>>2]|0)+m|0;c[r+192>>2]=l;m=(c[a+4>>2]|0)+m|0;c[r+196>>2]=m;c[r+200>>2]=b;c[r+204>>2]=b;d=B(l<<3,m)|0;e=FO(d)|0;c[r+184>>2]=e;if(!e){Ue(0,3,41858,s+40|0);Ea(1)}d=FO(d)|0;c[r+188>>2]=d;if(!d){Ue(0,3,41858,s+48|0);Ea(1)}k=a+104|0;j=c[a+176>>2]|0;i=0;a=e;while(1){if((i|0)>=(m|0))break;h=+(i-b|0);e=0;while(1){if((e|0)>=(l|0))break;t=+(e-b|0);ge(k,t,h,p,q,j)|0;f[a>>2]=+g[p>>3];f[a+4>>2]=+g[q>>3];fe(k,t,h,n,o,j)|0;f[d>>2]=+g[n>>3];f[d+4>>2]=+g[o>>3];e=e+1|0;d=d+8|0;a=a+8|0}i=i+1|0}zb=s;return r|0}function ne(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){GO(c[b+184>>2]|0);GO(c[(c[a>>2]|0)+188>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;a=0}else a=-1;return a|0}function oe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function pe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a+4>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function qe(a){a=a|0;var b=0,d=0;b=FO(8)|0;do if(b){d=FO(a<<3)|0;c[b>>2]=d;if(!d){GO(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function re(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function se(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0;b=+u(+(+te(a,a)));a:do if(b!=0.0){f=c[a>>2]|0;e=+g[f>>3];b=e<0.0?-b:b;e=e+b;g[f>>3]=e;e=1.0/+u(+(b*e));d=c[a+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;h=f+(a<<3)|0;g[h>>3]=e*+g[h>>3];a=a+1|0}}while(0);return +-b}function te(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))Ea(0);d=0;e=0.0;while(1){if((d|0)>=(f|0))break;h=e+ +g[(c[a>>2]|0)+(d<<3)>>3]*+g[(c[b>>2]|0)+(d<<3)>>3];d=d+1|0;e=h}return +e}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;u=x+8|0;v=x;w=c[a+8>>2]|0;a:do if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){r=w+-2|0;s=u+4|0;t=v+4|0;l=0;while(1){if((l|0)>=(r|0))break;m=(c[a>>2]|0)+((B(l,w)|0)<<3)|0;g[(c[b>>2]|0)+(l<<3)>>3]=+g[m+(l<<3)>>3];i=w-l+-1|0;c[s>>2]=i;p=l+1|0;k=m+(p<<3)|0;c[u>>2]=k;o=+se(u);g[(c[d>>2]|0)+(l<<3)>>3]=o;b:do if(!(o==0.0)){h=p;while(1){if((h|0)>=(w|0))break;e=p;j=0.0;while(1){if(e>>>0>=h>>>0)break;f=(c[a>>2]|0)+((B(e,w)|0)+h<<3)|0;o=j+ +g[f>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}f=B(h,w)|0;e=h;while(1){if((e|0)>=(w|0))break;o=j+ +g[(c[a>>2]|0)+(e+f<<3)>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}g[(c[b>>2]|0)+(h<<3)>>3]=j;h=h+1|0}c[t>>2]=i;c[s>>2]=i;c[u>>2]=k;c[v>>2]=(c[b>>2]|0)+(p<<3);o=+te(u,v)*.5;e=w;while(1){e=e+-1|0;if((e|0)<=(l|0))break b;j=+g[m+(e<<3)>>3];h=c[b>>2]|0;i=h+(e<<3)|0;n=+g[i>>3]-o*j;g[i>>3]=n;i=B(e,w)|0;f=e;while(1){if((f|0)>=(w|0))break;k=(c[a>>2]|0)+(f+i<<3)|0;g[k>>3]=+g[k>>3]-(j*+g[h+(f<<3)>>3]+n*+g[m+(f<<3)>>3]);f=f+1|0}}}while(0);l=p}if((w|0)<=1)if((w|0)==1){h=0;e=c[a>>2]|0;f=c[b>>2]|0;q=27}else i=w;else{e=c[a>>2]|0;q=B(r,w)|0;f=c[b>>2]|0;g[f+(r<<3)>>3]=+g[e+(q+r<<3)>>3];h=w+-1|0;g[(c[d>>2]|0)+(r<<3)>>3]=+g[e+(h+q<<3)>>3];q=27}if((q|0)==27){e=e+((B(h,w)|0)+h<<3)|0;i=w;j=+g[e>>3];e=f+(h<<3)|0;q=28}while(1){if((q|0)==28)g[e>>3]=j;d=i+-1|0;if((i|0)<=0){e=0;break a}m=(c[a>>2]|0)+((B(d,w)|0)<<3)|0;c:do if((i|0)<=(r|0)){h=w-d+-1|0;k=m+(i<<3)|0;e=i;while(1){if((e|0)>=(w|0))break c;c[t>>2]=h;c[s>>2]=h;c[u>>2]=k;l=B(e,w)|0;c[v>>2]=(c[a>>2]|0)+(l+i<<3);j=+te(u,v);f=i;while(1){if((f|0)>=(w|0))break;q=(c[a>>2]|0)+(f+l<<3)|0;g[q>>3]=+g[q>>3]-j*+g[m+(f<<3)>>3];f=f+1|0}e=e+1|0}}while(0);e=0;while(1){if((e|0)>=(w|0))break;g[m+(e<<3)>>3]=0.0;e=e+1|0}i=d;j=1.0;e=m+(d<<3)|0;q=28}}else e=-1;while(0);zb=x;return e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;f=+g[c>>3];h=+g[c+8>>3];e=+g[c+16>>3];d=+g[b+88>>3]+(f*+g[b+64>>3]+h*+g[b+72>>3]+e*+g[b+80>>3]);if(d==0.0)c=-1;else{i=+g[b+56>>3]+(f*+g[b+32>>3]+h*+g[b+40>>3]+e*+g[b+48>>3]);g[a>>3]=(+g[b+24>>3]+(f*+g[b>>3]+h*+g[b+8>>3]+e*+g[b+16>>3]))/d;g[a+8>>3]=i/d;c=0}return c|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0;j=zb;zb=zb+224|0;h=j+48|0;i=j;f=j+192|0;xe(h,f,c,d);a:do if((ye(i,b,f)|0)<0){Ue(0,3,20661,j+216|0);b=-1}else{c=0;while(1){if((c|0)==2){b=0;break a}d=0;while(1){if((d|0)==6)break;f=a+(c*48|0)+(d<<3)|0;g[f>>3]=0.0;b=0;e=0.0;while(1){if((b|0)==3)break;k=e+ +g[i+(c*24|0)+(b<<3)>>3]*+g[h+(b*48|0)+(d<<3)>>3];g[f>>3]=k;b=b+1|0;e=k}d=d+1|0}c=c+1|0}}while(0);zb=j;return b|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=zb;zb=zb+864|0;h=j+576|0;i=j;u=c+8|0;e=d+8|0;n=+g[e>>3];t=c+16|0;v=d+16|0;l=+g[v>>3];g[b>>3]=+g[c+24>>3]+(+g[c>>3]*+g[d>>3]+ +g[u>>3]*n+ +g[t>>3]*l);s=c+32|0;o=+g[d>>3];r=c+40|0;q=c+48|0;g[b+8>>3]=+g[c+56>>3]+(+g[s>>3]*o+n*+g[r>>3]+l*+g[q>>3]);p=c+64|0;d=c+72|0;n=+g[e>>3];e=c+80|0;g[b+16>>3]=+g[c+88>>3]+(o*+g[p>>3]+ +g[d>>3]*n+l*+g[e>>3]);l=+g[c>>3];g[h>>3]=o*l;g[h+8>>3]=n*l;m=+g[v>>3];g[h+16>>3]=l*m;k=+g[u>>3];g[h+24>>3]=o*k;g[h+32>>3]=n*k;g[h+40>>3]=m*k;f=+g[t>>3];g[h+48>>3]=o*f;g[h+56>>3]=n*f;g[h+64>>3]=m*f;g[h+72>>3]=l;g[h+80>>3]=k;g[h+88>>3]=f;f=+g[s>>3];g[h+96>>3]=o*f;g[h+104>>3]=n*f;g[h+112>>3]=m*f;k=+g[r>>3];g[h+120>>3]=o*k;g[h+128>>3]=n*k;g[h+136>>3]=m*k;l=+g[q>>3];g[h+144>>3]=o*l;g[h+152>>3]=n*l;g[h+160>>3]=m*l;g[h+168>>3]=f;g[h+176>>3]=k;g[h+184>>3]=l;l=+g[p>>3];g[h+192>>3]=o*l;g[h+200>>3]=n*l;g[h+208>>3]=m*l;k=+g[d>>3];g[h+216>>3]=o*k;g[h+224>>3]=n*k;g[h+232>>3]=m*k;f=+g[e>>3];g[h+240>>3]=o*f;g[h+248>>3]=n*f;g[h+256>>3]=m*f;g[h+264>>3]=l;g[h+272>>3]=k;g[h+280>>3]=f;ze(i);c=0;while(1){if((c|0)==3)break;d=0;while(1){if((d|0)==6)break;e=a+(c*48|0)+(d<<3)|0;g[e>>3]=0.0;b=0;f=0.0;while(1){if((b|0)==12)break;o=f+ +g[h+(c*96|0)+(b<<3)>>3]*+g[i+(b*48|0)+(d<<3)>>3];g[e>>3]=o;b=b+1|0;f=o}d=d+1|0}c=c+1|0}zb=j;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0;o=+g[b>>3];r=+g[c>>3];p=b+8|0;q=+g[c+8>>3];n=b+16|0;d=+g[c+16>>3];e=+g[b+24>>3]+(o*r+ +g[p>>3]*q+ +g[n>>3]*d);c=b+32|0;f=b+40|0;h=b+48|0;i=+g[b+56>>3]+(r*+g[c>>3]+q*+g[f>>3]+d*+g[h>>3]);j=b+64|0;k=+g[j>>3];l=b+72|0;m=b+80|0;d=+g[b+88>>3]+(r*k+q*+g[l>>3]+d*+g[m>>3]);if(d==0.0)c=-1;else{r=d*d;g[a>>3]=(o*d-e*k)/r;g[a+8>>3]=(d*+g[p>>3]-e*+g[l>>3])/r;g[a+16>>3]=(d*+g[n>>3]-e*+g[m>>3])/r;g[a+24>>3]=(d*+g[c>>3]-i*+g[j>>3])/r;g[a+32>>3]=(d*+g[f>>3]-i*+g[l>>3])/r;g[a+40>>3]=(d*+g[h>>3]-i*+g[m>>3])/r;c=0}return c|0}function ze(a){a=a|0;var b=0,d=0,e=0;b=a+64|0;d=a;e=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+104>>3]=1.0;b=a+160|0;d=a+112|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+240|0;d=a+168|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+296|0;d=a+248|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+304|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+336>>3]=1.0;b=a+456|0;d=a+344|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+512|0;d=a+464|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+568|0;d=a+520|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;return}function Ae(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;d=Id(f)|0;do if(d){b=Gd(d,f)|0;if(!b){Ld(d)|0;a=-1;break}a=Gd(d,g)|0;if(!a){Ld(d)|0;Ld(b)|0;a=-1;break}if((Xd(b)|0)<0){Ld(d)|0;Ld(b)|0;Ld(a)|0;a=-1;break}else{Nd(h,b,a)|0;Ld(d)|0;Ld(b)|0;Ld(a)|0;a=0;break}}else a=-1;while(0);zb=i;return a|0}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0;j=zb;zb=zb+256|0;f=j+192|0;h=j+96|0;i=j;Ce(f,b);De(h,f);b=0;while(1){if((b|0)==3)break;d=a+(b<<5)|0;e=a+(b<<5)+8|0;f=a+(b<<5)+16|0;c=0;while(1){if((c|0)==4)break;g[i+(b<<5)+(c<<3)>>3]=+g[d>>3]*+g[h+(c<<3)>>3]+ +g[e>>3]*+g[h+32+(c<<3)>>3]+ +g[f>>3]*+g[h+64+(c<<3)>>3];c=c+1|0}f=i+(b<<5)+24|0;g[f>>3]=+g[a+(b<<5)+24>>3]+ +g[f>>3];b=b+1|0}b=0;while(1){if((b|0)==3)break;c=0;while(1){if((c|0)==4)break;g[a+(b<<5)+(c<<3)>>3]=+g[i+(b<<5)+(c<<3)>>3];c=c+1|0}b=b+1|0}zb=j;return 0}function Ce(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,h=0.0;d=+g[b>>3];e=b+8|0;h=+g[e>>3];f=b+16|0;c=+g[f>>3];c=d*d+h*h+c*c;if(c==0.0){g[a>>3]=1.0;g[a+8>>3]=0.0;d=0.0;c=0.0}else{c=+u(+c);g[a>>3]=d/c;g[a+8>>3]=+g[e>>3]/c;d=c;c=+g[f>>3]/c}g[a+16>>3]=c;g[a+24>>3]=d;g[a+32>>3]=+g[b+24>>3];g[a+40>>3]=+g[b+32>>3];g[a+48>>3]=+g[b+40>>3];return}function De(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0;c=+g[b+24>>3];e=+w(+c);d=1.0-e;c=+x(+c);i=+g[b>>3];g[a>>3]=e+i*i*d;h=b+8|0;f=b+16|0;g[a+8>>3]=d*(+g[b>>3]*+g[h>>3])-c*+g[f>>3];g[a+16>>3]=d*(+g[b>>3]*+g[f>>3])+c*+g[h>>3];g[a+24>>3]=+g[b+32>>3];g[a+32>>3]=d*(+g[h>>3]*+g[b>>3])+c*+g[f>>3];i=+g[h>>3];g[a+40>>3]=e+d*(i*i);g[a+48>>3]=d*(+g[h>>3]*+g[f>>3])-c*+g[b>>3];g[a+56>>3]=+g[b+40>>3];g[a+64>>3]=d*(+g[f>>3]*+g[b>>3])-c*+g[h>>3];g[a+72>>3]=d*(+g[f>>3]*+g[h>>3])+c*+g[b>>3];c=+g[f>>3];g[a+80>>3]=e+d*(c*c);g[a+88>>3]=+g[b+48>>3];return}function Ee(a){a=a|0;var b=0,d=0,e=0;b=FO(136)|0;if(!b)b=0;else{d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}c[b+96>>2]=10;g[b+104>>3]=.10000000149011612;g[b+112>>3]=.9900000095367432;g[b+120>>3]=4.0;g[b+128>>3]=.5}return b|0}function Fe(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{GO(b);c[a>>2]=0;a=0}return a|0}function Ge(a,b){a=a|0;b=+b;if(!a)a=-1;else{g[a+128>>3]=b;a=0}return a|0}function He(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=zb;zb=zb+176|0;j=x+168|0;i=x+160|0;s=x+144|0;t=x+48|0;u=x;v=b+8|0;h=c[v>>2]|0;do if((h|0)>=3){w=FO(h*96|0)|0;if(!w){Ue(0,3,41875,i);h=-1;break}r=FO(h<<4)|0;if(!r){Ue(0,3,41875,j);GO(w);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}d=b+4|0;m=s+8|0;n=a+104|0;o=a+96|0;p=a+120|0;q=a+112|0;l=0.0;j=0;a:while(1){ud(a,e,t)|0;k=0.0;i=0;while(1){h=c[v>>2]|0;if((i|0)>=(h|0))break;if((ve(s,t,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=16;break a}h=c[b>>2]|0;z=+g[h+(i<<4)>>3]-+g[s>>3];y=+g[h+(i<<4)+8>>3]-+g[m>>3];h=i<<1;g[r+(h<<3)>>3]=z;g[r+((h|1)<<3)>>3]=y;k=k+(z*z+y*y);i=i+1|0}k=k/+(h|0);if(k<+g[n>>3]){i=31;break}if((j|0?k<+g[p>>3]:0)?k/l>+g[q>>3]:0){i=31;break}if((j|0)==(c[o>>2]|0)){i=31;break}i=0;while(1){if((i|0)>=(h|0))break;if((we(w+(i*12<<3)|0,a,e,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=27;break a}i=i+1|0;h=c[v>>2]|0}if((Ae(u,r,w,h<<1)|0)<0){i=29;break}Be(e,u)|0;l=k;j=j+1|0}if((i|0)==16){Ie(w,r);h=-1;break}else if((i|0)==27){Ie(w,r);h=-1;break}else if((i|0)==29){Ie(w,r);h=-1;break}else if((i|0)==31){g[f>>3]=k;GO(w);GO(r);h=0;break}}else h=-1;while(0);zb=x;return h|0}function Ie(a,b){a=a|0;b=b|0;GO(a);GO(b);return}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=zb;zb=zb+192|0;l=F+184|0;k=F+176|0;j=F+168|0;h=F+160|0;A=F+144|0;B=F+48|0;C=F;D=b+8|0;i=c[D>>2]|0;do if((i|0)>=4){m=~~(+g[a+128>>3]*+(i|0))+-1|0;m=(m|0)>3?m:3;E=FO(i*96|0)|0;if(!E){Ue(0,3,41875,h);h=-1;break}z=FO(i<<4)|0;if(!z){Ue(0,3,41875,j);GO(E);h=-1;break}h=i<<3;y=FO(h)|0;if(!y){Ue(0,3,41875,k);GO(E);GO(z);h=-1;break}x=FO(h)|0;if(!x){Ue(0,3,41875,l);GO(E);GO(z);GO(y);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}v=b+4|0;w=A+8|0;d=x+(m<<3)|0;m=a+104|0;s=a+96|0;t=a+120|0;u=a+112|0;q=0.0;l=0;a:while(1){ud(a,e,B)|0;h=0;while(1){i=c[D>>2]|0;if((h|0)>=(i|0))break;if((ve(A,B,(c[v>>2]|0)+(h*24|0)|0)|0)<0){i=20;break a}k=c[b>>2]|0;p=+g[k+(h<<4)>>3]-+g[A>>3];r=+g[k+(h<<4)+8>>3]-+g[w>>3];k=h<<1;g[z+(k<<3)>>3]=p;g[z+((k|1)<<3)>>3]=r;r=p*p+r*r;g[x+(h<<3)>>3]=r;g[y+(h<<3)>>3]=r;h=h+1|0}oy(x,i,8,18);r=+g[d>>3]*4.0;r=r<16.0?16.0:r;i=c[D>>2]|0;p=r/6.0;o=0.0;h=0;while(1){if((h|0)>=(i|0))break;n=+g[x+(h<<3)>>3];if(n>r)n=p;else{n=1.0-n/r;n=p*(1.0-n*(n*n))}o=o+n;h=h+1|0}o=o/+(i|0);if(o<+g[m>>3]){i=44;break}if((l|0?o<+g[t>>3]:0)?o/q>+g[u>>3]:0){i=44;break}if((l|0)==(c[s>>2]|0)){i=44;break}h=0;k=0;while(1){if((k|0)>=(i|0))break;n=+g[y+(k<<3)>>3];if(n<=r){j=h*6|0;i=E+(j<<3)|0;if((we(i,a,e,(c[v>>2]|0)+(k*24|0)|0)|0)<0){i=36;break a}q=1.0-n/r;q=q*q;g[i>>3]=q*+g[i>>3];i=E+((j|1)<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+2<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+3<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+4<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+5<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+6<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+7<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+8<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+9<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+10<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+11<<3)|0;g[i>>3]=q*+g[i>>3];i=k<<1;g[z+(h<<3)>>3]=q*+g[z+(i<<3)>>3];g[z+(h+1<<3)>>3]=q*+g[z+((i|1)<<3)>>3];h=h+2|0;i=c[D>>2]|0}k=k+1|0}if((h|0)<6){i=40;break}if((Ae(C,z,E,h)|0)<0){i=42;break}Be(e,C)|0;q=o;l=l+1|0}if((i|0)==20){Ke(E,z,y,x);h=-1;break}else if((i|0)==36){Ke(E,z,y,x);h=-1;break}else if((i|0)==40){Ke(E,z,y,x);h=-1;break}else if((i|0)==42){Ke(E,z,y,x);h=-1;break}else if((i|0)==44){g[f>>3]=o;GO(E);GO(z);GO(y);GO(x);h=0;break}}else h=-1;while(0);zb=F;return h|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;GO(a);GO(b);GO(c);GO(d);return}function Le(a,b){a=a|0;b=b|0;var c=0.0;c=+g[a>>3]-+g[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;t=zb;zb=zb+128|0;s=t+120|0;p=t+112|0;o=t+104|0;m=t+96|0;l=t+88|0;j=t+80|0;i=t+72|0;r=t;a:do if((e|0)>=4){h=0;while(1){if((h|0)>=(e|0))break;if(+g[d+(h*24|0)+16>>3]!=0.0){h=-1;break a}else h=h+1|0}if((((((((!(+g[a>>3]==0.0)?!(+g[a+32>>3]!=0.0):0)?(q=a+40|0,!(+g[q>>3]==0.0)):0)?!(+g[a+64>>3]!=0.0):0)?!(+g[a+72>>3]!=0.0):0)?!(+g[a+80>>3]!=1.0):0)?!(+g[a+24>>3]!=0.0):0)?!(+g[a+56>>3]!=0.0):0)?!(+g[a+88>>3]!=0.0):0){h=e<<1;n=Dd(h,8)|0;if(!n){Ue(0,3,20681,i);h=-1;break}k=Dd(h,1)|0;if(!k){Ld(n)|0;Ue(0,3,20707,j);h=-1;break}h=0;while(1){if((h|0)==(e|0))break;y=d+(h*24|0)|0;j=c[n>>2]|0;i=h<<4;g[j+(i<<3)>>3]=+g[y>>3];x=d+(h*24|0)+8|0;g[j+((i|1)<<3)>>3]=+g[x>>3];g[j+((i|2)<<3)>>3]=1.0;g[j+((i|3)<<3)>>3]=0.0;g[j+((i|4)<<3)>>3]=0.0;g[j+((i|5)<<3)>>3]=0.0;w=b+(h<<4)|0;g[j+((i|6)<<3)>>3]=-(+g[y>>3]*+g[w>>3]);g[j+((i|7)<<3)>>3]=-(+g[x>>3]*+g[w>>3]);g[j+((i|8)<<3)>>3]=0.0;g[j+((i|9)<<3)>>3]=0.0;g[j+((i|10)<<3)>>3]=0.0;g[j+((i|11)<<3)>>3]=+g[y>>3];g[j+((i|12)<<3)>>3]=+g[x>>3];g[j+((i|13)<<3)>>3]=1.0;v=b+(h<<4)+8|0;g[j+((i|14)<<3)>>3]=-(+g[y>>3]*+g[v>>3]);g[j+((i|15)<<3)>>3]=-(+g[x>>3]*+g[v>>3]);i=c[k>>2]|0;j=h<<1;g[i+(j<<3)>>3]=+g[w>>3];g[i+((j|1)<<3)>>3]=+g[v>>3];h=h+1|0}b=Id(n)|0;if(!b){Ld(n)|0;Ld(k)|0;Ue(0,3,20733,l);h=-1;break}j=Gd(b,n)|0;if(!j){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ue(0,3,20759,m);h=-1;break}i=Gd(b,k)|0;if(!i){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ue(0,3,20785,o);h=-1;break}if((Xd(j)|0)<0){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20811,p);h=-1;break}h=Gd(j,i)|0;if(!h){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20837,s);h=-1;break}else{p=c[h>>2]|0;H=+g[p+48>>3];w=r+16|0;E=+g[a+48>>3];A=+g[q>>3];K=(+g[p+24>>3]-H*E)/A;s=r+8|0;D=+g[a+16>>3];C=+g[a+8>>3];B=+g[a>>3];N=(+g[p>>3]-H*D-K*C)/B;I=+g[p+56>>3];v=r+40|0;L=(+g[p+32>>3]-E*I)/A;x=r+32|0;J=(+g[p+8>>3]-D*I-C*L)/B;y=r+24|0;A=(+g[p+40>>3]-E)/A;E=+g[p+16>>3];Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ld(h)|0;M=+u(+(H*H+(K*K+N*N)));z=+u(+(I*I+(L*L+J*J)));g[r>>3]=N/M;g[s>>3]=K/M;g[w>>3]=H/M;g[y>>3]=J/z;g[x>>3]=L/z;g[v>>3]=I/z;z=(M+z)*.5;Ne(r);M=+g[s>>3];I=+g[v>>3];L=+g[w>>3];J=+g[x>>3];H=M*I-L*J;K=+g[y>>3];N=+g[r>>3];G=L*K-I*N;O=J*N-M*K;F=+u(+(O*O+(H*H+G*G)));H=H/F;g[r+48>>3]=H;G=G/F;g[r+56>>3]=G;F=O/F;g[r+64>>3]=F;g[f>>3]=N;g[f+32>>3]=M;g[f+64>>3]=L;g[f+8>>3]=K;g[f+40>>3]=J;g[f+72>>3]=I;g[f+16>>3]=H;g[f+48>>3]=G;g[f+80>>3]=F;g[f+24>>3]=(E-D-C*A)/B/z;g[f+56>>3]=A/z;g[f+88>>3]=1.0/z;h=0;break}}else h=-1}else h=-1;while(0);zb=t;return h|0}function Ne(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0;l=+g[a>>3];L=a+8|0;o=+g[L>>3];M=a+16|0;p=+g[M>>3];N=a+24|0;B=+g[N>>3];O=a+32|0;C=+g[O>>3];K=a+40|0;f=+g[K>>3];b=o*f-p*C;c=p*B-l*f;d=l*C-o*B;e=+u(+(d*d+(b*b+c*c)));do if(!(e==0.0)){m=b/e;k=c/e;j=d/e;A=l*B+o*C+p*f;A=A<0.0?-A:A;A=(+u(+(A+1.0))+ +u(+(1.0-A)))*.5;d=l*k;b=o*m;c=d-b;if(c!=0.0){n=0;y=m;h=l;i=o;z=k;e=p}else{P=l*j-p*m!=0.0;i=P?p:o;h=P?l:p;z=P?j:k;y=P?m:j;d=h*z;c=i*y;n=P?1:2;b=c;c=d-c;e=P?o:l;j=P?k:m}if(!(c==0.0)?(t=(i*j-e*z)/c,v=A*z/c,x=b-d,w=(h*j-e*y)/x,x=A*y/x,r=t*t+w*w+1.0,s=t*v+w*x,q=s*s-r*(v*v+x*x+-1.0),!(q<0.0)):0){d=+u(+q);h=(d-s)/r;i=v+t*h;e=x+w*h;d=(-s-d)/r;c=v+t*d;b=x+w*d;switch(n&3){case 1:{t=b;s=d;q=c;r=e;p=h;o=i;l=y;m=j;b=z;break}case 2:{t=c;s=b;q=d;r=i;p=e;o=h;l=j;m=z;b=y;break}default:{t=d;s=b;q=c;r=h;p=e;o=i;l=y;m=z;b=j}}c=B*m;d=C*l;e=c-d;if(e!=0.0){n=0;h=l;i=B;j=C;k=m}else{P=B*b-f*l!=0.0;j=P?f:C;i=P?B:f;k=P?b:m;h=P?l:b;f=i*k;e=j*h;n=P?1:2;c=f;d=e;e=f-e;f=P?C:B;b=P?m:l}if(!(e==0.0)?(G=(j*b-f*k)/e,H=A*k/e,J=d-c,I=(i*b-f*h)/J,J=A*h/J,E=G*G+I*I+1.0,F=G*H+I*J,D=F*F-E*(H*H+J*J+-1.0),!(D<0.0)):0){j=+u(+D);h=(j-F)/E;d=H+G*h;i=J+I*h;j=(-F-j)/E;c=H+G*j;b=J+I*j;switch(n&3){case 1:{l=b;b=j;j=c;k=i;i=h;h=d;break}case 2:{l=c;k=d;break}default:{l=j;j=c;k=h;h=d}}f=o*h+p*i+r*k;f=f<0.0?-f:f;e=o*j+p*b+r*l;e=e<0.0?-e:e;d=q*h+s*i+t*k;d=d<0.0?-d:d;c=q*j+s*b+t*l;c=c<0.0?-c:c;if(f>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}else if(e>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}}}}while(0);return}function Oe(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,0))}function Qe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+208|0;w=C+200|0;v=C+192|0;y=C+96|0;x=C;z=e+4|0;i=c[z>>2]|0;u=e+112|0;p=e+120|0;o=0;while(1){if((o|0)>=(i|0))break;q=c[e>>2]|0;r=q+(o*320|0)|0;if(!(c[q+(o*320|0)+4>>2]|0)){j=-1;k=0;while(1){if((k|0)>=(d|0))break;if((c[b+(k<<8)+8>>2]|0)==(c[r>>2]|0)?(l=+g[b+(k<<8)+40>>3],!(l<+g[u>>3])):0)if(!((j|0)!=-1?!(+g[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{n=q+(o*320|0)+312|0;m=0;j=-1;while(1){if((m|0)>=(d|0))break;k=c[b+(m<<8)+12>>2]|0;if((k|0)==0?(t=b+(m<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=n;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)B=20}else if((k|0)==(c[r>>2]|0))B=20;if((B|0)==20){B=0;h=+g[b+(m<<8)+48>>3];if(!(h<+g[p>>3]))if(!((j|0)!=-1?!(+g[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}o=o+1|0}p=0;n=0;j=0;o=0;while(1){if((o|0)>=(i|0))break;i=c[e>>2]|0;k=c[i+(o*320|0)+304>>2]|0;do if((k|0)<0){k=p;i=n}else{m=b+(k<<8)|0;if(+Uc(a,m,+g[i+(o*320|0)+8>>3],x)>4.0){c[(c[e>>2]|0)+(o*320|0)+304>>2]=-1;i=b+(k<<8)+236|0;if(c[i>>2]|0){k=p;i=n;break}c[i>>2]=7;k=p;i=n;break}k=c[m>>2]|0;a:do if((p|0)==0|(n|0)<(k|0)){i=0;while(1){if((i|0)==3){i=k;j=o;break a}j=0;while(1){if((j|0)==4)break;g[y+(i<<5)+(j<<3)>>3]=+g[x+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else i=n;while(0);k=p+1|0}while(0);p=k;n=i;o=o+1|0;i=c[z>>2]|0}b:do if((p|0)!=0?(p|0)>=(c[e+128>>2]|0):0){ud(y,(c[e>>2]|0)+(j*320|0)+112|0,x)|0;o=p<<2;q=FO(p<<6)|0;if(!q){Ue(0,3,41858,v);Ea(1)}p=FO(p*96|0)|0;if(!p){Ue(0,3,41858,w);Ea(1)}n=c[z>>2]|0;m=0;i=0;while(1){if((m|0)>=(n|0))break;j=c[e>>2]|0;k=c[j+(m*320|0)+304>>2]|0;if((k|0)>=0){v=c[b+(k<<8)+16>>2]|0;u=(4-v|0)%4|0;w=i<<3;g[q+(w<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|1)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(5-v|0)%4|0;g[q+((w|2)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|3)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(6-v|0)%4|0;g[q+((w|4)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|5)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];v=(7-v|0)%4|0;g[q+((w|6)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)>>3];g[q+((w|7)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)+8>>3];w=i*12|0;g[p+(w<<3)>>3]=+g[j+(m*320|0)+208>>3];g[p+((w|1)<<3)>>3]=+g[j+(m*320|0)+216>>3];g[p+((w|2)<<3)>>3]=+g[j+(m*320|0)+224>>3];g[p+((w|3)<<3)>>3]=+g[j+(m*320|0)+232>>3];g[p+(w+4<<3)>>3]=+g[j+(m*320|0)+240>>3];g[p+(w+5<<3)>>3]=+g[j+(m*320|0)+248>>3];g[p+(w+6<<3)>>3]=+g[j+(m*320|0)+256>>3];g[p+(w+7<<3)>>3]=+g[j+(m*320|0)+264>>3];g[p+(w+8<<3)>>3]=+g[j+(m*320|0)+272>>3];g[p+(w+9<<3)>>3]=+g[j+(m*320|0)+280>>3];g[p+(w+10<<3)>>3]=+g[j+(m*320|0)+288>>3];g[p+(w+11<<3)>>3]=+g[j+(m*320|0)+296>>3];i=i+1|0}m=m+1|0}m=e+104|0;j=(f|0)!=0;if(!(c[m>>2]|0)){i=e+8|0;h=+Wc(a,x,q,p,o,i);if(j&h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,i)}}}}GO(p);GO(q)}else{h=+Wc(a,x,q,p,o,y);k=e+8|0;l=+Wc(a,k,q,p,o,k);i=h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);e:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);f:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);g:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l}}}}}else if(i){i=0;while(1){if((i|0)==3)break c;j=0;while(1){if((j|0)==4)break;g[e+8+(i<<5)+(j<<3)>>3]=+g[y+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else h=l;while(0);GO(p);GO(q)}if(h<20.0){c[m>>2]=1;break}c[m>>2]=0;j=c[z>>2]|0;i=0;while(1){if((i|0)>=(j|0))break b;k=c[(c[e>>2]|0)+(i*320|0)+304>>2]|0;if((k|0)>=0?(A=b+(k<<8)+236|0,(c[A>>2]|0)==0):0)c[A>>2]=8;i=i+1|0}}else B=45;while(0);if((B|0)==45){c[e+104>>2]=0;h=-1.0}zb=C;return +h}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,1))}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0;T=zb;zb=zb+2528|0;S=T+2512|0;Q=T+2504|0;G=T+2488|0;P=T+2480|0;F=T+2472|0;E=T+2456|0;O=T+2448|0;D=T+2440|0;N=T+2432|0;M=T+2424|0;L=T+2416|0;C=T+2408|0;h=T+2400|0;f=T+2392|0;H=T+2384|0;e=T+2376|0;d=T+2368|0;z=T+2304|0;I=T+2048|0;J=T;A=T+2524|0;R=T+2520|0;B=T+2516|0;K=rz(a,21853)|0;do if(!K){c[d>>2]=a;Ue(0,3,20863,d);d=ox()|0;d=By(c[d>>2]|0)|0;c[e>>2]=57671;c[e+4>>2]=d;Ue(0,3,21881,e);d=0}else{Te(I,K);c[H>>2]=R;if((Cz(I,21887,H)|0)!=1){c[f>>2]=a;Ue(0,3,20916,f);xz(K)|0;d=0;break}d=c[R>>2]|0;y=FO(d*320|0)|0;if(!y){Ue(0,3,41858,h);Ea(1)}p=(b|0)==0;q=z+8|0;r=z+16|0;s=z+24|0;t=z+32|0;u=z+40|0;v=z+48|0;w=z+56|0;x=0;f=0;a:while(1){if((x|0)>=(d|0)){d=31;break}Te(I,K);d=y+(x*320|0)|0;e=y+(x*320|0)+312|0;c[C>>2]=e;c[C+4>>2]=A;if((Cz(I,21017,C)|0)!=1){if(p){d=11;break}if(!(Ad(J,a,2048,1)|0)){d=13;break}sA(J,I,2047-(Qy(J)|0)|0)|0;o=sd(b,J)|0;c[d>>2]=o;if((o|0)<0){d=15;break}else{d=1;e=0}}else{e=c[e>>2]|0;c[d>>2]=(e&-32768|0)==0&0==0?e&32767:0;d=2;e=1}c[y+(x*320|0)+4>>2]=e;f=f|d;Te(I,K);e=y+(x*320|0)+8|0;c[D>>2]=e;if((Cz(I,21313,D)|0)!=1){d=18;break}Te(I,K);m=y+(x*320|0)+16|0;n=y+(x*320|0)+24|0;o=y+(x*320|0)+40|0;c[E>>2]=m;c[E+4>>2]=n;c[E+8>>2]=y+(x*320|0)+32;c[E+12>>2]=o;if((Cz(I,21422,E)|0)==4)d=1;else{c[F>>2]=H;c[F+4>>2]=B;if((Cz(I,21438,F)|0)!=2){d=23;break}d=0}do{Te(I,K);c[G>>2]=y+(x*320|0)+16+(d<<5);c[G+4>>2]=y+(x*320|0)+16+(d<<5)+8;c[G+8>>2]=y+(x*320|0)+16+(d<<5)+16;c[G+12>>2]=y+(x*320|0)+16+(d<<5)+24;if((Cz(I,21422,G)|0)!=4){d=25;break a}d=d+1|0}while(d>>>0<3);xd(m,y+(x*320|0)+112|0)|0;V=+g[e>>3];U=V*-.5;g[z>>3]=U;V=V*.5;g[q>>3]=V;g[r>>3]=V;g[s>>3]=V;g[t>>3]=V;g[u>>3]=U;g[v>>3]=U;g[w>>3]=U;e=y+(x*320|0)+48|0;h=y+(x*320|0)+56|0;i=y+(x*320|0)+72|0;j=y+(x*320|0)+80|0;k=y+(x*320|0)+88|0;l=y+(x*320|0)+104|0;d=0;while(1){if((d|0)==4)break;U=+g[z+(d<<4)>>3];V=+g[z+(d<<4)+8>>3];g[y+(x*320|0)+208+(d*24|0)>>3]=+g[o>>3]+(+g[m>>3]*U+ +g[n>>3]*V);g[y+(x*320|0)+208+(d*24|0)+8>>3]=+g[i>>3]+(U*+g[e>>3]+V*+g[h>>3]);g[y+(x*320|0)+208+(d*24|0)+16>>3]=+g[l>>3]+(U*+g[j>>3]+V*+g[k>>3]);d=d+1|0}x=x+1|0;d=c[R>>2]|0}if((d|0)==11){c[L>>2]=a;c[L+4>>2]=I;Ue(0,3,21024,L)}else if((d|0)==13){c[M>>2]=a;Ue(0,3,21152,M)}else if((d|0)==15){c[N>>2]=a;c[N+4>>2]=J;Ue(0,3,21236,N)}else if((d|0)==18){c[O>>2]=a;c[O+4>>2]=x+1;Ue(0,3,21317,O)}else if((d|0)==23){c[P>>2]=a;c[P+4>>2]=x+1;Ue(0,3,21444,P)}else if((d|0)==25){c[Q>>2]=a;c[Q+4>>2]=x+1;Ue(0,3,21444,Q)}else if((d|0)==31){xz(K)|0;d=FO(136)|0;if(!d){Ue(0,3,41858,S);Ea(1)}c[d>>2]=y;c[d+4>>2]=c[R>>2];c[d+128>>2]=0;c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);g[d+112>>3]=.5;g[d+120>>3]=.5;break}xz(K)|0;GO(y);d=0}while(0);zb=T;return d|0}function Te(b,c){b=b|0;c=c|0;var d=0,e=0;a:while(1){if(!(Az(b,256,c)|0))break;d=Qy(b)|0;b:while(1){if(!d)break;d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0}switch(a[b>>0]|0){case 0:case 35:break;default:break a}}return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;b=g;if((e|0)!=0&(c[3916]|0)<=(d|0)?a[e>>0]|0:0){c[b>>2]=f;Ve(0,d,e,b)}zb=g;return}function Ve(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;j=l+16|0;b=l;if((!((e|0)==0|(c[3916]|0)>(d|0))?a[e>>0]|0:0)?(c[b>>2]=c[f>>2],k=Jx(0,0,e,b)|0,k|0):0){if(d>>>0<4)b=(Qy(c[1744+(d<<2)>>2]|0)|0)+3|0;else b=0;g=b+k|0;h=g+1|0;i=FO(h)|0;if(b|0){c[j>>2]=c[1744+(d<<2)>>2];bz(i,b+1|0,21553,j)|0}Jx(i+b|0,k+1|0,e,f)|0;do if(0){if(0?(m=c[13864]|0,m>>>0<0):0){b=0+m|0;if(g>>>0>(-4-m+0|0)>>>0){a[b>>0]=46;a[b+1>>0]=46;a[b+2>>0]=46;a[b+3>>0]=0;c[13864]=0;break}else{Wz(b,i,h)|0;c[13864]=(c[13864]|0)+g;break}}}else kz(i,c[4001]|0)|0;while(0);GO(i)}zb=l;return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(b){e=rz(b,22236)|0;if(e){Kz(e,0,2)|0;f=hA(e)|0;Kz(e,0,0)|0;g=f+1|0;b=FO(g)|0;if(!b){xz(e)|0;b=ox()|0;c[b>>2]=48;b=0;break}if(!(gA(b,f,1,e)|0)){GO(b);xz(e)|0;b=0;break}a[b+f>>0]=0;xz(e)|0;if(d)c[d>>2]=g}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}while(0);return b|0}function Xe(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+40>>2]=b;a=0}return a|0}function Ye(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+44>>2]=b;a=0}return a|0}function Ze(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+24>>2]=b;a=0}return a|0}function _e(a,b){a=a|0;b=b|0;b=(b|0)<40?b:40;if(!a)b=-1;else{c[a+36>>2]=(b|0)>3?b:3;b=0}return b|0}function $e(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+28>>2]=b;a=0}return a|0}function af(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+32>>2]=b;a=0}return a|0}function bf(b,e){b=b|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0;z=zb;zb=zb+16|0;w=b+4|0;x=b+12|0;A=+f[x>>2];y=iz(+(c[w>>2]|0)*e/A)|0;t=b+8|0;u=iz(+(c[t>>2]|0)*e/A)|0;v=FO(16)|0;if(!v){Ue(0,3,41858,z);Ea(1)}c[v+4>>2]=y;c[v+8>>2]=u;f[v+12>>2]=e;g=FO(B(u,y)|0)|0;c[v>>2]=g;if(!g){Ue(0,3,41858,z+8|0);Ea(1)}h=0;while(1){if((h|0)>=(u|0))break;A=+f[x>>2];s=iz(A*+(h|0)/e)|0;h=h+1|0;r=iz(A*+(h|0)/e)|0;i=c[t>>2]|0;r=(r|0)>(i|0)?i:r;i=0;while(1){if((i|0)>=(y|0))break;A=+f[x>>2];q=iz(A*+(i|0)/e)|0;i=i+1|0;p=iz(A*+(i|0)/e)|0;o=c[w>>2]|0;p=(p|0)>(o|0)?o:p;j=0;k=0;l=s;while(1){if((l|0)>=(r|0))break;m=q;n=(c[b>>2]|0)+((B(l,o)|0)+q)|0;while(1){if((m|0)>=(p|0))break;C=j+(d[n>>0]|0)|0;m=m+1|0;n=n+1|0;j=C;k=k+1|0}l=l+1|0}a[g>>0]=(j|0)/(k|0)|0;g=g+1|0}}zb=z;return v|0}function cf(a){a=a|0;var b=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+96|0;m=q+72|0;l=q+64|0;k=q+56|0;j=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;e=q+16|0;b=q+8|0;n=q+80|0;d=FO((Qy(a)|0)+6|0)|0;if(!d){Ue(0,3,41858,q);Ea(1)}c[b>>2]=a;c[b+4>>2]=21589;Hx(d,21584,b)|0;p=rz(d,22236)|0;GO(d);a:do if(!p){c[e>>2]=a;c[e+4>>2]=21589;Ue(0,3,21595,e);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,g);Ea(1)}d=b+4|0;if((gA(d,4,1,p)|0)==1?(o=c[d>>2]|0,(o|0)>=1):0){c[i>>2]=o;Ue(0,1,21668,i);e=o<<2;g=FO(e)|0;c[b>>2]=g;if(!g){Ue(0,3,41858,j);Ea(1)}j=FO(16)|0;c[g>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}d=ff(p)|0;if(!d){c[l>>2]=a;c[l+4>>2]=21589;Ue(0,2,21698,l);GO(c[g>>2]|0);GO(g);GO(b);iA(p);b=df(p)|0;break}if((c[d+4>>2]|0)!=1){c[m>>2]=a;c[m+4>>2]=21589;Ue(0,2,21698,m);GO(c[g>>2]|0);GO(g);GO(b);GO(d);xz(p)|0;b=0;break}m=c[g>>2]|0;c[m+4>>2]=c[d+8>>2];c[m+8>>2]=c[d+12>>2];c[m+12>>2]=c[d+16>>2];c[m>>2]=c[d>>2];GO(d);Kz(p,4-e|0,2)|0;e=1;while(1){if((e|0)>=(o|0)){d=29;break}if((gA(n,4,1,p)|0)!=1){d=21;break}m=bf(c[g>>2]|0,+f[n>>2])|0;c[g+(e<<2)>>2]=m;if(!m){d=25;break}e=e+1|0}b:do if((d|0)==21){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==25){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==29){xz(p)|0;break a}while(0);GO(g)}else Ue(0,3,21643,h);GO(b);xz(p)|0;b=0}while(0);zb=q;return b|0}function df(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+48|0;h=l+32|0;g=l+24|0;f=l+16|0;e=l+8|0;b=FO(8)|0;if(!b){Ue(0,3,41858,l);Ea(1)}d=b+4|0;a:do if((gA(d,4,1,a)|0)==1?(k=c[d>>2]|0,(k|0)>=1):0){j=FO(k<<2)|0;c[b>>2]=j;if(!j){Ue(0,3,41858,f);Ea(1)}d=0;while(1){if((d|0)>=(k|0))break;f=FO(16)|0;c[j+(d<<2)>>2]=f;if(!f){i=12;break}else d=d+1|0}if((i|0)==12){Ue(0,3,41858,g);Ea(1)}e=0;while(1){if((e|0)>=(k|0)){i=44;break}d=j+(e<<2)|0;if((gA((c[d>>2]|0)+4|0,4,1,a)|0)!=1){i=15;break}if((gA((c[d>>2]|0)+8|0,4,1,a)|0)!=1){i=22;break}if((gA((c[d>>2]|0)+12|0,4,1,a)|0)!=1){i=29;break}i=c[d>>2]|0;i=FO(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)|0;c[c[d>>2]>>2]=i;if(!i){i=36;break}g=c[d>>2]|0;g=gA(c[g>>2]|0,1,B(c[g+8>>2]|0,c[g+4>>2]|0)|0,a)|0;i=c[d>>2]|0;e=e+1|0;if((g|0)!=(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)){i=38;break}}b:do if((i|0)==15){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==22){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==29){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==36){Ue(0,3,41858,h);Ea(1)}else if((i|0)==38){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==44){xz(a)|0;break a}while(0);GO(j);i=46}else i=5;while(0);if((i|0)==5){Ue(0,3,21643,e);i=46}if((i|0)==46){GO(b);xz(a)|0;b=0}zb=l;return b|0}function ef(a){a=a|0;var b=0,d=0,e=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[c[d+(e<<2)>>2]>>2]|0);GO(c[(c[c[a>>2]>>2]|0)+(e<<2)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function ff(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(20)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=gf(a,b+8|0,b+12|0,b+4|0,b+16|0)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function gf(d,e,g,h,k){d=d|0;e=e|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,N=0;N=zb;zb=zb+832|0;z=N+528|0;y=N+520|0;x=N+512|0;A=4;D=FO(40)|0;c[D>>2]=0;C=N+24|0;n=N+536|0;w=N;aP(C|0,0,488)|0;i=0;o=G(63,n|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)!=1){c[C>>2]=o;c[n>>2]=112;D=XO(n+132|0,1,D|0,A|0)|0;A=F()|0;i=0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1)m=l;else m=0}else m=l;a:while(1){if(m|0){i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;M(8,0,3,21756,x|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=7;break}}i=0;L(1,C|0,90,488);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;K(39,C|0,d|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;m=H(19,C|0,1)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){n=YO(c[l>>2]|0,D|0,A|0)|0;if(!n)Qa(l|0,j|0);E(j|0)}else n=-1;l=F()|0;if((n|0)==1){m=l;continue}if((m|0)!=1){i=0;M(8,0,3,21782,y|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=14;break}}i=0;G(64,C|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}t=C+36|0;u=C+28|0;s=B(c[u>>2]|0,c[t>>2]|0)|0;v=C+32|0;l=B(s,c[v>>2]|0)|0;i=0;l=G(65,l|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;if(!l){i=0;M(8,0,3,41858,z|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=20;break}}q=C+140|0;r=C+116|0;p=0;while(1){if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;m=0;while(1){if((m|0)==5)break;o=l+(B(m+p|0,s)|0)|0;c[w+(m<<2)>>2]=o;m=m+1|0}i=0;n=I(25,C|0,w|0,5)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){o=YO(c[m>>2]|0,D|0,A|0)|0;if(!o)Qa(m|0,j|0);E(j|0)}else o=-1;m=F()|0;if((o|0)==1)continue a;p=n+p|0}i=0;G(66,C|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;i=0;J(113,C|0);m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)!=1){m=30;break}}b:do if((m|0)==7)l=0;else if((m|0)==14)l=0;else if((m|0)==20)l=0;else if((m|0)==30){if(e|0)c[e>>2]=c[u>>2];if(g|0)c[g>>2]=c[v>>2];if(h|0)c[h>>2]=c[t>>2];if(k){m=a[C+290>>0]|0;switch(m<<24>>24){case 1:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535);break b}break}case 2:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535)*2.5399999618530273;break b}break}default:if(((m&255)>2?(b[C+292>>1]|0)==0:0)?(b[C+294>>1]|0)==0:0){f[k>>2]=+(m&255);break b}}f[k>>2]=0.0}}while(0);GO(D|0);zb=N;return l|0}function hf(a){a=a|0;Qa((c[a>>2]|0)+132|0,1)}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+1088|0;m=o+1072|0;l=o+1064|0;n=o+1056|0;g=o+1048|0;f=o+1040|0;e=o+1032|0;h=o+1024|0;i=o+768|0;j=o+512|0;k=o;c[h>>2]=a;c[h+4>>2]=b;Hx(k,22627,h)|0;k=rz(k,21853)|0;if(!k)a=0;else{a=FO(8)|0;if(!a){Ue(0,3,41858,e);Ea(1)}a:do if(kf(i,k)|0){h=a+4|0;c[f>>2]=h;if((Cz(i,21887,f)|0)!=1){GO(a);a=0;break}b=c[h>>2]|0;if((b|0)<1){GO(a);a=0;break}f=FO(b*56|0)|0;c[a>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}f=0;b:while(1){if((f|0)>=(b|0))break a;if(!(kf(i,k)|0)){b=15;break}c[n>>2]=j;if((Cz(i,21914,n)|0)!=1){b=17;break}g=sd(d,j)|0;e=c[a>>2]|0;c[e+(f*56|0)+4>>2]=g;if((g|0)<0){b=19;break}if(!(kf(i,k)|0)){b=21;break}c[l>>2]=(c[a>>2]|0)+(f*56|0);if((Cz(i,21815,l)|0)!=1){b=24;break}b=0;while(1){if(b>>>0>=3)break;if(!(kf(i,k)|0)){b=27;break b}g=c[a>>2]|0;c[m>>2]=g+(f*56|0)+8+(b<<4);c[m+4>>2]=g+(f*56|0)+8+(b<<4)+4;c[m+8>>2]=g+(f*56|0)+8+(b<<4)+8;c[m+12>>2]=g+(f*56|0)+8+(b<<4)+12;if((Cz(i,22080,m)|0)==4)b=b+1|0;else{b=29;break b}}f=f+1|0;b=c[h>>2]|0}if((b|0)==15){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==17){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==19){GO(e);GO(a);a=0;break}else if((b|0)==21){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==24){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==27){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==29){GO(c[a>>2]|0);GO(a);a=0;break}}else{GO(a);a=0}while(0);xz(k)|0}zb=o;return a|0}function kf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+640|0;s=v+624|0;r=v+616|0;q=v+608|0;p=v+600|0;o=v+592|0;n=v+584|0;m=v+576|0;l=v+568|0;k=v+560|0;j=v+552|0;g=v+544|0;f=v+536|0;e=v+528|0;d=v+520|0;i=v+512|0;t=v;c[i>>2]=a;c[i+4>>2]=b;Hx(t,22627,i)|0;t=rz(t,22236)|0;if(!t){c[d>>2]=a;Ue(0,3,21818,d);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,e);Ea(1)}a=b+4|0;a:do if((gA(a,4,1,t)|0)==1){h=c[a>>2]|0;i=FO(h*20|0)|0;c[b>>2]=i;if(!i){Ue(0,3,41858,g);Ea(1)}g=0;b:while(1){if((g|0)>=(h|0))break a;if((gA(i+(g*20|0)+8|0,4,1,t)|0)!=1){u=12;break}if((gA(i+(g*20|0)+12|0,4,1,t)|0)!=1){u=15;break}if((gA(i+(g*20|0)+16|0,4,1,t)|0)!=1){u=17;break}e=i+(g*20|0)+4|0;if((gA(e,4,1,t)|0)!=1){u=19;break}a=c[e>>2]|0;d=FO(a*20|0)|0;f=i+(g*20|0)|0;c[f>>2]=d;if(!d){u=22;break}d=0;while(1){if((d|0)>=(a|0))break;if((gA((c[f>>2]|0)+(d*20|0)|0,4,1,t)|0)!=1){u=25;break b}if((gA((c[f>>2]|0)+(d*20|0)+4|0,4,1,t)|0)!=1){u=27;break b}if((gA((c[f>>2]|0)+(d*20|0)+8|0,4,1,t)|0)!=1){u=29;break b}if((gA((c[f>>2]|0)+(d*20|0)+12|0,4,1,t)|0)!=1){u=31;break b}if((gA((c[f>>2]|0)+(d*20|0)+16|0,4,1,t)|0)!=1){u=34;break b}d=d+1|0;a=c[e>>2]|0}g=g+1|0}switch(u|0){case 12:{Ue(0,3,21839,j);break}case 15:{Ue(0,3,21839,k);break}case 17:{Ue(0,3,21839,l);break}case 19:{Ue(0,3,21839,m);break}case 22:{Ue(0,3,41858,n);Ea(1);break}case 25:{Ue(0,3,21839,o);break}case 27:{Ue(0,3,21839,p);break}case 29:{Ue(0,3,21839,q);break}case 31:{Ue(0,3,21839,r);break}case 34:{Ue(0,3,21839,s);break}}a=0;while(1){if((a|0)==(g|0))break;GO(c[i+(a*20|0)>>2]|0);a=a+1|0}GO(i);u=39}else{Ue(0,3,21839,f);u=39}while(0);if((u|0)==39){GO(b);b=0}xz(t)|0}zb=v;return b|0}function mf(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)b=-1;else{e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[d+(e*20|0)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)of(0,b,c,d)|0;else of(a,b,c,d)|0;return 0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=zb;zb=zb+48|0;e=m;if(!a){t=+f[c>>2];w=+f[c+4>>2];s=+f[b>>2];o=t*s;v=+f[b+4>>2];n=w*v;p=+f[b+12>>2];i=+f[b+16>>2];q=t*i;g=+f[b+20>>2];k=w*g;r=+f[b+28>>2];z=+f[b+32>>2];x=t*z;h=+f[b+36>>2];j=w*h;y=+f[b+44>>2];l=y+(x+j);t=t+10.0;j=y+(t*z+j);w=w+10.0;h=y+(x+w*h);g=(r+(q+w*g))/h;h=(p+(o+w*v))/h;i=(r+(t*i+k))/j;j=(p+(t*s+n))/j;k=(r+(q+k))/l;l=(p+(o+n))/l}else{vd(a+8|0,b,e)|0;s=+f[c>>2];q=+f[c+4>>2];t=+f[e>>2];y=s*t;r=+f[e+4>>2];z=q*r;x=+f[e+12>>2];i=+f[e+16>>2];w=s*i;g=+f[e+20>>2];k=q*g;v=+f[e+28>>2];n=+f[e+32>>2];p=s*n;h=+f[e+36>>2];j=q*h;o=+f[e+44>>2];l=o+(p+j);s=s+10.0;j=o+(s*n+j);q=q+10.0;h=o+(p+q*h);g=(v+(w+q*g))/h;h=(x+(y+q*r))/h;i=(v+(s*i+k))/j;j=(x+(s*t+z))/j;k=(v+(w+k))/l;l=(x+(y+z))/l}x=j-l;y=i-k;y=x*x+y*y;x=h-l;z=g-k;z=x*x+z*z;e=y>2]=x;z=+u(+(e?y:z))*2.5399999618530273;f[d+4>>2]=z;zb=m;return 0}function pf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+32|0;l=G+20|0;j=G+16|0;i=G+12|0;k=G+8|0;C=G+4|0;D=G;a:do if((d|0)<0)d=-1;else switch(d|0){case 0:{q=+((g|0)/8|0|0);r=+((g*7|0)/8|0|0);s=+((h|0)/8|0|0);t=+((h*7|0)/8|0|0);p=+((g|0)/2|0|0);o=+((h|0)/2|0|0);m=0.0;i=0;d=-1;b:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break b;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(nr)?(u=+f[a+(i*24|0)+20>>2],!(ut)):0)?(B=n-p,v=u-o,v=B*B+v*v,v>m):0){m=v;d=i}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 1:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+4|0;d=-1;i=0;m=0.0;c:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break c;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(s=+f[a+(i*24|0)+20>>2],!(so)):0)?(B=n-+f[e>>2],t=s-+f[g>>2],t=B*B+t*t,t>m):0){d=i;m=t}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 2:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+12|0;j=e+4|0;k=e+8|0;d=-1;i=0;m=0.0;d:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break d;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(x=+f[a+(i*24|0)+20>>2],!(xo)):0)?(w=+f[e>>2],B=+f[j>>2],w=(n-w)*(+f[g>>2]-B)-(x-B)*(+f[k>>2]-w),w=w*w,w>m):0){d=i;m=w}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 3:{qf(e,e+8|0,l,j);qf(e,e+16|0,i,k);B=+((g|0)/8|0|0);w=+((g*7|0)/8|0|0);x=+((h|0)/8|0|0);v=+((h*7|0)/8|0|0);z=e+24|0;A=e+28|0;u=+f[i>>2];t=+f[j>>2];m=u*t;s=+f[k>>2];r=+f[l>>2];q=s*r;h=!(m-q>=0.0);y=!(q-m>=0.0);l=h?2:1;b=h?1:2;d=-1;k=0;m=0.0;e:while(1){f:do switch(c[a+(k*24|0)+12>>2]|0){case -1:break e;case 0:{n=+f[a+(k*24|0)+16>>2];if(!(nw)?(E=a+(k*24|0)+20|0,q=+f[E>>2],!(qv)):0){f[z>>2]=n;c[A>>2]=c[E>>2];qf(e,z,C,D);q=+f[C>>2];if(!h){n=+f[D>>2];if(!(t*q-r*n>=0.0))F=39;else{g=!(s*q-u*n>=0.0);i=g?2:3;g=g?3:2;j=1}}else{n=+f[D>>2];F=39}do if((F|0)==39){F=0;o=s*q;p=u*n;if(y|!(o-p>=0.0))if(p-o>=0.0?!(r*n-t*q>=0.0):1)break f;else{i=b;g=l;j=3;break}else{g=!(t*q-r*n>=0.0);i=g?1:3;g=g?3:1;j=2;break}}while(0);n=+rf(e,j,g,i);if(n>m){d=k;m=n}}break}default:{}}while(0);k=k+1|0}if((d|0)!=-1)c[a+(d*24|0)+12>>2]=1;break a}default:{l=0;g:while(1){d=b+(l*24|0)+12|0;h:do switch(c[d>>2]|0){case -1:break g;case 0:{c[d>>2]=1;i=b+(l*24|0)|0;g=b+(l*24|0)+4|0;j=b+(l*24|0)+8|0;d=0;while(1){k=a+(d*24|0)+12|0;switch(c[k>>2]|0){case -1:break h;case 0:{if(((c[i>>2]|0)==(c[a+(d*24|0)>>2]|0)?(c[g>>2]|0)==(c[a+(d*24|0)+4>>2]|0):0)?(c[j>>2]|0)==(c[a+(d*24|0)+8>>2]|0):0){F=55;break g}break}default:{}}d=d+1|0}}default:{}}while(0);l=l+1|0}if((F|0)==55){c[k>>2]=1;break a}c[b+12>>2]=-1;d=c[13865]|0;if(!d){_z(Ta(0)|0);d=c[13865]|0}d=d+1|0;c[13865]=(d|0)==128?0:d;d=0;i=0;i:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break i;case 0:{d=d+1|0;break}default:{}}i=i+1|0}if(!d){d=-1;break a}k=~~(+(d|0)*+($z()|0)*4.656612873077393e-10);d=0;i=0;j:while(1){g=a+(d*24|0)+12|0;j=c[g>>2]|0;switch(j|0){case -1:{d=j;break a}case 0:{if((i|0)==(k|0))break j;i=i+1|0;break}default:{}}d=d+1|0}c[g>>2]=1;break a}}while(0);zb=G;return d|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0;g=+f[b>>2]-+f[a>>2];e=+f[b+4>>2]-+f[a+4>>2];g=+u(+(g*g+e*e));if(!(g==0.0)){f[c>>2]=e/g;f[d>>2]=(+f[b>>2]-+f[a>>2])/g}return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0;c=a+(c<<3)|0;e=+sf(a,a+(b<<3)|0,c);return +(e+ +sf(a,c,a+(d<<3)|0))}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];d=((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))*.5;return +(d<0.0?-d:d)}function tf(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=zb;zb=zb+1248|0;L=M+1232|0;K=M+1224|0;J=M+1208|0;I=M+1200|0;H=M+1184|0;G=M+1176|0;F=M+1160|0;E=M+1152|0;D=M+1144|0;C=M+1136|0;B=M+1128|0;A=M+1120|0;z=M+1112|0;y=M+1104|0;x=M+1096|0;w=M+1088|0;v=M+1080|0;u=M+1072|0;p=M+1064|0;l=M+1056|0;k=M+1048|0;j=M+1040|0;i=M+1032|0;h=M+1024|0;r=M+768|0;s=M+512|0;t=M+1236|0;g=M;do if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(Fx(d,41063)|0)!=0:0){c[h>>2]=b;c[h+4>>2]=d;Hx(g,22627,h)|0;d=rz(g,21853)|0;if(!d){c[i>>2]=b;Ue(0,3,21855,i);q=ox()|0;q=By(c[q>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=q;Ue(0,3,21881,j);q=0;break}else{n=d;d=1;m=8;break}}else m=4;while(0);if((m|0)==4){Wz(s,b,255)|0;a[s+255>>0]=0;n=0;d=0;m=8}do if((m|0)==8){o=FO(1140)|0;if(!o){Ue(0,3,41858,k);Ea(1)}k=(d|0)!=0;if(k){if(!(uf(r,n)|0)){xz(n)|0;GO(o);q=0;break}c[l>>2]=t;if((Cz(r,21887,l)|0)!=1){xz(n)|0;GO(o);q=0;break}d=c[t>>2]|0;if((d|0)<1){xz(n)|0;GO(o);q=0;break}}else d=1;c[o+4>>2]=d;c[o+152>>2]=0;j=FO(d*112|0)|0;c[o>>2]=j;if(!j){Ue(0,3,41858,p);Ea(1)}i=(e|0)==0;g=0;a:while(1){c[t>>2]=g;if((g|0)>=(d|0)){m=57;break}c[u>>2]=g+1;Ue(0,1,21890,u);if(k){if(!(uf(r,n)|0)){m=57;break}c[v>>2]=s;if((Cz(r,21914,v)|0)!=1){m=57;break}If(s)|0}Ue(0,1,21917,w);p=cf(s)|0;c[j+((c[t>>2]|0)*112|0)>>2]=p;if(!p){m=26;break}Ue(0,1,21966,y);Ue(0,1,21976,z);p=lf(s,41063)|0;c[j+((c[t>>2]|0)*112|0)+4>>2]=p;if(!p){m=29;break}Ue(0,1,21966,B);if(i)c[j+((c[t>>2]|0)*112|0)+8>>2]=0;else{Ue(0,1,22027,C);If(s)|0;p=jf(s,22046,e)|0;c[j+((c[t>>2]|0)*112|0)+8>>2]=p;if(!p){m=33;break}Ue(0,1,21966,E)}b:do if(k){if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[F>>2]=j+(p*112|0)+12;c[F+4>>2]=j+(p*112|0)+16;c[F+8>>2]=j+(p*112|0)+20;c[F+12>>2]=j+(p*112|0)+24;if((Cz(r,22080,F)|0)!=4){m=40;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[H>>2]=j+(p*112|0)+28;c[H+4>>2]=j+(p*112|0)+32;c[H+8>>2]=j+(p*112|0)+36;c[H+12>>2]=j+(p*112|0)+40;if((Cz(r,22080,H)|0)!=4){m=43;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[J>>2]=j+(p*112|0)+44;c[J+4>>2]=j+(p*112|0)+48;c[J+8>>2]=j+(p*112|0)+52;c[J+12>>2]=j+(p*112|0)+56;if((Cz(r,22080,J)|0)!=4){m=47;break a}g=c[t>>2]|0}else{g=c[t>>2]|0;b=0;while(1){if((b|0)==3)break b;h=0;while(1){if((h|0)==4)break;f[j+(g*112|0)+12+(b<<4)+(h<<2)>>2]=(b|0)==(h|0)?1.0:0.0;h=h+1|0}b=b+1|0}}while(0);yd(j+(g*112|0)+12|0,j+(g*112|0)+60|0)|0;Hf(s,256,22128)|0;g=FO(256)|0;c[j+((c[t>>2]|0)*112|0)+108>>2]=g;if(!g){m=55;break}Wz(g,s,256)|0;g=(c[t>>2]|0)+1|0}if((m|0)==26){c[x>>2]=s;Ue(0,3,21935,x);GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==29){c[A>>2]=s;Ue(0,3,21996,A);ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==33){c[D>>2]=s;Ue(0,3,22050,D);mf(j+((c[t>>2]|0)*112|0)+4|0)|0;ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==40){Ue(0,3,22092,G);xz(n)|0;Ea(0)}else if((m|0)==43){Ue(0,3,22092,I);xz(n)|0;Ea(0)}else if((m|0)==47){Ue(0,3,22092,K);xz(n)|0;Ea(0)}else if((m|0)==55){Ue(0,3,41858,L);Ea(1)}else if((m|0)==57){if(n|0)xz(n)|0;if((c[t>>2]|0)>=(d|0)){q=o;break}Ea(0)}}while(0);zb=M;return q|0}function uf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function vf(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)d=-1;else{c[a+152>>2]=1;d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;c[a+8+(d<<4)+(e<<2)>>2]=c[b+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}c[a+168>>2]=-1;d=0}return d|0}function wf(b,e,g,h,i,j,k,l,m,n,o,p){b=b|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=zb;zb=zb+80|0;F=X+8|0;E=X;M=X+72|0;P=X+60|0;R=X+48|0;D=X+36|0;S=X+32|0;T=X+24|0;U=X+16|0;V=j+16|0;A=c[V>>2]|0;W=j+20|0;x=c[W>>2]|0;y=g+-1|0;z=h+-1|0;w=0;while(1){if(w>>>0>=3)break;q=c[m+(w<<3)>>2]|0;if((q|0)<0)break;u=q&-4|2;q=((c[m+(w<<3)+4>>2]|0)/4|0)<<2|2;v=u-k|0;v=(v|0)>0?v:0;u=u+k|0;u=(u|0)<(g|0)?u:y;t=q-l|0;q=q+l|0;q=(q|0)<(h|0)?q:z;t=(t|0)>0?t:0;while(1){if((t|0)>(q|0))break;r=v;s=e+((B(t,g)|0)+v)|0;while(1){if((r|0)>(u|0))break;a[s>>0]=0;r=r+1|0;s=s+1|0}t=t+1|0}w=w+1|0}c[M>>2]=0;C=x<<1;z=A<<1;K=j+12|0;L=j+8|0;r=1;y=0;while(1){if(y>>>0>=3){J=28;break}q=c[m+(y<<3)>>2]|0;if((q|0)<0){J=14;break}x=q&-4|2;u=((c[m+(y<<3)+4>>2]|0)/4|0)<<2|2;v=u+l|0;w=x-k|0;x=x+k|0;q=r;u=u-l|0;a:while(1){if((u|0)>(v|0))break;b:do if((u|0)>=(z|0)){if((u+C|0)>=(h|0))break a;t=B(u,g)|0;s=w;while(1){if((s|0)>(x|0))break b;if((s|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+s|0)>=(g|0))break b;r=e+(s+t)|0;if(!(a[r>>0]|0)){a[r>>0]=1;xf(b,g,i,j,s,u,S);yf(s,u,c[S>>2]|0,M,P,R,D);q=0}}s=s+4|0}}while(0);u=u+4|0}r=q;y=y+1|0}if((J|0)==14)if(!r)J=28;else q=-1;if((J|0)==28){I=j+4|0;q=B((c[j>>2]<<3)+32|0,(c[I>>2]<<1)+8|0)|0;H=FO(q)|0;if(!H){Ue(0,3,41858,E);Ea(1)}G=FO(q)|0;if(!G){Ue(0,3,41858,F);Ea(1)}F=j+36|0;r=0;E=0;q=-1;while(1){if((E|0)>=(c[M>>2]|0))break;u=c[j>>2]|0;s=c[I>>2]|0;c:do if((c[F>>2]|0)==(B(s,u)|0)){switch(i|0){case 5:case 12:case 13:case 14:break;default:{J=40;break c}}l=R+(E<<2)|0;k=c[l>>2]|0;m=k+-3-(c[V>>2]<<1)|0;if((((m|0)>=0?(k+3+(c[W>>2]<<1)|0)<(h|0):0)?(N=P+(E<<2)|0,O=c[N>>2]|0,Q=O+-3-(c[L>>2]<<1)|0,(Q|0)>=0):0)?(O+3+(c[K>>2]<<1)|0)<(g|0):0){k=(s<<1)+6|0;t=(u<<2)+16|0;v=G;w=H;s=0;while(1){if((s|0)>=(t|0))break;c[w>>2]=0;c[v>>2]=0;v=v+4|0;w=w+4|0;s=s+1|0}D=(u<<1)+6|0;e=b+(Q+(B(m,g)|0))|0;z=G;A=H;s=w;C=0;while(1){if((C|0)>=(k|0))break;y=s+8|0;u=v;t=0;while(1){if((t|0)==2)break;c[s>>2]=0;c[u>>2]=0;c[T+(t<<2)>>2]=0;c[U+(t<<2)>>2]=0;u=u+4|0;s=s+4|0;t=t+1|0}x=e;u=z+8|0;w=A+8|0;v=v+8|0;s=y;t=0;while(1){if((t|0)>=(D|0))break;y=t&1;A=T+(y<<2)|0;z=(c[A>>2]|0)+(d[x>>0]|0)|0;c[A>>2]=z;A=d[x>>0]|0;A=B(A,A)|0;y=U+(y<<2)|0;A=A+(c[y>>2]|0)|0;c[y>>2]=A;c[s>>2]=(c[w>>2]|0)+z;c[v>>2]=(c[u>>2]|0)+A;x=x+1|0;u=u+4|0;w=w+4|0;v=v+4|0;s=s+4|0;t=t+1|0}e=e+g|0;z=u;A=w;C=C+1|0}u=0;while(1){if((u|0)==7)break c;v=u+m|0;w=u+2|0;x=u+-3|0;t=0;while(1){if((t|0)==7)break;zf(b,g,t+Q|0,v,j,H,G,t+2|0,w,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t+-3+(c[N>>2]|0);c[o>>2]=x+(c[l>>2]|0);f[p>>2]=+(s|0)/1.0e4;q=0;r=s}t=t+1|0}u=u+1|0}}else J=40}else J=40;while(0);d:do if((J|0)==40){J=0;v=c[R+(E<<2)>>2]|0;w=v+3|0;x=P+(E<<2)|0;v=v+-3|0;while(1){if((v|0)>(w|0))break d;e:do if((v|0)>=(c[V>>2]<<1|0)){if(((c[W>>2]<<1)+v|0)>=(h|0))break d;t=c[x>>2]|0;u=t+3|0;t=t+-3|0;while(1){if((t|0)>(u|0))break e;if((t|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+t|0)>=(g|0))break e;xf(b,g,i,j,t,v,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t;c[o>>2]=v;f[p>>2]=+(s|0)/1.0e4;r=s;q=0}}t=t+1|0}}while(0);v=v+1|0}}while(0);E=E+1|0}GO(H);GO(G)}zb=X;return q|0}function xf(a,e,f,g,h,i,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;l=c[g+24>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:{s=0-(c[g+8>>2]|0)|0;t=c[g+12>>2]|0;q=0-(c[g+16>>2]|0)|0;v=c[g+20>>2]|0;w=e<<1;m=l;p=a+((s<<1)+h+(B((q<<1)+i|0,e)|0))|0;l=0;f=0;k=0;while(1){if((q|0)>(v|0)){m=l;break a}r=s;n=m;o=p;while(1){if((r|0)>(t|0))break;m=b[n>>1]|0;if(m<<16>>16!=4096){i=d[o>>0]|0;l=l+i|0;f=(B(i,i)|0)+f|0;k=(B(i,m&65535)|0)+k|0}r=r+1|0;n=n+2|0;o=o+2|0}m=n;p=p+w|0;q=q+1|0}}default:{if(f>>>0<2){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+((w-(p<<1)|0)*3|0)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+6|0;l=l+2|0}r=r+1|0}}if((f|1|0)==3){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;l=l+2|0}r=r+1|0}}if((f|2|0)==6){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=l;l=0;f=0;k=0;while(1){if((r|0)>(s|0)){m=l;break a}w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[m>>1]|0;if(n<<16>>16!=4096){w=(((d[p+2>>0]|0)+(d[p+1>>0]|0)+(d[p+3>>0]|0)|0)>>>0)/3|0;l=w+l|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;m=m+2|0}r=r+1|0}}switch(f|0){case 7:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;r=0-(c[g+16>>2]|0)|0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p+1>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+4|0;l=l+2|0}r=r+1|0}}case 8:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;q=0-(c[g+16>>2]|0)|0;while(1){if((q|0)>(s|0))break a;w=(B((q<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;r=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(r|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}l=l+2|0;o=o+1|0;p=p+4|0}q=q+1|0}}default:{m=0;f=0;k=0;break a}}}}while(0);l=c[g+36>>2]|0;f=f-((B(m,m)|0)/(l|0)|0)|0;if(!f)f=0;else{i=(k-((B(c[g+32>>2]|0,m)|0)/(l|0)|0)|0)*100|0;f=(((i|0)/(c[g+28>>2]|0)|0)*100|0)/(~~+u(+(+(f|0)))|0)|0}c[j>>2]=f;return}function yf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[e>>2]|0;do if(!i){c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[e>>2]=1}else{j=0;while(1){if((j|0)>=(i|0))break;if((c[h+(j<<2)>>2]|0)<(d|0))break;j=j+1|0}if((j|0)==(i|0)){if(i>>>0>=3)break;c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;break}if((i|0)==3)i=2;else c[e>>2]=i+1;while(1){if((i|0)<=(j|0))break;e=i+-1|0;c[f+(i<<2)>>2]=c[f+(e<<2)>>2];c[g+(i<<2)>>2]=c[g+(e<<2)>>2];c[h+(i<<2)>>2]=c[h+(e<<2)>>2];i=e}c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d}while(0);return}function zf(a,b,f,g,h,i,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;o=a+((B(g,b)|0)+f)|0;r=c[h+4>>2]|0;p=b<<1;q=c[h>>2]|0;b=0;a=c[h+24>>2]|0;s=0;while(1){if((b|0)>=(r|0))break;n=0;f=o;g=s;while(1){if((n|0)>=(q|0))break;s=(B(e[a>>1]|0,d[f>>0]|0)|0)+g|0;n=n+1|0;a=a+2|0;f=f+2|0;g=s}b=b+1|0;o=o+p|0;s=g}a=q<<1;q=a+8|0;g=k+-2|0;a=g+a|0;f=l+-2|0;l=B(q,f+(r<<1)|0)|0;f=B(q,f)|0;k=l+a|0;r=f+g|0;l=l+g|0;a=f+a|0;f=(c[i+(r<<2)>>2]|0)+(c[i+(k<<2)>>2]|0)-(c[i+(l<<2)>>2]|0)-(c[i+(a<<2)>>2]|0)|0;g=c[h+36>>2]|0;a=(c[j+(r<<2)>>2]|0)+(c[j+(k<<2)>>2]|0)-(c[j+(l<<2)>>2]|0)-(c[j+(a<<2)>>2]|0)-((B(f,f)|0)/(g|0)|0)|0;if(!a)a=0;else{j=(s-((B(c[h+32>>2]|0,f)|0)/(g|0)|0)|0)*100|0;a=(((j|0)/(c[h+28>>2]|0)|0)*100|0)/(~~+u(+(+(a|0)))|0)|0}c[m>>2]=a;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=FO(40)|0;if(!d){Ue(0,3,41858,e);Ea(1)}c[d+16>>2]=a;c[d+8>>2]=a;c[d+20>>2]=b;c[d+12>>2]=b;b=a+1+b|0;c[d>>2]=b;c[d+4>>2]=b;b=FO(B(b<<1,b)|0)|0;c[d+24>>2]=b;if(!b){Ue(0,3,41858,e+8|0);Ea(1)}else{zb=e;return d|0}return 0}function Bf(d,e,g,i,j,k){d=d|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;D=zb;zb=zb+80|0;l=D+60|0;m=D+56|0;z=D+52|0;A=D+48|0;x=D;C=D+64|0;a:do if(!d){x=c[i>>2]|0;y=c[x+(j*20|0)+8>>2]|0;c[l>>2]=y;p=+f[x+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,e,(c[h>>2]=y,+f[h>>2]),p,z,A)|0)<0)d=-1;else{s=~~(+f[z>>2]+.5);l=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;q=0-l|0;i=~~(+f[A>>2]+.5)-(l<<1)|0;l=0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((q|0)>(c[t>>2]|0)){n=25;break a}o=c[v>>2]|0;p=+(i|0);n=0-o|0;o=s-(o<<1)|0;while(1){if((n|0)>(c[w>>2]|0))break;if((Gf(0,e,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+(o|0),p,C)|0)<0)b[m>>1]=4096;else{A=a[C>>0]|0;b[m>>1]=A&255;A=A&255;l=l+1|0;j=(B(A,A)|0)+j|0;d=d+A|0}n=n+1|0;o=o+2|0;m=m+2|0}q=q+1|0;i=i+2|0}}}else{vd(d+8|0,e,x)|0;w=c[i>>2]|0;e=c[w+(j*20|0)+8>>2]|0;c[l>>2]=e;p=+f[w+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,x,(c[h>>2]=e,+f[h>>2]),p,l,m)|0)>=0?(y=d+184|0,(oe(y,+f[l>>2],+f[m>>2],z,A)|0)>=0):0){s=~~(+f[z>>2]+.5);o=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;l=0;n=0-o|0;o=~~(+f[A>>2]+.5)-(o<<1)|0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((n|0)>(c[t>>2]|0)){n=25;break a}q=c[v>>2]|0;p=+(o|0);i=0-q|0;q=s-(q<<1)|0;while(1){if((i|0)>(c[w>>2]|0))break;do if((pe(y,+(q|0),p,z,A)|0)>=0)if((Gf(0,x,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+f[z>>2],+f[A>>2],C)|0)<0){b[m>>1]=4096;break}else{e=a[C>>0]|0;b[m>>1]=e&255;e=e&255;l=l+1|0;j=(B(e,e)|0)+j|0;d=d+e|0;break}else b[m>>1]=4096;while(0);i=i+1|0;q=q+2|0;m=m+2|0}n=n+1|0;o=o+2|0}}else d=-1}while(0);if((n|0)==25)if(!l)d=-1;else{g=~~+u(+(+(j-((B(d,d)|0)/(l|0)|0)|0)));c[k+28>>2]=g;c[k+32>>2]=d;c[k+36>>2]=l;d=0}zb=D;return d|0}function Cf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+32|0;m=r+20|0;n=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;k=r;l=+f[g+8>>2];i=+f[g+12>>2];if((b|0)!=0?(Ef(a,b,l,i,m,p)|0)>=0:0){c[h>>2]=~~+f[m>>2];c[h+4>>2]=~~+f[p>>2];if((d|0)!=0?(Ef(a,d,l,i,n,j)|0)>=0:0){c[h+8>>2]=~~(+f[m>>2]*2.0-+f[n>>2]);c[h+12>>2]=~~(+f[p>>2]*2.0-+f[j>>2]);if((e|0)!=0?(Ef(a,e,l,i,o,k)|0)>=0:0){c[h+16>>2]=~~(+f[o>>2]+(+f[m>>2]*3.0-+f[n>>2]*3.0));g=~~(+f[k>>2]+(+f[p>>2]*3.0-+f[j>>2]*3.0))}else q=10}else q=9}else{c[h>>2]=-1;c[h+4>>2]=-1;q=9}if((q|0)==9){c[h+8>>2]=-1;c[h+12>>2]=-1;q=10}if((q|0)==10){c[h+16>>2]=-1;g=-1}c[h+20>>2]=g;zb=r;return}function Df(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0;l=zb;zb=zb+64|0;h=l;j=l+52|0;k=l+48|0;if(a){vd(a+8|0,b,h)|0;m=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);i=(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/m;c=(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/m;b=a+184|0;if((oe(b,i,c,e,g)|0)>=0?(pe(b,+f[e>>2],+f[g>>2],j,k)|0)>=0:0){i=i-+f[j>>2];m=c-+f[k>>2];b=(i*i+m*m>1.0)<<31>>31}else b=-1}else{i=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);m=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/m;f[g>>2]=i/m;b=0}zb=l;return b|0}function Ef(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0.0;i=zb;zb=zb+48|0;h=i;if(!a){k=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);j=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/j;f[g>>2]=k/j;a=0}else{vd(a+8|0,b,h)|0;k=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);a=(oe(a+184|0,(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/k,(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/k,e,g)|0)>>31}zb=i;return a|0}function Ff(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0;r=zb;zb=zb+64|0;i=r+52|0;j=r+48|0;l=r;if(a)if((pe(a+184|0,c,d,i,j)|0)<0)a=-1;else{vd(a+8|0,b,l)|0;h=+f[l+32>>2];k=+f[i>>2];p=+f[l+36>>2];d=+f[j>>2];c=+f[l+44>>2];m=+f[l+12>>2]-k*c;n=p*d-+f[l+20>>2];o=h*d-+f[l+16>>2];p=k*p-+f[l+4>>2];k=h*k-+f[l>>2];h=+f[l+28>>2];c=d*c;q=5}else{k=+f[b+32>>2];p=+f[b+36>>2];s=+f[b+44>>2];m=+f[b+12>>2]-s*c;n=p*d-+f[b+20>>2];o=k*d-+f[b+16>>2];p=p*c-+f[b+4>>2];k=k*c-+f[b>>2];h=+f[b+28>>2];c=s*d;q=5}if((q|0)==5){c=h-c;h=k*n-p*o;if(h==0.0)a=-1;else{f[e>>2]=(n*m-p*c)/h;f[g>>2]=(k*c-o*m)/h;a=0}}zb=r;return a|0}function Gf(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=+g;h=+h;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+4|0;o=p;if((((Ff(b,d,g,h,n,o)|0)>=0?(j=+f[e+12>>2],k=~~(+f[n>>2]*j/25.399999618530273+.5),(k|0)>=0):0)?(l=c[e+4>>2]|0,(l|0)>(k|0)):0)?(n=c[e+8>>2]|0,m=~~(+(n|0)-j*+f[o>>2]/25.399999618530273+.5),(m|0)>-1&(n|0)>(m|0)):0){b=(B(l,m)|0)+k|0;a[i>>0]=a[(c[e>>2]|0)+b>>0]|0;b=0}else b=-1;zb=p;return b|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return Bd(a,b,c)|0}function If(a){a=a|0;return Cd(a)|0}function Jf(a){a=a|0;return Kf(a,c[a>>2]|0,c[a+4>>2]|0,1)|0}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=zb;zb=zb+16|0;f=HO(1,4156)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{h=tB(4)|0;Ij(h);c[f>>2]=h;c[f+4>>2]=a;c[f+8>>2]=e;c[f+12>>2]=b;c[f+16>>2]=d;c[f+20>>2]=1;c[f+24>>2]=-1;e=f+28|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;zb=g;return f|0}return 0}function Lf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)b=-1;else{d=c[b>>2]|0;if(d){nk(d);SA(d);b=c[a>>2]|0}d=c[b+28>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+36>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+52>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+44>>2]|0;if(d){GO(d);b=c[a>>2]|0}GO(b);c[a>>2]=0;b=0}return b|0}function Mf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;Rf(a);return}function Qf(a){a=a|0;P(a|0)|0;UA()}function Rf(a){a=a|0;SA(a);return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+48|0;r=s+40|0;p=s+32|0;m=s+24|0;k=s+16|0;f=s+8|0;e=s;if((a|0)!=0&(b|0)!=0){e=c[a>>2]|0;do if(!e){e=FO(16)|0;c[a>>2]=e;if(!e){Ue(0,3,41858,f);Ea(1)}else{c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=0;c[e+8>>2]=0;l=e;d=e;break}}else{l=e;d=e}while(0);f=c[b>>2]|0;if(!f)d=0;else{g=c[l+4>>2]|0;h=c[f+4>>2]|0;i=h+g|0;j=FO(i*132|0)|0;if(!j){Ue(0,3,41858,k);Ea(1)}e=0;while(1){if((e|0)>=(g|0))break;_O(j+(e*132|0)|0,(c[l>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=0;while(1){if((e|0)>=(h|0))break;_O(j+((e+g|0)*132|0)|0,(c[f>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=c[l>>2]|0;if(e){GO(e);d=c[a>>2]|0}c[d>>2]=j;h=c[a>>2]|0;c[h+4>>2]=i;k=c[h+12>>2]|0;g=c[b>>2]|0;l=c[g+12>>2]|0;g=g+8|0;h=h+8|0;d=0;f=0;while(1){if((f|0)>=(l|0))break;e=0;while(1){if((e|0)>=(k|0))break;if((c[(c[g>>2]|0)+(f*12|0)+8>>2]|0)==(c[(c[h>>2]|0)+(e*12|0)+8>>2]|0)){q=23;break}else e=e+1|0}if((q|0)==23){q=0;d=d+1|0}f=f+1|0}n=l+k-d|0;o=FO(n*12|0)|0;if(!o){Ue(0,3,41858,m);Ea(1)}j=0;while(1){if((j|0)>=(k|0))break;h=(c[a>>2]|0)+8|0;d=c[h>>2]|0;g=d+(j*12|0)+8|0;c[o+(j*12|0)+8>>2]=c[g>>2];d=c[d+(j*12|0)+4>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(f*12|0)+8>>2]|0)==(c[g>>2]|0))d=(c[e+(f*12|0)+4>>2]|0)+d|0;f=f+1|0}i=o+(j*12|0)|0;m=FO(d*12|0)|0;c[i>>2]=m;if(!m){q=36;break}h=c[(c[h>>2]|0)+(j*12|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;g=(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;m=(c[i>>2]|0)+(e*12|0)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];e=e+1|0}g=0;while(1){if((g|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(g*12|0)+8>>2]|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)+8>>2]|0)){q=43;break}g=g+1|0}a:do if((q|0)==43){q=0;f=0;while(1){if((f|0)>=(c[e+(g*12|0)+4>>2]|0))break a;t=(c[e+(g*12|0)>>2]|0)+(f*12|0)|0;m=(c[i>>2]|0)+((f+h|0)*12|0)|0;c[m>>2]=c[t>>2];c[m+4>>2]=c[t+4>>2];c[m+8>>2]=c[t+8>>2];f=f+1|0;e=c[(c[b>>2]|0)+8>>2]|0}}while(0);c[o+(j*12|0)+4>>2]=d;j=j+1|0}if((q|0)==36){Ue(0,3,41858,p);Ea(1)}d=0;j=0;while(1){if((j|0)>=(l|0))break;f=c[(c[b>>2]|0)+8>>2]|0;g=c[f+(j*12|0)+8>>2]|0;e=0;while(1){if((e|0)>=(k|0)){q=53;break}if((g|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(e*12|0)+8>>2]|0)){q=52;break}else e=e+1|0}if((q|0)==52){q=0;d=d+1|0}else if((q|0)==53){q=0;h=j+k-d|0;i=o+(h*12|0)|0;c[o+(h*12|0)+8>>2]=g;f=c[f+(j*12|0)+4>>2]|0;t=FO(f*12|0)|0;c[i>>2]=t;if(!t){q=55;break}e=0;while(1){if((e|0)>=(f|0))break;p=(c[(c[(c[b>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;t=(c[i>>2]|0)+(e*12|0)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];e=e+1|0}c[o+(h*12|0)+4>>2]=f}j=j+1|0}if((q|0)==55){Ue(0,3,41858,r);Ea(1)}e=c[a>>2]|0;d=e+8|0;g=c[d>>2]|0;if(g){f=0;d=g;while(1){if((f|0)>=(c[e+12>>2]|0))break;GO(c[d+(f*12|0)>>2]|0);t=c[a>>2]|0;f=f+1|0;e=t;d=c[t+8>>2]|0}GO(d);d=(c[a>>2]|0)+8|0}c[d>>2]=o;c[(c[a>>2]|0)+12>>2]=n;Tf(b)|0;d=0}}else{Ue(0,3,22132,e);d=-1}zb=s;return d|0}function Tf(a){a=a|0;var b=0,d=0,e=0,f=0;e=zb;zb=zb+16|0;if(a){b=c[a>>2]|0;if(!b)b=0;else{b=c[b>>2]|0;if(b|0)GO(b);b=0;while(1){f=c[a>>2]|0;d=f+8|0;if((b|0)>=(c[f+12>>2]|0))break;GO(c[(c[d>>2]|0)+(b*12|0)>>2]|0);b=b+1|0}GO(c[d>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;b=0}}else{Ue(0,3,22192,e);b=-1}zb=e;return b|0}function Uf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;o=p+56|0;n=p+48|0;l=p+40|0;k=p+32|0;j=p+24|0;i=p+8|0;h=p;g=p+60|0;a[g>>0]=a[22236]|0;a[g+1>>0]=a[22237]|0;a[g+2>>0]=a[22238]|0;a:do if((b|0)!=0&(e|0)!=0){m=Hg(b,d,g)|0;if(!m){f=(d|0)!=0;c[i>>2]=b;c[i+4>>2]=f?46716:57671;c[i+8>>2]=f?d:57671;Ue(0,3,22290,i);f=-1;break}i=HO(1,16)|0;if(!i){Ue(0,3,41858,j);Ea(1)}h=i+4|0;b:do if((gA(h,4,1,m)|0)==1?(f=c[h>>2]|0,(f|0)>=1):0){j=FO(f*132|0)|0;c[i>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}g=0;while(1){if((g|0)>=(f|0))break;if((gA((c[i>>2]|0)+(g*132|0)|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+8|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+16|0,108,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+124|0,4,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+128|0,4,1,m)|0)!=1)break b;g=g+1|0;f=c[h>>2]|0}b=i+12|0;if((gA(b,4,1,m)|0)==1){f=c[b>>2]|0;if((f|0)<1){c[i+8>>2]=0;break}k=FO(f*12|0)|0;d=i+8|0;c[d>>2]=k;if(!k){Ue(0,3,41858,l);Ea(1)}h=0;while(1){if((h|0)>=(f|0)){f=32;break}if((gA((c[d>>2]|0)+(h*12|0)+8|0,4,1,m)|0)!=1)break b;if((gA((c[d>>2]|0)+(h*12|0)+4|0,4,1,m)|0)!=1)break b;l=c[d>>2]|0;f=c[l+(h*12|0)+4>>2]|0;g=FO(f*12|0)|0;c[l+(h*12|0)>>2]=g;if(!g){f=29;break}if((gA(g,12,f,m)|0)!=(f|0))break b;h=h+1|0;f=c[b>>2]|0}if((f|0)==29){Ue(0,3,41858,n);Ea(1)}else if((f|0)==32){c[e>>2]=i;xz(m)|0;f=0;break a}}}while(0);Ue(0,3,22357,o);f=c[i+8>>2]|0;if(f|0)GO(f);f=c[i>>2]|0;if(f|0)GO(f);GO(i);xz(m)|0;f=-1}else{Ue(0,3,22239,h);f=-1}while(0);zb=p;return f|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;a:do if(!a){Ue(0,3,22402,j);e=-1}else{g=c[a+4>>2]|0;i=(b|0)==-1;e=0;while(1){if((e|0)>=(g|0))break;f=(c[a>>2]|0)+(e*132|0)+124|0;h=c[f>>2]|0;if((h|0)==(b|0)|i&(h|0)>-1)c[f>>2]=d;e=e+1|0}h=c[a+12>>2]|0;f=a+8|0;e=0;while(1){if((e|0)>=(h|0)){e=0;break a}g=(c[f>>2]|0)+(e*12|0)+8|0;a=c[g>>2]|0;if((a|0)==(b|0)|i&(a|0)>-1)c[g>>2]=d;e=e+1|0}}while(0);zb=j;return e|0}function Wf(){return -1}function Xf(a,b){a=a|0;b=b|0;return Zf(a,b,Yf(b)|0)|0}function Yf(a){a=a|0;return Qy(a)|0}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;g=l+12|0;j=l;k=l+8|0;NE(j,b);if(a[j>>0]|0){h=(c[b>>2]|0)+-12|0;c[k>>2]=c[b+(c[h>>2]|0)+24>>2];h=b+(c[h>>2]|0)|0;i=c[h+4>>2]|0;f=d+e|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(g,h);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(g);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;c[g>>2]=c[k>>2];if(!($f(g,d,(i&176|0)==32?f:d,f,h,e&255)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(j);zb=l;return b|0}function _f(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{k=d;j=f-k|0;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;k=j-k|0;if((k|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;hO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+11>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){jO(m);break}else{c[b>>2]=0;jO(m);i=0;break a}}while(0);f=f-j|0;if((f|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function bg(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return}function cg(a){a=a|0;return a&255|0}function dg(a){a=a|0;if(_f(a,Wf()|0)|0)a=~(Wf()|0);return a|0}function eg(a){a=a|0;return a&255|0}function fg(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+112|0;z=A+48|0;p=A+40|0;n=A+32|0;l=A+24|0;h=A+16|0;g=A+8|0;e=A;v=A+96|0;w=A+84|0;x=A+72|0;y=A+52|0;a:do if((b|0)!=0&(d|0)!=0){i=d+4|0;e=c[i>>2]|0;if(!e){Ue(0,3,22499,g);e=-1;break}u=b+28|0;g=c[u>>2]|0;if(g){GO(g);e=c[i>>2]|0;if(!e){c[u>>2]=0;e=0}else j=7}else j=7;b:do if((j|0)==7){t=FO(e*132|0)|0;c[u>>2]=t;if(!t){Ue(0,3,41858,h);Ea(1)}g=0;while(1){if((g|0)>=(e|0))break b;_O((c[u>>2]|0)+(g*132|0)|0,(c[d>>2]|0)+(g*132|0)|0,132)|0;g=g+1|0;e=c[i>>2]|0}}while(0);m=b+32|0;c[m>>2]=e;t=b+36|0;e=c[t>>2]|0;if(e|0){i=b+40|0;h=0;while(1){if((h|0)>=(c[i>>2]|0))break;g=c[e+(h*12|0)>>2]|0;if(g){GO(g);e=c[t>>2]|0}h=h+1|0}GO(e)}k=d+12|0;e=c[k>>2]|0;c:do if(!e){c[t>>2]=0;o=0}else{s=FO(e*12|0)|0;c[t>>2]=s;if(!s){Ue(0,3,41858,l);Ea(1)}d=d+8|0;j=0;while(1){if((j|0)>=(e|0)){o=e;break c}i=c[d>>2]|0;g=c[t>>2]|0;c[g+(j*12|0)+8>>2]=c[i+(j*12|0)+8>>2];h=i+(j*12|0)+4|0;c[g+(j*12|0)+4>>2]=c[h>>2];h=c[h>>2]|0;if(!h)c[i+(j*12|0)>>2]=0;else{s=FO(h*12|0)|0;c[g+(j*12|0)>>2]=s;if(!s)break;g=0;e=i;while(1){if((g|0)>=(c[e+(j*12|0)+4>>2]|0))break;r=(c[e+(j*12|0)>>2]|0)+(g*12|0)|0;s=(c[(c[t>>2]|0)+(j*12|0)>>2]|0)+(g*12|0)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];g=g+1|0;e=c[d>>2]|0}e=c[k>>2]|0}j=j+1|0}Ue(0,3,41858,n);Ea(1)}while(0);s=b+40|0;c[s>>2]=o;i=b+52|0;e=c[i>>2]|0;if(e|0){GO(e);c[i>>2]=0;c[b+56>>2]=0}g=c[k>>2]|0;d:do if((g|0)>0){c[b+56>>2]=g;h=FO(g*68|0)|0;c[i>>2]=h;if(!h){Ue(0,3,41858,p);Ea(1)}e=0;while(1){if((e|0)==(g|0))break d;c[h+(e*68|0)+64>>2]=0;e=e+1|0}}while(0);l=c[m>>2]|0;if(!l)e=0;else{m=v+4|0;n=v+8|0;o=w+4|0;p=w+8|0;q=x+4|0;r=x+8|0;k=0;e=0;while(1){if((k|0)>=(c[s>>2]|0)){e=0;break a}d=0;while(1){if((d|0)>=(c[(c[t>>2]|0)+(k*12|0)+4>>2]|0))break;c[v>>2]=0;c[m>>2]=0;c[n>>2]=0;c[w>>2]=0;c[o>>2]=0;c[p>>2]=0;c[x>>2]=0;c[q>>2]=0;c[r>>2]=0;j=0;while(1){if((j|0)>=(l|0))break;g=c[u>>2]|0;i=c[t>>2]|0;e:do if((c[g+(j*132|0)+128>>2]|0)==(c[(c[i+(k*12|0)>>2]|0)+(d*12|0)+8>>2]|0)?(c[g+(j*132|0)+124>>2]|0)==(c[i+(k*12|0)+8>>2]|0):0){gg(y,+f[g+(j*132|0)>>2],+f[g+(j*132|0)+4>>2],+f[g+(j*132|0)+112>>2],+f[g+(j*132|0)+116>>2],(c[g+(j*132|0)+120>>2]|0)!=0);g=c[m>>2]|0;if(g>>>0<(c[n>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[m>>2]=g+20}else hg(v,y);Of(y);g=c[u>>2]|0;ig(y,+f[g+(j*132|0)+8>>2],+f[g+(j*132|0)+12>>2],0.0);g=c[o>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[o>>2]=(c[o>>2]|0)+12}else jg(w,y);g=0;while(1){if(g>>>0>=96)break e;h=(c[u>>2]|0)+(j*132|0)+16+g|0;i=c[q>>2]|0;if((i|0)==(c[r>>2]|0))kg(x,h);else{a[i>>0]=a[h>>0]|0;c[q>>2]=(c[q>>2]|0)+1}g=g+1|0}}while(0);j=j+1|0}c[z>>2]=((c[m>>2]|0)-(c[v>>2]|0)|0)/20|0;Ue(0,1,22532,z);j=c[t>>2]|0;c[b+60+(e<<2)>>2]=c[j+(k*12|0)+8>>2];j=c[j+(k*12|0)>>2]|0;em(c[b>>2]|0,v,x,w,c[j+(d*12|0)>>2]|0,c[j+(d*12|0)+4>>2]|0,e);Mf(x);lg(w);Nf(v);d=d+1|0;e=e+1|0}k=k+1|0}}}else{Ue(0,3,22451,e);e=-1}while(0);zb=A;return e|0}function gg(b,c,d,e,g,h){b=b|0;c=+c;d=+d;e=+e;g=+g;h=h|0;f[b>>2]=c;f[b+4>>2]=d;f[b+8>>2]=e;f[b+12>>2]=g;a[b+16>>0]=h&1;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/20|0)+1|0;g=ug(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/20|0;j=k<<1;vg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/20|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[g>>2]=(c[g>>2]|0)+20;wg(a,d);xg(d);zb=h;return}}function ig(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;f[a>>2]=b;f[a+4>>2]=c;f[a+8>>2]=d;return}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qg(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/12|0;j=k<<1;rg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/12|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[g>>2]=(c[g>>2]|0)+12;sg(a,d);tg(d);zb=h;return}}function kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=zb;zb=zb+32|0;e=i;f=b+4|0;g=(c[f>>2]|0)-(c[b>>2]|0)+1|0;h=mg(b)|0;if(h>>>0>>0)EO(b);else{j=c[b>>2]|0;l=(c[b+8>>2]|0)-j|0;k=l<<1;ng(e,l>>>0>>1>>>0?(k>>>0>>0?g:k):h,(c[f>>2]|0)-j|0,b+8|0);h=e+8|0;a[c[h>>2]>>0]=a[d>>0]|0;c[h>>2]=(c[h>>2]|0)+1;og(b,e);pg(e);zb=i;return}}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mg(a){a=a|0;return 2147483647}function ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=tB(b)|0;c[a>>2]=e;d=e+d|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+b;return}function og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-f)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-1|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function qg(a){a=a|0;return 357913941}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-12|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ug(a){a=a|0;return 214748364}function vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>214748364){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*20|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*20|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*20|0);return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;i=(c[g>>2]|0)+-20|0;h=d+-20|0;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[g>>2]=(c[g>>2]|0)+-20;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;f=a+8|0;i=b+12|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;c[b>>2]=c[g>>2];return}function xg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-20|0;c[d>>2]=e;Of(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+48|0;r=u+16|0;o=u+8|0;d=u;e=u+44|0;h=u+40|0;do if((a|0)!=0&(b|0)!=0){i=c[a+12>>2]|0;j=c[a+16>>2]|0;m=c[a+20>>2]|0;n=(m|0)==1;if(!n){d=Bg(b,i,j,m,e,h)|0;if(!d){d=-1;break}else{s=d;t=1}}else{s=b;t=0}Em(c[a>>2]|0,s,i,j)|0;j=fp(c[a>>2]|0)|0;j=(c[j+4>>2]|0)-(c[j>>2]|0)|0;d=(j|0)/20|0;i=a+48|0;c[i>>2]=d;a:do if(!j){e=c[a+56>>2]|0;b=a+52|0;d=0;while(1){if((d|0)>=(e|0))break a;c[(c[b>>2]|0)+(d*68|0)+60>>2]=-1;d=d+1|0}}else{j=a+44|0;b=c[j>>2]|0;if(b){GO(b);d=c[i>>2]|0}h=FO(d<<3)|0;c[j>>2]=h;if(!h){Ue(0,3,41858,o);Ea(1)}e=fp(c[a>>2]|0)|0;b:do if(n){h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k;f[o+(d<<3)+4>>2]=l}else{o=c[j>>2]|0;pe(b+184|0,k,l,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}else switch(m|0){case 5:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*1.5;f[o+(d<<3)+4>>2]=l*1.5}else{o=c[j>>2]|0;pe(b+184|0,k*1.5,l*1.5,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 2:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*2.0;f[o+(d<<3)+4>>2]=l*2.0}else{o=c[j>>2]|0;pe(b+184|0,k*2.0,l*2.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 4:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*3.0;f[o+(d<<3)+4>>2]=l*3.0}else{o=c[j>>2]|0;pe(b+184|0,k*3.0,l*3.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}default:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*4.0;f[o+(d<<3)+4>>2]=l*4.0}else{o=c[j>>2]|0;pe(b+184|0,k*4.0,l*4.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}}while(0);i=a+56|0;j=a+36|0;b=a+52|0;d=0;while(1){e=c[i>>2]|0;if((d|0)>=(e|0))break a;o=c[b>>2]|0;c[o+(d*68|0)+48>>2]=c[(c[j>>2]|0)+(d*12|0)+8>>2];c[o+(d*68|0)+60>>2]=-1;if(((c[o+(d*68|0)+64>>2]|0)==0?(p=hp(c[a>>2]|0)|0,q=cp(c[a>>2]|0)|0,(q|0)>=0):0)?(e=c[h>>2]|0,m=ep(c[a>>2]|0,q)|0,n=fp(c[a>>2]|0)|0,o=c[b>>2]|0,(zg(e,p,m,n,o+(d*68|0)|0,o+(d*68|0)+52|0)|0)==0):0){n=c[b>>2]|0;c[n+(d*68|0)+60>>2]=0;o=(c[p+4>>2]|0)-(c[p>>2]|0)>>3;c[n+(d*68|0)+56>>2]=o;c[n+(d*68|0)+48>>2]=c[a+60+(q<<2)>>2];l=+f[n+(d*68|0)+52>>2];c[r>>2]=d;c[r+4>>2]=o;c[r+8>>2]=o;g[r+16>>3]=l;Ue(0,1,22587,r)}d=d+1|0}}while(0);d=0;while(1){if((d|0)>=(e|0))break;c[(c[b>>2]|0)+(d*68|0)+64>>2]=0;d=d+1|0}if(!t)d=0;else{GO(s);d=0}}else{Ue(0,3,22543,d);d=-1}while(0);zb=u;return d|0}function zg(a,b,d,e,h,i){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=zb;zb=zb+240|0;k=u+208|0;j=u+200|0;s=u+224|0;p=u+212|0;q=u+96|0;t=u+192|0;r=u;l=c[b>>2]|0;b=(c[b+4>>2]|0)-l|0;m=b>>3;do if(m>>>0<4)b=-1;else{o=FO(b<<1)|0;if(!o){Ue(0,3,41858,j);Ea(1)}n=FO(m*24|0)|0;if(!n){Ue(0,3,41858,k);Ea(1)}e=c[e>>2]|0;j=c[d>>2]|0;b=0;while(1){if((b|0)==(m|0))break;d=c[l+(b<<3)>>2]|0;g[o+(b<<4)>>3]=+f[e+(d*20|0)>>2];g[o+(b<<4)+8>>3]=+f[e+(d*20|0)+4>>2];d=c[l+(b<<3)+4>>2]|0;g[n+(b*24|0)>>3]=+f[j+(d*12|0)>>2];g[n+(b*24|0)+8>>3]=+f[j+(d*12|0)+4>>2];g[n+(b*24|0)+16>>3]=0.0;b=b+1|0}c[p+8>>2]=m;c[p>>2]=o;c[p+4>>2]=n;b=a+8|0;if((Me(b,o,n,m,q)|0)<0){GO(o);GO(n);b=-1;break}b=Ee(b)|0;c[s>>2]=b;if(!b){GO(o);GO(n);b=-1;break}if((He(b,p,q,r,t)|0)<0){GO(o);GO(n);Fe(s)|0;b=-1}else{j=0;while(1){if((j|0)==3)break;b=0;while(1){if((b|0)==4)break;f[h+(j<<4)+(b<<2)>>2]=+g[r+(j<<5)+(b<<3)>>3];b=b+1|0}j=j+1|0}Fe(s)|0;GO(o);GO(n);v=+g[t>>3];f[i>>2]=v;b=(v>10.0)<<31>>31}}while(0);zb=u;return b|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)a=-1;else{c[b>>2]=c[a+52>>2];c[d>>2]=c[a+56>>2];a=0}return a|0}function Bg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;switch(d|0){case 1:{a=Cg(a,b,c,e,f)|0;break}case 5:{a=Dg(a,b,c,e,f)|0;break}case 2:{a=Eg(a,b,c,e,f)|0;break}case 4:{a=Fg(a,b,c,e,f)|0;break}default:a=Gg(a,b,c,e,f)|0}return a|0}function Cg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;c[e>>2]=b;c[f>>2]=d;b=B(d,b)|0;d=FO(b)|0;if(!d){Ue(0,3,41858,g);Ea(1)}else{_O(d|0,a|0,b|0)|0;zb=g;return d|0}return 0}function Dg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=zb;zb=zb+16|0;o=(e|0)/3|0;p=o<<1;c[g>>2]=p;n=(f|0)/3|0;m=n<<1;c[h>>2]=m;m=FO(B(m,p)|0)|0;if(!m){Ue(0,3,41858,q);Ea(1)}h=0;f=m;g=m;while(1){if((h|0)>=(n|0))break;l=h*3|0;i=0;j=b+(B(l+2|0,e)|0)|0;k=b+(B(l+1|0,e)|0)|0;l=b+(B(l,e)|0)|0;g=g+p|0;while(1){if((i|0)>=(o|0))break;u=l+1|0;s=k+1|0;a[f>>0]=(((d[u>>0]|0)>>>1&255)+(d[l>>0]|0)+((d[k>>0]|0)>>>1&255)+((d[s>>0]|0)>>>2&255)<<2>>>0)/9|0;r=j+1|0;a[g>>0]=((((d[s>>0]|0)>>>2)+((d[k>>0]|0)>>>1)&255)+(d[j>>0]|0)+((d[r>>0]|0)>>>1&255)<<2>>>0)/9|0;t=k+2|0;a[f+1>>0]=(((d[u>>0]|0)>>>1&255)+(d[l+2>>0]|0)+((d[s>>0]|0)>>>2&255)+((d[t>>0]|0)>>>1&255)<<2>>>0)/9|0;a[g+1>>0]=((((d[t>>0]|0)>>>1)+((d[s>>0]|0)>>>2)&255)+((d[r>>0]|0)>>>1&255)+(d[j+2>>0]|0)<<2>>>0)/9|0;i=i+1|0;j=j+3|0;k=k+3|0;l=l+3|0;f=f+2|0;g=g+2|0}h=h+1|0;f=f+p|0}zb=q;return m|0}function Eg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=(e|0)/2|0;c[g>>2]=m;l=(f|0)/2|0;c[h>>2]=l;k=FO(B(l,m)|0)|0;if(!k){Ue(0,3,41858,n);Ea(1)}g=0;f=k;while(1){if((g|0)>=(l|0))break;j=g<<1;h=0;i=b+(B(j,e)|0)|0;j=b+(B(j|1,e)|0)|0;while(1){if((h|0)>=(m|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)|0)>>>2;h=h+1|0;i=i+2|0;j=j+2|0;f=f+1|0}g=g+1|0}zb=n;return k|0}function Fg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=(e|0)/3|0;c[g>>2]=n;m=(f|0)/3|0;c[h>>2]=m;l=FO(B(m,n)|0)|0;if(!l){Ue(0,3,41858,o);Ea(1)}g=0;f=l;while(1){if((g|0)>=(m|0))break;k=g*3|0;h=0;i=b+(B(k,e)|0)|0;j=b+(B(k+2|0,e)|0)|0;k=b+(B(k+1|0,e)|0)|0;while(1){if((h|0)>=(n|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)|0)/9|0;h=h+1|0;i=i+3|0;j=j+3|0;k=k+3|0;f=f+1|0}g=g+1|0}zb=o;return l|0}function Gg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=(e|0)/4|0;c[g>>2]=o;n=(f|0)/4|0;c[h>>2]=n;m=FO(B(n,o)|0)|0;if(!m){Ue(0,3,41858,p);Ea(1)}g=0;f=m;while(1){if((g|0)>=(n|0))break;l=g<<2;h=0;i=b+(B(l,e)|0)|0;j=b+(B(l|3,e)|0)|0;k=b+(B(l|2,e)|0)|0;l=b+(B(l|1,e)|0)|0;while(1){if((h|0)>=(o|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[i+3>>0]|0)+(d[l>>0]|0)+(d[l+1>>0]|0)+(d[l+2>>0]|0)+(d[l+3>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[k+3>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)+(d[j+3>>0]|0)|0)/16|0;h=h+1|0;i=i+4|0;j=j+4|0;k=k+4|0;l=l+4|0;f=f+1|0}g=g+1|0}zb=p;return m|0}function Hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;g=i;do if(a){if(!b){e=rz(a,d)|0;break}f=Qy(a)|0;f=FO(f+2+(Qy(b)|0)|0)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{c[h>>2]=a;c[h+4>>2]=b;Hx(f,22627,h)|0;e=rz(f,d)|0;GO(f);break}}else e=0;while(0);zb=i;return e|0}function Ig(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;d=m;if(!(Kg(b)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,22633)|0,22676)|0,35e3)|0,53)|0,35007)|0,22771)|0;IE(d,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(d,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(d);QE(l,k)|0;ME(l)|0;ua()}i=Mg(Lg(b,0,0)|0)|0;j=Ng(Lg(b,0,0)|0)|0;k=Og(Lg(b,0,0)|0)|0;e=Pg(b)|0;l=a+12|0;c[l>>2]=e;b=(Qg(b)|0)+-1|0;e=a+16|0;c[e>>2]=b;Rg(a,B(c[l>>2]|0,b)|0);b=0;while(1){if(b>>>0>=(c[l>>2]|0)>>>0)break;f=j>>>b;g=k>>>b;d=0;while(1){h=c[e>>2]|0;if(d>>>0>=h>>>0)break;h=(B(h,b)|0)+d|0;cq((c[a>>2]|0)+(h<<5)|0,i,f,g,-1,1);d=d+1|0}b=b+1|0}zb=m;return}function Kg(a){a=a|0;return (c[a+8>>2]|0)-(c[a+4>>2]|0)>>5|0}function Lg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=zb;zb=zb+16|0;f=g;if((c[a+16>>2]|0)>>>0<=b>>>0){e=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,218)|0,35007)|0,22796)|0;IE(f,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);h=XF(f,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(f);QE(e,h)|0;ME(e)|0;ua()}e=c[a+20>>2]|0;if(e>>>0>d>>>0){h=(B(e,b)|0)+d|0;zb=g;return (c[a+4>>2]|0)+(h<<5)|0}else{h=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,219)|0,35007)|0,22816)|0;IE(f,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);g=XF(f,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(f);QE(h,g)|0;ME(h)|0;ua()}return 0}function Mg(a){a=a|0;return c[a>>2]|0}function Ng(a){a=a|0;return c[a+4>>2]|0}function Og(a){a=a|0;return c[a+8>>2]|0}function Pg(a){a=a|0;return c[a+16>>2]|0}function Qg(a){a=a|0;return c[a+20>>2]|0}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=d-f>>5;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b<<5)|0;while(1){if((d|0)==(a|0))break;f=d+-32|0;rq(f);d=f}c[g>>2]=a}}else Sg(a,b-e|0);return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>5>>>0>>0){d=(d-(c[a>>2]|0)>>5)+b|0;e=Ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>4;Vg(f,k>>5>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>5,a+8|0);Wg(f,b);Xg(a,f);Yg(f);break}}else Tg(a,b);while(0);zb=i;return}function Tg(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ug(a){a=a|0;return 134217727}function Vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>134217727){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<5)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<5)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<5);return}function Wg(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-32|0;bq((c[g>>2]|0)+-32|0,h);c[g>>2]=(c[g>>2]|0)+-32;d=h}e=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=e;e=b+8|0;h=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=h;e=a+8|0;h=b+12|0;f=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=f;c[b>>2]=c[g>>2];return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-32|0;c[d>>2]=e;rq(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((c[a+4>>2]|0)==(c[a>>2]|0)){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22835)|0,22676)|0,35e3)|0,72)|0,35007)|0,22877)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((Pg(b)|0)<=0){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,73)|0,35007)|0,22967)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if(b|0?NA(b,13184,13192,0)|0:0){f=a+12|0;g=a+16|0;e=0;while(1){if(e>>>0>=(c[f>>2]|0)>>>0)break;d=0;while(1){if(d>>>0>=(c[g>>2]|0)>>>0)break;k=_g(a,e,d)|0;j=Lg(b,e,d)|0;i=d+1|0;$g(0,k,j,Lg(b,e,i)|0);d=i}e=e+1|0}zb=h;return}k=Xf(Xf(PE(Xf(Xf(Xf(56032,23003)|0,22676)|0,35e3)|0,74)|0,35007)|0,23075)|0;IE(d,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(k,j)|0;ME(k)|0;ua()}function _g(a,b,d){a=a|0;b=b|0;d=d|0;d=(B(c[a+16>>2]|0,b)|0)+d|0;return (c[a>>2]|0)+(d<<5)|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;a=k;if((Mg(b)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23110)|0,22676)|0,35e3)|0,86)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(d)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23181)|0,22676)|0,35e3)|0,87)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(e)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23228)|0,22676)|0,35e3)|0,88)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(b)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23275)|0,22676)|0,35e3)|0,89)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(d)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23353)|0,22676)|0,35e3)|0,90)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(e)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23396)|0,22676)|0,35e3)|0,91)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23439)|0,22676)|0,35e3)|0,92)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23519)|0,22676)|0,35e3)|0,93)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(d)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23602)|0,22676)|0,35e3)|0,94)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(d)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23652)|0,22676)|0,35e3)|0,95)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}g=0;while(1){if(g>>>0>=(Og(d)|0)>>>0)break;h=bh(b,g)|0;i=ch(d,g)|0;j=ch(e,g)|0;a=0;while(1){if(a>>>0>=(Ng(d)|0)>>>0)break;f[h+(a<<2)>>2]=+f[i+(a<<2)>>2]-+f[j+(a<<2)>>2];a=a+1|0}g=g+1|0}zb=k;return}function ah(a){a=a|0;return c[a+16>>2]|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,119)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,124)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function dh(b){b=b|0;var d=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=10;c[b+12>>2]=10;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;a[b+28>>0]=1;Ig(b+32|0);f[b+52>>2]=0.0;f[b+56>>2]=10.0;d=b+60|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;f[b+88>>2]=9.0;sj(b+92|0);d=b+144|0;c[d>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;eh(b,5e3);fh(d,36);return}function eh(a,b){a=a|0;b=b|0;c[a+84>>2]=b;uh(a+60|0,b);return}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else nh(a,b-e|0);return}function gh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function hh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function ih(a){a=a|0;mh(a);return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;kh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;lh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function lh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-32|0;rq(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ph(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;qh(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);rh(f,b);sh(a,f);th(f);break}}else oh(a,b);while(0);zb=i;return}function oh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function ph(a){a=a|0;return 1073741823}function qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function rh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function th(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((((c[a+8>>2]|0)-e|0)/36|0)>>>0>>0){vh(d,b,((c[a+4>>2]|0)-e|0)/36|0,a+8|0);wh(a,d);xh(d)}zb=f;return}function vh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>119304647){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*36|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*36|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*36|0);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-36|0)*36|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-36|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yh(a){a=a|0;gh(a+144|0);tj(a+92|0);hh(a+72|0);hh(a+60|0);ih(a+32|0);jh(a+16|0);return} +function aI(){var b=0,d=0;if((a[54864]|0)==0?nB(54864)|0:0){d=53568;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53856);pB(54864)}nO(53568,49685)|0;nO(53580,49693)|0;nO(53592,49702)|0;nO(53604,49708)|0;nO(53616,49714)|0;nO(53628,49718)|0;nO(53640,49723)|0;nO(53652,49728)|0;nO(53664,49735)|0;nO(53676,49745)|0;nO(53688,49753)|0;nO(53700,49762)|0;nO(53712,49771)|0;nO(53724,49775)|0;nO(53736,49779)|0;nO(53748,49783)|0;nO(53760,49714)|0;nO(53772,49787)|0;nO(53784,49791)|0;nO(53796,49795)|0;nO(53808,49799)|0;nO(53820,49803)|0;nO(53832,49807)|0;nO(53844,49811)|0;return}function bI(){var b=0,d=0;if((a[54880]|0)==0?nB(54880)|0:0){d=53856;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54024);pB(54880)}nO(53856,49815)|0;nO(53868,49822)|0;nO(53880,49829)|0;nO(53892,49837)|0;nO(53904,49847)|0;nO(53916,49856)|0;nO(53928,49863)|0;nO(53940,49872)|0;nO(53952,49876)|0;nO(53964,49880)|0;nO(53976,49884)|0;nO(53988,49888)|0;nO(54e3,49892)|0;nO(54012,49896)|0;return}function cI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function dI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function eI(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;s=z+12|0;r=z+8|0;w=z+4|0;x=z;IE(s,g);t=XF(s,56736)|0;YF(s);c[h>>2]=0;u=t+8|0;m=0;a:while(1){l=c[e>>2]|0;if(!((j|0)!=(k|0)&(m|0)==0))break;n=l;if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;o=1;q=0}else{o=0;q=n}}else{l=0;o=1;q=n}p=c[f>>2]|0;m=p;do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else n=cg(a[n>>0]|0)|0;if(!(_f(n,Wf()|0)|0))if(o)break;else{y=63;break a}else{c[f>>2]=0;m=0;y=15;break}}else y=15;while(0);if((y|0)==15){y=0;if(o){y=63;break}else p=0}b:do if((Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0)<<24>>24==37){p=j+1|0;if((p|0)==(k|0)){y=63;break a}n=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{j=j+2|0;if((j|0)==(k|0)){y=63;break a}o=n;l=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0;j=p;break}default:{o=0;l=n}}p=c[(c[d>>2]|0)+36>>2]|0;c[w>>2]=q;c[x>>2]=m;c[r>>2]=c[w>>2];c[s>>2]=c[x>>2];q=Qb[p&15](d,r,s,g,h,i,l,o)|0;c[e>>2]=q;j=j+2|0}else{m=a[j>>0]|0;if(m<<24>>24>-1?(v=c[u>>2]|0,b[v+(m<<24>>24<<1)>>1]&8192):0){do{j=j+1|0;if((j|0)==(k|0)){j=k;break}m=a[j>>0]|0;if(m<<24>>24<=-1)break}while((b[v+(m<<24>>24<<1)>>1]&8192)!=0);while(1){if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}do if(p){m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))m=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else m=cg(a[m>>0]|0)|0;if(!(_f(m,Wf()|0)|0))if(n)break;else break b;else{c[f>>2]=0;y=42;break}}else y=42;while(0);if((y|0)==42){y=0;if(n)break b;else p=0}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(b[(c[u>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}}}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;q=Ib[c[(c[t>>2]|0)+12>>2]&63](t,m&255)|0;if(q<<24>>24!=(Ib[c[(c[t>>2]|0)+12>>2]&63](t,a[j>>0]|0)|0)<<24>>24){c[h>>2]=4;break}m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}j=j+1|0}while(0);m=c[h>>2]|0}if((y|0)==63)c[h>>2]=4;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[f>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[m>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(n)break;else{y=78;break}else{c[f>>2]=0;y=76;break}}else y=76;while(0);if((y|0)==76?n:0)y=78;if((y|0)==78)c[h>>2]=c[h>>2]|2;zb=z;return l|0}function fI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function gI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function hI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function iI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function lI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);i=c[f>>2]|0;do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else break a;else{c[f>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){i=0;break}else i=0}d=c[e>>2]|0;h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if((d&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(d<<24>>24<<1)>>1]&8192))break;d=c[e>>2]|0;h=d+12|0;i=c[h>>2]|0;if((i|0)==(c[d+16>>2]|0))Gb[c[(c[d>>2]|0)+40>>2]&127](d)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}}d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else{k=41;break}else{c[f>>2]=0;k=39;break}}else k=39;while(0);if((k|0)==39?h:0)k=41;if((k|0)==41)c[g>>2]=c[g>>2]|2;return}function mI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+11>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+12+11>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(FG(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function nI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function oI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function pI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function qI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function rI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;i=1;break}else{i=(c[d>>2]|0)==0;break}}else i=1;while(0);h=c[e>>2]|0;do if(h){b=c[h+12>>2]|0;if((b|0)==(c[h+16>>2]|0))b=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(i){j=h;k=17;break}else{k=16;break}else{c[e>>2]=0;k=14;break}}else k=14;while(0);if((k|0)==14)if(i)k=16;else{j=0;k=17}a:do if((k|0)==16)c[f>>2]=c[f>>2]|6;else if((k|0)==17){b=c[d>>2]|0;h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if((Jb[c[(c[g>>2]|0)+36>>2]&63](g,b&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}b=c[d>>2]|0;h=b+12|0;i=c[h>>2]|0;if((i|0)==(c[b+16>>2]|0))Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;h=1;break}else{h=(c[d>>2]|0)==0;break}}else h=1;while(0);do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(h)break a;else break;else{c[e>>2]=0;k=38;break}}else k=38;while(0);if((k|0)==38?!h:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function sI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[d>>2]|0;do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[j>>0]|0)|0;if(_f(i,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);j=c[e>>2]|0;do if(j){i=c[j+12>>2]|0;if((i|0)==(c[j+16>>2]|0))i=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else i=cg(a[i>>0]|0)|0;if(!(_f(i,Wf()|0)|0))if(k){q=17;break}else{q=16;break}else{c[e>>2]=0;q=14;break}}else q=14;while(0);if((q|0)==14)if(k)q=16;else{j=0;q=17}a:do if((q|0)==16){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==17){i=c[d>>2]|0;k=c[i+12>>2]|0;if((k|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[k>>0]|0)|0;k=i&255;if(k<<24>>24>-1?(p=g+8|0,b[(c[p>>2]|0)+(i<<24>>24<<1)>>1]&2048):0){i=(Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24;k=c[d>>2]|0;l=k+12|0;m=c[l>>2]|0;if((m|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=m+1;cg(a[m>>0]|0)|0}n=j;m=j;while(1){i=i+-48|0;o=h+-1|0;j=c[d>>2]|0;do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[k>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;l=1;break}else{l=(c[d>>2]|0)==0;break}}else l=1;while(0);if(m){j=c[m+12>>2]|0;if((j|0)==(c[m+16>>2]|0))j=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;j=1;n=0;m=0}else j=0}else{j=1;m=0}k=c[d>>2]|0;if(!((h|0)>1&(l^j)))break;j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;k=j&255;if(k<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=(i*10|0)+((Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24)|0;j=c[d>>2]|0;k=j+12|0;l=c[k>>2]|0;if((l|0)==(c[j+16>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=l+1;cg(a[l>>0]|0)|0}h=o}do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);do if(n){j=c[n+12>>2]|0;if((j|0)==(c[n+16>>2]|0))j=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else j=cg(a[j>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(k)break a;else break;else{c[e>>2]=0;q=63;break}}else q=63;while(0);if((q|0)==63?!k:0)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function tI(a){a=a|0;CF(a);return}function uI(a){a=a|0;CF(a);SA(a);return}function vI(a){a=a|0;return 2}function wI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=PI(a,j,i,e,f,g,13152,13184)|0;zb=h;return g|0}function xI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+8+3>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+((o?c[n+4>>2]|0:e&255)<<2)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=PI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function yI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];NI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function zI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];OI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function AI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];_I(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function BI(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56768)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];NI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];OI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];QI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=PI(b,j,k,f,g,h,12976,13008)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=PI(b,j,k,f,g,h,13008,13040)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];RI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];SI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];TI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];UI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];VI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];WI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];XI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=PI(b,j,k,f,g,h,13040,13084)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=PI(b,j,k,f,g,h,13088,13108)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];YI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=PI(b,j,k,f,g,h,13120,13152)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];ZI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];_I(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];$I(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];aJ(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function CI(b){b=b|0;if((a[54952]|0)==0?nB(54952)|0:0){MI();c[14233]=54352;pB(54952)}return c[14233]|0}function DI(b){b=b|0;if((a[54936]|0)==0?nB(54936)|0:0){LI();c[14232]=54064;pB(54936)}return c[14232]|0}function EI(b){b=b|0;if((a[54920]|0)==0?nB(54920)|0:0){KI();c[14231]=54032;pB(54920)}return c[14231]|0}function FI(b){b=b|0;if((a[54912]|0)==0?nB(54912)|0:0){c[14228]=0;c[14229]=0;c[14230]=0;tO(56912,17648,JI(17648)|0);pB(54912)}return 56912}function GI(b){b=b|0;if((a[54904]|0)==0?nB(54904)|0:0){c[14225]=0;c[14226]=0;c[14227]=0;tO(56900,17600,JI(17600)|0);pB(54904)}return 56900}function HI(b){b=b|0;if((a[54896]|0)==0?nB(54896)|0:0){c[14222]=0;c[14223]=0;c[14224]=0;tO(56888,17564,JI(17564)|0);pB(54896)}return 56888}function II(b){b=b|0;if((a[54888]|0)==0?nB(54888)|0:0){c[14219]=0;c[14220]=0;c[14221]=0;tO(56876,17528,JI(17528)|0);pB(54888)}return 56876}function JI(a){a=a|0;return ly(a)|0}function KI(){var b=0,d=0;if((a[54928]|0)==0?nB(54928)|0:0){d=54032;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54056);pB(54928)}AO(54032,17732)|0;AO(54044,17744)|0;return}function LI(){var b=0,d=0;if((a[54944]|0)==0?nB(54944)|0:0){d=54064;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54352);pB(54944)}AO(54064,17756)|0;AO(54076,17788)|0;AO(54088,17824)|0;AO(54100,17848)|0;AO(54112,17872)|0;AO(54124,17888)|0;AO(54136,17908)|0;AO(54148,17928)|0;AO(54160,17956)|0;AO(54172,17996)|0;AO(54184,18028)|0;AO(54196,18064)|0;AO(54208,18100)|0;AO(54220,18116)|0;AO(54232,18132)|0;AO(54244,18148)|0;AO(54256,17872)|0;AO(54268,18164)|0;AO(54280,18180)|0;AO(54292,18196)|0;AO(54304,18212)|0;AO(54316,18228)|0;AO(54328,18244)|0;AO(54340,18260)|0;return}function MI(){var b=0,d=0;if((a[54960]|0)==0?nB(54960)|0:0){d=54352;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54520);pB(54960)}AO(54352,18276)|0;AO(54364,18304)|0;AO(54376,18332)|0;AO(54388,18364)|0;AO(54400,18404)|0;AO(54412,18440)|0;AO(54424,18468)|0;AO(54436,18504)|0;AO(54448,18520)|0;AO(54460,18536)|0;AO(54472,18552)|0;AO(54484,18568)|0;AO(54496,18584)|0;AO(54508,18600)|0;return}function NI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function OI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function PI(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+16|0;q=v+12|0;p=v+8|0;s=v+4|0;t=v;IE(q,e);r=XF(q,56768)|0;YF(q);c[f>>2]=0;k=0;a:while(1){j=c[b>>2]|0;if(!((h|0)!=(i|0)&(k|0)==0))break;l=j;if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;m=1;o=0}else{m=0;o=l}}else{j=0;m=1;o=l}n=c[d>>2]|0;k=n;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else l=jE(c[l>>2]|0)|0;if(!(JE(l,iE()|0)|0))if(m)break;else{u=60;break a}else{c[d>>2]=0;k=0;u=15;break}}else u=15;while(0);if((u|0)==15){u=0;if(m){u=60;break}else n=0}b:do if((Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0)<<24>>24==37){n=h+4|0;if((n|0)==(i|0)){u=60;break a}l=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{h=h+8|0;if((h|0)==(i|0)){u=60;break a}m=l;j=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0;h=n;break}default:{m=0;j=l}}n=c[(c[a>>2]|0)+36>>2]|0;c[s>>2]=o;c[t>>2]=k;c[p>>2]=c[s>>2];c[q>>2]=c[t>>2];o=Qb[n&15](a,p,q,e,f,g,j,m)|0;c[b>>2]=o;h=h+8|0}else{if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0)){l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;o=Ib[c[(c[r>>2]|0)+28>>2]&63](r,k)|0;if((o|0)!=(Ib[c[(c[r>>2]|0)+28>>2]&63](r,c[h>>2]|0)|0)){c[f>>2]=4;break}k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}h=h+4|0;break}do{h=h+4|0;if((h|0)==(i|0)){h=i;break}}while(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0);while(1){if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else break b;else{c[d>>2]=0;u=40;break}}else u=40;while(0);if((u|0)==40){u=0;if(l)break b;else n=0}l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,k)|0))break b;k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}}}while(0);k=c[f>>2]|0}if((u|0)==60)c[f>>2]=4;if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}h=c[d>>2]|0;do if(h){k=c[h+12>>2]|0;if((k|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[k>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(l)break;else{u=75;break}else{c[d>>2]=0;u=73;break}}else u=73;while(0);if((u|0)==73?l:0)u=75;if((u|0)==75)c[f>>2]=c[f>>2]|2;zb=v;return j|0}function QI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function RI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function SI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function TI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function UI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function VI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function WI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(!(Jb[c[(c[f>>2]|0)+12>>2]&63](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break;else{i=40;break}else{c[d>>2]=0;i=38;break}}else i=38;while(0);if((i|0)==38?g:0)i=40;if((i|0)==40)c[e>>2]=c[e>>2]|2;return}function XI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+8+3>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+20+3>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(gH(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function YI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function ZI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function _I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function $I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function aJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if((Jb[c[(c[f>>2]|0)+52>>2]&63](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function bJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[h>>2]|0)|0;if(JE(g,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(i){n=17;break}else{n=16;break}else{c[b>>2]=0;n=14;break}}else n=14;while(0);if((n|0)==14)if(i)n=16;else{h=0;n=17}a:do if((n|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((n|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[i>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Jb[c[(c[e>>2]|0)+52>>2]&63](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0))Gb[c[(c[i>>2]|0)+40>>2]&127](i)|0;else{c[j>>2]=k+4;jE(c[k>>2]|0)|0}l=h;k=h;while(1){g=g+-48|0;m=f+-1|0;h=c[a>>2]|0;do if(h){i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[i>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;h=1;l=0;k=0}else h=0}else{h=1;k=0}i=c[a>>2]|0;if(!((f|0)>1&(j^h)))break;h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,h)|0))break a;g=(g*10|0)+((Jb[c[(c[e>>2]|0)+52>>2]&63](e,h,0)|0)<<24>>24)|0;h=c[a>>2]|0;i=h+12|0;j=c[i>>2]|0;if((j|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[i>>2]=j+4;jE(c[j>>2]|0)|0}f=m}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(l){h=c[l+12>>2]|0;if((h|0)==(c[l+16>>2]|0))h=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else h=jE(c[h>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(i)break a;else break;else{c[b>>2]=0;n=61;break}}else n=61;while(0);if((n|0)==61?!i:0)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function cJ(a){a=a|0;hJ(a+8|0);CF(a);return}function dJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function eJ(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=zb;zb=zb+112|0;e=j;f=j+100|0;c[f>>2]=e+100;fJ(b+8|0,e,f,g,h,i);i=c[f>>2]|0;h=e;e=c[d>>2]|0;while(1){if((h|0)==(i|0))break;f=a[h>>0]|0;if(!e)e=0;else{b=e+24|0;g=c[b>>2]|0;if((g|0)==(c[e+28>>2]|0)){d=c[(c[e>>2]|0)+52>>2]|0;f=cg(f)|0;f=Ib[d&63](e,f)|0}else{c[b>>2]=g+1;a[g>>0]=f;f=cg(f)|0}d=_f(f,Wf()|0)|0;e=d?0:e}h=h+1|0}zb=j;return e|0}function fJ(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;i=l;a[i>>0]=37;j=i+1|0;a[j>>0]=g;k=i+2|0;a[k>>0]=h;a[i+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}k=gJ(d,c[e>>2]|0)|0;k=d+(Sa(d|0,k|0,i|0,f|0,c[b>>2]|0)|0)|0;c[e>>2]=k;zb=l;return}function gJ(a,b){a=a|0;b=b|0;return b-a|0}function hJ(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(_F()|0))Vy(c[a>>2]|0);return}function iJ(a){a=a|0;hJ(a+8|0);CF(a);return}function jJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function kJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=zb;zb=zb+416|0;d=i;e=i+400|0;c[e>>2]=d+400;lJ(a+8|0,d,e,f,g,h);h=c[e>>2]|0;g=d;d=c[b>>2]|0;while(1){if((g|0)==(h|0))break;e=c[g>>2]|0;if(!d)d=0;else{a=d+24|0;f=c[a>>2]|0;if((f|0)==(c[d+28>>2]|0)){b=c[(c[d>>2]|0)+52>>2]|0;e=jE(e)|0;e=Ib[b&63](d,e)|0}else{c[a>>2]=f+4;c[f>>2]=e;e=jE(e)|0}b=JE(e,iE()|0)|0;d=b?0:d}g=g+4|0}zb=i;return d|0}function lJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+128|0;k=h;l=h+116|0;i=h+104|0;j=h+112|0;c[l>>2]=k+100;fJ(a,k,l,e,f,g);e=i;c[e>>2]=0;c[e+4>>2]=0;c[j>>2]=k;e=mJ(b,c[d>>2]|0)|0;a=ez(c[a>>2]|0)|0;e=Sz(b,j,e,i)|0;if(a|0)ez(a)|0;if((e|0)==-1)nJ(0);else{c[d>>2]=b+(e<<2);zb=h;return}}function mJ(a,b){a=a|0;b=b|0;return b-a>>2|0}function nJ(a){a=a|0;ua()}function oJ(a){a=a|0;CF(a);return}function pJ(a){a=a|0;CF(a);SA(a);return}function qJ(a){a=a|0;return 127}function rJ(a){a=a|0;return 127}function sJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function tJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function uJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function vJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function wJ(a){a=a|0;return 0}function xJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function yJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function zJ(a){a=a|0;CF(a);return}function AJ(a){a=a|0;CF(a);SA(a);return}function BJ(a){a=a|0;return 127}function CJ(a){a=a|0;return 127}function DJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function EJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function FJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function GJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function HJ(a){a=a|0;return 0}function IJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function JJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function KJ(a){a=a|0;CF(a);return}function LJ(a){a=a|0;CF(a);SA(a);return}function MJ(a){a=a|0;return 2147483647}function NJ(a){a=a|0;return 2147483647}function OJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function PJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function SJ(a){a=a|0;return 0}function TJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function UJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function VJ(a){a=a|0;CF(a);return}function WJ(a){a=a|0;CF(a);SA(a);return}function XJ(a){a=a|0;return 2147483647}function YJ(a){a=a|0;return 2147483647}function ZJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function _J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function $J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function aK(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function bK(a){a=a|0;return 0}function cK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function dK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function eK(a){a=a|0;CF(a);return}function fK(a){a=a|0;CF(a);SA(a);return}function gK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+256|0;n=v+240|0;q=v+216|0;m=v+112|0;u=v+232|0;p=v+228|0;s=v+224|0;j=v+250|0;w=v+220|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56736)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(jK(d,n,f,s,l,h,j,b,u,p,m+100|0)|0){Kb[c[(c[b>>2]|0)+32>>2]&15](b,50465,50475,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>98){b=FO(b+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+10|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=a[j>>0]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((a[b>>0]|0)==f<<24>>24)break;b=b+1|0}a[g>>0]=a[50465+(b-m)>>0]|0;j=j+1|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function hK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+128|0;j=s+120|0;b=s;r=s+112|0;m=s+108|0;p=s+100|0;k=s+124|0;n=s+104|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56736)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(jK(d,j,f,p,g,h,k,l,r,m,b+100|0)|0){b=i+11|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;a[j>>0]=0;bg(f,j);c[i+4>>2]=0}else{a[j>>0]=0;bg(i,j);a[b>>0]=0}if(a[k>>0]|0)sO(i,Ib[c[(c[l>>2]|0)+28>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+28>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-1|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((a[b>>0]|0)!=k<<24>>24)break;b=b+1|0}kK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[g>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function iK(a){a=a|0;return}function jK(e,f,g,h,i,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=zb;zb=zb+512|0;I=Y+488|0;O=Y;X=Y+480|0;Q=Y+472|0;J=Y+468|0;K=Y+496|0;L=Y+493|0;M=Y+492|0;S=Y+456|0;T=Y+444|0;U=Y+432|0;V=Y+420|0;W=Y+408|0;N=Y+404|0;R=Y+400|0;c[I>>2]=o;c[X>>2]=O;c[X+4>>2]=145;c[Q>>2]=O;c[J>>2]=O+400;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[S+(o<<2)>>2]=0;o=o+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[T+(o<<2)>>2]=0;o=o+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[U+(o<<2)>>2]=0;o=o+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[V+(o<<2)>>2]=0;o=o+1|0}c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[W+(o<<2)>>2]=0;o=o+1|0}mK(g,h,K,L,M,S,T,U,V,N);c[n>>2]=c[m>>2];B=l+8|0;C=U+11|0;D=U+4|0;E=V+11|0;F=V+4|0;G=S+11|0;H=S+4|0;v=(i&512|0)!=0;w=T+11|0;x=K+3|0;y=T+4|0;z=W+11|0;A=W+4|0;O=0;u=0;a:while(1){if(u>>>0>=4){P=243;break}o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);g=c[f>>2]|0;do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h){t=g;break}else{P=243;break a}else{c[f>>2]=0;P=31;break}}else P=31;while(0);if((P|0)==31){P=0;if(h){P=243;break}else t=0}b:do switch(a[K+u>>0]|0){case 1:{if((u|0)==3)o=O;else{o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=45;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){P=45;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);P=47}break}case 0:{if((u|0)==3)o=O;else P=47;break}case 3:{o=a[C>>0]|0;o=o<<24>>24<0?c[D>>2]|0:o&255;l=a[E>>0]|0;l=l<<24>>24<0?c[F>>2]|0:l&255;if((o|0)==(0-l|0))o=O;else{i=(o|0)==0;o=c[e>>2]|0;g=c[o+12>>2]|0;h=(g|0)==(c[o+16>>2]|0);if(i|(l|0)==0){if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;o=o&255;if(i){if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=o<<24>>24){o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O;break b}if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)!=o<<24>>24){a[k>>0]=1;o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[e>>2]|0;h=g+12|0;l=c[h>>2]|0;i=(l|0)==(c[g+16>>2]|0);if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)==(o&255)<<24>>24){if(i)Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=l+1;cg(a[l>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(i)o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[l>>0]|0)|0;if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=(o&255)<<24>>24){P=105;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O}break}case 2:{if(u>>>0<2|(O|0)!=0){o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;l=h?g:T;i=l;if(!u)h=i;else{s=i;P=110}}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){o=0;break b}o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;s=h?g:T;l=s;P=110}c:do if((P|0)==110){P=0;if((d[K+(u+-1)>>0]|0)<2){i=l+(h?c[y>>2]|0:o&255)|0;h=s;while(1){p=h;if((i|0)==(p|0))break;q=a[p>>0]|0;if(q<<24>>24<=-1)break;if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192))break;h=p+1|0}q=h-s|0;p=a[z>>0]|0;r=p<<24>>24<0;i=c[A>>2]|0;p=p&255;if(q>>>0<=(r?i:p)>>>0){Z=(c[W>>2]|0)+i|0;i=W+p|0;p=r?Z:i;i=r?Z+(0-q)|0:i+(0-q)|0;while(1){if((i|0)==(p|0))break c;if((a[i>>0]|0)!=(a[l>>0]|0)){h=s;break c}l=l+1|0;i=i+1|0}}else h=s}else h=s}while(0);i=h;h=t;d:while(1){Z=o<<24>>24<0;if((i|0)==((Z?g:T)+(Z?c[y>>2]|0:o&255)|0))break;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else break d;else{c[f>>2]=0;P=136;break}}else P=136;while(0);if((P|0)==136){P=0;if(g)break;else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}i=i+1|0;o=a[w>>0]|0;g=c[T>>2]|0;h=l}if(v?(Z=a[w>>0]|0,t=Z<<24>>24<0,(i|0)!=((t?c[T>>2]|0:T)+(t?c[y>>2]|0:Z&255)|0)):0){P=148;break a}else o=O;break}case 4:{i=0;l=t;o=t;e:while(1){g=c[e>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(l){g=c[l+12>>2]|0;if((g|0)==(c[l+16>>2]|0))g=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(h){p=l;break}else{l=o;break e}else{c[f>>2]=0;o=0;P=162;break}}else P=162;while(0);if((P|0)==162){P=0;if(h){l=o;break}else p=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;h=g&255;if(h<<24>>24>-1?(b[(c[B>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0:0){g=c[n>>2]|0;if((g|0)==(c[I>>2]|0)){nK(m,n,I);g=c[n>>2]|0}c[n>>2]=g+1;a[g>>0]=h;g=i+1|0}else{Z=a[G>>0]|0;if(!((a[M>>0]|0)==h<<24>>24&(i|0?((Z<<24>>24<0?c[H>>2]|0:Z&255)|0)!=0:0))){l=o;break}g=c[Q>>2]|0;if((g|0)==(c[J>>2]|0)){oK(X,Q,J);g=c[Q>>2]|0}c[Q>>2]=g+4;c[g>>2]=i;g=0}h=c[e>>2]|0;l=h+12|0;i=c[l>>2]|0;if((i|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[l>>2]=i+1;cg(a[i>>0]|0)|0}i=g;l=p}o=c[Q>>2]|0;if(i|0?(c[X>>2]|0)!=(o|0):0){if((o|0)==(c[J>>2]|0)){oK(X,Q,J);o=c[Q>>2]|0}c[Q>>2]=o+4;c[o>>2]=i}f:do if((c[N>>2]|0)>0){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(l){o=c[l+12>>2]|0;if((o|0)==(c[l+16>>2]|0))o=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g)break;else{P=204;break a}else{c[f>>2]=0;P=198;break}}else P=198;while(0);if((P|0)==198){P=0;if(g){P=204;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[L>>0]|0)!=(o&255)<<24>>24){P=204;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l;while(1){if((c[N>>2]|0)<=0)break f;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{P=230;break a}else{c[f>>2]=0;P=223;break}}else P=223;while(0);if((P|0)==223){P=0;if(g){P=230;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=230;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&2048)){P=230;break a}if((c[n>>2]|0)==(c[I>>2]|0))nK(m,n,I);o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[n>>2]|0;c[n>>2]=g+1;a[g>>0]=o;c[N>>2]=(c[N>>2]|0)+-1;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l}}while(0);if((c[n>>2]|0)==(c[m>>2]|0)){P=241;break a}else o=O;break}default:o=O}while(0);g:do if((P|0)==47){P=0;h=t;while(1){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{o=O;break g}else{c[f>>2]=0;P=61;break}}else P=61;while(0);if((P|0)==61){P=0;if(g){o=O;break g}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){o=O;break g}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=O;break g}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);h=l}}while(0);O=o;u=u+1|0}h:do if((P|0)==45){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==105){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==148){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==204){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==230){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==241){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==243){i:do if(O|0){i=O+11|0;p=O+4|0;l=1;j:while(1){o=a[i>>0]|0;if(o<<24>>24<0)o=c[p>>2]|0;else o=o&255;if(l>>>0>=o>>>0)break i;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);o=c[f>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h)break;else break j;else{c[f>>2]=0;P=262;break}}else P=262;while(0);if((P|0)==262?(P=0,h):0)break;o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)<0)g=c[O>>2]|0;else g=O;if((a[g+l>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}l=l+1|0}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);g=c[X>>2]|0;o=c[Q>>2]|0;if((g|0)!=(o|0)){c[R>>2]=0;kG(S,g,o,R);if(!(c[R>>2]|0)){g=1;break}else{c[j>>2]=c[j>>2]|4;g=0;break}}else g=1}while(0);jO(W);jO(V);jO(U);jO(T);jO(S);o=c[X>>2]|0;c[X>>2]=0;if(o|0)Sb[c[X+4>>2]&255](o);zb=Y;return g|0}function kK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;j=d;m=o;n=b+11|0;h=a[n>>0]|0;f=h<<24>>24<0;if(f){l=c[b+4>>2]|0;i=(c[b+8>>2]&2147483647)+-1|0}else{l=h&255;i=10}k=e-j|0;do if(k|0){if(f){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=h&255}if(lK(d,g,g+f|0)|0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;ag(m,d,e);n=a[m+11>>0]|0;l=n<<24>>24<0;rO(b,l?c[m>>2]|0:m,l?c[m+4>>2]|0:n&255)|0;jO(m);break}if((i-l|0)>>>0>>0)qO(b,i,l+k-i|0,l,l,0,0);if((a[n>>0]|0)<0)h=c[b>>2]|0;else h=b;g=e+(l-j)|0;f=h+l|0;while(1){if((d|0)==(e|0))break;bg(f,d);f=f+1|0;d=d+1|0}a[m>>0]=0;bg(h+g|0,m);d=l+k|0;if((a[n>>0]|0)<0){c[b+4>>2]=d;break}else{a[n>>0]=d;break}}while(0);zb=o;return b|0}function lK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function mK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;o=zb;zb=zb+16|0;m=o+12|0;n=o;if(b){d=XF(d,56968)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}else{d=XF(d,56960)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}c[l>>2]=b;zb=o;return}function nK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?1:g):-1;h=(c[b>>2]|0)-h|0;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+h;c[d>>2]=(c[a>>2]|0)+g;return}function oK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function pK(a){a=a|0;CF(a);return}function qK(a){a=a|0;CF(a);SA(a);return}function rK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+592|0;n=v+512|0;q=v+552|0;m=v+112|0;u=v+568|0;p=v+564|0;s=v+560|0;j=v+576|0;w=v+556|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56768)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(tK(d,n,f,s,l,h,j,b,u,p,m+400|0)|0){Kb[c[(c[b>>2]|0)+48>>2]&15](b,50575,50585,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>392){b=FO((b>>>2)+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+40|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=c[j>>2]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((c[b>>2]|0)==(f|0))break;b=b+4|0}a[g>>0]=a[50575+(b-m>>2)>>0]|0;j=j+4|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function sK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+432|0;j=s+424|0;b=s;r=s+416|0;m=s+408|0;p=s+400|0;k=s+428|0;n=s+404|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56768)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(tK(d,j,f,p,g,h,k,l,r,m,b+400|0)|0){b=i+8+3|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;c[j>>2]=0;JF(f,j);c[i+4>>2]=0}else{c[j>>2]=0;JF(i,j);a[b>>0]=0}if(a[k>>0]|0)DO(i,Ib[c[(c[l>>2]|0)+44>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+44>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-4|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((c[b>>2]|0)!=(k|0))break;b=b+4|0}uK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[g>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function tK(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;X=zb;zb=zb+512|0;H=X+496|0;N=X;W=X+488|0;P=X+480|0;I=X+476|0;J=X+500|0;K=X+472|0;L=X+468|0;R=X+456|0;S=X+444|0;T=X+432|0;U=X+420|0;V=X+408|0;M=X+404|0;Q=X+400|0;c[H>>2]=n;c[W>>2]=N;c[W+4>>2]=145;c[P>>2]=N;c[I>>2]=N+400;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[R+(n<<2)>>2]=0;n=n+1|0}c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[S+(n<<2)>>2]=0;n=n+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[T+(n<<2)>>2]=0;n=n+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[U+(n<<2)>>2]=0;n=n+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[V+(n<<2)>>2]=0;n=n+1|0}xK(f,g,J,K,L,R,S,T,U,M);c[m>>2]=c[l>>2];B=T+8+3|0;C=T+4|0;D=U+8+3|0;E=U+4|0;F=R+11|0;G=R+4|0;v=(h&512|0)!=0;w=S+8+3|0;x=J+3|0;y=S+4|0;z=V+8+3|0;A=V+4|0;N=0;u=0;a:while(1){if(u>>>0>=4){O=239;break}n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g){t=f;break}else{O=239;break a}else{c[e>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(g){O=239;break}else t=0}b:do switch(a[J+u>>0]|0){case 1:{if((u|0)==3)n=N;else{n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){O=44;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);O=46}break}case 0:{if((u|0)==3)n=N;else O=46;break}case 3:{n=a[B>>0]|0;n=n<<24>>24<0?c[C>>2]|0:n&255;h=a[D>>0]|0;h=h<<24>>24<0?c[E>>2]|0:h&255;if((n|0)==(0-h|0))n=N;else{o=(n|0)==0;n=c[b>>2]|0;f=c[n+12>>2]|0;g=(f|0)==(c[n+16>>2]|0);if(o|(h|0)==0){if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(o){if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){a[j>>0]=1;n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;o=(h|0)==(c[f+16>>2]|0);if((n|0)==(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){if(o)Gb[c[(c[f>>2]|0)+40>>2]&127](f)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[h>>2]|0)|0;if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){O=103;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(u>>>0<2|(N|0)!=0){f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;if(u)O=108}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){n=0;break b}f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;O=108}c:do if((O|0)==108){O=0;if((d[J+(u+-1)>>0]|0)<2){h=f;while(1){s=h<<24>>24<0;f=n;if(((s?g:S)+((s?c[y>>2]|0:h&255)<<2)|0)==(f|0)){f=h;break}if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,c[f>>2]|0)|0)){O=112;break}n=f+4|0;h=a[w>>0]|0;g=c[S>>2]|0}if((O|0)==112){O=0;f=a[w>>0]|0;g=c[S>>2]|0}o=f<<24>>24<0?g:S;s=o;q=n-s>>2;p=a[z>>0]|0;r=p<<24>>24<0;h=c[A>>2]|0;p=p&255;if(q>>>0>(r?h:p)>>>0)n=s;else{Y=(c[V>>2]|0)+(h<<2)|0;h=V+(p<<2)|0;p=r?Y:h;h=(r?Y:h)+(0-q<<2)|0;while(1){if((h|0)==(p|0))break c;if((c[h>>2]|0)!=(c[o>>2]|0)){n=s;break c}o=o+4|0;h=h+4|0}}}}while(0);o=n;h=t;d:while(1){Y=f<<24>>24<0;if((o|0)==((Y?g:S)+((Y?c[y>>2]|0:f&255)<<2)|0))break;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else break d;else{c[e>>2]=0;O=134;break}}else O=134;while(0);if((O|0)==134){O=0;if(f)break;else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[o>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}o=o+4|0;f=a[w>>0]|0;g=c[S>>2]|0}if(v?(Y=a[w>>0]|0,t=Y<<24>>24<0,(o|0)!=((t?c[S>>2]|0:S)+((t?c[y>>2]|0:Y&255)<<2)|0)):0){O=146;break a}else n=N;break}case 4:{o=0;h=t;n=t;e:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=jE(c[g>>2]|0)|0;if(JE(f,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))f=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(g){p=h;break}else{h=n;break e}else{c[e>>2]=0;n=0;O=160;break}}else O=160;while(0);if((O|0)==160){O=0;if(g){h=n;break}else p=0}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else g=jE(c[g>>2]|0)|0;if(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,g)|0){f=c[m>>2]|0;if((f|0)==(c[H>>2]|0)){yK(l,m,H);f=c[m>>2]|0}c[m>>2]=f+4;c[f>>2]=g;f=o+1|0}else{Y=a[F>>0]|0;if(!((g|0)==(c[L>>2]|0)&(o|0?((Y<<24>>24<0?c[G>>2]|0:Y&255)|0)!=0:0))){h=n;break}f=c[P>>2]|0;if((f|0)==(c[I>>2]|0)){oK(W,P,I);f=c[P>>2]|0}c[P>>2]=f+4;c[f>>2]=o;f=0}g=c[b>>2]|0;h=g+12|0;o=c[h>>2]|0;if((o|0)==(c[g+16>>2]|0))Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=o+4;jE(c[o>>2]|0)|0}o=f;h=p}n=c[P>>2]|0;if(o|0?(c[W>>2]|0)!=(n|0):0){if((n|0)==(c[I>>2]|0)){oK(W,P,I);n=c[P>>2]|0}c[P>>2]=n+4;c[n>>2]=o}f:do if((c[M>>2]|0)>0){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else{O=201;break a}else{c[e>>2]=0;O=195;break}}else O=195;while(0);if((O|0)==195){O=0;if(f){O=201;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[K>>2]|0)){O=201;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h;while(1){if((c[M>>2]|0)<=0)break f;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{O=226;break a}else{c[e>>2]=0;O=220;break}}else O=220;while(0);if((O|0)==220){O=0;if(f){O=226;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,n)|0)){O=226;break a}if((c[m>>2]|0)==(c[H>>2]|0))yK(l,m,H);n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[m>>2]|0;c[m>>2]=f+4;c[f>>2]=n;c[M>>2]=(c[M>>2]|0)+-1;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h}}while(0);if((c[m>>2]|0)==(c[l>>2]|0)){O=237;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==46){O=0;g=t;while(1){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{n=N;break g}else{c[e>>2]=0;O=60;break}}else O=60;while(0);if((O|0)==60){O=0;if(f){n=N;break g}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){n=N;break g}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);g=h}}while(0);N=n;u=u+1|0}h:do if((O|0)==44){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==103){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==146){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==201){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==226){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==237){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==239){i:do if(N|0){o=N+8+3|0;p=N+4|0;h=1;j:while(1){n=a[o>>0]|0;if(n<<24>>24<0)n=c[p>>2]|0;else n=n&255;if(h>>>0>=n>>>0)break i;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);n=c[e>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g)break;else break j;else{c[e>>2]=0;O=258;break}}else O=258;while(0);if((O|0)==258?(O=0,g):0)break;n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((a[o>>0]|0)<0)f=c[N>>2]|0;else f=N;if((n|0)!=(c[f+(h<<2)>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}h=h+1|0}c[i>>2]=c[i>>2]|4;f=0;break h}while(0);f=c[W>>2]|0;n=c[P>>2]|0;if((f|0)!=(n|0)){c[Q>>2]=0;kG(R,f,n,Q);if(!(c[Q>>2]|0)){f=1;break}else{c[i>>2]=c[i>>2]|4;f=0;break}}else f=1}while(0);wO(V);wO(U);wO(T);wO(S);jO(R);n=c[W>>2]|0;c[W>>2]=0;if(n|0)Sb[c[W+4>>2]&255](n);zb=X;return f|0}function uK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;k=n;f=b+8|0;m=f+3|0;i=a[m>>0]|0;g=i<<24>>24<0;if(g){l=c[b+4>>2]|0;h=(c[f>>2]&2147483647)+-1|0}else{l=i&255;h=1}f=e-d|0;j=f>>2;do if(f|0){if(g){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=i&255}if(vK(d,g,g+(f<<2)|0)|0){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;wK(k,d,e);m=a[k+8+3>>0]|0;l=m<<24>>24<0;CO(b,l?c[k>>2]|0:k,l?c[k+4>>2]|0:m&255)|0;wO(k);break}if((h-l|0)>>>0>>0)BO(b,h,l+j-h|0,l,l,0,0);if((a[m>>0]|0)<0)f=c[b>>2]|0;else f=b;f=f+(l<<2)|0;while(1){if((d|0)==(e|0))break;JF(f,d);f=f+4|0;d=d+4|0}c[k>>2]=0;JF(f,k);d=l+j|0;if((a[m>>0]|0)<0){c[b+4>>2]=d;break}else{a[m>>0]=d;break}}while(0);zb=n;return b|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function wK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function xK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(d,56984)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(d,56976)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function yK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function zK(a){a=a|0;CF(a);return}function AK(a){a=a|0;CF(a);SA(a);return}function BK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+416|0;q=E+336|0;k=E+328|0;b=E+224|0;l=E+400|0;j=E+112|0;D=E+396|0;r=E+408|0;s=E+405|0;t=E+404|0;A=E+384|0;B=E+372|0;C=E+360|0;o=E+356|0;p=E;u=E+352|0;v=E+344|0;w=E+348|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56736)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+32>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}DK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}EK(y,u,v,c[f+4>>2]|0,x,x+z|0,n,m,r,a[s>>0]|0,a[t>>0]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=$f(q,y,d,b,f,h)|0;if(F|0)GO(F);jO(C);jO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function CK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+176|0;p=C+156|0;B=C+152|0;u=C+164|0;v=C+161|0;w=C+160|0;y=C+140|0;z=C+128|0;A=C+116|0;l=C+112|0;n=C;q=C+108|0;r=C+104|0;s=C+100|0;IE(B,f);t=XF(B,56736)|0;i=h+11|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=a[(b?c[h>>2]|0:h)>>0]|0;o=o<<24>>24==(Ib[c[(c[t>>2]|0)+28>>2]&63](t,45)|0)<<24>>24};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}DK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;EK(x,q,r,c[f+4>>2]|0,h,h+k|0,t,o,u,a[v>>0]|0,a[w>>0]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=$f(p,x,h,b,f,g)|0;if(D|0)GO(D);jO(A);jO(z);jO(y);YF(B);zb=C;return b|0}function DK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56968)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56960)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function EK(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c[f>>2]=d;y=q+11|0;G=q+4|0;z=p+11|0;A=p+4|0;B=(g&512|0)==0;C=j+8|0;D=(r|0)>0;E=o+11|0;F=o+4|0;x=0;while(1){if((x|0)==4)break;a:do switch(a[l+x>>0]|0){case 0:{c[e>>2]=c[f>>2];break}case 1:{c[e>>2]=c[f>>2];v=Ib[c[(c[j>>2]|0)+28>>2]&63](j,32)|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v;break}case 3:{w=a[y>>0]|0;s=w<<24>>24<0;if((s?c[G>>2]|0:w&255)|0){v=a[(s?c[q>>2]|0:q)>>0]|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v}break}case 2:{t=a[z>>0]|0;s=t<<24>>24<0;t=s?c[A>>2]|0:t&255;if(!(B|(t|0)==0)){w=s?c[p>>2]|0:p;u=w+t|0;s=c[f>>2]|0;t=w;while(1){if((t|0)==(u|0))break;a[s>>0]=a[t>>0]|0;s=s+1|0;t=t+1|0}c[f>>2]=s}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;u=h;while(1){if(u>>>0>=i>>>0)break;s=a[u>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[C>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(D){v=r;while(1){s=(v|0)>0;if(!(u>>>0>h>>>0&s))break;w=u+-1|0;H=a[w>>0]|0;s=c[f>>2]|0;c[f>>2]=s+1;a[s>>0]=H;v=v+-1|0;u=w}if(s)w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;else w=0;s=v;while(1){v=c[f>>2]|0;c[f>>2]=v+1;if((s|0)<=0)break;a[v>>0]=w;s=s+-1|0}a[v>>0]=m}b:do if((u|0)==(h|0)){w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=w}else{H=a[E>>0]|0;s=H<<24>>24<0;if(!((s?c[F>>2]|0:H&255)|0))s=-1;else s=a[(s?c[o>>2]|0:o)>>0]|0;v=0;w=0;while(1){if((u|0)==(h|0))break b;if((w|0)==(s|0)){H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=n;v=v+1|0;H=a[E>>0]|0;s=H<<24>>24<0;if(v>>>0<(s?c[F>>2]|0:H&255)>>>0){s=a[(s?c[o>>2]|0:o)+v>>0]|0;s=s<<24>>24==127?-1:s<<24>>24;w=0}else{s=w;w=0}}H=u+-1|0;J=a[H>>0]|0;I=c[f>>2]|0;c[f>>2]=I+1;a[I>>0]=J;w=w+1|0;u=H}}while(0);s=c[f>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=a[t>>0]|0;a[t>>0]=a[s>>0]|0;a[s>>0]=J;t=t+1|0}break}default:{}}while(0);x=x+1|0}h=a[y>>0]|0;s=h<<24>>24<0;h=s?c[G>>2]|0:h&255;if(h>>>0>1){J=s?c[q>>2]|0:q;t=J+h|0;s=c[f>>2]|0;h=J;while(1){h=h+1|0;if((h|0)==(t|0))break;a[s>>0]=a[h>>0]|0;s=s+1|0}c[f>>2]=s}switch((g&176)<<24>>24){case 32:{c[e>>2]=c[f>>2];break}case 16:break;default:c[e>>2]=d}return}function FK(a){a=a|0;CF(a);return}function GK(a){a=a|0;CF(a);SA(a);return}function HK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+992|0;q=E+912|0;k=E+904|0;b=E+800|0;l=E+984|0;j=E+400|0;D=E+980|0;r=E+988|0;s=E+976|0;t=E+972|0;A=E+960|0;B=E+948|0;C=E+936|0;o=E+932|0;p=E;u=E+928|0;v=E+920|0;w=E+924|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b<<2)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56768)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+48>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}JK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}KK(y,u,v,c[f+4>>2]|0,x,x+(z<<2)|0,n,m,r,c[s>>2]|0,c[t>>2]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=IH(q,y,d,b,f,h)|0;if(F|0)GO(F);wO(C);wO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function IK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+480|0;p=C+464|0;B=C+460|0;u=C+468|0;v=C+456|0;w=C+452|0;y=C+440|0;z=C+428|0;A=C+416|0;l=C+412|0;n=C;q=C+408|0;r=C+404|0;s=C+400|0;IE(B,f);t=XF(B,56768)|0;i=h+8+3|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=c[(b?c[h>>2]|0:h)>>2]|0;o=(o|0)==(Ib[c[(c[t>>2]|0)+44>>2]&63](t,45)|0)};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}JK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;KK(x,q,r,c[f+4>>2]|0,h,h+(k<<2)|0,t,o,u,c[v>>2]|0,c[w>>2]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=IH(p,x,h,b,f,g)|0;if(D|0)GO(D);wO(A);wO(z);jO(y);YF(B);zb=C;return b|0}function JK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56984)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56976)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function KK(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[e>>2]=b;z=p+8+3|0;G=p+4|0;A=o+8+3|0;B=o+4|0;C=(f&512|0)==0;D=(q|0)>0;E=n+11|0;F=n+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(a[k+y>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w;break}case 3:{x=a[z>>0]|0;r=x<<24>>24<0;if((r?c[G>>2]|0:x&255)|0){w=c[(r?c[p>>2]|0:p)>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w}break}case 2:{v=a[A>>0]|0;r=v<<24>>24<0;v=r?c[B>>2]|0:v&255;if(!(C|(v|0)==0)){u=r?c[o>>2]|0:o;s=u+(v<<2)|0;t=c[e>>2]|0;r=t;while(1){if((u|0)==(s|0))break;c[r>>2]=c[u>>2];r=r+4|0;u=u+4|0}c[e>>2]=t+(v<<2)}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;r=g;while(1){if(r>>>0>=h>>>0)break;if(!(Jb[c[(c[i>>2]|0)+12>>2]&63](i,2048,c[r>>2]|0)|0))break;r=r+4|0}if(D){u=q;while(1){t=(u|0)>0;if(!(r>>>0>g>>>0&t))break;x=r+-4|0;v=c[x>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=v;u=u+-1|0;r=x}if(t)w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;else w=0;v=c[e>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;c[v>>2]=w;u=u+-1|0;v=t}c[e>>2]=t;c[v>>2]=l;t=r}else t=r;if((t|0)==(g|0)){w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;x=c[e>>2]|0;r=x+4|0;c[e>>2]=r;c[x>>2]=w}else{x=a[E>>0]|0;r=x<<24>>24<0;if(!((r?c[F>>2]|0:x&255)|0))r=-1;else r=a[(r?c[n>>2]|0:n)>>0]|0;u=0;v=0;x=t;while(1){if((x|0)==(g|0))break;t=c[e>>2]|0;if((v|0)==(r|0)){w=t+4|0;c[e>>2]=w;c[t>>2]=m;t=u+1|0;u=a[E>>0]|0;r=u<<24>>24<0;if(t>>>0<(r?c[F>>2]|0:u&255)>>>0){r=a[(r?c[n>>2]|0:n)+t>>0]|0;r=r<<24>>24==127?-1:r<<24>>24;u=t;v=0;t=w}else{r=v;u=t;v=0;t=w}}w=x+-4|0;H=c[w>>2]|0;c[e>>2]=t+4;c[t>>2]=H;v=v+1|0;x=w}r=c[e>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;H=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=H;s=s+4|0}break}default:{}}while(0);y=y+1|0}r=a[z>>0]|0;g=r<<24>>24<0;r=g?c[G>>2]|0:r&255;if(r>>>0>1){s=c[p>>2]|0;u=g?s+4|0:G;r=(g?s:p)+(r<<2)|0;s=c[e>>2]|0;t=r-u|0;g=s;while(1){if((u|0)==(r|0))break;c[g>>2]=c[u>>2];g=g+4|0;u=u+4|0}c[e>>2]=s+(t>>>2<<2)}switch((f&176)<<24>>24){case 32:{c[d>>2]=c[e>>2];break}case 16:break;default:c[d>>2]=b}return}function LK(a){a=a|0;CF(a);return}function MK(a){a=a|0;CF(a);SA(a);return}function NK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function OK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0}k=a[h+11>>0]|0;l=k<<24>>24<0;d=l?c[h>>2]|0:h;h=d+(l?c[h+4>>2]|0:k&255)|0;while(1){if(d>>>0>=h>>>0)break;sO(i,a[d>>0]|0);d=d+1|0}d=(a[i+11>>0]|0)<0?c[i>>2]|0:i;e=Oy((e|0)==-1?-1:e<<1,f,g,d)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break;c[b+(h<<2)>>2]=0;h=h+1|0}h=d+(Qy(e)|0)|0;while(1){if(d>>>0>=h>>>0)break;sO(b,a[d>>0]|0);d=d+1|0}jO(i);zb=j;return}function PK(a,b){a=a|0;b=b|0;return}function QK(a){a=a|0;CF(a);return}function RK(a){a=a|0;CF(a);SA(a);return}function SK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function TK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+176|0;p=t+168|0;q=t;r=t+164|0;s=t+160|0;n=t+128|0;l=t+152|0;o=t+144|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0}c[l+4>>2]=0;c[l>>2]=19072;j=a[h+8+3>>0]|0;k=j<<24>>24<0;d=k?c[h>>2]|0:h;j=d+((k?c[h+4>>2]|0:j&255)<<2)|0;k=q+32|0;h=d;d=0;while(1){if(!((d|0)!=2&h>>>0>>0))break;c[s>>2]=h;i=Qb[c[(c[l>>2]|0)+12>>2]&15](l,p,h,j,s,q,k,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=8;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;sO(n,a[d>>0]|0);d=d+1|0}h=c[s>>2]|0;d=i}if((m|0)==8)nJ(0);CF(l);i=(a[n+11>>0]|0)<0?c[n>>2]|0:n;h=Oy((e|0)==-1?-1:e<<1,f,g,i)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0}c[o+4>>2]=0;c[o>>2]=19120;j=i+(Qy(h)|0)|0;k=j;l=q+128|0;h=i;d=0;while(1){if(!((d|0)!=2&h>>>0>>0)){m=23;break}c[s>>2]=h;i=Qb[c[(c[o>>2]|0)+16>>2]&15](o,p,h,(k-h|0)>32?h+32|0:j,s,q,l,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=19;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;DO(b,c[d>>2]|0);d=d+4|0}h=c[s>>2]|0;d=i}if((m|0)==19)nJ(0);else if((m|0)==23){CF(o);jO(n);zb=t;return}}function UK(a,b){a=a|0;b=b|0;return}function VK(a){a=a|0;CF(a);SA(a);return}function WK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=dL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function XK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=cL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function YK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function ZK(a){a=a|0;return 0}function _K(a){a=a|0;return 0}function $K(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return bL(c,d,e,1114111,0)|0}function aL(a){a=a|0;return 4}function bL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;n=0;a:while(1){if(!(n>>>0>>0&g>>>0>>0))break;k=a[g>>0]|0;m=k&255;do if(k<<24>>24<=-1){if((k&255)<194)break a;if((k&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((k&255)<240){if((o-g|0)<3)break a;i=a[g+1>>0]|0;h=a[g+2>>0]|0;switch(k<<24>>24){case -32:{if((i&-32)<<24>>24!=-96)break a;break}case -19:{if((i&-32)<<24>>24!=-128)break a;break}default:if((i&-64)<<24>>24!=-128)break a}h=h&255;if((h&192|0)!=128)break a;if(((i&63)<<6|m<<12&61440|h&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((k&255)>=245)break a;if((o-g|0)<4)break a;l=a[g+1>>0]|0;h=a[g+2>>0]|0;j=a[g+3>>0]|0;switch(k<<24>>24){case -16:{if((l+112&255)>=48)break a;break}case -12:{if((l&-16)<<24>>24!=-128)break a;break}default:if((l&-64)<<24>>24!=-128)break a}i=h&255;if((i&192|0)!=128)break a;h=j&255;if((h&192|0)!=128)break a;if(((l&63)<<12|m<<18&1835008|i<<6&4032|h&63)>>>0>f>>>0)break a;else g=g+4|0}else{if(m>>>0>f>>>0)break a;g=g+1|0}while(0);n=n+1|0}return g-b|0}function cL(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;if(k&4){b=c[f>>2]|0;g=e;if((((g-b|0)>2?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0)c[f>>2]=b+3}else g=e;a:while(1){p=c[f>>2]|0;if(p>>>0>=e>>>0){b=0;break}q=c[i>>2]|0;if(q>>>0>=h>>>0){b=1;break}n=a[p>>0]|0;b=n&255;do if(n<<24>>24>-1)if(b>>>0>j>>>0){b=2;break a}else k=1;else{if((n&255)<194){b=2;break a}if((n&255)<224){if((g-p|0)<2){b=1;break a}k=d[p+1>>0]|0;if((k&192|0)!=128){b=2;break a}b=k&63|b<<6&1984;if(b>>>0>j>>>0){b=2;break a}else{k=2;break}}if((n&255)<240){if((g-p|0)<3){b=1;break a}l=a[p+1>>0]|0;k=a[p+2>>0]|0;switch(n<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){b=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){b=2;break a}break}default:if((l&-64)<<24>>24!=-128){b=2;break a}}k=k&255;if((k&192|0)!=128){b=2;break a}b=(l&63)<<6|b<<12&61440|k&63;if(b>>>0>j>>>0){b=2;break a}else{k=3;break}}if((n&255)>=245){b=2;break a}if((g-p|0)<4){b=1;break a}o=a[p+1>>0]|0;k=a[p+2>>0]|0;m=a[p+3>>0]|0;switch(n<<24>>24){case -16:{if((o+112&255)>=48){b=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){b=2;break a}break}default:if((o&-64)<<24>>24!=-128){b=2;break a}}l=k&255;if((l&192|0)!=128){b=2;break a}k=m&255;if((k&192|0)!=128){b=2;break a}b=(o&63)<<12|b<<18&1835008|l<<6&4032|k&63;if(b>>>0>j>>>0){b=2;break a}else k=4}while(0);c[q>>2]=b;c[f>>2]=p+k;c[i>>2]=(c[i>>2]|0)+4}return b|0}function dL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;c[e>>2]=b;c[h>>2]=f;l=g;if(j&2)if((l-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;while(1){if(b>>>0>=d>>>0){b=0;break a}f=c[b>>2]|0;if(f>>>0>i>>>0|(f&-2048|0)==55296){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((l-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;g=l-b|0;if(f>>>0<65536){if((g|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((g|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((l-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b}}while(0);return b|0}function eL(a){a=a|0;CF(a);SA(a);return}function fL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function gL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function iL(a){a=a|0;return 1}function jL(a){a=a|0;return 1}function kL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function lL(a){a=a|0;return 1}function mL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+16|0;p=q;n=q+8|0;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}c[j>>2]=h;c[g>>2]=e;m=i;o=b+8|0;a:while(1){if((h|0)==(i|0)|(e|0)==(f|0)){k=36;break}r=d;l=c[r+4>>2]|0;b=p;c[b>>2]=c[r>>2];c[b+4>>2]=l;b=ez(c[o>>2]|0)|0;l=Uz(h,g,k-e>>2,m-h|0,d)|0;if(b|0)ez(b)|0;switch(l|0){case -1:{k=10;break a}case 0:{e=1;k=33;break a}default:{}}h=(c[j>>2]|0)+l|0;c[j>>2]=h;if((h|0)==(i|0)){k=34;break}if((k|0)==(f|0)){k=f;e=c[g>>2]|0}else{h=ez(c[o>>2]|0)|0;e=_x(n,0,d)|0;if(h|0)ez(h)|0;if((e|0)==-1){e=2;k=32;break}if(e>>>0>(m-(c[j>>2]|0)|0)>>>0){e=1;k=32;break}h=n;while(1){if(!e)break;l=a[h>>0]|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r>>0]=l;h=h+1|0;e=e+-1|0}e=(c[g>>2]|0)+4|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}h=c[j>>2]|0}}if((k|0)==10){c[j>>2]=h;while(1){if((e|0)==(c[g>>2]|0))break;r=c[e>>2]|0;k=ez(c[o>>2]|0)|0;h=_x(h,r,p)|0;if(k|0)ez(k)|0;if((h|0)==-1)break;h=(c[j>>2]|0)+h|0;c[j>>2]=h;e=e+4|0}c[g>>2]=e;e=2;k=33}else if((k|0)==32)k=33;else if((k|0)==34){e=c[g>>2]|0;k=36}if((k|0)!=33)if((k|0)==36)e=(e|0)!=(f|0)&1;zb=q;return e|0}function nL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=zb;zb=zb+16|0;o=p;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}c[j>>2]=h;c[g>>2]=e;m=i;n=b+8|0;while(1){if((h|0)==(i|0)|(e|0)==(f|0)){b=33;break}q=d;l=c[q+4>>2]|0;b=o;c[b>>2]=c[q>>2];c[b+4>>2]=l;b=ez(c[n>>2]|0)|0;l=Rz(h,g,k-e|0,m-h>>2,d)|0;if(b|0)ez(b)|0;if((l|0)==-1){b=10;break}h=(c[j>>2]|0)+(l<<2)|0;c[j>>2]=h;if((h|0)==(i|0)){b=30;break}e=c[g>>2]|0;if((k|0)==(f|0))k=f;else{k=ez(c[n>>2]|0)|0;e=Xy(h,e,1,d)|0;if(k|0)ez(k)|0;if(e|0){e=2;b=29;break}c[j>>2]=(c[j>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}h=c[j>>2]|0}}do if((b|0)==10){a:while(1){c[j>>2]=h;if((e|0)==(c[g>>2]|0)){b=19;break}b=ez(c[n>>2]|0)|0;h=Xy(h,e,k-e|0,o)|0;if(b|0)ez(b)|0;switch(h|0){case -1:{b=15;break a}case -2:{b=16;break a}case 0:{h=1;break}default:{}}e=e+h|0;h=(c[j>>2]|0)+4|0}if((b|0)==15){c[g>>2]=e;e=2;b=29;break}else if((b|0)==16){c[g>>2]=e;e=1;b=29;break}else if((b|0)==19){c[g>>2]=e;e=(e|0)!=(f|0)&1;b=29;break}}else if((b|0)==30){e=c[g>>2]|0;b=33}while(0);if((b|0)!=29)if((b|0)==33)e=(e|0)!=(f|0)&1;zb=p;return e|0}function oL(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=zb;zb=zb+16|0;h=i;c[g>>2]=e;e=ez(c[b+8>>2]|0)|0;b=_x(h,0,d)|0;if(e|0)ez(e)|0;a:do if((b+1|0)>>>0>=2){b=b+-1|0;if(b>>>0>(f-(c[g>>2]|0)|0)>>>0)b=1;else while(1){if(!b){b=0;break a}d=a[h>>0]|0;f=c[g>>2]|0;c[g>>2]=f+1;a[f>>0]=d;h=h+1|0;b=b+-1|0}}else b=2;while(0);zb=i;return b|0}function pL(a){a=a|0;var b=0,d=0;a=a+8|0;b=ez(c[a>>2]|0)|0;d=pz(0,0,4)|0;if(b|0)ez(b)|0;if(!d){a=c[a>>2]|0;if(!a)a=1;else{b=ez(a)|0;a=hy()|0;if(b|0)ez(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function qL(a){a=a|0;return 0}function rL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=e;j=a+8|0;h=0;i=0;a:while(1){if((d|0)==(e|0)|h>>>0>=f>>>0)break;g=ez(c[j>>2]|0)|0;a=Qz(d,k-d|0,b)|0;if(g|0)ez(g)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}h=h+1|0;i=a+i|0;d=d+a|0}return i|0}function sL(a){a=a|0;var b=0;a=c[a+8>>2]|0;if(a){b=ez(a)|0;a=hy()|0;if(b)ez(b)|0}else a=1;return a|0}function tL(a){a=a|0;var b=0,d=0;c[a>>2]=19168;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(_F()|0))Vy(c[b>>2]|0);CF(a);return}function uL(a){a=a|0;tL(a);SA(a);return}function vL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=EL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function wL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=DL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function xL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function yL(a){a=a|0;return 0}function zL(a){a=a|0;return 0}function AL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return CL(c,d,e,1114111,0)|0}function BL(a){a=a|0;return 4}function CL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;h=0;a:while(1){if(!(h>>>0>>0&g>>>0>>0))break;l=a[g>>0]|0;n=l&255;if(n>>>0>f>>>0)break;do if(l<<24>>24<=-1){if((l&255)<194)break a;if((l&255)<224){if((o-g|0)<2)break a;i=d[g+1>>0]|0;if((i&192|0)!=128)break a;if((i&63|n<<6&1984)>>>0>f>>>0)break a;else{g=g+2|0;break}}if((l&255)<240){if((o-g|0)<3)break a;j=a[g+1>>0]|0;i=a[g+2>>0]|0;switch(l<<24>>24){case -32:{if((j&-32)<<24>>24!=-96)break a;break}case -19:{if((j&-32)<<24>>24!=-128)break a;break}default:if((j&-64)<<24>>24!=-128)break a}i=i&255;if((i&192|0)!=128)break a;if(((j&63)<<6|n<<12&61440|i&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((l&255)>=245)break a;if((e-h|0)>>>0<2|(o-g|0)<4)break a;m=a[g+1>>0]|0;i=a[g+2>>0]|0;k=a[g+3>>0]|0;switch(l<<24>>24){case -16:{if((m+112&255)>=48)break a;break}case -12:{if((m&-16)<<24>>24!=-128)break a;break}default:if((m&-64)<<24>>24!=-128)break a}j=i&255;if((j&192|0)!=128)break a;i=k&255;if((i&192|0)!=128)break a;if(((m&63)<<12|n<<18&1835008|j<<6&4032|i&63)>>>0>f>>>0)break a;else{h=h+1|0;g=g+4|0}}else g=g+1|0;while(0);h=h+1|0}return g-b|0}function DL(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[g>>2]=e;c[j>>2]=h;if(l&4){e=c[g>>2]|0;h=f;if((((h-e|0)>2?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0)c[g>>2]=e+3}else h=f;s=i;a:while(1){n=c[g>>2]|0;if(n>>>0>=f>>>0){e=0;break}r=c[j>>2]|0;if(r>>>0>=i>>>0){e=1;break}m=a[n>>0]|0;q=m&255;if(q>>>0>k>>>0){e=2;break}do if(m<<24>>24>-1){b[r>>1]=m&255;e=n+1|0}else{if((m&255)<194){e=2;break a}if((m&255)<224){if((h-n|0)<2){e=1;break a}e=d[n+1>>0]|0;if((e&192|0)!=128){e=2;break a}e=e&63|q<<6&1984;if(e>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+2|0;break}if((m&255)<240){if((h-n|0)<3){e=1;break a}l=a[n+1>>0]|0;e=a[n+2>>0]|0;switch(m<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){e=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){e=2;break a}break}default:if((l&-64)<<24>>24!=-128){e=2;break a}}e=e&255;if((e&192|0)!=128){e=2;break a}e=(l&63)<<6|q<<12|e&63;if((e&65535)>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+3|0;break}if((m&255)>=245){e=2;break a}if((h-n|0)<4){e=1;break a}o=a[n+1>>0]|0;e=a[n+2>>0]|0;l=a[n+3>>0]|0;switch(m<<24>>24){case -16:{if((o+112&255)>=48){e=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){e=2;break a}break}default:if((o&-64)<<24>>24!=-128){e=2;break a}}p=e&255;if((p&192|0)!=128){e=2;break a}e=l&255;if((e&192|0)!=128){e=2;break a}if((s-r|0)<4){e=1;break a}n=q&7;l=o&255;m=p<<6;e=e&63;if((l<<12&258048|n<<18|m&4032|e)>>>0>k>>>0){e=2;break a}b[r>>1]=l<<2&60|p>>>4&3|((l>>>4&3|n<<2)<<6)+16320|55296;r=r+2|0;c[j>>2]=r;b[r>>1]=e|m&960|56320;e=(c[g>>2]|0)+4|0}while(0);c[g>>2]=e;c[j>>2]=(c[j>>2]|0)+2}return e|0}function EL(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;while(1){if(d>>>0>=f>>>0){d=0;break a}h=b[d>>1]|0;m=h&65535;if(m>>>0>k>>>0){d=2;break a}do if((h&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=h}else{if((h&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;h=e[d>>1]|0;if((h&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}l=m&960;if(((l<<10)+65536|m<<10&64512|h&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(l>>>6)+1|0;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=d>>>2|240;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>2&15|d<<4&48|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m<<4&48|h>>>6&15|128;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=h&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d}}while(0);return d|0}function FL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=19216;e=a+8|0;f=a+12|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0?(h=b+4|0,g=c[h>>2]|0,c[h>>2]=g+-1,(g|0)==0):0)Sb[c[(c[b>>2]|0)+8>>2]&255](b);d=d+1|0}jO(a+144|0);HL(e);CF(a);return}function GL(a){a=a|0;FL(a);SA(a);return}function HL(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=d;do if(d|0){c[b+4>>2]=e;if((d|0)==(b+16|0)){a[b+128>>0]=0;break}else{Pf(d,(c[b+8>>2]|0)-e|0);break}}while(0);return}function IL(b){b=b|0;var d=0;c[b>>2]=19236;d=c[b+8>>2]|0;if(d|0?a[b+12>>0]|0:0)vB(d);CF(b);return}function JL(a){a=a|0;IL(a);SA(a);return}function KL(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(TL()|0)+((b&255)<<2)|0;b=c[b>>2]&255}return b|0}function LL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=TL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function ML(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(SL()|0)+(b<<24>>24<<2)|0;b=c[b>>2]&255}return b|0}function NL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=SL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function OL(a,b){a=a|0;b=b|0;return b|0}function PL(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((c|0)==(d|0))break;a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}return d|0}function QL(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function RL(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;while(1){if((c|0)==(d|0))break;b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;f=f+1|0;c=c+1|0}return d|0}function SL(){var a=0;a=jy()|0;return c[a>>2]|0}function TL(){var a=0;a=ky()|0;return c[a>>2]|0}function UL(){var a=0;a=gy()|0;return c[a>>2]|0}function VL(a){a=a|0;c[a>>2]=19288;jO(a+12|0);CF(a);return}function WL(a){a=a|0;VL(a);SA(a);return}function XL(b){b=b|0;return a[b+8>>0]|0}function YL(b){b=b|0;return a[b+9>>0]|0}function ZL(a,b){a=a|0;b=b|0;fO(a,b+12|0);return}function _L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51258,Yf(51258)|0);return}function $L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51252,Yf(51252)|0);return}function aM(a){a=a|0;c[a>>2]=19328;jO(a+16|0);CF(a);return}function bM(a){a=a|0;aM(a);SA(a);return}function cM(a){a=a|0;return c[a+8>>2]|0}function dM(a){a=a|0;return c[a+12>>2]|0}function eM(a,b){a=a|0;b=b|0;fO(a,b+16|0);return}function fM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19384,JI(19384)|0);return}function gM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19360,JI(19360)|0);return}function hM(a){a=a|0;CF(a);SA(a);return}function iM(a){a=a|0;CF(a);SA(a);return}function jM(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128){a=(UL()|0)+(d<<1)|0;a=(b[a>>1]&c)<<16>>16!=0}else a=0;return a|0}function kM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;while(1){if((d|0)==(f|0))break;if((c[d>>2]|0)>>>0<128){a=UL()|0;a=e[a+(c[d>>2]<<1)>>1]|0}else a=0;b[g>>1]=a;g=g+2|0;d=d+4|0}return f|0}function lM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0<128?(a=UL()|0,(b[a+(c[e>>2]<<1)>>1]&d)<<16>>16):0)break;e=e+4|0}return e|0}function mM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0>=128)break;a=UL()|0;if(!((b[a+(c[e>>2]<<1)>>1]&d)<<16>>16))break;e=e+4|0}return e|0}function nM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(TL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function oM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=TL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function pM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(SL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=SL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function rM(a,b){a=a|0;b=b|0;return b<<24>>24|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;while(1){if((d|0)==(e|0))break;c[f>>2]=a[d>>0];f=f+4|0;d=d+1|0}return e|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=(e-d|0)>>>2;b=g;g=d;while(1){if((g|0)==(e|0))break;i=c[g>>2]|0;a[b>>0]=i>>>0<128?i&255:f;b=b+1|0;g=g+4|0}return d+(h<<2)|0}function vM(a){a=a|0;CF(a);SA(a);return}function wM(a){a=a|0;CF(a);SA(a);return}function xM(a){a=a|0;CF(a);SA(a);return}function yM(a){a=a|0;c[a>>2]=19644;return}function zM(a){a=a|0;c[a>>2]=19680;return}function AM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+4>>2]=f+-1;c[b>>2]=19236;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(!d){e=UL()|0;c[f>>2]=e}return}function BM(a,b){a=a|0;b=b|0;var d=0;c[a+4>>2]=b+-1;c[a>>2]=19216;b=a+8|0;CM(b,28);d=a+144|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,49197,Yf(49197)|0);c[a+12>>2]=c[b>>2];DM();EM(a,54968);FM();GM(a,54976);HM();IM(a,54984);JM();KM(a,55e3);LM();MM(a,55008);NM();OM(a,55016);PM();QM(a,55032);RM();SM(a,55040);TM();UM(a,55048);VM();WM(a,55072);XM();YM(a,55104);ZM();_M(a,55112);$M();aN(a,55120);bN();cN(a,55128);dN();eN(a,55136);fN();gN(a,55144);hN();iN(a,55152);jN();kN(a,55160);lN();mN(a,55168);nN();oN(a,55176);pN();qN(a,55184);rN();sN(a,55192);tN();uN(a,55200);vN();wN(a,55216);xN();yN(a,55232);zN();AN(a,55248);BN();CN(a,55264);DN();EN(a,55272);return}function CM(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d|0){RN(b,d);IN(b,d)}return}function DM(){c[13743]=0;c[13742]=17072;return}function EM(a,b){a=a|0;b=b|0;FN(a,b,aG(56720)|0);return}function FM(){c[13745]=0;c[13744]=17104;return}function GM(a,b){a=a|0;b=b|0;FN(a,b,aG(56728)|0);return}function HM(){AM(54984,0,0,1);return}function IM(a,b){a=a|0;b=b|0;FN(a,b,aG(56736)|0);return}function JM(){c[13751]=0;c[13750]=19432;return}function KM(a,b){a=a|0;b=b|0;FN(a,b,aG(56768)|0);return}function LM(){c[13753]=0;c[13752]=19500;return}function MM(a,b){a=a|0;b=b|0;FN(a,b,aG(57040)|0);return}function NM(){QN(55016,1);return}function OM(a,b){a=a|0;b=b|0;FN(a,b,aG(57048)|0);return}function PM(){c[13759]=0;c[13758]=19548;return}function QM(a,b){a=a|0;b=b|0;FN(a,b,aG(57056)|0);return}function RM(){c[13761]=0;c[13760]=19596;return}function SM(a,b){a=a|0;b=b|0;FN(a,b,aG(57064)|0);return}function TM(){PN(55048,1);return}function UM(a,b){a=a|0;b=b|0;FN(a,b,aG(56752)|0);return}function VM(){ON(55072,1);return}function WM(a,b){a=a|0;b=b|0;FN(a,b,aG(56776)|0);return}function XM(){c[13777]=0;c[13776]=17136;return}function YM(a,b){a=a|0;b=b|0;FN(a,b,aG(56760)|0);return}function ZM(){c[13779]=0;c[13778]=17200;return}function _M(a,b){a=a|0;b=b|0;FN(a,b,aG(56784)|0);return}function $M(){c[13781]=0;c[13780]=17264;return}function aN(a,b){a=a|0;b=b|0;FN(a,b,aG(56792)|0);return}function bN(){c[13783]=0;c[13782]=17316;return}function cN(a,b){a=a|0;b=b|0;FN(a,b,aG(56800)|0);return}function dN(){c[13785]=0;c[13784]=18672;return}function eN(a,b){a=a|0;b=b|0;FN(a,b,aG(56960)|0);return}function fN(){c[13787]=0;c[13786]=18728;return}function gN(a,b){a=a|0;b=b|0;FN(a,b,aG(56968)|0);return}function hN(){c[13789]=0;c[13788]=18784;return}function iN(a,b){a=a|0;b=b|0;FN(a,b,aG(56976)|0);return}function jN(){c[13791]=0;c[13790]=18840;return}function kN(a,b){a=a|0;b=b|0;FN(a,b,aG(56984)|0);return}function lN(){c[13793]=0;c[13792]=18896;return}function mN(a,b){a=a|0;b=b|0;FN(a,b,aG(56992)|0);return}function nN(){c[13795]=0;c[13794]=18924;return}function oN(a,b){a=a|0;b=b|0;FN(a,b,aG(57e3)|0);return}function pN(){c[13797]=0;c[13796]=18952;return}function qN(a,b){a=a|0;b=b|0;FN(a,b,aG(57008)|0);return}function rN(){c[13799]=0;c[13798]=18980;return}function sN(a,b){a=a|0;b=b|0;FN(a,b,aG(57016)|0);return}function tN(){c[13801]=0;c[13800]=19412;yM(55208);c[13800]=17368;c[13802]=17416;return}function uN(a,b){a=a|0;b=b|0;FN(a,b,aG(56868)|0);return}function vN(){c[13805]=0;c[13804]=19412;zM(55224);c[13804]=17452;c[13806]=17500;return}function wN(a,b){a=a|0;b=b|0;FN(a,b,aG(56936)|0);return}function xN(){var a=0;c[13809]=0;c[13808]=19412;a=_F()|0;c[13810]=a;c[13808]=18624;return}function yN(a,b){a=a|0;b=b|0;FN(a,b,aG(56944)|0);return}function zN(){var a=0;c[13813]=0;c[13812]=19412;a=_F()|0;c[13814]=a;c[13812]=18648;return}function AN(a,b){a=a|0;b=b|0;FN(a,b,aG(56952)|0);return}function BN(){c[13817]=0;c[13816]=19008;return}function CN(a,b){a=a|0;b=b|0;FN(a,b,aG(57024)|0);return}function DN(){c[13819]=0;c[13818]=19040;return}function EN(a,b){a=a|0;b=b|0;FN(a,b,aG(57032)|0);return}function FN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=b+4|0;c[f>>2]=(c[f>>2]|0)+1;f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0>d>>>0)a=f;else{GN(f,d+1|0);a=f;e=c[f>>2]|0}e=c[e+(d<<2)>>2]|0;if(e|0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+-1,(f|0)==0):0)Sb[c[(c[e>>2]|0)+8>>2]&255](e);c[(c[a>>2]|0)+(d<<2)>>2]=b;return}function GN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else HN(a,b-e|0);return}function HN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=JN(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;KN(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+16|0);LN(f,b);MN(a,f);NN(f);break}}else IN(a,b);while(0);zb=i;return}function IN(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function JN(a){a=a|0;return 1073741823}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if(d>>>0<29&(a[g>>0]|0)==0){a[g>>0]=1;break}else{f=tB(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function LN(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function MN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function NN(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;while(1){if((f|0)==(d|0))break;g=f+-4|0;c[e>>2]=g;f=g}e=c[b>>2]|0;f=e;do if(e|0){d=c[b+16>>2]|0;if((e|0)==(d|0)){a[d+112>>0]=0;break}else{Pf(e,(c[b+12>>2]|0)-f|0);break}}while(0);return}function ON(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19328;c[a+8>>2]=46;c[a+12>>2]=44;b=a+16|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0}return}function PN(b,d){b=b|0;d=d|0;c[b+4>>2]=d+-1;c[b>>2]=19288;a[b+8>>0]=46;a[b+9>>0]=44;d=b+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}return}function QN(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19168;b=_F()|0;c[a+8>>2]=b;return}function RN(b,d){b=b|0;d=d|0;var e=0;if((JN(b)|0)>>>0>>0)EO(b);e=b+128|0;if(d>>>0<29&(a[e>>0]|0)==0){a[e>>0]=1;e=b+16|0}else e=tB(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function SN(){if((a[55280]|0)==0?nB(55280)|0:0){TN()|0;c[14269]=57072;pB(55280)}return c[14269]|0}function TN(){UN();c[14268]=55288;return 57072}function UN(){BM(55288,1);return}function VN(){WN(57080,SN()|0);return 57080}function WN(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;b=b+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function XN(){if((a[55448]|0)==0?nB(55448)|0:0){VN()|0;c[14271]=57080;pB(55448)}return c[14271]|0}function YN(a){a=a|0;var b=0;b=XN()|0;b=c[b>>2]|0;c[a>>2]=b;a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function ZN(a){a=a|0;return}function _N(a){a=a|0;var b=0,d=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(d=c[b>>2]|0,c[b>>2]=d+-1,(d|0)!=0):0))Sb[c[(c[a>>2]|0)+16>>2]&255](a);return}function $N(a,b,d){a=a|0;b=b|0;d=d|0;do{}while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Sb[d&255](b);c[a>>2]=-1}return}function aO(){ua()}function bO(a,b){a=a|0;b=b|0;var d=0,e=0;e=Qy(b)|0;d=tB(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=cO(d)|0;_O(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function cO(a){a=a|0;return a+12|0}function dO(a,b){a=a|0;b=b|0;c[a>>2]=16372;bO(a+4|0,b);return}function eO(a){a=a|0;ua()}function fO(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)gO(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}return}function gO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(e>>>0>4294967279)eO(b);if(e>>>0<11)a[b+11>>0]=e;else{i=e+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;b=h}VD(b,d,e)|0;a[f>>0]=0;bg(b+e|0,f);zb=g;return}function hO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(d>>>0>4294967279)eO(b);if(d>>>0<11)a[b+11>>0]=d;else{i=d+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=d;b=h}iO(b,d,e)|0;a[f>>0]=0;bg(b+d|0,f);zb=g;return}function iO(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)aP(a|0,(cg(c)|0)&255|0,b|0)|0;return a|0}function jO(b){b=b|0;if((a[b+11>>0]|0)<0)Pf(c[b>>2]|0,c[b+8>>2]&2147483647);return}function kO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g)h=(c[b+8>>2]&2147483647)+-1|0;else h=10;do if(h>>>0>=e>>>0){if(g)f=c[b>>2]|0;else f=b;lO(f,d,e)|0;a[i>>0]=0;bg(f+e|0,i);if((a[j>>0]|0)<0){c[b+4>>2]=e;break}else{a[j>>0]=e;break}}else{if(g)f=c[b+4>>2]|0;else f=f&255;mO(b,h,e-h|0,f,0,f,e,d)}while(0);zb=k;return b|0}function lO(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)$O(a|0,b|0,c|0)|0;return a|0} +function nw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[(c[a+484>>2]|0)+24>>2]|0;h=c[d>>2]|0;j=d+4|0;l=c[j>>2]|0;o=d+8|0;n=c[o>>2]|0;p=d+12|0;m=c[p>>2]|0;q=d+16|0;k=c[q>>2]|0;r=d+20|0;s=c[r>>2]|0;a:do if((l|0)<=(h|0)|(n|0)>(m|0)|(k|0)>(s|0))i=h;else{i=h;b:while(1){g=c[t+(i<<2)>>2]|0;e=n;while(1){a=g+(e<<6)+(k<<1)|0;f=k;while(1){if(b[a>>1]|0)break b;if((f|0)<(s|0)){a=a+2|0;f=f+1|0}else break}if((e|0)<(m|0))e=e+1|0;else break}if((i|0)<(l|0))i=i+1|0;else{i=h;break a}}c[d>>2]=i}while(0);c:do if(!((l|0)<=(i|0)|(n|0)>(m|0)|(k|0)>(s|0))){e=l;d:while(1){h=c[t+(e<<2)>>2]|0;f=n;while(1){a=h+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break d;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((f|0)<(m|0))f=f+1|0;else break}if((e|0)>(i|0))e=e+-1|0;else break c}c[j>>2]=e;l=e}while(0);e:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=n;f:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break f;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)<(m|0))f=f+1|0;else break e}c[o>>2]=f;n=f}while(0);g:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=m;h:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break h;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)>(n|0))f=f+-1|0;else break g}c[p>>2]=f;m=f}while(0);i:do if(!((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))){f=k;j:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break j;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)<(s|0))f=f+1|0;else break i}c[q>>2]=f;k=f}while(0);k:do if((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))f=s;else{f=s;l:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break l;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)>(k|0))f=f+-1|0;else{f=s;break k}}c[r>>2]=f}while(0);r=l-i<<4;q=(m-n|0)*12|0;s=f-k<<3;s=(B(q,q)|0)+(B(r,r)|0)+(B(s,s)|0)|0;c[d+24>>2]=s;if((l|0)<(i|0)|(m|0)<(n|0)|(f|0)<(k|0)){t=0;d=d+28|0;c[d>>2]=t;return}a=0;while(1){j=c[t+(i<<2)>>2]|0;h=n;while(1){e=k;g=j+(h<<6)+(k<<1)|0;while(1){a=a+((b[g>>1]|0)!=0&1)|0;if((e|0)>=(f|0))break;else{e=e+1|0;g=g+2|0}}if((h|0)<(m|0))h=h+1|0;else break}if((i|0)<(l|0))i=i+1|0;else break}d=d+28|0;c[d>>2]=a;return}function ow(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+484|0;j=c[b>>2]|0;c[a+136>>2]=c[j+16>>2];c[a+132>>2]=c[j+20>>2];switch(c[a+88>>2]|0){case 0:{b=j+4|0;if((c[a+120>>2]|0)==3){c[b>>2]=22;return}else{c[b>>2]=23;return}}case 1:{l=a+120|0;c[j+4>>2]=(c[l>>2]|0)==3?24:25;c[j+48>>2]=0;if(!(c[j+28>>2]|0))rw(a);if(c[j+52>>2]|0)return;j=c[b>>2]|0;b=c[l>>2]|0;if((b|0)<=0)return;k=a+4|0;i=0;do{f=c[j+32+(i<<2)>>2]|0;a:do if(i){e=0;while(1){if((f|0)==(c[j+32+(e<<2)>>2]|0))break;e=e+1|0;if(e>>>0>=i>>>0){m=15;break a}}e=c[j+52+(e<<2)>>2]|0;if(!e)m=15}else m=15;while(0);if((m|0)==15){m=0;e=Jb[c[c[k>>2]>>2]&63](a,1,1024)|0;h=(f<<9)+-512|0;g=0;do{f=0;do{n=255-((d[5440+(g<<4)+f>>0]|0)<<1)|0;b=n*255|0;if((n|0)<0)b=0-((0-b|0)/(h|0)|0)|0;else b=(b|0)/(h|0)|0;c[e+(g<<6)+(f<<2)>>2]=b;f=f+1|0}while((f|0)!=16);g=g+1|0}while((g|0)!=16);b=c[l>>2]|0}c[j+52+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(b|0));return}case 2:{c[j+4>>2]=26;c[j+84>>2]=0;if(!(c[j+68>>2]|0)){b=a+112|0;g=(c[b>>2]<<1)+4|0;h=a+120|0;if((c[h>>2]|0)<=0)return;i=a+4|0;e=0;do{f=Jb[c[(c[i>>2]|0)+4>>2]&63](a,1,g)|0;c[j+68+(e<<2)>>2]=f;e=e+1|0;f=c[h>>2]|0}while((e|0)<(f|0))}else{f=a+120|0;h=f;b=a+112|0;f=c[f>>2]|0}e=(c[b>>2]<<1)+4|0;if((f|0)<=0)return;b=0;do{aP(c[j+68+(b<<2)>>2]|0,0,e|0)|0;b=b+1|0}while((b|0)<(c[h>>2]|0));return}default:{n=c[a>>2]|0;c[n+20>>2]=49;Sb[c[n>>2]&255](a);return}}}function pw(a){a=a|0;return}function qw(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Sb[c[b>>2]&255](a);return}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+484>>2]|0;d=(c[b+88>>2]|0)==1;c[m+28>>2]=d&1;l=b+120|0;e=Kb[c[(c[b+4>>2]|0)+8>>2]&15](b,1,d?766:256,c[l>>2]|0)|0;k=m+24|0;c[k>>2]=e;b=c[m+20>>2]|0;if((c[l>>2]|0)<=0)return;if(!d){d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;h=c[e+(d<<2)>>2]|0;i=f+-1|0;j=i<<1;e=0;f=(f+254|0)/(j|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+i|0)/(j|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[h+g>>0]=n;g=g+1|0}while((g|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;j=e+(d<<2)|0;c[j>>2]=(c[j>>2]|0)+255;j=c[(c[k>>2]|0)+(d<<2)>>2]|0;h=f+-1|0;i=h<<1;e=0;f=(f+254|0)/(i|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+h|0)/(i|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[j+g>>0]=n;g=g+1|0}while((g|0)!=256);f=j+255|0;e=1;do{a[j+(0-e)>>0]=a[j>>0]|0;a[j+(e+255)>>0]=a[f>>0]|0;e=e+1|0}while((e|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}function sw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[(c[b+484>>2]|0)+24>>2]|0;n=c[m>>2]|0;l=c[m+4>>2]|0;m=c[m+8>>2]|0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;h=0;do{b=k;i=c[f+(h<<2)>>2]|0;j=c[e+(h<<2)>>2]|0;while(1){a[i>>0]=(d[l+(d[j+1>>0]|0)>>0]|0)+(d[n+(d[j>>0]|0)>>0]|0)+(d[m+(d[j+2>>0]|0)>>0]|0);b=b+-1|0;if(!b)break;else{i=i+1|0;j=j+3|0}}h=h+1|0}while((h|0)!=(g|0));return}function tw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[(c[b+484>>2]|0)+24>>2]|0;p=c[b+112>>2]|0;n=c[b+120>>2]|0;if((g|0)<1|(p|0)==0)return;if((n|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,p|0)|0;b=b+1|0}while((b|0)!=(g|0));return}i=0;do{h=p;j=c[f+(i<<2)>>2]|0;k=c[e+(i<<2)>>2]|0;while(1){b=0;l=0;m=k;while(1){l=l+(d[(c[o+(b<<2)>>2]|0)+(d[m>>0]|0)>>0]|0)|0;b=b+1|0;if((b|0)==(n|0))break;else m=m+1|0}a[j>>0]=l;h=h+-1|0;if(!h)break;else{j=j+1|0;k=k+n|0}}i=i+1|0}while((i|0)!=(g|0));return}function uw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=c[b+484>>2]|0;u=c[h+24>>2]|0;v=c[u>>2]|0;t=c[u+4>>2]|0;u=c[u+8>>2]|0;q=c[b+112>>2]|0;if((g|0)<=0)return;w=h+48|0;r=h+52|0;s=h+56|0;p=h+60|0;b=c[w>>2]|0;if(!q){h=0;do{b=b+1&15;h=h+1|0}while((h|0)!=(g|0));c[w>>2]=b;return}o=0;do{l=c[r>>2]|0;m=c[s>>2]|0;n=c[p>>2]|0;h=q;i=0;j=c[f+(o<<2)>>2]|0;k=c[e+(o<<2)>>2]|0;while(1){a[j>>0]=(d[t+((c[m+(b<<6)+(i<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0)+(d[v+((c[l+(b<<6)+(i<<2)>>2]|0)+(d[k>>0]|0))>>0]|0)+(d[u+((c[n+(b<<6)+(i<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0);h=h+-1|0;if(!h)break;else{i=i+1&15;j=j+1|0;k=k+3|0}}b=b+1&15;c[w>>2]=b;o=o+1|0}while((o|0)!=(g|0));return}function vw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[b+484>>2]|0;v=c[b+120>>2]|0;w=c[b+112>>2]|0;if((g|0)<=0)return;t=u+48|0;m=u+24|0;n=(w|0)==0;if((v|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,w|0)|0;c[t>>2]=(c[t>>2]|0)+1&15;b=b+1|0}while((b|0)!=(g|0));return}h=0;do{o=f+(h<<2)|0;aP(c[o>>2]|0,0,w|0)|0;p=c[t>>2]|0;q=e+(h<<2)|0;if(!n){i=0;do{r=c[(c[m>>2]|0)+(i<<2)>>2]|0;s=c[u+52+(i<<2)>>2]|0;b=w;j=c[o>>2]|0;k=0;l=(c[q>>2]|0)+i|0;while(1){a[j>>0]=(d[j>>0]|0)+(d[r+((c[s+(p<<6)+(k<<2)>>2]|0)+(d[l>>0]|0))>>0]|0);b=b+-1|0;if(!b)break;else{j=j+1|0;k=k+1&15;l=l+v|0}}i=i+1|0}while((i|0)!=(v|0))}c[t>>2]=p+1&15;h=h+1|0}while((h|0)!=(g|0));return}function ww(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;J=c[e+484>>2]|0;K=c[e+120>>2]|0;L=c[e+112>>2]|0;y=c[e+336>>2]|0;if((h|0)<=0)return;z=(K|0)>0;A=J+84|0;C=J+24|0;D=J+16|0;E=(L|0)==0;F=L+-1|0;G=B(F,K)|0;H=0-K|0;I=L+1|0;x=0;do{v=g+(x<<2)|0;aP(c[v>>2]|0,0,L|0)|0;a:do if(z){w=f+(x<<2)|0;if(E){i=(c[A>>2]|0)==0;e=0;while(1){w=c[J+68+(e<<2)>>2]|0;b[(i?w:w+(I<<1)|0)>>1]=0;e=e+1|0;if((e|0)==(K|0))break a}}r=0;do{e=(c[w>>2]|0)+r|0;i=c[v>>2]|0;if(!(c[A>>2]|0)){s=K;t=1;u=c[J+68+(r<<2)>>2]|0}else{s=H;t=-1;u=(c[J+68+(r<<2)>>2]|0)+(I<<1)|0;e=e+G|0;i=i+F|0}o=c[(c[C>>2]|0)+(r<<2)>>2]|0;p=c[(c[D>>2]|0)+(r<<2)>>2]|0;q=B(L,t)|0;l=0;m=L;n=0;j=0;k=u;while(1){M=k;k=k+(t<<1)|0;N=d[y+((j+8+(b[k>>1]|0)>>4)+(d[e>>0]|0))>>0]|0;j=d[o+N>>0]|0;a[i>>0]=(d[i>>0]|0)+j;j=N-(d[p+j>>0]|0)|0;b[M>>1]=(j*3|0)+n;n=(j*5|0)+l|0;m=m+-1|0;if(!m)break;else{l=j;j=j*7|0;e=e+s|0;i=i+t|0}}b[u+(q<<1)>>1]=n;r=r+1|0}while((r|0)!=(K|0))}while(0);c[A>>2]=(c[A>>2]|0)==0&1;x=x+1|0}while((x|0)!=(h|0));return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+428|0;d=c[g>>2]|0;e=B(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do if(e>>>0>f>>>0){if(e>>>0<=f<<1>>>0){f=yw(c[a+28>>2]<<1,d)|0;c[a+112>>2]=f;f=2;b=c[a+32>>2]<<1;break}if(e>>>0<=(f*3|0)>>>0){f=yw((c[a+28>>2]|0)*3|0,d)|0;c[a+112>>2]=f;f=3;b=(c[a+32>>2]|0)*3|0;break}if(e>>>0<=f<<2>>>0){f=yw(c[a+28>>2]<<2,d)|0;c[a+112>>2]=f;f=4;b=c[a+32>>2]<<2;break}if(e>>>0<=(f*5|0)>>>0){f=yw((c[a+28>>2]|0)*5|0,d)|0;c[a+112>>2]=f;f=5;b=(c[a+32>>2]|0)*5|0;break}if(e>>>0<=(f*6|0)>>>0){f=yw((c[a+28>>2]|0)*6|0,d)|0;c[a+112>>2]=f;f=6;b=(c[a+32>>2]|0)*6|0;break}if(e>>>0<=(f*7|0)>>>0){f=yw((c[a+28>>2]|0)*7|0,d)|0;c[a+112>>2]=f;f=7;b=(c[a+32>>2]|0)*7|0;break}if(e>>>0<=f<<3>>>0){f=yw(c[a+28>>2]<<3,d)|0;c[a+112>>2]=f;f=8;b=c[a+32>>2]<<3;break}if(e>>>0<=(f*9|0)>>>0){f=yw((c[a+28>>2]|0)*9|0,d)|0;c[a+112>>2]=f;f=9;b=(c[a+32>>2]|0)*9|0;break}if(e>>>0<=(f*10|0)>>>0){f=yw((c[a+28>>2]|0)*10|0,d)|0;c[a+112>>2]=f;f=10;b=(c[a+32>>2]|0)*10|0;break}if(e>>>0<=(f*11|0)>>>0){f=yw((c[a+28>>2]|0)*11|0,d)|0;c[a+112>>2]=f;f=11;b=(c[a+32>>2]|0)*11|0;break}if(e>>>0<=(f*12|0)>>>0){f=yw((c[a+28>>2]|0)*12|0,d)|0;c[a+112>>2]=f;f=12;b=(c[a+32>>2]|0)*12|0;break}if(e>>>0<=(f*13|0)>>>0){f=yw((c[a+28>>2]|0)*13|0,d)|0;c[a+112>>2]=f;f=13;b=(c[a+32>>2]|0)*13|0;break}if(e>>>0<=(f*14|0)>>>0){f=yw((c[a+28>>2]|0)*14|0,d)|0;c[a+112>>2]=f;f=14;b=(c[a+32>>2]|0)*14|0;break}b=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){f=yw(b<<4,d)|0;c[a+112>>2]=f;f=16;b=c[a+32>>2]<<4;break}else{f=yw(b*15|0,d)|0;c[a+112>>2]=f;f=15;b=(c[a+32>>2]|0)*15|0;break}}else{f=yw(c[a+28>>2]|0,d)|0;c[a+112>>2]=f;f=1;b=c[a+32>>2]|0}while(0);e=yw(b,c[g>>2]|0)|0;c[a+116>>2]=e;c[a+324>>2]=f;c[a+328>>2]=f;e=c[a+36>>2]|0;if((e|0)<=0)return;d=0;b=c[a+216>>2]|0;while(1){c[b+36>>2]=f;c[b+40>>2]=f;d=d+1|0;if((d|0)>=(e|0))break;else b=b+88|0}return}function yw(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=c[a+20>>2]|0;if((e|0)!=205){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=e;Sb[c[c[a>>2]>>2]&255](a)}e=a+140|0;f=c[e>>2]|0;g=c[a+116>>2]|0;if(f>>>0>=g>>>0){i=c[a>>2]|0;c[i+20>>2]=126;Ub[c[i+4>>2]&63](a,-1);i=0;zb=j;return i|0}h=c[a+8>>2]|0;if(h|0){c[h+4>>2]=f;c[h+8>>2]=g;Sb[c[h>>2]&255](a)}c[i>>2]=0;Xb[c[(c[a+448>>2]|0)+4>>2]&31](a,b,i,d);i=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+i;zb=j;return i|0}function Aw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;j=k;g=k+8|0;h=k+12|0;d=b+4|0;c[d>>2]=0;e=Bw(b)|0;c[g>>2]=e;f=Cw(b,84)|0;if(!f){Dw(b);i=c[b>>2]|0;c[i+20>>2]=56;c[i+24>>2]=0;Sb[c[c[b>>2]>>2]&255](b)}c[f>>2]=33;c[f+4>>2]=34;c[f+8>>2]=9;c[f+12>>2]=10;c[f+16>>2]=39;c[f+20>>2]=40;c[f+24>>2]=135;c[f+28>>2]=21;c[f+32>>2]=22;c[f+36>>2]=52;c[f+40>>2]=136;c[f+48>>2]=1e9;i=f+44|0;c[i>>2]=e;c[f+56>>2]=0;c[f+64>>2]=0;c[f+52>>2]=0;c[f+60>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+76>>2]=84;c[d>>2]=f;b=Ja(46641)|0;if(!b){zb=k;return}a[h>>0]=120;c[j>>2]=g;c[j+4>>2]=h;if((Cz(b,46649,j)|0)>0){switch(a[h>>0]|0){case 77:case 109:{b=(c[g>>2]|0)*1e3|0;c[g>>2]=b;break}default:b=c[g>>2]|0}c[i>>2]=b*1e3}zb=k;return}function Bw(a){a=a|0;return 0}function Cw(a,b){a=a|0;b=b|0;return FO(b)|0}function Dw(a){a=a|0;return}function Ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;if(d>>>0>999999984){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}j=d&7;j=((j|0)==0?0:8-j|0)+d|0;if(b>>>0>1){i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=k+52+(b<<2)|0;d=c[i>>2]|0;a:do if(!d){d=0;f=9}else while(1){if((c[d+8>>2]|0)>>>0>=j>>>0)break a;e=c[d>>2]|0;if(!e){f=9;break}else d=e}while(0);do if((f|0)==9){h=(d|0)==0;b=c[(h?15936:15944)+(b<<2)>>2]|0;e=999999984-j|0;b=b>>>0>e>>>0?e:b;e=b+j|0;g=e+16|0;f=Cw(a,g)|0;if(!f){do{if(b>>>0<100){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=2;Sb[c[c[a>>2]>>2]&255](a)}b=b>>>1;e=b+j|0;g=e+16|0;f=Cw(a,g)|0}while(!(f|0));b=g}else b=g;k=k+76|0;c[k>>2]=(c[k>>2]|0)+b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;if(h){c[i>>2]=f;d=f;break}else{c[d>>2]=f;d=f;break}}while(0);i=d+4|0;k=c[i>>2]|0;c[i>>2]=k+j;i=d+8|0;c[i>>2]=(c[i>>2]|0)-j;return d+16+k|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}f=d&7;d=((f|0)==0?0:8-f|0)+d|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}e=d+16|0;f=Tw(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function Gw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(d>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(h,d)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+d|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Hw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;n=d<<7;f=999999984/(n>>>0)|0;if(n>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(n,h)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+(d<<7)|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+68|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Jw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+72|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+4|0;s=c[u>>2]|0;f=s+68|0;b=c[f>>2]|0;if(!b){d=0;e=0}else{d=0;e=0;do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(t,c[b+12>>2]|0)|0)+d|0;e=(B(c[b+4>>2]|0,t)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0)}r=s+72|0;b=c[r>>2]|0;if(!b)b=e;else{do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(c[b+12>>2]<<7,t)|0)+d|0;e=(B(t<<7,c[b+4>>2]|0)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0);b=e}if((d|0)<1)return;e=Rw(a,d,b,c[s+76>>2]|0)|0;if((e|0)<(b|0)){t=(e|0)/(d|0)|0;t=(t|0)>1?t:1}else t=1e9;b=c[f>>2]|0;if(b|0){q=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;p=b+16|0;c[p>>2]=d;d=b+8|0;Sw(a,b+48|0,B(c[d>>2]|0,e)|0);c[b+40>>2]=1;e=c[p>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;d=999999984/(p>>>0)|0;if(p>>>0>999999984){o=c[a>>2]|0;c[o+20>>2]=72;Sb[c[o>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,p)|0;i=c[u>>2]|0;if(f>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=56;c[m+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}h=f&7;f=((h|0)==0?0:8-h|0)+f|0;h=f+16|0;m=Tw(a,h)|0;if(!m){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}l=i+76|0;c[l>>2]=(c[l>>2]|0)+h;l=i+64|0;c[m>>2]=c[l>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[l>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+p|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[q>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0)}b=c[r>>2]|0;if(!b)return;r=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;s=b+16|0;c[s>>2]=d;d=b+8|0;Sw(a,b+48|0,B(e<<7,c[d>>2]|0)|0);c[b+40>>2]=1;e=c[s>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;q=p<<7;d=999999984/(q>>>0)|0;if(q>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=72;Sb[c[s>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,q)|0;h=c[u>>2]|0;if(f>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}i=f|16;m=Tw(a,i)|0;if(!m){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}s=h+76|0;c[s>>2]=(c[s>>2]|0)+i;s=h+64|0;c[m>>2]=c[s>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[s>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+(p<<7)|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[r>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0);return}function Lw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]|0;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]|0;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);g=c[m>>2]|0;j=g+j|0;e=c[k>>2]|0;if((e|0)<=(j|0))break a;r=e-j|0;r=(g|0)<(r|0)?g:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]|0;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Mw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]<<7;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]<<7;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[k>>2]|0;if((g|0)<=(j|0))break a;r=g-j|0;r=(e|0)<(r|0)?e:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]<<7;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){f=g+68|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0;f=g+72|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0}}else{f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}f=g+60+(b<<2)|0;d=c[f>>2]|0;c[f>>2]=0;if(d|0){e=g+76|0;do{h=d;d=c[d>>2]|0;f=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;Qw(a,h,f);c[e>>2]=(c[e>>2]|0)-f}while((d|0)!=0)}h=g+52+(b<<2)|0;d=c[h>>2]|0;c[h>>2]=0;if(!d)return;e=g+76|0;do{g=d;d=c[d>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;Pw(a,g,h);c[e>>2]=(c[e>>2]|0)-h}while((d|0)!=0);return}function Ow(a){a=a|0;var b=0;Nw(a,1);Nw(a,0);b=a+4|0;Pw(a,c[b>>2]|0,84);c[b>>2]=0;Dw(a);return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Sb[c[d>>2]&255](a);return}function Tw(a,b){a=a|0;b=b|0;return FO(b)|0}function Uw(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d|0)Sb[c[d+40>>2]&255](a);c[b>>2]=0;c[a+20>>2]=0;return}function Vw(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Ub[c[b+36>>2]&63](a,1);b=a+20|0;if(!(c[a+16>>2]|0)){c[b>>2]=100;return}else{c[b>>2]=200;c[a+312>>2]=0;return}}function Ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[a+4>>2]=0;if((b|0)!=90){e=c[a>>2]|0;c[e+20>>2]=13;c[e+24>>2]=90;c[(c[a>>2]|0)+28>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}if((d|0)==488)b=a;else{b=c[a>>2]|0;c[b+20>>2]=22;c[b+24>>2]=488;c[(c[a>>2]|0)+28>>2]=d;Sb[c[c[a>>2]>>2]&255](a);b=a}f=c[a>>2]|0;d=a+12|0;e=c[d>>2]|0;aP(a+4|0,0,484)|0;c[a>>2]=f;c[d>>2]=e;c[a+16>>2]=1;Aw(b);c[a+8>>2]=0;c[a+24>>2]=0;c[a+312>>2]=0;b=a+164|0;d=b+48|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ut(a);Xw(a);c[a+20>>2]=200;return}function Xw(a){a=a|0;var b=0;b=Jb[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+460>>2]=b;c[b>>2]=90;c[b+4>>2]=137;c[b+8>>2]=138;c[b+12>>2]=139;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function Yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+460|0;b=c[G>>2]|0;H=b+20|0;if(c[H>>2]|0){a=2;return a|0}I=a+464|0;K=b+24|0;L=a+340|0;F=b+16|0;l=a+32|0;m=a+212|0;n=a+28|0;o=a+36|0;p=a+316|0;q=a+320|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+324|0;v=a+328|0;w=a+428|0;x=a+432|0;y=a+436|0;z=a+416|0;A=a+332|0;C=a+412|0;D=a+420|0;E=a+424|0;a:while(1){b=Gb[c[(c[I>>2]|0)+4>>2]&127](a)|0;switch(b|0){case 2:{k=58;break a}case 1:break;default:{k=63;break a}}b:do switch(c[K>>2]|0){case 0:{if(!(c[F>>2]|0)){j=c[a>>2]|0;c[j+20>>2]=36;Sb[c[j>>2]&255](a)}if(c[L>>2]|0){k=57;break a}break}case 1:{if(!((c[l>>2]|0)<=65500?(c[n>>2]|0)<=65500:0)){j=c[a>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Sb[c[c[a>>2]>>2]&255](a)}b=c[m>>2]|0;if((b+-8|0)>>>0>4){j=c[a>>2]|0;c[j+20>>2]=16;c[j+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}b=c[o>>2]|0;if((b|0)>10){j=c[a>>2]|0;c[j+20>>2]=27;c[j+24>>2]=b;c[(c[a>>2]|0)+28>>2]=10;Sb[c[c[a>>2]>>2]&255](a);b=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((b|0)>0){i=0;j=c[r>>2]|0;f=1;h=1;while(1){d=j+8|0;e=c[d>>2]|0;g=j+12|0;if((e+-1|0)>>>0<=3?(J=c[g>>2]|0,(J+-1|0)>>>0<=3):0)d=J;else{h=c[a>>2]|0;c[h+20>>2]=19;Sb[c[h>>2]&255](a);h=c[p>>2]|0;e=c[d>>2]|0;f=c[q>>2]|0;d=c[g>>2]|0;b=c[o>>2]|0}h=(h|0)>(e|0)?h:e;c[p>>2]=h;f=(f|0)>(d|0)?f:d;c[q>>2]=f;i=i+1|0;if((i|0)>=(b|0)){d=b;break}else j=j+88|0}}else d=b;c:do if(!(c[s>>2]|0)){if(c[t>>2]|0?c[L>>2]|0:0){k=22;break}do switch(c[z>>2]|0){case 0:{c[w>>2]=1;c[x>>2]=2064;c[y>>2]=0;b=1;break c}case 3:{c[w>>2]=2;c[x>>2]=3280;c[y>>2]=3;b=2;break c}case 8:{c[w>>2]=3;c[x>>2]=3168;c[y>>2]=8;b=3;break c}case 15:{c[w>>2]=4;c[x>>2]=3040;c[y>>2]=15;b=4;break c}case 24:{c[w>>2]=5;c[x>>2]=2864;c[y>>2]=24;b=5;break c}case 35:{c[w>>2]=6;c[x>>2]=2656;c[y>>2]=35;b=6;break c}case 48:{c[w>>2]=7;c[x>>2]=2384;c[y>>2]=48;b=7;break c}case 63:{c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8;break c}case 80:{c[w>>2]=9;c[x>>2]=2064;c[y>>2]=63;b=9;break c}case 99:{c[w>>2]=10;c[x>>2]=2064;c[y>>2]=63;b=10;break c}case 120:{c[w>>2]=11;c[x>>2]=2064;c[y>>2]=63;b=11;break c}case 143:{c[w>>2]=12;c[x>>2]=2064;c[y>>2]=63;b=12;break c}case 168:{c[w>>2]=13;c[x>>2]=2064;c[y>>2]=63;b=13;break c}case 195:{c[w>>2]=14;c[x>>2]=2064;c[y>>2]=63;b=14;break c}case 224:{c[w>>2]=15;c[x>>2]=2064;c[y>>2]=63;b=15;break c}case 255:{c[w>>2]=16;c[x>>2]=2064;c[y>>2]=63;b=16;break c}default:{b=c[a>>2]|0;c[b+20>>2]=17;c[b+24>>2]=c[C>>2];c[(c[a>>2]|0)+28>>2]=c[z>>2];c[(c[a>>2]|0)+32>>2]=c[D>>2];c[(c[a>>2]|0)+36>>2]=c[E>>2];Sb[c[c[a>>2]>>2]&255](a);b=c[w>>2]|0;d=c[o>>2]|0;break c}}while(0)}else k=22;while(0);if((k|0)==22){c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8}c[u>>2]=b;c[v>>2]=b;if((d|0)>0){d=0;e=c[r>>2]|0;while(1){c[e+36>>2]=b;c[e+40>>2]=b;k=e+8|0;j=B(c[k>>2]|0,c[n>>2]|0)|0;b=yw(j,B(c[p>>2]|0,b)|0)|0;c[e+28>>2]=b;b=e+12|0;j=B(c[b>>2]|0,c[l>>2]|0)|0;j=yw(j,B(c[w>>2]|0,c[q>>2]|0)|0)|0;c[e+32>>2]=j;k=B(c[k>>2]|0,c[n>>2]|0)|0;k=yw(k,c[p>>2]|0)|0;c[e+44>>2]=k;b=B(c[b>>2]|0,c[l>>2]|0)|0;b=yw(b,c[q>>2]|0)|0;c[e+48>>2]=b;c[e+52>>2]=1;c[e+80>>2]=0;b=d+1|0;if((b|0)>=(c[o>>2]|0))break;d=b;e=e+88|0;b=c[w>>2]|0}b=c[w>>2]|0}b=yw(c[l>>2]|0,B(b,c[q>>2]|0)|0)|0;c[A>>2]=b;b=c[L>>2]|0;if((b|0)>=(c[o>>2]|0)?(c[t>>2]|0)==0:0){c[(c[G>>2]|0)+16>>2]=0;k=50;break b}c[(c[G>>2]|0)+16>>2]=1;k=50;break}default:{b=c[L>>2]|0;k=50}}while(0);if((k|0)==50){k=0;if(b|0){k=52;break}c[K>>2]=2}}if((k|0)==52){c[K>>2]=0;a=1;return a|0}else if((k|0)==57){_w(a);a=1;return a|0}else if((k|0)==58){c[H>>2]=1;if(!(c[K>>2]|0)){d=a+152|0;b=c[a+144>>2]|0;if((c[d>>2]|0)<=(b|0)){a=2;return a|0}c[d>>2]=b;a=2;return a|0}else{if(!(c[(c[I>>2]|0)+16>>2]|0)){a=2;return a|0}L=c[a>>2]|0;c[L+20>>2]=62;Sb[c[L>>2]&255](a);a=2;return a|0}}else if((k|0)==63)return b|0;return 0}function Zw(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[b>>2]=90;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;Sb[c[(c[a>>2]|0)+16>>2]&255](a);Sb[c[c[a+464>>2]>>2]&255](a);c[a+160>>2]=0;return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+340|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[(c[a>>2]|0)+28>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}f=a+428|0;g=yw(c[a+28>>2]|0,B(c[f>>2]|0,c[a+316>>2]|0)|0)|0;c[a+360>>2]=g;f=yw(c[a+32>>2]|0,B(c[f>>2]|0,c[a+320>>2]|0)|0)|0;c[a+364>>2]=f;f=a+368|0;c[f>>2]=0;if((c[h>>2]|0)<=0){g=a+468|0;g=c[g>>2]|0;g=c[g>>2]|0;Sb[g&255](a);g=a+452|0;h=c[g>>2]|0;h=c[h>>2]|0;Sb[h&255](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;h=a+460|0;h=c[h>>2]|0;c[h>>2]=g;return}d=0;e=0;while(1){g=c[a+344+(d<<2)>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=B(j,k)|0;c[g+64>>2]=b;i=B(c[g+36>>2]|0,k)|0;c[g+68>>2]=i;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Sb[c[k>>2]&255](a)}if((b|0)>0)while(1){k=c[f>>2]|0;c[f>>2]=k+1;c[a+372+(k<<2)>>2]=d;if((b|0)>1)b=b+-1|0;else break}d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}}else{b=c[a+344>>2]|0;c[a+360>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+364>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;j=c[b+12>>2]|0;k=(k>>>0)%(j>>>0)|0;c[b+76>>2]=(k|0)==0?j:k;c[a+368>>2]=1;c[a+372>>2]=0;b=1}g=a+4|0;f=0;do{d=c[a+344+(f<<2)>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+164+(d<<2)|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}k=Jb[c[c[g>>2]>>2]&63](a,1,132)|0;_O(k|0,c[b>>2]|0,132)|0;c[e>>2]=k;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0));j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}function $w(a){a=a|0;Sb[c[(c[a+468>>2]|0)+8>>2]&255](a);c[c[a+460>>2]>>2]=90;return}function ax(a){a=a|0;Uw(a);return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}d=cx(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(b){e=c[a>>2]|0;c[e+20>>2]=53;Sb[c[e>>2]&255](a)}Vw(a);e=2;return e|0}default:{e=d;return e|0}}return 0}function cx(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;i=b+20|0;d=c[i>>2]|0;switch(d|0){case 200:{d=b+460|0;Sb[c[(c[d>>2]|0)+4>>2]&255](b);Sb[c[(c[b+24>>2]|0)+8>>2]&255](b);c[i>>2]=201;break}case 201:{d=b+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{i=Gb[c[c[b+460>>2]>>2]&127](b)|0;return i|0}case 202:{i=1;return i|0}default:{i=c[b>>2]|0;c[i+20>>2]=21;c[i+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b);i=0;return i|0}}d=Gb[c[c[d>>2]>>2]&127](b)|0;if((d|0)!=1){i=d;return i|0}d=c[b+36>>2]|0;a:do switch(d|0){case 1:{e=d;break}case 3:{f=c[b+216>>2]|0;d=c[f>>2]|0;e=c[f+88>>2]|0;f=c[f+176>>2]|0;h=(d|0)==1;if(!(h&(e|0)==2&(f|0)==3))if(!(h&(e|0)==34&(f|0)==35))if(!((d|0)==82&(e|0)==71&(f|0)==66))if(!((d|0)==114&(e|0)==103&(f|0)==98))if(!(c[b+284>>2]|0)){if(!(c[b+296>>2]|0)){h=c[b>>2]|0;c[h+24>>2]=d;c[h+28>>2]=e;c[h+32>>2]=f;c[h+20>>2]=113;Ub[c[h+4>>2]&63](b,1);e=2;d=3;break a}d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=2;d=2;break a}case 1:{e=2;d=3;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=2;d=3;break a}}}else{e=2;d=3}else{e=2;d=6}else{e=2;d=2}else{e=2;d=7}else{e=2;d=3}break}case 4:{if(!(c[b+296>>2]|0)){e=4;d=4}else{d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=4;d=4;break a}case 2:{e=4;d=5;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=4;d=5;break a}}}break}default:{e=0;d=0}}while(0);c[b+40>>2]=d;c[b+44>>2]=e;h=c[b+428>>2]|0;c[b+48>>2]=h;c[b+52>>2]=h;g[b+56>>3]=1.0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+76>>2]=1;c[b+80>>2]=1;c[b+84>>2]=0;c[b+88>>2]=2;c[b+92>>2]=1;c[b+96>>2]=256;c[b+136>>2]=0;c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;c[i>>2]=202;i=1;return i|0}function dx(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=c[b>>2]|0;if((d+-205|0)>>>0<2?(c[a+64>>2]|0)==0:0){if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){d=c[a>>2]|0;c[d+20>>2]=69;Sb[c[d>>2]&255](a)}Sb[c[(c[a+444>>2]|0)+4>>2]&255](a);c[b>>2]=210}else e=6;a:do if((e|0)==6)switch(d|0){case 210:break a;case 207:{c[b>>2]=210;break a}default:{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a);break a}}while(0);d=a+460|0;b=c[d>>2]|0;b:do if(!(c[b+20>>2]|0)){while(1){if(!(Gb[c[b>>2]&127](a)|0)){b=0;break}b=c[d>>2]|0;if(c[b+20>>2]|0)break b}return b|0}while(0);Sb[c[(c[a+24>>2]|0)+24>>2]&255](a);Vw(a);a=1;return a|0}function ex(a){a=a|0;c[a>>2]=140;c[a+4>>2]=53;c[a+8>>2]=141;c[a+12>>2]=54;c[a+16>>2]=142;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=3824;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function fx(a){a=a|0;Sb[c[(c[a>>2]|0)+8>>2]&255](a);Uw(a);Ea(1)}function gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Sb[c[d+8>>2]&255](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Sb[c[d+8>>2]&255](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function hx(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+208|0;d=b+200|0;e=b;Ub[c[(c[a>>2]|0)+12>>2]&63](a,e);a=c[4001]|0;c[d>>2]=e;Lz(a,46655,d)|0;zb=b;return}function ix(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+48|0;j=k+8|0;i=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;a:while(1){f=e+1|0;switch(a[e>>0]|0){case 0:break a;case 37:{g=12;break a}default:e=f}}if((g|0)==12?(a[f>>0]|0)==115:0){c[i>>2]=h+24;Hx(d,b,i)|0;zb=k;return}n=c[h+28>>2]|0;m=c[h+32>>2]|0;l=c[h+36>>2]|0;e=c[h+40>>2]|0;f=c[h+44>>2]|0;g=c[h+48>>2]|0;i=c[h+52>>2]|0;c[j>>2]=c[h+24>>2];c[j+4>>2]=n;c[j+8>>2]=m;c[j+12>>2]=l;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=i;Hx(d,b,j)|0;zb=k;return}function jx(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function kx(a){a=a|0;return (aa(px(c[a+60>>2]|0)|0)|0)&65535|0}function lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=zb;zb=zb+32|0;h=l;i=l+16|0;j=a+28|0;f=c[j>>2]|0;c[h>>2]=f;k=a+20|0;f=(c[k>>2]|0)-f|0;c[h+4>>2]=f;c[h+8>>2]=b;c[h+12>>2]=d;e=a+60|0;g=2;b=f+d|0;while(1){if(!(nx(da(c[e>>2]|0,h|0,g|0,i|0)|0)|0))f=c[i>>2]|0;else{c[i>>2]=-1;f=-1}if((b|0)==(f|0)){b=6;break}if((f|0)<0){b=8;break}p=c[h+4>>2]|0;n=f>>>0>p>>>0;m=n?h+8|0:h;p=f-(n?p:0)|0;c[m>>2]=(c[m>>2]|0)+p;o=m+4|0;c[o>>2]=(c[o>>2]|0)-p;g=g+(n<<31>>31)|0;b=b-f|0;h=m}if((b|0)==6){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}else if((b|0)==8){c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)d=0;else d=d-(c[h+4>>2]|0)|0}zb=l;return d|0}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+16|0;f=g;if(!(nx(ca(c[a+60>>2]|0,b|0,d|0,e&255|0,f|0)|0)|0)){b=f;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=f;c[a>>2]=-1;c[a+4>>2]=-1;a=-1;b=-1}E(a|0);zb=g;return b|0}function nx(a){a=a|0;var b=0;if(!(a<<16>>16))a=0;else{b=ox()|0;c[b>>2]=a&65535;a=-1}return a|0}function ox(){return 55620}function px(a){a=a|0;return a|0}function qx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;i=l;f=l+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;if(!(nx(ba(c[b+60>>2]|0,i|0,2,f|0)|0)|0)){f=c[f>>2]|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else k=4}else{c[f>>2]=-1;f=-1;k=4}if((k|0)==4)c[b>>2]=f&48^16|c[b>>2];zb=l;return f|0}function rx(a){a=a|0;return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;E(0);return 0}function tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=ux(a,b,c)|0;E(F()|0);return d|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,-1,-1)|0;E(F()|0);return c|0}function vx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+144|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;wx(h,0,0);d=xx(h,d,1,e,f)|0;e=F()|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+120>>2]|0)-(c[g>>2]|0));E(e|0);zb=j;return d|0}function wx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=a+112|0;c[f>>2]=b;c[f+4>>2]=d;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;h=((g|0)<0)<<31>>31;i=a+120|0;c[i>>2]=g;c[i+4>>2]=h;if(((b|0)!=0|(d|0)!=0)&((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>b>>>0))c[a+104>>2]=e+b;else c[a+104>>2]=f;return}function xx(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){h=ox()|0;c[h>>2]=28;h=0;g=0}else{r=b+4|0;q=b+104|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while((zx(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=yx(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((i|32|0)!=120)if(j){o=8;n=47;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((d[5937+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){wx(b,0,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{o=16;n=47}}else{e=j?10:e;if(e>>>0>(d[5937+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;wx(b,0,0);h=ox()|0;c[h>>2]=28;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;do{i=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&i>>>0<429496729);if(e>>>0<10){m=0;do{f=NO(i|0,m|0,10,0)|0;k=F()|0;l=((e|0)<0)<<31>>31;o=~l;if(k>>>0>o>>>0|(k|0)==(o|0)&f>>>0>~e>>>0){f=10;e=m;n=76;break c}i=OO(f|0,k|0,e|0,l|0)|0;m=F()|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&(m>>>0<429496729|(m|0)==429496729&i>>>0<2576980378));if(e>>>0>9){j=p;e=m}else{f=10;e=m;n=76}}else{j=p;e=0}}else{j=p;e=0;i=0}}else{o=e;n=47}while(0);d:do if((n|0)==47){if(!(o+-1&o)){n=a[46659+((o*23|0)>>>5&7)>>0]|0;f=a[5937+i>>0]|0;e=f&255;if(o>>>0>e>>>0){i=0;do{i=e|i<>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;e=f&255}while(i>>>0<134217728&o>>>0>e>>>0);k=e;e=0}else{j=i;k=e;e=0;i=0}l=TO(-1,-1,n|0)|0;m=F()|0;if(o>>>0<=k>>>0|(m>>>0>>0|(m|0)==(e|0)&l>>>0>>0)){f=o;n=76;break}while(1){i=UO(i|0,e|0,n|0)|0;e=F()|0;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0|(e>>>0>m>>>0|(e|0)==(m|0)&i>>>0>l>>>0)){f=o;n=76;break d}}}e=a[5937+i>>0]|0;f=e&255;if(o>>>0>f>>>0){i=0;do{i=f+(B(i,o)|0)|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=a[5937+j>>0]|0;f=e&255}while(i>>>0<119304647&o>>>0>f>>>0);k=e;e=0}else{j=i;k=e;i=0;e=0}if(o>>>0>f>>>0){m=SO(-1,-1,o|0,0)|0;n=F()|0;f=k;while(1){if(e>>>0>n>>>0|(e|0)==(n|0)&i>>>0>m>>>0){f=o;n=76;break d}k=NO(i|0,e|0,o|0,0)|0;l=F()|0;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=o;n=76;break d}i=OO(k|0,l|0,f|0,0)|0;e=F()|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0){f=o;n=76;break}}}else{f=o;n=76}}while(0);if((n|0)==76)if(f>>>0>(d[5937+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while(f>>>0>(d[5937+i>>0]|0)>>>0);j=ox()|0;c[j>>2]=68;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else j=p;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){r=ox()|0;c[r>>2]=68;g=OO(g|0,h|0,-1,-1)|0;h=F()|0;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){r=ox()|0;c[r>>2]=68;break}}g=((j|0)<0)<<31>>31;g=PO(i^j|0,e^g|0,j|0,g|0)|0;h=F()|0}while(0);E(h|0);return g|0}function yx(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+112|0;f=g;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0)?(i=b+120|0,h=c[i+4>>2]|0,!((h|0)<(f|0)|((h|0)==(f|0)?(c[i>>2]|0)>>>0>>0:0))):0)j=4;else{e=Ax(b)|0;if((e|0)>=0){f=c[g>>2]|0;g=c[g+4>>2]|0;i=c[b+8>>2]|0;if(!((f|0)==0&(g|0)==0)){h=c[b+4>>2]|0;k=i-h|0;l=((k|0)<0)<<31>>31;m=b+120|0;f=PO(f|0,g|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=F()|0;g=i;if((m|0)>(l|0)|(m|0)==(l|0)&f>>>0>k>>>0)j=9;else c[b+104>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+104>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;k=g+1-f|0;m=b+120|0;l=m;k=OO(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=F()|0;c[m>>2]=k;c[m+4>>2]=l}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+104>>2]=0;e=-1}return e|0}function zx(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Ax(a){a=a|0;var b=0,e=0;e=zb;zb=zb+16|0;b=e;if((Bx(a)|0)==0?(Jb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;zb=e;return a|0}function Bx(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Jb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Dx(a,b,c)|0;E(F()|0);return d|0}function Dx(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,0,-2147483648)|0;E(F()|0);return c|0}function Ex(a,b){a=+a;b=+b;var d=0,e=0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;g[h>>3]=b;d=c[h+4>>2]&-2147483648|d&2147483647;c[h>>2]=e;c[h+4>>2]=d;return +(+g[h>>3])}function Fx(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gx(a){a=a|0;return (a+-48|0)>>>0<10|0}function Hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Ix(a,b,f)|0;zb=e;return d|0}function Ix(a,b,c){a=a|0;b=b|0;c=c|0;return Jx(a,2147483647,b,c)|0}function Jx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+160|0;g=j+144|0;i=j;_O(i|0,13736,144)|0;if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;h=4}else{d=ox()|0;c[d>>2]=61;d=-1}else h=4;if((h|0)==4){h=-2-b|0;h=d>>>0>h>>>0?h:d;c[i+48>>2]=h;g=i+20|0;c[g>>2]=b;c[i+44>>2]=b;d=b+h|0;b=i+16|0;c[b>>2]=d;c[i+28>>2]=d;d=Kx(i,e,f)|0;if(h){i=c[g>>2]|0;a[i+(((i|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}zb=j;return d|0}function Kx(a,b,c){a=a|0;b=b|0;c=c|0;return Nx(a,b,c,1,55)|0}function Lx(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0;H=zb;zb=zb+560|0;l=H+32|0;u=H+536|0;G=H;E=G;m=H+540|0;c[u>>2]=0;D=m+12|0;dy(e)|0;j=F()|0;if((j|0)<0){e=-e;dy(e)|0;C=1;A=46685;j=F()|0}else{C=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?46686:46691):46688}do if(0==0&(j&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;Yx(b,32,f,j,h&-65537);Rx(b,A,C);Rx(b,e!=e|0.0!=0.0?(G?46727:46712):G?46704:46708,3);Yx(b,32,f,j,h^8192)}else{q=+ey(e,u)*2.0;j=q!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;t=i|32;if((t|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[r>>0]|0)==45){e=-(e+(-q-e));break}else{e=q+e-e;break}}else e=q;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Wx(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;a[n>>0]=i+15;k=(g|0)<1;l=(h&8|0)==0;m=G;do{C=~~e;j=m+1|0;a[m>>0]=o|d[6672+C>>0];e=(e-+(C|0))*16.0;if((j-E|0)==1?!(l&(k&e==0.0)):0){a[j>>0]=46;m=m+2|0}else m=j}while(e!=0.0);if((g|0)!=0?(-2-E+m|0)<(g|0):0){k=D;l=n;j=g+2+k-l|0}else{k=D;l=n;j=k-E-l+m|0}D=j+p|0;Yx(b,32,f,D,h);Rx(b,r,p);Yx(b,48,f,D,h^65536);E=m-E|0;Rx(b,G,E);G=k-l|0;Yx(b,48,j-(E+G)|0,0,0);Rx(b,n,G);Yx(b,32,f,D,h^8192);j=D;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=q*268435456.0}else{e=q;j=c[u>>2]|0}z=(j|0)<0?l:l+288|0;l=z;do{x=~~e>>>0;c[l>>2]=x;l=l+4|0;e=(e-+(x>>>0))*1.0e9}while(e!=0.0);x=z;if((j|0)>0){o=z;while(1){n=(j|0)<29?j:29;j=l+-4|0;if(j>>>0>=o>>>0){m=0;do{s=UO(c[j>>2]|0,0,n|0)|0;s=OO(s|0,F()|0,m|0,0)|0;v=F()|0;m=SO(s|0,v|0,1e9,0)|0;w=NO(m|0,F()|0,1e9,0)|0;w=PO(s|0,v|0,w|0,F()|0)|0;F()|0;c[j>>2]=w;j=j+-4|0}while(j>>>0>=o>>>0);if(m){w=o+-4|0;c[w>>2]=m;m=w}else m=o}else m=o;a:do if(l>>>0>m>>>0){j=l;while(1){l=j+-4|0;if(c[l>>2]|0){l=j;break a}if(l>>>0>m>>>0)j=l;else break}}while(0);j=(c[u>>2]|0)-n|0;c[u>>2]=j;if((j|0)>0)o=m;else break}}else m=z;if((j|0)<0){g=((k+25|0)/9|0)+1|0;s=(t|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{w=c[j>>2]|0;c[j>>2]=(w>>>r)+p;p=B(w&n,o)|0;j=j+4|0}while(j>>>0>>0);m=(c[m>>2]|0)==0?m+4|0:m;if(p){c[l>>2]=p;l=l+4|0}}else m=(c[m>>2]|0)==0?m+4|0:m;j=s?z:m;l=(l-j>>2|0)>(g|0)?j+(g<<2)|0:l;j=(c[u>>2]|0)+r|0;c[u>>2]=j}while((j|0)<0);s=m}else s=m;if(s>>>0>>0){j=(x-s>>2)*9|0;n=c[s>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;v=(t|0)==103;w=(k|0)!=0;m=k-((t|0)==102?0:j)+((w&v)<<31>>31)|0;if((m|0)<(((l-x>>2)*9|0)+-9|0)){u=m+9216|0;m=(u|0)/9|0;g=z+4+(m+-1024<<2)|0;m=u-(m*9|0)|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;p=c[g>>2]|0;m=(p>>>0)/(n>>>0)|0;r=p-(B(m,n)|0)|0;o=(g+4|0)==(l|0);if(!(o&(r|0)==0)){q=(m&1|0)==0?9007199254740992.0:9007199254740994.0;u=n>>>1;e=r>>>0>>0?.5:o&(r|0)==(u|0)?1.0:1.5;if(C){u=(a[A>>0]|0)==45;e=u?-e:e;q=u?-q:q}m=p-r|0;c[g>>2]=m;if(q+e!=q){u=m+n|0;c[g>>2]=u;if(u>>>0>999999999){n=g;j=s;while(1){m=n+-4|0;c[n>>2]=0;if(m>>>0>>0){j=j+-4|0;c[j>>2]=0}u=(c[m>>2]|0)+1|0;c[m>>2]=u;if(u>>>0>999999999)n=m;else{n=j;break}}}else{m=g;n=s}j=(x-n>>2)*9|0;p=c[n>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;j=j+1|0}while(p>>>0>=o>>>0)}}else{m=g;n=s}}else{m=g;n=s}u=m+4|0;l=l>>>0>u>>>0?u:l}else n=s;g=0-j|0;b:do if(l>>>0>n>>>0)while(1){m=l+-4|0;if(c[m>>2]|0){u=l;t=1;break b}if(m>>>0>n>>>0)l=m;else{u=m;t=0;break}}else{u=l;t=0}while(0);do if(v){k=k+((w^1)&1)|0;if((k|0)>(j|0)&(j|0)>-5){o=i+-1|0;k=k+-1-j|0}else{o=i+-2|0;k=k+-1|0}if(!(h&8)){if(t?(y=c[u+-4>>2]|0,(y|0)!=0):0)if(!((y>>>0)%10|0)){m=0;l=10;do{l=l*10|0;m=m+1|0}while(!((y>>>0)%(l>>>0)|0|0))}else m=0;else m=9;l=((u-x>>2)*9|0)+-9|0;if((o|32|0)==102){i=l-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}else{i=l+j-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}}}else o=i;while(0);s=(k|0)!=0;p=s?1:h>>>3&1;r=(o|32|0)==102;if(r){v=0;j=(j|0)>0?j:0}else{l=(j|0)<0?g:j;l=Wx(l,((l|0)<0)<<31>>31,D)|0;m=D;if((m-l|0)<2)do{l=l+-1|0;a[l>>0]=48}while((m-l|0)<2);a[l+-1>>0]=(j>>31&2)+43;j=l+-2|0;a[j>>0]=o;v=j;j=m-j|0}j=C+1+k+p+j|0;Yx(b,32,f,j,h);Rx(b,A,C);Yx(b,48,f,j,h^65536);if(r){p=n>>>0>z>>>0?z:n;r=G+9|0;n=r;o=G+8|0;m=p;do{l=Wx(c[m>>2]|0,0,r)|0;if((m|0)==(p|0)){if((l|0)==(r|0)){a[o>>0]=48;l=o}}else if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,n-l|0);m=m+4|0}while(m>>>0<=z>>>0);if(!((h&8|0)==0&(s^1)))Rx(b,46716,1);if(m>>>0>>0&(k|0)>0)while(1){l=Wx(c[m>>2]|0,0,r)|0;if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}Yx(b,48,k+9|0,9,0)}else{u=t?u:n+4|0;if(n>>>0>>0&(k|0)>-1){g=G+9|0;s=(h&8|0)==0;t=g;p=0-E|0;r=G+8|0;o=n;do{l=Wx(c[o>>2]|0,0,g)|0;if((l|0)==(g|0)){a[r>>0]=48;l=r}do if((o|0)==(n|0)){m=l+1|0;Rx(b,l,1);if(s&(k|0)<1){l=m;break}Rx(b,46716,1);l=m}else{if(l>>>0<=G>>>0)break;aP(G|0,48,l+p|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}while(0);E=t-l|0;Rx(b,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}Yx(b,48,k+18|0,18,0);Rx(b,v,D-v|0)}Yx(b,32,f,j,h^8192)}while(0);zb=H;return ((j|0)<(f|0)?f:j)|0}function Mx(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=(c[b>>2]|0)+(8-1)&~(8-1);d=+g[e>>3];c[b>>2]=e+8;g[a>>3]=d;return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+224|0;p=t+208|0;q=t+160|0;r=t+80|0;s=t;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[p>>2]=c[e>>2];if((Ox(0,d,p,r,q,f,g)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=Px(b)|0;else o=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;h=b+48|0;if(!(c[h>>2]|0)){i=b+44|0;j=c[i>>2]|0;c[i>>2]=s;k=b+28|0;c[k>>2]=s;l=b+20|0;c[l>>2]=s;c[h>>2]=80;m=b+16|0;c[m>>2]=s+80;e=Ox(b,d,p,r,q,f,g)|0;if(j){Jb[c[b+36>>2]&63](b,0,0)|0;e=(c[l>>2]|0)==0?-1:e;c[i>>2]=j;c[h>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else e=Ox(b,d,p,r,q,f,g)|0;h=c[b>>2]|0;c[b>>2]=h|n;if(o|0)Qx(b);e=(h&32|0)==0?e:-1}zb=t;return e|0}function Ox(d,e,f,h,i,j,k){d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0;J=zb;zb=zb+64|0;G=J+56|0;I=J+40|0;A=J;C=J+48|0;D=J+60|0;c[G>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=C+4|0;l=0;e=0;n=0;a:while(1){do{do if((e|0)>-1)if((l|0)>(2147483647-e|0)){e=ox()|0;c[e>>2]=61;e=-1;break}else{e=l+e|0;break}while(0);r=c[G>>2]|0;l=a[r>>0]|0;if(!(l<<24>>24)){w=92;break a}m=r;b:while(1){switch(l<<24>>24){case 37:{w=10;break b}case 0:{l=m;break b}default:{}}v=m+1|0;c[G>>2]=v;l=a[v>>0]|0;m=v}c:do if((w|0)==10){w=0;l=m;do{if((a[m+1>>0]|0)!=37)break c;l=l+1|0;m=m+2|0;c[G>>2]=m}while((a[m>>0]|0)==37)}while(0);l=l-r|0;if(x)Rx(d,r,l)}while((l|0)!=0);v=(Gx(a[(c[G>>2]|0)+1>>0]|0)|0)==0;m=c[G>>2]|0;if(!v?(a[m+2>>0]|0)==36:0){t=(a[m+1>>0]|0)+-48|0;p=1;l=3}else{t=-1;p=n;l=1}l=m+l|0;c[G>>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0;if(n>>>0>31|(1<>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0}while(!(n>>>0>31|(1<>24==42){if((Gx(a[l+1>>0]|0)|0)!=0?(H=c[G>>2]|0,(a[H+2>>0]|0)==36):0){l=H+1|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;n=1;m=H+3|0}else{if(p|0){e=-1;break}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);l=c[v>>2]|0;c[f>>2]=v+4}else l=0;n=0;m=(c[G>>2]|0)+1|0}c[G>>2]=m;v=(l|0)<0;u=v?0-l|0:l;o=v?o|8192:o;v=n}else{l=Sx(G)|0;if((l|0)<0){e=-1;break}u=l;v=p;m=c[G>>2]|0}do if((a[m>>0]|0)==46){l=m+1|0;if((a[l>>0]|0)!=42){c[G>>2]=l;l=Sx(G)|0;m=c[G>>2]|0;break}if(Gx(a[m+2>>0]|0)|0?(E=c[G>>2]|0,(a[E+3>>0]|0)==36):0){l=E+2|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;m=E+4|0;c[G>>2]=m;break}if(v|0){e=-1;break a}if(x){s=(c[f>>2]|0)+(4-1)&~(4-1);l=c[s>>2]|0;c[f>>2]=s+4}else l=0;m=(c[G>>2]|0)+2|0;c[G>>2]=m}else l=-1;while(0);s=0;while(1){if(((a[m>>0]|0)+-65|0)>>>0>57){e=-1;break a}n=m;m=m+1|0;c[G>>2]=m;n=a[(a[n>>0]|0)+-65+(6208+(s*58|0))>>0]|0;p=n&255;if((p+-1|0)>>>0>=8)break;else s=p}if(!(n<<24>>24)){e=-1;break}q=(t|0)>-1;do if(n<<24>>24==19)if(q){e=-1;break a}else w=54;else{if(q){c[i+(t<<2)>>2]=p;q=h+(t<<3)|0;t=c[q+4>>2]|0;w=I;c[w>>2]=c[q>>2];c[w+4>>2]=t;w=54;break}if(!x){e=0;break a}Tx(I,p,f,k);m=c[G>>2]|0;w=55}while(0);if((w|0)==54){w=0;if(x)w=55;else l=0}d:do if((w|0)==55){w=0;m=a[m+-1>>0]|0;m=(s|0)!=0&(m&15|0)==3?m&-33:m;n=o&-65537;t=(o&8192|0)==0?o:n;e:do switch(m|0){case 110:switch((s&255)<<24>>24){case 0:{c[c[I>>2]>>2]=e;l=0;break d}case 1:{c[c[I>>2]>>2]=e;l=0;break d}case 2:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}case 3:{b[c[I>>2]>>1]=e;l=0;break d}case 4:{a[c[I>>2]>>0]=e;l=0;break d}case 6:{c[c[I>>2]>>2]=e;l=0;break d}case 7:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}default:{l=0;break d}}case 112:{m=120;l=l>>>0>8?l:8;n=t|8;w=67;break}case 88:case 120:{n=t;w=67;break}case 111:{q=I;q=Vx(c[q>>2]|0,c[q+4>>2]|0,y)|0;n=z-q|0;o=0;p=46668;l=(t&8|0)==0|(l|0)>(n|0)?l:n+1|0;n=t;w=73;break}case 105:case 100:{n=I;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){m=PO(0,0,m|0,n|0)|0;n=F()|0;o=I;c[o>>2]=m;c[o+4>>2]=n;o=1;p=46668;w=72;break e}else{o=(t&2049|0)!=0&1;p=(t&2048|0)==0?((t&1|0)==0?46668:46670):46669;w=72;break e}}case 117:{n=I;o=0;p=46668;m=c[n>>2]|0;n=c[n+4>>2]|0;w=72;break}case 99:{a[A>>0]=c[I>>2];r=A;o=0;p=46668;q=1;m=n;l=z;break}case 115:{s=c[I>>2]|0;s=(s|0)==0?46678:s;t=Xx(s,0,l)|0;K=(t|0)==0;r=s;o=0;p=46668;q=K?l:t-s|0;m=n;l=K?s+l|0:t;break}case 67:{c[C>>2]=c[I>>2];c[B>>2]=0;c[I>>2]=C;p=-1;w=79;break}case 83:{if(!l){Yx(d,32,u,0,t);l=0;w=89}else{p=l;w=79}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{l=Hb[j&1](d,+g[I>>3],u,l,t,m)|0;break d}default:{o=0;p=46668;q=l;m=t;l=z}}while(0);f:do if((w|0)==67){q=I;q=Ux(c[q>>2]|0,c[q+4>>2]|0,y,m&32)|0;p=I;p=(n&8|0)==0|(c[p>>2]|0)==0&(c[p+4>>2]|0)==0;o=p?0:2;p=p?46668:46668+(m>>>4)|0;w=73}else if((w|0)==72){q=Wx(m,n,y)|0;n=t;w=73}else if((w|0)==79){w=0;o=c[I>>2]|0;l=0;while(1){m=c[o>>2]|0;if(!m)break;m=Zx(D,m)|0;n=(m|0)<0;if(n|m>>>0>(p-l|0)>>>0){w=83;break}l=m+l|0;if(p>>>0>l>>>0)o=o+4|0;else break}if((w|0)==83){w=0;if(n){e=-1;break a}}Yx(d,32,u,l,t);if(!l){l=0;w=89}else{n=c[I>>2]|0;o=0;while(1){m=c[n>>2]|0;if(!m){w=89;break f}m=Zx(D,m)|0;o=m+o|0;if((o|0)>(l|0)){w=89;break f}Rx(d,D,m);if(o>>>0>=l>>>0){w=89;break}else n=n+4|0}}}while(0);if((w|0)==73){w=0;m=I;m=(c[m>>2]|0)!=0|(c[m+4>>2]|0)!=0;K=(l|0)!=0|m;m=z-q+((m^1)&1)|0;r=K?q:y;q=K?((l|0)>(m|0)?l:m):0;m=(l|0)>-1?n&-65537:n;l=z}else if((w|0)==89){w=0;Yx(d,32,u,l,t^8192);l=(u|0)>(l|0)?u:l;break}t=l-r|0;s=(q|0)<(t|0)?t:q;K=s+o|0;l=(u|0)<(K|0)?K:u;Yx(d,32,l,K,m);Rx(d,p,o);Yx(d,48,l,K,m^65536);Yx(d,48,s,t,0);Rx(d,r,t);Yx(d,32,l,K,m^8192)}while(0);n=v}g:do if((w|0)==92)if(!d)if(!n)e=0;else{e=1;while(1){l=c[i+(e<<2)>>2]|0;if(!l)break;Tx(h+(e<<3)|0,l,f,k);e=e+1|0;if(e>>>0>=10){e=1;break g}}while(1){if(c[i+(e<<2)>>2]|0){e=-1;break g}e=e+1|0;if(e>>>0>=10){e=1;break}}}while(0);zb=J;return e|0}function Px(a){a=a|0;return 1}function Qx(a){a=a|0;return}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))by(b,d,a)|0;return}function Sx(b){b=b|0;var d=0,e=0;if(!(Gx(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((Gx(a[e>>0]|0)|0)!=0)}return d|0}function Tx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);e=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=e;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);h=+g[f>>3];c[d>>2]=f+8;g[a>>3]=h;break a}case 18:{Ub[e&63](a,d);break a}default:break a}while(0);while(0);return}function Ux(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6672+(b&15)>>0]|0|f;b=TO(b|0,c|0,4)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return e|0}function Vx(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=TO(b|0,c|0,3)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return d|0}function Wx(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){do{e=b;b=SO(b|0,c|0,10,0)|0;f=c;c=F()|0;g=NO(b|0,c|0,10,0)|0;g=PO(e|0,f|0,g|0,F()|0)|0;F()|0;d=d+-1|0;a[d>>0]=g&255|48}while(f>>>0>9|(f|0)==9&e>>>0>4294967295);c=b}else c=b;if(c)do{g=c;c=(c>>>0)/10|0;d=d+-1|0;a[d>>0]=g-(c*10|0)|48}while(g>>>0>=10);return d|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else i=16;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)==g<<24>>24)if(!e){i=16;break}else break;f=B(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break c;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break}}else i=11;while(0);if((i|0)==11)if(!e){i=16;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;e=e+-1|0;if(!e){i=16;break}else b=b+1|0}}while(0);if((i|0)==16)b=0;return b|0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;aP(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Rx(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Rx(a,f,e)}zb=g;return}function Zx(a,b){a=a|0;b=b|0;if(!a)a=0;else a=_x(a,b,0)|0;return a|0}function _x(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}e=($x()|0)+188|0;if(!(c[c[e>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}}else b=1;while(0);return b|0}function $x(){return ay()|0}function ay(){return 16020}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(cy(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=Jb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){h=0;g=b}else{i=d;while(1){g=i+-1|0;if((a[b+g>>0]|0)==10)break;if(!g){h=0;g=b;break b}else i=g}f=Jb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}while(0);_O(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function cy(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function dy(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function ey(a,b){a=+a;b=b|0;var d=0,e=0,f=0;g[h>>3]=a;d=c[h>>2]|0;e=c[h+4>>2]|0;f=TO(d|0,e|0,52)|0;F()|0;switch(f&2047){case 0:{if(a!=0.0){a=+ey(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[h>>2]=d;c[h+4>>2]=e&-2146435073|1071644672;a=+g[h>>3]}}return +a}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;_O(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function gy(){return 16264}function hy(){var a=0;a=(iy()|0)+188|0;return ((c[c[a>>2]>>2]|0)==0?1:4)|0}function iy(){return ay()|0}function jy(){return 16268}function ky(){return 16272}function ly(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function my(a){a=a|0;return (((a|32)+-97|0)>>>0<6|(Gx(a)|0)!=0)&1|0}function ny(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ox()|0;c[b>>2]=0-a;a=-1}return a|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=zb;zb=zb+208|0;j=m;k=m+192|0;h=B(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)py(a,d,e,f,j);else ry(a,d,e,k,f,0,j);if((f|0)==1){sy(k,1);f=0;break}else{sy(k,b);f=1;break}}else{py(a,d,e,f,j);qy(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}ry(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{sy(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;qy(k,1);ry(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);sy(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;ry(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=ty(k)|0;qy(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);zb=m;return}function py(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Ib[d&63](h,a)|0)>-1?(Ib[d&63](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Ib[d&63](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);vy(b,l,e);zb=m;return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function ry(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=zb;zb=zb+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Ib[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Ib[d&63](g,j)|0)>-1){i=10;break a}if((Ib[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=ty(m)|0;qy(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Ib[d&63](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){vy(b,n,e);py(a,b,d,f,h)}zb=o;return}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=uy(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function uy(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function vy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=zb;zb=zb+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;_O(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;_O(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);zb=h;return}function wy(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[10528+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=10624;else{b=f;g=5}if((g|0)==5){f=10624;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return xy(f,c[e+20>>2]|0)|0}function xy(a,b){a=a|0;b=b|0;return yy(a,b)|0}function yy(a,b){a=a|0;b=b|0;if(!b)b=0;else b=zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Ay(c[b+8>>2]|0,o)|0;f=Ay(c[b+12>>2]|0,o)|0;g=Ay(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Ay(c[b+(g<<2)>>2]|0,o)|0;g=Ay(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fx(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Ay(c[b+(f<<2)>>2]|0,o)|0;f=Ay(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Ay(a,b){a=a|0;b=b|0;var c=0;c=WO(a|0)|0;return ((b|0)==0?a:c)|0}function By(a){a=a|0;var b=0;b=(Cy()|0)+188|0;return wy(a,c[b>>2]|0)|0}function Cy(){return ay()|0}function Dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+104|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0}while((zx(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=yx(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;while(1){if((h|32|0)!=(a[46718+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=8){e=8;break}}c:do switch(e&2147483647|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;while(1){if((h|32|0)!=(a[46727+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=3){e=3;break}}}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|0)!=40){if(!(c[n>>2]|0)){g=q;break a}c[o>>2]=(c[o>>2]|0)+-1;g=q;break a}e=1;while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=yx(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=q;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}if(!e){g=q;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=q;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|32|0)==120){g=+Ey(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+Fy(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*r}while(0);return +g}function Ey(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+104|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=0;a:while(1){switch(i|0){case 46:{w=10;break a}case 48:break;default:{p=0;m=j;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=1}if((w|0)==10){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;if((i|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;l=OO(l|0,j|0,-1,-1)|0;j=F()|0}while((i|0)==48);p=1;m=1}else{p=1;m=j;l=0;j=0}}o=0;n=1.0;h=0.0;v=0;s=p;t=m;u=0;m=0;while(1){q=i+-48|0;p=i|32;if(q>>>0>=10){r=(i|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=n;q=v;r=t;l=m;j=u;p=u}else{i=46;break}else w=24}else w=24;if((w|0)==24){w=0;i=(i|0)>57?p+-87|0:q;do if(!((u|0)<0|(u|0)==0&m>>>0<8))if((u|0)<0|(u|0)==0&m>>>0<14){n=n*.0625;k=n;h=h+n*+(i|0);i=v;break}else{i=(o|0)!=0|(i|0)==0;o=i?o:1;k=n;h=i?h:h+n*.5;i=v;break}else{k=n;i=i+(v<<4)|0}while(0);m=OO(m|0,u|0,1,0)|0;q=i;r=1;p=F()|0}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;n=k;v=q;t=r;u=p}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i?(c[y>>2]=(c[y>>2]|0)+-1,!((s|0)==0|i)):0)c[y>>2]=(c[y>>2]|0)+-1}else wx(a,0,0);h=+(f|0)*0.0}else{o=(s|0)==0;p=o?m:l;o=o?u:j;if((u|0)<0|(u|0)==0&m>>>0<8){j=v;l=u;do{j=j<<4;w=m;m=OO(m|0,l|0,1,0)|0;v=l;l=F()|0}while((v|0)<0|(v|0)==0&w>>>0<7);m=j}else m=v;if((i|32|0)==112){j=Gy(a,g)|0;i=F()|0;if((j|0)==0&(i|0)==-2147483648){if(!g){wx(a,0,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=UO(p|0,o|0,2)|0;l=OO(l|0,F()|0,-32,-1)|0;l=OO(l|0,F()|0,j|0,i|0)|0;i=F()|0;if(!m){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=OO(l|0,i|0,-1,-1)|0;i=F()|0}while((j|0)>-1);n=h;m=j}else n=h;y=((b|0)<0)<<31>>31;e=PO(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=OO(e|0,F()|0,l|0,i|0)|0;e=F()|0;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=65;else{j=0;i=84;w=67}else{i=b;w=65}if((w|0)==65)if((i|0)<53){j=i;i=84-i|0;w=67}else{k=0.0;h=+(f|0)}if((w|0)==67){h=+(f|0);k=+Iy(+Hy(1.0,i),h);i=j}f=(m&1|0)==0&(n!=0.0&(i|0)<32);h=(f?0.0:n)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0)){f=ox()|0;c[f>>2]=68}h=+Ky(h,l)}while(0);return +h}function Fy(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0.0;I=zb;zb=zb+512|0;E=I;G=f+e|0;H=0-G|0;D=a+4|0;C=a+104|0;j=0;a:while(1){switch(b|0){case 46:{z=7;break a}case 48:break;default:{v=0;p=j;j=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;j=1}if((z|0)==7){b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48){j=0;b=0;while(1){j=OO(j|0,b|0,-1,-1)|0;o=F()|0;b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48)b=o;else{v=1;p=1;break}}}else{v=1;p=j;j=0;o=0}}c[E>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=E+496|0;w=0;l=0;s=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;j=p;o=n}else break c;else{p=OO(p|0,n|0,1,0)|0;n=F()|0;v=(b|0)!=48;if((l|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=E+(l<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;l=l+(y&1)|0;s=v?p:s;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=31;break b}}b=w;m=(y|0)!=0;z=39}else{w=0;l=0;s=0;m=p;p=0;n=0;z=31}while(0);do if((z|0)==31){A=(v|0)==0;j=A?p:j;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=39;break}else{b=w;z=41;break}m=Gy(a,h)|0;b=F()|0;if((m|0)==0&(b|0)==-2147483648){if(!h){wx(a,0,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}j=OO(m|0,b|0,j|0,o|0)|0;b=w;o=F()|0;z=43}while(0);if((z|0)==39)if(c[C>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m)z=43;else z=42}else z=41;if((z|0)==41)if(m)z=43;else z=42;do if((z|0)==42){H=ox()|0;c[H>>2]=28;wx(a,0,0);i=0.0}else if((z|0)==43){m=c[E>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((j|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&j>>>0>a>>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&j>>>0>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=E+(l<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}l=l+1|0}if((s|0)<9?(s|0)<=(j|0)&(j|0)<18:0){if((j|0)==9){i=+(g|0)*+((c[E>>2]|0)>>>0);break}if((j|0)<9){i=+(g|0)*+((c[E>>2]|0)>>>0)/+(c[12432+(8-j<<2)>>2]|0);break}a=e+27+(B(j,-3)|0)|0;b=c[E>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[12432+(j+-10<<2)>>2]|0);break}}b=(j|0)%9|0;if(!b)m=0;else{s=(j|0)>-1?b:b+9|0;o=c[12432+(8-s<<2)>>2]|0;if(l){p=1e9/(o|0)|0;n=0;m=0;b=0;do{C=E+(b<<2)|0;D=c[C>>2]|0;a=(D>>>0)/(o>>>0)|0;D=D-(B(a,o)|0)|0;a=a+n|0;c[C>>2]=a;n=B(p,D)|0;a=(b|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;b=b+1|0}while((b|0)!=(l|0));if(!n)b=l;else{c[E+(l<<2)>>2]=n;b=l+1|0}}else{m=0;b=0}l=b;j=9-s+j|0}b=0;d:while(1){v=(j|0)<18;w=(j|0)==18;x=E+(m<<2)|0;while(1){if(!v){if(!w)break d;if((c[x>>2]|0)>>>0>=9007199){j=18;break d}}n=0;y=l;l=l+127|0;while(1){p=l&127;o=E+(p<<2)|0;l=UO(c[o>>2]|0,0,29)|0;l=OO(l|0,F()|0,n|0,0)|0;n=F()|0;if(n>>>0>0|(n|0)==0&l>>>0>1e9){s=SO(l|0,n|0,1e9,0)|0;a=NO(s|0,F()|0,1e9,0)|0;l=PO(l|0,n|0,a|0,F()|0)|0;F()|0}else s=0;c[o>>2]=l;a=(p|0)==(m|0);o=(p|0)!=(y+127&127|0)|a?y:(l|0)==0?p:y;if(a)break;else{n=s;y=o;l=p+-1|0}}b=b+-29|0;if(!s)l=y;else break}m=m+127&127;l=o+127&127;n=E+((o+126&127)<<2)|0;if((m|0)==(o|0))c[n>>2]=c[n>>2]|c[E+(l<<2)>>2];else l=y;c[E+(m<<2)>>2]=s;j=j+9|0}e:while(1){w=l+1&127;x=E+((l+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){o=0;while(1){m=o+y&127;if((m|0)==(l|0)){z=92;break}m=c[E+(m<<2)>>2]|0;n=c[16276+(o<<2)>>2]|0;if(m>>>0>>0){z=92;break}if(m>>>0>n>>>0)break;if((o+1|0)>>>0<2)o=1;else{z=92;break}}if((z|0)==92?(z=0,p):0)break e;b=v+b|0;if((y|0)==(l|0))y=l;else break}p=(1<>>v;o=0;m=y;n=y;do{C=E+(n<<2)|0;D=c[C>>2]|0;a=(D>>>v)+o|0;c[C>>2]=a;o=B(D&p,s)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(l|0));if(o|0){if((w|0)!=(m|0))break;c[x>>2]=c[x>>2]|1}}c[E+(l<<2)>>2]=o;l=w}i=0.0;j=l;m=0;do{n=m+y&127;l=j+1&127;if((n|0)==(j|0)){c[E+(l+-1<<2)>>2]=0;j=l}i=i*1.0e9+ +((c[E+(n<<2)>>2]|0)>>>0);m=m+1|0}while((m|0)!=2);u=+(g|0);k=i*u;n=b+53|0;o=n-f|0;p=(o|0)<(e|0);m=p?((o|0)>0?o:0):e;if((m|0)<53){J=+Iy(+Hy(1.0,105-m|0),k);q=+Jy(k,+Hy(1.0,53-m|0));r=J;i=q;q=J+(k-q)}else{r=0.0;i=0.0;q=k}l=y+2&127;if((l|0)!=(j|0)){l=c[E+(l<<2)>>2]|0;do if(l>>>0>=5e8){if((l|0)!=5e8){i=u*.75+i;break}if((y+3&127|0)==(j|0)){i=u*.5+i;break}else{i=u*.75+i;break}}else{if((l|0)==0?(y+3&127|0)==(j|0):0)break;i=u*.25+i}while(0);if((53-m|0)>1?!(+Jy(i,1.0)!=0.0):0)k=i+1.0;else k=i}else k=i;i=q+k-r;do if((n&2147483647|0)>(-2-G|0)){G=!(+t(+i)>=9007199254740992.0);b=b+((G^1)&1)|0;i=G?i:i*.5;if((b+50|0)<=(H|0)?!(k!=0.0&(p&((m|0)!=(o|0)|G))):0)break;H=ox()|0;c[H>>2]=68}while(0);i=+Ky(i,b)}while(0);zb=I;return +i}function Gy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=a+4|0;e=c[i>>2]|0;j=a+104|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;f=d[e>>0]|0}else f=yx(a)|0;switch(f|0){case 43:case 45:{g=(f|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;f=e+-48|0;if((b|0)!=0&f>>>0>9)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;k=14}else k=12;break}default:{g=0;e=f;f=f+-48|0;k=12}}if((k|0)==12)if(f>>>0>9)k=14;else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&(f|0)<214748364);h=((f|0)<0)<<31>>31;if(b>>>0<10){do{l=NO(f|0,h|0,10,0)|0;b=F()|0;e=OO(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=OO(e|0,F()|0,l|0,b|0)|0;h=F()|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&((h|0)<21474836|(h|0)==21474836&f>>>0<2061584302));if(b>>>0<10){do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0}while((e+-48|0)>>>0<10);e=h}else e=h}else e=h;if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;j=(g|0)==0;i=PO(0,0,f|0,e|0)|0;l=F()|0;f=j?f:i;e=j?e:l}if((k|0)==14)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;f=0;e=-2147483648}E(e|0);return f|0}function Hy(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=UO(b+1023|0,0,52)|0;e=F()|0;c[h>>2]=d;c[h+4>>2]=e;return +(a*+g[h>>3])}function Iy(a,b){a=+a;b=+b;return +(+Ex(a,b))}function Jy(a,b){a=+a;b=+b;return +(+Ly(a,b))}function Ky(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function Ly(a,b){a=+a;b=+b;var d=0,e=0,f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g[h>>3]=a;j=c[h>>2]|0;l=c[h+4>>2]|0;g[h>>3]=b;n=c[h>>2]|0;o=c[h+4>>2]|0;e=TO(j|0,l|0,52)|0;F()|0;e=e&2047;m=TO(n|0,o|0,52)|0;F()|0;m=m&2047;p=l&-2147483648;i=UO(n|0,o|0,1)|0;k=F()|0;a:do if(!((i|0)==0&(k|0)==0)?(f=My(b)|0,d=(F()|0)&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=UO(j|0,l|0,1)|0;f=F()|0;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>i>>>0))return +((d|0)==(i|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=UO(j|0,l|0,12)|0;f=F()|0;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=UO(d|0,f|0,1)|0;f=F()|0}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;j=UO(j|0,l|0,1-e|0)|0;i=F()|0}else i=l&1048575|1048576;if(!m){f=UO(n|0,o|0,12)|0;k=F()|0;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=UO(f|0,k|0,1)|0;k=F()|0}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=UO(n|0,o|0,1-d|0)|0;m=d;l=F()|0}else l=o&1048575|1048576;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=j;d=i}j=UO(f|0,d|0,1)|0;i=F()|0;e=e+-1|0;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=i;f=j}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=UO(f|0,d|0,1)|0;d=F()|0;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=OO(f|0,d|0,0,-1048576)|0;d=F()|0;e=UO(e|0,0,52)|0;d=d|(F()|0);e=o|e}else{e=TO(f|0,d|0,1-e|0)|0;d=F()|0}c[h>>2]=e;c[h+4>>2]=d|p;b=+g[h>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function My(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function Ny(a){a=a|0;return 0}function Oy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Py(a,b){a=a|0;b=b|0;return -1|0}function Qy(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ny(_(91,e|0)|0)|0;zb=d;return b|0}function Sy(b,c){b=b|0;c=c|0;b=Ty(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Ty(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Qy(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=B(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Uy(){return}function Vy(a){a=a|0;if(Wy(a)|0)GO(a);return}function Wy(a){a=a|0;return (a|0)!=15980&((a|0)!=0&(a|0)!=55596)&1|0}function Xy(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;h=l;j=(g|0)==0?55624:g;g=c[j>>2]|0;a:do if(!e)if(!g)g=0;else k=19;else{i=(b|0)==0?h:b;if(!f)g=-2;else{if(!g){g=a[e>>0]|0;if(g<<24>>24>-1){c[i>>2]=g&255;g=g<<24>>24!=0&1;break}h=(Yy()|0)+188|0;g=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=g<<24>>24&57343;g=1;break}g=(g&255)+-194|0;if(g>>>0>50){k=19;break}g=c[5728+(g<<2)>>2]|0;h=f+-1|0;if(h){e=e+1|0;k=11}}else{h=f;k=11}b:do if((k|0)==11){b=d[e>>0]|0;m=b>>>3;if((m+-16|m+(g>>26))>>>0>7){k=19;break a}g=b+-128|g<<6;b=h+-1|0;if((g|0)<0)do{e=e+1|0;if(!b)break b;h=a[e>>0]|0;if((h&-64)<<24>>24!=-128){k=19;break a}g=(h&255)+-128|g<<6;b=b+-1|0}while((g|0)<0);c[j>>2]=0;c[i>>2]=g;g=f-b|0;break a}while(0);c[j>>2]=g;g=-2}}while(0);if((k|0)==19){c[j>>2]=0;g=ox()|0;c[g>>2]=25;g=-1}zb=l;return g|0}function Yy(){return ay()|0}function Zy(a,b){a=a|0;b=b|0;return Gx(a)|0}function _y(a,b){a=a|0;b=b|0;return my(a)|0}function $y(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+272|0;m=o;n=o+256|0;do if(!(a[d>>0]|0)){d=Ja(46731)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(12464+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(46738)|0;if(d|0?a[d>>0]|0:0)break;d=46743}while(0);e=0;a:while(1){switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0;if(e>>>0>=15){e=15;break}}f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)l=15;else{k=d;l=16}else{d=46743;l=15}if((l|0)==15)if(!(a[d+1>>0]|0))l=18;else{k=d;l=16}b:do if((l|0)==16)if((Fx(k,46743)|0)!=0?(Fx(k,46751)|0)!=0:0){d=c[13907]|0;if(d|0)do{if(!(Fx(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);U(55632);d=c[13907]|0;c:do if(d|0){while(1){if(!(Fx(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}$(55632);break b}while(0);d:do if(((c[13885]|0)==0?(g=Ja(46757)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=Ty(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){_O(m|0,f|0,g|0)|0;f=m+g|0;a[f>>0]=47;_O(f+1|0,k|0,e|0)|0;a[m+(j+g)>>0]=0;f=V(m|0,n|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){l=41;break d}}d=FO(28)|0;if(!d){Ry(f,c[n>>2]|0)|0;l=41;break}else{c[d>>2]=f;c[d+4>>2]=c[n>>2];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d;break}}else l=41;while(0);if((l|0)==41){d=FO(28)|0;if(d){c[d>>2]=c[3988];c[d+4>>2]=c[3989];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d}}$(55632);d=(b|0)==0&(d|0)==0?15952:d}else{d=k;l=18}while(0);do if((l|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=15952;break}d=0}while(0);zb=o;return d|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+32|0;i=j;a:do if(!(Wy(d)|0)){h=(d|0)!=0;f=0;g=0;do{e=1<>2]|0;else e=$y(g,(e|0)==0?57671:b)|0;f=f+((e|0)!=0&1)|0;c[i+(g<<2)>>2]=e;g=g+1|0}while((g|0)!=6);switch(f&2147483647|0){case 0:{d=55596;break a}case 1:{if((c[i>>2]|0)==15952){d=15980;break a}break}default:{}}}else{e=0;do{if(1<>2]=i}e=e+1|0}while((e|0)!=6)}while(0);zb=j;return d|0}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=Jx(a,b,d,g)|0;zb=f;return e|0}function cz(a,b){a=a|0;b=b|0;dz(a,b)|0;return a|0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function ez(a){a=a|0;var b=0,d=0;b=(fz()|0)+188|0;d=c[b>>2]|0;if(a|0)c[b>>2]=(a|0)==(-1|0)?55572:a;return ((d|0)==55572?-1:d)|0}function fz(){return ay()|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}return a|0}function hz(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function iz(a){a=+a;return ~~+bP(+a)|0}function jz(a){a=a|0;var b=0,c=0;b=(Qy(a)|0)+1|0;c=FO(b)|0;if(!c)a=0;else a=_O(c|0,a|0,b|0)|0;return a|0}function kz(a,b){a=a|0;b=b|0;var c=0;c=Qy(a)|0;return ((lz(a,1,c,b)|0)!=(c|0))<<31>>31|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=B(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Px(e)|0)==0;a=by(a,f,e)|0;if(!g)Qx(e)}else a=by(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function mz(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+132>>2]|0;a=a+128|0;if(b|0)c[b+128>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(nz()|0)+232|0;else a=a+132|0;c[a>>2]=b}return}function nz(){return ay()|0}function oz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(cy(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Jb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);zb=l;return f|0}function pz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(qz()|0)+188|0;b=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[5728+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);b=ox()|0;c[b>>2]=25;b=-1}while(0);zb=j;return b|0}function qz(){return ay()|0}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;if(Sy(46770,a[d>>0]|0)|0){g=sz(d)|0|32768;c[e>>2]=b;c[e+4>>2]=g;c[e+8>>2]=438;e=ny(Y(5,e|0)|0)|0;if((e|0)>=0){b=tz(e,d)|0;if(!b){aa(e|0)|0;b=0}}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}zb=f;return b|0}function sz(b){b=b|0;var c=0,d=0,e=0;d=(Sy(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Sy(b,120)|0)==0;d=e?d:d|128;b=(Sy(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function tz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+48|0;i=j+24|0;g=j+8|0;f=j;h=j+40|0;if(Sy(46770,a[d>>0]|0)|0){e=FO(1176)|0;if(!e)e=0;else{aP(e|0,0,144)|0;k=(Sy(d,43)|0)==0;d=a[d>>0]|0;if(k)c[e>>2]=d<<24>>24==114?8:4;if(d<<24>>24==97){c[f>>2]=b;c[f+4>>2]=3;d=X(221,f|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;X(221,g|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+152;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[i>>2]=b,c[i+4>>2]=21523,c[i+8>>2]=h,(Z(54,i|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=2;c[e+36>>2]=1;c[e+40>>2]=1;c[e+12>>2]=2;if(!(c[13884]|0))c[e+76>>2]=-1;uz(e)|0}}else{e=ox()|0;c[e>>2]=28;e=0}zb=j;return e|0}function uz(a){a=a|0;var b=0,d=0;b=vz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;wz();return a|0}function vz(){U(55640);return 55648}function wz(){$(55640);return}function xz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=Px(a)|0;else f=0;mz(a);g=(c[a>>2]&1|0)!=0;if(!g){e=vz()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;wz()}b=yz(a)|0;b=Gb[c[a+12>>2]&127](a)|0|b;d=c[a+96>>2]|0;if(d|0)GO(d);if(g){if(f|0)Qx(a)}else GO(a);return b|0}function yz(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=zz(a)|0;break}d=(Px(a)|0)==0;b=zz(a)|0;if(!d)Qx(a)}else{if(!(c[4004]|0))b=0;else b=yz(c[4004]|0)|0;a=vz()|0;a=c[a>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Px(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=zz(a)|0|b;if(d|0)Qx(a);a=c[a+56>>2]|0}while((a|0)!=0);wz()}while(0);return b|0}function zz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0){g=e-g|0;Kb[c[a+40>>2]&15](a,g,((g|0)<0)<<31>>31,1)|0;F()|0}c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function Az(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=Px(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)Qx(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;j=Xx(h,10,p)|0;i=(j|0)==0;j=i?p:1-o+j|0;j=j>>>0>>0?j:g;_O(e|0,h|0,j|0)|0;h=(c[k>>2]|0)+j|0;c[k>>2]=h;e=e+j|0;j=g-j|0;if(!(i&(j|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=Ax(f)|0;if((g|0)<0)break;else h=g}else{c[k>>2]=h+1;h=d[h>>0]|0}i=e+1|0;a[e>>0]=h;g=j+-1|0;if((h&255|0)==10|(g|0)==0){e=i;n=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)Qx(f)}return b|0}function Bz(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Dz(a,b,f)|0;zb=e;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+144|0;f=e;aP(f|0,0,144)|0;c[f+32>>2]=35;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+84>>2]=a;d=Fz(f,b,d)|0;zb=e;return d|0}function Ez(a,b,c){a=a|0;b=b|0;c=c|0;return Jz(a,b,c)|0}function Fz(e,h,i){e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=zb;zb=zb+288|0;K=Q+264|0;L=Q;M=Q+260|0;N=Q+272|0;if((c[e+76>>2]|0)>-1)P=Px(e)|0;else P=0;j=a[h>>0]|0;a:do if(j<<24>>24){B=e+4|0;C=e+104|0;D=e+120|0;E=e+8|0;G=L+10|0;H=L+33|0;I=L+46|0;J=L+94|0;A=K+4|0;m=h;h=0;k=0;l=j;j=0;u=0;v=0;b:while(1){c:do if(!(zx(l&255)|0)){n=(a[m>>0]|0)==37;d:do if(n){l=m+1|0;o=a[l>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{z=0;l=m+2|0;break}default:{if(Gx(o&255)|0?(a[m+2>>0]|0)==36:0){z=Gz(i,(d[l>>0]|0)+-48|0)|0;l=m+3|0;break e}y=(c[i>>2]|0)+(4-1)&~(4-1);z=c[y>>2]|0;c[i>>2]=y+4}}while(0);if(!(Gx(d[l>>0]|0)|0)){r=0;o=l}else{m=0;do{m=(m*10|0)+-48+(d[l>>0]|0)|0;l=l+1|0}while((Gx(d[l>>0]|0)|0)!=0);r=m;o=l}n=a[o>>0]|0;q=o+1|0;if(n<<24>>24==109){l=(z|0)!=0&1;k=0;m=q;o=o+2|0;n=a[q>>0]|0;j=0}else{l=0;m=o;o=q}switch(n<<24>>24){case 104:{y=(a[o>>0]|0)==104;n=y?-2:-1;m=y?m+2|0:o;break}case 108:{y=(a[o>>0]|0)==108;n=y?3:1;m=y?m+2|0:o;break}case 106:{n=3;m=o;break}case 116:case 122:{n=1;m=o;break}case 76:{n=2;m=o;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=143;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:n;q=s&255;switch(q<<24>>24){case 99:{y=(r|0)>1?r:1;break}case 91:{y=r;break}case 110:{Hz(z,t,u,v);n=u;o=v;break c}default:{wx(e,0,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=yx(e)|0}while((zx(n)|0)!=0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}x=D;y=n-(c[E>>2]|0)|0;u=OO(c[x>>2]|0,c[x+4>>2]|0,u|0,v|0)|0;u=OO(u|0,F()|0,y|0,((y|0)<0)<<31>>31|0)|0;y=r;v=F()|0}}x=((y|0)<0)<<31>>31;wx(e,y,x);o=c[B>>2]|0;n=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((yx(e)|0)<0){O=143;break b}n=c[C>>2]|0}if(n|0)c[B>>2]=(c[B>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{w=(s|0)==99;g:do if((s|16|0)==115){aP(L|0,-1,257)|0;a[L>>0]=0;if((s|0)==115){a[H>>0]=0;b[G>>1]=0;b[G+2>>1]=0;a[G+4>>0]=0}}else{s=m+1|0;r=(a[s>>0]|0)==94;n=r&1;m=r?m+2|0:s;aP(L|0,n|0,257)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{q=(n^1)&255;a[I>>0]=q;m=m+1|0;break}case 93:{q=(n^1)&255;a[J>>0]=q;m=m+1|0;break}default:q=(n^1)&255}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=143;break b}case 93:break g;case 45:{o=m+1|0;n=a[o>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=q;n=a[o>>0]|0}while(m>>>0<(n&255)>>>0);m=o}else m=o;break}default:{}}while(0);a[L+((n&255)+1)>>0]=q;m=m+1|0}}while(0);n=w?y+1|0:31;s=(t|0)==1;t=(l|0)!=0;i:do if(s){if(t){j=FO(n<<2)|0;if(!j){k=0;j=0;O=143;break b}}else j=z;c[K>>2]=0;c[A>>2]=0;k=0;j:while(1){q=(j|0)==0;do{k:while(1){o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=yx(e)|0;if(!(a[L+(o+1)>>0]|0))break j;a[N>>0]=o;switch(Xy(M,N,1,K)|0){case -1:{k=0;O=143;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(t&(k|0)==(n|0)));n=n<<1|1;o=IO(j,n<<2)|0;if(!o){k=0;O=143;break b}else j=o}if(!(Iz(K)|0)){k=0;O=143;break b}else{q=k;k=0;r=j}}else{if(t){k=FO(n)|0;if(!k){k=0;j=0;O=143;break b}j=0;while(1){q=j;do{j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){r=0;j=0;break i}r=q;q=q+1|0;a[k+r>>0]=j}while((q|0)!=(n|0));n=n<<1|1;o=IO(k,n)|0;if(!o){j=0;O=143;break b}else{j=q;k=o}}}if(!z)while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=0;k=0;r=0;j=0;break i}}k=0;while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=k;k=z;r=0;j=0;break i}a[z+k>>0]=j;k=k+1|0}}while(0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}o=D;n=n-(c[E>>2]|0)|0;n=OO(c[o>>2]|0,c[o+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0;if((n|0)==0&(o|0)==0)break b;if(!((n|0)==(y|0)&(o|0)==(x|0)|w^1))break b;do if(t)if(s){c[z>>2]=r;break}else{c[z>>2]=k;break}while(0);if(!w){if(r|0)c[r+(q<<2)>>2]=0;if(!k){k=0;break f}a[k+q>>0]=0}break}case 120:case 88:case 112:{n=16;O=131;break}case 111:{n=8;O=131;break}case 117:case 100:{n=10;O=131;break}case 105:{n=0;O=131;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Dy(e,t,0);y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if(z)switch(t|0){case 0:{f[z>>2]=p;break f}case 1:{g[z>>3]=p;break f}case 2:{g[z>>3]=p;break f}default:break f}break}default:{}}while(0);do if((O|0)==131){O=0;n=xx(e,n,0,-1,-1)|0;o=F()|0;y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if((z|0)!=0&(s|0)==112){c[z>>2]=n;break}else{Hz(z,t,n,o);break}}while(0);o=D;n=(c[B>>2]|0)-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=h+((z|0)!=0&1)|0;o=F()|0;break c}while(0);m=m+(n&1)|0;wx(e,0,0);l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0;if((l|0)!=(d[m>>0]|0)){O=23;break b}n=OO(u|0,v|0,1,0)|0;o=F()|0}else{while(1){l=m+1|0;if(!(zx(d[l>>0]|0)|0))break;else m=l}wx(e,0,0);do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0}while((zx(l)|0)!=0);if(!(c[C>>2]|0))l=c[B>>2]|0;else{l=(c[B>>2]|0)+-1|0;c[B>>2]=l}o=D;n=l-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0}while(0);m=m+1|0;l=a[m>>0]|0;if(!(l<<24>>24))break a;else{u=n;v=o}}if((O|0)==23){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((h|0)!=0|(l|0)>-1)break;else{l=0;h=k;O=144}}else if((O|0)==143)if(!h){h=k;O=144}if((O|0)==144){k=h;h=-1}if(l){GO(k);GO(j)}}else h=0;while(0);if(P|0)Qx(e);zb=Q;return h|0}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}zb=e;return a|0}function Hz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function Iz(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=Xx(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;_O(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;return Mz(a,b,((b|0)<0)<<31>>31,c)|0}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Kx(a,b,f)|0;zb=e;return d|0}function Mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+76>>2]|0)>-1){f=(Px(a)|0)==0;b=Nz(a,b,d,e)|0;if(!f)Qx(a)}else b=Nz(a,b,d,e)|0;return b|0}function Nz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((e|0)==1){g=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;b=PO(b|0,d|0,g|0,((g|0)<0)<<31>>31|0)|0;d=F()|0}f=a+20|0;g=a+28|0;if((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[g>>2]=0;c[f>>2]=0;Kb[c[a+40>>2]&15](a,b,d,e)|0;if((F()|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function Oz(a,b){a=a|0;b=b|0;return Pz(a,b,(Qy(a)|0)+1|0)|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return Xy(0,a,b,(c|0)==0?55652:c)|0}function Rz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+1040|0;k=n;l=n+1024|0;j=c[b>>2]|0;c[l>>2]=j;m=(a|0)!=0;h=m?e:256;i=m?a:k;g=j;a:do if((h|0)!=0&(j|0)!=0){e=0;j=i;while(1){a=d>>>2;i=a>>>0>=h>>>0;if(!(d>>>0>131|i)){i=j;break a}a=i?h:a;d=d-a|0;a=Sz(j,l,a,f)|0;if((a|0)==-1)break;i=(j|0)==(k|0);h=h-(i?0:a)|0;i=i?j:j+(a<<2)|0;e=a+e|0;g=c[l>>2]|0;if((h|0)!=0&(g|0)!=0)j=i;else break a}e=-1;i=j;h=0;g=c[l>>2]|0}else e=0;while(0);b:do if((g|0)!=0?(h|0)!=0&(d|0)!=0:0){while(1){a=Xy(i,g,d,f)|0;if((a+2|0)>>>0<3)break;g=(c[l>>2]|0)+a|0;c[l>>2]=g;d=d-a|0;h=h+-1|0;e=e+1|0;if(!((h|0)!=0&(d|0)!=0))break b;else i=i+4|0}switch(a|0){case -1:{e=a;break b}case 0:{c[l>>2]=0;break b}default:{c[f>>2]=0;break b}}}while(0);if(m)c[b>>2]=c[l>>2];zb=n;return e|0}function Sz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){j=h;g=f;l=26}else{c[g>>2]=0;k=f;j=h;l=48}else l=5;a:do if((l|0)==5){l=(Tz()|0)+188|0;g=(b|0)!=0;if(c[c[l>>2]>>2]|0)if(g){g=f;l=33;break}else{g=f;l=15;break}if(!g){f=Qy(h)|0;l=63;break}b:do if(f){g=f;while(1){i=a[h>>0]|0;if(!(i<<24>>24))break;h=h+1|0;c[b>>2]=i<<24>>24&57343;g=g+-1|0;if(!g)break b;else b=b+4|0}c[b>>2]=0;c[e>>2]=0;f=f-g|0;l=63;break a}while(0);c[e>>2]=h;l=63}while(0);c:while(1){d:do if((l|0)==15){while(1){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){l=c[h>>2]|0;i=l&255;if(!((l+-16843009|l)&-2139062144)){do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(!((i+-16843009|i)&-2139062144|0));i=i&255}}i=i&255;if((i+-1|0)>>>0>=127)break;g=g+-1|0;h=h+1|0}i=i+-194|0;if(i>>>0>50)l=57;else{i=c[5728+(i<<2)>>2]|0;j=h+1|0;l=26;continue c}}else if((l|0)==26){l=(d[j>>0]|0)>>>3;if((l+-16|l+(i>>26))>>>0>7){h=j;l=56}else{h=j+1|0;if(i&33554432){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+2|0;if(i&524288){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+3|0}}g=g+-1|0;l=15;continue c}}else if((l|0)==33){l=0;e:do if(g){while(1){i=d[h>>0]|0;j=i+-1|0;if(j>>>0<127){if((h&3|0)==0&g>>>0>4){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144|0){l=42;break}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];j=h+4|0;i=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=i;h=j}else{l=41;break}}if((l|0)==41){b=i;h=j;i=a[j>>0]|0}else if((l|0)==42)i=i&255;i=i&255;j=i+-1|0;l=44}}else l=44;if((l|0)==44){l=0;if(j>>>0>=127)break}h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g)break e;else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=57;break d}i=c[5728+(i<<2)>>2]|0;k=g;j=h+1|0;l=48;continue c}while(0);c[e>>2]=h;l=63;continue c}else if((l|0)==48){l=0;g=d[j>>0]|0;h=g>>>3;if((h+-16|h+(i>>26))>>>0>7){h=j;g=k;l=56}else{h=j+1|0;g=g+-128|i<<6;do if((g|0)<0){i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+2|0;g=i|g<<6;if((g|0)>=0)break;i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+3|0;g=i|g<<6;break}}h=ox()|0;c[h>>2]=25;h=j+-1|0;break d}while(0);c[b>>2]=g;b=b+4|0;g=k+-1|0;l=33;continue c}}else if((l|0)==63)return f|0;while(0);if((l|0)==56){h=h+-1|0;if(!i)l=57;else{f=b;l=61}}if((l|0)==57)if(!(a[h>>0]|0)){if(b|0){c[b>>2]=0;c[e>>2]=0}f=f-g|0;l=63;continue}else{f=b;l=61}if((l|0)==61){l=ox()|0;c[l>>2]=25;if(!f){f=-1;l=63;continue}}c[e>>2]=h;f=-1;l=63}return 0}function Tz(){return ay()|0}function Uz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+272|0;i=l;j=l+256|0;f=c[b>>2]|0;c[j>>2]=f;k=(a|0)!=0;g=k?e:256;h=k?a:i;e=f;a:do if((g|0)!=0&(f|0)!=0){f=0;a=e;while(1){e=d>>>0>=g>>>0;if(!(e|d>>>0>32)){e=a;break a}e=e?g:d;d=d-e|0;e=Vz(h,j,e,0)|0;if((e|0)==-1)break;a=(h|0)==(i|0);g=g-(a?0:e)|0;h=a?h:h+e|0;f=e+f|0;e=c[j>>2]|0;if((g|0)!=0&(e|0)!=0)a=e;else break a}f=-1;g=0;e=c[j>>2]|0}else f=0;while(0);b:do if((e|0)!=0?(g|0)!=0&(d|0)!=0:0){while(1){a=_x(h,c[e>>2]|0,0)|0;if((a+1|0)>>>0<2)break;e=(c[j>>2]|0)+4|0;c[j>>2]=e;d=d+-1|0;g=g-a|0;f=a+f|0;if(!((g|0)!=0&(d|0)!=0))break b;else h=h+a|0}if(!a)c[j>>2]=0;else f=-1}while(0);if(k)c[b>>2]=c[j>>2];zb=l;return f|0}function Vz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;a:do if(!b){e=c[d>>2]|0;f=c[e>>2]|0;if(!f)e=0;else{b=e;e=0;do{if(f>>>0>127){f=_x(i,f,0)|0;if((f|0)==-1){e=-1;break a}}else f=1;e=f+e|0;b=b+4|0;f=c[b>>2]|0}while((f|0)!=0)}}else{b:do if(e>>>0>3){f=e;g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h)break;h=_x(b,h,0)|0;if((h|0)==-1){e=-1;break a}b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(f>>>0<=3)break b}a[b>>0]=0;c[d>>2]=0;e=e-f|0;break a}else f=e;while(0);if(f){g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){g=20;break}h=_x(i,h,0)|0;if((h|0)==-1){e=-1;break a}if(f>>>0>>0){g=23;break}_x(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f)break a}if((g|0)==20){a[b>>0]=0;c[d>>2]=0;e=e-f|0;break}else if((g|0)==23){e=e-f|0;break}}}while(0);zb=j;return e|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;Xz(a,b,c)|0;return a|0}function Xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);aP(b|0,0,e|0)|0;return b|0}function Yz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{i=e&255;h=f+(i>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(i&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{i=e&255;if(!(c[f+(i>>>5<<2)>>2]&1<<(i&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);zb=g;return d|0}function Zz(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(Px(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=Ax(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=Ax(a)|0;break}}while(0);return b|0}function _z(a){a=a|0;var b=0;b=54792;c[b>>2]=a+-1;c[b+4>>2]=0;return}function $z(){var a=0,b=0,d=0;b=54792;b=NO(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=OO(b|0,F()|0,1,0)|0;a=F()|0;d=54792;c[d>>2]=b;c[d+4>>2]=a;a=TO(b|0,a|0,33)|0;F()|0;return a|0}function aA(a,b){a=a|0;b=b|0;cz(a+(Qy(a)|0)|0,b)|0;return a|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=zb;zb=zb+16|0;e=h;c[e>>2]=c[d>>2];e=Jx(0,0,b,e)|0;if((e|0)>=0?(f=e+1|0,g=FO(f)|0,c[a>>2]=g,(g|0)!=0):0)a=Jx(g,f,b,d)|0;else a=-1;zb=h;return a|0}function cA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if((b|0)!=-1){if((c[d+76>>2]|0)>-1)g=Px(d)|0;else g=0;h=d+4|0;e=c[h>>2]|0;if(!e){Bx(d)|0;e=c[h>>2]|0;if(e|0){f=e;i=6}}else{f=e;i=6}if((i|0)==6?f>>>0>((c[d+44>>2]|0)+-8|0)>>>0:0){i=f+-1|0;c[h>>2]=i;a[i>>0]=b;c[d>>2]=c[d>>2]&-17;if(!g)break;Qx(d);break}if(g){Qx(d);b=-1}else b=-1}else b=-1;while(0);return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;if((c[a+76>>2]|0)>-1){e=(Px(a)|0)==0;d=eA(a)|0;b=F()|0;if(e)a=d;else{Qx(a);a=d}}else{a=eA(a)|0;b=F()|0}E(b|0);return a|0}function eA(a){a=a|0;var b=0,d=0,e=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Kb[c[a+40>>2]&15](a,0,0,b)|0;d=F()|0;if((d|0)>=0){e=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;e=PO(b|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=F()|0;b=(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;b=OO(e|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;d=F()|0}E(d|0);return b|0}function fA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Px(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=oz(d,b)|0;Qx(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=oz(d,b)|0}while(0);return e|0}function gA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=B(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=Px(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;_O(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(Bx(f)|0)break;h=Jb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)Qx(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)Qx(f);return e|0}function hA(a){a=a|0;var b=0;a=dA(a)|0;b=F()|0;if((b|0)>0|(b|0)==0&a>>>0>2147483647){a=ox()|0;c[a>>2]=61;a=-1}return a|0}function iA(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Qx(a)}else{Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function jA(a,b){a=a|0;b=b|0;return +(+kA(a,b,1))}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,i=0;g=zb;zb=zb+144|0;e=g;aP(e|0,0,144)|0;i=e+4|0;c[i>>2]=a;h=e+8|0;c[h>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;wx(e,0,0);f=+Dy(e,d,1);e=e+120|0;d=(c[i>>2]|0)-(c[h>>2]|0)|0;d=OO(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;e=F()|0;if(b|0)c[b>>2]=(d|0)==0&(e|0)==0?a:a+d|0;zb=g;return +f}function lA(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(zx(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(Gx(b)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Gx(a[c>>0]|0)|0)!=0)}return ((g|0)==0?0-b|0:b)|0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=zb;zb=zb+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){aP(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ty(b,e<<24>>24)|0;zb=h;return e-b|0}function nA(a,b){a=a|0;b=b|0;return +(+kA(a,b,0))}function oA(a,b){a=a|0;b=b|0;return +(+kA(a,b,2))}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+nA(a,b))}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+jA(a,b))}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+oA(a,b))}function sA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Qy(b)|0)|0;a:do if(d)while(1){g=a[c>>0]|0;if(!(g<<24>>24))break a;d=d+-1|0;f=e+1|0;a[e>>0]=g;if(!d){e=f;break}else{c=c+1|0;e=f}}while(0);a[e>>0]=0;return b|0}function tA(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[13914]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(Yz(b,d)|0)|0;if(!(a[b>>0]|0)){c[13914]=0;b=0;break}d=b+(mA(b,d)|0)|0;c[13914]=d;if(!(a[d>>0]|0)){c[13914]=0;break}else{c[13914]=d+1;a[d>>0]=0;break}}while(0);return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}return a|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(a-b>>2>>>0>=d>>>0){if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}}else do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}function wA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;e=zb;zb=zb+48|0;g=e+32|0;b=e+24|0;h=e+16|0;f=e;e=e+36|0;a=xA()|0;if(a|0?(d=c[a>>2]|0,d|0):0){a=d+48|0;if(!(yA(a)|0)){c[b>>2]=46910;AA(46860,b)}b=zA(a)|0;if((b|0)==1126902529&(F()|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Jb[c[(c[3470]|0)+16>>2]&63](13880,d,e)|0){h=c[e>>2]|0;h=Gb[c[(c[h>>2]|0)+8>>2]&127](h)|0;c[f>>2]=46910;c[f+4>>2]=a;c[f+8>>2]=h;AA(46774,f)}else{c[h>>2]=46910;c[h+4>>2]=a;AA(46819,h)}}AA(46898,g)}function xA(){return 55660}function yA(a){a=a|0;return 0}function zA(a){a=a|0;E(0);return 0}function AA(a,b){a=a|0;b=b|0;var d=0;d=zb;zb=zb+16|0;c[d>>2]=b;b=c[4001]|0;Kx(b,a,d)|0;fA(10,b)|0;ua()}function BA(a){a=a|0;return}function CA(a){a=a|0;BA(a);SA(a);return}function DA(a){a=a|0;return}function EA(a){a=a|0;return}function FA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+64|0;j=l;if(!(JA(d,e,0)|0))if((e|0)!=0?(k=NA(e,13904,13888,0)|0,(k|0)!=0):0){c[j>>2]=k;c[j+4>>2]=0;c[j+8>>2]=d;c[j+12>>2]=-1;d=j+16|0;e=j+24|0;g=j+48|0;h=d;i=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));b[d+36>>1]=0;a[d+38>>0]=0;c[g>>2]=1;Xb[c[(c[k>>2]|0)+28>>2]&31](k,j,c[f>>2]|0,1);if((c[e>>2]|0)==1){c[f>>2]=c[d>>2];d=1}else d=0}else d=0;else d=1;zb=l;return d|0}function GA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);return}function HA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(JA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}else LA(0,d,e,f);while(0);return}function IA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;if(d)a=(Fx(c[a+4>>2]|0,c[b+4>>2]|0)|0)==0;else a=(a|0)==(b|0);return a|0}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[b+4>>2]|0)==(d|0)?(f=b+28|0,(c[f>>2]|0)!=1):0)c[f>>2]=e;return}function MA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((f|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if((b|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function NA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;n=p;m=c[d>>2]|0;o=d+(c[m+-8>>2]|0)|0;m=c[m+-4>>2]|0;c[n>>2]=f;c[n+4>>2]=d;c[n+8>>2]=e;c[n+12>>2]=g;d=n+16|0;e=n+20|0;g=n+24|0;h=n+28|0;i=n+32|0;j=n+40|0;k=d;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[d+36>>1]=0;a[d+38>>0]=0;a:do if(JA(m,f,0)|0){c[n+48>>2]=1;Zb[c[(c[m>>2]|0)+20>>2]&7](m,n,o,o,1,0);d=(c[g>>2]|0)==1?o:0}else{Yb[c[(c[m>>2]|0)+24>>2]&63](m,n,o,1,0);switch(c[n+36>>2]|0){case 0:{d=(c[j>>2]|0)==1&(c[h>>2]|0)==1&(c[i>>2]|0)==1?c[e>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((c[g>>2]|0)!=1?!((c[j>>2]|0)==0&(c[h>>2]|0)==1&(c[i>>2]|0)==1):0){d=0;break}d=c[d>>2]|0}while(0);zb=p;return d|0}function OA(a){a=a|0;BA(a);SA(a);return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);else{a=c[a+8>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e,f,g)}return}function QA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){i=c[b+8>>2]|0;Yb[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;do if((c[f>>2]|0)!=4){h=d+52|0;a[h>>0]=0;j=d+53|0;a[j>>0]=0;b=c[b+8>>2]|0;Zb[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if(a[j>>0]|0){j=(a[h>>0]|0)==0;c[f>>2]=3;if(j)break;else break a}else{c[f>>2]=4;break}}while(0);c[i>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function RA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);else{a=c[a+8>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d,e)}return}function SA(a){a=a|0;GO(a);return}function TA(a){a=a|0;return}function UA(){var a=0,b=0;a=xA()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?yA(b+48|0)|0:0)VA(c[b+12>>2]|0);VA(WA()|0)}function VA(a){a=a|0;var b=0;b=zb;zb=zb+16|0;Rb[a&1]();AA(47049,b)}function WA(){return 1}function XA(a){a=a|0;return}function YA(a){a=a|0;c[a>>2]=16372;aB(a+4|0);return}function ZA(a){a=a|0;YA(a);SA(a);return}function _A(a){a=a|0;return $A(a+4|0)|0}function $A(a){a=a|0;return c[a>>2]|0}function aB(a){a=a|0;var b=0,d=0;if(bB(a)|0?(b=cB(c[a>>2]|0)|0,d=b+8|0,a=c[d>>2]|0,c[d>>2]=a+-1,(a|0)<1):0)SA(b);return}function bB(a){a=a|0;return 1}function cB(a){a=a|0;return a+-12|0}function dB(a){a=a|0;YA(a);SA(a);return}function eB(a){a=a|0;BA(a);SA(a);return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;return JA(a,b,0)|0}function gB(a){a=a|0;BA(a);SA(a);return}function hB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(JA(b,c[d+8>>2]|0,h)|0)MA(0,d,e,f,g);else{r=d+52|0;j=a[r>>0]|0;q=d+53|0;i=a[q>>0]|0;p=c[b+12>>2]|0;m=b+16+(p<<3)|0;a[r>>0]=0;a[q>>0]=0;lB(b+16|0,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;a:do if((p|0)>1){n=d+24|0;o=b+8|0;p=d+54|0;b=b+24|0;do{i=i&1;j=j&1;if(a[p>>0]|0)break a;if(!(k<<24>>24)){if(l<<24>>24?(c[o>>2]&1|0)==0:0)break a}else{if((c[n>>2]|0)==1)break a;if(!(c[o>>2]&2))break a}a[r>>0]=0;a[q>>0]=0;lB(b,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;b=b+8|0}while(b>>>0>>0)}while(0);a[r>>0]=j<<24>>24!=0&1;a[q>>0]=i<<24>>24!=0&1}return}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){p=c[b+12>>2]|0;k=b+16+(p<<3)|0;mB(b+16|0,d,e,f,g);h=b+24|0;if((p|0)<=1)break;b=c[b+8>>2]|0;if((b&2|0)==0?(j=d+36|0,(c[j>>2]|0)!=1):0){if(!(b&1)){b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[j>>2]|0)==1)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+24|0;i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[j>>2]|0)==1?(c[b>>2]|0)==1:0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+54|0;while(1){if(a[b>>0]|0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;o=d+44|0;if((c[o>>2]|0)!=4){j=b+16+(c[b+12>>2]<<3)|0;k=d+52|0;f=d+53|0;l=d+54|0;m=b+8|0;n=d+24|0;h=0;i=b+16|0;b=0;b:while(1){if(i>>>0>=j>>>0){i=18;break}a[k>>0]=0;a[f>>0]=0;lB(i,d,e,e,1,g);if(a[l>>0]|0){i=18;break}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[m>>2]&1)){i=19;break b}else{b=1;break}if((c[n>>2]|0)==1){h=1;i=19;break b}if(!(c[m>>2]&2)){h=1;i=19;break b}else{h=1;b=1}}while(0);i=i+8|0}if((i|0)==18)if(b)i=19;else b=4;if((i|0)==19)b=3;c[o>>2]=b;if(h&1)break}c[p>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function jB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if(!(JA(b,c[d+8>>2]|0,0)|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;kB(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{kB(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else KA(0,d,e,f);while(0);return}function kB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;if(d){f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0}else f=0;a=c[a>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d+f|0,(g&2|0)==0?2:e);return}function lB(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e+h|0,(i&2|0)==0?2:f,g);return} +function $b(a){a=a|0;var b=0;b=zb;zb=zb+a|0;zb=zb+15&-16;return b|0}function ac(){return zb|0}function bc(a){a=a|0;zb=a}function cc(a,b){a=a|0;b=b|0;zb=a;Ab=b}function dc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0))b[k>>1]=0;else{a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function ec(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0))b[l>>1]=0;else{a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function fc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0))b[r>>1]=0;else{l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function gc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0)){a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}else b[k>>1]=0;while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function hc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0)){a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}else b[l>>1]=0;while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function ic(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0)){l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}else b[r>>1]=0;while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function jc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){b[e>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function kc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){b[e>>1]=0;a[t>>0]=0}else{a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function lc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){b[t>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function mc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}else{b[e>>1]=0;a[s>>0]=0}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function nc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}else{b[e>>1]=0;a[t>>0]=0}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function oc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}else{b[t>>1]=0;a[s>>0]=0}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function pc(a){a=a|0;return qc(a+8|0)|0}function qc(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(4)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=Ee(a)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function rc(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{Fe(b)|0;GO(c[a>>2]|0);c[a>>2]=0;a=0}return a|0}function sc(a){a=a|0;var b=0,d=0,e=0;d=zb;zb=zb+16|0;b=FO(7062432)|0;if(!b){Ue(0,3,41858,d);Ea(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;g[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=FO(B(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Ue(0,3,41858,d+8|0);Ea(1)}else{c[b+7062384>>2]=0;tc(b,0)|0;c[b+7062388>>2]=-1;uc(b,0)|0;vc(b,7)|0;zb=d;return b|0}return 0}function tc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;GO(c[d>>2]|0);c[d>>2]=0;d=0;break}b=FO(B(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Ue(0,3,41858,e);Ea(1)}else d=0}else d=0;else d=-1;while(0);zb=f;return d|0}function uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;f=i;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e|0){Zc(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{f=Yc(c[a+36>>2]|0,c[a+40>>2]|0)|0;c[d>>2]=f;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:break;default:{Ue(0,3,19740,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[16+(b<<2)>>2];Ue(0,3,19814,h);b=0}else b=0}else b=0}else b=-1;zb=i;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062392>>2]=b;c[a+7062396>>2]=0;a=0}return a|0}function wc(a){a=a|0;var b=0,d=0;if(!a)a=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d|0){Zc(d);c[b>>2]=0}GO(c[a+4834144>>2]|0);GO(c[a+4834148>>2]|0);GO(a);a=0}return a|0}function xc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function yc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function zc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ac(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Bc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Cc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Dc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Ec(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Fc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function Gc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function Hc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function Ic(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function Jc(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){g[a+7062416>>3]=b;a=0}else a=-1;return a|0}function Kc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{g[b>>3]=+g[a+7062416>>3];a=0}return a|0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;a:do if(a){d=a+4|0;if((c[d>>2]|0)!=(b|0)){if(b>>>0>=15){c[e>>2]=b;Ue(0,3,19909,e);a=-1;break}c[d>>2]=b;d=zd(b)|0;c[a+8>>2]=d;a=a+24|0;d=c[a>>2]|0;if(!(28704>>>(b&32767)&1))switch(d|0){case 1:{c[a>>2]=4;a=0;break a}case 4:{c[a>>2]=3;a=0;break a}default:{a=0;break a}}else switch(d|0){case 0:{c[a>>2]=1;a=0;break a}case 3:{c[a>>2]=4;a=0;break a}default:{a=0;break a}}}else a=0}else a=-1;while(0);zb=f;return a|0}function Mc(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0;P=zb;zb=zb+64|0;L=P+32|0;F=P+24|0;y=P;J=P+52|0;C=P+40|0;a:do if((a|0)!=0&(b|0)!=0){O=a+44|0;c[O>>2]=0;K=a+7062388|0;e=c[K>>2]|0;b:do if((e|0)==4){H=a+7062396|0;e=c[H>>2]|0;do if((e|0)>0)c[H>>2]=e+-1;else{B=a+16|0;D=c[B>>2]|0;E=a+7062400|0;z=(c[E>>2]|0)+D|0;z=(z|0)<255?z:255;c[J>>2]=z;G=a+7062404|0;A=D-(c[G>>2]|0)|0;A=(A|0)>0?A:0;c[J+4>>2]=A;c[J+8>>2]=D;f=b+12|0;h=a+36|0;i=a+40|0;j=a+12|0;k=a+20|0;n=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+4|0;s=a+7062384|0;t=a+24|0;u=a+32|0;v=a+7062416|0;w=a+48|0;x=a+7062424|0;e=0;while(1){if(e>>>0>=3)break;if((ed(c[f>>2]|0,c[h>>2]|0,c[i>>2]|0,c[a>>2]|0,c[j>>2]|0,c[J+(e<<2)>>2]|0,c[k>>2]|0,n,0)|0)<0){M=29;break}if((Oc(c[h>>2]|0,c[i>>2]|0,n,c[k>>2]|0,1e6,70,1.0,p,q)|0)<0){M=29;break}if((Tc(c[b>>2]|0,c[h>>2]|0,c[i>>2]|0,c[r>>2]|0,p,c[q>>2]|0,c[s>>2]|0,c[k>>2]|0,c[t>>2]|0,(c[u>>2]|0)+184|0,+g[v>>3],w,O,c[x>>2]|0)|0)<0){M=29;break}c[C+(e<<2)>>2]=c[O>>2];e=e+1|0}if((M|0)==29){e=-1;break a}if((c[a>>2]|0)==1){x=c[C+4>>2]|0;h=c[C+8>>2]|0;f=c[C>>2]|0;c[y>>2]=A;c[y+4>>2]=x;c[y+8>>2]=D;c[y+12>>2]=h;c[y+16>>2]=z;c[y+20>>2]=f;Ue(0,3,19958,y)}else{f=c[C>>2]|0;h=c[C+8>>2]|0}e=c[C+4>>2]|0;if((f|0)>(h|0)|(e|0)>(h|0)){f=(f|0)<(e|0)?A:z;c[B>>2]=f;e=f-D|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[G>>2]=e;if((c[a>>2]|0)==1){c[F>>2]=f;Ue(0,3,20034,F);c[H>>2]=c[a+7062392>>2];break}else{c[H>>2]=c[a+7062392>>2];break}}e=c[E>>2]|0;f=c[G>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+D|0)>254){c[E>>2]=1;e=1}if((D|0)<=(e|0))c[G>>2]=1;c[H>>2]=c[a+7062392>>2];break b}while(0);h=c[K>>2]|0;M=33}else{h=e;M=33}while(0);if((M|0)==33){c:do switch(h|0){case 3:{f=a+7062408|0;h=b+12|0;e=dd(c[f>>2]|0,c[h>>2]|0,9,-7)|0;if((e|0)<0)break a;e=c[f>>2]|0;k=a+4834144|0;e=ed(c[h>>2]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[a>>2]|0,c[a+12>>2]|0,0,0,k,c[e>>2]|0)|0;if((e|0)<0)break a;e=a+36|0;f=a+40|0;h=a+20|0;break}case 2:case 1:{i=a+7062396|0;e=c[i>>2]|0;if((e|0)>0){c[i>>2]=e+-1;M=48;break c}e=c[a+7062408>>2]|0;f=c[b+12>>2]|0;if((h|0)==1)e=bd(e,f,J)|0;else e=cd(e,f,J)|0;if((e|0)<0)break a;e=a+16|0;if((c[a>>2]|0)==1?(I=d[J>>0]|0,(c[e>>2]|0)!=(I|0)):0){c[L>>2]=(c[K>>2]|0)==1?20086:20093;c[L+4>>2]=I;Ue(0,3,20098,L)}c[e>>2]=d[J>>0];c[i>>2]=c[a+7062392>>2];M=48;break}default:M=48}while(0);if((M|0)==48){e=a+36|0;f=a+40|0;h=a+20|0;k=a+4834144|0;if((ed(c[b+12>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[h>>2]|0,k,0)|0)<0){e=-1;break}}i=a+15416|0;j=a+15408|0;if((Oc(c[e>>2]|0,c[f>>2]|0,k,c[h>>2]|0,1e6,70,1.0,i,j)|0)<0){e=-1;break}if((Tc(c[b>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a+4>>2]|0,i,c[j>>2]|0,c[a+7062384>>2]|0,c[h>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+g[a+7062416>>3],a+48|0,O,c[a+7062424>>2]|0)|0)<0){e=-1;break}}s=a+28|0;if((c[s>>2]|0)==1){Nc(a);e=0;break}t=a+4818296|0;q=c[t>>2]|0;r=a+24|0;p=0;while(1){if((p|0)>=(q|0))break;h=c[O>>2]|0;i=a+4818304+(p*264|0)|0;j=a+4818304+(p*264|0)+56|0;k=a+4818304+(p*264|0)+64|0;f=0;n=-1;l=.5;while(1){if((f|0)>=(h|0))break;m=+(c[a+48+(f<<8)>>2]|0);o=+(c[i>>2]|0)/m;if(!(o<.7|o>1.43)?(o=+g[a+48+(f<<8)+56>>3]-+g[j>>3],N=+g[a+48+(f<<8)+64>>3]-+g[k>>3],N=(o*o+N*N)/m,N-1){k=c[r>>2]|0;switch(k|0){case 2:case 1:case 0:break;case 4:case 3:{f=a+48+(n<<8)+40|0;m=+g[a+4818304+(p*264|0)+40>>3];if(!(+g[f>>3]>3];if(!(+g[e>>3]>3]}g[f>>3]=m;c[a+48+(n<<8)+8>>2]=c[a+4818304+(p*264|0)+8>>2];g[e>>3]=l;c[a+48+(n<<8)+12>>2]=c[a+4818304+(p*264|0)+12>>2];f=0;h=-1;m=1.0e8;while(1){if((f|0)==4)break;e=0;l=0.0;while(1){if((e|0)==4)break;b=e+f&3;Q=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];o=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;l=l+(Q*Q+o*o)}b=l>2]=(b+(c[a+4818304+(p*264|0)+20>>2]|0)|0)%4|0;c[a+48+(n<<8)+24>>2]=(b+(c[a+4818304+(p*264|0)+24>>2]|0)|0)%4|0;break d}default:{e=-1;break a}}e=a+48+(n<<8)+32|0;o=+g[a+4818304+(p*264|0)+32>>3];if(+g[e>>3]>3]=o;i=c[a+4818304+(p*264|0)+4>>2]|0;c[a+48+(n<<8)+4>>2]=i;j=a+4818304+(p*264|0)+16|0;f=-1;l=1.0e8;h=0;while(1){if((h|0)==4)break;e=0;m=0.0;while(1){if((e|0)==4)break;b=e+h&3;R=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];Q=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;m=m+(R*R+Q*Q)}if(m>2]|0)|0)%4|0;l=m}else e=f;f=e;h=h+1|0}c[a+48+(n<<8)+16>>2]=f;if(k>>>0<2){c[a+48+(n<<8)+8>>2]=i;g[a+48+(n<<8)+40>>3]=o;c[a+48+(n<<8)+20>>2]=f;break}else{c[a+48+(n<<8)+12>>2]=i;g[a+48+(n<<8)+48>>3]=o;c[a+48+(n<<8)+24>>2]=f;break}}}while(0);p=p+1|0}Nc(a);f=0;e=0;while(1){if((f|0)>=(c[t>>2]|0))break;M=a+4818304+(f*264|0)+256|0;b=c[M>>2]|0;c[M>>2]=b+1;if((b|0)<3){if((f|0)!=(e|0))_O(a+4818304+(e*264|0)|0,a+4818304+(f*264|0)|0,264)|0;e=e+1|0}f=f+1|0}c[t>>2]=e;f=c[O>>2]|0;k=0;while(1){if((k|0)>=(f|0))break;j=a+48+(k<<8)|0;h=c[a+48+(k<<8)+4>>2]|0;if((h|0)>=0){i=0;while(1){if((i|0)>=(e|0))break;if((c[a+4818304+(i*264|0)+4>>2]|0)==(h|0))break;i=i+1|0}if((i|0)==(e|0)){if((e|0)==60)break;e=e+1|0;c[t>>2]=e}_O(a+4818304+(i*264|0)|0,j|0,256)|0;c[a+4818304+(i*264|0)+256>>2]=1}k=k+1|0}if((c[s>>2]|0)==2)e=0;else{n=0;while(1){if((n|0)>=(e|0)){e=0;break a}i=a+4818304+(n*264|0)|0;j=a+4818304+(n*264|0)+56|0;k=a+4818304+(n*264|0)+64|0;h=0;while(1){if((h|0)>=(f|0))break;l=+(c[a+48+(h<<8)>>2]|0);R=+(c[i>>2]|0)/l;if(!(R<.7|R>1.43)?(Q=+g[a+48+(h<<8)+56>>3]-+g[j>>3],R=+g[a+48+(h<<8)+64>>3]-+g[k>>3],(Q*Q+R*R)/l<.5):0)break;h=h+1|0}if((h|0)==(f|0)){_O(a+48+(f<<8)|0,a+4818304+(n*264|0)|0,256)|0;f=f+1|0;c[O>>2]=f;e=c[t>>2]|0}n=n+1|0}}}else e=-1;while(0);zb=P;return e|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0;a:do switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+8>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}case 2:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+12>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}default:{f=c[a+44>>2]|0;e=0;while(1){if((e|0)>=(f|0))break a;b=a+48+(e<<8)+8|0;if((c[b>>2]|0)>-1?+g[a+48+(e<<8)+40>>3]<.5:0){c[b>>2]=-1;b=0}else b=1;d=a+48+(e<<8)+12|0;if(((c[d>>2]|0)>-1?+g[a+48+(e<<8)+48>>3]<.5:0)?(c[d>>2]=-1,(b|0)==0):0)c[a+48+(e<<8)+236>>2]=6;e=e+1|0}}}while(0);return}function Oc(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;r=(e|0)==1;if(r){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;h=(h|0)/4|0}c[k>>2]=0;n=d+8|0;o=a+-2|0;b=b+-2|0;l=d+1179664|0;e=0;while(1){if((e|0)>=(c[n>>2]|0)){q=5;break}m=d+12+(e<<2)|0;s=c[m>>2]|0;if(((((((!((s|0)<(h|0)|(s|0)>(f|0))?(p=d+131084+(e<<4)|0,(c[p>>2]|0)!=1):0)?(c[d+131084+(e<<4)+4>>2]|0)!=(o|0):0)?(c[d+131084+(e<<4)+8>>2]|0)!=1:0)?(c[d+131084+(e<<4)+12>>2]|0)!=(b|0):0)?(Pc(c[d>>2]|0,a,0,l,e+1|0,p,j+((c[k>>2]|0)*80048|0)|0)|0)>=0:0)?(Qc(c[m>>2]|0,j+((c[k>>2]|0)*80048|0)|0,i)|0)>=0:0)?(c[j+((c[k>>2]|0)*80048|0)>>2]=c[m>>2],s=c[k>>2]|0,g[j+(s*80048|0)+8>>3]=+g[d+655376+(e<<4)>>3],g[j+(s*80048|0)+16>>3]=+g[d+655376+(e<<4)+8>>3],s=s+1|0,c[k>>2]=s,(s|0)==60):0){e=60;break}e=e+1|0}if((q|0)==5)e=c[k>>2]|0;a=0;while(1){if((a|0)>=(e|0))break;l=a+1|0;m=j+(a*80048|0)+8|0;n=j+(a*80048|0)+16|0;h=j+(a*80048|0)|0;f=l;while(1){if((f|0)>=(e|0))break;t=+g[m>>3]-+g[j+(f*80048|0)+8>>3];i=+g[n>>3]-+g[j+(f*80048|0)+16>>3];i=t*t+i*i;e=c[h>>2]|0;a=j+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(i<+((e|0)/4|0|0))c[a>>2]=0}else if(i<+((b|0)/4|0|0))c[h>>2]=0;f=f+1|0;e=c[k>>2]|0}a=l}f=0;while(1){if((f|0)>=(e|0))break;if(!(c[j+(f*80048|0)>>2]|0)){b=f;while(1){a=b+1|0;if((a|0)>=(e|0))break;_O(j+(b*80048|0)|0,j+(a*80048|0)|0,80048)|0;b=a;e=c[k>>2]|0}e=e+-1|0;c[k>>2]=e}f=f+1|0}a:do if(r){b=0;while(1){if((b|0)>=(e|0))break a;c[j>>2]=c[j>>2]<<2;a=j+8|0;g[a>>3]=+g[a>>3]*2.0;a=j+16|0;g[a>>3]=+g[a>>3]*2.0;a=c[j+24>>2]|0;e=0;while(1){if((e|0)>=(a|0))break;s=j+28+(e<<2)|0;c[s>>2]=c[s>>2]<<1;s=j+40028+(e<<2)|0;c[s>>2]=c[s>>2]<<1;e=e+1|0}j=j+80048|0;b=b+1|0;e=c[k>>2]|0}}while(0);return 0}function Pc(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=zb;zb=zb+80032|0;n=w+80016|0;m=w+80008|0;j=w+8e4|0;u=w+4e4|0;v=w;s=c[h+8>>2]|0;t=B(s,d)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;r=e;e=a+(t+e<<1)|0;while(1){if((r|0)>(h|0)){t=7;break}t=b[e>>1]|0;if(t<<16>>16>0?(c[f+((t<<16>>16)+-1<<2)>>2]|0)==(g|0):0){t=6;break}r=r+1|0;e=e+2|0}do if((t|0)==6)if((r|0)!=-1){o=i+24|0;c[o>>2]=1;p=i+28|0;c[p>>2]=r;q=i+40028|0;c[q>>2]=s;g=5;e=s;l=r;f=1;while(1){k=a+((B(e,d)|0)+l<<1)|0;j=0;e=g+5|0;while(1){g=(e|0)%8|0;if(j>>>0>=8){t=13;break}e=c[48+(g<<2)>>2]|0;x=B(e,d)|0;h=c[80+(g<<2)>>2]|0;if((b[k+(x+h<<1)>>1]|0)>0)break;j=j+1|0;e=g+1|0}if((t|0)==13){t=0;if((j|0)==8){t=15;break}h=c[80+(g<<2)>>2]|0;e=c[48+(g<<2)>>2]|0}c[i+28+(f<<2)>>2]=h+l;j=c[o>>2]|0;c[i+40028+(j<<2)>>2]=e+(c[i+40028+(j+-1<<2)>>2]|0);j=c[o>>2]|0;h=i+28+(j<<2)|0;if((c[h>>2]|0)==(r|0)?(c[i+40028+(j<<2)>>2]|0)==(s|0):0){t=18;break}f=j+1|0;c[o>>2]=f;if((f|0)==9999){t=21;break}e=c[i+40028+(j<<2)>>2]|0;l=c[h>>2]|0}if((t|0)==15){Ue(0,3,20152,m);e=-1;break}else if((t|0)==18){f=0;e=0;h=1;while(1){if((h|0)>=(j|0))break;x=(c[i+28+(h<<2)>>2]|0)-r|0;x=B(x,x)|0;d=(c[i+40028+(h<<2)>>2]|0)-s|0;x=(B(d,d)|0)+x|0;d=(x|0)>(e|0);f=d?h:f;e=d?x:e;h=h+1|0}e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=c[i+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[i+40028+(e<<2)>>2];e=e+1|0}h=f;e=j;while(1){if((h|0)>=(e|0))break;e=h-f|0;c[i+28+(e<<2)>>2]=c[i+28+(h<<2)>>2];c[i+40028+(e<<2)>>2]=c[i+40028+(h<<2)>>2];h=h+1|0;e=c[o>>2]|0}e=0;while(1){if((e|0)>=(f|0))break;x=e-f|0;c[i+28+((c[o>>2]|0)+x<<2)>>2]=c[u+(e<<2)>>2];c[i+40028+((c[o>>2]|0)+x<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}c[i+28+(c[o>>2]<<2)>>2]=c[p>>2];c[i+40028+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1;e=0;break}else if((t|0)==21){Ue(0,3,20159,n);e=-1;break}}else t=7;while(0);if((t|0)==7){Ue(0,3,20145,j);e=-1}zb=w;return e|0}function Qc(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=zb;zb=zb+96|0;o=r+48|0;k=r+92|0;p=r;l=r+88|0;m=b+28|0;j=c[m>>2]|0;n=b+40028|0;h=c[n>>2]|0;q=b+24|0;i=(c[q>>2]|0)+-1|0;f=1;g=0;e=0;while(1){if((f|0)>=(i|0))break;t=(c[b+28+(f<<2)>>2]|0)-j|0;t=B(t,t)|0;u=(c[b+40028+(f<<2)>>2]|0)-h|0;t=(B(u,u)|0)+t|0;u=(t|0)>(g|0);s=u?f:e;f=f+1|0;g=u?t:g;e=s}d=+(a|0)/.75*.01*d;c[k>>2]=0;c[l>>2]=0;a:do if((Rc(m,n,0,e,d,o,k)|0)>=0?(Rc(m,n,e,(c[q>>2]|0)+-1|0,d,p,l)|0)>=0:0){f=c[k>>2]|0;g=c[l>>2]|0;do if((f|0)==1&(g|0)==1){f=c[p>>2]|0;g=c[o>>2]|0}else{if((f|0)>1&(g|0)==0){f=(e|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,0,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,e,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=e;g=c[o>>2]|0;e=c[p>>2]|0;break}if(!((f|0)==0&(g|0)>1)){e=-1;break a}f=(e+-1+(c[q>>2]|0)|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,e,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,(c[q>>2]|0)+-1|0,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=c[p>>2]|0;g=e;e=c[o>>2]|0}while(0);c[b+80028>>2]=0;c[b+80032>>2]=g;c[b+80036>>2]=e;c[b+80040>>2]=f;c[b+80044>>2]=(c[q>>2]|0)+-1;e=0}else e=-1;while(0);zb=r;return e|0}function Rc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0;j=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;l=+(j-q|0);i=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(i-r|0);n=+((B(r,q)|0)-(B(i,j)|0)|0);j=d+1|0;i=j;k=0.0;while(1){if((j|0)>=(e|0))break;s=l*+(c[a+(j<<2)>>2]|0)+m*+(c[b+(j<<2)>>2]|0)+n;s=s*s;r=s>k;i=r?j:i;j=j+1|0;k=r?s:k}if(k/(l*l+m*m)>f)if(((Rc(a,b,d,i,f,g,h)|0)>=0?(o=c[h>>2]|0,(o|0)<=5):0)?(c[g+(o<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(Rc(a,b,i,e,f,g,h)|0)>=0):0)p=8;else i=-1;else p=8;if((p|0)==8)i=0;return i|0}function Sc(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=zb;zb=zb+16|0;r=y+4|0;s=y;x=qe(2)|0;u=qe(2)|0;v=Dd(2,2)|0;k=0;a:while(1){if(k>>>0>=4){q=10;break}l=k+1|0;q=c[e+(l<<2)>>2]|0;n=c[e+(k<<2)>>2]|0;p=+(q+1-n|0)*.05+.5;n=~~(p+ +(n|0));q=~~(+(q|0)-p)-n|0;w=Dd(q+1|0,2)|0;d=0;while(1){if((d|0)>(q|0))break;z=d+n|0;if((pe(h,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),r,s)|0)<0){q=6;break a}A=c[w>>2]|0;z=d<<1;g[A+(z<<3)>>3]=+f[r>>2];g[A+((z|1)<<3)>>3]=+f[s>>2];d=d+1|0}if((Pd(w,v,x,u)|0)<0){q=14;break}A=c[v>>2]|0;o=+g[A+8>>3];g[i+(k*24|0)>>3]=o;p=-+g[A>>3];g[i+(k*24|0)+8>>3]=p;A=c[u>>2]|0;g[i+(k*24|0)+16>>3]=-(o*+g[A>>3]+ +g[A+8>>3]*p);Ld(w)|0;k=l}b:do if((q|0)==6)q=14;else if((q|0)==10){Ld(v)|0;re(u)|0;re(x)|0;d=0;while(1){if(d>>>0>=4){d=0;break b}k=d+3&3;l=i+(k*24|0)|0;m=+g[i+(d*24|0)+8>>3];n=i+(d*24|0)|0;o=+g[i+(k*24|0)+8>>3];p=+g[l>>3]*m-+g[n>>3]*o;if(+t(+p)<.0001){d=-1;break b}A=i+(d*24|0)+16|0;z=i+(k*24|0)+16|0;g[j+(d<<4)>>3]=(o*+g[A>>3]-m*+g[z>>3])/p;g[j+(d<<4)+8>>3]=(+g[n>>3]*+g[z>>3]-+g[l>>3]*+g[A>>3])/p;d=d+1|0}}while(0);if((q|0)==14){Ld(w)|0;Ld(v)|0;re(u)|0;re(x)|0;d=-1}zb=y;return d|0}function Tc(a,b,d,e,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=+n;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+16|0;A=G+4|0;B=G;C=l>>>0<2;D=(l|0)==2;z=0;r=0;while(1){if((z|0)>=(i|0))break;c[o+(r<<8)>>2]=c[h+(z*80048|0)>>2];if((pe(m,+g[h+(z*80048|0)+8>>3],+g[h+(z*80048|0)+16>>3],A,B)|0)>=0?(g[o+(r<<8)+56>>3]=+f[A>>2],g[o+(r<<8)+64>>3]=+f[B>>2],E=o+(r<<8)+168|0,(Sc(h+(z*80048|0)+28|0,h+(z*80048|0)+40028|0,c[h+(z*80048|0)+24>>2]|0,h+(z*80048|0)+80028|0,m,o+(r<<8)+72|0,E)|0)>=0):0){v=o+(r<<8)+8|0;s=o+(r<<8)+20|0;t=o+(r<<8)+40|0;w=o+(r<<8)+12|0;y=o+(r<<8)+24|0;x=o+(r<<8)+48|0;u=od(j,k,l,a,b,d,e,m,E,n,v,s,t,w,y,x,q,o+(r<<8)+240|0,o+(r<<8)+248|0)|0;switch(u|0){case 0:{F=12;break}case -1:{u=2;F=12;break}case -2:{u=3;F=12;break}case -3:{u=4;F=12;break}case -4:{u=5;F=12;break}case -5:{u=9;F=12;break}case -6:{u=1;F=12;break}default:{}}if((F|0)==12){F=0;c[o+(r<<8)+236>>2]=u}if(!C){if(D){c[o+(r<<8)+4>>2]=c[w>>2];t=x;s=y;F=17}}else{c[o+(r<<8)+4>>2]=c[v>>2];F=17}if((F|0)==17){F=0;c[o+(r<<8)+16>>2]=c[s>>2];g[o+(r<<8)+32>>3]=+g[t>>3]}r=r+1|0}z=z+1|0}c[p>>2]=r;zb=G;return 0}function Uc(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+288|0;h=m+192|0;i=m+96|0;j=m+264|0;k=m;l=m+256|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){f=b+24|0;break}else{f=b+16|0;break}else f=b+20|0;while(0);f=c[f>>2]|0;o=(4-f|0)%4|0;g[h>>3]=+g[b+168+(o<<4)>>3];g[h+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-f|0)%4|0;g[h+16>>3]=+g[b+168+(o<<4)>>3];g[h+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-f|0)%4|0;g[h+32>>3]=+g[b+168+(o<<4)>>3];g[h+40>>3]=+g[b+168+(o<<4)+8>>3];f=(7-f|0)%4|0;g[h+48>>3]=+g[b+168+(f<<4)>>3];g[h+56>>3]=+g[b+168+(f<<4)+8>>3];n=d*-.5;g[i>>3]=n;d=d*.5;g[i+8>>3]=d;g[i+16>>3]=0.0;g[i+24>>3]=d;g[i+32>>3]=d;g[i+40>>3]=0.0;g[i+48>>3]=d;g[i+56>>3]=n;g[i+64>>3]=0.0;g[i+72>>3]=n;g[i+80>>3]=n;g[i+88>>3]=0.0;c[j>>2]=h;c[j+4>>2]=i;c[j+8>>2]=4;if((Me(c[a>>2]|0,h,i,4,k)|0)<0)d=1.0e8;else{o=(He(c[a>>2]|0,j,k,e,l)|0)<0;d=o?1.0e8:+g[l>>3]}zb=m;return +d}function Vc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+192|0;i=m+96|0;j=m;k=m+168|0;l=m+160|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){h=b+24|0;break}else{h=b+16|0;break}else h=b+20|0;while(0);h=c[h>>2]|0;o=(4-h|0)%4|0;g[i>>3]=+g[b+168+(o<<4)>>3];g[i+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-h|0)%4|0;g[i+16>>3]=+g[b+168+(o<<4)>>3];g[i+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-h|0)%4|0;g[i+32>>3]=+g[b+168+(o<<4)>>3];g[i+40>>3]=+g[b+168+(o<<4)+8>>3];h=(7-h|0)%4|0;g[i+48>>3]=+g[b+168+(h<<4)>>3];g[i+56>>3]=+g[b+168+(h<<4)+8>>3];n=e*-.5;g[j>>3]=n;e=e*.5;g[j+8>>3]=e;g[j+16>>3]=0.0;g[j+24>>3]=e;g[j+32>>3]=e;g[j+40>>3]=0.0;g[j+48>>3]=e;g[j+56>>3]=n;g[j+64>>3]=0.0;g[j+72>>3]=n;g[j+80>>3]=n;g[j+88>>3]=0.0;c[k>>2]=i;c[k+4>>2]=j;c[k+8>>2]=4;k=(He(c[a>>2]|0,k,d,f,l)|0)<0;zb=m;return +(k?1.0e8:+g[l>>3])}function Wc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((He(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Xc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((Je(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Yc(a,b){a=a|0;b=b|0;var d=0;d=FO(2064)|0;if(d|0){c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b}return d|0}function Zc(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return}function _c(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0&(b|0)!=0){aP(a+12|0,0,1024)|0;e=b+(B(c[a+8>>2]|0,c[a+4>>2]|0)|0)|0;while(1){if(b>>>0>=e>>>0){b=0;break a}f=a+12+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}}else b=-1;while(0);return b|0}function $c(a,b){a=a|0;b=b|0;var d=0;b=_c(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+12+(d<<2)>>2]|0)+b|0;c[a+1036+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function ad(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;if(!(e<0.0|e>1.0)){d=$c(b,d)|0;if((d|0)>=0){i=~~(+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0)*e)>>>0;d=0;while(1){j=d&255;g=c[b+1036+(j<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}while(1){h=d+1<<24>>24;if((g|0)!=(i|0))break;d=h;g=c[b+1036+((h&255)<<2)>>2]|0}a[f>>0]=((d&255)+j|0)>>>1;d=0}}else d=-1;return d|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;return ad(a,b,.5,c)|0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0;d=_c(b,d)|0;if((d|0)>=0){m=0.0;d=1;do{m=m+ +((B(c[b+12+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0);d=0;h=0.0;j=0.0;g=0.0;l=0;while(1){f=c[b+12+(l<<2)>>2]|0;j=j+ +(f>>>0);if(j!=0.0){i=k-j;if(i==0.0)break;g=g+ +((B(f,l)|0)>>>0);o=g/j-(m-g)/i;i=o*(j*i*o);n=i>h;f=l&255;d=n?f:d;h=n?i:h}else f=l&255;if(f<<24>>24==-1)break;else l=l+1|0}a[e>>0]=d;d=0}return d|0}function dd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=_c(b,e)|0;a:do if((h|0)>=0){if(!(c[b>>2]|0)){h=b+4|0;i=b+8|0;s=FO(B(c[i>>2]|0,c[h>>2]|0)|0)|0;c[b>>2]=s;if(!s){h=-1;break}else{s=h;r=i}}else{s=b+4|0;r=b+8|0}p=f>>1;q=0-p|0;o=0;while(1){h=c[r>>2]|0;if((o|0)>=(h|0))break;l=0;while(1){n=c[s>>2]|0;if((l|0)>=(n|0))break;m=q;f=0;h=0;while(1){if((m|0)>(p|0))break;i=m+o|0;b:do if((i|0)>=0?(i|0)<(c[r>>2]|0):0){k=B(i,n)|0;j=q;i=f;while(1){if((j|0)>(p|0))break b;f=j+l|0;if((f|0)>-1&(f|0)<(n|0)){i=i+1|0;h=h+(d[e+(f+k)>>0]|0)|0}j=j+1|0}}else i=f;while(0);m=m+1|0;f=i}n=(c[b>>2]|0)+((B(n,o)|0)+l)|0;a[n>>0]=(h|0)/(f|0)|0;l=l+1|0}o=o+1|0}if(!g)h=0;else{i=0;while(1){if((i|0)>=(B(h,c[s>>2]|0)|0)){h=0;break a}h=(c[b>>2]|0)+i|0;a[h>>0]=(d[h>>0]|0)+g;i=i+1|0;h=c[r>>2]|0}}}while(0);return h|0}function ed(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;e=(e|0)==1;j=(i|0)!=0;do if(!d)if(e){if(j){e=fc(a,b,c,i,h)|0;break}if(!g){e=ec(a,b,c,f,h)|0;break}else{e=dc(a,b,c,f,h)|0;break}}else{if(j){e=ic(a,b,c,i,h)|0;break}if(!g){e=hc(a,b,c,f,h)|0;break}else{e=gc(a,b,c,f,h)|0;break}}else if(e){if(j){e=lc(a,b,c,i,h)|0;break}if(!g){e=kc(a,b,c,f,h)|0;break}else{e=jc(a,b,c,f,h)|0;break}}else{if(j){e=oc(a,b,c,i,h)|0;break}if(!g){e=nc(a,b,c,f,h)|0;break}else{e=mc(a,b,c,f,h)|0;break}}while(0);return e|0}function fd(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;a=0}else a=-1;return a|0}function gd(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;a=0}else a=-1;return a|0}function hd(){return id(16,50)|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+64|0;p=q+56|0;o=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;f=q+16|0;e=q+8|0;d=q;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){m=FO(32)|0;if(!m){Ue(0,3,41858,d);Ea(1)}c[m>>2]=0;c[m+4>>2]=b;c[m+28>>2]=a;l=FO(b<<2)|0;c[m+8>>2]=l;if(!l){Ue(0,3,41858,e);Ea(1)}d=b<<4;k=FO(d)|0;c[m+12>>2]=k;if(!k){Ue(0,3,41858,f);Ea(1)}f=FO(d)|0;j=m+20|0;c[j>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}d=b<<5;g=FO(d)|0;c[m+16>>2]=g;if(!g){Ue(0,3,41858,h);Ea(1)}h=FO(d)|0;c[m+24>>2]=h;if(!h){Ue(0,3,41858,i);Ea(1)}g=B(a,a)|0;f=g*12|0;g=g<<2;e=0;b:while(1){if((e|0)>=(b|0)){n=m;break a}c[l+(e<<2)>>2]=0;a=e<<2;d=0;while(1){if(d>>>0>=4)break;i=FO(f)|0;h=d+a|0;c[k+(h<<2)>>2]=i;if(!i){d=19;break b}i=FO(g)|0;c[(c[j>>2]|0)+(h<<2)>>2]=i;if(!i){d=21;break b}else d=d+1|0}e=e+1|0}if((d|0)==19){Ue(0,3,41858,o);Ea(1)}else if((d|0)==21){Ue(0,3,41858,p);Ea(1)}}else n=0;while(0);zb=q;return n|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)b=-1;else{f=a+4|0;g=a+8|0;h=a+12|0;i=a+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;if(c[(c[g>>2]|0)+(d<<2)>>2]|0)td(a,d)|0;e=d<<2;b=0;while(1){if((b|0)==4)break;j=b+e|0;GO(c[(c[h>>2]|0)+(j<<2)>>2]|0);GO(c[(c[i>>2]|0)+(j<<2)>>2]|0);b=b+1|0}d=d+1|0}GO(c[h>>2]|0);GO(c[i>>2]|0);GO(c[g>>2]|0);GO(c[a+16>>2]|0);GO(c[a+24>>2]|0);GO(a);b=0}return b|0}function kd(b,e,f,h,i,j,k){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+32|0;p=u+24|0;o=u;t=u+16|0;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-1}else{c[o>>2]=0;s=e+-1|0;q=B(s,e)|0;c[o+4>>2]=q;q=B(e,e)|0;c[o+8>>2]=q+-1;c[o+12>>2]=s;l=0;m=0;n=-1;while(1){if((l|0)==4)break;r=a[b+(c[o+(l<<2)>>2]|0)>>0]|0;l=l+1|0;m=(r&255)>(m&255)?r:m;n=(r&255)<(n&255)?r:n}m=m&255;l=n&255;if((m-l|0)<30){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-2;break}n=(m+l|0)>>>1;l=0;while(1){if((l|0)==4)break;a[p+l>>0]=n>>>0>(d[b+(c[o+(l<<2)>>2]|0)>>0]|0)>>>0&1;l=l+1|0}m=0;while(1){if(m>>>0>=4){l=18;break}l=m+1|0;if(((a[p+m>>0]|0)==1?(a[p+(l&3)>>0]|0)==1:0)?(a[p+(m+2&3)>>0]|0)==0:0){l=17;break}m=l}if((l|0)==17)c[h>>2]=m;else if((l|0)==18?(m|0)==4:0){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-3;break}r=255;l=0;while(1){if((l|0)==(q|0))break;o=b+l|0;m=d[o>>0]|0;p=m-n|0;p=(p|0)<0?0-p|0:p;a[o>>0]=n>>>0>m>>>0&1;r=(p|0)<(r|0)?p:r;l=l+1|0}l=c[h>>2]|0;b:do switch(l|0){case 0:{n=l;m=0;l=0;while(1){if((n|0)>=(e|0))break b;p=(n|0)==(s|0);q=B(n,e)|0;o=0;while(1){if((o|0)==(e|0))break;if((o|n|0)!=0?!(p&((o|0)==0|(o|0)==(s|0))):0){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+q)>>0]|0)!=0}o=o+1|0}n=n+1|0}}case 1:{o=0;m=0;l=0;while(1){if((o|0)>=(e|0))break b;p=(o|0)==0;q=(o|0)==(s|0);n=s;while(1){if((n|0)<=-1)break;h=(n|0)==(s|0);if(!(p&h)?!(q&(h|(n|0)==0)):0){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+-1|0}o=o+1|0}}case 2:{n=s;m=0;l=0;while(1){if((n|0)<=-1)break b;q=(n|0)==(s|0)|(n|0)==0;p=B(n,e)|0;o=s;while(1){if((o|0)<=-1)break;if(!(q&(o|0)==(s|0)|(o|n|0)==0)){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+p)>>0]|0)!=0}o=o+-1|0}n=n+-1|0}}case 3:{o=s;m=0;l=0;while(1){if((o|0)<=-1)break b;p=(o|0)==(s|0);q=(o|0)==0;n=0;while(1){if((n|0)>=(e|0))break;if(!(p&(n|0)==0|(n|o|0)==0|q&(n|0)==(s|0))){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+1|0}o=o+-1|0}}default:{m=0;l=0}}while(0);g[i>>3]=(r|0)>30?1.0:+(r|0)/30.0;switch(j|0){case 259:{k=a[240+m>>0]|0;s=k<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 515:{l=a[112+m>>0]|0;s=l<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k|0)c[k>>2]=d[176+m>>0];if(l<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 772:case 1028:case 1029:case 1285:{l=md(j,m,l,0,t)|0;if((l|0)<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}if((k|0)!=0&(l|0)!=0)c[k>>2]=l;break}default:{k=t;c[k>>2]=m;c[k+4>>2]=l}}c[f>>2]=c[t>>2];l=0}while(0);zb=u;return l|0}function ld(b,d,e,f,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;l=z+8|0;k=z;a:do if((b|0)==0|(f|0)<1){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;d=-1}else switch(d|0){case 0:{x=B(f,f)|0;w=x*3|0;x=FO(x*12|0)|0;if(!x){Ue(0,3,41858,k);Ea(1)}d=0;k=0;while(1){if((d|0)==(w|0))break;t=k+(~a[e+d>>0]&255)|0;d=d+1|0;k=t}l=(k>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/(+(f|0)*1.7320508)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+12|0;q=b+16|0;m=0.0;p=0;d=-1;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;b:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break b}default:{y=18;break b}}}c:do if((y|0)==18){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break c;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}case 1:{w=B(f,f)|0;x=FO(w<<2)|0;if(!x){Ue(0,3,41858,l);Ea(1)}d=0;k=0;while(1){if((k|0)==(w|0))break;d=d+(~a[e+k>>0]&255)|0;k=k+1|0}l=(d>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/+(f|0)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+20|0;q=b+24|0;p=0;d=-1;m=0.0;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;d:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break d}default:{y=40;break d}}}e:do if((y|0)==40){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break e;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}default:{d=-1;break a}}while(0);zb=z;return d|0}function md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0;I=zb;zb=zb+2384|0;l=I+2320|0;D=I+880|0;A=I+800|0;H=I+720|0;C=I+640|0;y=I+560|0;G=I+48|0;E=I;switch(b|0){case 2830:{l=g;u=1200;x=688;m=120;n=127;w=64;o=9;i=8;break}case 772:{j=624;k=432;m=13;n=15;b=9;o=1;i=5;break}case 1028:{j=624;k=432;m=13;n=15;b=5;o=2;i=5;break}case 1029:{b=12;g=2;i=4;break}case 1285:{b=7;g=3;i=4;break}default:b=-1}if((i|0)==4){j=496;k=304;m=22;n=31;o=g;i=5}a:do if((i|0)==5){i=0;g=f;while(1){if((i|0)==(m|0)){u=j;x=k;w=b;i=8;break a}a[l+i>>0]=e&1;x=TO(e|0,g|0,1)|0;i=i+1|0;e=x;g=F()|0}}while(0);b:do if((i|0)==8){t=o<<1;g=0;i=1;while(1){if((i|0)>(t|0))break;j=y+(i<<2)|0;c[j>>2]=0;e=0;b=0;while(1){if((e|0)>=(m|0))break;if(a[l+e>>0]|0){v=x+(((B(e,i)|0)%(n|0)|0)<<2)|0;b=b^c[v>>2];c[j>>2]=b}e=e+1|0}c[j>>2]=c[u+(b<<2)>>2];g=(b|0)==0?g:1;i=i+1|0}v=(g|0)!=0;c:do if(v){c[A>>2]=0;g=c[y+4>>2]|0;c[A+4>>2]=g;c[D>>2]=0;c[D+72>>2]=1;b=1;while(1){if((b|0)>=(t|0))break;c[D+(b<<2)>>2]=-1;c[D+72+(b<<2)>>2]=0;b=b+1|0}c[H>>2]=0;c[H+4>>2]=0;c[C>>2]=-1;c[C+4>>2]=0;s=0;r=0;while(1){f=s;s=s+1|0;d:do if((g|0)==-1){f=f+2|0;c[H+(f<<2)>>2]=r;b=0;while(1){if((b|0)>(r|0)){q=r;break d}q=D+(s*72|0)+(b<<2)|0;p=c[q>>2]|0;c[D+(f*72|0)+(b<<2)>>2]=p;c[q>>2]=c[u+(p<<2)>>2];b=b+1|0}}else{e=f;while(1){b=(e|0)>0;if(b&(c[A+(e<<2)>>2]|0)==-1)e=e+-1|0;else break}if(b){b=e;i=e;while(1){j=i;i=i+-1|0;if((c[A+(i<<2)>>2]|0)==-1)e=b;else e=(c[C+(b<<2)>>2]|0)<(c[C+(i<<2)>>2]|0)?i:b;if((j|0)<=1)break;else b=e}}i=H+(e<<2)|0;p=s-e|0;q=p+(c[i>>2]|0)|0;f=f+2|0;q=(r|0)>(q|0)?r:q;c[H+(f<<2)>>2]=q;b=0;while(1){if((b|0)>=(t|0))break;c[D+(f*72|0)+(b<<2)>>2]=0;b=b+1|0}j=g+n|0;k=A+(e<<2)|0;g=c[i>>2]|0;b=0;while(1){if((b|0)>(g|0))break;i=c[D+(e*72|0)+(b<<2)>>2]|0;if((i|0)!=-1)c[D+(f*72|0)+(p+b<<2)>>2]=c[x+(((j+i-(c[k>>2]|0)|0)%(n|0)|0)<<2)>>2];b=b+1|0}b=0;while(1){if((b|0)>(r|0))break d;p=D+(s*72|0)+(b<<2)|0;k=c[p>>2]|0;j=D+(f*72|0)+(b<<2)|0;c[j>>2]=c[j>>2]^k;c[p>>2]=c[u+(k<<2)>>2];b=b+1|0}}while(0);c[C+(f<<2)>>2]=s-q;if((s|0)>=(t|0))break;b=c[y+(f<<2)>>2]|0;if((b|0)==-1)b=0;else b=c[x+(b<<2)>>2]|0;i=A+(f<<2)|0;c[i>>2]=b;e=1;while(1){if((e|0)>(q|0))break;g=c[y+(f-e<<2)>>2]|0;if((g|0)!=-1?(z=c[D+(f*72|0)+(e<<2)>>2]|0,(z|0)!=0):0){b=b^c[x+((((c[u+(z<<2)>>2]|0)+g|0)%(n|0)|0)<<2)>>2];c[i>>2]=b}e=e+1|0}g=c[u+(b<<2)>>2]|0;c[i>>2]=g;if((q|0)>(o|0))break;else r=q}if((q|0)>(o|0)){b=-1;break b}b=0;while(1){if((b|0)>(q|0))break;C=D+(f*72|0)+(b<<2)|0;c[C>>2]=c[u+(c[C>>2]<<2)>>2];b=b+1|0}b=1;while(1){if((b|0)>(q|0))break;c[E+(b<<2)>>2]=c[D+(f*72|0)+(b<<2)>>2];b=b+1|0}b=0;k=1;while(1){if((n|0)<(k|0))break;j=1;g=1;while(1){if((j|0)>(q|0))break;e=E+(j<<2)|0;i=c[e>>2]|0;if((i|0)!=-1){D=(i+j|0)%(n|0)|0;c[e>>2]=D;g=c[x+(D<<2)>>2]^g}j=j+1|0}if(!g){c[G+(b<<2)>>2]=n-k;b=b+1|0}k=k+1|0}if((b|0)!=(q|0)){b=-1;break b}b=0;while(1){if((b|0)>=(q|0))break c;E=l+(c[G+(b<<2)>>2]|0)|0;a[E>>0]=a[E>>0]^1;b=b+1|0}}else f=0;while(0);b=h;c[b>>2]=0;c[b+4>>2]=0;b=m-w|0;g=1;e=0;i=0;j=0;while(1){if((b|0)>=(m|0))break;E=NO(g|0,e|0,d[l+b>>0]|0,0)|0;E=OO(E|0,F()|0,i|0,j|0)|0;G=F()|0;D=h;c[D>>2]=E;c[D+4>>2]=G;D=UO(g|0,e|0,1)|0;b=b+1|0;g=D;e=F()|0;i=E;j=G}if(v)b=c[H+(f<<2)>>2]|0;else b=0}while(0);zb=I;return b|0}function nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Dd(8,8)|0;h=Dd(8,1)|0;i=Dd(8,1)|0;e=0;while(1){if((e|0)==4)break;o=a+(e<<4)|0;j=c[f>>2]|0;k=e<<4;g[j+(k<<3)>>3]=+g[o>>3];n=a+(e<<4)+8|0;g[j+((k|1)<<3)>>3]=+g[n>>3];g[j+((k|2)<<3)>>3]=1.0;g[j+((k|3)<<3)>>3]=0.0;g[j+((k|4)<<3)>>3]=0.0;g[j+((k|5)<<3)>>3]=0.0;m=b+(e<<4)|0;g[j+((k|6)<<3)>>3]=-(+g[o>>3]*+g[m>>3]);g[j+((k|7)<<3)>>3]=-(+g[n>>3]*+g[m>>3]);g[j+((k|8)<<3)>>3]=0.0;g[j+((k|9)<<3)>>3]=0.0;g[j+((k|10)<<3)>>3]=0.0;g[j+((k|11)<<3)>>3]=+g[o>>3];g[j+((k|12)<<3)>>3]=+g[n>>3];g[j+((k|13)<<3)>>3]=1.0;l=b+(e<<4)+8|0;g[j+((k|14)<<3)>>3]=-(+g[o>>3]*+g[l>>3]);g[j+((k|15)<<3)>>3]=-(+g[n>>3]*+g[l>>3]);k=c[h>>2]|0;j=e<<1;g[k+(j<<3)>>3]=+g[m>>3];g[k+((j|1)<<3)>>3]=+g[l>>3];e=e+1|0}Xd(f)|0;Nd(i,f,h)|0;a=c[i>>2]|0;e=0;while(1){if((e|0)==2)break;o=e*3|0;g[d+(e*24|0)>>3]=+g[a+(o<<3)>>3];g[d+(e*24|0)+8>>3]=+g[a+(o+1<<3)>>3];g[d+(e*24|0)+16>>3]=+g[a+(o+2<<3)>>3];e=e+1|0}g[d+48>>3]=+g[a+48>>3];g[d+56>>3]=+g[a+56>>3];g[d+64>>3]=1.0;Ld(f)|0;Ld(h)|0;Ld(i)|0;return}function od(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0;w=zb;zb=zb+12304|0;v=w;u=w+12288|0;do if((d+-2|0)>>>0<3){if((r|0)!=2830){u=r&255;if((pd(b,2,u,u*3|0,e,f,g,h,i,j,k,v)|0)<0){c[o>>2]=-1;r=-6;break}u=kd(v,u,o,p,q,r,s)|0;if(!t){r=u;break}r=t;c[r>>2]=0;c[r+4>>2]=0;r=u;break}if((pd(b,2,14,42,e,f,g,h,i,j,.875,v)|0)<0){c[o>>2]=-1;r=-6;break}r=qd(v,u,p,q,s)|0;if((r|0)<0){c[o>>2]=-1;break}p=u;u=c[p>>2]|0;p=c[p+4>>2]|0;if((u|0)==-1&(p|0)==-1){c[o>>2]=-1;r=-5;break}c[o>>2]=(u&-32768|0)==0&0==0?u&32767:0;if(t){c[t>>2]=u;c[t+4>>2]=p}}else r=1;while(0);a:do switch(d|0){case 0:case 1:case 3:case 4:{if(!a){c[l>>2]=-1;u=-1;break a}u=a+28|0;p=c[u>>2]|0;q=p<<2;switch(d|0){case 0:case 3:if((pd(b,0,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,0,v,c[u>>2]|0,l,m,n)|0;break a}default:if((pd(b,1,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,1,v,c[u>>2]|0,l,m,n)|0;break a}}}default:u=1}while(0);if((r|0)!=1)u=(u|0)==1?r:(u&r|0)<0?u:0;zb=w;return u|0}function pd(b,e,h,i,j,k,l,m,n,o,p,q){b=b|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=+p;q=q|0;var r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0;R=zb;zb=zb+256|0;A=R+232|0;z=R+224|0;D=R+216|0;C=R+208|0;s=R+144|0;t=R+80|0;N=R;O=R+240|0;P=R+236|0;g[s>>3]=100.0;g[s+8>>3]=100.0;g[s+16>>3]=110.0;g[s+24>>3]=100.0;g[s+32>>3]=110.0;g[s+40>>3]=110.0;g[s+48>>3]=100.0;g[s+56>>3]=110.0;r=0;while(1){if((r|0)==4)break;g[t+(r<<4)>>3]=+g[o+(r<<4)>>3];g[t+(r<<4)+8>>3]=+g[o+(r<<4)+8>>3];r=r+1|0}nd(s,t,N);y=+g[t>>3];T=+g[t+16>>3];w=y-T;I=+g[t+8>>3];S=+g[t+24>>3];u=I-S;r=~~(w*w+u*u);u=+g[t+32>>3];w=+g[t+48>>3];V=u-w;v=+g[t+40>>3];x=+g[t+56>>3];U=v-x;L=~~(V*V+U*U);u=T-u;v=S-v;t=~~(u*u+v*v);y=w-y;I=x-I;M=~~(y*y+I*I);r=~~(+(((L|0)>(r|0)?L:r)|0)*p*p);t=~~(+(((M|0)>(t|0)?M:t)|0)*p*p);if(!b){s=h;while(1)if((s|0)<(i|0)&(B(s,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r,r)|0)<(t|0))r=r<<1;else break}else{s=h;while(1)if((s|0)<(i|0)&(B(s<<2,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r<<2,r)|0)<(t|0))r=r<<1;else break}M=(s|0)>(i|0)?i:s;J=(r|0)>(i|0)?i:r;K=(M|0)/(h|0)|0;L=(J|0)/(h|0)|0;u=(1.0-p)*.5*10.0;I=p*10.0;H=B(h,h)|0;a:do if(!e){H=H*3|0;r=HO(H,4)|0;if(!r){Ue(0,3,41858,C);Ea(1)}b:do switch(m|0){case 0:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 1:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t+2)>>0]|0)}i=i+1|0}o=o+1|0}}case 2:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 3:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|2)>>0]|0)}i=i+1|0}o=o+1|0}}case 4:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|3)>>0]|0)}i=i+1|0}o=o+1|0}}case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=j+((B(t,k)|0)+s)|0;t=d[t>>0]|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}i=i+1|0}o=o+1|0}}case 6:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|3)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|1)>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){X=B(t,k)|0;W=(s&65534)+X<<1;T=+((d[j+W>>0]|0)+-128|0);V=+((d[j+(W+2)>>0]|0)+-128|0);U=+((d[j+(X+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;X=~~(T*516.4110107421875+U)>>8;W=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;t=~~(U+V*408.5830078125)>>8;X=(X|0)>0?X:0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=((X|0)<255?X:255)+(c[s>>2]|0);W=(W|0)>0?W:0;s=r+(b+1<<2)|0;c[s>>2]=((W|0)<255?W:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=r+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=B(t,k)|0;W=(s&65534)+t<<1;T=+((d[j+(W|1)>>0]|0)+-128|0);V=+((d[j+(W+3)>>0]|0)+-128|0);U=+((d[j+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(U+T*516.4110107421875)>>8;t=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;W=~~(U+V*408.5830078125)>>8;s=(s|0)>0?s:0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=r+(X+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);W=(W|0)>0?W:0;X=r+(X+2<<2)|0;c[X>>2]=((W|0)<255?W:255)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;i=0;while(1){if((i|0)>=(J|0))break b;v=w+I*(+(i|0)+.5)/x;o=0;while(1){if((o|0)>=(M|0))break;u=w+I*(+(o|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((i|0)/(L|0)|0,h)|0)+((o|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<3&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-32&255)>>>3|W<<5&255|2)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}o=o+1|0}i=i+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<2&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-64&255)>>>3|W<<5&255|4)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((a[j+(W|1)>>0]&-16|8)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=(c[b>>2]|0)+((W<<4&255|8)&255);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-16|8)&255)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,D);Q=306;break a}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}else{r=HO(H,4)|0;if(!r){Ue(0,3,41858,z);Ea(1)}c:do if(m>>>0<2){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=((B(t,k)|0)+s|0)*3|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W+1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W+2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}else{if((m|1|0)==3){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W|2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}if((m|2|0)==6){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|2)>>0]|0)+(d[j+(W|1)>>0]|0)+(d[j+(W|3)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}switch(m|0){case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1|1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&28|2)+(b&248|4)+(W<<3&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&24|4)+(b&248|4)+(W<<2&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<4&240|8)+(b&240|8)+((a[j+(W|1)>>0]&-16|8)&255)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,A);Q=306;break a}}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}while(0);if((Q|0)==306){GO(r);r=-1}zb=R;return r|0}function qd(b,e,f,h,i){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+160|0;o=y+152|0;n=y+128|0;x=y+144|0;w=y;c[n>>2]=0;c[n+4>>2]=182;c[n+8>>2]=195;c[n+12>>2]=13;j=0;l=0;m=-1;while(1){if((j|0)==4)break;v=a[b+(c[n+(j<<2)>>2]|0)>>0]|0;j=j+1|0;l=(v&255)>(l&255)?v:l;m=(v&255)<(m&255)?v:m}l=l&255;j=m&255;a:do if((l-j|0)>=30){v=(l+j|0)>>>1;j=0;while(1){if((j|0)==4)break;a[o+j>>0]=v>>>0>(d[b+(c[n+(j<<2)>>2]|0)>>0]|0)>>>0&1;j=j+1|0}u=0;while(1){if(u>>>0>=4)break;j=u+1|0;if(((a[o+u>>0]|0)==1?(a[o+(j&3)>>0]|0)==1:0)?(a[o+(u+2&3)>>0]|0)==0:0)break;u=j}b:do switch(u&2147483647|0){case 4:{c[f>>2]=0;g[h>>3]=-1.0;j=-3;break a}case 0:{l=119;n=0;j=255;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;p=(n&2147483646|0)==12;q=n*14|0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(r=m&2147483646,((m|n)&2147483646|0)!=0):0)?!(p&((r|0)==0|(r|0)==12)):0){t=(d[b+(m+q)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+1|0}n=n+1|0}}case 1:{l=119;j=255;n=0;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;q=n&2147483646;p=(q|0)==0;q=(q|0)==12;m=13;while(1){if((m|0)<=-1)break;if(((m+-3|o)>>>0>=8?(s=(m&-2|0)==12,!(p&s)):0)?!(q&(m>>>0<2|s)):0){t=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+-1|0}n=n+1|0}}case 2:{m=13;l=119;j=255;while(1){if((m|0)<=-1){p=57;break b}n=m+-3|0;q=m>>>0<2|(m&-2|0)==12;p=m*14|0;o=13;while(1){if((o|0)<=-1)break;if((o+-3|n)>>>0>=8?!((o|m)>>>0<2|q&(o&-2|0)==12):0){t=(d[b+(o+p)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}o=o+-1|0}m=m+-1|0}}case 3:{n=13;l=119;j=255;while(1){if((n|0)<=-1){p=57;break b}o=n+-3|0;p=n&-2;q=(p|0)==12;r=(p|0)==0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(t=m&2147483646,!(q&(t|0)==0)):0)?!((t|p|0)==0|r&(t|0)==12):0){s=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=s>>>31;s=(s|0)>-1?s:0-s|0;l=l+-1|0;j=(s|0)<(j|0)?s:j}m=m+1|0}n=n+-1|0}}default:{c[f>>2]=u;k=1.0}}while(0);if((p|0)==57){c[f>>2]=u;k=(j|0)>30?1.0:+(j|0)/30.0}g[h>>3]=k;j=md(2830,0,0,w,x)|0;if((j|0)<0)j=-4;else{if(i|0)c[i>>2]=j;i=x;x=c[i+4>>2]|0;j=e;c[j>>2]=c[i>>2];c[j+4>>2]=x;j=0}}else{c[f>>2]=0;g[h>>3]=-1.0;j=-2}while(0);zb=y;return j|0}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+32|0;z=A+24|0;f=A+16|0;d=A+8|0;do if(a){if(!b){Ue(0,3,20225,d);d=-1;break}y=a+8|0;e=c[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;if(!(c[(c[y>>2]|0)+(d<<2)>>2]|0))break;d=d+1|0}if((d|0)!=(e|0)){x=jz(b)|0;if(!x){Ue(0,3,20270,f);d=-1;break}p=a+28|0;q=a+12|0;r=d<<2;s=a+20|0;t=a+16|0;v=a+24|0;e=tA(x,20293)|0;o=0;a:while(1){if(o>>>0>=4){e=36;break}w=o+r|0;b=0;n=0;while(1){if(n>>>0>=3)break;l=(n|0)==0;m=(n|0)==2;k=0;f=c[p>>2]|0;while(1){if((k|0)>=(f|0))break;j=0;while(1){if((j|0)>=(f|0))break;if(!e){e=21;break a}f=lA(e)|0;e=tA(0,20293)|0;f=255-f|0;h=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+((((B(c[p>>2]|0,k)|0)+j|0)*3|0)+n<<2)|0;c[h>>2]=f;h=c[(c[s>>2]|0)+(w<<2)>>2]|0;i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;if(!l){c[i>>2]=(c[i>>2]|0)+f;if(m){i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;c[i>>2]=(c[i>>2]|0)/3|0}}else c[i>>2]=f;j=j+1|0;b=f+b|0;f=c[p>>2]|0}k=k+1|0}n=n+1|0}i=c[p>>2]|0;j=(b|0)/(B(i*3|0,i)|0)|0;b=0;f=0;while(1){if(f>>>0>=(B(i*3|0,i)|0)>>>0)break;n=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+(f<<2)|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;i=(B(i,i)|0)+b|0;b=i;f=f+1|0;i=c[p>>2]|0}C=+u(+(+(b|0)));g[(c[t>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;f=0;h=0;b=i;while(1){if(h>>>0>=(B(b,b)|0)>>>0)break;n=(c[(c[s>>2]|0)+(w<<2)>>2]|0)+(h<<2)|0;b=(c[n>>2]|0)-j|0;c[n>>2]=b;b=(B(b,b)|0)+f|0;f=b;h=h+1|0;b=c[p>>2]|0}C=+u(+(+(f|0)));g[(c[v>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;o=o+1|0}if((e|0)==21){Ue(0,3,20298,z);GO(x);d=-1;break}else if((e|0)==36){GO(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Ue(0,3,20200,A);d=-1}while(0);zb=A;return d|0} +function Lm(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+16|0;v=y;w=b+4|0;c[w>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);t=b+8|0;u=b+12|0;s=0;a:while(1){if(s>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,s)|0;yo(g,n)|0;q=_m(d,s)|0;o=zo(g)|0;p=o+4|0;q=q+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){h=c[o>>2]|0;if(l>>>0>=(c[p>>2]|0)-h>>2>>>0)break;z=a[q>>0]|0;k=(_m(e,c[h+(l<<2)>>2]|0)|0)+16|0;do if(z<<24>>24==(a[k>>0]|0)){h=yl(n,Zm(e,c[(c[o>>2]|0)+(l<<2)>>2]|0)|0)|0;if(h>>>0>>0){k=h;h=m;i=c[(c[o>>2]|0)+(l<<2)>>2]|0;break}else{k=m;h=h>>>0>>0?h:j;break}}else{k=m;h=j}while(0);l=l+1|0;m=k;j=h}do if((m|0)!=-1){if((i|0)==-1){x=15;break a}if((j|0)==-1){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v);break}if(+(m>>>0)/+(j>>>0)<+f[u>>2]){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v)}}while(0);s=s+1|0}if((x|0)==15){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,160)|0,35007)|0,31348)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}z=(c[w>>2]|0)-(c[b>>2]|0)>>3;if(z>>>0>(Ak(d)|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,175)|0,35007)|0,31426)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}else{r=(c[w>>2]|0)-(c[b>>2]|0)>>3;break}}else r=0;while(0);zb=y;return r|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;r=t;s=b+4|0;c[s>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);p=b+8|0;q=b+12|0;o=0;while(1){if(o>>>0>=(Ak(d)|0)>>>0)break;l=Zm(d,o)|0;m=(_m(d,o)|0)+16|0;i=0;j=-1;g=2147483647;h=-1;while(1){if(i>>>0>=(Ak(e)|0)>>>0)break;u=a[m>>0]|0;k=(_m(e,i)|0)+16|0;if(u<<24>>24==(a[k>>0]|0)){u=yl(l,Zm(e,i)|0)|0;v=u>>>0>>0;k=v?u:j;g=v?i:g;h=v?j:u>>>0>>0?u:h}else k=j;i=i+1|0;j=k}do if((j|0)!=-1){if((h|0)==-1){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r);break}if(+(j>>>0)/+(h>>>0)<+f[q>>2]){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r)}}while(0);o=o+1|0}v=(c[s>>2]|0)-(c[b>>2]|0)>>3;if(v>>>0>(Ak(d)|0)>>>0){v=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,112)|0,35007)|0,31426)|0;IE(r,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(r,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(r);QE(v,u)|0;ME(v)|0;ua()}else{n=(c[s>>2]|0)-(c[b>>2]|0)>>3;break}}else n=0;while(0);zb=t;return n|0}function Nm(a){a=a|0;return a|0}function Om(a){a=a|0;return c[a>>2]|0}function Pm(a){a=a|0;return c[a+4>>2]|0}function Qm(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;u=zb;zb=zb+32|0;s=u+20|0;t=u+8|0;o=u+4|0;p=u;q=e+4|0;uo(s,(c[q>>2]|0)-(c[e>>2]|0)>>1);uo(t,(c[q>>2]|0)-(c[e>>2]|0)>>1);n=c[e>>2]|0;r=(c[q>>2]|0)-n>>3;m=c[b>>2]|0;d=c[d>>2]|0;k=c[s>>2]|0;l=c[t>>2]|0;b=0;while(1){if((b|0)==(r|0))break;y=c[n+(b<<3)>>2]|0;w=c[n+(b<<3)+4>>2]|0;v=b<<2;x=k+(v<<2)|0;c[x>>2]=c[m+(y*20|0)>>2];c[x+4>>2]=c[m+(y*20|0)+4>>2];c[x+8>>2]=c[m+(y*20|0)+8>>2];c[x+12>>2]=c[m+(y*20|0)+12>>2];v=l+(v<<2)|0;c[v>>2]=c[d+(w*20|0)>>2];c[v+4>>2]=c[d+(w*20|0)+4>>2];c[v+8>>2]=c[d+(w*20|0)+8>>2];c[v+12>>2]=c[d+(w*20|0)+12>>2];b=b+1|0}A=+(g|0);A=A*.20000000298023224+A;z=+(h|0);z=z*.20000000298023224+z;op(a,-A,A,-z,z,0,0,12,10);vo(a,+(i>>1|0),+(j>>1|0));wo(a,i,j);qp(a,c[s>>2]|0,c[t>>2]|0,(c[q>>2]|0)-(c[e>>2]|0)>>3);Fp(a,o,p);y=+f[o>>2]<3.0?-1:c[p>>2]|0;gh(t);gh(s);zb=u;return y|0}function Rm(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+48|0;h=v+32|0;r=v+28|0;s=v+24|0;t=v+20|0;u=v+16|0;n=v+12|0;o=v+8|0;p=v+4|0;q=v;qo(b,n,o,p,q,e);l=a+4|0;c[l>>2]=c[a>>2];m=ro(b)|0;m=(c[m+4>>2]|0)-(c[m>>2]|0)>>2;e=so(b)|0;if(m>>>0>(c[d+4>>2]|0)-(c[d>>2]|0)>>3>>>0){k=Xf(Xf(PE(Xf(Xf(Xf(56032,31870)|0,30067)|0,35e3)|0,342)|0,35007)|0,31916)|0;IE(h,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(k,j)|0;ME(k)|0;ua()}k=a+8|0;e=c[e>>2]|0;h=0;while(1){if((h|0)>=(m|0))break;to(b,r,s,t,u,+f[e>>2],+f[e+4>>2],+f[e+8>>2],+f[e+12>>2],+(c[n>>2]|0)+.5,+(c[o>>2]|0)+.5,+(c[p>>2]|0)+.5,+(c[q>>2]|0)+.5);do if((+f[r>>2]>2]>2]>2]>2]|0)+(c[(c[i>>2]|0)+(h<<2)>>2]<<3)|0;j=c[l>>2]|0;if((j|0)==(c[k>>2]|0)){hn(a,i);break}else{w=i;i=c[w+4>>2]|0;c[j>>2]=c[w>>2];c[j+4>>2]=i;c[l>>2]=(c[l>>2]|0)+8;break}}while(0);e=e+16|0;h=h+1|0}zb=v;return}function Sm(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=zb;zb=zb+64|0;o=q+44|0;p=q+32|0;n=q;m=e+4|0;jn(o,(c[m>>2]|0)-(c[e>>2]|0)>>3);jn(p,(c[m>>2]|0)-(c[e>>2]|0)>>3);l=c[e>>2]|0;m=(c[m>>2]|0)-l>>3;j=c[b>>2]|0;k=c[p>>2]|0;b=c[d>>2]|0;d=c[o>>2]|0;e=0;while(1){if((e|0)==(m|0))break;r=c[l+(e<<3)>>2]|0;c[k+(e<<3)>>2]=c[j+(r*20|0)>>2];c[k+(e<<3)+4>>2]=c[j+(r*20|0)+4>>2];r=c[l+(e<<3)+4>>2]|0;c[d+(e<<3)>>2]=c[b+(r*20|0)>>2];c[d+(e<<3)+4>>2]=c[b+(r*20|0)+4>>2];e=e+1|0}f[n>>2]=0.0;f[n+4>>2]=0.0;s=+(h|0);f[n+8>>2]=s;f[n+12>>2]=0.0;f[n+16>>2]=s;s=+(i|0);f[n+20>>2]=s;f[n+24>>2]=0.0;f[n+28>>2]=s;if(kn(g,a,d,k,m,n,4)|0)e=mn(a,h,i)|0;else e=0;ln(p);ln(o);zb=q;return e|0}function Tm(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+16|0;p=q;h=+ji(h);o=g+4|0;Ym(a,(c[o>>2]|0)-(c[g>>2]|0)>>3);l=p+4|0;m=a+4|0;n=a+8|0;k=0;while(1){i=c[g>>2]|0;if(k>>>0>=(c[o>>2]|0)-i>>3>>>0)break;j=c[i+(k<<3)+4>>2]|0;i=c[e>>2]|0;$m(p,l,b,+f[i+(j*20|0)>>2],+f[i+(j*20|0)+4>>2]);r=+ji(+f[p>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)>>2]);do if(r+ +ji(+f[l>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)+4>>2])<=h){i=(c[g>>2]|0)+(k<<3)|0;j=c[m>>2]|0;if((j|0)==(c[n>>2]|0)){hn(a,i);break}else{s=i;i=c[s+4>>2]|0;c[j>>2]=c[s>>2];c[j+4>>2]=i;c[m>>2]=(c[m>>2]|0)+8;break}}while(0);k=k+1|0}zb=q;return}function Um(b,d,e,g,h){b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=zb;zb=zb+64|0;u=z+40|0;v=z;w=z+52|0;x=z+48|0;t=b+4|0;c[t>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){h=+ji(h);if(!(Xm(v,g,0.0)|0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,31157)|0,35e3)|0,196)|0,35007)|0,31243)|0;IE(u,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(u,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(u);QE(r,q)|0;ME(r)|0;ua()}Ym(b,Ak(d)|0);q=b+8|0;r=b+12|0;p=0;a:while(1){if(p>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,p)|0;o=_m(d,p)|0;$m(w,x,v,+f[o>>2],+f[o+4>>2]);o=o+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){if(l>>>0>=(Ak(e)|0)>>>0)break;g=_m(e,l)|0;if((a[o>>0]|0)==(a[g+16>>0]|0)?(A=+ji(+f[w>>2]-+f[g>>2]),!(A+ +ji(+f[x>>2]-+f[g+4>>2])>h)):0){g=zl(n,Zm(e,l)|0)|0;B=g>>>0>>0;k=B?g:m;g=B?m:g>>>0>>0?g:j;i=B?l:i}else{k=m;g=j}l=l+1|0;m=k;j=g}do if((m|0)!=-1){if((i|0)==-1){y=16;break a}if((j|0)==-1){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u);break}if(+(m>>>0)/+(j>>>0)<+f[r>>2]){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u)}}while(0);p=p+1|0}if((y|0)==16){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,241)|0,35007)|0,31348)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}B=(c[t>>2]|0)-(c[b>>2]|0)>>3;if(B>>>0>(Ak(d)|0)>>>0){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,256)|0,35007)|0,31426)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}else{s=(c[t>>2]|0)-(c[b>>2]|0)>>3;break}}else s=0;while(0);zb=z;return s|0}function Vm(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));return}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Xm(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=+gn(b);if(!(+t(+d)<=c)){d=1.0/d;e=b+16|0;k=b+20|0;j=b+28|0;m=b+32|0;c=d*+xi(+f[e>>2],+f[k>>2],+f[j>>2],+f[m>>2]);f[a>>2]=c;l=b+8|0;h=b+4|0;c=d*+xi(+f[l>>2],+f[h>>2],+f[m>>2],+f[j>>2]);f[a+4>>2]=c;c=d*+xi(+f[h>>2],+f[l>>2],+f[e>>2],+f[k>>2]);f[a+8>>2]=c;g=b+12|0;i=b+24|0;c=d*+xi(+f[k>>2],+f[g>>2],+f[m>>2],+f[i>>2]);f[a+12>>2]=c;c=d*+xi(+f[b>>2],+f[l>>2],+f[i>>2],+f[m>>2]);f[a+16>>2]=c;c=d*+xi(+f[l>>2],+f[b>>2],+f[k>>2],+f[g>>2]);f[a+20>>2]=c;c=d*+xi(+f[g>>2],+f[e>>2],+f[i>>2],+f[j>>2]);f[a+24>>2]=c;c=d*+xi(+f[h>>2],+f[b>>2],+f[j>>2],+f[i>>2]);f[a+28>>2]=c;d=d*+xi(+f[b>>2],+f[h>>2],+f[g>>2],+f[e>>2]);f[a+32>>2]=d;a=1}else a=0;return a|0}function Ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>3>>>0>>0){dn(d,b,(c[a+4>>2]|0)-e>>3,a+8|0);en(a,d);fn(d)}zb=f;return}function Zm(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function _m(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function $m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var g=0.0;g=+f[c+32>>2]+(+f[c+24>>2]*d+ +f[c+28>>2]*e);f[a>>2]=(+f[c+8>>2]+(+f[c>>2]*d+ +f[c+4>>2]*e))/g;f[b>>2]=(+f[c+20>>2]+(+f[c+12>>2]*d+ +f[c+16>>2]*e))/g;return}function an(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function cn(a){a=a|0;return 536870911}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function gn(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;k=a+20|0;e=a+28|0;j=a+32|0;d=+xi(+f[h>>2],+f[k>>2],+f[e>>2],+f[j>>2]);i=a+12|0;g=a+24|0;c=+xi(+f[i>>2],+f[k>>2],+f[g>>2],+f[j>>2]);b=+xi(+f[i>>2],+f[h>>2],+f[g>>2],+f[e>>2]);return +(d*+f[a>>2]-c*+f[a+4>>2]+b*+f[a+8>>2])}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function jn(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){no(a,b);oo(a,b)}return}function kn(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0;j=a+12|0;Vk(j,g);return wn(b,d,e,g,h,i,a,j,a+24|0,+f[a+36>>2],c[a+40>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0)|0}function ln(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0;m=zb;zb=zb+96|0;e=m+88|0;g=m+80|0;h=m+72|0;i=m+64|0;j=m;k=m+56|0;l=m+48|0;d=m+40|0;if(Xm(j,a,9.999999747378752e-06)|0){n=+(b|0);f[k>>2]=n;f[k+4>>2]=0.0;f[l>>2]=n;n=+(c|0);f[l+4>>2]=n;f[d>>2]=0.0;f[d+4>>2]=n;nn(e,j,55476);nn(g,j,k);nn(h,j,l);nn(i,j,d);n=+(B(c,b)|0)*.0001;if(+on(e,g,h,i)>2];e=c+4|0;g=+f[e>>2];d=+f[b+32>>2]+(+f[b+24>>2]*h+ +f[b+28>>2]*g);f[a>>2]=(+f[b+8>>2]+(h*+f[b>>2]+g*+f[b+4>>2]))/d;f[a+4>>2]=(+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]))/d;return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0;f=zb;zb=zb+48|0;l=f+32|0;m=f+24|0;k=f+16|0;h=f+8|0;g=f;rn(l,b,a);rn(m,c,a);rn(k,d,a);rn(h,b,c);rn(g,d,c);j=+sn(l,m);i=+sn(m,k);e=+sn(l,k);e=+tn(j,i,e,+sn(h,g));zb=f;return +e}function pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=+qn(a,b,c)>0.0;f=+qn(b,c,d)>0.0;c=+qn(c,d,a)>0.0;d=+qn(d,a,b)>0.0;d=(f?1:-1)+(e?1:-1)+(c?1:-1)+(d?1:-1)|0;return (((d|0)>-1?d:0-d|0)|0)==4|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];return +((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))}function rn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=+f[b>>2]-+f[c>>2];f[a+4>>2]=+f[b+4>>2]-+f[c+4>>2];return}function sn(a,b){a=a|0;b=b|0;return +(+t(+(+f[a>>2]*+f[b+4>>2]-+f[a+4>>2]*+f[b>>2]))*.5)}function tn(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(+vn(+un(a,b,c),d))}function un(a,b,c){a=+a;b=+b;c=+c;return +(+vn(+vn(a,b),c))}function vn(a,b){a=+a;b=+b;return +(a>2]|0)-(c[i>>2]|0)>>2>>>0<(m*9|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31460)|0,31518)|0,35e3)|0,119)|0,35007)|0,31612)|0;IE(y,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(y,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(y);QE(z,x)|0;ME(z)|0;ua()}x=c[j>>2]|0;z=x;if((c[j+4>>2]|0)-x>>2>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31662)|0,31518)|0,35e3)|0,120)|0,35007)|0,31712)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((c[k+4>>2]|0)-(c[k>>2]|0)>>3>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31754)|0,31518)|0,35e3)|0,121)|0,35007)|0,31816)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((e|0)>=4){c[w>>2]=1234;l=+ji(l);x=Bj(o,e)|0;tl(z,e,0);ul(z,e,e,w);q=z+4|0;r=z+8|0;s=z+12|0;t=(h|0)>0;o=0;u=0;while(1){if(!((u|0)<(m|0)&(o|0)<(n|0)))break;ul(z,e,4,w);D=c[z>>2]<<1;C=c[q>>2]<<1;B=c[r>>2]<<1;j=c[s>>2]<<1;do if(xn(b+(D<<2)|0,b+(C<<2)|0,b+(B<<2)|0,b+(j<<2)|0,d+(D<<2)|0,d+(C<<2)|0,d+(B<<2)|0,d+(j<<2)|0)|0?(v=u*9|0,j=c[z>>2]<<1,B=c[q>>2]<<1,C=c[r>>2]<<1,D=c[s>>2]<<1,yn((c[i>>2]|0)+(v<<2)|0,b+(j<<2)|0,b+(B<<2)|0,b+(C<<2)|0,b+(D<<2)|0,d+(j<<2)|0,d+(B<<2)|0,d+(C<<2)|0,d+(D<<2)|0)|0):0){if(t?!(zn((c[i>>2]|0)+(v<<2)|0,g,h)|0):0){j=u;break}j=u+1|0}else j=u;while(0);o=o+1|0;u=j}l=1.0/l;if(u){o=c[k>>2]|0;j=0;while(1){if((j|0)>=(u|0))break;f[o+(j<<3)>>2]=0.0;c[o+(j<<3)+4>>2]=j;j=j+1|0}t=0;while(1){if(!((u|0)>2&(t|0)<(e|0)))break;r=(Bj(x,e-t|0)|0)+t|0;q=0;j=c[k>>2]|0;while(1){if((q|0)==(u|0))break;s=(c[i>>2]|0)+((c[j+(q<<3)+4>>2]|0)*9<<2)|0;o=t;while(1){if((o|0)>=(r|0))break;j=c[z+(o<<2)>>2]<<1;p=+Bn(s,b+(j<<2)|0,d+(j<<2)|0,l);j=c[k>>2]|0;D=j+(q<<3)|0;f[D>>2]=p+ +f[D>>2];o=o+1|0}q=q+1|0}An(y,j,u);t=r;u=u>>1}q=c[k>>2]|0;o=1;l=+f[q>>2];j=c[q+4>>2]|0;while(1){if((o|0)>=(u|0))break;p=+f[q+(o<<3)>>2];if(p>2]|0}o=o+1|0}Vm(a,(c[i>>2]|0)+(j*9<<2)|0);Cn(a);j=1}else j=0}else j=0;zb=A;return j|0}function xn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=+qn(a,b,c)>0.0;if((!(i^+qn(e,f,g)>0.0)?(i=+qn(b,c,d)>0.0,!(i^+qn(f,g,h)>0.0)):0)?(i=+qn(c,d,a)>0.0,!(i^+qn(g,h,e)>0.0)):0){a=+qn(d,a,b)>0.0;a=a^+qn(h,e,f)>0.0^1}else a=0;return a|0}function yn(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+128|0;w=x;k=x+124|0;l=x+120|0;m=x+112|0;n=x+104|0;o=x+96|0;p=x+88|0;q=x+80|0;r=x+72|0;s=x+64|0;t=x+56|0;u=x+48|0;v=x+40|0;if((In(o,p,q,r,k,m,b,c,d,e)|0?In(s,t,u,v,l,n,g,h,i,j)|0:0)?Jn(w,o,p,q,r,s,t,u,v)|0:0){Kn(a,w,+f[k>>2],m,+f[l>>2],n);a=1}else a=0;zb=x;return a|0}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+48|0;f=n+32|0;e=n+24|0;d=n+16|0;k=n+8|0;l=n;a:do if((c|0)>=2){m=b+8|0;g=b+16|0;nn(f,a,b);nn(e,a,m);nn(d,a,g);Gn(k,f);Gn(l,e);if(Hn(b,m,g,f,e,d)|0){j=3;i=f;f=m;h=b;while(1){if((j|0)>=(c|0))break;h=h+8|0;f=f+8|0;g=g+8|0;nn(i,a,g);if(!(Hn(h,f,g,e,d,i)|0)){d=0;break a}else{o=i;j=j+1|0;i=e;e=d;d=o}}if(Hn(f,g,b,e,d,k)|0)d=Hn(g,b,m,d,k,l)|0;else d=0}else d=0}else d=1;while(0);zb=n;return d|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;Fn(a,b,c,(c&1)+-1+((c|0)/2|0)|0);return}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,g=0,h=0,i=0;e=zb;zb=zb+16|0;i=e+8|0;g=e;h=i+4|0;$m(i,h,a,+f[b>>2],+f[b+4>>2]);f[g>>2]=+f[i>>2]-+f[c>>2];f[g+4>>2]=+f[h>>2]-+f[c+4>>2];d=+Dn(g,d);zb=e;return +d}function Cn(a){a=a|0;var b=0,c=0.0,d=0;b=a+32|0;c=1.0/+f[b>>2];f[a>>2]=+f[a>>2]*c;d=a+4|0;f[d>>2]=c*+f[d>>2];d=a+8|0;f[d>>2]=c*+f[d>>2];d=a+12|0;f[d>>2]=c*+f[d>>2];d=a+16|0;f[d>>2]=c*+f[d>>2];d=a+20|0;f[d>>2]=c*+f[d>>2];d=a+24|0;f[d>>2]=c*+f[d>>2];a=a+28|0;f[a>>2]=c*+f[a>>2];f[b>>2]=1.0;return}function Dn(a,b){a=a|0;b=+b;return +(+En(+f[a>>2],+f[a+4>>2],b))}function En(a,b,c){a=+a;b=+b;c=+c;return +(+z(+((a*a+b*b)*c+1.0)))}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+16|0;g=s;if((d|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,82)|0,35007)|0,33521)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}if((e|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,83)|0,35007)|0,33569)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}p=e+-1|0;q=b+(p<<3)|0;r=b+(p<<3)+4|0;l=d+-1|0;m=0;while(1){if((m|0)>=(l|0))break;n=+f[q>>2];o=c[r>>2]|0;g=m;d=l;do{while(1){j=b+(g<<3)|0;k=+f[j>>2];if(!(k>2]|0)>=(o|0))break}g=g+1|0}while(1){h=b+(d<<3)|0;i=+f[h>>2];if(!(n=(c[b+(d<<3)+4>>2]|0))break}d=d+-1|0}if((g|0)<=(d|0)){f[j>>2]=i;f[h>>2]=k;t=b+(g<<3)+4|0;j=b+(d<<3)+4|0;h=c[t>>2]|0;c[t>>2]=c[j>>2];c[j>>2]=h;g=g+1|0;d=d+-1|0}}while((g|0)<=(d|0));l=(g|0)<(e|0)?l:d;m=(d|0)<(p|0)?g:m}b=q;e=c[b+4>>2]|0;t=a;c[t>>2]=c[b>>2];c[t+4>>2]=e;zb=s;return}function Gn(a,b){a=a|0;b=b|0;var d=0,e=0;e=b;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;c=+qn(a,b,c)>0.0;return c^+qn(d,e,f)>0.0^1|0}function In(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0,w=0,x=0,y=0;l=(+f[h>>2]+ +f[i>>2]+ +f[j>>2]+ +f[k>>2])*.25;f[g>>2]=l;y=h+4|0;x=i+4|0;w=j+4|0;v=k+4|0;m=(+f[y>>2]+ +f[x>>2]+ +f[w>>2]+ +f[v>>2])*.25;f[g+4>>2]=m;s=+f[h>>2]-l;t=+f[y>>2]-m;q=+f[i>>2]-l;r=+f[x>>2]-m;o=+f[j>>2]-l;p=+f[w>>2]-m;l=+f[k>>2]-l;m=+f[v>>2]-m;n=(+u(+(s*s+t*t))+ +u(+(q*q+r*r))+ +u(+(o*o+p*p))+ +u(+(l*l+m*m)))*.25;if(n==0.0)g=0;else{n=1.0/n*1.4142135623730951;f[e>>2]=n;f[a>>2]=s*n;f[a+4>>2]=t*+f[e>>2];f[b>>2]=q*+f[e>>2];f[b+4>>2]=r*+f[e>>2];f[c>>2]=o*+f[e>>2];f[c+4>>2]=p*+f[e>>2];f[d>>2]=l*+f[e>>2];f[d+4>>2]=m*+f[e>>2];g=1}return g|0}function Jn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=zb;zb=zb+288|0;k=j;Ln(k,b,c,d,e,f,g,h,i);if(Mn(a,k)|0)a=!(+t(+(+gn(a)))<1.0e-05);else a=0;zb=j;return a|0}function Kn(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0;l=b+24|0;o=+f[l>>2];q=+f[g>>2];k=b+28|0;n=+f[k>>2];r=o*q+ +f[b>>2]/e;q=q*n+ +f[b+4>>2]/e;p=g+4|0;m=+f[p>>2];o=o*m+ +f[b+12>>2]/e;m=n*m+ +f[b+16>>2]/e;n=+f[d>>2]*c;h=d+4|0;i=+f[h>>2]*c;f[a>>2]=r*c;f[a+4>>2]=q*c;j=b+32|0;f[a+8>>2]=+f[j>>2]*+f[g>>2]+ +f[b+8>>2]/e-r*n-q*i;f[a+12>>2]=o*c;f[a+16>>2]=m*c;f[a+20>>2]=+f[j>>2]*+f[p>>2]+ +f[b+20>>2]/e-o*n-m*i;i=+f[l>>2]*c;f[a+24>>2]=i;e=+f[k>>2]*c;f[a+28>>2]=e;f[a+32>>2]=+f[j>>2]-i*+f[d>>2]-e*+f[h>>2];return}function Ln(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;lo(a,b,f);lo(a+72|0,c,g);lo(a+144|0,d,h);lo(a+216|0,e,i);return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0;d=zb;zb=zb+288|0;c=d;if(((((((Nn(c,b)|0?On(c,b)|0:0)?Pn(c,b)|0:0)?Qn(c,b)|0:0)?Rn(c,b)|0:0)?Sn(c,b)|0:0)?Tn(c,b)|0:0)?Un(c,b)|0:0)a=Vn(a,c)|0;else a=0;zb=d;return a|0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0;g=zb;zb=zb+32|0;d=g;h=+_n(b);f[d>>2]=h;e=b+36|0;h=+_n(e);f[d+4>>2]=h;h=+_n(b+72|0);f[d+8>>2]=h;h=+_n(b+108|0);f[d+12>>2]=h;h=+_n(b+144|0);f[d+16>>2]=h;h=+_n(b+180|0);f[d+20>>2]=h;h=+_n(b+216|0);f[d+24>>2]=h;h=+_n(b+252|0);f[d+28>>2]=h;c=jo(d)|0;d=d+(c<<2)|0;if(+f[d>>2]==0.0)a=0;else{co(b,b+(c*9<<2)|0);Yn(a,b,1.0/+u(+(+f[d>>2])));ko(a+36|0,e,63);a=1}zb=g;return a|0}function On(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0;e=zb;zb=zb+32|0;g=e;c=a+36|0;d=b+36|0;ao(c,a,d);n=a+72|0;ao(n,a,b+72|0);m=a+108|0;ao(m,a,b+108|0);l=a+144|0;ao(l,a,b+144|0);k=a+180|0;ao(k,a,b+180|0);j=a+216|0;ao(j,a,b+216|0);i=a+252|0;ao(i,a,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(n);f[g+4>>2]=h;h=+_n(m);f[g+8>>2]=h;h=+_n(l);f[g+12>>2]=h;h=+_n(k);f[g+16>>2]=h;h=+_n(j);f[g+20>>2]=h;h=+_n(i);f[g+24>>2]=h;a=io(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Pn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0;e=zb;zb=zb+32|0;g=e;c=a+72|0;m=a+36|0;d=b+72|0;ao(c,m,d);l=a+108|0;ao(l,m,b+108|0);k=a+144|0;ao(k,m,b+144|0);j=a+180|0;ao(j,m,b+180|0);i=a+216|0;ao(i,m,b+216|0);a=a+252|0;ao(a,m,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(l);f[g+4>>2]=h;h=+_n(k);f[g+8>>2]=h;h=+_n(j);f[g+12>>2]=h;h=+_n(i);f[g+16>>2]=h;h=+_n(a);f[g+20>>2]=h;a=ho(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0;e=zb;zb=zb+32|0;g=e;c=a+108|0;l=a+72|0;d=b+108|0;ao(c,l,d);k=a+144|0;ao(k,l,b+144|0);j=a+180|0;ao(j,l,b+180|0);i=a+216|0;ao(i,l,b+216|0);a=a+252|0;ao(a,l,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(k);f[g+4>>2]=h;h=+_n(j);f[g+8>>2]=h;h=+_n(i);f[g+12>>2]=h;h=+_n(a);f[g+16>>2]=h;a=go(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0;e=zb;zb=zb+16|0;g=e;c=a+144|0;k=a+108|0;d=b+144|0;ao(c,k,d);j=a+180|0;ao(j,k,b+180|0);i=a+216|0;ao(i,k,b+216|0);a=a+252|0;ao(a,k,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(j);f[g+4>>2]=h;h=+_n(i);f[g+8>>2]=h;h=+_n(a);f[g+12>>2]=h;a=fo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0;e=zb;zb=zb+16|0;g=e;c=a+180|0;j=a+144|0;d=b+180|0;ao(c,j,d);i=a+216|0;ao(i,j,b+216|0);a=a+252|0;ao(a,j,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(i);f[g+4>>2]=h;h=+_n(a);f[g+8>>2]=h;a=eo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0;e=zb;zb=zb+16|0;g=e;c=a+216|0;i=a+180|0;d=b+216|0;ao(c,i,d);a=a+252|0;ao(a,i,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(a);f[g+4>>2]=h;a=bo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Un(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=a+252|0;ao(d,a+216|0,b+252|0);c=+_n(d);if(c==0.0)a=0;else{Yn(d,d,1.0/+u(+c));a=1}return a|0}function Vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0.0;d=zb;zb=zb+384|0;e=d+336|0;c=d;g=+Wn(c,b,0);f[e>>2]=g;g=+Wn(c+36|0,b,1);f[e+4>>2]=g;g=+Wn(c+72|0,b,2);f[e+8>>2]=g;g=+Wn(c+108|0,b,3);f[e+12>>2]=g;g=+Wn(c+144|0,b,4);f[e+16>>2]=g;g=+Wn(c+180|0,b,5);f[e+20>>2]=g;g=+Wn(c+216|0,b,6);f[e+24>>2]=g;g=+Wn(c+252|0,b,7);f[e+28>>2]=g;g=+Wn(c+288|0,b,8);f[e+32>>2]=g;b=Xn(e)|0;if(+f[e+(b<<2)>>2]==0.0)b=0;else{Vm(a,c+(b*9<<2)|0);b=1}zb=d;return b|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,g=0;Yn(a,b,-+f[b+(c<<2)>>2]);g=a+(c<<2)|0;f[g>>2]=+f[g>>2]+1.0;Zn(a,b+36|0,-+f[b+(c+9<<2)>>2]);Zn(a,b+72|0,-+f[b+(c+18<<2)>>2]);Zn(a,b+108|0,-+f[b+(c+27<<2)>>2]);Zn(a,b+144|0,-+f[b+(c+36<<2)>>2]);Zn(a,b+180|0,-+f[b+(c+45<<2)>>2]);Zn(a,b+216|0,-+f[b+(c+54<<2)>>2]);Zn(a,b+252|0,-+f[b+(c+63<<2)>>2]);e=+_n(a);d=+u(+e);if(e==0.0)d=0.0;else Yn(a,a,1.0/d);return +d}function Xn(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;b=+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b;return (+f[a+32>>2]>+f[a+(b<<2)>>2]?8:b)|0}function Yn(a,b,c){a=a|0;b=b|0;c=+c;f[a>>2]=+f[b>>2]*c;f[a+4>>2]=+f[b+4>>2]*c;f[a+8>>2]=+f[b+8>>2]*c;f[a+12>>2]=+f[b+12>>2]*c;f[a+16>>2]=+f[b+16>>2]*c;f[a+20>>2]=+f[b+20>>2]*c;f[a+24>>2]=+f[b+24>>2]*c;f[a+28>>2]=+f[b+28>>2]*c;f[a+32>>2]=+f[b+32>>2]*c;return}function Zn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;f[a>>2]=+f[a>>2]+ +f[b>>2]*c;d=a+4|0;f[d>>2]=+f[d>>2]+ +f[b+4>>2]*c;d=a+8|0;f[d>>2]=+f[d>>2]+ +f[b+8>>2]*c;d=a+12|0;f[d>>2]=+f[d>>2]+ +f[b+12>>2]*c;d=a+16|0;f[d>>2]=+f[d>>2]+ +f[b+16>>2]*c;d=a+20|0;f[d>>2]=+f[d>>2]+ +f[b+20>>2]*c;d=a+24|0;f[d>>2]=+f[d>>2]+ +f[b+24>>2]*c;d=a+28|0;f[d>>2]=+f[d>>2]+ +f[b+28>>2]*c;a=a+32|0;f[a>>2]=+f[a>>2]+ +f[b+32>>2]*c;return}function _n(a){a=a|0;return +(+$n(a,a))}function $n(a,b){a=a|0;b=b|0;return +(+f[a>>2]*+f[b>>2]+ +f[a+4>>2]*+f[b+4>>2]+ +f[a+8>>2]*+f[b+8>>2]+ +f[a+12>>2]*+f[b+12>>2]+ +f[a+16>>2]*+f[b+16>>2]+ +f[a+20>>2]*+f[b+20>>2]+ +f[a+24>>2]*+f[b+24>>2]+ +f[a+28>>2]*+f[b+28>>2]+ +f[a+32>>2]*+f[b+32>>2])}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+$n(c,b);f[a>>2]=+f[a>>2]-d*+f[b>>2];c=a+4|0;f[c>>2]=+f[c>>2]-d*+f[b+4>>2];c=a+8|0;f[c>>2]=+f[c>>2]-d*+f[b+8>>2];c=a+12|0;f[c>>2]=+f[c>>2]-d*+f[b+12>>2];c=a+16|0;f[c>>2]=+f[c>>2]-d*+f[b+16>>2];c=a+20|0;f[c>>2]=+f[c>>2]-d*+f[b+20>>2];c=a+24|0;f[c>>2]=+f[c>>2]-d*+f[b+24>>2];c=a+28|0;f[c>>2]=+f[c>>2]-d*+f[b+28>>2];c=a+32|0;f[c>>2]=+f[c>>2]-d*+f[b+32>>2];return}function bo(a){a=a|0;return +f[a+4>>2]>+f[a>>2]|0}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a>>2]|0;f=a+4|0;c[a>>2]=c[b>>2];d=b+4|0;c[b>>2]=g;g=c[f>>2]|0;e=a+8|0;c[f>>2]=c[d>>2];f=b+8|0;c[d>>2]=g;d=c[e>>2]|0;g=a+12|0;c[e>>2]=c[f>>2];e=b+12|0;c[f>>2]=d;f=c[g>>2]|0;d=a+16|0;c[g>>2]=c[e>>2];g=b+16|0;c[e>>2]=f;e=c[d>>2]|0;f=a+20|0;c[d>>2]=c[g>>2];d=b+20|0;c[g>>2]=e;g=c[f>>2]|0;e=a+24|0;c[f>>2]=c[d>>2];f=b+24|0;c[d>>2]=g;d=c[e>>2]|0;g=a+28|0;c[e>>2]=c[f>>2];e=b+28|0;c[f>>2]=d;f=c[g>>2]|0;d=a+32|0;c[g>>2]=c[e>>2];b=b+32|0;c[e>>2]=f;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function eo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;return (+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b)|0}function fo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;return (+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b)|0}function go(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;return (+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b)|0}function ho(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;return (+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b)|0}function io(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;return (+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b)|0}function jo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;return (+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b)|0}function ko(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;f[a>>2]=-+f[b>>2];e=b+4|0;f[a+4>>2]=-+f[e>>2];f[a+8>>2]=-1.0;mo(a+12|0);f[a+24>>2]=+f[d>>2]*+f[b>>2];f[a+28>>2]=+f[d>>2]*+f[e>>2];c[a+32>>2]=c[d>>2];mo(a+36|0);f[a+48>>2]=-+f[b>>2];f[a+52>>2]=-+f[e>>2];f[a+56>>2]=-1.0;d=d+4|0;f[a+60>>2]=+f[d>>2]*+f[b>>2];f[a+64>>2]=+f[d>>2]*+f[e>>2];c[a+68>>2]=c[d>>2];return}function mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function no(a,b){a=a|0;b=b|0;var d=0;if((rj(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function oo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{po(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function po(a){a=a|0;f[a>>2]=0.0;f[a+4>>2]=0.0;return}function qo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+16|0;j=k;i=a+88|0;n=a+84|0;h=a+52|0;m=(((g|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)%(c[h>>2]|0)|0;c[b>>2]=m;m=(((g-m|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)/(c[h>>2]|0)|0;c[d>>2]=m;m=g-(c[b>>2]|0)-(B(c[h>>2]|0,m)|0)|0;m=((m|0)%(c[i>>2]|0)|0|0)/(c[n>>2]|0)|0;c[e>>2]=m;l=B(c[h>>2]|0,c[d>>2]|0)|0;g=g-(c[b>>2]|0)-((B(c[n>>2]|0,m)|0)+l)|0;i=(g|0)/(c[i>>2]|0)|0;c[f>>2]=i;g=c[b>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,190)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[h>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,191)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[d>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,192)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+56>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,193)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[e>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,194)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+60>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,195)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,196)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<(c[a+64>>2]|0)){zb=k;return}else{n=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,197)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}}function ro(a){a=a|0;return a+124|0}function so(a){a=a|0;return a+112|0}function to(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0;q=zb;zb=zb+16|0;p=q;l=+t(+(h-l));f[b>>2]=l;l=+t(+(i-m));f[d>>2]=l;l=+t(+(k-o));f[g>>2]=l;l=+t(+(j-n));l=+vn(l,+(c[a+60>>2]|0)-l);f[e>>2]=l;if(!(l>=0.0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,31935)|0,32155)|0,35e3)|0,333)|0,35007)|0,31976)|0;IE(p,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);g=XF(p,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(p);QE(q,g)|0;ME(q)|0;ua()}else{zb=q;return}}function uo(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){xo(a,b);oh(a,b)}return}function vo(a,b,c){a=a|0;b=+b;c=+c;f[a+8>>2]=b;f[a+12>>2]=c;return}function wo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function xo(a,b){a=a|0;b=b|0;var d=0;if((ph(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+48|0;j=t+8|0;i=t+32|0;h=t+28|0;k=t+24|0;p=t+20|0;q=t+16|0;r=t;s=a+8|0;if(!(c[s>>2]|0)){o=Xf(Xf(PE(Xf(Xf(Xf(56032,32010)|0,29190)|0,35e3)|0,405)|0,35007)|0,32045)|0;IE(j,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(j,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(j);QE(o,n)|0;ME(o)|0;ua()}c[a+100>>2]=0;l=a+72|0;m=a+76|0;c[m>>2]=c[l>>2];n=a+84|0;o=a+88|0;e=c[o>>2]|0;while(1){d=c[n>>2]|0;f=d;if((d|0)==(e|0))break;g=e-f|0;if((g|0)>8){e=e+-8|0;u=d;v=c[u>>2]|0;u=c[u+4>>2]|0;x=j;c[x>>2]=v;c[x+4>>2]=u;x=e;w=c[x+4>>2]|0;c[d>>2]=c[x>>2];c[d+4>>2]=w;d=e;c[d>>2]=v;c[d+4>>2]=u;Yl(j);c[k>>2]=f;c[p>>2]=e;c[q>>2]=f;c[h>>2]=c[k>>2];c[i>>2]=c[p>>2];c[j>>2]=c[q>>2];Ao(h,i,r,(g>>>3)+-1|0,j);e=c[o>>2]|0}d=0;while(1){if((d|0)==-1)break;x=d+-1|0;Yl(e+(x<<3)|0);d=x}e=e+-8|0;c[o>>2]=e}Bo(a,n,c[s>>2]|0,b);zb=t;return (c[m>>2]|0)-(c[l>>2]|0)>>2|0}function zo(a){a=a|0;return a+72|0}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=zb;zb=zb+16|0;l=m;j=c[f>>2]|0;k=c[a>>2]|0;b=j-k|0;i=j;h=j;if((e|0)>=2?(n=(e+-2|0)/2|0,(n|0)>=(b>>3|0)):0){b=b>>2|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;a=Oo(a,o)|0;b=a?g:b;d=a?o:d}if(!(Oo(d,i)|0)){o=c[j+4>>2]|0;i=l;c[i>>2]=c[j>>2];c[i+4>>2]=o;i=d;while(1){o=h;h=i;g=h;j=c[g+4>>2]|0;c[o>>2]=c[g>>2];c[o+4>>2]=j;c[f>>2]=i;if((n|0)<(b|0))break;b=b<<1|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;j=Oo(a,o)|0;b=j?g:b;d=j?o:d}if(Oo(d,l)|0)break;else i=d}e=l;f=c[e+4>>2]|0;o=i;c[o>>2]=c[e>>2];c[o+4>>2]=f;Yl(l)}}zb=m;return}function Bo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+64|0;m=t+8|0;l=t+56|0;k=t+52|0;n=t+44|0;o=t+36|0;p=t+28|0;q=t;g=t+48|0;h=t+40|0;f=t+32|0;r=t+16|0;if(Co(d)|0){c[g>>2]=c[a+76>>2];s=Do(d)|0;c[h>>2]=c[s>>2];s=(Do(d)|0)+4|0;c[f>>2]=c[s>>2];c[k>>2]=c[g>>2];c[l>>2]=c[h>>2];c[m>>2]=c[f>>2];Eo(a+72|0,k,l,m)|0}else{c[r>>2]=0;h=r+4|0;c[h>>2]=0;c[r+8>>2]=0;Fo(d,r,b,e);f=0;while(1){g=c[r>>2]|0;if(f>>>0>=(c[h>>2]|0)-g>>2>>>0)break;Bo(a,b,c[g+(f<<2)>>2]|0,e);f=f+1|0}i=a+100|0;if((c[i>>2]|0)<(c[a+104>>2]|0)?(j=c[b>>2]|0,s=b+4|0,(j|0)!=(c[s>>2]|0)):0){d=Go(j)|0;f=c[b>>2]|0;g=c[s>>2]|0;h=g-f|0;if((h|0)>8){j=f;g=g+-8|0;u=j;v=c[u>>2]|0;u=c[u+4>>2]|0;x=m;c[x>>2]=v;c[x+4>>2]=u;x=g;w=c[x+4>>2]|0;c[j>>2]=c[x>>2];c[j+4>>2]=w;j=g;c[j>>2]=v;c[j+4>>2]=u;Yl(m);c[n>>2]=f;c[o>>2]=g;c[p>>2]=f;c[k>>2]=c[n>>2];c[l>>2]=c[o>>2];c[m>>2]=c[p>>2];Ao(k,l,q,(h>>>3)+-1|0,m);g=c[s>>2]|0}f=0;while(1){if((f|0)==-1)break;x=f+-1|0;Yl(g+(x<<3)|0);f=x}c[s>>2]=g+-8;c[i>>2]=(c[i>>2]|0)+1;Bo(a,b,d,e)}Ho(r)}zb=t;return}function Co(b){b=b|0;return (a[b+100>>0]|0)!=0|0}function Do(a){a=a|0;return a+116|0}function Eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+48|0;p=s+40|0;o=s+36|0;q=s+32|0;r=s+28|0;j=s+8|0;k=s+4|0;l=s;f=c[a>>2]|0;g=f;b=f+((c[b>>2]|0)-g>>2<<2)|0;d=c[d>>2]|0;f=c[e>>2]|0;n=f-d|0;m=n>>2;a:do if((n|0)>0){h=a+8|0;n=c[a+4>>2]|0;i=n;if((m|0)>((c[h>>2]|0)-i>>2|0)){e=(i-g>>2)+m|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{r=c[a>>2]|0;n=(c[h>>2]|0)-r|0;q=n>>1;ml(j,n>>2>>>0>>1>>>0?(q>>>0>>0?e:q):g,b-r>>2,a+8|0);c[k>>2]=d;c[l>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[l>>2];ap(j,o,p);b=bp(a,j,b)|0;ol(j);break}}g=i-b|0;h=g>>2;e=d+(h<<2)|0;if((m|0)>(h|0)){c[q>>2]=e;c[r>>2]=f;c[o>>2]=c[q>>2];c[p>>2]=c[r>>2];_o(a,o,p,m-h|0);if((g|0)>0)f=e;else break}$o(a,b,n,b+(m<<2)|0);e=b;while(1){if((d|0)==(f|0))break a;c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}}while(0);zb=s;return b|0}function Fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+48|0;n=t+8|0;m=t+36|0;o=t+32|0;p=t+28|0;q=t;r=t+16|0;s=a+104|0;Io(r,(c[a+108>>2]|0)-(c[s>>2]|0)>>2);l=r+4|0;a=-1;f=0;k=-1;while(1){if(f>>>0>=(c[l>>2]|0)-(c[r>>2]|0)>>3>>>0)break;i=yl((c[(c[s>>2]|0)+(f<<2)>>2]|0)+4|0,e)|0;Jo(n,c[(c[s>>2]|0)+(f<<2)>>2]|0,i);g=n;j=c[g+4>>2]|0;h=(c[r>>2]|0)+(f<<3)|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;Yl(n);h=i>>>0>>0;j=h?f:k;a=h?i:a;f=f+1|0;k=j}if((k|0)==-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32065)|0,29190)|0,35e3)|0,155)|0,35007)|0,32099)|0;IE(n,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(n,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(n);QE(j,i)|0;ME(j)|0;ua()}a=c[(c[s>>2]|0)+(k<<2)>>2]|0;c[n>>2]=a;i=b+4|0;f=c[i>>2]|0;j=b+8|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);g=d+4|0;h=d+8|0;e=0;while(1){a=c[r>>2]|0;if(e>>>0>=(c[l>>2]|0)-a>>3>>>0)break;do if((e|0)!=(k|0)){f=Lo(a+(e<<3)|0)|0;if((f|0)==(Lo((c[r>>2]|0)+(k<<3)|0)|0)){a=c[(c[s>>2]|0)+(e<<2)>>2]|0;c[n>>2]=a;f=c[i>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);break}else{a=(c[r>>2]|0)+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){Mo(d,a);a=c[g>>2]|0}else{v=a;u=c[v+4>>2]|0;a=f;c[a>>2]=c[v>>2];c[a+4>>2]=u;a=(c[g>>2]|0)+8|0;c[g>>2]=a}v=c[d>>2]|0;c[o>>2]=v;c[p>>2]=a;c[m>>2]=c[o>>2];c[n>>2]=c[p>>2];No(m,n,q,a-v>>3);break}}while(0);e=e+1|0}Xl(r);zb=t;return}function Go(a){a=a|0;return c[a>>2]|0}function Ho(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Io(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Xo(a,b);Yo(a,b)}return}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=To(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Uo(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Vo(a,d);Wo(d);zb=h;return}}function Lo(a){a=a|0;return c[a+4>>2]|0}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=Po(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;Qo(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;Ro(a,d);So(d);zb=h;return}}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;i=j;if((e|0)>1?(g=(e+-2|0)/2|0,k=c[a>>2]|0,h=k+(g<<3)|0,f=(c[b>>2]|0)+-8|0,c[b>>2]=f,Oo(h,f)|0):0){a=f;e=c[a+4>>2]|0;d=i;c[d>>2]=c[a>>2];c[d+4>>2]=e;d=h;while(1){a=d;e=c[a+4>>2]|0;h=f;c[h>>2]=c[a>>2];c[h+4>>2]=e;c[b>>2]=d;if(!g)break;g=(g+-1|0)/2|0;f=k+(g<<3)|0;if(!(Oo(f,i)|0))break;else{h=d;d=f;f=h}}h=i;b=c[h+4>>2]|0;k=d;c[k>>2]=c[h>>2];c[k+4>>2]=b;Yl(i)}zb=j;return}function Oo(a,b){a=a|0;b=b|0;return (c[a+4>>2]|0)>>>0>(c[b+4>>2]|0)>>>0|0}function Po(a){a=a|0;return 536870911}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-8|0;k=h;j=c[k+4>>2]|0;i=(c[g>>2]|0)+-8|0;c[i>>2]=c[k>>2];c[i+4>>2]=j;c[g>>2]=(c[g>>2]|0)+-8;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function So(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-8|0;c[d>>2]=e;Yl(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function To(a){a=a|0;return 1073741823}function Uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Wo(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Xo(a,b){a=a|0;b=b|0;var d=0;if((Po(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function Yo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Zo(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Zo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a+4|0;d=c[b>>2]|0;while(1){if((d|0)==(f|0))break;b=c[e>>2]|0;c[b>>2]=c[d>>2];c[e>>2]=b+4;d=d+4|0}return}function $o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+4|0;i=c[h>>2]|0;f=i-e|0;g=f>>2;a=b+(g<<2)|0;e=i;while(1){if(a>>>0>=d>>>0)break;c[e>>2]=c[a>>2];j=e+4|0;c[h>>2]=j;a=a+4|0;e=j}if(f|0)$O(i+(0-g<<2)|0,b|0,f|0)|0;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;d=a+8|0;a=c[b>>2]|0;while(1){if((a|0)==(e|0))break;f=c[d>>2]|0;c[f>>2]=c[a>>2];c[d>>2]=f+4;f=a+4|0;c[b>>2]=f;a=f}return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;j=c[i>>2]|0;f=c[a>>2]|0;h=d;g=h-f|0;e=j+(0-(g>>2)<<2)|0;c[i>>2]=e;if((g|0)>0)_O(e|0,f|0,g|0)|0;f=a+4|0;g=b+8|0;e=(c[f>>2]|0)-h|0;if((e|0)>0){_O(c[g>>2]|0,d|0,e|0)|0;c[g>>2]=(c[g>>2]|0)+(e>>>2<<2)}h=c[a>>2]|0;c[a>>2]=c[i>>2];c[i>>2]=h;h=c[f>>2]|0;c[f>>2]=c[g>>2];c[g>>2]=h;h=a+8|0;d=b+12|0;a=c[h>>2]|0;c[h>>2]=c[d>>2];c[d>>2]=a;c[b>>2]=c[i>>2];return j|0}function cp(a){a=a|0;return dp(c[c[a>>2]>>2]|0)|0}function dp(a){a=a|0;return c[a+24>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=b;b=mm((c[a>>2]|0)+4|0,e)|0;zb=d;return b|0}function fp(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;gp(d,c[c[a>>2]>>2]|0);a=gm(zk(c[d>>2]|0)|0)|0;Rj(d);zb=b;return a|0}function gp(a,b){a=a|0;b=b|0;c[a>>2]=c[b+64>>2];b=c[b+68>>2]|0;c[a+4>>2]=b;if(b|0){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1}return}function hp(a){a=a|0;return ip(c[c[a>>2]>>2]|0)|0}function ip(a){a=a|0;return a+12|0}function jp(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;d=b+108|0;e=b+20|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d>>2]=1065353216;f=b+112|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return}function kp(a){a=a|0;Xj(a+124|0);gh(a+112|0);lp(a+92|0);return}function lp(a){a=a|0;mp(a);return}function mp(a){a=a|0;var b=0;np(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function np(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function op(b,d,e,g,h,i,j,k,l){b=b|0;d=+d;e=+e;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;f[b+20>>2]=d;f[b+24>>2]=e;f[b+28>>2]=g;f[b+32>>2]=h;f[b+36>>2]=-1.0;f[b+40>>2]=1.0;c[b+52>>2]=i;c[b+56>>2]=j;c[b+60>>2]=k;c[b+64>>2]=l;l=B(j,i)|0;c[b+84>>2]=l;l=B(l,k)|0;c[b+88>>2]=l;f[b+44>>2]=10.0;f[b+48>>2]=.4342944622039795;a[b+16>>0]=(j|i|0)==0&1;pp(b+92|0);return}function pp(a){a=a|0;var b=0,d=0,e=0;d=a+12|0;if(c[d>>2]|0){e=a+8|0;np(a,c[e>>2]|0);c[e>>2]=0;e=c[a+4>>2]|0;b=0;while(1){if((b|0)==(e|0))break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+1|0}c[d>>2]=0}return}function qp(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;p=t+12|0;q=t+8|0;r=t+4|0;s=t;pp(b+92|0);if(g|0){j=b+112|0;fh(j,g<<2);k=b+124|0;Vk(k,g);if(a[b+16>>0]|0)rp(b,d,e,g);l=b+68|0;m=b+72|0;n=b+76|0;o=b+80|0;h=0;i=0;while(1){if((i|0)>=(g|0))break;u=i<<2;v=d+(u<<2)|0;u=e+(u<<2)|0;sp(b,p,q,r,s,+f[v>>2],+f[v+4>>2],+f[v+8>>2],+f[v+12>>2],+f[u>>2],+f[u+4>>2],+f[u+8>>2],+f[u+12>>2]);if(tp(b,+f[p>>2],+f[q>>2],+f[r>>2],+f[s>>2])|0){v=(c[j>>2]|0)+(h<<2<<2)|0;c[v>>2]=c[l>>2];c[v+4>>2]=c[m>>2];c[v+8>>2]=c[n>>2];c[v+12>>2]=c[o>>2];c[(c[k>>2]|0)+(h<<2)>>2]=i;h=h+1|0}i=i+1|0}fh(j,h<<2);Vk(k,h)}zb=t;return}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;l=zb;zb=zb+16|0;g=l+12|0;k=l;i=a+4|0;j=Aj(c[a>>2]|0,c[i>>2]|0)|0;uo(k,e);if((e|0)<=0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33144)|0,33176)|0,35e3)|0,208)|0,35007)|0,33265)|0;IE(g,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(g,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(g);QE(m,n)|0;ME(m)|0;ua()}if((c[a>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33287)|0,33176)|0,35e3)|0,209)|0,35007)|0,33329)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}if((c[i>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33352)|0,33176)|0,35e3)|0,210)|0,35007)|0,33395)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}h=+(j|0);g=0;while(1){if((g|0)==(e|0))break;n=g<<2;o=+Bp(+f[b+(n<<2)+12>>2],+f[d+(n<<2)+12>>2])*h;f[(c[k>>2]|0)+(g<<2)>>2]=o;g=g+1|0}n=c[k>>2]|0;o=+Dp(n,(c[k+4>>2]|0)-n>>2)*.25;n=Aj(5,~~+A(+((+f[a+24>>2]-+f[a+20>>2])/o)))|0;m=a+52|0;c[m>>2]=n;n=Aj(5,~~+A(+((+f[a+32>>2]-+f[a+28>>2])/o)))|0;c[a+56>>2]=n;n=B(c[m>>2]|0,n)|0;c[a+84>>2]=n;n=B(c[a+60>>2]|0,n)|0;c[a+88>>2]=n;gh(k);zb=l;return}function sp(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+32|0;q=s+16|0;r=s;n=j-n;f[e>>2]=n;j=n;if(!(j<=-3.141592653589793)){if(j>3.141592653589793){n=j+-6.283185307179586;p=5}}else{n=j+6.283185307179586;p=5}if((p|0)==5)f[e>>2]=n;if(!(n>-3.141592653589793)){p=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,468)|0,35007)|0,32407)|0;IE(q,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);t=XF(q,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(q);QE(p,t)|0;ME(p)|0;ua()}if(!(n<=3.141592653589793)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,469)|0,35007)|0,32407)|0;IE(q,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(q,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(q);QE(t,s)|0;ME(t)|0;ua()}else{n=+Bp(k,o);f[g>>2]=n;Cp(r,+f[e>>2],n);n=+z(+(+f[g>>2]));f[g>>2]=n*+f[a+48>>2];n=+f[r>>2];j=+f[r+4>>2];o=+f[r+8>>2];k=+f[r+12>>2];g=a+8|0;t=a+12|0;f[b>>2]=h-(n*l+j*m)+(n*+f[g>>2]+j*+f[t>>2]);f[d>>2]=i-(o*l+k*m)+(o*+f[g>>2]+k*+f[t>>2]);zb=s;return}}function tp(a,b,d,e,g){a=a|0;b=+b;d=+d;e=+e;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;h=x;t=+f[a+20>>2];if((((((!(t>b)?(m=+f[a+24>>2],!(m<=b)):0)?(n=+f[a+28>>2],!(n>d)):0)?(o=+f[a+32>>2],!(o<=d)):0)?(p=e,!(p<=-3.141592653589793|p>3.141592653589793)):0)?(q=+f[a+36>>2],!(q>g)):0)?(r=+f[a+40>>2],!(r<=g)):0){if(!(t<=b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32121)|0,32155)|0,35e3)|0,360)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(m>b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32257)|0,32155)|0,35e3)|0,361)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(n<=d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32290)|0,32155)|0,35e3)|0,362)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(o>d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32339)|0,32155)|0,35e3)|0,363)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p>-3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,364)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p<=3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,365)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(q<=g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32461)|0,32155)|0,35e3)|0,366)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(r>g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32522)|0,32155)|0,35e3)|0,367)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}h=a+68|0;i=a+72|0;l=a+76|0;j=a+80|0;up(a,h,i,l,j,b,d,e,g);h=~~+s(+(+f[h>>2]+-.5));i=~~+s(+(+f[i>>2]+-.5));l=~~+s(+(+f[l>>2]+-.5));j=~~+s(+(+f[j>>2]+-.5));k=c[a+60>>2]|0;l=(k+l|0)%(k|0)|0;if((((h|0)>=0?(u=h+1|0,!((i|0)<0?1:(u|0)>=(c[a+52>>2]|0))):0)?(v=i+1|0,!((j|0)<0?1:(v|0)>=(c[a+56>>2]|0))):0)?(w=j+1|0,(w|0)<(c[a+64>>2]|0)):0){k=(l+1|0)%(k|0)|0;wp(a,vp(a,h,i,l,j)|0,1);wp(a,vp(a,u,i,l,j)|0,1);wp(a,vp(a,u,v,l,j)|0,1);wp(a,vp(a,u,v,k,j)|0,1);wp(a,vp(a,u,v,k,w)|0,1);wp(a,vp(a,u,v,l,w)|0,1);wp(a,vp(a,u,i,k,j)|0,1);wp(a,vp(a,u,i,k,w)|0,1);wp(a,vp(a,u,i,l,w)|0,1);wp(a,vp(a,h,v,l,j)|0,1);wp(a,vp(a,h,v,k,j)|0,1);wp(a,vp(a,h,v,k,w)|0,1);wp(a,vp(a,h,v,l,w)|0,1);wp(a,vp(a,h,i,k,j)|0,1);wp(a,vp(a,h,i,k,w)|0,1);wp(a,vp(a,h,i,l,w)|0,1);h=1}else h=0}else h=0;zb=x;return h|0}function up(a,b,d,e,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;var l=0.0,m=0.0;l=+(c[a+52>>2]|0);m=+f[a+20>>2];h=+Bp(h-m,+f[a+24>>2]-m)*l;f[b>>2]=h;h=+(c[a+56>>2]|0);l=+f[a+28>>2];i=+Bp(i-l,+f[a+32>>2]-l)*h;f[d>>2]=i;f[e>>2]=(j+3.141592653589793)*.15915494309189535*+(c[a+60>>2]|0);j=+(c[a+64>>2]|0);i=+f[a+36>>2];k=+Bp(k-i,+f[a+40>>2]-i)*j;f[g>>2]=k;return}function vp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+16|0;h=k;if((b|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,165)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}g=c[a+52>>2]|0;if((g|0)<=(b|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,166)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}if((d|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,167)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}i=c[a+56>>2]|0;if((i|0)<=(d|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,168)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(j,l)|0;ME(j)|0;ua()}if((e|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,169)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(l,j)|0;ME(l)|0;ua()}j=c[a+60>>2]|0;if((j|0)<=(e|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,170)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);m=XF(h,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(h);QE(l,m)|0;ME(l)|0;ua()}if((f|0)<=-1){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,171)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}if((c[a+64>>2]|0)<=(f|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,172)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}m=(B(g,d)|0)+b|0;l=(B(c[a+84>>2]|0,e)|0)+m|0;a=l+(B(c[a+88>>2]|0,f)|0)|0;if((a|0)>((B(B(i,g)|0,(B(j,f)|0)+e|0)|0)+m|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33012)|0,32155)|0,35e3)|0,176)|0,35007)|0,32597)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}else{zb=k;return a|0}return 0}function wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;e=s+8|0;n=s;if((b|0)<=-1){r=Xf(Xf(PE(Xf(Xf(Xf(56032,32563)|0,32155)|0,35e3)|0,290)|0,35007)|0,32597)|0;IE(e,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(e,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(e);QE(r,q)|0;ME(r)|0;ua()}r=a+92|0;c[e>>2]=b;g=xp(r,e)|0;if(!g){c[n>>2]=b;c[n+4>>2]=d;p=a+96|0;k=c[p>>2]|0;q=(k|0)==0;a:do if(!q){l=k+-1|0;m=(l&k|0)==0;if(!m)if(k>>>0>b>>>0)d=b;else d=(b>>>0)%(k>>>0)|0;else d=l&b;g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g)o=19;else do{g=c[g>>2]|0;if(!g){o=19;break a}h=c[g+4>>2]|0;if((h|0)!=(b|0)){if(!m){if(h>>>0>=k>>>0)h=(h>>>0)%(k>>>0)|0}else h=h&l;if((h|0)!=(d|0)){o=19;break a}}}while((c[g+8>>2]|0)!=(b|0))}else{d=0;o=19}while(0);if((o|0)==19){yp(e,r,b,n);l=a+104|0;i=+(((c[l>>2]|0)+1|0)>>>0);j=+f[a+108>>2];do if(q|j*+(k>>>0)>>0<3|(k+-1&k|0)!=0)&1;g=~~+A(+(i/j))>>>0;zp(r,d>>>0>>0?g:d);d=c[p>>2]|0;g=d+-1|0;if(!(g&d)){k=d;d=g&b;break}if(d>>>0>b>>>0){k=d;d=b}else{k=d;d=(b>>>0)%(d>>>0)|0}}while(0);g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g){h=a+100|0;c[c[e>>2]>>2]=c[h>>2];c[h>>2]=c[e>>2];c[(c[r>>2]|0)+(d<<2)>>2]=h;h=c[e>>2]|0;d=c[h>>2]|0;if(d){d=c[d+4>>2]|0;g=k+-1|0;if(g&k){if(d>>>0>=k>>>0)d=(d>>>0)%(k>>>0)|0}else d=d&g;c[(c[r>>2]|0)+(d<<2)>>2]=h}}else{c[c[e>>2]>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0}}else{r=g+12|0;c[r>>2]=(c[r>>2]|0)+d}zb=s;return}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function yp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=tB(16)|0;c[b>>2]=g;c[b+4>>2]=d+8;c[g+8>>2]=c[f>>2];c[g+12>>2]=c[f+4>>2];a[b+8>>0]=1;c[g+4>>2]=e;c[g>>2]=0;return}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Ap(a,b)}}else Ap(a,b);return}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Bp(a,b){a=+a;b=+b;return +(a/(b==0.0?1.0:b))}function Cp(a,b,c){a=a|0;b=+b;c=+c;var d=0.0;d=+w(+b)*c;c=+x(+b)*c;f[a>>2]=d;f[a+4>>2]=-c;f[a+8>>2]=c;f[a+12>>2]=d;return}function Dp(a,b){a=a|0;b=b|0;return +(+Ep(a,b,(b&1)+-1+((b|0)/2|0)|0))}function Ep(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0;r=zb;zb=zb+16|0;e=r;if((b|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,53)|0,35007)|0,33521)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}if((d|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,54)|0,35007)|0,33569)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}p=d+-1|0;q=a+(p<<2)|0;m=b+-1|0;n=0;while(1){o=+f[q>>2];if((n|0)>=(m|0))break;e=n;b=m;do{while(1){i=a+(e<<2)|0;j=+f[i>>2];k=e+1|0;if(j>2];l=b+-1|0;if(o>2]=h;f[g>>2]=j;e=k;b=l}}while((e|0)<=(b|0));m=(e|0)<(d|0)?m:b;n=(b|0)<(p|0)?e:n}zb=r;return +o}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0,h=0;f[b>>2]=0.0;c[d>>2]=-1;a=a+100|0;e=0.0;while(1){a=c[a>>2]|0;if(!a)break;g=a;h=g+12|0;if(e<+((c[h>>2]|0)>>>0)){c[d>>2]=c[g+8>>2];e=+((c[h>>2]|0)>>>0);f[b>>2]=e}}return}function Gp(a){a=a|0;ko(a,1760,12);ko(a+48|0,1808,12);ko(a+96|0,1856,12);ko(a+144|0,1904,12);ko(a+192|0,1952,12);ko(a+240|0,2e3,12);f[a+288>>2]=.10000000149011612;f[a+292>>2]=.17499999701976776;f[a+296>>2]=.25;f[a+300>>2]=.32499998807907104;f[a+304>>2]=.4000000059604645;f[a+308>>2]=.4749999940395355;f[a+312>>2]=.550000011920929;f[a+316>>2]=7.0;return}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;fm(b,96);Ip(b,((c[e+4>>2]|0)-(c[e>>2]|0)|0)/20|0);Jp(b,d,e,a,a+48|0,a+96|0,a+144|0,a+192|0,a+240|0,+f[a+288>>2],+f[a+292>>2],+f[a+296>>2],+f[a+300>>2],+f[a+304>>2],+f[a+308>>2],+f[a+312>>2],+f[a+316>>2]);return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;g=B(c[b>>2]|0,d)|0;a[f>>0]=0;Wp(b+4|0,g,f);hm(b+16|0,d);zb=e;return}function Jp(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;x=z;if(!d){y=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,33619)|0,35e3)|0,537)|0,35007)|0,33688)|0;IE(x,y+(c[(c[y>>2]|0)+-12>>2]|0)|0);w=XF(x,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(x);QE(y,w)|0;ME(y)|0;ua()}w=Ak(b)|0;y=e+4|0;v=c[y>>2]|0;u=c[e>>2]|0;if((w|0)!=((v-u|0)/20|0|0)){w=Xf(Xf(PE(Xf(Xf(Xf(56032,33704)|0,33619)|0,35e3)|0,538)|0,35007)|0,33757)|0;IE(x,w+(c[(c[w>>2]|0)+-12>>2]|0)|0);t=XF(x,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(x);QE(w,t)|0;ME(w)|0;ua()}w=0;t=0;while(1){u=(v-u|0)/20|0;if(w>>>0>=u>>>0)break;v=Kp(b,t)|0;if(Lp(v,d,(c[e>>2]|0)+(w*20|0)|0,f,g,h,i,j,k,l,m,n,o,p,q,r,s)|0){u=(c[e>>2]|0)+(w*20|0)|0;v=Mp(b,t)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];a[v+16>>0]=a[u+16>>0]|0;t=t+1|0}w=w+1|0;u=c[e>>2]|0;v=c[y>>2]|0}if((t|0)==(u|0)){Ip(b,t);zb=z;return}else{z=Xf(Xf(PE(Xf(Xf(Xf(56032,33794)|0,33619)|0,35e3)|0,617)|0,35007)|0,33845)|0;IE(x,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);k=XF(x,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(x);QE(z,k)|0;ME(z)|0;ua()}}function Kp(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function Lp(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0;s=zb;zb=zb+160|0;r=s;if(Np(r,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)|0){Op(a,r);a=1}else a=0;zb=s;return a|0}function Mp(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function Np(a,b,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;t=zb;zb=zb+336|0;aa=t+288|0;y=t+240|0;D=t+192|0;I=t+144|0;N=t+96|0;S=t+48|0;X=t;v=t+328|0;u=t+324|0;x=+f[d+12>>2]*s;x=x<1.0?1.0:x;Qp(aa,+f[d>>2],+f[d+4>>2],+f[d+8>>2],x);w=+f[aa+8>>2];s=+f[aa+20>>2];Rp(y,aa,e);C=y+8|0;Rp(C,aa,e+8|0);B=y+16|0;Rp(B,aa,e+16|0);A=y+24|0;Rp(A,aa,e+24|0);z=y+32|0;Rp(z,aa,e+32|0);d=y+40|0;Rp(d,aa,e+40|0);Rp(D,aa,g);H=D+8|0;Rp(H,aa,g+8|0);G=D+16|0;Rp(G,aa,g+16|0);F=D+24|0;Rp(F,aa,g+24|0);E=D+32|0;Rp(E,aa,g+32|0);e=D+40|0;Rp(e,aa,g+40|0);Rp(I,aa,h);M=I+8|0;Rp(M,aa,h+8|0);L=I+16|0;Rp(L,aa,h+16|0);K=I+24|0;Rp(K,aa,h+24|0);J=I+32|0;Rp(J,aa,h+32|0);g=I+40|0;Rp(g,aa,h+40|0);Rp(N,aa,i);R=N+8|0;Rp(R,aa,i+8|0);Q=N+16|0;Rp(Q,aa,i+16|0);P=N+24|0;Rp(P,aa,i+24|0);O=N+32|0;Rp(O,aa,i+32|0);h=N+40|0;Rp(h,aa,i+40|0);Rp(S,aa,j);W=S+8|0;Rp(W,aa,j+8|0);V=S+16|0;Rp(V,aa,j+16|0);U=S+24|0;Rp(U,aa,j+24|0);T=S+32|0;Rp(T,aa,j+32|0);i=S+40|0;Rp(i,aa,j+40|0);Rp(X,aa,k);$=X+8|0;Rp($,aa,k+8|0);_=X+16|0;Rp(_,aa,k+16|0);Z=X+24|0;Rp(Z,aa,k+24|0);Y=X+32|0;Rp(Y,aa,k+32|0);j=X+40|0;Rp(j,aa,k+40|0);Sp(b,v,u,x*r);r=+Tp(b,+f[X>>2],+f[X+4>>2],c[v>>2]|0,c[u>>2]|0);f[a>>2]=r;r=+Tp(b,+f[$>>2],+f[X+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+4>>2]=r;r=+Tp(b,+f[_>>2],+f[X+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+8>>2]=r;r=+Tp(b,+f[Z>>2],+f[X+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+12>>2]=r;r=+Tp(b,+f[Y>>2],+f[X+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+16>>2]=r;r=+Tp(b,+f[j>>2],+f[X+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+20>>2]=r;Sp(b,v,u,x*q);r=+Tp(b,+f[S>>2],+f[S+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+24>>2]=r;r=+Tp(b,+f[W>>2],+f[S+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+28>>2]=r;r=+Tp(b,+f[V>>2],+f[S+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+32>>2]=r;r=+Tp(b,+f[U>>2],+f[S+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+36>>2]=r;r=+Tp(b,+f[T>>2],+f[S+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+40>>2]=r;r=+Tp(b,+f[i>>2],+f[S+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+44>>2]=r;Sp(b,v,u,x*p);r=+Tp(b,+f[N>>2],+f[N+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+48>>2]=r;r=+Tp(b,+f[R>>2],+f[N+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+52>>2]=r;r=+Tp(b,+f[Q>>2],+f[N+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+56>>2]=r;r=+Tp(b,+f[P>>2],+f[N+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+60>>2]=r;r=+Tp(b,+f[O>>2],+f[N+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+64>>2]=r;r=+Tp(b,+f[h>>2],+f[N+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+68>>2]=r;Sp(b,v,u,x*o);r=+Tp(b,+f[I>>2],+f[I+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+72>>2]=r;r=+Tp(b,+f[M>>2],+f[I+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+76>>2]=r;r=+Tp(b,+f[L>>2],+f[I+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+80>>2]=r;r=+Tp(b,+f[K>>2],+f[I+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+84>>2]=r;r=+Tp(b,+f[J>>2],+f[I+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+88>>2]=r;r=+Tp(b,+f[g>>2],+f[I+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+92>>2]=r;Sp(b,v,u,x*n);r=+Tp(b,+f[D>>2],+f[D+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+96>>2]=r;r=+Tp(b,+f[H>>2],+f[D+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+100>>2]=r;r=+Tp(b,+f[G>>2],+f[D+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+104>>2]=r;r=+Tp(b,+f[F>>2],+f[D+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+108>>2]=r;r=+Tp(b,+f[E>>2],+f[D+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+112>>2]=r;r=+Tp(b,+f[e>>2],+f[D+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+116>>2]=r;Sp(b,v,u,x*m);r=+Tp(b,+f[y>>2],+f[y+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+120>>2]=r;r=+Tp(b,+f[C>>2],+f[y+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+124>>2]=r;r=+Tp(b,+f[B>>2],+f[y+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+128>>2]=r;r=+Tp(b,+f[A>>2],+f[y+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+132>>2]=r;r=+Tp(b,+f[z>>2],+f[y+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+136>>2]=r;r=+Tp(b,+f[d>>2],+f[y+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+140>>2]=r;Sp(b,v,u,x*l);l=+Tp(b,w,s,c[v>>2]|0,c[u>>2]|0);f[a+144>>2]=l;zb=t;return 1}function Op(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;Il(a,84);c=0;g=0;i=36;j=35;k=36;while(1){if((c|0)==37)break;h=c+1|0;e=b+(c<<2)|0;c=h;d=g;while(1){if((d|0)==(k|0))break;Pp(a,d,+f[e>>2]<+f[b+(c<<2)>>2]&1);c=c+1|0;d=d+1|0}e=k+j|0;c=h;g=g+i|0;i=i+-1|0;j=j+-1|0;k=e}return}function Pp(b,c,e){b=b|0;c=c|0;e=e|0;b=b+((c|0)/8|0)|0;a[b>>0]=(e&255)<<(c&7)|(d[b>>0]|0);return}function Qp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var g=0.0;g=+w(+d)*e;e=+x(+d)*e;f[a>>2]=g;f[a+4>>2]=-e;f[a+8>>2]=b;f[a+12>>2]=e;f[a+16>>2]=g;f[a+20>>2]=c;f[a+24>>2]=0.0;f[a+28>>2]=0.0;f[a+32>>2]=1.0;return}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+4|0;f[a>>2]=+f[b+8>>2]+(+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[d>>2]);f[a+4>>2]=+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[d>>2]);return}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;l=m;g=~~+s(+(+Oi(e)));c[b>>2]=g;e=+z(+(e/+(1<>2]*e);c[d>>2]=g;j=a+20|0;if(((c[j>>2]|0)+-1|0)==(g|0)){c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=0;g=0}h=c[b>>2]|0;if((h|0)>=0){i=c[a+16>>2]|0;if((h|0)<(i|0))h=g;else{c[b>>2]=i+-1;g=(c[j>>2]|0)+-1|0;k=7}}else{c[b>>2]=0;g=0;k=7}if((k|0)==7){c[d>>2]=g;h=g}g=c[b>>2]|0;if((g|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,33865)|0,33900)|0,35e3)|0,268)|0,35007)|0,33993)|0;IE(l,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);b=XF(l,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(l);QE(k,b)|0;ME(k)|0;ua()}if((g|0)>=(c[a+16>>2]|0)){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,269)|0,35007)|0,34061)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<=-1){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,270)|0,35007)|0,34138)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<(c[j>>2]|0)){zb=m;return}else{m=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,271)|0,35007)|0,34212)|0;IE(l,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);a=XF(l,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(l);QE(m,a)|0;ME(m)|0;ua()}}function Tp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var g=0,h=0,i=0;g=zb;zb=zb+16|0;i=g+4|0;h=g;e=Lg(a,d,e)|0;mi(i,h,b,c,d);c=+Up(e,+f[i>>2],+f[h>>2]);zb=g;return +c}function Up(a,b,c){a=a|0;b=+b;c=+c;return +(+Vp(a,b,c))}function Vp(a,b,c){a=a|0;b=+b;c=+c;b=+Zh(b,0.0,+(((Ng(a)|0)+-2|0)>>>0));return +(+Ci(a,b,+Zh(c,0.0,+(((Og(a)|0)+-2|0)>>>0))))}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g|0;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+b}else Xp(a,b-f|0,d);return}function Xp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+32|0;h=k;i=b+8|0;j=b+4|0;f=c[j>>2]|0;do if(((c[i>>2]|0)-f|0)>>>0>>0){f=f-(c[b>>2]|0)+d|0;g=mg(b)|0;if(g>>>0>>0)EO(b);else{l=c[b>>2]|0;m=(c[i>>2]|0)-l|0;i=m<<1;ng(h,m>>>0>>1>>>0?(i>>>0>>0?f:i):g,(c[j>>2]|0)-l|0,b+8|0);Yp(h,d,e);og(b,h);pg(h);break}}else do{a[f>>0]=a[e>>0]|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;d=d+-1|0}while((d|0)!=0);while(0);zb=k;return}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;b=d;d=c[f>>2]|0;do{a[d>>0]=a[e>>0]|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Zp(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+272|0;e=b+256|0;d=b;Ta(e|0)|0;Ra(d|0,256,34263,Oa(e|0)|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,d,Yf(d)|0);zb=b;return}function _p(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;f=i;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];g=a+24|0;h=c[b+24>>2]|0;c[f>>2]=h;e=f+4|0;b=c[b+28>>2]|0;c[e>>2]=b;if(!b){d=e;b=0}else{d=b+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;b=c[e>>2]|0}c[f>>2]=c[g>>2];c[g>>2]=h;h=a+28|0;c[d>>2]=c[h>>2];c[h>>2]=b;aq(f);zb=i;return}function aq(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function bq(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;$p(a,b);return}function cq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=zb;zb=zb+32|0;i=l+16|0;j=l+8|0;k=l;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34281)|0,34314)|0,35e3)|0,127)|0,35007)|0,34386)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);m=XF(i,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(i);QE(h,m)|0;ME(h)|0;ua()}if(!e){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34407)|0,34314)|0,35e3)|0,128)|0,35007)|0,34441)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(f>>>0>>0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34463)|0,34314)|0,35e3)|0,129)|0,35007)|0,34500)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(!g){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34545)|0,34314)|0,35e3)|0,130)|0,35007)|0,34581)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if((f|0)<0)f=B(B(g,d)|0,dq(b)|0)|0;c[a+12>>2]=f;f=B(f,e)|0;h=a+20|0;if((c[h>>2]|0)!=(f|0)?(m=a+24|0,o=uB(f)|0,c[k>>2]=0,c[i>>2]=c[k>>2],eq(j,o,i),o=c[j>>2]|0,c[j>>2]=c[m>>2],c[m>>2]=o,o=j+4|0,k=a+28|0,n=c[o>>2]|0,c[o>>2]=c[k>>2],c[k>>2]=n,aq(j),(c[m>>2]|0)==0):0){o=Xf(Xf(PE(Xf(Xf(Xf(56032,34615)|0,34314)|0,35e3)|0,149)|0,35007)|0,34650)|0;IE(i,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(i,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(i);QE(o,n)|0;ME(o)|0;ua()}c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+16>>2]=g;c[h>>2]=f;zb=l;return}function dq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;switch(a|0){case 1:break;case 2:{a=4;break}default:{d=O(16)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,34774,Yf(34774)|0);mj(d,b);Q(d|0,13208,5)}}zb=d;return a|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15768;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;fq(a,e);zb=d;return}function fq(a,b){a=a|0;b=b|0;return}function gq(a){a=a|0;ZN(a);SA(a);return}function hq(a){a=a|0;SA(c[a+12>>2]|0);return}function iq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34671?a+12|0:0)|0}function jq(a){a=a|0;Pf(a,16);return}function kq(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=zb;zb=zb+16|0;k=j+8|0;l=j+4|0;m=j;c[b>>2]=e;c[b+4>>2]=f;c[b+8>>2]=g;c[b+16>>2]=i;g=B(h,g)|0;c[b+20>>2]=g;c[m>>2]=0;a[l>>0]=a[j+12>>0]|0;c[k>>2]=c[m>>2];lq(b+24|0,d,l,k);if((h|0)<0)h=B(B(i,f)|0,dq(e)|0)|0;c[b+12>>2]=h;zb=j;return}function lq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=zb;zb=zb+16|0;d=e;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15796;c[f+12>>2]=b;c[a+4>>2]=f;c[d>>2]=b;c[d+4>>2]=b;fq(a,d);zb=e;return}function mq(a,b){a=a|0;b=b|0;return}function nq(a){a=a|0;ZN(a);SA(a);return}function oq(a){a=a|0;a=a+12|0;mq(a,c[a>>2]|0);return}function pq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34793?a+12|0:0)|0}function qq(a){a=a|0;Pf(a,16);return}function rq(a){a=a|0;aq(a+24|0);return}function sq(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+4|0;e=0;while(1){g=c[a>>2]|0;if(e>>>0>=(c[f>>2]|0)-g>>3>>>0)break;g=c[g+(e<<3)>>2]|0;Wb[c[(c[g>>2]|0)+8>>2]&3](g,b,d);e=e+1|0}return}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=zb;zb=zb+48|0;i=f;h=f+28|0;g=f+16|0;c[i>>2]=e;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;gO(g,d,Yf(d)|0);vq(h,g,i);tq(a,b,h);jO(h);jO(g);zb=f;return}function vq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+2048|0;g=f;Jx(g,2048,(a[d+11>>0]|0)<0?c[d>>2]|0:d,e)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,g,Yf(g)|0);zb=f;return}function wq(a){a=a|0;g[a>>3]=-1.0;g[a+8>>3]=-1.0;return}function xq(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;Ka(d|0,0)|0;g[a>>3]=+(c[d+4>>2]|0)*1.0e-06+ +(c[d>>2]|0);zb=b;return}function yq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;if(!(+g[a>>3]>=0.0)){d=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,67)|0,35007)|0,35010)|0;IE(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);a=XF(b,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(b);QE(d,a)|0;ME(d)|0;ua()}else{Ka(b|0,0)|0;g[a+8>>3]=+(c[b+4>>2]|0)*1.0e-06+ +(c[b>>2]|0);zb=d;return}}function zq(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0,i=0;f=zb;zb=zb+16|0;d=f;e=+g[a>>3];if(!(e>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,80)|0,35007)|0,35010)|0;IE(d,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(h,i)|0;ME(h)|0;ua()}b=+g[a+8>>3];if(!(b>=0.0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,35037)|0,34927)|0,35e3)|0,81)|0,35007)|0,35075)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);h=XF(d,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(d);QE(i,h)|0;ME(i)|0;ua()}else{zb=f;return +(b-e)}return +(0.0)}function Aq(a){a=a|0;return +(+zq(a)*1.0e3)}function Bq(a,b){a=a|0;b=b|0;var d=0;wq(a);d=a+16|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,b,Yf(b)|0);xq(a);return}function Cq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=zb;zb=zb+48|0;j=k;d=k+24|0;yq(b);f=yk()|0;Zp(d);h=(a[d+11>>0]|0)<0?c[d>>2]|0:d;i=b+16|0;if((a[i+11>>0]|0)<0)e=c[i>>2]|0;else e=i;l=+Aq(b);c[j>>2]=35129;c[j+4>>2]=h;c[j+8>>2]=35137;c[j+12>>2]=e;g[j+16>>3]=l;uq(f,8,35102,j);jO(d);jO(i);zb=k;return}function Dq(){Eq();Fq();Gq();return}function Eq(){c[13871]=0;c[13872]=0;c[13873]=0;c[13874]=0;c[13875]=1065353216;return}function Fq(){c[13876]=0;c[13877]=0;c[13878]=0;c[13879]=0;c[13880]=1065353216;return}function Gq(){Hq(0);return}function Hq(a){a=a|0;var b=0;a=zb;zb=zb+16|0;b=a;Jq(35173,26);Lq(35179,67);Lq(35188,68);Oq(35197,20);Oq(35208,21);Oq(35224,22);Sq(35238,23);Lq(35256,69);Vq(35276,70);Jq(35288,27);Sq(35305,24);Jq(35325,28);Jq(35343,29);Sq(35365,25);Sq(35388,26);Lq(35417,71);Lq(35430,72);Lq(35443,73);Jq(35459,30);Sq(35478,27);Sq(35488,28);Sq(35501,29);Lq(35514,74);Lq(35527,75);kr(35546,114);mr(35558,1);or(35570,1);qr(35593,1);or(35616,2);qr(35638,2);ur(35660,40);Lq(35677,76);ur(35694,41);Lq(35707,77);ur(35720,42);Lq(35744,78);Br(35768,3);qr(35781,3);ur(35794,43);Lq(35812,79);ur(35830,44);Lq(35846,80);ur(35862,45);Lq(35879,81);Jr(35896,15816);Jr(35925,15820);Jr(35953,15824);c[b>>2]=0;Jr(35986,b);c[b>>2]=1;Jr(36003,b);c[b>>2]=0;Jr(36019,b);c[b>>2]=0;Jr(36041,b);c[b>>2]=1;Jr(36066,b);c[b>>2]=1;Jr(36091,b);c[b>>2]=100;Jr(36116,b);c[b>>2]=0;Jr(36143,b);c[b>>2]=1;Jr(36169,b);c[b>>2]=0;Jr(36195,b);c[b>>2]=0;Jr(36222,b);c[b>>2]=1;Jr(36249,b);c[b>>2]=2;Jr(36275,b);c[b>>2]=3;Jr(36300,b);c[b>>2]=4;Jr(36338,b);c[b>>2]=0;Jr(36375,b);c[b>>2]=0;Jr(36409,b);c[b>>2]=1;Jr(36433,b);c[b>>2]=2;Jr(36459,b);c[b>>2]=2;Jr(36486,b);c[b>>2]=5;Jr(36520,b);g[b>>3]=.5;Kr(36538,b);c[b>>2]=0;Jr(36559,b);c[b>>2]=1;Jr(36578,b);c[b>>2]=2;Jr(36596,b);c[b>>2]=3;Jr(36614,b);c[b>>2]=4;Jr(36633,b);c[b>>2]=3;Jr(36655,b);c[b>>2]=515;Jr(36674,b);c[b>>2]=259;Jr(36703,b);c[b>>2]=4;Jr(36731,b);c[b>>2]=772;Jr(36750,b);c[b>>2]=1028;Jr(36780,b);c[b>>2]=0;Jr(36810,b);c[b>>2]=1;Jr(36841,b);c[b>>2]=2;Jr(36877,b);c[b>>2]=3;Jr(36911,b);c[b>>2]=0;Jr(36949,b);c[b>>2]=1;Jr(36982,b);c[b>>2]=2;Jr(37029,b);c[b>>2]=3;Jr(37071,b);c[b>>2]=4;Jr(37114,b);c[b>>2]=5;Jr(37166,b);c[b>>2]=6;Jr(37217,b);c[b>>2]=7;Jr(37262,b);c[b>>2]=8;Jr(37301,b);c[b>>2]=9;Jr(37346,b);zb=a;return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;h=i+8|0;f=i+12|0;g=c[13882]|0;c[13882]=g+1;c[f>>2]=g;g=Ur(55484,f)|0;c[g>>2]=c[f>>2];c[g+208>>2]=a;c[g+212>>2]=b;j=B(a<<2,b)|0;a=g+200|0;c[a>>2]=j;j=FO(j)|0;b=g+196|0;c[b>>2]=j;j=FO((c[a>>2]|0)/4|0)|0;e=g+204|0;c[e>>2]=j;j=hd()|0;c[g+220>>2]=j;if(!j)Ue(0,3,41354,i);yt(c[f>>2]|0,d)|0;c[h>>2]=c[a>>2];Ue(0,1,41391,h);za(0,c[g>>2]|0,c[b>>2]|0,c[a>>2]|0,g+344|0,51360,c[e>>2]|0)|0;zb=i;return c[g>>2]|0}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=tt(d)|0;d=ut(d)|0;ka(a|0,e|0,d|0,vt()|0,8,b|0);zb=c;return}function Kq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;d=g;c[d>>2]=a;if(!(Tr(55484,d)|0))a=-1;else{f=Ur(55484,d)|0;a=f+196|0;b=c[a>>2]|0;if(b|0){GO(b);c[a>>2]=0;c[f+200>>2]=0}pt(f);jd(c[f+220>>2]|0)|0;qt(55484,d)|0;b=f+328|0;d=f+332|0;a=0;while(1){e=c[b>>2]|0;if(a>>>0>=(c[d>>2]|0)-e>>3>>>0)break;Oe(c[e+(a<<3)+4>>2]|0)|0;a=a+1|0}Zr(b);SA(b);Yr(f);SA(f);a=0}zb=g;return a|0}function Lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=lt(d)|0;d=mt(d)|0;ka(a|0,e|0,d|0,Ns()|0,30,b|0);zb=c;return}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;b=g+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{b=Ur(55484,b)|0;e=b+192|0;a=At(c[e>>2]|0,c[b+472>>2]|0)|0;d=b+236|0;c[d>>2]=a;if(!a){Ue(0,3,41323,f);b=b+232|0;Lf(b)|0;a=c[d>>2]|0}else b=b+232|0;Ye(a,5.0)|0;Xe(c[d>>2]|0,.5)|0;_e(c[d>>2]|0,16)|0;Ze(c[d>>2]|0,6)|0;$e(c[d>>2]|0,6)|0;af(c[d>>2]|0,6)|0;a=kt(c[e>>2]|0)|0;c[b>>2]=a;a=0}zb=g;return a|0}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;e=g+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)d=c[d>>2]|0;b=e+340|0;if(!(jt(d,b,e+220|0)|0)){Ue(0,3,41233,f);b=-1;break}else{b=c[b>>2]|0;break}}else b=-1;while(0);zb=g;return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ft(d)|0;d=gt(d)|0;ka(a|0,e|0,d|0,Xs()|0,31,b|0);zb=c;return}function Pq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j+8|0;e=j+12|0;i=j;c[e>>2]=b;do if(!(Tr(55484,e)|0))b=-1;else{h=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)b=c[d>>2]|0;else b=d;f=h+224|0;if(!($s(b,c[h+216>>2]|0,h+220|0,f)|0)){Ue(0,3,41157,g);b=-1;break}b=h+328|0;e=h+332|0;d=c[e>>2]|0;c[i>>2]=d-(c[b>>2]|0)>>3;c[i+4>>2]=c[f>>2];if((c[h+336>>2]|0)==(d|0))at(b,i);else{f=i;g=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=g;c[e>>2]=(c[e>>2]|0)+8}b=c[i>>2]|0}while(0);zb=j;return b|0}function Qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;e=i+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){f=Ur(55484,e)|0;g=f+244|0;b=c[g>>2]|0;if((a[d+11>>0]|0)<0)e=c[d>>2]|0;else e=d;if(!(_s(f,b,e)|0)){Ue(0,3,40842,h);b=-1;break}else{c[g>>2]=(c[g>>2]|0)+1;break}}else b=-1;while(0);zb=i;return b|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;e=g;c[e>>2]=a;if(((Tr(55484,e)|0)!=0?(f=Ur(55484,e)|0,(b|0)>=0):0)?(d=c[f+328>>2]|0,(c[f+332>>2]|0)-d>>3>>>0>b>>>0):0)a=c[(c[d+(b<<3)+4>>2]|0)+4>>2]|0;else a=-1;zb=g;return a|0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Vs(d)|0;d=Ws(d)|0;ka(a|0,e|0,d|0,Xs()|0,32,b|0);zb=c;return}function Tq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=Ur(55484,b)|0;a=(c[a+332>>2]|0)-(c[a+328>>2]|0)>>3}zb=d;return a|0}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+208|0;h=i+192|0;g=i+184|0;d=i;e=b+11|0;if((a[e>>0]|0)<0)f=c[b>>2]|0;else f=b;if((ke(f,1,d,g)|0)<0){if((a[e>>0]|0)<0)b=c[b>>2]|0;c[h>>2]=b;Ue(0,3,40778,h);b=-1}else{b=c[13881]|0;c[13881]=b+1;c[g>>2]=b;_O(Rs(55504,g)|0,d|0,184)|0;b=c[g>>2]|0}zb=i;return b|0}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Ls(d)|0;d=Ms(d)|0;ka(a|0,e|0,d|0,Ns()|0,31,b|0);zb=c;return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=(Ur(55484,e)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){c[((b|0)<0?54536:a+48+(b<<8)|0)+16>>2]=d;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;n=+g[6420];g[a+168>>3]=n;j=+g[6421];g[a+176>>3]=j;m=+g[6422];g[a+184>>3]=m;i=+g[6423];g[a+192>>3]=i;l=+g[6424];g[a+200>>3]=l;h=+g[6425];g[a+208>>3]=h;k=+g[6426];g[a+216>>3]=k;f=+g[6427];g[a+224>>3]=f;g[a+56>>3]=(n+m+l+k)*.25;g[a+64>>3]=(j+i+h+f)*.25;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Uc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Vc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,51360,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function _q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Pe(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function $q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Re(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function ar(a){a=a|0;var b=0,d=0,e=0,f=0;f=zb;zb=zb+48|0;b=f+40|0;e=f;c[b>>2]=a;if(!(Tr(55484,b)|0))a=c[3954]|0;else{a=Ur(55484,b)|0;b=e;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[e>>2]=c[a+196>>2];c[e+16>>2]=1;c[e+12>>2]=c[a+204>>2];a=Mc(c[a+216>>2]|0,e)|0}zb=f;return a|0}function br(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=15816;else{a=(Ur(55484,b)|0)+216|0;a=(c[a>>2]|0)+44|0}zb=d;return c[a>>2]|0}function cr(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(Tr(55484,b)|0)Ur(55484,b)|0;zb=d;return -1}function dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;a=c[e+328>>2]|0;if((b|0)<0?1:(c[e+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}a=c[a+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[a+4>>2]|0)<=(d|0)){a=c[3956]|0;break}else{a=c[a>>2]|0;Ks(a+(d*320|0)+16|0,51360);ya(1,c[a+(d*320|0)+304>>2]|0,c[a+(d*320|0)>>2]|0,c[a+(d*320|0)+4>>2]|0,+(+g[a+(d*320|0)+8>>3]))|0;a=0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function er(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;Aa(2,c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0,+(+g[a+32>>3]),+(+g[a+40>>3]),+(+g[a+48>>3]),+(+g[a+56>>3]),+(+g[a+64>>3]),+(+g[a+72>>3]),+(+g[a+80>>3]),+(+g[a+88>>3]),+(+g[a+96>>3]),+(+g[a+104>>3]),+(+g[a+112>>3]),+(+g[a+120>>3]),+(+g[a+128>>3]),+(+g[a+136>>3]),+(+g[a+144>>3]),+(+g[a+152>>3]),+(+g[a+160>>3]),+(+g[a+168>>3]),+(+g[a+176>>3]),+(+g[a+184>>3]),+(+g[a+192>>3]),+(+g[a+200>>3]),+(+g[a+208>>3]),+(+g[a+216>>3]),+(+g[a+224>>3]),c[a+240>>2]|0)|0;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+80|0;q=r+56|0;p=r+48|0;d=r+72|0;i=r+76|0;e=r+68|0;n=r;o=r+64|0;c[d>>2]=a;do if(!(Tr(55484,d)|0))a=c[3954]|0;else{k=Ur(55484,d)|0;l=k+244|0;if((c[l>>2]|0)<=(b|0)){a=c[3956]|0;break}c[i>>2]=0;c[e>>2]=-1;f[o>>2]=-1.0;m=k+240|0;a=c[m>>2]|0;do if((a|0)==-2){j=k+232|0;yg(c[j>>2]|0,c[k+204>>2]|0)|0;Ag(c[j>>2]|0,i,e)|0;e=c[e>>2]|0;j=c[i>>2]|0;a=-1;d=0;while(1){if((d|0)>=(e|0))break;do if((c[j+(d*68|0)+48>>2]|0)==(b|0)?(c[j+(d*68|0)+60>>2]|0)==0:0){if((a|0)==-1)a=c[j+(d*68|0)+52>>2]|0;else{g=+f[j+(d*68|0)+52>>2];if(!(+f[o>>2]>g))break;a=(f[h>>2]=g,c[h>>2]|0)}c[o>>2]=a;a=d}while(0);d=d+1|0}if((a|0)<=-1){c[m>>2]=-2;d=30;break}i=c[j+48>>2]|0;c[m>>2]=i;e=0;while(1){if((e|0)==3)break;d=0;while(1){if((d|0)==4)break;c[n+(e<<4)+(d<<2)>>2]=c[j+(a*68|0)+(e<<4)+(d<<2)>>2];d=d+1|0}e=e+1|0}vf(c[k+248+(i<<2)>>2]|0,n)|0;a=c[m>>2]|0;d=25}else d=25;while(0);do if((d|0)==25)if((a|0)>-1){a=Ct(c[k+236>>2]|0,c[k+248+(a<<2)>>2]|0,c[k+196>>2]|0,n,o)|0;if((a|0)<0){c[p>>2]=a;Ue(0,1,37701,p);c[m>>2]=-2;d=30;break}p=(c[l>>2]|0)+-1|0;c[q>>2]=c[k+248+(c[m>>2]<<2)>>2];c[q+4>>2]=p;Ue(0,1,37720,q);if((c[m>>2]|0)>-1)xa(3,b|0,+(+f[o>>2]),+(+f[n>>2]),+(+f[n+4>>2]),+(+f[n+8>>2]),+(+f[n+12>>2]),+(+f[n+16>>2]),+(+f[n+20>>2]),+(+f[n+24>>2]),+(+f[n+28>>2]),+(+f[n+32>>2]),+(+f[n+36>>2]),+(+f[n+40>>2]),+(+f[n+44>>2]))|0;else d=30}else d=30;while(0);if((d|0)==30)wa(4,b|0)|0;a=0}while(0);zb=r;return a|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Tr(55484,d)|0))b=0;else{a=(Ur(55484,d)|0)+216|0;d=(b|0)!=0;tc(c[a>>2]|0,d&1)|0;c[e>>2]=d?37670:37674;Ue(0,1,37679,e)}zb=f;return b|0}function hr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;xc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function ir(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;a=c[(c[a>>2]|0)+4834148>>2]|0}zb=d;return a|0}function jr(a){a=a|0;c[3916]=a;return}function kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Fs(d)|0;d=Gs(d)|0;ka(a|0,e|0,d|0,Hs()|0,46,b|0);zb=c;return}function lr(){return c[3916]|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=As(d)|0;d=Bs(d)|0;ka(a|0,e|0,d|0,Cs()|0,82,b|0);zb=c;return}function nr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+312|0;g[d>>3]=b}zb=e;return}function or(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=us(d)|0;d=vs(d)|0;ka(a|0,e|0,d|0,ws()|0,1,b|0);zb=c;return}function pr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+312|0;b=+g[d>>3]}zb=e;return +b}function qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ps(d)|0;d=qs(d)|0;ka(a|0,e|0,d|0,rs()|0,1,b|0);zb=c;return}function rr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+320|0;g[d>>3]=b}zb=e;return}function sr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+320|0;b=+g[d>>3]}zb=e;return +b}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(uc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37628,e)}zb=f;return}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ks(d)|0;d=ls(d)|0;ka(a|0,e|0,d|0,ms()|0,2,b|0);zb=c;return}function vr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Cc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;d=g+4|0;c[d>>2]=a;if((Tr(55484,d)|0?(e=Ur(55484,d)|0,b>>>0<=255):0)?(Ac(c[e+216>>2]|0,b)|0)==0:0){c[f>>2]=b;Ue(0,1,37602,f)}zb=g;return}function xr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Bc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Fc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37567,e)}zb=f;return}function zr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ic(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Ar(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=j+8|0;c[e>>2]=a;if(((Tr(55484,e)|0?(f=Ur(55484,e)|0,!(b<=0.0|b>=1.0)):0)?(h=b,d=c[f+216>>2]|0,d|0):0)?(Jc(d,h)|0)==0:0){g[i>>3]=h;Ue(0,1,37536,i)}zb=j;return}function Br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ds(d)|0;d=es(d)|0;ka(a|0,e|0,d|0,fs()|0,2,b|0);zb=c;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+8|0;e=f;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if(!a)b=-1.0;else{d=(Kc(a,e)|0)==0;b=d?+g[e>>3]:-1.0}}zb=f;return +b}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+216|0;Gc(c[d>>2]|0,b)|0}zb=e;return}function Er(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;Hc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(yc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37506,e)}zb=f;return}function Gr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(zc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Dc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37477,e)}zb=f;return}function Ir(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ec(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Jr(a,b){a=a|0;b=b|0;var c=0;c=Pr()|0;ha(a|0,c|0,+(+Rr(Qr(b)|0)));return}function Kr(a,b){a=a|0;b=b|0;var c=0;c=Lr()|0;ha(a|0,c|0,+(+Nr(+Mr(b))));return}function Lr(){return Or()|0}function Mr(a){a=a|0;return +(+g[a>>3])}function Nr(a){a=+a;return +a}function Or(){return 14120}function Pr(){return Sr()|0}function Qr(a){a=a|0;return c[a>>2]|0}function Rr(a){a=a|0;return +(+(a|0))}function Sr(){return 14080}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Vr(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Wr(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(496)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];g=h+16|0;aP(g|0,0,480)|0;cs(g);a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Wr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)bs(a,b)}}else bs(a,b);return}function Xr(a){a=a|0;Yr(a+8|0);return}function Yr(a){a=a|0;Zr(a+328|0);_r(a+288|0);return}function Zr(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function _r(a){a=a|0;$r(a);return}function $r(a){a=a|0;var b=0;as(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function as(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function cs(a){a=a|0;var b=0;c[a+192>>2]=0;c[a+196>>2]=0;b=a+204|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+240>>2]=-2;c[a+244>>2]=0;b=a+288|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+304>>2]=1065353216;g[a+312>>3]=.0001;g[a+320>>3]=1.0e3;b=a+328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+472>>2]=2;return}function ds(a){a=a|0;return 3}function es(a){a=a|0;return js()|0}function fs(){return 37531}function gs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+is(c);Tb[a&3](b,c);return}function hs(a){a=a|0;return a|0}function is(a){a=+a;return +a}function js(){return 15828}function ks(a){a=a|0;return 3}function ls(a){a=a|0;return os()|0}function ms(){return 37623}function ns(a,b,c){a=a|0;b=b|0;c=c|0;b=hs(b)|0;c=hs(c)|0;Ub[a&63](b,c);return}function os(){return 15840}function ps(a){a=a|0;return 2}function qs(a){a=a|0;return ts()|0}function rs(){return 37654}function ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;c=+Db[a&3](b);g[e>>3]=c;c=+Mr(e);zb=d;return +c}function ts(){return 15852}function us(a){a=a|0;return 3}function vs(a){a=a|0;return zs()|0}function ws(){return 37658}function xs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+ys(c);Tb[a&3](b,c);return}function ys(a){a=+a;return +a}function zs(){return 15860}function As(a){a=a|0;return 1}function Bs(a){a=a|0;return Es()|0}function Cs(){return 37663}function Ds(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;a=Fb[a&1]()|0;c[d>>2]=a;a=Qr(d)|0;zb=b;return a|0}function Es(){return 15872}function Fs(a){a=a|0;return 2}function Gs(a){a=a|0;return Js()|0}function Hs(){return 37666}function Is(a,b){a=a|0;b=b|0;b=hs(b)|0;Sb[a&255](b);return}function Js(){return 15876}function Ks(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((d|0)==3)break;c=0;while(1){if((c|0)==4)break;g[b+(d<<5)+(c<<3)>>3]=+g[a+(d<<5)+(c<<3)>>3];c=c+1|0}d=d+1|0}return}function Ls(a){a=a|0;return 2}function Ms(a){a=a|0;return Qs()|0}function Ns(){return 40673}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zb;zb=zb+16|0;f=d+12|0;e=d;Ps(e,b);b=Gb[a&127](e)|0;c[f>>2]=b;b=Qr(f)|0;jO(e);zb=d;return b|0}function Ps(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,b+4|0,d);return}function Qs(){return 15884}function Rs(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Ss(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ts(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Ss(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(200)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];aP(h+16|0,0,184)|0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Us(a,b)}}else Us(a,b);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Vs(a){a=a|0;return 3}function Ws(a){a=a|0;return Zs()|0}function Xs(){return 40837}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;b=hs(b)|0;d=hs(d)|0;d=Ib[a&63](b,d)|0;c[f>>2]=d;d=Qr(f)|0;zb=e;return d|0}function Zs(){return 15892}function _s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=zb;zb=zb+96|0;n=r+80|0;m=r+72|0;l=r+64|0;k=r+56|0;j=r+48|0;i=r+40|0;q=r+32|0;p=r+24|0;o=r+16|0;h=r+8|0;s=r;e=r+88|0;f=r+84|0;g=c[a+232>>2]|0;c[e>>2]=0;c[s>>2]=d;Ue(0,1,40887,s);do if((Uf(d,40905,f)|0)>=0){c[o>>2]=b;Ue(0,1,40949,o);if((Vf(c[f>>2]|0,-1,b)|0)<0){Ue(0,3,40974,p);a=0;break}if((Sf(e,f)|0)<0){Ue(0,3,41010,q);a=0;break}Ue(0,1,41037,i);c[j>>2]=d;Ue(0,1,41046,j);s=tf(d,41063,0)|0;c[a+248+(b<<2)>>2]=s;if(!s){c[k>>2]=d;Ue(0,3,41068,k)}Ue(0,1,41037,l);if((b|0)==10)Ea(-1);if((fg(g,c[e>>2]|0)|0)<0){Ue(0,3,41101,m);a=0;break}else{Tf(e)|0;Ue(0,1,41126,n);a=1;break}}else{c[h>>2]=d;Ue(0,3,40911,h);a=0}while(0);zb=r;return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=zb;zb=zb+16|0;a=Se(a,c[d>>2]|0)|0;c[e>>2]=a;a:do if(!a){Ue(0,3,41206,f);jd(c[d>>2]|0)|0;a=0}else switch(c[a+108>>2]|0){case 0:{Fc(b,0)|0;a=1;break a}case 1:{Fc(b,2)|0;a=1;break a}default:{Fc(b,3)|0;a=1;break a}}while(0);zb=f;return a|0}function at(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=bt(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;ct(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;dt(a,d);et(d);zb=h;return}}function bt(a){a=a|0;return 536870911}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function et(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ft(a){a=a|0;return 3}function gt(a){a=a|0;return it()|0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;g=e+12|0;f=e;b=hs(b)|0;Ps(f,d);d=Ib[a&63](b,f)|0;c[g>>2]=d;d=Qr(g)|0;jO(f);zb=e;return d|0}function it(){return 15904}function jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;g=sd(c[d>>2]|0,a)|0;c[b>>2]=g;if((g|0)<0){c[e>>2]=a;Ue(0,3,41277,e);jd(c[d>>2]|0)|0;a=0}else a=1;zb=f;return a|0}function kt(a){a=a|0;return Jf(a)|0}function lt(a){a=a|0;return 2}function mt(a){a=a|0;return ot()|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;b=Gb[a&127](b)|0;c[e>>2]=b;b=Qr(e)|0;zb=d;return b|0}function ot(){return 15916}function pt(a){a=a|0;var b=0,d=0;b=a+216|0;d=c[b>>2]|0;if(d|0){gd(d)|0;wc(c[b>>2]|0)|0;c[b>>2]=0}b=a+228|0;if(c[b>>2]|0){rc(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){ne(b)|0;c[b>>2]=0}return}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+4|0;e=f;b=Tr(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];rt(a,d)|0;b=1}zb=f;return b|0}function rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;h=g+16|0;f=g+4|0;i=g;d=c[d>>2]|0;e=c[d>>2]|0;c[i>>2]=d;c[h>>2]=c[i>>2];st(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d|0){if(a[f+8>>0]|0)Xr(d+8|0);Pf(d,496)}zb=g;return e|0}function st(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;i=(m&l|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(l>>>0)|0;else j=m&e;f=(c[d>>2]|0)+(j<<2)|0;n=c[f>>2]|0;while(1){e=c[n>>2]|0;if((e|0)==(o|0))break;else n=e}k=d+8|0;if((n|0)!=(k|0)){e=c[n+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0))g=o;else h=14}else h=14;do if((h|0)==14){e=c[o>>2]|0;if(e|0){e=c[e+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0)){g=o;break}}c[f>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(!i){if(f>>>0>=l>>>0)f=(f>>>0)%(l>>>0)|0}else f=f&m;if((f|0)!=(j|0)){c[(c[d>>2]|0)+(f<<2)>>2]=n;e=c[o>>2]|0}}c[n>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=k;a[b+8>>0]=1;return}function tt(a){a=a|0;return 4}function ut(a){a=a|0;return xt()|0}function vt(){return 41348}function wt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;b=hs(b)|0;d=hs(d)|0;e=hs(e)|0;e=Jb[a&63](b,d,e)|0;c[g>>2]=e;e=Qr(g)|0;zb=f;return e|0}function xt(){return 2048}function yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+48|0;l=m+24|0;k=m+16|0;i=m+8|0;f=m;d=m+32|0;e=m+28|0;c[d>>2]=a;c[e>>2]=b;do if((Tr(55484,d)|0)!=0?(j=Ur(55484,d)|0,(zt(55504,e)|0)!=0):0){h=j+8|0;_O(h|0,Rs(55504,e)|0,184)|0;a=c[h>>2]|0;b=j+208|0;d=c[j+12>>2]|0;e=j+212|0;if(!((a|0)==(c[b>>2]|0)?(d|0)==(c[e>>2]|0):0)){c[f>>2]=a;c[f+4>>2]=d;Ue(0,2,41698,f);be(h,c[b>>2]|0,c[e>>2]|0,h)|0}pt(j);a=me(h,15)|0;d=j+192|0;c[d>>2]=a;if(!a){Ue(0,3,41745,i);a=-1;break}a=sc(a)|0;b=j+216|0;c[b>>2]=a;if(!a){Ue(0,3,41783,k);a=-1;break}Lc(a,c[j+472>>2]|0)|0;k=pc(h)|0;c[j+228>>2]=k;if(!k){Ue(0,3,41820,l);a=-1;break}else{fd(c[b>>2]|0,c[j+220>>2]|0)|0;le(c[d>>2]|0,+g[j+312>>3],+g[j+320>>3],j+344|0);a=kt(c[d>>2]|0)|0;c[j+232>>2]=a;a=0;break}}else a=-1;while(0);zb=m;return a|0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function At(a,b){a=a|0;b=b|0;b=Bt(b,c[a>>2]|0,c[a+4>>2]|0)|0;c[b>>2]=1;c[b+12>>2]=a;a=Ee(a+8|0)|0;c[b+16>>2]=a;Ge(a,0.0)|0;return b|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0;g=zb;zb=zb+16|0;e=FO(13732)|0;if(!e){Ue(0,3,41858,g);Ea(1)}c[e+20>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;c[e+24>>2]=25;c[e+28>>2]=11;c[e+32>>2]=11;c[e+36>>2]=10;f[e+40>>2]=.6000000238418579;f[e+44>>2]=2.0;c[e+13280>>2]=1;d=FO(B(d,b)|0)|0;c[e+13300>>2]=d;if(!d){Ue(0,3,41858,g+8|0);Ea(1)}else{c[e+13304>>2]=0;zb=g;return e|0}return 0}function Ct(a,b,d,e,h){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+48|0;x=D;y=D+40|0;z=D+32|0;a:do if((a|0)!=0&(b|0)!=0&(d|0)!=0&(e|0)!=0&(h|0)!=0){C=b+152|0;if((c[C>>2]|0)<1)i=-2;else{f[h>>2]=0.0;j=b+4|0;B=b+8|0;k=b+56|0;l=b+104|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;wd(B,(c[b>>2]|0)+(i*112|0)+12|0,a+48+(i*48|0)|0)|0;if((c[C>>2]|0)>1?(wd(k,(c[b>>2]|0)+(i*112|0)+12|0,a+528+(i*48|0)|0)|0,(c[C>>2]|0)>2):0)wd(l,(c[b>>2]|0)+(i*112|0)+12|0,a+1008+(i*48|0)|0)|0;i=i+1|0}if((c[a>>2]|0)==1){q=a+12|0;r=a+2672|0;n=a+7496|0;Dt(c[q>>2]|0,a+48|0,b,r,n);o=a+4|0;p=a+8|0}else{o=a+4|0;p=a+8|0;r=a+2672|0;n=a+7496|0;Et(c[o>>2]|0,c[p>>2]|0,a+48|0,b,r,n);q=a+12|0}s=a+36|0;t=a+13280|0;u=b+156|0;v=a+1488|0;w=a+40|0;A=0;i=r;j=0;while(1){if((j|0)>=(c[s>>2]|0))break;m=0;l=A;k=i;while(1){if((m|0)>=(c[t>>2]|0))break;if((j|0)==(c[s>>2]|0))break;i=pf(k,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){if((k|0)!=(r|0))break;i=pf(n,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){k=n;break}else k=n}E=k+(i*24|0)|0;c[x+(m<<2)>>2]=E;c[a+1488+(l<<3)>>2]=c[k+(i*24|0)+16>>2];c[a+1488+(l<<3)+4>>2]=c[k+(i*24|0)+20>>2];c[a+13284+(m*52|0)>>2]=a;c[a+13284+(m*52|0)+4>>2]=b;c[a+13284+(m*52|0)+8>>2]=E;c[a+13284+(m*52|0)+12>>2]=d;i=l+1|0;m=m+1|0;l=(i|0)==5?A:i;j=j+1|0}if(!m)break;l=0;i=A;while(1){if((l|0)==(m|0))break;E=a+13284+(l*52|0)+24|0;A=Lt(c[a+13284+(l*52|0)>>2]|0,c[a+13284+(l*52|0)+4>>2]|0,c[a+13284+(l*52|0)+8>>2]|0,c[a+13284+(l*52|0)+12>>2]|0,c[a+13284+(l*52|0)+16>>2]|0,a+13284+(l*52|0)+20|0,E)|0;c[a+13284+(l*52|0)+48>>2]=A;if((A|0)==0?+f[E>>2]>+f[w>>2]:0){if((c[a>>2]|0)==1){E=c[q>>2]|0;fe(E+104|0,+f[a+13284+(l*52|0)+28>>2],+f[a+13284+(l*52|0)+32>>2],y,z,c[E+176>>2]|0)|0;f[a+1872+(i<<3)>>2]=+g[y>>3];f[a+1872+(i<<3)+4>>2]=+g[z>>3]}else{c[a+1872+(i<<3)>>2]=c[a+13284+(l*52|0)+28>>2];c[a+1872+(i<<3)+4>>2]=c[a+13284+(l*52|0)+32>>2]}c[a+2192+(i*12|0)>>2]=c[a+13284+(l*52|0)+36>>2];c[a+2192+(i*12|0)+4>>2]=c[a+13284+(l*52|0)+40>>2];c[a+2192+(i*12|0)+8>>2]=c[a+13284+(l*52|0)+44>>2];E=c[x+(l<<2)>>2]|0;c[a+1488+(i<<3)>>2]=c[E+16>>2];c[a+1488+(i<<3)+4>>2]=c[E+20>>2];c[a+12320+(i*24|0)>>2]=c[E>>2];c[a+12320+(i*24|0)+4>>2]=c[E+4>>2];c[a+12320+(i*24|0)+8>>2]=c[E+8>>2];c[a+12320+(i*24|0)+12>>2]=0;i=i+1|0}l=l+1|0}A=i;i=k}i=0;while(1){if((i|0)>=(A|0))break;E=b+156+(i*24|0)|0;z=a+12320+(i*24|0)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];c[E+16>>2]=c[z+16>>2];c[E+20>>2]=c[z+20>>2];i=i+1|0}c[b+156+(A*24|0)+12>>2]=-1;i=(A|0)<3;if((c[a>>2]|0)==1){if(i){c[C>>2]=0;i=-3;break}j=a+16|0;k=a+1872|0;l=a+2192|0;F=+Ft(c[j>>2]|0,B,k,l,A,e,0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(Ge(c[j>>2]|0,.800000011920929)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.6000000238418579)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.4000000059604645)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,0.0)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}else{if(i){c[C>>2]=0;i=-3;break}j=a+1872|0;k=a+2192|0;F=+Gt(B,j,k,A,e,0,1.0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(F=+Gt(e,j,k,A,e,1,.800000011920929),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.6000000238418579),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.4000000059604645),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,0.0),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}c[C>>2]=(c[C>>2]|0)+1;i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+104+(i<<4)+(j<<2)>>2]=c[b+56+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+56+(i<<4)+(j<<2)>>2]=c[b+8+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3){i=0;break a}j=0;while(1){if((j|0)==4)break;c[b+8+(i<<4)+(j<<2)>>2]=c[e+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}}}else i=-1;while(0);zb=D;return i|0}function Dt(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;Q=zb;zb=zb+80|0;P=Q+48|0;I=Q;J=Q+76|0;L=Q+72|0;N=Q+64|0;O=Q+56|0;q=d+4|0;r=+(c[a>>2]|0);s=+(c[a+4>>2]|0);t=I+4|0;v=I+12|0;w=I+16|0;x=I+20|0;y=I+28|0;z=I+32|0;A=I+36|0;B=I+44|0;C=I+8|0;D=I+24|0;E=I+40|0;F=N+4|0;G=O+4|0;H=g+4812|0;k=0;l=0;p=0;a:while(1){if((p|0)>=(c[q>>2]|0)){i=29;break}i=0;while(1){if((i|0)==3)break;h=0;while(1){if((h|0)==4)break;c[I+(i<<4)+(h<<2)>>2]=c[b+(p*48|0)+(i<<4)+(h<<2)>>2];h=h+1|0}i=i+1|0}h=k;i=l;o=0;k=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0;while(1){if((o|0)>=(c[k+4>>2]|0))break;n=0;l=k;while(1){k=c[l>>2]|0;if((n|0)>=(c[k+(o*20|0)+4>>2]|0))break;l=c[k+(o*20|0)>>2]|0;l=(Df(a,I,+f[l+(n*20|0)+8>>2],+f[l+(n*20|0)+12>>2],J,L)|0)<0;j=+f[J>>2];do if((!(l|j<0.0)?(m=+f[L>>2],!(m>=s)&(!(j>=r)&!(m<0.0))):0)?(l=c[(c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0)+(o*20|0)>>2]|0,K=+f[l+(n*20|0)+8>>2],M=+f[l+(n*20|0)+12>>2],R=+f[v>>2]+(+f[I>>2]*K+ +f[t>>2]*M),j=+f[y>>2]+(K*+f[w>>2]+M*+f[x>>2]),S=+f[B>>2]+(K*+f[z>>2]+M*+f[A>>2]),m=+u(+(R*R+j*j+S*S)),!(+f[E>>2]*(S/m)+(+f[C>>2]*(R/m)+ +f[D>>2]*(j/m))>-.10000000149011612)):0){f[N>>2]=K;f[F>>2]=M;nf(a,I,N,O)|0;j=+f[G>>2];k=c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0;m=+f[k+(o*20|0)+12>>2];if(j<=m?j>=+f[k+(o*20|0)+16>>2]:0){if((i|0)==200){i=19;break a}c[e+(i*24|0)>>2]=p;c[e+(i*24|0)+4>>2]=o;c[e+(i*24|0)+8>>2]=n;c[e+(i*24|0)+16>>2]=c[J>>2];c[e+(i*24|0)+20>>2]=c[L>>2];c[e+(i*24|0)+12>>2]=0;i=i+1|0;break}if(j<=m*2.0?j>=+f[k+(o*20|0)+16>>2]*.5:0)if((h|0)==200){c[H>>2]=-1;h=200;break}else{c[g+(h*24|0)>>2]=p;c[g+(h*24|0)+4>>2]=o;c[g+(h*24|0)+8>>2]=n;c[g+(h*24|0)+16>>2]=c[J>>2];c[g+(h*24|0)+20>>2]=c[L>>2];c[g+(h*24|0)+12>>2]=0;h=h+1|0;break}}while(0);n=n+1|0;l=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0}o=o+1|0;k=l}k=h;l=i;p=p+1|0}if((i|0)==19){Ue(0,3,41890,P);h=e+4812|0}else if((i|0)==29){c[e+(l*24|0)+12>>2]=-1;h=g+(k*24|0)+12|0}c[h>>2]=-1;zb=Q;return} +function Et(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+80|0;A=B+48|0;w=B;x=B+76|0;y=B+72|0;z=B+64|0;u=B+56|0;v=e+4|0;t=+(a|0);p=+(b|0);q=z+4|0;r=u+4|0;s=h+4812|0;j=0;k=0;o=0;a:while(1){if((o|0)>=(c[v>>2]|0)){b=28;break}b=0;while(1){if((b|0)==3)break;a=0;while(1){if((a|0)==4)break;c[w+(b<<4)+(a<<2)>>2]=c[d+(o*48|0)+(b<<4)+(a<<2)>>2];a=a+1|0}b=b+1|0}a=j;b=k;n=0;j=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0;while(1){if((n|0)>=(c[j+4>>2]|0))break;m=0;k=j;while(1){j=c[k>>2]|0;if((m|0)>=(c[j+(n*20|0)+4>>2]|0))break;k=c[j+(n*20|0)>>2]|0;k=(Df(0,w,+f[k+(m*20|0)+8>>2],+f[k+(m*20|0)+12>>2],x,y)|0)<0;i=+f[x>>2];do if(!(k|i<0.0)?(l=+f[y>>2],!(l>=p)&(!(i>=t)&!(l<0.0))):0){j=c[(c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(n*20|0)>>2]|0;c[z>>2]=c[j+(m*20|0)+8>>2];c[q>>2]=c[j+(m*20|0)+12>>2];nf(0,w,z,u)|0;i=+f[r>>2];j=c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0;l=+f[j+(n*20|0)+12>>2];if(i<=l?i>=+f[j+(n*20|0)+16>>2]:0){if((b|0)==200){b=18;break a}c[g+(b*24|0)>>2]=o;c[g+(b*24|0)+4>>2]=n;c[g+(b*24|0)+8>>2]=m;c[g+(b*24|0)+16>>2]=c[x>>2];c[g+(b*24|0)+20>>2]=c[y>>2];c[g+(b*24|0)+12>>2]=0;b=b+1|0;break}if(i<=l*2.0?i>=+f[j+(n*20|0)+16>>2]*.5:0)if((a|0)==200){c[s>>2]=-1;a=200;break}else{c[h+(a*24|0)>>2]=o;c[h+(a*24|0)+4>>2]=n;c[h+(a*24|0)+8>>2]=m;c[h+(a*24|0)+16>>2]=c[x>>2];c[h+(a*24|0)+20>>2]=c[y>>2];c[h+(a*24|0)+12>>2]=0;a=a+1|0;break}}while(0);m=m+1|0;k=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0}n=n+1|0;j=k}j=a;k=b;o=o+1|0}if((b|0)==18){Ue(0,3,41890,A);a=g+4812|0}else if((b|0)==28){c[g+(k*24|0)+12>>2]=-1;a=h+(j*24|0)+12|0}c[a>>2]=-1;zb=B;return}function Ft(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;w=zb;zb=zb+224|0;s=w+212|0;t=w+96|0;v=w;u=w+192|0;l=FO(h<<4)|0;c[s>>2]=l;if(!l){Ue(0,3,41858,w+200|0);Ea(1)}p=FO(h*24|0)|0;q=s+4|0;c[q>>2]=p;if(!p){Ue(0,3,41858,w+208|0);Ea(1)}k=0;o=0.0;n=0.0;m=0.0;while(1){if((k|0)>=(h|0))break;r=m+ +f[e+(k*12|0)>>2];x=n+ +f[e+(k*12|0)+4>>2];y=o+ +f[e+(k*12|0)+8>>2];k=k+1|0;o=y;n=x;m=r}y=+(h|0);r=m/y;n=n/y;m=o/y;k=0;while(1){if((k|0)>=(h|0))break;g[l+(k<<4)>>3]=+f[d+(k<<3)>>2];g[l+(k<<4)+8>>3]=+f[d+(k<<3)+4>>2];g[p+(k*24|0)>>3]=+f[e+(k*12|0)>>2]-r;g[p+(k*24|0)+8>>3]=+f[e+(k*12|0)+4>>2]-n;g[p+(k*24|0)+16>>3]=+f[e+(k*12|0)+8>>2]-m;k=k+1|0}c[s+8>>2]=h;k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;g[t+(k<<5)+(l<<3)>>3]=+f[b+(k<<4)+(l<<2)>>2];l=l+1|0}k=k+1|0}g[t+24>>3]=+f[b+12>>2]+(r*+f[b>>2]+n*+f[b+4>>2]+m*+f[b+8>>2]);g[t+56>>3]=+f[b+28>>2]+(r*+f[b+16>>2]+n*+f[b+20>>2]+m*+f[b+24>>2]);g[t+88>>3]=+f[b+44>>2]+(r*+f[b+32>>2]+n*+f[b+36>>2]+m*+f[b+40>>2]);if(!j){if((He(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8}else if((Je(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8;GO(c[s>>2]|0);GO(c[q>>2]|0);k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;f[i+(k<<4)+(l<<2)>>2]=+g[v+(k<<5)+(l<<3)>>3];l=l+1|0}k=k+1|0}x=n;y=m;f[i+12>>2]=+g[v+24>>3]-+g[v>>3]*r-+g[v+8>>3]*x-+g[v+16>>3]*y;f[i+28>>2]=+g[v+56>>3]-+g[v+32>>3]*r-+g[v+40>>3]*x-+g[v+48>>3]*y;f[i+44>>2]=+g[v+88>>3]-+g[v+64>>3]*r-+g[v+72>>3]*x-+g[v+80>>3]*y;zb=w;return +(+g[u>>3])}function Gt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;if(!f)g=+Ht(a,b,c,d,e);else g=+It(a,b,c,d,e,g);return +g}function Ht(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0;H=zb;zb=zb+48|0;i=H+40|0;h=H+32|0;F=H;do if((d|0)>=4?(j=a+44|0,!(+f[j>>2]==0.0)):0){G=FO(d<<6)|0;if(!G){Ue(0,3,41875,h);g=-1.0;break}E=FO(d<<3)|0;if(!E){Ue(0,3,41875,i);GO(G);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[j>>2];i=i+1|0}h=h+1|0}a=e+4|0;j=e+12|0;q=e+16|0;r=e+20|0;s=e+28|0;t=e+32|0;u=e+36|0;v=+(d|0);w=d<<1;x=F+4|0;y=F+8|0;z=F+12|0;A=F+16|0;B=F+20|0;C=F+24|0;D=F+28|0;p=0.0;i=0;a:while(1){g=0.0;h=0;while(1){if((h|0)>=(d|0))break;k=+f[c+(h*12|0)>>2];l=+f[c+(h*12|0)+4>>2];m=+f[j>>2]+(+f[e>>2]*k+ +f[a>>2]*l);n=+f[s>>2]+(k*+f[q>>2]+l*+f[r>>2]);o=k*+f[t>>2]+l*+f[u>>2]+1.0;if(o==0.0){h=17;break a}L=o*o;J=+f[b+(h<<3)>>2]-m/o;I=+f[b+(h<<3)+4>>2]-n/o;K=h<<1;f[E+(K<<2)>>2]=J;f[E+((K|1)<<2)>>2]=I;N=k/o;K=h<<4;f[G+(K<<2)>>2]=N;M=l/o;f[G+((K|1)<<2)>>2]=M;o=1.0/o;f[G+((K|2)<<2)>>2]=o;f[G+((K|3)<<2)>>2]=0.0;f[G+((K|4)<<2)>>2]=0.0;f[G+((K|5)<<2)>>2]=0.0;f[G+((K|6)<<2)>>2]=-(k*m)/L;f[G+((K|7)<<2)>>2]=-(l*m)/L;f[G+((K|8)<<2)>>2]=0.0;f[G+((K|9)<<2)>>2]=0.0;f[G+((K|10)<<2)>>2]=0.0;f[G+((K|11)<<2)>>2]=N;f[G+((K|12)<<2)>>2]=M;f[G+((K|13)<<2)>>2]=o;f[G+((K|14)<<2)>>2]=-(k*n)/L;f[G+((K|15)<<2)>>2]=-(l*n)/L;g=g+(J*J+I*I);h=h+1|0}g=g/v;if(g<.10000000149011612){h=26;break}if((i|0)!=0&g<4.0){if((i|0)==10|g/p>.9900000095367432){h=26;break}}else if((i|0)==10){h=26;break}if((Kt(F,E,G,w)|0)<0){h=24;break}f[e>>2]=+f[F>>2]+ +f[e>>2];f[a>>2]=+f[x>>2]+ +f[a>>2];f[j>>2]=+f[y>>2]+ +f[j>>2];f[q>>2]=+f[z>>2]+ +f[q>>2];f[r>>2]=+f[A>>2]+ +f[r>>2];f[s>>2]=+f[B>>2]+ +f[s>>2];f[t>>2]=+f[C>>2]+ +f[t>>2];f[u>>2]=+f[D>>2]+ +f[u>>2];p=g;i=i+1|0}if((h|0)==17){GO(G);GO(E);g=1.0e8;break}else if((h|0)==24){GO(G);GO(E);g=1.0e8;break}else if((h|0)==26){GO(G);GO(E);break}}else g=1.0e8;while(0);zb=H;return +g}function It(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0;J=zb;zb=zb+64|0;k=J+56|0;j=J+48|0;i=J+40|0;h=J+32|0;I=J;do if((d|0)>=4?(l=a+44|0,!(+f[l>>2]==0.0)):0){G=+(d|0);m=~~(G*g)+-1|0;m=(m|0)>4?m:4;H=FO(d<<6)|0;if(!H){Ue(0,3,41875,h);g=-1.0;break}F=FO(d<<3)|0;if(!F){Ue(0,3,41875,i);GO(H);g=-1.0;break}h=d<<2;E=FO(h)|0;if(!E){Ue(0,3,41875,j);GO(H);GO(F);g=-1.0;break}D=FO(h)|0;if(!D){Ue(0,3,41875,k);GO(H);GO(F);GO(E);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[l>>2];i=i+1|0}h=h+1|0}w=e+4|0;x=e+12|0;y=e+16|0;z=e+20|0;A=e+28|0;B=e+32|0;C=e+36|0;k=D+(m<<2)|0;a=I+4|0;l=I+8|0;m=I+12|0;s=I+16|0;t=I+20|0;u=I+24|0;v=I+28|0;r=0.0;j=0;a:while(1){h=0;while(1){if((h|0)>=(d|0))break;g=+f[c+(h*12|0)>>2];n=+f[c+(h*12|0)+4>>2];o=+f[x>>2]+(+f[e>>2]*g+ +f[w>>2]*n);p=+f[A>>2]+(g*+f[y>>2]+n*+f[z>>2]);q=g*+f[B>>2]+n*+f[C>>2]+1.0;if(q==0.0){h=21;break a}K=q*q;L=+f[b+(h<<3)>>2]-o/q;M=+f[b+(h<<3)+4>>2]-p/q;i=h<<1;f[F+(i<<2)>>2]=L;f[F+((i|1)<<2)>>2]=M;M=L*L+M*M;f[D+(h<<2)>>2]=M;f[E+(h<<2)>>2]=M;M=g/q;i=h<<4;f[H+(i<<2)>>2]=M;L=n/q;f[H+((i|1)<<2)>>2]=L;q=1.0/q;f[H+((i|2)<<2)>>2]=q;f[H+((i|3)<<2)>>2]=0.0;f[H+((i|4)<<2)>>2]=0.0;f[H+((i|5)<<2)>>2]=0.0;f[H+((i|6)<<2)>>2]=-(g*o)/K;f[H+((i|7)<<2)>>2]=-(n*o)/K;f[H+((i|8)<<2)>>2]=0.0;f[H+((i|9)<<2)>>2]=0.0;f[H+((i|10)<<2)>>2]=0.0;f[H+((i|11)<<2)>>2]=M;f[H+((i|12)<<2)>>2]=L;f[H+((i|13)<<2)>>2]=q;f[H+((i|14)<<2)>>2]=-(g*p)/K;f[H+((i|15)<<2)>>2]=-(n*p)/K;h=h+1|0}oy(D,d,4,32);p=+f[k>>2]*4.0;p=p<16.0?16.0:p;o=p/6.0;n=0.0;h=0;while(1){if((h|0)==(d|0))break;g=+f[D+(h<<2)>>2];if(g>p)g=o;else{g=1.0-g/p;g=o*(1.0-g*(g*g))}n=n+g;h=h+1|0}g=n/G;if(g<.10000000149011612){h=42;break}if((j|0)!=0&g<4.0){if((j|0)==10|g/r>.9900000095367432){h=42;break}}else if((j|0)==10){h=42;break}h=0;i=0;while(1){if((i|0)==(d|0))break;n=+f[E+(i<<2)>>2];if(n<=p){M=1.0-n/p;M=M*M;O=i<<4;N=h<<3;f[H+(N<<2)>>2]=M*+f[H+(O<<2)>>2];f[H+((N|1)<<2)>>2]=M*+f[H+((O|1)<<2)>>2];f[H+((N|2)<<2)>>2]=M*+f[H+((O|2)<<2)>>2];f[H+((N|3)<<2)>>2]=M*+f[H+((O|3)<<2)>>2];f[H+((N|4)<<2)>>2]=M*+f[H+((O|4)<<2)>>2];f[H+((N|5)<<2)>>2]=M*+f[H+((O|5)<<2)>>2];f[H+((N|6)<<2)>>2]=M*+f[H+((O|6)<<2)>>2];f[H+((N|7)<<2)>>2]=M*+f[H+((O|7)<<2)>>2];f[H+(N+8<<2)>>2]=M*+f[H+((O|8)<<2)>>2];f[H+(N+9<<2)>>2]=M*+f[H+((O|9)<<2)>>2];f[H+(N+10<<2)>>2]=M*+f[H+((O|10)<<2)>>2];f[H+(N+11<<2)>>2]=M*+f[H+((O|11)<<2)>>2];f[H+(N+12<<2)>>2]=M*+f[H+((O|12)<<2)>>2];f[H+(N+13<<2)>>2]=M*+f[H+((O|13)<<2)>>2];f[H+(N+14<<2)>>2]=M*+f[H+((O|14)<<2)>>2];f[H+(N+15<<2)>>2]=M*+f[H+((O|15)<<2)>>2];N=i<<1;f[F+(h<<2)>>2]=M*+f[F+(N<<2)>>2];f[F+(h+1<<2)>>2]=M*+f[F+((N|1)<<2)>>2];h=h+2|0}i=i+1|0}if((h|0)<6){h=38;break}if((Kt(I,F,H,h)|0)<0){h=40;break}f[e>>2]=+f[I>>2]+ +f[e>>2];f[w>>2]=+f[a>>2]+ +f[w>>2];f[x>>2]=+f[l>>2]+ +f[x>>2];f[y>>2]=+f[m>>2]+ +f[y>>2];f[z>>2]=+f[s>>2]+ +f[z>>2];f[A>>2]=+f[t>>2]+ +f[A>>2];f[B>>2]=+f[u>>2]+ +f[B>>2];f[C>>2]=+f[v>>2]+ +f[C>>2];r=g;j=j+1|0}if((h|0)==21){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==38){GO(H);GO(F);GO(E);GO(D);g=-1.0;break}else if((h|0)==40){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==42){GO(H);GO(F);GO(E);GO(D);break}}else g=1.0e8;while(0);zb=J;return +g}function Jt(a,b){a=a|0;b=b|0;var c=0.0;c=+f[a>>2]-+f[b>>2];return (c<0.0?-1:c>0.0&1)|0}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=8;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=8;c[f>>2]=d;e=Jd(f)|0;if(!e)a=-1;else{d=Hd(e,f)|0;if(!d)a=-1;else{b=Hd(e,g)|0;if(!b)a=-1;else{if((Zd(d)|0)<0)a=-1;else{Od(h,d,b)|0;a=0}Md(b)|0}Md(d)|0}Md(e)|0}zb=i;return a|0}function Lt(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+32|0;j=s;q=s+28|0;r=s+24|0;o=c[d>>2]|0;p=c[d+4>>2]|0;n=c[d+8>>2]|0;d=c[h>>2]|0;if(!d){d=Af(c[a+28>>2]|0,c[a+32>>2]|0)|0;c[h>>2]=d}k=a+12|0;m=a+48+(o*48|0)|0;l=c[b>>2]|0;if((Bf(c[k>>2]|0,m,c[l+(o*112|0)>>2]|0,(c[c[l+(o*112|0)+4>>2]>>2]|0)+(p*20|0)|0,n,d)|0)>=0?(l=c[h>>2]|0,d=c[l+28>>2]|0,t=+(B(d,d)|0),!(+(B((c[l+16>>2]|0)+1+(c[l+20>>2]|0)|0,(c[l+8>>2]|0)+1+(c[l+12>>2]|0)|0)|0)*5.0*5.0>t)):0){l=c[b+152>>2]|0;do if((l|0)!=1){d=c[k>>2]|0;k=a+528+(o*48|0)|0;if((l|0)==2){Cf(d,m,k,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}else{Cf(d,m,k,a+1008+(o*48|0)|0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}}else Cf(c[k>>2]|0,m,0,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);while(0);m=c[a+24>>2]|0;if((wf(e,g,c[a+4>>2]|0,c[a+8>>2]|0,c[a+20>>2]|0,c[h>>2]|0,m,m,j,q,r,i)|0)>=0){f[i+4>>2]=+(c[q>>2]|0);f[i+8>>2]=+(c[r>>2]|0);r=c[b>>2]|0;j=c[(c[c[r+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0;q=j+(n*20|0)+8|0;j=j+(n*20|0)+12|0;f[i+12>>2]=+f[r+(o*112|0)+24>>2]+(+f[r+(o*112|0)+12>>2]*+f[q>>2]+ +f[r+(o*112|0)+16>>2]*+f[j>>2]);f[i+16>>2]=+f[r+(o*112|0)+40>>2]+(+f[r+(o*112|0)+28>>2]*+f[q>>2]+ +f[r+(o*112|0)+32>>2]*+f[j>>2]);f[i+20>>2]=+f[r+(o*112|0)+56>>2]+(+f[r+(o*112|0)+44>>2]*+f[q>>2]+ +f[r+(o*112|0)+48>>2]*+f[j>>2]);j=0}else j=-1}else j=-1;zb=s;return j|0}function Mt(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[a+128>>2]=0;return a|0}function Nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+24|0;d=c[e>>2]|0;if(!d){f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,0,40)|0;c[e>>2]=d;a=Jb[c[c[f>>2]>>2]&63](a,0,4096)|0;c[d+32>>2]=a;d=c[e>>2]|0}c[d+8>>2]=115;c[d+12>>2]=83;c[d+16>>2]=47;c[d+20>>2]=33;c[d+24>>2]=116;c[d+28>>2]=b;c[d+4>>2]=0;c[d>>2]=0;return}function Ot(a){a=a|0;c[(c[a+24>>2]|0)+36>>2]=1;return}function Pt(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+24>>2]|0;f=e+32|0;d=gA(c[f>>2]|0,1,4096,c[e+28>>2]|0)|0;g=e+36|0;if(d|0){b=d;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}if(!(c[g>>2]|0))d=b;else{d=c[b>>2]|0;c[d+20>>2]=43;Sb[c[d>>2]&255](b);d=b}b=c[b>>2]|0;c[b+20>>2]=123;Ub[c[b+4>>2]&63](d,-1);a[c[f>>2]>>0]=-1;a[(c[f>>2]|0)+1>>0]=-39;b=2;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+24>>2]|0;if((b|0)<=0)return;g=f+4|0;d=c[g>>2]|0;if((d|0)<(b|0)){e=f+12|0;do{b=b-d|0;Gb[c[e>>2]&127](a)|0;d=c[g>>2]|0}while((b|0)>(d|0))}c[f>>2]=(c[f>>2]|0)+b;c[g>>2]=d-b;return}function Rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+440|0;g=c[k>>2]|0;h=c[a>>2]|0;c[h+20>>2]=124;c[h+24>>2]=g;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;d=b+6&7|208;b=g;a:while(1){e=(b|0)<192;f=(b&-8|0)!=208|(b|0)==(h|0)|(b|0)==(i|0);g=(b|0)==(j|0)|(b|0)==(d|0)?2:1;b:while(1){l=e?2:f?3:g;m=c[a>>2]|0;c[m+20>>2]=99;c[m+24>>2]=b;c[(c[a>>2]|0)+28>>2]=l;Ub[c[(c[a>>2]|0)+4>>2]&63](a,4);switch(l&3){case 1:{d=4;break a}case 3:{b=1;d=7;break a}case 2:break b;default:{}}}if(!(Tt(a)|0)){b=0;d=7;break}b=c[k>>2]|0}if((d|0)==4){c[k>>2]=0;m=1;return m|0}else if((d|0)==7)return b|0;return 0}function St(a){a=a|0;return}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+464|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break}d=c[k>>2]|0;e=c[j>>2]|0}d=d+-1|0;f=e+1|0;if((a[e>>0]|0)==-1)e=f;else{e=f;do{h=(c[l>>2]|0)+24|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1)}do{if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;g=a[f>>0]|0}while(g<<24>>24==-1);f=(c[l>>2]|0)+24|0;h=c[f>>2]|0;if(g<<24>>24){f=18;break}c[f>>2]=h+2;c[j>>2]=e;c[k>>2]=d}if((f|0)==18){f=g&255;if(h|0){i=c[b>>2]|0;c[i+20>>2]=119;c[i+24>>2]=h;c[(c[b>>2]|0)+28>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);c[(c[l>>2]|0)+24>>2]=0}c[b+440>>2]=f;c[j>>2]=e;c[k>>2]=d;l=1;return l|0}else if((f|0)==21)return d|0;return 0}function Ut(a){a=a|0;var b=0,d=0;d=Jb[c[c[a+4>>2]>>2]&63](a,0,172)|0;b=a+464|0;c[b>>2]=d;c[d>>2]=117;c[d+4>>2]=84;c[d+8>>2]=85;c[d+28>>2]=86;c[d+96>>2]=0;c[d+100>>2]=0;c[d+36>>2]=86;c[d+104>>2]=0;c[d+40>>2]=86;c[d+108>>2]=0;c[d+44>>2]=86;c[d+112>>2]=0;c[d+48>>2]=86;c[d+116>>2]=0;c[d+52>>2]=86;c[d+120>>2]=0;c[d+56>>2]=86;c[d+124>>2]=0;c[d+60>>2]=86;c[d+128>>2]=0;c[d+64>>2]=86;c[d+132>>2]=0;c[d+68>>2]=86;c[d+136>>2]=0;c[d+72>>2]=86;c[d+140>>2]=0;c[d+76>>2]=86;c[d+144>>2]=0;c[d+80>>2]=86;c[d+148>>2]=0;c[d+84>>2]=86;c[d+152>>2]=0;c[d+156>>2]=0;c[d+92>>2]=86;c[d+160>>2]=0;c[d+32>>2]=87;c[d+88>>2]=87;b=c[b>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Vt(a){a=a|0;var b=0;b=c[a+464>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Wt(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;Pa=zb;zb=zb+256|0;ga=Pa;Na=f+440|0;Oa=f+464|0;oa=f+24|0;ua=f+232|0;va=f+248|0;wa=f+264|0;pa=f+280|0;qa=f+40|0;ra=f+304|0;sa=f+308|0;ta=f+284|0;ha=f+288|0;ia=f+289|0;ja=f+290|0;ka=f+292|0;la=f+294|0;ma=f+296|0;na=f+300|0;Ja=f+36|0;Ka=f+216|0;g=c[Na>>2]|0;a:while(1){do if(!g){if(c[(c[Oa>>2]|0)+12>>2]|0){if(!(Tt(f)|0)){xa=0;Aa=350;break a}g=c[Na>>2]|0;break}m=c[oa>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0}k=c[m>>2]|0;g=g+-1|0;h=k+1|0;k=a[k>>0]|0;l=k&255;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[n>>2]|0;h=c[m>>2]|0}else j=g;V=a[h>>0]|0;g=V&255;if(k<<24>>24!=-1|V<<24>>24!=-40){V=c[f>>2]|0;c[V+20>>2]=55;c[V+24>>2]=l;c[(c[f>>2]|0)+28>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}c[Na>>2]=g;c[m>>2]=h+1;c[n>>2]=j+-1}while(0);do switch(g|0){case 218:{Aa=25;break a}case 217:{Aa=75;break a}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Ub[c[g+4>>2]&63](f,1);g=(c[Oa>>2]|0)+12|0;if(c[g>>2]|0){g=c[f>>2]|0;c[g+20>>2]=64;Sb[c[g>>2]&255](f);g=(c[Oa>>2]|0)+12|0}h=ua;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));h=va;j=h+16|0;do{a[h>>0]=1;h=h+1|0}while((h|0)<(j|0));h=wa;j=h+16|0;do{a[h>>0]=5;h=h+1|0}while((h|0)<(j|0));c[pa>>2]=0;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;c[ta>>2]=0;a[ha>>0]=1;a[ia>>0]=1;a[ja>>0]=0;b[ka>>1]=1;b[la>>1]=1;c[ma>>2]=0;a[na>>0]=0;c[g>>2]=1;break}case 192:{if(!($t(f,1,0,0)|0)){xa=0;Aa=350;break a}break}case 193:{if(!($t(f,0,0,0)|0)){xa=0;Aa=350;break a}break}case 194:{if(!($t(f,0,1,0)|0)){xa=0;Aa=350;break a}break}case 201:{if(!($t(f,0,0,1)|0)){xa=0;Aa=350;break a}break}case 202:{if(!($t(f,0,1,1)|0)){xa=0;Aa=350;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{V=c[f>>2]|0;c[V+20>>2]=63;c[V+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f);break}case 204:{p=c[oa>>2]|0;q=p+4|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0}j=c[p>>2]|0;g=g+-1|0;h=j+1|0;j=d[j>>0]<<8;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0;h=c[p>>2]|0}V=j|d[h>>0];j=V+-2|0;k=g+-1|0;g=h+1|0;if(V>>>0>2){o=p+12|0;n=j;h=k;while(1){if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;g=c[p>>2]|0}h=h+-1|0;j=g+1|0;l=a[g>>0]|0;m=l&255;if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;k=c[p>>2]|0}else k=j;g=a[k>>0]|0;j=g&255;V=c[f>>2]|0;c[V+20>>2]=81;c[V+24>>2]=m;c[(c[f>>2]|0)+28>>2]=j;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if((l&255)<=31)if((l&255)<=15){U=j&15;a[f+232+m>>0]=U;V=(g&255)>>>4;a[f+248+m>>0]=V;if(U>>>0>(V&255)>>>0){V=c[f>>2]|0;c[V+20>>2]=30;c[V+24>>2]=j;Sb[c[c[f>>2]>>2]&255](f)}}else Aa=93;else{Aa=c[f>>2]|0;c[Aa+20>>2]=29;c[Aa+24>>2]=m;Sb[c[c[f>>2]>>2]&255](f);Aa=93}if((Aa|0)==93){Aa=0;a[m+-16+(f+264)>>0]=g}j=n+-2|0;h=h+-1|0;g=k+1|0;if((n|0)>2)n=j;else break}}else h=k;if(j|0){V=c[f>>2]|0;c[V+20>>2]=12;Sb[c[V>>2]&255](f)}c[p>>2]=g;c[q>>2]=h;break}case 196:{U=c[oa>>2]|0;V=U+4|0;g=c[V>>2]|0;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0}k=c[U>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0;j=c[U>>2]|0}else j=h;h=g+-1|0;g=j+1|0;T=k|d[j>>0];j=T+-2|0;if(T>>>0>18){T=U+12|0;do{if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}S=d[g>>0]|0;R=c[f>>2]|0;c[R+20>>2]=82;c[R+24>>2]=S;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}R=a[g>>0]|0;N=R&255;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}Q=a[g>>0]|0;L=Q&255;k=L+N|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}P=a[g>>0]|0;K=P&255;k=k+K|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}O=a[g>>0]|0;I=O&255;k=k+I|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}M=a[g>>0]|0;G=M&255;k=k+G|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}J=a[g>>0]|0;E=J&255;k=k+E|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}H=a[g>>0]|0;C=H&255;k=k+C|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}F=a[g>>0]|0;A=F&255;k=k+A|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}D=a[g>>0]|0;y=D&255;k=k+y|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}B=a[g>>0]|0;w=B&255;k=k+w|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}z=a[g>>0]|0;u=z&255;k=k+u|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}x=a[g>>0]|0;s=x&255;k=k+s|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}v=a[g>>0]|0;q=v&255;k=k+q|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}t=a[g>>0]|0;o=t&255;k=k+o|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}r=a[g>>0]|0;l=r&255;k=k+l|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}p=a[g>>0]|0;Qa=p&255;n=k+Qa|0;h=h+-1|0;g=g+1|0;m=j+-17|0;k=c[f>>2]|0;c[k+24>>2]=N;c[k+28>>2]=L;c[k+32>>2]=K;c[k+36>>2]=I;c[k+40>>2]=G;c[k+44>>2]=E;c[k+48>>2]=C;c[k+52>>2]=A;c[k+20>>2]=88;Ub[c[k+4>>2]&63](f,2);N=c[f>>2]|0;c[N+24>>2]=y;c[N+28>>2]=w;c[N+32>>2]=u;c[N+36>>2]=s;c[N+40>>2]=q;c[N+44>>2]=o;c[N+48>>2]=l;c[N+52>>2]=Qa;c[N+20>>2]=88;Ub[c[N+4>>2]&63](f,2);if(n>>>0>256|(m|0)<(n|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=9;Sb[c[Qa>>2]&255](f)}aP(ga|0,0,256)|0;if(!n)j=0;else{k=0;while(1){if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}h=h+-1|0;j=g+1|0;a[ga+k>>0]=a[g>>0]|0;k=k+1|0;if(k>>>0>=n>>>0){g=j;j=n;break}else g=j}}j=m-j|0;Qa=(S&16|0)==0;l=S+-16|0;k=Qa?S:l;l=Qa?f+180+(S<<2)|0:f+196+(l<<2)|0;if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=31;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=c[l>>2]|0;if(!k){k=au(f)|0;c[l>>2]=k}a[k>>0]=0;a[k+1>>0]=R;a[k+2>>0]=Q;a[k+3>>0]=P;a[k+4>>0]=O;a[k+5>>0]=M;a[k+6>>0]=J;a[k+7>>0]=H;a[k+8>>0]=F;a[k+9>>0]=D;a[k+10>>0]=B;a[k+11>>0]=z;a[k+12>>0]=x;a[k+13>>0]=v;a[k+14>>0]=t;a[k+15>>0]=r;a[k+16>>0]=p;_O((c[l>>2]|0)+17|0,ga|0,256)|0}while((j|0)>16)}if(j|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[U>>2]=g;c[V>>2]=h;break}case 219:{q=c[oa>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0}l=c[q>>2]|0;g=g+-1|0;h=l+1|0;l=d[l>>0]<<8;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;k=c[q>>2]|0}else k=h;j=g+-1|0;h=k+1|0;Qa=l|d[k>>0];g=Qa+-2|0;if(Qa>>>0>2){p=q+12|0;while(1){o=g+-1|0;if(!j){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[r>>2]|0;h=c[q>>2]|0}k=d[h>>0]|0;m=k>>>4;k=k&15;Qa=c[f>>2]|0;c[Qa+20>>2]=83;c[Qa+24>>2]=k;c[(c[f>>2]|0)+28>>2]=m;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=32;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=f+164+(k<<2)|0;l=c[k>>2]|0;if(!l){l=Mt(f)|0;c[k>>2]=l}n=(m|0)!=0;if(n)if((g|0)<129){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o>>1;Aa=196}else Aa=203;else if((g|0)<65){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o;Aa=196}else Aa=203;b:do if((Aa|0)==196){Aa=0;switch(ba|0){case 4:{g=3280;break}case 9:{g=3168;break}case 16:{g=3040;break}case 25:{g=2864;break}case 36:{g=2656;break}case 49:{g=2384;break}default:{j=j+-1|0;g=h+1|0;if((ba|0)>0){Z=2064;_=ba;$=g;aa=j;Aa=205;break b}else{Y=ba;X=j;W=g;break b}}}Z=g;_=ba;$=h+1|0;aa=j+-1|0;Aa=205}else if((Aa|0)==203){Z=2064;_=64;$=h+1|0;aa=j+-1|0;Aa=205}while(0);c:do if((Aa|0)==205){Aa=0;if(!n){j=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}b[l+(c[Z+(j<<2)>>2]<<1)>>1]=d[h>>0]|0;j=j+1|0;g=g+-1|0;h=h+1|0;if((j|0)>=(_|0)){Y=_;X=g;W=h;break c}}}m=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}else h=j;b[l+(c[Z+(m<<2)>>2]<<1)>>1]=k|d[h>>0];m=m+1|0;g=g+-1|0;h=h+1|0;if((m|0)>=(_|0)){Y=_;X=g;W=h;break}}}while(0);h=c[f>>2]|0;d:do if((c[h+104>>2]|0)>1){g=0;while(1){c[h+24>>2]=e[l+(g<<1)>>1];c[h+28>>2]=e[l+((g|1)<<1)>>1];c[h+32>>2]=e[l+((g|2)<<1)>>1];c[h+36>>2]=e[l+((g|3)<<1)>>1];c[h+40>>2]=e[l+((g|4)<<1)>>1];c[h+44>>2]=e[l+((g|5)<<1)>>1];c[h+48>>2]=e[l+((g|6)<<1)>>1];c[h+52>>2]=e[l+((g|7)<<1)>>1];c[h+20>>2]=95;Ub[c[h+4>>2]&63](f,2);g=g+8|0;if(g>>>0>=64)break d;h=c[f>>2]|0}}while(0);g=o-Y+(n?0-Y|0:0)|0;if((g|0)>0){h=W;j=X}else{j=X;h=W;break}}}if(g|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[q>>2]=h;c[r>>2]=j;break}case 221:{l=c[oa>>2]|0;m=l+4|0;g=c[m>>2]|0;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0}k=c[l>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;j=c[l>>2]|0}else j=h;g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=4){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;h=c[l>>2]|0}j=g+-1|0;g=h+1|0;k=d[h>>0]<<8;if(!j){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[m>>2]|0;g=c[l>>2]|0}else h=j;Qa=k|d[g>>0];V=c[f>>2]|0;c[V+20>>2]=84;c[V+24>>2]=Qa;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[pa>>2]=Qa;c[l>>2]=g+1;c[m>>2]=h+-1;break}case 248:{m=c[oa>>2]|0;h=c[m>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46637,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if((c[Ja>>2]|0)>=3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=24){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)!=13){Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=c[Na>>2];Sb[c[c[f>>2]>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)==255){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)==3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;k=c[Ka>>2]|0;if((c[k+88>>2]|0)==(d[j>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0;l=c[Ka>>2]|0}else l=k;g=g+-1|0;j=h+1|0;if((c[l>>2]|0)==(d[h>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;k=c[m>>2]|0;h=c[Ka>>2]|0}else{k=j;h=l}g=g+-1|0;j=k+1|0;if((c[h+176>>2]|0)!=(d[k>>0]|0)){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((a[j>>0]|0)!=-128){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(!(k|d[j>>0])){ea=g;fa=h}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=h;Aa=335}while(0);if((Aa|0)==335){Aa=0;ea=c[f>>2]|0;c[ea+20>>2]=28;Sb[c[ea>>2]&255](f);ea=ca;fa=da}c[ra>>2]=1;c[m>>2]=fa;c[n>>2]=ea;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(Gb[c[(c[Oa>>2]|0)+32+(g+-224<<2)>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 254:{if(!(Gb[c[(c[Oa>>2]|0)+28>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Qa=c[f>>2]|0;c[Qa+20>>2]=94;c[Qa+24>>2]=g;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);break}case 220:{k=c[oa>>2]|0;l=k+4|0;g=c[l>>2]|0;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0}h=c[k>>2]|0;g=g+-1|0;j=h+1|0;h=d[h>>0]<<8;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0;j=c[k>>2]|0}Qa=h|d[j>>0];h=Qa+-2|0;V=c[f>>2]|0;c[V+20>>2]=93;c[V+24>>2]=c[Na>>2];c[(c[f>>2]|0)+28>>2]=h;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[k>>2]=j+1;c[l>>2]=g+-1;if(Qa>>>0>2)Ub[c[(c[oa>>2]|0)+16>>2]&63](f,h);break}default:{Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}}while(0);c[Na>>2]=0;g=0}if((Aa|0)==25){q=c[oa>>2]|0;h=c[q>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46633,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}while(0);g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}else h=j;while(0);g=g+-1|0;j=h+1|0;l=k|d[h>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;k=c[q>>2]|0;break}else{h=g;k=j}while(0);m=a[k>>0]|0;p=m&255;Qa=c[f>>2]|0;c[Qa+20>>2]=105;c[Qa+24>>2]=p;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);do if(!((m&255)>4|(l|0)!=((p<<1)+6|0))){if(m<<24>>24){c[f+340>>2]=p;i=h+-1|0;ya=k+1|0;za=i;i=(i|0)==0;Aa=42;break}if(c[f+224>>2]|0){c[f+340>>2]=p;g=h+-1|0;if(!g){Ha=1;Aa=64}else{Fa=g;La=k+1|0;Ma=1}}else Aa=41}else Aa=41;while(0);if((Aa|0)==41){j=c[f>>2]|0;c[j+20>>2]=12;Sb[c[j>>2]&255](f);c[f+340>>2]=p;j=h+-1|0;g=k+1|0;h=(j|0)==0;if(!(m<<24>>24)){Da=j;Ea=g;Ga=h;Ia=1;Aa=63}else{ya=g;za=j;i=h;Aa=42}}e:do if((Aa|0)==42){n=q+12|0;o=f+344|0;m=0;g=ya;h=za;while(1){if(i){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}h=c[r>>2]|0;g=c[q>>2]|0}l=h+-1|0;i=g+1|0;h=d[g>>0]|0;f:do if(m){g=0;while(1){if((c[c[f+344+(g<<2)>>2]>>2]|0)==(h|0))break;g=g+1|0;if(g>>>0>=m>>>0)break f}g=c[c[o>>2]>>2]|0;if(m>>>0>1){h=1;do{Qa=c[c[f+344+(h<<2)>>2]>>2]|0;g=(Qa|0)>(g|0)?Qa:g;h=h+1|0}while((h|0)!=(m|0))}h=g+1|0}while(0);g=c[Ka>>2]|0;k=c[Ja>>2]|0;g:do if((k|0)>0){j=0;while(1){if((h|0)==(c[g>>2]|0)){Ca=g;break g}j=j+1|0;g=g+88|0;if((j|0)>=(k|0)){Ba=g;Aa=58;break}}}else{Ba=g;Aa=58}while(0);if((Aa|0)==58){Aa=0;Ca=c[f>>2]|0;c[Ca+20>>2]=4;c[Ca+24>>2]=h;Sb[c[c[f>>2]>>2]&255](f);Ca=Ba}c[f+344+(m<<2)>>2]=Ca;if(!l){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}g=c[r>>2]|0;i=c[q>>2]|0}else g=l;h=d[i>>0]|0;za=Ca+20|0;c[za>>2]=h>>>4;Qa=Ca+24|0;c[Qa>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[Ca>>2];c[h+28>>2]=c[za>>2];c[h+32>>2]=c[Qa>>2];c[h+20>>2]=106;Ub[c[h+4>>2]&63](f,1);m=m+1|0;h=g+-1|0;g=i+1|0;i=(h|0)==0;if(m>>>0>=p>>>0){Da=h;Ea=g;Ga=i;Ia=0;Aa=63;break e}}if((Aa|0)==350){zb=Pa;return xa|0}}while(0);if((Aa|0)==63)if(Ga){Ha=Ia;Aa=64}else{Fa=Da;La=Ea;Ma=Ia}do if((Aa|0)==64)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{Fa=c[r>>2]|0;La=c[q>>2]|0;Ma=Ha;break}while(0);g=Fa+-1|0;h=La+1|0;k=f+412|0;c[k>>2]=d[La>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;i=c[q>>2]|0;break}else i=h;while(0);h=g+-1|0;g=i+1|0;j=f+416|0;c[j>>2]=d[i>>0];do if(!h)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);Qa=d[g>>0]|0;Ka=f+420|0;c[Ka>>2]=Qa>>>4;La=f+424|0;c[La>>2]=Qa&15;Qa=c[f>>2]|0;c[Qa+24>>2]=c[k>>2];c[Qa+28>>2]=c[j>>2];c[Qa+32>>2]=c[Ka>>2];c[Qa+36>>2]=c[La>>2];c[Qa+20>>2]=107;Ub[c[Qa+4>>2]&63](f,1);c[(c[Oa>>2]|0)+20>>2]=0;if(!Ma){Qa=f+144|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[q>>2]=g+1;c[r>>2]=h+-1;c[Na>>2]=0;Qa=1;zb=Pa;return Qa|0}else if((Aa|0)==75){Qa=c[f>>2]|0;c[Qa+20>>2]=87;Ub[c[Qa+4>>2]&63](f,1);c[Na>>2]=0;Qa=2;zb=Pa;return Qa|0}else if((Aa|0)==174){Qa=0;zb=Pa;return Qa|0}else if((Aa|0)==350){zb=Pa;return xa|0}return 0}function Xt(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+440|0;b=c[f>>2]|0;do if(!b)if(!(Tt(a)|0)){f=0;return f|0}else{b=c[f>>2]|0;break}while(0);d=a+464|0;e=c[(c[d>>2]|0)+20>>2]|0;if((b|0)!=(e+208|0)){if(!(Ib[c[(c[a+24>>2]|0)+20>>2]&63](a,e)|0)){f=0;return f|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,3);c[f>>2]=0}f=(c[d>>2]|0)+20|0;c[f>>2]=(c[f>>2]|0)+1&7;f=1;return f|0}function Yt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+24|0;h=c[g>>2]|0;i=h+4|0;b=c[i>>2]|0;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;break}while(0);e=c[h>>2]|0;b=b+-1|0;f=e+1|0;e=(d[e>>0]|0)<<8;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;f=c[h>>2]|0;break}while(0);j=e|(d[f>>0]|0);e=j+-2|0;k=c[a>>2]|0;c[k+20>>2]=93;c[k+24>>2]=c[a+440>>2];c[(c[a>>2]|0)+28>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,1);c[h>>2]=f+1;c[i>>2]=b+-1;if(j>>>0<=2){k=1;return k|0}Ub[c[(c[g>>2]|0)+16>>2]&63](a,e);k=1;return k|0}function Zt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;l=p;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);j=g|d[f>>0];k=j+-2|0;j=j>>>0>15?14:j>>>0>2?k:0;g=e+-1|0;e=f+1|0;a:do if(!j)f=g;else{i=n+12|0;h=0;f=g;while(1){if(!f){if(!(Gb[c[i>>2]&127](b)|0)){e=0;break}f=c[o>>2]|0;e=c[n>>2]|0}a[l+h>>0]=a[e>>0]|0;h=h+1|0;f=f+-1|0;e=e+1|0;if(h>>>0>=j>>>0)break a}zb=p;return e|0}while(0);g=k-j|0;h=c[b+440>>2]|0;b:do switch(h|0){case 224:{_t(b,l,j,g);break}case 238:{if((((j>>>0>11&(a[l>>0]|0)==65?(a[l+1>>0]|0)==100:0)?(a[l+2>>0]|0)==111:0)?(a[l+3>>0]|0)==98:0)?(a[l+4>>0]|0)==101:0){h=d[l+7>>0]<<8|d[l+8>>0];i=d[l+9>>0]<<8|d[l+10>>0];k=a[l+11>>0]|0;j=c[b>>2]|0;c[j+24>>2]=d[l+5>>0]<<8|d[l+6>>0];c[j+28>>2]=h;c[j+32>>2]=i;c[j+36>>2]=k&255;c[j+20>>2]=78;Ub[c[j+4>>2]&63](b,1);c[b+296>>2]=1;a[b+300>>0]=k;break b}l=c[b>>2]|0;c[l+20>>2]=80;c[l+24>>2]=k;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1);break}default:{l=c[b>>2]|0;c[l+20>>2]=70;c[l+24>>2]=h;Sb[c[c[b>>2]>>2]&255](b)}}while(0);c[n>>2]=e;c[o>>2]=f;if((g|0)<=0){o=1;zb=p;return o|0}Ub[c[(c[m>>2]|0)+16>>2]&63](b,g);o=1;zb=p;return o|0}function _t(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(g>>>0>13){if((a[f>>0]|0)==74)if((((a[f+1>>0]|0)==70?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){c[e+284>>2]=1;j=a[f+5>>0]|0;k=e+288|0;a[k>>0]=j;l=a[f+6>>0]|0;m=e+289|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+290|0;a[p>>0]=h;i=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+292|0;b[n>>1]=i;g=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+294|0;b[o>>1]=g;if((j+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=j&255;c[(c[e>>2]|0)+28>>2]=d[m>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](e,-1);q=e;j=a[k>>0]|0;l=a[m>>0]|0;i=b[n>>1]|0;g=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=j&255;c[p+28>>2]=l&255;c[p+32>>2]=i&65535;c[p+36>>2]=g&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Ub[c[p+4>>2]&63](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=d[j>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(B((i&255)*3|0,g&255)|0))return;r=c[e>>2]|0;c[r+20>>2]=90;c[r+24>>2]=h;Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);return}else i=16}else if(g>>>0>5?(a[f>>0]|0)==74:0)i=16;if(((((i|0)==16?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;switch(a[h>>0]|0){case 16:{q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 17:{q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 19:{q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}default:{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}function $t(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+24>>2]|0;h=c[o>>2]|0;p=o+4|0;g=c[p>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;e=(d[h>>0]|0)<<8;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;j=e|(d[h>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;c[a+212>>2]=d[h>>0];do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;i=a+32|0;c[i>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;e=c[i>>2]|0;break}else e=h;while(0);g=g+-1|0;h=b+1|0;c[i>>2]=e+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;f=a+28|0;c[f>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;h=c[f>>2]|0;break}while(0);g=g+-1|0;e=b+1|0;c[f>>2]=h+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{b=c[p>>2]|0;e=c[o>>2]|0;break}else b=g;while(0);m=a+36|0;c[m>>2]=d[e>>0];h=j+-8|0;n=c[a>>2]|0;c[n+24>>2]=c[a+440>>2];c[n+28>>2]=c[f>>2];c[n+32>>2]=c[i>>2];c[n+36>>2]=c[m>>2];c[n+20>>2]=102;Ub[c[n+4>>2]&63](a,1);n=a+464|0;if(c[(c[n>>2]|0)+16>>2]|0){l=c[a>>2]|0;c[l+20>>2]=61;Sb[c[l>>2]&255](a)}if(((c[i>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(k=c[m>>2]|0,(k|0)>=1):0)g=k;else{g=c[a>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](a);g=c[m>>2]|0}if((h|0)!=(g*3|0)){l=c[a>>2]|0;c[l+20>>2]=12;Sb[c[l>>2]&255](a)}l=a+216|0;if(!(c[l>>2]|0)){k=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[m>>2]|0)*88|0)|0;c[l>>2]=k}b=b+-1|0;g=e+1|0;a:do if((c[m>>2]|0)>0){k=o+12|0;j=0;while(1){if(!b){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}b=c[p>>2]|0;g=c[o>>2]|0}f=b+-1|0;h=g+1|0;e=d[g>>0]|0;i=c[l>>2]|0;b:do if(!j)b=e;else{g=i;b=0;while(1){if((c[g>>2]|0)==(e|0))break;b=b+1|0;g=g+88|0;if(b>>>0>=j>>>0){b=e;i=g;break b}}b=c[i>>2]|0;g=i+88|0;if(j>>>0>1){e=1;while(1){q=c[g>>2]|0;b=(q|0)>(b|0)?q:b;e=e+1|0;if((e|0)==(j|0))break;else g=g+88|0}g=i+(j*88|0)|0}b=b+1|0;i=g}while(0);c[i>>2]=b;c[i+4>>2]=j;if(!f){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else g=f;g=g+-1|0;b=h+1|0;q=d[h>>0]|0;e=i+8|0;c[e>>2]=q>>>4;f=i+12|0;c[f>>2]=q&15;if(!g){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else h=b;q=i+16|0;c[q>>2]=d[h>>0];b=c[a>>2]|0;c[b+24>>2]=c[i>>2];c[b+28>>2]=c[e>>2];c[b+32>>2]=c[f>>2];c[b+36>>2]=c[q>>2];c[b+20>>2]=103;Ub[c[b+4>>2]&63](a,1);j=j+1|0;b=g+-1|0;g=h+1|0;if((j|0)>=(c[m>>2]|0))break a}if((h|0)==57)return g|0}while(0);c[(c[n>>2]|0)+16>>2]=1;c[o>>2]=g;c[p>>2]=b;q=1;return q|0}function au(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[a+276>>2]=0;return a|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+20|0;b=c[k>>2]|0;a:do switch(b|0){case 202:{cu(a);if(!(c[a+64>>2]|0)){c[k>>2]=203;d=6;break a}c[k>>2]=207;k=1;return k|0}case 203:{d=6;break}case 204:{b=a+444|0;break}default:{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a);d=17}}while(0);if((d|0)==6){g=a+460|0;b:do if(c[(c[g>>2]|0)+16>>2]|0){e=a+8|0;f=a+332|0;b=c[e>>2]|0;c:while(1){if(b|0)Sb[c[b>>2]&255](a);b=Gb[c[c[g>>2]>>2]&127](a)|0;switch(b|0){case 2:break b;case 0:break c;default:{}}d=c[e>>2]|0;if((b|2|0)==3&(d|0)!=0?(h=d+4|0,j=(c[h>>2]|0)+1|0,c[h>>2]=j,h=d+8|0,i=c[h>>2]|0,(j|0)>=(i|0)):0)c[h>>2]=(c[f>>2]|0)+i;b=d}return b|0}while(0);c[a+152>>2]=c[a+144>>2];d=17}if((d|0)==17){b=a+444|0;if((c[k>>2]|0)!=204){Sb[c[c[b>>2]>>2]&255](a);c[a+140>>2]=0;c[k>>2]=204}}d=c[b>>2]|0;d:do if(c[d+8>>2]|0){g=a+140|0;h=a+116|0;i=a+8|0;j=a+448|0;f=c[g>>2]|0;e:while(1){e=c[h>>2]|0;if(f>>>0>>0){do{d=c[i>>2]|0;if(!d)d=f;else{c[d+4>>2]=f;c[d+8>>2]=e;Sb[c[d>>2]&255](a);d=c[g>>2]|0}Xb[c[(c[j>>2]|0)+4>>2]&31](a,0,g,0);f=c[g>>2]|0;if((f|0)==(d|0)){b=0;break e}e=c[h>>2]|0}while(f>>>0>>0);d=c[b>>2]|0}Sb[c[d+4>>2]&255](a);Sb[c[c[b>>2]>>2]&255](a);c[g>>2]=0;d=c[b>>2]|0;if(!(c[d+8>>2]|0))break d;else f=0}return b|0}while(0);c[k>>2]=(c[a+68>>2]|0)==0?205:206;k=1;return k|0}function cu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Jb[c[c[k>>2]>>2]&63](b,1,28)|0;c[b+444>>2]=i;c[i>>2]=118;c[i+4>>2]=119;c[i+8>>2]=0;d=c[b+212>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}fu(b);e=Jb[c[c[k>>2]>>2]&63](b,1,1280)|0;aP(e|0,0,512)|0;f=e+512|0;c[b+336>>2]=f;d=0;do{a[f+d>>0]=d;d=d+1|0}while((d|0)!=256);aP(e+768|0,-1,512)|0;if(!(((c[b+116>>2]|0)!=0?(c[b+112>>2]|0)!=0:0)?(g=b+120|0,(c[g>>2]|0)>=1):0)){g=c[b>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](b);g=b+120|0}j=i+12|0;c[j>>2]=0;f=gu(b)|0;h=i+16|0;c[h>>2]=f;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(c[b+84>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;e=b+68|0}else{if(!(c[b+64>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}e=b+68|0;if(c[e>>2]|0){i=c[b>>2]|0;c[i+20>>2]=48;Sb[c[i>>2]&255](b)}do if((c[g>>2]|0)==3){if(c[b+136>>2]|0){c[b+104>>2]=1;break}if(!(c[b+92>>2]|0)){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}while(0);if(c[b+100>>2]|0){hu(b);c[f>>2]=c[b+484>>2]}if((c[b+108>>2]|0)==0?(c[b+104>>2]|0)==0:0)break;iu(b);c[d>>2]=c[b+484>>2]}while(0);if(!(c[e>>2]|0)){if(!(c[h>>2]|0)){ku(b);lu(b)}else ju(b);mu(b,c[b+108>>2]|0)}nu(b);if(!(c[b+228>>2]|0))pu(b);else ou(b);f=b+460|0;if(!(c[(c[f>>2]|0)+16>>2]|0))d=(c[b+64>>2]|0)!=0&1;else d=1;qu(b,d);if(!(c[e>>2]|0))ru(b,0);Sb[c[(c[k>>2]|0)+24>>2]&255](b);Sb[c[(c[f>>2]|0)+8>>2]&255](b);d=c[b+8>>2]|0;if(!d)return;if(c[b+64>>2]|0)return;if(!(c[(c[f>>2]|0)+16>>2]|0))return;k=c[b+36>>2]|0;k=(c[b+224>>2]|0)==0?k:(k*3|0)+2|0;c[d+4>>2]=0;k=B(k,c[b+332>>2]|0)|0;c[d+8>>2]=k;c[d+12>>2]=0;c[d+16>>2]=(c[b+108>>2]|0)==0?2:3;c[j>>2]=(c[j>>2]|0)+1;return}function du(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a+444>>2]|0;e=d+8|0;if(!(c[e>>2]|0)){b=a+84|0;do if(c[b>>2]|0?(c[a+136>>2]|0)==0:0){if(c[a+92>>2]|0?c[a+108>>2]|0:0){c[a+484>>2]=c[d+24>>2];c[e>>2]=1;break}if(!(c[a+100>>2]|0)){f=c[a>>2]|0;c[f+20>>2]=47;Sb[c[f>>2]&255](a);break}else{c[a+484>>2]=c[d+20>>2];break}}while(0);Sb[c[c[a+472>>2]>>2]&255](a);Sb[c[(c[a+452>>2]|0)+8>>2]&255](a);if(!(c[a+68>>2]|0)){if(!(c[d+16>>2]|0))Sb[c[c[a+480>>2]>>2]&255](a);Sb[c[c[a+476>>2]>>2]&255](a);if(c[b>>2]|0)Ub[c[c[a+484>>2]>>2]&63](a,c[e>>2]|0);Ub[c[c[a+456>>2]>>2]&63](a,(c[e>>2]|0)==0?0:3);Ub[c[c[a+448>>2]>>2]&63](a,0)}}else{c[e>>2]=0;Ub[c[c[a+484>>2]>>2]&63](a,0);Ub[c[c[a+456>>2]>>2]&63](a,2);Ub[c[c[a+448>>2]>>2]&63](a,2)}b=c[a+8>>2]|0;if(!b)return;d=c[d+12>>2]|0;c[b+12>>2]=d;d=((c[e>>2]|0)==0?1:2)+d|0;b=b+16|0;c[b>>2]=d;if(!(c[a+64>>2]|0))return;if(c[(c[a+460>>2]|0)+20>>2]|0)return;c[b>>2]=((c[a+108>>2]|0)==0?1:2)+d;return}function eu(a){a=a|0;var b=0;b=c[a+444>>2]|0;if(c[a+84>>2]|0)Sb[c[(c[a+484>>2]|0)+8>>2]&255](a);b=b+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=c[a+20>>2]|0;if((b|0)!=202){t=c[a>>2]|0;c[t+20>>2]=21;c[t+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}xw(a);d=c[a+216>>2]|0;t=a+36|0;b=c[t>>2]|0;o=(b|0)>0;if(o){p=c[a+324>>2]|0;q=(c[a+76>>2]|0)==0?4:8;r=a+320|0;s=c[a+328>>2]|0;if((p|0)>(q|0)){k=(s|0)>(q|0);l=p<<1;i=d;j=0;while(1){m=i+36|0;c[m>>2]=p;a:do if(k)e=s;else{h=c[r>>2]|0;g=c[i+12>>2]|0;f=1;e=s;do{f=f<<1;if((h|0)%(B(f,g)|0)|0|0)break a;e=B(s,f)|0}while((e|0)<=(q|0))}while(0);f=i+40|0;c[f>>2]=e;g=e<<1;if((p|0)<=(g|0)){if((e|0)>(l|0))c[f>>2]=l}else c[m>>2]=g;j=j+1|0;if((j|0)>=(b|0))break;else i=i+88|0}}else{m=c[a+316>>2]|0;n=(s|0)>(q|0);k=d;l=0;while(1){g=c[k+8>>2]|0;f=1;e=p;do{f=f<<1;if((m|0)%(B(f,g)|0)|0|0)break;e=B(p,f)|0}while((e|0)<=(q|0));j=k+36|0;c[j>>2]=e;b:do if(n)g=s;else{h=c[r>>2]|0;i=c[k+12>>2]|0;f=1;g=s;do{f=f<<1;if((h|0)%(B(f,i)|0)|0|0)break b;g=B(s,f)|0}while((g|0)<=(q|0))}while(0);h=k+40|0;c[h>>2]=g;f=g<<1;if((e|0)<=(f|0)){e=e<<1;if((g|0)>(e|0))c[h>>2]=e}else c[j>>2]=f;l=l+1|0;if((l|0)>=(b|0))break;else k=k+88|0}}if(o){f=a+28|0;g=a+316|0;h=a+428|0;i=a+32|0;j=a+320|0;e=0;while(1){b=B(B(c[d+8>>2]|0,c[f>>2]|0)|0,c[d+36>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[g>>2]|0)|0)|0;c[d+44>>2]=b;b=B(B(c[d+12>>2]|0,c[i>>2]|0)|0,c[d+40>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[j>>2]|0)|0)|0;c[d+48>>2]=b;e=e+1|0;b=c[t>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}}d=c[a+44>>2]|0;switch(d|0){case 1:{b=d;break}case 6:case 2:{b=3;break}case 7:case 3:{b=3;break}case 5:case 4:{b=4;break}default:{}}c[a+120>>2]=b;c[a+124>>2]=(c[a+84>>2]|0)==0?b:1;if(!(gu(a)|0)){t=1;a=a+128|0;c[a>>2]=t;return}t=c[a+320>>2]|0;a=a+128|0;c[a>>2]=t;return}function gu(a){a=a|0;var b=0,d=0;if(c[a+308>>2]|0)return 0;switch(c[a+40>>2]|0){case 7:case 3:break;default:return 0}if((c[a+36>>2]|0)!=3)return 0;if((c[a+44>>2]|0)!=2)return 0;if((c[a+120>>2]|0)!=3)return 0;if(c[a+304>>2]|0)return 0;d=c[a+216>>2]|0;if((c[d+8>>2]|0)!=2)return 0;if((c[d+96>>2]|0)!=1)return 0;if((c[d+184>>2]|0)!=1)return 0;if((c[d+12>>2]|0)>2)return 0;if((c[d+100>>2]|0)!=1)return 0;if((c[d+188>>2]|0)!=1)return 0;b=c[d+36>>2]|0;if((b|0)!=(c[a+324>>2]|0))return 0;if((c[d+124>>2]|0)!=(b|0))return 0;if((c[d+212>>2]|0)!=(b|0))return 0;b=c[d+40>>2]|0;if((b|0)!=(c[a+328>>2]|0))return 0;if((c[d+128>>2]|0)==(b|0))return (c[d+216>>2]|0)==(b|0)|0;else return 0;return 0}function hu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=b+4|0;t=Jb[c[c[s>>2]>>2]&63](b,1,88)|0;r=b+484|0;c[r>>2]=t;c[t>>2]=48;c[t+8>>2]=120;c[t+12>>2]=121;c[t+68>>2]=0;c[t+52>>2]=0;t=b+120|0;if((c[t>>2]|0)>4){n=c[b>>2]|0;c[n+20>>2]=57;c[n+24>>2]=4;Sb[c[c[b>>2]>>2]&255](b)}d=b+96|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Sb[c[c[b>>2]>>2]&255](b);e=c[d>>2]|0}n=c[r>>2]|0;l=n+32|0;k=c[t>>2]|0;if((k|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=B(d,g)|0;f=f+1|0}while((f|0)!=(k|0));if((d|0)>(e|0)){f=h;break}else h=g}}else{f=(e|0)>1?e:1;d=f+1|0}if(f>>>0<2){j=c[b>>2]|0;c[j+20>>2]=58;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}a:do if((k|0)>0){h=1;d=0;do{c[n+32+(d<<2)>>2]=f;h=B(h,f)|0;d=d+1|0}while((d|0)!=(k|0));if((c[b+44>>2]|0)==2){g=0;d=0;f=h;while(1){h=n+32+(c[15924+(d<<2)>>2]<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=22}}else{d=g;m=22}if((m|0)==22){m=0;if(!d)break a;else{g=0;d=0}}}}else{g=0;d=0;f=h;while(1){h=n+32+(d<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=26}}else{d=g;m=26}if((m|0)==26){m=0;if(!d)break a;else{g=0;d=0}}}}}else f=1;while(0);d=c[b>>2]|0;if((c[t>>2]|0)==3){c[d+24>>2]=f;c[d+28>>2]=c[l>>2];c[d+32>>2]=c[n+36>>2];c[d+36>>2]=c[n+40>>2];c[d+20>>2]=96;Ub[c[d+4>>2]&63](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1)}m=Kb[c[(c[s>>2]|0)+8>>2]&15](b,1,f,c[t>>2]|0)|0;d=c[t>>2]|0;if((d|0)>0){k=0;l=f;do{j=c[n+32+(k<<2)>>2]|0;i=l;l=(l|0)/(j|0)|0;if((j|0)>0?(o=j+-1|0,p=(o|0)/2|0,q=m+(k<<2)|0,(l|0)>0):0){g=0;do{d=B(g,l)|0;if((d|0)<(f|0)){h=(((g*255|0)+p|0)/(o|0)|0)&255;do{e=0;do{a[(c[q>>2]|0)+(e+d)>>0]=h;e=e+1|0}while((e|0)!=(l|0));d=d+i|0}while((d|0)<(f|0))}g=g+1|0}while((g|0)!=(j|0));d=c[t>>2]|0}k=k+1|0}while((k|0)<(d|0))}c[n+16>>2]=m;c[n+20>>2]=f;rw(b);if((c[b+88>>2]|0)!=2)return;e=c[r>>2]|0;f=(c[b+112>>2]<<1)+4|0;if((c[t>>2]|0)<=0)return;d=0;do{r=Jb[c[(c[s>>2]|0)+4>>2]&63](b,1,f)|0;c[e+68+(d<<2)>>2]=r;d=d+1|0}while((d|0)<(c[t>>2]|0));return}function iu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;e=Jb[c[c[f>>2]>>2]&63](a,1,44)|0;c[a+484>>2]=e;c[e>>2]=49;c[e+12>>2]=122;g=e+32|0;c[g>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){d=c[a>>2]|0;c[d+20>>2]=48;Sb[c[d>>2]&255](a)}b=Jb[c[c[f>>2]>>2]&63](a,1,128)|0;d=e+24|0;c[d>>2]=b;b=0;do{h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,4096)|0;c[(c[d>>2]|0)+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=32);c[e+28>>2]=1;if(!(c[a+108>>2]|0))c[e+16>>2]=0;else{b=c[a+96>>2]|0;if((b|0)>=8){if((b|0)>256){h=c[a>>2]|0;c[h+20>>2]=59;c[h+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{h=c[a>>2]|0;c[h+20>>2]=58;c[h+24>>2]=8;Sb[c[c[a>>2]>>2]&255](a)}h=Kb[c[(c[f>>2]|0)+8>>2]&15](a,1,b,3)|0;c[e+16>>2]=h;c[e+20>>2]=b}b=a+88|0;if(!(c[b>>2]|0))return;c[b>>2]=2;h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,((c[a+112>>2]|0)*6|0)+12|0)|0;c[g>>2]=h;gw(a);return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+4|0;b=Jb[c[c[g>>2]>>2]&63](a,1,48)|0;f=a+476|0;c[f>>2]=b;c[b>>2]=123;c[b+8>>2]=0;d=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[b+40>>2]=d;e=b+4|0;if((c[a+320>>2]|0)==2){c[e>>2]=1;c[b+12>>2]=9;e=Jb[c[(c[g>>2]|0)+4>>2]&63](a,1,d)|0;c[b+32>>2]=e;b=c[f>>2]|0}else{c[e>>2]=2;c[b+12>>2]=10;c[b+32>>2]=0}d=(c[a+40>>2]|0)==7;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;e=b+16|0;c[e>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;f=b+20|0;c[f>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;h=b+24|0;c[h>>2]=i;g=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;c[b+28>>2]=g;e=c[e>>2]|0;f=c[f>>2]|0;a=c[h>>2]|0;if(d){b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*183763|0)+32768>>16;c[f+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[a+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}else{b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*91881|0)+32768>>16;c[f+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[a+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}}function ku(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;e=Jb[c[c[b>>2]>>2]&63](a,1,28)|0;g=a+480|0;c[g>>2]=e;c[e>>2]=124;h=a+40|0;switch(c[h>>2]|0){case 1:{if((c[a+36>>2]|0)!=1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 7:case 6:case 3:case 2:{if((c[a+36>>2]|0)!=3){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 5:case 4:{if((c[a+36>>2]|0)!=4){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}default:if((c[a+36>>2]|0)<1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}}d=a+304|0;a:do if(c[d>>2]|0){switch(c[h>>2]|0){case 6:case 2:break a;default:{}}f=c[a>>2]|0;c[f+20>>2]=28;Sb[c[f>>2]&255](a)}while(0);f=c[a+44>>2]|0;b:do switch(f|0){case 1:{c[a+120>>2]=1;switch(c[h>>2]|0){case 7:case 3:case 1:{c[e+4>>2]=4;d=c[a+36>>2]|0;if((d|0)<=1)break b;e=c[a+216>>2]|0;b=1;do{c[e+(b*88|0)+52>>2]=0;b=b+1|0}while((b|0)<(d|0));break}case 2:{switch(c[d>>2]|0){case 0:{c[e+4>>2]=5;break}case 1:{c[e+4>>2]=6;break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a)}}h=c[g>>2]|0;d=Jb[c[c[b>>2]>>2]&63](a,1,3072)|0;c[h+24>>2]=d;b=0;do{c[d+(b<<2)>>2]=b*19595;c[d+(b+256<<2)>>2]=b*38470;c[d+(b+512<<2)>>2]=(b*7471|0)+32768;b=b+1|0}while((b|0)!=256);break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a);break b}}break}case 2:{c[a+120>>2]=3;switch(c[h>>2]|0){case 1:{c[e+4>>2]=7;break b}case 3:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 7:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*183763|0)+32768>>16;c[g+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[h+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 2:switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}case 6:{c[a+120>>2]=3;if((c[h>>2]|0)!=6){i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}}case 4:{c[a+120>>2]=4;switch(c[h>>2]|0){case 5:{c[e+4>>2]=11;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 4:{c[e+4>>2]=12;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}default:if((f|0)==(c[h>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=12;break b}else{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}while(0);if(c[a+84>>2]|0){h=1;i=a+124|0;c[i>>2]=h;return}h=c[a+120>>2]|0;i=a+124|0;c[i>>2]=h;return}function lu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=b+4|0;d=Jb[c[c[m>>2]>>2]&63](b,1,160)|0;c[b+476>>2]=d;c[d>>2]=125;c[d+4>>2]=3;c[d+8>>2]=0;if(c[b+308>>2]|0){w=c[b>>2]|0;c[w+20>>2]=26;Sb[c[w>>2]&255](b)}n=b+36|0;if((c[n>>2]|0)<=0)return;o=b+324|0;p=b+328|0;q=b+316|0;r=b+320|0;s=d+100|0;t=d+52|0;u=b+112|0;v=d+12|0;w=d+140|0;h=d+150|0;f=c[b+216>>2]|0;g=0;while(1){i=B(c[f+36>>2]|0,c[f+8>>2]|0)|0;i=(i|0)/(c[o>>2]|0)|0;j=B(c[f+40>>2]|0,c[f+12>>2]|0)|0;j=(j|0)/(c[p>>2]|0)|0;k=c[q>>2]|0;l=c[r>>2]|0;c[s+(g<<2)>>2]=j;do if(!(c[f+52>>2]|0))c[t+(g<<2)>>2]=11;else{d=(j|0)==(l|0);if((i|0)==(k|0)&d){c[t+(g<<2)>>2]=12;break}e=(i<<1|0)==(k|0);do if(e&d)c[t+(g<<2)>>2]=13;else{if(e&(j<<1|0)==(l|0)){c[t+(g<<2)>>2]=14;break}d=(k|0)/(i|0)|0;if((k-(B(d,i)|0)|0)==0?(x=(l|0)/(j|0)|0,(l-(B(x,j)|0)|0)==0):0){c[t+(g<<2)>>2]=15;a[w+g>>0]=d;a[h+g>>0]=x;break}l=c[b>>2]|0;c[l+20>>2]=39;Sb[c[l>>2]&255](b)}while(0);k=c[(c[m>>2]|0)+8>>2]|0;l=yu(c[u>>2]|0,c[q>>2]|0)|0;l=Kb[k&15](b,1,l,c[r>>2]|0)|0;c[v+(g<<2)>>2]=l}while(0);g=g+1|0;if((g|0)>=(c[n>>2]|0))break;else f=f+88|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,1,28)|0;c[a+456>>2]=d;c[d>>2]=50;h=d+8|0;c[h>>2]=0;i=d+12|0;c[i>>2]=0;if(!(c[a+84>>2]|0))return;g=c[a+320>>2]|0;e=d+16|0;c[e>>2]=g;d=c[f>>2]|0;if(!b){h=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=Kb[c[d+8>>2]&15](a,1,h,g)|0;c[i>>2]=h;return}else{f=c[d+16>>2]|0;b=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;i=yu(c[a+116>>2]|0,g)|0;i=Ob[f&63](a,1,0,b,i,c[e>>2]|0)|0;c[h>>2]=i;return}}function nu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Jb[c[c[f>>2]>>2]&63](a,1,84)|0;c[a+472>>2]=b;c[b>>2]=126;g=a+36|0;if((c[g>>2]|0)<=0)return;e=b+44|0;b=0;d=c[a+216>>2]|0;while(1){h=Jb[c[c[f>>2]>>2]&63](a,1,256)|0;c[d+84>>2]=h;aP(h|0,0,256)|0;c[e+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;else d=d+88|0}return}function ou(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+4|0;e=Jb[c[c[g>>2]>>2]&63](b,1,192)|0;c[b+468>>2]=e;c[e>>2]=127;c[e+8>>2]=128;d=e+188|0;e=e+60|0;f=e+128|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[d>>0]=113;if(!(c[b+224>>2]|0))return;f=b+36|0;e=Jb[c[c[g>>2]>>2]&63](b,1,c[f>>2]<<8)|0;c[b+160>>2]=e;if((c[f>>2]|0)<=0)return;d=0;do{aP(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;f=Jb[c[c[b>>2]>>2]&63](a,1,220)|0;c[a+468>>2]=f;c[f>>2]=129;c[f+8>>2]=130;if(!(c[a+224>>2]|0)){e=f+68|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[f+88>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;return}e=a+36|0;d=Jb[c[c[b>>2]>>2]&63](a,1,c[e>>2]<<8)|0;c[a+160>>2]=d;if((c[e>>2]|0)>0){b=0;do{aP(d+(b<<8)|0,-1,256)|0;b=b+1|0}while((b|0)<(c[e>>2]|0))}f=f+48|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;return}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=a+4|0;i=Jb[c[c[h>>2]>>2]&63](a,1,116)|0;c[a+452>>2]=i;c[i>>2]=131;c[i+8>>2]=132;c[i+112>>2]=0;if(!b){b=Jb[c[(c[h>>2]|0)+4>>2]&63](a,1,1280)|0;c[i+32>>2]=b;c[i+36>>2]=b+128;c[i+40>>2]=b+256;c[i+44>>2]=b+384;c[i+48>>2]=b+512;c[i+52>>2]=b+640;c[i+56>>2]=b+768;c[i+60>>2]=b+896;c[i+64>>2]=b+1024;c[i+68>>2]=b+1152;if(!(c[a+436>>2]|0))aP(b|0,0,1280)|0;c[i+4>>2]=89;c[i+12>>2]=35;c[i+16>>2]=0;return}f=a+36|0;if((c[f>>2]|0)>0){g=a+224|0;b=i+72|0;d=0;e=c[a+216>>2]|0;while(1){k=e+12|0;j=c[k>>2]|0;j=(c[g>>2]|0)==0?j:j*3|0;m=c[(c[h>>2]|0)+20>>2]|0;l=yu(c[e+28>>2]|0,c[e+8>>2]|0)|0;k=yu(c[e+32>>2]|0,c[k>>2]|0)|0;j=Ob[m&63](a,1,1,l,k,j)|0;c[b+(d<<2)>>2]=j;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}}else b=i+72|0;c[i+4>>2]=88;c[i+12>>2]=34;c[i+16>>2]=b;return}function ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;j=Jb[c[c[l>>2]>>2]&63](a,1,80)|0;d=a+448|0;c[d>>2]=j;c[j>>2]=51;if(b|0){k=c[a>>2]|0;c[k+20>>2]=3;Sb[c[k>>2]&255](a)}k=a+328|0;e=c[k>>2]|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[j+52>>2]=e;b=a+36|0;h=e;g=b;b=c[b>>2]|0;d=e}else{if((e|0)<2){e=c[a>>2]|0;c[e+20>>2]=48;Sb[c[e>>2]&255](a);e=c[k>>2]|0}h=c[d>>2]|0;i=a+36|0;f=Jb[c[c[l>>2]>>2]&63](a,1,c[i>>2]<<3)|0;g=h+60|0;c[g>>2]=f;b=c[i>>2]|0;h=h+64|0;c[h>>2]=f+(b<<2);if((b|0)>0){f=e+4|0;d=c[a+216>>2]|0;e=0;while(1){m=B(c[d+40>>2]|0,c[d+12>>2]|0)|0;m=(m|0)/(c[k>>2]|0)|0;b=B(m,f)|0;m=(Jb[c[c[l>>2]>>2]&63](a,1,b<<3)|0)+(m<<2)|0;c[(c[g>>2]|0)+(e<<2)>>2]=m;c[(c[h>>2]|0)+(e<<2)>>2]=m+(b<<2);e=e+1|0;b=c[i>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}d=c[k>>2]|0;h=d+2|0;g=i}if((b|0)<=0)return;f=j+8|0;b=0;e=c[a+216>>2]|0;while(1){m=(B(c[e+40>>2]|0,c[e+12>>2]|0)|0)/(d|0)|0;j=B(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=B(m,h)|0;m=Kb[c[(c[l>>2]|0)+8>>2]&15](a,1,j,m)|0;c[f+(b<<2)>>2]=m;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;e=e+88|0;d=c[k>>2]|0}return}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=c[a+448>>2]|0;switch(b|0){case 0:{b=r+4|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[b>>2]=17;c[r+48>>2]=c[r+52>>2];return}c[b>>2]=16;l=c[a+328>>2]|0;m=c[a+36>>2]|0;if((m|0)>0){n=r+60|0;o=r+64|0;p=l+2|0;q=l+-2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(l|0)|0;k=c[(c[n>>2]|0)+(i<<2)>>2]|0;f=c[(c[o>>2]|0)+(i<<2)>>2]|0;g=c[r+8+(i<<2)>>2]|0;a=B(j,p)|0;if((a|0)>0){b=0;do{e=c[g+(b<<2)>>2]|0;c[f+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(a|0))}a=j<<1;if((j|0)>0){d=B(j,l)|0;e=B(j,q)|0;b=0;do{s=b+d|0;t=b+e|0;c[f+(t<<2)>>2]=c[g+(s<<2)>>2];c[f+(s<<2)>>2]=c[g+(t<<2)>>2];b=b+1|0}while((b|0)<(a|0));b=0;do{c[k+(b-j<<2)>>2]=c[k>>2];b=b+1|0}while((b|0)!=(j|0))}i=i+1|0;if((i|0)==(m|0))break;else h=h+88|0}}c[r+68>>2]=0;c[r+72>>2]=0;c[r+76>>2]=0;c[r+56>>2]=0;return}case 2:{c[r+4>>2]=18;return}default:{t=c[a>>2]|0;c[t+20>>2]=3;Sb[c[t>>2]&255](a);return}}}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=a+448|0;w=c[v>>2]|0;y=w+56|0;do if(!(c[y>>2]|0))if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,c[w+60+(c[w+68>>2]<<2)>>2]|0)|0))return;else{c[y>>2]=1;x=w+76|0;c[x>>2]=(c[x>>2]|0)+1;break}while(0);x=w+72|0;switch(c[x>>2]|0){case 2:{f=w+48|0;g=w+52|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[w+68>>2]<<2)>>2]|0,f,c[g>>2]|0,b,d,e);if((c[f>>2]|0)>>>0<(c[g>>2]|0)>>>0)return;c[x>>2]=0;if((c[d>>2]|0)>>>0>>0)h=9;else return;break}case 0:{f=w+48|0;g=w+52|0;h=9;break}case 1:{u=w+48|0;t=w+52|0;break}default:return}if((h|0)==9){c[f>>2]=0;p=c[a+328>>2]|0;c[g>>2]=p+-1;if((c[w+76>>2]|0)==(c[a+332>>2]|0)?(i=c[v>>2]|0,r=c[a+36>>2]|0,(r|0)>0):0){q=i+52|0;l=i+60+(c[i+68>>2]<<2)|0;j=c[a+216>>2]|0;k=0;while(1){u=B(c[j+40>>2]|0,c[j+12>>2]|0)|0;h=(u|0)/(p|0)|0;o=((c[j+48>>2]|0)>>>0)%(u>>>0)|0;o=(o|0)==0?u:o;if(!k)c[q>>2]=((o+-1|0)/(h|0)|0)+1;m=c[(c[l>>2]|0)+(k<<2)>>2]|0;n=h<<1;if((h|0)>0){i=m+(o+-1<<2)|0;h=0;do{c[m+(h+o<<2)>>2]=c[i>>2];h=h+1|0}while((h|0)<(n|0))}k=k+1|0;if((k|0)==(r|0))break;else j=j+88|0}}c[x>>2]=1;u=f;t=g}s=w+68|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[s>>2]<<2)>>2]|0,u,c[t>>2]|0,b,d,e);if((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)return;if((c[w+76>>2]|0)==1){g=c[v>>2]|0;f=c[a+328>>2]|0;r=c[a+36>>2]|0;if((r|0)>0){b=g+60|0;o=g+64|0;p=f+1|0;q=f+2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(f|0)|0;k=c[(c[b>>2]|0)+(i<<2)>>2]|0;l=c[(c[o>>2]|0)+(i<<2)>>2]|0;if((j|0)>0){m=B(j,p)|0;n=B(j,q)|0;g=0;do{w=g+m|0;a=g-j|0;c[k+(a<<2)>>2]=c[k+(w<<2)>>2];c[l+(a<<2)>>2]=c[l+(w<<2)>>2];a=g+n|0;c[k+(a<<2)>>2]=c[k+(g<<2)>>2];c[l+(a<<2)>>2]=c[l+(g<<2)>>2];g=g+1|0}while((g|0)!=(j|0))}i=i+1|0;if((i|0)==(r|0))break;else h=h+88|0}}}else f=c[a+328>>2]|0;c[s>>2]=c[s>>2]^1;c[y>>2]=0;c[u>>2]=f+1;c[t>>2]=f+2;c[x>>2]=2;return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[a+448>>2]|0;i=f+48|0;h=f+52|0;g=c[h>>2]|0;do if((c[i>>2]|0)>>>0>=g>>>0){f=f+8|0;if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,f)|0))return;else{c[i>>2]=0;g=c[h>>2]|0;break}}else f=f+8|0;while(0);_b[c[(c[a+456>>2]|0)+4>>2]&7](a,f,i,g,b,d,e);return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,0,0,0,b,d,e);return}function wu(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+452>>2]|0;if((c[a+340>>2]|0)>1)a=1;else{d=c[a+344>>2]|0;a=c[((c[a+332>>2]|0)==1?d+76|0:d+12|0)>>2]|0}c[b+28>>2]=a;c[b+20>>2]=0;c[b+24>>2]=0;return}function xu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[a+452>>2]|0;if(!(c[k+16>>2]|0)){l=a+156|0;c[l>>2]=0;return}a:do if(((c[a+80>>2]|0)!=0?(c[a+224>>2]|0)!=0:0)?(j=a+160|0,(c[j>>2]|0)!=0):0){d=k+112|0;e=c[d>>2]|0;if(!e){i=a+36|0;e=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[d>>2]=e}else i=a+36|0;if((c[i>>2]|0)>0){f=0;g=c[a+216>>2]|0;h=0;while(1){d=c[g+80>>2]|0;if(!d){l=20;break a}if(!(b[d>>1]|0)){l=20;break a}if(!(b[d+2>>1]|0)){l=20;break a}if(!(b[d+16>>1]|0)){l=20;break a}if(!(b[d+32>>1]|0)){l=20;break a}if(!(b[d+18>>1]|0)){l=20;break a}if(!(b[d+4>>1]|0)){l=20;break a}d=c[j>>2]|0;if((c[d+(h<<8)>>2]|0)<0){l=20;break a}m=d+(h<<8)+4|0;c[e+4>>2]=c[m>>2];m=c[m>>2]|0;n=d+(h<<8)+8|0;c[e+8>>2]=c[n>>2];m=c[n>>2]|m;n=d+(h<<8)+12|0;c[e+12>>2]=c[n>>2];n=m|c[n>>2];m=d+(h<<8)+16|0;c[e+16>>2]=c[m>>2];m=n|c[m>>2];d=d+(h<<8)+20|0;c[e+20>>2]=c[d>>2];f=(m|c[d>>2]|0)==0?f:1;h=h+1|0;if((h|0)>=(c[i>>2]|0))break;else{g=g+88|0;e=e+24|0}}if(f)d=36;else l=20}else l=20}else l=20;while(0);if((l|0)==20)d=34;c[k+12>>2]=d;n=a+156|0;c[n>>2]=0;return}function yu(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;u=z;x=a+452|0;v=c[x>>2]|0;y=a+340|0;if((c[y>>2]|0)>0){d=a+4|0;e=a+148|0;b=0;do{r=c[a+344+(b<<2)>>2]|0;t=c[r+12>>2]|0;s=B(t,c[e>>2]|0)|0;t=Mb[c[(c[d>>2]|0)+32>>2]&31](a,c[v+72+(c[r+4>>2]<<2)>>2]|0,s,t,1)|0;c[u+(b<<2)>>2]=t;b=b+1|0}while((b|0)<(c[y>>2]|0))}o=v+24|0;b=c[o>>2]|0;p=v+28|0;f=c[p>>2]|0;a:do if((b|0)<(f|0)){q=v+20|0;r=a+360|0;s=a+468|0;t=v+32|0;d=c[q>>2]|0;e=c[r>>2]|0;b:while(1){if(d>>>0>>0){do{n=c[y>>2]|0;if((n|0)>0){e=0;m=0;do{l=c[a+344+(m<<2)>>2]|0;j=c[l+56>>2]|0;k=B(j,d)|0;l=c[l+60>>2]|0;if((l|0)>0?(w=c[u+(m<<2)>>2]|0,(j|0)>0):0){i=0;do{f=0;g=(c[w+(i+b<<2)>>2]|0)+(k<<7)|0;h=e;while(1){c[v+32+(h<<2)>>2]=g;f=f+1|0;if((f|0)==(j|0))break;else{g=g+128|0;h=h+1|0}}e=j+e|0;i=i+1|0}while((i|0)<(l|0))}m=m+1|0}while((m|0)<(n|0))}if(!(Ib[c[(c[s>>2]|0)+4>>2]&63](a,t)|0))break b;d=d+1|0;e=c[r>>2]|0}while(d>>>0>>0);f=c[p>>2]|0}c[q>>2]=0;b=b+1|0;if((b|0)<(f|0))d=0;else break a}c[o>>2]=b;c[q>>2]=d;y=0;zb=z;return y|0}while(0);d=a+148|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;d=c[a+332>>2]|0;if(b>>>0>=d>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);y=4;zb=z;return y|0}e=c[x>>2]|0;if((c[y>>2]|0)>1)b=1;else{y=c[a+344>>2]|0;b=c[(b>>>0<(d+-1|0)>>>0?y+12|0:y+76|0)>>2]|0}c[e+28>>2]=b;c[e+20>>2]=0;c[e+24>>2]=0;y=3;zb=z;return y|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=c[a+452>>2]|0;w=a+332|0;x=(c[w>>2]|0)+-1|0;g=a+144|0;h=a+152|0;i=a+460|0;d=a+148|0;u=a+156|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[d>>2]|0)>>>0>(c[u>>2]|0)>>>0)break}if(!(Gb[c[c[i>>2]>>2]&127](a)|0)){d=0;j=20;break}}if((j|0)==20)return d|0;q=a+36|0;if((c[q>>2]|0)>0){r=a+4|0;s=a+472|0;o=c[a+216>>2]|0;p=0;while(1){if(c[o+52>>2]|0){d=o+12|0;t=c[d>>2]|0;n=B(t,c[u>>2]|0)|0;t=Mb[c[(c[r>>2]|0)+32>>2]&31](a,c[v+72+(p<<2)>>2]|0,n,t,0)|0;if((c[u>>2]|0)>>>0>>0)i=c[d>>2]|0;else{n=c[d>>2]|0;i=((c[o+32>>2]|0)>>>0)%(n>>>0)|0;i=(i|0)==0?n:i}k=c[(c[s>>2]|0)+4+(p<<2)>>2]|0;if((i|0)>0){l=o+28|0;m=o+40|0;n=o+36|0;h=c[b+(p<<2)>>2]|0;j=0;d=c[l>>2]|0;while(1){if(!d)d=0;else{e=0;f=c[t+(j<<2)>>2]|0;g=0;while(1){Yb[k&63](a,o,f,h,e);g=g+1|0;d=c[l>>2]|0;if(g>>>0>=d>>>0)break;else{e=(c[n>>2]|0)+e|0;f=f+128|0}}}j=j+1|0;if((j|0)==(i|0))break;else h=h+(c[m>>2]<<2)|0}}}p=p+1|0;if((p|0)>=(c[q>>2]|0))break;else o=o+88|0}}x=(c[u>>2]|0)+1|0;c[u>>2]=x;x=x>>>0<(c[w>>2]|0)>>>0?3:4;return x|0}function Bu(a){a=a|0;return 0}function Cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+452|0;I=c[N>>2]|0;J=(c[a+360>>2]|0)+-1|0;M=a+332|0;f=c[M>>2]|0;K=f+-1|0;G=I+24|0;d=c[G>>2]|0;H=I+28|0;g=c[H>>2]|0;do if((d|0)<(g|0)){y=I+20|0;z=a+436|0;A=a+468|0;C=I+32|0;D=a+368|0;E=a+340|0;F=a+472|0;e=a+148|0;x=d;f=g;d=c[y>>2]|0;a:while(1){if(d>>>0<=J>>>0){do{if(c[z>>2]|0)aP(c[C>>2]|0,0,c[D>>2]<<7|0)|0;if(!(Ib[c[(c[A>>2]|0)+4>>2]&63](a,C)|0))break a;f=c[E>>2]|0;if((f|0)>0){w=d>>>0>>0;g=0;v=0;do{m=c[a+344+(v<<2)>>2]|0;b:do if(c[m+52>>2]|0){h=c[m+4>>2]|0;n=c[(c[F>>2]|0)+4+(h<<2)>>2]|0;o=m+56|0;p=c[(w?o:m+72|0)>>2]|0;q=m+40|0;i=c[q>>2]|0;r=B(c[m+68>>2]|0,d)|0;s=m+60|0;l=c[s>>2]|0;if((l|0)>0){t=m+76|0;u=m+36|0;if((p|0)<=0){i=c[o>>2]|0;h=0;while(1){g=i+g|0;h=h+1|0;if((h|0)>=(l|0))break b}}j=(c[b+(h<<2)>>2]|0)+((B(i,x)|0)<<2)|0;k=0;h=l;f=i;while(1){if(!((c[e>>2]|0)>>>0>=K>>>0?(k+x|0)>=(c[t>>2]|0):0)){f=r;h=0;while(1){Yb[n&63](a,m,c[I+32+(h+g<<2)>>2]|0,j,f);h=h+1|0;if((h|0)==(p|0))break;else f=(c[u>>2]|0)+f|0}f=c[q>>2]|0;h=c[s>>2]|0}g=(c[o>>2]|0)+g|0;k=k+1|0;if((k|0)>=(h|0))break;else j=j+(f<<2)|0}f=c[E>>2]|0}}else g=(c[m+64>>2]|0)+g|0;while(0);v=v+1|0}while((v|0)<(f|0))}d=d+1|0}while(d>>>0<=J>>>0);f=c[H>>2]|0}c[y>>2]=0;d=x+1|0;if((d|0)<(f|0)){x=d;d=0}else{L=30;break}}if((L|0)==30){f=c[M>>2]|0;break}c[G>>2]=x;c[y>>2]=d;a=0;return a|0}else e=a+148|0;while(0);d=a+156|0;c[d>>2]=(c[d>>2]|0)+1;d=(c[e>>2]|0)+1|0;c[e>>2]=d;if(d>>>0>=f>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);a=4;return a|0}e=c[N>>2]|0;if((c[a+340>>2]|0)>1)d=1;else{a=c[a+344>>2]|0;d=c[(d>>>0<(f+-1|0)>>>0?a+12|0:a+76|0)>>2]|0}c[e+28>>2]=d;c[e+20>>2]=0;c[e+24>>2]=0;a=3;return a|0}function Du(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;oa=zb;zb=zb+128|0;ka=oa;la=c[a+452>>2]|0;na=a+332|0;ma=(c[na>>2]|0)+-1|0;n=a+144|0;f=c[n>>2]|0;i=a+152|0;g=c[i>>2]|0;a:do if((f|0)<=(g|0)){j=a+460|0;k=a+412|0;l=a+148|0;m=a+156|0;while(1){h=c[j>>2]|0;if(c[h+20>>2]|0)break a;if((f|0)==(g|0)?(c[l>>2]|0)>>>0>((c[m>>2]|0)+((c[k>>2]|0)==0&1)|0)>>>0:0)break a;if(!(Gb[c[h>>2]&127](a)|0)){f=0;break}f=c[n>>2]|0;g=c[i>>2]|0;if((f|0)>(g|0))break a}zb=oa;return f|0}while(0);ba=a+36|0;if((c[ba>>2]|0)>0){f=a+156|0;ca=a+4|0;da=la+112|0;ea=a+472|0;fa=ka+2|0;ga=ka+16|0;ha=ka+32|0;ia=ka+18|0;ja=ka+4|0;_=0;$=c[a+216>>2]|0;while(1){if(c[$+52>>2]|0){h=c[f>>2]|0;if(h>>>0>>0){i=c[$+12>>2]|0;g=i<<1;j=0;aa=i}else{i=c[$+12>>2]|0;aa=((c[$+32>>2]|0)>>>0)%(i>>>0)|0;aa=(aa|0)==0?i:aa;g=aa;j=1}if(!h){Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,0,g,0)|0;g=1}else{Y=B(i,h+-1|0)|0;Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,Y,i+g|0,0)|0;Y=Y+(c[$+12>>2]<<2)|0;g=0}i=(c[da>>2]|0)+(_*6<<2)|0;o=c[$+80>>2]|0;l=e[o>>1]|0;h=e[o+2>>1]|0;k=e[o+16>>1]|0;m=e[o+32>>1]|0;n=e[o+18>>1]|0;o=e[o+4>>1]|0;Z=c[(c[ea>>2]|0)+4+(_<<2)>>2]|0;if((aa|0)>0){X=(g|0)!=0;N=(j|0)!=0;O=aa+-1|0;P=$+28|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=l*36|0;U=h<<7;V=i+16|0;W=k<<7;M=h<<8;J=i+20|0;K=l*9|0;L=m<<7;H=k<<8;I=$+36|0;F=l*5|0;G=n<<7;D=m<<8;E=o<<7;C=n<<8;y=o<<8;z=$+40|0;w=0;x=c[d+(_<<2)>>2]|0;while(1){g=c[Y+(w<<2)>>2]|0;if(X&(w|0)==0)h=g;else h=c[Y+(w+-1<<2)>>2]|0;if(N&(w|0)==(O|0))i=g;else i=c[Y+(w+1<<2)>>2]|0;l=b[h>>1]|0;q=b[g>>1]|0;k=b[i>>1]|0;A=(c[P>>2]|0)+-1|0;s=k;t=q;u=l;v=0;r=0;p=i;while(1){Eu(g,ka,1);if(v>>>0>>0){m=b[p+128>>1]|0;n=b[g+128>>1]|0;o=b[h+128>>1]|0}else{m=s;n=t;o=u}i=c[Q>>2]|0;if((i|0)!=0&(b[fa>>1]|0)==0){j=B(T,q-n|0)|0;if((j|0)>-1){j=(j+U|0)/(M|0)|0;pa=1<0?((j|0)<(pa|0)?j:pa+-1|0):j}else{pa=(U-j|0)/(M|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[fa>>1]=i}i=c[R>>2]|0;if((i|0)!=0&(b[ga>>1]|0)==0){j=B(T,u-s|0)|0;if((j|0)>-1){pa=(j+W|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(W-j|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ga>>1]=i}i=c[S>>2]|0;if((i|0)!=0&(b[ha>>1]|0)==0){j=B(K,u-(t<<1)+s|0)|0;if((j|0)>-1){pa=(j+L|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(L-j|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ha>>1]=i}j=c[V>>2]|0;if((j|0)!=0&(b[ia>>1]|0)==0){i=B(F,l-k-o+m|0)|0;if((i|0)>-1){i=(i+G|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(G-i|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ia>>1]=i}j=c[J>>2]|0;if((j|0)!=0&(b[ja>>1]|0)==0){i=B(K,q-(t<<1)+n|0)|0;if((i|0)>-1){i=(i+E|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(E-i|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ja>>1]=i}Yb[Z&63](a,$,ka,x,r);v=v+1|0;if(v>>>0>A>>>0)break;else{l=u;q=t;k=s;s=m;t=n;u=o;g=g+128|0;r=(c[I>>2]|0)+r|0;h=h+128|0;p=p+128|0}}w=w+1|0;if((w|0)==(aa|0))break;else x=x+(c[z>>2]<<2)|0}}}_=_+1|0;if((_|0)>=(c[ba>>2]|0))break;else $=$+88|0}}else f=a+156|0;pa=(c[f>>2]|0)+1|0;c[f>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;zb=oa;return pa|0}function Eu(a,b,c){a=a|0;b=b|0;c=c|0;_O(b|0,a|0,c<<7|0)|0;return}function Fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[a+468>>2]|0;m=a+412|0;f=c[m>>2]|0;d=(f|0)==0;if(!(c[a+224>>2]|0)){if((d?(c[a+420>>2]|0)==0:0)?(c[a+424>>2]|0)==0:0){m=c[a+416>>2]|0;if((c[a+220>>2]|0)!=0|(m|0)<64?(m|0)!=(c[a+436>>2]|0):0)e=38}else e=38;if((e|0)==38){m=c[a>>2]|0;c[m+20>>2]=125;Ub[c[m+4>>2]&63](a,-1)}g=a+436|0;c[n+4>>2]=(c[g>>2]|0)==63?41:42;d=a+340|0;if((c[d>>2]|0)>0){b=0;do{e=c[a+344+(b<<2)>>2]|0;m=c[e+20>>2]|0;Lu(a,1,m,n+68+(m<<2)|0);if(c[g>>2]|0){m=c[e+24>>2]|0;Lu(a,0,m,n+84+(m<<2)|0)}c[n+24+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[d>>2]|0))}f=a+368|0;if((c[f>>2]|0)<=0){m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}e=0;do{b=c[a+344+(c[a+372+(e<<2)>>2]<<2)>>2]|0;c[n+100+(e<<2)>>2]=c[n+68+(c[b+20>>2]<<2)>>2];c[n+140+(e<<2)>>2]=c[n+84+(c[b+24>>2]<<2)>>2];a:do if(!(c[b+52>>2]|0))b=0;else{d=c[b+40>>2]|0;b=c[b+36>>2]|0;switch(c[g>>2]|0){case 0:{b=1;break a}case 3:{b=(c[4336+(((d|0)!=1&1)<<3)+(((b|0)!=1&1)<<2)>>2]|0)+1|0;break a}case 8:{m=d+-1|0;b=b+-1|0;b=(c[4352+((m>>>0<2?m:2)*12|0)+((b>>>0<2?b:2)<<2)>>2]|0)+1|0;break a}case 15:{m=d+-1|0;b=b+-1|0;b=(c[4400+((m>>>0<3?m:3)<<4)+((b>>>0<3?b:3)<<2)>>2]|0)+1|0;break a}case 24:{m=d+-1|0;b=b+-1|0;b=(c[4464+((m>>>0<4?m:4)*20|0)+((b>>>0<4?b:4)<<2)>>2]|0)+1|0;break a}case 35:{m=d+-1|0;b=b+-1|0;b=(c[4576+((m>>>0<5?m:5)*24|0)+((b>>>0<5?b:5)<<2)>>2]|0)+1|0;break a}case 48:{m=d+-1|0;b=b+-1|0;b=(c[4720+((m>>>0<6?m:6)*28|0)+((b>>>0<6?b:6)<<2)>>2]|0)+1|0;break a}default:{m=d+-1|0;b=b+-1|0;b=(c[4928+((m>>>0<7?m:7)<<5)+((b>>>0<7?b:7)<<2)>>2]|0)+1|0;break a}}}while(0);c[n+180+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[f>>2]|0));m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}k=a+416|0;b=c[k>>2]|0;if(d)if(!b)e=7;else e=11;else if(((b|0)>=(f|0)?(b|0)<=(c[a+436>>2]|0):0)?(c[a+340>>2]|0)==1:0)e=7;else e=11;do if((e|0)==7){b=c[a+420>>2]|0;if(b){b=b+-1|0;if((b|0)!=(c[a+424>>2]|0)){e=11;break}}else b=c[a+424>>2]|0;if((b|0)>13)e=11}while(0);if((e|0)==11){l=c[a>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[a>>2]|0)+28>>2]=c[k>>2];c[(c[a>>2]|0)+32>>2]=c[a+420>>2];c[(c[a>>2]|0)+36>>2]=c[a+424>>2];Sb[c[c[a>>2]>>2]&255](a)}l=a+340|0;b=c[l>>2]|0;if((b|0)>0){i=a+160|0;g=a+420|0;j=a+424|0;h=0;do{e=c[(c[a+344+(h<<2)>>2]|0)+4>>2]|0;f=c[i>>2]|0;b=c[m>>2]|0;if(b){if((c[f+(e<<8)>>2]|0)<0){b=c[a>>2]|0;c[b+20>>2]=118;c[b+24>>2]=e;c[(c[a>>2]|0)+28>>2]=0;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);b=c[m>>2]|0}}else b=0;if((b|0)<=(c[k>>2]|0))while(1){d=f+(e<<8)+(b<<2)|0;o=c[d>>2]|0;if((c[g>>2]|0)!=(((o|0)>0?o:0)|0)){o=c[a>>2]|0;c[o+20>>2]=118;c[o+24>>2]=e;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1)}c[d>>2]=c[j>>2];if((b|0)<(c[k>>2]|0))b=b+1|0;else break}h=h+1|0;b=c[l>>2]|0}while((h|0)<(b|0))}else g=a+420|0;e=c[m>>2]|0;o=(e|0)==0;c[n+4>>2]=(c[g>>2]|0)==0?(o?37:38):o?39:40;b:do if((b|0)>0){f=n+64|0;b=0;while(1){d=c[a+344+(b<<2)>>2]|0;if(!e){if(!(c[g>>2]|0)){o=c[d+20>>2]|0;Lu(a,1,o,n+48+(o<<2)|0)}}else{k=c[d+24>>2]|0;o=n+48+(k<<2)|0;Lu(a,0,k,o);c[f>>2]=c[o>>2]}c[n+24+(b<<2)>>2]=0;b=b+1|0;if((b|0)>=(c[l>>2]|0))break b;e=c[m>>2]|0}}while(0);c[n+20>>2]=0;o=n+16|0;c[o>>2]=0;o=n+12|0;c[o>>2]=0;o=n+40|0;c[o>>2]=0;a=a+280|0;a=c[a>>2]|0;o=n+44|0;c[o>>2]=a;return}function Gu(a){a=a|0;var b=0;b=(c[a+468>>2]|0)+16|0;a=(c[a+464>>2]|0)+24|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function Hu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;t=c[a+424>>2]|0;i=a+280|0;if(c[i>>2]|0?(g=z+44|0,(c[g>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}h=a+340|0;if((c[h>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[h>>2]|0))}c[z+20>>2]=0;c[g>>2]=c[i>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;r=a+24|0;h=c[r>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;s=x+4|0;c[s>>2]=f;u=z+12|0;i=c[u>>2]|0;v=z+16|0;j=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];q=a+368|0;do if((c[q>>2]|0)>0){o=x+8|0;p=x+12|0;l=0;while(1){m=c[e+(l<<2)>>2]|0;n=c[a+372+(l<<2)>>2]|0;h=c[z+48+(c[(c[a+344+(n<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((j|0)<8){if(!(Ou(x,i,j,0)|0)){f=0;k=28;break}i=c[o>>2]|0;j=c[p>>2]|0;if((j|0)<8){f=1;k=17}else k=15}else k=15;if((k|0)==15){k=0;f=i>>j+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;k=17}else{f=d[h+1168+f>>0]|0;j=j-g|0}}if((k|0)==17){f=Pu(x,i,j,h,f)|0;if((f|0)<0){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}if(!f)f=0;else{if((j|0)<(f|0)){if(!(Ou(x,i,j,f)|0)){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}j=j-f|0;k=c[5184+(f<<2)>>2]|0;h=i>>j&k;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:k)|0}k=y+4+(n<<2)|0;n=(c[k>>2]|0)+f|0;c[k>>2]=n;b[m>>1]=n<=(c[q>>2]|0)){k=25;break}}if((k|0)==25){h=c[r>>2]|0;g=c[x>>2]|0;f=c[s>>2]|0;break}else if((k|0)==28){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=i;c[v>>2]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;zb=A;return z|0}function Iu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+32|0;w=y;x=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=x+44|0,(c[i>>2]|0)==0):0){u=x+16|0;v=c[a+464>>2]|0;t=v+24|0;c[t>>2]=(c[t>>2]|0)+((c[u>>2]|0)/8|0);c[u>>2]=0;if(!(Gb[c[v+8>>2]&127](a)|0)){x=0;zb=y;return x|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[x+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[x+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[x+40>>2]=0}if(!(c[x+40>>2]|0)){v=x+20|0;f=c[v>>2]|0;if(!f){c[w+16>>2]=a;r=a+24|0;t=c[r>>2]|0;c[w>>2]=c[t>>2];s=w+4|0;c[s>>2]=c[t+4>>2];t=x+12|0;g=c[t>>2]|0;u=x+16|0;h=c[u>>2]|0;n=c[a+416>>2]|0;o=c[a+424>>2]|0;p=c[a+432>>2]|0;k=c[e>>2]|0;l=c[x+64>>2]|0;f=c[a+412>>2]|0;a:do if((f|0)<=(n|0)){q=w+8|0;m=w+12|0;j=f;b:while(1){if((h|0)<8){if(!(Ou(w,g,h,0)|0)){f=0;a=36;break}g=c[q>>2]|0;h=c[m>>2]|0;if((h|0)<8){f=1;a=19}else a=17}else a=17;if((a|0)==17){a=0;f=g>>h+-8&255;i=c[l+144+(f<<2)>>2]|0;if(!i){f=9;a=19}else{f=d[l+1168+f>>0]|0;h=h-i|0}}if((a|0)==19){f=Pu(w,g,h,l,f)|0;if((f|0)<0){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}e=f>>>4;i=f&15;if(!i){switch(e&268435455|0){case 0:{f=0;break a}case 15:break;default:{a=27;break b}}f=j+15|0}else{f=e+j|0;if((h|0)<(i|0)){if(!(Ou(w,g,h,i)|0)){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}h=h-i|0;j=c[5184+(i<<2)>>2]|0;a=g>>h&j;b[k+(c[p+(f<<2)>>2]<<1)>>1]=a-((a|0)>(c[5184+(i+-1<<2)>>2]|0)?0:j)<>2]|0;g=c[q>>2]|0;break}else f=h;while(0);h=f-e|0;f=i+-1+(g>>h&c[5184+(e<<2)>>2])|0;break}else if((a|0)==36){zb=y;return f|0}}else f=0;while(0);r=c[r>>2]|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[s>>2];c[t>>2]=g;c[u>>2]=h}else f=f+-1|0;c[v>>2]=f}x=x+44|0;c[x>>2]=(c[x>>2]|0)+-1;x=1;zb=y;return x|0}function Ju(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;q=s;r=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=r+44|0,(c[i>>2]|0)==0):0){o=r+16|0;p=c[a+464>>2]|0;n=p+24|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)/8|0);c[o>>2]=0;if(!(Gb[c[p+8>>2]&127](a)|0)){r=0;zb=s;return r|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[r+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[r+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[r+40>>2]=0}c[q+16>>2]=a;m=a+24|0;h=c[m>>2]|0;g=c[h>>2]|0;c[q>>2]=g;f=c[h+4>>2]|0;n=q+4|0;c[n>>2]=f;o=r+12|0;i=c[o>>2]|0;p=r+16|0;j=c[p>>2]|0;l=1<>2];k=a+368|0;do if((c[k>>2]|0)>0){h=q+8|0;a=q+12|0;g=0;f=j;while(1){if((f|0)<1){if(!(Ou(q,i,f,1)|0)){f=0;a=19;break}f=c[a>>2]|0;i=c[h>>2]|0}f=f+-1|0;if(1<>2]|0;b[j>>1]=l|(e[j>>1]|0)}g=g+1|0;if((g|0)>=(c[k>>2]|0)){a=17;break}}if((a|0)==17){j=f;h=c[m>>2]|0;g=c[q>>2]|0;f=c[n>>2]|0;break}else if((a|0)==19){zb=s;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[o>>2]=i;c[p>>2]=j;r=r+44|0;c[r>>2]=(c[r>>2]|0)+-1;r=1;zb=s;return r|0}function Ku(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+288|0;E=G+256|0;D=G;F=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=F+44|0,(c[i>>2]|0)==0):0){z=F+16|0;A=c[a+464>>2]|0;y=A+24|0;c[y>>2]=(c[y>>2]|0)+((c[z>>2]|0)/8|0);c[z>>2]=0;if(!(Gb[c[A+8>>2]&127](a)|0)){F=0;zb=G;return F|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[F+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[F+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[F+40>>2]=0}do if(!(c[F+40>>2]|0)){q=c[a+416>>2]|0;s=c[a+424>>2]|0;r=1<>2]|0;c[E+16>>2]=a;w=a+24|0;y=c[w>>2]|0;c[E>>2]=c[y>>2];x=E+4|0;c[x>>2]=c[y+4>>2];y=F+12|0;j=c[y>>2]|0;z=F+16|0;g=c[z>>2]|0;A=F+20|0;h=c[A>>2]|0;u=c[e>>2]|0;l=c[F+64>>2]|0;i=c[a+412>>2]|0;o=E+8|0;p=E+12|0;a:do if(!h){f=0;b:while(1){if((g|0)<8){if(!(Ou(E,j,g,0)|0))break a;j=c[o>>2]|0;g=c[p>>2]|0;if((g|0)<8){h=1;v=17}else v=15}else v=15;if((v|0)==15){v=0;h=j>>g+-8&255;e=c[l+144+(h<<2)>>2]|0;if(!e){h=9;v=17}else{h=d[l+1168+h>>0]|0;g=g-e|0}}if((v|0)==17){v=0;g=Pu(E,j,g,l,h)|0;if((g|0)<0)break a;h=g;g=c[p>>2]|0;j=c[o>>2]|0}e=h>>>4;switch(h&15){case 0:{if((e|0)==15)k=0;else break b;break}case 1:{v=21;break}default:{v=c[a>>2]|0;c[v+20>>2]=121;Ub[c[v+4>>2]&63](a,-1);v=21}}if((v|0)==21){v=0;if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;k=(1<>2]<<1)|0;do if(!(b[e>>1]|0))if((h|0)<1)break c;else h=h+-1|0;else{if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,n=m<<16>>16,(r&n|0)==0):0)if(m<<16>>16>-1){b[e>>1]=r+n;break}else{b[e>>1]=s+n;break}}while(0);e=i+1|0;if((i|0)<(q|0))i=e;else{i=e;break}}if(k){e=c[t+(i<<2)>>2]|0;b[u+(e<<1)>>1]=k;c[D+(f<<2)>>2]=e;f=f+1|0}if((i|0)<(q|0))i=i+1|0;else{h=0;f=j;v=58;break a}}h=1<>2]|0;j=c[o>>2]|0}g=g-e|0;h=(j>>g&c[5184+(e<<2)>>2])+h|0;if(!h){h=0;f=j;v=58}else v=46}else{h=1;v=46}}else{f=0;v=46}while(0);d:do if((v|0)==46){while(1){e=u+(c[t+(i<<2)>>2]<<1)|0;do if(b[e>>1]|0){if((g|0)<1){if(!(Ou(E,j,g,1)|0))break d;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,C=B<<16>>16,(r&C|0)==0):0)if(B<<16>>16>-1){b[e>>1]=r+C;break}else{b[e>>1]=s+C;break}}while(0);if((i|0)<(q|0))i=i+1|0;else break}h=h+-1|0;f=j;v=58}while(0);if((v|0)==58){D=c[w>>2]|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[x>>2];c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;break}if(!f){F=0;zb=G;return F|0}do{f=f+-1|0;b[u+(c[D+(f<<2)>>2]<<1)>>1]=0}while((f|0)!=0);f=0;zb=G;return f|0}while(0);F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;zb=G;return F|0}function Lu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+1312|0;k=q+1040|0;p=q;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}n=(e|0)!=0;o=c[(n?b+180+(f<<2)|0:b+196+(f<<2)|0)>>2]|0;if(!o){m=c[b>>2]|0;c[m+20>>2]=52;c[m+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}e=c[g>>2]|0;if(!e){l=Jb[c[c[b+4>>2]>>2]&63](b,1,1424)|0;c[g>>2]=l;m=b}else{m=b;l=e}c[l+140>>2]=o;j=a[o+1>>0]|0;e=j&255;if(!(j<<24>>24))e=0;else aP(k|0,1,e|0)|0;f=a[o+2>>0]|0;g=f&255;h=e+g|0;if(h>>>0>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,2,g|0)|0;e=h}f=a[o+3>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,3,g|0)|0;e=h}f=a[o+4>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,4,g|0)|0;e=h}f=a[o+5>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,5,g|0)|0;e=h}f=a[o+6>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,6,g|0)|0;e=h}f=a[o+7>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,7,g|0)|0;e=h}f=a[o+8>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,8,g|0)|0;e=h}f=a[o+9>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,9,g|0)|0;e=h}f=a[o+10>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,10,g|0)|0;e=h}f=a[o+11>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,11,g|0)|0;e=h}f=a[o+12>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,12,g|0)|0;e=h}f=a[o+13>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,13,g|0)|0;e=h}f=a[o+14>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,14,g|0)|0;e=h}f=a[o+15>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,15,g|0)|0;e=h}f=a[o+16>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(!(f<<24>>24))h=e;else aP(k+e|0,16,g|0)|0;a[k+h>>0]=0;f=a[k>>0]|0;if(f<<24>>24){g=0;j=f<<24>>24;e=0;while(1){if((j|0)==(f<<24>>24|0)){f=g;while(1){i=e+1|0;c[p+(e<<2)>>2]=f;e=f+1|0;f=a[k+i>>0]|0;if((j|0)==(f<<24>>24|0)){f=e;e=i}else{g=e;e=i;break}}}if((g|0)>=(1<>2]|0;c[i+20>>2]=9;Sb[c[i>>2]&255](m)}if(!(f<<24>>24))break;else{g=g<<1;j=j+1|0}}}e=o+1|0;if(!(a[e>>0]|0)){f=0;e=-1}else{c[l+76>>2]=0-(c[p>>2]|0);e=d[e>>0]|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+4>>2]=e;e=o+2|0;if(!(a[e>>0]|0))e=-1;else{c[l+80>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+8>>2]=e;e=o+3|0;if(!(a[e>>0]|0))e=-1;else{c[l+84>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+12>>2]=e;e=o+4|0;if(!(a[e>>0]|0))e=-1;else{c[l+88>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+16>>2]=e;e=o+5|0;if(!(a[e>>0]|0))e=-1;else{c[l+92>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+20>>2]=e;e=o+6|0;if(!(a[e>>0]|0))e=-1;else{c[l+96>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+24>>2]=e;e=o+7|0;if(!(a[e>>0]|0))e=-1;else{c[l+100>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+28>>2]=e;e=o+8|0;if(!(a[e>>0]|0))e=-1;else{c[l+104>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+32>>2]=e;e=o+9|0;if(!(a[e>>0]|0))e=-1;else{c[l+108>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+36>>2]=e;e=o+10|0;if(!(a[e>>0]|0))e=-1;else{c[l+112>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+40>>2]=e;e=o+11|0;if(!(a[e>>0]|0))e=-1;else{c[l+116>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+44>>2]=e;e=o+12|0;if(!(a[e>>0]|0))e=-1;else{c[l+120>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+48>>2]=e;e=o+13|0;if(!(a[e>>0]|0))e=-1;else{c[l+124>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+52>>2]=e;e=o+14|0;if(!(a[e>>0]|0))e=-1;else{c[l+128>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+56>>2]=e;e=o+15|0;if(!(a[e>>0]|0))e=-1;else{c[l+132>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+60>>2]=e;e=o+16|0;if(!(a[e>>0]|0))e=-1;else{c[l+136>>2]=f-(c[p+(f<<2)>>2]|0);e=c[p+(f+(d[e>>0]|0)+-1<<2)>>2]|0}c[l+64>>2]=e;c[l+68>>2]=1048575;aP(l+144|0,0,1024)|0;k=o+1|0;if(!(a[k>>0]|0))e=0;else{j=1;e=0;while(1){i=o+17+e|0;f=128;g=c[p+(e<<2)>>2]<<7;while(1){c[l+144+(g<<2)>>2]=1;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}k=o+2|0;if(a[k>>0]|0){j=1;while(1){i=o+17+e|0;f=64;g=c[p+(e<<2)>>2]<<6;while(1){c[l+144+(g<<2)>>2]=2;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}g=o+3|0;if(a[g>>0]|0){f=1;while(1){k=c[p+(e<<2)>>2]<<5;j=o+17+e|0;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;i=k|1;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=i+1|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|3;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+3|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|7;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+7|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|15;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+7|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+8|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+9|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+10|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+11|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+12|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+13|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+14|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+15|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;k=k|31;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+4|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<4;k=o+17+e|0;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|7;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+3|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+4|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+5|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+6|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+7|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;r=r|15;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+5|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<3;k=o+17+e|0;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;r=r|7;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+6|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<2;k=o+17+e|0;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;r=r|3;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+7|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<1;k=o+17+e|0;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;r=r|1;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+8|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]|0;c[l+144+(r<<2)>>2]=8;a[l+1168+r>>0]=a[o+17+e>>0]|0;if(f>>>0<(d[g>>0]|0)>>>0){f=f+1|0;e=e+1|0}else break}}if(!(n&(h|0)>0)){zb=q;return}e=0;do{if((d[o+17+e>>0]|0)>15){r=c[b>>2]|0;c[r+20>>2]=9;Sb[c[r>>2]&255](m)}e=e+1|0}while((e|0)!=(h|0));zb=q;return}function Mu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=z+44|0,(c[i>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[z+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;s=a+24|0;h=c[s>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;t=x+4|0;c[t>>2]=f;u=z+12|0;j=c[u>>2]|0;v=z+16|0;i=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];r=a+368|0;do if((c[r>>2]|0)>0){p=x+8|0;q=x+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[z+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(x,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[z+140+(o<<2)>>2]|0;k=c[z+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=48}else{f=1;m=48}else{if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=y+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(x,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;g=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(x,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;h=c[5184+(g<<2)>>2]|0;B=j>>i&h;b[l+(c[2064+(f<<2)>>2]<<1)>>1]=B-((B|0)>(c[5184+(g+-1<<2)>>2]|0)?0:h);g=f}f=g+1|0}while((f|0)<(k|0));if((g|0)<63)m=48}else{f=1;m=48}}while(0);c:do if((m|0)==48){h=f;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(x,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<64)}while(0);o=o+1|0;if((o|0)>=(c[r>>2]|0)){m=64;break}}if((m|0)==64){h=c[s>>2]|0;g=c[x>>2]|0;f=c[t>>2]|0;break}else if((m|0)==67){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=j;c[v>>2]=i;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}B=z+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=A;return B|0}function Nu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+48|0;z=C+20|0;A=C;B=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=B+44|0,(c[i>>2]|0)==0):0){x=B+16|0;y=c[a+464>>2]|0;w=y+24|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!(Gb[c[y+8>>2]&127](a)|0)){B=0;zb=C;return B|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[B+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[B+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[B+40>>2]=0}if(!(c[B+40>>2]|0)){r=c[a+432>>2]|0;s=c[a+436>>2]|0;c[z+16>>2]=a;u=a+24|0;h=c[u>>2]|0;g=c[h>>2]|0;c[z>>2]=g;f=c[h+4>>2]|0;v=z+4|0;c[v>>2]=f;w=B+12|0;j=c[w>>2]|0;x=B+16|0;i=c[x>>2]|0;y=B+20|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];t=a+368|0;do if((c[t>>2]|0)>0){p=z+8|0;q=z+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[B+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(z,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[B+140+(o<<2)>>2]|0;k=c[B+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=47}else{f=1;m=47}else{if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=A+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;while(1){if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(z,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;f=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(z,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;m=c[5184+(g<<2)>>2]|0;h=j>>i&m;b[l+(c[r+(f<<2)>>2]<<1)>>1]=h-((h|0)>(c[5184+(g+-1<<2)>>2]|0)?0:m)}f=f+1|0;if((f|0)>=(k|0)){m=47;break}}}else{f=1;m=47}}while(0);c:do if((m|0)==47)if((f|0)<=(s|0)){h=f;do{if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(z,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<=(s|0))}while(0);o=o+1|0;if((o|0)>=(c[t>>2]|0)){m=64;break}}if((m|0)==64){h=c[u>>2]|0;g=c[z>>2]|0;f=c[v>>2]|0;break}else if((m|0)==67){zb=C;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[w>>2]=j;c[x>>2]=i;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2]}B=B+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=C;return B|0}function Ou(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;l=m+440|0;a:do if(!(c[l>>2]|0)){if((e|0)<25){k=m+24|0;j=e;b:while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break}g=c[k>>2]|0;h=c[g+4>>2]|0;g=c[g>>2]|0}h=h+-1|0;i=g+1|0;e=a[g>>0]|0;g=e&255;c:do if(e<<24>>24==-1){g=i;while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break b}e=c[k>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;switch(e<<24>>24){case 0:{e=255;break c}case -1:break;default:{o=13;break b}}}}else{e=g;g=i}while(0);d=e|d<<8;e=j+8|0;if((j|0)<17)j=e;else break a}if((o|0)==13){c[l>>2]=e&255;e=j;i=h;o=15;break}else if((o|0)==20)return g|0}}else{i=h;o=15}while(0);if((o|0)==15)if((e|0)<(f|0)){h=m+468|0;if(!(c[(c[h>>2]|0)+40>>2]|0)){o=c[m>>2]|0;c[o+20>>2]=120;Ub[c[o+4>>2]&63](m,-1);c[(c[h>>2]|0)+40>>2]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function Pu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!(Ou(a,b,e,g)|0)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[5184+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!(Ou(a,b,e,1)|0)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;a=c[f>>2]|0;c[a+20>>2]=121;Ub[c[a+4>>2]&63](f,-1);f=0;return f|0}else{f=d[(c[f+72+(g<<2)>>2]|0)+h+((c[f+140>>2]|0)+17)>>0]|0;return f|0}return 0}function Qu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+468>>2]|0;p=b+224|0;q=b+412|0;f=c[q>>2]|0;e=(f|0)==0;do if(c[p>>2]|0){m=b+416|0;d=c[m>>2]|0;if(e)if(!d)n=7;else n=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+436>>2]|0):0)?(c[b+340>>2]|0)==1:0)n=7;else n=11;do if((n|0)==7){d=c[b+420>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+424>>2]|0)){n=11;break}}else d=c[b+424>>2]|0;if((d|0)>13)n=11}while(0);if((n|0)==11){l=c[b>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[b>>2]|0)+28>>2]=c[m>>2];c[(c[b>>2]|0)+32>>2]=c[b+420>>2];c[(c[b>>2]|0)+36>>2]=c[b+424>>2];Sb[c[c[b>>2]>>2]&255](b)}l=b+340|0;d=c[l>>2]|0;if((d|0)>0){j=b+160|0;g=b+420|0;k=b+424|0;i=0;do{f=c[(c[b+344+(i<<2)>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[q>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[(c[b>>2]|0)+28>>2]=0;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);d=c[q>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;r=c[e>>2]|0;if((c[g>>2]|0)!=(((r|0)>0?r:0)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=f;c[(c[b>>2]|0)+28>>2]=d;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}i=i+1|0;d=c[l>>2]|0}while((i|0)<(d|0))}else g=b+420|0;e=(c[q>>2]|0)==0;f=o+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=43;k=l;break}else{c[f>>2]=44;k=l;break}else if(e){c[f>>2]=45;k=l;break}else{c[f>>2]=46;k=l;break}}else{if((e?(c[b+420>>2]|0)==0:0)?(c[b+424>>2]|0)==0:0){r=c[b+416>>2]|0;if((r|0)<64?(r|0)!=(c[b+436>>2]|0):0)n=36}else n=36;if((n|0)==36){r=c[b>>2]|0;c[r+20>>2]=125;Ub[c[r+4>>2]&63](b,-1)}c[o+4>>2]=47;d=b+340|0;k=d;d=c[d>>2]|0}while(0);if((d|0)<=0){q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}h=b+436|0;i=b+420|0;j=b+4|0;g=0;do{f=c[b+344+(g<<2)>>2]|0;if(c[p>>2]|0)if(!(c[q>>2]|0)){if(!(c[i>>2]|0))n=43}else n=50;else n=43;do if((n|0)==43){n=0;d=c[f+20>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+60+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,64)|0;c[e>>2]=d}e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[o+24+(g<<2)>>2]=0;c[o+40+(g<<2)>>2]=0;if(!(c[p>>2]|0))if(!(c[h>>2]|0))break;else{n=50;break}else if(!(c[q>>2]|0))break;else{n=50;break}}while(0);if((n|0)==50){n=0;d=c[f+24>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+124+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,256)|0;c[e>>2]=d}aP(d|0,0,256)|0}g=g+1|0}while((g|0)<(c[k>>2]|0));q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}function Ru(a){a=a|0;return}function Su(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){r=c[e>>2]|0;c[r+20>>2]=25;Sb[c[r>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{t=13;break}else if(!(c[j>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}o=s+20|0;if((c[o>>2]|0)==-1)return 1;p=e+368|0;if((c[p>>2]|0)<=0)return 1;q=e+424|0;n=0;a:while(1){r=c[f+(n<<2)>>2]|0;l=c[e+372+(n<<2)>>2]|0;j=c[(c[e+344+(l<<2)>>2]|0)+20>>2]|0;h=s+60+(j<<2)|0;k=s+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[s+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768)break a;h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=s+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[r>>1]=g<>2];n=n+1|0;if((n|0)>=(c[p>>2]|0)){t=37;break}}if((t|0)==37)return 1;t=c[e>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](e,-1);c[o>>2]=-1;return 1}function Tu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){t=c[e>>2]|0;c[t+20>>2]=25;Sb[c[t>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}t=s+20|0;if((c[t>>2]|0)==-1)return 1;r=c[e+432>>2]|0;p=c[f>>2]|0;o=c[(c[e+344>>2]|0)+24>>2]|0;q=s+124+(o<<2)|0;l=s+188|0;m=e+416|0;n=e+424|0;o=e+264+o|0;h=(c[e+412>>2]|0)+-1|0;a:while(1){g=(c[q>>2]|0)+(h*3|0)|0;if(Xu(e,g)|0){r=36;break}j=h+1|0;if(!(Xu(e,g+1|0)|0)){i=g;h=j;while(1){if((h|0)>=(c[m>>2]|0)){r=23;break a}g=i+3|0;j=h+1|0;if(!(Xu(e,i+4|0)|0)){i=g;h=j}else break}}k=Xu(e,l)|0;i=g+2|0;g=Xu(e,i)|0;if(g){if(Xu(e,i)|0){g=g<<1;h=(c[q>>2]|0)+((h|0)<(d[o>>0]|0|0)?189:217)|0;if(Xu(e,h)|0)do{g=g<<1;if((g|0)==32768){r=30;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{s=(Xu(e,i)|0)==0;g=(s?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(j<<2)>>2]<<1)>>1]=((k|0)==0?g+1|0:~g)<>2];if((j|0)<(c[m>>2]|0))h=j;else{r=36;break}}if((r|0)==23){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==30){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==36)return 1;return 0}function Uu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[d+468>>2]|0;p=d+280|0;if(c[p>>2]|0){s=r+56|0;g=c[s>>2]|0;if(!g){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){o=c[d>>2]|0;c[o+20>>2]=25;Sb[c[o>>2]&255](d)}h=d+340|0;if((c[h>>2]|0)>0){i=d+224|0;j=d+412|0;k=d+436|0;l=d+420|0;g=0;do{m=c[d+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))q=10}else q=13;else q=10;do if((q|0)==10){q=0;n=c[r+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[r+24+(g<<2)>>2]=0;c[r+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{q=13;break}else if(!(c[j>>2]|0))break;else{q=13;break}}while(0);if((q|0)==13){q=0;aP(c[r+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=-16;g=c[p>>2]|0;c[s>>2]=g}c[s>>2]=g+-1}h=r+188|0;i=1<>2];j=d+368|0;if((c[j>>2]|0)<=0)return 1;g=0;do{if(Xu(d,h)|0){s=c[f+(g<<2)>>2]|0;b[s>>1]=i|(e[s>>1]|0)}g=g+1|0}while((g|0)<(c[j>>2]|0));return 1}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[d+468>>2]|0;o=d+280|0;if(c[o>>2]|0){p=q+56|0;f=c[p>>2]|0;if(!f){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){s=c[d>>2]|0;c[s+20>>2]=25;Sb[c[s>>2]&255](d)}g=d+340|0;if((c[g>>2]|0)>0){h=d+224|0;i=d+412|0;j=d+436|0;k=d+420|0;f=0;do{l=c[d+344+(f<<2)>>2]|0;if(c[h>>2]|0)if(!(c[i>>2]|0)){if(!(c[k>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;m=c[q+60+(c[l+20>>2]<<2)>>2]|0;n=m+64|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[q+24+(f<<2)>>2]=0;c[q+40+(f<<2)>>2]=0;if(!(c[h>>2]|0))if(!(c[j>>2]|0))break;else{t=13;break}else if(!(c[i>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[q+124+(c[l+24>>2]<<2)>>2]|0,0,256)|0}f=f+1|0}while((f|0)<(c[g>>2]|0))}c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=-16;f=c[o>>2]|0;c[p>>2]=f}c[p>>2]=f+-1}r=q+20|0;if((c[r>>2]|0)==-1)return 1;s=c[d+432>>2]|0;n=c[e>>2]|0;g=c[(c[d+344>>2]|0)+24>>2]|0;p=c[d+424>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(f<<2)>>2]<<1)>>1]|0)break;f=f+-1|0;if(!f){f=0;break}}m=q+124+(g<<2)|0;j=q+188|0;k=o&65535;l=p&65535;g=(c[d+412>>2]|0)+-1|0;a:while(1){h=(c[m>>2]|0)+(g*3|0)|0;if((g|0)>=(f|0)?Xu(d,h)|0:0){t=38;break}g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;b:do if(!(b[i>>1]|0)){while(1){if(Xu(d,h+1|0)|0)break;if((g|0)>=(c[e>>2]|0)){t=35;break a}h=h+3|0;g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;if(b[i>>1]|0){t=26;break b}}if(!(Xu(d,j)|0)){b[i>>1]=k;break}else{b[i>>1]=l;break}}else t=26;while(0);do if((t|0)==26){t=0;if(Xu(d,h+2|0)|0){q=b[i>>1]|0;h=q<<16>>16;if(q<<16>>16<0){b[i>>1]=p+h;break}else{b[i>>1]=o+h;break}}}while(0);if((g|0)>=(c[e>>2]|0)){t=38;break}}if((t|0)==35){t=c[d>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](d,-1);c[r>>2]=-1;return 1}else if((t|0)==38)return 1;return 0} +function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;Jg(a+32|0,b);d=Ah(b)|0;d=Ng(c[d>>2]|0)|0;f=Ah(b)|0;f=Og(c[f>>2]|0)|0;e=Pg(b)|0;uj(a+92|0,d,f,e,Qg(b)|0,36,3.0,1.5,5,.800000011920929);e=Ah(b)|0;e=Ng(c[e>>2]|0)|0;c[a>>2]=e;e=Ah(b)|0;e=Og(c[e>>2]|0)|0;c[a+4>>2]=e;e=a+16|0;Bh(e,c[a+8>>2]|0);f=a+20|0;a=a+12|0;b=0;while(1){d=c[e>>2]|0;if(b>>>0>=(((c[f>>2]|0)-d|0)/12|0)>>>0)break;Ch(d+(b*12|0)|0,c[a>>2]|0);b=b+1|0}return}function Ah(a){a=a|0;return a+4|0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;kh(f);d=f}c[g>>2]=a}}else Kh(a,b-e|0);return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;lh(f);d=f}c[g>>2]=a}}else Dh(a,b-e|0);return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Fh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Gh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Hh(f,b);Ih(a,f);Jh(f);break}}else Eh(a,b);while(0);zb=i;return}function Eh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Fh(a){a=a|0;return 357913941}function Gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Hh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Jh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;lh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Mh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Nh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Oh(f,b);Ph(a,f);Qh(f);break}}else Lh(a,b);while(0);zb=i;return}function Lh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Qh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;kh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=zb;zb=zb+32|0;d=e;if((Pg(b)|0)<=0){f=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,147)|0,35007)|0,22967)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);g=XF(d,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(d);QE(f,g)|0;ME(f)|0;ua()}Bq(d,23866);if(Sh(d)|0)Zg(a+32|0,b);Cq(d);Bq(d,23878);if(Sh(d)|0)Th(a,b,a+32|0);Cq(d);Bq(d,23898);if(Sh(d)|0)Uh(a,b);Cq(d);Bq(d,23907);if(Sh(d)|0)Vh(a);Cq(d);Bq(d,23921);if(Sh(d)|0)Wh(a,b);Cq(d);zb=e;return}function Sh(a){a=a|0;return 1}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0.0;ha=zb;zb=zb+48|0;aa=ha;ca=a+60|0;da=a+64|0;c[da>>2]=c[ca>>2];fa=+ji(+f[a+52>>2]);V=a+32|0;W=aa+12|0;Y=aa+16|0;Z=aa+24|0;_=aa+28|0;$=aa+4|0;F=a+68|0;G=aa+12|0;H=aa+16|0;I=aa+24|0;J=aa+28|0;K=aa+4|0;L=aa+12|0;M=aa+16|0;N=aa+24|0;O=aa+28|0;P=aa+4|0;a=1;a:while(1){if(a>>>0>=((Ki(V)|0)+-1|0)>>>0){ga=3;break}Q=Li(d,a+-1|0)|0;R=Li(d,a)|0;S=a+1|0;T=Li(d,S)|0;U=Mi(d,a)|0;E=Ni(d,a)|0;D=Ng(Q)|0;b:do if((D|0)==(Ng(R)|0)?(D=Ng(Q)|0,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=7;break a}D=Og(Q)|0;if((D|0)!=(Og(T)|0)){ga=9;break a}k=(Ng(R)|0)+-1|0;l=(Og(R)|0)+-1|0;m=+(E|0);a=1;while(1){if(a>>>0>=l>>>0)break b;v=a+-1|0;n=ch(Q,v)|0;o=ch(Q,a)|0;p=a+1|0;q=ch(Q,p)|0;r=ch(R,v)|0;t=ch(R,a)|0;u=ch(R,p)|0;v=ch(T,v)|0;w=ch(T,a)|0;x=ch(T,p)|0;j=+(a>>>0);i=1;while(1){if(i>>>0>=k>>>0)break;a=t+(i<<2)|0;do if(!(+ji(+f[a>>2])>2];h=i+-1|0;e=+f[n+(h<<2)>>2];do if(((((g>e?g>+f[n+(i<<2)>>2]:0)?(X=i+1|0,g>+f[n+(X<<2)>>2]):0)?g>+f[o+(h<<2)>>2]:0)?g>+f[o+(i<<2)>>2]:0)?g>+f[o+(X<<2)>>2]:0){if(!(g>+f[q+(h<<2)>>2])){ga=42;break}if(!(g>+f[q+(i<<2)>>2])){ga=42;break}if(!(g>+f[q+(X<<2)>>2])){ga=42;break}if(!(g>+f[r+(h<<2)>>2])){ga=42;break}if(!(g>+f[r+(i<<2)>>2])){ga=42;break}if(!(g>+f[r+(X<<2)>>2])){ga=42;break}if(!(g>+f[t+(h<<2)>>2])){ga=42;break}if(!(g>+f[t+(X<<2)>>2])){ga=42;break}if(!(g>+f[u+(h<<2)>>2])){ga=42;break}if(!(g>+f[u+(i<<2)>>2])){ga=42;break}if(!(g>+f[u+(X<<2)>>2])){ga=42;break}if(!(g>+f[v+(h<<2)>>2])){ga=42;break}if(!(g>+f[v+(i<<2)>>2])){ga=42;break}if(!(g>+f[v+(X<<2)>>2])){ga=42;break}if(!(g>+f[w+(h<<2)>>2])){ga=42;break}if(!(g>+f[w+(i<<2)>>2])){ga=42;break}if(!(g>+f[w+(X<<2)>>2])){ga=42;break}if(!(g>+f[x+(h<<2)>>2])){ga=42;break}if(!(g>+f[x+(i<<2)>>2])){ga=42;break}if(!(g>+f[x+(X<<2)>>2]))ga=42}else ga=42;while(0);if((ga|0)==42){ga=0;if(!(g>2]))break;a=i+1|0;if(!(g<+f[n+(a<<2)>>2]))break;if(!(g<+f[o+(h<<2)>>2]))break;if(!(g<+f[o+(i<<2)>>2]))break;if(!(g<+f[o+(a<<2)>>2]))break;if(!(g<+f[q+(h<<2)>>2]))break;if(!(g<+f[q+(i<<2)>>2]))break;if(!(g<+f[q+(a<<2)>>2]))break;if(!(g<+f[r+(h<<2)>>2]))break;if(!(g<+f[r+(i<<2)>>2]))break;if(!(g<+f[r+(a<<2)>>2]))break;if(!(g<+f[t+(h<<2)>>2]))break;if(!(g<+f[t+(a<<2)>>2]))break;if(!(g<+f[u+(h<<2)>>2]))break;if(!(g<+f[u+(i<<2)>>2]))break;if(!(g<+f[u+(a<<2)>>2]))break;if(!(g<+f[v+(h<<2)>>2]))break;if(!(g<+f[v+(i<<2)>>2]))break;if(!(g<+f[v+(a<<2)>>2]))break;if(!(g<+f[w+(h<<2)>>2]))break;if(!(g<+f[w+(i<<2)>>2]))break;if(!(g<+f[w+(a<<2)>>2]))break;if(!(g<+f[x+(h<<2)>>2]))break;if(!(g<+f[x+(i<<2)>>2]))break;if(!(g<+f[x+(a<<2)>>2]))break}c[W>>2]=U;c[Y>>2]=E;f[Z>>2]=g;C=+si(b,U,m);f[_>>2]=C;ri(aa,$,+(i>>>0),j,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);i=i+1|0}a=p}}else ga=72;while(0);c:do if((ga|0)==72){ga=0;D=Ng(Q)|0;if((D|0)==(Ng(R)|0)?(D=(Ng(R)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=75;break a}D=(Og(R)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=77;break a}l=~~+s(+((+(((Ng(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;n=~~+s(+((+(((Og(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;C=+(E|0);a=2;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(Q,t)|0;p=ch(Q,a)|0;q=a+1|0;r=ch(Q,q)|0;t=ch(R,t)|0;u=ch(R,a)|0;v=ch(R,q)|0;y=+(a>>>0);z=y*.5+-.25;A=z+-.5;B=z+.5;k=2;while(1){if(k>>>0>=l>>>0)break;i=u+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0);m=j*.5+-.25;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ba=k+1|0,e>+f[o+(ba<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(k<<2)>>2])){ga=110;break}if(!(e>+f[p+(ba<<2)>>2])){ga=110;break}if(!(e>+f[r+(h<<2)>>2])){ga=110;break}if(!(e>+f[r+(k<<2)>>2])){ga=110;break}if(!(e>+f[r+(ba<<2)>>2])){ga=110;break}if(!(e>+f[t+(h<<2)>>2])){ga=110;break}if(!(e>+f[t+(k<<2)>>2])){ga=110;break}if(!(e>+f[t+(ba<<2)>>2])){ga=110;break}if(!(e>+f[u+(h<<2)>>2])){ga=110;break}if(!(e>+f[u+(ba<<2)>>2])){ga=110;break}if(!(e>+f[v+(h<<2)>>2])){ga=110;break}if(!(e>+f[v+(k<<2)>>2])){ga=110;break}if(!(e>+f[v+(ba<<2)>>2])){ga=110;break}g=m+-.5;if(!(e>+Ci(T,g,A))){ga=110;break}e=+f[i>>2];if(!(e>+Ci(T,m,A))){ga=110;break}ia=+f[i>>2];e=m+.5;if(!(ia>+Ci(T,e,A))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,B)))ga=110}else ga=110;while(0);if((ga|0)==110){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(k<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=m+-.5;if(!(e<+Ci(T,g,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,A)))break;ia=+f[i>>2];e=m+.5;if(!(ia<+Ci(T,e,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,B)))break}c[G>>2]=U;c[H>>2]=E;c[I>>2]=c[i>>2];ia=+si(b,U,C);f[J>>2]=ia;ri(aa,K,j,y,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}D=(Ng(Q)|0)>>>1;if((D|0)==(Ng(R)|0)?(D=(Ng(Q)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=(Og(Q)|0)>>>1;if((D|0)!=(Og(R)|0)){ga=144;break a}D=(Og(Q)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=146;break a}l=(Ng(R)|0)+-1|0;n=(Og(R)|0)+-1|0;A=+(E|0);a=1;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(R,t)|0;p=ch(R,a)|0;q=a+1|0;r=ch(R,q)|0;t=ch(T,t)|0;u=ch(T,a)|0;v=ch(T,q)|0;B=+(a<<1>>>0)+.5;m=+(a>>>0);y=B+-2.0;z=B+2.0;k=1;while(1){if(k>>>0>=l>>>0)break;i=p+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0)+.5;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ea=k+1|0,e>+f[o+(ea<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(ea<<2)>>2])){ga=179;break}if(!(e>+f[r+(h<<2)>>2])){ga=179;break}if(!(e>+f[r+(k<<2)>>2])){ga=179;break}if(!(e>+f[r+(ea<<2)>>2])){ga=179;break}if(!(e>+f[t+(h<<2)>>2])){ga=179;break}if(!(e>+f[t+(k<<2)>>2])){ga=179;break}if(!(e>+f[t+(ea<<2)>>2])){ga=179;break}if(!(e>+f[u+(h<<2)>>2])){ga=179;break}if(!(e>+f[u+(k<<2)>>2])){ga=179;break}if(!(e>+f[u+(ea<<2)>>2])){ga=179;break}if(!(e>+f[v+(h<<2)>>2])){ga=179;break}if(!(e>+f[v+(k<<2)>>2])){ga=179;break}if(!(e>+f[v+(ea<<2)>>2])){ga=179;break}g=j+-2.0;if(!(e>+Ci(Q,g,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,y))){ga=179;break}ia=+f[i>>2];e=j+2.0;if(!(ia>+Ci(Q,e,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,z)))ga=179}else ga=179;while(0);if((ga|0)==179){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(k<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=j+-2.0;if(!(e<+Ci(Q,g,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,y)))break;ia=+f[i>>2];e=j+2.0;if(!(ia<+Ci(Q,e,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,z)))break}c[L>>2]=U;c[M>>2]=E;c[N>>2]=c[i>>2];ia=+si(b,U,A);f[O>>2]=ia;ri(aa,P,+(k>>>0),m,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}}while(0);a=S}if((ga|0)==3){zb=ha;return}else if((ga|0)==7){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,192)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==9){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26726)|0,22676)|0,35e3)|0,193)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==75){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,277)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==77){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26778)|0,22676)|0,35e3)|0,278)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==144){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26835)|0,22676)|0,35e3)|0,362)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==146){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26892)|0,22676)|0,35e3)|0,363)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0;J=zb;zb=zb+80|0;I=J+68|0;A=J;C=J+56|0;D=J+44|0;E=J+40|0;F=J+36|0;s=+ji(+f[a+52>>2]);H=a+56|0;w=+ji(+f[H>>2]+1.0);w=w/+f[H>>2];H=a+60|0;x=a+64|0;y=a+32|0;z=D+4|0;o=a+88|0;p=C+4|0;q=C+8|0;r=D+8|0;m=0;n=0;while(1){l=c[H>>2]|0;i=l;if(n>>>0>=(((c[x>>2]|0)-l|0)/36|0)>>>0){a=3;break}d=i+(n*36|0)|0;a=i+(n*36|0)+16|0;l=c[a>>2]|0;if((l|0)>=(li(y)|0)){a=5;break}j=i+(n*36|0)+12|0;l=c[j>>2]|0;l=B(li(y)|0,l)|0;l=l+(c[a>>2]|0)|0;k=i+(n*36|0)+4|0;mi(E,F,+f[d>>2],+f[k>>2],c[j>>2]|0);e=~~(+f[E>>2]+.5);g=~~(+f[F>>2]+.5);L=ni(y)|0;L=(c[L>>2]|0)+(l+-1<<5)|0;h=ni(y)|0;h=(c[h>>2]|0)+(l<<5)|0;K=ni(y)|0;if(((oi(A,C,L,h,(c[K>>2]|0)+(l+1<<5)|0,e,g)|0?pi(D,A,C)|0:0)?(M=+ji(+f[D>>2]),M=M+ +ji(+f[z>>2]),!(M>+f[o>>2])):0)?(G=i+(n*36|0)+32|0,qi(G,A)|0):0){l=i+(n*36|0)+24|0;M=+f[l>>2];L=(ch(h,g)|0)+(e<<2)|0;if(!(M==+f[L>>2])){a=11;break}L=(ch(h,g)|0)+(e<<2)|0;N=+f[D>>2];M=+f[z>>2];f[l>>2]=+f[L>>2]-(+f[C>>2]*N+ +f[p>>2]*M+ +f[q>>2]*+f[r>>2]);ri(d,k,N+ +f[E>>2],M+ +f[F>>2],c[j>>2]|0);M=+f[r>>2]+ +(c[a>>2]|0);a=i+(n*36|0)+20|0;f[a>>2]=M;M=+Zh(M,0.0,+(li(y)|0));f[a>>2]=M;if(((((+t(+(+f[G>>2]))>2])>=s:0)?(u=+f[d>>2],u>=0.0):0)?(L=ni(y)|0,u<+((Ng(c[L>>2]|0)|0)>>>0)):0)?(v=+f[k>>2],v>=0.0):0)?(L=ni(y)|0,v<+((Og(c[L>>2]|0)|0)>>>0)):0){N=+si(b,c[j>>2]|0,+f[a>>2]);f[i+(n*36|0)+28>>2]=N;a=m+1|0;g=(c[H>>2]|0)+(m*36|0)|0;e=g+36|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}else a=m}else a=m;m=a;n=n+1|0}if((a|0)==3){ki(H,m);zb=J;return}else if((a|0)==5){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24248)|0,22676)|0,35e3)|0,489)|0,35007)|0,24320)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}else if((a|0)==11){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24357)|0,22676)|0,35e3)|0,526)|0,35007)|0,24414)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+16|0;d=l+12|0;h=l;i=a+60|0;j=a+64|0;k=a+84|0;e=c[k>>2]|0;do if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>e>>>0){f=a+16|0;b=c[f>>2]|0;g=((c[a+20>>2]|0)-b|0)/12|0;if((g|0)!=(c[a+8>>2]|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,23939)|0,22676)|0,35e3)|0,454)|0,35007)|0,23994)|0;IE(d,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(d,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(d);QE(m,n)|0;ME(m)|0;ua()}b=((c[b+4>>2]|0)-(c[b>>2]|0)|0)/12|0;if((b|0)!=(c[a+12>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24020)|0,22676)|0,35e3)|0,455)|0,35007)|0,23994)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;ai(f,h,i,g,b,c[a>>2]|0,c[a+4>>2]|0,e);Xh(i,h);if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>(c[k>>2]|0)>>>0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24078)|0,22676)|0,35e3)|0,469)|0,35007)|0,24147)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}else{hh(h);break}}while(0);zb=l;return}function Wh(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=zb;zb=zb+64|0;l=w+48|0;s=w+44|0;t=w+40|0;u=w+36|0;v=w;a:do if(!(a[b+28>>0]|0)){g=c[b+60>>2]|0;e=((c[b+64>>2]|0)-g|0)/36|0;b=0;while(1){if((b|0)==(e|0))break a;f[g+(b*36|0)+8>>2]=0.0;b=b+1|0}}else{k=b+72|0;m=b+76|0;c[m>>2]=c[k>>2];n=b+60|0;o=b+64|0;uh(k,(c[o>>2]|0)-(c[n>>2]|0)|0);p=b+92|0;vj(p,d);q=b+144|0;r=v+8|0;j=b+80|0;i=0;while(1){h=c[n>>2]|0;b=h;if(i>>>0>=(((c[o>>2]|0)-h|0)/36|0)>>>0)break;Yh(s,t,u,+f[b+(i*36|0)>>2],+f[b+(i*36|0)+4>>2],+f[b+(i*36|0)+28>>2],c[b+(i*36|0)+12>>2]|0);x=+f[s>>2];x=+Zh(x,0.0,+(((Ng(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[s>>2]=x;x=+f[t>>2];x=+Zh(x,0.0,+(((Og(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[t>>2]=x;h=c[n>>2]|0;yj(p,c[q>>2]|0,l,c[h+(i*36|0)+12>>2]|0,c[h+(i*36|0)+16>>2]|0,+f[s>>2],x,+f[u>>2]);h=0;while(1){if((h|0)>=(c[l>>2]|0))break;b=v;e=(c[n>>2]|0)+(i*36|0)|0;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[r>>2]=c[(c[q>>2]|0)+(h<<2)>>2];b=c[m>>2]|0;if((b|0)==(c[j>>2]|0))_h(k,v);else{e=v;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[m>>2]=(c[m>>2]|0)+36}h=h+1|0}i=i+1|0}Xh(n,k)}while(0);zb=w;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Yh(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=+d;e=+e;g=+g;h=h|0;var i=0.0,j=0.0;i=1.0/+(1<>2]=i*d+j;f[b>>2]=i*e+j;f[c>>2]=i*g;return}function Zh(a,b,c){a=+a;b=+b;c=+c;if(!(ac)a=c}else a=b;return +a}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+32|0;i=j;d=a+4|0;e=(((c[d>>2]|0)-(c[a>>2]|0)|0)/36|0)+1|0;f=$h(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;k=((c[a+8>>2]|0)-g|0)/36|0;h=k<<1;vh(i,k>>>0>>1>>>0?(h>>>0>>0?e:h):f,((c[d>>2]|0)-g|0)/36|0,a+8|0);f=i+8|0;g=c[f>>2]|0;h=g;d=b;e=h+36|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));c[f>>2]=g+36;wh(a,i);xh(i);zb=j;return}}function $h(a){a=a|0;return 119304647}function ai(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0.0;D=zb;zb=zb+48|0;C=D+8|0;v=D+32|0;u=D+28|0;y=D+24|0;z=D+20|0;w=D+16|0;x=D;o=B(g,e)|0;n=+A(+(+(h|0)/+(e|0)));m=+A(+(+(i|0)/+(g|0)));r=b+4|0;c[r>>2]=c[b>>2];uh(b,j);s=a+4|0;g=c[a>>2]|0;i=((c[s>>2]|0)-g|0)/12|0;e=0;while(1){if((e|0)==(i|0))break;l=c[g+(e*12|0)>>2]|0;k=((c[g+(e*12|0)+4>>2]|0)-l|0)/12|0;h=0;while(1){if((h|0)==(k|0))break;c[l+(h*12|0)+4>>2]=c[l+(h*12|0)>>2];h=h+1|0}e=e+1|0}q=(j|0)/(o|0)|0;o=d+4|0;n=+(~~n|0);m=+(~~m|0);g=C+4|0;l=0;while(1){p=c[d>>2]|0;e=p;if(l>>>0>=(((c[o>>2]|0)-p|0)/36|0)>>>0)break;i=~~(+f[e+(l*36|0)+4>>2]/m);k=c[(c[a>>2]|0)+(~~(+f[e+(l*36|0)>>2]/n)*12|0)>>2]|0;E=+t(+(+f[e+(l*36|0)+24>>2]));f[C>>2]=E;c[g>>2]=l;e=k+(i*12|0)+4|0;h=c[e>>2]|0;if(h>>>0<(c[k+(i*12|0)+8>>2]|0)>>>0){k=C;j=c[k+4>>2]|0;p=h;c[p>>2]=c[k>>2];c[p+4>>2]=j;c[e>>2]=(c[e>>2]|0)+8}else bi(k+(i*12|0)|0,C);l=l+1|0}p=b+8|0;e=c[a>>2]|0;g=e;j=0;h=g;a:while(1){if(j>>>0>=(((c[s>>2]|0)-e|0)/12|0)>>>0){e=16;break}o=0;i=g;while(1){l=c[i+(j*12|0)>>2]|0;e=l;if(o>>>0>=(((c[i+(j*12|0)+4>>2]|0)-l|0)/12|0)>>>0)break;l=e+(o*12|0)|0;e=e+(o*12|0)+4|0;g=c[e>>2]|0;i=c[l>>2]|0;k=g-i>>3;k=q>>>0>>0?q:k;if(!k)e=h;else{c[y>>2]=i;c[z>>2]=i+(k<<3);c[w>>2]=g;c[u>>2]=c[y>>2];c[v>>2]=c[z>>2];c[C>>2]=c[w>>2];ci(u,v,C,x);g=c[l>>2]|0;i=g;if(k>>>0>(c[e>>2]|0)-g>>3>>>0?!(+f[i>>2]>=+f[i+(k<<3)>>2]):0){e=23;break a}i=0;while(1){if(i>>>0>=k>>>0)break;h=(c[d>>2]|0)+((c[(c[l>>2]|0)+(i<<3)+4>>2]|0)*36|0)|0;e=c[r>>2]|0;if((e|0)==(c[p>>2]|0))_h(b,h);else{g=e+36|0;do{c[e>>2]=c[h>>2];e=e+4|0;h=h+4|0}while((e|0)<(g|0));c[r>>2]=(c[r>>2]|0)+36}i=i+1|0}e=c[a>>2]|0}o=o+1|0;h=e;i=e}j=j+1|0;g=i;e=i}if((e|0)==16){zb=D;return}else if((e|0)==23){D=Xf(Xf(PE(Xf(Xf(Xf(56032,24171)|0,22676)|0,35e3)|0,661)|0,35007)|0,24229)|0;IE(C,D+(c[(c[D>>2]|0)+-12>>2]|0)|0);z=XF(C,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(C);QE(D,z)|0;ME(D)|0;ua()}}function bi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=fi(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;gi(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;hi(a,d);ii(d);zb=h;return}}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=zb;zb=zb+48|0;y=K+40|0;x=K+36|0;w=K+32|0;C=K+28|0;D=K+24|0;E=K+20|0;G=K+16|0;H=K+12|0;I=K+8|0;z=K+4|0;A=K;v=c[b>>2]|0;a:while(1){u=c[d>>2]|0;n=u;t=u+-8|0;q=t;s=u+-4|0;if((v|0)==(u|0))break;r=c[a>>2]|0;k=r;b:while(1){b=n-k|0;g=b>>3;switch(g|0){case 1:case 0:break a;case 2:{J=5;break a}case 3:{J=10;break a}default:{}}if((b|0)<64){J=12;break a}g=g>>>1;p=r+(g<<3)|0;c[I>>2]=k;c[z>>2]=p;c[A>>2]=q;c[w>>2]=c[I>>2];c[x>>2]=c[z>>2];c[y>>2]=c[A>>2];b=di(w,x,y,e)|0;l=k;j=+f[p>>2];i=+f[l>>2];if(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0:0){J=53;break}g=t;while(1){m=g+-8|0;if((m|0)==(l|0))break;i=+f[m>>2];if(j>2]|0,(c[h>>2]|0)>>>0>>0):0){J=51;break b}g=m}h=l+8|0;b=h;o=+f[t>>2];j=+f[r>>2];do if(!(o>2]|0)>>>0<(c[g>>2]|0)>>>0)break}else g=r+4|0;while(1){if((h|0)==(t|0))break a;i=+f[h>>2];if(i>2]|0,F>>>0<(c[g>>2]|0)>>>0):0){J=28;break}h=h+8|0}if((J|0)==25){J=0;g=h+4|0;b=g;g=c[g>>2]|0}else if((J|0)==28){J=0;b=h+4|0;g=F}f[h>>2]=o;f[t>>2]=i;c[b>>2]=c[s>>2];c[s>>2]=g;b=h+8|0}while(0);if((t|0)==(b|0))break a;l=r+4|0;g=q;while(1){j=+f[r>>2];k=b;while(1){b=k;i=+f[b>>2];if(i>2]|0)>>>0<(c[l>>2]|0)>>>0:0)break;k=b+8|0}h=k;while(1){b=g+-8|0;i=+f[b>>2];if(!(i>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}g=b}if(b>>>0<=h>>>0)break;m=c[k>>2]|0;f[k>>2]=i;c[b>>2]=m;m=h+4|0;g=g+-4|0;p=c[m>>2]|0;c[m>>2]=c[g>>2];c[g>>2]=p;g=b;b=h+8|0}b=k;if(v>>>0>>0)break a;c[a>>2]=k;r=b}if((J|0)==47){h=g+-4|0;g=h;h=c[h>>2]|0;J=52}else if((J|0)==51){g=g+-4|0;h=B;J=52}else if((J|0)==53){J=0;h=t;s=k}if((J|0)==52){J=0;s=k;r=c[k>>2]|0;f[k>>2]=i;c[m>>2]=r;r=s+4|0;t=c[r>>2]|0;c[r>>2]=h;c[g>>2]=t;b=b+1|0;h=m}g=s+8|0;k=g;if(g>>>0>>0){q=p;g=k;while(1){p=q;n=p+4|0;j=+f[p>>2];while(1){k=g;i=+f[k>>2];if(!(j>2]|0)>>>0>=(c[k+4>>2]|0)>>>0)break}g=k+8|0}m=g;while(1){l=h+-8|0;i=+f[l>>2];if(j>2]|0)>>>0<(c[h+-4>>2]|0)>>>0:0)break;h=l}k=l;if(l>>>0<=m>>>0)break;t=c[g>>2]|0;f[g>>2]=i;c[l>>2]=t;t=m+4|0;h=h+-4|0;g=c[t>>2]|0;c[t>>2]=c[h>>2];c[h>>2]=g;b=b+1|0;h=k;q=(p|0)==(m|0)?k:q;g=m+8|0}r=g;p=q;k=g}else r=g;n=k;do if((p|0)!=(r|0)){i=+f[r>>2];j=+f[p>>2];if(!(i>2]|0;g=p+4|0;m=c[g>>2]|0;if(h>>>0>=m>>>0)break}else{h=r+4|0;m=p+4|0;g=m;l=h;m=c[m>>2]|0;h=c[h>>2]|0}t=c[k>>2]|0;f[k>>2]=j;c[p>>2]=t;c[l>>2]=m;c[g>>2]=h;b=b+1|0}while(0);if((v|0)==(r|0))break;c:do if(!b)if(v>>>0>>0){b=s;while(1){g=b+8|0;if((g|0)==(r|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}else{b=n;while(1){g=b+8|0;if((g|0)==(u|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}while(0);if(v>>>0>>0)c[d>>2]=k;else c[a>>2]=r+8}do if((J|0)==5){c[d>>2]=t;i=+f[r>>2];j=+f[t>>2];if(!(i>2]|0;h=c[s>>2]|0;if(g>>>0>=h>>>0)break}else{g=r+4|0;b=g;h=c[s>>2]|0;g=c[g>>2]|0}f[r>>2]=j;f[t>>2]=i;c[b>>2]=h;c[s>>2]=g}else if((J|0)==10){c[C>>2]=k;c[D>>2]=k+8;c[d>>2]=t;c[E>>2]=t;c[w>>2]=c[C>>2];c[x>>2]=c[D>>2];c[y>>2]=c[E>>2];di(w,x,y,e)|0}else if((J|0)==12){c[G>>2]=k;c[H>>2]=u;c[x>>2]=c[G>>2];c[y>>2]=c[H>>2];ei(x,y,e)}while(0);zb=K;return}function di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0.0,h=0.0,i=0,j=0.0,k=0,l=0;l=c[b>>2]|0;k=c[a>>2]|0;j=+f[k>>2];h=+f[l>>2];if(!(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0;else e=1;i=c[d>>2]|0;g=+f[i>>2];if(!(h>2]|0)>>>0<(c[i+4>>2]|0)>>>0;else b=1;do if(!e)if(b){f[l>>2]=g;f[i>>2]=h;d=l+4|0;i=i+4|0;a=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=a;g=+f[k>>2];h=+f[l>>2];if(!(g>2]|0;a=c[d>>2]|0;if(e>>>0>=a>>>0){b=1;break}}else{e=k+4|0;b=e;a=c[d>>2]|0;e=c[e>>2]|0}f[k>>2]=h;f[l>>2]=g;c[b>>2]=a;c[d>>2]=e;b=2}else b=0;else{if(b){f[k>>2]=g;f[i>>2]=j;k=k+4|0;b=i+4|0;l=c[k>>2]|0;c[k>>2]=c[b>>2];c[b>>2]=l;b=1;break}f[k>>2]=h;f[l>>2]=j;k=k+4|0;a=l+4|0;d=c[k>>2]|0;c[k>>2]=c[a>>2];c[a>>2]=d;g=+f[i>>2];if(!(j>2]|0;if(d>>>0>=e>>>0){b=1;break}}else{e=i+4|0;b=e;e=c[e>>2]|0}f[l>>2]=g;f[i>>2]=j;c[a>>2]=e;c[b>>2]=d;b=2}while(0);return b|0}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0,k=0,l=0;j=c[b>>2]|0;k=j+-8|0;l=c[a>>2]|0;while(1){if((l|0)==(k|0))break;a:do if((l|0)==(j|0))b=j;else{b=l;while(1){h=b+4|0;d=b;while(1){i=d+8|0;if((i|0)==(j|0))break a;e=+f[b>>2];g=+f[i>>2];if(e>2]|0)>>>0<(c[d+12>>2]|0)>>>0:0)break;d=i}b=i}}while(0);if((b|0)!=(l|0)){d=c[l>>2]|0;c[l>>2]=c[b>>2];c[b>>2]=d;d=l+4|0;i=b+4|0;h=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=h}i=l+8|0;c[a>>2]=i;l=i}return}function fi(a){a=a|0;return 536870911}function gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ii(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ji(a){a=+a;return +(a*a)}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=((c[d>>2]|0)-f|0)/36|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b*36|0)}else Hi(a,b-e|0);return}function li(a){a=a|0;return c[a+16>>2]|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;h=1.0/+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function ni(a){a=a|0;return a|0}function oi(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;k=Ng(d)|0;k=(k|0)==(Ng(e)|0)&1;do if((Ng(f)|0)==(k|0)){k=Og(d)|0;k=(k|0)==(Og(e)|0)&1;if((Og(f)|0)==(k|0)){yi(a,b,d,e,f,g,h);break}else{k=Xf(Xf(PE(Xf(Xf(Xf(56032,24457)|0,24528)|0,35e3)|0,466)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}}else{k=Ng(d)|0;if((k|0)==(Ng(e)|0)?(k=(Ng(e)|0)>>>1,(k|0)==(Ng(f)|0)):0){k=Og(d)|0;if((k|0)==(Og(e)|0)?(k=(Og(e)|0)>>>1,(k|0)==(Og(f)|0)):0){zi(a,b,d,e,f,g,h);break}k=Xf(Xf(PE(Xf(Xf(Xf(56032,24653)|0,24528)|0,35e3)|0,469)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){Ai(a,b,d,e,f,g,h);break}l=Xf(Xf(PE(Xf(Xf(Xf(56032,24750)|0,24528)|0,35e3)|0,472)|0,35007)|0,24621)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}l=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,24528)|0,35e3)|0,475)|0,35007)|0,24843)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}while(0);zb=j;return 1}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=zb;zb=zb+48|0;d=e;if(ti(d,b,1.1920928955078125e-07)|0){ui(a,d,c);a=1}else a=0;zb=e;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=b+16|0;d=+f[b>>2]*+f[c>>2];d=d-+ji(+f[b+4>>2]);if(d==0.0)a=0;else{d=+ji(+f[b>>2]+ +f[c>>2])/d;f[a>>2]=d;a=1}return a|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;g=+hz(1.0,e+-1|0)+-.5;h=+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function si(a,b,d){a=a|0;b=b|0;d=+d;var e=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;e=g;if(!(d>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,232)|0,35007)|0,34138)|0;IE(e,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(e,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(e);QE(h,i)|0;ME(h)|0;ua()}if(+(c[a+20>>2]|0)>d){d=+v(+(+f[a+24>>2]),+d)*+(1<>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(i,h)|0;ME(i)|0;ua()}return +(0.0)}function ti(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=+vi(b);if(!(+t(+e)<=d)){e=1.0/e;j=b+16|0;g=b+20|0;m=b+32|0;d=e*+wi(+f[j>>2],+f[g>>2],+f[m>>2]);f[a>>2]=d;l=b+8|0;k=b+4|0;d=e*+xi(+f[l>>2],+f[k>>2],+f[m>>2],+f[b+28>>2]);i=a+4|0;f[i>>2]=d;d=e*+xi(+f[k>>2],+f[l>>2],+f[j>>2],+f[g>>2]);h=a+8|0;f[h>>2]=d;d=e*+wi(+f[b>>2],+f[l>>2],+f[m>>2]);f[a+16>>2]=d;d=e*+xi(+f[l>>2],+f[b>>2],+f[g>>2],+f[b+12>>2]);g=a+20|0;f[g>>2]=d;e=e*+wi(+f[b>>2],+f[k>>2],+f[j>>2]);f[a+32>>2]=e;c[a+12>>2]=c[i>>2];c[a+24>>2]=c[h>>2];c[a+28>>2]=c[g>>2];a=1}else a=0;return a|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=c+4|0;d=c+8|0;f[a>>2]=+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[e>>2]+ +f[b+8>>2]*+f[d>>2];f[a+4>>2]=+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]+ +f[b+20>>2]*+f[d>>2];f[a+8>>2]=+f[b+24>>2]*+f[c>>2]+ +f[b+28>>2]*+f[e>>2]+ +f[b+32>>2]*+f[d>>2];return}function vi(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,g=0.0,h=0.0,i=0;b=a+32|0;g=+f[b>>2];c=a+4|0;g=g*+ji(+f[c>>2]);e=+f[a+8>>2];i=a+20|0;h=+f[c>>2]*2.0*e*+f[i>>2];c=a+16|0;d=+f[c>>2];e=d*+ji(e);d=+f[a>>2];d=d*+ji(+f[i>>2]);return +(h-g-e-d+ +f[a>>2]*+f[c>>2]*+f[b>>2])}function wi(a,b,c){a=+a;b=+b;c=+c;return +(a*c-b*b)}function xi(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(a*d-b*c)}function yi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0;r=zb;zb=zb+32|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;k=r+4|0;l=r;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){m=i+-1|0;if((i|0)>0?(n=i+1|0,n>>>0<(Og(e)|0)>>>0):0){s=Ng(d)|0;if((s|0)!=(Ng(e)|0)){s=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,311)|0,35007)|0,25078)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);t=XF(o,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(o);QE(s,t)|0;ME(s)|0;ua()}t=Ng(d)|0;if((t|0)!=(Ng(g)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26545)|0,24528)|0,35e3)|0,312)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)!=(Og(e)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,313)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)==(Og(g)|0)){z=(ch(d,m)|0)+(h<<2)|0;A=(ch(d,i)|0)+(h<<2)|0;o=(ch(d,n)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;t=(ch(g,m)|0)+(h<<2)|0;m=(ch(g,i)|0)+(h<<2)|0;s=(ch(g,n)|0)+(h<<2)|0;Bi(p,q,j,k,l,e,h,i);v=+f[m>>2];u=+f[A>>2];w=v+(u-+f[d>>2]*2.0);y=(+f[A+-4>>2]-+f[A+4>>2]+(+f[m+4>>2]-+f[m+-4>>2]))*.25;x=(+f[z>>2]-+f[o>>2]+(+f[s>>2]-+f[t>>2]))*.25;c[a>>2]=c[j>>2];t=c[l>>2]|0;c[a+4>>2]=t;f[a+8>>2]=y;c[a+12>>2]=t;c[a+16>>2]=c[k>>2];f[a+20>>2]=x;f[a+24>>2]=y;f[a+28>>2]=x;f[a+32>>2]=w;f[b>>2]=-+f[p>>2];f[b+4>>2]=-+f[q>>2];f[b+8>>2]=-((v-u)*.5);zb=r;return}else{A=Xf(Xf(PE(Xf(Xf(Xf(56032,26597)|0,24528)|0,35e3)|0,314)|0,35007)|0,25078)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,310)|0,35007)|0,25005)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,309)|0,35007)|0,24930)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}function zi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;w=zb;zb=zb+32|0;t=w+28|0;u=w+24|0;v=w+20|0;o=w+16|0;p=w+12|0;q=w+8|0;r=w+4|0;s=w;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){j=i+-1|0;if((i|0)>0?(l=i+1|0,l>>>0<(Og(e)|0)>>>0):0){n=Ng(d)|0;if((n|0)!=(Ng(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,415)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Ng(d)|0)>>>1;if((n|0)!=(Ng(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,416)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=Og(d)|0;if((n|0)!=(Og(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,417)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Og(d)|0)>>>1;if((n|0)!=(Og(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,418)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}m=(ch(d,j)|0)+(h<<2)|0;n=(ch(d,i)|0)+(h<<2)|0;j=(ch(d,l)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;mi(u,v,+(h|0),+(i|0),1);k=+f[u>>2];if(!(k+-.5>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,26252)|0,24528)|0,35e3)|0,428)|0,35007)|0,26293)|0;IE(t,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);x=XF(t,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(t);QE(l,x)|0;ME(l)|0;ua()}if(!(+f[v>>2]+-.5>=0.0)){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26347)|0,24528)|0,35e3)|0,429)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}if(!(k+.5<+((Ng(g)|0)>>>0))){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26442)|0,24528)|0,35e3)|0,430)|0,35007)|0,26293)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}k=+f[v>>2]+.5;if(k<+((Og(g)|0)>>>0)){Bi(o,p,q,r,s,e,h,i);y=+Ci(g,+f[u>>2],+f[v>>2]);k=+f[n>>2];z=y+(k-+f[d>>2]*2.0);C=+f[n+-4>>2];C=C+ +Ci(g,+f[u>>2]+.5,+f[v>>2]);B=+f[n+4>>2];B=(C-(B+ +Ci(g,+f[u>>2]+-.5,+f[v>>2])))*.25;C=+f[m>>2];C=C+ +Ci(g,+f[u>>2],+f[v>>2]+.5);A=+f[j>>2];A=(C-(A+ +Ci(g,+f[u>>2],+f[v>>2]+-.5)))*.25;c[a>>2]=c[q>>2];x=c[s>>2]|0;c[a+4>>2]=x;f[a+8>>2]=B;c[a+12>>2]=x;c[a+16>>2]=c[r>>2];f[a+20>>2]=A;f[a+24>>2]=B;f[a+28>>2]=A;f[a+32>>2]=z;f[b>>2]=-+f[o>>2];f[b+4>>2]=-+f[p>>2];f[b+8>>2]=-((y-k)*.5);zb=w;return}else{x=Xf(Xf(PE(Xf(Xf(Xf(56032,26493)|0,24528)|0,35e3)|0,431)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,414)|0,35007)|0,25005)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,413)|0,35007)|0,24930)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}function Ai(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;t=zb;zb=zb+32|0;q=t+28|0;r=t+24|0;s=t+20|0;j=t+16|0;k=t+12|0;l=t+8|0;m=t+4|0;n=t;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){o=i+-1|0;if((i|0)>0?(p=i+1|0,p>>>0<(Og(e)|0)>>>0):0){u=(Ng(d)|0)>>>1;if((u|0)!=(Ng(e)|0)){u=Xf(Xf(PE(Xf(Xf(Xf(56032,25021)|0,24528)|0,35e3)|0,361)|0,35007)|0,25078)|0;IE(q,u+(c[(c[u>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(u,v)|0;ME(u)|0;ua()}v=(Ng(d)|0)>>>1;if((v|0)!=(Ng(g)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,362)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)!=(Og(e)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25165)|0,24528)|0,35e3)|0,363)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)==(Og(g)|0)){C=(ch(e,i)|0)+(h<<2)|0;v=(ch(g,o)|0)+(h<<2)|0;q=(ch(g,i)|0)+(h<<2)|0;u=(ch(g,p)|0)+(h<<2)|0;ri(r,s,+(h|0),+(i|0),1);Bi(j,k,l,m,n,e,h,i);w=+Ci(d,+f[r>>2],+f[s>>2]);x=+f[q>>2];y=x+(w-+f[C>>2]*2.0);B=+Ci(d,+f[r>>2]+-2.0,+f[s>>2]);B=B+ +f[q+4>>2];A=+Ci(d,+f[r>>2]+2.0,+f[s>>2]);A=(B-(A+ +f[q+-4>>2]))*.25;B=+Ci(d,+f[r>>2],+f[s>>2]+-2.0);B=B+ +f[u>>2];z=+Ci(d,+f[r>>2],+f[s>>2]+2.0);z=(B-(z+ +f[v>>2]))*.25;c[a>>2]=c[l>>2];v=c[n>>2]|0;c[a+4>>2]=v;f[a+8>>2]=A;c[a+12>>2]=v;c[a+16>>2]=c[m>>2];f[a+20>>2]=z;f[a+24>>2]=A;f[a+28>>2]=z;f[a+32>>2]=y;f[b>>2]=-+f[j>>2];f[b+4>>2]=-+f[k>>2];f[b+8>>2]=-((x-w)*.5);zb=t;return}else{C=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,364)|0,35007)|0,25078)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,360)|0,35007)|0,25005)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,359)|0,35007)|0,24930)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}function Bi(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;if((i|0)>0?(i+1|0)>>>0<(Ng(h)|0)>>>0:0){k=j+-1|0;if((j|0)>0?(l=j+1|0,l>>>0<(Og(h)|0)>>>0):0){k=(ch(h,k)|0)+(i<<2)|0;j=(ch(h,j)|0)+(i<<2)|0;m=(ch(h,l)|0)+(i<<2)|0;h=j+4|0;i=j+-4|0;f[a>>2]=(+f[h>>2]-+f[i>>2])*.5;f[b>>2]=(+f[m>>2]-+f[k>>2])*.5;f[d>>2]=+f[h>>2]+(+f[i>>2]-+f[j>>2]*2.0);f[e>>2]=+f[m>>2]+(+f[k>>2]-+f[j>>2]*2.0);f[g>>2]=(+f[k+-4>>2]+ +f[m+4>>2]-(+f[k+4>>2]+ +f[m+-4>>2]))*.25;zb=n;return}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26089)|0,24528)|0,35e3)|0,285)|0,35007)|0,25005)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26033)|0,24528)|0,35e3)|0,284)|0,35007)|0,24930)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}function Ci(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;f=Di(a)|0;e=Ng(a)|0;d=Og(a)|0;return +(+Fi(f,e,d,Ei(a)|0,b,c))}function Di(a){a=a|0;return c[a+24>>2]|0}function Ei(a){a=a|0;return c[a+12>>2]|0}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return +(+Gi(a,b,c,d,e,f))}function Gi(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;h=+h;var i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;p=zb;zb=zb+16|0;n=p;o=~~+s(+g);if((o|0)!=(~~g|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25283)|0,25335)|0,35e3)|0,69)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(n,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(n);QE(m,l)|0;ME(m)|0;ua()}l=~~+s(+h);if((l|0)!=(~~h|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25441)|0,25335)|0,35e3)|0,70)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);k=XF(n,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(n);QE(m,k)|0;ME(m)|0;ua()}m=o+1|0;k=l+1|0;if(!((l|0)>-1&l>>>0>>0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,25493)|0,25335)|0,35e3)|0,79)|0,35007)|0,25539)|0;IE(n,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);r=XF(n,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(n);QE(q,r)|0;ME(q)|0;ua()}if(k>>>0>=d>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25556)|0,25335)|0,35e3)|0,80)|0,35007)|0,25616)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!((o|0)>-1&o>>>0>>0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25640)|0,25335)|0,35e3)|0,81)|0,35007)|0,25685)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(m>>>0>=b>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25702)|0,25335)|0,35e3)|0,82)|0,35007)|0,25761)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}b=a+(B(l,e)|0)|0;a=b+e|0;u=+(m|0)-g;i=+(k|0)-h;j=u*i;t=g-+(o|0);i=t*i;h=h-+(l|0);g=u*h;h=t*h;if(!(j>=0.0)|!(j<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25785)|0,25335)|0,35e3)|0,94)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(i>=0.0)|!(i<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25845)|0,25335)|0,35e3)|0,95)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(g>=0.0)|!(g<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25892)|0,25335)|0,35e3)|0,96)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h>=0.0)|!(h<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25939)|0,25335)|0,35e3)|0,97)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h+(g+(j+i))<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25986)|0,25335)|0,35e3)|0,98)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}else{zb=p;return +(j*+f[b+(o<<2)>>2]+i*+f[b+(m<<2)>>2]+g*+f[a+(o<<2)>>2]+h*+f[a+(m<<2)>>2])}return +(0.0)}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/36|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/36|0)+b|0;e=$h(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/36|0;g=k<<1;vh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/36|0,a+8|0);Ji(f,b);wh(a,f);xh(f);break}}else Ii(a,b);while(0);zb=i;return}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+4|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ji(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ki(a){a=a|0;return (c[a+4>>2]|0)-(c[a>>2]|0)>>5|0}function Li(a,b){a=a|0;b=b|0;return (c[a>>2]|0)+(b<<5)|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f;e=c[a>>2]|0;if((c[a+4>>2]|0)-e>>5>>>0>b>>>0){e=Ng(e)|0;e=~~+Pi(+Oi(+(((e>>>0)/((Ng((c[a>>2]|0)+(b<<5)|0)|0)>>>0)|0)>>>0)));zb=f;return e|0}else{f=Xf(Xf(PE(Xf(Xf(Xf(56032,26949)|0,24528)|0,35e3)|0,94)|0,35007)|0,26995)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=XF(d,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(d);QE(f,e)|0;ME(f)|0;ua()}return 0}function Ni(a,b){a=a|0;b=b|0;return (b|0)%(c[a+16>>2]|0)|0|0}function Oi(a){a=+a;return +(+z(+a)/.6931471824645996)}function Pi(a){a=+a;return +(+s(+(a+.5)))}function Qi(a){a=a|0;c[a>>2]=15676;gh(a+56|0);gh(a+44|0);Si(a+32|0);Ti(a);return}function Ri(a){a=a|0;Qi(a);SA(a);return}function Si(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Ti(a){a=a|0;c[a>>2]=15692;mh(a+4|0);return}function Ui(a){a=a|0;Ti(a);SA(a);return}function Vi(a,g,h,i,j){a=a|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=zb;zb=zb+16|0;k=t;if(i>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,55)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}if(j>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,56)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}o=i+-1|0;p=i+-2|0;q=i+-3|0;r=i+-4|0;l=g;m=0;while(1){if((m|0)==(j|0))break;s=h+(B(m,i)|0)|0;k=d[s>>0]|0;u=s+1|0;n=s+2|0;b[l>>1]=(k*7|0)+(d[n>>0]|0)+((d[u>>0]|0)+k<<2);k=d[s>>0]|0;b[l+2>>1]=((d[u>>0]|0)*6|0)+k+(d[s+3>>0]|0)+((d[n>>0]|0)+k<<2);k=2;n=l+4|0;while(1){if((k|0)==(p|0))break;u=k+1|0;b[n>>1]=((d[s+k>>0]|0)*6|0)+(d[s+(k+-2)>>0]|0)+((d[s+u>>0]|0)+(d[s+(k+-1)>>0]|0)<<2)+(d[s+(k+2)>>0]|0);k=u;n=n+2|0}u=l+(p<<1)|0;n=s+p|0;k=s+q|0;v=s+o|0;w=d[v>>0]|0;b[u>>1]=((d[n>>0]|0)*6|0)+w+(d[s+r>>0]|0)+(w+(d[k>>0]|0)<<2);s=d[v>>0]|0;b[u+2>>1]=(s*7|0)+(d[k>>0]|0)+((d[n>>0]|0)+s<<2);l=l+(i<<1)|0;m=m+1|0}s=j+-2|0;k=g+(i<<1)|0;q=k+(i<<1)|0;l=0;m=q;n=k;o=g;p=a;while(1){if((l|0)==(i|0))break;w=e[o>>1]|0;f[p>>2]=+((w*7|0)+((e[n>>1]|0)+w<<2)+(e[m>>1]|0)|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+4|0}o=0;p=q+(i<<1)|0;n=q;l=g;m=a+(i<<2)|0;while(1){if((o|0)==(i|0))break;w=e[l>>1]|0;f[m>>2]=+(((e[k>>1]|0)*6|0)+w+((e[n>>1]|0)+w<<2)+(e[p>>1]|0)|0)*.00390625;o=o+1|0;p=p+2|0;n=n+2|0;k=k+2|0;l=l+2|0;m=m+4|0}l=2;while(1){if((l|0)==(s|0))break;q=g+((B(l+-2|0,i)|0)<<1)|0;p=q+(i<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;k=0;m=n+(i<<1)|0;r=a+((B(l,i)|0)<<2)|0;while(1){if((k|0)==(i|0))break;f[r>>2]=+(((e[o>>1]|0)*6|0)+(e[q>>1]|0)+((e[n>>1]|0)+(e[p>>1]|0)<<2)+(e[m>>1]|0)|0)*.00390625;k=k+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;q=q+2|0;r=r+4|0}l=l+1|0}p=g+((B(j+-4|0,i)|0)<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(s,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+(((e[n>>1]|0)*6|0)+(e[p>>1]|0)+(w+(e[o>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;k=k+4|0}o=g+((B(j+-3|0,i)|0)<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(j+-1|0,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+((w*6|0)+(e[o>>1]|0)+(w+(e[n>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;k=k+4|0}zb=t;return}function Wi(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0;q=zb;zb=zb+16|0;h=q;if(e>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,168)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}if(g>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,169)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}l=e+-1|0;m=e+-2|0;n=e+-3|0;o=e+-4|0;i=b;j=0;while(1){if((j|0)==(g|0))break;p=d+((B(j,e)|0)<<2)|0;r=+f[p>>2];k=p+4|0;h=p+8|0;f[i>>2]=+f[h>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0));r=+f[p>>2];f[i+4>>2]=+f[p+12>>2]+(r+(+f[k>>2]*6.0+(r+ +f[h>>2])*4.0));h=2;k=i+8|0;while(1){if((h|0)==(m|0))break;s=h+1|0;f[k>>2]=+f[p+(h+2<<2)>>2]+(+f[p+(h+-2<<2)>>2]+(+f[p+(h<<2)>>2]*6.0+(+f[p+(h+-1<<2)>>2]+ +f[p+(s<<2)>>2])*4.0));h=s;k=k+4|0}s=i+(m<<2)|0;k=p+(m<<2)|0;h=p+(n<<2)|0;t=p+(l<<2)|0;r=+f[t>>2];f[s>>2]=r+(+f[p+(o<<2)>>2]+(+f[k>>2]*6.0+(+f[h>>2]+r)*4.0));r=+f[t>>2];f[s+4>>2]=r+(+f[h>>2]+(r*6.0+(r+ +f[k>>2])*4.0));i=i+(e<<2)|0;j=j+1|0}p=g+-2|0;h=b+(e<<2)|0;n=h+(e<<2)|0;i=0;j=n;k=h;l=b;m=a;while(1){if((i|0)==(e|0))break;r=+f[l>>2];f[m>>2]=(+f[j>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0}l=0;m=n+(e<<2)|0;k=n;i=b;j=a+(e<<2)|0;while(1){if((l|0)==(e|0))break;r=+f[i>>2];f[j>>2]=(+f[m>>2]+(r+(+f[h>>2]*6.0+(r+ +f[k>>2])*4.0)))*.00390625;l=l+1|0;m=m+4|0;k=k+4|0;h=h+4|0;i=i+4|0;j=j+4|0}i=2;while(1){if((i|0)==(p|0))break;n=b+((B(i+-2|0,e)|0)<<2)|0;m=n+(e<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;h=0;j=k+(e<<2)|0;o=a+((B(i,e)|0)<<2)|0;while(1){if((h|0)==(e|0))break;f[o>>2]=(+f[j>>2]+(+f[n>>2]+(+f[l>>2]*6.0+(+f[m>>2]+ +f[k>>2])*4.0)))*.00390625;h=h+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;n=n+4|0;o=o+4|0}i=i+1|0}m=b+((B(g+-4|0,e)|0)<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(p,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[m>>2]+(+f[k>>2]*6.0+(+f[l>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;h=h+4|0}l=b+((B(g+-3|0,e)|0)<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(g+-1|0,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[l>>2]+(r*6.0+(+f[k>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;h=h+4|0}zb=q;return}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c>>>1;j=d>>>1;k=c<<1;i=0;while(1){if((i|0)==(j|0))break;g=b+((B(k,i)|0)<<2)|0;d=0;e=g+(c<<2)|0;h=a;while(1){if((d|0)==(l|0))break;f[h>>2]=(+f[g>>2]+ +f[g+4>>2]+ +f[e>>2]+ +f[e+4>>2])*.25;d=d+1|0;e=e+8|0;g=g+8|0;h=h+4|0}i=i+1|0;a=a+(l<<2)|0}return}function Yi(a){a=a|0;c[a>>2]=15692;a=a+4|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;c[a+16>>2]=b;c[a+20>>2]=d;e=+La(+(1.0/+(d+-1|0)));f[a+24>>2]=e;e=1.0/+z(+e);f[a+28>>2]=e;return}function _i(a){a=a|0;var b=0;Yi(a);c[a>>2]=15676;a=a+32|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $i(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;Zi(a,e,3);k=a+4|0;l=a+20|0;Rg(k,B(c[l>>2]|0,e)|0);g=0;while(1){if((g|0)>=(e|0))break;h=b>>>g;i=d>>>g;f=0;while(1){j=c[l>>2]|0;if(f>>>0>=j>>>0)break;j=(B(j,g)|0)+f|0;cq((c[k>>2]|0)+(j<<5)|0,2,h,i,-1,1);f=f+1|0}g=g+1|0}l=B(d,b)|0;aj(a+32|0,l);fh(a+44|0,l);fh(a+56|0,l);return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>1;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<1)}else bj(a,b-e|0);return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>1>>>0>>0){d=(d-(c[a>>2]|0)>>1)+b|0;e=dj(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;g=(c[g>>2]|0)-j|0;ej(f,g>>1>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>1,a+8|0);fj(f,b);gj(a,f);hj(f);break}}else cj(a,b);while(0);zb=i;return}function cj(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function dj(a){a=a|0;return 2147483647}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if((b|0)<0){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<1)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<1)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<1);return}function fj(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function gj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>1)<<1)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hj(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-2|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((Mg(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27230)|0,27081)|0,35e3)|0,330)|0,35007)|0,27281)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((ah(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27305)|0,27081)|0,35e3)|0,331)|0,35007)|0,27350)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}e=a+4|0;f=a+16|0;g=a+20|0;if(((c[a+8>>2]|0)-(c[e>>2]|0)>>5|0)!=(B(c[g>>2]|0,c[f>>2]|0)|0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,27376)|0,27081)|0,35e3)|0,333)|0,35007)|0,27450)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(i,j)|0;ME(i)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27485)|0,27081)|0,35e3)|0,334)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27577)|0,27081)|0,35e3)|0,335)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}jj(a,c[e>>2]|0,b);b=c[e>>2]|0;jj(a,b+32|0,b);b=c[e>>2]|0;kj(a,b+64|0,b+32|0);b=1;while(1){if(b>>>0>=(c[f>>2]|0)>>>0)break;k=B(c[g>>2]|0,b)|0;k=lj((c[e>>2]|0)+(k<<5)|0)|0;d=(B(c[g>>2]|0,b)|0)+-1|0;d=lj((c[e>>2]|0)+(d<<5)|0)|0;i=(B(c[g>>2]|0,b)|0)+-1|0;i=Ng((c[e>>2]|0)+(i<<5)|0)|0;j=(B(c[g>>2]|0,b)|0)+-1|0;Xi(k,d,i,Og((c[e>>2]|0)+(j<<5)|0)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;jj(a,i+(j+1<<5)|0,i+(j<<5)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;kj(a,i+(j+2<<5)|0,i+(j+1<<5)|0);b=b+1|0}zb=h;return}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=zb;zb=zb+16|0;e=f;if((Mg(b)|0)!=2){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27639)|0,27081)|0,35e3)|0,357)|0,35007)|0,27686)|0;IE(e,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(g,h)|0;ME(g)|0;ua()}switch(Mg(d)|0){case 1:{e=lj(b)|0;g=c[a+32>>2]|0;h=Di(d)|0;Vi(e,g,h,Ng(d)|0,Og(d)|0);break}case 2:{e=lj(b)|0;g=c[a+44>>2]|0;h=Di(d)|0;Wi(e,g,h,Ng(d)|0,Og(d)|0);break}case 0:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27722,Yf(27722)|0);mj(h,e);Q(h|0,13208,5)}default:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27741,Yf(27741)|0);mj(h,e);Q(h|0,13208,5)}}zb=f;return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=zb;zb=zb+32|0;f=e;j=c[a+56>>2]|0;i=Mg(d)|0;h=Ng(d)|0;g=Og(d)|0;kq(f,j,i,h,g,Ei(d)|0,1);jj(a,f,d);jj(a,b,f);rq(f);zb=e;return}function lj(a){a=a|0;return c[a+24>>2]|0}function mj(a,b){a=a|0;b=b|0;c[a>>2]=15708;fO(a+4|0,b);return}function nj(a){a=a|0;c[a>>2]=15708;jO(a+4|0);return}function oj(a){a=a|0;nj(a);SA(a);return}function pj(b){b=b|0;b=b+4|0;if((a[b+11>>0]|0)<0)b=c[b>>2]|0;return b|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;m=c+-1|0;j=b+(c<<2)|0;h=b+4|0;n=+f[b>>2];o=+f[h>>2]-n;n=+f[j>>2]-n;p=+y(+n,+o)+3.141592653589793;f[a>>2]=p;n=+u(+(o*o+n*n));f[a+4>>2]=n;g=1;e=j;while(1){i=a+8|0;e=e+4|0;if(g>>>0>=m>>>0)break;l=h+4|0;o=+f[l>>2]-+f[h+-4>>2];p=+f[e>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;g=g+1|0;h=l;a=i}l=d+-1|0;p=+f[h>>2];o=p-+f[h+-4>>2];p=+f[e>>2]-p;n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;k=1;g=i;d=j+(c<<2)|0;h=b;a=j;while(1){e=g+8|0;if(k>>>0>=l>>>0)break;j=a+4|0;o=+f[j>>2]-+f[a>>2];p=+f[d>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;i=1;g=g+16|0;while(1){a=d+4|0;e=h+4|0;if(i>>>0>=m>>>0)break;q=j+4|0;o=+f[q>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;i=i+1|0;d=a;h=e;j=q;g=g+8|0}o=+f[j>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;k=k+1|0;d=d+8|0;h=h+8|0;a=j+4|0}h=b+((B(l,c)|0)<<2)|0;a=h+(0-c<<2)|0;q=h+4|0;p=+f[h>>2];o=+f[q>>2]-p;p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;h=1;g=q;while(1){d=e+8|0;a=a+4|0;if(h>>>0>=m>>>0)break;q=g+4|0;o=+f[q>>2]-+f[g+-4>>2];p=+f[g>>2]-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;h=h+1|0;e=d;g=q}p=+f[g>>2];o=p-+f[g+-4>>2];p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;return}function rj(a){a=a|0;return 536870911}function sj(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;a=a+12|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tj(a){a=a|0;mh(a+40|0);gh(a+28|0);return}function uj(a,b,d,e,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=+i;j=+j;k=k|0;l=+l;var m=0,n=0,o=0;c[a>>2]=e;n=a+4|0;c[n>>2]=g;c[a+8>>2]=h;f[a+12>>2]=i;f[a+16>>2]=j;c[a+20>>2]=k;f[a+24>>2]=l;fh(a+28|0,h);o=a+40|0;Rg(o,B(c[n>>2]|0,c[a>>2]|0)|0);k=0;while(1){if((k|0)==(e|0))break;a=B(k,g)|0;m=b>>>k;n=d>>>k;h=0;while(1){if((h|0)==(g|0))break;cq((c[o>>2]|0)+(h+a<<5)|0,2,m,n,-1,2);h=h+1|0}k=k+1|0}return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=zb;zb=zb+16|0;f=g;e=a+40|0;a=0;while(1){d=Ah(b)|0;if(a>>>0>=(c[d+4>>2]|0)-(c[d>>2]|0)>>5>>>0){a=3;break}d=Ah(b)|0;d=(c[d>>2]|0)+(a<<5)|0;h=Ng(d)|0;if((h|0)!=((Ei(d)|0)>>>2|0)){a=5;break}j=wj((c[e>>2]|0)+(a<<5)|0)|0;i=xj(d)|0;h=Ng(d)|0;qj(j,i,h,Og(d)|0);a=a+1|0}if((a|0)==3){zb=g;return}else if((a|0)==5){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27784)|0,27845)|0,35e3)|0,96)|0,35007)|0,27934)|0;IE(f,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(f,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(f);QE(j,i)|0;ME(j)|0;ua()}}function wj(a){a=a|0;return c[a+24>>2]|0}function xj(a){a=a|0;return c[a+24>>2]|0}function yj(a,b,d,e,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;i=+i;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0;F=zb;zb=zb+48|0;D=F+32|0;E=F+24|0;w=F+16|0;x=F+12|0;y=F+8|0;z=F+4|0;C=F;if(!(i>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,27975)|0,27845)|0,35e3)|0,119)|0,35007)|0,28005)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}l=a+4|0;v=(B(c[l>>2]|0,e)|0)+g|0;m=a+40|0;if(!(+((Ng((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>i)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28024)|0,27845)|0,35e3)|0,120)|0,35007)|0,28104)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}if(!(j>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28140)|0,27845)|0,35e3)|0,121)|0,35007)|0,28170)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}v=(B(c[l>>2]|0,e)|0)+g|0;if(!(+((Og((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>j)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28189)|0,27845)|0,35e3)|0,122)|0,35007)|0,28270)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}q=(B(c[l>>2]|0,e)|0)+g|0;q=(c[m>>2]|0)+(q<<5)|0;if((ah(q)|0)!=2){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28307)|0,27845)|0,35e3)|0,126)|0,35007)|0,28348)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}c[d>>2]=0;e=~~(i+.5);l=~~(j+.5);a:do if(((e|0)>=0?!((l|0)<0|(Ng(q)|0)>>>0<=e>>>0):0)?(Og(q)|0)>>>0>l>>>0:0){n=+zj(1.0,+f[a+12>>2]*k);s=-1.0/(+ji(n)*2.0);n=n*+f[a+16>>2];t=+A(+(+ji(n)));m=~~(n+.5);p=Aj(0,e-m|0)|0;o=Bj(m+e|0,(Ng(q)|0)+-1|0)|0;e=Aj(0,l-m|0)|0;m=Bj(m+l|0,(Og(q)|0)+-1|0)|0;u=a+28|0;v=c[u>>2]|0;Cj(v,(c[a+32>>2]|0)-v>>2);v=a+8|0;while(1){if((e|0)>(m|0))break;k=+ji(+(e|0)-j);g=ch(q,e)|0;l=p;while(1){if((l|0)>(o|0))break;n=k+ +ji(+(l|0)-i);if(!(n>t)){G=g+(l<<1<<2)|0;n=+Dj(s*n);r=c[v>>2]|0;Ej(c[u>>2]|0,+f[G>>2]*+(r|0)*.159154943091895,n*+f[G+4>>2],r)}l=l+1|0}e=e+1|0}l=a+20|0;e=0;while(1){if((e|0)>=(c[l>>2]|0))break;G=c[u>>2]|0;Fj(G,G,c[v>>2]|0,15720);e=e+1|0}l=c[v>>2]|0;e=0;s=0.0;while(1){if((e|0)>=(l|0))break;j=+f[(c[u>>2]|0)+(e<<2)>>2];e=e+1|0;s=j>s?j:s}if(!(s==0.0)){if(!(s>0.0)){G=Xf(Xf(PE(Xf(Xf(Xf(56032,28379)|0,27845)|0,35e3)|0,218)|0,35007)|0,28417)|0;IE(D,G+(c[(c[G>>2]|0)+-12>>2]|0)|0);r=XF(D,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(D);QE(G,r)|0;ME(G)|0;ua()}p=D+4|0;q=E+4|0;r=w+4|0;o=a+24|0;m=0;e=l;while(1){if((m|0)>=(e|0))break a;n=+(m|0);f[D>>2]=n;l=c[u>>2]|0;G=l+(m<<2)|0;a=c[G>>2]|0;c[p>>2]=a;g=m+-1|0;f[E>>2]=+(g|0);g=c[l+(((g+e|0)%(e|0)|0)<<2)>>2]|0;c[q>>2]=g;m=m+1|0;f[w>>2]=+(m|0);l=c[l+(((m+e|0)%(e|0)|0)<<2)>>2]|0;c[r>>2]=l;k=(c[h>>2]=a,+f[h>>2]);if(+f[G>>2]>s*+f[o>>2]?(j=(c[h>>2]=l,+f[h>>2]),k>(c[h>>2]=g,+f[h>>2])&k>j):0){f[C>>2]=n;if(Gj(x,y,z,E,D,w)|0)Hj(C,+f[x>>2],+f[y>>2],+f[z>>2])|0;j=+(c[v>>2]|0);e=c[d>>2]|0;f[b+(e<<2)>>2]=(+f[C>>2]+.5+j)/j*6.283185307179586%6.283185307179586;c[d>>2]=e+1;e=c[v>>2]|0}}}}while(0);zb=F;return}function zj(a,b){a=+a;b=+b;return +(a>b?a:b)}function Aj(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function Bj(a,b){a=a|0;b=b|0;return ((a|0)<(b|0)?a:b)|0}function Cj(a,b){a=a|0;b=b|0;aP(a|0,0,b<<2|0)|0;return}function Dj(a){a=+a;return +(((((((a+6.0)*a+30.0)*a+120.0)*a+360.0)*a+720.0)*a+720.0)*.0013888888)}function Ej(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var g=0.0,h=0,i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;if(!a){h=Xf(Xf(PE(Xf(Xf(Xf(56032,28448)|0,28484)|0,35e3)|0,139)|0,35007)|0,28571)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(h,k)|0;ME(h)|0;ua()}if(b+.5>0.0?(g=b+-.5,g<+(e|0)):0){if(!(d>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28702)|0,28484)|0,35e3)|0,141)|0,35007)|0,28740)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}if((e|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28769)|0,28484)|0,35e3)|0,142)|0,35007)|0,28806)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}k=~~+s(+g);b=b-+(k|0)+-.5;g=1.0-b;h=(k+e|0)%(e|0)|0;e=(k+1|0)%(e|0)|0;if(!(g>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28835)|0,28484)|0,35e3)|0,150)|0,35007)|0,28866)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}if(!(b>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28886)|0,28484)|0,35e3)|0,151)|0,35007)|0,28917)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((h|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28937)|0,28484)|0,35e3)|0,152)|0,35007)|0,28985)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((e|0)>-1){l=a+(h<<2)|0;f[l>>2]=g*d+ +f[l>>2];l=a+(e<<2)|0;f[l>>2]=b*d+ +f[l>>2];zb=j;return}else{l=Xf(Xf(PE(Xf(Xf(Xf(56032,29011)|0,28484)|0,35e3)|0,153)|0,35007)|0,29059)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}}l=Xf(Xf(PE(Xf(Xf(Xf(56032,28597)|0,28484)|0,35e3)|0,140)|0,35007)|0,28662)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;k=+f[b>>2];g=c+-1|0;h=b+(g<<2)|0;i=d+4|0;j=d+8|0;e=+f[h>>2];c=0;while(1){if((c|0)==(g|0))break;m=+f[b+(c<<2)>>2];l=c+1|0;f[a+(c<<2)>>2]=e*+f[d>>2]+m*+f[i>>2]+ +f[j>>2]*+f[b+(l<<2)>>2];e=m;c=l}f[a+(g<<2)>>2]=e*+f[d>>2]+ +f[i>>2]*+f[h>>2]+k*+f[j>>2];return}function Gj(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;h=+f[g>>2];k=+f[e>>2];l=+f[d>>2];j=h-l;h=(h-k)*j;i=l-k;j=i*j;if(i==0.0|(h==0.0|j==0.0)){f[a>>2]=0.0;f[b>>2]=0.0;b=0;h=0.0}else{l=l*l;m=e+4|0;n=+f[m>>2];e=d+4|0;h=(+f[g+4>>2]-n)/h-(+f[e>>2]-n)/j;f[a>>2]=h;h=(+f[e>>2]-+f[m>>2]+(k*k-l)*h)/i;f[b>>2]=h;b=1;h=+f[e>>2]-l*+f[a>>2]-h*+f[d>>2]}f[c>>2]=h;return b|0}function Hj(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;if(b==0.0)a=0;else{f[a>>2]=-c/(b*2.0);a=1}return a|0}function Ij(a){a=a|0;var b=0,d=0;c[a>>2]=0;d=tB(24)|0;Jj(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Kj(b);SA(b)}return}function Jj(a){a=a|0;var b=0,d=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=1065353216;d=tB(840)|0;$j(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Mj(b);SA(b)}return}function Kj(a){a=a|0;var b=0;Lj(a+4|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0){Mj(b);SA(b)}return}function Lj(a){a=a|0;Yj(a);return}function Mj(a){a=a|0;Nj(a+788|0);kp(a+652|0);Oj(a+636|0);Pj(a+316|0);yh(a+160|0);Qi(a+92|0);Qj(a+72|0);Rj(a+64|0);Sj(a+12|0);return}function Nj(a){a=a|0;Wj(a+24|0);Xj(a+12|0);gh(a);return}function Oj(a){a=a|0;Sj(a);return}function Pj(a){a=a|0;return}function Qj(a){a=a|0;Tj(a);return}function Rj(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function Sj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Tj(a){a=a|0;var b=0;Uj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Uj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Vj(b+8|0);Pf(b,20);b=a}return}function Vj(a){a=a|0;Rj(a+4|0);return}function Wj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Xj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Yj(a){a=a|0;var b=0;Zj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Zj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;_j(b+8|0);Pf(b,24);b=a}return}function _j(a){a=a|0;lg(a+4|0);return}function $j(b){b=b|0;var d=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+64|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+88>>2]=1065353216;_i(b+92|0);d=b+160|0;dh(d);Gp(b+316|0);ak(b+636|0);jp(b+652|0);bk(b+788|0,.009999999776482582,1024,1064,50);ck(d,3.0);dk(d,4.0);eh(d,500);f[b+4>>2]=3.0;c[b>>2]=8;a[b+8>>0]=1;return}function ak(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;f[a+12>>2]=.699999988079071;return}function bk(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=a;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));ek(a,b,d,e,f);return}function ck(a,b){a=a|0;b=+b;f[a+52>>2]=b;return}function dk(a,b){a=a|0;b=+b;f[a+56>>2]=b;return}function ek(a,b,d,e,g){a=a|0;b=+b;d=d|0;e=e|0;g=g|0;fh(a,d*9|0);fk(a+24|0,d);f[a+36>>2]=b;c[a+40>>2]=d;c[a+44>>2]=e;c[a+48>>2]=g;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>3;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<3)}else gk(a,b-e|0);return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>3>>>0>>0){d=(d-(c[a>>2]|0)>>3)+b|0;e=ik(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>2;jk(f,k>>3>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>3,a+8|0);kk(f,b);lk(a,f);mk(f);break}}else hk(a,b);while(0);zb=i;return}function hk(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function ik(a){a=a|0;return 536870911}function jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function kk(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function nk(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=0;if(b|0){Kj(b);SA(b)}return}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function pk(a){a=a|0;return a+4|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((b|0)<(c|0)|(a|0)<(c|0))break;d=d+1|0;b=b>>1;a=a>>1}return d|0}function rk(a){a=a|0;return c[a>>2]|0}function sk(a){a=a|0;return c[a+4>>2]|0}function tk(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;bm(a+8|0);cm(a+36|0);return}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15740;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;Rl(a,e);zb=d;return}function vk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wk(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xk(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;i=k+20|0;j=k;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,30067)|0,35e3)|0,212)|0,35007)|0,33688)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(h,l)|0;ME(h)|0;ua()}if(!e){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30146)|0,30067)|0,35e3)|0,213)|0,35007)|0,30178)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;if((c[l+4>>2]|0)==(c[l>>2]|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30195)|0,30067)|0,35e3)|0,214)|0,35007)|0,30247)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Ng(c[l>>2]|0)|0;if((l|0)!=(rk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30264)|0,30067)|0,35e3)|0,215)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Og(c[l>>2]|0)|0;if((l|0)!=(sk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30372)|0,30067)|0,35e3)|0,216)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}Rh(e,d);h=Ml(e)|0;Nl(i,((c[h+4>>2]|0)-(c[h>>2]|0)|0)/36|0);h=0;while(1){l=Ml(e)|0;if(h>>>0>=(((c[l+4>>2]|0)-(c[l>>2]|0)|0)/36|0)>>>0)break;l=Ml(e)|0;l=c[l>>2]|0;gg(j,+f[l+(h*36|0)>>2],+f[l+(h*36|0)+4>>2],+f[l+(h*36|0)+8>>2],+f[l+(h*36|0)+28>>2],+f[l+(h*36|0)+24>>2]>0.0);l=(c[i>>2]|0)+(h*20|0)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];a[l+16>>0]=a[j+16>>0]|0;Of(j);h=h+1|0}Hp(g,zk(b)|0,d,i);Nf(i);zb=k;return}function yk(){if((a[54528]|0)==0?nB(54528)|0:0){sq(55464);pB(54528)}return 55464}function zk(a){a=a|0;return a+8|0}function Ak(a){a=a|0;return ((c[a+20>>2]|0)-(c[a+16>>2]|0)|0)/20|0|0}function Bk(a){a=a|0;var b=0,d=0;d=a+36|0;Gk(d,128);Hk(d,8);Ik(d,8);Jk(d,16);a=a+8|0;b=Kk(a)|0;b=c[b>>2]|0;Lk(d,b,Ak(a)|0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Dk(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ek(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Dk(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(20)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Fk(a,b)}}else Fk(a,b);return}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Gk(a,b){a=a|0;b=b|0;Ll(a+12|0,b);return}function Hk(a,b){a=a|0;b=b|0;Kl(a+12|0,b);return}function Ik(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function Jk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function Kk(a){a=a|0;return a+4|0}function Lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;g=i;Mk(g,d);f=c[g>>2]|0;h=(c[g+4>>2]|0)-f>>2;e=0;while(1){if((e|0)==(h|0))break;c[f+(e<<2)>>2]=e;e=e+1|0}Nk(a,b,d,f,h);Xj(g);zb=i;return}function Mk(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Jl(a,b);Fl(a,b)}return}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=tB(128)|0;Pk(g,Ok(a)|0);i=a+8|0;h=c[i>>2]|0;c[i>>2]=g;if(h){Qk(h);SA(h);g=c[i>>2]|0}Rk(g,0);Sk(a,c[i>>2]|0,b,d,e,f);return}function Ok(a){a=a|0;var b=0;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;return a|0}function Pk(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Il(b+4|0,96);return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+104|0;f=a+108|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0){Qk(b);SA(b)}d=d+1|0}Xj(a+116|0);Hl(e);return}function Rk(b,c){b=b|0;c=c|0;a[b+100>>0]=c&1;return}function Sk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+32|0;o=q+20|0;p=q;h=a+12|0;n=Tk(h)|0;if((Aj(n,c[a+108>>2]|0)|0)>=(g|0)){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break;o=c[f+(h<<2)>>2]|0;p=Uk(b)|0;c[(c[p>>2]|0)+(h<<2)>>2]=o;h=h+1|0}zb=q;return}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=1065353216;Wk(h,d,e,f,g);m=Xk(h)|0;n=m+4|0;i=c[n>>2]|0;h=c[m>>2]|0;if((i-h>>2|0)!=(g|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29190)|0,35e3)|0,363)|0,35007)|0,29284)|0;IE(o,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(o,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(o);QE(l,k)|0;ME(l)|0;ua()}l=0;while(1){if(l>>>0>=i-h>>2>>>0){h=10;break}h=c[h+(l<<2)>>2]|0;if((h|0)==-1){h=12;break}if((h|0)>=(g|0)){h=14;break}h=f+(h<<2)|0;if((c[h>>2]|0)>=(e|0)){h=16;break}h=Yk(p,h)|0;i=f+(l<<2)|0;j=h+4|0;k=c[j>>2]|0;if((k|0)==(c[h+8>>2]|0))Zk(h,i);else{c[k>>2]=c[i>>2];c[j>>2]=k+4}l=l+1|0;h=c[m>>2]|0;i=c[n>>2]|0}if((h|0)==10){h=p+12|0;a:do if((c[h>>2]|0)==1){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break a;e=c[f+(h<<2)>>2]|0;o=Uk(b)|0;c[(c[o>>2]|0)+(h<<2)>>2]=e;h=h+1|0}}else{g=_k(b)|0;$k(g,c[h>>2]|0);h=p+8|0;while(1){h=c[h>>2]|0;if(!h)break a;i=h;l=i+12|0;m=i+16|0;if((c[m>>2]|0)==(c[l>>2]|0))break;j=tB(128)|0;k=Ok(a)|0;al(j,k,d+((c[i+8>>2]|0)*96|0)|0);c[o>>2]=j;Rk(j,0);i=_k(b)|0;j=i+4|0;k=c[j>>2]|0;if((k|0)==(c[i+8>>2]|0))bl(i,o);else{c[k>>2]=c[o>>2];c[j>>2]=(c[j>>2]|0)+4}g=c[l>>2]|0;Sk(a,c[o>>2]|0,d,e,g,(c[m>>2]|0)-g>>2)}b=Xf(Xf(PE(Xf(Xf(Xf(56032,29507)|0,29190)|0,35e3)|0,387)|0,35007)|0,29553)|0;IE(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);e=XF(o,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(o);QE(b,e)|0;ME(b)|0;ua()}while(0);cl(p);zb=q;return}else if((h|0)==12){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29306)|0,29190)|0,35e3)|0,365)|0,35007)|0,29349)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==14){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29371)|0,29190)|0,35e3)|0,366)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==16){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29446)|0,29190)|0,35e3)|0,367)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}}function Tk(a){a=a|0;return c[a+4>>2]|0}function Uk(a){a=a|0;return a+116|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else El(a,b-e|0);return}function Wk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+16|0;o=s;p=a+4|0;g=c[p>>2]|0;q=a+12|0;r=a+16|0;if((g|0)!=((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,154)|0,35007)|0,29707)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((d|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,155)|0,35007)|0,29792)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((f|0)>(d|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,156)|0,35007)|0,29879)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(f|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29906)|0,29635)|0,35e3)|0,157)|0,35007)|0,29947)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}j=a+24|0;c[o>>2]=-1;sl(j,f,o);k=a+36|0;c[o>>2]=-1;sl(k,f,o);l=a+48|0;Vk(l,f);n=c[l>>2]|0;m=a+52|0;tl(n,(c[m>>2]|0)-n>>2,0);n=a+8|0;g=-1;i=0;while(1){if((i|0)>=(c[n>>2]|0))break;h=c[l>>2]|0;ul(h,(c[m>>2]|0)-h>>2,c[p>>2]|0,c[a>>2]|0);h=vl(a,k,b,d,e,f,c[l>>2]|0,c[p>>2]|0)|0;if(h>>>0>>0){wl(j,k);xl(c[q>>2]|0,c[l>>2]|0,c[p>>2]|0);g=h}i=i+1|0}if((c[p>>2]|0)==((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){zb=s;return}else{s=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,187)|0,35007)|0,29707)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(o,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(o);QE(s,r)|0;ME(s)|0;ua()}}function Xk(a){a=a|0;return a+24|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){pl(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;ql(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;ml(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[g>>2]=f+4;nl(a,d);ol(d);zb=h;return}}function _k(a){a=a|0;return a+104|0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0>>0){hl(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);il(a,d);jl(d)}zb=f;return}function al(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;kl(b+4|0,e,96);return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=gl(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;hl(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;il(a,d);jl(d);zb=h;return}}function cl(a){a=a|0;dl(a);return}function dl(a){a=a|0;var b=0;el(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function el(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;fl(b+8|0);Pf(b,24);b=a}return}function fl(a){a=a|0;Xj(a+4|0);return}function gl(a){a=a|0;return 1073741823}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function jl(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c|0)|0;return}function ll(a){a=a|0;return 1073741823}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function ql(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)rl(a,b)}}else rl(a,b);return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+(b<<2)}else Cl(a,b-f|0,d);return}function tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a:do if((b|0)>=1){c[a>>2]=d;e=1;while(1){if((e|0)==(b|0))break a;f=d+1|0;c[a+(e<<2)>>2]=f;e=e+1|0;d=f}}while(0);return}function ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){if((f|0)>=(d|0))break;i=a+(f<<2)|0;g=a+(((Bl(e)|0)%(b|0)|0)<<2)|0;h=c[i>>2]|0;c[i>>2]=c[g>>2];c[g>>2]=h;f=f+1|0}return}function vl(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;a=o;if(((c[b+4>>2]|0)-(c[b>>2]|0)>>2|0)!=(g|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29635)|0,35e3)|0,198)|0,35007)|0,29967)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((e|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,199)|0,35007)|0,29792)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(e|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,200)|0,35007)|0,29879)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29996)|0,29635)|0,35e3)|0,201)|0,35007)|0,30035)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}k=0;m=0;while(1){if((m|0)>=(g|0))break;n=f+(m<<2)|0;l=0;a=-1;while(1){if((l|0)==(i|0))break;e=h+(l<<2)|0;j=yl(d+((c[n>>2]|0)*96|0)|0,d+((c[f+(c[e>>2]<<2)>>2]|0)*96|0)|0)|0;if(j>>>0>>0){c[(c[b>>2]|0)+(m<<2)>>2]=c[e>>2];a=j}l=l+1|0}k=a+k|0;m=m+1|0}zb=o;return k|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function xl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function yl(a,b){a=a|0;b=b|0;return zl(a,b)|0}function zl(a,b){a=a|0;b=b|0;var d=0;d=Al(c[a>>2]|0,c[b>>2]|0)|0;d=(Al(c[a+4>>2]|0,c[b+4>>2]|0)|0)+d|0;d=d+(Al(c[a+8>>2]|0,c[b+8>>2]|0)|0)|0;d=d+(Al(c[a+12>>2]|0,c[b+12>>2]|0)|0)|0;d=d+(Al(c[a+16>>2]|0,c[b+16>>2]|0)|0)|0;d=d+(Al(c[a+20>>2]|0,c[b+20>>2]|0)|0)|0;d=d+(Al(c[a+24>>2]|0,c[b+24>>2]|0)|0)|0;d=d+(Al(c[a+28>>2]|0,c[b+28>>2]|0)|0)|0;d=d+(Al(c[a+32>>2]|0,c[b+32>>2]|0)|0)|0;d=d+(Al(c[a+36>>2]|0,c[b+36>>2]|0)|0)|0;d=d+(Al(c[a+40>>2]|0,c[b+40>>2]|0)|0)|0;d=d+(Al(c[a+44>>2]|0,c[b+44>>2]|0)|0)|0;d=d+(Al(c[a+48>>2]|0,c[b+48>>2]|0)|0)|0;d=d+(Al(c[a+52>>2]|0,c[b+52>>2]|0)|0)|0;d=d+(Al(c[a+56>>2]|0,c[b+56>>2]|0)|0)|0;d=d+(Al(c[a+60>>2]|0,c[b+60>>2]|0)|0)|0;d=d+(Al(c[a+64>>2]|0,c[b+64>>2]|0)|0)|0;d=d+(Al(c[a+68>>2]|0,c[b+68>>2]|0)|0)|0;d=d+(Al(c[a+72>>2]|0,c[b+72>>2]|0)|0)|0;d=d+(Al(c[a+76>>2]|0,c[b+76>>2]|0)|0)|0;d=d+(Al(c[a+80>>2]|0,c[b+80>>2]|0)|0)|0;d=d+(Al(c[a+84>>2]|0,c[b+84>>2]|0)|0)|0;d=d+(Al(c[a+88>>2]|0,c[b+88>>2]|0)|0)|0;return d+(Al(c[a+92>>2]|0,c[b+92>>2]|0)|0)|0}function Al(a,b){a=a|0;b=b|0;b=b^a;b=b-(b>>>1&1431655765)|0;b=(b>>>2&858993459)+(b&858993459)|0;return (B((b>>>4)+b&252645135,16843009)|0)>>>24|0}function Bl(a){a=a|0;var b=0;b=((c[a>>2]|0)*214013|0)+2531011|0;c[a>>2]=b;return b>>>16&32767|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;h=k;i=a+8|0;j=a+4|0;e=c[j>>2]|0;g=e;do if((c[i>>2]|0)-e>>2>>>0>>0){e=(e-(c[a>>2]|0)>>2)+b|0;f=ll(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;l=(c[i>>2]|0)-g|0;i=l>>1;ml(h,l>>2>>>0>>1>>>0?(i>>>0>>0?e:i):f,(c[j>>2]|0)-g>>2,a+8|0);Dl(h,b,d);nl(a,h);ol(h);break}}else{e=b;f=g;while(1){c[f>>2]=c[d>>2];e=e+-1|0;if(!e)break;else f=f+4|0}c[j>>2]=g+(b<<2)}while(0);zb=k;return}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+8|0;e=c[f>>2]|0;a=b;g=e;while(1){c[g>>2]=c[d>>2];a=a+-1|0;if(!a)break;else g=g+4|0}c[f>>2]=e+(b<<2);return}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ll(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;ml(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);Gl(f,b);nl(a,f);ol(f);break}}else Fl(a,b);while(0);zb=i;return}function Fl(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Gl(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Hl(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Il(a,b){a=a|0;b=b|0;aP(a|0,0,b|0)|0;return}function Jl(a,b){a=a|0;b=b|0;var d=0;if((ll(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Kl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;Vk(a+12|0,b);return}function Ll(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ml(a){a=a|0;return a+60|0}function Nl(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Ol(a,b);Pl(a,b)}return}function Ol(a,b){a=a|0;b=b|0;var d=0;if((ug(a)|0)>>>0>>0)EO(a);if(b>>>0>214748364){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*20|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*20|0);return}}function Pl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ql(b){b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;return}function Rl(a,b){a=a|0;b=b|0;return}function Sl(a){a=a|0;Tl(a+36|0);Ul(a+8|0);return}function Tl(a){a=a|0;var b=0;Vl(a+84|0);Xj(a+72|0);Wl(a+12|0);b=a+8|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Qk(a);SA(a)}return}function Ul(a){a=a|0;Nf(a+16|0);Mf(a+4|0);return}function Vl(a){a=a|0;Xl(a);return}function Wl(a){a=a|0;Xj(a+48|0);Xj(a+36|0);Xj(a+24|0);Xj(a+12|0);return}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-8|0;Yl(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Yl(a){a=a|0;return}function Zl(a){a=a|0;ZN(a);SA(a);return}function _l(a){a=a|0;a=c[a+12>>2]|0;if(a|0){Sl(a);SA(a)}return}function $l(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==30447?a+12|0:0)|0}function am(a){a=a|0;Pf(a,16);return}function bm(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function cm(a){a=a|0;var b=0,d=0;c[a>>2]=1234;c[a+4>>2]=0;c[a+8>>2]=0;b=a+12|0;dm(b,a);d=a+72|0;c[a+100>>2]=0;c[a+104>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[a+108>>2]=16;Kl(b,8);Ll(b,1);return}function dm(a,b){a=a|0;b=b|0;c[a>>2]=b;a=a+4|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function em(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+32|0;m=l+24|0;j=l+12|0;k=l+16|0;n=l+8|0;i=l;c[j>>2]=h;h=tB(148)|0;tk(h);c[n>>2]=0;c[m>>2]=c[n>>2];uk(k,h,m);vk(c[k>>2]|0,f);wk(c[k>>2]|0,g);fm(zk(c[k>>2]|0)|0,96);g=gm(zk(c[k>>2]|0)|0)|0;f=b+4|0;hm(g,((c[f>>2]|0)-(c[b>>2]|0)|0)/20|0);g=gm(zk(c[k>>2]|0)|0)|0;if((g|0)!=(b|0))im(g,c[b>>2]|0,c[f>>2]|0);g=Kk(zk(c[k>>2]|0)|0)|0;f=d+4|0;jm(g,(c[f>>2]|0)-(c[d>>2]|0)|0);g=Kk(zk(c[k>>2]|0)|0)|0;if((g|0)!=(d|0))km(g,c[d>>2]|0,c[f>>2]|0);Bk(c[k>>2]|0);f=c[c[a>>2]>>2]|0;c[i>>2]=c[k>>2];g=c[k+4>>2]|0;c[i+4>>2]=g;if(g|0){n=g+4|0;c[n>>2]=(c[n>>2]|0)+1}lm(f,i,c[j>>2]|0);Rj(i);f=mm((c[a>>2]|0)+4|0,j)|0;if((f|0)!=(e|0))nm(f,c[e>>2]|0,c[e+4>>2]|0);Rj(k);zb=l;return}function fm(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gm(a){a=a|0;return a+16|0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/20|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*20|0)|0;while(1){if((d|0)==(a|0))break;f=d+-20|0;Of(f);d=f}c[g>>2]=a}}else Cm(a,b-e|0);return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b;l=(d-e|0)/20|0;f=a+8|0;i=c[a>>2]|0;g=i;do if(l>>>0>(((c[f>>2]|0)-i|0)/20|0)>>>0){Bm(a);e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=((c[f>>2]|0)-(c[a>>2]|0)|0)/20|0;k=j<<1;Ol(a,j>>>0>>1>>>0?(k>>>0>>0?l:k):e);Am(a,b,d,l);break}}else{k=a+4|0;j=((c[k>>2]|0)-i|0)/20|0;h=l>>>0>j>>>0;j=h?b+(j*20|0)|0:d;e=j-e|0;if(e|0)$O(i|0,b|0,e|0)|0;f=g+(((e|0)/20|0)*20|0)|0;if(h){Am(a,j,d,l-(((c[k>>2]|0)-(c[a>>2]|0)|0)/20|0)|0);break}e=c[k>>2]|0;while(1){if((e|0)==(f|0))break;l=e+-20|0;Of(l);e=l}c[k>>2]=f}while(0);return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+b}else xm(a,b-e|0);return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b;k=d-i|0;f=a+8|0;e=c[a>>2]|0;j=e;do if(k>>>0>((c[f>>2]|0)-e|0)>>>0){vm(a);e=mg(a)|0;if(e>>>0>>0)EO(a);else{i=(c[f>>2]|0)-(c[a>>2]|0)|0;j=i<<1;wm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);um(a,b,d,k);break}}else{h=a+4|0;g=(c[h>>2]|0)-e|0;f=k>>>0>g>>>0;g=f?b+g|0:d;e=g-i|0;if(e|0)$O(j|0,b|0,e|0)|0;if(f){um(a,g,d,k-(c[h>>2]|0)+(c[a>>2]|0)|0);break}else{c[h>>2]=j+e;break}}while(0);return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+4|0;e=i;c[e>>2]=d;a=a+72|0;if(ok(a,e)|0){i=O(16)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;gO(h,29085,Yf(29085)|0);mj(i,h);Q(i|0,13208,5)}f=Ck(a,e)|0;g=c[b>>2]|0;c[h>>2]=g;e=h+4|0;a=c[b+4>>2]|0;c[e>>2]=a;if(!a){d=e;a=0}else{d=a+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;a=c[e>>2]|0}c[h>>2]=c[f>>2];c[f>>2]=g;b=f+4|0;c[d>>2]=c[b>>2];c[b>>2]=a;Rj(h);zb=i;return}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){rm(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;sm(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b;k=(d-e|0)/12|0;f=a+8|0;j=c[a>>2]|0;i=j;do if(k>>>0>(((c[f>>2]|0)-j|0)/12|0)>>>0){pm(a);e=qg(a)|0;if(e>>>0>>0)EO(a);else{i=((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0;j=i<<1;qm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);om(a,b,d,k);break}}else{f=a+4|0;h=((c[f>>2]|0)-j|0)/12|0;g=k>>>0>h>>>0;h=g?b+(h*12|0)|0:d;e=h-e|0;if(e|0)$O(j|0,b|0,e|0)|0;if(g){om(a,h,d,k-(((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0)|0);break}else{c[f>>2]=i+(((e|0)/12|0)*12|0);break}}while(0);return}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(((a>>>0)/12|0)*12|0)}return}function pm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function qm(a,b){a=a|0;b=b|0;var d=0;if((qg(a)|0)>>>0>>0)EO(a);if(b>>>0>357913941){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*12|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*12|0);return}}function rm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function sm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)tm(a,b)}}else tm(a,b);return}function tm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a}return}function vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function wm(a,b){a=a|0;b=b|0;var d=0;if((mg(a)|0)>>>0>>0)EO(a);else{d=tB(b)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+b;return}}function xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if(((c[g>>2]|0)-d|0)>>>0>>0){d=d-(c[a>>2]|0)+b|0;e=mg(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k<<1;ng(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j|0,a+8|0);zm(f,b);og(a,f);pg(f);break}}else ym(a,b);while(0);zb=i;return}function ym(b,d){b=b|0;d=d|0;var e=0;e=b+4|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function zm(b,d){b=b|0;d=d|0;var e=0;e=b+8|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Am(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=a+4|0;while(1){if((b|0)==(d|0))break;e=c[a>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[a>>2]=(c[a>>2]|0)+20;b=b+20|0}return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;d=c[a>>2]|0;f=a+8|0;Pf(d,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/20|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/20|0)+b|0;e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/20|0;g=k<<1;vg(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/20|0,a+8|0);Dm(f,b);wg(a,f);xg(f);break}}else Pl(a,b);while(0);zb=i;return}function Dm(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Em(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+32|0;g=f;kq(g,b,1,d,e,d,1);e=Fm(c[c[a>>2]>>2]|0,g)|0;rq(g);zb=f;return e|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=zb;zb=zb+32|0;d=f;e=a+92|0;g=pk(e)|0;if(!(((c[g+4>>2]|0)!=(c[g>>2]|0)?(g=pk(e)|0,g=Ng(c[g>>2]|0)|0,(g|0)==(Ng(b)|0)):0)?(g=pk(e)|0,g=Og(c[g>>2]|0)|0,(g|0)==(Og(b)|0)):0)){g=Ng(b)|0;g=qk(g,Og(b)|0,8)|0;h=Ng(b)|0;$i(e,h,Og(b)|0,g)}Bq(d,29103);if(Sh(d)|0)ij(e,b);Cq(d);h=Gm(a,e)|0;zb=f;return h|0}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+64|0;e=k+16|0;j=k;g=k+56|0;h=k+48|0;i=b+160|0;l=rk(i)|0;f=Ah(d)|0;if(!((l|0)==(Ng(c[f>>2]|0)|0)?(f=sk(i)|0,l=Ah(d)|0,(f|0)==(Og(c[l>>2]|0)|0)):0))zh(i,d);f=b+64|0;m=tB(148)|0;tk(m);c[h>>2]=0;c[e>>2]=c[h>>2];uk(g,m,e);m=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=m;m=g+4|0;l=b+68|0;h=c[m>>2]|0;c[m>>2]=c[l>>2];c[l>>2]=h;Rj(g);l=c[f>>2]|0;h=Ah(d)|0;vk(l,Ng(c[h>>2]|0)|0);h=c[f>>2]|0;l=Ah(d)|0;wk(h,Og(c[l>>2]|0)|0);Bq(e,29117);if(Sh(e)|0)xk(c[f>>2]|0,d,i,b+316|0);Cq(e);m=yk()|0;Zp(e);i=(a[e+11>>0]|0)<0?c[e>>2]|0:e;l=Ak(zk(c[f>>2]|0)|0)|0;c[j>>2]=35129;c[j+4>>2]=i;c[j+8>>2]=30646;c[j+12>>2]=l;uq(m,8,30602,j);jO(e);m=Hm(b,c[f>>2]|0)|0;zb=k;return m|0}function Hm(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=zb;zb=zb+144|0;s=D+104|0;w=D;x=D+72|0;y=D+40|0;z=b+12|0;A=b+16|0;c[A>>2]=c[z>>2];B=b+24|0;c[B>>2]=-1;k=Jm(Im(d)|0)|0;l=b+8|0;m=b+636|0;n=b+652|0;o=s+4|0;p=s+8|0;q=b+788|0;r=x+4|0;t=x+8|0;u=b+4|0;v=b+28|0;e=b+80|0;while(1){e=c[e>>2]|0;if(!e)break;Bq(s,30936);do if(Sh(s)|0){E=(a[l>>0]|0)==0;g=Im(d)|0;j=e;h=j+12|0;i=zk(c[h>>2]|0)|0;if(E){E=Mm(m,g,i)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}else{E=Lm(m,g,i,Km(c[h>>2]|0)|0)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}Cq(s)}else{j=e;h=j+12|0;C=9}while(0);do if((C|0)==9){C=0;Cq(s);i=gm(zk(c[h>>2]|0)|0)|0;Bq(s,30953);if(Sh(s)|0){G=Nm(m)|0;F=Om(d)|0;E=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,G,F,E,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(s);break}}else g=-1;Cq(s);c[s>>2]=0;c[o>>2]=0;c[p>>2]=0;Bq(w,30970);if(Sh(w)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(w);Bq(x,30993);if(Sh(x)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0)Cq(x);else{Cq(x);c[x>>2]=0;c[r>>2]=0;c[t>>2]=0;Bq(y,31017);if(Sh(y)|0?(Tm(x,w,k,i,s,+f[u>>2]),(c[r>>2]|0)-(c[x>>2]|0)>>3>>>0<(c[b>>2]|0)>>>0):0)Cq(y);else C=20;do if((C|0)==20){C=0;Cq(y);Bq(y,31034);if(Sh(y)|0?(G=Im(d)|0,G=Um(m,G,zk(c[h>>2]|0)|0,w,10.0)|0,G>>>0<(c[b>>2]|0)>>>0):0){Cq(y);break}Cq(y);Bq(y,31051);if(Sh(y)|0){E=Nm(m)|0;F=Om(d)|0;G=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,E,F,G,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(y);break}}Cq(y);Bq(y,31068);if(Sh(y)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(y);Bq(y,31091);if(Sh(y)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0){Cq(y);break}Cq(y);c[r>>2]=c[x>>2];Bq(y,31115);if(Sh(y)|0)Tm(x,w,k,i,s,+f[u>>2]);Cq(y);G=(c[r>>2]|0)-(c[x>>2]|0)>>3;if(G>>>0>=(c[b>>2]|0)>>>0?G>>>0>(c[A>>2]|0)-(c[z>>2]|0)>>3>>>0:0){Vm(v,w);Wm(z,x);c[B>>2]=c[j+8>>2]}}while(0);Sj(x)}Sj(s)}while(0)}zb=D;return (c[B>>2]|0)>-1|0}function Im(a){a=a|0;return a+8|0}function Jm(a){a=a|0;return a+16|0}function Km(a){a=a|0;return a+36|0} +function Wu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=v+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){u=c[e>>2]|0;c[u+20>>2]=25;Sb[c[u>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[v+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[v+24+(g<<2)>>2]=0;c[v+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[v+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}u=v+20|0;if((c[u>>2]|0)==-1)return 1;p=c[e+432>>2]|0;q=e+368|0;if((c[q>>2]|0)<=0)return 1;r=e+436|0;s=v+188|0;o=0;a:while(1){t=c[f+(o<<2)>>2]|0;l=c[e+372+(o<<2)>>2]|0;n=c[e+344+(l<<2)>>2]|0;j=c[n+20>>2]|0;h=v+60+(j<<2)|0;k=v+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[v+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768){r=26;break a}h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=v+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[t>>1]=g;b:do if(c[r>>2]|0){m=c[n+24>>2]|0;l=v+124+(m<<2)|0;m=e+264+m|0;g=0;while(1){h=(c[l>>2]|0)+(g*3|0)|0;if(Xu(e,h)|0)break b;j=g+1|0;if(!(Xu(e,h+1|0)|0)){i=h;g=j;while(1){if((g|0)>=(c[r>>2]|0)){r=42;break a}h=i+3|0;j=g+1|0;if(!(Xu(e,i+4|0)|0)){i=h;g=j}else break}}k=Xu(e,s)|0;h=h+2|0;i=Xu(e,h)|0;if(i){if(Xu(e,h)|0){i=i<<1;h=(c[l>>2]|0)+((g|0)<(d[m>>0]|0|0)?189:217)|0;if(!(Xu(e,h)|0))g=i;else{g=i;do{g=g<<1;if((g|0)==32768){r=49;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}}else g=i;i=h+14|0;h=g>>1;if(h)do{n=(Xu(e,i)|0)==0;g=(n?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[t+(c[p+(j<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535;if((j|0)<(c[r>>2]|0))g=j;else break}}while(0);o=o+1|0;if((o|0)>=(c[q>>2]|0)){r=56;break}}if((r|0)==26){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==42){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==49){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==56)return 1;return 0}function Xu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b+468>>2]|0;m=g+16|0;f=c[m>>2]|0;k=g+20|0;if((f|0)<32768){h=b+440|0;j=b+24|0;i=g+12|0;f=c[k>>2]|0;while(1){g=f+-1|0;c[k>>2]=g;if((f|0)<1){if(!(c[h>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;l=a[l>>0]|0;f=l&255;a:do if(l<<24>>24==-1){b:while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;f=a[l>>0]|0;switch(f<<24>>24){case 0:{f=255;break a}case -1:break;default:break b}}c[h>>2]=f&255;f=0}while(0);g=c[k>>2]|0}else f=0;c[i>>2]=c[i>>2]<<8|f;f=g+8|0;c[k>>2]=f;if((g|0)<-8){f=g+9|0;c[k>>2]=f;if(!f){c[m>>2]=32768;g=0}else g=f}else g=f}f=c[m>>2]<<1;c[m>>2]=f;if((f|0)<32768)f=g;else break}}else{i=g+12|0;g=c[k>>2]|0}j=d[e>>0]|0;b=c[3360+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;h=f-l|0;c[m>>2]=h;f=h<>2]|0;if((g|0)>=(f|0)){c[i>>2]=g-f;c[m>>2]=l;f=j&128;if((h|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((h|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((h|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function Yu(a){a=a|0;var d=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;n=c[a+472>>2]|0;o=a+36|0;if((c[o>>2]|0)<=0)return;r=a+72|0;l=0;m=c[a+216>>2]|0;i=0;j=0;while(1){d=c[m+36>>2]|0;h=m+40|0;a:do switch((d<<8)+(c[h>>2]|0)|0){case 257:{d=0;k=13;break}case 514:{d=0;k=14;break}case 771:{d=0;k=15;break}case 1028:{d=0;k=16;break}case 1285:{d=0;k=17;break}case 1542:{d=0;k=18;break}case 1799:{d=0;k=19;break}case 2313:{d=0;k=20;break}case 2570:{d=0;k=21;break}case 2827:{d=0;k=22;break}case 3084:{d=0;k=23;break}case 3341:{d=0;k=24;break}case 3598:{d=0;k=25;break}case 3855:{d=0;k=26;break}case 4112:{d=0;k=27;break}case 4104:{d=0;k=28;break}case 3591:{d=0;k=29;break}case 3078:{d=0;k=30;break}case 2565:{d=0;k=31;break}case 2052:{d=0;k=32;break}case 1539:{d=0;k=33;break}case 1026:{d=0;k=34;break}case 513:{d=0;k=35;break}case 2064:{d=0;k=36;break}case 1806:{d=0;k=37;break}case 1548:{d=0;k=38;break}case 1290:{d=0;k=39;break}case 1032:{d=0;k=40;break}case 774:{d=0;k=41;break}case 516:{d=0;k=42;break}case 258:{d=0;k=43;break}case 2056:{d=c[r>>2]|0;switch(d|0){case 0:{k=44;break a}case 1:{k=45;break a}case 2:{k=46;break a}default:{d=c[a>>2]|0;c[d+20>>2]=49;Sb[c[d>>2]&255](a);d=i;k=j;break a}}}default:{k=c[a>>2]|0;c[k+20>>2]=7;c[k+24>>2]=d;c[(c[a>>2]|0)+28>>2]=c[h>>2];Sb[c[c[a>>2]>>2]&255](a);d=i;k=j}}while(0);c[n+4+(l<<2)>>2]=k;b:do if((c[m+52>>2]|0?(p=n+44+(l<<2)|0,(c[p>>2]|0)!=(d|0)):0)?(q=c[m+80>>2]|0,q|0):0){c[p>>2]=d;switch(d|0){case 0:{i=c[m+84>>2]|0;h=0;do{c[i+(h<<2)>>2]=e[q+(h<<1)>>1];h=h+1|0}while((h|0)!=64);break}case 1:{i=c[m+84>>2]|0;h=0;do{j=(B(b[5248+(h<<1)>>1]|0,e[q+(h<<1)>>1]|0)|0)+2048>>12;c[i+(h<<2)>>2]=j;h=h+1|0}while((h|0)!=64);break}case 2:{j=c[m+84>>2]|0;h=0;i=0;while(1){t=+g[5376+(h<<3)>>3];f[j+(i<<2)>>2]=t*+(e[q+(i<<1)>>1]|0)*.125;s=i|1;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.387039845*.125;s=s+1|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.306562965*.125;s=i|3;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.175875602*.125;u=s+1|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.125;u=s+2|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.785694958*.125;s=s+3|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.5411961*.125;s=i|7;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.275899379*.125;h=h+1|0;if((h|0)==8)break;else i=i+8|0}break}default:{u=c[a>>2]|0;c[u+20>>2]=49;Sb[c[u>>2]&255](a);break b}}}while(0);l=l+1|0;if((l|0)>=(c[o>>2]|0))break;else{m=m+88|0;i=d;j=k}}return}function Zu(d,e,g,h,i){d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=zb;zb=zb+256|0;j=q;o=c[d+336>>2]|0;n=j;m=c[e+84>>2]|0;l=8;while(1){e=b[g+16>>1]|0;d=b[g+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[g+48>>1]|0)==0?(b[g+64>>1]|0)==0:0)?(b[g+80>>1]|0)==0:0)?(b[g+96>>1]|0)==0:0)?(b[g+112>>1]|0)==0:0){k=+f[m>>2]*+(b[g>>1]|0);f[n>>2]=k;f[n+32>>2]=k;f[n+64>>2]=k;f[n+96>>2]=k;f[n+128>>2]=k;f[n+160>>2]=k;f[n+192>>2]=k;d=56}else{d=0;p=9}else p=9;if((p|0)==9){p=0;r=+f[m>>2]*+(b[g>>1]|0);x=+f[m+64>>2]*+(d<<16>>16);w=+f[m+128>>2]*+(b[g+64>>1]|0);t=+f[m+192>>2]*+(b[g+96>>1]|0);v=r+w;w=r-w;r=x+t;t=(x-t)*1.4142135381698608-r;x=v+r;r=v-r;v=w+t;t=w-t;w=+f[m+32>>2]*+(e<<16>>16);u=+f[m+96>>2]*+(b[g+48>>1]|0);z=+f[m+160>>2]*+(b[g+80>>1]|0);k=+f[m+224>>2]*+(b[g+112>>1]|0);s=u+z;u=z-u;z=w+k;k=w-k;w=s+z;y=(u+k)*1.8477590084075928;u=y-u*2.613126039505005-w;s=(z-s)*1.4142135381698608-u;k=y-k*1.0823922157287598-s;f[n>>2]=x+w;f[n+224>>2]=x-w;f[n+32>>2]=v+u;f[n+192>>2]=v-u;f[n+64>>2]=t+s;f[n+160>>2]=t-s;f[n+96>>2]=r+k;k=r-k;d=32}f[n+(d<<2)>>2]=k;if(l>>>0>1){n=n+4|0;m=m+4|0;g=g+2|0;l=l+-1|0}else break}e=o+-384|0;d=0;while(1){p=(c[h+(d<<2)>>2]|0)+i|0;s=+f[j>>2]+512.5;t=+f[j+16>>2];u=s+t;t=s-t;s=+f[j+8>>2];w=+f[j+24>>2];y=s+w;w=(s-w)*1.4142135381698608-y;s=u+y;y=u-y;u=t+w;w=t-w;t=+f[j+20>>2];v=+f[j+12>>2];x=t+v;v=t-v;t=+f[j+4>>2];z=+f[j+28>>2];k=t+z;z=t-z;t=x+k;r=(v+z)*1.8477590084075928;v=r-v*2.613126039505005-t;x=(k-x)*1.4142135381698608-v;z=r-z*1.0823922157287598-x;a[p>>0]=a[e+(~~(s+t)&1023)>>0]|0;a[p+7>>0]=a[e+(~~(s-t)&1023)>>0]|0;a[p+1>>0]=a[e+(~~(u+v)&1023)>>0]|0;a[p+6>>0]=a[e+(~~(u-v)&1023)>>0]|0;a[p+2>>0]=a[e+(~~(w+x)&1023)>>0]|0;a[p+5>>0]=a[e+(~~(w-x)&1023)>>0]|0;a[p+3>>0]=a[e+(~~(y+z)&1023)>>0]|0;a[p+4>>0]=a[e+(~~(y-z)&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else j=j+32|0}zb=q;return}function _u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(c[j>>2]|0,b[f>>1]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;p=B(c[j>>2]|0,b[f>>1]|0)|0;u=B(c[j+64>>2]|0,d<<16>>16)|0;t=B(c[j+128>>2]|0,b[f+64>>1]|0)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;s=t+p|0;t=p-t|0;p=q+u|0;q=((u-q|0)*362>>8)-p|0;u=p+s|0;p=s-p|0;s=q+t|0;q=t-q|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;w=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;e=w+r|0;r=w-r|0;w=d+t|0;d=t-d|0;t=w+e|0;v=(d+r|0)*473>>8;r=v-(r*669>>8)-t|0;e=((w-e|0)*362>>8)-r|0;d=v-(d*277>>8)-e|0;c[k>>2]=t+u;c[k+224>>2]=u-t;c[k+32>>2]=r+s;c[k+192>>2]=s-r;c[k+64>>2]=e+q;c[k+160>>2]=q-e;c[k+96>>2]=d+p;d=p-d|0;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){w=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=w;aP(f+1|0,w|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;w=c[e+16>>2]|0;r=w+i|0;w=i-w|0;t=c[e+24>>2]|0;v=t+d|0;t=((d-t|0)*362>>8)-v|0;p=v+r|0;v=r-v|0;r=t+w|0;t=w-t|0;w=c[e+20>>2]|0;s=c[e+12>>2]|0;u=s+w|0;s=w-s|0;w=c[e+28>>2]|0;i=w+j|0;w=j-w|0;q=i+u|0;m=(w+s|0)*473>>8;s=m-(s*669>>8)-q|0;u=((i-u|0)*362>>8)-s|0;w=m-(w*277>>8)-u|0;a[f>>0]=a[l+((q+p|0)>>>5&1023)>>0]|0;a[f+7>>0]=a[l+((p-q|0)>>>5&1023)>>0]|0;a[f+1>>0]=a[l+((s+r|0)>>>5&1023)>>0]|0;a[f+6>>0]=a[l+((r-s|0)>>>5&1023)>>0]|0;a[f+2>>0]=a[l+((u+t|0)>>>5&1023)>>0]|0;a[f+5>>0]=a[l+((t-u|0)>>>5&1023)>>0]|0;a[f+3>>0]=a[l+((w+v|0)>>>5&1023)>>0]|0;a[f+4>>0]=a[l+((v-w|0)>>>5&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function $u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;f=B(c[i+32>>2]|0,b[f+16>>1]|0)|0;a[(c[g>>2]|0)+h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+32|0;j=i;d=c[d+336>>2]|0;k=c[e+84>>2]|0;n=B(c[k>>2]|0,b[f>>1]|0)|0;q=B(c[k+64>>2]|0,b[f+32>>1]|0)|0;e=q+n<<13;q=n-q<<13;n=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;l=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;p=(l+n|0)*4433|0;n=p+(n*6270|0)|0;l=p+(B(l,-15137)|0)|0;p=n+e|0;c[j>>2]=p;c[j+24>>2]=e-n;n=l+q|0;c[j+8>>2]=n;l=q-l|0;c[j+16>>2]=l;q=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[k+68>>2]|0,b[f+34>>1]|0)|0;m=e+q<<13;e=q-e<<13;q=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;k=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;o=(k+q|0)*4433|0;f=o+(q*6270|0)|0;k=o+(B(k,-15137)|0)|0;o=f+m|0;c[j+4>>2]=o;f=m-f|0;c[j+28>>2]=f;m=k+e|0;c[j+12>>2]=m;k=e-k|0;c[j+20>>2]=k;e=d+-384|0;d=(c[g>>2]|0)+h|0;p=p+33587200|0;a[d>>0]=a[e+((p+o|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;n=n+33587200|0;a[d>>0]=a[e+((n+m|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=l+33587200|0;a[d>>0]=a[e+((l+k|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((l-k|0)>>>16&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;g=(c[j+24>>2]|0)+33587200|0;a[h>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g-f|0)>>>16&1023)>>0]|0;zb=i;return}function bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=zb;zb=zb+80|0;j=i;m=c[d+336>>2]|0;k=c[e+84>>2]|0;t=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;q=B((b[f+64>>1]|0)*5793|0,c[k+128>>2]|0)|0;r=q+t|0;t=(B(q,-2)|0)+t>>11;q=B((b[f+32>>1]|0)*10033|0,c[k+64>>2]|0)|0;l=q+r|0;q=r-q|0;r=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;s=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;e=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;n=(e+r|0)*2998|0;d=n+(s+r<<13)|0;n=n+(e-s<<13)|0;e=r-s-e<<2;c[j>>2]=d+l>>11;c[j+60>>2]=l-d>>11;d=j+12|0;c[d>>2]=e+t;c[j+48>>2]=t-e;c[j+24>>2]=n+q>>11;c[j+36>>2]=q-n>>11;n=j+4|0;q=B(b[f+2>>1]<<13,c[k+4>>2]|0)|0|1024;e=B((b[f+66>>1]|0)*5793|0,c[k+132>>2]|0)|0;t=e+q|0;q=(B(e,-2)|0)+q>>11;e=B((b[f+34>>1]|0)*10033|0,c[k+68>>2]|0)|0;l=e+t|0;e=t-e|0;t=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;s=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;r=B(c[k+164>>2]|0,b[f+82>>1]|0)|0;o=(r+t|0)*2998|0;p=o+(s+t<<13)|0;o=o+(r-s<<13)|0;r=t-s-r<<2;c[n>>2]=p+l>>11;c[j+64>>2]=l-p>>11;c[j+16>>2]=r+q;c[j+52>>2]=q-r;c[j+28>>2]=o+e>>11;c[j+40>>2]=e-o>>11;o=B(b[f+4>>1]<<13,c[k+8>>2]|0)|0|1024;e=B((b[f+68>>1]|0)*5793|0,c[k+136>>2]|0)|0;r=e+o|0;o=(B(e,-2)|0)+o>>11;e=B((b[f+36>>1]|0)*10033|0,c[k+72>>2]|0)|0;q=e+r|0;e=r-e|0;r=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;p=B(c[k+104>>2]|0,b[f+52>>1]|0)|0;k=B(c[k+168>>2]|0,b[f+84>>1]|0)|0;f=(k+r|0)*2998|0;l=f+(p+r<<13)|0;f=f+(k-p<<13)|0;k=r-p-k<<2;p=l+q>>11;c[j+8>>2]=p;c[j+68>>2]=q-l>>11;l=k+o|0;c[j+20>>2]=l;c[j+56>>2]=o-k;k=f+e>>11;c[j+32>>2]=k;c[j+44>>2]=e-f>>11;f=m+-384|0;e=(c[g>>2]|0)+h|0;m=(c[j>>2]<<13)+134348800|0;o=m+(p*5793|0)|0;m=(B(p,-11586)|0)+m|0;n=(c[n>>2]|0)*10033|0;a[e>>0]=a[f+((o+n|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(m>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;d=(c[d>>2]<<13)+134348800|0;m=d+(l*5793|0)|0;d=(B(l,-11586)|0)+d|0;l=(c[j+16>>2]|0)*10033|0;a[e>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;d=(c[j+24>>2]<<13)+134348800|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+28>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;d=(c[j+36>>2]<<13)+134348800|0;k=c[j+44>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+40>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+16>>2]|0)+h|0;d=(c[j+48>>2]<<13)+134348800|0;k=c[j+56>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+52>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;h=(c[g+20>>2]|0)+h|0;g=(c[j+60>>2]<<13)+134348800|0;e=c[j+68>>2]|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+64>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+128|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=4;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+16>>2]=d;c[k+32>>2]=d;c[k+48>>2]=d;c[k+64>>2]=d;c[k+80>>2]=d;c[k+96>>2]=d;e=28}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+112>>2]=u-t>>11;c[k+16>>2]=r+s>>11;c[k+96>>2]=s-r>>11;c[k+32>>2]=e+q>>11;c[k+80>>2]=q-e>>11;c[k+48>>2]=d+p>>11;d=p-d>>11;e=16}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}u=l+-384|0;x=(c[g>>2]|0)+h|0;s=(c[m>>2]|0)+16400|0;v=c[m+8>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+4>>2]|0;t=c[m+12>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+4>>2]|0)+h|0;t=(c[m+16>>2]|0)+16400|0;v=c[m+24>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+20>>2]|0;w=c[m+28>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+8>>2]|0)+h|0;w=(c[m+32>>2]|0)+16400|0;v=c[m+40>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+36>>2]|0;s=c[m+44>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+12>>2]|0)+h|0;s=(c[m+48>>2]|0)+16400|0;v=c[m+56>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+52>>2]|0;t=c[m+60>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+16>>2]|0)+h|0;t=(c[m+64>>2]|0)+16400|0;v=c[m+72>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+68>>2]|0;w=c[m+76>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+20>>2]|0)+h|0;w=(c[m+80>>2]|0)+16400|0;v=c[m+88>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+84>>2]|0;s=c[m+92>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+24>>2]|0)+h|0;s=(c[m+96>>2]|0)+16400|0;v=c[m+104>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+100>>2]|0;t=c[m+108>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+28>>2]|0)+h|0;t=(c[m+112>>2]|0)+16400|0;v=c[m+120>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+116>>2]|0;w=c[m+124>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;zb=o;return}function dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+180>>2]=v-u>>11;c[k+20>>2]=s+t>>11;c[k+160>>2]=t-s>>11;c[k+40>>2]=q+r;c[k+140>>2]=r-q;c[k+60>>2]=o+p>>11;c[k+120>>2]=p-o>>11;c[k+80>>2]=f+n>>11;c[k+100>>2]=n-f>>11;e=e+1|0;if((e|0)==5)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;v=c[i+16>>2]|0;w=(v+x|0)*6476|0;v=x-v|0;x=(v*2896|0)+y|0;u=x+w|0;w=x-w|0;y=(B(v,-11584)|0)+y|0;v=c[i+4>>2]|0;x=c[i+12>>2]|0;t=(x+v|0)*6810|0;v=t+(v*4209|0)|0;x=t+(B(x,-17828)|0)|0;a[z>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+(y>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+20|0}zb=m;return}function ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+264>>2]=x-w>>11;c[k+24>>2]=u+v>>11;c[k+240>>2]=v-u>>11;c[k+48>>2]=s+t>>11;c[k+216>>2]=t-s>>11;c[k+72>>2]=q+r>>11;c[k+192>>2]=r-q>>11;c[k+96>>2]=o+p>>11;c[k+168>>2]=p-o>>11;c[k+120>>2]=f+n>>11;c[k+144>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*5793|0;t=z+x|0;x=z-x-x|0;z=(c[i+8>>2]|0)*10033|0;v=t+z|0;z=t-z|0;t=c[i+4>>2]|0;u=c[i+12>>2]|0;y=c[i+20>>2]|0;A=(y+t|0)*2998|0;w=A+(u+t<<13)|0;A=A+(y-u<<13)|0;y=t-u-y<<13;a[C>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+24|0}zb=m;return}function fv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+400|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+364>>2]=z-y>>11;c[k+28>>2]=w+x>>11;c[k+336>>2]=x-w>>11;c[k+56>>2]=u+v>>11;c[k+308>>2]=v-u>>11;c[k+84>>2]=s+t;c[k+280>>2]=t-s;c[k+112>>2]=q+r>>11;c[k+252>>2]=r-q>>11;c[k+140>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+168>>2]=f+n>>11;c[k+196>>2]=n-f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;t=c[i+8>>2]|0;C=c[i+16>>2]|0;v=c[i+24>>2]|0;u=(C-v|0)*7223|0;A=(t-C|0)*2578|0;x=(B(C,-15083)|0)+E+A+u|0;D=v+t|0;z=(D*10438|0)+E|0;v=u+(B(v,-637)|0)+z|0;z=A+(B(t,-20239)|0)+z|0;t=c[i+4>>2]|0;A=c[i+12>>2]|0;u=c[i+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=B(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[F>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((((C-D|0)*11585|0)+E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+28|0}zb=m;return}function gv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;H=(c[i>>2]|0)+16400|0;I=c[i+16>>2]|0;D=H+I<<13;I=H-I<<13;H=c[i+8>>2]|0;F=c[i+24>>2]|0;A=(F+H|0)*4433|0;H=A+(H*6270|0)|0;F=A+(B(F,-15137)|0)|0;A=H+D|0;H=D-H|0;D=F+I|0;F=I-F|0;I=c[i+28>>2]|0;x=c[i+20>>2]|0;z=c[i+12>>2]|0;C=c[i+4>>2]|0;E=z+I|0;G=C+x|0;y=(G+E|0)*9633|0;E=y+(B(E,-16069)|0)|0;G=y+(B(G,-3196)|0)|0;y=B(C+I|0,-7373)|0;I=y+(I*2446|0)+E|0;C=y+(C*12299|0)+G|0;y=B(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;E=y+(z*25172|0)+E|0;a[J>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function hv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;h=(c[g>>2]|0)+h|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;g=B(c[i+4>>2]|0,b[f+2>>1]|0)|0;a[h>>0]=a[d+((g+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-g|0)>>>3&1023)>>0]|0;return}function iv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+32|0;r=i;p=c[d+336>>2]|0;k=c[e+84>>2]|0;d=B(c[k>>2]|0,b[f>>1]|0)|0;e=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;q=e+d|0;c[r>>2]=q;j=r+16|0;c[j>>2]=d-e;e=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;d=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;o=d+e|0;c[r+4>>2]=o;d=e-d|0;c[r+20>>2]=d;e=B(c[k+8>>2]|0,b[f+4>>1]|0)|0;l=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;n=l+e|0;c[r+8>>2]=n;l=e-l|0;c[r+24>>2]=l;e=B(c[k+12>>2]|0,b[f+6>>1]|0)|0;k=B(c[k+44>>2]|0,b[f+22>>1]|0)|0;m=k+e|0;c[r+12>>2]=m;k=e-k|0;c[r+28>>2]=k;e=p+-384|0;f=(c[g>>2]|0)+h|0;q=q+4100|0;p=q+n<<13;n=q-n<<13;q=(m+o|0)*4433|0;o=q+(o*6270|0)|0;m=q+(B(m,-15137)|0)|0;a[f>>0]=a[e+((o+p|0)>>>16&1023)>>0]|0;a[f+3>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;a[f+1>>0]=a[e+((m+n|0)>>>16&1023)>>0]|0;a[f+2>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;f=(c[j>>2]|0)+4100|0;j=f+l<<13;f=f-l<<13;g=(k+d|0)*4433|0;d=g+(d*6270|0)|0;g=g+(B(k,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>16&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>16&1023)>>0]|0;zb=i;return}function jv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=zb;zb=zb+80|0;k=i;q=c[d+336>>2]|0;e=c[e+84>>2]|0;s=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;n=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;l=n+s|0;s=(B(n,-2)|0)+s|0;n=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;c[k>>2]=n+l>>11;c[k+48>>2]=l-n>>11;n=k+24|0;c[n>>2]=s>>11;s=k+4|0;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;r=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;c[s>>2]=r+p>>11;c[k+52>>2]=p-r>>11;c[k+28>>2]=l>>11;l=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;r=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;c[k+8>>2]=r+p>>11;c[k+56>>2]=p-r>>11;c[k+32>>2]=l>>11;l=B(b[f+6>>1]<<13,c[e+12>>2]|0)|0|1024;r=B((b[f+38>>1]|0)*5793|0,c[e+76>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+22>>1]|0)*10033|0,c[e+44>>2]|0)|0;c[k+12>>2]=r+p>>11;c[k+60>>2]=p-r>>11;c[k+36>>2]=l>>11;l=B(b[f+8>>1]<<13,c[e+16>>2]|0)|0|1024;r=B((b[f+40>>1]|0)*5793|0,c[e+80>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+24>>1]|0)*10033|0,c[e+48>>2]|0)|0;c[k+16>>2]=r+p>>11;c[k+64>>2]=p-r>>11;c[k+40>>2]=l>>11;l=B(b[f+10>>1]<<13,c[e+20>>2]|0)|0|1024;r=B((b[f+42>>1]|0)*5793|0,c[e+84>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;e=B((b[f+26>>1]|0)*10033|0,c[e+52>>2]|0)|0;c[k+20>>2]=e+p>>11;c[k+68>>2]=p-e>>11;l=l>>11;c[k+44>>2]=l;e=q+-384|0;f=(c[g>>2]|0)+h|0;q=(c[k>>2]<<13)+134348800|0;p=(c[k+16>>2]|0)*5793|0;r=q+p|0;p=q-p-p|0;q=(c[k+8>>2]|0)*10033|0;d=r+q|0;q=r-q|0;s=c[s>>2]|0;r=c[k+12>>2]|0;o=c[k+20>>2]|0;m=(o+s|0)*2998|0;j=m+(r+s<<13)|0;m=m+(o-r<<13)|0;o=s-r-o<<13;a[f>>0]=a[e+((j+d|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((d-j|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((o+p|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((p-o|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((m+q|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((q-m|0)>>>18&1023)>>0]|0;f=(c[g+4>>2]|0)+h|0;n=(c[n>>2]<<13)+134348800|0;m=(c[k+40>>2]|0)*5793|0;q=n+m|0;m=n-m-m|0;n=(c[k+32>>2]|0)*10033|0;o=q+n|0;n=q-n|0;q=c[k+28>>2]|0;p=c[k+36>>2]|0;j=(l+q|0)*2998|0;d=j+(p+q<<13)|0;j=j+(l-p<<13)|0;l=q-p-l<<13;a[f>>0]=a[e+((d+o|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((o-d|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((j+n|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((n-j|0)>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;f=(c[k+48>>2]<<13)+134348800|0;j=(c[k+64>>2]|0)*5793|0;n=f+j|0;j=f-j-j|0;f=(c[k+56>>2]|0)*10033|0;l=n+f|0;f=n-f|0;n=c[k+52>>2]|0;m=c[k+60>>2]|0;d=c[k+68>>2]|0;g=(d+n|0)*2998|0;k=g+(m+n<<13)|0;g=g+(d-m<<13)|0;d=n-m-d<<13;a[h>>0]=a[e+((k+l|0)>>>18&1023)>>0]|0;a[h+5>>0]=a[e+((l-k|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function kv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=zb;zb=zb+128|0;j=i;d=c[d+336>>2]|0;m=c[e+84>>2]|0;l=B(c[m>>2]|0,b[f>>1]|0)|0;e=B(c[m+64>>2]|0,b[f+32>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+32>>2]|0,b[f+16>>1]|0)|0;k=B(c[m+96>>2]|0,b[f+48>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j>>2]=l+n;c[j+96>>2]=n-l;c[j+32>>2]=k+e;c[j+64>>2]=e-k;k=B(c[m+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[m+68>>2]|0,b[f+34>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+36>>2]|0,b[f+18>>1]|0)|0;n=B(c[m+100>>2]|0,b[f+50>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+4>>2]=k+l;c[j+100>>2]=l-k;c[j+36>>2]=n+e;c[j+68>>2]=e-n;n=B(c[m+8>>2]|0,b[f+4>>1]|0)|0;e=B(c[m+72>>2]|0,b[f+36>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[m+104>>2]|0,b[f+52>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+8>>2]=n+k;c[j+104>>2]=k-n;c[j+40>>2]=l+e;c[j+72>>2]=e-l;l=B(c[m+12>>2]|0,b[f+6>>1]|0)|0;e=B(c[m+76>>2]|0,b[f+38>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+44>>2]|0,b[f+22>>1]|0)|0;k=B(c[m+108>>2]|0,b[f+54>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+12>>2]=l+n;c[j+108>>2]=n-l;c[j+44>>2]=k+e;c[j+76>>2]=e-k;k=B(c[m+16>>2]|0,b[f+8>>1]|0)|0;e=B(c[m+80>>2]|0,b[f+40>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+48>>2]|0,b[f+24>>1]|0)|0;n=B(c[m+112>>2]|0,b[f+56>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+16>>2]=k+l;c[j+112>>2]=l-k;c[j+48>>2]=n+e;c[j+80>>2]=e-n;n=B(c[m+20>>2]|0,b[f+10>>1]|0)|0;e=B(c[m+84>>2]|0,b[f+42>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+52>>2]|0,b[f+26>>1]|0)|0;l=B(c[m+116>>2]|0,b[f+58>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+20>>2]=n+k;c[j+116>>2]=k-n;c[j+52>>2]=l+e;c[j+84>>2]=e-l;l=B(c[m+24>>2]|0,b[f+12>>1]|0)|0;e=B(c[m+88>>2]|0,b[f+44>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+56>>2]|0,b[f+28>>1]|0)|0;k=B(c[m+120>>2]|0,b[f+60>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+24>>2]=l+n;c[j+120>>2]=n-l;c[j+56>>2]=k+e;c[j+88>>2]=e-k;k=B(c[m+28>>2]|0,b[f+14>>1]|0)|0;e=B(c[m+92>>2]|0,b[f+46>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+60>>2]|0,b[f+30>>1]|0)|0;f=B(c[m+124>>2]|0,b[f+62>>1]|0)|0;m=((f+k|0)*4433|0)+1024|0;k=m+(k*6270|0)>>11;f=m+(B(f,-15137)|0)>>11;c[j+28>>2]=k+l;c[j+124>>2]=l-k;c[j+60>>2]=f+e;c[j+92>>2]=e-f;f=d+-384|0;d=j;e=0;while(1){o=(c[g+(e<<2)>>2]|0)+h|0;m=(c[d>>2]|0)+16400|0;n=c[d+16>>2]|0;p=m+n<<13;n=m-n<<13;m=c[d+8>>2]|0;k=c[d+24>>2]|0;r=(k+m|0)*4433|0;m=r+(m*6270|0)|0;k=r+(B(k,-15137)|0)|0;r=m+p|0;m=p-m|0;p=k+n|0;k=n-k|0;n=c[d+28>>2]|0;u=c[d+20>>2]|0;s=c[d+12>>2]|0;q=c[d+4>>2]|0;j=s+n|0;l=q+u|0;t=(l+j|0)*9633|0;j=t+(B(j,-16069)|0)|0;l=t+(B(l,-3196)|0)|0;t=B(q+n|0,-7373)|0;n=t+(n*2446|0)+j|0;q=t+(q*12299|0)+l|0;t=B(s+u|0,-20995)|0;l=t+(u*16819|0)+l|0;j=t+(s*25172|0)+j|0;a[o>>0]=a[f+((q+r|0)>>>18&1023)>>0]|0;a[o+7>>0]=a[f+((r-q|0)>>>18&1023)>>0]|0;a[o+1>>0]=a[f+((j+p|0)>>>18&1023)>>0]|0;a[o+6>>0]=a[f+((p-j|0)>>>18&1023)>>0]|0;a[o+2>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[o+5>>0]=a[f+((k-l|0)>>>18&1023)>>0]|0;a[o+3>>0]=a[f+((n+m|0)>>>18&1023)>>0]|0;a[o+4>>0]=a[f+((m-n|0)>>>18&1023)>>0]|0;e=e+1|0;if((e|0)==4)break;else d=d+32|0}zb=i;return}function lv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=zb;zb=zb+160|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=(p+n|0)*6476|0;p=n-p|0;n=(p*2896|0)+f|0;q=n+o|0;o=n-o|0;f=(B(p,-11584)|0)+f|0;p=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;n=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;r=(n+p|0)*6810|0;p=r+(p*4209|0)|0;n=r+(B(n,-17828)|0)|0;c[k>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+32>>2]=n+o>>11;c[k+96>>2]=o-n>>11;c[k+64>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){r=(c[g+(d<<2)>>2]|0)+h|0;p=(c[i>>2]<<13)+134348800|0;k=c[i+16>>2]|0;j=p+(k*9373|0)|0;u=p+(B(k,-3580)|0)|0;k=p+(B(k,-11586)|0)|0;p=c[i+8>>2]|0;n=c[i+24>>2]|0;t=(n+p|0)*6810|0;p=t+(p*4209|0)|0;n=t+(B(n,-17828)|0)|0;t=p+j|0;p=j-p|0;j=n+u|0;n=u-n|0;u=c[i+4>>2]|0;v=c[i+12>>2]|0;l=c[i+20>>2]<<13;f=c[i+28>>2]|0;o=f+v|0;f=v-f|0;v=f*2531|0;w=o*7791|0;q=v+l|0;s=w+(u*11443|0)+q|0;q=(u*1812|0)-w+q|0;o=o*4815|0;v=l-v-(f<<12)|0;l=(u-f<<13)-l|0;f=(u*10323|0)-o-v|0;o=v+((u*5260|0)-o)|0;a[r>>0]=a[e+((s+t|0)>>>18&1023)>>0]|0;a[r+9>>0]=a[e+((t-s|0)>>>18&1023)>>0]|0;a[r+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[r+8>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[r+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[r+7>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[r+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[r+6>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[r+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[r+5>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==5)break;else i=i+32|0}zb=m;return}function mv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+192|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+160>>2]=r-q>>11;c[k+32>>2]=o+p;c[k+128>>2]=p-o;c[k+64>>2]=f+n>>11;c[k+96>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*10033|0;w=r+x|0;x=r-x|0;k=c[i+8>>2]|0;n=c[i+24>>2]<<13;p=(k<<13)-n|0;j=p+r|0;p=r-p|0;r=n+(k*11190|0)|0;v=r+w|0;r=w-r|0;n=(k*2998|0)-n|0;k=n+x|0;n=x-n|0;x=c[i+4>>2]|0;w=c[i+12>>2]|0;q=c[i+20>>2]|0;f=c[i+28>>2]|0;z=w*10703|0;y=B(w,-4433)|0;l=q+x|0;s=(l+f|0)*7053|0;l=s+(l*2139|0)|0;u=z+(x*2295|0)+l|0;o=B(f+q|0,-8565)|0;l=(B(q,-12112)|0)+y+o+l|0;o=(f*12998|0)-z+s+o|0;s=y+(B(x,-5540)|0)+(B(f,-16244)|0)+s|0;f=x-f|0;q=w-q|0;w=(f+q|0)*4433|0;f=w+(f*6270|0)|0;q=w+(B(q,-15137)|0)|0;a[t>>0]=a[e+((u+v|0)>>>18&1023)>>0]|0;a[t+11>>0]=a[e+((v-u|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[t+10>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[t+9>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+8>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+7>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+6>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+32|0}zb=m;return}function nv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+224|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+192>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+160>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+96>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=c[i+16>>2]|0;k=r+(p*10438|0)|0;n=r+(p*2578|0)|0;w=r+(B(p,-7223)|0)|0;p=r+(B(p,-11586)|0)|0;r=c[i+8>>2]|0;j=c[i+24>>2]|0;t=(j+r|0)*9058|0;v=t+(r*2237|0)|0;t=t+(B(j,-14084)|0)|0;r=(B(j,-11295)|0)+(r*5027|0)|0;j=v+k|0;v=k-v|0;k=t+n|0;t=n-t|0;n=r+w|0;r=w-r|0;w=c[i+4>>2]|0;A=c[i+12>>2]|0;y=c[i+20>>2]|0;q=c[i+28>>2]<<13;s=y+w|0;l=(A+w|0)*10935|0;C=s*9810|0;f=l+(B(w,-9232)|0)+C+q|0;s=s*6164|0;z=w-A|0;u=(z*3826|0)-q|0;w=s+(B(w,-8693)|0)+u|0;o=(B(y+A|0,-1297)|0)-q|0;l=l+(B(A,-3474)|0)+o|0;o=C+(B(y,-19447)|0)+o|0;C=(y-A|0)*11512|0;s=q+(B(y,-13850)|0)+C+s|0;u=C+(A*5529|0)+u|0;q=(z-y<<13)+q|0;a[x>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+32|0}zb=m;return}function ov(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;o=zb;zb=zb+256|0;i=o;m=c[d+336>>2]|0;l=i;k=c[e+84>>2]|0;j=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[k>>2]|0)|0;c[l>>2]=d;c[l+32>>2]=d;c[l+64>>2]=d;c[l+96>>2]=d;c[l+128>>2]=d;c[l+160>>2]=d;c[l+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[k+128>>2]|0)|0;p=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[k+64>>2]|0,d<<16>>16)|0;q=B(c[k+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[k+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[k+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[l>>2]=t+u>>11;c[l+224>>2]=u-t>>11;c[l+32>>2]=r+s>>11;c[l+192>>2]=s-r>>11;c[l+64>>2]=e+q>>11;c[l+160>>2]=q-e>>11;c[l+96>>2]=d+p>>11;d=p-d>>11;e=32}c[l+(e<<2)>>2]=d;if(j>>>0>1){l=l+4|0;k=k+4|0;f=f+2|0;j=j+-1|0}else break}e=m+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;m=c[i+16>>2]|0;w=m*10703|0;m=m*4433|0;f=r+w|0;w=r-w|0;k=r+m|0;m=r-m|0;r=c[i+8>>2]|0;p=c[i+24>>2]|0;u=r-p|0;z=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=z+(r*7373|0)|0;r=u+(B(r,-4926)|0)|0;p=z+(B(p,-4176)|0)|0;z=v+f|0;v=f-v|0;f=t+k|0;t=k-t|0;k=r+m|0;r=m-r|0;m=p+w|0;p=w-p|0;w=c[i+4>>2]|0;u=c[i+12>>2]|0;C=c[i+20>>2]|0;E=c[i+28>>2]|0;A=C+w|0;j=(u+w|0)*11086|0;l=A*10217|0;s=(E+w|0)*8956|0;q=(w-E|0)*7350|0;A=A*5461|0;n=(w-u|0)*3363|0;y=j+(B(w,-18730)|0)+l+s|0;w=n+(B(w,-15038)|0)+A+q|0;H=(C+u|0)*1136|0;D=(C-u|0)*11529|0;F=E+u|0;G=B(F,-5461)|0;j=j+(u*589|0)+H+G|0;F=B(F,-10217)|0;u=n+(u*16154|0)+D+F|0;n=B(E+C|0,-11086)|0;l=H+(B(C,-9222)|0)+l+n|0;n=G+(E*8728|0)+s+n|0;s=(E-C|0)*3363|0;q=F+(E*25733|0)+q+s|0;s=D+(B(C,-6278)|0)+A+s|0;a[x>>0]=a[e+((y+z|0)>>>18&1023)>>0]|0;a[x+15>>0]=a[e+((z-y|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[x+14>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((n+m|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((m-n|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else i=i+32|0}zb=o;return}function pv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;D=(c[i>>2]<<13)+134348800|0;y=c[i+16>>2]|0;I=y*10703|0;y=y*4433|0;u=D+I|0;I=D-I|0;w=D+y|0;y=D-y|0;D=c[i+8>>2]|0;A=c[i+24>>2]|0;G=D-A|0;s=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;F=s+(D*7373|0)|0;D=G+(B(D,-4926)|0)|0;A=s+(B(A,-4176)|0)|0;s=H+u|0;H=u-H|0;u=F+w|0;F=w-F|0;w=D+y|0;D=y-D|0;y=A+I|0;A=I-A|0;I=c[i+4>>2]|0;G=c[i+12>>2]|0;q=c[i+20>>2]|0;o=c[i+28>>2]|0;r=q+I|0;v=(G+I|0)*11086|0;x=r*10217|0;E=(o+I|0)*8956|0;C=(I-o|0)*7350|0;r=r*5461|0;z=(I-G|0)*3363|0;t=v+(B(I,-18730)|0)+x+E|0;I=z+(B(I,-15038)|0)+r+C|0;k=(q+G|0)*1136|0;p=(q-G|0)*11529|0;n=o+G|0;l=B(n,-5461)|0;v=v+(G*589|0)+k+l|0;n=B(n,-10217)|0;G=z+(G*16154|0)+p+n|0;z=B(o+q|0,-11086)|0;x=k+(B(q,-9222)|0)+x+z|0;z=l+(o*8728|0)+E+z|0;E=(o-q|0)*3363|0;C=n+(o*25733|0)+C+E|0;E=p+(B(q,-6278)|0)+r+E|0;a[J>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[J+15>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[J+14>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[J+13>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[J+12>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+11>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+10>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+9>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+8>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function qv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+480|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;s=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;w=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;y=(B(t,-3580)|0)+f|0;D=(t*9373|0)+f|0;f=(B(t,-11586)|0)+f|0;t=s-w|0;w=w+s|0;E=w*10958|0;u=t*374|0;s=s*11795|0;A=u+E+D|0;u=s-E+u+y|0;E=w*4482|0;o=B(t,-3271)|0;q=D-E+o|0;o=E-s+o+y|0;w=w*6476|0;s=t*2896|0;y=s+w+y|0;s=D-w+s|0;w=f+(t*5792|0)|0;f=(B(t,-11584)|0)+f|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B((b[d+80>>1]|0)*10033|0,c[j+160>>2]|0)|0;C=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;r=D-C|0;F=(r+t|0)*6810|0;x=F+(t*4209|0)|0;r=F+(B(r,-17828)|0)|0;F=B(D,-6810)|0;D=B(D,-11018)|0;v=t-C|0;n=(v*11522|0)+E|0;z=(C*20131|0)-D+n|0;n=F+(B(t,-9113)|0)+n|0;v=(v*10033|0)-E|0;p=(C+t|0)*4712|0;t=F+(t*3897|0)-E+p|0;p=E+D+(B(C,-7121)|0)+p|0;c[k>>2]=z+A>>11;c[k+448>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+416>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+384>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+352>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+320>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+288>>2]=q-p>>11;c[k+192>>2]=n+o>>11;c[k+256>>2]=o-n>>11;c[k+224>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;t=c[i+16>>2]|0;w=c[i+24>>2]|0;r=(B(w,-3580)|0)+E|0;n=(w*9373|0)+E|0;E=(B(w,-11586)|0)+E|0;w=x-t|0;t=t+x|0;l=t*10958|0;v=w*374|0;x=x*11795|0;p=v+l+n|0;v=x-l+v+r|0;l=t*4482|0;C=B(w,-3271)|0;z=n-l+C|0;C=l-x+C+r|0;t=t*6476|0;x=w*2896|0;r=x+t+r|0;x=n-t+x|0;t=E+(w*5792|0)|0;E=(B(w,-11584)|0)+E|0;w=c[i+4>>2]|0;n=c[i+12>>2]|0;l=(c[i+20>>2]|0)*10033|0;o=c[i+28>>2]|0;y=n-o|0;k=(y+w|0)*6810|0;s=k+(w*4209|0)|0;y=k+(B(y,-17828)|0)|0;k=B(n,-6810)|0;n=B(n,-11018)|0;u=w-o|0;D=(u*11522|0)+l|0;q=(o*20131|0)-n+D|0;D=k+(B(w,-9113)|0)+D|0;u=(u*10033|0)-l|0;A=(o+w|0)*4712|0;w=k+(w*3897|0)-l+A|0;A=l+n+(B(o,-7121)|0)+A|0;a[F>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[F+14>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+(E>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==15)break;else i=i+32|0}zb=m;return}function rv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+448|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+416>>2]=z-y>>11;c[k+32>>2]=w+x>>11;c[k+384>>2]=x-w>>11;c[k+64>>2]=u+v>>11;c[k+352>>2]=v-u>>11;c[k+96>>2]=s+t;c[k+320>>2]=t-s;c[k+128>>2]=q+r>>11;c[k+288>>2]=r-q>>11;c[k+160>>2]=o+p>>11;c[k+256>>2]=p-o>>11;c[k+192>>2]=f+n>>11;c[k+224>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;w=c[i+16>>2]|0;s=y+(w*10438|0)|0;u=y+(w*2578|0)|0;E=y+(B(w,-7223)|0)|0;w=y+(B(w,-11586)|0)|0;y=c[i+8>>2]|0;q=c[i+24>>2]|0;A=(q+y|0)*9058|0;D=A+(y*2237|0)|0;A=A+(B(q,-14084)|0)|0;y=(B(q,-11295)|0)+(y*5027|0)|0;q=D+s|0;D=s-D|0;s=A+u|0;A=u-A|0;u=y+E|0;y=E-y|0;E=c[i+4>>2]|0;n=c[i+12>>2]|0;p=c[i+20>>2]|0;x=c[i+28>>2]<<13;z=p+E|0;t=(n+E|0)*10935|0;l=z*9810|0;r=t+(B(E,-9232)|0)+l+x|0;z=z*6164|0;o=E-n|0;C=(o*3826|0)-x|0;E=z+(B(E,-8693)|0)+C|0;v=(B(p+n|0,-1297)|0)-x|0;t=t+(B(n,-3474)|0)+v|0;v=l+(B(p,-19447)|0)+v|0;l=(p-n|0)*11512|0;z=x+(B(p,-13850)|0)+l+z|0;C=l+(n*5529|0)+C|0;x=(o-p<<13)+x|0;a[F>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+32|0}zb=m;return}function sv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;m=zb;zb=zb+416|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;s=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;E=o+s|0;o=s-o|0;s=E*9465|0;w=(o*793|0)+f|0;A=s+(n*11249|0)+w|0;w=(n*4108|0)-s+w|0;s=E*2592|0;q=(o*3989|0)+f|0;y=(n*8672|0)-s+q|0;q=s+(B(n,-10258)|0)+q|0;E=E*3570|0;s=f+(B(o,-7678)|0)|0;u=(B(n,-1396)|0)-E+s|0;s=E+(B(n,-6581)|0)+s|0;E=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;r=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;C=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;p=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=(r+E|0)*10832|0;v=(C+E|0)*9534|0;D=p+E|0;F=D*7682|0;z=x+(B(E,-16549)|0)+v+F|0;H=B(C+r|0,-2773)|0;G=B(p+r|0,-9534)|0;x=x+(r*6859|0)+H+G|0;t=B(p+C|0,-5384)|0;v=H+(B(C,-12879)|0)+v+t|0;t=G+(p*18068|0)+F+t|0;D=(D*2773|0)+((C-r|0)*7682|0)|0;r=D+(E*2611|0)+(B(r,-3818)|0)|0;p=D+(C*3150|0)+(B(p,-14273)|0)|0;c[k>>2]=z+A>>11;c[k+384>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+352>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+192>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){H=(c[g+(d<<2)>>2]|0)+h|0;G=(c[i>>2]<<13)+134348800|0;F=c[i+8>>2]|0;z=c[i+16>>2]|0;E=c[i+24>>2]|0;o=E+z|0;E=z-E|0;z=o*9465|0;v=(E*793|0)+G|0;r=z+(F*11249|0)+v|0;v=(F*4108|0)-z+v|0;z=o*2592|0;C=(E*3989|0)+G|0;t=(F*8672|0)-z+C|0;C=z+(B(F,-10258)|0)+C|0;o=o*3570|0;z=G+(B(E,-7678)|0)|0;x=(B(F,-1396)|0)-o+z|0;z=o+(B(F,-6581)|0)+z|0;o=c[i+4>>2]|0;A=c[i+12>>2]|0;q=c[i+20>>2]|0;D=c[i+28>>2]|0;u=(A+o|0)*10832|0;w=(q+o|0)*9534|0;p=D+o|0;n=p*7682|0;s=u+(B(o,-16549)|0)+w+n|0;k=B(q+A|0,-2773)|0;l=B(D+A|0,-9534)|0;u=u+(A*6859|0)+k+l|0;y=B(D+q|0,-5384)|0;w=k+(B(q,-12879)|0)+w+y|0;y=l+(D*18068|0)+n+y|0;p=(p*2773|0)+((q-A|0)*7682|0)|0;A=p+(o*2611|0)+(B(A,-3818)|0)|0;D=p+(q*3150|0)+(B(D,-14273)|0)|0;a[H>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[H+12>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[H+1>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[H+11>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[H+2>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[H+10>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[H+3>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[H+9>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[H+4>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[H+8>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[H+5>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[H+7>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[H+6>>0]=a[e+((((E-F|0)*11585|0)+G|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==13)break;else i=i+32|0}zb=m;return}function tv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+384|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+352>>2]=x-w>>11;c[k+32>>2]=u+v>>11;c[k+320>>2]=v-u>>11;c[k+64>>2]=s+t>>11;c[k+288>>2]=t-s>>11;c[k+96>>2]=q+r>>11;c[k+256>>2]=r-q>>11;c[k+128>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+160>>2]=f+n>>11;c[k+192>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;n=(c[i+16>>2]|0)*10033|0;o=z+n|0;n=z-n|0;t=c[i+8>>2]|0;v=c[i+24>>2]<<13;x=(t<<13)-v|0;r=x+z|0;x=z-x|0;z=v+(t*11190|0)|0;p=z+o|0;z=o-z|0;v=(t*2998|0)-v|0;t=v+n|0;v=n-v|0;n=c[i+4>>2]|0;o=c[i+12>>2]|0;y=c[i+20>>2]|0;s=c[i+28>>2]|0;k=o*10703|0;l=B(o,-4433)|0;u=y+n|0;A=(u+s|0)*7053|0;u=A+(u*2139|0)|0;q=k+(n*2295|0)+u|0;w=B(s+y|0,-8565)|0;u=(B(y,-12112)|0)+l+w+u|0;w=(s*12998|0)-k+A+w|0;A=l+(B(n,-5540)|0)+(B(s,-16244)|0)+A|0;s=n-s|0;y=o-y|0;o=(s+y|0)*4433|0;s=o+(s*6270|0)|0;y=o+(B(y,-15137)|0)|0;a[C>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[C+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+32|0}zb=m;return}function uv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+352|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;y=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;s=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;q=(z-y|0)*3529|0;o=s+y|0;v=o-z|0;x=(v*11116|0)+f|0;w=x+((z-s|0)*20862|0)|0;u=w+(B(z,-14924)|0)+q|0;w=w+(s*17333|0)|0;q=x+q+(B(y,-12399)|0)|0;o=x+(B(o,-9467)|0)|0;s=o+(B(s,-6461)|0)|0;o=(z*15929|0)+(B(y,-11395)|0)+o|0;f=(B(v,-11585)|0)+f|0;v=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;z=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y+v|0;n=(z+C+x|0)*3264|0;C=C*7274|0;r=(z+v|0)*5492|0;p=n+((x+v|0)*3e3|0)|0;v=C+(B(v,-7562)|0)+r+p|0;t=n+(B(z+y|0,-9527)|0)|0;r=r+(B(z,-9766)|0)+t|0;A=B(x+y|0,-14731)|0;t=C+(y*16984|0)+A+t|0;p=A+(x*17223|0)+p|0;n=(z*8203|0)+(B(y,-12019)|0)+(B(x,-13802)|0)+n|0;c[k>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+32>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+64>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+96>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+128>>2]=n+o>>11;c[k+192>>2]=o-n>>11;c[k+160>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;A=(c[i>>2]<<13)+134348800|0;o=c[i+8>>2]|0;n=c[i+16>>2]|0;u=c[i+24>>2]|0;w=(n-o|0)*3529|0;y=u+o|0;r=y-n|0;p=(r*11116|0)+A|0;q=p+((n-u|0)*20862|0)|0;s=q+(B(n,-14924)|0)+w|0;q=q+(u*17333|0)|0;w=p+w+(B(o,-12399)|0)|0;y=p+(B(y,-9467)|0)|0;u=y+(B(u,-6461)|0)|0;y=(n*15929|0)+(B(o,-11395)|0)+y|0;A=(B(r,-11585)|0)+A|0;r=c[i+4>>2]|0;o=c[i+12>>2]|0;n=c[i+20>>2]|0;p=c[i+28>>2]|0;k=o+r|0;z=(k+n+p|0)*3264|0;k=k*7274|0;v=(n+r|0)*5492|0;x=z+((p+r|0)*3e3|0)|0;r=k+(B(r,-7562)|0)+v+x|0;t=z+(B(n+o|0,-9527)|0)|0;v=v+(B(n,-9766)|0)+t|0;l=B(p+o|0,-14731)|0;t=k+(o*16984|0)+l+t|0;x=l+(p*17223|0)+x|0;z=(n*8203|0)+(B(o,-12019)|0)+(B(p,-13802)|0)+z|0;a[C>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+(A>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==11)break;else i=i+32|0}zb=m;return}function vv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+320|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+288>>2]=v-u>>11;c[k+32>>2]=s+t>>11;c[k+256>>2]=t-s>>11;c[k+64>>2]=q+r;c[k+224>>2]=r-q;c[k+96>>2]=o+p>>11;c[k+192>>2]=p-o>>11;c[k+128>>2]=f+n>>11;c[k+160>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;x=(c[i>>2]<<13)+134348800|0;t=c[i+16>>2]|0;r=x+(t*9373|0)|0;o=x+(B(t,-3580)|0)|0;t=x+(B(t,-11586)|0)|0;x=c[i+8>>2]|0;v=c[i+24>>2]|0;p=(v+x|0)*6810|0;x=p+(x*4209|0)|0;v=p+(B(v,-17828)|0)|0;p=x+r|0;x=r-x|0;r=v+o|0;v=o-v|0;o=c[i+4>>2]|0;n=c[i+12>>2]|0;u=c[i+20>>2]<<13;s=c[i+28>>2]|0;w=s+n|0;s=n-s|0;n=s*2531|0;l=w*7791|0;y=n+u|0;q=l+(o*11443|0)+y|0;y=(o*1812|0)-l+y|0;w=w*4815|0;n=u-n-(s<<12)|0;u=(o-s<<13)-u|0;s=(o*10323|0)-w-n|0;w=n+((o*5260|0)-w)|0;a[z>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[z+9>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[z+8>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[z+7>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[z+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[z+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+32|0}zb=m;return}function wv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){q=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=B((b[d+96>>1]|0)*5793|0,c[j+192>>2]|0)|0;v=f+q|0;f=q-f-f|0;q=w-o|0;s=f+(q*5793|0)|0;f=(B(q,-11586)|0)+f|0;q=(o+w|0)*10887|0;w=w*8875|0;o=o*2012|0;u=q-o+v|0;q=v-q+w|0;o=v-w+o|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;r=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=B(B(b[d+48>>1]|0,-10033)|0,c[j+96>>2]|0)|0;p=(v+w|0)*7447|0;n=(r+w|0)*3962|0;t=p-x+n|0;y=(v-r|0)*11409|0;p=x-y+p|0;n=y+x+n|0;r=(w-v-r|0)*10033|0;c[k>>2]=t+u>>11;c[k+256>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+224>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+192>>2]=q-p>>11;c[k+96>>2]=n+o>>11;c[k+160>>2]=o-n>>11;c[k+128>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){y=(c[g+(d<<2)>>2]|0)+h|0;t=(c[i>>2]<<13)+134348800|0;n=c[i+8>>2]|0;v=c[i+16>>2]|0;x=(c[i+24>>2]|0)*5793|0;o=x+t|0;x=t-x-x|0;t=n-v|0;r=x+(t*5793|0)|0;x=(B(t,-11586)|0)+x|0;t=(v+n|0)*10887|0;n=n*8875|0;v=v*2012|0;p=t-v+o|0;t=o-t+n|0;v=o-n+v|0;n=c[i+4>>2]|0;o=c[i+20>>2]|0;s=c[i+28>>2]|0;l=B(c[i+12>>2]|0,-10033)|0;u=(o+n|0)*7447|0;w=(s+n|0)*3962|0;q=u-l+w|0;k=(o-s|0)*11409|0;u=l-k+u|0;w=k+l+w|0;s=(n-o-s|0)*10033|0;a[y>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[y+8>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[y+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[y+7>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[y+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[y+6>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[y+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[y+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[y+4>>0]=a[e+(x>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==9)break;else i=i+32|0}zb=m;return}function xv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+168>>2]=u-t>>11;c[k+28>>2]=r+s>>11;c[k+140>>2]=s-r>>11;c[k+56>>2]=p+q>>11;c[k+112>>2]=q-p>>11;c[k+84>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;w=(c[i>>2]<<13)+134348800|0;l=c[i+8>>2]|0;u=c[i+16>>2]|0;o=c[i+24>>2]|0;n=(u-o|0)*7223|0;t=(l-u|0)*2578|0;q=(B(u,-15083)|0)+w+t+n|0;v=o+l|0;s=(v*10438|0)+w|0;o=n+(B(o,-637)|0)+s|0;s=t+(B(l,-20239)|0)+s|0;l=c[i+4>>2]|0;t=c[i+12>>2]|0;n=c[i+20>>2]|0;k=(t+l|0)*7663|0;p=(l-t|0)*1395|0;t=B(n+t|0,-11295)|0;r=k+p+t|0;l=(n+l|0)*5027|0;p=k-p+l|0;t=l+(n*15326|0)+t|0;a[x>>0]=a[e+((p+o|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((o-p|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((((u-v|0)*11585|0)+w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+28|0}zb=m;return}function yv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=zb;zb=zb+144|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+120>>2]=r-q>>11;c[k+24>>2]=o+p;c[k+96>>2]=p-o;c[k+48>>2]=f+n>>11;c[k+72>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=(c[i+16>>2]|0)*5793|0;k=r+p|0;p=r-p-p|0;r=(c[i+8>>2]|0)*10033|0;n=k+r|0;r=k-r|0;k=c[i+4>>2]|0;l=c[i+12>>2]|0;q=c[i+20>>2]|0;s=(q+k|0)*2998|0;o=s+(l+k<<13)|0;s=s+(q-l<<13)|0;q=k-l-q<<13;a[t>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+24|0}zb=m;return}function zv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+112|0;l=i;d=c[d+336>>2]|0;o=c[e+84>>2]|0;n=B(b[f>>1]<<13,c[o>>2]|0)|0|1024;e=B(c[o+64>>2]|0,b[f+32>>1]|0)|0;j=B(c[o+128>>2]|0,b[f+64>>1]|0)|0;q=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+n|0;p=e+q|0;q=e-q|0;n=(B(j,-11584)|0)+n|0;j=B(c[o+32>>2]|0,b[f+16>>1]|0)|0;e=B(c[o+96>>2]|0,b[f+48>>1]|0)|0;m=(e+j|0)*6810|0;j=m+(j*4209|0)|0;e=m+(B(e,-17828)|0)|0;c[l>>2]=j+p>>11;c[l+80>>2]=p-j>>11;j=l+20|0;c[j>>2]=e+q>>11;c[l+60>>2]=q-e>>11;c[l+40>>2]=n>>11;n=l+4|0;e=B(b[f+2>>1]<<13,c[o+4>>2]|0)|0|1024;q=B(c[o+68>>2]|0,b[f+34>>1]|0)|0;p=B(c[o+132>>2]|0,b[f+66>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[o+100>>2]|0,b[f+50>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[n>>2]=p+k>>11;c[l+84>>2]=k-p>>11;c[l+24>>2]=q+m>>11;c[l+64>>2]=m-q>>11;c[l+44>>2]=e>>11;e=B(b[f+4>>1]<<13,c[o+8>>2]|0)|0|1024;q=B(c[o+72>>2]|0,b[f+36>>1]|0)|0;m=B(c[o+136>>2]|0,b[f+68>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+40>>2]|0,b[f+20>>1]|0)|0;q=B(c[o+104>>2]|0,b[f+52>>1]|0)|0;r=(q+m|0)*6810|0;m=r+(m*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+8>>2]=m+k>>11;c[l+88>>2]=k-m>>11;c[l+28>>2]=q+p>>11;c[l+68>>2]=p-q>>11;c[l+48>>2]=e>>11;e=B(b[f+6>>1]<<13,c[o+12>>2]|0)|0|1024;q=B(c[o+76>>2]|0,b[f+38>>1]|0)|0;p=B(c[o+140>>2]|0,b[f+70>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+44>>2]|0,b[f+22>>1]|0)|0;q=B(c[o+108>>2]|0,b[f+54>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+12>>2]=p+k>>11;c[l+92>>2]=k-p>>11;c[l+32>>2]=q+m>>11;c[l+72>>2]=m-q>>11;c[l+52>>2]=e>>11;e=B(b[f+8>>1]<<13,c[o+16>>2]|0)|0|1024;q=B(c[o+80>>2]|0,b[f+40>>1]|0)|0;m=B(c[o+144>>2]|0,b[f+72>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+48>>2]|0,b[f+24>>1]|0)|0;f=B(c[o+112>>2]|0,b[f+56>>1]|0)|0;o=(f+m|0)*6810|0;m=o+(m*4209|0)|0;f=o+(B(f,-17828)|0)|0;c[l+16>>2]=m+k>>11;c[l+96>>2]=k-m>>11;c[l+36>>2]=f+p>>11;c[l+76>>2]=p-f>>11;c[l+56>>2]=e>>11;f=d+-384|0;e=(c[g>>2]|0)+h|0;d=(c[l>>2]<<13)+134348800|0;p=c[l+8>>2]|0;m=c[l+16>>2]|0;k=(m+p|0)*6476|0;m=p-m|0;p=(m*2896|0)+d|0;o=p+k|0;k=p-k|0;d=(B(m,-11584)|0)+d|0;n=c[n>>2]|0;m=c[l+12>>2]|0;p=(m+n|0)*6810|0;n=p+(n*4209|0)|0;m=p+(B(m,-17828)|0)|0;a[e>>0]=a[f+((n+o|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((m+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-m|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;j=(c[j>>2]<<13)+134348800|0;d=c[l+28>>2]|0;m=c[l+36>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+24>>2]|0;d=c[l+32>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;j=(c[l+40>>2]<<13)+134348800|0;d=c[l+48>>2]|0;k=c[l+56>>2]|0;m=(k+d|0)*6476|0;k=d-k|0;d=(k*2896|0)+j|0;n=d+m|0;m=d-m|0;j=(B(k,-11584)|0)+j|0;k=c[l+44>>2]|0;d=c[l+52>>2]|0;o=(d+k|0)*6810|0;k=o+(k*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((k+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+m|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((m-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;j=(c[l+60>>2]<<13)+134348800|0;d=c[l+68>>2]|0;m=c[l+76>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+64>>2]|0;d=c[l+72>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;h=(c[g+16>>2]|0)+h|0;g=(c[l+80>>2]<<13)+134348800|0;e=c[l+88>>2]|0;j=c[l+96>>2]|0;d=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+g|0;k=e+d|0;d=e-d|0;g=(B(j,-11584)|0)+g|0;j=c[l+84>>2]|0;e=c[l+92>>2]|0;l=(e+j|0)*6810|0;j=l+(j*4209|0)|0;e=l+(B(e,-17828)|0)|0;a[h>>0]=a[f+((j+k|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[f+((k-j|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+((e+d|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+64|0;k=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;m=B(c[e>>2]|0,b[f>>1]|0)|0;j=B(c[e+64>>2]|0,b[f+32>>1]|0)|0;o=j+m<<2;j=m-j<<2;m=B(c[e+32>>2]|0,b[f+16>>1]|0)|0;n=B(c[e+96>>2]|0,b[f+48>>1]|0)|0;l=((n+m|0)*4433|0)+1024|0;m=l+(m*6270|0)>>11;n=l+(B(n,-15137)|0)>>11;c[k>>2]=m+o;c[k+48>>2]=o-m;m=k+16|0;c[m>>2]=n+j;c[k+32>>2]=j-n;n=k+4|0;j=B(c[e+4>>2]|0,b[f+2>>1]|0)|0;o=B(c[e+68>>2]|0,b[f+34>>1]|0)|0;l=o+j<<2;o=j-o<<2;j=B(c[e+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[e+100>>2]|0,b[f+50>>1]|0)|0;p=((q+j|0)*4433|0)+1024|0;j=p+(j*6270|0)>>11;q=p+(B(q,-15137)|0)>>11;c[n>>2]=j+l;c[k+52>>2]=l-j;c[k+20>>2]=q+o;c[k+36>>2]=o-q;q=B(c[e+8>>2]|0,b[f+4>>1]|0)|0;o=B(c[e+72>>2]|0,b[f+36>>1]|0)|0;j=o+q<<2;o=q-o<<2;q=B(c[e+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[e+104>>2]|0,b[f+52>>1]|0)|0;p=((l+q|0)*4433|0)+1024|0;q=p+(q*6270|0)>>11;l=p+(B(l,-15137)|0)>>11;p=q+j|0;c[k+8>>2]=p;c[k+56>>2]=j-q;c[k+24>>2]=l+o;c[k+40>>2]=o-l;l=B(c[e+12>>2]|0,b[f+6>>1]|0)|0;o=B(c[e+76>>2]|0,b[f+38>>1]|0)|0;q=o+l<<2;o=l-o<<2;l=B(c[e+44>>2]|0,b[f+22>>1]|0)|0;e=B(c[e+108>>2]|0,b[f+54>>1]|0)|0;j=((e+l|0)*4433|0)+1024|0;l=j+(l*6270|0)>>11;e=j+(B(e,-15137)|0)>>11;j=l+q|0;c[k+12>>2]=j;c[k+60>>2]=q-l;l=e+o|0;c[k+28>>2]=l;c[k+44>>2]=o-e;e=d+-384|0;d=(c[g>>2]|0)+h|0;f=(c[k>>2]|0)+16400|0;o=f+p<<13;f=f-p<<13;n=c[n>>2]|0;p=(j+n|0)*4433|0;n=p+(n*6270|0)|0;j=p+(B(j,-15137)|0)|0;a[d>>0]=a[e+((n+o|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((o-n|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;m=(c[m>>2]|0)+16400|0;j=c[k+24>>2]|0;f=m+j<<13;j=m-j<<13;m=c[k+20>>2]|0;n=(l+m|0)*4433|0;m=n+(m*6270|0)|0;l=n+(B(l,-15137)|0)|0;a[d>>0]=a[e+((m+f|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((f-m|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((l+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-l|0)>>>18&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=(c[k+32>>2]|0)+16400|0;j=c[k+40>>2]|0;m=l+j<<13;j=l-j<<13;l=c[k+36>>2]|0;f=c[k+44>>2]|0;n=(f+l|0)*4433|0;l=n+(l*6270|0)|0;f=n+(B(f,-15137)|0)|0;a[d>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;d=(c[k+48>>2]|0)+16400|0;f=c[k+56>>2]|0;j=d+f<<13;f=d-f<<13;d=c[k+52>>2]|0;g=c[k+60>>2]|0;k=(g+d|0)*4433|0;d=k+(d*6270|0)|0;g=k+(B(g,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function Bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+48|0;j=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;l=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;k=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;n=k+l|0;l=(B(k,-2)|0)+l|0;k=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;m=k+n>>11;c[j>>2]=m;c[j+24>>2]=n-k>>11;k=j+12|0;c[k>>2]=l>>11;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;n=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;q=n+l|0;l=(B(n,-2)|0)+l|0;n=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;o=n+q>>11;c[j+4>>2]=o;c[j+28>>2]=q-n>>11;l=l>>11;c[j+16>>2]=l;n=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;q=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=q+n|0;n=(B(q,-2)|0)+n|0;e=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;q=e+p>>11;c[j+8>>2]=q;e=p-e>>11;c[j+32>>2]=e;n=n>>11;c[j+20>>2]=n;f=d+-384|0;d=(c[g>>2]|0)+h|0;m=(m<<13)+134348800|0;p=m+(q*5793|0)|0;m=(B(q,-11586)|0)+m|0;o=o*10033|0;a[d>>0]=a[f+((p+o|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((p-o|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(m>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;k=(c[k>>2]<<13)+134348800|0;m=k+(n*5793|0)|0;k=(B(n,-11586)|0)+k|0;l=l*10033|0;a[d>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(k>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;g=(c[j+24>>2]<<13)+134348800|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+28>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;d=(c[d+336>>2]|0)+-384|0;j=c[e+84>>2]|0;i=B(c[j>>2]|0,b[f>>1]|0)|0;e=B(c[j+32>>2]|0,b[f+16>>1]|0)|0;i=i+4100|0;k=e+i|0;e=i-e|0;i=B(c[j+4>>2]|0,b[f+2>>1]|0)|0;f=B(c[j+36>>2]|0,b[f+18>>1]|0)|0;j=f+i|0;f=i-f|0;i=(c[g>>2]|0)+h|0;a[i>>0]=a[d+((j+k|0)>>>3&1023)>>0]|0;a[i+1>>0]=a[d+((k-j|0)>>>3&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;a[h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function Dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=(c[d+336>>2]|0)+-384+(((B(c[c[e+84>>2]>>2]|0,b[f>>1]|0)|0)+4100|0)>>>3&1023)|0;a[(c[g>>2]|0)+h>>0]=a[f>>0]|0;return}function Ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+224>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+192>>2]=s-r>>11;c[k+64>>2]=e+q>>11;c[k+160>>2]=q-e>>11;c[k+96>>2]=d+p>>11;d=p-d>>11;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){x=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=x;aP(f+1|0,x|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;x=c[e+16>>2]|0;s=x+i<<13;x=i-x<<13;u=c[e+24>>2]|0;q=(u+d|0)*4433|0;w=q+(d*6270|0)|0;u=q+(B(u,-15137)|0)|0;q=w+s|0;w=s-w|0;s=u+x|0;u=x-u|0;x=c[e+28>>2]|0;i=c[e+20>>2]|0;p=c[e+12>>2]|0;t=p+x|0;v=i+j|0;r=(t+v|0)*9633|0;t=r+(B(t,-16069)|0)|0;v=r+(B(v,-3196)|0)|0;r=B(x+j|0,-7373)|0;x=r+(x*2446|0)+t|0;r=r+(j*12299|0)+v|0;m=B(p+i|0,-20995)|0;v=m+(i*16819|0)+v|0;t=m+(p*25172|0)+t|0;a[f>>0]=a[l+((r+q|0)>>>18&1023)>>0]|0;a[f+7>>0]=a[l+((q-r|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[l+((t+s|0)>>>18&1023)>>0]|0;a[f+6>>0]=a[l+((s-t|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[l+((v+u|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[l+((u-v|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[l+((x+w|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[l+((w-x|0)>>>18&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function Fv(a,b){a=a|0;b=b|0;var d=0;d=c[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(c[a+84>>2]|0)){c[d+4>>2]=c[(c[a+476>>2]|0)+4>>2];break a}c[d+4>>2]=4;b=d+12|0;if(!(c[b>>2]|0)){a=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0;c[b>>2]=a}break}case 3:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=5;break}case 2:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=6;break}default:{b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function Gv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=zb;zb=zb+16|0;j=i;m=c[a+456>>2]|0;k=h-(c[g>>2]|0)|0;l=c[m+16>>2]|0;c[j>>2]=0;h=m+12|0;_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,c[h>>2]|0,j,k>>>0>l>>>0?l:k);Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0);zb=i;return}function Hv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[a+456>>2]|0;l=k+24|0;f=c[l>>2]|0;if(!f){j=k+16|0;h=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;i=k+12|0;c[i>>2]=h;f=c[l>>2]|0}else{h=k+12|0;j=k+16|0;i=h;h=c[h>>2]|0}_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,h,l,c[j>>2]|0);h=c[l>>2]|0;if(h>>>0>f>>>0){h=h-f|0;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,(c[i>>2]|0)+(f<<2)|0,0,h);c[g>>2]=(c[g>>2]|0)+h;h=c[l>>2]|0}f=c[j>>2]|0;if(h>>>0>>0)return;k=k+20|0;c[k>>2]=(c[k>>2]|0)+f;c[l>>2]=0;return}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;d=c[a+456>>2]|0;j=d+24|0;b=c[j>>2]|0;if(!b){i=d+20|0;e=d+16|0;k=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,c[i>>2]|0,c[e>>2]|0,0)|0;c[d+12>>2]=k;b=c[j>>2]|0;d=k}else{i=d+20|0;e=d+16|0;d=c[d+12>>2]|0}k=(c[e>>2]|0)-b|0;l=c[g>>2]|0;h=h-l|0;k=k>>>0>h>>>0?h:k;h=(c[a+116>>2]|0)-(c[i>>2]|0)|0;k=k>>>0>h>>>0?h:k;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,d+(b<<2)|0,f+(l<<2)|0,k);c[g>>2]=(c[g>>2]|0)+k;k=(c[j>>2]|0)+k|0;c[j>>2]=k;b=c[e>>2]|0;if(k>>>0>>0)return;c[i>>2]=(c[i>>2]|0)+b;c[j>>2]=0;return}function Jv(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+92>>2]=c[a+320>>2];c[b+96>>2]=c[a+116>>2];return}function Kv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[a+476>>2]|0;m=l+92|0;i=c[m>>2]|0;k=a+320|0;e=c[k>>2]|0;if((i|0)>=(e|0)){j=a+36|0;if((c[j>>2]|0)>0){e=c[a+216>>2]|0;i=0;while(1){n=(c[b+(i<<2)>>2]|0)+((B(c[l+100+(i<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Xb[c[l+52+(i<<2)>>2]&31](a,e,n,l+12+(i<<2)|0);i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else e=e+88|0}e=c[k>>2]|0}c[m>>2]=0;i=0}n=e-i|0;b=l+96|0;j=c[b>>2]|0;n=n>>>0>j>>>0?j:n;j=c[g>>2]|0;h=h-j|0;n=n>>>0>h>>>0?h:n;Yb[c[(c[a+480>>2]|0)+4>>2]&63](a,l+12|0,i,f+(j<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;c[b>>2]=(c[b>>2]|0)-n;n=(c[m>>2]|0)+n|0;c[m>>2]=n;if((n|0)<(c[k>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function Mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+320|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+112|0;h=0;do{b=c[j+(h<<2)>>2]|0;f=c[i>>2]|0;g=b+f|0;if((f|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function Ov(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+320|0;if((c[l>>2]|0)<=0)return;j=b+112|0;h=0;i=0;while(1){b=c[k+(i<<2)>>2]|0;d=c[j>>2]|0;g=b+d|0;if((d|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[j>>2]|0}Qv(k,i,k,i|1,1,d);i=i+2|0;if((i|0)>=(c[l>>2]|0))break;else h=h+1|0}return}function Pv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[b+476>>2]|0;q=c[f>>2]|0;d=c[d+4>>2]|0;f=a[r+140+d>>0]|0;o=f&255;d=a[r+150+d>>0]|0;r=d&255;p=b+320|0;g=c[p>>2]|0;if((g|0)<=0)return;n=b+112|0;k=f<<24>>24!=0;l=r+-1|0;if((d&255)>1){j=(f<<24>>24==0?~o:-2)+o+2|0;h=0;i=0;while(1){d=c[q+(i<<2)>>2]|0;f=c[n>>2]|0;g=d+f|0;if((f|0)>0){if(!k)break;b=c[e+(h<<2)>>2]|0;f=d;while(1){aP(f|0,a[b>>0]|0,j|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)b=b+1|0;else break}f=c[n>>2]|0}Qv(q,i,q,i+1|0,l,f);i=i+r|0;if((i|0)>=(c[p>>2]|0)){m=27;break}else h=h+1|0}if((m|0)==27)return;while(1){}}if(!k){d=(c[n>>2]|0)>0;f=0;while(1){if(d)break;f=f+r|0;if((f|0)>=(g|0)){m=27;break}}if((m|0)==27)return;while(1){}}b=0;h=0;while(1){f=c[q+(h<<2)>>2]|0;m=c[n>>2]|0;i=f+m|0;if((m|0)>0){g=c[e+(b<<2)>>2]|0;while(1){aP(f|0,a[g>>0]|0,o|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)g=g+1|0;else break}}h=h+r|0;if((h|0)>=(c[p>>2]|0))break;else b=b+1|0}return}function Qv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;b=a+(b<<2)|0;a=d+(e<<2)|0;while(1){_O(c[a>>2]|0,c[b>>2]|0,g|0)|0;if((f|0)>1){b=b+4|0;a=a+4|0;f=f+-1|0}else break}return}function Rv(a){a=a|0;return}function Sv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Qv(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function Tv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{a[m+b>>0]=((c[q+((d[k+b>>0]|0|256)<<2)>>2]|0)+(c[q+((d[j+b>>0]|0)<<2)>>2]|0)+(c[q+((d[l+b>>0]|0|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Uv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{s=d[k+b>>0]|0;r=s+128|0;a[m+b>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+((r+(d[j+b>>0]|0)&255)<<2)>>2]|0)+(c[q+((r+(d[l+b>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Vv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;b=0;h=c[f>>2]|0;while(1){l=a[j+b>>0]|0;a[h+2>>0]=l;a[h+1>>0]=l;a[h>>0]=l;b=b+1|0;if((b|0)==(k|0))break;else h=h+3|0}if((i|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function Wv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[b+480>>2]|0;u=c[b+112>>2]|0;n=c[b+336>>2]|0;o=c[r+8>>2]|0;p=c[r+12>>2]|0;q=c[r+16>>2]|0;r=c[r+20>>2]|0;if((h|0)<=0)return;s=e+4|0;t=e+8|0;if(!u)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;m=c[(c[t>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){v=d[k+i>>0]|0;w=d[l+i>>0]|0;x=d[m+i>>0]|0;a[b>>0]=a[n+((c[o+(x<<2)>>2]|0)+v)>>0]|0;a[b+1>>0]=a[n+(((c[q+(x<<2)>>2]|0)+(c[r+(w<<2)>>2]|0)>>16)+v)>>0]|0;a[b+2>>0]=a[n+((c[p+(w<<2)>>2]|0)+v)>>0]|0;i=i+1|0;if((i|0)==(u|0))break;else b=b+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Xv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[b+112>>2]|0;if((g|0)<=0)return;n=d+4|0;o=d+8|0;if(!m)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;k=c[(c[n>>2]|0)+(e<<2)>>2]|0;l=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;b=0;h=c[f>>2]|0;while(1){a[h>>0]=a[j+b>>0]|0;a[h+1>>0]=a[k+b>>0]|0;a[h+2>>0]=a[l+b>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else h=h+3|0}if((i|0)<=1)break;else f=f+4|0}return}function Yv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[o>>2]|0)+(f<<2)>>2]|0;m=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=0;i=c[g>>2]|0;while(1){s=a[l+b>>0]|0;q=d[m+b>>0]|0;r=(s&255)+128|0;a[i>>0]=r+(d[k+b>>0]|0);a[i+1>>0]=s;a[i+2>>0]=r+q;b=b+1|0;if((b|0)==(n|0))break;else i=i+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Zv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=c[b+480>>2]|0;w=c[b+112>>2]|0;o=c[b+336>>2]|0;p=c[s+8>>2]|0;q=c[s+12>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;if((h|0)<=0)return;t=e+4|0;u=e+8|0;v=e+12|0;if(!w)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[t>>2]|0)+(f<<2)>>2]|0;m=c[(c[u>>2]|0)+(f<<2)>>2]|0;n=c[(c[v>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){x=d[l+i>>0]|0;z=d[m+i>>0]|0;y=~a[k+i>>0]&255;a[b>>0]=a[o+(y-(c[p+(z<<2)>>2]|0))>>0]|0;a[b+1>>0]=a[o+(y-((c[r+(z<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16))>>0]|0;a[b+2>>0]=a[o+(y-(c[q+(x<<2)>>2]|0))>>0]|0;a[b+3>>0]=a[n+i>>0]|0;i=i+1|0;if((i|0)==(w|0))break;else b=b+4|0}if((j|0)<=1)break;else g=g+4|0}return}function _v(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;m=c[b+112>>2]|0;if((g|0)<=0)return;l=(m|0)==0;if((n|0)<=0)return;while(1){k=g;g=g+-1|0;if(!l){j=0;do{b=0;h=c[(c[d+(j<<2)>>2]|0)+(e<<2)>>2]|0;i=(c[f>>2]|0)+j|0;while(1){a[i>>0]=a[h>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else{h=h+1|0;i=i+n|0}}j=j+1|0}while((j|0)!=(n|0))}if((k|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function $v(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function aw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;l=n;m=c[a+476>>2]|0;i=m+36|0;if(!(c[i>>2]|0)){j=m+44|0;e=c[j>>2]|0;e=e>>>0<2?e:2;k=c[g>>2]|0;h=h-k|0;e=e>>>0>h>>>0?h:e;c[l>>2]=c[f+(k<<2)>>2];if(e>>>0>1)c[l+4>>2]=c[f+(k+1<<2)>>2];else{c[l+4>>2]=c[m+32>>2];c[i>>2]=1}Xb[c[m+12>>2]&31](a,b,c[d>>2]|0,l);f=(c[i>>2]|0)==0;c[g>>2]=(c[g>>2]|0)+e;c[j>>2]=(c[j>>2]|0)-e;if(!f){zb=n;return}}else{Qv(m+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[m+40>>2]|0);c[i>>2]=0;f=m+44|0;c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+-1}c[d>>2]=(c[d>>2]|0)+1;zb=n;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=c[b+476>>2]|0;x=c[b+336>>2]|0;y=c[w+16>>2]|0;u=c[w+20>>2]|0;v=c[w+24>>2]|0;w=c[w+28>>2]|0;i=c[e>>2]|0;h=f<<1;t=c[i+(h<<2)>>2]|0;h=c[i+((h|1)<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=c[g+4>>2]|0;s=b+112|0;e=c[s>>2]|0;m=e>>>1;if(!m){j=p;b=t}else{n=i+m|0;q=e&-2;r=m*6|0;o=h+q|0;l=p;e=t;b=g;j=f;k=m;while(1){A=d[i>>0]|0;B=d[l>>0]|0;C=c[y+(B<<2)>>2]|0;B=(c[v+(B<<2)>>2]|0)+(c[w+(A<<2)>>2]|0)>>16;A=c[u+(A<<2)>>2]|0;z=d[e>>0]|0;a[j>>0]=a[x+(C+z)>>0]|0;a[j+1>>0]=a[x+(B+z)>>0]|0;a[j+2>>0]=a[x+(A+z)>>0]|0;z=d[e+1>>0]|0;a[j+3>>0]=a[x+(C+z)>>0]|0;a[j+4>>0]=a[x+(B+z)>>0]|0;a[j+5>>0]=a[x+(A+z)>>0]|0;z=d[h>>0]|0;a[b>>0]=a[x+(C+z)>>0]|0;a[b+1>>0]=a[x+(B+z)>>0]|0;a[b+2>>0]=a[x+(A+z)>>0]|0;z=d[h+1>>0]|0;a[b+3>>0]=a[x+(C+z)>>0]|0;a[b+4>>0]=a[x+(B+z)>>0]|0;a[b+5>>0]=a[x+(A+z)>>0]|0;k=k+-1|0;if(!k)break;else{l=l+1|0;i=i+1|0;h=h+2|0;e=e+2|0;b=b+6|0;j=j+6|0}}j=p+m|0;i=n;h=o;b=t+q|0;g=g+r|0;f=f+r|0;e=c[s>>2]|0}if(!(e&1))return;B=d[i>>0]|0;A=d[j>>0]|0;z=c[y+(A<<2)>>2]|0;A=(c[v+(A<<2)>>2]|0)+(c[w+(B<<2)>>2]|0)>>16;B=c[u+(B<<2)>>2]|0;C=d[b>>0]|0;a[f>>0]=a[x+(z+C)>>0]|0;a[f+1>>0]=a[x+(A+C)>>0]|0;a[f+2>>0]=a[x+(B+C)>>0]|0;C=d[h>>0]|0;a[g>>0]=a[x+(z+C)>>0]|0;a[g+1>>0]=a[x+(A+C)>>0]|0;a[g+2>>0]=a[x+(B+C)>>0]|0;return}function cw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Xb[c[(c[a+476>>2]|0)+12>>2]&31](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function dw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=c[b+476>>2]|0;t=c[b+336>>2]|0;u=c[s+16>>2]|0;q=c[s+20>>2]|0;r=c[s+24>>2]|0;s=c[s+28>>2]|0;p=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;h=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;o=b+112|0;e=c[o>>2]|0;l=e>>>1;if(!l){b=i;g=p}else{b=i+l|0;m=e&-2;n=l*6|0;k=h;e=i;g=p;i=f;j=l;while(1){w=d[e>>0]|0;x=d[k>>0]|0;y=c[u+(x<<2)>>2]|0;x=(c[r+(x<<2)>>2]|0)+(c[s+(w<<2)>>2]|0)>>16;w=c[q+(w<<2)>>2]|0;v=d[g>>0]|0;a[i>>0]=a[t+(y+v)>>0]|0;a[i+1>>0]=a[t+(x+v)>>0]|0;a[i+2>>0]=a[t+(w+v)>>0]|0;v=d[g+1>>0]|0;a[i+3>>0]=a[t+(y+v)>>0]|0;a[i+4>>0]=a[t+(x+v)>>0]|0;a[i+5>>0]=a[t+(w+v)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+1|0;e=e+1|0;g=g+2|0;i=i+6|0}}h=h+l|0;g=p+m|0;f=f+n|0;e=c[o>>2]|0}if(!(e&1))return;x=d[b>>0]|0;v=d[h>>0]|0;w=(c[r+(v<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16;x=c[q+(x<<2)>>2]|0;y=d[g>>0]|0;a[f>>0]=a[t+((c[u+(v<<2)>>2]|0)+y)>>0]|0;a[f+1>>0]=a[t+(w+y)>>0]|0;a[f+2>>0]=a[t+(x+y)>>0]|0;return}function ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+484>>2]|0;g=c[f+24>>2]|0;e=a+88|0;if(!(c[e>>2]|0))d=0;else{c[e>>2]=2;d=2}if(!b){c[f+4>>2]=(d|0)==2?20:21;c[f+8>>2]=134;b=c[a+132>>2]|0;if((b|0)>=1){if((b|0)>256){d=c[a>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{d=c[a>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}if((c[e>>2]|0)==2){e=((c[a+112>>2]|0)*6|0)+12|0;d=f+32|0;b=c[d>>2]|0;if(!b){b=Jb[c[(c[a+4>>2]|0)+4>>2]&63](a,1,e)|0;c[d>>2]=b}aP(b|0,0,e|0)|0;if(!(c[f+40>>2]|0))gw(a);c[f+36>>2]=0}}else{c[f+4>>2]=19;c[f+8>>2]=133;c[f+28>>2]=1}b=f+28|0;if(!(c[b>>2]|0))return;aP(c[g>>2]|0,0,4096)|0;aP(c[g+4>>2]|0,0,4096)|0;aP(c[g+8>>2]|0,0,4096)|0;aP(c[g+12>>2]|0,0,4096)|0;aP(c[g+16>>2]|0,0,4096)|0;aP(c[g+20>>2]|0,0,4096)|0;aP(c[g+24>>2]|0,0,4096)|0;aP(c[g+28>>2]|0,0,4096)|0;aP(c[g+32>>2]|0,0,4096)|0;aP(c[g+36>>2]|0,0,4096)|0;aP(c[g+40>>2]|0,0,4096)|0;aP(c[g+44>>2]|0,0,4096)|0;aP(c[g+48>>2]|0,0,4096)|0;aP(c[g+52>>2]|0,0,4096)|0;aP(c[g+56>>2]|0,0,4096)|0;aP(c[g+60>>2]|0,0,4096)|0;aP(c[g+64>>2]|0,0,4096)|0;aP(c[g+68>>2]|0,0,4096)|0;aP(c[g+72>>2]|0,0,4096)|0;aP(c[g+76>>2]|0,0,4096)|0;aP(c[g+80>>2]|0,0,4096)|0;aP(c[g+84>>2]|0,0,4096)|0;aP(c[g+88>>2]|0,0,4096)|0;aP(c[g+92>>2]|0,0,4096)|0;aP(c[g+96>>2]|0,0,4096)|0;aP(c[g+100>>2]|0,0,4096)|0;aP(c[g+104>>2]|0,0,4096)|0;aP(c[g+108>>2]|0,0,4096)|0;aP(c[g+112>>2]|0,0,4096)|0;aP(c[g+116>>2]|0,0,4096)|0;aP(c[g+120>>2]|0,0,4096)|0;aP(c[g+124>>2]|0,0,4096)|0;c[b>>2]=0;return}function fw(a){a=a|0;c[(c[a+484>>2]|0)+28>>2]=1;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=c[a+484>>2]|0;a=Jb[c[c[a+4>>2]>>2]&63](a,1,2044)|0;e=a+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;d=16;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=0-d;a=a+1|0;d=(a&1^1)+d|0}while((a|0)!=48);b=0-d|0;a=48;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=b;a=a+1|0}while((a|0)!=256);return}function hw(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+484>>2]|0)+24>>2]|0;i=c[a+112>>2]|0;if((g|0)<1|(i|0)==0)return;a=0;do{f=i;h=c[e+(a<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;f=f+-1|0;if(!f)break;else h=h+3|0}a=a+1|0}while((a|0)!=(g|0));return}function iw(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;y=d+484|0;A=c[y>>2]|0;C=d+136|0;c[C>>2]=c[A+16>>2];s=c[A+20>>2]|0;z=Jb[c[c[d+4>>2]>>2]&63](d,1,s<<5)|0;c[z>>2]=0;c[z+4>>2]=31;c[z+8>>2]=0;c[z+12>>2]=63;c[z+16>>2]=0;c[z+20>>2]=31;nw(d,z);a:do if((s|0)>1){e=1;while(1){if((e<<1|0)>(s|0)){g=0;h=0;i=z;f=0;while(1){j=c[i+24>>2]|0;k=(j|0)>(g|0);f=k?i:f;h=h+1|0;if((h|0)==(e|0)){q=f;break}else{g=k?j:g;i=i+32|0}}}else{f=0;i=0;j=z;g=0;while(1){h=c[j+28>>2]|0;if((h|0)>(f|0)){x=(c[j+24>>2]|0)>0;g=x?j:g;f=x?h:f}i=i+1|0;if((i|0)==(e|0)){q=g;break}else j=j+32|0}}if(!q)break a;r=z+(e<<5)|0;g=q+4|0;c[z+(e<<5)+4>>2]=c[g>>2];h=q+12|0;c[z+(e<<5)+12>>2]=c[h>>2];i=q+20|0;c[z+(e<<5)+20>>2]=c[i>>2];c[r>>2]=c[q>>2];n=q+8|0;f=z+(e<<5)+8|0;c[f>>2]=c[n>>2];p=q+16|0;j=z+(e<<5)+16|0;c[j>>2]=c[p>>2];k=c[g>>2]|0;l=c[q>>2]|0;v=k-l<<4;m=c[h>>2]|0;n=c[n>>2]|0;w=(m-n|0)*12|0;o=c[i>>2]|0;p=c[p>>2]|0;x=(v|0)>(w|0);switch(((o-p<<3|0)>((x?v:w)|0)?2:(x^1)&1)&3){case 0:{t=(l+k|0)/2|0;c[g>>2]=t;f=r;g=t;t=15;break}case 1:{g=(n+m|0)/2|0;c[h>>2]=g;t=15;break}case 2:{g=(p+o|0)/2|0;c[i>>2]=g;f=j;t=15;break}default:{}}if((t|0)==15){t=0;c[f>>2]=g+1}nw(d,q);nw(d,r);e=e+1|0;if((e|0)>=(s|0))break a}}else e=1;while(0);x=0;do{r=c[(c[y>>2]|0)+24>>2]|0;j=c[z+(x<<5)>>2]|0;s=c[z+(x<<5)+4>>2]|0;t=c[z+(x<<5)+8>>2]|0;u=c[z+(x<<5)+12>>2]|0;v=c[z+(x<<5)+16>>2]|0;w=c[z+(x<<5)+20>>2]|0;if((j|0)>(s|0)|(t|0)>(u|0)|(v|0)>(w|0)){i=0;h=0;g=0;f=0}else{i=0;h=0;g=0;f=0;while(1){p=c[r+(j<<2)>>2]|0;q=j<<3|4;o=t;while(1){n=o<<2|2;l=p+(o<<6)+(v<<1)|0;m=v;while(1){D=b[l>>1]|0;k=D&65535;if(D<<16>>16){i=(B(m<<3|4,k)|0)+i|0;h=(B(n,k)|0)+h|0;g=(B(q,k)|0)+g|0;f=f+k|0}if((m|0)<(w|0)){l=l+2|0;m=m+1|0}else break}if((o|0)<(u|0))o=o+1|0;else break}if((j|0)<(s|0))j=j+1|0;else break}}D=f>>1;a[(c[c[C>>2]>>2]|0)+x>>0]=(g+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+x>>0]=(h+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+x>>0]=(i+D|0)/(f|0)|0;x=x+1|0}while((x|0)<(e|0));c[d+132>>2]=e;D=c[d>>2]|0;c[D+20>>2]=98;c[D+24>>2]=e;Ub[c[(c[d>>2]|0)+4>>2]&63](d,1);c[A+28>>2]=1;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;i=c[e+484>>2]|0;U=c[i+24>>2]|0;V=c[e+112>>2]|0;O=c[e+336>>2]|0;P=c[i+40>>2]|0;S=c[e+136>>2]|0;Q=c[S>>2]|0;R=c[S+4>>2]|0;S=c[S+8>>2]|0;if((h|0)<=0)return;T=i+36|0;J=i+32|0;K=(V|0)==0;L=V+-1|0;M=L*3|0;N=(V*3|0)+3|0;I=0;do{k=c[f+(I<<2)>>2]|0;j=c[g+(I<<2)>>2]|0;if(!(c[T>>2]|0)){F=3;G=1;i=c[J>>2]|0;l=1}else{F=-3;G=-1;i=(c[J>>2]|0)+(N<<1)|0;j=j+L|0;k=k+M|0;l=0}c[T>>2]=l;if(K){l=0;k=0;j=0}else{A=F+1|0;C=F+2|0;H=B(V,F)|0;p=0;q=0;w=0;x=0;y=0;l=0;D=0;E=0;z=V;m=0;u=i;while(1){v=u;u=u+(F<<1)|0;r=d[O+((c[P+(m+8+(b[u>>1]|0)>>4<<2)>>2]|0)+(d[k>>0]|0))>>0]|0;s=d[O+((c[P+(p+8+(b[v+(A<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0;t=d[O+((c[P+(q+8+(b[v+(C<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0;n=r>>>3;o=s>>>2;p=t>>>3;q=(c[U+(n<<2)>>2]|0)+(o<<6)+(p<<1)|0;m=b[q>>1]|0;if(!(m<<16>>16)){mw(e,n,o,p);m=b[q>>1]|0}m=(m&65535)+-1|0;a[j>>0]=m;o=r-(d[Q+m>>0]|0)|0;n=s-(d[R+m>>0]|0)|0;m=t-(d[S+m>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+w|0;b[v+2>>1]=(n*3|0)+D;D=(n*5|0)+x|0;b[v+4>>1]=(m*3|0)+E;E=(m*5|0)+y|0;z=z+-1|0;if(!z)break;else{p=n*7|0;q=m*7|0;w=o;x=n;y=m;m=o*7|0;j=j+G|0;k=k+F|0}}k=D;j=E;i=i+(H<<1)|0}b[i>>1]=l;b[i+2>>1]=k;b[i+4>>1]=j;I=I+1|0}while((I|0)!=(h|0));return}function kw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[(c[e+484>>2]|0)+24>>2]|0;s=c[e+112>>2]|0;if((h|0)<1|(s|0)==0)return;o=0;do{n=s;p=c[g+(o<<2)>>2]|0;q=c[f+(o<<2)>>2]|0;while(1){j=(d[q>>0]|0)>>>3;k=(d[q+1>>0]|0)>>>2;l=(d[q+2>>0]|0)>>>3;m=(c[r+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){mw(e,j,k,l);i=b[m>>1]|0}a[p>>0]=(i&65535)+255;n=n+-1|0;if(!n)break;else{p=p+1|0;q=q+3|0}}o=o+1|0}while((o|0)!=(h|0));return}function lw(a){a=a|0;return}function mw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=zb;zb=zb+1408|0;K=N+384|0;L=N+128|0;i=N;M=c[(c[e+484>>2]|0)+24>>2]|0;n=f>>>2<<5;H=n|4;p=g>>>3<<5;I=p|2;r=h>>>2<<5;J=r|4;x=c[e+132>>2]|0;n=n|28;o=n+H>>1;p=p|30;q=p+I>>1;r=r|28;s=r+J>>1;if((x|0)>0){v=c[e+136>>2]|0;t=c[v>>2]|0;u=c[v+4>>2]|0;v=c[v+8>>2]|0;w=2147483647;m=0;do{j=d[t+m>>0]|0;do if((H|0)<=(j|0)){if((n|0)<(j|0)){G=j-n<<1;l=j-H<<1;l=B(l,l)|0;j=B(G,G)|0;break}if((o|0)<(j|0)){l=j-H<<1;l=B(l,l)|0;j=0;break}else{l=j-n<<1;l=B(l,l)|0;j=0;break}}else{G=j-H<<1;l=j-n<<1;l=B(l,l)|0;j=B(G,G)|0}while(0);k=d[u+m>>0]|0;do if((I|0)<=(k|0)){if((p|0)<(k|0)){G=(k-p|0)*3|0;k=(k-I|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((q|0)<(k|0)){k=(k-I|0)*3|0;k=B(k,k)|0;break}else{k=(k-p|0)*3|0;k=B(k,k)|0;break}}else{G=(k-I|0)*3|0;k=(k-p|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);l=k+l|0;k=d[v+m>>0]|0;do if((J|0)<=(k|0)){if((r|0)<(k|0)){G=k-r|0;k=k-J|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((s|0)<(k|0)){k=k-J|0;k=B(k,k)|0;break}else{k=k-r|0;k=B(k,k)|0;break}}else{G=k-J|0;k=k-r|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);G=l+k|0;c[K+(m<<2)>>2]=j;w=(G|0)<(w|0)?G:w;m=m+1|0}while((m|0)!=(x|0));j=0;k=0;do{if((c[K+(k<<2)>>2]|0)<=(w|0)){a[L+j>>0]=k;j=j+1|0}k=k+1|0}while((k|0)!=(x|0))}else j=0;c[K>>2]=2147483647;c[K+4>>2]=2147483647;c[K+8>>2]=2147483647;c[K+12>>2]=2147483647;c[K+16>>2]=2147483647;c[K+20>>2]=2147483647;c[K+24>>2]=2147483647;c[K+28>>2]=2147483647;c[K+32>>2]=2147483647;c[K+36>>2]=2147483647;c[K+40>>2]=2147483647;c[K+44>>2]=2147483647;c[K+48>>2]=2147483647;c[K+52>>2]=2147483647;c[K+56>>2]=2147483647;c[K+60>>2]=2147483647;c[K+64>>2]=2147483647;c[K+68>>2]=2147483647;c[K+72>>2]=2147483647;c[K+76>>2]=2147483647;c[K+80>>2]=2147483647;c[K+84>>2]=2147483647;c[K+88>>2]=2147483647;c[K+92>>2]=2147483647;c[K+96>>2]=2147483647;c[K+100>>2]=2147483647;c[K+104>>2]=2147483647;c[K+108>>2]=2147483647;c[K+112>>2]=2147483647;c[K+116>>2]=2147483647;c[K+120>>2]=2147483647;c[K+124>>2]=2147483647;c[K+128>>2]=2147483647;c[K+132>>2]=2147483647;c[K+136>>2]=2147483647;c[K+140>>2]=2147483647;c[K+144>>2]=2147483647;c[K+148>>2]=2147483647;c[K+152>>2]=2147483647;c[K+156>>2]=2147483647;c[K+160>>2]=2147483647;c[K+164>>2]=2147483647;c[K+168>>2]=2147483647;c[K+172>>2]=2147483647;c[K+176>>2]=2147483647;c[K+180>>2]=2147483647;c[K+184>>2]=2147483647;c[K+188>>2]=2147483647;c[K+192>>2]=2147483647;c[K+196>>2]=2147483647;c[K+200>>2]=2147483647;c[K+204>>2]=2147483647;c[K+208>>2]=2147483647;c[K+212>>2]=2147483647;c[K+216>>2]=2147483647;c[K+220>>2]=2147483647;c[K+224>>2]=2147483647;c[K+228>>2]=2147483647;c[K+232>>2]=2147483647;c[K+236>>2]=2147483647;c[K+240>>2]=2147483647;c[K+244>>2]=2147483647;c[K+248>>2]=2147483647;c[K+252>>2]=2147483647;c[K+256>>2]=2147483647;c[K+260>>2]=2147483647;c[K+264>>2]=2147483647;c[K+268>>2]=2147483647;c[K+272>>2]=2147483647;c[K+276>>2]=2147483647;c[K+280>>2]=2147483647;c[K+284>>2]=2147483647;c[K+288>>2]=2147483647;c[K+292>>2]=2147483647;c[K+296>>2]=2147483647;c[K+300>>2]=2147483647;c[K+304>>2]=2147483647;c[K+308>>2]=2147483647;c[K+312>>2]=2147483647;c[K+316>>2]=2147483647;c[K+320>>2]=2147483647;c[K+324>>2]=2147483647;c[K+328>>2]=2147483647;c[K+332>>2]=2147483647;c[K+336>>2]=2147483647;c[K+340>>2]=2147483647;c[K+344>>2]=2147483647;c[K+348>>2]=2147483647;c[K+352>>2]=2147483647;c[K+356>>2]=2147483647;c[K+360>>2]=2147483647;c[K+364>>2]=2147483647;c[K+368>>2]=2147483647;c[K+372>>2]=2147483647;c[K+376>>2]=2147483647;c[K+380>>2]=2147483647;c[K+384>>2]=2147483647;c[K+388>>2]=2147483647;c[K+392>>2]=2147483647;c[K+396>>2]=2147483647;c[K+400>>2]=2147483647;c[K+404>>2]=2147483647;c[K+408>>2]=2147483647;c[K+412>>2]=2147483647;c[K+416>>2]=2147483647;c[K+420>>2]=2147483647;c[K+424>>2]=2147483647;c[K+428>>2]=2147483647;c[K+432>>2]=2147483647;c[K+436>>2]=2147483647;c[K+440>>2]=2147483647;c[K+444>>2]=2147483647;c[K+448>>2]=2147483647;c[K+452>>2]=2147483647;c[K+456>>2]=2147483647;c[K+460>>2]=2147483647;c[K+464>>2]=2147483647;c[K+468>>2]=2147483647;c[K+472>>2]=2147483647;c[K+476>>2]=2147483647;c[K+480>>2]=2147483647;c[K+484>>2]=2147483647;c[K+488>>2]=2147483647;c[K+492>>2]=2147483647;c[K+496>>2]=2147483647;c[K+500>>2]=2147483647;c[K+504>>2]=2147483647;c[K+508>>2]=2147483647;if((j|0)>0){v=e+136|0;u=0;do{w=a[L+u>>0]|0;r=w&255;x=c[v>>2]|0;q=H-(d[(c[x>>2]|0)+r>>0]|0)|0;s=q<<1;s=B(s,s)|0;G=I-(d[(c[x+4>>2]|0)+r>>0]|0)|0;z=G*3|0;s=(B(z,z)|0)+s|0;r=J-(d[(c[x+8>>2]|0)+r>>0]|0)|0;G=G*72|0;x=G+144|0;z=r<<4;e=z+64|0;y=z+192|0;z=z+320|0;A=G+432|0;C=G+720|0;D=G+1008|0;E=G+1296|0;F=G+1584|0;G=G+1872|0;p=3;q=(q<<6)+256|0;r=s+(B(r,r)|0)|0;s=i;t=K;while(1){n=t+16|0;if((r|0)<(c[t>>2]|0)){c[t>>2]=r;a[s>>0]=w}k=r+e|0;l=t+4|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+1>>0]=w}k=k+y|0;l=t+8|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+2>>0]=w}k=k+z|0;l=t+12|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+3>>0]=w}m=x+r|0;o=t+32|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+4>>0]=w}k=m+e|0;l=t+20|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+5>>0]=w}k=k+y|0;l=t+24|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+6>>0]=w}k=k+z|0;l=t+28|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+7>>0]=w}m=A+m|0;n=t+48|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+8>>0]=w}k=m+e|0;l=t+36|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+9>>0]=w}k=k+y|0;l=t+40|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+10>>0]=w}k=k+z|0;l=t+44|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+11>>0]=w}m=C+m|0;o=t+64|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+12>>0]=w}k=m+e|0;l=t+52|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+13>>0]=w}k=k+y|0;l=t+56|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+14>>0]=w}k=k+z|0;l=t+60|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+15>>0]=w}m=D+m|0;n=t+80|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+16>>0]=w}k=m+e|0;l=t+68|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+17>>0]=w}k=k+y|0;l=t+72|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+18>>0]=w}k=k+z|0;l=t+76|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+19>>0]=w}m=E+m|0;o=t+96|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+20>>0]=w}k=m+e|0;l=t+84|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+21>>0]=w}k=k+y|0;l=t+88|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+22>>0]=w}k=k+z|0;l=t+92|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+23>>0]=w}m=F+m|0;n=t+112|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+24>>0]=w}k=m+e|0;l=t+100|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+25>>0]=w}k=k+y|0;l=t+104|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+26>>0]=w}k=k+z|0;l=t+108|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+27>>0]=w}k=G+m|0;if((k|0)<(c[n>>2]|0)){c[n>>2]=k;a[s+28>>0]=w}k=k+e|0;l=t+116|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+29>>0]=w}k=k+y|0;l=t+120|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+30>>0]=w}k=k+z|0;l=t+124|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+31>>0]=w}r=r+q|0;if(!p)break;else{p=p+-1|0;q=q+512|0;s=s+32|0;t=t+128|0}}u=u+1|0}while((u|0)!=(j|0))}s=f&-4;t=g&-8;l=h&-4;m=t|1;n=t|2;o=t|3;p=t|4;q=t|5;r=t|6;k=g|7;j=0;while(1){g=M+(j+s<<2)|0;h=c[g>>2]|0;L=h+(t<<6)+(l<<1)|0;b[L>>1]=(d[i>>0]|0)+1;b[L+2>>1]=(d[i+1>>0]|0)+1;b[L+4>>1]=(d[i+2>>0]|0)+1;b[L+6>>1]=(d[i+3>>0]|0)+1;L=h+(m<<6)+(l<<1)|0;b[L>>1]=(d[i+4>>0]|0)+1;b[L+2>>1]=(d[i+5>>0]|0)+1;b[L+4>>1]=(d[i+6>>0]|0)+1;b[L+6>>1]=(d[i+7>>0]|0)+1;L=h+(n<<6)+(l<<1)|0;b[L>>1]=(d[i+8>>0]|0)+1;b[L+2>>1]=(d[i+9>>0]|0)+1;b[L+4>>1]=(d[i+10>>0]|0)+1;b[L+6>>1]=(d[i+11>>0]|0)+1;h=h+(o<<6)+(l<<1)|0;b[h>>1]=(d[i+12>>0]|0)+1;b[h+2>>1]=(d[i+13>>0]|0)+1;b[h+4>>1]=(d[i+14>>0]|0)+1;b[h+6>>1]=(d[i+15>>0]|0)+1;g=c[g>>2]|0;h=g+(p<<6)+(l<<1)|0;b[h>>1]=(d[i+16>>0]|0)+1;b[h+2>>1]=(d[i+17>>0]|0)+1;b[h+4>>1]=(d[i+18>>0]|0)+1;b[h+6>>1]=(d[i+19>>0]|0)+1;h=g+(q<<6)+(l<<1)|0;b[h>>1]=(d[i+20>>0]|0)+1;b[h+2>>1]=(d[i+21>>0]|0)+1;b[h+4>>1]=(d[i+22>>0]|0)+1;b[h+6>>1]=(d[i+23>>0]|0)+1;h=g+(r<<6)+(l<<1)|0;b[h>>1]=(d[i+24>>0]|0)+1;b[h+2>>1]=(d[i+25>>0]|0)+1;b[h+4>>1]=(d[i+26>>0]|0)+1;b[h+6>>1]=(d[i+27>>0]|0)+1;g=g+(k<<6)+(l<<1)|0;b[g>>1]=(d[i+28>>0]|0)+1;b[g+2>>1]=(d[i+29>>0]|0)+1;b[g+4>>1]=(d[i+30>>0]|0)+1;b[g+6>>1]=(d[i+31>>0]|0)+1;j=j+1|0;if((j|0)==4)break;else i=i+32|0}zb=N;return} +function mO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=o;if((-18-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)m=c[b>>2]|0;else m=b;if(d>>>0<2147483623){k=e+d|0;l=d<<1;k=k>>>0>>0?l:k;k=k>>>0<11?11:k+16&-16}else k=-17;l=tB(k)|0;if(g|0)VD(l,m,g)|0;if(i|0)VD(l+g|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)VD(l+g+i|0,m+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(m,e);c[b>>2]=l;c[b+8>>2]=k|-2147483648;i=f+i|0;c[b+4>>2]=i;a[n>>0]=0;bg(l+i|0,n);zb=o;return}function nO(a,b){a=a|0;b=b|0;return kO(a,b,Yf(b)|0)|0}function oO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;h=b+11|0;f=a[h>>0]|0;i=f<<24>>24<0;if(i)f=c[b+4>>2]|0;else f=f&255;do if(f>>>0>=d>>>0)if(i){i=(c[b>>2]|0)+d|0;a[g>>0]=0;bg(i,g);c[b+4>>2]=d;break}else{a[g>>0]=0;bg(b+d|0,g);a[h>>0]=d;break}else pO(b,d-f|0,e)|0;while(0);zb=j;return}function pO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;if(d|0){j=b+11|0;f=a[j>>0]|0;if(f<<24>>24<0){h=c[b+4>>2]|0;g=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;g=10}if((g-h|0)>>>0>>0){qO(b,g,h+d-g|0,h,h,0,0);f=a[j>>0]|0}if(f<<24>>24<0)g=c[b>>2]|0;else g=b;iO(g+h|0,d,e)|0;f=h+d|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}zb=k;return b|0}function qO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<2147483623){j=e+d|0;k=d<<1;j=j>>>0>>0?k:j;j=j>>>0<11?11:j+16&-16}else j=-17;k=tB(j)|0;if(g|0)VD(k,l,g)|0;e=f-h-g|0;if(e|0)VD(k+g+i|0,l+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(l,e);c[b>>2]=k;c[b+8>>2]=j|-2147483648;return}function rO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g){h=c[b+4>>2]|0;f=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;f=10}if((f-h|0)>>>0>=e>>>0){if(e|0){if(g)g=c[b>>2]|0;else g=b;VD(g+h|0,d,e)|0;f=h+e|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}}else mO(b,f,h+e-f|0,h,h,0,e,d);zb=k;return b|0}function sO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;h=j;i=j+1|0;a[h>>0]=d;g=b+11|0;d=a[g>>0]|0;e=d<<24>>24<0;if(e){f=c[b+4>>2]|0;d=(c[b+8>>2]&2147483647)+-1|0}else{f=d&255;d=10}if((f|0)==(d|0)){qO(b,d,1,d,d,0,0);if((a[g>>0]|0)<0)e=8;else e=7}else if(e)e=8;else e=7;if((e|0)==7){a[g>>0]=f+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=f+1}b=d+f|0;bg(b,h);a[i>>0]=0;bg(b+1|0,i);zb=j;return}function tO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(e>>>0>1073741807)eO(b);do if(e>>>0>=2){g=e+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=e;break}}else{a[b+8+3>>0]=e;f=b}while(0);kE(f,d,e)|0;c[h>>2]=0;JF(f+(e<<2)|0,h);zb=i;return}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(d>>>0>1073741807)eO(b);do if(d>>>0>=2){g=d+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=d;break}}else{a[b+8+3>>0]=d;f=b}while(0);vO(f,d,e)|0;c[h>>2]=0;JF(f+(d<<2)|0,h);zb=i;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;if(b)uA(a,c,b)|0;return a|0}function wO(b){b=b|0;var d=0;d=b+8|0;if((a[d+3>>0]|0)<0)Pf(c[b>>2]|0,c[d>>2]<<2);return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;f=b+8|0;k=f+3|0;h=a[k>>0]|0;i=h<<24>>24<0;if(i)g=(c[f>>2]&2147483647)+-1|0;else g=1;do if(g>>>0>=e>>>0){if(i)f=c[b>>2]|0;else f=b;yO(f,d,e)|0;c[j>>2]=0;JF(f+(e<<2)|0,j);if((a[k>>0]|0)<0){c[b+4>>2]=e;break}else{a[k>>0]=e;break}}else{if(i)f=c[b+4>>2]|0;else f=h&255;zO(b,g,e-g|0,f,0,f,e,d)}while(0);zb=l;return b|0}function yO(a,b,c){a=a|0;b=b|0;c=c|0;if(c)vA(a,b,c)|0;return a|0}function zO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=p;if((1073741806-d|0)>>>0>>0)eO(b);l=b+8|0;if((a[l+3>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else m=e}else m=1073741807;k=tB(m<<2)|0;if(g|0)kE(k,n,g)|0;if(i|0)kE(k+(g<<2)|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)kE(k+(g<<2)+(i<<2)|0,n+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(n,e<<2);c[b>>2]=k;c[l>>2]=m|-2147483648;i=f+i|0;c[b+4>>2]=i;c[o>>2]=0;JF(k+(i<<2)|0,o);zb=p;return}function AO(a,b){a=a|0;b=b|0;return xO(a,b,JI(b)|0)|0}function BO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((1073741807-d|0)>>>0>>0)eO(b);m=b+8|0;if((a[m+3>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<536870887){e=e+d|0;j=d<<1;e=e>>>0>>0?j:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else k=e}else k=1073741807;j=tB(k<<2)|0;if(g|0)kE(j,l,g)|0;e=f-h-g|0;if(e|0)kE(j+(g<<2)+(i<<2)|0,l+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(l,e<<2);c[b>>2]=j;c[m>>2]=k|-2147483648;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;g=b+8|0;k=g+3|0;f=a[k>>0]|0;i=f<<24>>24<0;if(i){h=c[b+4>>2]|0;f=(c[g>>2]&2147483647)+-1|0}else{h=f&255;f=1}if((f-h|0)>>>0>=e>>>0){if(e|0){if(i)g=c[b>>2]|0;else g=b;kE(g+(h<<2)|0,d,e)|0;f=h+e|0;if((a[k>>0]|0)<0)c[b+4>>2]=f;else a[k>>0]=f;c[j>>2]=0;JF(g+(f<<2)|0,j)}}else zO(b,f,h+e-f|0,h,h,0,e,d);zb=l;return b|0}function DO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=k+4|0;c[i>>2]=d;e=b+8|0;h=e+3|0;d=a[h>>0]|0;f=d<<24>>24<0;if(f){g=c[b+4>>2]|0;d=(c[e>>2]&2147483647)+-1|0}else{g=d&255;d=1}if((g|0)==(d|0)){BO(b,d,1,d,d,0,0);if((a[h>>0]|0)<0)e=8;else e=7}else if(f)e=8;else e=7;if((e|0)==7){a[h>>0]=g+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=g+1}b=d+(g<<2)|0;JF(b,i);c[j>>2]=0;JF(b+4|0,j);zb=k;return}function EO(a){a=a|0;ua()}function FO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14291]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=57204+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14291]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;zb=w;return v|0}l=c[14293]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=57204+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=h;c[14296]=f;v=i;zb=w;return v|0}g=c[14292]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[57468+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14292]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=j;c[14296]=h}v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14292]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[57468+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[57468+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14293]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=57468+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=57468+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14293]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14296]|0;if(b>>>0>15){v=a+m|0;c[14296]=v;c[14293]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14293]=0;c[14296]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;zb=w;return v|0}h=c[14294]|0;if(h>>>0>m>>>0){t=h-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}if(!(c[14409]|0)){c[14411]=4096;c[14410]=4096;c[14412]=-1;c[14413]=-1;c[14414]=0;c[14402]=0;c[14409]=n&-16^1431655768;a=4096}else a=c[14411]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;zb=w;return v|0}a=c[14401]|0;if(a|0?(l=c[14399]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;zb=w;return v|0}d:do if(!(c[14402]&4)){d=c[14297]|0;e:do if(d){e=57612;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=LO(b)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=LO(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14410]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14399]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14401]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=LO(b)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14411]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((LO(a)|0)==(-1|0)){LO(d)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14402]=c[14402]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=LO(k)|0,p=LO(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

>>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14399]|0)+h|0;c[14399]=b;if(b>>>0>(c[14400]|0)>>>0)c[14400]=b;j=c[14297]|0;f:do if(j){b=57612;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14294]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14298]=c[14413];break}if(g>>>0<(c[14295]|0)>>>0)c[14295]=g;d=g+h|0;b=57612;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14294]|0)+i|0;c[14294]=v;c[14297]=k;c[k+4>>2]=v|1}else{if((c[14296]|0)==(b|0)){v=(c[14293]|0)+i|0;c[14293]=v;c[14296]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=57468+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14292]=c[14292]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=57468+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14292]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;zb=w;return v|0}b=57612;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14298]=c[14413];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14403];c[b+4>>2]=c[14404];c[b+8>>2]=c[14405];c[b+12>>2]=c[14406];c[14403]=g;c[14404]=h;c[14406]=0;c[14405]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=57468+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14292]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14295]|0;if((v|0)==0|g>>>0>>0)c[14295]=g;c[14403]=g;c[14404]=h;c[14406]=0;c[14300]=c[14409];c[14299]=-1;c[14304]=57204;c[14303]=57204;c[14306]=57212;c[14305]=57212;c[14308]=57220;c[14307]=57220;c[14310]=57228;c[14309]=57228;c[14312]=57236;c[14311]=57236;c[14314]=57244;c[14313]=57244;c[14316]=57252;c[14315]=57252;c[14318]=57260;c[14317]=57260;c[14320]=57268;c[14319]=57268;c[14322]=57276;c[14321]=57276;c[14324]=57284;c[14323]=57284;c[14326]=57292;c[14325]=57292;c[14328]=57300;c[14327]=57300;c[14330]=57308;c[14329]=57308;c[14332]=57316;c[14331]=57316;c[14334]=57324;c[14333]=57324;c[14336]=57332;c[14335]=57332;c[14338]=57340;c[14337]=57340;c[14340]=57348;c[14339]=57348;c[14342]=57356;c[14341]=57356;c[14344]=57364;c[14343]=57364;c[14346]=57372;c[14345]=57372;c[14348]=57380;c[14347]=57380;c[14350]=57388;c[14349]=57388;c[14352]=57396;c[14351]=57396;c[14354]=57404;c[14353]=57404;c[14356]=57412;c[14355]=57412;c[14358]=57420;c[14357]=57420;c[14360]=57428;c[14359]=57428;c[14362]=57436;c[14361]=57436;c[14364]=57444;c[14363]=57444;c[14366]=57452;c[14365]=57452;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14298]=c[14413]}while(0);b=c[14294]|0;if(b>>>0>m>>>0){t=b-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}}v=ox()|0;c[v>>2]=48;v=0;zb=w;return v|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14295]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14296]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14293]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=57468+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14297]|0)==(j|0)){j=(c[14294]|0)+b|0;c[14294]=j;c[14297]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(j|0)){j=(c[14293]|0)+b|0;c[14293]=j;c[14296]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14291]=c[14291]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=57468+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=57204+(a<<1<<2)|0;b=c[14291]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=57468+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14292]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14299]|0)+-1|0;c[14299]=j;if(j|0)return;a=57620;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14299]=-1;return}function HO(a,b){a=a|0;b=b|0;var d=0;if(a){d=B(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=FO(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;aP(a|0,0,d|0)|0;return a|0}function IO(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=FO(b)|0;return b|0}if(b>>>0>4294967231){b=ox()|0;c[b>>2]=48;b=0;return b|0}d=JO(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=FO(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;_O(d|0,a|0,(e>>>0>>0?e:b)|0)|0;GO(a);b=d;return b|0}function JO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14411]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;KO(k,d);return a|0}if((c[14297]|0)==(i|0)){k=(c[14294]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14297]=e;c[14294]=d;return a|0}if((c[14296]|0)==(i|0)){e=(c[14293]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14293]=d;c[14296]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;KO(i,k);return a|0}return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14296]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14293]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14297]|0)==(i|0)){i=(c[14294]|0)+b|0;c[14294]=i;c[14297]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(i|0)){i=(c[14293]|0)+b|0;c[14293]=i;c[14296]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=57468+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14292]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function LO(a){a=a|0;var b=0,d=0;b=VO()|0;d=c[b>>2]|0;a=d+a|0;if((a|0)<0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}if(a>>>0>(Ba()|0)>>>0?(Da(a|0)|0)==0:0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}c[b>>2]=a;return d|0}function MO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=B(e,f)|0;d=a>>>16;a=(c>>>16)+(B(e,d)|0)|0;e=b>>>16;b=B(e,f)|0;return (E((a>>>16)+(B(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=MO(e,f)|0;a=F()|0;return (E((B(b,f)|0)+(B(d,e)|0)+a|a&0|0),c|0|0)|0}function OO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (E(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function PO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (E(d|0),a-c>>>0|0)|0}function QO(a){a=a|0;return (a?31-(C(a^a-1)|0)|0:32)|0}function RO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (E(n|0),f)|0}else{if(!g){n=0;f=0;return (E(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (E(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (E(n|0),f)|0}g=h-1|0;if(g&h|0){i=(C(h|0)|0)+33-(C(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (E(o|0),p)|0}else{p=QO(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (E(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (E(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (E(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((QO(i|0)|0)>>>0);return (E(o|0),p)|0}g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (E(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=OO(m|0,l|0,-1,-1)|0;d=F()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;PO(k|0,d|0,e|0,n|0)|0;p=F()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=PO(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=F()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (E(o|0),p)|0}function SO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return RO(a,b,c,d,0)|0}function TO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function UO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;k=k+1|0;c[a>>2]=k;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=k;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;E(e|0);return d|0}f=f+1|0}e=e*2|0;d=IO(d|0,8*(e+1|0)|0)|0;d=XO(a|0,b|0,d|0,e|0)|0;E(e|0);return d|0}function YO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function ZO(a,b){a=a|0;b=b|0;if(!i){i=a;j=b}}function _O(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Ca(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function $O(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else _O(b,c,d)|0;return b|0}function aP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function bP(a){a=+a;return a>=0.0?+s(a+.5):+A(a-.5)}function cP(a,b){a=a|0;b=b|0;return +Db[a&3](b|0)}function dP(a,b,c){a=a|0;b=b|0;c=c|0;return +Eb[a&1](b|0,c|0)}function eP(a){a=a|0;return Fb[a&1]()|0}function fP(a,b){a=a|0;b=b|0;return Gb[a&127](b|0)|0}function gP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;return Hb[a&1](b|0,+c,d|0,e|0,f|0,g|0)|0}function hP(a,b,c){a=a|0;b=b|0;c=c|0;return Ib[a&63](b|0,c|0)|0}function iP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jb[a&63](b|0,c|0,d|0)|0}function jP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kb[a&15](b|0,c|0,d|0,e|0)|0}function kP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return Lb[a&7](b|0,c|0,d|0,e|0,+f)|0}function lP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Mb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function mP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Nb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function nP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ob[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function oP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Pb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function pP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Qb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function qP(a){a=a|0;Rb[a&1]()}function rP(a,b){a=a|0;b=b|0;Sb[a&255](b|0)}function sP(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function tP(a,b,c){a=a|0;b=b|0;c=c|0;Ub[a&63](b|0,c|0)}function uP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Vb[a&3](b|0,c|0,+d)}function vP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wb[a&3](b|0,c|0,d|0)}function wP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xb[a&31](b|0,c|0,d|0,e|0)}function xP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Yb[a&63](b|0,c|0,d|0,e|0,f|0)}function yP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Zb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function zP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;_b[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function AP(a){a=a|0;D(0);return 0.0}function BP(a,b){a=a|0;b=b|0;D(1);return 0.0}function CP(){D(2);return 0}function DP(a){a=a|0;D(3);return 0}function EP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;D(4);return 0}function FP(a,b){a=a|0;b=b|0;D(5);return 0}function GP(a,b,c){a=a|0;b=b|0;c=c|0;D(6);return 0}function HP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(7);return 0}function IP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;D(8);return 0}function JP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(9);return 0}function KP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;D(10);return 0}function LP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(11);return 0}function MP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(12);return 0}function NP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;D(13);return 0}function OP(){D(14)}function PP(a){a=a|0;D(15)}function QP(a,b){a=a|0;b=+b;D(16)}function RP(a,b){a=a|0;b=b|0;D(17)}function SP(a,b,c){a=a|0;b=b|0;c=+c;D(18)}function TP(a,b,c){a=a|0;b=b|0;c=c|0;D(19)}function UP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(20)}function VP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(21)}function WP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(22)}function XP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(23)} + +// EMSCRIPTEN_END_FUNCS +var Db=[AP,pr,sr,Cr];var Eb=[BP,ss];var Fb=[CP,lr];var Gb=[DP,pj,kx,rx,_A,ND,OD,QD,RD,aE,bE,dE,eE,aF,gF,lF,mF,rF,sF,NH,UH,VH,WH,XH,YH,ZH,_H,vI,CI,DI,EI,FI,GI,HI,II,qJ,rJ,wJ,BJ,CJ,HJ,MJ,NJ,SJ,XJ,YJ,bK,ZK,_K,aL,pL,qL,sL,XL,YL,cM,dM,iL,jL,lL,yL,zL,BL,ex,bu,FO,dx,Kq,Mq,Tq,Uq,ar,br,cr,hr,ir,vr,xr,zr,Er,Gr,Ir,Ds,Pt,Wt,Xt,Yt,Zt,zu,Bu,Yw,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP];var Hb=[EP,Lx];var Ib=[FP,$l,iq,pq,SD,UD,fE,hE,cF,iF,nF,tF,KL,ML,OL,nM,pM,rM,Le,bx,Nq,Pq,Qq,Rq,Xq,_q,$q,er,fr,gr,nt,Os,Jt,Rt,Au,Cu,Du,Hu,Iu,Ju,Ku,Mu,Nu,Su,Tu,Uu,Vu,Wu,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP];var Jb=[GP,lx,qx,fy,FA,fB,KD,PD,TD,ZD,cE,gE,bF,hF,AF,HF,NK,SK,LL,NL,QL,jM,oM,qM,tM,zw,Iq,Wq,Yq,Zq,dr,ht,Ys,Ew,Fw,Ez,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP];var Kb=[HP,mx,sx,PL,kM,lM,mM,sM,wt,Gw,Hw,HP,HP,HP,HP,HP];var Lb=[IP,oH,pH,FH,GH,IP,IP,IP];var Mb=[JP,yF,FF,jH,kH,mH,qH,AH,BH,DH,HH,YK,$K,oL,rL,RL,uM,hL,kL,xL,AL,Lw,Mw,JP,JP,JP,JP,JP,JP,JP,JP,JP];var Nb=[KP,BK,HK,KP];var Ob=[LP,MF,NF,OF,PF,QF,RF,SF,TF,UF,VF,WF,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,lH,nH,CH,EH,OH,PH,QH,RH,SH,wI,xI,yI,zI,AI,CK,IK,Iw,Jw,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP];var Pb=[MP,eJ,kJ,gK,hK,rK,sK,MP];var Qb=[NP,TH,BI,WK,XK,mL,nL,fL,gL,vL,wL,NP,NP,NP,NP,NP];var Rb=[OP,wA];var Sb=[PP,Qi,Ri,Ti,Ui,nj,oj,ZN,Zl,_l,am,gq,hq,jq,nq,oq,qq,BA,CA,DA,EA,OA,YA,ZA,dB,eB,gB,DD,FD,HD,ID,WD,XD,mE,nE,oE,pE,rE,sE,tE,uE,wE,xE,yE,zE,BE,CE,DE,EE,_E,eF,jF,pF,vF,wF,xF,DF,EF,KF,LF,GG,HG,hH,iH,yH,zH,LH,MH,tI,uI,cJ,dJ,iJ,jJ,oJ,pJ,zJ,AJ,KJ,LJ,VJ,WJ,eK,fK,pK,qK,zK,AK,FK,GK,LK,MK,QK,RK,CF,eL,VK,tL,uL,FL,GL,IL,JL,VL,WL,aM,bM,hM,iM,vM,wM,xM,hf,ax,jr,Ot,St,Vt,du,eu,pw,qw,fw,$v,Rv,Jv,Yu,Qu,Ru,Fu,Gu,wu,xu,iw,lw,Kw,Ow,Zw,_w,$w,fx,hx,jx,cG,eG,iK,GO,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP];var Tb=[QP,nr,rr,Ar];var Ub=[RP,JD,YD,$E,fF,kF,qF,sJ,tJ,uJ,vJ,xJ,yJ,DJ,EJ,FJ,GJ,IJ,JJ,OJ,PJ,QJ,RJ,TJ,UJ,ZJ,_J,$J,aK,cK,dK,PK,UK,ZL,_L,$L,eM,fM,gM,Nt,tr,wr,yr,Dr,Fr,Hr,Is,Qt,ow,ew,Fv,su,Nw,gx,ix,Mx,RP,RP,RP,RP,RP,RP,RP,RP];var Vb=[SP,xs,gs,SP];var Wb=[TP,Ww,ns,TP];var Xb=[UP,IA,RA,jB,MD,$D,zF,GF,Ue,bw,dw,Lv,Mv,Nv,Ov,Pv,tu,uu,vu,hw,jw,kw,sw,tw,uw,vw,ww,UP,UP,UP,UP,UP];var Yb=[VP,HA,QA,iB,Sv,Tv,Uv,Vv,Wv,Xv,Yv,Zv,_v,Dv,Cv,Bv,Av,zv,yv,xv,wv,vv,uv,tv,sv,rv,qv,pv,ov,nv,mv,lv,kv,jv,iv,hv,gv,fv,ev,dv,cv,bv,av,$u,Ev,_u,Zu,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP];var Zb=[WP,GA,PA,hB,LD,_D,OK,TK];var _b=[XP,aw,cw,Kv,Gv,Hv,Iv,XP];return{__GLOBAL__I_000101:SE,__GLOBAL__sub_I_ARToolKitJS_cpp:Dq,__GLOBAL__sub_I_bind_cpp:EB,__GLOBAL__sub_I_iostream_cpp:TE,__ZSt18uncaught_exceptionv:yD,___cxa_can_catch:wB,___cxa_is_pointer_type:xB,___embind_register_native_and_builtin_types:HB,___emscripten_environ_constructor:zB,___errno_location:ox,___getTypeName:tD,___muldi3:NO,___udivdi3:SO,__get_daylight:BB,__get_environ:DB,__get_timezone:CB,__get_tzname:AB,_bitshift64Lshr:TO,_bitshift64Shl:UO,_emscripten_get_sbrk_ptr:VO,_emscripten_replace_memory:Cb,_free:GO,_i64Add:OO,_i64Subtract:PO,_llvm_bswap_i32:WO,_malloc:FO,_memcpy:_O,_memmove:$O,_memset:aP,_realloc:IO,_roundf:bP,_saveSetjmp:XO,_setThrew:ZO,_testSetjmp:YO,dynCall_di:cP,dynCall_dii:dP,dynCall_i:eP,dynCall_ii:fP,dynCall_iidiiii:gP,dynCall_iii:hP,dynCall_iiii:iP,dynCall_iiiii:jP,dynCall_iiiiid:kP,dynCall_iiiiii:lP,dynCall_iiiiiid:mP,dynCall_iiiiiii:nP,dynCall_iiiiiiii:oP,dynCall_iiiiiiiii:pP,dynCall_v:qP,dynCall_vi:rP,dynCall_vid:sP,dynCall_vii:tP,dynCall_viid:uP,dynCall_viii:vP,dynCall_viiii:wP,dynCall_viiiii:xP,dynCall_viiiiii:yP,dynCall_viiiiiii:zP,establishStackSpace:cc,stackAlloc:$b,stackRestore:bc,stackSave:ac}}) + + +// EMSCRIPTEN_END_ASM +(asmGlobalArg,asmLibraryArg,buffer);var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var __ZSt18uncaught_exceptionv=Module["__ZSt18uncaught_exceptionv"]=asm["__ZSt18uncaught_exceptionv"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=asm["___embind_register_native_and_builtin_types"];var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=asm["___emscripten_environ_constructor"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var __get_daylight=Module["__get_daylight"]=asm["__get_daylight"];var __get_environ=Module["__get_environ"]=asm["__get_environ"];var __get_timezone=Module["__get_timezone"]=asm["__get_timezone"];var __get_tzname=Module["__get_tzname"]=asm["__get_tzname"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_get_sbrk_ptr=Module["_emscripten_get_sbrk_ptr"]=asm["_emscripten_get_sbrk_ptr"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _roundf=Module["_roundf"]=asm["_roundf"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _setThrew=Module["_setThrew"]=asm["_setThrew"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidiiii=Module["dynCall_iidiiii"]=asm["dynCall_iidiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status)}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); + +// continuing 'workerRunner' function from treex-armarkercontrols-nft-start.js file + +this.onmessage = function (e) { + var msg = e.data; + switch (msg.type) { + case "init": { + load(msg); + return; + } + case "process": { + next = msg.imagedata; + process(); + return; + } + } +}; + +var next = null; + +var ar = null; +var markerResult = null; + +function load(msg) { + var camUrl, nftMarkerUrl; + var basePath = self.origin; + console.log('base path:', basePath); + // test if the msg.param (the incoming url) is an http or https path + var regexC = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reC = regexC.test(msg.param); + if (reC == true) { + camUrl = msg.param; + } else if (reC == false) { + camUrl = basePath + '/' + msg.param; + } + var onLoad = function () { + ar = new ARController(msg.pw, msg.ph, param); + var cameraMatrix = ar.getCameraMatrix(); + + // after the ARController is set up, we load the NFT Marker + var regexM = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reM = regexM.test(msg.marker); + if (reM == true) { + nftMarkerUrl = msg.marker; + } else if (reM == false) { + nftMarkerUrl = basePath + '/' + msg.marker; + } + ar.loadNFTMarker(nftMarkerUrl, function (markerId) { + ar.trackNFTMarkerId(markerId); + postMessage({ type: 'endLoading' }) + }, function (err) { + console.log('Error in loading marker on Worker', err) + }); + + // ...and we listen for event when marker has been found from camera + ar.addEventListener('getNFTMarker', function (ev) { + // let AR.js know that a NFT marker has been found, with its matrix for positioning + markerResult = { + type: 'found', + matrix: JSON.stringify(ev.data.matrix), + }; + }); + + postMessage({ type: "loaded", proj: JSON.stringify(cameraMatrix) }); + }; + + var onError = function (error) { + console.error(error); + }; + console.log(msg.param); + // we cannot pass the entire ARController, so we re-create one inside the Worker, starting from camera_param + var param = new ARCameraParam(camUrl, onLoad, onError); +} + +function process() { + markerResult = null; + + if (ar && ar.process) { + ar.process(next); + } + + if (markerResult) { + postMessage(markerResult); + } else { + postMessage({ + type: "not found", + }); + } + next = null; +} + }; + +function onMarkerFound(event) { + if (event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence) return + if (event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) +} +} +var THREEx = THREEx || {} + +THREEx.ArMarkerHelper = function(markerControls){ + this.object3d = new THREE.Group + + var mesh = new THREE.AxesHelper() + this.object3d.add(mesh) + + var text = markerControls.id + // debugger + // var text = markerControls.parameters.patternUrl.slice(-1).toUpperCase(); + + var canvas = document.createElement( 'canvas' ); + canvas.width = 64; + canvas.height = 64; + + var context = canvas.getContext( '2d' ); + var texture = new THREE.CanvasTexture( canvas ); + + // put the text in the sprite + context.font = '48px monospace'; + context.fillStyle = 'rgba(192,192,255, 0.5)'; + context.fillRect( 0, 0, canvas.width, canvas.height ); + context.fillStyle = 'darkblue'; + context.fillText(text, canvas.width/4, 3*canvas.height/4 ) + texture.needsUpdate = true + + // var geometry = new THREE.CubeGeometry(1, 1, 1) + var geometry = new THREE.PlaneGeometry(1, 1) + var material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true + }); + var mesh = new THREE.Mesh(geometry, material) + mesh.rotation.x = -Math.PI/2 + + this.object3d.add(mesh) + +} +var THREEx = THREEx || {} + +/** + * - lerp position/quaternino/scale + * - minDelayDetected + * - minDelayUndetected + * @param {[type]} object3d [description] + * @param {[type]} parameters [description] + */ +THREEx.ArSmoothedControls = function(object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + // copy parameters + this.object3d.visible = false + + this._lastLerpStepAt = null + this._visibleStartedAt = null + this._unvisibleStartedAt = null + + // handle default parameters + parameters = parameters || {} + this.parameters = { + // lerp coeficient for the position - between [0,1] - default to 1 + lerpPosition: 0.8, + // lerp coeficient for the quaternion - between [0,1] - default to 1 + lerpQuaternion: 0.2, + // lerp coeficient for the scale - between [0,1] - default to 1 + lerpScale: 0.7, + // delay for lerp fixed steps - in seconds - default to 1/120 + lerpStepDelay: 1/60, + // minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds + minVisibleDelay: 0.0, + // minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds + minUnvisibleDelay: 0.2, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } +} + +THREEx.ArSmoothedControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +THREEx.ArSmoothedControls.prototype.constructor = THREEx.ArSmoothedControls; + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArSmoothedControls.prototype.update = function(targetObject3d){ + var object3d = this.object3d + var parameters = this.parameters + var wasVisible = object3d.visible + var present = performance.now()/1000 + + + ////////////////////////////////////////////////////////////////////////////// + // handle object3d.visible with minVisibleDelay/minUnvisibleDelay + ////////////////////////////////////////////////////////////////////////////// + if( targetObject3d.visible === false ) this._visibleStartedAt = null + if( targetObject3d.visible === true ) this._unvisibleStartedAt = null + + if( targetObject3d.visible === true && this._visibleStartedAt === null ) this._visibleStartedAt = present + if( targetObject3d.visible === false && this._unvisibleStartedAt === null ) this._unvisibleStartedAt = present + + if( wasVisible === false && targetObject3d.visible === true ){ + var visibleFor = present - this._visibleStartedAt + if( visibleFor >= this.parameters.minVisibleDelay ){ + object3d.visible = true + snapDirectlyToTarget() + } + // console.log('visibleFor', visibleFor) + } + + if( wasVisible === true && targetObject3d.visible === false ){ + var unvisibleFor = present - this._unvisibleStartedAt + if( unvisibleFor >= this.parameters.minUnvisibleDelay ){ + object3d.visible = false + } + } + + ////////////////////////////////////////////////////////////////////////////// + // apply lerp on positon/quaternion/scale + ////////////////////////////////////////////////////////////////////////////// + + // apply lerp steps - require fix time steps to behave the same no matter the fps + if( this._lastLerpStepAt === null ){ + applyOneSlerpStep() + this._lastLerpStepAt = present + }else{ + var nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay ) + for(var i = 0; i < nStepsToDo; i++){ + applyOneSlerpStep() + this._lastLerpStepAt += this.parameters.lerpStepDelay + } + } + + // disable the lerp by directly copying targetObject3d position/quaternion/scale + if( false ){ + snapDirectlyToTarget() + } + + // update the matrix + this.object3d.updateMatrix() + + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible/becameUnVisible event + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible event + if( wasVisible === false && object3d.visible === true ){ + this.dispatchEvent({ type: 'becameVisible' }) + } + // honor becameUnVisible event + if( wasVisible === true && object3d.visible === false ){ + this.dispatchEvent({ type: 'becameUnVisible' }) + } + return + + function snapDirectlyToTarget(){ + object3d.position.copy( targetObject3d.position ) + object3d.quaternion.copy( targetObject3d.quaternion ) + object3d.scale.copy( targetObject3d.scale ) + } + + function applyOneSlerpStep(){ + object3d.position.lerp(targetObject3d.position, parameters.lerpPosition) + object3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion) + object3d.scale.lerp(targetObject3d.scale, parameters.lerpScale) + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters, sourceParameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // Labeling mode for markers - ['black_region', 'white_region'] + // black_region: Black bordered markers on a white background, white_region: White bordered markers on a black background + labelingMode: 'black_region', + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + console.assert(["black_region", "white_region"].indexOf(this.parameters.labelingMode) !== -1, "invalid parameter labelingMode", this.parameters.labelingMode); + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false) + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done) + } else console.assert(false) + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + if (!markerControls.context.arController.showObject) { + markerControls.object3d.visible = false + } + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement) + } else { + console.assert(false) + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + var onError = function(err) { + console.error(err); + }; + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, + function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set the labelingMode for artoolkit + var labelingModeTypes = { + "black_region": artoolkit.AR_LABELING_BLACK_REGION, + "white_region": artoolkit.AR_LABELING_WHITE_REGION + } + var labelingModeType = labelingModeTypes[_this.parameters.labelingMode]; + console.assert(labelingModeType !== undefined); + arController.setLabelingMode(labelingModeType); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }, + onError + ); + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function () { + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +/** + * ArToolkitProfile helps you build parameters for artoolkit + * - it is fully independent of the rest of the code + * - all the other classes are still expecting normal parameters + * - you can use this class to understand how to tune your specific usecase + * - it is made to help people to build parameters without understanding all the underlying details. + */ +ARjs.Profile = THREEx.ArToolkitProfile = function () { + this.reset() + + this.performance('default') +} + + +ARjs.Profile.prototype._guessPerformanceLabel = function () { + var isMobile = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ? true : false + if (isMobile === true) { + return 'phone-normal' + } + return 'desktop-normal' +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all parameters + */ +ARjs.Profile.prototype.reset = function () { + this.sourceParameters = { + // to read from the webcam + sourceType: 'webcam', + } + + this.contextParameters = { + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + detectionMode: 'mono', + } + this.defaultMarkerParameters = { + type: 'pattern', + patternUrl: THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro', + changeMatrixMode: 'modelViewMatrix', + } + return this +}; + +////////////////////////////////////////////////////////////////////////////// +// Performance +////////////////////////////////////////////////////////////////////////////// + + + +ARjs.Profile.prototype.performance = function (label) { + + if (label === 'default') { + label = this._guessPerformanceLabel() + } + + if (label === 'desktop-fast') { + this.contextParameters.canvasWidth = 640 * 3 + this.contextParameters.canvasHeight = 480 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'desktop-normal') { + this.contextParameters.canvasWidth = 640 + this.contextParameters.canvasHeight = 480 + + this.contextParameters.maxDetectionRate = 60 + } else if (label === 'phone-normal') { + this.contextParameters.canvasWidth = 80 * 4 + this.contextParameters.canvasHeight = 60 * 4 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'phone-slow') { + this.contextParameters.canvasWidth = 80 * 3 + this.contextParameters.canvasHeight = 60 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else { + console.assert(false, 'unknonwn label ' + label) + } + return this +} + +////////////////////////////////////////////////////////////////////////////// +// Marker +////////////////////////////////////////////////////////////////////////////// + + +ARjs.Profile.prototype.defaultMarker = function (trackingBackend) { + trackingBackend = trackingBackend || this.contextParameters.trackingBackend + + if (trackingBackend === 'artoolkit') { + this.contextParameters.detectionMode = 'mono' + this.defaultMarkerParameters.type = 'pattern' + this.defaultMarkerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro' + } else console.assert(false) + + return this +} +////////////////////////////////////////////////////////////////////////////// +// Source +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.sourceWebcam = function () { + this.sourceParameters.sourceType = 'webcam' + delete this.sourceParameters.sourceUrl + return this +} + +ARjs.Profile.prototype.sourceVideo = function (url) { + this.sourceParameters.sourceType = 'video' + this.sourceParameters.sourceUrl = url + return this +} + +ARjs.Profile.prototype.sourceImage = function (url) { + this.sourceParameters.sourceType = 'image' + this.sourceParameters.sourceUrl = url + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingBackend = function (trackingBackend) { + console.warn('stop profile.trackingBackend() obsolete function. use .trackingMethod instead') + this.contextParameters.trackingBackend = trackingBackend + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.changeMatrixMode = function (changeMatrixMode) { + this.defaultMarkerParameters.changeMatrixMode = changeMatrixMode + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingMethod = function (trackingMethod) { + var data = ARjs.Utils.parseTrackingMethod(trackingMethod) + this.defaultMarkerParameters.markersAreaEnabled = data.markersAreaEnabled + this.contextParameters.trackingBackend = data.trackingBackend + return this +} + +/** + * check if the profile is valid. Throw an exception is not valid + */ +ARjs.Profile.prototype.checkIfValid = function () { + return this +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Source = THREEx.ArToolkitSource = function (parameters) { + var _this = this + + this.ready = false + this.domElement = null + + // handle default parameters + this.parameters = { + // type of source - ['webcam', 'image', 'video'] + sourceType: 'webcam', + // url of the source - valid if sourceType = image|video + sourceUrl: null, + + // Device id of the camera to use (optional) + deviceId: null, + + // resolution of at which we initialize in the source image + sourceWidth: 640, + sourceHeight: 480, + // resolution displayed for the source + displayWidth: 640, + displayHeight: 480, + } + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.init = function (onReady, onError) { + var _this = this + + if (this.parameters.sourceType === 'image') { + var domElement = this._initSourceImage(onSourceReady, onError) + } else if (this.parameters.sourceType === 'video') { + var domElement = this._initSourceVideo(onSourceReady, onError) + } else if (this.parameters.sourceType === 'webcam') { + // var domElement = this._initSourceWebcamOld(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) + } else { + console.assert(false) + } + + // attach + this.domElement = domElement + this.domElement.style.position = 'absolute' + this.domElement.style.top = '0px' + this.domElement.style.left = '0px' + this.domElement.style.zIndex = '-2' + this.domElement.setAttribute('id', 'arjs-video'); + + return this + function onSourceReady() { + document.body.appendChild(_this.domElement); + window.dispatchEvent(new CustomEvent('arjs-video-loaded', { + detail: { + component: document.querySelector('#arjs-video'), + }, + })); + + _this.ready = true + + onReady && onReady() + } +} + +//////////////////////////////////////////////////////////////////////////////// +// init image source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceImage = function (onReady) { + // TODO make it static + var domElement = document.createElement('img'); + domElement.src = this.parameters.sourceUrl; + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onload = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// init video source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceVideo = function (onReady) { + // TODO make it static + var domElement = document.createElement('video'); + domElement.src = this.parameters.sourceUrl; + + domElement.style.objectFit = 'initial'; + + domElement.autoplay = true; + domElement.webkitPlaysinline = true; + domElement.controls = false; + domElement.loop = true; + domElement.muted = true; + + // trick to trigger the video on android + document.body.addEventListener('click', function onClick() { + document.body.removeEventListener('click', onClick); + domElement.play() + }); + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onloadeddata = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// handle webcam source +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype._initSourceWebcam = function (onReady, onError) { + var _this = this + + // init default value + onError = onError || function (error) { + var event = new CustomEvent('camera-error', { error: error }); + window.dispatchEvent(event); + + setTimeout(() => { + alert('Webcam Error\nName: ' + error.name + '\nMessage: ' + error.message) + }, 1000); + } + + var domElement = document.createElement('video'); + domElement.setAttribute('autoplay', ''); + domElement.setAttribute('muted', ''); + domElement.setAttribute('playsinline', ''); + domElement.style.width = this.parameters.displayWidth + 'px' + domElement.style.height = this.parameters.displayHeight + 'px' + + // check API is available + if (navigator.mediaDevices === undefined + || navigator.mediaDevices.enumerateDevices === undefined + || navigator.mediaDevices.getUserMedia === undefined) { + if (navigator.mediaDevices === undefined) var fctName = 'navigator.mediaDevices' + else if (navigator.mediaDevices.enumerateDevices === undefined) var fctName = 'navigator.mediaDevices.enumerateDevices' + else if (navigator.mediaDevices.getUserMedia === undefined) var fctName = 'navigator.mediaDevices.getUserMedia' + else console.assert(false) + onError({ + name: '', + message: 'WebRTC issue-! ' + fctName + ' not present in your browser' + }); + return null + } + + // get available devices + navigator.mediaDevices.enumerateDevices().then(function (devices) { + var userMediaConstraints = { + audio: false, + video: { + facingMode: 'environment', + width: { + ideal: _this.parameters.sourceWidth, + // min: 1024, + // max: 1920 + }, + height: { + ideal: _this.parameters.sourceHeight, + // min: 776, + // max: 1080 + } + } + }; + + if (null !== _this.parameters.deviceId) { + userMediaConstraints.video.deviceId = { + exact: _this.parameters.deviceId + }; + } + + // get a device which satisfy the constraints + navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) { + // set the .src of the domElement + domElement.srcObject = stream; + + var event = new CustomEvent('camera-init', { stream: stream }); + window.dispatchEvent(event); + // to start the video, when it is possible to start it only on userevent. like in android + document.body.addEventListener('click', function () { + domElement.play(); + }); + // domElement.play(); + + onReady(); + }).catch(function (error) { + onError({ + name: error.name, + message: error.message + }); + }); + }).catch(function (error) { + onError({ + message: error.message + }); + }); + + return domElement +} + +////////////////////////////////////////////////////////////////////////////// +// Handle Mobile Torch +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.hasMobileTorch = function () { + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) return false + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + + // if videoTrack.getCapabilities() doesnt exist, return false now + if (videoTrack.getCapabilities === undefined) return false + + var capabilities = videoTrack.getCapabilities() + + return capabilities.torch ? true : false +} + +/** + * toggle the flash/torch of the mobile fun if applicable. + * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/ + */ +ARjs.Source.prototype.toggleMobileTorch = function () { + // sanity check + console.assert(this.hasMobileTorch() === true) + + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) { + alert('enabling mobile torch is available only on webcam') + return + } + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + var capabilities = videoTrack.getCapabilities() + + if (!capabilities.torch) { + alert('no mobile torch is available on your camera') + return + } + + this._currentTorchStatus = this._currentTorchStatus === false ? true : false + videoTrack.applyConstraints({ + advanced: [{ + torch: this._currentTorchStatus + }] + }).catch(function (error) { + console.log(error) + }); +} + +ARjs.Source.prototype.domElementWidth = function () { + return parseInt(this.domElement.style.width) +} +ARjs.Source.prototype.domElementHeight = function () { + return parseInt(this.domElement.style.height) +} + +//////////////////////////////////////////////////////////////////////////////// +// handle resize +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResizeElement = function () { + var _this = this + var screenWidth = window.innerWidth + var screenHeight = window.innerHeight + + // sanity check + console.assert(arguments.length === 0) + + // compute sourceWidth, sourceHeight + if (this.domElement.nodeName === "IMG") { + var sourceWidth = this.domElement.naturalWidth + var sourceHeight = this.domElement.naturalHeight + } else if (this.domElement.nodeName === "VIDEO") { + var sourceWidth = this.domElement.videoWidth + var sourceHeight = this.domElement.videoHeight + } else { + console.assert(false) + } + + // compute sourceAspect + var sourceAspect = sourceWidth / sourceHeight + // compute screenAspect + var screenAspect = screenWidth / screenHeight + + // if screenAspect < sourceAspect, then change the width, else change the height + if (screenAspect < sourceAspect) { + // compute newWidth and set .width/.marginLeft + var newWidth = sourceAspect * screenHeight + this.domElement.style.width = newWidth + 'px' + this.domElement.style.marginLeft = -(newWidth - screenWidth) / 2 + 'px' + + // init style.height/.marginTop to normal value + this.domElement.style.height = screenHeight + 'px' + this.domElement.style.marginTop = '0px' + } else { + // compute newHeight and set .height/.marginTop + var newHeight = 1 / (sourceAspect / screenWidth) + this.domElement.style.height = newHeight + 'px' + this.domElement.style.marginTop = -(newHeight - screenHeight) / 2 + 'px' + + // init style.width/.marginLeft to normal value + this.domElement.style.width = screenWidth + 'px' + this.domElement.style.marginLeft = '0px' + } +} +/* +ARjs.Source.prototype.copyElementSizeTo = function(otherElement){ + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop +} +*/ + +ARjs.Source.prototype.copyElementSizeTo = function (otherElement) { + + if (window.innerWidth > window.innerHeight) { + //landscape + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop + } + else { + //portrait + otherElement.style.height = this.domElement.style.height + otherElement.style.width = (parseInt(otherElement.style.height) * 4 / 3) + "px"; + otherElement.style.marginLeft = ((window.innerWidth - parseInt(otherElement.style.width)) / 2) + "px"; + otherElement.style.marginTop = 0; + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.copySizeTo = function () { + console.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo') + this.copyElementSizeTo.apply(this, arguments) +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResize = function (arToolkitContext, renderer, camera) { + if (arguments.length !== 3) { + console.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement') + return this.onResizeElement.apply(this, arguments) + } + + var trackingBackend = arToolkitContext.parameters.trackingBackend + + + // RESIZE DOMELEMENT + if (trackingBackend === 'artoolkit') { + + this.onResizeElement() + + var isAframe = renderer.domElement.dataset.aframeCanvas ? true : false + if (isAframe === false) { + this.copyElementSizeTo(renderer.domElement) + } else { + + } + + if (arToolkitContext.arController !== null) { + this.copyElementSizeTo(arToolkitContext.arController.canvas) + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) + + + // UPDATE CAMERA + if (trackingBackend === 'artoolkit') { + if (arToolkitContext.arController !== null) { + camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()); + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) +} +var THREEx = THREEx || {} + +THREEx.ArVideoInWebgl = function(videoTexture){ + var _this = this + + ////////////////////////////////////////////////////////////////////////////// + // plane always in front of the camera, exactly as big as the viewport + ////////////////////////////////////////////////////////////////////////////// + var geometry = new THREE.PlaneGeometry(2, 2); + var material = new THREE.MeshBasicMaterial({ + // map : new THREE.TextureLoader().load('images/water.jpg'), + map : videoTexture, + // side: THREE.DoubleSide, + // opacity: 0.5, + // color: 'pink', + // transparent: true, + }); + var seethruPlane = new THREE.Mesh(geometry, material); + this.object3d = seethruPlane + // scene.add(seethruPlane); + + // arToolkitSource.domElement.style.visibility = 'hidden' + + // TODO extract the fov from the projectionMatrix + // camera.fov = 43.1 + this.update = function(camera){ + camera.updateMatrixWorld(true) + + // get seethruPlane position + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + seethruPlane.position.copy(position) + camera.localToWorld(seethruPlane.position) + + // get seethruPlane quaternion + camera.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + seethruPlane.quaternion.copy( camera.quaternion ) + + // extract the fov from the projectionMatrix + var fov = THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2; + // console.log('fov', fov) + + var elementWidth = parseFloat( arToolkitSource.domElement.style.width.replace(/px$/,''), 10 ) + var elementHeight = parseFloat( arToolkitSource.domElement.style.height.replace(/px$/,''), 10 ) + + var aspect = elementWidth / elementHeight + + // camera.fov = fov + // if( vrDisplay.isPresenting ){ + // fov *= 2 + // aspect *= 2 + // } + + // get seethruPlane height relative to fov + seethruPlane.scale.y = Math.tan(THREE.Math.DEG2RAD * fov/2)*position.length() + // get seethruPlane aspect + seethruPlane.scale.x = seethruPlane.scale.y * aspect + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // var video = arToolkitSource.domElement; + // + // window.addEventListener('resize', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // video.addEventListener('canplaythrough', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // function updateSeeThruAspectUv(plane){ + // + // // if video isnt yet ready to play + // if( video.videoWidth === 0 || video.videoHeight === 0 ) return + // + // var faceVertexUvs = plane.geometry.faceVertexUvs[0] + // var screenAspect = window.innerWidth / window.innerHeight + // var videoAspect = video.videoWidth / video.videoHeight + // + // plane.geometry.uvsNeedUpdate = true + // if( screenAspect >= videoAspect ){ + // var actualHeight = videoAspect / screenAspect; + // // faceVertexUvs y 0 + // faceVertexUvs[0][1].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][0].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][1].y = 0.5 - actualHeight/2 + // // faceVertexUvs y 1 + // faceVertexUvs[0][0].y = 0.5 + actualHeight/2 + // faceVertexUvs[0][2].y = 0.5 + actualHeight/2 + // faceVertexUvs[1][2].y = 0.5 + actualHeight/2 + // }else{ + // var actualWidth = screenAspect / videoAspect; + // // faceVertexUvs x 0 + // faceVertexUvs[0][0].x = 0.5 - actualWidth/2 + // faceVertexUvs[0][1].x = 0.5 - actualWidth/2 + // faceVertexUvs[1][0].x = 0.5 - actualWidth/2 + // + // // faceVertexUvs x 1 + // faceVertexUvs[0][2].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][1].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][2].x = 0.5 + actualWidth/2 + // } + // } + +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.HitTestingPlane = function(sourceElement){ + this._sourceElement = sourceElement + + // create _pickingScene + this._pickingScene = new THREE.Scene + + // create _pickingPlane + var geometry = new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2) + // var geometry = new THREE.PlaneGeometry(20,20).rotateX(-Math.PI/2) + var material = new THREE.MeshBasicMaterial({ + // opacity: 0.5, + // transparent: true, + wireframe: true + }) + // material.visible = false + this._pickingPlane = new THREE.Mesh(geometry, material) + this._pickingScene.add(this._pickingPlane) + + // Create pickingCamera + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + // TODO hardcoded fov - couch + this._pickingCamera = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 30); +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.update = function(camera, pickingRoot, changeMatrixMode){ + + this.onResize() + + + if( changeMatrixMode === 'modelViewMatrix' ){ + // set pickingPlane position + var pickingPlane = this._pickingPlane + pickingRoot.parent.updateMatrixWorld() + pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld) + // set position/quaternion/scale from pickingPlane.matrix + pickingPlane.matrix.decompose(pickingPlane.position, pickingPlane.quaternion, pickingPlane.scale) + }else if( changeMatrixMode === 'cameraTransformMatrix' ){ + // set pickingPlane position + var pickingCamera = this._pickingCamera + camera.updateMatrixWorld() + pickingCamera.matrix.copy(camera.matrixWorld) + // set position/quaternion/scale from pickingCamera.matrix + pickingCamera.matrix.decompose(pickingCamera.position, pickingCamera.quaternion, pickingCamera.scale) + }else console.assert(false) + + +// var position = this._pickingPlane.position +// console.log('pickingPlane position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) +// var position = this._pickingCamera.position +// console.log('his._pickingCamera position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) + +} + +////////////////////////////////////////////////////////////////////////////// +// resize camera +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.onResize = function(){ + var sourceElement = this._sourceElement + var pickingCamera = this._pickingCamera + +// FIXME why using css here ??? not even computed style +// should get the size of the elment directly independantly + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + pickingCamera.aspect = fullWidth / fullHeight + + pickingCamera.updateProjectionMatrix() +} + +////////////////////////////////////////////////////////////////////////////// +// Perform test +////////////////////////////////////////////////////////////////////////////// +THREEx.HitTestingPlane.prototype.test = function(mouseX, mouseY){ + // convert mouseX, mouseY to [-1, +1] + mouseX = (mouseX-0.5)*2 + mouseY =-(mouseY-0.5)*2 + + this._pickingScene.updateMatrixWorld(true) + + // compute intersections between mouseVector3 and pickingPlane + var raycaster = new THREE.Raycaster(); + var mouseVector3 = new THREE.Vector3(mouseX, mouseY, 1); + raycaster.setFromCamera( mouseVector3, this._pickingCamera ) + var intersects = raycaster.intersectObjects( [this._pickingPlane] ) + + if( intersects.length === 0 ) return null + + // set new demoRoot position + var position = this._pickingPlane.worldToLocal( intersects[0].point.clone() ) + // TODO here do a look at the camera ? + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3(1,1,1)//.multiplyScalar(1) + + return { + position : position, + quaternion : quaternion, + scale : scale + } +} + +////////////////////////////////////////////////////////////////////////////// +// render the pickingPlane for debug +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.renderDebug = function(renderer){ + // render sceneOrtho + renderer.render( this._pickingScene, this._pickingCamera ) +} +// @namespace +var ARjs = ARjs || {} + +// TODO this is a controls... should i give the object3d here ? +// not according to 'no three.js dependancy' + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.Anchor = function(arSession, markerParameters){ + var _this = this + var arContext = arSession.arContext + var scene = arSession.parameters.scene + var camera = arSession.parameters.camera + + this.arSession = arSession + this.parameters = markerParameters + + // log to debug + console.log('ARjs.Anchor -', 'changeMatrixMode:', this.parameters.changeMatrixMode, '/ markersAreaEnabled:', markerParameters.markersAreaEnabled) + + var markerRoot = new THREE.Group + scene.add(markerRoot) + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var controlledObject = markerRoot + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var controlledObject = camera + }else console.assert(false) + + if( markerParameters.markersAreaEnabled === false ){ + var markerControls = new THREEx.ArMarkerControls(arContext, controlledObject, markerParameters) + this.controls = markerControls + }else{ + // sanity check - MUST be a trackingBackend with markers + console.assert( arContext.parameters.trackingBackend === 'artoolkit' ) + + // honor markers-page-resolution for https://webxr.io/augmented-website + if( location.hash.substring(1).startsWith('markers-page-resolution=') === true ){ + // get resolutionW/resolutionH from url + var markerPageResolution = location.hash.substring(1) + var matches = markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/) + console.assert(matches.length === 3) + var resolutionW = parseInt(matches[1]) + var resolutionH = parseInt(matches[2]) + var arContext = arSession.arContext + // generate and store the ARjsMultiMarkerFile + ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend, resolutionW, resolutionH) + } + + // if there is no ARjsMultiMarkerFile, build a default one + if( localStorage.getItem('ARjsMultiMarkerFile') === null ){ + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend) + } + + // get multiMarkerFile from localStorage + console.assert( localStorage.getItem('ARjsMultiMarkerFile') !== null ) + var multiMarkerFile = localStorage.getItem('ARjsMultiMarkerFile') + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var parent3D = scene + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var parent3D = camera + }else console.assert(false) + + // build a multiMarkerControls + var multiMarkerControls = ARjs.MarkersAreaControls.fromJSON(arContext, parent3D, controlledObject, multiMarkerFile) + this.controls = multiMarkerControls + + // honor markerParameters.changeMatrixMode + multiMarkerControls.parameters.changeMatrixMode = markerParameters.changeMatrixMode + +// TODO put subMarkerControls visibility into an external file. with 2 handling for three.js and babylon.js + // create ArMarkerHelper - useful to debug - super three.js specific + var markerHelpers = [] + multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){ + // add an helper to visuable each sub-marker + var markerHelper = new THREEx.ArMarkerHelper(subMarkerControls) + markerHelper.object3d.visible = false + // subMarkerControls.object3d.add( markerHelper.object3d ) + subMarkerControls.object3d.add( markerHelper.object3d ) + // add it to markerHelpers + markerHelpers.push(markerHelper) + }) + // define API specific to markersArea + this.markersArea = {} + this.markersArea.setSubMarkersVisibility = function(visible){ + markerHelpers.forEach(function(markerHelper){ + markerHelper.object3d.visible = visible + }) + } + } + + this.object3d = new THREE.Group() + + ////////////////////////////////////////////////////////////////////////////// + // THREEx.ArSmoothedControls + ////////////////////////////////////////////////////////////////////////////// + + var shouldBeSmoothed = true + + if( shouldBeSmoothed === true ){ + // build a smoothedControls + var smoothedRoot = new THREE.Group() + scene.add(smoothedRoot) + var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot) + smoothedRoot.add(this.object3d) + }else{ + markerRoot.add(this.object3d) + } + + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + this.update = function(){ + // update _this.object3d.visible + _this.object3d.visible = _this.object3d.parent.visible + + // console.log('controlledObject.visible', _this.object3d.parent.visible) + if( smoothedControls !== undefined ){ + // update smoothedControls parameters depending on how many markers are visible in multiMarkerControls + if( multiMarkerControls !== undefined ){ + multiMarkerControls.updateSmoothedControls(smoothedControls) + } + + // update smoothedControls + smoothedControls.update(markerRoot) + } + } +} +// @namespace +var ARjs = ARjs || {} + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.SessionDebugUI = function (arSession) { + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.left = '5px' + this.domElement.style.bottom = '10px' + this.domElement.style.textAlign = 'right' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.innerHTML = 'trackingBackend : ' + trackingBackend + this.domElement.appendChild(domElement) +} + +/** + * Url of augmented-website service - if === '' then dont include augmented-website link + * @type {String} + */ +ARjs.SessionDebugUI.AugmentedWebsiteURL = 'https://webxr.io/augmented-website' + +////////////////////////////////////////////////////////////////////////////// +// ARjs.AnchorDebugUI +////////////////////////////////////////////////////////////////////////////// + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.AnchorDebugUI = function (arAnchor) { + var arSession = arAnchor.arSession + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'inline-block' + this.domElement.style.padding = '0.5em' + this.domElement.style.margin = '0.5em' + this.domElement.style.textAlign = 'left' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.style.padding = '0.5em' + domElement.style.color = 'rgba(0,0,0,0.9)' + domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + domElement.style.position = 'fixed' + domElement.style.left = '5px' + domElement.style.bottom = '40px' + + this.domElement.appendChild(domElement) + domElement.innerHTML = 'markersAreaEnabled :' + arAnchor.parameters.markersAreaEnabled + + ////////////////////////////////////////////////////////////////////////////// + // toggle-marker-helper + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.textAlign = 'left' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonToggleMarkerHelpers' + domElement.innerHTML = 'toggle-marker-helper' + domElement.href = 'javascript:void(0)' + + var subMarkerHelpersVisible = false + domElement.addEventListener('click', function () { + subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true + arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Learn-new-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaLearner' + domElement.innerHTML = 'Learn-new-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + if (ARjs.AnchorDebugUI.MarkersAreaLearnerURL !== null) { + var learnerURL = ARjs.AnchorDebugUI.MarkersAreaLearnerURL + } else { + var learnerURL = ARjs.Context.baseURL + 'examples/multi-markers/examples/learner.html' + } + ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Reset-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaReset' + domElement.innerHTML = 'Reset-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend) + location.reload() + }) + } +} + +/** + * url for the markers-area learner. if not set, take the default one + * @type {String} + */ +ARjs.AnchorDebugUI.MarkersAreaLearnerURL = null +// @namespace +var ARjs = ARjs || {} + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.HitTesting = function (arSession) { + var _this = this + var arContext = arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + + this.enabled = true + this._arSession = arSession + this._hitTestingPlane = null + _this._hitTestingPlane = new THREEx.HitTestingPlane(arSession.arSource.domElement) +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// +/** + * update + * + * @param {THREE.Camera} camera - the camera to use + * @param {THREE.Object3D} object3d - + */ +ARjs.HitTesting.prototype.update = function (camera, pickingRoot, changeMatrixMode) { + // if it isnt enabled, do nothing + if (this.enabled === false) return + + + if (this._hitTestingPlane !== null) { + this._hitTestingPlane.update(camera, pickingRoot, changeMatrixMode) + } else console.assert(false) +} + +////////////////////////////////////////////////////////////////////////////// +// actual hit testing +////////////////////////////////////////////////////////////////////////////// + +/** + * Test the real world for intersections directly from a DomEvent + * + * @param {Number} mouseX - position X of the hit [-1, +1] + * @param {Number} mouseY - position Y of the hit [-1, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.testDomEvent = function (domEvent) { + var trackingBackend = this._arSession.arContext.parameters.trackingBackend + var arSource = this._arSession.arSource + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + var mouseX = domEvent.clientX / arSource.domElementWidth() + var mouseY = domEvent.clientY / arSource.domElementHeight() + + return this.test(mouseX, mouseY) +} + +/** + * Test the real world for intersections. + * + * @param {Number} mouseX - position X of the hit [0, +1] + * @param {Number} mouseY - position Y of the hit [0, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.test = function (mouseX, mouseY) { + var arContext = this._arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + var hitTestResults = [] + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + + var result = this._hitTestingPlane.test(mouseX, mouseY) + + // if no result is found, return now + if (result === null) return hitTestResults + + // build a ARjs.HitTesting.Result + var hitTestResult = new ARjs.HitTesting.Result(result.position, result.quaternion, result.scale) + hitTestResults.push(hitTestResult) + + return hitTestResults +} + +////////////////////////////////////////////////////////////////////////////// +// ARjs.HitTesting.Result +////////////////////////////////////////////////////////////////////////////// +/** + * Contains the result of ARjs.HitTesting.test() + * + * @param {THREE.Vector3} position - position to use + * @param {THREE.Quaternion} quaternion - quaternion to use + * @param {THREE.Vector3} scale - scale + */ +ARjs.HitTesting.Result = function (position, quaternion, scale) { + this.position = position + this.quaternion = quaternion + this.scale = scale +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.apply = function (object3d) { + object3d.position.copy(this.position) + object3d.quaternion.copy(this.quaternion) + object3d.scale.copy(this.scale) + + object3d.updateMatrix() +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyPosition = function (object3d) { + object3d.position.copy(this.position) + + object3d.updateMatrix() + + return this +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyQuaternion = function (object3d) { + object3d.quaternion.copy(this.quaternion) + + object3d.updateMatrix() + + return this +} +var ARjs = ARjs || {} + +/** + * define a ARjs.Session + * + * @param {Object} parameters - parameters for this session + */ +ARjs.Session = function(parameters){ + var _this = this + // handle default parameters + this.parameters = { + renderer: null, + camera: null, + scene: null, + sourceParameters: {}, + contextParameters: {}, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + // sanity check + console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer) + console.assert(this.parameters.camera instanceof THREE.Camera) + console.assert(this.parameters.scene instanceof THREE.Scene) + + + // backward emulation + Object.defineProperty(this, 'renderer', {get: function(){ + console.warn('use .parameters.renderer renderer') + return this.parameters.renderer; + }}); + Object.defineProperty(this, 'camera', {get: function(){ + console.warn('use .parameters.camera instead') + return this.parameters.camera; + }}); + Object.defineProperty(this, 'scene', {get: function(){ + console.warn('use .parameters.scene instead') + return this.parameters.scene; + }}); + + + // log the version + console.log('AR.js', ARjs.Context.REVISION, '- trackingBackend:', parameters.contextParameters.trackingBackend) + + ////////////////////////////////////////////////////////////////////////////// + // init arSource + ////////////////////////////////////////////////////////////////////////////// + var arSource = _this.arSource = new ARjs.Source(parameters.sourceParameters) + + arSource.init(function onReady(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + // handle resize + window.addEventListener('resize', function(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // init arContext + ////////////////////////////////////////////////////////////////////////////// + + // create atToolkitContext + var arContext = _this.arContext = new ARjs.Context(parameters.contextParameters) + + // initialize it + _this.arContext.init() + + arContext.addEventListener('initialized', function(event){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // update function + ////////////////////////////////////////////////////////////////////////////// + // update artoolkit on every frame + this.update = function(){ + if( arSource.ready === false ) return + + arContext.update( arSource.domElement ) + } +} + +ARjs.Session.prototype.onResize = function () { + this.arSource.onResize(this.arContext, this.parameters.renderer, this.parameters.camera) +}; +var ARjs = ARjs || {} +ARjs.Utils = {} + +/** + * Create a default rendering camera for this trackingBackend. They may be modified later. to fit physical camera parameters + * + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Utils.createDefaultCamera = function (trackingMethod) { + var trackingBackend = this.parseTrackingMethod(trackingMethod).trackingBackend + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false, 'unknown trackingBackend: ' + trackingBackend) + + return camera +} + +/** + * parse tracking method + * + * @param {String} trackingMethod - the tracking method to parse + * @return {Object} - various field of the tracking method + */ +ARjs.Utils.parseTrackingMethod = function (trackingMethod) { + + if (trackingMethod === 'best') { + trackingMethod = 'area-artoolkit'; + } + + if (trackingMethod.startsWith('area-')) { + return { + trackingBackend: trackingMethod.replace('area-', ''), + markersAreaEnabled: true, + } + } else { + return { + trackingBackend: trackingMethod, + markersAreaEnabled: false, + } + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaControls = THREEx.ArMultiMarkerControls = function(arToolkitContext, object3d, parameters){ + var _this = this + THREEx.ArBaseControls.call(this, object3d) + + if( arguments.length > 3 ) console.assert('wrong api for', THREEx.ArMultiMarkerControls) + + // have a parameters in argument + this.parameters = { + // list of controls for each subMarker + subMarkersControls: parameters.subMarkersControls, + // list of pose for each subMarker relative to the origin + subMarkerPoses: parameters.subMarkerPoses, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : parameters.changeMatrixMode !== undefined ? parameters.changeMatrixMode : 'modelViewMatrix', + } + + this.object3d.visible = false + // honor obsolete stuff - add a warning to use + this.subMarkersControls = this.parameters.subMarkersControls + this.subMarkerPoses = this.parameters.subMarkerPoses + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + +ARjs.MarkersAreaControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkersAreaControls.prototype.constructor = ARjs.MarkersAreaControls; + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaControls.prototype._onSourceProcessed = function(){ + var _this = this + var stats = { + count: 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + + var firstQuaternion = _this.parameters.subMarkersControls[0].object3d.quaternion + + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + + var markerObject3d = markerControls.object3d + // if this marker is not visible, ignore it + if( markerObject3d.visible === false ) return + + // transformation matrix of this.object3d according to this sub-markers + var matrix = markerObject3d.matrix.clone() + var markerPose = _this.parameters.subMarkerPoses[markerIndex] + matrix.multiply(new THREE.Matrix4().getInverse(markerPose)) + + // decompose the matrix into .position, .quaternion, .scale + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion() + var scale = new THREE.Vector3 + matrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + // honor _this.object3d.visible + if( stats.count > 0 ){ + _this.object3d.visible = true + }else{ + _this.object3d.visible = false + } + + // if at least one sub-marker has been detected, make the average of all detected markers + if( stats.count > 0 ){ + // compute modelViewMatrix + var modelViewMatrix = new THREE.Matrix4() + modelViewMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + // change _this.object3d.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + _this.object3d.matrix.copy(modelViewMatrix) + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + _this.object3d.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + _this.object3d.matrix.decompose(_this.object3d.position, _this.object3d.quaternion, _this.object3d.scale) + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + */ +ARjs.MarkersAreaControls.averageQuaternion = function(quaternionSum, newQuaternion, firstQuaternion, count, quaternionAverage){ + quaternionAverage = quaternionAverage || new THREE.Quaternion() + // sanity check + console.assert(firstQuaternion instanceof THREE.Quaternion === true) + + // from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + if( newQuaternion.dot(firstQuaternion) > 0 ){ + newQuaternion = new THREE.Quaternion(-newQuaternion.x, -newQuaternion.y, -newQuaternion.z, -newQuaternion.w) + } + + quaternionSum.x += newQuaternion.x + quaternionSum.y += newQuaternion.y + quaternionSum.z += newQuaternion.z + quaternionSum.w += newQuaternion.w + + quaternionAverage.x = quaternionSum.x/count + quaternionAverage.y = quaternionSum.y/count + quaternionAverage.z = quaternionSum.z/count + quaternionAverage.w = quaternionSum.w/count + + quaternionAverage.normalize() + + return quaternionAverage +} + + +ARjs.MarkersAreaControls.averageVector3 = function(vector3Sum, vector3, count, vector3Average){ + vector3Average = vector3Average || new THREE.Vector3() + + vector3Sum.x += vector3.x + vector3Sum.y += vector3.y + vector3Sum.z += vector3.z + + vector3Average.x = vector3Sum.x / count + vector3Average.y = vector3Sum.y / count + vector3Average.z = vector3Sum.z / count + + return vector3Average +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * compute the center of this multimarker file + */ +ARjs.MarkersAreaControls.computeCenter = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var stats = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + var firstQuaternion = new THREE.Quaternion() // FIXME ??? + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + return averageMatrix +} + +ARjs.MarkersAreaControls.computeBoundingBox = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var boundingBox = new THREE.Box3() + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + boundingBox.expandByPoint(position) + }) + + return boundingBox +} +////////////////////////////////////////////////////////////////////////////// +// updateSmoothedControls +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.prototype.updateSmoothedControls = function(smoothedControls, lerpsValues){ + // handle default values + if( lerpsValues === undefined ){ + // FIXME this parameter format is uselessly cryptic + // lerpValues = [ + // {lerpPosition: 0.5, lerpQuaternion: 0.2, lerpQuaternion: 0.7} + // ] + lerpsValues = [ + [0.3+.1, 0.1, 0.3], + [0.4+.1, 0.1, 0.4], + [0.4+.1, 0.2, 0.5], + [0.5+.1, 0.2, 0.7], + [0.5+.1, 0.2, 0.7], + ] + } + // count how many subMarkersControls are visible + var nVisible = 0 + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + var markerObject3d = markerControls.object3d + if( markerObject3d.visible === true ) nVisible ++ + }) + + // find the good lerpValues + if( lerpsValues[nVisible-1] !== undefined ){ + var lerpValues = lerpsValues[nVisible-1] + }else{ + var lerpValues = lerpsValues[lerpsValues.length-1] + } + + // modify lerpValues in smoothedControls + smoothedControls.parameters.lerpPosition = lerpValues[0] + smoothedControls.parameters.lerpQuaternion = lerpValues[1] + smoothedControls.parameters.lerpScale = lerpValues[2] +} + + +////////////////////////////////////////////////////////////////////////////// +// Create THREEx.ArMultiMarkerControls from JSON +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.fromJSON = function(arToolkitContext, parent3D, markerRoot, jsonData, parameters){ + var multiMarkerFile = JSON.parse(jsonData) + // declare variables + var subMarkersControls = [] + var subMarkerPoses = [] + // handle default arguments + parameters = parameters || {} + + // prepare the parameters + multiMarkerFile.subMarkersControls.forEach(function(item){ + // create a markerRoot + var markerRoot = new THREE.Object3D() + parent3D.add(markerRoot) + + // create markerControls for our markerRoot + var subMarkerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, item.parameters) + +// if( true ){ + // store it in the parameters + subMarkersControls.push(subMarkerControls) + subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// }else{ +// // build a smoothedControls +// var smoothedRoot = new THREE.Group() +// parent3D.add(smoothedRoot) +// var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot, { +// lerpPosition : 0.1, +// lerpQuaternion : 0.1, +// lerpScale : 0.1, +// minVisibleDelay: 0, +// minUnvisibleDelay: 0, +// }) +// onRenderFcts.push(function(delta){ +// smoothedControls.update(markerRoot) // TODO this is a global +// }) +// +// +// // store it in the parameters +// subMarkersControls.push(smoothedControls) +// subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// } + }) + + parameters.subMarkersControls = subMarkersControls + parameters.subMarkerPoses = subMarkerPoses + // create a new THREEx.ArMultiMarkerControls + var multiMarkerControls = new THREEx.ArMultiMarkerControls(arToolkitContext, markerRoot, parameters) + + // return it + return multiMarkerControls +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaLearning = THREEx.ArMultiMakersLearning = function(arToolkitContext, subMarkersControls){ + var _this = this + this._arToolkitContext = arToolkitContext + + // Init variables + this.subMarkersControls = subMarkersControls + this.enabled = true + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + + +////////////////////////////////////////////////////////////////////////////// +// statistic collection +////////////////////////////////////////////////////////////////////////////// + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaLearning.prototype._onSourceProcessed = function(){ + var originQuaternion = this.subMarkersControls[0].object3d.quaternion + // here collect the statistic on relative positioning + + // honor this.enabled + if( this.enabled === false ) return + + // keep only the visible markers + var visibleMarkerControls = this.subMarkersControls.filter(function(markerControls){ + return markerControls.object3d.visible === true + }) + + var count = Object.keys(visibleMarkerControls).length + + var positionDelta = new THREE.Vector3() + var quaternionDelta = new THREE.Quaternion() + var scaleDelta = new THREE.Vector3() + var tmpMatrix = new THREE.Matrix4() + + // go thru all the visibleMarkerControls + for(var i = 0; i < count; i++){ + var markerControls1 = visibleMarkerControls[i] + for(var j = 0; j < count; j++){ + var markerControls2 = visibleMarkerControls[j] + + // if markerControls1 is markerControls2, then skip it + if( i === j ) continue + + + ////////////////////////////////////////////////////////////////////////////// + // create data in markerControls1.object3d.userData if needed + ////////////////////////////////////////////////////////////////////////////// + // create seenCouples for markerControls1 if needed + if( markerControls1.object3d.userData.seenCouples === undefined ){ + markerControls1.object3d.userData.seenCouples = {} + } + var seenCouples = markerControls1.object3d.userData.seenCouples + // create the multiMarkerPosition average if needed` + if( seenCouples[markerControls2.id] === undefined ){ + // console.log('create seenCouples between', markerControls1.id, 'and', markerControls2.id) + seenCouples[markerControls2.id] = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + } + + + ////////////////////////////////////////////////////////////////////////////// + // Compute markerControls2 position relative to markerControls1 + ////////////////////////////////////////////////////////////////////////////// + + // compute markerControls2 position/quaternion/scale in relation with markerControls1 + tmpMatrix.getInverse(markerControls1.object3d.matrix) + tmpMatrix.multiply(markerControls2.object3d.matrix) + tmpMatrix.decompose(positionDelta, quaternionDelta, scaleDelta) + + ////////////////////////////////////////////////////////////////////////////// + // update statistics + ////////////////////////////////////////////////////////////////////////////// + var stats = seenCouples[markerControls2.id] + // update the count + stats.count++ + + // update the average of position/rotation/scale + THREEx.ArMultiMarkerControls.averageVector3(stats.position.sum, positionDelta, stats.count, stats.position.average) + THREEx.ArMultiMarkerControls.averageQuaternion(stats.quaternion.sum, quaternionDelta, originQuaternion, stats.count, stats.quaternion.average) + THREEx.ArMultiMarkerControls.averageVector3(stats.scale.sum, scaleDelta, stats.count, stats.scale.average) + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Compute markers transformation matrix from current stats +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.computeResult = function(){ + var _this = this + var originSubControls = this.subMarkersControls[0] + + this.deleteResult() + + // special case of originSubControls averageMatrix + originSubControls.object3d.userData.result = { + averageMatrix : new THREE.Matrix4(), + confidenceFactor: 1, + } + // TODO here check if the originSubControls has been seen at least once!! + + + /** + * ALGO in pseudo code + * + * - Set confidenceFactor of origin sub markers as 1 + * + * Start Looping + * - For a given sub marker, skip it if it already has a result. + * - if no result, check all seen couple and find n ones which has a progress of 1 or more. + * - So the other seen sub markers, got a valid transformation matrix. + * - So take local averages position/orientation/scale, compose a transformation matrix. + * - aka transformation matrix from parent matrix * transf matrix pos/orientation/scale + * - Multiple it by the other seen marker matrix. + * - Loop on the array until one pass could not compute any new sub marker + */ + + do{ + var resultChanged = false + // loop over each subMarkerControls + this.subMarkersControls.forEach(function(subMarkerControls){ + + // if subMarkerControls already has a result, do nothing + var result = subMarkerControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === true ) return + + // console.log('compute subMarkerControls', subMarkerControls.name()) + var otherSubControlsID = _this._getLearnedCoupleStats(subMarkerControls) + if( otherSubControlsID === null ){ + // console.log('no learnedCoupleStats') + return + } + + var otherSubControls = _this._getSubMarkerControlsByID(otherSubControlsID) + + var seenCoupleStats = subMarkerControls.object3d.userData.seenCouples[otherSubControlsID] + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(seenCoupleStats.position.average, seenCoupleStats.quaternion.average, seenCoupleStats.scale.average) + + var otherAverageMatrix = otherSubControls.object3d.userData.result.averageMatrix + + var matrix = new THREE.Matrix4().getInverse(otherAverageMatrix).multiply(averageMatrix) + matrix = new THREE.Matrix4().getInverse(matrix) + + console.assert( subMarkerControls.object3d.userData.result === undefined ) + subMarkerControls.object3d.userData.result = { + averageMatrix: matrix, + confidenceFactor: 1 + } + + resultChanged = true + }) + // console.log('loop') + }while(resultChanged === true) + + // debugger + // console.log('json:', this.toJSON()) + // this.subMarkersControls.forEach(function(subMarkerControls){ + // var hasResult = subMarkerControls.object3d.userData.result !== undefined + // console.log('marker', subMarkerControls.name(), hasResult ? 'has' : 'has NO', 'result') + // }) +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * get a _this.subMarkersControls id based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats = function(subMarkerControls){ + + // if this subMarkerControls has never been seen with another subMarkerControls + if( subMarkerControls.object3d.userData.seenCouples === undefined ) return null + + var seenCouples = subMarkerControls.object3d.userData.seenCouples + var coupleControlsIDs = Object.keys(seenCouples).map(Number) + + for(var i = 0; i < coupleControlsIDs.length; i++){ + var otherSubControlsID = coupleControlsIDs[i] + // get otherSubControls + var otherSubControls = this._getSubMarkerControlsByID(otherSubControlsID) + + // if otherSubControls isnt learned, skip it + var result = otherSubControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === false ) continue + + // return this seenCouplesStats + return otherSubControlsID + } + + // if none is found, return null + return null +} + +/** + * get a _this.subMarkersControls based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID = function(controlsID){ + + for(var i = 0; i < this.subMarkersControls.length; i++){ + var subMarkerControls = this.subMarkersControls[i] + if( subMarkerControls.id === controlsID ){ + return subMarkerControls + } + } + + return null +} + ////////////////////////////////////////////////////////////////////////////// +// JSON file building +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.toJSON = function(){ + + // compute the average matrix before generating the file + this.computeResult() + + ////////////////////////////////////////////////////////////////////////////// + // actually build the json + ////////////////////////////////////////////////////////////////////////////// + var data = { + meta : { + createdBy : "Area Learning - AR.js "+THREEx.ArToolkitContext.REVISION, + createdAt : new Date().toJSON(), + + }, + trackingBackend: this._arToolkitContext.parameters.trackingBackend, + subMarkersControls : [], + } + + var originSubControls = this.subMarkersControls[0] + var originMatrixInverse = new THREE.Matrix4().getInverse(originSubControls.object3d.matrix) + this.subMarkersControls.forEach(function(subMarkerControls, index){ + + // if a subMarkerControls has no result, ignore it + if( subMarkerControls.object3d.userData.result === undefined ) return + + var poseMatrix = subMarkerControls.object3d.userData.result.averageMatrix + console.assert(poseMatrix instanceof THREE.Matrix4) + + + // build the info + var info = { + parameters : { + // to fill ... + }, + poseMatrix : poseMatrix.toArray(), + } + if( subMarkerControls.parameters.type === 'pattern' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.patternUrl = subMarkerControls.parameters.patternUrl + }else if( subMarkerControls.parameters.type === 'barcode' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.barcodeValue = subMarkerControls.parameters.barcodeValue + }else console.assert(false) + + data.subMarkersControls.push(info) + }) + + var strJSON = JSON.stringify(data, null, '\t'); + + + ////////////////////////////////////////////////////////////////////////////// + // round matrix elements to ease readability - for debug + ////////////////////////////////////////////////////////////////////////////// + var humanReadable = false + if( humanReadable === true ){ + var tmp = JSON.parse(strJSON) + tmp.subMarkersControls.forEach(function(markerControls){ + markerControls.poseMatrix = markerControls.poseMatrix.map(function(value){ + var roundingFactor = 100 + return Math.round(value*roundingFactor)/roundingFactor + }) + }) + strJSON = JSON.stringify(tmp, null, '\t'); + } + + return strJSON; +} + +////////////////////////////////////////////////////////////////////////////// +// utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.resetStats = function(){ + this.deleteResult() + + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.seenCouples + }) +} +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.deleteResult = function(){ + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.result + }) +} +var THREEx = THREEx || {} + +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaUtils = THREEx.ArMultiMarkerUtils = {} + +////////////////////////////////////////////////////////////////////////////// +// navigateToLearnerPage +////////////////////////////////////////////////////////////////////////////// + +/** + * Navigate to the multi-marker learner page + * + * @param {String} learnerBaseURL - the base url for the learner + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.navigateToLearnerPage = function(learnerBaseURL, trackingBackend){ + var learnerParameters = { + backURL : location.href, + trackingBackend: trackingBackend, + markersControlsParameters: ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters(trackingBackend), + } + location.href = learnerBaseURL + '?' + encodeURIComponent(JSON.stringify(learnerParameters)) +} + +////////////////////////////////////////////////////////////////////////////// +// DefaultMultiMarkerFile +////////////////////////////////////////////////////////////////////////////// + +/** + * Create and store a default multi-marker file + * + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile = function(trackingBackend){ + var file = ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile(trackingBackend) + // json.strinfy the value and store it in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(file)) +} + + + +/** + * Create a default multi-marker file + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object of the multi-marker file + */ +ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile = function(trackingBackend){ + console.assert(trackingBackend) + if( trackingBackend === undefined ) debugger + + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + // create the base file + var file = { + meta : { + createdBy : 'AR.js ' + ARjs.Context.REVISION + ' - Default Marker', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... being filled + ] + } + // add a subMarkersControls + file.subMarkersControls[0] = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(0,0, 0).toArray(), + } + if( trackingBackend === 'artoolkit' ){ + file.subMarkersControls[0].parameters.type = 'pattern' + file.subMarkersControls[0].parameters.patternUrl = absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + }else console.assert(false) + + // json.strinfy the value and store it in localStorage + return file +} + +////////////////////////////////////////////////////////////////////////////// +// createDefaultMarkersControlsParameters +////////////////////////////////////////////////////////////////////////////// + +/** + * Create a default controls parameters for the multi-marker learner + * + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object containing the controls parameters + */ +ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters = function(trackingBackend){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + + if( trackingBackend === 'artoolkit' ){ + // pattern hiro/kanji/a/b/c/f + var markersControlsParameters = [ + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt', + }, + ] + }else console.assert(false) + return markersControlsParameters +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +/** + * generate areaFile + */ +ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution = function (trackingBackend, resolutionW, resolutionH) { + // generate areaFile + var areaFile = this.buildMarkersAreaFileFromResolution(trackingBackend, resolutionW, resolutionH) + // store areaFile in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(areaFile)) +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaUtils.buildMarkersAreaFileFromResolution = function(trackingBackend, resolutionW, resolutionH){ + // create the base file + var file = { + meta : { + createdBy : 'AR.js - Augmented Website', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... + ] + } + + var whiteMargin = 0.1 + if( resolutionW > resolutionH ){ + var markerImageSize = 0.4 * resolutionH + }else if( resolutionW < resolutionH ){ + var markerImageSize = 0.4 * resolutionW + }else if( resolutionW === resolutionH ){ + // specific for twitter player - https://dev.twitter.com/cards/types/player + var markerImageSize = 0.33 * resolutionW + }else console.assert(false) + + // console.warn('using new markerImageSize computation') + var actualMarkerSize = markerImageSize * (1 - 2*whiteMargin) + + var deltaX = (resolutionW - markerImageSize)/2 / actualMarkerSize + var deltaZ = (resolutionH - markerImageSize)/2 / actualMarkerSize + + var subMarkerControls = buildSubMarkerControls('center', 0, 0) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topleft', -deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topright', +deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomleft', -deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomright', +deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + return file + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + function buildSubMarkerControls(layout, positionX, positionZ){ + console.log('buildSubMarkerControls', layout, positionX, positionZ) + // create subMarkersControls + var subMarkersControls = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(positionX,0, positionZ).toArray(), + } + // fill the parameters + if( trackingBackend === 'artoolkit' ){ + layout2MarkerParametersArtoolkit(subMarkersControls.parameters, layout) + }else console.assert(false) + // return subMarkersControls + return subMarkersControls + } + + function layout2MarkerParametersArtoolkit(parameters, layout){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + var layout2PatternUrl = { + 'center' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt'), + 'topleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt'), + 'topright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt'), + 'bottomleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt'), + 'bottomright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt'), + } + console.assert(layout2PatternUrl[layout] !== undefined ) + parameters.type = 'pattern' + parameters.patternUrl = layout2PatternUrl[layout] + return + function convertRelativeUrlToAbsolute(relativeUrl){ + var tmpLink = document.createElement('a'); + tmpLink.href = relativeUrl + return tmpLink.href + } + } +} +////////////////////////////////////////////////////////////////////////////// +// arjs-anchor +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-anchor', { + dependencies: ['arjs', 'artoolkit'], + schema: { + preset: { + type: 'string', + }, + markerhelpers: { // IIF preset === 'area' + type: 'boolean', + default: false, + }, + + // controls parameters + size: { + type: 'number', + default: 1 + }, + type: { + type: 'string', + }, + patternUrl: { + type: 'string', + }, + descriptorsUrl: { + type: 'string', + }, + barcodeValue: { + type: 'number' + }, + changeMatrixMode: { + type: 'string', + default: 'modelViewMatrix', + }, + minConfidence: { + type: 'number', + default: 0.6, + }, + smooth: { + type: 'boolean', + default: false, + }, + smoothCount: { + type: 'number', + default: 5, + }, + smoothTolerance: { + type: 'number', + default: 0.01, + }, + smoothThreshold: { + type: 'number', + default: 2, + }, + }, + init: function () { + var _this = this + + // get arjsSystem + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = false + _this._arAnchor = null + + // honor object visibility + if (_this.data.changeMatrixMode === 'modelViewMatrix') { + _this.el.object3D.visible = false + } else if (_this.data.changeMatrixMode === 'cameraTransformMatrix') { + _this.el.sceneEl.object3D.visible = false + } else console.assert(false) + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function () { + // wait until the system is isReady + if (arjsSystem.isReady === false) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // update arProfile + ////////////////////////////////////////////////////////////////////////////// + var arProfile = arjsSystem._arProfile + + // arProfile.changeMatrixMode('modelViewMatrix') + arProfile.changeMatrixMode(_this.data.changeMatrixMode) + + // honor this.data.preset + var markerParameters = Object.assign({}, arProfile.defaultMarkerParameters) + + if (_this.data.preset === 'hiro') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'kanji') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'area') { + markerParameters.type = 'barcode' + markerParameters.barcodeValue = 1001 + markerParameters.markersAreaEnabled = true + } else if (_this.data.type === 'barcode') { + markerParameters = { + type: _this.data.type, + changeMatrixMode: 'modelViewMatrix', + barcodeValue: _this.data.barcodeValue, + markersAreaEnabled: false + } + } else if (_this.data.type === 'pattern') { + markerParameters.type = _this.data.type + markerParameters.patternUrl = _this.data.patternUrl; + markerParameters.markersAreaEnabled = false + } else if (_this.data.type === 'nft') { + markerParameters.type = _this.data.type + markerParameters.descriptorsUrl = _this.data.descriptorsUrl; + markerParameters.markersAreaEnabled = false + } + + markerParameters.minConfidence = _this.data.minConfidence; + markerParameters.smooth = _this.data.smooth; + markerParameters.smoothCount = _this.data.smoothCount; + markerParameters.smoothTolerance = _this.data.smoothTolerance; + markerParameters.smoothThreshold = _this.data.smoothThreshold; + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + + var arSession = arjsSystem._arSession + var arAnchor = _this._arAnchor = new ARjs.Anchor(arSession, markerParameters) + + // it is now considered isReady + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (arjsSystem.data.debugUIEnabled) { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1; color: grey;') + document.body.appendChild(containerElement) + } + // create anchorDebugUI + var anchorDebugUI = new ARjs.AnchorDebugUI(arAnchor) + containerElement.appendChild(anchorDebugUI.domElement) + } + }, 1000 / 60) + }, + remove: function () { + }, + update: function () { + }, + tick: function () { + var _this = this + // if not yet isReady, do nothing + if (this.isReady === false) return + + ////////////////////////////////////////////////////////////////////////////// + // update arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + this._arAnchor.update() + + ////////////////////////////////////////////////////////////////////////////// + // honor pose + ////////////////////////////////////////////////////////////////////////////// + var arWorldRoot = this._arAnchor.object3d + arWorldRoot.updateMatrixWorld(true) + arWorldRoot.matrixWorld.decompose(this.el.object3D.position, this.el.object3D.quaternion, this.el.object3D.scale) + + ////////////////////////////////////////////////////////////////////////////// + // honor visibility + ////////////////////////////////////////////////////////////////////////////// + if (_this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix') { + var wasVisible = _this.el.object3D.visible + _this.el.object3D.visible = this._arAnchor.object3d.visible + } else if (_this._arAnchor.parameters.changeMatrixMode === 'cameraTransformMatrix') { + var wasVisible = _this.el.sceneEl.object3D.visible + _this.el.sceneEl.object3D.visible = this._arAnchor.object3d.visible + } else console.assert(false) + + // emit markerFound markerLost + if (_this._arAnchor.object3d.visible === true && wasVisible === false) { + _this.el.emit('markerFound') + } else if (_this._arAnchor.object3d.visible === false && wasVisible === true) { + _this.el.emit('markerLost') + } + } +}) + +////////////////////////////////////////////////////////////////////////////// +// define some primitives shortcuts +////////////////////////////////////////////////////////////////////////////// + +AFRAME.registerPrimitive('a-anchor', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + + +AFRAME.registerPrimitive('a-camera-static', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'camera': {}, + }, + mappings: { + } +})) + + +AFRAME.registerPrimitive('a-nft', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'url': 'arjs-anchor.descriptorsUrl', + 'size': 'arjs-anchor.size', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + }, +})) + + +////////////////////////////////////////////////////////////////////////////// +// backward compatibility +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerPrimitive('a-marker', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-marker-camera', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': { + changeMatrixMode: 'cameraTransformMatrix' + }, + 'camera': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'descriptorsUrl': 'arjs-anchor.descriptorsUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + } +})) +////////////////////////////////////////////////////////////////////////////// +// arjs-hit-testing +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-hit-testing', { + dependencies: ['arjs', 'artoolkit'], + schema: { + enabled : { + type: 'boolean', + default: false, + }, + renderDebug : { + type: 'boolean', + default: false, + }, + }, + init: function () { + var _this = this + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + +// TODO make it work on cameraTransformMatrix too +// + _this.isReady = false + _this._arAnchor = null + _this._arHitTesting = null + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function(){ + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + // wait until anchorComponent is isReady + if( anchorComponent === undefined || anchorComponent.isReady === false ) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arAnchor = anchorComponent._arAnchor + var arSession = arjsSystem._arSession + var renderer = arSession.parameters.renderer + + var hitTesting = _this._arHitTesting = new ARjs.HitTesting(arSession) + hitTesting.enabled = _this.data.enabled + + _this.isReady = true + }, 1000/60) + }, + remove : function(){ + }, + update: function () { + }, + tick: function(){ + var _this = this + // if not yet isReady, do nothing + if( this.isReady === false ) return + + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + var arSession = arjsSystem._arSession + + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + var arAnchor = anchorComponent._arAnchor + + + var hitTesting = this._arHitTesting + var camera = arSession.parameters.camera +// console.log(camera.position) + hitTesting.update(camera, arAnchor.object3d, arAnchor.parameters.changeMatrixMode) + } +}); + +/** + * @author richt / http://richt.me + * @author WestLangley / http://github.com/WestLangley + * + * W3C Device Orientation control (http://w3c.github.io/deviceorientation/spec-source-orientation.html) + */ + +/* NOTE that this is a modified version of THREE.DeviceOrientationControls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +ArjsDeviceOrientationControls = function ( object ) { + + var scope = this; + + this.object = object; + this.object.rotation.reorder( 'YXZ' ); + + this.enabled = true; + + this.deviceOrientation = {}; + this.screenOrientation = 0; + + this.alphaOffset = 0; // radians + + this.smoothingFactor = 1; + + this.TWO_PI = 2 * Math.PI; + this.HALF_PI = 0.5 * Math.PI; + + var onDeviceOrientationChangeEvent = function ( event ) { + + scope.deviceOrientation = event; + + }; + + var onScreenOrientationChangeEvent = function () { + + scope.screenOrientation = window.orientation || 0; + + }; + + // The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y'' + + var setObjectQuaternion = function () { + + var zee = new THREE.Vector3( 0, 0, 1 ); + + var euler = new THREE.Euler(); + + var q0 = new THREE.Quaternion(); + + var q1 = new THREE.Quaternion( - Math.sqrt( 0.5 ), 0, 0, Math.sqrt( 0.5 ) ); // - PI/2 around the x-axis + + return function ( quaternion, alpha, beta, gamma, orient ) { + + euler.set( beta, alpha, - gamma, 'YXZ' ); // 'ZXY' for the device, but 'YXZ' for us + + quaternion.setFromEuler( euler ); // orient the device + + quaternion.multiply( q1 ); // camera looks out the back of the device, not the top + + quaternion.multiply( q0.setFromAxisAngle( zee, - orient ) ); // adjust for screen orientation + + }; + + }(); + + this.connect = function () { + + onScreenOrientationChangeEvent(); + + window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = true; + + }; + + this.disconnect = function () { + + window.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = false; + + }; + + this.update = function () { + + if ( scope.enabled === false ) return; + + var device = scope.deviceOrientation; + + if ( device ) { + + var alpha = device.alpha ? THREE.Math.degToRad( device.alpha ) + scope.alphaOffset : 0; // Z + + var beta = device.beta ? THREE.Math.degToRad( device.beta ) : 0; // X' + + var gamma = device.gamma ? THREE.Math.degToRad( device.gamma ) : 0; // Y'' + + var orient = scope.screenOrientation ? THREE.Math.degToRad( scope.screenOrientation ) : 0; // O + + // NW Added smoothing code + var k = this.smoothingFactor; + + if(this.lastOrientation) { + alpha = this._getSmoothedAngle(alpha, this.lastOrientation.alpha, k); + beta = this._getSmoothedAngle(beta + Math.PI, this.lastOrientation.beta, k); + gamma = this._getSmoothedAngle(gamma + this.HALF_PI, this.lastOrientation.gamma, k, Math.PI); + + } else { + beta += Math.PI; + gamma += this.HALF_PI; + } + + this.lastOrientation = { + alpha: alpha, + beta: beta, + gamma: gamma + }; + setObjectQuaternion( scope.object.quaternion, alpha, beta - Math.PI, gamma - this.HALF_PI, orient ); + + } + }; + + + // NW Added + this._orderAngle = function(a, b, range = this.TWO_PI) { + if ((b > a && Math.abs(b - a) < range / 2) || (a > b && Math.abs(b - a) > range / 2)) { + return { left: a, right: b } + } else { + return { left: b, right: a } + } + }; + + // NW Added + this._getSmoothedAngle = function(a, b, k, range = this.TWO_PI) { + const angles = this._orderAngle(a, b, range); + const angleshift = angles.left; + const origAnglesRight = angles.right; + angles.left = 0; + angles.right -= angleshift; + if(angles.right < 0) angles.right += range; + let newangle = origAnglesRight == b ? (1 - k)*angles.right + k * angles.left : k * angles.right + (1 - k) * angles.left; + newangle += angleshift; + if(newangle >= range) newangle -= range; + return newangle; + }; + + this.dispose = function () { + scope.disconnect(); + }; + + this.connect(); + +}; +// To avoid recalculation at every mouse movement tick +var PI_2 = Math.PI / 2; + + +/** + * look-controls. Update entity pose, factoring mouse, touch, and WebVR API data. + */ + +/* NOTE that this is a modified version of A-Frame's look-controls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +AFRAME.registerComponent('arjs-look-controls', { + dependencies: ['position', 'rotation'], + + schema: { + enabled: {default: true}, + magicWindowTrackingEnabled: {default: true}, + pointerLockEnabled: {default: false}, + reverseMouseDrag: {default: false}, + reverseTouchDrag: {default: false}, + touchEnabled: {default: true}, + smoothingFactor: { type: 'number', default: 1 } + }, + + init: function () { + this.deltaYaw = 0; + this.previousHMDPosition = new THREE.Vector3(); + this.hmdQuaternion = new THREE.Quaternion(); + this.magicWindowAbsoluteEuler = new THREE.Euler(); + this.magicWindowDeltaEuler = new THREE.Euler(); + this.position = new THREE.Vector3(); + this.magicWindowObject = new THREE.Object3D(); + this.rotation = {}; + this.deltaRotation = {}; + this.savedPose = null; + this.pointerLocked = false; + this.setupMouseControls(); + this.bindMethods(); + this.previousMouseEvent = {}; + + this.setupMagicWindowControls(); + + // To save / restore camera pose + this.savedPose = { + position: new THREE.Vector3(), + rotation: new THREE.Euler() + }; + + // Call enter VR handler if the scene has entered VR before the event listeners attached. + if (this.el.sceneEl.is('vr-mode')) { this.onEnterVR(); } + }, + + setupMagicWindowControls: function () { + var magicWindowControls; + var data = this.data; + + // Only on mobile devices and only enabled if DeviceOrientation permission has been granted. + if (AFRAME.utils.device.isMobile()) { + magicWindowControls = this.magicWindowControls = new ArjsDeviceOrientationControls(this.magicWindowObject); + if (typeof DeviceOrientationEvent !== 'undefined' && DeviceOrientationEvent.requestPermission) { + magicWindowControls.enabled = false; + if (this.el.sceneEl.components['device-orientation-permission-ui'].permissionGranted) { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + } else { + this.el.sceneEl.addEventListener('deviceorientationpermissiongranted', function () { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + }); + } + } + } + }, + + update: function (oldData) { + var data = this.data; + + // Disable grab cursor classes if no longer enabled. + if (data.enabled !== oldData.enabled) { + this.updateGrabCursor(data.enabled); + } + + // Reset magic window eulers if tracking is disabled. + if (oldData && !data.magicWindowTrackingEnabled && oldData.magicWindowTrackingEnabled) { + this.magicWindowAbsoluteEuler.set(0, 0, 0); + this.magicWindowDeltaEuler.set(0, 0, 0); + } + + // Pass on magic window tracking setting to magicWindowControls. + if (this.magicWindowControls) { + this.magicWindowControls.enabled = data.magicWindowTrackingEnabled; + this.magicWindowControls.smoothingFactor = data.smoothingFactor; + } + + if (oldData && !data.pointerLockEnabled !== oldData.pointerLockEnabled) { + this.removeEventListeners(); + this.addEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + } + }, + + tick: function (t) { + var data = this.data; + if (!data.enabled) { return; } + this.updateOrientation(); + }, + + play: function () { + this.addEventListeners(); + }, + + pause: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + remove: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + bindMethods: function () { + this.onMouseDown = AFRAME.utils.bind(this.onMouseDown, this); + this.onMouseMove = AFRAME.utils.bind(this.onMouseMove, this); + this.onMouseUp = AFRAME.utils.bind(this.onMouseUp, this); + this.onTouchStart = AFRAME.utils.bind(this.onTouchStart, this); + this.onTouchMove = AFRAME.utils.bind(this.onTouchMove, this); + this.onTouchEnd = AFRAME.utils.bind(this.onTouchEnd, this); + this.onEnterVR = AFRAME.utils.bind(this.onEnterVR, this); + this.onExitVR = AFRAME.utils.bind(this.onExitVR, this); + this.onPointerLockChange = AFRAME.utils.bind(this.onPointerLockChange, this); + this.onPointerLockError = AFRAME.utils.bind(this.onPointerLockError, this); + }, + + /** + * Set up states and Object3Ds needed to store rotation data. + */ + setupMouseControls: function () { + this.mouseDown = false; + this.pitchObject = new THREE.Object3D(); + this.yawObject = new THREE.Object3D(); + this.yawObject.position.y = 10; + this.yawObject.add(this.pitchObject); + }, + + /** + * Add mouse and touch event listeners to canvas. + */ + addEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl.canvas; + + // Wait for canvas to load. + if (!canvasEl) { + sceneEl.addEventListener('render-target-loaded', AFRAME.utils.bind(this.addEventListeners, this)); + return; + } + + // Mouse events. + canvasEl.addEventListener('mousedown', this.onMouseDown, false); + window.addEventListener('mousemove', this.onMouseMove, false); + window.addEventListener('mouseup', this.onMouseUp, false); + + // Touch events. + canvasEl.addEventListener('touchstart', this.onTouchStart); + window.addEventListener('touchmove', this.onTouchMove); + window.addEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.addEventListener('enter-vr', this.onEnterVR); + sceneEl.addEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + if (this.data.pointerLockEnabled) { + document.addEventListener('pointerlockchange', this.onPointerLockChange, false); + document.addEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.addEventListener('pointerlockerror', this.onPointerLockError, false); + } + }, + + /** + * Remove mouse and touch event listeners from canvas. + */ + removeEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl && sceneEl.canvas; + + if (!canvasEl) { return; } + + // Mouse events. + canvasEl.removeEventListener('mousedown', this.onMouseDown); + window.removeEventListener('mousemove', this.onMouseMove); + window.removeEventListener('mouseup', this.onMouseUp); + + // Touch events. + canvasEl.removeEventListener('touchstart', this.onTouchStart); + window.removeEventListener('touchmove', this.onTouchMove); + window.removeEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.removeEventListener('enter-vr', this.onEnterVR); + sceneEl.removeEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + document.removeEventListener('pointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('pointerlockerror', this.onPointerLockError, false); + }, + + /** + * Update orientation for mobile, mouse drag, and headset. + * Mouse-drag only enabled if HMD is not active. + */ + updateOrientation: (function () { + var poseMatrix = new THREE.Matrix4(); + + return function () { + var object3D = this.el.object3D; + var pitchObject = this.pitchObject; + var yawObject = this.yawObject; + var pose; + var sceneEl = this.el.sceneEl; + + // In VR mode, THREE is in charge of updating the camera pose. + if (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected()) { + // With WebXR THREE applies headset pose to the object3D matrixWorld internally. + // Reflect values back on position, rotation, scale for getAttribute to return the expected values. + if (sceneEl.hasWebXR) { + pose = sceneEl.renderer.xr.getCameraPose(); + if (pose) { + poseMatrix.elements = pose.transform.matrix; + poseMatrix.decompose(object3D.position, object3D.rotation, object3D.scale); + } + } + return; + } + + this.updateMagicWindowOrientation(); + + // On mobile, do camera rotation with touch events and sensors. + object3D.rotation.x = this.magicWindowDeltaEuler.x + pitchObject.rotation.x; + object3D.rotation.y = this.magicWindowDeltaEuler.y + yawObject.rotation.y; + object3D.rotation.z = this.magicWindowDeltaEuler.z; + }; + })(), + + updateMagicWindowOrientation: function () { + var magicWindowAbsoluteEuler = this.magicWindowAbsoluteEuler; + var magicWindowDeltaEuler = this.magicWindowDeltaEuler; + // Calculate magic window HMD quaternion. + if (this.magicWindowControls && this.magicWindowControls.enabled) { + this.magicWindowControls.update(); + magicWindowAbsoluteEuler.setFromQuaternion(this.magicWindowObject.quaternion, 'YXZ'); + if (!this.previousMagicWindowYaw && magicWindowAbsoluteEuler.y !== 0) { + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + if (this.previousMagicWindowYaw) { + magicWindowDeltaEuler.x = magicWindowAbsoluteEuler.x; + magicWindowDeltaEuler.y += magicWindowAbsoluteEuler.y - this.previousMagicWindowYaw; + magicWindowDeltaEuler.z = magicWindowAbsoluteEuler.z; + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + } + }, + + /** + * Translate mouse drag into rotation. + * + * Dragging up and down rotates the camera around the X-axis (yaw). + * Dragging left and right rotates the camera around the Y-axis (pitch). + */ + onMouseMove: function (evt) { + var direction; + var movementX; + var movementY; + var pitchObject = this.pitchObject; + var previousMouseEvent = this.previousMouseEvent; + var yawObject = this.yawObject; + + // Not dragging or not enabled. + if (!this.data.enabled || (!this.mouseDown && !this.pointerLocked)) { return; } + + // Calculate delta. + if (this.pointerLocked) { + movementX = evt.movementX || evt.mozMovementX || 0; + movementY = evt.movementY || evt.mozMovementY || 0; + } else { + movementX = evt.screenX - previousMouseEvent.screenX; + movementY = evt.screenY - previousMouseEvent.screenY; + } + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + + // Calculate rotation. + direction = this.data.reverseMouseDrag ? 1 : -1; + yawObject.rotation.y += movementX * 0.002 * direction; + pitchObject.rotation.x += movementY * 0.002 * direction; + pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x)); + }, + + /** + * Register mouse down to detect mouse drag. + */ + onMouseDown: function (evt) { + var sceneEl = this.el.sceneEl; + if (!this.data.enabled || (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected())) { return; } + // Handle only primary button. + if (evt.button !== 0) { return; } + + var canvasEl = sceneEl && sceneEl.canvas; + + this.mouseDown = true; + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + this.showGrabbingCursor(); + + if (this.data.pointerLockEnabled && !this.pointerLocked) { + if (canvasEl.requestPointerLock) { + canvasEl.requestPointerLock(); + } else if (canvasEl.mozRequestPointerLock) { + canvasEl.mozRequestPointerLock(); + } + } + }, + + /** + * Shows grabbing cursor on scene + */ + showGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = 'grabbing'; + }, + + /** + * Hides grabbing cursor on scene + */ + hideGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = ''; + }, + + /** + * Register mouse up to detect release of mouse drag. + */ + onMouseUp: function () { + this.mouseDown = false; + this.hideGrabbingCursor(); + }, + + /** + * Register touch down to detect touch drag. + */ + onTouchStart: function (evt) { + if (evt.touches.length !== 1 || + !this.data.touchEnabled || + this.el.sceneEl.is('vr-mode')) { return; } + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + this.touchStarted = true; + }, + + /** + * Translate touch move to Y-axis rotation. + */ + onTouchMove: function (evt) { + var direction; + var canvas = this.el.sceneEl.canvas; + var deltaY; + var yawObject = this.yawObject; + + if (!this.touchStarted || !this.data.touchEnabled) { return; } + + deltaY = 2 * Math.PI * (evt.touches[0].pageX - this.touchStart.x) / canvas.clientWidth; + + direction = this.data.reverseTouchDrag ? 1 : -1; + // Limit touch orientaion to to yaw (y axis). + yawObject.rotation.y -= deltaY * 0.5 * direction; + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + }, + + /** + * Register touch end to detect release of touch drag. + */ + onTouchEnd: function () { + this.touchStarted = false; + }, + + /** + * Save pose. + */ + onEnterVR: function () { + var sceneEl = this.el.sceneEl; + if (!sceneEl.checkHeadsetConnected()) { return; } + this.saveCameraPose(); + this.el.object3D.position.set(0, 0, 0); + this.el.object3D.rotation.set(0, 0, 0); + if (sceneEl.hasWebXR) { + this.el.object3D.matrixAutoUpdate = false; + this.el.object3D.updateMatrix(); + } + }, + + /** + * Restore the pose. + */ + onExitVR: function () { + if (!this.el.sceneEl.checkHeadsetConnected()) { return; } + this.restoreCameraPose(); + this.previousHMDPosition.set(0, 0, 0); + this.el.object3D.matrixAutoUpdate = true; + }, + + /** + * Update Pointer Lock state. + */ + onPointerLockChange: function () { + this.pointerLocked = !!(document.pointerLockElement || document.mozPointerLockElement); + }, + + /** + * Recover from Pointer Lock error. + */ + onPointerLockError: function () { + this.pointerLocked = false; + }, + + // Exits pointer-locked mode. + exitPointerLock: function () { + document.exitPointerLock(); + this.pointerLocked = false; + }, + + /** + * Toggle the feature of showing/hiding the grab cursor. + */ + updateGrabCursor: function (enabled) { + var sceneEl = this.el.sceneEl; + + function enableGrabCursor () { sceneEl.canvas.classList.add('a-grab-cursor'); } + function disableGrabCursor () { sceneEl.canvas.classList.remove('a-grab-cursor'); } + + if (!sceneEl.canvas) { + if (enabled) { + sceneEl.addEventListener('render-target-loaded', enableGrabCursor); + } else { + sceneEl.addEventListener('render-target-loaded', disableGrabCursor); + } + return; + } + + if (enabled) { + enableGrabCursor(); + return; + } + disableGrabCursor(); + }, + + /** + * Save camera pose before entering VR to restore later if exiting. + */ + saveCameraPose: function () { + var el = this.el; + + this.savedPose.position.copy(el.object3D.position); + this.savedPose.rotation.copy(el.object3D.rotation); + this.hasSavedPose = true; + }, + + /** + * Reset camera pose to before entering VR. + */ + restoreCameraPose: function () { + var el = this.el; + var savedPose = this.savedPose; + + if (!this.hasSavedPose) { return; } + + // Reset camera orientation. + el.object3D.position.copy(savedPose.position); + el.object3D.rotation.copy(savedPose.rotation); + this.hasSavedPose = false; + } +}); +AFRAME.registerComponent('arjs-webcam-texture', { + + init: function() { + this.scene = this.el.sceneEl; + this.texCamera = new THREE.OrthographicCamera(-0.5, 0.5, 0.5, -0.5, 0, 10); + this.texScene = new THREE.Scene(); + + this.scene.renderer.autoClear = false; + this.video = document.createElement("video"); + this.video.setAttribute("autoplay", true); + this.video.setAttribute("display", "none"); + document.body.appendChild(this.video); + this.geom = new THREE.PlaneBufferGeometry(); //0.5, 0.5); + this.texture = new THREE.VideoTexture(this.video); + this.material = new THREE.MeshBasicMaterial( { map: this.texture } ); + const mesh = new THREE.Mesh(this.geom, this.material); + this.texScene.add(mesh); + }, + + play: function() { + if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + const constraints = { video: { + facingMode: 'environment' } + }; + navigator.mediaDevices.getUserMedia(constraints).then( stream=> { + this.video.srcObject = stream; + this.video.play(); + }) + .catch(e => { alert(`Webcam error: ${e}`); }); + } else { + alert('sorry - media devices API not supported'); + } + }, + + tick: function() { + this.scene.renderer.clear(); + this.scene.renderer.render(this.texScene, this.texCamera); + this.scene.renderer.clearDepth(); + }, + + pause: function() { + this.video.srcObject.getTracks().forEach ( track => { + track.stop(); + }); + }, + + remove: function() { + this.material.dispose(); + this.texture.dispose(); + this.geom.dispose(); + } +}); +/* + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-camera', { + _watchPositionId: null, + originCoords: null, + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + maxDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 5, + }, + gpsTimeInterval: { + type: 'number', + default: 0, + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function () { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function () { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function () { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function () { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function () { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function () { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function () { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function () { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function (onSuccess, onError) { + if (!onError) { + onError = function (err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function () { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + this.originCoords = this.currentCoords; + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + _setPosition: function () { + var position = this.el.getAttribute('position'); + + // compute position.x + var dstCoords = { + longitude: this.currentCoords.longitude, + latitude: this.originCoords.latitude, + }; + + position.x = this.computeDistanceMeters(this.originCoords, dstCoords); + position.x *= this.currentCoords.longitude > this.originCoords.longitude ? 1 : -1; + + // compute position.z + var dstCoords = { + longitude: this.originCoords.longitude, + latitude: this.currentCoords.latitude, + } + + position.z = this.computeDistanceMeters(this.originCoords, dstCoords); + position.z *= this.currentCoords.latitude > this.originCoords.latitude ? -1 : 1; + + // update position + this.el.setAttribute('position', position); + + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between source and destination inputs. + * + * Calculate distance, bearing and more between Latitude/Longitude points + * Details: https://www.movable-type.co.uk/scripts/latlong.html + * + * @param {Position} src + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function (src, dest, isPlace) { + var distance = this._haversineDist (src, dest); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + // if function has been called for a place, and if it's too far and a max distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.maxDistance && this.data.maxDistance > 0 && distance > this.data.maxDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + + _haversineDist: function (src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function (alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function (event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function () { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); +AFRAME.registerComponent('gps-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-camera]'); + if (!camera.components['gps-camera']) { + console.error('gps-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-camera']; + } + this._updatePosition(); + }; + + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = { + longitude: this.data.longitude, + latitude: this.data.latitude, + }; + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + var distanceForMsg = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + _updatePosition: function() { + var position = { x: 0, y: this.el.getAttribute('position').y || 0, z: 0 } + + // update position.x + var dstCoords = { + longitude: this.data.longitude, + latitude: this._cameraGps.originCoords.latitude, + }; + + position.x = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + this._positionXDebug = position.x; + + position.x *= this.data.longitude > this._cameraGps.originCoords.longitude ? 1 : -1; + + // update position.z + var dstCoords = { + longitude: this._cameraGps.originCoords.longitude, + latitude: this.data.latitude, + }; + + position.z = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + position.z *= this.data.latitude > this._cameraGps.originCoords.latitude ? -1 : 1; + + if (position.y !== 0) { + var altitude = this._cameraGps.originCoords.altitude !== undefined ? this._cameraGps.originCoords.altitude : 0; + position.y = position.y - altitude; + } + + // update element's position in 3D world + this.el.setAttribute('position', position); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; +/** gps-projected-camera + * + * based on the original gps-camera, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original position (lat/lon) is projected into Spherical Mercator and + * stored. + * + * Then, when we receive a new position (lat/lon), this new position is + * projected into Spherical Mercator and then its world position calculated + * by comparing against the original position. + * + * The same is also the case for 'entity-places'; when these are added, their + * Spherical Mercator coords are calculated (see gps-projected-entity-place). + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + * + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-projected-camera', { + _watchPositionId: null, + originCoords: null, // original coords now in Spherical Mercator + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 0 + }, + gpsTimeInterval: { + type: 'number', + default: 0 + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function() { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function() { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function() { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function() { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function() { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function() { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function() { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function() { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function(onSuccess, onError) { + if (!onError) { + onError = function(err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function() { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + // Now store originCoords as PROJECTED original lat/lon, so that + // we can set the world origin to the original position in "metres" + this.originCoords = this._project(this.currentCoords.latitude, this.currentCoords.longitude); + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + /** + * Set the current position (in world coords, based on Spherical Mercator) + * + * @returns {void} + */ + _setPosition: function() { + var position = this.el.getAttribute('position'); + + var worldCoords = this.latLonToWorld(this.currentCoords.latitude, this.currentCoords.longitude); + + position.x = worldCoords[0]; + position.z = worldCoords[1]; + + // update position + this.el.setAttribute('position', position); + + // add the sphmerc position to the event (for testing only) + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between camera and destination input. + * + * Assume we are using a metre-based projection. Not all 'metre-based' + * projections give exact metres, e.g. Spherical Mercator, but it appears + * close enough to be used for AR at least in middle temperate + * latitudes (40 - 55). It is heavily distorted near the poles, however. + * + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function(dest, isPlace) { + var src = this.el.getAttribute("position"); + var dx = dest.x - src.x; + var dz = dest.z - src.z; + var distance = Math.sqrt(dx * dx + dz * dz); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the method caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + /** + * Converts latitude/longitude to OpenGL world coordinates. + * + * First projects lat/lon to absolute Spherical Mercator and then + * calculates the world coordinates by comparing the Spherical Mercator + * coordinates with the Spherical Mercator coordinates of the origin point. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} world coordinates + */ + latLonToWorld: function(lat, lon) { + var projected = this._project(lat, lon); + // Sign of z needs to be reversed compared to projected coordinates + return [projected[0] - this.originCoords[0], -(projected[1] - this.originCoords[1])]; + }, + /** + * Converts latitude/longitude to Spherical Mercator coordinates. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} Spherical Mercator coordinates + */ + _project: function(lat, lon) { + const HALF_EARTH = 20037508.34; + + // Convert the supplied coords to Spherical Mercator (EPSG:3857), also + // known as 'Google Projection', using the algorithm used extensively + // in various OpenStreetMap software. + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); + return [(lon / 180.0) * HALF_EARTH, y * HALF_EARTH / 180.0]; + }, + /** + * Converts Spherical Mercator coordinates to latitude/longitude. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} spherical mercator easting + * @param {Number} spherical mercator northing + * + * @returns {object} lon/lat + */ + _unproject: function(e, n) { + const HALF_EARTH = 20037508.34; + var yp = (n / HALF_EARTH) * 180.0; + return { + longitude: (e / HALF_EARTH) * 180.0, + latitude: 180.0 / Math.PI * (2 * Math.atan(Math.exp(yp * Math.PI / 180.0)) - Math.PI / 2) + }; + }, + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function(alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function(event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function() { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + /** + * Calculate haversine distance between two lat/lon pairs. + * + * Taken from gps-camera + */ + _haversineDist: function(src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); + +/** gps-projected-entity-place + * + * based on the original gps-entity-place, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original location on startup (lat/lon) is projected into Spherical + * Mercator and stored. + * + * When 'entity-places' are added, their Spherical Mercator coords are + * calculated and converted into world coordinates, relative to the original + * position, using the Spherical Mercator projection calculation in + * gps-projected-camera. + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + */ +AFRAME.registerComponent('gps-projected-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + // Used now to get the GPS camera when it's been setup + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-projected-camera']; + this._updatePosition(); + } + }; + + + + // update position needs to worry about distance but nothing else? + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = this.el.getAttribute('position'); + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + // _computeDistanceMeters is now going to use the projected + var distanceForMsg = this._cameraGps.computeDistanceMeters(dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + // Retain as this event is fired when the GPS camera is set up + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + + // set position to world coords using the lat/lon + _updatePosition: function() { + var worldPos = this._cameraGps.latLonToWorld(this.data.latitude, this.data.longitude); + var position = this.el.getAttribute('position'); + + // update element's position in 3D world + //this.el.setAttribute('position', position); + this.el.setAttribute('position', { + x: worldPos[0], + y: position.y, + z: worldPos[1] + }); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; +AFRAME.registerSystem('arjs', { + schema: { + trackingMethod: { + type: 'string', + default: 'best', + }, + debugUIEnabled: { + type: 'boolean', + default: false, + }, + areaLearningButton: { + type: 'boolean', + default: true, + }, + performanceProfile: { + type: 'string', + default: 'default', + }, + labelingMode: { + type: 'string', + default: '', + }, + // new video texture mode (location based only) + videoTexture: { + type: 'boolean', + default: false + }, + // old parameters + debug: { + type: 'boolean', + default: false + }, + detectionMode: { + type: 'string', + default: '', + }, + matrixCodeType: { + type: 'string', + default: '', + }, + patternRatio: { + type: 'number', + default: -1, + }, + cameraParametersUrl: { + type: 'string', + default: '', + }, + maxDetectionRate: { + type: 'number', + default: -1 + }, + sourceType: { + type: 'string', + default: '', + }, + sourceUrl: { + type: 'string', + default: '', + }, + sourceWidth: { + type: 'number', + default: -1 + }, + sourceHeight: { + type: 'number', + default: -1 + }, + deviceId: { + type: 'string', + default: '' + }, + displayWidth: { + type: 'number', + default: -1 + }, + displayHeight: { + type: 'number', + default: -1 + }, + canvasWidth: { + type: 'number', + default: -1 + }, + canvasHeight: { + type: 'number', + default: -1 + }, + }, + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + init: function () { + var _this = this + + // If videoTexture is set, skip the remainder of the setup entirely and just use the arjs-webcam-texture component + if(this.data.videoTexture === true && this.data.sourceType === 'webcam') { + var webcamEntity = document.createElement("a-entity"); + webcamEntity.setAttribute("arjs-webcam-texture", true); + this.el.sceneEl.appendChild(webcamEntity); + return; + } + ////////////////////////////////////////////////////////////////////////////// + // setup arProfile + ////////////////////////////////////////////////////////////////////////////// + + var arProfile = this._arProfile = new ARjs.Profile() + .trackingMethod(this.data.trackingMethod) + .performance(this.data.performanceProfile) + .defaultMarker() + + ////////////////////////////////////////////////////////////////////////////// + // honor this.data and setup arProfile with it + ////////////////////////////////////////////////////////////////////////////// + + // honor this.data and push what has been modified into arProfile + if (this.data.debug !== false) arProfile.contextParameters.debug = this.data.debug + if (this.data.detectionMode !== '') arProfile.contextParameters.detectionMode = this.data.detectionMode + if (this.data.matrixCodeType !== '') arProfile.contextParameters.matrixCodeType = this.data.matrixCodeType + if (this.data.patternRatio !== -1) arProfile.contextParameters.patternRatio = this.data.patternRatio + if (this.data.labelingMode !== '') arProfile.contextParameters.labelingMode = this.data.labelingMode + if (this.data.cameraParametersUrl !== '') arProfile.contextParameters.cameraParametersUrl = this.data.cameraParametersUrl + if (this.data.maxDetectionRate !== -1) arProfile.contextParameters.maxDetectionRate = this.data.maxDetectionRate + if (this.data.canvasWidth !== -1) arProfile.contextParameters.canvasWidth = this.data.canvasWidth + if (this.data.canvasHeight !== -1) arProfile.contextParameters.canvasHeight = this.data.canvasHeight + + if (this.data.sourceType !== '') arProfile.sourceParameters.sourceType = this.data.sourceType + if (this.data.sourceUrl !== '') arProfile.sourceParameters.sourceUrl = this.data.sourceUrl + if (this.data.sourceWidth !== -1) arProfile.sourceParameters.sourceWidth = this.data.sourceWidth + if (this.data.sourceHeight !== -1) arProfile.sourceParameters.sourceHeight = this.data.sourceHeight + if (this.data.deviceId !== '') arProfile.sourceParameters.deviceId = this.data.deviceId + if (this.data.displayWidth !== -1) arProfile.sourceParameters.displayWidth = this.data.displayWidth + if (this.data.displayHeight !== -1) arProfile.sourceParameters.displayHeight = this.data.displayHeight + + arProfile.checkIfValid() + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this._arSession = null + + _this.isReady = false + _this.needsOverride = true + + // wait until the renderer is isReady + this.el.sceneEl.addEventListener('renderstart', function () { + var scene = _this.el.sceneEl.object3D + var camera = _this.el.sceneEl.camera + var renderer = _this.el.sceneEl.renderer + + ////////////////////////////////////////////////////////////////////////////// + // build ARjs.Session + ////////////////////////////////////////////////////////////////////////////// + var arSession = _this._arSession = new ARjs.Session({ + scene: scene, + renderer: renderer, + camera: camera, + sourceParameters: arProfile.sourceParameters, + contextParameters: arProfile.contextParameters + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // awful resize trick + ////////////////////////////////////////////////////////////////////////////// + // KLUDGE + window.addEventListener('resize', onResize) + function onResize() { + var arSource = _this._arSession.arSource + + // ugly kludge to get resize on aframe... not even sure it works + if (arProfile.contextParameters.trackingBackend !== 'tango') { + arSource.copyElementSizeTo(document.body) + } + + // fixing a-frame css + var buttonElement = document.querySelector('.a-enter-vr') + if (buttonElement) { + buttonElement.style.position = 'fixed' + } + } + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (_this.data.debugUIEnabled) initDebugUI() + function initDebugUI() { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1;color: grey;') + document.body.appendChild(containerElement) + } + + // create sessionDebugUI + var sessionDebugUI = new ARjs.SessionDebugUI(arSession) + containerElement.appendChild(sessionDebugUI.domElement) + } + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // TODO this is crappy - code an exponential backoff - max 1 seconds + // KLUDGE: kludge to write a 'resize' event + var startedAt = Date.now() + var timerId = setInterval(function () { + if (Date.now() - startedAt > 10000 * 1000) { + clearInterval(timerId) + return + } + // onResize() + window.dispatchEvent(new Event('resize')); + }, 1000 / 30) + }, + + tick: function () { + // skip it if not yet isInitialised + if (this.isReady === false || this.data.videoTexture === true) return + + // update arSession + this._arSession.update() + + // copy projection matrix to camera + this._arSession.onResize() + }, +}) diff --git a/demo/ar/aframe/build/aframe-ar.js b/demo/ar/aframe/build/aframe-ar.js new file mode 100644 index 0000000..2295f22 --- /dev/null +++ b/demo/ar/aframe/build/aframe-ar.js @@ -0,0 +1,7407 @@ + +((function(){"use strict";var ARController=(function(width,height,camera){var id;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;camera=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.transform_mat=new Float32Array(16);this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d");this.videoWidth=w;this.videoHeight=h;if(typeof camera==="string"){var self=this;this.cameraParam=new ARCameraParam(camera,(function(){self._initialize()}),(function(err){console.error("ARController: Failed to load ARCameraParam",err)}))}else{this.cameraParam=camera;this._initialize()}});ARController.prototype.dispose=(function(){artoolkit.teardown(this.id);for(var t in this){this[t]=null}});ARController.prototype.process=(function(image){this.detectMarker(image);var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat}})}var multiMarkerCount=this.getMultiMarkerCount();for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}});ARController.prototype.dispatchEvent=(function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||268435456;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[(function($0,$1,$2,$3){{if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3}}),(function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){{var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]}}),(function($0,$1,$2,$3,$4){{if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4}})];function _emscripten_asm_const_33(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}function _emscripten_asm_const_4(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_5(code,a0,a1,a2,a3,a4){return ASM_CONSTS[code](a0,a1,a2,a3,a4)}STATIC_BASE=8;STATICTOP=STATIC_BASE+16496;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_ARToolKitJS_cpp()})},{func:(function(){__GLOBAL__sub_I_bind_cpp()})});allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,53,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,116,42,0,0,52,9,0,0,136,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,73,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,54,47,0,0,228,8,0,0,23,47,0,0,228,8,0,0,62,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,0,46,0,0,228,8,0,0,225,45,0,0,228,8,0,0,194,45,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,186,46,0,0,228,8,0,0,217,46,0,0,228,8,0,0,248,46,0,0,12,9,0,0,199,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,212,47,0,0,228,8,0,0,225,47,0,0,12,9,0,0,238,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,15,48,0,0,64,2,0,0,0,0,0,0,12,9,0,0,49,48,0,0,64,2,0,0,0,0,0,0,200,8,0,0,89,48,0,0,200,8,0,0,91,48,0,0,200,8,0,0,93,48,0,0,200,8,0,0,95,48,0,0,200,8,0,0,97,48,0,0,200,8,0,0,99,48,0,0,200,8,0,0,101,48,0,0,200,8,0,0,103,48,0,0,200,8,0,0,105,48,0,0,200,8,0,0,107,48,0,0,200,8,0,0,109,48,0,0,200,8,0,0,111,48,0,0,200,8,0,0,113,48,0,0,12,9,0,0,115,48,0,0,80,2,0,0,0,0,0,0,12,9,0,0,152,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,81,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,73,58,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,118,111,105,100,0,98,111,111,108,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,108,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+15945);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return(new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n"))(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,(function(message){this.name=errorName;this.message=message;var stack=(new Error(message)).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}}));errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=(function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}});return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach((function(type){typeDependencies[type]=dependentTypes}));function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;var _BDtoILow=true;function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(wt){return!!wt}),"toWireType":(function(destructors,o){return o?trueValue:falseValue}),"argPackAdvance":8,"readValueFromPointer":(function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])}),destructorFunction:null})}Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=(function(){return HEAPU16});shift=1}else if(charSize===4){getHeap=(function(){return HEAPU32});shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=(function(value){return value});if(minRange===0){var bitshift=32-8*size;fromWireType=(function(value){return value<>>bitshift})}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _llvm_ctlz_i32=true;function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",(function(){}));dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var argsList="";var argsListWired="";for(var i=0;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _cos=Math_cos;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _BItoD=true;function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _ceilf=Math_ceil;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function jd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function kd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function ld(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function md(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function nd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function od(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function pd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function qd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function rd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function sd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function td(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ud(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function vd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function wd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function xd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function yd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function ec(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function fc(){return i|0}function gc(a){a=a|0;i=a}function hc(a,b){a=a|0;b=b|0;i=a;j=b}function ic(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function jc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function kc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function lc(a){a=a|0;D=a}function mc(){return D|0}function nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function zc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ac(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Bc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Cc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Dc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ec(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Fc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){b[a>>1]=0;k=q}else{k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Gc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Hc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Ic(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0} +function Jc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Kc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Lc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Mc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[a>>1]=0;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Zc(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function _c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function $c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)th(a,b)}}else th(a,b);return}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;h=g+16|0;f=g+4|0;j=g;d=c[d>>2]|0;e=c[d>>2]|0;c[j>>2]=d;c[h>>2]=c[j>>2];vh(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d){if(a[f+8>>0]|0)Fg(d+264|0);Lh(d)}i=g;return e|0}function vh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;n=(m&l|0)==0;if(n)k=m&e;else k=(e>>>0)%(l>>>0)|0;g=(c[d>>2]|0)+(k<<2)|0;f=c[g>>2]|0;while(1){e=c[f>>2]|0;if((e|0)==(o|0)){j=f;break}else f=e}i=d+8|0;if((j|0)!=(i|0)){e=c[j+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0))g=o;else h=12}else h=12;do if((h|0)==12){e=c[o>>2]|0;if(e){e=c[e+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0)){g=o;break}}c[g>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(n)f=f&m;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(k|0)){c[(c[d>>2]|0)+(f<<2)>>2]=j;e=c[o>>2]|0}}c[j>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=i;a[b+8>>0]=1;return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(408)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,392)|0;h[e+248>>3]=.0001;h[e+256>>3]=1.0e3;d=e+264|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function xh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;yh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return}function yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)zh(a,b)}}else zh(a,b);return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function Ah(a){a=a|0;return Aj(c[a+4>>2]|0)|0}function Bh(a){a=a|0;Ka(624,10917);Ya(632,10922,1,1,0);Ga(640,10927,1,-128,127);Ga(656,10932,1,-128,127);Ga(648,10944,1,0,255);Ga(664,10958,2,-32768,32767);Ga(672,10964,2,0,65535);Ga(680,10979,4,-2147483648,2147483647);Ga(688,10983,4,0,-1);Ga(696,10996,4,-2147483648,2147483647);Ga(704,11001,4,0,-1);kb(712,11015,4);kb(720,11021,8);sb(360,11028);sb(392,11040);bb(416,4,11073);db(440,11086);Aa(448,0,11102);Dh(11132);Eh(11169);Fh(11208);Gh(11239);Hh(11279);Ih(11308);Aa(456,4,11346);Aa(464,5,11376);Dh(11415);Eh(11447);Fh(11480);Gh(11513);Hh(11547);Ih(11580);Aa(472,6,11614);Aa(480,7,11645);Aa(488,7,11677);return}function Ch(){Bh(0);return}function Dh(a){a=a|0;Aa(536,0,a|0);return}function Eh(a){a=a|0;Aa(528,1,a|0);return}function Fh(a){a=a|0;Aa(520,2,a|0);return}function Gh(a){a=a|0;Aa(512,3,a|0);return}function Hh(a){a=a|0;Aa(504,4,a|0);return}function Ih(a){a=a|0;Aa(496,5,a|0);return}function Jh(a){a=a|0;Ia(12478,12501,303,12589)}function Kh(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=Uj(b)|0;a:do if(!a){while(1){a=Ph()|0;if(!a)break;_b[a&0]();a=Uj(b)|0;if(a)break a}b=Wa(4)|0;c[b>>2]=2224;wb(b|0,544,1)}while(0);return a|0}function Lh(a){a=a|0;Vj(a);return}function Mh(a){a=a|0;return}function Nh(a){a=a|0;Lh(a);return}function Oh(a){a=a|0;return 12610}function Ph(){var a=0;a=c[559]|0;c[559]=a+0;return a|0}function Qh(a){a=a|0;return}function Rh(a){a=a|0;return}function Sh(a){a=a|0;return}function Th(a){a=a|0;return}function Uh(a){a=a|0;return}function Vh(a){a=a|0;Lh(a);return}function Wh(a){a=a|0;Lh(a);return}function Xh(a){a=a|0;Lh(a);return}function Yh(a){a=a|0;Lh(a);return}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)!=(b|0))if((b|0)!=0?(f=ei(b,576,592,0)|0,(f|0)!=0):0){b=g;e=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));c[g>>2]=f;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dc[c[(c[f>>2]|0)+28>>2]&3](f,g,c[d>>2]|0,1);if((c[g+24>>2]|0)==1){c[d>>2]=c[g+16>>2];b=1}else b=0}else b=0;else b=1;i=h;return b|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function ai(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);return}function bi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);else{a=c[a+8>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d,e)}return}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d+f|0,(g&2|0)!=0?e:2);return}function di(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((b|0)!=(c[d+8>>2]|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;ci(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{ci(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else $h(0,d,e,f);while(0);return}function ei(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;g=q+16|0;d=q+20|0;e=q+24|0;h=q+28|0;j=q+32|0;k=q+40|0;l=(p|0)==(f|0);m=g;n=m+36|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do if(l){c[q+48>>2]=1;bc[c[(c[f>>2]|0)+20>>2]&3](f,q,o,o,1,0);g=(c[e>>2]|0)==1?o:0}else{Rb[c[(c[p>>2]|0)+24>>2]&3](p,q,o,1,0);switch(c[q+36>>2]|0){case 0:{g=(c[k>>2]|0)==1&(c[h>>2]|0)==1&(c[j>>2]|0)==1?c[d>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((c[e>>2]|0)!=1?!((c[k>>2]|0)==0&(c[h>>2]|0)==1&(c[j>>2]|0)==1):0){g=0;break}g=c[g>>2]|0}while(0);i=r;return g|0}function fi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;f=d+16|0;b=c[f>>2]|0;if(!b){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((b|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}b=d+24|0;f=c[b>>2]|0;if((f|0)==2){c[b>>2]=g;f=g}if((f|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function gi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){q=c[b+12>>2]|0;j=b+16+(q<<3)|0;ii(b+16|0,d,e,f,g);h=b+24|0;if((q|0)<=1)break;i=c[b+8>>2]|0;if((i&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(i&1)){i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[k>>2]|0)==1)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+24|0;b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[k>>2]|0)==1?(c[i>>2]|0)==1:0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+54|0;while(1){if(a[i>>0]|0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4)break;i=c[b+12>>2]|0;j=b+16+(i<<3)|0;k=d+52|0;f=d+53|0;n=d+54|0;l=b+8|0;o=d+24|0;b:do if((i|0)>0){i=0;h=0;b=b+16|0;while(1){a[k>>0]=0;a[f>>0]=0;hi(b,d,e,e,1,g);if(a[n>>0]|0){q=20;break b}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[l>>2]&1)){h=1;q=20;break b}else{h=1;break}if((c[o>>2]|0)==1)break b;if(!(c[l>>2]&2))break b;else{i=1;h=1}}while(0);b=b+8|0;if(b>>>0>=j>>>0){q=20;break}}}else{i=0;h=0;q=20}while(0);do if((q|0)==20){if((!i?(c[p>>2]=e,e=d+40|0,c[e>>2]=(c[e>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[n>>0]=1;if(h)break}else q=24;if((q|0)==24?h:0)break;c[m>>2]=4;break a}while(0);c[m>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function hi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e+h|0,(i&2|0)!=0?f:2,g);return}function ii(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Rb[c[(c[a>>2]|0)+24>>2]&3](a,b,d+g|0,(h&2|0)!=0?e:2,f);return}function ji(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;Rb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4)break;h=d+52|0;a[h>>0]=0;k=d+53|0;a[k>>0]=0;b=c[b+8>>2]|0;bc[c[(c[b>>2]|0)+20>>2]&3](b,d,e,e,1,g);if(a[k>>0]|0){if(!(a[h>>0]|0)){h=1;j=13}}else{h=0;j=13}do if((j|0)==13){c[i>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else j=16;if((j|0)==16?h:0)break;c[f>>2]=4;break a}while(0);c[f>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function ki(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(i=d+28|0,(c[i>>2]|0)!=1):0)c[i>>2]=f}else if((b|0)==(c[d>>2]|0)){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function li(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==(c[d+8>>2]|0))fi(0,d,e,f,g);else{m=d+52|0;n=a[m>>0]|0;o=d+53|0;p=a[o>>0]|0;l=c[b+12>>2]|0;i=b+16+(l<<3)|0;a[m>>0]=0;a[o>>0]=0;hi(b+16|0,d,e,f,g,h);a:do if((l|0)>1){j=d+24|0;k=b+8|0;l=d+54|0;b=b+24|0;do{if(a[l>>0]|0)break a;if(!(a[m>>0]|0)){if((a[o>>0]|0)!=0?(c[k>>2]&1|0)==0:0)break a}else{if((c[j>>2]|0)==1)break a;if(!(c[k>>2]&2))break a}a[m>>0]=0;a[o>>0]=0;hi(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}while(0);a[m>>0]=n;a[o>>0]=p}return}function mi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);else{a=c[a+8>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e,f,g)}return}function ni(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);return}function oi(a){a=a|0;Ia(12625,12654,1164,12589)}function pi(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function qi(){var a=0;if(!(c[597]|0))a=2644;else a=c[(gb()|0)+60>>2]|0;return a|0}function ri(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[12742+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=12830;e=5;break}}if((e|0)==2)if(!c)b=12830;else{b=12830;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function si(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0.0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+512|0;H=L;switch(e|0){case 0:{K=24;J=-149;A=4;break}case 1:{K=53;J=-1074;A=4;break}case 2:{K=53;J=-1074;A=4;break}default:g=0.0}a:do if((A|0)==4){E=b+4|0;C=b+100|0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0}while((pi(e)|0)!=0);b:do switch(e|0){case 43:case 45:{h=1-(((e|0)==45&1)<<1)|0;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;I=h;break b}else{e=vi(b)|0;I=h;break b}}default:I=1}while(0);h=e;e=0;do{if((h|32|0)!=(a[14634+e>>0]|0))break;do if(e>>>0<7){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{A=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{A=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[16477+e>>0]|0))break d;do if(e>>>0<2){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==40)e=1;else{if(!(c[C>>2]|0)){g=s;break a}c[E>>2]=(c[E>>2]|0)+-1;g=s;break a}while(1){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0}else h=vi(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!k){c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{do if((h|0)==48){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|32|0)!=120){if(!(c[C>>2]|0)){e=48;break}c[E>>2]=(c[E>>2]|0)+-1;e=48;break}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=0}else{e=vi(b)|0;k=0}e:while(1){switch(e|0){case 46:{A=74;break e}case 48:break;default:{y=0;l=0;x=0;h=0;n=k;o=0;w=0;m=1.0;k=0;g=0.0;break e}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==74){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){k=0;h=0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;k=gk(k|0,h|0,-1,-1)|0;h=D}while((e|0)==48);y=0;l=0;x=k;n=1;o=1;w=0;m=1.0;k=0;g=0.0}else{y=0;l=0;x=0;h=0;n=k;o=1;w=0;m=1.0;k=0;g=0.0}}while(1){u=e+-48|0;p=e|32;if(u>>>0>=10){v=(e|0)==46;if(!(v|(p+-97|0)>>>0<6)){p=x;u=y;break}if(v)if(!o){v=l;h=y;u=y;o=1;p=w;j=m}else{p=x;u=y;e=46;break}else A=86}else A=86;if((A|0)==86){A=0;e=(e|0)>57?p+-87|0:u;do if(!((y|0)<0|(y|0)==0&l>>>0<8)){if((y|0)<0|(y|0)==0&l>>>0<14){r=m*.0625;p=w;j=r;g=g+r*+(e|0);break}if((w|0)!=0|(e|0)==0){p=w;j=m}else{p=1;j=m;g=g+m*.5}}else{p=w;j=m;k=e+(k<<4)|0}while(0);l=gk(l|0,y|0,1,0)|0;v=x;u=D;n=1}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;y=u;x=v;e=d[e>>0]|0;w=p;m=j;continue}else{y=u;x=v;e=vi(b)|0;w=p;m=j;continue}}if(!n){e=(c[C>>2]|0)==0;if(!e)c[E>>2]=(c[E>>2]|0)+-1;if(f){if(!e?(z=c[E>>2]|0,c[E>>2]=z+-1,(o|0)!=0):0)c[E>>2]=z+-2}else ui(b,0);g=+(I|0)*0.0;break a}n=(o|0)==0;o=n?l:p;n=n?u:h;if((u|0)<0|(u|0)==0&l>>>0<8){h=u;do{k=k<<4;l=gk(l|0,h|0,1,0)|0;h=D}while((h|0)<0|(h|0)==0&l>>>0<8)}if((e|32|0)==112){h=Hj(b,f)|0;e=D;if((h|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break a}if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}}}else if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}H=fk(o|0,n|0,2)|0;H=gk(H|0,D|0,-32,-1)|0;e=gk(H|0,D|0,h|0,e|0)|0;h=D;if(!k){g=+(I|0)*0.0;break a}if((h|0)>0|(h|0)==0&e>>>0>(0-J|0)>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}H=J+-106|0;G=((H|0)<0)<<31>>31;if((h|0)<(G|0)|(h|0)==(G|0)&e>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((k|0)>-1){do{G=!(g>=.5);H=G&1|k<<1;k=H^1;g=g+(G?g:g+-1.0);e=gk(e|0,h|0,-1,-1)|0;h=D}while((H|0)>-1);l=e;m=g}else{l=e;m=g}e=dk(32,0,J|0,((J|0)<0)<<31>>31|0)|0;e=gk(l|0,h|0,e|0,D|0)|0;J=D;if(0>(J|0)|0==(J|0)&K>>>0>e>>>0)if((e|0)<0){e=0;A=127}else A=125;else{e=K;A=125}if((A|0)==125)if((e|0)<53)A=127;else{h=e;j=+(I|0);g=0.0}if((A|0)==127){g=+(I|0);h=e;j=g;g=+yi(+Di(1.0,84-e|0),g)}K=(k&1|0)==0&(m!=0.0&(h|0)<32);g=j*(K?0.0:m)+(g+j*+(((K&1)+k|0)>>>0))-g;if(!(g!=0.0))c[(qi()|0)>>2]=34;g=+Ei(g,l);break a}else e=h;while(0);F=J+K|0;G=0-F|0;k=0;f:while(1){switch(e|0){case 46:{A=138;break f}case 48:break;default:{h=0;p=0;o=0;break f}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==138){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){h=0;e=0;while(1){h=gk(h|0,e|0,-1,-1)|0;k=D;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48)e=k;else{p=k;k=1;o=1;break}}}else{h=0;p=0;o=1}}c[H>>2]=0;n=e+-48|0;l=(e|0)==46;g:do if(l|n>>>0<10){B=H+496|0;y=0;v=0;w=l;A=p;u=k;z=o;k=0;l=0;o=0;h:while(1){do if(w)if(!z){h=y;p=v;z=1}else{p=A;e=y;n=v;break h}else{w=gk(y|0,v|0,1,0)|0;v=D;x=(e|0)!=48;if((l|0)>=125){if(!x){p=A;y=w;break}c[B>>2]=c[B>>2]|1;p=A;y=w;break}p=H+(l<<2)|0;if(k)n=e+-48+((c[p>>2]|0)*10|0)|0;c[p>>2]=n;k=k+1|0;n=(k|0)==9;p=A;y=w;u=1;k=n?0:k;l=(n&1)+l|0;o=x?w:o}while(0);e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;n=e+-48|0;w=(e|0)==46;if(!(w|n>>>0<10)){n=z;A=161;break g}else A=p}u=(u|0)!=0;A=169}else{y=0;v=0;u=k;n=o;k=0;l=0;o=0;A=161}while(0);do if((A|0)==161){B=(n|0)==0;h=B?y:h;p=B?v:p;u=(u|0)!=0;if(!((e|32|0)==101&u))if((e|0)>-1){e=y;n=v;A=169;break}else{e=y;n=v;A=171;break}n=Hj(b,f)|0;e=D;if((n|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break}if(!(c[C>>2]|0)){n=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;n=0;e=0}}h=gk(n|0,e|0,h|0,p|0)|0;u=y;p=D;n=v;A=173}while(0);if((A|0)==169)if(c[C>>2]|0){c[E>>2]=(c[E>>2]|0)+-1;if(u){u=e;A=173}else A=172}else A=171;if((A|0)==171)if(u){u=e;A=173}else A=172;do if((A|0)==172){c[(qi()|0)>>2]=22;ui(b,0);g=0.0}else if((A|0)==173){e=c[H>>2]|0;if(!e){g=+(I|0)*0.0;break}if(((n|0)<0|(n|0)==0&u>>>0<10)&((h|0)==(u|0)&(p|0)==(n|0))?K>>>0>30|(e>>>K|0)==0:0){g=+(I|0)*+(e>>>0);break}b=(J|0)/-2|0;E=((b|0)<0)<<31>>31;if((p|0)>(E|0)|(p|0)==(E|0)&h>>>0>b>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}b=J+-106|0;E=((b|0)<0)<<31>>31;if((p|0)<(E|0)|(p|0)==(E|0)&h>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(k){if((k|0)<9){n=H+(l<<2)|0;e=c[n>>2]|0;do{e=e*10|0;k=k+1|0}while((k|0)!=9);c[n>>2]=e}l=l+1|0}if((o|0)<9?(o|0)<=(h|0)&(h|0)<18:0){if((h|0)==9){g=+(I|0)*+((c[H>>2]|0)>>>0);break}if((h|0)<9){g=+(I|0)*+((c[H>>2]|0)>>>0)/+(c[2648+(8-h<<2)>>2]|0);break}b=K+27+($(h,-3)|0)|0;e=c[H>>2]|0;if((b|0)>30|(e>>>b|0)==0){g=+(I|0)*+(e>>>0)*+(c[2648+(h+-10<<2)>>2]|0);break}}e=(h|0)%9|0;if(!e){k=0;e=0}else{u=(h|0)>-1?e:e+9|0;n=c[2648+(8-u<<2)>>2]|0;if(l){o=1e9/(n|0)|0;k=0;e=0;p=0;do{C=H+(p<<2)|0;E=c[C>>2]|0;b=((E>>>0)/(n>>>0)|0)+e|0;c[C>>2]=b;e=$((E>>>0)%(n>>>0)|0,o)|0;b=(p|0)==(k|0)&(b|0)==0;p=p+1|0;h=b?h+-9|0:h;k=b?p&127:k}while((p|0)!=(l|0));if(e){c[H+(l<<2)>>2]=e;l=l+1|0}}else{k=0;l=0}e=0;h=9-u+h|0}i:while(1){v=(h|0)<18;w=(h|0)==18;x=H+(k<<2)|0;do{if(!v){if(!w)break i;if((c[x>>2]|0)>>>0>=9007199){h=18;break i}}n=0;o=l+127|0;while(1){u=o&127;p=H+(u<<2)|0;o=fk(c[p>>2]|0,0,29)|0;o=gk(o|0,D|0,n|0,0)|0;n=D;if(n>>>0>0|(n|0)==0&o>>>0>1e9){b=pk(o|0,n|0,1e9,0)|0;o=qk(o|0,n|0,1e9,0)|0;n=b}else n=0;c[p>>2]=o;b=(u|0)==(k|0);l=(u|0)!=(l+127&127|0)|b?l:(o|0)==0?u:l;if(b)break;else o=u+-1|0}e=e+-29|0}while((n|0)==0);k=k+127&127;if((k|0)==(l|0)){b=l+127&127;l=H+((l+126&127)<<2)|0;c[l>>2]=c[l>>2]|c[H+(b<<2)>>2];l=b}c[H+(k<<2)>>2]=n;h=h+9|0}j:while(1){y=l+1&127;x=H+((l+127&127)<<2)|0;while(1){v=(h|0)==18;w=(h|0)>27?9:1;u=v^1;while(1){o=k&127;p=(o|0)==(l|0);do if(!p){n=c[H+(o<<2)>>2]|0;if(n>>>0<9007199){A=219;break}if(n>>>0>9007199)break;n=k+1&127;if((n|0)==(l|0)){A=219;break}n=c[H+(n<<2)>>2]|0;if(n>>>0<254740991){A=219;break}if(!(n>>>0>254740991|u)){h=o;break j}}else A=219;while(0);if((A|0)==219?(A=0,v):0){A=220;break j}e=e+w|0;if((k|0)==(l|0))k=l;else break}u=(1<>>w;o=k;n=0;p=k;while(1){E=H+(p<<2)|0;b=c[E>>2]|0;k=(b>>>w)+n|0;c[E>>2]=k;n=$(b&u,v)|0;k=(p|0)==(o|0)&(k|0)==0;p=p+1&127;h=k?h+-9|0:h;k=k?p:o;if((p|0)==(l|0))break;else o=k}if(!n)continue;if((y|0)!=(k|0))break;c[x>>2]=c[x>>2]|1}c[H+(l<<2)>>2]=n;l=y}if((A|0)==220)if(p){c[H+(y+-1<<2)>>2]=0;h=l;l=y}else h=o;g=+((c[H+(h<<2)>>2]|0)>>>0);h=k+1&127;if((h|0)==(l|0)){l=k+2&127;c[H+(l+-1<<2)>>2]=0}r=+(I|0);j=r*(g*1.0e9+ +((c[H+(h<<2)>>2]|0)>>>0));v=e+53|0;p=v-J|0;u=(p|0)<(K|0);h=u&1;o=u?((p|0)<0?0:p):K;if((o|0)<53){M=+yi(+Di(1.0,105-o|0),j);m=+Ai(j,+Di(1.0,53-o|0));q=M;g=m;m=M+(j-m)}else{q=0.0;g=0.0;m=j}n=k+2&127;do if((n|0)==(l|0))j=g;else{n=c[H+(n<<2)>>2]|0;do if(n>>>0>=5e8){if(n>>>0>5e8){g=r*.75+g;break}if((k+3&127|0)==(l|0)){g=r*.5+g;break}else{g=r*.75+g;break}}else{if((n|0)==0?(k+3&127|0)==(l|0):0)break;g=r*.25+g}while(0);if((53-o|0)<=1){j=g;break}if(+Ai(g,1.0)!=0.0){j=g;break}j=g+1.0}while(0);g=m+j-q;do if((v&2147483647|0)>(-2-F|0)){if(+O(+g)>=9007199254740992.0){h=u&(o|0)==(p|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(G|0)?!(j!=0.0&(h|0)!=0):0)break;c[(qi()|0)>>2]=34}while(0);g=+Ei(g,e)}while(0);break a}default:{if(c[C>>2]|0)c[E>>2]=(c[E>>2]|0)+-1;c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}}}}while(0);if((A|0)==23){h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[E>>2]=(c[E>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(I|0)*t}while(0);i=L;return +g}function ti(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(qi()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((pi(i)|0)!=0);b:do switch(i|0){case 43:case 45:{j=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=j;break b}else{i=vi(b)|0;p=j;break b}}default:p=0}while(0);j=(e|0)==0;do if((e&-17|0)==0&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;if((d[14643+(i+1)>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){ui(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[14643+(i+1)>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;ui(b,0);c[(qi()|0)>>2]=22;h=0;g=0;break a}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;while(1){j=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;e=i+-48|0;if(!(e>>>0<10&j>>>0<429496729)){e=j;break}else i=j}j=0}else{e=0;j=0}f=i+-48|0;if(f>>>0<10){while(1){k=ok(e|0,j|0,10,0)|0;l=D;m=((f|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&k>>>0>~f>>>0){k=e;break}e=gk(k|0,l|0,f|0,m|0)|0;j=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;f=i+-48|0;if(!(f>>>0<10&(j>>>0<429496729|(j|0)==429496729&e>>>0<2576980378))){k=e;break}}if(f>>>0>9){i=k;e=p}else{e=10;n=72}}else{i=e;e=p}}else n=46;c:do if((n|0)==46){if(!(e+-1&e)){n=a[14900+((e*23|0)>>>5&7)>>0]|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f|i<>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<134217728&f>>>0>>0))break;else i=k}f=0}else{f=0;k=0}l=hk(-1,-1,n|0)|0;m=D;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break}else i=f;while(1){k=fk(k|0,i|0,n|0)|0;f=D;k=j&255|k;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break c}else i=f}}j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f+($(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<119304647&f>>>0>>0))break;else i=k}f=0}else{k=0;f=0}if((j&255)>>>0>>0){n=pk(-1,-1,e|0,0)|0;o=D;m=f;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&k>>>0>n>>>0){j=m;n=72;break c}f=ok(k|0,m|0,e|0,0)|0;l=D;j=j&255;if(l>>>0>4294967295|(l|0)==-1&f>>>0>~j>>>0){j=m;n=72;break c}k=gk(j|0,0,f|0,l|0)|0;f=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0){j=f;n=72;break}else m=f}}else{j=f;n=72}}while(0);if((n|0)==72)if((d[14643+(i+1)>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((d[14643+(i+1)>>0]|0)>>>0>>0);c[(qi()|0)>>2]=34;j=h;i=g;e=(g&1|0)==0&0==0?p:0}else{i=k;e=p}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(j>>>0>>0|(j|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(e|0)!=0)){c[(qi()|0)>>2]=34;g=gk(g|0,h|0,-1,-1)|0;h=D;break}if(j>>>0>h>>>0|(j|0)==(h|0)&i>>>0>g>>>0){c[(qi()|0)>>2]=34;break}}g=((e|0)<0)<<31>>31;g=dk(i^e|0,j^g|0,e|0,g|0)|0;h=D}while(0);D=h;return g|0}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+4>>2]|0;e=c[a+8>>2]|0;f=e-d|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=d+b;else c[a+100>>2]=e;return}function vi(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;i=c[f>>2]|0;if((i|0)!=0?(c[b+108>>2]|0)>=(i|0):0)j=4;else{e=Vi(b)|0;if((e|0)>=0){h=c[f>>2]|0;f=b+8|0;if(h){g=c[f>>2]|0;i=c[b+4>>2]|0;f=g;h=h-(c[b+108>>2]|0)+-1|0;if((f-i|0)>(h|0))c[b+100>>2]=i+h;else j=9}else{g=c[f>>2]|0;f=g;j=9}if((j|0)==9)c[b+100>>2]=f;f=c[b+4>>2]|0;if(g){b=b+108|0;c[b>>2]=g+1-f+(c[b>>2]|0)}f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+100>>2]=0;e=-1}return e|0}function wi(a){a=a|0;if(a>>>0>4294963200){c[(qi()|0)>>2]=0-a;a=-1}return a|0}function xi(a,b){a=+a;b=+b;var d=0,e=0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;h[k>>3]=b;d=c[k+4>>2]&-2147483648|d&2147483647;c[k>>2]=e;c[k+4>>2]=d;return +(+h[k>>3])}function yi(a,b){a=+a;b=+b;return +(+xi(a,b))}function zi(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;h[k>>3]=a;d=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=hk(d|0,m|0,52)|0;e=e&2047;j=hk(n|0,o|0,52)|0;j=j&2047;p=m&-2147483648;i=fk(n|0,o|0,1)|0;l=D;a:do if(!((i|0)==0&(l|0)==0)?(g=o&2147483647,!(g>>>0>2146435072|(g|0)==2146435072&n>>>0>0|(e|0)==2047)):0){f=fk(d|0,m|0,1)|0;g=D;if(!(g>>>0>l>>>0|(g|0)==(l|0)&f>>>0>i>>>0))return +((f|0)==(i|0)&(g|0)==(l|0)?a*0.0:a);if(!e){e=fk(d|0,m|0,12)|0;f=D;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){g=e;e=0;do{e=e+-1|0;g=fk(g|0,f|0,1)|0;f=D}while((f|0)>-1|(f|0)==-1&g>>>0>4294967295)}else e=0;d=fk(d|0,m|0,1-e|0)|0;f=D}else f=m&1048575|1048576;if(!j){g=fk(n|0,o|0,12)|0;i=D;if((i|0)>-1|(i|0)==-1&g>>>0>4294967295){j=0;do{j=j+-1|0;g=fk(g|0,i|0,1)|0;i=D}while((i|0)>-1|(i|0)==-1&g>>>0>4294967295)}else j=0;n=fk(n|0,o|0,1-j|0)|0;m=D}else m=o&1048575|1048576;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;b:do if((e|0)>(j|0)){while(1){if(g)if((d|0)==(n|0)&(f|0)==(m|0))break;else{d=l;f=i}d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;if((e|0)<=(j|0))break b}b=a*0.0;break a}while(0);if(g)if((d|0)==(n|0)&(f|0)==(m|0)){b=a*0.0;break}else{f=i;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=gk(d|0,f|0,0,-1048576)|0;d=D;e=fk(e|0,0,52)|0;d=d|D;e=o|e}else{e=hk(d|0,f|0,1-e|0)|0;d=D}c[k>>2]=e;c[k+4>>2]=d|p;b=+h[k>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function Ai(a,b){a=+a;b=+b;return +(+zi(a,b))}function Bi(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=hk(d|0,e|0,52)|0;f=f&2047;switch(f|0){case 0:{if(a!=0.0){a=+Bi(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3]}}return +a}function Ci(a,b){a=+a;b=b|0;return +(+Bi(a,b))}function Di(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=fk(d+1023|0,0,52)|0;b=D;c[k>>2]=d;c[k+4>>2]=b;return +(a*+h[k>>3])}function Ei(a,b){a=+a;b=b|0;return +(+Di(a,b))}function Fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;g=l;j=(f|0)==0?2680:f;f=c[j>>2]|0;a:do if(!d)if(!f)f=0;else k=15;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[h>>2]=g;f=f<<24>>24!=0&1;break}f=g+-194|0;if(f>>>0>50){k=15;break}f=c[2432+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;k=9}}else{g=e;k=9}b:do if((k|0)==9){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){k=15;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){k=15;break a}}c[j>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[j>>2]=f;f=-2}}while(0);if((k|0)==15){c[j>>2]=0;c[(qi()|0)>>2]=84;f=-1}i=l;return f|0}function Gi(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(qi()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function Ii(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Hi(a,b,0)|0;return a|0}function Ji(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+112|0;n=o+40|0;l=o+24|0;k=o+16|0;g=o;m=o+52|0;f=a[d>>0]|0;if(sj(14909,f<<24>>24,4)|0){e=Uj(1144)|0;if(!e)e=0;else{h=e;j=h+112|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));if(!(wj(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(wj(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;va(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[k>>2]=b;c[k+4>>2]=3;f=va(221,k|0)|0;if(!(f&1024)){c[l>>2]=b;c[l+4>>2]=4;c[l+8>>2]=f|1024;va(221,l|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+120;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[n>>2]=b,c[n+4>>2]=21505,c[n+8>>2]=m,(mb(54,n|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=14;c[e+36>>2]=4;c[e+40>>2]=5;c[e+12>>2]=2;if(!(c[598]|0))c[e+76>>2]=-1;yb(2416);f=c[603]|0;c[e+56>>2]=f;if(f)c[f+52>>2]=e;c[603]=e;nb(2416)}}else{c[(qi()|0)>>2]=22;e=0}i=o;return e|0}function Ki(b){b=b|0;var c=0,d=0,e=0;d=(wj(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(wj(b,120)|0)==0;d=e?d:d|128;b=(wj(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function Li(a){a=a|0;return 0}function Mi(a){a=a|0;return}function Ni(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=wi(zb(6,d|0)|0)|0;i=b;return a|0}function Oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;h=m+16|0;g=m;f=m+32|0;c[f>>2]=d;j=f+4|0;l=b+48|0;n=c[l>>2]|0;c[j>>2]=e-((n|0)!=0&1);k=b+44|0;c[f+8>>2]=c[k>>2];c[f+12>>2]=n;if(!(c[597]|0)){c[h>>2]=c[b+60>>2];c[h+4>>2]=f;c[h+8>>2]=2;f=wi(Nb(145,h|0)|0)|0}else{Fa(13,b|0);c[g>>2]=c[b+60>>2];c[g+4>>2]=f;c[g+8>>2]=2;f=wi(Nb(145,g|0)|0)|0;pb(0)}if((f|0)>=1){j=c[j>>2]|0;if(f>>>0>j>>>0){h=c[k>>2]|0;g=b+4|0;c[g>>2]=h;c[b+8>>2]=h+(f-j);if(!(c[l>>2]|0))f=e;else{c[g>>2]=h+1;a[d+(e+-1)>>0]=a[h>>0]|0;f=e}}}else{c[b>>2]=c[b>>2]|f&48^16;c[b+8>>2]=0;c[b+4>>2]=0}i=m;return f|0}function Pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((wi(Ib(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function Qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[597]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=wi(Ob(146,n|0)|0)|0}else{Fa(14,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=wi(Ob(146,m|0)|0)|0;pb(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=4;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(mb(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=Qi(b,d,e)|0;i=g;return f|0}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=sj(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;ik(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Ti(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Qb[c[b+36>>2]&15](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(d&20)if(!(d&4))d=-1;else{c[b>>2]=d|32;d=-1}else{d=c[e>>2]|0;c[b+8>>2]=d;c[b+4>>2]=d;d=0}return d|0}function Ui(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);d=0}else{c[b>>2]=d|32;d=-1}return d|0}function Vi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(Ti(a)|0)!=0:0)b=-1;else if((Qb[c[a+32>>2]&15](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function Wi(a){a=a|0;var b=0,d=0,e=0;e=(c[a>>2]&1|0)!=0;if(!e){yb(2416);d=c[a+52>>2]|0;b=a+56|0;if(d)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b)c[b+52>>2]=d;if((c[603]|0)==(a|0))c[603]=b;nb(2416)}b=Yi(a)|0;b=Yb[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d)Vj(d);if(!e)Vj(a);return b|0}function Xi(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Yi(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Kj(a)|0;break}d=(Li(a)|0)==0;b=Kj(a)|0;if(!d)Mi(a)}else{if(!(c[660]|0))b=0;else b=Yi(c[660]|0)|0;yb(2416);a=c[603]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Li(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Kj(a)|0|b;if(d)Mi(a);a=c[a+56>>2]|0}while((a|0)!=0);nb(2416)}while(0);return b|0}function Zi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c[f+76>>2]|0)>-1)o=Li(f)|0;else o=0;g=e+-1|0;if((e|0)<2){p=f+74|0;n=a[p>>0]|0;a[p>>0]=n+255|n;if(o)Mi(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){m=f+4|0;n=f+8|0;h=b;while(1){i=c[m>>2]|0;q=i;k=(c[n>>2]|0)-q|0;j=sj(i,10,k)|0;r=(j|0)==0;j=r?k:1-q+j|0;q=j>>>0>>0;j=q?j:g;ik(h|0,i|0,j|0)|0;i=c[m>>2]|0;k=i+j|0;c[m>>2]=k;e=h+j|0;l=g-j|0;if(!(r&q)){p=18;break a}if(k>>>0<(c[n>>2]|0)>>>0){j=j+1|0;c[m>>2]=i+j;i=d[k>>0]|0}else{g=Vi(f)|0;if((g|0)<0)break;j=j+1|0;i=g}g=l+-1|0;h=h+j|0;a[e>>0]=i;if(!((g|0)!=0&(i&255|0)!=10)){e=h;p=18;break a}}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)p=18;else b=0}else{e=b;p=18}while(0);if((p|0)==18)if(!b)b=0;else a[e>>0]=0;if(o)Mi(f)}return b|0}function _i(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g+16|0;e=g;if(sj(14909,a[d>>0]|0,4)|0){h=Ki(d)|0|32768;c[e>>2]=b;c[e+4>>2]=h;c[e+8>>2]=438;e=wi(Ab(5,e|0)|0)|0;if((e|0)>=0){b=Ji(e,d)|0;if(!b){c[f>>2]=e;zb(6,f|0)|0;b=0}}else b=0}else{c[(qi()|0)>>2]=22;b=0}i=g;return b|0}function $i(a,b){a=a|0;b=b|0;return (ij(a,Bj(a)|0,1,b)|0)+-1|0}function aj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=$(e,d)|0;if((c[f+76>>2]|0)>-1)k=Li(f)|0;else k=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:j;ik(b|0,h|0,i|0)|0;c[g>>2]=h+i;b=b+i|0;g=j-i|0}else g=j;a:do if(!g)l=13;else{i=f+32|0;h=g;while(1){if(Ti(f)|0){e=h;break}g=Qb[c[i>>2]&15](f,b,h)|0;if((g+1|0)>>>0<2){e=h;break}if((h|0)==(g|0)){l=13;break a}else{b=b+g|0;h=h-g|0}}if(k)Mi(f);e=((j-e|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(k)Mi(f);return e|0}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;f=a+20|0;e=a+28|0;if((c[f>>2]|0)>>>0>(c[e>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[e>>2]=0;c[f>>2]=0;if((Qb[c[a+40>>2]&15](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(Li(a)|0)==0;b=bj(a,b,d)|0;if(!e)Mi(a)}else b=bj(a,b,d)|0;return b|0}function dj(a,b,c){a=a|0;b=b|0;c=c|0;return cj(a,b,c)|0}function ej(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Qb[c[a+40>>2]&15](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function fj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=ej(a)|0}else a=ej(a)|0;return a|0}function gj(a){a=a|0;return fj(a)|0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Ui(e)|0)){g=c[f>>2]|0;h=4}else f=0;else h=4;a:do if((h|0)==4){i=e+20|0;h=c[i>>2]|0;if((g-h|0)>>>0>>0){f=Qb[c[e+36>>2]&15](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break b}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Qb[c[e+36>>2]&15](e,b,f)|0)>>>0>>0)break a;d=d-f|0;b=b+f|0;g=c[i>>2]|0}else{g=h;f=0}while(0);ik(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;f=f+d|0}while(0);return f|0}function ij(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=$(d,b)|0;if((c[e+76>>2]|0)>-1){g=(Li(e)|0)==0;a=hj(a,f,e)|0;if(!g)Mi(e)}else a=hj(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function jj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Mi(a)}else{bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=pj(a,b,f)|0;i=e;return d|0}function lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=Uj(240)|0;do if(f){c[e>>2]=c[d>>2];e=oj(f,240,b,e)|0;if(e>>>0<240){b=Xj(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}Vj(f);if((e|0)>=0?(h=e+1|0,g=Uj(h)|0,c[a>>2]=g,(g|0)!=0):0)e=oj(g,h,b,d)|0;else e=-1}else e=-1;while(0);i=j;return e|0}function mj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+80|0;r=s+96|0;q=s;p=s+136|0;f=r;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=c[e>>2];if((Lj(0,d,o,q,r)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)m=Li(b)|0;else m=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=p;j=b+28|0;c[j>>2]=p;k=b+20|0;c[k>>2]=p;c[e>>2]=80;l=b+16|0;c[l>>2]=p+80;f=Lj(b,d,o,q,r)|0;if(h){Qb[c[b+36>>2]&15](b,0,0)|0;f=(c[k>>2]|0)==0?-1:f;c[g>>2]=h;c[e>>2]=0;c[l>>2]=0;c[j>>2]=0;c[k>>2]=0}}else f=Lj(b,d,o,q,r)|0;e=c[b>>2]|0;c[b>>2]=e|n;if(m)Mi(b);e=(e&32|0)==0?f:-1}i=s;return e|0}function nj(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=i;i=i+304|0;H=P+16|0;J=P+8|0;I=P+33|0;K=P;y=P+32|0;if((c[e+76>>2]|0)>-1)O=Li(e)|0;else O=0;k=a[f>>0]|0;a:do if(k<<24>>24){L=e+4|0;M=e+100|0;G=e+108|0;z=e+8|0;A=I+10|0;B=I+33|0;C=J+4|0;E=I+46|0;F=I+94|0;m=k;k=0;n=f;s=0;l=0;f=0;b:while(1){c:do if(!(pi(m&255)|0)){m=(a[n>>0]|0)==37;d:do if(m){q=n+1|0;o=a[q>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{x=0;o=n+2|0;break}default:{o=(o&255)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[H>>2]=c[j>>2];while(1){x=(c[H>>2]|0)+(4-1)&~(4-1);m=c[x>>2]|0;c[H>>2]=x+4;if(o>>>0>1)o=o+-1|0;else break}x=m;o=n+3|0;break e}o=(c[j>>2]|0)+(4-1)&~(4-1);x=c[o>>2]|0;c[j>>2]=o+4;o=q}}while(0);m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0<10){m=0;while(1){q=(m*10|0)+-48+n|0;o=o+1|0;m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0>=10)break;else m=q}}else q=0;if(m<<24>>24==109){o=o+1|0;r=a[o>>0]|0;m=(x|0)!=0&1;l=0;f=0}else{r=m;m=0}n=o+1|0;switch(r&255|0){case 104:{w=(a[n>>0]|0)==104;n=w?o+2|0:n;o=w?-2:-1;break}case 108:{w=(a[n>>0]|0)==108;n=w?o+2|0:n;o=w?3:1;break}case 106:{o=3;break}case 116:case 122:{o=1;break}case 76:{o=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=o;o=0;break}default:{N=152;break b}}r=d[n>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:o;switch(r|0){case 99:{w=s;v=(q|0)<1?1:q;break}case 91:{w=s;v=q;break}case 110:{if(!x){o=s;break c}switch(t|0){case -2:{a[x>>0]=s;o=s;break c}case -1:{b[x>>1]=s;o=s;break c}case 0:{c[x>>2]=s;o=s;break c}case 1:{c[x>>2]=s;o=s;break c}case 3:{o=x;c[o>>2]=s;c[o+4>>2]=((s|0)<0)<<31>>31;o=s;break c}default:{o=s;break c}}}default:{ui(e,0);do{o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0}while((pi(o)|0)!=0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}w=(c[G>>2]|0)+s+o-(c[z>>2]|0)|0;v=q}}ui(e,v);o=c[L>>2]|0;q=c[M>>2]|0;if(o>>>0>>0)c[L>>2]=o+1;else{if((vi(e)|0)<0){N=152;break b}q=c[M>>2]|0}if(q)c[L>>2]=(c[L>>2]|0)+-1;f:do switch(r|0){case 91:case 99:case 115:{u=(r|0)==99;g:do if((r&239|0)==99){ek(I|0,-1,257)|0;a[I>>0]=0;if((r|0)==115){a[B>>0]=0;a[A>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;a[A+3>>0]=0;a[A+4>>0]=0}}else{Q=n+1|0;s=(a[Q>>0]|0)==94;o=s&1;r=s?Q:n;n=s?n+2|0:Q;ek(I|0,s&1|0,257)|0;a[I>>0]=0;switch(a[n>>0]|0){case 45:{s=(o^1)&255;a[E>>0]=s;n=r+2|0;break}case 93:{s=(o^1)&255;a[F>>0]=s;n=r+2|0;break}default:s=(o^1)&255}while(1){o=a[n>>0]|0;h:do switch(o<<24>>24){case 0:{N=152;break b}case 93:break g;case 45:{r=n+1|0;o=a[r>>0]|0;switch(o<<24>>24){case 93:case 0:{o=45;break h}default:{}}n=a[n+-1>>0]|0;if((n&255)<(o&255)){n=n&255;do{n=n+1|0;a[I+n>>0]=s;o=a[r>>0]|0}while((n|0)<(o&255|0));n=r}else n=r;break}default:{}}while(0);a[I+((o&255)+1)>>0]=s;n=n+1|0}}while(0);r=u?v+1|0:31;s=(t|0)==1;t=(m|0)!=0;i:do if(s){if(t){f=Uj(r<<2)|0;if(!f){l=0;N=152;break b}}else f=x;c[J>>2]=0;c[C>>2]=0;l=0;j:while(1){q=(f|0)==0;do{k:while(1){o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0;if(!(a[I+(o+1)>>0]|0))break j;a[y>>0]=o;switch(Fi(K,y,1,J)|0){case -1:{l=0;N=152;break b}case -2:break;default:break k}}if(!q){c[f+(l<<2)>>2]=c[K>>2];l=l+1|0}}while(!(t&(l|0)==(r|0)));l=r<<1|1;o=Xj(f,l<<2)|0;if(!o){l=0;N=152;break b}Q=r;r=l;f=o;l=Q}if(!(Gi(J)|0)){l=0;N=152;break b}else{q=l;l=0}}else{if(t){l=Uj(r)|0;if(!l){l=0;f=0;N=152;break b}else o=0;while(1){do{f=c[L>>2]|0;if(f>>>0<(c[M>>2]|0)>>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=o;f=0;break i}a[l+o>>0]=f;o=o+1|0}while((o|0)!=(r|0));f=r<<1|1;o=Xj(l,f)|0;if(!o){f=0;N=152;break b}else{Q=r;r=f;l=o;o=Q}}}if(!x){l=q;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=0;l=0;f=0;break i}l=c[M>>2]|0}}else{l=0;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=l;l=x;f=0;break i}a[x+l>>0]=f;q=c[M>>2]|0;l=l+1|0}}}while(0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}o=o-(c[z>>2]|0)+(c[G>>2]|0)|0;if(!o)break b;if(!((o|0)==(v|0)|u^1))break b;do if(t)if(s){c[x>>2]=f;break}else{c[x>>2]=l;break}while(0);if(!u){if(f)c[f+(q<<2)>>2]=0;if(!l){l=0;break f}a[l+q>>0]=0}break}case 120:case 88:case 112:{o=16;N=134;break}case 111:{o=8;N=134;break}case 117:case 100:{o=10;N=134;break}case 105:{o=0;N=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+si(e,t,0);if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if(x)switch(t|0){case 0:{g[x>>2]=p;break f}case 1:{h[x>>3]=p;break f}case 2:{h[x>>3]=p;break f}default:break f}break}default:{}}while(0);l:do if((N|0)==134){N=0;o=ti(e,o,0,-1,-1)|0;if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if((x|0)!=0&(r|0)==112){c[x>>2]=o;break}if(x)switch(t|0){case -2:{a[x>>0]=o;break l}case -1:{b[x>>1]=o;break l}case 0:{c[x>>2]=o;break l}case 1:{c[x>>2]=o;break l}case 3:{Q=x;c[Q>>2]=o;c[Q+4>>2]=D;break l}default:break l}}while(0);k=((x|0)!=0&1)+k|0;o=(c[G>>2]|0)+w+(c[L>>2]|0)-(c[z>>2]|0)|0;break c}while(0);n=n+(m&1)|0;ui(e,0);m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0;if((m|0)!=(d[n>>0]|0)){N=21;break b}o=s+1|0}else{while(1){m=n+1|0;if(!(pi(d[m>>0]|0)|0))break;else n=m}ui(e,0);do{m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0}while((pi(m)|0)!=0);m=c[L>>2]|0;if(c[M>>2]|0){m=m+-1|0;c[L>>2]=m}o=(c[G>>2]|0)+s+m-(c[z>>2]|0)|0}while(0);n=n+1|0;m=a[n>>0]|0;if(!(m<<24>>24))break a;else s=o}if((N|0)==21){if(c[M>>2]|0)c[L>>2]=(c[L>>2]|0)+-1;if((k|0)!=0|(m|0)>-1)break;else{k=0;N=153}}else if((N|0)==152)if(!k){k=m;N=153}if((N|0)==153){m=k;k=-1}if(m){Vj(l);Vj(f)}}else k=0;while(0);if(O)Mi(e);i=P;return k|0}function oj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;g=n+112|0;m=n;h=m;j=2684;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){d=1;l=4}else{c[(qi()|0)>>2]=75;d=-1}else{g=b;l=4}if((l|0)==4){l=-2-g|0;l=d>>>0>l>>>0?l:d;c[m+48>>2]=l;b=m+20|0;c[b>>2]=g;c[m+44>>2]=g;d=g+l|0;g=m+16|0;c[g>>2]=d;c[m+28>>2]=d;d=mj(m,e,f)|0;if(l){e=c[b>>2]|0;a[e+(((e|0)==(c[g>>2]|0))<<31>>31)>>0]=0}}i=n;return d|0}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=15;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=nj(e,b,d)|0;i=g;return h|0}function qj(b){b=b|0;var c=0,d=0,e=0,f=0;while(1){c=b+1|0;if(!(pi(a[b>>0]|0)|0))break;else b=c}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:e=0}if((f|0)==5){b=c;d=a[c>>0]|0}c=(d<<24>>24)+-48|0;if(c>>>0<10){d=b;b=0;do{d=d+1|0;b=(b*10|0)-c|0;c=(a[d>>0]|0)+-48|0}while(c>>>0<10)}else b=0;return ((e|0)!=0?b:0-b|0)|0}function rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=$(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do if((f&3|0)==3){Nj(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)Nj(a,d,e,h,o);else Oj(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}Oj(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;Oj(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;Oj(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function sj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=$(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return ((e|0)!=0?b:0)|0}function tj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function uj(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function vj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);ek(b|0,0,e|0)|0;return b|0}function wj(b,c){b=b|0;c=c|0;b=xj(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Bj(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=$(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009)break b;b=b+4|0;e=c[b>>2]|0}while(((e&-2139062144^-2139062144)&e+-16843009|0)==0);while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function yj(a,b){a=a|0;b=b|0;uj(a,b)|0;return a|0}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;a:do if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31))break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}while(0);e=e-b|0}else e=(xj(b,e<<24>>24)|0)-b|0;i=g;return e|0}function Aj(a){a=a|0;var b=0,c=0;c=(Bj(a)|0)+1|0;b=Uj(c)|0;if(!b)b=0;else ik(b|0,a|0,c|0)|0;return b|0}function Bj(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Cj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Bj(b)|0)|0;a:do if(d)while(1){f=a[c>>0]|0;if(!(f<<24>>24))break a;d=d+-1|0;g=e+1|0;a[e>>0]=f;if(!d){e=g;break}else{c=c+1|0;e=g}}while(0);a[e>>0]=0;return b|0}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;vj(a,b,c)|0;return a|0}function Ej(a,b){a=a|0;b=b|0;return tj(a,b,(Bj(a)|0)+1|0)|0}function Fj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;do if(!(f<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;d=d-b|0;break}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);i=h;return d|0}function Gj(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){b=c[699]|0;if(!b)b=0;else{f=b;e=3}}else{f=b;e=3}do if((e|0)==3){e=Fj(f,d)|0;b=f+e|0;if(!(a[b>>0]|0)){c[699]=0;b=0;break}e=(zj(b,d)|0)+e|0;d=f+e|0;c[699]=d;if(!(a[d>>0]|0)){c[699]=0;break}else{c[699]=f+(e+1);a[d>>0]=0;break}}while(0);return b|0}function Hj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;e=c[i>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0){c[i>>2]=(c[i>>2]|0)+-1;h=f}else h=f;break}default:h=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[i>>2]=(c[i>>2]|0)+-1;f=-2147483648;e=0}else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=ok(f|0,b|0,10,0)|0;f=D;e=gk(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=gk(e|0,D|0,b|0,f|0)|0;b=D;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));g=f}else g=f;if((e+-48|0)>>>0<10)do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;a=(h|0)!=0;e=dk(0,0,g|0,b|0)|0;f=a?D:b;e=a?e:g}D=f;return e|0}function Ij(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Jj(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Kj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Qb[c[a+40>>2]&15](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function Lj(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=i;i=i+624|0;ca=ha+24|0;ea=ha+16|0;da=ha+588|0;Y=ha+576|0;ba=ha;V=ha+536|0;ga=ha+8|0;fa=ha+528|0;M=(e|0)!=0;N=V+40|0;U=N;V=V+39|0;W=ga+4|0;X=Y+12|0;Y=Y+11|0;Z=da;_=X;aa=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ca+288|0;R=da+9|0;S=R;T=da+8|0;m=0;w=f;n=0;f=0;a:while(1){do if((m|0)>-1)if((n|0)>(2147483647-m|0)){c[(qi()|0)>>2]=75;m=-1;break}else{m=n+m|0;break}while(0);n=a[w>>0]|0;if(!(n<<24>>24)){L=245;break}else o=w;b:while(1){switch(n<<24>>24){case 37:{n=o;L=9;break b}case 0:{n=o;break b}default:{}}K=o+1|0;n=a[K>>0]|0;o=K}c:do if((L|0)==9)while(1){L=0;if((a[n+1>>0]|0)!=37)break c;o=o+1|0;n=n+2|0;if((a[n>>0]|0)==37)L=9;else break}while(0);y=o-w|0;if(M?(c[e>>2]&32|0)==0:0)hj(w,y,e)|0;if((o|0)!=(w|0)){w=n;n=y;continue}r=n+1|0;o=a[r>>0]|0;p=(o<<24>>24)+-48|0;if(p>>>0<10){K=(a[n+2>>0]|0)==36;r=K?n+3|0:r;o=a[r>>0]|0;u=K?p:-1;f=K?1:f}else u=-1;n=o<<24>>24;d:do if((n&-32|0)==32){p=0;while(1){if(!(1<>24)+-32|p;r=r+1|0;o=a[r>>0]|0;n=o<<24>>24;if((n&-32|0)!=32){s=p;n=r;break}}}else{s=0;n=r}while(0);do if(o<<24>>24==42){p=n+1|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[l+(o<<2)>>2]=10;f=1;n=n+3|0;o=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(f){m=-1;break a}if(!M){x=s;n=p;f=0;K=0;break}f=(c[g>>2]|0)+(4-1)&~(4-1);o=c[f>>2]|0;c[g>>2]=f+4;f=0;n=p}if((o|0)<0){x=s|8192;K=0-o|0}else{x=s;K=o}}else{p=(o<<24>>24)+-48|0;if(p>>>0<10){o=0;do{o=(o*10|0)+p|0;n=n+1|0;p=(a[n>>0]|0)+-48|0}while(p>>>0<10);if((o|0)<0){m=-1;break a}else{x=s;K=o}}else{x=s;K=0}}while(0);e:do if((a[n>>0]|0)==46){p=n+1|0;o=a[p>>0]|0;if(o<<24>>24!=42){r=(o<<24>>24)+-48|0;if(r>>>0<10){n=p;o=0}else{n=p;r=0;break}while(1){o=(o*10|0)+r|0;n=n+1|0;r=(a[n>>0]|0)+-48|0;if(r>>>0>=10){r=o;break e}}}p=n+2|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+3>>0]|0)==36:0){c[l+(o<<2)>>2]=10;n=n+4|0;r=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(f){m=-1;break a}if(M){n=(c[g>>2]|0)+(4-1)&~(4-1);r=c[n>>2]|0;c[g>>2]=n+4;n=p}else{n=p;r=0}}else r=-1;while(0);t=0;while(1){o=(a[n>>0]|0)+-65|0;if(o>>>0>57){m=-1;break a}p=n+1|0;o=a[15953+(t*58|0)+o>>0]|0;s=o&255;if((s+-1|0)>>>0<8){n=p;t=s}else{J=p;break}}if(!(o<<24>>24)){m=-1;break}p=(u|0)>-1;do if(o<<24>>24==19)if(p){m=-1;break a}else L=52;else{if(p){c[l+(u<<2)>>2]=s;H=j+(u<<3)|0;I=c[H+4>>2]|0;L=ba;c[L>>2]=c[H>>2];c[L+4>>2]=I;L=52;break}if(!M){m=0;break a}Rj(ba,s,g)}while(0);if((L|0)==52?(L=0,!M):0){w=J;n=y;continue}u=a[n>>0]|0;u=(t|0)!=0&(u&15|0)==3?u&-33:u;p=x&-65537;I=(x&8192|0)==0?x:p;f:do switch(u|0){case 110:switch(t|0){case 0:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 1:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 2:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}case 3:{b[c[ba>>2]>>1]=m;w=J;n=y;continue a}case 4:{a[c[ba>>2]>>0]=m;w=J;n=y;continue a}case 6:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 7:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}default:{w=J;n=y;continue a}}case 112:{t=I|8;r=r>>>0>8?r:8;u=120;L=64;break}case 88:case 120:{t=I;L=64;break}case 111:{p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;if((o|0)==0&(p|0)==0)n=N;else{n=N;do{n=n+-1|0;a[n>>0]=o&7|48;o=hk(o|0,p|0,3)|0;p=D}while(!((o|0)==0&(p|0)==0))}if(!(I&8)){o=I;t=0;s=16433;L=77}else{t=U-n+1|0;o=I;r=(r|0)<(t|0)?t:r;t=0;s=16433;L=77}break}case 105:case 100:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)<0){n=dk(0,0,n|0,o|0)|0;o=D;p=ba;c[p>>2]=n;c[p+4>>2]=o;p=1;s=16433;L=76;break f}if(!(I&2048)){s=I&1;p=s;s=(s|0)==0?16433:16435;L=76}else{p=1;s=16434;L=76}break}case 117:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;p=0;s=16433;L=76;break}case 99:{a[V>>0]=c[ba>>2];w=V;o=1;t=0;u=16433;n=N;break}case 109:{n=ri(c[(qi()|0)>>2]|0)|0;L=82;break}case 115:{n=c[ba>>2]|0;n=(n|0)!=0?n:16443;L=82;break}case 67:{c[ga>>2]=c[ba>>2];c[W>>2]=0;c[ba>>2]=ga;r=-1;L=86;break}case 83:{if(!r){Tj(e,32,K,0,I);n=0;L=98}else L=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{q=+h[ba>>3];c[ea>>2]=0;h[k>>3]=q;if((c[k+4>>2]|0)>=0)if(!(I&2048)){H=I&1;G=H;H=(H|0)==0?16451:16456}else{G=1;H=16453}else{q=-q;G=1;H=16450}h[k>>3]=q;F=c[k+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Ci(q,ea)*2.0;o=v!=0.0;if(o)c[ea>>2]=(c[ea>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?H:H+9|0;x=G|2;n=12-r|0;do if(!(r>>>0>11|(n|0)==0)){q=8.0;do{n=n+-1|0;q=q*16.0}while((n|0)!=0);if((a[y>>0]|0)==45){q=-(q+(-v-q));break}else{q=v+q-q;break}}else q=v;while(0);o=c[ea>>2]|0;n=(o|0)<0?0-o|0:o;n=Sj(n,((n|0)<0)<<31>>31,X)|0;if((n|0)==(X|0)){a[Y>>0]=48;n=Y}a[n+-1>>0]=(o>>31&2)+43;t=n+-2|0;a[t>>0]=u+15;s=(r|0)<1;p=(I&8|0)==0;o=da;while(1){H=~~q;n=o+1|0;a[o>>0]=d[16417+H>>0]|w;q=(q-+(H|0))*16.0;do if((n-Z|0)==1){if(p&(s&q==0.0))break;a[n>>0]=46;n=o+2|0}while(0);if(!(q!=0.0))break;else o=n}r=(r|0)!=0&(O+n|0)<(r|0)?P+r-t|0:aa-t+n|0;p=r+x|0;Tj(e,32,K,p,I);if(!(c[e>>2]&32))hj(y,x,e)|0;Tj(e,48,K,p,I^65536);n=n-Z|0;if(!(c[e>>2]&32))hj(da,n,e)|0;o=_-t|0;Tj(e,48,r-(n+o)|0,0,0);if(!(c[e>>2]&32))hj(t,o,e)|0;Tj(e,32,K,p,I^8192);n=(p|0)<(K|0)?K:p;break}n=(r|0)<0?6:r;if(o){o=(c[ea>>2]|0)+-28|0;c[ea>>2]=o;q=v*268435456.0}else{q=v;o=c[ea>>2]|0}F=(o|0)<0?ca:Q;E=F;o=F;do{B=~~q>>>0;c[o>>2]=B;o=o+4|0;q=(q-+(B>>>0))*1.0e9}while(q!=0.0);p=o;o=c[ea>>2]|0;if((o|0)>0){s=F;while(1){t=(o|0)>29?29:o;r=p+-4|0;do if(r>>>0>>0)r=s;else{o=0;do{B=fk(c[r>>2]|0,0,t|0)|0;B=gk(B|0,D|0,o|0,0)|0;o=D;A=qk(B|0,o|0,1e9,0)|0;c[r>>2]=A;o=pk(B|0,o|0,1e9,0)|0;r=r+-4|0}while(r>>>0>=s>>>0);if(!o){r=s;break}r=s+-4|0;c[r>>2]=o}while(0);while(1){if(p>>>0<=r>>>0)break;o=p+-4|0;if(!(c[o>>2]|0))p=o;else break}o=(c[ea>>2]|0)-t|0;c[ea>>2]=o;if((o|0)>0)s=r;else break}}else r=F;if((o|0)<0){y=((n+25|0)/9|0)+1|0;z=(C|0)==102;w=r;while(1){x=0-o|0;x=(x|0)>9?9:x;do if(w>>>0

>>0){o=(1<>>x;r=0;t=w;do{B=c[t>>2]|0;c[t>>2]=(B>>>x)+r;r=$(B&o,s)|0;t=t+4|0}while(t>>>0

>>0);o=(c[w>>2]|0)==0?w+4|0:w;if(!r){r=o;break}c[p>>2]=r;r=o;p=p+4|0}else r=(c[w>>2]|0)==0?w+4|0:w;while(0);o=z?F:r;p=(p-o>>2|0)>(y|0)?o+(y<<2)|0:p;o=(c[ea>>2]|0)+x|0;c[ea>>2]=o;if((o|0)>=0){w=r;break}else w=r}}else w=r;do if(w>>>0

>>0){o=(E-w>>2)*9|0;s=c[w>>2]|0;if(s>>>0<10)break;else r=10;do{r=r*10|0;o=o+1|0}while(s>>>0>=r>>>0)}else o=0;while(0);A=(C|0)==103;B=(n|0)!=0;r=n-((C|0)!=102?o:0)+((B&A)<<31>>31)|0;if((r|0)<(((p-E>>2)*9|0)+-9|0)){t=r+9216|0;z=(t|0)/9|0;r=F+(z+-1023<<2)|0;t=((t|0)%9|0)+1|0;if((t|0)<9){s=10;do{s=s*10|0;t=t+1|0}while((t|0)!=9)}else s=10;x=c[r>>2]|0;y=(x>>>0)%(s>>>0)|0;if((y|0)==0?(F+(z+-1022<<2)|0)==(p|0):0)s=w;else L=163;do if((L|0)==163){L=0;v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;t=(s|0)/2|0;do if(y>>>0>>0)q=.5;else{if((y|0)==(t|0)?(F+(z+-1022<<2)|0)==(p|0):0){q=1.0;break}q=1.5}while(0);do if(G){if((a[H>>0]|0)!=45)break;v=-v;q=-q}while(0);t=x-y|0;c[r>>2]=t;if(!(v+q!=v)){s=w;break}C=t+s|0;c[r>>2]=C;if(C>>>0>999999999){o=w;while(1){s=r+-4|0;c[r>>2]=0;if(s>>>0>>0){o=o+-4|0;c[o>>2]=0}C=(c[s>>2]|0)+1|0;c[s>>2]=C;if(C>>>0>999999999)r=s;else{w=o;r=s;break}}}o=(E-w>>2)*9|0;t=c[w>>2]|0;if(t>>>0<10){s=w;break}else s=10;do{s=s*10|0;o=o+1|0}while(t>>>0>=s>>>0);s=w}while(0);C=r+4|0;w=s;p=p>>>0>C>>>0?C:p}y=0-o|0;while(1){if(p>>>0<=w>>>0){z=0;C=p;break}r=p+-4|0;if(!(c[r>>2]|0))p=r;else{z=1;C=p;break}}do if(A){n=(B&1^1)+n|0;if((n|0)>(o|0)&(o|0)>-5){u=u+-1|0;n=n+-1-o|0}else{u=u+-2|0;n=n+-1|0}p=I&8;if(p)break;do if(z){p=c[C+-4>>2]|0;if(!p){r=9;break}if(!((p>>>0)%10|0)){s=10;r=0}else{r=0;break}do{s=s*10|0;r=r+1|0}while(((p>>>0)%(s>>>0)|0|0)==0)}else r=9;while(0);p=((C-E>>2)*9|0)+-9|0;if((u|32|0)==102){p=p-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}else{p=p+o-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}}else p=I&8;while(0);x=n|p;s=(x|0)!=0&1;t=(u|32|0)==102;if(t){o=(o|0)>0?o:0;u=0}else{r=(o|0)<0?y:o;r=Sj(r,((r|0)<0)<<31>>31,X)|0;if((_-r|0)<2)do{r=r+-1|0;a[r>>0]=48}while((_-r|0)<2);a[r+-1>>0]=(o>>31&2)+43;E=r+-2|0;a[E>>0]=u;o=_-E|0;u=E}y=G+1+n+s+o|0;Tj(e,32,K,y,I);if(!(c[e>>2]&32))hj(H,G,e)|0;Tj(e,48,K,y,I^65536);do if(t){r=w>>>0>F>>>0?F:w;o=r;do{p=Sj(c[o>>2]|0,0,R)|0;do if((o|0)==(r|0)){if((p|0)!=(R|0))break;a[T>>0]=48;p=T}else{if(p>>>0<=da>>>0)break;do{p=p+-1|0;a[p>>0]=48}while(p>>>0>da>>>0)}while(0);if(!(c[e>>2]&32))hj(p,S-p|0,e)|0;o=o+4|0}while(o>>>0<=F>>>0);do if(x){if(c[e>>2]&32)break;hj(16485,1,e)|0}while(0);if((n|0)>0&o>>>0>>0){p=o;while(1){o=Sj(c[p>>2]|0,0,R)|0;if(o>>>0>da>>>0)do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0);if(!(c[e>>2]&32))hj(o,(n|0)>9?9:n,e)|0;p=p+4|0;o=n+-9|0;if(!((n|0)>9&p>>>0>>0)){n=o;break}else n=o}}Tj(e,48,n+9|0,9,0)}else{t=z?C:w+4|0;if((n|0)>-1){s=(p|0)==0;r=w;do{o=Sj(c[r>>2]|0,0,R)|0;if((o|0)==(R|0)){a[T>>0]=48;o=T}do if((r|0)==(w|0)){p=o+1|0;if(!(c[e>>2]&32))hj(o,1,e)|0;if(s&(n|0)<1){o=p;break}if(c[e>>2]&32){o=p;break}hj(16485,1,e)|0;o=p}else{if(o>>>0<=da>>>0)break;do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0)}while(0);p=S-o|0;if(!(c[e>>2]&32))hj(o,(n|0)>(p|0)?p:n,e)|0;n=n-p|0;r=r+4|0}while(r>>>0>>0&(n|0)>-1)}Tj(e,48,n+18|0,18,0);if(c[e>>2]&32)break;hj(u,_-u|0,e)|0}while(0);Tj(e,32,K,y,I^8192);n=(y|0)<(K|0)?K:y}else{t=(u&32|0)!=0;s=q!=q|0.0!=0.0;o=s?0:G;r=o+3|0;Tj(e,32,K,r,p);n=c[e>>2]|0;if(!(n&32)){hj(H,o,e)|0;n=c[e>>2]|0}if(!(n&32))hj(s?(t?16477:16481):t?16469:16473,3,e)|0;Tj(e,32,K,r,I^8192);n=(r|0)<(K|0)?K:r}while(0);w=J;continue a}default:{p=I;o=r;t=0;u=16433;n=N}}while(0);g:do if((L|0)==64){p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;s=u&32;if(!((o|0)==0&(p|0)==0)){n=N;do{n=n+-1|0;a[n>>0]=d[16417+(o&15)>>0]|s;o=hk(o|0,p|0,4)|0;p=D}while(!((o|0)==0&(p|0)==0));L=ba;if((t&8|0)==0|(c[L>>2]|0)==0&(c[L+4>>2]|0)==0){o=t;t=0;s=16433;L=77}else{o=t;t=2;s=16433+(u>>4)|0;L=77}}else{n=N;o=t;t=0;s=16433;L=77}}else if((L|0)==76){n=Sj(n,o,N)|0;o=I;t=p;L=77}else if((L|0)==82){L=0;I=sj(n,0,r)|0;H=(I|0)==0;w=n;o=H?r:I-n|0;t=0;u=16433;n=H?n+r|0:I}else if((L|0)==86){L=0;o=0;n=0;s=c[ba>>2]|0;while(1){p=c[s>>2]|0;if(!p)break;n=Ii(fa,p)|0;if((n|0)<0|n>>>0>(r-o|0)>>>0)break;o=n+o|0;if(r>>>0>o>>>0)s=s+4|0;else break}if((n|0)<0){m=-1;break a}Tj(e,32,K,o,I);if(!o){n=0;L=98}else{p=0;r=c[ba>>2]|0;while(1){n=c[r>>2]|0;if(!n){n=o;L=98;break g}n=Ii(fa,n)|0;p=n+p|0;if((p|0)>(o|0)){n=o;L=98;break g}if(!(c[e>>2]&32))hj(fa,n,e)|0;if(p>>>0>=o>>>0){n=o;L=98;break}else r=r+4|0}}}while(0);if((L|0)==98){L=0;Tj(e,32,K,n,I^8192);w=J;n=(K|0)>(n|0)?K:n;continue}if((L|0)==77){L=0;p=(r|0)>-1?o&-65537:o;o=ba;o=(c[o>>2]|0)!=0|(c[o+4>>2]|0)!=0;if((r|0)!=0|o){o=(o&1^1)+(U-n)|0;w=n;o=(r|0)>(o|0)?r:o;u=s;n=N}else{w=N;o=0;u=s;n=N}}s=n-w|0;o=(o|0)<(s|0)?s:o;r=t+o|0;n=(K|0)<(r|0)?r:K;Tj(e,32,n,r,p);if(!(c[e>>2]&32))hj(u,t,e)|0;Tj(e,48,n,r,p^65536);Tj(e,48,o,s,0);if(!(c[e>>2]&32))hj(w,s,e)|0;Tj(e,32,n,r,p^8192);w=J}h:do if((L|0)==245)if(!e)if(f){m=1;while(1){f=c[l+(m<<2)>>2]|0;if(!f)break;Rj(j+(m<<3)|0,f,g);m=m+1|0;if((m|0)>=10){m=1;break h}}if((m|0)<10)while(1){if(c[l+(m<<2)>>2]|0){m=-1;break h}m=m+1|0;if((m|0)>=10){m=1;break}}else m=1}else m=0;while(0);i=ha;return m|0}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;return Si(a,b,c)|0}function Nj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((cc[d&15](k,j)|0)>-1?(cc[d&15](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((cc[d&15](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1;while(0);Pj(b,o,e);i=p;return}function Oj(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(cc[d&15](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((cc[d&15](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((cc[d&15](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((cc[d&15](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){Pj(b,p,e);Nj(a,b,d,g,h)}i=r;return}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;ik(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;ik(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}while(0);i=h;return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;ik(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function Sj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295)while(1){e=qk(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e|48;e=pk(b|0,c|0,10,0)|0;if(c>>>0>9|(c|0)==9&b>>>0>4294967295){b=e;c=D}else{b=e;break}}if(b)while(1){d=d+-1|0;a[d>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return d|0}function Tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+256|0;h=j;do if((d|0)>(e|0)&(f&73728|0)==0){f=d-e|0;ek(h|0,b|0,(f>>>0>256?256:f)|0)|0;b=c[a>>2]|0;g=(b&32|0)==0;if(f>>>0>255){e=d-e|0;do{if(g){hj(h,256,a)|0;b=c[a>>2]|0}f=f+-256|0;g=(b&32|0)==0}while(f>>>0>255);if(g)f=e&255;else break}else if(!g)break;hj(h,f,a)|0}while(0);i=j;return}function Uj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[756]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[760]|0)>>>0)Da();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Da()}else c[756]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[758]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[760]|0)>>>0)Da();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[758]|0;break}else Da()}else{c[756]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[761]|0;d=k>>>3;b=d<<1;e=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(b>>>0<(c[760]|0)>>>0)Da();else{l=a;m=b}}else{c[756]=a|d;l=3064+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[758]=h;c[761]=i;M=j;return M|0}a=c[757]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[3328+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[760]|0;if(e>>>0>>0)Da();i=e+o|0;if(e>>>0>=i>>>0)Da();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(e|0))Da();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Da()}while(0);do if(h){b=c[e+28>>2]|0;a=3328+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[760]|0;if(n>>>0>>0)Da();c[n+24>>2]=h;b=c[e+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[758]|0;if(b){g=c[761]|0;d=b>>>3;b=d<<1;f=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{p=b;q=a}}else{c[756]=a|d;p=3064+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[758]=j;c[761]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[757]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[3328+(k<<2)>>2]|0;a:do if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v;if(!j){v=86;break}else{h=d;i=i<<1}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[3328+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[758]|0)-m|0)>>>0:0){f=c[760]|0;if(j>>>0>>0)Da();h=j+m|0;if(j>>>0>=h>>>0)Da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Da();b=e+12|0;if((c[b>>2]|0)!=(j|0))Da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Da()}while(0);do if(g){b=c[j+28>>2]|0;a=3328+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[760]|0;if(o>>>0>>0)Da();c[o+24>>2]=g;b=c[j+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[o+16>>2]=b;c[b+24>>2]=o;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}while(0);b:do if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{s=b;t=a}}else{c[756]=d|b;s=3064+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=3328+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b;while(0);b=y+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Da()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);d=c[758]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[761]|0;if(b>>>0>15){c[761]=a+q;c[758]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[758]=0;c[761]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[759]|0;if(a>>>0>q>>>0){L=a-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(c[874]|0)){a=$a(30)|0;if(!(a+-1&a)){c[876]=a;c[875]=a;c[877]=-1;c[878]=-1;c[879]=0;c[867]=0;c[874]=(Db(0)|0)&-16^1431655768;break}else Da()}while(0);j=q+48|0;i=c[876]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[866]|0;if((a|0)!=0?(t=c[864]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(c[867]&4)){a=c[762]|0;e:do if(a){f=3472;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[759]|0)&i;if(d>>>0<2147483647){f=Ua(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){g=Ua(0)|0;if((g|0)!=(-1|0)){a=g;d=c[875]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[864]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[866]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=Ua(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){g=0-d|0;do if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[876]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((Ua(u|0)|0)==(-1|0)){Ua(g|0)|0;break f}else{d=u+d|0;break}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}while(0);c[867]=c[867]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ua(l|0)|0,x=Ua(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[864]|0)+p|0;c[864]=a;if(a>>>0>(c[865]|0)>>>0)c[865]=a;h=c[762]|0;g:do if(h){g=3472;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[759]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[762]=h+L;c[759]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[763]=c[878];break}a=c[760]|0;if(w>>>0>>0){c[760]=w;a=w}d=w+p|0;g=3472;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=3472;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do if((b|0)!=(h|0)){if((b|0)==(c[761]|0)){M=(c[758]|0)+l|0;c[758]=M;c[761]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Da();a=f+12|0;if((c[a>>2]|0)!=(b|0))Da();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Da()}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=3328+(a<<2)|0;do if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[760]|0)>>>0)Da();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[757]=c[757]&~(1<>>0>>0)Da();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Da();else{c[J+16>>2]=a;c[a+24>>2]=J;break}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[760]|0)>>>0)Da();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=3064+(g<<1<<2)|0;do if((e|0)!=(d|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)==(b|0))break;Da()}while(0);if((f|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Da()}while(0);c[e+12>>2]=f;c[F>>2]=e}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0>=(c[760]|0)>>>0){K=b;L=a;break}Da()}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=3328+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=c[b>>2]|0;L=c[760]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Da()}else{M=(c[759]|0)+l|0;c[759]=M;c[762]=o;c[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else d=3472;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[762]=w+d;c[759]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[763]=c[878];d=a+4|0;c[d>>2]=27;c[b>>2]=c[868];c[b+4>>2]=c[869];c[b+8>>2]=c[870];c[b+12>>2]=c[871];c[868]=w;c[869]=p;c[871]=0;c[870]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{G=b;H=a}}else{c[756]=d|b;G=3064+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=3328+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[757]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b;while(0);b=I+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Da()}}else{M=c[760]|0;if((M|0)==0|w>>>0>>0)c[760]=w;c[868]=w;c[869]=p;c[871]=0;c[765]=c[874];c[764]=-1;b=0;do{M=b<<1;L=3064+(M<<2)|0;c[3064+(M+3<<2)>>2]=L;c[3064+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[762]=w+M;c[759]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[763]=c[878]}while(0);b=c[759]|0;if(b>>>0>q>>>0){L=b-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(qi()|0)>>2]=12;M=0;return M|0}function Vj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[760]|0;if(b>>>0>>0)Da();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Da();o=d&-8;q=a+(o+-8)|0;do if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Da();if((l|0)==(c[761]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[758]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)!=(l|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Da()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Da();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(l|0))Da();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Da()}while(0);if(h){b=c[a+(j+28)>>2]|0;d=3328+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Da();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Da();if(!(d&2)){if((q|0)==(c[762]|0)){t=(c[759]|0)+g|0;c[759]=t;c[762]=u;c[u+4>>2]=t|1;if((u|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){t=(c[758]|0)+g|0;c[758]=t;c[761]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();e=d+12|0;if((c[e>>2]|0)!=(q|0))Da();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Da()}while(0);if(h){b=c[a+(o+20)>>2]|0;d=3328+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[760]|0)>>>0)Da();if((c[e+12>>2]|0)!=(q|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0<(c[760]|0)>>>0)Da();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Da()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[761]|0)){c[758]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=3064+(d<<2)|0;e=c[756]|0;b=1<>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();else{r=b;s=d}}else{c[756]=e|b;r=3064+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=3328+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[757]|0;e=1<>2]|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[760]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Da()}else{c[757]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[764]|0)+-1|0;c[764]=u;if(!u)b=3480;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[764]=-1;return}function Wj(a,b){a=a|0;b=b|0;var d=0;if(a){d=$(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Uj(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;ek(b|0,0,d|0)|0;return b|0}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=Uj(b)|0;return a|0}if(b>>>0>4294967231){c[(qi()|0)>>2]=12;a=0;return a|0}d=Yj(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=Uj(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ik(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Vj(a);a=d;return a|0}function Yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[760]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Da();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Da();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[876]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;Zj(a+b|0,d);return a|0}if((l|0)==(c[762]|0)){d=(c[759]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[762]=a+b;c[759]=n;return a|0}if((l|0)==(c[761]|0)){e=(c[758]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[758]=d;c[761]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();d=f+12|0;if((c[d>>2]|0)!=(l|0))Da();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Da()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=3328+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(l|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Da()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;Zj(a+b|0,n);return a|0}return 0}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[760]|0;if(n>>>0>>0)Da();if((n|0)==(c[761]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[758]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(n|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Da()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(n|0))Da();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Da()}while(0);if(i){d=c[a+(28-k)>>2]|0;e=3328+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[760]|0;if(l>>>0>>0)Da();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do if(e)if(e>>>0>>0)Da();else{c[l+16>>2]=e;c[e+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[760]|0;if(q>>>0>>0)Da();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[762]|0)){s=(c[759]|0)+h|0;c[759]=s;c[762]=t;c[t+4>>2]=s|1;if((t|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){s=(c[758]|0)+h|0;c[758]=s;c[761]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(q|0))Da();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Da()}while(0);if(i){d=c[a+(b+28)>>2]|0;e=3328+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(q|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Da()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[761]|0)){c[758]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=3064+(e<<2)|0;f=c[756]|0;d=1<>2]|0;if(e>>>0<(c[760]|0)>>>0)Da();else{r=d;s=e}}else{c[756]=f|d;r=3064+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=3328+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[757]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[760]|0)>>>0)Da();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[760]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Da();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return} +function Ee(b,e,f,j,k,l,m,n,o,p,q,r){b=b|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=+q;r=r|0;var s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;T=i;i=i+240|0;x=T+224|0;w=T+216|0;C=T+208|0;B=T+200|0;s=T+136|0;N=T+72|0;P=T;Q=T+232|0;R=T+228|0;h[s>>3]=100.0;h[s+8>>3]=100.0;h[s+16>>3]=110.0;h[s+24>>3]=100.0;h[s+32>>3]=110.0;h[s+40>>3]=110.0;h[s+48>>3]=100.0;h[s+56>>3]=110.0;h[N>>3]=+h[p>>3];h[N+8>>3]=+h[p+8>>3];h[N+16>>3]=+h[p+16>>3];h[N+24>>3]=+h[p+24>>3];h[N+32>>3]=+h[p+32>>3];h[N+40>>3]=+h[p+40>>3];h[N+48>>3]=+h[p+48>>3];h[N+56>>3]=+h[p+56>>3];He(s,N,P);A=+h[N>>3];V=+h[N+16>>3];y=A-V;J=+h[N+8>>3];U=+h[N+24>>3];u=J-U;s=~~(y*y+u*u);u=+h[N+32>>3];y=+h[N+48>>3];X=u-y;v=+h[N+40>>3];z=+h[N+56>>3];W=v-z;N=~~(X*X+W*W);u=V-u;v=U-v;t=~~(u*u+v*v);A=y-A;J=z-J;O=~~(A*A+J*J);s=~~(+(((N|0)>(s|0)?N:s)|0)*q*q);t=~~(+(((O|0)>(t|0)?O:t)|0)*q*q);if(!b){p=f;while(1)if((p|0)<(j|0)&($(p,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s,s)|0)<(t|0))s=s<<1;else break}else{p=f;while(1)if((p|0)<(j|0)&($(p<<2,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s<<2,s)|0)<(t|0))s=s<<1;else break}O=(p|0)>(j|0)?j:p;M=(s|0)>(j|0)?j:s;L=(O|0)/(f|0)|0;K=(M|0)/(f|0)|0;u=(1.0-q)*.5*10.0;J=q*10.0;N=$(f,f)|0;a:do if(!e){I=N*3|0;p=Wj(I,4)|0;if(!p){Me(3,5472,B);rb(1)}do switch(n|0){case 0:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 1:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t+2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 2:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 3:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 4:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|3)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=d[k+(($(t,l)|0)+s)>>0]|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 6:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|3)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|1)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Z=$(t,l)|0;Y=(s&65534)+Z<<1;V=+((d[k+Y>>0]|0)+-128|0);X=+((d[k+(Y+2)>>0]|0)+-128|0);W=+((d[k+(Z+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;Z=~~(V*516.4110107421875+W)>>8;Y=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;t=~~(W+X*408.5830078125)>>8;Z=(Z|0)>0?Z:0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=((Z|0)<255?Z:255)+(c[s>>2]|0);Y=(Y|0)>0?Y:0;s=p+(b+1<<2)|0;c[s>>2]=((Y|0)<255?Y:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=p+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=$(t,l)|0;Y=(s&65534)+t<<1;V=+((d[k+(Y|1)>>0]|0)+-128|0);X=+((d[k+(Y+3)>>0]|0)+-128|0);W=+((d[k+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(W+V*516.4110107421875)>>8;t=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;Y=~~(W+X*408.5830078125)>>8;s=(s|0)>0?s:0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=p+(Z+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);Y=(Y|0)>0?Y:0;Z=p+(Z+2<<2)|0;c[Z>>2]=((Y|0)<255?Y:255)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<3&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&28|2)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<2&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&24|4)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(c[b>>2]|0)+((d[k+(Y|1)>>0]|0)&240|8);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<4&240|8)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&240|8)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}default:{Me(3,4615,C);S=278;break a}}while(0);t=$(K,L)|0;if(N){s=0;do{a[r+s>>0]=((c[p+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}while((s|0)<(I|0))}Vj(p);p=0}else{p=Wj(N,4)|0;if(!p){Me(3,5472,w);rb(1)}b:do if(n>>>0<2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=(($(t,l)|0)+s|0)*3|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y+1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y+2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}}else{if((n&-2|0)==2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y|2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}if((n&-3|0)==4){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|2)>>0]|0)+(d[k+(Y|1)>>0]|0)+(d[k+(Y|3)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}switch(n|0){case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<3&248|4)+(I&248|4)+(I<<5&224|Y>>>3&28|2)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<2&248|4)+(I&248|4)+(I<<5&224|Y>>>3&24|4)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((I<<4&240|8)+(I&240|8)+((d[k+(Y|1)>>0]|0)&240|8)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}default:{Me(3,4615,x);S=278;break a}}}while(0);s=$(K,L)|0;if(N){t=0;do{a[r+t>>0]=((c[p+(t<<2)>>2]|0)>>>0)/(s>>>0)|0;t=t+1|0}while((t|0)<(N|0))}Vj(p);p=0}while(0);if((S|0)==278){Vj(p);p=-1}i=T;return p|0}function Fe(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;p=v+24|0;o=v+8|0;u=v;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-1}else{c[o>>2]=0;t=e+-1|0;c[o+4>>2]=$(t,e)|0;r=$(e,e)|0;c[o+8>>2]=r+-1;c[o+12>>2]=t;n=a[b+(c[o>>2]|0)>>0]|0;m=(n&255)>0?n:0;n=(n&255)<255?n:-1;s=a[b+(c[o+4>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+8>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+12>>2]|0)>>0]|0;m=((s&255)>(m&255)?s:m)&255;n=((s&255)<(n&255)?s:n)&255;if((m-n|0)<30){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-2;break}q=(m+n|0)>>>1;a[p>>0]=(d[b+(c[o>>2]|0)>>0]|0)>>>0>>0&1;a[p+1>>0]=(d[b+(c[o+4>>2]|0)>>0]|0)>>>0>>0&1;a[p+2>>0]=(d[b+(c[o+8>>2]|0)>>0]|0)>>>0>>0&1;a[p+3>>0]=(d[b+(c[o+12>>2]|0)>>0]|0)>>>0>>0&1;n=0;while(1){m=n+1|0;if(((a[p+n>>0]|0)==1?(a[p+((m|0)%4|0)>>0]|0)==1:0)?(a[p+((n+2|0)%4|0)>>0]|0)==0:0){m=n;n=10;break}if((m|0)<4)n=m;else{n=12;break}}if((n|0)==10)c[g>>2]=m;else if((n|0)==12?(m|0)==4:0){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-3;break}if(!r)s=255;else{m=255;n=0;do{s=b+n|0;p=d[s>>0]|0;o=p-q|0;o=(o|0)<0?0-o|0:o;m=(o|0)<(m|0)?o:m;a[s>>0]=p>>>0>>0&1;n=n+1|0}while((n|0)<(r|0));s=m}switch(c[g>>2]|0){case 0:{if((e|0)>0){r=(e|0)==0;n=0;m=0;g=0;do{p=(g|0)==(t|0);q=$(g,e)|0;if(!r){o=0;do{if((o|g|0)!=0?!(p&((o|0)==0|(o|0)==(t|0))):0){n=fk(n|0,m|0,1)|0;n=(a[b+(o+q)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)!=(e|0))}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 1:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=0;do{p=(g|0)==0;q=(g|0)==(t|0);if(r){o=t;while(1){w=(o|0)==(t|0);if(!(p&w)?!(q&(w|(o|0)==0)):0){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 2:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){q=(g|0)==(t|0)|(g|0)==0;p=$(g,e)|0;if(r){o=t;while(1){if(!(q&(o|0)==(t|0)|(o|g|0)==0)){n=fk(n|0,m|0,1)|0;n=(a[b+(o+p)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}case 3:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){p=(g|0)==(t|0);q=(g|0)==0;if(r){o=0;do{if(!(p&(o|0)==0|(o|g|0)==0|q&(o|0)==(t|0))){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)<(e|0))}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}default:{n=0;m=0}}h[j>>3]=(s|0)>30?1.0:+(s|0)/30.0;switch(k|0){case 259:{w=a[4551+n>>0]|0;k=w<<24>>24;l=u;c[l>>2]=k;c[l+4>>2]=((k|0)<0)<<31>>31;if(w<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 515:{m=a[4423+n>>0]|0;k=m<<24>>24;w=u;c[w>>2]=k;c[w+4>>2]=((k|0)<0)<<31>>31;if(l)c[l>>2]=d[4487+n>>0];if(m<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 772:case 1028:{m=Ie(k,n,m,0,u)|0;if((m|0)<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}if((l|0)!=0&(m|0)>0)c[l>>2]=m;break}default:{w=u;c[w>>2]=n;c[w+4>>2]=m}}c[f>>2]=c[u>>2];m=0}while(0);i=v;return m|0}function Ge(a,b,e,f,g,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;l=C+8|0;n=C;a:do if(!a){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;b=-1}else switch(b|0){case 0:{o=$(f,f)|0;z=o*3|0;A=Uj(o*12|0)|0;if(!A){Me(3,5472,n);rb(1)}if(!o)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!o)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/(+(f|0)*1.7320508)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+12|0;x=a+16|0;if((v|0)>0){u=c[a+8>>2]|0;s=(o|0)==0;n=-1;t=0;m=0.0;l=-1;b=-1;do{b:while(1){n=n+1|0;switch(c[u+(n<<2)>>2]|0){case 0:break;case 2:break b;default:{B=17;break b}}}if((B|0)==17){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(s)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}t=t+1|0}while((t|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}case 1:{z=$(f,f)|0;A=Uj(z<<2)|0;if(!A){Me(3,5472,l);rb(1)}if(!z)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!z)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/+(f|0)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+20|0;x=a+24|0;if((v|0)>0){s=c[a+8>>2]|0;t=(z|0)==0;n=-1;u=0;m=0.0;l=-1;b=-1;do{c:while(1){n=n+1|0;switch(c[s+(n<<2)>>2]|0){case 0:break;case 2:break c;default:{B=37;break c}}}if((B|0)==37){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(t)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}u=u+1|0}while((u|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}default:{b=-1;break a}}while(0);i=C;return b|0}function He(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Re(8,8)|0;f=Re(8,1)|0;g=Re(8,1)|0;i=c[e>>2]|0;j=c[f>>2]|0;k=0;do{p=a+(k<<4)|0;l=k<<4;h[i+(l<<3)>>3]=+h[p>>3];o=a+(k<<4)+8|0;h[i+((l|1)<<3)>>3]=+h[o>>3];h[i+((l|2)<<3)>>3]=1.0;h[i+((l|3)<<3)>>3]=0.0;h[i+((l|4)<<3)>>3]=0.0;h[i+((l|5)<<3)>>3]=0.0;n=b+(k<<4)|0;h[i+((l|6)<<3)>>3]=-(+h[p>>3]*+h[n>>3]);h[i+((l|7)<<3)>>3]=-(+h[o>>3]*+h[n>>3]);h[i+((l|8)<<3)>>3]=0.0;h[i+((l|9)<<3)>>3]=0.0;h[i+((l|10)<<3)>>3]=0.0;h[i+((l|11)<<3)>>3]=+h[p>>3];h[i+((l|12)<<3)>>3]=+h[o>>3];h[i+((l|13)<<3)>>3]=1.0;m=b+(k<<4)+8|0;h[i+((l|14)<<3)>>3]=-(+h[p>>3]*+h[m>>3]);h[i+((l|15)<<3)>>3]=-(+h[o>>3]*+h[m>>3]);l=k<<1;h[j+(l<<3)>>3]=+h[n>>3];h[j+((l|1)<<3)>>3]=+h[m>>3];k=k+1|0}while((k|0)!=4);_e(e)|0;Xe(g,e,f)|0;p=c[g>>2]|0;h[d>>3]=+h[p>>3];h[d+8>>3]=+h[p+8>>3];h[d+16>>3]=+h[p+16>>3];p=c[g>>2]|0;h[d+24>>3]=+h[p+24>>3];h[d+32>>3]=+h[p+32>>3];h[d+40>>3]=+h[p+40>>3];p=c[g>>2]|0;h[d+48>>3]=+h[p+48>>3];h[d+56>>3]=+h[p+56>>3];h[d+64>>3]=1.0;We(e)|0;We(f)|0;We(g)|0;return}function Ie(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+2320|0;k=I+2304|0;y=I+864|0;u=I+784|0;H=I+704|0;w=I+624|0;v=I+548|0;G=I+40|0;E=I;switch(b|0){case 772:{g=9;j=1;l=3;break}case 1028:{g=5;j=2;l=3;break}case 2830:{A=900;s=1472;C=64;F=120;z=127;B=g;j=9;l=6;break}default:f=-1}if((l|0)==3){b=0;while(1){a[k+b>>0]=e&1;e=hk(e|0,f|0,1)|0;b=b+1|0;if((b|0)==13)break;else f=D}A=840;s=1408;C=g;F=13;z=15;B=k;l=6}do if((l|0)==6){r=j<<1;k=1;f=0;while(1){g=v+(k<<2)|0;c[g>>2]=0;b=0;e=0;do{if(a[B+e>>0]|0){b=b^c[A+((($(e,k)|0)%(z|0)|0)<<2)>>2];c[g>>2]=b}e=e+1|0}while((e|0)<(F|0));f=(b|0)==0?f:1;c[g>>2]=c[s+(b<<2)>>2];if((k|0)<(r|0))k=k+1|0;else break}x=(f|0)!=0;if(x){c[u>>2]=0;f=c[v+4>>2]|0;c[u+4>>2]=f;c[y>>2]=0;c[y+72>>2]=1;if((r|0)>1){b=1;do{c[y+(b<<2)>>2]=-1;c[y+72+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(r|0))}c[H>>2]=0;c[H+4>>2]=0;c[w>>2]=-1;c[w+4>>2]=0;p=0;q=0;while(1){g=q;q=q+1|0;o=u+(q<<2)|0;if((f|0)==-1){k=g+2|0;c[H+(k<<2)>>2]=p;if((p|0)<0)n=p;else{f=0;while(1){o=y+(q*72|0)+(f<<2)|0;n=c[o>>2]|0;c[y+(k*72|0)+(f<<2)>>2]=n;c[o>>2]=c[s+(n<<2)>>2];if((f|0)<(p|0))f=f+1|0;else{n=p;break}}}}else{b=g;while(1){f=(b|0)>0;if(f&(c[u+(b<<2)>>2]|0)==-1)b=b+-1|0;else break}if(f){e=b;do{f=e;e=e+-1|0;if((c[u+(e<<2)>>2]|0)!=-1)b=(c[w+(b<<2)>>2]|0)<(c[w+(e<<2)>>2]|0)?e:b}while((f|0)>1)}e=H+(b<<2)|0;m=q-b|0;n=m+(c[e>>2]|0)|0;k=g+2|0;n=(p|0)>(n|0)?p:n;c[H+(k<<2)>>2]=n;f=0;do{c[y+(k*72|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(r|0));f=c[e>>2]|0;e=u+(b<<2)|0;if((f|0)>=0){l=0;while(1){g=c[y+(b*72|0)+(l<<2)>>2]|0;if((g|0)!=-1)c[y+(k*72|0)+(m+l<<2)>>2]=c[A+(((g+z+(c[o>>2]|0)-(c[e>>2]|0)|0)%(z|0)|0)<<2)>>2];if((l|0)<(f|0))l=l+1|0;else break}}if((p|0)>=0){f=0;while(1){o=y+(q*72|0)+(f<<2)|0;m=c[o>>2]|0;l=y+(k*72|0)+(f<<2)|0;c[l>>2]=c[l>>2]^m;c[o>>2]=c[s+(m<<2)>>2];if((f|0)<(p|0))f=f+1|0;else break}}}c[w+(k<<2)>>2]=q-n;if((q|0)>=(r|0))break;f=c[v+(k<<2)>>2]|0;if((f|0)==-1)f=0;else f=c[A+(f<<2)>>2]|0;g=u+(k<<2)|0;c[g>>2]=f;if((n|0)>=1){e=1;while(1){b=c[v+(k-e<<2)>>2]|0;if((b|0)!=-1?(t=c[y+(k*72|0)+(e<<2)>>2]|0,(t|0)!=0):0){f=f^c[A+((((c[s+(t<<2)>>2]|0)+b|0)%(z|0)|0)<<2)>>2];c[g>>2]=f}if((e|0)<(n|0))e=e+1|0;else break}}f=c[s+(f<<2)>>2]|0;c[g>>2]=f;if((n|0)>(j|0))break;else p=n}if((n|0)>(j|0)){f=-1;break}if((n|0)>=0){f=0;while(1){w=y+(k*72|0)+(f<<2)|0;c[w>>2]=c[s+(c[w>>2]<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}if((n|0)>=1){f=1;while(1){c[E+(f<<2)>>2]=c[y+(k*72|0)+(f<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}l=(n|0)<1;f=0;m=1;do{if(l)b=1;else{j=1;b=1;while(1){e=E+(j<<2)|0;g=c[e>>2]|0;if((g|0)!=-1){y=(g+j|0)%(z|0)|0;c[e>>2]=y;b=c[A+(y<<2)>>2]^b}if((j|0)<(n|0))j=j+1|0;else break}}if(!b){c[G+(f<<2)>>2]=z-m;f=f+1|0}m=m+1|0}while((z|0)>=(m|0));if((f|0)!=(n|0)){f=-1;break}if((n|0)>0){f=0;do{E=B+(c[G+(f<<2)>>2]|0)|0;a[E>>0]=d[E>>0]^1;f=f+1|0}while((f|0)<(n|0))}}else k=0;b=h;c[b>>2]=0;c[b+4>>2]=0;b=1;e=0;g=0;j=0;f=F-C|0;while(1){G=ok(d[B+f>>0]|0,0,b|0,e|0)|0;g=gk(G|0,D|0,g|0,j|0)|0;j=D;G=h;c[G>>2]=g;c[G+4>>2]=j;b=fk(b|0,e|0,1)|0;f=f+1|0;if((f|0)>=(F|0))break;else e=D}if(x)f=c[H+(k<<2)>>2]|0;else f=0}while(0);i=I;return f|0}function Je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=i;i=i+32|0;z=A+24|0;g=A+16|0;d=A+8|0;do if(a){if(!b){Me(3,4674,d);d=-1;break}y=a+8|0;f=c[a+4>>2]|0;a:do if((f|0)>0){e=c[y>>2]|0;d=0;do{if(!(c[e+(d<<2)>>2]|0))break a;d=d+1|0}while((d|0)<(f|0))}else d=0;while(0);if((d|0)!=(f|0)){x=Aj(b)|0;if(!x){Me(3,4719,g);d=-1;break}r=a+28|0;s=d<<2;t=a+12|0;u=a+20|0;v=a+16|0;w=a+24|0;f=Gj(x,4742)|0;e=0;b:while(1){q=e+s|0;p=0;b=0;do{n=(p|0)==0;o=(p|0)==2;g=c[r>>2]|0;if((g|0)>0){m=0;do{if((g|0)>0){l=0;do{if(!f){e=17;break b}g=qj(f)|0;f=Gj(0,4742)|0;g=255-g|0;k=((($(c[r>>2]|0,m)|0)+l|0)*3|0)+p|0;c[(c[(c[t>>2]|0)+(q<<2)>>2]|0)+(k<<2)>>2]=g;k=($(c[r>>2]|0,m)|0)+l|0;j=c[(c[u>>2]|0)+(q<<2)>>2]|0;k=j+(k<<2)|0;if(!n){c[k>>2]=(c[k>>2]|0)+g;if(o){k=j+(($(c[r>>2]|0,m)|0)+l<<2)|0;c[k>>2]=(c[k>>2]|0)/3|0}}else c[k>>2]=g;b=g+b|0;l=l+1|0;g=c[r>>2]|0}while((l|0)<(g|0))}m=m+1|0}while((m|0)<(g|0))}p=p+1|0}while((p|0)<3);g=c[r>>2]|0;l=(b|0)/($(g*3|0,g)|0)|0;if(($(g*3|0,g)|0)>0){j=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=0;b=0;do{p=j+(k<<2)|0;g=(c[p>>2]|0)-l|0;c[p>>2]=g;b=($(g,g)|0)+b|0;k=k+1|0;g=c[r>>2]|0}while((k|0)<($(g*3|0,g)|0))}else b=0;B=+P(+(+(b|0)));h[(c[v>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;if(!($(g,g)|0))b=0;else{g=c[(c[u>>2]|0)+(q<<2)>>2]|0;j=0;b=0;do{o=g+(j<<2)|0;p=(c[o>>2]|0)-l|0;c[o>>2]=p;b=($(p,p)|0)+b|0;j=j+1|0;p=c[r>>2]|0}while((j|0)<($(p,p)|0))}B=+P(+(+(b|0)));h[(c[w>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;e=e+1|0;if((e|0)>=4){e=32;break}}if((e|0)==17){Me(3,4747,z);Vj(x);d=-1;break}else if((e|0)==32){Vj(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Me(3,4649,A);d=-1}while(0);i=A;return d|0}function Ke(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;h=k+8|0;e=k;g=_i(d,4854)|0;do if(g){dj(g,0,2)|0;e=gj(g)|0;dj(g,0,0)|0;f=Uj(e+1|0)|0;if(!f){Me(3,5472,h);Wi(g)|0;e=-1;break}h=aj(f,e,1,g)|0;Wi(g)|0;if(!h){c[j>>2]=d;Me(3,4820,j);Vj(f);e=-1;break}else{a[f+e>>0]=0;e=Je(b,f)|0;Vj(f);break}}else{c[e>>2]=d;Me(3,4774,e);e=-1}while(0);i=k;return e|0}function Le(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;f=j;c[h>>2]=0;if(((d|0)!=0&(c[496]|0)<=(b|0)?(a[d>>0]|0)!=0:0)?(c[f>>2]=e,g=lj(h,d,f)|0,(g|0)>-1):0){f=c[497]|0;do if(f){if(!(c[498]|0)){Wb[f&15](c[h>>2]|0);break}e=gb()|0;b=c[500]|0;if((e|0)==(c[499]|0)){if((b|0)>0){Wb[f&15](c[502]|0);c[500]=0;f=c[497]|0}Wb[f&15](c[h>>2]|0);break}f=c[501]|0;if((b|0)<(f|0)){d=(c[502]|0)+b|0;if((g|0)<(-3-b+f|0)){yj(d,c[h>>2]|0)|0;c[500]=(c[500]|0)+g;break}else{a[d>>0]=46;a[d+1>>0]=46;a[d+2>>0]=46;a[d+3>>0]=0;c[500]=c[501];break}}}else $i(c[h>>2]|0,c[659]|0)|0;while(0);Vj(c[h>>2]|0)}i=j;return}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0;i=0;do{d=a+(i<<5)|0;e=a+(i<<5)+8|0;f=a+(i<<5)+16|0;g=0;do{h[c+(i<<5)+(g<<3)>>3]=+h[d>>3]*+h[b+(g<<3)>>3]+ +h[e>>3]*+h[b+32+(g<<3)>>3]+ +h[f>>3]*+h[b+64+(g<<3)>>3];g=g+1|0}while((g|0)!=4);g=c+(i<<5)+24|0;h[g>>3]=+h[a+(i<<5)+24>>3]+ +h[g>>3];i=i+1|0}while((i|0)!=3);return 0}function Oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Re(4,4)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[d+(k<<3)>>3]=+h[a+(i<<5)>>3];h[e+(1+k<<3)>>3]=+h[a+(i<<5)+8>>3];h[f+(2+k<<3)>>3]=+h[a+(i<<5)+16>>3];h[g+(3+k<<3)>>3]=+h[a+(i<<5)+24>>3];i=i+1|0}while((i|0)!=3);d=c[j>>2]|0;e=d+96|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[d+120>>3]=1.0;_e(j)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[b+(i<<5)>>3]=+h[d+(k<<3)>>3];h[b+(i<<5)+8>>3]=+h[e+(1+k<<3)>>3];h[b+(i<<5)+16>>3]=+h[f+(2+k<<3)>>3];h[b+(i<<5)+24>>3]=+h[g+(3+k<<3)>>3];i=i+1|0}while((i|0)!=3);We(j)|0;return 0}function Pe(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Qe(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Ej(c,47)|0;if(!f){a[b>>0]=0;break}f=f+((e|0)!=0&1)-c|0;if((f+1|0)>>>0<=d>>>0){Dj(b,c,f)|0;a[b+f>>0]=0}else b=0}else b=0;while(0);return b|0}function Re(a,b){a=a|0;b=b|0;var d=0,e=0;d=Uj(12)|0;do if(d){e=Uj($(a<<3,b)|0)|0;c[d>>2]=e;if(!e){Vj(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Se(a){a=a|0;var b=0;b=Re(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Ve(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Te(a,b){a=a|0;b=b|0;var d=0;d=Re(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Xe(d,a,b)|0)<0){We(d)|0;d=0}}else d=0;return d|0}function Ue(a){a=a|0;var b=0;b=Re(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($e(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;d=c[a+4>>2]|0;if((d|0)==(c[b+4>>2]|0)?(j=c[a+8>>2]|0,(j|0)==(c[b+8>>2]|0)):0)if((d|0)>0){e=(j|0)>0;l=0;do{f=$(j,l)|0;if(e){g=c[b>>2]|0;i=c[a>>2]|0;k=0;do{m=f+k|0;h[i+(m<<3)>>3]=+h[g+(m<<3)>>3];k=k+1|0}while((k|0)<(j|0))}l=l+1|0}while((l|0)<(d|0));d=0}else d=0;else d=-1;return d|0}function We(a){a=a|0;if(a){Vj(c[a>>2]|0);Vj(a)}return 0}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+8>>2]|0;if(((n|0)==(c[d+4>>2]|0)?(r=c[a+4>>2]|0,(r|0)==(c[b+4>>2]|0)):0)?(o=c[a+8>>2]|0,(o|0)==(c[d+8>>2]|0)):0){s=(o|0)>0?o:0;if((r|0)>0){p=(o|0)>0;q=(n|0)>0;k=c[a>>2]|0;m=0;while(1){a=$(n,m)|0;if(p){f=0;l=k;while(1){h[l>>3]=0.0;if(q){e=0.0;g=0;i=(c[b>>2]|0)+(a<<3)|0;j=(c[d>>2]|0)+(f<<3)|0;while(1){e=e+ +h[i>>3]*+h[j>>3];h[l>>3]=e;g=g+1|0;if((g|0)>=(n|0))break;else{i=i+8|0;j=j+(o<<3)|0}}}f=f+1|0;if((f|0)>=(o|0))break;else l=l+8|0}}m=m+1|0;if((m|0)>=(r|0)){a=0;break}else k=k+(s<<3)|0}}else a=0}else a=-1;return a|0}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0;q=c[a+4>>2]|0;s=c[a+8>>2]|0;f=(q|0)<(s|0)?q:s;a:do if(((((!((q|0)<2|(s|0)<2)?(c[b+8>>2]|0)==(s|0):0)?(c[b+4>>2]|0)==(f|0):0)?(t=d+4|0,(c[t>>2]|0)==(f|0)):0)?(g=e+4|0,(c[g>>2]|0)==(s|0)):0)?(u=Se(a)|0,(u|0)!=0):0){r=+P(+(+(q|0)));o=c[u+4>>2]|0;p=c[u+8>>2]|0;if(!((o|0)<1|(p|0)<1)?(c[g>>2]|0)==(p|0):0){if(p){f=c[e>>2]|0;a=0;do{h[f+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)!=(p|0))}n=c[u>>2]|0;if(o){f=(p|0)==0;a=0;j=n;while(1){if(!f){g=0;k=j;l=c[e>>2]|0;while(1){h[l>>3]=+h[k>>3]+ +h[l>>3];g=g+1|0;if((g|0)==(p|0))break;else{k=k+8|0;l=l+8|0}}}a=a+1|0;if((a|0)==(o|0))break;else j=j+(p<<3)|0}}i=+(o|0);if(p){f=c[e>>2]|0;a=0;do{m=f+(a<<3)|0;h[m>>3]=+h[m>>3]/i;a=a+1|0}while((a|0)!=(p|0))}l=(p|0)>0?p:0;if((o|0)>0){f=(p|0)>0;a=0;j=n;while(1){if(f){g=0;k=j;m=c[e>>2]|0;while(1){h[k>>3]=+h[k>>3]-+h[m>>3];g=g+1|0;if((g|0)>=(p|0))break;else{k=k+8|0;m=m+8|0}}}a=a+1|0;if((a|0)>=(o|0))break;else j=j+(l<<3)|0}}f=$(s,q)|0;if((f|0)>0){a=0;do{e=n+(a<<3)|0;h[e>>3]=+h[e>>3]/r;a=a+1|0}while((a|0)<(f|0))}f=Ze(u,b,d)|0;We(u)|0;j=c[t>>2]|0;if((j|0)>0){a=c[d>>2]|0;g=0;i=0.0;do{i=i+ +h[a+(g<<3)>>3];g=g+1|0}while((g|0)<(j|0))}else i=0.0;if((j|0)<=0)break;a=c[d>>2]|0;g=0;while(1){d=a+(g<<3)|0;h[d>>3]=+h[d>>3]/i;g=g+1|0;if((g|0)>=(j|0))break a}}We(u)|0;f=-1}else f=-1;while(0);return f|0}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;U=i;i=i+16|0;w=U;F=a+4|0;I=c[F>>2]|0;J=a+8|0;K=c[J>>2]|0;S=(K|0)<(I|0)?K:I;a:do if(((!((I|0)<2|(K|0)<2)?(R=b+8|0,(c[R>>2]|0)==(K|0)):0)?(L=b+4|0,(c[L>>2]|0)==(S|0)):0)?(M=d+4|0,(c[M>>2]|0)==(S|0)):0){T=Re(S,S)|0;N=T+4|0;if((c[N>>2]|0)==(S|0)?(Q=T+8|0,(c[Q>>2]|0)==(S|0)):0){G=(I|0)<(K|0);s=c[F>>2]|0;t=c[J>>2]|0;if(G){if((S|0)!=(s|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){m=(S|0)==0;j=(t|0)>0;n=0;r=g;while(1){l=$(n,t)|0;if(!m){p=0;s=r;while(1){if((p|0)>=(n|0)){e=c[a>>2]|0;h[s>>3]=0.0;if(j){k=0.0;o=e+(l<<3)|0;e=e+(($(p,t)|0)<<3)|0;f=0;while(1){k=k+ +h[o>>3]*+h[e>>3];h[s>>3]=k;f=f+1|0;if((f|0)>=(t|0))break;else{o=o+8|0;e=e+8|0}}}}else h[s>>3]=+h[g+(($(p,S)|0)+n<<3)>>3];p=p+1|0;if((p|0)==(S|0))break;else s=s+8|0}}n=n+1|0;if((n|0)>=(S|0))break;else r=r+(S<<3)|0}}}else{if((S|0)!=(t|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){l=(S|0)==0;j=(s|0)>0;m=0;p=g;while(1){if(!l){o=0;r=p;while(1){if((o|0)>=(m|0)){e=c[a>>2]|0;h[r>>3]=0.0;if(j){k=0.0;n=e+(m<<3)|0;e=e+(o<<3)|0;f=0;while(1){k=k+ +h[n>>3]*+h[e>>3];h[r>>3]=k;f=f+1|0;if((f|0)>=(s|0))break;else{n=n+(S<<3)|0;e=e+(S<<3)|0}}}}else h[r>>3]=+h[g+(($(o,S)|0)+m<<3)>>3];o=o+1|0;if((o|0)==(S|0))break;else r=r+8|0}}m=m+1|0;if((m|0)>=(S|0))break;else p=p+(S<<3)|0}}}do if(((S|0)>=2?(c[M>>2]|0)==(S|0):0)?(H=nf(S)|0,(H|0)!=0):0){E=S+-1|0;c[w+4>>2]=E;c[w>>2]=(c[H>>2]|0)+8;if((rf(T,d,w)|0)<0){of(H)|0;break}B=c[H>>2]|0;h[B>>3]=0.0;if((E|0)>0){C=(S|0)==0;D=E;do{f=D;while(1){if((f|0)<=0)break;v=+O(+(+h[B+(f<<3)>>3]));e=f+-1|0;A=c[d>>2]|0;x=+O(+(+h[A+(e<<3)>>3]));if(v>(x+ +O(+(+h[A+(f<<3)>>3])))*1.0e-06)f=e;else break}y=D;D=D+-1|0;b:do if((f|0)!=(y|0)){o=B+(y<<3)|0;p=B+(f+1<<3)|0;r=(f|0)<(y|0);z=0;do{if((z|0)>99)break b;z=z+1|0;s=c[d>>2]|0;t=s+(D<<3)|0;w=s+(y<<3)|0;k=+h[w>>3];q=(+h[t>>3]-k)*.5;u=+h[o>>3];u=u*u;v=+P(+(u+q*q));if(r){A=f;q=+h[s+(f<<3)>>3]-k+u/(q+(q<0.0?-v:v));u=+h[p>>3];while(1){k=+O(+q);do if(!(k>=+O(+u))){v=-q/u;x=1.0/+P(+(v*v+1.0));v=v*x}else{if(!(k>1.0e-16)){v=1.0;x=0.0;break}k=-u/q;x=1.0/+P(+(k*k+1.0));v=x;x=k*x}while(0);j=s+(A<<3)|0;X=+h[j>>3];n=A;A=A+1|0;l=s+(A<<3)|0;W=+h[l>>3];k=X-W;m=B+(A<<3)|0;V=x*(x*k+v*2.0*+h[m>>3]);h[j>>3]=X-V;h[l>>3]=W+V;if((n|0)>(f|0)){l=B+(n<<3)|0;h[l>>3]=v*+h[l>>3]-u*x}X=+h[m>>3];h[m>>3]=X+x*(v*k-x*2.0*X);j=$(n,S)|0;l=$(A,S)|0;if(C)k=u;else{e=c[T>>2]|0;g=0;do{Z=e+(g+j<<3)|0;q=+h[Z>>3];Y=e+(g+l<<3)|0;k=+h[Y>>3];h[Z>>3]=v*q-x*k;h[Y>>3]=x*q+v*k;g=g+1|0}while((g|0)!=(S|0))}if((n|0)<(D|0)){q=+h[m>>3];Z=B+(n+2<<3)|0;k=+h[Z>>3];h[Z>>3]=v*k;k=-(x*k)}if((A|0)>=(y|0))break;else u=k}}W=+O(+(+h[o>>3]));X=+O(+(+h[t>>3]))}while(W>(X+ +O(+(+h[w>>3])))*1.0e-06)}while(0)}while((y|0)>1)}if(E){l=c[d>>2]|0;m=c[T>>2]|0;n=(S|0)==0;o=0;do{g=l+(o<<3)|0;q=+h[g>>3];j=o;o=o+1|0;if((o|0)<(S|0)){e=j;f=o;k=q;do{X=+h[l+(f<<3)>>3];Z=X>k;k=Z?X:k;e=Z?f:e;f=f+1|0}while((f|0)<(S|0))}else{e=j;k=q}h[l+(e<<3)>>3]=q;h[g>>3]=k;if(!n){g=0;f=m+(($(e,S)|0)<<3)|0;e=m+(($(j,S)|0)<<3)|0;while(1){X=+h[f>>3];h[f>>3]=+h[e>>3];h[e>>3]=X;g=g+1|0;if((g|0)==(S|0))break;else{f=f+8|0;e=e+8|0}}}}while((o|0)!=(E|0))}of(H)|0;c:do if(!G){g=c[b>>2]|0;p=(I|0)>(K|0)?K:I;d:do if((S|0)>0){m=c[d>>2]|0;n=(p|0)==0;e=0;o=c[T>>2]|0;do{if(+h[m+(e<<3)>>3]<1.0e-16)break d;if(!n){f=0;j=o;l=g;while(1){h[l>>3]=+h[j>>3];f=f+1|0;if((f|0)==(p|0))break;else{j=j+8|0;l=l+8|0}}}o=o+(p<<3)|0;g=g+(p<<3)|0;e=e+1|0}while((e|0)<(S|0))}else e=0;while(0);n=(p|0)>0?p:0;if((e|0)<(S|0)){l=c[d>>2]|0;m=(S|0)>0;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(S|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(S|0))break;else g=g+(n<<3)|0}}}else{w=c[F>>2]|0;t=c[J>>2]|0;do if(!((w|0)<1|(t|0)<1)){if((c[N>>2]|0)!=(w|0))break;if((c[Q>>2]|0)!=(w|0))break;if((c[L>>2]|0)!=(w|0))break;if((c[R>>2]|0)!=(t|0))break;if((c[M>>2]|0)!=(w|0))break;f=c[b>>2]|0;e:do if((w|0)>0){p=c[d>>2]|0;s=(t|0)==0;r=(w|0)==0;e=0;do{k=+h[p+(e<<3)>>3];if(k<1.0e-16)break e;q=1.0/+P(+(+O(+k)));m=$(e,w)|0;if(!s){n=0;o=f;while(1){if(r)k=0.0;else{g=0;j=(c[T>>2]|0)+(m<<3)|0;l=(c[a>>2]|0)+(n<<3)|0;k=0.0;while(1){k=k+ +h[j>>3]*+h[l>>3];g=g+1|0;if((g|0)==(w|0))break;else{j=j+8|0;l=l+(t<<3)|0}}}h[o>>3]=q*k;n=n+1|0;if((n|0)==(t|0))break;else o=o+8|0}}f=f+(t<<3)|0;e=e+1|0}while((e|0)<(w|0))}else e=0;while(0);n=(t|0)>0?t:0;if((e|0)>=(w|0))break c;l=c[d>>2]|0;m=(t|0)>0;g=f;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(t|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(w|0))break c;else g=g+(n<<3)|0}}while(0);We(T)|0;e=-1;break a}while(0);We(T)|0;e=0;break a}while(0);We(T)|0;e=-1;break}We(T)|0;e=-1}else e=-1;while(0);i=U;return e|0}function _e(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;v=i;i=i+2e3|0;u=v;b=c[a>>2]|0;t=c[a+4>>2]|0;a:do if((t|0)<=500){switch(t|0){case 0:{b=0;break a}case 1:{h[b>>3]=1.0/+h[b>>3];break a}default:{}}if((t|0)>0){a=0;do{c[u+(a<<2)>>2]=a;a=a+1|0}while((a|0)<(t|0))}s=b+(t+-1<<3)|0;if((t|0)>0){m=(t|0)==0;p=(t|0)==1;o=(t|0)==0;n=(t|0)==1;q=s;a=0;r=0;while(1){l=b+(($(r,t)|0)<<3)|0;if((r|0)<(t|0)){e=r;f=0.0;d=l;while(1){w=+O(+(+h[d>>3]));k=f=(t|0))break;else d=d+(t<<3)|0}}else f=0.0;if(f<=1.0e-10){b=0;break a}g=u+(a<<2)|0;j=c[g>>2]|0;k=u+(r<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;if(!m){d=0;e=b+(($(a,t)|0)<<3)|0;g=l;while(1){w=+h[e>>3];h[e>>3]=+h[g>>3];h[g>>3]=w;d=d+1|0;if((d|0)==(t|0))break;else{e=e+8|0;g=g+8|0}}}f=+h[l>>3];if(!p){d=1;e=l;do{k=e;e=e+8|0;h[k>>3]=+h[e>>3]/f;d=d+1|0}while((d|0)!=(t|0))}h[q>>3]=1.0/f;if(!o){g=0;j=s;while(1){if((g|0)!=(r|0)){d=b+(($(g,t)|0)<<3)|0;f=+h[d>>3];if(!n){k=1;e=l;while(1){x=d;d=d+8|0;h[x>>3]=+h[d>>3]-f*+h[e>>3];k=k+1|0;if((k|0)==(t|0))break;else e=e+8|0}}h[j>>3]=-(f*+h[q>>3])}g=g+1|0;if((g|0)==(t|0))break;else j=j+(t<<3)|0}}r=r+1|0;if((r|0)>=(t|0))break;else q=q+(t<<3)|0}}if((t|0)>0){g=(t|0)>0;j=0;do{a=u+(j<<2)|0;b:do if((j|0)<(t|0)){d=j;do{if((c[a>>2]|0)==(j|0))break b;d=d+1|0;a=u+(d<<2)|0}while((d|0)<(t|0))}else d=j;while(0);c[a>>2]=c[u+(j<<2)>>2];if(g){e=0;a=b+(d<<3)|0;d=b+(j<<3)|0;while(1){w=+h[a>>3];h[a>>3]=+h[d>>3];h[d>>3]=w;e=e+1|0;if((e|0)>=(t|0))break;else{a=a+(t<<3)|0;d=d+(t<<3)|0}}}j=j+1|0}while((j|0)<(t|0))}}else b=0;while(0);i=v;return ((b|0)==0)<<31>>31|0}function $e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;if((i|0)==(c[b+8>>2]|0)?(k=c[a+8>>2]|0,(k|0)==(c[b+4>>2]|0)):0){l=(k|0)>0?k:0;if((i|0)>0){j=(k|0)>0;e=c[a>>2]|0;g=0;while(1){if(j){a=0;d=(c[b>>2]|0)+(g<<3)|0;f=e;while(1){h[f>>3]=+h[d>>3];a=a+1|0;if((a|0)>=(k|0))break;else{d=d+(i<<3)|0;f=f+8|0}}}g=g+1|0;if((g|0)>=(i|0)){a=0;break}else e=e+(l<<3)|0}}else a=0}else a=-1;return a|0}function af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0;f=+(b|0)/+(c[a>>2]|0);g=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;do{h[e+8+(b<<3)>>3]=f*+h[a+8+(b<<3)>>3];h[e+40+(b<<3)>>3]=g*+h[a+40+(b<<3)>>3];h[e+72+(b<<3)>>3]=+h[a+72+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=c[a+176>>2]|0;switch(b|0){case 4:{h[e+104>>3]=+h[a+104>>3];h[e+112>>3]=+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=f*+h[a+136>>3];h[e+144>>3]=g*+h[a+144>>3];h[e+152>>3]=f*+h[a+152>>3];h[e+160>>3]=g*+h[a+160>>3];h[e+168>>3]=+h[a+168>>3];i=8;break}case 3:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=+h[a+136>>3]/(f*g);h[e+144>>3]=+h[a+144>>3]/(g*(f*f*g));i=8;break}case 2:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);h[e+136>>3]=+h[a+136>>3]/(g*(f*f*g));i=8;break}case 1:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);i=8;break}default:b=-1}if((i|0)==8){c[e+176>>2]=b;b=0}return b|0}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0.0;f=i;i=i+96|0;e=f;if(!(+h[a+88>>3]>=0.0)){d=0;do{h[e+(d<<5)>>3]=-+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=-+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=-+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=-+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}else{d=0;do{h[e+(d<<5)>>3]=+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}h[b>>3]=0.0;h[b+8>>3]=0.0;h[b+16>>3]=0.0;h[b+24>>3]=0.0;h[b+32>>3]=0.0;h[b+40>>3]=0.0;h[b+48>>3]=0.0;h[b+56>>3]=0.0;h[b+64>>3]=0.0;h[b+72>>3]=0.0;h[b+80>>3]=0.0;h[b+88>>3]=0.0;g=+h[e+64>>3];o=+h[e+72>>3];p=+h[e+80>>3];x=+P(+(g*g+o*o+p*p));a=b+80|0;h[a>>3]=x;x=g/x;v=c+64|0;h[v>>3]=x;o=o/+h[a>>3];t=c+72|0;h[t>>3]=o;p=p/+h[a>>3];q=c+80|0;h[q>>3]=p;n=c+88|0;h[n>>3]=+h[e+88>>3]/+h[a>>3];g=+h[e+32>>3];k=+h[e+40>>3];s=+h[e+48>>3];p=x*g+o*k+p*s;m=b+48|0;h[m>>3]=p;g=g-p*+h[v>>3];k=k-p*+h[t>>3];p=s-p*+h[q>>3];s=+P(+(g*g+k*k+p*p));l=b+40|0;h[l>>3]=s;w=c+32|0;h[w>>3]=g/s;u=c+40|0;h[u>>3]=k/+h[l>>3];r=c+48|0;h[r>>3]=p/+h[l>>3];p=+h[e>>3];k=+h[e+8>>3];s=+h[e+16>>3];g=+h[v>>3]*p+ +h[t>>3]*k+ +h[q>>3]*s;d=b+16|0;h[d>>3]=g;o=+h[w>>3]*p+ +h[u>>3]*k+ +h[r>>3]*s;j=b+8|0;h[j>>3]=o;p=p-o*+h[w>>3]-g*+h[v>>3];k=k-o*+h[u>>3]-g*+h[t>>3];g=s-o*+h[r>>3]-g*+h[q>>3];o=+P(+(p*p+k*k+g*g));h[b>>3]=o;h[c>>3]=p/o;h[c+8>>3]=k/+h[b>>3];h[c+16>>3]=g/+h[b>>3];g=+h[n>>3];k=(+h[e+56>>3]-+h[m>>3]*g)/+h[l>>3];h[c+56>>3]=k;h[c+24>>3]=(+h[e+24>>3]-k*+h[j>>3]-+h[d>>3]*g)/+h[b>>3];d=0;do{w=b+(d<<5)|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+8|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+16|0;h[w>>3]=+h[w>>3]/+h[a>>3];d=d+1|0}while((d|0)!=3);i=f;return 0}function cf(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;switch(f|0){case 4:{q=+h[a>>3];r=+h[a+8>>3];s=+h[a+16>>3];t=+h[a+24>>3];y=+h[a+32>>3];v=+h[a+40>>3];w=+h[a+48>>3];x=+h[a+56>>3];u=+h[a+64>>3];p=(b-w)/y;j=(c-x)/v;c=p*p;i=j*j;k=s*2.0;l=t*6.0;m=t*2.0;n=s*6.0;a:do if(i!=0.0|c!=0.0){f=1;g=p;b=j;while(1){C=i+c;B=q*C+1.0+C*(r*C);z=c*3.0;A=i*z;g=g-(t*(C+c*2.0)+(b*(k*g)+g*B)-p)/(l*g+(k*b+(q*(i+z)+1.0+r*(i*i+(c*(c*5.0)+A)))));z=m*g;b=b-(s*(i*2.0+C)+b*B+b*z-j)/(n*b+(q*(c+i*3.0)+1.0+r*(i*(i*5.0)+(c*c+A)))+z);if((f|0)==4)break a;c=g*g;i=b*b;if(!(i!=0.0|c!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);h[d>>3]=w+y*g/u;h[e>>3]=x+v*b/u;f=0;break}case 3:{p=+h[a>>3];g=(b-p)/+h[a+24>>3];o=a+8|0;b=c-+h[o>>3];j=+h[a+32>>3]/1.0e8;k=+h[a+40>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;b:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break b;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 2:{p=+h[a>>3];g=b-p;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;k=+h[a+32>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;c:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break c;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 1:{m=+h[a>>3];g=b-m;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;c=g*g+b*b;k=+P(+c);l=j*3.0;d:do if(k!=0.0){f=1;i=k;while(1){C=i-(i*(1.0-j*c)-k)/(1.0-l*c);g=g*C/i;b=b*C/i;if((f|0)==3)break d;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+m;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}default:f=-1}return f|0}function df(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;switch(f|0){case 4:{j=+h[a+16>>3];k=+h[a+24>>3];n=+h[a+32>>3];l=+h[a+40>>3];o=+h[a+48>>3];m=+h[a+56>>3];i=+h[a+64>>3];b=(b-o)*i/n;i=(c-m)*i/l;g=b*b+i*i;c=+h[a>>3]*g+1.0+g*(+h[a+8>>3]*g);h[d>>3]=o+n*(k*(b*(b*2.0)+g)+(j*2.0*b*i+b*c));h[e>>3]=m+l*(k*2.0*b*i+(j*(g+i*(i*2.0))+i*c));f=0;break}case 3:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+32>>3]/1.0e8)-o*(o*(+h[a+40>>3]/1.0e8/1.0e5));h[d>>3]=i+ +h[a+24>>3]*(g*o);b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 2:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+24>>3]/1.0e8)-o*(o*(+h[a+32>>3]/1.0e8/1.0e5));h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 1:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=1.0-(g*g+b*b)*(+h[a+24>>3]/1.0e8);h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}default:f=-1}return f|0}function ef(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=i;i=i+256|0;n=s+232|0;m=s+224|0;l=s+216|0;k=s+208|0;j=s+200|0;g=s+192|0;f=s+184|0;p=s+240|0;q=s;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=_i(a,4854)|0;if(!r){r=qi()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Me(3,4857,f);a=ri(c[r>>2]|0)|0;c[g>>2]=5367;c[g+4>>2]=a;Me(3,5361,g);a=-1;break}dj(r,0,2)|0;a:do if(!(Xi(r)|0)){g=gj(r)|0;jj(r);a=0;do{if((a|0)>=4){o=9;break}f=c[2012+(a<<3)+4>>2]|0;a=a+1|0}while(((g|0)%(f|0)|0|0)!=0);do if((o|0)==9)if((a|0)==4){Me(3,4971,l);a=-1;break a}else{f=c[2012+(0<<3)+4>>2]|0;a=0;break}while(0);if((aj(q,f,1,r)|0)!=1){a=qi()|0;c[m>>2]=c[a>>2];Me(3,5051,m);a=ri(c[a>>2]|0)|0;c[n>>2]=5367;c[n+4>>2]=a;Me(3,5361,n);a=-1;break}l=q+176|0;c[l>>2]=a;ff(q);m=(a|0)==1;n=q+120|0;if(m){t=+h[n>>3];k=q+128|0;h[n>>3]=+h[k>>3];h[k>>3]=t}else k=q+128|0;ik(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;if((b|0)>1){j=1;while(1){e=(c[p>>2]|0)+(4-1)&~(4-1);g=c[e>>2]|0;c[p>>2]=e+4;c[g+176>>2]=c[f>>2];if((aj(q,c[2012+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[l>>2]=a;ff(q);if(m){t=+h[n>>3];h[n>>3]=+h[k>>3];h[k>>3]=t}ik(g|0,q|0,184)|0;j=j+1|0;if((j|0)>=(b|0)){a=0;break}}}else a=0}else{a=qi()|0;c[j>>2]=c[a>>2];Me(3,4926,j);a=ri(c[a>>2]|0)|0;c[k>>2]=5367;c[k+4>>2]=a;Me(3,5361,k);a=-1}while(0);Wi(r)|0}else a=-1;while(0);i=s;return a|0}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+192|0;f=g;hf(a,f);hf(a+4|0,f+4|0);b=0;do{gf(a+8+(b<<5)|0,f+8+(b<<5)|0);gf(a+8+(b<<5)+8|0,f+8+(b<<5)+8|0);gf(a+8+(b<<5)+16|0,f+8+(b<<5)+16|0);gf(a+8+(b<<5)+24|0,f+8+(b<<5)+24|0);b=b+1|0}while((b|0)!=3);d=a+176|0;e=0;do{gf(a+104+(e<<3)|0,f+104+(e<<3)|0);e=e+1|0;b=c[d>>2]|0}while((e|0)<(c[2012+(b+-1<<3)>>2]|0));c[f+176>>2]=b;ik(a|0,f|0,184)|0;i=g;return}function gf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+7>>0]|0;a[c+1>>0]=a[b+6>>0]|0;a[c+2>>0]=a[b+5>>0]|0;a[c+3>>0]=a[b+4>>0]|0;a[c+4>>0]=a[b+3>>0]|0;a[c+5>>0]=a[b+2>>0]|0;a[c+6>>0]=a[b+1>>0]|0;a[c+7>>0]=a[b>>0]|0;return}function hf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+3>>0]|0;a[c+1>>0]=a[b+2>>0]|0;a[c+2>>0]=a[b+1>>0]|0;a[c+3>>0]=a[b>>0]|0;return}function jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=i;i=i+64|0;t=x+24|0;u=x+16|0;v=x+8|0;w=x;q=Uj(208)|0;if(!q){Me(3,5472,x+32|0);rb(1)}ik(q|0,a|0,184)|0;s=b<<1;r=(c[a>>2]|0)+s|0;c[q+192>>2]=r;s=(c[a+4>>2]|0)+s|0;c[q+196>>2]=s;c[q+200>>2]=b;c[q+204>>2]=b;d=$(r<<3,s)|0;e=Uj(d)|0;c[q+184>>2]=e;if(!e){Me(3,5472,x+40|0);rb(1)}d=Uj(d)|0;c[q+188>>2]=d;if(!d){Me(3,5472,x+48|0);rb(1)}p=a+104|0;m=c[a+176>>2]|0;n=(r|0)>0?r<<1:0;if((s|0)>0){o=(r|0)>0;l=0;while(1){f=+(l-b|0);if(o){a=0;j=e;k=d;while(1){y=+(a-b|0);df(p,y,f,v,w,m)|0;g[j>>2]=+h[v>>3];g[j+4>>2]=+h[w>>3];cf(p,y,f,t,u,m)|0;g[k>>2]=+h[t>>3];g[k+4>>2]=+h[u>>3];a=a+1|0;if((a|0)>=(r|0))break;else{j=j+8|0;k=k+8|0}}}d=d+(n<<2)|0;l=l+1|0;if((l|0)>=(s|0))break;else e=e+(n<<2)|0}}i=x;return q|0}function kf(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){Vj(c[b+184>>2]|0);Vj(c[(c[a>>2]|0)+188>>2]|0);Vj(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function lf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function mf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a+4>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function nf(a){a=a|0;var b=0,d=0;b=Uj(8)|0;do if(b){d=Uj(a<<3)|0;c[b>>2]=d;if(!d){Vj(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function of(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function pf(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,g=0;b=+P(+(+qf(a,a)));if(b!=0.0){f=c[a>>2]|0;e=+h[f>>3];b=e<0.0?-b:b;e=e+b;h[f>>3]=e;e=1.0/+P(+(e*b));a=c[a+4>>2]|0;if((a|0)>0){d=0;do{g=f+(d<<3)|0;h[g>>3]=e*+h[g>>3];d=d+1|0}while((d|0)<(a|0))}}return +-b}function qf(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))rb(0);if((f|0)>0){e=c[a>>2]|0;a=c[b>>2]|0;b=0;d=0.0;do{d=d+ +h[e+(b<<3)>>3]*+h[a+(b<<3)>>3];b=b+1|0}while((b|0)<(f|0))}else d=0.0;return +d}function rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+8|0;D=E;w=c[a+8>>2]|0;if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){z=w+-2|0;A=C+4|0;B=D+4|0;if((w|0)>2){s=w+-1|0;t=0;do{o=$(t,w)|0;p=c[a>>2]|0;h[(c[b>>2]|0)+(t<<3)>>3]=+h[p+(o+t<<3)>>3];k=w-t+-1|0;c[A>>2]=k;u=t;t=t+1|0;l=p+(o+t<<3)|0;c[C>>2]=l;r=+pf(C);h[(c[d>>2]|0)+(u<<3)>>3]=r;if(!(r==0.0)){if((t|0)<(w|0)){m=c[b>>2]|0;n=t;do{if((t|0)<(n|0)){e=c[a>>2]|0;f=t;j=0.0;do{r=+h[e+(($(f,w)|0)+n<<3)>>3];j=j+r*+h[p+(f+o<<3)>>3];f=f+1|0}while((f|0)<(n|0))}else j=0.0;e=$(n,w)|0;if((n|0)<(w|0)){f=c[a>>2]|0;g=n;do{j=j+ +h[f+(g+e<<3)>>3]*+h[p+(g+o<<3)>>3];g=g+1|0}while((g|0)<(w|0))}h[m+(n<<3)>>3]=j;n=n+1|0}while((n|0)<(w|0))}c[B>>2]=k;c[A>>2]=k;c[C>>2]=l;c[D>>2]=(c[b>>2]|0)+(t<<3);j=+qf(C,D)*.5;if((s|0)>(u|0)){e=c[b>>2]|0;k=s;do{q=+h[p+(k+o<<3)>>3];f=e+(k<<3)|0;r=+h[f>>3]-j*q;h[f>>3]=r;f=$(k,w)|0;if((k|0)<(w|0)){g=c[a>>2]|0;l=k;do{n=g+(l+f<<3)|0;h[n>>3]=+h[n>>3]-(q*+h[e+(l<<3)>>3]+r*+h[p+(l+o<<3)>>3]);l=l+1|0}while((l|0)<(w|0))}k=k+-1|0}while((k|0)>(u|0))}}}while((t|0)<(z|0))}if((w|0)<=1){if((w|0)>0){f=0;g=c[a>>2]|0;e=c[b>>2]|0;v=27}}else{v=$(z,w)|0;g=c[a>>2]|0;e=c[b>>2]|0;h[e+(z<<3)>>3]=+h[g+(v+z<<3)>>3];f=w+-1|0;h[(c[d>>2]|0)+(z<<3)>>3]=+h[g+(f+v<<3)>>3];v=27}if((v|0)==27)h[e+(f<<3)>>3]=+h[g+(($(f,w)|0)+f<<3)>>3];if((w|0)>0){m=(w|0)>0;p=w;do{d=p;p=p+-1|0;n=$(p,w)|0;o=c[a>>2]|0;if((d|0)<=(z|0)?(x=w-p+-1|0,y=o+(n+d<<3)|0,(d|0)<(w|0)):0){e=(d|0)<(w|0);k=d;do{c[B>>2]=x;c[A>>2]=x;c[C>>2]=y;f=$(k,w)|0;c[D>>2]=(c[a>>2]|0)+(f+d<<3);j=+qf(C,D);if(e){g=c[a>>2]|0;l=d;do{v=g+(l+f<<3)|0;h[v>>3]=+h[v>>3]-j*+h[o+(l+n<<3)>>3];l=l+1|0}while((l|0)<(w|0))}k=k+1|0}while((k|0)<(w|0))}if(m){e=0;do{h[o+(e+n<<3)>>3]=0.0;e=e+1|0}while((e|0)<(w|0))}h[o+(n+p<<3)>>3]=1.0}while((d|0)>1);e=0}else e=0}else e=-1;i=E;return e|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[c>>3];g=+h[c+8>>3];e=+h[c+16>>3];d=+h[b+88>>3]+(f*+h[b+64>>3]+g*+h[b+72>>3]+e*+h[b+80>>3]);if(d==0.0)c=-1;else{i=+h[b+56>>3]+(f*+h[b+32>>3]+g*+h[b+40>>3]+e*+h[b+48>>3]);h[a>>3]=(+h[b+24>>3]+(f*+h[b>>3]+g*+h[b+8>>3]+e*+h[b+16>>3]))/d;h[a+8>>3]=i/d;c=0}return c|0}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;B=i;i=i+1072|0;y=B+1056|0;x=B+768|0;w=B+192|0;A=B+48|0;z=B;K=+h[d>>3];F=+h[e>>3];s=K*F;J=+h[d+8>>3];t=e+8|0;E=+h[t>>3];v=J*E;j=+h[d+16>>3];G=+h[e+16>>3];l=j*G;m=+h[d+24>>3];I=+h[d+32>>3];H=+h[d+40>>3];n=E*H;k=+h[d+48>>3];o=G*k;p=+h[d+56>>3];D=+h[d+64>>3];C=+h[d+72>>3];q=E*C;f=+h[d+80>>3];r=G*f;g=+h[d+88>>3];h[x>>3]=s;h[x+8>>3]=K*E;h[x+16>>3]=K*G;h[x+24>>3]=F*J;h[x+32>>3]=v;h[x+40>>3]=G*J;h[x+48>>3]=F*j;h[x+56>>3]=E*j;h[x+64>>3]=l;h[x+72>>3]=K;h[x+80>>3]=J;h[x+88>>3]=j;j=F*I;h[x+96>>3]=j;h[x+104>>3]=E*I;h[x+112>>3]=G*I;h[x+120>>3]=F*H;h[x+128>>3]=n;h[x+136>>3]=G*H;h[x+144>>3]=F*k;h[x+152>>3]=E*k;h[x+160>>3]=o;h[x+168>>3]=I;h[x+176>>3]=H;h[x+184>>3]=k;k=D*F;h[x+192>>3]=k;h[x+200>>3]=E*D;h[x+208>>3]=G*D;h[x+216>>3]=F*C;E=+h[t>>3];h[x+224>>3]=C*E;h[x+232>>3]=G*C;h[x+240>>3]=F*f;h[x+248>>3]=E*f;h[x+256>>3]=r;h[x+264>>3]=D;h[x+272>>3]=C;h[x+280>>3]=f;e=w+64|0;d=w;t=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+72|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+104>>3]=1.0;e=w+160|0;d=w+112|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+240|0;d=w+168|0;t=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+296|0;d=w+248|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+304|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+336>>3]=1.0;e=w+456|0;d=w+344|0;t=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+512|0;d=w+464|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+568|0;d=w+520|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;u=0;do{t=0;do{d=A+(u*48|0)+(t<<3)|0;h[d>>3]=0.0;f=0.0;e=0;do{f=f+ +h[x+(u*96|0)+(e<<3)>>3]*+h[w+(e*48|0)+(t<<3)>>3];e=e+1|0}while((e|0)!=12);h[d>>3]=f;t=t+1|0}while((t|0)!=6);u=u+1|0}while((u|0)!=3);J=m+(s+v+l);K=p+(j+n+o);f=g+(k+q+r);g=+h[b>>3];j=+h[b+8>>3];k=+h[b+16>>3];l=+h[b+24>>3]+(J*g+K*j+f*k);m=+h[b+32>>3];n=+h[b+40>>3];o=+h[b+48>>3];p=+h[b+56>>3]+(J*m+K*n+f*o);q=+h[b+64>>3];r=+h[b+72>>3];s=+h[b+80>>3];f=+h[b+88>>3]+(J*q+K*r+f*s);if(f==0.0){Me(3,5089,y);e=-1}else{K=f*f;h[z>>3]=(g*f-l*q)/K;h[z+8>>3]=(f*j-l*r)/K;h[z+16>>3]=(f*k-l*s)/K;h[z+24>>3]=(f*m-p*q)/K;h[z+32>>3]=(f*n-p*r)/K;h[z+40>>3]=(f*o-p*s)/K;d=0;do{f=+h[z+(d*24|0)>>3];g=+h[z+(d*24|0)+8>>3];j=+h[z+(d*24|0)+16>>3];e=0;do{y=a+(d*48|0)+(e<<3)|0;h[y>>3]=0.0;K=f*+h[A+(e<<3)>>3]+0.0;h[y>>3]=K;K=K+g*+h[A+48+(e<<3)>>3];h[y>>3]=K;h[y>>3]=K+j*+h[A+96+(e<<3)>>3];e=e+1|0}while((e|0)!=6);d=d+1|0}while((d|0)!=2);e=0}i=B;return e|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j+24|0;g=j+12|0;f=j;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;b=Ue(f)|0;do if(b){a=Te(b,f)|0;if(!a){We(b)|0;d=-1;break}d=Te(b,g)|0;if(!d){We(b)|0;We(a)|0;d=-1;break}if((_e(a)|0)<0){We(b)|0;We(a)|0;We(d)|0;d=-1;break}else{Xe(h,a,d)|0;We(b)|0;We(a)|0;We(d)|0;d=0;break}}else d=-1;while(0);i=j;return d|0}function vf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;n=i;i=i+192|0;l=n+96|0;m=n;g=+h[b>>3];k=+h[b+8>>3];d=+h[b+16>>3];c=g*g+k*k+d*d;if(c==0.0){j=0.0;e=0.0;d=1.0;c=0.0}else{c=+P(+c);j=c;e=d/c;d=g/c;c=k/c}u=+h[b+24>>3];r=+h[b+32>>3];k=+h[b+40>>3];o=+R(+j);g=1.0-o;j=+S(+j);h[l>>3]=o+d*d*g;t=c*d*g;s=e*j;h[l+8>>3]=t-s;q=d*e*g;p=c*j;h[l+16>>3]=q+p;h[l+24>>3]=u;h[l+32>>3]=t+s;h[l+40>>3]=o+c*c*g;c=c*e*g;j=d*j;h[l+48>>3]=c-j;h[l+56>>3]=r;h[l+64>>3]=q-p;h[l+72>>3]=c+j;h[l+80>>3]=o+e*e*g;h[l+88>>3]=k;f=0;do{c=+h[a+(f<<5)>>3];d=+h[a+(f<<5)+8>>3];e=+h[a+(f<<5)+16>>3];b=0;do{h[m+(f<<5)+(b<<3)>>3]=c*+h[l+(b<<3)>>3]+d*+h[l+32+(b<<3)>>3]+e*+h[l+64+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=m+(f<<5)+24|0;h[b>>3]=+h[a+(f<<5)+24>>3]+ +h[b>>3];f=f+1|0}while((f|0)!=3);b=0;do{h[a+(b<<5)>>3]=+h[m+(b<<5)>>3];h[a+(b<<5)+8>>3]=+h[m+(b<<5)+8>>3];h[a+(b<<5)+16>>3]=+h[m+(b<<5)+16>>3];h[a+(b<<5)+24>>3]=+h[m+(b<<5)+24>>3];b=b+1|0}while((b|0)!=3);i=n;return 0}function wf(a){a=a|0;var b=0,d=0;b=Uj(136)|0;if(!b)b=0;else{d=0;do{h[b+(d<<5)>>3]=+h[a+(d<<5)>>3];h[b+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[b+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[b+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3);c[b+96>>2]=10;h[b+104>>3]=.10000000149011612;h[b+112>>3]=.9900000095367432;h[b+120>>3]=4.0;h[b+128>>3]=.5}return b|0}function xf(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{Vj(b);c[a>>2]=0;b=0}return b|0}function yf(a,b){a=a|0;b=+b;if(!a)a=-1;else{h[a+128>>3]=b;a=0}return a|0}function zf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=i;i=i+176|0;l=y+168|0;k=y+160|0;u=y+48|0;w=y+64|0;v=y;s=b+8|0;g=c[s>>2]|0;do if((g|0)>=3){x=Uj(g*96|0)|0;if(!x){Me(3,5109,k);g=-1;break}t=Uj(g<<4)|0;if(!t){Me(3,5109,l);Vj(x);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);q=b+4|0;l=u+8|0;d=a+104|0;n=a+120|0;o=a+112|0;p=a+96|0;m=0.0;r=0;a:while(1){Ne(a,e,w)|0;g=c[s>>2]|0;if((g|0)>0){j=0.0;k=0;do{if((sf(u,w,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=10;break a}g=c[b>>2]|0;A=+h[g+(k<<4)>>3]-+h[u>>3];z=+h[g+(k<<4)+8>>3]-+h[l>>3];j=j+(A*A+z*z);g=k<<1;h[t+(g<<3)>>3]=A;h[t+((g|1)<<3)>>3]=z;k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}else j=0.0;j=j/+(g|0);if(j<+h[d>>3]){k=24;break}if(((r|0)>0?j<+h[n>>3]:0)?j/m>+h[o>>3]:0){k=24;break}if((r|0)==(c[p>>2]|0)){k=24;break}if((g|0)>0){k=0;do{if((tf(x+(k*12<<3)|0,a,e,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=20;break a}k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}if((uf(v,t,x,g<<1)|0)<0){k=22;break}vf(e,v)|0;m=j;r=r+1|0}if((k|0)==10){Af(x,t);g=-1;break}else if((k|0)==20){Af(x,t);g=-1;break}else if((k|0)==22){Af(x,t);g=-1;break}else if((k|0)==24){h[f>>3]=j;Vj(x);Vj(t);g=0;break}}else g=-1;while(0);i=y;return g|0}function Af(a,b){a=a|0;b=b|0;Vj(a);Vj(b);return}function Bf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+192|0;n=G+184|0;m=G+176|0;l=G+168|0;g=G+160|0;B=G+48|0;D=G+64|0;C=G;A=b+8|0;k=c[A>>2]|0;do if((k|0)>=4){o=~~(+(k|0)*+h[a+128>>3])+-1|0;o=(o|0)<3?3:o;F=Uj(k*96|0)|0;if(!F){Me(3,5109,g);g=-1;break}E=Uj(k<<4)|0;if(!E){Me(3,5109,l);Vj(F);g=-1;break}g=k<<3;z=Uj(g)|0;if(!z){Me(3,5109,m);Vj(F);Vj(E);g=-1;break}y=Uj(g)|0;if(!y){Me(3,5109,n);Vj(F);Vj(E);Vj(z);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);w=b+4|0;x=B+8|0;n=y+(o<<3)|0;d=a+104|0;o=a+120|0;t=a+112|0;u=a+96|0;r=0.0;v=0;a:while(1){Ne(a,e,D)|0;g=c[A>>2]|0;if((g|0)>0){k=0;do{if((sf(B,D,(c[w>>2]|0)+(k*24|0)|0)|0)<0){k=14;break a}g=c[b>>2]|0;q=+h[g+(k<<4)>>3]-+h[B>>3];s=+h[g+(k<<4)+8>>3]-+h[x>>3];g=k<<1;h[E+(g<<3)>>3]=q;h[E+((g|1)<<3)>>3]=s;s=q*q+s*s;h[y+(k<<3)>>3]=s;h[z+(k<<3)>>3]=s;k=k+1|0;g=c[A>>2]|0}while((k|0)<(g|0))}rj(y,g,8,1);s=+h[n>>3]*4.0;s=s<16.0?16.0:s;k=c[A>>2]|0;q=s/6.0;if((k|0)>0){j=0.0;g=0;do{p=+h[y+(g<<3)>>3];if(p>s)p=q;else{p=1.0-p/s;p=q*(1.0-p*(p*p))}j=j+p;g=g+1|0}while((g|0)<(k|0))}else j=0.0;j=j/+(k|0);if(j<+h[d>>3]){k=36;break}if(((v|0)>0?j<+h[o>>3]:0)?j/r>+h[t>>3]:0){k=36;break}if((v|0)==(c[u>>2]|0)){k=36;break}if((k|0)>0){m=0;g=0;do{p=+h[z+(m<<3)>>3];if(p<=s){k=g*6|0;l=F+(k<<3)|0;if((tf(l,a,e,(c[w>>2]|0)+(m*24|0)|0)|0)<0){k=28;break a}r=1.0-p/s;r=r*r;h[l>>3]=+h[l>>3]*r;l=F+((k|1)<<3)|0;h[l>>3]=+h[l>>3]*r;l=F+(k+2<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+3<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+4<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+5<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+6<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+7<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+8<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+9<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+10<<3)|0;h[l>>3]=r*+h[l>>3];k=F+(k+11<<3)|0;h[k>>3]=r*+h[k>>3];k=m<<1;h[E+(g<<3)>>3]=r*+h[E+(k<<3)>>3];h[E+(g+1<<3)>>3]=r*+h[E+((k|1)<<3)>>3];k=c[A>>2]|0;g=g+2|0}m=m+1|0}while((m|0)<(k|0))}else g=0;if((g|0)<6){k=32;break}if((uf(C,E,F,g)|0)<0){k=34;break}vf(e,C)|0;r=j;v=v+1|0}if((k|0)==14){Cf(F,E,z,y);g=-1;break}else if((k|0)==28){Cf(F,E,z,y);g=-1;break}else if((k|0)==32){Cf(F,E,z,y);g=-1;break}else if((k|0)==34){Cf(F,E,z,y);g=-1;break}else if((k|0)==36){h[f>>3]=j;Vj(F);Vj(E);Vj(z);Vj(y);g=0;break}}else g=-1;while(0);i=G;return g|0}function Cf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vj(a);Vj(b);Vj(c);Vj(d);return}function Df(a,b){a=a|0;b=b|0;var c=0.0;c=+h[a>>3]-+h[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0;U=i;i=i+64|0;D=U+48|0;z=U+40|0;y=U+32|0;x=U+24|0;u=U+16|0;o=U+8|0;l=U;a:do if((e|0)>=4){g=0;while(1){if((g|0)>=(e|0))break;if(+h[d+(g*24|0)+16>>3]!=0.0){g=-1;break a}else g=g+1|0}if((((((((!(+h[a>>3]==0.0)?!(+h[a+32>>3]!=0.0):0)?(B=a+40|0,!(+h[B>>3]==0.0)):0)?!(+h[a+64>>3]!=0.0):0)?!(+h[a+72>>3]!=0.0):0)?!(+h[a+80>>3]!=1.0):0)?!(+h[a+24>>3]!=0.0):0)?!(+h[a+56>>3]!=0.0):0)?!(+h[a+88>>3]!=0.0):0){g=e<<1;C=Re(g,8)|0;if(!C){Me(3,5124,l);g=-1;break}w=Re(g,1)|0;if(!w){We(C)|0;Me(3,5150,o);g=-1;break}if(e){g=c[C>>2]|0;l=c[w>>2]|0;o=0;do{Z=d+(o*24|0)|0;V=o<<4;h[g+(V<<3)>>3]=+h[Z>>3];Y=d+(o*24|0)+8|0;h[g+((V|1)<<3)>>3]=+h[Y>>3];h[g+((V|2)<<3)>>3]=1.0;h[g+((V|3)<<3)>>3]=0.0;h[g+((V|4)<<3)>>3]=0.0;h[g+((V|5)<<3)>>3]=0.0;X=b+(o<<4)|0;h[g+((V|6)<<3)>>3]=-(+h[Z>>3]*+h[X>>3]);h[g+((V|7)<<3)>>3]=-(+h[Y>>3]*+h[X>>3]);h[g+((V|8)<<3)>>3]=0.0;h[g+((V|9)<<3)>>3]=0.0;h[g+((V|10)<<3)>>3]=0.0;h[g+((V|11)<<3)>>3]=+h[Z>>3];h[g+((V|12)<<3)>>3]=+h[Y>>3];h[g+((V|13)<<3)>>3]=1.0;W=b+(o<<4)+8|0;h[g+((V|14)<<3)>>3]=-(+h[Z>>3]*+h[W>>3]);h[g+((V|15)<<3)>>3]=-(+h[Y>>3]*+h[W>>3]);V=o<<1;h[l+(V<<3)>>3]=+h[X>>3];h[l+((V|1)<<3)>>3]=+h[W>>3];o=o+1|0}while((o|0)!=(e|0))}e=Ue(C)|0;if(!e){We(C)|0;We(w)|0;Me(3,5176,u);g=-1;break}o=Te(e,C)|0;if(!o){We(C)|0;We(w)|0;We(e)|0;Me(3,5202,x);g=-1;break}l=Te(e,w)|0;if(!l){We(C)|0;We(w)|0;We(e)|0;We(o)|0;Me(3,5228,y);g=-1;break}if((_e(o)|0)<0){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5254,z);g=-1;break}g=Te(o,l)|0;if(!g){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5280,D);g=-1;break}Z=c[g>>2]|0;p=+h[Z+48>>3];S=+h[a+48>>3];t=+h[B>>3];j=(+h[Z+24>>3]-p*S)/t;s=+h[a+16>>3];T=+h[a+8>>3];r=+h[a>>3];q=(+h[Z>>3]-p*s-j*T)/r;k=+h[Z+56>>3];m=(+h[Z+32>>3]-S*k)/t;n=(+h[Z+8>>3]-s*k-T*m)/r;t=(+h[Z+40>>3]-S)/t;r=(+h[Z+16>>3]-s-T*t)/r;We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;We(g)|0;T=+P(+(p*p+(j*j+q*q)));s=+P(+(k*k+(m*m+n*n)));q=q/T;j=j/T;p=p/T;n=n/s;m=m/s;k=k/s;s=(T+s)*.5;r=r/s;T=1.0/s;if(T<0.0){O=-j;k=-k;m=-m;p=-p;n=-n;Q=-q;S=-r;R=-T}else{O=j;Q=q;S=r;R=t/s}j=k*O-m*p;q=n*p-k*Q;r=m*Q-n*O;s=+P(+(r*r+(j*j+q*q)));do if(!(s==0.0)){t=j/s;q=q/s;j=r/s;N=k*p+(m*O+n*Q);N=N<0.0?-N:N;N=(+P(+(N+1.0))+ +P(+(1.0-N)))*.5;if(Q*q-O*t!=0.0){g=0;E=Q;v=O;F=p;I=t;H=q}else{Z=Q*j-p*t!=0.0;g=Z?1:2;E=Z?Q:p;v=Z?p:O;F=Z?O:Q;I=Z?t:j;H=Z?j:q;j=Z?q:t}r=E*H;s=v*I;q=r-s;if(q==0.0){q=O;j=Q;break}G=(v*j-F*H)/q;A=N*H/q;r=s-r;q=(E*j-F*I)/r;r=N*I/r;s=G*G+q*q+1.0;t=G*A+q*r;v=t*t-s*(A*A+r*r+-1.0);if(v<0.0){q=O;j=Q;break}M=+P(+v);L=(M-t)/s;F=A+G*L;K=r+q*L;M=(-t-M)/s;G=A+G*M;r=r+q*M;Z=(g|0)==1;q=Z?H:j;s=Z?j:H;J=Z?L:K;L=Z?K:L;K=Z?M:r;H=Z?r:M;Z=(g|0)==2&(Z^1);r=Z?I:q;q=Z?q:I;M=Z?L:F;L=Z?F:L;j=Z?H:G;I=Z?G:H;if(n*s-m*q!=0.0){g=0;E=n;v=m;F=k;H=q;A=s}else{Z=n*r-k*q!=0.0;g=Z?1:2;E=Z?n:k;v=Z?k:m;F=Z?m:n;H=Z?q:r;A=Z?r:s;r=Z?s:q}s=E*A;t=v*H;q=s-t;if(q==0.0){q=O;j=Q;break}G=(v*r-F*A)/q;A=N*A/q;q=t-s;v=(E*r-F*H)/q;q=N*H/q;r=G*G+v*v+1.0;s=G*A+v*q;t=s*s-r*(A*A+q*q+-1.0);if(t<0.0){q=O;j=Q;break}t=+P(+t);k=(t-s)/r;Q=A+G*k;O=q+v*k;t=(-s-t)/r;p=A+G*t;n=q+v*t;Z=(g|0)==1;m=Z?k:O;k=Z?O:k;v=Z?t:n;t=Z?n:t;Z=(g|0)==2&(Z^1);n=Z?k:Q;k=Z?Q:k;A=Z?t:p;t=Z?p:t;p=L*k+(J*m+M*n);p=p<0.0?-p:p;q=L*t+(J*v+M*A);q=q<0.0?-q:q;r=I*k+(K*m+j*n);r=r<0.0?-r:r;s=I*t+(K*v+j*A);s=s<0.0?-s:s;if(p>3]=j;h[f+32>>3]=q;h[f+64>>3]=p;h[f+8>>3]=n;h[f+40>>3]=m;h[f+72>>3]=k;h[f+16>>3]=M/Q;h[f+48>>3]=N/Q;h[f+80>>3]=O/Q;h[f+24>>3]=S;h[f+56>>3]=R;h[f+88>>3]=T;g=0}else g=-1}else g=-1;while(0);i=U;return g|0}function Ff(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function Gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,0))}function Hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,1))}function If(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+208|0;z=F+200|0;y=F+192|0;A=F+96|0;B=F;C=e+4|0;p=c[C>>2]|0;q=e+112|0;r=e+120|0;if((p|0)>0){u=c[e>>2]|0;v=(d|0)>0;w=(d|0)>0;x=0;do{if(!(c[u+(x*320|0)+4>>2]|0)){if(v){k=c[u+(x*320|0)>>2]|0;l=0;j=-1;do{if((c[b+(l<<8)+8>>2]|0)==(k|0)?(n=+h[b+(l<<8)+40>>3],!(n<+h[q>>3])):0)if(!((j|0)!=-1?!(+h[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{l=u+(x*320|0)+312|0;m=u+(x*320|0)|0;if(w){o=0;j=-1;do{k=c[b+(o<<8)+12>>2]|0;if((k|0)==0?(t=b+(o<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=l;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)E=20}else if((k|0)==(c[m>>2]|0))E=20;if((E|0)==20){E=0;g=+h[b+(o<<8)+48>>3];if(!(g<+h[r>>3]))if(!((j|0)!=-1?!(+h[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}x=x+1|0}while((x|0)<(p|0))}if((p|0)>0){q=0;j=0;p=0;k=0;while(1){l=c[e>>2]|0;m=c[l+(q*320|0)+304>>2]|0;do if((m|0)<0)l=p;else{o=b+(m<<8)|0;if(+ke(a,o,+h[l+(q*320|0)+8>>3],B)>4.0){c[(c[e>>2]|0)+(q*320|0)+304>>2]=-1;l=b+(m<<8)+236|0;if(c[l>>2]|0){l=p;break}c[l>>2]=7;l=p;break}l=c[o>>2]|0;if((k|0)==0|(p|0)<(l|0)){j=0;do{h[A+(j<<5)>>3]=+h[B+(j<<5)>>3];h[A+(j<<5)+8>>3]=+h[B+(j<<5)+8>>3];h[A+(j<<5)+16>>3]=+h[B+(j<<5)+16>>3];h[A+(j<<5)+24>>3]=+h[B+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3);j=q}else l=p;k=k+1|0}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=l}}else{j=0;k=0}do if((k|0)!=0?(k|0)>=(c[e+128>>2]|0):0){Ne(A,(c[e>>2]|0)+(j*320|0)+112|0,B)|0;p=k<<2;r=Uj(k<<6)|0;if(!r){Me(3,5472,y);rb(1)}q=Uj(k*96|0)|0;if(!q){Me(3,5472,z);rb(1)}l=c[C>>2]|0;if((l|0)>0){m=c[e>>2]|0;o=0;j=0;do{k=c[m+(o*320|0)+304>>2]|0;if((k|0)>=0){y=c[b+(k<<8)+16>>2]|0;d=(4-y|0)%4|0;z=j<<3;h[r+(z<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|1)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(5-y|0)%4|0;h[r+((z|2)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|3)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(6-y|0)%4|0;h[r+((z|4)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|5)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];y=(7-y|0)%4|0;h[r+((z|6)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)>>3];h[r+((z|7)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)+8>>3];z=j*12|0;h[q+(z<<3)>>3]=+h[m+(o*320|0)+208>>3];h[q+((z|1)<<3)>>3]=+h[m+(o*320|0)+216>>3];h[q+((z|2)<<3)>>3]=+h[m+(o*320|0)+224>>3];h[q+((z|3)<<3)>>3]=+h[m+(o*320|0)+232>>3];h[q+(z+4<<3)>>3]=+h[m+(o*320|0)+240>>3];h[q+(z+5<<3)>>3]=+h[m+(o*320|0)+248>>3];h[q+(z+6<<3)>>3]=+h[m+(o*320|0)+256>>3];h[q+(z+7<<3)>>3]=+h[m+(o*320|0)+264>>3];h[q+(z+8<<3)>>3]=+h[m+(o*320|0)+272>>3];h[q+(z+9<<3)>>3]=+h[m+(o*320|0)+280>>3];y=c[e>>2]|0;h[q+(z+10<<3)>>3]=+h[y+(o*320|0)+288>>3];h[q+(z+11<<3)>>3]=+h[y+(o*320|0)+296>>3];j=j+1|0}o=o+1|0}while((o|0)<(l|0))}m=e+104|0;k=(f|0)!=0;if(!(c[m>>2]|0)){j=e+8|0;g=+me(a,B,r,q,p,j);if(k&g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,j)}}}}Vj(q);Vj(r)}else{g=+me(a,B,r,q,p,A);l=e+8|0;n=+me(a,l,r,q,p,l);j=g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}}}}}else if(j){j=0;do{h[e+8+(j<<5)>>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;while(0);Vj(q);Vj(r)}if(g<20.0){c[m>>2]=1;break}c[m>>2]=0;m=c[C>>2]|0;if((m|0)>0){j=c[e>>2]|0;l=0;do{k=c[j+(l*320|0)+304>>2]|0;if((k|0)>=0?(D=b+(k<<8)+236|0,(c[D>>2]|0)==0):0)c[D>>2]=8;l=l+1|0}while((l|0)<(m|0))}}else E=38;while(0);if((E|0)==38){c[e+104>>2]=0;g=-1.0}i=F;return +g}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0;U=i;i=i+2544|0;S=U+208|0;R=U+200|0;G=U+184|0;Q=U+176|0;F=U+168|0;E=U+152|0;P=U+144|0;D=U+136|0;M=U+128|0;L=U+120|0;K=U+112|0;C=U+104|0;j=U+96|0;g=U+88|0;f=U+80|0;e=U+72|0;d=U+64|0;H=U;I=U+2280|0;J=U+232|0;z=U+224|0;O=U+220|0;A=U+216|0;B=U+212|0;T=_i(a,5306)|0;a:do if(!T){c[d>>2]=a;Me(3,5308,d);d=ri(c[(qi()|0)>>2]|0)|0;c[e>>2]=5367;c[e+4>>2]=d;Me(3,5361,e);d=0}else{Kf(I,T);c[f>>2]=O;if((kj(I,5368,f)|0)!=1){c[g>>2]=a;Me(3,5371,g);Wi(T)|0;d=0;break}d=c[O>>2]|0;N=Uj(d*320|0)|0;if(!N){Me(3,5472,j);rb(1)}r=H+8|0;s=H+16|0;t=H+24|0;u=H+32|0;v=H+40|0;w=H+48|0;x=H+56|0;y=(b|0)==0;b:do if((d|0)>0){d=0;f=0;c:while(1){Kf(I,T);e=N+(d*320|0)|0;g=N+(d*320|0)+312|0;c[C>>2]=g;c[C+4>>2]=z;if((kj(I,5489,C)|0)==1){q=c[g>>2]|0;c[e>>2]=(q&-32768|0)==0&0==0?q&32767:0;c[N+(d*320|0)+4>>2]=1;f=f|2}else{if(y){e=10;break}if(!(Qe(J,a,2048,1)|0)){e=12;break}Cj(J,I,2047-(Bj(J)|0)|0)|0;q=Ke(b,J)|0;c[e>>2]=q;if((q|0)<0){e=14;break}c[N+(d*320|0)+4>>2]=0;f=f|1}Kf(I,T);e=N+(d*320|0)+8|0;c[D>>2]=e;if((kj(I,5785,D)|0)!=1){e=18;break}Kf(I,T);o=N+(d*320|0)+16|0;p=N+(d*320|0)+24|0;q=N+(d*320|0)+40|0;c[E>>2]=o;c[E+4>>2]=p;c[E+8>>2]=N+(d*320|0)+32;c[E+12>>2]=q;if((kj(I,5894,E)|0)!=4){c[F>>2]=A;c[F+4>>2]=B;if((kj(I,5910,F)|0)==2)g=0;else{e=21;break}}else g=1;do{Kf(I,T);c[G>>2]=N+(d*320|0)+16+(g<<5);c[G+4>>2]=N+(d*320|0)+16+(g<<5)+8;c[G+8>>2]=N+(d*320|0)+16+(g<<5)+16;c[G+12>>2]=N+(d*320|0)+16+(g<<5)+24;if((kj(I,5894,G)|0)!=4){e=23;break c}g=g+1|0}while((g|0)<3);Oe(o,N+(d*320|0)+112|0)|0;W=+h[e>>3];V=W*-.5;h[H>>3]=V;W=W*.5;h[r>>3]=W;h[s>>3]=W;h[t>>3]=W;h[u>>3]=W;h[v>>3]=V;h[w>>3]=V;h[x>>3]=V;e=N+(d*320|0)+48|0;g=N+(d*320|0)+56|0;j=N+(d*320|0)+72|0;k=N+(d*320|0)+80|0;l=N+(d*320|0)+88|0;m=N+(d*320|0)+104|0;n=0;do{V=+h[H+(n<<4)>>3];W=+h[H+(n<<4)+8>>3];h[N+(d*320|0)+208+(n*24|0)>>3]=+h[q>>3]+(+h[o>>3]*V+ +h[p>>3]*W);h[N+(d*320|0)+208+(n*24|0)+8>>3]=+h[j>>3]+(+h[e>>3]*V+ +h[g>>3]*W);h[N+(d*320|0)+208+(n*24|0)+16>>3]=+h[m>>3]+(+h[k>>3]*V+ +h[l>>3]*W);n=n+1|0}while((n|0)!=4);d=d+1|0;if((d|0)>=(c[O>>2]|0))break b}if((e|0)==10){c[K>>2]=a;c[K+4>>2]=I;Me(3,5496,K)}else if((e|0)==12){c[L>>2]=a;Me(3,5624,L)}else if((e|0)==14){c[M>>2]=a;c[M+4>>2]=J;Me(3,5708,M)}else if((e|0)==18){c[P>>2]=a;c[P+4>>2]=d+1;Me(3,5789,P)}else if((e|0)==21){c[Q>>2]=a;c[Q+4>>2]=d+1;Me(3,5916,Q)}else if((e|0)==23){c[R>>2]=a;c[R+4>>2]=d+1;Me(3,5916,R)}Wi(T)|0;Vj(N);d=0;break a}else f=0;while(0);Wi(T)|0;d=Uj(136)|0;if(!d){Me(3,5472,S);rb(1)}c[d>>2]=N;c[d+4>>2]=c[O>>2];c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);h[d+112>>3]=.5;h[d+120>>3]=.5}while(0);i=U;return d|0}function Kf(b,c){b=b|0;c=c|0;var d=0,e=0;a:do if(Zi(b,256,c)|0)while(1){d=Bj(b)|0;b:do if(d)while(1){d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0;if(!d)break b}while(0);switch(a[b>>0]|0){case 0:case 35:break;default:break a}if(!(Zi(b,256,c)|0))break a}while(0);return}function Lf(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+400|0;n=r+296|0;q=r+200|0;o=r+128|0;p=r;k=c[a>>2]|0;f=c[a+4>>2]|0;if((bf(a+8|0,n,q)|0)<0)Me(3,6025,r+392|0);else{j=+(f+-1|0);f=n+32|0;h[f>>3]=j*+h[n+64>>3]-+h[f>>3];f=n+40|0;h[f>>3]=j*+h[n+72>>3]-+h[f>>3];f=n+48|0;h[f>>3]=j*+h[n+80>>3]-+h[f>>3];f=n+56|0;h[f>>3]=j*+h[n+88>>3]-+h[f>>3];g=+h[n+80>>3];f=0;do{h[o+(f*24|0)>>3]=+h[n+(f<<5)>>3]/g;h[o+(f*24|0)+8>>3]=+h[n+(f<<5)+8>>3]/g;h[o+(f*24|0)+16>>3]=+h[n+(f<<5)+16>>3]/g;f=f+1|0}while((f|0)!=3);g=+(k+-1|0);h[p>>3]=+h[o>>3]*2.0/g;h[p+8>>3]=+h[o+8>>3]*2.0/g;h[p+16>>3]=+h[o+16>>3]*2.0/g+-1.0;k=p+24|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+40>>3]=+h[o+32>>3]*2.0/j;h[p+48>>3]=+h[o+40>>3]*2.0/j+-1.0;k=p+56|0;g=d-b;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[p+80>>3]=(b+d)/g;h[p+88>>3]=d*-2.0*b/g;k=p+96|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+112>>3]=1.0;h[p+120>>3]=0.0;g=+h[q+24>>3];j=+h[q+56>>3];d=+h[q+88>>3];k=0;do{b=+h[p+(k<<5)>>3];f=p+(k<<5)+8|0;a=p+(k<<5)+16|0;l=+h[f>>3];m=+h[a>>3];n=0;do{h[e+((n<<2)+k<<3)>>3]=b*+h[q+(n<<3)>>3]+l*+h[q+32+(n<<3)>>3]+m*+h[q+64+(n<<3)>>3];n=n+1|0}while((n|0)!=3);h[e+(k+12<<3)>>3]=+h[p+(k<<5)+24>>3]+(b*g+ +h[f>>3]*j+ +h[a>>3]*d);k=k+1|0}while((k|0)!=4)}i=r;return}function Mf(a){a=a|0;c[496]=a;return}function Nf(){return c[496]|0}function Of(a){a=a|0;var b=0,d=0;b=a+212|0;d=c[b>>2]|0;if(d){ze(d)|0;Qd(c[b>>2]|0)|0;c[b>>2]=0}b=a+224|0;if(c[b>>2]|0){Ld(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){kf(b)|0;c[b>>2]=0}return}function Pf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(!(Cg(2044,d)|0))a=-1;else{f=Dg(2044,d)|0;a=f+196|0;b=c[a>>2]|0;if(b){Vj(b);c[a>>2]=0;c[f+200>>2]=0}Of(f);Ce(c[f+216>>2]|0)|0;Eg(2044,d)|0;d=f+248|0;e=f+252|0;a=c[d>>2]|0;if((c[e>>2]|0)!=(a|0)){b=0;do{Ff(c[a+(b<<3)+4>>2]|0)|0;b=b+1|0;a=c[d>>2]|0}while(b>>>0<(c[e>>2]|0)-a>>3>>>0)}Fg(d);Lh(d);Fg(f+248|0);Lh(f);a=0}i=g;return a|0}function Qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+208|0;g=h+192|0;f=h;e=h+196|0;if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;if((ef(d,1,f,h+184|0)|0)<0){if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;c[g>>2]=d;Me(3,6093,g);d=-1}else{d=c[521]|0;c[521]=d+1;c[e>>2]=d;ik(Gg(2064,e)|0,f|0,184)|0}i=h;return d|0}function Rf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;m=n+24|0;l=n+16|0;j=n+8|0;f=n;d=n+32|0;e=n+28|0;c[d>>2]=a;c[e>>2]=b;do if((Cg(2044,d)|0)!=0?(k=Dg(2044,d)|0,(Hg(2064,e)|0)!=0):0){g=k+8|0;ik(g|0,Gg(2064,e)|0,184)|0;e=c[g>>2]|0;d=k+204|0;b=c[k+12>>2]|0;a=k+208|0;if(!((e|0)==(c[d>>2]|0)?(b|0)==(c[a>>2]|0):0)){c[f>>2]=e;c[f+4>>2]=b;Me(2,6152,f);af(g,c[d>>2]|0,c[a>>2]|0,g)|0}Of(k);d=jf(g,15)|0;a=k+192|0;c[a>>2]=d;if(!d){Me(3,6199,j);d=-1;break}d=Md(d)|0;b=k+212|0;c[b>>2]=d;if(!d){Me(3,6237,l);d=-1;break}Nd(d,2)|0;l=Jd(g)|0;c[k+224>>2]=l;if(!l){Me(3,6274,m);d=-1;break}else{ye(c[b>>2]|0,c[k+216>>2]|0)|0;Lf(c[a>>2]|0,+h[k+232>>3],+h[k+240>>3],k+264|0);d=0;break}}else d=-1;while(0);i=n;return d|0}function Sf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;g=j;e=j+12|0;c[e>>2]=b;if(Cg(2044,e)|0){f=Dg(2044,e)|0;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;b=f+216|0;e=Ke(c[b>>2]|0,d)|0;c[f+260>>2]=e;if((e|0)<0){c[g>>2]=d;Me(3,6312,g);Ce(c[b>>2]|0)|0;Me(3,6358,h);e=-1}}else e=-1;i=j;return e|0}function Tf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;f=l+8|0;e=l+20|0;k=l;c[e>>2]=b;do if(Cg(2044,e)|0){j=Dg(2044,e)|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=c[j+212>>2]|0;d=j+216|0;h=j+220|0;e=Jf(e,c[d>>2]|0)|0;c[h>>2]=e;if(!e){Me(3,6402,f);Ce(c[d>>2]|0)|0;Me(3,6429,g);e=-1;break}switch(c[e+108>>2]|0){case 0:{Zd(b,0)|0;break}case 1:{Zd(b,2)|0;break}default:Zd(b,3)|0}b=j+248|0;d=j+252|0;f=c[d>>2]|0;e=f-(c[b>>2]|0)>>3;g=k;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=e;c[k+4>>2]=c[h>>2];if((f|0)==(c[j+256>>2]|0)){Ig(b,k);break}else{j=k;e=c[j>>2]|0;j=c[j+4>>2]|0;k=f;c[k>>2]=e;c[k+4>>2]=j;c[d>>2]=(c[d>>2]|0)+8;break}}else e=-1;while(0);i=l;return e|0}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,(b|0)>=0):0)?(f=c[e+248>>2]|0,(c[e+252>>2]|0)-f>>3>>>0>b>>>0):0)d=c[(c[f+(b<<3)+4>>2]|0)+4>>2]|0;else d=-1;i=g;return d|0}function Vf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{b=Dg(2044,b)|0;b=(c[b+252>>2]|0)-(c[b+248>>2]|0)>>3}i=d;return b|0}function Wf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+232>>3]=b;i=e;return}function Xf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+232>>3];i=e;return +b}function Yf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+240>>3]=b;i=e;return}function Zf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+240>>3];i=e;return +b}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Zd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6478,e)}i=f;return}function $f(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(ae(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ag(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,g=0,j=0,k=0;k=i;i=i+16|0;j=k;d=k+8|0;c[d>>2]=a;if((((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,!(b<=0.0|b>=1.0)):0)?(f=b,g=c[e+212>>2]|0,(g|0)!=0):0)?(be(g,f)|0)==0:0){h[j>>3]=f;Me(1,6513,j)}i=k;return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f;c[b>>2]=a;if((Cg(2044,b)|0)!=0?(d=c[(Dg(2044,b)|0)+212>>2]|0,(d|0)!=0):0){a=(ce(d,e)|0)==0;i=f;return +(a?+h[e>>3]:-1.0)}i=f;return -1.0}function cg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)_d(c[(Dg(2044,d)|0)+212>>2]|0,b)|0;i=e;return}function dg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{$d(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Sd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6544,e)}i=f;return}function fg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Td(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+4|0;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,b>>>0<=255):0)?(Ud(c[e+212>>2]|0,b)|0)==0:0){c[f>>2]=b;Me(1,6569,f)}i=g;return}function hg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Vd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Pd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6590,e)}i=f;return}function jg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Wd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Cg(2044,d)|0))b=0;else{a=(b|0)!=0;Od(c[(Dg(2044,d)|0)+212>>2]|0,a&1)|0;c[e>>2]=a?6616:6620;Me(1,6625,e)}i=f;return b|0}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else b=c[(c[(Dg(2044,b)|0)+212>>2]|0)+4834148>>2]|0;i=d;return b|0}function mg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else{Rd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Xd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6647,e)}i=f;return}function og(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Yd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function pg(a,b){a=a|0;b=b|0;var c=0;c=0;do{h[b+(c<<5)>>3]=+h[a+(c<<5)>>3];h[b+(c<<5)+8>>3]=+h[a+(c<<5)+8>>3];h[b+(c<<5)+16>>3]=+h[a+(c<<5)+16>>3];h[b+(c<<5)+24>>3]=+h[a+(c<<5)+24>>3];c=c+1|0}while((c|0)!=3);return}function qg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+ke(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function rg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+le(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,264,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function sg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=c[(Dg(2044,e)|0)+212>>2]|0;if((c[e+44>>2]|0)>(b|0)){c[((b|0)<0?8:e+48+(b<<8)|0)+16>>2]=d;e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;o=+h[33];h[d+168>>3]=o;k=+h[34];h[d+176>>3]=k;n=+h[35];h[d+184>>3]=n;j=+h[36];h[d+192>>3]=j;m=+h[37];h[d+200>>3]=m;g=+h[38];h[d+208>>3]=g;l=+h[39];h[d+216>>3]=l;f=+h[40];h[d+224>>3]=f;h[d+56>>3]=(o+n+m+l)*.25;h[d+64>>3]=(k+j+g+f)*.25;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function ug(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Hf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function vg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Gf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function wg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=c[522]|0;else{b=Dg(2044,b)|0;b=de(c[b+212>>2]|0,c[b+196>>2]|0)|0}i=d;return b|0}function xg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=2088;else b=(c[(Dg(2044,b)|0)+212>>2]|0)+44|0;i=d;return c[b>>2]|0}function yg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){a=Dg(2044,e)|0;e=c[a+248>>2]|0;if((b|0)<0?1:(c[a+252>>2]|0)-e>>3>>>0<=b>>>0){e=c[524]|0;break}e=c[e+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[e+4>>2]|0)<=(d|0)){e=c[523]|0;break}else{e=c[e>>2]|0;pg(e+(d*320|0)+16|0,264);Lb(0,c[e+(d*320|0)+304>>2]|0,c[e+(d*320|0)>>2]|0,c[e+(d*320|0)+4>>2]|0,+(+h[e+(d*320|0)+8>>3]))|0;e=0;break}}else e=c[522]|0;while(0);i=f;return e|0}function zg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;Qa(1,c[d>>2]|0,c[d+4>>2]|0,c[d+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[d+20>>2]|0,c[d+24>>2]|0,+(+h[d+32>>3]),+(+h[d+40>>3]),+(+h[d+48>>3]),+(+h[d+56>>3]),+(+h[d+64>>3]),+(+h[d+72>>3]),+(+h[d+80>>3]),+(+h[d+88>>3]),+(+h[d+96>>3]),+(+h[d+104>>3]),+(+h[d+112>>3]),+(+h[d+120>>3]),+(+h[d+128>>3]),+(+h[d+136>>3]),+(+h[d+144>>3]),+(+h[d+152>>3]),+(+h[d+160>>3]),+(+h[d+168>>3]),+(+h[d+176>>3]),+(+h[d+184>>3]),+(+h[d+192>>3]),+(+h[d+200>>3]),+(+h[d+208>>3]),+(+h[d+216>>3]),+(+h[d+224>>3]),c[d+240>>2]|0)|0;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+8|0;f=h+12|0;e=c[525]|0;c[525]=e+1;c[f>>2]=e;f=Dg(2044,f)|0;c[f>>2]=e;c[f+204>>2]=a;c[f+208>>2]=b;j=$(a<<2,b)|0;b=f+200|0;c[b>>2]=j;a=f+196|0;c[a>>2]=Uj(j)|0;j=Ae()|0;c[f+216>>2]=j;if(!j)Me(3,8285,h);Rf(e,d)|0;c[g>>2]=c[b>>2];Me(1,8322,g);Kb(2,c[f>>2]|0,c[a>>2]|0,c[b>>2]|0,f+264|0,264)|0;i=h;return c[f>>2]|0}function Bg(a){a=a|0;var b=0;a=i;i=i+16|0;b=a;Jg(8591,7);Kg(8597,3);Lg(8606,2);Lg(8617,3);Mg(8633,4);Kg(8651,4);Ng(8671,5);Jg(8683,8);Mg(8700,5);Jg(8720,9);Jg(8738,10);Mg(8760,6);Mg(8783,7);Kg(8812,6);Kg(8825,7);Jg(8838,11);Mg(8857,8);Mg(8867,9);Kg(8880,8);Kg(8893,9);Og(8912,10);Pg(8924,1);Qg(8936,1);Rg(8959,1);Qg(8982,2);Rg(9004,2);Sg(9026,1);Kg(9043,10);Sg(9060,2);Kg(9073,11);Sg(9086,3);Kg(9110,12);Tg(9134,3);Rg(9147,3);Sg(9160,4);Kg(9178,13);Sg(9196,5);Kg(9212,14);Sg(9228,6);Kg(9245,15);Ug(9262,2088);Ug(9291,2096);Ug(9319,2092);Cb(9352,680,0);Cb(9369,680,1);Cb(9385,680,0);Cb(9407,680,0);Cb(9432,680,1);Cb(9457,680,1);Cb(9482,680,100);Cb(9509,680,0);Cb(9535,680,1);Cb(9561,680,0);Cb(9588,680,0);Cb(9615,680,1);Cb(9641,680,2);Cb(9666,680,3);Cb(9704,680,4);Cb(9741,680,0);Cb(9775,680,0);Cb(9799,680,1);Cb(9825,680,2);Cb(9852,680,2);Cb(9886,680,5);h[b>>3]=.5;Vg(9904,b);Cb(9925,680,0);Cb(9944,680,1);Cb(9962,680,2);Cb(9980,680,3);Cb(9999,680,4);Cb(10021,680,3);Cb(10040,680,515);Cb(10069,680,259);Cb(10097,680,4);Cb(10116,680,772);Cb(10146,680,1028);Cb(10176,680,0);Cb(10207,680,1);Cb(10243,680,2);Cb(10277,680,3);Cb(10315,680,0);Cb(10348,680,1);Cb(10395,680,2);Cb(10437,680,3);Cb(10480,680,4);Cb(10532,680,5);Cb(10583,680,6);Cb(10628,680,7);Cb(10667,680,8);Cb(10712,680,9);i=a;return}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Dg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Cg(a,b)|0;if(!d){wh(f,a,b);xh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;b=Cg(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];uh(a,d)|0;b=1}i=f;return b|0}function Fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=a+4|0;a=c[b>>2]|0;if((a|0)!=(d|0)){do a=a+-8|0;while((a|0)!=(d|0));c[b>>2]=a}Lh(d)}return}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Hg(a,b)|0;if(!d){qh(f,a,b);rh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;g=a+4|0;d=c[a>>2]|0;f=((c[g>>2]|0)-d>>3)+1|0;if(f>>>0>536870911)Jh(a);e=d;d=(c[a+8>>2]|0)-e|0;if(d>>3>>>0<268435455){d=d>>2;d=d>>>0>>0?f:d}else d=536870911;nh(h,d,(c[g>>2]|0)-e>>3,a+8|0);g=h+8|0;f=c[g>>2]|0;d=b;e=c[d+4>>2]|0;b=f;c[b>>2]=c[d>>2];c[b+4>>2]=e;c[g>>2]=f+8;oh(a,h);ph(h);i=j;return}function Jg(a,b){a=a|0;b=b|0;Oa(a|0,4,2200,10911,1,b|0);return}function Kg(a,b){a=a|0;b=b|0;Oa(a|0,2,2192,10801,10,b|0);return}function Lg(a,b){a=a|0;b=b|0;Oa(a|0,3,2180,10906,12,b|0);return}function Mg(a,b){a=a|0;b=b|0;Oa(a|0,3,2168,10906,13,b|0);return}function Ng(a,b){a=a|0;b=b|0;Oa(a|0,2,2160,10801,11,b|0);return}function Og(a,b){a=a|0;b=b|0;Oa(a|0,2,2152,10797,7,b|0);return}function Pg(a,b){a=a|0;b=b|0;Oa(a|0,1,2148,10794,16,b|0);return}function Qg(a,b){a=a|0;b=b|0;Oa(a|0,3,2136,10789,1,b|0);return}function Rg(a,b){a=a|0;b=b|0;Oa(a|0,2,2128,10785,1,b|0);return}function Sg(a,b){a=a|0;b=b|0;Oa(a|0,3,2116,10780,1,b|0);return}function Tg(a,b){a=a|0;b=b|0;Oa(a|0,3,2104,10775,2,b|0);return}function Ug(a,b){a=a|0;b=b|0;Cb(a|0,680,c[b>>2]|0);return}function Vg(a,b){a=a|0;b=b|0;Cb(a|0,720,~~+h[b>>3]>>>0|0);return}function Wg(){c[511]=0;c[512]=0;c[513]=0;c[514]=0;g[515]=1.0;ub(11,2044,n|0)|0;c[516]=0;c[517]=0;c[518]=0;c[519]=0;g[520]=1.0;ub(12,2064,n|0)|0;Bg(0);return}function Xg(a){a=a|0;$g(a);return}function Yg(a){a=a|0;Zg(a);return}function Zg(a){a=a|0;var b=0;_g(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function _g(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Lh(a)}while((b|0)!=0);return}function $g(a){a=a|0;var b=0;ah(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function ah(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Fg(a+264|0);Lh(a)}while((b|0)!=0);return}function bh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b,c);return}function dh(a,b){a=a|0;b=b|0;return +(+Ub[a&3](b))}function eh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function fh(a){a=a|0;return Vb[a&1]()|0}function gh(a,b){a=a|0;b=b|0;Wb[a&15](b);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;i=i+16|0;d=c;ih(d,b);a=Yb[a&31](d)|0;bk(d);i=c;return a|0}function ih(a,b){a=a|0;b=b|0;ak(a,b+4|0,c[b>>2]|0);return}function jh(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b,c)|0}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;e=d;ih(e,c);a=cc[a&15](b,e)|0;bk(e);i=d;return a|0}function lh(a,b){a=a|0;b=b|0;return Yb[a&31](b)|0}function mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b,c,d)|0}function nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+12>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=Kh(b<<3)|0;c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[a+12>>2]=e+(b<<3);return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;g=a+4|0;d=b+4|0;f=(c[g>>2]|0)-e|0;h=(c[d>>2]|0)+(0-(f>>3)<<3)|0;c[d>>2]=h;ik(h|0,e|0,f|0)|0;f=c[a>>2]|0;c[a>>2]=c[d>>2];c[d>>2]=f;f=b+8|0;e=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=e;f=a+8|0;a=b+12|0;e=c[f>>2]|0;c[f>>2]=c[a>>2];c[a>>2]=e;c[b>>2]=c[d>>2];return}function ph(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=a+8|0;b=c[e>>2]|0;if((b|0)!=(d|0)){do b=b+-8|0;while((b|0)!=(d|0));c[e>>2]=b}b=c[a>>2]|0;if(b)Lh(b);return}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(200)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,184)|0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function rh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;sh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return} +function zd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Dd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Jd(a){a=a|0;return Kd(a+8|0)|0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Uj(4)|0;if(!b){Me(3,5472,d);rb(1)}a=wf(a)|0;c[b>>2]=a;if(!a){Vj(b);b=0}i=d;return b|0}function Ld(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{xf(b)|0;Vj(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function Md(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=Uj(7062432)|0;if(!b){Me(3,5472,d);rb(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;h[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=Uj($(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Me(3,5472,d+8|0);rb(1)}else{c[b+7062384>>2]=0;Nd(b,2)|0;Od(b,0)|0;c[b+7062388>>2]=-1;Pd(b,0)|0;c[b+7062392>>2]=7;c[b+7062396>>2]=0;i=d;return b|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;a:do if(a){e=a+4|0;if((c[e>>2]|0)!=(b|0)){switch(b|0){case 11:case 10:case 9:case 8:case 7:case 6:case 4:case 3:case 2:case 1:case 0:{f=0;break}case 14:case 13:case 12:case 5:{f=1;break}default:{c[d>>2]=b;Me(3,3936,d);d=-1;break a}}c[e>>2]=b;c[a+8>>2]=Pe(b)|0;d=a+7062408|0;b=c[d>>2]|0;if(b){pe(b);c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[e>>2]|0,0)|0}d=a+24|0;b=c[d>>2]|0;if(!f)switch(b|0){case 1:{c[d>>2]=4;d=0;break a}case 4:{c[d>>2]=3;d=0;break a}default:{d=0;break a}}else switch(b|0){case 0:{c[d>>2]=1;d=0;break a}case 3:{c[d>>2]=4;d=0;break a}default:{d=0;break a}}}else d=0}else d=-1;while(0);i=g;return d|0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;Vj(c[d>>2]|0);c[d>>2]=0;d=0;break}b=Uj($(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Me(3,5472,e);rb(1)}else d=0}else d=0;else d=-1;while(0);i=f;return d|0}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e){pe(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[a+4>>2]|0,0)|0;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:{b=0;break}default:{Me(3,3985,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[760+(b<<2)>>2];Me(3,4059,h);b=0}else b=0}else b=0}else b=-1;i=j;return b|0}function Qd(a){a=a|0;var b=0,d=0;if(!a)b=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d){pe(d);c[b>>2]=0}Vj(c[a+4834144>>2]|0);Vj(c[a+4834148>>2]|0);Vj(a);b=0}return b|0}function Rd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function Sd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function Td(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ud(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Vd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Wd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Xd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Yd(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Zd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function _d(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function $d(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function ae(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function be(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){h[a+7062416>>3]=b;a=0}else a=-1;return a|0}function ce(a,b){a=a|0;b=b|0;if(!a)a=-1;else{h[b>>3]=+h[a+7062416>>3];a=0}return a|0}function de(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0.0,S=0.0;Q=i;i=i+80|0;M=Q+32|0;G=Q+24|0;z=Q;y=Q+52|0;D=Q+40|0;L=Q+64|0;P=a+44|0;c[P>>2]=0;J=a+7062388|0;f=c[J>>2]|0;a:do if((f|0)==4){I=a+7062396|0;e=c[I>>2]|0;do if((e|0)>0){f=4;e=e+-1|0}else{C=a+16|0;F=c[C>>2]|0;E=a+7062400|0;A=(c[E>>2]|0)+F|0;A=(A|0)>255?255:A;c[y>>2]=A;H=a+7062404|0;B=F-(c[H>>2]|0)|0;B=(B|0)<0?0:B;c[y+4>>2]=B;c[y+8>>2]=F;e=a+36|0;f=a+40|0;g=a+4|0;k=a+12|0;l=a+20|0;m=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+7062384|0;s=a+24|0;t=a+32|0;u=a+7062416|0;v=a+48|0;w=a+7062424|0;x=0;do{if((xe(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[a>>2]|0,c[k>>2]|0,c[y+(x<<2)>>2]|0,c[l>>2]|0,m,0)|0)<0){e=-1;break a}if((fe(c[e>>2]|0,c[f>>2]|0,m,c[l>>2]|0,1e6,70,1.0,p,q)|0)<0){e=-1;break a}if((je(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,p,c[q>>2]|0,c[r>>2]|0,c[l>>2]|0,c[s>>2]|0,(c[t>>2]|0)+184|0,+h[u>>3],v,P,c[w>>2]|0)|0)<0){e=-1;break a}c[D+(x<<2)>>2]=c[P>>2];x=x+1|0}while((x|0)<3);if((c[a>>2]|0)==1){N=c[D+4>>2]|0;g=c[D+8>>2]|0;f=c[D>>2]|0;c[z>>2]=B;c[z+4>>2]=N;c[z+8>>2]=F;c[z+12>>2]=g;c[z+16>>2]=A;c[z+20>>2]=f;Me(3,4153,z)}else{f=c[D>>2]|0;g=c[D+8>>2]|0}e=c[D+4>>2]|0;if((f|0)>(g|0)|(e|0)>(g|0)){f=(f|0)>=(e|0)?A:B;c[C>>2]=f;e=f-F|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[H>>2]=e;if((c[a>>2]|0)==1){c[G>>2]=f;Me(3,4229,G)}f=c[J>>2]|0;e=c[a+7062392>>2]|0;break}e=c[E>>2]|0;f=c[H>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+F|0)>254){c[E>>2]=1;e=1}if((F|0)<=(e|0))c[H>>2]=1;c[I>>2]=c[a+7062392>>2];N=47;break a}while(0);c[I>>2]=e;N=30}else N=30;while(0);b:do if((N|0)==30){c:do switch(f|0){case 3:{f=a+7062408|0;e=we(c[f>>2]|0,b,9,-7)|0;if((e|0)<0)break b;e=c[f>>2]|0;f=a+4834144|0;e=xe(c[e>>2]|0,c[e+8>>2]|0,c[e+12>>2]|0,5,c[a>>2]|0,c[a+12>>2]|0,0,0,f,c[e+4>>2]|0)|0;if((e|0)<0)break b;e=a+36|0;g=a+40|0;k=a+20|0;break}case 2:case 1:{g=a+7062396|0;e=c[g>>2]|0;if((e|0)>0){c[g>>2]=e+-1;N=44;break c}e=c[a+7062408>>2]|0;if((f|0)==1)e=ue(e,b,L)|0;else e=ve(e,b,L)|0;if((e|0)<0)break b;e=a+16|0;if((c[a>>2]|0)==1?(K=d[L>>0]|0,(c[e>>2]|0)!=(K|0)):0){c[M>>2]=(c[J>>2]|0)==1?4281:4288;c[M+4>>2]=K;Me(3,4293,M)}c[e>>2]=d[L>>0];c[g>>2]=c[a+7062392>>2];N=44;break}default:N=44}while(0);if((N|0)==44){e=a+36|0;g=a+40|0;k=a+20|0;f=a+4834144|0;if((xe(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[k>>2]|0,f,0)|0)<0){e=-1;break}}l=a+15416|0;m=a+15408|0;if((fe(c[e>>2]|0,c[g>>2]|0,f,c[k>>2]|0,1e6,70,1.0,l,m)|0)>=0?(je(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,l,c[m>>2]|0,c[a+7062384>>2]|0,c[k>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+h[a+7062416>>3],a+48|0,P,c[a+7062424>>2]|0)|0)>=0:0)N=47;else e=-1}while(0);d:do if((N|0)==47){t=a+28|0;if((c[t>>2]|0)==1){ee(a);e=0;break}u=a+4818296|0;r=a+24|0;q=c[u>>2]|0;if((q|0)>0){s=0;do{f=c[P>>2]|0;g=a+4818304+(s*264|0)+56|0;k=a+4818304+(s*264|0)+64|0;if((f|0)>0){o=+(c[a+4818304+(s*264|0)>>2]|0);e=-1;l=0;n=.5;while(1){j=+(c[a+48+(l<<8)>>2]|0);R=o/j;if(!(R<.7|R>1.43)?(R=+h[a+48+(l<<8)+56>>3]-+h[g>>3],O=+h[a+48+(l<<8)+64>>3]-+h[k>>3],O=(R*R+O*O)/j,O=(f|0)){p=e;break}else n=j}}else p=-1;e:do if((p|0)>-1){m=c[r>>2]|0;switch(m|0){case 2:case 1:case 0:break;case 4:case 3:{g=a+48+(p<<8)+40|0;j=+h[a+4818304+(s*264|0)+40>>3];if(!(+h[g>>3]>3]<+h[f>>3]))break e}else{f=a+4818304+(s*264|0)+48|0;e=a+48+(p<<8)+48|0}h[g>>3]=j;c[a+48+(p<<8)+8>>2]=c[a+4818304+(s*264|0)+8>>2];h[e>>3]=+h[f>>3];c[a+48+(p<<8)+12>>2]=c[a+4818304+(s*264|0)+12>>2];e=-1;n=1.0e8;g=0;while(1){j=0.0;f=0;do{b=(f+g|0)%4|0;o=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(o*o+R*R);f=f+1|0}while((f|0)!=4);f=j>2]=(b+(c[a+4818304+(s*264|0)+20>>2]|0)|0)%4|0;c[a+48+(p<<8)+24>>2]=(b+(c[a+4818304+(s*264|0)+24>>2]|0)|0)%4|0;break e}default:{e=-1;break d}}e=a+48+(p<<8)+32|0;o=+h[a+4818304+(s*264|0)+32>>3];if(+h[e>>3]>3]=o;l=c[a+4818304+(s*264|0)+4>>2]|0;c[a+48+(p<<8)+4>>2]=l;g=a+4818304+(s*264|0)+16|0;e=-1;n=1.0e8;k=0;while(1){j=0.0;f=0;do{b=(f+k|0)%4|0;S=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(S*S+R*R);f=f+1|0}while((f|0)!=4);if(j>2]|0)|0)%4|0;else j=n;k=k+1|0;if((k|0)==4)break;else n=j}c[a+48+(p<<8)+16>>2]=e;if(m>>>0<2){c[a+48+(p<<8)+8>>2]=l;h[a+48+(p<<8)+40>>3]=o;c[a+48+(p<<8)+20>>2]=e;break}else{c[a+48+(p<<8)+12>>2]=l;h[a+48+(p<<8)+48>>3]=o;c[a+48+(p<<8)+24>>2]=e;break}}}while(0);s=s+1|0}while((s|0)<(q|0))}ee(a);if((c[u>>2]|0)>0){g=0;e=0;do{f=a+4818304+(g*264|0)|0;N=a+4818304+(g*264|0)+256|0;b=(c[N>>2]|0)+1|0;c[N>>2]=b;if((b|0)<4){if((g|0)!=(e|0))ik(a+4818304+(e*264|0)|0,f|0,264)|0;e=e+1|0}g=g+1|0}while((g|0)<(c[u>>2]|0))}else e=0;c[u>>2]=e;e=c[P>>2]|0;f:do if((e|0)>0){m=0;do{k=a+48+(m<<8)|0;g=c[a+48+(m<<8)+4>>2]|0;if((g|0)>=0){l=c[u>>2]|0;g:do if((l|0)>0){f=0;do{if((c[a+4818304+(f*264|0)+4>>2]|0)==(g|0))break g;f=f+1|0}while((f|0)<(l|0))}else f=0;while(0);if((f|0)==(l|0)){if((l|0)==60)break f;c[u>>2]=l+1}ik(a+4818304+(f*264|0)|0,k|0,256)|0;c[a+4818304+(f*264|0)+256>>2]=1}m=m+1|0;e=c[P>>2]|0}while((m|0)<(e|0))}while(0);if((c[t>>2]|0)!=2?(c[u>>2]|0)>0:0){l=0;while(1){g=a+4818304+(l*264|0)+56|0;k=a+4818304+(l*264|0)+64|0;h:do if((e|0)>0){n=+(c[a+4818304+(l*264|0)>>2]|0);f=0;do{j=+(c[a+48+(f<<8)>>2]|0);S=n/j;if(!(S<.7|S>1.43)?(R=+h[a+48+(f<<8)+56>>3]-+h[g>>3],S=+h[a+48+(f<<8)+64>>3]-+h[k>>3],(R*R+S*S)/j<.5):0)break h;f=f+1|0}while((f|0)<(e|0))}else f=0;while(0);if((f|0)==(e|0)){ik(a+48+(e<<8)|0,a+4818304+(l*264|0)|0,256)|0;e=(c[P>>2]|0)+1|0;c[P>>2]=e}l=l+1|0;if((l|0)>=(c[u>>2]|0)){e=0;break}}}else e=0}while(0);i=Q;return e|0}function ee(a){a=a|0;var b=0,d=0,e=0,f=0;switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+8>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}case 2:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+12>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}default:{e=c[a+44>>2]|0;if((e|0)>0){f=0;do{b=a+48+(f<<8)+8|0;if((c[b>>2]|0)>-1?+h[a+48+(f<<8)+40>>3]<.5:0){c[b>>2]=-1;d=0}else d=1;b=a+48+(f<<8)+12|0;if(((c[b>>2]|0)>-1?+h[a+48+(f<<8)+48>>3]<.5:0)?(c[b>>2]=-1,(d|0)==0):0)c[a+48+(f<<8)+236>>2]=6;f=f+1|0}while((f|0)<(e|0))}}}return}function fe(a,b,d,e,f,g,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;k=k|0;l=l|0;var m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+96|0;F=L+56|0;H=L+48|0;G=L+8|0;I=L;K=(e|0)==1;if(K){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;g=(g|0)/4|0}c[l>>2]=0;C=d+8|0;D=a+-2|0;z=b+-2|0;A=d+1179664|0;a:do if((c[C>>2]|0)>0){B=0;while(1){w=d+12+(B<<2)|0;y=c[w>>2]|0;b:do if(((((!((y|0)<(g|0)|(y|0)>(f|0))?(E=d+131084+(B<<4)|0,(c[E>>2]|0)!=1):0)?(c[d+131084+(B<<4)+4>>2]|0)!=(D|0):0)?(c[d+131084+(B<<4)+8>>2]|0)!=1:0)?(c[d+131084+(B<<4)+12>>2]|0)!=(z|0):0)?(ge(c[d>>2]|0,a,0,A,B+1|0,E,k+((c[l>>2]|0)*80048|0)|0)|0)>=0:0){t=c[w>>2]|0;x=c[l>>2]|0;u=k+(x*80048|0)+28|0;b=c[u>>2]|0;v=k+(x*80048|0)+40028|0;n=c[v>>2]|0;y=k+(x*80048|0)+24|0;o=(c[y>>2]|0)+-1|0;if((o|0)>1){r=0;s=1;e=0;while(1){p=(c[k+(x*80048|0)+28+(s<<2)>>2]|0)-b|0;p=$(p,p)|0;q=(c[k+(x*80048|0)+40028+(s<<2)>>2]|0)-n|0;p=($(q,q)|0)+p|0;q=(p|0)>(r|0);e=q?s:e;s=s+1|0;if((s|0)>=(o|0))break;else r=q?p:r}}else e=0;m=+(t|0)/.75*.01*j;c[H>>2]=0;c[I>>2]=0;c:do if((he(u,v,0,e,m,F,H)|0)>=0?(he(u,v,e,(c[y>>2]|0)+-1|0,m,G,I)|0)>=0:0){b=c[H>>2]|0;n=c[I>>2]|0;do if((b|0)==1&(n|0)==1){b=c[G>>2]|0;n=c[F>>2]|0}else{if((b|0)>1&(n|0)==0){b=(e|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,0,b,m,F,H)|0)<0)break c;if((he(u,v,b,e,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=e;n=c[F>>2]|0;e=c[G>>2]|0;break}if(!((b|0)==0&(n|0)>1))break c;b=(e+-1+(c[y>>2]|0)|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,e,b,m,F,H)|0)<0)break c;if((he(u,v,b,(c[y>>2]|0)+-1|0,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=c[G>>2]|0;n=e;e=c[F>>2]|0}while(0);c[k+(x*80048|0)+80028>>2]=0;c[k+(x*80048|0)+80032>>2]=n;c[k+(x*80048|0)+80036>>2]=e;c[k+(x*80048|0)+80040>>2]=b;c[k+(x*80048|0)+80044>>2]=(c[y>>2]|0)+-1;c[k+((c[l>>2]|0)*80048|0)>>2]=c[w>>2];y=c[l>>2]|0;h[k+(y*80048|0)+8>>3]=+h[d+655376+(B<<4)>>3];h[k+(y*80048|0)+16>>3]=+h[d+655376+(B<<4)+8>>3];y=y+1|0;c[l>>2]=y;if((y|0)==60){e=60;break a}else break b}while(0)}while(0);B=B+1|0;if((B|0)>=(c[C>>2]|0)){J=4;break}}}else J=4;while(0);if((J|0)==4)e=c[l>>2]|0;if((e|0)>0){o=0;do{a=o;o=o+1|0;g=k+(a*80048|0)+16|0;n=k+(a*80048|0)|0;if((o|0)<(e|0)){j=+h[k+(a*80048|0)+8>>3];f=o;do{M=j-+h[k+(f*80048|0)+8>>3];m=+h[g>>3]-+h[k+(f*80048|0)+16>>3];m=M*M+m*m;e=c[n>>2]|0;a=k+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(m<+((e|0)/4|0|0))c[a>>2]=0}else if(m<+((b|0)/4|0|0))c[n>>2]=0;f=f+1|0;e=c[l>>2]|0}while((f|0)<(e|0))}}while((o|0)<(e|0))}if((e|0)>0){f=0;do{if(!(c[k+(f*80048|0)>>2]|0)){a=f+1|0;if((a|0)<(e|0)){e=f;b=a;while(1){ik(k+(e*80048|0)|0,k+(b*80048|0)|0,80048)|0;e=c[l>>2]|0;a=b+1|0;if((a|0)<(e|0)){e=b;b=a}else break}}e=e+-1|0;c[l>>2]=e}f=f+1|0}while((f|0)<(e|0))}if(K&(e|0)>0){b=0;while(1){c[k>>2]=c[k>>2]<<2;e=k+8|0;h[e>>3]=+h[e>>3]*2.0;e=k+16|0;h[e>>3]=+h[e>>3]*2.0;e=k+24|0;if((c[e>>2]|0)>0){a=0;do{K=k+28+(a<<2)|0;c[K>>2]=c[K>>2]<<1;K=k+40028+(a<<2)|0;c[K>>2]=c[K>>2]<<1;a=a+1|0}while((a|0)<(c[e>>2]|0))}b=b+1|0;if((b|0)>=(c[l>>2]|0))break;else k=k+80048|0}}i=L;return 0}function ge(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+80032|0;p=w+16|0;o=w+8|0;l=w;u=w+40024|0;v=w+24|0;t=c[h+8>>2]|0;e=c[h>>2]|0;h=c[h+4>>2]|0;a:do if((e|0)<=(h|0)){k=e;e=a+(($(t,d)|0)+e<<1)|0;while(1){s=b[e>>1]|0;if(s<<16>>16>0?(c[f+((s<<16>>16)+-1<<2)>>2]|0)==(g|0):0){n=k;break}if((k|0)<(h|0)){k=k+1|0;e=e+2|0}else{x=6;break a}}q=j+24|0;c[q>>2]=1;r=j+28|0;c[r>>2]=n;s=j+40028|0;c[s>>2]=t;f=t;m=n;k=1;e=5;while(1){h=(e+5|0)%8|0;e=0;while(1){g=c[776+(h<<2)>>2]|0;l=c[808+(h<<2)>>2]|0;if((b[a+(l+m+($(g+f|0,d)|0)<<1)>>1]|0)>0){e=g;g=h;break}e=e+1|0;h=(h+1|0)%8|0;if((e|0)>=8){x=11;break}}if((x|0)==11){x=0;if((e|0)==8){x=13;break}l=c[808+(h<<2)>>2]|0;e=c[776+(h<<2)>>2]|0;g=h}c[j+28+(k<<2)>>2]=l+m;h=c[q>>2]|0;c[j+40028+(h<<2)>>2]=e+(c[j+40028+(h+-1<<2)>>2]|0);e=c[q>>2]|0;h=j+28+(e<<2)|0;if((c[h>>2]|0)==(n|0)?(c[j+40028+(e<<2)>>2]|0)==(t|0):0){f=e;x=16;break}k=e+1|0;c[q>>2]=k;if((k|0)==9999){x=19;break}f=c[j+40028+(e<<2)>>2]|0;m=c[h>>2]|0;e=g}if((x|0)==13){Me(3,4347,o);e=-1;break}else if((x|0)==16){if((f|0)>1){l=0;g=1;h=0;while(1){e=(c[j+28+(g<<2)>>2]|0)-n|0;e=$(e,e)|0;k=(c[j+40028+(g<<2)>>2]|0)-t|0;e=($(k,k)|0)+e|0;k=(e|0)>(l|0);h=k?g:h;g=g+1|0;if((g|0)>=(f|0))break;else l=k?e:l}}else h=0;if((h|0)>0){e=0;do{c[u+(e<<2)>>2]=c[j+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}if((h|0)<(f|0)){e=h;do{t=e-h|0;c[j+28+(t<<2)>>2]=c[j+28+(e<<2)>>2];c[j+40028+(t<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(c[q>>2]|0))}if((h|0)>0){e=0;do{t=e-h|0;c[j+28+((c[q>>2]|0)+t<<2)>>2]=c[u+(e<<2)>>2];c[j+40028+((c[q>>2]|0)+t<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}c[j+28+(c[q>>2]<<2)>>2]=c[r>>2];c[j+40028+(c[q>>2]<<2)>>2]=c[s>>2];c[q>>2]=(c[q>>2]|0)+1;e=0;break}else if((x|0)==19){Me(3,4354,p);e=-1;break}}else x=6;while(0);if((x|0)==6){Me(3,4340,l);e=-1}i=w;return e|0}function he(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0.0;i=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;o=+(i-q|0);l=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(l-r|0);k=+(($(r,q)|0)-($(l,i)|0)|0);i=d+1|0;if((i|0)<(e|0)){j=0.0;l=i;do{s=k+(o*+(c[a+(l<<2)>>2]|0)+m*+(c[b+(l<<2)>>2]|0));s=s*s;r=s>j;j=r?s:j;i=r?l:i;l=l+1|0}while((l|0)<(e|0))}else j=0.0;if(j/(o*o+m*m)>f)if(((he(a,b,d,i,f,g,h)|0)>=0?(n=c[h>>2]|0,(n|0)<=5):0)?(c[g+(n<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(he(a,b,i,e,f,g,h)|0)>=0):0)p=7;else i=-1;else p=7;if((p|0)==7)i=0;return i|0}function ie(a,b,d,e,f,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+16|0;t=y+4|0;u=y;v=nf(2)|0;w=nf(2)|0;x=Re(2,2)|0;q=0;a:while(1){r=q;q=q+1|0;s=c[e+(q<<2)>>2]|0;l=c[e+(r<<2)>>2]|0;p=+(s+1-l|0)*.05+.5;l=~~(+(l|0)+p);s=~~(+(s|0)-p)-l|0;n=s+1|0;d=Re(n,2)|0;if((s|0)>-1){s=0;do{z=s+l|0;if((mf(f,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),t,u)|0)<0){l=10;break a}z=s<<1;A=c[d>>2]|0;h[A+(z<<3)>>3]=+g[t>>2];h[A+((z|1)<<3)>>3]=+g[u>>2];s=s+1|0}while((s|0)<(n|0))}if((Ye(d,x,v,w)|0)<0){l=10;break}A=c[x>>2]|0;o=+h[A+8>>3];h[j+(r*24|0)>>3]=o;p=-+h[A>>3];h[j+(r*24|0)+8>>3]=p;A=c[w>>2]|0;h[j+(r*24|0)+16>>3]=-(o*+h[A>>3]+ +h[A+8>>3]*p);We(d)|0;if((q|0)>=4){l=7;break}}b:do if((l|0)==7){We(x)|0;of(w)|0;of(v)|0;q=0;while(1){d=(q+3|0)%4|0;l=j+(d*24|0)|0;m=+h[j+(q*24|0)+8>>3];n=j+(q*24|0)|0;o=+h[j+(d*24|0)+8>>3];p=+h[l>>3]*m-+h[n>>3]*o;if(+O(+p)<.0001){d=-1;break b}A=j+(q*24|0)+16|0;z=j+(d*24|0)+16|0;h[k+(q<<4)>>3]=(o*+h[A>>3]-m*+h[z>>3])/p;h[k+(q<<4)+8>>3]=(+h[n>>3]*+h[z>>3]-+h[l>>3]*+h[A>>3])/p;q=q+1|0;if((q|0)>=4){d=0;break}}}else if((l|0)==10){We(d)|0;We(x)|0;of(w)|0;of(v)|0;d=-1}while(0);i=y;return d|0}function je(a,b,d,e,f,j,k,l,m,n,o,p,q,r){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;D=F+4|0;E=F;z=m>>>0<2;A=(m|0)==2;if((j|0)>0){C=0;s=0;do{c[p+(s<<8)>>2]=c[f+(C*80048|0)>>2];if((mf(n,+h[f+(C*80048|0)+8>>3],+h[f+(C*80048|0)+16>>3],D,E)|0)>=0?(h[p+(s<<8)+56>>3]=+g[D>>2],h[p+(s<<8)+64>>3]=+g[E>>2],B=p+(s<<8)+168|0,(ie(f+(C*80048|0)+28|0,f+(C*80048|0)+40028|0,c[f+(C*80048|0)+24>>2]|0,f+(C*80048|0)+80028|0,n,p+(s<<8)+72|0,B)|0)>=0):0){t=p+(s<<8)+8|0;u=p+(s<<8)+20|0;v=p+(s<<8)+40|0;w=p+(s<<8)+12|0;x=p+(s<<8)+24|0;y=p+(s<<8)+48|0;switch(De(k,l,m,a,b,d,e,n,B,o,t,u,v,w,x,y,r,p+(s<<8)+240|0,p+(s<<8)+248|0)|0){case 0:{c[p+(s<<8)+236>>2]=0;break}case -1:{c[p+(s<<8)+236>>2]=2;break}case -2:{c[p+(s<<8)+236>>2]=3;break}case -3:{c[p+(s<<8)+236>>2]=4;break}case -4:{c[p+(s<<8)+236>>2]=5;break}case -5:{c[p+(s<<8)+236>>2]=9;break}case -6:{c[p+(s<<8)+236>>2]=1;break}default:{}}if(!z){if(A){c[p+(s<<8)+4>>2]=c[w>>2];c[p+(s<<8)+16>>2]=c[x>>2];h[p+(s<<8)+32>>3]=+h[y>>3]}}else{c[p+(s<<8)+4>>2]=c[t>>2];c[p+(s<<8)+16>>2]=c[u>>2];h[p+(s<<8)+32>>3]=+h[v>>3]}s=s+1|0}C=C+1|0}while((C|0)<(j|0))}else s=0;c[q>>2]=s;i=F;return 0}function ke(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;k=i;i=i+288|0;m=k+200|0;l=k+104|0;f=k+264|0;j=k+8|0;g=k;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=d*-.5;h[l>>3]=n;d=d*.5;h[l+8>>3]=d;h[l+16>>3]=0.0;h[l+24>>3]=d;h[l+32>>3]=d;h[l+40>>3]=0.0;h[l+48>>3]=d;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=4;if((Ef(c[a>>2]|0,m,l,4,j)|0)<0)d=1.0e8;else{p=(zf(c[a>>2]|0,f,j,e,g)|0)<0;d=p?1.0e8:+h[g>>3]}i=k;return +d}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;j=i;i=i+192|0;m=j+104|0;l=j+8|0;k=j+168|0;g=j;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=e*-.5;h[l>>3]=n;e=e*.5;h[l+8>>3]=e;h[l+16>>3]=0.0;h[l+24>>3]=e;h[l+32>>3]=e;h[l+40>>3]=0.0;h[l+48>>3]=e;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[k>>2]=m;c[k+4>>2]=l;c[k+8>>2]=4;b=(zf(c[a>>2]|0,k,d,f,g)|0)<0;i=j;return +(b?1.0e8:+h[g>>3])}function me(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((zf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function ne(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((Bf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Uj(2080)|0;a:do if(f){c[f+2068>>2]=d;b:do if(!e){switch(d|0){case 5:case 12:case 13:case 14:break;default:{g=4;break b}}c[f+2076>>2]=0}else g=4;while(0);do if((g|0)==4){g=Uj($(b,a)|0)|0;c[f>>2]=g;if(!g){Vj(f);f=0;break a}else{c[f+2076>>2]=1;break}}while(0);c[f+2072>>2]=e;c[f+4>>2]=0;c[f+8>>2]=a;c[f+12>>2]=b}while(0);return f|0}function pe(a){a=a|0;if(a){if(c[a+2076>>2]|0)Vj(c[a>>2]|0);Vj(c[a+4>>2]|0);Vj(a)}return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;g=k;f=c[b+2068>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:if(!(c[b+2072>>2]|0)){c[b>>2]=e;f=0;break a}else{ik(c[b>>2]|0,e|0,$(c[b+12>>2]|0,c[b+8>>2]|0)|0)|0;f=0;break a}default:{if((f&-2|0)==2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j|2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if((f&-3|0)==4){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|2)>>0]|0)+(d[e+(j|1)>>0]|0)+(d[e+(j|3)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if(f>>>0<2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j+1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j+2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+3|0}}switch(f|0){case 8:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+j>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 7:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+(j|1)>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 9:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;l=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&248)+10+(m<<5&224)+(l>>>3&28)+(l<<3&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 10:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){l=d[e+j>>0]|0;m=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((l&248)+12+(l<<5&224)+(m>>>3&24)+(m<<2&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 11:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&240)+24+(m<<4&240)+((d[e+(j|1)>>0]|0)&240)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}default:{Me(3,4361,g);f=-1;break a}}}}while(0);i=k;return f|0}function re(a,b){a=a|0;b=b|0;var e=0,f=0;if((a|0)!=0&(b|0)!=0?(qe(a,b)|0)>=0:0){ek(a+16|0,0,1024)|0;b=c[a>>2]|0;f=$(c[a+12>>2]|0,c[a+8>>2]|0)|0;e=b+f|0;if((f|0)>0){do{f=a+16+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}while(b>>>0>>0);b=0}else b=0}else b=-1;return b|0}function se(a,b){a=a|0;b=b|0;var d=0;b=re(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+16+(d<<2)>>2]|0)+b|0;c[a+1040+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function te(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0;if(!(e<0.0|e>1.0)){d=se(b,d)|0;if((d|0)>=0){i=~~(+($(c[b+12>>2]|0,c[b+8>>2]|0)|0)*e)>>>0;d=0;while(1){h=d&255;g=c[b+1040+(h<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}if((g|0)==(i|0))do d=d+1<<24>>24;while((c[b+1040+((d&255)<<2)>>2]|0)==(i|0));a[f>>0]=((d&255)+h|0)>>>1;d=0}}else d=-1;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=c|0;return te(a,b,.5,c)|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0;d=re(b,d)|0;if((d|0)>=0){d=1;f=0.0;do{f=f+ +(($(c[b+16+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+($(c[b+12>>2]|0,c[b+8>>2]|0)|0);l=0;h=0.0;d=0;j=0.0;m=0.0;while(1){g=c[b+16+(l<<2)>>2]|0;m=m+ +(g>>>0);if(m!=0.0){i=k-m;if(i==0.0)break;h=h+ +(($(l,g)|0)>>>0);n=h/m-(f-h)/i;i=n*(m*i*n);if(i>j)d=l&255;else i=j}else i=j;if((l&255)<<24>>24==-1)break;else{l=l+1|0;j=i}}a[e>>0]=d;d=0}return d|0}function we(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=re(b,e)|0;do if((e|0)>=0){t=b+4|0;if(!(c[t>>2]|0)){e=b+8|0;h=b+12|0;s=Uj($(c[h>>2]|0,c[e>>2]|0)|0)|0;c[t>>2]=s;if(!s){e=-1;break}else s=e}else{s=b+8|0;h=b+12|0}q=f>>1;r=0-q|0;e=c[h>>2]|0;if((e|0)>0){n=(q|0)<(r|0);o=(q|0)<(r|0);p=0;do{e=c[s>>2]|0;if((e|0)>0){m=0;do{if(n){i=0;f=0}else{i=0;l=r;f=0;while(1){j=l+p|0;if(((j|0)>=0?(j|0)<(c[h>>2]|0):0)?(u=$(e,j)|0,!o):0){k=r;while(1){j=k+m|0;if((j|0)>-1&(j|0)<(e|0)){i=i+1|0;f=(d[(c[b>>2]|0)+(u+j)>>0]|0)+f|0}if((k|0)<(q|0))k=k+1|0;else break}}if((l|0)<(q|0))l=l+1|0;else break}}l=($(e,p)|0)+m|0;a[(c[t>>2]|0)+l>>0]=(f|0)/(i|0)|0;m=m+1|0;e=c[s>>2]|0}while((m|0)<(e|0))}p=p+1|0;e=c[h>>2]|0}while((p|0)<(e|0))}if((g|0)!=0?($(e,c[s>>2]|0)|0)>0:0){e=0;do{b=(c[t>>2]|0)+e|0;a[b>>0]=(d[b>>0]|0)+g;e=e+1|0}while((e|0)<($(c[h>>2]|0,c[s>>2]|0)|0));e=0}else e=0}while(0);return e|0}function xe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;a:do switch(e|0){case 0:{switch(f|0){case 1:{if(j){k=Fc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=wc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=yc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Bc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Cc(a,b,c,g,i)|0;break a}case 8:{k=Ec(a,b,c,g,i)|0;break a}case 7:{k=Dc(a,b,c,g,i)|0;break a}case 9:{k=xc(a,b,c,g,i)|0;break a}case 10:{k=Ac(a,b,c,g,i)|0;break a}case 11:{k=zc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=nc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=pc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=sc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=tc(a,b,c,g,i)|0;break a}case 8:{k=vc(a,b,c,g,i)|0;break a}case 7:{k=uc(a,b,c,g,i)|0;break a}case 9:{k=oc(a,b,c,g,i)|0;break a}case 10:{k=rc(a,b,c,g,i)|0;break a}case 11:{k=qc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Yc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=Pc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Rc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Uc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Vc(a,b,c,g,i)|0;break a}case 8:{k=Xc(a,b,c,g,i)|0;break a}case 7:{k=Wc(a,b,c,g,i)|0;break a}case 9:{k=Qc(a,b,c,g,i)|0;break a}case 10:{k=Tc(a,b,c,g,i)|0;break a}case 11:{k=Sc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Gc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Ic(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Lc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Mc(a,b,c,g,i)|0;break a}case 8:{k=Oc(a,b,c,g,i)|0;break a}case 7:{k=Nc(a,b,c,g,i)|0;break a}case 9:{k=Hc(a,b,c,g,i)|0;break a}case 10:{k=Kc(a,b,c,g,i)|0;break a}case 11:{k=Jc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}case 1:{switch(f|0){case 1:{if(j){k=pd(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=gd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=id(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=ld(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=md(a,b,c,g,i)|0;break a}case 8:{k=od(a,b,c,g,i)|0;break a}case 7:{k=nd(a,b,c,g,i)|0;break a}case 9:{k=hd(a,b,c,g,i)|0;break a}case 10:{k=kd(a,b,c,g,i)|0;break a}case 11:{k=jd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Zc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=$c(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=cd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=dd(a,b,c,g,i)|0;break a}case 8:{k=fd(a,b,c,g,i)|0;break a}case 7:{k=ed(a,b,c,g,i)|0;break a}case 9:{k=_c(a,b,c,g,i)|0;break a}case 10:{k=bd(a,b,c,g,i)|0;break a}case 11:{k=ad(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Id(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=zd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Bd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Ed(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Fd(a,b,c,g,i)|0;break a}case 8:{k=Hd(a,b,c,g,i)|0;break a}case 7:{k=Gd(a,b,c,g,i)|0;break a}case 9:{k=Ad(a,b,c,g,i)|0;break a}case 10:{k=Dd(a,b,c,g,i)|0;break a}case 11:{k=Cd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=qd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=sd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=vd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=wd(a,b,c,g,i)|0;break a}case 8:{k=yd(a,b,c,g,i)|0;break a}case 7:{k=xd(a,b,c,g,i)|0;break a}case 9:{k=rd(a,b,c,g,i)|0;break a}case 10:{k=ud(a,b,c,g,i)|0;break a}case 11:{k=td(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}default:rb(0)}while(0);return k|0}function ye(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;d=0}else d=-1;return d|0}function ze(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;b=0}else b=-1;return b|0}function Ae(){return Be(16,50)|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+56|0;p=r+48|0;j=r+40|0;h=r+32|0;g=r+24|0;f=r+16|0;e=r+8|0;d=r;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){n=Uj(32)|0;if(!n){Me(3,5472,d);rb(1)}c[n>>2]=0;c[n+4>>2]=b;c[n+28>>2]=a;m=Uj(b<<2)|0;c[n+8>>2]=m;if(!m){Me(3,5472,e);rb(1)}d=b<<4;l=Uj(d)|0;c[n+12>>2]=l;if(!l){Me(3,5472,f);rb(1)}f=Uj(d)|0;k=n+20|0;c[k>>2]=f;if(!f){Me(3,5472,g);rb(1)}d=b<<5;g=Uj(d)|0;c[n+16>>2]=g;if(!g){Me(3,5472,h);rb(1)}h=Uj(d)|0;c[n+24>>2]=h;if(!h){Me(3,5472,j);rb(1)}e=$(a,a)|0;d=e*12|0;e=e<<2;if((b|0)>0){a=0;b:while(1){c[m+(a<<2)>>2]=0;f=a<<2;h=0;while(1){if((h|0)>=4)break;j=Uj(d)|0;g=h+f|0;c[l+(g<<2)>>2]=j;if(!j){d=18;break b}j=Uj(e)|0;c[(c[k>>2]|0)+(g<<2)>>2]=j;if(!j){d=20;break b}else h=h+1|0}a=a+1|0;if((a|0)>=(b|0)){o=n;break a}}if((d|0)==18){Me(3,5472,p);rb(1)}else if((d|0)==20){Me(3,5472,q);rb(1)}}else o=n}else o=0;while(0);i=r;return o|0}function Ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)b=-1;else{b=a+4|0;d=a+8|0;e=a+12|0;f=a+20|0;if((c[b>>2]|0)>0){g=0;do{if(c[(c[d>>2]|0)+(g<<2)>>2]|0)Le(a,g)|0;h=g<<2;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);i=1+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);i=2+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);h=3+h|0;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Vj(a);b=0}return b|0}function De(b,e,f,g,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;var y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+12448|0;A=L+12440|0;z=L+8|0;J=L;I=L+12312|0;K=L+24|0;do if((f+-2|0)>>>0<3){if((v|0)!=2830){y=v&255;if((Ee(e,2,y,y*3|0,g,j,k,l,m,n,o,K)|0)<0){c[s>>2]=-1;y=-6;break}y=Fe(K,y,s,t,u,v,w)|0;if(!x)break;c[x>>2]=0;c[x+4>>2]=0;break}if((Ee(e,2,14,42,g,j,k,l,m,n,.875,K)|0)<0){c[s>>2]=-1;y=-6;break}c[z>>2]=0;c[z+4>>2]=182;c[z+8>>2]=195;c[z+12>>2]=13;v=a[K+(c[z>>2]|0)>>0]|0;y=(v&255)>0?v:0;v=(v&255)<255?v:-1;H=a[K+(c[z+4>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+8>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+12>>2]|0)>>0]|0;y=((H&255)>(y&255)?H:y)&255;v=((H&255)<(v&255)?H:v)&255;a:do if((y-v|0)>=30){H=(y+v|0)>>>1;a[A>>0]=(d[K+(c[z>>2]|0)>>0]|0)>>>0>>0&1;a[A+1>>0]=(d[K+(c[z+4>>2]|0)>>0]|0)>>>0>>0&1;a[A+2>>0]=(d[K+(c[z+8>>2]|0)>>0]|0)>>>0>>0&1;a[A+3>>0]=(d[K+(c[z+12>>2]|0)>>0]|0)>>>0>>0&1;v=0;while(1){y=v+1|0;if(((a[A+v>>0]|0)==1?(a[A+((y|0)%4|0)>>0]|0)==1:0)?(a[A+((v+2|0)%4|0)>>0]|0)==0:0){G=v;break}if((y|0)<4)v=y;else{G=y;break}}switch(G|0){case 4:{c[t>>2]=0;h[u>>3]=-1.0;y=-3;v=0;z=0;break a}case 0:{z=119;y=255;v=0;do{D=v+-3|0;B=(v&-2|0)==12;C=v*14|0;A=0;do{if(((A+-3|D)>>>0>=8?(F=A&-2,(A|v)>>>0>=2):0)?!(B&((F|0)==0|(F|0)==12)):0){E=(d[K+(A+C)>>0]|0)-H|0;a[I+z>>0]=E>>>31;E=(E|0)>-1?E:0-E|0;z=z+-1|0;y=(E|0)<(y|0)?E:y}A=A+1|0}while((A|0)!=14);v=v+1|0}while((v|0)!=14);break}case 1:{z=119;y=255;v=0;do{D=v+-3|0;C=v&-2;B=(C|0)==0;C=(C|0)==12;A=13;while(1){if(((A+-3|D)>>>0>=8?(E=(A&-2|0)==12,!(B&E)):0)?!(C&(A>>>0<2|E)):0){F=(d[K+((A*14|0)+v)>>0]|0)-H|0;a[I+z>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;z=z+-1|0;y=(F|0)<(y|0)?F:y}if((A|0)>0)A=A+-1|0;else break}v=v+1|0}while((v|0)!=14);break}case 2:{v=119;y=255;D=13;while(1){B=D+-3|0;C=D>>>0<2|(D&-2|0)==12;A=D*14|0;z=13;while(1){if((z+-3|B)>>>0>=8?!((z|D)>>>0<2|C&(z&-2|0)==12):0){F=(d[K+(z+A)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}if((z|0)>0)z=z+-1|0;else break}if((D|0)>0)D=D+-1|0;else break}break}case 3:{v=119;y=255;D=13;while(1){C=D+-3|0;B=D&-2;A=(B|0)==12;B=(B|0)==0;z=0;do{if(((z+-3|C)>>>0>=8?!(A&z>>>0<2|(z|D)>>>0<2):0)?!(B&(z&-2|0)==12):0){F=(d[K+((z*14|0)+D)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}z=z+1|0}while((z|0)!=14);if((D|0)>0)D=D+-1|0;else break}break}default:y=255}c[t>>2]=G;h[u>>3]=(y|0)>30?1.0:+(y|0)/30.0;y=Ie(2830,0,0,I,J)|0;if((y|0)<0){y=-4;v=0;z=0}else{if(w)c[w>>2]=y;z=J;y=0;v=c[z>>2]|0;z=c[z+4>>2]|0}}else{c[t>>2]=0;h[u>>3]=-1.0;y=-2;v=0;z=0}while(0);if((y|0)<0){c[s>>2]=-1;break}if((v|0)==-1&(z|0)==-1){c[s>>2]=-1;y=-5;break}c[s>>2]=(v&-32768|0)==0&0==0?v&32767:0;if(!x)y=0;else{y=x;c[y>>2]=v;c[y+4>>2]=z;y=0}}else y=1;while(0);b:do switch(f|0){case 0:case 1:case 3:case 4:{if(!b){c[p>>2]=-1;v=-1;break b}v=b+28|0;z=c[v>>2]|0;A=z<<2;switch(f|0){case 0:case 3:if((Ee(e,0,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,0,K,c[v>>2]|0,p,q,r)|0;break b}default:if((Ee(e,1,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,1,K,c[v>>2]|0,p,q,r)|0;break b}}}default:v=1}while(0);if((y|0)!=1){if((v|0)!=1)y=(v&y|0)<0?v:0}else y=v;i=L;return y|0} +function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;b=k+8|0;h=k+4|0;d=k;c[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;c[d>>2]=a-e;b=($j(3712,3904,d,b)|0)-3712>>2;f=b;b=(c[3712+(b<<2)>>2]|0)+e|0;a:while(1){e=5;while(1){if(e>>>0>=47){e=211;j=8;break}d=c[3520+(e<<2)>>2]|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=106;break a}if((b|0)==($(a,d)|0))break;else e=e+1|0}b:do if((j|0)==8)while(1){j=0;d=(b>>>0)/(e>>>0)|0;if(d>>>0>>0){j=105;break a}if((b|0)==($(d,e)|0))break b;d=e+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+208|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break;else{e=e+210|0;j=8}}while(0);e=f+1|0;b=(e|0)==48;e=b?0:e;b=(b&1)+g|0;f=e;g=b;b=(c[3712+(e<<2)>>2]|0)+(b*210|0)|0}if((j|0)==105){c[h>>2]=b;break}else if((j|0)==106){c[h>>2]=b;break}}else b=c[($j(3520,3712,h,b)|0)>>2]|0;while(0);i=k;return b|0}function $j(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a;d=b-a>>2;a:while(1){while(1){if(!d)break a;a=(d|0)/2|0;if((c[e+(a<<2)>>2]|0)>>>0>>0)break;else d=a}e=e+(a+1<<2)|0;d=d+-1-a|0}return e|0}function ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>4294967279)oi(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{g=e+16&-16;f=Kh(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}ik(b|0,d|0,e|0)|0;a[b+e>>0]=0;return}function bk(b){b=b|0;if(a[b>>0]&1)Lh(c[b+8>>2]|0);return}function ck(){}function dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (D=d,a-c>>>0|0)|0}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<>>0;return (D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function ik(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Xa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function kk(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (D=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function mk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=dk(j^a,i^b,j,i)|0;g=D;a=f^j;b=e^i;return dk((rk(h,g,dk(f^c,e^d,f,e)|0,D,0)|0)^a,D^b,a,b)|0}function nk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=dk(h^a,g^b,h,g)|0;b=D;rk(a,b,dk(l^d,k^e,l,k)|0,D,j)|0;e=dk(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=D;i=f;return (D=d,e)|0}function ok(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=lk(e,f)|0;a=D;return (D=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rk(a,b,c,d,0)|0}function qk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;rk(a,b,d,e,f)|0;i=g;return (D=c[f+4>>2]|0,c[f>>2]|0)|0}function rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (D=n,f)|0}else{if(!g){n=0;f=0;return (D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (D=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (D=n,f)|0}g=h-1|0;if(g&h){i=(ba(h|0)|0)+33-(ba(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (D=o,p)|0}else{p=kk(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (D=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (D=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (D=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((kk(i|0)|0)>>>0);return (D=o,p)|0}g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (D=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gk(m|0,l|0,-1,-1)|0;d=D;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;dk(k,d,e,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=dk(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=D;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (D=o,p)|0}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b|0,c|0,d|0)|0}function tk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Rb[a&3](b|0,c|0,d|0,e|0,f|0)}function uk(a,b,c){a=a|0;b=b|0;c=c|0;return +Sb[a&1](b|0,c|0)}function vk(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function wk(a,b){a=a|0;b=b|0;return +Ub[a&3](b|0)}function xk(a){a=a|0;return Vb[a&1]()|0}function yk(a,b){a=a|0;b=b|0;Wb[a&15](b|0)}function zk(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b|0,c|0)}function Ak(a,b){a=a|0;b=b|0;return Yb[a&31](b|0)|0}function Bk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zb[a&1](b|0,c|0,d|0)}function Ck(a){a=a|0;_b[a&0]()}function Dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;$b[a&3](b|0,c|0,+d)}function Ek(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ac[a&1](b|0,c|0,d|0,e|0)|0}function Fk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b|0,c|0)|0}function Hk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dc[a&3](b|0,c|0,d|0,e|0)}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;ca(0);return 0}function Jk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ca(1)}function Kk(a,b){a=a|0;b=b|0;ca(2);return 0.0}function Lk(a,b){a=a|0;b=+b;ca(3)}function Mk(a){a=a|0;ca(4);return 0.0}function Nk(){ca(5);return 0}function Ok(a){a=a|0;ca(6)}function Pk(a,b){a=a|0;b=b|0;ca(7)}function Qk(a){a=a|0;ca(8);return 0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;ca(9)}function Sk(){ca(10)}function Tk(a,b,c){a=a|0;b=b|0;c=+c;ca(11)}function Uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(12);return 0}function Vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ca(13)}function Wk(a,b){a=a|0;b=b|0;ca(14);return 0}function Xk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(15)} + +// EMSCRIPTEN_END_FUNCS +var Qb=[Ik,Zh,_h,Qj,Qi,Pi,Ri,Ag,sg,qg,rg,yg,kh,jh,Oi,Mj];var Rb=[Jk,ki,ji,gi];var Sb=[Kk,dh];var Tb=[Lk,Wf,Yf,ag];var Ub=[Mk,Xf,Zf,bg];var Vb=[Nk,Nf];var Wb=[Ok,Mh,Nh,Sh,Vh,Th,Uh,Wh,Xh,Yh,Mf,Xg,Yg,Ij,Jj,Ok];var Xb=[Pk,ig,gg,_f,cg,eg,ng,gh];var Yb=[Qk,Oh,Ni,Pf,Vf,Qf,wg,xg,mg,lg,jg,hg,$f,dg,fg,og,fh,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk];var Zb=[Rk,ch];var _b=[Sk];var $b=[Tk,eh,bh,Tk];var ac=[Uk,mh];var bc=[Vk,ni,mi,li];var cc=[Wk,Df,Sf,Tf,Uf,tg,vg,ug,zg,kg,lh,hh,Wk,Wk,Wk,Wk];var dc=[Xk,ai,bi,di];return{_i64Subtract:dk,_fflush:Yi,_i64Add:gk,_memset:ek,_malloc:Uj,_memcpy:ik,___getTypeName:Ah,_bitshift64Lshr:hk,_free:Vj,___errno_location:qi,_bitshift64Shl:fk,__GLOBAL__sub_I_ARToolKitJS_cpp:Wg,__GLOBAL__sub_I_bind_cpp:Ch,runPostSets:ck,stackAlloc:ec,stackSave:fc,stackRestore:gc,establishStackSpace:hc,setThrew:ic,setTempRet0:lc,getTempRet0:mc,dynCall_iiii:sk,dynCall_viiiii:tk,dynCall_dii:uk,dynCall_vid:vk,dynCall_di:wk,dynCall_i:xk,dynCall_vi:yk,dynCall_vii:zk,dynCall_ii:Ak,dynCall_viii:Bk,dynCall_v:Ck,dynCall_viid:Dk,dynCall_iiiii:Ek,dynCall_viiiiii:Fk,dynCall_iii:Gk,dynCall_viiii:Hk}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var _fflush=Module["_fflush"]=asm["_fflush"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memset=Module["_memset"]=asm["_memset"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _free=Module["_free"]=asm["_free"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() +;(function() { + 'use strict' + + /** + The ARController is the main object for doing AR marker detection with JSARToolKit. + + To use an ARController, you need to tell it the dimensions to use for the AR processing canvas and + pass it an ARCameraParam to define the camera parameters to use when processing images. + The ARCameraParam defines the lens distortion and aspect ratio of the camera used. + See https://www.artoolworks.com/support/library/Calibrating_your_camera for more information about AR camera parameteters and how to make and use them. + + If you pass an image as the first argument, the ARController uses that as the image to process, + using the dimensions of the image as AR processing canvas width and height. If the first argument + to ARController is an image, the second argument is used as the camera param. + + The camera parameters argument can be either an ARCameraParam or an URL to a camera definition file. + If the camera argument is an URL, it is loaded into a new ARCameraParam, and the ARController dispatches + a 'load' event and calls the onload method if it is defined. + + @exports ARController + @constructor + + @param {number} width The width of the images to process. + @param {number} height The height of the images to process. + @param {ARCameraParam | string} camera The ARCameraParam to use for image processing. If this is a string, the ARController treats it as an URL and tries to load it as a ARCameraParam definition file, calling ARController#onload on success. + */ + var ARController = function(width, height, camera) { + var id; + var w = width, h = height; + + this.orientation = 'landscape'; + + this.listeners = {}; + + if (typeof width !== 'number') { + var image = width; + camera = height; + w = image.videoWidth || image.width; + h = image.videoHeight || image.height; + this.image = image; + } + + this.defaultMarkerWidth = 1; + this.patternMarkers = {}; + this.barcodeMarkers = {}; + this.transform_mat = new Float32Array(16); + + this.canvas = document.createElement('canvas'); + this.canvas.width = w; + this.canvas.height = h; + this.ctx = this.canvas.getContext('2d'); + + this.videoWidth = w; + this.videoHeight = h; + + if (typeof camera === 'string') { + + var self = this; + this.cameraParam = new ARCameraParam(camera, function() { + self._initialize(); + }, function(err) { + console.error("ARController: Failed to load ARCameraParam", err); + }); + + } else { + + this.cameraParam = camera; + this._initialize(); + + } + }; + + /** + Destroys the ARController instance and frees all associated resources. + After calling dispose, the ARController can't be used any longer. Make a new one if you need one. + + Calling this avoids leaking Emscripten memory, which may be important if you're using multiple ARControllers. + */ + ARController.prototype.dispose = function() { + artoolkit.teardown(this.id); + + for (var t in this) { + this[t] = null; + } + }; + + /** + Detects markers in the given image. The process method dispatches marker detection events during its run. + + The marker detection process proceeds by first dispatching a markerNum event that tells you how many + markers were found in the image. Next, a getMarker event is dispatched for each found marker square. + Finally, getMultiMarker is dispatched for every found multimarker, followed by getMultiMarkerSub events + dispatched for each of the markers in the multimarker. + + arController.addEventListener('markerNum', function(ev) { + console.log("Detected " + ev.data + " markers.") + }); + arController.addEventListener('getMarker', function(ev) { + console.log("Detected marker with ids:", ev.data.marker.id, ev.data.marker.idPatt, ev.data.marker.idMatrix); + console.log("Marker data", ev.data.marker); + console.log("Marker transform matrix:", [].join.call(ev.data.matrix, ', ')); + }); + arController.addEventListener('getMultiMarker', function(ev) { + console.log("Detected multimarker with id:", ev.data.multiMarkerId); + }); + arController.addEventListener('getMultiMarkerSub', function(ev) { + console.log("Submarker for " + ev.data.multiMarkerId, ev.data.markerIndex, ev.data.marker); + }); + + arController.process(image); + + + If no image is given, defaults to this.image. + + If the debugSetup has been called, draws debug markers on the debug canvas. + + @param {ImageElement | VideoElement} image The image to process [optional]. + */ + ARController.prototype.process = function(image) { + this.detectMarker(image); + + var markerNum = this.getMarkerNum(); + var k,o; + for (k in this.patternMarkers) { + o = this.patternMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + for (k in this.barcodeMarkers) { + o = this.barcodeMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + + for (var i=0; i -1 && (markerInfo.id === markerInfo.idPatt || markerInfo.idMatrix === -1)) { + visible = this.trackPatternMarkerId(markerInfo.idPatt); + markerType = artoolkit.PATTERN_MARKER; + + if (markerInfo.dir !== markerInfo.dirPatt) { + this.setMarkerInfoDir(i, markerInfo.dirPatt); + } + + } else if (markerInfo.idMatrix > -1) { + visible = this.trackBarcodeMarkerId(markerInfo.idMatrix); + markerType = artoolkit.BARCODE_MARKER; + + if (markerInfo.dir !== markerInfo.dirMatrix) { + this.setMarkerInfoDir(i, markerInfo.dirMatrix); + } + } + + if (markerType !== artoolkit.UNKNOWN_MARKER && visible.inPrevious) { + this.getTransMatSquareCont(i, visible.markerWidth, visible.matrix, visible.matrix); + } else { + this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + } +// this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + + visible.inCurrent = true; + this.transMatToGLMat(visible.matrix, this.transform_mat); + this.dispatchEvent({ + name: 'getMarker', + target: this, + data: { + index: i, + type: markerType, + marker: markerInfo, + matrix: this.transform_mat + } + }); + } + + var multiMarkerCount = this.getMultiMarkerCount(); + for (var i=0; i= 0) { + visible = true; + this.dispatchEvent({ + name: 'getMultiMarker', + target: this, + data: { + multiMarkerId: i, + matrix: this.transform_mat + } + }); + break; + } + } + if (visible) { + for (var j=0; j -1) { + this.listeners[name].splice(index, 1); + } + } + }; + + /** + Dispatches the given event to all registered listeners on event.name. + + @param {Object} event Event to dispatch. + */ + ARController.prototype.dispatchEvent = function(event) { + var listeners = this.listeners[event.name]; + if (listeners) { + for (var i=0; i= 0) if marker is valid, or -1 if invalid. + @field idPatt If pattern detection mode includes a pattern mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field idMatrix If pattern detection mode includes a matrix mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field dir If pattern detection mode is either pattern mode OR matrix but not both, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirPatt If pattern detection mode includes a pattern mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirMatrix If pattern detection mode includes a matrix mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field cf If pattern detection mode is either pattern mode OR matrix but not both, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfPatt If pattern detection mode includes a pattern mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfMatrix If pattern detection mode includes a matrix mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field pos 2D position (in camera image coordinates, origin at top-left) of the centre of the marker. + @field line Line equations for the 4 sides of the marker. + @field vertex 2D positions (in camera image coordinates, origin at top-left) of the corners of the marker. vertex[(4 - dir)%4][] is the top-left corner of the marker. Other vertices proceed clockwise from this. These are idealised coordinates (i.e. the onscreen position aligns correctly with the undistorted camera image.) + + + @param {number} markerIndex The index of the marker to query. + @returns {Object} The markerInfo struct. + */ + ARController.prototype.getMarker = function(markerIndex) { + if (0 === artoolkit.getMarker(this.id, markerIndex)) { + return artoolkit.markerInfo; + } + }; + + /** + Set marker vertices to the given vertexData[4][2] array. + + Sets the marker pos to the center of the vertices. + + Useful for building custom markers for getTransMatSquare. + + A markerIndex of -1 is used to access the global custom marker. + + @param {number} markerIndex The index of the marker to edit. + */ + ARController.prototype.setMarkerInfoVertex = function(markerIndex, vertexData) { + for (var i=0; i image.height ) || + (image.nodeName === 'VIDEO' && image.videoWidth > image.videoHeight) ){ + // if landscape + this.ctx.drawImage(image, 0, 0, this.canvas.width, this.canvas.height); // draw video + }else{ + // if portrait + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + var scale = this.canvas.height / this.canvas.width; + var scaledHeight = this.canvas.width*scale; + var scaledWidth = this.canvas.height*scale; + var marginLeft = ( this.canvas.width - scaledWidth)/2; + this.ctx.drawImage(image, marginLeft, 0, scaledWidth, scaledHeight); // draw video + } + + var imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height); + var data = imageData.data; + + if (this.dataHeap) { + this.dataHeap.set( data ); + return true; + } + return false; + }; + + ARController.prototype._debugMarker = function(marker) { + var vertex, pos; + vertex = marker.vertex; + var ctx = this.ctx; + ctx.strokeStyle = 'red'; + + ctx.beginPath() + ctx.moveTo(vertex[0][0], vertex[0][1]) + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[2][0], vertex[2][1]) + ctx.lineTo(vertex[3][0], vertex[3][1]) + ctx.stroke() + + ctx.strokeStyle = 'green'; + ctx.beginPath() + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.lineTo(vertex[2][0], vertex[2][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[3][0], vertex[3][1]) + ctx.lineTo(vertex[0][0], vertex[0][1]) + ctx.stroke(); + + pos = marker.pos + ctx.beginPath() + ctx.arc(pos[0], pos[1], 8, 0, Math.PI * 2) + ctx.fillStyle = 'red' + ctx.fill() + }; + + + // static + + /** + ARController.getUserMedia gets a device camera video feed and calls the given onSuccess callback with it. + + Tries to start playing the video. Playing the video can fail on Chrome for Android, + so ARController.getUserMedia adds user input event listeners to the window + that try to start playing the video. On success, the event listeners are removed. + + To use ARController.getUserMedia, call it with an object with the onSuccess attribute set to a callback function. + + ARController.getUserMedia({ + onSuccess: function(video) { + console.log("Got video", video); + } + }); + + The configuration object supports the following attributes: + + { + onSuccess : function(video), + onError : function(error), + + width : number | {min: number, ideal: number, max: number}, + height : number | {min: number, ideal: number, max: number}, + + facingMode : 'environment' | 'user' | 'left' | 'right' | { exact: 'environment' | ... } + } + + See https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia for more information about the + width, height and facingMode attributes. + + @param {object} configuration The configuration object. + @return {VideoElement} Returns the created video element. + */ + ARController.getUserMedia = function(configuration) { + var facing = configuration.facingMode || 'environment'; + + var onSuccess = configuration.onSuccess; + var onError = configuration.onError || function(err) { console.error("ARController.getUserMedia", err); }; + + var video = document.createElement('video'); + + var initProgress = function() { + if (this.videoWidth !== 0) { + onSuccess(video); + } + }; + + var readyToPlay = false; + var eventNames = [ + 'touchstart', 'touchend', 'touchmove', 'touchcancel', + 'click', 'mousedown', 'mouseup', 'mousemove', + 'keydown', 'keyup', 'keypress', 'scroll' + ]; + var play = function(ev) { + if (readyToPlay) { + video.play(); + if (!video.paused) { + eventNames.forEach(function(eventName) { + window.removeEventListener(eventName, play, true); + }); + } + } + }; + eventNames.forEach(function(eventName) { + window.addEventListener(eventName, play, true); + }); + + var success = function(stream) { + video.addEventListener('loadedmetadata', initProgress, false); + video.src = window.URL.createObjectURL(stream); + readyToPlay = true; + play(); // Try playing without user input, should work on non-Android Chrome + }; + + var constraints = {}; + var mediaDevicesConstraints = {}; + if (configuration.width) { + mediaDevicesConstraints.width = configuration.width; + if (typeof configuration.width === 'object') { + if (configuration.width.max) { + constraints.maxWidth = configuration.width.max; + } + if (configuration.width.min) { + constraints.minWidth = configuration.width.max; + } + } else { + constraints.maxWidth = configuration.width; + } + } + + if (configuration.height) { + mediaDevicesConstraints.height = configuration.height; + if (typeof configuration.height === 'object') { + if (configuration.height.max) { + constraints.maxHeight = configuration.height.max; + } + if (configuration.height.min) { + constraints.minHeight = configuration.height.max; + } + } else { + constraints.maxHeight = configuration.height; + } + } + + mediaDevicesConstraints.facingMode = facing; + + navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; + var hdConstraints = { + audio: false, + video: { + mandatory: constraints + } + }; + + if ( false ) { + // if ( navigator.mediaDevices || window.MediaStreamTrack) { + if (navigator.mediaDevices) { + navigator.mediaDevices.getUserMedia({ + audio: false, + video: mediaDevicesConstraints + }).then(success, onError); + } else { + MediaStreamTrack.getSources(function(sources) { + var facingDir = mediaDevicesConstraints.facingMode; + if (facing && facing.exact) { + facingDir = facing.exact; + } + for (var i=0; i -1) { // Or a string with the camera param + writeStringToFS(filename, url, writeCallback); + } else { + ajax(url, filename, writeCallback); + } + } + + + // transfer image + + function writeStringToFS(target, string, callback) { + var byteArray = new Uint8Array(string.length); + for (var i=0; i= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + markerObject3D.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent( { type: 'markerFound' } ); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * provide a name for a marker + * - silly heuristic for now + * - should be improved + */ +ARjs.MarkerControls.prototype.name = function(){ + var name = '' + name += this.parameters.type; + if( this.parameters.type === 'pattern' ){ + var url = this.parameters.patternUrl + var basename = url.replace(/^.*\//g, '') + name += ' - ' + basename + }else if( this.parameters.type === 'barcode' ){ + name += ' - ' + this.parameters.barcodeValue + }else{ + console.assert(false, 'no .name() implemented for this marker controls') + } + return name +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function(){ + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(function(){ + // check if arController is init + var arController = _this.context.arController + if( arController === null ) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000/50) + + return + + function postInit(){ + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null ) + + // start tracking this pattern + if( _this.parameters.type === 'pattern' ){ + arController.loadMarker(_this.parameters.patternUrl, function(markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + }else if( _this.parameters.type === 'barcode' ){ + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + }else if( _this.parameters.type === 'unknown' ){ + artoolkitMarkerId = null + }else{ + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function(event){ + if( event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern' ){ + if( artoolkitMarkerId === null ) return + if( event.data.marker.idPatt === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode' ){ + // console.log('BARCODE_MARKER idMatrix', event.data.marker.idMatrix, artoolkitMarkerId ) + if( artoolkitMarkerId === null ) return + if( event.data.marker.idMatrix === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown'){ + onMarkerFound(event) + } + }) + + } + + function onMarkerFound(event){ + // honor his.parameters.minConfidence + if( event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence ) return + if( event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence ) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) + } +} +var THREEx = THREEx || {} + +THREEx.ArMarkerHelper = function(markerControls){ + this.object3d = new THREE.Group + + var mesh = new THREE.AxesHelper() + this.object3d.add(mesh) + + var text = markerControls.id + // debugger + // var text = markerControls.parameters.patternUrl.slice(-1).toUpperCase(); + + var canvas = document.createElement( 'canvas' ); + canvas.width = 64; + canvas.height = 64; + + var context = canvas.getContext( '2d' ); + var texture = new THREE.CanvasTexture( canvas ); + + // put the text in the sprite + context.font = '48px monospace'; + context.fillStyle = 'rgba(192,192,255, 0.5)'; + context.fillRect( 0, 0, canvas.width, canvas.height ); + context.fillStyle = 'darkblue'; + context.fillText(text, canvas.width/4, 3*canvas.height/4 ) + texture.needsUpdate = true + + // var geometry = new THREE.CubeGeometry(1, 1, 1) + var geometry = new THREE.PlaneGeometry(1, 1) + var material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true + }); + var mesh = new THREE.Mesh(geometry, material) + mesh.rotation.x = -Math.PI/2 + + this.object3d.add(mesh) + +} +var THREEx = THREEx || {} + +/** + * - lerp position/quaternino/scale + * - minDelayDetected + * - minDelayUndetected + * @param {[type]} object3d [description] + * @param {[type]} parameters [description] + */ +THREEx.ArSmoothedControls = function(object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + // copy parameters + this.object3d.visible = false + + this._lastLerpStepAt = null + this._visibleStartedAt = null + this._unvisibleStartedAt = null + + // handle default parameters + parameters = parameters || {} + this.parameters = { + // lerp coeficient for the position - between [0,1] - default to 1 + lerpPosition: 0.8, + // lerp coeficient for the quaternion - between [0,1] - default to 1 + lerpQuaternion: 0.2, + // lerp coeficient for the scale - between [0,1] - default to 1 + lerpScale: 0.7, + // delay for lerp fixed steps - in seconds - default to 1/120 + lerpStepDelay: 1/60, + // minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds + minVisibleDelay: 0.0, + // minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds + minUnvisibleDelay: 0.2, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } +} + +THREEx.ArSmoothedControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +THREEx.ArSmoothedControls.prototype.constructor = THREEx.ArSmoothedControls; + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArSmoothedControls.prototype.update = function(targetObject3d){ + var object3d = this.object3d + var parameters = this.parameters + var wasVisible = object3d.visible + var present = performance.now()/1000 + + + ////////////////////////////////////////////////////////////////////////////// + // handle object3d.visible with minVisibleDelay/minUnvisibleDelay + ////////////////////////////////////////////////////////////////////////////// + if( targetObject3d.visible === false ) this._visibleStartedAt = null + if( targetObject3d.visible === true ) this._unvisibleStartedAt = null + + if( targetObject3d.visible === true && this._visibleStartedAt === null ) this._visibleStartedAt = present + if( targetObject3d.visible === false && this._unvisibleStartedAt === null ) this._unvisibleStartedAt = present + + if( wasVisible === false && targetObject3d.visible === true ){ + var visibleFor = present - this._visibleStartedAt + if( visibleFor >= this.parameters.minVisibleDelay ){ + object3d.visible = true + snapDirectlyToTarget() + } + // console.log('visibleFor', visibleFor) + } + + if( wasVisible === true && targetObject3d.visible === false ){ + var unvisibleFor = present - this._unvisibleStartedAt + if( unvisibleFor >= this.parameters.minUnvisibleDelay ){ + object3d.visible = false + } + } + + ////////////////////////////////////////////////////////////////////////////// + // apply lerp on positon/quaternion/scale + ////////////////////////////////////////////////////////////////////////////// + + // apply lerp steps - require fix time steps to behave the same no matter the fps + if( this._lastLerpStepAt === null ){ + applyOneSlerpStep() + this._lastLerpStepAt = present + }else{ + var nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay ) + for(var i = 0; i < nStepsToDo; i++){ + applyOneSlerpStep() + this._lastLerpStepAt += this.parameters.lerpStepDelay + } + } + + // disable the lerp by directly copying targetObject3d position/quaternion/scale + if( false ){ + snapDirectlyToTarget() + } + + // update the matrix + this.object3d.updateMatrix() + + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible/becameUnVisible event + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible event + if( wasVisible === false && object3d.visible === true ){ + this.dispatchEvent({ type: 'becameVisible' }) + } + // honor becameUnVisible event + if( wasVisible === true && object3d.visible === false ){ + this.dispatchEvent({ type: 'becameUnVisible' }) + } + return + + function snapDirectlyToTarget(){ + object3d.position.copy( targetObject3d.position ) + object3d.quaternion.copy( targetObject3d.quaternion ) + object3d.scale.copy( targetObject3d.scale ) + } + + function applyOneSlerpStep(){ + object3d.position.lerp(targetObject3d.position, parameters.lerpPosition) + object3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion) + object3d.scale.lerp(targetObject3d.scale, parameters.lerpScale) + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false); + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done); + } else console.assert(false); + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + markerControls.object3d.visible = false + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement); + } else { + console.assert(false); + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }) + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function (srcElement) { + + + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + // return the result + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +/** + * ArToolkitProfile helps you build parameters for artoolkit + * - it is fully independent of the rest of the code + * - all the other classes are still expecting normal parameters + * - you can use this class to understand how to tune your specific usecase + * - it is made to help people to build parameters without understanding all the underlying details. + */ +ARjs.Profile = THREEx.ArToolkitProfile = function () { + this.reset() + + this.performance('default') +} + + +ARjs.Profile.prototype._guessPerformanceLabel = function () { + var isMobile = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ? true : false + if (isMobile === true) { + return 'phone-normal' + } + return 'desktop-normal' +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all parameters + */ +ARjs.Profile.prototype.reset = function () { + this.sourceParameters = { + // to read from the webcam + sourceType: 'webcam', + } + + this.contextParameters = { + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + detectionMode: 'mono', + } + this.defaultMarkerParameters = { + type: 'pattern', + patternUrl: THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro', + changeMatrixMode: 'modelViewMatrix', + } + return this +}; + +////////////////////////////////////////////////////////////////////////////// +// Performance +////////////////////////////////////////////////////////////////////////////// + + + +ARjs.Profile.prototype.performance = function (label) { + + if (label === 'default') { + label = this._guessPerformanceLabel() + } + + if (label === 'desktop-fast') { + this.contextParameters.canvasWidth = 640 * 3 + this.contextParameters.canvasHeight = 480 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'desktop-normal') { + this.contextParameters.canvasWidth = 640 + this.contextParameters.canvasHeight = 480 + + this.contextParameters.maxDetectionRate = 60 + } else if (label === 'phone-normal') { + this.contextParameters.canvasWidth = 80 * 4 + this.contextParameters.canvasHeight = 60 * 4 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'phone-slow') { + this.contextParameters.canvasWidth = 80 * 3 + this.contextParameters.canvasHeight = 60 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else { + console.assert(false, 'unknonwn label ' + label) + } + return this +} + +////////////////////////////////////////////////////////////////////////////// +// Marker +////////////////////////////////////////////////////////////////////////////// + + +ARjs.Profile.prototype.defaultMarker = function (trackingBackend) { + trackingBackend = trackingBackend || this.contextParameters.trackingBackend + + if (trackingBackend === 'artoolkit') { + this.contextParameters.detectionMode = 'mono' + this.defaultMarkerParameters.type = 'pattern' + this.defaultMarkerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro' + } else console.assert(false) + + return this +} +////////////////////////////////////////////////////////////////////////////// +// Source +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.sourceWebcam = function () { + this.sourceParameters.sourceType = 'webcam' + delete this.sourceParameters.sourceUrl + return this +} + +ARjs.Profile.prototype.sourceVideo = function (url) { + this.sourceParameters.sourceType = 'video' + this.sourceParameters.sourceUrl = url + return this +} + +ARjs.Profile.prototype.sourceImage = function (url) { + this.sourceParameters.sourceType = 'image' + this.sourceParameters.sourceUrl = url + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingBackend = function (trackingBackend) { + console.warn('stop profile.trackingBackend() obsolete function. use .trackingMethod instead') + this.contextParameters.trackingBackend = trackingBackend + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.changeMatrixMode = function (changeMatrixMode) { + this.defaultMarkerParameters.changeMatrixMode = changeMatrixMode + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingMethod = function (trackingMethod) { + var data = ARjs.Utils.parseTrackingMethod(trackingMethod) + this.defaultMarkerParameters.markersAreaEnabled = data.markersAreaEnabled + this.contextParameters.trackingBackend = data.trackingBackend + return this +} + +/** + * check if the profile is valid. Throw an exception is not valid + */ +ARjs.Profile.prototype.checkIfValid = function () { + return this +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Source = THREEx.ArToolkitSource = function (parameters) { + var _this = this + + this.ready = false + this.domElement = null + + // handle default parameters + this.parameters = { + // type of source - ['webcam', 'image', 'video'] + sourceType: 'webcam', + // url of the source - valid if sourceType = image|video + sourceUrl: null, + + // Device id of the camera to use (optional) + deviceId: null, + + // resolution of at which we initialize in the source image + sourceWidth: 640, + sourceHeight: 480, + // resolution displayed for the source + displayWidth: 640, + displayHeight: 480, + } + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.init = function (onReady, onError) { + var _this = this + + if (this.parameters.sourceType === 'image') { + var domElement = this._initSourceImage(onSourceReady, onError) + } else if (this.parameters.sourceType === 'video') { + var domElement = this._initSourceVideo(onSourceReady, onError) + } else if (this.parameters.sourceType === 'webcam') { + // var domElement = this._initSourceWebcamOld(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) + } else { + console.assert(false) + } + + // attach + this.domElement = domElement + this.domElement.style.position = 'absolute' + this.domElement.style.top = '0px' + this.domElement.style.left = '0px' + this.domElement.style.zIndex = '-2' + this.domElement.setAttribute('id', 'arjs-video'); + + return this + function onSourceReady() { + document.body.appendChild(_this.domElement); + window.dispatchEvent(new CustomEvent('arjs-video-loaded', { + detail: { + component: document.querySelector('#arjs-video'), + }, + })); + + _this.ready = true + + onReady && onReady() + } +} + +//////////////////////////////////////////////////////////////////////////////// +// init image source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceImage = function (onReady) { + // TODO make it static + var domElement = document.createElement('img'); + domElement.src = this.parameters.sourceUrl; + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onload = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// init video source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceVideo = function (onReady) { + // TODO make it static + var domElement = document.createElement('video'); + domElement.src = this.parameters.sourceUrl; + + domElement.style.objectFit = 'initial'; + + domElement.autoplay = true; + domElement.webkitPlaysinline = true; + domElement.controls = false; + domElement.loop = true; + domElement.muted = true; + + // trick to trigger the video on android + document.body.addEventListener('click', function onClick() { + document.body.removeEventListener('click', onClick); + domElement.play() + }); + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onloadeddata = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// handle webcam source +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype._initSourceWebcam = function (onReady, onError) { + var _this = this + + // init default value + onError = onError || function (error) { + var event = new CustomEvent('camera-error', { error: error }); + window.dispatchEvent(event); + + setTimeout(() => { + alert('Webcam Error\nName: ' + error.name + '\nMessage: ' + error.message) + }, 1000); + } + + var domElement = document.createElement('video'); + domElement.setAttribute('autoplay', ''); + domElement.setAttribute('muted', ''); + domElement.setAttribute('playsinline', ''); + domElement.style.width = this.parameters.displayWidth + 'px' + domElement.style.height = this.parameters.displayHeight + 'px' + + // check API is available + if (navigator.mediaDevices === undefined + || navigator.mediaDevices.enumerateDevices === undefined + || navigator.mediaDevices.getUserMedia === undefined) { + if (navigator.mediaDevices === undefined) var fctName = 'navigator.mediaDevices' + else if (navigator.mediaDevices.enumerateDevices === undefined) var fctName = 'navigator.mediaDevices.enumerateDevices' + else if (navigator.mediaDevices.getUserMedia === undefined) var fctName = 'navigator.mediaDevices.getUserMedia' + else console.assert(false) + onError({ + name: '', + message: 'WebRTC issue-! ' + fctName + ' not present in your browser' + }); + return null + } + + // get available devices + navigator.mediaDevices.enumerateDevices().then(function (devices) { + var userMediaConstraints = { + audio: false, + video: { + facingMode: 'environment', + width: { + ideal: _this.parameters.sourceWidth, + // min: 1024, + // max: 1920 + }, + height: { + ideal: _this.parameters.sourceHeight, + // min: 776, + // max: 1080 + } + } + }; + + if (null !== _this.parameters.deviceId) { + userMediaConstraints.video.deviceId = { + exact: _this.parameters.deviceId + }; + } + + // get a device which satisfy the constraints + navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) { + // set the .src of the domElement + domElement.srcObject = stream; + + var event = new CustomEvent('camera-init', { stream: stream }); + window.dispatchEvent(event); + // to start the video, when it is possible to start it only on userevent. like in android + document.body.addEventListener('click', function () { + domElement.play(); + }); + // domElement.play(); + + onReady(); + }).catch(function (error) { + onError({ + name: error.name, + message: error.message + }); + }); + }).catch(function (error) { + onError({ + message: error.message + }); + }); + + return domElement +} + +////////////////////////////////////////////////////////////////////////////// +// Handle Mobile Torch +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.hasMobileTorch = function () { + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) return false + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + + // if videoTrack.getCapabilities() doesnt exist, return false now + if (videoTrack.getCapabilities === undefined) return false + + var capabilities = videoTrack.getCapabilities() + + return capabilities.torch ? true : false +} + +/** + * toggle the flash/torch of the mobile fun if applicable. + * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/ + */ +ARjs.Source.prototype.toggleMobileTorch = function () { + // sanity check + console.assert(this.hasMobileTorch() === true) + + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) { + alert('enabling mobile torch is available only on webcam') + return + } + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + var capabilities = videoTrack.getCapabilities() + + if (!capabilities.torch) { + alert('no mobile torch is available on your camera') + return + } + + this._currentTorchStatus = this._currentTorchStatus === false ? true : false + videoTrack.applyConstraints({ + advanced: [{ + torch: this._currentTorchStatus + }] + }).catch(function (error) { + console.log(error) + }); +} + +ARjs.Source.prototype.domElementWidth = function () { + return parseInt(this.domElement.style.width) +} +ARjs.Source.prototype.domElementHeight = function () { + return parseInt(this.domElement.style.height) +} + +//////////////////////////////////////////////////////////////////////////////// +// handle resize +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResizeElement = function () { + var _this = this + var screenWidth = window.innerWidth + var screenHeight = window.innerHeight + + // sanity check + console.assert(arguments.length === 0) + + // compute sourceWidth, sourceHeight + if (this.domElement.nodeName === "IMG") { + var sourceWidth = this.domElement.naturalWidth + var sourceHeight = this.domElement.naturalHeight + } else if (this.domElement.nodeName === "VIDEO") { + var sourceWidth = this.domElement.videoWidth + var sourceHeight = this.domElement.videoHeight + } else { + console.assert(false) + } + + // compute sourceAspect + var sourceAspect = sourceWidth / sourceHeight + // compute screenAspect + var screenAspect = screenWidth / screenHeight + + // if screenAspect < sourceAspect, then change the width, else change the height + if (screenAspect < sourceAspect) { + // compute newWidth and set .width/.marginLeft + var newWidth = sourceAspect * screenHeight + this.domElement.style.width = newWidth + 'px' + this.domElement.style.marginLeft = -(newWidth - screenWidth) / 2 + 'px' + + // init style.height/.marginTop to normal value + this.domElement.style.height = screenHeight + 'px' + this.domElement.style.marginTop = '0px' + } else { + // compute newHeight and set .height/.marginTop + var newHeight = 1 / (sourceAspect / screenWidth) + this.domElement.style.height = newHeight + 'px' + this.domElement.style.marginTop = -(newHeight - screenHeight) / 2 + 'px' + + // init style.width/.marginLeft to normal value + this.domElement.style.width = screenWidth + 'px' + this.domElement.style.marginLeft = '0px' + } +} +/* +ARjs.Source.prototype.copyElementSizeTo = function(otherElement){ + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop +} +*/ + +ARjs.Source.prototype.copyElementSizeTo = function (otherElement) { + + if (window.innerWidth > window.innerHeight) { + //landscape + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop + } + else { + //portrait + otherElement.style.height = this.domElement.style.height + otherElement.style.width = (parseInt(otherElement.style.height) * 4 / 3) + "px"; + otherElement.style.marginLeft = ((window.innerWidth - parseInt(otherElement.style.width)) / 2) + "px"; + otherElement.style.marginTop = 0; + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.copySizeTo = function () { + console.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo') + this.copyElementSizeTo.apply(this, arguments) +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResize = function (arToolkitContext, renderer, camera) { + if (arguments.length !== 3) { + console.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement') + return this.onResizeElement.apply(this, arguments) + } + + var trackingBackend = arToolkitContext.parameters.trackingBackend + + + // RESIZE DOMELEMENT + if (trackingBackend === 'artoolkit') { + + this.onResizeElement() + + var isAframe = renderer.domElement.dataset.aframeCanvas ? true : false + if (isAframe === false) { + this.copyElementSizeTo(renderer.domElement) + } else { + + } + + if (arToolkitContext.arController !== null) { + this.copyElementSizeTo(arToolkitContext.arController.canvas) + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) + + + // UPDATE CAMERA + if (trackingBackend === 'artoolkit') { + if (arToolkitContext.arController !== null) { + camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()); + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) +} +var THREEx = THREEx || {} + +THREEx.ArVideoInWebgl = function(videoTexture){ + var _this = this + + ////////////////////////////////////////////////////////////////////////////// + // plane always in front of the camera, exactly as big as the viewport + ////////////////////////////////////////////////////////////////////////////// + var geometry = new THREE.PlaneGeometry(2, 2); + var material = new THREE.MeshBasicMaterial({ + // map : new THREE.TextureLoader().load('images/water.jpg'), + map : videoTexture, + // side: THREE.DoubleSide, + // opacity: 0.5, + // color: 'pink', + // transparent: true, + }); + var seethruPlane = new THREE.Mesh(geometry, material); + this.object3d = seethruPlane + // scene.add(seethruPlane); + + // arToolkitSource.domElement.style.visibility = 'hidden' + + // TODO extract the fov from the projectionMatrix + // camera.fov = 43.1 + this.update = function(camera){ + camera.updateMatrixWorld(true) + + // get seethruPlane position + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + seethruPlane.position.copy(position) + camera.localToWorld(seethruPlane.position) + + // get seethruPlane quaternion + camera.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + seethruPlane.quaternion.copy( camera.quaternion ) + + // extract the fov from the projectionMatrix + var fov = THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2; + // console.log('fov', fov) + + var elementWidth = parseFloat( arToolkitSource.domElement.style.width.replace(/px$/,''), 10 ) + var elementHeight = parseFloat( arToolkitSource.domElement.style.height.replace(/px$/,''), 10 ) + + var aspect = elementWidth / elementHeight + + // camera.fov = fov + // if( vrDisplay.isPresenting ){ + // fov *= 2 + // aspect *= 2 + // } + + // get seethruPlane height relative to fov + seethruPlane.scale.y = Math.tan(THREE.Math.DEG2RAD * fov/2)*position.length() + // get seethruPlane aspect + seethruPlane.scale.x = seethruPlane.scale.y * aspect + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // var video = arToolkitSource.domElement; + // + // window.addEventListener('resize', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // video.addEventListener('canplaythrough', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // function updateSeeThruAspectUv(plane){ + // + // // if video isnt yet ready to play + // if( video.videoWidth === 0 || video.videoHeight === 0 ) return + // + // var faceVertexUvs = plane.geometry.faceVertexUvs[0] + // var screenAspect = window.innerWidth / window.innerHeight + // var videoAspect = video.videoWidth / video.videoHeight + // + // plane.geometry.uvsNeedUpdate = true + // if( screenAspect >= videoAspect ){ + // var actualHeight = videoAspect / screenAspect; + // // faceVertexUvs y 0 + // faceVertexUvs[0][1].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][0].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][1].y = 0.5 - actualHeight/2 + // // faceVertexUvs y 1 + // faceVertexUvs[0][0].y = 0.5 + actualHeight/2 + // faceVertexUvs[0][2].y = 0.5 + actualHeight/2 + // faceVertexUvs[1][2].y = 0.5 + actualHeight/2 + // }else{ + // var actualWidth = screenAspect / videoAspect; + // // faceVertexUvs x 0 + // faceVertexUvs[0][0].x = 0.5 - actualWidth/2 + // faceVertexUvs[0][1].x = 0.5 - actualWidth/2 + // faceVertexUvs[1][0].x = 0.5 - actualWidth/2 + // + // // faceVertexUvs x 1 + // faceVertexUvs[0][2].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][1].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][2].x = 0.5 + actualWidth/2 + // } + // } + +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.HitTestingPlane = function(sourceElement){ + this._sourceElement = sourceElement + + // create _pickingScene + this._pickingScene = new THREE.Scene + + // create _pickingPlane + var geometry = new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2) + // var geometry = new THREE.PlaneGeometry(20,20).rotateX(-Math.PI/2) + var material = new THREE.MeshBasicMaterial({ + // opacity: 0.5, + // transparent: true, + wireframe: true + }) + // material.visible = false + this._pickingPlane = new THREE.Mesh(geometry, material) + this._pickingScene.add(this._pickingPlane) + + // Create pickingCamera + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + // TODO hardcoded fov - couch + this._pickingCamera = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 30); +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.update = function(camera, pickingRoot, changeMatrixMode){ + + this.onResize() + + + if( changeMatrixMode === 'modelViewMatrix' ){ + // set pickingPlane position + var pickingPlane = this._pickingPlane + pickingRoot.parent.updateMatrixWorld() + pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld) + // set position/quaternion/scale from pickingPlane.matrix + pickingPlane.matrix.decompose(pickingPlane.position, pickingPlane.quaternion, pickingPlane.scale) + }else if( changeMatrixMode === 'cameraTransformMatrix' ){ + // set pickingPlane position + var pickingCamera = this._pickingCamera + camera.updateMatrixWorld() + pickingCamera.matrix.copy(camera.matrixWorld) + // set position/quaternion/scale from pickingCamera.matrix + pickingCamera.matrix.decompose(pickingCamera.position, pickingCamera.quaternion, pickingCamera.scale) + }else console.assert(false) + + +// var position = this._pickingPlane.position +// console.log('pickingPlane position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) +// var position = this._pickingCamera.position +// console.log('his._pickingCamera position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) + +} + +////////////////////////////////////////////////////////////////////////////// +// resize camera +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.onResize = function(){ + var sourceElement = this._sourceElement + var pickingCamera = this._pickingCamera + +// FIXME why using css here ??? not even computed style +// should get the size of the elment directly independantly + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + pickingCamera.aspect = fullWidth / fullHeight + + pickingCamera.updateProjectionMatrix() +} + +////////////////////////////////////////////////////////////////////////////// +// Perform test +////////////////////////////////////////////////////////////////////////////// +THREEx.HitTestingPlane.prototype.test = function(mouseX, mouseY){ + // convert mouseX, mouseY to [-1, +1] + mouseX = (mouseX-0.5)*2 + mouseY =-(mouseY-0.5)*2 + + this._pickingScene.updateMatrixWorld(true) + + // compute intersections between mouseVector3 and pickingPlane + var raycaster = new THREE.Raycaster(); + var mouseVector3 = new THREE.Vector3(mouseX, mouseY, 1); + raycaster.setFromCamera( mouseVector3, this._pickingCamera ) + var intersects = raycaster.intersectObjects( [this._pickingPlane] ) + + if( intersects.length === 0 ) return null + + // set new demoRoot position + var position = this._pickingPlane.worldToLocal( intersects[0].point.clone() ) + // TODO here do a look at the camera ? + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3(1,1,1)//.multiplyScalar(1) + + return { + position : position, + quaternion : quaternion, + scale : scale + } +} + +////////////////////////////////////////////////////////////////////////////// +// render the pickingPlane for debug +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.renderDebug = function(renderer){ + // render sceneOrtho + renderer.render( this._pickingScene, this._pickingCamera ) +} +// @namespace +var ARjs = ARjs || {} + +// TODO this is a controls... should i give the object3d here ? +// not according to 'no three.js dependancy' + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.Anchor = function(arSession, markerParameters){ + var _this = this + var arContext = arSession.arContext + var scene = arSession.parameters.scene + var camera = arSession.parameters.camera + + this.arSession = arSession + this.parameters = markerParameters + + // log to debug + console.log('ARjs.Anchor -', 'changeMatrixMode:', this.parameters.changeMatrixMode, '/ markersAreaEnabled:', markerParameters.markersAreaEnabled) + + var markerRoot = new THREE.Group + scene.add(markerRoot) + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var controlledObject = markerRoot + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var controlledObject = camera + }else console.assert(false) + + if( markerParameters.markersAreaEnabled === false ){ + var markerControls = new THREEx.ArMarkerControls(arContext, controlledObject, markerParameters) + this.controls = markerControls + }else{ + // sanity check - MUST be a trackingBackend with markers + console.assert( arContext.parameters.trackingBackend === 'artoolkit' ) + + // honor markers-page-resolution for https://webxr.io/augmented-website + if( location.hash.substring(1).startsWith('markers-page-resolution=') === true ){ + // get resolutionW/resolutionH from url + var markerPageResolution = location.hash.substring(1) + var matches = markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/) + console.assert(matches.length === 3) + var resolutionW = parseInt(matches[1]) + var resolutionH = parseInt(matches[2]) + var arContext = arSession.arContext + // generate and store the ARjsMultiMarkerFile + ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend, resolutionW, resolutionH) + } + + // if there is no ARjsMultiMarkerFile, build a default one + if( localStorage.getItem('ARjsMultiMarkerFile') === null ){ + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend) + } + + // get multiMarkerFile from localStorage + console.assert( localStorage.getItem('ARjsMultiMarkerFile') !== null ) + var multiMarkerFile = localStorage.getItem('ARjsMultiMarkerFile') + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var parent3D = scene + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var parent3D = camera + }else console.assert(false) + + // build a multiMarkerControls + var multiMarkerControls = ARjs.MarkersAreaControls.fromJSON(arContext, parent3D, controlledObject, multiMarkerFile) + this.controls = multiMarkerControls + + // honor markerParameters.changeMatrixMode + multiMarkerControls.parameters.changeMatrixMode = markerParameters.changeMatrixMode + +// TODO put subMarkerControls visibility into an external file. with 2 handling for three.js and babylon.js + // create ArMarkerHelper - useful to debug - super three.js specific + var markerHelpers = [] + multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){ + // add an helper to visuable each sub-marker + var markerHelper = new THREEx.ArMarkerHelper(subMarkerControls) + markerHelper.object3d.visible = false + // subMarkerControls.object3d.add( markerHelper.object3d ) + subMarkerControls.object3d.add( markerHelper.object3d ) + // add it to markerHelpers + markerHelpers.push(markerHelper) + }) + // define API specific to markersArea + this.markersArea = {} + this.markersArea.setSubMarkersVisibility = function(visible){ + markerHelpers.forEach(function(markerHelper){ + markerHelper.object3d.visible = visible + }) + } + } + + this.object3d = new THREE.Group() + + ////////////////////////////////////////////////////////////////////////////// + // THREEx.ArSmoothedControls + ////////////////////////////////////////////////////////////////////////////// + + var shouldBeSmoothed = true + + if( shouldBeSmoothed === true ){ + // build a smoothedControls + var smoothedRoot = new THREE.Group() + scene.add(smoothedRoot) + var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot) + smoothedRoot.add(this.object3d) + }else{ + markerRoot.add(this.object3d) + } + + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + this.update = function(){ + // update _this.object3d.visible + _this.object3d.visible = _this.object3d.parent.visible + + // console.log('controlledObject.visible', _this.object3d.parent.visible) + if( smoothedControls !== undefined ){ + // update smoothedControls parameters depending on how many markers are visible in multiMarkerControls + if( multiMarkerControls !== undefined ){ + multiMarkerControls.updateSmoothedControls(smoothedControls) + } + + // update smoothedControls + smoothedControls.update(markerRoot) + } + } +} +// @namespace +var ARjs = ARjs || {} + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.SessionDebugUI = function (arSession) { + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.left = '5px' + this.domElement.style.bottom = '10px' + this.domElement.style.textAlign = 'right' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.innerHTML = 'trackingBackend : ' + trackingBackend + this.domElement.appendChild(domElement) +} + +/** + * Url of augmented-website service - if === '' then dont include augmented-website link + * @type {String} + */ +ARjs.SessionDebugUI.AugmentedWebsiteURL = 'https://webxr.io/augmented-website' + +////////////////////////////////////////////////////////////////////////////// +// ARjs.AnchorDebugUI +////////////////////////////////////////////////////////////////////////////// + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.AnchorDebugUI = function (arAnchor) { + var arSession = arAnchor.arSession + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'inline-block' + this.domElement.style.padding = '0.5em' + this.domElement.style.margin = '0.5em' + this.domElement.style.textAlign = 'left' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.style.padding = '0.5em' + domElement.style.color = 'rgba(0,0,0,0.9)' + domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + domElement.style.position = 'fixed' + domElement.style.left = '5px' + domElement.style.bottom = '40px' + + this.domElement.appendChild(domElement) + domElement.innerHTML = 'markersAreaEnabled :' + arAnchor.parameters.markersAreaEnabled + + ////////////////////////////////////////////////////////////////////////////// + // toggle-marker-helper + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.textAlign = 'left' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonToggleMarkerHelpers' + domElement.innerHTML = 'toggle-marker-helper' + domElement.href = 'javascript:void(0)' + + var subMarkerHelpersVisible = false + domElement.addEventListener('click', function () { + subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true + arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Learn-new-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaLearner' + domElement.innerHTML = 'Learn-new-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + if (ARjs.AnchorDebugUI.MarkersAreaLearnerURL !== null) { + var learnerURL = ARjs.AnchorDebugUI.MarkersAreaLearnerURL + } else { + var learnerURL = ARjs.Context.baseURL + 'examples/multi-markers/examples/learner.html' + } + ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Reset-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaReset' + domElement.innerHTML = 'Reset-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend) + location.reload() + }) + } +} + +/** + * url for the markers-area learner. if not set, take the default one + * @type {String} + */ +ARjs.AnchorDebugUI.MarkersAreaLearnerURL = null +// @namespace +var ARjs = ARjs || {} + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.HitTesting = function (arSession) { + var _this = this + var arContext = arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + + this.enabled = true + this._arSession = arSession + this._hitTestingPlane = null + _this._hitTestingPlane = new THREEx.HitTestingPlane(arSession.arSource.domElement) +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// +/** + * update + * + * @param {THREE.Camera} camera - the camera to use + * @param {THREE.Object3D} object3d - + */ +ARjs.HitTesting.prototype.update = function (camera, pickingRoot, changeMatrixMode) { + // if it isnt enabled, do nothing + if (this.enabled === false) return + + + if (this._hitTestingPlane !== null) { + this._hitTestingPlane.update(camera, pickingRoot, changeMatrixMode) + } else console.assert(false) +} + +////////////////////////////////////////////////////////////////////////////// +// actual hit testing +////////////////////////////////////////////////////////////////////////////// + +/** + * Test the real world for intersections directly from a DomEvent + * + * @param {Number} mouseX - position X of the hit [-1, +1] + * @param {Number} mouseY - position Y of the hit [-1, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.testDomEvent = function (domEvent) { + var trackingBackend = this._arSession.arContext.parameters.trackingBackend + var arSource = this._arSession.arSource + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + var mouseX = domEvent.clientX / arSource.domElementWidth() + var mouseY = domEvent.clientY / arSource.domElementHeight() + + return this.test(mouseX, mouseY) +} + +/** + * Test the real world for intersections. + * + * @param {Number} mouseX - position X of the hit [0, +1] + * @param {Number} mouseY - position Y of the hit [0, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.test = function (mouseX, mouseY) { + var arContext = this._arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + var hitTestResults = [] + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + + var result = this._hitTestingPlane.test(mouseX, mouseY) + + // if no result is found, return now + if (result === null) return hitTestResults + + // build a ARjs.HitTesting.Result + var hitTestResult = new ARjs.HitTesting.Result(result.position, result.quaternion, result.scale) + hitTestResults.push(hitTestResult) + + return hitTestResults +} + +////////////////////////////////////////////////////////////////////////////// +// ARjs.HitTesting.Result +////////////////////////////////////////////////////////////////////////////// +/** + * Contains the result of ARjs.HitTesting.test() + * + * @param {THREE.Vector3} position - position to use + * @param {THREE.Quaternion} quaternion - quaternion to use + * @param {THREE.Vector3} scale - scale + */ +ARjs.HitTesting.Result = function (position, quaternion, scale) { + this.position = position + this.quaternion = quaternion + this.scale = scale +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.apply = function (object3d) { + object3d.position.copy(this.position) + object3d.quaternion.copy(this.quaternion) + object3d.scale.copy(this.scale) + + object3d.updateMatrix() +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyPosition = function (object3d) { + object3d.position.copy(this.position) + + object3d.updateMatrix() + + return this +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyQuaternion = function (object3d) { + object3d.quaternion.copy(this.quaternion) + + object3d.updateMatrix() + + return this +} +var ARjs = ARjs || {} + +/** + * define a ARjs.Session + * + * @param {Object} parameters - parameters for this session + */ +ARjs.Session = function(parameters){ + var _this = this + // handle default parameters + this.parameters = { + renderer: null, + camera: null, + scene: null, + sourceParameters: {}, + contextParameters: {}, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + // sanity check + console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer) + console.assert(this.parameters.camera instanceof THREE.Camera) + console.assert(this.parameters.scene instanceof THREE.Scene) + + + // backward emulation + Object.defineProperty(this, 'renderer', {get: function(){ + console.warn('use .parameters.renderer renderer') + return this.parameters.renderer; + }}); + Object.defineProperty(this, 'camera', {get: function(){ + console.warn('use .parameters.camera instead') + return this.parameters.camera; + }}); + Object.defineProperty(this, 'scene', {get: function(){ + console.warn('use .parameters.scene instead') + return this.parameters.scene; + }}); + + + // log the version + console.log('AR.js', ARjs.Context.REVISION, '- trackingBackend:', parameters.contextParameters.trackingBackend) + + ////////////////////////////////////////////////////////////////////////////// + // init arSource + ////////////////////////////////////////////////////////////////////////////// + var arSource = _this.arSource = new ARjs.Source(parameters.sourceParameters) + + arSource.init(function onReady(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + // handle resize + window.addEventListener('resize', function(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // init arContext + ////////////////////////////////////////////////////////////////////////////// + + // create atToolkitContext + var arContext = _this.arContext = new ARjs.Context(parameters.contextParameters) + + // initialize it + _this.arContext.init() + + arContext.addEventListener('initialized', function(event){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // update function + ////////////////////////////////////////////////////////////////////////////// + // update artoolkit on every frame + this.update = function(){ + if( arSource.ready === false ) return + + arContext.update( arSource.domElement ) + } +} + +ARjs.Session.prototype.onResize = function () { + this.arSource.onResize(this.arContext, this.parameters.renderer, this.parameters.camera) +}; +var ARjs = ARjs || {} +ARjs.Utils = {} + +/** + * Create a default rendering camera for this trackingBackend. They may be modified later. to fit physical camera parameters + * + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Utils.createDefaultCamera = function (trackingMethod) { + var trackingBackend = this.parseTrackingMethod(trackingMethod).trackingBackend + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false, 'unknown trackingBackend: ' + trackingBackend) + + return camera +} + +/** + * parse tracking method + * + * @param {String} trackingMethod - the tracking method to parse + * @return {Object} - various field of the tracking method + */ +ARjs.Utils.parseTrackingMethod = function (trackingMethod) { + + if (trackingMethod === 'best') { + trackingMethod = 'area-artoolkit'; + } + + if (trackingMethod.startsWith('area-')) { + return { + trackingBackend: trackingMethod.replace('area-', ''), + markersAreaEnabled: true, + } + } else { + return { + trackingBackend: trackingMethod, + markersAreaEnabled: false, + } + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaControls = THREEx.ArMultiMarkerControls = function(arToolkitContext, object3d, parameters){ + var _this = this + THREEx.ArBaseControls.call(this, object3d) + + if( arguments.length > 3 ) console.assert('wrong api for', THREEx.ArMultiMarkerControls) + + // have a parameters in argument + this.parameters = { + // list of controls for each subMarker + subMarkersControls: parameters.subMarkersControls, + // list of pose for each subMarker relative to the origin + subMarkerPoses: parameters.subMarkerPoses, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : parameters.changeMatrixMode !== undefined ? parameters.changeMatrixMode : 'modelViewMatrix', + } + + this.object3d.visible = false + // honor obsolete stuff - add a warning to use + this.subMarkersControls = this.parameters.subMarkersControls + this.subMarkerPoses = this.parameters.subMarkerPoses + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + +ARjs.MarkersAreaControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkersAreaControls.prototype.constructor = ARjs.MarkersAreaControls; + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaControls.prototype._onSourceProcessed = function(){ + var _this = this + var stats = { + count: 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + + var firstQuaternion = _this.parameters.subMarkersControls[0].object3d.quaternion + + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + + var markerObject3d = markerControls.object3d + // if this marker is not visible, ignore it + if( markerObject3d.visible === false ) return + + // transformation matrix of this.object3d according to this sub-markers + var matrix = markerObject3d.matrix.clone() + var markerPose = _this.parameters.subMarkerPoses[markerIndex] + matrix.multiply(new THREE.Matrix4().getInverse(markerPose)) + + // decompose the matrix into .position, .quaternion, .scale + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion() + var scale = new THREE.Vector3 + matrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + // honor _this.object3d.visible + if( stats.count > 0 ){ + _this.object3d.visible = true + }else{ + _this.object3d.visible = false + } + + // if at least one sub-marker has been detected, make the average of all detected markers + if( stats.count > 0 ){ + // compute modelViewMatrix + var modelViewMatrix = new THREE.Matrix4() + modelViewMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + // change _this.object3d.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + _this.object3d.matrix.copy(modelViewMatrix) + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + _this.object3d.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + _this.object3d.matrix.decompose(_this.object3d.position, _this.object3d.quaternion, _this.object3d.scale) + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + */ +ARjs.MarkersAreaControls.averageQuaternion = function(quaternionSum, newQuaternion, firstQuaternion, count, quaternionAverage){ + quaternionAverage = quaternionAverage || new THREE.Quaternion() + // sanity check + console.assert(firstQuaternion instanceof THREE.Quaternion === true) + + // from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + if( newQuaternion.dot(firstQuaternion) > 0 ){ + newQuaternion = new THREE.Quaternion(-newQuaternion.x, -newQuaternion.y, -newQuaternion.z, -newQuaternion.w) + } + + quaternionSum.x += newQuaternion.x + quaternionSum.y += newQuaternion.y + quaternionSum.z += newQuaternion.z + quaternionSum.w += newQuaternion.w + + quaternionAverage.x = quaternionSum.x/count + quaternionAverage.y = quaternionSum.y/count + quaternionAverage.z = quaternionSum.z/count + quaternionAverage.w = quaternionSum.w/count + + quaternionAverage.normalize() + + return quaternionAverage +} + + +ARjs.MarkersAreaControls.averageVector3 = function(vector3Sum, vector3, count, vector3Average){ + vector3Average = vector3Average || new THREE.Vector3() + + vector3Sum.x += vector3.x + vector3Sum.y += vector3.y + vector3Sum.z += vector3.z + + vector3Average.x = vector3Sum.x / count + vector3Average.y = vector3Sum.y / count + vector3Average.z = vector3Sum.z / count + + return vector3Average +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * compute the center of this multimarker file + */ +ARjs.MarkersAreaControls.computeCenter = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var stats = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + var firstQuaternion = new THREE.Quaternion() // FIXME ??? + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + return averageMatrix +} + +ARjs.MarkersAreaControls.computeBoundingBox = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var boundingBox = new THREE.Box3() + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + boundingBox.expandByPoint(position) + }) + + return boundingBox +} +////////////////////////////////////////////////////////////////////////////// +// updateSmoothedControls +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.prototype.updateSmoothedControls = function(smoothedControls, lerpsValues){ + // handle default values + if( lerpsValues === undefined ){ + // FIXME this parameter format is uselessly cryptic + // lerpValues = [ + // {lerpPosition: 0.5, lerpQuaternion: 0.2, lerpQuaternion: 0.7} + // ] + lerpsValues = [ + [0.3+.1, 0.1, 0.3], + [0.4+.1, 0.1, 0.4], + [0.4+.1, 0.2, 0.5], + [0.5+.1, 0.2, 0.7], + [0.5+.1, 0.2, 0.7], + ] + } + // count how many subMarkersControls are visible + var nVisible = 0 + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + var markerObject3d = markerControls.object3d + if( markerObject3d.visible === true ) nVisible ++ + }) + + // find the good lerpValues + if( lerpsValues[nVisible-1] !== undefined ){ + var lerpValues = lerpsValues[nVisible-1] + }else{ + var lerpValues = lerpsValues[lerpsValues.length-1] + } + + // modify lerpValues in smoothedControls + smoothedControls.parameters.lerpPosition = lerpValues[0] + smoothedControls.parameters.lerpQuaternion = lerpValues[1] + smoothedControls.parameters.lerpScale = lerpValues[2] +} + + +////////////////////////////////////////////////////////////////////////////// +// Create THREEx.ArMultiMarkerControls from JSON +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.fromJSON = function(arToolkitContext, parent3D, markerRoot, jsonData, parameters){ + var multiMarkerFile = JSON.parse(jsonData) + // declare variables + var subMarkersControls = [] + var subMarkerPoses = [] + // handle default arguments + parameters = parameters || {} + + // prepare the parameters + multiMarkerFile.subMarkersControls.forEach(function(item){ + // create a markerRoot + var markerRoot = new THREE.Object3D() + parent3D.add(markerRoot) + + // create markerControls for our markerRoot + var subMarkerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, item.parameters) + +// if( true ){ + // store it in the parameters + subMarkersControls.push(subMarkerControls) + subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// }else{ +// // build a smoothedControls +// var smoothedRoot = new THREE.Group() +// parent3D.add(smoothedRoot) +// var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot, { +// lerpPosition : 0.1, +// lerpQuaternion : 0.1, +// lerpScale : 0.1, +// minVisibleDelay: 0, +// minUnvisibleDelay: 0, +// }) +// onRenderFcts.push(function(delta){ +// smoothedControls.update(markerRoot) // TODO this is a global +// }) +// +// +// // store it in the parameters +// subMarkersControls.push(smoothedControls) +// subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// } + }) + + parameters.subMarkersControls = subMarkersControls + parameters.subMarkerPoses = subMarkerPoses + // create a new THREEx.ArMultiMarkerControls + var multiMarkerControls = new THREEx.ArMultiMarkerControls(arToolkitContext, markerRoot, parameters) + + // return it + return multiMarkerControls +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaLearning = THREEx.ArMultiMakersLearning = function(arToolkitContext, subMarkersControls){ + var _this = this + this._arToolkitContext = arToolkitContext + + // Init variables + this.subMarkersControls = subMarkersControls + this.enabled = true + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + + +////////////////////////////////////////////////////////////////////////////// +// statistic collection +////////////////////////////////////////////////////////////////////////////// + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaLearning.prototype._onSourceProcessed = function(){ + var originQuaternion = this.subMarkersControls[0].object3d.quaternion + // here collect the statistic on relative positioning + + // honor this.enabled + if( this.enabled === false ) return + + // keep only the visible markers + var visibleMarkerControls = this.subMarkersControls.filter(function(markerControls){ + return markerControls.object3d.visible === true + }) + + var count = Object.keys(visibleMarkerControls).length + + var positionDelta = new THREE.Vector3() + var quaternionDelta = new THREE.Quaternion() + var scaleDelta = new THREE.Vector3() + var tmpMatrix = new THREE.Matrix4() + + // go thru all the visibleMarkerControls + for(var i = 0; i < count; i++){ + var markerControls1 = visibleMarkerControls[i] + for(var j = 0; j < count; j++){ + var markerControls2 = visibleMarkerControls[j] + + // if markerControls1 is markerControls2, then skip it + if( i === j ) continue + + + ////////////////////////////////////////////////////////////////////////////// + // create data in markerControls1.object3d.userData if needed + ////////////////////////////////////////////////////////////////////////////// + // create seenCouples for markerControls1 if needed + if( markerControls1.object3d.userData.seenCouples === undefined ){ + markerControls1.object3d.userData.seenCouples = {} + } + var seenCouples = markerControls1.object3d.userData.seenCouples + // create the multiMarkerPosition average if needed` + if( seenCouples[markerControls2.id] === undefined ){ + // console.log('create seenCouples between', markerControls1.id, 'and', markerControls2.id) + seenCouples[markerControls2.id] = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + } + + + ////////////////////////////////////////////////////////////////////////////// + // Compute markerControls2 position relative to markerControls1 + ////////////////////////////////////////////////////////////////////////////// + + // compute markerControls2 position/quaternion/scale in relation with markerControls1 + tmpMatrix.getInverse(markerControls1.object3d.matrix) + tmpMatrix.multiply(markerControls2.object3d.matrix) + tmpMatrix.decompose(positionDelta, quaternionDelta, scaleDelta) + + ////////////////////////////////////////////////////////////////////////////// + // update statistics + ////////////////////////////////////////////////////////////////////////////// + var stats = seenCouples[markerControls2.id] + // update the count + stats.count++ + + // update the average of position/rotation/scale + THREEx.ArMultiMarkerControls.averageVector3(stats.position.sum, positionDelta, stats.count, stats.position.average) + THREEx.ArMultiMarkerControls.averageQuaternion(stats.quaternion.sum, quaternionDelta, originQuaternion, stats.count, stats.quaternion.average) + THREEx.ArMultiMarkerControls.averageVector3(stats.scale.sum, scaleDelta, stats.count, stats.scale.average) + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Compute markers transformation matrix from current stats +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.computeResult = function(){ + var _this = this + var originSubControls = this.subMarkersControls[0] + + this.deleteResult() + + // special case of originSubControls averageMatrix + originSubControls.object3d.userData.result = { + averageMatrix : new THREE.Matrix4(), + confidenceFactor: 1, + } + // TODO here check if the originSubControls has been seen at least once!! + + + /** + * ALGO in pseudo code + * + * - Set confidenceFactor of origin sub markers as 1 + * + * Start Looping + * - For a given sub marker, skip it if it already has a result. + * - if no result, check all seen couple and find n ones which has a progress of 1 or more. + * - So the other seen sub markers, got a valid transformation matrix. + * - So take local averages position/orientation/scale, compose a transformation matrix. + * - aka transformation matrix from parent matrix * transf matrix pos/orientation/scale + * - Multiple it by the other seen marker matrix. + * - Loop on the array until one pass could not compute any new sub marker + */ + + do{ + var resultChanged = false + // loop over each subMarkerControls + this.subMarkersControls.forEach(function(subMarkerControls){ + + // if subMarkerControls already has a result, do nothing + var result = subMarkerControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === true ) return + + // console.log('compute subMarkerControls', subMarkerControls.name()) + var otherSubControlsID = _this._getLearnedCoupleStats(subMarkerControls) + if( otherSubControlsID === null ){ + // console.log('no learnedCoupleStats') + return + } + + var otherSubControls = _this._getSubMarkerControlsByID(otherSubControlsID) + + var seenCoupleStats = subMarkerControls.object3d.userData.seenCouples[otherSubControlsID] + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(seenCoupleStats.position.average, seenCoupleStats.quaternion.average, seenCoupleStats.scale.average) + + var otherAverageMatrix = otherSubControls.object3d.userData.result.averageMatrix + + var matrix = new THREE.Matrix4().getInverse(otherAverageMatrix).multiply(averageMatrix) + matrix = new THREE.Matrix4().getInverse(matrix) + + console.assert( subMarkerControls.object3d.userData.result === undefined ) + subMarkerControls.object3d.userData.result = { + averageMatrix: matrix, + confidenceFactor: 1 + } + + resultChanged = true + }) + // console.log('loop') + }while(resultChanged === true) + + // debugger + // console.log('json:', this.toJSON()) + // this.subMarkersControls.forEach(function(subMarkerControls){ + // var hasResult = subMarkerControls.object3d.userData.result !== undefined + // console.log('marker', subMarkerControls.name(), hasResult ? 'has' : 'has NO', 'result') + // }) +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * get a _this.subMarkersControls id based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats = function(subMarkerControls){ + + // if this subMarkerControls has never been seen with another subMarkerControls + if( subMarkerControls.object3d.userData.seenCouples === undefined ) return null + + var seenCouples = subMarkerControls.object3d.userData.seenCouples + var coupleControlsIDs = Object.keys(seenCouples).map(Number) + + for(var i = 0; i < coupleControlsIDs.length; i++){ + var otherSubControlsID = coupleControlsIDs[i] + // get otherSubControls + var otherSubControls = this._getSubMarkerControlsByID(otherSubControlsID) + + // if otherSubControls isnt learned, skip it + var result = otherSubControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === false ) continue + + // return this seenCouplesStats + return otherSubControlsID + } + + // if none is found, return null + return null +} + +/** + * get a _this.subMarkersControls based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID = function(controlsID){ + + for(var i = 0; i < this.subMarkersControls.length; i++){ + var subMarkerControls = this.subMarkersControls[i] + if( subMarkerControls.id === controlsID ){ + return subMarkerControls + } + } + + return null +} + ////////////////////////////////////////////////////////////////////////////// +// JSON file building +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.toJSON = function(){ + + // compute the average matrix before generating the file + this.computeResult() + + ////////////////////////////////////////////////////////////////////////////// + // actually build the json + ////////////////////////////////////////////////////////////////////////////// + var data = { + meta : { + createdBy : "Area Learning - AR.js "+THREEx.ArToolkitContext.REVISION, + createdAt : new Date().toJSON(), + + }, + trackingBackend: this._arToolkitContext.parameters.trackingBackend, + subMarkersControls : [], + } + + var originSubControls = this.subMarkersControls[0] + var originMatrixInverse = new THREE.Matrix4().getInverse(originSubControls.object3d.matrix) + this.subMarkersControls.forEach(function(subMarkerControls, index){ + + // if a subMarkerControls has no result, ignore it + if( subMarkerControls.object3d.userData.result === undefined ) return + + var poseMatrix = subMarkerControls.object3d.userData.result.averageMatrix + console.assert(poseMatrix instanceof THREE.Matrix4) + + + // build the info + var info = { + parameters : { + // to fill ... + }, + poseMatrix : poseMatrix.toArray(), + } + if( subMarkerControls.parameters.type === 'pattern' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.patternUrl = subMarkerControls.parameters.patternUrl + }else if( subMarkerControls.parameters.type === 'barcode' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.barcodeValue = subMarkerControls.parameters.barcodeValue + }else console.assert(false) + + data.subMarkersControls.push(info) + }) + + var strJSON = JSON.stringify(data, null, '\t'); + + + ////////////////////////////////////////////////////////////////////////////// + // round matrix elements to ease readability - for debug + ////////////////////////////////////////////////////////////////////////////// + var humanReadable = false + if( humanReadable === true ){ + var tmp = JSON.parse(strJSON) + tmp.subMarkersControls.forEach(function(markerControls){ + markerControls.poseMatrix = markerControls.poseMatrix.map(function(value){ + var roundingFactor = 100 + return Math.round(value*roundingFactor)/roundingFactor + }) + }) + strJSON = JSON.stringify(tmp, null, '\t'); + } + + return strJSON; +} + +////////////////////////////////////////////////////////////////////////////// +// utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.resetStats = function(){ + this.deleteResult() + + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.seenCouples + }) +} +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.deleteResult = function(){ + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.result + }) +} +var THREEx = THREEx || {} + +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaUtils = THREEx.ArMultiMarkerUtils = {} + +////////////////////////////////////////////////////////////////////////////// +// navigateToLearnerPage +////////////////////////////////////////////////////////////////////////////// + +/** + * Navigate to the multi-marker learner page + * + * @param {String} learnerBaseURL - the base url for the learner + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.navigateToLearnerPage = function(learnerBaseURL, trackingBackend){ + var learnerParameters = { + backURL : location.href, + trackingBackend: trackingBackend, + markersControlsParameters: ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters(trackingBackend), + } + location.href = learnerBaseURL + '?' + encodeURIComponent(JSON.stringify(learnerParameters)) +} + +////////////////////////////////////////////////////////////////////////////// +// DefaultMultiMarkerFile +////////////////////////////////////////////////////////////////////////////// + +/** + * Create and store a default multi-marker file + * + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile = function(trackingBackend){ + var file = ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile(trackingBackend) + // json.strinfy the value and store it in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(file)) +} + + + +/** + * Create a default multi-marker file + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object of the multi-marker file + */ +ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile = function(trackingBackend){ + console.assert(trackingBackend) + if( trackingBackend === undefined ) debugger + + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + // create the base file + var file = { + meta : { + createdBy : 'AR.js ' + ARjs.Context.REVISION + ' - Default Marker', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... being filled + ] + } + // add a subMarkersControls + file.subMarkersControls[0] = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(0,0, 0).toArray(), + } + if( trackingBackend === 'artoolkit' ){ + file.subMarkersControls[0].parameters.type = 'pattern' + file.subMarkersControls[0].parameters.patternUrl = absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + }else console.assert(false) + + // json.strinfy the value and store it in localStorage + return file +} + +////////////////////////////////////////////////////////////////////////////// +// createDefaultMarkersControlsParameters +////////////////////////////////////////////////////////////////////////////// + +/** + * Create a default controls parameters for the multi-marker learner + * + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object containing the controls parameters + */ +ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters = function(trackingBackend){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + + if( trackingBackend === 'artoolkit' ){ + // pattern hiro/kanji/a/b/c/f + var markersControlsParameters = [ + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt', + }, + ] + }else console.assert(false) + return markersControlsParameters +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +/** + * generate areaFile + */ +ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution = function (trackingBackend, resolutionW, resolutionH) { + // generate areaFile + var areaFile = this.buildMarkersAreaFileFromResolution(trackingBackend, resolutionW, resolutionH) + // store areaFile in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(areaFile)) +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaUtils.buildMarkersAreaFileFromResolution = function(trackingBackend, resolutionW, resolutionH){ + // create the base file + var file = { + meta : { + createdBy : 'AR.js - Augmented Website', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... + ] + } + + var whiteMargin = 0.1 + if( resolutionW > resolutionH ){ + var markerImageSize = 0.4 * resolutionH + }else if( resolutionW < resolutionH ){ + var markerImageSize = 0.4 * resolutionW + }else if( resolutionW === resolutionH ){ + // specific for twitter player - https://dev.twitter.com/cards/types/player + var markerImageSize = 0.33 * resolutionW + }else console.assert(false) + + // console.warn('using new markerImageSize computation') + var actualMarkerSize = markerImageSize * (1 - 2*whiteMargin) + + var deltaX = (resolutionW - markerImageSize)/2 / actualMarkerSize + var deltaZ = (resolutionH - markerImageSize)/2 / actualMarkerSize + + var subMarkerControls = buildSubMarkerControls('center', 0, 0) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topleft', -deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topright', +deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomleft', -deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomright', +deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + return file + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + function buildSubMarkerControls(layout, positionX, positionZ){ + console.log('buildSubMarkerControls', layout, positionX, positionZ) + // create subMarkersControls + var subMarkersControls = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(positionX,0, positionZ).toArray(), + } + // fill the parameters + if( trackingBackend === 'artoolkit' ){ + layout2MarkerParametersArtoolkit(subMarkersControls.parameters, layout) + }else console.assert(false) + // return subMarkersControls + return subMarkersControls + } + + function layout2MarkerParametersArtoolkit(parameters, layout){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + var layout2PatternUrl = { + 'center' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt'), + 'topleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt'), + 'topright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt'), + 'bottomleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt'), + 'bottomright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt'), + } + console.assert(layout2PatternUrl[layout] !== undefined ) + parameters.type = 'pattern' + parameters.patternUrl = layout2PatternUrl[layout] + return + function convertRelativeUrlToAbsolute(relativeUrl){ + var tmpLink = document.createElement('a'); + tmpLink.href = relativeUrl + return tmpLink.href + } + } +} +////////////////////////////////////////////////////////////////////////////// +// arjs-anchor +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-anchor', { + dependencies: ['arjs', 'artoolkit'], + schema: { + preset: { + type: 'string', + }, + markerhelpers: { // IIF preset === 'area' + type: 'boolean', + default: false, + }, + + // controls parameters + size: { + type: 'number', + default: 1 + }, + type: { + type: 'string', + }, + patternUrl: { + type: 'string', + }, + barcodeValue: { + type: 'number' + }, + changeMatrixMode: { + type: 'string', + default: 'modelViewMatrix', + }, + minConfidence: { + type: 'number', + default: 0.6, + }, + smooth: { + type: 'boolean', + default: false, + }, + smoothCount: { + type: 'number', + default: 5, + }, + smoothTolerance: { + type: 'number', + default: 0.01, + }, + smoothThreshold: { + type: 'number', + default: 2, + }, + }, + init: function () { + var _this = this + + // get arjsSystem + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = false + _this._arAnchor = null + + // honor object visibility + if (_this.data.changeMatrixMode === 'modelViewMatrix') { + _this.el.object3D.visible = false + } else if (_this.data.changeMatrixMode === 'cameraTransformMatrix') { + _this.el.sceneEl.object3D.visible = false + } else console.assert(false) + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function () { + // wait until the system is isReady + if (arjsSystem.isReady === false) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // update arProfile + ////////////////////////////////////////////////////////////////////////////// + var arProfile = arjsSystem._arProfile + + // arProfile.changeMatrixMode('modelViewMatrix') + arProfile.changeMatrixMode(_this.data.changeMatrixMode) + + // honor this.data.preset + var markerParameters = Object.assign({}, arProfile.defaultMarkerParameters) + + if (_this.data.preset === 'hiro') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'kanji') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'area') { + markerParameters.type = 'barcode' + markerParameters.barcodeValue = 1001 + markerParameters.markersAreaEnabled = true + } else if (_this.data.type === 'barcode') { + markerParameters = { + type: _this.data.type, + changeMatrixMode: 'modelViewMatrix', + barcodeValue: _this.data.barcodeValue, + markersAreaEnabled: false + } + } else if (_this.data.type === 'pattern') { + markerParameters.type = _this.data.type + markerParameters.patternUrl = _this.data.patternUrl; + markerParameters.markersAreaEnabled = false + } + + markerParameters.minConfidence = _this.data.minCondidence; + markerParameters.smooth = _this.data.smooth; + markerParameters.smoothCount = _this.data.smoothCount; + markerParameters.smoothTolerance = _this.data.smoothTolerance; + markerParameters.smoothThreshold = _this.data.smoothThreshold; + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + + var arSession = arjsSystem._arSession + var arAnchor = _this._arAnchor = new ARjs.Anchor(arSession, markerParameters) + + // it is now considered isReady + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (arjsSystem.data.debugUIEnabled) { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1; color: grey;') + document.body.appendChild(containerElement) + } + // create anchorDebugUI + var anchorDebugUI = new ARjs.AnchorDebugUI(arAnchor) + containerElement.appendChild(anchorDebugUI.domElement) + } + }, 1000 / 60) + }, + remove: function () { + }, + update: function () { + }, + tick: function () { + var _this = this + // if not yet isReady, do nothing + if (this.isReady === false) return + + ////////////////////////////////////////////////////////////////////////////// + // update arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + this._arAnchor.update() + + ////////////////////////////////////////////////////////////////////////////// + // honor pose + ////////////////////////////////////////////////////////////////////////////// + var arWorldRoot = this._arAnchor.object3d + arWorldRoot.updateMatrixWorld(true) + arWorldRoot.matrixWorld.decompose(this.el.object3D.position, this.el.object3D.quaternion, this.el.object3D.scale) + + ////////////////////////////////////////////////////////////////////////////// + // honor visibility + ////////////////////////////////////////////////////////////////////////////// + if (_this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix') { + var wasVisible = _this.el.object3D.visible + _this.el.object3D.visible = this._arAnchor.object3d.visible + } else if (_this._arAnchor.parameters.changeMatrixMode === 'cameraTransformMatrix') { + var wasVisible = _this.el.sceneEl.object3D.visible + _this.el.sceneEl.object3D.visible = this._arAnchor.object3d.visible + } else console.assert(false) + + // emit markerFound markerLost + if (_this._arAnchor.object3d.visible === true && wasVisible === false) { + _this.el.emit('markerFound') + } else if (_this._arAnchor.object3d.visible === false && wasVisible === true) { + _this.el.emit('markerLost') + } + } +}) + +////////////////////////////////////////////////////////////////////////////// +// define some primitives shortcuts +////////////////////////////////////////////////////////////////////////////// + +AFRAME.registerPrimitive('a-anchor', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-camera-static', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'camera': {}, + }, + mappings: { + } +})) + +////////////////////////////////////////////////////////////////////////////// +// backward compatibility +////////////////////////////////////////////////////////////////////////////// +// FIXME +AFRAME.registerPrimitive('a-marker', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-marker-camera', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': { + changeMatrixMode: 'cameraTransformMatrix' + }, + 'camera': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + } +})) +////////////////////////////////////////////////////////////////////////////// +// arjs-hit-testing +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-hit-testing', { + dependencies: ['arjs', 'artoolkit'], + schema: { + enabled : { + type: 'boolean', + default: false, + }, + renderDebug : { + type: 'boolean', + default: false, + }, + }, + init: function () { + var _this = this + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + +// TODO make it work on cameraTransformMatrix too +// + _this.isReady = false + _this._arAnchor = null + _this._arHitTesting = null + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function(){ + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + // wait until anchorComponent is isReady + if( anchorComponent === undefined || anchorComponent.isReady === false ) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arAnchor = anchorComponent._arAnchor + var arSession = arjsSystem._arSession + var renderer = arSession.parameters.renderer + + var hitTesting = _this._arHitTesting = new ARjs.HitTesting(arSession) + hitTesting.enabled = _this.data.enabled + + _this.isReady = true + }, 1000/60) + }, + remove : function(){ + }, + update: function () { + }, + tick: function(){ + var _this = this + // if not yet isReady, do nothing + if( this.isReady === false ) return + + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + var arSession = arjsSystem._arSession + + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + var arAnchor = anchorComponent._arAnchor + + + var hitTesting = this._arHitTesting + var camera = arSession.parameters.camera +// console.log(camera.position) + hitTesting.update(camera, arAnchor.object3d, arAnchor.parameters.changeMatrixMode) + } +}); + +/** + * @author richt / http://richt.me + * @author WestLangley / http://github.com/WestLangley + * + * W3C Device Orientation control (http://w3c.github.io/deviceorientation/spec-source-orientation.html) + */ + +/* NOTE that this is a modified version of THREE.DeviceOrientationControls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +ArjsDeviceOrientationControls = function ( object ) { + + var scope = this; + + this.object = object; + this.object.rotation.reorder( 'YXZ' ); + + this.enabled = true; + + this.deviceOrientation = {}; + this.screenOrientation = 0; + + this.alphaOffset = 0; // radians + + this.smoothingFactor = 1; + + this.TWO_PI = 2 * Math.PI; + this.HALF_PI = 0.5 * Math.PI; + + var onDeviceOrientationChangeEvent = function ( event ) { + + scope.deviceOrientation = event; + + }; + + var onScreenOrientationChangeEvent = function () { + + scope.screenOrientation = window.orientation || 0; + + }; + + // The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y'' + + var setObjectQuaternion = function () { + + var zee = new THREE.Vector3( 0, 0, 1 ); + + var euler = new THREE.Euler(); + + var q0 = new THREE.Quaternion(); + + var q1 = new THREE.Quaternion( - Math.sqrt( 0.5 ), 0, 0, Math.sqrt( 0.5 ) ); // - PI/2 around the x-axis + + return function ( quaternion, alpha, beta, gamma, orient ) { + + euler.set( beta, alpha, - gamma, 'YXZ' ); // 'ZXY' for the device, but 'YXZ' for us + + quaternion.setFromEuler( euler ); // orient the device + + quaternion.multiply( q1 ); // camera looks out the back of the device, not the top + + quaternion.multiply( q0.setFromAxisAngle( zee, - orient ) ); // adjust for screen orientation + + }; + + }(); + + this.connect = function () { + + onScreenOrientationChangeEvent(); + + window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = true; + + }; + + this.disconnect = function () { + + window.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = false; + + }; + + this.update = function () { + + if ( scope.enabled === false ) return; + + var device = scope.deviceOrientation; + + if ( device ) { + + var alpha = device.alpha ? THREE.Math.degToRad( device.alpha ) + scope.alphaOffset : 0; // Z + + var beta = device.beta ? THREE.Math.degToRad( device.beta ) : 0; // X' + + var gamma = device.gamma ? THREE.Math.degToRad( device.gamma ) : 0; // Y'' + + var orient = scope.screenOrientation ? THREE.Math.degToRad( scope.screenOrientation ) : 0; // O + + // NW Added smoothing code + var k = this.smoothingFactor; + + if(this.lastOrientation) { + alpha = this._getSmoothedAngle(alpha, this.lastOrientation.alpha, k); + beta = this._getSmoothedAngle(beta + Math.PI, this.lastOrientation.beta, k); + gamma = this._getSmoothedAngle(gamma + this.HALF_PI, this.lastOrientation.gamma, k, Math.PI); + + } else { + beta += Math.PI; + gamma += this.HALF_PI; + } + + this.lastOrientation = { + alpha: alpha, + beta: beta, + gamma: gamma + }; + setObjectQuaternion( scope.object.quaternion, alpha, beta - Math.PI, gamma - this.HALF_PI, orient ); + + } + }; + + + // NW Added + this._orderAngle = function(a, b, range = this.TWO_PI) { + if ((b > a && Math.abs(b - a) < range / 2) || (a > b && Math.abs(b - a) > range / 2)) { + return { left: a, right: b } + } else { + return { left: b, right: a } + } + }; + + // NW Added + this._getSmoothedAngle = function(a, b, k, range = this.TWO_PI) { + const angles = this._orderAngle(a, b, range); + const angleshift = angles.left; + const origAnglesRight = angles.right; + angles.left = 0; + angles.right -= angleshift; + if(angles.right < 0) angles.right += range; + let newangle = origAnglesRight == b ? (1 - k)*angles.right + k * angles.left : k * angles.right + (1 - k) * angles.left; + newangle += angleshift; + if(newangle >= range) newangle -= range; + return newangle; + }; + + this.dispose = function () { + scope.disconnect(); + }; + + this.connect(); + +}; +// To avoid recalculation at every mouse movement tick +var PI_2 = Math.PI / 2; + + +/** + * look-controls. Update entity pose, factoring mouse, touch, and WebVR API data. + */ + +/* NOTE that this is a modified version of A-Frame's look-controls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +AFRAME.registerComponent('arjs-look-controls', { + dependencies: ['position', 'rotation'], + + schema: { + enabled: {default: true}, + magicWindowTrackingEnabled: {default: true}, + pointerLockEnabled: {default: false}, + reverseMouseDrag: {default: false}, + reverseTouchDrag: {default: false}, + touchEnabled: {default: true}, + smoothingFactor: { type: 'number', default: 1 } + }, + + init: function () { + this.deltaYaw = 0; + this.previousHMDPosition = new THREE.Vector3(); + this.hmdQuaternion = new THREE.Quaternion(); + this.magicWindowAbsoluteEuler = new THREE.Euler(); + this.magicWindowDeltaEuler = new THREE.Euler(); + this.position = new THREE.Vector3(); + this.magicWindowObject = new THREE.Object3D(); + this.rotation = {}; + this.deltaRotation = {}; + this.savedPose = null; + this.pointerLocked = false; + this.setupMouseControls(); + this.bindMethods(); + this.previousMouseEvent = {}; + + this.setupMagicWindowControls(); + + // To save / restore camera pose + this.savedPose = { + position: new THREE.Vector3(), + rotation: new THREE.Euler() + }; + + // Call enter VR handler if the scene has entered VR before the event listeners attached. + if (this.el.sceneEl.is('vr-mode')) { this.onEnterVR(); } + }, + + setupMagicWindowControls: function () { + var magicWindowControls; + var data = this.data; + + // Only on mobile devices and only enabled if DeviceOrientation permission has been granted. + if (AFRAME.utils.device.isMobile()) { + magicWindowControls = this.magicWindowControls = new ArjsDeviceOrientationControls(this.magicWindowObject); + if (typeof DeviceOrientationEvent !== 'undefined' && DeviceOrientationEvent.requestPermission) { + magicWindowControls.enabled = false; + if (this.el.sceneEl.components['device-orientation-permission-ui'].permissionGranted) { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + } else { + this.el.sceneEl.addEventListener('deviceorientationpermissiongranted', function () { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + }); + } + } + } + }, + + update: function (oldData) { + var data = this.data; + + // Disable grab cursor classes if no longer enabled. + if (data.enabled !== oldData.enabled) { + this.updateGrabCursor(data.enabled); + } + + // Reset magic window eulers if tracking is disabled. + if (oldData && !data.magicWindowTrackingEnabled && oldData.magicWindowTrackingEnabled) { + this.magicWindowAbsoluteEuler.set(0, 0, 0); + this.magicWindowDeltaEuler.set(0, 0, 0); + } + + // Pass on magic window tracking setting to magicWindowControls. + if (this.magicWindowControls) { + this.magicWindowControls.enabled = data.magicWindowTrackingEnabled; + this.magicWindowControls.smoothingFactor = data.smoothingFactor; + } + + if (oldData && !data.pointerLockEnabled !== oldData.pointerLockEnabled) { + this.removeEventListeners(); + this.addEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + } + }, + + tick: function (t) { + var data = this.data; + if (!data.enabled) { return; } + this.updateOrientation(); + }, + + play: function () { + this.addEventListeners(); + }, + + pause: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + remove: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + bindMethods: function () { + this.onMouseDown = AFRAME.utils.bind(this.onMouseDown, this); + this.onMouseMove = AFRAME.utils.bind(this.onMouseMove, this); + this.onMouseUp = AFRAME.utils.bind(this.onMouseUp, this); + this.onTouchStart = AFRAME.utils.bind(this.onTouchStart, this); + this.onTouchMove = AFRAME.utils.bind(this.onTouchMove, this); + this.onTouchEnd = AFRAME.utils.bind(this.onTouchEnd, this); + this.onEnterVR = AFRAME.utils.bind(this.onEnterVR, this); + this.onExitVR = AFRAME.utils.bind(this.onExitVR, this); + this.onPointerLockChange = AFRAME.utils.bind(this.onPointerLockChange, this); + this.onPointerLockError = AFRAME.utils.bind(this.onPointerLockError, this); + }, + + /** + * Set up states and Object3Ds needed to store rotation data. + */ + setupMouseControls: function () { + this.mouseDown = false; + this.pitchObject = new THREE.Object3D(); + this.yawObject = new THREE.Object3D(); + this.yawObject.position.y = 10; + this.yawObject.add(this.pitchObject); + }, + + /** + * Add mouse and touch event listeners to canvas. + */ + addEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl.canvas; + + // Wait for canvas to load. + if (!canvasEl) { + sceneEl.addEventListener('render-target-loaded', AFRAME.utils.bind(this.addEventListeners, this)); + return; + } + + // Mouse events. + canvasEl.addEventListener('mousedown', this.onMouseDown, false); + window.addEventListener('mousemove', this.onMouseMove, false); + window.addEventListener('mouseup', this.onMouseUp, false); + + // Touch events. + canvasEl.addEventListener('touchstart', this.onTouchStart); + window.addEventListener('touchmove', this.onTouchMove); + window.addEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.addEventListener('enter-vr', this.onEnterVR); + sceneEl.addEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + if (this.data.pointerLockEnabled) { + document.addEventListener('pointerlockchange', this.onPointerLockChange, false); + document.addEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.addEventListener('pointerlockerror', this.onPointerLockError, false); + } + }, + + /** + * Remove mouse and touch event listeners from canvas. + */ + removeEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl && sceneEl.canvas; + + if (!canvasEl) { return; } + + // Mouse events. + canvasEl.removeEventListener('mousedown', this.onMouseDown); + window.removeEventListener('mousemove', this.onMouseMove); + window.removeEventListener('mouseup', this.onMouseUp); + + // Touch events. + canvasEl.removeEventListener('touchstart', this.onTouchStart); + window.removeEventListener('touchmove', this.onTouchMove); + window.removeEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.removeEventListener('enter-vr', this.onEnterVR); + sceneEl.removeEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + document.removeEventListener('pointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('pointerlockerror', this.onPointerLockError, false); + }, + + /** + * Update orientation for mobile, mouse drag, and headset. + * Mouse-drag only enabled if HMD is not active. + */ + updateOrientation: (function () { + var poseMatrix = new THREE.Matrix4(); + + return function () { + var object3D = this.el.object3D; + var pitchObject = this.pitchObject; + var yawObject = this.yawObject; + var pose; + var sceneEl = this.el.sceneEl; + + // In VR mode, THREE is in charge of updating the camera pose. + if (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected()) { + // With WebXR THREE applies headset pose to the object3D matrixWorld internally. + // Reflect values back on position, rotation, scale for getAttribute to return the expected values. + if (sceneEl.hasWebXR) { + pose = sceneEl.renderer.xr.getCameraPose(); + if (pose) { + poseMatrix.elements = pose.transform.matrix; + poseMatrix.decompose(object3D.position, object3D.rotation, object3D.scale); + } + } + return; + } + + this.updateMagicWindowOrientation(); + + // On mobile, do camera rotation with touch events and sensors. + object3D.rotation.x = this.magicWindowDeltaEuler.x + pitchObject.rotation.x; + object3D.rotation.y = this.magicWindowDeltaEuler.y + yawObject.rotation.y; + object3D.rotation.z = this.magicWindowDeltaEuler.z; + }; + })(), + + updateMagicWindowOrientation: function () { + var magicWindowAbsoluteEuler = this.magicWindowAbsoluteEuler; + var magicWindowDeltaEuler = this.magicWindowDeltaEuler; + // Calculate magic window HMD quaternion. + if (this.magicWindowControls && this.magicWindowControls.enabled) { + this.magicWindowControls.update(); + magicWindowAbsoluteEuler.setFromQuaternion(this.magicWindowObject.quaternion, 'YXZ'); + if (!this.previousMagicWindowYaw && magicWindowAbsoluteEuler.y !== 0) { + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + if (this.previousMagicWindowYaw) { + magicWindowDeltaEuler.x = magicWindowAbsoluteEuler.x; + magicWindowDeltaEuler.y += magicWindowAbsoluteEuler.y - this.previousMagicWindowYaw; + magicWindowDeltaEuler.z = magicWindowAbsoluteEuler.z; + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + } + }, + + /** + * Translate mouse drag into rotation. + * + * Dragging up and down rotates the camera around the X-axis (yaw). + * Dragging left and right rotates the camera around the Y-axis (pitch). + */ + onMouseMove: function (evt) { + var direction; + var movementX; + var movementY; + var pitchObject = this.pitchObject; + var previousMouseEvent = this.previousMouseEvent; + var yawObject = this.yawObject; + + // Not dragging or not enabled. + if (!this.data.enabled || (!this.mouseDown && !this.pointerLocked)) { return; } + + // Calculate delta. + if (this.pointerLocked) { + movementX = evt.movementX || evt.mozMovementX || 0; + movementY = evt.movementY || evt.mozMovementY || 0; + } else { + movementX = evt.screenX - previousMouseEvent.screenX; + movementY = evt.screenY - previousMouseEvent.screenY; + } + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + + // Calculate rotation. + direction = this.data.reverseMouseDrag ? 1 : -1; + yawObject.rotation.y += movementX * 0.002 * direction; + pitchObject.rotation.x += movementY * 0.002 * direction; + pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x)); + }, + + /** + * Register mouse down to detect mouse drag. + */ + onMouseDown: function (evt) { + var sceneEl = this.el.sceneEl; + if (!this.data.enabled || (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected())) { return; } + // Handle only primary button. + if (evt.button !== 0) { return; } + + var canvasEl = sceneEl && sceneEl.canvas; + + this.mouseDown = true; + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + this.showGrabbingCursor(); + + if (this.data.pointerLockEnabled && !this.pointerLocked) { + if (canvasEl.requestPointerLock) { + canvasEl.requestPointerLock(); + } else if (canvasEl.mozRequestPointerLock) { + canvasEl.mozRequestPointerLock(); + } + } + }, + + /** + * Shows grabbing cursor on scene + */ + showGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = 'grabbing'; + }, + + /** + * Hides grabbing cursor on scene + */ + hideGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = ''; + }, + + /** + * Register mouse up to detect release of mouse drag. + */ + onMouseUp: function () { + this.mouseDown = false; + this.hideGrabbingCursor(); + }, + + /** + * Register touch down to detect touch drag. + */ + onTouchStart: function (evt) { + if (evt.touches.length !== 1 || + !this.data.touchEnabled || + this.el.sceneEl.is('vr-mode')) { return; } + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + this.touchStarted = true; + }, + + /** + * Translate touch move to Y-axis rotation. + */ + onTouchMove: function (evt) { + var direction; + var canvas = this.el.sceneEl.canvas; + var deltaY; + var yawObject = this.yawObject; + + if (!this.touchStarted || !this.data.touchEnabled) { return; } + + deltaY = 2 * Math.PI * (evt.touches[0].pageX - this.touchStart.x) / canvas.clientWidth; + + direction = this.data.reverseTouchDrag ? 1 : -1; + // Limit touch orientaion to to yaw (y axis). + yawObject.rotation.y -= deltaY * 0.5 * direction; + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + }, + + /** + * Register touch end to detect release of touch drag. + */ + onTouchEnd: function () { + this.touchStarted = false; + }, + + /** + * Save pose. + */ + onEnterVR: function () { + var sceneEl = this.el.sceneEl; + if (!sceneEl.checkHeadsetConnected()) { return; } + this.saveCameraPose(); + this.el.object3D.position.set(0, 0, 0); + this.el.object3D.rotation.set(0, 0, 0); + if (sceneEl.hasWebXR) { + this.el.object3D.matrixAutoUpdate = false; + this.el.object3D.updateMatrix(); + } + }, + + /** + * Restore the pose. + */ + onExitVR: function () { + if (!this.el.sceneEl.checkHeadsetConnected()) { return; } + this.restoreCameraPose(); + this.previousHMDPosition.set(0, 0, 0); + this.el.object3D.matrixAutoUpdate = true; + }, + + /** + * Update Pointer Lock state. + */ + onPointerLockChange: function () { + this.pointerLocked = !!(document.pointerLockElement || document.mozPointerLockElement); + }, + + /** + * Recover from Pointer Lock error. + */ + onPointerLockError: function () { + this.pointerLocked = false; + }, + + // Exits pointer-locked mode. + exitPointerLock: function () { + document.exitPointerLock(); + this.pointerLocked = false; + }, + + /** + * Toggle the feature of showing/hiding the grab cursor. + */ + updateGrabCursor: function (enabled) { + var sceneEl = this.el.sceneEl; + + function enableGrabCursor () { sceneEl.canvas.classList.add('a-grab-cursor'); } + function disableGrabCursor () { sceneEl.canvas.classList.remove('a-grab-cursor'); } + + if (!sceneEl.canvas) { + if (enabled) { + sceneEl.addEventListener('render-target-loaded', enableGrabCursor); + } else { + sceneEl.addEventListener('render-target-loaded', disableGrabCursor); + } + return; + } + + if (enabled) { + enableGrabCursor(); + return; + } + disableGrabCursor(); + }, + + /** + * Save camera pose before entering VR to restore later if exiting. + */ + saveCameraPose: function () { + var el = this.el; + + this.savedPose.position.copy(el.object3D.position); + this.savedPose.rotation.copy(el.object3D.rotation); + this.hasSavedPose = true; + }, + + /** + * Reset camera pose to before entering VR. + */ + restoreCameraPose: function () { + var el = this.el; + var savedPose = this.savedPose; + + if (!this.hasSavedPose) { return; } + + // Reset camera orientation. + el.object3D.position.copy(savedPose.position); + el.object3D.rotation.copy(savedPose.rotation); + this.hasSavedPose = false; + } +}); +AFRAME.registerComponent('arjs-webcam-texture', { + + init: function() { + this.scene = this.el.sceneEl; + this.texCamera = new THREE.OrthographicCamera(-0.5, 0.5, 0.5, -0.5, 0, 10); + this.texScene = new THREE.Scene(); + + this.scene.renderer.autoClear = false; + this.video = document.createElement("video"); + this.video.setAttribute("autoplay", true); + this.video.setAttribute("display", "none"); + document.body.appendChild(this.video); + this.geom = new THREE.PlaneBufferGeometry(); //0.5, 0.5); + this.texture = new THREE.VideoTexture(this.video); + this.material = new THREE.MeshBasicMaterial( { map: this.texture } ); + const mesh = new THREE.Mesh(this.geom, this.material); + this.texScene.add(mesh); + }, + + play: function() { + if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + const constraints = { video: { + facingMode: 'environment' } + }; + navigator.mediaDevices.getUserMedia(constraints).then( stream=> { + this.video.srcObject = stream; + this.video.play(); + }) + .catch(e => { alert(`Webcam error: ${e}`); }); + } else { + alert('sorry - media devices API not supported'); + } + }, + + tick: function() { + this.scene.renderer.clear(); + this.scene.renderer.render(this.texScene, this.texCamera); + this.scene.renderer.clearDepth(); + }, + + pause: function() { + this.video.srcObject.getTracks().forEach ( track => { + track.stop(); + }); + }, + + remove: function() { + this.material.dispose(); + this.texture.dispose(); + this.geom.dispose(); + } +}); +/* + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-camera', { + _watchPositionId: null, + originCoords: null, + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + maxDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 5, + }, + gpsTimeInterval: { + type: 'number', + default: 0, + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function () { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function () { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function () { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function () { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function () { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function () { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function () { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function () { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function (onSuccess, onError) { + if (!onError) { + onError = function (err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function () { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + this.originCoords = this.currentCoords; + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + _setPosition: function () { + var position = this.el.getAttribute('position'); + + // compute position.x + var dstCoords = { + longitude: this.currentCoords.longitude, + latitude: this.originCoords.latitude, + }; + + position.x = this.computeDistanceMeters(this.originCoords, dstCoords); + position.x *= this.currentCoords.longitude > this.originCoords.longitude ? 1 : -1; + + // compute position.z + var dstCoords = { + longitude: this.originCoords.longitude, + latitude: this.currentCoords.latitude, + } + + position.z = this.computeDistanceMeters(this.originCoords, dstCoords); + position.z *= this.currentCoords.latitude > this.originCoords.latitude ? -1 : 1; + + // update position + this.el.setAttribute('position', position); + + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between source and destination inputs. + * + * Calculate distance, bearing and more between Latitude/Longitude points + * Details: https://www.movable-type.co.uk/scripts/latlong.html + * + * @param {Position} src + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function (src, dest, isPlace) { + var distance = this._haversineDist (src, dest); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + // if function has been called for a place, and if it's too far and a max distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.maxDistance && this.data.maxDistance > 0 && distance > this.data.maxDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + + _haversineDist: function (src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function (alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function (event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function () { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); +AFRAME.registerComponent('gps-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-camera]'); + if (!camera.components['gps-camera']) { + console.error('gps-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-camera']; + } + this._updatePosition(); + }; + + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = { + longitude: this.data.longitude, + latitude: this.data.latitude, + }; + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + var distanceForMsg = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + _updatePosition: function() { + var position = { x: 0, y: this.el.getAttribute('position').y || 0, z: 0 } + + // update position.x + var dstCoords = { + longitude: this.data.longitude, + latitude: this._cameraGps.originCoords.latitude, + }; + + position.x = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + this._positionXDebug = position.x; + + position.x *= this.data.longitude > this._cameraGps.originCoords.longitude ? 1 : -1; + + // update position.z + var dstCoords = { + longitude: this._cameraGps.originCoords.longitude, + latitude: this.data.latitude, + }; + + position.z = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + position.z *= this.data.latitude > this._cameraGps.originCoords.latitude ? -1 : 1; + + if (position.y !== 0) { + var altitude = this._cameraGps.originCoords.altitude !== undefined ? this._cameraGps.originCoords.altitude : 0; + position.y = position.y - altitude; + } + + // update element's position in 3D world + this.el.setAttribute('position', position); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; +/** gps-projected-camera + * + * based on the original gps-camera, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original position (lat/lon) is projected into Spherical Mercator and + * stored. + * + * Then, when we receive a new position (lat/lon), this new position is + * projected into Spherical Mercator and then its world position calculated + * by comparing against the original position. + * + * The same is also the case for 'entity-places'; when these are added, their + * Spherical Mercator coords are calculated (see gps-projected-entity-place). + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + * + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-projected-camera', { + _watchPositionId: null, + originCoords: null, // original coords now in Spherical Mercator + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 0 + }, + gpsTimeInterval: { + type: 'number', + default: 0 + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function() { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function() { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function() { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function() { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function() { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function() { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function() { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function() { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function(onSuccess, onError) { + if (!onError) { + onError = function(err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function() { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + // Now store originCoords as PROJECTED original lat/lon, so that + // we can set the world origin to the original position in "metres" + this.originCoords = this._project(this.currentCoords.latitude, this.currentCoords.longitude); + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + /** + * Set the current position (in world coords, based on Spherical Mercator) + * + * @returns {void} + */ + _setPosition: function() { + var position = this.el.getAttribute('position'); + + var worldCoords = this.latLonToWorld(this.currentCoords.latitude, this.currentCoords.longitude); + + position.x = worldCoords[0]; + position.z = worldCoords[1]; + + // update position + this.el.setAttribute('position', position); + + // add the sphmerc position to the event (for testing only) + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between camera and destination input. + * + * Assume we are using a metre-based projection. Not all 'metre-based' + * projections give exact metres, e.g. Spherical Mercator, but it appears + * close enough to be used for AR at least in middle temperate + * latitudes (40 - 55). It is heavily distorted near the poles, however. + * + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function(dest, isPlace) { + var src = this.el.getAttribute("position"); + var dx = dest.x - src.x; + var dz = dest.z - src.z; + var distance = Math.sqrt(dx * dx + dz * dz); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the method caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + /** + * Converts latitude/longitude to OpenGL world coordinates. + * + * First projects lat/lon to absolute Spherical Mercator and then + * calculates the world coordinates by comparing the Spherical Mercator + * coordinates with the Spherical Mercator coordinates of the origin point. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} world coordinates + */ + latLonToWorld: function(lat, lon) { + var projected = this._project(lat, lon); + // Sign of z needs to be reversed compared to projected coordinates + return [projected[0] - this.originCoords[0], -(projected[1] - this.originCoords[1])]; + }, + /** + * Converts latitude/longitude to Spherical Mercator coordinates. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} Spherical Mercator coordinates + */ + _project: function(lat, lon) { + const HALF_EARTH = 20037508.34; + + // Convert the supplied coords to Spherical Mercator (EPSG:3857), also + // known as 'Google Projection', using the algorithm used extensively + // in various OpenStreetMap software. + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); + return [(lon / 180.0) * HALF_EARTH, y * HALF_EARTH / 180.0]; + }, + /** + * Converts Spherical Mercator coordinates to latitude/longitude. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} spherical mercator easting + * @param {Number} spherical mercator northing + * + * @returns {object} lon/lat + */ + _unproject: function(e, n) { + const HALF_EARTH = 20037508.34; + var yp = (n / HALF_EARTH) * 180.0; + return { + longitude: (e / HALF_EARTH) * 180.0, + latitude: 180.0 / Math.PI * (2 * Math.atan(Math.exp(yp * Math.PI / 180.0)) - Math.PI / 2) + }; + }, + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function(alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function(event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function() { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + /** + * Calculate haversine distance between two lat/lon pairs. + * + * Taken from gps-camera + */ + _haversineDist: function(src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); + +/** gps-projected-entity-place + * + * based on the original gps-entity-place, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original location on startup (lat/lon) is projected into Spherical + * Mercator and stored. + * + * When 'entity-places' are added, their Spherical Mercator coords are + * calculated and converted into world coordinates, relative to the original + * position, using the Spherical Mercator projection calculation in + * gps-projected-camera. + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + */ +AFRAME.registerComponent('gps-projected-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + // Used now to get the GPS camera when it's been setup + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-projected-camera']; + this._updatePosition(); + } + }; + + + + // update position needs to worry about distance but nothing else? + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = this.el.getAttribute('position'); + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + // _computeDistanceMeters is now going to use the projected + var distanceForMsg = this._cameraGps.computeDistanceMeters(dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + // Retain as this event is fired when the GPS camera is set up + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + + // set position to world coords using the lat/lon + _updatePosition: function() { + var worldPos = this._cameraGps.latLonToWorld(this.data.latitude, this.data.longitude); + var position = this.el.getAttribute('position'); + + // update element's position in 3D world + //this.el.setAttribute('position', position); + this.el.setAttribute('position', { + x: worldPos[0], + y: position.y, + z: worldPos[1] + }); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; +AFRAME.registerSystem('arjs', { + schema: { + trackingMethod: { + type: 'string', + default: 'best', + }, + debugUIEnabled: { + type: 'boolean', + default: false, + }, + areaLearningButton: { + type: 'boolean', + default: true, + }, + performanceProfile: { + type: 'string', + default: 'default', + }, + labelingMode: { + type: 'string', + default: '', + }, + // new video texture mode (location based only) + videoTexture: { + type: 'boolean', + default: false + }, + // old parameters + debug: { + type: 'boolean', + default: false + }, + detectionMode: { + type: 'string', + default: '', + }, + matrixCodeType: { + type: 'string', + default: '', + }, + patternRatio: { + type: 'number', + default: -1, + }, + cameraParametersUrl: { + type: 'string', + default: '', + }, + maxDetectionRate: { + type: 'number', + default: -1 + }, + sourceType: { + type: 'string', + default: '', + }, + sourceUrl: { + type: 'string', + default: '', + }, + sourceWidth: { + type: 'number', + default: -1 + }, + sourceHeight: { + type: 'number', + default: -1 + }, + deviceId: { + type: 'string', + default: '' + }, + displayWidth: { + type: 'number', + default: -1 + }, + displayHeight: { + type: 'number', + default: -1 + }, + canvasWidth: { + type: 'number', + default: -1 + }, + canvasHeight: { + type: 'number', + default: -1 + }, + }, + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + init: function () { + var _this = this + + // If videoTexture is set, skip the remainder of the setup entirely and just use the arjs-webcam-texture component + if(this.data.videoTexture === true && this.data.sourceType === 'webcam') { + var webcamEntity = document.createElement("a-entity"); + webcamEntity.setAttribute("arjs-webcam-texture", true); + this.el.sceneEl.appendChild(webcamEntity); + return; + } + ////////////////////////////////////////////////////////////////////////////// + // setup arProfile + ////////////////////////////////////////////////////////////////////////////// + + var arProfile = this._arProfile = new ARjs.Profile() + .trackingMethod(this.data.trackingMethod) + .performance(this.data.performanceProfile) + .defaultMarker() + + ////////////////////////////////////////////////////////////////////////////// + // honor this.data and setup arProfile with it + ////////////////////////////////////////////////////////////////////////////// + + // honor this.data and push what has been modified into arProfile + if (this.data.debug !== false) arProfile.contextParameters.debug = this.data.debug + if (this.data.detectionMode !== '') arProfile.contextParameters.detectionMode = this.data.detectionMode + if (this.data.matrixCodeType !== '') arProfile.contextParameters.matrixCodeType = this.data.matrixCodeType + if (this.data.patternRatio !== -1) arProfile.contextParameters.patternRatio = this.data.patternRatio + if (this.data.labelingMode !== '') arProfile.contextParameters.labelingMode = this.data.labelingMode + if (this.data.cameraParametersUrl !== '') arProfile.contextParameters.cameraParametersUrl = this.data.cameraParametersUrl + if (this.data.maxDetectionRate !== -1) arProfile.contextParameters.maxDetectionRate = this.data.maxDetectionRate + if (this.data.canvasWidth !== -1) arProfile.contextParameters.canvasWidth = this.data.canvasWidth + if (this.data.canvasHeight !== -1) arProfile.contextParameters.canvasHeight = this.data.canvasHeight + + if (this.data.sourceType !== '') arProfile.sourceParameters.sourceType = this.data.sourceType + if (this.data.sourceUrl !== '') arProfile.sourceParameters.sourceUrl = this.data.sourceUrl + if (this.data.sourceWidth !== -1) arProfile.sourceParameters.sourceWidth = this.data.sourceWidth + if (this.data.sourceHeight !== -1) arProfile.sourceParameters.sourceHeight = this.data.sourceHeight + if (this.data.deviceId !== '') arProfile.sourceParameters.deviceId = this.data.deviceId + if (this.data.displayWidth !== -1) arProfile.sourceParameters.displayWidth = this.data.displayWidth + if (this.data.displayHeight !== -1) arProfile.sourceParameters.displayHeight = this.data.displayHeight + + arProfile.checkIfValid() + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this._arSession = null + + _this.isReady = false + _this.needsOverride = true + + // wait until the renderer is isReady + this.el.sceneEl.addEventListener('renderstart', function () { + var scene = _this.el.sceneEl.object3D + var camera = _this.el.sceneEl.camera + var renderer = _this.el.sceneEl.renderer + + ////////////////////////////////////////////////////////////////////////////// + // build ARjs.Session + ////////////////////////////////////////////////////////////////////////////// + var arSession = _this._arSession = new ARjs.Session({ + scene: scene, + renderer: renderer, + camera: camera, + sourceParameters: arProfile.sourceParameters, + contextParameters: arProfile.contextParameters + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // awful resize trick + ////////////////////////////////////////////////////////////////////////////// + // KLUDGE + window.addEventListener('resize', onResize) + function onResize() { + var arSource = _this._arSession.arSource + + // ugly kludge to get resize on aframe... not even sure it works + if (arProfile.contextParameters.trackingBackend !== 'tango') { + arSource.copyElementSizeTo(document.body) + } + + // fixing a-frame css + var buttonElement = document.querySelector('.a-enter-vr') + if (buttonElement) { + buttonElement.style.position = 'fixed' + } + } + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (_this.data.debugUIEnabled) initDebugUI() + function initDebugUI() { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1;color: grey;') + document.body.appendChild(containerElement) + } + + // create sessionDebugUI + var sessionDebugUI = new ARjs.SessionDebugUI(arSession) + containerElement.appendChild(sessionDebugUI.domElement) + } + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // TODO this is crappy - code an exponential backoff - max 1 seconds + // KLUDGE: kludge to write a 'resize' event + var startedAt = Date.now() + var timerId = setInterval(function () { + if (Date.now() - startedAt > 10000 * 1000) { + clearInterval(timerId) + return + } + // onResize() + window.dispatchEvent(new Event('resize')); + }, 1000 / 30) + }, + + tick: function () { + // skip it if not yet isInitialised + if (this.isReady === false || this.data.videoTexture === true) return + + // update arSession + this._arSession.update() + + // copy projection matrix to camera + this._arSession.onResize() + }, +}) diff --git a/demo/ar/aframe/examples/assets/white_000.png b/demo/ar/aframe/examples/assets/white_000.png new file mode 100644 index 0000000..1f1d710 Binary files /dev/null and b/demo/ar/aframe/examples/assets/white_000.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft-video/index.html b/demo/ar/aframe/examples/image-tracking/nft-video/index.html new file mode 100644 index 0000000..1bbbf80 --- /dev/null +++ b/demo/ar/aframe/examples/image-tracking/nft-video/index.html @@ -0,0 +1,77 @@ + + + + + + + + +

+ + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/image-tracking/nft-video/pinball.jpg b/demo/ar/aframe/examples/image-tracking/nft-video/pinball.jpg new file mode 100644 index 0000000..d1444ad Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft-video/pinball.jpg differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/index.html b/demo/ar/aframe/examples/image-tracking/nft/index.html new file mode 100644 index 0000000..393d67b --- /dev/null +++ b/demo/ar/aframe/examples/image-tracking/nft/index.html @@ -0,0 +1,50 @@ + + + + + + + + + +
+
Loading, please wait...
+
+ + + + + + + + + + diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex-image-big.jpeg b/demo/ar/aframe/examples/image-tracking/nft/trex-image-big.jpeg new file mode 100644 index 0000000..af05524 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex-image-big.jpeg differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/scene.bin b/demo/ar/aframe/examples/image-tracking/nft/trex/scene.bin new file mode 100644 index 0000000..abf7fe3 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/scene.bin differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/scene.gltf b/demo/ar/aframe/examples/image-tracking/nft/trex/scene.gltf new file mode 100644 index 0000000..a105105 --- /dev/null +++ b/demo/ar/aframe/examples/image-tracking/nft/trex/scene.gltf @@ -0,0 +1,618 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 3428, + "max": [ + 72.838134765625, + 143.69198608398438, + 258.82000732421875 + ], + "min": [ + -72.838134765625, + -395.850830078125, + -1.2295242547988892 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 41136, + "componentType": 5126, + "count": 3428, + "max": [ + 0.99943608045578003, + 0.99604237079620361, + 0.99995923042297363 + ], + "min": [ + -0.99943608045578003, + -0.99999535083770752, + -0.99951648712158203 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 3428, + "max": [ + 0.9997742772102356, + 0.99985200166702271, + 0.97316241264343262, + 1 + ], + "min": [ + -0.99977433681488037, + -0.99995803833007812, + -0.99999535083770752, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 3, + "byteOffset": 54848, + "componentType": 5126, + "count": 3428, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 3428, + "max": [ + 0.98388671875, + 0.99784630537033081 + ], + "min": [ + 0.0035965079441666603, + 0.00564928213134408 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 27424, + "componentType": 5126, + "count": 3428, + "max": [ + 0.98388671875, + 0.99784630537033081 + ], + "min": [ + 0.0035965079441666603, + 0.00564928213134408 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 54848, + "componentType": 5126, + "count": 3428, + "max": [ + 0.98388671875, + 0.99784630537033081 + ], + "min": [ + 0.0035965079441666603, + 0.00564928213134408 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 15606, + "max": [ + 3427 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 82272, + "componentType": 5126, + "count": 3874, + "max": [ + 3.8580482006072998, + 29.504856109619141, + 26.907831192016602 + ], + "min": [ + -3.8580431938171387, + 17.73493766784668, + 10.970193862915039 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 128760, + "componentType": 5126, + "count": 3874, + "max": [ + 0.99997752904891968, + 0.99936181306838989, + 0.99540138244628906 + ], + "min": [ + -0.99997752904891968, + -0.99999278783798218, + -0.9998893141746521 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 109696, + "componentType": 5126, + "count": 3874, + "max": [ + 0.99983894824981689, + 0.99540144205093384, + 0.99992924928665161, + 1 + ], + "min": [ + -0.99983888864517212, + -0.99988925457000732, + -0.99999451637268066, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 3, + "byteOffset": 171680, + "componentType": 5126, + "count": 3874, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "byteOffset": 82272, + "componentType": 5126, + "count": 3874, + "max": [ + 0.99175125360488892, + 0.99390029907226562 + ], + "min": [ + 0.0076292529702186584, + 0.005859375 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 113264, + "componentType": 5126, + "count": 3874, + "max": [ + 0.99175125360488892, + 0.99390029907226562 + ], + "min": [ + 0.0076292529702186584, + 0.005859375 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 144256, + "componentType": 5126, + "count": 3874, + "max": [ + 0.99175125360488892, + 0.99390029907226562 + ], + "min": [ + 0.0076292529702186584, + 0.005859375 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 62424, + "componentType": 5125, + "count": 14484, + "max": [ + 3873 + ], + "min": [ + 0 + ], + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "Abner Wu (https://sketchfab.com/dashdu)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/tyrannosaurus-rex-8ca1f4a7ff7041b5b4aa663634934f4c", + "title": "Tyrannosaurus Rex" + }, + "generator": "Sketchfab-5.68.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 120360, + "byteOffset": 0, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 175248, + "byteOffset": 120360, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 175248, + "byteOffset": 295608, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 233664, + "byteOffset": 470856, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 704520, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/Material_21_baseColor.png" + }, + { + "uri": "textures/Material_21_normal.png" + }, + { + "uri": "textures/Material_22_baseColor.png" + }, + { + "uri": "textures/Material_22_normal.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Material_21", + "normalTexture": { + "index": 1, + "scale": 1, + "texCoord": 0 + }, + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 0.50085746949999999 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Material_22", + "normalTexture": { + "index": 3, + "scale": 1, + "texCoord": 0 + }, + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 2, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 0.37109375 + } + } + ], + "meshes": [ + { + "name": "polySurface55_Material #21_0", + "primitives": [ + { + "attributes": { + "COLOR_0": 3, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 4, + "TEXCOORD_1": 5, + "TEXCOORD_2": 6 + }, + "indices": 7, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "polySurface58_Material #22_0", + "primitives": [ + { + "attributes": { + "COLOR_0": 11, + "NORMAL": 9, + "POSITION": 8, + "TANGENT": 10, + "TEXCOORD_0": 12, + "TEXCOORD_1": 13, + "TEXCOORD_2": 14 + }, + "indices": 15, + "material": 1, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "trex-finish.FBX" + }, + { + "children": [ + 4, + 9 + ], + "name": "RootNode" + }, + { + "children": [ + 5 + ], + "matrix": [ + -0.10000000149011498, + -1.224647135531628e-17, + 1.5099580490056353e-08, + 0, + 1.5099580490056353e-08, + -6.6613382470126127e-17, + 0.10000000149011498, + 0, + -1.2246460767404281e-17, + 0.10000000149011612, + 6.6613382470126127e-17, + 0, + 0, + 0, + 0, + 1 + ], + "name": "CH_trex" + }, + { + "children": [ + 6 + ], + "matrix": [ + 1, + 0, + 4.8655591971495782e-33, + 0, + -2.3989058954186466e-64, + 1, + 4.9303806576313227e-32, + 0, + -4.8655591971495782e-33, + -4.9303806576313227e-32, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "polySurface49" + }, + { + "children": [ + 7 + ], + "matrix": [ + 1, + 2.646977960169688e-23, + 2.9517462485306193e-32, + 0, + -2.646977960169688e-23, + 1, + 0, + 0, + -2.9517462485306193e-32, + -7.8132072638741078e-55, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "polySurface52" + }, + { + "children": [ + 8 + ], + "matrix": [ + 1, + 0, + 2.9517474240249701e-32, + 0, + 0, + 1, + 0, + 0, + -2.9517474240249701e-32, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "polySurface55" + }, + { + "mesh": 0, + "name": "polySurface55_Material #21_0" + }, + { + "children": [ + 10 + ], + "name": "polySurface58" + }, + { + "mesh": 1, + "name": "polySurface58_Material #22_0" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + }, + { + "sampler": 0, + "source": 1 + }, + { + "sampler": 0, + "source": 2 + }, + { + "sampler": 0, + "source": 3 + } + ] +} + diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_baseColor.png b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_baseColor.png new file mode 100644 index 0000000..2c466fb Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_baseColor.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_normal.png b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_normal.png new file mode 100644 index 0000000..9b05b3b Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_21_normal.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_baseColor.png b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_baseColor.png new file mode 100644 index 0000000..f787b13 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_baseColor.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_normal.png b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_normal.png new file mode 100644 index 0000000..3afb055 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Material_22_normal.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_diffuse.jpeg b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_diffuse.jpeg new file mode 100644 index 0000000..1e0f68d Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_diffuse.jpeg differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_normal.png b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_normal.png new file mode 100644 index 0000000..637e7d3 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/textures/Scene_-_Root_normal.png differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset new file mode 100644 index 0000000..29f16c7 Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset3 b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset3 new file mode 100644 index 0000000..e3f242a Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.fset3 differ diff --git a/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.iset b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.iset new file mode 100644 index 0000000..ba6a7db Binary files /dev/null and b/demo/ar/aframe/examples/image-tracking/nft/trex/trex-image/trex.iset differ diff --git a/demo/ar/aframe/examples/location-based/always-face-user/index.html b/demo/ar/aframe/examples/location-based/always-face-user/index.html new file mode 100644 index 0000000..0db5d61 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/always-face-user/index.html @@ -0,0 +1,24 @@ + + + + + + GeoAR.js demo + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/assets/map-marker.png b/demo/ar/aframe/examples/location-based/assets/map-marker.png new file mode 100644 index 0000000..0c2480c Binary files /dev/null and b/demo/ar/aframe/examples/location-based/assets/map-marker.png differ diff --git a/demo/ar/aframe/examples/location-based/assets/place_icon.png b/demo/ar/aframe/examples/location-based/assets/place_icon.png new file mode 100644 index 0000000..d6175f7 Binary files /dev/null and b/demo/ar/aframe/examples/location-based/assets/place_icon.png differ diff --git a/demo/ar/aframe/examples/location-based/avoid-shaking/index.html b/demo/ar/aframe/examples/location-based/avoid-shaking/index.html new file mode 100644 index 0000000..afff3bb --- /dev/null +++ b/demo/ar/aframe/examples/location-based/avoid-shaking/index.html @@ -0,0 +1,38 @@ + + + + + + GeoAR.js demo + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/avoid-shaking/place.png b/demo/ar/aframe/examples/location-based/avoid-shaking/place.png new file mode 100644 index 0000000..ac04e7e Binary files /dev/null and b/demo/ar/aframe/examples/location-based/avoid-shaking/place.png differ diff --git a/demo/ar/aframe/examples/location-based/click-places/index.html b/demo/ar/aframe/examples/location-based/click-places/index.html new file mode 100644 index 0000000..84d43b5 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/click-places/index.html @@ -0,0 +1,38 @@ + + + + + + GeoAR.js demo + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/max-min-distance/index.html b/demo/ar/aframe/examples/location-based/max-min-distance/index.html new file mode 100644 index 0000000..280565b --- /dev/null +++ b/demo/ar/aframe/examples/location-based/max-min-distance/index.html @@ -0,0 +1,34 @@ + + + + + + GeoAR.js demo + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/only-html/index.html b/demo/ar/aframe/examples/location-based/only-html/index.html new file mode 100644 index 0000000..658e04f --- /dev/null +++ b/demo/ar/aframe/examples/location-based/only-html/index.html @@ -0,0 +1,23 @@ + + + + + + GeoAR.js demo + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/places-name/index.html b/demo/ar/aframe/examples/location-based/places-name/index.html new file mode 100644 index 0000000..8d0f648 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/places-name/index.html @@ -0,0 +1,25 @@ + + + + + + + GeoAR.js demo + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/places-name/places.js b/demo/ar/aframe/examples/location-based/places-name/places.js new file mode 100644 index 0000000..44d51c9 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/places-name/places.js @@ -0,0 +1,96 @@ + +window.onload = () => { + let method = 'dynamic'; + + // if you want to statically add places, de-comment following line: + // method = 'static'; + if (method === 'static') { + let places = staticLoadPlaces(); + return renderPlaces(places); + } + + if (method !== 'static') { + // first get current user location + return navigator.geolocation.getCurrentPosition(function (position) { + + // than use it to load from remote APIs some places nearby + dynamicLoadPlaces(position.coords) + .then((places) => { + renderPlaces(places); + }) + }, + (err) => console.error('Error in retrieving position', err), + { + enableHighAccuracy: true, + maximumAge: 0, + timeout: 27000, + } + ); + } +}; + +function staticLoadPlaces() { + return [ + { + name: "Your place name", + location: { + lat: 44.493271, // change here latitude if using static data + lng: 11.326040, // change here longitude if using static data + } + }, + ]; +} + +// getting places from REST APIs +function dynamicLoadPlaces(position) { + let params = { + radius: 300, // search places not farther than this value (in meters) + clientId: 'HZIJGI4COHQ4AI45QXKCDFJWFJ1SFHYDFCCWKPIJDWHLVQVZ', + clientSecret: '', + version: '20300101', // foursquare versioning, required but unuseful for this demo + }; + + // CORS Proxy to avoid CORS problems + let corsProxy = 'https://cors-anywhere.herokuapp.com/'; + + // Foursquare API + let endpoint = `${corsProxy}https://api.foursquare.com/v2/venues/search?intent=checkin + &ll=${position.latitude},${position.longitude} + &radius=${params.radius} + &client_id=${params.clientId} + &client_secret=${params.clientSecret} + &limit=15 + &v=${params.version}`; + return fetch(endpoint) + .then((res) => { + return res.json() + .then((resp) => { + return resp.response.venues; + }) + }) + .catch((err) => { + console.error('Error with places API', err); + }) +}; + +function renderPlaces(places) { + let scene = document.querySelector('a-scene'); + + places.forEach((place) => { + let latitude = place.location.lat; + let longitude = place.location.lng; + + // add place name + let text = document.createElement('a-link'); + text.setAttribute('gps-entity-place', `latitude: ${latitude}; longitude: ${longitude};`); + text.setAttribute('title', place.name); + text.setAttribute('href', 'http://www.example.com/'); + text.setAttribute('scale', '15 15 15'); + + text.addEventListener('loaded', () => { + window.dispatchEvent(new CustomEvent('gps-entity-place-loaded', { detail: { component: this.el }})) + }); + + scene.appendChild(text); + }); +} diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/basic/index.html b/demo/ar/aframe/examples/location-based/projected-base-camera/basic/index.html new file mode 100644 index 0000000..fe6eb7c --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/basic/index.html @@ -0,0 +1,17 @@ + + + + + AR.js Basic Projected Camera Example + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/LICENSE b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/LICENSE new file mode 100644 index 0000000..d2bf023 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/LICENSE @@ -0,0 +1,6 @@ +This example is taken from the in-development Hikar webapp, + +https://github.com/nickw1/hikar.org + +which is licensed under the GNU General Public License v3, and therefore this +code is also similarly licensed. diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/Makefile b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/Makefile new file mode 100644 index 0000000..86b2274 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/Makefile @@ -0,0 +1,2 @@ +build: + browserify index.js osm.js gps-vector-ways.js osmway.js > bundle.js diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/README.md b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/README.md new file mode 100644 index 0000000..908b85b --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/README.md @@ -0,0 +1,12 @@ +Building +======== + +A runnable bundle.js is now provided in the repository to allow the example to +run as-is. If you make changes to the source code, please re-make the bundle +with + +`make` + +You will need to install browserify to build the bundle, e.g. + +`npm install browserify` diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/bundle.js b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/bundle.js new file mode 100644 index 0000000..7796d5d --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/bundle.js @@ -0,0 +1,179 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialised'); + } else { + if (!this.originSphMerc) { + this.originSphMerc = camera.components['gps-projected-camera'].originCoordsProjected; + } + ev.detail.objectIds.forEach(k => { + this.el.object3DMap[k].geometry.translate(-this.originSphMerc[0], 0, this.originSphMerc[1]); + }); + } + }; + + this.el.addEventListener('vector-ways-loaded', this.vectorWaysListener); + } +}); + +},{}],2:[function(require,module,exports){ +window.onload = () => { + const osmElement = document.getElementById('osmElement'); + document.getElementById('status').innerHTML = 'Loading OpenStreetMap data...'; + const gpsProjCamera = document.querySelector('a-camera').components['gps-projected-camera']; + + osmElement.setAttribute('osm', { + longitude: gpsProjCamera.data.simulateLongitude, + latitude: gpsProjCamera.data.simulateLatitude + }); + + osmElement.addEventListener('vector-ways-loaded', e => { + document.getElementById('status').innerHTML = ''; + }); +} + +},{}],3:[function(require,module,exports){ +const OsmWay = require('./osmway'); + +AFRAME.registerComponent('osm', { + schema: { + latitude: { + type: 'number', + default: 181 + }, + longitude: { + type: 'number', + default: 91 + } + }, + + init: function() { + }, + + update: function() { + if (this.data.latitude >= -90 && this.data.latitude <= 90 && this.data.longitude >= -180 && this.data.longitude <= 180) { + this._readOsm(this.data.latitude, this.data.longitude); + } + }, + + _readOsm: function(lat, lon) { + fetch(`https://hikar.org/fm/ws/bsvr.php?bbox=${lon - 0.01},${lat - 0.01},${lon + 0.01},${lat + 0.01}&way=highway&format=json&outProj=3785`) + .then(response => response.json()) + .then(json => { + const objectIds = []; + const drawProps = { + 'footway': { color: '#00ff00' }, + 'path': { color: '#00ff00' }, + 'steps': { color: '#00ff00' }, + 'bridleway': { color: '#ffc000' }, + 'byway': { color: '#ff0000' }, + 'track': { color: '#ff8080' }, + 'cycleway': { color: '#00ffff' }, + }; + const features = []; + json.features.forEach((f, i) => { + const line = []; + if (f.geometry.type == 'LineString' && f.geometry.coordinates.length >= 2) { + f.geometry.coordinates.forEach(coord => { + line.push([coord[0], 0, -coord[1]]); + }); + + + if (line.length >= 2) { + const g = new OsmWay(line, (drawProps[f.properties.highway] ? (drawProps[f.properties.highway].width || 5) : 5)).geometry; + + const color = drawProps[f.properties.highway] ? (drawProps[f.properties.highway].color || '#ffffff') : '#ffffff'; + + const mesh = new THREE.Mesh(g, + new THREE.MeshBasicMaterial({ + color: color + })); + this.el.setObject3D(f.properties.osm_id, mesh); + objectIds.push(f.properties.osm_id); + } + } + }); + this.el.emit('vector-ways-loaded', { + objectIds: objectIds + }); + }); + } +}); + +},{"./osmway":4}],4:[function(require,module,exports){ + +class OsmWay { + constructor(vertices, width = 1) { + let dx, dz, len, dxperp, dzperp, nextVtxProvisional = [], thisVtxProvisional; + const k = vertices.length - 1; + const realVertices = []; + for (let i = 0; i < k; i++) { + dx = vertices[i + 1][0] - vertices[i][0]; + dz = vertices[i + 1][2] - vertices[i][2]; + len = this.distance(vertices[i], vertices[i + 1]); + dxperp = -(dz * (width / 2)) / len; + dzperp = dx * (width / 2) / len; + thisVtxProvisional = [ + vertices[i][0] - dxperp, + vertices[i][1], + vertices[i][2] - dzperp, + vertices[i][0] + dxperp, + vertices[i][1], + vertices[i][2] + dzperp, + ]; + if (i > 0) { + // Ensure the vertex positions are influenced not just by this + // segment but also the previous segment + thisVtxProvisional.forEach((vtx, j) => { + vtx = (vtx + nextVtxProvisional[j]) / 2; + }); + } + realVertices.push(...thisVtxProvisional); + nextVtxProvisional = [ + vertices[i + 1][0] - dxperp, + vertices[i + 1][1], + vertices[i + 1][2] - dzperp, + vertices[i + 1][0] + dxperp, + vertices[i + 1][1], + vertices[i + 1][2] + dzperp, + ]; + } + realVertices.push(vertices[k][0] - dxperp); + realVertices.push(vertices[k][1]); + realVertices.push(vertices[k][2] - dzperp); + realVertices.push(vertices[k][0] + dxperp); + realVertices.push(vertices[k][1]); + realVertices.push(vertices[k][2] + dzperp); + + + let indices = []; + for (let i = 0; i < k; i++) { + indices.push(i * 2, i * 2 + 1, i * 2 + 2); + indices.push(i * 2 + 1, i * 2 + 3, i * 2 + 2); + } + + let geom = new THREE.BufferGeometry(); + let bufVertices = new Float32Array(realVertices); + geom.setIndex(indices); + geom.setAttribute('position', new THREE.BufferAttribute(bufVertices, 3)); + geom.computeBoundingBox(); + this.geometry = geom; + } + + distance(v1, v2) { + const dx = v2[0] - v1[0]; + const dy = v2[1] - v1[1]; + const dz = v2[2] - v1[2]; + return Math.sqrt(dx * dx + dy * dy + dz * dz); + } +} + +module.exports = OsmWay; + +},{}]},{},[2,3,1,4]); diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/gps-vector-ways.js b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/gps-vector-ways.js new file mode 100644 index 0000000..74f13e3 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/gps-vector-ways.js @@ -0,0 +1,22 @@ + +AFRAME.registerComponent('gps-vector-ways', { + init: function() { + this.originSphMerc = null; + + this.vectorWaysListener = (ev) => { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialised'); + } else { + if (!this.originSphMerc) { + this.originSphMerc = camera.components['gps-projected-camera'].originCoordsProjected; + } + ev.detail.objectIds.forEach(k => { + this.el.object3DMap[k].geometry.translate(-this.originSphMerc[0], 0, this.originSphMerc[1]); + }); + } + }; + + this.el.addEventListener('vector-ways-loaded', this.vectorWaysListener); + } +}); diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.html b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.html new file mode 100644 index 0000000..104c891 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.html @@ -0,0 +1,28 @@ + + + + + AR.js osm example + + + + + + + +
+ + +
+ + diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.js b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.js new file mode 100644 index 0000000..8e90f12 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/index.js @@ -0,0 +1,14 @@ +window.onload = () => { + const osmElement = document.getElementById('osmElement'); + document.getElementById('status').innerHTML = 'Loading OpenStreetMap data...'; + const gpsProjCamera = document.querySelector('a-camera').components['gps-projected-camera']; + + osmElement.setAttribute('osm', { + longitude: gpsProjCamera.data.simulateLongitude, + latitude: gpsProjCamera.data.simulateLatitude + }); + + osmElement.addEventListener('vector-ways-loaded', e => { + document.getElementById('status').innerHTML = ''; + }); +} diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osm.js b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osm.js new file mode 100644 index 0000000..5734fdc --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osm.js @@ -0,0 +1,66 @@ +const OsmWay = require('./osmway'); + +AFRAME.registerComponent('osm', { + schema: { + latitude: { + type: 'number', + default: 181 + }, + longitude: { + type: 'number', + default: 91 + } + }, + + init: function() { + }, + + update: function() { + if (this.data.latitude >= -90 && this.data.latitude <= 90 && this.data.longitude >= -180 && this.data.longitude <= 180) { + this._readOsm(this.data.latitude, this.data.longitude); + } + }, + + _readOsm: function(lat, lon) { + fetch(`https://hikar.org/fm/ws/bsvr.php?bbox=${lon - 0.01},${lat - 0.01},${lon + 0.01},${lat + 0.01}&way=highway&format=json&outProj=3785`) + .then(response => response.json()) + .then(json => { + const objectIds = []; + const drawProps = { + 'footway': { color: '#00ff00' }, + 'path': { color: '#00ff00' }, + 'steps': { color: '#00ff00' }, + 'bridleway': { color: '#ffc000' }, + 'byway': { color: '#ff0000' }, + 'track': { color: '#ff8080' }, + 'cycleway': { color: '#00ffff' }, + }; + const features = []; + json.features.forEach((f, i) => { + const line = []; + if (f.geometry.type == 'LineString' && f.geometry.coordinates.length >= 2) { + f.geometry.coordinates.forEach(coord => { + line.push([coord[0], 0, -coord[1]]); + }); + + + if (line.length >= 2) { + const g = new OsmWay(line, (drawProps[f.properties.highway] ? (drawProps[f.properties.highway].width || 5) : 5)).geometry; + + const color = drawProps[f.properties.highway] ? (drawProps[f.properties.highway].color || '#ffffff') : '#ffffff'; + + const mesh = new THREE.Mesh(g, + new THREE.MeshBasicMaterial({ + color: color + })); + this.el.setObject3D(f.properties.osm_id, mesh); + objectIds.push(f.properties.osm_id); + } + } + }); + this.el.emit('vector-ways-loaded', { + objectIds: objectIds + }); + }); + } +}); diff --git a/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osmway.js b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osmway.js new file mode 100644 index 0000000..684840b --- /dev/null +++ b/demo/ar/aframe/examples/location-based/projected-base-camera/way-vectors/osmway.js @@ -0,0 +1,68 @@ + +class OsmWay { + constructor(vertices, width = 1) { + let dx, dz, len, dxperp, dzperp, nextVtxProvisional = [], thisVtxProvisional; + const k = vertices.length - 1; + const realVertices = []; + for (let i = 0; i < k; i++) { + dx = vertices[i + 1][0] - vertices[i][0]; + dz = vertices[i + 1][2] - vertices[i][2]; + len = this.distance(vertices[i], vertices[i + 1]); + dxperp = -(dz * (width / 2)) / len; + dzperp = dx * (width / 2) / len; + thisVtxProvisional = [ + vertices[i][0] - dxperp, + vertices[i][1], + vertices[i][2] - dzperp, + vertices[i][0] + dxperp, + vertices[i][1], + vertices[i][2] + dzperp, + ]; + if (i > 0) { + // Ensure the vertex positions are influenced not just by this + // segment but also the previous segment + thisVtxProvisional.forEach((vtx, j) => { + vtx = (vtx + nextVtxProvisional[j]) / 2; + }); + } + realVertices.push(...thisVtxProvisional); + nextVtxProvisional = [ + vertices[i + 1][0] - dxperp, + vertices[i + 1][1], + vertices[i + 1][2] - dzperp, + vertices[i + 1][0] + dxperp, + vertices[i + 1][1], + vertices[i + 1][2] + dzperp, + ]; + } + realVertices.push(vertices[k][0] - dxperp); + realVertices.push(vertices[k][1]); + realVertices.push(vertices[k][2] - dzperp); + realVertices.push(vertices[k][0] + dxperp); + realVertices.push(vertices[k][1]); + realVertices.push(vertices[k][2] + dzperp); + + + let indices = []; + for (let i = 0; i < k; i++) { + indices.push(i * 2, i * 2 + 1, i * 2 + 2); + indices.push(i * 2 + 1, i * 2 + 3, i * 2 + 2); + } + + let geom = new THREE.BufferGeometry(); + let bufVertices = new Float32Array(realVertices); + geom.setIndex(indices); + geom.setAttribute('position', new THREE.BufferAttribute(bufVertices, 3)); + geom.computeBoundingBox(); + this.geometry = geom; + } + + distance(v1, v2) { + const dx = v2[0] - v1[0]; + const dy = v2[1] - v1[1]; + const dz = v2[2] - v1[2]; + return Math.sqrt(dx * dx + dy * dy + dz * dz); + } +} + +module.exports = OsmWay; diff --git a/demo/ar/aframe/examples/location-based/show-arbitrary-distant-places/index.html b/demo/ar/aframe/examples/location-based/show-arbitrary-distant-places/index.html new file mode 100644 index 0000000..dbe75e6 --- /dev/null +++ b/demo/ar/aframe/examples/location-based/show-arbitrary-distant-places/index.html @@ -0,0 +1,30 @@ + + + + + +Hikar Webapp + + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/basic.html b/demo/ar/aframe/examples/marker-based/basic.html new file mode 100644 index 0000000..4d97853 --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/basic.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/marker-camera.html b/demo/ar/aframe/examples/marker-based/marker-camera.html new file mode 100644 index 0000000..0bea49f --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/marker-camera.html @@ -0,0 +1,22 @@ + + + + + +
+ AR.js - example for a-frame +
+ Contact me any time at @nicolocarp +
+ + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/marker-events.html b/demo/ar/aframe/examples/marker-based/marker-events.html new file mode 100644 index 0000000..836efbe --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/marker-events.html @@ -0,0 +1,68 @@ + + + + + + + +
+ AR.js - marker events example for a-frame - look at the js console +
+ Contact me any time at @nicolocarp +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/minimal.html b/demo/ar/aframe/examples/marker-based/minimal.html new file mode 100644 index 0000000..431c1aa --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/minimal.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/multiple-independent-markers.html b/demo/ar/aframe/examples/marker-based/multiple-independent-markers.html new file mode 100644 index 0000000..6877983 --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/multiple-independent-markers.html @@ -0,0 +1,48 @@ + + + + + +
+ AR.js - example for a-frame +
+ Contact me any time at @nicolocarp +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/ar/aframe/examples/marker-based/white-region-marker.html b/demo/ar/aframe/examples/marker-based/white-region-marker.html new file mode 100644 index 0000000..e937885 --- /dev/null +++ b/demo/ar/aframe/examples/marker-based/white-region-marker.html @@ -0,0 +1,19 @@ + + + + +
+ White region marker (markers with white borders) example, use this inverted marker. +
+ + + + + + + + + + diff --git a/demo/ar/aframe/src/component-anchor-nft.js b/demo/ar/aframe/src/component-anchor-nft.js new file mode 100644 index 0000000..14ea854 --- /dev/null +++ b/demo/ar/aframe/src/component-anchor-nft.js @@ -0,0 +1,301 @@ +////////////////////////////////////////////////////////////////////////////// +// arjs-anchor +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-anchor', { + dependencies: ['arjs', 'artoolkit'], + schema: { + preset: { + type: 'string', + }, + markerhelpers: { // IIF preset === 'area' + type: 'boolean', + default: false, + }, + + // controls parameters + size: { + type: 'number', + default: 1 + }, + type: { + type: 'string', + }, + patternUrl: { + type: 'string', + }, + descriptorsUrl: { + type: 'string', + }, + barcodeValue: { + type: 'number' + }, + changeMatrixMode: { + type: 'string', + default: 'modelViewMatrix', + }, + minConfidence: { + type: 'number', + default: 0.6, + }, + smooth: { + type: 'boolean', + default: false, + }, + smoothCount: { + type: 'number', + default: 5, + }, + smoothTolerance: { + type: 'number', + default: 0.01, + }, + smoothThreshold: { + type: 'number', + default: 2, + }, + }, + init: function () { + var _this = this + + // get arjsSystem + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = false + _this._arAnchor = null + + // honor object visibility + if (_this.data.changeMatrixMode === 'modelViewMatrix') { + _this.el.object3D.visible = false + } else if (_this.data.changeMatrixMode === 'cameraTransformMatrix') { + _this.el.sceneEl.object3D.visible = false + } else console.assert(false) + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function () { + // wait until the system is isReady + if (arjsSystem.isReady === false) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // update arProfile + ////////////////////////////////////////////////////////////////////////////// + var arProfile = arjsSystem._arProfile + + // arProfile.changeMatrixMode('modelViewMatrix') + arProfile.changeMatrixMode(_this.data.changeMatrixMode) + + // honor this.data.preset + var markerParameters = Object.assign({}, arProfile.defaultMarkerParameters) + + if (_this.data.preset === 'hiro') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'kanji') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'area') { + markerParameters.type = 'barcode' + markerParameters.barcodeValue = 1001 + markerParameters.markersAreaEnabled = true + } else if (_this.data.type === 'barcode') { + markerParameters = { + type: _this.data.type, + changeMatrixMode: 'modelViewMatrix', + barcodeValue: _this.data.barcodeValue, + markersAreaEnabled: false + } + } else if (_this.data.type === 'pattern') { + markerParameters.type = _this.data.type + markerParameters.patternUrl = _this.data.patternUrl; + markerParameters.markersAreaEnabled = false + } else if (_this.data.type === 'nft') { + markerParameters.type = _this.data.type + markerParameters.descriptorsUrl = _this.data.descriptorsUrl; + markerParameters.markersAreaEnabled = false + } + + markerParameters.minConfidence = _this.data.minConfidence; + markerParameters.smooth = _this.data.smooth; + markerParameters.smoothCount = _this.data.smoothCount; + markerParameters.smoothTolerance = _this.data.smoothTolerance; + markerParameters.smoothThreshold = _this.data.smoothThreshold; + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + + var arSession = arjsSystem._arSession + var arAnchor = _this._arAnchor = new ARjs.Anchor(arSession, markerParameters) + + // it is now considered isReady + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (arjsSystem.data.debugUIEnabled) { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1; color: grey;') + document.body.appendChild(containerElement) + } + // create anchorDebugUI + var anchorDebugUI = new ARjs.AnchorDebugUI(arAnchor) + containerElement.appendChild(anchorDebugUI.domElement) + } + }, 1000 / 60) + }, + remove: function () { + }, + update: function () { + }, + tick: function () { + var _this = this + // if not yet isReady, do nothing + if (this.isReady === false) return + + ////////////////////////////////////////////////////////////////////////////// + // update arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + this._arAnchor.update() + + ////////////////////////////////////////////////////////////////////////////// + // honor pose + ////////////////////////////////////////////////////////////////////////////// + var arWorldRoot = this._arAnchor.object3d + arWorldRoot.updateMatrixWorld(true) + arWorldRoot.matrixWorld.decompose(this.el.object3D.position, this.el.object3D.quaternion, this.el.object3D.scale) + + ////////////////////////////////////////////////////////////////////////////// + // honor visibility + ////////////////////////////////////////////////////////////////////////////// + if (_this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix') { + var wasVisible = _this.el.object3D.visible + _this.el.object3D.visible = this._arAnchor.object3d.visible + } else if (_this._arAnchor.parameters.changeMatrixMode === 'cameraTransformMatrix') { + var wasVisible = _this.el.sceneEl.object3D.visible + _this.el.sceneEl.object3D.visible = this._arAnchor.object3d.visible + } else console.assert(false) + + // emit markerFound markerLost + if (_this._arAnchor.object3d.visible === true && wasVisible === false) { + _this.el.emit('markerFound') + } else if (_this._arAnchor.object3d.visible === false && wasVisible === true) { + _this.el.emit('markerLost') + } + } +}) + +////////////////////////////////////////////////////////////////////////////// +// define some primitives shortcuts +////////////////////////////////////////////////////////////////////////////// + +AFRAME.registerPrimitive('a-anchor', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + + +AFRAME.registerPrimitive('a-camera-static', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'camera': {}, + }, + mappings: { + } +})) + + +AFRAME.registerPrimitive('a-nft', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'url': 'arjs-anchor.descriptorsUrl', + 'size': 'arjs-anchor.size', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + }, +})) + + +////////////////////////////////////////////////////////////////////////////// +// backward compatibility +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerPrimitive('a-marker', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-marker-camera', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': { + changeMatrixMode: 'cameraTransformMatrix' + }, + 'camera': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'descriptorsUrl': 'arjs-anchor.descriptorsUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + } +})) diff --git a/demo/ar/aframe/src/component-anchor.js b/demo/ar/aframe/src/component-anchor.js new file mode 100644 index 0000000..ab6bca8 --- /dev/null +++ b/demo/ar/aframe/src/component-anchor.js @@ -0,0 +1,272 @@ +////////////////////////////////////////////////////////////////////////////// +// arjs-anchor +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-anchor', { + dependencies: ['arjs', 'artoolkit'], + schema: { + preset: { + type: 'string', + }, + markerhelpers: { // IIF preset === 'area' + type: 'boolean', + default: false, + }, + + // controls parameters + size: { + type: 'number', + default: 1 + }, + type: { + type: 'string', + }, + patternUrl: { + type: 'string', + }, + barcodeValue: { + type: 'number' + }, + changeMatrixMode: { + type: 'string', + default: 'modelViewMatrix', + }, + minConfidence: { + type: 'number', + default: 0.6, + }, + smooth: { + type: 'boolean', + default: false, + }, + smoothCount: { + type: 'number', + default: 5, + }, + smoothTolerance: { + type: 'number', + default: 0.01, + }, + smoothThreshold: { + type: 'number', + default: 2, + }, + }, + init: function () { + var _this = this + + // get arjsSystem + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = false + _this._arAnchor = null + + // honor object visibility + if (_this.data.changeMatrixMode === 'modelViewMatrix') { + _this.el.object3D.visible = false + } else if (_this.data.changeMatrixMode === 'cameraTransformMatrix') { + _this.el.sceneEl.object3D.visible = false + } else console.assert(false) + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function () { + // wait until the system is isReady + if (arjsSystem.isReady === false) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // update arProfile + ////////////////////////////////////////////////////////////////////////////// + var arProfile = arjsSystem._arProfile + + // arProfile.changeMatrixMode('modelViewMatrix') + arProfile.changeMatrixMode(_this.data.changeMatrixMode) + + // honor this.data.preset + var markerParameters = Object.assign({}, arProfile.defaultMarkerParameters) + + if (_this.data.preset === 'hiro') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'kanji') { + markerParameters.type = 'pattern' + markerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt' + markerParameters.markersAreaEnabled = false + } else if (_this.data.preset === 'area') { + markerParameters.type = 'barcode' + markerParameters.barcodeValue = 1001 + markerParameters.markersAreaEnabled = true + } else if (_this.data.type === 'barcode') { + markerParameters = { + type: _this.data.type, + changeMatrixMode: 'modelViewMatrix', + barcodeValue: _this.data.barcodeValue, + markersAreaEnabled: false + } + } else if (_this.data.type === 'pattern') { + markerParameters.type = _this.data.type + markerParameters.patternUrl = _this.data.patternUrl; + markerParameters.markersAreaEnabled = false + } + + markerParameters.minConfidence = _this.data.minCondidence; + markerParameters.smooth = _this.data.smooth; + markerParameters.smoothCount = _this.data.smoothCount; + markerParameters.smoothTolerance = _this.data.smoothTolerance; + markerParameters.smoothThreshold = _this.data.smoothThreshold; + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + + var arSession = arjsSystem._arSession + var arAnchor = _this._arAnchor = new ARjs.Anchor(arSession, markerParameters) + + // it is now considered isReady + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (arjsSystem.data.debugUIEnabled) { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1; color: grey;') + document.body.appendChild(containerElement) + } + // create anchorDebugUI + var anchorDebugUI = new ARjs.AnchorDebugUI(arAnchor) + containerElement.appendChild(anchorDebugUI.domElement) + } + }, 1000 / 60) + }, + remove: function () { + }, + update: function () { + }, + tick: function () { + var _this = this + // if not yet isReady, do nothing + if (this.isReady === false) return + + ////////////////////////////////////////////////////////////////////////////// + // update arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + this._arAnchor.update() + + ////////////////////////////////////////////////////////////////////////////// + // honor pose + ////////////////////////////////////////////////////////////////////////////// + var arWorldRoot = this._arAnchor.object3d + arWorldRoot.updateMatrixWorld(true) + arWorldRoot.matrixWorld.decompose(this.el.object3D.position, this.el.object3D.quaternion, this.el.object3D.scale) + + ////////////////////////////////////////////////////////////////////////////// + // honor visibility + ////////////////////////////////////////////////////////////////////////////// + if (_this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix') { + var wasVisible = _this.el.object3D.visible + _this.el.object3D.visible = this._arAnchor.object3d.visible + } else if (_this._arAnchor.parameters.changeMatrixMode === 'cameraTransformMatrix') { + var wasVisible = _this.el.sceneEl.object3D.visible + _this.el.sceneEl.object3D.visible = this._arAnchor.object3d.visible + } else console.assert(false) + + // emit markerFound markerLost + if (_this._arAnchor.object3d.visible === true && wasVisible === false) { + _this.el.emit('markerFound') + } else if (_this._arAnchor.object3d.visible === false && wasVisible === true) { + _this.el.emit('markerLost') + } + } +}) + +////////////////////////////////////////////////////////////////////////////// +// define some primitives shortcuts +////////////////////////////////////////////////////////////////////////////// + +AFRAME.registerPrimitive('a-anchor', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-camera-static', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'camera': {}, + }, + mappings: { + } +})) + +////////////////////////////////////////////////////////////////////////////// +// backward compatibility +////////////////////////////////////////////////////////////////////////////// +// FIXME +AFRAME.registerPrimitive('a-marker', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': {}, + 'arjs-hit-testing': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + 'smooth': 'arjs-anchor.smooth', + 'smooth-count': 'arjs-anchor.smoothCount', + 'smooth-tolerance': 'arjs-anchor.smoothTolerance', + 'smooth-threshold': 'arjs-anchor.smoothThreshold', + + 'hit-testing-render-debug': 'arjs-hit-testing.renderDebug', + 'hit-testing-enabled': 'arjs-hit-testing.enabled', + } +})) + +AFRAME.registerPrimitive('a-marker-camera', AFRAME.utils.extendDeep({}, AFRAME.primitives.getMeshMixin(), { + defaultComponents: { + 'arjs-anchor': { + changeMatrixMode: 'cameraTransformMatrix' + }, + 'camera': {}, + }, + mappings: { + 'type': 'arjs-anchor.type', + 'size': 'arjs-anchor.size', + 'url': 'arjs-anchor.patternUrl', + 'value': 'arjs-anchor.barcodeValue', + 'preset': 'arjs-anchor.preset', + 'min-confidence': 'arjs-anchor.minConfidence', + 'marker-helpers': 'arjs-anchor.markerhelpers', + } +})) diff --git a/demo/ar/aframe/src/component-hit-testing.js b/demo/ar/aframe/src/component-hit-testing.js new file mode 100644 index 0000000..264bc10 --- /dev/null +++ b/demo/ar/aframe/src/component-hit-testing.js @@ -0,0 +1,71 @@ +////////////////////////////////////////////////////////////////////////////// +// arjs-hit-testing +////////////////////////////////////////////////////////////////////////////// +AFRAME.registerComponent('arjs-hit-testing', { + dependencies: ['arjs', 'artoolkit'], + schema: { + enabled : { + type: 'boolean', + default: false, + }, + renderDebug : { + type: 'boolean', + default: false, + }, + }, + init: function () { + var _this = this + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + +// TODO make it work on cameraTransformMatrix too +// + _this.isReady = false + _this._arAnchor = null + _this._arHitTesting = null + + // trick to wait until arjsSystem is isReady + var startedAt = Date.now() + var timerId = setInterval(function(){ + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + // wait until anchorComponent is isReady + if( anchorComponent === undefined || anchorComponent.isReady === false ) return + + clearInterval(timerId) + + ////////////////////////////////////////////////////////////////////////////// + // create arAnchor + ////////////////////////////////////////////////////////////////////////////// + var arAnchor = anchorComponent._arAnchor + var arSession = arjsSystem._arSession + var renderer = arSession.parameters.renderer + + var hitTesting = _this._arHitTesting = new ARjs.HitTesting(arSession) + hitTesting.enabled = _this.data.enabled + + _this.isReady = true + }, 1000/60) + }, + remove : function(){ + }, + update: function () { + }, + tick: function(){ + var _this = this + // if not yet isReady, do nothing + if( this.isReady === false ) return + + var arjsSystem = this.el.sceneEl.systems.arjs || this.el.sceneEl.systems.artoolkit + var arSession = arjsSystem._arSession + + var anchorEl = _this.el + var anchorComponent = anchorEl.components['arjs-anchor'] + var arAnchor = anchorComponent._arAnchor + + + var hitTesting = this._arHitTesting + var camera = arSession.parameters.camera +// console.log(camera.position) + hitTesting.update(camera, arAnchor.object3d, arAnchor.parameters.changeMatrixMode) + } +}); diff --git a/demo/ar/aframe/src/location-based/ArjsDeviceOrientationControls.js b/demo/ar/aframe/src/location-based/ArjsDeviceOrientationControls.js new file mode 100644 index 0000000..9a7519c --- /dev/null +++ b/demo/ar/aframe/src/location-based/ArjsDeviceOrientationControls.js @@ -0,0 +1,161 @@ + +/** + * @author richt / http://richt.me + * @author WestLangley / http://github.com/WestLangley + * + * W3C Device Orientation control (http://w3c.github.io/deviceorientation/spec-source-orientation.html) + */ + +/* NOTE that this is a modified version of THREE.DeviceOrientationControls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +ArjsDeviceOrientationControls = function ( object ) { + + var scope = this; + + this.object = object; + this.object.rotation.reorder( 'YXZ' ); + + this.enabled = true; + + this.deviceOrientation = {}; + this.screenOrientation = 0; + + this.alphaOffset = 0; // radians + + this.smoothingFactor = 1; + + this.TWO_PI = 2 * Math.PI; + this.HALF_PI = 0.5 * Math.PI; + + var onDeviceOrientationChangeEvent = function ( event ) { + + scope.deviceOrientation = event; + + }; + + var onScreenOrientationChangeEvent = function () { + + scope.screenOrientation = window.orientation || 0; + + }; + + // The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y'' + + var setObjectQuaternion = function () { + + var zee = new THREE.Vector3( 0, 0, 1 ); + + var euler = new THREE.Euler(); + + var q0 = new THREE.Quaternion(); + + var q1 = new THREE.Quaternion( - Math.sqrt( 0.5 ), 0, 0, Math.sqrt( 0.5 ) ); // - PI/2 around the x-axis + + return function ( quaternion, alpha, beta, gamma, orient ) { + + euler.set( beta, alpha, - gamma, 'YXZ' ); // 'ZXY' for the device, but 'YXZ' for us + + quaternion.setFromEuler( euler ); // orient the device + + quaternion.multiply( q1 ); // camera looks out the back of the device, not the top + + quaternion.multiply( q0.setFromAxisAngle( zee, - orient ) ); // adjust for screen orientation + + }; + + }(); + + this.connect = function () { + + onScreenOrientationChangeEvent(); + + window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = true; + + }; + + this.disconnect = function () { + + window.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false ); + window.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false ); + + scope.enabled = false; + + }; + + this.update = function () { + + if ( scope.enabled === false ) return; + + var device = scope.deviceOrientation; + + if ( device ) { + + var alpha = device.alpha ? THREE.Math.degToRad( device.alpha ) + scope.alphaOffset : 0; // Z + + var beta = device.beta ? THREE.Math.degToRad( device.beta ) : 0; // X' + + var gamma = device.gamma ? THREE.Math.degToRad( device.gamma ) : 0; // Y'' + + var orient = scope.screenOrientation ? THREE.Math.degToRad( scope.screenOrientation ) : 0; // O + + // NW Added smoothing code + var k = this.smoothingFactor; + + if(this.lastOrientation) { + alpha = this._getSmoothedAngle(alpha, this.lastOrientation.alpha, k); + beta = this._getSmoothedAngle(beta + Math.PI, this.lastOrientation.beta, k); + gamma = this._getSmoothedAngle(gamma + this.HALF_PI, this.lastOrientation.gamma, k, Math.PI); + + } else { + beta += Math.PI; + gamma += this.HALF_PI; + } + + this.lastOrientation = { + alpha: alpha, + beta: beta, + gamma: gamma + }; + setObjectQuaternion( scope.object.quaternion, alpha, beta - Math.PI, gamma - this.HALF_PI, orient ); + + } + }; + + + // NW Added + this._orderAngle = function(a, b, range = this.TWO_PI) { + if ((b > a && Math.abs(b - a) < range / 2) || (a > b && Math.abs(b - a) > range / 2)) { + return { left: a, right: b } + } else { + return { left: b, right: a } + } + }; + + // NW Added + this._getSmoothedAngle = function(a, b, k, range = this.TWO_PI) { + const angles = this._orderAngle(a, b, range); + const angleshift = angles.left; + const origAnglesRight = angles.right; + angles.left = 0; + angles.right -= angleshift; + if(angles.right < 0) angles.right += range; + let newangle = origAnglesRight == b ? (1 - k)*angles.right + k * angles.left : k * angles.right + (1 - k) * angles.left; + newangle += angleshift; + if(newangle >= range) newangle -= range; + return newangle; + }; + + this.dispose = function () { + scope.disconnect(); + }; + + this.connect(); + +}; diff --git a/demo/ar/aframe/src/location-based/arjs-look-controls.js b/demo/ar/aframe/src/location-based/arjs-look-controls.js new file mode 100644 index 0000000..8107a53 --- /dev/null +++ b/demo/ar/aframe/src/location-based/arjs-look-controls.js @@ -0,0 +1,487 @@ +// To avoid recalculation at every mouse movement tick +var PI_2 = Math.PI / 2; + + +/** + * look-controls. Update entity pose, factoring mouse, touch, and WebVR API data. + */ + +/* NOTE that this is a modified version of A-Frame's look-controls to + * allow exponential smoothing, for use in AR.js. + * + * Modifications Nick Whitelegg (nickw1 github) + */ + +AFRAME.registerComponent('arjs-look-controls', { + dependencies: ['position', 'rotation'], + + schema: { + enabled: {default: true}, + magicWindowTrackingEnabled: {default: true}, + pointerLockEnabled: {default: false}, + reverseMouseDrag: {default: false}, + reverseTouchDrag: {default: false}, + touchEnabled: {default: true}, + smoothingFactor: { type: 'number', default: 1 } + }, + + init: function () { + this.deltaYaw = 0; + this.previousHMDPosition = new THREE.Vector3(); + this.hmdQuaternion = new THREE.Quaternion(); + this.magicWindowAbsoluteEuler = new THREE.Euler(); + this.magicWindowDeltaEuler = new THREE.Euler(); + this.position = new THREE.Vector3(); + this.magicWindowObject = new THREE.Object3D(); + this.rotation = {}; + this.deltaRotation = {}; + this.savedPose = null; + this.pointerLocked = false; + this.setupMouseControls(); + this.bindMethods(); + this.previousMouseEvent = {}; + + this.setupMagicWindowControls(); + + // To save / restore camera pose + this.savedPose = { + position: new THREE.Vector3(), + rotation: new THREE.Euler() + }; + + // Call enter VR handler if the scene has entered VR before the event listeners attached. + if (this.el.sceneEl.is('vr-mode')) { this.onEnterVR(); } + }, + + setupMagicWindowControls: function () { + var magicWindowControls; + var data = this.data; + + // Only on mobile devices and only enabled if DeviceOrientation permission has been granted. + if (AFRAME.utils.device.isMobile()) { + magicWindowControls = this.magicWindowControls = new ArjsDeviceOrientationControls(this.magicWindowObject); + if (typeof DeviceOrientationEvent !== 'undefined' && DeviceOrientationEvent.requestPermission) { + magicWindowControls.enabled = false; + if (this.el.sceneEl.components['device-orientation-permission-ui'].permissionGranted) { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + } else { + this.el.sceneEl.addEventListener('deviceorientationpermissiongranted', function () { + magicWindowControls.enabled = data.magicWindowTrackingEnabled; + }); + } + } + } + }, + + update: function (oldData) { + var data = this.data; + + // Disable grab cursor classes if no longer enabled. + if (data.enabled !== oldData.enabled) { + this.updateGrabCursor(data.enabled); + } + + // Reset magic window eulers if tracking is disabled. + if (oldData && !data.magicWindowTrackingEnabled && oldData.magicWindowTrackingEnabled) { + this.magicWindowAbsoluteEuler.set(0, 0, 0); + this.magicWindowDeltaEuler.set(0, 0, 0); + } + + // Pass on magic window tracking setting to magicWindowControls. + if (this.magicWindowControls) { + this.magicWindowControls.enabled = data.magicWindowTrackingEnabled; + this.magicWindowControls.smoothingFactor = data.smoothingFactor; + } + + if (oldData && !data.pointerLockEnabled !== oldData.pointerLockEnabled) { + this.removeEventListeners(); + this.addEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + } + }, + + tick: function (t) { + var data = this.data; + if (!data.enabled) { return; } + this.updateOrientation(); + }, + + play: function () { + this.addEventListeners(); + }, + + pause: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + remove: function () { + this.removeEventListeners(); + if (this.pointerLocked) { this.exitPointerLock(); } + }, + + bindMethods: function () { + this.onMouseDown = AFRAME.utils.bind(this.onMouseDown, this); + this.onMouseMove = AFRAME.utils.bind(this.onMouseMove, this); + this.onMouseUp = AFRAME.utils.bind(this.onMouseUp, this); + this.onTouchStart = AFRAME.utils.bind(this.onTouchStart, this); + this.onTouchMove = AFRAME.utils.bind(this.onTouchMove, this); + this.onTouchEnd = AFRAME.utils.bind(this.onTouchEnd, this); + this.onEnterVR = AFRAME.utils.bind(this.onEnterVR, this); + this.onExitVR = AFRAME.utils.bind(this.onExitVR, this); + this.onPointerLockChange = AFRAME.utils.bind(this.onPointerLockChange, this); + this.onPointerLockError = AFRAME.utils.bind(this.onPointerLockError, this); + }, + + /** + * Set up states and Object3Ds needed to store rotation data. + */ + setupMouseControls: function () { + this.mouseDown = false; + this.pitchObject = new THREE.Object3D(); + this.yawObject = new THREE.Object3D(); + this.yawObject.position.y = 10; + this.yawObject.add(this.pitchObject); + }, + + /** + * Add mouse and touch event listeners to canvas. + */ + addEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl.canvas; + + // Wait for canvas to load. + if (!canvasEl) { + sceneEl.addEventListener('render-target-loaded', AFRAME.utils.bind(this.addEventListeners, this)); + return; + } + + // Mouse events. + canvasEl.addEventListener('mousedown', this.onMouseDown, false); + window.addEventListener('mousemove', this.onMouseMove, false); + window.addEventListener('mouseup', this.onMouseUp, false); + + // Touch events. + canvasEl.addEventListener('touchstart', this.onTouchStart); + window.addEventListener('touchmove', this.onTouchMove); + window.addEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.addEventListener('enter-vr', this.onEnterVR); + sceneEl.addEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + if (this.data.pointerLockEnabled) { + document.addEventListener('pointerlockchange', this.onPointerLockChange, false); + document.addEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.addEventListener('pointerlockerror', this.onPointerLockError, false); + } + }, + + /** + * Remove mouse and touch event listeners from canvas. + */ + removeEventListeners: function () { + var sceneEl = this.el.sceneEl; + var canvasEl = sceneEl && sceneEl.canvas; + + if (!canvasEl) { return; } + + // Mouse events. + canvasEl.removeEventListener('mousedown', this.onMouseDown); + window.removeEventListener('mousemove', this.onMouseMove); + window.removeEventListener('mouseup', this.onMouseUp); + + // Touch events. + canvasEl.removeEventListener('touchstart', this.onTouchStart); + window.removeEventListener('touchmove', this.onTouchMove); + window.removeEventListener('touchend', this.onTouchEnd); + + // sceneEl events. + sceneEl.removeEventListener('enter-vr', this.onEnterVR); + sceneEl.removeEventListener('exit-vr', this.onExitVR); + + // Pointer Lock events. + document.removeEventListener('pointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('mozpointerlockchange', this.onPointerLockChange, false); + document.removeEventListener('pointerlockerror', this.onPointerLockError, false); + }, + + /** + * Update orientation for mobile, mouse drag, and headset. + * Mouse-drag only enabled if HMD is not active. + */ + updateOrientation: (function () { + var poseMatrix = new THREE.Matrix4(); + + return function () { + var object3D = this.el.object3D; + var pitchObject = this.pitchObject; + var yawObject = this.yawObject; + var pose; + var sceneEl = this.el.sceneEl; + + // In VR mode, THREE is in charge of updating the camera pose. + if (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected()) { + // With WebXR THREE applies headset pose to the object3D matrixWorld internally. + // Reflect values back on position, rotation, scale for getAttribute to return the expected values. + if (sceneEl.hasWebXR) { + pose = sceneEl.renderer.xr.getCameraPose(); + if (pose) { + poseMatrix.elements = pose.transform.matrix; + poseMatrix.decompose(object3D.position, object3D.rotation, object3D.scale); + } + } + return; + } + + this.updateMagicWindowOrientation(); + + // On mobile, do camera rotation with touch events and sensors. + object3D.rotation.x = this.magicWindowDeltaEuler.x + pitchObject.rotation.x; + object3D.rotation.y = this.magicWindowDeltaEuler.y + yawObject.rotation.y; + object3D.rotation.z = this.magicWindowDeltaEuler.z; + }; + })(), + + updateMagicWindowOrientation: function () { + var magicWindowAbsoluteEuler = this.magicWindowAbsoluteEuler; + var magicWindowDeltaEuler = this.magicWindowDeltaEuler; + // Calculate magic window HMD quaternion. + if (this.magicWindowControls && this.magicWindowControls.enabled) { + this.magicWindowControls.update(); + magicWindowAbsoluteEuler.setFromQuaternion(this.magicWindowObject.quaternion, 'YXZ'); + if (!this.previousMagicWindowYaw && magicWindowAbsoluteEuler.y !== 0) { + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + if (this.previousMagicWindowYaw) { + magicWindowDeltaEuler.x = magicWindowAbsoluteEuler.x; + magicWindowDeltaEuler.y += magicWindowAbsoluteEuler.y - this.previousMagicWindowYaw; + magicWindowDeltaEuler.z = magicWindowAbsoluteEuler.z; + this.previousMagicWindowYaw = magicWindowAbsoluteEuler.y; + } + } + }, + + /** + * Translate mouse drag into rotation. + * + * Dragging up and down rotates the camera around the X-axis (yaw). + * Dragging left and right rotates the camera around the Y-axis (pitch). + */ + onMouseMove: function (evt) { + var direction; + var movementX; + var movementY; + var pitchObject = this.pitchObject; + var previousMouseEvent = this.previousMouseEvent; + var yawObject = this.yawObject; + + // Not dragging or not enabled. + if (!this.data.enabled || (!this.mouseDown && !this.pointerLocked)) { return; } + + // Calculate delta. + if (this.pointerLocked) { + movementX = evt.movementX || evt.mozMovementX || 0; + movementY = evt.movementY || evt.mozMovementY || 0; + } else { + movementX = evt.screenX - previousMouseEvent.screenX; + movementY = evt.screenY - previousMouseEvent.screenY; + } + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + + // Calculate rotation. + direction = this.data.reverseMouseDrag ? 1 : -1; + yawObject.rotation.y += movementX * 0.002 * direction; + pitchObject.rotation.x += movementY * 0.002 * direction; + pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x)); + }, + + /** + * Register mouse down to detect mouse drag. + */ + onMouseDown: function (evt) { + var sceneEl = this.el.sceneEl; + if (!this.data.enabled || (sceneEl.is('vr-mode') && sceneEl.checkHeadsetConnected())) { return; } + // Handle only primary button. + if (evt.button !== 0) { return; } + + var canvasEl = sceneEl && sceneEl.canvas; + + this.mouseDown = true; + this.previousMouseEvent.screenX = evt.screenX; + this.previousMouseEvent.screenY = evt.screenY; + this.showGrabbingCursor(); + + if (this.data.pointerLockEnabled && !this.pointerLocked) { + if (canvasEl.requestPointerLock) { + canvasEl.requestPointerLock(); + } else if (canvasEl.mozRequestPointerLock) { + canvasEl.mozRequestPointerLock(); + } + } + }, + + /** + * Shows grabbing cursor on scene + */ + showGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = 'grabbing'; + }, + + /** + * Hides grabbing cursor on scene + */ + hideGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = ''; + }, + + /** + * Register mouse up to detect release of mouse drag. + */ + onMouseUp: function () { + this.mouseDown = false; + this.hideGrabbingCursor(); + }, + + /** + * Register touch down to detect touch drag. + */ + onTouchStart: function (evt) { + if (evt.touches.length !== 1 || + !this.data.touchEnabled || + this.el.sceneEl.is('vr-mode')) { return; } + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + this.touchStarted = true; + }, + + /** + * Translate touch move to Y-axis rotation. + */ + onTouchMove: function (evt) { + var direction; + var canvas = this.el.sceneEl.canvas; + var deltaY; + var yawObject = this.yawObject; + + if (!this.touchStarted || !this.data.touchEnabled) { return; } + + deltaY = 2 * Math.PI * (evt.touches[0].pageX - this.touchStart.x) / canvas.clientWidth; + + direction = this.data.reverseTouchDrag ? 1 : -1; + // Limit touch orientaion to to yaw (y axis). + yawObject.rotation.y -= deltaY * 0.5 * direction; + this.touchStart = { + x: evt.touches[0].pageX, + y: evt.touches[0].pageY + }; + }, + + /** + * Register touch end to detect release of touch drag. + */ + onTouchEnd: function () { + this.touchStarted = false; + }, + + /** + * Save pose. + */ + onEnterVR: function () { + var sceneEl = this.el.sceneEl; + if (!sceneEl.checkHeadsetConnected()) { return; } + this.saveCameraPose(); + this.el.object3D.position.set(0, 0, 0); + this.el.object3D.rotation.set(0, 0, 0); + if (sceneEl.hasWebXR) { + this.el.object3D.matrixAutoUpdate = false; + this.el.object3D.updateMatrix(); + } + }, + + /** + * Restore the pose. + */ + onExitVR: function () { + if (!this.el.sceneEl.checkHeadsetConnected()) { return; } + this.restoreCameraPose(); + this.previousHMDPosition.set(0, 0, 0); + this.el.object3D.matrixAutoUpdate = true; + }, + + /** + * Update Pointer Lock state. + */ + onPointerLockChange: function () { + this.pointerLocked = !!(document.pointerLockElement || document.mozPointerLockElement); + }, + + /** + * Recover from Pointer Lock error. + */ + onPointerLockError: function () { + this.pointerLocked = false; + }, + + // Exits pointer-locked mode. + exitPointerLock: function () { + document.exitPointerLock(); + this.pointerLocked = false; + }, + + /** + * Toggle the feature of showing/hiding the grab cursor. + */ + updateGrabCursor: function (enabled) { + var sceneEl = this.el.sceneEl; + + function enableGrabCursor () { sceneEl.canvas.classList.add('a-grab-cursor'); } + function disableGrabCursor () { sceneEl.canvas.classList.remove('a-grab-cursor'); } + + if (!sceneEl.canvas) { + if (enabled) { + sceneEl.addEventListener('render-target-loaded', enableGrabCursor); + } else { + sceneEl.addEventListener('render-target-loaded', disableGrabCursor); + } + return; + } + + if (enabled) { + enableGrabCursor(); + return; + } + disableGrabCursor(); + }, + + /** + * Save camera pose before entering VR to restore later if exiting. + */ + saveCameraPose: function () { + var el = this.el; + + this.savedPose.position.copy(el.object3D.position); + this.savedPose.rotation.copy(el.object3D.rotation); + this.hasSavedPose = true; + }, + + /** + * Reset camera pose to before entering VR. + */ + restoreCameraPose: function () { + var el = this.el; + var savedPose = this.savedPose; + + if (!this.hasSavedPose) { return; } + + // Reset camera orientation. + el.object3D.position.copy(savedPose.position); + el.object3D.rotation.copy(savedPose.rotation); + this.hasSavedPose = false; + } +}); diff --git a/demo/ar/aframe/src/location-based/arjs-webcam-texture.js b/demo/ar/aframe/src/location-based/arjs-webcam-texture.js new file mode 100644 index 0000000..f212ee5 --- /dev/null +++ b/demo/ar/aframe/src/location-based/arjs-webcam-texture.js @@ -0,0 +1,52 @@ +AFRAME.registerComponent('arjs-webcam-texture', { + + init: function() { + this.scene = this.el.sceneEl; + this.texCamera = new THREE.OrthographicCamera(-0.5, 0.5, 0.5, -0.5, 0, 10); + this.texScene = new THREE.Scene(); + + this.scene.renderer.autoClear = false; + this.video = document.createElement("video"); + this.video.setAttribute("autoplay", true); + this.video.setAttribute("display", "none"); + document.body.appendChild(this.video); + this.geom = new THREE.PlaneBufferGeometry(); //0.5, 0.5); + this.texture = new THREE.VideoTexture(this.video); + this.material = new THREE.MeshBasicMaterial( { map: this.texture } ); + const mesh = new THREE.Mesh(this.geom, this.material); + this.texScene.add(mesh); + }, + + play: function() { + if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + const constraints = { video: { + facingMode: 'environment' } + }; + navigator.mediaDevices.getUserMedia(constraints).then( stream=> { + this.video.srcObject = stream; + this.video.play(); + }) + .catch(e => { alert(`Webcam error: ${e}`); }); + } else { + alert('sorry - media devices API not supported'); + } + }, + + tick: function() { + this.scene.renderer.clear(); + this.scene.renderer.render(this.texScene, this.texCamera); + this.scene.renderer.clearDepth(); + }, + + pause: function() { + this.video.srcObject.getTracks().forEach ( track => { + track.stop(); + }); + }, + + remove: function() { + this.material.dispose(); + this.texture.dispose(); + this.geom.dispose(); + } +}); diff --git a/demo/ar/aframe/src/location-based/gps-camera.js b/demo/ar/aframe/src/location-based/gps-camera.js new file mode 100644 index 0000000..d98cebd --- /dev/null +++ b/demo/ar/aframe/src/location-based/gps-camera.js @@ -0,0 +1,415 @@ +/* + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-camera', { + _watchPositionId: null, + originCoords: null, + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + maxDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 5, + }, + gpsTimeInterval: { + type: 'number', + default: 0, + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function () { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function () { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function () { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function () { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function () { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function () { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function () { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function () { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function (onSuccess, onError) { + if (!onError) { + onError = function (err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function () { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + this.originCoords = this.currentCoords; + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + _setPosition: function () { + var position = this.el.getAttribute('position'); + + // compute position.x + var dstCoords = { + longitude: this.currentCoords.longitude, + latitude: this.originCoords.latitude, + }; + + position.x = this.computeDistanceMeters(this.originCoords, dstCoords); + position.x *= this.currentCoords.longitude > this.originCoords.longitude ? 1 : -1; + + // compute position.z + var dstCoords = { + longitude: this.originCoords.longitude, + latitude: this.currentCoords.latitude, + } + + position.z = this.computeDistanceMeters(this.originCoords, dstCoords); + position.z *= this.currentCoords.latitude > this.originCoords.latitude ? -1 : 1; + + // update position + this.el.setAttribute('position', position); + + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between source and destination inputs. + * + * Calculate distance, bearing and more between Latitude/Longitude points + * Details: https://www.movable-type.co.uk/scripts/latlong.html + * + * @param {Position} src + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function (src, dest, isPlace) { + var distance = this._haversineDist (src, dest); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + // if function has been called for a place, and if it's too far and a max distance has been set, + // return max distance possible - to be handled by the caller + if (isPlace && this.data.maxDistance && this.data.maxDistance > 0 && distance > this.data.maxDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + + _haversineDist: function (src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function (alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function (event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function () { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); diff --git a/demo/ar/aframe/src/location-based/gps-entity-place.js b/demo/ar/aframe/src/location-based/gps-entity-place.js new file mode 100644 index 0000000..de2f33b --- /dev/null +++ b/demo/ar/aframe/src/location-based/gps-entity-place.js @@ -0,0 +1,127 @@ +AFRAME.registerComponent('gps-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-camera]'); + if (!camera.components['gps-camera']) { + console.error('gps-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-camera']; + } + this._updatePosition(); + }; + + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = { + longitude: this.data.longitude, + latitude: this.data.latitude, + }; + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + var distanceForMsg = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(ev.detail.position, dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + _updatePosition: function() { + var position = { x: 0, y: this.el.getAttribute('position').y || 0, z: 0 } + + // update position.x + var dstCoords = { + longitude: this.data.longitude, + latitude: this._cameraGps.originCoords.latitude, + }; + + position.x = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + this._positionXDebug = position.x; + + position.x *= this.data.longitude > this._cameraGps.originCoords.longitude ? 1 : -1; + + // update position.z + var dstCoords = { + longitude: this._cameraGps.originCoords.longitude, + latitude: this.data.latitude, + }; + + position.z = this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords, dstCoords); + + position.z *= this.data.latitude > this._cameraGps.originCoords.latitude ? -1 : 1; + + if (position.y !== 0) { + var altitude = this._cameraGps.originCoords.altitude !== undefined ? this._cameraGps.originCoords.altitude : 0; + position.y = position.y - altitude; + } + + // update element's position in 3D world + this.el.setAttribute('position', position); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; diff --git a/demo/ar/aframe/src/location-based/gps-projected-camera.js b/demo/ar/aframe/src/location-based/gps-projected-camera.js new file mode 100644 index 0000000..923bafb --- /dev/null +++ b/demo/ar/aframe/src/location-based/gps-projected-camera.js @@ -0,0 +1,482 @@ +/** gps-projected-camera + * + * based on the original gps-camera, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original position (lat/lon) is projected into Spherical Mercator and + * stored. + * + * Then, when we receive a new position (lat/lon), this new position is + * projected into Spherical Mercator and then its world position calculated + * by comparing against the original position. + * + * The same is also the case for 'entity-places'; when these are added, their + * Spherical Mercator coords are calculated (see gps-projected-entity-place). + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + * + * UPDATES 28/08/20: + * + * - add gpsMinDistance and gpsTimeInterval properties to control how + * frequently GPS updates are processed. Aim is to prevent 'stuttering' + * effects when close to AR content due to continuous small changes in + * location. + */ + +AFRAME.registerComponent('gps-projected-camera', { + _watchPositionId: null, + originCoords: null, // original coords now in Spherical Mercator + currentCoords: null, + lookControls: null, + heading: null, + schema: { + simulateLatitude: { + type: 'number', + default: 0, + }, + simulateLongitude: { + type: 'number', + default: 0, + }, + simulateAltitude: { + type: 'number', + default: 0, + }, + positionMinAccuracy: { + type: 'int', + default: 100, + }, + alert: { + type: 'boolean', + default: false, + }, + minDistance: { + type: 'int', + default: 0, + }, + gpsMinDistance: { + type: 'number', + default: 0 + }, + gpsTimeInterval: { + type: 'number', + default: 0 + }, + }, + update: function() { + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition = Object.assign({}, this.currentCoords || {}); + localPosition.longitude = this.data.simulateLongitude; + localPosition.latitude = this.data.simulateLatitude; + localPosition.altitude = this.data.simulateAltitude; + this.currentCoords = localPosition; + + // re-trigger initialization for new origin + this.originCoords = null; + this._updatePosition(); + } + }, + init: function() { + if (!this.el.components['arjs-look-controls'] && !this.el.components['look-controls']) { + return; + } + + this.lastPosition = { + latitude: 0, + longitude: 0 + }; + + this.loader = document.createElement('DIV'); + this.loader.classList.add('arjs-loader'); + document.body.appendChild(this.loader); + + this.onGpsEntityPlaceAdded = this._onGpsEntityPlaceAdded.bind(this); + window.addEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + + this.lookControls = this.el.components['arjs-look-controls'] || this.el.components['look-controls']; + + // listen to deviceorientation event + var eventName = this._getDeviceOrientationEventName(); + this._onDeviceOrientation = this._onDeviceOrientation.bind(this); + + // if Safari + if (!!navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) { + // iOS 13+ + if (typeof DeviceOrientationEvent.requestPermission === 'function') { + var handler = function() { + console.log('Requesting device orientation permissions...') + DeviceOrientationEvent.requestPermission(); + document.removeEventListener('touchend', handler); + }; + + document.addEventListener('touchend', function() { handler() }, false); + + alert('After camera permission prompt, please tap the screen to activate geolocation.'); + } else { + var timeout = setTimeout(function() { + alert('Please enable device orientation in Settings > Safari > Motion & Orientation Access.') + }, 750); + window.addEventListener(eventName, function() { + clearTimeout(timeout); + }); + } + } + + window.addEventListener(eventName, this._onDeviceOrientation, false); + + this._watchPositionId = this._initWatchGPS(function (position) { + var localPosition = { + latitude: position.coords.latitude, + longitude: position.coords.longitude, + altitude: position.coords.altitude, + accuracy: position.coords.accuracy, + altitudeAccuracy: position.coords.altitudeAccuracy, + }; + + if (this.data.simulateAltitude !== 0) { + localPosition.altitude = this.data.simulateAltitude; + } + + if (this.data.simulateLatitude !== 0 && this.data.simulateLongitude !== 0) { + localPosition.latitude = this.data.simulateLatitude; + localPosition.longitude = this.data.simulateLongitude; + this.currentCoords = localPosition; + this._updatePosition(); + } else { + this.currentCoords = localPosition; + var distMoved = this._haversineDist( + this.lastPosition, + this.currentCoords + ); + + if(distMoved >= this.data.gpsMinDistance || !this.originCoords) { + this._updatePosition(); + this.lastPosition = { + longitude: this.currentCoords.longitude, + latitude: this.currentCoords.latitude + }; + } + } + }.bind(this)); + }, + + tick: function() { + if (this.heading === null) { + return; + } + this._updateRotation(); + }, + + remove: function() { + if (this._watchPositionId) { + navigator.geolocation.clearWatch(this._watchPositionId); + } + this._watchPositionId = null; + + var eventName = this._getDeviceOrientationEventName(); + window.removeEventListener(eventName, this._onDeviceOrientation, false); + window.removeEventListener('gps-entity-place-added', this.onGpsEntityPlaceAdded); + }, + + /** + * Get device orientation event name, depends on browser implementation. + * @returns {string} event name + */ + _getDeviceOrientationEventName: function() { + if ('ondeviceorientationabsolute' in window) { + var eventName = 'deviceorientationabsolute' + } else if ('ondeviceorientation' in window) { + var eventName = 'deviceorientation' + } else { + var eventName = '' + console.error('Compass not supported') + } + + return eventName + }, + + /** + * Get current user position. + * + * @param {function} onSuccess + * @param {function} onError + * @returns {Promise} + */ + _initWatchGPS: function(onSuccess, onError) { + if (!onError) { + onError = function(err) { + console.warn('ERROR(' + err.code + '): ' + err.message) + + if (err.code === 1) { + // User denied GeoLocation, let their know that + alert('Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.'); + return; + } + + if (err.code === 3) { + alert('Cannot retrieve GPS position. Signal is absent.'); + return; + } + }; + } + + if ('geolocation' in navigator === false) { + onError({ code: 0, message: 'Geolocation is not supported by your browser' }); + return Promise.resolve(); + } + + // https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition + return navigator.geolocation.watchPosition(onSuccess, onError, { + enableHighAccuracy: true, + maximumAge: this.data.gpsTimeInterval, + timeout: 27000, + }); + }, + + /** + * Update user position. + * + * @returns {void} + */ + _updatePosition: function() { + // don't update if accuracy is not good enough + if (this.currentCoords.accuracy > this.data.positionMinAccuracy) { + if (this.data.alert && !document.getElementById('alert-popup')) { + var popup = document.createElement('div'); + popup.innerHTML = 'GPS signal is very poor. Try move outdoor or to an area with a better signal.' + popup.setAttribute('id', 'alert-popup'); + document.body.appendChild(popup); + } + return; + } + + var alertPopup = document.getElementById('alert-popup'); + if (this.currentCoords.accuracy <= this.data.positionMinAccuracy && alertPopup) { + document.body.removeChild(alertPopup); + } + + if (!this.originCoords) { + // first camera initialization + // Now store originCoords as PROJECTED original lat/lon, so that + // we can set the world origin to the original position in "metres" + this.originCoords = this._project(this.currentCoords.latitude, this.currentCoords.longitude); + this._setPosition(); + + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } else { + this._setPosition(); + } + }, + /** + * Set the current position (in world coords, based on Spherical Mercator) + * + * @returns {void} + */ + _setPosition: function() { + var position = this.el.getAttribute('position'); + + var worldCoords = this.latLonToWorld(this.currentCoords.latitude, this.currentCoords.longitude); + + position.x = worldCoords[0]; + position.z = worldCoords[1]; + + // update position + this.el.setAttribute('position', position); + + // add the sphmerc position to the event (for testing only) + window.dispatchEvent(new CustomEvent('gps-camera-update-position', { detail: { position: this.currentCoords, origin: this.originCoords } })); + }, + /** + * Returns distance in meters between camera and destination input. + * + * Assume we are using a metre-based projection. Not all 'metre-based' + * projections give exact metres, e.g. Spherical Mercator, but it appears + * close enough to be used for AR at least in middle temperate + * latitudes (40 - 55). It is heavily distorted near the poles, however. + * + * @param {Position} dest + * @param {Boolean} isPlace + * + * @returns {number} distance | Number.MAX_SAFE_INTEGER + */ + computeDistanceMeters: function(dest, isPlace) { + var src = this.el.getAttribute("position"); + var dx = dest.x - src.x; + var dz = dest.z - src.z; + var distance = Math.sqrt(dx * dx + dz * dz); + + // if function has been called for a place, and if it's too near and a min distance has been set, + // return max distance possible - to be handled by the method caller + if (isPlace && this.data.minDistance && this.data.minDistance > 0 && distance < this.data.minDistance) { + return Number.MAX_SAFE_INTEGER; + } + + return distance; + }, + /** + * Converts latitude/longitude to OpenGL world coordinates. + * + * First projects lat/lon to absolute Spherical Mercator and then + * calculates the world coordinates by comparing the Spherical Mercator + * coordinates with the Spherical Mercator coordinates of the origin point. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} world coordinates + */ + latLonToWorld: function(lat, lon) { + var projected = this._project(lat, lon); + // Sign of z needs to be reversed compared to projected coordinates + return [projected[0] - this.originCoords[0], -(projected[1] - this.originCoords[1])]; + }, + /** + * Converts latitude/longitude to Spherical Mercator coordinates. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} lat + * @param {Number} lon + * + * @returns {array} Spherical Mercator coordinates + */ + _project: function(lat, lon) { + const HALF_EARTH = 20037508.34; + + // Convert the supplied coords to Spherical Mercator (EPSG:3857), also + // known as 'Google Projection', using the algorithm used extensively + // in various OpenStreetMap software. + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); + return [(lon / 180.0) * HALF_EARTH, y * HALF_EARTH / 180.0]; + }, + /** + * Converts Spherical Mercator coordinates to latitude/longitude. + * Algorithm is used in several OpenStreetMap-related applications. + * + * @param {Number} spherical mercator easting + * @param {Number} spherical mercator northing + * + * @returns {object} lon/lat + */ + _unproject: function(e, n) { + const HALF_EARTH = 20037508.34; + var yp = (n / HALF_EARTH) * 180.0; + return { + longitude: (e / HALF_EARTH) * 180.0, + latitude: 180.0 / Math.PI * (2 * Math.atan(Math.exp(yp * Math.PI / 180.0)) - Math.PI / 2) + }; + }, + /** + * Compute compass heading. + * + * @param {number} alpha + * @param {number} beta + * @param {number} gamma + * + * @returns {number} compass heading + */ + _computeCompassHeading: function(alpha, beta, gamma) { + + // Convert degrees to radians + var alphaRad = alpha * (Math.PI / 180); + var betaRad = beta * (Math.PI / 180); + var gammaRad = gamma * (Math.PI / 180); + + // Calculate equation components + var cA = Math.cos(alphaRad); + var sA = Math.sin(alphaRad); + var sB = Math.sin(betaRad); + var cG = Math.cos(gammaRad); + var sG = Math.sin(gammaRad); + + // Calculate A, B, C rotation components + var rA = - cA * sG - sA * sB * cG; + var rB = - sA * sG + cA * sB * cG; + + // Calculate compass heading + var compassHeading = Math.atan(rA / rB); + + // Convert from half unit circle to whole unit circle + if (rB < 0) { + compassHeading += Math.PI; + } else if (rA < 0) { + compassHeading += 2 * Math.PI; + } + + // Convert radians to degrees + compassHeading *= 180 / Math.PI; + + return compassHeading; + }, + + /** + * Handler for device orientation event. + * + * @param {Event} event + * @returns {void} + */ + _onDeviceOrientation: function(event) { + if (event.webkitCompassHeading !== undefined) { + if (event.webkitCompassAccuracy < 50) { + this.heading = event.webkitCompassHeading; + } else { + console.warn('webkitCompassAccuracy is event.webkitCompassAccuracy'); + } + } else if (event.alpha !== null) { + if (event.absolute === true || event.absolute === undefined) { + this.heading = this._computeCompassHeading(event.alpha, event.beta, event.gamma); + } else { + console.warn('event.absolute === false'); + } + } else { + console.warn('event.alpha === null'); + } + }, + + /** + * Update user rotation data. + * + * @returns {void} + */ + _updateRotation: function() { + var heading = 360 - this.heading; + var cameraRotation = this.el.getAttribute('rotation').y; + var yawRotation = THREE.Math.radToDeg(this.lookControls.yawObject.rotation.y); + var offset = (heading - (cameraRotation - yawRotation)) % 360; + this.lookControls.yawObject.rotation.y = THREE.Math.degToRad(offset); + }, + + /** + * Calculate haversine distance between two lat/lon pairs. + * + * Taken from gps-camera + */ + _haversineDist: function(src, dest) { + var dlongitude = THREE.Math.degToRad(dest.longitude - src.longitude); + var dlatitude = THREE.Math.degToRad(dest.latitude - src.latitude); + + var a = (Math.sin(dlatitude / 2) * Math.sin(dlatitude / 2)) + Math.cos(THREE.Math.degToRad(src.latitude)) * Math.cos(THREE.Math.degToRad(dest.latitude)) * (Math.sin(dlongitude / 2) * Math.sin(dlongitude / 2)); + var angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return angle * 6371000; + }, + + _onGpsEntityPlaceAdded: function() { + // if places are added after camera initialization is finished + if (this.originCoords) { + window.dispatchEvent(new CustomEvent('gps-camera-origin-coord-set')); + } + if (this.loader && this.loader.parentElement) { + document.body.removeChild(this.loader) + } + } +}); + diff --git a/demo/ar/aframe/src/location-based/gps-projected-entity-place.js b/demo/ar/aframe/src/location-based/gps-projected-entity-place.js new file mode 100644 index 0000000..787b59a --- /dev/null +++ b/demo/ar/aframe/src/location-based/gps-projected-entity-place.js @@ -0,0 +1,132 @@ +/** gps-projected-entity-place + * + * based on the original gps-entity-place, modified by nickw 02/04/20 + * + * Rather than keeping track of position by calculating the distance of + * entities or the current location to the original location, this version + * makes use of the "Google" Spherical Mercactor projection, aka epsg:3857. + * + * The original location on startup (lat/lon) is projected into Spherical + * Mercator and stored. + * + * When 'entity-places' are added, their Spherical Mercator coords are + * calculated and converted into world coordinates, relative to the original + * position, using the Spherical Mercator projection calculation in + * gps-projected-camera. + * + * Spherical Mercator units are close to, but not exactly, metres, and are + * heavily distorted near the poles. Nonetheless they are a good approximation + * for many areas of the world and appear not to cause unacceptable distortions + * when used as the units for AR apps. + */ +AFRAME.registerComponent('gps-projected-entity-place', { + _cameraGps: null, + schema: { + longitude: { + type: 'number', + default: 0, + }, + latitude: { + type: 'number', + default: 0, + } + }, + remove: function() { + // cleaning listeners when the entity is removed from the DOM + window.removeEventListener('gps-camera-update-position', this.updatePositionListener); + }, + init: function() { + // Used now to get the GPS camera when it's been setup + this.coordSetListener = () => { + if (!this._cameraGps) { + var camera = document.querySelector('[gps-projected-camera]'); + if (!camera.components['gps-projected-camera']) { + console.error('gps-projected-camera not initialized') + return; + } + this._cameraGps = camera.components['gps-projected-camera']; + this._updatePosition(); + } + }; + + + + // update position needs to worry about distance but nothing else? + this.updatePositionListener = (ev) => { + if (!this.data || !this._cameraGps) { + return; + } + + var dstCoords = this.el.getAttribute('position'); + + // it's actually a 'distance place', but we don't call it with last param, because we want to retrieve distance even if it's < minDistance property + // _computeDistanceMeters is now going to use the projected + var distanceForMsg = this._cameraGps.computeDistanceMeters(dstCoords); + + this.el.setAttribute('distance', distanceForMsg); + this.el.setAttribute('distanceMsg', formatDistance(distanceForMsg)); + + this.el.dispatchEvent(new CustomEvent('gps-entity-place-update-positon', { detail: { distance: distanceForMsg } })); + + var actualDistance = this._cameraGps.computeDistanceMeters(dstCoords, true); + + if (actualDistance === Number.MAX_SAFE_INTEGER) { + this.hideForMinDistance(this.el, true); + } else { + this.hideForMinDistance(this.el, false); + } + }; + + // Retain as this event is fired when the GPS camera is set up + window.addEventListener('gps-camera-origin-coord-set', this.coordSetListener); + window.addEventListener('gps-camera-update-position', this.updatePositionListener); + + this._positionXDebug = 0; + + window.dispatchEvent(new CustomEvent('gps-entity-place-added', { detail: { component: this.el } })); + }, + /** + * Hide entity according to minDistance property + * @returns {void} + */ + hideForMinDistance: function(el, hideEntity) { + if (hideEntity) { + el.setAttribute('visible', 'false'); + } else { + el.setAttribute('visible', 'true'); + } + }, + /** + * Update place position + * @returns {void} + */ + + // set position to world coords using the lat/lon + _updatePosition: function() { + var worldPos = this._cameraGps.latLonToWorld(this.data.latitude, this.data.longitude); + var position = this.el.getAttribute('position'); + + // update element's position in 3D world + //this.el.setAttribute('position', position); + this.el.setAttribute('position', { + x: worldPos[0], + y: position.y, + z: worldPos[1] + }); + }, +}); + +/** + * Format distances string + * + * @param {String} distance + */ +function formatDistance(distance) { + distance = distance.toFixed(0); + + if (distance >= 1000) { + return (distance / 1000) + ' kilometers'; + } + + return distance + ' meters'; +}; diff --git a/demo/ar/aframe/src/location-based/stylesheets/index.css b/demo/ar/aframe/src/location-based/stylesheets/index.css new file mode 100644 index 0000000..d5a730a --- /dev/null +++ b/demo/ar/aframe/src/location-based/stylesheets/index.css @@ -0,0 +1,75 @@ +span { + margin-right: 0.5em; +} + +div.debug { + position: fixed; + bottom: 20px; + left: 10px; + z-index: 1; + width: 100%; + background-color: rgba(1, 1, 1, 0.2); + color: #ff7500; + font-size: 0.75em; + padding: 0.5em; + width: initial; +} + +#alert-popup { + border-radius: 5px; + position: absolute; + bottom: 10%; + left: 5%; + display: block; + width: 80%; + margin: 1em; + padding: 0.25em; + color: #ff7500; + font-size: 0.75em; + text-align: center; + background-color: white; +} + +#place-label { + position: absolute; + top: 5%; + left: 0%; + display: flex; + justify-content: center; + width: 100%; +} + +#place-label > span { + z-index: 99999; + padding: 0.25em; + color: #ff7500; + text-align: center; + background-color: white; + font-size: 1.5em; + border-radius: 5px; +} + +.arjs-loader { + position: fixed; + z-index: 999; + overflow: show; + margin: auto; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 50px; + height: 50px; + pointer-events: none; + border: 0.4em solid transparent; + border-color: #eee; + border-top-color: #444; + border-radius: 50%; + animation: loadingspin 1s linear infinite; +} + +@keyframes loadingspin { + 100% { + transform: rotate(360deg) + } +} diff --git a/demo/ar/aframe/src/system-arjs.js b/demo/ar/aframe/src/system-arjs.js new file mode 100644 index 0000000..ec19632 --- /dev/null +++ b/demo/ar/aframe/src/system-arjs.js @@ -0,0 +1,237 @@ +AFRAME.registerSystem('arjs', { + schema: { + trackingMethod: { + type: 'string', + default: 'best', + }, + debugUIEnabled: { + type: 'boolean', + default: false, + }, + areaLearningButton: { + type: 'boolean', + default: true, + }, + performanceProfile: { + type: 'string', + default: 'default', + }, + labelingMode: { + type: 'string', + default: '', + }, + // new video texture mode (location based only) + videoTexture: { + type: 'boolean', + default: false + }, + // old parameters + debug: { + type: 'boolean', + default: false + }, + detectionMode: { + type: 'string', + default: '', + }, + matrixCodeType: { + type: 'string', + default: '', + }, + patternRatio: { + type: 'number', + default: -1, + }, + cameraParametersUrl: { + type: 'string', + default: '', + }, + maxDetectionRate: { + type: 'number', + default: -1 + }, + sourceType: { + type: 'string', + default: '', + }, + sourceUrl: { + type: 'string', + default: '', + }, + sourceWidth: { + type: 'number', + default: -1 + }, + sourceHeight: { + type: 'number', + default: -1 + }, + deviceId: { + type: 'string', + default: '' + }, + displayWidth: { + type: 'number', + default: -1 + }, + displayHeight: { + type: 'number', + default: -1 + }, + canvasWidth: { + type: 'number', + default: -1 + }, + canvasHeight: { + type: 'number', + default: -1 + }, + }, + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + init: function () { + var _this = this + + // If videoTexture is set, skip the remainder of the setup entirely and just use the arjs-webcam-texture component + if(this.data.videoTexture === true && this.data.sourceType === 'webcam') { + var webcamEntity = document.createElement("a-entity"); + webcamEntity.setAttribute("arjs-webcam-texture", true); + this.el.sceneEl.appendChild(webcamEntity); + return; + } + ////////////////////////////////////////////////////////////////////////////// + // setup arProfile + ////////////////////////////////////////////////////////////////////////////// + + var arProfile = this._arProfile = new ARjs.Profile() + .trackingMethod(this.data.trackingMethod) + .performance(this.data.performanceProfile) + .defaultMarker() + + ////////////////////////////////////////////////////////////////////////////// + // honor this.data and setup arProfile with it + ////////////////////////////////////////////////////////////////////////////// + + // honor this.data and push what has been modified into arProfile + if (this.data.debug !== false) arProfile.contextParameters.debug = this.data.debug + if (this.data.detectionMode !== '') arProfile.contextParameters.detectionMode = this.data.detectionMode + if (this.data.matrixCodeType !== '') arProfile.contextParameters.matrixCodeType = this.data.matrixCodeType + if (this.data.patternRatio !== -1) arProfile.contextParameters.patternRatio = this.data.patternRatio + if (this.data.labelingMode !== '') arProfile.contextParameters.labelingMode = this.data.labelingMode + if (this.data.cameraParametersUrl !== '') arProfile.contextParameters.cameraParametersUrl = this.data.cameraParametersUrl + if (this.data.maxDetectionRate !== -1) arProfile.contextParameters.maxDetectionRate = this.data.maxDetectionRate + if (this.data.canvasWidth !== -1) arProfile.contextParameters.canvasWidth = this.data.canvasWidth + if (this.data.canvasHeight !== -1) arProfile.contextParameters.canvasHeight = this.data.canvasHeight + + if (this.data.sourceType !== '') arProfile.sourceParameters.sourceType = this.data.sourceType + if (this.data.sourceUrl !== '') arProfile.sourceParameters.sourceUrl = this.data.sourceUrl + if (this.data.sourceWidth !== -1) arProfile.sourceParameters.sourceWidth = this.data.sourceWidth + if (this.data.sourceHeight !== -1) arProfile.sourceParameters.sourceHeight = this.data.sourceHeight + if (this.data.deviceId !== '') arProfile.sourceParameters.deviceId = this.data.deviceId + if (this.data.displayWidth !== -1) arProfile.sourceParameters.displayWidth = this.data.displayWidth + if (this.data.displayHeight !== -1) arProfile.sourceParameters.displayHeight = this.data.displayHeight + + arProfile.checkIfValid() + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this._arSession = null + + _this.isReady = false + _this.needsOverride = true + + // wait until the renderer is isReady + this.el.sceneEl.addEventListener('renderstart', function () { + var scene = _this.el.sceneEl.object3D + var camera = _this.el.sceneEl.camera + var renderer = _this.el.sceneEl.renderer + + ////////////////////////////////////////////////////////////////////////////// + // build ARjs.Session + ////////////////////////////////////////////////////////////////////////////// + var arSession = _this._arSession = new ARjs.Session({ + scene: scene, + renderer: renderer, + camera: camera, + sourceParameters: arProfile.sourceParameters, + contextParameters: arProfile.contextParameters + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + _this.isReady = true + + ////////////////////////////////////////////////////////////////////////////// + // awful resize trick + ////////////////////////////////////////////////////////////////////////////// + // KLUDGE + window.addEventListener('resize', onResize) + function onResize() { + var arSource = _this._arSession.arSource + + // ugly kludge to get resize on aframe... not even sure it works + if (arProfile.contextParameters.trackingBackend !== 'tango') { + arSource.copyElementSizeTo(document.body) + } + + // fixing a-frame css + var buttonElement = document.querySelector('.a-enter-vr') + if (buttonElement) { + buttonElement.style.position = 'fixed' + } + } + + ////////////////////////////////////////////////////////////////////////////// + // honor .debugUIEnabled + ////////////////////////////////////////////////////////////////////////////// + if (_this.data.debugUIEnabled) initDebugUI() + function initDebugUI() { + // get or create containerElement + var containerElement = document.querySelector('#arjsDebugUIContainer') + if (containerElement === null) { + containerElement = document.createElement('div') + containerElement.id = 'arjsDebugUIContainer' + containerElement.setAttribute('style', 'position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1;color: grey;') + document.body.appendChild(containerElement) + } + + // create sessionDebugUI + var sessionDebugUI = new ARjs.SessionDebugUI(arSession) + containerElement.appendChild(sessionDebugUI.domElement) + } + }) + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // TODO this is crappy - code an exponential backoff - max 1 seconds + // KLUDGE: kludge to write a 'resize' event + var startedAt = Date.now() + var timerId = setInterval(function () { + if (Date.now() - startedAt > 10000 * 1000) { + clearInterval(timerId) + return + } + // onResize() + window.dispatchEvent(new Event('resize')); + }, 1000 / 30) + }, + + tick: function () { + // skip it if not yet isInitialised + if (this.isReady === false || this.data.videoTexture === true) return + + // update arSession + this._arSession.update() + + // copy projection matrix to camera + this._arSession.onResize() + }, +}) diff --git a/demo/ar/ar.js.html b/demo/ar/ar.js.html new file mode 100644 index 0000000..8e25a8e --- /dev/null +++ b/demo/ar/ar.js.html @@ -0,0 +1,70 @@ + + + + + + Document + + + + + + + + + + +
+
Loading, please wait...
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/ar/data/.DS_Store b/demo/ar/data/.DS_Store new file mode 100644 index 0000000..1cf20a0 Binary files /dev/null and b/demo/ar/data/.DS_Store differ diff --git a/demo/ar/data/data/camera_para.dat b/demo/ar/data/data/camera_para.dat new file mode 100644 index 0000000..67102ed Binary files /dev/null and b/demo/ar/data/data/camera_para.dat differ diff --git a/demo/ar/data/data/multi-marker-hirokanji.dat b/demo/ar/data/data/multi-marker-hirokanji.dat new file mode 100644 index 0000000..63055c9 --- /dev/null +++ b/demo/ar/data/data/multi-marker-hirokanji.dat @@ -0,0 +1,16 @@ +#the number of patterns to be recognized +2 + +#marker 1 +patt.hiro +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.kanji +1.0 +1.0000 0.0000 0.0000 2.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/demo/ar/data/data/patt.hiro b/demo/ar/data/data/patt.hiro new file mode 100644 index 0000000..7f78e3c --- /dev/null +++ b/demo/ar/data/data/patt.hiro @@ -0,0 +1,196 @@ + 234 235 240 233 240 234 240 235 240 237 240 238 240 240 240 232 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 228 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 239 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 231 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 149 240 240 186 216 225 174 240 240 240 237 238 240 240 240 + 150 107 238 231 75 208 115 147 238 228 223 226 237 180 226 240 + 150 62 181 213 62 187 113 169 197 72 29 237 120 50 53 207 + 149 63 47 78 53 184 113 101 142 5 150 150 45 217 186 83 + 121 84 220 222 58 180 121 92 128 109 237 124 155 232 161 64 + 149 71 240 240 76 210 98 109 122 108 240 129 51 119 161 155 + 149 186 240 240 98 219 135 152 207 191 236 227 152 77 175 209 + 235 235 240 233 240 234 240 235 240 236 240 238 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 156 240 240 186 216 225 186 240 240 240 240 240 240 240 240 + 150 117 240 231 72 206 115 162 240 232 223 237 240 180 226 240 + 150 74 187 213 51 184 103 168 197 78 29 237 120 50 53 216 + 144 77 51 74 61 184 106 101 142 5 150 152 52 217 186 85 + 117 89 219 219 65 184 121 92 128 100 236 125 156 240 170 73 + 148 71 240 240 76 210 109 109 121 99 240 137 51 120 166 164 + 140 186 240 240 98 220 150 156 207 192 236 230 152 77 176 212 + 234 235 240 233 240 234 240 235 240 236 240 238 240 240 240 233 + 229 240 240 240 240 240 240 240 240 240 240 240 240 240 240 239 + 227 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 235 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 232 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 228 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 225 156 240 240 182 212 225 180 240 240 240 240 240 240 240 240 + 150 116 238 228 66 205 115 151 238 236 225 240 240 180 226 240 + 156 84 186 211 47 184 109 170 200 92 30 240 120 50 53 216 + 147 83 51 73 50 184 106 110 148 17 151 150 45 217 186 85 + 127 98 219 219 58 179 109 101 128 107 237 125 155 240 163 72 + 155 86 240 240 76 201 85 108 121 95 232 137 51 118 153 155 + 149 189 240 240 98 220 141 154 206 178 235 230 152 77 175 209 + + 232 228 239 240 240 240 240 240 240 240 240 207 83 64 155 209 + 240 240 240 240 240 240 240 240 240 240 226 53 186 161 161 175 + 240 240 240 240 240 240 240 240 240 240 180 50 217 232 119 77 + 240 240 240 240 240 240 240 240 240 238 237 120 45 155 51 152 + 238 240 240 240 240 240 240 240 240 237 226 237 150 124 129 227 + 240 240 240 240 240 240 240 240 240 240 223 29 150 237 240 236 + 237 240 240 240 240 240 240 240 240 240 228 72 5 109 108 191 + 240 240 240 240 240 240 240 240 240 240 238 197 142 128 122 207 + 235 240 240 240 240 240 240 240 240 174 147 169 101 92 109 152 + 240 240 240 240 240 240 240 240 240 225 115 113 113 121 98 135 + 234 240 240 240 240 240 240 240 240 216 208 187 184 180 210 219 + 240 240 240 240 240 240 240 240 240 186 75 62 53 58 76 98 + 233 240 240 240 240 240 240 240 240 240 231 213 78 222 240 240 + 240 240 240 240 240 240 240 240 240 240 238 181 47 220 240 240 + 235 240 240 240 240 240 240 240 240 149 107 62 63 84 71 186 + 234 229 227 240 236 234 236 231 229 225 150 150 149 121 149 149 + 240 240 240 240 240 240 240 240 240 240 240 216 85 73 164 212 + 240 240 240 240 240 240 240 240 240 240 226 53 186 170 166 176 + 240 240 240 240 240 240 240 240 240 240 180 50 217 240 120 77 + 240 240 240 240 240 240 240 240 240 240 240 120 52 156 51 152 + 238 240 240 240 240 240 240 240 240 240 237 237 152 125 137 230 + 240 240 240 240 240 240 240 240 240 240 223 29 150 236 240 236 + 236 240 240 240 240 240 240 240 240 240 232 78 5 100 99 192 + 240 240 240 240 240 240 240 240 240 240 240 197 142 128 121 207 + 235 240 240 240 240 240 240 240 240 186 162 168 101 92 109 156 + 240 240 240 240 240 240 240 240 240 225 115 103 106 121 109 150 + 234 240 240 240 240 240 240 240 240 216 206 184 184 184 210 220 + 240 240 240 240 240 240 240 240 240 186 72 51 61 65 76 98 + 233 240 240 240 240 240 240 240 240 240 231 213 74 219 240 240 + 240 240 240 240 240 240 240 240 240 240 240 187 51 219 240 240 + 235 240 240 240 240 240 240 240 240 156 117 74 77 89 71 186 + 235 229 227 240 236 234 236 232 229 225 150 150 144 117 148 140 + 233 239 240 240 240 240 240 240 240 240 240 216 85 72 155 209 + 240 240 240 240 240 240 240 240 240 240 226 53 186 163 153 175 + 240 240 240 240 240 240 240 240 240 240 180 50 217 240 118 77 + 240 240 240 240 240 240 240 240 240 240 240 120 45 155 51 152 + 238 240 240 240 240 240 240 240 240 240 240 240 150 125 137 230 + 240 240 240 240 240 240 240 240 240 240 225 30 151 237 232 235 + 236 240 240 240 240 240 240 240 240 240 236 92 17 107 95 178 + 240 240 240 240 240 240 240 240 240 240 238 200 148 128 121 206 + 235 240 240 240 240 240 240 240 240 180 151 170 110 101 108 154 + 240 240 240 240 240 240 240 240 240 225 115 109 106 109 85 141 + 234 240 240 240 240 240 240 240 240 212 205 184 184 179 201 220 + 240 240 240 240 240 240 240 240 240 182 66 47 50 58 76 98 + 233 240 240 240 240 240 240 240 240 240 228 211 73 219 240 240 + 240 240 240 240 240 240 240 240 240 240 238 186 51 219 240 240 + 235 240 240 240 240 240 240 240 240 156 116 84 83 98 86 189 + 234 229 227 240 234 232 235 232 228 225 150 156 147 127 155 149 + + 209 175 77 152 227 236 191 207 152 135 219 98 240 240 186 149 + 155 161 119 51 129 240 108 122 109 98 210 76 240 240 71 149 + 64 161 232 155 124 237 109 128 92 121 180 58 222 220 84 121 + 83 186 217 45 150 150 5 142 101 113 184 53 78 47 63 149 + 207 53 50 120 237 29 72 197 169 113 187 62 213 181 62 150 + 240 226 180 237 226 223 228 238 147 115 208 75 231 238 107 150 + 240 240 240 238 237 240 240 240 174 225 216 186 240 240 149 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 231 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 239 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 228 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 232 240 240 240 238 240 237 240 235 240 234 240 233 240 235 234 + 212 176 77 152 230 236 192 207 156 150 220 98 240 240 186 140 + 164 166 120 51 137 240 99 121 109 109 210 76 240 240 71 148 + 73 170 240 156 125 236 100 128 92 121 184 65 219 219 89 117 + 85 186 217 52 152 150 5 142 101 106 184 61 74 51 77 144 + 216 53 50 120 237 29 78 197 168 103 184 51 213 187 74 150 + 240 226 180 240 237 223 232 240 162 115 206 72 231 240 117 150 + 240 240 240 240 240 240 240 240 186 225 216 186 240 240 156 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 240 240 240 240 238 240 236 240 235 240 234 240 233 240 235 235 + 209 175 77 152 230 235 178 206 154 141 220 98 240 240 189 149 + 155 153 118 51 137 232 95 121 108 85 201 76 240 240 86 155 + 72 163 240 155 125 237 107 128 101 109 179 58 219 219 98 127 + 85 186 217 45 150 151 17 148 110 106 184 50 73 51 83 147 + 216 53 50 120 240 30 92 200 170 109 184 47 211 186 84 156 + 240 226 180 240 240 225 236 238 151 115 205 66 228 238 116 150 + 240 240 240 240 240 240 240 240 180 225 212 182 240 240 156 225 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 228 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 235 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 232 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 + 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 227 + 239 240 240 240 240 240 240 240 240 240 240 240 240 240 240 229 + 233 240 240 240 238 240 236 240 235 240 234 240 233 240 235 234 + + 149 149 121 149 150 150 225 229 231 236 234 236 240 227 229 234 + 186 71 84 63 62 107 149 240 240 240 240 240 240 240 240 235 + 240 240 220 47 181 238 240 240 240 240 240 240 240 240 240 240 + 240 240 222 78 213 231 240 240 240 240 240 240 240 240 240 233 + 98 76 58 53 62 75 186 240 240 240 240 240 240 240 240 240 + 219 210 180 184 187 208 216 240 240 240 240 240 240 240 240 234 + 135 98 121 113 113 115 225 240 240 240 240 240 240 240 240 240 + 152 109 92 101 169 147 174 240 240 240 240 240 240 240 240 235 + 207 122 128 142 197 238 240 240 240 240 240 240 240 240 240 240 + 191 108 109 5 72 228 240 240 240 240 240 240 240 240 240 237 + 236 240 237 150 29 223 240 240 240 240 240 240 240 240 240 240 + 227 129 124 150 237 226 237 240 240 240 240 240 240 240 240 238 + 152 51 155 45 120 237 238 240 240 240 240 240 240 240 240 240 + 77 119 232 217 50 180 240 240 240 240 240 240 240 240 240 240 + 175 161 161 186 53 226 240 240 240 240 240 240 240 240 240 240 + 209 155 64 83 207 240 240 240 240 240 240 240 240 239 228 232 + 140 148 117 144 150 150 225 229 232 236 234 236 240 227 229 235 + 186 71 89 77 74 117 156 240 240 240 240 240 240 240 240 235 + 240 240 219 51 187 240 240 240 240 240 240 240 240 240 240 240 + 240 240 219 74 213 231 240 240 240 240 240 240 240 240 240 233 + 98 76 65 61 51 72 186 240 240 240 240 240 240 240 240 240 + 220 210 184 184 184 206 216 240 240 240 240 240 240 240 240 234 + 150 109 121 106 103 115 225 240 240 240 240 240 240 240 240 240 + 156 109 92 101 168 162 186 240 240 240 240 240 240 240 240 235 + 207 121 128 142 197 240 240 240 240 240 240 240 240 240 240 240 + 192 99 100 5 78 232 240 240 240 240 240 240 240 240 240 236 + 236 240 236 150 29 223 240 240 240 240 240 240 240 240 240 240 + 230 137 125 152 237 237 240 240 240 240 240 240 240 240 240 238 + 152 51 156 52 120 240 240 240 240 240 240 240 240 240 240 240 + 77 120 240 217 50 180 240 240 240 240 240 240 240 240 240 240 + 176 166 170 186 53 226 240 240 240 240 240 240 240 240 240 240 + 212 164 73 85 216 240 240 240 240 240 240 240 240 240 240 240 + 149 155 127 147 156 150 225 228 232 235 232 234 240 227 229 234 + 189 86 98 83 84 116 156 240 240 240 240 240 240 240 240 235 + 240 240 219 51 186 238 240 240 240 240 240 240 240 240 240 240 + 240 240 219 73 211 228 240 240 240 240 240 240 240 240 240 233 + 98 76 58 50 47 66 182 240 240 240 240 240 240 240 240 240 + 220 201 179 184 184 205 212 240 240 240 240 240 240 240 240 234 + 141 85 109 106 109 115 225 240 240 240 240 240 240 240 240 240 + 154 108 101 110 170 151 180 240 240 240 240 240 240 240 240 235 + 206 121 128 148 200 238 240 240 240 240 240 240 240 240 240 240 + 178 95 107 17 92 236 240 240 240 240 240 240 240 240 240 236 + 235 232 237 151 30 225 240 240 240 240 240 240 240 240 240 240 + 230 137 125 150 240 240 240 240 240 240 240 240 240 240 240 238 + 152 51 155 45 120 240 240 240 240 240 240 240 240 240 240 240 + 77 118 240 217 50 180 240 240 240 240 240 240 240 240 240 240 + 175 153 163 186 53 226 240 240 240 240 240 240 240 240 240 240 + 209 155 72 85 216 240 240 240 240 240 240 240 240 240 239 233 + diff --git a/demo/ar/data/data/patt.kanji b/demo/ar/data/data/patt.kanji new file mode 100644 index 0000000..87d32bb --- /dev/null +++ b/demo/ar/data/data/patt.kanji @@ -0,0 +1,196 @@ + 214 225 240 225 214 240 216 204 214 227 181 192 198 192 181 192 + 240 240 240 240 240 240 225 232 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 75 128 220 240 240 240 240 240 240 240 + 240 240 240 240 240 240 106 53 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 31 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 74 49 207 240 240 240 240 240 240 240 + 240 240 240 240 240 240 53 54 177 240 240 240 240 240 240 240 + 240 240 240 240 240 240 64 31 130 240 240 240 240 240 240 219 + 240 240 240 240 240 180 37 57 78 228 240 240 240 240 240 240 + 240 240 240 240 240 118 62 157 36 185 240 240 240 240 240 231 + 240 240 240 240 240 82 65 225 67 80 230 240 240 240 240 217 + 240 240 240 225 53 76 225 240 156 62 158 240 240 240 240 226 + 240 240 199 61 9 111 235 240 240 104 58 174 228 240 240 240 + 240 142 64 26 92 227 240 240 240 229 93 64 170 226 238 216 + 90 26 12 156 240 240 240 240 240 240 204 95 30 117 192 200 + 156 16 195 233 235 240 236 240 238 239 240 186 93 53 120 237 + 214 226 240 225 212 240 216 204 212 226 181 192 198 192 185 194 + 240 240 240 240 240 240 227 232 240 240 240 240 240 240 240 238 + 240 240 240 240 240 240 95 138 225 240 240 240 240 240 240 240 + 240 240 240 240 240 240 108 59 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 31 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 83 47 207 240 240 240 240 240 240 240 + 240 240 240 240 240 240 56 49 177 240 240 240 240 240 240 240 + 240 240 240 240 240 240 73 41 130 240 240 240 240 240 240 222 + 240 240 240 240 240 185 46 49 86 230 240 240 240 240 240 240 + 240 240 240 240 240 118 58 165 45 192 240 240 240 240 240 234 + 240 240 240 240 240 91 63 222 74 82 240 240 240 240 240 222 + 240 240 240 226 66 86 225 240 158 63 162 240 240 240 240 228 + 240 240 202 76 11 103 235 240 234 91 49 174 228 240 240 240 + 240 142 68 16 91 226 240 240 240 228 96 74 178 233 239 222 + 90 26 4 150 240 240 240 240 240 240 213 109 46 133 204 213 + 156 14 195 234 236 240 237 240 239 240 240 192 106 57 125 238 + 214 226 240 225 212 240 216 204 214 227 181 192 198 192 184 192 + 240 240 240 240 240 240 226 232 240 240 240 240 240 240 240 236 + 240 240 240 240 240 240 85 134 220 240 240 240 240 240 240 240 + 240 240 240 240 240 240 107 58 240 240 240 240 240 240 240 237 + 240 240 240 240 240 238 118 32 240 240 240 240 240 240 240 234 + 240 240 240 240 240 240 87 60 210 240 240 240 240 240 240 240 + 240 240 240 240 240 240 58 58 178 240 240 240 240 240 240 240 + 240 240 240 240 240 240 73 31 130 240 240 240 240 240 240 219 + 240 240 240 240 240 185 46 59 86 228 240 240 240 240 240 240 + 240 240 240 240 240 118 62 168 41 186 240 240 240 240 240 231 + 240 240 240 240 240 90 65 225 60 92 235 240 240 240 240 219 + 240 240 240 225 53 82 225 240 146 63 163 240 240 240 240 228 + 240 240 198 61 5 103 235 240 234 102 58 175 232 240 240 240 + 240 134 54 13 91 226 240 240 240 229 96 68 188 238 239 222 + 90 15 3 150 240 240 240 240 240 240 213 105 48 134 204 213 + 156 14 195 233 236 240 237 240 239 239 240 192 106 57 125 238 + + 192 236 240 237 234 240 240 219 240 231 217 226 240 216 200 237 + 181 240 240 240 240 240 240 240 240 240 240 240 240 238 192 120 + 192 240 240 240 240 240 240 240 240 240 240 240 240 226 117 53 + 198 240 240 240 240 240 240 240 240 240 240 240 228 170 30 93 + 192 240 240 240 240 240 240 240 240 240 240 240 174 64 95 186 + 181 240 240 240 240 240 240 240 240 240 230 158 58 93 204 240 + 227 240 240 240 240 240 240 240 228 185 80 62 104 229 240 239 + 214 240 220 240 240 207 177 130 78 36 67 156 240 240 240 238 + 204 232 128 53 31 49 54 31 57 157 225 240 240 240 240 240 + 216 225 75 106 118 74 53 64 37 62 65 225 235 240 240 236 + 240 240 240 240 238 240 240 240 180 118 82 76 111 227 240 240 + 214 240 240 240 240 240 240 240 240 240 240 53 9 92 240 235 + 225 240 240 240 240 240 240 240 240 240 240 225 61 26 156 233 + 240 240 240 240 240 240 240 240 240 240 240 240 199 64 12 195 + 225 240 240 240 240 240 240 240 240 240 240 240 240 142 26 16 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + 194 238 240 237 234 240 240 222 240 234 222 228 240 222 213 238 + 185 240 240 240 240 240 240 240 240 240 240 240 240 239 204 125 + 192 240 240 240 240 240 240 240 240 240 240 240 240 233 133 57 + 198 240 240 240 240 240 240 240 240 240 240 240 228 178 46 106 + 192 240 240 240 240 240 240 240 240 240 240 240 174 74 109 192 + 181 240 240 240 240 240 240 240 240 240 240 162 49 96 213 240 + 226 240 240 240 240 240 240 240 230 192 82 63 91 228 240 240 + 212 240 225 240 240 207 177 130 86 45 74 158 234 240 240 239 + 204 232 138 59 31 47 49 41 49 165 222 240 240 240 240 240 + 216 227 95 108 118 83 56 73 46 58 63 225 235 240 240 237 + 240 240 240 240 238 240 240 240 185 118 91 86 103 226 240 240 + 212 240 240 240 240 240 240 240 240 240 240 66 11 91 240 236 + 225 240 240 240 240 240 240 240 240 240 240 226 76 16 150 234 + 240 240 240 240 240 240 240 240 240 240 240 240 202 68 4 195 + 226 240 240 240 240 240 240 240 240 240 240 240 240 142 26 14 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + 192 236 240 237 234 240 240 219 240 231 219 228 240 222 213 238 + 184 240 240 240 240 240 240 240 240 240 240 240 240 239 204 125 + 192 240 240 240 240 240 240 240 240 240 240 240 240 238 134 57 + 198 240 240 240 240 240 240 240 240 240 240 240 232 188 48 106 + 192 240 240 240 240 240 240 240 240 240 240 240 175 68 105 192 + 181 240 240 240 240 240 240 240 240 240 235 163 58 96 213 240 + 227 240 240 240 240 240 240 240 228 186 92 63 102 229 240 239 + 214 240 220 240 240 210 178 130 86 41 60 146 234 240 240 239 + 204 232 134 58 32 60 58 31 59 168 225 240 240 240 240 240 + 216 226 85 107 118 87 58 73 46 62 65 225 235 240 240 237 + 240 240 240 240 238 240 240 240 185 118 90 82 103 226 240 240 + 212 240 240 240 240 240 240 240 240 240 240 53 5 91 240 236 + 225 240 240 240 240 240 240 240 240 240 240 225 61 13 150 233 + 240 240 240 240 240 240 240 240 240 240 240 240 198 54 3 195 + 226 240 240 240 240 240 240 240 240 240 240 240 240 134 15 14 + 214 240 240 240 240 240 240 240 240 240 240 240 240 240 90 156 + + 237 120 53 93 186 240 239 238 240 236 240 235 233 195 16 156 + 200 192 117 30 95 204 240 240 240 240 240 240 156 12 26 90 + 216 238 226 170 64 93 229 240 240 240 227 92 26 64 142 240 + 240 240 240 228 174 58 104 240 240 235 111 9 61 199 240 240 + 226 240 240 240 240 158 62 156 240 225 76 53 225 240 240 240 + 217 240 240 240 240 230 80 67 225 65 82 240 240 240 240 240 + 231 240 240 240 240 240 185 36 157 62 118 240 240 240 240 240 + 240 240 240 240 240 240 228 78 57 37 180 240 240 240 240 240 + 219 240 240 240 240 240 240 130 31 64 240 240 240 240 240 240 + 240 240 240 240 240 240 240 177 54 53 240 240 240 240 240 240 + 240 240 240 240 240 240 240 207 49 74 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 31 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 53 106 240 240 240 240 240 240 + 240 240 240 240 240 240 240 220 128 75 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 232 225 240 240 240 240 240 240 + 192 181 192 198 192 181 227 214 204 216 240 214 225 240 225 214 + 238 125 57 106 192 240 240 239 240 237 240 236 234 195 14 156 + 213 204 133 46 109 213 240 240 240 240 240 240 150 4 26 90 + 222 239 233 178 74 96 228 240 240 240 226 91 16 68 142 240 + 240 240 240 228 174 49 91 234 240 235 103 11 76 202 240 240 + 228 240 240 240 240 162 63 158 240 225 86 66 226 240 240 240 + 222 240 240 240 240 240 82 74 222 63 91 240 240 240 240 240 + 234 240 240 240 240 240 192 45 165 58 118 240 240 240 240 240 + 240 240 240 240 240 240 230 86 49 46 185 240 240 240 240 240 + 222 240 240 240 240 240 240 130 41 73 240 240 240 240 240 240 + 240 240 240 240 240 240 240 177 49 56 240 240 240 240 240 240 + 240 240 240 240 240 240 240 207 47 83 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 31 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 59 108 240 240 240 240 240 240 + 240 240 240 240 240 240 240 225 138 95 240 240 240 240 240 240 + 238 240 240 240 240 240 240 240 232 227 240 240 240 240 240 240 + 194 185 192 198 192 181 226 212 204 216 240 212 225 240 226 214 + 238 125 57 106 192 240 239 239 240 237 240 236 233 195 14 156 + 213 204 134 48 105 213 240 240 240 240 240 240 150 3 15 90 + 222 239 238 188 68 96 229 240 240 240 226 91 13 54 134 240 + 240 240 240 232 175 58 102 234 240 235 103 5 61 198 240 240 + 228 240 240 240 240 163 63 146 240 225 82 53 225 240 240 240 + 219 240 240 240 240 235 92 60 225 65 90 240 240 240 240 240 + 231 240 240 240 240 240 186 41 168 62 118 240 240 240 240 240 + 240 240 240 240 240 240 228 86 59 46 185 240 240 240 240 240 + 219 240 240 240 240 240 240 130 31 73 240 240 240 240 240 240 + 240 240 240 240 240 240 240 178 58 58 240 240 240 240 240 240 + 240 240 240 240 240 240 240 210 60 87 240 240 240 240 240 240 + 234 240 240 240 240 240 240 240 32 118 238 240 240 240 240 240 + 237 240 240 240 240 240 240 240 58 107 240 240 240 240 240 240 + 240 240 240 240 240 240 240 220 134 85 240 240 240 240 240 240 + 236 240 240 240 240 240 240 240 232 226 240 240 240 240 240 240 + 192 184 192 198 192 181 227 214 204 216 240 212 225 240 226 214 + + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 16 26 142 240 240 240 240 240 240 240 240 240 240 240 240 225 + 195 12 64 199 240 240 240 240 240 240 240 240 240 240 240 240 + 233 156 26 61 225 240 240 240 240 240 240 240 240 240 240 225 + 235 240 92 9 53 240 240 240 240 240 240 240 240 240 240 214 + 240 240 227 111 76 82 118 180 240 240 240 238 240 240 240 240 + 236 240 240 235 225 65 62 37 64 53 74 118 106 75 225 216 + 240 240 240 240 240 225 157 57 31 54 49 31 53 128 232 204 + 238 240 240 240 156 67 36 78 130 177 207 240 240 220 240 214 + 239 240 229 104 62 80 185 228 240 240 240 240 240 240 240 227 + 240 204 93 58 158 230 240 240 240 240 240 240 240 240 240 181 + 186 95 64 174 240 240 240 240 240 240 240 240 240 240 240 192 + 93 30 170 228 240 240 240 240 240 240 240 240 240 240 240 198 + 53 117 226 240 240 240 240 240 240 240 240 240 240 240 240 192 + 120 192 238 240 240 240 240 240 240 240 240 240 240 240 240 181 + 237 200 216 240 226 217 231 240 219 240 240 234 237 240 236 192 + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 14 26 142 240 240 240 240 240 240 240 240 240 240 240 240 226 + 195 4 68 202 240 240 240 240 240 240 240 240 240 240 240 240 + 234 150 16 76 226 240 240 240 240 240 240 240 240 240 240 225 + 236 240 91 11 66 240 240 240 240 240 240 240 240 240 240 212 + 240 240 226 103 86 91 118 185 240 240 240 238 240 240 240 240 + 237 240 240 235 225 63 58 46 73 56 83 118 108 95 227 216 + 240 240 240 240 240 222 165 49 41 49 47 31 59 138 232 204 + 239 240 240 234 158 74 45 86 130 177 207 240 240 225 240 212 + 240 240 228 91 63 82 192 230 240 240 240 240 240 240 240 226 + 240 213 96 49 162 240 240 240 240 240 240 240 240 240 240 181 + 192 109 74 174 240 240 240 240 240 240 240 240 240 240 240 192 + 106 46 178 228 240 240 240 240 240 240 240 240 240 240 240 198 + 57 133 233 240 240 240 240 240 240 240 240 240 240 240 240 192 + 125 204 239 240 240 240 240 240 240 240 240 240 240 240 240 185 + 238 213 222 240 228 222 234 240 222 240 240 234 237 240 238 194 + 156 90 240 240 240 240 240 240 240 240 240 240 240 240 240 214 + 14 15 134 240 240 240 240 240 240 240 240 240 240 240 240 226 + 195 3 54 198 240 240 240 240 240 240 240 240 240 240 240 240 + 233 150 13 61 225 240 240 240 240 240 240 240 240 240 240 225 + 236 240 91 5 53 240 240 240 240 240 240 240 240 240 240 212 + 240 240 226 103 82 90 118 185 240 240 240 238 240 240 240 240 + 237 240 240 235 225 65 62 46 73 58 87 118 107 85 226 216 + 240 240 240 240 240 225 168 59 31 58 60 32 58 134 232 204 + 239 240 240 234 146 60 41 86 130 178 210 240 240 220 240 214 + 239 240 229 102 63 92 186 228 240 240 240 240 240 240 240 227 + 240 213 96 58 163 235 240 240 240 240 240 240 240 240 240 181 + 192 105 68 175 240 240 240 240 240 240 240 240 240 240 240 192 + 106 48 188 232 240 240 240 240 240 240 240 240 240 240 240 198 + 57 134 238 240 240 240 240 240 240 240 240 240 240 240 240 192 + 125 204 239 240 240 240 240 240 240 240 240 240 240 240 240 184 + 238 213 222 240 228 219 231 240 219 240 240 234 237 240 236 192 + diff --git a/demo/ar/data/dataNFT/pinball.fset b/demo/ar/data/dataNFT/pinball.fset new file mode 100644 index 0000000..586f7bf Binary files /dev/null and b/demo/ar/data/dataNFT/pinball.fset differ diff --git a/demo/ar/data/dataNFT/pinball.fset3 b/demo/ar/data/dataNFT/pinball.fset3 new file mode 100644 index 0000000..0291b4a Binary files /dev/null and b/demo/ar/data/dataNFT/pinball.fset3 differ diff --git a/demo/ar/data/dataNFT/pinball.iset b/demo/ar/data/dataNFT/pinball.iset new file mode 100644 index 0000000..5d22898 Binary files /dev/null and b/demo/ar/data/dataNFT/pinball.iset differ diff --git a/demo/ar/data/images/25P1geh.png b/demo/ar/data/images/25P1geh.png new file mode 100644 index 0000000..f05ae84 Binary files /dev/null and b/demo/ar/data/images/25P1geh.png differ diff --git a/demo/ar/data/images/HIRO.jpg b/demo/ar/data/images/HIRO.jpg new file mode 100644 index 0000000..7239676 Binary files /dev/null and b/demo/ar/data/images/HIRO.jpg differ diff --git a/demo/ar/data/images/armchair.jpg b/demo/ar/data/images/armchair.jpg new file mode 100644 index 0000000..862f5f4 Binary files /dev/null and b/demo/ar/data/images/armchair.jpg differ diff --git a/demo/ar/data/images/box.png b/demo/ar/data/images/box.png new file mode 100644 index 0000000..0031ff9 --- /dev/null +++ b/demo/ar/data/images/box.png @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + webvr-experiments/box.png at master · jeromeetienne/webvr-experiments · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + + + +
+ +
+ +
+
+ + + +
+
+
+ + + + + +
+
+ + + +Permalink + + + +
+ +
+ + + +
+ +
+ + Find file + + +
+ +
+ + + +
+ + + 55218bc + + May 7, 2016 + + + +
+ + +
+ + +
+ +
+
+
+ + + + +
+ +
+ +
+ 6.6 KB +
+
+ + + +
+
+ box.png +
+
+ +
+ + + + +
+ +
+ + + + +
+
+ +
+ + + + + + + +
+ + + You can't perform that action at this time. +
+ + + + + + + + + +
+ + You signed in with another tab or window. Reload to refresh your session. + You signed out in another tab or window. Reload to refresh your session. +
+ + + + + + diff --git a/demo/ar/data/images/chalk.jpg b/demo/ar/data/images/chalk.jpg new file mode 100644 index 0000000..82d7fe0 Binary files /dev/null and b/demo/ar/data/images/chalk.jpg differ diff --git a/demo/ar/data/images/chalk_multi.jpg b/demo/ar/data/images/chalk_multi.jpg new file mode 100644 index 0000000..4b2d55a Binary files /dev/null and b/demo/ar/data/images/chalk_multi.jpg differ diff --git a/demo/ar/data/images/hiro.png b/demo/ar/data/images/hiro.png new file mode 100644 index 0000000..48bbff6 Binary files /dev/null and b/demo/ar/data/images/hiro.png differ diff --git a/demo/ar/data/images/img.jpg b/demo/ar/data/images/img.jpg new file mode 100644 index 0000000..5c020ef Binary files /dev/null and b/demo/ar/data/images/img.jpg differ diff --git a/demo/ar/data/images/kuva.jpg b/demo/ar/data/images/kuva.jpg new file mode 100644 index 0000000..0711462 Binary files /dev/null and b/demo/ar/data/images/kuva.jpg differ diff --git a/demo/ar/data/images/marker_cube_hamming63.jpg b/demo/ar/data/images/marker_cube_hamming63.jpg new file mode 100644 index 0000000..73c347a Binary files /dev/null and b/demo/ar/data/images/marker_cube_hamming63.jpg differ diff --git a/demo/ar/data/images/multi-pattern-template-abcdgf.png b/demo/ar/data/images/multi-pattern-template-abcdgf.png new file mode 100644 index 0000000..7c0d379 Binary files /dev/null and b/demo/ar/data/images/multi-pattern-template-abcdgf.png differ diff --git a/demo/ar/data/images/multimarker.jpg b/demo/ar/data/images/multimarker.jpg new file mode 100644 index 0000000..7c83478 Binary files /dev/null and b/demo/ar/data/images/multimarker.jpg differ diff --git a/demo/ar/data/images/pinball.jpg b/demo/ar/data/images/pinball.jpg new file mode 100644 index 0000000..d1444ad Binary files /dev/null and b/demo/ar/data/images/pinball.jpg differ diff --git a/demo/ar/data/images/qrcode-in-marker.png b/demo/ar/data/images/qrcode-in-marker.png new file mode 100644 index 0000000..479865c Binary files /dev/null and b/demo/ar/data/images/qrcode-in-marker.png differ diff --git a/demo/ar/data/images/trex.gif b/demo/ar/data/images/trex.gif new file mode 100644 index 0000000..9c75031 Binary files /dev/null and b/demo/ar/data/images/trex.gif differ diff --git a/demo/ar/data/logo/README.md b/demo/ar/data/logo/README.md new file mode 100644 index 0000000..95162c0 --- /dev/null +++ b/demo/ar/data/logo/README.md @@ -0,0 +1,2 @@ +Original logo by @tentone or on twitter [@tentone](https://twitter.com/tentonej) +Released under [MIT license](https://github.com/jeromeetienne/AR.js/issues/4#issuecomment-281746031) diff --git a/demo/ar/data/logo/logo-black-transparent-1280x512.png b/demo/ar/data/logo/logo-black-transparent-1280x512.png new file mode 100644 index 0000000..920849c Binary files /dev/null and b/demo/ar/data/logo/logo-black-transparent-1280x512.png differ diff --git a/demo/ar/data/marker-generator/.npmignore b/demo/ar/data/marker-generator/.npmignore new file mode 100644 index 0000000..2641667 --- /dev/null +++ b/demo/ar/data/marker-generator/.npmignore @@ -0,0 +1 @@ +*.mp4 diff --git a/demo/ar/data/marker-generator/MGO2.swf b/demo/ar/data/marker-generator/MGO2.swf new file mode 100644 index 0000000..315289a Binary files /dev/null and b/demo/ar/data/marker-generator/MGO2.swf differ diff --git a/demo/ar/data/marker-generator/README.md b/demo/ar/data/marker-generator/README.md new file mode 100644 index 0000000..568b131 --- /dev/null +++ b/demo/ar/data/marker-generator/README.md @@ -0,0 +1,5 @@ +from http://flash.tarotaro.org/blog/2009/07/12/mgo2/ + +by https://twitter.com/tarotarorg + +Use on firefox, as chrome seems to be flacky diff --git a/demo/ar/data/multimarkers/multi-abcdef/marker-small.dat b/demo/ar/data/multimarkers/multi-abcdef/marker-small.dat new file mode 100644 index 0000000..110bdd1 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/marker-small.dat @@ -0,0 +1,44 @@ +#the number of patterns to be recognized +6 + +#marker 1 +patt.a +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.b +1.0 +1.0000 0.0000 0.0000 2.5000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 3 +patt.c +1.0 +1.0000 0.0000 0.0000 5.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 4 +patt.d +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 + +#marker 5 +patt.g +1.0 +1.0000 0.0000 0.0000 2.5000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 + +#marker 6 +patt.f +1.0 +1.0000 0.0000 0.0000 5.0000 +0.0000 1.0000 0.0000 -2.5000 +0.0000 0.0000 1.0000 0.0000 diff --git a/demo/ar/data/multimarkers/multi-abcdef/marker.dat b/demo/ar/data/multimarkers/multi-abcdef/marker.dat new file mode 100644 index 0000000..f700794 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/marker.dat @@ -0,0 +1,44 @@ +#the number of patterns to be recognized +6 + +#marker 1 +patt.a +40.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +patt.b +40.0 +1.0000 0.0000 0.0000 100.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 3 +patt.c +40.0 +1.0000 0.0000 0.0000 200.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 4 +patt.d +40.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 5 +patt.g +40.0 +1.0000 0.0000 0.0000 100.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 6 +patt.f +40.0 +1.0000 0.0000 0.0000 200.0000 +0.0000 1.0000 0.0000 -100.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.a b/demo/ar/data/multimarkers/multi-abcdef/patt.a new file mode 100644 index 0000000..bbbec0c --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.a @@ -0,0 +1,196 @@ + 201 211 215 214 217 221 222 219 198 223 223 225 226 226 225 225 + 193 219 223 222 223 220 223 216 96 216 225 225 227 227 228 224 + 193 217 220 221 222 221 223 164 63 190 224 223 226 223 224 224 + 174 214 219 217 220 217 211 107 80 129 218 219 221 223 222 219 + 180 215 217 217 218 219 181 75 78 79 190 216 220 221 221 220 + 183 213 211 217 216 214 92 82 78 76 142 212 217 218 218 216 + 195 214 216 216 217 190 108 137 78 74 90 196 215 217 217 214 + 197 213 214 215 213 130 165 188 75 71 69 137 211 212 212 211 + 192 209 212 212 180 86 204 208 120 74 71 93 205 209 210 207 + 193 207 210 208 123 139 211 207 166 71 71 72 180 205 207 202 + 168 203 206 199 72 113 128 117 113 78 69 72 107 206 206 203 + 152 204 208 151 127 196 199 198 203 170 66 72 73 185 203 198 + 164 206 209 94 192 208 208 209 208 203 73 69 60 131 202 194 + 176 213 156 82 211 208 207 207 208 211 115 68 62 84 190 188 + 184 179 79 91 145 195 207 207 202 178 103 88 88 91 110 180 + 191 191 200 195 204 199 206 202 204 189 198 187 193 188 196 170 + 175 193 203 206 210 208 209 210 192 214 211 214 217 222 217 219 + 184 211 215 215 216 213 216 206 92 213 218 217 220 220 221 222 + 186 209 211 212 214 215 218 157 49 178 215 215 219 217 218 220 + 157 206 210 208 213 211 205 94 62 107 212 214 214 216 217 220 + 162 207 208 208 210 212 172 63 60 56 180 209 213 215 216 219 + 164 205 203 208 206 207 89 65 61 56 123 204 207 211 213 215 + 172 203 207 205 206 181 92 128 60 60 72 187 206 207 207 211 + 178 203 202 205 206 114 153 183 69 59 52 125 204 204 205 213 + 179 201 201 203 174 82 202 202 106 58 56 69 199 201 203 208 + 172 198 201 202 108 119 202 201 159 49 55 47 164 200 200 200 + 156 194 197 192 53 95 111 103 101 51 53 51 84 200 199 201 + 151 195 200 142 103 176 187 181 185 151 47 50 37 176 196 196 + 161 196 200 80 182 200 199 198 200 198 57 50 44 113 197 193 + 172 206 146 69 202 200 199 200 200 203 97 46 48 60 187 182 + 180 165 62 67 133 178 198 199 192 160 85 62 58 57 84 161 + 184 182 187 178 184 184 197 192 195 176 185 177 186 176 183 160 + 201 216 220 220 226 229 228 226 204 238 233 235 232 237 238 241 + 216 239 241 240 241 240 242 238 146 246 242 243 243 244 245 246 + 208 239 239 240 241 239 242 213 82 212 242 242 243 244 244 245 + 183 238 238 237 239 237 239 149 77 144 241 239 241 243 243 245 + 183 235 237 236 239 239 215 106 73 73 214 238 241 242 243 247 + 191 234 232 237 235 239 154 95 77 75 157 237 240 237 239 244 + 199 235 234 235 236 225 138 162 80 74 100 222 236 238 241 242 + 201 234 231 234 236 166 180 215 97 74 70 161 237 233 235 240 + 207 233 231 234 222 136 224 234 141 72 71 97 235 232 234 238 + 207 230 232 232 166 160 229 230 199 72 74 72 200 231 231 237 + 194 227 230 230 125 140 147 162 163 80 70 71 119 233 230 233 + 187 227 232 195 141 198 205 208 212 180 66 70 58 215 229 230 + 195 230 235 138 202 228 231 234 230 231 85 66 62 149 235 230 + 203 232 199 113 226 231 232 232 231 235 131 67 63 83 224 228 + 215 210 110 89 183 215 231 231 227 203 136 86 74 87 119 206 + 218 208 201 202 212 204 230 227 228 212 205 198 213 209 210 196 + + 225 224 224 219 220 216 214 211 207 202 203 198 194 188 180 170 + 225 228 224 222 221 218 217 212 210 207 206 203 202 190 110 196 + 226 227 223 223 221 218 217 212 209 205 206 185 131 84 91 188 + 226 227 226 221 220 217 215 211 205 180 107 73 60 62 88 193 + 225 225 223 219 216 212 196 137 93 72 72 72 69 68 88 187 + 223 225 224 218 190 142 90 69 71 71 69 66 73 115 103 198 + 223 216 190 129 79 76 74 71 74 71 78 170 203 211 178 189 + 198 96 63 80 78 78 78 75 120 166 113 203 208 208 202 204 + 219 216 164 107 75 82 137 188 208 207 117 198 209 207 207 202 + 222 223 223 211 181 92 108 165 204 211 128 199 208 207 207 206 + 221 220 221 217 219 214 190 130 86 139 113 196 208 208 195 199 + 217 223 222 220 218 216 217 213 180 123 72 127 192 211 145 204 + 214 222 221 217 217 217 216 215 212 208 199 151 94 82 91 195 + 215 223 220 219 217 211 216 214 212 210 206 208 209 156 79 200 + 211 219 217 214 215 213 214 213 209 207 203 204 206 213 179 191 + 201 193 193 174 180 183 195 197 192 193 168 152 164 176 184 191 + 219 222 220 220 219 215 211 213 208 200 201 196 193 182 161 160 + 217 221 218 217 216 213 207 205 203 200 199 196 197 187 84 183 + 222 220 217 216 215 211 207 204 201 200 200 176 113 60 57 176 + 217 220 219 214 213 207 206 204 199 164 84 37 44 48 58 186 + 214 217 215 214 209 204 187 125 69 47 51 50 50 46 62 177 + 211 218 215 212 180 123 72 52 56 55 53 47 57 97 85 185 + 214 213 178 107 56 56 60 59 58 49 51 151 198 203 160 176 + 192 92 49 62 60 61 60 69 106 159 101 185 200 200 192 195 + 210 206 157 94 63 65 128 183 202 201 103 181 198 200 199 192 + 209 216 218 205 172 89 92 153 202 202 111 187 199 199 198 197 + 208 213 215 211 212 207 181 114 82 119 95 176 200 200 178 184 + 210 216 214 213 210 206 206 206 174 108 53 103 182 202 133 184 + 206 215 212 208 208 208 205 205 203 202 192 142 80 69 67 178 + 203 215 211 210 208 203 207 202 201 201 197 200 200 146 62 187 + 193 211 209 206 207 205 203 203 201 198 194 195 196 206 165 182 + 175 184 186 157 162 164 172 178 179 172 156 151 161 172 180 184 + 241 246 245 245 247 244 242 240 238 237 233 230 230 228 206 196 + 238 245 244 243 243 239 241 235 234 231 230 229 235 224 119 210 + 237 244 244 243 242 237 238 233 232 231 233 215 149 83 87 209 + 232 243 243 241 241 240 236 237 235 200 119 58 62 63 74 213 + 235 243 242 239 238 237 222 161 97 72 71 70 66 67 86 198 + 233 242 242 241 214 157 100 70 71 74 70 66 85 131 136 205 + 238 246 212 144 73 75 74 74 72 72 80 180 231 235 203 212 + 204 146 82 77 73 77 80 97 141 199 163 212 230 231 227 228 + 226 238 213 149 106 95 162 215 234 230 162 208 234 232 231 227 + 228 242 242 239 215 154 138 180 224 229 147 205 231 232 231 230 + 229 240 239 237 239 239 225 166 136 160 140 198 228 231 215 204 + 226 241 241 239 239 235 236 236 222 166 125 141 202 226 183 212 + 220 240 240 237 236 237 235 234 234 232 230 195 138 113 89 202 + 220 241 239 238 237 232 234 231 231 232 230 232 235 199 110 201 + 216 239 239 238 235 234 235 234 233 230 227 227 230 232 210 208 + 201 216 208 183 183 191 199 201 207 207 194 187 195 203 215 218 + + 170 196 188 193 187 198 189 204 202 206 199 204 195 200 191 191 + 180 110 91 88 88 103 178 202 207 207 195 145 91 79 179 184 + 188 190 84 62 68 115 211 208 207 207 208 211 82 156 213 176 + 194 202 131 60 69 73 203 208 209 208 208 192 94 209 206 164 + 198 203 185 73 72 66 170 203 198 199 196 127 151 208 204 152 + 203 206 206 107 72 69 78 113 117 128 113 72 199 206 203 168 + 202 207 205 180 72 71 71 166 207 211 139 123 208 210 207 193 + 207 210 209 205 93 71 74 120 208 204 86 180 212 212 209 192 + 211 212 212 211 137 69 71 75 188 165 130 213 215 214 213 197 + 214 217 217 215 196 90 74 78 137 108 190 217 216 216 214 195 + 216 218 218 217 212 142 76 78 82 92 214 216 217 211 213 183 + 220 221 221 220 216 190 79 78 75 181 219 218 217 217 215 180 + 219 222 223 221 219 218 129 80 107 211 217 220 217 219 214 174 + 224 224 223 226 223 224 190 63 164 223 221 222 221 220 217 193 + 224 228 227 227 225 225 216 96 216 223 220 223 222 223 219 193 + 225 225 226 226 225 223 223 198 219 222 221 217 214 215 211 201 + 160 183 176 186 177 185 176 195 192 197 184 184 178 187 182 184 + 161 84 57 58 62 85 160 192 199 198 178 133 67 62 165 180 + 182 187 60 48 46 97 203 200 200 199 200 202 69 146 206 172 + 193 197 113 44 50 57 198 200 198 199 200 182 80 200 196 161 + 196 196 176 37 50 47 151 185 181 187 176 103 142 200 195 151 + 201 199 200 84 51 53 51 101 103 111 95 53 192 197 194 156 + 200 200 200 164 47 55 49 159 201 202 119 108 202 201 198 172 + 208 203 201 199 69 56 58 106 202 202 82 174 203 201 201 179 + 213 205 204 204 125 52 59 69 183 153 114 206 205 202 203 178 + 211 207 207 206 187 72 60 60 128 92 181 206 205 207 203 172 + 215 213 211 207 204 123 56 61 65 89 207 206 208 203 205 164 + 219 216 215 213 209 180 56 60 63 172 212 210 208 208 207 162 + 220 217 216 214 214 212 107 62 94 205 211 213 208 210 206 157 + 220 218 217 219 215 215 178 49 157 218 215 214 212 211 209 186 + 222 221 220 220 217 218 213 92 206 216 213 216 215 215 211 184 + 219 217 222 217 214 211 214 192 210 209 208 210 206 203 193 175 + 196 210 209 213 198 205 212 228 227 230 204 212 202 201 208 218 + 206 119 87 74 86 136 203 227 231 231 215 183 89 110 210 215 + 228 224 83 63 67 131 235 231 232 232 231 226 113 199 232 203 + 230 235 149 62 66 85 231 230 234 231 228 202 138 235 230 195 + 230 229 215 58 70 66 180 212 208 205 198 141 195 232 227 187 + 233 230 233 119 71 70 80 163 162 147 140 125 230 230 227 194 + 237 231 231 200 72 74 72 199 230 229 160 166 232 232 230 207 + 238 234 232 235 97 71 72 141 234 224 136 222 234 231 233 207 + 240 235 233 237 161 70 74 97 215 180 166 236 234 231 234 201 + 242 241 238 236 222 100 74 80 162 138 225 236 235 234 235 199 + 244 239 237 240 237 157 75 77 95 154 239 235 237 232 234 191 + 247 243 242 241 238 214 73 73 106 215 239 239 236 237 235 183 + 245 243 243 241 239 241 144 77 149 239 237 239 237 238 238 183 + 245 244 244 243 242 242 212 82 213 242 239 241 240 239 239 208 + 246 245 244 243 243 242 246 146 238 242 240 241 240 241 239 216 + 241 238 237 232 235 233 238 204 226 228 229 226 220 220 216 201 + + 191 184 176 164 152 168 193 192 197 195 183 180 174 193 193 201 + 191 179 213 206 204 203 207 209 213 214 213 215 214 217 219 211 + 200 79 156 209 208 206 210 212 214 216 211 217 219 220 223 215 + 195 91 82 94 151 199 208 212 215 216 217 217 217 221 222 214 + 204 145 211 192 127 72 123 180 213 217 216 218 220 222 223 217 + 199 195 208 208 196 113 139 86 130 190 214 219 217 221 220 221 + 206 207 207 208 199 128 211 204 165 108 92 181 211 223 223 222 + 202 207 207 209 198 117 207 208 188 137 82 75 107 164 216 219 + 204 202 208 208 203 113 166 120 75 78 78 78 80 63 96 198 + 189 178 211 203 170 78 71 74 71 74 76 79 129 190 216 223 + 198 103 115 73 66 69 71 71 69 90 142 190 218 224 225 223 + 187 88 68 69 72 72 72 93 137 196 212 216 219 223 225 225 + 193 88 62 60 73 107 180 205 211 215 217 220 221 226 227 226 + 188 91 84 131 185 206 205 209 212 217 218 221 223 223 227 226 + 196 110 190 202 203 206 207 210 212 217 218 221 222 224 228 225 + 170 180 188 194 198 203 202 207 211 214 216 220 219 224 224 225 + 184 180 172 161 151 156 172 179 178 172 164 162 157 186 184 175 + 182 165 206 196 195 194 198 201 203 203 205 207 206 209 211 193 + 187 62 146 200 200 197 201 201 202 207 203 208 210 211 215 203 + 178 67 69 80 142 192 202 203 205 205 208 208 208 212 215 206 + 184 133 202 182 103 53 108 174 206 206 206 210 213 214 216 210 + 184 178 200 200 176 95 119 82 114 181 207 212 211 215 213 208 + 197 198 199 199 187 111 202 202 153 92 89 172 205 218 216 209 + 192 199 200 198 181 103 201 202 183 128 65 63 94 157 206 210 + 195 192 200 200 185 101 159 106 69 60 61 60 62 49 92 192 + 176 160 203 198 151 51 49 58 59 60 56 56 107 178 213 214 + 185 85 97 57 47 53 55 56 52 72 123 180 212 215 218 211 + 177 62 46 50 50 51 47 69 125 187 204 209 214 215 217 214 + 186 58 48 44 37 84 164 199 204 206 207 213 214 219 220 217 + 176 57 60 113 176 200 200 201 204 207 211 215 216 217 220 222 + 183 84 187 197 196 199 200 203 205 207 213 216 217 218 221 217 + 160 161 182 193 196 201 200 208 213 211 215 219 220 220 222 219 + 218 215 203 195 187 194 207 207 201 199 191 183 183 208 216 201 + 208 210 232 230 227 227 230 233 234 235 234 235 238 239 239 216 + 201 110 199 235 232 230 232 231 231 234 232 237 238 239 241 220 + 202 89 113 138 195 230 232 234 234 235 237 236 237 240 240 220 + 212 183 226 202 141 125 166 222 236 236 235 239 239 241 241 226 + 204 215 231 228 198 140 160 136 166 225 239 239 237 239 240 229 + 230 231 232 231 205 147 229 224 180 138 154 215 239 242 242 228 + 227 231 232 234 208 162 230 234 215 162 95 106 149 213 238 226 + 228 227 231 230 212 163 199 141 97 80 77 73 77 82 146 204 + 212 203 235 231 180 80 72 72 74 74 75 73 144 212 246 238 + 205 136 131 85 66 70 74 71 70 100 157 214 241 242 242 233 + 198 86 67 66 70 71 72 97 161 222 237 238 239 242 243 235 + 213 74 63 62 58 119 200 235 237 236 240 241 241 243 243 232 + 209 87 83 149 215 233 231 232 233 238 237 242 243 244 244 237 + 210 119 224 235 229 230 231 234 235 241 239 243 243 244 245 238 + 196 206 228 230 230 233 237 238 240 242 244 247 245 245 246 241 + diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.b b/demo/ar/data/multimarkers/multi-abcdef/patt.b new file mode 100644 index 0000000..70f9466 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.b @@ -0,0 +1,196 @@ + 130 137 144 139 153 148 139 141 141 144 142 149 148 135 131 120 + 159 157 131 144 145 143 153 147 135 143 152 160 169 169 167 144 + 159 154 122 83 23 35 32 83 81 30 22 49 114 166 165 142 + 160 162 161 154 33 44 44 149 165 137 45 29 35 117 166 146 + 153 163 162 150 28 40 38 145 163 163 101 35 34 65 159 145 + 156 162 162 144 34 39 32 149 161 168 122 39 40 47 153 141 + 159 156 162 150 43 35 35 147 164 161 77 36 30 87 168 130 + 160 160 163 149 24 32 37 142 147 82 22 39 85 157 166 135 + 145 160 163 158 23 43 47 57 56 41 40 93 145 166 167 139 + 138 160 162 155 32 41 35 161 175 146 67 28 30 95 166 133 + 152 162 160 131 37 34 33 158 165 170 129 39 42 26 141 139 + 159 159 161 144 24 32 38 149 165 165 157 32 38 32 110 147 + 155 161 161 147 20 36 40 154 162 160 139 21 41 40 114 137 + 157 162 159 154 30 35 33 153 163 157 83 26 27 43 154 126 + 156 161 154 116 21 24 18 81 112 62 11 18 55 140 165 128 + 142 144 87 109 103 106 113 100 87 96 118 144 159 158 165 128 + 123 136 141 138 149 145 138 144 144 144 141 149 145 139 141 129 + 158 159 142 144 140 136 143 145 138 147 155 162 169 170 171 150 + 152 157 126 92 26 24 16 64 77 36 25 52 119 165 168 143 + 146 159 163 153 23 27 28 137 167 142 49 27 30 115 168 137 + 142 161 161 155 23 29 29 142 166 166 102 24 24 55 159 146 + 153 161 162 149 26 24 19 145 160 166 109 26 27 43 156 141 + 153 155 156 140 35 27 20 140 162 167 79 26 19 69 165 132 + 154 159 160 148 19 25 24 132 141 94 24 27 81 157 166 139 + 146 160 162 155 16 30 21 49 48 32 27 84 140 161 165 141 + 143 159 162 153 20 30 25 148 167 135 62 19 20 84 160 139 + 152 160 161 138 28 24 21 152 163 169 123 28 29 14 131 140 + 154 157 161 145 15 21 26 143 162 164 152 28 28 16 95 144 + 149 154 158 149 11 22 24 146 160 162 145 18 26 23 104 140 + 142 156 159 151 16 21 16 155 165 161 94 20 17 31 147 122 + 149 160 152 114 13 17 9 81 96 69 12 15 50 137 162 126 + 143 144 105 103 89 95 101 102 88 94 113 143 155 155 160 126 + 152 174 185 180 191 187 178 177 180 186 181 191 187 177 178 169 + 197 209 192 183 182 182 190 187 176 185 190 201 213 218 217 196 + 190 207 177 138 69 62 51 105 125 82 72 90 155 209 217 196 + 177 207 208 200 59 48 54 168 210 187 88 50 58 159 210 196 + 176 208 210 200 52 49 50 176 213 215 152 58 48 95 198 196 + 181 206 209 198 67 44 40 183 210 212 170 56 46 72 191 189 + 182 205 205 187 74 47 44 183 209 212 132 58 48 112 201 179 + 188 206 207 196 57 45 46 171 184 132 56 55 110 197 214 189 + 184 206 207 202 62 51 50 98 104 79 55 117 175 203 211 188 + 184 204 207 195 63 48 49 186 210 181 100 48 50 127 205 189 + 195 207 211 187 73 45 50 189 211 210 168 64 53 41 172 190 + 198 205 208 196 57 40 51 177 211 208 199 66 48 43 135 187 + 189 203 205 195 46 37 45 173 205 208 193 50 45 44 141 178 + 179 203 204 189 49 41 32 180 205 205 142 48 38 57 185 167 + 179 202 195 143 39 38 29 106 136 106 46 47 86 174 207 172 + 169 182 146 135 121 129 137 131 120 122 139 176 195 195 201 174 + + 120 144 142 146 145 141 130 135 139 133 139 147 137 126 128 128 + 131 167 165 166 159 153 168 166 167 166 141 110 114 154 165 165 + 135 169 166 117 65 47 87 157 166 95 26 32 40 43 140 158 + 148 169 114 35 34 40 30 85 145 30 42 38 41 27 55 159 + 149 160 49 29 35 39 36 39 93 28 39 32 21 26 18 144 + 142 152 22 45 101 122 77 22 40 67 129 157 139 83 11 118 + 144 143 30 137 163 168 161 82 41 146 170 165 160 157 62 96 + 141 135 81 165 163 161 164 147 56 175 165 165 162 163 112 87 + 141 147 83 149 145 149 147 142 57 161 158 149 154 153 81 100 + 139 153 32 44 38 32 35 37 47 35 33 38 40 33 18 113 + 148 143 35 44 40 39 35 32 43 41 34 32 36 35 24 106 + 153 145 23 33 28 34 43 24 23 32 37 24 20 30 21 103 + 139 144 83 154 150 144 150 149 158 155 131 144 147 154 116 109 + 144 131 122 161 162 162 162 163 163 162 160 161 161 159 154 87 + 137 157 154 162 163 162 156 160 160 160 162 159 161 162 161 144 + 130 159 159 160 153 156 159 160 145 138 152 159 155 157 156 142 + 129 150 143 137 146 141 132 139 141 139 140 144 140 122 126 126 + 141 171 168 168 159 156 165 166 165 160 131 95 104 147 162 160 + 139 170 165 115 55 43 69 157 161 84 14 16 23 31 137 155 + 145 169 119 30 24 27 19 81 140 20 29 28 26 17 50 155 + 149 162 52 27 24 26 26 27 84 19 28 28 18 20 15 143 + 141 155 25 49 102 109 79 24 27 62 123 152 145 94 12 113 + 144 147 36 142 166 166 167 94 32 135 169 164 162 161 69 94 + 144 138 77 167 166 160 162 141 48 167 163 162 160 165 96 88 + 144 145 64 137 142 145 140 132 49 148 152 143 146 155 81 102 + 138 143 16 28 29 19 20 24 21 25 21 26 24 16 9 101 + 145 136 24 27 29 24 27 25 30 30 24 21 22 21 17 95 + 149 140 26 23 23 26 35 19 16 20 28 15 11 16 13 89 + 138 144 92 153 155 149 140 148 155 153 138 145 149 151 114 103 + 141 142 126 163 161 162 156 160 162 162 161 161 158 159 152 105 + 136 159 157 159 161 161 155 159 160 159 160 157 154 156 160 144 + 123 158 152 146 142 153 153 154 146 143 152 154 149 142 149 143 + 169 196 196 196 196 189 179 189 188 189 190 187 178 167 172 174 + 178 217 217 210 198 191 201 214 211 205 172 135 141 185 207 201 + 177 218 209 159 95 72 112 197 203 127 41 43 44 57 174 195 + 187 213 155 58 48 46 48 110 175 50 53 48 45 38 86 195 + 191 201 90 50 58 56 58 55 117 48 64 66 50 48 47 176 + 181 190 72 88 152 170 132 56 55 100 168 199 193 142 46 139 + 186 185 82 187 215 212 212 132 79 181 210 208 208 205 106 122 + 180 176 125 210 213 210 209 184 104 210 211 211 205 205 136 120 + 177 187 105 168 176 183 183 171 98 186 189 177 173 180 106 131 + 178 190 51 54 50 40 44 46 50 49 50 51 45 32 29 137 + 187 182 62 48 49 44 47 45 51 48 45 40 37 41 38 129 + 191 182 69 59 52 67 74 57 62 63 73 57 46 49 39 121 + 180 183 138 200 200 198 187 196 202 195 187 196 195 189 143 135 + 185 192 177 208 210 209 205 207 207 207 211 208 205 204 195 146 + 174 209 207 207 208 206 205 206 206 204 207 205 203 203 202 182 + 152 197 190 177 176 181 182 188 184 184 195 198 189 179 179 169 + + 128 165 158 159 144 118 96 87 100 113 106 103 109 87 144 142 + 128 165 140 55 18 11 62 112 81 18 24 21 116 154 161 156 + 126 154 43 27 26 83 157 163 153 33 35 30 154 159 162 157 + 137 114 40 41 21 139 160 162 154 40 36 20 147 161 161 155 + 147 110 32 38 32 157 165 165 149 38 32 24 144 161 159 159 + 139 141 26 42 39 129 170 165 158 33 34 37 131 160 162 152 + 133 166 95 30 28 67 146 175 161 35 41 32 155 162 160 138 + 139 167 166 145 93 40 41 56 57 47 43 23 158 163 160 145 + 135 166 157 85 39 22 82 147 142 37 32 24 149 163 160 160 + 130 168 87 30 36 77 161 164 147 35 35 43 150 162 156 159 + 141 153 47 40 39 122 168 161 149 32 39 34 144 162 162 156 + 145 159 65 34 35 101 163 163 145 38 40 28 150 162 163 153 + 146 166 117 35 29 45 137 165 149 44 44 33 154 161 162 160 + 142 165 166 114 49 22 30 81 83 32 35 23 83 122 154 159 + 144 167 169 169 160 152 143 135 147 153 143 145 144 131 157 159 + 120 131 135 148 149 142 144 141 141 139 148 153 139 144 137 130 + 126 160 155 155 143 113 94 88 102 101 95 89 103 105 144 143 + 126 162 137 50 15 12 69 96 81 9 17 13 114 152 160 149 + 122 147 31 17 20 94 161 165 155 16 21 16 151 159 156 142 + 140 104 23 26 18 145 162 160 146 24 22 11 149 158 154 149 + 144 95 16 28 28 152 164 162 143 26 21 15 145 161 157 154 + 140 131 14 29 28 123 169 163 152 21 24 28 138 161 160 152 + 139 160 84 20 19 62 135 167 148 25 30 20 153 162 159 143 + 141 165 161 140 84 27 32 48 49 21 30 16 155 162 160 146 + 139 166 157 81 27 24 94 141 132 24 25 19 148 160 159 154 + 132 165 69 19 26 79 167 162 140 20 27 35 140 156 155 153 + 141 156 43 27 26 109 166 160 145 19 24 26 149 162 161 153 + 146 159 55 24 24 102 166 166 142 29 29 23 155 161 161 142 + 137 168 115 30 27 49 142 167 137 28 27 23 153 163 159 146 + 143 168 165 119 52 25 36 77 64 16 24 26 92 126 157 152 + 150 171 170 169 162 155 147 138 145 143 136 140 144 142 159 158 + 129 141 139 145 149 141 144 144 144 138 145 149 138 141 136 123 + 174 201 195 195 176 139 122 120 131 137 129 121 135 146 182 169 + 172 207 174 86 47 46 106 136 106 29 38 39 143 195 202 179 + 167 185 57 38 48 142 205 205 180 32 41 49 189 204 203 179 + 178 141 44 45 50 193 208 205 173 45 37 46 195 205 203 189 + 187 135 43 48 66 199 208 211 177 51 40 57 196 208 205 198 + 190 172 41 53 64 168 210 211 189 50 45 73 187 211 207 195 + 189 205 127 50 48 100 181 210 186 49 48 63 195 207 204 184 + 188 211 203 175 117 55 79 104 98 50 51 62 202 207 206 184 + 189 214 197 110 55 56 132 184 171 46 45 57 196 207 206 188 + 179 201 112 48 58 132 212 209 183 44 47 74 187 205 205 182 + 189 191 72 46 56 170 212 210 183 40 44 67 198 209 206 181 + 196 198 95 48 58 152 215 213 176 50 49 52 200 210 208 176 + 196 210 159 58 50 88 187 210 168 54 48 59 200 208 207 177 + 196 217 209 155 90 72 82 125 105 51 62 69 138 177 207 190 + 196 217 218 213 201 190 185 176 187 190 182 182 183 192 209 197 + 169 178 177 187 191 181 186 180 177 178 187 191 180 185 174 152 + + 142 156 157 155 159 152 138 145 160 159 156 153 160 159 159 130 + 144 161 162 161 159 162 160 160 160 156 162 163 162 154 157 137 + 87 154 159 161 161 160 162 163 163 162 162 162 161 122 131 144 + 109 116 154 147 144 131 155 158 149 150 144 150 154 83 144 139 + 103 21 30 20 24 37 32 23 24 43 34 28 33 23 145 153 + 106 24 35 36 32 34 41 43 32 35 39 40 44 35 143 148 + 113 18 33 40 38 33 35 47 37 35 32 38 44 32 153 139 + 100 81 153 154 149 158 161 57 142 147 149 145 149 83 147 141 + 87 112 163 162 165 165 175 56 147 164 161 163 165 81 135 141 + 96 62 157 160 165 170 146 41 82 161 168 163 137 30 143 144 + 118 11 83 139 157 129 67 40 22 77 122 101 45 22 152 142 + 144 18 26 21 32 39 28 93 39 36 39 35 29 49 160 149 + 159 55 27 41 38 42 30 145 85 30 40 34 35 114 169 148 + 158 140 43 40 32 26 95 166 157 87 47 65 117 166 169 135 + 165 165 154 114 110 141 166 167 166 168 153 159 166 165 167 131 + 128 128 126 137 147 139 133 139 135 130 141 145 146 142 144 120 + 143 149 142 149 154 152 143 146 154 153 153 142 146 152 158 123 + 144 160 156 154 157 160 159 160 159 155 161 161 159 157 159 136 + 105 152 159 158 161 161 162 162 160 156 162 161 163 126 142 141 + 103 114 151 149 145 138 153 155 148 140 149 155 153 92 144 138 + 89 13 16 11 15 28 20 16 19 35 26 23 23 26 140 149 + 95 17 21 22 21 24 30 30 25 27 24 29 27 24 136 145 + 101 9 16 24 26 21 25 21 24 20 19 29 28 16 143 138 + 102 81 155 146 143 152 148 49 132 140 145 142 137 64 145 144 + 88 96 165 160 162 163 167 48 141 162 160 166 167 77 138 144 + 94 69 161 162 164 169 135 32 94 167 166 166 142 36 147 144 + 113 12 94 145 152 123 62 27 24 79 109 102 49 25 155 141 + 143 15 20 18 28 28 19 84 27 26 26 24 27 52 162 149 + 155 50 17 26 28 29 20 140 81 19 27 24 30 119 169 145 + 155 137 31 23 16 14 84 161 157 69 43 55 115 165 170 139 + 160 162 147 104 95 131 160 165 166 165 156 159 168 168 171 141 + 126 126 122 140 144 140 139 141 139 132 141 146 137 143 150 129 + 169 179 179 189 198 195 184 184 188 182 181 176 177 190 197 152 + 182 202 203 203 205 207 204 206 206 205 206 208 207 207 209 174 + 146 195 204 205 208 211 207 207 207 205 209 210 208 177 192 185 + 135 143 189 195 196 187 195 202 196 187 198 200 200 138 183 180 + 121 39 49 46 57 73 63 62 57 74 67 52 59 69 182 191 + 129 38 41 37 40 45 48 51 45 47 44 49 48 62 182 187 + 137 29 32 45 51 50 49 50 46 44 40 50 54 51 190 178 + 131 106 180 173 177 189 186 98 171 183 183 176 168 105 187 177 + 120 136 205 205 211 211 210 104 184 209 210 213 210 125 176 180 + 122 106 205 208 208 210 181 79 132 212 212 215 187 82 185 186 + 139 46 142 193 199 168 100 55 56 132 170 152 88 72 190 181 + 176 47 48 50 66 64 48 117 55 58 56 58 50 90 201 191 + 195 86 38 45 48 53 50 175 110 48 46 48 58 155 213 187 + 195 174 57 44 43 41 127 203 197 112 72 95 159 209 218 177 + 201 207 185 141 135 172 205 211 214 201 191 198 210 217 217 178 + 174 172 167 178 187 190 189 188 189 179 189 196 196 196 196 169 + diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.c b/demo/ar/data/multimarkers/multi-abcdef/patt.c new file mode 100644 index 0000000..7605a43 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.c @@ -0,0 +1,196 @@ + 141 153 152 152 150 151 154 154 150 153 140 144 146 136 147 120 + 163 171 168 171 171 152 117 90 78 99 121 158 176 132 174 159 + 155 171 171 157 100 46 48 112 148 154 131 81 80 72 175 156 + 149 168 160 72 38 43 145 175 174 175 180 167 76 49 169 155 + 151 164 76 39 31 115 176 175 177 176 178 172 156 71 174 156 + 155 133 38 38 40 150 169 173 175 177 175 174 174 102 175 152 + 155 85 38 39 56 166 166 171 170 175 174 173 175 164 172 159 + 147 57 32 37 90 165 163 168 169 171 172 172 176 174 173 146 + 155 42 34 35 88 169 168 168 170 169 174 167 172 172 174 144 + 157 52 35 32 67 169 169 169 170 169 170 169 171 172 172 158 + 147 71 32 38 64 157 169 171 169 168 170 169 169 170 172 150 + 150 111 25 37 46 142 168 167 165 167 167 170 169 164 169 148 + 147 154 60 32 33 103 168 167 169 165 168 170 161 126 172 147 + 149 166 149 49 33 51 128 162 163 166 167 147 80 127 171 150 + 146 167 166 153 93 50 53 76 98 100 81 82 135 170 175 146 + 153 163 155 159 156 153 135 111 114 104 138 160 162 162 167 129 + 123 140 140 148 142 143 146 145 149 138 135 133 131 130 131 106 + 148 161 160 162 164 145 106 73 67 77 95 141 164 132 162 149 + 145 156 161 146 91 29 26 88 133 137 111 59 43 55 163 148 + 138 158 143 56 19 32 128 165 168 169 171 161 64 36 161 151 + 133 152 68 21 19 104 162 165 167 168 169 169 152 56 165 152 + 144 120 25 18 27 147 162 163 162 165 165 165 165 101 160 147 + 138 74 18 15 45 155 161 162 161 164 164 164 164 162 164 149 + 128 42 16 14 64 157 157 159 161 162 163 163 164 166 162 144 + 132 27 19 16 65 156 156 159 160 161 164 162 164 165 164 145 + 133 35 15 14 48 158 155 158 158 159 162 163 161 164 164 150 + 133 60 13 18 36 149 155 157 159 158 159 159 161 162 161 143 + 136 105 15 19 22 133 155 154 156 158 159 157 160 157 160 147 + 140 152 51 13 13 78 155 153 153 153 157 157 152 114 161 143 + 143 158 138 36 8 19 112 156 153 157 159 135 71 102 161 140 + 133 155 154 146 77 26 17 51 78 90 67 63 121 158 160 147 + 130 153 149 155 152 145 116 97 96 99 127 151 149 151 150 131 + 157 180 173 183 174 179 180 180 184 176 173 171 167 169 166 149 + 175 207 209 210 209 193 153 123 123 132 146 194 216 184 204 201 + 176 205 210 197 147 83 62 123 172 184 152 93 90 103 197 199 + 168 206 197 116 52 53 156 206 214 215 218 204 105 61 197 206 + 165 198 126 52 35 122 204 209 214 214 215 215 202 93 193 203 + 174 176 71 39 44 175 205 208 214 213 213 214 215 151 200 203 + 163 130 49 34 68 191 204 207 209 209 212 215 213 207 207 201 + 162 97 36 33 91 192 202 207 210 210 212 209 210 212 215 200 + 161 74 36 34 94 196 202 204 208 208 210 209 212 211 216 200 + 163 68 36 30 68 194 204 205 205 206 206 207 210 210 214 206 + 165 100 33 33 60 184 204 203 203 205 208 207 209 211 210 202 + 162 155 35 33 40 166 202 202 202 204 204 207 207 208 209 200 + 168 196 96 23 24 106 200 202 203 201 205 208 199 163 201 197 + 168 202 190 64 22 36 151 200 201 201 204 186 130 139 200 193 + 163 201 199 186 99 42 38 86 118 139 116 110 155 193 205 196 + 164 196 194 192 193 186 160 120 121 129 164 186 193 197 194 190 + + 120 159 156 155 156 152 159 146 144 158 150 148 147 150 146 129 + 147 174 175 169 174 175 172 173 174 172 172 169 172 171 175 167 + 136 132 72 49 71 102 164 174 172 172 170 164 126 127 170 162 + 146 176 80 76 156 174 175 176 172 171 169 169 161 80 135 162 + 144 158 81 167 172 174 173 172 167 169 169 170 170 147 82 160 + 140 121 131 180 178 175 174 172 174 170 170 167 168 167 81 138 + 153 99 154 175 176 177 175 171 169 169 168 167 165 166 100 104 + 150 78 148 174 177 175 170 169 170 170 169 165 169 163 98 114 + 154 90 112 175 175 173 171 168 168 169 171 167 167 162 76 111 + 154 117 48 145 176 169 166 163 168 169 169 168 168 128 53 135 + 151 152 46 43 115 150 166 165 169 169 157 142 103 51 50 153 + 150 171 100 38 31 40 56 90 88 67 64 46 33 33 93 156 + 152 171 157 72 39 38 39 37 35 32 38 37 32 49 153 159 + 152 168 171 160 76 38 38 32 34 35 32 25 60 149 166 155 + 153 171 171 168 164 133 85 57 42 52 71 111 154 166 167 163 + 141 163 155 149 151 155 155 147 155 157 147 150 147 149 146 153 + 106 149 148 151 152 147 149 144 145 150 143 147 143 140 147 131 + 131 162 163 161 165 160 164 162 164 164 161 160 161 161 160 150 + 130 132 55 36 56 101 162 166 165 164 162 157 114 102 158 151 + 131 164 43 64 152 165 164 164 164 161 161 160 152 71 121 149 + 133 141 59 161 169 165 164 163 162 163 159 157 157 135 63 151 + 135 95 111 171 169 165 164 163 164 162 159 159 157 159 67 127 + 138 77 137 169 168 165 164 162 161 159 158 158 153 157 90 99 + 149 67 133 168 167 162 161 161 160 158 159 156 153 153 78 96 + 145 73 88 165 165 163 162 159 159 158 157 154 153 156 51 97 + 146 106 26 128 162 162 161 157 156 155 155 155 155 112 17 116 + 143 145 29 32 104 147 155 157 156 158 149 133 78 19 26 145 + 142 164 91 19 19 27 45 64 65 48 36 22 13 8 77 152 + 148 162 146 56 21 18 15 14 16 14 18 19 13 36 146 155 + 140 160 161 143 68 25 18 16 19 15 13 15 51 138 154 149 + 140 161 156 158 152 120 74 42 27 35 60 105 152 158 155 153 + 123 148 145 138 133 144 138 128 132 133 133 136 140 143 133 130 + 149 201 199 206 203 203 201 200 200 206 202 200 197 193 196 190 + 166 204 197 197 193 200 207 215 216 214 210 209 201 200 205 194 + 169 184 103 61 93 151 207 212 211 210 211 208 163 139 193 197 + 167 216 90 105 202 215 213 210 212 210 209 207 199 130 155 193 + 171 194 93 204 215 214 215 209 209 207 207 207 208 186 110 186 + 173 146 152 218 215 213 212 212 210 206 208 204 205 204 116 164 + 176 132 184 215 214 213 209 210 208 206 205 204 201 201 139 129 + 184 123 172 214 214 214 209 210 208 205 203 202 203 201 118 121 + 180 123 123 206 209 208 207 207 204 205 203 202 202 200 86 120 + 180 153 62 156 204 205 204 202 202 204 204 202 200 151 38 160 + 179 193 83 53 122 175 191 192 196 194 184 166 106 36 42 186 + 174 209 147 52 35 44 68 91 94 68 60 40 24 22 99 193 + 183 210 197 116 52 39 34 33 34 30 33 33 23 64 186 192 + 173 209 210 197 126 71 49 36 36 36 33 35 96 190 199 194 + 180 207 205 206 198 176 130 97 74 68 100 155 196 202 201 196 + 157 175 176 168 165 174 163 162 161 163 165 162 168 168 163 164 + + 129 167 162 162 160 138 104 114 111 135 153 156 159 155 163 153 + 146 175 170 135 82 81 100 98 76 53 50 93 153 166 167 146 + 150 171 127 80 147 167 166 163 162 128 51 33 49 149 166 149 + 147 172 126 161 170 168 165 169 167 168 103 33 32 60 154 147 + 148 169 164 169 170 167 167 165 167 168 142 46 37 25 111 150 + 150 172 170 169 169 170 168 169 171 169 157 64 38 32 71 147 + 158 172 172 171 169 170 169 170 169 169 169 67 32 35 52 157 + 144 174 172 172 167 174 169 170 168 168 169 88 35 34 42 155 + 146 173 174 176 172 172 171 169 168 163 165 90 37 32 57 147 + 159 172 164 175 173 174 175 170 171 166 166 56 39 38 85 155 + 152 175 102 174 174 175 177 175 173 169 150 40 38 38 133 155 + 156 174 71 156 172 178 176 177 175 176 115 31 39 76 164 151 + 155 169 49 76 167 180 175 174 175 145 43 38 72 160 168 149 + 156 175 72 80 81 131 154 148 112 48 46 100 157 171 171 155 + 159 174 132 176 158 121 99 78 90 117 152 171 171 168 171 163 + 120 147 136 146 144 140 153 150 154 154 151 150 152 152 153 141 + 131 150 151 149 151 127 99 96 97 116 145 152 155 149 153 130 + 147 160 158 121 63 67 90 78 51 17 26 77 146 154 155 133 + 140 161 102 71 135 159 157 153 156 112 19 8 36 138 158 143 + 143 161 114 152 157 157 153 153 153 155 78 13 13 51 152 140 + 147 160 157 160 157 159 158 156 154 155 133 22 19 15 105 136 + 143 161 162 161 159 159 158 159 157 155 149 36 18 13 60 133 + 150 164 164 161 163 162 159 158 158 155 158 48 14 15 35 133 + 145 164 165 164 162 164 161 160 159 156 156 65 16 19 27 132 + 144 162 166 164 163 163 162 161 159 157 157 64 14 16 42 128 + 149 164 162 164 164 164 164 161 162 161 155 45 15 18 74 138 + 147 160 101 165 165 165 165 162 163 162 147 27 18 25 120 144 + 152 165 56 152 169 169 168 167 165 162 104 19 21 68 152 133 + 151 161 36 64 161 171 169 168 165 128 32 19 56 143 158 138 + 148 163 55 43 59 111 137 133 88 26 29 91 146 161 156 145 + 149 162 132 164 141 95 77 67 73 106 145 164 162 160 161 148 + 106 131 130 131 133 135 138 149 145 146 143 142 148 140 140 123 + 190 194 197 193 186 164 129 121 120 160 186 193 192 194 196 164 + 196 205 193 155 110 116 139 118 86 38 42 99 186 199 201 163 + 193 200 139 130 186 204 201 201 200 151 36 22 64 190 202 168 + 197 201 163 199 208 205 201 203 202 200 106 24 23 96 196 168 + 200 209 208 207 207 204 204 202 202 202 166 40 33 35 155 162 + 202 210 211 209 207 208 205 203 203 204 184 60 33 33 100 165 + 206 214 210 210 207 206 206 205 205 204 194 68 30 36 68 163 + 200 216 211 212 209 210 208 208 204 202 196 94 34 36 74 161 + 200 215 212 210 209 212 210 210 207 202 192 91 33 36 97 162 + 201 207 207 213 215 212 209 209 207 204 191 68 34 49 130 163 + 203 200 151 215 214 213 213 214 208 205 175 44 39 71 176 174 + 203 193 93 202 215 215 214 214 209 204 122 35 52 126 198 165 + 206 197 61 105 204 218 215 214 206 156 53 52 116 197 206 168 + 199 197 103 90 93 152 184 172 123 62 83 147 197 210 205 176 + 201 204 184 216 194 146 132 123 123 153 193 209 210 209 207 175 + 149 166 169 167 171 173 176 184 180 180 179 174 183 173 180 157 + + 153 146 149 147 150 147 157 155 147 155 155 151 149 155 163 141 + 163 167 166 154 111 71 52 42 57 85 133 164 168 171 171 153 + 155 166 149 60 25 32 35 34 32 38 38 76 160 171 168 152 + 159 153 49 32 37 38 32 35 37 39 38 39 72 157 171 152 + 156 93 33 33 46 64 67 88 90 56 40 31 38 100 171 150 + 153 50 51 103 142 157 169 169 165 166 150 115 43 46 152 151 + 135 53 128 168 168 169 169 168 163 166 169 176 145 48 117 154 + 111 76 162 167 167 171 169 168 168 171 173 175 175 112 90 154 + 114 98 163 169 165 169 170 170 169 170 175 177 174 148 78 150 + 104 100 166 165 167 168 169 169 171 175 177 176 175 154 99 153 + 138 81 167 168 167 170 170 174 172 174 175 178 180 131 121 140 + 160 82 147 170 170 169 169 167 172 173 174 172 167 81 158 144 + 162 135 80 161 169 169 171 172 176 175 174 156 76 80 176 146 + 162 170 127 126 164 170 172 172 174 164 102 71 49 72 132 136 + 167 175 171 172 169 172 172 174 173 172 175 174 169 175 174 147 + 129 146 150 147 148 150 158 144 146 159 152 156 155 156 159 120 + 130 133 143 140 136 133 133 132 128 138 144 133 138 145 148 123 + 153 155 158 152 105 60 35 27 42 74 120 152 158 156 161 140 + 149 154 138 51 15 13 15 19 16 18 25 68 143 161 160 140 + 155 146 36 13 19 18 14 16 14 15 18 21 56 146 162 148 + 152 77 8 13 22 36 48 65 64 45 27 19 19 91 164 142 + 145 26 19 78 133 149 158 156 157 155 147 104 32 29 145 143 + 116 17 112 155 155 155 155 156 157 161 162 162 128 26 106 146 + 97 51 156 153 154 157 158 159 159 162 163 165 165 88 73 145 + 96 78 153 153 156 159 158 160 161 161 162 167 168 133 67 149 + 99 90 157 153 158 158 159 161 162 164 165 168 169 137 77 138 + 127 67 159 157 159 159 162 164 163 164 165 169 171 111 95 135 + 151 63 135 157 157 159 163 162 163 164 165 169 161 59 141 133 + 149 121 71 152 160 161 161 164 164 164 165 152 64 43 164 131 + 151 158 102 114 157 162 164 165 166 162 101 56 36 55 132 130 + 150 160 161 161 160 161 164 164 162 164 160 165 161 163 162 131 + 131 147 140 143 147 143 150 145 144 149 147 152 151 148 149 106 + 164 163 168 168 162 165 163 161 162 163 174 165 168 176 175 157 + 196 201 202 196 155 100 68 74 97 130 176 198 206 205 207 180 + 194 199 190 96 35 33 36 36 36 49 71 126 197 210 209 173 + 192 186 64 23 33 33 30 34 33 34 39 52 116 197 210 183 + 193 99 22 24 40 60 68 94 91 68 44 35 52 147 209 174 + 186 42 36 106 166 184 194 196 192 191 175 122 53 83 193 179 + 160 38 151 200 202 204 204 202 202 204 205 204 156 62 153 180 + 120 86 200 202 202 203 205 204 207 207 208 209 206 123 123 180 + 121 118 201 203 202 203 205 208 210 209 214 214 214 172 123 184 + 129 139 201 201 204 205 206 208 210 209 213 214 215 184 132 176 + 164 116 204 205 204 208 206 210 212 212 213 215 218 152 146 173 + 186 110 186 208 207 207 207 209 209 215 214 215 204 93 194 171 + 193 155 130 199 207 209 210 212 210 213 215 202 105 90 216 167 + 197 193 139 163 208 211 210 211 212 207 151 93 61 103 184 169 + 194 205 200 201 209 210 214 216 215 207 200 193 197 197 204 166 + 190 196 193 197 200 202 206 200 200 201 203 203 206 199 201 149 + diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.d b/demo/ar/data/multimarkers/multi-abcdef/patt.d new file mode 100644 index 0000000..614c2c0 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.d @@ -0,0 +1,196 @@ + 96 131 130 134 123 130 136 130 133 125 134 118 125 125 129 119 + 96 130 86 81 83 84 84 85 79 104 124 145 148 145 147 138 + 84 146 144 66 19 24 47 114 89 38 21 38 113 148 146 134 + 89 147 147 101 19 23 45 149 149 143 56 21 19 102 148 131 + 91 147 147 101 21 22 37 145 148 150 133 25 25 18 131 140 + 98 147 147 94 23 24 37 142 148 148 150 50 23 20 74 137 + 102 143 144 91 21 23 42 142 148 149 149 77 25 21 36 136 + 107 144 145 90 21 22 42 139 146 148 148 86 24 23 25 136 + 91 144 148 86 21 20 41 146 148 148 148 94 19 22 21 133 + 82 144 145 81 22 23 51 146 146 147 149 105 22 20 28 137 + 92 143 144 75 22 22 51 148 149 150 149 93 22 20 50 142 + 101 144 144 92 15 18 50 146 145 150 151 75 24 19 95 138 + 105 147 150 96 17 17 56 144 145 150 134 24 19 50 149 139 + 114 148 150 85 18 15 56 146 147 140 46 17 51 137 153 141 + 104 125 114 30 18 18 19 55 57 32 38 93 141 150 149 136 + 95 121 122 116 129 129 119 122 124 136 141 155 143 140 138 136 + 85 120 116 117 119 121 123 116 125 115 125 118 118 115 122 118 + 82 122 79 77 78 80 77 82 81 99 114 138 140 140 140 132 + 74 136 132 56 9 8 42 106 80 32 10 31 111 140 140 127 + 78 135 135 84 7 10 38 139 141 133 43 11 12 96 141 126 + 81 134 133 81 8 10 28 136 137 139 121 12 10 10 123 127 + 87 133 134 76 10 11 28 134 137 139 142 39 11 9 66 128 + 95 134 134 76 7 10 30 135 137 139 140 61 11 11 28 128 + 98 133 133 69 8 8 34 136 138 139 138 77 9 11 16 121 + 80 131 134 63 8 9 34 136 136 137 140 84 7 11 10 118 + 77 132 133 60 10 10 39 138 138 138 141 93 7 10 17 125 + 87 135 134 55 8 8 42 138 136 139 139 84 9 10 37 128 + 92 135 134 73 6 6 43 136 134 137 139 58 12 8 89 125 + 95 132 133 79 7 7 47 136 134 138 125 16 10 39 132 128 + 102 135 137 75 8 7 47 136 135 131 44 9 39 120 140 127 + 92 120 106 28 8 8 8 45 47 24 29 79 131 138 139 129 + 80 114 113 103 112 114 109 108 113 124 129 137 130 132 132 124 + 113 147 147 146 139 143 149 137 147 146 153 140 147 147 151 134 + 109 150 107 101 108 105 103 119 107 126 144 166 173 172 176 162 + 101 166 161 68 19 16 63 139 107 54 29 53 138 174 177 157 + 102 167 167 106 17 17 58 171 173 163 59 17 23 124 179 156 + 109 169 169 102 15 17 47 167 172 176 145 23 17 21 158 159 + 115 166 167 95 16 16 48 165 170 172 174 57 21 15 97 157 + 119 165 166 97 15 15 50 164 171 173 174 83 18 19 50 153 + 124 167 165 90 16 16 57 163 171 173 175 103 19 21 33 143 + 106 162 165 86 16 13 56 165 171 174 174 113 15 22 26 138 + 103 164 164 82 16 14 61 166 172 172 173 118 15 18 36 142 + 113 168 164 76 13 13 66 167 170 173 172 108 17 20 60 153 + 119 168 167 94 10 13 65 166 168 170 169 82 21 17 114 153 + 122 166 165 107 13 11 66 166 167 171 156 34 19 63 163 158 + 131 166 166 101 16 11 66 163 165 156 64 18 62 151 173 154 + 120 148 132 53 21 20 23 75 76 53 54 107 158 172 172 155 + 104 138 137 127 127 125 135 134 131 140 151 163 159 159 157 155 + + 119 138 134 131 140 137 136 136 133 137 142 138 139 141 136 136 + 129 147 146 148 131 74 36 25 21 28 50 95 149 153 149 138 + 125 145 148 102 18 20 21 23 22 20 20 19 50 137 150 140 + 125 148 113 19 25 23 25 24 19 22 22 24 19 51 141 143 + 118 145 38 21 25 50 77 86 94 105 93 75 24 17 93 155 + 134 124 21 56 133 150 149 148 148 149 149 151 134 46 38 141 + 125 104 38 143 150 148 149 148 148 147 150 150 150 140 32 136 + 133 79 89 149 148 148 148 146 148 146 149 145 145 147 57 124 + 130 85 114 149 145 142 142 139 146 146 148 146 144 146 55 122 + 136 84 47 45 37 37 42 42 41 51 51 50 56 56 19 119 + 130 84 24 23 22 24 23 22 20 23 22 18 17 15 18 129 + 123 83 19 19 21 23 21 21 21 22 22 15 17 18 18 129 + 134 81 66 101 101 94 91 90 86 81 75 92 96 85 30 116 + 130 86 144 147 147 147 144 145 148 145 144 144 150 150 114 122 + 131 130 146 147 147 147 143 144 144 144 143 144 147 148 125 121 + 96 96 84 89 91 98 102 107 91 82 92 101 105 114 104 95 + 118 132 127 126 127 128 128 121 118 125 128 125 128 127 129 124 + 122 140 140 141 123 66 28 16 10 17 37 89 132 140 139 132 + 115 140 140 96 10 9 11 11 11 10 10 8 39 120 138 132 + 118 140 111 12 10 11 11 9 7 7 9 12 10 39 131 130 + 118 138 31 11 12 39 61 77 84 93 84 58 16 9 79 137 + 125 114 10 43 121 142 140 138 140 141 139 139 125 44 29 129 + 115 99 32 133 139 139 139 139 137 138 139 137 138 131 24 124 + 125 81 80 141 137 137 137 138 136 138 136 134 134 135 47 113 + 116 82 106 139 136 134 135 136 136 138 138 136 136 136 45 108 + 123 77 42 38 28 28 30 34 34 39 42 43 47 47 8 109 + 121 80 8 10 10 11 10 8 9 10 8 6 7 7 8 114 + 119 78 9 7 8 10 7 8 8 10 8 6 7 8 8 112 + 117 77 56 84 81 76 76 69 63 60 55 73 79 75 28 103 + 116 79 132 135 133 134 134 133 134 133 134 134 133 137 106 113 + 120 122 136 135 134 133 134 133 131 132 135 135 132 135 120 114 + 85 82 74 78 81 87 95 98 80 77 87 92 95 102 92 80 + 134 162 157 156 159 157 153 143 138 142 153 153 158 154 155 155 + 151 176 177 179 158 97 50 33 26 36 60 114 163 173 172 157 + 147 172 174 124 21 15 19 21 22 18 20 17 63 151 172 159 + 147 173 138 23 17 21 18 19 15 15 17 21 19 62 158 159 + 140 166 53 17 23 57 83 103 113 118 108 82 34 18 107 163 + 153 144 29 59 145 174 174 175 174 173 172 169 156 64 54 151 + 146 126 54 163 176 172 173 173 174 172 173 170 171 156 53 140 + 147 107 107 173 172 170 171 171 171 172 170 168 167 165 76 131 + 137 119 139 171 167 165 164 163 165 166 167 166 166 163 75 134 + 149 103 63 58 47 48 50 57 56 61 66 65 66 66 23 135 + 143 105 16 17 17 16 15 16 13 14 13 13 11 11 20 125 + 139 108 19 17 15 16 15 16 16 16 13 10 13 16 21 127 + 146 101 68 106 102 95 97 90 86 82 76 94 107 101 53 127 + 147 107 161 167 169 167 166 165 165 164 164 167 165 166 132 137 + 147 150 166 167 169 166 165 167 162 164 168 168 166 166 148 138 + 113 109 101 102 109 115 119 124 106 103 113 119 122 131 120 104 + + 136 138 140 143 155 141 136 124 122 119 129 129 116 122 121 95 + 136 149 150 141 93 38 32 57 55 19 18 18 30 114 125 104 + 141 153 137 51 17 46 140 147 146 56 15 18 85 150 148 114 + 139 149 50 19 24 134 150 145 144 56 17 17 96 150 147 105 + 138 95 19 24 75 151 150 145 146 50 18 15 92 144 144 101 + 142 50 20 22 93 149 150 149 148 51 22 22 75 144 143 92 + 137 28 20 22 105 149 147 146 146 51 23 22 81 145 144 82 + 133 21 22 19 94 148 148 148 146 41 20 21 86 148 144 91 + 136 25 23 24 86 148 148 146 139 42 22 21 90 145 144 107 + 136 36 21 25 77 149 149 148 142 42 23 21 91 144 143 102 + 137 74 20 23 50 150 148 148 142 37 24 23 94 147 147 98 + 140 131 18 25 25 133 150 148 145 37 22 21 101 147 147 91 + 131 148 102 19 21 56 143 149 149 45 23 19 101 147 147 89 + 134 146 148 113 38 21 38 89 114 47 24 19 66 144 146 84 + 138 147 145 148 145 124 104 79 85 84 84 83 81 86 130 96 + 119 129 125 125 118 134 125 133 130 136 130 123 134 130 131 96 + 124 132 132 130 137 129 124 113 108 109 114 112 103 113 114 80 + 129 139 138 131 79 29 24 47 45 8 8 8 28 106 120 92 + 127 140 120 39 9 44 131 135 136 47 7 8 75 137 135 102 + 128 132 39 10 16 125 138 134 136 47 7 7 79 133 132 95 + 125 89 8 12 58 139 137 134 136 43 6 6 73 134 135 92 + 128 37 10 9 84 139 139 136 138 42 8 8 55 134 135 87 + 125 17 10 7 93 141 138 138 138 39 10 10 60 133 132 77 + 118 10 11 7 84 140 137 136 136 34 9 8 63 134 131 80 + 121 16 11 9 77 138 139 138 136 34 8 8 69 133 133 98 + 128 28 11 11 61 140 139 137 135 30 10 7 76 134 134 95 + 128 66 9 11 39 142 139 137 134 28 11 10 76 134 133 87 + 127 123 10 10 12 121 139 137 136 28 10 8 81 133 134 81 + 126 141 96 12 11 43 133 141 139 38 10 7 84 135 135 78 + 127 140 140 111 31 10 32 80 106 42 8 9 56 132 136 74 + 132 140 140 140 138 114 99 81 82 77 80 78 77 79 122 82 + 118 122 115 118 118 125 115 125 116 123 121 119 117 116 120 85 + 155 157 159 159 163 151 140 131 134 135 125 127 127 137 138 104 + 155 172 172 158 107 54 53 76 75 23 20 21 53 132 148 120 + 154 173 151 62 18 64 156 165 163 66 11 16 101 166 166 131 + 158 163 63 19 34 156 171 167 166 66 11 13 107 165 166 122 + 153 114 17 21 82 169 170 168 166 65 13 10 94 167 168 119 + 153 60 20 17 108 172 173 170 167 66 13 13 76 164 168 113 + 142 36 18 15 118 173 172 172 166 61 14 16 82 164 164 103 + 138 26 22 15 113 174 174 171 165 56 13 16 86 165 162 106 + 143 33 21 19 103 175 173 171 163 57 16 16 90 165 167 124 + 153 50 19 18 83 174 173 171 164 50 15 15 97 166 165 119 + 157 97 15 21 57 174 172 170 165 48 16 16 95 167 166 115 + 159 158 21 17 23 145 176 172 167 47 17 15 102 169 169 109 + 156 179 124 23 17 59 163 173 171 58 17 17 106 167 167 102 + 157 177 174 138 53 29 54 107 139 63 16 19 68 161 166 101 + 162 176 172 173 166 144 126 107 119 103 105 108 101 107 150 109 + 134 151 147 147 140 153 146 147 137 149 143 139 146 147 147 113 + + 95 104 114 105 101 92 82 91 107 102 98 91 89 84 96 96 + 121 125 148 147 144 143 144 144 144 143 147 147 147 146 130 131 + 122 114 150 150 144 144 145 148 145 144 147 147 147 144 86 130 + 116 30 85 96 92 75 81 86 90 91 94 101 101 66 81 134 + 129 18 18 17 15 22 22 21 21 21 23 21 19 19 83 123 + 129 18 15 17 18 22 23 20 22 23 24 22 23 24 84 130 + 119 19 56 56 50 51 51 41 42 42 37 37 45 47 84 136 + 122 55 146 144 146 148 146 146 139 142 142 145 149 114 85 130 + 124 57 147 145 145 149 146 148 146 148 148 148 149 89 79 133 + 136 32 140 150 150 150 147 148 148 149 148 150 143 38 104 125 + 141 38 46 134 151 149 149 148 148 149 150 133 56 21 124 134 + 155 93 17 24 75 93 105 94 86 77 50 25 21 38 145 118 + 143 141 51 19 24 22 22 19 24 25 23 25 19 113 148 125 + 140 150 137 50 19 20 20 22 23 21 20 18 102 148 145 125 + 138 149 153 149 95 50 28 21 25 36 74 131 148 146 147 129 + 136 136 141 139 138 142 137 133 136 136 137 140 131 134 138 119 + 80 92 102 95 92 87 77 80 98 95 87 81 78 74 82 85 + 114 120 135 132 135 135 132 131 133 134 133 134 135 136 122 120 + 113 106 137 133 134 134 133 134 133 134 134 133 135 132 79 116 + 103 28 75 79 73 55 60 63 69 76 76 81 84 56 77 117 + 112 8 8 7 6 8 10 8 8 7 10 8 7 9 78 119 + 114 8 7 7 6 8 10 9 8 10 11 10 10 8 80 121 + 109 8 47 47 43 42 39 34 34 30 28 28 38 42 77 123 + 108 45 136 136 136 138 138 136 136 135 134 136 139 106 82 116 + 113 47 135 134 134 136 138 136 138 137 137 137 141 80 81 125 + 124 24 131 138 137 139 138 137 139 139 139 139 133 32 99 115 + 129 29 44 125 139 139 141 140 138 140 142 121 43 10 114 125 + 137 79 9 16 58 84 93 84 77 61 39 12 11 31 138 118 + 130 131 39 10 12 9 7 7 9 11 11 10 12 111 140 118 + 132 138 120 39 8 10 10 11 11 11 9 10 96 140 140 115 + 132 139 140 132 89 37 17 10 16 28 66 123 141 140 140 122 + 124 129 127 128 125 128 125 118 121 128 128 127 126 127 132 118 + 104 120 131 122 119 113 103 106 124 119 115 109 102 101 109 113 + 138 148 166 166 168 168 164 162 167 165 166 169 167 166 150 147 + 137 132 166 165 167 164 164 165 165 166 167 169 167 161 107 147 + 127 53 101 107 94 76 82 86 90 97 95 102 106 68 101 146 + 127 21 16 13 10 13 16 16 16 15 16 15 17 19 108 139 + 125 20 11 11 13 13 14 13 16 15 16 17 17 16 105 143 + 135 23 66 66 65 66 61 56 57 50 48 47 58 63 103 149 + 134 75 163 166 166 167 166 165 163 164 165 167 171 139 119 137 + 131 76 165 167 168 170 172 171 171 171 170 172 173 107 107 147 + 140 53 156 171 170 173 172 174 173 173 172 176 163 54 126 146 + 151 54 64 156 169 172 173 174 175 174 174 145 59 29 144 153 + 163 107 18 34 82 108 118 113 103 83 57 23 17 53 166 140 + 159 158 62 19 21 17 15 15 19 18 21 17 23 138 173 147 + 159 172 151 63 17 20 18 22 21 19 15 21 124 174 172 147 + 157 172 173 163 114 60 36 26 33 50 97 158 179 177 176 151 + 155 155 154 158 153 153 142 138 143 153 157 159 156 157 162 134 + diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.f b/demo/ar/data/multimarkers/multi-abcdef/patt.f new file mode 100644 index 0000000..9dd7777 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.f @@ -0,0 +1,196 @@ + 123 136 143 142 151 150 142 144 148 149 149 148 150 147 149 129 + 126 151 128 110 120 122 113 120 112 119 113 110 114 133 157 140 + 123 155 139 94 28 27 26 86 101 95 81 39 22 110 157 133 + 125 153 151 147 23 26 22 137 159 158 158 154 52 99 155 128 + 124 151 153 139 28 25 18 134 154 157 148 157 118 93 154 137 + 124 148 152 145 28 25 15 127 153 158 88 156 150 131 155 123 + 122 149 153 136 26 26 21 136 153 143 61 151 155 153 154 135 + 132 152 152 135 21 24 23 131 128 63 41 149 156 153 156 129 + 128 149 151 139 26 24 22 69 38 23 44 155 153 155 152 125 + 124 151 151 137 30 27 18 137 151 96 46 154 154 157 154 127 + 125 148 151 139 24 26 17 135 152 151 46 150 153 156 158 123 + 125 150 151 133 26 23 17 125 151 155 111 154 155 152 152 126 + 123 149 150 139 30 23 21 126 149 149 153 151 150 151 152 128 + 116 147 150 143 29 23 18 124 145 148 146 147 146 148 152 126 + 119 144 126 81 26 23 23 73 115 138 145 148 146 148 149 122 + 112 130 109 105 106 102 102 108 103 125 127 120 124 126 123 105 + 111 128 130 130 133 136 129 132 139 137 140 140 144 141 140 116 + 118 143 123 107 110 110 108 111 103 107 107 112 105 132 154 135 + 123 146 134 80 11 13 13 72 82 82 70 31 12 100 148 127 + 122 144 145 135 11 14 10 133 148 148 152 146 46 96 150 121 + 120 143 144 128 13 15 11 128 144 146 142 149 114 96 147 128 + 122 142 144 128 12 14 9 125 142 148 83 147 145 124 147 122 + 121 142 143 125 11 12 13 125 141 134 58 145 144 144 146 131 + 123 140 143 127 10 13 10 117 114 55 36 145 146 147 146 121 + 120 139 141 126 11 13 10 52 33 11 37 147 143 146 144 118 + 118 141 141 125 15 14 9 130 140 83 44 146 145 145 146 121 + 125 140 142 129 13 14 8 126 140 144 45 144 143 143 145 126 + 118 139 140 118 10 12 7 118 138 143 93 144 141 139 142 114 + 127 138 142 124 9 11 10 123 136 139 142 139 140 141 144 118 + 113 137 140 129 9 10 7 119 135 135 137 138 137 139 140 122 + 110 134 118 70 11 9 8 63 110 132 135 135 135 138 137 117 + 103 113 94 89 88 93 92 90 94 118 115 110 113 117 114 100 + 131 145 149 147 150 154 152 152 160 155 160 159 165 163 163 145 + 134 175 149 137 143 138 138 144 136 143 142 142 140 166 187 170 + 136 176 158 94 28 28 26 101 103 108 92 37 27 119 185 171 + 145 176 177 166 33 21 15 150 178 181 185 167 64 105 183 164 + 147 175 176 165 33 22 18 149 178 180 170 180 152 117 178 161 + 138 175 174 167 34 17 20 146 176 180 114 178 175 138 179 158 + 140 172 173 161 30 17 19 142 172 170 90 174 178 177 180 168 + 144 174 173 162 30 19 19 140 145 89 52 171 177 179 182 164 + 132 170 171 162 28 19 17 79 55 20 45 173 174 176 178 151 + 139 172 172 157 34 18 16 146 162 104 49 175 175 176 178 157 + 144 172 174 162 31 16 18 148 170 175 62 170 176 176 176 159 + 140 176 172 160 29 18 14 139 172 171 105 172 177 176 174 150 + 145 169 173 157 27 18 18 145 167 169 168 169 171 173 174 156 + 132 168 171 161 22 18 13 143 168 166 166 167 168 169 170 153 + 128 163 148 102 23 17 18 90 140 163 162 164 165 170 172 151 + 133 142 123 116 104 101 105 109 116 143 144 139 141 147 144 134 + + 129 140 133 128 137 123 135 129 125 127 123 126 128 126 122 105 + 149 157 157 155 154 155 154 156 152 154 158 152 152 152 149 123 + 147 133 110 99 93 131 153 153 155 157 156 152 151 148 148 126 + 150 114 22 52 118 150 155 156 153 154 153 155 150 146 146 124 + 148 110 39 154 157 156 151 149 155 154 150 154 151 147 148 120 + 149 113 81 158 148 88 61 41 44 46 46 111 153 146 145 127 + 149 119 95 158 157 158 143 63 23 96 151 155 149 148 138 125 + 148 112 101 159 154 153 153 128 38 151 152 151 149 145 115 103 + 144 120 86 137 134 127 136 131 69 137 135 125 126 124 73 108 + 142 113 26 22 18 15 21 23 22 18 17 17 21 18 23 102 + 150 122 27 26 25 25 26 24 24 27 26 23 23 23 23 102 + 151 120 28 23 28 28 26 21 26 30 24 26 30 29 26 106 + 142 110 94 147 139 145 136 135 139 137 139 133 139 143 81 105 + 143 128 139 151 153 152 153 152 151 151 151 151 150 150 126 109 + 136 151 155 153 151 148 149 152 149 151 148 150 149 147 144 130 + 123 126 123 125 124 124 122 132 128 124 125 125 123 116 119 112 + 116 135 127 121 128 122 131 121 118 121 126 114 118 122 117 100 + 140 154 148 150 147 147 146 146 144 146 145 142 144 140 137 114 + 141 132 100 96 96 124 144 147 146 145 143 139 141 139 138 117 + 144 105 12 46 114 145 144 146 143 145 143 141 140 137 135 113 + 140 112 31 146 149 147 145 145 147 146 144 144 139 138 135 110 + 140 107 70 152 142 83 58 36 37 44 45 93 142 137 135 115 + 137 107 82 148 146 148 134 55 11 83 144 143 139 135 132 118 + 139 103 82 148 144 142 141 114 33 140 140 138 136 135 110 94 + 132 111 72 133 128 125 125 117 52 130 126 118 123 119 63 90 + 129 108 13 10 11 9 13 10 10 9 8 7 10 7 8 92 + 136 110 13 14 15 14 12 13 13 14 14 12 11 10 9 93 + 133 110 11 11 13 12 11 10 11 15 13 10 9 9 11 88 + 130 107 80 135 128 128 125 127 126 125 129 118 124 129 70 89 + 130 123 134 145 144 144 143 143 141 141 142 140 142 140 118 94 + 128 143 146 144 143 142 142 140 139 141 140 139 138 137 134 113 + 111 118 123 122 120 122 121 123 120 118 125 118 127 113 110 103 + 145 170 171 164 161 158 168 164 151 157 159 150 156 153 151 134 + 163 187 185 183 178 179 180 182 178 178 176 174 174 170 172 144 + 163 166 119 105 117 138 177 179 176 176 176 176 173 169 170 147 + 165 140 27 64 152 175 178 177 174 175 176 177 171 168 165 141 + 159 142 37 167 180 178 174 171 173 175 170 172 169 167 164 139 + 160 142 92 185 170 114 90 52 45 49 62 105 168 166 162 144 + 155 143 108 181 180 180 170 89 20 104 175 171 169 166 163 143 + 160 136 103 178 178 176 172 145 55 162 170 172 167 168 140 116 + 152 144 101 150 149 146 142 140 79 146 148 139 145 143 90 109 + 152 138 26 15 18 20 19 19 17 16 18 14 18 13 18 105 + 154 138 28 21 22 17 17 19 19 18 16 18 18 18 17 101 + 150 143 28 33 33 34 30 30 28 34 31 29 27 22 23 104 + 147 137 94 166 165 167 161 162 162 157 162 160 157 161 102 116 + 149 149 158 177 176 174 173 173 171 172 174 172 173 171 148 123 + 145 175 176 176 175 175 172 174 170 172 172 176 169 168 163 142 + 131 134 136 145 147 138 140 144 132 139 144 140 145 132 128 133 + + 105 123 126 124 120 127 125 103 108 102 102 106 105 109 130 112 + 122 149 148 146 148 145 138 115 73 23 23 26 81 126 144 119 + 126 152 148 146 147 146 148 145 124 18 23 29 143 150 147 116 + 128 152 151 150 151 153 149 149 126 21 23 30 139 150 149 123 + 126 152 152 155 154 111 155 151 125 17 23 26 133 151 150 125 + 123 158 156 153 150 46 151 152 135 17 26 24 139 151 148 125 + 127 154 157 154 154 46 96 151 137 18 27 30 137 151 151 124 + 125 152 155 153 155 44 23 38 69 22 24 26 139 151 149 128 + 129 156 153 156 149 41 63 128 131 23 24 21 135 152 152 132 + 135 154 153 155 151 61 143 153 136 21 26 26 136 153 149 122 + 123 155 131 150 156 88 158 153 127 15 25 28 145 152 148 124 + 137 154 93 118 157 148 157 154 134 18 25 28 139 153 151 124 + 128 155 99 52 154 158 158 159 137 22 26 23 147 151 153 125 + 133 157 110 22 39 81 95 101 86 26 27 28 94 139 155 123 + 140 157 133 114 110 113 119 112 120 113 122 120 110 128 151 126 + 129 149 147 150 148 149 149 148 144 142 150 151 142 143 136 123 + 100 114 117 113 110 115 118 94 90 92 93 88 89 94 113 103 + 117 137 138 135 135 135 132 110 63 8 9 11 70 118 134 110 + 122 140 139 137 138 137 135 135 119 7 10 9 129 140 137 113 + 118 144 141 140 139 142 139 136 123 10 11 9 124 142 138 127 + 114 142 139 141 144 93 143 138 118 7 12 10 118 140 139 118 + 126 145 143 143 144 45 144 140 126 8 14 13 129 142 140 125 + 121 146 145 145 146 44 83 140 130 9 14 15 125 141 141 118 + 118 144 146 143 147 37 11 33 52 10 13 11 126 141 139 120 + 121 146 147 146 145 36 55 114 117 10 13 10 127 143 140 123 + 131 146 144 144 145 58 134 141 125 13 12 11 125 143 142 121 + 122 147 124 145 147 83 148 142 125 9 14 12 128 144 142 122 + 128 147 96 114 149 142 146 144 128 11 15 13 128 144 143 120 + 121 150 96 46 146 152 148 148 133 10 14 11 135 145 144 122 + 127 148 100 12 31 70 82 82 72 13 13 11 80 134 146 123 + 135 154 132 105 112 107 107 103 111 108 110 110 107 123 143 118 + 116 140 141 144 140 140 137 139 132 129 136 133 130 130 128 111 + 134 144 147 141 139 144 143 116 109 105 101 104 116 123 142 133 + 151 172 170 165 164 162 163 140 90 18 17 23 102 148 163 128 + 153 170 169 168 167 166 166 168 143 13 18 22 161 171 168 132 + 156 174 173 171 169 168 169 167 145 18 18 27 157 173 169 145 + 150 174 176 177 172 105 171 172 139 14 18 29 160 172 176 140 + 159 176 176 176 170 62 175 170 148 18 16 31 162 174 172 144 + 157 178 176 175 175 49 104 162 146 16 18 34 157 172 172 139 + 151 178 176 174 173 45 20 55 79 17 19 28 162 171 170 132 + 164 182 179 177 171 52 89 145 140 19 19 30 162 173 174 144 + 168 180 177 178 174 90 170 172 142 19 17 30 161 173 172 140 + 158 179 138 175 178 114 180 176 146 20 17 34 167 174 175 138 + 161 178 117 152 180 170 180 178 149 18 22 33 165 176 175 147 + 164 183 105 64 167 185 181 178 150 15 21 33 166 177 176 145 + 171 185 119 27 37 92 108 103 101 26 28 28 94 158 176 136 + 170 187 166 140 142 142 143 136 144 138 138 143 137 149 175 134 + 145 163 163 165 159 160 155 160 152 152 154 150 147 149 145 131 + + 112 119 116 123 125 125 124 128 132 122 124 124 125 123 126 123 + 130 144 147 149 150 148 151 149 152 149 148 151 153 155 151 136 + 109 126 150 150 151 151 151 151 152 153 152 153 151 139 128 143 + 105 81 143 139 133 139 137 139 135 136 145 139 147 94 110 142 + 106 26 29 30 26 24 30 26 21 26 28 28 23 28 120 151 + 102 23 23 23 23 26 27 24 24 26 25 25 26 27 122 150 + 102 23 18 21 17 17 18 22 23 21 15 18 22 26 113 142 + 108 73 124 126 125 135 137 69 131 136 127 134 137 86 120 144 + 103 115 145 149 151 152 151 38 128 153 153 154 159 101 112 148 + 125 138 148 149 155 151 96 23 63 143 158 157 158 95 119 149 + 127 145 146 153 111 46 46 44 41 61 88 148 158 81 113 149 + 120 148 147 151 154 150 154 155 149 151 156 157 154 39 110 148 + 124 146 146 150 155 153 154 153 156 155 150 118 52 22 114 150 + 126 148 148 151 152 156 157 155 153 153 131 93 99 110 133 147 + 123 149 152 152 152 158 154 152 156 154 155 154 155 157 157 149 + 105 122 126 128 126 123 127 125 129 135 123 137 128 133 140 129 + 103 110 113 127 118 125 118 120 123 121 122 120 122 123 118 111 + 113 134 137 138 139 140 141 139 140 142 142 143 144 146 143 128 + 94 118 140 142 140 142 141 141 143 143 144 144 145 134 123 130 + 89 70 129 124 118 129 125 126 127 125 128 128 135 80 107 130 + 88 11 9 9 10 13 15 11 10 11 12 13 11 11 110 133 + 93 9 10 11 12 14 14 13 13 12 14 15 14 13 110 136 + 92 8 7 10 7 8 9 10 10 13 9 11 10 13 108 129 + 90 63 119 123 118 126 130 52 117 125 125 128 133 72 111 132 + 94 110 135 136 138 140 140 33 114 141 142 144 148 82 103 139 + 118 132 135 139 143 144 83 11 55 134 148 146 148 82 107 137 + 115 135 137 142 93 45 44 37 36 58 83 142 152 70 107 140 + 110 135 138 139 144 144 146 147 145 145 147 149 146 31 112 140 + 113 135 137 140 141 143 145 143 146 144 145 114 46 12 105 144 + 117 138 139 141 139 143 145 146 147 144 124 96 96 100 132 141 + 114 137 140 144 142 145 146 144 146 146 147 147 150 148 154 140 + 100 117 122 118 114 126 121 118 121 131 122 128 121 127 135 116 + 133 128 132 145 140 144 139 132 144 140 138 147 145 136 134 131 + 142 163 168 169 176 172 172 170 174 172 175 175 176 176 175 145 + 123 148 171 173 172 174 172 171 173 173 174 176 177 158 149 149 + 116 102 161 157 160 162 157 162 162 161 167 165 166 94 137 147 + 104 23 22 27 29 31 34 28 30 30 34 33 33 28 143 150 + 101 17 18 18 18 16 18 19 19 17 17 22 21 28 138 154 + 105 18 13 18 14 18 16 17 19 19 20 18 15 26 138 152 + 109 90 143 145 139 148 146 79 140 142 146 149 150 101 144 152 + 116 140 168 167 172 170 162 55 145 172 176 178 178 103 136 160 + 143 163 166 169 171 175 104 20 89 170 180 180 181 108 143 155 + 144 162 166 168 105 62 49 45 52 90 114 170 185 92 142 160 + 139 164 167 169 172 170 175 173 171 174 178 180 167 37 142 159 + 141 165 168 171 177 176 175 174 177 178 175 152 64 27 140 165 + 147 170 169 173 176 176 176 176 179 177 138 117 105 119 166 163 + 144 172 170 174 174 176 178 178 182 180 179 178 183 185 187 163 + 134 151 153 156 150 159 157 151 164 168 158 161 164 171 170 145 + diff --git a/demo/ar/data/multimarkers/multi-abcdef/patt.g b/demo/ar/data/multimarkers/multi-abcdef/patt.g new file mode 100644 index 0000000..51a7259 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-abcdef/patt.g @@ -0,0 +1,196 @@ + 145 150 162 167 159 167 161 157 159 169 165 155 156 157 152 145 + 153 164 164 167 173 147 119 88 90 83 114 139 164 138 145 141 + 145 160 163 154 98 48 54 126 138 158 117 57 73 45 134 148 + 144 157 141 52 36 65 157 170 169 171 175 155 79 36 150 155 + 145 162 63 49 40 122 171 170 169 167 171 173 164 49 156 153 + 148 125 38 45 61 164 166 165 166 168 172 170 169 111 147 136 + 138 71 43 41 86 164 165 166 164 165 165 165 167 161 165 143 + 160 54 41 37 93 166 163 165 165 166 164 166 165 165 171 152 + 148 48 38 38 90 162 163 166 166 166 167 165 164 167 171 161 + 158 37 41 43 79 162 162 162 164 113 110 102 119 112 115 123 + 155 46 45 42 69 164 163 161 163 163 112 32 39 32 107 149 + 160 94 39 41 44 155 161 160 162 165 143 37 47 44 140 155 + 158 162 45 34 34 149 162 159 161 165 149 39 49 45 164 149 + 151 168 154 58 25 74 159 159 161 166 161 52 43 33 158 136 + 149 163 169 149 60 24 65 128 144 133 117 39 37 50 160 139 + 142 167 152 161 167 133 99 68 66 78 100 133 133 168 170 145 + 127 137 149 149 145 149 152 151 146 152 150 146 155 148 141 134 + 136 153 155 156 156 137 110 84 89 92 113 139 157 138 145 131 + 131 150 153 144 84 34 47 116 130 144 113 71 65 34 132 137 + 130 149 131 43 21 51 148 162 161 162 165 151 74 31 140 143 + 130 147 52 27 23 109 158 158 160 159 161 164 152 41 146 141 + 131 113 24 27 45 157 154 156 158 159 161 163 165 100 140 129 + 129 62 22 23 68 154 154 155 156 157 159 160 162 155 157 137 + 147 38 23 25 79 155 153 154 155 158 156 156 161 158 163 147 + 132 24 23 18 78 153 153 153 156 156 159 158 159 161 163 144 + 135 19 24 20 67 151 150 152 156 118 101 98 109 108 109 109 + 144 32 25 25 51 150 152 153 154 155 108 22 23 19 95 133 + 144 79 19 22 25 147 150 151 153 153 140 26 29 26 128 144 + 139 141 25 19 16 131 149 151 149 155 142 27 29 25 148 139 + 138 154 126 33 15 65 146 148 150 154 148 28 26 20 139 128 + 134 151 155 134 46 12 57 115 139 122 108 21 27 42 140 133 + 129 150 138 147 154 122 77 60 65 61 71 105 122 157 160 136 + 152 169 183 184 176 180 177 176 178 183 180 174 182 182 175 170 + 173 190 190 194 191 167 140 128 130 126 152 171 192 176 180 172 + 166 188 190 177 121 65 72 147 169 176 149 109 103 63 153 178 + 163 187 170 80 35 67 178 197 197 200 202 183 110 50 165 181 + 161 184 87 39 38 130 192 196 196 198 201 204 187 76 176 178 + 161 150 36 36 67 184 193 195 196 196 201 201 204 150 175 161 + 161 94 34 34 89 191 193 193 195 196 199 200 202 194 193 171 + 179 68 32 31 96 193 191 193 195 194 196 194 200 199 203 183 + 170 56 33 29 96 189 193 192 195 194 195 192 194 196 199 181 + 172 39 35 35 96 189 191 190 195 153 143 138 144 141 137 145 + 171 58 35 32 76 186 189 189 195 188 138 51 42 40 118 166 + 173 108 36 31 42 176 187 189 192 196 174 57 44 44 156 179 + 166 179 53 32 36 165 186 187 191 191 178 54 38 45 181 177 + 164 191 166 61 30 86 178 183 188 192 184 62 38 40 171 164 + 156 188 193 166 78 38 84 152 170 156 144 50 46 79 180 169 + 144 182 173 181 186 140 101 86 91 98 104 130 141 178 191 168 + + 145 141 148 155 153 136 143 152 161 123 149 155 149 136 139 145 + 152 145 134 150 156 147 165 171 171 115 107 140 164 158 160 170 + 157 138 45 36 49 111 161 165 167 112 32 44 45 33 50 168 + 156 164 73 79 164 169 167 165 164 119 39 47 49 43 37 133 + 155 139 57 155 173 170 165 166 165 102 32 37 39 52 39 133 + 165 114 117 175 171 172 165 164 167 110 112 143 149 161 117 100 + 169 83 158 171 167 168 165 166 166 113 163 165 165 166 133 78 + 159 90 138 169 169 166 164 165 166 164 163 162 161 161 144 66 + 157 88 126 170 170 165 166 165 166 162 161 160 159 159 128 68 + 161 119 54 157 171 166 165 163 163 162 163 161 162 159 65 99 + 167 147 48 65 122 164 164 166 162 162 164 155 149 74 24 133 + 159 173 98 36 40 61 86 93 90 79 69 44 34 25 60 167 + 167 167 154 52 49 45 41 37 38 43 42 41 34 58 149 161 + 162 164 163 141 63 38 43 41 38 41 45 39 45 154 169 152 + 150 164 160 157 162 125 71 54 48 37 46 94 162 168 163 167 + 145 153 145 144 145 148 138 160 148 158 155 160 158 151 149 142 + 134 131 137 143 141 129 137 147 144 109 133 144 139 128 133 136 + 141 145 132 140 146 140 157 163 163 109 95 128 148 139 140 160 + 148 138 34 31 41 100 155 158 161 108 19 26 25 20 42 157 + 155 157 65 74 152 165 162 161 159 109 23 29 29 26 27 122 + 146 139 71 151 164 163 160 156 158 98 22 26 27 28 21 105 + 150 113 113 165 161 161 159 156 159 101 108 140 142 148 108 71 + 152 92 144 162 159 159 157 158 156 118 155 153 155 154 122 61 + 146 89 130 161 160 158 156 155 156 156 154 153 149 150 139 65 + 151 84 116 162 158 156 155 154 153 152 153 151 151 148 115 60 + 152 110 47 148 158 154 154 153 153 150 152 150 149 146 57 77 + 149 137 34 51 109 157 154 155 153 151 150 147 131 65 12 122 + 145 156 84 21 23 45 68 79 78 67 51 25 16 15 46 154 + 149 156 144 43 27 27 23 25 18 20 25 22 19 33 134 147 + 149 155 153 131 52 24 22 23 23 24 25 19 25 126 155 138 + 137 153 150 149 147 113 62 38 24 19 32 79 141 154 151 150 + 127 136 131 130 130 131 129 147 132 135 144 144 139 138 134 129 + 170 172 178 181 178 161 171 183 181 145 166 179 177 164 169 168 + 175 180 153 165 176 175 193 203 199 137 118 156 181 171 180 191 + 182 176 63 50 76 150 194 199 196 141 40 44 45 40 79 178 + 182 192 103 110 187 204 202 200 194 144 42 44 38 38 46 141 + 174 171 109 183 204 201 200 194 192 138 51 57 54 62 50 130 + 180 152 149 202 201 201 199 196 195 143 138 174 178 184 144 104 + 183 126 176 200 198 196 196 194 194 153 188 196 191 192 156 98 + 178 130 169 197 196 196 195 195 195 195 195 192 191 188 170 91 + 176 128 147 197 196 195 193 193 192 190 189 189 187 183 152 86 + 177 140 72 178 192 193 193 191 193 191 189 187 186 178 84 101 + 180 167 65 67 130 184 191 193 189 189 186 176 165 86 38 140 + 176 191 121 35 38 67 89 96 96 96 76 42 36 30 78 186 + 184 194 177 80 39 36 34 31 29 35 32 31 32 61 166 181 + 183 190 190 170 87 36 34 32 33 35 35 36 53 166 193 173 + 169 190 188 187 184 150 94 68 56 39 58 108 179 191 188 182 + 152 173 166 163 161 161 161 179 170 172 171 173 166 164 156 144 + + 145 170 168 133 133 100 78 66 68 99 133 167 161 152 167 142 + 139 160 50 37 39 117 133 144 128 65 24 60 149 169 163 149 + 136 158 33 43 52 161 166 161 159 159 74 25 58 154 168 151 + 149 164 45 49 39 149 165 161 159 162 149 34 34 45 162 158 + 155 140 44 47 37 143 165 162 160 161 155 44 41 39 94 160 + 149 107 32 39 32 112 163 163 161 163 164 69 42 45 46 155 + 123 115 112 119 102 110 113 164 162 162 162 79 43 41 37 158 + 161 171 167 164 165 167 166 166 166 163 162 90 38 38 48 148 + 152 171 165 165 166 164 166 165 165 163 166 93 37 41 54 160 + 143 165 161 167 165 165 165 164 166 165 164 86 41 43 71 138 + 136 147 111 169 170 172 168 166 165 166 164 61 45 38 125 148 + 153 156 49 164 173 171 167 169 170 171 122 40 49 63 162 145 + 155 150 36 79 155 175 171 169 170 157 65 36 52 141 157 144 + 148 134 45 73 57 117 158 138 126 54 48 98 154 163 160 145 + 141 145 138 164 139 114 83 90 88 119 147 173 167 164 164 153 + 145 152 157 156 155 165 169 159 157 161 167 159 167 162 150 145 + 136 160 157 122 105 71 61 65 60 77 122 154 147 138 150 129 + 133 140 42 27 21 108 122 139 115 57 12 46 134 155 151 134 + 128 139 20 26 28 148 154 150 148 146 65 15 33 126 154 138 + 139 148 25 29 27 142 155 149 151 149 131 16 19 25 141 139 + 144 128 26 29 26 140 153 153 151 150 147 25 22 19 79 144 + 133 95 19 23 22 108 155 154 153 152 150 51 25 25 32 144 + 109 109 108 109 98 101 118 156 152 150 151 67 20 24 19 135 + 144 163 161 159 158 159 156 156 153 153 153 78 18 23 24 132 + 147 163 158 161 156 156 158 155 154 153 155 79 25 23 38 147 + 137 157 155 162 160 159 157 156 155 154 154 68 23 22 62 129 + 129 140 100 165 163 161 159 158 156 154 157 45 27 24 113 131 + 141 146 41 152 164 161 159 160 158 158 109 23 27 52 147 130 + 143 140 31 74 151 165 162 161 162 148 51 21 43 131 149 130 + 137 132 34 65 71 113 144 130 116 47 34 84 144 153 150 131 + 131 145 138 157 139 113 92 89 84 110 137 156 156 155 153 136 + 134 141 148 155 146 150 152 146 151 152 149 145 149 149 137 127 + 168 191 178 141 130 104 98 91 86 101 140 186 181 173 182 144 + 169 180 79 46 50 144 156 170 152 84 38 78 166 193 188 156 + 164 171 40 38 62 184 192 188 183 178 86 30 61 166 191 164 + 177 181 45 38 54 178 191 191 187 186 165 36 32 53 179 166 + 179 156 44 44 57 174 196 192 189 187 176 42 31 36 108 173 + 166 118 40 42 51 138 188 195 189 189 186 76 32 35 58 171 + 145 137 141 144 138 143 153 195 190 191 189 96 35 35 39 172 + 181 199 196 194 192 195 194 195 192 193 189 96 29 33 56 170 + 183 203 199 200 194 196 194 195 193 191 193 96 31 32 68 179 + 171 193 194 202 200 199 196 195 193 193 191 89 34 34 94 161 + 161 175 150 204 201 201 196 196 195 193 184 67 36 36 150 161 + 178 176 76 187 204 201 198 196 196 192 130 38 39 87 184 161 + 181 165 50 110 183 202 200 197 197 178 67 35 80 170 187 163 + 178 153 63 103 109 149 176 169 147 72 65 121 177 190 188 166 + 172 180 176 192 171 152 126 130 128 140 167 191 194 190 190 173 + 170 175 182 182 174 180 183 178 176 177 180 176 184 183 169 152 + + 142 149 151 158 160 155 158 148 160 138 148 145 144 145 153 145 + 167 163 168 162 94 46 37 48 54 71 125 162 157 160 164 150 + 152 169 154 45 39 45 41 38 41 43 38 63 141 163 164 162 + 161 149 58 34 41 42 43 38 37 41 45 49 52 154 167 167 + 167 60 25 34 44 69 79 90 93 86 61 40 36 98 173 159 + 133 24 74 149 155 164 162 162 166 164 164 122 65 48 147 167 + 99 65 159 162 161 163 162 163 163 165 166 171 157 54 119 161 + 68 128 159 159 160 161 162 166 165 166 165 170 170 126 88 157 + 66 144 161 161 162 163 164 166 165 164 166 169 169 138 90 159 + 78 133 166 165 165 163 113 166 166 165 168 167 171 158 83 169 + 100 117 161 149 143 112 110 167 164 165 172 171 175 117 114 165 + 133 39 52 39 37 32 102 165 166 165 170 173 155 57 139 155 + 133 37 43 49 47 39 119 164 165 167 169 164 79 73 164 156 + 168 50 33 45 44 32 112 167 165 161 111 49 36 45 138 157 + 170 160 158 164 140 107 115 171 171 165 147 156 150 134 145 152 + 145 139 136 149 155 149 123 161 152 143 136 153 155 148 141 145 + 129 134 138 139 144 144 135 132 147 129 131 130 130 131 136 127 + 150 151 154 141 79 32 19 24 38 62 113 147 149 150 153 137 + 138 155 126 25 19 25 24 23 23 22 24 52 131 153 155 149 + 147 134 33 19 22 25 20 18 25 23 27 27 43 144 156 149 + 154 46 15 16 25 51 67 78 79 68 45 23 21 84 156 145 + 122 12 65 131 147 150 151 153 155 154 157 109 51 34 137 149 + 77 57 146 149 150 152 150 153 153 154 154 158 148 47 110 152 + 60 115 148 151 151 153 152 153 154 155 156 158 162 116 84 151 + 65 139 150 149 153 154 156 156 155 156 158 160 161 130 89 146 + 61 122 154 155 153 155 118 156 158 157 159 159 162 144 92 152 + 71 108 148 142 140 108 101 159 156 159 161 161 165 113 113 150 + 105 21 28 27 26 22 98 158 156 160 163 164 151 71 139 146 + 122 27 26 29 29 23 109 159 161 162 165 152 74 65 157 155 + 157 42 20 25 26 19 108 161 158 155 100 41 31 34 138 148 + 160 140 139 148 128 95 109 163 163 157 140 146 140 132 145 141 + 136 133 128 139 144 133 109 144 147 137 129 141 143 137 131 134 + 144 156 164 166 173 171 172 170 179 161 161 161 163 166 173 152 + 182 188 191 179 108 58 39 56 68 94 150 184 187 188 190 169 + 173 193 166 53 36 35 35 33 32 34 36 87 170 190 190 183 + 181 166 61 32 31 32 35 29 31 34 36 39 80 177 194 184 + 186 78 30 36 42 76 96 96 96 89 67 38 35 121 191 176 + 140 38 86 165 176 186 189 189 193 191 184 130 67 65 167 180 + 101 84 178 186 187 189 191 193 191 193 193 192 178 72 140 177 + 86 152 183 187 189 189 190 192 193 193 195 196 197 147 128 176 + 91 170 188 191 192 195 195 195 195 195 196 196 197 169 130 178 + 98 156 192 191 196 188 153 194 194 196 196 198 200 176 126 183 + 104 144 184 178 174 138 143 195 196 199 201 201 202 149 152 180 + 130 50 62 54 57 51 138 192 194 200 201 204 183 109 171 174 + 141 46 38 38 44 42 144 194 200 202 204 187 110 103 192 182 + 178 79 40 45 44 40 141 196 199 194 150 76 50 63 176 182 + 191 180 171 181 156 118 137 199 203 193 175 176 165 153 180 175 + 168 169 164 177 179 166 145 181 183 171 161 178 181 178 172 170 + diff --git a/demo/ar/data/multimarkers/multi-barcode-4x3.dat b/demo/ar/data/multimarkers/multi-barcode-4x3.dat new file mode 100644 index 0000000..adb94f0 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-barcode-4x3.dat @@ -0,0 +1,73 @@ +12 + +00 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +01 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +02 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +03 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 70 +0.0 0.0 1.0 0.0 + +04 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +05 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +06 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +07 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 0 +0.0 0.0 1.0 0.0 + +08 +40.0 +1.0 0.0 0.0 -105.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +09 +40.0 +1.0 0.0 0.0 -35.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +10 +40.0 +1.0 0.0 0.0 35.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 + +11 +40.0 +1.0 0.0 0.0 105.00 +0.0 1.0 0.0 -70 +0.0 0.0 1.0 0.0 diff --git a/demo/ar/data/multimarkers/multi-marker-hirokanji.dat b/demo/ar/data/multimarkers/multi-marker-hirokanji.dat new file mode 100644 index 0000000..9a9f653 --- /dev/null +++ b/demo/ar/data/multimarkers/multi-marker-hirokanji.dat @@ -0,0 +1,16 @@ +#the number of patterns to be recognized +2 + +#marker 1 +../data/patt.hiro +1.0 +1.0000 0.0000 0.0000 0.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 + +#marker 2 +../data/patt.kanji +1.0 +1.0000 0.0000 0.0000 2.0000 +0.0000 1.0000 0.0000 0.0000 +0.0000 0.0000 1.0000 0.0000 diff --git a/demo/ar/location-base/.DS_Store b/demo/ar/location-base/.DS_Store new file mode 100644 index 0000000..21dc07c Binary files /dev/null and b/demo/ar/location-base/.DS_Store differ diff --git a/demo/ar/location-base/assets/articuno/scene.bin b/demo/ar/location-base/assets/articuno/scene.bin new file mode 100644 index 0000000..8920adf Binary files /dev/null and b/demo/ar/location-base/assets/articuno/scene.bin differ diff --git a/demo/ar/location-base/assets/articuno/scene.gltf b/demo/ar/location-base/assets/articuno/scene.gltf new file mode 100644 index 0000000..84e0fb7 --- /dev/null +++ b/demo/ar/location-base/assets/articuno/scene.gltf @@ -0,0 +1,7193 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 61, + "max": [ + 14.302800178527832, + 62.525501251220703, + 20.764200210571289 + ], + "min": [ + -14.302800178527832, + 18.687400817871094, + -9.1736297607421875 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 0.98818618059158325, + 0.68552768230438232, + 0.7422834038734436 + ], + "min": [ + -0.98768073320388794, + -0.90716731548309326, + -0.97106444835662842 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 61, + "max": [ + 0.99862092733383179, + 0.30413773655891418, + 0.99755120277404785, + 1 + ], + "min": [ + -0.48364311456680298, + -0.39675614237785339, + -0.9986121654510498, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 61, + "max": [ + 0.25, + -0.035156000405550003 + ], + "min": [ + -0.036132000386714935, + -0.23144499957561493 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 150, + "max": [ + 60 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 1464, + "componentType": 5126, + "count": 24, + "max": [ + 14.302800178527832, + 54.418201446533203, + 20.111000061035156 + ], + "min": [ + -14.302800178527832, + 23.708200454711914, + -4.598480224609375 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 1752, + "componentType": 5126, + "count": 24, + "max": [ + 0.95142364501953125, + 0.27440321445465088, + 0.99787092208862305 + ], + "min": [ + -0.94005078077316284, + -0.56969559192657471, + 0.30682507157325745 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 976, + "componentType": 5126, + "count": 24, + "max": [ + 0.99971699714660645, + 0.069535739719867706, + 0.94335073232650757, + 1 + ], + "min": [ + 0.30707922577857971, + -0.031763534992933273, + -0.95166093111038208, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 488, + "componentType": 5126, + "count": 24, + "max": [ + 0.86630100011825562, + -0.10128899663686752 + ], + "min": [ + 0.12941299378871918, + -0.86004197597503662 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 600, + "componentType": 5125, + "count": 93, + "max": [ + 23 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 2040, + "componentType": 5126, + "count": 42, + "max": [ + 14.302800178527832, + 41.860698699951172, + 5.1630501747131348 + ], + "min": [ + -14.302800178527832, + 15.417200088500977, + -20.935199737548828 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 2544, + "componentType": 5126, + "count": 42, + "max": [ + 0.92518436908721924, + 0.58620452880859375, + 0.8708910346031189 + ], + "min": [ + -0.89942651987075806, + -0.94796723127365112, + -0.88135278224945068 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 1360, + "componentType": 5126, + "count": 42, + "max": [ + 0.99952316284179688, + 0.7662469744682312, + 0.96626633405685425, + 1 + ], + "min": [ + -0.98590332269668579, + -0.95030891895294189, + -0.76854997873306274, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 680, + "componentType": 5126, + "count": 42, + "max": [ + 0.95778000354766846, + -0.040938999503850937 + ], + "min": [ + -0.072264999151229858, + -0.97638601064682007 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 972, + "componentType": 5125, + "count": 96, + "max": [ + 41 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 3048, + "componentType": 5126, + "count": 25, + "max": [ + 10.510700225830078, + 66.454902648925781, + 16.026599884033203 + ], + "min": [ + -11.078399658203125, + 39.5281982421875, + -12.043100357055664 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 3348, + "componentType": 5126, + "count": 25, + "max": [ + 0.81216740608215332, + 0.99899047613143921, + 0.079700075089931488 + ], + "min": [ + -0.82300573587417603, + 0.35111653804779053, + -0.9100339412689209 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 2032, + "componentType": 5126, + "count": 25, + "max": [ + 0.99972587823867798, + 0.71928495168685913, + 0.41189873218536377, + -1 + ], + "min": [ + 0.56198179721832275, + -0.70296776294708252, + -0.40841841697692871, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1016, + "componentType": 5126, + "count": 25, + "max": [ + 1.219730019569397, + 0.109375 + ], + "min": [ + -0.21972699463367462, + -0.9882810115814209 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 1356, + "componentType": 5125, + "count": 84, + "max": [ + 24 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 3648, + "componentType": 5126, + "count": 76, + "max": [ + 83.466300964355469, + 61.859798431396484, + 10.873499870300293 + ], + "min": [ + -84.455596923828125, + 35.677600860595703, + -9.7298698425292969 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 4560, + "componentType": 5126, + "count": 76, + "max": [ + 0.65870869159698486, + 0.77093046903610229, + 0.92439121007919312 + ], + "min": [ + -0.66814273595809937, + -0.77838796377182007, + -0.6785881519317627 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 2432, + "componentType": 5126, + "count": 76, + "max": [ + 0.99570143222808838, + 0.56459110975265503, + -0.060382664203643799, + 1 + ], + "min": [ + -0.97772401571273804, + -0.038593128323554993, + -0.63362818956375122, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1216, + "componentType": 5126, + "count": 76, + "max": [ + 1.0089199542999268, + -0.0064829997718334198 + ], + "min": [ + 0.015625, + -1.0155700445175171 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 1692, + "componentType": 5125, + "count": 222, + "max": [ + 75 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 5472, + "componentType": 5126, + "count": 205, + "max": [ + 119.04799652099609, + 62.217201232910156, + 10.873499870300293 + ], + "min": [ + -120.27100372314453, + 21.905500411987305, + -24.711299896240234 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 7932, + "componentType": 5126, + "count": 205, + "max": [ + 0.89285051822662354, + 0.94835877418518066, + 0.69135040044784546 + ], + "min": [ + -0.93879842758178711, + -0.97784686088562012, + -0.95134657621383667 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 3648, + "componentType": 5126, + "count": 205, + "max": [ + 0.9800567626953125, + 0.75311911106109619, + 0.99050730466842651, + 1 + ], + "min": [ + -0.99124723672866821, + -0.74883294105529785, + -0.81858396530151367, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1824, + "componentType": 5126, + "count": 205, + "max": [ + 0.98745900392532349, + -0.082575999200344086 + ], + "min": [ + 0.011574000120162964, + -1.0101000070571899 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 2580, + "componentType": 5125, + "count": 444, + "max": [ + 204 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 10392, + "componentType": 5126, + "count": 48, + "max": [ + 13.600899696350098, + 29.439399719238281, + -14.312199592590332 + ], + "min": [ + -13.932000160217285, + -13.354999542236328, + -161.66200256347656 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 10968, + "componentType": 5126, + "count": 48, + "max": [ + 0.99517762660980225, + 0.92403078079223633, + 0.80673778057098389 + ], + "min": [ + -0.99624568223953247, + -0.87215930223464966, + -0.83554595708847046 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 6928, + "componentType": 5126, + "count": 48, + "max": [ + 0.9995536208152771, + 0.99983823299407959, + 0.99570387601852417, + 1 + ], + "min": [ + -0.16215024888515472, + -0.99636381864547729, + -0.99467170238494873, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 3464, + "componentType": 5126, + "count": 48, + "max": [ + 0.99312597513198853, + -0.03125 + ], + "min": [ + 0.0019529999699443579, + -0.99197399616241455 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 4356, + "componentType": 5125, + "count": 168, + "max": [ + 47 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 11544, + "componentType": 5126, + "count": 208, + "max": [ + 16.230199813842773, + 17.268699645996094, + 8.8436403274536133 + ], + "min": [ + -13.89840030670166, + -0.26944699883460999, + -5.3360099792480469 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 14040, + "componentType": 5126, + "count": 208, + "max": [ + 0.9954187273979187, + 0.99849945306777954, + 0.98791450262069702 + ], + "min": [ + -0.99909764528274536, + -0.97442227602005005, + -0.98475199937820435 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 7696, + "componentType": 5126, + "count": 208, + "max": [ + 0.99974793195724487, + 0.95651400089263916, + 0.99982494115829468, + 1 + ], + "min": [ + -0.99987679719924927, + -0.9261975884437561, + -0.99926519393920898, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 3848, + "componentType": 5126, + "count": 208, + "max": [ + 0.7227330207824707, + -0.00976600032299757 + ], + "min": [ + 0.075092002749443054, + -0.99504399299621582 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 5028, + "componentType": 5125, + "count": 444, + "max": [ + 207 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 16536, + "componentType": 5126, + "count": 56, + "max": [ + 17.086700439453125, + 3.4040000438690186, + 12.037400245666504 + ], + "min": [ + -14.616499900817871, + -0.29703399538993835, + -7.1812701225280762 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 17208, + "componentType": 5126, + "count": 56, + "max": [ + 0.94255602359771729, + 0.93474805355072021, + 0.98665553331375122 + ], + "min": [ + -0.92963248491287231, + -0.91505014896392822, + -0.94594067335128784 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11024, + "componentType": 5126, + "count": 56, + "max": [ + 0.95517003536224365, + 0.89627093076705933, + 0.94724118709564209, + 1 + ], + "min": [ + -0.96374917030334473, + -0.66711539030075073, + -0.99312132596969604, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5512, + "componentType": 5126, + "count": 56, + "max": [ + 0.98497599363327026, + -0.043650999665260315 + ], + "min": [ + 0.034347999840974808, + -0.96719402074813843 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 6804, + "componentType": 5125, + "count": 72, + "max": [ + 55 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 17880, + "componentType": 5126, + "count": 46, + "max": [ + 10.443599700927734, + 50.361400604248047, + 22.38129997253418 + ], + "min": [ + -9.7062397003173828, + 23.771900177001953, + 10.906999588012695 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 18432, + "componentType": 5126, + "count": 46, + "max": [ + 0.99148529767990112, + 0.86223322153091431, + 0.98556339740753174 + ], + "min": [ + -0.99860465526580811, + -0.94229668378829956, + -0.96991622447967529 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11920, + "componentType": 5126, + "count": 46, + "max": [ + 0.99998879432678223, + 0.53751951456069946, + 0.99978011846542358, + 1 + ], + "min": [ + -0.090642355382442474, + -0.51535916328430176, + -0.99931555986404419, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5960, + "componentType": 5126, + "count": 46, + "max": [ + 1.0220500230789185, + -0.0078119998797774315 + ], + "min": [ + 0, + -0.98481297492980957 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7092, + "componentType": 5125, + "count": 171, + "max": [ + 45 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 18984, + "componentType": 5126, + "count": 16, + "max": [ + 6.6895899772644043, + 65.313400268554688, + 21.084499359130859 + ], + "min": [ + -7.3467001914978027, + 56.753299713134766, + 13.001099586486816 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19176, + "componentType": 5126, + "count": 16, + "max": [ + 0.93499952554702759, + 0.38227066397666931, + 0.89772975444793701 + ], + "min": [ + -0.95697623491287231, + -0.048514381051063538, + 0.25880265235900879 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 12656, + "componentType": 5126, + "count": 16, + "max": [ + 0.90836966037750244, + 0.029389245435595512, + -0.41785332560539246, + 1 + ], + "min": [ + -0.8974422812461853, + -0.02254461869597435, + -0.96455240249633789, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6328, + "componentType": 5126, + "count": 16, + "max": [ + 0.95549499988555908, + 0.060387998819351196 + ], + "min": [ + 0.19706800580024719, + -0.81887698173522949 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7776, + "componentType": 5125, + "count": 36, + "max": [ + 15 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19368, + "componentType": 5126, + "count": 13, + "max": [ + 2.2914800643920898, + 60.825298309326172, + 25.42650032043457 + ], + "min": [ + -3.2870500087738037, + 54.057098388671875, + 20.111000061035156 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19524, + "componentType": 5126, + "count": 13, + "max": [ + 0.81312018632888794, + 0.66290289163589478, + 0.99976295232772827 + ], + "min": [ + -0.83556008338928223, + -0.9323762059211731, + -0.36154359579086304 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 12912, + "componentType": 5126, + "count": 13, + "max": [ + 0.99986547231674194, + 0.95806711912155151, + 0.20935823023319244, + 1 + ], + "min": [ + -0.99974167346954346, + -0.96054691076278687, + -0.20537866652011871, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6456, + "componentType": 5126, + "count": 13, + "max": [ + 0.99712800979614258, + -0.0086409999057650566 + ], + "min": [ + 0.012694999575614929, + -1.0104399919509888 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7920, + "componentType": 5125, + "count": 30, + "max": [ + 12 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19680, + "componentType": 5126, + "count": 8, + "max": [ + 2.2914800643920898, + 56.783500671386719, + 25.42650032043457 + ], + "min": [ + -3.2870500087738037, + 54.057098388671875, + 20.639699935913086 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19776, + "componentType": 5126, + "count": 8, + "max": [ + 0.0072828452102839947, + 0.40976607799530029, + 0.91207218170166016 + ], + "min": [ + -0.01470462791621685, + -0.76323705911636353, + -0.7005506157875061 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 13120, + "componentType": 5126, + "count": 8, + "max": [ + 0.79418134689331055, + 0.69458264112472534, + -0.23833434283733368, + 1 + ], + "min": [ + 0.13800083100795746, + 0.55899262428283691, + -0.70605289936065674, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6560, + "componentType": 5126, + "count": 8, + "max": [ + 0.49902299046516418, + 0 + ], + "min": [ + 0.035156000405550003, + -0.46875 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 8040, + "componentType": 5125, + "count": 12, + "max": [ + 7 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19872, + "componentType": 5126, + "count": 31, + "max": [ + 12.323399543762207, + 78.035697937011719, + 21.084499359130859 + ], + "min": [ + -12.95989990234375, + 60.825298309326172, + 6.0402698516845703 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 20244, + "componentType": 5126, + "count": 31, + "max": [ + 0.91775661706924438, + 0.91725820302963257, + 0.99410909414291382 + ], + "min": [ + -0.92493355274200439, + -0.69188672304153442, + -0.94189989566802979 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 13248, + "componentType": 5126, + "count": 31, + "max": [ + 0.99979597330093384, + 0.65767002105712891, + 0.99766832590103149, + 1 + ], + "min": [ + -0.21873074769973755, + -0.64858651161193848, + -0.99263429641723633, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6624, + "componentType": 5126, + "count": 31, + "max": [ + 1.0016200542449951, + 0.0014329999685287476 + ], + "min": [ + 0.029295999556779861, + -0.99904400110244751 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 8088, + "componentType": 5125, + "count": 66, + "max": [ + 30 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 48, + "max": [ + 1, + 0.27870398759841919, + 0.99973601102828979, + 0, + 0.75459480285644531, + 1, + 0.62894612550735474, + 0, + 0.99961298704147339, + 0.75459498167037964, + 1, + 0, + 50.267101287841797, + 59.130001068115234, + 28.934806823730469, + 1 + ], + "min": [ + -0.99964100122451782, + -0.30577400326728821, + -0.026599016040563583, + 0, + -0.99898397922515869, + -0.99984502792358398, + -0.62884116172790527, + 0, + -0.96119910478591919, + -0.99930095672607422, + -0.77699404954910278, + 0, + -134.23701477050781, + -49.097095489501953, + -28.938409805297852, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 61, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 13744, + "componentType": 5126, + "count": 61, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 488, + "componentType": 5123, + "count": 24, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 14720, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 680, + "componentType": 5123, + "count": 42, + "max": [ + 29, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 15104, + "componentType": 5126, + "count": 42, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1016, + "componentType": 5123, + "count": 25, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 15776, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1216, + "componentType": 5123, + "count": 76, + "max": [ + 9, + 3, + 3, + 3 + ], + "min": [ + 2, + 3, + 3, + 3 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 16176, + "componentType": 5126, + "count": 76, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1824, + "componentType": 5123, + "count": 205, + "max": [ + 9, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 17392, + "componentType": 5126, + "count": 205, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 3464, + "componentType": 5123, + "count": 48, + "max": [ + 17, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 20672, + "componentType": 5126, + "count": 48, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 3848, + "componentType": 5123, + "count": 208, + "max": [ + 37, + 20, + 20, + 20 + ], + "min": [ + 20, + 20, + 20, + 20 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 21440, + "componentType": 5126, + "count": 208, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 5512, + "componentType": 5123, + "count": 56, + "max": [ + 37, + 23, + 23, + 23 + ], + "min": [ + 23, + 23, + 23, + 23 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 24768, + "componentType": 5126, + "count": 56, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 5960, + "componentType": 5123, + "count": 46, + "max": [ + 42, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 25664, + "componentType": 5126, + "count": 46, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6328, + "componentType": 5123, + "count": 16, + "max": [ + 44, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26400, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6456, + "componentType": 5123, + "count": 13, + "max": [ + 45, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26656, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6560, + "componentType": 5123, + "count": 8, + "max": [ + 45, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26864, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6624, + "componentType": 5123, + "count": 31, + "max": [ + 44, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26992, + "componentType": 5126, + "count": 31, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 61, + "max": [ + 32.529472351074219, + 0.11135535687208176, + 0.061983104795217514 + ], + "min": [ + 32.163684844970703, + -0.11511866748332977, + -0.11501942574977875 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 61, + "max": [ + 0.054084863513708115, + 0.44333663582801819, + 0.24388386309146881, + 0.9941292405128479 + ], + "min": [ + -0.027626069262623787, + -0.22645242512226105, + -0.3158072829246521, + 0.86084151268005371 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 488, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 18.540006637573242, + 4.5323890844883863e-06, + 4.5698570829699747e-06 + ], + "min": [ + 18.540000915527344, + -2.2439662643591873e-06, + -4.1278663047705777e-06 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 976, + "componentType": 5126, + "count": 61, + "max": [ + 0.025238573551177979, + 0.41798338294029236, + 0.49993935227394104, + 0.9879148006439209 + ], + "min": [ + -0.01552871335297823, + -0.25717577338218689, + -0.016146751120686531, + 0.75809866189956665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 976, + "componentType": 5126, + "count": 14, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1464, + "componentType": 5126, + "count": 14, + "max": [ + 20.25, + -6.0300002098083496, + -9.7199993133544922 + ], + "min": [ + 20.25, + -6.0300006866455078, + -9.7200002670288086 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 1952, + "componentType": 5126, + "count": 61, + "max": [ + 0.62314623594284058, + 0.71148651838302612, + 0.56656336784362793, + 0.60815805196762085 + ], + "min": [ + -0.47076046466827393, + -0.50176322460174561, + -0.68389338254928589, + -0.49862644076347351 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1276, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1632, + "componentType": 5126, + "count": 61, + "max": [ + 32.326324462890625, + 0.061002317816019058, + 0.082867845892906189 + ], + "min": [ + 32.258800506591797, + -0.064604729413986206, + -0.043950393795967102 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1520, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2928, + "componentType": 5126, + "count": 61, + "max": [ + 0.043149784207344055, + 0.21761536598205566, + 0.35713374614715576, + 0.99420905113220215 + ], + "min": [ + -0.0095480494201183319, + -0.44073829054832458, + -0.31106871366500854, + 0.82353216409683228 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1764, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2364, + "componentType": 5126, + "count": 61, + "max": [ + 21.726171493530273, + 0.029550353065133095, + 0.001560486271046102 + ], + "min": [ + 14.879765510559082, + -1.6700232028961182, + -1.7616674900054932 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2008, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3904, + "componentType": 5126, + "count": 61, + "max": [ + 0.038201406598091125, + 0.28197330236434937, + 0.47177916765213013, + 0.98791193962097168 + ], + "min": [ + -0.050330370664596558, + -0.3714999258518219, + -0.039977651089429855, + 0.79804706573486328 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2252, + "componentType": 5126, + "count": 18, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3096, + "componentType": 5126, + "count": 18, + "max": [ + 20.25, + -6.0300002098083496, + 9.720001220703125 + ], + "min": [ + 20.25, + -6.0300016403198242, + 9.7200002670288086 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2324, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 4880, + "componentType": 5126, + "count": 61, + "max": [ + 0.58856254816055298, + 0.76024621725082397, + 0.57208901643753052, + 0.6088486909866333 + ], + "min": [ + -0.40076512098312378, + -0.47427859902381897, + -0.66860616207122803, + -0.49620476365089417 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2568, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3312, + "componentType": 5126, + "count": 61, + "max": [ + 20.43000602722168, + 1.2502861181928893e-06, + 3.4066380294461851e-07 + ], + "min": [ + 20.429998397827148, + -3.8164544093888253e-06, + 5.1698972214353489e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2812, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5856, + "componentType": 5126, + "count": 61, + "max": [ + 0.00091213133418932557, + 0.0061056297272443771, + 0.31262972950935364, + 0.99996489286422729 + ], + "min": [ + -0.0014676413265988231, + -0.0098241083323955536, + -0.1942976713180542, + 0.94982314109802246 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3056, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4044, + "componentType": 5126, + "count": 61, + "max": [ + 20.610006332397461, + 2.765932549664285e-06, + 3.186845560776419e-07 + ], + "min": [ + 20.60999870300293, + -9.3390087840816705e-07, + 3.9699884268884489e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3300, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6832, + "componentType": 5126, + "count": 61, + "max": [ + 0.00055960274767130613, + 0.0037458715960383415, + 0.20562320947647095, + 0.99999988079071045 + ], + "min": [ + -0.00096529902657493949, + -0.0064615244045853615, + -0.11920378357172012, + 0.97860944271087646 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3544, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4776, + "componentType": 5126, + "count": 61, + "max": [ + 20.160003662109375, + 1.2481599469538196e-06, + 3.1993843663258303e-07 + ], + "min": [ + 20.159997940063477, + -3.0116002562863287e-06, + 1.0646517267787203e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3788, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 7808, + "componentType": 5126, + "count": 61, + "max": [ + 0.00060387683333829045, + 0.0040422338061034679, + 0.14553801715373993, + 0.99999886751174927 + ], + "min": [ + -0.00068322883453220129, + -0.0045734010636806488, + -0.12863484025001526, + 0.9893418550491333 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5508, + "componentType": 5126, + "count": 61, + "max": [ + 20.160003662109375, + 8.866958864928165e-07, + 3.2028208352130605e-07 + ], + "min": [ + 20.159997940063477, + -2.3425193376169773e-06, + 1.3299529655341757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4276, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8784, + "componentType": 5126, + "count": 61, + "max": [ + 0.00032408101833425462, + 0.0021693352609872818, + 0.12207173556089401, + 0.99999755620956421 + ], + "min": [ + -0.00057306635426357388, + -0.0038359942846000195, + -0.069034121930599213, + 0.99251371622085571 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4520, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6240, + "componentType": 5126, + "count": 61, + "max": [ + 20.520002365112305, + 9.0053879375773249e-07, + 9.3676462142866512e-08 + ], + "min": [ + 20.519998550415039, + -1.6427262607976445e-06, + -7.256267053890042e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4764, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9760, + "componentType": 5126, + "count": 61, + "max": [ + 0.00052983075147494674, + 0.0035466051194816828, + 0.091209582984447479, + 0.99999016523361206 + ], + "min": [ + -0.00042818277142941952, + -0.0028661731630563736, + -0.11286241561174393, + 0.99360418319702148 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5008, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6972, + "componentType": 5126, + "count": 61, + "max": [ + 20.250001907348633, + 4.5954416236781981e-06, + 1.0572896513849628e-07 + ], + "min": [ + 20.249998092651367, + 3.1028303055791184e-06, + -7.1907280130290019e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5252, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 10736, + "componentType": 5126, + "count": 61, + "max": [ + -0.014564872719347477, + -0.0059764557518064976, + 0.11178922653198242, + 0.99984019994735718 + ], + "min": [ + -0.017013350501656532, + -0.0091591170057654381, + -0.092392966151237488, + 0.99354410171508789 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5496, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7704, + "componentType": 5126, + "count": 61, + "max": [ + -14.220000267028809, + -8.8199996948242188, + 4.2957308821200968e-09 + ], + "min": [ + -14.220000267028809, + -8.8199996948242188, + -3.8800336277233782e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5740, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11712, + "componentType": 5126, + "count": 61, + "max": [ + 0.0031057561282068491, + 0.00043666857527568936, + 0.98358070850372314, + -0.18043725192546844 + ], + "min": [ + -0.0033459735568612814, + -0.00047044272650964558, + 0.92609715461730957, + -0.37727212905883789 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5984, + "componentType": 5126, + "count": 60, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12688, + "componentType": 5126, + "count": 60, + "max": [ + 0.19226767122745514, + -0.61336934566497803, + 0.23137751221656799, + 0.73025727272033691 + ], + "min": [ + 0.19226767122745514, + -0.61336934566497803, + 0.23137751221656799, + 0.73025727272033691 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6224, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8436, + "componentType": 5126, + "count": 61, + "max": [ + 0.090016849339008331, + 0.99009215831756592, + 8.6178494029809372e-07 + ], + "min": [ + 0.089952379465103149, + 0.98999911546707153, + -3.1348394259111956e-05 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6468, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13648, + "componentType": 5126, + "count": 61, + "max": [ + 9.2473769086609536e-08, + 1.1356482865210182e-08, + 0.95881980657577515, + 0.28402248024940491 + ], + "min": [ + -1.6877195321285399e-06, + -1.4985884035922936e-06, + 0.95881760120391846, + 0.28401508927345276 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6712, + "componentType": 5126, + "count": 51, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9168, + "componentType": 5126, + "count": 51, + "max": [ + 3.7800345420837402, + 2.9696094989776611, + -2.8799891471862793 + ], + "min": [ + 3.7799911499023438, + 2.9695672988891602, + -2.8800017833709717 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6916, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14624, + "componentType": 5126, + "count": 61, + "max": [ + 0.11587017029523849, + 0.26830378174781799, + 0.30492562055587769, + 0.96363276243209839 + ], + "min": [ + -0.13547594845294952, + 0.2492685467004776, + -0.26079723238945007, + 0.90614962577819824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7160, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 15600, + "componentType": 5126, + "count": 61, + "max": [ + 0.64276283979415894, + -0.0066836299374699593, + 0.76601552963256836, + 0.0056082271039485931 + ], + "min": [ + 0.64276283979415894, + -0.0066836299374699593, + 0.76601552963256836, + 0.0056082271039485931 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7404, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9780, + "componentType": 5126, + "count": 58, + "max": [ + 6.75, + 2.9700000286102295, + 3.5527136788005009e-15 + ], + "min": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7636, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16576, + "componentType": 5126, + "count": 61, + "max": [ + 0.039777006953954697, + 0.0056508439593017101, + 0.21216940879821777, + 1 + ], + "min": [ + -0.031368039548397064, + -0.0071664582937955856, + -0.26905322074890137, + 0.9622768759727478 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7880, + "componentType": 5126, + "count": 48, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10476, + "componentType": 5126, + "count": 48, + "max": [ + 4.5000271797180176, + 2.9700303077697754, + 3.2400004863739014 + ], + "min": [ + 4.4999680519104004, + 2.9699993133544922, + 3.2399907112121582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8072, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 17552, + "componentType": 5126, + "count": 61, + "max": [ + 0.015274576842784882, + -0.20603464543819427, + 0.21600854396820068, + 0.976296067237854 + ], + "min": [ + -0.022716604173183441, + -0.2178003340959549, + -0.32125306129455566, + 0.92251044511795044 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8316, + "componentType": 5126, + "count": 57, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11052, + "componentType": 5126, + "count": 57, + "max": [ + 9.3599996566772461, + 7.1054273576010019e-15, + 7.1054273576010019e-15 + ], + "min": [ + 9.3599996566772461, + -7.1054273576010019e-15, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8544, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18528, + "componentType": 5126, + "count": 61, + "max": [ + 0.17416168749332428, + 0.030805230140686035, + -0.33594787120819092, + 0.93395859003067017 + ], + "min": [ + 0.11608531326055527, + 0.0032875398173928261, + -0.71109229326248169, + 0.68392294645309448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8788, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11736, + "componentType": 5126, + "count": 61, + "max": [ + 10.890000343322754, + 1.4210854715202004e-14, + 3.5527136788005009e-15 + ], + "min": [ + 10.890000343322754, + -1.4210854715202004e-14, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 19504, + "componentType": 5126, + "count": 61, + "max": [ + 2.764733903247635e-17, + 4.8683516428461431e-17, + -0.38160154223442078, + 0.92432695627212524 + ], + "min": [ + -3.6488518389045252e-17, + -5.4215965063012097e-17, + -0.73037058115005493, + 0.68305110931396484 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9276, + "componentType": 5126, + "count": 59, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12468, + "componentType": 5126, + "count": 59, + "max": [ + 9.9999999747524271e-07, + 7.1054273576010019e-15, + 1.7763568394002505e-15 + ], + "min": [ + 9.9999999747524271e-07, + -1.4210854715202004e-14, + -8.8817841970012523e-16 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9512, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20480, + "componentType": 5126, + "count": 61, + "max": [ + 0.011501980014145374, + 0.14699436724185944, + 0.31558594107627869, + 0.96806061267852783 + ], + "min": [ + -0.042574223130941391, + 0.1272723525762558, + 0.21177315711975098, + 0.93737179040908813 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9756, + "componentType": 5126, + "count": 47, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13176, + "componentType": 5126, + "count": 47, + "max": [ + 3.7800073623657227, + 2.9700427055358887, + 2.8800122737884521 + ], + "min": [ + 3.7799835205078125, + 2.9700002670288086, + 2.8799996376037598 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9944, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21456, + "componentType": 5126, + "count": 61, + "max": [ + 0.11249811202287674, + -0.24252432584762573, + 0.22559243440628052, + 0.96373814344406128 + ], + "min": [ + -0.11927369236946106, + -0.27468135952949524, + -0.23917905986309052, + 0.92370182275772095 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10188, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13740, + "componentType": 5126, + "count": 58, + "max": [ + 7.1100001335144043, + 1.2599999904632568, + 3.5527136788005009e-15 + ], + "min": [ + 7.1100001335144043, + 1.2599999904632568, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10420, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 22432, + "componentType": 5126, + "count": 61, + "max": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082294322550297 + ], + "min": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082294322550297 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10664, + "componentType": 5126, + "count": 57, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14436, + "componentType": 5126, + "count": 57, + "max": [ + 6.75, + 2.9700000286102295, + 3.5527136788005009e-15 + ], + "min": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10892, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23408, + "componentType": 5126, + "count": 61, + "max": [ + 0.047128181904554367, + 0.035165563225746155, + 0.24235287308692932, + 1 + ], + "min": [ + -0.033097296953201294, + -0.011452687904238701, + -0.17020003497600555, + 0.96890562772750854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11136, + "componentType": 5126, + "count": 44, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15120, + "componentType": 5126, + "count": 44, + "max": [ + 4.500007152557373, + 2.970017671585083, + -3.2399907112121582 + ], + "min": [ + 4.4999570846557617, + 2.9699985980987549, + -3.2400002479553223 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11312, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24384, + "componentType": 5126, + "count": 61, + "max": [ + 0.0084545686841011047, + 0.22580137848854065, + 0.28238865733146667, + 0.97637456655502319 + ], + "min": [ + -0.0073726247064769268, + 0.18382537364959717, + -0.32383725047111511, + 0.92804425954818726 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11556, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 25360, + "componentType": 5126, + "count": 58, + "max": [ + 0.23315724730491638, + -0.73554593324661255, + 0.19014768302440643, + 0.60700386762619019 + ], + "min": [ + 0.23315724730491638, + -0.73554593324661255, + 0.19014768302440643, + 0.60700386762619019 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11788, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15648, + "componentType": 5126, + "count": 58, + "max": [ + 0.090000003576278687, + 0.99000000953674316, + 3.5527136788005009e-15 + ], + "min": [ + 0.090000003576278687, + 0.99000000953674316, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12020, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26288, + "componentType": 5126, + "count": 61, + "max": [ + -0.02178458496928215, + -0.011583932675421238, + 0.95610255002975464, + 0.29200375080108643 + ], + "min": [ + -0.021788809448480606, + -0.011585000902414322, + 0.95609885454177856, + 0.29199126362800598 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12264, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16344, + "componentType": 5126, + "count": 61, + "max": [ + 9.3599996566772461, + 7.1054273576010019e-15, + 7.1054273576010019e-15 + ], + "min": [ + 9.3599996566772461, + -7.1054273576010019e-15, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12508, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 27264, + "componentType": 5126, + "count": 61, + "max": [ + -0.12243978679180145, + -0.12896257638931274, + -0.16760142147541046, + 0.9696839451789856 + ], + "min": [ + -0.1563064306974411, + -0.20211496949195862, + -0.71462744474411011, + 0.65834915637969971 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12752, + "componentType": 5126, + "count": 59, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17076, + "componentType": 5126, + "count": 59, + "max": [ + 10.890000343322754, + 1.4210854715202004e-14, + 7.1054273576010019e-15 + ], + "min": [ + 10.890000343322754, + -1.4210854715202004e-14, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12988, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28240, + "componentType": 5126, + "count": 61, + "max": [ + 4.4356743093710907e-17, + 4.5286285652706146e-17, + -0.2771066427230835, + 0.96083915233612061 + ], + "min": [ + -5.2573535091061507e-17, + -3.9255861054508757e-17, + -0.70733493566513062, + 0.70687854290008545 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13232, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 29216, + "componentType": 5126, + "count": 61, + "max": [ + 0.18932266533374786, + -0.10656850039958954, + 0.12947645783424377, + 0.98094284534454346 + ], + "min": [ + 0.11069732904434204, + -0.15984846651554108, + -0.010261204093694687, + 0.96990585327148438 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13476, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17784, + "componentType": 5126, + "count": 61, + "max": [ + 5.8500008583068848, + -3.045467167339666e-07, + 1.7720712008895134e-08 + ], + "min": [ + 5.8499994277954102, + -1.4831083490207675e-06, + -1.4041916962526102e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13720, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 30192, + "componentType": 5126, + "count": 61, + "max": [ + 0.0016590817831456661, + 0.006392164621502161, + 0.15436646342277527, + 0.99999004602432251 + ], + "min": [ + -0.0077552469447255135, + -0.0013674773508682847, + -0.23243032395839691, + 0.97256112098693848 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13964, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18516, + "componentType": 5126, + "count": 61, + "max": [ + 6.4800009727478027, + 2.3184878727988689e-07, + 6.0380607180832158e-09 + ], + "min": [ + 6.4799995422363281, + -5.7108331930066925e-07, + -1.3292333456149663e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14208, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31168, + "componentType": 5126, + "count": 61, + "max": [ + 0.0025896786246448755, + 0.005783784668892622, + 0.12320081144571304, + 0.99999016523361206 + ], + "min": [ + -0.0089073926210403442, + -0.0016815403942018747, + -0.30947771668434143, + 0.95084738731384277 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14452, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19248, + "componentType": 5126, + "count": 61, + "max": [ + 5.4000000953674316, + 8.356217051641579e-08, + 2.769531270985226e-09 + ], + "min": [ + 5.4000000953674316, + -2.0001949962988874e-07, + -3.4866776132957966e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14696, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 32144, + "componentType": 5126, + "count": 61, + "max": [ + 0.0014856602065265179, + 0.0023252177052199841, + 0.096965856850147247, + 0.99999839067459106 + ], + "min": [ + -0.0041953814215958118, + -0.00082340143853798509, + -0.10770485550165176, + 0.99417132139205933 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14940, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19980, + "componentType": 5126, + "count": 61, + "max": [ + 28.170000076293945, + 5.6700000762939453, + 1.8207657603852567e-14 + ], + "min": [ + 28.170000076293945, + 5.6700000762939453, + -7.9936057773011271e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15184, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33120, + "componentType": 5126, + "count": 61, + "max": [ + -9.9743529374232611e-16, + -2.4465360835314309e-15, + 0.94264143705368042, + 0.33380699157714844 + ], + "min": [ + -1.4419550080878307e-15, + -3.0363780642638036e-15, + 0.94264143705368042, + 0.33380699157714844 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15428, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20712, + "componentType": 5126, + "count": 61, + "max": [ + 6.660001277923584, + -3.5999884605407715, + 8.6983874325596844e-08 + ], + "min": [ + 6.6599998474121094, + -3.5999898910522461, + -1.3168573786970228e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15672, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 34096, + "componentType": 5126, + "count": 61, + "max": [ + 3.0941096156311687e-06, + 9.418586743858981e-11, + 0.51379328966140747, + 0.99357187747955322 + ], + "min": [ + -0.010306774638593197, + -0.015802923589944839, + 0.11320315301418304, + 0.85785377025604248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15916, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21444, + "componentType": 5126, + "count": 61, + "max": [ + 27, + -1.815060159060522e-06, + 3.9878367275036908e-10 + ], + "min": [ + 27, + -2.0275331280572573e-06, + -3.3826879075604666e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16160, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35072, + "componentType": 5126, + "count": 61, + "max": [ + -0.02282918244600296, + 0.0098998472094535828, + 0.52188771963119507, + 0.92199361324310303 + ], + "min": [ + -0.024024609476327896, + 0.0086471633985638618, + 0.38643482327461243, + 0.85261833667755127 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16404, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22176, + "componentType": 5126, + "count": 61, + "max": [ + 0, + 98.51947021484375, + -4.4099998474121094 + ], + "min": [ + 0, + 78.481842041015625, + -4.4099998474121094 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16648, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 36048, + "componentType": 5126, + "count": 61, + "max": [ + 0.67110466957092285, + 0.30446159839630127, + 0.67364424467086792, + 0.28200331330299377 + ], + "min": [ + 0.6433417797088623, + 0.22975838184356689, + 0.6433417797088623, + 0.20744413137435913 + ], + "type": "VEC4" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 2, + "target": { + "node": 57, + "path": "translation" + } + }, + { + "sampler": 3, + "target": { + "node": 57, + "path": "rotation" + } + }, + { + "sampler": 4, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 5, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 8, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 9, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 10, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 11, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 14, + "target": { + "node": 69, + "path": "translation" + } + }, + { + "sampler": 15, + "target": { + "node": 69, + "path": "rotation" + } + }, + { + "sampler": 16, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 17, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 67, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 67, + "path": "rotation" + } + }, + { + "sampler": 20, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 21, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 22, + "target": { + "node": 65, + "path": "translation" + } + }, + { + "sampler": 23, + "target": { + "node": 65, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 26, + "target": { + "node": 77, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 29, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 30, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 31, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 32, + "target": { + "node": 79, + "path": "translation" + } + }, + { + "sampler": 33, + "target": { + "node": 79, + "path": "rotation" + } + }, + { + "sampler": 34, + "target": { + "node": 81, + "path": "translation" + } + }, + { + "sampler": 35, + "target": { + "node": 81, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 38, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 39, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 40, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 41, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 44, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 45, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 46, + "target": { + "node": 87, + "path": "translation" + } + }, + { + "sampler": 47, + "target": { + "node": 87, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 89, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 89, + "path": "rotation" + } + }, + { + "sampler": 50, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 53, + "target": { + "node": 85, + "path": "translation" + } + }, + { + "sampler": 54, + "target": { + "node": 85, + "path": "rotation" + } + }, + { + "sampler": 55, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 56, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 83, + "path": "rotation" + } + }, + { + "sampler": 58, + "target": { + "node": 95, + "path": "translation" + } + }, + { + "sampler": 59, + "target": { + "node": 95, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 62, + "target": { + "node": 93, + "path": "translation" + } + }, + { + "sampler": 63, + "target": { + "node": 93, + "path": "rotation" + } + }, + { + "sampler": 64, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 65, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 68, + "target": { + "node": 97, + "path": "translation" + } + }, + { + "sampler": 69, + "target": { + "node": 97, + "path": "rotation" + } + }, + { + "sampler": 70, + "target": { + "node": 55, + "path": "translation" + } + }, + { + "sampler": 71, + "target": { + "node": 55, + "path": "rotation" + } + } + ], + "name": "Take 001", + "samplers": [ + { + "input": 99, + "interpolation": "LINEAR", + "output": 100 + }, + { + "input": 101, + "interpolation": "LINEAR", + "output": 102 + }, + { + "input": 103, + "interpolation": "LINEAR", + "output": 104 + }, + { + "input": 105, + "interpolation": "LINEAR", + "output": 106 + }, + { + "input": 107, + "interpolation": "LINEAR", + "output": 108 + }, + { + "input": 109, + "interpolation": "LINEAR", + "output": 110 + }, + { + "input": 111, + "interpolation": "LINEAR", + "output": 112 + }, + { + "input": 113, + "interpolation": "LINEAR", + "output": 114 + }, + { + "input": 115, + "interpolation": "LINEAR", + "output": 116 + }, + { + "input": 117, + "interpolation": "LINEAR", + "output": 118 + }, + { + "input": 119, + "interpolation": "LINEAR", + "output": 120 + }, + { + "input": 121, + "interpolation": "LINEAR", + "output": 122 + }, + { + "input": 123, + "interpolation": "LINEAR", + "output": 124 + }, + { + "input": 125, + "interpolation": "LINEAR", + "output": 126 + }, + { + "input": 127, + "interpolation": "LINEAR", + "output": 128 + }, + { + "input": 129, + "interpolation": "LINEAR", + "output": 130 + }, + { + "input": 131, + "interpolation": "LINEAR", + "output": 132 + }, + { + "input": 133, + "interpolation": "LINEAR", + "output": 134 + }, + { + "input": 135, + "interpolation": "LINEAR", + "output": 136 + }, + { + "input": 137, + "interpolation": "LINEAR", + "output": 138 + }, + { + "input": 139, + "interpolation": "LINEAR", + "output": 140 + }, + { + "input": 141, + "interpolation": "LINEAR", + "output": 142 + }, + { + "input": 143, + "interpolation": "LINEAR", + "output": 144 + }, + { + "input": 145, + "interpolation": "LINEAR", + "output": 146 + }, + { + "input": 147, + "interpolation": "LINEAR", + "output": 148 + }, + { + "input": 149, + "interpolation": "LINEAR", + "output": 150 + }, + { + "input": 151, + "interpolation": "LINEAR", + "output": 152 + }, + { + "input": 153, + "interpolation": "LINEAR", + "output": 154 + }, + { + "input": 155, + "interpolation": "LINEAR", + "output": 156 + }, + { + "input": 157, + "interpolation": "LINEAR", + "output": 158 + }, + { + "input": 159, + "interpolation": "LINEAR", + "output": 160 + }, + { + "input": 161, + "interpolation": "LINEAR", + "output": 162 + }, + { + "input": 163, + "interpolation": "LINEAR", + "output": 164 + }, + { + "input": 165, + "interpolation": "LINEAR", + "output": 166 + }, + { + "input": 167, + "interpolation": "LINEAR", + "output": 168 + }, + { + "input": 169, + "interpolation": "LINEAR", + "output": 170 + }, + { + "input": 171, + "interpolation": "LINEAR", + "output": 172 + }, + { + "input": 173, + "interpolation": "LINEAR", + "output": 174 + }, + { + "input": 175, + "interpolation": "LINEAR", + "output": 176 + }, + { + "input": 177, + "interpolation": "LINEAR", + "output": 178 + }, + { + "input": 179, + "interpolation": "LINEAR", + "output": 180 + }, + { + "input": 181, + "interpolation": "LINEAR", + "output": 182 + }, + { + "input": 183, + "interpolation": "LINEAR", + "output": 184 + }, + { + "input": 185, + "interpolation": "LINEAR", + "output": 186 + }, + { + "input": 187, + "interpolation": "LINEAR", + "output": 188 + }, + { + "input": 189, + "interpolation": "LINEAR", + "output": 190 + }, + { + "input": 191, + "interpolation": "LINEAR", + "output": 192 + }, + { + "input": 193, + "interpolation": "LINEAR", + "output": 194 + }, + { + "input": 195, + "interpolation": "LINEAR", + "output": 196 + }, + { + "input": 197, + "interpolation": "LINEAR", + "output": 198 + }, + { + "input": 199, + "interpolation": "LINEAR", + "output": 200 + }, + { + "input": 201, + "interpolation": "LINEAR", + "output": 202 + }, + { + "input": 203, + "interpolation": "LINEAR", + "output": 204 + }, + { + "input": 205, + "interpolation": "LINEAR", + "output": 206 + }, + { + "input": 207, + "interpolation": "LINEAR", + "output": 208 + }, + { + "input": 209, + "interpolation": "LINEAR", + "output": 210 + }, + { + "input": 211, + "interpolation": "LINEAR", + "output": 212 + }, + { + "input": 213, + "interpolation": "LINEAR", + "output": 214 + }, + { + "input": 215, + "interpolation": "LINEAR", + "output": 216 + }, + { + "input": 217, + "interpolation": "LINEAR", + "output": 218 + }, + { + "input": 219, + "interpolation": "LINEAR", + "output": 220 + }, + { + "input": 221, + "interpolation": "LINEAR", + "output": 222 + }, + { + "input": 223, + "interpolation": "LINEAR", + "output": 224 + }, + { + "input": 225, + "interpolation": "LINEAR", + "output": 226 + }, + { + "input": 227, + "interpolation": "LINEAR", + "output": 228 + }, + { + "input": 229, + "interpolation": "LINEAR", + "output": 230 + }, + { + "input": 231, + "interpolation": "LINEAR", + "output": 232 + }, + { + "input": 233, + "interpolation": "LINEAR", + "output": 234 + }, + { + "input": 235, + "interpolation": "LINEAR", + "output": 236 + }, + { + "input": 237, + "interpolation": "LINEAR", + "output": 238 + }, + { + "input": 239, + "interpolation": "LINEAR", + "output": 240 + }, + { + "input": 241, + "interpolation": "LINEAR", + "output": 242 + } + ] + } + ], + "asset": { + "extras": { + "author": "ShawnD (https://sketchfab.com/ShawnD)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/articuno-maya-rig-free-7331a386cd364a00a632028516f7a456", + "title": "Articuno Maya Rig (Free)" + }, + "generator": "Sketchfab-6.9.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 6872, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 8352, + "byteOffset": 6872, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 6872, + "byteOffset": 15224, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 20616, + "byteOffset": 22096, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 27488, + "byteOffset": 42712, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 3072, + "byteOffset": 70200, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 16892, + "byteOffset": 73272, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 22908, + "byteOffset": 90164, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 37024, + "byteOffset": 113072, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 150096, + "uri": "scene.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "images": [ + { + "uri": "textures/Texture1_baseColor.png" + }, + { + "uri": "textures/surfaceShader10_baseColor.png" + }, + { + "uri": "textures/surfaceShader6_baseColor.png" + }, + { + "uri": "textures/surfaceShader7_baseColor.png" + }, + { + "uri": "textures/surfaceShader8_baseColor.png" + }, + { + "uri": "textures/surfaceShader12_baseColor.png" + }, + { + "uri": "textures/surfaceShader9_baseColor.png" + }, + { + "uri": "textures/surfaceShader3_baseColor.png" + }, + { + "uri": "textures/surfaceShader4_baseColor.png" + }, + { + "uri": "textures/surfaceShader2_baseColor.png" + }, + { + "uri": "textures/surfaceShader14_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "Texture1", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader10", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 1, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader6", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 2, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader7", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 3, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader8", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 4, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader12", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 5, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader9", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 6, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader3", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 7, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader4", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 8, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader2", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 9, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader14", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 10, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + } + ], + "meshes": [ + { + "name": "Texture_0_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 71, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 3, + "WEIGHTS_0": 72 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_1_png_surfaceShader10_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 73, + "NORMAL": 6, + "POSITION": 5, + "TANGENT": 7, + "TEXCOORD_0": 8, + "WEIGHTS_0": 74 + }, + "indices": 9, + "material": 1, + "mode": 4 + } + ] + }, + { + "name": "Texture_2_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 75, + "NORMAL": 11, + "POSITION": 10, + "TANGENT": 12, + "TEXCOORD_0": 13, + "WEIGHTS_0": 76 + }, + "indices": 14, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_3_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 77, + "NORMAL": 16, + "POSITION": 15, + "TANGENT": 17, + "TEXCOORD_0": 18, + "WEIGHTS_0": 78 + }, + "indices": 19, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_4_png_surfaceShader6_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 79, + "NORMAL": 21, + "POSITION": 20, + "TANGENT": 22, + "TEXCOORD_0": 23, + "WEIGHTS_0": 80 + }, + "indices": 24, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "Texture_5_png_surfaceShader7_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 81, + "NORMAL": 26, + "POSITION": 25, + "TANGENT": 27, + "TEXCOORD_0": 28, + "WEIGHTS_0": 82 + }, + "indices": 29, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Texture_6_png_surfaceShader8_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 83, + "NORMAL": 31, + "POSITION": 30, + "TANGENT": 32, + "TEXCOORD_0": 33, + "WEIGHTS_0": 84 + }, + "indices": 34, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Texture_7_png_surfaceShader12_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 85, + "NORMAL": 36, + "POSITION": 35, + "TANGENT": 37, + "TEXCOORD_0": 38, + "WEIGHTS_0": 86 + }, + "indices": 39, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Texture_8_png_surfaceShader9_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 87, + "NORMAL": 41, + "POSITION": 40, + "TANGENT": 42, + "TEXCOORD_0": 43, + "WEIGHTS_0": 88 + }, + "indices": 44, + "material": 6, + "mode": 4 + } + ] + }, + { + "name": "Texture_9_png_surfaceShader3_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 89, + "NORMAL": 46, + "POSITION": 45, + "TANGENT": 47, + "TEXCOORD_0": 48, + "WEIGHTS_0": 90 + }, + "indices": 49, + "material": 7, + "mode": 4 + } + ] + }, + { + "name": "Texture_10_png_surfaceShader4_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 91, + "NORMAL": 51, + "POSITION": 50, + "TANGENT": 52, + "TEXCOORD_0": 53, + "WEIGHTS_0": 92 + }, + "indices": 54, + "material": 8, + "mode": 4 + } + ] + }, + { + "name": "Texture_11_png_surfaceShader2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 93, + "NORMAL": 56, + "POSITION": 55, + "TANGENT": 57, + "TEXCOORD_0": 58, + "WEIGHTS_0": 94 + }, + "indices": 59, + "material": 9, + "mode": 4 + } + ] + }, + { + "name": "Texture_12_png_surfaceShader14_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 95, + "NORMAL": 61, + "POSITION": 60, + "TANGENT": 62, + "TEXCOORD_0": 63, + "WEIGHTS_0": 96 + }, + "indices": 64, + "material": 10, + "mode": 4 + } + ] + }, + { + "name": "Texture_13_png_surfaceShader2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 97, + "NORMAL": 66, + "POSITION": 65, + "TANGENT": 67, + "TEXCOORD_0": 68, + "WEIGHTS_0": 98 + }, + "indices": 69, + "material": 9, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "b38095e4ddea46e7934bb9623debd839.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5, + 22 + ], + "name": "RootNode" + }, + { + "children": [ + 6 + ], + "name": "Articuno", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 7 + ], + "name": "Mesh" + }, + { + "children": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ], + "name": "Mesh" + }, + { + "name": "Texture_0_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_1_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_2_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_3_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_4_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_5_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_6_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_7_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_8_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_9_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_10_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_11_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_12_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_13_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 23 + ], + "name": "locator1", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ], + "scale": [ + 20.028614044189453, + 20.028614044189453, + 20.028614044189453 + ] + }, + { + "children": [ + 24 + ], + "name": "Joints", + "rotation": [ + -3.8573707532279204e-33, + -0, + 0, + 1 + ], + "scale": [ + 0.049928568303585052, + 0.049928568303585052, + 0.049928568303585052 + ] + }, + { + "children": [ + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52 + ], + "name": "" + }, + { + "children": [ + 54 + ], + "name": "_rootJoint" + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 1, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 2, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 3, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 4, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 5, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 6, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 7, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 8, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 9, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 10, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 11, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 12, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 13, + "name": "", + "skin": 0 + }, + { + "children": [ + 55 + ], + "name": "Bone_46_00", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 56, + 60, + 64, + 72, + 82, + 92, + 97, + 100 + ], + "name": "Bone_45_01", + "rotation": [ + 0.64415347576141357, + 0.30260246992111206, + 0.6442183256149292, + 0.28014427423477173 + ], + "scale": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 0, + 82.492820739746094, + -4.4099998474121094 + ] + }, + { + "children": [ + 57 + ], + "name": "Bone_44_02", + "rotation": [ + 0.22572459280490875, + 0.34488260746002197, + -0.68158584833145142, + 0.60460340976715088 + ], + "scale": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "translation": [ + 20.25, + -6.0300006866455078, + -9.7200002670288086 + ] + }, + { + "children": [ + 58 + ], + "name": "Bone_43_03", + "rotation": [ + 0.0045657642185688019, + 0.075614385306835175, + 0.2584720253944397, + 0.96304404735565186 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 18.540004730224609, + -2.1947278128209291e-06, + 4.5698566282226238e-06 + ] + }, + { + "children": [ + 59 + ], + "name": "Bone_42_04", + "rotation": [ + 0.012751496396958828, + 0.10452471673488617, + -0.053532581776380539, + 0.99299871921539307 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 32.273937225341797, + -0.044249974191188812, + 0.035637479275465012 + ] + }, + { + "name": "Bone_41_05", + "rotation": [ + 0.0022298847325146198, + 0.93956583738327026, + 0.34181192517280579, + 0.019383097067475319 + ], + "scale": [ + 1.0000003576278687, + 0.9999997615814209, + 1 + ], + "translation": [ + 58.5, + 0.17999300360679626, + 0.7200009822845459 + ] + }, + { + "children": [ + 61 + ], + "name": "Bone_40_06", + "rotation": [ + -0.24601542949676514, + -0.36061286926269531, + -0.66648352146148682, + 0.60434645414352417 + ], + "scale": [ + 1, + 0.99999958276748657, + 0.9999995231628418 + ], + "translation": [ + 20.25, + -6.0300002098083496, + 9.720001220703125 + ] + }, + { + "children": [ + 62 + ], + "name": "Bone_39_07", + "rotation": [ + -0.015863798558712006, + -0.11709410697221756, + 0.29070103168487549, + 0.94948947429656982 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 17.194869995117188, + -0.25501087307929993, + -0.20484077930450439 + ] + }, + { + "children": [ + 63 + ], + "name": "Bone_38_08", + "rotation": [ + -0.0045040282420814037, + -0.10167516022920609, + -0.052013307809829712, + 0.99344688653945923 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 32.325958251953125, + -0.014638100750744343, + 0.025499481707811356 + ] + }, + { + "name": "Bone_37_09", + "rotation": [ + -0.34200724959373474, + 0.0029845817480236292, + -0.0082000670954585075, + 0.93965679407119751 + ], + "scale": [ + 1.0000002384185791, + 1.0000004768371582, + 0.99999982118606567 + ], + "translation": [ + 58.5, + 0.18000100553035736, + -0.71999901533126831 + ] + }, + { + "children": [ + 65 + ], + "name": "Bone_36_010", + "rotation": [ + -0.0032640839926898479, + -0.00045892922207713127, + 0.9831053614616394, + -0.18301095068454742 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + -14.220000267028809, + -8.8199996948242188, + -3.7954466236556073e-09 + ] + }, + { + "children": [ + 66 + ], + "name": "Bone_35_011", + "rotation": [ + -0.015681527554988861, + -0.0073614711873233318, + -0.0059791542589664459, + 0.9998321533203125 + ], + "translation": [ + 20.249998092651367, + 3.1028303055791184e-06, + 1.0448142973018548e-07 + ] + }, + { + "children": [ + 67 + ], + "name": "Bone_34_012", + "rotation": [ + 0.00037833140231668949, + 0.002532503567636013, + -0.080590948462486267, + 0.99674397706985474 + ], + "translation": [ + 20.519998550415039, + -1.0919071655735024e-06, + 9.3037527904016315e-08 + ] + }, + { + "children": [ + 68 + ], + "name": "Bone_33_013", + "rotation": [ + 0.00025742891011759639, + 0.00172317901160568, + -0.054836224764585495, + 0.99849385023117065 + ], + "translation": [ + 20.159997940063477, + -1.8300855799679994e-06, + 3.0578695486838114e-07 + ] + }, + { + "children": [ + 69 + ], + "name": "Bone_32_014", + "rotation": [ + 0.00031684551504440606, + 0.0021209022961556911, + -0.067492857575416565, + 0.99771755933761597 + ], + "translation": [ + 20.159997940063477, + -2.350629074499011e-06, + 2.9215567565188394e-07 + ] + }, + { + "children": [ + 70 + ], + "name": "Bone_31_015", + "rotation": [ + 0.00012257035996299237, + 0.00082046206807717681, + -0.026109326630830765, + 0.99965876340866089 + ], + "translation": [ + 20.60999870300293, + -4.6506636408594204e-07, + 2.975765482915449e-07 + ] + }, + { + "children": [ + 71 + ], + "name": "Bone_30_016", + "rotation": [ + 5.249154128250666e-05, + 0.00035136815859004855, + -0.011181486770510674, + 0.99993741512298584 + ], + "translation": [ + 20.429998397827148, + -2.2000585886416957e-06, + 3.0291357688838616e-07 + ] + }, + { + "name": "Bone_29_017", + "rotation": [ + 0.086136482656002045, + -0.70798414945602417, + 0.086136490106582642, + 0.69564330577850342 + ], + "scale": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000002384185791 + ], + "translation": [ + 25.559999465942383, + 0, + 0 + ] + }, + { + "children": [ + 73 + ], + "name": "Bone_28_018", + "rotation": [ + 0.035230740904808044, + 0.072218015789985657, + 0.96954447031021118, + 0.23135881125926971 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000003576278687 + ], + "translation": [ + -3.4200000762939453, + 8.2799997329711914, + -7.0199999809265137 + ] + }, + { + "children": [ + 74 + ], + "name": "Bone_27_019", + "rotation": [ + 0.01053299754858017, + 0.14665468037128448, + 0.31511330604553223, + 0.93759536743164062 + ], + "translation": [ + 9.9999999747524271e-07, + 3.5527136788005009e-15, + 0 + ] + }, + { + "children": [ + 75 + ], + "name": "Bone_26_020", + "rotation": [ + -6.5821722647437352e-18, + 1.0341245754834829e-17, + -0.72611016035079956, + 0.68757838010787964 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 10.890000343322754, + -7.1054273576010019e-15, + 3.5527136788005009e-15 + ] + }, + { + "children": [ + 76, + 78, + 79, + 81 + ], + "name": "Bone_25_021", + "rotation": [ + 0.16711172461509705, + 0.024739326909184456, + -0.58617144823074341, + 0.79237914085388184 + ], + "scale": [ + 0.99999982118606567, + 0.99999982118606567, + 1 + ], + "translation": [ + 9.3599996566772461, + 0, + 3.5527136788005009e-15 + ] + }, + { + "children": [ + 77 + ], + "name": "Bone_24_022", + "rotation": [ + 7.8863855890176637e-08, + -6.1857114985741646e-09, + 0.95881974697113037, + 0.28401535749435425 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + 0.090000823140144348, + 0.98999959230422974, + 5.5895424111440661e-07 + ] + }, + { + "name": "Bone_23_023", + "rotation": [ + 0.19226768612861633, + -0.61336934566497803, + 0.2313774973154068, + 0.73025721311569214 + ], + "scale": [ + 1.0000003576278687, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + 6.929999828338623, + 0.89999997615814209, + 0.18000000715255737 + ] + }, + { + "name": "Bone_22_024", + "rotation": [ + -0.011375770904123783, + 0.26780596375465393, + 0.025604421272873878, + 0.963065505027771 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.99999970197677612 + ], + "translation": [ + 3.7799973487854004, + 2.9695675373077393, + -2.8799891471862793 + ] + }, + { + "children": [ + 80 + ], + "name": "Bone_21_025", + "rotation": [ + -0.0064297504723072052, + 0.0011581191793084145, + 0.043487466871738434, + 0.99903261661529541 + ], + "translation": [ + 6.75, + 2.9700000286102295, + -8.8817841970012523e-16 + ] + }, + { + "name": "Bone_20_026", + "rotation": [ + 0.64276283979415894, + -0.006683629471808672, + 0.76601552963256836, + 0.0056082266382873058 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000002384185791 + ], + "translation": [ + 5.940000057220459, + 1.1699999570846558, + 6.6599998474121094 + ] + }, + { + "name": "Bone_19_027", + "rotation": [ + 0.0038926075212657452, + -0.2147674560546875, + 0.055047404021024704, + 0.9751049280166626 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 4.5, + 2.9699995517730713, + 3.2400002479553223 + ] + }, + { + "children": [ + 83 + ], + "name": "Bone_18_028", + "rotation": [ + -0.035230740904808044, + -0.072218015789985657, + 0.96954447031021118, + 0.23135881125926971 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000003576278687 + ], + "translation": [ + -3.4200000762939453, + 8.2799997329711914, + 7.0199999809265137 + ] + }, + { + "children": [ + 84 + ], + "name": "Bone_17_029", + "rotation": [ + 0.18679575622081757, + -0.10916697233915329, + 0.091452822089195251, + 0.97202175855636597 + ] + }, + { + "children": [ + 85 + ], + "name": "Bone_16_030", + "rotation": [ + 4.0748147819113622e-17, + -9.2175068306111273e-18, + -0.30086925625801086, + 0.95366549491882324 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 10.890000343322754, + 7.1054273576010019e-15, + 0 + ] + }, + { + "children": [ + 86, + 87, + 89, + 90 + ], + "name": "Bone_15_031", + "rotation": [ + -0.1563064306974411, + -0.14413434267044067, + -0.54203248023986816, + 0.81301575899124146 + ], + "scale": [ + 1.0000003576278687, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 9.3599996566772461, + 2.2204460492503131e-15, + 3.5527136788005009e-15 + ] + }, + { + "name": "Bone_14_032", + "rotation": [ + -0.027924126014113426, + -0.27069512009620667, + -0.055996187031269073, + 0.96062940359115601 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.99999970197677612 + ], + "translation": [ + 3.780003547668457, + 2.9700055122375488, + 2.880000114440918 + ] + }, + { + "children": [ + 88 + ], + "name": "Bone_13_033", + "rotation": [ + -0.012649025768041611, + -0.0043769204057753086, + -0.065046742558479309, + 0.99779254198074341 + ], + "translation": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ] + }, + { + "name": "Bone_12_034", + "rotation": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082289665937424 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 7.1100001335144043, + 1.2599999904632568, + 0 + ] + }, + { + "name": "Bone_11_035", + "rotation": [ + 0.0024537669960409403, + 0.20941370725631714, + -0.093986280262470245, + 0.97329670190811157 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 4.5000033378601074, + 2.9700033664703369, + -3.2400000095367432 + ] + }, + { + "children": [ + 91 + ], + "name": "Bone_10_036", + "rotation": [ + -0.021788707002997398, + -0.011584978550672531, + 0.95610219240188599, + 0.29199245572090149 + ], + "scale": [ + 0.99999940395355225, + 1.0000005960464478, + 0.99999994039535522 + ], + "translation": [ + 0.090000003576278687, + 0.99000000953674316, + -3.5527136788005009e-15 + ] + }, + { + "name": "Bone_9_037", + "rotation": [ + 0.23315724730491638, + -0.73554599285125732, + 0.19014766812324524, + 0.60700386762619019 + ], + "scale": [ + 0.99999988079071045, + 1.0000004768371582, + 0.99999982118606567 + ], + "translation": [ + 6.929999828338623, + 0.89999997615814209, + -0.18000000715255737 + ] + }, + { + "children": [ + 93 + ], + "name": "Bone_8_038", + "rotation": [ + -1.220125549531402e-15, + -2.8951541667922255e-15, + 0.94264143705368042, + 0.3338070809841156 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + 28.170000076293945, + 5.6700000762939453, + 5.773159728050814e-15 + ] + }, + { + "children": [ + 94 + ], + "name": "Bone_7_039", + "rotation": [ + -0.00078434892930090427, + 0.00043471180833876133, + 0.015404367819428444, + 0.99988096952438354 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 5.4000000953674316, + -4.1645130011147558e-08, + 3.187881070232379e-10 + ] + }, + { + "children": [ + 95 + ], + "name": "Bone_6_040", + "rotation": [ + -0.0029703727923333645, + 0.0019287343602627516, + -0.085415385663509369, + 0.99633914232254028 + ], + "scale": [ + 1.0000004768371582, + 1.0000004768371582, + 1 + ], + "translation": [ + 6.4800000190734863, + -1.9121898731100373e-07, + -5.3334159311191343e-09 + ] + }, + { + "children": [ + 96 + ], + "name": "Bone_5_041", + "rotation": [ + -0.0016414264682680368, + 0.0013529252028092742, + 0.020266471430659294, + 0.99979233741760254 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 5.8500003814697266, + -1.3254933719508699e-06, + -1.2018183781492553e-08 + ] + }, + { + "name": "Bone_4_042", + "rotation": [ + 0.39538115262985229, + -0.59237509965896606, + 0.39538115262985229, + 0.58003383874893188 + ], + "scale": [ + 1.0000003576278687, + 0.99999970197677612, + 0.99999982118606567 + ], + "translation": [ + 10.260000228881836, + 0, + 0 + ] + }, + { + "children": [ + 98, + 99 + ], + "name": "Bone_3_043", + "rotation": [ + -0.023863209411501884, + 0.0097060194239020348, + 0.50004208087921143, + 0.86561781167984009 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "translation": [ + 27, + -1.8541612689659814e-06, + -2.5852311402729811e-09 + ] + }, + { + "name": "Bone_2_044", + "rotation": [ + -0.0053491545841097832, + -0.00075647555058822036, + 0.3437042236328125, + 0.93906241655349731 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "translation": [ + 6.660001277923584, + -3.5999891757965088, + 8.0677239111537347e-08 + ] + }, + { + "name": "Bone_1_045", + "rotation": [ + 0.70697259902954102, + 0.0061456393450498581, + 0.70697259902954102, + -0.01848699152469635 + ], + "scale": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000001192092896 + ], + "translation": [ + 9, + -3.1499900817871094, + 0 + ] + }, + { + "name": "Bone_0_046", + "rotation": [ + 0.64596056938171387, + 0.29374143481254578, + 0.64596056938171387, + -0.28140014410018921 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "translation": [ + 29.340000152587891, + 11.340000152587891, + 0 + ] + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 70, + "joints": [ + 25, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "skeleton": 25 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + }, + { + "sampler": 0, + "source": 1 + }, + { + "sampler": 0, + "source": 2 + }, + { + "sampler": 0, + "source": 3 + }, + { + "sampler": 0, + "source": 4 + }, + { + "sampler": 0, + "source": 5 + }, + { + "sampler": 0, + "source": 6 + }, + { + "sampler": 0, + "source": 7 + }, + { + "sampler": 0, + "source": 8 + }, + { + "sampler": 0, + "source": 9 + }, + { + "sampler": 0, + "source": 10 + } + ] +} + diff --git a/demo/ar/location-base/assets/articuno/textures/Texture1_baseColor.png b/demo/ar/location-base/assets/articuno/textures/Texture1_baseColor.png new file mode 100644 index 0000000..1e00ad5 Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/Texture1_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader10_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader10_baseColor.png new file mode 100644 index 0000000..7efd76c Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader10_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader12_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader12_baseColor.png new file mode 100644 index 0000000..d7e7fb3 Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader12_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader14_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader14_baseColor.png new file mode 100644 index 0000000..24a201e Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader14_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader2_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader2_baseColor.png new file mode 100644 index 0000000..a0710a4 Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader2_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader3_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader3_baseColor.png new file mode 100644 index 0000000..ac5d3ce Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader3_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader4_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader4_baseColor.png new file mode 100644 index 0000000..97b851b Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader4_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader6_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader6_baseColor.png new file mode 100644 index 0000000..0519d54 Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader6_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader7_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader7_baseColor.png new file mode 100644 index 0000000..b120e2e Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader7_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader8_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader8_baseColor.png new file mode 100644 index 0000000..26746e5 Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader8_baseColor.png differ diff --git a/demo/ar/location-base/assets/articuno/textures/surfaceShader9_baseColor.png b/demo/ar/location-base/assets/articuno/textures/surfaceShader9_baseColor.png new file mode 100644 index 0000000..f6cfb0c Binary files /dev/null and b/demo/ar/location-base/assets/articuno/textures/surfaceShader9_baseColor.png differ diff --git a/demo/ar/location-base/assets/dragonite/scene.bin b/demo/ar/location-base/assets/dragonite/scene.bin new file mode 100644 index 0000000..51d03c7 Binary files /dev/null and b/demo/ar/location-base/assets/dragonite/scene.bin differ diff --git a/demo/ar/location-base/assets/dragonite/scene.gltf b/demo/ar/location-base/assets/dragonite/scene.gltf new file mode 100644 index 0000000..cee1300 --- /dev/null +++ b/demo/ar/location-base/assets/dragonite/scene.gltf @@ -0,0 +1,137487 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 2076, + "max": [ + 113.44450378417969, + 265.78970336914062, + 41.509597778320312 + ], + "min": [ + -113.44450378417969, + 0.69111895561218262, + -252.966064453125 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 24912, + "componentType": 5126, + "count": 2076, + "max": [ + 0.99988013505935669, + 0.99988257884979248, + 0.999869704246521 + ], + "min": [ + -0.99988013505935669, + -0.9999699592590332, + -0.99999576807022095 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 2076, + "max": [ + 0.99971789121627808, + 0.99988150596618652, + 0.9977838397026062, + 1 + ], + "min": [ + -0.99971789121627808, + -0.99999576807022095, + -0.99988263845443726, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 33216, + "componentType": 5126, + "count": 2076, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 2076, + "max": [ + 0.9490504264831543, + 0.99979835748672485 + ], + "min": [ + 0.00020156223035883158, + 0.00020156223035883158 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 10158, + "max": [ + 2075 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 257, + "max": [ + 1, + 0.0086189005523920059, + 0.009893219918012619, + 0, + 0.0097591066733002663, + 1, + 0.010000000707805157, + 0, + 0.0097264861688017845, + 0.0099550094455480576, + 1, + 0, + 1.4894206523895264, + 2.1688945293426514, + 1.0819377899169922, + 1 + ], + "min": [ + -0.0099999997764825821, + -0.0086189014837145805, + -0.0098932189866900444, + 0, + -0.0097591066733002663, + -0.0098789669573307037, + -0.0094473613426089287, + 0, + -0.0097264852374792099, + -0.009999861940741539, + -0.009901897981762886, + 0, + -1.4894211292266846, + -1.7437095642089844, + -1.8796355724334717, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 2076, + "max": [ + 255, + 255, + 255, + 255 + ], + "min": [ + 6, + 6, + 6, + 6 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 66432, + "componentType": 5126, + "count": 2076, + "max": [ + 1, + 0.49899938702583313, + 0.28922280669212341, + 0.22815541923046112 + ], + "min": [ + 0.26090842485427856, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-09, + 0.1913716197013855, + 4.3073669075965881e-08 + ], + "min": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 780, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 65, + "max": [ + 0.0089846951887011528, + 0.034154176712036133, + 0.063492096960544586, + 0.99985557794570923 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 616, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1068, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 876, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1848, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 948, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 1040, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2064, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + 1.862645149230957e-08, + 1.4156103134155273e-07, + 1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2520, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2080, + "componentType": 5126, + "count": 38, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 1.9092109226903631e-08, + 1 + ], + "min": [ + 1.1641530406336642e-08, + -4.6566178690810034e-10, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2568, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.028223391622304916, + 4.0978193283081055e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1680, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3024, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2688, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363913536072, + -0.058250229805707932, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.112343430519104, + -0.05825023353099823, + -0.038226868957281113, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3312, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.862645149230957e-08, + -1.2898817658424377e-07 + ], + "min": [ + -3.2596290111541748e-08, + -5.5879354476928711e-09, + -1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2080, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3768, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3296, + "componentType": 5126, + "count": 38, + "max": [ + -1.8277201974115087e-08, + -6.0652368460978323e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2240, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3792, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + 0.045039981603622437, + -3.8184225559234619e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2392, + "componentType": 5126, + "count": 29, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4248, + "componentType": 5126, + "count": 29, + "max": [ + 1, + 1.0000008344650269, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2508, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3904, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882647514343262, + -0.038419146090745926, + -9.6831150585785508e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882386744022369, + -0.038419149816036224, + -9.6853240393102169e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4596, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + 0.022519826889038086, + 8.2887709140777588e-08 + ], + "min": [ + -3.5390257835388184e-08, + 0.022519733756780624, + 7.8231096267700195e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2812, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5052, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 4512, + "componentType": 5126, + "count": 38, + "max": [ + 5.1781546517304378e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.0599925316419103e-07, + -9.3644507614953909e-07, + 2.3003670435173262e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5148, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3148, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5604, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5120, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803959548473358, + -0.038298316299915314, + -0.044083759188652039, + 0.98228931427001953 + ], + "min": [ + 0.17803825438022614, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5820, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-08, + -8.5681676864624023e-08, + 2.0954757928848267e-09 + ], + "min": [ + -1.601874828338623e-07, + -1.2293457984924316e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3524, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6276, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5728, + "componentType": 5126, + "count": 38, + "max": [ + 3.9581204980265738e-09, + 2.2351741790771484e-08, + 5.9430025345363902e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.7345882952213287e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6324, + "componentType": 5126, + "count": 38, + "max": [ + -5.9604644775390625e-08, + 0.033446535468101501, + -3.3527612686157227e-08 + ], + "min": [ + -7.1711838245391846e-08, + 0.033446453511714935, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3844, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6780, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6336, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510172635316849, + 0.01642073318362236, + -0.038739234209060669, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7044, + "componentType": 5126, + "count": 38, + "max": [ + -1.0430812835693359e-07, + 1.0523945093154907e-07, + 3.8184225559234619e-08 + ], + "min": [ + -1.1315569281578064e-07, + 3.7252902984619141e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4236, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7500, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6944, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132224154857113e-10, + -2.607702676016288e-08, + 2.8347127312144949e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -2.7939670133036998e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7548, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -5.9604644775390625e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744627058506012, + -6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4556, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8004, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 7552, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518191993236542, + 0.0088785169646143913, + -0.057382568717002869, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382576167583466, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8100, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 0.020872212946414948, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4892, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8556, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8160, + "componentType": 5126, + "count": 38, + "max": [ + 1.2572852980952121e-08, + -9.4994888399924093e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + 4.6566119848989729e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8604, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5212, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9060, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8768, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063956449739634991, + 0.6579899787902832, + 0.26252901554107666, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9252, + "componentType": 5126, + "count": 38, + "max": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.1874362826347351e-07 + ], + "min": [ + -1.203734427690506e-07, + 4.0978193283081055e-08, + -1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5580, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9708, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9376, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.1641543284923728e-10, + -7.2875991463661194e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5780, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9852, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5956, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10380, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6056, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9984, + "componentType": 5126, + "count": 44, + "max": [ + 0.17804411053657532, + -0.038269970566034317, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10680, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6384, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11136, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 10688, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6600, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11328, + "componentType": 5126, + "count": 22, + "max": [ + 0.0073303328827023506, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303282260894775, + 0.34354427456855774, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6688, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11592, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6696, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11296, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6848, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11616, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + -1.4621764421463013e-07, + -1.1175870895385742e-08 + ], + "min": [ + -2.1886080503463745e-08, + -1.7136335372924805e-07, + -1.1041993275284767e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7000, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11904, + "componentType": 5126, + "count": 38, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.3061951398849487e-08, + 1 + ], + "min": [ + -4.71482053399086e-09, + 3.119930624961853e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12120, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + -2.2351741790771484e-08 + ], + "min": [ + -1.0384246706962585e-07, + 0.032196007668972015, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7320, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12576, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000004768371582, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12512, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476891040802002, + -0.045752901583909988, + -0.025043418630957603, + 0.99704056978225708 + ], + "min": [ + 0.056476559489965439, + -0.045752905309200287, + -0.025043440982699394, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12744, + "componentType": 5126, + "count": 38, + "max": [ + -6.9849193096160889e-08, + 1.7927959561347961e-07, + -3.166496753692627e-08 + ], + "min": [ + -8.3819031715393066e-08, + 1.5366822481155396e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7680, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13200, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13120, + "componentType": 5126, + "count": 38, + "max": [ + -9.6479206845856424e-09, + -2.3166652596273707e-08, + -1.4173568096964573e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.3527619791584584e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13296, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 3.7252902984619141e-08 + ], + "min": [ + 5.9371814131736755e-09, + 0.049540437757968903, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8016, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13752, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8080, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13728, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846226453781128, + -0.085242278873920441, + -0.013570735231041908, + 0.98919987678527832 + ], + "min": [ + 0.11846192181110382, + -0.085242293775081635, + -0.013570744544267654, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13944, + "componentType": 5126, + "count": 38, + "max": [ + 8.2887709140777588e-08, + 0.024770038202404976, + 7.4505805969238281e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.024770006537437439, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8384, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14400, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14336, + "componentType": 5126, + "count": 38, + "max": [ + -5.8754807241712115e-07, + 9.4032299102764227e-07, + -1.4674151316285133e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14448, + "componentType": 5126, + "count": 38, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8704, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14904, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14944, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257198959589005, + 0.97361528873443604 + ], + "min": [ + 0.21749080717563629, + -0.069006666541099548, + -0.0030257296748459339, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8952, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15192, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -1.5133991837501526e-07, + 2.9802322387695312e-08, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9104, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15648, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 15552, + "componentType": 5126, + "count": 38, + "max": [ + 4.6740737502659613e-08, + -6.7520886659622192e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.6542688047470619e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9288, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15744, + "componentType": 5126, + "count": 52, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9496, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16368, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 0.9999997615814209, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9592, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16160, + "componentType": 5126, + "count": 52, + "max": [ + 0.21750432252883911, + -0.068965867161750793, + -0.0028431480750441551, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575764831155539, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16656, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326391905546188 + ], + "min": [ + 0.023247208446264267, + 0.34059685468673706, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9952, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17112, + "componentType": 5126, + "count": 26, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.9999995231628418, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16992, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811855673789978, + -0.13169907033443451, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811857163906097, + -0.13169918954372406, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17424, + "componentType": 5126, + "count": 38, + "max": [ + -6.4377672970294952e-08, + 2.2351741790771484e-08, + 7.4505805969238281e-08 + ], + "min": [ + -2.0116567611694336e-07, + -3.3120159059762955e-08, + 7.6106516644358635e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10360, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17880, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 17600, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505801528346183e-09, + -9.3132266343332049e-09, + -7.4505805969238281e-09, + 1 + ], + "min": [ + 6.9849184214376692e-09, + -1.862645326866641e-08, + -1.3969838619232178e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10520, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17904, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-07, + 0.031801007688045502, + -3.9115548133850098e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800948083400726, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10672, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18360, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18208, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024177730083466, + -0.10080224275588989, + -0.057818155735731125, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080226510763168, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18636, + "componentType": 5126, + "count": 38, + "max": [ + 1.6391277313232422e-07, + 2.7706846594810486e-08, + -2.9243528842926025e-07 + ], + "min": [ + 5.3085386753082275e-08, + -2.2351741790771484e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19092, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18816, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + -3.3178371161568521e-09, + -3.3993273973464966e-08, + 1 + ], + "min": [ + -8.8475644588470459e-09, + -2.0489096641540527e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19116, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.5832483768463135e-08, + 0.044816639274358749, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11380, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19572, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 19424, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152609169483185, + -0.052601058036088943, + -0.024043351411819458, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601061761379242, + -0.024043373763561249, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19848, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-07, + 0.022408418357372284, + 1.1033262126147747e-07 + ], + "min": [ + -1.5669502317905426e-07, + 0.022408399730920792, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20304, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20032, + "componentType": 5126, + "count": 38, + "max": [ + -6.2002783351999824e-07, + 9.6263806881324854e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.2852556109428406e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20352, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12096, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20808, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20640, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130188584327698, + -0.10888328403234482, + 0.021744716912508011, + 0.9531741738319397 + ], + "min": [ + 0.2813015878200531, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12288, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20928, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + -1.6763806343078613e-08, + 1.6763806343078613e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-08, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12440, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21384, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21248, + "componentType": 5126, + "count": 38, + "max": [ + 5.9750178138529009e-08, + -4.8428788090859598e-08, + -3.3527616238870905e-08, + 1 + ], + "min": [ + 3.2130639482375045e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12624, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21480, + "componentType": 5126, + "count": 43, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12796, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21996, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12852, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21856, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13024, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22164, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954514354467392, + 0.33536890149116516, + -0.0064071603119373322 + ], + "min": [ + 0.034954499453306198, + 0.33536884188652039, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13176, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22620, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999922513961792, + 0.99999934434890747, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13312, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 22544, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214220762252808, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701881587505341, + -0.22579626739025116, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13464, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23028, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 2.0116567611694336e-07 + ], + "min": [ + 2.9802322387695312e-08, + 1.4901161193847656e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23484, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23152, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505814851022478e-09, + 2.0489100194254206e-08, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.6542700481968495e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23580, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + 5.9604644775390625e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.022592496126890182, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13952, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24036, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23760, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399157166481018, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591923415660858, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24180, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + -1.1175870895385742e-08, + 2.9802322387695312e-08 + ], + "min": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14304, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24636, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14320, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24368, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + 4.6566133171666024e-09, + -1.0244549208948683e-08, + 1 + ], + "min": [ + -1.4901161193847656e-08, + -2.0023437130589627e-08, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24684, + "componentType": 5126, + "count": 38, + "max": [ + 1.0803341865539551e-07, + 0.027876397594809532, + 3.9581209421157837e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876261621713638, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14624, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25140, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24976, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988000005483627, + -0.020971952006220818, + 0.99849694967269897 + ], + "min": [ + 0.041517928242683411, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25404, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.013938168063759804, + -4.8428773880004883e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938087970018387, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15016, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25860, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 25584, + "componentType": 5126, + "count": 38, + "max": [ + 5.2968971431255341e-08, + -1.3364477524646645e-07, + 4.5634802603444768e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.4482063193099748e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25956, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15352, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 26412, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26192, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057187080383301, + -0.17872533202171326, + 0.015338578261435032, + 0.91919606924057007 + ], + "min": [ + 0.35057181119918823, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 26604, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + -5.9604644775390625e-08, + -8.1956386566162109e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15720, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27060, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26800, + "componentType": 5126, + "count": 38, + "max": [ + -4.3510230085530566e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "min": [ + -5.9604644775390625e-08, + -3.5390257835388184e-08, + -3.9115551686563776e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27108, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16040, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27564, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 27408, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + -0.17872501909732819, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + -0.17872503399848938, + 0.015338657423853874, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27804, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579222798347473, + 0.32914415001869202, + 0.0039985515177249908 + ], + "min": [ + 0.044579200446605682, + 0.32914406061172485, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16424, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28260, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28016, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570001721382141, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749421834945679, + -0.27479112148284912, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28404, + "componentType": 5126, + "count": 38, + "max": [ + 1.0756775736808777e-07, + 4.4330954551696777e-07, + 1.4994293451309204e-07 + ], + "min": [ + 7.4505805969238281e-09, + 4.246830940246582e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28624, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489093088826849e-08, + 1.1362133278680631e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.1175870184843006e-07, + -1.303851338008144e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16944, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28908, + "componentType": 5126, + "count": 56, + "max": [ + 1.862645149230957e-08, + 0.25792211294174194, + 2.0279549062252045e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.25792208313941956, + -6.9849193096160889e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17168, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 29580, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17224, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 29232, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319517910480499, + 0.787913978099823, + 0.084729395806789398, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 17448, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 29748, + "componentType": 5126, + "count": 62, + "max": [ + 1.1920928955078125e-07, + 0.12896108627319336, + -2.8870999813079834e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896065413951874, + -3.6787241697311401e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17696, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 30492, + "componentType": 5126, + "count": 47, + "max": [ + 0.99999982118606567, + 1.0000044107437134, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17884, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 30128, + "componentType": 5126, + "count": 62, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31056, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.1392713338136673, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18284, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31512, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000008344650269, + 1.0000020265579224, + 1.0000020265579224 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31120, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531652569770813, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401045978069305, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18572, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31920, + "componentType": 5126, + "count": 20, + "max": [ + 0.044326618313789368, + -0.11071401834487915, + 0.071930147707462311 + ], + "min": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18652, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32160, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.99999672174453735, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31728, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531584024429321, + -0.090401113033294678, + 0.19322757422924042, + 0.94302952289581299 + ], + "min": [ + -0.25531637668609619, + -0.090401455760002136, + 0.19322720170021057, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18868, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32352, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-07, + -3.3527612686157227e-08, + 4.3958425521850586e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19036, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32856, + "componentType": 5126, + "count": 42, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999690055847168, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19204, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 32336, + "componentType": 5126, + "count": 42, + "max": [ + 3.6647594470196054e-07, + -6.0908479326826637e-07, + 5.8510431699687615e-07, + 1 + ], + "min": [ + -1.7876758420243277e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 19372, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33360, + "componentType": 5126, + "count": 46, + "max": [ + 7.0780515670776367e-08, + 0.27854281663894653, + 2.0815059542655945e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.27854278683662415, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19556, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33912, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19572, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33008, + "componentType": 5126, + "count": 46, + "max": [ + 0.25531500577926636, + 0.12245099991559982, + -0.17468461394309998, + 0.97297227382659912 + ], + "min": [ + 0.088408268988132477, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 19756, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33960, + "componentType": 5126, + "count": 42, + "max": [ + 6.7055225372314453e-08, + 0.13927170634269714, + 3.2037496566772461e-07 + ], + "min": [ + -1.1102230246251565e-16, + 0.13927145302295685, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19924, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 34464, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000003576278687, + 0.99999874830245972, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19976, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33744, + "componentType": 5126, + "count": 42, + "max": [ + -1.5273697329121205e-07, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.116192947847594e-06, + -8.257104127551429e-06, + -1.1362142231519101e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20144, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 34620, + "componentType": 5126, + "count": 38, + "max": [ + -0.027315661311149597, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975754089653492 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20296, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35076, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000008344650269 + ], + "min": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20344, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 34416, + "componentType": 5126, + "count": 56, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35220, + "componentType": 5126, + "count": 38, + "max": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 5.0632388592930511e-07 + ], + "min": [ + -6.4464984461665154e-08, + 1.7578713595867157e-08, + 4.8081545855893637e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20720, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35676, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35312, + "componentType": 5126, + "count": 38, + "max": [ + -1.6952979020601333e-09, + 8.3324273703055951e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -7.004929081233513e-09, + 8.2272904933233804e-08, + 5.2154064178466797e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20888, + "componentType": 5126, + "count": 35, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35724, + "componentType": 5126, + "count": 35, + "max": [ + 0.023130057379603386, + 0.26697862148284912, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21028, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36144, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21116, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35920, + "componentType": 5126, + "count": 37, + "max": [ + -0.69586646556854248, + -0.39777597784996033, + -0.29703006148338318, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36408, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + 3.3527612686157227e-08, + 1.4901161193847656e-08, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21416, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36864, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21432, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 36512, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-08, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.2456439435482025e-08, + 9.3132257461547852e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36912, + "componentType": 5126, + "count": 38, + "max": [ + 7.1013346314430237e-08, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223380446434021, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21736, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 37368, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1, + 1.0000004768371582 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21804, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 37120, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234384030103683, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234383285045624, + 0.058250226080417633, + 0.038226824253797531, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21956, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 37572, + "componentType": 5126, + "count": 38, + "max": [ + 1.6088597476482391e-07, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + -2.2351741790771484e-08, + -4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22108, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38028, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 37728, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7869751900434494e-08, + -1.8102582544088364e-08, + -6.8685039877891541e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38124, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.045039966702461243, + 4.8894435167312622e-08 + ], + "min": [ + -9.0338289737701416e-08, + 0.045039962977170944, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22444, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38580, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 38336, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882900834083557, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882878482341766, + 0.038419175893068314, + 9.6838331955950707e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38676, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "min": [ + -1.6717240214347839e-07, + 0.022520110011100769, + 1.2293457984924316e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22780, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39132, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22796, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 38944, + "componentType": 5126, + "count": 38, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0628793606647378e-07, + 1 + ], + "min": [ + 6.3786865212023258e-07, + 9.4692217089686892e-07, + -2.0675361156463623e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22948, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39180, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23100, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39636, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000004768371582, + 1, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 39552, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803941667079926, + 0.038298342376947403, + 0.044083788990974426, + 0.98228937387466431 + ], + "min": [ + 0.17803771793842316, + 0.038298297673463821, + 0.044083651155233383, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 23356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39948, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + -7.0780515670776367e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.1175870895385742e-08, + -1.3411045074462891e-07, + 2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40404, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 40160, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252896323280993e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -4.0745353757642988e-09, + -2.8638160287641767e-08, + -7.6950513516749197e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 23676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40452, + "componentType": 5126, + "count": 38, + "max": [ + 8.5681676864624023e-08, + 0.033446446061134338, + -7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.033446401357650757, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23828, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40908, + "componentType": 5126, + "count": 19, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 40768, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510617807507515, + -0.016420755535364151, + 0.038739204406738281, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.03873918205499649, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41136, + "componentType": 5126, + "count": 38, + "max": [ + 9.9651515483856201e-08, + -2.9802322387695312e-08, + -8.6612999439239502e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3317912817001343e-07, + -2.3283064365386963e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41592, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 41376, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 2.514570951461792e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -6.7520899982298488e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41640, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.041744641959667206, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24528, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42096, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 41984, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518230736255646, + -0.0088785076513886452, + 0.057382617145776749, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785141706466675, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42276, + "componentType": 5126, + "count": 38, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872443914413452, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24892, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42732, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 42592, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.0244548320770264e-08, + 1 + ], + "min": [ + -5.7742006731587026e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42828, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25228, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43284, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25268, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 43200, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43404, + "componentType": 5126, + "count": 38, + "max": [ + 6.4261257648468018e-08, + -2.3283064365386963e-08, + -3.5762786865234375e-07 + ], + "min": [ + -3.166496753692627e-08, + -6.7055225372314453e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25568, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 43792, + "componentType": 5126, + "count": 38, + "max": [ + 1.6705596905808306e-08, + 1.5599653124809265e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2596290111541748e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43908, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25888, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 44364, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 44400, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803849279880524, + 0.038296066224575043, + 0.044083882123231888, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 44688, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26300, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45144, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26352, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 45008, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063958112150430679, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.2625291645526886, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45300, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303841054439545, + 0.34354394674301147, + -0.021197730675339699 + ], + "min": [ + -0.0073304995894432068, + 0.34354394674301147, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26652, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45756, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 45600, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725982069969177, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45804, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 2.1792948246002197e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26972, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46260, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 46208, + "componentType": 5126, + "count": 38, + "max": [ + 3.0850066945475874e-09, + 2.5611370801925659e-09, + 1.6181733286657618e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46308, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 7.0780515670776367e-08 + ], + "min": [ + -1.7858110368251801e-07, + 0.032196007668972015, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27292, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46764, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000005960464478, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 46816, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043465197086334, + 0.99704056978225708 + ], + "min": [ + 0.056476563215255737, + 0.045752868056297302, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47052, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 8.5681676864624023e-08 + ], + "min": [ + -8.6147338151931763e-08, + -8.1956386566162109e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27692, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47508, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27724, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 47424, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969840839678227e-09, + 4.526009789174168e-08, + -2.9453081751285026e-08, + 1 + ], + "min": [ + -1.5133994057947575e-09, + 3.5390264940815541e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47604, + "componentType": 5126, + "count": 38, + "max": [ + 8.149072527885437e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540486186742783, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28028, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48060, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 48032, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570722192525864, + 0.98919987678527832 + ], + "min": [ + 0.11846189945936203, + 0.08524225652217865, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48228, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-08, + 0.024770209565758705, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770196527242661, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28388, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48684, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 48640, + "componentType": 5126, + "count": 38, + "max": [ + -5.8393925428390503e-07, + -9.3656132094110944e-07, + 1.9185243615993386e-07, + 1 + ], + "min": [ + -5.9235026128590107e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48732, + "componentType": 5126, + "count": 38, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28708, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49188, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 49248, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749170124530792, + 0.069006718695163727, + 0.0030257171019911766, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006636738777161, + 0.0030257017351686954, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49356, + "componentType": 5126, + "count": 38, + "max": [ + 7.7299773693084717e-08, + 1.601874828338623e-07, + 5.005858838558197e-08 + ], + "min": [ + 5.4948031902313232e-08, + 4.8428773880004883e-08, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29068, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49812, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 49856, + "componentType": 5126, + "count": 38, + "max": [ + -1.0710210496256423e-08, + 1.4435499906539917e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -1.2470992238888812e-08, + 3.7252898543727042e-09, + -6.4319469750273583e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 29236, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49860, + "componentType": 5126, + "count": 65, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29496, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 50640, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29548, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 50464, + "componentType": 5126, + "count": 65, + "max": [ + 0.21750125288963318, + 0.069091320037841797, + 0.003196188248693943, + 0.97362369298934937 + ], + "min": [ + 0.2174590677022934, + 0.068967774510383606, + 0.002856898820027709, + 0.973613440990448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 29808, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 50796, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247243836522102, + 0.34059679508209229, + -0.015326134860515594 + ], + "min": [ + -0.023247748613357544, + 0.34059673547744751, + -0.015326384454965591 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29960, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 51252, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999958276748657, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999922513961792, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 51504, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811858654022217, + 0.13169935345649719, + 0.16719585657119751, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169923424720764, + 0.16719573736190796, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 51552, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-08, + 2.2069434635341167e-07, + 1.3411045074462891e-07 + ], + "min": [ + -1.9371509552001953e-07, + 1.5646219253540039e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52008, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 52112, + "componentType": 5126, + "count": 38, + "max": [ + -8.8475626824902065e-09, + 2.5145704185547402e-08, + 3.7252894102834944e-09, + 1 + ], + "min": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52056, + "componentType": 5126, + "count": 38, + "max": [ + 6.8685039877891541e-09, + 0.031801000237464905, + 5.7741999626159668e-08 + ], + "min": [ + -2.7939679458910405e-09, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30684, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52512, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 52720, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228000879288, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080226510763168, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52680, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-08, + 3.5390257835388184e-08, + 5.029141902923584e-08 + ], + "min": [ + -8.754432201385498e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31044, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53136, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 53328, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -1.4784747648377561e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53232, + "componentType": 5126, + "count": 38, + "max": [ + -2.514570951461792e-08, + 0.044816732406616211, + 6.3329935073852539e-08 + ], + "min": [ + -2.3096799850463867e-07, + 0.04481661319732666, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31380, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53688, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 53936, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151916265487671, + 0.052601084113121033, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151901364326477, + 0.05260106548666954, + 0.024043364450335503, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53928, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02240833081305027, + 2.4400651454925537e-07 + ], + "min": [ + -2.360902726650238e-07, + 0.022408241406083107, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31764, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54384, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 54544, + "componentType": 5126, + "count": 38, + "max": [ + -6.493646651506424e-07, + -9.4700953923165798e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54432, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32084, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54888, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 55152, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130200505256653, + 0.10888329893350601, + -0.021744724363088608, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + 0.10888323932886124, + -0.021744729951024055, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 32300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55080, + "componentType": 5126, + "count": 38, + "max": [ + 7.6368451118469238e-08, + -7.4505805969238281e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32452, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55536, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32468, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 55760, + "componentType": 5126, + "count": 38, + "max": [ + 1.164161822497789e-10, + 3.1199313355045888e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.4028048944680904e-08, + 2.1012969142475413e-08, + -1.8626455045023249e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 32620, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55584, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32828, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56208, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32884, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 56368, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130325675010681, + 0.10890431702136993, + -0.021636079996824265, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.1088700145483017, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33092, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56376, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954965114593506, + 0.33536875247955322, + -0.0064073465764522552 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33244, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56832, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 57200, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214213311672211, + 0.16701884567737579, + 0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + 0.16701869666576385, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57084, + "componentType": 5126, + "count": 38, + "max": [ + 3.9115548133850098e-08, + 1.6391277313232422e-07, + 1.5646219253540039e-07 + ], + "min": [ + -6.7055225372314453e-08, + 1.0803341865539551e-07, + 1.4062970876693726e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 57808, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566217548615896e-10, + -7.4505814851022478e-09, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + -3.7252907425511239e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57588, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-08, + 0.022592537105083466, + -1.3504177331924438e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592434659600258, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33952, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58044, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 58416, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399183243513107, + 0.028591984882950783, + 0.99515920877456665 + ], + "min": [ + 0.082881681621074677, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58272, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 6.3329935073852539e-08, + -6.28642737865448e-08 + ], + "min": [ + -4.4703483581542969e-08, + -2.7939677238464355e-08, + -1.9744038581848145e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58728, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 59024, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244550097127103e-08, + 1.1175871783564162e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -1.4901164746561335e-08, + -4.1909529180372829e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58776, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876298874616623, + 5.4016709327697754e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34652, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59232, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 59632, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518155485391617, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + 0.028988013043999672, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34856, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59388, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.013938102871179581, + 9.5926225185394287e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.013938065618276596, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35008, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59844, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 60240, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -4.0745366192140864e-08, + 5.8091245591640472e-08, + -4.0046870708465576e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59868, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35320, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 60324, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 60848, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + 0.17872521281242371, + -0.015338596887886524, + 0.91919606924057007 + ], + "min": [ + 0.35057175159454346, + 0.17872513830661774, + -0.01533864438533783, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 60612, + "componentType": 5126, + "count": 38, + "max": [ + 1.3783574104309082e-07, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + -2.9802322387695312e-08, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35720, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61068, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 61456, + "componentType": 5126, + "count": 38, + "max": [ + 4.4819907785154101e-09, + -1.7695132470407771e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + -1.187436549088261e-08, + -2.4214388716359281e-08, + -1.862645149230957e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61164, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36056, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61620, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 62064, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338590368628502, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872487008571625, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 36288, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61860, + "componentType": 5126, + "count": 38, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579751789569855, + 0.32914397120475769, + 0.00399823859333992 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36440, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 62316, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000008344650269 + ], + "min": [ + 0.99999970197677612, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 62672, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + 0.18749427795410156, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570015132427216, + 0.18749421834945679, + 0.27479088306427002, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 36688, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 62604, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 2.7194619178771973e-07, + 1.7136335372924805e-07 + ], + "min": [ + -2.3189932107925415e-07, + 1.4156103134155273e-07, + 1.0873191058635712e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36840, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63060, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 63280, + "componentType": 5126, + "count": 38, + "max": [ + 3.5390254282674505e-08, + -1.1175874448099421e-08, + -6.3329935073852539e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 37024, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63156, + "componentType": 5126, + "count": 56, + "max": [ + -1.0244548320770264e-08, + 0.25792214274406433, + 1.3271346688270569e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37248, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63828, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999922513961792, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37396, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 63888, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 37620, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 64272, + "componentType": 5126, + "count": 64, + "max": [ + 1.2479722499847412e-07, + 0.12896072864532471, + 6.7800283432006836e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37876, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 65040, + "componentType": 5126, + "count": 56, + "max": [ + 0.99999940395355225, + 1.0000060796737671, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 1.0000026226043701, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38100, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 64784, + "componentType": 5126, + "count": 64, + "max": [ + 2.9940034096398449e-07, + 0.88032650947570801, + 2.0891943677270319e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 38356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 65712, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.13927134871482849, + -1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38508, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66168, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999773502349854, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 65808, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401254594326019, + 0.19322672486305237, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 38732, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66384, + "componentType": 5126, + "count": 38, + "max": [ + -0.044326536357402802, + -0.11071467399597168, + 0.071930289268493652 + ], + "min": [ + -0.044326610863208771, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38884, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66840, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 66416, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531512498855591, + 0.090401232242584229, + -0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + -0.25531548261642456, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39060, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + -1.4901161193847656e-08, + 4.9173831939697266e-07 + ], + "min": [ + -3.7252902984619141e-08, + -2.9802322387695312e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39236, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 67440, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999690055847168, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39316, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 67024, + "componentType": 5126, + "count": 44, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631596620121854e-07, + -2.9895460329498746e-07, + -7.9954185139285983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39492, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 67680, + "componentType": 5126, + "count": 56, + "max": [ + 3.7252902984619141e-08, + 0.27854272723197937, + 6.9383531808853149e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39716, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68352, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39736, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 67728, + "componentType": 5126, + "count": 56, + "max": [ + 0.25531500577926636, + -0.090401507914066315, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571906089782715, + -0.12242159992456436, + 0.17470520734786987, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39960, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68412, + "componentType": 5126, + "count": 42, + "max": [ + -6.3329935073852539e-08, + 0.13927134871482849, + 4.7869980335235596e-07 + ], + "min": [ + -2.6822090148925781e-07, + 0.1392713338136673, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40128, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68916, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999910593032837, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40224, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 68624, + "componentType": 5126, + "count": 42, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0628018571878783e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 40392, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69204, + "componentType": 5126, + "count": 56, + "max": [ + 0.027315612882375717, + 0.33446061611175537, + 0.019757704809308052 + ], + "min": [ + 0.027315452694892883, + 0.33446058630943298, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69876, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40648, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 69296, + "componentType": 5126, + "count": 56, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 40872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69972, + "componentType": 5126, + "count": 38, + "max": [ + 6.3060724642127752e-08, + 8.3819031715393066e-09, + 2.997039700858295e-07 + ], + "min": [ + 1.6763806343078613e-08, + -7.4505805969238281e-09, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41024, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70428, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 70192, + "componentType": 5126, + "count": 38, + "max": [ + -3.8926355472312935e-09, + -3.2074240152724087e-08, + 6.7055211161459738e-08, + 1 + ], + "min": [ + -6.9740049291056039e-09, + -5.3645635489374399e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 41208, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70524, + "componentType": 5126, + "count": 21, + "max": [ + -0.023130089044570923, + 0.26697880029678345, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41292, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70776, + "componentType": 5126, + "count": 20, + "max": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 70800, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703021049499512, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 41524, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 71016, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41784, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 71796, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41856, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 71408, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 42116, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 72012, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42376, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 72792, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42460, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 72448, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 42720, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 73044, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42980, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 73824, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43064, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 73488, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 43324, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 74076, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43584, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 74856, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 74528, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 43920, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75084, + "componentType": 5126, + "count": 38, + "max": [ + -2.3865140974521637e-09, + -1.3605159665530664e-08, + -2.8113703365306719e-08 + ], + "min": [ + -2.0985442716892067e-08, + -3.5390257835388184e-08, + -3.0733644962310791e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44072, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 75568, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.885928213596344e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.5691402782967998e-08, + 1.8663602219248787e-08, + 8.7311442797943783e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 44240, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75588, + "componentType": 5126, + "count": 56, + "max": [ + 7.6397549397810849e-10, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.8160790205001831e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44464, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76260, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44512, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 76176, + "componentType": 5126, + "count": 56, + "max": [ + 0.0025766722392290831, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896294593811035, + -0.37012138962745667, + -0.0056022708304226398 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 44736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76404, + "componentType": 5126, + "count": 38, + "max": [ + -5.50062395632267e-09, + 2.1420419216156006e-08, + -2.6542693376541138e-08 + ], + "min": [ + -5.8207660913467407e-09, + -6.5192580223083496e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 77072, + "componentType": 5126, + "count": 38, + "max": [ + -5.2322903343338112e-08, + 7.1711816929109773e-08, + 1.5425025701176764e-09, + 1 + ], + "min": [ + -5.8847923867233476e-08, + 7.1333474238599592e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76908, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.47875440120697021, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875437140464783, + -9.406358003616333e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77364, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 77680, + "componentType": 5126, + "count": 38, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115009218454361, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77412, + "componentType": 5126, + "count": 38, + "max": [ + 1.2526288628578186e-07, + 0.23937708139419556, + 4.5634806156158447e-08 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937705159187317, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45528, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77868, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 78288, + "componentType": 5126, + "count": 38, + "max": [ + 1.6479643250022491e-07, + 0.039239592850208282, + 3.1983549320102611e-07, + 0.99922984838485718 + ], + "min": [ + 1.1330482152516197e-07, + 0.039239473640918732, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77940, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278387308120728, + 3.5390257835388184e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.21278376877307892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45856, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78396, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 78896, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + 0.18448330461978912, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897864580154419, + 0.18448325991630554, + 0.78801393508911133, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46024, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78444, + "componentType": 5126, + "count": 32, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323383241891861 + ], + "min": [ + -0.15143668651580811, + 0.084600687026977539, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46152, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78828, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 79504, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + -0.18448324501514435, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.27897855639457703, + -0.1844833642244339, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46320, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78876, + "componentType": 5126, + "count": 40, + "max": [ + 1.4156103134155273e-07, + -8.9406967163085938e-08, + 8.2072801887989044e-09 + ], + "min": [ + 2.2584572434425354e-08, + -1.4156103134155273e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46480, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 79356, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46512, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 80112, + "componentType": 5126, + "count": 40, + "max": [ + 2.5826739147305489e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.210719435817964e-08, + -2.0448352699986572e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46672, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 79452, + "componentType": 5126, + "count": 56, + "max": [ + 4.0978193283081055e-08, + 0.42556756734848022, + 6.1467289924621582e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.42556756734848022, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80124, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46928, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 80752, + "componentType": 5126, + "count": 56, + "max": [ + -0.20713318884372711, + 0.28850477933883667, + 0.78801411390304565, + 0.54963225126266479 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47152, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80220, + "componentType": 5126, + "count": 45, + "max": [ + 7.0780515670776367e-08, + 0.21278397738933563, + 1.862645149230957e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.21278393268585205, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47332, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80760, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47440, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 81648, + "componentType": 5126, + "count": 45, + "max": [ + -2.2351743567128324e-08, + 1.0408691650809487e-06, + -1.415610881849716e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47620, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81084, + "componentType": 5126, + "count": 5, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957687139511108, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47640, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81144, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47676, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 82368, + "componentType": 5126, + "count": 55, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53590929508209229, + 0.75361925363540649, + -0.15842762589454651, + -0.34606358408927917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47896, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81252, + "componentType": 5126, + "count": 38, + "max": [ + -1.2259971526873414e-07, + -3.3978210467466852e-08, + -4.0508190579657821e-08 + ], + "min": [ + -1.2464650467336469e-07, + -7.3088671115328907e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48048, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81708, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 83248, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038521373687217e-08, + -9.4372563097522288e-09, + -3.5529088004970788e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372634151795864e-09, + -3.5531616537909372e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 48208, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81732, + "componentType": 5126, + "count": 56, + "max": [ + 1.8873834051191807e-08, + 0.31343457102775574, + -1.2994860298931599e-08 + ], + "min": [ + 1.6647391021251678e-08, + 0.31343454122543335, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48432, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 82404, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48480, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 83856, + "componentType": 5126, + "count": 56, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210078943520784, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195724790915847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 48704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 82548, + "componentType": 5126, + "count": 38, + "max": [ + 1.0256189852952957e-07, + 1.1175870895385742e-07, + 3.2043317332863808e-08 + ], + "min": [ + 8.1534381024539471e-08, + 1.0547228157520294e-07, + -1.8699211068451405e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48856, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 84752, + "componentType": 5126, + "count": 38, + "max": [ + -1.8806686763461755e-10, + -6.7208020482212305e-08, + -2.9103830456733704e-09, + 1 + ], + "min": [ + -7.6639707913273014e-09, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 49024, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83052, + "componentType": 5126, + "count": 56, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + -1.0011717677116394e-08, + 0.47875422239303589, + -6.8859662860631943e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49248, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83724, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49296, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 85360, + "componentType": 5126, + "count": 56, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 49520, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83868, + "componentType": 5126, + "count": 56, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 1.9234721548855305e-07 + ], + "min": [ + 3.4924596548080444e-09, + 0.23937715590000153, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49744, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 84540, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49840, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 86256, + "componentType": 5126, + "count": 56, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -4.9444201977166813e-07, + -0.039239216595888138, + 1.7011343800277245e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50064, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 84828, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.21278372406959534, + 4.4703483581542969e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50216, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 87152, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448299169540405, + -0.78801417350769043, + 0.51688551902770996 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801423311233521, + 0.51688545942306519 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50384, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85332, + "componentType": 5126, + "count": 27, + "max": [ + 0.15143662691116333, + 0.084600932896137238, + -0.12323376536369324 + ], + "min": [ + 0.15143661201000214, + 0.084600836038589478, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50492, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85656, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 87760, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.2789786159992218, + 0.18448303639888763, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85752, + "componentType": 5126, + "count": 38, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 4.2899046093225479e-08 + ], + "min": [ + 3.4226104617118835e-08, + -6.5192580223083496e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50828, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86208, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 88368, + "componentType": 5126, + "count": 38, + "max": [ + 2.4866312742233276e-07, + 1.0515211101846944e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.3559543649298575e-07, + 9.3830728076227388e-08, + 7.6863202025378996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86400, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556744813919067, + 4.4703483581542969e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86856, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 88976, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688563823699951 + ], + "min": [ + -0.2789786159992218, + -0.18448293209075928, + -0.78801417350769043, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86904, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 0.21278370916843414, + 3.166496753692627e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.2127835750579834, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51516, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87360, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 89584, + "componentType": 5126, + "count": 38, + "max": [ + 2.3003666171916848e-07, + 5.58793855631734e-09, + -7.450577932388569e-09, + 1 + ], + "min": [ + 1.0640362546610049e-07, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51764, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87648, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51796, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87744, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51836, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 90192, + "componentType": 5126, + "count": 55, + "max": [ + -0.53533452749252319, + 0.76489174365997314, + -0.089343994855880737, + 0.34695103764533997 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87864, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52316, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 88644, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52392, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 91072, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 88872, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52804, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 89328, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52860, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 92112, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52892, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 89496, + "componentType": 5126, + "count": 56, + "max": [ + 4.1058228816837072e-08, + 1.4901161193847656e-08, + 3.457535058259964e-07 + ], + "min": [ + -7.4505805969238281e-08, + -6.5600033849477768e-08, + 6.6924258135259151e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53116, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 90168, + "componentType": 5126, + "count": 47, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53304, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 92240, + "componentType": 5126, + "count": 56, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 53528, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 90732, + "componentType": 5126, + "count": 65, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53788, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 91512, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53804, + "componentType": 5126, + "count": 53, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 93136, + "componentType": 5126, + "count": 53, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229209542274475, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 54016, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 91560, + "componentType": 5126, + "count": 56, + "max": [ + 2.384185791015625e-07, + 5.9604644775390625e-08, + 1.544831320643425e-07 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54240, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 92232, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54304, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 93984, + "componentType": 5126, + "count": 56, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 54528, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 92424, + "componentType": 5126, + "count": 65, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54788, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93204, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54808, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 94880, + "componentType": 5126, + "count": 56, + "max": [ + 0.26693448424339294, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601040601730347 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93264, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55184, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93720, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55240, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 95776, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55272, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93888, + "componentType": 5126, + "count": 59, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55508, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 94596, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55572, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 95904, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482410460710526, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294223144650459, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55808, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 94788, + "componentType": 5126, + "count": 55, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56028, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 95448, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56052, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 96848, + "componentType": 5126, + "count": 55, + "max": [ + 0.10101210325956345, + 0.79780721664428711, + -0.48497864603996277, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 56272, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 95520, + "componentType": 5126, + "count": 59, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56508, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96228, + "componentType": 5126, + "count": 15, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56568, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 97728, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007465839385986, + 0.39800706505775452, + 0.12996619939804077, + 0.71552282571792603 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 56804, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96408, + "componentType": 5126, + "count": 42, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56972, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96912, + "componentType": 5126, + "count": 21, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57056, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 98672, + "componentType": 5126, + "count": 42, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516590654850006, + -0.3081190288066864 + ], + "min": [ + 0.92842525243759155, + -0.11126617342233658, + -0.17523984611034393, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 57224, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 97164, + "componentType": 5126, + "count": 59, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57460, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 97872, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57524, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 99344, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 57760, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98064, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57912, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98520, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57960, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 100288, + "componentType": 5126, + "count": 37, + "max": [ + 0.81515997648239136, + -0.2049533873796463, + -0.34477153420448303, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790059208869934 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 58108, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98664, + "componentType": 5126, + "count": 60, + "max": [ + 4.0978193283081055e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -3.5390257835388184e-08, + 0.25762265920639038, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58348, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 99384, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58440, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 100880, + "componentType": 5126, + "count": 60, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026337862014771, + -0.19707523286342621, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 58680, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 99660, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58936, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 100428, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58984, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 101840, + "componentType": 5126, + "count": 64, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076332747936249, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 59240, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 100572, + "componentType": 5126, + "count": 59, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101280, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59492, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 102864, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 59728, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101328, + "componentType": 5126, + "count": 55, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59948, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101988, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59984, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 103808, + "componentType": 5126, + "count": 55, + "max": [ + -0.098626755177974701, + 0.79780721664428711, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101212561130524, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 60204, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102096, + "componentType": 5126, + "count": 59, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60440, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102804, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60448, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 104688, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35181999206542969, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 60684, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102828, + "componentType": 5126, + "count": 41, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60848, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 103320, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60880, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 105632, + "componentType": 5126, + "count": 41, + "max": [ + 0.92845195531845093, + 0.11125475168228149, + 0.17524003982543945, + -0.30811873078346252 + ], + "min": [ + 0.92842668294906616, + 0.11104374378919601, + 0.17517001926898956, + -0.30815866589546204 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61044, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 103416, + "componentType": 5126, + "count": 59, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61280, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104124, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61300, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 106288, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104184, + "componentType": 5126, + "count": 38, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61688, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104640, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 107232, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477174282073975, + -0.41790032386779785 + ], + "min": [ + 0.81515991687774658, + 0.20495337247848511, + 0.34477171301841736, + -0.41790050268173218 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61888, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104784, + "componentType": 5126, + "count": 59, + "max": [ + 2.9802322387695312e-08, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + 7.4505805969238281e-09, + 0.25762245059013367, + 5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62124, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 105492, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62220, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 107840, + "componentType": 5126, + "count": 59, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 62456, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 105780, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62712, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 106548, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62800, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 108784, + "componentType": 5126, + "count": 64, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 63056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 106812, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 6.7055225372314453e-08, + 5.9604644775390625e-08 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63316, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 107592, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63332, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 109808, + "componentType": 5126, + "count": 65, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 63592, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 107640, + "componentType": 5126, + "count": 56, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -1.1379786002407855e-14, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63816, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 108312, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63872, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 110848, + "componentType": 5126, + "count": 46, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 64056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 108480, + "componentType": 5126, + "count": 65, + "max": [ + -3.4638958368304884e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -2.2351734685344127e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64316, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 109260, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64364, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 111584, + "componentType": 5126, + "count": 65, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698620909401143e-08, + -2.1549524831243616e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 64624, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 109404, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.36641579866409302, + 6.3282712403633923e-15 + ], + "min": [ + -6.2172489379008766e-15, + 0.36641570925712585, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64884, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 110184, + "componentType": 5126, + "count": 17, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64952, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 112624, + "componentType": 5126, + "count": 65, + "max": [ + 0.36187875270843506, + 1.7365229254551195e-08, + 8.7073068755216809e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65212, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 110388, + "componentType": 5126, + "count": 65, + "max": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "min": [ + -4.253541963095131e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65472, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111168, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65536, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 113664, + "componentType": 5126, + "count": 65, + "max": [ + 0.096756108105182648, + 1.6857502060929619e-08, + 9.8583271324059751e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -6.90242885070802e-09, + 9.7077325733607722e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65796, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111360, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65804, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111384, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65812, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 114704, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65820, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111408, + "componentType": 5126, + "count": 55, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 3.5179624546799459e-08 + ], + "min": [ + -7.9711917067015747e-08, + -5.0918995242454912e-08, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66040, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112068, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000011920928955, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000007152557373, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66088, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 114736, + "componentType": 5126, + "count": 55, + "max": [ + 0.56482315063476562, + 0.78602421283721924, + -0.12704811990261078, + -0.29326313734054565 + ], + "min": [ + 0.52877569198608398, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66308, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112212, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66316, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112236, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66324, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 115616, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66340, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112260, + "componentType": 5126, + "count": 55, + "max": [ + 1.5542553910563583e-09, + -8.6856246639399615e-09, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810762978595449e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66560, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112920, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66640, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 115680, + "componentType": 5126, + "count": 55, + "max": [ + -0.52772623300552368, + 0.78695201873779297, + -0.12602680921554565, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307946562767029 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66860, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113160, + "componentType": 5126, + "count": 2, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66868, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113184, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66876, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116560, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66892, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113208, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113712, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116624, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67076, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113736, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67084, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113760, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67092, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116656, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67100, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113784, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67108, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113808, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67116, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116688, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67124, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113832, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-09, + 0.1913716197013855, + 4.3073669075965881e-08 + ], + "min": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67384, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 114612, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67480, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116720, + "componentType": 5126, + "count": 65, + "max": [ + 0.0089846951887011528, + 0.034154176712036133, + 0.063492096960544586, + 0.99985557794570923 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67740, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 114900, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68000, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 115680, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68072, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 117760, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 68332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 115896, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + 1.862645149230957e-08, + 1.4156103134155273e-07, + 1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116352, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 118800, + "componentType": 5126, + "count": 38, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 1.9092109226903631e-08, + 1 + ], + "min": [ + 1.1641530406336642e-08, + -4.6566178690810034e-10, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 68652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116400, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.028223391622304916, + 4.0978193283081055e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68804, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116856, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68900, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 119408, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363913536072, + -0.058250229805707932, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.112343430519104, + -0.05825023353099823, + -0.038226868957281113, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117144, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.862645149230957e-08, + -1.2898817658424377e-07 + ], + "min": [ + -3.2596290111541748e-08, + -5.5879354476928711e-09, + -1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69204, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117600, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 120016, + "componentType": 5126, + "count": 38, + "max": [ + -1.8277201974115087e-08, + -6.0652368460978323e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117624, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + 0.045039981603622437, + -3.8184225559234619e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69516, + "componentType": 5126, + "count": 29, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118080, + "componentType": 5126, + "count": 29, + "max": [ + 1, + 1.0000008344650269, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69632, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 120624, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882647514343262, + -0.038419146090745926, + -9.6831150585785508e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882386744022369, + -0.038419149816036224, + -9.6853240393102169e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69784, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118428, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + 0.022519826889038086, + 8.2887709140777588e-08 + ], + "min": [ + -3.5390257835388184e-08, + 0.022519733756780624, + 7.8231096267700195e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69936, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118884, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69968, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 121232, + "componentType": 5126, + "count": 38, + "max": [ + 5.1781546517304378e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.0599925316419103e-07, + -9.3644507614953909e-07, + 2.3003670435173262e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118980, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70272, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 119436, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70344, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 121840, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803959548473358, + -0.038298316299915314, + -0.044083759188652039, + 0.98228931427001953 + ], + "min": [ + 0.17803825438022614, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70496, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 119652, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-08, + -8.5681676864624023e-08, + 2.0954757928848267e-09 + ], + "min": [ + -1.601874828338623e-07, + -1.2293457984924316e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70648, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120108, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 122448, + "componentType": 5126, + "count": 38, + "max": [ + 3.9581204980265738e-09, + 2.2351741790771484e-08, + 5.9430025345363902e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.7345882952213287e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70816, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120156, + "componentType": 5126, + "count": 38, + "max": [ + -5.9604644775390625e-08, + 0.033446535468101501, + -3.3527612686157227e-08 + ], + "min": [ + -7.1711838245391846e-08, + 0.033446453511714935, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70968, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120612, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 123056, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510172635316849, + 0.01642073318362236, + -0.038739234209060669, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120876, + "componentType": 5126, + "count": 38, + "max": [ + -1.0430812835693359e-07, + 1.0523945093154907e-07, + 3.8184225559234619e-08 + ], + "min": [ + -1.1315569281578064e-07, + 3.7252902984619141e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121332, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 123664, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132224154857113e-10, + -2.607702676016288e-08, + 2.8347127312144949e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -2.7939670133036998e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121380, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -5.9604644775390625e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744627058506012, + -6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71680, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121836, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 124272, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518191993236542, + 0.0088785169646143913, + -0.057382568717002869, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382576167583466, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121932, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 0.020872212946414948, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72016, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122388, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 124880, + "componentType": 5126, + "count": 38, + "max": [ + 1.2572852980952121e-08, + -9.4994888399924093e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + 4.6566119848989729e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122436, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72336, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122892, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 125488, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063956449739634991, + 0.6579899787902832, + 0.26252901554107666, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123084, + "componentType": 5126, + "count": 38, + "max": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.1874362826347351e-07 + ], + "min": [ + -1.203734427690506e-07, + 4.0978193283081055e-08, + -1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72704, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123540, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 126096, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.1641543284923728e-10, + -7.2875991463661194e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72904, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123684, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73080, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124212, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73180, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 126704, + "componentType": 5126, + "count": 44, + "max": [ + 0.17804411053657532, + -0.038269970566034317, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124512, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73508, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124968, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 127408, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73724, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125160, + "componentType": 5126, + "count": 22, + "max": [ + 0.0073303328827023506, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303282260894775, + 0.34354427456855774, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73812, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125424, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 128016, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125448, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + -1.4621764421463013e-07, + -1.1175870895385742e-08 + ], + "min": [ + -2.1886080503463745e-08, + -1.7136335372924805e-07, + -1.1041993275284767e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74124, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125904, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 128624, + "componentType": 5126, + "count": 38, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.3061951398849487e-08, + 1 + ], + "min": [ + -4.71482053399086e-09, + 3.119930624961853e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125952, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + -2.2351741790771484e-08 + ], + "min": [ + -1.0384246706962585e-07, + 0.032196007668972015, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74444, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 126408, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000004768371582, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 129232, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476891040802002, + -0.045752901583909988, + -0.025043418630957603, + 0.99704056978225708 + ], + "min": [ + 0.056476559489965439, + -0.045752905309200287, + -0.025043440982699394, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 126576, + "componentType": 5126, + "count": 38, + "max": [ + -6.9849193096160889e-08, + 1.7927959561347961e-07, + -3.166496753692627e-08 + ], + "min": [ + -8.3819031715393066e-08, + 1.5366822481155396e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74804, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127032, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 129840, + "componentType": 5126, + "count": 38, + "max": [ + -9.6479206845856424e-09, + -2.3166652596273707e-08, + -1.4173568096964573e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.3527619791584584e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127128, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 3.7252902984619141e-08 + ], + "min": [ + 5.9371814131736755e-09, + 0.049540437757968903, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75140, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127584, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 130448, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846226453781128, + -0.085242278873920441, + -0.013570735231041908, + 0.98919987678527832 + ], + "min": [ + 0.11846192181110382, + -0.085242293775081635, + -0.013570744544267654, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 75356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127776, + "componentType": 5126, + "count": 38, + "max": [ + 8.2887709140777588e-08, + 0.024770038202404976, + 7.4505805969238281e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.024770006537437439, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128232, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 131056, + "componentType": 5126, + "count": 38, + "max": [ + -5.8754807241712115e-07, + 9.4032299102764227e-07, + -1.4674151316285133e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 75676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128280, + "componentType": 5126, + "count": 38, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75828, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128736, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 131664, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257198959589005, + 0.97361528873443604 + ], + "min": [ + 0.21749080717563629, + -0.069006666541099548, + -0.0030257296748459339, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129024, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -1.5133991837501526e-07, + 2.9802322387695312e-08, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76228, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129480, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 132272, + "componentType": 5126, + "count": 38, + "max": [ + 4.6740737502659613e-08, + -6.7520886659622192e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.6542688047470619e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76412, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129576, + "componentType": 5126, + "count": 52, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76620, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130200, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 0.9999997615814209, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76716, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 132880, + "componentType": 5126, + "count": 52, + "max": [ + 0.21750432252883911, + -0.068965867161750793, + -0.0028431480750441551, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575764831155539, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130488, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326391905546188 + ], + "min": [ + 0.023247208446264267, + 0.34059685468673706, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77076, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130944, + "componentType": 5126, + "count": 26, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.9999995231628418, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 133712, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811855673789978, + -0.13169907033443451, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811857163906097, + -0.13169918954372406, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 77332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131256, + "componentType": 5126, + "count": 38, + "max": [ + -6.4377672970294952e-08, + 2.2351741790771484e-08, + 7.4505805969238281e-08 + ], + "min": [ + -2.0116567611694336e-07, + -3.3120159059762955e-08, + 7.6106516644358635e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77484, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131712, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 134320, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505801528346183e-09, + -9.3132266343332049e-09, + -7.4505805969238281e-09, + 1 + ], + "min": [ + 6.9849184214376692e-09, + -1.862645326866641e-08, + -1.3969838619232178e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 77644, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131736, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-07, + 0.031801007688045502, + -3.9115548133850098e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800948083400726, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77796, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132192, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 134928, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024177730083466, + -0.10080224275588989, + -0.057818155735731125, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080226510763168, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132468, + "componentType": 5126, + "count": 38, + "max": [ + 1.6391277313232422e-07, + 2.7706846594810486e-08, + -2.9243528842926025e-07 + ], + "min": [ + 5.3085386753082275e-08, + -2.2351741790771484e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132924, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 135536, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + -3.3178371161568521e-09, + -3.3993273973464966e-08, + 1 + ], + "min": [ + -8.8475644588470459e-09, + -2.0489096641540527e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132948, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.5832483768463135e-08, + 0.044816639274358749, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78504, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 133404, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 136144, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152609169483185, + -0.052601058036088943, + -0.024043351411819458, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601061761379242, + -0.024043373763561249, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 133680, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-07, + 0.022408418357372284, + 1.1033262126147747e-07 + ], + "min": [ + -1.5669502317905426e-07, + 0.022408399730920792, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78900, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134136, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 136752, + "componentType": 5126, + "count": 38, + "max": [ + -6.2002783351999824e-07, + 9.6263806881324854e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.2852556109428406e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79068, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134184, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79220, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134640, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 137360, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130188584327698, + -0.10888328403234482, + 0.021744716912508011, + 0.9531741738319397 + ], + "min": [ + 0.2813015878200531, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79412, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134760, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + -1.6763806343078613e-08, + 1.6763806343078613e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-08, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79564, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135216, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 137968, + "componentType": 5126, + "count": 38, + "max": [ + 5.9750178138529009e-08, + -4.8428788090859598e-08, + -3.3527616238870905e-08, + 1 + ], + "min": [ + 3.2130639482375045e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79748, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135312, + "componentType": 5126, + "count": 43, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79920, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79976, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 138576, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135996, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954514354467392, + 0.33536890149116516, + -0.0064071603119373322 + ], + "min": [ + 0.034954499453306198, + 0.33536884188652039, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80300, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 136452, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999922513961792, + 0.99999934434890747, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 139264, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214220762252808, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701881587505341, + -0.22579626739025116, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 136860, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 2.0116567611694336e-07 + ], + "min": [ + 2.9802322387695312e-08, + 1.4901161193847656e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80740, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137316, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 139872, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505814851022478e-09, + 2.0489100194254206e-08, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.6542700481968495e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137412, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + 5.9604644775390625e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.022592496126890182, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81076, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137868, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81124, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 140480, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399157166481018, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591923415660858, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138012, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + -1.1175870895385742e-08, + 2.9802322387695312e-08 + ], + "min": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138468, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 141088, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + 4.6566133171666024e-09, + -1.0244549208948683e-08, + 1 + ], + "min": [ + -1.4901161193847656e-08, + -2.0023437130589627e-08, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138516, + "componentType": 5126, + "count": 38, + "max": [ + 1.0803341865539551e-07, + 0.027876397594809532, + 3.9581209421157837e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876261621713638, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81748, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138972, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 141696, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988000005483627, + -0.020971952006220818, + 0.99849694967269897 + ], + "min": [ + 0.041517928242683411, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139236, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.013938168063759804, + -4.8428773880004883e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938087970018387, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139692, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 142304, + "componentType": 5126, + "count": 38, + "max": [ + 5.2968971431255341e-08, + -1.3364477524646645e-07, + 4.5634802603444768e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.4482063193099748e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 82324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139788, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82476, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140244, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 142912, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057187080383301, + -0.17872533202171326, + 0.015338578261435032, + 0.91919606924057007 + ], + "min": [ + 0.35057181119918823, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 82692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140436, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + -5.9604644775390625e-08, + -8.1956386566162109e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140892, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 143520, + "componentType": 5126, + "count": 38, + "max": [ + -4.3510230085530566e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "min": [ + -5.9604644775390625e-08, + -3.5390257835388184e-08, + -3.9115551686563776e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140940, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83164, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 141396, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 144128, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + -0.17872501909732819, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + -0.17872503399848938, + 0.015338657423853874, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 141636, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579222798347473, + 0.32914415001869202, + 0.0039985515177249908 + ], + "min": [ + 0.044579200446605682, + 0.32914406061172485, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83548, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142092, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 144736, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570001721382141, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749421834945679, + -0.27479112148284912, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142236, + "componentType": 5126, + "count": 38, + "max": [ + 1.0756775736808777e-07, + 4.4330954551696777e-07, + 1.4994293451309204e-07 + ], + "min": [ + 7.4505805969238281e-09, + 4.246830940246582e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83900, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 145344, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489093088826849e-08, + 1.1362133278680631e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.1175870184843006e-07, + -1.303851338008144e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 84068, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142740, + "componentType": 5126, + "count": 56, + "max": [ + 1.862645149230957e-08, + 0.25792211294174194, + 2.0279549062252045e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.25792208313941956, + -6.9849193096160889e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84292, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 143412, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84348, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 145952, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319517910480499, + 0.787913978099823, + 0.084729395806789398, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 84572, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 143580, + "componentType": 5126, + "count": 62, + "max": [ + 1.1920928955078125e-07, + 0.12896108627319336, + -2.8870999813079834e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896065413951874, + -3.6787241697311401e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84820, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 144324, + "componentType": 5126, + "count": 47, + "max": [ + 0.99999982118606567, + 1.0000044107437134, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85008, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 146848, + "componentType": 5126, + "count": 62, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85256, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 144888, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.1392713338136673, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85408, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145344, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000008344650269, + 1.0000020265579224, + 1.0000020265579224 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85544, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 147840, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531652569770813, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401045978069305, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85696, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145752, + "componentType": 5126, + "count": 20, + "max": [ + 0.044326618313789368, + -0.11071401834487915, + 0.071930147707462311 + ], + "min": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85776, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145992, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.99999672174453735, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85840, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 148448, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531584024429321, + -0.090401113033294678, + 0.19322757422924042, + 0.94302952289581299 + ], + "min": [ + -0.25531637668609619, + -0.090401455760002136, + 0.19322720170021057, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85992, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 146184, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-07, + -3.3527612686157227e-08, + 4.3958425521850586e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86160, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 146688, + "componentType": 5126, + "count": 42, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999690055847168, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86328, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 149056, + "componentType": 5126, + "count": 42, + "max": [ + 3.6647594470196054e-07, + -6.0908479326826637e-07, + 5.8510431699687615e-07, + 1 + ], + "min": [ + -1.7876758420243277e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 86496, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147192, + "componentType": 5126, + "count": 46, + "max": [ + 7.0780515670776367e-08, + 0.27854281663894653, + 2.0815059542655945e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.27854278683662415, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86680, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147744, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86696, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 149728, + "componentType": 5126, + "count": 46, + "max": [ + 0.25531500577926636, + 0.12245099991559982, + -0.17468461394309998, + 0.97297227382659912 + ], + "min": [ + 0.088408268988132477, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 86880, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147792, + "componentType": 5126, + "count": 42, + "max": [ + 6.7055225372314453e-08, + 0.13927170634269714, + 3.2037496566772461e-07 + ], + "min": [ + -1.1102230246251565e-16, + 0.13927145302295685, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87048, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148296, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000003576278687, + 0.99999874830245972, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87100, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 150464, + "componentType": 5126, + "count": 42, + "max": [ + -1.5273697329121205e-07, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.116192947847594e-06, + -8.257104127551429e-06, + -1.1362142231519101e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 87268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148452, + "componentType": 5126, + "count": 38, + "max": [ + -0.027315661311149597, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975754089653492 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87420, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148908, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000008344650269 + ], + "min": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87468, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 151136, + "componentType": 5126, + "count": 56, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 87692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149052, + "componentType": 5126, + "count": 38, + "max": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 5.0632388592930511e-07 + ], + "min": [ + -6.4464984461665154e-08, + 1.7578713595867157e-08, + 4.8081545855893637e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149508, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 152032, + "componentType": 5126, + "count": 38, + "max": [ + -1.6952979020601333e-09, + 8.3324273703055951e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -7.004929081233513e-09, + 8.2272904933233804e-08, + 5.2154064178466797e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88012, + "componentType": 5126, + "count": 35, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149556, + "componentType": 5126, + "count": 35, + "max": [ + 0.023130057379603386, + 0.26697862148284912, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88152, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149976, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88240, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 152640, + "componentType": 5126, + "count": 37, + "max": [ + -0.69586646556854248, + -0.39777597784996033, + -0.29703006148338318, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150240, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + 3.3527612686157227e-08, + 1.4901161193847656e-08, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150696, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 153232, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-08, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.2456439435482025e-08, + 9.3132257461547852e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150744, + "componentType": 5126, + "count": 38, + "max": [ + 7.1013346314430237e-08, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223380446434021, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88860, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151200, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1, + 1.0000004768371582 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 153840, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234384030103683, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234383285045624, + 0.058250226080417633, + 0.038226824253797531, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89080, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151404, + "componentType": 5126, + "count": 38, + "max": [ + 1.6088597476482391e-07, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + -2.2351741790771484e-08, + -4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89232, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151860, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 154448, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7869751900434494e-08, + -1.8102582544088364e-08, + -6.8685039877891541e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151956, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.045039966702461243, + 4.8894435167312622e-08 + ], + "min": [ + -9.0338289737701416e-08, + 0.045039962977170944, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89568, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152412, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89600, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 155056, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882900834083557, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882878482341766, + 0.038419175893068314, + 9.6838331955950707e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152508, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "min": [ + -1.6717240214347839e-07, + 0.022520110011100769, + 1.2293457984924316e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89904, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152964, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89920, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 155664, + "componentType": 5126, + "count": 38, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0628793606647378e-07, + 1 + ], + "min": [ + 6.3786865212023258e-07, + 9.4692217089686892e-07, + -2.0675361156463623e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90072, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153012, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90224, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153468, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000004768371582, + 1, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 156272, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803941667079926, + 0.038298342376947403, + 0.044083788990974426, + 0.98228937387466431 + ], + "min": [ + 0.17803771793842316, + 0.038298297673463821, + 0.044083651155233383, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153780, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + -7.0780515670776367e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.1175870895385742e-08, + -1.3411045074462891e-07, + 2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154236, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 156880, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252896323280993e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -4.0745353757642988e-09, + -2.8638160287641767e-08, + -7.6950513516749197e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154284, + "componentType": 5126, + "count": 38, + "max": [ + 8.5681676864624023e-08, + 0.033446446061134338, + -7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.033446401357650757, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90952, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154740, + "componentType": 5126, + "count": 19, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 157488, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510617807507515, + -0.016420755535364151, + 0.038739204406738281, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.03873918205499649, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154968, + "componentType": 5126, + "count": 38, + "max": [ + 9.9651515483856201e-08, + -2.9802322387695312e-08, + -8.6612999439239502e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3317912817001343e-07, + -2.3283064365386963e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155424, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 158096, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 2.514570951461792e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -6.7520899982298488e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155472, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.041744641959667206, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91652, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155928, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 158704, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518230736255646, + -0.0088785076513886452, + 0.057382617145776749, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785141706466675, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156108, + "componentType": 5126, + "count": 38, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872443914413452, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92016, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156564, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 159312, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.0244548320770264e-08, + 1 + ], + "min": [ + -5.7742006731587026e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156660, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92352, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157116, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92392, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 159920, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157236, + "componentType": 5126, + "count": 38, + "max": [ + 6.4261257648468018e-08, + -2.3283064365386963e-08, + -3.5762786865234375e-07 + ], + "min": [ + -3.166496753692627e-08, + -6.7055225372314453e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92692, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 160512, + "componentType": 5126, + "count": 38, + "max": [ + 1.6705596905808306e-08, + 1.5599653124809265e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2596290111541748e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157740, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93012, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158196, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 161120, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803849279880524, + 0.038296066224575043, + 0.044083882123231888, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158520, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93424, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158976, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93476, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 161728, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063958112150430679, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.2625291645526886, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159132, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303841054439545, + 0.34354394674301147, + -0.021197730675339699 + ], + "min": [ + -0.0073304995894432068, + 0.34354394674301147, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159588, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 162320, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725982069969177, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159636, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 2.1792948246002197e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94096, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160092, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94112, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 162928, + "componentType": 5126, + "count": 38, + "max": [ + 3.0850066945475874e-09, + 2.5611370801925659e-09, + 1.6181733286657618e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 94264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160140, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 7.0780515670776367e-08 + ], + "min": [ + -1.7858110368251801e-07, + 0.032196007668972015, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94416, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160596, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000005960464478, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94512, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 163536, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043465197086334, + 0.99704056978225708 + ], + "min": [ + 0.056476563215255737, + 0.045752868056297302, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 94664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160884, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 8.5681676864624023e-08 + ], + "min": [ + -8.6147338151931763e-08, + -8.1956386566162109e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94816, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161340, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94848, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 164144, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969840839678227e-09, + 4.526009789174168e-08, + -2.9453081751285026e-08, + 1 + ], + "min": [ + -1.5133994057947575e-09, + 3.5390264940815541e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161436, + "componentType": 5126, + "count": 38, + "max": [ + 8.149072527885437e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540486186742783, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95152, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161892, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 164752, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570722192525864, + 0.98919987678527832 + ], + "min": [ + 0.11846189945936203, + 0.08524225652217865, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95360, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162060, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-08, + 0.024770209565758705, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770196527242661, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95512, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162516, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 165360, + "componentType": 5126, + "count": 38, + "max": [ + -5.8393925428390503e-07, + -9.3656132094110944e-07, + 1.9185243615993386e-07, + 1 + ], + "min": [ + -5.9235026128590107e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95680, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162564, + "componentType": 5126, + "count": 38, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95832, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163020, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 165968, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749170124530792, + 0.069006718695163727, + 0.0030257171019911766, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006636738777161, + 0.0030257017351686954, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163188, + "componentType": 5126, + "count": 38, + "max": [ + 7.7299773693084717e-08, + 1.601874828338623e-07, + 5.005858838558197e-08 + ], + "min": [ + 5.4948031902313232e-08, + 4.8428773880004883e-08, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96192, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163644, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 166576, + "componentType": 5126, + "count": 38, + "max": [ + -1.0710210496256423e-08, + 1.4435499906539917e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -1.2470992238888812e-08, + 3.7252898543727042e-09, + -6.4319469750273583e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96360, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163692, + "componentType": 5126, + "count": 65, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96620, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 164472, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96672, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 167184, + "componentType": 5126, + "count": 65, + "max": [ + 0.21750125288963318, + 0.069091320037841797, + 0.003196188248693943, + 0.97362369298934937 + ], + "min": [ + 0.2174590677022934, + 0.068967774510383606, + 0.002856898820027709, + 0.973613440990448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 164628, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247243836522102, + 0.34059679508209229, + -0.015326134860515594 + ], + "min": [ + -0.023247748613357544, + 0.34059673547744751, + -0.015326384454965591 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97084, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165084, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999958276748657, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999922513961792, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 168224, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811858654022217, + 0.13169935345649719, + 0.16719585657119751, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169923424720764, + 0.16719573736190796, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 97336, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165384, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-08, + 2.2069434635341167e-07, + 1.3411045074462891e-07 + ], + "min": [ + -1.9371509552001953e-07, + 1.5646219253540039e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97488, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165840, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 168832, + "componentType": 5126, + "count": 38, + "max": [ + -8.8475626824902065e-09, + 2.5145704185547402e-08, + 3.7252894102834944e-09, + 1 + ], + "min": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 97656, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165888, + "componentType": 5126, + "count": 38, + "max": [ + 6.8685039877891541e-09, + 0.031801000237464905, + 5.7741999626159668e-08 + ], + "min": [ + -2.7939679458910405e-09, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97808, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166344, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 169440, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228000879288, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080226510763168, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166512, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-08, + 3.5390257835388184e-08, + 5.029141902923584e-08 + ], + "min": [ + -8.754432201385498e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98168, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166968, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 170048, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -1.4784747648377561e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167064, + "componentType": 5126, + "count": 38, + "max": [ + -2.514570951461792e-08, + 0.044816732406616211, + 6.3329935073852539e-08 + ], + "min": [ + -2.3096799850463867e-07, + 0.04481661319732666, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98504, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167520, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 170656, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151916265487671, + 0.052601084113121033, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151901364326477, + 0.05260106548666954, + 0.024043364450335503, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167760, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02240833081305027, + 2.4400651454925537e-07 + ], + "min": [ + -2.360902726650238e-07, + 0.022408241406083107, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168216, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 171264, + "componentType": 5126, + "count": 38, + "max": [ + -6.493646651506424e-07, + -9.4700953923165798e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168264, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99208, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168720, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 171872, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130200505256653, + 0.10888329893350601, + -0.021744724363088608, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + 0.10888323932886124, + -0.021744729951024055, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99424, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168912, + "componentType": 5126, + "count": 38, + "max": [ + 7.6368451118469238e-08, + -7.4505805969238281e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99576, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 169368, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99592, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 172480, + "componentType": 5126, + "count": 38, + "max": [ + 1.164161822497789e-10, + 3.1199313355045888e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.4028048944680904e-08, + 2.1012969142475413e-08, + -1.8626455045023249e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99744, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 169416, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99952, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170040, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100008, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 173088, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130325675010681, + 0.10890431702136993, + -0.021636079996824265, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.1088700145483017, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100216, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170208, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954965114593506, + 0.33536875247955322, + -0.0064073465764522552 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100368, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170664, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 173920, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214213311672211, + 0.16701884567737579, + 0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + 0.16701869666576385, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100604, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170916, + "componentType": 5126, + "count": 38, + "max": [ + 3.9115548133850098e-08, + 1.6391277313232422e-07, + 1.5646219253540039e-07 + ], + "min": [ + -6.7055225372314453e-08, + 1.0803341865539551e-07, + 1.4062970876693726e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100756, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 174528, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566217548615896e-10, + -7.4505814851022478e-09, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + -3.7252907425511239e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171420, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-08, + 0.022592537105083466, + -1.3504177331924438e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592434659600258, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101076, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171876, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 175136, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399183243513107, + 0.028591984882950783, + 0.99515920877456665 + ], + "min": [ + 0.082881681621074677, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172104, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 6.3329935073852539e-08, + -6.28642737865448e-08 + ], + "min": [ + -4.4703483581542969e-08, + -2.7939677238464355e-08, + -1.9744038581848145e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101456, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172560, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 175744, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244550097127103e-08, + 1.1175871783564162e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -1.4901164746561335e-08, + -4.1909529180372829e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172608, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876298874616623, + 5.4016709327697754e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101776, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173064, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 176352, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518155485391617, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + 0.028988013043999672, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173220, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.013938102871179581, + 9.5926225185394287e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.013938065618276596, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102132, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173676, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 176960, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -4.0745366192140864e-08, + 5.8091245591640472e-08, + -4.0046870708465576e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 102292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173700, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102444, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174156, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 177568, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + 0.17872521281242371, + -0.015338596887886524, + 0.91919606924057007 + ], + "min": [ + 0.35057175159454346, + 0.17872513830661774, + -0.01533864438533783, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 102692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174444, + "componentType": 5126, + "count": 38, + "max": [ + 1.3783574104309082e-07, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + -2.9802322387695312e-08, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102844, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174900, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 178176, + "componentType": 5126, + "count": 38, + "max": [ + 4.4819907785154101e-09, + -1.7695132470407771e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + -1.187436549088261e-08, + -2.4214388716359281e-08, + -1.862645149230957e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174996, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103180, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 175452, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 178784, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338590368628502, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872487008571625, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103412, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 175692, + "componentType": 5126, + "count": 38, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579751789569855, + 0.32914397120475769, + 0.00399823859333992 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103564, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176148, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000008344650269 + ], + "min": [ + 0.99999970197677612, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 179392, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + 0.18749427795410156, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570015132427216, + 0.18749421834945679, + 0.27479088306427002, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176436, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 2.7194619178771973e-07, + 1.7136335372924805e-07 + ], + "min": [ + -2.3189932107925415e-07, + 1.4156103134155273e-07, + 1.0873191058635712e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103964, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176892, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 180000, + "componentType": 5126, + "count": 38, + "max": [ + 3.5390254282674505e-08, + -1.1175874448099421e-08, + -6.3329935073852539e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 104148, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176988, + "componentType": 5126, + "count": 56, + "max": [ + -1.0244548320770264e-08, + 0.25792214274406433, + 1.3271346688270569e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 104372, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 177660, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999922513961792, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 104520, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 180608, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 104744, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 178104, + "componentType": 5126, + "count": 64, + "max": [ + 1.2479722499847412e-07, + 0.12896072864532471, + 6.7800283432006836e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105000, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 178872, + "componentType": 5126, + "count": 56, + "max": [ + 0.99999940395355225, + 1.0000060796737671, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 1.0000026226043701, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105224, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 181504, + "componentType": 5126, + "count": 64, + "max": [ + 2.9940034096398449e-07, + 0.88032650947570801, + 2.0891943677270319e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 105480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 179544, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.13927134871482849, + -1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105632, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180000, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999773502349854, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 182528, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401254594326019, + 0.19322672486305237, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 105856, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180216, + "componentType": 5126, + "count": 38, + "max": [ + -0.044326536357402802, + -0.11071467399597168, + 0.071930289268493652 + ], + "min": [ + -0.044326610863208771, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106008, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180672, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 183136, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531512498855591, + 0.090401232242584229, + -0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + -0.25531548261642456, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 106184, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + -1.4901161193847656e-08, + 4.9173831939697266e-07 + ], + "min": [ + -3.7252902984619141e-08, + -2.9802322387695312e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106360, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 181272, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999690055847168, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106440, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 183744, + "componentType": 5126, + "count": 44, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631596620121854e-07, + -2.9895460329498746e-07, + -7.9954185139285983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 106616, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 181512, + "componentType": 5126, + "count": 56, + "max": [ + 3.7252902984619141e-08, + 0.27854272723197937, + 6.9383531808853149e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106840, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182184, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106860, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 184448, + "componentType": 5126, + "count": 56, + "max": [ + 0.25531500577926636, + -0.090401507914066315, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571906089782715, + -0.12242159992456436, + 0.17470520734786987, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107084, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182244, + "componentType": 5126, + "count": 42, + "max": [ + -6.3329935073852539e-08, + 0.13927134871482849, + 4.7869980335235596e-07 + ], + "min": [ + -2.6822090148925781e-07, + 0.1392713338136673, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107252, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182748, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999910593032837, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107348, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 185344, + "componentType": 5126, + "count": 42, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0628018571878783e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107516, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183036, + "componentType": 5126, + "count": 56, + "max": [ + 0.027315612882375717, + 0.33446061611175537, + 0.019757704809308052 + ], + "min": [ + 0.027315452694892883, + 0.33446058630943298, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107740, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183708, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107772, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 186016, + "componentType": 5126, + "count": 56, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183804, + "componentType": 5126, + "count": 38, + "max": [ + 6.3060724642127752e-08, + 8.3819031715393066e-09, + 2.997039700858295e-07 + ], + "min": [ + 1.6763806343078613e-08, + -7.4505805969238281e-09, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108148, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184260, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 186912, + "componentType": 5126, + "count": 38, + "max": [ + -3.8926355472312935e-09, + -3.2074240152724087e-08, + 6.7055211161459738e-08, + 1 + ], + "min": [ + -6.9740049291056039e-09, + -5.3645635489374399e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 108332, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184356, + "componentType": 5126, + "count": 21, + "max": [ + -0.023130089044570923, + 0.26697880029678345, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108416, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184608, + "componentType": 5126, + "count": 20, + "max": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108496, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 187520, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703021049499512, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 108648, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184848, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108908, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 185628, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108980, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 188128, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 109240, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 185844, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 109500, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 186624, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 109584, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 189168, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 109844, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 186876, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110104, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 187656, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110188, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 190208, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 110448, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 187908, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110708, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 188688, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 191248, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 188916, + "componentType": 5126, + "count": 38, + "max": [ + -2.3865140974521637e-09, + -1.3605159665530664e-08, + -2.8113703365306719e-08 + ], + "min": [ + -2.0985442716892067e-08, + -3.5390257835388184e-08, + -3.0733644962310791e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 189372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 192288, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.885928213596344e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.5691402782967998e-08, + 1.8663602219248787e-08, + 8.7311442797943783e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111364, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 189420, + "componentType": 5126, + "count": 56, + "max": [ + 7.6397549397810849e-10, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.8160790205001831e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111588, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190092, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111636, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 192896, + "componentType": 5126, + "count": 56, + "max": [ + 0.0025766722392290831, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896294593811035, + -0.37012138962745667, + -0.0056022708304226398 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190236, + "componentType": 5126, + "count": 38, + "max": [ + -5.50062395632267e-09, + 2.1420419216156006e-08, + -2.6542693376541138e-08 + ], + "min": [ + -5.8207660913467407e-09, + -6.5192580223083496e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112012, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 193792, + "componentType": 5126, + "count": 38, + "max": [ + -5.2322903343338112e-08, + 7.1711816929109773e-08, + 1.5425025701176764e-09, + 1 + ], + "min": [ + -5.8847923867233476e-08, + 7.1333474238599592e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190740, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.47875440120697021, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875437140464783, + -9.406358003616333e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191196, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 194400, + "componentType": 5126, + "count": 38, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115009218454361, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191244, + "componentType": 5126, + "count": 38, + "max": [ + 1.2526288628578186e-07, + 0.23937708139419556, + 4.5634806156158447e-08 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937705159187317, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112652, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191700, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 195008, + "componentType": 5126, + "count": 38, + "max": [ + 1.6479643250022491e-07, + 0.039239592850208282, + 3.1983549320102611e-07, + 0.99922984838485718 + ], + "min": [ + 1.1330482152516197e-07, + 0.039239473640918732, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191772, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278387308120728, + 3.5390257835388184e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.21278376877307892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112980, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192228, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 195616, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + 0.18448330461978912, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897864580154419, + 0.18448325991630554, + 0.78801393508911133, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113148, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192276, + "componentType": 5126, + "count": 32, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323383241891861 + ], + "min": [ + -0.15143668651580811, + 0.084600687026977539, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113276, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192660, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 196224, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + -0.18448324501514435, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.27897855639457703, + -0.1844833642244339, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113444, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192708, + "componentType": 5126, + "count": 40, + "max": [ + 1.4156103134155273e-07, + -8.9406967163085938e-08, + 8.2072801887989044e-09 + ], + "min": [ + 2.2584572434425354e-08, + -1.4156103134155273e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113604, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193188, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113636, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 196832, + "componentType": 5126, + "count": 40, + "max": [ + 2.5826739147305489e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.210719435817964e-08, + -2.0448352699986572e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113796, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193284, + "componentType": 5126, + "count": 56, + "max": [ + 4.0978193283081055e-08, + 0.42556756734848022, + 6.1467289924621582e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.42556756734848022, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114020, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193956, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114052, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 197472, + "componentType": 5126, + "count": 56, + "max": [ + -0.20713318884372711, + 0.28850477933883667, + 0.78801411390304565, + 0.54963225126266479 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 114276, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194052, + "componentType": 5126, + "count": 45, + "max": [ + 7.0780515670776367e-08, + 0.21278397738933563, + 1.862645149230957e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.21278393268585205, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114456, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194592, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114564, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 198368, + "componentType": 5126, + "count": 45, + "max": [ + -2.2351743567128324e-08, + 1.0408691650809487e-06, + -1.415610881849716e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 114744, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194916, + "componentType": 5126, + "count": 5, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957687139511108, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114764, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194976, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114800, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 199088, + "componentType": 5126, + "count": 55, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53590929508209229, + 0.75361925363540649, + -0.15842762589454651, + -0.34606358408927917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195084, + "componentType": 5126, + "count": 38, + "max": [ + -1.2259971526873414e-07, + -3.3978210467466852e-08, + -4.0508190579657821e-08 + ], + "min": [ + -1.2464650467336469e-07, + -7.3088671115328907e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115172, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195540, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 199968, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038521373687217e-08, + -9.4372563097522288e-09, + -3.5529088004970788e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372634151795864e-09, + -3.5531616537909372e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115332, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195564, + "componentType": 5126, + "count": 56, + "max": [ + 1.8873834051191807e-08, + 0.31343457102775574, + -1.2994860298931599e-08 + ], + "min": [ + 1.6647391021251678e-08, + 0.31343454122543335, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115556, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196236, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115604, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 200576, + "componentType": 5126, + "count": 56, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210078943520784, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195724790915847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196380, + "componentType": 5126, + "count": 38, + "max": [ + 1.0256189852952957e-07, + 1.1175870895385742e-07, + 3.2043317332863808e-08 + ], + "min": [ + 8.1534381024539471e-08, + 1.0547228157520294e-07, + -1.8699211068451405e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115980, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196836, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 201472, + "componentType": 5126, + "count": 38, + "max": [ + -1.8806686763461755e-10, + -6.7208020482212305e-08, + -2.9103830456733704e-09, + 1 + ], + "min": [ + -7.6639707913273014e-09, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 116148, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196884, + "componentType": 5126, + "count": 56, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + -1.0011717677116394e-08, + 0.47875422239303589, + -6.8859662860631943e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116372, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 197556, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116420, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 202080, + "componentType": 5126, + "count": 56, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 116644, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 197700, + "componentType": 5126, + "count": 56, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 1.9234721548855305e-07 + ], + "min": [ + 3.4924596548080444e-09, + 0.23937715590000153, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116868, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 198372, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116964, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 202976, + "componentType": 5126, + "count": 56, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -4.9444201977166813e-07, + -0.039239216595888138, + 1.7011343800277245e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 198660, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.21278372406959534, + 4.4703483581542969e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117340, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199116, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 203872, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448299169540405, + -0.78801417350769043, + 0.51688551902770996 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801423311233521, + 0.51688545942306519 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117508, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199164, + "componentType": 5126, + "count": 27, + "max": [ + 0.15143662691116333, + 0.084600932896137238, + -0.12323376536369324 + ], + "min": [ + 0.15143661201000214, + 0.084600836038589478, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199488, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 204480, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.2789786159992218, + 0.18448303639888763, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199584, + "componentType": 5126, + "count": 38, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 4.2899046093225479e-08 + ], + "min": [ + 3.4226104617118835e-08, + -6.5192580223083496e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117952, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200040, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 205088, + "componentType": 5126, + "count": 38, + "max": [ + 2.4866312742233276e-07, + 1.0515211101846944e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.3559543649298575e-07, + 9.3830728076227388e-08, + 7.6863202025378996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200232, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556744813919067, + 4.4703483581542969e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118320, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200688, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118336, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 205696, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688563823699951 + ], + "min": [ + -0.2789786159992218, + -0.18448293209075928, + -0.78801417350769043, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118488, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200736, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 0.21278370916843414, + 3.166496753692627e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.2127835750579834, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118640, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201192, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 206304, + "componentType": 5126, + "count": 38, + "max": [ + 2.3003666171916848e-07, + 5.58793855631734e-09, + -7.450577932388569e-09, + 1 + ], + "min": [ + 1.0640362546610049e-07, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118888, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201480, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118920, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201576, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118960, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 206912, + "componentType": 5126, + "count": 55, + "max": [ + -0.53533452749252319, + 0.76489174365997314, + -0.089343994855880737, + 0.34695103764533997 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 119180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201696, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119440, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 202476, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119516, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 207792, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 119776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 202704, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119928, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 203160, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119984, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 208832, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 120016, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 203328, + "componentType": 5126, + "count": 56, + "max": [ + 4.1058228816837072e-08, + 1.4901161193847656e-08, + 3.457535058259964e-07 + ], + "min": [ + -7.4505805969238281e-08, + -6.5600033849477768e-08, + 6.6924258135259151e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120240, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 204000, + "componentType": 5126, + "count": 47, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120428, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 208960, + "componentType": 5126, + "count": 56, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 120652, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 204564, + "componentType": 5126, + "count": 65, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120912, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 205344, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120928, + "componentType": 5126, + "count": 53, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 209856, + "componentType": 5126, + "count": 53, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229209542274475, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 121140, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 205392, + "componentType": 5126, + "count": 56, + "max": [ + 2.384185791015625e-07, + 5.9604644775390625e-08, + 1.544831320643425e-07 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121364, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 206064, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121428, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 210704, + "componentType": 5126, + "count": 56, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 121652, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 206256, + "componentType": 5126, + "count": 65, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121912, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207036, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121932, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 211600, + "componentType": 5126, + "count": 56, + "max": [ + 0.26693448424339294, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601040601730347 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207096, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122308, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207552, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 212496, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122396, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207720, + "componentType": 5126, + "count": 59, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122632, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 208428, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122696, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 212624, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482410460710526, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294223144650459, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122932, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 208620, + "componentType": 5126, + "count": 55, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123152, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 209280, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123176, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 213568, + "componentType": 5126, + "count": 55, + "max": [ + 0.10101210325956345, + 0.79780721664428711, + -0.48497864603996277, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 123396, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 209352, + "componentType": 5126, + "count": 59, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123632, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210060, + "componentType": 5126, + "count": 15, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123692, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 214448, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007465839385986, + 0.39800706505775452, + 0.12996619939804077, + 0.71552282571792603 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 123928, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210240, + "componentType": 5126, + "count": 42, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124096, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210744, + "componentType": 5126, + "count": 21, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124180, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 215392, + "componentType": 5126, + "count": 42, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516590654850006, + -0.3081190288066864 + ], + "min": [ + 0.92842525243759155, + -0.11126617342233658, + -0.17523984611034393, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 124348, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210996, + "componentType": 5126, + "count": 59, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124584, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 211704, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124648, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 216064, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 124884, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 211896, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125036, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 212352, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125084, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 217008, + "componentType": 5126, + "count": 37, + "max": [ + 0.81515997648239136, + -0.2049533873796463, + -0.34477153420448303, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790059208869934 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 125232, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 212496, + "componentType": 5126, + "count": 60, + "max": [ + 4.0978193283081055e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -3.5390257835388184e-08, + 0.25762265920639038, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125472, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 213216, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125564, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 217600, + "componentType": 5126, + "count": 60, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026337862014771, + -0.19707523286342621, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 125804, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 213492, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126060, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 214260, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126108, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 218560, + "componentType": 5126, + "count": 64, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076332747936249, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 126364, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 214404, + "componentType": 5126, + "count": 59, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126600, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215112, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126616, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 219584, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 126852, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215160, + "componentType": 5126, + "count": 55, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127072, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215820, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127108, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 220528, + "componentType": 5126, + "count": 55, + "max": [ + -0.098626755177974701, + 0.79780721664428711, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101212561130524, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 127328, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215928, + "componentType": 5126, + "count": 59, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127564, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 216636, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127572, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 221408, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35181999206542969, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 127808, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 216660, + "componentType": 5126, + "count": 41, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127972, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217152, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128004, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 222352, + "componentType": 5126, + "count": 41, + "max": [ + 0.92845195531845093, + 0.11125475168228149, + 0.17524003982543945, + -0.30811873078346252 + ], + "min": [ + 0.92842668294906616, + 0.11104374378919601, + 0.17517001926898956, + -0.30815866589546204 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 128168, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217248, + "componentType": 5126, + "count": 59, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128404, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217956, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128424, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 223008, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 128660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218016, + "componentType": 5126, + "count": 38, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128812, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218472, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 223952, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477174282073975, + -0.41790032386779785 + ], + "min": [ + 0.81515991687774658, + 0.20495337247848511, + 0.34477171301841736, + -0.41790050268173218 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 129012, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218616, + "componentType": 5126, + "count": 59, + "max": [ + 2.9802322387695312e-08, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + 7.4505805969238281e-09, + 0.25762245059013367, + 5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129248, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 219324, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129344, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 224560, + "componentType": 5126, + "count": 59, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 129580, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 219612, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129836, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 220380, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129924, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 225504, + "componentType": 5126, + "count": 64, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 130180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 220644, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 6.7055225372314453e-08, + 5.9604644775390625e-08 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130440, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 221424, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130456, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 226528, + "componentType": 5126, + "count": 65, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 130716, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 221472, + "componentType": 5126, + "count": 56, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -1.1379786002407855e-14, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130940, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 222144, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130996, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 227568, + "componentType": 5126, + "count": 46, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 131180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 222312, + "componentType": 5126, + "count": 65, + "max": [ + -3.4638958368304884e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -2.2351734685344127e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 131440, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 223092, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 131488, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 228304, + "componentType": 5126, + "count": 65, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698620909401143e-08, + -2.1549524831243616e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 131748, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 223236, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.36641579866409302, + 6.3282712403633923e-15 + ], + "min": [ + -6.2172489379008766e-15, + 0.36641570925712585, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132008, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 224016, + "componentType": 5126, + "count": 17, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132076, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 229344, + "componentType": 5126, + "count": 65, + "max": [ + 0.36187875270843506, + 1.7365229254551195e-08, + 8.7073068755216809e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132336, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 224220, + "componentType": 5126, + "count": 65, + "max": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "min": [ + -4.253541963095131e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132596, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225000, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 230384, + "componentType": 5126, + "count": 65, + "max": [ + 0.096756108105182648, + 1.6857502060929619e-08, + 9.8583271324059751e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -6.90242885070802e-09, + 9.7077325733607722e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132920, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225192, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132928, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225216, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132936, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 231424, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132944, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225240, + "componentType": 5126, + "count": 55, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 3.5179624546799459e-08 + ], + "min": [ + -7.9711917067015747e-08, + -5.0918995242454912e-08, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133164, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225900, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000011920928955, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000007152557373, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133212, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 231456, + "componentType": 5126, + "count": 55, + "max": [ + 0.56482315063476562, + 0.78602421283721924, + -0.12704811990261078, + -0.29326313734054565 + ], + "min": [ + 0.52877569198608398, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133432, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226044, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133440, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226068, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133448, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 232336, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133464, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226092, + "componentType": 5126, + "count": 55, + "max": [ + 1.5542553910563583e-09, + -8.6856246639399615e-09, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810762978595449e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133684, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226752, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133764, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 232400, + "componentType": 5126, + "count": 55, + "max": [ + -0.52772623300552368, + 0.78695201873779297, + -0.12602680921554565, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307946562767029 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133984, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226992, + "componentType": 5126, + "count": 2, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133992, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227016, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134000, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233280, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134016, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227040, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134184, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227544, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233344, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134200, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227568, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134208, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227592, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134216, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233376, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134224, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227616, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134232, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227640, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134240, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233408, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134248, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227664, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 6.9776433520019054e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134552, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 228576, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134640, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233440, + "componentType": 5126, + "count": 76, + "max": [ + 0.0089847194030880928, + 0.034154176712036133, + 0.063492096960544586, + 0.99994874000549316 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134944, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 228840, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135248, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 229752, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135296, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 234656, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 135600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 229896, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + -1.2293457984924316e-07, + 1.4156103134155273e-07, + 9.3132257461547852e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135776, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 230424, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 235872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 2.0023431801519109e-08, + 1 + ], + "min": [ + 1.0710211384434842e-08, + -1.3969839729455202e-09, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 230568, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 0.028223443776369095, + 3.3527612686157227e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136176, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231096, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 236576, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234387755393982, + -0.05825023353099823, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.03822682797908783, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231312, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 5.5879354476928711e-08, + -1.0058283805847168e-07 + ], + "min": [ + 1.6763806343078613e-08, + -5.5879354476928711e-09, + -1.2898817658424377e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136600, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231840, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 237280, + "componentType": 5126, + "count": 44, + "max": [ + -1.7811542463164187e-08, + -6.1467275713766867e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477377188067294e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231888, + "componentType": 5126, + "count": 44, + "max": [ + 2.0489096641540527e-08, + 0.04503997415304184, + 1.4901161193847656e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -3.8184225559234619e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136968, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 232416, + "componentType": 5126, + "count": 32, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.9999995231628418, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137096, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 237984, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882885932922363, + -0.038419146090745926, + -9.681028313934803e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419157266616821, + -9.6831150585785508e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 137272, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 232800, + "componentType": 5126, + "count": 44, + "max": [ + -3.5390257835388184e-08, + 0.022519789636135101, + 1.2293457984924316e-07 + ], + "min": [ + -1.8253922462463379e-07, + 0.022519733756780624, + 8.2887709140777588e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137448, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233328, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137464, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 238688, + "componentType": 5126, + "count": 44, + "max": [ + 5.2095867886237102e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.1781546517304378e-07, + -9.3621224550588522e-07, + 2.3120085757000197e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 137640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233376, + "componentType": 5126, + "count": 44, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137816, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233904, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 239392, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + -0.038298282772302628, + -0.044083669781684875, + 0.98228913545608521 + ], + "min": [ + 0.17803920805454254, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234156, + "componentType": 5126, + "count": 44, + "max": [ + -8.1956386566162109e-08, + -1.2293457984924316e-07, + 1.0849907994270325e-07 + ], + "min": [ + -1.601874828338623e-07, + -1.3411045074462891e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138252, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234684, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 240096, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252900764173091e-09, + 2.2351741790771484e-08, + 5.4482374167719172e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.862645326866641e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234732, + "componentType": 5126, + "count": 44, + "max": [ + -7.1711838245391846e-08, + 0.033446535468101501, + 1.2665987014770508e-07 + ], + "min": [ + -1.0430812835693359e-07, + 0.033446431159973145, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138620, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 235260, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138720, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 240800, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151016891002655, + 0.016420740634202957, + -0.038739249110221863, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138896, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 235560, + "componentType": 5126, + "count": 44, + "max": [ + -1.1315569281578064e-07, + 1.0523945093154907e-07, + 7.7299773693084717e-08 + ], + "min": [ + -1.3411045074462891e-07, + 1.4901161193847656e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139072, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236088, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 241504, + "componentType": 5126, + "count": 44, + "max": [ + -1.3969834178340079e-09, + -2.607702676016288e-08, + 5.2328687161207199e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -3.0733637856883433e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 139280, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236184, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -6.9383531808853149e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744612157344818, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139456, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139488, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 242208, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518191993236542, + 0.0088785151019692421, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382568717002869, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 139664, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236808, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + 0.020872168242931366, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139840, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237336, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 242912, + "componentType": 5126, + "count": 44, + "max": [ + 4.6566119848989729e-09, + -9.6857540654582408e-08, + -1.4482064614185219e-07, + 1 + ], + "min": [ + 4.1909515857696533e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140048, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237432, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140224, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237960, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140256, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 243616, + "componentType": 5126, + "count": 43, + "max": [ + 0.0063957390375435352, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063955946825444698, + 0.6579899787902832, + 0.2625289261341095, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140428, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238056, + "componentType": 5126, + "count": 44, + "max": [ + 3.6321580410003662e-08, + 1.2293457984924316e-07, + -1.1874362826347351e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140604, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238584, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 244304, + "componentType": 5126, + "count": 44, + "max": [ + 1.5832481992106295e-08, + -4.0745362639427185e-10, + -7.2177506638126943e-08, + 1 + ], + "min": [ + 2.4447204260980016e-09, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140812, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238680, + "componentType": 5126, + "count": 50, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141012, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 239280, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141112, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 245008, + "componentType": 5126, + "count": 50, + "max": [ + 0.17804408073425293, + -0.038269974291324615, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803846299648285, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 141312, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 239580, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141488, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240108, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 245808, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958177343010902, + 0.65798979997634888, + 0.2625291645526886, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 141696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240204, + "componentType": 5126, + "count": 44, + "max": [ + 0.0073303692042827606, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303328827023506, + 0.34354424476623535, + -0.02119797095656395 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141872, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240732, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141888, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 246512, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320602178573608, + -0.11237325519323349, + -0.12725991010665894, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240780, + "componentType": 5126, + "count": 44, + "max": [ + 2.3469328880310059e-07, + -1.4621764421463013e-07, + -1.1041993275284767e-07 + ], + "min": [ + -2.1886080503463745e-08, + -2.0954757928848267e-07, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142240, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241308, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 247216, + "componentType": 5126, + "count": 44, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.189779462786646e-08, + 1 + ], + "min": [ + -4.5401971071612479e-09, + 2.2584572434425354e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241332, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + 1.0989606380462646e-07 + ], + "min": [ + -1.5227124094963074e-07, + 0.032196022570133209, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142600, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241860, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142680, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 247920, + "componentType": 5126, + "count": 44, + "max": [ + 0.0564768947660923, + -0.045752894133329391, + -0.025043413043022156, + 0.99704056978225708 + ], + "min": [ + 0.056476891040802002, + -0.045752905309200287, + -0.025043418630957603, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142856, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242100, + "componentType": 5126, + "count": 44, + "max": [ + -6.9849193096160889e-08, + 1.939479261636734e-07, + 5.9604644775390625e-08 + ], + "min": [ + -1.5832483768463135e-07, + 1.7927959561347961e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143032, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242628, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 248624, + "componentType": 5126, + "count": 44, + "max": [ + -1.0724762411484789e-08, + -3.3527619791584584e-08, + -1.3737011528291987e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.8256988688090132e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 143240, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242724, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 1.1920928955078125e-07 + ], + "min": [ + -1.9255094230175018e-07, + 0.049540434032678604, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143416, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 243252, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 249328, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846227198839188, + -0.085242286324501038, + -0.013570735231041908, + 0.98919981718063354 + ], + "min": [ + 0.11846226453781128, + -0.085242293775081635, + -0.013570768758654594, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 143696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 243564, + "componentType": 5126, + "count": 44, + "max": [ + -1.0943040251731873e-08, + 0.024770038202404976, + 1.1175870895385742e-07 + ], + "min": [ + -4.0978193283081055e-08, + 0.024769995361566544, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143872, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244092, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143888, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 250032, + "componentType": 5126, + "count": 44, + "max": [ + -5.8347353615317843e-07, + 9.4409921302940347e-07, + -1.466250978410244e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244140, + "componentType": 5126, + "count": 44, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144240, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244668, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144356, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 250736, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749170124530792, + -0.069006532430648804, + -0.0030257198959589005, + 0.97361516952514648 + ], + "min": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257310718297958, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144532, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245016, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -5.9138983488082886e-08, + -3.7252902984619141e-08, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144708, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245544, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144724, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 251440, + "componentType": 5126, + "count": 44, + "max": [ + 5.8920690548802668e-08, + -6.2864269345652701e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.7008351111135198e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144900, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245592, + "componentType": 5126, + "count": 58, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145132, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 246288, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145248, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 252144, + "componentType": 5126, + "count": 58, + "max": [ + 0.21750433743000031, + -0.06896587461233139, + -0.0028431459795683622, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.003057574387639761, + 0.97361499071121216 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 145480, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 246636, + "componentType": 5126, + "count": 44, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326384454965591 + ], + "min": [ + 0.023247197270393372, + 0.34059673547744751, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145656, + "componentType": 5126, + "count": 34, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 247164, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 253072, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811857163906097, + -0.13169915974140167, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811858654022217, + -0.13169918954372406, + -0.16719600558280945, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 145968, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 247572, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 3.7252902984619141e-08, + 7.6106516644358635e-09 + ], + "min": [ + -6.4377672970294952e-08, + -3.3120159059762955e-08, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146144, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248100, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146160, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 253776, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505801528346183e-09, + -1.1175870895385742e-08, + -1.3969838619232178e-08, + 1 + ], + "min": [ + 2.7939679458910405e-09, + -1.862645326866641e-08, + -1.909211277961731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 146336, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248148, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-07, + 0.031801007688045502, + 9.4994902610778809e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800933182239532, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146512, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248676, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000004768371582, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 254480, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024204552173615, + -0.10080225765705109, + -0.057818159461021423, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080230236053467, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 146784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248964, + "componentType": 5126, + "count": 44, + "max": [ + 1.2852251529693604e-07, + 2.7706846594810486e-08, + -1.8253922462463379e-07 + ], + "min": [ + 5.3085386753082275e-08, + -3.7252902984619141e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146960, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 249492, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 255184, + "componentType": 5126, + "count": 44, + "max": [ + -8.6147338151931763e-09, + -2.0489096641540527e-08, + -3.166496753692627e-08, + 1 + ], + "min": [ + -8.6147338151931763e-09, + -2.6426281607427882e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 249540, + "componentType": 5126, + "count": 44, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.3969838619232178e-09, + 0.04481661319732666, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147328, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250068, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 255888, + "componentType": 5126, + "count": 44, + "max": [ + 0.073152825236320496, + -0.052601058036088943, + -0.024043358862400055, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601080387830734, + -0.024043375626206398, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147596, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250344, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-07, + 0.022408399730920792, + 1.1033262126147747e-07 + ], + "min": [ + -1.4994293451309204e-07, + 0.022408396005630493, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147772, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250872, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147788, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 256592, + "componentType": 5126, + "count": 44, + "max": [ + -6.1932928474561777e-07, + 9.4789692184349406e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250920, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148140, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 251448, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148156, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 257296, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130188584327698, + -0.10888320952653885, + 0.021744720637798309, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 148332, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 251496, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -1.6763806343078613e-08, + 1.7508864402770996e-07 + ], + "min": [ + -1.1175870895385742e-08, + -1.1920928955078125e-07, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148508, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252024, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148540, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 258000, + "componentType": 5126, + "count": 44, + "max": [ + 5.9750178138529009e-08, + -4.6100481654320902e-08, + -2.2351745343485163e-08, + 1 + ], + "min": [ + 2.5378547263699147e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 148716, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252120, + "componentType": 5126, + "count": 52, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148924, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252744, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148956, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 258704, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 149164, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252840, + "componentType": 5126, + "count": 44, + "max": [ + 0.034954506903886795, + 0.33536890149116516, + -0.0064071454107761383 + ], + "min": [ + 0.034954499453306198, + 0.33536878228187561, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149340, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 253368, + "componentType": 5126, + "count": 38, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999910593032837, + 0.99999922513961792, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149492, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 259536, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214219272136688, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701875627040863, + -0.22579611837863922, + 0.94418638944625854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 149668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 253824, + "componentType": 5126, + "count": 44, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 1.3411045074462891e-07 + ], + "min": [ + -2.9802322387695312e-08, + 1.2293457984924316e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149844, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254352, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 260240, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626458597736928e-08, + -1.862645371275562e-09, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.8871006918507192e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254424, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + -3.7252902984619141e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592421621084213, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150220, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254952, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 260944, + "componentType": 5126, + "count": 44, + "max": [ + 0.082881756126880646, + -0.044399119913578033, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591940179467201, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255096, + "componentType": 5126, + "count": 44, + "max": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "min": [ + -5.2154064178466797e-08, + -8.5681676864624023e-08, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150620, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255624, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 261648, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 4.6566133171666024e-09, + -9.7788879216409441e-09, + 1 + ], + "min": [ + -1.5832485544819974e-08, + -6.5192589104867693e-09, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150812, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255672, + "componentType": 5126, + "count": 44, + "max": [ + 1.0058283805847168e-07, + 0.027876397594809532, + 9.6857547760009766e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876339852809906, + 3.9581209421157837e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150988, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256200, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 262352, + "componentType": 5126, + "count": 44, + "max": [ + 0.04151814803481102, + -0.028988013043999672, + -0.020971916615962982, + 0.99849694967269897 + ], + "min": [ + 0.041517924517393112, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 151252, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256464, + "componentType": 5126, + "count": 44, + "max": [ + -5.2154064178466797e-08, + 0.013938168063759804, + 9.3132257461547852e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938132673501968, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151428, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256992, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151460, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 263056, + "componentType": 5126, + "count": 44, + "max": [ + 5.2968971431255341e-08, + -1.3015230138080369e-07, + 4.563479905073109e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.3364477524646645e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 151636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257088, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151812, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257616, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151896, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 263760, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057201981544495, + -0.17872512340545654, + 0.015338565222918987, + 0.91919600963592529 + ], + "min": [ + 0.35057187080383301, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152072, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257868, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + -2.9802322387695312e-08, + -9.6857547760009766e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152248, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258396, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152264, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 264464, + "componentType": 5126, + "count": 44, + "max": [ + -4.3510230085530566e-08, + -2.0489096641540527e-08, + -2.7939679014821195e-08, + 1 + ], + "min": [ + -5.6112192226009938e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152440, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258444, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152616, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258972, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152688, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 265168, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057204961776733, + -0.1787249892950058, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057193040847778, + -0.17872503399848938, + 0.015338667668402195, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152864, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259188, + "componentType": 5126, + "count": 24, + "max": [ + 0.044579226523637772, + 0.32914415001869202, + 0.0039985440671443939 + ], + "min": [ + 0.044579222798347473, + 0.32914400100708008, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152960, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259476, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000004768371582 + ], + "min": [ + 0.9999995231628418, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 265872, + "componentType": 5126, + "count": 44, + "max": [ + -0.13569998741149902, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749423325061798, + -0.27479103207588196, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 153228, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259752, + "componentType": 5126, + "count": 44, + "max": [ + 2.150190994143486e-07, + 4.246830940246582e-07, + 1.0477378964424133e-07 + ], + "min": [ + 7.4505805969238281e-09, + 3.8929283618927002e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153404, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 260280, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153436, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 266576, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626447939595892e-08, + 1.1175870184843006e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 8.7544307803000265e-08, + -1.6763802790364934e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 153612, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 260376, + "componentType": 5126, + "count": 62, + "max": [ + 6.5338099375367165e-08, + 0.25792214274406433, + -6.9849193096160889e-09 + ], + "min": [ + 1.862645149230957e-08, + 0.25792211294174194, + -2.0023435354232788e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153860, + "componentType": 5126, + "count": 27, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 261120, + "componentType": 5126, + "count": 27, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153968, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 267280, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319510459899902, + 0.787913978099823, + 0.08472936600446701, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 154216, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 261444, + "componentType": 5126, + "count": 71, + "max": [ + 2.2910535335540771e-07, + 0.12896108627319336, + -3.6787241697311401e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896072864532471, + -2.3003667593002319e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 154500, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 262296, + "componentType": 5126, + "count": 38, + "max": [ + 0.99999982118606567, + 1.0000035762786865, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 154652, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 268272, + "componentType": 5126, + "count": 71, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 154936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 262752, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.13927146792411804, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155112, + "componentType": 5126, + "count": 36, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 263280, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000009536743164, + 1.0000020265579224, + 1.0000022649765015 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 269408, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531655550003052, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401016175746918, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 155432, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 263712, + "componentType": 5126, + "count": 26, + "max": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930147707462311 + ], + "min": [ + 0.044326584786176682, + -0.11071404814720154, + 0.071930117905139923 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155536, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264024, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155584, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 270112, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531584024429321, + -0.090401075780391693, + 0.19322755932807922, + 0.94302952289581299 + ], + "min": [ + -0.25531643629074097, + -0.090401455760002136, + 0.19322720170021057, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 155760, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264168, + "componentType": 5126, + "count": 48, + "max": [ + 3.5017728805541992e-07, + 6.7055225372314453e-08, + 2.6635825634002686e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155952, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264744, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999654293060303, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156144, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 270816, + "componentType": 5126, + "count": 48, + "max": [ + 3.6647588785854168e-07, + -6.2165759118215647e-07, + 5.7462693803245202e-07, + 1 + ], + "min": [ + -1.8994351194123738e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 156336, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265320, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.27854281663894653, + 1.9557774066925049e-07 + ], + "min": [ + 7.0780515670776367e-08, + 0.27854272723197937, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156544, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265944, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156560, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 271584, + "componentType": 5126, + "count": 52, + "max": [ + 0.25531500577926636, + 0.12245099246501923, + -0.17468459904193878, + 0.97297227382659912 + ], + "min": [ + 0.088408313691616058, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 156768, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265992, + "componentType": 5126, + "count": 49, + "max": [ + 2.8312206268310547e-07, + 0.13927170634269714, + 3.380700945854187e-07 + ], + "min": [ + 6.7055225372314453e-08, + 0.13927128911018372, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156964, + "componentType": 5126, + "count": 31, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 266580, + "componentType": 5126, + "count": 31, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999874830245972, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157088, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 272416, + "componentType": 5126, + "count": 49, + "max": [ + -5.0757080316543579e-08, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.1161922657265677e-06, + -8.257104127551429e-06, + -1.0617110319799394e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 157284, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 266952, + "componentType": 5126, + "count": 62, + "max": [ + -0.027315571904182434, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975727267563343 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157532, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 267696, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157596, + "componentType": 5126, + "count": 59, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 273200, + "componentType": 5126, + "count": 59, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 157832, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 267888, + "componentType": 5126, + "count": 44, + "max": [ + 1.9557774066925049e-08, + 3.166496753692627e-08, + 5.0632388592930511e-07 + ], + "min": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 2.5607096176827326e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158008, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268416, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158024, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 274144, + "componentType": 5126, + "count": 44, + "max": [ + -7.004929081233513e-09, + 9.1364206866728637e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -1.3918908692289733e-08, + 8.2272904933233804e-08, + 4.4703490686970326e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 158200, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268464, + "componentType": 5126, + "count": 43, + "max": [ + 0.023130057379603386, + 0.26697874069213867, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158372, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268980, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158472, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 274848, + "componentType": 5126, + "count": 43, + "max": [ + -0.69586646556854248, + -0.39777600765228271, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 158644, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269280, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527612686157227e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + -4.0978193283081055e-08, + 2.9802322387695312e-08, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158820, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269808, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158836, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 275536, + "componentType": 5126, + "count": 44, + "max": [ + 9.7788870334625244e-09, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.4901161193847656e-08, + 1.862645371275562e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269856, + "componentType": 5126, + "count": 44, + "max": [ + -7.2177499532699585e-09, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223417699337006, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159188, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 270384, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 276240, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234383285045624, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234370619058609, + 0.058250203728675842, + 0.038226813077926636, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 270564, + "componentType": 5126, + "count": 44, + "max": [ + -3.5623088479042053e-08, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1175870895385742e-08, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159600, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271092, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 276944, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7927959561347961e-08, + -2.1434974684098052e-08, + -6.7520891100514291e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271188, + "componentType": 5126, + "count": 44, + "max": [ + 5.029141902923584e-08, + 0.045040033757686615, + 4.8894435167312622e-08 + ], + "min": [ + 1.6763806343078613e-08, + 0.045039962977170944, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159984, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271716, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 277648, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882878482341766, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882774174213409, + 0.038419175893068314, + 9.6848831162787974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160192, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271812, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-07, + 0.022520191967487335, + 1.7881393432617188e-07 + ], + "min": [ + -1.4156103134155273e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160368, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272340, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 278352, + "componentType": 5126, + "count": 44, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0675361156463623e-07, + 1 + ], + "min": [ + 6.3012709006216028e-07, + 9.4727141686234972e-07, + -2.0721925864108925e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272364, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160728, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272892, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 279056, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + 0.038298372179269791, + 0.044083651155233383, + 0.98228907585144043 + ], + "min": [ + 0.17803941667079926, + 0.038298297673463821, + 0.044083595275878906, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160984, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273132, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-08, + -5.9604644775390625e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3411045074462891e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161160, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273660, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 279760, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252894102834944e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -3.7252900764173091e-09, + -2.6426270949286845e-08, + -7.1362585174483684e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 161360, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273732, + "componentType": 5126, + "count": 44, + "max": [ + 8.5681676864624023e-08, + 0.033446438610553741, + 1.0617077350616455e-07 + ], + "min": [ + 3.7252902984619141e-08, + 0.033446401357650757, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161536, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 274260, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 280464, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151072584092617, + -0.016420751810073853, + 0.038739185780286789, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.038739174604415894, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 161816, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 274572, + "componentType": 5126, + "count": 44, + "max": [ + 9.9651515483856201e-08, + -3.7252902984619141e-08, + 4.4408920985006262e-16 + ], + "min": [ + 2.9802322387695312e-08, + -1.3317912817001343e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161992, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275100, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 281168, + "componentType": 5126, + "count": 44, + "max": [ + 1.8160790205001831e-08, + 2.6077030312876559e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -7.2177508414483782e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275148, + "componentType": 5126, + "count": 44, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.041744619607925415, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162360, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275676, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 281872, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518239676952362, + -0.0088784974068403244, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785132393240929, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275724, + "componentType": 5126, + "count": 44, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872429013252258, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162728, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276252, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 282576, + "componentType": 5126, + "count": 44, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.210719435817964e-08, + 1 + ], + "min": [ + -4.5634813261585805e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162920, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276300, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163096, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 283280, + "componentType": 5126, + "count": 44, + "max": [ + 0.006395676638931036, + -0.65799015760421753, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 163328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276996, + "componentType": 5126, + "count": 44, + "max": [ + 2.491287887096405e-07, + -2.3283064365386963e-08, + -3.0174851417541504e-07 + ], + "min": [ + 6.4261257648468018e-08, + -5.9604644775390625e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163504, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 277524, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 283984, + "componentType": 5126, + "count": 44, + "max": [ + -5.2386767146472835e-10, + 1.280568362460599e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2130628824234009e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 163696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 277572, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163872, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278100, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 284688, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + 0.038296066224575043, + 0.044083878397941589, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278376, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164316, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278904, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164356, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 285392, + "componentType": 5126, + "count": 43, + "max": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279024, + "componentType": 5126, + "count": 44, + "max": [ + -0.0073303841054439545, + 0.34354403614997864, + -0.021197730675339699 + ], + "min": [ + -0.0073305927217006683, + 0.34354394674301147, + -0.021197784692049026 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164704, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279552, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 286080, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320606648921967, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725979089736938, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279648, + "componentType": 5126, + "count": 44, + "max": [ + -1.3038516044616699e-08, + 1.8812716007232666e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165088, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280176, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 286784, + "componentType": 5126, + "count": 44, + "max": [ + -7.5669981391968122e-10, + 3.9581227184726231e-09, + 1.5832487321176814e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 165280, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280224, + "componentType": 5126, + "count": 44, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 9.8720192909240723e-08 + ], + "min": [ + -5.657784640789032e-08, + 0.032196052372455597, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165456, + "componentType": 5126, + "count": 30, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280752, + "componentType": 5126, + "count": 30, + "max": [ + 1.0000005960464478, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165576, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 287488, + "componentType": 5126, + "count": 44, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043454021215439, + 0.99704056978225708 + ], + "min": [ + 0.056476566940546036, + 0.045752864331007004, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 165752, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281112, + "componentType": 5126, + "count": 44, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 3.166496753692627e-08 + ], + "min": [ + -1.1152587831020355e-07, + -6.3329935073852539e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165928, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281640, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165960, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 288192, + "componentType": 5126, + "count": 44, + "max": [ + -1.0477378964424133e-09, + 3.5390264940815541e-08, + -2.9336666429458091e-08, + 1 + ], + "min": [ + -1.3969840839678227e-09, + 2.2926544218648814e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166136, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281736, + "componentType": 5126, + "count": 44, + "max": [ + 4.2840838432312012e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540400505065918, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166312, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282264, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 288896, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570736162364483, + 0.98919987678527832 + ], + "min": [ + 0.11846192926168442, + 0.085242249071598053, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282384, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-08, + 0.024770196527242661, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770122021436691, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166704, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282912, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 289600, + "componentType": 5126, + "count": 44, + "max": [ + -5.8393925428390503e-07, + -9.4092695235303836e-07, + 1.9185246458164329e-07, + 1 + ], + "min": [ + -5.9232110061202548e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283008, + "componentType": 5126, + "count": 44, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167088, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283536, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167144, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 290304, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749138832092285, + 0.069006636738777161, + 0.0030257357284426689, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006584584712982, + 0.003025716170668602, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 167320, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283704, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 2.0489096641540527e-07, + 5.005858838558197e-08 + ], + "min": [ + 4.6566128730773926e-08, + 4.8428773880004883e-08, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167496, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 284232, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167512, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 291008, + "componentType": 5126, + "count": 44, + "max": [ + -1.0710210496256423e-08, + 1.5774276107549667e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -2.3515896785397672e-08, + 3.7252898543727042e-09, + -5.7625584304332733e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 167688, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 284280, + "componentType": 5126, + "count": 75, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167988, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285180, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168044, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 291712, + "componentType": 5126, + "count": 75, + "max": [ + 0.2174726277589798, + 0.069102182984352112, + 0.003196704899892211, + 0.9736253023147583 + ], + "min": [ + 0.21745379269123077, + 0.068967744708061218, + 0.0028579330537468195, + 0.97361642122268677 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 168344, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285348, + "componentType": 5126, + "count": 44, + "max": [ + -0.023247243836522102, + 0.34059673547744751, + -0.015326134860515594 + ], + "min": [ + -0.023247666656970978, + 0.34059673547744751, + -0.015326227992773056 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168520, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285876, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999958276748657, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999910593032837, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 292912, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811861634254456, + 0.13169923424720764, + 0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169918954372406, + 0.16719575226306915, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 168784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + 2.2069434635341167e-07, + 4.4703483581542969e-08 + ], + "min": [ + -6.0535967350006104e-08, + 1.6763806343078613e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168960, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286668, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 293616, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + 6.5192566900407201e-09, + 1 + ], + "min": [ + -1.0710206943542744e-08, + -1.4901157641133977e-08, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286716, + "componentType": 5126, + "count": 44, + "max": [ + 6.8685039877891541e-09, + 0.031800966709852219, + 8.5681676864624023e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169328, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287244, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 294320, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024107694625854, + 0.10080229490995407, + 0.057818260043859482, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080228000879288, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169568, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287436, + "componentType": 5126, + "count": 44, + "max": [ + 3.8184225559234619e-08, + 2.7008354663848877e-08, + 9.8720192909240723e-08 + ], + "min": [ + 2.1420419216156006e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169744, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287964, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169752, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 295024, + "componentType": 5126, + "count": 44, + "max": [ + 7.9162418842315674e-09, + -1.4668330550193787e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169928, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287988, + "componentType": 5126, + "count": 44, + "max": [ + 1.4202669262886047e-07, + 0.044816732406616211, + -1.1175870895385742e-08 + ], + "min": [ + -2.514570951461792e-08, + 0.044816642999649048, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170104, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 288516, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 295728, + "componentType": 5126, + "count": 44, + "max": [ + 0.073151916265487671, + 0.052601087838411331, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043351411819458, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 170360, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 288756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4482066035270691e-07, + 0.02240833081305027, + 1.8253922462463379e-07 + ], + "min": [ + -3.7252902984619141e-09, + 0.022408243268728256, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170536, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289284, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170568, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 296432, + "componentType": 5126, + "count": 44, + "max": [ + -6.4913183450698853e-07, + -9.6193980425596237e-07, + 1.9557775843281888e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 170744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289380, + "componentType": 5126, + "count": 44, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170920, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289908, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170960, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 297136, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130239248275757, + 0.10888323932886124, + -0.021744664758443832, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320952653885, + -0.021744726225733757, + 0.9531739354133606 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 171136, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290028, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -4.4703483581542969e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171312, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290556, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 297840, + "componentType": 5126, + "count": 44, + "max": [ + -1.4028048944680904e-08, + 3.2130635929661366e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.5250410712042139e-08, + 2.1012969142475413e-08, + -2.2351743567128324e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 171504, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290604, + "componentType": 5126, + "count": 58, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171736, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 291300, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171804, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 298544, + "componentType": 5126, + "count": 58, + "max": [ + 0.28130322694778442, + 0.10890334844589233, + -0.021634636446833611, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.10886994004249573, + -0.021744493395090103, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172036, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 291504, + "componentType": 5126, + "count": 44, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954793751239777, + 0.33536875247955322, + -0.0064072869718074799 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172212, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 292032, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "min": [ + 0.9999995231628418, + 0.99999934434890747, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 299472, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214225232601166, + 0.16701884567737579, + 0.2257961630821228, + 0.94418632984161377 + ], + "min": [ + -0.17214229702949524, + 0.16701878607273102, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 292500, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 1.7136335372924805e-07, + 1.4062970876693726e-07 + ], + "min": [ + -1.0430812835693359e-07, + 1.6391277313232422e-07, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293028, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 300176, + "componentType": 5126, + "count": 44, + "max": [ + 5.1222746044743417e-09, + -2.0489096641540527e-08, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + 3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293076, + "componentType": 5126, + "count": 44, + "max": [ + -4.0978193283081055e-08, + 0.022592537105083466, + 1.862645149230957e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.022592464461922646, + -1.3504177331924438e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173088, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293604, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173176, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 300880, + "componentType": 5126, + "count": 44, + "max": [ + 0.08288169652223587, + 0.044399194419384003, + 0.02859199233353138, + 0.99515920877456665 + ], + "min": [ + 0.082881465554237366, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 173352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293868, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 6.3329935073852539e-08, + 1.1548399925231934e-07 + ], + "min": [ + -4.4703483581542969e-08, + -7.4505805969238281e-09, + -6.28642737865448e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173528, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294396, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 301584, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244550097127103e-08, + 3.8184232664661977e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.8277209079542445e-08, + 1.1175871783564162e-08, + -1.0477383405316232e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 173728, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294468, + "componentType": 5126, + "count": 44, + "max": [ + 2.2165477275848389e-07, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876321226358414, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173904, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294996, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173956, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 302288, + "componentType": 5126, + "count": 44, + "max": [ + 0.041518151760101318, + 0.028988037258386612, + 0.020971935242414474, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174132, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295152, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.013938121497631073, + 9.5926225185394287e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.013938065618276596, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174308, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295680, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 302992, + "componentType": 5126, + "count": 44, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -3.771856427192688e-08, + 6.5425410866737366e-08, + -3.771856427192688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295728, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174676, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 296256, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174764, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 303696, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057234764099121, + 0.17872513830661774, + -0.015338524244725704, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872510850429535, + -0.01533864438533783, + 0.91919589042663574 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174940, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 296520, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + 2.9802322387695312e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175116, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297048, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175148, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 304400, + "componentType": 5126, + "count": 44, + "max": [ + 4.4819907785154101e-09, + -1.9557775843281888e-08, + -1.862645149230957e-09, + 1 + ], + "min": [ + 3.9581213862049935e-09, + -2.4214388716359281e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 175324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297144, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175500, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297672, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 305104, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338567085564137, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + 0.17872488498687744, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 175776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297972, + "componentType": 5126, + "count": 44, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579681009054184, + 0.32914391160011292, + 0.0039983503520488739 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175952, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 298500, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999970197677612, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176020, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 305808, + "componentType": 5126, + "count": 44, + "max": [ + -0.13570015132427216, + 0.18749435245990753, + 0.27479097247123718, + 0.9332316517829895 + ], + "min": [ + -0.13570018112659454, + 0.18749421834945679, + 0.27479088306427002, + 0.93323159217834473 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 176196, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 298704, + "componentType": 5126, + "count": 44, + "max": [ + -2.9802322387695312e-08, + 2.5657936930656433e-07, + 2.2293534129858017e-07 + ], + "min": [ + -3.5911216400563717e-07, + 1.4156103134155273e-07, + 1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176372, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 299232, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 306512, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527609133443548e-08, + -1.1175874448099421e-08, + -6.7055218266887096e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 176596, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 299376, + "componentType": 5126, + "count": 62, + "max": [ + 2.9453076422214508e-08, + 0.25792214274406433, + 1.10274413600564e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176844, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 300120, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176924, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 307216, + "componentType": 5126, + "count": 61, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 177168, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 300360, + "componentType": 5126, + "count": 73, + "max": [ + 3.6135315895080566e-07, + 0.12896072864532471, + 6.6868960857391357e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 177460, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 301236, + "componentType": 5126, + "count": 66, + "max": [ + 0.99999946355819702, + 1.0000060796737671, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 1.0000019073486328, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 177724, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 308192, + "componentType": 5126, + "count": 73, + "max": [ + 5.5228764495041105e-07, + 0.88032650947570801, + 2.0877798760920996e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302028, + "componentType": 5126, + "count": 44, + "max": [ + 1.0430812835693359e-07, + 0.13927136361598969, + 3.7252902984619141e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178192, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302556, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000004768371582, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999785423278809, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 309360, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531542301177979, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401247143745422, + 0.19322679936885834, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178432, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302748, + "componentType": 5126, + "count": 42, + "max": [ + -0.044326536357402802, + -0.1107146143913269, + 0.071930199861526489 + ], + "min": [ + -0.044326584786176682, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178600, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303252, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 310064, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531512498855591, + 0.090401209890842438, + -0.19322690367698669, + 0.94302976131439209 + ], + "min": [ + -0.25531551241874695, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178808, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303348, + "componentType": 5126, + "count": 51, + "max": [ + 6.7055225372314453e-08, + -1.4901161193847656e-08, + 4.5821070671081543e-07 + ], + "min": [ + 1.4901161193847656e-08, + -6.7055225372314453e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179012, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303960, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999713897705078, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179060, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 310768, + "componentType": 5126, + "count": 51, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631590935779968e-07, + -2.9895460329498746e-07, + -1.1252719787080423e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 179264, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304104, + "componentType": 5126, + "count": 62, + "max": [ + 3.7252902984619141e-08, + 0.27854269742965698, + 6.1700120568275452e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179512, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304848, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179544, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 311584, + "componentType": 5126, + "count": 62, + "max": [ + 0.25531500577926636, + -0.090401500463485718, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571898639202118, + -0.12242159247398376, + 0.17470519244670868, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 179792, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304944, + "componentType": 5126, + "count": 49, + "max": [ + -6.3329935073852539e-08, + 0.1392713338136673, + 4.6752393245697021e-07 + ], + "min": [ + -3.8743019104003906e-07, + 0.13927125930786133, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179988, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 305532, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180036, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 312576, + "componentType": 5126, + "count": 49, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0624992683005985e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 180232, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 305676, + "componentType": 5126, + "count": 62, + "max": [ + 0.027315612882375717, + 0.33446058630943298, + 0.019757712259888649 + ], + "min": [ + 0.027315512299537659, + 0.3344605565071106, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180480, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306420, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180496, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 313360, + "componentType": 5126, + "count": 61, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 180740, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306468, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 8.3819031715393066e-09, + 3.7709014577558264e-07 + ], + "min": [ + 6.3060724642127752e-08, + -4.2840838432312012e-08, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180916, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306996, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180932, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 314336, + "componentType": 5126, + "count": 44, + "max": [ + -6.9740049291056039e-09, + -3.2074240152724087e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -8.3091427072190527e-09, + -3.2596290111541748e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 181108, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307044, + "componentType": 5126, + "count": 32, + "max": [ + -0.023130090907216072, + 0.26697903871536255, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965265989303589 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181236, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307428, + "componentType": 5126, + "count": 26, + "max": [ + 0.9999997615814209, + 0.99999970197677612, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181340, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 315040, + "componentType": 5126, + "count": 44, + "max": [ + -0.69586670398712158, + 0.39777567982673645, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 181516, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307740, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181820, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 308652, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181868, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 315744, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 182172, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 308796, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 182476, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 309708, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 182540, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 316960, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 182844, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 309900, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183148, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 310812, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183212, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 318176, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 183516, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 311004, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183820, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 311916, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183876, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 319392, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 184180, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312084, + "componentType": 5126, + "count": 44, + "max": [ + -8.3527993410825729e-09, + -1.3605159665530664e-08, + -2.5611370801925659e-08 + ], + "min": [ + -2.0985442716892067e-08, + -2.0023435354232788e-08, + -2.8113703365306719e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184356, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312612, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184372, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 320608, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077033865590238e-08, + 1.8684659153223038e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.3908793167493059e-08, + 1.8663602219248787e-08, + -1.0186340659856796e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 184548, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312660, + "componentType": 5126, + "count": 62, + "max": [ + 6.3351762946695089e-08, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184796, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 313404, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184860, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 321312, + "componentType": 5126, + "count": 62, + "max": [ + 0.0025871710386127234, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896300554275513, + -0.37012156844139099, + -0.0055759232491254807 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 313596, + "componentType": 5126, + "count": 44, + "max": [ + 2.6804627850651741e-08, + 2.1420419216156006e-08, + -2.7474015951156616e-08 + ], + "min": [ + -5.50062395632267e-09, + -7.6368451118469238e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185284, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314124, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185300, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 322304, + "componentType": 5126, + "count": 44, + "max": [ + -5.2322903343338112e-08, + 7.1333474238599592e-08, + 2.0081638574254157e-09, + 1 + ], + "min": [ + -5.8862475782461843e-08, + 7.1071532659061631e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185476, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314172, + "componentType": 5126, + "count": 44, + "max": [ + 2.1187588572502136e-08, + 0.4787544310092926, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875440120697021, + -4.377216100692749e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185652, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314700, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185692, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 323008, + "componentType": 5126, + "count": 44, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115001767873764, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314820, + "componentType": 5126, + "count": 44, + "max": [ + 6.5425410866737366e-08, + 0.23937709629535675, + 2.0582228899002075e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937708139419556, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186044, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315348, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 323712, + "componentType": 5126, + "count": 44, + "max": [ + 1.1330482152516197e-07, + 0.039239484816789627, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "min": [ + -6.5417602002071362e-08, + 0.039239473640918732, + 1.197672219177548e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186252, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315444, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505805969238281e-09, + 0.2127838134765625, + 3.5390257835388184e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.21278376877307892, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186428, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315972, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 324416, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897858619689941, + 0.18448328971862793, + 0.7880139946937561, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448323011398315, + 0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186620, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316020, + "componentType": 5126, + "count": 29, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323382496833801 + ], + "min": [ + -0.15143668651580811, + 0.084600701928138733, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186736, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316368, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186768, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 325120, + "componentType": 5126, + "count": 43, + "max": [ + 0.27897855639457703, + -0.18448324501514435, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448333442211151, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186940, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316464, + "componentType": 5126, + "count": 46, + "max": [ + 1.4156103134155273e-07, + -1.1102230246251565e-16, + 8.2072801887989044e-09 + ], + "min": [ + 2.8638169169425964e-08, + -1.4156103134155273e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187124, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317016, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187180, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 325808, + "componentType": 5126, + "count": 46, + "max": [ + 6.8091333105257945e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.1525117749044966e-08, + -5.9022578824396987e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 187364, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317184, + "componentType": 5126, + "count": 62, + "max": [ + 4.0978193283081055e-08, + 0.425567626953125, + 6.1467289924621582e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.42556756734848022, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187612, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317928, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187644, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 326544, + "componentType": 5126, + "count": 62, + "max": [ + -0.20713317394256592, + 0.28850480914115906, + 0.78801411390304565, + 0.54963231086730957 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 187892, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 318024, + "componentType": 5126, + "count": 51, + "max": [ + 1.1920928955078125e-07, + 0.2127840518951416, + 1.862645149230957e-08 + ], + "min": [ + 7.0780515670776367e-08, + 0.21278393268585205, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188096, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 318636, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188252, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 327536, + "componentType": 5126, + "count": 51, + "max": [ + 7.8231160216546414e-08, + 1.0408691650809487e-06, + 2.4959456368378596e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 188456, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319104, + "componentType": 5126, + "count": 8, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957681179046631, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188488, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319200, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188548, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 328352, + "componentType": 5126, + "count": 61, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53586781024932861, + 0.75361925363540649, + -0.15842762589454651, + -0.34612774848937988 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 188792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319380, + "componentType": 5126, + "count": 44, + "max": [ + -1.2259971526873414e-07, + -7.3088671115328907e-08, + -4.0905604237195803e-08 + ], + "min": [ + -1.3599580483969476e-07, + -8.517139349351055e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188968, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319908, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 329328, + "componentType": 5126, + "count": 44, + "max": [ + 1.1175901093452012e-08, + -9.4372563097522288e-09, + -3.5528871511480986e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372580861090682e-09, + -3.5529088004970788e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 189152, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319932, + "componentType": 5126, + "count": 62, + "max": [ + 1.6647391021251678e-08, + 0.31343457102775574, + 2.0343577489256859e-08 + ], + "min": [ + -8.512869853483096e-10, + 0.31343457102775574, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189400, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 320676, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189452, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 330032, + "componentType": 5126, + "count": 62, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210074286907911, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195707328617573 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 189700, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 320832, + "componentType": 5126, + "count": 44, + "max": [ + 8.1534381024539471e-08, + 1.1175870895385742e-07, + 5.4686097428202629e-08 + ], + "min": [ + 7.0023816078901291e-08, + 7.543712854385376e-08, + 3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189876, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 321360, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 331024, + "componentType": 5126, + "count": 44, + "max": [ + -1.8806686763461755e-10, + -6.7157088778913021e-08, + -2.9685904845422328e-09, + 1 + ], + "min": [ + -1.520882619843178e-08, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 190060, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 321384, + "componentType": 5126, + "count": 62, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + 2.3283064365386963e-09, + 0.47875422239303589, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190308, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 322128, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190372, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 331728, + "componentType": 5126, + "count": 62, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 190620, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 322320, + "componentType": 5126, + "count": 62, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 2.7127680368721485e-07 + ], + "min": [ + -9.0803951025009155e-09, + 0.23937720060348511, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190868, + "componentType": 5126, + "count": 28, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323064, + "componentType": 5126, + "count": 28, + "max": [ + 0.99999970197677612, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190980, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 332720, + "componentType": 5126, + "count": 62, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -5.78927199512691e-07, + -0.039239216595888138, + 2.451136253966979e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191228, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323400, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 0.21278379857540131, + 2.2351741790771484e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191404, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323928, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 333712, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897849678993225, + -0.18448299169540405, + -0.78801417350769043, + 0.51688557863235474 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801417350769043, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191596, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323976, + "componentType": 5126, + "count": 23, + "max": [ + 0.15143664181232452, + 0.084600932896137238, + -0.12323371320962906 + ], + "min": [ + 0.15143662691116333, + 0.084600888192653656, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191688, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324252, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191760, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 334416, + "componentType": 5126, + "count": 44, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448290228843689, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324468, + "componentType": 5126, + "count": 44, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 1.5931436792016029e-07 + ], + "min": [ + 3.4458935260772705e-08, + -5.7741999626159668e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192112, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324996, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192168, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 335120, + "componentType": 5126, + "count": 44, + "max": [ + 2.7602067120824358e-07, + 1.0858637722321873e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.4866312742233276e-07, + 9.3830728076227388e-08, + 1.3275710841753607e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 192344, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325164, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 0.42556747794151306, + -1.1175870895385742e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192520, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325692, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192536, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 335824, + "componentType": 5126, + "count": 44, + "max": [ + -0.2789786159992218, + -0.18448291718959808, + -0.7880139946937561, + 0.51688581705093384 + ], + "min": [ + -0.27897864580154419, + -0.18448294699192047, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 192712, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325740, + "componentType": 5126, + "count": 44, + "max": [ + 1.2665987014770508e-07, + 0.21278375387191772, + 8.1956386566162109e-08 + ], + "min": [ + 0, + 0.2127835750579834, + 3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192888, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326268, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192992, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 336528, + "componentType": 5126, + "count": 44, + "max": [ + 1.0640362546610049e-07, + -1.8626433728741176e-09, + -1.3411043653377419e-07, + 1 + ], + "min": [ + 2.1420424545226524e-08, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 193168, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326580, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957693099975586, + -0.15007568895816803 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193200, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326676, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193280, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 337232, + "componentType": 5126, + "count": 61, + "max": [ + -0.5353204607963562, + 0.76489150524139404, + -0.089343681931495667, + 0.34697279334068298 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 193524, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326916, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193828, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 327828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193884, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 338208, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 194188, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 327996, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194316, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 328380, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194396, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 339424, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 194460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 328620, + "componentType": 5126, + "count": 62, + "max": [ + 2.5331974029541016e-07, + -6.5600033849477768e-08, + 3.457535058259964e-07 + ], + "min": [ + 4.1058228816837072e-08, + -7.4505805969238281e-08, + -1.2380769476294518e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194708, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 329364, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999856948852539, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194900, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 339680, + "componentType": 5126, + "count": 62, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 195148, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 329940, + "componentType": 5126, + "count": 76, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195452, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 330852, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195468, + "componentType": 5126, + "count": 57, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 340672, + "componentType": 5126, + "count": 57, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229203581809998, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 195696, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 330900, + "componentType": 5126, + "count": 62, + "max": [ + 2.2351741790771484e-07, + 1.6391277313232422e-07, + 6.7229848355054855e-08 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195944, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 331644, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196036, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 341584, + "componentType": 5126, + "count": 62, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 196284, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 331920, + "componentType": 5126, + "count": 76, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196588, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 332832, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196604, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 342576, + "componentType": 5126, + "count": 61, + "max": [ + 0.26693445444107056, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601046562194824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 196848, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 332880, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196976, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 333264, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197056, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 343552, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 197120, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 333504, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197380, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 334284, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197436, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 343808, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482402078807354, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294226869940758, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 197696, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 334452, + "componentType": 5126, + "count": 61, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197940, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 335184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197972, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 344848, + "componentType": 5126, + "count": 61, + "max": [ + 0.10101209580898285, + 0.79781532287597656, + -0.48497870564460754, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 198216, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 335280, + "componentType": 5126, + "count": 65, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 198476, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336060, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 198564, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 345824, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + 0.39800706505775452, + 0.12996619939804077, + 0.71552276611328125 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 198824, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336324, + "componentType": 5126, + "count": 48, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199016, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336900, + "componentType": 5126, + "count": 17, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999964237213135 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199084, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 346864, + "componentType": 5126, + "count": 48, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516587674617767, + -0.3081190288066864 + ], + "min": [ + 0.92842531204223633, + -0.11126615852117538, + -0.17523978650569916, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 199276, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 337104, + "componentType": 5126, + "count": 65, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199536, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 337884, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199600, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 347632, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 199860, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338076, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200036, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338604, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200060, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 348672, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477138519287109, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790062189102173 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 200236, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338676, + "componentType": 5126, + "count": 66, + "max": [ + -3.5390257835388184e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.25762289762496948, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200500, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 339468, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200548, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 349376, + "componentType": 5126, + "count": 66, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026340842247009, + -0.19707934558391571, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 200812, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 339612, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201092, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 340452, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201164, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 350432, + "componentType": 5126, + "count": 70, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076334238052368, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 201444, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 340668, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201704, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 341448, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201720, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 351552, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 201980, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 341496, + "componentType": 5126, + "count": 61, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202224, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 342228, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202316, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 352592, + "componentType": 5126, + "count": 61, + "max": [ + -0.098626755177974701, + 0.79781526327133179, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101209580898285, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 202560, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 342504, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202820, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 343284, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202900, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 353568, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35182005167007446, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 203160, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 343524, + "componentType": 5126, + "count": 47, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203348, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344088, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203372, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 354608, + "componentType": 5126, + "count": 47, + "max": [ + 0.92845195531845093, + 0.11125477403402328, + 0.17524003982543945, + -0.30811884999275208 + ], + "min": [ + 0.92842662334442139, + 0.11104369908571243, + 0.17516998946666718, + -0.30815878510475159 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 203560, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344160, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203820, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344940, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203852, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 355360, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 204112, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345036, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204288, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345564, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 356400, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477177262306213, + -0.41790032386779785 + ], + "min": [ + 0.81515997648239136, + 0.2049533873796463, + 0.34477171301841736, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 204528, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345756, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-09, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.25762262940406799, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204788, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 346536, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999946355819702, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204880, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 357104, + "componentType": 5126, + "count": 65, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 205140, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 346812, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 205420, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 347652, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 205476, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 358144, + "componentType": 5126, + "count": 70, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 205756, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 347820, + "componentType": 5126, + "count": 76, + "max": [ + 4.6566128730773926e-10, + 3.7252902984619141e-08, + 3.7252902984619141e-09 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206060, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 348732, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206076, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 359264, + "componentType": 5126, + "count": 76, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 206380, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 348780, + "componentType": 5126, + "count": 62, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -4.2778280917588063e-15, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206628, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 349524, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206668, + "componentType": 5126, + "count": 53, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 360480, + "componentType": 5126, + "count": 53, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 206880, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 349644, + "componentType": 5126, + "count": 71, + "max": [ + -2.7533531010703882e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -1.4901154088420299e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207164, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 350496, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207196, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 361328, + "componentType": 5126, + "count": 71, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698613803973785e-08, + -1.8470409202109295e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 207480, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 350592, + "componentType": 5126, + "count": 71, + "max": [ + -6.2172489379008766e-15, + 0.36641570925712585, + 6.2172489379008766e-15 + ], + "min": [ + -3.3750779948604759e-14, + 0.36641567945480347, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207764, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 351444, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207852, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 362464, + "componentType": 5126, + "count": 71, + "max": [ + 0.36187875270843506, + 1.7365225701837517e-08, + 8.7073104282353597e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208136, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 351708, + "componentType": 5126, + "count": 71, + "max": [ + 2.7929047963226594e-15, + 0.74672240018844604, + -1.1102230246251565e-16 + ], + "min": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208420, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352560, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208484, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 363600, + "componentType": 5126, + "count": 71, + "max": [ + 0.096756108105182648, + 1.6351776821466046e-08, + 9.8581814711451443e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -7.8859665464392492e-09, + 9.7168474155751028e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208768, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352752, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208776, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352776, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208792, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 364736, + "componentType": 5126, + "count": 12, + "max": [ + -0.061978887766599655, + 3.3637053523236636e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -2.6537087288140325e-18, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208840, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352824, + "componentType": 5126, + "count": 61, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 1.1713601111296157e-07 + ], + "min": [ + -4.990958046846572e-08, + -1.3287539957218542e-07, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209084, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353556, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000017881393433, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000007152557373, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209164, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 364928, + "componentType": 5126, + "count": 61, + "max": [ + 0.56482315063476562, + 0.78602433204650879, + -0.12704809010028839, + -0.29326319694519043 + ], + "min": [ + 0.52875351905822754, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 209408, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353796, + "componentType": 5126, + "count": 6, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209432, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353868, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209440, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 365904, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 209472, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353892, + "componentType": 5126, + "count": 61, + "max": [ + 1.5542553910563583e-09, + -1.9861484901184667e-08, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810734556886018e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209716, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 354624, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209832, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 366032, + "componentType": 5126, + "count": 61, + "max": [ + -0.52770334482192993, + 0.78695201873779297, + -0.12602679431438446, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307970404624939 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210076, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 354972, + "componentType": 5126, + "count": 6, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210100, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355044, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210108, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367008, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210140, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355068, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210308, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355572, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210316, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367136, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210324, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355596, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210332, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355620, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210340, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367168, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210348, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355644, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210356, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355668, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210364, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367200, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355692, + "componentType": 5126, + "count": 38, + "max": [ + 1.9608137336035725e-10, + 0.19137150049209595, + 5.3722779114195873e-08 + ], + "min": [ + -7.6690298556059133e-10, + 0.1913713812828064, + -6.5486290168337291e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210524, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356148, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367232, + "componentType": 5126, + "count": 38, + "max": [ + -0.13921885192394257, + 5.1049107696599094e-07, + -2.5442389528507192e-08, + 0.99026161432266235 + ], + "min": [ + -0.13921895623207092, + 5.1047686611127574e-07, + -2.5445675788660083e-08, + 0.99026161432266235 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356340, + "componentType": 5126, + "count": 38, + "max": [ + 1.7389822914992692e-10, + 0.30786654353141785, + -1.3369925966344454e-07 + ], + "min": [ + -4.0167478232433496e-09, + 0.30786648392677307, + -3.572166917820141e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210892, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356796, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367840, + "componentType": 5126, + "count": 38, + "max": [ + -0.058453772217035294, + -4.1669062511573429e-07, + 2.4425312972198299e-07, + 0.99829012155532837 + ], + "min": [ + -0.058453813195228577, + -4.1670494965728722e-07, + 2.4424954858659476e-07, + 0.99829012155532837 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357060, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 2.9383227229118347e-07, + 2.0395964384078979e-07 + ], + "min": [ + 1.1175870895385742e-08, + 1.8905848264694214e-07, + 1.9697472453117371e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211284, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357516, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 368448, + "componentType": 5126, + "count": 38, + "max": [ + 1.0943040251731873e-08, + 6.0535971790898202e-09, + 2.6193443858346654e-08, + 1 + ], + "min": [ + 9.7788870334625244e-09, + 2.7939672797572257e-09, + 1.932494164691434e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357564, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.028223449364304543, + 4.8428773880004883e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223354369401932, + 1.8626450382086546e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211604, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358020, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000004768371582, + 1.0000003576278687, + 1.0000007152557373 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211620, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 369056, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234389245510101, + -0.058250237256288528, + -0.038226820528507233, + 0.99122375249862671 + ], + "min": [ + 0.11234388500452042, + -0.058250244706869125, + -0.038226842880249023, + 0.99122369289398193 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358068, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.2852251529693604e-07, + -1.5646219253540039e-07 + ], + "min": [ + -7.4505805969238281e-09, + 3.3527612686157227e-08, + -1.8998980522155762e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211924, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358524, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211940, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 369664, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132248579763655e-09, + -4.5634791945303732e-08, + -1.9557774066925049e-08, + 1 + ], + "min": [ + -1.8626449715952731e-08, + -5.215405352032576e-08, + -2.0489094865183688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212092, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358572, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.045040123164653778, + -4.2840838432312012e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.045039854943752289, + -4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212244, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359028, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 370272, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882871031761169, + -0.038419146090745926, + -9.6820382168516517e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882863581180573, + -0.038419149816036224, + -9.6826464869081974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359124, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.022519811987876892, + 5.029141902923584e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.02251964807510376, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212580, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359580, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 370880, + "componentType": 5126, + "count": 38, + "max": [ + 5.2992254495620728e-07, + -9.3691062375000911e-07, + 2.4959442157523881e-07, + 1 + ], + "min": [ + 5.1688402891159058e-07, + -9.4249861604112084e-07, + 2.4586915969848633e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359628, + "componentType": 5126, + "count": 38, + "max": [ + -3.3527612686157227e-08, + 0.069626115262508392, + 2.6077032089233398e-08 + ], + "min": [ + -1.0803341865539551e-07, + 0.069626078009605408, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212900, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360084, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 371488, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803956568241119, + -0.038298234343528748, + -0.044083669781684875, + 0.98228907585144043 + ], + "min": [ + 0.17803953588008881, + -0.038298241794109344, + -0.044083710759878159, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360156, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + -1.3032695278525352e-07, + -1.1548399925231934e-07 + ], + "min": [ + -2.5704503059387207e-07, + -1.3821409083902836e-07, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213228, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360612, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 372096, + "componentType": 5126, + "count": 38, + "max": [ + 1.3387760899874479e-09, + 5.5879350036036612e-09, + 7.3923736465530965e-08, + 1 + ], + "min": [ + -5.2386911475466036e-10, + 3.7252956275324323e-09, + 6.61821175640398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360636, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.033446658402681351, + -2.2351741790771484e-08 + ], + "min": [ + -6.5192580223083496e-08, + 0.033446494489908218, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213540, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361092, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 372704, + "componentType": 5126, + "count": 38, + "max": [ + 0.021509945392608643, + 0.016420753672719002, + -0.03873918205499649, + 0.99888283014297485 + ], + "min": [ + 0.021509720012545586, + 0.016420742496848106, + -0.038739196956157684, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213732, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361212, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 2.1266168914735317e-07, + -4.0978193283081055e-08 + ], + "min": [ + -9.4994902610778809e-08, + 1.6755075193941593e-07, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213884, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361668, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 373312, + "componentType": 5126, + "count": 38, + "max": [ + -3.4924460545759928e-10, + 6.7278821148784211e-16, + 4.2316962378663447e-08, + 1 + ], + "min": [ + -1.1641513308902063e-09, + -1.8626444386882213e-08, + 4.1967719965896322e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214068, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361764, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.041744876652956009, + 2.9802322387695312e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.041744541376829147, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214220, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362220, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 1.0000003576278687, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 373920, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518168151378632, + 0.0088785281404852867, + -0.057382617145776749, + 0.98455244302749634 + ], + "min": [ + 0.16518144309520721, + 0.0088785169646143913, + -0.057382632046937943, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362268, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.02087247371673584, + 5.2154064178466797e-08 + ], + "min": [ + 1.3038516044616699e-08, + 0.02087213471531868, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362724, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 374528, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566119848989729e-09, + -1.0384243864791642e-07, + -1.4342366227992898e-07, + 1 + ], + "min": [ + 1.8626448161640496e-09, + -1.1548398504146462e-07, + -1.5087421445514337e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362772, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898095905780792, + -0.0083237793296575546, + 0.023024274036288261 + ], + "min": [ + -0.0086899511516094208, + -0.0083238938823342323, + 0.023024184629321098 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214860, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363228, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 375136, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063957325182855129, + 0.6579899787902832, + 0.2625289261341095, + 0.7057526707649231 + ], + "min": [ + 0.0063956384547054768, + 0.6579899787902832, + 0.2625289261341095, + 0.7057526707649231 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363276, + "componentType": 5126, + "count": 38, + "max": [ + -6.7055225372314453e-08, + 1.1734664440155029e-07, + -8.3819031715393066e-08 + ], + "min": [ + -1.4528632164001465e-07, + 7.9628080129623413e-08, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215180, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363732, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 375744, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695130694050931e-08, + 1.4901161193847656e-08, + -6.8917884732400125e-08, + 1 + ], + "min": [ + 9.3132324074929329e-10, + 1.4901160305669237e-08, + -7.4505820180092996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363828, + "componentType": 5126, + "count": 38, + "max": [ + -3.3527612686157227e-08, + 0.069626115262508392, + 2.6077032089233398e-08 + ], + "min": [ + -1.0803341865539551e-07, + 0.069626078009605408, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215516, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364284, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 376352, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + -0.038296099752187729, + -0.044083870947360992, + 0.98228931427001953 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364428, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898095905780792, + -0.0083237793296575546, + 0.023024274036288261 + ], + "min": [ + -0.0086899511516094208, + -0.0083238938823342323, + 0.023024184629321098 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215868, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364884, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 376960, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958712853491306, + 0.65798985958099365, + 0.26252922415733337, + 0.7057526707649231 + ], + "min": [ + 0.0063958242535591125, + 0.65798985958099365, + 0.26252919435501099, + 0.7057526707649231 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216068, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365028, + "componentType": 5126, + "count": 26, + "max": [ + 0.0073303133249282837, + 0.34354427456855774, + -0.021197903901338577 + ], + "min": [ + 0.0073303133249282837, + 0.34354415535926819, + -0.021197918802499771 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216172, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365340, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 377568, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320602178573608, + -0.1123732328414917, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320603668689728, + -0.11237326264381409, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365388, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + -3.2130628824234009e-08, + -3.4167896956205368e-08 + ], + "min": [ + -2.9569491744041443e-08, + -1.1548399925231934e-07, + -8.5768988355994225e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216492, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365844, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216508, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 378176, + "componentType": 5126, + "count": 38, + "max": [ + 7.916240107874728e-09, + 3.2596290111541748e-08, + 3.359308919925752e-08, + 1 + ], + "min": [ + 6.2864264904760603e-09, + 3.1781382858753204e-08, + 1.5192197722058154e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365892, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.032196149230003357, + 3.0966475605964661e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.032196048647165298, + 2.7706846594810486e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216812, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366348, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 378784, + "componentType": 5126, + "count": 38, + "max": [ + 0.056477118283510208, + -0.045752909034490585, + -0.025043394416570663, + 0.99704056978225708 + ], + "min": [ + 0.056476995348930359, + -0.045752916485071182, + -0.02504340186715126, + 0.9970405101776123 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366444, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 2.9429793357849121e-07, + 3.1897798180580139e-08 + ], + "min": [ + -4.8428773880004883e-08, + 1.9744038581848145e-07, + 2.8172507882118225e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217148, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366900, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217196, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 379392, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + -3.294554318244991e-08, + -1.4901164746561335e-08, + 1 + ], + "min": [ + -1.1641534847228741e-08, + -3.7485740733700368e-08, + -1.6298146832127713e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367044, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.049540463835000992, + 7.1711838245391846e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.049540374428033829, + -2.8870999813079834e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217500, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367500, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 380000, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846247315406799, + -0.085242301225662231, + -0.013570677489042282, + 0.98919981718063354 + ], + "min": [ + 0.11846235394477844, + -0.085242308676242828, + -0.013570706360042095, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367548, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.024769939482212067, + 1.4528632164001465e-07 + ], + "min": [ + 1.1102230246251565e-16, + 0.024769911542534828, + 1.5832483768463135e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217820, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368004, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 380608, + "componentType": 5126, + "count": 38, + "max": [ + -5.7276332654510043e-07, + 9.443612611903518e-07, + -1.4528632164001465e-07, + 1 + ], + "min": [ + -5.7835137567963102e-07, + 9.4063597089188988e-07, + -1.5646219253540039e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368052, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.068187065422534943, + 2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.068187050521373749, + -2.4214386940002441e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368508, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000004768371582, + 1, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 381216, + "componentType": 5126, + "count": 38, + "max": [ + 0.2174915075302124, + -0.069006450474262238, + -0.0030256684403866529, + 0.97361516952514648 + ], + "min": [ + 0.2174912691116333, + -0.069006644189357758, + -0.0030258155893534422, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 218324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368604, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 7.2177499532699585e-08, + -2.2351741790771484e-08 + ], + "min": [ + -1.1175870895385742e-08, + 5.4889824241399765e-08, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369060, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 381824, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566118072632889e-08, + 1.1175871783564162e-08, + -2.0023435354232788e-08, + 1 + ], + "min": [ + 3.4924582337225729e-08, + 7.8843224334793245e-16, + -2.0954757928848267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 218644, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369108, + "componentType": 5126, + "count": 43, + "max": [ + 5.2154064178466797e-08, + 0.068187065422534943, + 2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.068187050521373749, + -2.4214386940002441e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218816, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369624, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218848, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 382432, + "componentType": 5126, + "count": 43, + "max": [ + 0.21749988198280334, + -0.06897987425327301, + -0.0029058454092592001, + 0.97361552715301514 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575799755752087, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369720, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247243836522102, + 0.34059709310531616, + -0.015326393768191338 + ], + "min": [ + 0.023247215896844864, + 0.3405967652797699, + -0.015326423570513725 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219172, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 370176, + "componentType": 5126, + "count": 34, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999940395355225, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219308, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 383120, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811863124370575, + -0.1316990852355957, + -0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811867594718933, + -0.13169914484024048, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 370584, + "componentType": 5126, + "count": 38, + "max": [ + 4.71482053399086e-08, + 7.4767740443348885e-08, + 9.8283635452389717e-08 + ], + "min": [ + -1.1484371498227119e-07, + -6.5308995544910431e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219612, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371040, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 383728, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763804566721774e-08, + -5.5879358917820809e-09, + 1.4901161193847656e-08, + 1 + ], + "min": [ + -7.4505805969238281e-09, + -7.4505814851022478e-09, + -6.5192580223083496e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371088, + "componentType": 5126, + "count": 38, + "max": [ + 4.691537469625473e-08, + 0.031801041215658188, + 1.6631020116619766e-08 + ], + "min": [ + -1.3387762010097504e-09, + 0.031800851225852966, + -1.4128181646810845e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219932, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371544, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219956, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 384336, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024156868457794, + -0.10080225765705109, + -0.057818204164505005, + 0.9817960262298584 + ], + "min": [ + 0.15024153888225555, + -0.10080227255821228, + -0.057818204164505005, + 0.9817960262298584 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220108, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371616, + "componentType": 5126, + "count": 38, + "max": [ + 4.2840838432312012e-08, + 1.2083910405635834e-07, + -1.9850267563015223e-07 + ], + "min": [ + -4.6566128730773926e-09, + -1.8719583749771118e-07, + -3.5912671592086554e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220260, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 384944, + "componentType": 5126, + "count": 38, + "max": [ + -8.2654878497123718e-09, + -2.0256267774243497e-08, + -1.6058038454502821e-08, + 1 + ], + "min": [ + -8.6729423642850634e-09, + -2.0721927285194397e-08, + -1.6138072211901999e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372120, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.044816639274358749, + 4.71482053399086e-08 + ], + "min": [ + -2.3283064365386963e-09, + 0.044816464185714722, + -5.7392753660678864e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220580, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372576, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 385552, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152385652065277, + -0.05260106548666954, + -0.024043366312980652, + 0.99564236402511597 + ], + "min": [ + 0.073152370750904083, + -0.052601072937250137, + -0.024043368175625801, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372672, + "componentType": 5126, + "count": 38, + "max": [ + -1.0058283805847168e-07, + 0.022408422082662582, + 3.4691765904426575e-08 + ], + "min": [ + -1.0244548320770264e-07, + 0.022408256307244301, + -1.0710209608078003e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220916, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373128, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 386160, + "componentType": 5126, + "count": 38, + "max": [ + -6.2072638229437871e-07, + 9.5181150072676246e-07, + -5.2154057073039439e-08, + 1 + ], + "min": [ + -6.2258897060019081e-07, + 9.4901747615949716e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373176, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069797426462173462, + -1.1082738637924194e-07 + ], + "min": [ + -1.6763806343078613e-08, + 0.069797202944755554, + -2.5285407900810242e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221236, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373632, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 1.0000004768371582 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 386768, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130194544792175, + -0.10888326913118362, + 0.021744642406702042, + 0.95317405462265015 + ], + "min": [ + 0.28130194544792175, + -0.10888326913118362, + 0.021744638681411743, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373728, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-08, + 1.1641533292916506e-09, + 5.5879354476928711e-08 + ], + "min": [ + 5.5879354476928711e-08, + -1.8812716007232666e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221572, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221604, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 387376, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566139388914962e-08, + -4.842878098543224e-08, + -2.4214388716359281e-08, + 1 + ], + "min": [ + 4.1909530068551248e-08, + -5.2154078389321512e-08, + -3.9115555239277455e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221756, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374280, + "componentType": 5126, + "count": 42, + "max": [ + 1.862645149230957e-08, + 0.069797426462173462, + -1.1082738637924194e-07 + ], + "min": [ + -1.6763806343078613e-08, + 0.069797202944755554, + -2.5285407900810242e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221924, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374784, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221972, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 387984, + "componentType": 5126, + "count": 42, + "max": [ + 0.28130325675010681, + -0.10888498276472092, + 0.02174454927444458, + 0.95317399501800537 + ], + "min": [ + 0.28130078315734863, + -0.1088913306593895, + 0.02172304131090641, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374928, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954458475112915, + 0.33536893129348755, + -0.0064071808010339737 + ], + "min": [ + 0.034954432398080826, + 0.335368812084198, + -0.0064071919769048691 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222292, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375384, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 388656, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + -0.16701884567737579, + -0.22579605877399445, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + -0.16701890528202057, + -0.22579607367515564, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375480, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 1.3224780559539795e-07, + 8.5681676864624023e-08 + ], + "min": [ + 4.6566128730773926e-08, + 9.6391886472702026e-08, + 6.1467289924621582e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222628, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375936, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 389264, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901164746561335e-08, + -1.8626455933201669e-09, + 4.097820749393577e-08, + 1 + ], + "min": [ + 7.4505841496375069e-09, + -6.5192589104867693e-09, + 2.2351748896198842e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376032, + "componentType": 5126, + "count": 38, + "max": [ + 6.1467289924621582e-08, + 0.022592440247535706, + 4.5634806156158447e-08 + ], + "min": [ + -1.6763806343078613e-08, + 0.022592190653085709, + 1.2107193470001221e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222964, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376488, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1.0000004768371582, + 1 + ], + "min": [ + 0.99999988079071045, + 1.0000004768371582, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 389872, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399168342351913, + -0.028591925278306007, + 0.99515920877456665 + ], + "min": [ + 0.082881748676300049, + -0.044399172067642212, + -0.028591945767402649, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376584, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 9.9651515483856201e-08, + 1.7927959561347961e-08 + ], + "min": [ + -1.2107193470001221e-08, + -1.4901161193847656e-07, + -9.7788870334625244e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223300, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377040, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223316, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 390480, + "componentType": 5126, + "count": 38, + "max": [ + -9.7788870334625244e-09, + 6.6356737882244943e-09, + 1.8626450382086546e-09, + 1 + ], + "min": [ + -9.7788888098193638e-09, + -8.149072527885437e-10, + -2.0954757928848267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223468, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377088, + "componentType": 5126, + "count": 38, + "max": [ + 4.0046870708465576e-08, + 0.027876328676939011, + 1.8393620848655701e-08 + ], + "min": [ + 3.166496753692627e-08, + 0.027876287698745728, + -7.0314854383468628e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223620, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377544, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999982118606567, + 0.99999946355819702, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999934434890747, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 391088, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518151760101318, + -0.028988027945160866, + -0.020971927791833878, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + -0.028988031670451164, + -0.020971933379769325, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377688, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.013938155956566334, + -1.287553459405899e-07 + ], + "min": [ + -2.3283064365386963e-08, + 0.013938115909695625, + -2.1001324057579041e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223972, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378144, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 391696, + "componentType": 5126, + "count": 38, + "max": [ + 5.5995769798755646e-08, + -1.3387762010097504e-07, + 5.6446882723548697e-08, + 1 + ], + "min": [ + 5.4889820688686086e-08, + -1.4319083163627511e-07, + 5.6243152357637882e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378192, + "componentType": 5126, + "count": 38, + "max": [ + 1.8160790205001831e-08, + 0.074802502989768982, + 7.2410330176353455e-08 + ], + "min": [ + -8.7078660726547241e-08, + 0.074802331626415253, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224292, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378648, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 392304, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + -0.17872515320777893, + 0.015338514000177383, + 0.91919606924057007 + ], + "min": [ + 0.3505719006061554, + -0.17872516810894012, + 0.015338463708758354, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378672, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + -2.0954757928848267e-08, + 1.6763806343078613e-08 + ], + "min": [ + -4.7497451305389404e-08, + -1.9348226487636566e-07, + -2.1420419216156006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224604, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379128, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224620, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 392912, + "componentType": 5126, + "count": 38, + "max": [ + -3.9115551686563776e-08, + -2.2351740014414645e-08, + -2.2351741790771484e-08, + 1 + ], + "min": [ + -5.5879354476928711e-08, + -3.3527609133443548e-08, + -2.6077032089233398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224772, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379176, + "componentType": 5126, + "count": 43, + "max": [ + 1.8160790205001831e-08, + 0.074802502989768982, + 7.2410330176353455e-08 + ], + "min": [ + -8.7078660726547241e-08, + 0.074802331626415253, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224944, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379692, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 0.99999958276748657, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224960, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 393520, + "componentType": 5126, + "count": 43, + "max": [ + 0.35057201981544495, + -0.1787249892950058, + 0.015338686294853687, + 0.91919809579849243 + ], + "min": [ + 0.3505479097366333, + -0.17877218127250671, + 0.015214980579912663, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379740, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579196721315384, + 0.32914412021636963, + 0.0039985207840800285 + ], + "min": [ + 0.044579189270734787, + 0.32914403080940247, + 0.0039984970353543758 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225284, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380196, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 394208, + "componentType": 5126, + "count": 38, + "max": [ + -0.13569992780685425, + -0.18749420344829559, + -0.27479094266891479, + 0.93323171138763428 + ], + "min": [ + -0.13569995760917664, + -0.18749421834945679, + -0.27479094266891479, + 0.93323171138763428 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380484, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-08, + 3.9709266275167465e-07, + 1.2200325727462769e-07 + ], + "min": [ + 4.6566128730773926e-09, + 2.9383227229118347e-07, + 1.0337680578231812e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225684, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380940, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225700, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 394816, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 8.5914507508277893e-08, + -2.4214383387288763e-08, + 1 + ], + "min": [ + 1.5832483768463135e-08, + 7.8463926911354065e-08, + -2.6077030312876559e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225852, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380988, + "componentType": 5126, + "count": 38, + "max": [ + 2.2817403078079224e-08, + 0.25792235136032104, + -5.7741999626159668e-08 + ], + "min": [ + 4.6566128730773926e-10, + 0.25792220234870911, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226004, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381444, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 395424, + "componentType": 5126, + "count": 38, + "max": [ + 0.068233758211135864, + 0.862018883228302, + 0.19106140732765198, + 0.46450307965278625 + ], + "min": [ + 0.068233713507652283, + 0.862018883228302, + 0.19106137752532959, + 0.46450307965278625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226172, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381492, + "componentType": 5126, + "count": 40, + "max": [ + 1.0244548320770264e-07, + 0.12896154820919037, + -1.1548399925231934e-07 + ], + "min": [ + 8.4750354290008545e-08, + 0.12896141409873962, + -1.601874828338623e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226332, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381972, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 1.0000007152557373, + 1 + ], + "min": [ + 0.9999997615814209, + 1.0000004768371582, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226356, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 396032, + "componentType": 5126, + "count": 40, + "max": [ + -6.2189855043470743e-07, + 0.88032644987106323, + 1.1622662441368448e-06, + 0.47436851263046265 + ], + "min": [ + -1.418846863998624e-06, + 0.88032639026641846, + 5.295203209243482e-07, + 0.4743683934211731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382044, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.13927125930786133, + 1.5646219253540039e-07 + ], + "min": [ + -5.029141902923584e-08, + 0.13927124440670013, + 5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226668, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382500, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000025033950806, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000025033950806, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 396672, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + 0.090401411056518555, + -0.19322693347930908, + 0.94302970170974731 + ], + "min": [ + 0.25531527400016785, + 0.090401403605937958, + -0.19322702288627625, + 0.94302964210510254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226844, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382572, + "componentType": 5126, + "count": 37, + "max": [ + 0.044326554983854294, + -0.11071427166461945, + 0.071930237114429474 + ], + "min": [ + 0.044326547533273697, + -0.1107143834233284, + 0.071930132806301117 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226992, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383016, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999696016311646, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.9999966025352478, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 397280, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531521439552307, + -0.090401507914066315, + 0.19322693347930908, + 0.94302976131439209 + ], + "min": [ + -0.25531545281410217, + -0.090401515364646912, + 0.19322682917118073, + 0.94302964210510254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 227200, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383184, + "componentType": 5126, + "count": 39, + "max": [ + 1.1175870895385742e-07, + 4.0233135223388672e-07, + -2.3096799850463867e-07 + ], + "min": [ + 4.6566128730773926e-08, + 1.1175870895385742e-07, + -2.5331974029541016e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227356, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383652, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000013113021851, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000008344650269, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227404, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 397888, + "componentType": 5126, + "count": 39, + "max": [ + 5.858014446857851e-07, + 3.1013033208182605e-07, + -9.3132017653374533e-09, + 1 + ], + "min": [ + 3.5529927799871075e-07, + -6.7520858237912762e-07, + -1.8067647999941983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 227560, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383796, + "componentType": 5126, + "count": 65, + "max": [ + 5.5879354476928711e-08, + 0.27854284644126892, + 1.4901161193847656e-08 + ], + "min": [ + -9.1269612312316895e-08, + 0.27854281663894653, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227820, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 384576, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227860, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 398512, + "componentType": 5126, + "count": 65, + "max": [ + 0.43454089760780334, + 0.090401515364646912, + -0.19322660565376282, + 0.94302982091903687 + ], + "min": [ + 0.25531500577926636, + 0.050930976867675781, + -0.20715935528278351, + 0.8750230073928833 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 228120, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 384696, + "componentType": 5126, + "count": 42, + "max": [ + 7.0780515670776367e-08, + 0.13927155733108521, + -1.1920928955078125e-07 + ], + "min": [ + -1.3038516044616699e-07, + 0.13927146792411804, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228288, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 385200, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228320, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 399552, + "componentType": 5126, + "count": 42, + "max": [ + 3.5390252151046298e-07, + -4.8540514399064705e-06, + 5.4389272463595262e-07, + 1 + ], + "min": [ + -6.4447777958775987e-07, + -4.8652277655492071e-06, + -5.2899105185133521e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 228488, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 385296, + "componentType": 5126, + "count": 64, + "max": [ + -0.027315571904182434, + 0.3344607949256897, + 0.019757352769374847 + ], + "min": [ + -0.027315765619277954, + 0.33446058630943298, + 0.019757268950343132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228744, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386064, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000007152557373 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228776, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 400224, + "componentType": 5126, + "count": 64, + "max": [ + -0.23410739004611969, + 0.70804411172866821, + -0.34092059731483459, + 0.58119267225265503 + ], + "min": [ + -0.2405877411365509, + 0.70021218061447144, + -0.38839545845985413, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386160, + "componentType": 5126, + "count": 38, + "max": [ + 1.126900315284729e-07, + 7.2643160820007324e-08, + 3.5253106034360826e-07 + ], + "min": [ + -4.6566128730773926e-08, + -4.0978193283081055e-08, + 1.1504744179546833e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229184, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386616, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 401248, + "componentType": 5126, + "count": 38, + "max": [ + 1.7826088383188221e-09, + 8.7609812737809989e-08, + 5.9604651880817983e-08, + 1 + ], + "min": [ + 1.4551704459464521e-11, + 8.2211052188085887e-08, + 5.5879354476928711e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229360, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386688, + "componentType": 5126, + "count": 38, + "max": [ + 0.023130053654313087, + 0.26697880029678345, + 0.14965307712554932 + ], + "min": [ + 0.023130031302571297, + 0.26697814464569092, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229512, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387144, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999940395355225, + 0.9999995231628418, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 401856, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586658477783203, + -0.39777597784996033, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777597784996033, + -0.29703003168106079, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229688, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387216, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -2.6542693376541138e-08, + 5.0757080316543579e-08 + ], + "min": [ + -4.0978193283081055e-08, + -4.3306499719619751e-08, + 1.7229467630386353e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229840, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387672, + "componentType": 5126, + "count": 13, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 402464, + "componentType": 5126, + "count": 38, + "max": [ + 1.0477380740780973e-08, + 1.0477380740780973e-08, + 3.7834999022656746e-10, + 1 + ], + "min": [ + 1.0244547432591844e-08, + 8.8475653470254656e-09, + -3.4633558243513107e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387828, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.028223361819982529, + 5.7741999626159668e-08 + ], + "min": [ + -4.8428773880004883e-08, + 0.028223231434822083, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 403072, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234394460916519, + 0.058250237256288528, + 0.03822680190205574, + 0.99122375249862671 + ], + "min": [ + 0.11234384775161743, + 0.058250222355127335, + 0.038226794451475143, + 0.99122369289398193 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388332, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + -9.406358003616333e-08, + 5.5879354476928711e-08 + ], + "min": [ + -5.5879354476928711e-08, + -1.0617077350616455e-07, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230516, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388788, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 403680, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + -5.5879358917820809e-09, + -2.7939681679356454e-09, + 1 + ], + "min": [ + -1.3038516932795119e-08, + -1.1175871783564162e-08, + -1.0244549208948683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388836, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.045039951801300049, + 6.5192580223083496e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.045039821416139603, + 5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230836, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389292, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 404288, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882982790470123, + 0.038419175893068314, + 9.6834897703956813e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882885932922363, + 0.03841916099190712, + 9.6816547738853842e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389388, + "componentType": 5126, + "count": 38, + "max": [ + -1.5646219253540039e-07, + 0.022520085796713829, + 1.2852251529693604e-07 + ], + "min": [ + -2.123415470123291e-07, + 0.022519957274198532, + 1.2107193470001221e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231172, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389844, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231196, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 404896, + "componentType": 5126, + "count": 38, + "max": [ + 6.370246410369873e-07, + 9.5181161441360018e-07, + -1.899897910107029e-07, + 1 + ], + "min": [ + 6.3609331846237183e-07, + 9.3877309836898348e-07, + -2.0116567611694336e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389916, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626159965991974, + 8.1956386566162109e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.069626130163669586, + -5.029141902923584e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231500, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390372, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999958276748657, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 405504, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803962528705597, + 0.038298372179269791, + 0.044083680957555771, + 0.98228907585144043 + ], + "min": [ + 0.17803952097892761, + 0.038298349827528, + 0.044083677232265472, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390468, + "componentType": 5126, + "count": 38, + "max": [ + 1.8998980522155762e-07, + -3.1141100809151112e-09, + 9.6857547760009766e-08 + ], + "min": [ + -7.4505805969238281e-09, + -2.8300564736127853e-07, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231836, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390924, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 406112, + "componentType": 5126, + "count": 38, + "max": [ + 4.1909506975912336e-09, + -3.1664960431498912e-08, + -7.1129747425402456e-08, + 1 + ], + "min": [ + -3.841705176199639e-09, + -4.8428759669150168e-08, + -7.3574469183768088e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390948, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.033446475863456726, + 7.4505805969238281e-08 + ], + "min": [ + -4.8428773880004883e-08, + 0.033446416258811951, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232148, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391404, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 406720, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510293707251549, + -0.016420742496848106, + 0.038739167153835297, + 0.99888283014297485 + ], + "min": [ + 0.021510280668735504, + -0.016420777887105942, + 0.0387391597032547, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 232332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391500, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + -1.2252712622284889e-08, + 3.7252902984619141e-09 + ], + "min": [ + -1.3038516044616699e-08, + -1.9383151084184647e-07, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391956, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 407328, + "componentType": 5126, + "count": 38, + "max": [ + 2.3632310330867767e-08, + 2.4214385163645602e-08, + -5.2968980313039538e-09, + 1 + ], + "min": [ + 1.8393620848655701e-08, + 1.8626438169633275e-09, + -1.501757829203143e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 232652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392004, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.041744723916053772, + 7.4505805969238281e-09 + ], + "min": [ + -4.6566128730773926e-08, + 0.041744433343410492, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232804, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392460, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 407936, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518194973468781, + -0.0088785011321306229, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518193483352661, + -0.0088785188272595406, + 0.057382576167583466, + 0.98455232381820679 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392628, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695128917694092e-07, + 0.02087240107357502, + 9.3132257461547852e-08 + ], + "min": [ + 1.4528632164001465e-07, + 0.020872339606285095, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233164, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393084, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 408544, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634813261585805e-08, + -1.3038517820973539e-08, + 1.1175872671742582e-08, + 1 + ], + "min": [ + -4.7497461963530441e-08, + -1.4435502571075176e-08, + 1.1175872671742582e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393156, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899958550930023, + -0.0083237998187541962, + 0.023024166002869606 + ], + "min": [ + 0.0086899064481258392, + -0.0083241984248161316, + 0.023024147376418114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233492, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393612, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 409152, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956673257052898, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063956673257052898, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393756, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-07, + 5.9138983488082886e-08, + -3.2782554626464844e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-09, + -4.6566128730773926e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233844, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394212, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 409760, + "componentType": 5126, + "count": 38, + "max": [ + 1.8626445941194447e-09, + 3.7252902984619141e-09, + 3.9115551686563776e-08, + 1 + ], + "min": [ + -1.3038516044616699e-08, + 3.4694456284646341e-17, + 3.3527609133443548e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394308, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626159965991974, + 8.1956386566162109e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.069626130163669586, + -5.029141902923584e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234180, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394764, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999970197677612, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 410368, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083885848522186, + 0.98228931427001953 + ], + "min": [ + 0.17803847789764404, + 0.038296077400445938, + 0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394908, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899958550930023, + -0.0083237998187541962, + 0.023024166002869606 + ], + "min": [ + 0.0086899064481258392, + -0.0083241984248161316, + 0.023024147376418114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234532, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395364, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999964237213135, + 1, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 410976, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958549872040749, + -0.65798979997634888, + -0.26252904534339905, + 0.70575278997421265 + ], + "min": [ + 0.0063958517275750637, + -0.65798979997634888, + -0.26252913475036621, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395460, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303505778312683, + 0.34354403614997864, + -0.021197754889726639 + ], + "min": [ + -0.0073303952813148499, + 0.34354394674301147, + -0.021197829395532608 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234868, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395916, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234884, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 411584, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237329989671707, + 0.12725980579853058, + 0.96830403804779053 + ], + "min": [ + -0.18320611119270325, + 0.11237329989671707, + 0.12725980579853058, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395964, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + 1.8300488591194153e-07, + 6.679329089820385e-08 + ], + "min": [ + -6.1001628637313843e-08, + 8.6612999439239502e-08, + 3.3061951398849487e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235188, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396420, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 412192, + "componentType": 5126, + "count": 38, + "max": [ + -5.8207649811237161e-10, + -9.5460581661654942e-09, + 1.053558751351602e-08, + 1 + ], + "min": [ + -1.2223611012274205e-09, + -9.7788888098193638e-09, + 1.6007108971649586e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396468, + "componentType": 5126, + "count": 38, + "max": [ + 6.891787052154541e-08, + 0.032196070998907089, + 5.2852556109428406e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.032196000218391418, + -4.4237822294235229e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396924, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 412800, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647701770067215, + 0.045752882957458496, + 0.025043483823537827, + 0.99704056978225708 + ], + "min": [ + 0.056476905941963196, + 0.045752879232168198, + 0.025043481960892677, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396972, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + -1.9557774066925049e-08, + 9.1269612312316895e-08 + ], + "min": [ + -1.4901161193847656e-08, + -8.754432201385498e-08, + 2.5844201445579529e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235828, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397428, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 413408, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566139833004172e-10, + 3.6554411053657532e-08, + -2.0372683096070432e-08, + 1 + ], + "min": [ + 1.0810849588907106e-16, + 3.4342523491659449e-08, + -2.8288928533015678e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397452, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489096641540527e-08, + 0.04954046756029129, + 6.7055225372314453e-08 + ], + "min": [ + -1.3038516044616699e-08, + 0.049540463835000992, + -8.4750354290008545e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397908, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000007152557373, + 0.99999988079071045, + 0.99999946355819702 + ], + "min": [ + 1.0000004768371582, + 0.99999988079071045, + 0.99999940395355225 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 414016, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846236884593964, + 0.085242271423339844, + 0.013570730574429035, + 0.98919981718063354 + ], + "min": [ + 0.11846225708723068, + 0.08524225652217865, + 0.013570702634751797, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398004, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-08, + 0.024770235642790794, + -4.9360096454620361e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.024770103394985199, + -1.4249235391616821e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398460, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 414624, + "componentType": 5126, + "count": 38, + "max": [ + -5.7928264141082764e-07, + -9.5833092927932739e-07, + 1.8626450071224099e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + -9.6578150987625122e-07, + 1.8440185556301003e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236644, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398508, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.068187199532985687, + 2.2351741790771484e-08 + ], + "min": [ + 4.8428773880004883e-08, + 0.068187020719051361, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236796, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398964, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 415232, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749137341976166, + 0.06900671124458313, + 0.003025800222530961, + 0.97361516952514648 + ], + "min": [ + 0.21749132871627808, + 0.069006681442260742, + 0.0030257555190473795, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399060, + "componentType": 5126, + "count": 38, + "max": [ + 1.0058283805847168e-07, + 1.4936085790395737e-07, + 7.6368451118469238e-08 + ], + "min": [ + 9.3132257461547852e-08, + -2.9918737709522247e-08, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237132, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 415840, + "componentType": 5126, + "count": 38, + "max": [ + -6.2864291550113194e-09, + 2.2351743567128324e-08, + 1.5366824257512235e-08, + 1 + ], + "min": [ + -1.6996638763089322e-08, + 1.862645326866641e-08, + -7.9162436605884068e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 237316, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399612, + "componentType": 5126, + "count": 59, + "max": [ + 5.9604644775390625e-08, + 0.068187199532985687, + 2.2351741790771484e-08 + ], + "min": [ + 4.8428773880004883e-08, + 0.068187020719051361, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237552, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400320, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999982118606567, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999958276748657, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237616, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 416448, + "componentType": 5126, + "count": 59, + "max": [ + 0.21750231087207794, + 0.069030478596687317, + 0.0031375305261462927, + 0.97361564636230469 + ], + "min": [ + 0.21748349070549011, + 0.068971209228038788, + 0.0028722158167511225, + 0.97361487150192261 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 237852, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400512, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247269913554192, + 0.34059673547744751, + -0.015326129272580147 + ], + "min": [ + -0.023247310891747475, + 0.3405965268611908, + -0.015326287597417831 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238004, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400968, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999964237213135, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 417392, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811869084835052, + 0.13169917464256287, + 0.1671958714723587, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169915974140167, + 0.16719581186771393, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401112, + "componentType": 5126, + "count": 38, + "max": [ + -2.2060703486204147e-08, + 3.0675437301397324e-07, + -1.6996636986732483e-08 + ], + "min": [ + -8.8766682893037796e-08, + 1.3812677934765816e-07, + -6.9005182012915611e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401568, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 418000, + "componentType": 5126, + "count": 38, + "max": [ + -1.6763801014008095e-08, + 1.8626444830971423e-09, + -3.7252889661942845e-09, + 1 + ], + "min": [ + -2.4214379834575084e-08, + -5.5879341154252415e-09, + -6.5192566900407201e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401616, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.031801052391529083, + 1.7423190001863986e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.0318010114133358, + 8.9912646217271686e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238676, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402072, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 418608, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024083852767944, + 0.10080226510763168, + 0.057818274945020676, + 0.98179614543914795 + ], + "min": [ + 0.15024082362651825, + 0.10080224275588989, + 0.05781826376914978, + 0.98179614543914795 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402120, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-09, + 1.2107193470001221e-07, + -1.7505954019725323e-08 + ], + "min": [ + -3.4924596548080444e-08, + 8.0093741416931152e-08, + -6.9710949901491404e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238996, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402576, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 419216, + "componentType": 5126, + "count": 38, + "max": [ + 5.8207656472575309e-09, + -1.4319084584712982e-08, + -6.8393992691540006e-09, + 1 + ], + "min": [ + 5.7043494372521764e-09, + -1.4784744095663882e-08, + -1.4646501789172817e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402624, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 0.044816792011260986, + 5.7043507695198059e-08 + ], + "min": [ + 2.6542693376541138e-08, + 0.044816747307777405, + -8.754432201385498e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403080, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 419824, + "componentType": 5126, + "count": 38, + "max": [ + 0.07315170019865036, + 0.05260106548666954, + 0.024043399840593338, + 0.99564242362976074 + ], + "min": [ + 0.07315170019865036, + 0.052601061761379242, + 0.024043397977948189, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403176, + "componentType": 5126, + "count": 38, + "max": [ + 6.2398612499237061e-08, + 0.02240845188498497, + 2.1362211555242538e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.022408410906791687, + 6.8335793912410736e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239652, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403632, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 420432, + "componentType": 5126, + "count": 38, + "max": [ + -6.4913183450698853e-07, + -9.5460563898086548e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5099447965621948e-07, + -9.6205621957778931e-07, + 1.862645326866641e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403728, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.069797471165657043, + 1.1362135410308838e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.069797337055206299, + -4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239988, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404184, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.9999995231628418, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240004, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 421040, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130212426185608, + 0.10888323932886124, + -0.021744627505540848, + 0.95317405462265015 + ], + "min": [ + 0.28130203485488892, + 0.10888321697711945, + -0.021744720637798309, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404232, + "componentType": 5126, + "count": 38, + "max": [ + 2.2204460492503131e-16, + 5.8207660913467407e-09, + 1.0244548320770264e-08 + ], + "min": [ + -6.891787052154541e-08, + -1.3317912817001343e-07, + -1.2852251529693604e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240308, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404688, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 421648, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132301870468837e-10, + 3.3527616238870905e-08, + -1.3038516932795119e-08, + 1 + ], + "min": [ + -9.3132163092590758e-10, + 2.2351745343485163e-08, + -1.3038518709151958e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240476, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404736, + "componentType": 5126, + "count": 41, + "max": [ + 3.7252902984619141e-09, + 0.069797471165657043, + 1.1362135410308838e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.069797337055206299, + -4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240640, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405228, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240656, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 422256, + "componentType": 5126, + "count": 41, + "max": [ + 0.28130322694778442, + 0.10890328139066696, + -0.021682480350136757, + 0.95317494869232178 + ], + "min": [ + 0.28129613399505615, + 0.10888496786355972, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405276, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954480826854706, + 0.33536887168884277, + -0.0064070913940668106 + ], + "min": [ + -0.034954562783241272, + 0.33536869287490845, + -0.0064071714878082275 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240972, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405732, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241004, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 422912, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + 0.16701881587505341, + 0.2257961630821228, + 0.94418638944625854 + ], + "min": [ + -0.17214243113994598, + 0.16701869666576385, + 0.22579601407051086, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405828, + "componentType": 5126, + "count": 38, + "max": [ + 1.0617077350616455e-07, + 2.905726432800293e-07, + 1.7229467630386353e-07 + ], + "min": [ + 2.4214386940002441e-08, + 2.8498470783233643e-07, + 5.7741999626159668e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241308, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 423520, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -6.5192580223083496e-09, + 9.3132257461547852e-09, + 1 + ], + "min": [ + -1.1175871783564162e-08, + -2.514570951461792e-08, + 7.4505805969238281e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406332, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.022592460736632347, + -5.1222741603851318e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.022592291235923767, + -7.2643160820007324e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241628, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406788, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 424128, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881815731525421, + 0.044399186968803406, + 0.028591971844434738, + 0.99515920877456665 + ], + "min": [ + 0.08288179337978363, + 0.044399172067642212, + 0.02859196625649929, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406932, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + -1.3969836398786128e-09, + -1.2759119272232056e-07 + ], + "min": [ + -2.9802322387695312e-08, + -1.6530975699424744e-07, + -1.6042031347751617e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241980, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407388, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 424736, + "componentType": 5126, + "count": 38, + "max": [ + -1.1641534847228741e-08, + 1.7113055861273097e-08, + -2.79396927815867e-09, + 1 + ], + "min": [ + -1.5366827810225914e-08, + 1.5366826033869074e-08, + -8.8475653470254656e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407484, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-09, + 0.027876481413841248, + 7.8696757555007935e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.027876369655132294, + 5.1222741603851318e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407940, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 425344, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518259793519974, + 0.028988035395741463, + 0.020971888676285744, + 0.99849694967269897 + ], + "min": [ + 0.041518256068229675, + 0.028988024219870567, + 0.020971884950995445, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408036, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-08, + 0.013938326388597488, + 1.0244548320770264e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.013938215561211109, + 2.8754584491252899e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242652, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408492, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 425952, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136491215505885e-08, + 7.2177499532699585e-08, + -2.565502654761076e-08, + 1 + ], + "min": [ + -3.8009606129207896e-08, + 6.7753717303276062e-08, + -3.2858221032938673e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408540, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 0.074802428483963013, + 8.5448846220970154e-08 + ], + "min": [ + -1.1734664440155029e-07, + 0.074802227318286896, + -3.9348378777503967e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242972, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408996, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 426560, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057207942008972, + 0.17872513830661774, + -0.015338522382080555, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872509360313416, + -0.01533855777233839, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409188, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 3.5157427191734314e-08, + 5.7276338338851929e-08 + ], + "min": [ + -9.2200934886932373e-08, + -1.3154931366443634e-07, + -1.0244548320770264e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243340, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409644, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 427168, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645371275562e-09, + -1.4901162970204496e-08, + -1.862645371275562e-09, + 1 + ], + "min": [ + -5.5879363358712908e-09, + -1.862645326866641e-08, + -1.8626460374093767e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243508, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409692, + "componentType": 5126, + "count": 44, + "max": [ + 2.0954757928848267e-08, + 0.074802428483963013, + 8.5448846220970154e-08 + ], + "min": [ + -1.1734664440155029e-07, + 0.074802227318286896, + -3.9348378777503967e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243684, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410220, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243736, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 427776, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17877109348773956, + -0.015217456966638565, + 0.91919809579849243 + ], + "min": [ + 0.35054841637611389, + 0.17872488498687744, + -0.015338591299951077, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243912, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410376, + "componentType": 5126, + "count": 38, + "max": [ + -0.044579215347766876, + 0.32914406061172485, + 0.0039986670017242432 + ], + "min": [ + -0.044579315930604935, + 0.32914403080940247, + 0.0039984923787415028 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244064, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410832, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244116, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 428480, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570015132427216, + 0.18749429285526276, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570016622543335, + 0.1874941885471344, + 0.27479094266891479, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410988, + "componentType": 5126, + "count": 38, + "max": [ + -4.9360096454620361e-08, + 1.491280272603035e-07, + 2.0395964384078979e-07 + ], + "min": [ + -1.0710209608078003e-07, + 7.1129761636257172e-08, + 1.3317912817001343e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244420, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411444, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 429088, + "componentType": 5126, + "count": 38, + "max": [ + 2.4214386940002441e-08, + -3.8417063308315846e-08, + -5.8673318648061468e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -4.0512539101200673e-08, + -7.3574483394622803e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411492, + "componentType": 5126, + "count": 38, + "max": [ + 7.7765434980392456e-08, + 0.25792229175567627, + -3.7252902984619141e-09 + ], + "min": [ + 1.1641532182693481e-08, + 0.25792190432548523, + -1.2479722499847412e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244740, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411948, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 429696, + "componentType": 5126, + "count": 38, + "max": [ + -0.068233758211135864, + 0.86201894283294678, + 0.19106145203113556, + -0.46450299024581909 + ], + "min": [ + -0.068233810365200043, + 0.862018883228302, + 0.19106140732765198, + -0.46450310945510864 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244900, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411972, + "componentType": 5126, + "count": 40, + "max": [ + 1.5087425708770752e-07, + 0.12896019220352173, + -1.8998980522155762e-07 + ], + "min": [ + 7.2643160820007324e-08, + 0.12896011769771576, + -1.9371509552001953e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245060, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 412452, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999964237213135, + 1.0000110864639282, + 0.99999958276748657 + ], + "min": [ + 0.99999946355819702, + 1.0000090599060059, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245208, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 430304, + "componentType": 5126, + "count": 40, + "max": [ + -3.4749834298963833e-07, + 0.88032656908035278, + 4.7119507939896721e-07, + -0.47436809539794922 + ], + "min": [ + -7.2640835924175917e-07, + 0.88032656908035278, + -1.8654705513654335e-07, + -0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 412896, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-07, + 0.13927160203456879, + 1.7136335372924805e-07 + ], + "min": [ + 1.6391277313232422e-07, + 0.13927140831947327, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245520, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413352, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999761581420898, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 0.99999761581420898, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 430944, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531494617462158, + -0.090401239693164825, + 0.19322668015956879, + 0.94302994012832642 + ], + "min": [ + 0.25531488656997681, + -0.09040127694606781, + 0.19322650134563446, + 0.94302988052368164 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245688, + "componentType": 5126, + "count": 30, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413400, + "componentType": 5126, + "count": 30, + "max": [ + -0.044326562434434891, + -0.11071485280990601, + 0.071930155158042908 + ], + "min": [ + -0.044326595962047577, + -0.1107148677110672, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245808, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413760, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000011920928955, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.000001072883606, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 431552, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531491637229919, + 0.090401239693164825, + -0.19322660565376282, + 0.94302988052368164 + ], + "min": [ + -0.25531494617462158, + 0.090401194989681244, + -0.19322676956653595, + 0.94302988052368164 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413808, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-07, + -5.0663948059082031e-07, + -2.4586915969848633e-07 + ], + "min": [ + 2.1792948246002197e-07, + -5.7369470596313477e-07, + -2.8684735298156738e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246128, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 414264, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999719858169556, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999701976776123, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246160, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 432160, + "componentType": 5126, + "count": 38, + "max": [ + 3.9953800978764775e-07, + 2.2258610954395408e-07, + 7.3388338250879315e-07, + 1 + ], + "min": [ + 2.7753455356105405e-07, + -3.6694112282020797e-07, + 4.6566194100705616e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 246312, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 414360, + "componentType": 5126, + "count": 65, + "max": [ + -2.7939677238464355e-08, + 0.27854296565055847, + 1.0430812835693359e-07 + ], + "min": [ + -1.8998980522155762e-07, + 0.27854284644126892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246572, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415140, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246604, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 432768, + "componentType": 5126, + "count": 65, + "max": [ + 0.43454083800315857, + -0.050930984318256378, + 0.20715934038162231, + 0.94302982091903687 + ], + "min": [ + 0.25531506538391113, + -0.090401493012905121, + 0.19322662055492401, + 0.8750230073928833 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 246864, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415236, + "componentType": 5126, + "count": 40, + "max": [ + 2.4959444999694824e-07, + 0.13927124440670013, + -2.9802322387695312e-08 + ], + "min": [ + 1.0803341865539551e-07, + 0.13927115499973297, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247024, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415716, + "componentType": 5126, + "count": 32, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1, + 0.9999992847442627, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247152, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 433808, + "componentType": 5126, + "count": 40, + "max": [ + 3.7253329310260597e-07, + 1.067295488610398e-05, + -7.2270603368451702e-07, + 1 + ], + "min": [ + -9.164216407953063e-07, + 9.4324341262108646e-06, + -8.4564123881136766e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 247312, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416100, + "componentType": 5126, + "count": 64, + "max": [ + 0.027315765619277954, + 0.33446067571640015, + 0.019757963716983795 + ], + "min": [ + 0.027315422892570496, + 0.33446061611175537, + 0.019757714122533798 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247568, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416868, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247576, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 434448, + "componentType": 5126, + "count": 64, + "max": [ + -0.23410725593566895, + -0.70021235942840576, + 0.38839539885520935, + 0.58119255304336548 + ], + "min": [ + -0.24058759212493896, + -0.70804405212402344, + 0.34092062711715698, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 247832, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416892, + "componentType": 5126, + "count": 38, + "max": [ + 1.3969838619232178e-08, + 5.7741999626159668e-08, + 3.3896321838255972e-07 + ], + "min": [ + -6.7986547946929932e-08, + 2.6077032089233398e-08, + 3.3874039218062535e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247984, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417348, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 435472, + "componentType": 5126, + "count": 38, + "max": [ + 2.6193440749722186e-09, + -3.9224687498062849e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -9.1749816633068804e-09, + -4.4834454371311949e-08, + 5.9604641222676946e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248152, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417396, + "componentType": 5126, + "count": 37, + "max": [ + -0.023130092769861221, + 0.26697894930839539, + 0.14965295791625977 + ], + "min": [ + -0.023130100220441818, + 0.2669786810874939, + 0.14965271949768066 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248300, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417840, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.9999995231628418, + 0.9999997615814209 + ], + "min": [ + 0.99999958276748657, + 0.9999995231628418, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 436080, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586670398712158, + 0.39777570962905884, + 0.29703018069267273, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777570962905884, + 0.29703018069267273, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248484, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417936, + "componentType": 5126, + "count": 38, + "max": [ + 1.7389822914992692e-10, + 0.30786654353141785, + -1.3369925966344454e-07 + ], + "min": [ + -4.0167478232433496e-09, + 0.30786648392677307, + -3.572166917820141e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248636, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 418392, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248724, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 436688, + "componentType": 5126, + "count": 38, + "max": [ + -0.058453772217035294, + -4.1669062511573429e-07, + 2.4425312972198299e-07, + 0.99829012155532837 + ], + "min": [ + -0.058453813195228577, + -4.1670494965728722e-07, + 2.4424954858659476e-07, + 0.99829012155532837 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248876, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 418656, + "componentType": 5126, + "count": 65, + "max": [ + -6.9849193096160889e-10, + 0.77674126625061035, + -2.9947841539978981e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674102783203125, + -5.9386366046965122e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249136, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 419436, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249200, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 437296, + "componentType": 5126, + "count": 65, + "max": [ + 0.30256438255310059, + 0.013952740468084812, + 0.00075332552660256624, + 0.96677535772323608 + ], + "min": [ + 0.25562748312950134, + -4.2335560834771968e-08, + -5.1168099162168801e-06, + 0.95302653312683105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 249460, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 419628, + "componentType": 5126, + "count": 65, + "max": [ + -6.9849193096160889e-10, + 0.77674126625061035, + -2.9947841539978981e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674102783203125, + -5.9386366046965122e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249720, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 420408, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 438336, + "componentType": 5126, + "count": 65, + "max": [ + 0.30256438255310059, + 0.013952740468084812, + 0.00075332552660256624, + 0.96677535772323608 + ], + "min": [ + 0.25562748312950134, + -4.2335560834771968e-08, + -5.1168099162168801e-06, + 0.95302653312683105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250044, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 420600, + "componentType": 5126, + "count": 65, + "max": [ + 5.3290705182007514e-15, + 0.4050619900226593, + 4.4703490686970326e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.40506196022033691, + 2.2351748896198842e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250304, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 421380, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250376, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 439376, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627878874540329, + 1.8112152133653581e-07, + -5.9790863815578632e-08, + 0.99943441152572632 + ], + "min": [ + -0.20865336060523987, + -0.013813632540404797, + -0.0021039647981524467, + 0.97788983583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250636, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 421596, + "componentType": 5126, + "count": 38, + "max": [ + 2.0360914732009405e-08, + 9.2646558869091677e-08, + -5.2843375897282385e-08 + ], + "min": [ + 1.0157151564271771e-08, + 8.6520259401368094e-08, + -6.5642211666272487e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250788, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422052, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250796, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 440416, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527619791584584e-08, + 1.8663630640958218e-08, + 9.8426156114328478e-11, + 1 + ], + "min": [ + 2.9802322387695312e-08, + 1.8663619982817181e-08, + 9.8424379757489078e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250948, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422076, + "componentType": 5126, + "count": 38, + "max": [ + 1.7185811884701252e-08, + 0.31343469023704529, + -2.3952452465891838e-08 + ], + "min": [ + -2.1682353690266609e-09, + 0.31343454122543335, + -5.3827534429728985e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251100, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422532, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 441024, + "componentType": 5126, + "count": 38, + "max": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465383042581379 + ], + "min": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.1192685142159462, + 0.00012465371401049197 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251284, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422628, + "componentType": 5126, + "count": 38, + "max": [ + 2.8740032576024532e-08, + 1.280568540096283e-08, + -5.2823452278971672e-08 + ], + "min": [ + 7.4724084697663784e-09, + -1.3038516044616699e-07, + -8.2742189988493919e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251436, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423084, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 441632, + "componentType": 5126, + "count": 38, + "max": [ + -5.0456076650107207e-08, + 7.1329829154365143e-08, + 1.5272685338629799e-09, + 1 + ], + "min": [ + -5.2301267317034217e-08, + 7.1315277239136776e-08, + 1.4165375539221259e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423108, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.4787544310092926, + 1.3917451724410057e-07 + ], + "min": [ + -3.7252902984619141e-08, + 0.47875425219535828, + 1.023290678858757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251748, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423564, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 442240, + "componentType": 5126, + "count": 38, + "max": [ + -0.32932701706886292, + 0.02128932997584343, + -0.064436882734298706, + 0.94177407026290894 + ], + "min": [ + -0.32932701706886292, + 0.021289320662617683, + -0.064436890184879303, + 0.94177407026290894 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423612, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.23937705159187317, + 3.3987453207373619e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.23937678337097168, + 3.1763920560479164e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252068, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424068, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 442848, + "componentType": 5126, + "count": 38, + "max": [ + -4.3532273252822051e-07, + 0.022599978372454643, + 2.6083705506607657e-07, + 0.99974459409713745 + ], + "min": [ + -5.6582490515211248e-07, + 0.02259993739426136, + 1.2669224247474631e-07, + 0.99974459409713745 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424164, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.21278376877307892, + 1.4901161193847656e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.21278360486030579, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252404, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424620, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 443456, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897867560386658, + 0.18448342382907867, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897873520851135, + 0.18448334932327271, + 0.78801387548446655, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424716, + "componentType": 5126, + "count": 38, + "max": [ + -0.15143656730651855, + 0.084600932896137238, + -0.12323399633169174 + ], + "min": [ + -0.15143664181232452, + 0.084600746631622314, + -0.12323404103517532 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252740, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425172, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 444064, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897867560386658, + -0.18448333442211151, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448354303836823, + -0.7880139946937561, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252964, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425388, + "componentType": 5126, + "count": 47, + "max": [ + 2.4214386940002441e-07, + -1.5646219253540039e-07, + 3.7689460441470146e-07 + ], + "min": [ + 5.2154064178466797e-08, + -4.246830940246582e-07, + 3.5390257835388184e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253152, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425952, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253184, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 444672, + "componentType": 5126, + "count": 47, + "max": [ + -7.0649539551936869e-09, + 2.1549642497120658e-06, + 2.6449555434737704e-07, + 1 + ], + "min": [ + -3.7180150513904664e-08, + -1.7452839529141784e-06, + 1.5832483768463135e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 253372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426048, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.42556768655776978, + 1.0430812835693359e-07 + ], + "min": [ + -4.4703483581542969e-08, + 0.42556750774383545, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253524, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426504, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 445424, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897855639457703, + 0.18448294699192047, + 0.78801411390304565, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 253692, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426552, + "componentType": 5126, + "count": 47, + "max": [ + 9.6857547760009766e-08, + 0.21278421580791473, + 1.6391277313232422e-07 + ], + "min": [ + 7.4505805969238281e-08, + 0.21278402209281921, + 1.1102230246251565e-16 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253880, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427116, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253944, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 446032, + "componentType": 5126, + "count": 47, + "max": [ + -1.5087425708770752e-07, + 2.2053718566894531e-06, + -4.0978196835794733e-08, + 1 + ], + "min": [ + -1.6205009956138383e-07, + -4.8950314521789551e-06, + -2.8312197741797718e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254132, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427308, + "componentType": 5126, + "count": 12, + "max": [ + 0.21592013537883759, + 0.36957696080207825, + -0.15007568895816803 + ], + "min": [ + 0.21592012047767639, + 0.36957690119743347, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254180, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427452, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254196, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 446784, + "componentType": 5126, + "count": 37, + "max": [ + 0.56482309103012085, + 0.75361937284469604, + -0.15842741727828979, + -0.2965356707572937 + ], + "min": [ + 0.56482309103012085, + 0.75361931324005127, + -0.15842749178409576, + -0.29653578996658325 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254344, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427500, + "componentType": 5126, + "count": 38, + "max": [ + -5.6102493317666813e-08, + 7.4201338406965078e-08, + 2.5654003366071265e-08 + ], + "min": [ + -6.5870665366674075e-08, + 4.5453020902641583e-08, + -2.1839838382220478e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254496, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427956, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 447376, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901171851988693e-08, + -9.4372563097522288e-09, + -3.5531397268862008e-10, + 1 + ], + "min": [ + 1.4901166522918174e-08, + -9.4372722969637834e-09, + -3.5531397268862008e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254656, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427980, + "componentType": 5126, + "count": 38, + "max": [ + 7.9598976299166679e-09, + 0.31343460083007812, + 2.7386704459786415e-08 + ], + "min": [ + -4.0854502003639936e-08, + 0.31343448162078857, + 9.7352312877774239e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254808, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428436, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 447984, + "componentType": 5126, + "count": 38, + "max": [ + 0.0024187495000660419, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465371401049197 + ], + "min": [ + 0.0024187483359128237, + 0.9928591251373291, + -0.11926832795143127, + -0.00012465381587389857 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428484, + "componentType": 5126, + "count": 38, + "max": [ + 8.5412466432899237e-08, + 6.0303136706352234e-08, + 1.2513191904872656e-07 + ], + "min": [ + 4.3670297600328922e-08, + 6.0303136706352234e-08, + 1.0748044587671757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255128, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428940, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255144, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 448592, + "componentType": 5126, + "count": 38, + "max": [ + -2.0641749642891227e-08, + -6.7200744524598122e-08, + -3.0881890378253729e-09, + 1 + ], + "min": [ + -2.2520055154018337e-08, + -6.7215296439826488e-08, + -3.1570834835292771e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 255296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428988, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.47875434160232544, + -6.0943420976400375e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.47875434160232544, + -9.4238203018903732e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255448, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 429444, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 449200, + "componentType": 5126, + "count": 38, + "max": [ + -0.32932689785957336, + -0.021289337426424026, + 0.0644368976354599, + 0.94177407026290894 + ], + "min": [ + -0.32932698726654053, + -0.021289343014359474, + 0.064436890184879303, + 0.94177407026290894 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 255632, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 429540, + "componentType": 5126, + "count": 39, + "max": [ + 2.384185791015625e-07, + 0.23937755823135376, + -2.1141022443771362e-07 + ], + "min": [ + 1.3038516044616699e-07, + 0.23937751352787018, + -2.15193722397089e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255788, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430008, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999886751174927, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999827146530151, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255884, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 449808, + "componentType": 5126, + "count": 39, + "max": [ + 6.0158851056257845e-07, + -0.022599635645747185, + 5.5521059039165266e-07, + 0.99974459409713745 + ], + "min": [ + -1.3745217302130186e-06, + -0.022599702700972557, + 4.0616063756715448e-07, + 0.99974459409713745 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430296, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.21278369426727295, + -2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.2127835750579834, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430752, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 450432, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897846698760986, + -0.1844828724861145, + -0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.27897849678993225, + -0.18448308110237122, + -0.78801417350769043, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430776, + "componentType": 5126, + "count": 38, + "max": [ + 0.15143664181232452, + 0.084600925445556641, + -0.12323371320962906 + ], + "min": [ + 0.15143661201000214, + 0.084600754082202911, + -0.12323372066020966 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256504, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431232, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000003576278687, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 451040, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897849678993225, + 0.18448334932327271, + 0.78801423311233521, + 0.51688539981842041 + ], + "min": [ + 0.27897846698760986, + 0.18448328971862793, + 0.78801423311233521, + 0.51688539981842041 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256704, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431376, + "componentType": 5126, + "count": 42, + "max": [ + 2.905726432800293e-07, + 6.4820051193237305e-07, + -2.0203879103064537e-07 + ], + "min": [ + 2.384185791015625e-07, + 6.4820051193237305e-07, + -3.1728995963931084e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256872, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431880, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 0.99999910593032837, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.99999880790710449, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256920, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 451648, + "componentType": 5126, + "count": 42, + "max": [ + 1.0376390946476022e-06, + 9.8414602689445019e-08, + 2.3841869278840022e-07, + 1 + ], + "min": [ + 5.3620247797425691e-08, + -1.468768232371076e-06, + 9.3132300094111997e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432024, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.42556750774383545, + 2.9802322387695312e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.42556744813919067, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257240, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432480, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 452320, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.2789786159992218, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257424, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432576, + "componentType": 5126, + "count": 41, + "max": [ + 1.0430812835693359e-07, + 0.21278354525566101, + 1.1920928955078125e-07 + ], + "min": [ + 1.0430812835693359e-07, + 0.21278353035449982, + 1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257588, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433068, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999821186065674, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999797344207764, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257636, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 452928, + "componentType": 5126, + "count": 41, + "max": [ + -2.6263327868036868e-07, + 1.406297315043048e-06, + -5.6624469380039955e-07, + 1 + ], + "min": [ + -4.5821118987987575e-07, + -1.8626456821380089e-08, + -7.7486123473136104e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257800, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433212, + "componentType": 5126, + "count": 12, + "max": [ + -0.21592001616954803, + 0.36957702040672302, + -0.15007562935352325 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257848, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433356, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257864, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 453584, + "componentType": 5126, + "count": 37, + "max": [ + -0.56482309103012085, + 0.75361937284469604, + -0.15842759609222412, + 0.29653573036193848 + ], + "min": [ + -0.56482315063476562, + 0.75361931324005127, + -0.15842770040035248, + 0.29653564095497131 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 258012, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433404, + "componentType": 5126, + "count": 65, + "max": [ + 5.3290705182007514e-15, + 0.4050619900226593, + 4.4703490686970326e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.40506196022033691, + 2.2351748896198842e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258272, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 434184, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258344, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 454176, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627878874540329, + 1.8112152133653581e-07, + -5.9790863815578632e-08, + 0.99943441152572632 + ], + "min": [ + -0.20865336060523987, + -0.013813632540404797, + -0.0021039647981524467, + 0.97788983583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 258604, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 434400, + "componentType": 5126, + "count": 65, + "max": [ + -1.3711403568095193e-08, + 0.39511561393737793, + 1.1449785232543945 + ], + "min": [ + -1.3711414226236229e-08, + 0.31150096654891968, + 1.0871889591217041 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258864, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435180, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258872, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 455216, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645658016204834, + -7.6506921686814167e-08, + -1.4764148126289456e-08, + 0.5120772123336792 + ], + "min": [ + 0.85893940925598145, + -7.8986950313719717e-08, + -2.4568432621663305e-08, + 0.40013411641120911 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259124, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435204, + "componentType": 5126, + "count": 62, + "max": [ + 1.0430812835693359e-07, + -3.2782554626464844e-07, + 3.5908306017518044e-07 + ], + "min": [ + -1.1920928955078125e-07, + -3.6507844924926758e-07, + -1.4273973647505045e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259372, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435948, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999725818634033, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999719858169556, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259388, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 456224, + "componentType": 5126, + "count": 62, + "max": [ + -0.21753227710723877, + -0.70822852849960327, + 0.38848337531089783, + 0.54919475317001343 + ], + "min": [ + -0.24044083058834076, + -0.72605991363525391, + 0.35199704766273499, + 0.53822046518325806 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259636, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435996, + "componentType": 5126, + "count": 65, + "max": [ + -0.28988337516784668, + -0.29226911067962646, + 2.3465237617492676 + ], + "min": [ + -0.29706376791000366, + -0.36284142732620239, + 2.3183920383453369 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259896, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 436776, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259904, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 457216, + "componentType": 5126, + "count": 20, + "max": [ + 0.27826851606369019, + -0.15942732989788055, + 0.47014418244361877, + 0.82226157188415527 + ], + "min": [ + 0.2782684862613678, + -0.1594274491071701, + 0.470144122838974, + 0.8222615122795105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259984, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 436800, + "componentType": 5126, + "count": 60, + "max": [ + 1.3411045074462891e-07, + -7.4505805969238281e-09, + -8.7107764557003975e-08 + ], + "min": [ + 1.4901161193847656e-08, + -7.4505805969238281e-08, + -1.6612466424703598e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260224, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 437520, + "componentType": 5126, + "count": 49, + "max": [ + 1.0000002384185791, + 0.99999880790710449, + 1 + ], + "min": [ + 1.0000002384185791, + 0.99999731779098511, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260420, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 457536, + "componentType": 5126, + "count": 60, + "max": [ + -0.21725064516067505, + 0.72690004110336304, + -0.35213533043861389, + 0.54810506105422974 + ], + "min": [ + -0.24007570743560791, + 0.70873421430587769, + -0.38871067762374878, + 0.53755325078964233 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 260660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438108, + "componentType": 5126, + "count": 65, + "max": [ + 0.30523082613945007, + -0.29226887226104736, + 2.3465235233306885 + ], + "min": [ + 0.29805037379264832, + -0.36284130811691284, + 2.3183920383453369 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438888, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260936, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 458496, + "componentType": 5126, + "count": 12, + "max": [ + 0.27826845645904541, + 0.15942741930484772, + -0.47014418244361877, + 0.8222615122795105 + ], + "min": [ + 0.27826842665672302, + 0.15942735970020294, + -0.47014421224594116, + 0.8222615122795105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 260984, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438936, + "componentType": 5126, + "count": 65, + "max": [ + -1.3711403568095193e-08, + 0.39511561393737793, + 1.1449785232543945 + ], + "min": [ + -1.3711414226236229e-08, + 0.31150096654891968, + 1.0871889591217041 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261244, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 439716, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261252, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 458688, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645658016204834, + -7.6506921686814167e-08, + -1.4764148126289456e-08, + 0.5120772123336792 + ], + "min": [ + 0.85893940925598145, + -7.8986950313719717e-08, + -2.4568432621663305e-08, + 0.40013411641120911 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 261504, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 439740, + "componentType": 5126, + "count": 65, + "max": [ + 1.2107193470001221e-08, + 0.40159738063812256, + 1.2293457984924316e-07 + ], + "min": [ + -9.6857547760009766e-08, + 0.40159702301025391, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261764, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 440520, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999964237213135, + 0.99999988079071045, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 459696, + "componentType": 5126, + "count": 65, + "max": [ + 0.066354788839817047, + 0.17664662003517151, + 0.012732873670756817, + 0.99723094701766968 + ], + "min": [ + 0.050562739372253418, + -0.12863974273204803, + -0.14373962581157684, + 0.97145867347717285 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 440580, + "componentType": 5126, + "count": 38, + "max": [ + 1.2107193470001221e-08, + 0.40159738063812256, + 1.2293457984924316e-07 + ], + "min": [ + -9.6857547760009766e-08, + 0.40159702301025391, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262196, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441036, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 460736, + "componentType": 5126, + "count": 38, + "max": [ + 0.10101219266653061, + 0.797660231590271, + -0.48497861623764038, + 0.3439919650554657 + ], + "min": [ + 0.10101208090782166, + 0.797660231590271, + -0.48497870564460754, + 0.34399184584617615 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262380, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441132, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-08, + 0.57860571146011353, + -7.4505805969238281e-09 + ], + "min": [ + 7.4505805969238281e-09, + 0.5786052942276001, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262640, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441912, + "componentType": 5126, + "count": 9, + "max": [ + 0.9999997615814209, + 0.99999958276748657, + 1.0000002384185791 + ], + "min": [ + 0.99999958276748657, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262676, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 461344, + "componentType": 5126, + "count": 65, + "max": [ + -0.47829297184944153, + 0.40625259280204773, + 0.31101590394973755, + 0.74823623895645142 + ], + "min": [ + -0.54922395944595337, + 0.35103729367256165, + -0.019192501902580261, + 0.7302626371383667 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442020, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.57860571146011353, + -7.4505805969238281e-09 + ], + "min": [ + 7.4505805969238281e-09, + 0.5786052942276001, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263088, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442476, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999958276748657, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 462384, + "componentType": 5126, + "count": 38, + "max": [ + 0.92845195531845093, + -0.11104359477758408, + -0.17523975670337677, + -0.30811905860900879 + ], + "min": [ + 0.92845195531845093, + -0.11104359477758408, + -0.17523975670337677, + -0.30811905860900879 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 263272, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442572, + "componentType": 5126, + "count": 65, + "max": [ + 2.2351741790771484e-08, + 0.40799090266227722, + 1.9185245037078857e-07 + ], + "min": [ + -8.1956386566162109e-08, + 0.40799087285995483, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263532, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443352, + "componentType": 5126, + "count": 5, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263552, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 462992, + "componentType": 5126, + "count": 65, + "max": [ + 0.29819843173027039, + 0.0707283616065979, + -0.076414808630943298, + 0.96359741687774658 + ], + "min": [ + 0.086982414126396179, + -0.10209451615810394, + -0.28176599740982056, + 0.94880765676498413 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 263812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443412, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.40799090266227722, + 1.9185245037078857e-07 + ], + "min": [ + -8.1956386566162109e-08, + 0.40799087285995483, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263964, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443868, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 464032, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + -0.20495329797267914, + -0.34477135539054871, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.20495332777500153, + -0.34477144479751587, + -0.41790080070495605 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 264132, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443916, + "componentType": 5126, + "count": 65, + "max": [ + -7.4505805969238281e-09, + 0.25762280821800232, + 1.1175870895385742e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.25762253999710083, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264392, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 444696, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264440, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 464640, + "componentType": 5126, + "count": 65, + "max": [ + -0.037458539009094238, + -0.34045052528381348, + -0.11428229510784149, + 0.92450565099716187 + ], + "min": [ + -0.20733168721199036, + -0.36177641153335571, + -0.25526982545852661, + 0.88087701797485352 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 264700, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 444840, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.77674150466918945, + -2.2584572434425354e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674144506454468, + -1.1161318980157375e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264852, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 445296, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999970197677612, + 0.99999964237213135, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 465680, + "componentType": 5126, + "count": 38, + "max": [ + -0.29018476605415344, + -0.26665157079696655, + -0.15815925598144531, + 0.90535926818847656 + ], + "min": [ + -0.29018476605415344, + -0.26665157079696655, + -0.15815925598144531, + 0.90535926818847656 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 445344, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-08, + 0.40159741044044495, + -7.4505805969238281e-09 + ], + "min": [ + 5.5879354476928711e-09, + 0.40159690380096436, + -2.644956111907959e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265280, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446124, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999958276748657, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265312, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 466288, + "componentType": 5126, + "count": 65, + "max": [ + 0.066354766488075256, + 0.12863965332508087, + 0.14373964071273804, + 0.99723094701766968 + ], + "min": [ + 0.050562616437673569, + -0.17664678394794464, + -0.012732855975627899, + 0.97145861387252808 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446220, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489096641540527e-08, + 0.40159741044044495, + -7.4505805969238281e-09 + ], + "min": [ + 5.5879354476928711e-09, + 0.40159690380096436, + -2.644956111907959e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265724, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446676, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 467328, + "componentType": 5126, + "count": 38, + "max": [ + -0.10101203620433807, + 0.79766017198562622, + -0.48497867584228516, + -0.34399187564849854 + ], + "min": [ + -0.10101218521595001, + 0.79766017198562622, + -0.48497870564460754, + -0.34399199485778809 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265924, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446820, + "componentType": 5126, + "count": 65, + "max": [ + -1.4901161193847656e-08, + 0.57860565185546875, + 1.1175870895385742e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.57860499620437622, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266184, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 447600, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999946355819702, + 0.99999940395355225, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999934434890747, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266232, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 467936, + "componentType": 5126, + "count": 65, + "max": [ + -0.47829300165176392, + -0.35103735327720642, + 0.019192364066839218, + 0.74823617935180664 + ], + "min": [ + -0.54922389984130859, + -0.40625253319740295, + -0.3110160231590271, + 0.73026275634765625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 266492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 447744, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.57860565185546875, + 1.1175870895385742e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.57860499620437622, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266644, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 448200, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 468976, + "componentType": 5126, + "count": 38, + "max": [ + 0.92845195531845093, + 0.11104367673397064, + 0.17524001002311707, + -0.30811882019042969 + ], + "min": [ + 0.92845189571380615, + 0.11104363203048706, + 0.17523999512195587, + -0.30811893939971924 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 266812, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 448248, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40799123048782349, + 1.3969838619232178e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.40799087285995483, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267072, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449028, + "componentType": 5126, + "count": 9, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267108, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 469584, + "componentType": 5126, + "count": 65, + "max": [ + 0.29819849133491516, + 0.10209456831216812, + 0.28176605701446533, + 0.96359741687774658 + ], + "min": [ + 0.086982458829879761, + -0.070728346705436707, + 0.076414681971073151, + 0.94880765676498413 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 267368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449136, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 0.40799123048782349, + 1.3969838619232178e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.40799087285995483, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267520, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449592, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 470624, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495341718196869, + 0.34477177262306213, + -0.41790029406547546 + ], + "min": [ + 0.81515997648239136, + 0.20495337247848511, + 0.34477174282073975, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 267688, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449640, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-08, + 0.25762268900871277, + 1.4901161193847656e-08 + ], + "min": [ + -1.1175870895385742e-08, + 0.25762248039245605, + -8.5681676864624023e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267948, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450420, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267972, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 471232, + "componentType": 5126, + "count": 65, + "max": [ + -0.037458699196577072, + 0.36177566647529602, + 0.25527015328407288, + 0.92450582981109619 + ], + "min": [ + -0.20733180642127991, + 0.34045043587684631, + 0.11428260803222656, + 0.88087695837020874 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 268232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450492, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.77674150466918945, + -2.2584572434425354e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674144506454468, + -1.1161318980157375e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268384, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450948, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999964237213135, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268400, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 472272, + "componentType": 5126, + "count": 37, + "max": [ + -0.29018479585647583, + 0.2666512131690979, + 0.15815901756286621, + 0.90535938739776611 + ], + "min": [ + -0.29018482565879822, + 0.2666512131690979, + 0.15815901756286621, + 0.90535938739776611 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 268548, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450996, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 1.1175870895385742e-07, + -2.2351741790771484e-08 + ], + "min": [ + -7.1054273576010019e-15, + -2.9802322387695312e-08, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268808, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 451776, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268828, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 472864, + "componentType": 5126, + "count": 65, + "max": [ + 0.62147444486618042, + 9.3231790287973126e-08, + 7.1226040176952665e-08, + 0.84784221649169922 + ], + "min": [ + 0.53006440401077271, + -0.0084639964625239372, + -0.011117789894342422, + 0.78343445062637329 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 269088, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 451836, + "componentType": 5126, + "count": 65, + "max": [ + 2.2204460492503131e-16, + 1.7881393432617188e-07, + -2.123415470123291e-07 + ], + "min": [ + -2.2204460492503131e-15, + 2.2351741790771484e-08, + -3.3527612686157227e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269348, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 452616, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269396, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 473904, + "componentType": 5126, + "count": 65, + "max": [ + 0.12528058886528015, + -1.6243319578279625e-08, + -4.079960813641037e-09, + 0.99807745218276978 + ], + "min": [ + 0.061979014426469803, + -1.653602232920548e-08, + -5.1225637065499541e-09, + 0.99212133884429932 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 269656, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 452760, + "componentType": 5126, + "count": 65, + "max": [ + 2.8421709430404007e-14, + 0.52352416515350342, + 5.9604627011822231e-08 + ], + "min": [ + -5.6843418860808015e-14, + 0.52352404594421387, + -5.9604666091672698e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269916, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 453540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269932, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 474944, + "componentType": 5126, + "count": 65, + "max": [ + 0.001496979733929038, + 1.1743012118259344e-09, + -3.8409222469226734e-09, + 1 + ], + "min": [ + -0.053219232708215714, + 9.6238683688909532e-10, + -3.8994292239635797e-09, + 0.99858283996582031 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 270192, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 453588, + "componentType": 5126, + "count": 65, + "max": [ + 2.1316282072803006e-14, + 0.36641585826873779, + 5.9604641222676946e-08 + ], + "min": [ + 1.4210854715202004e-14, + 0.36641579866409302, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270452, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 454368, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270468, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 475984, + "componentType": 5126, + "count": 65, + "max": [ + 0.19080400466918945, + -1.4486924548862135e-08, + -1.8329655571136527e-09, + 0.99249422550201416 + ], + "min": [ + 0.1222916767001152, + -1.4649267576771763e-08, + -2.8441577981652699e-09, + 0.9816281795501709 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 270728, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 454416, + "componentType": 5126, + "count": 65, + "max": [ + 1.7763568394002505e-15, + 0.74672245979309082, + -5.9604644775390625e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.74672234058380127, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270988, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455196, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 477024, + "componentType": 5126, + "count": 65, + "max": [ + -0.052202891558408737, + 4.4864765236241055e-09, + 9.6888818745810568e-08, + 0.99863648414611816 + ], + "min": [ + -0.15020589530467987, + -5.0580237775932346e-09, + 9.6756700429523335e-08, + 0.9886547327041626 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271280, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455292, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976043879985809, + 1.4420554637908936 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976043879985809, + 1.4420554637908936 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271288, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455316, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271296, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478064, + "componentType": 5126, + "count": 8, + "max": [ + 0.26149037480354309, + 1.3741384030652171e-08, + 1.0062825239742779e-08, + 0.9652060866355896 + ], + "min": [ + 0.2614903450012207, + 1.3741383142473751e-08, + 1.0062823463385939e-08, + 0.9652060866355896 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455340, + "componentType": 5126, + "count": 38, + "max": [ + 2.451747604936827e-08, + -1.3807744281280065e-08, + 3.6498178701549477e-08 + ], + "min": [ + -6.488948400829031e-08, + -1.0321472387886388e-07, + -8.2711110849231773e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271480, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455796, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000017881393433, + 1.0000001192092896 + ], + "min": [ + 1, + 1.000001072883606, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271544, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478192, + "componentType": 5126, + "count": 38, + "max": [ + 0.56482315063476562, + 0.75361925363540649, + -0.15842780470848083, + -0.29653573036193848 + ], + "min": [ + 0.56482309103012085, + 0.75361925363540649, + -0.15842786431312561, + -0.29653578996658325 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271696, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455988, + "componentType": 5126, + "count": 64, + "max": [ + 0.21592006087303162, + 0.26865509152412415, + 1.5180497169494629 + ], + "min": [ + 0.21592006087303162, + 0.2539498507976532, + 1.4833292961120605 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271952, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 456756, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271960, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478800, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645663976669312, + -7.8866264630050864e-08, + -2.2435733271208846e-08, + 0.51207709312438965 + ], + "min": [ + 0.85893946886062622, + -8.2336406137528684e-08, + -3.2599960064771949e-08, + 0.40013399720191956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 272212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 456780, + "componentType": 5126, + "count": 38, + "max": [ + -1.2449413588910829e-07, + -4.5796873848757969e-08, + 6.7809970971666189e-08 + ], + "min": [ + -1.8409879487535363e-07, + -1.7990731748795952e-07, + -5.1399318579115061e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 457236, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999940395355225, + 1 + ], + "min": [ + 1, + 0.99999922513961792, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272396, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 479808, + "componentType": 5126, + "count": 37, + "max": [ + -0.56482303142547607, + 0.75361925363540649, + -0.1584283858537674, + 0.29653581976890564 + ], + "min": [ + -0.56482309103012085, + 0.75361913442611694, + -0.15842847526073456, + 0.29653570055961609 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 272544, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 457332, + "componentType": 5126, + "count": 64, + "max": [ + -0.21592006087303162, + 0.26865512132644653, + 1.5180497169494629 + ], + "min": [ + -0.21592006087303162, + 0.25394982099533081, + 1.4833292961120605 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272800, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458100, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272808, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 480400, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645663976669312, + -7.8866264630050864e-08, + -2.2435733271208846e-08, + 0.51207709312438965 + ], + "min": [ + 0.85893946886062622, + -8.2336406137528684e-08, + -3.2599960064771949e-08, + 0.40013399720191956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458124, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458148, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273076, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481408, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273084, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458172, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273092, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458196, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273100, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481440, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273108, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458220, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 6.9776433520019054e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273412, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 459132, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273500, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481472, + "componentType": 5126, + "count": 76, + "max": [ + 0.0089847194030880928, + 0.034154176712036133, + 0.063492096960544586, + 0.99994874000549316 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273804, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 459396, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274108, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460308, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274156, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 482688, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 274460, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460452, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + -1.2293457984924316e-07, + 1.4156103134155273e-07, + 9.3132257461547852e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274636, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460980, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274684, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 483904, + "componentType": 5126, + "count": 44, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 2.0023431801519109e-08, + 1 + ], + "min": [ + 1.0710211384434842e-08, + -1.3969838619232178e-09, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 274860, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461124, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 0.028223443776369095, + 3.3527612686157227e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275036, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461652, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 484608, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234387755393982, + -0.05825023353099823, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.03822682797908783, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 275284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461868, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 5.5879354476928711e-08, + -1.0058283805847168e-07 + ], + "min": [ + 1.6763806343078613e-08, + -5.5879354476928711e-09, + -1.2898817658424377e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275460, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462396, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275476, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 485312, + "componentType": 5126, + "count": 44, + "max": [ + -1.7811542463164187e-08, + -6.1467275713766867e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477377188067294e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 275652, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462444, + "componentType": 5126, + "count": 44, + "max": [ + 2.0489096641540527e-08, + 0.04503997415304184, + 1.4901161193847656e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -3.8184225559234619e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275828, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462972, + "componentType": 5126, + "count": 32, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.9999995231628418, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275956, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 486016, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882885932922363, + -0.038419146090745926, + -9.681028313934803e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419157266616821, + -9.6831150585785508e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276132, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463356, + "componentType": 5126, + "count": 44, + "max": [ + -3.5390257835388184e-08, + 0.022519789636135101, + 1.2293457984924316e-07 + ], + "min": [ + -1.8253922462463379e-07, + 0.022519733756780624, + 8.2887709140777588e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276308, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463884, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 486720, + "componentType": 5126, + "count": 44, + "max": [ + 5.2095867886237102e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.1781546517304378e-07, + -9.3621224550588522e-07, + 2.3120085757000197e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463932, + "componentType": 5126, + "count": 44, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276676, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 464460, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276760, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 487424, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + -0.038298282772302628, + -0.044083669781684875, + 0.98228913545608521 + ], + "min": [ + 0.17803920805454254, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 464712, + "componentType": 5126, + "count": 44, + "max": [ + -8.1956386566162109e-08, + -1.2293457984924316e-07, + 1.0849907994270325e-07 + ], + "min": [ + -1.601874828338623e-07, + -1.3411045074462891e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277112, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465240, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277128, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 488128, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252900764173091e-09, + 2.2351741790771484e-08, + 5.4482374167719172e-08, + 1 + ], + "min": [ + -3.524958103184872e-15, + 1.862645326866641e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 277304, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465288, + "componentType": 5126, + "count": 44, + "max": [ + -7.1711838245391846e-08, + 0.033446535468101501, + 1.2665987014770508e-07 + ], + "min": [ + -1.0430812835693359e-07, + 0.033446431159973145, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277480, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465816, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277580, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 488832, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151016891002655, + 0.016420740634202957, + -0.038739249110221863, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 277756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466116, + "componentType": 5126, + "count": 44, + "max": [ + -1.1315569281578064e-07, + 1.0523945093154907e-07, + 7.7299773693084717e-08 + ], + "min": [ + -1.3411045074462891e-07, + 1.4901161193847656e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277932, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466644, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 489536, + "componentType": 5126, + "count": 44, + "max": [ + -1.3969834178340079e-09, + -2.607702676016288e-08, + 5.2328687161207199e-08, + 1 + ], + "min": [ + -3.7252883000604697e-09, + -3.0733637856883433e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466740, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -6.9383531808853149e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744612157344818, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278316, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467268, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278348, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 490240, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518191993236542, + 0.0088785151019692421, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382568717002869, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278524, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467364, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + 0.020872168242931366, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278700, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467892, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278732, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 490944, + "componentType": 5126, + "count": 44, + "max": [ + 4.6566119848989729e-09, + -9.6857540654582408e-08, + -1.4482064614185219e-07, + 1 + ], + "min": [ + 4.1909515857696533e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278908, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467988, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279084, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 468516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279116, + "componentType": 5126, + "count": 40, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 491648, + "componentType": 5126, + "count": 40, + "max": [ + 0.0063957390375435352, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063955946825444698, + 0.6579899787902832, + 0.2625289261341095, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 279276, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 468612, + "componentType": 5126, + "count": 44, + "max": [ + 3.6321580410003662e-08, + 1.2293457984924316e-07, + -1.1874362826347351e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279452, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469140, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 492288, + "componentType": 5126, + "count": 44, + "max": [ + 1.5832481992106295e-08, + -4.0745362639427185e-10, + -7.2177506638126943e-08, + 1 + ], + "min": [ + 2.4447202040533966e-09, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 279660, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469236, + "componentType": 5126, + "count": 50, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279860, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469836, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279960, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 492992, + "componentType": 5126, + "count": 50, + "max": [ + 0.17804408073425293, + -0.038269974291324615, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803846299648285, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280160, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470136, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280336, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470664, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 493792, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958177343010902, + 0.65798979997634888, + 0.2625291645526886, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470760, + "componentType": 5126, + "count": 44, + "max": [ + 0.0073303692042827606, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303328827023506, + 0.34354424476623535, + -0.02119797095656395 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471288, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 494496, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320602178573608, + -0.11237325519323349, + -0.12725991010665894, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471336, + "componentType": 5126, + "count": 44, + "max": [ + 2.3469328880310059e-07, + -1.4621764421463013e-07, + -1.1041993275284767e-07 + ], + "min": [ + -2.1886080503463745e-08, + -2.0954757928848267e-07, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281088, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471864, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281096, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 495200, + "componentType": 5126, + "count": 44, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.189779462786646e-08, + 1 + ], + "min": [ + -4.5401971071612479e-09, + 2.2584570658068515e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 281272, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471888, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + 1.0989606380462646e-07 + ], + "min": [ + -1.5227124094963074e-07, + 0.032196022570133209, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281448, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 472416, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 495904, + "componentType": 5126, + "count": 44, + "max": [ + 0.0564768947660923, + -0.045752894133329391, + -0.025043413043022156, + 0.99704056978225708 + ], + "min": [ + 0.056476891040802002, + -0.045752905309200287, + -0.025043418630957603, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 281704, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 472656, + "componentType": 5126, + "count": 44, + "max": [ + -6.9849193096160889e-08, + 1.939479261636734e-07, + 5.9604644775390625e-08 + ], + "min": [ + -1.5832483768463135e-07, + 1.7927959561347961e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281880, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 496608, + "componentType": 5126, + "count": 44, + "max": [ + -1.0724762411484789e-08, + -3.3527619791584584e-08, + -1.3737011528291987e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.8256988688090132e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282088, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473280, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 1.1920928955078125e-07 + ], + "min": [ + -1.9255094230175018e-07, + 0.049540434032678604, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282264, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473808, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 497312, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846227198839188, + -0.085242286324501038, + -0.013570735231041908, + 0.98919981718063354 + ], + "min": [ + 0.11846226453781128, + -0.085242293775081635, + -0.013570768758654594, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474120, + "componentType": 5126, + "count": 44, + "max": [ + -1.0943040251731873e-08, + 0.024770038202404976, + 1.1175870895385742e-07 + ], + "min": [ + -4.0978193283081055e-08, + 0.024769995361566544, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474648, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 498016, + "componentType": 5126, + "count": 44, + "max": [ + -5.8347353615317843e-07, + 9.4409921302940347e-07, + -1.466250978410244e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474696, + "componentType": 5126, + "count": 44, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283088, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 475224, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283204, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 498720, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749170124530792, + -0.069006532430648804, + -0.0030257198959589005, + 0.97361516952514648 + ], + "min": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257310718297958, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 283380, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 475572, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -5.9138983488082886e-08, + -3.7252902984619141e-08, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283556, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476100, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283572, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 499424, + "componentType": 5126, + "count": 44, + "max": [ + 5.8920690548802668e-08, + -6.2864269345652701e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.7008351111135198e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 283748, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476148, + "componentType": 5126, + "count": 58, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283980, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476844, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284096, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 500128, + "componentType": 5126, + "count": 58, + "max": [ + 0.21750433743000031, + -0.06896587461233139, + -0.0028431459795683622, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.003057574387639761, + 0.97361499071121216 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 284328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 477192, + "componentType": 5126, + "count": 44, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326384454965591 + ], + "min": [ + 0.023247197270393372, + 0.34059673547744751, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284504, + "componentType": 5126, + "count": 34, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 477720, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 501056, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811857163906097, + -0.13169915974140167, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811858654022217, + -0.13169918954372406, + -0.16719600558280945, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 284816, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478128, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 3.7252902984619141e-08, + 7.6106516644358635e-09 + ], + "min": [ + -6.4377672970294952e-08, + -3.3120159059762955e-08, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284992, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478656, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 501760, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505801528346183e-09, + -1.1175870895385742e-08, + -1.3969838619232178e-08, + 1 + ], + "min": [ + 2.7939679458910405e-09, + -1.862645326866641e-08, + -1.909211277961731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 285184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478704, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-07, + 0.031801007688045502, + 9.4994902610778809e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800933182239532, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285360, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 479232, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000004768371582, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285456, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 502464, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024204552173615, + -0.10080225765705109, + -0.057818159461021423, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080230236053467, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 285632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 479520, + "componentType": 5126, + "count": 44, + "max": [ + 1.2852251529693604e-07, + 2.7706846594810486e-08, + -1.8253922462463379e-07 + ], + "min": [ + 5.3085386753082275e-08, + -3.7252902984619141e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285808, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480048, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 503168, + "componentType": 5126, + "count": 44, + "max": [ + -8.6147338151931763e-09, + -2.0489096641540527e-08, + -3.166496753692627e-08, + 1 + ], + "min": [ + -8.6147338151931763e-09, + -2.6426281607427882e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480096, + "componentType": 5126, + "count": 44, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.3969840839678227e-09, + 0.04481661319732666, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286176, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480624, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 503872, + "componentType": 5126, + "count": 44, + "max": [ + 0.073152825236320496, + -0.052601058036088943, + -0.024043358862400055, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601080387830734, + -0.024043375626206398, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480900, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-07, + 0.022408399730920792, + 1.1033262126147747e-07 + ], + "min": [ + -1.4994293451309204e-07, + 0.022408396005630493, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286620, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 481428, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 504576, + "componentType": 5126, + "count": 44, + "max": [ + -6.1932928474561777e-07, + 9.4789692184349406e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286812, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 481476, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286988, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287004, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 505280, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130188584327698, + -0.10888320952653885, + 0.021744720637798309, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 287180, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482052, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -1.6763806343078613e-08, + 1.7508864402770996e-07 + ], + "min": [ + -1.1175870895385742e-08, + -1.1920928955078125e-07, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287356, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482580, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287388, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 505984, + "componentType": 5126, + "count": 44, + "max": [ + 5.9750178138529009e-08, + -4.6100481654320902e-08, + -2.2351745343485163e-08, + 1 + ], + "min": [ + 2.5378549040055987e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 287564, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482676, + "componentType": 5126, + "count": 52, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287772, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483300, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287804, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 506688, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483396, + "componentType": 5126, + "count": 44, + "max": [ + 0.034954506903886795, + 0.33536890149116516, + -0.0064071454107761383 + ], + "min": [ + 0.034954499453306198, + 0.33536878228187561, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288188, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483924, + "componentType": 5126, + "count": 38, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999910593032837, + 0.99999922513961792, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288340, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 507520, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214219272136688, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701875627040863, + -0.22579611837863922, + 0.94418638944625854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288516, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484380, + "componentType": 5126, + "count": 44, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 1.3411045074462891e-07 + ], + "min": [ + -2.9802322387695312e-08, + 1.2293457984924316e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288692, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484908, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288716, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 508224, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626458597736928e-08, + -1.862645371275562e-09, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.313229076823859e-10, + -5.5879363358712908e-09, + 2.8871006918507192e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288892, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484980, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + -3.7252902984619141e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592421621084213, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289068, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 485508, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289116, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 508928, + "componentType": 5126, + "count": 44, + "max": [ + 0.082881756126880646, + -0.044399119913578033, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591940179467201, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 289292, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 485652, + "componentType": 5126, + "count": 44, + "max": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "min": [ + -5.2154064178466797e-08, + -8.5681676864624023e-08, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289468, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486180, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 509632, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 4.6566133171666024e-09, + -9.7788879216409441e-09, + 1 + ], + "min": [ + -1.5832485544819974e-08, + -6.5192589104867693e-09, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 289660, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486228, + "componentType": 5126, + "count": 44, + "max": [ + 1.0058283805847168e-07, + 0.027876397594809532, + 9.6857547760009766e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876339852809906, + 3.9581209421157837e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289836, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486756, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289924, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 510336, + "componentType": 5126, + "count": 44, + "max": [ + 0.04151814803481102, + -0.028988013043999672, + -0.020971916615962982, + 0.99849694967269897 + ], + "min": [ + 0.041517924517393112, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290100, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487020, + "componentType": 5126, + "count": 44, + "max": [ + -5.2154064178466797e-08, + 0.013938168063759804, + 9.3132257461547852e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938132673501968, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290276, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487548, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290308, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 511040, + "componentType": 5126, + "count": 44, + "max": [ + 5.2968971431255341e-08, + -1.3015230138080369e-07, + 4.563479905073109e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.3364477524646645e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487644, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290660, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488172, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 511744, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057201981544495, + -0.17872512340545654, + 0.015338565222918987, + 0.91919600963592529 + ], + "min": [ + 0.35057187080383301, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290920, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488424, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + -2.9802322387695312e-08, + -9.6857547760009766e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291096, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488952, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291112, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 512448, + "componentType": 5126, + "count": 44, + "max": [ + -4.3510230085530566e-08, + -2.0489096641540527e-08, + -2.7939679014821195e-08, + 1 + ], + "min": [ + -5.6112192226009938e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 291288, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489000, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291464, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489528, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291536, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 513152, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057204961776733, + -0.1787249892950058, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057193040847778, + -0.17872503399848938, + 0.015338667668402195, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 291712, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489744, + "componentType": 5126, + "count": 24, + "max": [ + 0.044579226523637772, + 0.32914415001869202, + 0.0039985440671443939 + ], + "min": [ + 0.044579222798347473, + 0.32914400100708008, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291808, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490032, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000004768371582 + ], + "min": [ + 0.9999995231628418, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 513856, + "componentType": 5126, + "count": 44, + "max": [ + -0.13569998741149902, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749423325061798, + -0.27479103207588196, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 292076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490308, + "componentType": 5126, + "count": 44, + "max": [ + 2.150190994143486e-07, + 4.246830940246582e-07, + 1.0477378964424133e-07 + ], + "min": [ + 7.4505805969238281e-09, + 3.8929283618927002e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292252, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490836, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 514560, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626447939595892e-08, + 1.1175870184843006e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 8.7544307803000265e-08, + -1.6763802790364934e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 292460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490932, + "componentType": 5126, + "count": 62, + "max": [ + 6.5338099375367165e-08, + 0.25792214274406433, + -6.9849193096160889e-09 + ], + "min": [ + 1.862645149230957e-08, + 0.25792211294174194, + -2.0023435354232788e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292708, + "componentType": 5126, + "count": 27, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 491676, + "componentType": 5126, + "count": 27, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292816, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 515264, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319510459899902, + 0.787913978099823, + 0.08472936600446701, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 293064, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 492000, + "componentType": 5126, + "count": 71, + "max": [ + 2.2910535335540771e-07, + 0.12896108627319336, + -3.6787241697311401e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896072864532471, + -2.3003667593002319e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293348, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 492852, + "componentType": 5126, + "count": 38, + "max": [ + 0.99999982118606567, + 1.0000035762786865, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293500, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 516256, + "componentType": 5126, + "count": 71, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 293784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 493308, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.13927146792411804, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293960, + "componentType": 5126, + "count": 36, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 493836, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000009536743164, + 1.0000020265579224, + 1.0000022649765015 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 517392, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531655550003052, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401016175746918, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 294280, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494268, + "componentType": 5126, + "count": 26, + "max": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930147707462311 + ], + "min": [ + 0.044326584786176682, + -0.11071404814720154, + 0.071930117905139923 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294384, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494580, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 518096, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531584024429321, + -0.090401075780391693, + 0.19322755932807922, + 0.94302952289581299 + ], + "min": [ + -0.25531643629074097, + -0.090401455760002136, + 0.19322720170021057, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 294608, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494724, + "componentType": 5126, + "count": 48, + "max": [ + 3.5017728805541992e-07, + 6.7055225372314453e-08, + 2.6635825634002686e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294800, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 495300, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999654293060303, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294992, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 518800, + "componentType": 5126, + "count": 48, + "max": [ + 3.6647588785854168e-07, + -6.2165759118215647e-07, + 5.7462693803245202e-07, + 1 + ], + "min": [ + -1.8994351194123738e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 295184, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 495876, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.27854281663894653, + 1.9557774066925049e-07 + ], + "min": [ + 7.0780515670776367e-08, + 0.27854272723197937, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295392, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 496500, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295408, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 519568, + "componentType": 5126, + "count": 52, + "max": [ + 0.25531500577926636, + 0.12245099246501923, + -0.17468459904193878, + 0.97297227382659912 + ], + "min": [ + 0.088408313691616058, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 295616, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 496548, + "componentType": 5126, + "count": 49, + "max": [ + 2.8312206268310547e-07, + 0.13927170634269714, + 3.380700945854187e-07 + ], + "min": [ + 6.7055225372314453e-08, + 0.13927128911018372, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295812, + "componentType": 5126, + "count": 31, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 497136, + "componentType": 5126, + "count": 31, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999874830245972, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295936, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 520400, + "componentType": 5126, + "count": 49, + "max": [ + -5.0757080316543579e-08, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.1161922657265677e-06, + -8.257104127551429e-06, + -1.0617110319799394e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 296132, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 497508, + "componentType": 5126, + "count": 62, + "max": [ + -0.027315571904182434, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975727267563343 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296380, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498252, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296444, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 521184, + "componentType": 5126, + "count": 62, + "max": [ + -0.24058769643306732, + 0.89095818996429443, + -0.052338108420372009, + 0.5384858250617981 + ], + "min": [ + -0.31360730528831482, + 0.70802509784698486, + -0.38839548826217651, + 0.33584675192832947 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 296692, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498444, + "componentType": 5126, + "count": 44, + "max": [ + 1.9557774066925049e-08, + 3.166496753692627e-08, + 5.0632388592930511e-07 + ], + "min": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 2.5607096176827326e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296868, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498972, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 522176, + "componentType": 5126, + "count": 44, + "max": [ + -7.004929081233513e-09, + 9.1364206866728637e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -1.3918908692289733e-08, + 8.2272904933233804e-08, + 4.4703490686970326e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297060, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499020, + "componentType": 5126, + "count": 43, + "max": [ + 0.023130057379603386, + 0.26697874069213867, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297232, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499536, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297332, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 522880, + "componentType": 5126, + "count": 43, + "max": [ + -0.69586646556854248, + -0.39777600765228271, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297504, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499836, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527612686157227e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + -4.0978193283081055e-08, + 2.9802322387695312e-08, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297680, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500364, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 523568, + "componentType": 5126, + "count": 44, + "max": [ + 9.7788870334625244e-09, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.4901161193847656e-08, + 1.862645371275562e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500412, + "componentType": 5126, + "count": 44, + "max": [ + -7.2177499532699585e-09, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223417699337006, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298048, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500940, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 524272, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234383285045624, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234370619058609, + 0.058250203728675842, + 0.038226813077926636, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 298284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501120, + "componentType": 5126, + "count": 44, + "max": [ + -3.5623088479042053e-08, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1175870895385742e-08, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298460, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501648, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298492, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 524976, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7927959561347961e-08, + -2.1434974684098052e-08, + -6.7520891100514291e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 298668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501744, + "componentType": 5126, + "count": 44, + "max": [ + 5.029141902923584e-08, + 0.045040033757686615, + 4.8894435167312622e-08 + ], + "min": [ + 1.6763806343078613e-08, + 0.045039962977170944, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298844, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502272, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298876, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 525680, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882878482341766, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882774174213409, + 0.038419175893068314, + 9.6848831162787974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502368, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-07, + 0.022520191967487335, + 1.7881393432617188e-07 + ], + "min": [ + -1.4156103134155273e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299228, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502896, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299236, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 526384, + "componentType": 5126, + "count": 44, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0675361156463623e-07, + 1 + ], + "min": [ + 6.3012709006216028e-07, + 9.4727141686234972e-07, + -2.0721925864108925e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299412, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502920, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299588, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 503448, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 527088, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + 0.038298372179269791, + 0.044083651155233383, + 0.98228907585144043 + ], + "min": [ + 0.17803941667079926, + 0.038298297673463821, + 0.044083595275878906, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299844, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 503688, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-08, + -5.9604644775390625e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3411045074462891e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300020, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504216, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 527792, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252894102834944e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -3.7252900764173091e-09, + -2.6426270949286845e-08, + -7.1362585174483684e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 300220, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504288, + "componentType": 5126, + "count": 44, + "max": [ + 8.5681676864624023e-08, + 0.033446438610553741, + 1.0617077350616455e-07 + ], + "min": [ + 3.7252902984619141e-08, + 0.033446401357650757, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300396, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504816, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 528496, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151072584092617, + -0.016420751810073853, + 0.038739185780286789, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.038739174604415894, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 300676, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505128, + "componentType": 5126, + "count": 44, + "max": [ + 9.9651515483856201e-08, + -3.7252902984619141e-08, + 0 + ], + "min": [ + 2.9802322387695312e-08, + -1.3317912817001343e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300852, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505656, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 529200, + "componentType": 5126, + "count": 44, + "max": [ + 1.8160790205001831e-08, + 2.6077030312876559e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.8626449715952731e-08, + -7.2177508414483782e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505704, + "componentType": 5126, + "count": 44, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.041744619607925415, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301220, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506232, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301236, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 529904, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518239676952362, + -0.0088784974068403244, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785132393240929, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301412, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506280, + "componentType": 5126, + "count": 44, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872429013252258, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301588, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506808, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301604, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 530608, + "componentType": 5126, + "count": 44, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.210719435817964e-08, + 1 + ], + "min": [ + -4.5634813261585805e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301780, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506856, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301956, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 507384, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 531312, + "componentType": 5126, + "count": 44, + "max": [ + 0.006395676638931036, + -0.65799015760421753, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 302188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 507552, + "componentType": 5126, + "count": 44, + "max": [ + 2.491287887096405e-07, + -2.3283064365386963e-08, + -3.0174851417541504e-07 + ], + "min": [ + 6.4261257648468018e-08, + -5.9604644775390625e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302364, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508080, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302380, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 532016, + "componentType": 5126, + "count": 44, + "max": [ + -5.2386767146472835e-10, + 1.280568362460599e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2130628824234009e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 302556, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508128, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302732, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508656, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 532720, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + 0.038296066224575043, + 0.044083878397941589, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508932, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303176, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 509460, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 533424, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 509580, + "componentType": 5126, + "count": 44, + "max": [ + -0.0073303841054439545, + 0.34354403614997864, + -0.021197730675339699 + ], + "min": [ + -0.0073305927217006683, + 0.34354394674301147, + -0.021197784692049026 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303568, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510108, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 534128, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320606648921967, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725979089736938, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510204, + "componentType": 5126, + "count": 44, + "max": [ + -1.3038516044616699e-08, + 1.8812716007232666e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303952, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510732, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303968, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 534832, + "componentType": 5126, + "count": 44, + "max": [ + -7.5669981391968122e-10, + 3.9581227184726231e-09, + 1.5832487321176814e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 304144, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510780, + "componentType": 5126, + "count": 44, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 9.8720192909240723e-08 + ], + "min": [ + -5.657784640789032e-08, + 0.032196052372455597, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304320, + "componentType": 5126, + "count": 30, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 511308, + "componentType": 5126, + "count": 30, + "max": [ + 1.0000005960464478, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304440, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 535536, + "componentType": 5126, + "count": 44, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043454021215439, + 0.99704056978225708 + ], + "min": [ + 0.056476566940546036, + 0.045752864331007004, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 304616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 511668, + "componentType": 5126, + "count": 44, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 3.166496753692627e-08 + ], + "min": [ + -1.1152587831020355e-07, + -6.3329935073852539e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304792, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512196, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 536240, + "componentType": 5126, + "count": 44, + "max": [ + -1.0477378964424133e-09, + 3.5390264940815541e-08, + -2.9336666429458091e-08, + 1 + ], + "min": [ + -1.3969840839678227e-09, + 2.2926544218648814e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512292, + "componentType": 5126, + "count": 44, + "max": [ + 4.2840838432312012e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540400505065918, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305176, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512820, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 536944, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570736162364483, + 0.98919987678527832 + ], + "min": [ + 0.11846192926168442, + 0.085242249071598053, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512940, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-08, + 0.024770196527242661, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770122021436691, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305568, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 513468, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 537648, + "componentType": 5126, + "count": 44, + "max": [ + -5.8393925428390503e-07, + -9.4092695235303836e-07, + 1.9185246458164329e-07, + 1 + ], + "min": [ + -5.9232110061202548e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 513564, + "componentType": 5126, + "count": 44, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305952, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514092, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 538352, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749138832092285, + 0.069006636738777161, + 0.0030257357284426689, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006584584712982, + 0.003025716170668602, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 306184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514260, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 2.0489096641540527e-07, + 5.005858838558197e-08 + ], + "min": [ + 4.6566128730773926e-08, + 4.8428773880004883e-08, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306360, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514788, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 539056, + "componentType": 5126, + "count": 44, + "max": [ + -1.0710209608078003e-08, + 1.5774276107549667e-08, + -8.4827967387354026e-16, + 1 + ], + "min": [ + -2.3515896785397672e-08, + 3.7252898543727042e-09, + -5.7625584304332733e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 306552, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514836, + "componentType": 5126, + "count": 75, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306852, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 515736, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306908, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 539760, + "componentType": 5126, + "count": 75, + "max": [ + 0.2174726277589798, + 0.069102182984352112, + 0.003196704899892211, + 0.9736253023147583 + ], + "min": [ + 0.21745379269123077, + 0.068967744708061218, + 0.0028579330537468195, + 0.97361642122268677 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 307208, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 515904, + "componentType": 5126, + "count": 44, + "max": [ + -0.023247243836522102, + 0.34059673547744751, + -0.015326134860515594 + ], + "min": [ + -0.023247666656970978, + 0.34059673547744751, + -0.015326227992773056 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307384, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 516432, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999958276748657, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999910593032837, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307472, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 540960, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811861634254456, + 0.13169923424720764, + 0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169918954372406, + 0.16719575226306915, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 307648, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 516696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + 2.2069434635341167e-07, + 4.4703483581542969e-08 + ], + "min": [ + -6.0535967350006104e-08, + 1.6763806343078613e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307824, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517224, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307840, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 541664, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244546544413424e-08, + -2.2551405187698492e-17, + 6.5192566900407201e-09, + 1 + ], + "min": [ + -1.0710206943542744e-08, + -1.4901157641133977e-08, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517272, + "componentType": 5126, + "count": 44, + "max": [ + 6.8685039877891541e-09, + 0.031800966709852219, + 8.5681676864624023e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308192, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517800, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 542368, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024107694625854, + 0.10080229490995407, + 0.057818260043859482, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080228000879288, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517992, + "componentType": 5126, + "count": 44, + "max": [ + 3.8184225559234619e-08, + 2.7008354663848877e-08, + 9.8720192909240723e-08 + ], + "min": [ + 2.1420419216156006e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308608, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 518520, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 543072, + "componentType": 5126, + "count": 44, + "max": [ + 7.9162418842315674e-09, + -1.4668330550193787e-08, + 6.7666361402984876e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 518544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4202669262886047e-07, + 0.044816732406616211, + -1.1175870895385742e-08 + ], + "min": [ + -2.514570951461792e-08, + 0.044816642999649048, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308968, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519072, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309048, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 543776, + "componentType": 5126, + "count": 44, + "max": [ + 0.073151916265487671, + 0.052601087838411331, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043351411819458, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 309224, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519312, + "componentType": 5126, + "count": 44, + "max": [ + 1.4482066035270691e-07, + 0.02240833081305027, + 1.8253922462463379e-07 + ], + "min": [ + -3.7252902984619141e-09, + 0.022408243268728256, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309400, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519840, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 544480, + "componentType": 5126, + "count": 44, + "max": [ + -6.4913183450698853e-07, + -9.6193980425596237e-07, + 1.9557775843281888e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 309608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519936, + "componentType": 5126, + "count": 44, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309784, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 520464, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 545184, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130239248275757, + 0.10888323932886124, + -0.021744664758443832, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320952653885, + -0.021744726225733757, + 0.9531739354133606 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 520584, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -4.4703483581542969e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310176, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521112, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310192, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 545888, + "componentType": 5126, + "count": 44, + "max": [ + -1.4028048944680904e-08, + 3.2130635929661366e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.5250410712042139e-08, + 2.1012969142475413e-08, + -2.2351743567128324e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310368, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521160, + "componentType": 5126, + "count": 58, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310600, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521856, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310668, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 546592, + "componentType": 5126, + "count": 58, + "max": [ + 0.28130322694778442, + 0.10890334844589233, + -0.021634636446833611, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.10886994004249573, + -0.021744493395090103, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 522060, + "componentType": 5126, + "count": 44, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954793751239777, + 0.33536875247955322, + -0.0064072869718074799 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311076, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 522588, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "min": [ + 0.9999995231628418, + 0.99999934434890747, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311232, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 547520, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214225232601166, + 0.16701884567737579, + 0.2257961630821228, + 0.94418632984161377 + ], + "min": [ + -0.17214229702949524, + 0.16701878607273102, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 311408, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523056, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 1.7136335372924805e-07, + 1.4062970876693726e-07 + ], + "min": [ + -1.0430812835693359e-07, + 1.6391277313232422e-07, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311584, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523584, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 548224, + "componentType": 5126, + "count": 44, + "max": [ + 5.1222746044743417e-09, + -2.0489098417897367e-08, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + 3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 311776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523632, + "componentType": 5126, + "count": 44, + "max": [ + -4.0978193283081055e-08, + 0.022592537105083466, + 1.862645149230957e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.022592464461922646, + -1.3504177331924438e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311952, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524160, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312040, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 548928, + "componentType": 5126, + "count": 44, + "max": [ + 0.08288169652223587, + 0.044399194419384003, + 0.02859199233353138, + 0.99515920877456665 + ], + "min": [ + 0.082881465554237366, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524424, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 6.3329935073852539e-08, + 1.1548399925231934e-07 + ], + "min": [ + -4.4703483581542969e-08, + -7.4505805969238281e-09, + -6.28642737865448e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312392, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524952, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312416, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 549632, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244550097127103e-08, + 3.8184232664661977e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.8277209079542445e-08, + 1.1175872671742582e-08, + -1.0477383405316232e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312592, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525024, + "componentType": 5126, + "count": 44, + "max": [ + 2.2165477275848389e-07, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876321226358414, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312768, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525552, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312820, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 550336, + "componentType": 5126, + "count": 44, + "max": [ + 0.041518151760101318, + 0.028988037258386612, + 0.020971935242414474, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312996, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525708, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.013938121497631073, + 9.5926225185394287e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.013938065618276596, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313172, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526236, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 551040, + "componentType": 5126, + "count": 44, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -3.771856427192688e-08, + 6.5425410866737366e-08, + -3.771856427192688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 313364, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526284, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313540, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526812, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313628, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 551744, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057234764099121, + 0.17872513830661774, + -0.015338524244725704, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872510850429535, + -0.01533864438533783, + 0.91919589042663574 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 313804, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527076, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + 2.9802322387695312e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313980, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527604, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 552448, + "componentType": 5126, + "count": 44, + "max": [ + 4.4819907785154101e-09, + -1.9557775843281888e-08, + -1.8626450382086546e-09, + 1 + ], + "min": [ + 3.9581213862049935e-09, + -2.4214388716359281e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 314188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527700, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314364, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 528228, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314464, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 553152, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338567085564137, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + 0.17872488498687744, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 314640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 528528, + "componentType": 5126, + "count": 44, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579681009054184, + 0.32914391160011292, + 0.0039983503520488739 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314816, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529056, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999970197677612, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 553856, + "componentType": 5126, + "count": 44, + "max": [ + -0.13570015132427216, + 0.18749435245990753, + 0.27479097247123718, + 0.9332316517829895 + ], + "min": [ + -0.13570018112659454, + 0.18749421834945679, + 0.27479088306427002, + 0.93323159217834473 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 315060, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529260, + "componentType": 5126, + "count": 44, + "max": [ + -2.9802322387695312e-08, + 2.5657936930656433e-07, + 2.2293534129858017e-07 + ], + "min": [ + -3.5911216400563717e-07, + 1.4156103134155273e-07, + 1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315236, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529788, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 554560, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527609133443548e-08, + -1.1175873559921001e-08, + -6.7055218266887096e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 315460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529932, + "componentType": 5126, + "count": 62, + "max": [ + 2.9453076422214508e-08, + 0.25792214274406433, + 1.10274413600564e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315708, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 530676, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315788, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 555264, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 316036, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 530916, + "componentType": 5126, + "count": 73, + "max": [ + 3.6135315895080566e-07, + 0.12896072864532471, + 6.6868960857391357e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 316328, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 531792, + "componentType": 5126, + "count": 66, + "max": [ + 0.99999946355819702, + 1.0000060796737671, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 1.0000019073486328, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 316592, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 556256, + "componentType": 5126, + "count": 73, + "max": [ + 5.5228764495041105e-07, + 0.88032650947570801, + 2.0877798760920996e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 316884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 532584, + "componentType": 5126, + "count": 44, + "max": [ + 1.0430812835693359e-07, + 0.13927136361598969, + 3.7252902984619141e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317060, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533112, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000004768371582, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999785423278809, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317124, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 557424, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531542301177979, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401247143745422, + 0.19322679936885834, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 317300, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533304, + "componentType": 5126, + "count": 42, + "max": [ + -0.044326536357402802, + -0.1107146143913269, + 0.071930199861526489 + ], + "min": [ + -0.044326584786176682, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317468, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533808, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 558128, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531512498855591, + 0.090401209890842438, + -0.19322690367698669, + 0.94302976131439209 + ], + "min": [ + -0.25531551241874695, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 317676, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533904, + "componentType": 5126, + "count": 51, + "max": [ + 6.7055225372314453e-08, + -1.4901161193847656e-08, + 4.5821070671081543e-07 + ], + "min": [ + 1.4901161193847656e-08, + -6.7055225372314453e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317880, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 534516, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999713897705078, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317928, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 558832, + "componentType": 5126, + "count": 51, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631590935779968e-07, + -2.9895460329498746e-07, + -1.1252719787080423e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 318132, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 534660, + "componentType": 5126, + "count": 62, + "max": [ + 3.7252902984619141e-08, + 0.27854269742965698, + 6.1700120568275452e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318380, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 535404, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318412, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 559648, + "componentType": 5126, + "count": 62, + "max": [ + 0.25531500577926636, + -0.090401500463485718, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571898639202118, + -0.12242159247398376, + 0.17470519244670868, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 318660, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 535500, + "componentType": 5126, + "count": 49, + "max": [ + -6.3329935073852539e-08, + 0.1392713338136673, + 4.6752393245697021e-07 + ], + "min": [ + -3.8743019104003906e-07, + 0.13927125930786133, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318856, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536088, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318904, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 560640, + "componentType": 5126, + "count": 49, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0624992683005985e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319100, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536232, + "componentType": 5126, + "count": 62, + "max": [ + 0.027315612882375717, + 0.33446058630943298, + 0.019757712259888649 + ], + "min": [ + 0.027315512299537659, + 0.3344605565071106, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319348, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536976, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319364, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 561424, + "componentType": 5126, + "count": 62, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839563727378845, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668533802032471, + -0.48917782306671143 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319612, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537024, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 8.3819031715393066e-09, + 3.7709014577558264e-07 + ], + "min": [ + 6.3060724642127752e-08, + -4.2840838432312012e-08, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319788, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537552, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319804, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 562416, + "componentType": 5126, + "count": 44, + "max": [ + -6.9740049291056039e-09, + -3.2074240152724087e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -8.3091427072190527e-09, + -3.2596290111541748e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319980, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537600, + "componentType": 5126, + "count": 32, + "max": [ + -0.023130090907216072, + 0.26697903871536255, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965265989303589 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320108, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537984, + "componentType": 5126, + "count": 26, + "max": [ + 0.9999997615814209, + 0.99999970197677612, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320212, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 563120, + "componentType": 5126, + "count": 44, + "max": [ + -0.69586670398712158, + 0.39777567982673645, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 320388, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 538296, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320692, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 539208, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320740, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 563824, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 321044, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 539352, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 321348, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 540264, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 321412, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 565040, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 321716, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 540456, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322020, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 541368, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322084, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 566256, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 322388, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 541560, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322692, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 542472, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322748, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 567472, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 542640, + "componentType": 5126, + "count": 44, + "max": [ + -8.3527993410825729e-09, + -1.3605159665530664e-08, + -2.5611370801925659e-08 + ], + "min": [ + -2.0985442716892067e-08, + -2.0023435354232788e-08, + -2.8113703365306719e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323228, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543168, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323244, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 568688, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077033865590238e-08, + 1.8684659153223038e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.3908793167493059e-08, + 1.8663602219248787e-08, + -1.0186340659856796e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323420, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543216, + "componentType": 5126, + "count": 62, + "max": [ + 6.3351762946695089e-08, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323668, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543960, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323732, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 569392, + "componentType": 5126, + "count": 62, + "max": [ + 0.0025871710386127234, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896300554275513, + -0.37012156844139099, + -0.0055759232491254807 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323980, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544152, + "componentType": 5126, + "count": 44, + "max": [ + 2.6804627850651741e-08, + 2.1420419216156006e-08, + -2.7474015951156616e-08 + ], + "min": [ + -5.50062395632267e-09, + -7.6368451118469238e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324156, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544680, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324172, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 570384, + "componentType": 5126, + "count": 44, + "max": [ + -5.2322903343338112e-08, + 7.1333474238599592e-08, + 2.0081638574254157e-09, + 1 + ], + "min": [ + -5.8862475782461843e-08, + 7.1071532659061631e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 324348, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544728, + "componentType": 5126, + "count": 44, + "max": [ + 2.1187588572502136e-08, + 0.4787544310092926, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875440120697021, + -4.377216100692749e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324524, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545256, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324564, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 571088, + "componentType": 5126, + "count": 44, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115001767873764, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 324740, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545376, + "componentType": 5126, + "count": 44, + "max": [ + 6.5425410866737366e-08, + 0.23937709629535675, + 2.0582228899002075e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937708139419556, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324916, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545904, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324948, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 571792, + "componentType": 5126, + "count": 44, + "max": [ + 1.1330482152516197e-07, + 0.039239484816789627, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "min": [ + -6.5417602002071362e-08, + 0.039239473640918732, + 1.197672219177548e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325124, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546000, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505805969238281e-09, + 0.2127838134765625, + 3.5390257835388184e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.21278376877307892, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325300, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546528, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325316, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 572496, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897858619689941, + 0.18448328971862793, + 0.7880139946937561, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448323011398315, + 0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325492, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546576, + "componentType": 5126, + "count": 29, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323382496833801 + ], + "min": [ + -0.15143668651580811, + 0.084600701928138733, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325608, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546924, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325640, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 573200, + "componentType": 5126, + "count": 43, + "max": [ + 0.27897855639457703, + -0.18448324501514435, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448333442211151, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325812, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547020, + "componentType": 5126, + "count": 46, + "max": [ + 1.4156103134155273e-07, + -1.1102230246251565e-16, + 8.2072801887989044e-09 + ], + "min": [ + 2.8638169169425964e-08, + -1.4156103134155273e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325996, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547572, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326052, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 573888, + "componentType": 5126, + "count": 46, + "max": [ + 6.8091333105257945e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.1525117749044966e-08, + -5.9022578824396987e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 326236, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547740, + "componentType": 5126, + "count": 62, + "max": [ + 4.0978193283081055e-08, + 0.425567626953125, + 6.1467289924621582e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.42556756734848022, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326484, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 548484, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326516, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 574624, + "componentType": 5126, + "count": 62, + "max": [ + -0.20713317394256592, + 0.28850480914115906, + 0.78801411390304565, + 0.54963231086730957 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 326764, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 548580, + "componentType": 5126, + "count": 51, + "max": [ + 1.1920928955078125e-07, + 0.2127840518951416, + 1.862645149230957e-08 + ], + "min": [ + 7.0780515670776367e-08, + 0.21278393268585205, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326968, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549192, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327124, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 575616, + "componentType": 5126, + "count": 51, + "max": [ + 7.8231160216546414e-08, + 1.0408691650809487e-06, + 2.4959456368378596e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 327328, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549660, + "componentType": 5126, + "count": 8, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957681179046631, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327360, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549756, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327420, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 576432, + "componentType": 5126, + "count": 61, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53586781024932861, + 0.75361925363540649, + -0.15842762589454651, + -0.34612774848937988 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 327664, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549936, + "componentType": 5126, + "count": 44, + "max": [ + -1.2259971526873414e-07, + -7.3088671115328907e-08, + -4.0905604237195803e-08 + ], + "min": [ + -1.3599580483969476e-07, + -8.517139349351055e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327840, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 550464, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327848, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 577408, + "componentType": 5126, + "count": 44, + "max": [ + 1.1175901093452012e-08, + -9.4372563097522288e-09, + -3.5528871511480986e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372580861090682e-09, + -3.5529088004970788e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328024, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 550488, + "componentType": 5126, + "count": 62, + "max": [ + 1.6647391021251678e-08, + 0.31343457102775574, + 2.0343577489256859e-08 + ], + "min": [ + -8.512869853483096e-10, + 0.31343457102775574, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328272, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551232, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328324, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 578112, + "componentType": 5126, + "count": 62, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210074286907911, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195707328617573 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328572, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551388, + "componentType": 5126, + "count": 44, + "max": [ + 8.1534381024539471e-08, + 1.1175870895385742e-07, + 5.4686097428202629e-08 + ], + "min": [ + 7.0023816078901291e-08, + 7.543712854385376e-08, + 3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328748, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551916, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 579104, + "componentType": 5126, + "count": 44, + "max": [ + -1.8806686763461755e-10, + -6.7157088778913021e-08, + -2.9685904845422328e-09, + 1 + ], + "min": [ + -1.520882619843178e-08, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328932, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551940, + "componentType": 5126, + "count": 62, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + 2.3283064365386963e-09, + 0.47875422239303589, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329180, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 552684, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329244, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 579808, + "componentType": 5126, + "count": 62, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 329492, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 552876, + "componentType": 5126, + "count": 62, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 2.7127680368721485e-07 + ], + "min": [ + -9.0803951025009155e-09, + 0.23937720060348511, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329740, + "componentType": 5126, + "count": 28, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 553620, + "componentType": 5126, + "count": 28, + "max": [ + 0.99999970197677612, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329852, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 580800, + "componentType": 5126, + "count": 62, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -5.78927199512691e-07, + -0.039239216595888138, + 2.451136253966979e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330100, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 553956, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 0.21278379857540131, + 2.2351741790771484e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330276, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554484, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330292, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 581792, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897849678993225, + -0.18448299169540405, + -0.78801417350769043, + 0.51688557863235474 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801417350769043, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330468, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554532, + "componentType": 5126, + "count": 23, + "max": [ + 0.15143664181232452, + 0.084600932896137238, + -0.12323371320962906 + ], + "min": [ + 0.15143662691116333, + 0.084600888192653656, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330560, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554808, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 582496, + "componentType": 5126, + "count": 44, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448290228843689, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555024, + "componentType": 5126, + "count": 44, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 1.5931436792016029e-07 + ], + "min": [ + 3.4458935260772705e-08, + -5.7741999626159668e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330984, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555552, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331040, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 583200, + "componentType": 5126, + "count": 44, + "max": [ + 2.7602067120824358e-07, + 1.0858637722321873e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.4866312742233276e-07, + 9.3830728076227388e-08, + 1.3275710841753607e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 331216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555720, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 0.42556747794151306, + -1.1175870895385742e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331392, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556248, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331408, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 583904, + "componentType": 5126, + "count": 44, + "max": [ + -0.2789786159992218, + -0.18448291718959808, + -0.7880139946937561, + 0.51688581705093384 + ], + "min": [ + -0.27897864580154419, + -0.18448294699192047, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 331584, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556296, + "componentType": 5126, + "count": 44, + "max": [ + 1.2665987014770508e-07, + 0.21278375387191772, + 8.1956386566162109e-08 + ], + "min": [ + 0, + 0.2127835750579834, + 3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331760, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556824, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331864, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 584608, + "componentType": 5126, + "count": 44, + "max": [ + 1.0640362546610049e-07, + -1.8626433728741176e-09, + -1.3411043653377419e-07, + 1 + ], + "min": [ + 2.1420424545226524e-08, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 332040, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557136, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957693099975586, + -0.15007568895816803 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332072, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557232, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332152, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 585312, + "componentType": 5126, + "count": 61, + "max": [ + -0.5353204607963562, + 0.76489150524139404, + -0.089343681931495667, + 0.34697279334068298 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 332396, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557472, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332700, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558384, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332756, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 586288, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 333060, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558552, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333188, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558936, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333268, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 587504, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 333332, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 559176, + "componentType": 5126, + "count": 62, + "max": [ + 2.5331974029541016e-07, + -6.5600033849477768e-08, + 3.457535058259964e-07 + ], + "min": [ + 4.1058228816837072e-08, + -7.4505805969238281e-08, + -1.2380769476294518e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333580, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 559920, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999856948852539, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333772, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 587760, + "componentType": 5126, + "count": 62, + "max": [ + 0.31903618574142456, + 0.83380436897277832, + 0.38887384533882141, + 0.53821998834609985 + ], + "min": [ + -0.29336035251617432, + -0.78853166103363037, + -0.178261399269104, + -0.49746593832969666 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 334020, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 560496, + "componentType": 5126, + "count": 76, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334324, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 561408, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334340, + "componentType": 5126, + "count": 57, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 588752, + "componentType": 5126, + "count": 57, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229203581809998, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 334568, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 561456, + "componentType": 5126, + "count": 62, + "max": [ + 2.2351741790771484e-07, + 1.6391277313232422e-07, + 6.7229848355054855e-08 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334816, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 562200, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334908, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 589664, + "componentType": 5126, + "count": 62, + "max": [ + -0.23966479301452637, + 0.83489787578582764, + -0.010105871595442295, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902318477630615, + 0.45567795634269714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335156, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 562476, + "componentType": 5126, + "count": 76, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335460, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563388, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335476, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 590656, + "componentType": 5126, + "count": 61, + "max": [ + 0.26693445444107056, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601046562194824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335720, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563436, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335848, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563820, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335928, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 591632, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335992, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 564060, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336252, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 564840, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336308, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 591888, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482402078807354, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294226869940758, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 336568, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565008, + "componentType": 5126, + "count": 61, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336812, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565740, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336844, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 592928, + "componentType": 5126, + "count": 61, + "max": [ + 0.10101209580898285, + 0.79781532287597656, + -0.48497870564460754, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 337088, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565836, + "componentType": 5126, + "count": 65, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337348, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 566616, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337436, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 593904, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + 0.39800706505775452, + 0.12996619939804077, + 0.71552276611328125 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 337696, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 566880, + "componentType": 5126, + "count": 48, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337888, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 567456, + "componentType": 5126, + "count": 17, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999964237213135 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337956, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 594944, + "componentType": 5126, + "count": 48, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516587674617767, + -0.3081190288066864 + ], + "min": [ + 0.92842531204223633, + -0.11126615852117538, + -0.17523978650569916, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 338148, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 567660, + "componentType": 5126, + "count": 65, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338408, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 568440, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338472, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 595712, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 338732, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 568632, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338908, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 569160, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338932, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 596752, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477138519287109, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790062189102173 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 339108, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 569232, + "componentType": 5126, + "count": 66, + "max": [ + -3.5390257835388184e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.25762289762496948, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339372, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 570024, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339420, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 597456, + "componentType": 5126, + "count": 66, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026340842247009, + -0.19707934558391571, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 339684, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 570168, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339964, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 571008, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340036, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 598512, + "componentType": 5126, + "count": 70, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076334238052368, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 340316, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 571224, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340576, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340592, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 599632, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 340852, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572052, + "componentType": 5126, + "count": 61, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341096, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572784, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341188, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 600672, + "componentType": 5126, + "count": 61, + "max": [ + -0.098626755177974701, + 0.79781526327133179, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101209580898285, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 341432, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 573060, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341692, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 573840, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341772, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 601648, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35182005167007446, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342032, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574080, + "componentType": 5126, + "count": 47, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342220, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574644, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342244, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 602688, + "componentType": 5126, + "count": 47, + "max": [ + 0.92845195531845093, + 0.11125477403402328, + 0.17524003982543945, + -0.30811884999275208 + ], + "min": [ + 0.92842662334442139, + 0.11104369908571243, + 0.17516998946666718, + -0.30815878510475159 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342432, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574716, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342692, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 575496, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342724, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 603440, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342984, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 575592, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343160, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 576120, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343224, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 604480, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477177262306213, + -0.41790032386779785 + ], + "min": [ + 0.81515997648239136, + 0.2049533873796463, + 0.34477171301841736, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 343400, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 576312, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-09, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.25762262940406799, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343660, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 577092, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999946355819702, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343752, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 605184, + "componentType": 5126, + "count": 65, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 344012, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 577368, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344292, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 578208, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344348, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 606224, + "componentType": 5126, + "count": 70, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 344628, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 578376, + "componentType": 5126, + "count": 76, + "max": [ + 4.6566128730773926e-10, + 3.7252902984619141e-08, + 3.7252902984619141e-09 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344932, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 579288, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344948, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 607344, + "componentType": 5126, + "count": 76, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 345252, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 579336, + "componentType": 5126, + "count": 62, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -4.2778280917588063e-15, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 345500, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 580080, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 345540, + "componentType": 5126, + "count": 53, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 608560, + "componentType": 5126, + "count": 53, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 345752, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 580200, + "componentType": 5126, + "count": 71, + "max": [ + -2.7533531010703882e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -1.4901154088420299e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346036, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 581052, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346068, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 609408, + "componentType": 5126, + "count": 71, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698613803973785e-08, + -1.8470409202109295e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 346352, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 581148, + "componentType": 5126, + "count": 71, + "max": [ + -6.2172489379008766e-15, + 0.36641570925712585, + 6.2172489379008766e-15 + ], + "min": [ + -3.3750779948604759e-14, + 0.36641567945480347, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346636, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 582000, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346724, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 610544, + "componentType": 5126, + "count": 71, + "max": [ + 0.36187875270843506, + 1.7365225701837517e-08, + 8.7073104282353597e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347008, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 582264, + "componentType": 5126, + "count": 71, + "max": [ + 2.7929047963226594e-15, + 0.74672240018844604, + -1.1102230246251565e-16 + ], + "min": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347292, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583116, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347356, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 611680, + "componentType": 5126, + "count": 71, + "max": [ + 0.096756108105182648, + 1.6351776821466046e-08, + 9.8581814711451443e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -7.8859665464392492e-09, + 9.7168474155751028e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347640, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583308, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347648, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583332, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347664, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 612816, + "componentType": 5126, + "count": 12, + "max": [ + -0.061978887766599655, + 3.3637053523236636e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -2.6537087288140325e-18, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347712, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583380, + "componentType": 5126, + "count": 61, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 1.1713601111296157e-07 + ], + "min": [ + -4.990958046846572e-08, + -1.3287539957218542e-07, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347956, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584112, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000017881393433, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000007152557373, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348036, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 613008, + "componentType": 5126, + "count": 61, + "max": [ + 0.56482315063476562, + 0.78602433204650879, + -0.12704809010028839, + -0.29326319694519043 + ], + "min": [ + 0.52875351905822754, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348280, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584352, + "componentType": 5126, + "count": 6, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348304, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584424, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348312, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 613984, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348344, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584448, + "componentType": 5126, + "count": 61, + "max": [ + 1.5542553910563583e-09, + -1.9861484901184667e-08, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810734556886018e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348588, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585180, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348704, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 614112, + "componentType": 5126, + "count": 61, + "max": [ + -0.52770334482192993, + 0.78695201873779297, + -0.12602679431438446, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307970404624939 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348948, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585528, + "componentType": 5126, + "count": 6, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348972, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585600, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348980, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615088, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349012, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585624, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349180, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586128, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349188, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615216, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349196, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586152, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349204, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586176, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349212, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615248, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349220, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586200, + "componentType": 5126, + "count": 65, + "max": [ + -8.8817841970012523e-15, + 0.19137144088745117, + 4.4703476476115611e-08 + ], + "min": [ + -2.6645352591003757e-14, + 0.1913713663816452, + -2.980232949312267e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349480, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586980, + "componentType": 5126, + "count": 15, + "max": [ + 1, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349540, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615280, + "componentType": 5126, + "count": 65, + "max": [ + 0.052249874919652939, + 0.038816019892692566, + 0.056205734610557556, + 0.99958056211471558 + ], + "min": [ + -0.053022608160972595, + 5.1139215884177247e-07, + -4.7714451056890539e-08, + 0.99629521369934082 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349800, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 587160, + "componentType": 5126, + "count": 65, + "max": [ + 1.1723955140041653e-13, + 0.30786654353141785, + -7.4505805969238281e-08 + ], + "min": [ + 8.8817841970012523e-15, + 0.30786627531051636, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350060, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 587940, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350096, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 616320, + "componentType": 5126, + "count": 65, + "max": [ + 0.028134267777204514, + -4.0643462284606358e-07, + 2.1426093610443786e-07, + 0.99988174438476562 + ], + "min": [ + -0.077048309147357941, + -0.040203806012868881, + -0.055221345275640488, + 0.99468475580215454 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588048, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + 1.7695128917694092e-07, + 2.0954757928848267e-07 + ], + "min": [ + 2.6077032089233398e-08, + 1.4994293451309204e-07, + 1.5320256352424622e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588504, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 617360, + "componentType": 5126, + "count": 38, + "max": [ + 1.257285475730896e-08, + 5.5879358917820809e-09, + -3.7834960164850884e-10, + 1 + ], + "min": [ + 1.257285475730896e-08, + -3.2596281229757551e-09, + -1.3678795873772742e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588552, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.02822350338101387, + 7.1711838245391846e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.028223389759659767, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350828, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589008, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 617968, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234388500452042, + -0.058250218629837036, + -0.038226820528507233, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.038226854056119919, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589032, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 8.8475644588470459e-08, + -1.4016404747962952e-07 + ], + "min": [ + -3.5390257835388184e-08, + -3.2596290111541748e-08, + -2.6496127247810364e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351140, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589488, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 618576, + "componentType": 5126, + "count": 38, + "max": [ + -1.8626449715952731e-08, + -5.2154049967612082e-08, + -1.303851426825986e-08, + 1 + ], + "min": [ + -3.3527609133443548e-08, + -5.5879340266073996e-08, + -1.5832481992106295e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589512, + "componentType": 5126, + "count": 38, + "max": [ + 5.5511151231257827e-17, + 0.045039918273687363, + -1.4435499906539917e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.045039862394332886, + -5.2619725465774536e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351452, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589968, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999970197677612 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351484, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 619184, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882833778858185, + -0.038419142365455627, + -9.6807285444810987e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419153541326523, + -9.6816773293539882e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351636, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590064, + "componentType": 5126, + "count": 38, + "max": [ + -3.5390257835388184e-08, + 0.022519780322909355, + 7.7765434980392456e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.022519718855619431, + 6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351788, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590520, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 619792, + "componentType": 5126, + "count": 38, + "max": [ + 5.1595282002381282e-07, + -9.3504809228761587e-07, + 2.4028125267250289e-07, + 1 + ], + "min": [ + 5.1595276318039396e-07, + -9.3504814913103473e-07, + 2.4028125267250289e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590616, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069626122713088989, + 5.8615114539861679e-08 + ], + "min": [ + -4.5102810375396984e-17, + 0.069626010954380035, + -4.7788489609956741e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352124, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 620400, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803965508937836, + -0.038298320025205612, + -0.04408370703458786, + 0.98228901624679565 + ], + "min": [ + 0.17803964018821716, + -0.038298387080430984, + -0.04408375546336174, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591120, + "componentType": 5126, + "count": 38, + "max": [ + -3.8184225559234619e-08, + -1.2107193470001221e-08, + -2.2351741790771484e-08 + ], + "min": [ + -4.9825757741928101e-08, + -9.7788870334625244e-08, + -4.2840838432312012e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352444, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591576, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 621008, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175871783564162e-08, + 2.9802318834981634e-08, + 4.4703490686970326e-08, + 1 + ], + "min": [ + -2.2351740014414645e-08, + 2.6077032089233398e-08, + 4.2840841985025691e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591624, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 0.033446528017520905, + 9.3132257461547852e-09 + ], + "min": [ + -1.103617250919342e-07, + 0.033446501940488815, + 1.862645149230957e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352764, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592080, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 621616, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510392427444458, + 0.016420735046267509, + -0.038739223033189774, + 0.99888283014297485 + ], + "min": [ + 0.021510157734155655, + 0.016420731320977211, + -0.038739226758480072, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592128, + "componentType": 5126, + "count": 38, + "max": [ + -2.4680048227310181e-08, + 7.0314854383468628e-08, + -2.9802322387695312e-08 + ], + "min": [ + -1.8230639398097992e-07, + 6.1932951211929321e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353084, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592584, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 622224, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252907425511239e-09, + -1.8626444386882213e-08, + 3.5390250729960826e-08, + 1 + ], + "min": [ + 3.7252883000604697e-09, + -1.8626447939595892e-08, + 2.607702853651972e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592632, + "componentType": 5126, + "count": 38, + "max": [ + 7.3341652750968933e-08, + 0.041744742542505264, + 2.4214386940002441e-08 + ], + "min": [ + -3.1897798180580139e-08, + 0.041744612157344818, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353404, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593088, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 622832, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518209874629974, + 0.0088784964755177498, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518191993236542, + 0.0088784927502274513, + -0.057382550090551376, + 0.98455232381820679 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593208, + "componentType": 5126, + "count": 38, + "max": [ + 4.7963112592697144e-08, + 0.020872283726930618, + 5.8207660913467407e-08 + ], + "min": [ + 4.4237822294235229e-09, + 0.020872151479125023, + 5.3085386753082275e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353748, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593664, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 623440, + "componentType": 5126, + "count": 38, + "max": [ + -1.303851426825986e-08, + -9.6857540654582408e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + -1.8626449715952731e-08, + -1.1175869474300271e-07, + -1.639127589214695e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593712, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086899455636739731, + -0.0083239180967211723, + 0.023024428635835648 + ], + "min": [ + -0.0086899837478995323, + -0.008324100635945797, + 0.023024152964353561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354068, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594168, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 624048, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.70575261116027832 + ], + "min": [ + 0.0063956012018024921, + 0.6579899787902832, + 0.26252907514572144, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594264, + "componentType": 5126, + "count": 38, + "max": [ + -5.3085386753082275e-08, + 1.1175870895385742e-07, + -9.1618858277797699e-08 + ], + "min": [ + -7.0780515670776367e-08, + 4.5634806156158447e-08, + -1.993030309677124e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354404, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594720, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 624656, + "componentType": 5126, + "count": 38, + "max": [ + 1.3969837731053758e-08, + -2.7939686120248552e-09, + -5.2154067731180476e-08, + 1 + ], + "min": [ + -5.5879336713360317e-09, + -1.3038518709151958e-08, + -6.3329942179279897e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594768, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069626122713088989, + 5.8615114539861679e-08 + ], + "min": [ + -4.5102810375396984e-17, + 0.069626010954380035, + -4.7788489609956741e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354724, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595224, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 625264, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + -0.038296114653348923, + -0.044083848595619202, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + -0.038296118378639221, + -0.0440838523209095, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595272, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086899455636739731, + -0.0083239180967211723, + 0.023024428635835648 + ], + "min": [ + -0.0086899837478995323, + -0.008324100635945797, + 0.023024152964353561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355044, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595728, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 625872, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70575273036956787 + ], + "min": [ + 0.0063958144746720791, + 0.65798979997634888, + 0.2625291645526886, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595824, + "componentType": 5126, + "count": 38, + "max": [ + 0.0073303310200572014, + 0.34354430437088013, + -0.021197834983468056 + ], + "min": [ + 0.0073303282260894775, + 0.34354424476623535, + -0.021197959780693054 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355380, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596280, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 626480, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320605158805847, + -0.1123732402920723, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320605158805847, + -0.11237327009439468, + -0.12725989520549774, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596304, + "componentType": 5126, + "count": 38, + "max": [ + -1.3737007975578308e-08, + -5.8673322200775146e-08, + 2.2060703486204147e-08 + ], + "min": [ + -3.119930624961853e-08, + -2.3469328880310059e-07, + -5.3318217396736145e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355692, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596760, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 627088, + "componentType": 5126, + "count": 38, + "max": [ + 6.7520877777837995e-09, + 3.213062527152033e-08, + 2.9394861655873683e-08, + 1 + ], + "min": [ + 5.8207647590791112e-09, + 3.14321368932724e-08, + 2.1864249077907516e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596808, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.032195962965488434, + 3.0500814318656921e-08 + ], + "min": [ + 1.862645149230957e-09, + 0.032195955514907837, + -2.3283075467617209e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356012, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597264, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 627696, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476783007383347, + -0.045752901583909988, + -0.0250434260815382, + 0.99704056978225708 + ], + "min": [ + 0.056476779282093048, + -0.045752901583909988, + -0.025043429806828499, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597408, + "componentType": 5126, + "count": 38, + "max": [ + 6.5192580223083496e-09, + 1.2107193470001221e-07, + 6.9267116487026215e-08 + ], + "min": [ + -4.0046870708465576e-08, + 4.4703483581542969e-08, + -5.4715201258659363e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597864, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 628304, + "componentType": 5126, + "count": 38, + "max": [ + -1.3504179996459698e-08, + -3.0733652067738149e-08, + -8.1490680869933385e-10, + 1 + ], + "min": [ + -1.3504180884638117e-08, + -3.5390264940815541e-08, + -7.5669968069291826e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597912, + "componentType": 5126, + "count": 38, + "max": [ + 0, + 0.049540426582098007, + 3.119930624961853e-08 + ], + "min": [ + -2.1420419216156006e-08, + 0.049540422856807709, + -2.5611370801925659e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356684, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598368, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 628912, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + -0.085242278873920441, + -0.013570736162364483, + 0.98919981718063354 + ], + "min": [ + 0.11846211552619934, + -0.085242286324501038, + -0.013570741750299931, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598464, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.024769982323050499, + 1.2223608791828156e-07 + ], + "min": [ + -5.8207660913467407e-08, + 0.024769926443696022, + 6.4785126596689224e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357020, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598920, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 629520, + "componentType": 5126, + "count": 38, + "max": [ + -5.8580184258971713e-07, + 9.4063602773530874e-07, + -1.4528633585086936e-07, + 1 + ], + "min": [ + -5.8580195627655485e-07, + 9.3318550398180378e-07, + -1.5087425708770752e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598968, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-09, + 0.068187125027179718, + 1.02460035122931e-07 + ], + "min": [ + -2.8405338525772095e-08, + 0.068187057971954346, + -6.7462678998708725e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357340, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599424, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 630128, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749138832092285, + -0.069006554782390594, + -0.0030256574973464012, + 0.97361516952514648 + ], + "min": [ + 0.21749132871627808, + -0.069006621837615967, + -0.0030257571488618851, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599496, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969838619232178e-09, + 7.0780515670776367e-08, + 3.5972334444522858e-08 + ], + "min": [ + -6.5192580223083496e-09, + 5.4016709327697754e-08, + -1.0558869689702988e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357668, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599952, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 630736, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252892326478104e-08, + -3.7252898543727042e-09, + -2.6077024983806041e-08, + 1 + ], + "min": [ + 3.1664960431498912e-08, + -1.3969839507410597e-08, + -2.6077032089233398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357836, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600000, + "componentType": 5126, + "count": 43, + "max": [ + -6.0535967350006104e-09, + 0.068187125027179718, + 1.02460035122931e-07 + ], + "min": [ + -2.8405338525772095e-08, + 0.068187057971954346, + -6.7462678998708725e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358008, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358040, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 631344, + "componentType": 5126, + "count": 43, + "max": [ + 0.2175012081861496, + -0.069013789296150208, + -0.0028895104769617319, + 0.97361505031585693 + ], + "min": [ + 0.21748912334442139, + -0.069082513451576233, + -0.0030575778800994158, + 0.97360992431640625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600612, + "componentType": 5126, + "count": 38, + "max": [ + 0.02324727363884449, + 0.34059691429138184, + -0.015326406806707382 + ], + "min": [ + 0.023247214034199715, + 0.34059679508209229, + -0.015326503664255142 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601068, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 632032, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811843752861023, + -0.13169907033443451, + -0.16719593107700348, + 0.96071571111679077 + ], + "min": [ + -0.17811861634254456, + -0.13169917464256287, + -0.16719599068164825, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358548, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601164, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + 7.8580342233181e-09, + -1.3213139027357101e-08 + ], + "min": [ + -2.514570951461792e-08, + -5.3842086344957352e-09, + -1.8655555322766304e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358700, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601620, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 632640, + "componentType": 5126, + "count": 38, + "max": [ + 6.5192580223083496e-09, + -1.303851426825986e-08, + -2.7939668356680158e-09, + 1 + ], + "min": [ + 3.7252907425511239e-09, + -1.303851515643828e-08, + -3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601668, + "componentType": 5126, + "count": 38, + "max": [ + 2.3748725652694702e-08, + 0.031801082193851471, + 3.0122464522719383e-08 + ], + "min": [ + 2.0372681319713593e-08, + 0.031800955533981323, + -6.8030203692615032e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359020, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602124, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 633248, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024125576019287, + -0.10080225020647049, + -0.057818219065666199, + 0.98179608583450317 + ], + "min": [ + 0.15024115145206451, + -0.10080227255821228, + -0.057818248867988586, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602220, + "componentType": 5126, + "count": 38, + "max": [ + 3.8184225559234619e-08, + 1.4575198292732239e-07, + -2.3050233721733093e-07 + ], + "min": [ + 1.862645149230957e-09, + 3.3760443329811096e-08, + -2.3783650249242783e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602676, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 633856, + "componentType": 5126, + "count": 38, + "max": [ + -8.149072527885437e-09, + -2.0139852452416562e-08, + -3.5754055716097355e-08, + 1 + ], + "min": [ + -8.3819031715393066e-09, + -2.0372681319713593e-08, + -3.6619894672185183e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602724, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695128917694092e-08, + 0.044816765934228897, + -1.8480932340025902e-08 + ], + "min": [ + 1.3969838619232178e-08, + 0.044816732406616211, + -2.3108441382646561e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359676, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603180, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 634464, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152057826519012, + -0.052601058036088943, + -0.024043349549174309, + 0.99564242362976074 + ], + "min": [ + 0.073151923716068268, + -0.052601061761379242, + -0.024043366312980652, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603276, + "componentType": 5126, + "count": 38, + "max": [ + -6.1467289924621582e-08, + 0.02240850031375885, + 4.3539330363273621e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.02240847609937191, + 2.7823261916637421e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360012, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603732, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 635072, + "componentType": 5126, + "count": 38, + "max": [ + -6.0920126543351216e-07, + 9.5111300879580085e-07, + -2.3748725652694702e-08, + 1 + ], + "min": [ + -6.1676820450884406e-07, + 9.4925030680315103e-07, + -4.8661604523658752e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603780, + "componentType": 5126, + "count": 38, + "max": [ + -2.7939677238464355e-08, + 0.069797426462173462, + 1.0897201718762517e-07 + ], + "min": [ + -3.9115548133850098e-08, + 0.069797426462173462, + 6.4195774029940367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360332, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604236, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 635680, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130212426185608, + -0.10888312757015228, + 0.021744726225733757, + 0.95317405462265015 + ], + "min": [ + 0.28130194544792175, + -0.108883336186409, + 0.021744661033153534, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604332, + "componentType": 5126, + "count": 38, + "max": [ + 7.0780515670776367e-08, + 3.7252902984619141e-09, + 2.8961221687495708e-07 + ], + "min": [ + 4.8428773880004883e-08, + -4.0978193283081055e-08, + 2.595770638436079e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360668, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604788, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 636288, + "componentType": 5126, + "count": 38, + "max": [ + 5.8964378268910878e-08, + -3.7427536625500579e-08, + -2.2351748896198842e-08, + 1 + ], + "min": [ + 3.3993284631606002e-08, + -5.0000398488236897e-08, + -2.9802325940408991e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360836, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604836, + "componentType": 5126, + "count": 43, + "max": [ + -2.7939677238464355e-08, + 0.069797426462173462, + 1.0897201718762517e-07 + ], + "min": [ + -3.9115548133850098e-08, + 0.069797426462173462, + 6.4195774029940367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361008, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605352, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361048, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 636896, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888498276472092, + 0.021744545549154282, + 0.95317471027374268 + ], + "min": [ + 0.28129714727401733, + -0.10890084505081177, + 0.021690791472792625, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605472, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954547882080078, + 0.3353690505027771, + -0.006407150998711586 + ], + "min": [ + 0.034954499453306198, + 0.33536896109580994, + -0.0064071658998727798 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361372, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605928, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000007152557373, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 637584, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + -0.16701863706111908, + -0.22579604387283325, + 0.94418638944625854 + ], + "min": [ + -0.17214243113994598, + -0.16701880097389221, + -0.22579619288444519, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606024, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 1.0989606380462646e-07, + 1.2759119272232056e-07 + ], + "min": [ + 6.1467289924621582e-08, + 2.2351741790771484e-08, + 8.3819031715393066e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361708, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606480, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 638192, + "componentType": 5126, + "count": 38, + "max": [ + 9.313229076823859e-10, + 7.4505805969238281e-09, + 3.3527619791584584e-08, + 1 + ], + "min": [ + -8.3819058360745657e-09, + -3.7252916307295436e-09, + 2.980232949312267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606576, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.022592527791857719, + 7.6834112405776978e-08 + ], + "min": [ + -2.6077032089233398e-08, + 0.022592457011342049, + 2.6542693376541138e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362044, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607032, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 638800, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399168342351913, + -0.02859191782772541, + 0.99515920877456665 + ], + "min": [ + 0.082881741225719452, + -0.044399168342351913, + -0.028591921553015709, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607080, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + -6.5192580223083496e-09, + 2.9802322387695312e-08 + ], + "min": [ + -1.1102230246251565e-16, + -7.543712854385376e-08, + -1.6298145055770874e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607536, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 639408, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901162970204496e-08, + 2.7939681679356454e-09, + -1.0710211384434842e-08, + 1 + ], + "min": [ + -1.7695130694050931e-08, + -3.7252907425511239e-09, + -1.210719435817964e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607584, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.027876298874616623, + 2.7939677238464355e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.027876269072294235, + -3.4458935260772705e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362684, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608040, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 640016, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988022357225418, + -0.020971918478608131, + 0.99849694967269897 + ], + "min": [ + 0.04151814803481102, + -0.028988024219870567, + -0.020971944555640221, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608136, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-08, + 0.013938127085566521, + -1.1641532182693481e-07 + ], + "min": [ + -3.7252902984619141e-08, + 0.013938039541244507, + -1.8021091818809509e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363020, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608592, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 640624, + "componentType": 5126, + "count": 38, + "max": [ + 5.7567365985278229e-08, + -1.2991947073714982e-07, + 4.8938087360284044e-08, + 1 + ], + "min": [ + 5.5180851887826066e-08, + -1.3178211588638078e-07, + 2.6717312806567861e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608616, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-09, + 0.074802413582801819, + -8.4110070019960403e-09 + ], + "min": [ + -2.7755575615628914e-17, + 0.074802353978157043, + -8.9232344180345535e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363332, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609072, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 641232, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057210922241211, + -0.17872518301010132, + 0.015338432975113392, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + -0.17872521281242371, + 0.015338417142629623, + 0.91919595003128052 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609192, + "componentType": 5126, + "count": 38, + "max": [ + -3.5390257835388184e-08, + -8.754432201385498e-08, + -1.0026269592344761e-07 + ], + "min": [ + -3.7252902984619141e-08, + -8.9406967163085938e-08, + -1.1755037121474743e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363676, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609648, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 641840, + "componentType": 5126, + "count": 38, + "max": [ + -2.6746420189738274e-08, + -2.0372683096070432e-08, + -3.3527612686157227e-08, + 1 + ], + "min": [ + -4.4063202864208506e-08, + -2.3166650819916867e-08, + -3.5390257835388184e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363836, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609672, + "componentType": 5126, + "count": 41, + "max": [ + 1.862645149230957e-09, + 0.074802413582801819, + -8.4110070019960403e-09 + ], + "min": [ + -2.7755575615628914e-17, + 0.074802353978157043, + -8.9232344180345535e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364000, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610164, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364040, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 642448, + "componentType": 5126, + "count": 41, + "max": [ + 0.35057199001312256, + -0.17872500419616699, + 0.015338690020143986, + 0.91919887065887451 + ], + "min": [ + 0.35053929686546326, + -0.17878907918930054, + 0.015170705504715443, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610284, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579274952411652, + 0.32914423942565918, + 0.0039985403418540955 + ], + "min": [ + 0.044579233974218369, + 0.3291441798210144, + 0.0039985310286283493 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610740, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999970197677612, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 643104, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + -0.1874941885471344, + -0.27479091286659241, + 0.9332316517829895 + ], + "min": [ + -0.13570016622543335, + -0.18749438226222992, + -0.27479094266891479, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610788, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 5.289912223815918e-07, + 1.1175870895385742e-07 + ], + "min": [ + 0, + 4.1723251342773438e-07, + 1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364676, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 611244, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 643712, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901159417490817e-08, + 1.0058283095304432e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901158529312397e-08, + 9.3132243250693136e-08, + -1.8626449715952731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364844, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 611292, + "componentType": 5126, + "count": 65, + "max": [ + -1.1175870895385742e-08, + 0.25792214274406433, + 3.7252902984619141e-08 + ], + "min": [ + -2.4214386940002441e-08, + 0.25792208313941956, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365104, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612072, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365136, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 644320, + "componentType": 5126, + "count": 65, + "max": [ + 0.11253763735294342, + 0.862018883228302, + 0.19106139242649078, + 0.53805023431777954 + ], + "min": [ + 0.06823372095823288, + 0.83393681049346924, + 0.04970516636967659, + 0.46450307965278625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 365396, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612168, + "componentType": 5126, + "count": 63, + "max": [ + -6.891787052154541e-08, + 0.1289609968662262, + 5.9604644775390625e-08 + ], + "min": [ + -8.754432201385498e-08, + 0.12896081805229187, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365648, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612924, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999982118606567, + 1.0000019073486328, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000019073486328, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365688, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 645360, + "componentType": 5126, + "count": 63, + "max": [ + 4.5155672978580697e-07, + 0.88032656908035278, + 7.2773516990309872e-08, + 0.54215627908706665 + ], + "min": [ + -2.7663776336339652e-07, + 0.84027767181396484, + -3.8382276557058503e-07, + 0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 365940, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613044, + "componentType": 5126, + "count": 38, + "max": [ + -7.8231096267700195e-08, + 0.13927145302295685, + 2.9802322387695312e-08 + ], + "min": [ + -1.0430812835693359e-07, + 0.13927140831947327, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366092, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613500, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000005960464478, + 1.0000015497207642, + 1.0000017881393433 + ], + "min": [ + 1.0000004768371582, + 1.0000013113021851, + 1.0000014305114746 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 646368, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531628727912903, + 0.090401187539100647, + -0.19322745501995087, + 0.94302940368652344 + ], + "min": [ + 0.2553161084651947, + 0.090401150286197662, + -0.19322752952575684, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 366292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613644, + "componentType": 5126, + "count": 38, + "max": [ + 0.044326677918434143, + -0.11071391403675079, + 0.071930155158042908 + ], + "min": [ + 0.044326595962047577, + -0.11071401089429855, + 0.071930132806301117 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366444, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614100, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 0.99999654293060303, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.9999958872795105, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366548, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 646976, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531598925590515, + -0.090401239693164825, + 0.19322757422924042, + 0.94302940368652344 + ], + "min": [ + -0.25531616806983948, + -0.090401269495487213, + 0.19322746992111206, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 366700, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614412, + "componentType": 5126, + "count": 43, + "max": [ + 2.0489096641540527e-08, + 8.9406967163085938e-08, + -1.4901161193847656e-08 + ], + "min": [ + -3.166496753692627e-08, + -1.1175870895385742e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366872, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614928, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999862909317017, + 1.0000007152557373 + ], + "min": [ + 1, + 0.99999845027923584, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366904, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 647584, + "componentType": 5126, + "count": 43, + "max": [ + 2.3841869278840022e-07, + 8.8326596596743912e-06, + 3.8230814425332937e-07, + 1 + ], + "min": [ + 1.7788269701668469e-07, + -2.4875621420505922e-06, + 2.4307533408318704e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 367076, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615024, + "componentType": 5126, + "count": 65, + "max": [ + -7.8231096267700195e-08, + 0.2785429060459137, + 1.4901161193847656e-08 + ], + "min": [ + -9.3132257461547852e-08, + 0.27854257822036743, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367336, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615804, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367352, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 648272, + "componentType": 5126, + "count": 65, + "max": [ + 0.37624797224998474, + 0.090401507914066315, + -0.19322660565376282, + 0.94302982091903687 + ], + "min": [ + 0.25531506538391113, + 0.064400866627693176, + -0.20337523519992828, + 0.90162545442581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 367612, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615852, + "componentType": 5126, + "count": 42, + "max": [ + 3.7252902984619141e-09, + 0.13927173614501953, + -7.4505805969238281e-09 + ], + "min": [ + -1.8253922462463379e-07, + 0.13927128911018372, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367780, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 616356, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.99999880790710449, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367936, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 649312, + "componentType": 5126, + "count": 42, + "max": [ + 7.4505774882993592e-09, + -2.0544971448543947e-06, + 5.1967754188808613e-07, + 1 + ], + "min": [ + -3.3527630449725621e-08, + -7.0240321292658336e-06, + -3.7951383546896977e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368104, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 616824, + "componentType": 5126, + "count": 64, + "max": [ + -0.027315694838762283, + 0.33446067571640015, + 0.019757580012083054 + ], + "min": [ + -0.027315715327858925, + 0.33446043729782104, + 0.019757453352212906 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 617592, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000007152557373 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368376, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 649984, + "componentType": 5126, + "count": 64, + "max": [ + -0.24058763682842255, + 0.70802509784698486, + -0.31539642810821533, + 0.55572360754013062 + ], + "min": [ + -0.34603971242904663, + 0.68740224838256836, + -0.3883955180644989, + 0.53827023506164551 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368632, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 617640, + "componentType": 5126, + "count": 38, + "max": [ + -1.1037627700716257e-08, + 2.066371962428093e-08, + 3.8957750803092495e-07 + ], + "min": [ + -1.490843715146184e-08, + 1.8975697457790375e-08, + 2.6790985430125147e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368784, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618096, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 651008, + "componentType": 5126, + "count": 38, + "max": [ + -6.990377610094356e-09, + 8.2283818869655079e-08, + 6.7050933694190462e-08, + 1 + ], + "min": [ + -6.994014700723028e-09, + 8.2269266954426712e-08, + 5.215035159267245e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368944, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618120, + "componentType": 5126, + "count": 22, + "max": [ + 0.023130046203732491, + 0.26697841286659241, + 0.14965295791625977 + ], + "min": [ + 0.023130035027861595, + 0.26697829365730286, + 0.14965294301509857 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369032, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618384, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999970197677612 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369048, + "componentType": 5126, + "count": 36, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 651616, + "componentType": 5126, + "count": 36, + "max": [ + -0.69586658477783203, + -0.39777594804763794, + -0.2970300018787384, + 0.51895767450332642 + ], + "min": [ + -0.69586664438247681, + -0.39777600765228271, + -0.29703009128570557, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369192, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618432, + "componentType": 5126, + "count": 38, + "max": [ + 6.7055225372314453e-08, + -2.1420419216156006e-08, + 5.8207660913467407e-08 + ], + "min": [ + 2.6077032089233398e-08, + -1.4202669262886047e-07, + -8.3819031715393066e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369344, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618888, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 652192, + "componentType": 5126, + "count": 38, + "max": [ + 1.0943037587196613e-08, + 1.8160790205001831e-08, + 1.2892996004154611e-08, + 1 + ], + "min": [ + 1.0710208719899583e-08, + 1.257285475730896e-08, + 5.238688594033647e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618912, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02822345495223999, + 1.0244548320770264e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.028223427012562752, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369656, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619368, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369672, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 652800, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363168478012, + 0.058250226080417633, + 0.03822685033082962, + 0.99122375249862671 + ], + "min": [ + 0.11234340816736221, + 0.058250196278095245, + 0.038226831704378128, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619416, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 1.7695128917694092e-08, + 4.2375177145004272e-08 + ], + "min": [ + -2.4214386940002441e-08, + -6.5192580223083496e-09, + -3.771856427192688e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369976, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619872, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369984, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 653408, + "componentType": 5126, + "count": 38, + "max": [ + -1.8626455933201669e-09, + -9.3132248579763655e-09, + -9.3132257461547852e-10, + 1 + ], + "min": [ + -7.4505805969238281e-09, + -1.3038516932795119e-08, + -5.5879354476928711e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619896, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.045039929449558258, + -4.656611762854368e-10 + ], + "min": [ + -1.862645149230957e-09, + 0.045039907097816467, + -6.0070306062698364e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370288, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620352, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 654016, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882632613182068, + 0.038419164717197418, + 9.6882380603346974e-05, + 0.99622201919555664 + ], + "min": [ + 0.07788240909576416, + 0.03841916099190712, + 9.6863936050795019e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620472, + "componentType": 5126, + "count": 38, + "max": [ + -1.4528632164001465e-07, + 0.022520141676068306, + 1.5087425708770752e-07 + ], + "min": [ + -1.6205012798309326e-07, + 0.022520113736391068, + 3.2130628824234009e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620928, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 654624, + "componentType": 5126, + "count": 38, + "max": [ + 6.3516193904433749e-07, + 9.4994902610778809e-07, + -2.1047888765224343e-07, + 1 + ], + "min": [ + 6.3329940758194425e-07, + 9.3877298468214576e-07, + -2.1606685152164573e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620976, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.069626130163669586, + 8.7951775640249252e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.069626055657863617, + 2.828892320394516e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370952, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621432, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370984, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 655232, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803950607776642, + 0.038298312574625015, + 0.044083617627620697, + 0.98228907585144043 + ], + "min": [ + 0.17803947627544403, + 0.038298293948173523, + 0.044083587825298309, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621528, + "componentType": 5126, + "count": 38, + "max": [ + 1.1967495083808899e-07, + -3.166496753692627e-08, + 2.6077032089233398e-08 + ], + "min": [ + 2.7939677238464355e-08, + -7.6368451118469238e-08, + 9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371288, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621984, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 655840, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252894102834944e-09, + -2.607702676016288e-08, + -4.6566118072632889e-08, + 1 + ], + "min": [ + -1.1175868230850483e-08, + -3.352760202801619e-08, + -6.8917856310690695e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371456, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622032, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-09, + 0.033446528017520905, + 1.0408340855860843e-16 + ], + "min": [ + -8.7078660726547241e-08, + 0.033446472138166428, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371608, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622488, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 656448, + "componentType": 5126, + "count": 38, + "max": [ + 0.021509725600481033, + -0.016420768573880196, + 0.038739215582609177, + 0.99888283014297485 + ], + "min": [ + 0.02150970883667469, + -0.01642078161239624, + 0.038739178329706192, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622536, + "componentType": 5126, + "count": 38, + "max": [ + 7.8231096267700195e-08, + 4.4703483581542969e-08, + -1.0337680578231812e-07 + ], + "min": [ + -1.1175870895385742e-08, + -8.8475644588470459e-09, + -1.2852251529693604e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371928, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622992, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 657056, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 3.3527609133443548e-08, + 1.1175870895385742e-08, + 1 + ], + "min": [ + -3.7252898543727042e-09, + 1.862645326866641e-08, + 5.5879354476928711e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623040, + "componentType": 5126, + "count": 38, + "max": [ + 3.14321368932724e-08, + 0.041744664311408997, + 4.377216100692749e-08 + ], + "min": [ + 1.0710209608078003e-08, + 0.041744627058506012, + -1.9557774066925049e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372248, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623496, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 657664, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518144309520721, + -0.0088785318657755852, + 0.05738256499171257, + 0.98455244302749634 + ], + "min": [ + 0.16518139839172363, + -0.0088785504922270775, + 0.057382542639970779, + 0.98455244302749634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623544, + "componentType": 5126, + "count": 38, + "max": [ + 1.832377165555954e-07, + 0.020872432738542557, + 1.2107193470001221e-07 + ], + "min": [ + 1.6391277313232422e-07, + 0.020872386172413826, + 5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372568, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624000, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 658272, + "componentType": 5126, + "count": 38, + "max": [ + -4.3772171665068527e-08, + -2.6077037418303917e-08, + 3.7252911866403338e-09, + 1 + ], + "min": [ + -5.494803900774059e-08, + -2.9802325940408991e-08, + -4.4408963336653624e-16, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624048, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086900116875767708, + -0.0083240848034620285, + 0.023024333640933037 + ], + "min": [ + 0.0086899157613515854, + -0.0083241211250424385, + 0.023024162277579308 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624504, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 658880, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956673257052898, + -0.65799003839492798, + -0.26252901554107666, + 0.70575255155563354 + ], + "min": [ + 0.0063956575468182564, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624552, + "componentType": 5126, + "count": 38, + "max": [ + 9.8720192909240723e-08, + -2.0489096641540527e-08, + -2.7590431272983551e-07 + ], + "min": [ + 7.1711838245391846e-08, + -9.7788870334625244e-08, + -3.9488077163696289e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625008, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 659488, + "componentType": 5126, + "count": 38, + "max": [ + -1.210719613453648e-08, + 1.4901159417490817e-08, + 7.078050856534901e-08, + 1 + ], + "min": [ + -2.0489098417897367e-08, + 1.0244547432591844e-08, + 3.7252899431905462e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625056, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.069626130163669586, + 8.7951775640249252e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.069626055657863617, + 2.828892320394516e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373528, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625512, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373576, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 660096, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + 0.038296084851026535, + 0.04408390074968338, + 0.98228931427001953 + ], + "min": [ + 0.17803844809532166, + 0.038296081125736237, + 0.044083889573812485, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373728, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625656, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086900116875767708, + -0.0083240848034620285, + 0.023024333640933037 + ], + "min": [ + 0.0086899157613515854, + -0.0083241211250424385, + 0.023024162277579308 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373880, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626112, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373896, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 660704, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063957739621400833, + -0.65798985958099365, + -0.26252910494804382, + 0.70575273036956787 + ], + "min": [ + 0.0063957264646887779, + -0.65798985958099365, + -0.26252913475036621, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626160, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073304055258631706, + 0.34354397654533386, + -0.021197786554694176 + ], + "min": [ + -0.0073304139077663422, + 0.34354394674301147, + -0.021197935566306114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374196, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626616, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 661296, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237333714962006, + 0.12725983560085297, + 0.96830403804779053 + ], + "min": [ + -0.18320611119270325, + 0.11237328499555588, + 0.12725980579853058, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626736, + "componentType": 5126, + "count": 38, + "max": [ + -2.3283064365386963e-09, + 2.0954757928848267e-07, + 4.0163286030292511e-08 + ], + "min": [ + -1.0477378964424133e-08, + 1.6205012798309326e-07, + 1.4260876923799515e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627192, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 661904, + "componentType": 5126, + "count": 38, + "max": [ + 9.1480540580441843e-19, + -8.381904947896146e-09, + 1.9434082787483931e-08, + 1 + ], + "min": [ + -1.862645371275562e-09, + -9.42964106798172e-09, + 1.1285011147776913e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627240, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527612686157227e-08, + 0.03219609335064888, + 6.9849181993930642e-10 + ], + "min": [ + 3.7252902984619141e-09, + 0.032195977866649628, + -2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374860, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627696, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 662512, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476809084415436, + 0.045752875506877899, + 0.02504347451031208, + 0.99704056978225708 + ], + "min": [ + 0.056476801633834839, + 0.045752875506877899, + 0.025043448433279991, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627840, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-09, + -7.4971467256546021e-08, + 1.3620592653751373e-08 + ], + "min": [ + 4.6566128730773926e-09, + -1.1827796697616577e-07, + -3.1315721571445465e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375212, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628296, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 663120, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132268563778098e-10, + 3.3527619791584584e-08, + -1.5832489097533653e-08, + 1 + ], + "min": [ + -9.3132257461547852e-10, + 3.2596297216969106e-08, + -2.0838349712448689e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628344, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.0495404452085495, + 7.520429790019989e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.049540434032678604, + -4.3073669075965881e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375532, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628800, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 663728, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846213787794113, + 0.085242271423339844, + 0.013570732437074184, + 0.98919981718063354 + ], + "min": [ + 0.11846213787794113, + 0.085242263972759247, + 0.013570724986493587, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628896, + "componentType": 5126, + "count": 38, + "max": [ + -2.1420419216156006e-08, + 0.024770131334662437, + 1.1059455573558807e-08 + ], + "min": [ + -2.9336661100387573e-08, + 0.024770110845565796, + -1.680455170571804e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375868, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629352, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375900, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 664336, + "componentType": 5126, + "count": 38, + "max": [ + -5.8114528656005859e-07, + -9.4063585720505216e-07, + 1.9371509552001953e-07, + 1 + ], + "min": [ + -5.8859581031356356e-07, + -9.4994913979462581e-07, + 1.8626450071224099e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629448, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + 0.068187057971954346, + 8.518691174685955e-08 + ], + "min": [ + -1.909211277961731e-08, + 0.068187043070793152, + 2.3923348635435104e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376204, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629904, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 664944, + "componentType": 5126, + "count": 38, + "max": [ + 0.2174912691116333, + 0.069006599485874176, + 0.0030256749596446753, + 0.97361516952514648 + ], + "min": [ + 0.21749123930931091, + 0.069006577134132385, + 0.0030256400350481272, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629952, + "componentType": 5126, + "count": 38, + "max": [ + 5.3551048040390015e-08, + 6.891787052154541e-08, + 1.0139774531126022e-07 + ], + "min": [ + 4.7963112592697144e-08, + 6.891787052154541e-08, + 6.2049366533756256e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376524, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 630408, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 665552, + "componentType": 5126, + "count": 38, + "max": [ + 2.4806551000424262e-16, + 1.6763804566721774e-08, + 7.4505805969238281e-09, + 1 + ], + "min": [ + -7.4505805969238281e-09, + 9.3132248579763655e-09, + -3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376708, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 630504, + "componentType": 5126, + "count": 63, + "max": [ + 1.0244548320770264e-08, + 0.068187057971954346, + 8.518691174685955e-08 + ], + "min": [ + -1.909211277961731e-08, + 0.068187043070793152, + 2.3923348635435104e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376960, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631260, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376992, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 666160, + "componentType": 5126, + "count": 63, + "max": [ + 0.21749910712242126, + 0.069074742496013641, + 0.0030864626169204712, + 0.97361725568771362 + ], + "min": [ + 0.21746279299259186, + 0.068978361785411835, + 0.0028579616919159889, + 0.97361528873443604 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 377244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631356, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247275501489639, + 0.34059673547744751, + -0.015326322987675667 + ], + "min": [ + -0.023247366771101952, + 0.34059670567512512, + -0.015326365828514099 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377396, + "componentType": 5126, + "count": 36, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631812, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000004768371582, + 1.0000014305114746, + 1.0000011920928955 + ], + "min": [ + 0.99999940395355225, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 667168, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811863124370575, + 0.13169920444488525, + 0.16719597578048706, + 0.96071571111679077 + ], + "min": [ + -0.17811869084835052, + 0.13169904053211212, + 0.16719576716423035, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 377692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632244, + "componentType": 5126, + "count": 38, + "max": [ + -2.3515895009040833e-08, + 1.8026912584900856e-07, + -2.4025212042033672e-08 + ], + "min": [ + -6.7870132625102997e-08, + 1.4828401617705822e-07, + -6.129266694188118e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632700, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 667776, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351736461700966e-08, + -1.8626449271863521e-09, + 7.4505797087454084e-09, + 1 + ], + "min": [ + -3.0733637856883433e-08, + -3.7252891882388894e-09, + 6.5192562459515102e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632748, + "componentType": 5126, + "count": 38, + "max": [ + 1.2223608791828156e-08, + 0.031800944358110428, + 8.7311491370201111e-09 + ], + "min": [ + -1.3969838619232178e-08, + 0.031800892204046249, + -1.1179508874192834e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378164, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633204, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 668384, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228745937347, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024107694625854, + 0.10080226510763168, + 0.057818237692117691, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633252, + "componentType": 5126, + "count": 38, + "max": [ + 2.7008354663848877e-08, + 1.234002411365509e-08, + -1.2223607681605131e-09 + ], + "min": [ + -7.4505805969238281e-09, + -3.4691765904426575e-08, + -6.2456820160150528e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633708, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 668992, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + -1.4784745872020721e-08, + -1.391163095831871e-08, + 1 + ], + "min": [ + 5.3551039158605818e-09, + -1.5133991837501526e-08, + -2.2344464056800462e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633756, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-09, + 0.044816698879003525, + 4.7555658966302872e-08 + ], + "min": [ + -3.8184225559234619e-08, + 0.044816639274358749, + -8.671486284583807e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378804, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634212, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 669600, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151923716068268, + 0.052601069211959839, + 0.024043366312980652, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043353274464607, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634260, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.022408299148082733, + 1.4193938113749027e-07 + ], + "min": [ + -1.3038516044616699e-08, + 0.022408235818147659, + 8.2858605310320854e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379124, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634716, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 670208, + "componentType": 5126, + "count": 38, + "max": [ + -6.429619361369987e-07, + -9.5879670425347285e-07, + 1.6530979252138422e-08, + 1 + ], + "min": [ + -6.4889900386333466e-07, + -9.6345320343971252e-07, + 1.2805687177319669e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379308, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634812, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 0.06979745626449585, + 1.4081160770729184e-07 + ], + "min": [ + -1.862645149230957e-08, + 0.069797366857528687, + 2.2519088815897703e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379460, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635268, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 670816, + "componentType": 5126, + "count": 38, + "max": [ + 0.2813020646572113, + 0.10888322442770004, + -0.021744759753346443, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320207595825, + -0.021744780242443085, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635316, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038516044616699e-08, + -1.862645149230957e-09, + 1.1634256225079298e-07 + ], + "min": [ + -1.3038516044616699e-08, + -5.029141902923584e-08, + -6.0928869061172009e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379780, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635772, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379804, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 671424, + "componentType": 5126, + "count": 38, + "max": [ + 4.6275094867098687e-09, + 2.2700991308965968e-08, + -1.4901161193847656e-08, + 1 + ], + "min": [ + -4.3364725144101612e-09, + 1.8393626177726219e-08, + -2.2351745343485163e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379956, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635844, + "componentType": 5126, + "count": 47, + "max": [ + 3.166496753692627e-08, + 0.06979745626449585, + 1.4081160770729184e-07 + ], + "min": [ + -1.862645149230957e-08, + 0.069797366857528687, + 2.2519088815897703e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380144, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636408, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380176, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 672032, + "componentType": 5126, + "count": 47, + "max": [ + 0.28130322694778442, + 0.10891053080558777, + -0.021657936275005341, + 0.95317548513412476 + ], + "min": [ + 0.28129333257675171, + 0.10888498276472092, + -0.021744512021541595, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 380364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636504, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954514354467392, + 0.335368812084198, + -0.0064072813838720322 + ], + "min": [ + -0.034954525530338287, + 0.33536872267723083, + -0.0064073428511619568 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380516, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636960, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000004768371582, + 1.0000007152557373 + ], + "min": [ + 0.99999970197677612, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 672784, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214222252368927, + 0.16701889038085938, + 0.22579611837863922, + 0.94418638944625854 + ], + "min": [ + -0.17214234173297882, + 0.16701880097389221, + 0.22579598426818848, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 380776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637284, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 8.754432201385498e-08, + 1.4808028936386108e-07 + ], + "min": [ + 2.4214386940002441e-08, + 6.4261257648468018e-08, + 1.4342367649078369e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380928, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637740, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 673392, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + -9.3132266343332049e-09, + 7.4505814851022478e-09, + 1 + ], + "min": [ + -1.3969839507410597e-08, + -1.6763804566721774e-08, + -3.7252900764173091e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637788, + "componentType": 5126, + "count": 38, + "max": [ + -1.3038516044616699e-08, + 0.022592576220631599, + 7.2177499532699585e-08 + ], + "min": [ + -4.2840838432312012e-08, + 0.022592568770051003, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381248, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638244, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 674000, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399186968803406, + 0.028591975569725037, + 0.99515920877456665 + ], + "min": [ + 0.082881473004817963, + 0.04439917579293251, + 0.028591956943273544, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638388, + "componentType": 5126, + "count": 38, + "max": [ + 5.5511151231257827e-17, + 1.0058283805847168e-07, + -3.6321580410003662e-08 + ], + "min": [ + -2.2351741790771484e-08, + 9.6857547760009766e-08, + -8.800998330116272e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381600, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638844, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999958276748657, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 674608, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901164746561335e-08, + 1.8626455045023249e-08, + 6.9849224182405578e-09, + 1 + ], + "min": [ + -1.7695132470407771e-08, + 1.3969840395589017e-08, + 3.7252916307295436e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638916, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.027876399457454681, + -1.9557774066925049e-08 + ], + "min": [ + -2.6077032089233398e-08, + 0.027876392006874084, + -5.4948031902313232e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381928, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639372, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 675216, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518151760101318, + 0.028988027945160866, + 0.020971927791833878, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.02898801863193512, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382128, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639516, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.013938194140791893, + 7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.013938145712018013, + -2.9336661100387573e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382280, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639972, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 675824, + "componentType": 5126, + "count": 38, + "max": [ + -3.6437995731830597e-08, + 7.6368458223896596e-08, + -1.0637450920114588e-08, + 1 + ], + "min": [ + -3.8417059755602168e-08, + 7.4505813074665639e-08, + -3.2800016924738884e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640020, + "componentType": 5126, + "count": 38, + "max": [ + 2.7939677238464355e-09, + 0.07480233907699585, + -7.2119291871786118e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.074802331626415253, + -1.0308576747775078e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382600, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640476, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382616, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 676432, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057207942008972, + 0.17872516810894012, + -0.015338553115725517, + 0.91919600963592529 + ], + "min": [ + 0.35057201981544495, + 0.17872515320777893, + -0.015338643454015255, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382768, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640524, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + 7.0780515670776367e-08, + -1.0587973520159721e-07 + ], + "min": [ + -1.3038516044616699e-08, + 1.862645371275562e-09, + -1.3722456060349941e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640980, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 677040, + "componentType": 5126, + "count": 38, + "max": [ + 4.3364707380533218e-09, + -2.1071173250675201e-08, + 9.0982519370015613e-16, + 1 + ], + "min": [ + -5.5588320613253472e-09, + -2.3632310330867767e-08, + 5.3363063269311733e-18, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641028, + "componentType": 5126, + "count": 38, + "max": [ + 2.7939677238464355e-09, + 0.07480233907699585, + -7.2119291871786118e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.074802331626415253, + -1.0308576747775078e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383240, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641484, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383256, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 677648, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338595025241375, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338609926402569, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383408, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641532, + "componentType": 5126, + "count": 38, + "max": [ + -0.044579215347766876, + 0.32914406061172485, + 0.0039983857423067093 + ], + "min": [ + -0.044579241424798965, + 0.3291439414024353, + 0.0039983224123716354 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383560, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641988, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383600, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 678256, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570018112659454, + 0.18749426305294037, + 0.27479076385498047, + 0.93323171138763428 + ], + "min": [ + -0.13570019602775574, + 0.18749424815177917, + 0.27479076385498047, + 0.93323171138763428 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642108, + "componentType": 5126, + "count": 38, + "max": [ + -5.2154064178466797e-08, + 1.7881393432617188e-07, + 8.1956386566162109e-08 + ], + "min": [ + -7.4505805969238281e-08, + 1.1920928955078125e-07, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383904, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642564, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 678864, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + -2.2351745343485163e-08, + -7.078050856534901e-08, + 1 + ], + "min": [ + 1.4901162970204496e-08, + -4.0978196835794733e-08, + -8.1956386566162109e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 384088, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642660, + "componentType": 5126, + "count": 65, + "max": [ + -1.8626450382086546e-09, + 0.25792211294174194, + 3.7252902984619141e-09 + ], + "min": [ + -1.862645371275562e-09, + 0.25792211294174194, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384348, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643440, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 679472, + "componentType": 5126, + "count": 65, + "max": [ + -0.021843180060386658, + 0.88061058521270752, + 0.19106145203113556, + -0.45820611715316772 + ], + "min": [ + -0.068233758211135864, + 0.86200660467147827, + 0.11793126910924911, + -0.46508944034576416 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 384616, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643464, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 0.12896113097667694, + 1.1175870895385742e-08 + ], + "min": [ + 3.5390257835388184e-08, + 0.12896111607551575, + 1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384792, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643992, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999995231628418, + 1, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384824, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 680512, + "componentType": 5126, + "count": 44, + "max": [ + -2.25778027385104e-08, + 0.88548815250396729, + -1.1485237649822011e-07, + -0.46466189622879028 + ], + "min": [ + -1.2074235655745724e-07, + 0.88032656908035278, + -2.6209929160359025e-07, + -0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644088, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527612686157227e-08, + 0.13927140831947327, + 2.2351741790771484e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.13927136361598969, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385152, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644544, + "componentType": 5126, + "count": 4, + "max": [ + 0.9999995231628418, + 1.0000001192092896, + 0.99999898672103882 + ], + "min": [ + 0.99999946355819702, + 1.0000001192092896, + 0.99999892711639404 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 681216, + "componentType": 5126, + "count": 38, + "max": [ + 0.2553144097328186, + -0.090401604771614075, + 0.19322627782821655, + 0.94303005933761597 + ], + "min": [ + 0.25531435012817383, + -0.090401627123355865, + 0.19322626292705536, + 0.94303005933761597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385320, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644592, + "componentType": 5126, + "count": 32, + "max": [ + -0.044326622039079666, + -0.11071473360061646, + 0.071930252015590668 + ], + "min": [ + -0.04432663694024086, + -0.11071483045816422, + 0.071930237114429474 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385448, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644976, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000007152557373, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 681824, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531437993049622, + 0.090401656925678253, + -0.19322623312473297, + 0.94303005933761597 + ], + "min": [ + -0.2553144097328186, + 0.090401642024517059, + -0.19322623312473297, + 0.94303005933761597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385632, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645072, + "componentType": 5126, + "count": 46, + "max": [ + -1.862645149230957e-08, + -1.7136335372924805e-07, + 3.3527612686157227e-08 + ], + "min": [ + -4.8428773880004883e-08, + -1.7136335372924805e-07, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385816, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645624, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000011920928955, + 1 + ], + "min": [ + 1, + 1.000001072883606, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385832, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 682432, + "componentType": 5126, + "count": 46, + "max": [ + -1.4901154088420299e-07, + 1.6402919982283493e-06, + -2.8777856186934514e-07, + 1 + ], + "min": [ + -2.1699804619856877e-07, + -2.8815125006076414e-06, + -3.6600960129362647e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645672, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.27854257822036743, + 1.4901161193847656e-08 + ], + "min": [ + 1.1175870895385742e-08, + 0.27854251861572266, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386168, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646128, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 683168, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531506538391113, + -0.090401478111743927, + 0.1932266503572464, + 0.94302982091903687 + ], + "min": [ + 0.25531500577926636, + -0.090401478111743927, + 0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386336, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646176, + "componentType": 5126, + "count": 40, + "max": [ + 1.6763806343078613e-07, + 0.13927125930786133, + 5.5511151231257827e-17 + ], + "min": [ + 9.6857547760009766e-08, + 0.13927114009857178, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386496, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646656, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999892711639404, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386568, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 683776, + "componentType": 5126, + "count": 40, + "max": [ + 7.8231124689409626e-08, + 1.0641291737556458e-05, + 4.6007363607714069e-07, + 1 + ], + "min": [ + -5.5879372240497105e-08, + 1.0639429092407227e-05, + -7.0221568648776156e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386728, + "componentType": 5126, + "count": 28, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646872, + "componentType": 5126, + "count": 28, + "max": [ + 0.027315620332956314, + 0.33446064591407776, + 0.019757568836212158 + ], + "min": [ + 0.027315597981214523, + 0.33446061611175537, + 0.019757561385631561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386840, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647208, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386856, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 684416, + "componentType": 5126, + "count": 65, + "max": [ + -0.24058754742145538, + -0.63463574647903442, + 0.38865479826927185, + 0.59767657518386841 + ], + "min": [ + -0.349519282579422, + -0.70802515745162964, + 0.34330227971076965, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387116, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647256, + "componentType": 5126, + "count": 38, + "max": [ + 5.7589204516261816e-08, + 8.0326572060585022e-09, + 2.6076577341882512e-07 + ], + "min": [ + 5.477340891957283e-08, + 7.7416189014911652e-09, + 1.4316901797428727e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387268, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 685456, + "componentType": 5126, + "count": 38, + "max": [ + -6.9685484049841762e-09, + -3.2068786737227128e-08, + 6.7069890974380542e-08, + 1 + ], + "min": [ + -6.9794614532270316e-09, + -3.2074240152724087e-08, + 4.4715747549162188e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387452, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647808, + "componentType": 5126, + "count": 22, + "max": [ + -0.02313009649515152, + 0.26697865128517151, + 0.14965291321277618 + ], + "min": [ + -0.023130105808377266, + 0.26697853207588196, + 0.1496528834104538 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648072, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 686064, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.29703018069267273, + 0.51895773410797119 + ], + "min": [ + -0.69586664438247681, + 0.39777573943138123, + 0.29703015089035034, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387724, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648168, + "componentType": 5126, + "count": 65, + "max": [ + 1.1723955140041653e-13, + 0.30786654353141785, + -7.4505805969238281e-08 + ], + "min": [ + 8.8817841970012523e-15, + 0.30786627531051636, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387984, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648948, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 686672, + "componentType": 5126, + "count": 65, + "max": [ + 0.028134267777204514, + -4.0643462284606358e-07, + 2.1426093610443786e-07, + 0.99988174438476562 + ], + "min": [ + -0.077048309147357941, + -0.040203806012868881, + -0.055221345275640488, + 0.99468475580215454 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 388280, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649056, + "componentType": 5126, + "count": 65, + "max": [ + 1.4212155757808986e-14, + 0.77674132585525513, + -2.4214401150857157e-08 + ], + "min": [ + 1.4209553672595021e-14, + 0.77674120664596558, + -2.9802336598550028e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649836, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388572, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 687712, + "componentType": 5126, + "count": 65, + "max": [ + 0.36392518877983093, + 0.00023905043781269342, + 0.0057167969644069672, + 0.96689903736114502 + ], + "min": [ + 0.2551591694355011, + -4.639584005872166e-08, + -1.1333078475672664e-07, + 0.93141061067581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 388832, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649932, + "componentType": 5126, + "count": 65, + "max": [ + 1.4212155757808986e-14, + 0.77674132585525513, + -2.4214401150857157e-08 + ], + "min": [ + 1.4209553672595021e-14, + 0.77674120664596558, + -2.9802336598550028e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389092, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 650712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389124, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 688752, + "componentType": 5126, + "count": 65, + "max": [ + 0.36392518877983093, + 0.00023905043781269342, + 0.0057167969644069672, + 0.96689903736114502 + ], + "min": [ + 0.2551591694355011, + -4.639584005872166e-08, + -1.1333078475672664e-07, + 0.93141061067581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 389384, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 650808, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -6.2172489379008766e-15, + 0.4050619900226593, + -1.8626385989151117e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389644, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 651588, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389676, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 689792, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627923578023911, + 1.6812103353913699e-07, + 0.0019892251584678888, + 0.99943441152572632 + ], + "min": [ + -0.14756020903587341, + -0.0013591519091278315, + -8.8081016258456657e-08, + 0.98905014991760254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 389936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 651684, + "componentType": 5126, + "count": 38, + "max": [ + 8.8152205535152461e-09, + -4.1117331761597598e-08, + -1.7590025436220458e-08 + ], + "min": [ + 8.1391746675762988e-09, + -4.2088771579074091e-08, + -1.9232203385399771e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390088, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652140, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 690832, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.866362353553086e-08, + 9.8432373363266379e-11, + 1 + ], + "min": [ + 2.6077030312876559e-08, + 1.8663609324676145e-08, + 9.8420827043810277e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390248, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652164, + "componentType": 5126, + "count": 38, + "max": [ + 9.4660208560526371e-09, + 0.3134346604347229, + -2.0809238776564598e-09 + ], + "min": [ + 8.3600752986967564e-09, + 0.31343463063240051, + -2.1391315385699272e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390400, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652620, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390408, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 691440, + "componentType": 5126, + "count": 24, + "max": [ + -0.0024187450762838125, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465371401049197 + ], + "min": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465364125091583 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652644, + "componentType": 5126, + "count": 38, + "max": [ + 2.6368070393800735e-08, + -5.8207660913467407e-09, + -2.722663339227438e-08 + ], + "min": [ + 2.3486791178584099e-08, + -2.0489096641540527e-08, + -2.7284841053187847e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390656, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653100, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 691824, + "componentType": 5126, + "count": 38, + "max": [ + -5.2344585554919831e-08, + 7.1362570963628968e-08, + 1.4333632059049251e-09, + 1 + ], + "min": [ + -5.2353282598005535e-08, + 7.1333460027744877e-08, + 1.2150844774794223e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390816, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653124, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.47875437140464783, + 1.3213139027357101e-08 + ], + "min": [ + 9.3132251910432728e-10, + 0.47875437140464783, + 7.3050614446401596e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390968, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653580, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390976, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 692432, + "componentType": 5126, + "count": 27, + "max": [ + -0.52016496658325195, + 0.033435288816690445, + -0.058115012943744659, + 0.85143005847930908 + ], + "min": [ + -0.52016496658325195, + 0.033435288816690445, + -0.058115012943744659, + 0.85143005847930908 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653604, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.23937711119651794, + 5.5733835324645042e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.23937708139419556, + 2.4854671210050583e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391236, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654060, + "componentType": 5126, + "count": 2, + "max": [ + 0.9999995231628418, + 0.99999958276748657, + 0.99999946355819702 + ], + "min": [ + 0.9999995231628418, + 0.99999958276748657, + 0.99999946355819702 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 692864, + "componentType": 5126, + "count": 38, + "max": [ + -1.0771260861019982e-07, + 0.039239384233951569, + -3.052433683592426e-08, + 0.99922984838485718 + ], + "min": [ + -1.1879880190690528e-07, + 0.039239384233951569, + -3.7456395318713476e-08, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654084, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.21278384327888489, + 2.4214386940002441e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.21278378367424011, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391548, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654540, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 693472, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897873520851135, + 0.18448330461978912, + 0.7880139946937561, + 0.51688563823699951 + ], + "min": [ + -0.27897873520851135, + 0.18448328971862793, + 0.7880139946937561, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391732, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654636, + "componentType": 5126, + "count": 16, + "max": [ + -0.15143655240535736, + 0.084600701928138733, + -0.12323389947414398 + ], + "min": [ + -0.15143658220767975, + 0.084600694477558136, + -0.12323394417762756 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391796, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654828, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391812, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 694080, + "componentType": 5126, + "count": 37, + "max": [ + 0.2789786159992218, + -0.18448323011398315, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.2789786159992218, + -0.18448328971862793, + -0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391960, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654876, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-08, + -2.9802322387695312e-08, + 2.5611370801925659e-08 + ], + "min": [ + 7.4505805969238281e-09, + -4.4703483581542969e-08, + 1.6298145055770874e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392128, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655380, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392152, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 694672, + "componentType": 5126, + "count": 42, + "max": [ + 7.5924617704004049e-09, + 0.00016944277740549296, + 4.6798959374427795e-08, + 1 + ], + "min": [ + -6.7579101425963017e-08, + -9.7497849793626301e-09, + 4.4470656490602778e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392320, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655452, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556747794151306, + -2.2351741790771484e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392472, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655908, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392480, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 695344, + "componentType": 5126, + "count": 14, + "max": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655932, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.21278370916843414, + 1.3038516044616699e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.21278366446495056, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392688, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656388, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392720, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 695568, + "componentType": 5126, + "count": 38, + "max": [ + 4.5634788392590053e-08, + -5.5879354476928711e-09, + -5.2154042862184724e-08, + 1 + ], + "min": [ + 2.2468150007171062e-08, + -8.3819031715393066e-09, + -6.5192566012228781e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392872, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656484, + "componentType": 5126, + "count": 4, + "max": [ + 0.21592012047767639, + 0.36957693099975586, + -0.15007570385932922 + ], + "min": [ + 0.21592012047767639, + 0.36957690119743347, + -0.15007571876049042 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392888, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656532, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392912, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696176, + "componentType": 5126, + "count": 14, + "max": [ + 0.56482326984405518, + 0.75361925363540649, + -0.1584276407957077, + -0.29653573036193848 + ], + "min": [ + 0.5648232102394104, + 0.75361919403076172, + -0.15842767059803009, + -0.29653576016426086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392968, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656604, + "componentType": 5126, + "count": 2, + "max": [ + -9.4132239780719829e-08, + -8.6940062260509876e-08, + -3.9640326576773077e-08 + ], + "min": [ + -9.4132239780719829e-08, + -8.6940062260509876e-08, + -3.9640326576773077e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392976, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656628, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392984, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696400, + "componentType": 5126, + "count": 8, + "max": [ + 1.1175891323489395e-08, + -9.437243875254353e-09, + -3.5529976183390488e-10, + 1 + ], + "min": [ + 1.1175891323489395e-08, + -9.437243875254353e-09, + -3.5529976183390488e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393016, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656652, + "componentType": 5126, + "count": 2, + "max": [ + -1.2179953046143055e-08, + 0.31343457102775574, + 1.4115357771515846e-09 + ], + "min": [ + -1.2179953046143055e-08, + 0.31343457102775574, + 1.4115357771515846e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393024, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656676, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393032, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696528, + "componentType": 5126, + "count": 6, + "max": [ + 0.0024187492672353983, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465378677006811 + ], + "min": [ + 0.0024187492672353983, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465378677006811 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393056, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656700, + "componentType": 5126, + "count": 2, + "max": [ + 5.4860720410943031e-08, + 1.257285475730896e-07, + 3.2319803722202778e-08 + ], + "min": [ + 5.4860720410943031e-08, + 1.257285475730896e-07, + 3.2319803722202778e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393064, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656724, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393072, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696624, + "componentType": 5126, + "count": 8, + "max": [ + -1.5118388319024234e-08, + -6.7288056015968323e-08, + -2.9758662201118113e-09, + 1 + ], + "min": [ + -1.5118388319024234e-08, + -6.7288056015968323e-08, + -2.9758662201118113e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393104, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656748, + "componentType": 5126, + "count": 2, + "max": [ + 6.5192580223083496e-09, + 0.47875428199768066, + -7.5378920882940292e-09 + ], + "min": [ + 6.5192580223083496e-09, + 0.47875428199768066, + -7.5378920882940292e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393112, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656772, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393120, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696752, + "componentType": 5126, + "count": 8, + "max": [ + -0.5201650857925415, + -0.033435288816690445, + 0.058115020394325256, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + -0.033435288816690445, + 0.058115020394325256, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656796, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.2393772155046463, + 1.2470991350710392e-07 + ], + "min": [ + 3.3527612686157227e-08, + 0.23937718570232391, + 1.2098462320864201e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393304, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657252, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999970197677612, + 0.9999995231628418, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696880, + "componentType": 5126, + "count": 38, + "max": [ + -3.3736594673428044e-07, + -0.039239343255758286, + 1.1528177168429465e-07, + 0.99922984838485718 + ], + "min": [ + -3.4412687455187552e-07, + -0.039239354431629181, + 1.091652706008972e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393520, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657444, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278372406959534, + 9.8720192909240723e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.21278370916843414, + 9.3132257461547852e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393672, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657900, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 697488, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897852659225464, + -0.1844828724861145, + -0.78801423311233521, + 0.51688545942306519 + ], + "min": [ + -0.27897855639457703, + -0.18448297679424286, + -0.78801429271697998, + 0.51688539981842041 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393864, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658020, + "componentType": 5126, + "count": 32, + "max": [ + 0.15143665671348572, + 0.084600925445556641, + -0.12323378771543503 + ], + "min": [ + 0.15143659710884094, + 0.084600836038589478, + -0.12323383986949921 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393992, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658404, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 698096, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897858619689941, + 0.18448314070701599, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448305130004883, + 0.78801423311233521, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658524, + "componentType": 5126, + "count": 38, + "max": [ + 6.891787052154541e-08, + 1.0430812835693359e-07, + 7.4505805969238281e-09 + ], + "min": [ + 6.1467289924621582e-08, + 1.0430812835693359e-07, + 5.5511151231257827e-17 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394336, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658980, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 698704, + "componentType": 5126, + "count": 38, + "max": [ + 2.337510238703544e-07, + 9.0527457530242827e-08, + 1.1612428352236748e-07, + 1 + ], + "min": [ + 2.0363950170576572e-07, + 9.0047237222279364e-08, + 8.6030937040959543e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659172, + "componentType": 5126, + "count": 38, + "max": [ + -4.8428773880004883e-08, + 0.42556750774383545, + 5.7741999626159668e-08 + ], + "min": [ + -7.8231096267700195e-08, + 0.42556744813919067, + 2.7939677238464355e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394704, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659628, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394712, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 699312, + "componentType": 5126, + "count": 8, + "max": [ + -0.27897858619689941, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "min": [ + -0.27897858619689941, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394744, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659652, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.21278370916843414, + 7.0780515670776367e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.21278364956378937, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660108, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 699440, + "componentType": 5126, + "count": 38, + "max": [ + 1.3806860010845412e-07, + -1.6298146832127713e-08, + 1.2107196312172164e-07, + 1 + ], + "min": [ + 7.1479014707165334e-08, + -1.862645149230957e-08, + -4.0978193283081055e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395080, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660204, + "componentType": 5126, + "count": 12, + "max": [ + -0.21592000126838684, + 0.36957699060440063, + -0.15007559955120087 + ], + "min": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395128, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660348, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395152, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 700048, + "componentType": 5126, + "count": 6, + "max": [ + -0.5648232102394104, + 0.75361925363540649, + -0.15842773020267487, + 0.2965356707572937 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842774510383606, + 0.2965356707572937 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395176, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660420, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -6.2172489379008766e-15, + 0.4050619900226593, + -1.8626385989151117e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395436, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661200, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395468, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 700144, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627923578023911, + 1.6812103353913699e-07, + 0.0019892251584678888, + 0.99943441152572632 + ], + "min": [ + -0.14756020903587341, + -0.0013591519091278315, + -8.8081016258456657e-08, + 0.98905014991760254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395728, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661296, + "componentType": 5126, + "count": 38, + "max": [ + 7.1054273576010019e-15, + 0.055200062692165375, + 0.19749552011489868 + ], + "min": [ + 0, + 0.055200055241584778, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395880, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661752, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 701184, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261119997656351e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395928, + "componentType": 5126, + "count": 61, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661800, + "componentType": 5126, + "count": 61, + "max": [ + 1.1533120414242148e-07, + -1.2479722499847412e-07, + -1.1888914741575718e-08 + ], + "min": [ + 1.0660733096301556e-07, + -2.959277480840683e-07, + -1.2443342711776495e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396172, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 662532, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 0.99999845027923584, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999803304672241, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396236, + "componentType": 5126, + "count": 61, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 701312, + "componentType": 5126, + "count": 61, + "max": [ + -0.24044017493724823, + -0.70790696144104004, + 0.38848459720611572, + 0.53822076320648193 + ], + "min": [ + -0.29893168807029724, + -0.70948749780654907, + 0.38610917329788208, + 0.50931328535079956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 396480, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 662724, + "componentType": 5126, + "count": 65, + "max": [ + -0.29755711555480957, + 0.43568578362464905, + 1.587028980255127 + ], + "min": [ + -0.30338579416275024, + 0.2685072124004364, + 1.5227658748626709 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396740, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 663504, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396748, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 702288, + "componentType": 5126, + "count": 65, + "max": [ + -0.00022956474276725203, + -0.00017368381668347865, + 0.49643996357917786, + 0.86807101964950562 + ], + "min": [ + -0.0041950764134526253, + -0.0071074403822422028, + 0.49639764428138733, + 0.86805605888366699 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 397008, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 663528, + "componentType": 5126, + "count": 64, + "max": [ + -3.2159732654690742e-08, + 9.5460563898086548e-09, + -1.2826058082282543e-07 + ], + "min": [ + -1.1748488759621978e-07, + -1.4668330550193787e-07, + -3.5878474591299891e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 397264, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 664296, + "componentType": 5126, + "count": 64, + "max": [ + 1.0000001192092896, + 0.99999886751174927, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 397520, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 703328, + "componentType": 5126, + "count": 64, + "max": [ + -0.24007512629032135, + 0.72988981008529663, + -0.34160372614860535, + 0.53755348920822144 + ], + "min": [ + -0.31985971331596375, + 0.70873403549194336, + -0.38871106505393982, + 0.49855107069015503 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 397776, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665064, + "componentType": 5126, + "count": 65, + "max": [ + 0.29755717515945435, + 0.43567347526550293, + 1.5870287418365479 + ], + "min": [ + 0.29132479429244995, + 0.26850727200508118, + 1.5322726964950562 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398036, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665844, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398044, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 704352, + "componentType": 5126, + "count": 65, + "max": [ + 0.0037360589485615492, + 0.00017367221880704165, + -0.49640217423439026, + 0.86807101964950562 + ], + "min": [ + -0.00022958675981499255, + -0.0067600342445075512, + -0.49644002318382263, + 0.86805832386016846 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 398304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665868, + "componentType": 5126, + "count": 38, + "max": [ + 7.1054273576010019e-15, + 0.055200062692165375, + 0.19749552011489868 + ], + "min": [ + 0, + 0.055200055241584778, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398456, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 666324, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398472, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 705392, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261119997656351e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 398504, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 666372, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159717202186584, + 4.4703483581542969e-08 + ], + "min": [ + -1.4901161193847656e-07, + 0.40159702301025391, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398764, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 667152, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398804, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 705520, + "componentType": 5126, + "count": 65, + "max": [ + -0.13171301782131195, + 0.062768273055553436, + -0.18888546526432037, + 0.9707719087600708 + ], + "min": [ + -0.16629819571971893, + 0.053908690810203552, + -0.19325479865074158, + 0.96577060222625732 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 399064, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 667272, + "componentType": 5126, + "count": 64, + "max": [ + 1.4901161193847656e-07, + 0.40159717202186584, + 4.4703483581542969e-08 + ], + "min": [ + -1.4901161193847656e-07, + 0.40159702301025391, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399320, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668040, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399368, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 706560, + "componentType": 5126, + "count": 64, + "max": [ + 0.098836854100227356, + 0.79495817422866821, + -0.49223843216896057, + 0.34057825803756714 + ], + "min": [ + 0.079696699976921082, + 0.78801423311233521, + -0.5100523829460144, + 0.33519932627677917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 399624, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668184, + "componentType": 5126, + "count": 49, + "max": [ + 2.9802322387695312e-08, + 0.57860559225082397, + 1.0989606380462646e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.5786052942276001, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399820, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668772, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999958276748657, + 1 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399852, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 707584, + "componentType": 5126, + "count": 49, + "max": [ + -0.74522751569747925, + 0.33472940325737, + 0.12194520980119705, + 0.56379020214080811 + ], + "min": [ + -0.75402969121932983, + 0.33112069964408875, + 0.1213233470916748, + 0.55401057004928589 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 400048, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668868, + "componentType": 5126, + "count": 65, + "max": [ + 2.9802322387695312e-08, + 0.57860559225082397, + 1.0989606380462646e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.5786052942276001, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400308, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 669648, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 708368, + "componentType": 5126, + "count": 65, + "max": [ + 0.93964815139770508, + -0.11104348301887512, + -0.17523977160453796, + -0.25260570645332336 + ], + "min": [ + 0.92845195531845093, + -0.1261516660451889, + -0.19324110448360443, + -0.30811905860900879 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 400616, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 669792, + "componentType": 5126, + "count": 65, + "max": [ + -4.4703483581542969e-08, + 0.40799087285995483, + 1.0244548320770264e-07 + ], + "min": [ + -7.4505805969238281e-08, + 0.40799087285995483, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400876, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 670572, + "componentType": 5126, + "count": 5, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400896, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 709408, + "componentType": 5126, + "count": 65, + "max": [ + 0.0015482029411941767, + 0.072496086359024048, + -0.10752381384372711, + 0.99218547344207764 + ], + "min": [ + -0.083540335297584534, + 0.027068598195910454, + -0.12193745374679565, + 0.98803031444549561 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 401156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 670632, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.40799087285995483, + 1.0244548320770264e-07 + ], + "min": [ + -7.4505805969238281e-08, + 0.40799087285995483, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401308, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671088, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 710448, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + -0.20495331287384033, + -0.34477144479751587, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.20495334267616272, + -0.34477150440216064, + -0.4179006814956665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 401492, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671184, + "componentType": 5126, + "count": 65, + "max": [ + 1.1990778148174286e-08, + 0.25762280821800232, + 7.4505805969238281e-09 + ], + "min": [ + -4.1909515857696533e-09, + 0.25762271881103516, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401752, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671964, + "componentType": 5126, + "count": 13, + "max": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401804, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 711056, + "componentType": 5126, + "count": 65, + "max": [ + -0.066908173263072968, + -0.33346197009086609, + -0.087721027433872223, + 0.93490731716156006 + ], + "min": [ + -0.084554530680179596, + -0.3389325737953186, + -0.093727022409439087, + 0.93373620510101318 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 402064, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672120, + "componentType": 5126, + "count": 63, + "max": [ + 7.1054273576010019e-15, + 0.7767413854598999, + 1.4901146094814521e-08 + ], + "min": [ + 3.9704669402545328e-23, + 0.7767413854598999, + -2.7939691449319071e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672876, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402348, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 712096, + "componentType": 5126, + "count": 63, + "max": [ + -0.29753664135932922, + -0.22071808576583862, + -0.13816541433334351, + 0.91603350639343262 + ], + "min": [ + -0.31449571251869202, + -0.2307918518781662, + -0.14404478669166565, + 0.91190767288208008 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 402600, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672972, + "componentType": 5126, + "count": 65, + "max": [ + 0, + 0.40159696340560913, + 7.4505805969238281e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159696340560913, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402860, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 673752, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402876, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 713104, + "componentType": 5126, + "count": 65, + "max": [ + -0.089770093560218811, + -0.041112378239631653, + 0.19444805383682251, + 0.97593086957931519 + ], + "min": [ + -0.17015597224235535, + -0.060118988156318665, + 0.17943507432937622, + 0.96707582473754883 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 403136, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 673800, + "componentType": 5126, + "count": 65, + "max": [ + 0, + 0.40159696340560913, + 7.4505805969238281e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159696340560913, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403396, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 674580, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403428, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 714144, + "componentType": 5126, + "count": 65, + "max": [ + -0.067910879850387573, + 0.79317039251327515, + -0.49738273024559021, + -0.33136811852455139 + ], + "min": [ + -0.096698299050331116, + 0.78076905012130737, + -0.52448934316635132, + -0.33785355091094971 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 403688, + "componentType": 5126, + "count": 58, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 674676, + "componentType": 5126, + "count": 58, + "max": [ + 5.9604644775390625e-08, + 0.57860547304153442, + 1.6856938600540161e-07 + ], + "min": [ + 5.2154064178466797e-08, + 0.5786052942276001, + -2.9709190130233765e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 675372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999970197677612, + 1 + ], + "min": [ + 1, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403936, + "componentType": 5126, + "count": 58, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 715184, + "componentType": 5126, + "count": 58, + "max": [ + -0.72673016786575317, + -0.32338002324104309, + -0.12020719796419144, + 0.59248679876327515 + ], + "min": [ + -0.73873990774154663, + -0.32610028982162476, + -0.12132387608289719, + 0.5787624716758728 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 404168, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 675420, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.57860547304153442, + 1.6856938600540161e-07 + ], + "min": [ + 5.2154064178466797e-08, + 0.5786052942276001, + -2.9709190130233765e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 676200, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999964237213135, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404444, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 716112, + "componentType": 5126, + "count": 65, + "max": [ + 0.93674725294113159, + 0.12231875956058502, + 0.19104196131229401, + -0.26720094680786133 + ], + "min": [ + 0.92845189571380615, + 0.11104367673397064, + 0.17524008452892303, + -0.30811882019042969 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 404704, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 676248, + "componentType": 5126, + "count": 65, + "max": [ + 1.1920928955078125e-07, + 0.407990962266922, + -6.7055225372314453e-08 + ], + "min": [ + 4.4703483581542969e-08, + 0.40799081325531006, + -1.0058283805847168e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404964, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677028, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404980, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 717152, + "componentType": 5126, + "count": 65, + "max": [ + 0.023634778335690498, + -0.0095152808353304863, + 0.12299711257219315, + 0.99295288324356079 + ], + "min": [ + -0.029420711100101471, + -0.03783048689365387, + 0.11021184176206589, + 0.99207991361618042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 405240, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677076, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + 0.407990962266922, + -6.7055225372314453e-08 + ], + "min": [ + 4.4703483581542969e-08, + 0.40799081325531006, + -1.0058283805847168e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405392, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677532, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 718192, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495341718196869, + 0.34477171301841736, + -0.41790038347244263 + ], + "min": [ + 0.81515997648239136, + 0.20495332777500153, + 0.34477165341377258, + -0.4179004430770874 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 405568, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677604, + "componentType": 5126, + "count": 65, + "max": [ + 8.3266726846886741e-17, + 0.25762259960174561, + 1.0430812835693359e-07 + ], + "min": [ + -5.5511151231257827e-17, + 0.25762256979942322, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405828, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 678384, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405860, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 718800, + "componentType": 5126, + "count": 65, + "max": [ + -0.085882976651191711, + 0.33348196744918823, + 0.091767109930515289, + 0.93566155433654785 + ], + "min": [ + -0.10285140573978424, + 0.32634490728378296, + 0.086359716951847076, + 0.93434077501296997 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 406120, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 678480, + "componentType": 5126, + "count": 63, + "max": [ + 7.1054273576010019e-15, + 0.7767413854598999, + 1.4901146094814521e-08 + ], + "min": [ + 3.9704669402545328e-23, + 0.7767413854598999, + -2.7939691449319071e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406372, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 679236, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 0.99999964237213135 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406388, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 719840, + "componentType": 5126, + "count": 63, + "max": [ + -0.31534239649772644, + 0.22202306985855103, + 0.15540601313114166, + 0.91039520502090454 + ], + "min": [ + -0.32983064651489258, + 0.21087196469306946, + 0.14981824159622192, + 0.90694987773895264 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 406640, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 679284, + "componentType": 5126, + "count": 65, + "max": [ + 8.6736173798840355e-19, + 4.5959286154584333e-08, + -7.1382841859701784e-09 + ], + "min": [ + -8.6736173798840355e-19, + 4.4312955083114502e-08, + -7.1382846300593883e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406900, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680064, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406908, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 720848, + "componentType": 5126, + "count": 65, + "max": [ + 0.6223413348197937, + 0.0010677532991394401, + 7.1122784106592007e-08, + 0.84870576858520508 + ], + "min": [ + 0.52886223793029785, + 9.3310575266514206e-08, + -0.0014743458013981581, + 0.78274601697921753 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 407168, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680088, + "componentType": 5126, + "count": 65, + "max": [ + 4.2292558344314557e-15, + 7.8231096267700195e-08, + -2.9243528842926025e-07 + ], + "min": [ + -9.9954766685783625e-15, + 7.0780515670776367e-08, + -2.9336661100387573e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407428, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680868, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407436, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 721888, + "componentType": 5126, + "count": 65, + "max": [ + 0.061978947371244431, + 3.1953030842135348e-17, + 5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + 0.061976466327905655, + -0.0039857844822108746, + -0.00025273297796957195, + 0.9980696439743042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 407696, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680892, + "componentType": 5126, + "count": 65, + "max": [ + 7.1050635597202927e-08, + 0.52352428436279297, + 7.8871380537748337e-09 + ], + "min": [ + 1.8910441212938167e-08, + 0.52352428436279297, + -3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407956, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 681672, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407972, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 722928, + "componentType": 5126, + "count": 65, + "max": [ + -0.0062190722674131393, + 0.00019194693595636636, + 0.16726690530776978, + 0.99997550249099731 + ], + "min": [ + -0.0063056931830942631, + -0.00012805432197637856, + -0.13653723895549774, + 0.98589199781417847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 408232, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 681720, + "componentType": 5126, + "count": 65, + "max": [ + 1.6875389974302379e-14, + 0.36641576886177063, + 2.9802325940408991e-08 + ], + "min": [ + 1.5099033134902129e-14, + 0.36641573905944824, + 2.9802325940408991e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408492, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682500, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999970197677612, + 1 + ], + "min": [ + 1, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408508, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 723968, + "componentType": 5126, + "count": 65, + "max": [ + 0.16870377957820892, + 0.022055592387914658, + 0.16507269442081451, + 0.98567092418670654 + ], + "min": [ + 0.16634693741798401, + -0.027006056159734726, + -0.13474376499652863, + 0.97177690267562866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 408768, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682548, + "componentType": 5126, + "count": 2, + "max": [ + -2.9247437804968968e-15, + 0.74672240018844604, + -5.9604644775390625e-08 + ], + "min": [ + -2.9247437804968968e-15, + 0.74672240018844604, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682572, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408792, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 725008, + "componentType": 5126, + "count": 65, + "max": [ + -0.10365330427885056, + -6.1669513939932585e-09, + 9.8425722683259664e-08, + 0.99461346864700317 + ], + "min": [ + -0.14394813776016235, + -1.0157851448866495e-08, + 9.8094204759036074e-08, + 0.98958522081375122 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409052, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682620, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682644, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726048, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978887766599655, + 1.2142499574274429e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978887766599655, + 1.2142499574274429e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409076, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682668, + "componentType": 5126, + "count": 12, + "max": [ + 1.6455425466688212e-08, + 4.5938538306700138e-08, + -3.9326192080579858e-08 + ], + "min": [ + 1.6455416584904015e-08, + 4.593853475398646e-08, + -3.9326192080579858e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409124, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682812, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999994039535522, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999934434890747, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409164, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726080, + "componentType": 5126, + "count": 16, + "max": [ + 0.56482332944869995, + 0.75361925363540649, + -0.15842773020267487, + -0.29653549194335938 + ], + "min": [ + 0.5648232102394104, + 0.75361925363540649, + -0.1584278792142868, + -0.29653552174568176 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409228, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682932, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409236, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682956, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409244, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726336, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834163335820449e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.713642157294089e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682980, + "componentType": 5126, + "count": 38, + "max": [ + 1.5542642728405553e-09, + 2.4902320205910655e-09, + -2.0278454471167606e-08 + ], + "min": [ + 1.5542536146995189e-09, + -1.2350547251571697e-09, + -2.0278454471167606e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683436, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409444, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726464, + "componentType": 5126, + "count": 18, + "max": [ + -0.56482332944869995, + 0.75361925363540649, + -0.15842783451080322, + 0.29653534293174744 + ], + "min": [ + -0.56482350826263428, + 0.75361913442611694, + -0.158427894115448, + 0.29653531312942505 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409516, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683484, + "componentType": 5126, + "count": 4, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409532, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683532, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726752, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834163335820449e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.713642157294089e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409572, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683556, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409580, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683580, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409588, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726880, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409596, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683604, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409604, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683628, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409612, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726912, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Idle", + "samplers": [ + { + "input": 9, + "interpolation": "LINEAR", + "output": 10 + }, + { + "input": 11, + "interpolation": "LINEAR", + "output": 12 + }, + { + "input": 13, + "interpolation": "LINEAR", + "output": 14 + }, + { + "input": 15, + "interpolation": "LINEAR", + "output": 16 + }, + { + "input": 17, + "interpolation": "LINEAR", + "output": 18 + }, + { + "input": 19, + "interpolation": "LINEAR", + "output": 20 + }, + { + "input": 21, + "interpolation": "LINEAR", + "output": 22 + }, + { + "input": 23, + "interpolation": "LINEAR", + "output": 24 + }, + { + "input": 25, + "interpolation": "LINEAR", + "output": 26 + }, + { + "input": 27, + "interpolation": "LINEAR", + "output": 28 + }, + { + "input": 29, + "interpolation": "LINEAR", + "output": 30 + }, + { + "input": 31, + "interpolation": "LINEAR", + "output": 32 + }, + { + "input": 33, + "interpolation": "LINEAR", + "output": 34 + }, + { + "input": 35, + "interpolation": "LINEAR", + "output": 36 + }, + { + "input": 37, + "interpolation": "LINEAR", + "output": 38 + }, + { + "input": 39, + "interpolation": "LINEAR", + "output": 40 + }, + { + "input": 41, + "interpolation": "LINEAR", + "output": 42 + }, + { + "input": 43, + "interpolation": "LINEAR", + "output": 44 + }, + { + "input": 45, + "interpolation": "LINEAR", + "output": 46 + }, + { + "input": 47, + "interpolation": "LINEAR", + "output": 48 + }, + { + "input": 49, + "interpolation": "LINEAR", + "output": 50 + }, + { + "input": 51, + "interpolation": "LINEAR", + "output": 52 + }, + { + "input": 53, + "interpolation": "LINEAR", + "output": 54 + }, + { + "input": 55, + "interpolation": "LINEAR", + "output": 56 + }, + { + "input": 57, + "interpolation": "LINEAR", + "output": 58 + }, + { + "input": 59, + "interpolation": "LINEAR", + "output": 60 + }, + { + "input": 61, + "interpolation": "LINEAR", + "output": 62 + }, + { + "input": 63, + "interpolation": "LINEAR", + "output": 64 + }, + { + "input": 65, + "interpolation": "LINEAR", + "output": 66 + }, + { + "input": 67, + "interpolation": "LINEAR", + "output": 68 + }, + { + "input": 69, + "interpolation": "LINEAR", + "output": 70 + }, + { + "input": 71, + "interpolation": "LINEAR", + "output": 72 + }, + { + "input": 73, + "interpolation": "LINEAR", + "output": 74 + }, + { + "input": 75, + "interpolation": "LINEAR", + "output": 76 + }, + { + "input": 77, + "interpolation": "LINEAR", + "output": 78 + }, + { + "input": 79, + "interpolation": "LINEAR", + "output": 80 + }, + { + "input": 81, + "interpolation": "LINEAR", + "output": 82 + }, + { + "input": 83, + "interpolation": "LINEAR", + "output": 84 + }, + { + "input": 85, + "interpolation": "LINEAR", + "output": 86 + }, + { + "input": 87, + "interpolation": "LINEAR", + "output": 88 + }, + { + "input": 89, + "interpolation": "LINEAR", + "output": 90 + }, + { + "input": 91, + "interpolation": "LINEAR", + "output": 92 + }, + { + "input": 93, + "interpolation": "LINEAR", + "output": 94 + }, + { + "input": 95, + "interpolation": "LINEAR", + "output": 96 + }, + { + "input": 97, + "interpolation": "LINEAR", + "output": 98 + }, + { + "input": 99, + "interpolation": "LINEAR", + "output": 100 + }, + { + "input": 101, + "interpolation": "LINEAR", + "output": 102 + }, + { + "input": 103, + "interpolation": "LINEAR", + "output": 104 + }, + { + "input": 105, + "interpolation": "LINEAR", + "output": 106 + }, + { + "input": 107, + "interpolation": "LINEAR", + "output": 108 + }, + { + "input": 109, + "interpolation": "LINEAR", + "output": 110 + }, + { + "input": 111, + "interpolation": "LINEAR", + "output": 112 + }, + { + "input": 113, + "interpolation": "LINEAR", + "output": 114 + }, + { + "input": 115, + "interpolation": "LINEAR", + "output": 116 + }, + { + "input": 117, + "interpolation": "LINEAR", + "output": 118 + }, + { + "input": 119, + "interpolation": "LINEAR", + "output": 120 + }, + { + "input": 121, + "interpolation": "LINEAR", + "output": 122 + }, + { + "input": 123, + "interpolation": "LINEAR", + "output": 124 + }, + { + "input": 125, + "interpolation": "LINEAR", + "output": 126 + }, + { + "input": 127, + "interpolation": "LINEAR", + "output": 128 + }, + { + "input": 129, + "interpolation": "LINEAR", + "output": 130 + }, + { + "input": 131, + "interpolation": "LINEAR", + "output": 132 + }, + { + "input": 133, + "interpolation": "LINEAR", + "output": 134 + }, + { + "input": 135, + "interpolation": "LINEAR", + "output": 136 + }, + { + "input": 137, + "interpolation": "LINEAR", + "output": 138 + }, + { + "input": 139, + "interpolation": "LINEAR", + "output": 140 + }, + { + "input": 141, + "interpolation": "LINEAR", + "output": 142 + }, + { + "input": 143, + "interpolation": "LINEAR", + "output": 144 + }, + { + "input": 145, + "interpolation": "LINEAR", + "output": 146 + }, + { + "input": 147, + "interpolation": "LINEAR", + "output": 148 + }, + { + "input": 149, + "interpolation": "LINEAR", + "output": 150 + }, + { + "input": 151, + "interpolation": "LINEAR", + "output": 152 + }, + { + "input": 153, + "interpolation": "LINEAR", + "output": 154 + }, + { + "input": 155, + "interpolation": "LINEAR", + "output": 156 + }, + { + "input": 157, + "interpolation": "LINEAR", + "output": 158 + }, + { + "input": 159, + "interpolation": "LINEAR", + "output": 160 + }, + { + "input": 161, + "interpolation": "LINEAR", + "output": 162 + }, + { + "input": 163, + "interpolation": "LINEAR", + "output": 164 + }, + { + "input": 165, + "interpolation": "LINEAR", + "output": 166 + }, + { + "input": 167, + "interpolation": "LINEAR", + "output": 168 + }, + { + "input": 169, + "interpolation": "LINEAR", + "output": 170 + }, + { + "input": 171, + "interpolation": "LINEAR", + "output": 172 + }, + { + "input": 173, + "interpolation": "LINEAR", + "output": 174 + }, + { + "input": 175, + "interpolation": "LINEAR", + "output": 176 + }, + { + "input": 177, + "interpolation": "LINEAR", + "output": 178 + }, + { + "input": 179, + "interpolation": "LINEAR", + "output": 180 + }, + { + "input": 181, + "interpolation": "LINEAR", + "output": 182 + }, + { + "input": 183, + "interpolation": "LINEAR", + "output": 184 + }, + { + "input": 185, + "interpolation": "LINEAR", + "output": 186 + }, + { + "input": 187, + "interpolation": "LINEAR", + "output": 188 + }, + { + "input": 189, + "interpolation": "LINEAR", + "output": 190 + }, + { + "input": 191, + "interpolation": "LINEAR", + "output": 192 + }, + { + "input": 193, + "interpolation": "LINEAR", + "output": 194 + }, + { + "input": 195, + "interpolation": "LINEAR", + "output": 196 + }, + { + "input": 197, + "interpolation": "LINEAR", + "output": 198 + }, + { + "input": 199, + "interpolation": "LINEAR", + "output": 200 + }, + { + "input": 201, + "interpolation": "LINEAR", + "output": 202 + }, + { + "input": 203, + "interpolation": "LINEAR", + "output": 204 + }, + { + "input": 205, + "interpolation": "LINEAR", + "output": 206 + }, + { + "input": 207, + "interpolation": "LINEAR", + "output": 208 + }, + { + "input": 209, + "interpolation": "LINEAR", + "output": 210 + }, + { + "input": 211, + "interpolation": "LINEAR", + "output": 212 + }, + { + "input": 213, + "interpolation": "LINEAR", + "output": 214 + }, + { + "input": 215, + "interpolation": "LINEAR", + "output": 216 + }, + { + "input": 217, + "interpolation": "LINEAR", + "output": 218 + }, + { + "input": 219, + "interpolation": "LINEAR", + "output": 220 + }, + { + "input": 221, + "interpolation": "LINEAR", + "output": 222 + }, + { + "input": 223, + "interpolation": "LINEAR", + "output": 224 + }, + { + "input": 225, + "interpolation": "LINEAR", + "output": 226 + }, + { + "input": 227, + "interpolation": "LINEAR", + "output": 228 + }, + { + "input": 229, + "interpolation": "LINEAR", + "output": 230 + }, + { + "input": 231, + "interpolation": "LINEAR", + "output": 232 + }, + { + "input": 233, + "interpolation": "LINEAR", + "output": 234 + }, + { + "input": 235, + "interpolation": "LINEAR", + "output": 236 + }, + { + "input": 237, + "interpolation": "LINEAR", + "output": 238 + }, + { + "input": 239, + "interpolation": "LINEAR", + "output": 240 + }, + { + "input": 241, + "interpolation": "LINEAR", + "output": 242 + }, + { + "input": 243, + "interpolation": "LINEAR", + "output": 244 + }, + { + "input": 245, + "interpolation": "LINEAR", + "output": 246 + }, + { + "input": 247, + "interpolation": "LINEAR", + "output": 248 + }, + { + "input": 249, + "interpolation": "LINEAR", + "output": 250 + }, + { + "input": 251, + "interpolation": "LINEAR", + "output": 252 + }, + { + "input": 253, + "interpolation": "LINEAR", + "output": 254 + }, + { + "input": 255, + "interpolation": "LINEAR", + "output": 256 + }, + { + "input": 257, + "interpolation": "LINEAR", + "output": 258 + }, + { + "input": 259, + "interpolation": "LINEAR", + "output": 260 + }, + { + "input": 261, + "interpolation": "LINEAR", + "output": 262 + }, + { + "input": 263, + "interpolation": "LINEAR", + "output": 264 + }, + { + "input": 265, + "interpolation": "LINEAR", + "output": 266 + }, + { + "input": 267, + "interpolation": "LINEAR", + "output": 268 + }, + { + "input": 269, + "interpolation": "LINEAR", + "output": 270 + }, + { + "input": 271, + "interpolation": "LINEAR", + "output": 272 + }, + { + "input": 273, + "interpolation": "LINEAR", + "output": 274 + }, + { + "input": 275, + "interpolation": "LINEAR", + "output": 276 + }, + { + "input": 277, + "interpolation": "LINEAR", + "output": 278 + }, + { + "input": 279, + "interpolation": "LINEAR", + "output": 280 + }, + { + "input": 281, + "interpolation": "LINEAR", + "output": 282 + }, + { + "input": 283, + "interpolation": "LINEAR", + "output": 284 + }, + { + "input": 285, + "interpolation": "LINEAR", + "output": 286 + }, + { + "input": 287, + "interpolation": "LINEAR", + "output": 288 + }, + { + "input": 289, + "interpolation": "LINEAR", + "output": 290 + }, + { + "input": 291, + "interpolation": "LINEAR", + "output": 292 + }, + { + "input": 293, + "interpolation": "LINEAR", + "output": 294 + }, + { + "input": 295, + "interpolation": "LINEAR", + "output": 296 + }, + { + "input": 297, + "interpolation": "LINEAR", + "output": 298 + }, + { + "input": 299, + "interpolation": "LINEAR", + "output": 300 + }, + { + "input": 301, + "interpolation": "LINEAR", + "output": 302 + }, + { + "input": 303, + "interpolation": "LINEAR", + "output": 304 + }, + { + "input": 305, + "interpolation": "LINEAR", + "output": 306 + }, + { + "input": 307, + "interpolation": "LINEAR", + "output": 308 + }, + { + "input": 309, + "interpolation": "LINEAR", + "output": 310 + }, + { + "input": 311, + "interpolation": "LINEAR", + "output": 312 + }, + { + "input": 313, + "interpolation": "LINEAR", + "output": 314 + }, + { + "input": 315, + "interpolation": "LINEAR", + "output": 316 + }, + { + "input": 317, + "interpolation": "LINEAR", + "output": 318 + }, + { + "input": 319, + "interpolation": "LINEAR", + "output": 320 + }, + { + "input": 321, + "interpolation": "LINEAR", + "output": 322 + }, + { + "input": 323, + "interpolation": "LINEAR", + "output": 324 + }, + { + "input": 325, + "interpolation": "LINEAR", + "output": 326 + }, + { + "input": 327, + "interpolation": "LINEAR", + "output": 328 + }, + { + "input": 329, + "interpolation": "LINEAR", + "output": 330 + }, + { + "input": 331, + "interpolation": "LINEAR", + "output": 332 + }, + { + "input": 333, + "interpolation": "LINEAR", + "output": 334 + }, + { + "input": 335, + "interpolation": "LINEAR", + "output": 336 + }, + { + "input": 337, + "interpolation": "LINEAR", + "output": 338 + }, + { + "input": 339, + "interpolation": "LINEAR", + "output": 340 + }, + { + "input": 341, + "interpolation": "LINEAR", + "output": 342 + }, + { + "input": 343, + "interpolation": "LINEAR", + "output": 344 + }, + { + "input": 345, + "interpolation": "LINEAR", + "output": 346 + }, + { + "input": 347, + "interpolation": "LINEAR", + "output": 348 + }, + { + "input": 349, + "interpolation": "LINEAR", + "output": 350 + }, + { + "input": 351, + "interpolation": "LINEAR", + "output": 352 + }, + { + "input": 353, + "interpolation": "LINEAR", + "output": 354 + }, + { + "input": 355, + "interpolation": "LINEAR", + "output": 356 + }, + { + "input": 357, + "interpolation": "LINEAR", + "output": 358 + }, + { + "input": 359, + "interpolation": "LINEAR", + "output": 360 + }, + { + "input": 361, + "interpolation": "LINEAR", + "output": 362 + }, + { + "input": 363, + "interpolation": "LINEAR", + "output": 364 + }, + { + "input": 365, + "interpolation": "LINEAR", + "output": 366 + }, + { + "input": 367, + "interpolation": "LINEAR", + "output": 368 + }, + { + "input": 369, + "interpolation": "LINEAR", + "output": 370 + }, + { + "input": 371, + "interpolation": "LINEAR", + "output": 372 + }, + { + "input": 373, + "interpolation": "LINEAR", + "output": 374 + }, + { + "input": 375, + "interpolation": "LINEAR", + "output": 376 + }, + { + "input": 377, + "interpolation": "LINEAR", + "output": 378 + }, + { + "input": 379, + "interpolation": "LINEAR", + "output": 380 + }, + { + "input": 381, + "interpolation": "LINEAR", + "output": 382 + }, + { + "input": 383, + "interpolation": "LINEAR", + "output": 384 + }, + { + "input": 385, + "interpolation": "LINEAR", + "output": 386 + }, + { + "input": 387, + "interpolation": "LINEAR", + "output": 388 + }, + { + "input": 389, + "interpolation": "LINEAR", + "output": 390 + }, + { + "input": 391, + "interpolation": "LINEAR", + "output": 392 + }, + { + "input": 393, + "interpolation": "LINEAR", + "output": 394 + }, + { + "input": 395, + "interpolation": "LINEAR", + "output": 396 + }, + { + "input": 397, + "interpolation": "LINEAR", + "output": 398 + }, + { + "input": 399, + "interpolation": "LINEAR", + "output": 400 + }, + { + "input": 401, + "interpolation": "LINEAR", + "output": 402 + }, + { + "input": 403, + "interpolation": "LINEAR", + "output": 404 + }, + { + "input": 405, + "interpolation": "LINEAR", + "output": 406 + }, + { + "input": 407, + "interpolation": "LINEAR", + "output": 408 + }, + { + "input": 409, + "interpolation": "LINEAR", + "output": 410 + }, + { + "input": 411, + "interpolation": "LINEAR", + "output": 412 + }, + { + "input": 413, + "interpolation": "LINEAR", + "output": 414 + }, + { + "input": 415, + "interpolation": "LINEAR", + "output": 416 + }, + { + "input": 417, + "interpolation": "LINEAR", + "output": 418 + }, + { + "input": 419, + "interpolation": "LINEAR", + "output": 420 + }, + { + "input": 421, + "interpolation": "LINEAR", + "output": 422 + }, + { + "input": 423, + "interpolation": "LINEAR", + "output": 424 + }, + { + "input": 425, + "interpolation": "LINEAR", + "output": 426 + }, + { + "input": 427, + "interpolation": "LINEAR", + "output": 428 + }, + { + "input": 429, + "interpolation": "LINEAR", + "output": 430 + }, + { + "input": 431, + "interpolation": "LINEAR", + "output": 432 + }, + { + "input": 433, + "interpolation": "LINEAR", + "output": 434 + }, + { + "input": 435, + "interpolation": "LINEAR", + "output": 436 + }, + { + "input": 437, + "interpolation": "LINEAR", + "output": 438 + }, + { + "input": 439, + "interpolation": "LINEAR", + "output": 440 + }, + { + "input": 441, + "interpolation": "LINEAR", + "output": 442 + }, + { + "input": 443, + "interpolation": "LINEAR", + "output": 444 + }, + { + "input": 445, + "interpolation": "LINEAR", + "output": 446 + }, + { + "input": 447, + "interpolation": "LINEAR", + "output": 448 + }, + { + "input": 449, + "interpolation": "LINEAR", + "output": 450 + }, + { + "input": 451, + "interpolation": "LINEAR", + "output": 452 + }, + { + "input": 453, + "interpolation": "LINEAR", + "output": 454 + }, + { + "input": 455, + "interpolation": "LINEAR", + "output": 456 + }, + { + "input": 457, + "interpolation": "LINEAR", + "output": 458 + }, + { + "input": 459, + "interpolation": "LINEAR", + "output": 460 + }, + { + "input": 461, + "interpolation": "LINEAR", + "output": 462 + }, + { + "input": 463, + "interpolation": "LINEAR", + "output": 464 + }, + { + "input": 465, + "interpolation": "LINEAR", + "output": 466 + }, + { + "input": 467, + "interpolation": "LINEAR", + "output": 468 + }, + { + "input": 469, + "interpolation": "LINEAR", + "output": 470 + }, + { + "input": 471, + "interpolation": "LINEAR", + "output": 472 + }, + { + "input": 473, + "interpolation": "LINEAR", + "output": 474 + }, + { + "input": 475, + "interpolation": "LINEAR", + "output": 476 + }, + { + "input": 477, + "interpolation": "LINEAR", + "output": 478 + }, + { + "input": 479, + "interpolation": "LINEAR", + "output": 480 + }, + { + "input": 481, + "interpolation": "LINEAR", + "output": 482 + }, + { + "input": 483, + "interpolation": "LINEAR", + "output": 484 + }, + { + "input": 485, + "interpolation": "LINEAR", + "output": 486 + }, + { + "input": 487, + "interpolation": "LINEAR", + "output": 488 + }, + { + "input": 489, + "interpolation": "LINEAR", + "output": 490 + }, + { + "input": 491, + "interpolation": "LINEAR", + "output": 492 + }, + { + "input": 493, + "interpolation": "LINEAR", + "output": 494 + }, + { + "input": 495, + "interpolation": "LINEAR", + "output": 496 + }, + { + "input": 497, + "interpolation": "LINEAR", + "output": 498 + }, + { + "input": 499, + "interpolation": "LINEAR", + "output": 500 + }, + { + "input": 501, + "interpolation": "LINEAR", + "output": 502 + }, + { + "input": 503, + "interpolation": "LINEAR", + "output": 504 + }, + { + "input": 505, + "interpolation": "LINEAR", + "output": 506 + }, + { + "input": 507, + "interpolation": "LINEAR", + "output": 508 + }, + { + "input": 509, + "interpolation": "LINEAR", + "output": 510 + }, + { + "input": 511, + "interpolation": "LINEAR", + "output": 512 + }, + { + "input": 513, + "interpolation": "LINEAR", + "output": 514 + }, + { + "input": 515, + "interpolation": "LINEAR", + "output": 516 + }, + { + "input": 517, + "interpolation": "LINEAR", + "output": 518 + }, + { + "input": 519, + "interpolation": "LINEAR", + "output": 520 + }, + { + "input": 521, + "interpolation": "LINEAR", + "output": 522 + }, + { + "input": 523, + "interpolation": "LINEAR", + "output": 524 + }, + { + "input": 525, + "interpolation": "LINEAR", + "output": 526 + }, + { + "input": 527, + "interpolation": "LINEAR", + "output": 528 + }, + { + "input": 529, + "interpolation": "LINEAR", + "output": 530 + }, + { + "input": 531, + "interpolation": "LINEAR", + "output": 532 + }, + { + "input": 533, + "interpolation": "LINEAR", + "output": 534 + }, + { + "input": 535, + "interpolation": "LINEAR", + "output": 536 + }, + { + "input": 537, + "interpolation": "LINEAR", + "output": 538 + }, + { + "input": 539, + "interpolation": "LINEAR", + "output": 540 + }, + { + "input": 541, + "interpolation": "LINEAR", + "output": 542 + }, + { + "input": 543, + "interpolation": "LINEAR", + "output": 544 + }, + { + "input": 545, + "interpolation": "LINEAR", + "output": 546 + }, + { + "input": 547, + "interpolation": "LINEAR", + "output": 548 + }, + { + "input": 549, + "interpolation": "LINEAR", + "output": 550 + }, + { + "input": 551, + "interpolation": "LINEAR", + "output": 552 + }, + { + "input": 553, + "interpolation": "LINEAR", + "output": 554 + }, + { + "input": 555, + "interpolation": "LINEAR", + "output": 556 + }, + { + "input": 557, + "interpolation": "LINEAR", + "output": 558 + }, + { + "input": 559, + "interpolation": "LINEAR", + "output": 560 + }, + { + "input": 561, + "interpolation": "LINEAR", + "output": 562 + }, + { + "input": 563, + "interpolation": "LINEAR", + "output": 564 + }, + { + "input": 565, + "interpolation": "LINEAR", + "output": 566 + }, + { + "input": 567, + "interpolation": "LINEAR", + "output": 568 + }, + { + "input": 569, + "interpolation": "LINEAR", + "output": 570 + }, + { + "input": 571, + "interpolation": "LINEAR", + "output": 572 + }, + { + "input": 573, + "interpolation": "LINEAR", + "output": 574 + }, + { + "input": 575, + "interpolation": "LINEAR", + "output": 576 + }, + { + "input": 577, + "interpolation": "LINEAR", + "output": 578 + }, + { + "input": 579, + "interpolation": "LINEAR", + "output": 580 + }, + { + "input": 581, + "interpolation": "LINEAR", + "output": 582 + }, + { + "input": 583, + "interpolation": "LINEAR", + "output": 584 + }, + { + "input": 585, + "interpolation": "LINEAR", + "output": 586 + }, + { + "input": 587, + "interpolation": "LINEAR", + "output": 588 + }, + { + "input": 589, + "interpolation": "LINEAR", + "output": 590 + }, + { + "input": 591, + "interpolation": "LINEAR", + "output": 592 + }, + { + "input": 593, + "interpolation": "LINEAR", + "output": 594 + }, + { + "input": 595, + "interpolation": "LINEAR", + "output": 596 + }, + { + "input": 597, + "interpolation": "LINEAR", + "output": 598 + }, + { + "input": 599, + "interpolation": "LINEAR", + "output": 600 + }, + { + "input": 601, + "interpolation": "LINEAR", + "output": 602 + }, + { + "input": 603, + "interpolation": "LINEAR", + "output": 604 + }, + { + "input": 605, + "interpolation": "LINEAR", + "output": 606 + }, + { + "input": 607, + "interpolation": "LINEAR", + "output": 608 + }, + { + "input": 609, + "interpolation": "LINEAR", + "output": 610 + }, + { + "input": 611, + "interpolation": "LINEAR", + "output": 612 + }, + { + "input": 613, + "interpolation": "LINEAR", + "output": 614 + }, + { + "input": 615, + "interpolation": "LINEAR", + "output": 616 + }, + { + "input": 617, + "interpolation": "LINEAR", + "output": 618 + }, + { + "input": 619, + "interpolation": "LINEAR", + "output": 620 + }, + { + "input": 621, + "interpolation": "LINEAR", + "output": 622 + }, + { + "input": 623, + "interpolation": "LINEAR", + "output": 624 + }, + { + "input": 625, + "interpolation": "LINEAR", + "output": 626 + }, + { + "input": 627, + "interpolation": "LINEAR", + "output": 628 + }, + { + "input": 629, + "interpolation": "LINEAR", + "output": 630 + }, + { + "input": 631, + "interpolation": "LINEAR", + "output": 632 + }, + { + "input": 633, + "interpolation": "LINEAR", + "output": 634 + }, + { + "input": 635, + "interpolation": "LINEAR", + "output": 636 + }, + { + "input": 637, + "interpolation": "LINEAR", + "output": 638 + }, + { + "input": 639, + "interpolation": "LINEAR", + "output": 640 + }, + { + "input": 641, + "interpolation": "LINEAR", + "output": 642 + }, + { + "input": 643, + "interpolation": "LINEAR", + "output": 644 + }, + { + "input": 645, + "interpolation": "LINEAR", + "output": 646 + }, + { + "input": 647, + "interpolation": "LINEAR", + "output": 648 + }, + { + "input": 649, + "interpolation": "LINEAR", + "output": 650 + }, + { + "input": 651, + "interpolation": "LINEAR", + "output": 652 + }, + { + "input": 653, + "interpolation": "LINEAR", + "output": 654 + }, + { + "input": 655, + "interpolation": "LINEAR", + "output": 656 + }, + { + "input": 657, + "interpolation": "LINEAR", + "output": 658 + }, + { + "input": 659, + "interpolation": "LINEAR", + "output": 660 + }, + { + "input": 661, + "interpolation": "LINEAR", + "output": 662 + }, + { + "input": 663, + "interpolation": "LINEAR", + "output": 664 + }, + { + "input": 665, + "interpolation": "LINEAR", + "output": 666 + }, + { + "input": 667, + "interpolation": "LINEAR", + "output": 668 + }, + { + "input": 669, + "interpolation": "LINEAR", + "output": 670 + }, + { + "input": 671, + "interpolation": "LINEAR", + "output": 672 + }, + { + "input": 673, + "interpolation": "LINEAR", + "output": 674 + }, + { + "input": 675, + "interpolation": "LINEAR", + "output": 676 + }, + { + "input": 677, + "interpolation": "LINEAR", + "output": 678 + }, + { + "input": 679, + "interpolation": "LINEAR", + "output": 680 + }, + { + "input": 681, + "interpolation": "LINEAR", + "output": 682 + }, + { + "input": 683, + "interpolation": "LINEAR", + "output": 684 + }, + { + "input": 685, + "interpolation": "LINEAR", + "output": 686 + }, + { + "input": 687, + "interpolation": "LINEAR", + "output": 688 + }, + { + "input": 689, + "interpolation": "LINEAR", + "output": 690 + }, + { + "input": 691, + "interpolation": "LINEAR", + "output": 692 + }, + { + "input": 693, + "interpolation": "LINEAR", + "output": 694 + }, + { + "input": 695, + "interpolation": "LINEAR", + "output": 696 + }, + { + "input": 697, + "interpolation": "LINEAR", + "output": 698 + }, + { + "input": 699, + "interpolation": "LINEAR", + "output": 700 + }, + { + "input": 701, + "interpolation": "LINEAR", + "output": 702 + }, + { + "input": 703, + "interpolation": "LINEAR", + "output": 704 + }, + { + "input": 705, + "interpolation": "LINEAR", + "output": 706 + }, + { + "input": 707, + "interpolation": "LINEAR", + "output": 708 + }, + { + "input": 709, + "interpolation": "LINEAR", + "output": 710 + }, + { + "input": 711, + "interpolation": "LINEAR", + "output": 712 + }, + { + "input": 713, + "interpolation": "LINEAR", + "output": 714 + }, + { + "input": 715, + "interpolation": "LINEAR", + "output": 716 + }, + { + "input": 717, + "interpolation": "LINEAR", + "output": 718 + }, + { + "input": 719, + "interpolation": "LINEAR", + "output": 720 + }, + { + "input": 721, + "interpolation": "LINEAR", + "output": 722 + }, + { + "input": 723, + "interpolation": "LINEAR", + "output": 724 + }, + { + "input": 725, + "interpolation": "LINEAR", + "output": 726 + }, + { + "input": 727, + "interpolation": "LINEAR", + "output": 728 + }, + { + "input": 729, + "interpolation": "LINEAR", + "output": 730 + }, + { + "input": 731, + "interpolation": "LINEAR", + "output": 732 + }, + { + "input": 733, + "interpolation": "LINEAR", + "output": 734 + }, + { + "input": 735, + "interpolation": "LINEAR", + "output": 736 + }, + { + "input": 737, + "interpolation": "LINEAR", + "output": 738 + }, + { + "input": 739, + "interpolation": "LINEAR", + "output": 740 + }, + { + "input": 741, + "interpolation": "LINEAR", + "output": 742 + }, + { + "input": 743, + "interpolation": "LINEAR", + "output": 744 + }, + { + "input": 745, + "interpolation": "LINEAR", + "output": 746 + }, + { + "input": 747, + "interpolation": "LINEAR", + "output": 748 + }, + { + "input": 749, + "interpolation": "LINEAR", + "output": 750 + }, + { + "input": 751, + "interpolation": "LINEAR", + "output": 752 + }, + { + "input": 753, + "interpolation": "LINEAR", + "output": 754 + }, + { + "input": 755, + "interpolation": "LINEAR", + "output": 756 + }, + { + "input": 757, + "interpolation": "LINEAR", + "output": 758 + }, + { + "input": 759, + "interpolation": "LINEAR", + "output": 760 + }, + { + "input": 761, + "interpolation": "LINEAR", + "output": 762 + }, + { + "input": 763, + "interpolation": "LINEAR", + "output": 764 + }, + { + "input": 765, + "interpolation": "LINEAR", + "output": 766 + }, + { + "input": 767, + "interpolation": "LINEAR", + "output": 768 + }, + { + "input": 769, + "interpolation": "LINEAR", + "output": 770 + }, + { + "input": 771, + "interpolation": "LINEAR", + "output": 772 + }, + { + "input": 773, + "interpolation": "LINEAR", + "output": 774 + }, + { + "input": 775, + "interpolation": "LINEAR", + "output": 776 + }, + { + "input": 777, + "interpolation": "LINEAR", + "output": 778 + }, + { + "input": 779, + "interpolation": "LINEAR", + "output": 780 + }, + { + "input": 781, + "interpolation": "LINEAR", + "output": 782 + }, + { + "input": 783, + "interpolation": "LINEAR", + "output": 784 + }, + { + "input": 785, + "interpolation": "LINEAR", + "output": 786 + }, + { + "input": 787, + "interpolation": "LINEAR", + "output": 788 + }, + { + "input": 789, + "interpolation": "LINEAR", + "output": 790 + }, + { + "input": 791, + "interpolation": "LINEAR", + "output": 792 + }, + { + "input": 793, + "interpolation": "LINEAR", + "output": 794 + }, + { + "input": 795, + "interpolation": "LINEAR", + "output": 796 + }, + { + "input": 797, + "interpolation": "LINEAR", + "output": 798 + }, + { + "input": 799, + "interpolation": "LINEAR", + "output": 800 + }, + { + "input": 801, + "interpolation": "LINEAR", + "output": 802 + }, + { + "input": 803, + "interpolation": "LINEAR", + "output": 804 + }, + { + "input": 805, + "interpolation": "LINEAR", + "output": 806 + }, + { + "input": 807, + "interpolation": "LINEAR", + "output": 808 + }, + { + "input": 809, + "interpolation": "LINEAR", + "output": 810 + }, + { + "input": 811, + "interpolation": "LINEAR", + "output": 812 + }, + { + "input": 813, + "interpolation": "LINEAR", + "output": 814 + }, + { + "input": 815, + "interpolation": "LINEAR", + "output": 816 + }, + { + "input": 817, + "interpolation": "LINEAR", + "output": 818 + }, + { + "input": 819, + "interpolation": "LINEAR", + "output": 820 + }, + { + "input": 821, + "interpolation": "LINEAR", + "output": 822 + }, + { + "input": 823, + "interpolation": "LINEAR", + "output": 824 + }, + { + "input": 825, + "interpolation": "LINEAR", + "output": 826 + }, + { + "input": 827, + "interpolation": "LINEAR", + "output": 828 + }, + { + "input": 829, + "interpolation": "LINEAR", + "output": 830 + }, + { + "input": 831, + "interpolation": "LINEAR", + "output": 832 + }, + { + "input": 833, + "interpolation": "LINEAR", + "output": 834 + }, + { + "input": 835, + "interpolation": "LINEAR", + "output": 836 + }, + { + "input": 837, + "interpolation": "LINEAR", + "output": 838 + }, + { + "input": 839, + "interpolation": "LINEAR", + "output": 840 + }, + { + "input": 841, + "interpolation": "LINEAR", + "output": 842 + }, + { + "input": 843, + "interpolation": "LINEAR", + "output": 844 + }, + { + "input": 845, + "interpolation": "LINEAR", + "output": 846 + }, + { + "input": 847, + "interpolation": "LINEAR", + "output": 848 + }, + { + "input": 849, + "interpolation": "LINEAR", + "output": 850 + }, + { + "input": 851, + "interpolation": "LINEAR", + "output": 852 + }, + { + "input": 853, + "interpolation": "LINEAR", + "output": 854 + }, + { + "input": 855, + "interpolation": "LINEAR", + "output": 856 + }, + { + "input": 857, + "interpolation": "LINEAR", + "output": 858 + }, + { + "input": 859, + "interpolation": "LINEAR", + "output": 860 + }, + { + "input": 861, + "interpolation": "LINEAR", + "output": 862 + }, + { + "input": 863, + "interpolation": "LINEAR", + "output": 864 + }, + { + "input": 865, + "interpolation": "LINEAR", + "output": 866 + }, + { + "input": 867, + "interpolation": "LINEAR", + "output": 868 + }, + { + "input": 869, + "interpolation": "LINEAR", + "output": 870 + }, + { + "input": 871, + "interpolation": "LINEAR", + "output": 872 + }, + { + "input": 873, + "interpolation": "LINEAR", + "output": 874 + }, + { + "input": 875, + "interpolation": "LINEAR", + "output": 876 + }, + { + "input": 877, + "interpolation": "LINEAR", + "output": 878 + }, + { + "input": 879, + "interpolation": "LINEAR", + "output": 880 + }, + { + "input": 881, + "interpolation": "LINEAR", + "output": 882 + }, + { + "input": 883, + "interpolation": "LINEAR", + "output": 884 + }, + { + "input": 885, + "interpolation": "LINEAR", + "output": 886 + }, + { + "input": 887, + "interpolation": "LINEAR", + "output": 888 + }, + { + "input": 889, + "interpolation": "LINEAR", + "output": 890 + }, + { + "input": 891, + "interpolation": "LINEAR", + "output": 892 + }, + { + "input": 893, + "interpolation": "LINEAR", + "output": 894 + }, + { + "input": 895, + "interpolation": "LINEAR", + "output": 896 + }, + { + "input": 897, + "interpolation": "LINEAR", + "output": 898 + }, + { + "input": 899, + "interpolation": "LINEAR", + "output": 900 + }, + { + "input": 901, + "interpolation": "LINEAR", + "output": 902 + }, + { + "input": 903, + "interpolation": "LINEAR", + "output": 904 + }, + { + "input": 905, + "interpolation": "LINEAR", + "output": 906 + }, + { + "input": 907, + "interpolation": "LINEAR", + "output": 908 + }, + { + "input": 909, + "interpolation": "LINEAR", + "output": 910 + }, + { + "input": 911, + "interpolation": "LINEAR", + "output": 912 + }, + { + "input": 913, + "interpolation": "LINEAR", + "output": 914 + }, + { + "input": 915, + "interpolation": "LINEAR", + "output": 916 + }, + { + "input": 917, + "interpolation": "LINEAR", + "output": 918 + }, + { + "input": 919, + "interpolation": "LINEAR", + "output": 920 + }, + { + "input": 921, + "interpolation": "LINEAR", + "output": 922 + }, + { + "input": 923, + "interpolation": "LINEAR", + "output": 924 + }, + { + "input": 925, + "interpolation": "LINEAR", + "output": 926 + }, + { + "input": 927, + "interpolation": "LINEAR", + "output": 928 + }, + { + "input": 929, + "interpolation": "LINEAR", + "output": 930 + }, + { + "input": 931, + "interpolation": "LINEAR", + "output": 932 + }, + { + "input": 933, + "interpolation": "LINEAR", + "output": 934 + }, + { + "input": 935, + "interpolation": "LINEAR", + "output": 936 + }, + { + "input": 937, + "interpolation": "LINEAR", + "output": 938 + }, + { + "input": 939, + "interpolation": "LINEAR", + "output": 940 + }, + { + "input": 941, + "interpolation": "LINEAR", + "output": 942 + }, + { + "input": 943, + "interpolation": "LINEAR", + "output": 944 + }, + { + "input": 945, + "interpolation": "LINEAR", + "output": 946 + }, + { + "input": 947, + "interpolation": "LINEAR", + "output": 948 + }, + { + "input": 949, + "interpolation": "LINEAR", + "output": 950 + }, + { + "input": 951, + "interpolation": "LINEAR", + "output": 952 + }, + { + "input": 953, + "interpolation": "LINEAR", + "output": 954 + }, + { + "input": 955, + "interpolation": "LINEAR", + "output": 956 + }, + { + "input": 957, + "interpolation": "LINEAR", + "output": 958 + }, + { + "input": 959, + "interpolation": "LINEAR", + "output": 960 + }, + { + "input": 961, + "interpolation": "LINEAR", + "output": 962 + }, + { + "input": 963, + "interpolation": "LINEAR", + "output": 964 + }, + { + "input": 965, + "interpolation": "LINEAR", + "output": 966 + }, + { + "input": 967, + "interpolation": "LINEAR", + "output": 968 + }, + { + "input": 969, + "interpolation": "LINEAR", + "output": 970 + }, + { + "input": 971, + "interpolation": "LINEAR", + "output": 972 + }, + { + "input": 973, + "interpolation": "LINEAR", + "output": 974 + }, + { + "input": 975, + "interpolation": "LINEAR", + "output": 976 + }, + { + "input": 977, + "interpolation": "LINEAR", + "output": 978 + }, + { + "input": 979, + "interpolation": "LINEAR", + "output": 980 + }, + { + "input": 981, + "interpolation": "LINEAR", + "output": 982 + }, + { + "input": 983, + "interpolation": "LINEAR", + "output": 984 + }, + { + "input": 985, + "interpolation": "LINEAR", + "output": 986 + }, + { + "input": 987, + "interpolation": "LINEAR", + "output": 988 + }, + { + "input": 989, + "interpolation": "LINEAR", + "output": 990 + }, + { + "input": 991, + "interpolation": "LINEAR", + "output": 992 + }, + { + "input": 993, + "interpolation": "LINEAR", + "output": 994 + }, + { + "input": 995, + "interpolation": "LINEAR", + "output": 996 + }, + { + "input": 997, + "interpolation": "LINEAR", + "output": 998 + }, + { + "input": 999, + "interpolation": "LINEAR", + "output": 1000 + }, + { + "input": 1001, + "interpolation": "LINEAR", + "output": 1002 + }, + { + "input": 1003, + "interpolation": "LINEAR", + "output": 1004 + }, + { + "input": 1005, + "interpolation": "LINEAR", + "output": 1006 + }, + { + "input": 1007, + "interpolation": "LINEAR", + "output": 1008 + }, + { + "input": 1009, + "interpolation": "LINEAR", + "output": 1010 + }, + { + "input": 1011, + "interpolation": "LINEAR", + "output": 1012 + }, + { + "input": 1013, + "interpolation": "LINEAR", + "output": 1014 + }, + { + "input": 1015, + "interpolation": "LINEAR", + "output": 1016 + }, + { + "input": 1017, + "interpolation": "LINEAR", + "output": 1018 + }, + { + "input": 1019, + "interpolation": "LINEAR", + "output": 1020 + }, + { + "input": 1021, + "interpolation": "LINEAR", + "output": 1022 + }, + { + "input": 1023, + "interpolation": "LINEAR", + "output": 1024 + }, + { + "input": 1025, + "interpolation": "LINEAR", + "output": 1026 + }, + { + "input": 1027, + "interpolation": "LINEAR", + "output": 1028 + }, + { + "input": 1029, + "interpolation": "LINEAR", + "output": 1030 + }, + { + "input": 1031, + "interpolation": "LINEAR", + "output": 1032 + }, + { + "input": 1033, + "interpolation": "LINEAR", + "output": 1034 + }, + { + "input": 1035, + "interpolation": "LINEAR", + "output": 1036 + }, + { + "input": 1037, + "interpolation": "LINEAR", + "output": 1038 + }, + { + "input": 1039, + "interpolation": "LINEAR", + "output": 1040 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Flying", + "samplers": [ + { + "input": 1041, + "interpolation": "LINEAR", + "output": 1042 + }, + { + "input": 1043, + "interpolation": "LINEAR", + "output": 1044 + }, + { + "input": 1045, + "interpolation": "LINEAR", + "output": 1046 + }, + { + "input": 1047, + "interpolation": "LINEAR", + "output": 1048 + }, + { + "input": 1049, + "interpolation": "LINEAR", + "output": 1050 + }, + { + "input": 1051, + "interpolation": "LINEAR", + "output": 1052 + }, + { + "input": 1053, + "interpolation": "LINEAR", + "output": 1054 + }, + { + "input": 1055, + "interpolation": "LINEAR", + "output": 1056 + }, + { + "input": 1057, + "interpolation": "LINEAR", + "output": 1058 + }, + { + "input": 1059, + "interpolation": "LINEAR", + "output": 1060 + }, + { + "input": 1061, + "interpolation": "LINEAR", + "output": 1062 + }, + { + "input": 1063, + "interpolation": "LINEAR", + "output": 1064 + }, + { + "input": 1065, + "interpolation": "LINEAR", + "output": 1066 + }, + { + "input": 1067, + "interpolation": "LINEAR", + "output": 1068 + }, + { + "input": 1069, + "interpolation": "LINEAR", + "output": 1070 + }, + { + "input": 1071, + "interpolation": "LINEAR", + "output": 1072 + }, + { + "input": 1073, + "interpolation": "LINEAR", + "output": 1074 + }, + { + "input": 1075, + "interpolation": "LINEAR", + "output": 1076 + }, + { + "input": 1077, + "interpolation": "LINEAR", + "output": 1078 + }, + { + "input": 1079, + "interpolation": "LINEAR", + "output": 1080 + }, + { + "input": 1081, + "interpolation": "LINEAR", + "output": 1082 + }, + { + "input": 1083, + "interpolation": "LINEAR", + "output": 1084 + }, + { + "input": 1085, + "interpolation": "LINEAR", + "output": 1086 + }, + { + "input": 1087, + "interpolation": "LINEAR", + "output": 1088 + }, + { + "input": 1089, + "interpolation": "LINEAR", + "output": 1090 + }, + { + "input": 1091, + "interpolation": "LINEAR", + "output": 1092 + }, + { + "input": 1093, + "interpolation": "LINEAR", + "output": 1094 + }, + { + "input": 1095, + "interpolation": "LINEAR", + "output": 1096 + }, + { + "input": 1097, + "interpolation": "LINEAR", + "output": 1098 + }, + { + "input": 1099, + "interpolation": "LINEAR", + "output": 1100 + }, + { + "input": 1101, + "interpolation": "LINEAR", + "output": 1102 + }, + { + "input": 1103, + "interpolation": "LINEAR", + "output": 1104 + }, + { + "input": 1105, + "interpolation": "LINEAR", + "output": 1106 + }, + { + "input": 1107, + "interpolation": "LINEAR", + "output": 1108 + }, + { + "input": 1109, + "interpolation": "LINEAR", + "output": 1110 + }, + { + "input": 1111, + "interpolation": "LINEAR", + "output": 1112 + }, + { + "input": 1113, + "interpolation": "LINEAR", + "output": 1114 + }, + { + "input": 1115, + "interpolation": "LINEAR", + "output": 1116 + }, + { + "input": 1117, + "interpolation": "LINEAR", + "output": 1118 + }, + { + "input": 1119, + "interpolation": "LINEAR", + "output": 1120 + }, + { + "input": 1121, + "interpolation": "LINEAR", + "output": 1122 + }, + { + "input": 1123, + "interpolation": "LINEAR", + "output": 1124 + }, + { + "input": 1125, + "interpolation": "LINEAR", + "output": 1126 + }, + { + "input": 1127, + "interpolation": "LINEAR", + "output": 1128 + }, + { + "input": 1129, + "interpolation": "LINEAR", + "output": 1130 + }, + { + "input": 1131, + "interpolation": "LINEAR", + "output": 1132 + }, + { + "input": 1133, + "interpolation": "LINEAR", + "output": 1134 + }, + { + "input": 1135, + "interpolation": "LINEAR", + "output": 1136 + }, + { + "input": 1137, + "interpolation": "LINEAR", + "output": 1138 + }, + { + "input": 1139, + "interpolation": "LINEAR", + "output": 1140 + }, + { + "input": 1141, + "interpolation": "LINEAR", + "output": 1142 + }, + { + "input": 1143, + "interpolation": "LINEAR", + "output": 1144 + }, + { + "input": 1145, + "interpolation": "LINEAR", + "output": 1146 + }, + { + "input": 1147, + "interpolation": "LINEAR", + "output": 1148 + }, + { + "input": 1149, + "interpolation": "LINEAR", + "output": 1150 + }, + { + "input": 1151, + "interpolation": "LINEAR", + "output": 1152 + }, + { + "input": 1153, + "interpolation": "LINEAR", + "output": 1154 + }, + { + "input": 1155, + "interpolation": "LINEAR", + "output": 1156 + }, + { + "input": 1157, + "interpolation": "LINEAR", + "output": 1158 + }, + { + "input": 1159, + "interpolation": "LINEAR", + "output": 1160 + }, + { + "input": 1161, + "interpolation": "LINEAR", + "output": 1162 + }, + { + "input": 1163, + "interpolation": "LINEAR", + "output": 1164 + }, + { + "input": 1165, + "interpolation": "LINEAR", + "output": 1166 + }, + { + "input": 1167, + "interpolation": "LINEAR", + "output": 1168 + }, + { + "input": 1169, + "interpolation": "LINEAR", + "output": 1170 + }, + { + "input": 1171, + "interpolation": "LINEAR", + "output": 1172 + }, + { + "input": 1173, + "interpolation": "LINEAR", + "output": 1174 + }, + { + "input": 1175, + "interpolation": "LINEAR", + "output": 1176 + }, + { + "input": 1177, + "interpolation": "LINEAR", + "output": 1178 + }, + { + "input": 1179, + "interpolation": "LINEAR", + "output": 1180 + }, + { + "input": 1181, + "interpolation": "LINEAR", + "output": 1182 + }, + { + "input": 1183, + "interpolation": "LINEAR", + "output": 1184 + }, + { + "input": 1185, + "interpolation": "LINEAR", + "output": 1186 + }, + { + "input": 1187, + "interpolation": "LINEAR", + "output": 1188 + }, + { + "input": 1189, + "interpolation": "LINEAR", + "output": 1190 + }, + { + "input": 1191, + "interpolation": "LINEAR", + "output": 1192 + }, + { + "input": 1193, + "interpolation": "LINEAR", + "output": 1194 + }, + { + "input": 1195, + "interpolation": "LINEAR", + "output": 1196 + }, + { + "input": 1197, + "interpolation": "LINEAR", + "output": 1198 + }, + { + "input": 1199, + "interpolation": "LINEAR", + "output": 1200 + }, + { + "input": 1201, + "interpolation": "LINEAR", + "output": 1202 + }, + { + "input": 1203, + "interpolation": "LINEAR", + "output": 1204 + }, + { + "input": 1205, + "interpolation": "LINEAR", + "output": 1206 + }, + { + "input": 1207, + "interpolation": "LINEAR", + "output": 1208 + }, + { + "input": 1209, + "interpolation": "LINEAR", + "output": 1210 + }, + { + "input": 1211, + "interpolation": "LINEAR", + "output": 1212 + }, + { + "input": 1213, + "interpolation": "LINEAR", + "output": 1214 + }, + { + "input": 1215, + "interpolation": "LINEAR", + "output": 1216 + }, + { + "input": 1217, + "interpolation": "LINEAR", + "output": 1218 + }, + { + "input": 1219, + "interpolation": "LINEAR", + "output": 1220 + }, + { + "input": 1221, + "interpolation": "LINEAR", + "output": 1222 + }, + { + "input": 1223, + "interpolation": "LINEAR", + "output": 1224 + }, + { + "input": 1225, + "interpolation": "LINEAR", + "output": 1226 + }, + { + "input": 1227, + "interpolation": "LINEAR", + "output": 1228 + }, + { + "input": 1229, + "interpolation": "LINEAR", + "output": 1230 + }, + { + "input": 1231, + "interpolation": "LINEAR", + "output": 1232 + }, + { + "input": 1233, + "interpolation": "LINEAR", + "output": 1234 + }, + { + "input": 1235, + "interpolation": "LINEAR", + "output": 1236 + }, + { + "input": 1237, + "interpolation": "LINEAR", + "output": 1238 + }, + { + "input": 1239, + "interpolation": "LINEAR", + "output": 1240 + }, + { + "input": 1241, + "interpolation": "LINEAR", + "output": 1242 + }, + { + "input": 1243, + "interpolation": "LINEAR", + "output": 1244 + }, + { + "input": 1245, + "interpolation": "LINEAR", + "output": 1246 + }, + { + "input": 1247, + "interpolation": "LINEAR", + "output": 1248 + }, + { + "input": 1249, + "interpolation": "LINEAR", + "output": 1250 + }, + { + "input": 1251, + "interpolation": "LINEAR", + "output": 1252 + }, + { + "input": 1253, + "interpolation": "LINEAR", + "output": 1254 + }, + { + "input": 1255, + "interpolation": "LINEAR", + "output": 1256 + }, + { + "input": 1257, + "interpolation": "LINEAR", + "output": 1258 + }, + { + "input": 1259, + "interpolation": "LINEAR", + "output": 1260 + }, + { + "input": 1261, + "interpolation": "LINEAR", + "output": 1262 + }, + { + "input": 1263, + "interpolation": "LINEAR", + "output": 1264 + }, + { + "input": 1265, + "interpolation": "LINEAR", + "output": 1266 + }, + { + "input": 1267, + "interpolation": "LINEAR", + "output": 1268 + }, + { + "input": 1269, + "interpolation": "LINEAR", + "output": 1270 + }, + { + "input": 1271, + "interpolation": "LINEAR", + "output": 1272 + }, + { + "input": 1273, + "interpolation": "LINEAR", + "output": 1274 + }, + { + "input": 1275, + "interpolation": "LINEAR", + "output": 1276 + }, + { + "input": 1277, + "interpolation": "LINEAR", + "output": 1278 + }, + { + "input": 1279, + "interpolation": "LINEAR", + "output": 1280 + }, + { + "input": 1281, + "interpolation": "LINEAR", + "output": 1282 + }, + { + "input": 1283, + "interpolation": "LINEAR", + "output": 1284 + }, + { + "input": 1285, + "interpolation": "LINEAR", + "output": 1286 + }, + { + "input": 1287, + "interpolation": "LINEAR", + "output": 1288 + }, + { + "input": 1289, + "interpolation": "LINEAR", + "output": 1290 + }, + { + "input": 1291, + "interpolation": "LINEAR", + "output": 1292 + }, + { + "input": 1293, + "interpolation": "LINEAR", + "output": 1294 + }, + { + "input": 1295, + "interpolation": "LINEAR", + "output": 1296 + }, + { + "input": 1297, + "interpolation": "LINEAR", + "output": 1298 + }, + { + "input": 1299, + "interpolation": "LINEAR", + "output": 1300 + }, + { + "input": 1301, + "interpolation": "LINEAR", + "output": 1302 + }, + { + "input": 1303, + "interpolation": "LINEAR", + "output": 1304 + }, + { + "input": 1305, + "interpolation": "LINEAR", + "output": 1306 + }, + { + "input": 1307, + "interpolation": "LINEAR", + "output": 1308 + }, + { + "input": 1309, + "interpolation": "LINEAR", + "output": 1310 + }, + { + "input": 1311, + "interpolation": "LINEAR", + "output": 1312 + }, + { + "input": 1313, + "interpolation": "LINEAR", + "output": 1314 + }, + { + "input": 1315, + "interpolation": "LINEAR", + "output": 1316 + }, + { + "input": 1317, + "interpolation": "LINEAR", + "output": 1318 + }, + { + "input": 1319, + "interpolation": "LINEAR", + "output": 1320 + }, + { + "input": 1321, + "interpolation": "LINEAR", + "output": 1322 + }, + { + "input": 1323, + "interpolation": "LINEAR", + "output": 1324 + }, + { + "input": 1325, + "interpolation": "LINEAR", + "output": 1326 + }, + { + "input": 1327, + "interpolation": "LINEAR", + "output": 1328 + }, + { + "input": 1329, + "interpolation": "LINEAR", + "output": 1330 + }, + { + "input": 1331, + "interpolation": "LINEAR", + "output": 1332 + }, + { + "input": 1333, + "interpolation": "LINEAR", + "output": 1334 + }, + { + "input": 1335, + "interpolation": "LINEAR", + "output": 1336 + }, + { + "input": 1337, + "interpolation": "LINEAR", + "output": 1338 + }, + { + "input": 1339, + "interpolation": "LINEAR", + "output": 1340 + }, + { + "input": 1341, + "interpolation": "LINEAR", + "output": 1342 + }, + { + "input": 1343, + "interpolation": "LINEAR", + "output": 1344 + }, + { + "input": 1345, + "interpolation": "LINEAR", + "output": 1346 + }, + { + "input": 1347, + "interpolation": "LINEAR", + "output": 1348 + }, + { + "input": 1349, + "interpolation": "LINEAR", + "output": 1350 + }, + { + "input": 1351, + "interpolation": "LINEAR", + "output": 1352 + }, + { + "input": 1353, + "interpolation": "LINEAR", + "output": 1354 + }, + { + "input": 1355, + "interpolation": "LINEAR", + "output": 1356 + }, + { + "input": 1357, + "interpolation": "LINEAR", + "output": 1358 + }, + { + "input": 1359, + "interpolation": "LINEAR", + "output": 1360 + }, + { + "input": 1361, + "interpolation": "LINEAR", + "output": 1362 + }, + { + "input": 1363, + "interpolation": "LINEAR", + "output": 1364 + }, + { + "input": 1365, + "interpolation": "LINEAR", + "output": 1366 + }, + { + "input": 1367, + "interpolation": "LINEAR", + "output": 1368 + }, + { + "input": 1369, + "interpolation": "LINEAR", + "output": 1370 + }, + { + "input": 1371, + "interpolation": "LINEAR", + "output": 1372 + }, + { + "input": 1373, + "interpolation": "LINEAR", + "output": 1374 + }, + { + "input": 1375, + "interpolation": "LINEAR", + "output": 1376 + }, + { + "input": 1377, + "interpolation": "LINEAR", + "output": 1378 + }, + { + "input": 1379, + "interpolation": "LINEAR", + "output": 1380 + }, + { + "input": 1381, + "interpolation": "LINEAR", + "output": 1382 + }, + { + "input": 1383, + "interpolation": "LINEAR", + "output": 1384 + }, + { + "input": 1385, + "interpolation": "LINEAR", + "output": 1386 + }, + { + "input": 1387, + "interpolation": "LINEAR", + "output": 1388 + }, + { + "input": 1389, + "interpolation": "LINEAR", + "output": 1390 + }, + { + "input": 1391, + "interpolation": "LINEAR", + "output": 1392 + }, + { + "input": 1393, + "interpolation": "LINEAR", + "output": 1394 + }, + { + "input": 1395, + "interpolation": "LINEAR", + "output": 1396 + }, + { + "input": 1397, + "interpolation": "LINEAR", + "output": 1398 + }, + { + "input": 1399, + "interpolation": "LINEAR", + "output": 1400 + }, + { + "input": 1401, + "interpolation": "LINEAR", + "output": 1402 + }, + { + "input": 1403, + "interpolation": "LINEAR", + "output": 1404 + }, + { + "input": 1405, + "interpolation": "LINEAR", + "output": 1406 + }, + { + "input": 1407, + "interpolation": "LINEAR", + "output": 1408 + }, + { + "input": 1409, + "interpolation": "LINEAR", + "output": 1410 + }, + { + "input": 1411, + "interpolation": "LINEAR", + "output": 1412 + }, + { + "input": 1413, + "interpolation": "LINEAR", + "output": 1414 + }, + { + "input": 1415, + "interpolation": "LINEAR", + "output": 1416 + }, + { + "input": 1417, + "interpolation": "LINEAR", + "output": 1418 + }, + { + "input": 1419, + "interpolation": "LINEAR", + "output": 1420 + }, + { + "input": 1421, + "interpolation": "LINEAR", + "output": 1422 + }, + { + "input": 1423, + "interpolation": "LINEAR", + "output": 1424 + }, + { + "input": 1425, + "interpolation": "LINEAR", + "output": 1426 + }, + { + "input": 1427, + "interpolation": "LINEAR", + "output": 1428 + }, + { + "input": 1429, + "interpolation": "LINEAR", + "output": 1430 + }, + { + "input": 1431, + "interpolation": "LINEAR", + "output": 1432 + }, + { + "input": 1433, + "interpolation": "LINEAR", + "output": 1434 + }, + { + "input": 1435, + "interpolation": "LINEAR", + "output": 1436 + }, + { + "input": 1437, + "interpolation": "LINEAR", + "output": 1438 + }, + { + "input": 1439, + "interpolation": "LINEAR", + "output": 1440 + }, + { + "input": 1441, + "interpolation": "LINEAR", + "output": 1442 + }, + { + "input": 1443, + "interpolation": "LINEAR", + "output": 1444 + }, + { + "input": 1445, + "interpolation": "LINEAR", + "output": 1446 + }, + { + "input": 1447, + "interpolation": "LINEAR", + "output": 1448 + }, + { + "input": 1449, + "interpolation": "LINEAR", + "output": 1450 + }, + { + "input": 1451, + "interpolation": "LINEAR", + "output": 1452 + }, + { + "input": 1453, + "interpolation": "LINEAR", + "output": 1454 + }, + { + "input": 1455, + "interpolation": "LINEAR", + "output": 1456 + }, + { + "input": 1457, + "interpolation": "LINEAR", + "output": 1458 + }, + { + "input": 1459, + "interpolation": "LINEAR", + "output": 1460 + }, + { + "input": 1461, + "interpolation": "LINEAR", + "output": 1462 + }, + { + "input": 1463, + "interpolation": "LINEAR", + "output": 1464 + }, + { + "input": 1465, + "interpolation": "LINEAR", + "output": 1466 + }, + { + "input": 1467, + "interpolation": "LINEAR", + "output": 1468 + }, + { + "input": 1469, + "interpolation": "LINEAR", + "output": 1470 + }, + { + "input": 1471, + "interpolation": "LINEAR", + "output": 1472 + }, + { + "input": 1473, + "interpolation": "LINEAR", + "output": 1474 + }, + { + "input": 1475, + "interpolation": "LINEAR", + "output": 1476 + }, + { + "input": 1477, + "interpolation": "LINEAR", + "output": 1478 + }, + { + "input": 1479, + "interpolation": "LINEAR", + "output": 1480 + }, + { + "input": 1481, + "interpolation": "LINEAR", + "output": 1482 + }, + { + "input": 1483, + "interpolation": "LINEAR", + "output": 1484 + }, + { + "input": 1485, + "interpolation": "LINEAR", + "output": 1486 + }, + { + "input": 1487, + "interpolation": "LINEAR", + "output": 1488 + }, + { + "input": 1489, + "interpolation": "LINEAR", + "output": 1490 + }, + { + "input": 1491, + "interpolation": "LINEAR", + "output": 1492 + }, + { + "input": 1493, + "interpolation": "LINEAR", + "output": 1494 + }, + { + "input": 1495, + "interpolation": "LINEAR", + "output": 1496 + }, + { + "input": 1497, + "interpolation": "LINEAR", + "output": 1498 + }, + { + "input": 1499, + "interpolation": "LINEAR", + "output": 1500 + }, + { + "input": 1501, + "interpolation": "LINEAR", + "output": 1502 + }, + { + "input": 1503, + "interpolation": "LINEAR", + "output": 1504 + }, + { + "input": 1505, + "interpolation": "LINEAR", + "output": 1506 + }, + { + "input": 1507, + "interpolation": "LINEAR", + "output": 1508 + }, + { + "input": 1509, + "interpolation": "LINEAR", + "output": 1510 + }, + { + "input": 1511, + "interpolation": "LINEAR", + "output": 1512 + }, + { + "input": 1513, + "interpolation": "LINEAR", + "output": 1514 + }, + { + "input": 1515, + "interpolation": "LINEAR", + "output": 1516 + }, + { + "input": 1517, + "interpolation": "LINEAR", + "output": 1518 + }, + { + "input": 1519, + "interpolation": "LINEAR", + "output": 1520 + }, + { + "input": 1521, + "interpolation": "LINEAR", + "output": 1522 + }, + { + "input": 1523, + "interpolation": "LINEAR", + "output": 1524 + }, + { + "input": 1525, + "interpolation": "LINEAR", + "output": 1526 + }, + { + "input": 1527, + "interpolation": "LINEAR", + "output": 1528 + }, + { + "input": 1529, + "interpolation": "LINEAR", + "output": 1530 + }, + { + "input": 1531, + "interpolation": "LINEAR", + "output": 1532 + }, + { + "input": 1533, + "interpolation": "LINEAR", + "output": 1534 + }, + { + "input": 1535, + "interpolation": "LINEAR", + "output": 1536 + }, + { + "input": 1537, + "interpolation": "LINEAR", + "output": 1538 + }, + { + "input": 1539, + "interpolation": "LINEAR", + "output": 1540 + }, + { + "input": 1541, + "interpolation": "LINEAR", + "output": 1542 + }, + { + "input": 1543, + "interpolation": "LINEAR", + "output": 1544 + }, + { + "input": 1545, + "interpolation": "LINEAR", + "output": 1546 + }, + { + "input": 1547, + "interpolation": "LINEAR", + "output": 1548 + }, + { + "input": 1549, + "interpolation": "LINEAR", + "output": 1550 + }, + { + "input": 1551, + "interpolation": "LINEAR", + "output": 1552 + }, + { + "input": 1553, + "interpolation": "LINEAR", + "output": 1554 + }, + { + "input": 1555, + "interpolation": "LINEAR", + "output": 1556 + }, + { + "input": 1557, + "interpolation": "LINEAR", + "output": 1558 + }, + { + "input": 1559, + "interpolation": "LINEAR", + "output": 1560 + }, + { + "input": 1561, + "interpolation": "LINEAR", + "output": 1562 + }, + { + "input": 1563, + "interpolation": "LINEAR", + "output": 1564 + }, + { + "input": 1565, + "interpolation": "LINEAR", + "output": 1566 + }, + { + "input": 1567, + "interpolation": "LINEAR", + "output": 1568 + }, + { + "input": 1569, + "interpolation": "LINEAR", + "output": 1570 + }, + { + "input": 1571, + "interpolation": "LINEAR", + "output": 1572 + }, + { + "input": 1573, + "interpolation": "LINEAR", + "output": 1574 + }, + { + "input": 1575, + "interpolation": "LINEAR", + "output": 1576 + }, + { + "input": 1577, + "interpolation": "LINEAR", + "output": 1578 + }, + { + "input": 1579, + "interpolation": "LINEAR", + "output": 1580 + }, + { + "input": 1581, + "interpolation": "LINEAR", + "output": 1582 + }, + { + "input": 1583, + "interpolation": "LINEAR", + "output": 1584 + }, + { + "input": 1585, + "interpolation": "LINEAR", + "output": 1586 + }, + { + "input": 1587, + "interpolation": "LINEAR", + "output": 1588 + }, + { + "input": 1589, + "interpolation": "LINEAR", + "output": 1590 + }, + { + "input": 1591, + "interpolation": "LINEAR", + "output": 1592 + }, + { + "input": 1593, + "interpolation": "LINEAR", + "output": 1594 + }, + { + "input": 1595, + "interpolation": "LINEAR", + "output": 1596 + }, + { + "input": 1597, + "interpolation": "LINEAR", + "output": 1598 + }, + { + "input": 1599, + "interpolation": "LINEAR", + "output": 1600 + }, + { + "input": 1601, + "interpolation": "LINEAR", + "output": 1602 + }, + { + "input": 1603, + "interpolation": "LINEAR", + "output": 1604 + }, + { + "input": 1605, + "interpolation": "LINEAR", + "output": 1606 + }, + { + "input": 1607, + "interpolation": "LINEAR", + "output": 1608 + }, + { + "input": 1609, + "interpolation": "LINEAR", + "output": 1610 + }, + { + "input": 1611, + "interpolation": "LINEAR", + "output": 1612 + }, + { + "input": 1613, + "interpolation": "LINEAR", + "output": 1614 + }, + { + "input": 1615, + "interpolation": "LINEAR", + "output": 1616 + }, + { + "input": 1617, + "interpolation": "LINEAR", + "output": 1618 + }, + { + "input": 1619, + "interpolation": "LINEAR", + "output": 1620 + }, + { + "input": 1621, + "interpolation": "LINEAR", + "output": 1622 + }, + { + "input": 1623, + "interpolation": "LINEAR", + "output": 1624 + }, + { + "input": 1625, + "interpolation": "LINEAR", + "output": 1626 + }, + { + "input": 1627, + "interpolation": "LINEAR", + "output": 1628 + }, + { + "input": 1629, + "interpolation": "LINEAR", + "output": 1630 + }, + { + "input": 1631, + "interpolation": "LINEAR", + "output": 1632 + }, + { + "input": 1633, + "interpolation": "LINEAR", + "output": 1634 + }, + { + "input": 1635, + "interpolation": "LINEAR", + "output": 1636 + }, + { + "input": 1637, + "interpolation": "LINEAR", + "output": 1638 + }, + { + "input": 1639, + "interpolation": "LINEAR", + "output": 1640 + }, + { + "input": 1641, + "interpolation": "LINEAR", + "output": 1642 + }, + { + "input": 1643, + "interpolation": "LINEAR", + "output": 1644 + }, + { + "input": 1645, + "interpolation": "LINEAR", + "output": 1646 + }, + { + "input": 1647, + "interpolation": "LINEAR", + "output": 1648 + }, + { + "input": 1649, + "interpolation": "LINEAR", + "output": 1650 + }, + { + "input": 1651, + "interpolation": "LINEAR", + "output": 1652 + }, + { + "input": 1653, + "interpolation": "LINEAR", + "output": 1654 + }, + { + "input": 1655, + "interpolation": "LINEAR", + "output": 1656 + }, + { + "input": 1657, + "interpolation": "LINEAR", + "output": 1658 + }, + { + "input": 1659, + "interpolation": "LINEAR", + "output": 1660 + }, + { + "input": 1661, + "interpolation": "LINEAR", + "output": 1662 + }, + { + "input": 1663, + "interpolation": "LINEAR", + "output": 1664 + }, + { + "input": 1665, + "interpolation": "LINEAR", + "output": 1666 + }, + { + "input": 1667, + "interpolation": "LINEAR", + "output": 1668 + }, + { + "input": 1669, + "interpolation": "LINEAR", + "output": 1670 + }, + { + "input": 1671, + "interpolation": "LINEAR", + "output": 1672 + }, + { + "input": 1673, + "interpolation": "LINEAR", + "output": 1674 + }, + { + "input": 1675, + "interpolation": "LINEAR", + "output": 1676 + }, + { + "input": 1677, + "interpolation": "LINEAR", + "output": 1678 + }, + { + "input": 1679, + "interpolation": "LINEAR", + "output": 1680 + }, + { + "input": 1681, + "interpolation": "LINEAR", + "output": 1682 + }, + { + "input": 1683, + "interpolation": "LINEAR", + "output": 1684 + }, + { + "input": 1685, + "interpolation": "LINEAR", + "output": 1686 + }, + { + "input": 1687, + "interpolation": "LINEAR", + "output": 1688 + }, + { + "input": 1689, + "interpolation": "LINEAR", + "output": 1690 + }, + { + "input": 1691, + "interpolation": "LINEAR", + "output": 1692 + }, + { + "input": 1693, + "interpolation": "LINEAR", + "output": 1694 + }, + { + "input": 1695, + "interpolation": "LINEAR", + "output": 1696 + }, + { + "input": 1697, + "interpolation": "LINEAR", + "output": 1698 + }, + { + "input": 1699, + "interpolation": "LINEAR", + "output": 1700 + }, + { + "input": 1701, + "interpolation": "LINEAR", + "output": 1702 + }, + { + "input": 1703, + "interpolation": "LINEAR", + "output": 1704 + }, + { + "input": 1705, + "interpolation": "LINEAR", + "output": 1706 + }, + { + "input": 1707, + "interpolation": "LINEAR", + "output": 1708 + }, + { + "input": 1709, + "interpolation": "LINEAR", + "output": 1710 + }, + { + "input": 1711, + "interpolation": "LINEAR", + "output": 1712 + }, + { + "input": 1713, + "interpolation": "LINEAR", + "output": 1714 + }, + { + "input": 1715, + "interpolation": "LINEAR", + "output": 1716 + }, + { + "input": 1717, + "interpolation": "LINEAR", + "output": 1718 + }, + { + "input": 1719, + "interpolation": "LINEAR", + "output": 1720 + }, + { + "input": 1721, + "interpolation": "LINEAR", + "output": 1722 + }, + { + "input": 1723, + "interpolation": "LINEAR", + "output": 1724 + }, + { + "input": 1725, + "interpolation": "LINEAR", + "output": 1726 + }, + { + "input": 1727, + "interpolation": "LINEAR", + "output": 1728 + }, + { + "input": 1729, + "interpolation": "LINEAR", + "output": 1730 + }, + { + "input": 1731, + "interpolation": "LINEAR", + "output": 1732 + }, + { + "input": 1733, + "interpolation": "LINEAR", + "output": 1734 + }, + { + "input": 1735, + "interpolation": "LINEAR", + "output": 1736 + }, + { + "input": 1737, + "interpolation": "LINEAR", + "output": 1738 + }, + { + "input": 1739, + "interpolation": "LINEAR", + "output": 1740 + }, + { + "input": 1741, + "interpolation": "LINEAR", + "output": 1742 + }, + { + "input": 1743, + "interpolation": "LINEAR", + "output": 1744 + }, + { + "input": 1745, + "interpolation": "LINEAR", + "output": 1746 + }, + { + "input": 1747, + "interpolation": "LINEAR", + "output": 1748 + }, + { + "input": 1749, + "interpolation": "LINEAR", + "output": 1750 + }, + { + "input": 1751, + "interpolation": "LINEAR", + "output": 1752 + }, + { + "input": 1753, + "interpolation": "LINEAR", + "output": 1754 + }, + { + "input": 1755, + "interpolation": "LINEAR", + "output": 1756 + }, + { + "input": 1757, + "interpolation": "LINEAR", + "output": 1758 + }, + { + "input": 1759, + "interpolation": "LINEAR", + "output": 1760 + }, + { + "input": 1761, + "interpolation": "LINEAR", + "output": 1762 + }, + { + "input": 1763, + "interpolation": "LINEAR", + "output": 1764 + }, + { + "input": 1765, + "interpolation": "LINEAR", + "output": 1766 + }, + { + "input": 1767, + "interpolation": "LINEAR", + "output": 1768 + }, + { + "input": 1769, + "interpolation": "LINEAR", + "output": 1770 + }, + { + "input": 1771, + "interpolation": "LINEAR", + "output": 1772 + }, + { + "input": 1773, + "interpolation": "LINEAR", + "output": 1774 + }, + { + "input": 1775, + "interpolation": "LINEAR", + "output": 1776 + }, + { + "input": 1777, + "interpolation": "LINEAR", + "output": 1778 + }, + { + "input": 1779, + "interpolation": "LINEAR", + "output": 1780 + }, + { + "input": 1781, + "interpolation": "LINEAR", + "output": 1782 + }, + { + "input": 1783, + "interpolation": "LINEAR", + "output": 1784 + }, + { + "input": 1785, + "interpolation": "LINEAR", + "output": 1786 + }, + { + "input": 1787, + "interpolation": "LINEAR", + "output": 1788 + }, + { + "input": 1789, + "interpolation": "LINEAR", + "output": 1790 + }, + { + "input": 1791, + "interpolation": "LINEAR", + "output": 1792 + }, + { + "input": 1793, + "interpolation": "LINEAR", + "output": 1794 + }, + { + "input": 1795, + "interpolation": "LINEAR", + "output": 1796 + }, + { + "input": 1797, + "interpolation": "LINEAR", + "output": 1798 + }, + { + "input": 1799, + "interpolation": "LINEAR", + "output": 1800 + }, + { + "input": 1801, + "interpolation": "LINEAR", + "output": 1802 + }, + { + "input": 1803, + "interpolation": "LINEAR", + "output": 1804 + }, + { + "input": 1805, + "interpolation": "LINEAR", + "output": 1806 + }, + { + "input": 1807, + "interpolation": "LINEAR", + "output": 1808 + }, + { + "input": 1809, + "interpolation": "LINEAR", + "output": 1810 + }, + { + "input": 1811, + "interpolation": "LINEAR", + "output": 1812 + }, + { + "input": 1813, + "interpolation": "LINEAR", + "output": 1814 + }, + { + "input": 1815, + "interpolation": "LINEAR", + "output": 1816 + }, + { + "input": 1817, + "interpolation": "LINEAR", + "output": 1818 + }, + { + "input": 1819, + "interpolation": "LINEAR", + "output": 1820 + }, + { + "input": 1821, + "interpolation": "LINEAR", + "output": 1822 + }, + { + "input": 1823, + "interpolation": "LINEAR", + "output": 1824 + }, + { + "input": 1825, + "interpolation": "LINEAR", + "output": 1826 + }, + { + "input": 1827, + "interpolation": "LINEAR", + "output": 1828 + }, + { + "input": 1829, + "interpolation": "LINEAR", + "output": 1830 + }, + { + "input": 1831, + "interpolation": "LINEAR", + "output": 1832 + }, + { + "input": 1833, + "interpolation": "LINEAR", + "output": 1834 + }, + { + "input": 1835, + "interpolation": "LINEAR", + "output": 1836 + }, + { + "input": 1837, + "interpolation": "LINEAR", + "output": 1838 + }, + { + "input": 1839, + "interpolation": "LINEAR", + "output": 1840 + }, + { + "input": 1841, + "interpolation": "LINEAR", + "output": 1842 + }, + { + "input": 1843, + "interpolation": "LINEAR", + "output": 1844 + }, + { + "input": 1845, + "interpolation": "LINEAR", + "output": 1846 + }, + { + "input": 1847, + "interpolation": "LINEAR", + "output": 1848 + }, + { + "input": 1849, + "interpolation": "LINEAR", + "output": 1850 + }, + { + "input": 1851, + "interpolation": "LINEAR", + "output": 1852 + }, + { + "input": 1853, + "interpolation": "LINEAR", + "output": 1854 + }, + { + "input": 1855, + "interpolation": "LINEAR", + "output": 1856 + }, + { + "input": 1857, + "interpolation": "LINEAR", + "output": 1858 + }, + { + "input": 1859, + "interpolation": "LINEAR", + "output": 1860 + }, + { + "input": 1861, + "interpolation": "LINEAR", + "output": 1862 + }, + { + "input": 1863, + "interpolation": "LINEAR", + "output": 1864 + }, + { + "input": 1865, + "interpolation": "LINEAR", + "output": 1866 + }, + { + "input": 1867, + "interpolation": "LINEAR", + "output": 1868 + }, + { + "input": 1869, + "interpolation": "LINEAR", + "output": 1870 + }, + { + "input": 1871, + "interpolation": "LINEAR", + "output": 1872 + }, + { + "input": 1873, + "interpolation": "LINEAR", + "output": 1874 + }, + { + "input": 1875, + "interpolation": "LINEAR", + "output": 1876 + }, + { + "input": 1877, + "interpolation": "LINEAR", + "output": 1878 + }, + { + "input": 1879, + "interpolation": "LINEAR", + "output": 1880 + }, + { + "input": 1881, + "interpolation": "LINEAR", + "output": 1882 + }, + { + "input": 1883, + "interpolation": "LINEAR", + "output": 1884 + }, + { + "input": 1885, + "interpolation": "LINEAR", + "output": 1886 + }, + { + "input": 1887, + "interpolation": "LINEAR", + "output": 1888 + }, + { + "input": 1889, + "interpolation": "LINEAR", + "output": 1890 + }, + { + "input": 1891, + "interpolation": "LINEAR", + "output": 1892 + }, + { + "input": 1893, + "interpolation": "LINEAR", + "output": 1894 + }, + { + "input": 1895, + "interpolation": "LINEAR", + "output": 1896 + }, + { + "input": 1897, + "interpolation": "LINEAR", + "output": 1898 + }, + { + "input": 1899, + "interpolation": "LINEAR", + "output": 1900 + }, + { + "input": 1901, + "interpolation": "LINEAR", + "output": 1902 + }, + { + "input": 1903, + "interpolation": "LINEAR", + "output": 1904 + }, + { + "input": 1905, + "interpolation": "LINEAR", + "output": 1906 + }, + { + "input": 1907, + "interpolation": "LINEAR", + "output": 1908 + }, + { + "input": 1909, + "interpolation": "LINEAR", + "output": 1910 + }, + { + "input": 1911, + "interpolation": "LINEAR", + "output": 1912 + }, + { + "input": 1913, + "interpolation": "LINEAR", + "output": 1914 + }, + { + "input": 1915, + "interpolation": "LINEAR", + "output": 1916 + }, + { + "input": 1917, + "interpolation": "LINEAR", + "output": 1918 + }, + { + "input": 1919, + "interpolation": "LINEAR", + "output": 1920 + }, + { + "input": 1921, + "interpolation": "LINEAR", + "output": 1922 + }, + { + "input": 1923, + "interpolation": "LINEAR", + "output": 1924 + }, + { + "input": 1925, + "interpolation": "LINEAR", + "output": 1926 + }, + { + "input": 1927, + "interpolation": "LINEAR", + "output": 1928 + }, + { + "input": 1929, + "interpolation": "LINEAR", + "output": 1930 + }, + { + "input": 1931, + "interpolation": "LINEAR", + "output": 1932 + }, + { + "input": 1933, + "interpolation": "LINEAR", + "output": 1934 + }, + { + "input": 1935, + "interpolation": "LINEAR", + "output": 1936 + }, + { + "input": 1937, + "interpolation": "LINEAR", + "output": 1938 + }, + { + "input": 1939, + "interpolation": "LINEAR", + "output": 1940 + }, + { + "input": 1941, + "interpolation": "LINEAR", + "output": 1942 + }, + { + "input": 1943, + "interpolation": "LINEAR", + "output": 1944 + }, + { + "input": 1945, + "interpolation": "LINEAR", + "output": 1946 + }, + { + "input": 1947, + "interpolation": "LINEAR", + "output": 1948 + }, + { + "input": 1949, + "interpolation": "LINEAR", + "output": 1950 + }, + { + "input": 1951, + "interpolation": "LINEAR", + "output": 1952 + }, + { + "input": 1953, + "interpolation": "LINEAR", + "output": 1954 + }, + { + "input": 1955, + "interpolation": "LINEAR", + "output": 1956 + }, + { + "input": 1957, + "interpolation": "LINEAR", + "output": 1958 + }, + { + "input": 1959, + "interpolation": "LINEAR", + "output": 1960 + }, + { + "input": 1961, + "interpolation": "LINEAR", + "output": 1962 + }, + { + "input": 1963, + "interpolation": "LINEAR", + "output": 1964 + }, + { + "input": 1965, + "interpolation": "LINEAR", + "output": 1966 + }, + { + "input": 1967, + "interpolation": "LINEAR", + "output": 1968 + }, + { + "input": 1969, + "interpolation": "LINEAR", + "output": 1970 + }, + { + "input": 1971, + "interpolation": "LINEAR", + "output": 1972 + }, + { + "input": 1973, + "interpolation": "LINEAR", + "output": 1974 + }, + { + "input": 1975, + "interpolation": "LINEAR", + "output": 1976 + }, + { + "input": 1977, + "interpolation": "LINEAR", + "output": 1978 + }, + { + "input": 1979, + "interpolation": "LINEAR", + "output": 1980 + }, + { + "input": 1981, + "interpolation": "LINEAR", + "output": 1982 + }, + { + "input": 1983, + "interpolation": "LINEAR", + "output": 1984 + }, + { + "input": 1985, + "interpolation": "LINEAR", + "output": 1986 + }, + { + "input": 1987, + "interpolation": "LINEAR", + "output": 1988 + }, + { + "input": 1989, + "interpolation": "LINEAR", + "output": 1990 + }, + { + "input": 1991, + "interpolation": "LINEAR", + "output": 1992 + }, + { + "input": 1993, + "interpolation": "LINEAR", + "output": 1994 + }, + { + "input": 1995, + "interpolation": "LINEAR", + "output": 1996 + }, + { + "input": 1997, + "interpolation": "LINEAR", + "output": 1998 + }, + { + "input": 1999, + "interpolation": "LINEAR", + "output": 2000 + }, + { + "input": 2001, + "interpolation": "LINEAR", + "output": 2002 + }, + { + "input": 2003, + "interpolation": "LINEAR", + "output": 2004 + }, + { + "input": 2005, + "interpolation": "LINEAR", + "output": 2006 + }, + { + "input": 2007, + "interpolation": "LINEAR", + "output": 2008 + }, + { + "input": 2009, + "interpolation": "LINEAR", + "output": 2010 + }, + { + "input": 2011, + "interpolation": "LINEAR", + "output": 2012 + }, + { + "input": 2013, + "interpolation": "LINEAR", + "output": 2014 + }, + { + "input": 2015, + "interpolation": "LINEAR", + "output": 2016 + }, + { + "input": 2017, + "interpolation": "LINEAR", + "output": 2018 + }, + { + "input": 2019, + "interpolation": "LINEAR", + "output": 2020 + }, + { + "input": 2021, + "interpolation": "LINEAR", + "output": 2022 + }, + { + "input": 2023, + "interpolation": "LINEAR", + "output": 2024 + }, + { + "input": 2025, + "interpolation": "LINEAR", + "output": 2026 + }, + { + "input": 2027, + "interpolation": "LINEAR", + "output": 2028 + }, + { + "input": 2029, + "interpolation": "LINEAR", + "output": 2030 + }, + { + "input": 2031, + "interpolation": "LINEAR", + "output": 2032 + }, + { + "input": 2033, + "interpolation": "LINEAR", + "output": 2034 + }, + { + "input": 2035, + "interpolation": "LINEAR", + "output": 2036 + }, + { + "input": 2037, + "interpolation": "LINEAR", + "output": 2038 + }, + { + "input": 2039, + "interpolation": "LINEAR", + "output": 2040 + }, + { + "input": 2041, + "interpolation": "LINEAR", + "output": 2042 + }, + { + "input": 2043, + "interpolation": "LINEAR", + "output": 2044 + }, + { + "input": 2045, + "interpolation": "LINEAR", + "output": 2046 + }, + { + "input": 2047, + "interpolation": "LINEAR", + "output": 2048 + }, + { + "input": 2049, + "interpolation": "LINEAR", + "output": 2050 + }, + { + "input": 2051, + "interpolation": "LINEAR", + "output": 2052 + }, + { + "input": 2053, + "interpolation": "LINEAR", + "output": 2054 + }, + { + "input": 2055, + "interpolation": "LINEAR", + "output": 2056 + }, + { + "input": 2057, + "interpolation": "LINEAR", + "output": 2058 + }, + { + "input": 2059, + "interpolation": "LINEAR", + "output": 2060 + }, + { + "input": 2061, + "interpolation": "LINEAR", + "output": 2062 + }, + { + "input": 2063, + "interpolation": "LINEAR", + "output": 2064 + }, + { + "input": 2065, + "interpolation": "LINEAR", + "output": 2066 + }, + { + "input": 2067, + "interpolation": "LINEAR", + "output": 2068 + }, + { + "input": 2069, + "interpolation": "LINEAR", + "output": 2070 + }, + { + "input": 2071, + "interpolation": "LINEAR", + "output": 2072 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Hyper beam", + "samplers": [ + { + "input": 2073, + "interpolation": "LINEAR", + "output": 2074 + }, + { + "input": 2075, + "interpolation": "LINEAR", + "output": 2076 + }, + { + "input": 2077, + "interpolation": "LINEAR", + "output": 2078 + }, + { + "input": 2079, + "interpolation": "LINEAR", + "output": 2080 + }, + { + "input": 2081, + "interpolation": "LINEAR", + "output": 2082 + }, + { + "input": 2083, + "interpolation": "LINEAR", + "output": 2084 + }, + { + "input": 2085, + "interpolation": "LINEAR", + "output": 2086 + }, + { + "input": 2087, + "interpolation": "LINEAR", + "output": 2088 + }, + { + "input": 2089, + "interpolation": "LINEAR", + "output": 2090 + }, + { + "input": 2091, + "interpolation": "LINEAR", + "output": 2092 + }, + { + "input": 2093, + "interpolation": "LINEAR", + "output": 2094 + }, + { + "input": 2095, + "interpolation": "LINEAR", + "output": 2096 + }, + { + "input": 2097, + "interpolation": "LINEAR", + "output": 2098 + }, + { + "input": 2099, + "interpolation": "LINEAR", + "output": 2100 + }, + { + "input": 2101, + "interpolation": "LINEAR", + "output": 2102 + }, + { + "input": 2103, + "interpolation": "LINEAR", + "output": 2104 + }, + { + "input": 2105, + "interpolation": "LINEAR", + "output": 2106 + }, + { + "input": 2107, + "interpolation": "LINEAR", + "output": 2108 + }, + { + "input": 2109, + "interpolation": "LINEAR", + "output": 2110 + }, + { + "input": 2111, + "interpolation": "LINEAR", + "output": 2112 + }, + { + "input": 2113, + "interpolation": "LINEAR", + "output": 2114 + }, + { + "input": 2115, + "interpolation": "LINEAR", + "output": 2116 + }, + { + "input": 2117, + "interpolation": "LINEAR", + "output": 2118 + }, + { + "input": 2119, + "interpolation": "LINEAR", + "output": 2120 + }, + { + "input": 2121, + "interpolation": "LINEAR", + "output": 2122 + }, + { + "input": 2123, + "interpolation": "LINEAR", + "output": 2124 + }, + { + "input": 2125, + "interpolation": "LINEAR", + "output": 2126 + }, + { + "input": 2127, + "interpolation": "LINEAR", + "output": 2128 + }, + { + "input": 2129, + "interpolation": "LINEAR", + "output": 2130 + }, + { + "input": 2131, + "interpolation": "LINEAR", + "output": 2132 + }, + { + "input": 2133, + "interpolation": "LINEAR", + "output": 2134 + }, + { + "input": 2135, + "interpolation": "LINEAR", + "output": 2136 + }, + { + "input": 2137, + "interpolation": "LINEAR", + "output": 2138 + }, + { + "input": 2139, + "interpolation": "LINEAR", + "output": 2140 + }, + { + "input": 2141, + "interpolation": "LINEAR", + "output": 2142 + }, + { + "input": 2143, + "interpolation": "LINEAR", + "output": 2144 + }, + { + "input": 2145, + "interpolation": "LINEAR", + "output": 2146 + }, + { + "input": 2147, + "interpolation": "LINEAR", + "output": 2148 + }, + { + "input": 2149, + "interpolation": "LINEAR", + "output": 2150 + }, + { + "input": 2151, + "interpolation": "LINEAR", + "output": 2152 + }, + { + "input": 2153, + "interpolation": "LINEAR", + "output": 2154 + }, + { + "input": 2155, + "interpolation": "LINEAR", + "output": 2156 + }, + { + "input": 2157, + "interpolation": "LINEAR", + "output": 2158 + }, + { + "input": 2159, + "interpolation": "LINEAR", + "output": 2160 + }, + { + "input": 2161, + "interpolation": "LINEAR", + "output": 2162 + }, + { + "input": 2163, + "interpolation": "LINEAR", + "output": 2164 + }, + { + "input": 2165, + "interpolation": "LINEAR", + "output": 2166 + }, + { + "input": 2167, + "interpolation": "LINEAR", + "output": 2168 + }, + { + "input": 2169, + "interpolation": "LINEAR", + "output": 2170 + }, + { + "input": 2171, + "interpolation": "LINEAR", + "output": 2172 + }, + { + "input": 2173, + "interpolation": "LINEAR", + "output": 2174 + }, + { + "input": 2175, + "interpolation": "LINEAR", + "output": 2176 + }, + { + "input": 2177, + "interpolation": "LINEAR", + "output": 2178 + }, + { + "input": 2179, + "interpolation": "LINEAR", + "output": 2180 + }, + { + "input": 2181, + "interpolation": "LINEAR", + "output": 2182 + }, + { + "input": 2183, + "interpolation": "LINEAR", + "output": 2184 + }, + { + "input": 2185, + "interpolation": "LINEAR", + "output": 2186 + }, + { + "input": 2187, + "interpolation": "LINEAR", + "output": 2188 + }, + { + "input": 2189, + "interpolation": "LINEAR", + "output": 2190 + }, + { + "input": 2191, + "interpolation": "LINEAR", + "output": 2192 + }, + { + "input": 2193, + "interpolation": "LINEAR", + "output": 2194 + }, + { + "input": 2195, + "interpolation": "LINEAR", + "output": 2196 + }, + { + "input": 2197, + "interpolation": "LINEAR", + "output": 2198 + }, + { + "input": 2199, + "interpolation": "LINEAR", + "output": 2200 + }, + { + "input": 2201, + "interpolation": "LINEAR", + "output": 2202 + }, + { + "input": 2203, + "interpolation": "LINEAR", + "output": 2204 + }, + { + "input": 2205, + "interpolation": "LINEAR", + "output": 2206 + }, + { + "input": 2207, + "interpolation": "LINEAR", + "output": 2208 + }, + { + "input": 2209, + "interpolation": "LINEAR", + "output": 2210 + }, + { + "input": 2211, + "interpolation": "LINEAR", + "output": 2212 + }, + { + "input": 2213, + "interpolation": "LINEAR", + "output": 2214 + }, + { + "input": 2215, + "interpolation": "LINEAR", + "output": 2216 + }, + { + "input": 2217, + "interpolation": "LINEAR", + "output": 2218 + }, + { + "input": 2219, + "interpolation": "LINEAR", + "output": 2220 + }, + { + "input": 2221, + "interpolation": "LINEAR", + "output": 2222 + }, + { + "input": 2223, + "interpolation": "LINEAR", + "output": 2224 + }, + { + "input": 2225, + "interpolation": "LINEAR", + "output": 2226 + }, + { + "input": 2227, + "interpolation": "LINEAR", + "output": 2228 + }, + { + "input": 2229, + "interpolation": "LINEAR", + "output": 2230 + }, + { + "input": 2231, + "interpolation": "LINEAR", + "output": 2232 + }, + { + "input": 2233, + "interpolation": "LINEAR", + "output": 2234 + }, + { + "input": 2235, + "interpolation": "LINEAR", + "output": 2236 + }, + { + "input": 2237, + "interpolation": "LINEAR", + "output": 2238 + }, + { + "input": 2239, + "interpolation": "LINEAR", + "output": 2240 + }, + { + "input": 2241, + "interpolation": "LINEAR", + "output": 2242 + }, + { + "input": 2243, + "interpolation": "LINEAR", + "output": 2244 + }, + { + "input": 2245, + "interpolation": "LINEAR", + "output": 2246 + }, + { + "input": 2247, + "interpolation": "LINEAR", + "output": 2248 + }, + { + "input": 2249, + "interpolation": "LINEAR", + "output": 2250 + }, + { + "input": 2251, + "interpolation": "LINEAR", + "output": 2252 + }, + { + "input": 2253, + "interpolation": "LINEAR", + "output": 2254 + }, + { + "input": 2255, + "interpolation": "LINEAR", + "output": 2256 + }, + { + "input": 2257, + "interpolation": "LINEAR", + "output": 2258 + }, + { + "input": 2259, + "interpolation": "LINEAR", + "output": 2260 + }, + { + "input": 2261, + "interpolation": "LINEAR", + "output": 2262 + }, + { + "input": 2263, + "interpolation": "LINEAR", + "output": 2264 + }, + { + "input": 2265, + "interpolation": "LINEAR", + "output": 2266 + }, + { + "input": 2267, + "interpolation": "LINEAR", + "output": 2268 + }, + { + "input": 2269, + "interpolation": "LINEAR", + "output": 2270 + }, + { + "input": 2271, + "interpolation": "LINEAR", + "output": 2272 + }, + { + "input": 2273, + "interpolation": "LINEAR", + "output": 2274 + }, + { + "input": 2275, + "interpolation": "LINEAR", + "output": 2276 + }, + { + "input": 2277, + "interpolation": "LINEAR", + "output": 2278 + }, + { + "input": 2279, + "interpolation": "LINEAR", + "output": 2280 + }, + { + "input": 2281, + "interpolation": "LINEAR", + "output": 2282 + }, + { + "input": 2283, + "interpolation": "LINEAR", + "output": 2284 + }, + { + "input": 2285, + "interpolation": "LINEAR", + "output": 2286 + }, + { + "input": 2287, + "interpolation": "LINEAR", + "output": 2288 + }, + { + "input": 2289, + "interpolation": "LINEAR", + "output": 2290 + }, + { + "input": 2291, + "interpolation": "LINEAR", + "output": 2292 + }, + { + "input": 2293, + "interpolation": "LINEAR", + "output": 2294 + }, + { + "input": 2295, + "interpolation": "LINEAR", + "output": 2296 + }, + { + "input": 2297, + "interpolation": "LINEAR", + "output": 2298 + }, + { + "input": 2299, + "interpolation": "LINEAR", + "output": 2300 + }, + { + "input": 2301, + "interpolation": "LINEAR", + "output": 2302 + }, + { + "input": 2303, + "interpolation": "LINEAR", + "output": 2304 + }, + { + "input": 2305, + "interpolation": "LINEAR", + "output": 2306 + }, + { + "input": 2307, + "interpolation": "LINEAR", + "output": 2308 + }, + { + "input": 2309, + "interpolation": "LINEAR", + "output": 2310 + }, + { + "input": 2311, + "interpolation": "LINEAR", + "output": 2312 + }, + { + "input": 2313, + "interpolation": "LINEAR", + "output": 2314 + }, + { + "input": 2315, + "interpolation": "LINEAR", + "output": 2316 + }, + { + "input": 2317, + "interpolation": "LINEAR", + "output": 2318 + }, + { + "input": 2319, + "interpolation": "LINEAR", + "output": 2320 + }, + { + "input": 2321, + "interpolation": "LINEAR", + "output": 2322 + }, + { + "input": 2323, + "interpolation": "LINEAR", + "output": 2324 + }, + { + "input": 2325, + "interpolation": "LINEAR", + "output": 2326 + }, + { + "input": 2327, + "interpolation": "LINEAR", + "output": 2328 + }, + { + "input": 2329, + "interpolation": "LINEAR", + "output": 2330 + }, + { + "input": 2331, + "interpolation": "LINEAR", + "output": 2332 + }, + { + "input": 2333, + "interpolation": "LINEAR", + "output": 2334 + }, + { + "input": 2335, + "interpolation": "LINEAR", + "output": 2336 + }, + { + "input": 2337, + "interpolation": "LINEAR", + "output": 2338 + }, + { + "input": 2339, + "interpolation": "LINEAR", + "output": 2340 + }, + { + "input": 2341, + "interpolation": "LINEAR", + "output": 2342 + }, + { + "input": 2343, + "interpolation": "LINEAR", + "output": 2344 + }, + { + "input": 2345, + "interpolation": "LINEAR", + "output": 2346 + }, + { + "input": 2347, + "interpolation": "LINEAR", + "output": 2348 + }, + { + "input": 2349, + "interpolation": "LINEAR", + "output": 2350 + }, + { + "input": 2351, + "interpolation": "LINEAR", + "output": 2352 + }, + { + "input": 2353, + "interpolation": "LINEAR", + "output": 2354 + }, + { + "input": 2355, + "interpolation": "LINEAR", + "output": 2356 + }, + { + "input": 2357, + "interpolation": "LINEAR", + "output": 2358 + }, + { + "input": 2359, + "interpolation": "LINEAR", + "output": 2360 + }, + { + "input": 2361, + "interpolation": "LINEAR", + "output": 2362 + }, + { + "input": 2363, + "interpolation": "LINEAR", + "output": 2364 + }, + { + "input": 2365, + "interpolation": "LINEAR", + "output": 2366 + }, + { + "input": 2367, + "interpolation": "LINEAR", + "output": 2368 + }, + { + "input": 2369, + "interpolation": "LINEAR", + "output": 2370 + }, + { + "input": 2371, + "interpolation": "LINEAR", + "output": 2372 + }, + { + "input": 2373, + "interpolation": "LINEAR", + "output": 2374 + }, + { + "input": 2375, + "interpolation": "LINEAR", + "output": 2376 + }, + { + "input": 2377, + "interpolation": "LINEAR", + "output": 2378 + }, + { + "input": 2379, + "interpolation": "LINEAR", + "output": 2380 + }, + { + "input": 2381, + "interpolation": "LINEAR", + "output": 2382 + }, + { + "input": 2383, + "interpolation": "LINEAR", + "output": 2384 + }, + { + "input": 2385, + "interpolation": "LINEAR", + "output": 2386 + }, + { + "input": 2387, + "interpolation": "LINEAR", + "output": 2388 + }, + { + "input": 2389, + "interpolation": "LINEAR", + "output": 2390 + }, + { + "input": 2391, + "interpolation": "LINEAR", + "output": 2392 + }, + { + "input": 2393, + "interpolation": "LINEAR", + "output": 2394 + }, + { + "input": 2395, + "interpolation": "LINEAR", + "output": 2396 + }, + { + "input": 2397, + "interpolation": "LINEAR", + "output": 2398 + }, + { + "input": 2399, + "interpolation": "LINEAR", + "output": 2400 + }, + { + "input": 2401, + "interpolation": "LINEAR", + "output": 2402 + }, + { + "input": 2403, + "interpolation": "LINEAR", + "output": 2404 + }, + { + "input": 2405, + "interpolation": "LINEAR", + "output": 2406 + }, + { + "input": 2407, + "interpolation": "LINEAR", + "output": 2408 + }, + { + "input": 2409, + "interpolation": "LINEAR", + "output": 2410 + }, + { + "input": 2411, + "interpolation": "LINEAR", + "output": 2412 + }, + { + "input": 2413, + "interpolation": "LINEAR", + "output": 2414 + }, + { + "input": 2415, + "interpolation": "LINEAR", + "output": 2416 + }, + { + "input": 2417, + "interpolation": "LINEAR", + "output": 2418 + }, + { + "input": 2419, + "interpolation": "LINEAR", + "output": 2420 + }, + { + "input": 2421, + "interpolation": "LINEAR", + "output": 2422 + }, + { + "input": 2423, + "interpolation": "LINEAR", + "output": 2424 + }, + { + "input": 2425, + "interpolation": "LINEAR", + "output": 2426 + }, + { + "input": 2427, + "interpolation": "LINEAR", + "output": 2428 + }, + { + "input": 2429, + "interpolation": "LINEAR", + "output": 2430 + }, + { + "input": 2431, + "interpolation": "LINEAR", + "output": 2432 + }, + { + "input": 2433, + "interpolation": "LINEAR", + "output": 2434 + }, + { + "input": 2435, + "interpolation": "LINEAR", + "output": 2436 + }, + { + "input": 2437, + "interpolation": "LINEAR", + "output": 2438 + }, + { + "input": 2439, + "interpolation": "LINEAR", + "output": 2440 + }, + { + "input": 2441, + "interpolation": "LINEAR", + "output": 2442 + }, + { + "input": 2443, + "interpolation": "LINEAR", + "output": 2444 + }, + { + "input": 2445, + "interpolation": "LINEAR", + "output": 2446 + }, + { + "input": 2447, + "interpolation": "LINEAR", + "output": 2448 + }, + { + "input": 2449, + "interpolation": "LINEAR", + "output": 2450 + }, + { + "input": 2451, + "interpolation": "LINEAR", + "output": 2452 + }, + { + "input": 2453, + "interpolation": "LINEAR", + "output": 2454 + }, + { + "input": 2455, + "interpolation": "LINEAR", + "output": 2456 + }, + { + "input": 2457, + "interpolation": "LINEAR", + "output": 2458 + }, + { + "input": 2459, + "interpolation": "LINEAR", + "output": 2460 + }, + { + "input": 2461, + "interpolation": "LINEAR", + "output": 2462 + }, + { + "input": 2463, + "interpolation": "LINEAR", + "output": 2464 + }, + { + "input": 2465, + "interpolation": "LINEAR", + "output": 2466 + }, + { + "input": 2467, + "interpolation": "LINEAR", + "output": 2468 + }, + { + "input": 2469, + "interpolation": "LINEAR", + "output": 2470 + }, + { + "input": 2471, + "interpolation": "LINEAR", + "output": 2472 + }, + { + "input": 2473, + "interpolation": "LINEAR", + "output": 2474 + }, + { + "input": 2475, + "interpolation": "LINEAR", + "output": 2476 + }, + { + "input": 2477, + "interpolation": "LINEAR", + "output": 2478 + }, + { + "input": 2479, + "interpolation": "LINEAR", + "output": 2480 + }, + { + "input": 2481, + "interpolation": "LINEAR", + "output": 2482 + }, + { + "input": 2483, + "interpolation": "LINEAR", + "output": 2484 + }, + { + "input": 2485, + "interpolation": "LINEAR", + "output": 2486 + }, + { + "input": 2487, + "interpolation": "LINEAR", + "output": 2488 + }, + { + "input": 2489, + "interpolation": "LINEAR", + "output": 2490 + }, + { + "input": 2491, + "interpolation": "LINEAR", + "output": 2492 + }, + { + "input": 2493, + "interpolation": "LINEAR", + "output": 2494 + }, + { + "input": 2495, + "interpolation": "LINEAR", + "output": 2496 + }, + { + "input": 2497, + "interpolation": "LINEAR", + "output": 2498 + }, + { + "input": 2499, + "interpolation": "LINEAR", + "output": 2500 + }, + { + "input": 2501, + "interpolation": "LINEAR", + "output": 2502 + }, + { + "input": 2503, + "interpolation": "LINEAR", + "output": 2504 + }, + { + "input": 2505, + "interpolation": "LINEAR", + "output": 2506 + }, + { + "input": 2507, + "interpolation": "LINEAR", + "output": 2508 + }, + { + "input": 2509, + "interpolation": "LINEAR", + "output": 2510 + }, + { + "input": 2511, + "interpolation": "LINEAR", + "output": 2512 + }, + { + "input": 2513, + "interpolation": "LINEAR", + "output": 2514 + }, + { + "input": 2515, + "interpolation": "LINEAR", + "output": 2516 + }, + { + "input": 2517, + "interpolation": "LINEAR", + "output": 2518 + }, + { + "input": 2519, + "interpolation": "LINEAR", + "output": 2520 + }, + { + "input": 2521, + "interpolation": "LINEAR", + "output": 2522 + }, + { + "input": 2523, + "interpolation": "LINEAR", + "output": 2524 + }, + { + "input": 2525, + "interpolation": "LINEAR", + "output": 2526 + }, + { + "input": 2527, + "interpolation": "LINEAR", + "output": 2528 + }, + { + "input": 2529, + "interpolation": "LINEAR", + "output": 2530 + }, + { + "input": 2531, + "interpolation": "LINEAR", + "output": 2532 + }, + { + "input": 2533, + "interpolation": "LINEAR", + "output": 2534 + }, + { + "input": 2535, + "interpolation": "LINEAR", + "output": 2536 + }, + { + "input": 2537, + "interpolation": "LINEAR", + "output": 2538 + }, + { + "input": 2539, + "interpolation": "LINEAR", + "output": 2540 + }, + { + "input": 2541, + "interpolation": "LINEAR", + "output": 2542 + }, + { + "input": 2543, + "interpolation": "LINEAR", + "output": 2544 + }, + { + "input": 2545, + "interpolation": "LINEAR", + "output": 2546 + }, + { + "input": 2547, + "interpolation": "LINEAR", + "output": 2548 + }, + { + "input": 2549, + "interpolation": "LINEAR", + "output": 2550 + }, + { + "input": 2551, + "interpolation": "LINEAR", + "output": 2552 + }, + { + "input": 2553, + "interpolation": "LINEAR", + "output": 2554 + }, + { + "input": 2555, + "interpolation": "LINEAR", + "output": 2556 + }, + { + "input": 2557, + "interpolation": "LINEAR", + "output": 2558 + }, + { + "input": 2559, + "interpolation": "LINEAR", + "output": 2560 + }, + { + "input": 2561, + "interpolation": "LINEAR", + "output": 2562 + }, + { + "input": 2563, + "interpolation": "LINEAR", + "output": 2564 + }, + { + "input": 2565, + "interpolation": "LINEAR", + "output": 2566 + }, + { + "input": 2567, + "interpolation": "LINEAR", + "output": 2568 + }, + { + "input": 2569, + "interpolation": "LINEAR", + "output": 2570 + }, + { + "input": 2571, + "interpolation": "LINEAR", + "output": 2572 + }, + { + "input": 2573, + "interpolation": "LINEAR", + "output": 2574 + }, + { + "input": 2575, + "interpolation": "LINEAR", + "output": 2576 + }, + { + "input": 2577, + "interpolation": "LINEAR", + "output": 2578 + }, + { + "input": 2579, + "interpolation": "LINEAR", + "output": 2580 + }, + { + "input": 2581, + "interpolation": "LINEAR", + "output": 2582 + }, + { + "input": 2583, + "interpolation": "LINEAR", + "output": 2584 + }, + { + "input": 2585, + "interpolation": "LINEAR", + "output": 2586 + }, + { + "input": 2587, + "interpolation": "LINEAR", + "output": 2588 + }, + { + "input": 2589, + "interpolation": "LINEAR", + "output": 2590 + }, + { + "input": 2591, + "interpolation": "LINEAR", + "output": 2592 + }, + { + "input": 2593, + "interpolation": "LINEAR", + "output": 2594 + }, + { + "input": 2595, + "interpolation": "LINEAR", + "output": 2596 + }, + { + "input": 2597, + "interpolation": "LINEAR", + "output": 2598 + }, + { + "input": 2599, + "interpolation": "LINEAR", + "output": 2600 + }, + { + "input": 2601, + "interpolation": "LINEAR", + "output": 2602 + }, + { + "input": 2603, + "interpolation": "LINEAR", + "output": 2604 + }, + { + "input": 2605, + "interpolation": "LINEAR", + "output": 2606 + }, + { + "input": 2607, + "interpolation": "LINEAR", + "output": 2608 + }, + { + "input": 2609, + "interpolation": "LINEAR", + "output": 2610 + }, + { + "input": 2611, + "interpolation": "LINEAR", + "output": 2612 + }, + { + "input": 2613, + "interpolation": "LINEAR", + "output": 2614 + }, + { + "input": 2615, + "interpolation": "LINEAR", + "output": 2616 + }, + { + "input": 2617, + "interpolation": "LINEAR", + "output": 2618 + }, + { + "input": 2619, + "interpolation": "LINEAR", + "output": 2620 + }, + { + "input": 2621, + "interpolation": "LINEAR", + "output": 2622 + }, + { + "input": 2623, + "interpolation": "LINEAR", + "output": 2624 + }, + { + "input": 2625, + "interpolation": "LINEAR", + "output": 2626 + }, + { + "input": 2627, + "interpolation": "LINEAR", + "output": 2628 + }, + { + "input": 2629, + "interpolation": "LINEAR", + "output": 2630 + }, + { + "input": 2631, + "interpolation": "LINEAR", + "output": 2632 + }, + { + "input": 2633, + "interpolation": "LINEAR", + "output": 2634 + }, + { + "input": 2635, + "interpolation": "LINEAR", + "output": 2636 + }, + { + "input": 2637, + "interpolation": "LINEAR", + "output": 2638 + }, + { + "input": 2639, + "interpolation": "LINEAR", + "output": 2640 + }, + { + "input": 2641, + "interpolation": "LINEAR", + "output": 2642 + }, + { + "input": 2643, + "interpolation": "LINEAR", + "output": 2644 + }, + { + "input": 2645, + "interpolation": "LINEAR", + "output": 2646 + }, + { + "input": 2647, + "interpolation": "LINEAR", + "output": 2648 + }, + { + "input": 2649, + "interpolation": "LINEAR", + "output": 2650 + }, + { + "input": 2651, + "interpolation": "LINEAR", + "output": 2652 + }, + { + "input": 2653, + "interpolation": "LINEAR", + "output": 2654 + }, + { + "input": 2655, + "interpolation": "LINEAR", + "output": 2656 + }, + { + "input": 2657, + "interpolation": "LINEAR", + "output": 2658 + }, + { + "input": 2659, + "interpolation": "LINEAR", + "output": 2660 + }, + { + "input": 2661, + "interpolation": "LINEAR", + "output": 2662 + }, + { + "input": 2663, + "interpolation": "LINEAR", + "output": 2664 + }, + { + "input": 2665, + "interpolation": "LINEAR", + "output": 2666 + }, + { + "input": 2667, + "interpolation": "LINEAR", + "output": 2668 + }, + { + "input": 2669, + "interpolation": "LINEAR", + "output": 2670 + }, + { + "input": 2671, + "interpolation": "LINEAR", + "output": 2672 + }, + { + "input": 2673, + "interpolation": "LINEAR", + "output": 2674 + }, + { + "input": 2675, + "interpolation": "LINEAR", + "output": 2676 + }, + { + "input": 2677, + "interpolation": "LINEAR", + "output": 2678 + }, + { + "input": 2679, + "interpolation": "LINEAR", + "output": 2680 + }, + { + "input": 2681, + "interpolation": "LINEAR", + "output": 2682 + }, + { + "input": 2683, + "interpolation": "LINEAR", + "output": 2684 + }, + { + "input": 2685, + "interpolation": "LINEAR", + "output": 2686 + }, + { + "input": 2687, + "interpolation": "LINEAR", + "output": 2688 + }, + { + "input": 2689, + "interpolation": "LINEAR", + "output": 2690 + }, + { + "input": 2691, + "interpolation": "LINEAR", + "output": 2692 + }, + { + "input": 2693, + "interpolation": "LINEAR", + "output": 2694 + }, + { + "input": 2695, + "interpolation": "LINEAR", + "output": 2696 + }, + { + "input": 2697, + "interpolation": "LINEAR", + "output": 2698 + }, + { + "input": 2699, + "interpolation": "LINEAR", + "output": 2700 + }, + { + "input": 2701, + "interpolation": "LINEAR", + "output": 2702 + }, + { + "input": 2703, + "interpolation": "LINEAR", + "output": 2704 + }, + { + "input": 2705, + "interpolation": "LINEAR", + "output": 2706 + }, + { + "input": 2707, + "interpolation": "LINEAR", + "output": 2708 + }, + { + "input": 2709, + "interpolation": "LINEAR", + "output": 2710 + }, + { + "input": 2711, + "interpolation": "LINEAR", + "output": 2712 + }, + { + "input": 2713, + "interpolation": "LINEAR", + "output": 2714 + }, + { + "input": 2715, + "interpolation": "LINEAR", + "output": 2716 + }, + { + "input": 2717, + "interpolation": "LINEAR", + "output": 2718 + }, + { + "input": 2719, + "interpolation": "LINEAR", + "output": 2720 + }, + { + "input": 2721, + "interpolation": "LINEAR", + "output": 2722 + }, + { + "input": 2723, + "interpolation": "LINEAR", + "output": 2724 + }, + { + "input": 2725, + "interpolation": "LINEAR", + "output": 2726 + }, + { + "input": 2727, + "interpolation": "LINEAR", + "output": 2728 + }, + { + "input": 2729, + "interpolation": "LINEAR", + "output": 2730 + }, + { + "input": 2731, + "interpolation": "LINEAR", + "output": 2732 + }, + { + "input": 2733, + "interpolation": "LINEAR", + "output": 2734 + }, + { + "input": 2735, + "interpolation": "LINEAR", + "output": 2736 + }, + { + "input": 2737, + "interpolation": "LINEAR", + "output": 2738 + }, + { + "input": 2739, + "interpolation": "LINEAR", + "output": 2740 + }, + { + "input": 2741, + "interpolation": "LINEAR", + "output": 2742 + }, + { + "input": 2743, + "interpolation": "LINEAR", + "output": 2744 + }, + { + "input": 2745, + "interpolation": "LINEAR", + "output": 2746 + }, + { + "input": 2747, + "interpolation": "LINEAR", + "output": 2748 + }, + { + "input": 2749, + "interpolation": "LINEAR", + "output": 2750 + }, + { + "input": 2751, + "interpolation": "LINEAR", + "output": 2752 + }, + { + "input": 2753, + "interpolation": "LINEAR", + "output": 2754 + }, + { + "input": 2755, + "interpolation": "LINEAR", + "output": 2756 + }, + { + "input": 2757, + "interpolation": "LINEAR", + "output": 2758 + }, + { + "input": 2759, + "interpolation": "LINEAR", + "output": 2760 + }, + { + "input": 2761, + "interpolation": "LINEAR", + "output": 2762 + }, + { + "input": 2763, + "interpolation": "LINEAR", + "output": 2764 + }, + { + "input": 2765, + "interpolation": "LINEAR", + "output": 2766 + }, + { + "input": 2767, + "interpolation": "LINEAR", + "output": 2768 + }, + { + "input": 2769, + "interpolation": "LINEAR", + "output": 2770 + }, + { + "input": 2771, + "interpolation": "LINEAR", + "output": 2772 + }, + { + "input": 2773, + "interpolation": "LINEAR", + "output": 2774 + }, + { + "input": 2775, + "interpolation": "LINEAR", + "output": 2776 + }, + { + "input": 2777, + "interpolation": "LINEAR", + "output": 2778 + }, + { + "input": 2779, + "interpolation": "LINEAR", + "output": 2780 + }, + { + "input": 2781, + "interpolation": "LINEAR", + "output": 2782 + }, + { + "input": 2783, + "interpolation": "LINEAR", + "output": 2784 + }, + { + "input": 2785, + "interpolation": "LINEAR", + "output": 2786 + }, + { + "input": 2787, + "interpolation": "LINEAR", + "output": 2788 + }, + { + "input": 2789, + "interpolation": "LINEAR", + "output": 2790 + }, + { + "input": 2791, + "interpolation": "LINEAR", + "output": 2792 + }, + { + "input": 2793, + "interpolation": "LINEAR", + "output": 2794 + }, + { + "input": 2795, + "interpolation": "LINEAR", + "output": 2796 + }, + { + "input": 2797, + "interpolation": "LINEAR", + "output": 2798 + }, + { + "input": 2799, + "interpolation": "LINEAR", + "output": 2800 + }, + { + "input": 2801, + "interpolation": "LINEAR", + "output": 2802 + }, + { + "input": 2803, + "interpolation": "LINEAR", + "output": 2804 + }, + { + "input": 2805, + "interpolation": "LINEAR", + "output": 2806 + }, + { + "input": 2807, + "interpolation": "LINEAR", + "output": 2808 + }, + { + "input": 2809, + "interpolation": "LINEAR", + "output": 2810 + }, + { + "input": 2811, + "interpolation": "LINEAR", + "output": 2812 + }, + { + "input": 2813, + "interpolation": "LINEAR", + "output": 2814 + }, + { + "input": 2815, + "interpolation": "LINEAR", + "output": 2816 + }, + { + "input": 2817, + "interpolation": "LINEAR", + "output": 2818 + }, + { + "input": 2819, + "interpolation": "LINEAR", + "output": 2820 + }, + { + "input": 2821, + "interpolation": "LINEAR", + "output": 2822 + }, + { + "input": 2823, + "interpolation": "LINEAR", + "output": 2824 + }, + { + "input": 2825, + "interpolation": "LINEAR", + "output": 2826 + }, + { + "input": 2827, + "interpolation": "LINEAR", + "output": 2828 + }, + { + "input": 2829, + "interpolation": "LINEAR", + "output": 2830 + }, + { + "input": 2831, + "interpolation": "LINEAR", + "output": 2832 + }, + { + "input": 2833, + "interpolation": "LINEAR", + "output": 2834 + }, + { + "input": 2835, + "interpolation": "LINEAR", + "output": 2836 + }, + { + "input": 2837, + "interpolation": "LINEAR", + "output": 2838 + }, + { + "input": 2839, + "interpolation": "LINEAR", + "output": 2840 + }, + { + "input": 2841, + "interpolation": "LINEAR", + "output": 2842 + }, + { + "input": 2843, + "interpolation": "LINEAR", + "output": 2844 + }, + { + "input": 2845, + "interpolation": "LINEAR", + "output": 2846 + }, + { + "input": 2847, + "interpolation": "LINEAR", + "output": 2848 + }, + { + "input": 2849, + "interpolation": "LINEAR", + "output": 2850 + }, + { + "input": 2851, + "interpolation": "LINEAR", + "output": 2852 + }, + { + "input": 2853, + "interpolation": "LINEAR", + "output": 2854 + }, + { + "input": 2855, + "interpolation": "LINEAR", + "output": 2856 + }, + { + "input": 2857, + "interpolation": "LINEAR", + "output": 2858 + }, + { + "input": 2859, + "interpolation": "LINEAR", + "output": 2860 + }, + { + "input": 2861, + "interpolation": "LINEAR", + "output": 2862 + }, + { + "input": 2863, + "interpolation": "LINEAR", + "output": 2864 + }, + { + "input": 2865, + "interpolation": "LINEAR", + "output": 2866 + }, + { + "input": 2867, + "interpolation": "LINEAR", + "output": 2868 + }, + { + "input": 2869, + "interpolation": "LINEAR", + "output": 2870 + }, + { + "input": 2871, + "interpolation": "LINEAR", + "output": 2872 + }, + { + "input": 2873, + "interpolation": "LINEAR", + "output": 2874 + }, + { + "input": 2875, + "interpolation": "LINEAR", + "output": 2876 + }, + { + "input": 2877, + "interpolation": "LINEAR", + "output": 2878 + }, + { + "input": 2879, + "interpolation": "LINEAR", + "output": 2880 + }, + { + "input": 2881, + "interpolation": "LINEAR", + "output": 2882 + }, + { + "input": 2883, + "interpolation": "LINEAR", + "output": 2884 + }, + { + "input": 2885, + "interpolation": "LINEAR", + "output": 2886 + }, + { + "input": 2887, + "interpolation": "LINEAR", + "output": 2888 + }, + { + "input": 2889, + "interpolation": "LINEAR", + "output": 2890 + }, + { + "input": 2891, + "interpolation": "LINEAR", + "output": 2892 + }, + { + "input": 2893, + "interpolation": "LINEAR", + "output": 2894 + }, + { + "input": 2895, + "interpolation": "LINEAR", + "output": 2896 + }, + { + "input": 2897, + "interpolation": "LINEAR", + "output": 2898 + }, + { + "input": 2899, + "interpolation": "LINEAR", + "output": 2900 + }, + { + "input": 2901, + "interpolation": "LINEAR", + "output": 2902 + }, + { + "input": 2903, + "interpolation": "LINEAR", + "output": 2904 + }, + { + "input": 2905, + "interpolation": "LINEAR", + "output": 2906 + }, + { + "input": 2907, + "interpolation": "LINEAR", + "output": 2908 + }, + { + "input": 2909, + "interpolation": "LINEAR", + "output": 2910 + }, + { + "input": 2911, + "interpolation": "LINEAR", + "output": 2912 + }, + { + "input": 2913, + "interpolation": "LINEAR", + "output": 2914 + }, + { + "input": 2915, + "interpolation": "LINEAR", + "output": 2916 + }, + { + "input": 2917, + "interpolation": "LINEAR", + "output": 2918 + }, + { + "input": 2919, + "interpolation": "LINEAR", + "output": 2920 + }, + { + "input": 2921, + "interpolation": "LINEAR", + "output": 2922 + }, + { + "input": 2923, + "interpolation": "LINEAR", + "output": 2924 + }, + { + "input": 2925, + "interpolation": "LINEAR", + "output": 2926 + }, + { + "input": 2927, + "interpolation": "LINEAR", + "output": 2928 + }, + { + "input": 2929, + "interpolation": "LINEAR", + "output": 2930 + }, + { + "input": 2931, + "interpolation": "LINEAR", + "output": 2932 + }, + { + "input": 2933, + "interpolation": "LINEAR", + "output": 2934 + }, + { + "input": 2935, + "interpolation": "LINEAR", + "output": 2936 + }, + { + "input": 2937, + "interpolation": "LINEAR", + "output": 2938 + }, + { + "input": 2939, + "interpolation": "LINEAR", + "output": 2940 + }, + { + "input": 2941, + "interpolation": "LINEAR", + "output": 2942 + }, + { + "input": 2943, + "interpolation": "LINEAR", + "output": 2944 + }, + { + "input": 2945, + "interpolation": "LINEAR", + "output": 2946 + }, + { + "input": 2947, + "interpolation": "LINEAR", + "output": 2948 + }, + { + "input": 2949, + "interpolation": "LINEAR", + "output": 2950 + }, + { + "input": 2951, + "interpolation": "LINEAR", + "output": 2952 + }, + { + "input": 2953, + "interpolation": "LINEAR", + "output": 2954 + }, + { + "input": 2955, + "interpolation": "LINEAR", + "output": 2956 + }, + { + "input": 2957, + "interpolation": "LINEAR", + "output": 2958 + }, + { + "input": 2959, + "interpolation": "LINEAR", + "output": 2960 + }, + { + "input": 2961, + "interpolation": "LINEAR", + "output": 2962 + }, + { + "input": 2963, + "interpolation": "LINEAR", + "output": 2964 + }, + { + "input": 2965, + "interpolation": "LINEAR", + "output": 2966 + }, + { + "input": 2967, + "interpolation": "LINEAR", + "output": 2968 + }, + { + "input": 2969, + "interpolation": "LINEAR", + "output": 2970 + }, + { + "input": 2971, + "interpolation": "LINEAR", + "output": 2972 + }, + { + "input": 2973, + "interpolation": "LINEAR", + "output": 2974 + }, + { + "input": 2975, + "interpolation": "LINEAR", + "output": 2976 + }, + { + "input": 2977, + "interpolation": "LINEAR", + "output": 2978 + }, + { + "input": 2979, + "interpolation": "LINEAR", + "output": 2980 + }, + { + "input": 2981, + "interpolation": "LINEAR", + "output": 2982 + }, + { + "input": 2983, + "interpolation": "LINEAR", + "output": 2984 + }, + { + "input": 2985, + "interpolation": "LINEAR", + "output": 2986 + }, + { + "input": 2987, + "interpolation": "LINEAR", + "output": 2988 + }, + { + "input": 2989, + "interpolation": "LINEAR", + "output": 2990 + }, + { + "input": 2991, + "interpolation": "LINEAR", + "output": 2992 + }, + { + "input": 2993, + "interpolation": "LINEAR", + "output": 2994 + }, + { + "input": 2995, + "interpolation": "LINEAR", + "output": 2996 + }, + { + "input": 2997, + "interpolation": "LINEAR", + "output": 2998 + }, + { + "input": 2999, + "interpolation": "LINEAR", + "output": 3000 + }, + { + "input": 3001, + "interpolation": "LINEAR", + "output": 3002 + }, + { + "input": 3003, + "interpolation": "LINEAR", + "output": 3004 + }, + { + "input": 3005, + "interpolation": "LINEAR", + "output": 3006 + }, + { + "input": 3007, + "interpolation": "LINEAR", + "output": 3008 + }, + { + "input": 3009, + "interpolation": "LINEAR", + "output": 3010 + }, + { + "input": 3011, + "interpolation": "LINEAR", + "output": 3012 + }, + { + "input": 3013, + "interpolation": "LINEAR", + "output": 3014 + }, + { + "input": 3015, + "interpolation": "LINEAR", + "output": 3016 + }, + { + "input": 3017, + "interpolation": "LINEAR", + "output": 3018 + }, + { + "input": 3019, + "interpolation": "LINEAR", + "output": 3020 + }, + { + "input": 3021, + "interpolation": "LINEAR", + "output": 3022 + }, + { + "input": 3023, + "interpolation": "LINEAR", + "output": 3024 + }, + { + "input": 3025, + "interpolation": "LINEAR", + "output": 3026 + }, + { + "input": 3027, + "interpolation": "LINEAR", + "output": 3028 + }, + { + "input": 3029, + "interpolation": "LINEAR", + "output": 3030 + }, + { + "input": 3031, + "interpolation": "LINEAR", + "output": 3032 + }, + { + "input": 3033, + "interpolation": "LINEAR", + "output": 3034 + }, + { + "input": 3035, + "interpolation": "LINEAR", + "output": 3036 + }, + { + "input": 3037, + "interpolation": "LINEAR", + "output": 3038 + }, + { + "input": 3039, + "interpolation": "LINEAR", + "output": 3040 + }, + { + "input": 3041, + "interpolation": "LINEAR", + "output": 3042 + }, + { + "input": 3043, + "interpolation": "LINEAR", + "output": 3044 + }, + { + "input": 3045, + "interpolation": "LINEAR", + "output": 3046 + }, + { + "input": 3047, + "interpolation": "LINEAR", + "output": 3048 + }, + { + "input": 3049, + "interpolation": "LINEAR", + "output": 3050 + }, + { + "input": 3051, + "interpolation": "LINEAR", + "output": 3052 + }, + { + "input": 3053, + "interpolation": "LINEAR", + "output": 3054 + }, + { + "input": 3055, + "interpolation": "LINEAR", + "output": 3056 + }, + { + "input": 3057, + "interpolation": "LINEAR", + "output": 3058 + }, + { + "input": 3059, + "interpolation": "LINEAR", + "output": 3060 + }, + { + "input": 3061, + "interpolation": "LINEAR", + "output": 3062 + }, + { + "input": 3063, + "interpolation": "LINEAR", + "output": 3064 + }, + { + "input": 3065, + "interpolation": "LINEAR", + "output": 3066 + }, + { + "input": 3067, + "interpolation": "LINEAR", + "output": 3068 + }, + { + "input": 3069, + "interpolation": "LINEAR", + "output": 3070 + }, + { + "input": 3071, + "interpolation": "LINEAR", + "output": 3072 + }, + { + "input": 3073, + "interpolation": "LINEAR", + "output": 3074 + }, + { + "input": 3075, + "interpolation": "LINEAR", + "output": 3076 + }, + { + "input": 3077, + "interpolation": "LINEAR", + "output": 3078 + }, + { + "input": 3079, + "interpolation": "LINEAR", + "output": 3080 + }, + { + "input": 3081, + "interpolation": "LINEAR", + "output": 3082 + }, + { + "input": 3083, + "interpolation": "LINEAR", + "output": 3084 + }, + { + "input": 3085, + "interpolation": "LINEAR", + "output": 3086 + }, + { + "input": 3087, + "interpolation": "LINEAR", + "output": 3088 + }, + { + "input": 3089, + "interpolation": "LINEAR", + "output": 3090 + }, + { + "input": 3091, + "interpolation": "LINEAR", + "output": 3092 + }, + { + "input": 3093, + "interpolation": "LINEAR", + "output": 3094 + }, + { + "input": 3095, + "interpolation": "LINEAR", + "output": 3096 + }, + { + "input": 3097, + "interpolation": "LINEAR", + "output": 3098 + }, + { + "input": 3099, + "interpolation": "LINEAR", + "output": 3100 + }, + { + "input": 3101, + "interpolation": "LINEAR", + "output": 3102 + }, + { + "input": 3103, + "interpolation": "LINEAR", + "output": 3104 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Flying", + "samplers": [ + { + "input": 3105, + "interpolation": "LINEAR", + "output": 3106 + }, + { + "input": 3107, + "interpolation": "LINEAR", + "output": 3108 + }, + { + "input": 3109, + "interpolation": "LINEAR", + "output": 3110 + }, + { + "input": 3111, + "interpolation": "LINEAR", + "output": 3112 + }, + { + "input": 3113, + "interpolation": "LINEAR", + "output": 3114 + }, + { + "input": 3115, + "interpolation": "LINEAR", + "output": 3116 + }, + { + "input": 3117, + "interpolation": "LINEAR", + "output": 3118 + }, + { + "input": 3119, + "interpolation": "LINEAR", + "output": 3120 + }, + { + "input": 3121, + "interpolation": "LINEAR", + "output": 3122 + }, + { + "input": 3123, + "interpolation": "LINEAR", + "output": 3124 + }, + { + "input": 3125, + "interpolation": "LINEAR", + "output": 3126 + }, + { + "input": 3127, + "interpolation": "LINEAR", + "output": 3128 + }, + { + "input": 3129, + "interpolation": "LINEAR", + "output": 3130 + }, + { + "input": 3131, + "interpolation": "LINEAR", + "output": 3132 + }, + { + "input": 3133, + "interpolation": "LINEAR", + "output": 3134 + }, + { + "input": 3135, + "interpolation": "LINEAR", + "output": 3136 + }, + { + "input": 3137, + "interpolation": "LINEAR", + "output": 3138 + }, + { + "input": 3139, + "interpolation": "LINEAR", + "output": 3140 + }, + { + "input": 3141, + "interpolation": "LINEAR", + "output": 3142 + }, + { + "input": 3143, + "interpolation": "LINEAR", + "output": 3144 + }, + { + "input": 3145, + "interpolation": "LINEAR", + "output": 3146 + }, + { + "input": 3147, + "interpolation": "LINEAR", + "output": 3148 + }, + { + "input": 3149, + "interpolation": "LINEAR", + "output": 3150 + }, + { + "input": 3151, + "interpolation": "LINEAR", + "output": 3152 + }, + { + "input": 3153, + "interpolation": "LINEAR", + "output": 3154 + }, + { + "input": 3155, + "interpolation": "LINEAR", + "output": 3156 + }, + { + "input": 3157, + "interpolation": "LINEAR", + "output": 3158 + }, + { + "input": 3159, + "interpolation": "LINEAR", + "output": 3160 + }, + { + "input": 3161, + "interpolation": "LINEAR", + "output": 3162 + }, + { + "input": 3163, + "interpolation": "LINEAR", + "output": 3164 + }, + { + "input": 3165, + "interpolation": "LINEAR", + "output": 3166 + }, + { + "input": 3167, + "interpolation": "LINEAR", + "output": 3168 + }, + { + "input": 3169, + "interpolation": "LINEAR", + "output": 3170 + }, + { + "input": 3171, + "interpolation": "LINEAR", + "output": 3172 + }, + { + "input": 3173, + "interpolation": "LINEAR", + "output": 3174 + }, + { + "input": 3175, + "interpolation": "LINEAR", + "output": 3176 + }, + { + "input": 3177, + "interpolation": "LINEAR", + "output": 3178 + }, + { + "input": 3179, + "interpolation": "LINEAR", + "output": 3180 + }, + { + "input": 3181, + "interpolation": "LINEAR", + "output": 3182 + }, + { + "input": 3183, + "interpolation": "LINEAR", + "output": 3184 + }, + { + "input": 3185, + "interpolation": "LINEAR", + "output": 3186 + }, + { + "input": 3187, + "interpolation": "LINEAR", + "output": 3188 + }, + { + "input": 3189, + "interpolation": "LINEAR", + "output": 3190 + }, + { + "input": 3191, + "interpolation": "LINEAR", + "output": 3192 + }, + { + "input": 3193, + "interpolation": "LINEAR", + "output": 3194 + }, + { + "input": 3195, + "interpolation": "LINEAR", + "output": 3196 + }, + { + "input": 3197, + "interpolation": "LINEAR", + "output": 3198 + }, + { + "input": 3199, + "interpolation": "LINEAR", + "output": 3200 + }, + { + "input": 3201, + "interpolation": "LINEAR", + "output": 3202 + }, + { + "input": 3203, + "interpolation": "LINEAR", + "output": 3204 + }, + { + "input": 3205, + "interpolation": "LINEAR", + "output": 3206 + }, + { + "input": 3207, + "interpolation": "LINEAR", + "output": 3208 + }, + { + "input": 3209, + "interpolation": "LINEAR", + "output": 3210 + }, + { + "input": 3211, + "interpolation": "LINEAR", + "output": 3212 + }, + { + "input": 3213, + "interpolation": "LINEAR", + "output": 3214 + }, + { + "input": 3215, + "interpolation": "LINEAR", + "output": 3216 + }, + { + "input": 3217, + "interpolation": "LINEAR", + "output": 3218 + }, + { + "input": 3219, + "interpolation": "LINEAR", + "output": 3220 + }, + { + "input": 3221, + "interpolation": "LINEAR", + "output": 3222 + }, + { + "input": 3223, + "interpolation": "LINEAR", + "output": 3224 + }, + { + "input": 3225, + "interpolation": "LINEAR", + "output": 3226 + }, + { + "input": 3227, + "interpolation": "LINEAR", + "output": 3228 + }, + { + "input": 3229, + "interpolation": "LINEAR", + "output": 3230 + }, + { + "input": 3231, + "interpolation": "LINEAR", + "output": 3232 + }, + { + "input": 3233, + "interpolation": "LINEAR", + "output": 3234 + }, + { + "input": 3235, + "interpolation": "LINEAR", + "output": 3236 + }, + { + "input": 3237, + "interpolation": "LINEAR", + "output": 3238 + }, + { + "input": 3239, + "interpolation": "LINEAR", + "output": 3240 + }, + { + "input": 3241, + "interpolation": "LINEAR", + "output": 3242 + }, + { + "input": 3243, + "interpolation": "LINEAR", + "output": 3244 + }, + { + "input": 3245, + "interpolation": "LINEAR", + "output": 3246 + }, + { + "input": 3247, + "interpolation": "LINEAR", + "output": 3248 + }, + { + "input": 3249, + "interpolation": "LINEAR", + "output": 3250 + }, + { + "input": 3251, + "interpolation": "LINEAR", + "output": 3252 + }, + { + "input": 3253, + "interpolation": "LINEAR", + "output": 3254 + }, + { + "input": 3255, + "interpolation": "LINEAR", + "output": 3256 + }, + { + "input": 3257, + "interpolation": "LINEAR", + "output": 3258 + }, + { + "input": 3259, + "interpolation": "LINEAR", + "output": 3260 + }, + { + "input": 3261, + "interpolation": "LINEAR", + "output": 3262 + }, + { + "input": 3263, + "interpolation": "LINEAR", + "output": 3264 + }, + { + "input": 3265, + "interpolation": "LINEAR", + "output": 3266 + }, + { + "input": 3267, + "interpolation": "LINEAR", + "output": 3268 + }, + { + "input": 3269, + "interpolation": "LINEAR", + "output": 3270 + }, + { + "input": 3271, + "interpolation": "LINEAR", + "output": 3272 + }, + { + "input": 3273, + "interpolation": "LINEAR", + "output": 3274 + }, + { + "input": 3275, + "interpolation": "LINEAR", + "output": 3276 + }, + { + "input": 3277, + "interpolation": "LINEAR", + "output": 3278 + }, + { + "input": 3279, + "interpolation": "LINEAR", + "output": 3280 + }, + { + "input": 3281, + "interpolation": "LINEAR", + "output": 3282 + }, + { + "input": 3283, + "interpolation": "LINEAR", + "output": 3284 + }, + { + "input": 3285, + "interpolation": "LINEAR", + "output": 3286 + }, + { + "input": 3287, + "interpolation": "LINEAR", + "output": 3288 + }, + { + "input": 3289, + "interpolation": "LINEAR", + "output": 3290 + }, + { + "input": 3291, + "interpolation": "LINEAR", + "output": 3292 + }, + { + "input": 3293, + "interpolation": "LINEAR", + "output": 3294 + }, + { + "input": 3295, + "interpolation": "LINEAR", + "output": 3296 + }, + { + "input": 3297, + "interpolation": "LINEAR", + "output": 3298 + }, + { + "input": 3299, + "interpolation": "LINEAR", + "output": 3300 + }, + { + "input": 3301, + "interpolation": "LINEAR", + "output": 3302 + }, + { + "input": 3303, + "interpolation": "LINEAR", + "output": 3304 + }, + { + "input": 3305, + "interpolation": "LINEAR", + "output": 3306 + }, + { + "input": 3307, + "interpolation": "LINEAR", + "output": 3308 + }, + { + "input": 3309, + "interpolation": "LINEAR", + "output": 3310 + }, + { + "input": 3311, + "interpolation": "LINEAR", + "output": 3312 + }, + { + "input": 3313, + "interpolation": "LINEAR", + "output": 3314 + }, + { + "input": 3315, + "interpolation": "LINEAR", + "output": 3316 + }, + { + "input": 3317, + "interpolation": "LINEAR", + "output": 3318 + }, + { + "input": 3319, + "interpolation": "LINEAR", + "output": 3320 + }, + { + "input": 3321, + "interpolation": "LINEAR", + "output": 3322 + }, + { + "input": 3323, + "interpolation": "LINEAR", + "output": 3324 + }, + { + "input": 3325, + "interpolation": "LINEAR", + "output": 3326 + }, + { + "input": 3327, + "interpolation": "LINEAR", + "output": 3328 + }, + { + "input": 3329, + "interpolation": "LINEAR", + "output": 3330 + }, + { + "input": 3331, + "interpolation": "LINEAR", + "output": 3332 + }, + { + "input": 3333, + "interpolation": "LINEAR", + "output": 3334 + }, + { + "input": 3335, + "interpolation": "LINEAR", + "output": 3336 + }, + { + "input": 3337, + "interpolation": "LINEAR", + "output": 3338 + }, + { + "input": 3339, + "interpolation": "LINEAR", + "output": 3340 + }, + { + "input": 3341, + "interpolation": "LINEAR", + "output": 3342 + }, + { + "input": 3343, + "interpolation": "LINEAR", + "output": 3344 + }, + { + "input": 3345, + "interpolation": "LINEAR", + "output": 3346 + }, + { + "input": 3347, + "interpolation": "LINEAR", + "output": 3348 + }, + { + "input": 3349, + "interpolation": "LINEAR", + "output": 3350 + }, + { + "input": 3351, + "interpolation": "LINEAR", + "output": 3352 + }, + { + "input": 3353, + "interpolation": "LINEAR", + "output": 3354 + }, + { + "input": 3355, + "interpolation": "LINEAR", + "output": 3356 + }, + { + "input": 3357, + "interpolation": "LINEAR", + "output": 3358 + }, + { + "input": 3359, + "interpolation": "LINEAR", + "output": 3360 + }, + { + "input": 3361, + "interpolation": "LINEAR", + "output": 3362 + }, + { + "input": 3363, + "interpolation": "LINEAR", + "output": 3364 + }, + { + "input": 3365, + "interpolation": "LINEAR", + "output": 3366 + }, + { + "input": 3367, + "interpolation": "LINEAR", + "output": 3368 + }, + { + "input": 3369, + "interpolation": "LINEAR", + "output": 3370 + }, + { + "input": 3371, + "interpolation": "LINEAR", + "output": 3372 + }, + { + "input": 3373, + "interpolation": "LINEAR", + "output": 3374 + }, + { + "input": 3375, + "interpolation": "LINEAR", + "output": 3376 + }, + { + "input": 3377, + "interpolation": "LINEAR", + "output": 3378 + }, + { + "input": 3379, + "interpolation": "LINEAR", + "output": 3380 + }, + { + "input": 3381, + "interpolation": "LINEAR", + "output": 3382 + }, + { + "input": 3383, + "interpolation": "LINEAR", + "output": 3384 + }, + { + "input": 3385, + "interpolation": "LINEAR", + "output": 3386 + }, + { + "input": 3387, + "interpolation": "LINEAR", + "output": 3388 + }, + { + "input": 3389, + "interpolation": "LINEAR", + "output": 3390 + }, + { + "input": 3391, + "interpolation": "LINEAR", + "output": 3392 + }, + { + "input": 3393, + "interpolation": "LINEAR", + "output": 3394 + }, + { + "input": 3395, + "interpolation": "LINEAR", + "output": 3396 + }, + { + "input": 3397, + "interpolation": "LINEAR", + "output": 3398 + }, + { + "input": 3399, + "interpolation": "LINEAR", + "output": 3400 + }, + { + "input": 3401, + "interpolation": "LINEAR", + "output": 3402 + }, + { + "input": 3403, + "interpolation": "LINEAR", + "output": 3404 + }, + { + "input": 3405, + "interpolation": "LINEAR", + "output": 3406 + }, + { + "input": 3407, + "interpolation": "LINEAR", + "output": 3408 + }, + { + "input": 3409, + "interpolation": "LINEAR", + "output": 3410 + }, + { + "input": 3411, + "interpolation": "LINEAR", + "output": 3412 + }, + { + "input": 3413, + "interpolation": "LINEAR", + "output": 3414 + }, + { + "input": 3415, + "interpolation": "LINEAR", + "output": 3416 + }, + { + "input": 3417, + "interpolation": "LINEAR", + "output": 3418 + }, + { + "input": 3419, + "interpolation": "LINEAR", + "output": 3420 + }, + { + "input": 3421, + "interpolation": "LINEAR", + "output": 3422 + }, + { + "input": 3423, + "interpolation": "LINEAR", + "output": 3424 + }, + { + "input": 3425, + "interpolation": "LINEAR", + "output": 3426 + }, + { + "input": 3427, + "interpolation": "LINEAR", + "output": 3428 + }, + { + "input": 3429, + "interpolation": "LINEAR", + "output": 3430 + }, + { + "input": 3431, + "interpolation": "LINEAR", + "output": 3432 + }, + { + "input": 3433, + "interpolation": "LINEAR", + "output": 3434 + }, + { + "input": 3435, + "interpolation": "LINEAR", + "output": 3436 + }, + { + "input": 3437, + "interpolation": "LINEAR", + "output": 3438 + }, + { + "input": 3439, + "interpolation": "LINEAR", + "output": 3440 + }, + { + "input": 3441, + "interpolation": "LINEAR", + "output": 3442 + }, + { + "input": 3443, + "interpolation": "LINEAR", + "output": 3444 + }, + { + "input": 3445, + "interpolation": "LINEAR", + "output": 3446 + }, + { + "input": 3447, + "interpolation": "LINEAR", + "output": 3448 + }, + { + "input": 3449, + "interpolation": "LINEAR", + "output": 3450 + }, + { + "input": 3451, + "interpolation": "LINEAR", + "output": 3452 + }, + { + "input": 3453, + "interpolation": "LINEAR", + "output": 3454 + }, + { + "input": 3455, + "interpolation": "LINEAR", + "output": 3456 + }, + { + "input": 3457, + "interpolation": "LINEAR", + "output": 3458 + }, + { + "input": 3459, + "interpolation": "LINEAR", + "output": 3460 + }, + { + "input": 3461, + "interpolation": "LINEAR", + "output": 3462 + }, + { + "input": 3463, + "interpolation": "LINEAR", + "output": 3464 + }, + { + "input": 3465, + "interpolation": "LINEAR", + "output": 3466 + }, + { + "input": 3467, + "interpolation": "LINEAR", + "output": 3468 + }, + { + "input": 3469, + "interpolation": "LINEAR", + "output": 3470 + }, + { + "input": 3471, + "interpolation": "LINEAR", + "output": 3472 + }, + { + "input": 3473, + "interpolation": "LINEAR", + "output": 3474 + }, + { + "input": 3475, + "interpolation": "LINEAR", + "output": 3476 + }, + { + "input": 3477, + "interpolation": "LINEAR", + "output": 3478 + }, + { + "input": 3479, + "interpolation": "LINEAR", + "output": 3480 + }, + { + "input": 3481, + "interpolation": "LINEAR", + "output": 3482 + }, + { + "input": 3483, + "interpolation": "LINEAR", + "output": 3484 + }, + { + "input": 3485, + "interpolation": "LINEAR", + "output": 3486 + }, + { + "input": 3487, + "interpolation": "LINEAR", + "output": 3488 + }, + { + "input": 3489, + "interpolation": "LINEAR", + "output": 3490 + }, + { + "input": 3491, + "interpolation": "LINEAR", + "output": 3492 + }, + { + "input": 3493, + "interpolation": "LINEAR", + "output": 3494 + }, + { + "input": 3495, + "interpolation": "LINEAR", + "output": 3496 + }, + { + "input": 3497, + "interpolation": "LINEAR", + "output": 3498 + }, + { + "input": 3499, + "interpolation": "LINEAR", + "output": 3500 + }, + { + "input": 3501, + "interpolation": "LINEAR", + "output": 3502 + }, + { + "input": 3503, + "interpolation": "LINEAR", + "output": 3504 + }, + { + "input": 3505, + "interpolation": "LINEAR", + "output": 3506 + }, + { + "input": 3507, + "interpolation": "LINEAR", + "output": 3508 + }, + { + "input": 3509, + "interpolation": "LINEAR", + "output": 3510 + }, + { + "input": 3511, + "interpolation": "LINEAR", + "output": 3512 + }, + { + "input": 3513, + "interpolation": "LINEAR", + "output": 3514 + }, + { + "input": 3515, + "interpolation": "LINEAR", + "output": 3516 + }, + { + "input": 3517, + "interpolation": "LINEAR", + "output": 3518 + }, + { + "input": 3519, + "interpolation": "LINEAR", + "output": 3520 + }, + { + "input": 3521, + "interpolation": "LINEAR", + "output": 3522 + }, + { + "input": 3523, + "interpolation": "LINEAR", + "output": 3524 + }, + { + "input": 3525, + "interpolation": "LINEAR", + "output": 3526 + }, + { + "input": 3527, + "interpolation": "LINEAR", + "output": 3528 + }, + { + "input": 3529, + "interpolation": "LINEAR", + "output": 3530 + }, + { + "input": 3531, + "interpolation": "LINEAR", + "output": 3532 + }, + { + "input": 3533, + "interpolation": "LINEAR", + "output": 3534 + }, + { + "input": 3535, + "interpolation": "LINEAR", + "output": 3536 + }, + { + "input": 3537, + "interpolation": "LINEAR", + "output": 3538 + }, + { + "input": 3539, + "interpolation": "LINEAR", + "output": 3540 + }, + { + "input": 3541, + "interpolation": "LINEAR", + "output": 3542 + }, + { + "input": 3543, + "interpolation": "LINEAR", + "output": 3544 + }, + { + "input": 3545, + "interpolation": "LINEAR", + "output": 3546 + }, + { + "input": 3547, + "interpolation": "LINEAR", + "output": 3548 + }, + { + "input": 3549, + "interpolation": "LINEAR", + "output": 3550 + }, + { + "input": 3551, + "interpolation": "LINEAR", + "output": 3552 + }, + { + "input": 3553, + "interpolation": "LINEAR", + "output": 3554 + }, + { + "input": 3555, + "interpolation": "LINEAR", + "output": 3556 + }, + { + "input": 3557, + "interpolation": "LINEAR", + "output": 3558 + }, + { + "input": 3559, + "interpolation": "LINEAR", + "output": 3560 + }, + { + "input": 3561, + "interpolation": "LINEAR", + "output": 3562 + }, + { + "input": 3563, + "interpolation": "LINEAR", + "output": 3564 + }, + { + "input": 3565, + "interpolation": "LINEAR", + "output": 3566 + }, + { + "input": 3567, + "interpolation": "LINEAR", + "output": 3568 + }, + { + "input": 3569, + "interpolation": "LINEAR", + "output": 3570 + }, + { + "input": 3571, + "interpolation": "LINEAR", + "output": 3572 + }, + { + "input": 3573, + "interpolation": "LINEAR", + "output": 3574 + }, + { + "input": 3575, + "interpolation": "LINEAR", + "output": 3576 + }, + { + "input": 3577, + "interpolation": "LINEAR", + "output": 3578 + }, + { + "input": 3579, + "interpolation": "LINEAR", + "output": 3580 + }, + { + "input": 3581, + "interpolation": "LINEAR", + "output": 3582 + }, + { + "input": 3583, + "interpolation": "LINEAR", + "output": 3584 + }, + { + "input": 3585, + "interpolation": "LINEAR", + "output": 3586 + }, + { + "input": 3587, + "interpolation": "LINEAR", + "output": 3588 + }, + { + "input": 3589, + "interpolation": "LINEAR", + "output": 3590 + }, + { + "input": 3591, + "interpolation": "LINEAR", + "output": 3592 + }, + { + "input": 3593, + "interpolation": "LINEAR", + "output": 3594 + }, + { + "input": 3595, + "interpolation": "LINEAR", + "output": 3596 + }, + { + "input": 3597, + "interpolation": "LINEAR", + "output": 3598 + }, + { + "input": 3599, + "interpolation": "LINEAR", + "output": 3600 + }, + { + "input": 3601, + "interpolation": "LINEAR", + "output": 3602 + }, + { + "input": 3603, + "interpolation": "LINEAR", + "output": 3604 + }, + { + "input": 3605, + "interpolation": "LINEAR", + "output": 3606 + }, + { + "input": 3607, + "interpolation": "LINEAR", + "output": 3608 + }, + { + "input": 3609, + "interpolation": "LINEAR", + "output": 3610 + }, + { + "input": 3611, + "interpolation": "LINEAR", + "output": 3612 + }, + { + "input": 3613, + "interpolation": "LINEAR", + "output": 3614 + }, + { + "input": 3615, + "interpolation": "LINEAR", + "output": 3616 + }, + { + "input": 3617, + "interpolation": "LINEAR", + "output": 3618 + }, + { + "input": 3619, + "interpolation": "LINEAR", + "output": 3620 + }, + { + "input": 3621, + "interpolation": "LINEAR", + "output": 3622 + }, + { + "input": 3623, + "interpolation": "LINEAR", + "output": 3624 + }, + { + "input": 3625, + "interpolation": "LINEAR", + "output": 3626 + }, + { + "input": 3627, + "interpolation": "LINEAR", + "output": 3628 + }, + { + "input": 3629, + "interpolation": "LINEAR", + "output": 3630 + }, + { + "input": 3631, + "interpolation": "LINEAR", + "output": 3632 + }, + { + "input": 3633, + "interpolation": "LINEAR", + "output": 3634 + }, + { + "input": 3635, + "interpolation": "LINEAR", + "output": 3636 + }, + { + "input": 3637, + "interpolation": "LINEAR", + "output": 3638 + }, + { + "input": 3639, + "interpolation": "LINEAR", + "output": 3640 + }, + { + "input": 3641, + "interpolation": "LINEAR", + "output": 3642 + }, + { + "input": 3643, + "interpolation": "LINEAR", + "output": 3644 + }, + { + "input": 3645, + "interpolation": "LINEAR", + "output": 3646 + }, + { + "input": 3647, + "interpolation": "LINEAR", + "output": 3648 + }, + { + "input": 3649, + "interpolation": "LINEAR", + "output": 3650 + }, + { + "input": 3651, + "interpolation": "LINEAR", + "output": 3652 + }, + { + "input": 3653, + "interpolation": "LINEAR", + "output": 3654 + }, + { + "input": 3655, + "interpolation": "LINEAR", + "output": 3656 + }, + { + "input": 3657, + "interpolation": "LINEAR", + "output": 3658 + }, + { + "input": 3659, + "interpolation": "LINEAR", + "output": 3660 + }, + { + "input": 3661, + "interpolation": "LINEAR", + "output": 3662 + }, + { + "input": 3663, + "interpolation": "LINEAR", + "output": 3664 + }, + { + "input": 3665, + "interpolation": "LINEAR", + "output": 3666 + }, + { + "input": 3667, + "interpolation": "LINEAR", + "output": 3668 + }, + { + "input": 3669, + "interpolation": "LINEAR", + "output": 3670 + }, + { + "input": 3671, + "interpolation": "LINEAR", + "output": 3672 + }, + { + "input": 3673, + "interpolation": "LINEAR", + "output": 3674 + }, + { + "input": 3675, + "interpolation": "LINEAR", + "output": 3676 + }, + { + "input": 3677, + "interpolation": "LINEAR", + "output": 3678 + }, + { + "input": 3679, + "interpolation": "LINEAR", + "output": 3680 + }, + { + "input": 3681, + "interpolation": "LINEAR", + "output": 3682 + }, + { + "input": 3683, + "interpolation": "LINEAR", + "output": 3684 + }, + { + "input": 3685, + "interpolation": "LINEAR", + "output": 3686 + }, + { + "input": 3687, + "interpolation": "LINEAR", + "output": 3688 + }, + { + "input": 3689, + "interpolation": "LINEAR", + "output": 3690 + }, + { + "input": 3691, + "interpolation": "LINEAR", + "output": 3692 + }, + { + "input": 3693, + "interpolation": "LINEAR", + "output": 3694 + }, + { + "input": 3695, + "interpolation": "LINEAR", + "output": 3696 + }, + { + "input": 3697, + "interpolation": "LINEAR", + "output": 3698 + }, + { + "input": 3699, + "interpolation": "LINEAR", + "output": 3700 + }, + { + "input": 3701, + "interpolation": "LINEAR", + "output": 3702 + }, + { + "input": 3703, + "interpolation": "LINEAR", + "output": 3704 + }, + { + "input": 3705, + "interpolation": "LINEAR", + "output": 3706 + }, + { + "input": 3707, + "interpolation": "LINEAR", + "output": 3708 + }, + { + "input": 3709, + "interpolation": "LINEAR", + "output": 3710 + }, + { + "input": 3711, + "interpolation": "LINEAR", + "output": 3712 + }, + { + "input": 3713, + "interpolation": "LINEAR", + "output": 3714 + }, + { + "input": 3715, + "interpolation": "LINEAR", + "output": 3716 + }, + { + "input": 3717, + "interpolation": "LINEAR", + "output": 3718 + }, + { + "input": 3719, + "interpolation": "LINEAR", + "output": 3720 + }, + { + "input": 3721, + "interpolation": "LINEAR", + "output": 3722 + }, + { + "input": 3723, + "interpolation": "LINEAR", + "output": 3724 + }, + { + "input": 3725, + "interpolation": "LINEAR", + "output": 3726 + }, + { + "input": 3727, + "interpolation": "LINEAR", + "output": 3728 + }, + { + "input": 3729, + "interpolation": "LINEAR", + "output": 3730 + }, + { + "input": 3731, + "interpolation": "LINEAR", + "output": 3732 + }, + { + "input": 3733, + "interpolation": "LINEAR", + "output": 3734 + }, + { + "input": 3735, + "interpolation": "LINEAR", + "output": 3736 + }, + { + "input": 3737, + "interpolation": "LINEAR", + "output": 3738 + }, + { + "input": 3739, + "interpolation": "LINEAR", + "output": 3740 + }, + { + "input": 3741, + "interpolation": "LINEAR", + "output": 3742 + }, + { + "input": 3743, + "interpolation": "LINEAR", + "output": 3744 + }, + { + "input": 3745, + "interpolation": "LINEAR", + "output": 3746 + }, + { + "input": 3747, + "interpolation": "LINEAR", + "output": 3748 + }, + { + "input": 3749, + "interpolation": "LINEAR", + "output": 3750 + }, + { + "input": 3751, + "interpolation": "LINEAR", + "output": 3752 + }, + { + "input": 3753, + "interpolation": "LINEAR", + "output": 3754 + }, + { + "input": 3755, + "interpolation": "LINEAR", + "output": 3756 + }, + { + "input": 3757, + "interpolation": "LINEAR", + "output": 3758 + }, + { + "input": 3759, + "interpolation": "LINEAR", + "output": 3760 + }, + { + "input": 3761, + "interpolation": "LINEAR", + "output": 3762 + }, + { + "input": 3763, + "interpolation": "LINEAR", + "output": 3764 + }, + { + "input": 3765, + "interpolation": "LINEAR", + "output": 3766 + }, + { + "input": 3767, + "interpolation": "LINEAR", + "output": 3768 + }, + { + "input": 3769, + "interpolation": "LINEAR", + "output": 3770 + }, + { + "input": 3771, + "interpolation": "LINEAR", + "output": 3772 + }, + { + "input": 3773, + "interpolation": "LINEAR", + "output": 3774 + }, + { + "input": 3775, + "interpolation": "LINEAR", + "output": 3776 + }, + { + "input": 3777, + "interpolation": "LINEAR", + "output": 3778 + }, + { + "input": 3779, + "interpolation": "LINEAR", + "output": 3780 + }, + { + "input": 3781, + "interpolation": "LINEAR", + "output": 3782 + }, + { + "input": 3783, + "interpolation": "LINEAR", + "output": 3784 + }, + { + "input": 3785, + "interpolation": "LINEAR", + "output": 3786 + }, + { + "input": 3787, + "interpolation": "LINEAR", + "output": 3788 + }, + { + "input": 3789, + "interpolation": "LINEAR", + "output": 3790 + }, + { + "input": 3791, + "interpolation": "LINEAR", + "output": 3792 + }, + { + "input": 3793, + "interpolation": "LINEAR", + "output": 3794 + }, + { + "input": 3795, + "interpolation": "LINEAR", + "output": 3796 + }, + { + "input": 3797, + "interpolation": "LINEAR", + "output": 3798 + }, + { + "input": 3799, + "interpolation": "LINEAR", + "output": 3800 + }, + { + "input": 3801, + "interpolation": "LINEAR", + "output": 3802 + }, + { + "input": 3803, + "interpolation": "LINEAR", + "output": 3804 + }, + { + "input": 3805, + "interpolation": "LINEAR", + "output": 3806 + }, + { + "input": 3807, + "interpolation": "LINEAR", + "output": 3808 + }, + { + "input": 3809, + "interpolation": "LINEAR", + "output": 3810 + }, + { + "input": 3811, + "interpolation": "LINEAR", + "output": 3812 + }, + { + "input": 3813, + "interpolation": "LINEAR", + "output": 3814 + }, + { + "input": 3815, + "interpolation": "LINEAR", + "output": 3816 + }, + { + "input": 3817, + "interpolation": "LINEAR", + "output": 3818 + }, + { + "input": 3819, + "interpolation": "LINEAR", + "output": 3820 + }, + { + "input": 3821, + "interpolation": "LINEAR", + "output": 3822 + }, + { + "input": 3823, + "interpolation": "LINEAR", + "output": 3824 + }, + { + "input": 3825, + "interpolation": "LINEAR", + "output": 3826 + }, + { + "input": 3827, + "interpolation": "LINEAR", + "output": 3828 + }, + { + "input": 3829, + "interpolation": "LINEAR", + "output": 3830 + }, + { + "input": 3831, + "interpolation": "LINEAR", + "output": 3832 + }, + { + "input": 3833, + "interpolation": "LINEAR", + "output": 3834 + }, + { + "input": 3835, + "interpolation": "LINEAR", + "output": 3836 + }, + { + "input": 3837, + "interpolation": "LINEAR", + "output": 3838 + }, + { + "input": 3839, + "interpolation": "LINEAR", + "output": 3840 + }, + { + "input": 3841, + "interpolation": "LINEAR", + "output": 3842 + }, + { + "input": 3843, + "interpolation": "LINEAR", + "output": 3844 + }, + { + "input": 3845, + "interpolation": "LINEAR", + "output": 3846 + }, + { + "input": 3847, + "interpolation": "LINEAR", + "output": 3848 + }, + { + "input": 3849, + "interpolation": "LINEAR", + "output": 3850 + }, + { + "input": 3851, + "interpolation": "LINEAR", + "output": 3852 + }, + { + "input": 3853, + "interpolation": "LINEAR", + "output": 3854 + }, + { + "input": 3855, + "interpolation": "LINEAR", + "output": 3856 + }, + { + "input": 3857, + "interpolation": "LINEAR", + "output": 3858 + }, + { + "input": 3859, + "interpolation": "LINEAR", + "output": 3860 + }, + { + "input": 3861, + "interpolation": "LINEAR", + "output": 3862 + }, + { + "input": 3863, + "interpolation": "LINEAR", + "output": 3864 + }, + { + "input": 3865, + "interpolation": "LINEAR", + "output": 3866 + }, + { + "input": 3867, + "interpolation": "LINEAR", + "output": 3868 + }, + { + "input": 3869, + "interpolation": "LINEAR", + "output": 3870 + }, + { + "input": 3871, + "interpolation": "LINEAR", + "output": 3872 + }, + { + "input": 3873, + "interpolation": "LINEAR", + "output": 3874 + }, + { + "input": 3875, + "interpolation": "LINEAR", + "output": 3876 + }, + { + "input": 3877, + "interpolation": "LINEAR", + "output": 3878 + }, + { + "input": 3879, + "interpolation": "LINEAR", + "output": 3880 + }, + { + "input": 3881, + "interpolation": "LINEAR", + "output": 3882 + }, + { + "input": 3883, + "interpolation": "LINEAR", + "output": 3884 + }, + { + "input": 3885, + "interpolation": "LINEAR", + "output": 3886 + }, + { + "input": 3887, + "interpolation": "LINEAR", + "output": 3888 + }, + { + "input": 3889, + "interpolation": "LINEAR", + "output": 3890 + }, + { + "input": 3891, + "interpolation": "LINEAR", + "output": 3892 + }, + { + "input": 3893, + "interpolation": "LINEAR", + "output": 3894 + }, + { + "input": 3895, + "interpolation": "LINEAR", + "output": 3896 + }, + { + "input": 3897, + "interpolation": "LINEAR", + "output": 3898 + }, + { + "input": 3899, + "interpolation": "LINEAR", + "output": 3900 + }, + { + "input": 3901, + "interpolation": "LINEAR", + "output": 3902 + }, + { + "input": 3903, + "interpolation": "LINEAR", + "output": 3904 + }, + { + "input": 3905, + "interpolation": "LINEAR", + "output": 3906 + }, + { + "input": 3907, + "interpolation": "LINEAR", + "output": 3908 + }, + { + "input": 3909, + "interpolation": "LINEAR", + "output": 3910 + }, + { + "input": 3911, + "interpolation": "LINEAR", + "output": 3912 + }, + { + "input": 3913, + "interpolation": "LINEAR", + "output": 3914 + }, + { + "input": 3915, + "interpolation": "LINEAR", + "output": 3916 + }, + { + "input": 3917, + "interpolation": "LINEAR", + "output": 3918 + }, + { + "input": 3919, + "interpolation": "LINEAR", + "output": 3920 + }, + { + "input": 3921, + "interpolation": "LINEAR", + "output": 3922 + }, + { + "input": 3923, + "interpolation": "LINEAR", + "output": 3924 + }, + { + "input": 3925, + "interpolation": "LINEAR", + "output": 3926 + }, + { + "input": 3927, + "interpolation": "LINEAR", + "output": 3928 + }, + { + "input": 3929, + "interpolation": "LINEAR", + "output": 3930 + }, + { + "input": 3931, + "interpolation": "LINEAR", + "output": 3932 + }, + { + "input": 3933, + "interpolation": "LINEAR", + "output": 3934 + }, + { + "input": 3935, + "interpolation": "LINEAR", + "output": 3936 + }, + { + "input": 3937, + "interpolation": "LINEAR", + "output": 3938 + }, + { + "input": 3939, + "interpolation": "LINEAR", + "output": 3940 + }, + { + "input": 3941, + "interpolation": "LINEAR", + "output": 3942 + }, + { + "input": 3943, + "interpolation": "LINEAR", + "output": 3944 + }, + { + "input": 3945, + "interpolation": "LINEAR", + "output": 3946 + }, + { + "input": 3947, + "interpolation": "LINEAR", + "output": 3948 + }, + { + "input": 3949, + "interpolation": "LINEAR", + "output": 3950 + }, + { + "input": 3951, + "interpolation": "LINEAR", + "output": 3952 + }, + { + "input": 3953, + "interpolation": "LINEAR", + "output": 3954 + }, + { + "input": 3955, + "interpolation": "LINEAR", + "output": 3956 + }, + { + "input": 3957, + "interpolation": "LINEAR", + "output": 3958 + }, + { + "input": 3959, + "interpolation": "LINEAR", + "output": 3960 + }, + { + "input": 3961, + "interpolation": "LINEAR", + "output": 3962 + }, + { + "input": 3963, + "interpolation": "LINEAR", + "output": 3964 + }, + { + "input": 3965, + "interpolation": "LINEAR", + "output": 3966 + }, + { + "input": 3967, + "interpolation": "LINEAR", + "output": 3968 + }, + { + "input": 3969, + "interpolation": "LINEAR", + "output": 3970 + }, + { + "input": 3971, + "interpolation": "LINEAR", + "output": 3972 + }, + { + "input": 3973, + "interpolation": "LINEAR", + "output": 3974 + }, + { + "input": 3975, + "interpolation": "LINEAR", + "output": 3976 + }, + { + "input": 3977, + "interpolation": "LINEAR", + "output": 3978 + }, + { + "input": 3979, + "interpolation": "LINEAR", + "output": 3980 + }, + { + "input": 3981, + "interpolation": "LINEAR", + "output": 3982 + }, + { + "input": 3983, + "interpolation": "LINEAR", + "output": 3984 + }, + { + "input": 3985, + "interpolation": "LINEAR", + "output": 3986 + }, + { + "input": 3987, + "interpolation": "LINEAR", + "output": 3988 + }, + { + "input": 3989, + "interpolation": "LINEAR", + "output": 3990 + }, + { + "input": 3991, + "interpolation": "LINEAR", + "output": 3992 + }, + { + "input": 3993, + "interpolation": "LINEAR", + "output": 3994 + }, + { + "input": 3995, + "interpolation": "LINEAR", + "output": 3996 + }, + { + "input": 3997, + "interpolation": "LINEAR", + "output": 3998 + }, + { + "input": 3999, + "interpolation": "LINEAR", + "output": 4000 + }, + { + "input": 4001, + "interpolation": "LINEAR", + "output": 4002 + }, + { + "input": 4003, + "interpolation": "LINEAR", + "output": 4004 + }, + { + "input": 4005, + "interpolation": "LINEAR", + "output": 4006 + }, + { + "input": 4007, + "interpolation": "LINEAR", + "output": 4008 + }, + { + "input": 4009, + "interpolation": "LINEAR", + "output": 4010 + }, + { + "input": 4011, + "interpolation": "LINEAR", + "output": 4012 + }, + { + "input": 4013, + "interpolation": "LINEAR", + "output": 4014 + }, + { + "input": 4015, + "interpolation": "LINEAR", + "output": 4016 + }, + { + "input": 4017, + "interpolation": "LINEAR", + "output": 4018 + }, + { + "input": 4019, + "interpolation": "LINEAR", + "output": 4020 + }, + { + "input": 4021, + "interpolation": "LINEAR", + "output": 4022 + }, + { + "input": 4023, + "interpolation": "LINEAR", + "output": 4024 + }, + { + "input": 4025, + "interpolation": "LINEAR", + "output": 4026 + }, + { + "input": 4027, + "interpolation": "LINEAR", + "output": 4028 + }, + { + "input": 4029, + "interpolation": "LINEAR", + "output": 4030 + }, + { + "input": 4031, + "interpolation": "LINEAR", + "output": 4032 + }, + { + "input": 4033, + "interpolation": "LINEAR", + "output": 4034 + }, + { + "input": 4035, + "interpolation": "LINEAR", + "output": 4036 + }, + { + "input": 4037, + "interpolation": "LINEAR", + "output": 4038 + }, + { + "input": 4039, + "interpolation": "LINEAR", + "output": 4040 + }, + { + "input": 4041, + "interpolation": "LINEAR", + "output": 4042 + }, + { + "input": 4043, + "interpolation": "LINEAR", + "output": 4044 + }, + { + "input": 4045, + "interpolation": "LINEAR", + "output": 4046 + }, + { + "input": 4047, + "interpolation": "LINEAR", + "output": 4048 + }, + { + "input": 4049, + "interpolation": "LINEAR", + "output": 4050 + }, + { + "input": 4051, + "interpolation": "LINEAR", + "output": 4052 + }, + { + "input": 4053, + "interpolation": "LINEAR", + "output": 4054 + }, + { + "input": 4055, + "interpolation": "LINEAR", + "output": 4056 + }, + { + "input": 4057, + "interpolation": "LINEAR", + "output": 4058 + }, + { + "input": 4059, + "interpolation": "LINEAR", + "output": 4060 + }, + { + "input": 4061, + "interpolation": "LINEAR", + "output": 4062 + }, + { + "input": 4063, + "interpolation": "LINEAR", + "output": 4064 + }, + { + "input": 4065, + "interpolation": "LINEAR", + "output": 4066 + }, + { + "input": 4067, + "interpolation": "LINEAR", + "output": 4068 + }, + { + "input": 4069, + "interpolation": "LINEAR", + "output": 4070 + }, + { + "input": 4071, + "interpolation": "LINEAR", + "output": 4072 + }, + { + "input": 4073, + "interpolation": "LINEAR", + "output": 4074 + }, + { + "input": 4075, + "interpolation": "LINEAR", + "output": 4076 + }, + { + "input": 4077, + "interpolation": "LINEAR", + "output": 4078 + }, + { + "input": 4079, + "interpolation": "LINEAR", + "output": 4080 + }, + { + "input": 4081, + "interpolation": "LINEAR", + "output": 4082 + }, + { + "input": 4083, + "interpolation": "LINEAR", + "output": 4084 + }, + { + "input": 4085, + "interpolation": "LINEAR", + "output": 4086 + }, + { + "input": 4087, + "interpolation": "LINEAR", + "output": 4088 + }, + { + "input": 4089, + "interpolation": "LINEAR", + "output": 4090 + }, + { + "input": 4091, + "interpolation": "LINEAR", + "output": 4092 + }, + { + "input": 4093, + "interpolation": "LINEAR", + "output": 4094 + }, + { + "input": 4095, + "interpolation": "LINEAR", + "output": 4096 + }, + { + "input": 4097, + "interpolation": "LINEAR", + "output": 4098 + }, + { + "input": 4099, + "interpolation": "LINEAR", + "output": 4100 + }, + { + "input": 4101, + "interpolation": "LINEAR", + "output": 4102 + }, + { + "input": 4103, + "interpolation": "LINEAR", + "output": 4104 + }, + { + "input": 4105, + "interpolation": "LINEAR", + "output": 4106 + }, + { + "input": 4107, + "interpolation": "LINEAR", + "output": 4108 + }, + { + "input": 4109, + "interpolation": "LINEAR", + "output": 4110 + }, + { + "input": 4111, + "interpolation": "LINEAR", + "output": 4112 + }, + { + "input": 4113, + "interpolation": "LINEAR", + "output": 4114 + }, + { + "input": 4115, + "interpolation": "LINEAR", + "output": 4116 + }, + { + "input": 4117, + "interpolation": "LINEAR", + "output": 4118 + }, + { + "input": 4119, + "interpolation": "LINEAR", + "output": 4120 + }, + { + "input": 4121, + "interpolation": "LINEAR", + "output": 4122 + }, + { + "input": 4123, + "interpolation": "LINEAR", + "output": 4124 + }, + { + "input": 4125, + "interpolation": "LINEAR", + "output": 4126 + }, + { + "input": 4127, + "interpolation": "LINEAR", + "output": 4128 + }, + { + "input": 4129, + "interpolation": "LINEAR", + "output": 4130 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Hyper beam", + "samplers": [ + { + "input": 4131, + "interpolation": "LINEAR", + "output": 4132 + }, + { + "input": 4133, + "interpolation": "LINEAR", + "output": 4134 + }, + { + "input": 4135, + "interpolation": "LINEAR", + "output": 4136 + }, + { + "input": 4137, + "interpolation": "LINEAR", + "output": 4138 + }, + { + "input": 4139, + "interpolation": "LINEAR", + "output": 4140 + }, + { + "input": 4141, + "interpolation": "LINEAR", + "output": 4142 + }, + { + "input": 4143, + "interpolation": "LINEAR", + "output": 4144 + }, + { + "input": 4145, + "interpolation": "LINEAR", + "output": 4146 + }, + { + "input": 4147, + "interpolation": "LINEAR", + "output": 4148 + }, + { + "input": 4149, + "interpolation": "LINEAR", + "output": 4150 + }, + { + "input": 4151, + "interpolation": "LINEAR", + "output": 4152 + }, + { + "input": 4153, + "interpolation": "LINEAR", + "output": 4154 + }, + { + "input": 4155, + "interpolation": "LINEAR", + "output": 4156 + }, + { + "input": 4157, + "interpolation": "LINEAR", + "output": 4158 + }, + { + "input": 4159, + "interpolation": "LINEAR", + "output": 4160 + }, + { + "input": 4161, + "interpolation": "LINEAR", + "output": 4162 + }, + { + "input": 4163, + "interpolation": "LINEAR", + "output": 4164 + }, + { + "input": 4165, + "interpolation": "LINEAR", + "output": 4166 + }, + { + "input": 4167, + "interpolation": "LINEAR", + "output": 4168 + }, + { + "input": 4169, + "interpolation": "LINEAR", + "output": 4170 + }, + { + "input": 4171, + "interpolation": "LINEAR", + "output": 4172 + }, + { + "input": 4173, + "interpolation": "LINEAR", + "output": 4174 + }, + { + "input": 4175, + "interpolation": "LINEAR", + "output": 4176 + }, + { + "input": 4177, + "interpolation": "LINEAR", + "output": 4178 + }, + { + "input": 4179, + "interpolation": "LINEAR", + "output": 4180 + }, + { + "input": 4181, + "interpolation": "LINEAR", + "output": 4182 + }, + { + "input": 4183, + "interpolation": "LINEAR", + "output": 4184 + }, + { + "input": 4185, + "interpolation": "LINEAR", + "output": 4186 + }, + { + "input": 4187, + "interpolation": "LINEAR", + "output": 4188 + }, + { + "input": 4189, + "interpolation": "LINEAR", + "output": 4190 + }, + { + "input": 4191, + "interpolation": "LINEAR", + "output": 4192 + }, + { + "input": 4193, + "interpolation": "LINEAR", + "output": 4194 + }, + { + "input": 4195, + "interpolation": "LINEAR", + "output": 4196 + }, + { + "input": 4197, + "interpolation": "LINEAR", + "output": 4198 + }, + { + "input": 4199, + "interpolation": "LINEAR", + "output": 4200 + }, + { + "input": 4201, + "interpolation": "LINEAR", + "output": 4202 + }, + { + "input": 4203, + "interpolation": "LINEAR", + "output": 4204 + }, + { + "input": 4205, + "interpolation": "LINEAR", + "output": 4206 + }, + { + "input": 4207, + "interpolation": "LINEAR", + "output": 4208 + }, + { + "input": 4209, + "interpolation": "LINEAR", + "output": 4210 + }, + { + "input": 4211, + "interpolation": "LINEAR", + "output": 4212 + }, + { + "input": 4213, + "interpolation": "LINEAR", + "output": 4214 + }, + { + "input": 4215, + "interpolation": "LINEAR", + "output": 4216 + }, + { + "input": 4217, + "interpolation": "LINEAR", + "output": 4218 + }, + { + "input": 4219, + "interpolation": "LINEAR", + "output": 4220 + }, + { + "input": 4221, + "interpolation": "LINEAR", + "output": 4222 + }, + { + "input": 4223, + "interpolation": "LINEAR", + "output": 4224 + }, + { + "input": 4225, + "interpolation": "LINEAR", + "output": 4226 + }, + { + "input": 4227, + "interpolation": "LINEAR", + "output": 4228 + }, + { + "input": 4229, + "interpolation": "LINEAR", + "output": 4230 + }, + { + "input": 4231, + "interpolation": "LINEAR", + "output": 4232 + }, + { + "input": 4233, + "interpolation": "LINEAR", + "output": 4234 + }, + { + "input": 4235, + "interpolation": "LINEAR", + "output": 4236 + }, + { + "input": 4237, + "interpolation": "LINEAR", + "output": 4238 + }, + { + "input": 4239, + "interpolation": "LINEAR", + "output": 4240 + }, + { + "input": 4241, + "interpolation": "LINEAR", + "output": 4242 + }, + { + "input": 4243, + "interpolation": "LINEAR", + "output": 4244 + }, + { + "input": 4245, + "interpolation": "LINEAR", + "output": 4246 + }, + { + "input": 4247, + "interpolation": "LINEAR", + "output": 4248 + }, + { + "input": 4249, + "interpolation": "LINEAR", + "output": 4250 + }, + { + "input": 4251, + "interpolation": "LINEAR", + "output": 4252 + }, + { + "input": 4253, + "interpolation": "LINEAR", + "output": 4254 + }, + { + "input": 4255, + "interpolation": "LINEAR", + "output": 4256 + }, + { + "input": 4257, + "interpolation": "LINEAR", + "output": 4258 + }, + { + "input": 4259, + "interpolation": "LINEAR", + "output": 4260 + }, + { + "input": 4261, + "interpolation": "LINEAR", + "output": 4262 + }, + { + "input": 4263, + "interpolation": "LINEAR", + "output": 4264 + }, + { + "input": 4265, + "interpolation": "LINEAR", + "output": 4266 + }, + { + "input": 4267, + "interpolation": "LINEAR", + "output": 4268 + }, + { + "input": 4269, + "interpolation": "LINEAR", + "output": 4270 + }, + { + "input": 4271, + "interpolation": "LINEAR", + "output": 4272 + }, + { + "input": 4273, + "interpolation": "LINEAR", + "output": 4274 + }, + { + "input": 4275, + "interpolation": "LINEAR", + "output": 4276 + }, + { + "input": 4277, + "interpolation": "LINEAR", + "output": 4278 + }, + { + "input": 4279, + "interpolation": "LINEAR", + "output": 4280 + }, + { + "input": 4281, + "interpolation": "LINEAR", + "output": 4282 + }, + { + "input": 4283, + "interpolation": "LINEAR", + "output": 4284 + }, + { + "input": 4285, + "interpolation": "LINEAR", + "output": 4286 + }, + { + "input": 4287, + "interpolation": "LINEAR", + "output": 4288 + }, + { + "input": 4289, + "interpolation": "LINEAR", + "output": 4290 + }, + { + "input": 4291, + "interpolation": "LINEAR", + "output": 4292 + }, + { + "input": 4293, + "interpolation": "LINEAR", + "output": 4294 + }, + { + "input": 4295, + "interpolation": "LINEAR", + "output": 4296 + }, + { + "input": 4297, + "interpolation": "LINEAR", + "output": 4298 + }, + { + "input": 4299, + "interpolation": "LINEAR", + "output": 4300 + }, + { + "input": 4301, + "interpolation": "LINEAR", + "output": 4302 + }, + { + "input": 4303, + "interpolation": "LINEAR", + "output": 4304 + }, + { + "input": 4305, + "interpolation": "LINEAR", + "output": 4306 + }, + { + "input": 4307, + "interpolation": "LINEAR", + "output": 4308 + }, + { + "input": 4309, + "interpolation": "LINEAR", + "output": 4310 + }, + { + "input": 4311, + "interpolation": "LINEAR", + "output": 4312 + }, + { + "input": 4313, + "interpolation": "LINEAR", + "output": 4314 + }, + { + "input": 4315, + "interpolation": "LINEAR", + "output": 4316 + }, + { + "input": 4317, + "interpolation": "LINEAR", + "output": 4318 + }, + { + "input": 4319, + "interpolation": "LINEAR", + "output": 4320 + }, + { + "input": 4321, + "interpolation": "LINEAR", + "output": 4322 + }, + { + "input": 4323, + "interpolation": "LINEAR", + "output": 4324 + }, + { + "input": 4325, + "interpolation": "LINEAR", + "output": 4326 + }, + { + "input": 4327, + "interpolation": "LINEAR", + "output": 4328 + }, + { + "input": 4329, + "interpolation": "LINEAR", + "output": 4330 + }, + { + "input": 4331, + "interpolation": "LINEAR", + "output": 4332 + }, + { + "input": 4333, + "interpolation": "LINEAR", + "output": 4334 + }, + { + "input": 4335, + "interpolation": "LINEAR", + "output": 4336 + }, + { + "input": 4337, + "interpolation": "LINEAR", + "output": 4338 + }, + { + "input": 4339, + "interpolation": "LINEAR", + "output": 4340 + }, + { + "input": 4341, + "interpolation": "LINEAR", + "output": 4342 + }, + { + "input": 4343, + "interpolation": "LINEAR", + "output": 4344 + }, + { + "input": 4345, + "interpolation": "LINEAR", + "output": 4346 + }, + { + "input": 4347, + "interpolation": "LINEAR", + "output": 4348 + }, + { + "input": 4349, + "interpolation": "LINEAR", + "output": 4350 + }, + { + "input": 4351, + "interpolation": "LINEAR", + "output": 4352 + }, + { + "input": 4353, + "interpolation": "LINEAR", + "output": 4354 + }, + { + "input": 4355, + "interpolation": "LINEAR", + "output": 4356 + }, + { + "input": 4357, + "interpolation": "LINEAR", + "output": 4358 + }, + { + "input": 4359, + "interpolation": "LINEAR", + "output": 4360 + }, + { + "input": 4361, + "interpolation": "LINEAR", + "output": 4362 + }, + { + "input": 4363, + "interpolation": "LINEAR", + "output": 4364 + }, + { + "input": 4365, + "interpolation": "LINEAR", + "output": 4366 + }, + { + "input": 4367, + "interpolation": "LINEAR", + "output": 4368 + }, + { + "input": 4369, + "interpolation": "LINEAR", + "output": 4370 + }, + { + "input": 4371, + "interpolation": "LINEAR", + "output": 4372 + }, + { + "input": 4373, + "interpolation": "LINEAR", + "output": 4374 + }, + { + "input": 4375, + "interpolation": "LINEAR", + "output": 4376 + }, + { + "input": 4377, + "interpolation": "LINEAR", + "output": 4378 + }, + { + "input": 4379, + "interpolation": "LINEAR", + "output": 4380 + }, + { + "input": 4381, + "interpolation": "LINEAR", + "output": 4382 + }, + { + "input": 4383, + "interpolation": "LINEAR", + "output": 4384 + }, + { + "input": 4385, + "interpolation": "LINEAR", + "output": 4386 + }, + { + "input": 4387, + "interpolation": "LINEAR", + "output": 4388 + }, + { + "input": 4389, + "interpolation": "LINEAR", + "output": 4390 + }, + { + "input": 4391, + "interpolation": "LINEAR", + "output": 4392 + }, + { + "input": 4393, + "interpolation": "LINEAR", + "output": 4394 + }, + { + "input": 4395, + "interpolation": "LINEAR", + "output": 4396 + }, + { + "input": 4397, + "interpolation": "LINEAR", + "output": 4398 + }, + { + "input": 4399, + "interpolation": "LINEAR", + "output": 4400 + }, + { + "input": 4401, + "interpolation": "LINEAR", + "output": 4402 + }, + { + "input": 4403, + "interpolation": "LINEAR", + "output": 4404 + }, + { + "input": 4405, + "interpolation": "LINEAR", + "output": 4406 + }, + { + "input": 4407, + "interpolation": "LINEAR", + "output": 4408 + }, + { + "input": 4409, + "interpolation": "LINEAR", + "output": 4410 + }, + { + "input": 4411, + "interpolation": "LINEAR", + "output": 4412 + }, + { + "input": 4413, + "interpolation": "LINEAR", + "output": 4414 + }, + { + "input": 4415, + "interpolation": "LINEAR", + "output": 4416 + }, + { + "input": 4417, + "interpolation": "LINEAR", + "output": 4418 + }, + { + "input": 4419, + "interpolation": "LINEAR", + "output": 4420 + }, + { + "input": 4421, + "interpolation": "LINEAR", + "output": 4422 + }, + { + "input": 4423, + "interpolation": "LINEAR", + "output": 4424 + }, + { + "input": 4425, + "interpolation": "LINEAR", + "output": 4426 + }, + { + "input": 4427, + "interpolation": "LINEAR", + "output": 4428 + }, + { + "input": 4429, + "interpolation": "LINEAR", + "output": 4430 + }, + { + "input": 4431, + "interpolation": "LINEAR", + "output": 4432 + }, + { + "input": 4433, + "interpolation": "LINEAR", + "output": 4434 + }, + { + "input": 4435, + "interpolation": "LINEAR", + "output": 4436 + }, + { + "input": 4437, + "interpolation": "LINEAR", + "output": 4438 + }, + { + "input": 4439, + "interpolation": "LINEAR", + "output": 4440 + }, + { + "input": 4441, + "interpolation": "LINEAR", + "output": 4442 + }, + { + "input": 4443, + "interpolation": "LINEAR", + "output": 4444 + }, + { + "input": 4445, + "interpolation": "LINEAR", + "output": 4446 + }, + { + "input": 4447, + "interpolation": "LINEAR", + "output": 4448 + }, + { + "input": 4449, + "interpolation": "LINEAR", + "output": 4450 + }, + { + "input": 4451, + "interpolation": "LINEAR", + "output": 4452 + }, + { + "input": 4453, + "interpolation": "LINEAR", + "output": 4454 + }, + { + "input": 4455, + "interpolation": "LINEAR", + "output": 4456 + }, + { + "input": 4457, + "interpolation": "LINEAR", + "output": 4458 + }, + { + "input": 4459, + "interpolation": "LINEAR", + "output": 4460 + }, + { + "input": 4461, + "interpolation": "LINEAR", + "output": 4462 + }, + { + "input": 4463, + "interpolation": "LINEAR", + "output": 4464 + }, + { + "input": 4465, + "interpolation": "LINEAR", + "output": 4466 + }, + { + "input": 4467, + "interpolation": "LINEAR", + "output": 4468 + }, + { + "input": 4469, + "interpolation": "LINEAR", + "output": 4470 + }, + { + "input": 4471, + "interpolation": "LINEAR", + "output": 4472 + }, + { + "input": 4473, + "interpolation": "LINEAR", + "output": 4474 + }, + { + "input": 4475, + "interpolation": "LINEAR", + "output": 4476 + }, + { + "input": 4477, + "interpolation": "LINEAR", + "output": 4478 + }, + { + "input": 4479, + "interpolation": "LINEAR", + "output": 4480 + }, + { + "input": 4481, + "interpolation": "LINEAR", + "output": 4482 + }, + { + "input": 4483, + "interpolation": "LINEAR", + "output": 4484 + }, + { + "input": 4485, + "interpolation": "LINEAR", + "output": 4486 + }, + { + "input": 4487, + "interpolation": "LINEAR", + "output": 4488 + }, + { + "input": 4489, + "interpolation": "LINEAR", + "output": 4490 + }, + { + "input": 4491, + "interpolation": "LINEAR", + "output": 4492 + }, + { + "input": 4493, + "interpolation": "LINEAR", + "output": 4494 + }, + { + "input": 4495, + "interpolation": "LINEAR", + "output": 4496 + }, + { + "input": 4497, + "interpolation": "LINEAR", + "output": 4498 + }, + { + "input": 4499, + "interpolation": "LINEAR", + "output": 4500 + }, + { + "input": 4501, + "interpolation": "LINEAR", + "output": 4502 + }, + { + "input": 4503, + "interpolation": "LINEAR", + "output": 4504 + }, + { + "input": 4505, + "interpolation": "LINEAR", + "output": 4506 + }, + { + "input": 4507, + "interpolation": "LINEAR", + "output": 4508 + }, + { + "input": 4509, + "interpolation": "LINEAR", + "output": 4510 + }, + { + "input": 4511, + "interpolation": "LINEAR", + "output": 4512 + }, + { + "input": 4513, + "interpolation": "LINEAR", + "output": 4514 + }, + { + "input": 4515, + "interpolation": "LINEAR", + "output": 4516 + }, + { + "input": 4517, + "interpolation": "LINEAR", + "output": 4518 + }, + { + "input": 4519, + "interpolation": "LINEAR", + "output": 4520 + }, + { + "input": 4521, + "interpolation": "LINEAR", + "output": 4522 + }, + { + "input": 4523, + "interpolation": "LINEAR", + "output": 4524 + }, + { + "input": 4525, + "interpolation": "LINEAR", + "output": 4526 + }, + { + "input": 4527, + "interpolation": "LINEAR", + "output": 4528 + }, + { + "input": 4529, + "interpolation": "LINEAR", + "output": 4530 + }, + { + "input": 4531, + "interpolation": "LINEAR", + "output": 4532 + }, + { + "input": 4533, + "interpolation": "LINEAR", + "output": 4534 + }, + { + "input": 4535, + "interpolation": "LINEAR", + "output": 4536 + }, + { + "input": 4537, + "interpolation": "LINEAR", + "output": 4538 + }, + { + "input": 4539, + "interpolation": "LINEAR", + "output": 4540 + }, + { + "input": 4541, + "interpolation": "LINEAR", + "output": 4542 + }, + { + "input": 4543, + "interpolation": "LINEAR", + "output": 4544 + }, + { + "input": 4545, + "interpolation": "LINEAR", + "output": 4546 + }, + { + "input": 4547, + "interpolation": "LINEAR", + "output": 4548 + }, + { + "input": 4549, + "interpolation": "LINEAR", + "output": 4550 + }, + { + "input": 4551, + "interpolation": "LINEAR", + "output": 4552 + }, + { + "input": 4553, + "interpolation": "LINEAR", + "output": 4554 + }, + { + "input": 4555, + "interpolation": "LINEAR", + "output": 4556 + }, + { + "input": 4557, + "interpolation": "LINEAR", + "output": 4558 + }, + { + "input": 4559, + "interpolation": "LINEAR", + "output": 4560 + }, + { + "input": 4561, + "interpolation": "LINEAR", + "output": 4562 + }, + { + "input": 4563, + "interpolation": "LINEAR", + "output": 4564 + }, + { + "input": 4565, + "interpolation": "LINEAR", + "output": 4566 + }, + { + "input": 4567, + "interpolation": "LINEAR", + "output": 4568 + }, + { + "input": 4569, + "interpolation": "LINEAR", + "output": 4570 + }, + { + "input": 4571, + "interpolation": "LINEAR", + "output": 4572 + }, + { + "input": 4573, + "interpolation": "LINEAR", + "output": 4574 + }, + { + "input": 4575, + "interpolation": "LINEAR", + "output": 4576 + }, + { + "input": 4577, + "interpolation": "LINEAR", + "output": 4578 + }, + { + "input": 4579, + "interpolation": "LINEAR", + "output": 4580 + }, + { + "input": 4581, + "interpolation": "LINEAR", + "output": 4582 + }, + { + "input": 4583, + "interpolation": "LINEAR", + "output": 4584 + }, + { + "input": 4585, + "interpolation": "LINEAR", + "output": 4586 + }, + { + "input": 4587, + "interpolation": "LINEAR", + "output": 4588 + }, + { + "input": 4589, + "interpolation": "LINEAR", + "output": 4590 + }, + { + "input": 4591, + "interpolation": "LINEAR", + "output": 4592 + }, + { + "input": 4593, + "interpolation": "LINEAR", + "output": 4594 + }, + { + "input": 4595, + "interpolation": "LINEAR", + "output": 4596 + }, + { + "input": 4597, + "interpolation": "LINEAR", + "output": 4598 + }, + { + "input": 4599, + "interpolation": "LINEAR", + "output": 4600 + }, + { + "input": 4601, + "interpolation": "LINEAR", + "output": 4602 + }, + { + "input": 4603, + "interpolation": "LINEAR", + "output": 4604 + }, + { + "input": 4605, + "interpolation": "LINEAR", + "output": 4606 + }, + { + "input": 4607, + "interpolation": "LINEAR", + "output": 4608 + }, + { + "input": 4609, + "interpolation": "LINEAR", + "output": 4610 + }, + { + "input": 4611, + "interpolation": "LINEAR", + "output": 4612 + }, + { + "input": 4613, + "interpolation": "LINEAR", + "output": 4614 + }, + { + "input": 4615, + "interpolation": "LINEAR", + "output": 4616 + }, + { + "input": 4617, + "interpolation": "LINEAR", + "output": 4618 + }, + { + "input": 4619, + "interpolation": "LINEAR", + "output": 4620 + }, + { + "input": 4621, + "interpolation": "LINEAR", + "output": 4622 + }, + { + "input": 4623, + "interpolation": "LINEAR", + "output": 4624 + }, + { + "input": 4625, + "interpolation": "LINEAR", + "output": 4626 + }, + { + "input": 4627, + "interpolation": "LINEAR", + "output": 4628 + }, + { + "input": 4629, + "interpolation": "LINEAR", + "output": 4630 + }, + { + "input": 4631, + "interpolation": "LINEAR", + "output": 4632 + }, + { + "input": 4633, + "interpolation": "LINEAR", + "output": 4634 + }, + { + "input": 4635, + "interpolation": "LINEAR", + "output": 4636 + }, + { + "input": 4637, + "interpolation": "LINEAR", + "output": 4638 + }, + { + "input": 4639, + "interpolation": "LINEAR", + "output": 4640 + }, + { + "input": 4641, + "interpolation": "LINEAR", + "output": 4642 + }, + { + "input": 4643, + "interpolation": "LINEAR", + "output": 4644 + }, + { + "input": 4645, + "interpolation": "LINEAR", + "output": 4646 + }, + { + "input": 4647, + "interpolation": "LINEAR", + "output": 4648 + }, + { + "input": 4649, + "interpolation": "LINEAR", + "output": 4650 + }, + { + "input": 4651, + "interpolation": "LINEAR", + "output": 4652 + }, + { + "input": 4653, + "interpolation": "LINEAR", + "output": 4654 + }, + { + "input": 4655, + "interpolation": "LINEAR", + "output": 4656 + }, + { + "input": 4657, + "interpolation": "LINEAR", + "output": 4658 + }, + { + "input": 4659, + "interpolation": "LINEAR", + "output": 4660 + }, + { + "input": 4661, + "interpolation": "LINEAR", + "output": 4662 + }, + { + "input": 4663, + "interpolation": "LINEAR", + "output": 4664 + }, + { + "input": 4665, + "interpolation": "LINEAR", + "output": 4666 + }, + { + "input": 4667, + "interpolation": "LINEAR", + "output": 4668 + }, + { + "input": 4669, + "interpolation": "LINEAR", + "output": 4670 + }, + { + "input": 4671, + "interpolation": "LINEAR", + "output": 4672 + }, + { + "input": 4673, + "interpolation": "LINEAR", + "output": 4674 + }, + { + "input": 4675, + "interpolation": "LINEAR", + "output": 4676 + }, + { + "input": 4677, + "interpolation": "LINEAR", + "output": 4678 + }, + { + "input": 4679, + "interpolation": "LINEAR", + "output": 4680 + }, + { + "input": 4681, + "interpolation": "LINEAR", + "output": 4682 + }, + { + "input": 4683, + "interpolation": "LINEAR", + "output": 4684 + }, + { + "input": 4685, + "interpolation": "LINEAR", + "output": 4686 + }, + { + "input": 4687, + "interpolation": "LINEAR", + "output": 4688 + }, + { + "input": 4689, + "interpolation": "LINEAR", + "output": 4690 + }, + { + "input": 4691, + "interpolation": "LINEAR", + "output": 4692 + }, + { + "input": 4693, + "interpolation": "LINEAR", + "output": 4694 + }, + { + "input": 4695, + "interpolation": "LINEAR", + "output": 4696 + }, + { + "input": 4697, + "interpolation": "LINEAR", + "output": 4698 + }, + { + "input": 4699, + "interpolation": "LINEAR", + "output": 4700 + }, + { + "input": 4701, + "interpolation": "LINEAR", + "output": 4702 + }, + { + "input": 4703, + "interpolation": "LINEAR", + "output": 4704 + }, + { + "input": 4705, + "interpolation": "LINEAR", + "output": 4706 + }, + { + "input": 4707, + "interpolation": "LINEAR", + "output": 4708 + }, + { + "input": 4709, + "interpolation": "LINEAR", + "output": 4710 + }, + { + "input": 4711, + "interpolation": "LINEAR", + "output": 4712 + }, + { + "input": 4713, + "interpolation": "LINEAR", + "output": 4714 + }, + { + "input": 4715, + "interpolation": "LINEAR", + "output": 4716 + }, + { + "input": 4717, + "interpolation": "LINEAR", + "output": 4718 + }, + { + "input": 4719, + "interpolation": "LINEAR", + "output": 4720 + }, + { + "input": 4721, + "interpolation": "LINEAR", + "output": 4722 + }, + { + "input": 4723, + "interpolation": "LINEAR", + "output": 4724 + }, + { + "input": 4725, + "interpolation": "LINEAR", + "output": 4726 + }, + { + "input": 4727, + "interpolation": "LINEAR", + "output": 4728 + }, + { + "input": 4729, + "interpolation": "LINEAR", + "output": 4730 + }, + { + "input": 4731, + "interpolation": "LINEAR", + "output": 4732 + }, + { + "input": 4733, + "interpolation": "LINEAR", + "output": 4734 + }, + { + "input": 4735, + "interpolation": "LINEAR", + "output": 4736 + }, + { + "input": 4737, + "interpolation": "LINEAR", + "output": 4738 + }, + { + "input": 4739, + "interpolation": "LINEAR", + "output": 4740 + }, + { + "input": 4741, + "interpolation": "LINEAR", + "output": 4742 + }, + { + "input": 4743, + "interpolation": "LINEAR", + "output": 4744 + }, + { + "input": 4745, + "interpolation": "LINEAR", + "output": 4746 + }, + { + "input": 4747, + "interpolation": "LINEAR", + "output": 4748 + }, + { + "input": 4749, + "interpolation": "LINEAR", + "output": 4750 + }, + { + "input": 4751, + "interpolation": "LINEAR", + "output": 4752 + }, + { + "input": 4753, + "interpolation": "LINEAR", + "output": 4754 + }, + { + "input": 4755, + "interpolation": "LINEAR", + "output": 4756 + }, + { + "input": 4757, + "interpolation": "LINEAR", + "output": 4758 + }, + { + "input": 4759, + "interpolation": "LINEAR", + "output": 4760 + }, + { + "input": 4761, + "interpolation": "LINEAR", + "output": 4762 + }, + { + "input": 4763, + "interpolation": "LINEAR", + "output": 4764 + }, + { + "input": 4765, + "interpolation": "LINEAR", + "output": 4766 + }, + { + "input": 4767, + "interpolation": "LINEAR", + "output": 4768 + }, + { + "input": 4769, + "interpolation": "LINEAR", + "output": 4770 + }, + { + "input": 4771, + "interpolation": "LINEAR", + "output": 4772 + }, + { + "input": 4773, + "interpolation": "LINEAR", + "output": 4774 + }, + { + "input": 4775, + "interpolation": "LINEAR", + "output": 4776 + }, + { + "input": 4777, + "interpolation": "LINEAR", + "output": 4778 + }, + { + "input": 4779, + "interpolation": "LINEAR", + "output": 4780 + }, + { + "input": 4781, + "interpolation": "LINEAR", + "output": 4782 + }, + { + "input": 4783, + "interpolation": "LINEAR", + "output": 4784 + }, + { + "input": 4785, + "interpolation": "LINEAR", + "output": 4786 + }, + { + "input": 4787, + "interpolation": "LINEAR", + "output": 4788 + }, + { + "input": 4789, + "interpolation": "LINEAR", + "output": 4790 + }, + { + "input": 4791, + "interpolation": "LINEAR", + "output": 4792 + }, + { + "input": 4793, + "interpolation": "LINEAR", + "output": 4794 + }, + { + "input": 4795, + "interpolation": "LINEAR", + "output": 4796 + }, + { + "input": 4797, + "interpolation": "LINEAR", + "output": 4798 + }, + { + "input": 4799, + "interpolation": "LINEAR", + "output": 4800 + }, + { + "input": 4801, + "interpolation": "LINEAR", + "output": 4802 + }, + { + "input": 4803, + "interpolation": "LINEAR", + "output": 4804 + }, + { + "input": 4805, + "interpolation": "LINEAR", + "output": 4806 + }, + { + "input": 4807, + "interpolation": "LINEAR", + "output": 4808 + }, + { + "input": 4809, + "interpolation": "LINEAR", + "output": 4810 + }, + { + "input": 4811, + "interpolation": "LINEAR", + "output": 4812 + }, + { + "input": 4813, + "interpolation": "LINEAR", + "output": 4814 + }, + { + "input": 4815, + "interpolation": "LINEAR", + "output": 4816 + }, + { + "input": 4817, + "interpolation": "LINEAR", + "output": 4818 + }, + { + "input": 4819, + "interpolation": "LINEAR", + "output": 4820 + }, + { + "input": 4821, + "interpolation": "LINEAR", + "output": 4822 + }, + { + "input": 4823, + "interpolation": "LINEAR", + "output": 4824 + }, + { + "input": 4825, + "interpolation": "LINEAR", + "output": 4826 + }, + { + "input": 4827, + "interpolation": "LINEAR", + "output": 4828 + }, + { + "input": 4829, + "interpolation": "LINEAR", + "output": 4830 + }, + { + "input": 4831, + "interpolation": "LINEAR", + "output": 4832 + }, + { + "input": 4833, + "interpolation": "LINEAR", + "output": 4834 + }, + { + "input": 4835, + "interpolation": "LINEAR", + "output": 4836 + }, + { + "input": 4837, + "interpolation": "LINEAR", + "output": 4838 + }, + { + "input": 4839, + "interpolation": "LINEAR", + "output": 4840 + }, + { + "input": 4841, + "interpolation": "LINEAR", + "output": 4842 + }, + { + "input": 4843, + "interpolation": "LINEAR", + "output": 4844 + }, + { + "input": 4845, + "interpolation": "LINEAR", + "output": 4846 + }, + { + "input": 4847, + "interpolation": "LINEAR", + "output": 4848 + }, + { + "input": 4849, + "interpolation": "LINEAR", + "output": 4850 + }, + { + "input": 4851, + "interpolation": "LINEAR", + "output": 4852 + }, + { + "input": 4853, + "interpolation": "LINEAR", + "output": 4854 + }, + { + "input": 4855, + "interpolation": "LINEAR", + "output": 4856 + }, + { + "input": 4857, + "interpolation": "LINEAR", + "output": 4858 + }, + { + "input": 4859, + "interpolation": "LINEAR", + "output": 4860 + }, + { + "input": 4861, + "interpolation": "LINEAR", + "output": 4862 + }, + { + "input": 4863, + "interpolation": "LINEAR", + "output": 4864 + }, + { + "input": 4865, + "interpolation": "LINEAR", + "output": 4866 + }, + { + "input": 4867, + "interpolation": "LINEAR", + "output": 4868 + }, + { + "input": 4869, + "interpolation": "LINEAR", + "output": 4870 + }, + { + "input": 4871, + "interpolation": "LINEAR", + "output": 4872 + }, + { + "input": 4873, + "interpolation": "LINEAR", + "output": 4874 + }, + { + "input": 4875, + "interpolation": "LINEAR", + "output": 4876 + }, + { + "input": 4877, + "interpolation": "LINEAR", + "output": 4878 + }, + { + "input": 4879, + "interpolation": "LINEAR", + "output": 4880 + }, + { + "input": 4881, + "interpolation": "LINEAR", + "output": 4882 + }, + { + "input": 4883, + "interpolation": "LINEAR", + "output": 4884 + }, + { + "input": 4885, + "interpolation": "LINEAR", + "output": 4886 + }, + { + "input": 4887, + "interpolation": "LINEAR", + "output": 4888 + }, + { + "input": 4889, + "interpolation": "LINEAR", + "output": 4890 + }, + { + "input": 4891, + "interpolation": "LINEAR", + "output": 4892 + }, + { + "input": 4893, + "interpolation": "LINEAR", + "output": 4894 + }, + { + "input": 4895, + "interpolation": "LINEAR", + "output": 4896 + }, + { + "input": 4897, + "interpolation": "LINEAR", + "output": 4898 + }, + { + "input": 4899, + "interpolation": "LINEAR", + "output": 4900 + }, + { + "input": 4901, + "interpolation": "LINEAR", + "output": 4902 + }, + { + "input": 4903, + "interpolation": "LINEAR", + "output": 4904 + }, + { + "input": 4905, + "interpolation": "LINEAR", + "output": 4906 + }, + { + "input": 4907, + "interpolation": "LINEAR", + "output": 4908 + }, + { + "input": 4909, + "interpolation": "LINEAR", + "output": 4910 + }, + { + "input": 4911, + "interpolation": "LINEAR", + "output": 4912 + }, + { + "input": 4913, + "interpolation": "LINEAR", + "output": 4914 + }, + { + "input": 4915, + "interpolation": "LINEAR", + "output": 4916 + }, + { + "input": 4917, + "interpolation": "LINEAR", + "output": 4918 + }, + { + "input": 4919, + "interpolation": "LINEAR", + "output": 4920 + }, + { + "input": 4921, + "interpolation": "LINEAR", + "output": 4922 + }, + { + "input": 4923, + "interpolation": "LINEAR", + "output": 4924 + }, + { + "input": 4925, + "interpolation": "LINEAR", + "output": 4926 + }, + { + "input": 4927, + "interpolation": "LINEAR", + "output": 4928 + }, + { + "input": 4929, + "interpolation": "LINEAR", + "output": 4930 + }, + { + "input": 4931, + "interpolation": "LINEAR", + "output": 4932 + }, + { + "input": 4933, + "interpolation": "LINEAR", + "output": 4934 + }, + { + "input": 4935, + "interpolation": "LINEAR", + "output": 4936 + }, + { + "input": 4937, + "interpolation": "LINEAR", + "output": 4938 + }, + { + "input": 4939, + "interpolation": "LINEAR", + "output": 4940 + }, + { + "input": 4941, + "interpolation": "LINEAR", + "output": 4942 + }, + { + "input": 4943, + "interpolation": "LINEAR", + "output": 4944 + }, + { + "input": 4945, + "interpolation": "LINEAR", + "output": 4946 + }, + { + "input": 4947, + "interpolation": "LINEAR", + "output": 4948 + }, + { + "input": 4949, + "interpolation": "LINEAR", + "output": 4950 + }, + { + "input": 4951, + "interpolation": "LINEAR", + "output": 4952 + }, + { + "input": 4953, + "interpolation": "LINEAR", + "output": 4954 + }, + { + "input": 4955, + "interpolation": "LINEAR", + "output": 4956 + }, + { + "input": 4957, + "interpolation": "LINEAR", + "output": 4958 + }, + { + "input": 4959, + "interpolation": "LINEAR", + "output": 4960 + }, + { + "input": 4961, + "interpolation": "LINEAR", + "output": 4962 + }, + { + "input": 4963, + "interpolation": "LINEAR", + "output": 4964 + }, + { + "input": 4965, + "interpolation": "LINEAR", + "output": 4966 + }, + { + "input": 4967, + "interpolation": "LINEAR", + "output": 4968 + }, + { + "input": 4969, + "interpolation": "LINEAR", + "output": 4970 + }, + { + "input": 4971, + "interpolation": "LINEAR", + "output": 4972 + }, + { + "input": 4973, + "interpolation": "LINEAR", + "output": 4974 + }, + { + "input": 4975, + "interpolation": "LINEAR", + "output": 4976 + }, + { + "input": 4977, + "interpolation": "LINEAR", + "output": 4978 + }, + { + "input": 4979, + "interpolation": "LINEAR", + "output": 4980 + }, + { + "input": 4981, + "interpolation": "LINEAR", + "output": 4982 + }, + { + "input": 4983, + "interpolation": "LINEAR", + "output": 4984 + }, + { + "input": 4985, + "interpolation": "LINEAR", + "output": 4986 + }, + { + "input": 4987, + "interpolation": "LINEAR", + "output": 4988 + }, + { + "input": 4989, + "interpolation": "LINEAR", + "output": 4990 + }, + { + "input": 4991, + "interpolation": "LINEAR", + "output": 4992 + }, + { + "input": 4993, + "interpolation": "LINEAR", + "output": 4994 + }, + { + "input": 4995, + "interpolation": "LINEAR", + "output": 4996 + }, + { + "input": 4997, + "interpolation": "LINEAR", + "output": 4998 + }, + { + "input": 4999, + "interpolation": "LINEAR", + "output": 5000 + }, + { + "input": 5001, + "interpolation": "LINEAR", + "output": 5002 + }, + { + "input": 5003, + "interpolation": "LINEAR", + "output": 5004 + }, + { + "input": 5005, + "interpolation": "LINEAR", + "output": 5006 + }, + { + "input": 5007, + "interpolation": "LINEAR", + "output": 5008 + }, + { + "input": 5009, + "interpolation": "LINEAR", + "output": 5010 + }, + { + "input": 5011, + "interpolation": "LINEAR", + "output": 5012 + }, + { + "input": 5013, + "interpolation": "LINEAR", + "output": 5014 + }, + { + "input": 5015, + "interpolation": "LINEAR", + "output": 5016 + }, + { + "input": 5017, + "interpolation": "LINEAR", + "output": 5018 + }, + { + "input": 5019, + "interpolation": "LINEAR", + "output": 5020 + }, + { + "input": 5021, + "interpolation": "LINEAR", + "output": 5022 + }, + { + "input": 5023, + "interpolation": "LINEAR", + "output": 5024 + }, + { + "input": 5025, + "interpolation": "LINEAR", + "output": 5026 + }, + { + "input": 5027, + "interpolation": "LINEAR", + "output": 5028 + }, + { + "input": 5029, + "interpolation": "LINEAR", + "output": 5030 + }, + { + "input": 5031, + "interpolation": "LINEAR", + "output": 5032 + }, + { + "input": 5033, + "interpolation": "LINEAR", + "output": 5034 + }, + { + "input": 5035, + "interpolation": "LINEAR", + "output": 5036 + }, + { + "input": 5037, + "interpolation": "LINEAR", + "output": 5038 + }, + { + "input": 5039, + "interpolation": "LINEAR", + "output": 5040 + }, + { + "input": 5041, + "interpolation": "LINEAR", + "output": 5042 + }, + { + "input": 5043, + "interpolation": "LINEAR", + "output": 5044 + }, + { + "input": 5045, + "interpolation": "LINEAR", + "output": 5046 + }, + { + "input": 5047, + "interpolation": "LINEAR", + "output": 5048 + }, + { + "input": 5049, + "interpolation": "LINEAR", + "output": 5050 + }, + { + "input": 5051, + "interpolation": "LINEAR", + "output": 5052 + }, + { + "input": 5053, + "interpolation": "LINEAR", + "output": 5054 + }, + { + "input": 5055, + "interpolation": "LINEAR", + "output": 5056 + }, + { + "input": 5057, + "interpolation": "LINEAR", + "output": 5058 + }, + { + "input": 5059, + "interpolation": "LINEAR", + "output": 5060 + }, + { + "input": 5061, + "interpolation": "LINEAR", + "output": 5062 + }, + { + "input": 5063, + "interpolation": "LINEAR", + "output": 5064 + }, + { + "input": 5065, + "interpolation": "LINEAR", + "output": 5066 + }, + { + "input": 5067, + "interpolation": "LINEAR", + "output": 5068 + }, + { + "input": 5069, + "interpolation": "LINEAR", + "output": 5070 + }, + { + "input": 5071, + "interpolation": "LINEAR", + "output": 5072 + }, + { + "input": 5073, + "interpolation": "LINEAR", + "output": 5074 + }, + { + "input": 5075, + "interpolation": "LINEAR", + "output": 5076 + }, + { + "input": 5077, + "interpolation": "LINEAR", + "output": 5078 + }, + { + "input": 5079, + "interpolation": "LINEAR", + "output": 5080 + }, + { + "input": 5081, + "interpolation": "LINEAR", + "output": 5082 + }, + { + "input": 5083, + "interpolation": "LINEAR", + "output": 5084 + }, + { + "input": 5085, + "interpolation": "LINEAR", + "output": 5086 + }, + { + "input": 5087, + "interpolation": "LINEAR", + "output": 5088 + }, + { + "input": 5089, + "interpolation": "LINEAR", + "output": 5090 + }, + { + "input": 5091, + "interpolation": "LINEAR", + "output": 5092 + }, + { + "input": 5093, + "interpolation": "LINEAR", + "output": 5094 + }, + { + "input": 5095, + "interpolation": "LINEAR", + "output": 5096 + }, + { + "input": 5097, + "interpolation": "LINEAR", + "output": 5098 + }, + { + "input": 5099, + "interpolation": "LINEAR", + "output": 5100 + }, + { + "input": 5101, + "interpolation": "LINEAR", + "output": 5102 + }, + { + "input": 5103, + "interpolation": "LINEAR", + "output": 5104 + }, + { + "input": 5105, + "interpolation": "LINEAR", + "output": 5106 + }, + { + "input": 5107, + "interpolation": "LINEAR", + "output": 5108 + }, + { + "input": 5109, + "interpolation": "LINEAR", + "output": 5110 + }, + { + "input": 5111, + "interpolation": "LINEAR", + "output": 5112 + }, + { + "input": 5113, + "interpolation": "LINEAR", + "output": 5114 + }, + { + "input": 5115, + "interpolation": "LINEAR", + "output": 5116 + }, + { + "input": 5117, + "interpolation": "LINEAR", + "output": 5118 + }, + { + "input": 5119, + "interpolation": "LINEAR", + "output": 5120 + }, + { + "input": 5121, + "interpolation": "LINEAR", + "output": 5122 + }, + { + "input": 5123, + "interpolation": "LINEAR", + "output": 5124 + }, + { + "input": 5125, + "interpolation": "LINEAR", + "output": 5126 + }, + { + "input": 5127, + "interpolation": "LINEAR", + "output": 5128 + }, + { + "input": 5129, + "interpolation": "LINEAR", + "output": 5130 + }, + { + "input": 5131, + "interpolation": "LINEAR", + "output": 5132 + }, + { + "input": 5133, + "interpolation": "LINEAR", + "output": 5134 + }, + { + "input": 5135, + "interpolation": "LINEAR", + "output": 5136 + }, + { + "input": 5137, + "interpolation": "LINEAR", + "output": 5138 + }, + { + "input": 5139, + "interpolation": "LINEAR", + "output": 5140 + }, + { + "input": 5141, + "interpolation": "LINEAR", + "output": 5142 + }, + { + "input": 5143, + "interpolation": "LINEAR", + "output": 5144 + }, + { + "input": 5145, + "interpolation": "LINEAR", + "output": 5146 + }, + { + "input": 5147, + "interpolation": "LINEAR", + "output": 5148 + }, + { + "input": 5149, + "interpolation": "LINEAR", + "output": 5150 + }, + { + "input": 5151, + "interpolation": "LINEAR", + "output": 5152 + }, + { + "input": 5153, + "interpolation": "LINEAR", + "output": 5154 + }, + { + "input": 5155, + "interpolation": "LINEAR", + "output": 5156 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Idle", + "samplers": [ + { + "input": 5157, + "interpolation": "LINEAR", + "output": 5158 + }, + { + "input": 5159, + "interpolation": "LINEAR", + "output": 5160 + }, + { + "input": 5161, + "interpolation": "LINEAR", + "output": 5162 + }, + { + "input": 5163, + "interpolation": "LINEAR", + "output": 5164 + }, + { + "input": 5165, + "interpolation": "LINEAR", + "output": 5166 + }, + { + "input": 5167, + "interpolation": "LINEAR", + "output": 5168 + }, + { + "input": 5169, + "interpolation": "LINEAR", + "output": 5170 + }, + { + "input": 5171, + "interpolation": "LINEAR", + "output": 5172 + }, + { + "input": 5173, + "interpolation": "LINEAR", + "output": 5174 + }, + { + "input": 5175, + "interpolation": "LINEAR", + "output": 5176 + }, + { + "input": 5177, + "interpolation": "LINEAR", + "output": 5178 + }, + { + "input": 5179, + "interpolation": "LINEAR", + "output": 5180 + }, + { + "input": 5181, + "interpolation": "LINEAR", + "output": 5182 + }, + { + "input": 5183, + "interpolation": "LINEAR", + "output": 5184 + }, + { + "input": 5185, + "interpolation": "LINEAR", + "output": 5186 + }, + { + "input": 5187, + "interpolation": "LINEAR", + "output": 5188 + }, + { + "input": 5189, + "interpolation": "LINEAR", + "output": 5190 + }, + { + "input": 5191, + "interpolation": "LINEAR", + "output": 5192 + }, + { + "input": 5193, + "interpolation": "LINEAR", + "output": 5194 + }, + { + "input": 5195, + "interpolation": "LINEAR", + "output": 5196 + }, + { + "input": 5197, + "interpolation": "LINEAR", + "output": 5198 + }, + { + "input": 5199, + "interpolation": "LINEAR", + "output": 5200 + }, + { + "input": 5201, + "interpolation": "LINEAR", + "output": 5202 + }, + { + "input": 5203, + "interpolation": "LINEAR", + "output": 5204 + }, + { + "input": 5205, + "interpolation": "LINEAR", + "output": 5206 + }, + { + "input": 5207, + "interpolation": "LINEAR", + "output": 5208 + }, + { + "input": 5209, + "interpolation": "LINEAR", + "output": 5210 + }, + { + "input": 5211, + "interpolation": "LINEAR", + "output": 5212 + }, + { + "input": 5213, + "interpolation": "LINEAR", + "output": 5214 + }, + { + "input": 5215, + "interpolation": "LINEAR", + "output": 5216 + }, + { + "input": 5217, + "interpolation": "LINEAR", + "output": 5218 + }, + { + "input": 5219, + "interpolation": "LINEAR", + "output": 5220 + }, + { + "input": 5221, + "interpolation": "LINEAR", + "output": 5222 + }, + { + "input": 5223, + "interpolation": "LINEAR", + "output": 5224 + }, + { + "input": 5225, + "interpolation": "LINEAR", + "output": 5226 + }, + { + "input": 5227, + "interpolation": "LINEAR", + "output": 5228 + }, + { + "input": 5229, + "interpolation": "LINEAR", + "output": 5230 + }, + { + "input": 5231, + "interpolation": "LINEAR", + "output": 5232 + }, + { + "input": 5233, + "interpolation": "LINEAR", + "output": 5234 + }, + { + "input": 5235, + "interpolation": "LINEAR", + "output": 5236 + }, + { + "input": 5237, + "interpolation": "LINEAR", + "output": 5238 + }, + { + "input": 5239, + "interpolation": "LINEAR", + "output": 5240 + }, + { + "input": 5241, + "interpolation": "LINEAR", + "output": 5242 + }, + { + "input": 5243, + "interpolation": "LINEAR", + "output": 5244 + }, + { + "input": 5245, + "interpolation": "LINEAR", + "output": 5246 + }, + { + "input": 5247, + "interpolation": "LINEAR", + "output": 5248 + }, + { + "input": 5249, + "interpolation": "LINEAR", + "output": 5250 + }, + { + "input": 5251, + "interpolation": "LINEAR", + "output": 5252 + }, + { + "input": 5253, + "interpolation": "LINEAR", + "output": 5254 + }, + { + "input": 5255, + "interpolation": "LINEAR", + "output": 5256 + }, + { + "input": 5257, + "interpolation": "LINEAR", + "output": 5258 + }, + { + "input": 5259, + "interpolation": "LINEAR", + "output": 5260 + }, + { + "input": 5261, + "interpolation": "LINEAR", + "output": 5262 + }, + { + "input": 5263, + "interpolation": "LINEAR", + "output": 5264 + }, + { + "input": 5265, + "interpolation": "LINEAR", + "output": 5266 + }, + { + "input": 5267, + "interpolation": "LINEAR", + "output": 5268 + }, + { + "input": 5269, + "interpolation": "LINEAR", + "output": 5270 + }, + { + "input": 5271, + "interpolation": "LINEAR", + "output": 5272 + }, + { + "input": 5273, + "interpolation": "LINEAR", + "output": 5274 + }, + { + "input": 5275, + "interpolation": "LINEAR", + "output": 5276 + }, + { + "input": 5277, + "interpolation": "LINEAR", + "output": 5278 + }, + { + "input": 5279, + "interpolation": "LINEAR", + "output": 5280 + }, + { + "input": 5281, + "interpolation": "LINEAR", + "output": 5282 + }, + { + "input": 5283, + "interpolation": "LINEAR", + "output": 5284 + }, + { + "input": 5285, + "interpolation": "LINEAR", + "output": 5286 + }, + { + "input": 5287, + "interpolation": "LINEAR", + "output": 5288 + }, + { + "input": 5289, + "interpolation": "LINEAR", + "output": 5290 + }, + { + "input": 5291, + "interpolation": "LINEAR", + "output": 5292 + }, + { + "input": 5293, + "interpolation": "LINEAR", + "output": 5294 + }, + { + "input": 5295, + "interpolation": "LINEAR", + "output": 5296 + }, + { + "input": 5297, + "interpolation": "LINEAR", + "output": 5298 + }, + { + "input": 5299, + "interpolation": "LINEAR", + "output": 5300 + }, + { + "input": 5301, + "interpolation": "LINEAR", + "output": 5302 + }, + { + "input": 5303, + "interpolation": "LINEAR", + "output": 5304 + }, + { + "input": 5305, + "interpolation": "LINEAR", + "output": 5306 + }, + { + "input": 5307, + "interpolation": "LINEAR", + "output": 5308 + }, + { + "input": 5309, + "interpolation": "LINEAR", + "output": 5310 + }, + { + "input": 5311, + "interpolation": "LINEAR", + "output": 5312 + }, + { + "input": 5313, + "interpolation": "LINEAR", + "output": 5314 + }, + { + "input": 5315, + "interpolation": "LINEAR", + "output": 5316 + }, + { + "input": 5317, + "interpolation": "LINEAR", + "output": 5318 + }, + { + "input": 5319, + "interpolation": "LINEAR", + "output": 5320 + }, + { + "input": 5321, + "interpolation": "LINEAR", + "output": 5322 + }, + { + "input": 5323, + "interpolation": "LINEAR", + "output": 5324 + }, + { + "input": 5325, + "interpolation": "LINEAR", + "output": 5326 + }, + { + "input": 5327, + "interpolation": "LINEAR", + "output": 5328 + }, + { + "input": 5329, + "interpolation": "LINEAR", + "output": 5330 + }, + { + "input": 5331, + "interpolation": "LINEAR", + "output": 5332 + }, + { + "input": 5333, + "interpolation": "LINEAR", + "output": 5334 + }, + { + "input": 5335, + "interpolation": "LINEAR", + "output": 5336 + }, + { + "input": 5337, + "interpolation": "LINEAR", + "output": 5338 + }, + { + "input": 5339, + "interpolation": "LINEAR", + "output": 5340 + }, + { + "input": 5341, + "interpolation": "LINEAR", + "output": 5342 + }, + { + "input": 5343, + "interpolation": "LINEAR", + "output": 5344 + }, + { + "input": 5345, + "interpolation": "LINEAR", + "output": 5346 + }, + { + "input": 5347, + "interpolation": "LINEAR", + "output": 5348 + }, + { + "input": 5349, + "interpolation": "LINEAR", + "output": 5350 + }, + { + "input": 5351, + "interpolation": "LINEAR", + "output": 5352 + }, + { + "input": 5353, + "interpolation": "LINEAR", + "output": 5354 + }, + { + "input": 5355, + "interpolation": "LINEAR", + "output": 5356 + }, + { + "input": 5357, + "interpolation": "LINEAR", + "output": 5358 + }, + { + "input": 5359, + "interpolation": "LINEAR", + "output": 5360 + }, + { + "input": 5361, + "interpolation": "LINEAR", + "output": 5362 + }, + { + "input": 5363, + "interpolation": "LINEAR", + "output": 5364 + }, + { + "input": 5365, + "interpolation": "LINEAR", + "output": 5366 + }, + { + "input": 5367, + "interpolation": "LINEAR", + "output": 5368 + }, + { + "input": 5369, + "interpolation": "LINEAR", + "output": 5370 + }, + { + "input": 5371, + "interpolation": "LINEAR", + "output": 5372 + }, + { + "input": 5373, + "interpolation": "LINEAR", + "output": 5374 + }, + { + "input": 5375, + "interpolation": "LINEAR", + "output": 5376 + }, + { + "input": 5377, + "interpolation": "LINEAR", + "output": 5378 + }, + { + "input": 5379, + "interpolation": "LINEAR", + "output": 5380 + }, + { + "input": 5381, + "interpolation": "LINEAR", + "output": 5382 + }, + { + "input": 5383, + "interpolation": "LINEAR", + "output": 5384 + }, + { + "input": 5385, + "interpolation": "LINEAR", + "output": 5386 + }, + { + "input": 5387, + "interpolation": "LINEAR", + "output": 5388 + }, + { + "input": 5389, + "interpolation": "LINEAR", + "output": 5390 + }, + { + "input": 5391, + "interpolation": "LINEAR", + "output": 5392 + }, + { + "input": 5393, + "interpolation": "LINEAR", + "output": 5394 + }, + { + "input": 5395, + "interpolation": "LINEAR", + "output": 5396 + }, + { + "input": 5397, + "interpolation": "LINEAR", + "output": 5398 + }, + { + "input": 5399, + "interpolation": "LINEAR", + "output": 5400 + }, + { + "input": 5401, + "interpolation": "LINEAR", + "output": 5402 + }, + { + "input": 5403, + "interpolation": "LINEAR", + "output": 5404 + }, + { + "input": 5405, + "interpolation": "LINEAR", + "output": 5406 + }, + { + "input": 5407, + "interpolation": "LINEAR", + "output": 5408 + }, + { + "input": 5409, + "interpolation": "LINEAR", + "output": 5410 + }, + { + "input": 5411, + "interpolation": "LINEAR", + "output": 5412 + }, + { + "input": 5413, + "interpolation": "LINEAR", + "output": 5414 + }, + { + "input": 5415, + "interpolation": "LINEAR", + "output": 5416 + }, + { + "input": 5417, + "interpolation": "LINEAR", + "output": 5418 + }, + { + "input": 5419, + "interpolation": "LINEAR", + "output": 5420 + }, + { + "input": 5421, + "interpolation": "LINEAR", + "output": 5422 + }, + { + "input": 5423, + "interpolation": "LINEAR", + "output": 5424 + }, + { + "input": 5425, + "interpolation": "LINEAR", + "output": 5426 + }, + { + "input": 5427, + "interpolation": "LINEAR", + "output": 5428 + }, + { + "input": 5429, + "interpolation": "LINEAR", + "output": 5430 + }, + { + "input": 5431, + "interpolation": "LINEAR", + "output": 5432 + }, + { + "input": 5433, + "interpolation": "LINEAR", + "output": 5434 + }, + { + "input": 5435, + "interpolation": "LINEAR", + "output": 5436 + }, + { + "input": 5437, + "interpolation": "LINEAR", + "output": 5438 + }, + { + "input": 5439, + "interpolation": "LINEAR", + "output": 5440 + }, + { + "input": 5441, + "interpolation": "LINEAR", + "output": 5442 + }, + { + "input": 5443, + "interpolation": "LINEAR", + "output": 5444 + }, + { + "input": 5445, + "interpolation": "LINEAR", + "output": 5446 + }, + { + "input": 5447, + "interpolation": "LINEAR", + "output": 5448 + }, + { + "input": 5449, + "interpolation": "LINEAR", + "output": 5450 + }, + { + "input": 5451, + "interpolation": "LINEAR", + "output": 5452 + }, + { + "input": 5453, + "interpolation": "LINEAR", + "output": 5454 + }, + { + "input": 5455, + "interpolation": "LINEAR", + "output": 5456 + }, + { + "input": 5457, + "interpolation": "LINEAR", + "output": 5458 + }, + { + "input": 5459, + "interpolation": "LINEAR", + "output": 5460 + }, + { + "input": 5461, + "interpolation": "LINEAR", + "output": 5462 + }, + { + "input": 5463, + "interpolation": "LINEAR", + "output": 5464 + }, + { + "input": 5465, + "interpolation": "LINEAR", + "output": 5466 + }, + { + "input": 5467, + "interpolation": "LINEAR", + "output": 5468 + }, + { + "input": 5469, + "interpolation": "LINEAR", + "output": 5470 + }, + { + "input": 5471, + "interpolation": "LINEAR", + "output": 5472 + }, + { + "input": 5473, + "interpolation": "LINEAR", + "output": 5474 + }, + { + "input": 5475, + "interpolation": "LINEAR", + "output": 5476 + }, + { + "input": 5477, + "interpolation": "LINEAR", + "output": 5478 + }, + { + "input": 5479, + "interpolation": "LINEAR", + "output": 5480 + }, + { + "input": 5481, + "interpolation": "LINEAR", + "output": 5482 + }, + { + "input": 5483, + "interpolation": "LINEAR", + "output": 5484 + }, + { + "input": 5485, + "interpolation": "LINEAR", + "output": 5486 + }, + { + "input": 5487, + "interpolation": "LINEAR", + "output": 5488 + }, + { + "input": 5489, + "interpolation": "LINEAR", + "output": 5490 + }, + { + "input": 5491, + "interpolation": "LINEAR", + "output": 5492 + }, + { + "input": 5493, + "interpolation": "LINEAR", + "output": 5494 + }, + { + "input": 5495, + "interpolation": "LINEAR", + "output": 5496 + }, + { + "input": 5497, + "interpolation": "LINEAR", + "output": 5498 + }, + { + "input": 5499, + "interpolation": "LINEAR", + "output": 5500 + }, + { + "input": 5501, + "interpolation": "LINEAR", + "output": 5502 + }, + { + "input": 5503, + "interpolation": "LINEAR", + "output": 5504 + }, + { + "input": 5505, + "interpolation": "LINEAR", + "output": 5506 + }, + { + "input": 5507, + "interpolation": "LINEAR", + "output": 5508 + }, + { + "input": 5509, + "interpolation": "LINEAR", + "output": 5510 + }, + { + "input": 5511, + "interpolation": "LINEAR", + "output": 5512 + }, + { + "input": 5513, + "interpolation": "LINEAR", + "output": 5514 + }, + { + "input": 5515, + "interpolation": "LINEAR", + "output": 5516 + }, + { + "input": 5517, + "interpolation": "LINEAR", + "output": 5518 + }, + { + "input": 5519, + "interpolation": "LINEAR", + "output": 5520 + }, + { + "input": 5521, + "interpolation": "LINEAR", + "output": 5522 + }, + { + "input": 5523, + "interpolation": "LINEAR", + "output": 5524 + }, + { + "input": 5525, + "interpolation": "LINEAR", + "output": 5526 + }, + { + "input": 5527, + "interpolation": "LINEAR", + "output": 5528 + }, + { + "input": 5529, + "interpolation": "LINEAR", + "output": 5530 + }, + { + "input": 5531, + "interpolation": "LINEAR", + "output": 5532 + }, + { + "input": 5533, + "interpolation": "LINEAR", + "output": 5534 + }, + { + "input": 5535, + "interpolation": "LINEAR", + "output": 5536 + }, + { + "input": 5537, + "interpolation": "LINEAR", + "output": 5538 + }, + { + "input": 5539, + "interpolation": "LINEAR", + "output": 5540 + }, + { + "input": 5541, + "interpolation": "LINEAR", + "output": 5542 + }, + { + "input": 5543, + "interpolation": "LINEAR", + "output": 5544 + }, + { + "input": 5545, + "interpolation": "LINEAR", + "output": 5546 + }, + { + "input": 5547, + "interpolation": "LINEAR", + "output": 5548 + }, + { + "input": 5549, + "interpolation": "LINEAR", + "output": 5550 + }, + { + "input": 5551, + "interpolation": "LINEAR", + "output": 5552 + }, + { + "input": 5553, + "interpolation": "LINEAR", + "output": 5554 + }, + { + "input": 5555, + "interpolation": "LINEAR", + "output": 5556 + }, + { + "input": 5557, + "interpolation": "LINEAR", + "output": 5558 + }, + { + "input": 5559, + "interpolation": "LINEAR", + "output": 5560 + }, + { + "input": 5561, + "interpolation": "LINEAR", + "output": 5562 + }, + { + "input": 5563, + "interpolation": "LINEAR", + "output": 5564 + }, + { + "input": 5565, + "interpolation": "LINEAR", + "output": 5566 + }, + { + "input": 5567, + "interpolation": "LINEAR", + "output": 5568 + }, + { + "input": 5569, + "interpolation": "LINEAR", + "output": 5570 + }, + { + "input": 5571, + "interpolation": "LINEAR", + "output": 5572 + }, + { + "input": 5573, + "interpolation": "LINEAR", + "output": 5574 + }, + { + "input": 5575, + "interpolation": "LINEAR", + "output": 5576 + }, + { + "input": 5577, + "interpolation": "LINEAR", + "output": 5578 + }, + { + "input": 5579, + "interpolation": "LINEAR", + "output": 5580 + }, + { + "input": 5581, + "interpolation": "LINEAR", + "output": 5582 + }, + { + "input": 5583, + "interpolation": "LINEAR", + "output": 5584 + }, + { + "input": 5585, + "interpolation": "LINEAR", + "output": 5586 + }, + { + "input": 5587, + "interpolation": "LINEAR", + "output": 5588 + }, + { + "input": 5589, + "interpolation": "LINEAR", + "output": 5590 + }, + { + "input": 5591, + "interpolation": "LINEAR", + "output": 5592 + }, + { + "input": 5593, + "interpolation": "LINEAR", + "output": 5594 + }, + { + "input": 5595, + "interpolation": "LINEAR", + "output": 5596 + }, + { + "input": 5597, + "interpolation": "LINEAR", + "output": 5598 + }, + { + "input": 5599, + "interpolation": "LINEAR", + "output": 5600 + }, + { + "input": 5601, + "interpolation": "LINEAR", + "output": 5602 + }, + { + "input": 5603, + "interpolation": "LINEAR", + "output": 5604 + }, + { + "input": 5605, + "interpolation": "LINEAR", + "output": 5606 + }, + { + "input": 5607, + "interpolation": "LINEAR", + "output": 5608 + }, + { + "input": 5609, + "interpolation": "LINEAR", + "output": 5610 + }, + { + "input": 5611, + "interpolation": "LINEAR", + "output": 5612 + }, + { + "input": 5613, + "interpolation": "LINEAR", + "output": 5614 + }, + { + "input": 5615, + "interpolation": "LINEAR", + "output": 5616 + }, + { + "input": 5617, + "interpolation": "LINEAR", + "output": 5618 + }, + { + "input": 5619, + "interpolation": "LINEAR", + "output": 5620 + }, + { + "input": 5621, + "interpolation": "LINEAR", + "output": 5622 + }, + { + "input": 5623, + "interpolation": "LINEAR", + "output": 5624 + }, + { + "input": 5625, + "interpolation": "LINEAR", + "output": 5626 + }, + { + "input": 5627, + "interpolation": "LINEAR", + "output": 5628 + }, + { + "input": 5629, + "interpolation": "LINEAR", + "output": 5630 + }, + { + "input": 5631, + "interpolation": "LINEAR", + "output": 5632 + }, + { + "input": 5633, + "interpolation": "LINEAR", + "output": 5634 + }, + { + "input": 5635, + "interpolation": "LINEAR", + "output": 5636 + }, + { + "input": 5637, + "interpolation": "LINEAR", + "output": 5638 + }, + { + "input": 5639, + "interpolation": "LINEAR", + "output": 5640 + }, + { + "input": 5641, + "interpolation": "LINEAR", + "output": 5642 + }, + { + "input": 5643, + "interpolation": "LINEAR", + "output": 5644 + }, + { + "input": 5645, + "interpolation": "LINEAR", + "output": 5646 + }, + { + "input": 5647, + "interpolation": "LINEAR", + "output": 5648 + }, + { + "input": 5649, + "interpolation": "LINEAR", + "output": 5650 + }, + { + "input": 5651, + "interpolation": "LINEAR", + "output": 5652 + }, + { + "input": 5653, + "interpolation": "LINEAR", + "output": 5654 + }, + { + "input": 5655, + "interpolation": "LINEAR", + "output": 5656 + }, + { + "input": 5657, + "interpolation": "LINEAR", + "output": 5658 + }, + { + "input": 5659, + "interpolation": "LINEAR", + "output": 5660 + }, + { + "input": 5661, + "interpolation": "LINEAR", + "output": 5662 + }, + { + "input": 5663, + "interpolation": "LINEAR", + "output": 5664 + }, + { + "input": 5665, + "interpolation": "LINEAR", + "output": 5666 + }, + { + "input": 5667, + "interpolation": "LINEAR", + "output": 5668 + }, + { + "input": 5669, + "interpolation": "LINEAR", + "output": 5670 + }, + { + "input": 5671, + "interpolation": "LINEAR", + "output": 5672 + }, + { + "input": 5673, + "interpolation": "LINEAR", + "output": 5674 + }, + { + "input": 5675, + "interpolation": "LINEAR", + "output": 5676 + }, + { + "input": 5677, + "interpolation": "LINEAR", + "output": 5678 + }, + { + "input": 5679, + "interpolation": "LINEAR", + "output": 5680 + }, + { + "input": 5681, + "interpolation": "LINEAR", + "output": 5682 + }, + { + "input": 5683, + "interpolation": "LINEAR", + "output": 5684 + }, + { + "input": 5685, + "interpolation": "LINEAR", + "output": 5686 + }, + { + "input": 5687, + "interpolation": "LINEAR", + "output": 5688 + }, + { + "input": 5689, + "interpolation": "LINEAR", + "output": 5690 + }, + { + "input": 5691, + "interpolation": "LINEAR", + "output": 5692 + }, + { + "input": 5693, + "interpolation": "LINEAR", + "output": 5694 + }, + { + "input": 5695, + "interpolation": "LINEAR", + "output": 5696 + }, + { + "input": 5697, + "interpolation": "LINEAR", + "output": 5698 + }, + { + "input": 5699, + "interpolation": "LINEAR", + "output": 5700 + }, + { + "input": 5701, + "interpolation": "LINEAR", + "output": 5702 + }, + { + "input": 5703, + "interpolation": "LINEAR", + "output": 5704 + }, + { + "input": 5705, + "interpolation": "LINEAR", + "output": 5706 + }, + { + "input": 5707, + "interpolation": "LINEAR", + "output": 5708 + }, + { + "input": 5709, + "interpolation": "LINEAR", + "output": 5710 + }, + { + "input": 5711, + "interpolation": "LINEAR", + "output": 5712 + }, + { + "input": 5713, + "interpolation": "LINEAR", + "output": 5714 + }, + { + "input": 5715, + "interpolation": "LINEAR", + "output": 5716 + }, + { + "input": 5717, + "interpolation": "LINEAR", + "output": 5718 + }, + { + "input": 5719, + "interpolation": "LINEAR", + "output": 5720 + }, + { + "input": 5721, + "interpolation": "LINEAR", + "output": 5722 + }, + { + "input": 5723, + "interpolation": "LINEAR", + "output": 5724 + }, + { + "input": 5725, + "interpolation": "LINEAR", + "output": 5726 + }, + { + "input": 5727, + "interpolation": "LINEAR", + "output": 5728 + }, + { + "input": 5729, + "interpolation": "LINEAR", + "output": 5730 + }, + { + "input": 5731, + "interpolation": "LINEAR", + "output": 5732 + }, + { + "input": 5733, + "interpolation": "LINEAR", + "output": 5734 + }, + { + "input": 5735, + "interpolation": "LINEAR", + "output": 5736 + }, + { + "input": 5737, + "interpolation": "LINEAR", + "output": 5738 + }, + { + "input": 5739, + "interpolation": "LINEAR", + "output": 5740 + }, + { + "input": 5741, + "interpolation": "LINEAR", + "output": 5742 + }, + { + "input": 5743, + "interpolation": "LINEAR", + "output": 5744 + }, + { + "input": 5745, + "interpolation": "LINEAR", + "output": 5746 + }, + { + "input": 5747, + "interpolation": "LINEAR", + "output": 5748 + }, + { + "input": 5749, + "interpolation": "LINEAR", + "output": 5750 + }, + { + "input": 5751, + "interpolation": "LINEAR", + "output": 5752 + }, + { + "input": 5753, + "interpolation": "LINEAR", + "output": 5754 + }, + { + "input": 5755, + "interpolation": "LINEAR", + "output": 5756 + }, + { + "input": 5757, + "interpolation": "LINEAR", + "output": 5758 + }, + { + "input": 5759, + "interpolation": "LINEAR", + "output": 5760 + }, + { + "input": 5761, + "interpolation": "LINEAR", + "output": 5762 + }, + { + "input": 5763, + "interpolation": "LINEAR", + "output": 5764 + }, + { + "input": 5765, + "interpolation": "LINEAR", + "output": 5766 + }, + { + "input": 5767, + "interpolation": "LINEAR", + "output": 5768 + }, + { + "input": 5769, + "interpolation": "LINEAR", + "output": 5770 + }, + { + "input": 5771, + "interpolation": "LINEAR", + "output": 5772 + }, + { + "input": 5773, + "interpolation": "LINEAR", + "output": 5774 + }, + { + "input": 5775, + "interpolation": "LINEAR", + "output": 5776 + }, + { + "input": 5777, + "interpolation": "LINEAR", + "output": 5778 + }, + { + "input": 5779, + "interpolation": "LINEAR", + "output": 5780 + }, + { + "input": 5781, + "interpolation": "LINEAR", + "output": 5782 + }, + { + "input": 5783, + "interpolation": "LINEAR", + "output": 5784 + }, + { + "input": 5785, + "interpolation": "LINEAR", + "output": 5786 + }, + { + "input": 5787, + "interpolation": "LINEAR", + "output": 5788 + }, + { + "input": 5789, + "interpolation": "LINEAR", + "output": 5790 + }, + { + "input": 5791, + "interpolation": "LINEAR", + "output": 5792 + }, + { + "input": 5793, + "interpolation": "LINEAR", + "output": 5794 + }, + { + "input": 5795, + "interpolation": "LINEAR", + "output": 5796 + }, + { + "input": 5797, + "interpolation": "LINEAR", + "output": 5798 + }, + { + "input": 5799, + "interpolation": "LINEAR", + "output": 5800 + }, + { + "input": 5801, + "interpolation": "LINEAR", + "output": 5802 + }, + { + "input": 5803, + "interpolation": "LINEAR", + "output": 5804 + }, + { + "input": 5805, + "interpolation": "LINEAR", + "output": 5806 + }, + { + "input": 5807, + "interpolation": "LINEAR", + "output": 5808 + }, + { + "input": 5809, + "interpolation": "LINEAR", + "output": 5810 + }, + { + "input": 5811, + "interpolation": "LINEAR", + "output": 5812 + }, + { + "input": 5813, + "interpolation": "LINEAR", + "output": 5814 + }, + { + "input": 5815, + "interpolation": "LINEAR", + "output": 5816 + }, + { + "input": 5817, + "interpolation": "LINEAR", + "output": 5818 + }, + { + "input": 5819, + "interpolation": "LINEAR", + "output": 5820 + }, + { + "input": 5821, + "interpolation": "LINEAR", + "output": 5822 + }, + { + "input": 5823, + "interpolation": "LINEAR", + "output": 5824 + }, + { + "input": 5825, + "interpolation": "LINEAR", + "output": 5826 + }, + { + "input": 5827, + "interpolation": "LINEAR", + "output": 5828 + }, + { + "input": 5829, + "interpolation": "LINEAR", + "output": 5830 + }, + { + "input": 5831, + "interpolation": "LINEAR", + "output": 5832 + }, + { + "input": 5833, + "interpolation": "LINEAR", + "output": 5834 + }, + { + "input": 5835, + "interpolation": "LINEAR", + "output": 5836 + }, + { + "input": 5837, + "interpolation": "LINEAR", + "output": 5838 + }, + { + "input": 5839, + "interpolation": "LINEAR", + "output": 5840 + }, + { + "input": 5841, + "interpolation": "LINEAR", + "output": 5842 + }, + { + "input": 5843, + "interpolation": "LINEAR", + "output": 5844 + }, + { + "input": 5845, + "interpolation": "LINEAR", + "output": 5846 + }, + { + "input": 5847, + "interpolation": "LINEAR", + "output": 5848 + }, + { + "input": 5849, + "interpolation": "LINEAR", + "output": 5850 + }, + { + "input": 5851, + "interpolation": "LINEAR", + "output": 5852 + }, + { + "input": 5853, + "interpolation": "LINEAR", + "output": 5854 + }, + { + "input": 5855, + "interpolation": "LINEAR", + "output": 5856 + }, + { + "input": 5857, + "interpolation": "LINEAR", + "output": 5858 + }, + { + "input": 5859, + "interpolation": "LINEAR", + "output": 5860 + }, + { + "input": 5861, + "interpolation": "LINEAR", + "output": 5862 + }, + { + "input": 5863, + "interpolation": "LINEAR", + "output": 5864 + }, + { + "input": 5865, + "interpolation": "LINEAR", + "output": 5866 + }, + { + "input": 5867, + "interpolation": "LINEAR", + "output": 5868 + }, + { + "input": 5869, + "interpolation": "LINEAR", + "output": 5870 + }, + { + "input": 5871, + "interpolation": "LINEAR", + "output": 5872 + }, + { + "input": 5873, + "interpolation": "LINEAR", + "output": 5874 + }, + { + "input": 5875, + "interpolation": "LINEAR", + "output": 5876 + }, + { + "input": 5877, + "interpolation": "LINEAR", + "output": 5878 + }, + { + "input": 5879, + "interpolation": "LINEAR", + "output": 5880 + }, + { + "input": 5881, + "interpolation": "LINEAR", + "output": 5882 + }, + { + "input": 5883, + "interpolation": "LINEAR", + "output": 5884 + }, + { + "input": 5885, + "interpolation": "LINEAR", + "output": 5886 + }, + { + "input": 5887, + "interpolation": "LINEAR", + "output": 5888 + }, + { + "input": 5889, + "interpolation": "LINEAR", + "output": 5890 + }, + { + "input": 5891, + "interpolation": "LINEAR", + "output": 5892 + }, + { + "input": 5893, + "interpolation": "LINEAR", + "output": 5894 + }, + { + "input": 5895, + "interpolation": "LINEAR", + "output": 5896 + }, + { + "input": 5897, + "interpolation": "LINEAR", + "output": 5898 + }, + { + "input": 5899, + "interpolation": "LINEAR", + "output": 5900 + }, + { + "input": 5901, + "interpolation": "LINEAR", + "output": 5902 + }, + { + "input": 5903, + "interpolation": "LINEAR", + "output": 5904 + }, + { + "input": 5905, + "interpolation": "LINEAR", + "output": 5906 + }, + { + "input": 5907, + "interpolation": "LINEAR", + "output": 5908 + }, + { + "input": 5909, + "interpolation": "LINEAR", + "output": 5910 + }, + { + "input": 5911, + "interpolation": "LINEAR", + "output": 5912 + }, + { + "input": 5913, + "interpolation": "LINEAR", + "output": 5914 + }, + { + "input": 5915, + "interpolation": "LINEAR", + "output": 5916 + }, + { + "input": 5917, + "interpolation": "LINEAR", + "output": 5918 + }, + { + "input": 5919, + "interpolation": "LINEAR", + "output": 5920 + }, + { + "input": 5921, + "interpolation": "LINEAR", + "output": 5922 + }, + { + "input": 5923, + "interpolation": "LINEAR", + "output": 5924 + }, + { + "input": 5925, + "interpolation": "LINEAR", + "output": 5926 + }, + { + "input": 5927, + "interpolation": "LINEAR", + "output": 5928 + }, + { + "input": 5929, + "interpolation": "LINEAR", + "output": 5930 + }, + { + "input": 5931, + "interpolation": "LINEAR", + "output": 5932 + }, + { + "input": 5933, + "interpolation": "LINEAR", + "output": 5934 + }, + { + "input": 5935, + "interpolation": "LINEAR", + "output": 5936 + }, + { + "input": 5937, + "interpolation": "LINEAR", + "output": 5938 + }, + { + "input": 5939, + "interpolation": "LINEAR", + "output": 5940 + }, + { + "input": 5941, + "interpolation": "LINEAR", + "output": 5942 + }, + { + "input": 5943, + "interpolation": "LINEAR", + "output": 5944 + }, + { + "input": 5945, + "interpolation": "LINEAR", + "output": 5946 + }, + { + "input": 5947, + "interpolation": "LINEAR", + "output": 5948 + }, + { + "input": 5949, + "interpolation": "LINEAR", + "output": 5950 + }, + { + "input": 5951, + "interpolation": "LINEAR", + "output": 5952 + }, + { + "input": 5953, + "interpolation": "LINEAR", + "output": 5954 + }, + { + "input": 5955, + "interpolation": "LINEAR", + "output": 5956 + }, + { + "input": 5957, + "interpolation": "LINEAR", + "output": 5958 + }, + { + "input": 5959, + "interpolation": "LINEAR", + "output": 5960 + }, + { + "input": 5961, + "interpolation": "LINEAR", + "output": 5962 + }, + { + "input": 5963, + "interpolation": "LINEAR", + "output": 5964 + }, + { + "input": 5965, + "interpolation": "LINEAR", + "output": 5966 + }, + { + "input": 5967, + "interpolation": "LINEAR", + "output": 5968 + }, + { + "input": 5969, + "interpolation": "LINEAR", + "output": 5970 + }, + { + "input": 5971, + "interpolation": "LINEAR", + "output": 5972 + }, + { + "input": 5973, + "interpolation": "LINEAR", + "output": 5974 + }, + { + "input": 5975, + "interpolation": "LINEAR", + "output": 5976 + }, + { + "input": 5977, + "interpolation": "LINEAR", + "output": 5978 + }, + { + "input": 5979, + "interpolation": "LINEAR", + "output": 5980 + }, + { + "input": 5981, + "interpolation": "LINEAR", + "output": 5982 + }, + { + "input": 5983, + "interpolation": "LINEAR", + "output": 5984 + }, + { + "input": 5985, + "interpolation": "LINEAR", + "output": 5986 + }, + { + "input": 5987, + "interpolation": "LINEAR", + "output": 5988 + }, + { + "input": 5989, + "interpolation": "LINEAR", + "output": 5990 + }, + { + "input": 5991, + "interpolation": "LINEAR", + "output": 5992 + }, + { + "input": 5993, + "interpolation": "LINEAR", + "output": 5994 + }, + { + "input": 5995, + "interpolation": "LINEAR", + "output": 5996 + }, + { + "input": 5997, + "interpolation": "LINEAR", + "output": 5998 + }, + { + "input": 5999, + "interpolation": "LINEAR", + "output": 6000 + }, + { + "input": 6001, + "interpolation": "LINEAR", + "output": 6002 + }, + { + "input": 6003, + "interpolation": "LINEAR", + "output": 6004 + }, + { + "input": 6005, + "interpolation": "LINEAR", + "output": 6006 + }, + { + "input": 6007, + "interpolation": "LINEAR", + "output": 6008 + }, + { + "input": 6009, + "interpolation": "LINEAR", + "output": 6010 + }, + { + "input": 6011, + "interpolation": "LINEAR", + "output": 6012 + }, + { + "input": 6013, + "interpolation": "LINEAR", + "output": 6014 + }, + { + "input": 6015, + "interpolation": "LINEAR", + "output": 6016 + }, + { + "input": 6017, + "interpolation": "LINEAR", + "output": 6018 + }, + { + "input": 6019, + "interpolation": "LINEAR", + "output": 6020 + }, + { + "input": 6021, + "interpolation": "LINEAR", + "output": 6022 + }, + { + "input": 6023, + "interpolation": "LINEAR", + "output": 6024 + }, + { + "input": 6025, + "interpolation": "LINEAR", + "output": 6026 + }, + { + "input": 6027, + "interpolation": "LINEAR", + "output": 6028 + }, + { + "input": 6029, + "interpolation": "LINEAR", + "output": 6030 + }, + { + "input": 6031, + "interpolation": "LINEAR", + "output": 6032 + }, + { + "input": 6033, + "interpolation": "LINEAR", + "output": 6034 + }, + { + "input": 6035, + "interpolation": "LINEAR", + "output": 6036 + }, + { + "input": 6037, + "interpolation": "LINEAR", + "output": 6038 + }, + { + "input": 6039, + "interpolation": "LINEAR", + "output": 6040 + }, + { + "input": 6041, + "interpolation": "LINEAR", + "output": 6042 + }, + { + "input": 6043, + "interpolation": "LINEAR", + "output": 6044 + }, + { + "input": 6045, + "interpolation": "LINEAR", + "output": 6046 + }, + { + "input": 6047, + "interpolation": "LINEAR", + "output": 6048 + }, + { + "input": 6049, + "interpolation": "LINEAR", + "output": 6050 + }, + { + "input": 6051, + "interpolation": "LINEAR", + "output": 6052 + }, + { + "input": 6053, + "interpolation": "LINEAR", + "output": 6054 + }, + { + "input": 6055, + "interpolation": "LINEAR", + "output": 6056 + }, + { + "input": 6057, + "interpolation": "LINEAR", + "output": 6058 + }, + { + "input": 6059, + "interpolation": "LINEAR", + "output": 6060 + }, + { + "input": 6061, + "interpolation": "LINEAR", + "output": 6062 + }, + { + "input": 6063, + "interpolation": "LINEAR", + "output": 6064 + }, + { + "input": 6065, + "interpolation": "LINEAR", + "output": 6066 + }, + { + "input": 6067, + "interpolation": "LINEAR", + "output": 6068 + }, + { + "input": 6069, + "interpolation": "LINEAR", + "output": 6070 + }, + { + "input": 6071, + "interpolation": "LINEAR", + "output": 6072 + }, + { + "input": 6073, + "interpolation": "LINEAR", + "output": 6074 + }, + { + "input": 6075, + "interpolation": "LINEAR", + "output": 6076 + }, + { + "input": 6077, + "interpolation": "LINEAR", + "output": 6078 + }, + { + "input": 6079, + "interpolation": "LINEAR", + "output": 6080 + }, + { + "input": 6081, + "interpolation": "LINEAR", + "output": 6082 + }, + { + "input": 6083, + "interpolation": "LINEAR", + "output": 6084 + }, + { + "input": 6085, + "interpolation": "LINEAR", + "output": 6086 + }, + { + "input": 6087, + "interpolation": "LINEAR", + "output": 6088 + }, + { + "input": 6089, + "interpolation": "LINEAR", + "output": 6090 + }, + { + "input": 6091, + "interpolation": "LINEAR", + "output": 6092 + }, + { + "input": 6093, + "interpolation": "LINEAR", + "output": 6094 + }, + { + "input": 6095, + "interpolation": "LINEAR", + "output": 6096 + }, + { + "input": 6097, + "interpolation": "LINEAR", + "output": 6098 + }, + { + "input": 6099, + "interpolation": "LINEAR", + "output": 6100 + }, + { + "input": 6101, + "interpolation": "LINEAR", + "output": 6102 + }, + { + "input": 6103, + "interpolation": "LINEAR", + "output": 6104 + }, + { + "input": 6105, + "interpolation": "LINEAR", + "output": 6106 + }, + { + "input": 6107, + "interpolation": "LINEAR", + "output": 6108 + }, + { + "input": 6109, + "interpolation": "LINEAR", + "output": 6110 + }, + { + "input": 6111, + "interpolation": "LINEAR", + "output": 6112 + }, + { + "input": 6113, + "interpolation": "LINEAR", + "output": 6114 + }, + { + "input": 6115, + "interpolation": "LINEAR", + "output": 6116 + }, + { + "input": 6117, + "interpolation": "LINEAR", + "output": 6118 + }, + { + "input": 6119, + "interpolation": "LINEAR", + "output": 6120 + }, + { + "input": 6121, + "interpolation": "LINEAR", + "output": 6122 + }, + { + "input": 6123, + "interpolation": "LINEAR", + "output": 6124 + }, + { + "input": 6125, + "interpolation": "LINEAR", + "output": 6126 + }, + { + "input": 6127, + "interpolation": "LINEAR", + "output": 6128 + }, + { + "input": 6129, + "interpolation": "LINEAR", + "output": 6130 + }, + { + "input": 6131, + "interpolation": "LINEAR", + "output": 6132 + }, + { + "input": 6133, + "interpolation": "LINEAR", + "output": 6134 + }, + { + "input": 6135, + "interpolation": "LINEAR", + "output": 6136 + }, + { + "input": 6137, + "interpolation": "LINEAR", + "output": 6138 + }, + { + "input": 6139, + "interpolation": "LINEAR", + "output": 6140 + }, + { + "input": 6141, + "interpolation": "LINEAR", + "output": 6142 + }, + { + "input": 6143, + "interpolation": "LINEAR", + "output": 6144 + }, + { + "input": 6145, + "interpolation": "LINEAR", + "output": 6146 + }, + { + "input": 6147, + "interpolation": "LINEAR", + "output": 6148 + }, + { + "input": 6149, + "interpolation": "LINEAR", + "output": 6150 + }, + { + "input": 6151, + "interpolation": "LINEAR", + "output": 6152 + }, + { + "input": 6153, + "interpolation": "LINEAR", + "output": 6154 + }, + { + "input": 6155, + "interpolation": "LINEAR", + "output": 6156 + }, + { + "input": 6157, + "interpolation": "LINEAR", + "output": 6158 + }, + { + "input": 6159, + "interpolation": "LINEAR", + "output": 6160 + }, + { + "input": 6161, + "interpolation": "LINEAR", + "output": 6162 + }, + { + "input": 6163, + "interpolation": "LINEAR", + "output": 6164 + }, + { + "input": 6165, + "interpolation": "LINEAR", + "output": 6166 + }, + { + "input": 6167, + "interpolation": "LINEAR", + "output": 6168 + }, + { + "input": 6169, + "interpolation": "LINEAR", + "output": 6170 + }, + { + "input": 6171, + "interpolation": "LINEAR", + "output": 6172 + }, + { + "input": 6173, + "interpolation": "LINEAR", + "output": 6174 + }, + { + "input": 6175, + "interpolation": "LINEAR", + "output": 6176 + }, + { + "input": 6177, + "interpolation": "LINEAR", + "output": 6178 + }, + { + "input": 6179, + "interpolation": "LINEAR", + "output": 6180 + }, + { + "input": 6181, + "interpolation": "LINEAR", + "output": 6182 + } + ] + } + ], + "asset": { + "extras": { + "author": "Jesus Balbastro (https://sketchfab.com/awesomehaircut)", + "license": "CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0/)", + "source": "https://sketchfab.com/models/1bf61378d5344a889812e60c991bfcf7", + "title": "Dragonite" + }, + "generator": "Sketchfab-3.18.7", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 16608, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 40632, + "byteOffset": 16608, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 16608, + "byteOffset": 57240, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 49824, + "byteOffset": 73848, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 99648, + "byteOffset": 123672, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 16448, + "byteOffset": 223320, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 409620, + "byteOffset": 239768, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 683652, + "byteOffset": 649388, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 726944, + "byteOffset": 1333040, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 2059984, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/Dragonite_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Dragonite", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + } + ], + "meshes": [ + { + "name": "Dragonite_Dragonite_0", + "primitives": [ + { + "attributes": { + "COLOR_0": 3, + "JOINTS_0": 7, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 4, + "WEIGHTS_0": 8 + }, + "indices": 5, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "Dragonite.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5, + 266 + ], + "name": "RootNode" + }, + { + "children": [ + 6 + ], + "name": "rig_dragon", + "rotation": [ + -0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "scale": [ + 100, + 100, + 100 + ] + }, + { + "children": [ + 7, + 265, + 264 + ], + "name": "" + }, + { + "children": [ + 8 + ], + "name": "_rootJoint" + }, + { + "children": [ + 9, + 219, + 222, + 225, + 227, + 258, + 261 + ], + "name": "root_04", + "rotation": [ + -6.6174449004242214e-24, + -0, + 0, + 1 + ], + "translation": [ + 0, + 0, + 0.048173855990171432 + ] + }, + { + "children": [ + 10, + 185, + 201, + 217 + ], + "name": "ORG-hips_05", + "rotation": [ + 0.64831167459487915, + -9.0763023763429374e-08, + 3.2261102234087957e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.4210854715202004e-14, + 0.055200062692165375, + 0.19749556481838226 + ] + }, + { + "children": [ + 11, + 183 + ], + "name": "ORG-spine_06", + "rotation": [ + -0.12614771723747253, + -0.0073608146049082279, + 0.0043073771521449089, + 0.99197483062744141 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + -7.9936057773011271e-15, + 0.40506201982498169, + -7.4505739355856804e-09 + ] + }, + { + "children": [ + 12, + 15, + 98, + 181 + ], + "name": "ORG-chest_07", + "rotation": [ + 0.34367910027503967, + 0.0062861694023013115, + -0.0083904145285487175, + 0.93902873992919922 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "translation": [ + -4.6566128730773926e-10, + 0.77674132585525513, + -6.2645995058119297e-09 + ] + }, + { + "children": [ + 13 + ], + "name": "ORG-neck_08", + "rotation": [ + -0.27045553922653198, + 0.0173672866076231, + 0.016690928488969803, + 0.96243107318878174 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 4.8021320253610611e-10, + 0.30786621570587158, + -2.310712261532899e-07 + ] + }, + { + "children": [ + 14 + ], + "name": "DEF-head_09", + "rotation": [ + -0.06126849353313446, + -0.012450626119971275, + -0.021492986008524895, + 0.99781221151351929 + ], + "scale": [ + 1.0000003576278687, + 0.99999964237213135, + 0.9999997615814209 + ], + "translation": [ + -9.3132257461547852e-09, + 0.19137133657932281, + -5.6461431086063385e-08 + ] + }, + { + "name": "DEF-head_end_0180", + "rotation": [ + -2.7755575615628914e-17, + -9.0277966143151681e-36, + 3.2526065174565133e-19, + 1 + ], + "translation": [ + 0, + 0.70650225877761841, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 16, + 96 + ], + "name": "ORG-shoulder.L_010", + "rotation": [ + -0.69586646556854248, + -0.3977760374546051, + -0.2970300018787384, + 0.51895785331726074 + ], + "scale": [ + 0.99999958276748657, + 0.99999958276748657, + 0.99999970197677612 + ], + "translation": [ + 0.023130033165216446, + 0.26697859168052673, + 0.14965279400348663 + ] + }, + { + "children": [ + 17, + 94 + ], + "name": "ORG-upper_arm.L_011", + "rotation": [ + -0.31031376123428345, + 0.87789040803909302, + -0.056962184607982635, + 0.36023485660552979 + ], + "scale": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "translation": [ + -0.027315685525536537, + 0.3344605565071106, + 0.019757615402340889 + ] + }, + { + "children": [ + 18, + 88, + 90 + ], + "name": "ORG-forearm.L_012", + "rotation": [ + 0.20465438067913055, + 0.10057873278856277, + -0.18812994658946991, + 0.95530498027801514 + ], + "scale": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "translation": [ + 1.4901161193847656e-08, + 0.27854275703430176, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 19, + 44, + 58, + 72, + 86 + ], + "name": "ORG-hand.L_013", + "rotation": [ + 0.1358959823846817, + 0.80924534797668457, + 0.24829928576946259, + 0.51478314399719238 + ], + "scale": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999982118606567 + ], + "translation": [ + -1.6763806343078613e-08, + 0.25792214274406433, + 1.1175870895385742e-07 + ] + }, + { + "children": [ + 20, + 29, + 38, + 40, + 42 + ], + "name": "ORG-palm.01.L_014", + "rotation": [ + -0.18320608139038086, + -0.11237327009439468, + -0.12725991010665894, + 0.96830403804779053 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "translation": [ + 0.0073303133249282837, + 0.34354433417320251, + -0.021197959780693054 + ] + }, + { + "children": [ + 21, + 27 + ], + "name": "ORG-f_index.01.L_015", + "rotation": [ + 0.17803961038589478, + -0.038298312574625015, + -0.044083744287490845, + 0.98228901624679565 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1 + ], + "translation": [ + -7.4505805969238281e-08, + 0.069626078009605408, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 22, + 25 + ], + "name": "ORG-f_index.02.L_016", + "rotation": [ + 0.077882632613182068, + -0.038419149816036224, + -9.6844836662057787e-05, + 0.99622201919555664 + ], + "scale": [ + 1, + 1.0000003576278687, + 1 + ], + "translation": [ + -4.1909515857696533e-08, + 0.045039936900138855, + -5.2154064178466797e-08 + ] + }, + { + "children": [ + 23 + ], + "name": "ORG-f_index.03.L_017", + "rotation": [ + 0.11234366148710251, + -0.058250229805707932, + -0.038226854056119919, + 0.99122375249862671 + ], + "scale": [ + 1, + 1, + 1.0000002384185791 + ], + "translation": [ + 8.5681676864624023e-08, + 0.028223410248756409, + -1.5366822481155396e-08 + ] + }, + { + "children": [ + 24 + ], + "name": "DEF-f_index.03.L_018", + "rotation": [ + 1.257285475730896e-08, + -4.1909520298588632e-09, + 2.0954751267510119e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "translation": [ + 4.4703483581542969e-08, + 1.3597309589385986e-07, + 2.2351741790771484e-08 + ] + }, + { + "name": "DEF-f_index.03.L_end_0231", + "rotation": [ + -6.9388939039072284e-18, + -3.8518598887744717e-34, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022818643599748611, + 0 + ] + }, + { + "children": [ + 26 + ], + "name": "DEF-f_index.02.L_019", + "rotation": [ + -2.136220800252886e-08, + -6.4377658759440237e-08, + -8.1490716397070173e-09, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + 5.5879354476928711e-08, + 4.4703483581542969e-08, + -2.1141022443771362e-07 + ] + }, + { + "name": "DEF-f_index.02.L_end_0237", + "rotation": [ + -2.5370330836160804e-17, + -6.5052130349130266e-18, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.028223402798175812, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 28 + ], + "name": "DEF-f_index.01.L.02_020", + "rotation": [ + 4.9639493227005005e-07, + -9.3691073743684683e-07, + 2.2927999054900283e-07, + 1 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "translation": [ + -6.28642737865448e-08, + 0.022519811987876892, + 9.6857547760009766e-08 + ] + }, + { + "name": "DEF-f_index.01.L.02_end_0234", + "rotation": [ + 2.7755575615628914e-17, + -1.3877787807814457e-17, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519970312714577, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 30, + 36 + ], + "name": "ORG-thumb.01.L_021", + "rotation": [ + 0.0063958284445106983, + 0.65799003839492798, + 0.26252895593643188, + 0.70575261116027832 + ], + "scale": [ + 0.99999982118606567, + 0.99999940395355225, + 0.99999970197677612 + ], + "translation": [ + -0.0086899995803833008, + -0.0083238929510116577, + 0.023024335503578186 + ] + }, + { + "children": [ + 31, + 34 + ], + "name": "ORG-thumb.02.L_022", + "rotation": [ + 0.16518199443817139, + 0.0088785169646143913, + -0.05738256499171257, + 0.98455232381820679 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "translation": [ + 2.9802322387695312e-08, + 0.041744649410247803, + 3.7252902984619141e-08 + ] + }, + { + "children": [ + 32 + ], + "name": "ORG-thumb.03.L_023", + "rotation": [ + 0.021510282531380653, + 0.016420735046267509, + -0.03873925656080246, + 0.99888283014297485 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "translation": [ + 4.4703483581542969e-08, + 0.033446475863456726, + -2.2351741790771484e-08 + ] + }, + { + "children": [ + 33 + ], + "name": "DEF-thumb.03.L_024", + "rotation": [ + 5.5879354476928711e-09, + 1.862645149230957e-08, + 6.891787052154541e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + -1.9371509552001953e-07, + -1.1920928955078125e-07 + ] + }, + { + "name": "DEF-thumb.03.L_end_0191", + "rotation": [ + 1.3877787807814457e-17, + 0, + 0, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.020790537819266319, + 0 + ] + }, + { + "children": [ + 35 + ], + "name": "DEF-thumb.02.L_025", + "rotation": [ + 1.3600226757702247e-15, + -3.3527605580729869e-08, + 4.4703476476115611e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + -5.9604644775390625e-08, + 1.4901161193847656e-08, + -2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thumb.02.L_end_0232", + "rotation": [ + -2.7755575615628914e-17, + -2.7755575615628914e-17, + -3.1225022567582528e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.033446468412876129, + 0 + ] + }, + { + "children": [ + 37 + ], + "name": "DEF-thumb.01.L.02_026", + "rotation": [ + 3.7252900764173091e-09, + -9.3132243250693136e-08, + -1.601874828338623e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.020872138440608978, + 5.9604644775390625e-08 + ] + }, + { + "name": "DEF-thumb.01.L.02_end_0246", + "rotation": [ + 6.9388939039072284e-18, + 2.7755575615628914e-17, + -1.9081958235744878e-17, + 1 + ], + "translation": [ + 0, + 0.0208723284304142, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 39 + ], + "name": "DEF-palm.01.L_027", + "rotation": [ + 5.5879345595144514e-09, + 7.4505805969238281e-09, + -8.0093755627785868e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + 1.0430812835693359e-07, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-palm.01.L_end_0254", + "rotation": [ + 2.0816681711721685e-17, + 2.7755575615628914e-17, + -1.3877787807814457e-17, + 1 + ], + "translation": [ + 0, + 0.069626055657863617, + 0 + ] + }, + { + "children": [ + 41 + ], + "name": "DEF-f_index.01.L.01_028", + "rotation": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083859771490097, + 0.98228943347930908 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + 0.069626078009605408, + 7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_index.01.L.01_end_0230", + "rotation": [ + -1.7347234759768071e-17, + 9.6296497219361793e-34, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519990801811218, + 0 + ] + }, + { + "children": [ + 43 + ], + "name": "DEF-thumb.01.L.01_029", + "rotation": [ + 0.0063958484679460526, + 0.65798979997634888, + 0.26252919435501099, + 0.70575273036956787 + ], + "scale": [ + 0.99999994039535522, + 0.99999940395355225, + 0.99999970197677612 + ], + "translation": [ + -0.0086899995803833008, + -0.0083238929510116577, + 0.023024335503578186 + ] + }, + { + "name": "DEF-thumb.01.L.01_end_0243", + "rotation": [ + 0, + 0, + 1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.020872326567769051, + 0 + ] + }, + { + "children": [ + 45, + 54, + 56 + ], + "name": "ORG-palm.02.L_030", + "rotation": [ + -0.17811864614486694, + -0.13169904053211212, + -0.16719590127468109, + 0.96071571111679077 + ], + "scale": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000005960464478 + ], + "translation": [ + 0.02324715256690979, + 0.34059685468673706, + -0.015326440334320068 + ] + }, + { + "children": [ + 46, + 52 + ], + "name": "ORG-f_middle.01.L_031", + "rotation": [ + 0.21749144792556763, + -0.069006673991680145, + -0.0030258134938776493, + 0.97361510992050171 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.8626449271863521e-09, + 0.06818709522485733, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 47, + 50 + ], + "name": "ORG-f_middle.02.L_032", + "rotation": [ + 0.11846216022968292, + -0.085242293775081635, + -0.013570714741945267, + 0.98919981718063354 + ], + "scale": [ + 1, + 1.0000003576278687, + 1 + ], + "translation": [ + -1.1920928955078125e-07, + 0.0495404452085495, + 1.862645149230957e-08 + ] + }, + { + "children": [ + 48 + ], + "name": "ORG-f_middle.03.L_033", + "rotation": [ + 0.056476779282093048, + -0.04575289785861969, + -0.025043424218893051, + 0.99704056978225708 + ], + "scale": [ + 1.0000004768371582, + 0.99999988079071045, + 1.0000004768371582 + ], + "translation": [ + -1.4901161193847656e-08, + 0.032196026295423508, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 49 + ], + "name": "DEF-f_middle.03.L_034", + "rotation": [ + 1.1175870895385742e-08, + 4.2840838432312012e-08, + 4.1909515857696533e-08, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + -8.9406967163085938e-08, + 3.9115548133850098e-08 + ] + }, + { + "name": "DEF-f_middle.03.L_end_0164", + "rotation": [ + 6.9388939039072284e-18, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022704442963004112, + 0 + ] + }, + { + "children": [ + 51 + ], + "name": "DEF-f_middle.02.L_035", + "rotation": [ + -1.0244549208948683e-08, + -2.3283067918100642e-08, + -1.6763808119435453e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "translation": [ + -7.4505805969238281e-08, + 1.8253922462463379e-07, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_middle.02.L_end_00", + "rotation": [ + 1.3877787807814457e-17, + 2.7755575615628914e-17, + -3.8518598887744717e-34, + 1 + ], + "translation": [ + 0, + 0.032196018844842911, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 53 + ], + "name": "DEF-f_middle.01.L.02_036", + "rotation": [ + -5.7928264141082764e-07, + 9.4575818820885615e-07, + -1.648440957069397e-07, + 1 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + -1.2293457984924316e-07, + 0.024769976735115051, + 1.2293457984924316e-07 + ] + }, + { + "name": "DEF-f_middle.01.L.02_end_0189", + "rotation": [ + -4.4885969940899884e-17, + -6.0715321659188248e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.024770231917500496, + 0 + ] + }, + { + "children": [ + 55 + ], + "name": "DEF-palm.02.L_037", + "rotation": [ + 5.5879347371501353e-08, + -5.5879372240497105e-09, + -3.3527616238870905e-08, + 1 + ], + "scale": [ + 0.9999997615814209, + 1.0000002384185791, + 1 + ], + "translation": [ + -2.9802322387695312e-08, + 2.2351741790771484e-08, + -1.3411045074462891e-07 + ] + }, + { + "name": "DEF-palm.02.L_end_0224", + "rotation": [ + -1.3877787807814457e-17, + 2.7755575615628914e-17, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + 0, + 0.068187080323696136, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 57 + ], + "name": "DEF-f_middle.01.L.01_038", + "rotation": [ + 0.21748913824558258, + -0.069013774394989014, + -0.0030575795099139214, + 0.97361505031585693 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.8626449271863521e-09, + 0.06818709522485733, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_middle.01.L.01_end_0223", + "rotation": [ + 4.3368086899420177e-18, + -4.3368086899420177e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.024770215153694153, + 0 + ] + }, + { + "children": [ + 59, + 68, + 70 + ], + "name": "ORG-palm.03.L_039", + "rotation": [ + -0.17214247584342957, + -0.16701872646808624, + -0.22579607367515564, + 0.94418632984161377 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "translation": [ + 0.034954488277435303, + 0.335368812084198, + -0.0064072161912918091 + ] + }, + { + "children": [ + 60, + 66 + ], + "name": "ORG-f_ring.01.L_040", + "rotation": [ + 0.28130209445953369, + -0.10888336598873138, + 0.021744580939412117, + 0.95317405462265015 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "translation": [ + 1.1548399925231934e-07, + 0.069797366857528687, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 61, + 64 + ], + "name": "ORG-f_ring.02.L_041", + "rotation": [ + 0.073152266442775726, + -0.052601072937250137, + -0.024043384939432144, + 0.99564242362976074 + ], + "scale": [ + 1.0000003576278687, + 0.99999964237213135, + 0.99999970197677612 + ], + "translation": [ + -4.4703483581542969e-08, + 0.044816665351390839, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 62 + ], + "name": "ORG-f_ring.03.L_042", + "rotation": [ + 0.15024147927761078, + -0.10080227255821228, + -0.057818170636892319, + 0.9817960262298584 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -1.4901161193847656e-08, + 0.031800970435142517, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 63 + ], + "name": "DEF-f_ring.03.L_043", + "rotation": [ + 9.3132239697979458e-09, + 5.5879358917820809e-09, + -2.4286122046230399e-17, + 1 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -8.9406967163085938e-08, + -2.9802322387695312e-08, + 9.6857547760009766e-08 + ] + }, + { + "name": "DEF-f_ring.03.L_end_0240", + "rotation": [ + -4.163336342344337e-17, + 2.7755575615628914e-17, + 1.1555579666323415e-33, + 1 + ], + "translation": [ + 0, + 0.01855008490383625, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 65 + ], + "name": "DEF-f_ring.02.L_044", + "rotation": [ + -3.1723177418285786e-09, + -2.7939679014821195e-08, + -7.312337402254343e-09, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "translation": [ + -7.4505805969238281e-08, + 2.9802322387695312e-08, + -3.2037496566772461e-07 + ] + }, + { + "name": "DEF-f_ring.02.L_end_0210", + "rotation": [ + 2.0816681711721685e-17, + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.031800936907529831, + 0 + ] + }, + { + "children": [ + 67 + ], + "name": "DEF-f_ring.01.L.02_045", + "rotation": [ + -6.0535955981322331e-07, + 9.6112466962949838e-07, + -3.8184225559234619e-08, + 1 + ], + "scale": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "translation": [ + -4.4703483581542969e-08, + 0.022408448159694672, + 1.4901161193847656e-07 + ] + }, + { + "name": "DEF-f_ring.01.L.02_end_0222", + "rotation": [ + -6.9388939039072284e-18, + -1.3877787807814457e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022408328950405121, + 0 + ] + }, + { + "children": [ + 69 + ], + "name": "DEF-palm.03.L_046", + "rotation": [ + 3.3527619791584584e-08, + -5.3085400963936991e-08, + -2.5145713067331599e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999964237213135 + ], + "translation": [ + 2.6077032089233398e-07, + -5.9604644775390625e-08, + 4.4703483581542969e-08 + ] + }, + { + "name": "DEF-palm.03.L_end_0176", + "rotation": [ + -4.163336342344337e-17, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.069797389209270477, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 71 + ], + "name": "DEF-f_ring.01.L.01_047", + "rotation": [ + 0.28130325675010681, + -0.10888498276472092, + 0.02174454927444458, + 0.95317351818084717 + ], + "scale": [ + 1, + 1.0000002384185791, + 1 + ], + "translation": [ + 1.1548399925231934e-07, + 0.069797366857528687, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_ring.01.L.01_end_0217", + "rotation": [ + 6.9388939039072284e-18, + -1.9259299443872359e-34, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.022408317774534225, + 0 + ] + }, + { + "children": [ + 73, + 82, + 84 + ], + "name": "ORG-palm.04.L_048", + "rotation": [ + -0.13570015132427216, + -0.18749415874481201, + -0.27479109168052673, + 0.9332316517829895 + ], + "scale": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 0.044579252600669861, + 0.32914406061172485, + 0.0039984434843063354 + ] + }, + { + "children": [ + 74, + 80 + ], + "name": "ORG-f_pinky.01.L_049", + "rotation": [ + 0.35057204961776733, + -0.17872533202171326, + 0.01533847488462925, + 0.91919606924057007 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.074802346527576447, + 4.4703483581542969e-08 + ] + }, + { + "children": [ + 75, + 78 + ], + "name": "ORG-f_pinky.02.L_050", + "rotation": [ + 0.04151814803481102, + -0.02898799441754818, + -0.020971952006220818, + 0.99849694967269897 + ], + "scale": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "translation": [ + 8.9406967163085938e-08, + 0.027876280248165131, + 2.9802322387695312e-08 + ] + }, + { + "children": [ + 76 + ], + "name": "ORG-f_pinky.03.L_051", + "rotation": [ + 0.082881756126880646, + -0.044399142265319824, + -0.02859189547598362, + 0.99515920877456665 + ], + "scale": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "translation": [ + -2.9802322387695312e-08, + 0.022592402994632721, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 77 + ], + "name": "DEF-f_pinky.03.L_052", + "rotation": [ + 1.2572860974557898e-08, + -6.5192575782191398e-09, + 2.6077037418303917e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999970197677612 + ], + "translation": [ + 1.1920928955078125e-07, + 4.4703483581542969e-08, + 1.1548399925231934e-07 + ] + }, + { + "name": "DEF-f_pinky.03.L_end_0226", + "rotation": [ + 2.7755575615628914e-17, + -1.1555579666323415e-33, + -4.163336342344337e-17, + 1 + ], + "translation": [ + 0, + 0.015017727389931679, + 0 + ] + }, + { + "children": [ + 79 + ], + "name": "DEF-f_pinky.02.L_053", + "rotation": [ + -1.4901161193847656e-08, + -4.190952473948073e-09, + -5.5879354476928711e-09, + 1 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + 0, + -1.0430812835693359e-07, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_pinky.02.L_end_0188", + "rotation": [ + 0, + -0, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022592443972826004, + 0 + ] + }, + { + "children": [ + 81 + ], + "name": "DEF-f_pinky.01.L.02_054", + "rotation": [ + 5.5413686084193614e-08, + -1.3876703519599687e-07, + 4.3306499719619751e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "translation": [ + -1.1102230246251565e-16, + 0.013938196003437042, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_pinky.01.L.02_end_0196", + "rotation": [ + -1.3877787807814457e-17, + -0, + 0, + 1 + ], + "translation": [ + 0, + 0.013938155025243759, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 83 + ], + "name": "DEF-palm.04.L_055", + "rotation": [ + -5.4016716433125112e-08, + -7.4505814851022478e-09, + -3.5390264940815541e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 1 + ], + "translation": [ + 7.4505805969238281e-09, + -5.2154064178466797e-08, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-palm.04.L_end_0199", + "rotation": [ + 3.4694469519536142e-17, + 9.6296497219361793e-34, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.07480233907699585, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 85 + ], + "name": "DEF-f_pinky.01.L.01_056", + "rotation": [ + 0.35057196021080017, + -0.1787249892950058, + 0.01533868070691824, + 0.91919606924057007 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.074802346527576447, + 4.4703483581542969e-08 + ] + }, + { + "name": "DEF-f_pinky.01.L.01_end_0175", + "rotation": [ + -1.3877787807814457e-17, + -0, + 0, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 87 + ], + "name": "DEF-hand.L_057", + "rotation": [ + 1.5832480215749456e-08, + 1.071020676590706e-07, + -1.7695125364980413e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + 2.9802322387695312e-08, + 3.2037496566772461e-07, + 8.9406967163085938e-08 + ] + }, + { + "name": "DEF-hand.L_end_0216", + "rotation": [ + -4.163336342344337e-17, + -5.5511151231257827e-17, + -2.311115933264683e-33, + 1 + ], + "translation": [ + 0, + 0.33694693446159363, + 0 + ] + }, + { + "children": [ + 89 + ], + "name": "DEF-forearm.02.L_058", + "rotation": [ + -1.2172192782600177e-06, + 0.84375160932540894, + 8.0771354760145186e-07, + 0.53673380613327026 + ], + "scale": [ + 1, + 1.0000050067901611, + 1 + ], + "translation": [ + 7.4505805969238281e-08, + 0.12896060943603516, + 6.7055225372314453e-08 + ] + }, + { + "name": "DEF-forearm.02.L_end_0252", + "rotation": [ + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 7.7037197775489434e-34, + 1 + ], + "translation": [ + 0, + 0.128960981965065, + 0 + ] + }, + { + "children": [ + 91 + ], + "name": "MCH-forearm.01.L_059", + "rotation": [ + 7.0780487249066937e-08, + -6.1560399444715586e-07, + 4.353940425971814e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999630451202393, + 1.0000007152557373 + ], + "translation": [ + 1.8440186977386475e-07, + 3.7252902984619141e-08, + 9.6857547760009766e-08 + ] + }, + { + "children": [ + 92 + ], + "name": "MCH-forearm_smth.01.L_060", + "rotation": [ + -0.25531646609306335, + -0.090401075780391693, + 0.19322767853736877, + 0.94302928447723389 + ], + "scale": [ + 0.99999994039535522, + 0.99999648332595825, + 1 + ], + "translation": [ + 0.04432658851146698, + -0.11071411520242691, + 0.071930333971977234 + ] + }, + { + "children": [ + 93 + ], + "name": "DEF-forearm.01.L_061", + "rotation": [ + 0.25531658530235291, + 0.090401031076908112, + -0.19322755932807922, + 0.94302928447723389 + ], + "scale": [ + 1.0000011920928955, + 1, + 1.0000022649765015 + ], + "translation": [ + 2.2204460492503131e-16, + 0.13927145302295685, + 2.9802322387695312e-08 + ] + }, + { + "name": "DEF-forearm.01.L_end_0225", + "rotation": [ + -2.7755575615628914e-17, + 8.6736173798840355e-18, + 2.4074124304840448e-34, + 1 + ], + "translation": [ + 0, + 0.12896108627319336, + 0 + ] + }, + { + "children": [ + 95 + ], + "name": "DEF-upper_arm.02.L_062", + "rotation": [ + -2.1606697941933817e-07, + -4.827974862564588e-06, + -3.7252840812129762e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 0.99999886751174927, + 1.0000002384185791 + ], + "translation": [ + 2.384185791015625e-07, + 0.13927152752876282, + 2.9802322387695312e-08 + ] + }, + { + "name": "DEF-upper_arm.02.L_end_0219", + "rotation": [ + -2.7755575615628914e-17, + 4.8572257327350599e-17, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.13927137851715088, + 0 + ] + }, + { + "children": [ + 97 + ], + "name": "DEF-shoulder.L_063", + "rotation": [ + -7.0340329116902467e-09, + 8.2403872170289105e-08, + 3.7182417145231739e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.9999997615814209 + ], + "translation": [ + -1.5832483768463135e-08, + 3.119930624961853e-08, + 5.5312193580903113e-07 + ] + }, + { + "name": "DEF-shoulder.L_end_03", + "rotation": [ + 3.1848438816761693e-19, + -8.4025668367626594e-19, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.17531237006187439, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 99, + 179 + ], + "name": "ORG-shoulder.R_064", + "rotation": [ + -0.69586676359176636, + 0.39777570962905884, + 0.29703021049499512, + 0.51895761489868164 + ], + "scale": [ + 0.99999964237213135, + 0.9999997615814209, + 1 + ], + "translation": [ + -0.023130098357796669, + 0.26697859168052673, + 0.14965280890464783 + ] + }, + { + "children": [ + 100, + 177 + ], + "name": "ORG-upper_arm.R_065", + "rotation": [ + 0.30548635125160217, + 0.88275980949401855, + -0.059704620391130447, + -0.35192129015922546 + ], + "scale": [ + 1, + 1.0000003576278687, + 1.0000003576278687 + ], + "translation": [ + 0.027315555140376091, + 0.33446064591407776, + 0.019757639616727829 + ] + }, + { + "children": [ + 101, + 171, + 173 + ], + "name": "ORG-forearm.R_066", + "rotation": [ + 0.15077365934848785, + -0.1109679788351059, + 0.18219514191150665, + 0.96527630090713501 + ], + "scale": [ + 0.9999997615814209, + 1, + 1 + ], + "translation": [ + 2.9802322387695312e-08, + 0.27854278683662415, + -4.4703483581542969e-08 + ] + }, + { + "children": [ + 102, + 127, + 141, + 155, + 169 + ], + "name": "ORG-hand.R_067", + "rotation": [ + 0.17278601229190826, + -0.79830765724182129, + -0.22684118151664734, + 0.53046482801437378 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + -4.0978193283081055e-08, + 0.25792205333709717, + -2.0861625671386719e-07 + ] + }, + { + "children": [ + 103, + 112, + 121, + 123, + 125 + ], + "name": "ORG-palm.01.R_068", + "rotation": [ + -0.18320606648921967, + 0.11237333714962006, + 0.12725980579853058, + 0.96830403804779053 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + -0.0073304623365402222, + 0.34354400634765625, + -0.021197803318500519 + ] + }, + { + "children": [ + 104, + 110 + ], + "name": "ORG-f_index.01.R_069", + "rotation": [ + 0.17803950607776642, + 0.038298286497592926, + 0.044083643704652786, + 0.98228907585144043 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + 7.0780515670776367e-08, + 0.069626003503799438, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 105, + 108 + ], + "name": "ORG-f_index.02.R_070", + "rotation": [ + 0.077882900834083557, + 0.038419179618358612, + 9.6835348813328892e-05, + 0.99622207880020142 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + 1.1362135410308838e-07, + 0.045040056109428406, + -8.1956386566162109e-08 + ] + }, + { + "children": [ + 106 + ], + "name": "ORG-f_index.03.R_071", + "rotation": [ + 0.11234383285045624, + 0.058250222355127335, + 0.038226824253797531, + 0.99122375249862671 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-08, + 0.028223462402820587, + -1.4901161193847656e-08 + ] + }, + { + "children": [ + 107 + ], + "name": "DEF-f_index.03.R_072", + "rotation": [ + 1.0710209608078003e-08, + 1.6880221664905548e-08, + -7.4505805969238281e-09, + 1 + ], + "translation": [ + 1.4901161193847656e-08, + -5.2154064178466797e-08, + 7.7299773693084717e-08 + ] + }, + { + "name": "DEF-f_index.03.R_end_0239", + "rotation": [ + -6.9388939039072284e-18, + -2.7755575615628914e-17, + -1.9259299443872359e-34, + 1 + ], + "translation": [ + 0, + 0.022818643599748611, + 0 + ] + }, + { + "children": [ + 109 + ], + "name": "DEF-f_index.02.R_073", + "rotation": [ + -1.3504178220102858e-08, + -1.4901161193847656e-08, + -1.0244548320770264e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + 6.7055225372314453e-08, + 5.2154064178466797e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_index.02.R_end_0183", + "rotation": [ + -1.214306433183765e-17, + -3.4694469519536142e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.028223402798175812, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 111 + ], + "name": "DEF-f_index.01.R.02_074", + "rotation": [ + 6.3609331846237183e-07, + 9.4436103381667635e-07, + -1.9883735546954995e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1 + ], + "translation": [ + -3.7252902984619141e-08, + 0.022520154714584351, + 5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_index.01.R.02_end_0205", + "rotation": [ + 4.5102810375396984e-17, + -6.9388939039072284e-18, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519970312714577, + 0 + ] + }, + { + "children": [ + 113, + 119 + ], + "name": "ORG-thumb.01.R_075", + "rotation": [ + 0.0063957162201404572, + -0.65799009799957275, + -0.26252901554107666, + 0.70575255155563354 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + 0.0086900033056735992, + -0.0083239078521728516, + 0.02302435040473938 + ] + }, + { + "children": [ + 114, + 117 + ], + "name": "ORG-thumb.02.R_076", + "rotation": [ + 0.16518232226371765, + -0.0088785029947757721, + 0.057382598519325256, + 0.98455238342285156 + ], + "scale": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-08, + 0.041744723916053772, + -5.2154064178466797e-08 + ] + }, + { + "children": [ + 115 + ], + "name": "ORG-thumb.03.R_077", + "rotation": [ + 0.021510619670152664, + -0.016420742496848106, + 0.038739204406738281, + 0.99888283014297485 + ], + "scale": [ + 0.99999958276748657, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 0, + 0.033446311950683594, + -1.9371509552001953e-07 + ] + }, + { + "children": [ + 116 + ], + "name": "DEF-thumb.03.R_078", + "rotation": [ + -2.2351734685344127e-08, + -2.4214381610931923e-08, + -8.3819017504538351e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + 2.9802322387695312e-08, + 2.9802322387695312e-08, + 4.0978193283081055e-08 + ] + }, + { + "name": "DEF-thumb.03.R_end_0247", + "rotation": [ + 5.5511151231257827e-17, + -4.163336342344337e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + 0, + 0.020790537819266319, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 118 + ], + "name": "DEF-thumb.02.R_079", + "rotation": [ + 1.8160788428644992e-08, + 3.166496753692627e-08, + 5.5879363358712908e-09, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000001192092896 + ], + "translation": [ + -1.1102230246251565e-16, + -1.4901161193847656e-07, + -2.644956111907959e-07 + ] + }, + { + "name": "DEF-thumb.02.R_end_0190", + "rotation": [ + -5.5511151231257827e-17, + 1.3877787807814457e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.033446468412876129, + 0 + ] + }, + { + "children": [ + 120 + ], + "name": "DEF-thumb.01.R.02_080", + "rotation": [ + -4.8894438720026301e-08, + -2.6775524020195007e-08, + 7.8580351114965197e-09, + 1 + ], + "scale": [ + 1, + 0.99999994039535522, + 1 + ], + "translation": [ + 2.9802322387695312e-07, + 0.020872399210929871, + 2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thumb.01.R.02_end_0215", + "rotation": [ + -6.9388939039072284e-18, + 2.7755575615628914e-17, + -3.1225022567582528e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.0208723284304142, + 0 + ] + }, + { + "children": [ + 122 + ], + "name": "DEF-palm.01.R_081", + "rotation": [ + 1.4901160305669237e-08, + 1.6763804566721774e-08, + 3.2596290111541748e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 1.9744038581848145e-07, + -1.4901161193847656e-07, + -4.1723251342773438e-07 + ] + }, + { + "name": "DEF-palm.01.R_end_0184", + "rotation": [ + -3.4694469519536142e-17, + 1.9259299443872359e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.069626055657863617, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 124 + ], + "name": "DEF-f_index.01.R.01_082", + "rotation": [ + 0.17803849279880524, + 0.038296058773994446, + 0.04408390074968338, + 0.98228943347930908 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + 7.0780515670776367e-08, + 0.069626003503799438, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_index.01.R.01_end_0229", + "rotation": [ + 5.8980598183211441e-17, + -6.9388939039072284e-18, + 4.0926011318228762e-34, + 1 + ], + "translation": [ + 0, + 0.022519990801811218, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 126 + ], + "name": "DEF-thumb.01.R.01_083", + "rotation": [ + 0.0063957972452044487, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + 0.0086900033056735992, + -0.0083239078521728516, + 0.02302435040473938 + ] + }, + { + "name": "DEF-thumb.01.R.01_end_0179", + "rotation": [ + 8.6736173798840355e-18, + 2.0876779670603826e-34, + 2.4069288229178198e-17, + 1 + ], + "translation": [ + 0, + 0.020872326567769051, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 128, + 137, + 139 + ], + "name": "ORG-palm.02.R_084", + "rotation": [ + -0.17811873555183411, + 0.13169914484024048, + 0.16719585657119751, + 0.960715651512146 + ], + "scale": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000004768371582 + ], + "translation": [ + -0.023247450590133667, + 0.34059670567512512, + -0.015326261520385742 + ] + }, + { + "children": [ + 129, + 135 + ], + "name": "ORG-f_middle.01.R_085", + "rotation": [ + 0.21749134361743927, + 0.069006524980068207, + 0.003025722922757268, + 0.97361516952514648 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + 8.5914507508277893e-08, + 0.068187147378921509, + -1.0430812835693359e-07 + ] + }, + { + "children": [ + 130, + 133 + ], + "name": "ORG-f_middle.02.R_086", + "rotation": [ + 0.11846215277910233, + 0.085242263972759247, + 0.013570684939622879, + 0.9891999363899231 + ], + "scale": [ + 1.0000002384185791, + 0.99999994039535522, + 0.99999988079071045 + ], + "translation": [ + -7.4505805969238281e-09, + 0.049540482461452484, + -2.6077032089233398e-08 + ] + }, + { + "children": [ + 131 + ], + "name": "ORG-f_middle.03.R_087", + "rotation": [ + 0.056476786732673645, + 0.045752864331007004, + 0.025043459609150887, + 0.99704056978225708 + ], + "scale": [ + 1.0000002384185791, + 1, + 1.0000003576278687 + ], + "translation": [ + -5.9604644775390625e-08, + 0.032196070998907089, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 132 + ], + "name": "DEF-f_middle.03.R_088", + "rotation": [ + 3.9581213862049935e-09, + 1.0128132998943329e-08, + 2.7939679014821195e-08, + 1 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "translation": [ + -1.4901161193847656e-08, + 1.5646219253540039e-07, + 2.7939677238464355e-09 + ] + }, + { + "name": "DEF-f_middle.03.R_end_0233", + "rotation": [ + -2.7755575615628914e-17, + -5.5511151231257827e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022704442963004112, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 134 + ], + "name": "DEF-f_middle.02.R_089", + "rotation": [ + -1.862645149230957e-09, + 3.5390257835388184e-08, + -2.2584575987139033e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "translation": [ + -5.9604644775390625e-08, + 2.0489096641540527e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_middle.02.R_end_0202", + "rotation": [ + -6.9388939039072284e-18, + 3.8518598887744717e-34, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.032196018844842911, + 0 + ] + }, + { + "children": [ + 136 + ], + "name": "DEF-f_middle.01.R.02_090", + "rotation": [ + -5.871988832950592e-07, + -9.4156717977966764e-07, + 1.8207354912647133e-07, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + -7.4505805969238281e-08, + 0.02477022260427475, + -1.7881393432617188e-07 + ] + }, + { + "name": "DEF-f_middle.01.R.02_end_0209", + "rotation": [ + -2.4286128663675299e-17, + -1.0408340855860843e-17, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.024770231917500496, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 138 + ], + "name": "DEF-palm.02.R_091", + "rotation": [ + 5.5879354476928711e-09, + 8.119969585607123e-09, + -3.1723177418285786e-09, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "translation": [ + 1.5937257558107376e-07, + 9.3132257461547852e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-palm.02.R_end_0228", + "rotation": [ + -2.7755575615628914e-17, + 7.7037197775489434e-34, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.068187080323696136, + 0 + ] + }, + { + "children": [ + 140 + ], + "name": "DEF-f_middle.01.R.01_092", + "rotation": [ + 0.2174726128578186, + 0.06904292106628418, + 0.0028579561039805412, + 0.97361725568771362 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + 8.5914507508277893e-08, + 0.068187147378921509, + -1.0430812835693359e-07 + ] + }, + { + "name": "DEF-f_middle.01.R.01_end_0227", + "rotation": [ + 2.8888949165808538e-34, + -1.0408340855860843e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.024770215153694153, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 142, + 151, + 153 + ], + "name": "ORG-palm.03.R_093", + "rotation": [ + -0.17214220762252808, + 0.16701871156692505, + 0.22579613327980042, + 0.94418638944625854 + ], + "scale": [ + 0.99999922513961792, + 0.99999946355819702, + 0.99999970197677612 + ], + "translation": [ + -0.03495490550994873, + 0.33536878228187561, + -0.0064072161912918091 + ] + }, + { + "children": [ + 143, + 149 + ], + "name": "ORG-f_ring.01.R_094", + "rotation": [ + 0.28130209445953369, + 0.10888320952653885, + -0.021744726225733757, + 0.95317405462265015 + ], + "scale": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "translation": [ + 8.1956386566162109e-08, + 0.069797351956367493, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 144, + 147 + ], + "name": "ORG-f_ring.02.R_095", + "rotation": [ + 0.073152028024196625, + 0.052601080387830734, + 0.024043356999754906, + 0.99564242362976074 + ], + "scale": [ + 1.0000001192092896, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + -8.9406967163085938e-08, + 0.044816721230745316, + 8.9406967163085938e-08 + ] + }, + { + "children": [ + 145 + ], + "name": "ORG-f_ring.03.R_096", + "rotation": [ + 0.1502411812543869, + 0.10080226510763168, + 0.057818211615085602, + 0.98179608583450317 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000001192092896 + ], + "translation": [ + 1.4901161193847656e-08, + 0.031801030039787292, + -7.4505805969238281e-09 + ] + }, + { + "children": [ + 146 + ], + "name": "DEF-f_ring.03.R_097", + "rotation": [ + -1.6763802790364934e-08, + -3.7252891882388894e-09, + -1.8626447939595892e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + -1.1920928955078125e-07, + 2.8312206268310547e-07, + 1.7508864402770996e-07 + ] + }, + { + "name": "DEF-f_ring.03.R_end_0220", + "rotation": [ + -2.7755575615628914e-17, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.01855008490383625, + 0 + ] + }, + { + "children": [ + 148 + ], + "name": "DEF-f_ring.02.R_098", + "rotation": [ + 1.1175870007207322e-08, + -9.3132257461547852e-09, + -1.4901161193847656e-08, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 1 + ], + "translation": [ + 5.9604644775390625e-08, + 4.0978193283081055e-08, + -5.2154064178466797e-08 + ] + }, + { + "name": "DEF-f_ring.02.R_end_0208", + "rotation": [ + 2.7755575615628914e-17, + -1.5407439555097887e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.031800936907529831, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 150 + ], + "name": "DEF-f_ring.01.R.02_099", + "rotation": [ + -6.50063157081604e-07, + -9.6298754215240479e-07, + -7.4505823732806675e-09, + 1 + ], + "scale": [ + 0.99999982118606567, + 0.99999988079071045, + 1.0000001192092896 + ], + "translation": [ + -1.0430812835693359e-07, + 0.022408265620470047, + 2.0861625671386719e-07 + ] + }, + { + "name": "DEF-f_ring.01.R.02_end_0200", + "rotation": [ + 2.0816681711721685e-17, + -1.3877787807814457e-17, + 2.8888949165808538e-34, + 1 + ], + "translation": [ + 0, + 0.022408328950405121, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 152 + ], + "name": "DEF-palm.03.R_0100", + "rotation": [ + -2.2351743567128324e-08, + 3.5390261388101862e-08, + -5.5879354476928711e-09, + 1 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "translation": [ + 2.2351741790771484e-08, + -1.3411045074462891e-07, + -2.9802322387695312e-08 + ] + }, + { + "name": "DEF-palm.03.R_end_0211", + "rotation": [ + 3.4694469519536142e-17, + -2.7755575615628914e-17, + 9.6296497219361793e-34, + 1 + ], + "translation": [ + 0, + 0.069797389209270477, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 154 + ], + "name": "DEF-f_ring.01.R.01_0101", + "rotation": [ + 0.28114888072013855, + 0.10887622833251953, + -0.021684395149350166, + 0.95322144031524658 + ], + "translation": [ + 8.1956386566162109e-08, + 0.069797351956367493, + 1.1102230246251565e-16 + ] + }, + { + "name": "DEF-f_ring.01.R.01_end_0178", + "rotation": [ + 2.7755575615628914e-17, + 4.163336342344337e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022408317774534225, + 0 + ] + }, + { + "children": [ + 156, + 165, + 167 + ], + "name": "ORG-palm.04.R_0102", + "rotation": [ + -0.13570001721382141, + 0.18749432265758514, + 0.27479091286659241, + 0.93323177099227905 + ], + "scale": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "translation": [ + -0.044579654932022095, + 0.32914397120475769, + 0.0039984807372093201 + ] + }, + { + "children": [ + 157, + 163 + ], + "name": "ORG-f_pinky.01.R_0103", + "rotation": [ + 0.35057228803634644, + 0.17872516810894012, + -0.015338595025241375, + 0.91919589042663574 + ], + "scale": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "translation": [ + -2.9802322387695312e-08, + 0.074802443385124207, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 158, + 161 + ], + "name": "ORG-f_pinky.02.R_0104", + "rotation": [ + 0.041517704725265503, + 0.028988009318709373, + 0.020971883088350296, + 0.99849694967269897 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 0.9999995231628418 + ], + "translation": [ + -5.9604644775390625e-08, + 0.027876414358615875, + -1.4901161193847656e-08 + ] + }, + { + "children": [ + 159 + ], + "name": "ORG-f_pinky.03.R_0105", + "rotation": [ + 0.082881249487400055, + 0.04439912736415863, + 0.028591996058821678, + 0.99515926837921143 + ], + "scale": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + -2.9802322387695312e-08, + 0.02259238064289093, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 160 + ], + "name": "DEF-f_pinky.03.R_0106", + "rotation": [ + 2.3283064365386963e-09, + -1.8742866814136505e-08, + -1.862645149230957e-08, + 1 + ], + "translation": [ + -2.9802322387695312e-08, + 4.4703483581542969e-08, + -3.8184225559234619e-08 + ] + }, + { + "name": "DEF-f_pinky.03.R_end_0242", + "rotation": [ + 2.7755575615628914e-17, + 2.7755575615628914e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.015017727389931679, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 162 + ], + "name": "DEF-f_pinky.02.R_0107", + "rotation": [ + -5.5879345595144514e-09, + 6.5192580223083496e-09, + -1.8626458597736928e-08, + 1 + ], + "scale": [ + 0.9999997615814209, + 0.99999958276748657, + 1.0000001192092896 + ], + "translation": [ + -1.1102230246251565e-16, + -2.9802322387695312e-08, + -1.2665987014770508e-07 + ] + }, + { + "name": "DEF-f_pinky.02.R_end_01", + "rotation": [ + -2.7755575615628914e-17, + -5.5511151231257827e-17, + -1.5407439555097887e-33, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.022592443972826004, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 164 + ], + "name": "DEF-f_pinky.01.R.02_0108", + "rotation": [ + -3.7252902984619141e-08, + 6.3329935073852539e-08, + -3.7252902984619141e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.99999988079071045 + ], + "translation": [ + -5.9604644775390625e-08, + 0.013938106596469879, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_pinky.01.R.02_end_0198", + "translation": [ + 2.2204460492503131e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 166 + ], + "name": "DEF-palm.04.R_0109", + "rotation": [ + -3.7252902984619141e-09, + -7.4505805969238281e-09, + -3.166496753692627e-08, + 1 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + -4.4703483581542969e-08, + 1.0430812835693359e-07, + -1.1920928955078125e-07 + ] + }, + { + "name": "DEF-palm.04.R_end_0235", + "rotation": [ + 4.163336342344337e-17, + -2.311115933264683e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.07480233907699585, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 168 + ], + "name": "DEF-f_pinky.01.R.01_0110", + "rotation": [ + 0.35071709752082825, + 0.17868633568286896, + -0.015267206355929375, + 0.91914939880371094 + ], + "scale": [ + 0.99999982118606567, + 0.9999997615814209, + 1.0000002384185791 + ], + "translation": [ + -2.9802322387695312e-08, + 0.074802443385124207, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_pinky.01.R.01_end_0181", + "rotation": [ + -4.163336342344337e-17, + 5.5511151231257827e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 170 + ], + "name": "DEF-hand.R_0111", + "rotation": [ + 2.7939677238464355e-08, + -2.3283067918100642e-08, + -7.4505805969238281e-08, + 1 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999994039535522 + ], + "translation": [ + -1.9371509552001953e-07, + 2.0116567611694336e-07, + 1.9371509552001953e-07 + ] + }, + { + "name": "DEF-hand.R_end_0177", + "rotation": [ + 6.9388939039072284e-18, + 2.7755575615628914e-17, + -1.9259299443872359e-34, + 1 + ], + "translation": [ + 0, + 0.33694693446159363, + -5.5511151231257827e-17 + ] + }, + { + "children": [ + 172 + ], + "name": "DEF-forearm.02.R_0112", + "rotation": [ + -6.8993875856904197e-07, + -0.83288723230361938, + 1.0098485603293739e-08, + 0.55344271659851074 + ], + "scale": [ + 0.99999934434890747, + 1.0000036954879761, + 0.9999997615814209 + ], + "translation": [ + -7.4505805969238281e-08, + 0.12896047532558441, + -2.9802322387695312e-08 + ] + }, + { + "name": "DEF-forearm.02.R_end_0203", + "rotation": [ + -2.7755575615628914e-17, + -1.3877787807814457e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.128960981965065, + 2.7755575615628914e-17 + ] + }, + { + "children": [ + 174 + ], + "name": "MCH-forearm.01.R_0113", + "rotation": [ + 1.0896486912770342e-07, + -1.862645149230957e-08, + -1.4994313346505805e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999624490737915, + 1 + ], + "translation": [ + -1.1548399925231934e-07, + -1.5646219253540039e-07, + -3.7252902984619141e-09 + ] + }, + { + "children": [ + 175 + ], + "name": "MCH-forearm_smth.01.R_0114", + "rotation": [ + -0.25531548261642456, + 0.090401165187358856, + -0.19322697818279266, + 0.94302970170974731 + ], + "scale": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "translation": [ + -0.044326566159725189, + -0.11071465164422989, + 0.071930363774299622 + ] + }, + { + "children": [ + 176 + ], + "name": "DEF-forearm.01.R_0115", + "rotation": [ + 0.25531551241874695, + -0.090401187539100647, + 0.19322685897350311, + 0.94302970170974731 + ], + "scale": [ + 1.0000004768371582, + 0.99999749660491943, + 1.0000007152557373 + ], + "translation": [ + -2.9802322387695312e-08, + 0.13927140831947327, + -1.7881393432617188e-07 + ] + }, + { + "name": "DEF-forearm.01.R_end_0207", + "rotation": [ + -2.7755575615628914e-17, + -1.0408340855860843e-17, + 1.0408340855860843e-17, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.12896108627319336, + 0 + ] + }, + { + "children": [ + 178 + ], + "name": "DEF-upper_arm.02.R_0116", + "rotation": [ + -2.0861637040070491e-07, + 1.0663641660357825e-05, + -5.5879390004065499e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000002384185791 + ], + "translation": [ + -8.1956386566162109e-08, + 0.13927140831947327, + 8.9406967163085938e-08 + ] + }, + { + "name": "DEF-upper_arm.02.R_end_0201", + "rotation": [ + 2.7755575615628914e-17, + 4.163336342344337e-17, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.13927137851715088, + 0 + ] + }, + { + "children": [ + 180 + ], + "name": "DEF-shoulder.R_0117", + "rotation": [ + -6.8685035436999442e-09, + -3.1981471693143249e-08, + 6.6938348197709274e-08, + 1 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 6.0535967350006104e-08, + 6.0535967350006104e-09, + 1.9711660570465028e-07 + ] + }, + { + "name": "DEF-shoulder.R_end_0187", + "rotation": [ + -2.439454888092385e-19, + -2.0328790734103208e-19, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.17531237006187439, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 182 + ], + "name": "DEF-neck_0118", + "rotation": [ + -0.27045553922653198, + 0.0173672866076231, + 0.016690928488969803, + 0.96243107318878174 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 4.8021320253610611e-10, + 0.30786621570587158, + -2.310712261532899e-07 + ] + }, + { + "name": "DEF-neck_end_0192", + "rotation": [ + -4.163336342344337e-17, + 3.4694469519536142e-18, + 8.6736173798840355e-19, + 1 + ], + "translation": [ + -6.9388939039072284e-18, + 0.19137141108512878, + 5.5511151231257827e-17 + ] + }, + { + "children": [ + 184 + ], + "name": "DEF-chest_0119", + "rotation": [ + 0.34367910027503967, + 0.0062861694023013115, + -0.0083904145285487175, + 0.93902873992919922 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "translation": [ + -4.6566128730773926e-10, + 0.77674132585525513, + -6.2645995058119297e-09 + ] + }, + { + "name": "DEF-chest_end_0204", + "rotation": [ + -1.5612034346858506e-38, + 2.3039296165316969e-19, + 6.7762635780344027e-20, + 1 + ], + "translation": [ + 0, + 0.30786621570587158, + 0 + ] + }, + { + "children": [ + 186, + 199 + ], + "name": "ORG-thigh.L_0120", + "rotation": [ + 0.55087316036224365, + 0.76001483201980591, + -0.12418584525585175, + -0.32170495390892029 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "translation": [ + 0.21592012047767639, + 0.36957693099975586, + -0.15007570385932922 + ] + }, + { + "children": [ + 187, + 193, + 195 + ], + "name": "ORG-shin.L_0121", + "rotation": [ + -0.21334272623062134, + 0.27992528676986694, + 0.75936949253082275, + 0.54725193977355957 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -8.1956386566162109e-08, + 0.42556756734848022, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 188, + 191 + ], + "name": "ORG-foot.L_0122", + "rotation": [ + -0.5201650857925415, + 0.03343529999256134, + -0.058115024119615555, + 0.85143011808395386 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + 1.6763806343078613e-08, + 0.4787544310092926, + -2.7939677238464355e-08 + ] + }, + { + "children": [ + 189 + ], + "name": "ORG-toe.L_0124", + "rotation": [ + 0.00023341859923675656, + 0.95152968168258667, + -0.30752530694007874, + -0.0044053308665752411 + ], + "scale": [ + 0.99999994039535522, + 1.0000003576278687, + 1.0000001192092896 + ], + "translation": [ + 7.2736838774289936e-09, + 0.3134346604347229, + -2.1420419216156006e-08 + ] + }, + { + "children": [ + 190 + ], + "name": "DEF-toe.L_0125", + "rotation": [ + 2.423621836555867e-08, + 1.8335414964099073e-08, + -4.2928155474797336e-10, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "translation": [ + 4.1240127757191658e-08, + -2.4214386940002441e-08, + -2.1420419216156006e-08 + ] + }, + { + "name": "DEF-toe.L_end_0206", + "rotation": [ + -3.4694469519536142e-18, + -8.6736173798840355e-19, + -1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.3084145188331604, + -6.9388939039072284e-18 + ] + }, + { + "children": [ + 192 + ], + "name": "DEF-foot.L_0126", + "rotation": [ + -6.6152992417300993e-08, + 7.1422604719373339e-08, + 1.7025736376297118e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + 1.6934791347011924e-08, + 3.166496753692627e-08, + -1.862645149230957e-08 + ] + }, + { + "name": "DEF-foot.L_end_0213", + "rotation": [ + 8.3266726846886741e-17, + 1.4444474582904269e-34, + 1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.31343463063240051, + 0 + ] + }, + { + "children": [ + 194 + ], + "name": "DEF-shin.02.L_0127", + "rotation": [ + -1.0089339497199035e-07, + 0.039239507168531418, + 2.4005871068766282e-07, + 0.99922984838485718 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.9999995231628418 + ], + "translation": [ + 1.1548399925231934e-07, + 0.23937708139419556, + 1.601874828338623e-07 + ] + }, + { + "name": "DEF-shin.02.L_end_0241", + "rotation": [ + 1.3877787807814457e-17, + -2.0816681711721685e-17, + -1.0408340855860843e-17, + 1 + ], + "translation": [ + 0, + 0.2393772304058075, + 0 + ] + }, + { + "children": [ + 196 + ], + "name": "MCH-shin.01.L_0128", + "rotation": [ + 3.5227276384830475e-07, + -3.8766305721082972e-08, + 3.9028236642479897e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 1.2270174920558929e-07, + -8.9406967163085938e-08, + 7.4505805969238281e-09 + ] + }, + { + "children": [ + 197 + ], + "name": "MCH-shin_smth.01.L_0129", + "rotation": [ + 0.2789786159992218, + -0.18448325991630554, + -0.78801393508911133, + 0.51688575744628906 + ], + "scale": [ + 1.0000002384185791, + 0.99999958276748657, + 0.99999994039535522 + ], + "translation": [ + -0.15143658220767975, + 0.084600672125816345, + -0.12323391437530518 + ] + }, + { + "children": [ + 198 + ], + "name": "DEF-shin.01.L_0130", + "rotation": [ + -0.27897858619689941, + 0.18448331952095032, + 0.78801393508911133, + 0.51688575744628906 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + 2.2351741790771484e-08, + 0.21278375387191772, + 8.3266726846886741e-17 + ] + }, + { + "name": "DEF-shin.01.L_end_0218", + "rotation": [ + 1.3877787807814457e-17, + 6.5052130349130266e-18, + 4.4452289071905682e-18, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.23937712609767914, + 0 + ] + }, + { + "children": [ + 200 + ], + "name": "DEF-thigh.02.L_0131", + "rotation": [ + -5.1688388680304342e-08, + 5.5879345595144514e-09, + -7.8231067845990765e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000002384185791 + ], + "translation": [ + -1.4901161193847656e-08, + 0.21278385818004608, + -2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thigh.02.L_end_0214", + "rotation": [ + 5.5511151231257827e-17, + 2.7755575615628914e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + 0, + 0.21278378367424011, + -2.7755575615628914e-17 + ] + }, + { + "children": [ + 202, + 215 + ], + "name": "ORG-thigh.R_0132", + "rotation": [ + -0.55043667554855347, + 0.76018273830413818, + -0.12315189093351364, + 0.32245197892189026 + ], + "scale": [ + 1, + 1, + 0.99999988079071045 + ], + "translation": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007562935352325 + ] + }, + { + "children": [ + 203, + 209, + 211 + ], + "name": "ORG-shin.R_0133", + "rotation": [ + -0.27897855639457703, + -0.18448290228843689, + -0.78801411390304565, + 0.51688569784164429 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -3.7252902984619141e-08, + 0.42556747794151306, + 2.4214386940002441e-08 + ] + }, + { + "children": [ + 204, + 207 + ], + "name": "ORG-foot.R_0134", + "rotation": [ + -0.44886565208435059, + -0.028899207711219788, + 0.060879826545715332, + 0.89105451107025146 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -5.9604644775390625e-08, + 0.47875425219535828, + 3.6088749766349792e-08 + ] + }, + { + "children": [ + 205 + ], + "name": "ORG-toe.R_0135", + "rotation": [ + 0.0023645448964089155, + 0.95931285619735718, + -0.28233495354652405, + -0.00052421912550926208 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + -2.1085725165903568e-08, + 0.31343460083007812, + 1.9819708541035652e-08 + ] + }, + { + "children": [ + 206 + ], + "name": "DEF-toe.R_0136", + "rotation": [ + 1.3969286172255124e-08, + -9.4369738690147642e-09, + -3.5780090001935605e-10, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + -6.2361664276977535e-08, + -6.0597812989726663e-08, + -3.819059202214703e-08 + ] + }, + { + "name": "DEF-toe.R_end_0250", + "rotation": [ + -1.7347234759768071e-18, + -3.5998900258307764e-21, + -1.3552527156068805e-20, + 1 + ], + "translation": [ + 0, + 0.3084145188331604, + 6.9388939039072284e-18 + ] + }, + { + "children": [ + 208 + ], + "name": "DEF-foot.R_0137", + "rotation": [ + -4.4919353570094245e-08, + -6.7164364736527205e-08, + -2.7357600629329681e-09, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 9.3423295766115189e-08, + 1.203734427690506e-07, + 7.6761352829635143e-08 + ] + }, + { + "name": "DEF-foot.R_end_0249", + "rotation": [ + 5.5511151231257827e-17, + 4.8148248609680896e-35, + 8.6736173798840355e-19, + 1 + ], + "translation": [ + 0, + 0.31343463063240051, + 2.7755575615628914e-17 + ] + }, + { + "children": [ + 210 + ], + "name": "DEF-shin.02.R_0138", + "rotation": [ + -3.6451157825467817e-07, + -0.032415475696325302, + 2.7714870043382689e-07, + 0.99947446584701538 + ], + "scale": [ + 0.99999964237213135, + 1, + 0.99999970197677612 + ], + "translation": [ + -4.0978193283081055e-08, + 0.23937712609767914, + 1.9316212274134159e-07 + ] + }, + { + "name": "DEF-shin.02.R_end_0236", + "rotation": [ + -1.0408340855860843e-17, + 1.3767389836830631e-34, + -1.3227266504323154e-17, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.2393772304058075, + 0 + ] + }, + { + "children": [ + 212 + ], + "name": "MCH-shin.01.R_0139", + "rotation": [ + 6.2997045802148932e-08, + 1.2815868899451743e-07, + -4.12401206517643e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + -4.0046870708465576e-08, + -6.891787052154541e-08, + 1.704611349850893e-07 + ] + }, + { + "children": [ + 213 + ], + "name": "MCH-shin_smth.01.R_0140", + "rotation": [ + 0.27897858619689941, + 0.18448306620121002, + 0.78801429271697998, + 0.51688528060913086 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.9999997615814209 + ], + "translation": [ + 0.15143664181232452, + 0.084600850939750671, + -0.12323373556137085 + ] + }, + { + "children": [ + 214 + ], + "name": "DEF-shin.01.R_0141", + "rotation": [ + -0.27897855639457703, + -0.18448291718959808, + -0.78801423311233521, + 0.51688545942306519 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + 2.2351741790771484e-08, + 0.21278375387191772, + 1.1175870895385742e-08 + ] + }, + { + "name": "DEF-shin.01.R_end_0194", + "rotation": [ + 3.4694469519536142e-18, + 8.6736173798840355e-19, + 1.2658060363768264e-17, + 1 + ], + "translation": [ + -1.6653345369377348e-16, + 0.23937712609767914, + 0 + ] + }, + { + "children": [ + 216 + ], + "name": "DEF-thigh.02.R_0142", + "rotation": [ + 2.3655590553062211e-07, + -2.7008351111135198e-08, + 7.823108205684548e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "translation": [ + -7.4505805969238281e-08, + 0.21278373897075653, + 3.3527612686157227e-08 + ] + }, + { + "name": "DEF-thigh.02.R_end_0186", + "rotation": [ + 0, + 0, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.21278378367424011, + 0 + ] + }, + { + "children": [ + 218 + ], + "name": "DEF-spine_0143", + "rotation": [ + -0.12614771723747253, + -0.0073608146049082279, + 0.0043073771521449089, + 0.99197483062744141 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + -7.9936057773011271e-15, + 0.40506201982498169, + -7.4505739355856804e-09 + ] + }, + { + "name": "DEF-spine_end_0193", + "rotation": [ + 0, + 0, + 1.3010426069826053e-18, + 1 + ], + "translation": [ + -8.6736173798840355e-19, + 0.77674132585525513, + -2.7755575615628914e-17 + ] + }, + { + "children": [ + 220 + ], + "name": "MCH-shoulder_rh_ns_ch.R_0123", + "rotation": [ + 0.0010375226847827435, + 0.0020420229993760586, + 0.49636015295982361, + 0.86811369657516479 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + -0.3015645444393158, + 0.40531206130981445, + 1.5431758165359497 + ] + }, + { + "children": [ + 221 + ], + "name": "DEF-upper_arm.01.R_0145", + "rotation": [ + 0.31056672334671021, + 0.83153635263442993, + -0.020840095356106758, + -0.46006664633750916 + ], + "scale": [ + 1, + 0.9999995231628418, + 1.0000002384185791 + ], + "translation": [ + 6.3329935073852539e-08, + -1.3271346688270569e-07, + -8.5383362602442503e-08 + ] + }, + { + "name": "DEF-upper_arm.01.R_end_0251", + "rotation": [ + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.13927130401134491, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 223 + ], + "name": "MCH-shoulder_rh_ns_ch.L_0146", + "rotation": [ + -0.0014966969611123204, + 0.0023893655743449926, + -0.49651646614074707, + 0.86802273988723755 + ], + "scale": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "translation": [ + 0.29354196786880493, + 0.405204176902771, + 1.5401378870010376 + ] + }, + { + "children": [ + 224 + ], + "name": "DEF-upper_arm.01.L_0147", + "rotation": [ + -0.31472542881965637, + 0.83235687017440796, + -0.02208041213452816, + 0.45567795634269714 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + -1.4016404747962952e-07, + 3.6321580410003662e-08, + 1.0423536878079176e-07 + ] + }, + { + "name": "DEF-upper_arm.01.L_end_0248", + "rotation": [ + -2.7755575615628914e-17, + -7.8062556418956319e-17, + 1.7347234759768071e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.13927130401134491, + 0 + ] + }, + { + "children": [ + 226 + ], + "name": "DEF-hips_0148", + "rotation": [ + 0.64831167459487915, + -9.0763023763429374e-08, + 3.2261102234087957e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.4210854715202004e-14, + 0.055200062692165375, + 0.19749556481838226 + ] + }, + { + "name": "DEF-hips_end_0182", + "rotation": [ + -0, + -6.6174449004242214e-24, + -1.9852334701272664e-23, + 1 + ], + "translation": [ + 0, + 0.40506204962730408, + 6.9388939039072284e-18 + ] + }, + { + "children": [ + 228, + 254 + ], + "name": "torso_0149", + "rotation": [ + -0.061978895217180252, + 5.2619378267789808e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "scale": [ + 1, + 0.99999982118606567, + 1 + ], + "translation": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ] + }, + { + "children": [ + 229 + ], + "name": "MCH-par_spine_0150", + "rotation": [ + 0.061978936195373535, + 0.0012765624560415745, + 3.3879881812026724e-05, + 0.99807673692703247 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "translation": [ + -9.0340152025802922e-11, + 8.5681676864624023e-08, + -2.3376196622848511e-07 + ] + }, + { + "children": [ + 230, + 242 + ], + "name": "spine_0151", + "rotation": [ + 0.54706472158432007, + -0.0094404155388474464, + -0.0007564605912193656, + 0.83703672885894775 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "translation": [ + -2.5522695068502799e-11, + 5.6362441824830967e-08, + 9.1991402939584077e-08 + ] + }, + { + "children": [ + 231 + ], + "name": "wing_L_0152", + "rotation": [ + -0.21781767904758453, + -0.28712323307991028, + -0.11274226009845734, + 0.92596161365509033 + ], + "scale": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999994039535522 + ], + "translation": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -6.5891072154045105e-08 + ] + }, + { + "children": [ + 232, + 240 + ], + "name": "wing_L.001_0153", + "rotation": [ + -0.061176721006631851, + -0.35154440999031067, + -0.1102207824587822, + 0.92764502763748169 + ], + "scale": [ + 0.9999997615814209, + 1, + 1.0000002384185791 + ], + "translation": [ + -2.7755575615628914e-17, + 0.25762274861335754, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 233, + 238 + ], + "name": "wing_L.003_0154", + "rotation": [ + 0.10357404500246048, + 0.029893208295106888, + -0.17539113759994507, + 0.97857904434204102 + ], + "scale": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 5.5879354476928711e-08, + 0.407990962266922, + 1.3411045074462891e-07 + ] + }, + { + "children": [ + 234, + 236 + ], + "name": "wing_L.005_0155", + "rotation": [ + -0.62064284086227417, + 0.39226031303405762, + 0.12407290190458298, + 0.6674879789352417 + ], + "scale": [ + 0.99999970197677612, + 0.99999946355819702, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-09, + 0.57860493659973145, + 4.9010850489139557e-08 + ] + }, + { + "children": [ + 235 + ], + "name": "wing_L.007_0156", + "rotation": [ + -0.036368310451507568, + 0.042531803250312805, + -0.13963313400745392, + 0.98862075805664062 + ], + "scale": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999970197677612 + ], + "translation": [ + -1.7881393432617188e-07, + 0.40159714221954346, + -1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.007_end_0185", + "rotation": [ + -3.8518598887744717e-34, + -1.3877787807814457e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.6613776683807373, + 0 + ] + }, + { + "children": [ + 237 + ], + "name": "wing_L.006_0157", + "rotation": [ + 0.098787307739257812, + 0.79536384344100952, + -0.49130561947822571, + 0.34096366167068481 + ], + "scale": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999994039535522 + ], + "translation": [ + -1.7881393432617188e-07, + 0.40159714221954346, + -1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.006_end_0244", + "rotation": [ + 3.4694469519536142e-17, + 1.2037062152420224e-34, + 3.4694469519536142e-18, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.71108460426330566, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 239 + ], + "name": "wing_L.004_0158", + "rotation": [ + 0.92855155467987061, + -0.11121511459350586, + -0.17540611326694489, + -0.30766192078590393 + ], + "scale": [ + 0.99999946355819702, + 0.99999982118606567, + 0.99999946355819702 + ], + "translation": [ + 7.4505805969238281e-09, + 0.57860493659973145, + 4.9010850489139557e-08 + ] + }, + { + "name": "wing_L.004_end_0245", + "rotation": [ + 3.4694469519536142e-18, + 5.5511151231257827e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.70221841335296631, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 241 + ], + "name": "wing_L.002_0159", + "rotation": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477147459983826, + -0.41790062189102173 + ], + "scale": [ + 0.99999964237213135, + 1.0000003576278687, + 1 + ], + "translation": [ + 5.5879354476928711e-08, + 0.407990962266922, + 1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.002_end_0253", + "rotation": [ + 1.3877787807814457e-17, + 2.7755575615628914e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.37917813658714294, + 0 + ] + }, + { + "children": [ + 243 + ], + "name": "wing_R_0160", + "rotation": [ + -0.25376984477043152, + 0.27044236660003662, + 0.12404783815145493, + 0.92036616802215576 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -6.5891072154045105e-08 + ] + }, + { + "children": [ + 244, + 252 + ], + "name": "wing_R.001_0161", + "rotation": [ + -0.0027954690158367157, + 0.36314886808395386, + 0.10791334509849548, + 0.92545664310455322 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.862645149230957e-08, + 0.25762271881103516, + 8.9406967163085938e-08 + ] + }, + { + "children": [ + 245, + 250 + ], + "name": "wing_R.003_0162", + "rotation": [ + 0.12453363835811615, + -0.0011828342685475945, + 0.16432477533817291, + 0.97851282358169556 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "translation": [ + -1.1920928955078125e-07, + 0.40799093246459961, + 8.1956386566162109e-08 + ] + }, + { + "children": [ + 246, + 248 + ], + "name": "wing_R.005_0163", + "rotation": [ + -0.61131399869918823, + -0.35110387206077576, + -0.12587124109268188, + 0.69798117876052856 + ], + "scale": [ + 0.9999997615814209, + 0.9999995231628418, + 0.9999997615814209 + ], + "translation": [ + -7.8231096267700195e-08, + 0.57860565185546875, + 1.862645149230957e-08 + ] + }, + { + "children": [ + 247 + ], + "name": "wing_R.007_0144", + "rotation": [ + -0.0065264194272458553, + -0.026156334206461906, + 0.16140437126159668, + 0.98652011156082153 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + 5.9604644775390625e-08, + 0.40159708261489868, + 1.4901161193847656e-07 + ] + }, + { + "name": "wing_R.007_end_0197", + "rotation": [ + 3.8163916471489756e-17, + 2.0816681711721685e-17, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.6613776683807373, + 0 + ] + }, + { + "children": [ + 249 + ], + "name": "wing_R.006_0165", + "rotation": [ + -0.098806805908679962, + 0.79607915878295898, + -0.48979663848876953, + -0.34145930409431458 + ], + "scale": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "translation": [ + 5.9604644775390625e-08, + 0.40159708261489868, + 1.4901161193847656e-07 + ] + }, + { + "name": "wing_R.006_end_0221", + "rotation": [ + -3.3827107781547738e-17, + 5.5511151231257827e-17, + -4.6837533851373792e-17, + 1 + ], + "translation": [ + 0, + 0.71108460426330566, + 0 + ] + }, + { + "children": [ + 251 + ], + "name": "wing_R.004_0166", + "rotation": [ + 0.9284898042678833, + 0.11122464388608932, + 0.17535419762134552, + -0.30787447094917297 + ], + "scale": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + -7.8231096267700195e-08, + 0.57860565185546875, + 1.862645149230957e-08 + ] + }, + { + "name": "wing_R.004_end_02", + "rotation": [ + -2.0816681711721685e-17, + 2.7755575615628914e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + 0, + 0.70221841335296631, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 253 + ], + "name": "wing_R.002_0167", + "rotation": [ + 0.81515991687774658, + 0.20495341718196869, + 0.34477174282073975, + -0.41790047287940979 + ], + "scale": [ + 1.0000003576278687, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.1920928955078125e-07, + 0.40799093246459961, + 8.1956386566162109e-08 + ] + }, + { + "name": "wing_R.002_end_0255", + "rotation": [ + 6.9388939039072284e-18, + 5.5511151231257827e-17, + -1.3877787807814457e-17, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.37917813658714294, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 255 + ], + "name": "Tail_0168", + "rotation": [ + 0.09612477570772171, + 1.3521212594014287e-08, + 9.7687419042813417e-08, + 0.9953693151473999 + ], + "scale": [ + 1, + 0.99999994039535522, + 1.0000004768371582 + ], + "translation": [ + -8.8470897274817162e-15, + 0.74672240018844604, + 5.2154064178466797e-08 + ] + }, + { + "children": [ + 256 + ], + "name": "Tail.001_0169", + "rotation": [ + 0.36176523566246033, + -1.6344735342954664e-08, + 6.2083520546707405e-09, + 0.93226921558380127 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999982118606567 + ], + "translation": [ + 3.0198066269804258e-14, + 0.36641588807106018, + 5.2154057073039439e-08 + ] + }, + { + "children": [ + 257 + ], + "name": "Tail.002_0170", + "rotation": [ + 0.19072017073631287, + 6.3293686958232342e-10, + -1.2646499125690269e-10, + 0.98164445161819458 + ], + "scale": [ + 1, + 1, + 1.0000002384185791 + ], + "translation": [ + 4.4630965589931293e-14, + 0.52352422475814819, + -2.8199664825478976e-14 + ] + }, + { + "name": "Tail.002_end_0195", + "rotation": [ + -2.7755575615628914e-17, + 1.3234889800848443e-23, + 3.6734198463196485e-40, + 1 + ], + "translation": [ + -5.2939559203393771e-23, + 0.7313845157623291, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 259 + ], + "name": "MCH-hips_rh_ns_ch_0171", + "rotation": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842836618423462 + ] + }, + { + "children": [ + 260 + ], + "name": "DEF-thigh.01.L_0172", + "rotation": [ + 0.54630142450332642, + 0.77057766914367676, + -0.14296230673789978, + -0.2955111563205719 + ], + "scale": [ + 1, + 1.0000005960464478, + 1 + ], + "translation": [ + -1.9446307675252683e-08, + 8.6856388747946767e-09, + -2.0732837668901993e-09 + ] + }, + { + "name": "DEF-thigh.01.L_end_0238", + "rotation": [ + -2.7755575615628914e-17, + -1.3877787807814457e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.21278375387191772, + 0 + ] + }, + { + "children": [ + 262 + ], + "name": "MCH-hips_rh_ns_ch.001_0173", + "rotation": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + -0.21592006087303162, + 0.26226195693016052, + 0.53842836618423462 + ] + }, + { + "children": [ + 263 + ], + "name": "DEF-thigh.01.R_0174", + "rotation": [ + -0.54575395584106445, + 0.7710757851600647, + -0.14247633516788483, + 0.29545772075653076 + ], + "scale": [ + 1.0000002384185791, + 1, + 1 + ], + "translation": [ + -1.9446302346182165e-08, + 3.601785181217565e-08, + -5.7531355679429907e-08 + ] + }, + { + "name": "DEF-thigh.01.R_end_0212", + "rotation": [ + 0, + -0, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + -1.6653345369377348e-16, + 0.21278375387191772, + 5.5511151231257827e-17 + ] + }, + { + "matrix": [ + 14.506000280380249, + 0, + 0, + 0, + 0, + 8.8823634058991401e-16, + -14.506000280380249, + 0, + 0, + 14.506000280380249, + 8.8823634058991401e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "name": "Dragonite", + "rotation": [ + -0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "scale": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ] + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 6, + "joints": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "skeleton": 7 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} + diff --git a/demo/ar/location-base/assets/dragonite/textures/Dragonite_baseColor.png b/demo/ar/location-base/assets/dragonite/textures/Dragonite_baseColor.png new file mode 100644 index 0000000..9c811c2 Binary files /dev/null and b/demo/ar/location-base/assets/dragonite/textures/Dragonite_baseColor.png differ diff --git a/demo/ar/location-base/assets/magnemite/scene.bin b/demo/ar/location-base/assets/magnemite/scene.bin new file mode 100644 index 0000000..71dba49 Binary files /dev/null and b/demo/ar/location-base/assets/magnemite/scene.bin differ diff --git a/demo/ar/location-base/assets/magnemite/scene.gltf b/demo/ar/location-base/assets/magnemite/scene.gltf new file mode 100644 index 0000000..7fcba9b --- /dev/null +++ b/demo/ar/location-base/assets/magnemite/scene.gltf @@ -0,0 +1,1645 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 304, + "max": [ + 6.7710013389587402, + 7.6924300193786621, + 0.5 + ], + "min": [ + -6.7710013389587402, + 4.1924300193786621, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 3648, + "componentType": 5126, + "count": 304, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 304, + "max": [ + 0.98135483264923096, + 0.99999630451202393, + 0.9506257176399231, + 1 + ], + "min": [ + -0.99981784820556641, + -0.999927818775177, + -0.8821672797203064, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 304, + "max": [ + 0.92098718881607056, + 0.84881538152694702 + ], + "min": [ + 0.14504003524780273, + 0.1103326827287674 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 936, + "max": [ + 303 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 7296, + "componentType": 5126, + "count": 435, + "max": [ + 2.855971097946167, + 8.9244184494018555, + 2.6009621620178223 + ], + "min": [ + -2.8559718132019043, + 3.2124760150909424, + -2.8559725284576416 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 12516, + "componentType": 5126, + "count": 435, + "max": [ + 1, + 1, + 0.9847375750541687 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 4864, + "componentType": 5126, + "count": 435, + "max": [ + 0.99999856948852539, + 0.51998293399810791, + 0.99964404106140137, + 1 + ], + "min": [ + -0.99999028444290161, + -0.53486007452011108, + -0.99830895662307739, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 2432, + "componentType": 5126, + "count": 435, + "max": [ + 0.70053297281265259, + 0.55803161859512329 + ], + "min": [ + 0.29753333330154419, + 0.27553772926330566 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 3744, + "componentType": 5125, + "count": 2220, + "max": [ + 434 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 17736, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + -1.0000002384185791, + -1, + -1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 23004, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11824, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 0.078690603375434875, + 1, + 1 + ], + "min": [ + -1, + -0.07869064062833786, + -1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5912, + "componentType": 5126, + "count": 439, + "max": [ + 0.5829390287399292, + 0.25211232900619507 + ], + "min": [ + 0.40425741672515869, + 0.073430716991424561 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 12624, + "componentType": 5125, + "count": 2280, + "max": [ + 438 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 28272, + "componentType": 5126, + "count": 2226, + "max": [ + 1.2974452972412109, + 1.3974108695983887, + 1.277778148651123 + ], + "min": [ + -1.2974452972412109, + -1.3974108695983887, + -1.277778148651123 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 54984, + "componentType": 5126, + "count": 2226, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 18848, + "componentType": 5126, + "count": 2226, + "max": [ + 0.9999508261680603, + 0.99909776449203491, + 0.99999207258224487, + 1 + ], + "min": [ + -0.99987488985061646, + -0.99887269735336304, + -0.9979282021522522, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 9424, + "componentType": 5126, + "count": 2226, + "max": [ + 0.9841606616973877, + 0.9715430736541748 + ], + "min": [ + 0.40966320037841797, + 0.69751256704330444 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 21744, + "componentType": 5125, + "count": 11520, + "max": [ + 2225 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 81696, + "componentType": 5126, + "count": 4452, + "max": [ + 6.0472793579101562, + 1.2965602874755859, + 1.9254629611968994 + ], + "min": [ + -2.0541346073150635, + -2.6589465141296387, + -0.83721375465393066 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 135120, + "componentType": 5126, + "count": 4452, + "max": [ + 0.9999396800994873, + 0.99840158224105835, + 0.98760849237442017 + ], + "min": [ + -0.99897104501724243, + -0.99977743625640869, + -0.98672795295715332 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 54464, + "componentType": 5126, + "count": 4452, + "max": [ + 0.99871188402175903, + 0.99978053569793701, + 0.99928379058837891, + 1 + ], + "min": [ + -0.99251633882522583, + -0.99669897556304932, + -0.9972044825553894, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 27232, + "componentType": 5126, + "count": 4452, + "max": [ + 0.98049002885818481, + 0.59510970115661621 + ], + "min": [ + 0.024456273764371872, + 0.060263663530349731 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 67824, + "componentType": 5125, + "count": 23040, + "max": [ + 4451 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 3, + 0, + 6, + 1 + ], + "min": [ + 1, + 0, + 0, + 0, + 0, + 2.832769343193999e-16, + -1, + 0, + 0, + 0, + 2.832769343193999e-16, + 0, + -3, + -6, + 0, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 304, + "max": [ + 3, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 125696, + "componentType": 5126, + "count": 304, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 2432, + "componentType": 5123, + "count": 435, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 130560, + "componentType": 5126, + "count": 435, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 12.23095703125, + 1.5746579170227051 + ], + "min": [ + -8.3917531967163086, + 1.3936433792114258, + 1.5746579170227051 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1032, + "componentType": 5126, + "count": 245, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 245, + "max": [ + 0.75069552659988403, + 0.14050851762294769, + 0.11918520927429199, + 0.78815227746963501 + ], + "min": [ + 0.59710729122161865, + -0.10189154744148254, + -0.13332097232341766, + 0.64177036285400391 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2012, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3096, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 16.215744018554688, + -2.384185791015625e-07 + ], + "min": [ + -8.3917531967163086, + 5.3784317970275879, + -2.384185791015625e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3044, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6192, + "componentType": 5126, + "count": 258, + "max": [ + 6.5917596817016602, + 10.504326820373535, + 2.4956674575805664 + ], + "min": [ + -9.5691986083984375, + -0.3329862654209137, + 2.4956674575805664 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4076, + "componentType": 5126, + "count": 257, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3920, + "componentType": 5126, + "count": 257, + "max": [ + 0.9397737979888916, + -0, + 0, + 0.9397737979888916 + ], + "min": [ + -0.85895991325378418, + -0, + 0, + -0.49273952841758728 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5104, + "componentType": 5126, + "count": 257, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8032, + "componentType": 5126, + "count": 257, + "max": [ + 0.42283338308334351, + 0, + 0, + 1 + ], + "min": [ + -0.42283335328102112, + 0, + 0, + 0.90620744228363037 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6132, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9288, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 12.243526458740234, + 0 + ], + "min": [ + -8.3917531967163086, + 1.4062134027481079, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7164, + "componentType": 5126, + "count": 167, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12144, + "componentType": 5126, + "count": 167, + "max": [ + 0.42261826992034912, + 0, + 0, + 1 + ], + "min": [ + -0.42261826992034912, + 0, + 0, + 0.90630781650543213 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7832, + "componentType": 5126, + "count": 167, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14816, + "componentType": 5126, + "count": 167, + "max": [ + 0.42261826992034912, + 0, + 0, + 1 + ], + "min": [ + -0.42261826992034912, + 0, + 0, + 0.90630781650543213 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8500, + "componentType": 5126, + "count": 140, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12384, + "componentType": 5126, + "count": 140, + "max": [ + 2.5814628601074219, + 1.8419075012207031, + 0 + ], + "min": [ + -2.0465738773345947, + -1.037976861000061, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9060, + "componentType": 5126, + "count": 156, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14064, + "componentType": 5126, + "count": 156, + "max": [ + 7.7658348083496094, + 6.2412676811218262, + 0 + ], + "min": [ + -8.3883838653564453, + -4.591526985168457, + 0 + ], + "type": "VEC3" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 2, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 3, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 33, + "path": "rotation" + } + }, + { + "sampler": 8, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 35, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 32, + "path": "translation" + } + } + ], + "name": "Take 001", + "samplers": [ + { + "input": 30, + "interpolation": "LINEAR", + "output": 31 + }, + { + "input": 32, + "interpolation": "LINEAR", + "output": 33 + }, + { + "input": 34, + "interpolation": "LINEAR", + "output": 35 + }, + { + "input": 36, + "interpolation": "LINEAR", + "output": 37 + }, + { + "input": 38, + "interpolation": "LINEAR", + "output": 39 + }, + { + "input": 40, + "interpolation": "LINEAR", + "output": 41 + }, + { + "input": 42, + "interpolation": "LINEAR", + "output": 43 + }, + { + "input": 44, + "interpolation": "LINEAR", + "output": 45 + }, + { + "input": 46, + "interpolation": "LINEAR", + "output": 47 + }, + { + "input": 48, + "interpolation": "LINEAR", + "output": 49 + }, + { + "input": 50, + "interpolation": "LINEAR", + "output": 51 + } + ] + } + ], + "asset": { + "extras": { + "author": "JoseDR (https://sketchfab.com/JoseDR)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/shiny-magnemite-f9cfa3a79455410f9cd7e41512a8b921", + "title": "Shiny Magnemite" + }, + "generator": "Sketchfab-4.90.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 5912, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 159984, + "byteOffset": 5912, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 62848, + "byteOffset": 165896, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 188544, + "byteOffset": 228744, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 137520, + "byteOffset": 417288, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 256, + "byteOffset": 554808, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 9684, + "byteOffset": 555064, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 15936, + "byteOffset": 564748, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 17488, + "byteOffset": 580684, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 598172, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/blinn2_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "blinn2", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0.27681250569999999, + "roughnessFactor": 0.56693749430000007 + } + } + ], + "meshes": [ + { + "name": "imanes_blinn2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 26, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 3, + "WEIGHTS_0": 27 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "cuerpo_blinn2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 28, + "NORMAL": 6, + "POSITION": 5, + "TANGENT": 7, + "TEXCOORD_0": 8, + "WEIGHTS_0": 29 + }, + "indices": 9, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "ojo_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 11, + "POSITION": 10, + "TANGENT": 12, + "TEXCOORD_0": 13 + }, + "indices": 14, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "torniglio_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 16, + "POSITION": 15, + "TANGENT": 17, + "TEXCOORD_0": 18 + }, + "indices": 19, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "torniglio_team_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 21, + "POSITION": 20, + "TANGENT": 22, + "TEXCOORD_0": 23 + }, + "indices": 24, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "magnemite animado 2.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5 + ], + "name": "RootNode" + }, + { + "children": [ + 6, + 8, + 9, + 7, + 13, + 14, + 15, + 23, + 26, + 29, + 32 + ], + "name": "" + }, + { + "children": [ + 10 + ], + "name": "_rootJoint" + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 3.3678462234697446, + 5.9424300899304567, + 6.1629758220391547e-33, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "mesh": 1, + "name": "", + "skin": 0 + }, + { + "children": [ + 11, + 12 + ], + "name": "root_00", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation": [ + 0, + 6, + 0 + ] + }, + { + "name": "iman_l_01", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ], + "translation": [ + 3, + 0, + 0 + ] + }, + { + "name": "iman_r_02", + "translation": [ + -3, + 0, + 0 + ] + }, + { + "name": "imagePlane1", + "scale": [ + 2.4016404151916504, + 2.4016404151916504, + 2.4016404151916504 + ], + "translation": [ + 7.9415349960327148, + 7.0980281829833984, + -13.97634220123291 + ] + }, + { + "name": "imagePlane2", + "rotation": [ + -0, + 0.7071068286895752, + 0, + 0.7071068286895752 + ], + "scale": [ + 2.4016404151916504, + 2.4016404151916504, + 2.4016404151916504 + ], + "translation": [ + -14.280845642089844, + 6.8380646705627441, + 15.431127548217773 + ] + }, + { + "children": [ + 16, + 18, + 20, + 22 + ], + "name": "cuerpo" + }, + { + "children": [ + 17 + ], + "name": "ojo", + "rotation": [ + 0.7071068286895752, + 1.7791760297465088e-16, + 1.7430503180680852e-14, + 0.7071068286895752 + ], + "scale": [ + 1.5072540044784546, + 1.4791148900985718, + 1.5072540044784546 + ], + "translation": [ + 0, + 5.9874300956726074, + 1.5746579170227051 + ] + }, + { + "mesh": 2, + "name": "ojo_blinn2_0" + }, + { + "children": [ + 19 + ], + "name": "torniglio", + "translation": [ + -1.7881393432617188e-07, + 9.9722185134887695, + -2.384185791015625e-07 + ] + }, + { + "mesh": 3, + "name": "torniglio_blinn2_0" + }, + { + "children": [ + 21 + ], + "name": "torniglio_team", + "rotation": [ + 0.83669960498809814, + -0.077820777893066406, + 0.078882642090320587, + 0.53633499145507812 + ], + "scale": [ + 0.56975185871124268, + 0.56975185871124268, + 0.56975185871124268 + ], + "translation": [ + -1.1774451732635498, + 4.2608003616333008, + 2.4956676959991455 + ] + }, + { + "mesh": 4, + "name": "torniglio_team_blinn2_0" + }, + { + "name": "imanes", + "translation": [ + 3.3678462505340576, + 5.9424300193786621, + 0 + ] + }, + { + "children": [ + 24 + ], + "name": "directionalLight1", + "rotation": [ + 0.61303746700286865, + -0.23035401105880737, + 0.19328996539115906, + 0.73058956861495972 + ] + }, + { + "children": [ + 25 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 27 + ], + "name": "directionalLight2", + "rotation": [ + -0.32650557160377502, + 0.62721139192581177, + -0.62721139192581177, + -0.32650557160377502 + ] + }, + { + "children": [ + 28 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 30 + ], + "name": "directionalLight3", + "rotation": [ + -0.35371994972229004, + -0.57015955448150635, + 0.67948973178863525, + -0.29680627584457397 + ] + }, + { + "children": [ + 31 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 33, + 34, + 35 + ], + "name": "ctrl_supermover" + }, + { + "name": "ctrl_iman_l", + "translation": [ + 3, + 6, + 4.4357695579528809 + ] + }, + { + "name": "ctrl_iman_r", + "translation": [ + -3, + 6, + 4.4357695579528809 + ] + }, + { + "name": "ctrl_aim" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 25, + "joints": [ + 6, + 10, + 11, + 12 + ], + "skeleton": 6 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} + diff --git a/demo/ar/location-base/assets/magnemite/textures/blinn2_baseColor.png b/demo/ar/location-base/assets/magnemite/textures/blinn2_baseColor.png new file mode 100644 index 0000000..ca67f87 Binary files /dev/null and b/demo/ar/location-base/assets/magnemite/textures/blinn2_baseColor.png differ diff --git a/demo/ar/location-base/build/aframe-ar.min.js b/demo/ar/location-base/build/aframe-ar.min.js new file mode 100644 index 0000000..8d9a8c8 --- /dev/null +++ b/demo/ar/location-base/build/aframe-ar.min.js @@ -0,0 +1 @@ +(function(){"use strict";var ARController=function(width,height,camera){var id;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;camera=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.transform_mat=new Float32Array(16);this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d");this.videoWidth=w;this.videoHeight=h;if(typeof camera==="string"){var self=this;this.cameraParam=new ARCameraParam(camera,function(){self._initialize()},function(err){console.error("ARController: Failed to load ARCameraParam",err)})}else{this.cameraParam=camera;this._initialize()}};ARController.prototype.dispose=function(){artoolkit.teardown(this.id);for(var t in this){this[t]=null}};ARController.prototype.process=function(image){this.detectMarker(image);var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat}})}var multiMarkerCount=this.getMultiMarkerCount();for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?function(x){dump(x)}:function(x){}}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=function(title){document.title=title}}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=function(){}}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:function(value){tempRet0=value},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(stackTop){STACKTOP=stackTop},getNativeTypeSize:function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}},getNativeFieldSize:function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr},getAlignSize:function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)},dynCall:function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}},functionPointers:[],addFunction:function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret},alignMemory:function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret},makeBigInt:function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret},stringToC:function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret}};var toC={string:JSfuncs["stringToC"],array:JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={v:"void",b:"bool",c:"char",s:"short",i:"int",l:"long",f:"float",d:"double",w:"wchar_t",a:"signed char",h:"unsigned char",t:"unsigned short",j:"unsigned int",m:"unsigned long",x:"long long",y:"unsigned long long",z:"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||268435456;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32};Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[function($0,$1,$2,$3){{if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3}},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){{var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]}},function($0,$1,$2,$3,$4){{if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4}}];function _emscripten_asm_const_33(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}function _emscripten_asm_const_4(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_5(code,a0,a1,a2,a3,a4){return ASM_CONSTS[code](a0,a1,a2,a3,a4)}STATIC_BASE=8;STATICTOP=STATIC_BASE+16496;__ATINIT__.push({func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}});allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,53,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,116,42,0,0,52,9,0,0,136,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,73,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,54,47,0,0,228,8,0,0,23,47,0,0,228,8,0,0,62,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,0,46,0,0,228,8,0,0,225,45,0,0,228,8,0,0,194,45,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,186,46,0,0,228,8,0,0,217,46,0,0,228,8,0,0,248,46,0,0,12,9,0,0,199,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,212,47,0,0,228,8,0,0,225,47,0,0,12,9,0,0,238,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,15,48,0,0,64,2,0,0,0,0,0,0,12,9,0,0,49,48,0,0,64,2,0,0,0,0,0,0,200,8,0,0,89,48,0,0,200,8,0,0,91,48,0,0,200,8,0,0,93,48,0,0,200,8,0,0,95,48,0,0,200,8,0,0,97,48,0,0,200,8,0,0,99,48,0,0,200,8,0,0,101,48,0,0,200,8,0,0,103,48,0,0,200,8,0,0,105,48,0,0,200,8,0,0,107,48,0,0,200,8,0,0,109,48,0,0,200,8,0,0,111,48,0,0,200,8,0,0,113,48,0,0,12,9,0,0,115,48,0,0,80,2,0,0,0,0,0,0,12,9,0,0,152,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,81,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,73,58,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,118,111,105,100,0,98,111,111,108,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,108,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+15945);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}},clearRef:function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0}};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;var _BDtoILow=true;function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:8,readValueFromPointer:function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=function(){return HEAPU16};shift=1}else if(charSize===4){getHeap=function(){return HEAPU32};shift=2}registerType(rawType,{name:name,fromWireType:function(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0},argPackAdvance:8,readValueFromPointer:integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _llvm_ctlz_i32=true;function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(value){return value},toWireType:function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},argPackAdvance:8,readValueFromPointer:floatReadValueFromPointer(name,shift),destructorFunction:null})}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push(function(){Runtime.dynCall("vi",routine,[arg])});_pthread_cleanup_push.level=__ATEXIT__.length}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var argsList="";var argsListWired="";for(var i=0;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)},resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}});if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=function(e){done(this.error);e.preventDefault()};create.sort().forEach(function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)})}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})}});remove.sort().reverse().forEach(function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}})}};var NODEFS={isWindows:false,staticInit:function(){NODEFS.isWindows=!!process.platform.match(/^win/)},mount:function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node},getMode:function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode},realPath:function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)},flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function(flags){flags&=~32768;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}},node_ops:{getattr:function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}},setattr:function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},lookup:function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node},rename:function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},unlink:function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},rmdir:function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readdir:function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},symlink:function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readlink:function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}},stream_ops:{open:function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},close:function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},read:function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0},mayOpen:function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}},llseek:function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){random_device=function(){return require("crypto").randomBytes(1)[0]}}else{random_device=function(){return Math.random()*256|0}}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS,IDBFS:IDBFS,NODEFS:NODEFS,WORKERFS:WORKERFS}},init:function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}});Object.defineProperty(lazyArray,"chunkSize",{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:function(){return this.contents.length}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length},doAccess:function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=Pointer_stringify(SYSCALLS.get());return ret},getStreamFromFD:function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream},getSocketFromFD:function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket},getSocketAddress:function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _cos=Math_cos;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=function(){abort("cannot dynamically allocate, sbrk now has control")}}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _BItoD=true;function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _ceilf=Math_ceil;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:8,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");FS.staticInit();__ATINIT__.unshift(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()});__ATMAIN__.push(function(){FS.ignorePermissions=false});__ATEXIT__.push(function(){FS.quit()});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift(function(){TTY.init()});__ATEXIT__.push(function(){TTY.shutdown()});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r+1>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do{if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function jd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do{if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function kd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do{if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function ld(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function md(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function nd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t+1>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function od(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function pd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do{if((d[t>>0]|0)>(d[j>>0]|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function qd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function rd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do{if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function sd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function td(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do{if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ud(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do{if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function vd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function wd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function xd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function yd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do{if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do{if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ec(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function fc(){return i|0}function gc(a){a=a|0;i=a}function hc(a,b){a=a|0;b=b|0;i=a;j=b}function ic(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function jc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function kc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function lc(a){a=a|0;D=a}function mc(){return D|0}function nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do{if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do{if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do{if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l+1>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do{if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function zc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do{if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ac(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do{if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Bc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Cc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Dc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l+1>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ec(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Fc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do{if((d[r>>0]|0)>(d[n>>0]|0)){b[a>>1]=0;k=q}else{k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Gc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Hc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do{if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Ic(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Jc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do{if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Kc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do{if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Lc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do{if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do{if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Mc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l+1>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do{if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do{if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do{if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do{if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do{if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do{if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l+1>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do{if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do{if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do{if((d[r>>0]|0)>(d[n>>0]|0)){k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[a>>1]=0;k=q}}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Zc(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function _c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do{if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function $c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do{if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do{if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do{if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do{if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)th(a,b)}}else th(a,b);return}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do{if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}}while(0);return}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;h=g+16|0;f=g+4|0;j=g;d=c[d>>2]|0;e=c[d>>2]|0;c[j>>2]=d;c[h>>2]=c[j>>2];vh(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d){if(a[f+8>>0]|0)Fg(d+264|0);Lh(d)}i=g;return e|0}function vh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;n=(m&l|0)==0;if(n)k=m&e;else k=(e>>>0)%(l>>>0)|0;g=(c[d>>2]|0)+(k<<2)|0;f=c[g>>2]|0;while(1){e=c[f>>2]|0;if((e|0)==(o|0)){j=f;break}else f=e}i=d+8|0;if((j|0)!=(i|0)){e=c[j+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0))g=o;else h=12}else h=12;do{if((h|0)==12){e=c[o>>2]|0;if(e){e=c[e+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0)){g=o;break}}c[g>>2]=0;g=o}}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(n)f=f&m;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(k|0)){c[(c[d>>2]|0)+(f<<2)>>2]=j;e=c[o>>2]|0}}c[j>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=i;a[b+8>>0]=1;return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(408)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,392)|0;h[e+248>>3]=.0001;h[e+256>>3]=1.0e3;d=e+264|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function xh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do{if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do{if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;yh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return}function yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)zh(a,b)}}else zh(a,b);return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do{if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}}while(0);return}function Ah(a){a=a|0;return Aj(c[a+4>>2]|0)|0}function Bh(a){a=a|0;Ka(624,10917);Ya(632,10922,1,1,0);Ga(640,10927,1,-128,127);Ga(656,10932,1,-128,127);Ga(648,10944,1,0,255);Ga(664,10958,2,-32768,32767);Ga(672,10964,2,0,65535);Ga(680,10979,4,-2147483648,2147483647);Ga(688,10983,4,0,-1);Ga(696,10996,4,-2147483648,2147483647);Ga(704,11001,4,0,-1);kb(712,11015,4);kb(720,11021,8);sb(360,11028);sb(392,11040);bb(416,4,11073);db(440,11086);Aa(448,0,11102);Dh(11132);Eh(11169);Fh(11208);Gh(11239);Hh(11279);Ih(11308);Aa(456,4,11346);Aa(464,5,11376);Dh(11415);Eh(11447);Fh(11480);Gh(11513);Hh(11547);Ih(11580);Aa(472,6,11614);Aa(480,7,11645);Aa(488,7,11677);return}function Ch(){Bh(0);return}function Dh(a){a=a|0;Aa(536,0,a|0);return}function Eh(a){a=a|0;Aa(528,1,a|0);return}function Fh(a){a=a|0;Aa(520,2,a|0);return}function Gh(a){a=a|0;Aa(512,3,a|0);return}function Hh(a){a=a|0;Aa(504,4,a|0);return}function Ih(a){a=a|0;Aa(496,5,a|0);return}function Jh(a){a=a|0;Ia(12478,12501,303,12589)}function Kh(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=Uj(b)|0;a:do{if(!a){while(1){a=Ph()|0;if(!a)break;_b[a&0]();a=Uj(b)|0;if(a)break a}b=Wa(4)|0;c[b>>2]=2224;wb(b|0,544,1)}}while(0);return a|0}function Lh(a){a=a|0;Vj(a);return}function Mh(a){a=a|0;return}function Nh(a){a=a|0;Lh(a);return}function Oh(a){a=a|0;return 12610}function Ph(){var a=0;a=c[559]|0;c[559]=a+0;return a|0}function Qh(a){a=a|0;return}function Rh(a){a=a|0;return}function Sh(a){a=a|0;return}function Th(a){a=a|0;return}function Uh(a){a=a|0;return}function Vh(a){a=a|0;Lh(a);return}function Wh(a){a=a|0;Lh(a);return}function Xh(a){a=a|0;Lh(a);return}function Yh(a){a=a|0;Lh(a);return}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;return(a|0)==(b|0)|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)!=(b|0))if((b|0)!=0?(f=ei(b,576,592,0)|0,(f|0)!=0):0){b=g;e=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));c[g>>2]=f;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dc[c[(c[f>>2]|0)+28>>2]&3](f,g,c[d>>2]|0,1);if((c[g+24>>2]|0)==1){c[d>>2]=c[g+16>>2];b=1}else b=0}else b=0;else b=1;i=h;return b|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do{if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}}while(0);return}function ai(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);return}function bi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);else{a=c[a+8>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d,e)}return}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d+f|0,(g&2|0)!=0?e:2);return}function di(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do{if((b|0)!=(c[d+8>>2]|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;ci(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{ci(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else $h(0,d,e,f)}while(0);return}function ei(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;g=q+16|0;d=q+20|0;e=q+24|0;h=q+28|0;j=q+32|0;k=q+40|0;l=(p|0)==(f|0);m=g;n=m+36|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do{if(l){c[q+48>>2]=1;bc[c[(c[f>>2]|0)+20>>2]&3](f,q,o,o,1,0);g=(c[e>>2]|0)==1?o:0}else{Rb[c[(c[p>>2]|0)+24>>2]&3](p,q,o,1,0);switch(c[q+36>>2]|0){case 0:{g=(c[k>>2]|0)==1&(c[h>>2]|0)==1&(c[j>>2]|0)==1?c[d>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((c[e>>2]|0)!=1?!((c[k>>2]|0)==0&(c[h>>2]|0)==1&(c[j>>2]|0)==1):0){g=0;break}g=c[g>>2]|0}}while(0);i=r;return g|0}function fi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do{if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;f=d+16|0;b=c[f>>2]|0;if(!b){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((b|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}b=d+24|0;f=c[b>>2]|0;if((f|0)==2){c[b>>2]=g;f=g}if((f|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}}while(0);return}function gi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do{if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){q=c[b+12>>2]|0;j=b+16+(q<<3)|0;ii(b+16|0,d,e,f,g);h=b+24|0;if((q|0)<=1)break;i=c[b+8>>2]|0;if((i&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(i&1)){i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[k>>2]|0)==1)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+24|0;b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[k>>2]|0)==1?(c[i>>2]|0)==1:0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+54|0;while(1){if(a[i>>0]|0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4)break;i=c[b+12>>2]|0;j=b+16+(i<<3)|0;k=d+52|0;f=d+53|0;n=d+54|0;l=b+8|0;o=d+24|0;b:do{if((i|0)>0){i=0;h=0;b=b+16|0;while(1){a[k>>0]=0;a[f>>0]=0;hi(b,d,e,e,1,g);if(a[n>>0]|0){q=20;break b}do{if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[l>>2]&1)){h=1;q=20;break b}else{h=1;break}if((c[o>>2]|0)==1)break b;if(!(c[l>>2]&2))break b;else{i=1;h=1}}}while(0);b=b+8|0;if(b>>>0>=j>>>0){q=20;break}}}else{i=0;h=0;q=20}}while(0);do{if((q|0)==20){if((!i?(c[p>>2]=e,e=d+40|0,c[e>>2]=(c[e>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[n>>0]=1;if(h)break}else q=24;if((q|0)==24?h:0)break;c[m>>2]=4;break a}}while(0);c[m>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}}while(0);return}function hi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e+h|0,(i&2|0)!=0?f:2,g);return}function ii(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Rb[c[(c[a>>2]|0)+24>>2]&3](a,b,d+g|0,(h&2|0)!=0?e:2,f);return}function ji(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do{if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;Rb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4)break;h=d+52|0;a[h>>0]=0;k=d+53|0;a[k>>0]=0;b=c[b+8>>2]|0;bc[c[(c[b>>2]|0)+20>>2]&3](b,d,e,e,1,g);if(a[k>>0]|0){if(!(a[h>>0]|0)){h=1;j=13}}else{h=0;j=13}do{if((j|0)==13){c[i>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else j=16;if((j|0)==16?h:0)break;c[f>>2]=4;break a}}while(0);c[f>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}}while(0);return}function ki(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do{if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(i=d+28|0,(c[i>>2]|0)!=1):0)c[i>>2]=f}else if((b|0)==(c[d>>2]|0)){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}while(0);return}function li(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==(c[d+8>>2]|0))fi(0,d,e,f,g);else{m=d+52|0;n=a[m>>0]|0;o=d+53|0;p=a[o>>0]|0;l=c[b+12>>2]|0;i=b+16+(l<<3)|0;a[m>>0]=0;a[o>>0]=0;hi(b+16|0,d,e,f,g,h);a:do{if((l|0)>1){j=d+24|0;k=b+8|0;l=d+54|0;b=b+24|0;do{if(a[l>>0]|0)break a;if(!(a[m>>0]|0)){if((a[o>>0]|0)!=0?(c[k>>2]&1|0)==0:0)break a}else{if((c[j>>2]|0)==1)break a;if(!(c[k>>2]&2))break a}a[m>>0]=0;a[o>>0]=0;hi(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}}while(0);a[m>>0]=n;a[o>>0]=p}return}function mi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);else{a=c[a+8>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e,f,g)}return}function ni(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);return}function oi(a){a=a|0;Ia(12625,12654,1164,12589)}function pi(a){a=a|0;return((a|0)==32|(a+-9|0)>>>0<5)&1|0}function qi(){var a=0;if(!(c[597]|0))a=2644;else a=c[(gb()|0)+60>>2]|0;return a|0}function ri(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[12742+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=12830;e=5;break}}if((e|0)==2)if(!c)b=12830;else{b=12830;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function si(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0.0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+512|0;H=L;switch(e|0){case 0:{K=24;J=-149;A=4;break}case 1:{K=53;J=-1074;A=4;break}case 2:{K=53;J=-1074;A=4;break}default:g=0.0}a:do{if((A|0)==4){E=b+4|0;C=b+100|0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0}while((pi(e)|0)!=0);b:do{switch(e|0){case 43:case 45:{h=1-(((e|0)==45&1)<<1)|0;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;I=h;break b}else{e=vi(b)|0;I=h;break b}}default:I=1}}while(0);h=e;e=0;do{if((h|32|0)!=(a[14634+e>>0]|0))break;do{if(e>>>0<7){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}}while(0);e=e+1|0}while(e>>>0<8);c:do{switch(e|0){case 8:break;case 3:{A=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{A=23;break c}d:do{if(!e){e=0;do{if((h|32|0)!=(a[16477+e>>0]|0))break d;do{if(e>>>0<2){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}}while(0);e=e+1|0}while(e>>>0<3)}}while(0);switch(e|0){case 3:{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==40)e=1;else{if(!(c[C>>2]|0)){g=s;break a}c[E>>2]=(c[E>>2]|0)+-1;g=s;break a}while(1){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0}else h=vi(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!k){c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{do{if((h|0)==48){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|32|0)!=120){if(!(c[C>>2]|0)){e=48;break}c[E>>2]=(c[E>>2]|0)+-1;e=48;break}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=0}else{e=vi(b)|0;k=0}e:while(1){switch(e|0){case 46:{A=74;break e}case 48:break;default:{y=0;l=0;x=0;h=0;n=k;o=0;w=0;m=1.0;k=0;g=0.0;break e}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==74){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){k=0;h=0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;k=gk(k|0,h|0,-1,-1)|0;h=D}while((e|0)==48);y=0;l=0;x=k;n=1;o=1;w=0;m=1.0;k=0;g=0.0}else{y=0;l=0;x=0;h=0;n=k;o=1;w=0;m=1.0;k=0;g=0.0}}while(1){u=e+-48|0;p=e|32;if(u>>>0>=10){v=(e|0)==46;if(!(v|(p+-97|0)>>>0<6)){p=x;u=y;break}if(v)if(!o){v=l;h=y;u=y;o=1;p=w;j=m}else{p=x;u=y;e=46;break}else A=86}else A=86;if((A|0)==86){A=0;e=(e|0)>57?p+-87|0:u;do{if(!((y|0)<0|(y|0)==0&l>>>0<8)){if((y|0)<0|(y|0)==0&l>>>0<14){r=m*.0625;p=w;j=r;g=g+r*+(e|0);break}if((w|0)!=0|(e|0)==0){p=w;j=m}else{p=1;j=m;g=g+m*.5}}else{p=w;j=m;k=e+(k<<4)|0}}while(0);l=gk(l|0,y|0,1,0)|0;v=x;u=D;n=1}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;y=u;x=v;e=d[e>>0]|0;w=p;m=j;continue}else{y=u;x=v;e=vi(b)|0;w=p;m=j;continue}}if(!n){e=(c[C>>2]|0)==0;if(!e)c[E>>2]=(c[E>>2]|0)+-1;if(f){if(!e?(z=c[E>>2]|0,c[E>>2]=z+-1,(o|0)!=0):0)c[E>>2]=z+-2}else ui(b,0);g=+(I|0)*0.0;break a}n=(o|0)==0;o=n?l:p;n=n?u:h;if((u|0)<0|(u|0)==0&l>>>0<8){h=u;do{k=k<<4;l=gk(l|0,h|0,1,0)|0;h=D}while((h|0)<0|(h|0)==0&l>>>0<8)}if((e|32|0)==112){h=Hj(b,f)|0;e=D;if((h|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break a}if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}}}else if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}H=fk(o|0,n|0,2)|0;H=gk(H|0,D|0,-32,-1)|0;e=gk(H|0,D|0,h|0,e|0)|0;h=D;if(!k){g=+(I|0)*0.0;break a}if((h|0)>0|(h|0)==0&e>>>0>(0-J|0)>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}H=J+-106|0;G=((H|0)<0)<<31>>31;if((h|0)<(G|0)|(h|0)==(G|0)&e>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((k|0)>-1){do{G=!(g>=.5);H=G&1|k<<1;k=H^1;g=g+(G?g:g+-1.0);e=gk(e|0,h|0,-1,-1)|0;h=D}while((H|0)>-1);l=e;m=g}else{l=e;m=g}e=dk(32,0,J|0,((J|0)<0)<<31>>31|0)|0;e=gk(l|0,h|0,e|0,D|0)|0;J=D;if(0>(J|0)|0==(J|0)&K>>>0>e>>>0)if((e|0)<0){e=0;A=127}else A=125;else{e=K;A=125}if((A|0)==125)if((e|0)<53)A=127;else{h=e;j=+(I|0);g=0.0}if((A|0)==127){g=+(I|0);h=e;j=g;g=+yi(+Di(1.0,84-e|0),g)}K=(k&1|0)==0&(m!=0.0&(h|0)<32);g=j*(K?0.0:m)+(g+j*+(((K&1)+k|0)>>>0))-g;if(!(g!=0.0))c[(qi()|0)>>2]=34;g=+Ei(g,l);break a}else e=h}while(0);F=J+K|0;G=0-F|0;k=0;f:while(1){switch(e|0){case 46:{A=138;break f}case 48:break;default:{h=0;p=0;o=0;break f}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==138){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){h=0;e=0;while(1){h=gk(h|0,e|0,-1,-1)|0;k=D;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48)e=k;else{p=k;k=1;o=1;break}}}else{h=0;p=0;o=1}}c[H>>2]=0;n=e+-48|0;l=(e|0)==46;g:do{if(l|n>>>0<10){B=H+496|0;y=0;v=0;w=l;A=p;u=k;z=o;k=0;l=0;o=0;h:while(1){do{if(w)if(!z){h=y;p=v;z=1}else{p=A;e=y;n=v;break h}else{w=gk(y|0,v|0,1,0)|0;v=D;x=(e|0)!=48;if((l|0)>=125){if(!x){p=A;y=w;break}c[B>>2]=c[B>>2]|1;p=A;y=w;break}p=H+(l<<2)|0;if(k)n=e+-48+((c[p>>2]|0)*10|0)|0;c[p>>2]=n;k=k+1|0;n=(k|0)==9;p=A;y=w;u=1;k=n?0:k;l=(n&1)+l|0;o=x?w:o}}while(0);e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;n=e+-48|0;w=(e|0)==46;if(!(w|n>>>0<10)){n=z;A=161;break g}else A=p}u=(u|0)!=0;A=169}else{y=0;v=0;u=k;n=o;k=0;l=0;o=0;A=161}}while(0);do{if((A|0)==161){B=(n|0)==0;h=B?y:h;p=B?v:p;u=(u|0)!=0;if(!((e|32|0)==101&u))if((e|0)>-1){e=y;n=v;A=169;break}else{e=y;n=v;A=171;break}n=Hj(b,f)|0;e=D;if((n|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break}if(!(c[C>>2]|0)){n=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;n=0;e=0}}h=gk(n|0,e|0,h|0,p|0)|0;u=y;p=D;n=v;A=173}}while(0);if((A|0)==169)if(c[C>>2]|0){c[E>>2]=(c[E>>2]|0)+-1;if(u){u=e;A=173}else A=172}else A=171;if((A|0)==171)if(u){u=e;A=173}else A=172;do{if((A|0)==172){c[(qi()|0)>>2]=22;ui(b,0);g=0.0}else if((A|0)==173){e=c[H>>2]|0;if(!e){g=+(I|0)*0.0;break}if(((n|0)<0|(n|0)==0&u>>>0<10)&((h|0)==(u|0)&(p|0)==(n|0))?K>>>0>30|(e>>>K|0)==0:0){g=+(I|0)*+(e>>>0);break}b=(J|0)/-2|0;E=((b|0)<0)<<31>>31;if((p|0)>(E|0)|(p|0)==(E|0)&h>>>0>b>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}b=J+-106|0;E=((b|0)<0)<<31>>31;if((p|0)<(E|0)|(p|0)==(E|0)&h>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(k){if((k|0)<9){n=H+(l<<2)|0;e=c[n>>2]|0;do{e=e*10|0;k=k+1|0}while((k|0)!=9);c[n>>2]=e}l=l+1|0}if((o|0)<9?(o|0)<=(h|0)&(h|0)<18:0){if((h|0)==9){g=+(I|0)*+((c[H>>2]|0)>>>0);break}if((h|0)<9){g=+(I|0)*+((c[H>>2]|0)>>>0)/+(c[2648+(8-h<<2)>>2]|0);break}b=K+27+($(h,-3)|0)|0;e=c[H>>2]|0;if((b|0)>30|(e>>>b|0)==0){g=+(I|0)*+(e>>>0)*+(c[2648+(h+-10<<2)>>2]|0);break}}e=(h|0)%9|0;if(!e){k=0;e=0}else{u=(h|0)>-1?e:e+9|0;n=c[2648+(8-u<<2)>>2]|0;if(l){o=1e9/(n|0)|0;k=0;e=0;p=0;do{C=H+(p<<2)|0;E=c[C>>2]|0;b=((E>>>0)/(n>>>0)|0)+e|0;c[C>>2]=b;e=$((E>>>0)%(n>>>0)|0,o)|0;b=(p|0)==(k|0)&(b|0)==0;p=p+1|0;h=b?h+-9|0:h;k=b?p&127:k}while((p|0)!=(l|0));if(e){c[H+(l<<2)>>2]=e;l=l+1|0}}else{k=0;l=0}e=0;h=9-u+h|0}i:while(1){v=(h|0)<18;w=(h|0)==18;x=H+(k<<2)|0;do{if(!v){if(!w)break i;if((c[x>>2]|0)>>>0>=9007199){h=18;break i}}n=0;o=l+127|0;while(1){u=o&127;p=H+(u<<2)|0;o=fk(c[p>>2]|0,0,29)|0;o=gk(o|0,D|0,n|0,0)|0;n=D;if(n>>>0>0|(n|0)==0&o>>>0>1e9){b=pk(o|0,n|0,1e9,0)|0;o=qk(o|0,n|0,1e9,0)|0;n=b}else n=0;c[p>>2]=o;b=(u|0)==(k|0);l=(u|0)!=(l+127&127|0)|b?l:(o|0)==0?u:l;if(b)break;else o=u+-1|0}e=e+-29|0}while((n|0)==0);k=k+127&127;if((k|0)==(l|0)){b=l+127&127;l=H+((l+126&127)<<2)|0;c[l>>2]=c[l>>2]|c[H+(b<<2)>>2];l=b}c[H+(k<<2)>>2]=n;h=h+9|0}j:while(1){y=l+1&127;x=H+((l+127&127)<<2)|0;while(1){v=(h|0)==18;w=(h|0)>27?9:1;u=v^1;while(1){o=k&127;p=(o|0)==(l|0);do{if(!p){n=c[H+(o<<2)>>2]|0;if(n>>>0<9007199){A=219;break}if(n>>>0>9007199)break;n=k+1&127;if((n|0)==(l|0)){A=219;break}n=c[H+(n<<2)>>2]|0;if(n>>>0<254740991){A=219;break}if(!(n>>>0>254740991|u)){h=o;break j}}else A=219}while(0);if((A|0)==219?(A=0,v):0){A=220;break j}e=e+w|0;if((k|0)==(l|0))k=l;else break}u=(1<>>w;o=k;n=0;p=k;while(1){E=H+(p<<2)|0;b=c[E>>2]|0;k=(b>>>w)+n|0;c[E>>2]=k;n=$(b&u,v)|0;k=(p|0)==(o|0)&(k|0)==0;p=p+1&127;h=k?h+-9|0:h;k=k?p:o;if((p|0)==(l|0))break;else o=k}if(!n)continue;if((y|0)!=(k|0))break;c[x>>2]=c[x>>2]|1}c[H+(l<<2)>>2]=n;l=y}if((A|0)==220)if(p){c[H+(y+-1<<2)>>2]=0;h=l;l=y}else h=o;g=+((c[H+(h<<2)>>2]|0)>>>0);h=k+1&127;if((h|0)==(l|0)){l=k+2&127;c[H+(l+-1<<2)>>2]=0}r=+(I|0);j=r*(g*1.0e9+ +((c[H+(h<<2)>>2]|0)>>>0));v=e+53|0;p=v-J|0;u=(p|0)<(K|0);h=u&1;o=u?(p|0)<0?0:p:K;if((o|0)<53){M=+yi(+Di(1.0,105-o|0),j);m=+Ai(j,+Di(1.0,53-o|0));q=M;g=m;m=M+(j-m)}else{q=0.0;g=0.0;m=j}n=k+2&127;do{if((n|0)==(l|0))j=g;else{n=c[H+(n<<2)>>2]|0;do{if(n>>>0>=5e8){if(n>>>0>5e8){g=r*.75+g;break}if((k+3&127|0)==(l|0)){g=r*.5+g;break}else{g=r*.75+g;break}}else{if((n|0)==0?(k+3&127|0)==(l|0):0)break;g=r*.25+g}}while(0);if((53-o|0)<=1){j=g;break}if(+Ai(g,1.0)!=0.0){j=g;break}j=g+1.0}}while(0);g=m+j-q;do{if((v&2147483647|0)>(-2-F|0)){if(+O(+g)>=9007199254740992.0){h=u&(o|0)==(p|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(G|0)?!(j!=0.0&(h|0)!=0):0)break;c[(qi()|0)>>2]=34}}while(0);g=+Ei(g,e)}}while(0);break a}default:{if(c[C>>2]|0)c[E>>2]=(c[E>>2]|0)+-1;c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}}}}}while(0);if((A|0)==23){h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[E>>2]=(c[E>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(I|0)*t}}while(0);i=L;return+g}function ti(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do{if(e>>>0>36){c[(qi()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((pi(i)|0)!=0);b:do{switch(i|0){case 43:case 45:{j=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=j;break b}else{i=vi(b)|0;p=j;break b}}default:p=0}}while(0);j=(e|0)==0;do{if((e&-17|0)==0&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;if((d[14643+(i+1)>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){ui(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[14643+(i+1)>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;ui(b,0);c[(qi()|0)>>2]=22;h=0;g=0;break a}}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;while(1){j=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;e=i+-48|0;if(!(e>>>0<10&j>>>0<429496729)){e=j;break}else i=j}j=0}else{e=0;j=0}f=i+-48|0;if(f>>>0<10){while(1){k=ok(e|0,j|0,10,0)|0;l=D;m=((f|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&k>>>0>~f>>>0){k=e;break}e=gk(k|0,l|0,f|0,m|0)|0;j=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;f=i+-48|0;if(!(f>>>0<10&(j>>>0<429496729|(j|0)==429496729&e>>>0<2576980378))){k=e;break}}if(f>>>0>9){i=k;e=p}else{e=10;n=72}}else{i=e;e=p}}else n=46;c:do{if((n|0)==46){if(!(e+-1&e)){n=a[14900+((e*23|0)>>>5&7)>>0]|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f|i<>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<134217728&f>>>0>>0))break;else i=k}f=0}else{f=0;k=0}l=hk(-1,-1,n|0)|0;m=D;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break}else i=f;while(1){k=fk(k|0,i|0,n|0)|0;f=D;k=j&255|k;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break c}else i=f}}j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f+($(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<119304647&f>>>0>>0))break;else i=k}f=0}else{k=0;f=0}if((j&255)>>>0>>0){n=pk(-1,-1,e|0,0)|0;o=D;m=f;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&k>>>0>n>>>0){j=m;n=72;break c}f=ok(k|0,m|0,e|0,0)|0;l=D;j=j&255;if(l>>>0>4294967295|(l|0)==-1&f>>>0>~j>>>0){j=m;n=72;break c}k=gk(j|0,0,f|0,l|0)|0;f=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0){j=f;n=72;break}else m=f}}else{j=f;n=72}}}while(0);if((n|0)==72)if((d[14643+(i+1)>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((d[14643+(i+1)>>0]|0)>>>0>>0);c[(qi()|0)>>2]=34;j=h;i=g;e=(g&1|0)==0&0==0?p:0}else{i=k;e=p}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(j>>>0>>0|(j|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(e|0)!=0)){c[(qi()|0)>>2]=34;g=gk(g|0,h|0,-1,-1)|0;h=D;break}if(j>>>0>h>>>0|(j|0)==(h|0)&i>>>0>g>>>0){c[(qi()|0)>>2]=34;break}}g=((e|0)<0)<<31>>31;g=dk(i^e|0,j^g|0,e|0,g|0)|0;h=D}}while(0);D=h;return g|0}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+4>>2]|0;e=c[a+8>>2]|0;f=e-d|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=d+b;else c[a+100>>2]=e;return}function vi(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;i=c[f>>2]|0;if((i|0)!=0?(c[b+108>>2]|0)>=(i|0):0)j=4;else{e=Vi(b)|0;if((e|0)>=0){h=c[f>>2]|0;f=b+8|0;if(h){g=c[f>>2]|0;i=c[b+4>>2]|0;f=g;h=h-(c[b+108>>2]|0)+-1|0;if((f-i|0)>(h|0))c[b+100>>2]=i+h;else j=9}else{g=c[f>>2]|0;f=g;j=9}if((j|0)==9)c[b+100>>2]=f;f=c[b+4>>2]|0;if(g){b=b+108|0;c[b>>2]=g+1-f+(c[b>>2]|0)}f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+100>>2]=0;e=-1}return e|0}function wi(a){a=a|0;if(a>>>0>4294963200){c[(qi()|0)>>2]=0-a;a=-1}return a|0}function xi(a,b){a=+a;b=+b;var d=0,e=0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;h[k>>3]=b;d=c[k+4>>2]&-2147483648|d&2147483647;c[k>>2]=e;c[k+4>>2]=d;return+ +h[k>>3]}function yi(a,b){a=+a;b=+b;return+ +xi(a,b)}function zi(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;h[k>>3]=a;d=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=hk(d|0,m|0,52)|0;e=e&2047;j=hk(n|0,o|0,52)|0;j=j&2047;p=m&-2147483648;i=fk(n|0,o|0,1)|0;l=D;a:do{if(!((i|0)==0&(l|0)==0)?(g=o&2147483647,!(g>>>0>2146435072|(g|0)==2146435072&n>>>0>0|(e|0)==2047)):0){f=fk(d|0,m|0,1)|0;g=D;if(!(g>>>0>l>>>0|(g|0)==(l|0)&f>>>0>i>>>0))return+((f|0)==(i|0)&(g|0)==(l|0)?a*0.0:a);if(!e){e=fk(d|0,m|0,12)|0;f=D;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){g=e;e=0;do{e=e+-1|0;g=fk(g|0,f|0,1)|0;f=D}while((f|0)>-1|(f|0)==-1&g>>>0>4294967295)}else e=0;d=fk(d|0,m|0,1-e|0)|0;f=D}else f=m&1048575|1048576;if(!j){g=fk(n|0,o|0,12)|0;i=D;if((i|0)>-1|(i|0)==-1&g>>>0>4294967295){j=0;do{j=j+-1|0;g=fk(g|0,i|0,1)|0;i=D}while((i|0)>-1|(i|0)==-1&g>>>0>4294967295)}else j=0;n=fk(n|0,o|0,1-j|0)|0;m=D}else m=o&1048575|1048576;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;b:do{if((e|0)>(j|0)){while(1){if(g)if((d|0)==(n|0)&(f|0)==(m|0))break;else{d=l;f=i}d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;if((e|0)<=(j|0))break b}b=a*0.0;break a}}while(0);if(g)if((d|0)==(n|0)&(f|0)==(m|0)){b=a*0.0;break}else{f=i;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=gk(d|0,f|0,0,-1048576)|0;d=D;e=fk(e|0,0,52)|0;d=d|D;e=o|e}else{e=hk(d|0,f|0,1-e|0)|0;d=D}c[k>>2]=e;c[k+4>>2]=d|p;b=+h[k>>3]}else q=3}while(0);if((q|0)==3){b=a*b;b=b/b}return+b}function Ai(a,b){a=+a;b=+b;return+ +zi(a,b)}function Bi(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=hk(d|0,e|0,52)|0;f=f&2047;switch(f|0){case 0:{if(a!=0.0){a=+Bi(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3]}}return+a}function Ci(a,b){a=+a;b=b|0;return+ +Bi(a,b)}function Di(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=fk(d+1023|0,0,52)|0;b=D;c[k>>2]=d;c[k+4>>2]=b;return+(a*+h[k>>3])}function Ei(a,b){a=+a;b=b|0;return+ +Di(a,b)}function Fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;g=l;j=(f|0)==0?2680:f;f=c[j>>2]|0;a:do{if(!d)if(!f)f=0;else k=15;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[h>>2]=g;f=f<<24>>24!=0&1;break}f=g+-194|0;if(f>>>0>50){k=15;break}f=c[2432+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;k=9}}else{g=e;k=9}b:do{if((k|0)==9){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){k=15;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){k=15;break a}}c[j>>2]=0;c[h>>2]=f;f=e-g|0;break a}}while(0);c[j>>2]=f;f=-2}}}while(0);if((k|0)==15){c[j>>2]=0;c[(qi()|0)>>2]=84;f=-1}i=l;return f|0}function Gi(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;do{if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(qi()|0)>>2]=84;b=-1;break}}else b=1}while(0);return b|0}function Ii(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Hi(a,b,0)|0;return a|0}function Ji(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+112|0;n=o+40|0;l=o+24|0;k=o+16|0;g=o;m=o+52|0;f=a[d>>0]|0;if(sj(14909,f<<24>>24,4)|0){e=Uj(1144)|0;if(!e)e=0;else{h=e;j=h+112|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));if(!(wj(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(wj(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;va(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[k>>2]=b;c[k+4>>2]=3;f=va(221,k|0)|0;if(!(f&1024)){c[l>>2]=b;c[l+4>>2]=4;c[l+8>>2]=f|1024;va(221,l|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+120;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[n>>2]=b,c[n+4>>2]=21505,c[n+8>>2]=m,(mb(54,n|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=14;c[e+36>>2]=4;c[e+40>>2]=5;c[e+12>>2]=2;if(!(c[598]|0))c[e+76>>2]=-1;yb(2416);f=c[603]|0;c[e+56>>2]=f;if(f)c[f+52>>2]=e;c[603]=e;nb(2416)}}else{c[(qi()|0)>>2]=22;e=0}i=o;return e|0}function Ki(b){b=b|0;var c=0,d=0,e=0;d=(wj(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(wj(b,120)|0)==0;d=e?d:d|128;b=(wj(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return(c<<24>>24==97?b|1024:b)|0}function Li(a){a=a|0;return 0}function Mi(a){a=a|0;return}function Ni(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=wi(zb(6,d|0)|0)|0;i=b;return a|0}function Oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;h=m+16|0;g=m;f=m+32|0;c[f>>2]=d;j=f+4|0;l=b+48|0;n=c[l>>2]|0;c[j>>2]=e-((n|0)!=0&1);k=b+44|0;c[f+8>>2]=c[k>>2];c[f+12>>2]=n;if(!(c[597]|0)){c[h>>2]=c[b+60>>2];c[h+4>>2]=f;c[h+8>>2]=2;f=wi(Nb(145,h|0)|0)|0}else{Fa(13,b|0);c[g>>2]=c[b+60>>2];c[g+4>>2]=f;c[g+8>>2]=2;f=wi(Nb(145,g|0)|0)|0;pb(0)}if((f|0)>=1){j=c[j>>2]|0;if(f>>>0>j>>>0){h=c[k>>2]|0;g=b+4|0;c[g>>2]=h;c[b+8>>2]=h+(f-j);if(!(c[l>>2]|0))f=e;else{c[g>>2]=h+1;a[d+(e+-1)>>0]=a[h>>0]|0;f=e}}}else{c[b>>2]=c[b>>2]|f&48^16;c[b+8>>2]=0;c[b+4>>2]=0}i=m;return f|0}function Pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((wi(Ib(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function Qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[597]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=wi(Ob(146,n|0)|0)|0}else{Fa(14,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=wi(Ob(146,m|0)|0)|0;pb(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=4;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(mb(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=Qi(b,d,e)|0;i=g;return f|0}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=sj(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;ik(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Ti(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Qb[c[b+36>>2]&15](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(d&20)if(!(d&4))d=-1;else{c[b>>2]=d|32;d=-1}else{d=c[e>>2]|0;c[b+8>>2]=d;c[b+4>>2]=d;d=0}return d|0}function Ui(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);d=0}else{c[b>>2]=d|32;d=-1}return d|0}function Vi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(Ti(a)|0)!=0:0)b=-1;else if((Qb[c[a+32>>2]&15](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function Wi(a){a=a|0;var b=0,d=0,e=0;e=(c[a>>2]&1|0)!=0;if(!e){yb(2416);d=c[a+52>>2]|0;b=a+56|0;if(d)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b)c[b+52>>2]=d;if((c[603]|0)==(a|0))c[603]=b;nb(2416)}b=Yi(a)|0;b=Yb[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d)Vj(d);if(!e)Vj(a);return b|0}function Xi(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Yi(a){a=a|0;var b=0,d=0;do{if(a){if((c[a+76>>2]|0)<=-1){b=Kj(a)|0;break}d=(Li(a)|0)==0;b=Kj(a)|0;if(!d)Mi(a)}else{if(!(c[660]|0))b=0;else b=Yi(c[660]|0)|0;yb(2416);a=c[603]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Li(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Kj(a)|0|b;if(d)Mi(a);a=c[a+56>>2]|0}while((a|0)!=0);nb(2416)}}while(0);return b|0}function Zi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c[f+76>>2]|0)>-1)o=Li(f)|0;else o=0;g=e+-1|0;if((e|0)<2){p=f+74|0;n=a[p>>0]|0;a[p>>0]=n+255|n;if(o)Mi(f);if(!g)a[b>>0]=0;else b=0}else{a:do{if(g){m=f+4|0;n=f+8|0;h=b;while(1){i=c[m>>2]|0;q=i;k=(c[n>>2]|0)-q|0;j=sj(i,10,k)|0;r=(j|0)==0;j=r?k:1-q+j|0;q=j>>>0>>0;j=q?j:g;ik(h|0,i|0,j|0)|0;i=c[m>>2]|0;k=i+j|0;c[m>>2]=k;e=h+j|0;l=g-j|0;if(!(r&q)){p=18;break a}if(k>>>0<(c[n>>2]|0)>>>0){j=j+1|0;c[m>>2]=i+j;i=d[k>>0]|0}else{g=Vi(f)|0;if((g|0)<0)break;j=j+1|0;i=g}g=l+-1|0;h=h+j|0;a[e>>0]=i;if(!((g|0)!=0&(i&255|0)!=10)){e=h;p=18;break a}}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)p=18;else b=0}else{e=b;p=18}}while(0);if((p|0)==18)if(!b)b=0;else a[e>>0]=0;if(o)Mi(f)}return b|0}function _i(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g+16|0;e=g;if(sj(14909,a[d>>0]|0,4)|0){h=Ki(d)|0|32768;c[e>>2]=b;c[e+4>>2]=h;c[e+8>>2]=438;e=wi(Ab(5,e|0)|0)|0;if((e|0)>=0){b=Ji(e,d)|0;if(!b){c[f>>2]=e;zb(6,f|0)|0;b=0}}else b=0}else{c[(qi()|0)>>2]=22;b=0}i=g;return b|0}function $i(a,b){a=a|0;b=b|0;return(ij(a,Bj(a)|0,1,b)|0)+-1|0}function aj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=$(e,d)|0;if((c[f+76>>2]|0)>-1)k=Li(f)|0;else k=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:j;ik(b|0,h|0,i|0)|0;c[g>>2]=h+i;b=b+i|0;g=j-i|0}else g=j;a:do{if(!g)l=13;else{i=f+32|0;h=g;while(1){if(Ti(f)|0){e=h;break}g=Qb[c[i>>2]&15](f,b,h)|0;if((g+1|0)>>>0<2){e=h;break}if((h|0)==(g|0)){l=13;break a}else{b=b+g|0;h=h-g|0}}if(k)Mi(f);e=((j-e|0)>>>0)/(d>>>0)|0}}while(0);if((l|0)==13)if(k)Mi(f);return e|0}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;f=a+20|0;e=a+28|0;if((c[f>>2]|0)>>>0>(c[e>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[e>>2]=0;c[f>>2]=0;if((Qb[c[a+40>>2]&15](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(Li(a)|0)==0;b=bj(a,b,d)|0;if(!e)Mi(a)}else b=bj(a,b,d)|0;return b|0}function dj(a,b,c){a=a|0;b=b|0;c=c|0;return cj(a,b,c)|0}function ej(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Qb[c[a+40>>2]&15](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function fj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=ej(a)|0}else a=ej(a)|0;return a|0}function gj(a){a=a|0;return fj(a)|0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Ui(e)|0)){g=c[f>>2]|0;h=4}else f=0;else h=4;a:do{if((h|0)==4){i=e+20|0;h=c[i>>2]|0;if((g-h|0)>>>0>>0){f=Qb[c[e+36>>2]&15](e,b,d)|0;break}b:do{if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break b}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Qb[c[e+36>>2]&15](e,b,f)|0)>>>0>>0)break a;d=d-f|0;b=b+f|0;g=c[i>>2]|0}else{g=h;f=0}}while(0);ik(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;f=f+d|0}}while(0);return f|0}function ij(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=$(d,b)|0;if((c[e+76>>2]|0)>-1){g=(Li(e)|0)==0;a=hj(a,f,e)|0;if(!g)Mi(e)}else a=hj(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function jj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Mi(a)}else{bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=pj(a,b,f)|0;i=e;return d|0}function lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=Uj(240)|0;do{if(f){c[e>>2]=c[d>>2];e=oj(f,240,b,e)|0;if(e>>>0<240){b=Xj(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}Vj(f);if((e|0)>=0?(h=e+1|0,g=Uj(h)|0,c[a>>2]=g,(g|0)!=0):0)e=oj(g,h,b,d)|0;else e=-1}else e=-1}while(0);i=j;return e|0}function mj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+80|0;r=s+96|0;q=s;p=s+136|0;f=r;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=c[e>>2];if((Lj(0,d,o,q,r)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)m=Li(b)|0;else m=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=p;j=b+28|0;c[j>>2]=p;k=b+20|0;c[k>>2]=p;c[e>>2]=80;l=b+16|0;c[l>>2]=p+80;f=Lj(b,d,o,q,r)|0;if(h){Qb[c[b+36>>2]&15](b,0,0)|0;f=(c[k>>2]|0)==0?-1:f;c[g>>2]=h;c[e>>2]=0;c[l>>2]=0;c[j>>2]=0;c[k>>2]=0}}else f=Lj(b,d,o,q,r)|0;e=c[b>>2]|0;c[b>>2]=e|n;if(m)Mi(b);e=(e&32|0)==0?f:-1}i=s;return e|0}function nj(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=i;i=i+304|0;H=P+16|0;J=P+8|0;I=P+33|0;K=P;y=P+32|0;if((c[e+76>>2]|0)>-1)O=Li(e)|0;else O=0;k=a[f>>0]|0;a:do{if(k<<24>>24){L=e+4|0;M=e+100|0;G=e+108|0;z=e+8|0;A=I+10|0;B=I+33|0;C=J+4|0;E=I+46|0;F=I+94|0;m=k;k=0;n=f;s=0;l=0;f=0;b:while(1){c:do{if(!(pi(m&255)|0)){m=(a[n>>0]|0)==37;d:do{if(m){q=n+1|0;o=a[q>>0]|0;e:do{switch(o<<24>>24){case 37:break d;case 42:{x=0;o=n+2|0;break}default:{o=(o&255)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[H>>2]=c[j>>2];while(1){x=(c[H>>2]|0)+(4-1)&~(4-1);m=c[x>>2]|0;c[H>>2]=x+4;if(o>>>0>1)o=o+-1|0;else break}x=m;o=n+3|0;break e}o=(c[j>>2]|0)+(4-1)&~(4-1);x=c[o>>2]|0;c[j>>2]=o+4;o=q}}}while(0);m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0<10){m=0;while(1){q=(m*10|0)+-48+n|0;o=o+1|0;m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0>=10)break;else m=q}}else q=0;if(m<<24>>24==109){o=o+1|0;r=a[o>>0]|0;m=(x|0)!=0&1;l=0;f=0}else{r=m;m=0}n=o+1|0;switch(r&255|0){case 104:{w=(a[n>>0]|0)==104;n=w?o+2|0:n;o=w?-2:-1;break}case 108:{w=(a[n>>0]|0)==108;n=w?o+2|0:n;o=w?3:1;break}case 106:{o=3;break}case 116:case 122:{o=1;break}case 76:{o=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=o;o=0;break}default:{N=152;break b}}r=d[n>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:o;switch(r|0){case 99:{w=s;v=(q|0)<1?1:q;break}case 91:{w=s;v=q;break}case 110:{if(!x){o=s;break c}switch(t|0){case-2:{a[x>>0]=s;o=s;break c}case-1:{b[x>>1]=s;o=s;break c}case 0:{c[x>>2]=s;o=s;break c}case 1:{c[x>>2]=s;o=s;break c}case 3:{o=x;c[o>>2]=s;c[o+4>>2]=((s|0)<0)<<31>>31;o=s;break c}default:{o=s;break c}}}default:{ui(e,0);do{o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0}while((pi(o)|0)!=0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}w=(c[G>>2]|0)+s+o-(c[z>>2]|0)|0;v=q}}ui(e,v);o=c[L>>2]|0;q=c[M>>2]|0;if(o>>>0>>0)c[L>>2]=o+1;else{if((vi(e)|0)<0){N=152;break b}q=c[M>>2]|0}if(q)c[L>>2]=(c[L>>2]|0)+-1;f:do{switch(r|0){case 91:case 99:case 115:{u=(r|0)==99;g:do{if((r&239|0)==99){ek(I|0,-1,257)|0;a[I>>0]=0;if((r|0)==115){a[B>>0]=0;a[A>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;a[A+3>>0]=0;a[A+4>>0]=0}}else{Q=n+1|0;s=(a[Q>>0]|0)==94;o=s&1;r=s?Q:n;n=s?n+2|0:Q;ek(I|0,s&1|0,257)|0;a[I>>0]=0;switch(a[n>>0]|0){case 45:{s=(o^1)&255;a[E>>0]=s;n=r+2|0;break}case 93:{s=(o^1)&255;a[F>>0]=s;n=r+2|0;break}default:s=(o^1)&255}while(1){o=a[n>>0]|0;h:do{switch(o<<24>>24){case 0:{N=152;break b}case 93:break g;case 45:{r=n+1|0;o=a[r>>0]|0;switch(o<<24>>24){case 93:case 0:{o=45;break h}default:{}}n=a[n+-1>>0]|0;if((n&255)<(o&255)){n=n&255;do{n=n+1|0;a[I+n>>0]=s;o=a[r>>0]|0}while((n|0)<(o&255|0));n=r}else n=r;break}default:{}}}while(0);a[I+((o&255)+1)>>0]=s;n=n+1|0}}}while(0);r=u?v+1|0:31;s=(t|0)==1;t=(m|0)!=0;i:do{if(s){if(t){f=Uj(r<<2)|0;if(!f){l=0;N=152;break b}}else f=x;c[J>>2]=0;c[C>>2]=0;l=0;j:while(1){q=(f|0)==0;do{k:while(1){o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0;if(!(a[I+(o+1)>>0]|0))break j;a[y>>0]=o;switch(Fi(K,y,1,J)|0){case-1:{l=0;N=152;break b}case-2:break;default:break k}}if(!q){c[f+(l<<2)>>2]=c[K>>2];l=l+1|0}}while(!(t&(l|0)==(r|0)));l=r<<1|1;o=Xj(f,l<<2)|0;if(!o){l=0;N=152;break b}Q=r;r=l;f=o;l=Q}if(!(Gi(J)|0)){l=0;N=152;break b}else{q=l;l=0}}else{if(t){l=Uj(r)|0;if(!l){l=0;f=0;N=152;break b}else o=0;while(1){do{f=c[L>>2]|0;if(f>>>0<(c[M>>2]|0)>>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=o;f=0;break i}a[l+o>>0]=f;o=o+1|0}while((o|0)!=(r|0));f=r<<1|1;o=Xj(l,f)|0;if(!o){f=0;N=152;break b}else{Q=r;r=f;l=o;o=Q}}}if(!x){l=q;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=0;l=0;f=0;break i}l=c[M>>2]|0}}else{l=0;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=l;l=x;f=0;break i}a[x+l>>0]=f;q=c[M>>2]|0;l=l+1|0}}}}while(0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}o=o-(c[z>>2]|0)+(c[G>>2]|0)|0;if(!o)break b;if(!((o|0)==(v|0)|u^1))break b;do{if(t)if(s){c[x>>2]=f;break}else{c[x>>2]=l;break}}while(0);if(!u){if(f)c[f+(q<<2)>>2]=0;if(!l){l=0;break f}a[l+q>>0]=0}break}case 120:case 88:case 112:{o=16;N=134;break}case 111:{o=8;N=134;break}case 117:case 100:{o=10;N=134;break}case 105:{o=0;N=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+si(e,t,0);if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if(x)switch(t|0){case 0:{g[x>>2]=p;break f}case 1:{h[x>>3]=p;break f}case 2:{h[x>>3]=p;break f}default:break f}break}default:{}}}while(0);l:do{if((N|0)==134){N=0;o=ti(e,o,0,-1,-1)|0;if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if((x|0)!=0&(r|0)==112){c[x>>2]=o;break}if(x)switch(t|0){case-2:{a[x>>0]=o;break l}case-1:{b[x>>1]=o;break l}case 0:{c[x>>2]=o;break l}case 1:{c[x>>2]=o;break l}case 3:{Q=x;c[Q>>2]=o;c[Q+4>>2]=D;break l}default:break l}}}while(0);k=((x|0)!=0&1)+k|0;o=(c[G>>2]|0)+w+(c[L>>2]|0)-(c[z>>2]|0)|0;break c}}while(0);n=n+(m&1)|0;ui(e,0);m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0;if((m|0)!=(d[n>>0]|0)){N=21;break b}o=s+1|0}else{while(1){m=n+1|0;if(!(pi(d[m>>0]|0)|0))break;else n=m}ui(e,0);do{m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0}while((pi(m)|0)!=0);m=c[L>>2]|0;if(c[M>>2]|0){m=m+-1|0;c[L>>2]=m}o=(c[G>>2]|0)+s+m-(c[z>>2]|0)|0}}while(0);n=n+1|0;m=a[n>>0]|0;if(!(m<<24>>24))break a;else s=o}if((N|0)==21){if(c[M>>2]|0)c[L>>2]=(c[L>>2]|0)+-1;if((k|0)!=0|(m|0)>-1)break;else{k=0;N=153}}else if((N|0)==152)if(!k){k=m;N=153}if((N|0)==153){m=k;k=-1}if(m){Vj(l);Vj(f)}}else k=0}while(0);if(O)Mi(e);i=P;return k|0}function oj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;g=n+112|0;m=n;h=m;j=2684;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){d=1;l=4}else{c[(qi()|0)>>2]=75;d=-1}else{g=b;l=4}if((l|0)==4){l=-2-g|0;l=d>>>0>l>>>0?l:d;c[m+48>>2]=l;b=m+20|0;c[b>>2]=g;c[m+44>>2]=g;d=g+l|0;g=m+16|0;c[g>>2]=d;c[m+28>>2]=d;d=mj(m,e,f)|0;if(l){e=c[b>>2]|0;a[e+(((e|0)==(c[g>>2]|0))<<31>>31)>>0]=0}}i=n;return d|0}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=15;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=nj(e,b,d)|0;i=g;return h|0}function qj(b){b=b|0;var c=0,d=0,e=0,f=0;while(1){c=b+1|0;if(!(pi(a[b>>0]|0)|0))break;else b=c}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:e=0}if((f|0)==5){b=c;d=a[c>>0]|0}c=(d<<24>>24)+-48|0;if(c>>>0<10){d=b;b=0;do{d=d+1|0;b=(b*10|0)-c|0;c=(a[d>>0]|0)+-48|0}while(c>>>0<10)}else b=0;return((e|0)!=0?b:0-b|0)|0}function rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=$(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do{if((f&3|0)==3){Nj(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)Nj(a,d,e,h,o);else Oj(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}Oj(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do{if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;Oj(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;Oj(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function sj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do{if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5}while(0);if((i|0)==5)if(f)i=6;else e=0;b:do{if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=$(h,16843009)|0;c:do{if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11}while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}}while(0);return((e|0)!=0?b:0)|0}function tj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function uj(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do{if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8}while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function vj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do{if(!((g^b)&3)){f=(e|0)!=0;a:do{if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5}while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do{if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3)}while(0);h=11}}else h=11}while(0);c:do{if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}}while(0);ek(b|0,0,e|0)|0;return b|0}function wj(b,c){b=b|0;c=c|0;b=xj(b,c)|0;return((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do{if(!f)b=b+(Bj(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=$(f,16843009)|0;e=c[b>>2]|0;b:do{if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009)break b;b=b+4|0;e=c[b>>2]|0}while(((e&-2139062144^-2139062144)&e+-16843009|0)==0)}while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}}while(0);return b|0}function yj(a,b){a=a|0;b=b|0;uj(a,b)|0;return a|0}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;a:do{if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31))break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}while(0);e=e-b|0}else e=(xj(b,e<<24>>24)|0)-b|0;i=g;return e|0}function Aj(a){a=a|0;var b=0,c=0;c=(Bj(a)|0)+1|0;b=Uj(c)|0;if(!b)b=0;else ik(b|0,a|0,c|0)|0;return b|0}function Bj(b){b=b|0;var d=0,e=0,f=0;f=b;a:do{if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do{b=b+1|0}while((a[b>>0]|0)!=0)}return b-f|0}function Cj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Bj(b)|0)|0;a:do{if(d)while(1){f=a[c>>0]|0;if(!(f<<24>>24))break a;d=d+-1|0;g=e+1|0;a[e>>0]=f;if(!d){e=g;break}else{c=c+1|0;e=g}}}while(0);a[e>>0]=0;return b|0}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;vj(a,b,c)|0;return a|0}function Ej(a,b){a=a|0;b=b|0;return tj(a,b,(Bj(a)|0)+1|0)|0}function Fj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;do{if(!(f<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;d=d-b|0;break}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);e=a[b>>0]|0;a:do{if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}}while(0);d=d-b|0}}while(0);i=h;return d|0}function Gj(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){b=c[699]|0;if(!b)b=0;else{f=b;e=3}}else{f=b;e=3}do{if((e|0)==3){e=Fj(f,d)|0;b=f+e|0;if(!(a[b>>0]|0)){c[699]=0;b=0;break}e=(zj(b,d)|0)+e|0;d=f+e|0;c[699]=d;if(!(a[d>>0]|0)){c[699]=0;break}else{c[699]=f+(e+1);a[d>>0]=0;break}}}while(0);return b|0}function Hj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;e=c[i>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0){c[i>>2]=(c[i>>2]|0)+-1;h=f}else h=f;break}default:h=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[i>>2]=(c[i>>2]|0)+-1;f=-2147483648;e=0}else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=ok(f|0,b|0,10,0)|0;f=D;e=gk(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=gk(e|0,D|0,b|0,f|0)|0;b=D;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));g=f}else g=f;if((e+-48|0)>>>0<10)do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;a=(h|0)!=0;e=dk(0,0,g|0,b|0)|0;f=a?D:b;e=a?e:g}D=f;return e|0}function Ij(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Jj(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Kj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Qb[c[a+40>>2]&15](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function Lj(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=i;i=i+624|0;ca=ha+24|0;ea=ha+16|0;da=ha+588|0;Y=ha+576|0;ba=ha;V=ha+536|0;ga=ha+8|0;fa=ha+528|0;M=(e|0)!=0;N=V+40|0;U=N;V=V+39|0;W=ga+4|0;X=Y+12|0;Y=Y+11|0;Z=da;_=X;aa=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ca+288|0;R=da+9|0;S=R;T=da+8|0;m=0;w=f;n=0;f=0;a:while(1){do{if((m|0)>-1)if((n|0)>(2147483647-m|0)){c[(qi()|0)>>2]=75;m=-1;break}else{m=n+m|0;break}}while(0);n=a[w>>0]|0;if(!(n<<24>>24)){L=245;break}else o=w;b:while(1){switch(n<<24>>24){case 37:{n=o;L=9;break b}case 0:{n=o;break b}default:{}}K=o+1|0;n=a[K>>0]|0;o=K}c:do{if((L|0)==9)while(1){L=0;if((a[n+1>>0]|0)!=37)break c;o=o+1|0;n=n+2|0;if((a[n>>0]|0)==37)L=9;else break}}while(0);y=o-w|0;if(M?(c[e>>2]&32|0)==0:0)hj(w,y,e)|0;if((o|0)!=(w|0)){w=n;n=y;continue}r=n+1|0;o=a[r>>0]|0;p=(o<<24>>24)+-48|0;if(p>>>0<10){K=(a[n+2>>0]|0)==36;r=K?n+3|0:r;o=a[r>>0]|0;u=K?p:-1;f=K?1:f}else u=-1;n=o<<24>>24;d:do{if((n&-32|0)==32){p=0;while(1){if(!(1<>24)+-32|p;r=r+1|0;o=a[r>>0]|0;n=o<<24>>24;if((n&-32|0)!=32){s=p;n=r;break}}}else{s=0;n=r}}while(0);do{if(o<<24>>24==42){p=n+1|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[l+(o<<2)>>2]=10;f=1;n=n+3|0;o=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(f){m=-1;break a}if(!M){x=s;n=p;f=0;K=0;break}f=(c[g>>2]|0)+(4-1)&~(4-1);o=c[f>>2]|0;c[g>>2]=f+4;f=0;n=p}if((o|0)<0){x=s|8192;K=0-o|0}else{x=s;K=o}}else{p=(o<<24>>24)+-48|0;if(p>>>0<10){o=0;do{o=(o*10|0)+p|0;n=n+1|0;p=(a[n>>0]|0)+-48|0}while(p>>>0<10);if((o|0)<0){m=-1;break a}else{x=s;K=o}}else{x=s;K=0}}}while(0);e:do{if((a[n>>0]|0)==46){p=n+1|0;o=a[p>>0]|0;if(o<<24>>24!=42){r=(o<<24>>24)+-48|0;if(r>>>0<10){n=p;o=0}else{n=p;r=0;break}while(1){o=(o*10|0)+r|0;n=n+1|0;r=(a[n>>0]|0)+-48|0;if(r>>>0>=10){r=o;break e}}}p=n+2|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+3>>0]|0)==36:0){c[l+(o<<2)>>2]=10;n=n+4|0;r=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(f){m=-1;break a}if(M){n=(c[g>>2]|0)+(4-1)&~(4-1);r=c[n>>2]|0;c[g>>2]=n+4;n=p}else{n=p;r=0}}else r=-1}while(0);t=0;while(1){o=(a[n>>0]|0)+-65|0;if(o>>>0>57){m=-1;break a}p=n+1|0;o=a[15953+(t*58|0)+o>>0]|0;s=o&255;if((s+-1|0)>>>0<8){n=p;t=s}else{J=p;break}}if(!(o<<24>>24)){m=-1;break}p=(u|0)>-1;do{if(o<<24>>24==19)if(p){m=-1;break a}else L=52;else{if(p){c[l+(u<<2)>>2]=s;H=j+(u<<3)|0;I=c[H+4>>2]|0;L=ba;c[L>>2]=c[H>>2];c[L+4>>2]=I;L=52;break}if(!M){m=0;break a}Rj(ba,s,g)}}while(0);if((L|0)==52?(L=0,!M):0){w=J;n=y;continue}u=a[n>>0]|0;u=(t|0)!=0&(u&15|0)==3?u&-33:u;p=x&-65537;I=(x&8192|0)==0?x:p;f:do{switch(u|0){case 110:switch(t|0){case 0:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 1:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 2:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}case 3:{b[c[ba>>2]>>1]=m;w=J;n=y;continue a}case 4:{a[c[ba>>2]>>0]=m;w=J;n=y;continue a}case 6:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 7:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}default:{w=J;n=y;continue a}}case 112:{t=I|8;r=r>>>0>8?r:8;u=120;L=64;break}case 88:case 120:{t=I;L=64;break}case 111:{p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;if((o|0)==0&(p|0)==0)n=N;else{n=N;do{n=n+-1|0;a[n>>0]=o&7|48;o=hk(o|0,p|0,3)|0;p=D}while(!((o|0)==0&(p|0)==0))}if(!(I&8)){o=I;t=0;s=16433;L=77}else{t=U-n+1|0;o=I;r=(r|0)<(t|0)?t:r;t=0;s=16433;L=77}break}case 105:case 100:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)<0){n=dk(0,0,n|0,o|0)|0;o=D;p=ba;c[p>>2]=n;c[p+4>>2]=o;p=1;s=16433;L=76;break f}if(!(I&2048)){s=I&1;p=s;s=(s|0)==0?16433:16435;L=76}else{p=1;s=16434;L=76}break}case 117:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;p=0;s=16433;L=76;break}case 99:{a[V>>0]=c[ba>>2];w=V;o=1;t=0;u=16433;n=N;break}case 109:{n=ri(c[(qi()|0)>>2]|0)|0;L=82;break}case 115:{n=c[ba>>2]|0;n=(n|0)!=0?n:16443;L=82;break}case 67:{c[ga>>2]=c[ba>>2];c[W>>2]=0;c[ba>>2]=ga;r=-1;L=86;break}case 83:{if(!r){Tj(e,32,K,0,I);n=0;L=98}else L=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{q=+h[ba>>3];c[ea>>2]=0;h[k>>3]=q;if((c[k+4>>2]|0)>=0)if(!(I&2048)){H=I&1;G=H;H=(H|0)==0?16451:16456}else{G=1;H=16453}else{q=-q;G=1;H=16450}h[k>>3]=q;F=c[k+4>>2]&2146435072;do{if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Ci(q,ea)*2.0;o=v!=0.0;if(o)c[ea>>2]=(c[ea>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?H:H+9|0;x=G|2;n=12-r|0;do{if(!(r>>>0>11|(n|0)==0)){q=8.0;do{n=n+-1|0;q=q*16.0}while((n|0)!=0);if((a[y>>0]|0)==45){q=-(q+(-v-q));break}else{q=v+q-q;break}}else q=v}while(0);o=c[ea>>2]|0;n=(o|0)<0?0-o|0:o;n=Sj(n,((n|0)<0)<<31>>31,X)|0;if((n|0)==(X|0)){a[Y>>0]=48;n=Y}a[n+-1>>0]=(o>>31&2)+43;t=n+-2|0;a[t>>0]=u+15;s=(r|0)<1;p=(I&8|0)==0;o=da;while(1){H=~~q;n=o+1|0;a[o>>0]=d[16417+H>>0]|w;q=(q-+(H|0))*16.0;do{if((n-Z|0)==1){if(p&(s&q==0.0))break;a[n>>0]=46;n=o+2|0}}while(0);if(!(q!=0.0))break;else o=n}r=(r|0)!=0&(O+n|0)<(r|0)?P+r-t|0:aa-t+n|0;p=r+x|0;Tj(e,32,K,p,I);if(!(c[e>>2]&32))hj(y,x,e)|0;Tj(e,48,K,p,I^65536);n=n-Z|0;if(!(c[e>>2]&32))hj(da,n,e)|0;o=_-t|0;Tj(e,48,r-(n+o)|0,0,0);if(!(c[e>>2]&32))hj(t,o,e)|0;Tj(e,32,K,p,I^8192);n=(p|0)<(K|0)?K:p;break}n=(r|0)<0?6:r;if(o){o=(c[ea>>2]|0)+-28|0;c[ea>>2]=o;q=v*268435456.0}else{q=v;o=c[ea>>2]|0}F=(o|0)<0?ca:Q;E=F;o=F;do{B=~~q>>>0;c[o>>2]=B;o=o+4|0;q=(q-+(B>>>0))*1.0e9}while(q!=0.0);p=o;o=c[ea>>2]|0;if((o|0)>0){s=F;while(1){t=(o|0)>29?29:o;r=p+-4|0;do{if(r>>>0>>0)r=s;else{o=0;do{B=fk(c[r>>2]|0,0,t|0)|0;B=gk(B|0,D|0,o|0,0)|0;o=D;A=qk(B|0,o|0,1e9,0)|0;c[r>>2]=A;o=pk(B|0,o|0,1e9,0)|0;r=r+-4|0}while(r>>>0>=s>>>0);if(!o){r=s;break}r=s+-4|0;c[r>>2]=o}}while(0);while(1){if(p>>>0<=r>>>0)break;o=p+-4|0;if(!(c[o>>2]|0))p=o;else break}o=(c[ea>>2]|0)-t|0;c[ea>>2]=o;if((o|0)>0)s=r;else break}}else r=F;if((o|0)<0){y=((n+25|0)/9|0)+1|0;z=(C|0)==102;w=r;while(1){x=0-o|0;x=(x|0)>9?9:x;do{if(w>>>0

>>0){o=(1<>>x;r=0;t=w;do{B=c[t>>2]|0;c[t>>2]=(B>>>x)+r;r=$(B&o,s)|0;t=t+4|0}while(t>>>0

>>0);o=(c[w>>2]|0)==0?w+4|0:w;if(!r){r=o;break}c[p>>2]=r;r=o;p=p+4|0}else r=(c[w>>2]|0)==0?w+4|0:w}while(0);o=z?F:r;p=(p-o>>2|0)>(y|0)?o+(y<<2)|0:p;o=(c[ea>>2]|0)+x|0;c[ea>>2]=o;if((o|0)>=0){w=r;break}else w=r}}else w=r;do{if(w>>>0

>>0){o=(E-w>>2)*9|0;s=c[w>>2]|0;if(s>>>0<10)break;else r=10;do{r=r*10|0;o=o+1|0}while(s>>>0>=r>>>0)}else o=0}while(0);A=(C|0)==103;B=(n|0)!=0;r=n-((C|0)!=102?o:0)+((B&A)<<31>>31)|0;if((r|0)<(((p-E>>2)*9|0)+-9|0)){t=r+9216|0;z=(t|0)/9|0;r=F+(z+-1023<<2)|0;t=((t|0)%9|0)+1|0;if((t|0)<9){s=10;do{s=s*10|0;t=t+1|0}while((t|0)!=9)}else s=10;x=c[r>>2]|0;y=(x>>>0)%(s>>>0)|0;if((y|0)==0?(F+(z+-1022<<2)|0)==(p|0):0)s=w;else L=163;do{if((L|0)==163){L=0;v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;t=(s|0)/2|0;do{if(y>>>0>>0)q=.5;else{if((y|0)==(t|0)?(F+(z+-1022<<2)|0)==(p|0):0){q=1.0;break}q=1.5}}while(0);do{if(G){if((a[H>>0]|0)!=45)break;v=-v;q=-q}}while(0);t=x-y|0;c[r>>2]=t;if(!(v+q!=v)){s=w;break}C=t+s|0;c[r>>2]=C;if(C>>>0>999999999){o=w;while(1){s=r+-4|0;c[r>>2]=0;if(s>>>0>>0){o=o+-4|0;c[o>>2]=0}C=(c[s>>2]|0)+1|0;c[s>>2]=C;if(C>>>0>999999999)r=s;else{w=o;r=s;break}}}o=(E-w>>2)*9|0;t=c[w>>2]|0;if(t>>>0<10){s=w;break}else s=10;do{s=s*10|0;o=o+1|0}while(t>>>0>=s>>>0);s=w}}while(0);C=r+4|0;w=s;p=p>>>0>C>>>0?C:p}y=0-o|0;while(1){if(p>>>0<=w>>>0){z=0;C=p;break}r=p+-4|0;if(!(c[r>>2]|0))p=r;else{z=1;C=p;break}}do{if(A){n=(B&1^1)+n|0;if((n|0)>(o|0)&(o|0)>-5){u=u+-1|0;n=n+-1-o|0}else{u=u+-2|0;n=n+-1|0}p=I&8;if(p)break;do{if(z){p=c[C+-4>>2]|0;if(!p){r=9;break}if(!((p>>>0)%10|0)){s=10;r=0}else{r=0;break}do{s=s*10|0;r=r+1|0}while(((p>>>0)%(s>>>0)|0|0)==0)}else r=9}while(0);p=((C-E>>2)*9|0)+-9|0;if((u|32|0)==102){p=p-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}else{p=p+o-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}}else p=I&8}while(0);x=n|p;s=(x|0)!=0&1;t=(u|32|0)==102;if(t){o=(o|0)>0?o:0;u=0}else{r=(o|0)<0?y:o;r=Sj(r,((r|0)<0)<<31>>31,X)|0;if((_-r|0)<2)do{r=r+-1|0;a[r>>0]=48}while((_-r|0)<2);a[r+-1>>0]=(o>>31&2)+43;E=r+-2|0;a[E>>0]=u;o=_-E|0;u=E}y=G+1+n+s+o|0;Tj(e,32,K,y,I);if(!(c[e>>2]&32))hj(H,G,e)|0;Tj(e,48,K,y,I^65536);do{if(t){r=w>>>0>F>>>0?F:w;o=r;do{p=Sj(c[o>>2]|0,0,R)|0;do{if((o|0)==(r|0)){if((p|0)!=(R|0))break;a[T>>0]=48;p=T}else{if(p>>>0<=da>>>0)break;do{p=p+-1|0;a[p>>0]=48}while(p>>>0>da>>>0)}}while(0);if(!(c[e>>2]&32))hj(p,S-p|0,e)|0;o=o+4|0}while(o>>>0<=F>>>0);do{if(x){if(c[e>>2]&32)break;hj(16485,1,e)|0}}while(0);if((n|0)>0&o>>>0>>0){p=o;while(1){o=Sj(c[p>>2]|0,0,R)|0;if(o>>>0>da>>>0)do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0);if(!(c[e>>2]&32))hj(o,(n|0)>9?9:n,e)|0;p=p+4|0;o=n+-9|0;if(!((n|0)>9&p>>>0>>0)){n=o;break}else n=o}}Tj(e,48,n+9|0,9,0)}else{t=z?C:w+4|0;if((n|0)>-1){s=(p|0)==0;r=w;do{o=Sj(c[r>>2]|0,0,R)|0;if((o|0)==(R|0)){a[T>>0]=48;o=T}do{if((r|0)==(w|0)){p=o+1|0;if(!(c[e>>2]&32))hj(o,1,e)|0;if(s&(n|0)<1){o=p;break}if(c[e>>2]&32){o=p;break}hj(16485,1,e)|0;o=p}else{if(o>>>0<=da>>>0)break;do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0)}}while(0);p=S-o|0;if(!(c[e>>2]&32))hj(o,(n|0)>(p|0)?p:n,e)|0;n=n-p|0;r=r+4|0}while(r>>>0>>0&(n|0)>-1)}Tj(e,48,n+18|0,18,0);if(c[e>>2]&32)break;hj(u,_-u|0,e)|0}}while(0);Tj(e,32,K,y,I^8192);n=(y|0)<(K|0)?K:y}else{t=(u&32|0)!=0;s=q!=q|0.0!=0.0;o=s?0:G;r=o+3|0;Tj(e,32,K,r,p);n=c[e>>2]|0;if(!(n&32)){hj(H,o,e)|0;n=c[e>>2]|0}if(!(n&32))hj(s?t?16477:16481:t?16469:16473,3,e)|0;Tj(e,32,K,r,I^8192);n=(r|0)<(K|0)?K:r}}while(0);w=J;continue a}default:{p=I;o=r;t=0;u=16433;n=N}}}while(0);g:do{if((L|0)==64){p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;s=u&32;if(!((o|0)==0&(p|0)==0)){n=N;do{n=n+-1|0;a[n>>0]=d[16417+(o&15)>>0]|s;o=hk(o|0,p|0,4)|0;p=D}while(!((o|0)==0&(p|0)==0));L=ba;if((t&8|0)==0|(c[L>>2]|0)==0&(c[L+4>>2]|0)==0){o=t;t=0;s=16433;L=77}else{o=t;t=2;s=16433+(u>>4)|0;L=77}}else{n=N;o=t;t=0;s=16433;L=77}}else if((L|0)==76){n=Sj(n,o,N)|0;o=I;t=p;L=77}else if((L|0)==82){L=0;I=sj(n,0,r)|0;H=(I|0)==0;w=n;o=H?r:I-n|0;t=0;u=16433;n=H?n+r|0:I}else if((L|0)==86){L=0;o=0;n=0;s=c[ba>>2]|0;while(1){p=c[s>>2]|0;if(!p)break;n=Ii(fa,p)|0;if((n|0)<0|n>>>0>(r-o|0)>>>0)break;o=n+o|0;if(r>>>0>o>>>0)s=s+4|0;else break}if((n|0)<0){m=-1;break a}Tj(e,32,K,o,I);if(!o){n=0;L=98}else{p=0;r=c[ba>>2]|0;while(1){n=c[r>>2]|0;if(!n){n=o;L=98;break g}n=Ii(fa,n)|0;p=n+p|0;if((p|0)>(o|0)){n=o;L=98;break g}if(!(c[e>>2]&32))hj(fa,n,e)|0;if(p>>>0>=o>>>0){n=o;L=98;break}else r=r+4|0}}}}while(0);if((L|0)==98){L=0;Tj(e,32,K,n,I^8192);w=J;n=(K|0)>(n|0)?K:n;continue}if((L|0)==77){L=0;p=(r|0)>-1?o&-65537:o;o=ba;o=(c[o>>2]|0)!=0|(c[o+4>>2]|0)!=0;if((r|0)!=0|o){o=(o&1^1)+(U-n)|0;w=n;o=(r|0)>(o|0)?r:o;u=s;n=N}else{w=N;o=0;u=s;n=N}}s=n-w|0;o=(o|0)<(s|0)?s:o;r=t+o|0;n=(K|0)<(r|0)?r:K;Tj(e,32,n,r,p);if(!(c[e>>2]&32))hj(u,t,e)|0;Tj(e,48,n,r,p^65536);Tj(e,48,o,s,0);if(!(c[e>>2]&32))hj(w,s,e)|0;Tj(e,32,n,r,p^8192);w=J}h:do{if((L|0)==245)if(!e)if(f){m=1;while(1){f=c[l+(m<<2)>>2]|0;if(!f)break;Rj(j+(m<<3)|0,f,g);m=m+1|0;if((m|0)>=10){m=1;break h}}if((m|0)<10)while(1){if(c[l+(m<<2)>>2]|0){m=-1;break h}m=m+1|0;if((m|0)>=10){m=1;break}}else m=1}else m=0}while(0);i=ha;return m|0}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;return Si(a,b,c)|0}function Nj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do{if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((cc[d&15](k,j)|0)>-1?(cc[d&15](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((cc[d&15](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1}while(0);Pj(b,o,e);i=p;return}function Oj(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do{if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(cc[d&15](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((cc[d&15](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((cc[d&15](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do{if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((cc[d&15](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){Pj(b,p,e);Nj(a,b,d,g,h)}i=r;return}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do{if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;ik(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;ik(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}}while(0);i=h;return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;ik(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do{if(b>>>0<=20)do{switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}}while(0)}while(0);return}function Sj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295)while(1){e=qk(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e|48;e=pk(b|0,c|0,10,0)|0;if(c>>>0>9|(c|0)==9&b>>>0>4294967295){b=e;c=D}else{b=e;break}}if(b)while(1){d=d+-1|0;a[d>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return d|0}function Tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+256|0;h=j;do{if((d|0)>(e|0)&(f&73728|0)==0){f=d-e|0;ek(h|0,b|0,(f>>>0>256?256:f)|0)|0;b=c[a>>2]|0;g=(b&32|0)==0;if(f>>>0>255){e=d-e|0;do{if(g){hj(h,256,a)|0;b=c[a>>2]|0}f=f+-256|0;g=(b&32|0)==0}while(f>>>0>255);if(g)f=e&255;else break}else if(!g)break;hj(h,f,a)|0}}while(0);i=j;return}function Uj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do{if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[756]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do{if((d|0)!=(h|0)){if(h>>>0<(c[760]|0)>>>0)Da();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Da()}else c[756]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[758]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do{if((d|0)!=(f|0)){if(f>>>0<(c[760]|0)>>>0)Da();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[758]|0;break}else Da()}else{c[756]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[761]|0;d=k>>>3;b=d<<1;e=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(b>>>0<(c[760]|0)>>>0)Da();else{l=a;m=b}}else{c[756]=a|d;l=3064+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[758]=h;c[761]=i;M=j;return M|0}a=c[757]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[3328+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[760]|0;if(e>>>0>>0)Da();i=e+o|0;if(e>>>0>=i>>>0)Da();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do{if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(e|0))Da();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Da()}}while(0);do{if(h){b=c[e+28>>2]|0;a=3328+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[760]|0;if(n>>>0>>0)Da();c[n+24>>2]=h;b=c[e+16>>2]|0;do{if(b)if(b>>>0>>0)Da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[758]|0;if(b){g=c[761]|0;d=b>>>3;b=d<<1;f=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{p=b;q=a}}else{c[756]=a|d;p=3064+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[758]=j;c[761]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[757]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[3328+(k<<2)>>2]|0;a:do{if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v;if(!j){v=86;break}else{h=d;i=i<<1}}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[3328+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[758]|0)-m|0)>>>0:0){f=c[760]|0;if(j>>>0>>0)Da();h=j+m|0;if(j>>>0>=h>>>0)Da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do{if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Da();b=e+12|0;if((c[b>>2]|0)!=(j|0))Da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Da()}}while(0);do{if(g){b=c[j+28>>2]|0;a=3328+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[760]|0;if(o>>>0>>0)Da();c[o+24>>2]=g;b=c[j+16>>2]|0;do{if(b)if(b>>>0>>0)Da();else{c[o+16>>2]=b;c[b+24>>2]=o;break}}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}}while(0);b:do{if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{s=b;t=a}}else{c[756]=d|b;s=3064+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=3328+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do{if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b}while(0);b=y+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Da()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1}while(0);d=c[758]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[761]|0;if(b>>>0>15){c[761]=a+q;c[758]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[758]=0;c[761]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[759]|0;if(a>>>0>q>>>0){L=a-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do{if(!(c[874]|0)){a=$a(30)|0;if(!(a+-1&a)){c[876]=a;c[875]=a;c[877]=-1;c[878]=-1;c[879]=0;c[867]=0;c[874]=(Db(0)|0)&-16^1431655768;break}else Da()}}while(0);j=q+48|0;i=c[876]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[866]|0;if((a|0)!=0?(t=c[864]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do{if(!(c[867]&4)){a=c[762]|0;e:do{if(a){f=3472;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[759]|0)&i;if(d>>>0<2147483647){f=Ua(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174}while(0);do{if((v|0)==174){g=Ua(0)|0;if((g|0)!=(-1|0)){a=g;d=c[875]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[864]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[866]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=Ua(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}}while(0);f:do{if((v|0)==184){g=0-d|0;do{if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[876]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((Ua(u|0)|0)==(-1|0)){Ua(g|0)|0;break f}else{d=u+d|0;break}}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}}while(0);c[867]=c[867]|4;v=191}else{a=0;v=191}}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ua(l|0)|0,x=Ua(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[864]|0)+p|0;c[864]=a;if(a>>>0>(c[865]|0)>>>0)c[865]=a;h=c[762]|0;g:do{if(h){g=3472;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[759]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[762]=h+L;c[759]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[763]=c[878];break}a=c[760]|0;if(w>>>0>>0){c[760]=w;a=w}d=w+p|0;g=3472;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=3472;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do{if((b|0)!=(h|0)){if((b|0)==(c[761]|0)){M=(c[758]|0)+l|0;c[758]=M;c[761]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do{if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do{if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Da();a=f+12|0;if((c[a>>2]|0)!=(b|0))Da();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Da()}}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=3328+(a<<2)|0;do{if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[760]|0)>>>0)Da();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[757]=c[757]&~(1<>>0>>0)Da();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do{if(a)if(a>>>0>>0)Da();else{c[J+16>>2]=a;c[a+24>>2]=J;break}}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[760]|0)>>>0)Da();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=3064+(g<<1<<2)|0;do{if((e|0)!=(d|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)==(b|0))break;Da()}}while(0);if((f|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Da()}}while(0);c[e+12>>2]=f;c[F>>2]=e}}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0>=(c[760]|0)>>>0){K=b;L=a;break}Da()}}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do{if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}}while(0);b=3328+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do{if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b}while(0);b=M+8|0;a=c[b>>2]|0;L=c[760]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Da()}else{M=(c[759]|0)+l|0;c[759]=M;c[762]=o;c[w+(m+4)>>2]=M|1}}while(0);M=w+(n|8)|0;return M|0}else d=3472;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[762]=w+d;c[759]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[763]=c[878];d=a+4|0;c[d>>2]=27;c[b>>2]=c[868];c[b+4>>2]=c[869];c[b+8>>2]=c[870];c[b+12>>2]=c[871];c[868]=w;c[869]=p;c[871]=0;c[870]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{G=b;H=a}}else{c[756]=d|b;G=3064+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=3328+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[757]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do{if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b}while(0);b=I+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Da()}}else{M=c[760]|0;if((M|0)==0|w>>>0>>0)c[760]=w;c[868]=w;c[869]=p;c[871]=0;c[765]=c[874];c[764]=-1;b=0;do{M=b<<1;L=3064+(M<<2)|0;c[3064+(M+3<<2)>>2]=L;c[3064+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[762]=w+M;c[759]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[763]=c[878]}}while(0);b=c[759]|0;if(b>>>0>q>>>0){L=b-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(qi()|0)>>2]=12;M=0;return M|0}function Vj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[760]|0;if(b>>>0>>0)Da();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Da();o=d&-8;q=a+(o+-8)|0;do{if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Da();if((l|0)==(c[761]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[758]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)!=(l|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Da()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do{if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Da();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(l|0))Da();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Da()}}while(0);if(h){b=c[a+(j+28)>>2]|0;d=3328+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do{if(b)if(b>>>0>>0)Da();else{c[k+16>>2]=b;c[b+24>>2]=k;break}}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}}while(0);if(u>>>0>=q>>>0)Da();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Da();if(!(d&2)){if((q|0)==(c[762]|0)){t=(c[759]|0)+g|0;c[759]=t;c[762]=u;c[u+4>>2]=t|1;if((u|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){t=(c[758]|0)+g|0;c[758]=t;c[761]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do{if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do{if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();e=d+12|0;if((c[e>>2]|0)!=(q|0))Da();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Da()}}while(0);if(h){b=c[a+(o+20)>>2]|0;d=3328+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do{if(b)if(b>>>0>>0)Da();else{c[p+16>>2]=b;c[b+24>>2]=p;break}}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[760]|0)>>>0)Da();if((c[e+12>>2]|0)!=(q|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0<(c[760]|0)>>>0)Da();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Da()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[761]|0)){c[758]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=3064+(d<<2)|0;e=c[756]|0;b=1<>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();else{r=b;s=d}}else{c[756]=e|b;r=3064+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=3328+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[757]|0;e=1<>2]|0;b:do{if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b}while(0);b=t+8|0;d=c[b>>2]|0;s=c[760]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Da()}else{c[757]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}}while(0);u=(c[764]|0)+-1|0;c[764]=u;if(!u)b=3480;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[764]=-1;return}function Wj(a,b){a=a|0;b=b|0;var d=0;if(a){d=$(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Uj(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;ek(b|0,0,d|0)|0;return b|0}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=Uj(b)|0;return a|0}if(b>>>0>4294967231){c[(qi()|0)>>2]=12;a=0;return a|0}d=Yj(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=Uj(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ik(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Vj(a);a=d;return a|0}function Yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[760]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Da();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Da();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[876]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;Zj(a+b|0,d);return a|0}if((l|0)==(c[762]|0)){d=(c[759]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[762]=a+b;c[759]=n;return a|0}if((l|0)==(c[761]|0)){e=(c[758]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[758]=d;c[761]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do{if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do{if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();d=f+12|0;if((c[d>>2]|0)!=(l|0))Da();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Da()}}while(0);if(h){d=c[a+(j+28)>>2]|0;e=3328+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do{if(d)if(d>>>0>>0)Da();else{c[k+16>>2]=d;c[d+24>>2]=k;break}}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(l|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Da()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;Zj(a+b|0,n);return a|0}return 0}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do{if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[760]|0;if(n>>>0>>0)Da();if((n|0)==(c[761]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[758]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(n|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Da()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do{if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(n|0))Da();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Da()}}while(0);if(i){d=c[a+(28-k)>>2]|0;e=3328+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[760]|0;if(l>>>0>>0)Da();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do{if(e)if(e>>>0>>0)Da();else{c[l+16>>2]=e;c[e+24>>2]=l;break}}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}}while(0);j=c[760]|0;if(q>>>0>>0)Da();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[762]|0)){s=(c[759]|0)+h|0;c[759]=s;c[762]=t;c[t+4>>2]=s|1;if((t|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){s=(c[758]|0)+h|0;c[758]=s;c[761]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do{if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do{if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(q|0))Da();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Da()}}while(0);if(i){d=c[a+(b+28)>>2]|0;e=3328+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do{if(d)if(d>>>0>>0)Da();else{c[p+16>>2]=d;c[d+24>>2]=p;break}}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(q|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Da()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[761]|0)){c[758]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=3064+(e<<2)|0;f=c[756]|0;d=1<>2]|0;if(e>>>0<(c[760]|0)>>>0)Da();else{r=d;s=e}}else{c[756]=f|d;r=3064+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=3328+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[757]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do{if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[760]|0)>>>0)Da();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}}while(0);e=d+8|0;f=c[e>>2]|0;s=c[760]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Da();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return}function Ee(b,e,f,j,k,l,m,n,o,p,q,r){b=b|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=+q;r=r|0;var s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;T=i;i=i+240|0;x=T+224|0;w=T+216|0;C=T+208|0;B=T+200|0;s=T+136|0;N=T+72|0;P=T;Q=T+232|0;R=T+228|0;h[s>>3]=100.0;h[s+8>>3]=100.0;h[s+16>>3]=110.0;h[s+24>>3]=100.0;h[s+32>>3]=110.0;h[s+40>>3]=110.0;h[s+48>>3]=100.0;h[s+56>>3]=110.0;h[N>>3]=+h[p>>3];h[N+8>>3]=+h[p+8>>3];h[N+16>>3]=+h[p+16>>3];h[N+24>>3]=+h[p+24>>3];h[N+32>>3]=+h[p+32>>3];h[N+40>>3]=+h[p+40>>3];h[N+48>>3]=+h[p+48>>3];h[N+56>>3]=+h[p+56>>3];He(s,N,P);A=+h[N>>3];V=+h[N+16>>3];y=A-V;J=+h[N+8>>3];U=+h[N+24>>3];u=J-U;s=~~(y*y+u*u);u=+h[N+32>>3];y=+h[N+48>>3];X=u-y;v=+h[N+40>>3];z=+h[N+56>>3];W=v-z;N=~~(X*X+W*W);u=V-u;v=U-v;t=~~(u*u+v*v);A=y-A;J=z-J;O=~~(A*A+J*J);s=~~(+(((N|0)>(s|0)?N:s)|0)*q*q);t=~~(+(((O|0)>(t|0)?O:t)|0)*q*q);if(!b){p=f;while(1)if((p|0)<(j|0)&($(p,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s,s)|0)<(t|0))s=s<<1;else break}else{p=f;while(1)if((p|0)<(j|0)&($(p<<2,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s<<2,s)|0)<(t|0))s=s<<1;else break}O=(p|0)>(j|0)?j:p;M=(s|0)>(j|0)?j:s;L=(O|0)/(f|0)|0;K=(M|0)/(f|0)|0;u=(1.0-q)*.5*10.0;J=q*10.0;N=$(f,f)|0;a:do{if(!e){I=N*3|0;p=Wj(I,4)|0;if(!p){Me(3,5472,B);rb(1)}do{switch(n|0){case 0:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 1:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t+2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 2:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 3:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 4:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|3)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=d[k+(($(t,l)|0)+s)>>0]|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 6:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|3)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|1)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Z=$(t,l)|0;Y=(s&65534)+Z<<1;V=+((d[k+Y>>0]|0)+-128|0);X=+((d[k+(Y+2)>>0]|0)+-128|0);W=+((d[k+(Z+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;Z=~~(V*516.4110107421875+W)>>8;Y=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;t=~~(W+X*408.5830078125)>>8;Z=(Z|0)>0?Z:0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=((Z|0)<255?Z:255)+(c[s>>2]|0);Y=(Y|0)>0?Y:0;s=p+(b+1<<2)|0;c[s>>2]=((Y|0)<255?Y:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=p+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=$(t,l)|0;Y=(s&65534)+t<<1;V=+((d[k+(Y|1)>>0]|0)+-128|0);X=+((d[k+(Y+3)>>0]|0)+-128|0);W=+((d[k+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(W+V*516.4110107421875)>>8;t=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;Y=~~(W+X*408.5830078125)>>8;s=(s|0)>0?s:0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=p+(Z+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);Y=(Y|0)>0?Y:0;Z=p+(Z+2<<2)|0;c[Z>>2]=((Y|0)<255?Y:255)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<3&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&28|2)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<2&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&24|4)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(c[b>>2]|0)+((d[k+(Y|1)>>0]|0)&240|8);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<4&240|8)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&240|8)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}default:{Me(3,4615,C);S=278;break a}}}while(0);t=$(K,L)|0;if(N){s=0;do{a[r+s>>0]=((c[p+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}while((s|0)<(I|0))}Vj(p);p=0}else{p=Wj(N,4)|0;if(!p){Me(3,5472,w);rb(1)}b:do{if(n>>>0<2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=(($(t,l)|0)+s|0)*3|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y+1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y+2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}}else{if((n&-2|0)==2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y|2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}if((n&-3|0)==4){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|2)>>0]|0)+(d[k+(Y|1)>>0]|0)+(d[k+(Y|3)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}switch(n|0){case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<3&248|4)+(I&248|4)+(I<<5&224|Y>>>3&28|2)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<2&248|4)+(I&248|4)+(I<<5&224|Y>>>3&24|4)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((I<<4&240|8)+(I&240|8)+((d[k+(Y|1)>>0]|0)&240|8)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}default:{Me(3,4615,x);S=278;break a}}}}while(0);s=$(K,L)|0;if(N){t=0;do{a[r+t>>0]=((c[p+(t<<2)>>2]|0)>>>0)/(s>>>0)|0;t=t+1|0}while((t|0)<(N|0))}Vj(p);p=0}}while(0);if((S|0)==278){Vj(p);p=-1}i=T;return p|0}function Fe(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;p=v+24|0;o=v+8|0;u=v;a:do{if((e+-3|0)>>>0>5){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-1}else{c[o>>2]=0;t=e+-1|0;c[o+4>>2]=$(t,e)|0;r=$(e,e)|0;c[o+8>>2]=r+-1;c[o+12>>2]=t;n=a[b+(c[o>>2]|0)>>0]|0;m=(n&255)>0?n:0;n=(n&255)<255?n:-1;s=a[b+(c[o+4>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+8>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+12>>2]|0)>>0]|0;m=((s&255)>(m&255)?s:m)&255;n=((s&255)<(n&255)?s:n)&255;if((m-n|0)<30){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-2;break}q=(m+n|0)>>>1;a[p>>0]=(d[b+(c[o>>2]|0)>>0]|0)>>>0>>0&1;a[p+1>>0]=(d[b+(c[o+4>>2]|0)>>0]|0)>>>0>>0&1;a[p+2>>0]=(d[b+(c[o+8>>2]|0)>>0]|0)>>>0>>0&1;a[p+3>>0]=(d[b+(c[o+12>>2]|0)>>0]|0)>>>0>>0&1;n=0;while(1){m=n+1|0;if(((a[p+n>>0]|0)==1?(a[p+((m|0)%4|0)>>0]|0)==1:0)?(a[p+((n+2|0)%4|0)>>0]|0)==0:0){m=n;n=10;break}if((m|0)<4)n=m;else{n=12;break}}if((n|0)==10)c[g>>2]=m;else if((n|0)==12?(m|0)==4:0){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-3;break}if(!r)s=255;else{m=255;n=0;do{s=b+n|0;p=d[s>>0]|0;o=p-q|0;o=(o|0)<0?0-o|0:o;m=(o|0)<(m|0)?o:m;a[s>>0]=p>>>0>>0&1;n=n+1|0}while((n|0)<(r|0));s=m}switch(c[g>>2]|0){case 0:{if((e|0)>0){r=(e|0)==0;n=0;m=0;g=0;do{p=(g|0)==(t|0);q=$(g,e)|0;if(!r){o=0;do{if((o|g|0)!=0?!(p&((o|0)==0|(o|0)==(t|0))):0){n=fk(n|0,m|0,1)|0;n=(a[b+(o+q)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)!=(e|0))}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 1:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=0;do{p=(g|0)==0;q=(g|0)==(t|0);if(r){o=t;while(1){w=(o|0)==(t|0);if(!(p&w)?!(q&(w|(o|0)==0)):0){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 2:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){q=(g|0)==(t|0)|(g|0)==0;p=$(g,e)|0;if(r){o=t;while(1){if(!(q&(o|0)==(t|0)|(o|g|0)==0)){n=fk(n|0,m|0,1)|0;n=(a[b+(o+p)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}case 3:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){p=(g|0)==(t|0);q=(g|0)==0;if(r){o=0;do{if(!(p&(o|0)==0|(o|g|0)==0|q&(o|0)==(t|0))){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)<(e|0))}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}default:{n=0;m=0}}h[j>>3]=(s|0)>30?1.0:+(s|0)/30.0;switch(k|0){case 259:{w=a[4551+n>>0]|0;k=w<<24>>24;l=u;c[l>>2]=k;c[l+4>>2]=((k|0)<0)<<31>>31;if(w<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 515:{m=a[4423+n>>0]|0;k=m<<24>>24;w=u;c[w>>2]=k;c[w+4>>2]=((k|0)<0)<<31>>31;if(l)c[l>>2]=d[4487+n>>0];if(m<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 772:case 1028:{m=Ie(k,n,m,0,u)|0;if((m|0)<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}if((l|0)!=0&(m|0)>0)c[l>>2]=m;break}default:{w=u;c[w>>2]=n;c[w+4>>2]=m}}c[f>>2]=c[u>>2];m=0}}while(0);i=v;return m|0}function Ge(a,b,e,f,g,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;l=C+8|0;n=C;a:do{if(!a){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;b=-1}else switch(b|0){case 0:{o=$(f,f)|0;z=o*3|0;A=Uj(o*12|0)|0;if(!A){Me(3,5472,n);rb(1)}if(!o)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!o)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/(+(f|0)*1.7320508)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+12|0;x=a+16|0;if((v|0)>0){u=c[a+8>>2]|0;s=(o|0)==0;n=-1;t=0;m=0.0;l=-1;b=-1;do{b:while(1){n=n+1|0;switch(c[u+(n<<2)>>2]|0){case 0:break;case 2:break b;default:{B=17;break b}}}if((B|0)==17){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(s)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}t=t+1|0}while((t|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}case 1:{z=$(f,f)|0;A=Uj(z<<2)|0;if(!A){Me(3,5472,l);rb(1)}if(!z)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!z)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/+(f|0)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+20|0;x=a+24|0;if((v|0)>0){s=c[a+8>>2]|0;t=(z|0)==0;n=-1;u=0;m=0.0;l=-1;b=-1;do{c:while(1){n=n+1|0;switch(c[s+(n<<2)>>2]|0){case 0:break;case 2:break c;default:{B=37;break c}}}if((B|0)==37){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(t)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}u=u+1|0}while((u|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}default:{b=-1;break a}}}while(0);i=C;return b|0}function He(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Re(8,8)|0;f=Re(8,1)|0;g=Re(8,1)|0;i=c[e>>2]|0;j=c[f>>2]|0;k=0;do{p=a+(k<<4)|0;l=k<<4;h[i+(l<<3)>>3]=+h[p>>3];o=a+(k<<4)+8|0;h[i+((l|1)<<3)>>3]=+h[o>>3];h[i+((l|2)<<3)>>3]=1.0;h[i+((l|3)<<3)>>3]=0.0;h[i+((l|4)<<3)>>3]=0.0;h[i+((l|5)<<3)>>3]=0.0;n=b+(k<<4)|0;h[i+((l|6)<<3)>>3]=-(+h[p>>3]*+h[n>>3]);h[i+((l|7)<<3)>>3]=-(+h[o>>3]*+h[n>>3]);h[i+((l|8)<<3)>>3]=0.0;h[i+((l|9)<<3)>>3]=0.0;h[i+((l|10)<<3)>>3]=0.0;h[i+((l|11)<<3)>>3]=+h[p>>3];h[i+((l|12)<<3)>>3]=+h[o>>3];h[i+((l|13)<<3)>>3]=1.0;m=b+(k<<4)+8|0;h[i+((l|14)<<3)>>3]=-(+h[p>>3]*+h[m>>3]);h[i+((l|15)<<3)>>3]=-(+h[o>>3]*+h[m>>3]);l=k<<1;h[j+(l<<3)>>3]=+h[n>>3];h[j+((l|1)<<3)>>3]=+h[m>>3];k=k+1|0}while((k|0)!=4);_e(e)|0;Xe(g,e,f)|0;p=c[g>>2]|0;h[d>>3]=+h[p>>3];h[d+8>>3]=+h[p+8>>3];h[d+16>>3]=+h[p+16>>3];p=c[g>>2]|0;h[d+24>>3]=+h[p+24>>3];h[d+32>>3]=+h[p+32>>3];h[d+40>>3]=+h[p+40>>3];p=c[g>>2]|0;h[d+48>>3]=+h[p+48>>3];h[d+56>>3]=+h[p+56>>3];h[d+64>>3]=1.0;We(e)|0;We(f)|0;We(g)|0;return}function Ie(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+2320|0;k=I+2304|0;y=I+864|0;u=I+784|0;H=I+704|0;w=I+624|0;v=I+548|0;G=I+40|0;E=I;switch(b|0){case 772:{g=9;j=1;l=3;break}case 1028:{g=5;j=2;l=3;break}case 2830:{A=900;s=1472;C=64;F=120;z=127;B=g;j=9;l=6;break}default:f=-1}if((l|0)==3){b=0;while(1){a[k+b>>0]=e&1;e=hk(e|0,f|0,1)|0;b=b+1|0;if((b|0)==13)break;else f=D}A=840;s=1408;C=g;F=13;z=15;B=k;l=6}do{if((l|0)==6){r=j<<1;k=1;f=0;while(1){g=v+(k<<2)|0;c[g>>2]=0;b=0;e=0;do{if(a[B+e>>0]|0){b=b^c[A+((($(e,k)|0)%(z|0)|0)<<2)>>2];c[g>>2]=b}e=e+1|0}while((e|0)<(F|0));f=(b|0)==0?f:1;c[g>>2]=c[s+(b<<2)>>2];if((k|0)<(r|0))k=k+1|0;else break}x=(f|0)!=0;if(x){c[u>>2]=0;f=c[v+4>>2]|0;c[u+4>>2]=f;c[y>>2]=0;c[y+72>>2]=1;if((r|0)>1){b=1;do{c[y+(b<<2)>>2]=-1;c[y+72+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(r|0))}c[H>>2]=0;c[H+4>>2]=0;c[w>>2]=-1;c[w+4>>2]=0;p=0;q=0;while(1){g=q;q=q+1|0;o=u+(q<<2)|0;if((f|0)==-1){k=g+2|0;c[H+(k<<2)>>2]=p;if((p|0)<0)n=p;else{f=0;while(1){o=y+(q*72|0)+(f<<2)|0;n=c[o>>2]|0;c[y+(k*72|0)+(f<<2)>>2]=n;c[o>>2]=c[s+(n<<2)>>2];if((f|0)<(p|0))f=f+1|0;else{n=p;break}}}}else{b=g;while(1){f=(b|0)>0;if(f&(c[u+(b<<2)>>2]|0)==-1)b=b+-1|0;else break}if(f){e=b;do{f=e;e=e+-1|0;if((c[u+(e<<2)>>2]|0)!=-1)b=(c[w+(b<<2)>>2]|0)<(c[w+(e<<2)>>2]|0)?e:b}while((f|0)>1)}e=H+(b<<2)|0;m=q-b|0;n=m+(c[e>>2]|0)|0;k=g+2|0;n=(p|0)>(n|0)?p:n;c[H+(k<<2)>>2]=n;f=0;do{c[y+(k*72|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(r|0));f=c[e>>2]|0;e=u+(b<<2)|0;if((f|0)>=0){l=0;while(1){g=c[y+(b*72|0)+(l<<2)>>2]|0;if((g|0)!=-1)c[y+(k*72|0)+(m+l<<2)>>2]=c[A+(((g+z+(c[o>>2]|0)-(c[e>>2]|0)|0)%(z|0)|0)<<2)>>2];if((l|0)<(f|0))l=l+1|0;else break}}if((p|0)>=0){f=0;while(1){o=y+(q*72|0)+(f<<2)|0;m=c[o>>2]|0;l=y+(k*72|0)+(f<<2)|0;c[l>>2]=c[l>>2]^m;c[o>>2]=c[s+(m<<2)>>2];if((f|0)<(p|0))f=f+1|0;else break}}}c[w+(k<<2)>>2]=q-n;if((q|0)>=(r|0))break;f=c[v+(k<<2)>>2]|0;if((f|0)==-1)f=0;else f=c[A+(f<<2)>>2]|0;g=u+(k<<2)|0;c[g>>2]=f;if((n|0)>=1){e=1;while(1){b=c[v+(k-e<<2)>>2]|0;if((b|0)!=-1?(t=c[y+(k*72|0)+(e<<2)>>2]|0,(t|0)!=0):0){f=f^c[A+((((c[s+(t<<2)>>2]|0)+b|0)%(z|0)|0)<<2)>>2];c[g>>2]=f}if((e|0)<(n|0))e=e+1|0;else break}}f=c[s+(f<<2)>>2]|0;c[g>>2]=f;if((n|0)>(j|0))break;else p=n}if((n|0)>(j|0)){f=-1;break}if((n|0)>=0){f=0;while(1){w=y+(k*72|0)+(f<<2)|0;c[w>>2]=c[s+(c[w>>2]<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}if((n|0)>=1){f=1;while(1){c[E+(f<<2)>>2]=c[y+(k*72|0)+(f<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}l=(n|0)<1;f=0;m=1;do{if(l)b=1;else{j=1;b=1;while(1){e=E+(j<<2)|0;g=c[e>>2]|0;if((g|0)!=-1){y=(g+j|0)%(z|0)|0;c[e>>2]=y;b=c[A+(y<<2)>>2]^b}if((j|0)<(n|0))j=j+1|0;else break}}if(!b){c[G+(f<<2)>>2]=z-m;f=f+1|0}m=m+1|0}while((z|0)>=(m|0));if((f|0)!=(n|0)){f=-1;break}if((n|0)>0){f=0;do{E=B+(c[G+(f<<2)>>2]|0)|0;a[E>>0]=d[E>>0]^1;f=f+1|0}while((f|0)<(n|0))}}else k=0;b=h;c[b>>2]=0;c[b+4>>2]=0;b=1;e=0;g=0;j=0;f=F-C|0;while(1){G=ok(d[B+f>>0]|0,0,b|0,e|0)|0;g=gk(G|0,D|0,g|0,j|0)|0;j=D;G=h;c[G>>2]=g;c[G+4>>2]=j;b=fk(b|0,e|0,1)|0;f=f+1|0;if((f|0)>=(F|0))break;else e=D}if(x)f=c[H+(k<<2)>>2]|0;else f=0}}while(0);i=I;return f|0}function Je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=i;i=i+32|0;z=A+24|0;g=A+16|0;d=A+8|0;do{if(a){if(!b){Me(3,4674,d);d=-1;break}y=a+8|0;f=c[a+4>>2]|0;a:do{if((f|0)>0){e=c[y>>2]|0;d=0;do{if(!(c[e+(d<<2)>>2]|0))break a;d=d+1|0}while((d|0)<(f|0))}else d=0}while(0);if((d|0)!=(f|0)){x=Aj(b)|0;if(!x){Me(3,4719,g);d=-1;break}r=a+28|0;s=d<<2;t=a+12|0;u=a+20|0;v=a+16|0;w=a+24|0;f=Gj(x,4742)|0;e=0;b:while(1){q=e+s|0;p=0;b=0;do{n=(p|0)==0;o=(p|0)==2;g=c[r>>2]|0;if((g|0)>0){m=0;do{if((g|0)>0){l=0;do{if(!f){e=17;break b}g=qj(f)|0;f=Gj(0,4742)|0;g=255-g|0;k=((($(c[r>>2]|0,m)|0)+l|0)*3|0)+p|0;c[(c[(c[t>>2]|0)+(q<<2)>>2]|0)+(k<<2)>>2]=g;k=($(c[r>>2]|0,m)|0)+l|0;j=c[(c[u>>2]|0)+(q<<2)>>2]|0;k=j+(k<<2)|0;if(!n){c[k>>2]=(c[k>>2]|0)+g;if(o){k=j+(($(c[r>>2]|0,m)|0)+l<<2)|0;c[k>>2]=(c[k>>2]|0)/3|0}}else c[k>>2]=g;b=g+b|0;l=l+1|0;g=c[r>>2]|0}while((l|0)<(g|0))}m=m+1|0}while((m|0)<(g|0))}p=p+1|0}while((p|0)<3);g=c[r>>2]|0;l=(b|0)/($(g*3|0,g)|0)|0;if(($(g*3|0,g)|0)>0){j=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=0;b=0;do{p=j+(k<<2)|0;g=(c[p>>2]|0)-l|0;c[p>>2]=g;b=($(g,g)|0)+b|0;k=k+1|0;g=c[r>>2]|0}while((k|0)<($(g*3|0,g)|0))}else b=0;B=+P(+ +(b|0));h[(c[v>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;if(!($(g,g)|0))b=0;else{g=c[(c[u>>2]|0)+(q<<2)>>2]|0;j=0;b=0;do{o=g+(j<<2)|0;p=(c[o>>2]|0)-l|0;c[o>>2]=p;b=($(p,p)|0)+b|0;j=j+1|0;p=c[r>>2]|0}while((j|0)<($(p,p)|0))}B=+P(+ +(b|0));h[(c[w>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;e=e+1|0;if((e|0)>=4){e=32;break}}if((e|0)==17){Me(3,4747,z);Vj(x);d=-1;break}else if((e|0)==32){Vj(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Me(3,4649,A);d=-1}}while(0);i=A;return d|0}function Ke(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;h=k+8|0;e=k;g=_i(d,4854)|0;do{if(g){dj(g,0,2)|0;e=gj(g)|0;dj(g,0,0)|0;f=Uj(e+1|0)|0;if(!f){Me(3,5472,h);Wi(g)|0;e=-1;break}h=aj(f,e,1,g)|0;Wi(g)|0;if(!h){c[j>>2]=d;Me(3,4820,j);Vj(f);e=-1;break}else{a[f+e>>0]=0;e=Je(b,f)|0;Vj(f);break}}else{c[e>>2]=d;Me(3,4774,e);e=-1}}while(0);i=k;return e|0}function Le(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;f=j;c[h>>2]=0;if(((d|0)!=0&(c[496]|0)<=(b|0)?(a[d>>0]|0)!=0:0)?(c[f>>2]=e,g=lj(h,d,f)|0,(g|0)>-1):0){f=c[497]|0;do{if(f){if(!(c[498]|0)){Wb[f&15](c[h>>2]|0);break}e=gb()|0;b=c[500]|0;if((e|0)==(c[499]|0)){if((b|0)>0){Wb[f&15](c[502]|0);c[500]=0;f=c[497]|0}Wb[f&15](c[h>>2]|0);break}f=c[501]|0;if((b|0)<(f|0)){d=(c[502]|0)+b|0;if((g|0)<(-3-b+f|0)){yj(d,c[h>>2]|0)|0;c[500]=(c[500]|0)+g;break}else{a[d>>0]=46;a[d+1>>0]=46;a[d+2>>0]=46;a[d+3>>0]=0;c[500]=c[501];break}}}else $i(c[h>>2]|0,c[659]|0)|0}while(0);Vj(c[h>>2]|0)}i=j;return}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0;i=0;do{d=a+(i<<5)|0;e=a+(i<<5)+8|0;f=a+(i<<5)+16|0;g=0;do{h[c+(i<<5)+(g<<3)>>3]=+h[d>>3]*+h[b+(g<<3)>>3]+ +h[e>>3]*+h[b+32+(g<<3)>>3]+ +h[f>>3]*+h[b+64+(g<<3)>>3];g=g+1|0}while((g|0)!=4);g=c+(i<<5)+24|0;h[g>>3]=+h[a+(i<<5)+24>>3]+ +h[g>>3];i=i+1|0}while((i|0)!=3);return 0}function Oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Re(4,4)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[d+(k<<3)>>3]=+h[a+(i<<5)>>3];h[e+(1+k<<3)>>3]=+h[a+(i<<5)+8>>3];h[f+(2+k<<3)>>3]=+h[a+(i<<5)+16>>3];h[g+(3+k<<3)>>3]=+h[a+(i<<5)+24>>3];i=i+1|0}while((i|0)!=3);d=c[j>>2]|0;e=d+96|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[d+120>>3]=1.0;_e(j)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[b+(i<<5)>>3]=+h[d+(k<<3)>>3];h[b+(i<<5)+8>>3]=+h[e+(1+k<<3)>>3];h[b+(i<<5)+16>>3]=+h[f+(2+k<<3)>>3];h[b+(i<<5)+24>>3]=+h[g+(3+k<<3)>>3];i=i+1|0}while((i|0)!=3);We(j)|0;return 0}function Pe(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Qe(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do{if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Ej(c,47)|0;if(!f){a[b>>0]=0;break}f=f+((e|0)!=0&1)-c|0;if((f+1|0)>>>0<=d>>>0){Dj(b,c,f)|0;a[b+f>>0]=0}else b=0}else b=0}while(0);return b|0}function Re(a,b){a=a|0;b=b|0;var d=0,e=0;d=Uj(12)|0;do{if(d){e=Uj($(a<<3,b)|0)|0;c[d>>2]=e;if(!e){Vj(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0}while(0);return d|0}function Se(a){a=a|0;var b=0;b=Re(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Ve(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Te(a,b){a=a|0;b=b|0;var d=0;d=Re(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Xe(d,a,b)|0)<0){We(d)|0;d=0}}else d=0;return d|0}function Ue(a){a=a|0;var b=0;b=Re(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($e(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;d=c[a+4>>2]|0;if((d|0)==(c[b+4>>2]|0)?(j=c[a+8>>2]|0,(j|0)==(c[b+8>>2]|0)):0)if((d|0)>0){e=(j|0)>0;l=0;do{f=$(j,l)|0;if(e){g=c[b>>2]|0;i=c[a>>2]|0;k=0;do{m=f+k|0;h[i+(m<<3)>>3]=+h[g+(m<<3)>>3];k=k+1|0}while((k|0)<(j|0))}l=l+1|0}while((l|0)<(d|0));d=0}else d=0;else d=-1;return d|0}function We(a){a=a|0;if(a){Vj(c[a>>2]|0);Vj(a)}return 0}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+8>>2]|0;if(((n|0)==(c[d+4>>2]|0)?(r=c[a+4>>2]|0,(r|0)==(c[b+4>>2]|0)):0)?(o=c[a+8>>2]|0,(o|0)==(c[d+8>>2]|0)):0){s=(o|0)>0?o:0;if((r|0)>0){p=(o|0)>0;q=(n|0)>0;k=c[a>>2]|0;m=0;while(1){a=$(n,m)|0;if(p){f=0;l=k;while(1){h[l>>3]=0.0;if(q){e=0.0;g=0;i=(c[b>>2]|0)+(a<<3)|0;j=(c[d>>2]|0)+(f<<3)|0;while(1){e=e+ +h[i>>3]*+h[j>>3];h[l>>3]=e;g=g+1|0;if((g|0)>=(n|0))break;else{i=i+8|0;j=j+(o<<3)|0}}}f=f+1|0;if((f|0)>=(o|0))break;else l=l+8|0}}m=m+1|0;if((m|0)>=(r|0)){a=0;break}else k=k+(s<<3)|0}}else a=0}else a=-1;return a|0}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0;q=c[a+4>>2]|0;s=c[a+8>>2]|0;f=(q|0)<(s|0)?q:s;a:do{if(((((!((q|0)<2|(s|0)<2)?(c[b+8>>2]|0)==(s|0):0)?(c[b+4>>2]|0)==(f|0):0)?(t=d+4|0,(c[t>>2]|0)==(f|0)):0)?(g=e+4|0,(c[g>>2]|0)==(s|0)):0)?(u=Se(a)|0,(u|0)!=0):0){r=+P(+ +(q|0));o=c[u+4>>2]|0;p=c[u+8>>2]|0;if(!((o|0)<1|(p|0)<1)?(c[g>>2]|0)==(p|0):0){if(p){f=c[e>>2]|0;a=0;do{h[f+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)!=(p|0))}n=c[u>>2]|0;if(o){f=(p|0)==0;a=0;j=n;while(1){if(!f){g=0;k=j;l=c[e>>2]|0;while(1){h[l>>3]=+h[k>>3]+ +h[l>>3];g=g+1|0;if((g|0)==(p|0))break;else{k=k+8|0;l=l+8|0}}}a=a+1|0;if((a|0)==(o|0))break;else j=j+(p<<3)|0}}i=+(o|0);if(p){f=c[e>>2]|0;a=0;do{m=f+(a<<3)|0;h[m>>3]=+h[m>>3]/i;a=a+1|0}while((a|0)!=(p|0))}l=(p|0)>0?p:0;if((o|0)>0){f=(p|0)>0;a=0;j=n;while(1){if(f){g=0;k=j;m=c[e>>2]|0;while(1){h[k>>3]=+h[k>>3]-+h[m>>3];g=g+1|0;if((g|0)>=(p|0))break;else{k=k+8|0;m=m+8|0}}}a=a+1|0;if((a|0)>=(o|0))break;else j=j+(l<<3)|0}}f=$(s,q)|0;if((f|0)>0){a=0;do{e=n+(a<<3)|0;h[e>>3]=+h[e>>3]/r;a=a+1|0}while((a|0)<(f|0))}f=Ze(u,b,d)|0;We(u)|0;j=c[t>>2]|0;if((j|0)>0){a=c[d>>2]|0;g=0;i=0.0;do{i=i+ +h[a+(g<<3)>>3];g=g+1|0}while((g|0)<(j|0))}else i=0.0;if((j|0)<=0)break;a=c[d>>2]|0;g=0;while(1){d=a+(g<<3)|0;h[d>>3]=+h[d>>3]/i;g=g+1|0;if((g|0)>=(j|0))break a}}We(u)|0;f=-1}else f=-1}while(0);return f|0}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;U=i;i=i+16|0;w=U;F=a+4|0;I=c[F>>2]|0;J=a+8|0;K=c[J>>2]|0;S=(K|0)<(I|0)?K:I;a:do{if(((!((I|0)<2|(K|0)<2)?(R=b+8|0,(c[R>>2]|0)==(K|0)):0)?(L=b+4|0,(c[L>>2]|0)==(S|0)):0)?(M=d+4|0,(c[M>>2]|0)==(S|0)):0){T=Re(S,S)|0;N=T+4|0;if((c[N>>2]|0)==(S|0)?(Q=T+8|0,(c[Q>>2]|0)==(S|0)):0){G=(I|0)<(K|0);s=c[F>>2]|0;t=c[J>>2]|0;if(G){if((S|0)!=(s|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){m=(S|0)==0;j=(t|0)>0;n=0;r=g;while(1){l=$(n,t)|0;if(!m){p=0;s=r;while(1){if((p|0)>=(n|0)){e=c[a>>2]|0;h[s>>3]=0.0;if(j){k=0.0;o=e+(l<<3)|0;e=e+(($(p,t)|0)<<3)|0;f=0;while(1){k=k+ +h[o>>3]*+h[e>>3];h[s>>3]=k;f=f+1|0;if((f|0)>=(t|0))break;else{o=o+8|0;e=e+8|0}}}}else h[s>>3]=+h[g+(($(p,S)|0)+n<<3)>>3];p=p+1|0;if((p|0)==(S|0))break;else s=s+8|0}}n=n+1|0;if((n|0)>=(S|0))break;else r=r+(S<<3)|0}}}else{if((S|0)!=(t|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){l=(S|0)==0;j=(s|0)>0;m=0;p=g;while(1){if(!l){o=0;r=p;while(1){if((o|0)>=(m|0)){e=c[a>>2]|0;h[r>>3]=0.0;if(j){k=0.0;n=e+(m<<3)|0;e=e+(o<<3)|0;f=0;while(1){k=k+ +h[n>>3]*+h[e>>3];h[r>>3]=k;f=f+1|0;if((f|0)>=(s|0))break;else{n=n+(S<<3)|0;e=e+(S<<3)|0}}}}else h[r>>3]=+h[g+(($(o,S)|0)+m<<3)>>3];o=o+1|0;if((o|0)==(S|0))break;else r=r+8|0}}m=m+1|0;if((m|0)>=(S|0))break;else p=p+(S<<3)|0}}}do{if(((S|0)>=2?(c[M>>2]|0)==(S|0):0)?(H=nf(S)|0,(H|0)!=0):0){E=S+-1|0;c[w+4>>2]=E;c[w>>2]=(c[H>>2]|0)+8;if((rf(T,d,w)|0)<0){of(H)|0;break}B=c[H>>2]|0;h[B>>3]=0.0;if((E|0)>0){C=(S|0)==0;D=E;do{f=D;while(1){if((f|0)<=0)break;v=+O(+ +h[B+(f<<3)>>3]);e=f+-1|0;A=c[d>>2]|0;x=+O(+ +h[A+(e<<3)>>3]);if(v>(x+ +O(+ +h[A+(f<<3)>>3]))*1.0e-06)f=e;else break}y=D;D=D+-1|0;b:do{if((f|0)!=(y|0)){o=B+(y<<3)|0;p=B+(f+1<<3)|0;r=(f|0)<(y|0);z=0;do{if((z|0)>99)break b;z=z+1|0;s=c[d>>2]|0;t=s+(D<<3)|0;w=s+(y<<3)|0;k=+h[w>>3];q=(+h[t>>3]-k)*.5;u=+h[o>>3];u=u*u;v=+P(+(u+q*q));if(r){A=f;q=+h[s+(f<<3)>>3]-k+u/(q+(q<0.0?-v:v));u=+h[p>>3];while(1){k=+O(+q);do{if(!(k>=+O(+u))){v=-q/u;x=1.0/+P(+(v*v+1.0));v=v*x}else{if(!(k>1.0e-16)){v=1.0;x=0.0;break}k=-u/q;x=1.0/+P(+(k*k+1.0));v=x;x=k*x}}while(0);j=s+(A<<3)|0;X=+h[j>>3];n=A;A=A+1|0;l=s+(A<<3)|0;W=+h[l>>3];k=X-W;m=B+(A<<3)|0;V=x*(x*k+v*2.0*+h[m>>3]);h[j>>3]=X-V;h[l>>3]=W+V;if((n|0)>(f|0)){l=B+(n<<3)|0;h[l>>3]=v*+h[l>>3]-u*x}X=+h[m>>3];h[m>>3]=X+x*(v*k-x*2.0*X);j=$(n,S)|0;l=$(A,S)|0;if(C)k=u;else{e=c[T>>2]|0;g=0;do{Z=e+(g+j<<3)|0;q=+h[Z>>3];Y=e+(g+l<<3)|0;k=+h[Y>>3];h[Z>>3]=v*q-x*k;h[Y>>3]=x*q+v*k;g=g+1|0}while((g|0)!=(S|0))}if((n|0)<(D|0)){q=+h[m>>3];Z=B+(n+2<<3)|0;k=+h[Z>>3];h[Z>>3]=v*k;k=-(x*k)}if((A|0)>=(y|0))break;else u=k}}W=+O(+ +h[o>>3]);X=+O(+ +h[t>>3])}while(W>(X+ +O(+ +h[w>>3]))*1.0e-06)}}while(0)}while((y|0)>1)}if(E){l=c[d>>2]|0;m=c[T>>2]|0;n=(S|0)==0;o=0;do{g=l+(o<<3)|0;q=+h[g>>3];j=o;o=o+1|0;if((o|0)<(S|0)){e=j;f=o;k=q;do{X=+h[l+(f<<3)>>3];Z=X>k;k=Z?X:k;e=Z?f:e;f=f+1|0}while((f|0)<(S|0))}else{e=j;k=q}h[l+(e<<3)>>3]=q;h[g>>3]=k;if(!n){g=0;f=m+(($(e,S)|0)<<3)|0;e=m+(($(j,S)|0)<<3)|0;while(1){X=+h[f>>3];h[f>>3]=+h[e>>3];h[e>>3]=X;g=g+1|0;if((g|0)==(S|0))break;else{f=f+8|0;e=e+8|0}}}}while((o|0)!=(E|0))}of(H)|0;c:do{if(!G){g=c[b>>2]|0;p=(I|0)>(K|0)?K:I;d:do{if((S|0)>0){m=c[d>>2]|0;n=(p|0)==0;e=0;o=c[T>>2]|0;do{if(+h[m+(e<<3)>>3]<1.0e-16)break d;if(!n){f=0;j=o;l=g;while(1){h[l>>3]=+h[j>>3];f=f+1|0;if((f|0)==(p|0))break;else{j=j+8|0;l=l+8|0}}}o=o+(p<<3)|0;g=g+(p<<3)|0;e=e+1|0}while((e|0)<(S|0))}else e=0}while(0);n=(p|0)>0?p:0;if((e|0)<(S|0)){l=c[d>>2]|0;m=(S|0)>0;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(S|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(S|0))break;else g=g+(n<<3)|0}}}else{w=c[F>>2]|0;t=c[J>>2]|0;do{if(!((w|0)<1|(t|0)<1)){if((c[N>>2]|0)!=(w|0))break;if((c[Q>>2]|0)!=(w|0))break;if((c[L>>2]|0)!=(w|0))break;if((c[R>>2]|0)!=(t|0))break;if((c[M>>2]|0)!=(w|0))break;f=c[b>>2]|0;e:do{if((w|0)>0){p=c[d>>2]|0;s=(t|0)==0;r=(w|0)==0;e=0;do{k=+h[p+(e<<3)>>3];if(k<1.0e-16)break e;q=1.0/+P(+ +O(+k));m=$(e,w)|0;if(!s){n=0;o=f;while(1){if(r)k=0.0;else{g=0;j=(c[T>>2]|0)+(m<<3)|0;l=(c[a>>2]|0)+(n<<3)|0;k=0.0;while(1){k=k+ +h[j>>3]*+h[l>>3];g=g+1|0;if((g|0)==(w|0))break;else{j=j+8|0;l=l+(t<<3)|0}}}h[o>>3]=q*k;n=n+1|0;if((n|0)==(t|0))break;else o=o+8|0}}f=f+(t<<3)|0;e=e+1|0}while((e|0)<(w|0))}else e=0}while(0);n=(t|0)>0?t:0;if((e|0)>=(w|0))break c;l=c[d>>2]|0;m=(t|0)>0;g=f;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(t|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(w|0))break c;else g=g+(n<<3)|0}}}while(0);We(T)|0;e=-1;break a}}while(0);We(T)|0;e=0;break a}}while(0);We(T)|0;e=-1;break}We(T)|0;e=-1}else e=-1}while(0);i=U;return e|0}function _e(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;v=i;i=i+2e3|0;u=v;b=c[a>>2]|0;t=c[a+4>>2]|0;a:do{if((t|0)<=500){switch(t|0){case 0:{b=0;break a}case 1:{h[b>>3]=1.0/+h[b>>3];break a}default:{}}if((t|0)>0){a=0;do{c[u+(a<<2)>>2]=a;a=a+1|0}while((a|0)<(t|0))}s=b+(t+-1<<3)|0;if((t|0)>0){m=(t|0)==0;p=(t|0)==1;o=(t|0)==0;n=(t|0)==1;q=s;a=0;r=0;while(1){l=b+(($(r,t)|0)<<3)|0;if((r|0)<(t|0)){e=r;f=0.0;d=l;while(1){w=+O(+ +h[d>>3]);k=f=(t|0))break;else d=d+(t<<3)|0}}else f=0.0;if(f<=1.0e-10){b=0;break a}g=u+(a<<2)|0;j=c[g>>2]|0;k=u+(r<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;if(!m){d=0;e=b+(($(a,t)|0)<<3)|0;g=l;while(1){w=+h[e>>3];h[e>>3]=+h[g>>3];h[g>>3]=w;d=d+1|0;if((d|0)==(t|0))break;else{e=e+8|0;g=g+8|0}}}f=+h[l>>3];if(!p){d=1;e=l;do{k=e;e=e+8|0;h[k>>3]=+h[e>>3]/f;d=d+1|0}while((d|0)!=(t|0))}h[q>>3]=1.0/f;if(!o){g=0;j=s;while(1){if((g|0)!=(r|0)){d=b+(($(g,t)|0)<<3)|0;f=+h[d>>3];if(!n){k=1;e=l;while(1){x=d;d=d+8|0;h[x>>3]=+h[d>>3]-f*+h[e>>3];k=k+1|0;if((k|0)==(t|0))break;else e=e+8|0}}h[j>>3]=-(f*+h[q>>3])}g=g+1|0;if((g|0)==(t|0))break;else j=j+(t<<3)|0}}r=r+1|0;if((r|0)>=(t|0))break;else q=q+(t<<3)|0}}if((t|0)>0){g=(t|0)>0;j=0;do{a=u+(j<<2)|0;b:do{if((j|0)<(t|0)){d=j;do{if((c[a>>2]|0)==(j|0))break b;d=d+1|0;a=u+(d<<2)|0}while((d|0)<(t|0))}else d=j}while(0);c[a>>2]=c[u+(j<<2)>>2];if(g){e=0;a=b+(d<<3)|0;d=b+(j<<3)|0;while(1){w=+h[a>>3];h[a>>3]=+h[d>>3];h[d>>3]=w;e=e+1|0;if((e|0)>=(t|0))break;else{a=a+(t<<3)|0;d=d+(t<<3)|0}}}j=j+1|0}while((j|0)<(t|0))}}else b=0}while(0);i=v;return((b|0)==0)<<31>>31|0}function $e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;if((i|0)==(c[b+8>>2]|0)?(k=c[a+8>>2]|0,(k|0)==(c[b+4>>2]|0)):0){l=(k|0)>0?k:0;if((i|0)>0){j=(k|0)>0;e=c[a>>2]|0;g=0;while(1){if(j){a=0;d=(c[b>>2]|0)+(g<<3)|0;f=e;while(1){h[f>>3]=+h[d>>3];a=a+1|0;if((a|0)>=(k|0))break;else{d=d+(i<<3)|0;f=f+8|0}}}g=g+1|0;if((g|0)>=(i|0)){a=0;break}else e=e+(l<<3)|0}}else a=0}else a=-1;return a|0}function af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0;f=+(b|0)/+(c[a>>2]|0);g=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;do{h[e+8+(b<<3)>>3]=f*+h[a+8+(b<<3)>>3];h[e+40+(b<<3)>>3]=g*+h[a+40+(b<<3)>>3];h[e+72+(b<<3)>>3]=+h[a+72+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=c[a+176>>2]|0;switch(b|0){case 4:{h[e+104>>3]=+h[a+104>>3];h[e+112>>3]=+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=f*+h[a+136>>3];h[e+144>>3]=g*+h[a+144>>3];h[e+152>>3]=f*+h[a+152>>3];h[e+160>>3]=g*+h[a+160>>3];h[e+168>>3]=+h[a+168>>3];i=8;break}case 3:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=+h[a+136>>3]/(f*g);h[e+144>>3]=+h[a+144>>3]/(g*(f*f*g));i=8;break}case 2:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);h[e+136>>3]=+h[a+136>>3]/(g*(f*f*g));i=8;break}case 1:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);i=8;break}default:b=-1}if((i|0)==8){c[e+176>>2]=b;b=0}return b|0}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0.0;f=i;i=i+96|0;e=f;if(!(+h[a+88>>3]>=0.0)){d=0;do{h[e+(d<<5)>>3]=-+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=-+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=-+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=-+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}else{d=0;do{h[e+(d<<5)>>3]=+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}h[b>>3]=0.0;h[b+8>>3]=0.0;h[b+16>>3]=0.0;h[b+24>>3]=0.0;h[b+32>>3]=0.0;h[b+40>>3]=0.0;h[b+48>>3]=0.0;h[b+56>>3]=0.0;h[b+64>>3]=0.0;h[b+72>>3]=0.0;h[b+80>>3]=0.0;h[b+88>>3]=0.0;g=+h[e+64>>3];o=+h[e+72>>3];p=+h[e+80>>3];x=+P(+(g*g+o*o+p*p));a=b+80|0;h[a>>3]=x;x=g/x;v=c+64|0;h[v>>3]=x;o=o/+h[a>>3];t=c+72|0;h[t>>3]=o;p=p/+h[a>>3];q=c+80|0;h[q>>3]=p;n=c+88|0;h[n>>3]=+h[e+88>>3]/+h[a>>3];g=+h[e+32>>3];k=+h[e+40>>3];s=+h[e+48>>3];p=x*g+o*k+p*s;m=b+48|0;h[m>>3]=p;g=g-p*+h[v>>3];k=k-p*+h[t>>3];p=s-p*+h[q>>3];s=+P(+(g*g+k*k+p*p));l=b+40|0;h[l>>3]=s;w=c+32|0;h[w>>3]=g/s;u=c+40|0;h[u>>3]=k/+h[l>>3];r=c+48|0;h[r>>3]=p/+h[l>>3];p=+h[e>>3];k=+h[e+8>>3];s=+h[e+16>>3];g=+h[v>>3]*p+ +h[t>>3]*k+ +h[q>>3]*s;d=b+16|0;h[d>>3]=g;o=+h[w>>3]*p+ +h[u>>3]*k+ +h[r>>3]*s;j=b+8|0;h[j>>3]=o;p=p-o*+h[w>>3]-g*+h[v>>3];k=k-o*+h[u>>3]-g*+h[t>>3];g=s-o*+h[r>>3]-g*+h[q>>3];o=+P(+(p*p+k*k+g*g));h[b>>3]=o;h[c>>3]=p/o;h[c+8>>3]=k/+h[b>>3];h[c+16>>3]=g/+h[b>>3];g=+h[n>>3];k=(+h[e+56>>3]-+h[m>>3]*g)/+h[l>>3];h[c+56>>3]=k;h[c+24>>3]=(+h[e+24>>3]-k*+h[j>>3]-+h[d>>3]*g)/+h[b>>3];d=0;do{w=b+(d<<5)|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+8|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+16|0;h[w>>3]=+h[w>>3]/+h[a>>3];d=d+1|0}while((d|0)!=3);i=f;return 0}function cf(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;switch(f|0){case 4:{q=+h[a>>3];r=+h[a+8>>3];s=+h[a+16>>3];t=+h[a+24>>3];y=+h[a+32>>3];v=+h[a+40>>3];w=+h[a+48>>3];x=+h[a+56>>3];u=+h[a+64>>3];p=(b-w)/y;j=(c-x)/v;c=p*p;i=j*j;k=s*2.0;l=t*6.0;m=t*2.0;n=s*6.0;a:do{if(i!=0.0|c!=0.0){f=1;g=p;b=j;while(1){C=i+c;B=q*C+1.0+C*(r*C);z=c*3.0;A=i*z;g=g-(t*(C+c*2.0)+(b*(k*g)+g*B)-p)/(l*g+(k*b+(q*(i+z)+1.0+r*(i*i+(c*(c*5.0)+A)))));z=m*g;b=b-(s*(i*2.0+C)+b*B+b*z-j)/(n*b+(q*(c+i*3.0)+1.0+r*(i*(i*5.0)+(c*c+A)))+z);if((f|0)==4)break a;c=g*g;i=b*b;if(!(i!=0.0|c!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}}while(0);h[d>>3]=w+y*g/u;h[e>>3]=x+v*b/u;f=0;break}case 3:{p=+h[a>>3];g=(b-p)/+h[a+24>>3];o=a+8|0;b=c-+h[o>>3];j=+h[a+32>>3]/1.0e8;k=+h[a+40>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;b:do{if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break b;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 2:{p=+h[a>>3];g=b-p;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;k=+h[a+32>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;c:do{if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break c;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 1:{m=+h[a>>3];g=b-m;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;c=g*g+b*b;k=+P(+c);l=j*3.0;d:do{if(k!=0.0){f=1;i=k;while(1){C=i-(i*(1.0-j*c)-k)/(1.0-l*c);g=g*C/i;b=b*C/i;if((f|0)==3)break d;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+m;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}default:f=-1}return f|0}function df(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;switch(f|0){case 4:{j=+h[a+16>>3];k=+h[a+24>>3];n=+h[a+32>>3];l=+h[a+40>>3];o=+h[a+48>>3];m=+h[a+56>>3];i=+h[a+64>>3];b=(b-o)*i/n;i=(c-m)*i/l;g=b*b+i*i;c=+h[a>>3]*g+1.0+g*(+h[a+8>>3]*g);h[d>>3]=o+n*(k*(b*(b*2.0)+g)+(j*2.0*b*i+b*c));h[e>>3]=m+l*(k*2.0*b*i+(j*(g+i*(i*2.0))+i*c));f=0;break}case 3:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+32>>3]/1.0e8)-o*(o*(+h[a+40>>3]/1.0e8/1.0e5));h[d>>3]=i+ +h[a+24>>3]*(g*o);b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 2:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+24>>3]/1.0e8)-o*(o*(+h[a+32>>3]/1.0e8/1.0e5));h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 1:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=1.0-(g*g+b*b)*(+h[a+24>>3]/1.0e8);h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}default:f=-1}return f|0}function ef(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=i;i=i+256|0;n=s+232|0;m=s+224|0;l=s+216|0;k=s+208|0;j=s+200|0;g=s+192|0;f=s+184|0;p=s+240|0;q=s;do{if((a|0)!=0&(b|0)>0&(d|0)!=0){r=_i(a,4854)|0;if(!r){r=qi()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Me(3,4857,f);a=ri(c[r>>2]|0)|0;c[g>>2]=5367;c[g+4>>2]=a;Me(3,5361,g);a=-1;break}dj(r,0,2)|0;a:do{if(!(Xi(r)|0)){g=gj(r)|0;jj(r);a=0;do{if((a|0)>=4){o=9;break}f=c[2012+(a<<3)+4>>2]|0;a=a+1|0}while(((g|0)%(f|0)|0|0)!=0);do{if((o|0)==9)if((a|0)==4){Me(3,4971,l);a=-1;break a}else{f=c[2012+(0<<3)+4>>2]|0;a=0;break}}while(0);if((aj(q,f,1,r)|0)!=1){a=qi()|0;c[m>>2]=c[a>>2];Me(3,5051,m);a=ri(c[a>>2]|0)|0;c[n>>2]=5367;c[n+4>>2]=a;Me(3,5361,n);a=-1;break}l=q+176|0;c[l>>2]=a;ff(q);m=(a|0)==1;n=q+120|0;if(m){t=+h[n>>3];k=q+128|0;h[n>>3]=+h[k>>3];h[k>>3]=t}else k=q+128|0;ik(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;if((b|0)>1){j=1;while(1){e=(c[p>>2]|0)+(4-1)&~(4-1);g=c[e>>2]|0;c[p>>2]=e+4;c[g+176>>2]=c[f>>2];if((aj(q,c[2012+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[l>>2]=a;ff(q);if(m){t=+h[n>>3];h[n>>3]=+h[k>>3];h[k>>3]=t}ik(g|0,q|0,184)|0;j=j+1|0;if((j|0)>=(b|0)){a=0;break}}}else a=0}else{a=qi()|0;c[j>>2]=c[a>>2];Me(3,4926,j);a=ri(c[a>>2]|0)|0;c[k>>2]=5367;c[k+4>>2]=a;Me(3,5361,k);a=-1}}while(0);Wi(r)|0}else a=-1}while(0);i=s;return a|0}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+192|0;f=g;hf(a,f);hf(a+4|0,f+4|0);b=0;do{gf(a+8+(b<<5)|0,f+8+(b<<5)|0);gf(a+8+(b<<5)+8|0,f+8+(b<<5)+8|0);gf(a+8+(b<<5)+16|0,f+8+(b<<5)+16|0);gf(a+8+(b<<5)+24|0,f+8+(b<<5)+24|0);b=b+1|0}while((b|0)!=3);d=a+176|0;e=0;do{gf(a+104+(e<<3)|0,f+104+(e<<3)|0);e=e+1|0;b=c[d>>2]|0}while((e|0)<(c[2012+(b+-1<<3)>>2]|0));c[f+176>>2]=b;ik(a|0,f|0,184)|0;i=g;return}function gf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+7>>0]|0;a[c+1>>0]=a[b+6>>0]|0;a[c+2>>0]=a[b+5>>0]|0;a[c+3>>0]=a[b+4>>0]|0;a[c+4>>0]=a[b+3>>0]|0;a[c+5>>0]=a[b+2>>0]|0;a[c+6>>0]=a[b+1>>0]|0;a[c+7>>0]=a[b>>0]|0;return}function hf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+3>>0]|0;a[c+1>>0]=a[b+2>>0]|0;a[c+2>>0]=a[b+1>>0]|0;a[c+3>>0]=a[b>>0]|0;return}function jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=i;i=i+64|0;t=x+24|0;u=x+16|0;v=x+8|0;w=x;q=Uj(208)|0;if(!q){Me(3,5472,x+32|0);rb(1)}ik(q|0,a|0,184)|0;s=b<<1;r=(c[a>>2]|0)+s|0;c[q+192>>2]=r;s=(c[a+4>>2]|0)+s|0;c[q+196>>2]=s;c[q+200>>2]=b;c[q+204>>2]=b;d=$(r<<3,s)|0;e=Uj(d)|0;c[q+184>>2]=e;if(!e){Me(3,5472,x+40|0);rb(1)}d=Uj(d)|0;c[q+188>>2]=d;if(!d){Me(3,5472,x+48|0);rb(1)}p=a+104|0;m=c[a+176>>2]|0;n=(r|0)>0?r<<1:0;if((s|0)>0){o=(r|0)>0;l=0;while(1){f=+(l-b|0);if(o){a=0;j=e;k=d;while(1){y=+(a-b|0);df(p,y,f,v,w,m)|0;g[j>>2]=+h[v>>3];g[j+4>>2]=+h[w>>3];cf(p,y,f,t,u,m)|0;g[k>>2]=+h[t>>3];g[k+4>>2]=+h[u>>3];a=a+1|0;if((a|0)>=(r|0))break;else{j=j+8|0;k=k+8|0}}}d=d+(n<<2)|0;l=l+1|0;if((l|0)>=(s|0))break;else e=e+(n<<2)|0}}i=x;return q|0}function kf(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){Vj(c[b+184>>2]|0);Vj(c[(c[a>>2]|0)+188>>2]|0);Vj(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function lf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function mf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a+4>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function nf(a){a=a|0;var b=0,d=0;b=Uj(8)|0;do{if(b){d=Uj(a<<3)|0;c[b>>2]=d;if(!d){Vj(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0}while(0);return b|0}function of(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function pf(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,g=0;b=+P(+ +qf(a,a));if(b!=0.0){f=c[a>>2]|0;e=+h[f>>3];b=e<0.0?-b:b;e=e+b;h[f>>3]=e;e=1.0/+P(+(e*b));a=c[a+4>>2]|0;if((a|0)>0){d=0;do{g=f+(d<<3)|0;h[g>>3]=e*+h[g>>3];d=d+1|0}while((d|0)<(a|0))}}return+-b}function qf(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))rb(0);if((f|0)>0){e=c[a>>2]|0;a=c[b>>2]|0;b=0;d=0.0;do{d=d+ +h[e+(b<<3)>>3]*+h[a+(b<<3)>>3];b=b+1|0}while((b|0)<(f|0))}else d=0.0;return+d}function rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+8|0;D=E;w=c[a+8>>2]|0;if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){z=w+-2|0;A=C+4|0;B=D+4|0;if((w|0)>2){s=w+-1|0;t=0;do{o=$(t,w)|0;p=c[a>>2]|0;h[(c[b>>2]|0)+(t<<3)>>3]=+h[p+(o+t<<3)>>3];k=w-t+-1|0;c[A>>2]=k;u=t;t=t+1|0;l=p+(o+t<<3)|0;c[C>>2]=l;r=+pf(C);h[(c[d>>2]|0)+(u<<3)>>3]=r;if(!(r==0.0)){if((t|0)<(w|0)){m=c[b>>2]|0;n=t;do{if((t|0)<(n|0)){e=c[a>>2]|0;f=t;j=0.0;do{r=+h[e+(($(f,w)|0)+n<<3)>>3];j=j+r*+h[p+(f+o<<3)>>3];f=f+1|0}while((f|0)<(n|0))}else j=0.0;e=$(n,w)|0;if((n|0)<(w|0)){f=c[a>>2]|0;g=n;do{j=j+ +h[f+(g+e<<3)>>3]*+h[p+(g+o<<3)>>3];g=g+1|0}while((g|0)<(w|0))}h[m+(n<<3)>>3]=j;n=n+1|0}while((n|0)<(w|0))}c[B>>2]=k;c[A>>2]=k;c[C>>2]=l;c[D>>2]=(c[b>>2]|0)+(t<<3);j=+qf(C,D)*.5;if((s|0)>(u|0)){e=c[b>>2]|0;k=s;do{q=+h[p+(k+o<<3)>>3];f=e+(k<<3)|0;r=+h[f>>3]-j*q;h[f>>3]=r;f=$(k,w)|0;if((k|0)<(w|0)){g=c[a>>2]|0;l=k;do{n=g+(l+f<<3)|0;h[n>>3]=+h[n>>3]-(q*+h[e+(l<<3)>>3]+r*+h[p+(l+o<<3)>>3]);l=l+1|0}while((l|0)<(w|0))}k=k+-1|0}while((k|0)>(u|0))}}}while((t|0)<(z|0))}if((w|0)<=1){if((w|0)>0){f=0;g=c[a>>2]|0;e=c[b>>2]|0;v=27}}else{v=$(z,w)|0;g=c[a>>2]|0;e=c[b>>2]|0;h[e+(z<<3)>>3]=+h[g+(v+z<<3)>>3];f=w+-1|0;h[(c[d>>2]|0)+(z<<3)>>3]=+h[g+(f+v<<3)>>3];v=27}if((v|0)==27)h[e+(f<<3)>>3]=+h[g+(($(f,w)|0)+f<<3)>>3];if((w|0)>0){m=(w|0)>0;p=w;do{d=p;p=p+-1|0;n=$(p,w)|0;o=c[a>>2]|0;if((d|0)<=(z|0)?(x=w-p+-1|0,y=o+(n+d<<3)|0,(d|0)<(w|0)):0){e=(d|0)<(w|0);k=d;do{c[B>>2]=x;c[A>>2]=x;c[C>>2]=y;f=$(k,w)|0;c[D>>2]=(c[a>>2]|0)+(f+d<<3);j=+qf(C,D);if(e){g=c[a>>2]|0;l=d;do{v=g+(l+f<<3)|0;h[v>>3]=+h[v>>3]-j*+h[o+(l+n<<3)>>3];l=l+1|0}while((l|0)<(w|0))}k=k+1|0}while((k|0)<(w|0))}if(m){e=0;do{h[o+(e+n<<3)>>3]=0.0;e=e+1|0}while((e|0)<(w|0))}h[o+(n+p<<3)>>3]=1.0}while((d|0)>1);e=0}else e=0}else e=-1;i=E;return e|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[c>>3];g=+h[c+8>>3];e=+h[c+16>>3];d=+h[b+88>>3]+(f*+h[b+64>>3]+g*+h[b+72>>3]+e*+h[b+80>>3]);if(d==0.0)c=-1;else{i=+h[b+56>>3]+(f*+h[b+32>>3]+g*+h[b+40>>3]+e*+h[b+48>>3]);h[a>>3]=(+h[b+24>>3]+(f*+h[b>>3]+g*+h[b+8>>3]+e*+h[b+16>>3]))/d;h[a+8>>3]=i/d;c=0}return c|0}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;B=i;i=i+1072|0;y=B+1056|0;x=B+768|0;w=B+192|0;A=B+48|0;z=B;K=+h[d>>3];F=+h[e>>3];s=K*F;J=+h[d+8>>3];t=e+8|0;E=+h[t>>3];v=J*E;j=+h[d+16>>3];G=+h[e+16>>3];l=j*G;m=+h[d+24>>3];I=+h[d+32>>3];H=+h[d+40>>3];n=E*H;k=+h[d+48>>3];o=G*k;p=+h[d+56>>3];D=+h[d+64>>3];C=+h[d+72>>3];q=E*C;f=+h[d+80>>3];r=G*f;g=+h[d+88>>3];h[x>>3]=s;h[x+8>>3]=K*E;h[x+16>>3]=K*G;h[x+24>>3]=F*J;h[x+32>>3]=v;h[x+40>>3]=G*J;h[x+48>>3]=F*j;h[x+56>>3]=E*j;h[x+64>>3]=l;h[x+72>>3]=K;h[x+80>>3]=J;h[x+88>>3]=j;j=F*I;h[x+96>>3]=j;h[x+104>>3]=E*I;h[x+112>>3]=G*I;h[x+120>>3]=F*H;h[x+128>>3]=n;h[x+136>>3]=G*H;h[x+144>>3]=F*k;h[x+152>>3]=E*k;h[x+160>>3]=o;h[x+168>>3]=I;h[x+176>>3]=H;h[x+184>>3]=k;k=D*F;h[x+192>>3]=k;h[x+200>>3]=E*D;h[x+208>>3]=G*D;h[x+216>>3]=F*C;E=+h[t>>3];h[x+224>>3]=C*E;h[x+232>>3]=G*C;h[x+240>>3]=F*f;h[x+248>>3]=E*f;h[x+256>>3]=r;h[x+264>>3]=D;h[x+272>>3]=C;h[x+280>>3]=f;e=w+64|0;d=w;t=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+72|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+104>>3]=1.0;e=w+160|0;d=w+112|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+240|0;d=w+168|0;t=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+296|0;d=w+248|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+304|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+336>>3]=1.0;e=w+456|0;d=w+344|0;t=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+512|0;d=w+464|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+568|0;d=w+520|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;u=0;do{t=0;do{d=A+(u*48|0)+(t<<3)|0;h[d>>3]=0.0;f=0.0;e=0;do{f=f+ +h[x+(u*96|0)+(e<<3)>>3]*+h[w+(e*48|0)+(t<<3)>>3];e=e+1|0}while((e|0)!=12);h[d>>3]=f;t=t+1|0}while((t|0)!=6);u=u+1|0}while((u|0)!=3);J=m+(s+v+l);K=p+(j+n+o);f=g+(k+q+r);g=+h[b>>3];j=+h[b+8>>3];k=+h[b+16>>3];l=+h[b+24>>3]+(J*g+K*j+f*k);m=+h[b+32>>3];n=+h[b+40>>3];o=+h[b+48>>3];p=+h[b+56>>3]+(J*m+K*n+f*o);q=+h[b+64>>3];r=+h[b+72>>3];s=+h[b+80>>3];f=+h[b+88>>3]+(J*q+K*r+f*s);if(f==0.0){Me(3,5089,y);e=-1}else{K=f*f;h[z>>3]=(g*f-l*q)/K;h[z+8>>3]=(f*j-l*r)/K;h[z+16>>3]=(f*k-l*s)/K;h[z+24>>3]=(f*m-p*q)/K;h[z+32>>3]=(f*n-p*r)/K;h[z+40>>3]=(f*o-p*s)/K;d=0;do{f=+h[z+(d*24|0)>>3];g=+h[z+(d*24|0)+8>>3];j=+h[z+(d*24|0)+16>>3];e=0;do{y=a+(d*48|0)+(e<<3)|0;h[y>>3]=0.0;K=f*+h[A+(e<<3)>>3]+0.0;h[y>>3]=K;K=K+g*+h[A+48+(e<<3)>>3];h[y>>3]=K;h[y>>3]=K+j*+h[A+96+(e<<3)>>3];e=e+1|0}while((e|0)!=6);d=d+1|0}while((d|0)!=2);e=0}i=B;return e|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j+24|0;g=j+12|0;f=j;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;b=Ue(f)|0;do{if(b){a=Te(b,f)|0;if(!a){We(b)|0;d=-1;break}d=Te(b,g)|0;if(!d){We(b)|0;We(a)|0;d=-1;break}if((_e(a)|0)<0){We(b)|0;We(a)|0;We(d)|0;d=-1;break}else{Xe(h,a,d)|0;We(b)|0;We(a)|0;We(d)|0;d=0;break}}else d=-1}while(0);i=j;return d|0}function vf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;n=i;i=i+192|0;l=n+96|0;m=n;g=+h[b>>3];k=+h[b+8>>3];d=+h[b+16>>3];c=g*g+k*k+d*d;if(c==0.0){j=0.0;e=0.0;d=1.0;c=0.0}else{c=+P(+c);j=c;e=d/c;d=g/c;c=k/c}u=+h[b+24>>3];r=+h[b+32>>3];k=+h[b+40>>3];o=+R(+j);g=1.0-o;j=+S(+j);h[l>>3]=o+d*d*g;t=c*d*g;s=e*j;h[l+8>>3]=t-s;q=d*e*g;p=c*j;h[l+16>>3]=q+p;h[l+24>>3]=u;h[l+32>>3]=t+s;h[l+40>>3]=o+c*c*g;c=c*e*g;j=d*j;h[l+48>>3]=c-j;h[l+56>>3]=r;h[l+64>>3]=q-p;h[l+72>>3]=c+j;h[l+80>>3]=o+e*e*g;h[l+88>>3]=k;f=0;do{c=+h[a+(f<<5)>>3];d=+h[a+(f<<5)+8>>3];e=+h[a+(f<<5)+16>>3];b=0;do{h[m+(f<<5)+(b<<3)>>3]=c*+h[l+(b<<3)>>3]+d*+h[l+32+(b<<3)>>3]+e*+h[l+64+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=m+(f<<5)+24|0;h[b>>3]=+h[a+(f<<5)+24>>3]+ +h[b>>3];f=f+1|0}while((f|0)!=3);b=0;do{h[a+(b<<5)>>3]=+h[m+(b<<5)>>3];h[a+(b<<5)+8>>3]=+h[m+(b<<5)+8>>3];h[a+(b<<5)+16>>3]=+h[m+(b<<5)+16>>3];h[a+(b<<5)+24>>3]=+h[m+(b<<5)+24>>3];b=b+1|0}while((b|0)!=3);i=n;return 0}function wf(a){a=a|0;var b=0,d=0;b=Uj(136)|0;if(!b)b=0;else{d=0;do{h[b+(d<<5)>>3]=+h[a+(d<<5)>>3];h[b+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[b+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[b+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3);c[b+96>>2]=10;h[b+104>>3]=.10000000149011612;h[b+112>>3]=.9900000095367432;h[b+120>>3]=4.0;h[b+128>>3]=.5}return b|0}function xf(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{Vj(b);c[a>>2]=0;b=0}return b|0}function yf(a,b){a=a|0;b=+b;if(!a)a=-1;else{h[a+128>>3]=b;a=0}return a|0}function zf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=i;i=i+176|0;l=y+168|0;k=y+160|0;u=y+48|0;w=y+64|0;v=y;s=b+8|0;g=c[s>>2]|0;do{if((g|0)>=3){x=Uj(g*96|0)|0;if(!x){Me(3,5109,k);g=-1;break}t=Uj(g<<4)|0;if(!t){Me(3,5109,l);Vj(x);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);q=b+4|0;l=u+8|0;d=a+104|0;n=a+120|0;o=a+112|0;p=a+96|0;m=0.0;r=0;a:while(1){Ne(a,e,w)|0;g=c[s>>2]|0;if((g|0)>0){j=0.0;k=0;do{if((sf(u,w,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=10;break a}g=c[b>>2]|0;A=+h[g+(k<<4)>>3]-+h[u>>3];z=+h[g+(k<<4)+8>>3]-+h[l>>3];j=j+(A*A+z*z);g=k<<1;h[t+(g<<3)>>3]=A;h[t+((g|1)<<3)>>3]=z;k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}else j=0.0;j=j/+(g|0);if(j<+h[d>>3]){k=24;break}if(((r|0)>0?j<+h[n>>3]:0)?j/m>+h[o>>3]:0){k=24;break}if((r|0)==(c[p>>2]|0)){k=24;break}if((g|0)>0){k=0;do{if((tf(x+(k*12<<3)|0,a,e,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=20;break a}k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}if((uf(v,t,x,g<<1)|0)<0){k=22;break}vf(e,v)|0;m=j;r=r+1|0}if((k|0)==10){Af(x,t);g=-1;break}else if((k|0)==20){Af(x,t);g=-1;break}else if((k|0)==22){Af(x,t);g=-1;break}else if((k|0)==24){h[f>>3]=j;Vj(x);Vj(t);g=0;break}}else g=-1}while(0);i=y;return g|0}function Af(a,b){a=a|0;b=b|0;Vj(a);Vj(b);return}function Bf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+192|0;n=G+184|0;m=G+176|0;l=G+168|0;g=G+160|0;B=G+48|0;D=G+64|0;C=G;A=b+8|0;k=c[A>>2]|0;do{if((k|0)>=4){o=~~(+(k|0)*+h[a+128>>3])+-1|0;o=(o|0)<3?3:o;F=Uj(k*96|0)|0;if(!F){Me(3,5109,g);g=-1;break}E=Uj(k<<4)|0;if(!E){Me(3,5109,l);Vj(F);g=-1;break}g=k<<3;z=Uj(g)|0;if(!z){Me(3,5109,m);Vj(F);Vj(E);g=-1;break}y=Uj(g)|0;if(!y){Me(3,5109,n);Vj(F);Vj(E);Vj(z);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);w=b+4|0;x=B+8|0;n=y+(o<<3)|0;d=a+104|0;o=a+120|0;t=a+112|0;u=a+96|0;r=0.0;v=0;a:while(1){Ne(a,e,D)|0;g=c[A>>2]|0;if((g|0)>0){k=0;do{if((sf(B,D,(c[w>>2]|0)+(k*24|0)|0)|0)<0){k=14;break a}g=c[b>>2]|0;q=+h[g+(k<<4)>>3]-+h[B>>3];s=+h[g+(k<<4)+8>>3]-+h[x>>3];g=k<<1;h[E+(g<<3)>>3]=q;h[E+((g|1)<<3)>>3]=s;s=q*q+s*s;h[y+(k<<3)>>3]=s;h[z+(k<<3)>>3]=s;k=k+1|0;g=c[A>>2]|0}while((k|0)<(g|0))}rj(y,g,8,1);s=+h[n>>3]*4.0;s=s<16.0?16.0:s;k=c[A>>2]|0;q=s/6.0;if((k|0)>0){j=0.0;g=0;do{p=+h[y+(g<<3)>>3];if(p>s)p=q;else{p=1.0-p/s;p=q*(1.0-p*(p*p))}j=j+p;g=g+1|0}while((g|0)<(k|0))}else j=0.0;j=j/+(k|0);if(j<+h[d>>3]){k=36;break}if(((v|0)>0?j<+h[o>>3]:0)?j/r>+h[t>>3]:0){k=36;break}if((v|0)==(c[u>>2]|0)){k=36;break}if((k|0)>0){m=0;g=0;do{p=+h[z+(m<<3)>>3];if(p<=s){k=g*6|0;l=F+(k<<3)|0;if((tf(l,a,e,(c[w>>2]|0)+(m*24|0)|0)|0)<0){k=28;break a}r=1.0-p/s;r=r*r;h[l>>3]=+h[l>>3]*r;l=F+((k|1)<<3)|0;h[l>>3]=+h[l>>3]*r;l=F+(k+2<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+3<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+4<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+5<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+6<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+7<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+8<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+9<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+10<<3)|0;h[l>>3]=r*+h[l>>3];k=F+(k+11<<3)|0;h[k>>3]=r*+h[k>>3];k=m<<1;h[E+(g<<3)>>3]=r*+h[E+(k<<3)>>3];h[E+(g+1<<3)>>3]=r*+h[E+((k|1)<<3)>>3];k=c[A>>2]|0;g=g+2|0}m=m+1|0}while((m|0)<(k|0))}else g=0;if((g|0)<6){k=32;break}if((uf(C,E,F,g)|0)<0){k=34;break}vf(e,C)|0;r=j;v=v+1|0}if((k|0)==14){Cf(F,E,z,y);g=-1;break}else if((k|0)==28){Cf(F,E,z,y);g=-1;break}else if((k|0)==32){Cf(F,E,z,y);g=-1;break}else if((k|0)==34){Cf(F,E,z,y);g=-1;break}else if((k|0)==36){h[f>>3]=j;Vj(F);Vj(E);Vj(z);Vj(y);g=0;break}}else g=-1}while(0);i=G;return g|0}function Cf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vj(a);Vj(b);Vj(c);Vj(d);return}function Df(a,b){a=a|0;b=b|0;var c=0.0;c=+h[a>>3]-+h[b>>3];return(c<0.0?-1:c>0.0&1)|0}function Ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0;U=i;i=i+64|0;D=U+48|0;z=U+40|0;y=U+32|0;x=U+24|0;u=U+16|0;o=U+8|0;l=U;a:do{if((e|0)>=4){g=0;while(1){if((g|0)>=(e|0))break;if(+h[d+(g*24|0)+16>>3]!=0.0){g=-1;break a}else g=g+1|0}if((((((((!(+h[a>>3]==0.0)?!(+h[a+32>>3]!=0.0):0)?(B=a+40|0,!(+h[B>>3]==0.0)):0)?!(+h[a+64>>3]!=0.0):0)?!(+h[a+72>>3]!=0.0):0)?!(+h[a+80>>3]!=1.0):0)?!(+h[a+24>>3]!=0.0):0)?!(+h[a+56>>3]!=0.0):0)?!(+h[a+88>>3]!=0.0):0){g=e<<1;C=Re(g,8)|0;if(!C){Me(3,5124,l);g=-1;break}w=Re(g,1)|0;if(!w){We(C)|0;Me(3,5150,o);g=-1;break}if(e){g=c[C>>2]|0;l=c[w>>2]|0;o=0;do{Z=d+(o*24|0)|0;V=o<<4;h[g+(V<<3)>>3]=+h[Z>>3];Y=d+(o*24|0)+8|0;h[g+((V|1)<<3)>>3]=+h[Y>>3];h[g+((V|2)<<3)>>3]=1.0;h[g+((V|3)<<3)>>3]=0.0;h[g+((V|4)<<3)>>3]=0.0;h[g+((V|5)<<3)>>3]=0.0;X=b+(o<<4)|0;h[g+((V|6)<<3)>>3]=-(+h[Z>>3]*+h[X>>3]);h[g+((V|7)<<3)>>3]=-(+h[Y>>3]*+h[X>>3]);h[g+((V|8)<<3)>>3]=0.0;h[g+((V|9)<<3)>>3]=0.0;h[g+((V|10)<<3)>>3]=0.0;h[g+((V|11)<<3)>>3]=+h[Z>>3];h[g+((V|12)<<3)>>3]=+h[Y>>3];h[g+((V|13)<<3)>>3]=1.0;W=b+(o<<4)+8|0;h[g+((V|14)<<3)>>3]=-(+h[Z>>3]*+h[W>>3]);h[g+((V|15)<<3)>>3]=-(+h[Y>>3]*+h[W>>3]);V=o<<1;h[l+(V<<3)>>3]=+h[X>>3];h[l+((V|1)<<3)>>3]=+h[W>>3];o=o+1|0}while((o|0)!=(e|0))}e=Ue(C)|0;if(!e){We(C)|0;We(w)|0;Me(3,5176,u);g=-1;break}o=Te(e,C)|0;if(!o){We(C)|0;We(w)|0;We(e)|0;Me(3,5202,x);g=-1;break}l=Te(e,w)|0;if(!l){We(C)|0;We(w)|0;We(e)|0;We(o)|0;Me(3,5228,y);g=-1;break}if((_e(o)|0)<0){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5254,z);g=-1;break}g=Te(o,l)|0;if(!g){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5280,D);g=-1;break}Z=c[g>>2]|0;p=+h[Z+48>>3];S=+h[a+48>>3];t=+h[B>>3];j=(+h[Z+24>>3]-p*S)/t;s=+h[a+16>>3];T=+h[a+8>>3];r=+h[a>>3];q=(+h[Z>>3]-p*s-j*T)/r;k=+h[Z+56>>3];m=(+h[Z+32>>3]-S*k)/t;n=(+h[Z+8>>3]-s*k-T*m)/r;t=(+h[Z+40>>3]-S)/t;r=(+h[Z+16>>3]-s-T*t)/r;We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;We(g)|0;T=+P(+(p*p+(j*j+q*q)));s=+P(+(k*k+(m*m+n*n)));q=q/T;j=j/T;p=p/T;n=n/s;m=m/s;k=k/s;s=(T+s)*.5;r=r/s;T=1.0/s;if(T<0.0){O=-j;k=-k;m=-m;p=-p;n=-n;Q=-q;S=-r;R=-T}else{O=j;Q=q;S=r;R=t/s}j=k*O-m*p;q=n*p-k*Q;r=m*Q-n*O;s=+P(+(r*r+(j*j+q*q)));do{if(!(s==0.0)){t=j/s;q=q/s;j=r/s;N=k*p+(m*O+n*Q);N=N<0.0?-N:N;N=(+P(+(N+1.0))+ +P(+(1.0-N)))*.5;if(Q*q-O*t!=0.0){g=0;E=Q;v=O;F=p;I=t;H=q}else{Z=Q*j-p*t!=0.0;g=Z?1:2;E=Z?Q:p;v=Z?p:O;F=Z?O:Q;I=Z?t:j;H=Z?j:q;j=Z?q:t}r=E*H;s=v*I;q=r-s;if(q==0.0){q=O;j=Q;break}G=(v*j-F*H)/q;A=N*H/q;r=s-r;q=(E*j-F*I)/r;r=N*I/r;s=G*G+q*q+1.0;t=G*A+q*r;v=t*t-s*(A*A+r*r+-1.0);if(v<0.0){q=O;j=Q;break}M=+P(+v);L=(M-t)/s;F=A+G*L;K=r+q*L;M=(-t-M)/s;G=A+G*M;r=r+q*M;Z=(g|0)==1;q=Z?H:j;s=Z?j:H;J=Z?L:K;L=Z?K:L;K=Z?M:r;H=Z?r:M;Z=(g|0)==2&(Z^1);r=Z?I:q;q=Z?q:I;M=Z?L:F;L=Z?F:L;j=Z?H:G;I=Z?G:H;if(n*s-m*q!=0.0){g=0;E=n;v=m;F=k;H=q;A=s}else{Z=n*r-k*q!=0.0;g=Z?1:2;E=Z?n:k;v=Z?k:m;F=Z?m:n;H=Z?q:r;A=Z?r:s;r=Z?s:q}s=E*A;t=v*H;q=s-t;if(q==0.0){q=O;j=Q;break}G=(v*r-F*A)/q;A=N*A/q;q=t-s;v=(E*r-F*H)/q;q=N*H/q;r=G*G+v*v+1.0;s=G*A+v*q;t=s*s-r*(A*A+q*q+-1.0);if(t<0.0){q=O;j=Q;break}t=+P(+t);k=(t-s)/r;Q=A+G*k;O=q+v*k;t=(-s-t)/r;p=A+G*t;n=q+v*t;Z=(g|0)==1;m=Z?k:O;k=Z?O:k;v=Z?t:n;t=Z?n:t;Z=(g|0)==2&(Z^1);n=Z?k:Q;k=Z?Q:k;A=Z?t:p;t=Z?p:t;p=L*k+(J*m+M*n);p=p<0.0?-p:p;q=L*t+(J*v+M*A);q=q<0.0?-q:q;r=I*k+(K*m+j*n);r=r<0.0?-r:r;s=I*t+(K*v+j*A);s=s<0.0?-s:s;if(p>3]=j;h[f+32>>3]=q;h[f+64>>3]=p;h[f+8>>3]=n;h[f+40>>3]=m;h[f+72>>3]=k;h[f+16>>3]=M/Q;h[f+48>>3]=N/Q;h[f+80>>3]=O/Q;h[f+24>>3]=S;h[f+56>>3]=R;h[f+88>>3]=T;g=0}else g=-1}else g=-1}while(0);i=U;return g|0}function Ff(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function Gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return+ +If(a,b,c,d,0)}function Hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return+ +If(a,b,c,d,1)}function If(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+208|0;z=F+200|0;y=F+192|0;A=F+96|0;B=F;C=e+4|0;p=c[C>>2]|0;q=e+112|0;r=e+120|0;if((p|0)>0){u=c[e>>2]|0;v=(d|0)>0;w=(d|0)>0;x=0;do{if(!(c[u+(x*320|0)+4>>2]|0)){if(v){k=c[u+(x*320|0)>>2]|0;l=0;j=-1;do{if((c[b+(l<<8)+8>>2]|0)==(k|0)?(n=+h[b+(l<<8)+40>>3],!(n<+h[q>>3])):0)if(!((j|0)!=-1?!(+h[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{l=u+(x*320|0)+312|0;m=u+(x*320|0)|0;if(w){o=0;j=-1;do{k=c[b+(o<<8)+12>>2]|0;if((k|0)==0?(t=b+(o<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=l;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)E=20}else if((k|0)==(c[m>>2]|0))E=20;if((E|0)==20){E=0;g=+h[b+(o<<8)+48>>3];if(!(g<+h[r>>3]))if(!((j|0)!=-1?!(+h[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}x=x+1|0}while((x|0)<(p|0))}if((p|0)>0){q=0;j=0;p=0;k=0;while(1){l=c[e>>2]|0;m=c[l+(q*320|0)+304>>2]|0;do{if((m|0)<0)l=p;else{o=b+(m<<8)|0;if(+ke(a,o,+h[l+(q*320|0)+8>>3],B)>4.0){c[(c[e>>2]|0)+(q*320|0)+304>>2]=-1;l=b+(m<<8)+236|0;if(c[l>>2]|0){l=p;break}c[l>>2]=7;l=p;break}l=c[o>>2]|0;if((k|0)==0|(p|0)<(l|0)){j=0;do{h[A+(j<<5)>>3]=+h[B+(j<<5)>>3];h[A+(j<<5)+8>>3]=+h[B+(j<<5)+8>>3];h[A+(j<<5)+16>>3]=+h[B+(j<<5)+16>>3];h[A+(j<<5)+24>>3]=+h[B+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3);j=q}else l=p;k=k+1|0}}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=l}}else{j=0;k=0}do{if((k|0)!=0?(k|0)>=(c[e+128>>2]|0):0){Ne(A,(c[e>>2]|0)+(j*320|0)+112|0,B)|0;p=k<<2;r=Uj(k<<6)|0;if(!r){Me(3,5472,y);rb(1)}q=Uj(k*96|0)|0;if(!q){Me(3,5472,z);rb(1)}l=c[C>>2]|0;if((l|0)>0){m=c[e>>2]|0;o=0;j=0;do{k=c[m+(o*320|0)+304>>2]|0;if((k|0)>=0){y=c[b+(k<<8)+16>>2]|0;d=(4-y|0)%4|0;z=j<<3;h[r+(z<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|1)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(5-y|0)%4|0;h[r+((z|2)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|3)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(6-y|0)%4|0;h[r+((z|4)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|5)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];y=(7-y|0)%4|0;h[r+((z|6)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)>>3];h[r+((z|7)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)+8>>3];z=j*12|0;h[q+(z<<3)>>3]=+h[m+(o*320|0)+208>>3];h[q+((z|1)<<3)>>3]=+h[m+(o*320|0)+216>>3];h[q+((z|2)<<3)>>3]=+h[m+(o*320|0)+224>>3];h[q+((z|3)<<3)>>3]=+h[m+(o*320|0)+232>>3];h[q+(z+4<<3)>>3]=+h[m+(o*320|0)+240>>3];h[q+(z+5<<3)>>3]=+h[m+(o*320|0)+248>>3];h[q+(z+6<<3)>>3]=+h[m+(o*320|0)+256>>3];h[q+(z+7<<3)>>3]=+h[m+(o*320|0)+264>>3];h[q+(z+8<<3)>>3]=+h[m+(o*320|0)+272>>3];h[q+(z+9<<3)>>3]=+h[m+(o*320|0)+280>>3];y=c[e>>2]|0;h[q+(z+10<<3)>>3]=+h[y+(o*320|0)+288>>3];h[q+(z+11<<3)>>3]=+h[y+(o*320|0)+296>>3];j=j+1|0}o=o+1|0}while((o|0)<(l|0))}m=e+104|0;k=(f|0)!=0;if(!(c[m>>2]|0)){j=e+8|0;g=+me(a,B,r,q,p,j);if(k&g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,j)}}}}Vj(q);Vj(r)}else{g=+me(a,B,r,q,p,A);l=e+8|0;n=+me(a,l,r,q,p,l);j=g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}}}}}else if(j){j=0;do{h[e+8+(j<<5)>>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n}while(0);Vj(q);Vj(r)}if(g<20.0){c[m>>2]=1;break}c[m>>2]=0;m=c[C>>2]|0;if((m|0)>0){j=c[e>>2]|0;l=0;do{k=c[j+(l*320|0)+304>>2]|0;if((k|0)>=0?(D=b+(k<<8)+236|0,(c[D>>2]|0)==0):0)c[D>>2]=8;l=l+1|0}while((l|0)<(m|0))}}else E=38}while(0);if((E|0)==38){c[e+104>>2]=0;g=-1.0}i=F;return+g}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0;U=i;i=i+2544|0;S=U+208|0;R=U+200|0;G=U+184|0;Q=U+176|0;F=U+168|0;E=U+152|0;P=U+144|0;D=U+136|0;M=U+128|0;L=U+120|0;K=U+112|0;C=U+104|0;j=U+96|0;g=U+88|0;f=U+80|0;e=U+72|0;d=U+64|0;H=U;I=U+2280|0;J=U+232|0;z=U+224|0;O=U+220|0;A=U+216|0;B=U+212|0;T=_i(a,5306)|0;a:do{if(!T){c[d>>2]=a;Me(3,5308,d);d=ri(c[(qi()|0)>>2]|0)|0;c[e>>2]=5367;c[e+4>>2]=d;Me(3,5361,e);d=0}else{Kf(I,T);c[f>>2]=O;if((kj(I,5368,f)|0)!=1){c[g>>2]=a;Me(3,5371,g);Wi(T)|0;d=0;break}d=c[O>>2]|0;N=Uj(d*320|0)|0;if(!N){Me(3,5472,j);rb(1)}r=H+8|0;s=H+16|0;t=H+24|0;u=H+32|0;v=H+40|0;w=H+48|0;x=H+56|0;y=(b|0)==0;b:do{if((d|0)>0){d=0;f=0;c:while(1){Kf(I,T);e=N+(d*320|0)|0;g=N+(d*320|0)+312|0;c[C>>2]=g;c[C+4>>2]=z;if((kj(I,5489,C)|0)==1){q=c[g>>2]|0;c[e>>2]=(q&-32768|0)==0&0==0?q&32767:0;c[N+(d*320|0)+4>>2]=1;f=f|2}else{if(y){e=10;break}if(!(Qe(J,a,2048,1)|0)){e=12;break}Cj(J,I,2047-(Bj(J)|0)|0)|0;q=Ke(b,J)|0;c[e>>2]=q;if((q|0)<0){e=14;break}c[N+(d*320|0)+4>>2]=0;f=f|1}Kf(I,T);e=N+(d*320|0)+8|0;c[D>>2]=e;if((kj(I,5785,D)|0)!=1){e=18;break}Kf(I,T);o=N+(d*320|0)+16|0;p=N+(d*320|0)+24|0;q=N+(d*320|0)+40|0;c[E>>2]=o;c[E+4>>2]=p;c[E+8>>2]=N+(d*320|0)+32;c[E+12>>2]=q;if((kj(I,5894,E)|0)!=4){c[F>>2]=A;c[F+4>>2]=B;if((kj(I,5910,F)|0)==2)g=0;else{e=21;break}}else g=1;do{Kf(I,T);c[G>>2]=N+(d*320|0)+16+(g<<5);c[G+4>>2]=N+(d*320|0)+16+(g<<5)+8;c[G+8>>2]=N+(d*320|0)+16+(g<<5)+16;c[G+12>>2]=N+(d*320|0)+16+(g<<5)+24;if((kj(I,5894,G)|0)!=4){e=23;break c}g=g+1|0}while((g|0)<3);Oe(o,N+(d*320|0)+112|0)|0;W=+h[e>>3];V=W*-.5;h[H>>3]=V;W=W*.5;h[r>>3]=W;h[s>>3]=W;h[t>>3]=W;h[u>>3]=W;h[v>>3]=V;h[w>>3]=V;h[x>>3]=V;e=N+(d*320|0)+48|0;g=N+(d*320|0)+56|0;j=N+(d*320|0)+72|0;k=N+(d*320|0)+80|0;l=N+(d*320|0)+88|0;m=N+(d*320|0)+104|0;n=0;do{V=+h[H+(n<<4)>>3];W=+h[H+(n<<4)+8>>3];h[N+(d*320|0)+208+(n*24|0)>>3]=+h[q>>3]+(+h[o>>3]*V+ +h[p>>3]*W);h[N+(d*320|0)+208+(n*24|0)+8>>3]=+h[j>>3]+(+h[e>>3]*V+ +h[g>>3]*W);h[N+(d*320|0)+208+(n*24|0)+16>>3]=+h[m>>3]+(+h[k>>3]*V+ +h[l>>3]*W);n=n+1|0}while((n|0)!=4);d=d+1|0;if((d|0)>=(c[O>>2]|0))break b}if((e|0)==10){c[K>>2]=a;c[K+4>>2]=I;Me(3,5496,K)}else if((e|0)==12){c[L>>2]=a;Me(3,5624,L)}else if((e|0)==14){c[M>>2]=a;c[M+4>>2]=J;Me(3,5708,M)}else if((e|0)==18){c[P>>2]=a;c[P+4>>2]=d+1;Me(3,5789,P)}else if((e|0)==21){c[Q>>2]=a;c[Q+4>>2]=d+1;Me(3,5916,Q)}else if((e|0)==23){c[R>>2]=a;c[R+4>>2]=d+1;Me(3,5916,R)}Wi(T)|0;Vj(N);d=0;break a}else f=0}while(0);Wi(T)|0;d=Uj(136)|0;if(!d){Me(3,5472,S);rb(1)}c[d>>2]=N;c[d+4>>2]=c[O>>2];c[d+104>>2]=0;do{if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2}while(0);h[d+112>>3]=.5;h[d+120>>3]=.5}}while(0);i=U;return d|0}function Kf(b,c){b=b|0;c=c|0;var d=0,e=0;a:do{if(Zi(b,256,c)|0)while(1){d=Bj(b)|0;b:do{if(d)while(1){d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0;if(!d)break b}}while(0);switch(a[b>>0]|0){case 0:case 35:break;default:break a}if(!(Zi(b,256,c)|0))break a}}while(0);return}function Lf(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+400|0;n=r+296|0;q=r+200|0;o=r+128|0;p=r;k=c[a>>2]|0;f=c[a+4>>2]|0;if((bf(a+8|0,n,q)|0)<0)Me(3,6025,r+392|0);else{j=+(f+-1|0);f=n+32|0;h[f>>3]=j*+h[n+64>>3]-+h[f>>3];f=n+40|0;h[f>>3]=j*+h[n+72>>3]-+h[f>>3];f=n+48|0;h[f>>3]=j*+h[n+80>>3]-+h[f>>3];f=n+56|0;h[f>>3]=j*+h[n+88>>3]-+h[f>>3];g=+h[n+80>>3];f=0;do{h[o+(f*24|0)>>3]=+h[n+(f<<5)>>3]/g;h[o+(f*24|0)+8>>3]=+h[n+(f<<5)+8>>3]/g;h[o+(f*24|0)+16>>3]=+h[n+(f<<5)+16>>3]/g;f=f+1|0}while((f|0)!=3);g=+(k+-1|0);h[p>>3]=+h[o>>3]*2.0/g;h[p+8>>3]=+h[o+8>>3]*2.0/g;h[p+16>>3]=+h[o+16>>3]*2.0/g+-1.0;k=p+24|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+40>>3]=+h[o+32>>3]*2.0/j;h[p+48>>3]=+h[o+40>>3]*2.0/j+-1.0;k=p+56|0;g=d-b;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[p+80>>3]=(b+d)/g;h[p+88>>3]=d*-2.0*b/g;k=p+96|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+112>>3]=1.0;h[p+120>>3]=0.0;g=+h[q+24>>3];j=+h[q+56>>3];d=+h[q+88>>3];k=0;do{b=+h[p+(k<<5)>>3];f=p+(k<<5)+8|0;a=p+(k<<5)+16|0;l=+h[f>>3];m=+h[a>>3];n=0;do{h[e+((n<<2)+k<<3)>>3]=b*+h[q+(n<<3)>>3]+l*+h[q+32+(n<<3)>>3]+m*+h[q+64+(n<<3)>>3];n=n+1|0}while((n|0)!=3);h[e+(k+12<<3)>>3]=+h[p+(k<<5)+24>>3]+(b*g+ +h[f>>3]*j+ +h[a>>3]*d);k=k+1|0}while((k|0)!=4)}i=r;return}function Mf(a){a=a|0;c[496]=a;return}function Nf(){return c[496]|0}function Of(a){a=a|0;var b=0,d=0;b=a+212|0;d=c[b>>2]|0;if(d){ze(d)|0;Qd(c[b>>2]|0)|0;c[b>>2]=0}b=a+224|0;if(c[b>>2]|0){Ld(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){kf(b)|0;c[b>>2]=0}return}function Pf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(!(Cg(2044,d)|0))a=-1;else{f=Dg(2044,d)|0;a=f+196|0;b=c[a>>2]|0;if(b){Vj(b);c[a>>2]=0;c[f+200>>2]=0}Of(f);Ce(c[f+216>>2]|0)|0;Eg(2044,d)|0;d=f+248|0;e=f+252|0;a=c[d>>2]|0;if((c[e>>2]|0)!=(a|0)){b=0;do{Ff(c[a+(b<<3)+4>>2]|0)|0;b=b+1|0;a=c[d>>2]|0}while(b>>>0<(c[e>>2]|0)-a>>3>>>0)}Fg(d);Lh(d);Fg(f+248|0);Lh(f);a=0}i=g;return a|0}function Qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+208|0;g=h+192|0;f=h;e=h+196|0;if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;if((ef(d,1,f,h+184|0)|0)<0){if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;c[g>>2]=d;Me(3,6093,g);d=-1}else{d=c[521]|0;c[521]=d+1;c[e>>2]=d;ik(Gg(2064,e)|0,f|0,184)|0}i=h;return d|0}function Rf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;m=n+24|0;l=n+16|0;j=n+8|0;f=n;d=n+32|0;e=n+28|0;c[d>>2]=a;c[e>>2]=b;do{if((Cg(2044,d)|0)!=0?(k=Dg(2044,d)|0,(Hg(2064,e)|0)!=0):0){g=k+8|0;ik(g|0,Gg(2064,e)|0,184)|0;e=c[g>>2]|0;d=k+204|0;b=c[k+12>>2]|0;a=k+208|0;if(!((e|0)==(c[d>>2]|0)?(b|0)==(c[a>>2]|0):0)){c[f>>2]=e;c[f+4>>2]=b;Me(2,6152,f);af(g,c[d>>2]|0,c[a>>2]|0,g)|0}Of(k);d=jf(g,15)|0;a=k+192|0;c[a>>2]=d;if(!d){Me(3,6199,j);d=-1;break}d=Md(d)|0;b=k+212|0;c[b>>2]=d;if(!d){Me(3,6237,l);d=-1;break}Nd(d,2)|0;l=Jd(g)|0;c[k+224>>2]=l;if(!l){Me(3,6274,m);d=-1;break}else{ye(c[b>>2]|0,c[k+216>>2]|0)|0;Lf(c[a>>2]|0,+h[k+232>>3],+h[k+240>>3],k+264|0);d=0;break}}else d=-1}while(0);i=n;return d|0}function Sf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;g=j;e=j+12|0;c[e>>2]=b;if(Cg(2044,e)|0){f=Dg(2044,e)|0;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;b=f+216|0;e=Ke(c[b>>2]|0,d)|0;c[f+260>>2]=e;if((e|0)<0){c[g>>2]=d;Me(3,6312,g);Ce(c[b>>2]|0)|0;Me(3,6358,h);e=-1}}else e=-1;i=j;return e|0}function Tf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;f=l+8|0;e=l+20|0;k=l;c[e>>2]=b;do{if(Cg(2044,e)|0){j=Dg(2044,e)|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=c[j+212>>2]|0;d=j+216|0;h=j+220|0;e=Jf(e,c[d>>2]|0)|0;c[h>>2]=e;if(!e){Me(3,6402,f);Ce(c[d>>2]|0)|0;Me(3,6429,g);e=-1;break}switch(c[e+108>>2]|0){case 0:{Zd(b,0)|0;break}case 1:{Zd(b,2)|0;break}default:Zd(b,3)|0}b=j+248|0;d=j+252|0;f=c[d>>2]|0;e=f-(c[b>>2]|0)>>3;g=k;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=e;c[k+4>>2]=c[h>>2];if((f|0)==(c[j+256>>2]|0)){Ig(b,k);break}else{j=k;e=c[j>>2]|0;j=c[j+4>>2]|0;k=f;c[k>>2]=e;c[k+4>>2]=j;c[d>>2]=(c[d>>2]|0)+8;break}}else e=-1}while(0);i=l;return e|0}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,(b|0)>=0):0)?(f=c[e+248>>2]|0,(c[e+252>>2]|0)-f>>3>>>0>b>>>0):0)d=c[(c[f+(b<<3)+4>>2]|0)+4>>2]|0;else d=-1;i=g;return d|0}function Vf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{b=Dg(2044,b)|0;b=(c[b+252>>2]|0)-(c[b+248>>2]|0)>>3}i=d;return b|0}function Wf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+232>>3]=b;i=e;return}function Xf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+232>>3];i=e;return+b}function Yf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+240>>3]=b;i=e;return}function Zf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+240>>3];i=e;return+b}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Zd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6478,e)}i=f;return}function $f(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return-1}else{a=(ae(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return(a?c[d>>2]|0:-1)|0}return 0}function ag(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,g=0,j=0,k=0;k=i;i=i+16|0;j=k;d=k+8|0;c[d>>2]=a;if((((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,!(b<=0.0|b>=1.0)):0)?(f=b,g=c[e+212>>2]|0,(g|0)!=0):0)?(be(g,f)|0)==0:0){h[j>>3]=f;Me(1,6513,j)}i=k;return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f;c[b>>2]=a;if((Cg(2044,b)|0)!=0?(d=c[(Dg(2044,b)|0)+212>>2]|0,(d|0)!=0):0){a=(ce(d,e)|0)==0;i=f;return+(a?+h[e>>3]:-1.0)}i=f;return-1.0}function cg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)_d(c[(Dg(2044,d)|0)+212>>2]|0,b)|0;i=e;return}function dg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{$d(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Sd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6544,e)}i=f;return}function fg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return-1}else{a=(Td(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return(a?c[d>>2]|0:-1)|0}return 0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+4|0;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,b>>>0<=255):0)?(Ud(c[e+212>>2]|0,b)|0)==0:0){c[f>>2]=b;Me(1,6569,f)}i=g;return}function hg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return-1}else{a=(Vd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return(a?c[d>>2]|0:-1)|0}return 0}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Pd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6590,e)}i=f;return}function jg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return-1}else{a=(Wd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return(a?c[d>>2]|0:-1)|0}return 0}function kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Cg(2044,d)|0))b=0;else{a=(b|0)!=0;Od(c[(Dg(2044,d)|0)+212>>2]|0,a&1)|0;c[e>>2]=a?6616:6620;Me(1,6625,e)}i=f;return b|0}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else b=c[(c[(Dg(2044,b)|0)+212>>2]|0)+4834148>>2]|0;i=d;return b|0}function mg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else{Rd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Xd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6647,e)}i=f;return}function og(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return-1}else{a=(Yd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return(a?c[d>>2]|0:-1)|0}return 0}function pg(a,b){a=a|0;b=b|0;var c=0;c=0;do{h[b+(c<<5)>>3]=+h[a+(c<<5)>>3];h[b+(c<<5)+8>>3]=+h[a+(c<<5)+8>>3];h[b+(c<<5)+16>>3]=+h[a+(c<<5)+16>>3];h[b+(c<<5)+24>>3]=+h[a+(c<<5)+24>>3];c=c+1|0}while((c|0)!=3);return}function qg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do{if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+ke(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0}while(0);i=f;return e|0}function rg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do{if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+le(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,264,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0}while(0);i=f;return e|0}function sg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do{if(Cg(2044,e)|0){e=c[(Dg(2044,e)|0)+212>>2]|0;if((c[e+44>>2]|0)>(b|0)){c[((b|0)<0?8:e+48+(b<<8)|0)+16>>2]=d;e=0;break}else{e=c[523]|0;break}}else e=c[522]|0}while(0);i=f;return e|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+16|0;d=e;c[d>>2]=a;do{if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;o=+h[33];h[d+168>>3]=o;k=+h[34];h[d+176>>3]=k;n=+h[35];h[d+184>>3]=n;j=+h[36];h[d+192>>3]=j;m=+h[37];h[d+200>>3]=m;g=+h[38];h[d+208>>3]=g;l=+h[39];h[d+216>>3]=l;f=+h[40];h[d+224>>3]=f;h[d+56>>3]=(o+n+m+l)*.25;h[d+64>>3]=(k+j+g+f)*.25;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0}while(0);i=e;return d|0}function ug(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do{if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Hf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0}while(0);i=e;return d|0}function vg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do{if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Gf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0}while(0);i=e;return d|0}function wg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=c[522]|0;else{b=Dg(2044,b)|0;b=de(c[b+212>>2]|0,c[b+196>>2]|0)|0}i=d;return b|0}function xg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=2088;else b=(c[(Dg(2044,b)|0)+212>>2]|0)+44|0;i=d;return c[b>>2]|0}function yg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do{if(Cg(2044,e)|0){a=Dg(2044,e)|0;e=c[a+248>>2]|0;if((b|0)<0?1:(c[a+252>>2]|0)-e>>3>>>0<=b>>>0){e=c[524]|0;break}e=c[e+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[e+4>>2]|0)<=(d|0)){e=c[523]|0;break}else{e=c[e>>2]|0;pg(e+(d*320|0)+16|0,264);Lb(0,c[e+(d*320|0)+304>>2]|0,c[e+(d*320|0)>>2]|0,c[e+(d*320|0)+4>>2]|0,+ +h[e+(d*320|0)+8>>3])|0;e=0;break}}else e=c[522]|0}while(0);i=f;return e|0}function zg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do{if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;Qa(1,c[d>>2]|0,c[d+4>>2]|0,c[d+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[d+20>>2]|0,c[d+24>>2]|0,+ +h[d+32>>3],+ +h[d+40>>3],+ +h[d+48>>3],+ +h[d+56>>3],+ +h[d+64>>3],+ +h[d+72>>3],+ +h[d+80>>3],+ +h[d+88>>3],+ +h[d+96>>3],+ +h[d+104>>3],+ +h[d+112>>3],+ +h[d+120>>3],+ +h[d+128>>3],+ +h[d+136>>3],+ +h[d+144>>3],+ +h[d+152>>3],+ +h[d+160>>3],+ +h[d+168>>3],+ +h[d+176>>3],+ +h[d+184>>3],+ +h[d+192>>3],+ +h[d+200>>3],+ +h[d+208>>3],+ +h[d+216>>3],+ +h[d+224>>3],c[d+240>>2]|0)|0;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0}while(0);i=e;return d|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+8|0;f=h+12|0;e=c[525]|0;c[525]=e+1;c[f>>2]=e;f=Dg(2044,f)|0;c[f>>2]=e;c[f+204>>2]=a;c[f+208>>2]=b;j=$(a<<2,b)|0;b=f+200|0;c[b>>2]=j;a=f+196|0;c[a>>2]=Uj(j)|0;j=Ae()|0;c[f+216>>2]=j;if(!j)Me(3,8285,h);Rf(e,d)|0;c[g>>2]=c[b>>2];Me(1,8322,g);Kb(2,c[f>>2]|0,c[a>>2]|0,c[b>>2]|0,f+264|0,264)|0;i=h;return c[f>>2]|0}function Bg(a){a=a|0;var b=0;a=i;i=i+16|0;b=a;Jg(8591,7);Kg(8597,3);Lg(8606,2);Lg(8617,3);Mg(8633,4);Kg(8651,4);Ng(8671,5);Jg(8683,8);Mg(8700,5);Jg(8720,9);Jg(8738,10);Mg(8760,6);Mg(8783,7);Kg(8812,6);Kg(8825,7);Jg(8838,11);Mg(8857,8);Mg(8867,9);Kg(8880,8);Kg(8893,9);Og(8912,10);Pg(8924,1);Qg(8936,1);Rg(8959,1);Qg(8982,2);Rg(9004,2);Sg(9026,1);Kg(9043,10);Sg(9060,2);Kg(9073,11);Sg(9086,3);Kg(9110,12);Tg(9134,3);Rg(9147,3);Sg(9160,4);Kg(9178,13);Sg(9196,5);Kg(9212,14);Sg(9228,6);Kg(9245,15);Ug(9262,2088);Ug(9291,2096);Ug(9319,2092);Cb(9352,680,0);Cb(9369,680,1);Cb(9385,680,0);Cb(9407,680,0);Cb(9432,680,1);Cb(9457,680,1);Cb(9482,680,100);Cb(9509,680,0);Cb(9535,680,1);Cb(9561,680,0);Cb(9588,680,0);Cb(9615,680,1);Cb(9641,680,2);Cb(9666,680,3);Cb(9704,680,4);Cb(9741,680,0);Cb(9775,680,0);Cb(9799,680,1);Cb(9825,680,2);Cb(9852,680,2);Cb(9886,680,5);h[b>>3]=.5;Vg(9904,b);Cb(9925,680,0);Cb(9944,680,1);Cb(9962,680,2);Cb(9980,680,3);Cb(9999,680,4);Cb(10021,680,3);Cb(10040,680,515);Cb(10069,680,259);Cb(10097,680,4);Cb(10116,680,772);Cb(10146,680,1028);Cb(10176,680,0);Cb(10207,680,1);Cb(10243,680,2);Cb(10277,680,3);Cb(10315,680,0);Cb(10348,680,1);Cb(10395,680,2);Cb(10437,680,3);Cb(10480,680,4);Cb(10532,680,5);Cb(10583,680,6);Cb(10628,680,7);Cb(10667,680,8);Cb(10712,680,9);i=a;return}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do{if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0}while(0);return b|0}function Dg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Cg(a,b)|0;if(!d){wh(f,a,b);xh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;b=Cg(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];uh(a,d)|0;b=1}i=f;return b|0}function Fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=a+4|0;a=c[b>>2]|0;if((a|0)!=(d|0)){do{a=a+-8|0}while((a|0)!=(d|0));c[b>>2]=a}Lh(d)}return}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Hg(a,b)|0;if(!d){qh(f,a,b);rh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do{if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0}while(0);return b|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;g=a+4|0;d=c[a>>2]|0;f=((c[g>>2]|0)-d>>3)+1|0;if(f>>>0>536870911)Jh(a);e=d;d=(c[a+8>>2]|0)-e|0;if(d>>3>>>0<268435455){d=d>>2;d=d>>>0>>0?f:d}else d=536870911;nh(h,d,(c[g>>2]|0)-e>>3,a+8|0);g=h+8|0;f=c[g>>2]|0;d=b;e=c[d+4>>2]|0;b=f;c[b>>2]=c[d>>2];c[b+4>>2]=e;c[g>>2]=f+8;oh(a,h);ph(h);i=j;return}function Jg(a,b){a=a|0;b=b|0;Oa(a|0,4,2200,10911,1,b|0);return}function Kg(a,b){a=a|0;b=b|0;Oa(a|0,2,2192,10801,10,b|0);return}function Lg(a,b){a=a|0;b=b|0;Oa(a|0,3,2180,10906,12,b|0);return}function Mg(a,b){a=a|0;b=b|0;Oa(a|0,3,2168,10906,13,b|0);return}function Ng(a,b){a=a|0;b=b|0;Oa(a|0,2,2160,10801,11,b|0);return}function Og(a,b){a=a|0;b=b|0;Oa(a|0,2,2152,10797,7,b|0);return}function Pg(a,b){a=a|0;b=b|0;Oa(a|0,1,2148,10794,16,b|0);return}function Qg(a,b){a=a|0;b=b|0;Oa(a|0,3,2136,10789,1,b|0);return}function Rg(a,b){a=a|0;b=b|0;Oa(a|0,2,2128,10785,1,b|0);return}function Sg(a,b){a=a|0;b=b|0;Oa(a|0,3,2116,10780,1,b|0);return}function Tg(a,b){a=a|0;b=b|0;Oa(a|0,3,2104,10775,2,b|0);return}function Ug(a,b){a=a|0;b=b|0;Cb(a|0,680,c[b>>2]|0);return}function Vg(a,b){a=a|0;b=b|0;Cb(a|0,720,~~+h[b>>3]>>>0|0);return}function Wg(){c[511]=0;c[512]=0;c[513]=0;c[514]=0;g[515]=1.0;ub(11,2044,n|0)|0;c[516]=0;c[517]=0;c[518]=0;c[519]=0;g[520]=1.0;ub(12,2064,n|0)|0;Bg(0);return}function Xg(a){a=a|0;$g(a);return}function Yg(a){a=a|0;Zg(a);return}function Zg(a){a=a|0;var b=0;_g(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function _g(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Lh(a)}while((b|0)!=0);return}function $g(a){a=a|0;var b=0;ah(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function ah(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Fg(a+264|0);Lh(a)}while((b|0)!=0);return}function bh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b,c);return}function dh(a,b){a=a|0;b=b|0;return+ +Ub[a&3](b)}function eh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function fh(a){a=a|0;return Vb[a&1]()|0}function gh(a,b){a=a|0;b=b|0;Wb[a&15](b);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;i=i+16|0;d=c;ih(d,b);a=Yb[a&31](d)|0;bk(d);i=c;return a|0}function ih(a,b){a=a|0;b=b|0;ak(a,b+4|0,c[b>>2]|0);return}function jh(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b,c)|0}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;e=d;ih(e,c);a=cc[a&15](b,e)|0;bk(e);i=d;return a|0}function lh(a,b){a=a|0;b=b|0;return Yb[a&31](b)|0}function mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b,c,d)|0}function nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+12>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=Kh(b<<3)|0;c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[a+12>>2]=e+(b<<3);return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;g=a+4|0;d=b+4|0;f=(c[g>>2]|0)-e|0;h=(c[d>>2]|0)+(0-(f>>3)<<3)|0;c[d>>2]=h;ik(h|0,e|0,f|0)|0;f=c[a>>2]|0;c[a>>2]=c[d>>2];c[d>>2]=f;f=b+8|0;e=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=e;f=a+8|0;a=b+12|0;e=c[f>>2]|0;c[f>>2]=c[a>>2];c[a>>2]=e;c[b>>2]=c[d>>2];return}function ph(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=a+8|0;b=c[e>>2]|0;if((b|0)!=(d|0)){do{b=b+-8|0}while((b|0)!=(d|0));c[e>>2]=b}b=c[a>>2]|0;if(b)Lh(b);return}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(200)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,184)|0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function rh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do{if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do{if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;sh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return}function zd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do{if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do{if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Dd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do{if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do{if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do{if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do{if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do{if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do{if((d[t>>0]|0)>(d[j>>0]|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Jd(a){a=a|0;return Kd(a+8|0)|0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Uj(4)|0;if(!b){Me(3,5472,d);rb(1)}a=wf(a)|0;c[b>>2]=a;if(!a){Vj(b);b=0}i=d;return b|0}function Ld(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{xf(b)|0;Vj(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function Md(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=Uj(7062432)|0;if(!b){Me(3,5472,d);rb(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;h[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=Uj($(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Me(3,5472,d+8|0);rb(1)}else{c[b+7062384>>2]=0;Nd(b,2)|0;Od(b,0)|0;c[b+7062388>>2]=-1;Pd(b,0)|0;c[b+7062392>>2]=7;c[b+7062396>>2]=0;i=d;return b|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;a:do{if(a){e=a+4|0;if((c[e>>2]|0)!=(b|0)){switch(b|0){case 11:case 10:case 9:case 8:case 7:case 6:case 4:case 3:case 2:case 1:case 0:{f=0;break}case 14:case 13:case 12:case 5:{f=1;break}default:{c[d>>2]=b;Me(3,3936,d);d=-1;break a}}c[e>>2]=b;c[a+8>>2]=Pe(b)|0;d=a+7062408|0;b=c[d>>2]|0;if(b){pe(b);c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[e>>2]|0,0)|0}d=a+24|0;b=c[d>>2]|0;if(!f)switch(b|0){case 1:{c[d>>2]=4;d=0;break a}case 4:{c[d>>2]=3;d=0;break a}default:{d=0;break a}}else switch(b|0){case 0:{c[d>>2]=1;d=0;break a}case 3:{c[d>>2]=4;d=0;break a}default:{d=0;break a}}}else d=0}else d=-1}while(0);i=g;return d|0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;do{if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;Vj(c[d>>2]|0);c[d>>2]=0;d=0;break}b=Uj($(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Me(3,5472,e);rb(1)}else d=0}else d=0;else d=-1}while(0);i=f;return d|0}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e){pe(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[a+4>>2]|0,0)|0;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:{b=0;break}default:{Me(3,3985,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[760+(b<<2)>>2];Me(3,4059,h);b=0}else b=0}else b=0}else b=-1;i=j;return b|0}function Qd(a){a=a|0;var b=0,d=0;if(!a)b=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d){pe(d);c[b>>2]=0}Vj(c[a+4834144>>2]|0);Vj(c[a+4834148>>2]|0);Vj(a);b=0}return b|0}function Rd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function Sd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function Td(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ud(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Vd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Wd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Xd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Yd(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Zd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function _d(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function $d(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function ae(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function be(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){h[a+7062416>>3]=b;a=0}else a=-1;return a|0}function ce(a,b){a=a|0;b=b|0;if(!a)a=-1;else{h[b>>3]=+h[a+7062416>>3];a=0}return a|0}function de(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0.0,S=0.0;Q=i;i=i+80|0;M=Q+32|0;G=Q+24|0;z=Q;y=Q+52|0;D=Q+40|0;L=Q+64|0;P=a+44|0;c[P>>2]=0;J=a+7062388|0;f=c[J>>2]|0;a:do{if((f|0)==4){I=a+7062396|0;e=c[I>>2]|0;do{if((e|0)>0){f=4;e=e+-1|0}else{C=a+16|0;F=c[C>>2]|0;E=a+7062400|0;A=(c[E>>2]|0)+F|0;A=(A|0)>255?255:A;c[y>>2]=A;H=a+7062404|0;B=F-(c[H>>2]|0)|0;B=(B|0)<0?0:B;c[y+4>>2]=B;c[y+8>>2]=F;e=a+36|0;f=a+40|0;g=a+4|0;k=a+12|0;l=a+20|0;m=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+7062384|0;s=a+24|0;t=a+32|0;u=a+7062416|0;v=a+48|0;w=a+7062424|0;x=0;do{if((xe(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[a>>2]|0,c[k>>2]|0,c[y+(x<<2)>>2]|0,c[l>>2]|0,m,0)|0)<0){e=-1;break a}if((fe(c[e>>2]|0,c[f>>2]|0,m,c[l>>2]|0,1e6,70,1.0,p,q)|0)<0){e=-1;break a}if((je(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,p,c[q>>2]|0,c[r>>2]|0,c[l>>2]|0,c[s>>2]|0,(c[t>>2]|0)+184|0,+h[u>>3],v,P,c[w>>2]|0)|0)<0){e=-1;break a}c[D+(x<<2)>>2]=c[P>>2];x=x+1|0}while((x|0)<3);if((c[a>>2]|0)==1){N=c[D+4>>2]|0;g=c[D+8>>2]|0;f=c[D>>2]|0;c[z>>2]=B;c[z+4>>2]=N;c[z+8>>2]=F;c[z+12>>2]=g;c[z+16>>2]=A;c[z+20>>2]=f;Me(3,4153,z)}else{f=c[D>>2]|0;g=c[D+8>>2]|0}e=c[D+4>>2]|0;if((f|0)>(g|0)|(e|0)>(g|0)){f=(f|0)>=(e|0)?A:B;c[C>>2]=f;e=f-F|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[H>>2]=e;if((c[a>>2]|0)==1){c[G>>2]=f;Me(3,4229,G)}f=c[J>>2]|0;e=c[a+7062392>>2]|0;break}e=c[E>>2]|0;f=c[H>>2]|0;do{if((e|0)>=(f|0))if((e|0)>(f|0)){c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}}while(0);if((e+F|0)>254){c[E>>2]=1;e=1}if((F|0)<=(e|0))c[H>>2]=1;c[I>>2]=c[a+7062392>>2];N=47;break a}}while(0);c[I>>2]=e;N=30}else N=30}while(0);b:do{if((N|0)==30){c:do{switch(f|0){case 3:{f=a+7062408|0;e=we(c[f>>2]|0,b,9,-7)|0;if((e|0)<0)break b;e=c[f>>2]|0;f=a+4834144|0;e=xe(c[e>>2]|0,c[e+8>>2]|0,c[e+12>>2]|0,5,c[a>>2]|0,c[a+12>>2]|0,0,0,f,c[e+4>>2]|0)|0;if((e|0)<0)break b;e=a+36|0;g=a+40|0;k=a+20|0;break}case 2:case 1:{g=a+7062396|0;e=c[g>>2]|0;if((e|0)>0){c[g>>2]=e+-1;N=44;break c}e=c[a+7062408>>2]|0;if((f|0)==1)e=ue(e,b,L)|0;else e=ve(e,b,L)|0;if((e|0)<0)break b;e=a+16|0;if((c[a>>2]|0)==1?(K=d[L>>0]|0,(c[e>>2]|0)!=(K|0)):0){c[M>>2]=(c[J>>2]|0)==1?4281:4288;c[M+4>>2]=K;Me(3,4293,M)}c[e>>2]=d[L>>0];c[g>>2]=c[a+7062392>>2];N=44;break}default:N=44}}while(0);if((N|0)==44){e=a+36|0;g=a+40|0;k=a+20|0;f=a+4834144|0;if((xe(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[k>>2]|0,f,0)|0)<0){e=-1;break}}l=a+15416|0;m=a+15408|0;if((fe(c[e>>2]|0,c[g>>2]|0,f,c[k>>2]|0,1e6,70,1.0,l,m)|0)>=0?(je(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,l,c[m>>2]|0,c[a+7062384>>2]|0,c[k>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+h[a+7062416>>3],a+48|0,P,c[a+7062424>>2]|0)|0)>=0:0)N=47;else e=-1}}while(0);d:do{if((N|0)==47){t=a+28|0;if((c[t>>2]|0)==1){ee(a);e=0;break}u=a+4818296|0;r=a+24|0;q=c[u>>2]|0;if((q|0)>0){s=0;do{f=c[P>>2]|0;g=a+4818304+(s*264|0)+56|0;k=a+4818304+(s*264|0)+64|0;if((f|0)>0){o=+(c[a+4818304+(s*264|0)>>2]|0);e=-1;l=0;n=.5;while(1){j=+(c[a+48+(l<<8)>>2]|0);R=o/j;if(!(R<.7|R>1.43)?(R=+h[a+48+(l<<8)+56>>3]-+h[g>>3],O=+h[a+48+(l<<8)+64>>3]-+h[k>>3],O=(R*R+O*O)/j,O=(f|0)){p=e;break}else n=j}}else p=-1;e:do{if((p|0)>-1){m=c[r>>2]|0;switch(m|0){case 2:case 1:case 0:break;case 4:case 3:{g=a+48+(p<<8)+40|0;j=+h[a+4818304+(s*264|0)+40>>3];if(!(+h[g>>3]>3]<+h[f>>3]))break e}else{f=a+4818304+(s*264|0)+48|0;e=a+48+(p<<8)+48|0}h[g>>3]=j;c[a+48+(p<<8)+8>>2]=c[a+4818304+(s*264|0)+8>>2];h[e>>3]=+h[f>>3];c[a+48+(p<<8)+12>>2]=c[a+4818304+(s*264|0)+12>>2];e=-1;n=1.0e8;g=0;while(1){j=0.0;f=0;do{b=(f+g|0)%4|0;o=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(o*o+R*R);f=f+1|0}while((f|0)!=4);f=j>2]=(b+(c[a+4818304+(s*264|0)+20>>2]|0)|0)%4|0;c[a+48+(p<<8)+24>>2]=(b+(c[a+4818304+(s*264|0)+24>>2]|0)|0)%4|0;break e}default:{e=-1;break d}}e=a+48+(p<<8)+32|0;o=+h[a+4818304+(s*264|0)+32>>3];if(+h[e>>3]>3]=o;l=c[a+4818304+(s*264|0)+4>>2]|0;c[a+48+(p<<8)+4>>2]=l;g=a+4818304+(s*264|0)+16|0;e=-1;n=1.0e8;k=0;while(1){j=0.0;f=0;do{b=(f+k|0)%4|0;S=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(S*S+R*R);f=f+1|0}while((f|0)!=4);if(j>2]|0)|0)%4|0;else j=n;k=k+1|0;if((k|0)==4)break;else n=j}c[a+48+(p<<8)+16>>2]=e;if(m>>>0<2){c[a+48+(p<<8)+8>>2]=l;h[a+48+(p<<8)+40>>3]=o;c[a+48+(p<<8)+20>>2]=e;break}else{c[a+48+(p<<8)+12>>2]=l;h[a+48+(p<<8)+48>>3]=o;c[a+48+(p<<8)+24>>2]=e;break}}}}while(0);s=s+1|0}while((s|0)<(q|0))}ee(a);if((c[u>>2]|0)>0){g=0;e=0;do{f=a+4818304+(g*264|0)|0;N=a+4818304+(g*264|0)+256|0;b=(c[N>>2]|0)+1|0;c[N>>2]=b;if((b|0)<4){if((g|0)!=(e|0))ik(a+4818304+(e*264|0)|0,f|0,264)|0;e=e+1|0}g=g+1|0}while((g|0)<(c[u>>2]|0))}else e=0;c[u>>2]=e;e=c[P>>2]|0;f:do{if((e|0)>0){m=0;do{k=a+48+(m<<8)|0;g=c[a+48+(m<<8)+4>>2]|0;if((g|0)>=0){l=c[u>>2]|0;g:do{if((l|0)>0){f=0;do{if((c[a+4818304+(f*264|0)+4>>2]|0)==(g|0))break g;f=f+1|0}while((f|0)<(l|0))}else f=0}while(0);if((f|0)==(l|0)){if((l|0)==60)break f;c[u>>2]=l+1}ik(a+4818304+(f*264|0)|0,k|0,256)|0;c[a+4818304+(f*264|0)+256>>2]=1}m=m+1|0;e=c[P>>2]|0}while((m|0)<(e|0))}}while(0);if((c[t>>2]|0)!=2?(c[u>>2]|0)>0:0){l=0;while(1){g=a+4818304+(l*264|0)+56|0;k=a+4818304+(l*264|0)+64|0;h:do{if((e|0)>0){n=+(c[a+4818304+(l*264|0)>>2]|0);f=0;do{j=+(c[a+48+(f<<8)>>2]|0);S=n/j;if(!(S<.7|S>1.43)?(R=+h[a+48+(f<<8)+56>>3]-+h[g>>3],S=+h[a+48+(f<<8)+64>>3]-+h[k>>3],(R*R+S*S)/j<.5):0)break h;f=f+1|0}while((f|0)<(e|0))}else f=0}while(0);if((f|0)==(e|0)){ik(a+48+(e<<8)|0,a+4818304+(l*264|0)|0,256)|0;e=(c[P>>2]|0)+1|0;c[P>>2]=e}l=l+1|0;if((l|0)>=(c[u>>2]|0)){e=0;break}}}else e=0}}while(0);i=Q;return e|0}function ee(a){a=a|0;var b=0,d=0,e=0,f=0;switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+8>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}case 2:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+12>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}default:{e=c[a+44>>2]|0;if((e|0)>0){f=0;do{b=a+48+(f<<8)+8|0;if((c[b>>2]|0)>-1?+h[a+48+(f<<8)+40>>3]<.5:0){c[b>>2]=-1;d=0}else d=1;b=a+48+(f<<8)+12|0;if(((c[b>>2]|0)>-1?+h[a+48+(f<<8)+48>>3]<.5:0)?(c[b>>2]=-1,(d|0)==0):0)c[a+48+(f<<8)+236>>2]=6;f=f+1|0}while((f|0)<(e|0))}}}return}function fe(a,b,d,e,f,g,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;k=k|0;l=l|0;var m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+96|0;F=L+56|0;H=L+48|0;G=L+8|0;I=L;K=(e|0)==1;if(K){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;g=(g|0)/4|0}c[l>>2]=0;C=d+8|0;D=a+-2|0;z=b+-2|0;A=d+1179664|0;a:do{if((c[C>>2]|0)>0){B=0;while(1){w=d+12+(B<<2)|0;y=c[w>>2]|0;b:do{if(((((!((y|0)<(g|0)|(y|0)>(f|0))?(E=d+131084+(B<<4)|0,(c[E>>2]|0)!=1):0)?(c[d+131084+(B<<4)+4>>2]|0)!=(D|0):0)?(c[d+131084+(B<<4)+8>>2]|0)!=1:0)?(c[d+131084+(B<<4)+12>>2]|0)!=(z|0):0)?(ge(c[d>>2]|0,a,0,A,B+1|0,E,k+((c[l>>2]|0)*80048|0)|0)|0)>=0:0){t=c[w>>2]|0;x=c[l>>2]|0;u=k+(x*80048|0)+28|0;b=c[u>>2]|0;v=k+(x*80048|0)+40028|0;n=c[v>>2]|0;y=k+(x*80048|0)+24|0;o=(c[y>>2]|0)+-1|0;if((o|0)>1){r=0;s=1;e=0;while(1){p=(c[k+(x*80048|0)+28+(s<<2)>>2]|0)-b|0;p=$(p,p)|0;q=(c[k+(x*80048|0)+40028+(s<<2)>>2]|0)-n|0;p=($(q,q)|0)+p|0;q=(p|0)>(r|0);e=q?s:e;s=s+1|0;if((s|0)>=(o|0))break;else r=q?p:r}}else e=0;m=+(t|0)/.75*.01*j;c[H>>2]=0;c[I>>2]=0;c:do{if((he(u,v,0,e,m,F,H)|0)>=0?(he(u,v,e,(c[y>>2]|0)+-1|0,m,G,I)|0)>=0:0){b=c[H>>2]|0;n=c[I>>2]|0;do{if((b|0)==1&(n|0)==1){b=c[G>>2]|0;n=c[F>>2]|0}else{if((b|0)>1&(n|0)==0){b=(e|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,0,b,m,F,H)|0)<0)break c;if((he(u,v,b,e,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=e;n=c[F>>2]|0;e=c[G>>2]|0;break}if(!((b|0)==0&(n|0)>1))break c;b=(e+-1+(c[y>>2]|0)|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,e,b,m,F,H)|0)<0)break c;if((he(u,v,b,(c[y>>2]|0)+-1|0,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=c[G>>2]|0;n=e;e=c[F>>2]|0}}while(0);c[k+(x*80048|0)+80028>>2]=0;c[k+(x*80048|0)+80032>>2]=n;c[k+(x*80048|0)+80036>>2]=e;c[k+(x*80048|0)+80040>>2]=b;c[k+(x*80048|0)+80044>>2]=(c[y>>2]|0)+-1;c[k+((c[l>>2]|0)*80048|0)>>2]=c[w>>2];y=c[l>>2]|0;h[k+(y*80048|0)+8>>3]=+h[d+655376+(B<<4)>>3];h[k+(y*80048|0)+16>>3]=+h[d+655376+(B<<4)+8>>3];y=y+1|0;c[l>>2]=y;if((y|0)==60){e=60;break a}else break b}}while(0)}}while(0);B=B+1|0;if((B|0)>=(c[C>>2]|0)){J=4;break}}}else J=4}while(0);if((J|0)==4)e=c[l>>2]|0;if((e|0)>0){o=0;do{a=o;o=o+1|0;g=k+(a*80048|0)+16|0;n=k+(a*80048|0)|0;if((o|0)<(e|0)){j=+h[k+(a*80048|0)+8>>3];f=o;do{M=j-+h[k+(f*80048|0)+8>>3];m=+h[g>>3]-+h[k+(f*80048|0)+16>>3];m=M*M+m*m;e=c[n>>2]|0;a=k+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(m<+((e|0)/4|0|0))c[a>>2]=0}else if(m<+((b|0)/4|0|0))c[n>>2]=0;f=f+1|0;e=c[l>>2]|0}while((f|0)<(e|0))}}while((o|0)<(e|0))}if((e|0)>0){f=0;do{if(!(c[k+(f*80048|0)>>2]|0)){a=f+1|0;if((a|0)<(e|0)){e=f;b=a;while(1){ik(k+(e*80048|0)|0,k+(b*80048|0)|0,80048)|0;e=c[l>>2]|0;a=b+1|0;if((a|0)<(e|0)){e=b;b=a}else break}}e=e+-1|0;c[l>>2]=e}f=f+1|0}while((f|0)<(e|0))}if(K&(e|0)>0){b=0;while(1){c[k>>2]=c[k>>2]<<2;e=k+8|0;h[e>>3]=+h[e>>3]*2.0;e=k+16|0;h[e>>3]=+h[e>>3]*2.0;e=k+24|0;if((c[e>>2]|0)>0){a=0;do{K=k+28+(a<<2)|0;c[K>>2]=c[K>>2]<<1;K=k+40028+(a<<2)|0;c[K>>2]=c[K>>2]<<1;a=a+1|0}while((a|0)<(c[e>>2]|0))}b=b+1|0;if((b|0)>=(c[l>>2]|0))break;else k=k+80048|0}}i=L;return 0}function ge(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+80032|0;p=w+16|0;o=w+8|0;l=w;u=w+40024|0;v=w+24|0;t=c[h+8>>2]|0;e=c[h>>2]|0;h=c[h+4>>2]|0;a:do{if((e|0)<=(h|0)){k=e;e=a+(($(t,d)|0)+e<<1)|0;while(1){s=b[e>>1]|0;if(s<<16>>16>0?(c[f+((s<<16>>16)+-1<<2)>>2]|0)==(g|0):0){n=k;break}if((k|0)<(h|0)){k=k+1|0;e=e+2|0}else{x=6;break a}}q=j+24|0;c[q>>2]=1;r=j+28|0;c[r>>2]=n;s=j+40028|0;c[s>>2]=t;f=t;m=n;k=1;e=5;while(1){h=(e+5|0)%8|0;e=0;while(1){g=c[776+(h<<2)>>2]|0;l=c[808+(h<<2)>>2]|0;if((b[a+(l+m+($(g+f|0,d)|0)<<1)>>1]|0)>0){e=g;g=h;break}e=e+1|0;h=(h+1|0)%8|0;if((e|0)>=8){x=11;break}}if((x|0)==11){x=0;if((e|0)==8){x=13;break}l=c[808+(h<<2)>>2]|0;e=c[776+(h<<2)>>2]|0;g=h}c[j+28+(k<<2)>>2]=l+m;h=c[q>>2]|0;c[j+40028+(h<<2)>>2]=e+(c[j+40028+(h+-1<<2)>>2]|0);e=c[q>>2]|0;h=j+28+(e<<2)|0;if((c[h>>2]|0)==(n|0)?(c[j+40028+(e<<2)>>2]|0)==(t|0):0){f=e;x=16;break}k=e+1|0;c[q>>2]=k;if((k|0)==9999){x=19;break}f=c[j+40028+(e<<2)>>2]|0;m=c[h>>2]|0;e=g}if((x|0)==13){Me(3,4347,o);e=-1;break}else if((x|0)==16){if((f|0)>1){l=0;g=1;h=0;while(1){e=(c[j+28+(g<<2)>>2]|0)-n|0;e=$(e,e)|0;k=(c[j+40028+(g<<2)>>2]|0)-t|0;e=($(k,k)|0)+e|0;k=(e|0)>(l|0);h=k?g:h;g=g+1|0;if((g|0)>=(f|0))break;else l=k?e:l}}else h=0;if((h|0)>0){e=0;do{c[u+(e<<2)>>2]=c[j+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}if((h|0)<(f|0)){e=h;do{t=e-h|0;c[j+28+(t<<2)>>2]=c[j+28+(e<<2)>>2];c[j+40028+(t<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(c[q>>2]|0))}if((h|0)>0){e=0;do{t=e-h|0;c[j+28+((c[q>>2]|0)+t<<2)>>2]=c[u+(e<<2)>>2];c[j+40028+((c[q>>2]|0)+t<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}c[j+28+(c[q>>2]<<2)>>2]=c[r>>2];c[j+40028+(c[q>>2]<<2)>>2]=c[s>>2];c[q>>2]=(c[q>>2]|0)+1;e=0;break}else if((x|0)==19){Me(3,4354,p);e=-1;break}}else x=6}while(0);if((x|0)==6){Me(3,4340,l);e=-1}i=w;return e|0}function he(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0.0;i=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;o=+(i-q|0);l=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(l-r|0);k=+(($(r,q)|0)-($(l,i)|0)|0);i=d+1|0;if((i|0)<(e|0)){j=0.0;l=i;do{s=k+(o*+(c[a+(l<<2)>>2]|0)+m*+(c[b+(l<<2)>>2]|0));s=s*s;r=s>j;j=r?s:j;i=r?l:i;l=l+1|0}while((l|0)<(e|0))}else j=0.0;if(j/(o*o+m*m)>f)if(((he(a,b,d,i,f,g,h)|0)>=0?(n=c[h>>2]|0,(n|0)<=5):0)?(c[g+(n<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(he(a,b,i,e,f,g,h)|0)>=0):0)p=7;else i=-1;else p=7;if((p|0)==7)i=0;return i|0}function ie(a,b,d,e,f,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+16|0;t=y+4|0;u=y;v=nf(2)|0;w=nf(2)|0;x=Re(2,2)|0;q=0;a:while(1){r=q;q=q+1|0;s=c[e+(q<<2)>>2]|0;l=c[e+(r<<2)>>2]|0;p=+(s+1-l|0)*.05+.5;l=~~(+(l|0)+p);s=~~(+(s|0)-p)-l|0;n=s+1|0;d=Re(n,2)|0;if((s|0)>-1){s=0;do{z=s+l|0;if((mf(f,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),t,u)|0)<0){l=10;break a}z=s<<1;A=c[d>>2]|0;h[A+(z<<3)>>3]=+g[t>>2];h[A+((z|1)<<3)>>3]=+g[u>>2];s=s+1|0}while((s|0)<(n|0))}if((Ye(d,x,v,w)|0)<0){l=10;break}A=c[x>>2]|0;o=+h[A+8>>3];h[j+(r*24|0)>>3]=o;p=-+h[A>>3];h[j+(r*24|0)+8>>3]=p;A=c[w>>2]|0;h[j+(r*24|0)+16>>3]=-(o*+h[A>>3]+ +h[A+8>>3]*p);We(d)|0;if((q|0)>=4){l=7;break}}b:do{if((l|0)==7){We(x)|0;of(w)|0;of(v)|0;q=0;while(1){d=(q+3|0)%4|0;l=j+(d*24|0)|0;m=+h[j+(q*24|0)+8>>3];n=j+(q*24|0)|0;o=+h[j+(d*24|0)+8>>3];p=+h[l>>3]*m-+h[n>>3]*o;if(+O(+p)<.0001){d=-1;break b}A=j+(q*24|0)+16|0;z=j+(d*24|0)+16|0;h[k+(q<<4)>>3]=(o*+h[A>>3]-m*+h[z>>3])/p;h[k+(q<<4)+8>>3]=(+h[n>>3]*+h[z>>3]-+h[l>>3]*+h[A>>3])/p;q=q+1|0;if((q|0)>=4){d=0;break}}}else if((l|0)==10){We(d)|0;We(x)|0;of(w)|0;of(v)|0;d=-1}}while(0);i=y;return d|0}function je(a,b,d,e,f,j,k,l,m,n,o,p,q,r){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;D=F+4|0;E=F;z=m>>>0<2;A=(m|0)==2;if((j|0)>0){C=0;s=0;do{c[p+(s<<8)>>2]=c[f+(C*80048|0)>>2];if((mf(n,+h[f+(C*80048|0)+8>>3],+h[f+(C*80048|0)+16>>3],D,E)|0)>=0?(h[p+(s<<8)+56>>3]=+g[D>>2],h[p+(s<<8)+64>>3]=+g[E>>2],B=p+(s<<8)+168|0,(ie(f+(C*80048|0)+28|0,f+(C*80048|0)+40028|0,c[f+(C*80048|0)+24>>2]|0,f+(C*80048|0)+80028|0,n,p+(s<<8)+72|0,B)|0)>=0):0){t=p+(s<<8)+8|0;u=p+(s<<8)+20|0;v=p+(s<<8)+40|0;w=p+(s<<8)+12|0;x=p+(s<<8)+24|0;y=p+(s<<8)+48|0;switch(De(k,l,m,a,b,d,e,n,B,o,t,u,v,w,x,y,r,p+(s<<8)+240|0,p+(s<<8)+248|0)|0){case 0:{c[p+(s<<8)+236>>2]=0;break}case-1:{c[p+(s<<8)+236>>2]=2;break}case-2:{c[p+(s<<8)+236>>2]=3;break}case-3:{c[p+(s<<8)+236>>2]=4;break}case-4:{c[p+(s<<8)+236>>2]=5;break}case-5:{c[p+(s<<8)+236>>2]=9;break}case-6:{c[p+(s<<8)+236>>2]=1;break}default:{}}if(!z){if(A){c[p+(s<<8)+4>>2]=c[w>>2];c[p+(s<<8)+16>>2]=c[x>>2];h[p+(s<<8)+32>>3]=+h[y>>3]}}else{c[p+(s<<8)+4>>2]=c[t>>2];c[p+(s<<8)+16>>2]=c[u>>2];h[p+(s<<8)+32>>3]=+h[v>>3]}s=s+1|0}C=C+1|0}while((C|0)<(j|0))}else s=0;c[q>>2]=s;i=F;return 0}function ke(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;k=i;i=i+288|0;m=k+200|0;l=k+104|0;f=k+264|0;j=k+8|0;g=k;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=d*-.5;h[l>>3]=n;d=d*.5;h[l+8>>3]=d;h[l+16>>3]=0.0;h[l+24>>3]=d;h[l+32>>3]=d;h[l+40>>3]=0.0;h[l+48>>3]=d;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=4;if((Ef(c[a>>2]|0,m,l,4,j)|0)<0)d=1.0e8;else{p=(zf(c[a>>2]|0,f,j,e,g)|0)<0;d=p?1.0e8:+h[g>>3]}i=k;return+d}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;j=i;i=i+192|0;m=j+104|0;l=j+8|0;k=j+168|0;g=j;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=e*-.5;h[l>>3]=n;e=e*.5;h[l+8>>3]=e;h[l+16>>3]=0.0;h[l+24>>3]=e;h[l+32>>3]=e;h[l+40>>3]=0.0;h[l+48>>3]=e;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[k>>2]=m;c[k+4>>2]=l;c[k+8>>2]=4;b=(zf(c[a>>2]|0,k,d,f,g)|0)<0;i=j;return+(b?1.0e8:+h[g>>3])}function me(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((zf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return+ +h[n>>3]}function ne(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((Bf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return+ +h[n>>3]}function oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Uj(2080)|0;a:do{if(f){c[f+2068>>2]=d;b:do{if(!e){switch(d|0){case 5:case 12:case 13:case 14:break;default:{g=4;break b}}c[f+2076>>2]=0}else g=4}while(0);do{if((g|0)==4){g=Uj($(b,a)|0)|0;c[f>>2]=g;if(!g){Vj(f);f=0;break a}else{c[f+2076>>2]=1;break}}}while(0);c[f+2072>>2]=e;c[f+4>>2]=0;c[f+8>>2]=a;c[f+12>>2]=b}}while(0);return f|0}function pe(a){a=a|0;if(a){if(c[a+2076>>2]|0)Vj(c[a>>2]|0);Vj(c[a+4>>2]|0);Vj(a)}return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;g=k;f=c[b+2068>>2]|0;a:do{switch(f|0){case 5:case 12:case 13:case 14:if(!(c[b+2072>>2]|0)){c[b>>2]=e;f=0;break a}else{ik(c[b>>2]|0,e|0,$(c[b+12>>2]|0,c[b+8>>2]|0)|0)|0;f=0;break a}default:{if((f&-2|0)==2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j|2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if((f&-3|0)==4){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|2)>>0]|0)+(d[e+(j|1)>>0]|0)+(d[e+(j|3)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if(f>>>0<2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j+1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j+2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+3|0}}switch(f|0){case 8:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+j>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 7:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+(j|1)>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 9:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;l=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&248)+10+(m<<5&224)+(l>>>3&28)+(l<<3&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 10:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){l=d[e+j>>0]|0;m=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((l&248)+12+(l<<5&224)+(m>>>3&24)+(m<<2&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 11:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&240)+24+(m<<4&240)+((d[e+(j|1)>>0]|0)&240)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}default:{Me(3,4361,g);f=-1;break a}}}}}while(0);i=k;return f|0}function re(a,b){a=a|0;b=b|0;var e=0,f=0;if((a|0)!=0&(b|0)!=0?(qe(a,b)|0)>=0:0){ek(a+16|0,0,1024)|0;b=c[a>>2]|0;f=$(c[a+12>>2]|0,c[a+8>>2]|0)|0;e=b+f|0;if((f|0)>0){do{f=a+16+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}while(b>>>0>>0);b=0}else b=0}else b=-1;return b|0}function se(a,b){a=a|0;b=b|0;var d=0;b=re(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+16+(d<<2)>>2]|0)+b|0;c[a+1040+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function te(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0;if(!(e<0.0|e>1.0)){d=se(b,d)|0;if((d|0)>=0){i=~~(+($(c[b+12>>2]|0,c[b+8>>2]|0)|0)*e)>>>0;d=0;while(1){h=d&255;g=c[b+1040+(h<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}if((g|0)==(i|0))do{d=d+1<<24>>24}while((c[b+1040+((d&255)<<2)>>2]|0)==(i|0));a[f>>0]=((d&255)+h|0)>>>1;d=0}}else d=-1;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=c|0;return te(a,b,.5,c)|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0;d=re(b,d)|0;if((d|0)>=0){d=1;f=0.0;do{f=f+ +(($(c[b+16+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+($(c[b+12>>2]|0,c[b+8>>2]|0)|0);l=0;h=0.0;d=0;j=0.0;m=0.0;while(1){g=c[b+16+(l<<2)>>2]|0;m=m+ +(g>>>0);if(m!=0.0){i=k-m;if(i==0.0)break;h=h+ +(($(l,g)|0)>>>0);n=h/m-(f-h)/i;i=n*(m*i*n);if(i>j)d=l&255;else i=j}else i=j;if((l&255)<<24>>24==-1)break;else{l=l+1|0;j=i}}a[e>>0]=d;d=0}return d|0}function we(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=re(b,e)|0;do{if((e|0)>=0){t=b+4|0;if(!(c[t>>2]|0)){e=b+8|0;h=b+12|0;s=Uj($(c[h>>2]|0,c[e>>2]|0)|0)|0;c[t>>2]=s;if(!s){e=-1;break}else s=e}else{s=b+8|0;h=b+12|0}q=f>>1;r=0-q|0;e=c[h>>2]|0;if((e|0)>0){n=(q|0)<(r|0);o=(q|0)<(r|0);p=0;do{e=c[s>>2]|0;if((e|0)>0){m=0;do{if(n){i=0;f=0}else{i=0;l=r;f=0;while(1){j=l+p|0;if(((j|0)>=0?(j|0)<(c[h>>2]|0):0)?(u=$(e,j)|0,!o):0){k=r;while(1){j=k+m|0;if((j|0)>-1&(j|0)<(e|0)){i=i+1|0;f=(d[(c[b>>2]|0)+(u+j)>>0]|0)+f|0}if((k|0)<(q|0))k=k+1|0;else break}}if((l|0)<(q|0))l=l+1|0;else break}}l=($(e,p)|0)+m|0;a[(c[t>>2]|0)+l>>0]=(f|0)/(i|0)|0;m=m+1|0;e=c[s>>2]|0}while((m|0)<(e|0))}p=p+1|0;e=c[h>>2]|0}while((p|0)<(e|0))}if((g|0)!=0?($(e,c[s>>2]|0)|0)>0:0){e=0;do{b=(c[t>>2]|0)+e|0;a[b>>0]=(d[b>>0]|0)+g;e=e+1|0}while((e|0)<($(c[h>>2]|0,c[s>>2]|0)|0));e=0}else e=0}}while(0);return e|0}function xe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;a:do{switch(e|0){case 0:{switch(f|0){case 1:{if(j){k=Fc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=wc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=yc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Bc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Cc(a,b,c,g,i)|0;break a}case 8:{k=Ec(a,b,c,g,i)|0;break a}case 7:{k=Dc(a,b,c,g,i)|0;break a}case 9:{k=xc(a,b,c,g,i)|0;break a}case 10:{k=Ac(a,b,c,g,i)|0;break a}case 11:{k=zc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=nc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=pc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=sc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=tc(a,b,c,g,i)|0;break a}case 8:{k=vc(a,b,c,g,i)|0;break a}case 7:{k=uc(a,b,c,g,i)|0;break a}case 9:{k=oc(a,b,c,g,i)|0;break a}case 10:{k=rc(a,b,c,g,i)|0;break a}case 11:{k=qc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Yc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=Pc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Rc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Uc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Vc(a,b,c,g,i)|0;break a}case 8:{k=Xc(a,b,c,g,i)|0;break a}case 7:{k=Wc(a,b,c,g,i)|0;break a}case 9:{k=Qc(a,b,c,g,i)|0;break a}case 10:{k=Tc(a,b,c,g,i)|0;break a}case 11:{k=Sc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Gc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Ic(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Lc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Mc(a,b,c,g,i)|0;break a}case 8:{k=Oc(a,b,c,g,i)|0;break a}case 7:{k=Nc(a,b,c,g,i)|0;break a}case 9:{k=Hc(a,b,c,g,i)|0;break a}case 10:{k=Kc(a,b,c,g,i)|0;break a}case 11:{k=Jc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}case 1:{switch(f|0){case 1:{if(j){k=pd(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=gd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=id(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=ld(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=md(a,b,c,g,i)|0;break a}case 8:{k=od(a,b,c,g,i)|0;break a}case 7:{k=nd(a,b,c,g,i)|0;break a}case 9:{k=hd(a,b,c,g,i)|0;break a}case 10:{k=kd(a,b,c,g,i)|0;break a}case 11:{k=jd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Zc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=$c(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=cd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=dd(a,b,c,g,i)|0;break a}case 8:{k=fd(a,b,c,g,i)|0;break a}case 7:{k=ed(a,b,c,g,i)|0;break a}case 9:{k=_c(a,b,c,g,i)|0;break a}case 10:{k=bd(a,b,c,g,i)|0;break a}case 11:{k=ad(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Id(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=zd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Bd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Ed(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Fd(a,b,c,g,i)|0;break a}case 8:{k=Hd(a,b,c,g,i)|0;break a}case 7:{k=Gd(a,b,c,g,i)|0;break a}case 9:{k=Ad(a,b,c,g,i)|0;break a}case 10:{k=Dd(a,b,c,g,i)|0;break a}case 11:{k=Cd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=qd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=sd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=vd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=wd(a,b,c,g,i)|0;break a}case 8:{k=yd(a,b,c,g,i)|0;break a}case 7:{k=xd(a,b,c,g,i)|0;break a}case 9:{k=rd(a,b,c,g,i)|0;break a}case 10:{k=ud(a,b,c,g,i)|0;break a}case 11:{k=td(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}default:rb(0)}}while(0);return k|0}function ye(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;d=0}else d=-1;return d|0}function ze(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;b=0}else b=-1;return b|0}function Ae(){return Be(16,50)|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+56|0;p=r+48|0;j=r+40|0;h=r+32|0;g=r+24|0;f=r+16|0;e=r+8|0;d=r;a:do{if(!((a+-16|0)>>>0>48|(b|0)<1)){n=Uj(32)|0;if(!n){Me(3,5472,d);rb(1)}c[n>>2]=0;c[n+4>>2]=b;c[n+28>>2]=a;m=Uj(b<<2)|0;c[n+8>>2]=m;if(!m){Me(3,5472,e);rb(1)}d=b<<4;l=Uj(d)|0;c[n+12>>2]=l;if(!l){Me(3,5472,f);rb(1)}f=Uj(d)|0;k=n+20|0;c[k>>2]=f;if(!f){Me(3,5472,g);rb(1)}d=b<<5;g=Uj(d)|0;c[n+16>>2]=g;if(!g){Me(3,5472,h);rb(1)}h=Uj(d)|0;c[n+24>>2]=h;if(!h){Me(3,5472,j);rb(1)}e=$(a,a)|0;d=e*12|0;e=e<<2;if((b|0)>0){a=0;b:while(1){c[m+(a<<2)>>2]=0;f=a<<2;h=0;while(1){if((h|0)>=4)break;j=Uj(d)|0;g=h+f|0;c[l+(g<<2)>>2]=j;if(!j){d=18;break b}j=Uj(e)|0;c[(c[k>>2]|0)+(g<<2)>>2]=j;if(!j){d=20;break b}else h=h+1|0}a=a+1|0;if((a|0)>=(b|0)){o=n;break a}}if((d|0)==18){Me(3,5472,p);rb(1)}else if((d|0)==20){Me(3,5472,q);rb(1)}}else o=n}else o=0}while(0);i=r;return o|0}function Ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)b=-1;else{b=a+4|0;d=a+8|0;e=a+12|0;f=a+20|0;if((c[b>>2]|0)>0){g=0;do{if(c[(c[d>>2]|0)+(g<<2)>>2]|0)Le(a,g)|0;h=g<<2;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);i=1+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);i=2+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);h=3+h|0;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Vj(a);b=0}return b|0}function De(b,e,f,g,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;var y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+12448|0;A=L+12440|0;z=L+8|0;J=L;I=L+12312|0;K=L+24|0;do{if((f+-2|0)>>>0<3){if((v|0)!=2830){y=v&255;if((Ee(e,2,y,y*3|0,g,j,k,l,m,n,o,K)|0)<0){c[s>>2]=-1;y=-6;break}y=Fe(K,y,s,t,u,v,w)|0;if(!x)break;c[x>>2]=0;c[x+4>>2]=0;break}if((Ee(e,2,14,42,g,j,k,l,m,n,.875,K)|0)<0){c[s>>2]=-1;y=-6;break}c[z>>2]=0;c[z+4>>2]=182;c[z+8>>2]=195;c[z+12>>2]=13;v=a[K+(c[z>>2]|0)>>0]|0;y=(v&255)>0?v:0;v=(v&255)<255?v:-1;H=a[K+(c[z+4>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+8>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+12>>2]|0)>>0]|0;y=((H&255)>(y&255)?H:y)&255;v=((H&255)<(v&255)?H:v)&255;a:do{if((y-v|0)>=30){H=(y+v|0)>>>1;a[A>>0]=(d[K+(c[z>>2]|0)>>0]|0)>>>0>>0&1;a[A+1>>0]=(d[K+(c[z+4>>2]|0)>>0]|0)>>>0>>0&1;a[A+2>>0]=(d[K+(c[z+8>>2]|0)>>0]|0)>>>0>>0&1;a[A+3>>0]=(d[K+(c[z+12>>2]|0)>>0]|0)>>>0>>0&1;v=0;while(1){y=v+1|0;if(((a[A+v>>0]|0)==1?(a[A+((y|0)%4|0)>>0]|0)==1:0)?(a[A+((v+2|0)%4|0)>>0]|0)==0:0){G=v;break}if((y|0)<4)v=y;else{G=y;break}}switch(G|0){case 4:{c[t>>2]=0;h[u>>3]=-1.0;y=-3;v=0;z=0;break a}case 0:{z=119;y=255;v=0;do{D=v+-3|0;B=(v&-2|0)==12;C=v*14|0;A=0;do{if(((A+-3|D)>>>0>=8?(F=A&-2,(A|v)>>>0>=2):0)?!(B&((F|0)==0|(F|0)==12)):0){E=(d[K+(A+C)>>0]|0)-H|0;a[I+z>>0]=E>>>31;E=(E|0)>-1?E:0-E|0;z=z+-1|0;y=(E|0)<(y|0)?E:y}A=A+1|0}while((A|0)!=14);v=v+1|0}while((v|0)!=14);break}case 1:{z=119;y=255;v=0;do{D=v+-3|0;C=v&-2;B=(C|0)==0;C=(C|0)==12;A=13;while(1){if(((A+-3|D)>>>0>=8?(E=(A&-2|0)==12,!(B&E)):0)?!(C&(A>>>0<2|E)):0){F=(d[K+((A*14|0)+v)>>0]|0)-H|0;a[I+z>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;z=z+-1|0;y=(F|0)<(y|0)?F:y}if((A|0)>0)A=A+-1|0;else break}v=v+1|0}while((v|0)!=14);break}case 2:{v=119;y=255;D=13;while(1){B=D+-3|0;C=D>>>0<2|(D&-2|0)==12;A=D*14|0;z=13;while(1){if((z+-3|B)>>>0>=8?!((z|D)>>>0<2|C&(z&-2|0)==12):0){F=(d[K+(z+A)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}if((z|0)>0)z=z+-1|0;else break}if((D|0)>0)D=D+-1|0;else break}break}case 3:{v=119;y=255;D=13;while(1){C=D+-3|0;B=D&-2;A=(B|0)==12;B=(B|0)==0;z=0;do{if(((z+-3|C)>>>0>=8?!(A&z>>>0<2|(z|D)>>>0<2):0)?!(B&(z&-2|0)==12):0){F=(d[K+((z*14|0)+D)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}z=z+1|0}while((z|0)!=14);if((D|0)>0)D=D+-1|0;else break}break}default:y=255}c[t>>2]=G;h[u>>3]=(y|0)>30?1.0:+(y|0)/30.0;y=Ie(2830,0,0,I,J)|0;if((y|0)<0){y=-4;v=0;z=0}else{if(w)c[w>>2]=y;z=J;y=0;v=c[z>>2]|0;z=c[z+4>>2]|0}}else{c[t>>2]=0;h[u>>3]=-1.0;y=-2;v=0;z=0}}while(0);if((y|0)<0){c[s>>2]=-1;break}if((v|0)==-1&(z|0)==-1){c[s>>2]=-1;y=-5;break}c[s>>2]=(v&-32768|0)==0&0==0?v&32767:0;if(!x)y=0;else{y=x;c[y>>2]=v;c[y+4>>2]=z;y=0}}else y=1}while(0);b:do{switch(f|0){case 0:case 1:case 3:case 4:{if(!b){c[p>>2]=-1;v=-1;break b}v=b+28|0;z=c[v>>2]|0;A=z<<2;switch(f|0){case 0:case 3:if((Ee(e,0,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,0,K,c[v>>2]|0,p,q,r)|0;break b}default:if((Ee(e,1,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,1,K,c[v>>2]|0,p,q,r)|0;break b}}}default:v=1}}while(0);if((y|0)!=1){if((v|0)!=1)y=(v&y|0)<0?v:0}else y=v;i=L;return y|0}function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;b=k+8|0;h=k+4|0;d=k;c[h>>2]=a;do{if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;c[d>>2]=a-e;b=($j(3712,3904,d,b)|0)-3712>>2;f=b;b=(c[3712+(b<<2)>>2]|0)+e|0;a:while(1){e=5;while(1){if(e>>>0>=47){e=211;j=8;break}d=c[3520+(e<<2)>>2]|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=106;break a}if((b|0)==($(a,d)|0))break;else e=e+1|0}b:do{if((j|0)==8)while(1){j=0;d=(b>>>0)/(e>>>0)|0;if(d>>>0>>0){j=105;break a}if((b|0)==($(d,e)|0))break b;d=e+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+208|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break;else{e=e+210|0;j=8}}}while(0);e=f+1|0;b=(e|0)==48;e=b?0:e;b=(b&1)+g|0;f=e;g=b;b=(c[3712+(e<<2)>>2]|0)+(b*210|0)|0}if((j|0)==105){c[h>>2]=b;break}else if((j|0)==106){c[h>>2]=b;break}}else b=c[($j(3520,3712,h,b)|0)>>2]|0}while(0);i=k;return b|0}function $j(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a;d=b-a>>2;a:while(1){while(1){if(!d)break a;a=(d|0)/2|0;if((c[e+(a<<2)>>2]|0)>>>0>>0)break;else d=a}e=e+(a+1<<2)|0;d=d+-1-a|0}return e|0}function ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>4294967279)oi(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{g=e+16&-16;f=Kh(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}ik(b|0,d|0,e|0)|0;a[b+e>>0]=0;return}function bk(b){b=b|0;if(a[b>>0]&1)Lh(c[b+8>>2]|0);return}function ck(){}function dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return(D=d,a-c>>>0|0)|0}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<>>0;return(D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function ik(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Xa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function kk(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return(D=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function mk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=dk(j^a,i^b,j,i)|0;g=D;a=f^j;b=e^i;return dk((rk(h,g,dk(f^c,e^d,f,e)|0,D,0)|0)^a,D^b,a,b)|0}function nk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=dk(h^a,g^b,h,g)|0;b=D;rk(a,b,dk(l^d,k^e,l,k)|0,D,j)|0;e=dk(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=D;i=f;return(D=d,e)|0}function ok(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=lk(e,f)|0;a=D;return(D=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rk(a,b,c,d,0)|0}function qk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;rk(a,b,d,e,f)|0;i=g;return(D=c[f+4>>2]|0,c[f>>2]|0)|0}function rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return(D=n,f)|0}else{if(!g){n=0;f=0;return(D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return(D=n,f)|0}}g=(i|0)==0;do{if(h){if(!g){g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return(D=n,f)|0}g=h-1|0;if(g&h){i=(ba(h|0)|0)+33-(ba(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return(D=o,p)|0}else{p=kk(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return(D=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return(D=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return(D=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((kk(i|0)|0)>>>0);return(D=o,p)|0}g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(D=o,p)|0}}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gk(m|0,l|0,-1,-1)|0;d=D;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;dk(k,d,e,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=dk(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=D;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return(D=o,p)|0}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b|0,c|0,d|0)|0}function tk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Rb[a&3](b|0,c|0,d|0,e|0,f|0)}function uk(a,b,c){a=a|0;b=b|0;c=c|0;return+Sb[a&1](b|0,c|0)}function vk(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function wk(a,b){a=a|0;b=b|0;return+Ub[a&3](b|0)}function xk(a){a=a|0;return Vb[a&1]()|0}function yk(a,b){a=a|0;b=b|0;Wb[a&15](b|0)}function zk(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b|0,c|0)}function Ak(a,b){a=a|0;b=b|0;return Yb[a&31](b|0)|0}function Bk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zb[a&1](b|0,c|0,d|0)}function Ck(a){a=a|0;_b[a&0]()}function Dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;$b[a&3](b|0,c|0,+d)}function Ek(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ac[a&1](b|0,c|0,d|0,e|0)|0}function Fk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b|0,c|0)|0}function Hk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dc[a&3](b|0,c|0,d|0,e|0)}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;ca(0);return 0}function Jk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ca(1)}function Kk(a,b){a=a|0;b=b|0;ca(2);return 0.0}function Lk(a,b){a=a|0;b=+b;ca(3)}function Mk(a){a=a|0;ca(4);return 0.0}function Nk(){ca(5);return 0}function Ok(a){a=a|0;ca(6)}function Pk(a,b){a=a|0;b=b|0;ca(7)}function Qk(a){a=a|0;ca(8);return 0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;ca(9)}function Sk(){ca(10)}function Tk(a,b,c){a=a|0;b=b|0;c=+c;ca(11)}function Uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(12);return 0}function Vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ca(13)}function Wk(a,b){a=a|0;b=b|0;ca(14);return 0}function Xk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(15)}var Qb=[Ik,Zh,_h,Qj,Qi,Pi,Ri,Ag,sg,qg,rg,yg,kh,jh,Oi,Mj];var Rb=[Jk,ki,ji,gi];var Sb=[Kk,dh];var Tb=[Lk,Wf,Yf,ag];var Ub=[Mk,Xf,Zf,bg];var Vb=[Nk,Nf];var Wb=[Ok,Mh,Nh,Sh,Vh,Th,Uh,Wh,Xh,Yh,Mf,Xg,Yg,Ij,Jj,Ok];var Xb=[Pk,ig,gg,_f,cg,eg,ng,gh];var Yb=[Qk,Oh,Ni,Pf,Vf,Qf,wg,xg,mg,lg,jg,hg,$f,dg,fg,og,fh,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk];var Zb=[Rk,ch];var _b=[Sk];var $b=[Tk,eh,bh,Tk];var ac=[Uk,mh];var bc=[Vk,ni,mi,li];var cc=[Wk,Df,Sf,Tf,Uf,tg,vg,ug,zg,kg,lh,hh,Wk,Wk,Wk,Wk];var dc=[Xk,ai,bi,di];return{_i64Subtract:dk,_fflush:Yi,_i64Add:gk,_memset:ek,_malloc:Uj,_memcpy:ik,___getTypeName:Ah,_bitshift64Lshr:hk,_free:Vj,___errno_location:qi,_bitshift64Shl:fk,__GLOBAL__sub_I_ARToolKitJS_cpp:Wg,__GLOBAL__sub_I_bind_cpp:Ch,runPostSets:ck,stackAlloc:ec,stackSave:fc,stackRestore:gc,establishStackSpace:hc,setThrew:ic,setTempRet0:lc,getTempRet0:mc,dynCall_iiii:sk,dynCall_viiiii:tk,dynCall_dii:uk,dynCall_vid:vk,dynCall_di:wk,dynCall_i:xk,dynCall_vi:yk,dynCall_vii:zk,dynCall_ii:Ak,dynCall_viii:Bk,dynCall_v:Ck,dynCall_viid:Dk,dynCall_iiiii:Ek,dynCall_viiiiii:Fk,dynCall_iii:Gk,dynCall_viiii:Hk}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var _fflush=Module["_fflush"]=asm["_fflush"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memset=Module["_memset"]=asm["_memset"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _free=Module["_free"]=asm["_free"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",function(){process["exit"](status)});console.log(" ");setTimeout(function(){process["exit"](status)},500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach(function(decorator){output=decorator(output,what)})}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();(function(){"use strict";var ARController=function(width,height,camera){var id;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;camera=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.transform_mat=new Float32Array(16);this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d");this.videoWidth=w;this.videoHeight=h;if(typeof camera==="string"){var self=this;this.cameraParam=new ARCameraParam(camera,function(){self._initialize()},function(err){console.error("ARController: Failed to load ARCameraParam",err)})}else{this.cameraParam=camera;this._initialize()}};ARController.prototype.dispose=function(){artoolkit.teardown(this.id);for(var t in this){this[t]=null}};ARController.prototype.process=function(image){this.detectMarker(image);var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat}})}var multiMarkerCount=this.getMultiMarkerCount();for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;iimage.height||image.nodeName==="VIDEO"&&image.videoWidth>image.videoHeight){this.ctx.drawImage(image,0,0,this.canvas.width,this.canvas.height)}else{this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);var scale=this.canvas.height/this.canvas.width;var scaledHeight=this.canvas.width*scale;var scaledWidth=this.canvas.height*scale;var marginLeft=(this.canvas.width-scaledWidth)/2;this.ctx.drawImage(image,marginLeft,0,scaledWidth,scaledHeight)}var imageData=this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height);var data=imageData.data;if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var initProgress=function(){if(this.videoWidth!==0){onSuccess(video)}};var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(ev){if(readyToPlay){video.play();if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){video.addEventListener("loadedmetadata",initProgress,false);video.src=window.URL.createObjectURL(stream);readyToPlay=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.max}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.max}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:{mandatory:constraints}};if(false){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i=this.parameters.smoothTolerance){exceedsAverageTolerance++}}if(exceedsAverageTolerance>=this.parameters.smoothThreshold){for(i in modelViewMatrix.elements){modelViewMatrix.elements[i]=averages[i]}markerObject3D.matrix.copy(modelViewMatrix);renderReqd=true}}}else{markerObject3D.matrix.copy(modelViewMatrix)}}else if(this.parameters.changeMatrixMode==="cameraTransformMatrix"){markerObject3D.matrix.getInverse(modelViewMatrix)}else{console.assert(false)}markerObject3D.matrix.decompose(markerObject3D.position,markerObject3D.quaternion,markerObject3D.scale);this.dispatchEvent({type:"markerFound"});return renderReqd};ARjs.MarkerControls.prototype.name=function(){var name="";name+=this.parameters.type;if(this.parameters.type==="pattern"){var url=this.parameters.patternUrl;var basename=url.replace(/^.*\//g,"");name+=" - "+basename}else if(this.parameters.type==="barcode"){name+=" - "+this.parameters.barcodeValue}else{console.assert(false,"no .name() implemented for this marker controls")}return name};ARjs.MarkerControls.prototype._initArtoolkit=function(){var _this=this;var artoolkitMarkerId=null;var delayedInitTimerId=setInterval(function(){var arController=_this.context.arController;if(arController===null)return;clearInterval(delayedInitTimerId);delayedInitTimerId=null;postInit()},1e3/50);return;function postInit(){var arController=_this.context.arController;console.assert(arController!==null);if(_this.parameters.type==="pattern"){arController.loadMarker(_this.parameters.patternUrl,function(markerId){artoolkitMarkerId=markerId;arController.trackPatternMarkerId(artoolkitMarkerId,_this.parameters.size)})}else if(_this.parameters.type==="barcode"){artoolkitMarkerId=_this.parameters.barcodeValue;arController.trackBarcodeMarkerId(artoolkitMarkerId,_this.parameters.size)}else if(_this.parameters.type==="unknown"){artoolkitMarkerId=null}else{console.log(false,"invalid marker type",_this.parameters.type)}arController.addEventListener("getMarker",function(event){if(event.data.type===artoolkit.PATTERN_MARKER&&_this.parameters.type==="pattern"){if(artoolkitMarkerId===null)return;if(event.data.marker.idPatt===artoolkitMarkerId)onMarkerFound(event)}else if(event.data.type===artoolkit.BARCODE_MARKER&&_this.parameters.type==="barcode"){if(artoolkitMarkerId===null)return;if(event.data.marker.idMatrix===artoolkitMarkerId)onMarkerFound(event)}else if(event.data.type===artoolkit.UNKNOWN_MARKER&&_this.parameters.type==="unknown"){onMarkerFound(event)}})}function onMarkerFound(event){if(event.data.type===artoolkit.PATTERN_MARKER&&event.data.marker.cfPatt<_this.parameters.minConfidence)return;if(event.data.type===artoolkit.BARCODE_MARKER&&event.data.marker.cfMatt<_this.parameters.minConfidence)return;var modelViewMatrix=(new THREE.Matrix4).fromArray(event.data.matrix);_this.updateWithModelViewMatrix(modelViewMatrix)}};ARjs.MarkerControls.prototype._initAruco=function(){this._arucoPosit=new POS.Posit(this.parameters.size,_this.context.arucoContext.canvas.width)};ARjs.MarkerControls.prototype._initTango=function(){var _this=this;console.log("init tango ArMarkerControls")};var THREEx=THREEx||{};THREEx.ArMarkerHelper=function(markerControls){this.object3d=new THREE.Group;var mesh=new THREE.AxesHelper;this.object3d.add(mesh);var text=markerControls.id;var canvas=document.createElement("canvas");canvas.width=64;canvas.height=64;var context=canvas.getContext("2d");var texture=new THREE.CanvasTexture(canvas);context.font="48px monospace";context.fillStyle="rgba(192,192,255, 0.5)";context.fillRect(0,0,canvas.width,canvas.height);context.fillStyle="darkblue";context.fillText(text,canvas.width/4,3*canvas.height/4);texture.needsUpdate=true;var geometry=new THREE.PlaneGeometry(1,1);var material=new THREE.MeshBasicMaterial({map:texture,transparent:true});var mesh=new THREE.Mesh(geometry,material);mesh.rotation.x=-Math.PI/2;this.object3d.add(mesh)};var THREEx=THREEx||{};THREEx.ArSmoothedControls=function(object3d,parameters){var _this=this;THREEx.ArBaseControls.call(this,object3d);this.object3d.visible=false;this._lastLerpStepAt=null;this._visibleStartedAt=null;this._unvisibleStartedAt=null;parameters=parameters||{};this.parameters={lerpPosition:.8,lerpQuaternion:.2,lerpScale:.7,lerpStepDelay:1/60,minVisibleDelay:0,minUnvisibleDelay:.2};setParameters(parameters);function setParameters(parameters){if(parameters===undefined)return;for(var key in parameters){var newValue=parameters[key];if(newValue===undefined){console.warn("THREEx.ArSmoothedControls: '"+key+"' parameter is undefined.");continue}var currentValue=_this.parameters[key];if(currentValue===undefined){console.warn("THREEx.ArSmoothedControls: '"+key+"' is not a property of this material.");continue}_this.parameters[key]=newValue}}};THREEx.ArSmoothedControls.prototype=Object.create(THREEx.ArBaseControls.prototype);THREEx.ArSmoothedControls.prototype.constructor=THREEx.ArSmoothedControls;THREEx.ArSmoothedControls.prototype.update=function(targetObject3d){var object3d=this.object3d;var parameters=this.parameters;var wasVisible=object3d.visible;var present=performance.now()/1e3;if(targetObject3d.visible===false)this._visibleStartedAt=null;if(targetObject3d.visible===true)this._unvisibleStartedAt=null;if(targetObject3d.visible===true&&this._visibleStartedAt===null)this._visibleStartedAt=present;if(targetObject3d.visible===false&&this._unvisibleStartedAt===null)this._unvisibleStartedAt=present;if(wasVisible===false&&targetObject3d.visible===true){var visibleFor=present-this._visibleStartedAt;if(visibleFor>=this.parameters.minVisibleDelay){object3d.visible=true;snapDirectlyToTarget()}}if(wasVisible===true&&targetObject3d.visible===false){var unvisibleFor=present-this._unvisibleStartedAt;if(unvisibleFor>=this.parameters.minUnvisibleDelay){object3d.visible=false}}if(this._lastLerpStepAt===null){applyOneSlerpStep();this._lastLerpStepAt=present}else{var nStepsToDo=Math.floor((present-this._lastLerpStepAt)/this.parameters.lerpStepDelay);for(var i=0;iwindow.innerHeight){otherElement.style.width=this.domElement.style.width;otherElement.style.height=this.domElement.style.height;otherElement.style.marginLeft=this.domElement.style.marginLeft;otherElement.style.marginTop=this.domElement.style.marginTop}else{otherElement.style.height=this.domElement.style.height;otherElement.style.width=parseInt(otherElement.style.height)*4/3+"px";otherElement.style.marginLeft=(window.innerWidth-parseInt(otherElement.style.width))/2+"px";otherElement.style.marginTop=0}};ARjs.Source.prototype.copySizeTo=function(){console.warn("obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo");this.copyElementSizeTo.apply(this,arguments)};ARjs.Source.prototype.onResize=function(arToolkitContext,renderer,camera){if(arguments.length!==3){console.warn("obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement");return this.onResizeElement.apply(this,arguments)}var trackingBackend=arToolkitContext.parameters.trackingBackend;if(trackingBackend==="artoolkit"){this.onResizeElement();var isAframe=renderer.domElement.dataset.aframeCanvas?true:false;if(isAframe===false){this.copyElementSizeTo(renderer.domElement)}else{}if(arToolkitContext.arController!==null){this.copyElementSizeTo(arToolkitContext.arController.canvas)}}else if(trackingBackend==="aruco"){this.onResizeElement();this.copyElementSizeTo(renderer.domElement);this.copyElementSizeTo(arToolkitContext.arucoContext.canvas)}else console.assert(false,"unhandled trackingBackend "+trackingBackend);if(trackingBackend==="artoolkit"){if(arToolkitContext.arController!==null){camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix())}}else if(trackingBackend==="aruco"){camera.aspect=renderer.domElement.width/renderer.domElement.height;camera.updateProjectionMatrix()}else console.assert(false,"unhandled trackingBackend "+trackingBackend)};var THREEx=THREEx||{};THREEx.ArVideoInWebgl=function(videoTexture){var _this=this;var geometry=new THREE.PlaneGeometry(2,2);var material=new THREE.MeshBasicMaterial({map:videoTexture});var seethruPlane=new THREE.Mesh(geometry,material);this.object3d=seethruPlane;this.update=function(camera){camera.updateMatrixWorld(true);var position=new THREE.Vector3(-0,0,-20);var position=new THREE.Vector3(-0,0,-20);seethruPlane.position.copy(position);camera.localToWorld(seethruPlane.position);camera.matrixWorld.decompose(camera.position,camera.quaternion,camera.scale);seethruPlane.quaternion.copy(camera.quaternion);var fov=THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2;var elementWidth=parseFloat(arToolkitSource.domElement.style.width.replace(/px$/,""),10);var elementHeight=parseFloat(arToolkitSource.domElement.style.height.replace(/px$/,""),10);var aspect=elementWidth/elementHeight;seethruPlane.scale.y=Math.tan(THREE.Math.DEG2RAD*fov/2)*position.length();seethruPlane.scale.x=seethruPlane.scale.y*aspect}};var THREEx=THREEx||{};THREEx.HitTestingPlane=function(sourceElement){this._sourceElement=sourceElement;this._pickingScene=new THREE.Scene;var geometry=new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2);var material=new THREE.MeshBasicMaterial({wireframe:true});this._pickingPlane=new THREE.Mesh(geometry,material);this._pickingScene.add(this._pickingPlane);var fullWidth=parseInt(sourceElement.style.width);var fullHeight=parseInt(sourceElement.style.height);this._pickingCamera=new THREE.PerspectiveCamera(42,fullWidth/fullHeight,.1,30)};THREEx.HitTestingPlane.prototype.update=function(camera,pickingRoot,changeMatrixMode){this.onResize();if(changeMatrixMode==="modelViewMatrix"){var pickingPlane=this._pickingPlane;pickingRoot.parent.updateMatrixWorld();pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld);pickingPlane.matrix.decompose(pickingPlane.position,pickingPlane.quaternion,pickingPlane.scale)}else if(changeMatrixMode==="cameraTransformMatrix"){var pickingCamera=this._pickingCamera;camera.updateMatrixWorld();pickingCamera.matrix.copy(camera.matrixWorld);pickingCamera.matrix.decompose(pickingCamera.position,pickingCamera.quaternion,pickingCamera.scale)}else console.assert(false)};THREEx.HitTestingPlane.prototype.onResize=function(){var sourceElement=this._sourceElement;var pickingCamera=this._pickingCamera;var fullWidth=parseInt(sourceElement.style.width);var fullHeight=parseInt(sourceElement.style.height);pickingCamera.aspect=fullWidth/fullHeight;pickingCamera.updateProjectionMatrix()};THREEx.HitTestingPlane.prototype.test=function(mouseX,mouseY){mouseX=(mouseX-.5)*2;mouseY=-(mouseY-.5)*2;this._pickingScene.updateMatrixWorld(true);var raycaster=new THREE.Raycaster;var mouseVector3=new THREE.Vector3(mouseX,mouseY,1);raycaster.setFromCamera(mouseVector3,this._pickingCamera);var intersects=raycaster.intersectObjects([this._pickingPlane]);if(intersects.length===0)return null;var position=this._pickingPlane.worldToLocal(intersects[0].point.clone());var quaternion=new THREE.Quaternion;var scale=new THREE.Vector3(1,1,1);return{position:position,quaternion:quaternion,scale:scale}};THREEx.HitTestingPlane.prototype.renderDebug=function(renderer){renderer.render(this._pickingScene,this._pickingCamera)};var ARjs=ARjs||{};ARjs.Anchor=function(arSession,markerParameters){var _this=this;var arContext=arSession.arContext;var scene=arSession.parameters.scene;var camera=arSession.parameters.camera;this.arSession=arSession;this.parameters=markerParameters;console.log("ARjs.Anchor -","changeMatrixMode:",this.parameters.changeMatrixMode,"/ markersAreaEnabled:",markerParameters.markersAreaEnabled);var markerRoot=new THREE.Group;scene.add(markerRoot);if(markerParameters.changeMatrixMode==="modelViewMatrix"){var controlledObject=markerRoot}else if(markerParameters.changeMatrixMode==="cameraTransformMatrix"){var controlledObject=camera}else console.assert(false);if(markerParameters.markersAreaEnabled===false){var markerControls=new THREEx.ArMarkerControls(arContext,controlledObject,markerParameters);this.controls=markerControls}else{console.assert(arContext.parameters.trackingBackend==="artoolkit"||arContext.parameters.trackingBackend==="aruco");if(location.hash.substring(1).startsWith("markers-page-resolution=")===true){var markerPageResolution=location.hash.substring(1);var matches=markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/);console.assert(matches.length===3);var resolutionW=parseInt(matches[1]);var resolutionH=parseInt(matches[2]);var arContext=arSession.arContext;ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend,resolutionW,resolutionH)}if(localStorage.getItem("ARjsMultiMarkerFile")===null){ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend)}console.assert(localStorage.getItem("ARjsMultiMarkerFile")!==null);var multiMarkerFile=localStorage.getItem("ARjsMultiMarkerFile");if(markerParameters.changeMatrixMode==="modelViewMatrix"){var parent3D=scene}else if(markerParameters.changeMatrixMode==="cameraTransformMatrix"){var parent3D=camera}else console.assert(false);var multiMarkerControls=ARjs.MarkersAreaControls.fromJSON(arContext,parent3D,controlledObject,multiMarkerFile);this.controls=multiMarkerControls;multiMarkerControls.parameters.changeMatrixMode=markerParameters.changeMatrixMode;var markerHelpers=[];multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){var markerHelper=new THREEx.ArMarkerHelper(subMarkerControls);markerHelper.object3d.visible=false;subMarkerControls.object3d.add(markerHelper.object3d);markerHelpers.push(markerHelper)});this.markersArea={};this.markersArea.setSubMarkersVisibility=function(visible){markerHelpers.forEach(function(markerHelper){markerHelper.object3d.visible=visible})}}this.object3d=new THREE.Group;var shouldBeSmoothed=true;if(shouldBeSmoothed===true){var smoothedRoot=new THREE.Group;scene.add(smoothedRoot);var smoothedControls=new THREEx.ArSmoothedControls(smoothedRoot);smoothedRoot.add(this.object3d)}else{markerRoot.add(this.object3d)}this.update=function(){_this.object3d.visible=_this.object3d.parent.visible;if(smoothedControls!==undefined){if(multiMarkerControls!==undefined){multiMarkerControls.updateSmoothedControls(smoothedControls)}smoothedControls.update(markerRoot)}}};var ARjs=ARjs||{};ARjs.SessionDebugUI=function(arSession){var trackingBackend=arSession.arContext.parameters.trackingBackend;this.domElement=document.createElement("div");this.domElement.style.color="rgba(0,0,0,0.9)";this.domElement.style.backgroundColor="rgba(127,127,127,0.5)";this.domElement.style.display="block";this.domElement.style.padding="0.5em";this.domElement.style.position="fixed";this.domElement.style.left="5px";this.domElement.style.bottom="10px";this.domElement.style.textAlign="right";var domElement=document.createElement("span");domElement.style.display="block";domElement.innerHTML="trackingBackend : "+trackingBackend;this.domElement.appendChild(domElement)};ARjs.SessionDebugUI.AugmentedWebsiteURL="https://webxr.io/augmented-website";ARjs.AnchorDebugUI=function(arAnchor){var arSession=arAnchor.arSession;var trackingBackend=arSession.arContext.parameters.trackingBackend;this.domElement=document.createElement("div");this.domElement.style.color="rgba(0,0,0,0.9)";this.domElement.style.backgroundColor="rgba(127,127,127,0.5)";this.domElement.style.display="inline-block";this.domElement.style.padding="0.5em";this.domElement.style.margin="0.5em";this.domElement.style.textAlign="left";var domElement=document.createElement("span");domElement.style.display="block";domElement.style.padding="0.5em";domElement.style.color="rgba(0,0,0,0.9)";domElement.style.backgroundColor="rgba(127,127,127,0.5)";domElement.style.position="fixed";domElement.style.left="5px";domElement.style.bottom="40px";this.domElement.appendChild(domElement);domElement.innerHTML="markersAreaEnabled :"+arAnchor.parameters.markersAreaEnabled;if(arAnchor.parameters.markersAreaEnabled){var domElement=document.createElement("button");domElement.style.display="block";this.domElement.style.padding="0.5em";this.domElement.style.position="fixed";this.domElement.style.textAlign="left";this.domElement.appendChild(domElement);domElement.id="buttonToggleMarkerHelpers";domElement.innerHTML="toggle-marker-helper";domElement.href="javascript:void(0)";var subMarkerHelpersVisible=false;domElement.addEventListener("click",function(){subMarkerHelpersVisible=subMarkerHelpersVisible?false:true;arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible)})}if(arAnchor.parameters.markersAreaEnabled){var domElement=document.createElement("button");domElement.style.display="block";this.domElement.appendChild(domElement);domElement.id="buttonMarkersAreaLearner";domElement.innerHTML="Learn-new-marker-area";domElement.href="javascript:void(0)";domElement.addEventListener("click",function(){if(ARjs.AnchorDebugUI.MarkersAreaLearnerURL!==null){var learnerURL=ARjs.AnchorDebugUI.MarkersAreaLearnerURL}else{var learnerURL=ARjs.Context.baseURL+"examples/multi-markers/examples/learner.html"}ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL,trackingBackend)})}if(arAnchor.parameters.markersAreaEnabled){var domElement=document.createElement("button");domElement.style.display="block";this.domElement.appendChild(domElement);domElement.id="buttonMarkersAreaReset";domElement.innerHTML="Reset-marker-area";domElement.href="javascript:void(0)";domElement.addEventListener("click",function(){ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend);location.reload()})}};ARjs.AnchorDebugUI.MarkersAreaLearnerURL=null;var ARjs=ARjs||{};ARjs.HitTesting=function(arSession){var _this=this;var arContext=arSession.arContext;var trackingBackend=arContext.parameters.trackingBackend;this.enabled=true;this._arSession=arSession;this._hitTestingPlane=null;_this._hitTestingPlane=new THREEx.HitTestingPlane(arSession.arSource.domElement)};ARjs.HitTesting.prototype.update=function(camera,pickingRoot,changeMatrixMode){if(this.enabled===false)return;if(this._hitTestingPlane!==null){this._hitTestingPlane.update(camera,pickingRoot,changeMatrixMode)}else console.assert(false)};ARjs.HitTesting.prototype.testDomEvent=function(domEvent){var trackingBackend=this._arSession.arContext.parameters.trackingBackend;var arSource=this._arSession.arSource;if(this.enabled===false)return[];var mouseX=domEvent.clientX/arSource.domElementWidth();var mouseY=domEvent.clientY/arSource.domElementHeight();return this.test(mouseX,mouseY)};ARjs.HitTesting.prototype.test=function(mouseX,mouseY){var arContext=this._arSession.arContext;var trackingBackend=arContext.parameters.trackingBackend;var hitTestResults=[];if(this.enabled===false)return[];var result=this._hitTestingPlane.test(mouseX,mouseY);if(result===null)return hitTestResults;var hitTestResult=new ARjs.HitTesting.Result(result.position,result.quaternion,result.scale);hitTestResults.push(hitTestResult);return hitTestResults};ARjs.HitTesting.Result=function(position,quaternion,scale){this.position=position;this.quaternion=quaternion;this.scale=scale};ARjs.HitTesting.Result.prototype.apply=function(object3d){object3d.position.copy(this.position);object3d.quaternion.copy(this.quaternion);object3d.scale.copy(this.scale);object3d.updateMatrix()};ARjs.HitTesting.Result.prototype.applyPosition=function(object3d){object3d.position.copy(this.position);object3d.updateMatrix();return this};ARjs.HitTesting.Result.prototype.applyQuaternion=function(object3d){object3d.quaternion.copy(this.quaternion);object3d.updateMatrix();return this};var ARjs=ARjs||{};ARjs.Session=function(parameters){var _this=this;this.parameters={renderer:null,camera:null,scene:null,sourceParameters:{},contextParameters:{}};setParameters(parameters);function setParameters(parameters){if(parameters===undefined)return;for(var key in parameters){var newValue=parameters[key];if(newValue===undefined){console.warn("THREEx.Session: '"+key+"' parameter is undefined.");continue}var currentValue=_this.parameters[key];if(currentValue===undefined){console.warn("THREEx.Session: '"+key+"' is not a property of this material.");continue}_this.parameters[key]=newValue}}console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer);console.assert(this.parameters.camera instanceof THREE.Camera);console.assert(this.parameters.scene instanceof THREE.Scene);Object.defineProperty(this,"renderer",{get:function(){console.warn("use .parameters.renderer renderer");return this.parameters.renderer}});Object.defineProperty(this,"camera",{get:function(){console.warn("use .parameters.camera instead");return this.parameters.camera}});Object.defineProperty(this,"scene",{get:function(){console.warn("use .parameters.scene instead");return this.parameters.scene}});console.log("AR.js",ARjs.Context.REVISION,"- trackingBackend:",parameters.contextParameters.trackingBackend);var arSource=_this.arSource=new ARjs.Source(parameters.sourceParameters);arSource.init(function onReady(){arSource.onResize(arContext,_this.parameters.renderer,_this.parameters.camera)});window.addEventListener("resize",function(){arSource.onResize(arContext,_this.parameters.renderer,_this.parameters.camera)});var arContext=_this.arContext=new ARjs.Context(parameters.contextParameters);_this.arContext.init();arContext.addEventListener("initialized",function(event){arSource.onResize(arContext,_this.parameters.renderer,_this.parameters.camera)});this.update=function(){if(arSource.ready===false)return;arContext.update(arSource.domElement)}};ARjs.Session.prototype.onResize=function(){this.arSource.onResize(this.arContext,this.parameters.renderer,this.parameters.camera)};var ARjs=ARjs||{};ARjs.Utils={};ARjs.Utils.createDefaultCamera=function(trackingMethod){var trackingBackend=this.parseTrackingMethod(trackingMethod).trackingBackend;if(trackingBackend==="artoolkit"){var camera=new THREE.Camera}else if(trackingBackend==="aruco"){var camera=new THREE.PerspectiveCamera(42,window.innerWidth/window.innerHeight,.01,100)}else console.assert(false,"unknown trackingBackend: "+trackingBackend);return camera};ARjs.Utils.parseTrackingMethod=function(trackingMethod){if(trackingMethod==="best"){trackingMethod="area-artoolkit"}if(trackingMethod.startsWith("area-")){return{trackingBackend:trackingMethod.replace("area-",""),markersAreaEnabled:true}}else{return{trackingBackend:trackingMethod,markersAreaEnabled:false}}};var ARjs=ARjs||{};var THREEx=THREEx||{};ARjs.MarkersAreaControls=THREEx.ArMultiMarkerControls=function(arToolkitContext,object3d,parameters){var _this=this;THREEx.ArBaseControls.call(this,object3d);if(arguments.length>3)console.assert("wrong api for",THREEx.ArMultiMarkerControls);this.parameters={subMarkersControls:parameters.subMarkersControls,subMarkerPoses:parameters.subMarkerPoses,changeMatrixMode:parameters.changeMatrixMode!==undefined?parameters.changeMatrixMode:"modelViewMatrix"};this.object3d.visible=false;this.subMarkersControls=this.parameters.subMarkersControls;this.subMarkerPoses=this.parameters.subMarkerPoses;arToolkitContext.addEventListener("sourceProcessed",function(){_this._onSourceProcessed()})};ARjs.MarkersAreaControls.prototype=Object.create(THREEx.ArBaseControls.prototype);ARjs.MarkersAreaControls.prototype.constructor=ARjs.MarkersAreaControls;ARjs.MarkersAreaControls.prototype._onSourceProcessed=function(){var _this=this;var stats={count:0,position:{sum:new THREE.Vector3(0,0,0),average:new THREE.Vector3(0,0,0)},quaternion:{sum:new THREE.Quaternion(0,0,0,0),average:new THREE.Quaternion(0,0,0,0)},scale:{sum:new THREE.Vector3(0,0,0),average:new THREE.Vector3(0,0,0)}};var firstQuaternion=_this.parameters.subMarkersControls[0].object3d.quaternion;this.parameters.subMarkersControls.forEach(function(markerControls,markerIndex){var markerObject3d=markerControls.object3d;if(markerObject3d.visible===false)return;var matrix=markerObject3d.matrix.clone();var markerPose=_this.parameters.subMarkerPoses[markerIndex];matrix.multiply((new THREE.Matrix4).getInverse(markerPose));var position=new THREE.Vector3;var quaternion=new THREE.Quaternion;var scale=new THREE.Vector3;matrix.decompose(position,quaternion,scale);stats.count++;ARjs.MarkersAreaControls.averageVector3(stats.position.sum,position,stats.count,stats.position.average);ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum,quaternion,firstQuaternion,stats.count,stats.quaternion.average);ARjs.MarkersAreaControls.averageVector3(stats.scale.sum,scale,stats.count,stats.scale.average)});if(stats.count>0){_this.object3d.visible=true}else{_this.object3d.visible=false}if(stats.count>0){var modelViewMatrix=new THREE.Matrix4;modelViewMatrix.compose(stats.position.average,stats.quaternion.average,stats.scale.average);if(this.parameters.changeMatrixMode==="modelViewMatrix"){_this.object3d.matrix.copy(modelViewMatrix)}else if(this.parameters.changeMatrixMode==="cameraTransformMatrix"){_this.object3d.matrix.getInverse(modelViewMatrix)}else{console.assert(false)}_this.object3d.matrix.decompose(_this.object3d.position,_this.object3d.quaternion,_this.object3d.scale)}};ARjs.MarkersAreaControls.averageQuaternion=function(quaternionSum,newQuaternion,firstQuaternion,count,quaternionAverage){quaternionAverage=quaternionAverage||new THREE.Quaternion;console.assert(firstQuaternion instanceof THREE.Quaternion===true);if(newQuaternion.dot(firstQuaternion)>0){newQuaternion=new THREE.Quaternion(-newQuaternion.x,-newQuaternion.y,-newQuaternion.z,-newQuaternion.w)}quaternionSum.x+=newQuaternion.x;quaternionSum.y+=newQuaternion.y;quaternionSum.z+=newQuaternion.z;quaternionSum.w+=newQuaternion.w;quaternionAverage.x=quaternionSum.x/count;quaternionAverage.y=quaternionSum.y/count;quaternionAverage.z=quaternionSum.z/count;quaternionAverage.w=quaternionSum.w/count;quaternionAverage.normalize();return quaternionAverage};ARjs.MarkersAreaControls.averageVector3=function(vector3Sum,vector3,count,vector3Average){vector3Average=vector3Average||new THREE.Vector3;vector3Sum.x+=vector3.x;vector3Sum.y+=vector3.y;vector3Sum.z+=vector3.z;vector3Average.x=vector3Sum.x/count;vector3Average.y=vector3Sum.y/count;vector3Average.z=vector3Sum.z/count;return vector3Average};ARjs.MarkersAreaControls.computeCenter=function(jsonData){var multiMarkerFile=JSON.parse(jsonData);var stats={count:0,position:{sum:new THREE.Vector3(0,0,0),average:new THREE.Vector3(0,0,0)},quaternion:{sum:new THREE.Quaternion(0,0,0,0),average:new THREE.Quaternion(0,0,0,0)},scale:{sum:new THREE.Vector3(0,0,0),average:new THREE.Vector3(0,0,0)}};var firstQuaternion=new THREE.Quaternion;multiMarkerFile.subMarkersControls.forEach(function(item){var poseMatrix=(new THREE.Matrix4).fromArray(item.poseMatrix);var position=new THREE.Vector3;var quaternion=new THREE.Quaternion;var scale=new THREE.Vector3;poseMatrix.decompose(position,quaternion,scale);stats.count++;ARjs.MarkersAreaControls.averageVector3(stats.position.sum,position,stats.count,stats.position.average);ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum,quaternion,firstQuaternion,stats.count,stats.quaternion.average);ARjs.MarkersAreaControls.averageVector3(stats.scale.sum,scale,stats.count,stats.scale.average)});var averageMatrix=new THREE.Matrix4;averageMatrix.compose(stats.position.average,stats.quaternion.average,stats.scale.average);return averageMatrix};ARjs.MarkersAreaControls.computeBoundingBox=function(jsonData){var multiMarkerFile=JSON.parse(jsonData);var boundingBox=new THREE.Box3;multiMarkerFile.subMarkersControls.forEach(function(item){var poseMatrix=(new THREE.Matrix4).fromArray(item.poseMatrix);var position=new THREE.Vector3;var quaternion=new THREE.Quaternion;var scale=new THREE.Vector3;poseMatrix.decompose(position,quaternion,scale);boundingBox.expandByPoint(position)});return boundingBox};ARjs.MarkersAreaControls.prototype.updateSmoothedControls=function(smoothedControls,lerpsValues){if(lerpsValues===undefined){lerpsValues=[[.3+.1,.1,.3],[.4+.1,.1,.4],[.4+.1,.2,.5],[.5+.1,.2,.7],[.5+.1,.2,.7]]}var nVisible=0;this.parameters.subMarkersControls.forEach(function(markerControls,markerIndex){var markerObject3d=markerControls.object3d;if(markerObject3d.visible===true)nVisible++});if(lerpsValues[nVisible-1]!==undefined){var lerpValues=lerpsValues[nVisible-1]}else{var lerpValues=lerpsValues[lerpsValues.length-1]}smoothedControls.parameters.lerpPosition=lerpValues[0];smoothedControls.parameters.lerpQuaternion=lerpValues[1];smoothedControls.parameters.lerpScale=lerpValues[2]};ARjs.MarkersAreaControls.fromJSON=function(arToolkitContext,parent3D,markerRoot,jsonData,parameters){var multiMarkerFile=JSON.parse(jsonData);var subMarkersControls=[];var subMarkerPoses=[];parameters=parameters||{};multiMarkerFile.subMarkersControls.forEach(function(item){var markerRoot=new THREE.Object3D;parent3D.add(markerRoot);var subMarkerControls=new THREEx.ArMarkerControls(arToolkitContext,markerRoot,item.parameters);subMarkersControls.push(subMarkerControls);subMarkerPoses.push((new THREE.Matrix4).fromArray(item.poseMatrix))});parameters.subMarkersControls=subMarkersControls;parameters.subMarkerPoses=subMarkerPoses;var multiMarkerControls=new THREEx.ArMultiMarkerControls(arToolkitContext,markerRoot,parameters);return multiMarkerControls};var ARjs=ARjs||{};var THREEx=THREEx||{};ARjs.MarkersAreaLearning=THREEx.ArMultiMakersLearning=function(arToolkitContext,subMarkersControls){var _this=this;this._arToolkitContext=arToolkitContext;this.subMarkersControls=subMarkersControls;this.enabled=true;arToolkitContext.addEventListener("sourceProcessed",function(){_this._onSourceProcessed()})};ARjs.MarkersAreaLearning.prototype._onSourceProcessed=function(){var originQuaternion=this.subMarkersControls[0].object3d.quaternion;if(this.enabled===false)return;var visibleMarkerControls=this.subMarkersControls.filter(function(markerControls){return markerControls.object3d.visible===true});var count=Object.keys(visibleMarkerControls).length;var positionDelta=new THREE.Vector3;var quaternionDelta=new THREE.Quaternion;var scaleDelta=new THREE.Vector3;var tmpMatrix=new THREE.Matrix4;for(var i=0;i=1?true:false;if(isLearned===true)return;var otherSubControlsID=_this._getLearnedCoupleStats(subMarkerControls);if(otherSubControlsID===null){return}var otherSubControls=_this._getSubMarkerControlsByID(otherSubControlsID);var seenCoupleStats=subMarkerControls.object3d.userData.seenCouples[otherSubControlsID];var averageMatrix=new THREE.Matrix4;averageMatrix.compose(seenCoupleStats.position.average,seenCoupleStats.quaternion.average,seenCoupleStats.scale.average);var otherAverageMatrix=otherSubControls.object3d.userData.result.averageMatrix;var matrix=(new THREE.Matrix4).getInverse(otherAverageMatrix).multiply(averageMatrix);matrix=(new THREE.Matrix4).getInverse(matrix);console.assert(subMarkerControls.object3d.userData.result===undefined);subMarkerControls.object3d.userData.result={averageMatrix:matrix,confidenceFactor:1};resultChanged=true})}while(resultChanged===true)};ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats=function(subMarkerControls){if(subMarkerControls.object3d.userData.seenCouples===undefined)return null;var seenCouples=subMarkerControls.object3d.userData.seenCouples;var coupleControlsIDs=Object.keys(seenCouples).map(Number);for(var i=0;i=1?true:false;if(isLearned===false)continue;return otherSubControlsID}return null};ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID=function(controlsID){for(var i=0;iresolutionH){var markerImageSize=.4*resolutionH}else if(resolutionW Safari > Motion & Orientation Access.")},750);window.addEventListener(eventName,function(){clearTimeout(timeout)})}}window.addEventListener(eventName,this._onDeviceOrientation,false);this._watchPositionId=this._initWatchGPS(function(position){if(this.data.simulateLatitude!==0&&this.data.simulateLongitude!==0){localPosition=Object.assign({},position.coords);localPosition.longitude=this.data.simulateLongitude;localPosition.latitude=this.data.simulateLatitude;localPosition.altitude=this.data.simulateAltitude;this.currentCoords=localPosition}else{this.currentCoords=position.coords}this._updatePosition()}.bind(this))},tick:function(){if(this.heading===null){return}this._updateRotation()},remove:function(){if(this._watchPositionId){navigator.geolocation.clearWatch(this._watchPositionId)}this._watchPositionId=null;var eventName=this._getDeviceOrientationEventName();window.removeEventListener(eventName,this._onDeviceOrientation,false)},_getDeviceOrientationEventName:function(){if("ondeviceorientationabsolute"in window){var eventName="deviceorientationabsolute"}else if("ondeviceorientation"in window){var eventName="deviceorientation"}else{var eventName="";console.error("Compass not supported")}return eventName},_initWatchGPS:function(onSuccess,onError){if(!onError){onError=function(err){console.warn("ERROR("+err.code+"): "+err.message);if(err.code===1){alert("Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.");return}if(err.code===3){alert("Cannot retrieve GPS position. Signal is absent.");return}}}if("geolocation"in navigator===false){onError({code:0,message:"Geolocation is not supported by your browser"});return Promise.resolve()}return navigator.geolocation.watchPosition(onSuccess,onError,{enableHighAccuracy:true,maximumAge:0,timeout:27e3})},_updatePosition:function(){if(this.currentCoords.accuracy>this.data.positionMinAccuracy){if(this.data.alert&&!document.getElementById("alert-popup")){var popup=document.createElement("div");popup.innerHTML="GPS signal is very poor. Try move outdoor or to an area with a better signal.";popup.setAttribute("id","alert-popup");document.body.appendChild(popup)}return}var alertPopup=document.getElementById("alert-popup");if(this.currentCoords.accuracy<=this.data.positionMinAccuracy&&alertPopup){document.body.removeChild(alertPopup)}if(!this.originCoords){this.originCoords=this.currentCoords;this._setPosition();var loader=document.querySelector(".arjs-loader");if(loader){document.body.removeChild(loader)}window.dispatchEvent(new CustomEvent("gps-camera-origin-coord-set"));console.debug("gps-camera-origin-coord-set")}else{this._setPosition()}},_setPosition:function(){var position=this.el.getAttribute("position");var dstCoords={longitude:this.currentCoords.longitude,latitude:this.originCoords.latitude};position.x=this.computeDistanceMeters(this.originCoords,dstCoords);position.x*=this.currentCoords.longitude>this.originCoords.longitude?1:-1;var dstCoords={longitude:this.originCoords.longitude,latitude:this.currentCoords.latitude};position.z=this.computeDistanceMeters(this.originCoords,dstCoords);position.z*=this.currentCoords.latitude>this.originCoords.latitude?-1:1;this.el.setAttribute("position",position);window.dispatchEvent(new CustomEvent("gps-camera-update-position",{detail:{position:this.currentCoords,origin:this.originCoords}}))},computeDistanceMeters:function(src,dest,isPlace){var dlongitude=THREE.Math.degToRad(dest.longitude-src.longitude);var dlatitude=THREE.Math.degToRad(dest.latitude-src.latitude);var a=Math.sin(dlatitude/2)*Math.sin(dlatitude/2)+Math.cos(THREE.Math.degToRad(src.latitude))*Math.cos(THREE.Math.degToRad(dest.latitude))*(Math.sin(dlongitude/2)*Math.sin(dlongitude/2));var angle=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var distance=angle*6378160;if(isPlace&&this.data.minDistance&&this.data.minDistance>0&&distancethis._cameraGps.originCoords.longitude?1:-1;var dstCoords={longitude:this._cameraGps.originCoords.longitude,latitude:this.data.latitude};position.z=this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords,dstCoords,true);if(position.z===Number.MAX_SAFE_INTEGER){hideEntity=true}position.z*=this.data.latitude>this._cameraGps.originCoords.latitude?-1:1;if(position.y!==0){position.y=position.y-this._cameraGps.originCoords.altitude}if(hideEntity){this.el.setAttribute("visible",false)}else{this.el.setAttribute("visible",true)}this.el.setAttribute("position",position)},setDebugData:function(element){var elements=document.querySelectorAll(".debug-distance");elements.forEach(function(el){var distance=formatDistance(this._positionXDebug);if(element.getAttribute("value")==el.getAttribute("value")){el.innerHTML=el.getAttribute("value")+": "+distance+"far"}})}});function formatDistance(distance){distance=distance.toFixed(0);if(distance>=1e3){return distance/1e3+" kilometers"}return distance+" meters"}AFRAME.registerSystem("arjs",{schema:{trackingMethod:{type:"string",default:"best"},debugUIEnabled:{type:"boolean",default:true},areaLearningButton:{type:"boolean",default:true},performanceProfile:{type:"string",default:"default"},debug:{type:"boolean",default:false},detectionMode:{type:"string",default:""},matrixCodeType:{type:"string",default:""},patternRatio:{type:"number",default:-1},labelingMode:{type:"string",default:""},cameraParametersUrl:{type:"string",default:""},maxDetectionRate:{type:"number",default:-1},sourceType:{type:"string",default:""},sourceUrl:{type:"string",default:""},sourceWidth:{type:"number",default:-1},sourceHeight:{type:"number",default:-1},deviceId:{type:"string",default:""},displayWidth:{type:"number",default:-1},displayHeight:{type:"number",default:-1},canvasWidth:{type:"number",default:-1},canvasHeight:{type:"number",default:-1}},init:function(){var _this=this;var arProfile=this._arProfile=(new ARjs.Profile).trackingMethod(this.data.trackingMethod).performance(this.data.performanceProfile).defaultMarker();if(this.data.debug!==false)arProfile.contextParameters.debug=this.data.debug;if(this.data.detectionMode!=="")arProfile.contextParameters.detectionMode=this.data.detectionMode;if(this.data.matrixCodeType!=="")arProfile.contextParameters.matrixCodeType=this.data.matrixCodeType;if(this.data.patternRatio!==-1)arProfile.contextParameters.patternRatio=this.data.patternRatio;if(this.data.labelingMode!=="")arProfile.contextParameters.labelingMode=this.data.labelingMode;if(this.data.cameraParametersUrl!=="")arProfile.contextParameters.cameraParametersUrl=this.data.cameraParametersUrl;if(this.data.maxDetectionRate!==-1)arProfile.contextParameters.maxDetectionRate=this.data.maxDetectionRate;if(this.data.canvasWidth!==-1)arProfile.contextParameters.canvasWidth=this.data.canvasWidth;if(this.data.canvasHeight!==-1)arProfile.contextParameters.canvasHeight=this.data.canvasHeight;if(this.data.sourceType!=="")arProfile.sourceParameters.sourceType=this.data.sourceType;if(this.data.sourceUrl!=="")arProfile.sourceParameters.sourceUrl=this.data.sourceUrl;if(this.data.sourceWidth!==-1)arProfile.sourceParameters.sourceWidth=this.data.sourceWidth;if(this.data.sourceHeight!==-1)arProfile.sourceParameters.sourceHeight=this.data.sourceHeight;if(this.data.deviceId!=="")arProfile.sourceParameters.deviceId=this.data.deviceId;if(this.data.displayWidth!==-1)arProfile.sourceParameters.displayWidth=this.data.displayWidth;if(this.data.displayHeight!==-1)arProfile.sourceParameters.displayHeight=this.data.displayHeight;arProfile.checkIfValid();this._arSession=null;_this.isReady=false;_this.needsOverride=true;this.el.sceneEl.addEventListener("renderstart",function(){var scene=_this.el.sceneEl.object3D;var camera=_this.el.sceneEl.camera;var renderer=_this.el.sceneEl.renderer;var arSession=_this._arSession=new ARjs.Session({scene:scene,renderer:renderer,camera:camera,sourceParameters:arProfile.sourceParameters,contextParameters:arProfile.contextParameters});_this.isReady=true;window.addEventListener("resize",onResize);function onResize(){var arSource=_this._arSession.arSource;if(arProfile.contextParameters.trackingBackend!=="tango"){arSource.copyElementSizeTo(document.body)}var buttonElement=document.querySelector(".a-enter-vr");if(buttonElement){buttonElement.style.position="fixed"}}if(_this.data.debugUIEnabled)initDebugUI();function initDebugUI(){var containerElement=document.querySelector("#arjsDebugUIContainer");if(containerElement===null){containerElement=document.createElement("div");containerElement.id="arjsDebugUIContainer";containerElement.setAttribute("style","position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1;color: grey;");document.body.appendChild(containerElement)}var sessionDebugUI=new ARjs.SessionDebugUI(arSession);containerElement.appendChild(sessionDebugUI.domElement)}});var startedAt=Date.now();var timerId=setInterval(function(){if(Date.now()-startedAt>1e4*1e3){clearInterval(timerId);return}window.dispatchEvent(new Event("resize"))},1e3/30)},tick:function(now,delta){var _this=this;if(this.isReady===false)return;var arSession=this._arSession;this._arSession.update();this._arSession.onResize()}}); diff --git a/demo/ar/location-base/build/aframe-extras.loaders.min.js b/demo/ar/location-base/build/aframe-extras.loaders.min.js new file mode 100644 index 0000000..71b9158 --- /dev/null +++ b/demo/ar/location-base/build/aframe-extras.loaders.min.js @@ -0,0 +1 @@ +!function e(t,r,a){function n(o,s){if(!r[o]){if(!t[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(i)return i(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[o]={exports:{}};t[o][0].call(u.exports,function(e){var r=t[o][1][e];return n(r||e)},u,u.exports,e,t,r,a)}return r[o].exports}for(var i="function"==typeof require&&require,o=0;o0&&t.push(new THREE.VectorKeyframeTrack(a+".position",n,i));o.length>0&&t.push(new THREE.QuaternionKeyframeTrack(a+".quaternion",n,o));s.length>0&&t.push(new THREE.VectorKeyframeTrack(a+".scale",n,s))}(function(e,t,r){var a,n,i,o,s,c,l=ce.nodes[e.id],u=q(l.id),d=l.transforms[e.sid],f=l.matrix.clone().transpose(),p={};switch(d){case"matrix":for(i=0,o=t.array.length;i=0;){var a=e[t];if(null!==a.value[r])return a;t--}return null}(e,n,t),a=function(e,t,r){for(;t>>0));switch(r=r.toLowerCase()){case"tga":t=ne;break;default:t=ae}return t}(r);if(void 0!==n){var i=n.load(r),o=e.extra;if(void 0!==o&&void 0!==o.technique&&!1===c(o.technique)){var s=o.technique;i.wrapS=s.wrapU?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,i.wrapT=s.wrapV?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,i.offset.set(s.offsetU||0,s.offsetV||0),i.repeat.set(s.repeatU||1,s.repeatV||1)}else i.wrapS=THREE.RepeatWrapping,i.wrapT=THREE.RepeatWrapping;return i}return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",r),null}return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",e.id),null}var r,a=function(e){return d(ce.effects[e],T)}(e.url),n=a.profile.technique,i=a.profile.extra;switch(n.type){case"phong":case"blinn":r=new THREE.MeshPhongMaterial;break;case"lambert":r=new THREE.MeshLambertMaterial;break;default:r=new THREE.MeshBasicMaterial}r.name=e.name;var o=n.parameters;for(var s in o){var l=o[s];switch(s){case"diffuse":l.color&&r.color.fromArray(l.color),l.texture&&(r.map=t(l.texture));break;case"specular":l.color&&r.specular&&r.specular.fromArray(l.color),l.texture&&(r.specularMap=t(l.texture));break;case"bump":l.texture&&(r.normalMap=t(l.texture));break;case"ambient":l.texture&&(r.lightMap=t(l.texture));break;case"shininess":l.float&&r.shininess&&(r.shininess=l.float);break;case"emission":l.color&&r.emissive&&r.emissive.fromArray(l.color),l.texture&&(r.emissiveMap=t(l.texture))}}var u=o.transparent,f=o.transparency;if(void 0===f&&u&&(f={float:1}),void 0===u&&f&&(u={opaque:"A_ONE",data:{color:[1,1,1,1]}}),u&&f)if(u.data.texture)r.transparent=!0;else{var p=u.data.color;switch(u.opaque){case"A_ONE":r.opacity=p[3]*f.float;break;case"RGB_ZERO":r.opacity=1-p[0]*f.float;break;case"A_ZERO":r.opacity=1-p[3]*f.float;break;case"RGB_ONE":r.opacity=p[0]*f.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',u.opaque)}r.opacity<1&&(r.transparent=!0)}return void 0!==i&&void 0!==i.technique&&1===i.technique.double_sided&&(r.side=THREE.DoubleSide),r}function R(e){return d(ce.materials[e],w)}function x(e){var t;switch(e.optics.technique){case"perspective":t=new THREE.PerspectiveCamera(e.optics.parameters.yfov,e.optics.parameters.aspect_ratio,e.optics.parameters.znear,e.optics.parameters.zfar);break;case"orthographic":var r=e.optics.parameters.ymag,a=e.optics.parameters.xmag,n=e.optics.parameters.aspect_ratio;a=void 0===a?r*n:a,r=void 0===r?a/n:r,a*=.5,r*=.5,t=new THREE.OrthographicCamera(-a,a,r,-r,e.optics.parameters.znear,e.optics.parameters.zfar);break;default:t=new THREE.PerspectiveCamera}return t.name=e.name,t}function A(e){var t=ce.cameras[e];return void 0!==t?d(t,x):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",e),null)}function N(e){var t;switch(e.technique){case"directional":t=new THREE.DirectionalLight;break;case"point":t=new THREE.PointLight;break;case"spot":t=new THREE.SpotLight;break;case"ambient":t=new THREE.AmbientLight}return e.parameters.color&&t.color.copy(e.parameters.color),e.parameters.distance&&(t.distance=e.parameters.distance),t}function k(e){var t=ce.lights[e];return void 0!==t?d(t,N):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",e),null)}function H(e){for(var t={array:[],stride:3},i=0;i0&&t0&&d.addAttribute("position",new THREE.Float32BufferAttribute(n.array,n.stride));i.array.length>0&&d.addAttribute("normal",new THREE.Float32BufferAttribute(i.array,i.stride));c.array.length>0&&d.addAttribute("color",new THREE.Float32BufferAttribute(c.array,c.stride));o.array.length>0&&d.addAttribute("uv",new THREE.Float32BufferAttribute(o.array,o.stride));s.array.length>0&&d.addAttribute("uv2",new THREE.Float32BufferAttribute(s.array,s.stride));l.array.length>0&&d.addAttribute("skinIndex",new THREE.Float32BufferAttribute(l.array,l.stride));u.array.length>0&&d.addAttribute("skinWeight",new THREE.Float32BufferAttribute(u.array,u.stride));return a.data=d,a.type=e[0].type,a.materialKeys=f,a}(s,r,a)}return t}function L(e,t,r,a){function n(e){for(var t=i[e+r]*l,n=t+l;t4)for(var g=1,E=p-2;g<=E;g++){var y=u+0*o,h=u+o*g,m=u+o*(g+1);n(y),n(h),n(m)}u+=o*p}else for(var d=0,f=i.length;d0?c+u:c;t.inputs[d]={id:s,offset:l},t.stride=Math.max(t.stride,l+1),"TEXCOORD"===c&&(t.hasUV=!0);break;case"vcount":t.vcount=i(n.textContent);break;case"p":t.p=i(n.textContent)}}return t}(s));break;default:console.log(s)}}}ce.geometries[e.getAttribute("id")]=t}}),l(ee,"library_nodes","node",P),l(ee,"library_visual_scenes","visual_scene",function(e){var t={name:e.getAttribute("name"),children:[]};!function(e){for(var t=e.getElementsByTagName("node"),r=0;r=t.limits.max&&(t.static=!0),t.middlePosition=(t.limits.min+t.limits.max)/2,t}(a)}}return t}(a);break;case"link":t.links.push(F(a))}}}(a,t)}}ce.kinematicsModels[e.getAttribute("id")]=t}),l(ee,"library_physics_models","physics_model",function(e){for(var t={name:e.getAttribute("name")||"",rigidBodies:{}},r=0;ra.limits.max||t=t.length&&t===m(e,0,t.length)}(e))g=(new o).parse(e);else{var a=m(e);if(!function(e){function t(t){var r=e[t-1];return e=e.slice(a+t),a++,r}for(var r=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],a=0,n=0;n0,o="string"==typeof n.Content&&""!==n.Content;if(i||o){var s=this.parseImage(r[a]);t[n.RelativeFilename||n.Filename]=s}}}}for(var c in e){var l=e[c];void 0!==t[l]?e[c]=t[l]:e[c]=e[c].split("\\").pop()}return e},parseImage:function(e){var t,r=e.Content,a=e.RelativeFilename||e.Filename,n=a.slice(a.lastIndexOf(".")+1).toLowerCase();switch(n){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":if("function"!=typeof THREE.TGALoader)return void console.warn("FBXLoader: THREE.TGALoader is required to load TGA textures");null===THREE.Loader.Handlers.get(".tga")&&THREE.Loader.Handlers.add(/\.tga$/i,new THREE.TGALoader),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+n+'" is not supported.')}if("string"==typeof r)return"data:"+t+";base64,"+r;var i=new Uint8Array(r);return window.URL.createObjectURL(new Blob([i],{type:t}))},parseTextures:function(e){var t=new Map;if("Texture"in g.Objects){var r=g.Objects.Texture;for(var a in r){var n=this.parseTexture(r[a],e);t.set(parseInt(a),n)}}return t},parseTexture:function(e,t){var r=this.loadTexture(e,t);r.ID=e.id,r.name=e.attrName;var a=e.WrapModeU,n=e.WrapModeV,i=void 0!==a?a.value:0,o=void 0!==n?n.value:0;if(r.wrapS=0===i?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,r.wrapT=0===o?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,"Scaling"in e){var s=e.Scaling.value;r.repeat.x=s[0],r.repeat.y=s[1]}return r},loadTexture:function(e,t){var r,a=this.textureLoader.path,n=E.get(e.id).children;void 0!==n&&n.length>0&&void 0!==t[n[0].ID]&&(0!==(r=t[n[0].ID]).indexOf("blob:")&&0!==r.indexOf("data:")||this.textureLoader.setPath(void 0));var i,o=e.FileName.slice(-3).toLowerCase();if("tga"===o){var s=THREE.Loader.Handlers.get(".tga");null===s?(console.warn("FBXLoader: TGALoader not found, creating empty placeholder texture for",r),i=new THREE.Texture):i=s.load(r)}else"psd"===o?(console.warn("FBXLoader: PSD textures are not supported, creating empty placeholder texture for",r),i=new THREE.Texture):i=this.textureLoader.load(r);return this.textureLoader.setPath(a),i},parseMaterials:function(e){var t=new Map;if("Material"in g.Objects){var r=g.Objects.Material;for(var a in r){var n=this.parseMaterial(r[a],e);null!==n&&t.set(parseInt(a),n)}}return t},parseMaterial:function(e,t){var r=e.id,a=e.attrName,i=e.ShadingModel;if("object"===(void 0===i?"undefined":n(i))&&(i=i.value),!E.has(r))return null;var o,s=this.parseParameters(e,t,r);switch(i.toLowerCase()){case"phong":o=new THREE.MeshPhongMaterial;break;case"lambert":o=new THREE.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',i),o=new THREE.MeshPhongMaterial({color:3342591})}return o.setValues(s),o.name=a,o},parseParameters:function(e,t,r){var a={};e.BumpFactor&&(a.bumpScale=e.BumpFactor.value),e.Diffuse?a.color=(new THREE.Color).fromArray(e.Diffuse.value):e.DiffuseColor&&"Color"===e.DiffuseColor.type&&(a.color=(new THREE.Color).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(a.displacementScale=e.DisplacementFactor.value),e.Emissive?a.emissive=(new THREE.Color).fromArray(e.Emissive.value):e.EmissiveColor&&"Color"===e.EmissiveColor.type&&(a.emissive=(new THREE.Color).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(a.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(a.opacity=parseFloat(e.Opacity.value)),a.opacity<1&&(a.transparent=!0),e.ReflectionFactor&&(a.reflectivity=e.ReflectionFactor.value),e.Shininess&&(a.shininess=e.Shininess.value),e.Specular?a.specular=(new THREE.Color).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(a.specular=(new THREE.Color).fromArray(e.SpecularColor.value));var n=this;return E.get(r).children.forEach(function(e){var r=e.relationship;switch(r){case"Bump":a.bumpMap=n.getTexture(t,e.ID);break;case"DiffuseColor":a.map=n.getTexture(t,e.ID);break;case"DisplacementColor":a.displacementMap=n.getTexture(t,e.ID);break;case"EmissiveColor":a.emissiveMap=n.getTexture(t,e.ID);break;case"NormalMap":a.normalMap=n.getTexture(t,e.ID);break;case"ReflectionColor":a.envMap=n.getTexture(t,e.ID),a.envMap.mapping=THREE.EquirectangularReflectionMapping;break;case"SpecularColor":a.specularMap=n.getTexture(t,e.ID);break;case"TransparentColor":a.alphaMap=n.getTexture(t,e.ID),a.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",r)}}),a},getTexture:function(e,t){return"LayeredTexture"in g.Objects&&t in g.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=E.get(t).children[0].ID),e.get(t)},parseDeformers:function(){var e={},t={};if("Deformer"in g.Objects){var r=g.Objects.Deformer;for(var a in r){var n=r[a],i=E.get(parseInt(a));if("Skin"===n.attrType){var o=this.parseSkeleton(i,r);o.ID=a,i.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),o.geometryID=i.parents[0].ID,e[a]=o}else if("BlendShape"===n.attrType){var s={id:a};s.rawTargets=this.parseMorphTargets(i,r),s.id=a,i.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[a]=s}}}return{skeletons:e,morphTargets:t}},parseSkeleton:function(e,t){var r=[];return e.children.forEach(function(e){var a=t[e.ID];if("Cluster"===a.attrType){var n={ID:e.ID,indices:[],weights:[],transform:(new THREE.Matrix4).fromArray(a.Transform.a),transformLink:(new THREE.Matrix4).fromArray(a.TransformLink.a),linkMode:a.Mode};"Indexes"in a&&(n.indices=a.Indexes.a,n.weights=a.Weights.a),r.push(n)}}),{rawBones:r,bones:[]}},parseMorphTargets:function(e,t){for(var r=[],a=0;a1?i=o:o.length>0?i=o[0]:(i=new THREE.MeshPhongMaterial({color:13421772}),o.push(i)),"color"in n.attributes&&o.forEach(function(e){e.vertexColors=THREE.VertexColors}),n.FBX_Deformer?(o.forEach(function(e){e.skinning=!0}),a=new THREE.SkinnedMesh(n,i)):a=new THREE.Mesh(n,i),a},createCurve:function(e,t){var r=e.children.reduce(function(e,r){return t.has(r.ID)&&(e=t.get(r.ID)),e},null),a=new THREE.LineBasicMaterial({color:3342591,linewidth:1});return new THREE.Line(r,a)},setModelTransforms:function(e,t){var r={};"RotationOrder"in t&&(r.eulerOrder=parseInt(t.RotationOrder.value)),"Lcl_Translation"in t&&(r.translation=t.Lcl_Translation.value),"RotationOffset"in t&&(r.rotationOffset=t.RotationOffset.value),"Lcl_Rotation"in t&&(r.rotation=t.Lcl_Rotation.value),"PreRotation"in t&&(r.preRotation=t.PreRotation.value),"PostRotation"in t&&(r.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(r.scale=t.Lcl_Scaling.value);var a=f(r);e.applyMatrix(a)},setLookAtProperties:function(e,t){if("LookAtProperty"in t){E.get(e.ID).children.forEach(function(t){if("LookAtProperty"===t.relationship){var r=g.Objects.Model[t.ID];if("Lcl_Translation"in r){var a=r.Lcl_Translation.value;void 0!==e.target?(e.target.position.fromArray(a),y.add(e.target)):e.lookAt((new THREE.Vector3).fromArray(a))}}})}},bindSkeleton:function(e,t,r){var a=this.parsePoseNodes();for(var n in e){var i=e[n];E.get(parseInt(i.ID)).parents.forEach(function(e){if(t.has(e.ID)){var n=e.ID;E.get(n).parents.forEach(function(e){if(r.has(e.ID)){r.get(e.ID).bind(new THREE.Skeleton(i.bones),a[e.ID])}})}})}},parsePoseNodes:function(){var e={};if("Pose"in g.Objects){var t=g.Objects.Pose;for(var r in t)if("BindPose"===t[r].attrType){var a=t[r].PoseNode;Array.isArray(a)?a.forEach(function(t){e[t.Node]=(new THREE.Matrix4).fromArray(t.Matrix.a)}):e[a.Node]=(new THREE.Matrix4).fromArray(a.Matrix.a)}}return e},createAmbientLight:function(){if("GlobalSettings"in g&&"AmbientColor"in g.GlobalSettings){var e=g.GlobalSettings.AmbientColor.value,t=e[0],r=e[1],a=e[2];if(0!==t||0!==r||0!==a){var n=new THREE.Color(t,r,a);y.add(new THREE.AmbientLight(n,1))}}},setupMorphMaterials:function(){y.traverse(function(e){if(e.isMesh&&(e.geometry.morphAttributes.position||e.geometry.morphAttributes.normal)){var t=e.uuid,r=e.material.uuid,a=!1;y.traverse(function(e){e.isMesh&&e.material.uuid===r&&e.uuid!==t&&(a=!0)}),!0===a&&(e.material=e.material.clone()),e.material.morphTargets=!0}})}},r.prototype={constructor:r,parse:function(e){var t=new Map;if("Geometry"in g.Objects){var r=g.Objects.Geometry;for(var a in r){var n=E.get(parseInt(a)),i=this.parseGeometry(n,r[a],e);t.set(parseInt(a),i)}}return t},parseGeometry:function(e,t,r){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,r);case"NurbsCurve":return this.parseNurbsGeometry(t)}},parseMeshGeometry:function(e,t,r){var a=r.skeletons,n=r.morphTargets,i=e.parents.map(function(e){return g.Objects.Model[e.ID]});if(0!==i.length){var o=e.children.reduce(function(e,t){return void 0!==a[t.ID]&&(e=a[t.ID]),e},null),s=e.children.reduce(function(e,t){return void 0!==n[t.ID]&&(e=n[t.ID]),e},null),c=i[0],l={};"RotationOrder"in c&&(l.eulerOrder=c.RotationOrder.value),"GeometricTranslation"in c&&(l.translation=c.GeometricTranslation.value),"GeometricRotation"in c&&(l.rotation=c.GeometricRotation.value),"GeometricScaling"in c&&(l.scale=c.GeometricScaling.value);var u=f(l);return this.genGeometry(t,o,s,u)}},genGeometry:function(e,t,r,a){var n=new THREE.BufferGeometry;e.attrName&&(n.name=e.attrName);var i=this.parseGeoNode(e,t),o=this.genBuffers(i),s=new THREE.Float32BufferAttribute(o.vertex,3);if(a.applyToBufferAttribute(s),n.addAttribute("position",s),o.colors.length>0&&n.addAttribute("color",new THREE.Float32BufferAttribute(o.colors,3)),t&&(n.addAttribute("skinIndex",new THREE.Uint16BufferAttribute(o.weightsIndices,4)),n.addAttribute("skinWeight",new THREE.Float32BufferAttribute(o.vertexWeights,4)),n.FBX_Deformer=t),o.normal.length>0){var c=new THREE.Float32BufferAttribute(o.normal,3);(new THREE.Matrix3).getNormalMatrix(a).applyToBufferAttribute(c),n.addAttribute("normal",c)}if(o.uvs.forEach(function(e,t){var r="uv"+(t+1).toString();0===t&&(r="uv"),n.addAttribute(r,new THREE.Float32BufferAttribute(o.uvs[t],2))}),i.material&&"AllSame"!==i.material.mappingType){var l=o.materialIndex[0],u=0;if(o.materialIndex.forEach(function(e,t){e!==l&&(n.addGroup(u,t-u,l),l=e,u=t)}),n.groups.length>0){var d=n.groups[n.groups.length-1],f=d.start+d.count;f!==o.materialIndex.length&&n.addGroup(f,o.materialIndex.length-f,l)}0===n.groups.length&&n.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(n,e,r,a),n},parseGeoNode:function(e,t){var r={};if(r.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],r.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(r.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(r.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(r.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){r.uv=[];for(var a=0;e.LayerElementUV[a];)r.uv.push(this.parseUVs(e.LayerElementUV[a])),a++}return r.weightTable={},null!==t&&(r.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(a,n){void 0===r.weightTable[a]&&(r.weightTable[a]=[]),r.weightTable[a].push({id:t,weight:e.weights[n]})})})),r},genBuffers:function(e){var t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},r=0,a=0,n=!1,i=[],o=[],s=[],c=[],l=[],u=[],f=this;return e.vertexIndices.forEach(function(p,h){var m=!1;p<0&&(p^=-1,m=!0);var v=[],g=[];if(i.push(3*p,3*p+1,3*p+2),e.color){T=d(h,r,p,e.color);s.push(T[0],T[1],T[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach(function(e){g.push(e.weight),v.push(e.id)}),g.length>4){n||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),n=!0);var E=[0,0,0,0],y=[0,0,0,0];g.forEach(function(e,t){var r=e,a=v[t];y.forEach(function(e,t,n){if(r>e){n[t]=r,r=e;var i=E[t];E[t]=a,a=i}})}),v=E,g=y}for(;g.length<4;)g.push(0),v.push(0);for(var b=0;b<4;++b)l.push(g[b]),u.push(v[b])}if(e.normal){var T=d(h,r,p,e.normal);o.push(T[0],T[1],T[2])}if(e.material&&"AllSame"!==e.material.mappingType)var w=d(h,r,p,e.material)[0];e.uv&&e.uv.forEach(function(e,t){var a=d(h,r,p,e);void 0===c[t]&&(c[t]=[]),c[t].push(a[0]),c[t].push(a[1])}),a++,m&&(f.genFace(t,e,i,w,o,s,c,l,u,a),r++,a=0,i=[],o=[],s=[],c=[],l=[],u=[])}),t},genFace:function(e,t,r,a,n,i,o,s,c,l){for(var u=2;u1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var i=e.get(n[0].ID);r[a]={name:t[a].attrName,layer:i}}return r},addClip:function(e){var t=[],r=this;return e.layer.forEach(function(e){t=t.concat(r.generateTracks(e))}),new THREE.AnimationClip(e.name,-1,t)},generateTracks:function(e){var t=[],r=new THREE.Vector3,a=new THREE.Quaternion,n=new THREE.Vector3;if(e.transform&&e.transform.decompose(r,a,n),r=r.toArray(),a=(new THREE.Euler).setFromQuaternion(a).toArray(),n=n.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){var i=this.generateVectorTrack(e.modelName,e.T.curves,r,"position");void 0!==i&&t.push(i)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){var o=this.generateRotationTrack(e.modelName,e.R.curves,a,e.preRotations,e.postRotations);void 0!==o&&t.push(o)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){var s=this.generateVectorTrack(e.modelName,e.S.curves,n,"scale");void 0!==s&&t.push(s)}if(void 0!==e.DeformPercent){var c=this.generateMorphTrack(e);void 0!==c&&t.push(c)}return t},generateVectorTrack:function(e,t,r,a){var n=this.getTimesForAllAxes(t),i=this.getKeyframeTrackValues(n,t,r);return new THREE.VectorKeyframeTrack(e+"."+a,n,i)},generateRotationTrack:function(e,t,r,a,n){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(THREE.Math.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(THREE.Math.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(THREE.Math.degToRad));var i=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(i,t,r);void 0!==a&&((a=a.map(THREE.Math.degToRad)).push("ZYX"),a=(new THREE.Euler).fromArray(a),a=(new THREE.Quaternion).setFromEuler(a)),void 0!==n&&((n=n.map(THREE.Math.degToRad)).push("ZYX"),n=(new THREE.Euler).fromArray(n),n=(new THREE.Quaternion).setFromEuler(n).inverse());for(var s=new THREE.Quaternion,c=new THREE.Euler,l=[],u=0;u=180){for(var i=n/180,o=a/i,s=r+o,c=e.times[t-1],l=(e.times[t]-c)/i,u=c+l,d=[],f=[];u1&&(r=e[1].replace(/^(\w+)::/,""),a=e[2]),{id:t,name:r,type:a}},parseNodeProperty:function(e,t,r){var a=t[1].replace(/^"/,"").replace(/"$/,"").trim(),n=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===a&&","===n&&(n=r.replace(/"/g,"").replace(/,$/,"").trim());var i=this.getCurrentNode();if("Properties70"!==i.name){if("C"===a){var o=n.split(",").slice(1),s=parseInt(o[0]),c=parseInt(o[1]),l=n.split(",").slice(3);a="connections",function(e,t){for(var r=0,a=e.length,n=t.length;r=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var r={},a=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32(),i=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(i);if(0===a)return null;for(var s=[],c=0;c0?s[0]:"",u=s.length>1?s[1]:"",d=s.length>2?s[2]:"";for(r.singleProperty=1===n&&e.getOffset()===a;a>e.getOffset();){var f=this.parseNode(e,t);null!==f&&this.parseSubNode(o,r,f)}return r.propertyList=s,"number"==typeof l&&(r.id=l),""!==u&&(r.attrName=u),""!==d&&(r.attrType=d),""!==o&&(r.name=o),r},parseSubNode:function(e,t,r){if(!0===r.singleProperty){var a=r.propertyList[0];Array.isArray(a)?(t[r.name]=r,r.a=a):t[r.name]=a}else if("Connections"===e&&"C"===r.name){var n=[];r.propertyList.forEach(function(e,t){0!==t&&n.push(e)}),void 0===t.connections&&(t.connections=[]),t.connections.push(n)}else if("Properties70"===r.name){Object.keys(r).forEach(function(e){t[e]=r[e]})}else if("Properties70"===e&&"P"===r.name){var i,o=r.propertyList[0],s=r.propertyList[1],c=r.propertyList[2],l=r.propertyList[3];0===o.indexOf("Lcl ")&&(o=o.replace("Lcl ","Lcl_")),0===s.indexOf("Lcl ")&&(s=s.replace("Lcl ","Lcl_")),i="Color"===s||"ColorRGB"===s||"Vector"===s||"Vector3D"===s||0===s.indexOf("Lcl_")?[r.propertyList[4],r.propertyList[5],r.propertyList[6]]:r.propertyList[4],t[o]={type:s,type2:c,flag:l,value:i}}else void 0===t[r.name]?"number"==typeof r.id?(t[r.name]={},t[r.name][r.id]=r):t[r.name]=r:"PoseNode"===r.name?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(r)):void 0===t[r.name][r.id]&&(t[r.name][r.id]=r)},parseProperty:function(e){var t=e.getString(1);switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":r=e.getUint32();return e.getArrayBuffer(r);case"S":var r=e.getUint32();return e.getString(r);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var a=e.getUint32(),n=e.getUint32(),i=e.getUint32();if(0===n)switch(t){case"b":case"c":return e.getBooleanArray(a);case"d":return e.getFloat64Array(a);case"f":return e.getFloat32Array(a);case"i":return e.getInt32Array(a);case"l":return e.getInt64Array(a)}"undefined"==typeof Zlib&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new s(new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(i))).decompress().buffer);switch(t){case"b":case"c":return o.getBooleanArray(a);case"d":return o.getFloat64Array(a);case"f":return o.getFloat32Array(a);case"i":return o.getInt32Array(a);case"l":return o.getInt64Array(a)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},s.prototype={constructor:s,getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],r=0;r=0&&(t=t.slice(0,a)),THREE.LoaderUtils.decodeText(new Uint8Array(t))}},c.prototype={constructor:c,add:function(e,t){this[e]=t}};var b=[],T=new THREE.Matrix4,w=new THREE.Euler,R=new THREE.Vector3,x=new THREE.Vector3,A=new THREE.Matrix4;return e}()},{}],4:[function(e,t,r){"use strict";function a(e){var t=document.getElementById(e),r=t.parentNode;try{r&&r.removeChild(t)}catch(e){}}function n(e,t,r){return new r(function(r,n){var i=t.timeout||5e3,o="script_"+Date.now()+"_"+Math.ceil(1e5*Math.random()),s=function(e,t){var r=document.createElement("script");return r.type="text/javascript",r.async=!0,r.id=t,r.src=e,r}(e,o),c=setTimeout(function(){n(new Error("Script request to "+e+" timed out")),a(o)},i),l=function(e){clearTimeout(e)};s.addEventListener("load",function(e){r({ok:!0}),l(c),a(o)}),s.addEventListener("error",function(t){n(new Error("Script request to "+e+" failed "+t)),l(c),a(o)}),function(e){var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}(s)})}t.exports=function(e){return e=e||{},function(t,r){return r=r||{},n(t,r,e.Promise||Promise)}}},{}],5:[function(e,t,r){"use strict";function a(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}var n={once:THREE.LoopOnce,repeat:THREE.LoopRepeat,pingpong:THREE.LoopPingPong};t.exports=AFRAME.registerComponent("animation-mixer",{schema:{clip:{default:"*"},duration:{default:0},clampWhenFinished:{default:!1,type:"boolean"},crossFadeDuration:{default:0},loop:{default:"repeat",oneOf:Object.keys(n)},repetitions:{default:1/0,min:0},timeScale:{default:1}},init:function(){var e=this;this.model=null,this.mixer=null,this.activeActions=[];var t=this.el.getObject3D("mesh");t?this.load(t):this.el.addEventListener("model-loaded",function(t){e.load(t.detail.model)})},load:function(e){var t=this.el;this.model=e,this.mixer=new THREE.AnimationMixer(e),this.mixer.addEventListener("loop",function(e){t.emit("animation-loop",{action:e.action,loopDelta:e.loopDelta})}),this.mixer.addEventListener("finished",function(e){t.emit("animation-finished",{action:e.action,direction:e.direction})}),this.data.clip&&this.update({})},remove:function(){this.mixer&&this.mixer.stopAllAction()},update:function(e){if(e){var t=this.data,r=AFRAME.utils.diff(t,e);if("clip"in r)return this.stopAction(),void(t.clip&&this.playAction());this.activeActions.forEach(function(e){"duration"in r&&t.duration&&e.setDuration(t.duration),"clampWhenFinished"in r&&(e.clampWhenFinished=t.clampWhenFinished),("loop"in r||"repetitions"in r)&&e.setLoop(n[t.loop],t.repetitions),"timeScale"in r&&e.setEffectiveTimeScale(t.timeScale)})}},stopAction:function(){for(var e=this.data,t=0;t + + + + + Document + + + + + + + + +

+ + + +
+ +
+ + \ No newline at end of file diff --git a/demo/ar/location-base/script.js b/demo/ar/location-base/script.js new file mode 100644 index 0000000..30f83ce --- /dev/null +++ b/demo/ar/location-base/script.js @@ -0,0 +1,99 @@ + +window.onload = () => { + const button = document.querySelector('button[data-action="change"]'); + button.innerText = '﹖'; + + let places = staticLoadPlaces(); + renderPlaces(places); +}; + +var curlat = 0; +var curlng = 0; +window.navigator.geolocation.getCurrentPosition(function (position) { + curlat = position.coords.latitude + curlng = position.coords.longitude + + console.log(position.coords.latitude) + console.log(position.coords.longitude) +}) + +function staticLoadPlaces() { + return [ + { + name: 'Pokèmon', + location: { + // decomment the following and add coordinates: + // lat: , + // lng: , + lat: curlat, + lng: curlng, + }, + }, + ]; +} + +var models = [ + { + url: './assets/magnemite/scene.gltf', + scale: '0.05 0.05 0.05', + info: 'Magnemite, Lv. 5, HP 10/10', + rotation: '0 180 0', + }, + { + url: './assets/articuno/scene.gltf', + scale: '0.08 0.08 0.08', + rotation: '0 180 0', + info: 'Articuno, Lv. 80, HP 100/100', + }, + { + url: './assets/dragonite/scene.gltf', + scale: '0.02 0.02 0.02', + rotation: '0 180 0', + info: 'Dragonite, Lv. 99, HP 150/150', + }, +]; + +var modelIndex = 0; +var setModel = function (model, entity) { + if (model.scale) { + entity.setAttribute('scale', model.scale); + } + + if (model.rotation) { + entity.setAttribute('rotation', model.rotation); + } + + if (model.position) { + entity.setAttribute('position', model.position); + } + + entity.setAttribute('gltf-model', model.url); + + const div = document.querySelector('.instructions'); + div.innerText = model.info; +}; + +function renderPlaces(places) { + let scene = document.querySelector('a-scene'); + + places.forEach((place) => { + let latitude = place.location.lat; + let longitude = place.location.lng; + + let model = document.createElement('a-entity'); + model.setAttribute('gps-entity-place', `latitude: ${latitude}; longitude: ${longitude};`); + + setModel(models[modelIndex], model); + + model.setAttribute('animation-mixer', ''); + + document.querySelector('button[data-action="change"]').addEventListener('click', function () { + var entity = document.querySelector('[gps-entity-place]'); + modelIndex++; + var newIndex = modelIndex % models.length; + setModel(models[newIndex], entity); + }); + + scene.appendChild(model); + }); +} diff --git a/demo/ar/location-base/style.css b/demo/ar/location-base/style.css new file mode 100644 index 0000000..ca9a078 --- /dev/null +++ b/demo/ar/location-base/style.css @@ -0,0 +1,35 @@ +.centered { + height: 20%; + justify-content: center; + position: fixed; + bottom: 0%; + display: flex; + flex-direction: row; + width: 100%; + margin: 0px auto; + left: 0; + right: 0; +} + +button { + display: flex; + align-items: center; + justify-content: center; + border: 2px solid white; + background-color: transparent; + width: 2em; + height: 2em; + border-radius: 100%; + font-size: 2em; + background-color: rgba(0, 0, 0, 0.4); + color: white; + outline: none; +} + +.instructions { + position: fixed; + top: 5%; + font-size: 1.25em; + color: white; + z-index: 999999; +} diff --git a/demo/ar/location-base/test.html b/demo/ar/location-base/test.html new file mode 100644 index 0000000..cddcff3 --- /dev/null +++ b/demo/ar/location-base/test.html @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/demo/ar/qr.png b/demo/ar/qr.png new file mode 100644 index 0000000..770dbee Binary files /dev/null and b/demo/ar/qr.png differ diff --git a/demo/ar/three.example.html b/demo/ar/three.example.html new file mode 100644 index 0000000..cddcff3 --- /dev/null +++ b/demo/ar/three.example.html @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/demo/ar/three.js/.DS_Store b/demo/ar/three.js/.DS_Store new file mode 100644 index 0000000..17cf4f9 Binary files /dev/null and b/demo/ar/three.js/.DS_Store differ diff --git a/demo/ar/three.js/Makefile b/demo/ar/three.js/Makefile new file mode 100644 index 0000000..c1590f4 --- /dev/null +++ b/demo/ar/three.js/Makefile @@ -0,0 +1,43 @@ +watch: build + fswatch -0 src/*/*.js | xargs -0 -n 1 -I {} make build + +build-main: + echo > build/ar.js + cat vendor/jsartoolkit5/build/artoolkit.min.js \ + vendor/jsartoolkit5/js/artoolkit.api.js >> build/ar.js + cat src/threex/threex-arbasecontrols.js \ + src/threex/threex-arclickability.js \ + src/threex/threex-armarkercloak.js \ + src/threex/threex-armarkercontrols.js \ + src/threex/threex-armarkerhelper.js \ + src/threex/threex-arsmoothedcontrols.js \ + src/threex/threex-artoolkitcontext.js \ + src/threex/threex-artoolkitprofile.js \ + src/threex/threex-artoolkitsource.js \ + src/threex/threex-arvideoinwebgl.js \ + src/threex/threex-hittesting-plane.js \ + src/new-api/*.js \ + src/markers-area/*.js >> build/ar.js + +build-main-nft: + echo > build/ar-nft.js + cat vendor/jsartoolkit5/build/artoolkit-nft.min.js >> build/ar-nft.js + cat src/threex/threex-arbasecontrols.js \ + src/threex/threex-arclickability.js \ + src/threex/threex-armarkercloak.js \ + src/threex/threex-armarkercontrols-nft-start.js \ + vendor/jsartoolkit5/build/artoolkit-nft.min.js \ + src/threex/threex-armarkercontrols-nft-end.js \ + src/threex/threex-armarkerhelper.js \ + src/threex/threex-arsmoothedcontrols.js \ + src/threex/threex-artoolkitcontext-nft.js \ + src/threex/threex-artoolkitprofile.js \ + src/threex/threex-artoolkitsource.js \ + src/threex/threex-arvideoinwebgl.js \ + src/threex/threex-hittesting-plane.js \ + src/new-api/*.js \ + src/markers-area/*.js >> build/ar-nft.js + +.PHONY: build + +build: build-main build-main-nft diff --git a/demo/ar/three.js/build/ar-nft.js b/demo/ar/three.js/build/ar-nft.js new file mode 100644 index 0000000..230dce7 --- /dev/null +++ b/demo/ar/three.js/build/ar-nft.js @@ -0,0 +1,3592 @@ + +var Module=typeof Module!=="undefined"?Module:{};(function(){"use strict";var scope;if(typeof window!=="undefined"){scope=window}else{scope=self}if(scope.artoolkit_wasm_url){var downloadWasm=function(url){return new Promise(function(resolve,reject){var wasmXHR=new XMLHttpRequest;wasmXHR.open("GET",url,true);wasmXHR.responseType="arraybuffer";wasmXHR.onload=function(){resolve(wasmXHR.response)};wasmXHR.onerror=function(){reject("error "+wasmXHR.status)};wasmXHR.send(null)})};var wasm=downloadWasm(scope.artoolkit_wasm_url);Module.instantiateWasm=function(imports,successCallback){console.log("instantiateWasm: instantiating synchronously");wasm.then(function(wasmBinary){console.log("wasm download finished, begin instantiating");var wasmInstantiate=WebAssembly.instantiate(new Uint8Array(wasmBinary),imports).then(function(output){console.log("wasm instantiation succeeded");successCallback(output.instance)}).catch(function(e){console.log("wasm instantiation failed! "+e)})});return{}}}var ARController=function(width,height,cameraPara){this.id=undefined;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;cameraPara=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.width=w;this.height=h;this.nftMarkerCount=0;this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.nftMarkers={};this.transform_mat=new Float32Array(16);this.transformGL_RH=new Float64Array(16);if(typeof document!=="undefined"){this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d")}this.videoWidth=w;this.videoHeight=h;this.videoSize=this.videoWidth*this.videoHeight;this.framepointer=null;this.framesize=null;this.dataHeap=null;this.videoLuma=null;this.camera_mat=null;this.marker_transform_mat=null;this.videoLumaPointer=null;this._bwpointer=undefined;this._lumaCtx=undefined;if(typeof cameraPara==="string"){this.cameraParam=new ARCameraParam(cameraPara,function(){this._initialize()}.bind(this),function(err){console.error("ARController: Failed to load ARCameraParam",err);this.onload(err)}.bind(this))}else{this.cameraParam=cameraPara;this._initialize()}};ARController.prototype.dispose=function(){if(this.id>-1){artoolkit.teardown(this.id)}if(this.image&&this.image.srcObject){ARController._teardownVideo(this.image)}for(var t in this){this[t]=null}};ARController.prototype.process=function(image){var result=this.detectMarker(image);if(result!=0){console.error("detectMarker error: "+result)}var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.nftMarkers){o=this.nftMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var nftMarkerCount=this.nftMarkerCount;this.detectNFTMarker();var MARKER_LOST_TIME=200;for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i>3;q+=4}}if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(){if(readyToPlay){video.play().then(function(){onSuccess(video)}).catch(function(error){onError(error);ARController._teardownVideo(video)});if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){if(window.URL.createObjectURL){try{video.srcObject=stream}catch(ex){}}video.srcObject=stream;readyToPlay=true;video.autoplay=true;video.playsInline=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.min}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.min}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;mediaDevicesConstraints.deviceId=configuration.deviceId;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:constraints};if(navigator.mediaDevices||window.MediaStreamTrack.getSources){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{window.MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback,errorCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=57888,DYNAMIC_BASE=5300768,DYNAMICTOP_PTR=57696;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;if(Module["buffer"]){buffer=Module["buffer"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw what}var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;var ASM_CONSTS=[function($0,$1,$2,$3,$4,$5){if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4;frameMalloc["videoLumaPointer"]=$5},function($0,$1,$2,$3){if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=$a[i++];markerInfo["found"]=1;markerInfo["pose"][0]=$a[i++];markerInfo["pose"][1]=$a[i++];markerInfo["pose"][2]=$a[i++];markerInfo["pose"][3]=$a[i++];markerInfo["pose"][4]=$a[i++];markerInfo["pose"][5]=$a[i++];markerInfo["pose"][6]=$a[i++];markerInfo["pose"][7]=$a[i++];markerInfo["pose"][8]=$a[i++];markerInfo["pose"][9]=$a[i++];markerInfo["pose"][10]=$a[i++];markerInfo["pose"][11]=$a[i++]},function($0){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=-1;markerInfo["found"]=0;markerInfo["pose"][0]=0;markerInfo["pose"][1]=0;markerInfo["pose"][2]=0;markerInfo["pose"][3]=0;markerInfo["pose"][4]=0;markerInfo["pose"][5]=0;markerInfo["pose"][6]=0;markerInfo["pose"][7]=0;markerInfo["pose"][8]=0;markerInfo["pose"][9]=0;markerInfo["pose"][10]=0;markerInfo["pose"][11]=0}];function _emscripten_asm_const_iiiiiii(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiddddddddddddd(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _emscripten_asm_const_iiiiiiiidddddddddddddddddddddddddi(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}__ATINIT__.push({func:function(){__GLOBAL__I_000101()}},{func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){___emscripten_environ_constructor()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}},{func:function(){__GLOBAL__sub_I_iostream_cpp()}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACKTQAAkU0AAJ1NAACnTQAAtU0AAAAAAAAAAAAAAAAAAP//////////AAAAAAEAAAABAAAAAQAAAAAAAAD/////AAAAAAEAAAABAAAAAQAAAAAAAAD///////////////8AAAABAAEBAQACBP//BQMBAAL/Bgf/AwECAgMCAwIDAwD/BAYHBf8BBAUEBAUFBAUHBgYGBwcHBv8CBAYHBQP/AAEBAQEBAQABAQEAAAEBAQEBAAEBAAEBAQABAQEBAAEBAAEBAQEAAQEBAAEBAAEBAQEBAAABAQEAAQEBAQEBAAD//wP/BQb//wkK/wz//w//ERL/FP//Fxj//xv/HR7//wEC/wT//wcI//8L/w0O/xD//xP/FRb//xka/xz//x8BAAAAAgAAAAQAAAAIAAAAEAAAAAUAAAAKAAAAFAAAAA0AAAAaAAAAEQAAAAcAAAAOAAAAHAAAAB0AAAAfAAAAGwAAABMAAAADAAAABgAAAAwAAAAYAAAAFQAAAA8AAAAeAAAAGQAAABcAAAALAAAAFgAAAAkAAAASAAAAAAAAAAEAAAACAAAABAAAAAgAAAADAAAABgAAAAwAAAALAAAABQAAAAoAAAAHAAAADgAAAA8AAAANAAAACQAAAAAAAAD/////AAAAAAEAAAASAAAAAgAAAAUAAAATAAAACwAAAAMAAAAdAAAABgAAABsAAAAUAAAACAAAAAwAAAAXAAAABAAAAAoAAAAeAAAAEQAAAAcAAAAWAAAAHAAAABoAAAAVAAAAGQAAAAkAAAAQAAAADQAAAA4AAAAYAAAADwAAAP////8AAAAAAQAAAAQAAAACAAAACAAAAAUAAAAKAAAAAwAAAA4AAAAJAAAABwAAAAYAAAANAAAACwAAAAwAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAAwAAAAYAAAAMAAAAGAAAADAAAABgAAAAQwAAAAUAAAAKAAAAFAAAACgAAABQAAAAIwAAAEYAAAAPAAAAHgAAADwAAAB4AAAAcwAAAGUAAABJAAAAEQAAACIAAABEAAAACwAAABYAAAAsAAAAWAAAADMAAABmAAAATwAAAB0AAAA6AAAAdAAAAGsAAABVAAAAKQAAAFIAAAAnAAAATgAAAB8AAAA+AAAAfAAAAHsAAAB1AAAAaQAAAFEAAAAhAAAAQgAAAAcAAAAOAAAAHAAAADgAAABwAAAAYwAAAEUAAAAJAAAAEgAAACQAAABIAAAAEwAAACYAAABMAAAAGwAAADYAAABsAAAAWwAAADUAAABqAAAAVwAAAC0AAABaAAAANwAAAG4AAABfAAAAPQAAAHoAAAB3AAAAbQAAAFkAAAAxAAAAYgAAAEcAAAANAAAAGgAAADQAAABoAAAAUwAAACUAAABKAAAAFwAAAC4AAABcAAAAOwAAAHYAAABvAAAAXQAAADkAAAByAAAAZwAAAE0AAAAZAAAAMgAAAGQAAABLAAAAFQAAACoAAABUAAAAKwAAAFYAAAAvAAAAXgAAAD8AAAB+AAAAfwAAAH0AAAB5AAAAcQAAAGEAAABBAAAAAAAAAP////8AAAAAAQAAAAcAAAACAAAADgAAAAgAAAA4AAAAAwAAAD8AAAAPAAAAHwAAAAkAAABaAAAAOQAAABUAAAAEAAAAHAAAAEAAAABDAAAAEAAAAHAAAAAgAAAAYQAAAAoAAABsAAAAWwAAAEYAAAA6AAAAJgAAABYAAAAvAAAABQAAADYAAAAdAAAAEwAAAEEAAABfAAAARAAAAC0AAAARAAAAKwAAAHEAAABzAAAAIQAAAE0AAABiAAAAdQAAAAsAAABXAAAAbQAAACMAAABcAAAASgAAAEcAAABPAAAAOwAAAGgAAAAnAAAAZAAAABcAAABSAAAAMAAAAHcAAAAGAAAAfgAAADcAAAANAAAAHgAAAD4AAAAUAAAAWQAAAEIAAAAbAAAAYAAAAG8AAABFAAAAawAAAC4AAAAlAAAAEgAAADUAAAAsAAAAXgAAAHIAAAAqAAAAdAAAAEwAAAAiAAAAVgAAAE4AAABJAAAAYwAAAGcAAAB2AAAAUQAAAAwAAAB9AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAABAAAAIgAAAAFAAAAkAAAAAYAAACYAAAACQAAALAAAAA3VAAAPVQAAEJUAABKVAAAAAAAALK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/ADcAAAA3AAAANwAAADcAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAMAAAAKAAAAEQAAABgAAAAgAAAAGQAAABIAAAALAAAABAAAAAUAAAAMAAAAEwAAABoAAAAhAAAAKAAAADAAAAApAAAAIgAAABsAAAAUAAAADQAAAAYAAAAHAAAADgAAABUAAAAcAAAAIwAAACoAAAAxAAAAOAAAADkAAAAyAAAAKwAAACQAAAAdAAAAFgAAAA8AAAAXAAAAHgAAACUAAAAsAAAAMwAAADoAAAA7AAAANAAAAC0AAAAmAAAAHwAAACcAAAAuAAAANQAAADwAAAA9AAAANgAAAC8AAAA3AAAAPgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAABQAAAAwAAAATAAAAGgAAACEAAAAoAAAAMAAAACkAAAAiAAAAGwAAABQAAAANAAAABgAAAA4AAAAVAAAAHAAAACMAAAAqAAAAMQAAADIAAAArAAAAJAAAAB0AAAAWAAAAHgAAACUAAAAsAAAAMwAAADQAAAAtAAAAJgAAAC4AAAA1AAAANgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAIAAAABkAAAASAAAACwAAAAQAAAAFAAAADAAAABMAAAAaAAAAIQAAACgAAAApAAAAIgAAABsAAAAUAAAADQAAABUAAAAcAAAAIwAAACoAAAArAAAAJAAAAB0AAAAlAAAALAAAAC0AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAADAAAABMAAAAaAAAAIQAAACIAAAAbAAAAFAAAABwAAAAjAAAAJAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAJAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAIEBHVoOAoYlEAMUERIECwgUBdgDFwbaARkH5QAcCG8AHgk2ACEKGgAjCw0ACQwGAAoNAwAMDQEAjw9/WiQQJT8mEfIsJxJ8ICgTuRcqFIIRKxXvDC0WoQkuFy8HMBhcBTEZBgQzGgMDNBtAAjYcsQE4HUQBOR71ADsftwA8IIoAPiFoAD8iTgAgIzsAIQksAKUl4VpAJkxIQScNOkMo8S5EKR8mRSozH0YrqBlILBgVSS13EUoudA5LL/sLTTD4CU4xYQhPMgYHMDPNBTI03gQyNQ8EMzZjAzQ31AI1OFwCNjn4ATc6pAE4O2ABOTwlATo99gA7PssAPT+rAD0gjwDBQRJbUEIETVFDLEFSRNg3U0XoL1RGPClWR3kjV0jfHldJqRpISk4XSEskFEpMnBFKTWsPS05RDU1PtgtNMEAK0FEyWFhSHE1ZU45DWlTdO1tV7jRcVq4uXVeaKVZHFiXYWXBVX1qpTGBb2URhXCI+Y10kOGNetDJdVhcu32CoVmVhRk9mYuVHZ2PPQWhkPTxjXV43aWYxUmpnD0xraDlGZ2NeQelqJ1Zsa+dQbWeFS25tl1Vva09Q7m8QWnBtIlXwb+tZcXEdWgAAAAAAAAAA1aMAAOujAAALpAAAMKQAAEqkAABppAAAfqQAAJukAADFpAAABaUAACSlAAA7pQAAUaUAAGWlAACipQAA0qUAAO6lAAARpgAASKYAAH+mAACWpgAAtqYAAOCmAAAtpwAASKcAAHOnAACPpwAAtKcAANqnAAD/pwAAEqgAACeoAAA6qAAATagAAHKoAACHqAAAm6gAALyoAADSqAAAAakAACmpAABKqQAAa6kAAJqpAACrqQAAx6kAAAWqAAAsqgAAU6oAAGeqAACVqgAAvaoAANmqAAD+qgAAIKsAAEqrAAB1qwAAk6sAAMGrAADpqwAAEKwAADusAABorAAAmKwAAMKsAADvrAAAEq0AADCtAABOrQAAhK0AAK6tAADNrQAA8K0AABeuAAAsrgAAQK4AAHWuAACFrgAAw64AAAWvAAAvrwAAW68AAIKvAACerwAAya8AAOSvAAD4rwAAD7AAABywAABEsAAAebAAALWwAADjsAAABLEAACuxAABEsQAAbLEAAI+xAACnsQAAy7EAAPCxAAD2sQAAL7IAAGmyAACIsgAAl7IAALSyAADSsgAA77IAAAizAAAhswAAY7MAAJ2zAADTswAAB7QAABu0AAAytAAAWLQAAH+0AADBtAAA/bQAAC61AABStQAAgLUAAJu1AADTtQAA/rUAAAAAAAAAAAAAAQAAAAIAAAADAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAAGAAAAAwAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAAIAAAAEAAAABwAAAAwAAAADAAAACAAAAAsAAAANAAAACQAAAAoAAAAOAAAADwAAAAAAAAABAAAABQAAAAYAAAAOAAAAAgAAAAQAAAAHAAAADQAAAA8AAAADAAAACAAAAAwAAAAQAAAAFQAAAAkAAAALAAAAEQAAABQAAAAWAAAACgAAABIAAAATAAAAFwAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAACAAAABAAAAAcAAAANAAAAEAAAABkAAAADAAAACAAAAAwAAAARAAAAGAAAABoAAAAJAAAACwAAABIAAAAXAAAAGwAAACAAAAAKAAAAEwAAABYAAAAcAAAAHwAAACEAAAAUAAAAFQAAAB0AAAAeAAAAIgAAACMAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAAbAAAAAgAAAAQAAAAHAAAADQAAABAAAAAaAAAAHAAAAAMAAAAIAAAADAAAABEAAAAZAAAAHQAAACYAAAAJAAAACwAAABIAAAAYAAAAHgAAACUAAAAnAAAACgAAABMAAAAXAAAAHwAAACQAAAAoAAAALQAAABQAAAAWAAAAIAAAACMAAAApAAAALAAAAC4AAAAVAAAAIQAAACIAAAAqAAAAKwAAAC8AAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAA4AAAAPAAAAGwAAABwAAAACAAAABAAAAAcAAAANAAAAEAAAABoAAAAdAAAAKgAAAAMAAAAIAAAADAAAABEAAAAZAAAAHgAAACkAAAArAAAACQAAAAsAAAASAAAAGAAAAB8AAAAoAAAALAAAADUAAAAKAAAAEwAAABcAAAAgAAAAJwAAAC0AAAA0AAAANgAAABQAAAAWAAAAIQAAACYAAAAuAAAAMwAAADcAAAA8AAAAFQAAACIAAAAlAAAALwAAADIAAAA4AAAAOwAAAD0AAAAjAAAAJAAAADAAAAAxAAAAOQAAADoAAAA+AAAAPwAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAAAQMVYn1NCSwBASTKjIqgRxVghe/xzYmjFWL9FCzB+GJ9T/HNBbVRin1OzQUEtEhdCS2JoVGJ+WEJLITu6KMMUAEDFWJ9TQksAQEkyoyKoEUkyv0WzQSE7STKCJzcb4A2jIgswQS26KKMiNxu/Eo4JqBF+GBIXwxSoEeANjgnfBAAAAAAAAPA/72FIsVAx9j/Kb02Rruf0P6oRbO9i0PI/AAAAAAAA8D87v6fAaSTpP7sgx3t6UeE/Xaty3lWo0T8AwDDwDMw8/APDM/MPzz//gECwcIxMvHyDQ7Nzj0+/fyDgENAs7BzcI+MT0y/vH9+gYJBQrGycXKNjk1Ovb59fCMg4+ATENPQLyzv7B8c394hIuHiERLR0i0u7e4dHt3co6BjYJOQU1CvrG9sn5xfXqGiYWKRklFSra5tbp2eXVwLCMvIOzj7+AcEx8Q3NPf2CQrJyjk6+foFBsXGNTb19IuIS0i7uHt4h4RHRLe0d3aJiklKubp5eoWGRUa1tnV0Kyjr6BsY29gnJOfkFxTX1ikq6eoZGtnaJSbl5hUW1dSrqGtom5hbWKekZ2SXlFdWqappapmaWVqlpmVmlZZVV3hIElQAAAAD///////////////8AAAAAAAAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNMAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAyACIAIgAiACIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAFgBMAEwATABMAEwATABMAEwATABMAEwATABMAEwATACNgI2AjYCNgI2AjYCNgI2AjYCNgEwATABMAEwATABMAEwAjVCNUI1QjVCNUI1QjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUEwATABMAEwATABMAI1gjWCNYI1gjWCNYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGBMAEwATABMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAAAAAAAAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAAAAAAAAAAAAAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAAAAAAAAAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAApD8AABVdAADMPwAAiWkAAIAzAAAAAAAAzD8AAHRsAAA4NgAAAAAAAMw/AAAjdwAAGD0AAAAAAADMPwAAi4cAABg9AAAAAAAAzD8AAP+HAAAYPQAAAAAAADhAAADlngAAAAAAAAEAAADwMwAAAAAAAKQ/AAAknwAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAABG4QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAIyQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAYzQAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApD8AAEe3AADMPwAAp7cAAFA2AAAAAAAAzD8AAFS3AABgNgAAAAAAAKQ/AAB1twAAzD8AAIK3AABANgAAAAAAAMw/AADxtwAAODYAAAAAAADMPwAAAbgAAHg2AAAAAAAAzD8AABK4AABQNgAAAAAAAMw/AAA0uAAAmDYAAAAAAADMPwAAWLgAAFA2AAAAAAAAHEAAAIC4AAAcQAAAgrgAABxAAACEuAAAHEAAAIa4AAAcQAAAiLgAABxAAACKuAAAHEAAAIy4AAAcQAAAjrgAABxAAACQuAAAHEAAAA3BAAAcQAAAkrgAABxAAACUuAAAHEAAAJa4AADMPwAAmLgAAEA2AAAAAAAApD8AANu7AACkPwAA+rsAAKQ/AAAZvAAApD8AADi8AACkPwAAV7wAAKQ/AAB2vAAApD8AAJW8AACkPwAAtLwAAKQ/AADTvAAApD8AAPK8AACkPwAAEb0AAKQ/AAAwvQAApD8AAE+9AAA4QAAAYr0AAAAAAAABAAAA8DMAAAAAAAA4QAAAob0AAAAAAAABAAAA8DMAAAAAAADMPwAA8r0AAOg3AAAAAAAApD8AAOC9AADMPwAAHL4AAOg3AAAAAAAApD8AAEa+AACkPwAAd74AADhAAACovgAAAAAAAAEAAADYNwAAA/T//zhAAADXvgAAAAAAAAEAAADwNwAAA/T//zhAAAAGvwAAAAAAAAEAAADYNwAAA/T//zhAAAA1vwAAAAAAAAEAAADwNwAAA/T//8w/AABkvwAACDgAAAAAAADMPwAAfb8AAAA4AAAAAAAAzD8AALy/AAAIOAAAAAAAAMw/AADUvwAAADgAAAAAAADMPwAA7L8AAMA4AAAAAAAAzD8AAADAAAAQPQAAAAAAAMw/AAAWwAAAwDgAAAAAAAA4QAAAL8AAAAAAAAACAAAAwDgAAAIAAAAAOQAAAAAAADhAAABzwAAAAAAAAAEAAAAYOQAAAAAAAKQ/AACJwAAAOEAAAKLAAAAAAAAAAgAAAMA4AAACAAAAQDkAAAAAAAA4QAAA5sAAAAAAAAABAAAAGDkAAAAAAAA4QAAAD8EAAAAAAAACAAAAwDgAAAIAAAB4OQAAAAAAADhAAABTwQAAAAAAAAEAAACQOQAAAAAAAKQ/AABpwQAAOEAAAILBAAAAAAAAAgAAAMA4AAACAAAAuDkAAAAAAAA4QAAAxsEAAAAAAAABAAAAkDkAAAAAAAA4QAAAHMMAAAAAAAADAAAAwDgAAAIAAAD4OQAAAgAAAAA6AAAACAAApD8AAIPDAACkPwAAYcMAADhAAACWwwAAAAAAAAMAAADAOAAAAgAAAPg5AAACAAAAMDoAAAAIAACkPwAA28MAADhAAAD9wwAAAAAAAAIAAADAOAAAAgAAAFg6AAAACAAApD8AAELEAAA4QAAAV8QAAAAAAAACAAAAwDgAAAIAAABYOgAAAAgAADhAAACcxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAApD8AALjEAAA4QAAAzcQAAAAAAAACAAAAwDgAAAIAAACgOgAAAgAAADhAAADpxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAAOEAAAAXFAAAAAAAAAgAAAMA4AAACAAAAoDoAAAIAAAA4QAAAMMUAAAAAAAACAAAAwDgAAAIAAAAoOwAAAAAAAKQ/AAB2xQAAOEAAAJrFAAAAAAAAAgAAAMA4AAACAAAAUDsAAAAAAACkPwAA4MUAADhAAAD/xQAAAAAAAAIAAADAOAAAAgAAAHg7AAAAAAAApD8AAEXGAAA4QAAAXsYAAAAAAAACAAAAwDgAAAIAAACgOwAAAAAAAKQ/AACkxgAAOEAAAL3GAAAAAAAAAgAAAMA4AAACAAAAyDsAAAIAAACkPwAA0sYAADhAAABpxwAAAAAAAAIAAADAOAAAAgAAAMg7AAACAAAAzD8AAOrGAAAAPAAAAAAAADhAAAANxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAApD8AADDHAADMPwAAR8cAAAA8AAAAAAAAOEAAAH7HAAAAAAAAAgAAAMA4AAACAAAAIDwAAAIAAAA4QAAAoMcAAAAAAAACAAAAwDgAAAIAAAAgPAAAAgAAADhAAADCxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAAzD8AAOXHAADAOAAAAAAAADhAAAD7xwAAAAAAAAIAAADAOAAAAgAAAMg8AAACAAAApD8AAA3IAAA4QAAAIsgAAAAAAAACAAAAwDgAAAIAAADIPAAAAgAAAMw/AAA/yAAAwDgAAAAAAADMPwAAVMgAAMA4AAAAAAAApD8AAGnIAAA4QAAAgsgAAAAAAAABAAAAED0AAAAAAAABAAAAAAAAAIgzAAABAAAAAgAAAAAAAACAMwAAAwAAAAQAAAAAAAAAmDMAAAUAAAAGAAAAAQAAALlSjD6OWuc+uVKMPgAAAACoMwAABwAAAAgAAAAJAAAAAQAAAAoAAAAAAAAAuDMAAAcAAAALAAAADAAAAAIAAAANAAAAAAAAAMgzAAAHAAAADgAAAA8AAAADAAAAEAAAAP/////+/////f///8g2AAAANwAAIDcAAMg2AAAANwAAADcAACg3AAAANwAAyDYAAAA3AAAoNwAAADcAAMg2AAAANwAAADcAANgzAAAANwAAADcAAAA3AAAANwAAADcAANgzAAAANwAAADcAAAEAAAAAAAAAAgAAAEAGAACAPgAAAAAAAIgTAABAFgAAFAAAAEMuVVRGLTgAAAAAAAAAAAAAAAAAUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA+DMAAIg0AAAYNQAAGDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGwAAIB8AACAlAABfcIkA/wkvDwAAAABANgAAEQAAABIAAAATAAAAFAAAAAQAAAABAAAAAQAAAAEAAAAAAAAAaDYAABEAAAAVAAAAEwAAABQAAAAEAAAAAgAAAAIAAAACAAAAAAAAAHg2AAAWAAAAFwAAAAQAAAAAAAAAiDYAABYAAAAYAAAABAAAAAAAAAC4NgAAEQAAABkAAAATAAAAFAAAAAUAAAAAAAAAMDcAABEAAAAaAAAAEwAAABQAAAAEAAAAAwAAAAMAAAADAAAAAAAAAOg3AAAbAAAAHAAAAAAAAAAAOAAAHQAAAB4AAAABAAAABgAAAAQAAAAEAAAABQAAAAYAAAAHAAAABwAAAAgAAAAEAAAACAAAAAUAAAAAAAAACDgAAB8AAAAgAAAAAgAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAAsAAAAMAAAABgAAAAsAAAAHAAAACAAAAAAAAAAQOAAAIQAAACIAAAD4////+P///xA4AAAjAAAAJAAAAPRAAAAIQQAACAAAAAAAAAAoOAAAJQAAACYAAAD4////+P///yg4AAAnAAAAKAAAACRBAAA4QQAABAAAAAAAAABAOAAAKQAAACoAAAD8/////P///0A4AAArAAAALAAAAFRBAABoQQAABAAAAAAAAABYOAAALQAAAC4AAAD8/////P///1g4AAAvAAAAMAAAAIRBAACYQQAAAAAAAHA4AAAfAAAAMQAAAAMAAAAJAAAABQAAAAUAAAANAAAACgAAAAoAAAALAAAADAAAAAYAAAAMAAAACAAAAAAAAACAOAAAHQAAADIAAAAEAAAABgAAAAQAAAAEAAAADgAAAAYAAAAHAAAABwAAAAgAAAAEAAAADQAAAAkAAAAAAAAAkDgAAB8AAAAzAAAABQAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAA8AAAAQAAAACgAAAAsAAAAHAAAAAAAAAKA4AAAdAAAANAAAAAYAAAAGAAAABAAAAAQAAAAFAAAABgAAAAcAAAARAAAAEgAAAAsAAAAIAAAABQAAAAAAAACwOAAANQAAADYAAAA3AAAAAQAAAAYAAAAOAAAAAAAAANA4AAA4AAAAOQAAADcAAAACAAAABwAAAA8AAAAAAAAA4DgAADoAAAA7AAAANwAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAACA5AAA8AAAAPQAAADcAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAAAAAABYOQAAPgAAAD8AAAA3AAAAAwAAAAQAAAAXAAAABQAAABgAAAABAAAAAgAAAAYAAAAAAAAAmDkAAEAAAABBAAAANwAAAAcAAAAIAAAAGQAAAAkAAAAaAAAAAwAAAAQAAAAKAAAAAAAAANA5AABCAAAAQwAAADcAAAATAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAAA+P///9A5AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAAAAAAAg6AABEAAAARQAAADcAAAAbAAAAIAAAACEAAAAiAAAAIwAAACQAAAACAAAA+P///wg6AAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAAAAAAAAODoAAEYAAABHAAAANwAAAAEAAAAAAAAAYDoAAEgAAABJAAAANwAAAAIAAAAAAAAAgDoAAEoAAABLAAAANwAAACMAAAAkAAAABwAAAAgAAAAJAAAACgAAACUAAAALAAAADAAAAAAAAACoOgAATAAAAE0AAAA3AAAAJgAAACcAAAANAAAADgAAAA8AAAAQAAAAKAAAABEAAAASAAAAAAAAAMg6AABOAAAATwAAADcAAAApAAAAKgAAABMAAAAUAAAAFQAAABYAAAArAAAAFwAAABgAAAAAAAAA6DoAAFAAAABRAAAANwAAACwAAAAtAAAAGQAAABoAAAAbAAAAHAAAAC4AAAAdAAAAHgAAAAAAAAAIOwAAUgAAAFMAAAA3AAAAAwAAAAQAAAAAAAAAMDsAAFQAAABVAAAANwAAAAUAAAAGAAAAAAAAAFg7AABWAAAAVwAAADcAAAABAAAAJQAAAAAAAACAOwAAWAAAAFkAAAA3AAAAAgAAACYAAAAAAAAAqDsAAFoAAABbAAAANwAAABAAAAAGAAAAHwAAAAAAAADQOwAAXAAAAF0AAAA3AAAAEQAAAAcAAAAgAAAAAAAAACg8AABeAAAAXwAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAPA7AABeAAAAYAAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAFg8AABhAAAAYgAAADcAAAAFAAAABgAAAA0AAAAyAAAAMwAAAA4AAAA0AAAAAAAAAJg8AABjAAAAZAAAADcAAAAAAAAAqDwAAGUAAABmAAAANwAAAAwAAAASAAAADQAAABMAAAAOAAAAAwAAABQAAAAPAAAAAAAAAPA8AABnAAAAaAAAADcAAAA1AAAANgAAACEAAAAiAAAAIwAAAAAAAAAAPQAAaQAAAGoAAAA3AAAANwAAADgAAAAkAAAAJQAAACYAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAB0AAAAcgAAAHUAAABlAAAAAAAAAAAAAADAOAAAXgAAAGsAAAA3AAAAAAAAANA8AABeAAAAbAAAADcAAAAVAAAABAAAAAUAAAAGAAAADwAAABYAAAAQAAAAFwAAABEAAAAHAAAAGAAAABAAAAAAAAAAODwAAF4AAABtAAAANwAAAAcAAAAIAAAAEQAAADkAAAA6AAAAEgAAADsAAAAAAAAAeDwAAF4AAABuAAAANwAAAAkAAAAKAAAAEwAAADwAAAA9AAAAFAAAAD4AAAAAAAAAADwAAF4AAABvAAAANwAAAAMAAAAEAAAACwAAAC8AAAAwAAAADAAAADEAAAAAAAAAADoAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAAAAAAMDoAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABFcnJvcjogbGFiZWxpbmcgd29yayBvdmVyZmxvdy4KAFVua25vd24gb3IgdW5zdXBwb3J0ZWQgbGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgcmVxdWVzdGVkLiBTZXQgdG8gbWFudWFsLgoATGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgc2V0IHRvICVzLgoATUFOVUFMAEFVVE9fTUVESUFOAEFVVE9fT1RTVQBBVVRPX0FEQVBUSVZFAEFVVE9fQlJBQ0tFVElORwBFcnJvcjogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICglZCkgcmVxdWVzdGVkLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIG1hcmtlciBjb3VudHMgLVslM2Q6ICUzZF0gWyUzZDogJTNkXSBbJTNkOiAlM2RdKy4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgBtZWRpYW4AT3RzdQBBdXRvIHRocmVzaG9sZCAoJXMpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAD8/PyAxCgA/Pz8gMgoAPz8/IDMKAEVycm9yOiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARXJyb3I6IGNhbid0IGxvYWQgcGF0dGVybiBmcm9tIE5VTEwgYnVmZmVyLgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgAgCQoNAFBhdHRlcm4gRGF0YSByZWFkIGVycm9yISEKAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgbGVuZ3RoLgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAEVycm9yICglZCk6IHVuYWJsZSB0byByZWFkIGZyb20gZmlsZS4AYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAEVycm9yOiBpY3BHZXRKX1VfWGMARXJyb3IgMTogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDY6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNzogaWNwR2V0SW5pdFh3MlhjCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogRmlyc3QgbGluZSBtdXN0IGJlIG51bWJlciBvZiBtYXJrZXIgY29uZmlncyB0byByZWFkLgoAJWxsdSVjAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGRpcmVjdG9yeSBuYW1lLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gbG9hZCBwYXR0ZXJuICclcycuCgAlbGYARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IEZpcnN0IGxpbmUgbXVzdCBiZSBwYXR0ZXJuIHdpZHRoLgoAJWxmICVsZiAlbGYgJWxmACVmICVmAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJywgbWFya2VyIGRlZmluaXRpb24gJTNkOiBMaW5lcyAyIC0gNCBtdXN0IGJlIG1hcmtlciB0cmFuc2Zvcm0uCgBbJXNdIABkZWJ1ZwBpbmZvAHdhcm5pbmcAZXJyb3IAJXMlcwAuaXNldABFcnJvcjogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciByZWFkaW5nIGltYWdlU2V0LgoASW1hZ2VzZXQgY29udGFpbnMgJWQgaW1hZ2VzLgoARmFsbGluZyBiYWNrIHRvIHJlYWRpbmcgJyVzJXMnIGluIEFSVG9vbEtpdCB2NC54IGZvcm1hdC4KAEVycm9yIHJlYWRpbmcgSlBFRyBmaWxlLgoARXJyb3IgcmVhZGluZyBKUEVHIGZpbGUgaGVhZGVyLgoAJWYARmlsZSBvcGVuIGVycm9yLiAlcwoAUmVhZCBlcnJvciEhCgByAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAAJXMlcwoAJWQACiMjIyBTdXJmYWNlIE5vLiVkICMjIwoAJXMAICBSZWFkIEltYWdlU2V0LgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5pc2V0Jy4KACAgICBlbmQuCgAgIFJlYWQgRmVhdHVyZVNldC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuZnNldCcuCgAgIFJlYWQgTWFya2VyU2V0LgoAbXJrAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMubXJrJy4KACVmICVmICVmICVmAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAGpwZwBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0cjEvcmVmRGF0YVNldFB0cjIuCgBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0ci4KAHJiAGtwbUxvYWRSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldFB0ci4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciBsb2FkaW5nIEtQTSBkYXRhOiBlcnJvciByZWFkaW5nIGRhdGEuCgBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiBOVUxMIGtwbUhhbmRsZS9yZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiByZWZEYXRhU2V0LgoAcG9pbnRzLSVkCgBrcG1NYXRjaGluZygpOiBOVUxMIGtwbUhhbmRsZS9pbkltYWdlTHVtYS4KAFBhZ2VbJWRdICBwcmU6JTNkLCBhZnQ6JTNkLCBlcnJvciA9ICVmCgAlcy4lcwBBc3NlcnRpb24gYHB5cmFtaWQtPnNpemUoKSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmNwcABQeXJhbWlkIGlzIG5vdCBhbGxvY2F0ZWQAT2N0YXZlIG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBtSW1hZ2VzLnNpemUoKSA+IDBgIGZhaWxlZCBpbiAATGFwbGFjaWFuIHB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZABBc3NlcnRpb24gYHB5cmFtaWQtPm51bU9jdGF2ZXMoKSA+IDBgIGZhaWxlZCBpbiAAUHlyYW1pZCBkb2VzIG5vdCBjb250YWluIGFueSBsZXZlbHMAQXNzZXJ0aW9uIGBkeW5hbWljX2Nhc3Q8Y29uc3QgQmlub21pYWxQeXJhbWlkMzJmKj4ocHlyYW1pZClgIGZhaWxlZCBpbiAAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAEFzc2VydGlvbiBgaW0xLnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBc3NlcnRpb24gYGltMS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgd2lkdGgAQXNzZXJ0aW9uIGBkLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodABBc3NlcnRpb24gYGltMS53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHJvdyA8IG1IZWlnaHRgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2ZyYW1ld29yay9pbWFnZS5oAHJvdyBvdXQgb2YgYm91bmRzAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQBEb0cgUHlyYW1pZABOb24tbWF4IHN1cHByZXNzaW9uAFN1YnBpeGVsAHBydW5lRmVhdHVyZXMARmluZCBPcmllbnRhdGlvbnMAQXNzZXJ0aW9uIGBtQnVja2V0cy5zaXplKCkgPT0gbU51bUJ1Y2tldHNYYCBmYWlsZWQgaW4gAEJ1Y2tldHMgYXJlIG5vdCBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBtQnVja2V0c1swXS5zaXplKCkgPT0gbU51bUJ1Y2tldHNZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUZlYXR1cmVQb2ludHMuc2l6ZSgpIDw9IG1NYXhOdW1GZWF0dXJlUG9pbnRzYCBmYWlsZWQgaW4gAFRvbyBtYW55IGZlYXR1cmUgcG9pbnRzAEFzc2VydGlvbiBgYnVja2V0WzBdLmZpcnN0ID49IGJ1Y2tldFtuXS5maXJzdGAgZmFpbGVkIGluIABudGhfZWxlbWVudCBmYWlsZWQAQXNzZXJ0aW9uIGBrcC5zY2FsZSA8IG1MYXBsYWNpYW5QeXJhbWlkLm51bVNjYWxlUGVyT2N0YXZlKClgIGZhaWxlZCBpbiAARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBga3Auc2NvcmUgPT0gbGFwMS5nZXQ8ZmxvYXQ+KHkpW3hdYCBmYWlsZWQgaW4gAFNjb3JlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIERvRyBpbWFnZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMS5oZWlnaHQoKSA9PSBsYXAyLmhlaWdodCgpYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvRG9HX3NjYWxlX2ludmFyaWFudF9kZXRlY3Rvci5oAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKSkgJiYgKGxhcDEud2lkdGgoKSA9PSBsYXAyLndpZHRoKCkpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAHggb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIABJbWFnZSBkaW1lbnNpb25zIGluY29uc2lzdGVudABBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDIud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGxhcDAuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvaW50ZXJwb2xhdGUuaABmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgaW0ud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB4X2Rpdl8yLTAuNWYgPj0gMGAgZmFpbGVkIGluIAB4X2Rpdl8yIG91dCBvZiBib3VuZHMgb3V0IG9mIGJvdW5kcyBmb3IgaW50ZXJwb2xhdGlvbgBBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAEFzc2VydGlvbiBgeF9kaXZfMiswLjVmIDwgbGFwMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeV9kaXZfMiswLjVmIDwgbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMS5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPCBtSW1hZ2VzLnNpemUoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgcmFuZ2UATjZ2aXNpb24xOEJpbm9taWFsUHlyYW1pZDMyZkUAQXNzZXJ0aW9uIGB3aWR0aCA+PSA1YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5jcHAASW1hZ2UgaXMgdG9vIHNtYWxsAEFzc2VydGlvbiBgaGVpZ2h0ID49IDVgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAQXNzZXJ0aW9uIGBpbWFnZS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBoYXZlIDEgY2hhbm5lbABBc3NlcnRpb24gYG1QeXJhbWlkLnNpemUoKSA9PSBtTnVtT2N0YXZlcyptTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQAQXNzZXJ0aW9uIGBpbWFnZS53aWR0aCgpID09IG1QeXJhbWlkWzBdLndpZHRoKClgIGZhaWxlZCBpbiAASW1hZ2Ugb2Ygd3Jvbmcgc2l6ZSBmb3IgcHlyYW1pZABBc3NlcnRpb24gYGltYWdlLmhlaWdodCgpID09IG1QeXJhbWlkWzBdLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAARGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIGEgZmxvYXQAVW5rbm93biBpbWFnZSB0eXBlAFVuc3VwcG9ydGVkIGltYWdlIHR5cGUATjZ2aXNpb245RXhjZXB0aW9uRQBBc3NlcnRpb24gYGltLndpZHRoKCkgPT0gaW0uc3RlcCgpL3NpemVvZihmbG9hdClgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmNwcABTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEFzc2VydGlvbiBgeCA+PSAwYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHggPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS53aWR0aCgpYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAHkgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHkgPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS5oZWlnaHQoKWAgZmFpbGVkIGluIAB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAQXNzZXJ0aW9uIGBnLmNoYW5uZWxzKCkgPT0gMmAgZmFpbGVkIGluIABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBtYXhfaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABNYXhpbXVtIGJpbiBzaG91bGQgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgASGlzdG9ncmFtIHBvaW50ZXIgaXMgTlVMTABBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYG1hZ25pdHVkZSA+PSAwYCBmYWlsZWQgaW4gAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAQXNzZXJ0aW9uIGBudW1fYmlucyA+PSAwYCBmYWlsZWQgaW4gAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gAHcxIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAHcyIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBiMSA+PSAwICYmIGIxIDwgbnVtX2JpbnNgIGZhaWxlZCBpbiAAYjEgYmluIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGIyID49IDAgJiYgYjIgPCBudW1fYmluc2AgZmFpbGVkIGluIABiMiBiaW4gaW5kZXggb3V0IG9mIHJhbmdlAElEIGFscmVhZHkgZXhpc3RzAEJ1aWxkIFB5cmFtaWQARXh0cmFjdCBGZWF0dXJlcwBBc3NlcnRpb24gYGFzc2lnbm1lbnQuc2l6ZSgpID09IG51bV9pbmRpY2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9iaW5hcnlfaGllcmFyY2hpY2FsX2NsdXN0ZXJpbmcuaABBc3NpZ25tZW50IHNpemUgd3JvbmcAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2lnbm1lbnQgaXMgaW52YWxpZABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABBc3NpZ25tZW50IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpdC0+c2Vjb25kLnNpemUoKSAhPSAwYCBmYWlsZWQgaW4gAENsdXN0ZXIgbXVzdCBoYXZlIGF0bGVhc2V0IDEgZmVhdHVyZQBBc3NlcnRpb24gYG1LID09IG1DZW50ZXJzLnNpemUoKWAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMva21lZG9pZHMuaABrIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgY2VudGVycwBBc3NlcnRpb24gYG51bV9mZWF0dXJlcyA+IDBgIGZhaWxlZCBpbiAATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA8PSBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA+PSBtS2AgZmFpbGVkIGluIABOb3QgZW5vdWdoIGZlYXR1cmVzAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBudW1fY2VudGVycyA+IDBgIGZhaWxlZCBpbiAAVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAxIGNlbnRlcgAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAQXNzZXJ0aW9uIGBkZXRlY3RvcmAgZmFpbGVkIGluIABEZXRlY3RvciBpcyBOVUxMAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQeXJhbWlkIGlzIGVtcHR5AEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSU42dmlzaW9uOEtleWZyYW1lSUxpOTZFRUVFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAWyVzXSBbJXNdIFslc10gOiBGb3VuZCAlZCBmZWF0dXJlcyBpbiBxdWVyeQBib29sIHZpc2lvbjo6VmlzdWFsRGF0YWJhc2U8dmlzaW9uOjpGUkVBS0V4dHJhY3RvciwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIHZpc2lvbjo6QmluYXJ5RmVhdHVyZU1hdGNoZXI8OTY+ID46OnF1ZXJ5KGNvbnN0IHZpc2lvbjo6R2F1c3NpYW5TY2FsZVNwYWNlUHlyYW1pZCAqKSBbRkVBVFVSRV9FWFRSQUNUT1IgPSB2aXNpb246OkZSRUFLRXh0cmFjdG9yLCBTVE9SRSA9IHZpc2lvbjo6QmluYXJ5RmVhdHVyZVN0b3JlLCBNQVRDSEVSID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj5dAEZpbmQgTWF0Y2hlcyAoMSkASG91Z2ggVm90aW5nICgxKQBGaW5kIEhvdWdoIE1hdGNoZXMgKDEpAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkARmluZCBNYXRjaGVzICgyKQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikARXN0aW1hdGUgSG9tb2dyYXBoeSAoMikARmluZCBJbmxpZXJzICgyKQBBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2ZlYXR1cmVfbWF0Y2hlci1pbmxpbmUuaABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBBc3NlcnRpb24gYGJlc3RfaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKWAgZmFpbGVkIGluIABTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAQXNzZXJ0aW9uIGBoeXAuc2l6ZSgpID49IDkqbWF4X251bV9oeXBvdGhlc2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9ob21vZ3JhcGh5X2VzdGltYXRpb24vcm9idXN0X2hvbW9ncmFwaHkuaABoeXAgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIDkqbWF4X251bV9oeXBvdGhlc2VzAEFzc2VydGlvbiBgdG1wX2kuc2l6ZSgpID49IG51bV9wb2ludHNgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABoeXBfY29zdHMgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG1heF9udW1faHlwb3RoZXNlcwBBc3NlcnRpb24gYG4gPD0gaW5fbWF0Y2hlcy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgbVJvb3QuZ2V0KClgIGZhaWxlZCBpbiAAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAATWluaW11bSBpbmRleCBub3Qgc2V0AEFzc2VydGlvbiBgeCA+PSBtTWluWGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaAB4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYHggPCBtTWF4WGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAeSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGB5IDwgbU1heFlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA+IC1QSWAgZmFpbGVkIGluIABhbmdsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABzY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBzY2FsZSA8IG1NYXhTY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGluZGV4ID49IDBgIGZhaWxlZCBpbiAAaW5kZXggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAGJpblggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA8IG1OdW1YQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblkgPj0gMGAgZmFpbGVkIGluIABiaW5ZIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpblkgPCBtTnVtWUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblNjYWxlID49IDBgIGZhaWxlZCBpbiAAYmluU2NhbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2l6ZSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcABzaXplIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VXaWR0aCA+IDBgIGZhaWxlZCBpbiAAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1SZWZJbWFnZUhlaWdodCA+IDBgIGZhaWxlZCBpbiAAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBuID4gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvdXRpbHMvcGFydGlhbF9zb3J0LmgAbiBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgcHlyYW1pZGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZnJlYWsuaABQeXJhbWlkIGlzIE5VTEwAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIABGZWF0dXJlIHN0b3JlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBudW1fcG9pbnRzID09IHBvaW50cy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHNhbWUgc2l6ZQBBc3NlcnRpb24gYG9jdGF2ZSA+PSAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAE9jdGF2ZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABTY2FsZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlACVtLSVkLSVZLSVILSVNLSVTAEFzc2VydGlvbiBgd2lkdGggPiAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAFdpZHRoIGNhbm5vdCBiZSB6ZXJvAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABIZWlnaHQgY2Fubm90IGJlIHplcm8AQXNzZXJ0aW9uIGBzdGVwID49IHdpZHRoYCBmYWlsZWQgaW4gAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAEFzc2VydGlvbiBgY2hhbm5lbHMgPiAwYCBmYWlsZWQgaW4gAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwBBc3NlcnRpb24gYG1EYXRhLmdldCgpYCBmYWlsZWQgaW4gAERhdGEgcG9pbnRlciBpcyBOVUxMAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSWhFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQaE5TXzE0ZGVmYXVsdF9kZWxldGVJaEVFTlNfOWFsbG9jYXRvckloRUVFRQBJbnZhbGlkIGltYWdlIHR5cGUAMTZOdWxsQXJyYXlEZWxldGVySWhFAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQBBc3NlcnRpb24gYG1TdGFydFRpbWUgPj0gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAIGxpbmUgADogAENsb2NrIGhhcyBub3QgYmVlbiBzdGFydGVkAEFzc2VydGlvbiBgbVN0b3BUaW1lID49IDBgIGZhaWxlZCBpbiAAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMAIElORk8gIAB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBzZXR1cAB0ZWFyZG93bgBzZXR1cEFSMgBfYWRkTWFya2VyAF9hZGRNdWx0aU1hcmtlcgBfYWRkTkZUTWFya2VyAGdldE11bHRpTWFya2VyTnVtAGdldE11bHRpTWFya2VyQ291bnQAX2xvYWRDYW1lcmEAc2V0TWFya2VySW5mb0RpcgBzZXRNYXJrZXJJbmZvVmVydGV4AGdldFRyYW5zTWF0U3F1YXJlAGdldFRyYW5zTWF0U3F1YXJlQ29udABnZXRUcmFuc01hdE11bHRpU3F1YXJlAGdldFRyYW5zTWF0TXVsdGlTcXVhcmVSb2J1c3QAZGV0ZWN0TWFya2VyAGdldE1hcmtlck51bQBkZXRlY3RORlRNYXJrZXIAZ2V0TXVsdGlFYWNoTWFya2VyAGdldE1hcmtlcgBnZXRORlRNYXJrZXIAc2V0RGVidWdNb2RlAGdldERlYnVnTW9kZQBnZXRQcm9jZXNzaW5nSW1hZ2UAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldFRocmVzaG9sZABnZXRUaHJlc2hvbGQAc2V0UGF0dGVybkRldGVjdGlvbk1vZGUAZ2V0UGF0dGVybkRldGVjdGlvbk1vZGUAc2V0UGF0dFJhdGlvAGdldFBhdHRSYXRpbwBzZXRNYXRyaXhDb2RlVHlwZQBnZXRNYXRyaXhDb2RlVHlwZQBzZXRMYWJlbGluZ01vZGUAZ2V0TGFiZWxpbmdNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBFUlJPUl9BUkNPTlRST0xMRVJfTk9UX0ZPVU5EAEVSUk9SX01VTFRJTUFSS0VSX05PVF9GT1VORABFUlJPUl9NQVJLRVJfSU5ERVhfT1VUX09GX0JPVU5EUwBBUl9ERUJVR19ESVNBQkxFAEFSX0RFQlVHX0VOQUJMRQBBUl9ERUZBVUxUX0RFQlVHX01PREUAQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAEFSX0xBQkVMSU5HX0JMQUNLX1JFR0lPTgBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfSU1BR0VfUFJPQ19GUkFNRV9JTUFHRQBBUl9JTUFHRV9QUk9DX0ZJRUxEX0lNQUdFAEFSX0RFRkFVTFRfSU1BR0VfUFJPQ19NT0RFAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SAEFSX1RFTVBMQVRFX01BVENISU5HX01PTk8AQVJfTUFUUklYX0NPREVfREVURUNUSU9OAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0RFRkFVTFRfUEFUVEVSTl9ERVRFQ1RJT05fTU9ERQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZAEFSX1VTRV9UUkFDS0lOR19ISVNUT1JZX1YyAEFSX0RFRkFVTFRfTUFSS0VSX0VYVFJBQ1RJT05fTU9ERQBBUl9NQVhfTE9PUF9DT1VOVABBUl9MT09QX0JSRUFLX1RIUkVTSABBUl9MT0dfTEVWRUxfREVCVUcAQVJfTE9HX0xFVkVMX0lORk8AQVJfTE9HX0xFVkVMX1dBUk4AQVJfTE9HX0xFVkVMX0VSUk9SAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9NQVRSSVhfQ09ERV8zeDMAQVJfTUFUUklYX0NPREVfM3gzX0hBTU1JTkc2MwBBUl9NQVRSSVhfQ09ERV8zeDNfUEFSSVRZNjUAQVJfTUFUUklYX0NPREVfNHg0AEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfNV81AEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX01BTlVBTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX09UU1UAQVJfTEFCRUxJTkdfVEhSRVNIX01PREVfQVVUT19BREFQVElWRQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTk9ORQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUEFUVEVSTl9FWFRSQUNUSU9OAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9DT05UUkFTVABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfRURDX0ZBSUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1IAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX0hFVVJJU1RJQ19UUk9VQkxFU09NRV9NQVRSSVhfQ09ERVMAYWxsb2NhdG9yPFQ+OjphbGxvY2F0ZShzaXplX3QgbikgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZQBJbWFnZSBwcm9jLiBtb2RlIHNldCB0byAlZC4KAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgB2aWlmAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAFRocmVzaG9sZCBzZXQgdG8gJWQKAHZpaWkAVGhyZXNob2xkIG1vZGUgc2V0IHRvICVkCgBkaWkAdmlpZABpaQB2aWkAb24uAG9mZi4ARGVidWcgbW9kZSBzZXQgdG8gJXMKAFRyYWNraW5nIGxvc3QuICVkCgBUcmFja2VkIHBhZ2UgJWQgKG1heCAlZCkuCgB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAwOyBpZiAoIWFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdKSB7IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdID0gKHsgaWQ6IDAsIGVycm9yOiAtMSwgZm91bmQ6IDAsIHBvc2U6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSB9KTsgfSB2YXIgbWFya2VySW5mbyA9IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdOyBtYXJrZXJJbmZvWyJpZCJdID0gJGFbaSsrXTsgbWFya2VySW5mb1siZXJyb3IiXSA9ICRhW2krK107IG1hcmtlckluZm9bImZvdW5kIl0gPSAxOyBtYXJrZXJJbmZvWyJwb3NlIl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bM10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bN10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sicG9zZSJdWzExXSA9ICRhW2krK107IH0AeyB2YXIgJGEgPSBhcmd1bWVudHM7IHZhciBpID0gMDsgaWYgKCFhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSA9ICh7IGlkOiAwLCBlcnJvcjogLTEsIGZvdW5kOiAwLCBwb3NlOiBbMCwwLDAsMCwgMCwwLDAsMCwgMCwwLDAsMF0gfSk7IH0gdmFyIG1hcmtlckluZm8gPSBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXTsgbWFya2VySW5mb1siaWQiXSA9ICRhW2krK107IG1hcmtlckluZm9bImVycm9yIl0gPSAtMTsgbWFya2VySW5mb1siZm91bmQiXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVswXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsyXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVszXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs0XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs1XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs2XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs3XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs4XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs5XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxMF0gPSAwOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTFdID0gMDsgfQB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAxMjsgaWYgKCFhcnRvb2xraXRbIm1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIm1hcmtlckluZm8iXSA9ICh7IHBvczogWzAsMF0sIGxpbmU6IFtbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdXSwgdmVydGV4OiBbWzAsMF0sIFswLDBdLCBbMCwwXSwgWzAsMF1dIH0pOyB9IHZhciBtYXJrZXJJbmZvID0gYXJ0b29sa2l0WyJtYXJrZXJJbmZvIl07IG1hcmtlckluZm9bImFyZWEiXSA9ICQwOyBtYXJrZXJJbmZvWyJpZCJdID0gJDE7IG1hcmtlckluZm9bImlkUGF0dCJdID0gJDI7IG1hcmtlckluZm9bImlkTWF0cml4Il0gPSAkMzsgbWFya2VySW5mb1siZGlyIl0gPSAkNDsgbWFya2VySW5mb1siZGlyUGF0dCJdID0gJDU7IG1hcmtlckluZm9bImRpck1hdHJpeCJdID0gJDY7IG1hcmtlckluZm9bImNmIl0gPSAkNzsgbWFya2VySW5mb1siY2ZQYXR0Il0gPSAkODsgbWFya2VySW5mb1siY2ZNYXRyaXgiXSA9ICQ5OyBtYXJrZXJJbmZvWyJwb3MiXVswXSA9ICQxMDsgbWFya2VySW5mb1sicG9zIl1bMV0gPSAkMTE7IG1hcmtlckluZm9bImxpbmUiXVswXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzBdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMF1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzFdWzFdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzNdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bM11bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJlcnJvckNvcnJlY3RlZCJdID0gJGFbaSsrXTsgfQB7IGlmICghYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0pIHsgYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0gPSAoe30pOyB9IHZhciBtdWx0aUVhY2hNYXJrZXIgPSBhcnRvb2xraXRbIm11bHRpRWFjaE1hcmtlckluZm8iXTsgbXVsdGlFYWNoTWFya2VyWyd2aXNpYmxlJ10gPSAkMDsgbXVsdGlFYWNoTWFya2VyWydwYXR0SWQnXSA9ICQxOyBtdWx0aUVhY2hNYXJrZXJbJ3BhdHRUeXBlJ10gPSAkMjsgbXVsdGlFYWNoTWFya2VyWyd3aWR0aCddID0gJDM7IH0AaWlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUAbG9hZENhbWVyYSgpOiBFcnJvciBsb2FkaW5nIHBhcmFtZXRlciBmaWxlICVzIGZvciBjYW1lcmEuCgBpaWlpAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgTkZUIG1hcmtlci4KAFJlYWRpbmcgJXMuZnNldDMKAGZzZXQzAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAEVycm9yOiBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQKAEVycm9yOiBrcG1NZXJnZVJlZkRhdGFTZXQKACAgRG9uZS4KAFJlYWRpbmcgJXMuZnNldAoAZnNldABFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBFcnJvcjoga3BtU2V0UmVmRGF0YVNldAoATG9hZGluZyBvZiBORlQgZGF0YSBjb21wbGV0ZS4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBjb25maWcgZGF0YSBsb2FkIGVycm9yICEhCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAGxvYWRNYXJrZXIoKTogRXJyb3IgbG9hZGluZyBwYXR0ZXJuIGZpbGUgJXMuCgBFcnJvcjogYXIyQ3JlYXRlSGFuZGxlLgoAaWlpaWkAc2V0dXAoKTogRXJyb3I6IGFyUGF0dENyZWF0ZUhhbmRsZS4KAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAeyBpZiAoIWFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXSkgeyBhcnRvb2xraXRbImZyYW1lTWFsbG9jIl0gPSAoe30pOyB9IHZhciBmcmFtZU1hbGxvYyA9IGFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXTsgZnJhbWVNYWxsb2NbImZyYW1lcG9pbnRlciJdID0gJDE7IGZyYW1lTWFsbG9jWyJmcmFtZXNpemUiXSA9ICQyOyBmcmFtZU1hbGxvY1siY2FtZXJhIl0gPSAkMzsgZnJhbWVNYWxsb2NbInRyYW5zZm9ybSJdID0gJDQ7IGZyYW1lTWFsbG9jWyJ2aWRlb0x1bWFQb2ludGVyIl0gPSAkNTsgfQAqKiogQ2FtZXJhIFBhcmFtZXRlciByZXNpemVkIGZyb20gJWQsICVkLiAqKioKAHNldENhbWVyYSgpOiBFcnJvcjogYXJQYXJhbUxUQ3JlYXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAT3V0IG9mIG1lbW9yeSEhCgBFcnJvcjogbWFsbG9jCgAjIyMgRmVhdHVyZSBjYW5kaWRhdGVzIGZvciB0cmFja2luZyBhcmUgb3ZlcmZsb3cuCgBCb2d1cyBtZXNzYWdlIGNvZGUgJWQAQUxJR05fVFlQRSBpcyB3cm9uZywgcGxlYXNlIGZpeABNQVhfQUxMT0NfQ0hVTksgaXMgd3JvbmcsIHBsZWFzZSBmaXgAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MASW52YWxpZCBjcm9wIHJlcXVlc3QARENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZQBEQ1Qgc2NhbGVkIGJsb2NrIHNpemUgJWR4JWQgbm90IHN1cHBvcnRlZABDb21wb25lbnQgaW5kZXggJWQ6IG1pc21hdGNoaW5nIHNhbXBsaW5nIHJhdGlvICVkOiVkLCAlZDolZCwgJWMAQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAEJvZ3VzIGlucHV0IGNvbG9yc3BhY2UAQm9ndXMgSlBFRyBjb2xvcnNwYWNlAEJvZ3VzIG1hcmtlciBsZW5ndGgAV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkAFNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkAEludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBJbnZhbGlkIHNjYW4gc2NyaXB0IGF0IGVudHJ5ICVkAEltcHJvcGVyIGNhbGwgdG8gSlBFRyBsaWJyYXJ5IGluIHN0YXRlICVkAEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQnVmZmVyIHBhc3NlZCB0byBKUEVHIGxpYnJhcnkgaXMgdG9vIHNtYWxsAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBDQ0lSNjAxIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQAVG9vIG1hbnkgY29sb3IgY29tcG9uZW50czogJWQsIG1heCAlZABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAQm9ndXMgREFDIGluZGV4ICVkAEJvZ3VzIERBQyB2YWx1ZSAweCV4AEJvZ3VzIERIVCBpbmRleCAlZABCb2d1cyBEUVQgaW5kZXggJWQARW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdyaXRlIHRvIEVNUyBmYWlsZWQARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4ASW5wdXQgZmlsZSByZWFkIGVycm9yAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8ARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE1pc3NpbmcgSHVmZm1hbiBjb2RlIHRhYmxlIGVudHJ5AE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMARW1wdHkgaW5wdXQgZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGlucHV0IGZpbGUAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YQBJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZQBOb3QgaW1wbGVtZW50ZWQgeWV0AFJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZQBBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UAUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AEluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpAENhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cwBDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMAQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAFVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4AEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPSSBtYXJrZXJzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMAVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4AFZpcnR1YWwgYXJyYXkgY29udHJvbGxlciBtZXNzZWQgdXAASW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24AUmVhZCBmcm9tIFhNUyBmYWlsZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nADljICAxNC1KYW4tMjAxOABDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHAEFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkAFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUARGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZABEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldQBGcmVlZCBFTVMgaGFuZGxlICV1AE9idGFpbmVkIEVNUyBoYW5kbGUgJXUARW5kIE9mIEltYWdlACAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZABKRklGIEFQUDAgbWFya2VyOiB2ZXJzaW9uICVkLiUwMmQsIGRlbnNpdHkgJWR4JWQgICVkAFdhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldQAgICAgd2l0aCAlZCB4ICVkIHRodW1ibmFpbCBpbWFnZQBNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldQBVbmV4cGVjdGVkIG1hcmtlciAweCUwMngAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AFF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMAUXVhbnRpemluZyB0byAlZCBjb2xvcnMAU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24AQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkAFJTVCVkAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAFN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZAAgICAgQ29tcG9uZW50ICVkOiAlZGh4JWR2IHE9JWQAU3RhcnQgb2YgSW1hZ2UAU3RhcnQgT2YgU2NhbjogJWQgY29tcG9uZW50cwAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZAAgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkAENsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcwBPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMASkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiBwYWxldHRlIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBGcmVlZCBYTVMgaGFuZGxlICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUAVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZABDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZABDb3JydXB0IEpQRUcgZGF0YTogJXUgZXh0cmFuZW91cyBieXRlcyBiZWZvcmUgbWFya2VyIDB4JTAyeABDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQAQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcwBTT1MATFNFAEpQRUdNRU0AJWxkJWMAJXMKAAABAgQHAwYFAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AaW5maW5pdHkAbmFuAExDX0FMTABMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIAHJ3YQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAYgBjAGgAYQBzAHQAaQBqAG0AZgBkAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAdm9pZABib29sAGNoYXIAc2lnbmVkIGNoYXIAdW5zaWduZWQgY2hhcgBzaG9ydAB1bnNpZ25lZCBzaG9ydABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBmbG9hdABkb3VibGUAc3RkOjpzdHJpbmcAc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4Ac3RkOjp3c3RyaW5nAGVtc2NyaXB0ZW46OnZhbABlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmcgZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0llRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjhpb3NfYmFzZUUATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQBOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQBOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQBOU3QzX18yN2NvbGxhdGVJY0VFAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQBOU3QzX18yN2NvbGxhdGVJd0VFACVwAEMATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFACVwAAAAAEwAbGwAJQAAAAAAbABOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAJUg6JU06JVMAJW0vJWQvJXkAJUk6JU06JVMgJXAAJWEgJWIgJWQgJUg6JU06JVMgJVkAQU0AUE0ASmFudWFyeQBGZWJydWFyeQBNYXJjaABBcHJpbABNYXkASnVuZQBKdWx5AEF1Z3VzdABTZXB0ZW1iZXIAT2N0b2JlcgBOb3ZlbWJlcgBEZWNlbWJlcgBKYW4ARmViAE1hcgBBcHIASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdAAlbS8lZC8leSVZLSVtLSVkJUk6JU06JVMgJXAlSDolTSVIOiVNOiVTJUg6JU06JVNOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAMDEyMzQ1Njc4OQAlTGYATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAwMTIzNDU2Nzg5AE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAJS4wTGYATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQBOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAE5TdDNfXzI4bWVzc2FnZXNJY0VFAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAE5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUUATlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjZsb2NhbGU1X19pbXBFAE5TdDNfXzI1Y3R5cGVJY0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAE5TdDNfXzI1Y3R5cGVJd0VFAGZhbHNlAHRydWUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE0X19zaGFyZWRfY291bnRFAE5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRF";var tempDoublePtr=57872;function demangle(func){return func}function demangleAll(text){var regex=/\b__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";ENV["_"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=value;return value}function ___map_file(pathname,size){___setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(fd){if(fd===undefined)fd=SYSCALLS.get();var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_read(){return _fd_read.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function __embind_register_constant(name,type,value){name=readLatin1String(name);whenDependentTypesAreResolved([],[type],function(type){type=type[0];Module[name]=type["fromWireType"](value);return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;iLIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=57728;var ___tm_timezone=(stringToUTF8("GMT",57776,4),57776);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Yb[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)==0?2:e,f);return}function nB(a){a=a|0;return ((oB(a)|0)^1)&1|0}function oB(b){b=b|0;return (a[b>>0]|0)!=0|0}function pB(a){a=a|0;c[a>>2]=0;qB(a);return}function qB(a){a=a|0;c[a>>2]=c[a>>2]|1;return}function rB(a){a=a|0;c[a>>2]=0;return}function sB(){return 0}function tB(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=FO(b)|0;if(a|0)break;a=sB()|0;if(!a){a=0;break}Rb[a&1]()}return a|0}function uB(a){a=a|0;return tB(a)|0}function vB(a){a=a|0;SA(a);return}function wB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=c[d>>2];a=Jb[c[(c[a>>2]|0)+16>>2]&63](a,b,e)|0;if(a)c[d>>2]=c[e>>2];zb=f;return a&1|0}function xB(a){a=a|0;if(!a)a=0;else a=(NA(a,13904,13992,0)|0)!=0&1;return a|0}function yB(){return 0}function zB(){N(55684);return}function AB(){return 55668}function BB(){return 55676}function CB(){return 55680}function DB(){return 55684}function EB(){FB();return}function FB(){GB(57670);return}function GB(a){a=a|0;var b=0;b=zb;zb=zb+16|0;c[b>>2]=a;HB();zb=b;return}function HB(){pa(IB()|0,47294);ga(JB()|0,47299,1,1,0);KB(47304);LB(47309);MB(47321);NB(47335);OB(47341);PB(47356);QB(47360);RB(47373);SB(47378);TB(47392);UB(47398);na(VB()|0,47405);na(WB()|0,47417);oa(XB()|0,4,47450);ia(YB()|0,47463);ZB(47479);_B(47509);$B(47546);aC(47585);bC(47616);cC(47656);dC(47685);eC(47723);fC(47753);_B(47792);$B(47824);aC(47857);bC(47890);cC(47924);dC(47957);gC(47991);hC(48022);iC(48054);return}function IB(){return sD()|0}function JB(){return rD()|0}function KB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=pD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function LB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=nD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function MB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=lD()|0;la(a|0,c[d>>2]|0,1,0,255);zb=b;return}function NB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=jD()|0;la(a|0,c[d>>2]|0,2,-32768<<16>>16|0,32767<<16>>16|0);zb=b;return}function OB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=hD()|0;la(a|0,c[d>>2]|0,2,0,65535);zb=b;return}function PB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=fD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function QB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=dD()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function RB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=bD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function SB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=$C()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function TB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=ZC()|0;ja(a|0,c[d>>2]|0,4);zb=b;return}function UB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=XC()|0;ja(a|0,c[d>>2]|0,8);zb=b;return}function VB(){return WC()|0}function WB(){return VC()|0}function XB(){return UC()|0}function YB(){return TC()|0}function ZB(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=QC()|0;a=RC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function _B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=NC()|0;a=OC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function $B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=KC()|0;a=LC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function aC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=HC()|0;a=IC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function bC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=EC()|0;a=FC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function cC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=BC()|0;a=CC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function dC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=yC()|0;a=zC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function eC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=vC()|0;a=wC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function fC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=sC()|0;a=tC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function gC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=pC()|0;a=qC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function hC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=mC()|0;a=nC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function iC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=jC()|0;a=kC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function jC(){return lC()|0}function kC(){return 7}function lC(){return 14144}function mC(){return oC()|0}function nC(){return 7}function oC(){return 14152}function pC(){return rC()|0}function qC(){return 6}function rC(){return 14160}function sC(){return uC()|0}function tC(){return 5}function uC(){return 14168}function vC(){return xC()|0}function wC(){return 4}function xC(){return 14176}function yC(){return AC()|0}function zC(){return 5}function AC(){return 14184}function BC(){return DC()|0}function CC(){return 4}function DC(){return 14192}function EC(){return GC()|0}function FC(){return 3}function GC(){return 14200}function HC(){return JC()|0}function IC(){return 2}function JC(){return 14208}function KC(){return MC()|0}function LC(){return 1}function MC(){return 14216}function NC(){return PC()|0}function OC(){return 0}function PC(){return 14224}function QC(){return SC()|0}function RC(){return 0}function SC(){return 14232}function TC(){return 14240}function UC(){return 14248}function VC(){return 14272}function WC(){return 13272}function XC(){return YC()|0}function YC(){return 14120}function ZC(){return _C()|0}function _C(){return 14112}function $C(){return aD()|0}function aD(){return 14104}function bD(){return cD()|0}function cD(){return 14096}function dD(){return eD()|0}function eD(){return 14088}function fD(){return gD()|0}function gD(){return 14080}function hD(){return iD()|0}function iD(){return 14072}function jD(){return kD()|0}function kD(){return 14064}function lD(){return mD()|0}function mD(){return 14048}function nD(){return oD()|0}function oD(){return 14056}function pD(){return qD()|0}function qD(){return 14040}function rD(){return 14032}function sD(){return 14024}function tD(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b+4|0;e=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=jz(c[(c[d>>2]|0)+4>>2]|0)|0;zb=b;return a|0}function uD(a){a=a|0;return 0}function vD(a){a=a|0;return 0}function wD(a,b){a=a|0;b=b|0;return 0}function xD(a){a=a|0;return 0}function yD(){return (zD()|0)>0|0}function zD(){return yB()|0}function AD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k;i=k+8|0;e=k+4|0;c[i>>2]=a;do if(a>>>0>=212){h=(a>>>0)/210|0;b=h*210|0;c[e>>2]=a-b;a=0;g=(BD(12736,12928,e,d)|0)-12736>>2;a:while(1){f=(c[12736+(g<<2)>>2]|0)+b|0;b=5;while(1){if(b>>>0>=47){j=6;break}d=c[12544+(b<<2)>>2]|0;e=(f>>>0)/(d>>>0)|0;if(e>>>0>>0){j=107;break a}if((f|0)==(B(e,d)|0))break;else b=b+1|0}b:do if((j|0)==6){j=0;e=211;c:while(1){b=(f>>>0)/(e>>>0)|0;do if(b>>>0>=e>>>0)if((f|0)!=(B(b,e)|0)){b=e+10|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+12|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+16|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+18|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+22|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+28|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)==(B(d,b)|0))d=9;else{b=e+30|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+36|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+40|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+42|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+46|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+52|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+58|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+60|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+66|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+70|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+72|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+78|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+82|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+88|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+96|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+100|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+102|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+106|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+108|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+112|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+120|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+126|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+130|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+136|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+138|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+142|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+148|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+150|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+156|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+162|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+166|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+168|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+172|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+178|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+180|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+186|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+190|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+192|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+196|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+198|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+208|0;d=(f>>>0)/(b>>>0)|0;l=d>>>0>>0;d=(f|0)==(B(d,b)|0);b=l|d?b:e+210|0;d=l?1:d?9:0;a=l?f:a}else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else{b=e;d=9}else{b=e;d=1;a=f}while(0);switch(d&15){case 9:break b;case 0:{e=b;break}default:break c}}if(d){j=108;break a}}while(0);l=g+1|0;f=(l|0)==48;b=h+(f&1)|0;h=b;b=b*210|0;g=f?0:l}if((j|0)==107){c[i>>2]=f;a=f;break}else if((j|0)==108){c[i>>2]=f;break}}else{a=BD(12544,12736,i,d)|0;a=c[a>>2]|0}while(0);zb=k;return a|0}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[d>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=d>>>1;g=e+(b<<2)|0;a=(c[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function CD(a){a=a|0;DD(a);return}function DD(a){a=a|0;c[a>>2]=16480;ED(a,0);YF(a+28|0);GO(c[a+32>>2]|0);GO(c[a+36>>2]|0);GO(c[a+48>>2]|0);GO(c[a+60>>2]|0);return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+32|0;f=a+36|0;d=c[a+40>>2]|0;while(1){if(!d)break;g=d+-1|0;Wb[c[(c[e>>2]|0)+(g<<2)>>2]&3](b,a,c[(c[f>>2]|0)+(g<<2)>>2]|0);d=g}return}function FD(a){a=a|0;DD(a);SA(a);return}function GD(a){a=a|0;DD(a);return}function HD(a){a=a|0;c[a>>2]=16496;YF(a+4|0);return}function ID(a){a=a|0;HD(a);SA(a);return}function JD(a,b){a=a|0;b=b|0;return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function LD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function MD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function ND(a){a=a|0;return 0}function OD(a){a=a|0;return 0}function PD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;Wf()|0;i=b+12|0;j=b+16|0;h=0;while(1){if((h|0)>=(e|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f|0;k=e-h|0;g=(k|0)<(g|0)?k:g;VD(d,f,g)|0;c[i>>2]=(c[i>>2]|0)+g;d=d+g|0;f=g}else{f=Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((f|0)==-1)break;f=eg(f)|0;a[d>>0]=f;d=d+1|0;f=1}h=f+h|0}return h|0}function QD(a){a=a|0;return Wf()|0}function RD(b){b=b|0;var d=0;d=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;if((d|0)==(Wf()|0))b=Wf()|0;else{d=b+12|0;b=c[d>>2]|0;c[d>>2]=b+1;b=cg(a[b>>0]|0)|0}return b|0}function SD(a,b){a=a|0;b=b|0;return Wf()|0}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Wf()|0;j=b+24|0;k=b+28|0;f=0;while(1){if((f|0)>=(e|0))break;g=c[j>>2]|0;h=c[k>>2]|0;if(g>>>0>>0){h=h-g|0;l=e-f|0;h=(l|0)<(h|0)?l:h;VD(g,d,h)|0;c[j>>2]=(c[j>>2]|0)+h;d=d+h|0;f=h+f|0}else{h=c[(c[b>>2]|0)+52>>2]|0;l=cg(a[d>>0]|0)|0;if((Ib[h&63](b,l)|0)==(i|0))break;d=d+1|0;f=f+1|0}}return f|0}function UD(a,b){a=a|0;b=b|0;return Wf()|0}function VD(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)_O(a|0,b|0,c|0)|0;return a|0}function WD(a){a=a|0;c[a>>2]=16560;YF(a+4|0);return}function XD(a){a=a|0;WD(a);SA(a);return}function YD(a,b){a=a|0;b=b|0;return}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function _D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function $D(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function aE(a){a=a|0;return 0}function bE(a){a=a|0;return 0}function cE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;iE()|0;h=a+12|0;i=a+16|0;g=0;while(1){if((g|0)>=(d|0))break;e=c[h>>2]|0;f=c[i>>2]|0;if(e>>>0>>0){f=f-e>>2;j=d-g|0;f=(j|0)<(f|0)?j:f;kE(b,e,f)|0;c[h>>2]=(c[h>>2]|0)+(f<<2);b=b+(f<<2)|0;e=f}else{e=Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((e|0)==-1)break;e=lE(e)|0;c[b>>2]=e;b=b+4|0;e=1}g=e+g|0}return g|0}function dE(a){a=a|0;return iE()|0}function eE(a){a=a|0;var b=0;b=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(iE()|0))a=iE()|0;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=jE(c[a>>2]|0)|0}return a|0}function fE(a,b){a=a|0;b=b|0;return iE()|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=iE()|0;i=a+24|0;j=a+28|0;e=0;while(1){if((e|0)>=(d|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f>>2;k=d-e|0;g=(k|0)<(g|0)?k:g;kE(f,b,g)|0;c[i>>2]=(c[i>>2]|0)+(g<<2);b=b+(g<<2)|0;e=g+e|0}else{g=c[(c[a>>2]|0)+52>>2]|0;k=jE(c[b>>2]|0)|0;if((Ib[g&63](a,k)|0)==(h|0))break;b=b+4|0;e=e+1|0}}return e|0}function hE(a,b){a=a|0;b=b|0;return iE()|0}function iE(){return -1}function jE(a){a=a|0;return a|0}function kE(a,b,c){a=a|0;b=b|0;c=c|0;if(c)gz(a,b,c)|0;return a|0}function lE(a){a=a|0;return a|0}function mE(a){a=a|0;qE(a,16656);CD(a+8|0);return}function nE(a){a=a|0;mE(a);SA(a);return}function oE(a){a=a|0;mE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function pE(a){a=a|0;nE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function qE(a,b){a=a|0;b=b|0;return}function rE(a){a=a|0;vE(a,16704);GD(a+8|0);return}function sE(a){a=a|0;rE(a);SA(a);return}function tE(a){a=a|0;rE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function uE(a){a=a|0;sE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function vE(a,b){a=a|0;b=b|0;return}function wE(a){a=a|0;AE(a,16752);CD(a+4|0);return}function xE(a){a=a|0;wE(a);SA(a);return}function yE(a){a=a|0;wE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function zE(a){a=a|0;xE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function AE(a,b){a=a|0;b=b|0;return}function BE(a){a=a|0;FE(a,16800);GD(a+4|0);return}function CE(a){a=a|0;BE(a);SA(a);return}function DE(a){a=a|0;BE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function EE(a){a=a|0;CE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function FE(a,b){a=a|0;b=b|0;return}function GE(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[a+24>>2]|0)==0|b;return}function HE(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));YN(d);return}function IE(a,b){a=a|0;b=b|0;WN(a,b+28|0);return}function JE(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function KE(a){a=a|0;c[a>>2]=16496;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function LE(a){a=a|0;c[a>>2]=16560;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function ME(b){b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;if(c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0){NE(d,b);if(a[d>>0]|0?(f=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(f,c[f+16>>2]|1)}OE(d)}zb=e;return b|0}function NE(b,d){b=b|0;d=d|0;a[b>>0]=0;c[b+4>>2]=d;d=d+(c[(c[d>>2]|0)+-12>>2]|0)|0;if(!(c[d+16>>2]|0)){d=c[d+72>>2]|0;if(d|0)ME(d)|0;a[b>>0]=1}return}function OE(a){a=a|0;var b=0;a=a+4|0;b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;if((((c[b+24>>2]|0?(c[b+16>>2]|0)==0:0)?c[b+4>>2]&8192|0:0)?!(yD()|0):0)?(b=c[a>>2]|0,b=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(b,c[b+16>>2]|1)}return}function PE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;f=l+12|0;j=l+8|0;k=l;NE(k,b);if(a[k>>0]|0){IE(f,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);g=XF(f,56792)|0;YF(f);h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;i=c[h+24>>2]|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(f,h);m=XF(f,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(f);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;m=c[(c[g>>2]|0)+16>>2]|0;c[j>>2]=i;c[f>>2]=c[j>>2];if(!(Mb[m&31](g,f,h,e&255,d)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(k);zb=l;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;NE(i,b);do if(a[i>>0]|0){e=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0;f=e;if(e|0){g=f+24|0;h=c[g>>2]|0;if((h|0)==(c[f+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;d=cg(d)|0;d=Ib[h&63](f,d)|0}else{c[g>>2]=h+1;a[h>>0]=d;d=cg(d)|0}if(!(_f(d,Wf()|0)|0))break}h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(h,c[h+16>>2]|1)}while(0);OE(i);zb=j;return b|0}function RE(a){a=a|0;a=a+16|0;c[a>>2]=c[a>>2]|1;return}function SE(){UE();return}function TE(){return}function UE(){VE(0);return}function VE(a){a=a|0;var b=0,d=0;b=c[4002]|0;WE(56368,b,56424);c[13922]=16628;c[13924]=16648;c[13923]=0;HE(55696,56368);c[13942]=0;a=Wf()|0;c[13943]=a;XE(56432,b,56488);c[13944]=16676;c[13946]=16696;c[13945]=0;HE(55784,56432);c[13964]=0;b=iE()|0;c[13965]=b;b=c[4003]|0;YE(56496,b,56544);c[13966]=16724;c[13967]=16744;HE(55868,56496);c[13985]=0;a=Wf()|0;c[13986]=a;ZE(56552,b,56600);c[13987]=16772;c[13988]=16792;HE(55952,56552);c[14006]=0;b=iE()|0;c[14007]=b;b=c[4001]|0;YE(56608,b,56656);c[14008]=16724;c[14009]=16744;HE(56036,56608);c[14027]=0;a=Wf()|0;c[14028]=a;a=c[56032+(c[(c[14008]|0)+-12>>2]|0)+24>>2]|0;c[14050]=16724;c[14051]=16744;HE(56204,a);c[14069]=0;a=Wf()|0;c[14070]=a;ZE(56664,b,56712);c[14029]=16772;c[14030]=16792;HE(56120,56664);c[14048]=0;b=iE()|0;c[14049]=b;b=c[56116+(c[(c[14029]|0)+-12>>2]|0)+24>>2]|0;c[14071]=16772;c[14072]=16792;HE(56288,b);c[14090]=0;b=iE()|0;c[14091]=b;c[55688+(c[(c[13922]|0)+-12>>2]|0)+72>>2]=55864;c[55776+(c[(c[13944]|0)+-12>>2]|0)+72>>2]=55948;b=(c[14008]|0)+-12|0;a=56032+(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|8192;a=(c[14029]|0)+-12|0;d=56116+(c[a>>2]|0)+4|0;c[d>>2]=c[d>>2]|8192;c[56032+(c[b>>2]|0)+72>>2]=55864;c[56116+(c[a>>2]|0)+72>>2]=55948;return}function WE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=17008;c[b+32>>2]=d;c[b+40>>2]=e;e=Wf()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function XE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16944;c[b+32>>2]=d;c[b+40>>2]=e;e=iE()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function YE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=16880;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57040)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function ZE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16816;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57048)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function _E(a){a=a|0;WD(a);SA(a);return}function $E(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57048)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function aF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function bF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=jE(c[d>>2]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(iE()|0))break a;f=f+1|0;d=d+4|0}}else f=lz(d,4,e,c[b+32>>2]|0)|0;while(0);return f|0}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(JE(d,iE()|0)|0)){k=lE(d)|0;c[f>>2]=k;if(a[b+44>>0]|0){if((lz(f,4,1,c[b+32>>2]|0)|0)==1){e=15;break}b=iE()|0;break}c[m>>2]=l;e=f+4|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=iE()|0;break}}else e=15;while(0);if((e|0)==15)b=dF(d)|0;zb=o;return b|0}function dF(a){a=a|0;if(JE(a,iE()|0)|0)a=~(iE()|0);return a|0}function eF(a){a=a|0;HD(a);SA(a);return}function fF(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57040)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function gF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function hF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=cg(a[d>>0]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(Wf()|0))break a;f=f+1|0;d=d+1|0}}else f=lz(d,1,e,c[b+32>>2]|0)|0;while(0);return f|0}function iF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(_f(d,Wf()|0)|0)){k=eg(d)|0;a[f>>0]=k;if(a[b+44>>0]|0){if((lz(f,1,1,c[b+32>>2]|0)|0)==1){e=15;break}b=Wf()|0;break}c[m>>2]=l;e=f+1|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=Wf()|0;break}}else e=15;while(0);if((e|0)==15)b=dg(d)|0;zb=o;return b|0}function jF(a){a=a|0;WD(a);SA(a);return}function kF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57048)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function lF(a){a=a|0;return oF(a,0)|0}function mF(a){a=a|0;return oF(a,1)|0}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+8|0;f=l+4|0;g=l;j=JE(d,iE()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((JE(e,iE()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=lE(c[j>>2]|0)|0;c[f>>2]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=iE()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function oF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=iE()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=iE()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+4|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)c[q>>2]=a[p>>0];else if((n|0)==17){e=iE()|0;break}n=19}else{c[q>>2]=a[p>>0];n=19}while(0);b:do if((n|0)==19){c:do if(d){t=jE(c[q>>2]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=jE(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=iE()|0;break b}while(0);e=jE(c[q>>2]|0)|0}while(0)}}zb=r;return e|0}function pF(a){a=a|0;HD(a);SA(a);return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57040)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function rF(a){a=a|0;return uF(a,0)|0}function sF(a){a=a|0;return uF(a,1)|0}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+4|0;f=l+8|0;g=l;j=_f(d,Wf()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((_f(e,Wf()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=eg(c[j>>2]|0)|0;a[f>>0]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=Wf()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=Wf()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=Wf()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+1|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)a[q>>0]=a[p>>0]|0;else if((n|0)==17){e=Wf()|0;break}n=19}else{a[q>>0]=a[p>>0]|0;n=19}while(0);b:do if((n|0)==19){c:do if(d){t=cg(a[q>>0]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=cg(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=Wf()|0;break b}while(0);e=cg(a[q>>0]|0)|0}while(0)}}zb=r;return e|0}function vF(a){a=a|0;CF(a);return}function wF(a){a=a|0;vF(a);SA(a);return}function xF(a){a=a|0;if(a|0)Sb[c[(c[a>>2]|0)+4>>2]&255](a);return}function yF(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=c;while(1){if((e|0)==(f|0)){h=7;break}if((b|0)==(d|0)){b=-1;break}c=a[b>>0]|0;g=a[e>>0]|0;if(c<<24>>24>24){b=-1;break}if(g<<24>>24>24){b=1;break}e=e+1|0;b=b+1|0}if((h|0)==7)b=(b|0)!=(d|0)&1;return b|0}function zF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;BF(a,d,e);return}function AF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=0;while(1){if((c|0)==(d|0))break;e=(b<<4)+(a[c>>0]|0)|0;f=e&-268435456;b=(f>>>24|f)^e;c=c+1|0}return b|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function CF(a){a=a|0;return}function DF(a){a=a|0;CF(a);return}function EF(a){a=a|0;DF(a);SA(a);return}function FF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=b;while(1){if((e|0)==(f|0)){h=7;break}if((a|0)==(d|0)){a=-1;break}b=c[a>>2]|0;g=c[e>>2]|0;if((b|0)<(g|0)){a=-1;break}if((g|0)<(b|0)){a=1;break}e=e+4|0;a=a+4|0}if((h|0)==7)a=(a|0)!=(d|0)&1;return a|0}function GF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;IF(a,d,e);return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=0;while(1){if((b|0)==(d|0))break;e=(c[b>>2]|0)+(a<<4)|0;f=e&-268435456;a=(f>>>24|f)^e;b=b+4|0}return a|0}function IF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function JF(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return}function KF(a){a=a|0;CF(a);return}function LF(a){a=a|0;CF(a);SA(a);return}function MF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56736)|0;YF(i);IE(i,f);b=XF(i,56752)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(FG(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;jO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function NF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=DG(a,j,i,e,f,g)|0;zb=h;return g|0}function OF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=BG(a,j,i,e,f,g)|0;zb=h;return g|0}function PF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=zG(a,j,i,e,f,g)|0;zb=h;return g|0}function QF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=xG(a,j,i,e,f,g)|0;zb=h;return g|0}function RF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=vG(a,j,i,e,f,g)|0;zb=h;return g|0}function SF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=pG(a,j,i,e,f,g)|0;zb=h;return g|0}function TF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=nG(a,j,i,e,f,g)|0;zb=h;return g|0}function UF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=lG(a,j,i,e,f,g)|0;zb=h;return g|0}function VF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=gG(a,j,i,e,f,g)|0;zb=h;return g|0}function WF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+240|0;v=y+192|0;t=y+160|0;w=y+220|0;x=y+208|0;u=y+204|0;q=y;r=y+200|0;s=y+196|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56736)|0;Kb[c[(c[b>>2]|0)+32>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function XF(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return bG(a,aG(b)|0)|0}function YF(a){a=a|0;var b=0,d=0;a=c[a>>2]|0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b)Sb[c[(c[a>>2]|0)+8>>2]&255](a);return}function ZF(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if(b<<24>>24==h<<24>>24?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+26|0;h=0;while(1){m=l+h|0;if((h|0)==26){m=i;break}if((a[m>>0]|0)==b<<24>>24)break;else h=h+1|0}m=m-l|0;if((m|0)>23)m=-1;else{switch(d|0){case 10:case 8:{if((m|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function _F(){var b=0;if((a[54800]|0)==0?nB(54800)|0:0){b=az(2147483647,49197,0)|0;c[14186]=b;pB(54800)}return c[14186]|0}function $F(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=Dz(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function aG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=zb;zb=zb+48|0;b=f+32|0;d=f+24|0;e=f;g=f+16|0;c[g>>2]=143;c[g+4>>2]=0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];dG(e,b,a);if((c[a>>2]|0)!=-1){c[b>>2]=e;c[d>>2]=b;$N(a,d,144)}zb=f;return (c[a+4>>2]|0)+-1|0}function bG(a,b){a=a|0;b=b|0;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}function cG(a){a=a|0;var b=0;b=c[14187]|0;c[14187]=b+1;c[a+4>>2]=b+1;return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;b=c[b+4>>2]|0;c[a>>2]=d;c[a+4>>2]=e;c[a+8>>2]=b;return}function eG(a){a=a|0;fG(c[c[a>>2]>>2]|0);return}function fG(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;e=c[a+8>>2]|0;d=(c[a>>2]|0)+(e>>1)|0;if(!(e&1))a=b;else a=c[(c[d>>2]|0)+b>>2]|0;Sb[a&255](d);return}function gG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function hG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;i=h;IE(i,d);d=XF(i,56736)|0;Kb[c[(c[d>>2]|0)+32>>2]&15](d,12928,12960,e)|0;e=XF(i,56752)|0;d=Gb[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[f>>0]=d;f=Gb[c[(c[e>>2]|0)+16>>2]&127](e)|0;a[g>>0]=f;Ub[c[(c[e>>2]|0)+20>>2]&63](b,e);YF(i);zb=h;return}function iG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if(b<<24>>24==h<<24>>24)if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if(b<<24>>24==i<<24>>24?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+32|0;h=0;while(1){o=n+h|0;if((h|0)==32){o=i;break}if((a[o>>0]|0)==b<<24>>24)break;else h=h+1|0}h=o-n|0;if((h|0)>31)o=-1;else{i=a[12928+h>>0]|0;switch(h|0){case 24:case 25:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 23:case 22:{a[e>>0]=80;o=c[g>>2]|0;c[g>>2]=o+1;a[o>>0]=i;o=0;break a}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>21){o=0;break a}c[m>>2]=(c[m>>2]|0)+1;o=0;break a}}}}while(0);return o|0}function jG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+rA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function kG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=b+11|0;h=a[j>>0]|0;k=b+4|0;g=c[k>>2]|0;i=h&255;do if((h<<24>>24<0?g:i)|0){if((d|0)!=(e|0)){g=e;h=d;while(1){g=g+-4|0;if(h>>>0>=g>>>0)break;i=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=i;h=h+4|0}h=a[j>>0]|0;i=h&255;g=c[k>>2]|0}j=h<<24>>24<0;b=j?c[b>>2]|0:b;k=e+-4|0;j=b+(j?g:i)|0;g=b;while(1){h=a[g>>0]|0;i=h<<24>>24>0&h<<24>>24!=127;if(d>>>0>=k>>>0)break;if(i?(c[d>>2]|0)!=(h<<24>>24|0):0){l=11;break}d=d+4|0;g=(j-g|0)>1?g+1|0:g}if((l|0)==11){c[f>>2]=4;break}if(i?((c[k>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function lG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+qA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function nG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(iG(g&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+pA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function pG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function qG(a){a=a|0;switch(c[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function rG(a,b,c){a=a|0;b=b|0;c=c|0;return uG(a,b,c)|0}function sG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=zb;zb=zb+16|0;g=f;IE(g,d);d=XF(g,56752)|0;h=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[e>>0]=h;Ub[c[(c[d>>2]|0)+20>>2]&63](b,d);YF(g);zb=f;return}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;g=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if((f|0)==68){c[e>>2]=4;b=-1;f=-1;break}else{l=PO(0,0,b|0,g|0)|0;f=F()|0;b=j?l:b;f=j?f:g;break}else{c[e>>2]=4;b=0;f=0}while(0)}while(0);E(f|0);zb=k;return b|0}function uG(a,b,c){a=a|0;b=b|0;c=c|0;return 12928}function vG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function wG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function xG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function yG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function zG(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+240|0;s=C+224|0;z=C+212|0;A=C+200|0;t=C+196|0;u=C;w=C+192|0;x=C+188|0;y=qG(g)|0;r=rG(d,g,C+160|0)|0;sG(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(ZF(g&255,y,d,t,x,a[s>>0]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=cg(a[d>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function AG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0)){if(f>>>0>0|(f|0)==0&b>>>0>65535|(g|0)==68){c[e>>2]=4;b=-1;break}if(j)b=0-b&65535;else b=b&65535}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function BG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function CG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;e=0;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}if((c[g>>2]|0)==(b|0)){if((f|0)==68){c[d>>2]=4;e=(e|0)>0|(e|0)==0&a>>>0>0;a=e?-1:0;e=e?2147483647:-2147483648}}else{c[d>>2]=4;a=0;e=0}}E(e|0);zb=i;return a|0}function DG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function EG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}a:do if((c[g>>2]|0)==(b|0)){do if((f|0)==68){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{c[d>>2]=4;a=0}while(0)}zb=i;return a|0}function FG(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}n=e;o=j;k=0;while(1){if((n|0)==(f|0))break;m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;l=l+-1|0;k=k+1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=cg(a[m>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;k=k&255;if(!i)k=Ib[c[(c[g>>2]|0)+12>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+11|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=a[m+t>>0]|0;if(!i)m=Ib[c[(c[g>>2]|0)+12>>2]&63](g,m)|0;if(k<<24>>24!=m<<24>>24){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+1;cg(a[n>>0]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(!(_f(k,Wf()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function GG(a){a=a|0;CF(a);return}function HG(a){a=a|0;CF(a);SA(a);return}function IG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56768)|0;YF(i);IE(i,f);b=XF(i,56776)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(gH(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;wO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function JG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=fH(a,j,i,e,f,g)|0;zb=h;return g|0}function KG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eH(a,j,i,e,f,g)|0;zb=h;return g|0}function LG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=dH(a,j,i,e,f,g)|0;zb=h;return g|0}function MG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=cH(a,j,i,e,f,g)|0;zb=h;return g|0}function NG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=bH(a,j,i,e,f,g)|0;zb=h;return g|0}function OG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=ZG(a,j,i,e,f,g)|0;zb=h;return g|0}function PG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=YG(a,j,i,e,f,g)|0;zb=h;return g|0}function QG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=XG(a,j,i,e,f,g)|0;zb=h;return g|0}function RG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=UG(a,j,i,e,f,g)|0;zb=h;return g|0}function SG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+304|0;v=y+264|0;t=y+160|0;w=y+292|0;x=y+280|0;u=y+276|0;q=y;r=y+272|0;s=y+268|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function TG(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if((b|0)==(h|0)?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+104|0;h=0;while(1){m=l+(h<<2)|0;if((h|0)==26){m=i;break}if((c[m>>2]|0)==(b|0))break;else h=h+1|0}m=m-l|0;h=m>>2;if((m|0)>92)m=-1;else{switch(d|0){case 10:case 8:{if((h|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function UG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function VG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;IE(h,b);b=XF(h,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12960,d)|0;d=XF(h,56776)|0;b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[e>>2]=b;e=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;c[f>>2]=e;Ub[c[(c[d>>2]|0)+20>>2]&63](a,d);YF(h);zb=g;return}function WG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if((b|0)==(h|0))if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if((b|0)==(i|0)?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+128|0;h=0;while(1){o=n+(h<<2)|0;if((h|0)==32){o=i;break}if((c[o>>2]|0)==(b|0))break;else h=h+1|0}h=o-n|0;if((h|0)<=124){i=a[12928+(h>>2)>>0]|0;n=h+-88|0;switch(n>>>2|n<<30|0){case 2:case 3:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 1:case 0:{a[e>>0]=80;break}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}}}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>84)o=0;else{c[m>>2]=(c[m>>2]|0)+1;o=0}}else o=-1}while(0);return o|0}function XG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function YG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(WG(g,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function ZG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function _G(a,b,c){a=a|0;b=b|0;c=c|0;return aH(a,b,c)|0}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;IE(f,b);b=XF(f,56776)|0;g=Gb[c[(c[b>>2]|0)+16>>2]&127](b)|0;c[d>>2]=g;Ub[c[(c[b>>2]|0)+20>>2]&63](a,b);YF(f);zb=e;return}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=zb;zb=zb+16|0;e=a;IE(e,b);b=XF(e,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,d)|0;YF(e);zb=a;return d|0}function bH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function cH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function dH(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+304|0;s=C+300|0;z=C+288|0;A=C+276|0;t=C+272|0;u=C;w=C+268|0;x=C+264|0;y=qG(g)|0;r=_G(d,g,C+160|0)|0;$G(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(TG(g,y,d,t,x,c[s>>2]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=jE(c[d>>2]|0)|0;if(JE(d,iE()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=jE(c[d>>2]|0)|0;if(!(JE(d,iE()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function eH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function fH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function gH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}k=0;n=e;o=j;while(1){if((n|0)==(f|0))break;m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;k=k+1|0;l=l+-1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=jE(c[m>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!i)k=Ib[c[(c[g>>2]|0)+28>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+8+3|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=c[m+(t<<2)>>2]|0;if(!i)m=Ib[c[(c[g>>2]|0)+28>>2]&63](g,m)|0;if((k|0)!=(m|0)){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+4;jE(c[n>>2]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function hH(a){a=a|0;CF(a);return}function iH(a){a=a|0;CF(a);SA(a);return}function jH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56752)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+11|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+(h?c[j>>2]|0:b&255)|0))break;b=a[g>>0]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=cg(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+1;a[h>>0]=b;b=cg(b)|0}if(_f(b,Wf()|0)|0)c[d>>2]=0}g=g+1|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;jO(k)}zb=l;return b|0}function kH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1|0)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function lH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function mH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*(p<<1|21)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function pH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function qH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+96|0;l=b+72|0;k=b+80|0;h=b+48|0;j=b;m=b+76|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56736)|0;YF(l);Kb[c[(c[n>>2]|0)+32>>2]&15](n,h,k,j)|0;g=j+g|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=$f(l,j,(i|0)==(k|0)?g:j+(i-h)|0,g,e,f)|0;zb=b;return g|0}function rH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;c[h>>2]=f;f=ez(d)|0;d=Jx(a,b,e,h)|0;if(f|0)ez(f)|0;zb=g;return d|0}function sH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do switch((c[e+4>>2]&176)<<24>>24){case 16:{e=a[b>>0]|0;switch(e<<24>>24){case 43:case 45:{b=b+1|0;break a}default:{}}if((d-b|0)>1&e<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}b=b+2|0}else f=7;break}case 32:{b=d;break}default:f=7}while(0);return b|0}function tH(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}g=d&260;e=d&16384;f=(g|0)==260;if(f)h=0;else{a[b>>0]=46;a[b+1>>0]=42;h=1;b=b+2|0}while(1){d=a[c>>0]|0;if(!(d<<24>>24))break;a[b>>0]=d;c=c+1|0;b=b+1|0}a:do switch(g&511){case 4:{d=e>>>9&255^102;break}case 256:{d=e>>>9&255^101;break}default:{d=e>>>9&255;if(f){d=d^97;break a}else{d=d^103;break a}}}while(0);a[b>>0]=d;return h|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=bA(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function vH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56736)|0;r=XF(i,56752)|0;Ub[c[(c[r>>2]|0)+20>>2]&63](s,r);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{q=Ib[c[(c[t>>2]|0)+28>>2]&63](t,i)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=q;j=b+1|0;break}default:j=b}q=e;a:do if((q-j|0)>1?(a[j>>0]|0)==48:0){i=j+1|0;switch(a[i>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+28>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=o;j=j+2|0;p=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[i>>0]|0)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=j;while(1){if(i>>>0>=e>>>0)break a;p=a[i>>0]|0;if(!(_y(p,_F()|0)|0))break a;i=i+1|0}}else u=4;while(0);b:do if((u|0)==4){i=j;while(1){if(i>>>0>=e>>>0)break b;p=a[i>>0]|0;if(!(Zy(p,_F()|0)|0))break b;i=i+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((j|0)!=(i|0)){k=i;l=j;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[r>>2]|0)+16>>2]&127](r)|0;m=j;l=0;k=0;while(1){if(m>>>0>=i>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+1;a[w>>0]=x;m=m+1|0;l=l+1|0}k=f+(j-b)|0;j=c[h>>2]|0;if((k|0)==(j|0))k=t;else while(1){j=j+-1|0;if(k>>>0>=j>>>0){k=t;break c}x=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=x;k=k+1|0}}else{Kb[c[(c[t>>2]|0)+32>>2]&15](t,j,i,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(i-j);k=t}while(0);while(1){if(i>>>0>=e>>>0)break;j=a[i>>0]|0;if(j<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+28>>2]&63](t,j)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}if((u|0)==32){w=Gb[c[(c[r>>2]|0)+12>>2]&127](r)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}Kb[c[(c[t>>2]|0)+32>>2]&15](t,i,e,c[h>>2]|0)|0;x=(c[h>>2]|0)+(q-i)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b)|0;jO(s);zb=v;return}function wH(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=b;while(1){b=a[c>>0]|0;if(!(b<<24>>24))break;a[f>>0]=b;c=c+1|0;f=f+1|0}switch(e&74){case 64:{b=111;break}case 8:{b=e>>>9&32^120;break}default:b=d?100:117}a[f>>0]=b;return}function xH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56736)|0;l=XF(i,56752)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+1|0;k=k+1|0}i=f+(i-b)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-1|0;if(i>>>0>=j>>>0)break;t=a[i>>0]|0;a[i>>0]=a[j>>0]|0;a[j>>0]=t;i=i+1|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+32>>2]&15](p,b,e,f)|0;i=f+(e-b)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b)|0;jO(q);zb=r;return}function yH(a){a=a|0;CF(a);return}function zH(a){a=a|0;CF(a);SA(a);return}function AH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56776)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+8+3|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+((h?c[j>>2]|0:b&255)<<2)|0))break;b=c[g>>2]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=jE(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+4;c[h>>2]=b;b=jE(b)|0}if(JE(b,iE()|0)|0)c[d>>2]=0}g=g+4|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;wO(k)}zb=l;return b|0}function BH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function CH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function DH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|21)<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function EH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function FH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function GH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function HH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+208|0;l=b+184|0;k=b+192|0;h=b+160|0;j=b;m=b+188|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56768)|0;YF(l);Kb[c[(c[n>>2]|0)+48>>2]&15](n,h,k,j)|0;g=j+(g<<2)|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=IH(l,j,(i|0)==(k|0)?g:j+(i-h<<2)|0,g,e,f)|0;zb=b;return g|0}function IH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{o=d;j=f-o>>2;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;o=j-o|0;k=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;uO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+8+3>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){wO(m);break}else{c[b>>2]=0;wO(m);i=0;break a}}while(0);o=f-j|0;f=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function JH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56768)|0;q=XF(i,56776)|0;Ub[c[(c[q>>2]|0)+20>>2]&63](s,q);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{r=Ib[c[(c[t>>2]|0)+44>>2]&63](t,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=r;i=b+1|0;break}default:i=b}r=e;a:do if((r-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+44>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=o;i=i+2|0;p=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[j>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=p;j=i;while(1){if(j>>>0>=e>>>0)break a;p=a[j>>0]|0;if(!(_y(p,_F()|0)|0))break a;j=j+1|0}}else u=4;while(0);b:do if((u|0)==4){j=i;while(1){if(j>>>0>=e>>>0)break b;p=a[j>>0]|0;if(!(Zy(p,_F()|0)|0))break b;j=j+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((i|0)!=(j|0)){k=j;l=i;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[q>>2]|0)+16>>2]&127](q)|0;m=i;k=0;l=0;while(1){if(m>>>0>=j>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+4;c[w>>2]=x;m=m+1|0;l=l+1|0}i=f+(i-b<<2)|0;l=c[h>>2]|0;if((i|0)==(l|0))k=t;else{k=l;while(1){k=k+-4|0;if(i>>>0>=k>>>0){k=t;i=l;break c}x=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=x;i=i+4|0}}}else{Kb[c[(c[t>>2]|0)+48>>2]&15](t,i,j,c[h>>2]|0)|0;i=(c[h>>2]|0)+(j-i<<2)|0;c[h>>2]=i;k=t}while(0);while(1){if(j>>>0>=e>>>0)break;i=a[j>>0]|0;if(i<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+44>>2]&63](t,i)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}if((u|0)==32){w=Gb[c[(c[q>>2]|0)+12>>2]&127](q)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}Kb[c[(c[t>>2]|0)+48>>2]&15](t,j,e,i)|0;x=(c[h>>2]|0)+(r-j<<2)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b<<2)|0;jO(s);zb=v;return}function KH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56768)|0;l=XF(i,56776)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+1|0;k=k+1|0}i=f+(i-b<<2)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-4|0;if(i>>>0>=j>>>0)break;t=c[i>>2]|0;c[i>>2]=c[j>>2];c[j>>2]=t;i=i+4|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+48>>2]&15](p,b,e,f)|0;i=f+(e-b<<2)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b<<2)|0;jO(q);zb=r;return}function LH(a){a=a|0;CF(a);return}function MH(a){a=a|0;CF(a);SA(a);return}function NH(a){a=a|0;return 2}function OH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eI(a,j,i,e,f,g,49940,49948)|0;zb=h;return g|0}function PH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+11>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+(o?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=eI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function QH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];cI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function RH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];dI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function SH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];pI(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function TH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56736)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];cI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];dI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];fI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=eI(b,j,k,f,g,h,49900,49908)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=eI(b,j,k,f,g,h,49908,49916)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];gI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];hI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];iI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];jI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];kI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];lI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];mI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=eI(b,j,k,f,g,h,49916,49927)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=eI(b,j,k,f,g,h,49927,49932)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];nI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=eI(b,j,k,f,g,h,49932,49940)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];oI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];pI(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];qI(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];rI(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function UH(b){b=b|0;if((a[54872]|0)==0?nB(54872)|0:0){bI();c[14216]=53856;pB(54872)}return c[14216]|0}function VH(b){b=b|0;if((a[54856]|0)==0?nB(54856)|0:0){aI();c[14215]=53568;pB(54856)}return c[14215]|0}function WH(b){b=b|0;if((a[54840]|0)==0?nB(54840)|0:0){$H();c[14214]=53536;pB(54840)}return c[14214]|0}function XH(b){b=b|0;if((a[54832]|0)==0?nB(54832)|0:0){c[14211]=0;c[14212]=0;c[14213]=0;gO(56844,49658,Yf(49658)|0);pB(54832)}return 56844}function YH(b){b=b|0;if((a[54824]|0)==0?nB(54824)|0:0){c[14208]=0;c[14209]=0;c[14210]=0;gO(56832,49646,Yf(49646)|0);pB(54824)}return 56832}function ZH(b){b=b|0;if((a[54816]|0)==0?nB(54816)|0:0){c[14205]=0;c[14206]=0;c[14207]=0;gO(56820,49637,Yf(49637)|0);pB(54816)}return 56820}function _H(b){b=b|0;if((a[54808]|0)==0?nB(54808)|0:0){c[14202]=0;c[14203]=0;c[14204]=0;gO(56808,49628,Yf(49628)|0);pB(54808)}return 56808}function $H(){var b=0,d=0;if((a[54848]|0)==0?nB(54848)|0:0){d=53536;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53560);pB(54848)}nO(53536,49679)|0;nO(53548,49682)|0;return} +function sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g+8|0;e=g;d=We(b,0)|0;if(!d){c[e>>2]=b;Ue(0,3,20325,e);a=ox()|0;a=By(c[a>>2]|0)|0;c[f>>2]=57671;c[f+4>>2]=a;Ue(0,3,21881,f);a=-1}else{a=rd(a,d)|0;GO(d)}zb=g;return a|0}function td(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;f=a+(d<<5)|0;h=a+(d<<5)+8|0;i=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;g[c+(d<<5)+(e<<3)>>3]=+g[f>>3]*+g[b+(e<<3)>>3]+ +g[h>>3]*+g[b+32+(e<<3)>>3]+ +g[i>>3]*+g[b+64+(e<<3)>>3];e=e+1|0}i=c+(d<<5)+24|0;g[i>>3]=+g[a+(d<<5)+24>>3]+ +g[i>>3];d=d+1|0}return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,h=0,i=0,j=0;d=0;while(1){if((d|0)==3)break;h=a+(d<<5)|0;i=a+(d<<5)+8|0;j=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[b+(e<<2)>>2]*+g[h>>3]+ +f[b+16+(e<<2)>>2]*+g[i>>3]+ +f[b+32+(e<<2)>>2]*+g[j>>3];e=e+1|0}j=c+(d<<4)+12|0;f[j>>2]=+f[j>>2]+ +g[a+(d<<5)+24>>3];d=d+1|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;g=a+(d<<4)|0;h=a+(d<<4)+4|0;i=a+(d<<4)+8|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[g>>2]*+f[b+(e<<2)>>2]+ +f[h>>2]*+f[b+16+(e<<2)>>2]+ +f[i>>2]*+f[b+32+(e<<2)>>2];e=e+1|0}i=c+(d<<4)+12|0;f[i>>2]=+f[a+(d<<4)+12>>2]+ +f[i>>2];d=d+1|0}return 0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;h=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;f=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[h>>2]|0)+(e+f<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}d=c[h>>2]|0;f=d+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[d+120>>3]=1.0;Xd(h)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[(c[h>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(h)|0;return 0}function yd(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0;i=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;h=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[i>>2]|0)+(e+h<<3)>>3]=+f[a+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}d=c[i>>2]|0;h=d+96|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;g[d+120>>3]=1.0;Xd(i)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;f[b+(d<<4)+(e<<2)>>2]=+g[(c[i>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(i)|0;return 0}function zd(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Ad(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Oz(c,47)|0;if(!f){a[b>>0]=0;break}e=f+((e|0)!=0&1)-c|0;if((e+1|0)>>>0<=d>>>0){Wz(b,c,e)|0;a[b+e>>0]=0}else b=0}else b=0;while(0);return b|0}function Bd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;h=0;a:while(1){switch(a[b+h>>0]|0){case 0:break a;case 46:{e=h;break}default:{}}h=h+1|0}f=b+h|0;g=(Qy(d)|0)+2|0;if(!e)if((g+h|0)>(c|0))e=-1;else{a[f>>0]=46;e=h;i=9}else if((g+e|0)>(c|0))e=-1;else i=9;if((i|0)==9){a[b+(e+1)>>0]=0;aA(b,d)|0;e=0}return e|0}function Cd(b){b=b|0;var c=0,d=0;c=-1;d=0;a:while(1){switch(a[b+d>>0]|0){case 0:break a;case 46:{c=d;break}default:{}}d=d+1|0}if((c|0)!=-1)a[b+c>>0]=0;return 0}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<3,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<2,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Fd(a){a=a|0;var b=0;b=Dd(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Kd(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Gd(a,b){a=a|0;b=b|0;var d=0;d=Dd(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Nd(d,a,b)|0)<0){Ld(d)|0;d=0}}else d=0;return d|0}function Hd(a,b){a=a|0;b=b|0;var d=0;d=Ed(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Od(d,a,b)|0)<0){Md(d)|0;d=0}}else d=0;return d|0}function Id(a){a=a|0;var b=0;b=Dd(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($d(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Jd(a){a=a|0;var b=0;b=Ed(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if((ae(b,a)|0)<0){Md(b)|0;b=0}}else b=0;return b|0}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+4>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+8>>2]|0)):0){e=0;while(1){if((e|0)>=(h|0)){d=0;break a}f=B(e,i)|0;d=0;while(1){if((d|0)>=(i|0))break;j=d+f|0;g[(c[a>>2]|0)+(j<<3)>>3]=+g[(c[b>>2]|0)+(j<<3)>>3];d=d+1|0}e=e+1|0}}else d=-1;while(0);return d|0}function Ld(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Md(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;g[a>>3]=0.0;e=(c[d>>2]|0)+(j<<3)|0;f=(c[b>>2]|0)+(l<<3)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +g[f>>3]*+g[e>>3];g[a>>3]=p;e=e+(m<<3)|0;f=f+8|0;h=h+1|0;i=p}j=j+1|0;a=a+8|0}k=k+1|0}}else a=-1;while(0);return a|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;f[a>>2]=0.0;e=(c[d>>2]|0)+(j<<2)|0;g=(c[b>>2]|0)+(l<<2)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +f[g>>2]*+f[e>>2];f[a>>2]=p;e=e+(m<<2)|0;g=g+4|0;h=h+1|0;i=p}j=j+1|0;a=a+4|0}k=k+1|0}}else a=-1;while(0);return a|0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;j=c[a+8>>2]|0;f=(i|0)<(j|0)?i:j;a:do if(((((!((i|0)<2|(j|0)<2)?(c[b+8>>2]|0)==(j|0):0)?(c[b+4>>2]|0)==(f|0):0)?(k=d+4|0,(c[k>>2]|0)==(f|0)):0)?(c[e+4>>2]|0)==(j|0):0)?(l=Fd(a)|0,(l|0)!=0):0){h=+u(+(+(i|0)));if((Qd(l,e)|0)<0){Ld(l)|0;a=-1;break}if((Rd(l,e)|0)<0){Ld(l)|0;a=-1;break}f=B(j,i)|0;a=0;while(1){if((a|0)>=(f|0))break;j=(c[l>>2]|0)+(a<<3)|0;g[j>>3]=+g[j>>3]/h;a=a+1|0}a=Sd(l,b,d)|0;Ld(l)|0;e=c[k>>2]|0;h=0.0;f=0;while(1){if((f|0)>=(e|0))break;h=h+ +g[(c[d>>2]|0)+(f<<3)>>3];f=f+1|0}f=0;while(1){if((f|0)>=(e|0))break a;l=(c[d>>2]|0)+(f<<3)|0;g[l>>3]=+g[l>>3]/h;f=f+1|0}}else a=-1;while(0);return a|0}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,i=0,j=0,k=0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;a:do if(!((j|0)<1|(k|0)<1)?(c[b+4>>2]|0)==(k|0):0){d=0;while(1){if((d|0)==(k|0))break;g[(c[b>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}a=c[a>>2]|0;h=0;while(1){if((h|0)==(j|0))break;d=0;f=c[b>>2]|0;i=a;while(1){if((d|0)==(k|0))break;g[f>>3]=+g[i>>3]+ +g[f>>3];d=d+1|0;f=f+8|0;i=i+8|0}a=a+(k<<3)|0;h=h+1|0}e=+(j|0);d=0;while(1){if((d|0)==(k|0)){d=0;break a}j=(c[b>>2]|0)+(d<<3)|0;g[j>>3]=+g[j>>3]/e;d=d+1|0}}else d=-1;while(0);return d|0}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;i=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(i|0)){f=0;a=c[a>>2]|0;while(1){if((f|0)>=(h|0)){a=0;break a}d=0;e=c[b>>2]|0;while(1){if((d|0)>=(i|0))break;g[a>>3]=+g[a>>3]-+g[e>>3];d=d+1|0;e=e+8|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=c[a+4>>2]|0;f=c[a+8>>2]|0;i=(f|0)<(e|0)?f:e;a:do if(((!((e|0)<2|(f|0)<2)?(c[b+8>>2]|0)==(f|0):0)?(c[b+4>>2]|0)==(i|0):0)?(c[d+4>>2]|0)==(i|0):0){h=Dd(i,i)|0;if((c[h+4>>2]|0)==(i|0)?(c[h+8>>2]|0)==(i|0):0){e=(e|0)<(f|0);if(e){if((Td(a,h)|0)<0){Ld(h)|0;e=-1;break}}else if((Ud(a,h)|0)<0){Ld(h)|0;e=-1;break}if((Vd(h,d)|0)<0){Ld(h)|0;e=-1;break}b:do if(e){if((Wd(a,h,b,d)|0)<0){Ld(h)|0;e=-1;break a}}else{a=0;f=c[h>>2]|0;e=c[b>>2]|0;while(1){if((a|0)>=(i|0))break;if(+g[(c[d>>2]|0)+(a<<3)>>3]<1.0e-16)break;b=0;while(1){if((b|0)>=(i|0))break;g[e>>3]=+g[f>>3];b=b+1|0;f=f+8|0;e=e+8|0}a=a+1|0}while(1){if((a|0)>=(i|0))break b;g[(c[d>>2]|0)+(a<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(i|0))break;g[e>>3]=0.0;f=f+1|0;e=e+8|0}a=a+1|0}}while(0);Ld(h)|0;e=0;break}Ld(h)|0;e=-1}else e=-1;while(0);return e|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0;n=c[a+4>>2]|0;o=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}l=B(e,o)|0;d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{f=c[a>>2]|0;i=f+((B(d,o)|0)<<3)|0;g[j>>3]=0.0;b=0;f=f+(l<<3)|0;m=0.0;while(1){if((b|0)>=(o|0))break b;p=m+ +g[f>>3]*+g[i>>3];g[j>>3]=p;b=b+1|0;f=f+8|0;i=i+8|0;m=p}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0;m=c[a+4>>2]|0;n=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{i=c[a>>2]|0;g[j>>3]=0.0;b=0;f=i+(e<<3)|0;i=i+(d<<3)|0;l=0.0;while(1){if((b|0)>=(m|0))break b;o=l+ +g[f>>3]*+g[i>>3];g[j>>3]=o;b=b+1|0;f=f+(n<<3)|0;i=i+(n<<3)|0;l=o}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;F=zb;zb=zb+16|0;d=F;E=c[a+4>>2]|0;do if((!((E|0)<2?1:(E|0)!=(c[a+8>>2]|0))?(c[b+4>>2]|0)==(E|0):0)?(C=qe(E)|0,(C|0)!=0):0){D=E+-1|0;c[d+4>>2]=D;c[d>>2]=(c[C>>2]|0)+8;if((ue(a,b,d)|0)<0){re(C)|0;d=-1;break}A=c[C>>2]|0;g[A>>3]=0.0;y=D;while(1){if((y|0)<=0)break;z=y;while(1){if((z|0)<=0)break;n=+t(+(+g[A+(z<<3)>>3]));x=c[b>>2]|0;d=z+-1|0;o=+t(+(+g[x+(d<<3)>>3]));if(n>(o+ +t(+(+g[x+(z<<3)>>3])))*1.0e-06)z=d;else break}q=y+-1|0;a:do if((z|0)!=(y|0)){r=A+(y<<3)|0;s=A+(z+1<<3)|0;p=0;do{if(p>>>0>99)break a;p=p+1|0;v=c[b>>2]|0;w=v+(q<<3)|0;x=v+(y<<3)|0;h=+g[x>>3];o=(+g[w>>3]-h)*.5;m=+g[r>>3];m=m*m;j=+u(+(m+o*o));l=z;n=+g[s>>3];j=+g[v+(z<<3)>>3]-h+m/(o+(o<0.0?-j:j));while(1){if((l|0)>=(y|0))break;h=+t(+j);if(h>=+t(+n))if(h>1.0e-16){h=-n/j;o=1.0/+u(+(h*h+1.0));m=o;o=h*o}else{m=1.0;o=0.0}else{m=-j/n;o=1.0/+u(+(m*m+1.0));m=m*o}f=v+(l<<3)|0;I=+g[f>>3];k=l+1|0;d=v+(k<<3)|0;H=+g[d>>3];h=I-H;i=A+(k<<3)|0;G=o*(o*h+m*2.0*+g[i>>3]);g[f>>3]=I-G;g[d>>3]=H+G;d=A+(l<<3)|0;if((l|0)>(z|0))g[d>>3]=m*+g[d>>3]-n*o;I=+g[i>>3];g[i>>3]=I+o*(m*h-o*2.0*I);e=B(l,E)|0;f=B(k,E)|0;d=0;h=n;while(1){if((d|0)==(E|0))break;J=c[a>>2]|0;K=J+(d+e<<3)|0;j=+g[K>>3];J=J+(d+f<<3)|0;h=+g[J>>3];g[K>>3]=m*j-o*h;g[J>>3]=o*j+m*h;d=d+1|0}if((l|0)<(q|0)){j=+g[i>>3];K=A+(l+2<<3)|0;h=+g[K>>3];g[K>>3]=m*h;h=-(o*h)}l=k;n=h}H=+t(+(+g[r>>3]));I=+t(+(+g[w>>3]))}while(H>(I+ +t(+(+g[x>>3])))*1.0e-06)}while(0);y=q}d=0;while(1){if((d|0)==(D|0))break;f=c[b>>2]|0;i=f+(d<<3)|0;j=+g[i>>3];l=d+1|0;h=j;k=d;e=l;while(1){if((e|0)>=(E|0))break;I=+g[f+(e<<3)>>3];K=I>h;h=K?I:h;k=K?e:k;e=e+1|0}g[f+(k<<3)>>3]=j;g[i>>3]=h;e=c[a>>2]|0;f=e+((B(d,E)|0)<<3)|0;d=e+((B(k,E)|0)<<3)|0;e=0;while(1){if((e|0)==(E|0))break;I=+g[d>>3];g[d>>3]=+g[f>>3];g[f>>3]=I;f=f+8|0;d=d+8|0;e=e+1|0}d=l}re(C)|0;d=0}else d=-1;while(0);zb=F;return d|0}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0;p=c[a+4>>2]|0;q=c[a+8>>2]|0;a:do if(((((!((p|0)<1|(q|0)<1)?(c[b+4>>2]|0)==(p|0):0)?(c[b+8>>2]|0)==(p|0):0)?(c[d+4>>2]|0)==(p|0):0)?(c[d+8>>2]|0)==(q|0):0)?(c[e+4>>2]|0)==(p|0):0){h=0;d=c[d>>2]|0;while(1){if((h|0)>=(p|0))break;i=+g[(c[e>>2]|0)+(h<<3)>>3];if(i<1.0e-16)break;n=1.0/+u(+(+t(+i)));o=B(h,p)|0;j=0;m=d;while(1){if((j|0)==(q|0))break;f=0;k=(c[b>>2]|0)+(o<<3)|0;i=0.0;l=(c[a>>2]|0)+(j<<3)|0;while(1){if((f|0)==(p|0))break;r=i+ +g[k>>3]*+g[l>>3];f=f+1|0;k=k+8|0;i=r;l=l+(q<<3)|0}g[m>>3]=n*i;j=j+1|0;m=m+8|0}h=h+1|0;d=d+(q<<3)|0}while(1){if((h|0)>=(p|0)){d=0;break a}g[(c[e>>2]|0)+(h<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(q|0))break;g[d>>3]=0.0;f=f+1|0;d=d+8|0}h=h+1|0}}else d=-1;while(0);return d|0}function Xd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((Yd(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{g[a>>3]=1.0/+g[a>>3];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<3)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<3)|0;k=0.0;e=m;i=-1;f=l;while(1){if((f|0)==(b|0))break;r=+t(+(+g[e>>3]));j=k>2]|0;f=p+(l<<2)|0;c[e>>2]=c[f>>2];c[f>>2]=h;f=0;h=m;e=a+((B(i,d)|0)<<3)|0;while(1){if((f|0)==(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+8|0;e=e+8|0}k=+g[m>>3];e=1;f=m;while(1){if((e|0)==(b|0))break;j=f+8|0;g[f>>3]=+g[j>>3]/k;e=e+1|0;f=j}g[n>>3]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<3)|0;k=+g[i>>3];f=m;h=1;while(1){if((h|0)==(b|0))break;s=i+8|0;g[i>>3]=+g[s>>3]-k*+g[f>>3];f=f+8|0;h=h+1|0;i=s}g[j>>3]=-(k*+g[n>>3])}e=e+1|0;j=j+(d<<3)|0}l=l+1|0;n=n+(d<<3)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];f=0;h=a+(j<<3)|0;e=a+(i<<3)|0;while(1){if((f|0)>=(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+(d<<3)|0;e=e+(d<<3)|0}j=j+1|0}}while(0);zb=q;return a|0}function Zd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((_d(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function _d(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{f[a>>2]=1.0/+f[a>>2];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<2)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<2)|0;k=0.0;e=m;i=-1;g=l;while(1){if((g|0)==(b|0))break;r=+t(+(+f[e>>2]));j=k>2]|0;g=p+(l<<2)|0;c[e>>2]=c[g>>2];c[g>>2]=h;g=0;h=m;e=a+((B(i,d)|0)<<2)|0;while(1){if((g|0)==(b|0))break;j=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=j;g=g+1|0;h=h+4|0;e=e+4|0}k=+f[m>>2];e=1;g=m;while(1){if((e|0)==(b|0))break;j=g+4|0;f[g>>2]=+f[j>>2]/k;e=e+1|0;g=j}f[n>>2]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<2)|0;k=+f[i>>2];g=m;h=1;while(1){if((h|0)==(b|0))break;s=i+4|0;f[i>>2]=+f[s>>2]-k*+f[g>>2];g=g+4|0;h=h+1|0;i=s}f[j>>2]=-(k*+f[n>>2])}e=e+1|0;j=j+(d<<2)|0}l=l+1|0;n=n+(d<<2)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];g=0;h=a+(j<<2)|0;e=a+(i<<2)|0;while(1){if((g|0)>=(b|0))break;s=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=s;g=g+1|0;h=h+(d<<2)|0;e=e+(d<<2)|0}j=j+1|0}}while(0);zb=q;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+8>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(h|0)){a=0;break a}d=(c[b>>2]|0)+(f<<3)|0;e=0;while(1){if((e|0)>=(i|0))break;g[a>>3]=+g[d>>3];d=d+(h<<3)|0;e=e+1|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;a:do if((g|0)==(c[b+8>>2]|0)?(h=c[a+8>>2]|0,(h|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(g|0)){a=0;break a}d=(c[b>>2]|0)+(f<<2)|0;e=0;while(1){if((e|0)>=(h|0))break;c[a>>2]=c[d>>2];d=d+(g<<2)|0;e=e+1|0;a=a+4|0}f=f+1|0}}else a=-1;while(0);return a|0}function be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0;h=+(b|0)/+(c[a>>2]|0);f=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;while(1){if((b|0)==4)break;g[e+8+(b<<3)>>3]=h*+g[a+8+(b<<3)>>3];g[e+40+(b<<3)>>3]=f*+g[a+40+(b<<3)>>3];g[e+72+(b<<3)>>3]=+g[a+72+(b<<3)>>3];b=b+1|0}b=c[a+176>>2]|0;switch(b|0){case 4:{g[e+104>>3]=+g[a+104>>3];g[e+112>>3]=+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=h*+g[a+136>>3];g[e+144>>3]=f*+g[a+144>>3];g[e+152>>3]=h*+g[a+152>>3];g[e+160>>3]=f*+g[a+160>>3];g[e+168>>3]=+g[a+168>>3];i=9;break}case 3:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=+g[a+136>>3]/(h*f);g[e+144>>3]=+g[a+144>>3]/(f*(h*h*f));i=9;break}case 2:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);g[e+136>>3]=+g[a+136>>3]/(f*(h*h*f));i=9;break}case 1:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);i=9;break}default:b=-1}if((i|0)==9){c[e+176>>2]=b;b=0}return b|0}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;h=zb;zb=zb+96|0;f=h;a:do if(!(+g[a+88>>3]>=0.0)){d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=-+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}else{d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}while(0);d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=0.0;e=e+1|0}d=d+1|0}i=+g[f+64>>3];n=+g[f+72>>3];o=+g[f+80>>3];w=+de(i,n,o);a=b+80|0;g[a>>3]=w;w=i/w;u=c+64|0;g[u>>3]=w;n=n/+g[a>>3];s=c+72|0;g[s>>3]=n;o=o/+g[a>>3];p=c+80|0;g[p>>3]=o;m=c+88|0;g[m>>3]=+g[f+88>>3]/+g[a>>3];i=+g[f+32>>3];j=+g[f+40>>3];r=+g[f+48>>3];o=+ee(w,n,o,i,j,r);l=b+48|0;g[l>>3]=o;i=i-o*+g[u>>3];j=j-o*+g[s>>3];o=r-o*+g[p>>3];r=+de(i,j,o);k=b+40|0;g[k>>3]=r;v=c+32|0;g[v>>3]=i/r;t=c+40|0;g[t>>3]=j/+g[k>>3];q=c+48|0;g[q>>3]=o/+g[k>>3];o=+g[f>>3];j=+g[f+8>>3];r=+g[f+16>>3];i=+ee(+g[u>>3],+g[s>>3],+g[p>>3],o,j,r);d=b+16|0;g[d>>3]=i;n=+ee(+g[v>>3],+g[t>>3],+g[q>>3],o,j,r);e=b+8|0;g[e>>3]=n;o=o-n*+g[v>>3]-i*+g[u>>3];j=j-n*+g[t>>3]-i*+g[s>>3];i=r-n*+g[q>>3]-i*+g[p>>3];n=+de(o,j,i);g[b>>3]=n;g[c>>3]=o/n;g[c+8>>3]=j/+g[b>>3];g[c+16>>3]=i/+g[b>>3];i=+g[m>>3];j=(+g[f+56>>3]-+g[l>>3]*i)/+g[k>>3];g[c+56>>3]=j;g[c+24>>3]=(+g[f+24>>3]-j*+g[e>>3]-i*+g[d>>3])/+g[b>>3];d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==3)break;v=b+(d<<5)+(e<<3)|0;g[v>>3]=+g[v>>3]/+g[a>>3];e=e+1|0}d=d+1|0}zb=h;return 0}function de(a,b,c){a=+a;b=+b;c=+c;return +(+u(+(a*a+b*b+c*c)))}function ee(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;return +(a*d+b*e+c*f)}function fe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;switch(f|0){case 4:{t=+g[a>>3];v=+g[a+8>>3];r=+g[a+16>>3];s=+g[a+24>>3];x=+g[a+32>>3];y=+g[a+40>>3];z=+g[a+48>>3];A=+g[a+56>>3];w=+g[a+64>>3];q=(b-z)/x;l=(c-A)/y;m=r*2.0;n=s*6.0;o=s*2.0;p=r*6.0;i=q;j=l;k=q*q;b=l*l;f=1;while(1){if(!(b!=0.0|k!=0.0)){c=0.0;b=0.0;break}D=b+k;C=t*D+1.0+D*(v*D);c=k*3.0;B=b*c;c=i-(s*(D+k*2.0)+(j*(m*i)+i*C)-q)/(n*i+(m*j+(t*(b+c)+1.0+v*(b*b+(k*(k*5.0)+B)))));i=o*c;b=j-(r*(b*2.0+D)+j*C+j*i-l)/(p*j+(t*(k+b*3.0)+1.0+v*(b*(b*5.0)+(k*k+B)))+i);if((f|0)==4)break;i=c;j=b;k=c*c;b=b*b;f=f+1|0}g[d>>3]=z+x*c/w;b=A+y*b/w;h=22;break}case 3:{p=+g[a>>3];b=(b-p)/+g[a+24>>3];h=a+8|0;c=c-+g[h>>3];k=+g[a+32>>3]/1.0e8;l=+g[a+40>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;j=b*b+c*c;i=j;f=f+1|0;j=+u(+j)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 2:{p=+g[a>>3];b=b-p;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;l=+g[a+32>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 1:{n=+g[a>>3];b=b-n;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;i=b*b+c*c;l=+u(+i);m=k*3.0;f=1;j=l;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i)-l)/(1.0-m*i);b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=n+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}default:f=-1}if((h|0)==22){g[e>>3]=b;f=0}return f|0}function ge(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do switch(f|0){case 4:{h=+g[a+16>>3];l=+g[a+24>>3];o=+g[a+32>>3];m=+g[a+40>>3];p=+g[a+48>>3];n=+g[a+56>>3];i=+g[a+64>>3];k=(b-p)*i/o;c=(c-n)*i/m;i=k*k+c*c;b=+g[a>>3]*i+1.0+i*(+g[a+8>>3]*i);g[d>>3]=p+o*(l*(i+k*(k*2.0))+(c*(h*2.0*k)+k*b));b=n+m*(c*(l*2.0*k)+(h*(i+c*(c*2.0))+c*b));j=12;break}case 3:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+32>>3]/1.0e8)-p*(p*(+g[a+40>>3]/1.0e8/1.0e5));g[d>>3]=i+ +g[a+24>>3]*(h*p);b=+g[f>>3]+b*p;j=12;break a}}case 2:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+24>>3]/1.0e8)-p*(p*(+g[a+32>>3]/1.0e8/1.0e5));g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}case 1:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=1.0-(h*h+b*b)*(+g[a+24>>3]/1.0e8);g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}default:f=-1}while(0);if((j|0)==12){g[e>>3]=b;f=0}return f|0}function he(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+192|0;f=g;ie(a,f);ie(a+4|0,f+4|0);b=0;while(1){if((b|0)==3)break;d=0;while(1){if((d|0)==4)break;je(a+8+(b<<5)+(d<<3)|0,f+8+(b<<5)+(d<<3)|0);d=d+1|0}b=b+1|0}d=a+176|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[1712+(e+-1<<3)>>2]|0))break;je(a+104+(b<<3)|0,f+104+(b<<3)|0);b=b+1|0}c[f+176>>2]=e;_O(a|0,f|0,184)|0;zb=g;return}function ie(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==4)break;a[c+d>>0]=a[b+(3-d)>>0]|0;d=d+1|0}return}function je(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==8)break;a[c+d>>0]=a[b+(7-d)>>0]|0;d=d+1|0}return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+256|0;n=s+248|0;l=s+240|0;k=s+232|0;j=s+224|0;i=s+216|0;h=s+208|0;f=s+200|0;p=s;q=s+16|0;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=rz(a,22236)|0;if(!r){r=ox()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Ue(0,3,20359,f);a=ox()|0;a=By(c[a>>2]|0)|0;c[h>>2]=57671;c[h+4>>2]=a;Ue(0,3,21881,h);a=-1;break}Kz(r,0,2)|0;a:do if(!(Bz(r)|0)){h=hA(r)|0;iA(r);f=0;while(1){if(f>>>0>=4){o=9;break}a=c[1712+(f<<3)+4>>2]|0;f=f+1|0;if(!((h|0)%(a|0)|0)){m=f;break}}do if((o|0)==9)if((f|0)==4){Ue(0,3,20473,k);a=-1;break a}else{m=0;a=c[1712+(0<<3)+4>>2]|0;break}while(0);if((gA(q,a,1,r)|0)!=1){a=ox()|0;c[l>>2]=c[a>>2];Ue(0,3,20553,l);a=ox()|0;a=By(c[a>>2]|0)|0;c[n>>2]=57671;c[n+4>>2]=a;Ue(0,3,21881,n);a=-1;break}j=q+176|0;c[j>>2]=m;he(q);k=(m|0)==1;l=q+120|0;if(k){t=+g[l>>3];i=q+128|0;g[l>>3]=+g[i>>3];g[i>>3]=t}else i=q+128|0;_O(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;a=1;while(1){if((a|0)>=(b|0)){a=0;break a}e=(c[p>>2]|0)+(4-1)&~(4-1);h=c[e>>2]|0;c[p>>2]=e+4;c[h+176>>2]=c[f>>2];if((gA(q,c[1712+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[j>>2]=m;he(q);if(k){t=+g[l>>3];g[l>>3]=+g[i>>3];g[i>>3]=t}_O(h|0,q|0,184)|0;a=a+1|0}}else{a=ox()|0;c[i>>2]=c[a>>2];Ue(0,3,20428,i);a=ox()|0;a=By(c[a>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=a;Ue(0,3,21881,j);a=-1}while(0);xz(r)|0}else a=-1;while(0);zb=s;return a|0}function le(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+416|0;j=o+304|0;m=o+208|0;k=o+128|0;n=o;l=c[a>>2]|0;f=c[a+4>>2]|0;a:do if((ce(a+8|0,j,m)|0)<0)Ue(0,3,20591,o+400|0);else{i=+(f+-1|0);a=0;while(1){if((a|0)==4)break;f=j+32+(a<<3)|0;g[f>>3]=+g[j+64+(a<<3)>>3]*i-+g[f>>3];a=a+1|0}h=+g[j+80>>3];f=0;while(1){if((f|0)==3)break;a=0;while(1){if((a|0)==3)break;g[k+(f*24|0)+(a<<3)>>3]=+g[j+(f<<5)+(a<<3)>>3]/h;a=a+1|0}f=f+1|0}h=+(l+-1|0);g[n>>3]=+g[k>>3]*2.0/h;g[n+8>>3]=+g[k+8>>3]*2.0/h;g[n+16>>3]=-(+g[k+16>>3]*2.0/h+-1.0);f=n+24|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+40>>3]=-(+g[k+32>>3]*2.0/i);g[n+48>>3]=-(+g[k+40>>3]*2.0/i+-1.0);f=n+56|0;h=b-d;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[n+80>>3]=(b+d)/h;g[n+88>>3]=d*2.0*b/h;f=n+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+112>>3]=-1.0;g[n+120>>3]=0.0;h=+g[m+24>>3];i=+g[m+56>>3];b=+g[m+88>>3];f=0;while(1){if((f|0)==4)break a;d=+g[n+(f<<5)>>3];j=n+(f<<5)+8|0;k=n+(f<<5)+16|0;a=0;while(1){if((a|0)==3)break;g[e+((a<<2)+f<<3)>>3]=d*+g[m+(a<<3)>>3]+ +g[j>>3]*+g[m+32+(a<<3)>>3]+ +g[k>>3]*+g[m+64+(a<<3)>>3];a=a+1|0}g[e+(f+12<<3)>>3]=+g[n+(f<<5)+24>>3]+(d*h+ +g[j>>3]*i+ +g[k>>3]*b);f=f+1|0}}while(0);zb=o;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+64|0;n=s+24|0;o=s+16|0;p=s+8|0;q=s;r=FO(208)|0;if(!r){Ue(0,3,41858,s+32|0);Ea(1)}_O(r|0,a|0,184)|0;m=b<<1;l=(c[a>>2]|0)+m|0;c[r+192>>2]=l;m=(c[a+4>>2]|0)+m|0;c[r+196>>2]=m;c[r+200>>2]=b;c[r+204>>2]=b;d=B(l<<3,m)|0;e=FO(d)|0;c[r+184>>2]=e;if(!e){Ue(0,3,41858,s+40|0);Ea(1)}d=FO(d)|0;c[r+188>>2]=d;if(!d){Ue(0,3,41858,s+48|0);Ea(1)}k=a+104|0;j=c[a+176>>2]|0;i=0;a=e;while(1){if((i|0)>=(m|0))break;h=+(i-b|0);e=0;while(1){if((e|0)>=(l|0))break;t=+(e-b|0);ge(k,t,h,p,q,j)|0;f[a>>2]=+g[p>>3];f[a+4>>2]=+g[q>>3];fe(k,t,h,n,o,j)|0;f[d>>2]=+g[n>>3];f[d+4>>2]=+g[o>>3];e=e+1|0;d=d+8|0;a=a+8|0}i=i+1|0}zb=s;return r|0}function ne(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){GO(c[b+184>>2]|0);GO(c[(c[a>>2]|0)+188>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;a=0}else a=-1;return a|0}function oe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function pe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a+4>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function qe(a){a=a|0;var b=0,d=0;b=FO(8)|0;do if(b){d=FO(a<<3)|0;c[b>>2]=d;if(!d){GO(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function re(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function se(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0;b=+u(+(+te(a,a)));a:do if(b!=0.0){f=c[a>>2]|0;e=+g[f>>3];b=e<0.0?-b:b;e=e+b;g[f>>3]=e;e=1.0/+u(+(b*e));d=c[a+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;h=f+(a<<3)|0;g[h>>3]=e*+g[h>>3];a=a+1|0}}while(0);return +-b}function te(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))Ea(0);d=0;e=0.0;while(1){if((d|0)>=(f|0))break;h=e+ +g[(c[a>>2]|0)+(d<<3)>>3]*+g[(c[b>>2]|0)+(d<<3)>>3];d=d+1|0;e=h}return +e}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;u=x+8|0;v=x;w=c[a+8>>2]|0;a:do if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){r=w+-2|0;s=u+4|0;t=v+4|0;l=0;while(1){if((l|0)>=(r|0))break;m=(c[a>>2]|0)+((B(l,w)|0)<<3)|0;g[(c[b>>2]|0)+(l<<3)>>3]=+g[m+(l<<3)>>3];i=w-l+-1|0;c[s>>2]=i;p=l+1|0;k=m+(p<<3)|0;c[u>>2]=k;o=+se(u);g[(c[d>>2]|0)+(l<<3)>>3]=o;b:do if(!(o==0.0)){h=p;while(1){if((h|0)>=(w|0))break;e=p;j=0.0;while(1){if(e>>>0>=h>>>0)break;f=(c[a>>2]|0)+((B(e,w)|0)+h<<3)|0;o=j+ +g[f>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}f=B(h,w)|0;e=h;while(1){if((e|0)>=(w|0))break;o=j+ +g[(c[a>>2]|0)+(e+f<<3)>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}g[(c[b>>2]|0)+(h<<3)>>3]=j;h=h+1|0}c[t>>2]=i;c[s>>2]=i;c[u>>2]=k;c[v>>2]=(c[b>>2]|0)+(p<<3);o=+te(u,v)*.5;e=w;while(1){e=e+-1|0;if((e|0)<=(l|0))break b;j=+g[m+(e<<3)>>3];h=c[b>>2]|0;i=h+(e<<3)|0;n=+g[i>>3]-o*j;g[i>>3]=n;i=B(e,w)|0;f=e;while(1){if((f|0)>=(w|0))break;k=(c[a>>2]|0)+(f+i<<3)|0;g[k>>3]=+g[k>>3]-(j*+g[h+(f<<3)>>3]+n*+g[m+(f<<3)>>3]);f=f+1|0}}}while(0);l=p}if((w|0)<=1)if((w|0)==1){h=0;e=c[a>>2]|0;f=c[b>>2]|0;q=27}else i=w;else{e=c[a>>2]|0;q=B(r,w)|0;f=c[b>>2]|0;g[f+(r<<3)>>3]=+g[e+(q+r<<3)>>3];h=w+-1|0;g[(c[d>>2]|0)+(r<<3)>>3]=+g[e+(h+q<<3)>>3];q=27}if((q|0)==27){e=e+((B(h,w)|0)+h<<3)|0;i=w;j=+g[e>>3];e=f+(h<<3)|0;q=28}while(1){if((q|0)==28)g[e>>3]=j;d=i+-1|0;if((i|0)<=0){e=0;break a}m=(c[a>>2]|0)+((B(d,w)|0)<<3)|0;c:do if((i|0)<=(r|0)){h=w-d+-1|0;k=m+(i<<3)|0;e=i;while(1){if((e|0)>=(w|0))break c;c[t>>2]=h;c[s>>2]=h;c[u>>2]=k;l=B(e,w)|0;c[v>>2]=(c[a>>2]|0)+(l+i<<3);j=+te(u,v);f=i;while(1){if((f|0)>=(w|0))break;q=(c[a>>2]|0)+(f+l<<3)|0;g[q>>3]=+g[q>>3]-j*+g[m+(f<<3)>>3];f=f+1|0}e=e+1|0}}while(0);e=0;while(1){if((e|0)>=(w|0))break;g[m+(e<<3)>>3]=0.0;e=e+1|0}i=d;j=1.0;e=m+(d<<3)|0;q=28}}else e=-1;while(0);zb=x;return e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;f=+g[c>>3];h=+g[c+8>>3];e=+g[c+16>>3];d=+g[b+88>>3]+(f*+g[b+64>>3]+h*+g[b+72>>3]+e*+g[b+80>>3]);if(d==0.0)c=-1;else{i=+g[b+56>>3]+(f*+g[b+32>>3]+h*+g[b+40>>3]+e*+g[b+48>>3]);g[a>>3]=(+g[b+24>>3]+(f*+g[b>>3]+h*+g[b+8>>3]+e*+g[b+16>>3]))/d;g[a+8>>3]=i/d;c=0}return c|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0;j=zb;zb=zb+224|0;h=j+48|0;i=j;f=j+192|0;xe(h,f,c,d);a:do if((ye(i,b,f)|0)<0){Ue(0,3,20661,j+216|0);b=-1}else{c=0;while(1){if((c|0)==2){b=0;break a}d=0;while(1){if((d|0)==6)break;f=a+(c*48|0)+(d<<3)|0;g[f>>3]=0.0;b=0;e=0.0;while(1){if((b|0)==3)break;k=e+ +g[i+(c*24|0)+(b<<3)>>3]*+g[h+(b*48|0)+(d<<3)>>3];g[f>>3]=k;b=b+1|0;e=k}d=d+1|0}c=c+1|0}}while(0);zb=j;return b|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=zb;zb=zb+864|0;h=j+576|0;i=j;u=c+8|0;e=d+8|0;n=+g[e>>3];t=c+16|0;v=d+16|0;l=+g[v>>3];g[b>>3]=+g[c+24>>3]+(+g[c>>3]*+g[d>>3]+ +g[u>>3]*n+ +g[t>>3]*l);s=c+32|0;o=+g[d>>3];r=c+40|0;q=c+48|0;g[b+8>>3]=+g[c+56>>3]+(+g[s>>3]*o+n*+g[r>>3]+l*+g[q>>3]);p=c+64|0;d=c+72|0;n=+g[e>>3];e=c+80|0;g[b+16>>3]=+g[c+88>>3]+(o*+g[p>>3]+ +g[d>>3]*n+l*+g[e>>3]);l=+g[c>>3];g[h>>3]=o*l;g[h+8>>3]=n*l;m=+g[v>>3];g[h+16>>3]=l*m;k=+g[u>>3];g[h+24>>3]=o*k;g[h+32>>3]=n*k;g[h+40>>3]=m*k;f=+g[t>>3];g[h+48>>3]=o*f;g[h+56>>3]=n*f;g[h+64>>3]=m*f;g[h+72>>3]=l;g[h+80>>3]=k;g[h+88>>3]=f;f=+g[s>>3];g[h+96>>3]=o*f;g[h+104>>3]=n*f;g[h+112>>3]=m*f;k=+g[r>>3];g[h+120>>3]=o*k;g[h+128>>3]=n*k;g[h+136>>3]=m*k;l=+g[q>>3];g[h+144>>3]=o*l;g[h+152>>3]=n*l;g[h+160>>3]=m*l;g[h+168>>3]=f;g[h+176>>3]=k;g[h+184>>3]=l;l=+g[p>>3];g[h+192>>3]=o*l;g[h+200>>3]=n*l;g[h+208>>3]=m*l;k=+g[d>>3];g[h+216>>3]=o*k;g[h+224>>3]=n*k;g[h+232>>3]=m*k;f=+g[e>>3];g[h+240>>3]=o*f;g[h+248>>3]=n*f;g[h+256>>3]=m*f;g[h+264>>3]=l;g[h+272>>3]=k;g[h+280>>3]=f;ze(i);c=0;while(1){if((c|0)==3)break;d=0;while(1){if((d|0)==6)break;e=a+(c*48|0)+(d<<3)|0;g[e>>3]=0.0;b=0;f=0.0;while(1){if((b|0)==12)break;o=f+ +g[h+(c*96|0)+(b<<3)>>3]*+g[i+(b*48|0)+(d<<3)>>3];g[e>>3]=o;b=b+1|0;f=o}d=d+1|0}c=c+1|0}zb=j;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0;o=+g[b>>3];r=+g[c>>3];p=b+8|0;q=+g[c+8>>3];n=b+16|0;d=+g[c+16>>3];e=+g[b+24>>3]+(o*r+ +g[p>>3]*q+ +g[n>>3]*d);c=b+32|0;f=b+40|0;h=b+48|0;i=+g[b+56>>3]+(r*+g[c>>3]+q*+g[f>>3]+d*+g[h>>3]);j=b+64|0;k=+g[j>>3];l=b+72|0;m=b+80|0;d=+g[b+88>>3]+(r*k+q*+g[l>>3]+d*+g[m>>3]);if(d==0.0)c=-1;else{r=d*d;g[a>>3]=(o*d-e*k)/r;g[a+8>>3]=(d*+g[p>>3]-e*+g[l>>3])/r;g[a+16>>3]=(d*+g[n>>3]-e*+g[m>>3])/r;g[a+24>>3]=(d*+g[c>>3]-i*+g[j>>3])/r;g[a+32>>3]=(d*+g[f>>3]-i*+g[l>>3])/r;g[a+40>>3]=(d*+g[h>>3]-i*+g[m>>3])/r;c=0}return c|0}function ze(a){a=a|0;var b=0,d=0,e=0;b=a+64|0;d=a;e=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+104>>3]=1.0;b=a+160|0;d=a+112|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+240|0;d=a+168|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+296|0;d=a+248|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+304|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+336>>3]=1.0;b=a+456|0;d=a+344|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+512|0;d=a+464|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+568|0;d=a+520|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;return}function Ae(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;d=Id(f)|0;do if(d){b=Gd(d,f)|0;if(!b){Ld(d)|0;a=-1;break}a=Gd(d,g)|0;if(!a){Ld(d)|0;Ld(b)|0;a=-1;break}if((Xd(b)|0)<0){Ld(d)|0;Ld(b)|0;Ld(a)|0;a=-1;break}else{Nd(h,b,a)|0;Ld(d)|0;Ld(b)|0;Ld(a)|0;a=0;break}}else a=-1;while(0);zb=i;return a|0}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0;j=zb;zb=zb+256|0;f=j+192|0;h=j+96|0;i=j;Ce(f,b);De(h,f);b=0;while(1){if((b|0)==3)break;d=a+(b<<5)|0;e=a+(b<<5)+8|0;f=a+(b<<5)+16|0;c=0;while(1){if((c|0)==4)break;g[i+(b<<5)+(c<<3)>>3]=+g[d>>3]*+g[h+(c<<3)>>3]+ +g[e>>3]*+g[h+32+(c<<3)>>3]+ +g[f>>3]*+g[h+64+(c<<3)>>3];c=c+1|0}f=i+(b<<5)+24|0;g[f>>3]=+g[a+(b<<5)+24>>3]+ +g[f>>3];b=b+1|0}b=0;while(1){if((b|0)==3)break;c=0;while(1){if((c|0)==4)break;g[a+(b<<5)+(c<<3)>>3]=+g[i+(b<<5)+(c<<3)>>3];c=c+1|0}b=b+1|0}zb=j;return 0}function Ce(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,h=0.0;d=+g[b>>3];e=b+8|0;h=+g[e>>3];f=b+16|0;c=+g[f>>3];c=d*d+h*h+c*c;if(c==0.0){g[a>>3]=1.0;g[a+8>>3]=0.0;d=0.0;c=0.0}else{c=+u(+c);g[a>>3]=d/c;g[a+8>>3]=+g[e>>3]/c;d=c;c=+g[f>>3]/c}g[a+16>>3]=c;g[a+24>>3]=d;g[a+32>>3]=+g[b+24>>3];g[a+40>>3]=+g[b+32>>3];g[a+48>>3]=+g[b+40>>3];return}function De(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0;c=+g[b+24>>3];e=+w(+c);d=1.0-e;c=+x(+c);i=+g[b>>3];g[a>>3]=e+i*i*d;h=b+8|0;f=b+16|0;g[a+8>>3]=d*(+g[b>>3]*+g[h>>3])-c*+g[f>>3];g[a+16>>3]=d*(+g[b>>3]*+g[f>>3])+c*+g[h>>3];g[a+24>>3]=+g[b+32>>3];g[a+32>>3]=d*(+g[h>>3]*+g[b>>3])+c*+g[f>>3];i=+g[h>>3];g[a+40>>3]=e+d*(i*i);g[a+48>>3]=d*(+g[h>>3]*+g[f>>3])-c*+g[b>>3];g[a+56>>3]=+g[b+40>>3];g[a+64>>3]=d*(+g[f>>3]*+g[b>>3])-c*+g[h>>3];g[a+72>>3]=d*(+g[f>>3]*+g[h>>3])+c*+g[b>>3];c=+g[f>>3];g[a+80>>3]=e+d*(c*c);g[a+88>>3]=+g[b+48>>3];return}function Ee(a){a=a|0;var b=0,d=0,e=0;b=FO(136)|0;if(!b)b=0;else{d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}c[b+96>>2]=10;g[b+104>>3]=.10000000149011612;g[b+112>>3]=.9900000095367432;g[b+120>>3]=4.0;g[b+128>>3]=.5}return b|0}function Fe(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{GO(b);c[a>>2]=0;a=0}return a|0}function Ge(a,b){a=a|0;b=+b;if(!a)a=-1;else{g[a+128>>3]=b;a=0}return a|0}function He(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=zb;zb=zb+176|0;j=x+168|0;i=x+160|0;s=x+144|0;t=x+48|0;u=x;v=b+8|0;h=c[v>>2]|0;do if((h|0)>=3){w=FO(h*96|0)|0;if(!w){Ue(0,3,41875,i);h=-1;break}r=FO(h<<4)|0;if(!r){Ue(0,3,41875,j);GO(w);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}d=b+4|0;m=s+8|0;n=a+104|0;o=a+96|0;p=a+120|0;q=a+112|0;l=0.0;j=0;a:while(1){ud(a,e,t)|0;k=0.0;i=0;while(1){h=c[v>>2]|0;if((i|0)>=(h|0))break;if((ve(s,t,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=16;break a}h=c[b>>2]|0;z=+g[h+(i<<4)>>3]-+g[s>>3];y=+g[h+(i<<4)+8>>3]-+g[m>>3];h=i<<1;g[r+(h<<3)>>3]=z;g[r+((h|1)<<3)>>3]=y;k=k+(z*z+y*y);i=i+1|0}k=k/+(h|0);if(k<+g[n>>3]){i=31;break}if((j|0?k<+g[p>>3]:0)?k/l>+g[q>>3]:0){i=31;break}if((j|0)==(c[o>>2]|0)){i=31;break}i=0;while(1){if((i|0)>=(h|0))break;if((we(w+(i*12<<3)|0,a,e,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=27;break a}i=i+1|0;h=c[v>>2]|0}if((Ae(u,r,w,h<<1)|0)<0){i=29;break}Be(e,u)|0;l=k;j=j+1|0}if((i|0)==16){Ie(w,r);h=-1;break}else if((i|0)==27){Ie(w,r);h=-1;break}else if((i|0)==29){Ie(w,r);h=-1;break}else if((i|0)==31){g[f>>3]=k;GO(w);GO(r);h=0;break}}else h=-1;while(0);zb=x;return h|0}function Ie(a,b){a=a|0;b=b|0;GO(a);GO(b);return}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=zb;zb=zb+192|0;l=F+184|0;k=F+176|0;j=F+168|0;h=F+160|0;A=F+144|0;B=F+48|0;C=F;D=b+8|0;i=c[D>>2]|0;do if((i|0)>=4){m=~~(+g[a+128>>3]*+(i|0))+-1|0;m=(m|0)>3?m:3;E=FO(i*96|0)|0;if(!E){Ue(0,3,41875,h);h=-1;break}z=FO(i<<4)|0;if(!z){Ue(0,3,41875,j);GO(E);h=-1;break}h=i<<3;y=FO(h)|0;if(!y){Ue(0,3,41875,k);GO(E);GO(z);h=-1;break}x=FO(h)|0;if(!x){Ue(0,3,41875,l);GO(E);GO(z);GO(y);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}v=b+4|0;w=A+8|0;d=x+(m<<3)|0;m=a+104|0;s=a+96|0;t=a+120|0;u=a+112|0;q=0.0;l=0;a:while(1){ud(a,e,B)|0;h=0;while(1){i=c[D>>2]|0;if((h|0)>=(i|0))break;if((ve(A,B,(c[v>>2]|0)+(h*24|0)|0)|0)<0){i=20;break a}k=c[b>>2]|0;p=+g[k+(h<<4)>>3]-+g[A>>3];r=+g[k+(h<<4)+8>>3]-+g[w>>3];k=h<<1;g[z+(k<<3)>>3]=p;g[z+((k|1)<<3)>>3]=r;r=p*p+r*r;g[x+(h<<3)>>3]=r;g[y+(h<<3)>>3]=r;h=h+1|0}oy(x,i,8,18);r=+g[d>>3]*4.0;r=r<16.0?16.0:r;i=c[D>>2]|0;p=r/6.0;o=0.0;h=0;while(1){if((h|0)>=(i|0))break;n=+g[x+(h<<3)>>3];if(n>r)n=p;else{n=1.0-n/r;n=p*(1.0-n*(n*n))}o=o+n;h=h+1|0}o=o/+(i|0);if(o<+g[m>>3]){i=44;break}if((l|0?o<+g[t>>3]:0)?o/q>+g[u>>3]:0){i=44;break}if((l|0)==(c[s>>2]|0)){i=44;break}h=0;k=0;while(1){if((k|0)>=(i|0))break;n=+g[y+(k<<3)>>3];if(n<=r){j=h*6|0;i=E+(j<<3)|0;if((we(i,a,e,(c[v>>2]|0)+(k*24|0)|0)|0)<0){i=36;break a}q=1.0-n/r;q=q*q;g[i>>3]=q*+g[i>>3];i=E+((j|1)<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+2<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+3<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+4<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+5<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+6<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+7<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+8<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+9<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+10<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+11<<3)|0;g[i>>3]=q*+g[i>>3];i=k<<1;g[z+(h<<3)>>3]=q*+g[z+(i<<3)>>3];g[z+(h+1<<3)>>3]=q*+g[z+((i|1)<<3)>>3];h=h+2|0;i=c[D>>2]|0}k=k+1|0}if((h|0)<6){i=40;break}if((Ae(C,z,E,h)|0)<0){i=42;break}Be(e,C)|0;q=o;l=l+1|0}if((i|0)==20){Ke(E,z,y,x);h=-1;break}else if((i|0)==36){Ke(E,z,y,x);h=-1;break}else if((i|0)==40){Ke(E,z,y,x);h=-1;break}else if((i|0)==42){Ke(E,z,y,x);h=-1;break}else if((i|0)==44){g[f>>3]=o;GO(E);GO(z);GO(y);GO(x);h=0;break}}else h=-1;while(0);zb=F;return h|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;GO(a);GO(b);GO(c);GO(d);return}function Le(a,b){a=a|0;b=b|0;var c=0.0;c=+g[a>>3]-+g[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;t=zb;zb=zb+128|0;s=t+120|0;p=t+112|0;o=t+104|0;m=t+96|0;l=t+88|0;j=t+80|0;i=t+72|0;r=t;a:do if((e|0)>=4){h=0;while(1){if((h|0)>=(e|0))break;if(+g[d+(h*24|0)+16>>3]!=0.0){h=-1;break a}else h=h+1|0}if((((((((!(+g[a>>3]==0.0)?!(+g[a+32>>3]!=0.0):0)?(q=a+40|0,!(+g[q>>3]==0.0)):0)?!(+g[a+64>>3]!=0.0):0)?!(+g[a+72>>3]!=0.0):0)?!(+g[a+80>>3]!=1.0):0)?!(+g[a+24>>3]!=0.0):0)?!(+g[a+56>>3]!=0.0):0)?!(+g[a+88>>3]!=0.0):0){h=e<<1;n=Dd(h,8)|0;if(!n){Ue(0,3,20681,i);h=-1;break}k=Dd(h,1)|0;if(!k){Ld(n)|0;Ue(0,3,20707,j);h=-1;break}h=0;while(1){if((h|0)==(e|0))break;y=d+(h*24|0)|0;j=c[n>>2]|0;i=h<<4;g[j+(i<<3)>>3]=+g[y>>3];x=d+(h*24|0)+8|0;g[j+((i|1)<<3)>>3]=+g[x>>3];g[j+((i|2)<<3)>>3]=1.0;g[j+((i|3)<<3)>>3]=0.0;g[j+((i|4)<<3)>>3]=0.0;g[j+((i|5)<<3)>>3]=0.0;w=b+(h<<4)|0;g[j+((i|6)<<3)>>3]=-(+g[y>>3]*+g[w>>3]);g[j+((i|7)<<3)>>3]=-(+g[x>>3]*+g[w>>3]);g[j+((i|8)<<3)>>3]=0.0;g[j+((i|9)<<3)>>3]=0.0;g[j+((i|10)<<3)>>3]=0.0;g[j+((i|11)<<3)>>3]=+g[y>>3];g[j+((i|12)<<3)>>3]=+g[x>>3];g[j+((i|13)<<3)>>3]=1.0;v=b+(h<<4)+8|0;g[j+((i|14)<<3)>>3]=-(+g[y>>3]*+g[v>>3]);g[j+((i|15)<<3)>>3]=-(+g[x>>3]*+g[v>>3]);i=c[k>>2]|0;j=h<<1;g[i+(j<<3)>>3]=+g[w>>3];g[i+((j|1)<<3)>>3]=+g[v>>3];h=h+1|0}b=Id(n)|0;if(!b){Ld(n)|0;Ld(k)|0;Ue(0,3,20733,l);h=-1;break}j=Gd(b,n)|0;if(!j){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ue(0,3,20759,m);h=-1;break}i=Gd(b,k)|0;if(!i){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ue(0,3,20785,o);h=-1;break}if((Xd(j)|0)<0){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20811,p);h=-1;break}h=Gd(j,i)|0;if(!h){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20837,s);h=-1;break}else{p=c[h>>2]|0;H=+g[p+48>>3];w=r+16|0;E=+g[a+48>>3];A=+g[q>>3];K=(+g[p+24>>3]-H*E)/A;s=r+8|0;D=+g[a+16>>3];C=+g[a+8>>3];B=+g[a>>3];N=(+g[p>>3]-H*D-K*C)/B;I=+g[p+56>>3];v=r+40|0;L=(+g[p+32>>3]-E*I)/A;x=r+32|0;J=(+g[p+8>>3]-D*I-C*L)/B;y=r+24|0;A=(+g[p+40>>3]-E)/A;E=+g[p+16>>3];Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ld(h)|0;M=+u(+(H*H+(K*K+N*N)));z=+u(+(I*I+(L*L+J*J)));g[r>>3]=N/M;g[s>>3]=K/M;g[w>>3]=H/M;g[y>>3]=J/z;g[x>>3]=L/z;g[v>>3]=I/z;z=(M+z)*.5;Ne(r);M=+g[s>>3];I=+g[v>>3];L=+g[w>>3];J=+g[x>>3];H=M*I-L*J;K=+g[y>>3];N=+g[r>>3];G=L*K-I*N;O=J*N-M*K;F=+u(+(O*O+(H*H+G*G)));H=H/F;g[r+48>>3]=H;G=G/F;g[r+56>>3]=G;F=O/F;g[r+64>>3]=F;g[f>>3]=N;g[f+32>>3]=M;g[f+64>>3]=L;g[f+8>>3]=K;g[f+40>>3]=J;g[f+72>>3]=I;g[f+16>>3]=H;g[f+48>>3]=G;g[f+80>>3]=F;g[f+24>>3]=(E-D-C*A)/B/z;g[f+56>>3]=A/z;g[f+88>>3]=1.0/z;h=0;break}}else h=-1}else h=-1;while(0);zb=t;return h|0}function Ne(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0;l=+g[a>>3];L=a+8|0;o=+g[L>>3];M=a+16|0;p=+g[M>>3];N=a+24|0;B=+g[N>>3];O=a+32|0;C=+g[O>>3];K=a+40|0;f=+g[K>>3];b=o*f-p*C;c=p*B-l*f;d=l*C-o*B;e=+u(+(d*d+(b*b+c*c)));do if(!(e==0.0)){m=b/e;k=c/e;j=d/e;A=l*B+o*C+p*f;A=A<0.0?-A:A;A=(+u(+(A+1.0))+ +u(+(1.0-A)))*.5;d=l*k;b=o*m;c=d-b;if(c!=0.0){n=0;y=m;h=l;i=o;z=k;e=p}else{P=l*j-p*m!=0.0;i=P?p:o;h=P?l:p;z=P?j:k;y=P?m:j;d=h*z;c=i*y;n=P?1:2;b=c;c=d-c;e=P?o:l;j=P?k:m}if(!(c==0.0)?(t=(i*j-e*z)/c,v=A*z/c,x=b-d,w=(h*j-e*y)/x,x=A*y/x,r=t*t+w*w+1.0,s=t*v+w*x,q=s*s-r*(v*v+x*x+-1.0),!(q<0.0)):0){d=+u(+q);h=(d-s)/r;i=v+t*h;e=x+w*h;d=(-s-d)/r;c=v+t*d;b=x+w*d;switch(n&3){case 1:{t=b;s=d;q=c;r=e;p=h;o=i;l=y;m=j;b=z;break}case 2:{t=c;s=b;q=d;r=i;p=e;o=h;l=j;m=z;b=y;break}default:{t=d;s=b;q=c;r=h;p=e;o=i;l=y;m=z;b=j}}c=B*m;d=C*l;e=c-d;if(e!=0.0){n=0;h=l;i=B;j=C;k=m}else{P=B*b-f*l!=0.0;j=P?f:C;i=P?B:f;k=P?b:m;h=P?l:b;f=i*k;e=j*h;n=P?1:2;c=f;d=e;e=f-e;f=P?C:B;b=P?m:l}if(!(e==0.0)?(G=(j*b-f*k)/e,H=A*k/e,J=d-c,I=(i*b-f*h)/J,J=A*h/J,E=G*G+I*I+1.0,F=G*H+I*J,D=F*F-E*(H*H+J*J+-1.0),!(D<0.0)):0){j=+u(+D);h=(j-F)/E;d=H+G*h;i=J+I*h;j=(-F-j)/E;c=H+G*j;b=J+I*j;switch(n&3){case 1:{l=b;b=j;j=c;k=i;i=h;h=d;break}case 2:{l=c;k=d;break}default:{l=j;j=c;k=h;h=d}}f=o*h+p*i+r*k;f=f<0.0?-f:f;e=o*j+p*b+r*l;e=e<0.0?-e:e;d=q*h+s*i+t*k;d=d<0.0?-d:d;c=q*j+s*b+t*l;c=c<0.0?-c:c;if(f>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}else if(e>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}}}}while(0);return}function Oe(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,0))}function Qe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+208|0;w=C+200|0;v=C+192|0;y=C+96|0;x=C;z=e+4|0;i=c[z>>2]|0;u=e+112|0;p=e+120|0;o=0;while(1){if((o|0)>=(i|0))break;q=c[e>>2]|0;r=q+(o*320|0)|0;if(!(c[q+(o*320|0)+4>>2]|0)){j=-1;k=0;while(1){if((k|0)>=(d|0))break;if((c[b+(k<<8)+8>>2]|0)==(c[r>>2]|0)?(l=+g[b+(k<<8)+40>>3],!(l<+g[u>>3])):0)if(!((j|0)!=-1?!(+g[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{n=q+(o*320|0)+312|0;m=0;j=-1;while(1){if((m|0)>=(d|0))break;k=c[b+(m<<8)+12>>2]|0;if((k|0)==0?(t=b+(m<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=n;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)B=20}else if((k|0)==(c[r>>2]|0))B=20;if((B|0)==20){B=0;h=+g[b+(m<<8)+48>>3];if(!(h<+g[p>>3]))if(!((j|0)!=-1?!(+g[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}o=o+1|0}p=0;n=0;j=0;o=0;while(1){if((o|0)>=(i|0))break;i=c[e>>2]|0;k=c[i+(o*320|0)+304>>2]|0;do if((k|0)<0){k=p;i=n}else{m=b+(k<<8)|0;if(+Uc(a,m,+g[i+(o*320|0)+8>>3],x)>4.0){c[(c[e>>2]|0)+(o*320|0)+304>>2]=-1;i=b+(k<<8)+236|0;if(c[i>>2]|0){k=p;i=n;break}c[i>>2]=7;k=p;i=n;break}k=c[m>>2]|0;a:do if((p|0)==0|(n|0)<(k|0)){i=0;while(1){if((i|0)==3){i=k;j=o;break a}j=0;while(1){if((j|0)==4)break;g[y+(i<<5)+(j<<3)>>3]=+g[x+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else i=n;while(0);k=p+1|0}while(0);p=k;n=i;o=o+1|0;i=c[z>>2]|0}b:do if((p|0)!=0?(p|0)>=(c[e+128>>2]|0):0){ud(y,(c[e>>2]|0)+(j*320|0)+112|0,x)|0;o=p<<2;q=FO(p<<6)|0;if(!q){Ue(0,3,41858,v);Ea(1)}p=FO(p*96|0)|0;if(!p){Ue(0,3,41858,w);Ea(1)}n=c[z>>2]|0;m=0;i=0;while(1){if((m|0)>=(n|0))break;j=c[e>>2]|0;k=c[j+(m*320|0)+304>>2]|0;if((k|0)>=0){v=c[b+(k<<8)+16>>2]|0;u=(4-v|0)%4|0;w=i<<3;g[q+(w<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|1)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(5-v|0)%4|0;g[q+((w|2)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|3)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(6-v|0)%4|0;g[q+((w|4)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|5)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];v=(7-v|0)%4|0;g[q+((w|6)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)>>3];g[q+((w|7)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)+8>>3];w=i*12|0;g[p+(w<<3)>>3]=+g[j+(m*320|0)+208>>3];g[p+((w|1)<<3)>>3]=+g[j+(m*320|0)+216>>3];g[p+((w|2)<<3)>>3]=+g[j+(m*320|0)+224>>3];g[p+((w|3)<<3)>>3]=+g[j+(m*320|0)+232>>3];g[p+(w+4<<3)>>3]=+g[j+(m*320|0)+240>>3];g[p+(w+5<<3)>>3]=+g[j+(m*320|0)+248>>3];g[p+(w+6<<3)>>3]=+g[j+(m*320|0)+256>>3];g[p+(w+7<<3)>>3]=+g[j+(m*320|0)+264>>3];g[p+(w+8<<3)>>3]=+g[j+(m*320|0)+272>>3];g[p+(w+9<<3)>>3]=+g[j+(m*320|0)+280>>3];g[p+(w+10<<3)>>3]=+g[j+(m*320|0)+288>>3];g[p+(w+11<<3)>>3]=+g[j+(m*320|0)+296>>3];i=i+1|0}m=m+1|0}m=e+104|0;j=(f|0)!=0;if(!(c[m>>2]|0)){i=e+8|0;h=+Wc(a,x,q,p,o,i);if(j&h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,i)}}}}GO(p);GO(q)}else{h=+Wc(a,x,q,p,o,y);k=e+8|0;l=+Wc(a,k,q,p,o,k);i=h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);e:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);f:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);g:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l}}}}}else if(i){i=0;while(1){if((i|0)==3)break c;j=0;while(1){if((j|0)==4)break;g[e+8+(i<<5)+(j<<3)>>3]=+g[y+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else h=l;while(0);GO(p);GO(q)}if(h<20.0){c[m>>2]=1;break}c[m>>2]=0;j=c[z>>2]|0;i=0;while(1){if((i|0)>=(j|0))break b;k=c[(c[e>>2]|0)+(i*320|0)+304>>2]|0;if((k|0)>=0?(A=b+(k<<8)+236|0,(c[A>>2]|0)==0):0)c[A>>2]=8;i=i+1|0}}else B=45;while(0);if((B|0)==45){c[e+104>>2]=0;h=-1.0}zb=C;return +h}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,1))}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0;T=zb;zb=zb+2528|0;S=T+2512|0;Q=T+2504|0;G=T+2488|0;P=T+2480|0;F=T+2472|0;E=T+2456|0;O=T+2448|0;D=T+2440|0;N=T+2432|0;M=T+2424|0;L=T+2416|0;C=T+2408|0;h=T+2400|0;f=T+2392|0;H=T+2384|0;e=T+2376|0;d=T+2368|0;z=T+2304|0;I=T+2048|0;J=T;A=T+2524|0;R=T+2520|0;B=T+2516|0;K=rz(a,21853)|0;do if(!K){c[d>>2]=a;Ue(0,3,20863,d);d=ox()|0;d=By(c[d>>2]|0)|0;c[e>>2]=57671;c[e+4>>2]=d;Ue(0,3,21881,e);d=0}else{Te(I,K);c[H>>2]=R;if((Cz(I,21887,H)|0)!=1){c[f>>2]=a;Ue(0,3,20916,f);xz(K)|0;d=0;break}d=c[R>>2]|0;y=FO(d*320|0)|0;if(!y){Ue(0,3,41858,h);Ea(1)}p=(b|0)==0;q=z+8|0;r=z+16|0;s=z+24|0;t=z+32|0;u=z+40|0;v=z+48|0;w=z+56|0;x=0;f=0;a:while(1){if((x|0)>=(d|0)){d=31;break}Te(I,K);d=y+(x*320|0)|0;e=y+(x*320|0)+312|0;c[C>>2]=e;c[C+4>>2]=A;if((Cz(I,21017,C)|0)!=1){if(p){d=11;break}if(!(Ad(J,a,2048,1)|0)){d=13;break}sA(J,I,2047-(Qy(J)|0)|0)|0;o=sd(b,J)|0;c[d>>2]=o;if((o|0)<0){d=15;break}else{d=1;e=0}}else{e=c[e>>2]|0;c[d>>2]=(e&-32768|0)==0&0==0?e&32767:0;d=2;e=1}c[y+(x*320|0)+4>>2]=e;f=f|d;Te(I,K);e=y+(x*320|0)+8|0;c[D>>2]=e;if((Cz(I,21313,D)|0)!=1){d=18;break}Te(I,K);m=y+(x*320|0)+16|0;n=y+(x*320|0)+24|0;o=y+(x*320|0)+40|0;c[E>>2]=m;c[E+4>>2]=n;c[E+8>>2]=y+(x*320|0)+32;c[E+12>>2]=o;if((Cz(I,21422,E)|0)==4)d=1;else{c[F>>2]=H;c[F+4>>2]=B;if((Cz(I,21438,F)|0)!=2){d=23;break}d=0}do{Te(I,K);c[G>>2]=y+(x*320|0)+16+(d<<5);c[G+4>>2]=y+(x*320|0)+16+(d<<5)+8;c[G+8>>2]=y+(x*320|0)+16+(d<<5)+16;c[G+12>>2]=y+(x*320|0)+16+(d<<5)+24;if((Cz(I,21422,G)|0)!=4){d=25;break a}d=d+1|0}while(d>>>0<3);xd(m,y+(x*320|0)+112|0)|0;V=+g[e>>3];U=V*-.5;g[z>>3]=U;V=V*.5;g[q>>3]=V;g[r>>3]=V;g[s>>3]=V;g[t>>3]=V;g[u>>3]=U;g[v>>3]=U;g[w>>3]=U;e=y+(x*320|0)+48|0;h=y+(x*320|0)+56|0;i=y+(x*320|0)+72|0;j=y+(x*320|0)+80|0;k=y+(x*320|0)+88|0;l=y+(x*320|0)+104|0;d=0;while(1){if((d|0)==4)break;U=+g[z+(d<<4)>>3];V=+g[z+(d<<4)+8>>3];g[y+(x*320|0)+208+(d*24|0)>>3]=+g[o>>3]+(+g[m>>3]*U+ +g[n>>3]*V);g[y+(x*320|0)+208+(d*24|0)+8>>3]=+g[i>>3]+(U*+g[e>>3]+V*+g[h>>3]);g[y+(x*320|0)+208+(d*24|0)+16>>3]=+g[l>>3]+(U*+g[j>>3]+V*+g[k>>3]);d=d+1|0}x=x+1|0;d=c[R>>2]|0}if((d|0)==11){c[L>>2]=a;c[L+4>>2]=I;Ue(0,3,21024,L)}else if((d|0)==13){c[M>>2]=a;Ue(0,3,21152,M)}else if((d|0)==15){c[N>>2]=a;c[N+4>>2]=J;Ue(0,3,21236,N)}else if((d|0)==18){c[O>>2]=a;c[O+4>>2]=x+1;Ue(0,3,21317,O)}else if((d|0)==23){c[P>>2]=a;c[P+4>>2]=x+1;Ue(0,3,21444,P)}else if((d|0)==25){c[Q>>2]=a;c[Q+4>>2]=x+1;Ue(0,3,21444,Q)}else if((d|0)==31){xz(K)|0;d=FO(136)|0;if(!d){Ue(0,3,41858,S);Ea(1)}c[d>>2]=y;c[d+4>>2]=c[R>>2];c[d+128>>2]=0;c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);g[d+112>>3]=.5;g[d+120>>3]=.5;break}xz(K)|0;GO(y);d=0}while(0);zb=T;return d|0}function Te(b,c){b=b|0;c=c|0;var d=0,e=0;a:while(1){if(!(Az(b,256,c)|0))break;d=Qy(b)|0;b:while(1){if(!d)break;d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0}switch(a[b>>0]|0){case 0:case 35:break;default:break a}}return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;b=g;if((e|0)!=0&(c[3916]|0)<=(d|0)?a[e>>0]|0:0){c[b>>2]=f;Ve(0,d,e,b)}zb=g;return}function Ve(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;j=l+16|0;b=l;if((!((e|0)==0|(c[3916]|0)>(d|0))?a[e>>0]|0:0)?(c[b>>2]=c[f>>2],k=Jx(0,0,e,b)|0,k|0):0){if(d>>>0<4)b=(Qy(c[1744+(d<<2)>>2]|0)|0)+3|0;else b=0;g=b+k|0;h=g+1|0;i=FO(h)|0;if(b|0){c[j>>2]=c[1744+(d<<2)>>2];bz(i,b+1|0,21553,j)|0}Jx(i+b|0,k+1|0,e,f)|0;do if(0){if(0?(m=c[13864]|0,m>>>0<0):0){b=0+m|0;if(g>>>0>(-4-m+0|0)>>>0){a[b>>0]=46;a[b+1>>0]=46;a[b+2>>0]=46;a[b+3>>0]=0;c[13864]=0;break}else{Wz(b,i,h)|0;c[13864]=(c[13864]|0)+g;break}}}else kz(i,c[4001]|0)|0;while(0);GO(i)}zb=l;return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(b){e=rz(b,22236)|0;if(e){Kz(e,0,2)|0;f=hA(e)|0;Kz(e,0,0)|0;g=f+1|0;b=FO(g)|0;if(!b){xz(e)|0;b=ox()|0;c[b>>2]=48;b=0;break}if(!(gA(b,f,1,e)|0)){GO(b);xz(e)|0;b=0;break}a[b+f>>0]=0;xz(e)|0;if(d)c[d>>2]=g}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}while(0);return b|0}function Xe(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+40>>2]=b;a=0}return a|0}function Ye(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+44>>2]=b;a=0}return a|0}function Ze(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+24>>2]=b;a=0}return a|0}function _e(a,b){a=a|0;b=b|0;b=(b|0)<40?b:40;if(!a)b=-1;else{c[a+36>>2]=(b|0)>3?b:3;b=0}return b|0}function $e(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+28>>2]=b;a=0}return a|0}function af(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+32>>2]=b;a=0}return a|0}function bf(b,e){b=b|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0;z=zb;zb=zb+16|0;w=b+4|0;x=b+12|0;A=+f[x>>2];y=iz(+(c[w>>2]|0)*e/A)|0;t=b+8|0;u=iz(+(c[t>>2]|0)*e/A)|0;v=FO(16)|0;if(!v){Ue(0,3,41858,z);Ea(1)}c[v+4>>2]=y;c[v+8>>2]=u;f[v+12>>2]=e;g=FO(B(u,y)|0)|0;c[v>>2]=g;if(!g){Ue(0,3,41858,z+8|0);Ea(1)}h=0;while(1){if((h|0)>=(u|0))break;A=+f[x>>2];s=iz(A*+(h|0)/e)|0;h=h+1|0;r=iz(A*+(h|0)/e)|0;i=c[t>>2]|0;r=(r|0)>(i|0)?i:r;i=0;while(1){if((i|0)>=(y|0))break;A=+f[x>>2];q=iz(A*+(i|0)/e)|0;i=i+1|0;p=iz(A*+(i|0)/e)|0;o=c[w>>2]|0;p=(p|0)>(o|0)?o:p;j=0;k=0;l=s;while(1){if((l|0)>=(r|0))break;m=q;n=(c[b>>2]|0)+((B(l,o)|0)+q)|0;while(1){if((m|0)>=(p|0))break;C=j+(d[n>>0]|0)|0;m=m+1|0;n=n+1|0;j=C;k=k+1|0}l=l+1|0}a[g>>0]=(j|0)/(k|0)|0;g=g+1|0}}zb=z;return v|0}function cf(a){a=a|0;var b=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+96|0;m=q+72|0;l=q+64|0;k=q+56|0;j=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;e=q+16|0;b=q+8|0;n=q+80|0;d=FO((Qy(a)|0)+6|0)|0;if(!d){Ue(0,3,41858,q);Ea(1)}c[b>>2]=a;c[b+4>>2]=21589;Hx(d,21584,b)|0;p=rz(d,22236)|0;GO(d);a:do if(!p){c[e>>2]=a;c[e+4>>2]=21589;Ue(0,3,21595,e);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,g);Ea(1)}d=b+4|0;if((gA(d,4,1,p)|0)==1?(o=c[d>>2]|0,(o|0)>=1):0){c[i>>2]=o;Ue(0,1,21668,i);e=o<<2;g=FO(e)|0;c[b>>2]=g;if(!g){Ue(0,3,41858,j);Ea(1)}j=FO(16)|0;c[g>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}d=ff(p)|0;if(!d){c[l>>2]=a;c[l+4>>2]=21589;Ue(0,2,21698,l);GO(c[g>>2]|0);GO(g);GO(b);iA(p);b=df(p)|0;break}if((c[d+4>>2]|0)!=1){c[m>>2]=a;c[m+4>>2]=21589;Ue(0,2,21698,m);GO(c[g>>2]|0);GO(g);GO(b);GO(d);xz(p)|0;b=0;break}m=c[g>>2]|0;c[m+4>>2]=c[d+8>>2];c[m+8>>2]=c[d+12>>2];c[m+12>>2]=c[d+16>>2];c[m>>2]=c[d>>2];GO(d);Kz(p,4-e|0,2)|0;e=1;while(1){if((e|0)>=(o|0)){d=29;break}if((gA(n,4,1,p)|0)!=1){d=21;break}m=bf(c[g>>2]|0,+f[n>>2])|0;c[g+(e<<2)>>2]=m;if(!m){d=25;break}e=e+1|0}b:do if((d|0)==21){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==25){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==29){xz(p)|0;break a}while(0);GO(g)}else Ue(0,3,21643,h);GO(b);xz(p)|0;b=0}while(0);zb=q;return b|0}function df(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+48|0;h=l+32|0;g=l+24|0;f=l+16|0;e=l+8|0;b=FO(8)|0;if(!b){Ue(0,3,41858,l);Ea(1)}d=b+4|0;a:do if((gA(d,4,1,a)|0)==1?(k=c[d>>2]|0,(k|0)>=1):0){j=FO(k<<2)|0;c[b>>2]=j;if(!j){Ue(0,3,41858,f);Ea(1)}d=0;while(1){if((d|0)>=(k|0))break;f=FO(16)|0;c[j+(d<<2)>>2]=f;if(!f){i=12;break}else d=d+1|0}if((i|0)==12){Ue(0,3,41858,g);Ea(1)}e=0;while(1){if((e|0)>=(k|0)){i=44;break}d=j+(e<<2)|0;if((gA((c[d>>2]|0)+4|0,4,1,a)|0)!=1){i=15;break}if((gA((c[d>>2]|0)+8|0,4,1,a)|0)!=1){i=22;break}if((gA((c[d>>2]|0)+12|0,4,1,a)|0)!=1){i=29;break}i=c[d>>2]|0;i=FO(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)|0;c[c[d>>2]>>2]=i;if(!i){i=36;break}g=c[d>>2]|0;g=gA(c[g>>2]|0,1,B(c[g+8>>2]|0,c[g+4>>2]|0)|0,a)|0;i=c[d>>2]|0;e=e+1|0;if((g|0)!=(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)){i=38;break}}b:do if((i|0)==15){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==22){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==29){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==36){Ue(0,3,41858,h);Ea(1)}else if((i|0)==38){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==44){xz(a)|0;break a}while(0);GO(j);i=46}else i=5;while(0);if((i|0)==5){Ue(0,3,21643,e);i=46}if((i|0)==46){GO(b);xz(a)|0;b=0}zb=l;return b|0}function ef(a){a=a|0;var b=0,d=0,e=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[c[d+(e<<2)>>2]>>2]|0);GO(c[(c[c[a>>2]>>2]|0)+(e<<2)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function ff(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(20)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=gf(a,b+8|0,b+12|0,b+4|0,b+16|0)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function gf(d,e,g,h,k){d=d|0;e=e|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,N=0;N=zb;zb=zb+832|0;z=N+528|0;y=N+520|0;x=N+512|0;A=4;D=FO(40)|0;c[D>>2]=0;C=N+24|0;n=N+536|0;w=N;aP(C|0,0,488)|0;i=0;o=G(63,n|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)!=1){c[C>>2]=o;c[n>>2]=112;D=XO(n+132|0,1,D|0,A|0)|0;A=F()|0;i=0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1)m=l;else m=0}else m=l;a:while(1){if(m|0){i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;M(8,0,3,21756,x|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=7;break}}i=0;L(1,C|0,90,488);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;K(39,C|0,d|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;m=H(19,C|0,1)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){n=YO(c[l>>2]|0,D|0,A|0)|0;if(!n)Qa(l|0,j|0);E(j|0)}else n=-1;l=F()|0;if((n|0)==1){m=l;continue}if((m|0)!=1){i=0;M(8,0,3,21782,y|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=14;break}}i=0;G(64,C|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}t=C+36|0;u=C+28|0;s=B(c[u>>2]|0,c[t>>2]|0)|0;v=C+32|0;l=B(s,c[v>>2]|0)|0;i=0;l=G(65,l|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;if(!l){i=0;M(8,0,3,41858,z|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=20;break}}q=C+140|0;r=C+116|0;p=0;while(1){if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;m=0;while(1){if((m|0)==5)break;o=l+(B(m+p|0,s)|0)|0;c[w+(m<<2)>>2]=o;m=m+1|0}i=0;n=I(25,C|0,w|0,5)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){o=YO(c[m>>2]|0,D|0,A|0)|0;if(!o)Qa(m|0,j|0);E(j|0)}else o=-1;m=F()|0;if((o|0)==1)continue a;p=n+p|0}i=0;G(66,C|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;i=0;J(113,C|0);m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)!=1){m=30;break}}b:do if((m|0)==7)l=0;else if((m|0)==14)l=0;else if((m|0)==20)l=0;else if((m|0)==30){if(e|0)c[e>>2]=c[u>>2];if(g|0)c[g>>2]=c[v>>2];if(h|0)c[h>>2]=c[t>>2];if(k){m=a[C+290>>0]|0;switch(m<<24>>24){case 1:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535);break b}break}case 2:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535)*2.5399999618530273;break b}break}default:if(((m&255)>2?(b[C+292>>1]|0)==0:0)?(b[C+294>>1]|0)==0:0){f[k>>2]=+(m&255);break b}}f[k>>2]=0.0}}while(0);GO(D|0);zb=N;return l|0}function hf(a){a=a|0;Qa((c[a>>2]|0)+132|0,1)}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+1088|0;m=o+1072|0;l=o+1064|0;n=o+1056|0;g=o+1048|0;f=o+1040|0;e=o+1032|0;h=o+1024|0;i=o+768|0;j=o+512|0;k=o;c[h>>2]=a;c[h+4>>2]=b;Hx(k,22627,h)|0;k=rz(k,21853)|0;if(!k)a=0;else{a=FO(8)|0;if(!a){Ue(0,3,41858,e);Ea(1)}a:do if(kf(i,k)|0){h=a+4|0;c[f>>2]=h;if((Cz(i,21887,f)|0)!=1){GO(a);a=0;break}b=c[h>>2]|0;if((b|0)<1){GO(a);a=0;break}f=FO(b*56|0)|0;c[a>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}f=0;b:while(1){if((f|0)>=(b|0))break a;if(!(kf(i,k)|0)){b=15;break}c[n>>2]=j;if((Cz(i,21914,n)|0)!=1){b=17;break}g=sd(d,j)|0;e=c[a>>2]|0;c[e+(f*56|0)+4>>2]=g;if((g|0)<0){b=19;break}if(!(kf(i,k)|0)){b=21;break}c[l>>2]=(c[a>>2]|0)+(f*56|0);if((Cz(i,21815,l)|0)!=1){b=24;break}b=0;while(1){if(b>>>0>=3)break;if(!(kf(i,k)|0)){b=27;break b}g=c[a>>2]|0;c[m>>2]=g+(f*56|0)+8+(b<<4);c[m+4>>2]=g+(f*56|0)+8+(b<<4)+4;c[m+8>>2]=g+(f*56|0)+8+(b<<4)+8;c[m+12>>2]=g+(f*56|0)+8+(b<<4)+12;if((Cz(i,22080,m)|0)==4)b=b+1|0;else{b=29;break b}}f=f+1|0;b=c[h>>2]|0}if((b|0)==15){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==17){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==19){GO(e);GO(a);a=0;break}else if((b|0)==21){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==24){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==27){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==29){GO(c[a>>2]|0);GO(a);a=0;break}}else{GO(a);a=0}while(0);xz(k)|0}zb=o;return a|0}function kf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+640|0;s=v+624|0;r=v+616|0;q=v+608|0;p=v+600|0;o=v+592|0;n=v+584|0;m=v+576|0;l=v+568|0;k=v+560|0;j=v+552|0;g=v+544|0;f=v+536|0;e=v+528|0;d=v+520|0;i=v+512|0;t=v;c[i>>2]=a;c[i+4>>2]=b;Hx(t,22627,i)|0;t=rz(t,22236)|0;if(!t){c[d>>2]=a;Ue(0,3,21818,d);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,e);Ea(1)}a=b+4|0;a:do if((gA(a,4,1,t)|0)==1){h=c[a>>2]|0;i=FO(h*20|0)|0;c[b>>2]=i;if(!i){Ue(0,3,41858,g);Ea(1)}g=0;b:while(1){if((g|0)>=(h|0))break a;if((gA(i+(g*20|0)+8|0,4,1,t)|0)!=1){u=12;break}if((gA(i+(g*20|0)+12|0,4,1,t)|0)!=1){u=15;break}if((gA(i+(g*20|0)+16|0,4,1,t)|0)!=1){u=17;break}e=i+(g*20|0)+4|0;if((gA(e,4,1,t)|0)!=1){u=19;break}a=c[e>>2]|0;d=FO(a*20|0)|0;f=i+(g*20|0)|0;c[f>>2]=d;if(!d){u=22;break}d=0;while(1){if((d|0)>=(a|0))break;if((gA((c[f>>2]|0)+(d*20|0)|0,4,1,t)|0)!=1){u=25;break b}if((gA((c[f>>2]|0)+(d*20|0)+4|0,4,1,t)|0)!=1){u=27;break b}if((gA((c[f>>2]|0)+(d*20|0)+8|0,4,1,t)|0)!=1){u=29;break b}if((gA((c[f>>2]|0)+(d*20|0)+12|0,4,1,t)|0)!=1){u=31;break b}if((gA((c[f>>2]|0)+(d*20|0)+16|0,4,1,t)|0)!=1){u=34;break b}d=d+1|0;a=c[e>>2]|0}g=g+1|0}switch(u|0){case 12:{Ue(0,3,21839,j);break}case 15:{Ue(0,3,21839,k);break}case 17:{Ue(0,3,21839,l);break}case 19:{Ue(0,3,21839,m);break}case 22:{Ue(0,3,41858,n);Ea(1);break}case 25:{Ue(0,3,21839,o);break}case 27:{Ue(0,3,21839,p);break}case 29:{Ue(0,3,21839,q);break}case 31:{Ue(0,3,21839,r);break}case 34:{Ue(0,3,21839,s);break}}a=0;while(1){if((a|0)==(g|0))break;GO(c[i+(a*20|0)>>2]|0);a=a+1|0}GO(i);u=39}else{Ue(0,3,21839,f);u=39}while(0);if((u|0)==39){GO(b);b=0}xz(t)|0}zb=v;return b|0}function mf(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)b=-1;else{e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[d+(e*20|0)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)of(0,b,c,d)|0;else of(a,b,c,d)|0;return 0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=zb;zb=zb+48|0;e=m;if(!a){t=+f[c>>2];w=+f[c+4>>2];s=+f[b>>2];o=t*s;v=+f[b+4>>2];n=w*v;p=+f[b+12>>2];i=+f[b+16>>2];q=t*i;g=+f[b+20>>2];k=w*g;r=+f[b+28>>2];z=+f[b+32>>2];x=t*z;h=+f[b+36>>2];j=w*h;y=+f[b+44>>2];l=y+(x+j);t=t+10.0;j=y+(t*z+j);w=w+10.0;h=y+(x+w*h);g=(r+(q+w*g))/h;h=(p+(o+w*v))/h;i=(r+(t*i+k))/j;j=(p+(t*s+n))/j;k=(r+(q+k))/l;l=(p+(o+n))/l}else{vd(a+8|0,b,e)|0;s=+f[c>>2];q=+f[c+4>>2];t=+f[e>>2];y=s*t;r=+f[e+4>>2];z=q*r;x=+f[e+12>>2];i=+f[e+16>>2];w=s*i;g=+f[e+20>>2];k=q*g;v=+f[e+28>>2];n=+f[e+32>>2];p=s*n;h=+f[e+36>>2];j=q*h;o=+f[e+44>>2];l=o+(p+j);s=s+10.0;j=o+(s*n+j);q=q+10.0;h=o+(p+q*h);g=(v+(w+q*g))/h;h=(x+(y+q*r))/h;i=(v+(s*i+k))/j;j=(x+(s*t+z))/j;k=(v+(w+k))/l;l=(x+(y+z))/l}x=j-l;y=i-k;y=x*x+y*y;x=h-l;z=g-k;z=x*x+z*z;e=y>2]=x;z=+u(+(e?y:z))*2.5399999618530273;f[d+4>>2]=z;zb=m;return 0}function pf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+32|0;l=G+20|0;j=G+16|0;i=G+12|0;k=G+8|0;C=G+4|0;D=G;a:do if((d|0)<0)d=-1;else switch(d|0){case 0:{q=+((g|0)/8|0|0);r=+((g*7|0)/8|0|0);s=+((h|0)/8|0|0);t=+((h*7|0)/8|0|0);p=+((g|0)/2|0|0);o=+((h|0)/2|0|0);m=0.0;i=0;d=-1;b:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break b;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(nr)?(u=+f[a+(i*24|0)+20>>2],!(ut)):0)?(B=n-p,v=u-o,v=B*B+v*v,v>m):0){m=v;d=i}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 1:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+4|0;d=-1;i=0;m=0.0;c:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break c;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(s=+f[a+(i*24|0)+20>>2],!(so)):0)?(B=n-+f[e>>2],t=s-+f[g>>2],t=B*B+t*t,t>m):0){d=i;m=t}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 2:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+12|0;j=e+4|0;k=e+8|0;d=-1;i=0;m=0.0;d:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break d;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(x=+f[a+(i*24|0)+20>>2],!(xo)):0)?(w=+f[e>>2],B=+f[j>>2],w=(n-w)*(+f[g>>2]-B)-(x-B)*(+f[k>>2]-w),w=w*w,w>m):0){d=i;m=w}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 3:{qf(e,e+8|0,l,j);qf(e,e+16|0,i,k);B=+((g|0)/8|0|0);w=+((g*7|0)/8|0|0);x=+((h|0)/8|0|0);v=+((h*7|0)/8|0|0);z=e+24|0;A=e+28|0;u=+f[i>>2];t=+f[j>>2];m=u*t;s=+f[k>>2];r=+f[l>>2];q=s*r;h=!(m-q>=0.0);y=!(q-m>=0.0);l=h?2:1;b=h?1:2;d=-1;k=0;m=0.0;e:while(1){f:do switch(c[a+(k*24|0)+12>>2]|0){case -1:break e;case 0:{n=+f[a+(k*24|0)+16>>2];if(!(nw)?(E=a+(k*24|0)+20|0,q=+f[E>>2],!(qv)):0){f[z>>2]=n;c[A>>2]=c[E>>2];qf(e,z,C,D);q=+f[C>>2];if(!h){n=+f[D>>2];if(!(t*q-r*n>=0.0))F=39;else{g=!(s*q-u*n>=0.0);i=g?2:3;g=g?3:2;j=1}}else{n=+f[D>>2];F=39}do if((F|0)==39){F=0;o=s*q;p=u*n;if(y|!(o-p>=0.0))if(p-o>=0.0?!(r*n-t*q>=0.0):1)break f;else{i=b;g=l;j=3;break}else{g=!(t*q-r*n>=0.0);i=g?1:3;g=g?3:1;j=2;break}}while(0);n=+rf(e,j,g,i);if(n>m){d=k;m=n}}break}default:{}}while(0);k=k+1|0}if((d|0)!=-1)c[a+(d*24|0)+12>>2]=1;break a}default:{l=0;g:while(1){d=b+(l*24|0)+12|0;h:do switch(c[d>>2]|0){case -1:break g;case 0:{c[d>>2]=1;i=b+(l*24|0)|0;g=b+(l*24|0)+4|0;j=b+(l*24|0)+8|0;d=0;while(1){k=a+(d*24|0)+12|0;switch(c[k>>2]|0){case -1:break h;case 0:{if(((c[i>>2]|0)==(c[a+(d*24|0)>>2]|0)?(c[g>>2]|0)==(c[a+(d*24|0)+4>>2]|0):0)?(c[j>>2]|0)==(c[a+(d*24|0)+8>>2]|0):0){F=55;break g}break}default:{}}d=d+1|0}}default:{}}while(0);l=l+1|0}if((F|0)==55){c[k>>2]=1;break a}c[b+12>>2]=-1;d=c[13865]|0;if(!d){_z(Ta(0)|0);d=c[13865]|0}d=d+1|0;c[13865]=(d|0)==128?0:d;d=0;i=0;i:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break i;case 0:{d=d+1|0;break}default:{}}i=i+1|0}if(!d){d=-1;break a}k=~~(+(d|0)*+($z()|0)*4.656612873077393e-10);d=0;i=0;j:while(1){g=a+(d*24|0)+12|0;j=c[g>>2]|0;switch(j|0){case -1:{d=j;break a}case 0:{if((i|0)==(k|0))break j;i=i+1|0;break}default:{}}d=d+1|0}c[g>>2]=1;break a}}while(0);zb=G;return d|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0;g=+f[b>>2]-+f[a>>2];e=+f[b+4>>2]-+f[a+4>>2];g=+u(+(g*g+e*e));if(!(g==0.0)){f[c>>2]=e/g;f[d>>2]=(+f[b>>2]-+f[a>>2])/g}return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0;c=a+(c<<3)|0;e=+sf(a,a+(b<<3)|0,c);return +(e+ +sf(a,c,a+(d<<3)|0))}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];d=((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))*.5;return +(d<0.0?-d:d)}function tf(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=zb;zb=zb+1248|0;L=M+1232|0;K=M+1224|0;J=M+1208|0;I=M+1200|0;H=M+1184|0;G=M+1176|0;F=M+1160|0;E=M+1152|0;D=M+1144|0;C=M+1136|0;B=M+1128|0;A=M+1120|0;z=M+1112|0;y=M+1104|0;x=M+1096|0;w=M+1088|0;v=M+1080|0;u=M+1072|0;p=M+1064|0;l=M+1056|0;k=M+1048|0;j=M+1040|0;i=M+1032|0;h=M+1024|0;r=M+768|0;s=M+512|0;t=M+1236|0;g=M;do if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(Fx(d,41063)|0)!=0:0){c[h>>2]=b;c[h+4>>2]=d;Hx(g,22627,h)|0;d=rz(g,21853)|0;if(!d){c[i>>2]=b;Ue(0,3,21855,i);q=ox()|0;q=By(c[q>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=q;Ue(0,3,21881,j);q=0;break}else{n=d;d=1;m=8;break}}else m=4;while(0);if((m|0)==4){Wz(s,b,255)|0;a[s+255>>0]=0;n=0;d=0;m=8}do if((m|0)==8){o=FO(1140)|0;if(!o){Ue(0,3,41858,k);Ea(1)}k=(d|0)!=0;if(k){if(!(uf(r,n)|0)){xz(n)|0;GO(o);q=0;break}c[l>>2]=t;if((Cz(r,21887,l)|0)!=1){xz(n)|0;GO(o);q=0;break}d=c[t>>2]|0;if((d|0)<1){xz(n)|0;GO(o);q=0;break}}else d=1;c[o+4>>2]=d;c[o+152>>2]=0;j=FO(d*112|0)|0;c[o>>2]=j;if(!j){Ue(0,3,41858,p);Ea(1)}i=(e|0)==0;g=0;a:while(1){c[t>>2]=g;if((g|0)>=(d|0)){m=57;break}c[u>>2]=g+1;Ue(0,1,21890,u);if(k){if(!(uf(r,n)|0)){m=57;break}c[v>>2]=s;if((Cz(r,21914,v)|0)!=1){m=57;break}If(s)|0}Ue(0,1,21917,w);p=cf(s)|0;c[j+((c[t>>2]|0)*112|0)>>2]=p;if(!p){m=26;break}Ue(0,1,21966,y);Ue(0,1,21976,z);p=lf(s,41063)|0;c[j+((c[t>>2]|0)*112|0)+4>>2]=p;if(!p){m=29;break}Ue(0,1,21966,B);if(i)c[j+((c[t>>2]|0)*112|0)+8>>2]=0;else{Ue(0,1,22027,C);If(s)|0;p=jf(s,22046,e)|0;c[j+((c[t>>2]|0)*112|0)+8>>2]=p;if(!p){m=33;break}Ue(0,1,21966,E)}b:do if(k){if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[F>>2]=j+(p*112|0)+12;c[F+4>>2]=j+(p*112|0)+16;c[F+8>>2]=j+(p*112|0)+20;c[F+12>>2]=j+(p*112|0)+24;if((Cz(r,22080,F)|0)!=4){m=40;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[H>>2]=j+(p*112|0)+28;c[H+4>>2]=j+(p*112|0)+32;c[H+8>>2]=j+(p*112|0)+36;c[H+12>>2]=j+(p*112|0)+40;if((Cz(r,22080,H)|0)!=4){m=43;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[J>>2]=j+(p*112|0)+44;c[J+4>>2]=j+(p*112|0)+48;c[J+8>>2]=j+(p*112|0)+52;c[J+12>>2]=j+(p*112|0)+56;if((Cz(r,22080,J)|0)!=4){m=47;break a}g=c[t>>2]|0}else{g=c[t>>2]|0;b=0;while(1){if((b|0)==3)break b;h=0;while(1){if((h|0)==4)break;f[j+(g*112|0)+12+(b<<4)+(h<<2)>>2]=(b|0)==(h|0)?1.0:0.0;h=h+1|0}b=b+1|0}}while(0);yd(j+(g*112|0)+12|0,j+(g*112|0)+60|0)|0;Hf(s,256,22128)|0;g=FO(256)|0;c[j+((c[t>>2]|0)*112|0)+108>>2]=g;if(!g){m=55;break}Wz(g,s,256)|0;g=(c[t>>2]|0)+1|0}if((m|0)==26){c[x>>2]=s;Ue(0,3,21935,x);GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==29){c[A>>2]=s;Ue(0,3,21996,A);ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==33){c[D>>2]=s;Ue(0,3,22050,D);mf(j+((c[t>>2]|0)*112|0)+4|0)|0;ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==40){Ue(0,3,22092,G);xz(n)|0;Ea(0)}else if((m|0)==43){Ue(0,3,22092,I);xz(n)|0;Ea(0)}else if((m|0)==47){Ue(0,3,22092,K);xz(n)|0;Ea(0)}else if((m|0)==55){Ue(0,3,41858,L);Ea(1)}else if((m|0)==57){if(n|0)xz(n)|0;if((c[t>>2]|0)>=(d|0)){q=o;break}Ea(0)}}while(0);zb=M;return q|0}function uf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function vf(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)d=-1;else{c[a+152>>2]=1;d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;c[a+8+(d<<4)+(e<<2)>>2]=c[b+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}c[a+168>>2]=-1;d=0}return d|0}function wf(b,e,g,h,i,j,k,l,m,n,o,p){b=b|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=zb;zb=zb+80|0;F=X+8|0;E=X;M=X+72|0;P=X+60|0;R=X+48|0;D=X+36|0;S=X+32|0;T=X+24|0;U=X+16|0;V=j+16|0;A=c[V>>2]|0;W=j+20|0;x=c[W>>2]|0;y=g+-1|0;z=h+-1|0;w=0;while(1){if(w>>>0>=3)break;q=c[m+(w<<3)>>2]|0;if((q|0)<0)break;u=q&-4|2;q=((c[m+(w<<3)+4>>2]|0)/4|0)<<2|2;v=u-k|0;v=(v|0)>0?v:0;u=u+k|0;u=(u|0)<(g|0)?u:y;t=q-l|0;q=q+l|0;q=(q|0)<(h|0)?q:z;t=(t|0)>0?t:0;while(1){if((t|0)>(q|0))break;r=v;s=e+((B(t,g)|0)+v)|0;while(1){if((r|0)>(u|0))break;a[s>>0]=0;r=r+1|0;s=s+1|0}t=t+1|0}w=w+1|0}c[M>>2]=0;C=x<<1;z=A<<1;K=j+12|0;L=j+8|0;r=1;y=0;while(1){if(y>>>0>=3){J=28;break}q=c[m+(y<<3)>>2]|0;if((q|0)<0){J=14;break}x=q&-4|2;u=((c[m+(y<<3)+4>>2]|0)/4|0)<<2|2;v=u+l|0;w=x-k|0;x=x+k|0;q=r;u=u-l|0;a:while(1){if((u|0)>(v|0))break;b:do if((u|0)>=(z|0)){if((u+C|0)>=(h|0))break a;t=B(u,g)|0;s=w;while(1){if((s|0)>(x|0))break b;if((s|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+s|0)>=(g|0))break b;r=e+(s+t)|0;if(!(a[r>>0]|0)){a[r>>0]=1;xf(b,g,i,j,s,u,S);yf(s,u,c[S>>2]|0,M,P,R,D);q=0}}s=s+4|0}}while(0);u=u+4|0}r=q;y=y+1|0}if((J|0)==14)if(!r)J=28;else q=-1;if((J|0)==28){I=j+4|0;q=B((c[j>>2]<<3)+32|0,(c[I>>2]<<1)+8|0)|0;H=FO(q)|0;if(!H){Ue(0,3,41858,E);Ea(1)}G=FO(q)|0;if(!G){Ue(0,3,41858,F);Ea(1)}F=j+36|0;r=0;E=0;q=-1;while(1){if((E|0)>=(c[M>>2]|0))break;u=c[j>>2]|0;s=c[I>>2]|0;c:do if((c[F>>2]|0)==(B(s,u)|0)){switch(i|0){case 5:case 12:case 13:case 14:break;default:{J=40;break c}}l=R+(E<<2)|0;k=c[l>>2]|0;m=k+-3-(c[V>>2]<<1)|0;if((((m|0)>=0?(k+3+(c[W>>2]<<1)|0)<(h|0):0)?(N=P+(E<<2)|0,O=c[N>>2]|0,Q=O+-3-(c[L>>2]<<1)|0,(Q|0)>=0):0)?(O+3+(c[K>>2]<<1)|0)<(g|0):0){k=(s<<1)+6|0;t=(u<<2)+16|0;v=G;w=H;s=0;while(1){if((s|0)>=(t|0))break;c[w>>2]=0;c[v>>2]=0;v=v+4|0;w=w+4|0;s=s+1|0}D=(u<<1)+6|0;e=b+(Q+(B(m,g)|0))|0;z=G;A=H;s=w;C=0;while(1){if((C|0)>=(k|0))break;y=s+8|0;u=v;t=0;while(1){if((t|0)==2)break;c[s>>2]=0;c[u>>2]=0;c[T+(t<<2)>>2]=0;c[U+(t<<2)>>2]=0;u=u+4|0;s=s+4|0;t=t+1|0}x=e;u=z+8|0;w=A+8|0;v=v+8|0;s=y;t=0;while(1){if((t|0)>=(D|0))break;y=t&1;A=T+(y<<2)|0;z=(c[A>>2]|0)+(d[x>>0]|0)|0;c[A>>2]=z;A=d[x>>0]|0;A=B(A,A)|0;y=U+(y<<2)|0;A=A+(c[y>>2]|0)|0;c[y>>2]=A;c[s>>2]=(c[w>>2]|0)+z;c[v>>2]=(c[u>>2]|0)+A;x=x+1|0;u=u+4|0;w=w+4|0;v=v+4|0;s=s+4|0;t=t+1|0}e=e+g|0;z=u;A=w;C=C+1|0}u=0;while(1){if((u|0)==7)break c;v=u+m|0;w=u+2|0;x=u+-3|0;t=0;while(1){if((t|0)==7)break;zf(b,g,t+Q|0,v,j,H,G,t+2|0,w,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t+-3+(c[N>>2]|0);c[o>>2]=x+(c[l>>2]|0);f[p>>2]=+(s|0)/1.0e4;q=0;r=s}t=t+1|0}u=u+1|0}}else J=40}else J=40;while(0);d:do if((J|0)==40){J=0;v=c[R+(E<<2)>>2]|0;w=v+3|0;x=P+(E<<2)|0;v=v+-3|0;while(1){if((v|0)>(w|0))break d;e:do if((v|0)>=(c[V>>2]<<1|0)){if(((c[W>>2]<<1)+v|0)>=(h|0))break d;t=c[x>>2]|0;u=t+3|0;t=t+-3|0;while(1){if((t|0)>(u|0))break e;if((t|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+t|0)>=(g|0))break e;xf(b,g,i,j,t,v,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t;c[o>>2]=v;f[p>>2]=+(s|0)/1.0e4;r=s;q=0}}t=t+1|0}}while(0);v=v+1|0}}while(0);E=E+1|0}GO(H);GO(G)}zb=X;return q|0}function xf(a,e,f,g,h,i,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;l=c[g+24>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:{s=0-(c[g+8>>2]|0)|0;t=c[g+12>>2]|0;q=0-(c[g+16>>2]|0)|0;v=c[g+20>>2]|0;w=e<<1;m=l;p=a+((s<<1)+h+(B((q<<1)+i|0,e)|0))|0;l=0;f=0;k=0;while(1){if((q|0)>(v|0)){m=l;break a}r=s;n=m;o=p;while(1){if((r|0)>(t|0))break;m=b[n>>1]|0;if(m<<16>>16!=4096){i=d[o>>0]|0;l=l+i|0;f=(B(i,i)|0)+f|0;k=(B(i,m&65535)|0)+k|0}r=r+1|0;n=n+2|0;o=o+2|0}m=n;p=p+w|0;q=q+1|0}}default:{if(f>>>0<2){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+((w-(p<<1)|0)*3|0)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+6|0;l=l+2|0}r=r+1|0}}if((f|1|0)==3){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;l=l+2|0}r=r+1|0}}if((f|2|0)==6){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=l;l=0;f=0;k=0;while(1){if((r|0)>(s|0)){m=l;break a}w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[m>>1]|0;if(n<<16>>16!=4096){w=(((d[p+2>>0]|0)+(d[p+1>>0]|0)+(d[p+3>>0]|0)|0)>>>0)/3|0;l=w+l|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;m=m+2|0}r=r+1|0}}switch(f|0){case 7:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;r=0-(c[g+16>>2]|0)|0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p+1>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+4|0;l=l+2|0}r=r+1|0}}case 8:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;q=0-(c[g+16>>2]|0)|0;while(1){if((q|0)>(s|0))break a;w=(B((q<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;r=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(r|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}l=l+2|0;o=o+1|0;p=p+4|0}q=q+1|0}}default:{m=0;f=0;k=0;break a}}}}while(0);l=c[g+36>>2]|0;f=f-((B(m,m)|0)/(l|0)|0)|0;if(!f)f=0;else{i=(k-((B(c[g+32>>2]|0,m)|0)/(l|0)|0)|0)*100|0;f=(((i|0)/(c[g+28>>2]|0)|0)*100|0)/(~~+u(+(+(f|0)))|0)|0}c[j>>2]=f;return}function yf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[e>>2]|0;do if(!i){c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[e>>2]=1}else{j=0;while(1){if((j|0)>=(i|0))break;if((c[h+(j<<2)>>2]|0)<(d|0))break;j=j+1|0}if((j|0)==(i|0)){if(i>>>0>=3)break;c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;break}if((i|0)==3)i=2;else c[e>>2]=i+1;while(1){if((i|0)<=(j|0))break;e=i+-1|0;c[f+(i<<2)>>2]=c[f+(e<<2)>>2];c[g+(i<<2)>>2]=c[g+(e<<2)>>2];c[h+(i<<2)>>2]=c[h+(e<<2)>>2];i=e}c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d}while(0);return}function zf(a,b,f,g,h,i,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;o=a+((B(g,b)|0)+f)|0;r=c[h+4>>2]|0;p=b<<1;q=c[h>>2]|0;b=0;a=c[h+24>>2]|0;s=0;while(1){if((b|0)>=(r|0))break;n=0;f=o;g=s;while(1){if((n|0)>=(q|0))break;s=(B(e[a>>1]|0,d[f>>0]|0)|0)+g|0;n=n+1|0;a=a+2|0;f=f+2|0;g=s}b=b+1|0;o=o+p|0;s=g}a=q<<1;q=a+8|0;g=k+-2|0;a=g+a|0;f=l+-2|0;l=B(q,f+(r<<1)|0)|0;f=B(q,f)|0;k=l+a|0;r=f+g|0;l=l+g|0;a=f+a|0;f=(c[i+(r<<2)>>2]|0)+(c[i+(k<<2)>>2]|0)-(c[i+(l<<2)>>2]|0)-(c[i+(a<<2)>>2]|0)|0;g=c[h+36>>2]|0;a=(c[j+(r<<2)>>2]|0)+(c[j+(k<<2)>>2]|0)-(c[j+(l<<2)>>2]|0)-(c[j+(a<<2)>>2]|0)-((B(f,f)|0)/(g|0)|0)|0;if(!a)a=0;else{j=(s-((B(c[h+32>>2]|0,f)|0)/(g|0)|0)|0)*100|0;a=(((j|0)/(c[h+28>>2]|0)|0)*100|0)/(~~+u(+(+(a|0)))|0)|0}c[m>>2]=a;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=FO(40)|0;if(!d){Ue(0,3,41858,e);Ea(1)}c[d+16>>2]=a;c[d+8>>2]=a;c[d+20>>2]=b;c[d+12>>2]=b;b=a+1+b|0;c[d>>2]=b;c[d+4>>2]=b;b=FO(B(b<<1,b)|0)|0;c[d+24>>2]=b;if(!b){Ue(0,3,41858,e+8|0);Ea(1)}else{zb=e;return d|0}return 0}function Bf(d,e,g,i,j,k){d=d|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;D=zb;zb=zb+80|0;l=D+60|0;m=D+56|0;z=D+52|0;A=D+48|0;x=D;C=D+64|0;a:do if(!d){x=c[i>>2]|0;y=c[x+(j*20|0)+8>>2]|0;c[l>>2]=y;p=+f[x+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,e,(c[h>>2]=y,+f[h>>2]),p,z,A)|0)<0)d=-1;else{s=~~(+f[z>>2]+.5);l=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;q=0-l|0;i=~~(+f[A>>2]+.5)-(l<<1)|0;l=0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((q|0)>(c[t>>2]|0)){n=25;break a}o=c[v>>2]|0;p=+(i|0);n=0-o|0;o=s-(o<<1)|0;while(1){if((n|0)>(c[w>>2]|0))break;if((Gf(0,e,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+(o|0),p,C)|0)<0)b[m>>1]=4096;else{A=a[C>>0]|0;b[m>>1]=A&255;A=A&255;l=l+1|0;j=(B(A,A)|0)+j|0;d=d+A|0}n=n+1|0;o=o+2|0;m=m+2|0}q=q+1|0;i=i+2|0}}}else{vd(d+8|0,e,x)|0;w=c[i>>2]|0;e=c[w+(j*20|0)+8>>2]|0;c[l>>2]=e;p=+f[w+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,x,(c[h>>2]=e,+f[h>>2]),p,l,m)|0)>=0?(y=d+184|0,(oe(y,+f[l>>2],+f[m>>2],z,A)|0)>=0):0){s=~~(+f[z>>2]+.5);o=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;l=0;n=0-o|0;o=~~(+f[A>>2]+.5)-(o<<1)|0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((n|0)>(c[t>>2]|0)){n=25;break a}q=c[v>>2]|0;p=+(o|0);i=0-q|0;q=s-(q<<1)|0;while(1){if((i|0)>(c[w>>2]|0))break;do if((pe(y,+(q|0),p,z,A)|0)>=0)if((Gf(0,x,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+f[z>>2],+f[A>>2],C)|0)<0){b[m>>1]=4096;break}else{e=a[C>>0]|0;b[m>>1]=e&255;e=e&255;l=l+1|0;j=(B(e,e)|0)+j|0;d=d+e|0;break}else b[m>>1]=4096;while(0);i=i+1|0;q=q+2|0;m=m+2|0}n=n+1|0;o=o+2|0}}else d=-1}while(0);if((n|0)==25)if(!l)d=-1;else{g=~~+u(+(+(j-((B(d,d)|0)/(l|0)|0)|0)));c[k+28>>2]=g;c[k+32>>2]=d;c[k+36>>2]=l;d=0}zb=D;return d|0}function Cf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+32|0;m=r+20|0;n=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;k=r;l=+f[g+8>>2];i=+f[g+12>>2];if((b|0)!=0?(Ef(a,b,l,i,m,p)|0)>=0:0){c[h>>2]=~~+f[m>>2];c[h+4>>2]=~~+f[p>>2];if((d|0)!=0?(Ef(a,d,l,i,n,j)|0)>=0:0){c[h+8>>2]=~~(+f[m>>2]*2.0-+f[n>>2]);c[h+12>>2]=~~(+f[p>>2]*2.0-+f[j>>2]);if((e|0)!=0?(Ef(a,e,l,i,o,k)|0)>=0:0){c[h+16>>2]=~~(+f[o>>2]+(+f[m>>2]*3.0-+f[n>>2]*3.0));g=~~(+f[k>>2]+(+f[p>>2]*3.0-+f[j>>2]*3.0))}else q=10}else q=9}else{c[h>>2]=-1;c[h+4>>2]=-1;q=9}if((q|0)==9){c[h+8>>2]=-1;c[h+12>>2]=-1;q=10}if((q|0)==10){c[h+16>>2]=-1;g=-1}c[h+20>>2]=g;zb=r;return}function Df(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0;l=zb;zb=zb+64|0;h=l;j=l+52|0;k=l+48|0;if(a){vd(a+8|0,b,h)|0;m=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);i=(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/m;c=(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/m;b=a+184|0;if((oe(b,i,c,e,g)|0)>=0?(pe(b,+f[e>>2],+f[g>>2],j,k)|0)>=0:0){i=i-+f[j>>2];m=c-+f[k>>2];b=(i*i+m*m>1.0)<<31>>31}else b=-1}else{i=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);m=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/m;f[g>>2]=i/m;b=0}zb=l;return b|0}function Ef(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0.0;i=zb;zb=zb+48|0;h=i;if(!a){k=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);j=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/j;f[g>>2]=k/j;a=0}else{vd(a+8|0,b,h)|0;k=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);a=(oe(a+184|0,(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/k,(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/k,e,g)|0)>>31}zb=i;return a|0}function Ff(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0;r=zb;zb=zb+64|0;i=r+52|0;j=r+48|0;l=r;if(a)if((pe(a+184|0,c,d,i,j)|0)<0)a=-1;else{vd(a+8|0,b,l)|0;h=+f[l+32>>2];k=+f[i>>2];p=+f[l+36>>2];d=+f[j>>2];c=+f[l+44>>2];m=+f[l+12>>2]-k*c;n=p*d-+f[l+20>>2];o=h*d-+f[l+16>>2];p=k*p-+f[l+4>>2];k=h*k-+f[l>>2];h=+f[l+28>>2];c=d*c;q=5}else{k=+f[b+32>>2];p=+f[b+36>>2];s=+f[b+44>>2];m=+f[b+12>>2]-s*c;n=p*d-+f[b+20>>2];o=k*d-+f[b+16>>2];p=p*c-+f[b+4>>2];k=k*c-+f[b>>2];h=+f[b+28>>2];c=s*d;q=5}if((q|0)==5){c=h-c;h=k*n-p*o;if(h==0.0)a=-1;else{f[e>>2]=(n*m-p*c)/h;f[g>>2]=(k*c-o*m)/h;a=0}}zb=r;return a|0}function Gf(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=+g;h=+h;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+4|0;o=p;if((((Ff(b,d,g,h,n,o)|0)>=0?(j=+f[e+12>>2],k=~~(+f[n>>2]*j/25.399999618530273+.5),(k|0)>=0):0)?(l=c[e+4>>2]|0,(l|0)>(k|0)):0)?(n=c[e+8>>2]|0,m=~~(+(n|0)-j*+f[o>>2]/25.399999618530273+.5),(m|0)>-1&(n|0)>(m|0)):0){b=(B(l,m)|0)+k|0;a[i>>0]=a[(c[e>>2]|0)+b>>0]|0;b=0}else b=-1;zb=p;return b|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return Bd(a,b,c)|0}function If(a){a=a|0;return Cd(a)|0}function Jf(a){a=a|0;return Kf(a,c[a>>2]|0,c[a+4>>2]|0,1)|0}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=zb;zb=zb+16|0;f=HO(1,4156)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{h=tB(4)|0;Ij(h);c[f>>2]=h;c[f+4>>2]=a;c[f+8>>2]=e;c[f+12>>2]=b;c[f+16>>2]=d;c[f+20>>2]=1;c[f+24>>2]=-1;e=f+28|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;zb=g;return f|0}return 0}function Lf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)b=-1;else{d=c[b>>2]|0;if(d){nk(d);SA(d);b=c[a>>2]|0}d=c[b+28>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+36>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+52>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+44>>2]|0;if(d){GO(d);b=c[a>>2]|0}GO(b);c[a>>2]=0;b=0}return b|0}function Mf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;Rf(a);return}function Qf(a){a=a|0;P(a|0)|0;UA()}function Rf(a){a=a|0;SA(a);return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+48|0;r=s+40|0;p=s+32|0;m=s+24|0;k=s+16|0;f=s+8|0;e=s;if((a|0)!=0&(b|0)!=0){e=c[a>>2]|0;do if(!e){e=FO(16)|0;c[a>>2]=e;if(!e){Ue(0,3,41858,f);Ea(1)}else{c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=0;c[e+8>>2]=0;l=e;d=e;break}}else{l=e;d=e}while(0);f=c[b>>2]|0;if(!f)d=0;else{g=c[l+4>>2]|0;h=c[f+4>>2]|0;i=h+g|0;j=FO(i*132|0)|0;if(!j){Ue(0,3,41858,k);Ea(1)}e=0;while(1){if((e|0)>=(g|0))break;_O(j+(e*132|0)|0,(c[l>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=0;while(1){if((e|0)>=(h|0))break;_O(j+((e+g|0)*132|0)|0,(c[f>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=c[l>>2]|0;if(e){GO(e);d=c[a>>2]|0}c[d>>2]=j;h=c[a>>2]|0;c[h+4>>2]=i;k=c[h+12>>2]|0;g=c[b>>2]|0;l=c[g+12>>2]|0;g=g+8|0;h=h+8|0;d=0;f=0;while(1){if((f|0)>=(l|0))break;e=0;while(1){if((e|0)>=(k|0))break;if((c[(c[g>>2]|0)+(f*12|0)+8>>2]|0)==(c[(c[h>>2]|0)+(e*12|0)+8>>2]|0)){q=23;break}else e=e+1|0}if((q|0)==23){q=0;d=d+1|0}f=f+1|0}n=l+k-d|0;o=FO(n*12|0)|0;if(!o){Ue(0,3,41858,m);Ea(1)}j=0;while(1){if((j|0)>=(k|0))break;h=(c[a>>2]|0)+8|0;d=c[h>>2]|0;g=d+(j*12|0)+8|0;c[o+(j*12|0)+8>>2]=c[g>>2];d=c[d+(j*12|0)+4>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(f*12|0)+8>>2]|0)==(c[g>>2]|0))d=(c[e+(f*12|0)+4>>2]|0)+d|0;f=f+1|0}i=o+(j*12|0)|0;m=FO(d*12|0)|0;c[i>>2]=m;if(!m){q=36;break}h=c[(c[h>>2]|0)+(j*12|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;g=(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;m=(c[i>>2]|0)+(e*12|0)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];e=e+1|0}g=0;while(1){if((g|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(g*12|0)+8>>2]|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)+8>>2]|0)){q=43;break}g=g+1|0}a:do if((q|0)==43){q=0;f=0;while(1){if((f|0)>=(c[e+(g*12|0)+4>>2]|0))break a;t=(c[e+(g*12|0)>>2]|0)+(f*12|0)|0;m=(c[i>>2]|0)+((f+h|0)*12|0)|0;c[m>>2]=c[t>>2];c[m+4>>2]=c[t+4>>2];c[m+8>>2]=c[t+8>>2];f=f+1|0;e=c[(c[b>>2]|0)+8>>2]|0}}while(0);c[o+(j*12|0)+4>>2]=d;j=j+1|0}if((q|0)==36){Ue(0,3,41858,p);Ea(1)}d=0;j=0;while(1){if((j|0)>=(l|0))break;f=c[(c[b>>2]|0)+8>>2]|0;g=c[f+(j*12|0)+8>>2]|0;e=0;while(1){if((e|0)>=(k|0)){q=53;break}if((g|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(e*12|0)+8>>2]|0)){q=52;break}else e=e+1|0}if((q|0)==52){q=0;d=d+1|0}else if((q|0)==53){q=0;h=j+k-d|0;i=o+(h*12|0)|0;c[o+(h*12|0)+8>>2]=g;f=c[f+(j*12|0)+4>>2]|0;t=FO(f*12|0)|0;c[i>>2]=t;if(!t){q=55;break}e=0;while(1){if((e|0)>=(f|0))break;p=(c[(c[(c[b>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;t=(c[i>>2]|0)+(e*12|0)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];e=e+1|0}c[o+(h*12|0)+4>>2]=f}j=j+1|0}if((q|0)==55){Ue(0,3,41858,r);Ea(1)}e=c[a>>2]|0;d=e+8|0;g=c[d>>2]|0;if(g){f=0;d=g;while(1){if((f|0)>=(c[e+12>>2]|0))break;GO(c[d+(f*12|0)>>2]|0);t=c[a>>2]|0;f=f+1|0;e=t;d=c[t+8>>2]|0}GO(d);d=(c[a>>2]|0)+8|0}c[d>>2]=o;c[(c[a>>2]|0)+12>>2]=n;Tf(b)|0;d=0}}else{Ue(0,3,22132,e);d=-1}zb=s;return d|0}function Tf(a){a=a|0;var b=0,d=0,e=0,f=0;e=zb;zb=zb+16|0;if(a){b=c[a>>2]|0;if(!b)b=0;else{b=c[b>>2]|0;if(b|0)GO(b);b=0;while(1){f=c[a>>2]|0;d=f+8|0;if((b|0)>=(c[f+12>>2]|0))break;GO(c[(c[d>>2]|0)+(b*12|0)>>2]|0);b=b+1|0}GO(c[d>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;b=0}}else{Ue(0,3,22192,e);b=-1}zb=e;return b|0}function Uf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;o=p+56|0;n=p+48|0;l=p+40|0;k=p+32|0;j=p+24|0;i=p+8|0;h=p;g=p+60|0;a[g>>0]=a[22236]|0;a[g+1>>0]=a[22237]|0;a[g+2>>0]=a[22238]|0;a:do if((b|0)!=0&(e|0)!=0){m=Hg(b,d,g)|0;if(!m){f=(d|0)!=0;c[i>>2]=b;c[i+4>>2]=f?46716:57671;c[i+8>>2]=f?d:57671;Ue(0,3,22290,i);f=-1;break}i=HO(1,16)|0;if(!i){Ue(0,3,41858,j);Ea(1)}h=i+4|0;b:do if((gA(h,4,1,m)|0)==1?(f=c[h>>2]|0,(f|0)>=1):0){j=FO(f*132|0)|0;c[i>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}g=0;while(1){if((g|0)>=(f|0))break;if((gA((c[i>>2]|0)+(g*132|0)|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+8|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+16|0,108,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+124|0,4,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+128|0,4,1,m)|0)!=1)break b;g=g+1|0;f=c[h>>2]|0}b=i+12|0;if((gA(b,4,1,m)|0)==1){f=c[b>>2]|0;if((f|0)<1){c[i+8>>2]=0;break}k=FO(f*12|0)|0;d=i+8|0;c[d>>2]=k;if(!k){Ue(0,3,41858,l);Ea(1)}h=0;while(1){if((h|0)>=(f|0)){f=32;break}if((gA((c[d>>2]|0)+(h*12|0)+8|0,4,1,m)|0)!=1)break b;if((gA((c[d>>2]|0)+(h*12|0)+4|0,4,1,m)|0)!=1)break b;l=c[d>>2]|0;f=c[l+(h*12|0)+4>>2]|0;g=FO(f*12|0)|0;c[l+(h*12|0)>>2]=g;if(!g){f=29;break}if((gA(g,12,f,m)|0)!=(f|0))break b;h=h+1|0;f=c[b>>2]|0}if((f|0)==29){Ue(0,3,41858,n);Ea(1)}else if((f|0)==32){c[e>>2]=i;xz(m)|0;f=0;break a}}}while(0);Ue(0,3,22357,o);f=c[i+8>>2]|0;if(f|0)GO(f);f=c[i>>2]|0;if(f|0)GO(f);GO(i);xz(m)|0;f=-1}else{Ue(0,3,22239,h);f=-1}while(0);zb=p;return f|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;a:do if(!a){Ue(0,3,22402,j);e=-1}else{g=c[a+4>>2]|0;i=(b|0)==-1;e=0;while(1){if((e|0)>=(g|0))break;f=(c[a>>2]|0)+(e*132|0)+124|0;h=c[f>>2]|0;if((h|0)==(b|0)|i&(h|0)>-1)c[f>>2]=d;e=e+1|0}h=c[a+12>>2]|0;f=a+8|0;e=0;while(1){if((e|0)>=(h|0)){e=0;break a}g=(c[f>>2]|0)+(e*12|0)+8|0;a=c[g>>2]|0;if((a|0)==(b|0)|i&(a|0)>-1)c[g>>2]=d;e=e+1|0}}while(0);zb=j;return e|0}function Wf(){return -1}function Xf(a,b){a=a|0;b=b|0;return Zf(a,b,Yf(b)|0)|0}function Yf(a){a=a|0;return Qy(a)|0}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;g=l+12|0;j=l;k=l+8|0;NE(j,b);if(a[j>>0]|0){h=(c[b>>2]|0)+-12|0;c[k>>2]=c[b+(c[h>>2]|0)+24>>2];h=b+(c[h>>2]|0)|0;i=c[h+4>>2]|0;f=d+e|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(g,h);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(g);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;c[g>>2]=c[k>>2];if(!($f(g,d,(i&176|0)==32?f:d,f,h,e&255)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(j);zb=l;return b|0}function _f(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{k=d;j=f-k|0;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;k=j-k|0;if((k|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;hO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+11>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){jO(m);break}else{c[b>>2]=0;jO(m);i=0;break a}}while(0);f=f-j|0;if((f|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function bg(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return}function cg(a){a=a|0;return a&255|0}function dg(a){a=a|0;if(_f(a,Wf()|0)|0)a=~(Wf()|0);return a|0}function eg(a){a=a|0;return a&255|0}function fg(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+112|0;z=A+48|0;p=A+40|0;n=A+32|0;l=A+24|0;h=A+16|0;g=A+8|0;e=A;v=A+96|0;w=A+84|0;x=A+72|0;y=A+52|0;a:do if((b|0)!=0&(d|0)!=0){i=d+4|0;e=c[i>>2]|0;if(!e){Ue(0,3,22499,g);e=-1;break}u=b+28|0;g=c[u>>2]|0;if(g){GO(g);e=c[i>>2]|0;if(!e){c[u>>2]=0;e=0}else j=7}else j=7;b:do if((j|0)==7){t=FO(e*132|0)|0;c[u>>2]=t;if(!t){Ue(0,3,41858,h);Ea(1)}g=0;while(1){if((g|0)>=(e|0))break b;_O((c[u>>2]|0)+(g*132|0)|0,(c[d>>2]|0)+(g*132|0)|0,132)|0;g=g+1|0;e=c[i>>2]|0}}while(0);m=b+32|0;c[m>>2]=e;t=b+36|0;e=c[t>>2]|0;if(e|0){i=b+40|0;h=0;while(1){if((h|0)>=(c[i>>2]|0))break;g=c[e+(h*12|0)>>2]|0;if(g){GO(g);e=c[t>>2]|0}h=h+1|0}GO(e)}k=d+12|0;e=c[k>>2]|0;c:do if(!e){c[t>>2]=0;o=0}else{s=FO(e*12|0)|0;c[t>>2]=s;if(!s){Ue(0,3,41858,l);Ea(1)}d=d+8|0;j=0;while(1){if((j|0)>=(e|0)){o=e;break c}i=c[d>>2]|0;g=c[t>>2]|0;c[g+(j*12|0)+8>>2]=c[i+(j*12|0)+8>>2];h=i+(j*12|0)+4|0;c[g+(j*12|0)+4>>2]=c[h>>2];h=c[h>>2]|0;if(!h)c[i+(j*12|0)>>2]=0;else{s=FO(h*12|0)|0;c[g+(j*12|0)>>2]=s;if(!s)break;g=0;e=i;while(1){if((g|0)>=(c[e+(j*12|0)+4>>2]|0))break;r=(c[e+(j*12|0)>>2]|0)+(g*12|0)|0;s=(c[(c[t>>2]|0)+(j*12|0)>>2]|0)+(g*12|0)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];g=g+1|0;e=c[d>>2]|0}e=c[k>>2]|0}j=j+1|0}Ue(0,3,41858,n);Ea(1)}while(0);s=b+40|0;c[s>>2]=o;i=b+52|0;e=c[i>>2]|0;if(e|0){GO(e);c[i>>2]=0;c[b+56>>2]=0}g=c[k>>2]|0;d:do if((g|0)>0){c[b+56>>2]=g;h=FO(g*68|0)|0;c[i>>2]=h;if(!h){Ue(0,3,41858,p);Ea(1)}e=0;while(1){if((e|0)==(g|0))break d;c[h+(e*68|0)+64>>2]=0;e=e+1|0}}while(0);l=c[m>>2]|0;if(!l)e=0;else{m=v+4|0;n=v+8|0;o=w+4|0;p=w+8|0;q=x+4|0;r=x+8|0;k=0;e=0;while(1){if((k|0)>=(c[s>>2]|0)){e=0;break a}d=0;while(1){if((d|0)>=(c[(c[t>>2]|0)+(k*12|0)+4>>2]|0))break;c[v>>2]=0;c[m>>2]=0;c[n>>2]=0;c[w>>2]=0;c[o>>2]=0;c[p>>2]=0;c[x>>2]=0;c[q>>2]=0;c[r>>2]=0;j=0;while(1){if((j|0)>=(l|0))break;g=c[u>>2]|0;i=c[t>>2]|0;e:do if((c[g+(j*132|0)+128>>2]|0)==(c[(c[i+(k*12|0)>>2]|0)+(d*12|0)+8>>2]|0)?(c[g+(j*132|0)+124>>2]|0)==(c[i+(k*12|0)+8>>2]|0):0){gg(y,+f[g+(j*132|0)>>2],+f[g+(j*132|0)+4>>2],+f[g+(j*132|0)+112>>2],+f[g+(j*132|0)+116>>2],(c[g+(j*132|0)+120>>2]|0)!=0);g=c[m>>2]|0;if(g>>>0<(c[n>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[m>>2]=g+20}else hg(v,y);Of(y);g=c[u>>2]|0;ig(y,+f[g+(j*132|0)+8>>2],+f[g+(j*132|0)+12>>2],0.0);g=c[o>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[o>>2]=(c[o>>2]|0)+12}else jg(w,y);g=0;while(1){if(g>>>0>=96)break e;h=(c[u>>2]|0)+(j*132|0)+16+g|0;i=c[q>>2]|0;if((i|0)==(c[r>>2]|0))kg(x,h);else{a[i>>0]=a[h>>0]|0;c[q>>2]=(c[q>>2]|0)+1}g=g+1|0}}while(0);j=j+1|0}c[z>>2]=((c[m>>2]|0)-(c[v>>2]|0)|0)/20|0;Ue(0,1,22532,z);j=c[t>>2]|0;c[b+60+(e<<2)>>2]=c[j+(k*12|0)+8>>2];j=c[j+(k*12|0)>>2]|0;em(c[b>>2]|0,v,x,w,c[j+(d*12|0)>>2]|0,c[j+(d*12|0)+4>>2]|0,e);Mf(x);lg(w);Nf(v);d=d+1|0;e=e+1|0}k=k+1|0}}}else{Ue(0,3,22451,e);e=-1}while(0);zb=A;return e|0}function gg(b,c,d,e,g,h){b=b|0;c=+c;d=+d;e=+e;g=+g;h=h|0;f[b>>2]=c;f[b+4>>2]=d;f[b+8>>2]=e;f[b+12>>2]=g;a[b+16>>0]=h&1;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/20|0)+1|0;g=ug(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/20|0;j=k<<1;vg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/20|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[g>>2]=(c[g>>2]|0)+20;wg(a,d);xg(d);zb=h;return}}function ig(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;f[a>>2]=b;f[a+4>>2]=c;f[a+8>>2]=d;return}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qg(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/12|0;j=k<<1;rg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/12|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[g>>2]=(c[g>>2]|0)+12;sg(a,d);tg(d);zb=h;return}}function kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=zb;zb=zb+32|0;e=i;f=b+4|0;g=(c[f>>2]|0)-(c[b>>2]|0)+1|0;h=mg(b)|0;if(h>>>0>>0)EO(b);else{j=c[b>>2]|0;l=(c[b+8>>2]|0)-j|0;k=l<<1;ng(e,l>>>0>>1>>>0?(k>>>0>>0?g:k):h,(c[f>>2]|0)-j|0,b+8|0);h=e+8|0;a[c[h>>2]>>0]=a[d>>0]|0;c[h>>2]=(c[h>>2]|0)+1;og(b,e);pg(e);zb=i;return}}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mg(a){a=a|0;return 2147483647}function ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=tB(b)|0;c[a>>2]=e;d=e+d|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+b;return}function og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-f)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-1|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function qg(a){a=a|0;return 357913941}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-12|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ug(a){a=a|0;return 214748364}function vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>214748364){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*20|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*20|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*20|0);return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;i=(c[g>>2]|0)+-20|0;h=d+-20|0;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[g>>2]=(c[g>>2]|0)+-20;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;f=a+8|0;i=b+12|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;c[b>>2]=c[g>>2];return}function xg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-20|0;c[d>>2]=e;Of(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+48|0;r=u+16|0;o=u+8|0;d=u;e=u+44|0;h=u+40|0;do if((a|0)!=0&(b|0)!=0){i=c[a+12>>2]|0;j=c[a+16>>2]|0;m=c[a+20>>2]|0;n=(m|0)==1;if(!n){d=Bg(b,i,j,m,e,h)|0;if(!d){d=-1;break}else{s=d;t=1}}else{s=b;t=0}Em(c[a>>2]|0,s,i,j)|0;j=fp(c[a>>2]|0)|0;j=(c[j+4>>2]|0)-(c[j>>2]|0)|0;d=(j|0)/20|0;i=a+48|0;c[i>>2]=d;a:do if(!j){e=c[a+56>>2]|0;b=a+52|0;d=0;while(1){if((d|0)>=(e|0))break a;c[(c[b>>2]|0)+(d*68|0)+60>>2]=-1;d=d+1|0}}else{j=a+44|0;b=c[j>>2]|0;if(b){GO(b);d=c[i>>2]|0}h=FO(d<<3)|0;c[j>>2]=h;if(!h){Ue(0,3,41858,o);Ea(1)}e=fp(c[a>>2]|0)|0;b:do if(n){h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k;f[o+(d<<3)+4>>2]=l}else{o=c[j>>2]|0;pe(b+184|0,k,l,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}else switch(m|0){case 5:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*1.5;f[o+(d<<3)+4>>2]=l*1.5}else{o=c[j>>2]|0;pe(b+184|0,k*1.5,l*1.5,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 2:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*2.0;f[o+(d<<3)+4>>2]=l*2.0}else{o=c[j>>2]|0;pe(b+184|0,k*2.0,l*2.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 4:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*3.0;f[o+(d<<3)+4>>2]=l*3.0}else{o=c[j>>2]|0;pe(b+184|0,k*3.0,l*3.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}default:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*4.0;f[o+(d<<3)+4>>2]=l*4.0}else{o=c[j>>2]|0;pe(b+184|0,k*4.0,l*4.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}}while(0);i=a+56|0;j=a+36|0;b=a+52|0;d=0;while(1){e=c[i>>2]|0;if((d|0)>=(e|0))break a;o=c[b>>2]|0;c[o+(d*68|0)+48>>2]=c[(c[j>>2]|0)+(d*12|0)+8>>2];c[o+(d*68|0)+60>>2]=-1;if(((c[o+(d*68|0)+64>>2]|0)==0?(p=hp(c[a>>2]|0)|0,q=cp(c[a>>2]|0)|0,(q|0)>=0):0)?(e=c[h>>2]|0,m=ep(c[a>>2]|0,q)|0,n=fp(c[a>>2]|0)|0,o=c[b>>2]|0,(zg(e,p,m,n,o+(d*68|0)|0,o+(d*68|0)+52|0)|0)==0):0){n=c[b>>2]|0;c[n+(d*68|0)+60>>2]=0;o=(c[p+4>>2]|0)-(c[p>>2]|0)>>3;c[n+(d*68|0)+56>>2]=o;c[n+(d*68|0)+48>>2]=c[a+60+(q<<2)>>2];l=+f[n+(d*68|0)+52>>2];c[r>>2]=d;c[r+4>>2]=o;c[r+8>>2]=o;g[r+16>>3]=l;Ue(0,1,22587,r)}d=d+1|0}}while(0);d=0;while(1){if((d|0)>=(e|0))break;c[(c[b>>2]|0)+(d*68|0)+64>>2]=0;d=d+1|0}if(!t)d=0;else{GO(s);d=0}}else{Ue(0,3,22543,d);d=-1}while(0);zb=u;return d|0}function zg(a,b,d,e,h,i){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=zb;zb=zb+240|0;k=u+208|0;j=u+200|0;s=u+224|0;p=u+212|0;q=u+96|0;t=u+192|0;r=u;l=c[b>>2]|0;b=(c[b+4>>2]|0)-l|0;m=b>>3;do if(m>>>0<4)b=-1;else{o=FO(b<<1)|0;if(!o){Ue(0,3,41858,j);Ea(1)}n=FO(m*24|0)|0;if(!n){Ue(0,3,41858,k);Ea(1)}e=c[e>>2]|0;j=c[d>>2]|0;b=0;while(1){if((b|0)==(m|0))break;d=c[l+(b<<3)>>2]|0;g[o+(b<<4)>>3]=+f[e+(d*20|0)>>2];g[o+(b<<4)+8>>3]=+f[e+(d*20|0)+4>>2];d=c[l+(b<<3)+4>>2]|0;g[n+(b*24|0)>>3]=+f[j+(d*12|0)>>2];g[n+(b*24|0)+8>>3]=+f[j+(d*12|0)+4>>2];g[n+(b*24|0)+16>>3]=0.0;b=b+1|0}c[p+8>>2]=m;c[p>>2]=o;c[p+4>>2]=n;b=a+8|0;if((Me(b,o,n,m,q)|0)<0){GO(o);GO(n);b=-1;break}b=Ee(b)|0;c[s>>2]=b;if(!b){GO(o);GO(n);b=-1;break}if((He(b,p,q,r,t)|0)<0){GO(o);GO(n);Fe(s)|0;b=-1}else{j=0;while(1){if((j|0)==3)break;b=0;while(1){if((b|0)==4)break;f[h+(j<<4)+(b<<2)>>2]=+g[r+(j<<5)+(b<<3)>>3];b=b+1|0}j=j+1|0}Fe(s)|0;GO(o);GO(n);v=+g[t>>3];f[i>>2]=v;b=(v>10.0)<<31>>31}}while(0);zb=u;return b|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)a=-1;else{c[b>>2]=c[a+52>>2];c[d>>2]=c[a+56>>2];a=0}return a|0}function Bg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;switch(d|0){case 1:{a=Cg(a,b,c,e,f)|0;break}case 5:{a=Dg(a,b,c,e,f)|0;break}case 2:{a=Eg(a,b,c,e,f)|0;break}case 4:{a=Fg(a,b,c,e,f)|0;break}default:a=Gg(a,b,c,e,f)|0}return a|0}function Cg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;c[e>>2]=b;c[f>>2]=d;b=B(d,b)|0;d=FO(b)|0;if(!d){Ue(0,3,41858,g);Ea(1)}else{_O(d|0,a|0,b|0)|0;zb=g;return d|0}return 0}function Dg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=zb;zb=zb+16|0;o=(e|0)/3|0;p=o<<1;c[g>>2]=p;n=(f|0)/3|0;m=n<<1;c[h>>2]=m;m=FO(B(m,p)|0)|0;if(!m){Ue(0,3,41858,q);Ea(1)}h=0;f=m;g=m;while(1){if((h|0)>=(n|0))break;l=h*3|0;i=0;j=b+(B(l+2|0,e)|0)|0;k=b+(B(l+1|0,e)|0)|0;l=b+(B(l,e)|0)|0;g=g+p|0;while(1){if((i|0)>=(o|0))break;u=l+1|0;s=k+1|0;a[f>>0]=(((d[u>>0]|0)>>>1&255)+(d[l>>0]|0)+((d[k>>0]|0)>>>1&255)+((d[s>>0]|0)>>>2&255)<<2>>>0)/9|0;r=j+1|0;a[g>>0]=((((d[s>>0]|0)>>>2)+((d[k>>0]|0)>>>1)&255)+(d[j>>0]|0)+((d[r>>0]|0)>>>1&255)<<2>>>0)/9|0;t=k+2|0;a[f+1>>0]=(((d[u>>0]|0)>>>1&255)+(d[l+2>>0]|0)+((d[s>>0]|0)>>>2&255)+((d[t>>0]|0)>>>1&255)<<2>>>0)/9|0;a[g+1>>0]=((((d[t>>0]|0)>>>1)+((d[s>>0]|0)>>>2)&255)+((d[r>>0]|0)>>>1&255)+(d[j+2>>0]|0)<<2>>>0)/9|0;i=i+1|0;j=j+3|0;k=k+3|0;l=l+3|0;f=f+2|0;g=g+2|0}h=h+1|0;f=f+p|0}zb=q;return m|0}function Eg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=(e|0)/2|0;c[g>>2]=m;l=(f|0)/2|0;c[h>>2]=l;k=FO(B(l,m)|0)|0;if(!k){Ue(0,3,41858,n);Ea(1)}g=0;f=k;while(1){if((g|0)>=(l|0))break;j=g<<1;h=0;i=b+(B(j,e)|0)|0;j=b+(B(j|1,e)|0)|0;while(1){if((h|0)>=(m|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)|0)>>>2;h=h+1|0;i=i+2|0;j=j+2|0;f=f+1|0}g=g+1|0}zb=n;return k|0}function Fg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=(e|0)/3|0;c[g>>2]=n;m=(f|0)/3|0;c[h>>2]=m;l=FO(B(m,n)|0)|0;if(!l){Ue(0,3,41858,o);Ea(1)}g=0;f=l;while(1){if((g|0)>=(m|0))break;k=g*3|0;h=0;i=b+(B(k,e)|0)|0;j=b+(B(k+2|0,e)|0)|0;k=b+(B(k+1|0,e)|0)|0;while(1){if((h|0)>=(n|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)|0)/9|0;h=h+1|0;i=i+3|0;j=j+3|0;k=k+3|0;f=f+1|0}g=g+1|0}zb=o;return l|0}function Gg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=(e|0)/4|0;c[g>>2]=o;n=(f|0)/4|0;c[h>>2]=n;m=FO(B(n,o)|0)|0;if(!m){Ue(0,3,41858,p);Ea(1)}g=0;f=m;while(1){if((g|0)>=(n|0))break;l=g<<2;h=0;i=b+(B(l,e)|0)|0;j=b+(B(l|3,e)|0)|0;k=b+(B(l|2,e)|0)|0;l=b+(B(l|1,e)|0)|0;while(1){if((h|0)>=(o|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[i+3>>0]|0)+(d[l>>0]|0)+(d[l+1>>0]|0)+(d[l+2>>0]|0)+(d[l+3>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[k+3>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)+(d[j+3>>0]|0)|0)/16|0;h=h+1|0;i=i+4|0;j=j+4|0;k=k+4|0;l=l+4|0;f=f+1|0}g=g+1|0}zb=p;return m|0}function Hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;g=i;do if(a){if(!b){e=rz(a,d)|0;break}f=Qy(a)|0;f=FO(f+2+(Qy(b)|0)|0)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{c[h>>2]=a;c[h+4>>2]=b;Hx(f,22627,h)|0;e=rz(f,d)|0;GO(f);break}}else e=0;while(0);zb=i;return e|0}function Ig(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;d=m;if(!(Kg(b)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,22633)|0,22676)|0,35e3)|0,53)|0,35007)|0,22771)|0;IE(d,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(d,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(d);QE(l,k)|0;ME(l)|0;ua()}i=Mg(Lg(b,0,0)|0)|0;j=Ng(Lg(b,0,0)|0)|0;k=Og(Lg(b,0,0)|0)|0;e=Pg(b)|0;l=a+12|0;c[l>>2]=e;b=(Qg(b)|0)+-1|0;e=a+16|0;c[e>>2]=b;Rg(a,B(c[l>>2]|0,b)|0);b=0;while(1){if(b>>>0>=(c[l>>2]|0)>>>0)break;f=j>>>b;g=k>>>b;d=0;while(1){h=c[e>>2]|0;if(d>>>0>=h>>>0)break;h=(B(h,b)|0)+d|0;cq((c[a>>2]|0)+(h<<5)|0,i,f,g,-1,1);d=d+1|0}b=b+1|0}zb=m;return}function Kg(a){a=a|0;return (c[a+8>>2]|0)-(c[a+4>>2]|0)>>5|0}function Lg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=zb;zb=zb+16|0;f=g;if((c[a+16>>2]|0)>>>0<=b>>>0){e=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,218)|0,35007)|0,22796)|0;IE(f,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);h=XF(f,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(f);QE(e,h)|0;ME(e)|0;ua()}e=c[a+20>>2]|0;if(e>>>0>d>>>0){h=(B(e,b)|0)+d|0;zb=g;return (c[a+4>>2]|0)+(h<<5)|0}else{h=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,219)|0,35007)|0,22816)|0;IE(f,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);g=XF(f,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(f);QE(h,g)|0;ME(h)|0;ua()}return 0}function Mg(a){a=a|0;return c[a>>2]|0}function Ng(a){a=a|0;return c[a+4>>2]|0}function Og(a){a=a|0;return c[a+8>>2]|0}function Pg(a){a=a|0;return c[a+16>>2]|0}function Qg(a){a=a|0;return c[a+20>>2]|0}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=d-f>>5;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b<<5)|0;while(1){if((d|0)==(a|0))break;f=d+-32|0;rq(f);d=f}c[g>>2]=a}}else Sg(a,b-e|0);return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>5>>>0>>0){d=(d-(c[a>>2]|0)>>5)+b|0;e=Ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>4;Vg(f,k>>5>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>5,a+8|0);Wg(f,b);Xg(a,f);Yg(f);break}}else Tg(a,b);while(0);zb=i;return}function Tg(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ug(a){a=a|0;return 134217727}function Vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>134217727){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<5)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<5)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<5);return}function Wg(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-32|0;bq((c[g>>2]|0)+-32|0,h);c[g>>2]=(c[g>>2]|0)+-32;d=h}e=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=e;e=b+8|0;h=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=h;e=a+8|0;h=b+12|0;f=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=f;c[b>>2]=c[g>>2];return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-32|0;c[d>>2]=e;rq(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((c[a+4>>2]|0)==(c[a>>2]|0)){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22835)|0,22676)|0,35e3)|0,72)|0,35007)|0,22877)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((Pg(b)|0)<=0){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,73)|0,35007)|0,22967)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if(b|0?NA(b,13184,13192,0)|0:0){f=a+12|0;g=a+16|0;e=0;while(1){if(e>>>0>=(c[f>>2]|0)>>>0)break;d=0;while(1){if(d>>>0>=(c[g>>2]|0)>>>0)break;k=_g(a,e,d)|0;j=Lg(b,e,d)|0;i=d+1|0;$g(0,k,j,Lg(b,e,i)|0);d=i}e=e+1|0}zb=h;return}k=Xf(Xf(PE(Xf(Xf(Xf(56032,23003)|0,22676)|0,35e3)|0,74)|0,35007)|0,23075)|0;IE(d,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(k,j)|0;ME(k)|0;ua()}function _g(a,b,d){a=a|0;b=b|0;d=d|0;d=(B(c[a+16>>2]|0,b)|0)+d|0;return (c[a>>2]|0)+(d<<5)|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;a=k;if((Mg(b)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23110)|0,22676)|0,35e3)|0,86)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(d)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23181)|0,22676)|0,35e3)|0,87)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(e)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23228)|0,22676)|0,35e3)|0,88)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(b)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23275)|0,22676)|0,35e3)|0,89)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(d)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23353)|0,22676)|0,35e3)|0,90)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(e)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23396)|0,22676)|0,35e3)|0,91)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23439)|0,22676)|0,35e3)|0,92)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23519)|0,22676)|0,35e3)|0,93)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(d)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23602)|0,22676)|0,35e3)|0,94)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(d)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23652)|0,22676)|0,35e3)|0,95)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}g=0;while(1){if(g>>>0>=(Og(d)|0)>>>0)break;h=bh(b,g)|0;i=ch(d,g)|0;j=ch(e,g)|0;a=0;while(1){if(a>>>0>=(Ng(d)|0)>>>0)break;f[h+(a<<2)>>2]=+f[i+(a<<2)>>2]-+f[j+(a<<2)>>2];a=a+1|0}g=g+1|0}zb=k;return}function ah(a){a=a|0;return c[a+16>>2]|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,119)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,124)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function dh(b){b=b|0;var d=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=10;c[b+12>>2]=10;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;a[b+28>>0]=1;Ig(b+32|0);f[b+52>>2]=0.0;f[b+56>>2]=10.0;d=b+60|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;f[b+88>>2]=9.0;sj(b+92|0);d=b+144|0;c[d>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;eh(b,5e3);fh(d,36);return}function eh(a,b){a=a|0;b=b|0;c[a+84>>2]=b;uh(a+60|0,b);return}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else nh(a,b-e|0);return}function gh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function hh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function ih(a){a=a|0;mh(a);return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;kh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;lh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function lh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-32|0;rq(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ph(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;qh(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);rh(f,b);sh(a,f);th(f);break}}else oh(a,b);while(0);zb=i;return}function oh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function ph(a){a=a|0;return 1073741823}function qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function rh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function th(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((((c[a+8>>2]|0)-e|0)/36|0)>>>0>>0){vh(d,b,((c[a+4>>2]|0)-e|0)/36|0,a+8|0);wh(a,d);xh(d)}zb=f;return}function vh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>119304647){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*36|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*36|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*36|0);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-36|0)*36|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-36|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yh(a){a=a|0;gh(a+144|0);tj(a+92|0);hh(a+72|0);hh(a+60|0);ih(a+32|0);jh(a+16|0);return} +function aI(){var b=0,d=0;if((a[54864]|0)==0?nB(54864)|0:0){d=53568;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53856);pB(54864)}nO(53568,49685)|0;nO(53580,49693)|0;nO(53592,49702)|0;nO(53604,49708)|0;nO(53616,49714)|0;nO(53628,49718)|0;nO(53640,49723)|0;nO(53652,49728)|0;nO(53664,49735)|0;nO(53676,49745)|0;nO(53688,49753)|0;nO(53700,49762)|0;nO(53712,49771)|0;nO(53724,49775)|0;nO(53736,49779)|0;nO(53748,49783)|0;nO(53760,49714)|0;nO(53772,49787)|0;nO(53784,49791)|0;nO(53796,49795)|0;nO(53808,49799)|0;nO(53820,49803)|0;nO(53832,49807)|0;nO(53844,49811)|0;return}function bI(){var b=0,d=0;if((a[54880]|0)==0?nB(54880)|0:0){d=53856;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54024);pB(54880)}nO(53856,49815)|0;nO(53868,49822)|0;nO(53880,49829)|0;nO(53892,49837)|0;nO(53904,49847)|0;nO(53916,49856)|0;nO(53928,49863)|0;nO(53940,49872)|0;nO(53952,49876)|0;nO(53964,49880)|0;nO(53976,49884)|0;nO(53988,49888)|0;nO(54e3,49892)|0;nO(54012,49896)|0;return}function cI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function dI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function eI(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;s=z+12|0;r=z+8|0;w=z+4|0;x=z;IE(s,g);t=XF(s,56736)|0;YF(s);c[h>>2]=0;u=t+8|0;m=0;a:while(1){l=c[e>>2]|0;if(!((j|0)!=(k|0)&(m|0)==0))break;n=l;if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;o=1;q=0}else{o=0;q=n}}else{l=0;o=1;q=n}p=c[f>>2]|0;m=p;do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else n=cg(a[n>>0]|0)|0;if(!(_f(n,Wf()|0)|0))if(o)break;else{y=63;break a}else{c[f>>2]=0;m=0;y=15;break}}else y=15;while(0);if((y|0)==15){y=0;if(o){y=63;break}else p=0}b:do if((Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0)<<24>>24==37){p=j+1|0;if((p|0)==(k|0)){y=63;break a}n=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{j=j+2|0;if((j|0)==(k|0)){y=63;break a}o=n;l=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0;j=p;break}default:{o=0;l=n}}p=c[(c[d>>2]|0)+36>>2]|0;c[w>>2]=q;c[x>>2]=m;c[r>>2]=c[w>>2];c[s>>2]=c[x>>2];q=Qb[p&15](d,r,s,g,h,i,l,o)|0;c[e>>2]=q;j=j+2|0}else{m=a[j>>0]|0;if(m<<24>>24>-1?(v=c[u>>2]|0,b[v+(m<<24>>24<<1)>>1]&8192):0){do{j=j+1|0;if((j|0)==(k|0)){j=k;break}m=a[j>>0]|0;if(m<<24>>24<=-1)break}while((b[v+(m<<24>>24<<1)>>1]&8192)!=0);while(1){if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}do if(p){m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))m=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else m=cg(a[m>>0]|0)|0;if(!(_f(m,Wf()|0)|0))if(n)break;else break b;else{c[f>>2]=0;y=42;break}}else y=42;while(0);if((y|0)==42){y=0;if(n)break b;else p=0}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(b[(c[u>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}}}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;q=Ib[c[(c[t>>2]|0)+12>>2]&63](t,m&255)|0;if(q<<24>>24!=(Ib[c[(c[t>>2]|0)+12>>2]&63](t,a[j>>0]|0)|0)<<24>>24){c[h>>2]=4;break}m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}j=j+1|0}while(0);m=c[h>>2]|0}if((y|0)==63)c[h>>2]=4;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[f>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[m>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(n)break;else{y=78;break}else{c[f>>2]=0;y=76;break}}else y=76;while(0);if((y|0)==76?n:0)y=78;if((y|0)==78)c[h>>2]=c[h>>2]|2;zb=z;return l|0}function fI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function gI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function hI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function iI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function lI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);i=c[f>>2]|0;do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else break a;else{c[f>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){i=0;break}else i=0}d=c[e>>2]|0;h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if((d&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(d<<24>>24<<1)>>1]&8192))break;d=c[e>>2]|0;h=d+12|0;i=c[h>>2]|0;if((i|0)==(c[d+16>>2]|0))Gb[c[(c[d>>2]|0)+40>>2]&127](d)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}}d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else{k=41;break}else{c[f>>2]=0;k=39;break}}else k=39;while(0);if((k|0)==39?h:0)k=41;if((k|0)==41)c[g>>2]=c[g>>2]|2;return}function mI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+11>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+12+11>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(FG(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function nI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function oI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function pI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function qI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function rI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;i=1;break}else{i=(c[d>>2]|0)==0;break}}else i=1;while(0);h=c[e>>2]|0;do if(h){b=c[h+12>>2]|0;if((b|0)==(c[h+16>>2]|0))b=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(i){j=h;k=17;break}else{k=16;break}else{c[e>>2]=0;k=14;break}}else k=14;while(0);if((k|0)==14)if(i)k=16;else{j=0;k=17}a:do if((k|0)==16)c[f>>2]=c[f>>2]|6;else if((k|0)==17){b=c[d>>2]|0;h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if((Jb[c[(c[g>>2]|0)+36>>2]&63](g,b&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}b=c[d>>2]|0;h=b+12|0;i=c[h>>2]|0;if((i|0)==(c[b+16>>2]|0))Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;h=1;break}else{h=(c[d>>2]|0)==0;break}}else h=1;while(0);do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(h)break a;else break;else{c[e>>2]=0;k=38;break}}else k=38;while(0);if((k|0)==38?!h:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function sI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[d>>2]|0;do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[j>>0]|0)|0;if(_f(i,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);j=c[e>>2]|0;do if(j){i=c[j+12>>2]|0;if((i|0)==(c[j+16>>2]|0))i=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else i=cg(a[i>>0]|0)|0;if(!(_f(i,Wf()|0)|0))if(k){q=17;break}else{q=16;break}else{c[e>>2]=0;q=14;break}}else q=14;while(0);if((q|0)==14)if(k)q=16;else{j=0;q=17}a:do if((q|0)==16){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==17){i=c[d>>2]|0;k=c[i+12>>2]|0;if((k|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[k>>0]|0)|0;k=i&255;if(k<<24>>24>-1?(p=g+8|0,b[(c[p>>2]|0)+(i<<24>>24<<1)>>1]&2048):0){i=(Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24;k=c[d>>2]|0;l=k+12|0;m=c[l>>2]|0;if((m|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=m+1;cg(a[m>>0]|0)|0}n=j;m=j;while(1){i=i+-48|0;o=h+-1|0;j=c[d>>2]|0;do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[k>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;l=1;break}else{l=(c[d>>2]|0)==0;break}}else l=1;while(0);if(m){j=c[m+12>>2]|0;if((j|0)==(c[m+16>>2]|0))j=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;j=1;n=0;m=0}else j=0}else{j=1;m=0}k=c[d>>2]|0;if(!((h|0)>1&(l^j)))break;j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;k=j&255;if(k<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=(i*10|0)+((Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24)|0;j=c[d>>2]|0;k=j+12|0;l=c[k>>2]|0;if((l|0)==(c[j+16>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=l+1;cg(a[l>>0]|0)|0}h=o}do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);do if(n){j=c[n+12>>2]|0;if((j|0)==(c[n+16>>2]|0))j=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else j=cg(a[j>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(k)break a;else break;else{c[e>>2]=0;q=63;break}}else q=63;while(0);if((q|0)==63?!k:0)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function tI(a){a=a|0;CF(a);return}function uI(a){a=a|0;CF(a);SA(a);return}function vI(a){a=a|0;return 2}function wI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=PI(a,j,i,e,f,g,13152,13184)|0;zb=h;return g|0}function xI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+8+3>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+((o?c[n+4>>2]|0:e&255)<<2)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=PI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function yI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];NI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function zI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];OI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function AI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];_I(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function BI(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56768)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];NI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];OI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];QI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=PI(b,j,k,f,g,h,12976,13008)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=PI(b,j,k,f,g,h,13008,13040)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];RI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];SI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];TI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];UI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];VI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];WI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];XI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=PI(b,j,k,f,g,h,13040,13084)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=PI(b,j,k,f,g,h,13088,13108)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];YI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=PI(b,j,k,f,g,h,13120,13152)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];ZI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];_I(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];$I(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];aJ(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function CI(b){b=b|0;if((a[54952]|0)==0?nB(54952)|0:0){MI();c[14233]=54352;pB(54952)}return c[14233]|0}function DI(b){b=b|0;if((a[54936]|0)==0?nB(54936)|0:0){LI();c[14232]=54064;pB(54936)}return c[14232]|0}function EI(b){b=b|0;if((a[54920]|0)==0?nB(54920)|0:0){KI();c[14231]=54032;pB(54920)}return c[14231]|0}function FI(b){b=b|0;if((a[54912]|0)==0?nB(54912)|0:0){c[14228]=0;c[14229]=0;c[14230]=0;tO(56912,17648,JI(17648)|0);pB(54912)}return 56912}function GI(b){b=b|0;if((a[54904]|0)==0?nB(54904)|0:0){c[14225]=0;c[14226]=0;c[14227]=0;tO(56900,17600,JI(17600)|0);pB(54904)}return 56900}function HI(b){b=b|0;if((a[54896]|0)==0?nB(54896)|0:0){c[14222]=0;c[14223]=0;c[14224]=0;tO(56888,17564,JI(17564)|0);pB(54896)}return 56888}function II(b){b=b|0;if((a[54888]|0)==0?nB(54888)|0:0){c[14219]=0;c[14220]=0;c[14221]=0;tO(56876,17528,JI(17528)|0);pB(54888)}return 56876}function JI(a){a=a|0;return ly(a)|0}function KI(){var b=0,d=0;if((a[54928]|0)==0?nB(54928)|0:0){d=54032;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54056);pB(54928)}AO(54032,17732)|0;AO(54044,17744)|0;return}function LI(){var b=0,d=0;if((a[54944]|0)==0?nB(54944)|0:0){d=54064;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54352);pB(54944)}AO(54064,17756)|0;AO(54076,17788)|0;AO(54088,17824)|0;AO(54100,17848)|0;AO(54112,17872)|0;AO(54124,17888)|0;AO(54136,17908)|0;AO(54148,17928)|0;AO(54160,17956)|0;AO(54172,17996)|0;AO(54184,18028)|0;AO(54196,18064)|0;AO(54208,18100)|0;AO(54220,18116)|0;AO(54232,18132)|0;AO(54244,18148)|0;AO(54256,17872)|0;AO(54268,18164)|0;AO(54280,18180)|0;AO(54292,18196)|0;AO(54304,18212)|0;AO(54316,18228)|0;AO(54328,18244)|0;AO(54340,18260)|0;return}function MI(){var b=0,d=0;if((a[54960]|0)==0?nB(54960)|0:0){d=54352;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54520);pB(54960)}AO(54352,18276)|0;AO(54364,18304)|0;AO(54376,18332)|0;AO(54388,18364)|0;AO(54400,18404)|0;AO(54412,18440)|0;AO(54424,18468)|0;AO(54436,18504)|0;AO(54448,18520)|0;AO(54460,18536)|0;AO(54472,18552)|0;AO(54484,18568)|0;AO(54496,18584)|0;AO(54508,18600)|0;return}function NI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function OI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function PI(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+16|0;q=v+12|0;p=v+8|0;s=v+4|0;t=v;IE(q,e);r=XF(q,56768)|0;YF(q);c[f>>2]=0;k=0;a:while(1){j=c[b>>2]|0;if(!((h|0)!=(i|0)&(k|0)==0))break;l=j;if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;m=1;o=0}else{m=0;o=l}}else{j=0;m=1;o=l}n=c[d>>2]|0;k=n;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else l=jE(c[l>>2]|0)|0;if(!(JE(l,iE()|0)|0))if(m)break;else{u=60;break a}else{c[d>>2]=0;k=0;u=15;break}}else u=15;while(0);if((u|0)==15){u=0;if(m){u=60;break}else n=0}b:do if((Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0)<<24>>24==37){n=h+4|0;if((n|0)==(i|0)){u=60;break a}l=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{h=h+8|0;if((h|0)==(i|0)){u=60;break a}m=l;j=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0;h=n;break}default:{m=0;j=l}}n=c[(c[a>>2]|0)+36>>2]|0;c[s>>2]=o;c[t>>2]=k;c[p>>2]=c[s>>2];c[q>>2]=c[t>>2];o=Qb[n&15](a,p,q,e,f,g,j,m)|0;c[b>>2]=o;h=h+8|0}else{if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0)){l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;o=Ib[c[(c[r>>2]|0)+28>>2]&63](r,k)|0;if((o|0)!=(Ib[c[(c[r>>2]|0)+28>>2]&63](r,c[h>>2]|0)|0)){c[f>>2]=4;break}k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}h=h+4|0;break}do{h=h+4|0;if((h|0)==(i|0)){h=i;break}}while(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0);while(1){if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else break b;else{c[d>>2]=0;u=40;break}}else u=40;while(0);if((u|0)==40){u=0;if(l)break b;else n=0}l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,k)|0))break b;k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}}}while(0);k=c[f>>2]|0}if((u|0)==60)c[f>>2]=4;if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}h=c[d>>2]|0;do if(h){k=c[h+12>>2]|0;if((k|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[k>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(l)break;else{u=75;break}else{c[d>>2]=0;u=73;break}}else u=73;while(0);if((u|0)==73?l:0)u=75;if((u|0)==75)c[f>>2]=c[f>>2]|2;zb=v;return j|0}function QI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function RI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function SI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function TI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function UI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function VI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function WI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(!(Jb[c[(c[f>>2]|0)+12>>2]&63](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break;else{i=40;break}else{c[d>>2]=0;i=38;break}}else i=38;while(0);if((i|0)==38?g:0)i=40;if((i|0)==40)c[e>>2]=c[e>>2]|2;return}function XI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+8+3>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+20+3>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(gH(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function YI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function ZI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function _I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function $I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function aJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if((Jb[c[(c[f>>2]|0)+52>>2]&63](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function bJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[h>>2]|0)|0;if(JE(g,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(i){n=17;break}else{n=16;break}else{c[b>>2]=0;n=14;break}}else n=14;while(0);if((n|0)==14)if(i)n=16;else{h=0;n=17}a:do if((n|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((n|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[i>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Jb[c[(c[e>>2]|0)+52>>2]&63](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0))Gb[c[(c[i>>2]|0)+40>>2]&127](i)|0;else{c[j>>2]=k+4;jE(c[k>>2]|0)|0}l=h;k=h;while(1){g=g+-48|0;m=f+-1|0;h=c[a>>2]|0;do if(h){i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[i>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;h=1;l=0;k=0}else h=0}else{h=1;k=0}i=c[a>>2]|0;if(!((f|0)>1&(j^h)))break;h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,h)|0))break a;g=(g*10|0)+((Jb[c[(c[e>>2]|0)+52>>2]&63](e,h,0)|0)<<24>>24)|0;h=c[a>>2]|0;i=h+12|0;j=c[i>>2]|0;if((j|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[i>>2]=j+4;jE(c[j>>2]|0)|0}f=m}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(l){h=c[l+12>>2]|0;if((h|0)==(c[l+16>>2]|0))h=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else h=jE(c[h>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(i)break a;else break;else{c[b>>2]=0;n=61;break}}else n=61;while(0);if((n|0)==61?!i:0)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function cJ(a){a=a|0;hJ(a+8|0);CF(a);return}function dJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function eJ(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=zb;zb=zb+112|0;e=j;f=j+100|0;c[f>>2]=e+100;fJ(b+8|0,e,f,g,h,i);i=c[f>>2]|0;h=e;e=c[d>>2]|0;while(1){if((h|0)==(i|0))break;f=a[h>>0]|0;if(!e)e=0;else{b=e+24|0;g=c[b>>2]|0;if((g|0)==(c[e+28>>2]|0)){d=c[(c[e>>2]|0)+52>>2]|0;f=cg(f)|0;f=Ib[d&63](e,f)|0}else{c[b>>2]=g+1;a[g>>0]=f;f=cg(f)|0}d=_f(f,Wf()|0)|0;e=d?0:e}h=h+1|0}zb=j;return e|0}function fJ(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;i=l;a[i>>0]=37;j=i+1|0;a[j>>0]=g;k=i+2|0;a[k>>0]=h;a[i+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}k=gJ(d,c[e>>2]|0)|0;k=d+(Sa(d|0,k|0,i|0,f|0,c[b>>2]|0)|0)|0;c[e>>2]=k;zb=l;return}function gJ(a,b){a=a|0;b=b|0;return b-a|0}function hJ(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(_F()|0))Vy(c[a>>2]|0);return}function iJ(a){a=a|0;hJ(a+8|0);CF(a);return}function jJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function kJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=zb;zb=zb+416|0;d=i;e=i+400|0;c[e>>2]=d+400;lJ(a+8|0,d,e,f,g,h);h=c[e>>2]|0;g=d;d=c[b>>2]|0;while(1){if((g|0)==(h|0))break;e=c[g>>2]|0;if(!d)d=0;else{a=d+24|0;f=c[a>>2]|0;if((f|0)==(c[d+28>>2]|0)){b=c[(c[d>>2]|0)+52>>2]|0;e=jE(e)|0;e=Ib[b&63](d,e)|0}else{c[a>>2]=f+4;c[f>>2]=e;e=jE(e)|0}b=JE(e,iE()|0)|0;d=b?0:d}g=g+4|0}zb=i;return d|0}function lJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+128|0;k=h;l=h+116|0;i=h+104|0;j=h+112|0;c[l>>2]=k+100;fJ(a,k,l,e,f,g);e=i;c[e>>2]=0;c[e+4>>2]=0;c[j>>2]=k;e=mJ(b,c[d>>2]|0)|0;a=ez(c[a>>2]|0)|0;e=Sz(b,j,e,i)|0;if(a|0)ez(a)|0;if((e|0)==-1)nJ(0);else{c[d>>2]=b+(e<<2);zb=h;return}}function mJ(a,b){a=a|0;b=b|0;return b-a>>2|0}function nJ(a){a=a|0;ua()}function oJ(a){a=a|0;CF(a);return}function pJ(a){a=a|0;CF(a);SA(a);return}function qJ(a){a=a|0;return 127}function rJ(a){a=a|0;return 127}function sJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function tJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function uJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function vJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function wJ(a){a=a|0;return 0}function xJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function yJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function zJ(a){a=a|0;CF(a);return}function AJ(a){a=a|0;CF(a);SA(a);return}function BJ(a){a=a|0;return 127}function CJ(a){a=a|0;return 127}function DJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function EJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function FJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function GJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function HJ(a){a=a|0;return 0}function IJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function JJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function KJ(a){a=a|0;CF(a);return}function LJ(a){a=a|0;CF(a);SA(a);return}function MJ(a){a=a|0;return 2147483647}function NJ(a){a=a|0;return 2147483647}function OJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function PJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function SJ(a){a=a|0;return 0}function TJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function UJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function VJ(a){a=a|0;CF(a);return}function WJ(a){a=a|0;CF(a);SA(a);return}function XJ(a){a=a|0;return 2147483647}function YJ(a){a=a|0;return 2147483647}function ZJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function _J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function $J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function aK(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function bK(a){a=a|0;return 0}function cK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function dK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function eK(a){a=a|0;CF(a);return}function fK(a){a=a|0;CF(a);SA(a);return}function gK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+256|0;n=v+240|0;q=v+216|0;m=v+112|0;u=v+232|0;p=v+228|0;s=v+224|0;j=v+250|0;w=v+220|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56736)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(jK(d,n,f,s,l,h,j,b,u,p,m+100|0)|0){Kb[c[(c[b>>2]|0)+32>>2]&15](b,50465,50475,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>98){b=FO(b+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+10|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=a[j>>0]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((a[b>>0]|0)==f<<24>>24)break;b=b+1|0}a[g>>0]=a[50465+(b-m)>>0]|0;j=j+1|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function hK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+128|0;j=s+120|0;b=s;r=s+112|0;m=s+108|0;p=s+100|0;k=s+124|0;n=s+104|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56736)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(jK(d,j,f,p,g,h,k,l,r,m,b+100|0)|0){b=i+11|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;a[j>>0]=0;bg(f,j);c[i+4>>2]=0}else{a[j>>0]=0;bg(i,j);a[b>>0]=0}if(a[k>>0]|0)sO(i,Ib[c[(c[l>>2]|0)+28>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+28>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-1|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((a[b>>0]|0)!=k<<24>>24)break;b=b+1|0}kK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[g>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function iK(a){a=a|0;return}function jK(e,f,g,h,i,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=zb;zb=zb+512|0;I=Y+488|0;O=Y;X=Y+480|0;Q=Y+472|0;J=Y+468|0;K=Y+496|0;L=Y+493|0;M=Y+492|0;S=Y+456|0;T=Y+444|0;U=Y+432|0;V=Y+420|0;W=Y+408|0;N=Y+404|0;R=Y+400|0;c[I>>2]=o;c[X>>2]=O;c[X+4>>2]=145;c[Q>>2]=O;c[J>>2]=O+400;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[S+(o<<2)>>2]=0;o=o+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[T+(o<<2)>>2]=0;o=o+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[U+(o<<2)>>2]=0;o=o+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[V+(o<<2)>>2]=0;o=o+1|0}c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[W+(o<<2)>>2]=0;o=o+1|0}mK(g,h,K,L,M,S,T,U,V,N);c[n>>2]=c[m>>2];B=l+8|0;C=U+11|0;D=U+4|0;E=V+11|0;F=V+4|0;G=S+11|0;H=S+4|0;v=(i&512|0)!=0;w=T+11|0;x=K+3|0;y=T+4|0;z=W+11|0;A=W+4|0;O=0;u=0;a:while(1){if(u>>>0>=4){P=243;break}o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);g=c[f>>2]|0;do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h){t=g;break}else{P=243;break a}else{c[f>>2]=0;P=31;break}}else P=31;while(0);if((P|0)==31){P=0;if(h){P=243;break}else t=0}b:do switch(a[K+u>>0]|0){case 1:{if((u|0)==3)o=O;else{o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=45;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){P=45;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);P=47}break}case 0:{if((u|0)==3)o=O;else P=47;break}case 3:{o=a[C>>0]|0;o=o<<24>>24<0?c[D>>2]|0:o&255;l=a[E>>0]|0;l=l<<24>>24<0?c[F>>2]|0:l&255;if((o|0)==(0-l|0))o=O;else{i=(o|0)==0;o=c[e>>2]|0;g=c[o+12>>2]|0;h=(g|0)==(c[o+16>>2]|0);if(i|(l|0)==0){if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;o=o&255;if(i){if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=o<<24>>24){o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O;break b}if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)!=o<<24>>24){a[k>>0]=1;o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[e>>2]|0;h=g+12|0;l=c[h>>2]|0;i=(l|0)==(c[g+16>>2]|0);if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)==(o&255)<<24>>24){if(i)Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=l+1;cg(a[l>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(i)o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[l>>0]|0)|0;if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=(o&255)<<24>>24){P=105;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O}break}case 2:{if(u>>>0<2|(O|0)!=0){o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;l=h?g:T;i=l;if(!u)h=i;else{s=i;P=110}}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){o=0;break b}o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;s=h?g:T;l=s;P=110}c:do if((P|0)==110){P=0;if((d[K+(u+-1)>>0]|0)<2){i=l+(h?c[y>>2]|0:o&255)|0;h=s;while(1){p=h;if((i|0)==(p|0))break;q=a[p>>0]|0;if(q<<24>>24<=-1)break;if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192))break;h=p+1|0}q=h-s|0;p=a[z>>0]|0;r=p<<24>>24<0;i=c[A>>2]|0;p=p&255;if(q>>>0<=(r?i:p)>>>0){Z=(c[W>>2]|0)+i|0;i=W+p|0;p=r?Z:i;i=r?Z+(0-q)|0:i+(0-q)|0;while(1){if((i|0)==(p|0))break c;if((a[i>>0]|0)!=(a[l>>0]|0)){h=s;break c}l=l+1|0;i=i+1|0}}else h=s}else h=s}while(0);i=h;h=t;d:while(1){Z=o<<24>>24<0;if((i|0)==((Z?g:T)+(Z?c[y>>2]|0:o&255)|0))break;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else break d;else{c[f>>2]=0;P=136;break}}else P=136;while(0);if((P|0)==136){P=0;if(g)break;else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}i=i+1|0;o=a[w>>0]|0;g=c[T>>2]|0;h=l}if(v?(Z=a[w>>0]|0,t=Z<<24>>24<0,(i|0)!=((t?c[T>>2]|0:T)+(t?c[y>>2]|0:Z&255)|0)):0){P=148;break a}else o=O;break}case 4:{i=0;l=t;o=t;e:while(1){g=c[e>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(l){g=c[l+12>>2]|0;if((g|0)==(c[l+16>>2]|0))g=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(h){p=l;break}else{l=o;break e}else{c[f>>2]=0;o=0;P=162;break}}else P=162;while(0);if((P|0)==162){P=0;if(h){l=o;break}else p=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;h=g&255;if(h<<24>>24>-1?(b[(c[B>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0:0){g=c[n>>2]|0;if((g|0)==(c[I>>2]|0)){nK(m,n,I);g=c[n>>2]|0}c[n>>2]=g+1;a[g>>0]=h;g=i+1|0}else{Z=a[G>>0]|0;if(!((a[M>>0]|0)==h<<24>>24&(i|0?((Z<<24>>24<0?c[H>>2]|0:Z&255)|0)!=0:0))){l=o;break}g=c[Q>>2]|0;if((g|0)==(c[J>>2]|0)){oK(X,Q,J);g=c[Q>>2]|0}c[Q>>2]=g+4;c[g>>2]=i;g=0}h=c[e>>2]|0;l=h+12|0;i=c[l>>2]|0;if((i|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[l>>2]=i+1;cg(a[i>>0]|0)|0}i=g;l=p}o=c[Q>>2]|0;if(i|0?(c[X>>2]|0)!=(o|0):0){if((o|0)==(c[J>>2]|0)){oK(X,Q,J);o=c[Q>>2]|0}c[Q>>2]=o+4;c[o>>2]=i}f:do if((c[N>>2]|0)>0){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(l){o=c[l+12>>2]|0;if((o|0)==(c[l+16>>2]|0))o=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g)break;else{P=204;break a}else{c[f>>2]=0;P=198;break}}else P=198;while(0);if((P|0)==198){P=0;if(g){P=204;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[L>>0]|0)!=(o&255)<<24>>24){P=204;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l;while(1){if((c[N>>2]|0)<=0)break f;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{P=230;break a}else{c[f>>2]=0;P=223;break}}else P=223;while(0);if((P|0)==223){P=0;if(g){P=230;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=230;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&2048)){P=230;break a}if((c[n>>2]|0)==(c[I>>2]|0))nK(m,n,I);o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[n>>2]|0;c[n>>2]=g+1;a[g>>0]=o;c[N>>2]=(c[N>>2]|0)+-1;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l}}while(0);if((c[n>>2]|0)==(c[m>>2]|0)){P=241;break a}else o=O;break}default:o=O}while(0);g:do if((P|0)==47){P=0;h=t;while(1){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{o=O;break g}else{c[f>>2]=0;P=61;break}}else P=61;while(0);if((P|0)==61){P=0;if(g){o=O;break g}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){o=O;break g}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=O;break g}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);h=l}}while(0);O=o;u=u+1|0}h:do if((P|0)==45){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==105){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==148){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==204){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==230){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==241){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==243){i:do if(O|0){i=O+11|0;p=O+4|0;l=1;j:while(1){o=a[i>>0]|0;if(o<<24>>24<0)o=c[p>>2]|0;else o=o&255;if(l>>>0>=o>>>0)break i;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);o=c[f>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h)break;else break j;else{c[f>>2]=0;P=262;break}}else P=262;while(0);if((P|0)==262?(P=0,h):0)break;o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)<0)g=c[O>>2]|0;else g=O;if((a[g+l>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}l=l+1|0}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);g=c[X>>2]|0;o=c[Q>>2]|0;if((g|0)!=(o|0)){c[R>>2]=0;kG(S,g,o,R);if(!(c[R>>2]|0)){g=1;break}else{c[j>>2]=c[j>>2]|4;g=0;break}}else g=1}while(0);jO(W);jO(V);jO(U);jO(T);jO(S);o=c[X>>2]|0;c[X>>2]=0;if(o|0)Sb[c[X+4>>2]&255](o);zb=Y;return g|0}function kK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;j=d;m=o;n=b+11|0;h=a[n>>0]|0;f=h<<24>>24<0;if(f){l=c[b+4>>2]|0;i=(c[b+8>>2]&2147483647)+-1|0}else{l=h&255;i=10}k=e-j|0;do if(k|0){if(f){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=h&255}if(lK(d,g,g+f|0)|0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;ag(m,d,e);n=a[m+11>>0]|0;l=n<<24>>24<0;rO(b,l?c[m>>2]|0:m,l?c[m+4>>2]|0:n&255)|0;jO(m);break}if((i-l|0)>>>0>>0)qO(b,i,l+k-i|0,l,l,0,0);if((a[n>>0]|0)<0)h=c[b>>2]|0;else h=b;g=e+(l-j)|0;f=h+l|0;while(1){if((d|0)==(e|0))break;bg(f,d);f=f+1|0;d=d+1|0}a[m>>0]=0;bg(h+g|0,m);d=l+k|0;if((a[n>>0]|0)<0){c[b+4>>2]=d;break}else{a[n>>0]=d;break}}while(0);zb=o;return b|0}function lK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function mK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;o=zb;zb=zb+16|0;m=o+12|0;n=o;if(b){d=XF(d,56968)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}else{d=XF(d,56960)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}c[l>>2]=b;zb=o;return}function nK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?1:g):-1;h=(c[b>>2]|0)-h|0;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+h;c[d>>2]=(c[a>>2]|0)+g;return}function oK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function pK(a){a=a|0;CF(a);return}function qK(a){a=a|0;CF(a);SA(a);return}function rK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+592|0;n=v+512|0;q=v+552|0;m=v+112|0;u=v+568|0;p=v+564|0;s=v+560|0;j=v+576|0;w=v+556|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56768)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(tK(d,n,f,s,l,h,j,b,u,p,m+400|0)|0){Kb[c[(c[b>>2]|0)+48>>2]&15](b,50575,50585,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>392){b=FO((b>>>2)+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+40|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=c[j>>2]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((c[b>>2]|0)==(f|0))break;b=b+4|0}a[g>>0]=a[50575+(b-m>>2)>>0]|0;j=j+4|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function sK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+432|0;j=s+424|0;b=s;r=s+416|0;m=s+408|0;p=s+400|0;k=s+428|0;n=s+404|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56768)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(tK(d,j,f,p,g,h,k,l,r,m,b+400|0)|0){b=i+8+3|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;c[j>>2]=0;JF(f,j);c[i+4>>2]=0}else{c[j>>2]=0;JF(i,j);a[b>>0]=0}if(a[k>>0]|0)DO(i,Ib[c[(c[l>>2]|0)+44>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+44>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-4|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((c[b>>2]|0)!=(k|0))break;b=b+4|0}uK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[g>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function tK(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;X=zb;zb=zb+512|0;H=X+496|0;N=X;W=X+488|0;P=X+480|0;I=X+476|0;J=X+500|0;K=X+472|0;L=X+468|0;R=X+456|0;S=X+444|0;T=X+432|0;U=X+420|0;V=X+408|0;M=X+404|0;Q=X+400|0;c[H>>2]=n;c[W>>2]=N;c[W+4>>2]=145;c[P>>2]=N;c[I>>2]=N+400;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[R+(n<<2)>>2]=0;n=n+1|0}c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[S+(n<<2)>>2]=0;n=n+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[T+(n<<2)>>2]=0;n=n+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[U+(n<<2)>>2]=0;n=n+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[V+(n<<2)>>2]=0;n=n+1|0}xK(f,g,J,K,L,R,S,T,U,M);c[m>>2]=c[l>>2];B=T+8+3|0;C=T+4|0;D=U+8+3|0;E=U+4|0;F=R+11|0;G=R+4|0;v=(h&512|0)!=0;w=S+8+3|0;x=J+3|0;y=S+4|0;z=V+8+3|0;A=V+4|0;N=0;u=0;a:while(1){if(u>>>0>=4){O=239;break}n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g){t=f;break}else{O=239;break a}else{c[e>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(g){O=239;break}else t=0}b:do switch(a[J+u>>0]|0){case 1:{if((u|0)==3)n=N;else{n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){O=44;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);O=46}break}case 0:{if((u|0)==3)n=N;else O=46;break}case 3:{n=a[B>>0]|0;n=n<<24>>24<0?c[C>>2]|0:n&255;h=a[D>>0]|0;h=h<<24>>24<0?c[E>>2]|0:h&255;if((n|0)==(0-h|0))n=N;else{o=(n|0)==0;n=c[b>>2]|0;f=c[n+12>>2]|0;g=(f|0)==(c[n+16>>2]|0);if(o|(h|0)==0){if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(o){if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){a[j>>0]=1;n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;o=(h|0)==(c[f+16>>2]|0);if((n|0)==(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){if(o)Gb[c[(c[f>>2]|0)+40>>2]&127](f)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[h>>2]|0)|0;if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){O=103;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(u>>>0<2|(N|0)!=0){f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;if(u)O=108}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){n=0;break b}f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;O=108}c:do if((O|0)==108){O=0;if((d[J+(u+-1)>>0]|0)<2){h=f;while(1){s=h<<24>>24<0;f=n;if(((s?g:S)+((s?c[y>>2]|0:h&255)<<2)|0)==(f|0)){f=h;break}if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,c[f>>2]|0)|0)){O=112;break}n=f+4|0;h=a[w>>0]|0;g=c[S>>2]|0}if((O|0)==112){O=0;f=a[w>>0]|0;g=c[S>>2]|0}o=f<<24>>24<0?g:S;s=o;q=n-s>>2;p=a[z>>0]|0;r=p<<24>>24<0;h=c[A>>2]|0;p=p&255;if(q>>>0>(r?h:p)>>>0)n=s;else{Y=(c[V>>2]|0)+(h<<2)|0;h=V+(p<<2)|0;p=r?Y:h;h=(r?Y:h)+(0-q<<2)|0;while(1){if((h|0)==(p|0))break c;if((c[h>>2]|0)!=(c[o>>2]|0)){n=s;break c}o=o+4|0;h=h+4|0}}}}while(0);o=n;h=t;d:while(1){Y=f<<24>>24<0;if((o|0)==((Y?g:S)+((Y?c[y>>2]|0:f&255)<<2)|0))break;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else break d;else{c[e>>2]=0;O=134;break}}else O=134;while(0);if((O|0)==134){O=0;if(f)break;else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[o>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}o=o+4|0;f=a[w>>0]|0;g=c[S>>2]|0}if(v?(Y=a[w>>0]|0,t=Y<<24>>24<0,(o|0)!=((t?c[S>>2]|0:S)+((t?c[y>>2]|0:Y&255)<<2)|0)):0){O=146;break a}else n=N;break}case 4:{o=0;h=t;n=t;e:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=jE(c[g>>2]|0)|0;if(JE(f,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))f=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(g){p=h;break}else{h=n;break e}else{c[e>>2]=0;n=0;O=160;break}}else O=160;while(0);if((O|0)==160){O=0;if(g){h=n;break}else p=0}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else g=jE(c[g>>2]|0)|0;if(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,g)|0){f=c[m>>2]|0;if((f|0)==(c[H>>2]|0)){yK(l,m,H);f=c[m>>2]|0}c[m>>2]=f+4;c[f>>2]=g;f=o+1|0}else{Y=a[F>>0]|0;if(!((g|0)==(c[L>>2]|0)&(o|0?((Y<<24>>24<0?c[G>>2]|0:Y&255)|0)!=0:0))){h=n;break}f=c[P>>2]|0;if((f|0)==(c[I>>2]|0)){oK(W,P,I);f=c[P>>2]|0}c[P>>2]=f+4;c[f>>2]=o;f=0}g=c[b>>2]|0;h=g+12|0;o=c[h>>2]|0;if((o|0)==(c[g+16>>2]|0))Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=o+4;jE(c[o>>2]|0)|0}o=f;h=p}n=c[P>>2]|0;if(o|0?(c[W>>2]|0)!=(n|0):0){if((n|0)==(c[I>>2]|0)){oK(W,P,I);n=c[P>>2]|0}c[P>>2]=n+4;c[n>>2]=o}f:do if((c[M>>2]|0)>0){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else{O=201;break a}else{c[e>>2]=0;O=195;break}}else O=195;while(0);if((O|0)==195){O=0;if(f){O=201;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[K>>2]|0)){O=201;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h;while(1){if((c[M>>2]|0)<=0)break f;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{O=226;break a}else{c[e>>2]=0;O=220;break}}else O=220;while(0);if((O|0)==220){O=0;if(f){O=226;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,n)|0)){O=226;break a}if((c[m>>2]|0)==(c[H>>2]|0))yK(l,m,H);n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[m>>2]|0;c[m>>2]=f+4;c[f>>2]=n;c[M>>2]=(c[M>>2]|0)+-1;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h}}while(0);if((c[m>>2]|0)==(c[l>>2]|0)){O=237;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==46){O=0;g=t;while(1){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{n=N;break g}else{c[e>>2]=0;O=60;break}}else O=60;while(0);if((O|0)==60){O=0;if(f){n=N;break g}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){n=N;break g}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);g=h}}while(0);N=n;u=u+1|0}h:do if((O|0)==44){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==103){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==146){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==201){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==226){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==237){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==239){i:do if(N|0){o=N+8+3|0;p=N+4|0;h=1;j:while(1){n=a[o>>0]|0;if(n<<24>>24<0)n=c[p>>2]|0;else n=n&255;if(h>>>0>=n>>>0)break i;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);n=c[e>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g)break;else break j;else{c[e>>2]=0;O=258;break}}else O=258;while(0);if((O|0)==258?(O=0,g):0)break;n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((a[o>>0]|0)<0)f=c[N>>2]|0;else f=N;if((n|0)!=(c[f+(h<<2)>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}h=h+1|0}c[i>>2]=c[i>>2]|4;f=0;break h}while(0);f=c[W>>2]|0;n=c[P>>2]|0;if((f|0)!=(n|0)){c[Q>>2]=0;kG(R,f,n,Q);if(!(c[Q>>2]|0)){f=1;break}else{c[i>>2]=c[i>>2]|4;f=0;break}}else f=1}while(0);wO(V);wO(U);wO(T);wO(S);jO(R);n=c[W>>2]|0;c[W>>2]=0;if(n|0)Sb[c[W+4>>2]&255](n);zb=X;return f|0}function uK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;k=n;f=b+8|0;m=f+3|0;i=a[m>>0]|0;g=i<<24>>24<0;if(g){l=c[b+4>>2]|0;h=(c[f>>2]&2147483647)+-1|0}else{l=i&255;h=1}f=e-d|0;j=f>>2;do if(f|0){if(g){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=i&255}if(vK(d,g,g+(f<<2)|0)|0){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;wK(k,d,e);m=a[k+8+3>>0]|0;l=m<<24>>24<0;CO(b,l?c[k>>2]|0:k,l?c[k+4>>2]|0:m&255)|0;wO(k);break}if((h-l|0)>>>0>>0)BO(b,h,l+j-h|0,l,l,0,0);if((a[m>>0]|0)<0)f=c[b>>2]|0;else f=b;f=f+(l<<2)|0;while(1){if((d|0)==(e|0))break;JF(f,d);f=f+4|0;d=d+4|0}c[k>>2]=0;JF(f,k);d=l+j|0;if((a[m>>0]|0)<0){c[b+4>>2]=d;break}else{a[m>>0]=d;break}}while(0);zb=n;return b|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function wK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function xK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(d,56984)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(d,56976)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function yK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function zK(a){a=a|0;CF(a);return}function AK(a){a=a|0;CF(a);SA(a);return}function BK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+416|0;q=E+336|0;k=E+328|0;b=E+224|0;l=E+400|0;j=E+112|0;D=E+396|0;r=E+408|0;s=E+405|0;t=E+404|0;A=E+384|0;B=E+372|0;C=E+360|0;o=E+356|0;p=E;u=E+352|0;v=E+344|0;w=E+348|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56736)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+32>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}DK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}EK(y,u,v,c[f+4>>2]|0,x,x+z|0,n,m,r,a[s>>0]|0,a[t>>0]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=$f(q,y,d,b,f,h)|0;if(F|0)GO(F);jO(C);jO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function CK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+176|0;p=C+156|0;B=C+152|0;u=C+164|0;v=C+161|0;w=C+160|0;y=C+140|0;z=C+128|0;A=C+116|0;l=C+112|0;n=C;q=C+108|0;r=C+104|0;s=C+100|0;IE(B,f);t=XF(B,56736)|0;i=h+11|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=a[(b?c[h>>2]|0:h)>>0]|0;o=o<<24>>24==(Ib[c[(c[t>>2]|0)+28>>2]&63](t,45)|0)<<24>>24};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}DK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;EK(x,q,r,c[f+4>>2]|0,h,h+k|0,t,o,u,a[v>>0]|0,a[w>>0]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=$f(p,x,h,b,f,g)|0;if(D|0)GO(D);jO(A);jO(z);jO(y);YF(B);zb=C;return b|0}function DK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56968)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56960)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function EK(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c[f>>2]=d;y=q+11|0;G=q+4|0;z=p+11|0;A=p+4|0;B=(g&512|0)==0;C=j+8|0;D=(r|0)>0;E=o+11|0;F=o+4|0;x=0;while(1){if((x|0)==4)break;a:do switch(a[l+x>>0]|0){case 0:{c[e>>2]=c[f>>2];break}case 1:{c[e>>2]=c[f>>2];v=Ib[c[(c[j>>2]|0)+28>>2]&63](j,32)|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v;break}case 3:{w=a[y>>0]|0;s=w<<24>>24<0;if((s?c[G>>2]|0:w&255)|0){v=a[(s?c[q>>2]|0:q)>>0]|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v}break}case 2:{t=a[z>>0]|0;s=t<<24>>24<0;t=s?c[A>>2]|0:t&255;if(!(B|(t|0)==0)){w=s?c[p>>2]|0:p;u=w+t|0;s=c[f>>2]|0;t=w;while(1){if((t|0)==(u|0))break;a[s>>0]=a[t>>0]|0;s=s+1|0;t=t+1|0}c[f>>2]=s}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;u=h;while(1){if(u>>>0>=i>>>0)break;s=a[u>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[C>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(D){v=r;while(1){s=(v|0)>0;if(!(u>>>0>h>>>0&s))break;w=u+-1|0;H=a[w>>0]|0;s=c[f>>2]|0;c[f>>2]=s+1;a[s>>0]=H;v=v+-1|0;u=w}if(s)w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;else w=0;s=v;while(1){v=c[f>>2]|0;c[f>>2]=v+1;if((s|0)<=0)break;a[v>>0]=w;s=s+-1|0}a[v>>0]=m}b:do if((u|0)==(h|0)){w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=w}else{H=a[E>>0]|0;s=H<<24>>24<0;if(!((s?c[F>>2]|0:H&255)|0))s=-1;else s=a[(s?c[o>>2]|0:o)>>0]|0;v=0;w=0;while(1){if((u|0)==(h|0))break b;if((w|0)==(s|0)){H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=n;v=v+1|0;H=a[E>>0]|0;s=H<<24>>24<0;if(v>>>0<(s?c[F>>2]|0:H&255)>>>0){s=a[(s?c[o>>2]|0:o)+v>>0]|0;s=s<<24>>24==127?-1:s<<24>>24;w=0}else{s=w;w=0}}H=u+-1|0;J=a[H>>0]|0;I=c[f>>2]|0;c[f>>2]=I+1;a[I>>0]=J;w=w+1|0;u=H}}while(0);s=c[f>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=a[t>>0]|0;a[t>>0]=a[s>>0]|0;a[s>>0]=J;t=t+1|0}break}default:{}}while(0);x=x+1|0}h=a[y>>0]|0;s=h<<24>>24<0;h=s?c[G>>2]|0:h&255;if(h>>>0>1){J=s?c[q>>2]|0:q;t=J+h|0;s=c[f>>2]|0;h=J;while(1){h=h+1|0;if((h|0)==(t|0))break;a[s>>0]=a[h>>0]|0;s=s+1|0}c[f>>2]=s}switch((g&176)<<24>>24){case 32:{c[e>>2]=c[f>>2];break}case 16:break;default:c[e>>2]=d}return}function FK(a){a=a|0;CF(a);return}function GK(a){a=a|0;CF(a);SA(a);return}function HK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+992|0;q=E+912|0;k=E+904|0;b=E+800|0;l=E+984|0;j=E+400|0;D=E+980|0;r=E+988|0;s=E+976|0;t=E+972|0;A=E+960|0;B=E+948|0;C=E+936|0;o=E+932|0;p=E;u=E+928|0;v=E+920|0;w=E+924|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b<<2)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56768)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+48>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}JK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}KK(y,u,v,c[f+4>>2]|0,x,x+(z<<2)|0,n,m,r,c[s>>2]|0,c[t>>2]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=IH(q,y,d,b,f,h)|0;if(F|0)GO(F);wO(C);wO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function IK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+480|0;p=C+464|0;B=C+460|0;u=C+468|0;v=C+456|0;w=C+452|0;y=C+440|0;z=C+428|0;A=C+416|0;l=C+412|0;n=C;q=C+408|0;r=C+404|0;s=C+400|0;IE(B,f);t=XF(B,56768)|0;i=h+8+3|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=c[(b?c[h>>2]|0:h)>>2]|0;o=(o|0)==(Ib[c[(c[t>>2]|0)+44>>2]&63](t,45)|0)};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}JK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;KK(x,q,r,c[f+4>>2]|0,h,h+(k<<2)|0,t,o,u,c[v>>2]|0,c[w>>2]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=IH(p,x,h,b,f,g)|0;if(D|0)GO(D);wO(A);wO(z);jO(y);YF(B);zb=C;return b|0}function JK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56984)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56976)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function KK(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[e>>2]=b;z=p+8+3|0;G=p+4|0;A=o+8+3|0;B=o+4|0;C=(f&512|0)==0;D=(q|0)>0;E=n+11|0;F=n+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(a[k+y>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w;break}case 3:{x=a[z>>0]|0;r=x<<24>>24<0;if((r?c[G>>2]|0:x&255)|0){w=c[(r?c[p>>2]|0:p)>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w}break}case 2:{v=a[A>>0]|0;r=v<<24>>24<0;v=r?c[B>>2]|0:v&255;if(!(C|(v|0)==0)){u=r?c[o>>2]|0:o;s=u+(v<<2)|0;t=c[e>>2]|0;r=t;while(1){if((u|0)==(s|0))break;c[r>>2]=c[u>>2];r=r+4|0;u=u+4|0}c[e>>2]=t+(v<<2)}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;r=g;while(1){if(r>>>0>=h>>>0)break;if(!(Jb[c[(c[i>>2]|0)+12>>2]&63](i,2048,c[r>>2]|0)|0))break;r=r+4|0}if(D){u=q;while(1){t=(u|0)>0;if(!(r>>>0>g>>>0&t))break;x=r+-4|0;v=c[x>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=v;u=u+-1|0;r=x}if(t)w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;else w=0;v=c[e>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;c[v>>2]=w;u=u+-1|0;v=t}c[e>>2]=t;c[v>>2]=l;t=r}else t=r;if((t|0)==(g|0)){w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;x=c[e>>2]|0;r=x+4|0;c[e>>2]=r;c[x>>2]=w}else{x=a[E>>0]|0;r=x<<24>>24<0;if(!((r?c[F>>2]|0:x&255)|0))r=-1;else r=a[(r?c[n>>2]|0:n)>>0]|0;u=0;v=0;x=t;while(1){if((x|0)==(g|0))break;t=c[e>>2]|0;if((v|0)==(r|0)){w=t+4|0;c[e>>2]=w;c[t>>2]=m;t=u+1|0;u=a[E>>0]|0;r=u<<24>>24<0;if(t>>>0<(r?c[F>>2]|0:u&255)>>>0){r=a[(r?c[n>>2]|0:n)+t>>0]|0;r=r<<24>>24==127?-1:r<<24>>24;u=t;v=0;t=w}else{r=v;u=t;v=0;t=w}}w=x+-4|0;H=c[w>>2]|0;c[e>>2]=t+4;c[t>>2]=H;v=v+1|0;x=w}r=c[e>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;H=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=H;s=s+4|0}break}default:{}}while(0);y=y+1|0}r=a[z>>0]|0;g=r<<24>>24<0;r=g?c[G>>2]|0:r&255;if(r>>>0>1){s=c[p>>2]|0;u=g?s+4|0:G;r=(g?s:p)+(r<<2)|0;s=c[e>>2]|0;t=r-u|0;g=s;while(1){if((u|0)==(r|0))break;c[g>>2]=c[u>>2];g=g+4|0;u=u+4|0}c[e>>2]=s+(t>>>2<<2)}switch((f&176)<<24>>24){case 32:{c[d>>2]=c[e>>2];break}case 16:break;default:c[d>>2]=b}return}function LK(a){a=a|0;CF(a);return}function MK(a){a=a|0;CF(a);SA(a);return}function NK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function OK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0}k=a[h+11>>0]|0;l=k<<24>>24<0;d=l?c[h>>2]|0:h;h=d+(l?c[h+4>>2]|0:k&255)|0;while(1){if(d>>>0>=h>>>0)break;sO(i,a[d>>0]|0);d=d+1|0}d=(a[i+11>>0]|0)<0?c[i>>2]|0:i;e=Oy((e|0)==-1?-1:e<<1,f,g,d)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break;c[b+(h<<2)>>2]=0;h=h+1|0}h=d+(Qy(e)|0)|0;while(1){if(d>>>0>=h>>>0)break;sO(b,a[d>>0]|0);d=d+1|0}jO(i);zb=j;return}function PK(a,b){a=a|0;b=b|0;return}function QK(a){a=a|0;CF(a);return}function RK(a){a=a|0;CF(a);SA(a);return}function SK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function TK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+176|0;p=t+168|0;q=t;r=t+164|0;s=t+160|0;n=t+128|0;l=t+152|0;o=t+144|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0}c[l+4>>2]=0;c[l>>2]=19072;j=a[h+8+3>>0]|0;k=j<<24>>24<0;d=k?c[h>>2]|0:h;j=d+((k?c[h+4>>2]|0:j&255)<<2)|0;k=q+32|0;h=d;d=0;while(1){if(!((d|0)!=2&h>>>0>>0))break;c[s>>2]=h;i=Qb[c[(c[l>>2]|0)+12>>2]&15](l,p,h,j,s,q,k,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=8;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;sO(n,a[d>>0]|0);d=d+1|0}h=c[s>>2]|0;d=i}if((m|0)==8)nJ(0);CF(l);i=(a[n+11>>0]|0)<0?c[n>>2]|0:n;h=Oy((e|0)==-1?-1:e<<1,f,g,i)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0}c[o+4>>2]=0;c[o>>2]=19120;j=i+(Qy(h)|0)|0;k=j;l=q+128|0;h=i;d=0;while(1){if(!((d|0)!=2&h>>>0>>0)){m=23;break}c[s>>2]=h;i=Qb[c[(c[o>>2]|0)+16>>2]&15](o,p,h,(k-h|0)>32?h+32|0:j,s,q,l,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=19;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;DO(b,c[d>>2]|0);d=d+4|0}h=c[s>>2]|0;d=i}if((m|0)==19)nJ(0);else if((m|0)==23){CF(o);jO(n);zb=t;return}}function UK(a,b){a=a|0;b=b|0;return}function VK(a){a=a|0;CF(a);SA(a);return}function WK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=dL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function XK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=cL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function YK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function ZK(a){a=a|0;return 0}function _K(a){a=a|0;return 0}function $K(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return bL(c,d,e,1114111,0)|0}function aL(a){a=a|0;return 4}function bL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;n=0;a:while(1){if(!(n>>>0>>0&g>>>0>>0))break;k=a[g>>0]|0;m=k&255;do if(k<<24>>24<=-1){if((k&255)<194)break a;if((k&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((k&255)<240){if((o-g|0)<3)break a;i=a[g+1>>0]|0;h=a[g+2>>0]|0;switch(k<<24>>24){case -32:{if((i&-32)<<24>>24!=-96)break a;break}case -19:{if((i&-32)<<24>>24!=-128)break a;break}default:if((i&-64)<<24>>24!=-128)break a}h=h&255;if((h&192|0)!=128)break a;if(((i&63)<<6|m<<12&61440|h&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((k&255)>=245)break a;if((o-g|0)<4)break a;l=a[g+1>>0]|0;h=a[g+2>>0]|0;j=a[g+3>>0]|0;switch(k<<24>>24){case -16:{if((l+112&255)>=48)break a;break}case -12:{if((l&-16)<<24>>24!=-128)break a;break}default:if((l&-64)<<24>>24!=-128)break a}i=h&255;if((i&192|0)!=128)break a;h=j&255;if((h&192|0)!=128)break a;if(((l&63)<<12|m<<18&1835008|i<<6&4032|h&63)>>>0>f>>>0)break a;else g=g+4|0}else{if(m>>>0>f>>>0)break a;g=g+1|0}while(0);n=n+1|0}return g-b|0}function cL(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;if(k&4){b=c[f>>2]|0;g=e;if((((g-b|0)>2?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0)c[f>>2]=b+3}else g=e;a:while(1){p=c[f>>2]|0;if(p>>>0>=e>>>0){b=0;break}q=c[i>>2]|0;if(q>>>0>=h>>>0){b=1;break}n=a[p>>0]|0;b=n&255;do if(n<<24>>24>-1)if(b>>>0>j>>>0){b=2;break a}else k=1;else{if((n&255)<194){b=2;break a}if((n&255)<224){if((g-p|0)<2){b=1;break a}k=d[p+1>>0]|0;if((k&192|0)!=128){b=2;break a}b=k&63|b<<6&1984;if(b>>>0>j>>>0){b=2;break a}else{k=2;break}}if((n&255)<240){if((g-p|0)<3){b=1;break a}l=a[p+1>>0]|0;k=a[p+2>>0]|0;switch(n<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){b=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){b=2;break a}break}default:if((l&-64)<<24>>24!=-128){b=2;break a}}k=k&255;if((k&192|0)!=128){b=2;break a}b=(l&63)<<6|b<<12&61440|k&63;if(b>>>0>j>>>0){b=2;break a}else{k=3;break}}if((n&255)>=245){b=2;break a}if((g-p|0)<4){b=1;break a}o=a[p+1>>0]|0;k=a[p+2>>0]|0;m=a[p+3>>0]|0;switch(n<<24>>24){case -16:{if((o+112&255)>=48){b=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){b=2;break a}break}default:if((o&-64)<<24>>24!=-128){b=2;break a}}l=k&255;if((l&192|0)!=128){b=2;break a}k=m&255;if((k&192|0)!=128){b=2;break a}b=(o&63)<<12|b<<18&1835008|l<<6&4032|k&63;if(b>>>0>j>>>0){b=2;break a}else k=4}while(0);c[q>>2]=b;c[f>>2]=p+k;c[i>>2]=(c[i>>2]|0)+4}return b|0}function dL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;c[e>>2]=b;c[h>>2]=f;l=g;if(j&2)if((l-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;while(1){if(b>>>0>=d>>>0){b=0;break a}f=c[b>>2]|0;if(f>>>0>i>>>0|(f&-2048|0)==55296){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((l-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;g=l-b|0;if(f>>>0<65536){if((g|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((g|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((l-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b}}while(0);return b|0}function eL(a){a=a|0;CF(a);SA(a);return}function fL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function gL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function iL(a){a=a|0;return 1}function jL(a){a=a|0;return 1}function kL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function lL(a){a=a|0;return 1}function mL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+16|0;p=q;n=q+8|0;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}c[j>>2]=h;c[g>>2]=e;m=i;o=b+8|0;a:while(1){if((h|0)==(i|0)|(e|0)==(f|0)){k=36;break}r=d;l=c[r+4>>2]|0;b=p;c[b>>2]=c[r>>2];c[b+4>>2]=l;b=ez(c[o>>2]|0)|0;l=Uz(h,g,k-e>>2,m-h|0,d)|0;if(b|0)ez(b)|0;switch(l|0){case -1:{k=10;break a}case 0:{e=1;k=33;break a}default:{}}h=(c[j>>2]|0)+l|0;c[j>>2]=h;if((h|0)==(i|0)){k=34;break}if((k|0)==(f|0)){k=f;e=c[g>>2]|0}else{h=ez(c[o>>2]|0)|0;e=_x(n,0,d)|0;if(h|0)ez(h)|0;if((e|0)==-1){e=2;k=32;break}if(e>>>0>(m-(c[j>>2]|0)|0)>>>0){e=1;k=32;break}h=n;while(1){if(!e)break;l=a[h>>0]|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r>>0]=l;h=h+1|0;e=e+-1|0}e=(c[g>>2]|0)+4|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}h=c[j>>2]|0}}if((k|0)==10){c[j>>2]=h;while(1){if((e|0)==(c[g>>2]|0))break;r=c[e>>2]|0;k=ez(c[o>>2]|0)|0;h=_x(h,r,p)|0;if(k|0)ez(k)|0;if((h|0)==-1)break;h=(c[j>>2]|0)+h|0;c[j>>2]=h;e=e+4|0}c[g>>2]=e;e=2;k=33}else if((k|0)==32)k=33;else if((k|0)==34){e=c[g>>2]|0;k=36}if((k|0)!=33)if((k|0)==36)e=(e|0)!=(f|0)&1;zb=q;return e|0}function nL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=zb;zb=zb+16|0;o=p;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}c[j>>2]=h;c[g>>2]=e;m=i;n=b+8|0;while(1){if((h|0)==(i|0)|(e|0)==(f|0)){b=33;break}q=d;l=c[q+4>>2]|0;b=o;c[b>>2]=c[q>>2];c[b+4>>2]=l;b=ez(c[n>>2]|0)|0;l=Rz(h,g,k-e|0,m-h>>2,d)|0;if(b|0)ez(b)|0;if((l|0)==-1){b=10;break}h=(c[j>>2]|0)+(l<<2)|0;c[j>>2]=h;if((h|0)==(i|0)){b=30;break}e=c[g>>2]|0;if((k|0)==(f|0))k=f;else{k=ez(c[n>>2]|0)|0;e=Xy(h,e,1,d)|0;if(k|0)ez(k)|0;if(e|0){e=2;b=29;break}c[j>>2]=(c[j>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}h=c[j>>2]|0}}do if((b|0)==10){a:while(1){c[j>>2]=h;if((e|0)==(c[g>>2]|0)){b=19;break}b=ez(c[n>>2]|0)|0;h=Xy(h,e,k-e|0,o)|0;if(b|0)ez(b)|0;switch(h|0){case -1:{b=15;break a}case -2:{b=16;break a}case 0:{h=1;break}default:{}}e=e+h|0;h=(c[j>>2]|0)+4|0}if((b|0)==15){c[g>>2]=e;e=2;b=29;break}else if((b|0)==16){c[g>>2]=e;e=1;b=29;break}else if((b|0)==19){c[g>>2]=e;e=(e|0)!=(f|0)&1;b=29;break}}else if((b|0)==30){e=c[g>>2]|0;b=33}while(0);if((b|0)!=29)if((b|0)==33)e=(e|0)!=(f|0)&1;zb=p;return e|0}function oL(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=zb;zb=zb+16|0;h=i;c[g>>2]=e;e=ez(c[b+8>>2]|0)|0;b=_x(h,0,d)|0;if(e|0)ez(e)|0;a:do if((b+1|0)>>>0>=2){b=b+-1|0;if(b>>>0>(f-(c[g>>2]|0)|0)>>>0)b=1;else while(1){if(!b){b=0;break a}d=a[h>>0]|0;f=c[g>>2]|0;c[g>>2]=f+1;a[f>>0]=d;h=h+1|0;b=b+-1|0}}else b=2;while(0);zb=i;return b|0}function pL(a){a=a|0;var b=0,d=0;a=a+8|0;b=ez(c[a>>2]|0)|0;d=pz(0,0,4)|0;if(b|0)ez(b)|0;if(!d){a=c[a>>2]|0;if(!a)a=1;else{b=ez(a)|0;a=hy()|0;if(b|0)ez(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function qL(a){a=a|0;return 0}function rL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=e;j=a+8|0;h=0;i=0;a:while(1){if((d|0)==(e|0)|h>>>0>=f>>>0)break;g=ez(c[j>>2]|0)|0;a=Qz(d,k-d|0,b)|0;if(g|0)ez(g)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}h=h+1|0;i=a+i|0;d=d+a|0}return i|0}function sL(a){a=a|0;var b=0;a=c[a+8>>2]|0;if(a){b=ez(a)|0;a=hy()|0;if(b)ez(b)|0}else a=1;return a|0}function tL(a){a=a|0;var b=0,d=0;c[a>>2]=19168;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(_F()|0))Vy(c[b>>2]|0);CF(a);return}function uL(a){a=a|0;tL(a);SA(a);return}function vL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=EL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function wL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=DL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function xL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function yL(a){a=a|0;return 0}function zL(a){a=a|0;return 0}function AL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return CL(c,d,e,1114111,0)|0}function BL(a){a=a|0;return 4}function CL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;h=0;a:while(1){if(!(h>>>0>>0&g>>>0>>0))break;l=a[g>>0]|0;n=l&255;if(n>>>0>f>>>0)break;do if(l<<24>>24<=-1){if((l&255)<194)break a;if((l&255)<224){if((o-g|0)<2)break a;i=d[g+1>>0]|0;if((i&192|0)!=128)break a;if((i&63|n<<6&1984)>>>0>f>>>0)break a;else{g=g+2|0;break}}if((l&255)<240){if((o-g|0)<3)break a;j=a[g+1>>0]|0;i=a[g+2>>0]|0;switch(l<<24>>24){case -32:{if((j&-32)<<24>>24!=-96)break a;break}case -19:{if((j&-32)<<24>>24!=-128)break a;break}default:if((j&-64)<<24>>24!=-128)break a}i=i&255;if((i&192|0)!=128)break a;if(((j&63)<<6|n<<12&61440|i&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((l&255)>=245)break a;if((e-h|0)>>>0<2|(o-g|0)<4)break a;m=a[g+1>>0]|0;i=a[g+2>>0]|0;k=a[g+3>>0]|0;switch(l<<24>>24){case -16:{if((m+112&255)>=48)break a;break}case -12:{if((m&-16)<<24>>24!=-128)break a;break}default:if((m&-64)<<24>>24!=-128)break a}j=i&255;if((j&192|0)!=128)break a;i=k&255;if((i&192|0)!=128)break a;if(((m&63)<<12|n<<18&1835008|j<<6&4032|i&63)>>>0>f>>>0)break a;else{h=h+1|0;g=g+4|0}}else g=g+1|0;while(0);h=h+1|0}return g-b|0}function DL(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[g>>2]=e;c[j>>2]=h;if(l&4){e=c[g>>2]|0;h=f;if((((h-e|0)>2?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0)c[g>>2]=e+3}else h=f;s=i;a:while(1){n=c[g>>2]|0;if(n>>>0>=f>>>0){e=0;break}r=c[j>>2]|0;if(r>>>0>=i>>>0){e=1;break}m=a[n>>0]|0;q=m&255;if(q>>>0>k>>>0){e=2;break}do if(m<<24>>24>-1){b[r>>1]=m&255;e=n+1|0}else{if((m&255)<194){e=2;break a}if((m&255)<224){if((h-n|0)<2){e=1;break a}e=d[n+1>>0]|0;if((e&192|0)!=128){e=2;break a}e=e&63|q<<6&1984;if(e>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+2|0;break}if((m&255)<240){if((h-n|0)<3){e=1;break a}l=a[n+1>>0]|0;e=a[n+2>>0]|0;switch(m<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){e=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){e=2;break a}break}default:if((l&-64)<<24>>24!=-128){e=2;break a}}e=e&255;if((e&192|0)!=128){e=2;break a}e=(l&63)<<6|q<<12|e&63;if((e&65535)>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+3|0;break}if((m&255)>=245){e=2;break a}if((h-n|0)<4){e=1;break a}o=a[n+1>>0]|0;e=a[n+2>>0]|0;l=a[n+3>>0]|0;switch(m<<24>>24){case -16:{if((o+112&255)>=48){e=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){e=2;break a}break}default:if((o&-64)<<24>>24!=-128){e=2;break a}}p=e&255;if((p&192|0)!=128){e=2;break a}e=l&255;if((e&192|0)!=128){e=2;break a}if((s-r|0)<4){e=1;break a}n=q&7;l=o&255;m=p<<6;e=e&63;if((l<<12&258048|n<<18|m&4032|e)>>>0>k>>>0){e=2;break a}b[r>>1]=l<<2&60|p>>>4&3|((l>>>4&3|n<<2)<<6)+16320|55296;r=r+2|0;c[j>>2]=r;b[r>>1]=e|m&960|56320;e=(c[g>>2]|0)+4|0}while(0);c[g>>2]=e;c[j>>2]=(c[j>>2]|0)+2}return e|0}function EL(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;while(1){if(d>>>0>=f>>>0){d=0;break a}h=b[d>>1]|0;m=h&65535;if(m>>>0>k>>>0){d=2;break a}do if((h&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=h}else{if((h&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;h=e[d>>1]|0;if((h&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}l=m&960;if(((l<<10)+65536|m<<10&64512|h&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(l>>>6)+1|0;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=d>>>2|240;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>2&15|d<<4&48|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m<<4&48|h>>>6&15|128;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=h&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d}}while(0);return d|0}function FL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=19216;e=a+8|0;f=a+12|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0?(h=b+4|0,g=c[h>>2]|0,c[h>>2]=g+-1,(g|0)==0):0)Sb[c[(c[b>>2]|0)+8>>2]&255](b);d=d+1|0}jO(a+144|0);HL(e);CF(a);return}function GL(a){a=a|0;FL(a);SA(a);return}function HL(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=d;do if(d|0){c[b+4>>2]=e;if((d|0)==(b+16|0)){a[b+128>>0]=0;break}else{Pf(d,(c[b+8>>2]|0)-e|0);break}}while(0);return}function IL(b){b=b|0;var d=0;c[b>>2]=19236;d=c[b+8>>2]|0;if(d|0?a[b+12>>0]|0:0)vB(d);CF(b);return}function JL(a){a=a|0;IL(a);SA(a);return}function KL(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(TL()|0)+((b&255)<<2)|0;b=c[b>>2]&255}return b|0}function LL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=TL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function ML(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(SL()|0)+(b<<24>>24<<2)|0;b=c[b>>2]&255}return b|0}function NL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=SL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function OL(a,b){a=a|0;b=b|0;return b|0}function PL(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((c|0)==(d|0))break;a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}return d|0}function QL(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function RL(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;while(1){if((c|0)==(d|0))break;b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;f=f+1|0;c=c+1|0}return d|0}function SL(){var a=0;a=jy()|0;return c[a>>2]|0}function TL(){var a=0;a=ky()|0;return c[a>>2]|0}function UL(){var a=0;a=gy()|0;return c[a>>2]|0}function VL(a){a=a|0;c[a>>2]=19288;jO(a+12|0);CF(a);return}function WL(a){a=a|0;VL(a);SA(a);return}function XL(b){b=b|0;return a[b+8>>0]|0}function YL(b){b=b|0;return a[b+9>>0]|0}function ZL(a,b){a=a|0;b=b|0;fO(a,b+12|0);return}function _L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51258,Yf(51258)|0);return}function $L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51252,Yf(51252)|0);return}function aM(a){a=a|0;c[a>>2]=19328;jO(a+16|0);CF(a);return}function bM(a){a=a|0;aM(a);SA(a);return}function cM(a){a=a|0;return c[a+8>>2]|0}function dM(a){a=a|0;return c[a+12>>2]|0}function eM(a,b){a=a|0;b=b|0;fO(a,b+16|0);return}function fM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19384,JI(19384)|0);return}function gM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19360,JI(19360)|0);return}function hM(a){a=a|0;CF(a);SA(a);return}function iM(a){a=a|0;CF(a);SA(a);return}function jM(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128){a=(UL()|0)+(d<<1)|0;a=(b[a>>1]&c)<<16>>16!=0}else a=0;return a|0}function kM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;while(1){if((d|0)==(f|0))break;if((c[d>>2]|0)>>>0<128){a=UL()|0;a=e[a+(c[d>>2]<<1)>>1]|0}else a=0;b[g>>1]=a;g=g+2|0;d=d+4|0}return f|0}function lM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0<128?(a=UL()|0,(b[a+(c[e>>2]<<1)>>1]&d)<<16>>16):0)break;e=e+4|0}return e|0}function mM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0>=128)break;a=UL()|0;if(!((b[a+(c[e>>2]<<1)>>1]&d)<<16>>16))break;e=e+4|0}return e|0}function nM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(TL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function oM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=TL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function pM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(SL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=SL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function rM(a,b){a=a|0;b=b|0;return b<<24>>24|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;while(1){if((d|0)==(e|0))break;c[f>>2]=a[d>>0];f=f+4|0;d=d+1|0}return e|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=(e-d|0)>>>2;b=g;g=d;while(1){if((g|0)==(e|0))break;i=c[g>>2]|0;a[b>>0]=i>>>0<128?i&255:f;b=b+1|0;g=g+4|0}return d+(h<<2)|0}function vM(a){a=a|0;CF(a);SA(a);return}function wM(a){a=a|0;CF(a);SA(a);return}function xM(a){a=a|0;CF(a);SA(a);return}function yM(a){a=a|0;c[a>>2]=19644;return}function zM(a){a=a|0;c[a>>2]=19680;return}function AM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+4>>2]=f+-1;c[b>>2]=19236;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(!d){e=UL()|0;c[f>>2]=e}return}function BM(a,b){a=a|0;b=b|0;var d=0;c[a+4>>2]=b+-1;c[a>>2]=19216;b=a+8|0;CM(b,28);d=a+144|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,49197,Yf(49197)|0);c[a+12>>2]=c[b>>2];DM();EM(a,54968);FM();GM(a,54976);HM();IM(a,54984);JM();KM(a,55e3);LM();MM(a,55008);NM();OM(a,55016);PM();QM(a,55032);RM();SM(a,55040);TM();UM(a,55048);VM();WM(a,55072);XM();YM(a,55104);ZM();_M(a,55112);$M();aN(a,55120);bN();cN(a,55128);dN();eN(a,55136);fN();gN(a,55144);hN();iN(a,55152);jN();kN(a,55160);lN();mN(a,55168);nN();oN(a,55176);pN();qN(a,55184);rN();sN(a,55192);tN();uN(a,55200);vN();wN(a,55216);xN();yN(a,55232);zN();AN(a,55248);BN();CN(a,55264);DN();EN(a,55272);return}function CM(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d|0){RN(b,d);IN(b,d)}return}function DM(){c[13743]=0;c[13742]=17072;return}function EM(a,b){a=a|0;b=b|0;FN(a,b,aG(56720)|0);return}function FM(){c[13745]=0;c[13744]=17104;return}function GM(a,b){a=a|0;b=b|0;FN(a,b,aG(56728)|0);return}function HM(){AM(54984,0,0,1);return}function IM(a,b){a=a|0;b=b|0;FN(a,b,aG(56736)|0);return}function JM(){c[13751]=0;c[13750]=19432;return}function KM(a,b){a=a|0;b=b|0;FN(a,b,aG(56768)|0);return}function LM(){c[13753]=0;c[13752]=19500;return}function MM(a,b){a=a|0;b=b|0;FN(a,b,aG(57040)|0);return}function NM(){QN(55016,1);return}function OM(a,b){a=a|0;b=b|0;FN(a,b,aG(57048)|0);return}function PM(){c[13759]=0;c[13758]=19548;return}function QM(a,b){a=a|0;b=b|0;FN(a,b,aG(57056)|0);return}function RM(){c[13761]=0;c[13760]=19596;return}function SM(a,b){a=a|0;b=b|0;FN(a,b,aG(57064)|0);return}function TM(){PN(55048,1);return}function UM(a,b){a=a|0;b=b|0;FN(a,b,aG(56752)|0);return}function VM(){ON(55072,1);return}function WM(a,b){a=a|0;b=b|0;FN(a,b,aG(56776)|0);return}function XM(){c[13777]=0;c[13776]=17136;return}function YM(a,b){a=a|0;b=b|0;FN(a,b,aG(56760)|0);return}function ZM(){c[13779]=0;c[13778]=17200;return}function _M(a,b){a=a|0;b=b|0;FN(a,b,aG(56784)|0);return}function $M(){c[13781]=0;c[13780]=17264;return}function aN(a,b){a=a|0;b=b|0;FN(a,b,aG(56792)|0);return}function bN(){c[13783]=0;c[13782]=17316;return}function cN(a,b){a=a|0;b=b|0;FN(a,b,aG(56800)|0);return}function dN(){c[13785]=0;c[13784]=18672;return}function eN(a,b){a=a|0;b=b|0;FN(a,b,aG(56960)|0);return}function fN(){c[13787]=0;c[13786]=18728;return}function gN(a,b){a=a|0;b=b|0;FN(a,b,aG(56968)|0);return}function hN(){c[13789]=0;c[13788]=18784;return}function iN(a,b){a=a|0;b=b|0;FN(a,b,aG(56976)|0);return}function jN(){c[13791]=0;c[13790]=18840;return}function kN(a,b){a=a|0;b=b|0;FN(a,b,aG(56984)|0);return}function lN(){c[13793]=0;c[13792]=18896;return}function mN(a,b){a=a|0;b=b|0;FN(a,b,aG(56992)|0);return}function nN(){c[13795]=0;c[13794]=18924;return}function oN(a,b){a=a|0;b=b|0;FN(a,b,aG(57e3)|0);return}function pN(){c[13797]=0;c[13796]=18952;return}function qN(a,b){a=a|0;b=b|0;FN(a,b,aG(57008)|0);return}function rN(){c[13799]=0;c[13798]=18980;return}function sN(a,b){a=a|0;b=b|0;FN(a,b,aG(57016)|0);return}function tN(){c[13801]=0;c[13800]=19412;yM(55208);c[13800]=17368;c[13802]=17416;return}function uN(a,b){a=a|0;b=b|0;FN(a,b,aG(56868)|0);return}function vN(){c[13805]=0;c[13804]=19412;zM(55224);c[13804]=17452;c[13806]=17500;return}function wN(a,b){a=a|0;b=b|0;FN(a,b,aG(56936)|0);return}function xN(){var a=0;c[13809]=0;c[13808]=19412;a=_F()|0;c[13810]=a;c[13808]=18624;return}function yN(a,b){a=a|0;b=b|0;FN(a,b,aG(56944)|0);return}function zN(){var a=0;c[13813]=0;c[13812]=19412;a=_F()|0;c[13814]=a;c[13812]=18648;return}function AN(a,b){a=a|0;b=b|0;FN(a,b,aG(56952)|0);return}function BN(){c[13817]=0;c[13816]=19008;return}function CN(a,b){a=a|0;b=b|0;FN(a,b,aG(57024)|0);return}function DN(){c[13819]=0;c[13818]=19040;return}function EN(a,b){a=a|0;b=b|0;FN(a,b,aG(57032)|0);return}function FN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=b+4|0;c[f>>2]=(c[f>>2]|0)+1;f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0>d>>>0)a=f;else{GN(f,d+1|0);a=f;e=c[f>>2]|0}e=c[e+(d<<2)>>2]|0;if(e|0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+-1,(f|0)==0):0)Sb[c[(c[e>>2]|0)+8>>2]&255](e);c[(c[a>>2]|0)+(d<<2)>>2]=b;return}function GN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else HN(a,b-e|0);return}function HN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=JN(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;KN(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+16|0);LN(f,b);MN(a,f);NN(f);break}}else IN(a,b);while(0);zb=i;return}function IN(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function JN(a){a=a|0;return 1073741823}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if(d>>>0<29&(a[g>>0]|0)==0){a[g>>0]=1;break}else{f=tB(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function LN(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function MN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function NN(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;while(1){if((f|0)==(d|0))break;g=f+-4|0;c[e>>2]=g;f=g}e=c[b>>2]|0;f=e;do if(e|0){d=c[b+16>>2]|0;if((e|0)==(d|0)){a[d+112>>0]=0;break}else{Pf(e,(c[b+12>>2]|0)-f|0);break}}while(0);return}function ON(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19328;c[a+8>>2]=46;c[a+12>>2]=44;b=a+16|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0}return}function PN(b,d){b=b|0;d=d|0;c[b+4>>2]=d+-1;c[b>>2]=19288;a[b+8>>0]=46;a[b+9>>0]=44;d=b+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}return}function QN(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19168;b=_F()|0;c[a+8>>2]=b;return}function RN(b,d){b=b|0;d=d|0;var e=0;if((JN(b)|0)>>>0>>0)EO(b);e=b+128|0;if(d>>>0<29&(a[e>>0]|0)==0){a[e>>0]=1;e=b+16|0}else e=tB(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function SN(){if((a[55280]|0)==0?nB(55280)|0:0){TN()|0;c[14269]=57072;pB(55280)}return c[14269]|0}function TN(){UN();c[14268]=55288;return 57072}function UN(){BM(55288,1);return}function VN(){WN(57080,SN()|0);return 57080}function WN(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;b=b+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function XN(){if((a[55448]|0)==0?nB(55448)|0:0){VN()|0;c[14271]=57080;pB(55448)}return c[14271]|0}function YN(a){a=a|0;var b=0;b=XN()|0;b=c[b>>2]|0;c[a>>2]=b;a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function ZN(a){a=a|0;return}function _N(a){a=a|0;var b=0,d=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(d=c[b>>2]|0,c[b>>2]=d+-1,(d|0)!=0):0))Sb[c[(c[a>>2]|0)+16>>2]&255](a);return}function $N(a,b,d){a=a|0;b=b|0;d=d|0;do{}while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Sb[d&255](b);c[a>>2]=-1}return}function aO(){ua()}function bO(a,b){a=a|0;b=b|0;var d=0,e=0;e=Qy(b)|0;d=tB(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=cO(d)|0;_O(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function cO(a){a=a|0;return a+12|0}function dO(a,b){a=a|0;b=b|0;c[a>>2]=16372;bO(a+4|0,b);return}function eO(a){a=a|0;ua()}function fO(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)gO(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}return}function gO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(e>>>0>4294967279)eO(b);if(e>>>0<11)a[b+11>>0]=e;else{i=e+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;b=h}VD(b,d,e)|0;a[f>>0]=0;bg(b+e|0,f);zb=g;return}function hO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(d>>>0>4294967279)eO(b);if(d>>>0<11)a[b+11>>0]=d;else{i=d+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=d;b=h}iO(b,d,e)|0;a[f>>0]=0;bg(b+d|0,f);zb=g;return}function iO(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)aP(a|0,(cg(c)|0)&255|0,b|0)|0;return a|0}function jO(b){b=b|0;if((a[b+11>>0]|0)<0)Pf(c[b>>2]|0,c[b+8>>2]&2147483647);return}function kO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g)h=(c[b+8>>2]&2147483647)+-1|0;else h=10;do if(h>>>0>=e>>>0){if(g)f=c[b>>2]|0;else f=b;lO(f,d,e)|0;a[i>>0]=0;bg(f+e|0,i);if((a[j>>0]|0)<0){c[b+4>>2]=e;break}else{a[j>>0]=e;break}}else{if(g)f=c[b+4>>2]|0;else f=f&255;mO(b,h,e-h|0,f,0,f,e,d)}while(0);zb=k;return b|0}function lO(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)$O(a|0,b|0,c|0)|0;return a|0} +function nw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[(c[a+484>>2]|0)+24>>2]|0;h=c[d>>2]|0;j=d+4|0;l=c[j>>2]|0;o=d+8|0;n=c[o>>2]|0;p=d+12|0;m=c[p>>2]|0;q=d+16|0;k=c[q>>2]|0;r=d+20|0;s=c[r>>2]|0;a:do if((l|0)<=(h|0)|(n|0)>(m|0)|(k|0)>(s|0))i=h;else{i=h;b:while(1){g=c[t+(i<<2)>>2]|0;e=n;while(1){a=g+(e<<6)+(k<<1)|0;f=k;while(1){if(b[a>>1]|0)break b;if((f|0)<(s|0)){a=a+2|0;f=f+1|0}else break}if((e|0)<(m|0))e=e+1|0;else break}if((i|0)<(l|0))i=i+1|0;else{i=h;break a}}c[d>>2]=i}while(0);c:do if(!((l|0)<=(i|0)|(n|0)>(m|0)|(k|0)>(s|0))){e=l;d:while(1){h=c[t+(e<<2)>>2]|0;f=n;while(1){a=h+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break d;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((f|0)<(m|0))f=f+1|0;else break}if((e|0)>(i|0))e=e+-1|0;else break c}c[j>>2]=e;l=e}while(0);e:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=n;f:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break f;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)<(m|0))f=f+1|0;else break e}c[o>>2]=f;n=f}while(0);g:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=m;h:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break h;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)>(n|0))f=f+-1|0;else break g}c[p>>2]=f;m=f}while(0);i:do if(!((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))){f=k;j:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break j;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)<(s|0))f=f+1|0;else break i}c[q>>2]=f;k=f}while(0);k:do if((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))f=s;else{f=s;l:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break l;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)>(k|0))f=f+-1|0;else{f=s;break k}}c[r>>2]=f}while(0);r=l-i<<4;q=(m-n|0)*12|0;s=f-k<<3;s=(B(q,q)|0)+(B(r,r)|0)+(B(s,s)|0)|0;c[d+24>>2]=s;if((l|0)<(i|0)|(m|0)<(n|0)|(f|0)<(k|0)){t=0;d=d+28|0;c[d>>2]=t;return}a=0;while(1){j=c[t+(i<<2)>>2]|0;h=n;while(1){e=k;g=j+(h<<6)+(k<<1)|0;while(1){a=a+((b[g>>1]|0)!=0&1)|0;if((e|0)>=(f|0))break;else{e=e+1|0;g=g+2|0}}if((h|0)<(m|0))h=h+1|0;else break}if((i|0)<(l|0))i=i+1|0;else break}d=d+28|0;c[d>>2]=a;return}function ow(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+484|0;j=c[b>>2]|0;c[a+136>>2]=c[j+16>>2];c[a+132>>2]=c[j+20>>2];switch(c[a+88>>2]|0){case 0:{b=j+4|0;if((c[a+120>>2]|0)==3){c[b>>2]=22;return}else{c[b>>2]=23;return}}case 1:{l=a+120|0;c[j+4>>2]=(c[l>>2]|0)==3?24:25;c[j+48>>2]=0;if(!(c[j+28>>2]|0))rw(a);if(c[j+52>>2]|0)return;j=c[b>>2]|0;b=c[l>>2]|0;if((b|0)<=0)return;k=a+4|0;i=0;do{f=c[j+32+(i<<2)>>2]|0;a:do if(i){e=0;while(1){if((f|0)==(c[j+32+(e<<2)>>2]|0))break;e=e+1|0;if(e>>>0>=i>>>0){m=15;break a}}e=c[j+52+(e<<2)>>2]|0;if(!e)m=15}else m=15;while(0);if((m|0)==15){m=0;e=Jb[c[c[k>>2]>>2]&63](a,1,1024)|0;h=(f<<9)+-512|0;g=0;do{f=0;do{n=255-((d[5440+(g<<4)+f>>0]|0)<<1)|0;b=n*255|0;if((n|0)<0)b=0-((0-b|0)/(h|0)|0)|0;else b=(b|0)/(h|0)|0;c[e+(g<<6)+(f<<2)>>2]=b;f=f+1|0}while((f|0)!=16);g=g+1|0}while((g|0)!=16);b=c[l>>2]|0}c[j+52+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(b|0));return}case 2:{c[j+4>>2]=26;c[j+84>>2]=0;if(!(c[j+68>>2]|0)){b=a+112|0;g=(c[b>>2]<<1)+4|0;h=a+120|0;if((c[h>>2]|0)<=0)return;i=a+4|0;e=0;do{f=Jb[c[(c[i>>2]|0)+4>>2]&63](a,1,g)|0;c[j+68+(e<<2)>>2]=f;e=e+1|0;f=c[h>>2]|0}while((e|0)<(f|0))}else{f=a+120|0;h=f;b=a+112|0;f=c[f>>2]|0}e=(c[b>>2]<<1)+4|0;if((f|0)<=0)return;b=0;do{aP(c[j+68+(b<<2)>>2]|0,0,e|0)|0;b=b+1|0}while((b|0)<(c[h>>2]|0));return}default:{n=c[a>>2]|0;c[n+20>>2]=49;Sb[c[n>>2]&255](a);return}}}function pw(a){a=a|0;return}function qw(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Sb[c[b>>2]&255](a);return}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+484>>2]|0;d=(c[b+88>>2]|0)==1;c[m+28>>2]=d&1;l=b+120|0;e=Kb[c[(c[b+4>>2]|0)+8>>2]&15](b,1,d?766:256,c[l>>2]|0)|0;k=m+24|0;c[k>>2]=e;b=c[m+20>>2]|0;if((c[l>>2]|0)<=0)return;if(!d){d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;h=c[e+(d<<2)>>2]|0;i=f+-1|0;j=i<<1;e=0;f=(f+254|0)/(j|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+i|0)/(j|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[h+g>>0]=n;g=g+1|0}while((g|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;j=e+(d<<2)|0;c[j>>2]=(c[j>>2]|0)+255;j=c[(c[k>>2]|0)+(d<<2)>>2]|0;h=f+-1|0;i=h<<1;e=0;f=(f+254|0)/(i|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+h|0)/(i|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[j+g>>0]=n;g=g+1|0}while((g|0)!=256);f=j+255|0;e=1;do{a[j+(0-e)>>0]=a[j>>0]|0;a[j+(e+255)>>0]=a[f>>0]|0;e=e+1|0}while((e|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}function sw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[(c[b+484>>2]|0)+24>>2]|0;n=c[m>>2]|0;l=c[m+4>>2]|0;m=c[m+8>>2]|0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;h=0;do{b=k;i=c[f+(h<<2)>>2]|0;j=c[e+(h<<2)>>2]|0;while(1){a[i>>0]=(d[l+(d[j+1>>0]|0)>>0]|0)+(d[n+(d[j>>0]|0)>>0]|0)+(d[m+(d[j+2>>0]|0)>>0]|0);b=b+-1|0;if(!b)break;else{i=i+1|0;j=j+3|0}}h=h+1|0}while((h|0)!=(g|0));return}function tw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[(c[b+484>>2]|0)+24>>2]|0;p=c[b+112>>2]|0;n=c[b+120>>2]|0;if((g|0)<1|(p|0)==0)return;if((n|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,p|0)|0;b=b+1|0}while((b|0)!=(g|0));return}i=0;do{h=p;j=c[f+(i<<2)>>2]|0;k=c[e+(i<<2)>>2]|0;while(1){b=0;l=0;m=k;while(1){l=l+(d[(c[o+(b<<2)>>2]|0)+(d[m>>0]|0)>>0]|0)|0;b=b+1|0;if((b|0)==(n|0))break;else m=m+1|0}a[j>>0]=l;h=h+-1|0;if(!h)break;else{j=j+1|0;k=k+n|0}}i=i+1|0}while((i|0)!=(g|0));return}function uw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=c[b+484>>2]|0;u=c[h+24>>2]|0;v=c[u>>2]|0;t=c[u+4>>2]|0;u=c[u+8>>2]|0;q=c[b+112>>2]|0;if((g|0)<=0)return;w=h+48|0;r=h+52|0;s=h+56|0;p=h+60|0;b=c[w>>2]|0;if(!q){h=0;do{b=b+1&15;h=h+1|0}while((h|0)!=(g|0));c[w>>2]=b;return}o=0;do{l=c[r>>2]|0;m=c[s>>2]|0;n=c[p>>2]|0;h=q;i=0;j=c[f+(o<<2)>>2]|0;k=c[e+(o<<2)>>2]|0;while(1){a[j>>0]=(d[t+((c[m+(b<<6)+(i<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0)+(d[v+((c[l+(b<<6)+(i<<2)>>2]|0)+(d[k>>0]|0))>>0]|0)+(d[u+((c[n+(b<<6)+(i<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0);h=h+-1|0;if(!h)break;else{i=i+1&15;j=j+1|0;k=k+3|0}}b=b+1&15;c[w>>2]=b;o=o+1|0}while((o|0)!=(g|0));return}function vw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[b+484>>2]|0;v=c[b+120>>2]|0;w=c[b+112>>2]|0;if((g|0)<=0)return;t=u+48|0;m=u+24|0;n=(w|0)==0;if((v|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,w|0)|0;c[t>>2]=(c[t>>2]|0)+1&15;b=b+1|0}while((b|0)!=(g|0));return}h=0;do{o=f+(h<<2)|0;aP(c[o>>2]|0,0,w|0)|0;p=c[t>>2]|0;q=e+(h<<2)|0;if(!n){i=0;do{r=c[(c[m>>2]|0)+(i<<2)>>2]|0;s=c[u+52+(i<<2)>>2]|0;b=w;j=c[o>>2]|0;k=0;l=(c[q>>2]|0)+i|0;while(1){a[j>>0]=(d[j>>0]|0)+(d[r+((c[s+(p<<6)+(k<<2)>>2]|0)+(d[l>>0]|0))>>0]|0);b=b+-1|0;if(!b)break;else{j=j+1|0;k=k+1&15;l=l+v|0}}i=i+1|0}while((i|0)!=(v|0))}c[t>>2]=p+1&15;h=h+1|0}while((h|0)!=(g|0));return}function ww(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;J=c[e+484>>2]|0;K=c[e+120>>2]|0;L=c[e+112>>2]|0;y=c[e+336>>2]|0;if((h|0)<=0)return;z=(K|0)>0;A=J+84|0;C=J+24|0;D=J+16|0;E=(L|0)==0;F=L+-1|0;G=B(F,K)|0;H=0-K|0;I=L+1|0;x=0;do{v=g+(x<<2)|0;aP(c[v>>2]|0,0,L|0)|0;a:do if(z){w=f+(x<<2)|0;if(E){i=(c[A>>2]|0)==0;e=0;while(1){w=c[J+68+(e<<2)>>2]|0;b[(i?w:w+(I<<1)|0)>>1]=0;e=e+1|0;if((e|0)==(K|0))break a}}r=0;do{e=(c[w>>2]|0)+r|0;i=c[v>>2]|0;if(!(c[A>>2]|0)){s=K;t=1;u=c[J+68+(r<<2)>>2]|0}else{s=H;t=-1;u=(c[J+68+(r<<2)>>2]|0)+(I<<1)|0;e=e+G|0;i=i+F|0}o=c[(c[C>>2]|0)+(r<<2)>>2]|0;p=c[(c[D>>2]|0)+(r<<2)>>2]|0;q=B(L,t)|0;l=0;m=L;n=0;j=0;k=u;while(1){M=k;k=k+(t<<1)|0;N=d[y+((j+8+(b[k>>1]|0)>>4)+(d[e>>0]|0))>>0]|0;j=d[o+N>>0]|0;a[i>>0]=(d[i>>0]|0)+j;j=N-(d[p+j>>0]|0)|0;b[M>>1]=(j*3|0)+n;n=(j*5|0)+l|0;m=m+-1|0;if(!m)break;else{l=j;j=j*7|0;e=e+s|0;i=i+t|0}}b[u+(q<<1)>>1]=n;r=r+1|0}while((r|0)!=(K|0))}while(0);c[A>>2]=(c[A>>2]|0)==0&1;x=x+1|0}while((x|0)!=(h|0));return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+428|0;d=c[g>>2]|0;e=B(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do if(e>>>0>f>>>0){if(e>>>0<=f<<1>>>0){f=yw(c[a+28>>2]<<1,d)|0;c[a+112>>2]=f;f=2;b=c[a+32>>2]<<1;break}if(e>>>0<=(f*3|0)>>>0){f=yw((c[a+28>>2]|0)*3|0,d)|0;c[a+112>>2]=f;f=3;b=(c[a+32>>2]|0)*3|0;break}if(e>>>0<=f<<2>>>0){f=yw(c[a+28>>2]<<2,d)|0;c[a+112>>2]=f;f=4;b=c[a+32>>2]<<2;break}if(e>>>0<=(f*5|0)>>>0){f=yw((c[a+28>>2]|0)*5|0,d)|0;c[a+112>>2]=f;f=5;b=(c[a+32>>2]|0)*5|0;break}if(e>>>0<=(f*6|0)>>>0){f=yw((c[a+28>>2]|0)*6|0,d)|0;c[a+112>>2]=f;f=6;b=(c[a+32>>2]|0)*6|0;break}if(e>>>0<=(f*7|0)>>>0){f=yw((c[a+28>>2]|0)*7|0,d)|0;c[a+112>>2]=f;f=7;b=(c[a+32>>2]|0)*7|0;break}if(e>>>0<=f<<3>>>0){f=yw(c[a+28>>2]<<3,d)|0;c[a+112>>2]=f;f=8;b=c[a+32>>2]<<3;break}if(e>>>0<=(f*9|0)>>>0){f=yw((c[a+28>>2]|0)*9|0,d)|0;c[a+112>>2]=f;f=9;b=(c[a+32>>2]|0)*9|0;break}if(e>>>0<=(f*10|0)>>>0){f=yw((c[a+28>>2]|0)*10|0,d)|0;c[a+112>>2]=f;f=10;b=(c[a+32>>2]|0)*10|0;break}if(e>>>0<=(f*11|0)>>>0){f=yw((c[a+28>>2]|0)*11|0,d)|0;c[a+112>>2]=f;f=11;b=(c[a+32>>2]|0)*11|0;break}if(e>>>0<=(f*12|0)>>>0){f=yw((c[a+28>>2]|0)*12|0,d)|0;c[a+112>>2]=f;f=12;b=(c[a+32>>2]|0)*12|0;break}if(e>>>0<=(f*13|0)>>>0){f=yw((c[a+28>>2]|0)*13|0,d)|0;c[a+112>>2]=f;f=13;b=(c[a+32>>2]|0)*13|0;break}if(e>>>0<=(f*14|0)>>>0){f=yw((c[a+28>>2]|0)*14|0,d)|0;c[a+112>>2]=f;f=14;b=(c[a+32>>2]|0)*14|0;break}b=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){f=yw(b<<4,d)|0;c[a+112>>2]=f;f=16;b=c[a+32>>2]<<4;break}else{f=yw(b*15|0,d)|0;c[a+112>>2]=f;f=15;b=(c[a+32>>2]|0)*15|0;break}}else{f=yw(c[a+28>>2]|0,d)|0;c[a+112>>2]=f;f=1;b=c[a+32>>2]|0}while(0);e=yw(b,c[g>>2]|0)|0;c[a+116>>2]=e;c[a+324>>2]=f;c[a+328>>2]=f;e=c[a+36>>2]|0;if((e|0)<=0)return;d=0;b=c[a+216>>2]|0;while(1){c[b+36>>2]=f;c[b+40>>2]=f;d=d+1|0;if((d|0)>=(e|0))break;else b=b+88|0}return}function yw(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=c[a+20>>2]|0;if((e|0)!=205){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=e;Sb[c[c[a>>2]>>2]&255](a)}e=a+140|0;f=c[e>>2]|0;g=c[a+116>>2]|0;if(f>>>0>=g>>>0){i=c[a>>2]|0;c[i+20>>2]=126;Ub[c[i+4>>2]&63](a,-1);i=0;zb=j;return i|0}h=c[a+8>>2]|0;if(h|0){c[h+4>>2]=f;c[h+8>>2]=g;Sb[c[h>>2]&255](a)}c[i>>2]=0;Xb[c[(c[a+448>>2]|0)+4>>2]&31](a,b,i,d);i=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+i;zb=j;return i|0}function Aw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;j=k;g=k+8|0;h=k+12|0;d=b+4|0;c[d>>2]=0;e=Bw(b)|0;c[g>>2]=e;f=Cw(b,84)|0;if(!f){Dw(b);i=c[b>>2]|0;c[i+20>>2]=56;c[i+24>>2]=0;Sb[c[c[b>>2]>>2]&255](b)}c[f>>2]=33;c[f+4>>2]=34;c[f+8>>2]=9;c[f+12>>2]=10;c[f+16>>2]=39;c[f+20>>2]=40;c[f+24>>2]=135;c[f+28>>2]=21;c[f+32>>2]=22;c[f+36>>2]=52;c[f+40>>2]=136;c[f+48>>2]=1e9;i=f+44|0;c[i>>2]=e;c[f+56>>2]=0;c[f+64>>2]=0;c[f+52>>2]=0;c[f+60>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+76>>2]=84;c[d>>2]=f;b=Ja(46641)|0;if(!b){zb=k;return}a[h>>0]=120;c[j>>2]=g;c[j+4>>2]=h;if((Cz(b,46649,j)|0)>0){switch(a[h>>0]|0){case 77:case 109:{b=(c[g>>2]|0)*1e3|0;c[g>>2]=b;break}default:b=c[g>>2]|0}c[i>>2]=b*1e3}zb=k;return}function Bw(a){a=a|0;return 0}function Cw(a,b){a=a|0;b=b|0;return FO(b)|0}function Dw(a){a=a|0;return}function Ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;if(d>>>0>999999984){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}j=d&7;j=((j|0)==0?0:8-j|0)+d|0;if(b>>>0>1){i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=k+52+(b<<2)|0;d=c[i>>2]|0;a:do if(!d){d=0;f=9}else while(1){if((c[d+8>>2]|0)>>>0>=j>>>0)break a;e=c[d>>2]|0;if(!e){f=9;break}else d=e}while(0);do if((f|0)==9){h=(d|0)==0;b=c[(h?15936:15944)+(b<<2)>>2]|0;e=999999984-j|0;b=b>>>0>e>>>0?e:b;e=b+j|0;g=e+16|0;f=Cw(a,g)|0;if(!f){do{if(b>>>0<100){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=2;Sb[c[c[a>>2]>>2]&255](a)}b=b>>>1;e=b+j|0;g=e+16|0;f=Cw(a,g)|0}while(!(f|0));b=g}else b=g;k=k+76|0;c[k>>2]=(c[k>>2]|0)+b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;if(h){c[i>>2]=f;d=f;break}else{c[d>>2]=f;d=f;break}}while(0);i=d+4|0;k=c[i>>2]|0;c[i>>2]=k+j;i=d+8|0;c[i>>2]=(c[i>>2]|0)-j;return d+16+k|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}f=d&7;d=((f|0)==0?0:8-f|0)+d|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}e=d+16|0;f=Tw(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function Gw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(d>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(h,d)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+d|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Hw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;n=d<<7;f=999999984/(n>>>0)|0;if(n>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(n,h)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+(d<<7)|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+68|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Jw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+72|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+4|0;s=c[u>>2]|0;f=s+68|0;b=c[f>>2]|0;if(!b){d=0;e=0}else{d=0;e=0;do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(t,c[b+12>>2]|0)|0)+d|0;e=(B(c[b+4>>2]|0,t)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0)}r=s+72|0;b=c[r>>2]|0;if(!b)b=e;else{do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(c[b+12>>2]<<7,t)|0)+d|0;e=(B(t<<7,c[b+4>>2]|0)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0);b=e}if((d|0)<1)return;e=Rw(a,d,b,c[s+76>>2]|0)|0;if((e|0)<(b|0)){t=(e|0)/(d|0)|0;t=(t|0)>1?t:1}else t=1e9;b=c[f>>2]|0;if(b|0){q=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;p=b+16|0;c[p>>2]=d;d=b+8|0;Sw(a,b+48|0,B(c[d>>2]|0,e)|0);c[b+40>>2]=1;e=c[p>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;d=999999984/(p>>>0)|0;if(p>>>0>999999984){o=c[a>>2]|0;c[o+20>>2]=72;Sb[c[o>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,p)|0;i=c[u>>2]|0;if(f>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=56;c[m+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}h=f&7;f=((h|0)==0?0:8-h|0)+f|0;h=f+16|0;m=Tw(a,h)|0;if(!m){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}l=i+76|0;c[l>>2]=(c[l>>2]|0)+h;l=i+64|0;c[m>>2]=c[l>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[l>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+p|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[q>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0)}b=c[r>>2]|0;if(!b)return;r=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;s=b+16|0;c[s>>2]=d;d=b+8|0;Sw(a,b+48|0,B(e<<7,c[d>>2]|0)|0);c[b+40>>2]=1;e=c[s>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;q=p<<7;d=999999984/(q>>>0)|0;if(q>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=72;Sb[c[s>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,q)|0;h=c[u>>2]|0;if(f>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}i=f|16;m=Tw(a,i)|0;if(!m){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}s=h+76|0;c[s>>2]=(c[s>>2]|0)+i;s=h+64|0;c[m>>2]=c[s>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[s>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+(p<<7)|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[r>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0);return}function Lw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]|0;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]|0;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);g=c[m>>2]|0;j=g+j|0;e=c[k>>2]|0;if((e|0)<=(j|0))break a;r=e-j|0;r=(g|0)<(r|0)?g:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]|0;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Mw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]<<7;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]<<7;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[k>>2]|0;if((g|0)<=(j|0))break a;r=g-j|0;r=(e|0)<(r|0)?e:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]<<7;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){f=g+68|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0;f=g+72|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0}}else{f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}f=g+60+(b<<2)|0;d=c[f>>2]|0;c[f>>2]=0;if(d|0){e=g+76|0;do{h=d;d=c[d>>2]|0;f=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;Qw(a,h,f);c[e>>2]=(c[e>>2]|0)-f}while((d|0)!=0)}h=g+52+(b<<2)|0;d=c[h>>2]|0;c[h>>2]=0;if(!d)return;e=g+76|0;do{g=d;d=c[d>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;Pw(a,g,h);c[e>>2]=(c[e>>2]|0)-h}while((d|0)!=0);return}function Ow(a){a=a|0;var b=0;Nw(a,1);Nw(a,0);b=a+4|0;Pw(a,c[b>>2]|0,84);c[b>>2]=0;Dw(a);return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Sb[c[d>>2]&255](a);return}function Tw(a,b){a=a|0;b=b|0;return FO(b)|0}function Uw(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d|0)Sb[c[d+40>>2]&255](a);c[b>>2]=0;c[a+20>>2]=0;return}function Vw(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Ub[c[b+36>>2]&63](a,1);b=a+20|0;if(!(c[a+16>>2]|0)){c[b>>2]=100;return}else{c[b>>2]=200;c[a+312>>2]=0;return}}function Ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[a+4>>2]=0;if((b|0)!=90){e=c[a>>2]|0;c[e+20>>2]=13;c[e+24>>2]=90;c[(c[a>>2]|0)+28>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}if((d|0)==488)b=a;else{b=c[a>>2]|0;c[b+20>>2]=22;c[b+24>>2]=488;c[(c[a>>2]|0)+28>>2]=d;Sb[c[c[a>>2]>>2]&255](a);b=a}f=c[a>>2]|0;d=a+12|0;e=c[d>>2]|0;aP(a+4|0,0,484)|0;c[a>>2]=f;c[d>>2]=e;c[a+16>>2]=1;Aw(b);c[a+8>>2]=0;c[a+24>>2]=0;c[a+312>>2]=0;b=a+164|0;d=b+48|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ut(a);Xw(a);c[a+20>>2]=200;return}function Xw(a){a=a|0;var b=0;b=Jb[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+460>>2]=b;c[b>>2]=90;c[b+4>>2]=137;c[b+8>>2]=138;c[b+12>>2]=139;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function Yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+460|0;b=c[G>>2]|0;H=b+20|0;if(c[H>>2]|0){a=2;return a|0}I=a+464|0;K=b+24|0;L=a+340|0;F=b+16|0;l=a+32|0;m=a+212|0;n=a+28|0;o=a+36|0;p=a+316|0;q=a+320|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+324|0;v=a+328|0;w=a+428|0;x=a+432|0;y=a+436|0;z=a+416|0;A=a+332|0;C=a+412|0;D=a+420|0;E=a+424|0;a:while(1){b=Gb[c[(c[I>>2]|0)+4>>2]&127](a)|0;switch(b|0){case 2:{k=58;break a}case 1:break;default:{k=63;break a}}b:do switch(c[K>>2]|0){case 0:{if(!(c[F>>2]|0)){j=c[a>>2]|0;c[j+20>>2]=36;Sb[c[j>>2]&255](a)}if(c[L>>2]|0){k=57;break a}break}case 1:{if(!((c[l>>2]|0)<=65500?(c[n>>2]|0)<=65500:0)){j=c[a>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Sb[c[c[a>>2]>>2]&255](a)}b=c[m>>2]|0;if((b+-8|0)>>>0>4){j=c[a>>2]|0;c[j+20>>2]=16;c[j+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}b=c[o>>2]|0;if((b|0)>10){j=c[a>>2]|0;c[j+20>>2]=27;c[j+24>>2]=b;c[(c[a>>2]|0)+28>>2]=10;Sb[c[c[a>>2]>>2]&255](a);b=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((b|0)>0){i=0;j=c[r>>2]|0;f=1;h=1;while(1){d=j+8|0;e=c[d>>2]|0;g=j+12|0;if((e+-1|0)>>>0<=3?(J=c[g>>2]|0,(J+-1|0)>>>0<=3):0)d=J;else{h=c[a>>2]|0;c[h+20>>2]=19;Sb[c[h>>2]&255](a);h=c[p>>2]|0;e=c[d>>2]|0;f=c[q>>2]|0;d=c[g>>2]|0;b=c[o>>2]|0}h=(h|0)>(e|0)?h:e;c[p>>2]=h;f=(f|0)>(d|0)?f:d;c[q>>2]=f;i=i+1|0;if((i|0)>=(b|0)){d=b;break}else j=j+88|0}}else d=b;c:do if(!(c[s>>2]|0)){if(c[t>>2]|0?c[L>>2]|0:0){k=22;break}do switch(c[z>>2]|0){case 0:{c[w>>2]=1;c[x>>2]=2064;c[y>>2]=0;b=1;break c}case 3:{c[w>>2]=2;c[x>>2]=3280;c[y>>2]=3;b=2;break c}case 8:{c[w>>2]=3;c[x>>2]=3168;c[y>>2]=8;b=3;break c}case 15:{c[w>>2]=4;c[x>>2]=3040;c[y>>2]=15;b=4;break c}case 24:{c[w>>2]=5;c[x>>2]=2864;c[y>>2]=24;b=5;break c}case 35:{c[w>>2]=6;c[x>>2]=2656;c[y>>2]=35;b=6;break c}case 48:{c[w>>2]=7;c[x>>2]=2384;c[y>>2]=48;b=7;break c}case 63:{c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8;break c}case 80:{c[w>>2]=9;c[x>>2]=2064;c[y>>2]=63;b=9;break c}case 99:{c[w>>2]=10;c[x>>2]=2064;c[y>>2]=63;b=10;break c}case 120:{c[w>>2]=11;c[x>>2]=2064;c[y>>2]=63;b=11;break c}case 143:{c[w>>2]=12;c[x>>2]=2064;c[y>>2]=63;b=12;break c}case 168:{c[w>>2]=13;c[x>>2]=2064;c[y>>2]=63;b=13;break c}case 195:{c[w>>2]=14;c[x>>2]=2064;c[y>>2]=63;b=14;break c}case 224:{c[w>>2]=15;c[x>>2]=2064;c[y>>2]=63;b=15;break c}case 255:{c[w>>2]=16;c[x>>2]=2064;c[y>>2]=63;b=16;break c}default:{b=c[a>>2]|0;c[b+20>>2]=17;c[b+24>>2]=c[C>>2];c[(c[a>>2]|0)+28>>2]=c[z>>2];c[(c[a>>2]|0)+32>>2]=c[D>>2];c[(c[a>>2]|0)+36>>2]=c[E>>2];Sb[c[c[a>>2]>>2]&255](a);b=c[w>>2]|0;d=c[o>>2]|0;break c}}while(0)}else k=22;while(0);if((k|0)==22){c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8}c[u>>2]=b;c[v>>2]=b;if((d|0)>0){d=0;e=c[r>>2]|0;while(1){c[e+36>>2]=b;c[e+40>>2]=b;k=e+8|0;j=B(c[k>>2]|0,c[n>>2]|0)|0;b=yw(j,B(c[p>>2]|0,b)|0)|0;c[e+28>>2]=b;b=e+12|0;j=B(c[b>>2]|0,c[l>>2]|0)|0;j=yw(j,B(c[w>>2]|0,c[q>>2]|0)|0)|0;c[e+32>>2]=j;k=B(c[k>>2]|0,c[n>>2]|0)|0;k=yw(k,c[p>>2]|0)|0;c[e+44>>2]=k;b=B(c[b>>2]|0,c[l>>2]|0)|0;b=yw(b,c[q>>2]|0)|0;c[e+48>>2]=b;c[e+52>>2]=1;c[e+80>>2]=0;b=d+1|0;if((b|0)>=(c[o>>2]|0))break;d=b;e=e+88|0;b=c[w>>2]|0}b=c[w>>2]|0}b=yw(c[l>>2]|0,B(b,c[q>>2]|0)|0)|0;c[A>>2]=b;b=c[L>>2]|0;if((b|0)>=(c[o>>2]|0)?(c[t>>2]|0)==0:0){c[(c[G>>2]|0)+16>>2]=0;k=50;break b}c[(c[G>>2]|0)+16>>2]=1;k=50;break}default:{b=c[L>>2]|0;k=50}}while(0);if((k|0)==50){k=0;if(b|0){k=52;break}c[K>>2]=2}}if((k|0)==52){c[K>>2]=0;a=1;return a|0}else if((k|0)==57){_w(a);a=1;return a|0}else if((k|0)==58){c[H>>2]=1;if(!(c[K>>2]|0)){d=a+152|0;b=c[a+144>>2]|0;if((c[d>>2]|0)<=(b|0)){a=2;return a|0}c[d>>2]=b;a=2;return a|0}else{if(!(c[(c[I>>2]|0)+16>>2]|0)){a=2;return a|0}L=c[a>>2]|0;c[L+20>>2]=62;Sb[c[L>>2]&255](a);a=2;return a|0}}else if((k|0)==63)return b|0;return 0}function Zw(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[b>>2]=90;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;Sb[c[(c[a>>2]|0)+16>>2]&255](a);Sb[c[c[a+464>>2]>>2]&255](a);c[a+160>>2]=0;return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+340|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[(c[a>>2]|0)+28>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}f=a+428|0;g=yw(c[a+28>>2]|0,B(c[f>>2]|0,c[a+316>>2]|0)|0)|0;c[a+360>>2]=g;f=yw(c[a+32>>2]|0,B(c[f>>2]|0,c[a+320>>2]|0)|0)|0;c[a+364>>2]=f;f=a+368|0;c[f>>2]=0;if((c[h>>2]|0)<=0){g=a+468|0;g=c[g>>2]|0;g=c[g>>2]|0;Sb[g&255](a);g=a+452|0;h=c[g>>2]|0;h=c[h>>2]|0;Sb[h&255](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;h=a+460|0;h=c[h>>2]|0;c[h>>2]=g;return}d=0;e=0;while(1){g=c[a+344+(d<<2)>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=B(j,k)|0;c[g+64>>2]=b;i=B(c[g+36>>2]|0,k)|0;c[g+68>>2]=i;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Sb[c[k>>2]&255](a)}if((b|0)>0)while(1){k=c[f>>2]|0;c[f>>2]=k+1;c[a+372+(k<<2)>>2]=d;if((b|0)>1)b=b+-1|0;else break}d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}}else{b=c[a+344>>2]|0;c[a+360>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+364>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;j=c[b+12>>2]|0;k=(k>>>0)%(j>>>0)|0;c[b+76>>2]=(k|0)==0?j:k;c[a+368>>2]=1;c[a+372>>2]=0;b=1}g=a+4|0;f=0;do{d=c[a+344+(f<<2)>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+164+(d<<2)|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}k=Jb[c[c[g>>2]>>2]&63](a,1,132)|0;_O(k|0,c[b>>2]|0,132)|0;c[e>>2]=k;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0));j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}function $w(a){a=a|0;Sb[c[(c[a+468>>2]|0)+8>>2]&255](a);c[c[a+460>>2]>>2]=90;return}function ax(a){a=a|0;Uw(a);return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}d=cx(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(b){e=c[a>>2]|0;c[e+20>>2]=53;Sb[c[e>>2]&255](a)}Vw(a);e=2;return e|0}default:{e=d;return e|0}}return 0}function cx(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;i=b+20|0;d=c[i>>2]|0;switch(d|0){case 200:{d=b+460|0;Sb[c[(c[d>>2]|0)+4>>2]&255](b);Sb[c[(c[b+24>>2]|0)+8>>2]&255](b);c[i>>2]=201;break}case 201:{d=b+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{i=Gb[c[c[b+460>>2]>>2]&127](b)|0;return i|0}case 202:{i=1;return i|0}default:{i=c[b>>2]|0;c[i+20>>2]=21;c[i+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b);i=0;return i|0}}d=Gb[c[c[d>>2]>>2]&127](b)|0;if((d|0)!=1){i=d;return i|0}d=c[b+36>>2]|0;a:do switch(d|0){case 1:{e=d;break}case 3:{f=c[b+216>>2]|0;d=c[f>>2]|0;e=c[f+88>>2]|0;f=c[f+176>>2]|0;h=(d|0)==1;if(!(h&(e|0)==2&(f|0)==3))if(!(h&(e|0)==34&(f|0)==35))if(!((d|0)==82&(e|0)==71&(f|0)==66))if(!((d|0)==114&(e|0)==103&(f|0)==98))if(!(c[b+284>>2]|0)){if(!(c[b+296>>2]|0)){h=c[b>>2]|0;c[h+24>>2]=d;c[h+28>>2]=e;c[h+32>>2]=f;c[h+20>>2]=113;Ub[c[h+4>>2]&63](b,1);e=2;d=3;break a}d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=2;d=2;break a}case 1:{e=2;d=3;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=2;d=3;break a}}}else{e=2;d=3}else{e=2;d=6}else{e=2;d=2}else{e=2;d=7}else{e=2;d=3}break}case 4:{if(!(c[b+296>>2]|0)){e=4;d=4}else{d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=4;d=4;break a}case 2:{e=4;d=5;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=4;d=5;break a}}}break}default:{e=0;d=0}}while(0);c[b+40>>2]=d;c[b+44>>2]=e;h=c[b+428>>2]|0;c[b+48>>2]=h;c[b+52>>2]=h;g[b+56>>3]=1.0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+76>>2]=1;c[b+80>>2]=1;c[b+84>>2]=0;c[b+88>>2]=2;c[b+92>>2]=1;c[b+96>>2]=256;c[b+136>>2]=0;c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;c[i>>2]=202;i=1;return i|0}function dx(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=c[b>>2]|0;if((d+-205|0)>>>0<2?(c[a+64>>2]|0)==0:0){if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){d=c[a>>2]|0;c[d+20>>2]=69;Sb[c[d>>2]&255](a)}Sb[c[(c[a+444>>2]|0)+4>>2]&255](a);c[b>>2]=210}else e=6;a:do if((e|0)==6)switch(d|0){case 210:break a;case 207:{c[b>>2]=210;break a}default:{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a);break a}}while(0);d=a+460|0;b=c[d>>2]|0;b:do if(!(c[b+20>>2]|0)){while(1){if(!(Gb[c[b>>2]&127](a)|0)){b=0;break}b=c[d>>2]|0;if(c[b+20>>2]|0)break b}return b|0}while(0);Sb[c[(c[a+24>>2]|0)+24>>2]&255](a);Vw(a);a=1;return a|0}function ex(a){a=a|0;c[a>>2]=140;c[a+4>>2]=53;c[a+8>>2]=141;c[a+12>>2]=54;c[a+16>>2]=142;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=3824;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function fx(a){a=a|0;Sb[c[(c[a>>2]|0)+8>>2]&255](a);Uw(a);Ea(1)}function gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Sb[c[d+8>>2]&255](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Sb[c[d+8>>2]&255](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function hx(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+208|0;d=b+200|0;e=b;Ub[c[(c[a>>2]|0)+12>>2]&63](a,e);a=c[4001]|0;c[d>>2]=e;Lz(a,46655,d)|0;zb=b;return}function ix(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+48|0;j=k+8|0;i=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;a:while(1){f=e+1|0;switch(a[e>>0]|0){case 0:break a;case 37:{g=12;break a}default:e=f}}if((g|0)==12?(a[f>>0]|0)==115:0){c[i>>2]=h+24;Hx(d,b,i)|0;zb=k;return}n=c[h+28>>2]|0;m=c[h+32>>2]|0;l=c[h+36>>2]|0;e=c[h+40>>2]|0;f=c[h+44>>2]|0;g=c[h+48>>2]|0;i=c[h+52>>2]|0;c[j>>2]=c[h+24>>2];c[j+4>>2]=n;c[j+8>>2]=m;c[j+12>>2]=l;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=i;Hx(d,b,j)|0;zb=k;return}function jx(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function kx(a){a=a|0;return (aa(px(c[a+60>>2]|0)|0)|0)&65535|0}function lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=zb;zb=zb+32|0;h=l;i=l+16|0;j=a+28|0;f=c[j>>2]|0;c[h>>2]=f;k=a+20|0;f=(c[k>>2]|0)-f|0;c[h+4>>2]=f;c[h+8>>2]=b;c[h+12>>2]=d;e=a+60|0;g=2;b=f+d|0;while(1){if(!(nx(da(c[e>>2]|0,h|0,g|0,i|0)|0)|0))f=c[i>>2]|0;else{c[i>>2]=-1;f=-1}if((b|0)==(f|0)){b=6;break}if((f|0)<0){b=8;break}p=c[h+4>>2]|0;n=f>>>0>p>>>0;m=n?h+8|0:h;p=f-(n?p:0)|0;c[m>>2]=(c[m>>2]|0)+p;o=m+4|0;c[o>>2]=(c[o>>2]|0)-p;g=g+(n<<31>>31)|0;b=b-f|0;h=m}if((b|0)==6){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}else if((b|0)==8){c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)d=0;else d=d-(c[h+4>>2]|0)|0}zb=l;return d|0}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+16|0;f=g;if(!(nx(ca(c[a+60>>2]|0,b|0,d|0,e&255|0,f|0)|0)|0)){b=f;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=f;c[a>>2]=-1;c[a+4>>2]=-1;a=-1;b=-1}E(a|0);zb=g;return b|0}function nx(a){a=a|0;var b=0;if(!(a<<16>>16))a=0;else{b=ox()|0;c[b>>2]=a&65535;a=-1}return a|0}function ox(){return 55620}function px(a){a=a|0;return a|0}function qx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;i=l;f=l+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;if(!(nx(ba(c[b+60>>2]|0,i|0,2,f|0)|0)|0)){f=c[f>>2]|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else k=4}else{c[f>>2]=-1;f=-1;k=4}if((k|0)==4)c[b>>2]=f&48^16|c[b>>2];zb=l;return f|0}function rx(a){a=a|0;return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;E(0);return 0}function tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=ux(a,b,c)|0;E(F()|0);return d|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,-1,-1)|0;E(F()|0);return c|0}function vx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+144|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;wx(h,0,0);d=xx(h,d,1,e,f)|0;e=F()|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+120>>2]|0)-(c[g>>2]|0));E(e|0);zb=j;return d|0}function wx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=a+112|0;c[f>>2]=b;c[f+4>>2]=d;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;h=((g|0)<0)<<31>>31;i=a+120|0;c[i>>2]=g;c[i+4>>2]=h;if(((b|0)!=0|(d|0)!=0)&((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>b>>>0))c[a+104>>2]=e+b;else c[a+104>>2]=f;return}function xx(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){h=ox()|0;c[h>>2]=28;h=0;g=0}else{r=b+4|0;q=b+104|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while((zx(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=yx(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((i|32|0)!=120)if(j){o=8;n=47;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((d[5937+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){wx(b,0,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{o=16;n=47}}else{e=j?10:e;if(e>>>0>(d[5937+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;wx(b,0,0);h=ox()|0;c[h>>2]=28;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;do{i=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&i>>>0<429496729);if(e>>>0<10){m=0;do{f=NO(i|0,m|0,10,0)|0;k=F()|0;l=((e|0)<0)<<31>>31;o=~l;if(k>>>0>o>>>0|(k|0)==(o|0)&f>>>0>~e>>>0){f=10;e=m;n=76;break c}i=OO(f|0,k|0,e|0,l|0)|0;m=F()|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&(m>>>0<429496729|(m|0)==429496729&i>>>0<2576980378));if(e>>>0>9){j=p;e=m}else{f=10;e=m;n=76}}else{j=p;e=0}}else{j=p;e=0;i=0}}else{o=e;n=47}while(0);d:do if((n|0)==47){if(!(o+-1&o)){n=a[46659+((o*23|0)>>>5&7)>>0]|0;f=a[5937+i>>0]|0;e=f&255;if(o>>>0>e>>>0){i=0;do{i=e|i<>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;e=f&255}while(i>>>0<134217728&o>>>0>e>>>0);k=e;e=0}else{j=i;k=e;e=0;i=0}l=TO(-1,-1,n|0)|0;m=F()|0;if(o>>>0<=k>>>0|(m>>>0>>0|(m|0)==(e|0)&l>>>0>>0)){f=o;n=76;break}while(1){i=UO(i|0,e|0,n|0)|0;e=F()|0;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0|(e>>>0>m>>>0|(e|0)==(m|0)&i>>>0>l>>>0)){f=o;n=76;break d}}}e=a[5937+i>>0]|0;f=e&255;if(o>>>0>f>>>0){i=0;do{i=f+(B(i,o)|0)|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=a[5937+j>>0]|0;f=e&255}while(i>>>0<119304647&o>>>0>f>>>0);k=e;e=0}else{j=i;k=e;i=0;e=0}if(o>>>0>f>>>0){m=SO(-1,-1,o|0,0)|0;n=F()|0;f=k;while(1){if(e>>>0>n>>>0|(e|0)==(n|0)&i>>>0>m>>>0){f=o;n=76;break d}k=NO(i|0,e|0,o|0,0)|0;l=F()|0;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=o;n=76;break d}i=OO(k|0,l|0,f|0,0)|0;e=F()|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0){f=o;n=76;break}}}else{f=o;n=76}}while(0);if((n|0)==76)if(f>>>0>(d[5937+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while(f>>>0>(d[5937+i>>0]|0)>>>0);j=ox()|0;c[j>>2]=68;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else j=p;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){r=ox()|0;c[r>>2]=68;g=OO(g|0,h|0,-1,-1)|0;h=F()|0;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){r=ox()|0;c[r>>2]=68;break}}g=((j|0)<0)<<31>>31;g=PO(i^j|0,e^g|0,j|0,g|0)|0;h=F()|0}while(0);E(h|0);return g|0}function yx(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+112|0;f=g;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0)?(i=b+120|0,h=c[i+4>>2]|0,!((h|0)<(f|0)|((h|0)==(f|0)?(c[i>>2]|0)>>>0>>0:0))):0)j=4;else{e=Ax(b)|0;if((e|0)>=0){f=c[g>>2]|0;g=c[g+4>>2]|0;i=c[b+8>>2]|0;if(!((f|0)==0&(g|0)==0)){h=c[b+4>>2]|0;k=i-h|0;l=((k|0)<0)<<31>>31;m=b+120|0;f=PO(f|0,g|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=F()|0;g=i;if((m|0)>(l|0)|(m|0)==(l|0)&f>>>0>k>>>0)j=9;else c[b+104>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+104>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;k=g+1-f|0;m=b+120|0;l=m;k=OO(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=F()|0;c[m>>2]=k;c[m+4>>2]=l}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+104>>2]=0;e=-1}return e|0}function zx(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Ax(a){a=a|0;var b=0,e=0;e=zb;zb=zb+16|0;b=e;if((Bx(a)|0)==0?(Jb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;zb=e;return a|0}function Bx(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Jb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Dx(a,b,c)|0;E(F()|0);return d|0}function Dx(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,0,-2147483648)|0;E(F()|0);return c|0}function Ex(a,b){a=+a;b=+b;var d=0,e=0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;g[h>>3]=b;d=c[h+4>>2]&-2147483648|d&2147483647;c[h>>2]=e;c[h+4>>2]=d;return +(+g[h>>3])}function Fx(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gx(a){a=a|0;return (a+-48|0)>>>0<10|0}function Hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Ix(a,b,f)|0;zb=e;return d|0}function Ix(a,b,c){a=a|0;b=b|0;c=c|0;return Jx(a,2147483647,b,c)|0}function Jx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+160|0;g=j+144|0;i=j;_O(i|0,13736,144)|0;if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;h=4}else{d=ox()|0;c[d>>2]=61;d=-1}else h=4;if((h|0)==4){h=-2-b|0;h=d>>>0>h>>>0?h:d;c[i+48>>2]=h;g=i+20|0;c[g>>2]=b;c[i+44>>2]=b;d=b+h|0;b=i+16|0;c[b>>2]=d;c[i+28>>2]=d;d=Kx(i,e,f)|0;if(h){i=c[g>>2]|0;a[i+(((i|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}zb=j;return d|0}function Kx(a,b,c){a=a|0;b=b|0;c=c|0;return Nx(a,b,c,1,55)|0}function Lx(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0;H=zb;zb=zb+560|0;l=H+32|0;u=H+536|0;G=H;E=G;m=H+540|0;c[u>>2]=0;D=m+12|0;dy(e)|0;j=F()|0;if((j|0)<0){e=-e;dy(e)|0;C=1;A=46685;j=F()|0}else{C=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?46686:46691):46688}do if(0==0&(j&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;Yx(b,32,f,j,h&-65537);Rx(b,A,C);Rx(b,e!=e|0.0!=0.0?(G?46727:46712):G?46704:46708,3);Yx(b,32,f,j,h^8192)}else{q=+ey(e,u)*2.0;j=q!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;t=i|32;if((t|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[r>>0]|0)==45){e=-(e+(-q-e));break}else{e=q+e-e;break}}else e=q;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Wx(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;a[n>>0]=i+15;k=(g|0)<1;l=(h&8|0)==0;m=G;do{C=~~e;j=m+1|0;a[m>>0]=o|d[6672+C>>0];e=(e-+(C|0))*16.0;if((j-E|0)==1?!(l&(k&e==0.0)):0){a[j>>0]=46;m=m+2|0}else m=j}while(e!=0.0);if((g|0)!=0?(-2-E+m|0)<(g|0):0){k=D;l=n;j=g+2+k-l|0}else{k=D;l=n;j=k-E-l+m|0}D=j+p|0;Yx(b,32,f,D,h);Rx(b,r,p);Yx(b,48,f,D,h^65536);E=m-E|0;Rx(b,G,E);G=k-l|0;Yx(b,48,j-(E+G)|0,0,0);Rx(b,n,G);Yx(b,32,f,D,h^8192);j=D;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=q*268435456.0}else{e=q;j=c[u>>2]|0}z=(j|0)<0?l:l+288|0;l=z;do{x=~~e>>>0;c[l>>2]=x;l=l+4|0;e=(e-+(x>>>0))*1.0e9}while(e!=0.0);x=z;if((j|0)>0){o=z;while(1){n=(j|0)<29?j:29;j=l+-4|0;if(j>>>0>=o>>>0){m=0;do{s=UO(c[j>>2]|0,0,n|0)|0;s=OO(s|0,F()|0,m|0,0)|0;v=F()|0;m=SO(s|0,v|0,1e9,0)|0;w=NO(m|0,F()|0,1e9,0)|0;w=PO(s|0,v|0,w|0,F()|0)|0;F()|0;c[j>>2]=w;j=j+-4|0}while(j>>>0>=o>>>0);if(m){w=o+-4|0;c[w>>2]=m;m=w}else m=o}else m=o;a:do if(l>>>0>m>>>0){j=l;while(1){l=j+-4|0;if(c[l>>2]|0){l=j;break a}if(l>>>0>m>>>0)j=l;else break}}while(0);j=(c[u>>2]|0)-n|0;c[u>>2]=j;if((j|0)>0)o=m;else break}}else m=z;if((j|0)<0){g=((k+25|0)/9|0)+1|0;s=(t|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{w=c[j>>2]|0;c[j>>2]=(w>>>r)+p;p=B(w&n,o)|0;j=j+4|0}while(j>>>0>>0);m=(c[m>>2]|0)==0?m+4|0:m;if(p){c[l>>2]=p;l=l+4|0}}else m=(c[m>>2]|0)==0?m+4|0:m;j=s?z:m;l=(l-j>>2|0)>(g|0)?j+(g<<2)|0:l;j=(c[u>>2]|0)+r|0;c[u>>2]=j}while((j|0)<0);s=m}else s=m;if(s>>>0>>0){j=(x-s>>2)*9|0;n=c[s>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;v=(t|0)==103;w=(k|0)!=0;m=k-((t|0)==102?0:j)+((w&v)<<31>>31)|0;if((m|0)<(((l-x>>2)*9|0)+-9|0)){u=m+9216|0;m=(u|0)/9|0;g=z+4+(m+-1024<<2)|0;m=u-(m*9|0)|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;p=c[g>>2]|0;m=(p>>>0)/(n>>>0)|0;r=p-(B(m,n)|0)|0;o=(g+4|0)==(l|0);if(!(o&(r|0)==0)){q=(m&1|0)==0?9007199254740992.0:9007199254740994.0;u=n>>>1;e=r>>>0>>0?.5:o&(r|0)==(u|0)?1.0:1.5;if(C){u=(a[A>>0]|0)==45;e=u?-e:e;q=u?-q:q}m=p-r|0;c[g>>2]=m;if(q+e!=q){u=m+n|0;c[g>>2]=u;if(u>>>0>999999999){n=g;j=s;while(1){m=n+-4|0;c[n>>2]=0;if(m>>>0>>0){j=j+-4|0;c[j>>2]=0}u=(c[m>>2]|0)+1|0;c[m>>2]=u;if(u>>>0>999999999)n=m;else{n=j;break}}}else{m=g;n=s}j=(x-n>>2)*9|0;p=c[n>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;j=j+1|0}while(p>>>0>=o>>>0)}}else{m=g;n=s}}else{m=g;n=s}u=m+4|0;l=l>>>0>u>>>0?u:l}else n=s;g=0-j|0;b:do if(l>>>0>n>>>0)while(1){m=l+-4|0;if(c[m>>2]|0){u=l;t=1;break b}if(m>>>0>n>>>0)l=m;else{u=m;t=0;break}}else{u=l;t=0}while(0);do if(v){k=k+((w^1)&1)|0;if((k|0)>(j|0)&(j|0)>-5){o=i+-1|0;k=k+-1-j|0}else{o=i+-2|0;k=k+-1|0}if(!(h&8)){if(t?(y=c[u+-4>>2]|0,(y|0)!=0):0)if(!((y>>>0)%10|0)){m=0;l=10;do{l=l*10|0;m=m+1|0}while(!((y>>>0)%(l>>>0)|0|0))}else m=0;else m=9;l=((u-x>>2)*9|0)+-9|0;if((o|32|0)==102){i=l-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}else{i=l+j-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}}}else o=i;while(0);s=(k|0)!=0;p=s?1:h>>>3&1;r=(o|32|0)==102;if(r){v=0;j=(j|0)>0?j:0}else{l=(j|0)<0?g:j;l=Wx(l,((l|0)<0)<<31>>31,D)|0;m=D;if((m-l|0)<2)do{l=l+-1|0;a[l>>0]=48}while((m-l|0)<2);a[l+-1>>0]=(j>>31&2)+43;j=l+-2|0;a[j>>0]=o;v=j;j=m-j|0}j=C+1+k+p+j|0;Yx(b,32,f,j,h);Rx(b,A,C);Yx(b,48,f,j,h^65536);if(r){p=n>>>0>z>>>0?z:n;r=G+9|0;n=r;o=G+8|0;m=p;do{l=Wx(c[m>>2]|0,0,r)|0;if((m|0)==(p|0)){if((l|0)==(r|0)){a[o>>0]=48;l=o}}else if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,n-l|0);m=m+4|0}while(m>>>0<=z>>>0);if(!((h&8|0)==0&(s^1)))Rx(b,46716,1);if(m>>>0>>0&(k|0)>0)while(1){l=Wx(c[m>>2]|0,0,r)|0;if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}Yx(b,48,k+9|0,9,0)}else{u=t?u:n+4|0;if(n>>>0>>0&(k|0)>-1){g=G+9|0;s=(h&8|0)==0;t=g;p=0-E|0;r=G+8|0;o=n;do{l=Wx(c[o>>2]|0,0,g)|0;if((l|0)==(g|0)){a[r>>0]=48;l=r}do if((o|0)==(n|0)){m=l+1|0;Rx(b,l,1);if(s&(k|0)<1){l=m;break}Rx(b,46716,1);l=m}else{if(l>>>0<=G>>>0)break;aP(G|0,48,l+p|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}while(0);E=t-l|0;Rx(b,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}Yx(b,48,k+18|0,18,0);Rx(b,v,D-v|0)}Yx(b,32,f,j,h^8192)}while(0);zb=H;return ((j|0)<(f|0)?f:j)|0}function Mx(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=(c[b>>2]|0)+(8-1)&~(8-1);d=+g[e>>3];c[b>>2]=e+8;g[a>>3]=d;return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+224|0;p=t+208|0;q=t+160|0;r=t+80|0;s=t;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[p>>2]=c[e>>2];if((Ox(0,d,p,r,q,f,g)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=Px(b)|0;else o=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;h=b+48|0;if(!(c[h>>2]|0)){i=b+44|0;j=c[i>>2]|0;c[i>>2]=s;k=b+28|0;c[k>>2]=s;l=b+20|0;c[l>>2]=s;c[h>>2]=80;m=b+16|0;c[m>>2]=s+80;e=Ox(b,d,p,r,q,f,g)|0;if(j){Jb[c[b+36>>2]&63](b,0,0)|0;e=(c[l>>2]|0)==0?-1:e;c[i>>2]=j;c[h>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else e=Ox(b,d,p,r,q,f,g)|0;h=c[b>>2]|0;c[b>>2]=h|n;if(o|0)Qx(b);e=(h&32|0)==0?e:-1}zb=t;return e|0}function Ox(d,e,f,h,i,j,k){d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0;J=zb;zb=zb+64|0;G=J+56|0;I=J+40|0;A=J;C=J+48|0;D=J+60|0;c[G>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=C+4|0;l=0;e=0;n=0;a:while(1){do{do if((e|0)>-1)if((l|0)>(2147483647-e|0)){e=ox()|0;c[e>>2]=61;e=-1;break}else{e=l+e|0;break}while(0);r=c[G>>2]|0;l=a[r>>0]|0;if(!(l<<24>>24)){w=92;break a}m=r;b:while(1){switch(l<<24>>24){case 37:{w=10;break b}case 0:{l=m;break b}default:{}}v=m+1|0;c[G>>2]=v;l=a[v>>0]|0;m=v}c:do if((w|0)==10){w=0;l=m;do{if((a[m+1>>0]|0)!=37)break c;l=l+1|0;m=m+2|0;c[G>>2]=m}while((a[m>>0]|0)==37)}while(0);l=l-r|0;if(x)Rx(d,r,l)}while((l|0)!=0);v=(Gx(a[(c[G>>2]|0)+1>>0]|0)|0)==0;m=c[G>>2]|0;if(!v?(a[m+2>>0]|0)==36:0){t=(a[m+1>>0]|0)+-48|0;p=1;l=3}else{t=-1;p=n;l=1}l=m+l|0;c[G>>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0;if(n>>>0>31|(1<>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0}while(!(n>>>0>31|(1<>24==42){if((Gx(a[l+1>>0]|0)|0)!=0?(H=c[G>>2]|0,(a[H+2>>0]|0)==36):0){l=H+1|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;n=1;m=H+3|0}else{if(p|0){e=-1;break}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);l=c[v>>2]|0;c[f>>2]=v+4}else l=0;n=0;m=(c[G>>2]|0)+1|0}c[G>>2]=m;v=(l|0)<0;u=v?0-l|0:l;o=v?o|8192:o;v=n}else{l=Sx(G)|0;if((l|0)<0){e=-1;break}u=l;v=p;m=c[G>>2]|0}do if((a[m>>0]|0)==46){l=m+1|0;if((a[l>>0]|0)!=42){c[G>>2]=l;l=Sx(G)|0;m=c[G>>2]|0;break}if(Gx(a[m+2>>0]|0)|0?(E=c[G>>2]|0,(a[E+3>>0]|0)==36):0){l=E+2|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;m=E+4|0;c[G>>2]=m;break}if(v|0){e=-1;break a}if(x){s=(c[f>>2]|0)+(4-1)&~(4-1);l=c[s>>2]|0;c[f>>2]=s+4}else l=0;m=(c[G>>2]|0)+2|0;c[G>>2]=m}else l=-1;while(0);s=0;while(1){if(((a[m>>0]|0)+-65|0)>>>0>57){e=-1;break a}n=m;m=m+1|0;c[G>>2]=m;n=a[(a[n>>0]|0)+-65+(6208+(s*58|0))>>0]|0;p=n&255;if((p+-1|0)>>>0>=8)break;else s=p}if(!(n<<24>>24)){e=-1;break}q=(t|0)>-1;do if(n<<24>>24==19)if(q){e=-1;break a}else w=54;else{if(q){c[i+(t<<2)>>2]=p;q=h+(t<<3)|0;t=c[q+4>>2]|0;w=I;c[w>>2]=c[q>>2];c[w+4>>2]=t;w=54;break}if(!x){e=0;break a}Tx(I,p,f,k);m=c[G>>2]|0;w=55}while(0);if((w|0)==54){w=0;if(x)w=55;else l=0}d:do if((w|0)==55){w=0;m=a[m+-1>>0]|0;m=(s|0)!=0&(m&15|0)==3?m&-33:m;n=o&-65537;t=(o&8192|0)==0?o:n;e:do switch(m|0){case 110:switch((s&255)<<24>>24){case 0:{c[c[I>>2]>>2]=e;l=0;break d}case 1:{c[c[I>>2]>>2]=e;l=0;break d}case 2:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}case 3:{b[c[I>>2]>>1]=e;l=0;break d}case 4:{a[c[I>>2]>>0]=e;l=0;break d}case 6:{c[c[I>>2]>>2]=e;l=0;break d}case 7:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}default:{l=0;break d}}case 112:{m=120;l=l>>>0>8?l:8;n=t|8;w=67;break}case 88:case 120:{n=t;w=67;break}case 111:{q=I;q=Vx(c[q>>2]|0,c[q+4>>2]|0,y)|0;n=z-q|0;o=0;p=46668;l=(t&8|0)==0|(l|0)>(n|0)?l:n+1|0;n=t;w=73;break}case 105:case 100:{n=I;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){m=PO(0,0,m|0,n|0)|0;n=F()|0;o=I;c[o>>2]=m;c[o+4>>2]=n;o=1;p=46668;w=72;break e}else{o=(t&2049|0)!=0&1;p=(t&2048|0)==0?((t&1|0)==0?46668:46670):46669;w=72;break e}}case 117:{n=I;o=0;p=46668;m=c[n>>2]|0;n=c[n+4>>2]|0;w=72;break}case 99:{a[A>>0]=c[I>>2];r=A;o=0;p=46668;q=1;m=n;l=z;break}case 115:{s=c[I>>2]|0;s=(s|0)==0?46678:s;t=Xx(s,0,l)|0;K=(t|0)==0;r=s;o=0;p=46668;q=K?l:t-s|0;m=n;l=K?s+l|0:t;break}case 67:{c[C>>2]=c[I>>2];c[B>>2]=0;c[I>>2]=C;p=-1;w=79;break}case 83:{if(!l){Yx(d,32,u,0,t);l=0;w=89}else{p=l;w=79}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{l=Hb[j&1](d,+g[I>>3],u,l,t,m)|0;break d}default:{o=0;p=46668;q=l;m=t;l=z}}while(0);f:do if((w|0)==67){q=I;q=Ux(c[q>>2]|0,c[q+4>>2]|0,y,m&32)|0;p=I;p=(n&8|0)==0|(c[p>>2]|0)==0&(c[p+4>>2]|0)==0;o=p?0:2;p=p?46668:46668+(m>>>4)|0;w=73}else if((w|0)==72){q=Wx(m,n,y)|0;n=t;w=73}else if((w|0)==79){w=0;o=c[I>>2]|0;l=0;while(1){m=c[o>>2]|0;if(!m)break;m=Zx(D,m)|0;n=(m|0)<0;if(n|m>>>0>(p-l|0)>>>0){w=83;break}l=m+l|0;if(p>>>0>l>>>0)o=o+4|0;else break}if((w|0)==83){w=0;if(n){e=-1;break a}}Yx(d,32,u,l,t);if(!l){l=0;w=89}else{n=c[I>>2]|0;o=0;while(1){m=c[n>>2]|0;if(!m){w=89;break f}m=Zx(D,m)|0;o=m+o|0;if((o|0)>(l|0)){w=89;break f}Rx(d,D,m);if(o>>>0>=l>>>0){w=89;break}else n=n+4|0}}}while(0);if((w|0)==73){w=0;m=I;m=(c[m>>2]|0)!=0|(c[m+4>>2]|0)!=0;K=(l|0)!=0|m;m=z-q+((m^1)&1)|0;r=K?q:y;q=K?((l|0)>(m|0)?l:m):0;m=(l|0)>-1?n&-65537:n;l=z}else if((w|0)==89){w=0;Yx(d,32,u,l,t^8192);l=(u|0)>(l|0)?u:l;break}t=l-r|0;s=(q|0)<(t|0)?t:q;K=s+o|0;l=(u|0)<(K|0)?K:u;Yx(d,32,l,K,m);Rx(d,p,o);Yx(d,48,l,K,m^65536);Yx(d,48,s,t,0);Rx(d,r,t);Yx(d,32,l,K,m^8192)}while(0);n=v}g:do if((w|0)==92)if(!d)if(!n)e=0;else{e=1;while(1){l=c[i+(e<<2)>>2]|0;if(!l)break;Tx(h+(e<<3)|0,l,f,k);e=e+1|0;if(e>>>0>=10){e=1;break g}}while(1){if(c[i+(e<<2)>>2]|0){e=-1;break g}e=e+1|0;if(e>>>0>=10){e=1;break}}}while(0);zb=J;return e|0}function Px(a){a=a|0;return 1}function Qx(a){a=a|0;return}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))by(b,d,a)|0;return}function Sx(b){b=b|0;var d=0,e=0;if(!(Gx(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((Gx(a[e>>0]|0)|0)!=0)}return d|0}function Tx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);e=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=e;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);h=+g[f>>3];c[d>>2]=f+8;g[a>>3]=h;break a}case 18:{Ub[e&63](a,d);break a}default:break a}while(0);while(0);return}function Ux(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6672+(b&15)>>0]|0|f;b=TO(b|0,c|0,4)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return e|0}function Vx(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=TO(b|0,c|0,3)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return d|0}function Wx(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){do{e=b;b=SO(b|0,c|0,10,0)|0;f=c;c=F()|0;g=NO(b|0,c|0,10,0)|0;g=PO(e|0,f|0,g|0,F()|0)|0;F()|0;d=d+-1|0;a[d>>0]=g&255|48}while(f>>>0>9|(f|0)==9&e>>>0>4294967295);c=b}else c=b;if(c)do{g=c;c=(c>>>0)/10|0;d=d+-1|0;a[d>>0]=g-(c*10|0)|48}while(g>>>0>=10);return d|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else i=16;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)==g<<24>>24)if(!e){i=16;break}else break;f=B(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break c;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break}}else i=11;while(0);if((i|0)==11)if(!e){i=16;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;e=e+-1|0;if(!e){i=16;break}else b=b+1|0}}while(0);if((i|0)==16)b=0;return b|0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;aP(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Rx(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Rx(a,f,e)}zb=g;return}function Zx(a,b){a=a|0;b=b|0;if(!a)a=0;else a=_x(a,b,0)|0;return a|0}function _x(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}e=($x()|0)+188|0;if(!(c[c[e>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}}else b=1;while(0);return b|0}function $x(){return ay()|0}function ay(){return 16020}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(cy(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=Jb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){h=0;g=b}else{i=d;while(1){g=i+-1|0;if((a[b+g>>0]|0)==10)break;if(!g){h=0;g=b;break b}else i=g}f=Jb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}while(0);_O(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function cy(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function dy(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function ey(a,b){a=+a;b=b|0;var d=0,e=0,f=0;g[h>>3]=a;d=c[h>>2]|0;e=c[h+4>>2]|0;f=TO(d|0,e|0,52)|0;F()|0;switch(f&2047){case 0:{if(a!=0.0){a=+ey(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[h>>2]=d;c[h+4>>2]=e&-2146435073|1071644672;a=+g[h>>3]}}return +a}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;_O(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function gy(){return 16264}function hy(){var a=0;a=(iy()|0)+188|0;return ((c[c[a>>2]>>2]|0)==0?1:4)|0}function iy(){return ay()|0}function jy(){return 16268}function ky(){return 16272}function ly(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function my(a){a=a|0;return (((a|32)+-97|0)>>>0<6|(Gx(a)|0)!=0)&1|0}function ny(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ox()|0;c[b>>2]=0-a;a=-1}return a|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=zb;zb=zb+208|0;j=m;k=m+192|0;h=B(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)py(a,d,e,f,j);else ry(a,d,e,k,f,0,j);if((f|0)==1){sy(k,1);f=0;break}else{sy(k,b);f=1;break}}else{py(a,d,e,f,j);qy(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}ry(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{sy(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;qy(k,1);ry(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);sy(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;ry(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=ty(k)|0;qy(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);zb=m;return}function py(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Ib[d&63](h,a)|0)>-1?(Ib[d&63](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Ib[d&63](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);vy(b,l,e);zb=m;return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function ry(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=zb;zb=zb+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Ib[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Ib[d&63](g,j)|0)>-1){i=10;break a}if((Ib[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=ty(m)|0;qy(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Ib[d&63](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){vy(b,n,e);py(a,b,d,f,h)}zb=o;return}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=uy(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function uy(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function vy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=zb;zb=zb+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;_O(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;_O(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);zb=h;return}function wy(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[10528+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=10624;else{b=f;g=5}if((g|0)==5){f=10624;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return xy(f,c[e+20>>2]|0)|0}function xy(a,b){a=a|0;b=b|0;return yy(a,b)|0}function yy(a,b){a=a|0;b=b|0;if(!b)b=0;else b=zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Ay(c[b+8>>2]|0,o)|0;f=Ay(c[b+12>>2]|0,o)|0;g=Ay(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Ay(c[b+(g<<2)>>2]|0,o)|0;g=Ay(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fx(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Ay(c[b+(f<<2)>>2]|0,o)|0;f=Ay(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Ay(a,b){a=a|0;b=b|0;var c=0;c=WO(a|0)|0;return ((b|0)==0?a:c)|0}function By(a){a=a|0;var b=0;b=(Cy()|0)+188|0;return wy(a,c[b>>2]|0)|0}function Cy(){return ay()|0}function Dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+104|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0}while((zx(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=yx(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;while(1){if((h|32|0)!=(a[46718+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=8){e=8;break}}c:do switch(e&2147483647|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;while(1){if((h|32|0)!=(a[46727+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=3){e=3;break}}}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|0)!=40){if(!(c[n>>2]|0)){g=q;break a}c[o>>2]=(c[o>>2]|0)+-1;g=q;break a}e=1;while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=yx(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=q;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}if(!e){g=q;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=q;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|32|0)==120){g=+Ey(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+Fy(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*r}while(0);return +g}function Ey(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+104|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=0;a:while(1){switch(i|0){case 46:{w=10;break a}case 48:break;default:{p=0;m=j;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=1}if((w|0)==10){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;if((i|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;l=OO(l|0,j|0,-1,-1)|0;j=F()|0}while((i|0)==48);p=1;m=1}else{p=1;m=j;l=0;j=0}}o=0;n=1.0;h=0.0;v=0;s=p;t=m;u=0;m=0;while(1){q=i+-48|0;p=i|32;if(q>>>0>=10){r=(i|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=n;q=v;r=t;l=m;j=u;p=u}else{i=46;break}else w=24}else w=24;if((w|0)==24){w=0;i=(i|0)>57?p+-87|0:q;do if(!((u|0)<0|(u|0)==0&m>>>0<8))if((u|0)<0|(u|0)==0&m>>>0<14){n=n*.0625;k=n;h=h+n*+(i|0);i=v;break}else{i=(o|0)!=0|(i|0)==0;o=i?o:1;k=n;h=i?h:h+n*.5;i=v;break}else{k=n;i=i+(v<<4)|0}while(0);m=OO(m|0,u|0,1,0)|0;q=i;r=1;p=F()|0}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;n=k;v=q;t=r;u=p}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i?(c[y>>2]=(c[y>>2]|0)+-1,!((s|0)==0|i)):0)c[y>>2]=(c[y>>2]|0)+-1}else wx(a,0,0);h=+(f|0)*0.0}else{o=(s|0)==0;p=o?m:l;o=o?u:j;if((u|0)<0|(u|0)==0&m>>>0<8){j=v;l=u;do{j=j<<4;w=m;m=OO(m|0,l|0,1,0)|0;v=l;l=F()|0}while((v|0)<0|(v|0)==0&w>>>0<7);m=j}else m=v;if((i|32|0)==112){j=Gy(a,g)|0;i=F()|0;if((j|0)==0&(i|0)==-2147483648){if(!g){wx(a,0,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=UO(p|0,o|0,2)|0;l=OO(l|0,F()|0,-32,-1)|0;l=OO(l|0,F()|0,j|0,i|0)|0;i=F()|0;if(!m){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=OO(l|0,i|0,-1,-1)|0;i=F()|0}while((j|0)>-1);n=h;m=j}else n=h;y=((b|0)<0)<<31>>31;e=PO(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=OO(e|0,F()|0,l|0,i|0)|0;e=F()|0;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=65;else{j=0;i=84;w=67}else{i=b;w=65}if((w|0)==65)if((i|0)<53){j=i;i=84-i|0;w=67}else{k=0.0;h=+(f|0)}if((w|0)==67){h=+(f|0);k=+Iy(+Hy(1.0,i),h);i=j}f=(m&1|0)==0&(n!=0.0&(i|0)<32);h=(f?0.0:n)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0)){f=ox()|0;c[f>>2]=68}h=+Ky(h,l)}while(0);return +h}function Fy(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0.0;I=zb;zb=zb+512|0;E=I;G=f+e|0;H=0-G|0;D=a+4|0;C=a+104|0;j=0;a:while(1){switch(b|0){case 46:{z=7;break a}case 48:break;default:{v=0;p=j;j=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;j=1}if((z|0)==7){b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48){j=0;b=0;while(1){j=OO(j|0,b|0,-1,-1)|0;o=F()|0;b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48)b=o;else{v=1;p=1;break}}}else{v=1;p=j;j=0;o=0}}c[E>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=E+496|0;w=0;l=0;s=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;j=p;o=n}else break c;else{p=OO(p|0,n|0,1,0)|0;n=F()|0;v=(b|0)!=48;if((l|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=E+(l<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;l=l+(y&1)|0;s=v?p:s;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=31;break b}}b=w;m=(y|0)!=0;z=39}else{w=0;l=0;s=0;m=p;p=0;n=0;z=31}while(0);do if((z|0)==31){A=(v|0)==0;j=A?p:j;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=39;break}else{b=w;z=41;break}m=Gy(a,h)|0;b=F()|0;if((m|0)==0&(b|0)==-2147483648){if(!h){wx(a,0,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}j=OO(m|0,b|0,j|0,o|0)|0;b=w;o=F()|0;z=43}while(0);if((z|0)==39)if(c[C>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m)z=43;else z=42}else z=41;if((z|0)==41)if(m)z=43;else z=42;do if((z|0)==42){H=ox()|0;c[H>>2]=28;wx(a,0,0);i=0.0}else if((z|0)==43){m=c[E>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((j|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&j>>>0>a>>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&j>>>0
>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=E+(l<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}l=l+1|0}if((s|0)<9?(s|0)<=(j|0)&(j|0)<18:0){if((j|0)==9){i=+(g|0)*+((c[E>>2]|0)>>>0);break}if((j|0)<9){i=+(g|0)*+((c[E>>2]|0)>>>0)/+(c[12432+(8-j<<2)>>2]|0);break}a=e+27+(B(j,-3)|0)|0;b=c[E>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[12432+(j+-10<<2)>>2]|0);break}}b=(j|0)%9|0;if(!b)m=0;else{s=(j|0)>-1?b:b+9|0;o=c[12432+(8-s<<2)>>2]|0;if(l){p=1e9/(o|0)|0;n=0;m=0;b=0;do{C=E+(b<<2)|0;D=c[C>>2]|0;a=(D>>>0)/(o>>>0)|0;D=D-(B(a,o)|0)|0;a=a+n|0;c[C>>2]=a;n=B(p,D)|0;a=(b|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;b=b+1|0}while((b|0)!=(l|0));if(!n)b=l;else{c[E+(l<<2)>>2]=n;b=l+1|0}}else{m=0;b=0}l=b;j=9-s+j|0}b=0;d:while(1){v=(j|0)<18;w=(j|0)==18;x=E+(m<<2)|0;while(1){if(!v){if(!w)break d;if((c[x>>2]|0)>>>0>=9007199){j=18;break d}}n=0;y=l;l=l+127|0;while(1){p=l&127;o=E+(p<<2)|0;l=UO(c[o>>2]|0,0,29)|0;l=OO(l|0,F()|0,n|0,0)|0;n=F()|0;if(n>>>0>0|(n|0)==0&l>>>0>1e9){s=SO(l|0,n|0,1e9,0)|0;a=NO(s|0,F()|0,1e9,0)|0;l=PO(l|0,n|0,a|0,F()|0)|0;F()|0}else s=0;c[o>>2]=l;a=(p|0)==(m|0);o=(p|0)!=(y+127&127|0)|a?y:(l|0)==0?p:y;if(a)break;else{n=s;y=o;l=p+-1|0}}b=b+-29|0;if(!s)l=y;else break}m=m+127&127;l=o+127&127;n=E+((o+126&127)<<2)|0;if((m|0)==(o|0))c[n>>2]=c[n>>2]|c[E+(l<<2)>>2];else l=y;c[E+(m<<2)>>2]=s;j=j+9|0}e:while(1){w=l+1&127;x=E+((l+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){o=0;while(1){m=o+y&127;if((m|0)==(l|0)){z=92;break}m=c[E+(m<<2)>>2]|0;n=c[16276+(o<<2)>>2]|0;if(m>>>0>>0){z=92;break}if(m>>>0>n>>>0)break;if((o+1|0)>>>0<2)o=1;else{z=92;break}}if((z|0)==92?(z=0,p):0)break e;b=v+b|0;if((y|0)==(l|0))y=l;else break}p=(1<>>v;o=0;m=y;n=y;do{C=E+(n<<2)|0;D=c[C>>2]|0;a=(D>>>v)+o|0;c[C>>2]=a;o=B(D&p,s)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(l|0));if(o|0){if((w|0)!=(m|0))break;c[x>>2]=c[x>>2]|1}}c[E+(l<<2)>>2]=o;l=w}i=0.0;j=l;m=0;do{n=m+y&127;l=j+1&127;if((n|0)==(j|0)){c[E+(l+-1<<2)>>2]=0;j=l}i=i*1.0e9+ +((c[E+(n<<2)>>2]|0)>>>0);m=m+1|0}while((m|0)!=2);u=+(g|0);k=i*u;n=b+53|0;o=n-f|0;p=(o|0)<(e|0);m=p?((o|0)>0?o:0):e;if((m|0)<53){J=+Iy(+Hy(1.0,105-m|0),k);q=+Jy(k,+Hy(1.0,53-m|0));r=J;i=q;q=J+(k-q)}else{r=0.0;i=0.0;q=k}l=y+2&127;if((l|0)!=(j|0)){l=c[E+(l<<2)>>2]|0;do if(l>>>0>=5e8){if((l|0)!=5e8){i=u*.75+i;break}if((y+3&127|0)==(j|0)){i=u*.5+i;break}else{i=u*.75+i;break}}else{if((l|0)==0?(y+3&127|0)==(j|0):0)break;i=u*.25+i}while(0);if((53-m|0)>1?!(+Jy(i,1.0)!=0.0):0)k=i+1.0;else k=i}else k=i;i=q+k-r;do if((n&2147483647|0)>(-2-G|0)){G=!(+t(+i)>=9007199254740992.0);b=b+((G^1)&1)|0;i=G?i:i*.5;if((b+50|0)<=(H|0)?!(k!=0.0&(p&((m|0)!=(o|0)|G))):0)break;H=ox()|0;c[H>>2]=68}while(0);i=+Ky(i,b)}while(0);zb=I;return +i}function Gy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=a+4|0;e=c[i>>2]|0;j=a+104|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;f=d[e>>0]|0}else f=yx(a)|0;switch(f|0){case 43:case 45:{g=(f|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;f=e+-48|0;if((b|0)!=0&f>>>0>9)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;k=14}else k=12;break}default:{g=0;e=f;f=f+-48|0;k=12}}if((k|0)==12)if(f>>>0>9)k=14;else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&(f|0)<214748364);h=((f|0)<0)<<31>>31;if(b>>>0<10){do{l=NO(f|0,h|0,10,0)|0;b=F()|0;e=OO(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=OO(e|0,F()|0,l|0,b|0)|0;h=F()|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&((h|0)<21474836|(h|0)==21474836&f>>>0<2061584302));if(b>>>0<10){do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0}while((e+-48|0)>>>0<10);e=h}else e=h}else e=h;if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;j=(g|0)==0;i=PO(0,0,f|0,e|0)|0;l=F()|0;f=j?f:i;e=j?e:l}if((k|0)==14)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;f=0;e=-2147483648}E(e|0);return f|0}function Hy(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=UO(b+1023|0,0,52)|0;e=F()|0;c[h>>2]=d;c[h+4>>2]=e;return +(a*+g[h>>3])}function Iy(a,b){a=+a;b=+b;return +(+Ex(a,b))}function Jy(a,b){a=+a;b=+b;return +(+Ly(a,b))}function Ky(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function Ly(a,b){a=+a;b=+b;var d=0,e=0,f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g[h>>3]=a;j=c[h>>2]|0;l=c[h+4>>2]|0;g[h>>3]=b;n=c[h>>2]|0;o=c[h+4>>2]|0;e=TO(j|0,l|0,52)|0;F()|0;e=e&2047;m=TO(n|0,o|0,52)|0;F()|0;m=m&2047;p=l&-2147483648;i=UO(n|0,o|0,1)|0;k=F()|0;a:do if(!((i|0)==0&(k|0)==0)?(f=My(b)|0,d=(F()|0)&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=UO(j|0,l|0,1)|0;f=F()|0;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>i>>>0))return +((d|0)==(i|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=UO(j|0,l|0,12)|0;f=F()|0;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=UO(d|0,f|0,1)|0;f=F()|0}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;j=UO(j|0,l|0,1-e|0)|0;i=F()|0}else i=l&1048575|1048576;if(!m){f=UO(n|0,o|0,12)|0;k=F()|0;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=UO(f|0,k|0,1)|0;k=F()|0}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=UO(n|0,o|0,1-d|0)|0;m=d;l=F()|0}else l=o&1048575|1048576;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=j;d=i}j=UO(f|0,d|0,1)|0;i=F()|0;e=e+-1|0;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=i;f=j}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=UO(f|0,d|0,1)|0;d=F()|0;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=OO(f|0,d|0,0,-1048576)|0;d=F()|0;e=UO(e|0,0,52)|0;d=d|(F()|0);e=o|e}else{e=TO(f|0,d|0,1-e|0)|0;d=F()|0}c[h>>2]=e;c[h+4>>2]=d|p;b=+g[h>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function My(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function Ny(a){a=a|0;return 0}function Oy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Py(a,b){a=a|0;b=b|0;return -1|0}function Qy(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ny(_(91,e|0)|0)|0;zb=d;return b|0}function Sy(b,c){b=b|0;c=c|0;b=Ty(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Ty(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Qy(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=B(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Uy(){return}function Vy(a){a=a|0;if(Wy(a)|0)GO(a);return}function Wy(a){a=a|0;return (a|0)!=15980&((a|0)!=0&(a|0)!=55596)&1|0}function Xy(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;h=l;j=(g|0)==0?55624:g;g=c[j>>2]|0;a:do if(!e)if(!g)g=0;else k=19;else{i=(b|0)==0?h:b;if(!f)g=-2;else{if(!g){g=a[e>>0]|0;if(g<<24>>24>-1){c[i>>2]=g&255;g=g<<24>>24!=0&1;break}h=(Yy()|0)+188|0;g=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=g<<24>>24&57343;g=1;break}g=(g&255)+-194|0;if(g>>>0>50){k=19;break}g=c[5728+(g<<2)>>2]|0;h=f+-1|0;if(h){e=e+1|0;k=11}}else{h=f;k=11}b:do if((k|0)==11){b=d[e>>0]|0;m=b>>>3;if((m+-16|m+(g>>26))>>>0>7){k=19;break a}g=b+-128|g<<6;b=h+-1|0;if((g|0)<0)do{e=e+1|0;if(!b)break b;h=a[e>>0]|0;if((h&-64)<<24>>24!=-128){k=19;break a}g=(h&255)+-128|g<<6;b=b+-1|0}while((g|0)<0);c[j>>2]=0;c[i>>2]=g;g=f-b|0;break a}while(0);c[j>>2]=g;g=-2}}while(0);if((k|0)==19){c[j>>2]=0;g=ox()|0;c[g>>2]=25;g=-1}zb=l;return g|0}function Yy(){return ay()|0}function Zy(a,b){a=a|0;b=b|0;return Gx(a)|0}function _y(a,b){a=a|0;b=b|0;return my(a)|0}function $y(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+272|0;m=o;n=o+256|0;do if(!(a[d>>0]|0)){d=Ja(46731)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(12464+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(46738)|0;if(d|0?a[d>>0]|0:0)break;d=46743}while(0);e=0;a:while(1){switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0;if(e>>>0>=15){e=15;break}}f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)l=15;else{k=d;l=16}else{d=46743;l=15}if((l|0)==15)if(!(a[d+1>>0]|0))l=18;else{k=d;l=16}b:do if((l|0)==16)if((Fx(k,46743)|0)!=0?(Fx(k,46751)|0)!=0:0){d=c[13907]|0;if(d|0)do{if(!(Fx(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);U(55632);d=c[13907]|0;c:do if(d|0){while(1){if(!(Fx(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}$(55632);break b}while(0);d:do if(((c[13885]|0)==0?(g=Ja(46757)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=Ty(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){_O(m|0,f|0,g|0)|0;f=m+g|0;a[f>>0]=47;_O(f+1|0,k|0,e|0)|0;a[m+(j+g)>>0]=0;f=V(m|0,n|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){l=41;break d}}d=FO(28)|0;if(!d){Ry(f,c[n>>2]|0)|0;l=41;break}else{c[d>>2]=f;c[d+4>>2]=c[n>>2];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d;break}}else l=41;while(0);if((l|0)==41){d=FO(28)|0;if(d){c[d>>2]=c[3988];c[d+4>>2]=c[3989];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d}}$(55632);d=(b|0)==0&(d|0)==0?15952:d}else{d=k;l=18}while(0);do if((l|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=15952;break}d=0}while(0);zb=o;return d|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+32|0;i=j;a:do if(!(Wy(d)|0)){h=(d|0)!=0;f=0;g=0;do{e=1<>2]|0;else e=$y(g,(e|0)==0?57671:b)|0;f=f+((e|0)!=0&1)|0;c[i+(g<<2)>>2]=e;g=g+1|0}while((g|0)!=6);switch(f&2147483647|0){case 0:{d=55596;break a}case 1:{if((c[i>>2]|0)==15952){d=15980;break a}break}default:{}}}else{e=0;do{if(1<>2]=i}e=e+1|0}while((e|0)!=6)}while(0);zb=j;return d|0}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=Jx(a,b,d,g)|0;zb=f;return e|0}function cz(a,b){a=a|0;b=b|0;dz(a,b)|0;return a|0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function ez(a){a=a|0;var b=0,d=0;b=(fz()|0)+188|0;d=c[b>>2]|0;if(a|0)c[b>>2]=(a|0)==(-1|0)?55572:a;return ((d|0)==55572?-1:d)|0}function fz(){return ay()|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}return a|0}function hz(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function iz(a){a=+a;return ~~+bP(+a)|0}function jz(a){a=a|0;var b=0,c=0;b=(Qy(a)|0)+1|0;c=FO(b)|0;if(!c)a=0;else a=_O(c|0,a|0,b|0)|0;return a|0}function kz(a,b){a=a|0;b=b|0;var c=0;c=Qy(a)|0;return ((lz(a,1,c,b)|0)!=(c|0))<<31>>31|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=B(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Px(e)|0)==0;a=by(a,f,e)|0;if(!g)Qx(e)}else a=by(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function mz(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+132>>2]|0;a=a+128|0;if(b|0)c[b+128>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(nz()|0)+232|0;else a=a+132|0;c[a>>2]=b}return}function nz(){return ay()|0}function oz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(cy(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Jb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);zb=l;return f|0}function pz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(qz()|0)+188|0;b=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[5728+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);b=ox()|0;c[b>>2]=25;b=-1}while(0);zb=j;return b|0}function qz(){return ay()|0}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;if(Sy(46770,a[d>>0]|0)|0){g=sz(d)|0|32768;c[e>>2]=b;c[e+4>>2]=g;c[e+8>>2]=438;e=ny(Y(5,e|0)|0)|0;if((e|0)>=0){b=tz(e,d)|0;if(!b){aa(e|0)|0;b=0}}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}zb=f;return b|0}function sz(b){b=b|0;var c=0,d=0,e=0;d=(Sy(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Sy(b,120)|0)==0;d=e?d:d|128;b=(Sy(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function tz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+48|0;i=j+24|0;g=j+8|0;f=j;h=j+40|0;if(Sy(46770,a[d>>0]|0)|0){e=FO(1176)|0;if(!e)e=0;else{aP(e|0,0,144)|0;k=(Sy(d,43)|0)==0;d=a[d>>0]|0;if(k)c[e>>2]=d<<24>>24==114?8:4;if(d<<24>>24==97){c[f>>2]=b;c[f+4>>2]=3;d=X(221,f|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;X(221,g|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+152;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[i>>2]=b,c[i+4>>2]=21523,c[i+8>>2]=h,(Z(54,i|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=2;c[e+36>>2]=1;c[e+40>>2]=1;c[e+12>>2]=2;if(!(c[13884]|0))c[e+76>>2]=-1;uz(e)|0}}else{e=ox()|0;c[e>>2]=28;e=0}zb=j;return e|0}function uz(a){a=a|0;var b=0,d=0;b=vz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;wz();return a|0}function vz(){U(55640);return 55648}function wz(){$(55640);return}function xz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=Px(a)|0;else f=0;mz(a);g=(c[a>>2]&1|0)!=0;if(!g){e=vz()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;wz()}b=yz(a)|0;b=Gb[c[a+12>>2]&127](a)|0|b;d=c[a+96>>2]|0;if(d|0)GO(d);if(g){if(f|0)Qx(a)}else GO(a);return b|0}function yz(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=zz(a)|0;break}d=(Px(a)|0)==0;b=zz(a)|0;if(!d)Qx(a)}else{if(!(c[4004]|0))b=0;else b=yz(c[4004]|0)|0;a=vz()|0;a=c[a>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Px(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=zz(a)|0|b;if(d|0)Qx(a);a=c[a+56>>2]|0}while((a|0)!=0);wz()}while(0);return b|0}function zz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0){g=e-g|0;Kb[c[a+40>>2]&15](a,g,((g|0)<0)<<31>>31,1)|0;F()|0}c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function Az(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=Px(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)Qx(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;j=Xx(h,10,p)|0;i=(j|0)==0;j=i?p:1-o+j|0;j=j>>>0>>0?j:g;_O(e|0,h|0,j|0)|0;h=(c[k>>2]|0)+j|0;c[k>>2]=h;e=e+j|0;j=g-j|0;if(!(i&(j|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=Ax(f)|0;if((g|0)<0)break;else h=g}else{c[k>>2]=h+1;h=d[h>>0]|0}i=e+1|0;a[e>>0]=h;g=j+-1|0;if((h&255|0)==10|(g|0)==0){e=i;n=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)Qx(f)}return b|0}function Bz(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Dz(a,b,f)|0;zb=e;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+144|0;f=e;aP(f|0,0,144)|0;c[f+32>>2]=35;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+84>>2]=a;d=Fz(f,b,d)|0;zb=e;return d|0}function Ez(a,b,c){a=a|0;b=b|0;c=c|0;return Jz(a,b,c)|0}function Fz(e,h,i){e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=zb;zb=zb+288|0;K=Q+264|0;L=Q;M=Q+260|0;N=Q+272|0;if((c[e+76>>2]|0)>-1)P=Px(e)|0;else P=0;j=a[h>>0]|0;a:do if(j<<24>>24){B=e+4|0;C=e+104|0;D=e+120|0;E=e+8|0;G=L+10|0;H=L+33|0;I=L+46|0;J=L+94|0;A=K+4|0;m=h;h=0;k=0;l=j;j=0;u=0;v=0;b:while(1){c:do if(!(zx(l&255)|0)){n=(a[m>>0]|0)==37;d:do if(n){l=m+1|0;o=a[l>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{z=0;l=m+2|0;break}default:{if(Gx(o&255)|0?(a[m+2>>0]|0)==36:0){z=Gz(i,(d[l>>0]|0)+-48|0)|0;l=m+3|0;break e}y=(c[i>>2]|0)+(4-1)&~(4-1);z=c[y>>2]|0;c[i>>2]=y+4}}while(0);if(!(Gx(d[l>>0]|0)|0)){r=0;o=l}else{m=0;do{m=(m*10|0)+-48+(d[l>>0]|0)|0;l=l+1|0}while((Gx(d[l>>0]|0)|0)!=0);r=m;o=l}n=a[o>>0]|0;q=o+1|0;if(n<<24>>24==109){l=(z|0)!=0&1;k=0;m=q;o=o+2|0;n=a[q>>0]|0;j=0}else{l=0;m=o;o=q}switch(n<<24>>24){case 104:{y=(a[o>>0]|0)==104;n=y?-2:-1;m=y?m+2|0:o;break}case 108:{y=(a[o>>0]|0)==108;n=y?3:1;m=y?m+2|0:o;break}case 106:{n=3;m=o;break}case 116:case 122:{n=1;m=o;break}case 76:{n=2;m=o;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=143;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:n;q=s&255;switch(q<<24>>24){case 99:{y=(r|0)>1?r:1;break}case 91:{y=r;break}case 110:{Hz(z,t,u,v);n=u;o=v;break c}default:{wx(e,0,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=yx(e)|0}while((zx(n)|0)!=0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}x=D;y=n-(c[E>>2]|0)|0;u=OO(c[x>>2]|0,c[x+4>>2]|0,u|0,v|0)|0;u=OO(u|0,F()|0,y|0,((y|0)<0)<<31>>31|0)|0;y=r;v=F()|0}}x=((y|0)<0)<<31>>31;wx(e,y,x);o=c[B>>2]|0;n=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((yx(e)|0)<0){O=143;break b}n=c[C>>2]|0}if(n|0)c[B>>2]=(c[B>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{w=(s|0)==99;g:do if((s|16|0)==115){aP(L|0,-1,257)|0;a[L>>0]=0;if((s|0)==115){a[H>>0]=0;b[G>>1]=0;b[G+2>>1]=0;a[G+4>>0]=0}}else{s=m+1|0;r=(a[s>>0]|0)==94;n=r&1;m=r?m+2|0:s;aP(L|0,n|0,257)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{q=(n^1)&255;a[I>>0]=q;m=m+1|0;break}case 93:{q=(n^1)&255;a[J>>0]=q;m=m+1|0;break}default:q=(n^1)&255}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=143;break b}case 93:break g;case 45:{o=m+1|0;n=a[o>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=q;n=a[o>>0]|0}while(m>>>0<(n&255)>>>0);m=o}else m=o;break}default:{}}while(0);a[L+((n&255)+1)>>0]=q;m=m+1|0}}while(0);n=w?y+1|0:31;s=(t|0)==1;t=(l|0)!=0;i:do if(s){if(t){j=FO(n<<2)|0;if(!j){k=0;j=0;O=143;break b}}else j=z;c[K>>2]=0;c[A>>2]=0;k=0;j:while(1){q=(j|0)==0;do{k:while(1){o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=yx(e)|0;if(!(a[L+(o+1)>>0]|0))break j;a[N>>0]=o;switch(Xy(M,N,1,K)|0){case -1:{k=0;O=143;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(t&(k|0)==(n|0)));n=n<<1|1;o=IO(j,n<<2)|0;if(!o){k=0;O=143;break b}else j=o}if(!(Iz(K)|0)){k=0;O=143;break b}else{q=k;k=0;r=j}}else{if(t){k=FO(n)|0;if(!k){k=0;j=0;O=143;break b}j=0;while(1){q=j;do{j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){r=0;j=0;break i}r=q;q=q+1|0;a[k+r>>0]=j}while((q|0)!=(n|0));n=n<<1|1;o=IO(k,n)|0;if(!o){j=0;O=143;break b}else{j=q;k=o}}}if(!z)while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=0;k=0;r=0;j=0;break i}}k=0;while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=k;k=z;r=0;j=0;break i}a[z+k>>0]=j;k=k+1|0}}while(0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}o=D;n=n-(c[E>>2]|0)|0;n=OO(c[o>>2]|0,c[o+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0;if((n|0)==0&(o|0)==0)break b;if(!((n|0)==(y|0)&(o|0)==(x|0)|w^1))break b;do if(t)if(s){c[z>>2]=r;break}else{c[z>>2]=k;break}while(0);if(!w){if(r|0)c[r+(q<<2)>>2]=0;if(!k){k=0;break f}a[k+q>>0]=0}break}case 120:case 88:case 112:{n=16;O=131;break}case 111:{n=8;O=131;break}case 117:case 100:{n=10;O=131;break}case 105:{n=0;O=131;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Dy(e,t,0);y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if(z)switch(t|0){case 0:{f[z>>2]=p;break f}case 1:{g[z>>3]=p;break f}case 2:{g[z>>3]=p;break f}default:break f}break}default:{}}while(0);do if((O|0)==131){O=0;n=xx(e,n,0,-1,-1)|0;o=F()|0;y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if((z|0)!=0&(s|0)==112){c[z>>2]=n;break}else{Hz(z,t,n,o);break}}while(0);o=D;n=(c[B>>2]|0)-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=h+((z|0)!=0&1)|0;o=F()|0;break c}while(0);m=m+(n&1)|0;wx(e,0,0);l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0;if((l|0)!=(d[m>>0]|0)){O=23;break b}n=OO(u|0,v|0,1,0)|0;o=F()|0}else{while(1){l=m+1|0;if(!(zx(d[l>>0]|0)|0))break;else m=l}wx(e,0,0);do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0}while((zx(l)|0)!=0);if(!(c[C>>2]|0))l=c[B>>2]|0;else{l=(c[B>>2]|0)+-1|0;c[B>>2]=l}o=D;n=l-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0}while(0);m=m+1|0;l=a[m>>0]|0;if(!(l<<24>>24))break a;else{u=n;v=o}}if((O|0)==23){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((h|0)!=0|(l|0)>-1)break;else{l=0;h=k;O=144}}else if((O|0)==143)if(!h){h=k;O=144}if((O|0)==144){k=h;h=-1}if(l){GO(k);GO(j)}}else h=0;while(0);if(P|0)Qx(e);zb=Q;return h|0}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}zb=e;return a|0}function Hz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function Iz(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=Xx(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;_O(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;return Mz(a,b,((b|0)<0)<<31>>31,c)|0}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Kx(a,b,f)|0;zb=e;return d|0}function Mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+76>>2]|0)>-1){f=(Px(a)|0)==0;b=Nz(a,b,d,e)|0;if(!f)Qx(a)}else b=Nz(a,b,d,e)|0;return b|0}function Nz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((e|0)==1){g=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;b=PO(b|0,d|0,g|0,((g|0)<0)<<31>>31|0)|0;d=F()|0}f=a+20|0;g=a+28|0;if((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[g>>2]=0;c[f>>2]=0;Kb[c[a+40>>2]&15](a,b,d,e)|0;if((F()|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function Oz(a,b){a=a|0;b=b|0;return Pz(a,b,(Qy(a)|0)+1|0)|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return Xy(0,a,b,(c|0)==0?55652:c)|0}function Rz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+1040|0;k=n;l=n+1024|0;j=c[b>>2]|0;c[l>>2]=j;m=(a|0)!=0;h=m?e:256;i=m?a:k;g=j;a:do if((h|0)!=0&(j|0)!=0){e=0;j=i;while(1){a=d>>>2;i=a>>>0>=h>>>0;if(!(d>>>0>131|i)){i=j;break a}a=i?h:a;d=d-a|0;a=Sz(j,l,a,f)|0;if((a|0)==-1)break;i=(j|0)==(k|0);h=h-(i?0:a)|0;i=i?j:j+(a<<2)|0;e=a+e|0;g=c[l>>2]|0;if((h|0)!=0&(g|0)!=0)j=i;else break a}e=-1;i=j;h=0;g=c[l>>2]|0}else e=0;while(0);b:do if((g|0)!=0?(h|0)!=0&(d|0)!=0:0){while(1){a=Xy(i,g,d,f)|0;if((a+2|0)>>>0<3)break;g=(c[l>>2]|0)+a|0;c[l>>2]=g;d=d-a|0;h=h+-1|0;e=e+1|0;if(!((h|0)!=0&(d|0)!=0))break b;else i=i+4|0}switch(a|0){case -1:{e=a;break b}case 0:{c[l>>2]=0;break b}default:{c[f>>2]=0;break b}}}while(0);if(m)c[b>>2]=c[l>>2];zb=n;return e|0}function Sz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){j=h;g=f;l=26}else{c[g>>2]=0;k=f;j=h;l=48}else l=5;a:do if((l|0)==5){l=(Tz()|0)+188|0;g=(b|0)!=0;if(c[c[l>>2]>>2]|0)if(g){g=f;l=33;break}else{g=f;l=15;break}if(!g){f=Qy(h)|0;l=63;break}b:do if(f){g=f;while(1){i=a[h>>0]|0;if(!(i<<24>>24))break;h=h+1|0;c[b>>2]=i<<24>>24&57343;g=g+-1|0;if(!g)break b;else b=b+4|0}c[b>>2]=0;c[e>>2]=0;f=f-g|0;l=63;break a}while(0);c[e>>2]=h;l=63}while(0);c:while(1){d:do if((l|0)==15){while(1){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){l=c[h>>2]|0;i=l&255;if(!((l+-16843009|l)&-2139062144)){do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(!((i+-16843009|i)&-2139062144|0));i=i&255}}i=i&255;if((i+-1|0)>>>0>=127)break;g=g+-1|0;h=h+1|0}i=i+-194|0;if(i>>>0>50)l=57;else{i=c[5728+(i<<2)>>2]|0;j=h+1|0;l=26;continue c}}else if((l|0)==26){l=(d[j>>0]|0)>>>3;if((l+-16|l+(i>>26))>>>0>7){h=j;l=56}else{h=j+1|0;if(i&33554432){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+2|0;if(i&524288){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+3|0}}g=g+-1|0;l=15;continue c}}else if((l|0)==33){l=0;e:do if(g){while(1){i=d[h>>0]|0;j=i+-1|0;if(j>>>0<127){if((h&3|0)==0&g>>>0>4){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144|0){l=42;break}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];j=h+4|0;i=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=i;h=j}else{l=41;break}}if((l|0)==41){b=i;h=j;i=a[j>>0]|0}else if((l|0)==42)i=i&255;i=i&255;j=i+-1|0;l=44}}else l=44;if((l|0)==44){l=0;if(j>>>0>=127)break}h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g)break e;else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=57;break d}i=c[5728+(i<<2)>>2]|0;k=g;j=h+1|0;l=48;continue c}while(0);c[e>>2]=h;l=63;continue c}else if((l|0)==48){l=0;g=d[j>>0]|0;h=g>>>3;if((h+-16|h+(i>>26))>>>0>7){h=j;g=k;l=56}else{h=j+1|0;g=g+-128|i<<6;do if((g|0)<0){i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+2|0;g=i|g<<6;if((g|0)>=0)break;i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+3|0;g=i|g<<6;break}}h=ox()|0;c[h>>2]=25;h=j+-1|0;break d}while(0);c[b>>2]=g;b=b+4|0;g=k+-1|0;l=33;continue c}}else if((l|0)==63)return f|0;while(0);if((l|0)==56){h=h+-1|0;if(!i)l=57;else{f=b;l=61}}if((l|0)==57)if(!(a[h>>0]|0)){if(b|0){c[b>>2]=0;c[e>>2]=0}f=f-g|0;l=63;continue}else{f=b;l=61}if((l|0)==61){l=ox()|0;c[l>>2]=25;if(!f){f=-1;l=63;continue}}c[e>>2]=h;f=-1;l=63}return 0}function Tz(){return ay()|0}function Uz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+272|0;i=l;j=l+256|0;f=c[b>>2]|0;c[j>>2]=f;k=(a|0)!=0;g=k?e:256;h=k?a:i;e=f;a:do if((g|0)!=0&(f|0)!=0){f=0;a=e;while(1){e=d>>>0>=g>>>0;if(!(e|d>>>0>32)){e=a;break a}e=e?g:d;d=d-e|0;e=Vz(h,j,e,0)|0;if((e|0)==-1)break;a=(h|0)==(i|0);g=g-(a?0:e)|0;h=a?h:h+e|0;f=e+f|0;e=c[j>>2]|0;if((g|0)!=0&(e|0)!=0)a=e;else break a}f=-1;g=0;e=c[j>>2]|0}else f=0;while(0);b:do if((e|0)!=0?(g|0)!=0&(d|0)!=0:0){while(1){a=_x(h,c[e>>2]|0,0)|0;if((a+1|0)>>>0<2)break;e=(c[j>>2]|0)+4|0;c[j>>2]=e;d=d+-1|0;g=g-a|0;f=a+f|0;if(!((g|0)!=0&(d|0)!=0))break b;else h=h+a|0}if(!a)c[j>>2]=0;else f=-1}while(0);if(k)c[b>>2]=c[j>>2];zb=l;return f|0}function Vz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;a:do if(!b){e=c[d>>2]|0;f=c[e>>2]|0;if(!f)e=0;else{b=e;e=0;do{if(f>>>0>127){f=_x(i,f,0)|0;if((f|0)==-1){e=-1;break a}}else f=1;e=f+e|0;b=b+4|0;f=c[b>>2]|0}while((f|0)!=0)}}else{b:do if(e>>>0>3){f=e;g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h)break;h=_x(b,h,0)|0;if((h|0)==-1){e=-1;break a}b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(f>>>0<=3)break b}a[b>>0]=0;c[d>>2]=0;e=e-f|0;break a}else f=e;while(0);if(f){g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){g=20;break}h=_x(i,h,0)|0;if((h|0)==-1){e=-1;break a}if(f>>>0>>0){g=23;break}_x(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f)break a}if((g|0)==20){a[b>>0]=0;c[d>>2]=0;e=e-f|0;break}else if((g|0)==23){e=e-f|0;break}}}while(0);zb=j;return e|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;Xz(a,b,c)|0;return a|0}function Xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);aP(b|0,0,e|0)|0;return b|0}function Yz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{i=e&255;h=f+(i>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(i&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{i=e&255;if(!(c[f+(i>>>5<<2)>>2]&1<<(i&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);zb=g;return d|0}function Zz(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(Px(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=Ax(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=Ax(a)|0;break}}while(0);return b|0}function _z(a){a=a|0;var b=0;b=54792;c[b>>2]=a+-1;c[b+4>>2]=0;return}function $z(){var a=0,b=0,d=0;b=54792;b=NO(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=OO(b|0,F()|0,1,0)|0;a=F()|0;d=54792;c[d>>2]=b;c[d+4>>2]=a;a=TO(b|0,a|0,33)|0;F()|0;return a|0}function aA(a,b){a=a|0;b=b|0;cz(a+(Qy(a)|0)|0,b)|0;return a|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=zb;zb=zb+16|0;e=h;c[e>>2]=c[d>>2];e=Jx(0,0,b,e)|0;if((e|0)>=0?(f=e+1|0,g=FO(f)|0,c[a>>2]=g,(g|0)!=0):0)a=Jx(g,f,b,d)|0;else a=-1;zb=h;return a|0}function cA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if((b|0)!=-1){if((c[d+76>>2]|0)>-1)g=Px(d)|0;else g=0;h=d+4|0;e=c[h>>2]|0;if(!e){Bx(d)|0;e=c[h>>2]|0;if(e|0){f=e;i=6}}else{f=e;i=6}if((i|0)==6?f>>>0>((c[d+44>>2]|0)+-8|0)>>>0:0){i=f+-1|0;c[h>>2]=i;a[i>>0]=b;c[d>>2]=c[d>>2]&-17;if(!g)break;Qx(d);break}if(g){Qx(d);b=-1}else b=-1}else b=-1;while(0);return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;if((c[a+76>>2]|0)>-1){e=(Px(a)|0)==0;d=eA(a)|0;b=F()|0;if(e)a=d;else{Qx(a);a=d}}else{a=eA(a)|0;b=F()|0}E(b|0);return a|0}function eA(a){a=a|0;var b=0,d=0,e=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Kb[c[a+40>>2]&15](a,0,0,b)|0;d=F()|0;if((d|0)>=0){e=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;e=PO(b|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=F()|0;b=(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;b=OO(e|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;d=F()|0}E(d|0);return b|0}function fA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Px(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=oz(d,b)|0;Qx(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=oz(d,b)|0}while(0);return e|0}function gA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=B(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=Px(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;_O(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(Bx(f)|0)break;h=Jb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)Qx(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)Qx(f);return e|0}function hA(a){a=a|0;var b=0;a=dA(a)|0;b=F()|0;if((b|0)>0|(b|0)==0&a>>>0>2147483647){a=ox()|0;c[a>>2]=61;a=-1}return a|0}function iA(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Qx(a)}else{Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function jA(a,b){a=a|0;b=b|0;return +(+kA(a,b,1))}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,i=0;g=zb;zb=zb+144|0;e=g;aP(e|0,0,144)|0;i=e+4|0;c[i>>2]=a;h=e+8|0;c[h>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;wx(e,0,0);f=+Dy(e,d,1);e=e+120|0;d=(c[i>>2]|0)-(c[h>>2]|0)|0;d=OO(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;e=F()|0;if(b|0)c[b>>2]=(d|0)==0&(e|0)==0?a:a+d|0;zb=g;return +f}function lA(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(zx(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(Gx(b)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Gx(a[c>>0]|0)|0)!=0)}return ((g|0)==0?0-b|0:b)|0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=zb;zb=zb+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){aP(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ty(b,e<<24>>24)|0;zb=h;return e-b|0}function nA(a,b){a=a|0;b=b|0;return +(+kA(a,b,0))}function oA(a,b){a=a|0;b=b|0;return +(+kA(a,b,2))}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+nA(a,b))}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+jA(a,b))}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+oA(a,b))}function sA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Qy(b)|0)|0;a:do if(d)while(1){g=a[c>>0]|0;if(!(g<<24>>24))break a;d=d+-1|0;f=e+1|0;a[e>>0]=g;if(!d){e=f;break}else{c=c+1|0;e=f}}while(0);a[e>>0]=0;return b|0}function tA(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[13914]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(Yz(b,d)|0)|0;if(!(a[b>>0]|0)){c[13914]=0;b=0;break}d=b+(mA(b,d)|0)|0;c[13914]=d;if(!(a[d>>0]|0)){c[13914]=0;break}else{c[13914]=d+1;a[d>>0]=0;break}}while(0);return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}return a|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(a-b>>2>>>0>=d>>>0){if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}}else do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}function wA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;e=zb;zb=zb+48|0;g=e+32|0;b=e+24|0;h=e+16|0;f=e;e=e+36|0;a=xA()|0;if(a|0?(d=c[a>>2]|0,d|0):0){a=d+48|0;if(!(yA(a)|0)){c[b>>2]=46910;AA(46860,b)}b=zA(a)|0;if((b|0)==1126902529&(F()|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Jb[c[(c[3470]|0)+16>>2]&63](13880,d,e)|0){h=c[e>>2]|0;h=Gb[c[(c[h>>2]|0)+8>>2]&127](h)|0;c[f>>2]=46910;c[f+4>>2]=a;c[f+8>>2]=h;AA(46774,f)}else{c[h>>2]=46910;c[h+4>>2]=a;AA(46819,h)}}AA(46898,g)}function xA(){return 55660}function yA(a){a=a|0;return 0}function zA(a){a=a|0;E(0);return 0}function AA(a,b){a=a|0;b=b|0;var d=0;d=zb;zb=zb+16|0;c[d>>2]=b;b=c[4001]|0;Kx(b,a,d)|0;fA(10,b)|0;ua()}function BA(a){a=a|0;return}function CA(a){a=a|0;BA(a);SA(a);return}function DA(a){a=a|0;return}function EA(a){a=a|0;return}function FA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+64|0;j=l;if(!(JA(d,e,0)|0))if((e|0)!=0?(k=NA(e,13904,13888,0)|0,(k|0)!=0):0){c[j>>2]=k;c[j+4>>2]=0;c[j+8>>2]=d;c[j+12>>2]=-1;d=j+16|0;e=j+24|0;g=j+48|0;h=d;i=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));b[d+36>>1]=0;a[d+38>>0]=0;c[g>>2]=1;Xb[c[(c[k>>2]|0)+28>>2]&31](k,j,c[f>>2]|0,1);if((c[e>>2]|0)==1){c[f>>2]=c[d>>2];d=1}else d=0}else d=0;else d=1;zb=l;return d|0}function GA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);return}function HA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(JA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}else LA(0,d,e,f);while(0);return}function IA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;if(d)a=(Fx(c[a+4>>2]|0,c[b+4>>2]|0)|0)==0;else a=(a|0)==(b|0);return a|0}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[b+4>>2]|0)==(d|0)?(f=b+28|0,(c[f>>2]|0)!=1):0)c[f>>2]=e;return}function MA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((f|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if((b|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function NA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;n=p;m=c[d>>2]|0;o=d+(c[m+-8>>2]|0)|0;m=c[m+-4>>2]|0;c[n>>2]=f;c[n+4>>2]=d;c[n+8>>2]=e;c[n+12>>2]=g;d=n+16|0;e=n+20|0;g=n+24|0;h=n+28|0;i=n+32|0;j=n+40|0;k=d;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[d+36>>1]=0;a[d+38>>0]=0;a:do if(JA(m,f,0)|0){c[n+48>>2]=1;Zb[c[(c[m>>2]|0)+20>>2]&7](m,n,o,o,1,0);d=(c[g>>2]|0)==1?o:0}else{Yb[c[(c[m>>2]|0)+24>>2]&63](m,n,o,1,0);switch(c[n+36>>2]|0){case 0:{d=(c[j>>2]|0)==1&(c[h>>2]|0)==1&(c[i>>2]|0)==1?c[e>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((c[g>>2]|0)!=1?!((c[j>>2]|0)==0&(c[h>>2]|0)==1&(c[i>>2]|0)==1):0){d=0;break}d=c[d>>2]|0}while(0);zb=p;return d|0}function OA(a){a=a|0;BA(a);SA(a);return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);else{a=c[a+8>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e,f,g)}return}function QA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){i=c[b+8>>2]|0;Yb[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;do if((c[f>>2]|0)!=4){h=d+52|0;a[h>>0]=0;j=d+53|0;a[j>>0]=0;b=c[b+8>>2]|0;Zb[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if(a[j>>0]|0){j=(a[h>>0]|0)==0;c[f>>2]=3;if(j)break;else break a}else{c[f>>2]=4;break}}while(0);c[i>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function RA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);else{a=c[a+8>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d,e)}return}function SA(a){a=a|0;GO(a);return}function TA(a){a=a|0;return}function UA(){var a=0,b=0;a=xA()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?yA(b+48|0)|0:0)VA(c[b+12>>2]|0);VA(WA()|0)}function VA(a){a=a|0;var b=0;b=zb;zb=zb+16|0;Rb[a&1]();AA(47049,b)}function WA(){return 1}function XA(a){a=a|0;return}function YA(a){a=a|0;c[a>>2]=16372;aB(a+4|0);return}function ZA(a){a=a|0;YA(a);SA(a);return}function _A(a){a=a|0;return $A(a+4|0)|0}function $A(a){a=a|0;return c[a>>2]|0}function aB(a){a=a|0;var b=0,d=0;if(bB(a)|0?(b=cB(c[a>>2]|0)|0,d=b+8|0,a=c[d>>2]|0,c[d>>2]=a+-1,(a|0)<1):0)SA(b);return}function bB(a){a=a|0;return 1}function cB(a){a=a|0;return a+-12|0}function dB(a){a=a|0;YA(a);SA(a);return}function eB(a){a=a|0;BA(a);SA(a);return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;return JA(a,b,0)|0}function gB(a){a=a|0;BA(a);SA(a);return}function hB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(JA(b,c[d+8>>2]|0,h)|0)MA(0,d,e,f,g);else{r=d+52|0;j=a[r>>0]|0;q=d+53|0;i=a[q>>0]|0;p=c[b+12>>2]|0;m=b+16+(p<<3)|0;a[r>>0]=0;a[q>>0]=0;lB(b+16|0,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;a:do if((p|0)>1){n=d+24|0;o=b+8|0;p=d+54|0;b=b+24|0;do{i=i&1;j=j&1;if(a[p>>0]|0)break a;if(!(k<<24>>24)){if(l<<24>>24?(c[o>>2]&1|0)==0:0)break a}else{if((c[n>>2]|0)==1)break a;if(!(c[o>>2]&2))break a}a[r>>0]=0;a[q>>0]=0;lB(b,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;b=b+8|0}while(b>>>0>>0)}while(0);a[r>>0]=j<<24>>24!=0&1;a[q>>0]=i<<24>>24!=0&1}return}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){p=c[b+12>>2]|0;k=b+16+(p<<3)|0;mB(b+16|0,d,e,f,g);h=b+24|0;if((p|0)<=1)break;b=c[b+8>>2]|0;if((b&2|0)==0?(j=d+36|0,(c[j>>2]|0)!=1):0){if(!(b&1)){b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[j>>2]|0)==1)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+24|0;i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[j>>2]|0)==1?(c[b>>2]|0)==1:0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+54|0;while(1){if(a[b>>0]|0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;o=d+44|0;if((c[o>>2]|0)!=4){j=b+16+(c[b+12>>2]<<3)|0;k=d+52|0;f=d+53|0;l=d+54|0;m=b+8|0;n=d+24|0;h=0;i=b+16|0;b=0;b:while(1){if(i>>>0>=j>>>0){i=18;break}a[k>>0]=0;a[f>>0]=0;lB(i,d,e,e,1,g);if(a[l>>0]|0){i=18;break}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[m>>2]&1)){i=19;break b}else{b=1;break}if((c[n>>2]|0)==1){h=1;i=19;break b}if(!(c[m>>2]&2)){h=1;i=19;break b}else{h=1;b=1}}while(0);i=i+8|0}if((i|0)==18)if(b)i=19;else b=4;if((i|0)==19)b=3;c[o>>2]=b;if(h&1)break}c[p>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function jB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if(!(JA(b,c[d+8>>2]|0,0)|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;kB(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{kB(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else KA(0,d,e,f);while(0);return}function kB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;if(d){f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0}else f=0;a=c[a>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d+f|0,(g&2|0)==0?2:e);return}function lB(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e+h|0,(i&2|0)==0?2:f,g);return} +function $b(a){a=a|0;var b=0;b=zb;zb=zb+a|0;zb=zb+15&-16;return b|0}function ac(){return zb|0}function bc(a){a=a|0;zb=a}function cc(a,b){a=a|0;b=b|0;zb=a;Ab=b}function dc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0))b[k>>1]=0;else{a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function ec(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0))b[l>>1]=0;else{a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function fc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0))b[r>>1]=0;else{l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function gc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0)){a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}else b[k>>1]=0;while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function hc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0)){a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}else b[l>>1]=0;while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function ic(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0)){l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}else b[r>>1]=0;while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function jc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){b[e>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function kc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){b[e>>1]=0;a[t>>0]=0}else{a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function lc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){b[t>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function mc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}else{b[e>>1]=0;a[s>>0]=0}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function nc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}else{b[e>>1]=0;a[t>>0]=0}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function oc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}else{b[t>>1]=0;a[s>>0]=0}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function pc(a){a=a|0;return qc(a+8|0)|0}function qc(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(4)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=Ee(a)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function rc(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{Fe(b)|0;GO(c[a>>2]|0);c[a>>2]=0;a=0}return a|0}function sc(a){a=a|0;var b=0,d=0,e=0;d=zb;zb=zb+16|0;b=FO(7062432)|0;if(!b){Ue(0,3,41858,d);Ea(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;g[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=FO(B(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Ue(0,3,41858,d+8|0);Ea(1)}else{c[b+7062384>>2]=0;tc(b,0)|0;c[b+7062388>>2]=-1;uc(b,0)|0;vc(b,7)|0;zb=d;return b|0}return 0}function tc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;GO(c[d>>2]|0);c[d>>2]=0;d=0;break}b=FO(B(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Ue(0,3,41858,e);Ea(1)}else d=0}else d=0;else d=-1;while(0);zb=f;return d|0}function uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;f=i;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e|0){Zc(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{f=Yc(c[a+36>>2]|0,c[a+40>>2]|0)|0;c[d>>2]=f;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:break;default:{Ue(0,3,19740,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[16+(b<<2)>>2];Ue(0,3,19814,h);b=0}else b=0}else b=0}else b=-1;zb=i;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062392>>2]=b;c[a+7062396>>2]=0;a=0}return a|0}function wc(a){a=a|0;var b=0,d=0;if(!a)a=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d|0){Zc(d);c[b>>2]=0}GO(c[a+4834144>>2]|0);GO(c[a+4834148>>2]|0);GO(a);a=0}return a|0}function xc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function yc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function zc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ac(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Bc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Cc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Dc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Ec(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Fc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function Gc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function Hc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function Ic(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function Jc(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){g[a+7062416>>3]=b;a=0}else a=-1;return a|0}function Kc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{g[b>>3]=+g[a+7062416>>3];a=0}return a|0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;a:do if(a){d=a+4|0;if((c[d>>2]|0)!=(b|0)){if(b>>>0>=15){c[e>>2]=b;Ue(0,3,19909,e);a=-1;break}c[d>>2]=b;d=zd(b)|0;c[a+8>>2]=d;a=a+24|0;d=c[a>>2]|0;if(!(28704>>>(b&32767)&1))switch(d|0){case 1:{c[a>>2]=4;a=0;break a}case 4:{c[a>>2]=3;a=0;break a}default:{a=0;break a}}else switch(d|0){case 0:{c[a>>2]=1;a=0;break a}case 3:{c[a>>2]=4;a=0;break a}default:{a=0;break a}}}else a=0}else a=-1;while(0);zb=f;return a|0}function Mc(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0;P=zb;zb=zb+64|0;L=P+32|0;F=P+24|0;y=P;J=P+52|0;C=P+40|0;a:do if((a|0)!=0&(b|0)!=0){O=a+44|0;c[O>>2]=0;K=a+7062388|0;e=c[K>>2]|0;b:do if((e|0)==4){H=a+7062396|0;e=c[H>>2]|0;do if((e|0)>0)c[H>>2]=e+-1;else{B=a+16|0;D=c[B>>2]|0;E=a+7062400|0;z=(c[E>>2]|0)+D|0;z=(z|0)<255?z:255;c[J>>2]=z;G=a+7062404|0;A=D-(c[G>>2]|0)|0;A=(A|0)>0?A:0;c[J+4>>2]=A;c[J+8>>2]=D;f=b+12|0;h=a+36|0;i=a+40|0;j=a+12|0;k=a+20|0;n=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+4|0;s=a+7062384|0;t=a+24|0;u=a+32|0;v=a+7062416|0;w=a+48|0;x=a+7062424|0;e=0;while(1){if(e>>>0>=3)break;if((ed(c[f>>2]|0,c[h>>2]|0,c[i>>2]|0,c[a>>2]|0,c[j>>2]|0,c[J+(e<<2)>>2]|0,c[k>>2]|0,n,0)|0)<0){M=29;break}if((Oc(c[h>>2]|0,c[i>>2]|0,n,c[k>>2]|0,1e6,70,1.0,p,q)|0)<0){M=29;break}if((Tc(c[b>>2]|0,c[h>>2]|0,c[i>>2]|0,c[r>>2]|0,p,c[q>>2]|0,c[s>>2]|0,c[k>>2]|0,c[t>>2]|0,(c[u>>2]|0)+184|0,+g[v>>3],w,O,c[x>>2]|0)|0)<0){M=29;break}c[C+(e<<2)>>2]=c[O>>2];e=e+1|0}if((M|0)==29){e=-1;break a}if((c[a>>2]|0)==1){x=c[C+4>>2]|0;h=c[C+8>>2]|0;f=c[C>>2]|0;c[y>>2]=A;c[y+4>>2]=x;c[y+8>>2]=D;c[y+12>>2]=h;c[y+16>>2]=z;c[y+20>>2]=f;Ue(0,3,19958,y)}else{f=c[C>>2]|0;h=c[C+8>>2]|0}e=c[C+4>>2]|0;if((f|0)>(h|0)|(e|0)>(h|0)){f=(f|0)<(e|0)?A:z;c[B>>2]=f;e=f-D|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[G>>2]=e;if((c[a>>2]|0)==1){c[F>>2]=f;Ue(0,3,20034,F);c[H>>2]=c[a+7062392>>2];break}else{c[H>>2]=c[a+7062392>>2];break}}e=c[E>>2]|0;f=c[G>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+D|0)>254){c[E>>2]=1;e=1}if((D|0)<=(e|0))c[G>>2]=1;c[H>>2]=c[a+7062392>>2];break b}while(0);h=c[K>>2]|0;M=33}else{h=e;M=33}while(0);if((M|0)==33){c:do switch(h|0){case 3:{f=a+7062408|0;h=b+12|0;e=dd(c[f>>2]|0,c[h>>2]|0,9,-7)|0;if((e|0)<0)break a;e=c[f>>2]|0;k=a+4834144|0;e=ed(c[h>>2]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[a>>2]|0,c[a+12>>2]|0,0,0,k,c[e>>2]|0)|0;if((e|0)<0)break a;e=a+36|0;f=a+40|0;h=a+20|0;break}case 2:case 1:{i=a+7062396|0;e=c[i>>2]|0;if((e|0)>0){c[i>>2]=e+-1;M=48;break c}e=c[a+7062408>>2]|0;f=c[b+12>>2]|0;if((h|0)==1)e=bd(e,f,J)|0;else e=cd(e,f,J)|0;if((e|0)<0)break a;e=a+16|0;if((c[a>>2]|0)==1?(I=d[J>>0]|0,(c[e>>2]|0)!=(I|0)):0){c[L>>2]=(c[K>>2]|0)==1?20086:20093;c[L+4>>2]=I;Ue(0,3,20098,L)}c[e>>2]=d[J>>0];c[i>>2]=c[a+7062392>>2];M=48;break}default:M=48}while(0);if((M|0)==48){e=a+36|0;f=a+40|0;h=a+20|0;k=a+4834144|0;if((ed(c[b+12>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[h>>2]|0,k,0)|0)<0){e=-1;break}}i=a+15416|0;j=a+15408|0;if((Oc(c[e>>2]|0,c[f>>2]|0,k,c[h>>2]|0,1e6,70,1.0,i,j)|0)<0){e=-1;break}if((Tc(c[b>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a+4>>2]|0,i,c[j>>2]|0,c[a+7062384>>2]|0,c[h>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+g[a+7062416>>3],a+48|0,O,c[a+7062424>>2]|0)|0)<0){e=-1;break}}s=a+28|0;if((c[s>>2]|0)==1){Nc(a);e=0;break}t=a+4818296|0;q=c[t>>2]|0;r=a+24|0;p=0;while(1){if((p|0)>=(q|0))break;h=c[O>>2]|0;i=a+4818304+(p*264|0)|0;j=a+4818304+(p*264|0)+56|0;k=a+4818304+(p*264|0)+64|0;f=0;n=-1;l=.5;while(1){if((f|0)>=(h|0))break;m=+(c[a+48+(f<<8)>>2]|0);o=+(c[i>>2]|0)/m;if(!(o<.7|o>1.43)?(o=+g[a+48+(f<<8)+56>>3]-+g[j>>3],N=+g[a+48+(f<<8)+64>>3]-+g[k>>3],N=(o*o+N*N)/m,N-1){k=c[r>>2]|0;switch(k|0){case 2:case 1:case 0:break;case 4:case 3:{f=a+48+(n<<8)+40|0;m=+g[a+4818304+(p*264|0)+40>>3];if(!(+g[f>>3]>3];if(!(+g[e>>3]>3]}g[f>>3]=m;c[a+48+(n<<8)+8>>2]=c[a+4818304+(p*264|0)+8>>2];g[e>>3]=l;c[a+48+(n<<8)+12>>2]=c[a+4818304+(p*264|0)+12>>2];f=0;h=-1;m=1.0e8;while(1){if((f|0)==4)break;e=0;l=0.0;while(1){if((e|0)==4)break;b=e+f&3;Q=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];o=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;l=l+(Q*Q+o*o)}b=l>2]=(b+(c[a+4818304+(p*264|0)+20>>2]|0)|0)%4|0;c[a+48+(n<<8)+24>>2]=(b+(c[a+4818304+(p*264|0)+24>>2]|0)|0)%4|0;break d}default:{e=-1;break a}}e=a+48+(n<<8)+32|0;o=+g[a+4818304+(p*264|0)+32>>3];if(+g[e>>3]>3]=o;i=c[a+4818304+(p*264|0)+4>>2]|0;c[a+48+(n<<8)+4>>2]=i;j=a+4818304+(p*264|0)+16|0;f=-1;l=1.0e8;h=0;while(1){if((h|0)==4)break;e=0;m=0.0;while(1){if((e|0)==4)break;b=e+h&3;R=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];Q=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;m=m+(R*R+Q*Q)}if(m>2]|0)|0)%4|0;l=m}else e=f;f=e;h=h+1|0}c[a+48+(n<<8)+16>>2]=f;if(k>>>0<2){c[a+48+(n<<8)+8>>2]=i;g[a+48+(n<<8)+40>>3]=o;c[a+48+(n<<8)+20>>2]=f;break}else{c[a+48+(n<<8)+12>>2]=i;g[a+48+(n<<8)+48>>3]=o;c[a+48+(n<<8)+24>>2]=f;break}}}while(0);p=p+1|0}Nc(a);f=0;e=0;while(1){if((f|0)>=(c[t>>2]|0))break;M=a+4818304+(f*264|0)+256|0;b=c[M>>2]|0;c[M>>2]=b+1;if((b|0)<3){if((f|0)!=(e|0))_O(a+4818304+(e*264|0)|0,a+4818304+(f*264|0)|0,264)|0;e=e+1|0}f=f+1|0}c[t>>2]=e;f=c[O>>2]|0;k=0;while(1){if((k|0)>=(f|0))break;j=a+48+(k<<8)|0;h=c[a+48+(k<<8)+4>>2]|0;if((h|0)>=0){i=0;while(1){if((i|0)>=(e|0))break;if((c[a+4818304+(i*264|0)+4>>2]|0)==(h|0))break;i=i+1|0}if((i|0)==(e|0)){if((e|0)==60)break;e=e+1|0;c[t>>2]=e}_O(a+4818304+(i*264|0)|0,j|0,256)|0;c[a+4818304+(i*264|0)+256>>2]=1}k=k+1|0}if((c[s>>2]|0)==2)e=0;else{n=0;while(1){if((n|0)>=(e|0)){e=0;break a}i=a+4818304+(n*264|0)|0;j=a+4818304+(n*264|0)+56|0;k=a+4818304+(n*264|0)+64|0;h=0;while(1){if((h|0)>=(f|0))break;l=+(c[a+48+(h<<8)>>2]|0);R=+(c[i>>2]|0)/l;if(!(R<.7|R>1.43)?(Q=+g[a+48+(h<<8)+56>>3]-+g[j>>3],R=+g[a+48+(h<<8)+64>>3]-+g[k>>3],(Q*Q+R*R)/l<.5):0)break;h=h+1|0}if((h|0)==(f|0)){_O(a+48+(f<<8)|0,a+4818304+(n*264|0)|0,256)|0;f=f+1|0;c[O>>2]=f;e=c[t>>2]|0}n=n+1|0}}}else e=-1;while(0);zb=P;return e|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0;a:do switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+8>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}case 2:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+12>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}default:{f=c[a+44>>2]|0;e=0;while(1){if((e|0)>=(f|0))break a;b=a+48+(e<<8)+8|0;if((c[b>>2]|0)>-1?+g[a+48+(e<<8)+40>>3]<.5:0){c[b>>2]=-1;b=0}else b=1;d=a+48+(e<<8)+12|0;if(((c[d>>2]|0)>-1?+g[a+48+(e<<8)+48>>3]<.5:0)?(c[d>>2]=-1,(b|0)==0):0)c[a+48+(e<<8)+236>>2]=6;e=e+1|0}}}while(0);return}function Oc(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;r=(e|0)==1;if(r){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;h=(h|0)/4|0}c[k>>2]=0;n=d+8|0;o=a+-2|0;b=b+-2|0;l=d+1179664|0;e=0;while(1){if((e|0)>=(c[n>>2]|0)){q=5;break}m=d+12+(e<<2)|0;s=c[m>>2]|0;if(((((((!((s|0)<(h|0)|(s|0)>(f|0))?(p=d+131084+(e<<4)|0,(c[p>>2]|0)!=1):0)?(c[d+131084+(e<<4)+4>>2]|0)!=(o|0):0)?(c[d+131084+(e<<4)+8>>2]|0)!=1:0)?(c[d+131084+(e<<4)+12>>2]|0)!=(b|0):0)?(Pc(c[d>>2]|0,a,0,l,e+1|0,p,j+((c[k>>2]|0)*80048|0)|0)|0)>=0:0)?(Qc(c[m>>2]|0,j+((c[k>>2]|0)*80048|0)|0,i)|0)>=0:0)?(c[j+((c[k>>2]|0)*80048|0)>>2]=c[m>>2],s=c[k>>2]|0,g[j+(s*80048|0)+8>>3]=+g[d+655376+(e<<4)>>3],g[j+(s*80048|0)+16>>3]=+g[d+655376+(e<<4)+8>>3],s=s+1|0,c[k>>2]=s,(s|0)==60):0){e=60;break}e=e+1|0}if((q|0)==5)e=c[k>>2]|0;a=0;while(1){if((a|0)>=(e|0))break;l=a+1|0;m=j+(a*80048|0)+8|0;n=j+(a*80048|0)+16|0;h=j+(a*80048|0)|0;f=l;while(1){if((f|0)>=(e|0))break;t=+g[m>>3]-+g[j+(f*80048|0)+8>>3];i=+g[n>>3]-+g[j+(f*80048|0)+16>>3];i=t*t+i*i;e=c[h>>2]|0;a=j+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(i<+((e|0)/4|0|0))c[a>>2]=0}else if(i<+((b|0)/4|0|0))c[h>>2]=0;f=f+1|0;e=c[k>>2]|0}a=l}f=0;while(1){if((f|0)>=(e|0))break;if(!(c[j+(f*80048|0)>>2]|0)){b=f;while(1){a=b+1|0;if((a|0)>=(e|0))break;_O(j+(b*80048|0)|0,j+(a*80048|0)|0,80048)|0;b=a;e=c[k>>2]|0}e=e+-1|0;c[k>>2]=e}f=f+1|0}a:do if(r){b=0;while(1){if((b|0)>=(e|0))break a;c[j>>2]=c[j>>2]<<2;a=j+8|0;g[a>>3]=+g[a>>3]*2.0;a=j+16|0;g[a>>3]=+g[a>>3]*2.0;a=c[j+24>>2]|0;e=0;while(1){if((e|0)>=(a|0))break;s=j+28+(e<<2)|0;c[s>>2]=c[s>>2]<<1;s=j+40028+(e<<2)|0;c[s>>2]=c[s>>2]<<1;e=e+1|0}j=j+80048|0;b=b+1|0;e=c[k>>2]|0}}while(0);return 0}function Pc(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=zb;zb=zb+80032|0;n=w+80016|0;m=w+80008|0;j=w+8e4|0;u=w+4e4|0;v=w;s=c[h+8>>2]|0;t=B(s,d)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;r=e;e=a+(t+e<<1)|0;while(1){if((r|0)>(h|0)){t=7;break}t=b[e>>1]|0;if(t<<16>>16>0?(c[f+((t<<16>>16)+-1<<2)>>2]|0)==(g|0):0){t=6;break}r=r+1|0;e=e+2|0}do if((t|0)==6)if((r|0)!=-1){o=i+24|0;c[o>>2]=1;p=i+28|0;c[p>>2]=r;q=i+40028|0;c[q>>2]=s;g=5;e=s;l=r;f=1;while(1){k=a+((B(e,d)|0)+l<<1)|0;j=0;e=g+5|0;while(1){g=(e|0)%8|0;if(j>>>0>=8){t=13;break}e=c[48+(g<<2)>>2]|0;x=B(e,d)|0;h=c[80+(g<<2)>>2]|0;if((b[k+(x+h<<1)>>1]|0)>0)break;j=j+1|0;e=g+1|0}if((t|0)==13){t=0;if((j|0)==8){t=15;break}h=c[80+(g<<2)>>2]|0;e=c[48+(g<<2)>>2]|0}c[i+28+(f<<2)>>2]=h+l;j=c[o>>2]|0;c[i+40028+(j<<2)>>2]=e+(c[i+40028+(j+-1<<2)>>2]|0);j=c[o>>2]|0;h=i+28+(j<<2)|0;if((c[h>>2]|0)==(r|0)?(c[i+40028+(j<<2)>>2]|0)==(s|0):0){t=18;break}f=j+1|0;c[o>>2]=f;if((f|0)==9999){t=21;break}e=c[i+40028+(j<<2)>>2]|0;l=c[h>>2]|0}if((t|0)==15){Ue(0,3,20152,m);e=-1;break}else if((t|0)==18){f=0;e=0;h=1;while(1){if((h|0)>=(j|0))break;x=(c[i+28+(h<<2)>>2]|0)-r|0;x=B(x,x)|0;d=(c[i+40028+(h<<2)>>2]|0)-s|0;x=(B(d,d)|0)+x|0;d=(x|0)>(e|0);f=d?h:f;e=d?x:e;h=h+1|0}e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=c[i+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[i+40028+(e<<2)>>2];e=e+1|0}h=f;e=j;while(1){if((h|0)>=(e|0))break;e=h-f|0;c[i+28+(e<<2)>>2]=c[i+28+(h<<2)>>2];c[i+40028+(e<<2)>>2]=c[i+40028+(h<<2)>>2];h=h+1|0;e=c[o>>2]|0}e=0;while(1){if((e|0)>=(f|0))break;x=e-f|0;c[i+28+((c[o>>2]|0)+x<<2)>>2]=c[u+(e<<2)>>2];c[i+40028+((c[o>>2]|0)+x<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}c[i+28+(c[o>>2]<<2)>>2]=c[p>>2];c[i+40028+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1;e=0;break}else if((t|0)==21){Ue(0,3,20159,n);e=-1;break}}else t=7;while(0);if((t|0)==7){Ue(0,3,20145,j);e=-1}zb=w;return e|0}function Qc(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=zb;zb=zb+96|0;o=r+48|0;k=r+92|0;p=r;l=r+88|0;m=b+28|0;j=c[m>>2]|0;n=b+40028|0;h=c[n>>2]|0;q=b+24|0;i=(c[q>>2]|0)+-1|0;f=1;g=0;e=0;while(1){if((f|0)>=(i|0))break;t=(c[b+28+(f<<2)>>2]|0)-j|0;t=B(t,t)|0;u=(c[b+40028+(f<<2)>>2]|0)-h|0;t=(B(u,u)|0)+t|0;u=(t|0)>(g|0);s=u?f:e;f=f+1|0;g=u?t:g;e=s}d=+(a|0)/.75*.01*d;c[k>>2]=0;c[l>>2]=0;a:do if((Rc(m,n,0,e,d,o,k)|0)>=0?(Rc(m,n,e,(c[q>>2]|0)+-1|0,d,p,l)|0)>=0:0){f=c[k>>2]|0;g=c[l>>2]|0;do if((f|0)==1&(g|0)==1){f=c[p>>2]|0;g=c[o>>2]|0}else{if((f|0)>1&(g|0)==0){f=(e|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,0,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,e,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=e;g=c[o>>2]|0;e=c[p>>2]|0;break}if(!((f|0)==0&(g|0)>1)){e=-1;break a}f=(e+-1+(c[q>>2]|0)|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,e,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,(c[q>>2]|0)+-1|0,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=c[p>>2]|0;g=e;e=c[o>>2]|0}while(0);c[b+80028>>2]=0;c[b+80032>>2]=g;c[b+80036>>2]=e;c[b+80040>>2]=f;c[b+80044>>2]=(c[q>>2]|0)+-1;e=0}else e=-1;while(0);zb=r;return e|0}function Rc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0;j=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;l=+(j-q|0);i=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(i-r|0);n=+((B(r,q)|0)-(B(i,j)|0)|0);j=d+1|0;i=j;k=0.0;while(1){if((j|0)>=(e|0))break;s=l*+(c[a+(j<<2)>>2]|0)+m*+(c[b+(j<<2)>>2]|0)+n;s=s*s;r=s>k;i=r?j:i;j=j+1|0;k=r?s:k}if(k/(l*l+m*m)>f)if(((Rc(a,b,d,i,f,g,h)|0)>=0?(o=c[h>>2]|0,(o|0)<=5):0)?(c[g+(o<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(Rc(a,b,i,e,f,g,h)|0)>=0):0)p=8;else i=-1;else p=8;if((p|0)==8)i=0;return i|0}function Sc(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=zb;zb=zb+16|0;r=y+4|0;s=y;x=qe(2)|0;u=qe(2)|0;v=Dd(2,2)|0;k=0;a:while(1){if(k>>>0>=4){q=10;break}l=k+1|0;q=c[e+(l<<2)>>2]|0;n=c[e+(k<<2)>>2]|0;p=+(q+1-n|0)*.05+.5;n=~~(p+ +(n|0));q=~~(+(q|0)-p)-n|0;w=Dd(q+1|0,2)|0;d=0;while(1){if((d|0)>(q|0))break;z=d+n|0;if((pe(h,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),r,s)|0)<0){q=6;break a}A=c[w>>2]|0;z=d<<1;g[A+(z<<3)>>3]=+f[r>>2];g[A+((z|1)<<3)>>3]=+f[s>>2];d=d+1|0}if((Pd(w,v,x,u)|0)<0){q=14;break}A=c[v>>2]|0;o=+g[A+8>>3];g[i+(k*24|0)>>3]=o;p=-+g[A>>3];g[i+(k*24|0)+8>>3]=p;A=c[u>>2]|0;g[i+(k*24|0)+16>>3]=-(o*+g[A>>3]+ +g[A+8>>3]*p);Ld(w)|0;k=l}b:do if((q|0)==6)q=14;else if((q|0)==10){Ld(v)|0;re(u)|0;re(x)|0;d=0;while(1){if(d>>>0>=4){d=0;break b}k=d+3&3;l=i+(k*24|0)|0;m=+g[i+(d*24|0)+8>>3];n=i+(d*24|0)|0;o=+g[i+(k*24|0)+8>>3];p=+g[l>>3]*m-+g[n>>3]*o;if(+t(+p)<.0001){d=-1;break b}A=i+(d*24|0)+16|0;z=i+(k*24|0)+16|0;g[j+(d<<4)>>3]=(o*+g[A>>3]-m*+g[z>>3])/p;g[j+(d<<4)+8>>3]=(+g[n>>3]*+g[z>>3]-+g[l>>3]*+g[A>>3])/p;d=d+1|0}}while(0);if((q|0)==14){Ld(w)|0;Ld(v)|0;re(u)|0;re(x)|0;d=-1}zb=y;return d|0}function Tc(a,b,d,e,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=+n;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+16|0;A=G+4|0;B=G;C=l>>>0<2;D=(l|0)==2;z=0;r=0;while(1){if((z|0)>=(i|0))break;c[o+(r<<8)>>2]=c[h+(z*80048|0)>>2];if((pe(m,+g[h+(z*80048|0)+8>>3],+g[h+(z*80048|0)+16>>3],A,B)|0)>=0?(g[o+(r<<8)+56>>3]=+f[A>>2],g[o+(r<<8)+64>>3]=+f[B>>2],E=o+(r<<8)+168|0,(Sc(h+(z*80048|0)+28|0,h+(z*80048|0)+40028|0,c[h+(z*80048|0)+24>>2]|0,h+(z*80048|0)+80028|0,m,o+(r<<8)+72|0,E)|0)>=0):0){v=o+(r<<8)+8|0;s=o+(r<<8)+20|0;t=o+(r<<8)+40|0;w=o+(r<<8)+12|0;y=o+(r<<8)+24|0;x=o+(r<<8)+48|0;u=od(j,k,l,a,b,d,e,m,E,n,v,s,t,w,y,x,q,o+(r<<8)+240|0,o+(r<<8)+248|0)|0;switch(u|0){case 0:{F=12;break}case -1:{u=2;F=12;break}case -2:{u=3;F=12;break}case -3:{u=4;F=12;break}case -4:{u=5;F=12;break}case -5:{u=9;F=12;break}case -6:{u=1;F=12;break}default:{}}if((F|0)==12){F=0;c[o+(r<<8)+236>>2]=u}if(!C){if(D){c[o+(r<<8)+4>>2]=c[w>>2];t=x;s=y;F=17}}else{c[o+(r<<8)+4>>2]=c[v>>2];F=17}if((F|0)==17){F=0;c[o+(r<<8)+16>>2]=c[s>>2];g[o+(r<<8)+32>>3]=+g[t>>3]}r=r+1|0}z=z+1|0}c[p>>2]=r;zb=G;return 0}function Uc(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+288|0;h=m+192|0;i=m+96|0;j=m+264|0;k=m;l=m+256|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){f=b+24|0;break}else{f=b+16|0;break}else f=b+20|0;while(0);f=c[f>>2]|0;o=(4-f|0)%4|0;g[h>>3]=+g[b+168+(o<<4)>>3];g[h+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-f|0)%4|0;g[h+16>>3]=+g[b+168+(o<<4)>>3];g[h+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-f|0)%4|0;g[h+32>>3]=+g[b+168+(o<<4)>>3];g[h+40>>3]=+g[b+168+(o<<4)+8>>3];f=(7-f|0)%4|0;g[h+48>>3]=+g[b+168+(f<<4)>>3];g[h+56>>3]=+g[b+168+(f<<4)+8>>3];n=d*-.5;g[i>>3]=n;d=d*.5;g[i+8>>3]=d;g[i+16>>3]=0.0;g[i+24>>3]=d;g[i+32>>3]=d;g[i+40>>3]=0.0;g[i+48>>3]=d;g[i+56>>3]=n;g[i+64>>3]=0.0;g[i+72>>3]=n;g[i+80>>3]=n;g[i+88>>3]=0.0;c[j>>2]=h;c[j+4>>2]=i;c[j+8>>2]=4;if((Me(c[a>>2]|0,h,i,4,k)|0)<0)d=1.0e8;else{o=(He(c[a>>2]|0,j,k,e,l)|0)<0;d=o?1.0e8:+g[l>>3]}zb=m;return +d}function Vc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+192|0;i=m+96|0;j=m;k=m+168|0;l=m+160|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){h=b+24|0;break}else{h=b+16|0;break}else h=b+20|0;while(0);h=c[h>>2]|0;o=(4-h|0)%4|0;g[i>>3]=+g[b+168+(o<<4)>>3];g[i+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-h|0)%4|0;g[i+16>>3]=+g[b+168+(o<<4)>>3];g[i+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-h|0)%4|0;g[i+32>>3]=+g[b+168+(o<<4)>>3];g[i+40>>3]=+g[b+168+(o<<4)+8>>3];h=(7-h|0)%4|0;g[i+48>>3]=+g[b+168+(h<<4)>>3];g[i+56>>3]=+g[b+168+(h<<4)+8>>3];n=e*-.5;g[j>>3]=n;e=e*.5;g[j+8>>3]=e;g[j+16>>3]=0.0;g[j+24>>3]=e;g[j+32>>3]=e;g[j+40>>3]=0.0;g[j+48>>3]=e;g[j+56>>3]=n;g[j+64>>3]=0.0;g[j+72>>3]=n;g[j+80>>3]=n;g[j+88>>3]=0.0;c[k>>2]=i;c[k+4>>2]=j;c[k+8>>2]=4;k=(He(c[a>>2]|0,k,d,f,l)|0)<0;zb=m;return +(k?1.0e8:+g[l>>3])}function Wc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((He(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Xc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((Je(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Yc(a,b){a=a|0;b=b|0;var d=0;d=FO(2064)|0;if(d|0){c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b}return d|0}function Zc(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return}function _c(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0&(b|0)!=0){aP(a+12|0,0,1024)|0;e=b+(B(c[a+8>>2]|0,c[a+4>>2]|0)|0)|0;while(1){if(b>>>0>=e>>>0){b=0;break a}f=a+12+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}}else b=-1;while(0);return b|0}function $c(a,b){a=a|0;b=b|0;var d=0;b=_c(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+12+(d<<2)>>2]|0)+b|0;c[a+1036+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function ad(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;if(!(e<0.0|e>1.0)){d=$c(b,d)|0;if((d|0)>=0){i=~~(+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0)*e)>>>0;d=0;while(1){j=d&255;g=c[b+1036+(j<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}while(1){h=d+1<<24>>24;if((g|0)!=(i|0))break;d=h;g=c[b+1036+((h&255)<<2)>>2]|0}a[f>>0]=((d&255)+j|0)>>>1;d=0}}else d=-1;return d|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;return ad(a,b,.5,c)|0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0;d=_c(b,d)|0;if((d|0)>=0){m=0.0;d=1;do{m=m+ +((B(c[b+12+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0);d=0;h=0.0;j=0.0;g=0.0;l=0;while(1){f=c[b+12+(l<<2)>>2]|0;j=j+ +(f>>>0);if(j!=0.0){i=k-j;if(i==0.0)break;g=g+ +((B(f,l)|0)>>>0);o=g/j-(m-g)/i;i=o*(j*i*o);n=i>h;f=l&255;d=n?f:d;h=n?i:h}else f=l&255;if(f<<24>>24==-1)break;else l=l+1|0}a[e>>0]=d;d=0}return d|0}function dd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=_c(b,e)|0;a:do if((h|0)>=0){if(!(c[b>>2]|0)){h=b+4|0;i=b+8|0;s=FO(B(c[i>>2]|0,c[h>>2]|0)|0)|0;c[b>>2]=s;if(!s){h=-1;break}else{s=h;r=i}}else{s=b+4|0;r=b+8|0}p=f>>1;q=0-p|0;o=0;while(1){h=c[r>>2]|0;if((o|0)>=(h|0))break;l=0;while(1){n=c[s>>2]|0;if((l|0)>=(n|0))break;m=q;f=0;h=0;while(1){if((m|0)>(p|0))break;i=m+o|0;b:do if((i|0)>=0?(i|0)<(c[r>>2]|0):0){k=B(i,n)|0;j=q;i=f;while(1){if((j|0)>(p|0))break b;f=j+l|0;if((f|0)>-1&(f|0)<(n|0)){i=i+1|0;h=h+(d[e+(f+k)>>0]|0)|0}j=j+1|0}}else i=f;while(0);m=m+1|0;f=i}n=(c[b>>2]|0)+((B(n,o)|0)+l)|0;a[n>>0]=(h|0)/(f|0)|0;l=l+1|0}o=o+1|0}if(!g)h=0;else{i=0;while(1){if((i|0)>=(B(h,c[s>>2]|0)|0)){h=0;break a}h=(c[b>>2]|0)+i|0;a[h>>0]=(d[h>>0]|0)+g;i=i+1|0;h=c[r>>2]|0}}}while(0);return h|0}function ed(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;e=(e|0)==1;j=(i|0)!=0;do if(!d)if(e){if(j){e=fc(a,b,c,i,h)|0;break}if(!g){e=ec(a,b,c,f,h)|0;break}else{e=dc(a,b,c,f,h)|0;break}}else{if(j){e=ic(a,b,c,i,h)|0;break}if(!g){e=hc(a,b,c,f,h)|0;break}else{e=gc(a,b,c,f,h)|0;break}}else if(e){if(j){e=lc(a,b,c,i,h)|0;break}if(!g){e=kc(a,b,c,f,h)|0;break}else{e=jc(a,b,c,f,h)|0;break}}else{if(j){e=oc(a,b,c,i,h)|0;break}if(!g){e=nc(a,b,c,f,h)|0;break}else{e=mc(a,b,c,f,h)|0;break}}while(0);return e|0}function fd(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;a=0}else a=-1;return a|0}function gd(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;a=0}else a=-1;return a|0}function hd(){return id(16,50)|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+64|0;p=q+56|0;o=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;f=q+16|0;e=q+8|0;d=q;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){m=FO(32)|0;if(!m){Ue(0,3,41858,d);Ea(1)}c[m>>2]=0;c[m+4>>2]=b;c[m+28>>2]=a;l=FO(b<<2)|0;c[m+8>>2]=l;if(!l){Ue(0,3,41858,e);Ea(1)}d=b<<4;k=FO(d)|0;c[m+12>>2]=k;if(!k){Ue(0,3,41858,f);Ea(1)}f=FO(d)|0;j=m+20|0;c[j>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}d=b<<5;g=FO(d)|0;c[m+16>>2]=g;if(!g){Ue(0,3,41858,h);Ea(1)}h=FO(d)|0;c[m+24>>2]=h;if(!h){Ue(0,3,41858,i);Ea(1)}g=B(a,a)|0;f=g*12|0;g=g<<2;e=0;b:while(1){if((e|0)>=(b|0)){n=m;break a}c[l+(e<<2)>>2]=0;a=e<<2;d=0;while(1){if(d>>>0>=4)break;i=FO(f)|0;h=d+a|0;c[k+(h<<2)>>2]=i;if(!i){d=19;break b}i=FO(g)|0;c[(c[j>>2]|0)+(h<<2)>>2]=i;if(!i){d=21;break b}else d=d+1|0}e=e+1|0}if((d|0)==19){Ue(0,3,41858,o);Ea(1)}else if((d|0)==21){Ue(0,3,41858,p);Ea(1)}}else n=0;while(0);zb=q;return n|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)b=-1;else{f=a+4|0;g=a+8|0;h=a+12|0;i=a+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;if(c[(c[g>>2]|0)+(d<<2)>>2]|0)td(a,d)|0;e=d<<2;b=0;while(1){if((b|0)==4)break;j=b+e|0;GO(c[(c[h>>2]|0)+(j<<2)>>2]|0);GO(c[(c[i>>2]|0)+(j<<2)>>2]|0);b=b+1|0}d=d+1|0}GO(c[h>>2]|0);GO(c[i>>2]|0);GO(c[g>>2]|0);GO(c[a+16>>2]|0);GO(c[a+24>>2]|0);GO(a);b=0}return b|0}function kd(b,e,f,h,i,j,k){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+32|0;p=u+24|0;o=u;t=u+16|0;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-1}else{c[o>>2]=0;s=e+-1|0;q=B(s,e)|0;c[o+4>>2]=q;q=B(e,e)|0;c[o+8>>2]=q+-1;c[o+12>>2]=s;l=0;m=0;n=-1;while(1){if((l|0)==4)break;r=a[b+(c[o+(l<<2)>>2]|0)>>0]|0;l=l+1|0;m=(r&255)>(m&255)?r:m;n=(r&255)<(n&255)?r:n}m=m&255;l=n&255;if((m-l|0)<30){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-2;break}n=(m+l|0)>>>1;l=0;while(1){if((l|0)==4)break;a[p+l>>0]=n>>>0>(d[b+(c[o+(l<<2)>>2]|0)>>0]|0)>>>0&1;l=l+1|0}m=0;while(1){if(m>>>0>=4){l=18;break}l=m+1|0;if(((a[p+m>>0]|0)==1?(a[p+(l&3)>>0]|0)==1:0)?(a[p+(m+2&3)>>0]|0)==0:0){l=17;break}m=l}if((l|0)==17)c[h>>2]=m;else if((l|0)==18?(m|0)==4:0){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-3;break}r=255;l=0;while(1){if((l|0)==(q|0))break;o=b+l|0;m=d[o>>0]|0;p=m-n|0;p=(p|0)<0?0-p|0:p;a[o>>0]=n>>>0>m>>>0&1;r=(p|0)<(r|0)?p:r;l=l+1|0}l=c[h>>2]|0;b:do switch(l|0){case 0:{n=l;m=0;l=0;while(1){if((n|0)>=(e|0))break b;p=(n|0)==(s|0);q=B(n,e)|0;o=0;while(1){if((o|0)==(e|0))break;if((o|n|0)!=0?!(p&((o|0)==0|(o|0)==(s|0))):0){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+q)>>0]|0)!=0}o=o+1|0}n=n+1|0}}case 1:{o=0;m=0;l=0;while(1){if((o|0)>=(e|0))break b;p=(o|0)==0;q=(o|0)==(s|0);n=s;while(1){if((n|0)<=-1)break;h=(n|0)==(s|0);if(!(p&h)?!(q&(h|(n|0)==0)):0){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+-1|0}o=o+1|0}}case 2:{n=s;m=0;l=0;while(1){if((n|0)<=-1)break b;q=(n|0)==(s|0)|(n|0)==0;p=B(n,e)|0;o=s;while(1){if((o|0)<=-1)break;if(!(q&(o|0)==(s|0)|(o|n|0)==0)){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+p)>>0]|0)!=0}o=o+-1|0}n=n+-1|0}}case 3:{o=s;m=0;l=0;while(1){if((o|0)<=-1)break b;p=(o|0)==(s|0);q=(o|0)==0;n=0;while(1){if((n|0)>=(e|0))break;if(!(p&(n|0)==0|(n|o|0)==0|q&(n|0)==(s|0))){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+1|0}o=o+-1|0}}default:{m=0;l=0}}while(0);g[i>>3]=(r|0)>30?1.0:+(r|0)/30.0;switch(j|0){case 259:{k=a[240+m>>0]|0;s=k<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 515:{l=a[112+m>>0]|0;s=l<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k|0)c[k>>2]=d[176+m>>0];if(l<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 772:case 1028:case 1029:case 1285:{l=md(j,m,l,0,t)|0;if((l|0)<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}if((k|0)!=0&(l|0)!=0)c[k>>2]=l;break}default:{k=t;c[k>>2]=m;c[k+4>>2]=l}}c[f>>2]=c[t>>2];l=0}while(0);zb=u;return l|0}function ld(b,d,e,f,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;l=z+8|0;k=z;a:do if((b|0)==0|(f|0)<1){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;d=-1}else switch(d|0){case 0:{x=B(f,f)|0;w=x*3|0;x=FO(x*12|0)|0;if(!x){Ue(0,3,41858,k);Ea(1)}d=0;k=0;while(1){if((d|0)==(w|0))break;t=k+(~a[e+d>>0]&255)|0;d=d+1|0;k=t}l=(k>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/(+(f|0)*1.7320508)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+12|0;q=b+16|0;m=0.0;p=0;d=-1;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;b:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break b}default:{y=18;break b}}}c:do if((y|0)==18){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break c;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}case 1:{w=B(f,f)|0;x=FO(w<<2)|0;if(!x){Ue(0,3,41858,l);Ea(1)}d=0;k=0;while(1){if((k|0)==(w|0))break;d=d+(~a[e+k>>0]&255)|0;k=k+1|0}l=(d>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/+(f|0)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+20|0;q=b+24|0;p=0;d=-1;m=0.0;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;d:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break d}default:{y=40;break d}}}e:do if((y|0)==40){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break e;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}default:{d=-1;break a}}while(0);zb=z;return d|0}function md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0;I=zb;zb=zb+2384|0;l=I+2320|0;D=I+880|0;A=I+800|0;H=I+720|0;C=I+640|0;y=I+560|0;G=I+48|0;E=I;switch(b|0){case 2830:{l=g;u=1200;x=688;m=120;n=127;w=64;o=9;i=8;break}case 772:{j=624;k=432;m=13;n=15;b=9;o=1;i=5;break}case 1028:{j=624;k=432;m=13;n=15;b=5;o=2;i=5;break}case 1029:{b=12;g=2;i=4;break}case 1285:{b=7;g=3;i=4;break}default:b=-1}if((i|0)==4){j=496;k=304;m=22;n=31;o=g;i=5}a:do if((i|0)==5){i=0;g=f;while(1){if((i|0)==(m|0)){u=j;x=k;w=b;i=8;break a}a[l+i>>0]=e&1;x=TO(e|0,g|0,1)|0;i=i+1|0;e=x;g=F()|0}}while(0);b:do if((i|0)==8){t=o<<1;g=0;i=1;while(1){if((i|0)>(t|0))break;j=y+(i<<2)|0;c[j>>2]=0;e=0;b=0;while(1){if((e|0)>=(m|0))break;if(a[l+e>>0]|0){v=x+(((B(e,i)|0)%(n|0)|0)<<2)|0;b=b^c[v>>2];c[j>>2]=b}e=e+1|0}c[j>>2]=c[u+(b<<2)>>2];g=(b|0)==0?g:1;i=i+1|0}v=(g|0)!=0;c:do if(v){c[A>>2]=0;g=c[y+4>>2]|0;c[A+4>>2]=g;c[D>>2]=0;c[D+72>>2]=1;b=1;while(1){if((b|0)>=(t|0))break;c[D+(b<<2)>>2]=-1;c[D+72+(b<<2)>>2]=0;b=b+1|0}c[H>>2]=0;c[H+4>>2]=0;c[C>>2]=-1;c[C+4>>2]=0;s=0;r=0;while(1){f=s;s=s+1|0;d:do if((g|0)==-1){f=f+2|0;c[H+(f<<2)>>2]=r;b=0;while(1){if((b|0)>(r|0)){q=r;break d}q=D+(s*72|0)+(b<<2)|0;p=c[q>>2]|0;c[D+(f*72|0)+(b<<2)>>2]=p;c[q>>2]=c[u+(p<<2)>>2];b=b+1|0}}else{e=f;while(1){b=(e|0)>0;if(b&(c[A+(e<<2)>>2]|0)==-1)e=e+-1|0;else break}if(b){b=e;i=e;while(1){j=i;i=i+-1|0;if((c[A+(i<<2)>>2]|0)==-1)e=b;else e=(c[C+(b<<2)>>2]|0)<(c[C+(i<<2)>>2]|0)?i:b;if((j|0)<=1)break;else b=e}}i=H+(e<<2)|0;p=s-e|0;q=p+(c[i>>2]|0)|0;f=f+2|0;q=(r|0)>(q|0)?r:q;c[H+(f<<2)>>2]=q;b=0;while(1){if((b|0)>=(t|0))break;c[D+(f*72|0)+(b<<2)>>2]=0;b=b+1|0}j=g+n|0;k=A+(e<<2)|0;g=c[i>>2]|0;b=0;while(1){if((b|0)>(g|0))break;i=c[D+(e*72|0)+(b<<2)>>2]|0;if((i|0)!=-1)c[D+(f*72|0)+(p+b<<2)>>2]=c[x+(((j+i-(c[k>>2]|0)|0)%(n|0)|0)<<2)>>2];b=b+1|0}b=0;while(1){if((b|0)>(r|0))break d;p=D+(s*72|0)+(b<<2)|0;k=c[p>>2]|0;j=D+(f*72|0)+(b<<2)|0;c[j>>2]=c[j>>2]^k;c[p>>2]=c[u+(k<<2)>>2];b=b+1|0}}while(0);c[C+(f<<2)>>2]=s-q;if((s|0)>=(t|0))break;b=c[y+(f<<2)>>2]|0;if((b|0)==-1)b=0;else b=c[x+(b<<2)>>2]|0;i=A+(f<<2)|0;c[i>>2]=b;e=1;while(1){if((e|0)>(q|0))break;g=c[y+(f-e<<2)>>2]|0;if((g|0)!=-1?(z=c[D+(f*72|0)+(e<<2)>>2]|0,(z|0)!=0):0){b=b^c[x+((((c[u+(z<<2)>>2]|0)+g|0)%(n|0)|0)<<2)>>2];c[i>>2]=b}e=e+1|0}g=c[u+(b<<2)>>2]|0;c[i>>2]=g;if((q|0)>(o|0))break;else r=q}if((q|0)>(o|0)){b=-1;break b}b=0;while(1){if((b|0)>(q|0))break;C=D+(f*72|0)+(b<<2)|0;c[C>>2]=c[u+(c[C>>2]<<2)>>2];b=b+1|0}b=1;while(1){if((b|0)>(q|0))break;c[E+(b<<2)>>2]=c[D+(f*72|0)+(b<<2)>>2];b=b+1|0}b=0;k=1;while(1){if((n|0)<(k|0))break;j=1;g=1;while(1){if((j|0)>(q|0))break;e=E+(j<<2)|0;i=c[e>>2]|0;if((i|0)!=-1){D=(i+j|0)%(n|0)|0;c[e>>2]=D;g=c[x+(D<<2)>>2]^g}j=j+1|0}if(!g){c[G+(b<<2)>>2]=n-k;b=b+1|0}k=k+1|0}if((b|0)!=(q|0)){b=-1;break b}b=0;while(1){if((b|0)>=(q|0))break c;E=l+(c[G+(b<<2)>>2]|0)|0;a[E>>0]=a[E>>0]^1;b=b+1|0}}else f=0;while(0);b=h;c[b>>2]=0;c[b+4>>2]=0;b=m-w|0;g=1;e=0;i=0;j=0;while(1){if((b|0)>=(m|0))break;E=NO(g|0,e|0,d[l+b>>0]|0,0)|0;E=OO(E|0,F()|0,i|0,j|0)|0;G=F()|0;D=h;c[D>>2]=E;c[D+4>>2]=G;D=UO(g|0,e|0,1)|0;b=b+1|0;g=D;e=F()|0;i=E;j=G}if(v)b=c[H+(f<<2)>>2]|0;else b=0}while(0);zb=I;return b|0}function nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Dd(8,8)|0;h=Dd(8,1)|0;i=Dd(8,1)|0;e=0;while(1){if((e|0)==4)break;o=a+(e<<4)|0;j=c[f>>2]|0;k=e<<4;g[j+(k<<3)>>3]=+g[o>>3];n=a+(e<<4)+8|0;g[j+((k|1)<<3)>>3]=+g[n>>3];g[j+((k|2)<<3)>>3]=1.0;g[j+((k|3)<<3)>>3]=0.0;g[j+((k|4)<<3)>>3]=0.0;g[j+((k|5)<<3)>>3]=0.0;m=b+(e<<4)|0;g[j+((k|6)<<3)>>3]=-(+g[o>>3]*+g[m>>3]);g[j+((k|7)<<3)>>3]=-(+g[n>>3]*+g[m>>3]);g[j+((k|8)<<3)>>3]=0.0;g[j+((k|9)<<3)>>3]=0.0;g[j+((k|10)<<3)>>3]=0.0;g[j+((k|11)<<3)>>3]=+g[o>>3];g[j+((k|12)<<3)>>3]=+g[n>>3];g[j+((k|13)<<3)>>3]=1.0;l=b+(e<<4)+8|0;g[j+((k|14)<<3)>>3]=-(+g[o>>3]*+g[l>>3]);g[j+((k|15)<<3)>>3]=-(+g[n>>3]*+g[l>>3]);k=c[h>>2]|0;j=e<<1;g[k+(j<<3)>>3]=+g[m>>3];g[k+((j|1)<<3)>>3]=+g[l>>3];e=e+1|0}Xd(f)|0;Nd(i,f,h)|0;a=c[i>>2]|0;e=0;while(1){if((e|0)==2)break;o=e*3|0;g[d+(e*24|0)>>3]=+g[a+(o<<3)>>3];g[d+(e*24|0)+8>>3]=+g[a+(o+1<<3)>>3];g[d+(e*24|0)+16>>3]=+g[a+(o+2<<3)>>3];e=e+1|0}g[d+48>>3]=+g[a+48>>3];g[d+56>>3]=+g[a+56>>3];g[d+64>>3]=1.0;Ld(f)|0;Ld(h)|0;Ld(i)|0;return}function od(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0;w=zb;zb=zb+12304|0;v=w;u=w+12288|0;do if((d+-2|0)>>>0<3){if((r|0)!=2830){u=r&255;if((pd(b,2,u,u*3|0,e,f,g,h,i,j,k,v)|0)<0){c[o>>2]=-1;r=-6;break}u=kd(v,u,o,p,q,r,s)|0;if(!t){r=u;break}r=t;c[r>>2]=0;c[r+4>>2]=0;r=u;break}if((pd(b,2,14,42,e,f,g,h,i,j,.875,v)|0)<0){c[o>>2]=-1;r=-6;break}r=qd(v,u,p,q,s)|0;if((r|0)<0){c[o>>2]=-1;break}p=u;u=c[p>>2]|0;p=c[p+4>>2]|0;if((u|0)==-1&(p|0)==-1){c[o>>2]=-1;r=-5;break}c[o>>2]=(u&-32768|0)==0&0==0?u&32767:0;if(t){c[t>>2]=u;c[t+4>>2]=p}}else r=1;while(0);a:do switch(d|0){case 0:case 1:case 3:case 4:{if(!a){c[l>>2]=-1;u=-1;break a}u=a+28|0;p=c[u>>2]|0;q=p<<2;switch(d|0){case 0:case 3:if((pd(b,0,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,0,v,c[u>>2]|0,l,m,n)|0;break a}default:if((pd(b,1,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,1,v,c[u>>2]|0,l,m,n)|0;break a}}}default:u=1}while(0);if((r|0)!=1)u=(u|0)==1?r:(u&r|0)<0?u:0;zb=w;return u|0}function pd(b,e,h,i,j,k,l,m,n,o,p,q){b=b|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=+p;q=q|0;var r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0;R=zb;zb=zb+256|0;A=R+232|0;z=R+224|0;D=R+216|0;C=R+208|0;s=R+144|0;t=R+80|0;N=R;O=R+240|0;P=R+236|0;g[s>>3]=100.0;g[s+8>>3]=100.0;g[s+16>>3]=110.0;g[s+24>>3]=100.0;g[s+32>>3]=110.0;g[s+40>>3]=110.0;g[s+48>>3]=100.0;g[s+56>>3]=110.0;r=0;while(1){if((r|0)==4)break;g[t+(r<<4)>>3]=+g[o+(r<<4)>>3];g[t+(r<<4)+8>>3]=+g[o+(r<<4)+8>>3];r=r+1|0}nd(s,t,N);y=+g[t>>3];T=+g[t+16>>3];w=y-T;I=+g[t+8>>3];S=+g[t+24>>3];u=I-S;r=~~(w*w+u*u);u=+g[t+32>>3];w=+g[t+48>>3];V=u-w;v=+g[t+40>>3];x=+g[t+56>>3];U=v-x;L=~~(V*V+U*U);u=T-u;v=S-v;t=~~(u*u+v*v);y=w-y;I=x-I;M=~~(y*y+I*I);r=~~(+(((L|0)>(r|0)?L:r)|0)*p*p);t=~~(+(((M|0)>(t|0)?M:t)|0)*p*p);if(!b){s=h;while(1)if((s|0)<(i|0)&(B(s,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r,r)|0)<(t|0))r=r<<1;else break}else{s=h;while(1)if((s|0)<(i|0)&(B(s<<2,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r<<2,r)|0)<(t|0))r=r<<1;else break}M=(s|0)>(i|0)?i:s;J=(r|0)>(i|0)?i:r;K=(M|0)/(h|0)|0;L=(J|0)/(h|0)|0;u=(1.0-p)*.5*10.0;I=p*10.0;H=B(h,h)|0;a:do if(!e){H=H*3|0;r=HO(H,4)|0;if(!r){Ue(0,3,41858,C);Ea(1)}b:do switch(m|0){case 0:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 1:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t+2)>>0]|0)}i=i+1|0}o=o+1|0}}case 2:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 3:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|2)>>0]|0)}i=i+1|0}o=o+1|0}}case 4:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|3)>>0]|0)}i=i+1|0}o=o+1|0}}case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=j+((B(t,k)|0)+s)|0;t=d[t>>0]|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}i=i+1|0}o=o+1|0}}case 6:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|3)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|1)>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){X=B(t,k)|0;W=(s&65534)+X<<1;T=+((d[j+W>>0]|0)+-128|0);V=+((d[j+(W+2)>>0]|0)+-128|0);U=+((d[j+(X+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;X=~~(T*516.4110107421875+U)>>8;W=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;t=~~(U+V*408.5830078125)>>8;X=(X|0)>0?X:0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=((X|0)<255?X:255)+(c[s>>2]|0);W=(W|0)>0?W:0;s=r+(b+1<<2)|0;c[s>>2]=((W|0)<255?W:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=r+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=B(t,k)|0;W=(s&65534)+t<<1;T=+((d[j+(W|1)>>0]|0)+-128|0);V=+((d[j+(W+3)>>0]|0)+-128|0);U=+((d[j+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(U+T*516.4110107421875)>>8;t=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;W=~~(U+V*408.5830078125)>>8;s=(s|0)>0?s:0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=r+(X+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);W=(W|0)>0?W:0;X=r+(X+2<<2)|0;c[X>>2]=((W|0)<255?W:255)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;i=0;while(1){if((i|0)>=(J|0))break b;v=w+I*(+(i|0)+.5)/x;o=0;while(1){if((o|0)>=(M|0))break;u=w+I*(+(o|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((i|0)/(L|0)|0,h)|0)+((o|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<3&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-32&255)>>>3|W<<5&255|2)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}o=o+1|0}i=i+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<2&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-64&255)>>>3|W<<5&255|4)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((a[j+(W|1)>>0]&-16|8)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=(c[b>>2]|0)+((W<<4&255|8)&255);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-16|8)&255)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,D);Q=306;break a}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}else{r=HO(H,4)|0;if(!r){Ue(0,3,41858,z);Ea(1)}c:do if(m>>>0<2){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=((B(t,k)|0)+s|0)*3|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W+1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W+2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}else{if((m|1|0)==3){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W|2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}if((m|2|0)==6){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|2)>>0]|0)+(d[j+(W|1)>>0]|0)+(d[j+(W|3)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}switch(m|0){case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1|1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&28|2)+(b&248|4)+(W<<3&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&24|4)+(b&248|4)+(W<<2&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<4&240|8)+(b&240|8)+((a[j+(W|1)>>0]&-16|8)&255)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,A);Q=306;break a}}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}while(0);if((Q|0)==306){GO(r);r=-1}zb=R;return r|0}function qd(b,e,f,h,i){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+160|0;o=y+152|0;n=y+128|0;x=y+144|0;w=y;c[n>>2]=0;c[n+4>>2]=182;c[n+8>>2]=195;c[n+12>>2]=13;j=0;l=0;m=-1;while(1){if((j|0)==4)break;v=a[b+(c[n+(j<<2)>>2]|0)>>0]|0;j=j+1|0;l=(v&255)>(l&255)?v:l;m=(v&255)<(m&255)?v:m}l=l&255;j=m&255;a:do if((l-j|0)>=30){v=(l+j|0)>>>1;j=0;while(1){if((j|0)==4)break;a[o+j>>0]=v>>>0>(d[b+(c[n+(j<<2)>>2]|0)>>0]|0)>>>0&1;j=j+1|0}u=0;while(1){if(u>>>0>=4)break;j=u+1|0;if(((a[o+u>>0]|0)==1?(a[o+(j&3)>>0]|0)==1:0)?(a[o+(u+2&3)>>0]|0)==0:0)break;u=j}b:do switch(u&2147483647|0){case 4:{c[f>>2]=0;g[h>>3]=-1.0;j=-3;break a}case 0:{l=119;n=0;j=255;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;p=(n&2147483646|0)==12;q=n*14|0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(r=m&2147483646,((m|n)&2147483646|0)!=0):0)?!(p&((r|0)==0|(r|0)==12)):0){t=(d[b+(m+q)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+1|0}n=n+1|0}}case 1:{l=119;j=255;n=0;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;q=n&2147483646;p=(q|0)==0;q=(q|0)==12;m=13;while(1){if((m|0)<=-1)break;if(((m+-3|o)>>>0>=8?(s=(m&-2|0)==12,!(p&s)):0)?!(q&(m>>>0<2|s)):0){t=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+-1|0}n=n+1|0}}case 2:{m=13;l=119;j=255;while(1){if((m|0)<=-1){p=57;break b}n=m+-3|0;q=m>>>0<2|(m&-2|0)==12;p=m*14|0;o=13;while(1){if((o|0)<=-1)break;if((o+-3|n)>>>0>=8?!((o|m)>>>0<2|q&(o&-2|0)==12):0){t=(d[b+(o+p)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}o=o+-1|0}m=m+-1|0}}case 3:{n=13;l=119;j=255;while(1){if((n|0)<=-1){p=57;break b}o=n+-3|0;p=n&-2;q=(p|0)==12;r=(p|0)==0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(t=m&2147483646,!(q&(t|0)==0)):0)?!((t|p|0)==0|r&(t|0)==12):0){s=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=s>>>31;s=(s|0)>-1?s:0-s|0;l=l+-1|0;j=(s|0)<(j|0)?s:j}m=m+1|0}n=n+-1|0}}default:{c[f>>2]=u;k=1.0}}while(0);if((p|0)==57){c[f>>2]=u;k=(j|0)>30?1.0:+(j|0)/30.0}g[h>>3]=k;j=md(2830,0,0,w,x)|0;if((j|0)<0)j=-4;else{if(i|0)c[i>>2]=j;i=x;x=c[i+4>>2]|0;j=e;c[j>>2]=c[i>>2];c[j+4>>2]=x;j=0}}else{c[f>>2]=0;g[h>>3]=-1.0;j=-2}while(0);zb=y;return j|0}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+32|0;z=A+24|0;f=A+16|0;d=A+8|0;do if(a){if(!b){Ue(0,3,20225,d);d=-1;break}y=a+8|0;e=c[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;if(!(c[(c[y>>2]|0)+(d<<2)>>2]|0))break;d=d+1|0}if((d|0)!=(e|0)){x=jz(b)|0;if(!x){Ue(0,3,20270,f);d=-1;break}p=a+28|0;q=a+12|0;r=d<<2;s=a+20|0;t=a+16|0;v=a+24|0;e=tA(x,20293)|0;o=0;a:while(1){if(o>>>0>=4){e=36;break}w=o+r|0;b=0;n=0;while(1){if(n>>>0>=3)break;l=(n|0)==0;m=(n|0)==2;k=0;f=c[p>>2]|0;while(1){if((k|0)>=(f|0))break;j=0;while(1){if((j|0)>=(f|0))break;if(!e){e=21;break a}f=lA(e)|0;e=tA(0,20293)|0;f=255-f|0;h=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+((((B(c[p>>2]|0,k)|0)+j|0)*3|0)+n<<2)|0;c[h>>2]=f;h=c[(c[s>>2]|0)+(w<<2)>>2]|0;i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;if(!l){c[i>>2]=(c[i>>2]|0)+f;if(m){i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;c[i>>2]=(c[i>>2]|0)/3|0}}else c[i>>2]=f;j=j+1|0;b=f+b|0;f=c[p>>2]|0}k=k+1|0}n=n+1|0}i=c[p>>2]|0;j=(b|0)/(B(i*3|0,i)|0)|0;b=0;f=0;while(1){if(f>>>0>=(B(i*3|0,i)|0)>>>0)break;n=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+(f<<2)|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;i=(B(i,i)|0)+b|0;b=i;f=f+1|0;i=c[p>>2]|0}C=+u(+(+(b|0)));g[(c[t>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;f=0;h=0;b=i;while(1){if(h>>>0>=(B(b,b)|0)>>>0)break;n=(c[(c[s>>2]|0)+(w<<2)>>2]|0)+(h<<2)|0;b=(c[n>>2]|0)-j|0;c[n>>2]=b;b=(B(b,b)|0)+f|0;f=b;h=h+1|0;b=c[p>>2]|0}C=+u(+(+(f|0)));g[(c[v>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;o=o+1|0}if((e|0)==21){Ue(0,3,20298,z);GO(x);d=-1;break}else if((e|0)==36){GO(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Ue(0,3,20200,A);d=-1}while(0);zb=A;return d|0} +function Lm(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+16|0;v=y;w=b+4|0;c[w>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);t=b+8|0;u=b+12|0;s=0;a:while(1){if(s>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,s)|0;yo(g,n)|0;q=_m(d,s)|0;o=zo(g)|0;p=o+4|0;q=q+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){h=c[o>>2]|0;if(l>>>0>=(c[p>>2]|0)-h>>2>>>0)break;z=a[q>>0]|0;k=(_m(e,c[h+(l<<2)>>2]|0)|0)+16|0;do if(z<<24>>24==(a[k>>0]|0)){h=yl(n,Zm(e,c[(c[o>>2]|0)+(l<<2)>>2]|0)|0)|0;if(h>>>0>>0){k=h;h=m;i=c[(c[o>>2]|0)+(l<<2)>>2]|0;break}else{k=m;h=h>>>0>>0?h:j;break}}else{k=m;h=j}while(0);l=l+1|0;m=k;j=h}do if((m|0)!=-1){if((i|0)==-1){x=15;break a}if((j|0)==-1){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v);break}if(+(m>>>0)/+(j>>>0)<+f[u>>2]){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v)}}while(0);s=s+1|0}if((x|0)==15){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,160)|0,35007)|0,31348)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}z=(c[w>>2]|0)-(c[b>>2]|0)>>3;if(z>>>0>(Ak(d)|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,175)|0,35007)|0,31426)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}else{r=(c[w>>2]|0)-(c[b>>2]|0)>>3;break}}else r=0;while(0);zb=y;return r|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;r=t;s=b+4|0;c[s>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);p=b+8|0;q=b+12|0;o=0;while(1){if(o>>>0>=(Ak(d)|0)>>>0)break;l=Zm(d,o)|0;m=(_m(d,o)|0)+16|0;i=0;j=-1;g=2147483647;h=-1;while(1){if(i>>>0>=(Ak(e)|0)>>>0)break;u=a[m>>0]|0;k=(_m(e,i)|0)+16|0;if(u<<24>>24==(a[k>>0]|0)){u=yl(l,Zm(e,i)|0)|0;v=u>>>0>>0;k=v?u:j;g=v?i:g;h=v?j:u>>>0>>0?u:h}else k=j;i=i+1|0;j=k}do if((j|0)!=-1){if((h|0)==-1){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r);break}if(+(j>>>0)/+(h>>>0)<+f[q>>2]){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r)}}while(0);o=o+1|0}v=(c[s>>2]|0)-(c[b>>2]|0)>>3;if(v>>>0>(Ak(d)|0)>>>0){v=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,112)|0,35007)|0,31426)|0;IE(r,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(r,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(r);QE(v,u)|0;ME(v)|0;ua()}else{n=(c[s>>2]|0)-(c[b>>2]|0)>>3;break}}else n=0;while(0);zb=t;return n|0}function Nm(a){a=a|0;return a|0}function Om(a){a=a|0;return c[a>>2]|0}function Pm(a){a=a|0;return c[a+4>>2]|0}function Qm(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;u=zb;zb=zb+32|0;s=u+20|0;t=u+8|0;o=u+4|0;p=u;q=e+4|0;uo(s,(c[q>>2]|0)-(c[e>>2]|0)>>1);uo(t,(c[q>>2]|0)-(c[e>>2]|0)>>1);n=c[e>>2]|0;r=(c[q>>2]|0)-n>>3;m=c[b>>2]|0;d=c[d>>2]|0;k=c[s>>2]|0;l=c[t>>2]|0;b=0;while(1){if((b|0)==(r|0))break;y=c[n+(b<<3)>>2]|0;w=c[n+(b<<3)+4>>2]|0;v=b<<2;x=k+(v<<2)|0;c[x>>2]=c[m+(y*20|0)>>2];c[x+4>>2]=c[m+(y*20|0)+4>>2];c[x+8>>2]=c[m+(y*20|0)+8>>2];c[x+12>>2]=c[m+(y*20|0)+12>>2];v=l+(v<<2)|0;c[v>>2]=c[d+(w*20|0)>>2];c[v+4>>2]=c[d+(w*20|0)+4>>2];c[v+8>>2]=c[d+(w*20|0)+8>>2];c[v+12>>2]=c[d+(w*20|0)+12>>2];b=b+1|0}A=+(g|0);A=A*.20000000298023224+A;z=+(h|0);z=z*.20000000298023224+z;op(a,-A,A,-z,z,0,0,12,10);vo(a,+(i>>1|0),+(j>>1|0));wo(a,i,j);qp(a,c[s>>2]|0,c[t>>2]|0,(c[q>>2]|0)-(c[e>>2]|0)>>3);Fp(a,o,p);y=+f[o>>2]<3.0?-1:c[p>>2]|0;gh(t);gh(s);zb=u;return y|0}function Rm(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+48|0;h=v+32|0;r=v+28|0;s=v+24|0;t=v+20|0;u=v+16|0;n=v+12|0;o=v+8|0;p=v+4|0;q=v;qo(b,n,o,p,q,e);l=a+4|0;c[l>>2]=c[a>>2];m=ro(b)|0;m=(c[m+4>>2]|0)-(c[m>>2]|0)>>2;e=so(b)|0;if(m>>>0>(c[d+4>>2]|0)-(c[d>>2]|0)>>3>>>0){k=Xf(Xf(PE(Xf(Xf(Xf(56032,31870)|0,30067)|0,35e3)|0,342)|0,35007)|0,31916)|0;IE(h,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(k,j)|0;ME(k)|0;ua()}k=a+8|0;e=c[e>>2]|0;h=0;while(1){if((h|0)>=(m|0))break;to(b,r,s,t,u,+f[e>>2],+f[e+4>>2],+f[e+8>>2],+f[e+12>>2],+(c[n>>2]|0)+.5,+(c[o>>2]|0)+.5,+(c[p>>2]|0)+.5,+(c[q>>2]|0)+.5);do if((+f[r>>2]>2]>2]>2]>2]|0)+(c[(c[i>>2]|0)+(h<<2)>>2]<<3)|0;j=c[l>>2]|0;if((j|0)==(c[k>>2]|0)){hn(a,i);break}else{w=i;i=c[w+4>>2]|0;c[j>>2]=c[w>>2];c[j+4>>2]=i;c[l>>2]=(c[l>>2]|0)+8;break}}while(0);e=e+16|0;h=h+1|0}zb=v;return}function Sm(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=zb;zb=zb+64|0;o=q+44|0;p=q+32|0;n=q;m=e+4|0;jn(o,(c[m>>2]|0)-(c[e>>2]|0)>>3);jn(p,(c[m>>2]|0)-(c[e>>2]|0)>>3);l=c[e>>2]|0;m=(c[m>>2]|0)-l>>3;j=c[b>>2]|0;k=c[p>>2]|0;b=c[d>>2]|0;d=c[o>>2]|0;e=0;while(1){if((e|0)==(m|0))break;r=c[l+(e<<3)>>2]|0;c[k+(e<<3)>>2]=c[j+(r*20|0)>>2];c[k+(e<<3)+4>>2]=c[j+(r*20|0)+4>>2];r=c[l+(e<<3)+4>>2]|0;c[d+(e<<3)>>2]=c[b+(r*20|0)>>2];c[d+(e<<3)+4>>2]=c[b+(r*20|0)+4>>2];e=e+1|0}f[n>>2]=0.0;f[n+4>>2]=0.0;s=+(h|0);f[n+8>>2]=s;f[n+12>>2]=0.0;f[n+16>>2]=s;s=+(i|0);f[n+20>>2]=s;f[n+24>>2]=0.0;f[n+28>>2]=s;if(kn(g,a,d,k,m,n,4)|0)e=mn(a,h,i)|0;else e=0;ln(p);ln(o);zb=q;return e|0}function Tm(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+16|0;p=q;h=+ji(h);o=g+4|0;Ym(a,(c[o>>2]|0)-(c[g>>2]|0)>>3);l=p+4|0;m=a+4|0;n=a+8|0;k=0;while(1){i=c[g>>2]|0;if(k>>>0>=(c[o>>2]|0)-i>>3>>>0)break;j=c[i+(k<<3)+4>>2]|0;i=c[e>>2]|0;$m(p,l,b,+f[i+(j*20|0)>>2],+f[i+(j*20|0)+4>>2]);r=+ji(+f[p>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)>>2]);do if(r+ +ji(+f[l>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)+4>>2])<=h){i=(c[g>>2]|0)+(k<<3)|0;j=c[m>>2]|0;if((j|0)==(c[n>>2]|0)){hn(a,i);break}else{s=i;i=c[s+4>>2]|0;c[j>>2]=c[s>>2];c[j+4>>2]=i;c[m>>2]=(c[m>>2]|0)+8;break}}while(0);k=k+1|0}zb=q;return}function Um(b,d,e,g,h){b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=zb;zb=zb+64|0;u=z+40|0;v=z;w=z+52|0;x=z+48|0;t=b+4|0;c[t>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){h=+ji(h);if(!(Xm(v,g,0.0)|0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,31157)|0,35e3)|0,196)|0,35007)|0,31243)|0;IE(u,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(u,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(u);QE(r,q)|0;ME(r)|0;ua()}Ym(b,Ak(d)|0);q=b+8|0;r=b+12|0;p=0;a:while(1){if(p>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,p)|0;o=_m(d,p)|0;$m(w,x,v,+f[o>>2],+f[o+4>>2]);o=o+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){if(l>>>0>=(Ak(e)|0)>>>0)break;g=_m(e,l)|0;if((a[o>>0]|0)==(a[g+16>>0]|0)?(A=+ji(+f[w>>2]-+f[g>>2]),!(A+ +ji(+f[x>>2]-+f[g+4>>2])>h)):0){g=zl(n,Zm(e,l)|0)|0;B=g>>>0>>0;k=B?g:m;g=B?m:g>>>0>>0?g:j;i=B?l:i}else{k=m;g=j}l=l+1|0;m=k;j=g}do if((m|0)!=-1){if((i|0)==-1){y=16;break a}if((j|0)==-1){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u);break}if(+(m>>>0)/+(j>>>0)<+f[r>>2]){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u)}}while(0);p=p+1|0}if((y|0)==16){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,241)|0,35007)|0,31348)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}B=(c[t>>2]|0)-(c[b>>2]|0)>>3;if(B>>>0>(Ak(d)|0)>>>0){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,256)|0,35007)|0,31426)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}else{s=(c[t>>2]|0)-(c[b>>2]|0)>>3;break}}else s=0;while(0);zb=z;return s|0}function Vm(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));return}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Xm(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=+gn(b);if(!(+t(+d)<=c)){d=1.0/d;e=b+16|0;k=b+20|0;j=b+28|0;m=b+32|0;c=d*+xi(+f[e>>2],+f[k>>2],+f[j>>2],+f[m>>2]);f[a>>2]=c;l=b+8|0;h=b+4|0;c=d*+xi(+f[l>>2],+f[h>>2],+f[m>>2],+f[j>>2]);f[a+4>>2]=c;c=d*+xi(+f[h>>2],+f[l>>2],+f[e>>2],+f[k>>2]);f[a+8>>2]=c;g=b+12|0;i=b+24|0;c=d*+xi(+f[k>>2],+f[g>>2],+f[m>>2],+f[i>>2]);f[a+12>>2]=c;c=d*+xi(+f[b>>2],+f[l>>2],+f[i>>2],+f[m>>2]);f[a+16>>2]=c;c=d*+xi(+f[l>>2],+f[b>>2],+f[k>>2],+f[g>>2]);f[a+20>>2]=c;c=d*+xi(+f[g>>2],+f[e>>2],+f[i>>2],+f[j>>2]);f[a+24>>2]=c;c=d*+xi(+f[h>>2],+f[b>>2],+f[j>>2],+f[i>>2]);f[a+28>>2]=c;d=d*+xi(+f[b>>2],+f[h>>2],+f[g>>2],+f[e>>2]);f[a+32>>2]=d;a=1}else a=0;return a|0}function Ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>3>>>0>>0){dn(d,b,(c[a+4>>2]|0)-e>>3,a+8|0);en(a,d);fn(d)}zb=f;return}function Zm(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function _m(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function $m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var g=0.0;g=+f[c+32>>2]+(+f[c+24>>2]*d+ +f[c+28>>2]*e);f[a>>2]=(+f[c+8>>2]+(+f[c>>2]*d+ +f[c+4>>2]*e))/g;f[b>>2]=(+f[c+20>>2]+(+f[c+12>>2]*d+ +f[c+16>>2]*e))/g;return}function an(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function cn(a){a=a|0;return 536870911}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function gn(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;k=a+20|0;e=a+28|0;j=a+32|0;d=+xi(+f[h>>2],+f[k>>2],+f[e>>2],+f[j>>2]);i=a+12|0;g=a+24|0;c=+xi(+f[i>>2],+f[k>>2],+f[g>>2],+f[j>>2]);b=+xi(+f[i>>2],+f[h>>2],+f[g>>2],+f[e>>2]);return +(d*+f[a>>2]-c*+f[a+4>>2]+b*+f[a+8>>2])}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function jn(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){no(a,b);oo(a,b)}return}function kn(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0;j=a+12|0;Vk(j,g);return wn(b,d,e,g,h,i,a,j,a+24|0,+f[a+36>>2],c[a+40>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0)|0}function ln(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0;m=zb;zb=zb+96|0;e=m+88|0;g=m+80|0;h=m+72|0;i=m+64|0;j=m;k=m+56|0;l=m+48|0;d=m+40|0;if(Xm(j,a,9.999999747378752e-06)|0){n=+(b|0);f[k>>2]=n;f[k+4>>2]=0.0;f[l>>2]=n;n=+(c|0);f[l+4>>2]=n;f[d>>2]=0.0;f[d+4>>2]=n;nn(e,j,55476);nn(g,j,k);nn(h,j,l);nn(i,j,d);n=+(B(c,b)|0)*.0001;if(+on(e,g,h,i)>2];e=c+4|0;g=+f[e>>2];d=+f[b+32>>2]+(+f[b+24>>2]*h+ +f[b+28>>2]*g);f[a>>2]=(+f[b+8>>2]+(h*+f[b>>2]+g*+f[b+4>>2]))/d;f[a+4>>2]=(+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]))/d;return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0;f=zb;zb=zb+48|0;l=f+32|0;m=f+24|0;k=f+16|0;h=f+8|0;g=f;rn(l,b,a);rn(m,c,a);rn(k,d,a);rn(h,b,c);rn(g,d,c);j=+sn(l,m);i=+sn(m,k);e=+sn(l,k);e=+tn(j,i,e,+sn(h,g));zb=f;return +e}function pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=+qn(a,b,c)>0.0;f=+qn(b,c,d)>0.0;c=+qn(c,d,a)>0.0;d=+qn(d,a,b)>0.0;d=(f?1:-1)+(e?1:-1)+(c?1:-1)+(d?1:-1)|0;return (((d|0)>-1?d:0-d|0)|0)==4|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];return +((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))}function rn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=+f[b>>2]-+f[c>>2];f[a+4>>2]=+f[b+4>>2]-+f[c+4>>2];return}function sn(a,b){a=a|0;b=b|0;return +(+t(+(+f[a>>2]*+f[b+4>>2]-+f[a+4>>2]*+f[b>>2]))*.5)}function tn(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(+vn(+un(a,b,c),d))}function un(a,b,c){a=+a;b=+b;c=+c;return +(+vn(+vn(a,b),c))}function vn(a,b){a=+a;b=+b;return +(a>2]|0)-(c[i>>2]|0)>>2>>>0<(m*9|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31460)|0,31518)|0,35e3)|0,119)|0,35007)|0,31612)|0;IE(y,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(y,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(y);QE(z,x)|0;ME(z)|0;ua()}x=c[j>>2]|0;z=x;if((c[j+4>>2]|0)-x>>2>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31662)|0,31518)|0,35e3)|0,120)|0,35007)|0,31712)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((c[k+4>>2]|0)-(c[k>>2]|0)>>3>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31754)|0,31518)|0,35e3)|0,121)|0,35007)|0,31816)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((e|0)>=4){c[w>>2]=1234;l=+ji(l);x=Bj(o,e)|0;tl(z,e,0);ul(z,e,e,w);q=z+4|0;r=z+8|0;s=z+12|0;t=(h|0)>0;o=0;u=0;while(1){if(!((u|0)<(m|0)&(o|0)<(n|0)))break;ul(z,e,4,w);D=c[z>>2]<<1;C=c[q>>2]<<1;B=c[r>>2]<<1;j=c[s>>2]<<1;do if(xn(b+(D<<2)|0,b+(C<<2)|0,b+(B<<2)|0,b+(j<<2)|0,d+(D<<2)|0,d+(C<<2)|0,d+(B<<2)|0,d+(j<<2)|0)|0?(v=u*9|0,j=c[z>>2]<<1,B=c[q>>2]<<1,C=c[r>>2]<<1,D=c[s>>2]<<1,yn((c[i>>2]|0)+(v<<2)|0,b+(j<<2)|0,b+(B<<2)|0,b+(C<<2)|0,b+(D<<2)|0,d+(j<<2)|0,d+(B<<2)|0,d+(C<<2)|0,d+(D<<2)|0)|0):0){if(t?!(zn((c[i>>2]|0)+(v<<2)|0,g,h)|0):0){j=u;break}j=u+1|0}else j=u;while(0);o=o+1|0;u=j}l=1.0/l;if(u){o=c[k>>2]|0;j=0;while(1){if((j|0)>=(u|0))break;f[o+(j<<3)>>2]=0.0;c[o+(j<<3)+4>>2]=j;j=j+1|0}t=0;while(1){if(!((u|0)>2&(t|0)<(e|0)))break;r=(Bj(x,e-t|0)|0)+t|0;q=0;j=c[k>>2]|0;while(1){if((q|0)==(u|0))break;s=(c[i>>2]|0)+((c[j+(q<<3)+4>>2]|0)*9<<2)|0;o=t;while(1){if((o|0)>=(r|0))break;j=c[z+(o<<2)>>2]<<1;p=+Bn(s,b+(j<<2)|0,d+(j<<2)|0,l);j=c[k>>2]|0;D=j+(q<<3)|0;f[D>>2]=p+ +f[D>>2];o=o+1|0}q=q+1|0}An(y,j,u);t=r;u=u>>1}q=c[k>>2]|0;o=1;l=+f[q>>2];j=c[q+4>>2]|0;while(1){if((o|0)>=(u|0))break;p=+f[q+(o<<3)>>2];if(p>2]|0}o=o+1|0}Vm(a,(c[i>>2]|0)+(j*9<<2)|0);Cn(a);j=1}else j=0}else j=0;zb=A;return j|0}function xn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=+qn(a,b,c)>0.0;if((!(i^+qn(e,f,g)>0.0)?(i=+qn(b,c,d)>0.0,!(i^+qn(f,g,h)>0.0)):0)?(i=+qn(c,d,a)>0.0,!(i^+qn(g,h,e)>0.0)):0){a=+qn(d,a,b)>0.0;a=a^+qn(h,e,f)>0.0^1}else a=0;return a|0}function yn(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+128|0;w=x;k=x+124|0;l=x+120|0;m=x+112|0;n=x+104|0;o=x+96|0;p=x+88|0;q=x+80|0;r=x+72|0;s=x+64|0;t=x+56|0;u=x+48|0;v=x+40|0;if((In(o,p,q,r,k,m,b,c,d,e)|0?In(s,t,u,v,l,n,g,h,i,j)|0:0)?Jn(w,o,p,q,r,s,t,u,v)|0:0){Kn(a,w,+f[k>>2],m,+f[l>>2],n);a=1}else a=0;zb=x;return a|0}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+48|0;f=n+32|0;e=n+24|0;d=n+16|0;k=n+8|0;l=n;a:do if((c|0)>=2){m=b+8|0;g=b+16|0;nn(f,a,b);nn(e,a,m);nn(d,a,g);Gn(k,f);Gn(l,e);if(Hn(b,m,g,f,e,d)|0){j=3;i=f;f=m;h=b;while(1){if((j|0)>=(c|0))break;h=h+8|0;f=f+8|0;g=g+8|0;nn(i,a,g);if(!(Hn(h,f,g,e,d,i)|0)){d=0;break a}else{o=i;j=j+1|0;i=e;e=d;d=o}}if(Hn(f,g,b,e,d,k)|0)d=Hn(g,b,m,d,k,l)|0;else d=0}else d=0}else d=1;while(0);zb=n;return d|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;Fn(a,b,c,(c&1)+-1+((c|0)/2|0)|0);return}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,g=0,h=0,i=0;e=zb;zb=zb+16|0;i=e+8|0;g=e;h=i+4|0;$m(i,h,a,+f[b>>2],+f[b+4>>2]);f[g>>2]=+f[i>>2]-+f[c>>2];f[g+4>>2]=+f[h>>2]-+f[c+4>>2];d=+Dn(g,d);zb=e;return +d}function Cn(a){a=a|0;var b=0,c=0.0,d=0;b=a+32|0;c=1.0/+f[b>>2];f[a>>2]=+f[a>>2]*c;d=a+4|0;f[d>>2]=c*+f[d>>2];d=a+8|0;f[d>>2]=c*+f[d>>2];d=a+12|0;f[d>>2]=c*+f[d>>2];d=a+16|0;f[d>>2]=c*+f[d>>2];d=a+20|0;f[d>>2]=c*+f[d>>2];d=a+24|0;f[d>>2]=c*+f[d>>2];a=a+28|0;f[a>>2]=c*+f[a>>2];f[b>>2]=1.0;return}function Dn(a,b){a=a|0;b=+b;return +(+En(+f[a>>2],+f[a+4>>2],b))}function En(a,b,c){a=+a;b=+b;c=+c;return +(+z(+((a*a+b*b)*c+1.0)))}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+16|0;g=s;if((d|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,82)|0,35007)|0,33521)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}if((e|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,83)|0,35007)|0,33569)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}p=e+-1|0;q=b+(p<<3)|0;r=b+(p<<3)+4|0;l=d+-1|0;m=0;while(1){if((m|0)>=(l|0))break;n=+f[q>>2];o=c[r>>2]|0;g=m;d=l;do{while(1){j=b+(g<<3)|0;k=+f[j>>2];if(!(k>2]|0)>=(o|0))break}g=g+1|0}while(1){h=b+(d<<3)|0;i=+f[h>>2];if(!(n=(c[b+(d<<3)+4>>2]|0))break}d=d+-1|0}if((g|0)<=(d|0)){f[j>>2]=i;f[h>>2]=k;t=b+(g<<3)+4|0;j=b+(d<<3)+4|0;h=c[t>>2]|0;c[t>>2]=c[j>>2];c[j>>2]=h;g=g+1|0;d=d+-1|0}}while((g|0)<=(d|0));l=(g|0)<(e|0)?l:d;m=(d|0)<(p|0)?g:m}b=q;e=c[b+4>>2]|0;t=a;c[t>>2]=c[b>>2];c[t+4>>2]=e;zb=s;return}function Gn(a,b){a=a|0;b=b|0;var d=0,e=0;e=b;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;c=+qn(a,b,c)>0.0;return c^+qn(d,e,f)>0.0^1|0}function In(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0,w=0,x=0,y=0;l=(+f[h>>2]+ +f[i>>2]+ +f[j>>2]+ +f[k>>2])*.25;f[g>>2]=l;y=h+4|0;x=i+4|0;w=j+4|0;v=k+4|0;m=(+f[y>>2]+ +f[x>>2]+ +f[w>>2]+ +f[v>>2])*.25;f[g+4>>2]=m;s=+f[h>>2]-l;t=+f[y>>2]-m;q=+f[i>>2]-l;r=+f[x>>2]-m;o=+f[j>>2]-l;p=+f[w>>2]-m;l=+f[k>>2]-l;m=+f[v>>2]-m;n=(+u(+(s*s+t*t))+ +u(+(q*q+r*r))+ +u(+(o*o+p*p))+ +u(+(l*l+m*m)))*.25;if(n==0.0)g=0;else{n=1.0/n*1.4142135623730951;f[e>>2]=n;f[a>>2]=s*n;f[a+4>>2]=t*+f[e>>2];f[b>>2]=q*+f[e>>2];f[b+4>>2]=r*+f[e>>2];f[c>>2]=o*+f[e>>2];f[c+4>>2]=p*+f[e>>2];f[d>>2]=l*+f[e>>2];f[d+4>>2]=m*+f[e>>2];g=1}return g|0}function Jn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=zb;zb=zb+288|0;k=j;Ln(k,b,c,d,e,f,g,h,i);if(Mn(a,k)|0)a=!(+t(+(+gn(a)))<1.0e-05);else a=0;zb=j;return a|0}function Kn(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0;l=b+24|0;o=+f[l>>2];q=+f[g>>2];k=b+28|0;n=+f[k>>2];r=o*q+ +f[b>>2]/e;q=q*n+ +f[b+4>>2]/e;p=g+4|0;m=+f[p>>2];o=o*m+ +f[b+12>>2]/e;m=n*m+ +f[b+16>>2]/e;n=+f[d>>2]*c;h=d+4|0;i=+f[h>>2]*c;f[a>>2]=r*c;f[a+4>>2]=q*c;j=b+32|0;f[a+8>>2]=+f[j>>2]*+f[g>>2]+ +f[b+8>>2]/e-r*n-q*i;f[a+12>>2]=o*c;f[a+16>>2]=m*c;f[a+20>>2]=+f[j>>2]*+f[p>>2]+ +f[b+20>>2]/e-o*n-m*i;i=+f[l>>2]*c;f[a+24>>2]=i;e=+f[k>>2]*c;f[a+28>>2]=e;f[a+32>>2]=+f[j>>2]-i*+f[d>>2]-e*+f[h>>2];return}function Ln(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;lo(a,b,f);lo(a+72|0,c,g);lo(a+144|0,d,h);lo(a+216|0,e,i);return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0;d=zb;zb=zb+288|0;c=d;if(((((((Nn(c,b)|0?On(c,b)|0:0)?Pn(c,b)|0:0)?Qn(c,b)|0:0)?Rn(c,b)|0:0)?Sn(c,b)|0:0)?Tn(c,b)|0:0)?Un(c,b)|0:0)a=Vn(a,c)|0;else a=0;zb=d;return a|0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0;g=zb;zb=zb+32|0;d=g;h=+_n(b);f[d>>2]=h;e=b+36|0;h=+_n(e);f[d+4>>2]=h;h=+_n(b+72|0);f[d+8>>2]=h;h=+_n(b+108|0);f[d+12>>2]=h;h=+_n(b+144|0);f[d+16>>2]=h;h=+_n(b+180|0);f[d+20>>2]=h;h=+_n(b+216|0);f[d+24>>2]=h;h=+_n(b+252|0);f[d+28>>2]=h;c=jo(d)|0;d=d+(c<<2)|0;if(+f[d>>2]==0.0)a=0;else{co(b,b+(c*9<<2)|0);Yn(a,b,1.0/+u(+(+f[d>>2])));ko(a+36|0,e,63);a=1}zb=g;return a|0}function On(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0;e=zb;zb=zb+32|0;g=e;c=a+36|0;d=b+36|0;ao(c,a,d);n=a+72|0;ao(n,a,b+72|0);m=a+108|0;ao(m,a,b+108|0);l=a+144|0;ao(l,a,b+144|0);k=a+180|0;ao(k,a,b+180|0);j=a+216|0;ao(j,a,b+216|0);i=a+252|0;ao(i,a,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(n);f[g+4>>2]=h;h=+_n(m);f[g+8>>2]=h;h=+_n(l);f[g+12>>2]=h;h=+_n(k);f[g+16>>2]=h;h=+_n(j);f[g+20>>2]=h;h=+_n(i);f[g+24>>2]=h;a=io(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Pn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0;e=zb;zb=zb+32|0;g=e;c=a+72|0;m=a+36|0;d=b+72|0;ao(c,m,d);l=a+108|0;ao(l,m,b+108|0);k=a+144|0;ao(k,m,b+144|0);j=a+180|0;ao(j,m,b+180|0);i=a+216|0;ao(i,m,b+216|0);a=a+252|0;ao(a,m,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(l);f[g+4>>2]=h;h=+_n(k);f[g+8>>2]=h;h=+_n(j);f[g+12>>2]=h;h=+_n(i);f[g+16>>2]=h;h=+_n(a);f[g+20>>2]=h;a=ho(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0;e=zb;zb=zb+32|0;g=e;c=a+108|0;l=a+72|0;d=b+108|0;ao(c,l,d);k=a+144|0;ao(k,l,b+144|0);j=a+180|0;ao(j,l,b+180|0);i=a+216|0;ao(i,l,b+216|0);a=a+252|0;ao(a,l,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(k);f[g+4>>2]=h;h=+_n(j);f[g+8>>2]=h;h=+_n(i);f[g+12>>2]=h;h=+_n(a);f[g+16>>2]=h;a=go(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0;e=zb;zb=zb+16|0;g=e;c=a+144|0;k=a+108|0;d=b+144|0;ao(c,k,d);j=a+180|0;ao(j,k,b+180|0);i=a+216|0;ao(i,k,b+216|0);a=a+252|0;ao(a,k,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(j);f[g+4>>2]=h;h=+_n(i);f[g+8>>2]=h;h=+_n(a);f[g+12>>2]=h;a=fo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0;e=zb;zb=zb+16|0;g=e;c=a+180|0;j=a+144|0;d=b+180|0;ao(c,j,d);i=a+216|0;ao(i,j,b+216|0);a=a+252|0;ao(a,j,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(i);f[g+4>>2]=h;h=+_n(a);f[g+8>>2]=h;a=eo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0;e=zb;zb=zb+16|0;g=e;c=a+216|0;i=a+180|0;d=b+216|0;ao(c,i,d);a=a+252|0;ao(a,i,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(a);f[g+4>>2]=h;a=bo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Un(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=a+252|0;ao(d,a+216|0,b+252|0);c=+_n(d);if(c==0.0)a=0;else{Yn(d,d,1.0/+u(+c));a=1}return a|0}function Vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0.0;d=zb;zb=zb+384|0;e=d+336|0;c=d;g=+Wn(c,b,0);f[e>>2]=g;g=+Wn(c+36|0,b,1);f[e+4>>2]=g;g=+Wn(c+72|0,b,2);f[e+8>>2]=g;g=+Wn(c+108|0,b,3);f[e+12>>2]=g;g=+Wn(c+144|0,b,4);f[e+16>>2]=g;g=+Wn(c+180|0,b,5);f[e+20>>2]=g;g=+Wn(c+216|0,b,6);f[e+24>>2]=g;g=+Wn(c+252|0,b,7);f[e+28>>2]=g;g=+Wn(c+288|0,b,8);f[e+32>>2]=g;b=Xn(e)|0;if(+f[e+(b<<2)>>2]==0.0)b=0;else{Vm(a,c+(b*9<<2)|0);b=1}zb=d;return b|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,g=0;Yn(a,b,-+f[b+(c<<2)>>2]);g=a+(c<<2)|0;f[g>>2]=+f[g>>2]+1.0;Zn(a,b+36|0,-+f[b+(c+9<<2)>>2]);Zn(a,b+72|0,-+f[b+(c+18<<2)>>2]);Zn(a,b+108|0,-+f[b+(c+27<<2)>>2]);Zn(a,b+144|0,-+f[b+(c+36<<2)>>2]);Zn(a,b+180|0,-+f[b+(c+45<<2)>>2]);Zn(a,b+216|0,-+f[b+(c+54<<2)>>2]);Zn(a,b+252|0,-+f[b+(c+63<<2)>>2]);e=+_n(a);d=+u(+e);if(e==0.0)d=0.0;else Yn(a,a,1.0/d);return +d}function Xn(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;b=+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b;return (+f[a+32>>2]>+f[a+(b<<2)>>2]?8:b)|0}function Yn(a,b,c){a=a|0;b=b|0;c=+c;f[a>>2]=+f[b>>2]*c;f[a+4>>2]=+f[b+4>>2]*c;f[a+8>>2]=+f[b+8>>2]*c;f[a+12>>2]=+f[b+12>>2]*c;f[a+16>>2]=+f[b+16>>2]*c;f[a+20>>2]=+f[b+20>>2]*c;f[a+24>>2]=+f[b+24>>2]*c;f[a+28>>2]=+f[b+28>>2]*c;f[a+32>>2]=+f[b+32>>2]*c;return}function Zn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;f[a>>2]=+f[a>>2]+ +f[b>>2]*c;d=a+4|0;f[d>>2]=+f[d>>2]+ +f[b+4>>2]*c;d=a+8|0;f[d>>2]=+f[d>>2]+ +f[b+8>>2]*c;d=a+12|0;f[d>>2]=+f[d>>2]+ +f[b+12>>2]*c;d=a+16|0;f[d>>2]=+f[d>>2]+ +f[b+16>>2]*c;d=a+20|0;f[d>>2]=+f[d>>2]+ +f[b+20>>2]*c;d=a+24|0;f[d>>2]=+f[d>>2]+ +f[b+24>>2]*c;d=a+28|0;f[d>>2]=+f[d>>2]+ +f[b+28>>2]*c;a=a+32|0;f[a>>2]=+f[a>>2]+ +f[b+32>>2]*c;return}function _n(a){a=a|0;return +(+$n(a,a))}function $n(a,b){a=a|0;b=b|0;return +(+f[a>>2]*+f[b>>2]+ +f[a+4>>2]*+f[b+4>>2]+ +f[a+8>>2]*+f[b+8>>2]+ +f[a+12>>2]*+f[b+12>>2]+ +f[a+16>>2]*+f[b+16>>2]+ +f[a+20>>2]*+f[b+20>>2]+ +f[a+24>>2]*+f[b+24>>2]+ +f[a+28>>2]*+f[b+28>>2]+ +f[a+32>>2]*+f[b+32>>2])}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+$n(c,b);f[a>>2]=+f[a>>2]-d*+f[b>>2];c=a+4|0;f[c>>2]=+f[c>>2]-d*+f[b+4>>2];c=a+8|0;f[c>>2]=+f[c>>2]-d*+f[b+8>>2];c=a+12|0;f[c>>2]=+f[c>>2]-d*+f[b+12>>2];c=a+16|0;f[c>>2]=+f[c>>2]-d*+f[b+16>>2];c=a+20|0;f[c>>2]=+f[c>>2]-d*+f[b+20>>2];c=a+24|0;f[c>>2]=+f[c>>2]-d*+f[b+24>>2];c=a+28|0;f[c>>2]=+f[c>>2]-d*+f[b+28>>2];c=a+32|0;f[c>>2]=+f[c>>2]-d*+f[b+32>>2];return}function bo(a){a=a|0;return +f[a+4>>2]>+f[a>>2]|0}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a>>2]|0;f=a+4|0;c[a>>2]=c[b>>2];d=b+4|0;c[b>>2]=g;g=c[f>>2]|0;e=a+8|0;c[f>>2]=c[d>>2];f=b+8|0;c[d>>2]=g;d=c[e>>2]|0;g=a+12|0;c[e>>2]=c[f>>2];e=b+12|0;c[f>>2]=d;f=c[g>>2]|0;d=a+16|0;c[g>>2]=c[e>>2];g=b+16|0;c[e>>2]=f;e=c[d>>2]|0;f=a+20|0;c[d>>2]=c[g>>2];d=b+20|0;c[g>>2]=e;g=c[f>>2]|0;e=a+24|0;c[f>>2]=c[d>>2];f=b+24|0;c[d>>2]=g;d=c[e>>2]|0;g=a+28|0;c[e>>2]=c[f>>2];e=b+28|0;c[f>>2]=d;f=c[g>>2]|0;d=a+32|0;c[g>>2]=c[e>>2];b=b+32|0;c[e>>2]=f;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function eo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;return (+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b)|0}function fo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;return (+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b)|0}function go(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;return (+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b)|0}function ho(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;return (+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b)|0}function io(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;return (+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b)|0}function jo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;return (+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b)|0}function ko(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;f[a>>2]=-+f[b>>2];e=b+4|0;f[a+4>>2]=-+f[e>>2];f[a+8>>2]=-1.0;mo(a+12|0);f[a+24>>2]=+f[d>>2]*+f[b>>2];f[a+28>>2]=+f[d>>2]*+f[e>>2];c[a+32>>2]=c[d>>2];mo(a+36|0);f[a+48>>2]=-+f[b>>2];f[a+52>>2]=-+f[e>>2];f[a+56>>2]=-1.0;d=d+4|0;f[a+60>>2]=+f[d>>2]*+f[b>>2];f[a+64>>2]=+f[d>>2]*+f[e>>2];c[a+68>>2]=c[d>>2];return}function mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function no(a,b){a=a|0;b=b|0;var d=0;if((rj(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function oo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{po(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function po(a){a=a|0;f[a>>2]=0.0;f[a+4>>2]=0.0;return}function qo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+16|0;j=k;i=a+88|0;n=a+84|0;h=a+52|0;m=(((g|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)%(c[h>>2]|0)|0;c[b>>2]=m;m=(((g-m|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)/(c[h>>2]|0)|0;c[d>>2]=m;m=g-(c[b>>2]|0)-(B(c[h>>2]|0,m)|0)|0;m=((m|0)%(c[i>>2]|0)|0|0)/(c[n>>2]|0)|0;c[e>>2]=m;l=B(c[h>>2]|0,c[d>>2]|0)|0;g=g-(c[b>>2]|0)-((B(c[n>>2]|0,m)|0)+l)|0;i=(g|0)/(c[i>>2]|0)|0;c[f>>2]=i;g=c[b>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,190)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[h>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,191)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[d>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,192)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+56>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,193)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[e>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,194)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+60>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,195)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,196)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<(c[a+64>>2]|0)){zb=k;return}else{n=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,197)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}}function ro(a){a=a|0;return a+124|0}function so(a){a=a|0;return a+112|0}function to(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0;q=zb;zb=zb+16|0;p=q;l=+t(+(h-l));f[b>>2]=l;l=+t(+(i-m));f[d>>2]=l;l=+t(+(k-o));f[g>>2]=l;l=+t(+(j-n));l=+vn(l,+(c[a+60>>2]|0)-l);f[e>>2]=l;if(!(l>=0.0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,31935)|0,32155)|0,35e3)|0,333)|0,35007)|0,31976)|0;IE(p,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);g=XF(p,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(p);QE(q,g)|0;ME(q)|0;ua()}else{zb=q;return}}function uo(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){xo(a,b);oh(a,b)}return}function vo(a,b,c){a=a|0;b=+b;c=+c;f[a+8>>2]=b;f[a+12>>2]=c;return}function wo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function xo(a,b){a=a|0;b=b|0;var d=0;if((ph(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+48|0;j=t+8|0;i=t+32|0;h=t+28|0;k=t+24|0;p=t+20|0;q=t+16|0;r=t;s=a+8|0;if(!(c[s>>2]|0)){o=Xf(Xf(PE(Xf(Xf(Xf(56032,32010)|0,29190)|0,35e3)|0,405)|0,35007)|0,32045)|0;IE(j,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(j,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(j);QE(o,n)|0;ME(o)|0;ua()}c[a+100>>2]=0;l=a+72|0;m=a+76|0;c[m>>2]=c[l>>2];n=a+84|0;o=a+88|0;e=c[o>>2]|0;while(1){d=c[n>>2]|0;f=d;if((d|0)==(e|0))break;g=e-f|0;if((g|0)>8){e=e+-8|0;u=d;v=c[u>>2]|0;u=c[u+4>>2]|0;x=j;c[x>>2]=v;c[x+4>>2]=u;x=e;w=c[x+4>>2]|0;c[d>>2]=c[x>>2];c[d+4>>2]=w;d=e;c[d>>2]=v;c[d+4>>2]=u;Yl(j);c[k>>2]=f;c[p>>2]=e;c[q>>2]=f;c[h>>2]=c[k>>2];c[i>>2]=c[p>>2];c[j>>2]=c[q>>2];Ao(h,i,r,(g>>>3)+-1|0,j);e=c[o>>2]|0}d=0;while(1){if((d|0)==-1)break;x=d+-1|0;Yl(e+(x<<3)|0);d=x}e=e+-8|0;c[o>>2]=e}Bo(a,n,c[s>>2]|0,b);zb=t;return (c[m>>2]|0)-(c[l>>2]|0)>>2|0}function zo(a){a=a|0;return a+72|0}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=zb;zb=zb+16|0;l=m;j=c[f>>2]|0;k=c[a>>2]|0;b=j-k|0;i=j;h=j;if((e|0)>=2?(n=(e+-2|0)/2|0,(n|0)>=(b>>3|0)):0){b=b>>2|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;a=Oo(a,o)|0;b=a?g:b;d=a?o:d}if(!(Oo(d,i)|0)){o=c[j+4>>2]|0;i=l;c[i>>2]=c[j>>2];c[i+4>>2]=o;i=d;while(1){o=h;h=i;g=h;j=c[g+4>>2]|0;c[o>>2]=c[g>>2];c[o+4>>2]=j;c[f>>2]=i;if((n|0)<(b|0))break;b=b<<1|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;j=Oo(a,o)|0;b=j?g:b;d=j?o:d}if(Oo(d,l)|0)break;else i=d}e=l;f=c[e+4>>2]|0;o=i;c[o>>2]=c[e>>2];c[o+4>>2]=f;Yl(l)}}zb=m;return}function Bo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+64|0;m=t+8|0;l=t+56|0;k=t+52|0;n=t+44|0;o=t+36|0;p=t+28|0;q=t;g=t+48|0;h=t+40|0;f=t+32|0;r=t+16|0;if(Co(d)|0){c[g>>2]=c[a+76>>2];s=Do(d)|0;c[h>>2]=c[s>>2];s=(Do(d)|0)+4|0;c[f>>2]=c[s>>2];c[k>>2]=c[g>>2];c[l>>2]=c[h>>2];c[m>>2]=c[f>>2];Eo(a+72|0,k,l,m)|0}else{c[r>>2]=0;h=r+4|0;c[h>>2]=0;c[r+8>>2]=0;Fo(d,r,b,e);f=0;while(1){g=c[r>>2]|0;if(f>>>0>=(c[h>>2]|0)-g>>2>>>0)break;Bo(a,b,c[g+(f<<2)>>2]|0,e);f=f+1|0}i=a+100|0;if((c[i>>2]|0)<(c[a+104>>2]|0)?(j=c[b>>2]|0,s=b+4|0,(j|0)!=(c[s>>2]|0)):0){d=Go(j)|0;f=c[b>>2]|0;g=c[s>>2]|0;h=g-f|0;if((h|0)>8){j=f;g=g+-8|0;u=j;v=c[u>>2]|0;u=c[u+4>>2]|0;x=m;c[x>>2]=v;c[x+4>>2]=u;x=g;w=c[x+4>>2]|0;c[j>>2]=c[x>>2];c[j+4>>2]=w;j=g;c[j>>2]=v;c[j+4>>2]=u;Yl(m);c[n>>2]=f;c[o>>2]=g;c[p>>2]=f;c[k>>2]=c[n>>2];c[l>>2]=c[o>>2];c[m>>2]=c[p>>2];Ao(k,l,q,(h>>>3)+-1|0,m);g=c[s>>2]|0}f=0;while(1){if((f|0)==-1)break;x=f+-1|0;Yl(g+(x<<3)|0);f=x}c[s>>2]=g+-8;c[i>>2]=(c[i>>2]|0)+1;Bo(a,b,d,e)}Ho(r)}zb=t;return}function Co(b){b=b|0;return (a[b+100>>0]|0)!=0|0}function Do(a){a=a|0;return a+116|0}function Eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+48|0;p=s+40|0;o=s+36|0;q=s+32|0;r=s+28|0;j=s+8|0;k=s+4|0;l=s;f=c[a>>2]|0;g=f;b=f+((c[b>>2]|0)-g>>2<<2)|0;d=c[d>>2]|0;f=c[e>>2]|0;n=f-d|0;m=n>>2;a:do if((n|0)>0){h=a+8|0;n=c[a+4>>2]|0;i=n;if((m|0)>((c[h>>2]|0)-i>>2|0)){e=(i-g>>2)+m|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{r=c[a>>2]|0;n=(c[h>>2]|0)-r|0;q=n>>1;ml(j,n>>2>>>0>>1>>>0?(q>>>0>>0?e:q):g,b-r>>2,a+8|0);c[k>>2]=d;c[l>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[l>>2];ap(j,o,p);b=bp(a,j,b)|0;ol(j);break}}g=i-b|0;h=g>>2;e=d+(h<<2)|0;if((m|0)>(h|0)){c[q>>2]=e;c[r>>2]=f;c[o>>2]=c[q>>2];c[p>>2]=c[r>>2];_o(a,o,p,m-h|0);if((g|0)>0)f=e;else break}$o(a,b,n,b+(m<<2)|0);e=b;while(1){if((d|0)==(f|0))break a;c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}}while(0);zb=s;return b|0}function Fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+48|0;n=t+8|0;m=t+36|0;o=t+32|0;p=t+28|0;q=t;r=t+16|0;s=a+104|0;Io(r,(c[a+108>>2]|0)-(c[s>>2]|0)>>2);l=r+4|0;a=-1;f=0;k=-1;while(1){if(f>>>0>=(c[l>>2]|0)-(c[r>>2]|0)>>3>>>0)break;i=yl((c[(c[s>>2]|0)+(f<<2)>>2]|0)+4|0,e)|0;Jo(n,c[(c[s>>2]|0)+(f<<2)>>2]|0,i);g=n;j=c[g+4>>2]|0;h=(c[r>>2]|0)+(f<<3)|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;Yl(n);h=i>>>0>>0;j=h?f:k;a=h?i:a;f=f+1|0;k=j}if((k|0)==-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32065)|0,29190)|0,35e3)|0,155)|0,35007)|0,32099)|0;IE(n,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(n,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(n);QE(j,i)|0;ME(j)|0;ua()}a=c[(c[s>>2]|0)+(k<<2)>>2]|0;c[n>>2]=a;i=b+4|0;f=c[i>>2]|0;j=b+8|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);g=d+4|0;h=d+8|0;e=0;while(1){a=c[r>>2]|0;if(e>>>0>=(c[l>>2]|0)-a>>3>>>0)break;do if((e|0)!=(k|0)){f=Lo(a+(e<<3)|0)|0;if((f|0)==(Lo((c[r>>2]|0)+(k<<3)|0)|0)){a=c[(c[s>>2]|0)+(e<<2)>>2]|0;c[n>>2]=a;f=c[i>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);break}else{a=(c[r>>2]|0)+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){Mo(d,a);a=c[g>>2]|0}else{v=a;u=c[v+4>>2]|0;a=f;c[a>>2]=c[v>>2];c[a+4>>2]=u;a=(c[g>>2]|0)+8|0;c[g>>2]=a}v=c[d>>2]|0;c[o>>2]=v;c[p>>2]=a;c[m>>2]=c[o>>2];c[n>>2]=c[p>>2];No(m,n,q,a-v>>3);break}}while(0);e=e+1|0}Xl(r);zb=t;return}function Go(a){a=a|0;return c[a>>2]|0}function Ho(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Io(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Xo(a,b);Yo(a,b)}return}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=To(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Uo(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Vo(a,d);Wo(d);zb=h;return}}function Lo(a){a=a|0;return c[a+4>>2]|0}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=Po(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;Qo(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;Ro(a,d);So(d);zb=h;return}}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;i=j;if((e|0)>1?(g=(e+-2|0)/2|0,k=c[a>>2]|0,h=k+(g<<3)|0,f=(c[b>>2]|0)+-8|0,c[b>>2]=f,Oo(h,f)|0):0){a=f;e=c[a+4>>2]|0;d=i;c[d>>2]=c[a>>2];c[d+4>>2]=e;d=h;while(1){a=d;e=c[a+4>>2]|0;h=f;c[h>>2]=c[a>>2];c[h+4>>2]=e;c[b>>2]=d;if(!g)break;g=(g+-1|0)/2|0;f=k+(g<<3)|0;if(!(Oo(f,i)|0))break;else{h=d;d=f;f=h}}h=i;b=c[h+4>>2]|0;k=d;c[k>>2]=c[h>>2];c[k+4>>2]=b;Yl(i)}zb=j;return}function Oo(a,b){a=a|0;b=b|0;return (c[a+4>>2]|0)>>>0>(c[b+4>>2]|0)>>>0|0}function Po(a){a=a|0;return 536870911}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-8|0;k=h;j=c[k+4>>2]|0;i=(c[g>>2]|0)+-8|0;c[i>>2]=c[k>>2];c[i+4>>2]=j;c[g>>2]=(c[g>>2]|0)+-8;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function So(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-8|0;c[d>>2]=e;Yl(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function To(a){a=a|0;return 1073741823}function Uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Wo(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Xo(a,b){a=a|0;b=b|0;var d=0;if((Po(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function Yo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Zo(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Zo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a+4|0;d=c[b>>2]|0;while(1){if((d|0)==(f|0))break;b=c[e>>2]|0;c[b>>2]=c[d>>2];c[e>>2]=b+4;d=d+4|0}return}function $o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+4|0;i=c[h>>2]|0;f=i-e|0;g=f>>2;a=b+(g<<2)|0;e=i;while(1){if(a>>>0>=d>>>0)break;c[e>>2]=c[a>>2];j=e+4|0;c[h>>2]=j;a=a+4|0;e=j}if(f|0)$O(i+(0-g<<2)|0,b|0,f|0)|0;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;d=a+8|0;a=c[b>>2]|0;while(1){if((a|0)==(e|0))break;f=c[d>>2]|0;c[f>>2]=c[a>>2];c[d>>2]=f+4;f=a+4|0;c[b>>2]=f;a=f}return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;j=c[i>>2]|0;f=c[a>>2]|0;h=d;g=h-f|0;e=j+(0-(g>>2)<<2)|0;c[i>>2]=e;if((g|0)>0)_O(e|0,f|0,g|0)|0;f=a+4|0;g=b+8|0;e=(c[f>>2]|0)-h|0;if((e|0)>0){_O(c[g>>2]|0,d|0,e|0)|0;c[g>>2]=(c[g>>2]|0)+(e>>>2<<2)}h=c[a>>2]|0;c[a>>2]=c[i>>2];c[i>>2]=h;h=c[f>>2]|0;c[f>>2]=c[g>>2];c[g>>2]=h;h=a+8|0;d=b+12|0;a=c[h>>2]|0;c[h>>2]=c[d>>2];c[d>>2]=a;c[b>>2]=c[i>>2];return j|0}function cp(a){a=a|0;return dp(c[c[a>>2]>>2]|0)|0}function dp(a){a=a|0;return c[a+24>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=b;b=mm((c[a>>2]|0)+4|0,e)|0;zb=d;return b|0}function fp(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;gp(d,c[c[a>>2]>>2]|0);a=gm(zk(c[d>>2]|0)|0)|0;Rj(d);zb=b;return a|0}function gp(a,b){a=a|0;b=b|0;c[a>>2]=c[b+64>>2];b=c[b+68>>2]|0;c[a+4>>2]=b;if(b|0){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1}return}function hp(a){a=a|0;return ip(c[c[a>>2]>>2]|0)|0}function ip(a){a=a|0;return a+12|0}function jp(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;d=b+108|0;e=b+20|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d>>2]=1065353216;f=b+112|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return}function kp(a){a=a|0;Xj(a+124|0);gh(a+112|0);lp(a+92|0);return}function lp(a){a=a|0;mp(a);return}function mp(a){a=a|0;var b=0;np(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function np(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function op(b,d,e,g,h,i,j,k,l){b=b|0;d=+d;e=+e;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;f[b+20>>2]=d;f[b+24>>2]=e;f[b+28>>2]=g;f[b+32>>2]=h;f[b+36>>2]=-1.0;f[b+40>>2]=1.0;c[b+52>>2]=i;c[b+56>>2]=j;c[b+60>>2]=k;c[b+64>>2]=l;l=B(j,i)|0;c[b+84>>2]=l;l=B(l,k)|0;c[b+88>>2]=l;f[b+44>>2]=10.0;f[b+48>>2]=.4342944622039795;a[b+16>>0]=(j|i|0)==0&1;pp(b+92|0);return}function pp(a){a=a|0;var b=0,d=0,e=0;d=a+12|0;if(c[d>>2]|0){e=a+8|0;np(a,c[e>>2]|0);c[e>>2]=0;e=c[a+4>>2]|0;b=0;while(1){if((b|0)==(e|0))break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+1|0}c[d>>2]=0}return}function qp(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;p=t+12|0;q=t+8|0;r=t+4|0;s=t;pp(b+92|0);if(g|0){j=b+112|0;fh(j,g<<2);k=b+124|0;Vk(k,g);if(a[b+16>>0]|0)rp(b,d,e,g);l=b+68|0;m=b+72|0;n=b+76|0;o=b+80|0;h=0;i=0;while(1){if((i|0)>=(g|0))break;u=i<<2;v=d+(u<<2)|0;u=e+(u<<2)|0;sp(b,p,q,r,s,+f[v>>2],+f[v+4>>2],+f[v+8>>2],+f[v+12>>2],+f[u>>2],+f[u+4>>2],+f[u+8>>2],+f[u+12>>2]);if(tp(b,+f[p>>2],+f[q>>2],+f[r>>2],+f[s>>2])|0){v=(c[j>>2]|0)+(h<<2<<2)|0;c[v>>2]=c[l>>2];c[v+4>>2]=c[m>>2];c[v+8>>2]=c[n>>2];c[v+12>>2]=c[o>>2];c[(c[k>>2]|0)+(h<<2)>>2]=i;h=h+1|0}i=i+1|0}fh(j,h<<2);Vk(k,h)}zb=t;return}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;l=zb;zb=zb+16|0;g=l+12|0;k=l;i=a+4|0;j=Aj(c[a>>2]|0,c[i>>2]|0)|0;uo(k,e);if((e|0)<=0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33144)|0,33176)|0,35e3)|0,208)|0,35007)|0,33265)|0;IE(g,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(g,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(g);QE(m,n)|0;ME(m)|0;ua()}if((c[a>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33287)|0,33176)|0,35e3)|0,209)|0,35007)|0,33329)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}if((c[i>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33352)|0,33176)|0,35e3)|0,210)|0,35007)|0,33395)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}h=+(j|0);g=0;while(1){if((g|0)==(e|0))break;n=g<<2;o=+Bp(+f[b+(n<<2)+12>>2],+f[d+(n<<2)+12>>2])*h;f[(c[k>>2]|0)+(g<<2)>>2]=o;g=g+1|0}n=c[k>>2]|0;o=+Dp(n,(c[k+4>>2]|0)-n>>2)*.25;n=Aj(5,~~+A(+((+f[a+24>>2]-+f[a+20>>2])/o)))|0;m=a+52|0;c[m>>2]=n;n=Aj(5,~~+A(+((+f[a+32>>2]-+f[a+28>>2])/o)))|0;c[a+56>>2]=n;n=B(c[m>>2]|0,n)|0;c[a+84>>2]=n;n=B(c[a+60>>2]|0,n)|0;c[a+88>>2]=n;gh(k);zb=l;return}function sp(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+32|0;q=s+16|0;r=s;n=j-n;f[e>>2]=n;j=n;if(!(j<=-3.141592653589793)){if(j>3.141592653589793){n=j+-6.283185307179586;p=5}}else{n=j+6.283185307179586;p=5}if((p|0)==5)f[e>>2]=n;if(!(n>-3.141592653589793)){p=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,468)|0,35007)|0,32407)|0;IE(q,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);t=XF(q,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(q);QE(p,t)|0;ME(p)|0;ua()}if(!(n<=3.141592653589793)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,469)|0,35007)|0,32407)|0;IE(q,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(q,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(q);QE(t,s)|0;ME(t)|0;ua()}else{n=+Bp(k,o);f[g>>2]=n;Cp(r,+f[e>>2],n);n=+z(+(+f[g>>2]));f[g>>2]=n*+f[a+48>>2];n=+f[r>>2];j=+f[r+4>>2];o=+f[r+8>>2];k=+f[r+12>>2];g=a+8|0;t=a+12|0;f[b>>2]=h-(n*l+j*m)+(n*+f[g>>2]+j*+f[t>>2]);f[d>>2]=i-(o*l+k*m)+(o*+f[g>>2]+k*+f[t>>2]);zb=s;return}}function tp(a,b,d,e,g){a=a|0;b=+b;d=+d;e=+e;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;h=x;t=+f[a+20>>2];if((((((!(t>b)?(m=+f[a+24>>2],!(m<=b)):0)?(n=+f[a+28>>2],!(n>d)):0)?(o=+f[a+32>>2],!(o<=d)):0)?(p=e,!(p<=-3.141592653589793|p>3.141592653589793)):0)?(q=+f[a+36>>2],!(q>g)):0)?(r=+f[a+40>>2],!(r<=g)):0){if(!(t<=b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32121)|0,32155)|0,35e3)|0,360)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(m>b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32257)|0,32155)|0,35e3)|0,361)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(n<=d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32290)|0,32155)|0,35e3)|0,362)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(o>d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32339)|0,32155)|0,35e3)|0,363)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p>-3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,364)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p<=3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,365)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(q<=g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32461)|0,32155)|0,35e3)|0,366)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(r>g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32522)|0,32155)|0,35e3)|0,367)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}h=a+68|0;i=a+72|0;l=a+76|0;j=a+80|0;up(a,h,i,l,j,b,d,e,g);h=~~+s(+(+f[h>>2]+-.5));i=~~+s(+(+f[i>>2]+-.5));l=~~+s(+(+f[l>>2]+-.5));j=~~+s(+(+f[j>>2]+-.5));k=c[a+60>>2]|0;l=(k+l|0)%(k|0)|0;if((((h|0)>=0?(u=h+1|0,!((i|0)<0?1:(u|0)>=(c[a+52>>2]|0))):0)?(v=i+1|0,!((j|0)<0?1:(v|0)>=(c[a+56>>2]|0))):0)?(w=j+1|0,(w|0)<(c[a+64>>2]|0)):0){k=(l+1|0)%(k|0)|0;wp(a,vp(a,h,i,l,j)|0,1);wp(a,vp(a,u,i,l,j)|0,1);wp(a,vp(a,u,v,l,j)|0,1);wp(a,vp(a,u,v,k,j)|0,1);wp(a,vp(a,u,v,k,w)|0,1);wp(a,vp(a,u,v,l,w)|0,1);wp(a,vp(a,u,i,k,j)|0,1);wp(a,vp(a,u,i,k,w)|0,1);wp(a,vp(a,u,i,l,w)|0,1);wp(a,vp(a,h,v,l,j)|0,1);wp(a,vp(a,h,v,k,j)|0,1);wp(a,vp(a,h,v,k,w)|0,1);wp(a,vp(a,h,v,l,w)|0,1);wp(a,vp(a,h,i,k,j)|0,1);wp(a,vp(a,h,i,k,w)|0,1);wp(a,vp(a,h,i,l,w)|0,1);h=1}else h=0}else h=0;zb=x;return h|0}function up(a,b,d,e,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;var l=0.0,m=0.0;l=+(c[a+52>>2]|0);m=+f[a+20>>2];h=+Bp(h-m,+f[a+24>>2]-m)*l;f[b>>2]=h;h=+(c[a+56>>2]|0);l=+f[a+28>>2];i=+Bp(i-l,+f[a+32>>2]-l)*h;f[d>>2]=i;f[e>>2]=(j+3.141592653589793)*.15915494309189535*+(c[a+60>>2]|0);j=+(c[a+64>>2]|0);i=+f[a+36>>2];k=+Bp(k-i,+f[a+40>>2]-i)*j;f[g>>2]=k;return}function vp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+16|0;h=k;if((b|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,165)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}g=c[a+52>>2]|0;if((g|0)<=(b|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,166)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}if((d|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,167)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}i=c[a+56>>2]|0;if((i|0)<=(d|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,168)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(j,l)|0;ME(j)|0;ua()}if((e|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,169)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(l,j)|0;ME(l)|0;ua()}j=c[a+60>>2]|0;if((j|0)<=(e|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,170)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);m=XF(h,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(h);QE(l,m)|0;ME(l)|0;ua()}if((f|0)<=-1){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,171)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}if((c[a+64>>2]|0)<=(f|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,172)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}m=(B(g,d)|0)+b|0;l=(B(c[a+84>>2]|0,e)|0)+m|0;a=l+(B(c[a+88>>2]|0,f)|0)|0;if((a|0)>((B(B(i,g)|0,(B(j,f)|0)+e|0)|0)+m|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33012)|0,32155)|0,35e3)|0,176)|0,35007)|0,32597)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}else{zb=k;return a|0}return 0}function wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;e=s+8|0;n=s;if((b|0)<=-1){r=Xf(Xf(PE(Xf(Xf(Xf(56032,32563)|0,32155)|0,35e3)|0,290)|0,35007)|0,32597)|0;IE(e,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(e,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(e);QE(r,q)|0;ME(r)|0;ua()}r=a+92|0;c[e>>2]=b;g=xp(r,e)|0;if(!g){c[n>>2]=b;c[n+4>>2]=d;p=a+96|0;k=c[p>>2]|0;q=(k|0)==0;a:do if(!q){l=k+-1|0;m=(l&k|0)==0;if(!m)if(k>>>0>b>>>0)d=b;else d=(b>>>0)%(k>>>0)|0;else d=l&b;g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g)o=19;else do{g=c[g>>2]|0;if(!g){o=19;break a}h=c[g+4>>2]|0;if((h|0)!=(b|0)){if(!m){if(h>>>0>=k>>>0)h=(h>>>0)%(k>>>0)|0}else h=h&l;if((h|0)!=(d|0)){o=19;break a}}}while((c[g+8>>2]|0)!=(b|0))}else{d=0;o=19}while(0);if((o|0)==19){yp(e,r,b,n);l=a+104|0;i=+(((c[l>>2]|0)+1|0)>>>0);j=+f[a+108>>2];do if(q|j*+(k>>>0)>>0<3|(k+-1&k|0)!=0)&1;g=~~+A(+(i/j))>>>0;zp(r,d>>>0>>0?g:d);d=c[p>>2]|0;g=d+-1|0;if(!(g&d)){k=d;d=g&b;break}if(d>>>0>b>>>0){k=d;d=b}else{k=d;d=(b>>>0)%(d>>>0)|0}}while(0);g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g){h=a+100|0;c[c[e>>2]>>2]=c[h>>2];c[h>>2]=c[e>>2];c[(c[r>>2]|0)+(d<<2)>>2]=h;h=c[e>>2]|0;d=c[h>>2]|0;if(d){d=c[d+4>>2]|0;g=k+-1|0;if(g&k){if(d>>>0>=k>>>0)d=(d>>>0)%(k>>>0)|0}else d=d&g;c[(c[r>>2]|0)+(d<<2)>>2]=h}}else{c[c[e>>2]>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0}}else{r=g+12|0;c[r>>2]=(c[r>>2]|0)+d}zb=s;return}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function yp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=tB(16)|0;c[b>>2]=g;c[b+4>>2]=d+8;c[g+8>>2]=c[f>>2];c[g+12>>2]=c[f+4>>2];a[b+8>>0]=1;c[g+4>>2]=e;c[g>>2]=0;return}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Ap(a,b)}}else Ap(a,b);return}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Bp(a,b){a=+a;b=+b;return +(a/(b==0.0?1.0:b))}function Cp(a,b,c){a=a|0;b=+b;c=+c;var d=0.0;d=+w(+b)*c;c=+x(+b)*c;f[a>>2]=d;f[a+4>>2]=-c;f[a+8>>2]=c;f[a+12>>2]=d;return}function Dp(a,b){a=a|0;b=b|0;return +(+Ep(a,b,(b&1)+-1+((b|0)/2|0)|0))}function Ep(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0;r=zb;zb=zb+16|0;e=r;if((b|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,53)|0,35007)|0,33521)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}if((d|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,54)|0,35007)|0,33569)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}p=d+-1|0;q=a+(p<<2)|0;m=b+-1|0;n=0;while(1){o=+f[q>>2];if((n|0)>=(m|0))break;e=n;b=m;do{while(1){i=a+(e<<2)|0;j=+f[i>>2];k=e+1|0;if(j>2];l=b+-1|0;if(o>2]=h;f[g>>2]=j;e=k;b=l}}while((e|0)<=(b|0));m=(e|0)<(d|0)?m:b;n=(b|0)<(p|0)?e:n}zb=r;return +o}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0,h=0;f[b>>2]=0.0;c[d>>2]=-1;a=a+100|0;e=0.0;while(1){a=c[a>>2]|0;if(!a)break;g=a;h=g+12|0;if(e<+((c[h>>2]|0)>>>0)){c[d>>2]=c[g+8>>2];e=+((c[h>>2]|0)>>>0);f[b>>2]=e}}return}function Gp(a){a=a|0;ko(a,1760,12);ko(a+48|0,1808,12);ko(a+96|0,1856,12);ko(a+144|0,1904,12);ko(a+192|0,1952,12);ko(a+240|0,2e3,12);f[a+288>>2]=.10000000149011612;f[a+292>>2]=.17499999701976776;f[a+296>>2]=.25;f[a+300>>2]=.32499998807907104;f[a+304>>2]=.4000000059604645;f[a+308>>2]=.4749999940395355;f[a+312>>2]=.550000011920929;f[a+316>>2]=7.0;return}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;fm(b,96);Ip(b,((c[e+4>>2]|0)-(c[e>>2]|0)|0)/20|0);Jp(b,d,e,a,a+48|0,a+96|0,a+144|0,a+192|0,a+240|0,+f[a+288>>2],+f[a+292>>2],+f[a+296>>2],+f[a+300>>2],+f[a+304>>2],+f[a+308>>2],+f[a+312>>2],+f[a+316>>2]);return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;g=B(c[b>>2]|0,d)|0;a[f>>0]=0;Wp(b+4|0,g,f);hm(b+16|0,d);zb=e;return}function Jp(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;x=z;if(!d){y=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,33619)|0,35e3)|0,537)|0,35007)|0,33688)|0;IE(x,y+(c[(c[y>>2]|0)+-12>>2]|0)|0);w=XF(x,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(x);QE(y,w)|0;ME(y)|0;ua()}w=Ak(b)|0;y=e+4|0;v=c[y>>2]|0;u=c[e>>2]|0;if((w|0)!=((v-u|0)/20|0|0)){w=Xf(Xf(PE(Xf(Xf(Xf(56032,33704)|0,33619)|0,35e3)|0,538)|0,35007)|0,33757)|0;IE(x,w+(c[(c[w>>2]|0)+-12>>2]|0)|0);t=XF(x,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(x);QE(w,t)|0;ME(w)|0;ua()}w=0;t=0;while(1){u=(v-u|0)/20|0;if(w>>>0>=u>>>0)break;v=Kp(b,t)|0;if(Lp(v,d,(c[e>>2]|0)+(w*20|0)|0,f,g,h,i,j,k,l,m,n,o,p,q,r,s)|0){u=(c[e>>2]|0)+(w*20|0)|0;v=Mp(b,t)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];a[v+16>>0]=a[u+16>>0]|0;t=t+1|0}w=w+1|0;u=c[e>>2]|0;v=c[y>>2]|0}if((t|0)==(u|0)){Ip(b,t);zb=z;return}else{z=Xf(Xf(PE(Xf(Xf(Xf(56032,33794)|0,33619)|0,35e3)|0,617)|0,35007)|0,33845)|0;IE(x,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);k=XF(x,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(x);QE(z,k)|0;ME(z)|0;ua()}}function Kp(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function Lp(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0;s=zb;zb=zb+160|0;r=s;if(Np(r,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)|0){Op(a,r);a=1}else a=0;zb=s;return a|0}function Mp(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function Np(a,b,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;t=zb;zb=zb+336|0;aa=t+288|0;y=t+240|0;D=t+192|0;I=t+144|0;N=t+96|0;S=t+48|0;X=t;v=t+328|0;u=t+324|0;x=+f[d+12>>2]*s;x=x<1.0?1.0:x;Qp(aa,+f[d>>2],+f[d+4>>2],+f[d+8>>2],x);w=+f[aa+8>>2];s=+f[aa+20>>2];Rp(y,aa,e);C=y+8|0;Rp(C,aa,e+8|0);B=y+16|0;Rp(B,aa,e+16|0);A=y+24|0;Rp(A,aa,e+24|0);z=y+32|0;Rp(z,aa,e+32|0);d=y+40|0;Rp(d,aa,e+40|0);Rp(D,aa,g);H=D+8|0;Rp(H,aa,g+8|0);G=D+16|0;Rp(G,aa,g+16|0);F=D+24|0;Rp(F,aa,g+24|0);E=D+32|0;Rp(E,aa,g+32|0);e=D+40|0;Rp(e,aa,g+40|0);Rp(I,aa,h);M=I+8|0;Rp(M,aa,h+8|0);L=I+16|0;Rp(L,aa,h+16|0);K=I+24|0;Rp(K,aa,h+24|0);J=I+32|0;Rp(J,aa,h+32|0);g=I+40|0;Rp(g,aa,h+40|0);Rp(N,aa,i);R=N+8|0;Rp(R,aa,i+8|0);Q=N+16|0;Rp(Q,aa,i+16|0);P=N+24|0;Rp(P,aa,i+24|0);O=N+32|0;Rp(O,aa,i+32|0);h=N+40|0;Rp(h,aa,i+40|0);Rp(S,aa,j);W=S+8|0;Rp(W,aa,j+8|0);V=S+16|0;Rp(V,aa,j+16|0);U=S+24|0;Rp(U,aa,j+24|0);T=S+32|0;Rp(T,aa,j+32|0);i=S+40|0;Rp(i,aa,j+40|0);Rp(X,aa,k);$=X+8|0;Rp($,aa,k+8|0);_=X+16|0;Rp(_,aa,k+16|0);Z=X+24|0;Rp(Z,aa,k+24|0);Y=X+32|0;Rp(Y,aa,k+32|0);j=X+40|0;Rp(j,aa,k+40|0);Sp(b,v,u,x*r);r=+Tp(b,+f[X>>2],+f[X+4>>2],c[v>>2]|0,c[u>>2]|0);f[a>>2]=r;r=+Tp(b,+f[$>>2],+f[X+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+4>>2]=r;r=+Tp(b,+f[_>>2],+f[X+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+8>>2]=r;r=+Tp(b,+f[Z>>2],+f[X+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+12>>2]=r;r=+Tp(b,+f[Y>>2],+f[X+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+16>>2]=r;r=+Tp(b,+f[j>>2],+f[X+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+20>>2]=r;Sp(b,v,u,x*q);r=+Tp(b,+f[S>>2],+f[S+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+24>>2]=r;r=+Tp(b,+f[W>>2],+f[S+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+28>>2]=r;r=+Tp(b,+f[V>>2],+f[S+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+32>>2]=r;r=+Tp(b,+f[U>>2],+f[S+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+36>>2]=r;r=+Tp(b,+f[T>>2],+f[S+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+40>>2]=r;r=+Tp(b,+f[i>>2],+f[S+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+44>>2]=r;Sp(b,v,u,x*p);r=+Tp(b,+f[N>>2],+f[N+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+48>>2]=r;r=+Tp(b,+f[R>>2],+f[N+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+52>>2]=r;r=+Tp(b,+f[Q>>2],+f[N+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+56>>2]=r;r=+Tp(b,+f[P>>2],+f[N+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+60>>2]=r;r=+Tp(b,+f[O>>2],+f[N+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+64>>2]=r;r=+Tp(b,+f[h>>2],+f[N+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+68>>2]=r;Sp(b,v,u,x*o);r=+Tp(b,+f[I>>2],+f[I+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+72>>2]=r;r=+Tp(b,+f[M>>2],+f[I+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+76>>2]=r;r=+Tp(b,+f[L>>2],+f[I+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+80>>2]=r;r=+Tp(b,+f[K>>2],+f[I+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+84>>2]=r;r=+Tp(b,+f[J>>2],+f[I+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+88>>2]=r;r=+Tp(b,+f[g>>2],+f[I+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+92>>2]=r;Sp(b,v,u,x*n);r=+Tp(b,+f[D>>2],+f[D+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+96>>2]=r;r=+Tp(b,+f[H>>2],+f[D+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+100>>2]=r;r=+Tp(b,+f[G>>2],+f[D+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+104>>2]=r;r=+Tp(b,+f[F>>2],+f[D+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+108>>2]=r;r=+Tp(b,+f[E>>2],+f[D+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+112>>2]=r;r=+Tp(b,+f[e>>2],+f[D+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+116>>2]=r;Sp(b,v,u,x*m);r=+Tp(b,+f[y>>2],+f[y+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+120>>2]=r;r=+Tp(b,+f[C>>2],+f[y+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+124>>2]=r;r=+Tp(b,+f[B>>2],+f[y+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+128>>2]=r;r=+Tp(b,+f[A>>2],+f[y+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+132>>2]=r;r=+Tp(b,+f[z>>2],+f[y+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+136>>2]=r;r=+Tp(b,+f[d>>2],+f[y+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+140>>2]=r;Sp(b,v,u,x*l);l=+Tp(b,w,s,c[v>>2]|0,c[u>>2]|0);f[a+144>>2]=l;zb=t;return 1}function Op(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;Il(a,84);c=0;g=0;i=36;j=35;k=36;while(1){if((c|0)==37)break;h=c+1|0;e=b+(c<<2)|0;c=h;d=g;while(1){if((d|0)==(k|0))break;Pp(a,d,+f[e>>2]<+f[b+(c<<2)>>2]&1);c=c+1|0;d=d+1|0}e=k+j|0;c=h;g=g+i|0;i=i+-1|0;j=j+-1|0;k=e}return}function Pp(b,c,e){b=b|0;c=c|0;e=e|0;b=b+((c|0)/8|0)|0;a[b>>0]=(e&255)<<(c&7)|(d[b>>0]|0);return}function Qp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var g=0.0;g=+w(+d)*e;e=+x(+d)*e;f[a>>2]=g;f[a+4>>2]=-e;f[a+8>>2]=b;f[a+12>>2]=e;f[a+16>>2]=g;f[a+20>>2]=c;f[a+24>>2]=0.0;f[a+28>>2]=0.0;f[a+32>>2]=1.0;return}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+4|0;f[a>>2]=+f[b+8>>2]+(+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[d>>2]);f[a+4>>2]=+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[d>>2]);return}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;l=m;g=~~+s(+(+Oi(e)));c[b>>2]=g;e=+z(+(e/+(1<>2]*e);c[d>>2]=g;j=a+20|0;if(((c[j>>2]|0)+-1|0)==(g|0)){c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=0;g=0}h=c[b>>2]|0;if((h|0)>=0){i=c[a+16>>2]|0;if((h|0)<(i|0))h=g;else{c[b>>2]=i+-1;g=(c[j>>2]|0)+-1|0;k=7}}else{c[b>>2]=0;g=0;k=7}if((k|0)==7){c[d>>2]=g;h=g}g=c[b>>2]|0;if((g|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,33865)|0,33900)|0,35e3)|0,268)|0,35007)|0,33993)|0;IE(l,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);b=XF(l,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(l);QE(k,b)|0;ME(k)|0;ua()}if((g|0)>=(c[a+16>>2]|0)){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,269)|0,35007)|0,34061)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<=-1){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,270)|0,35007)|0,34138)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<(c[j>>2]|0)){zb=m;return}else{m=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,271)|0,35007)|0,34212)|0;IE(l,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);a=XF(l,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(l);QE(m,a)|0;ME(m)|0;ua()}}function Tp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var g=0,h=0,i=0;g=zb;zb=zb+16|0;i=g+4|0;h=g;e=Lg(a,d,e)|0;mi(i,h,b,c,d);c=+Up(e,+f[i>>2],+f[h>>2]);zb=g;return +c}function Up(a,b,c){a=a|0;b=+b;c=+c;return +(+Vp(a,b,c))}function Vp(a,b,c){a=a|0;b=+b;c=+c;b=+Zh(b,0.0,+(((Ng(a)|0)+-2|0)>>>0));return +(+Ci(a,b,+Zh(c,0.0,+(((Og(a)|0)+-2|0)>>>0))))}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g|0;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+b}else Xp(a,b-f|0,d);return}function Xp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+32|0;h=k;i=b+8|0;j=b+4|0;f=c[j>>2]|0;do if(((c[i>>2]|0)-f|0)>>>0>>0){f=f-(c[b>>2]|0)+d|0;g=mg(b)|0;if(g>>>0>>0)EO(b);else{l=c[b>>2]|0;m=(c[i>>2]|0)-l|0;i=m<<1;ng(h,m>>>0>>1>>>0?(i>>>0>>0?f:i):g,(c[j>>2]|0)-l|0,b+8|0);Yp(h,d,e);og(b,h);pg(h);break}}else do{a[f>>0]=a[e>>0]|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;d=d+-1|0}while((d|0)!=0);while(0);zb=k;return}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;b=d;d=c[f>>2]|0;do{a[d>>0]=a[e>>0]|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Zp(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+272|0;e=b+256|0;d=b;Ta(e|0)|0;Ra(d|0,256,34263,Oa(e|0)|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,d,Yf(d)|0);zb=b;return}function _p(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;f=i;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];g=a+24|0;h=c[b+24>>2]|0;c[f>>2]=h;e=f+4|0;b=c[b+28>>2]|0;c[e>>2]=b;if(!b){d=e;b=0}else{d=b+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;b=c[e>>2]|0}c[f>>2]=c[g>>2];c[g>>2]=h;h=a+28|0;c[d>>2]=c[h>>2];c[h>>2]=b;aq(f);zb=i;return}function aq(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function bq(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;$p(a,b);return}function cq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=zb;zb=zb+32|0;i=l+16|0;j=l+8|0;k=l;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34281)|0,34314)|0,35e3)|0,127)|0,35007)|0,34386)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);m=XF(i,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(i);QE(h,m)|0;ME(h)|0;ua()}if(!e){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34407)|0,34314)|0,35e3)|0,128)|0,35007)|0,34441)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(f>>>0>>0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34463)|0,34314)|0,35e3)|0,129)|0,35007)|0,34500)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(!g){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34545)|0,34314)|0,35e3)|0,130)|0,35007)|0,34581)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if((f|0)<0)f=B(B(g,d)|0,dq(b)|0)|0;c[a+12>>2]=f;f=B(f,e)|0;h=a+20|0;if((c[h>>2]|0)!=(f|0)?(m=a+24|0,o=uB(f)|0,c[k>>2]=0,c[i>>2]=c[k>>2],eq(j,o,i),o=c[j>>2]|0,c[j>>2]=c[m>>2],c[m>>2]=o,o=j+4|0,k=a+28|0,n=c[o>>2]|0,c[o>>2]=c[k>>2],c[k>>2]=n,aq(j),(c[m>>2]|0)==0):0){o=Xf(Xf(PE(Xf(Xf(Xf(56032,34615)|0,34314)|0,35e3)|0,149)|0,35007)|0,34650)|0;IE(i,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(i,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(i);QE(o,n)|0;ME(o)|0;ua()}c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+16>>2]=g;c[h>>2]=f;zb=l;return}function dq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;switch(a|0){case 1:break;case 2:{a=4;break}default:{d=O(16)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,34774,Yf(34774)|0);mj(d,b);Q(d|0,13208,5)}}zb=d;return a|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15768;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;fq(a,e);zb=d;return}function fq(a,b){a=a|0;b=b|0;return}function gq(a){a=a|0;ZN(a);SA(a);return}function hq(a){a=a|0;SA(c[a+12>>2]|0);return}function iq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34671?a+12|0:0)|0}function jq(a){a=a|0;Pf(a,16);return}function kq(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=zb;zb=zb+16|0;k=j+8|0;l=j+4|0;m=j;c[b>>2]=e;c[b+4>>2]=f;c[b+8>>2]=g;c[b+16>>2]=i;g=B(h,g)|0;c[b+20>>2]=g;c[m>>2]=0;a[l>>0]=a[j+12>>0]|0;c[k>>2]=c[m>>2];lq(b+24|0,d,l,k);if((h|0)<0)h=B(B(i,f)|0,dq(e)|0)|0;c[b+12>>2]=h;zb=j;return}function lq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=zb;zb=zb+16|0;d=e;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15796;c[f+12>>2]=b;c[a+4>>2]=f;c[d>>2]=b;c[d+4>>2]=b;fq(a,d);zb=e;return}function mq(a,b){a=a|0;b=b|0;return}function nq(a){a=a|0;ZN(a);SA(a);return}function oq(a){a=a|0;a=a+12|0;mq(a,c[a>>2]|0);return}function pq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34793?a+12|0:0)|0}function qq(a){a=a|0;Pf(a,16);return}function rq(a){a=a|0;aq(a+24|0);return}function sq(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+4|0;e=0;while(1){g=c[a>>2]|0;if(e>>>0>=(c[f>>2]|0)-g>>3>>>0)break;g=c[g+(e<<3)>>2]|0;Wb[c[(c[g>>2]|0)+8>>2]&3](g,b,d);e=e+1|0}return}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=zb;zb=zb+48|0;i=f;h=f+28|0;g=f+16|0;c[i>>2]=e;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;gO(g,d,Yf(d)|0);vq(h,g,i);tq(a,b,h);jO(h);jO(g);zb=f;return}function vq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+2048|0;g=f;Jx(g,2048,(a[d+11>>0]|0)<0?c[d>>2]|0:d,e)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,g,Yf(g)|0);zb=f;return}function wq(a){a=a|0;g[a>>3]=-1.0;g[a+8>>3]=-1.0;return}function xq(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;Ka(d|0,0)|0;g[a>>3]=+(c[d+4>>2]|0)*1.0e-06+ +(c[d>>2]|0);zb=b;return}function yq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;if(!(+g[a>>3]>=0.0)){d=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,67)|0,35007)|0,35010)|0;IE(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);a=XF(b,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(b);QE(d,a)|0;ME(d)|0;ua()}else{Ka(b|0,0)|0;g[a+8>>3]=+(c[b+4>>2]|0)*1.0e-06+ +(c[b>>2]|0);zb=d;return}}function zq(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0,i=0;f=zb;zb=zb+16|0;d=f;e=+g[a>>3];if(!(e>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,80)|0,35007)|0,35010)|0;IE(d,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(h,i)|0;ME(h)|0;ua()}b=+g[a+8>>3];if(!(b>=0.0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,35037)|0,34927)|0,35e3)|0,81)|0,35007)|0,35075)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);h=XF(d,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(d);QE(i,h)|0;ME(i)|0;ua()}else{zb=f;return +(b-e)}return +(0.0)}function Aq(a){a=a|0;return +(+zq(a)*1.0e3)}function Bq(a,b){a=a|0;b=b|0;var d=0;wq(a);d=a+16|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,b,Yf(b)|0);xq(a);return}function Cq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=zb;zb=zb+48|0;j=k;d=k+24|0;yq(b);f=yk()|0;Zp(d);h=(a[d+11>>0]|0)<0?c[d>>2]|0:d;i=b+16|0;if((a[i+11>>0]|0)<0)e=c[i>>2]|0;else e=i;l=+Aq(b);c[j>>2]=35129;c[j+4>>2]=h;c[j+8>>2]=35137;c[j+12>>2]=e;g[j+16>>3]=l;uq(f,8,35102,j);jO(d);jO(i);zb=k;return}function Dq(){Eq();Fq();Gq();return}function Eq(){c[13871]=0;c[13872]=0;c[13873]=0;c[13874]=0;c[13875]=1065353216;return}function Fq(){c[13876]=0;c[13877]=0;c[13878]=0;c[13879]=0;c[13880]=1065353216;return}function Gq(){Hq(0);return}function Hq(a){a=a|0;var b=0;a=zb;zb=zb+16|0;b=a;Jq(35173,26);Lq(35179,67);Lq(35188,68);Oq(35197,20);Oq(35208,21);Oq(35224,22);Sq(35238,23);Lq(35256,69);Vq(35276,70);Jq(35288,27);Sq(35305,24);Jq(35325,28);Jq(35343,29);Sq(35365,25);Sq(35388,26);Lq(35417,71);Lq(35430,72);Lq(35443,73);Jq(35459,30);Sq(35478,27);Sq(35488,28);Sq(35501,29);Lq(35514,74);Lq(35527,75);kr(35546,114);mr(35558,1);or(35570,1);qr(35593,1);or(35616,2);qr(35638,2);ur(35660,40);Lq(35677,76);ur(35694,41);Lq(35707,77);ur(35720,42);Lq(35744,78);Br(35768,3);qr(35781,3);ur(35794,43);Lq(35812,79);ur(35830,44);Lq(35846,80);ur(35862,45);Lq(35879,81);Jr(35896,15816);Jr(35925,15820);Jr(35953,15824);c[b>>2]=0;Jr(35986,b);c[b>>2]=1;Jr(36003,b);c[b>>2]=0;Jr(36019,b);c[b>>2]=0;Jr(36041,b);c[b>>2]=1;Jr(36066,b);c[b>>2]=1;Jr(36091,b);c[b>>2]=100;Jr(36116,b);c[b>>2]=0;Jr(36143,b);c[b>>2]=1;Jr(36169,b);c[b>>2]=0;Jr(36195,b);c[b>>2]=0;Jr(36222,b);c[b>>2]=1;Jr(36249,b);c[b>>2]=2;Jr(36275,b);c[b>>2]=3;Jr(36300,b);c[b>>2]=4;Jr(36338,b);c[b>>2]=0;Jr(36375,b);c[b>>2]=0;Jr(36409,b);c[b>>2]=1;Jr(36433,b);c[b>>2]=2;Jr(36459,b);c[b>>2]=2;Jr(36486,b);c[b>>2]=5;Jr(36520,b);g[b>>3]=.5;Kr(36538,b);c[b>>2]=0;Jr(36559,b);c[b>>2]=1;Jr(36578,b);c[b>>2]=2;Jr(36596,b);c[b>>2]=3;Jr(36614,b);c[b>>2]=4;Jr(36633,b);c[b>>2]=3;Jr(36655,b);c[b>>2]=515;Jr(36674,b);c[b>>2]=259;Jr(36703,b);c[b>>2]=4;Jr(36731,b);c[b>>2]=772;Jr(36750,b);c[b>>2]=1028;Jr(36780,b);c[b>>2]=0;Jr(36810,b);c[b>>2]=1;Jr(36841,b);c[b>>2]=2;Jr(36877,b);c[b>>2]=3;Jr(36911,b);c[b>>2]=0;Jr(36949,b);c[b>>2]=1;Jr(36982,b);c[b>>2]=2;Jr(37029,b);c[b>>2]=3;Jr(37071,b);c[b>>2]=4;Jr(37114,b);c[b>>2]=5;Jr(37166,b);c[b>>2]=6;Jr(37217,b);c[b>>2]=7;Jr(37262,b);c[b>>2]=8;Jr(37301,b);c[b>>2]=9;Jr(37346,b);zb=a;return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;h=i+8|0;f=i+12|0;g=c[13882]|0;c[13882]=g+1;c[f>>2]=g;g=Ur(55484,f)|0;c[g>>2]=c[f>>2];c[g+208>>2]=a;c[g+212>>2]=b;j=B(a<<2,b)|0;a=g+200|0;c[a>>2]=j;j=FO(j)|0;b=g+196|0;c[b>>2]=j;j=FO((c[a>>2]|0)/4|0)|0;e=g+204|0;c[e>>2]=j;j=hd()|0;c[g+220>>2]=j;if(!j)Ue(0,3,41354,i);yt(c[f>>2]|0,d)|0;c[h>>2]=c[a>>2];Ue(0,1,41391,h);za(0,c[g>>2]|0,c[b>>2]|0,c[a>>2]|0,g+344|0,51360,c[e>>2]|0)|0;zb=i;return c[g>>2]|0}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=tt(d)|0;d=ut(d)|0;ka(a|0,e|0,d|0,vt()|0,8,b|0);zb=c;return}function Kq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;d=g;c[d>>2]=a;if(!(Tr(55484,d)|0))a=-1;else{f=Ur(55484,d)|0;a=f+196|0;b=c[a>>2]|0;if(b|0){GO(b);c[a>>2]=0;c[f+200>>2]=0}pt(f);jd(c[f+220>>2]|0)|0;qt(55484,d)|0;b=f+328|0;d=f+332|0;a=0;while(1){e=c[b>>2]|0;if(a>>>0>=(c[d>>2]|0)-e>>3>>>0)break;Oe(c[e+(a<<3)+4>>2]|0)|0;a=a+1|0}Zr(b);SA(b);Yr(f);SA(f);a=0}zb=g;return a|0}function Lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=lt(d)|0;d=mt(d)|0;ka(a|0,e|0,d|0,Ns()|0,30,b|0);zb=c;return}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;b=g+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{b=Ur(55484,b)|0;e=b+192|0;a=At(c[e>>2]|0,c[b+472>>2]|0)|0;d=b+236|0;c[d>>2]=a;if(!a){Ue(0,3,41323,f);b=b+232|0;Lf(b)|0;a=c[d>>2]|0}else b=b+232|0;Ye(a,5.0)|0;Xe(c[d>>2]|0,.5)|0;_e(c[d>>2]|0,16)|0;Ze(c[d>>2]|0,6)|0;$e(c[d>>2]|0,6)|0;af(c[d>>2]|0,6)|0;a=kt(c[e>>2]|0)|0;c[b>>2]=a;a=0}zb=g;return a|0}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;e=g+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)d=c[d>>2]|0;b=e+340|0;if(!(jt(d,b,e+220|0)|0)){Ue(0,3,41233,f);b=-1;break}else{b=c[b>>2]|0;break}}else b=-1;while(0);zb=g;return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ft(d)|0;d=gt(d)|0;ka(a|0,e|0,d|0,Xs()|0,31,b|0);zb=c;return}function Pq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j+8|0;e=j+12|0;i=j;c[e>>2]=b;do if(!(Tr(55484,e)|0))b=-1;else{h=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)b=c[d>>2]|0;else b=d;f=h+224|0;if(!($s(b,c[h+216>>2]|0,h+220|0,f)|0)){Ue(0,3,41157,g);b=-1;break}b=h+328|0;e=h+332|0;d=c[e>>2]|0;c[i>>2]=d-(c[b>>2]|0)>>3;c[i+4>>2]=c[f>>2];if((c[h+336>>2]|0)==(d|0))at(b,i);else{f=i;g=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=g;c[e>>2]=(c[e>>2]|0)+8}b=c[i>>2]|0}while(0);zb=j;return b|0}function Qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;e=i+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){f=Ur(55484,e)|0;g=f+244|0;b=c[g>>2]|0;if((a[d+11>>0]|0)<0)e=c[d>>2]|0;else e=d;if(!(_s(f,b,e)|0)){Ue(0,3,40842,h);b=-1;break}else{c[g>>2]=(c[g>>2]|0)+1;break}}else b=-1;while(0);zb=i;return b|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;e=g;c[e>>2]=a;if(((Tr(55484,e)|0)!=0?(f=Ur(55484,e)|0,(b|0)>=0):0)?(d=c[f+328>>2]|0,(c[f+332>>2]|0)-d>>3>>>0>b>>>0):0)a=c[(c[d+(b<<3)+4>>2]|0)+4>>2]|0;else a=-1;zb=g;return a|0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Vs(d)|0;d=Ws(d)|0;ka(a|0,e|0,d|0,Xs()|0,32,b|0);zb=c;return}function Tq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=Ur(55484,b)|0;a=(c[a+332>>2]|0)-(c[a+328>>2]|0)>>3}zb=d;return a|0}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+208|0;h=i+192|0;g=i+184|0;d=i;e=b+11|0;if((a[e>>0]|0)<0)f=c[b>>2]|0;else f=b;if((ke(f,1,d,g)|0)<0){if((a[e>>0]|0)<0)b=c[b>>2]|0;c[h>>2]=b;Ue(0,3,40778,h);b=-1}else{b=c[13881]|0;c[13881]=b+1;c[g>>2]=b;_O(Rs(55504,g)|0,d|0,184)|0;b=c[g>>2]|0}zb=i;return b|0}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Ls(d)|0;d=Ms(d)|0;ka(a|0,e|0,d|0,Ns()|0,31,b|0);zb=c;return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=(Ur(55484,e)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){c[((b|0)<0?54536:a+48+(b<<8)|0)+16>>2]=d;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;n=+g[6420];g[a+168>>3]=n;j=+g[6421];g[a+176>>3]=j;m=+g[6422];g[a+184>>3]=m;i=+g[6423];g[a+192>>3]=i;l=+g[6424];g[a+200>>3]=l;h=+g[6425];g[a+208>>3]=h;k=+g[6426];g[a+216>>3]=k;f=+g[6427];g[a+224>>3]=f;g[a+56>>3]=(n+m+l+k)*.25;g[a+64>>3]=(j+i+h+f)*.25;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Uc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Vc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,51360,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function _q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Pe(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function $q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Re(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function ar(a){a=a|0;var b=0,d=0,e=0,f=0;f=zb;zb=zb+48|0;b=f+40|0;e=f;c[b>>2]=a;if(!(Tr(55484,b)|0))a=c[3954]|0;else{a=Ur(55484,b)|0;b=e;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[e>>2]=c[a+196>>2];c[e+16>>2]=1;c[e+12>>2]=c[a+204>>2];a=Mc(c[a+216>>2]|0,e)|0}zb=f;return a|0}function br(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=15816;else{a=(Ur(55484,b)|0)+216|0;a=(c[a>>2]|0)+44|0}zb=d;return c[a>>2]|0}function cr(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(Tr(55484,b)|0)Ur(55484,b)|0;zb=d;return -1}function dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;a=c[e+328>>2]|0;if((b|0)<0?1:(c[e+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}a=c[a+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[a+4>>2]|0)<=(d|0)){a=c[3956]|0;break}else{a=c[a>>2]|0;Ks(a+(d*320|0)+16|0,51360);ya(1,c[a+(d*320|0)+304>>2]|0,c[a+(d*320|0)>>2]|0,c[a+(d*320|0)+4>>2]|0,+(+g[a+(d*320|0)+8>>3]))|0;a=0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function er(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;Aa(2,c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0,+(+g[a+32>>3]),+(+g[a+40>>3]),+(+g[a+48>>3]),+(+g[a+56>>3]),+(+g[a+64>>3]),+(+g[a+72>>3]),+(+g[a+80>>3]),+(+g[a+88>>3]),+(+g[a+96>>3]),+(+g[a+104>>3]),+(+g[a+112>>3]),+(+g[a+120>>3]),+(+g[a+128>>3]),+(+g[a+136>>3]),+(+g[a+144>>3]),+(+g[a+152>>3]),+(+g[a+160>>3]),+(+g[a+168>>3]),+(+g[a+176>>3]),+(+g[a+184>>3]),+(+g[a+192>>3]),+(+g[a+200>>3]),+(+g[a+208>>3]),+(+g[a+216>>3]),+(+g[a+224>>3]),c[a+240>>2]|0)|0;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+80|0;q=r+56|0;p=r+48|0;d=r+72|0;i=r+76|0;e=r+68|0;n=r;o=r+64|0;c[d>>2]=a;do if(!(Tr(55484,d)|0))a=c[3954]|0;else{k=Ur(55484,d)|0;l=k+244|0;if((c[l>>2]|0)<=(b|0)){a=c[3956]|0;break}c[i>>2]=0;c[e>>2]=-1;f[o>>2]=-1.0;m=k+240|0;a=c[m>>2]|0;do if((a|0)==-2){j=k+232|0;yg(c[j>>2]|0,c[k+204>>2]|0)|0;Ag(c[j>>2]|0,i,e)|0;e=c[e>>2]|0;j=c[i>>2]|0;a=-1;d=0;while(1){if((d|0)>=(e|0))break;do if((c[j+(d*68|0)+48>>2]|0)==(b|0)?(c[j+(d*68|0)+60>>2]|0)==0:0){if((a|0)==-1)a=c[j+(d*68|0)+52>>2]|0;else{g=+f[j+(d*68|0)+52>>2];if(!(+f[o>>2]>g))break;a=(f[h>>2]=g,c[h>>2]|0)}c[o>>2]=a;a=d}while(0);d=d+1|0}if((a|0)<=-1){c[m>>2]=-2;d=30;break}i=c[j+48>>2]|0;c[m>>2]=i;e=0;while(1){if((e|0)==3)break;d=0;while(1){if((d|0)==4)break;c[n+(e<<4)+(d<<2)>>2]=c[j+(a*68|0)+(e<<4)+(d<<2)>>2];d=d+1|0}e=e+1|0}vf(c[k+248+(i<<2)>>2]|0,n)|0;a=c[m>>2]|0;d=25}else d=25;while(0);do if((d|0)==25)if((a|0)>-1){a=Ct(c[k+236>>2]|0,c[k+248+(a<<2)>>2]|0,c[k+196>>2]|0,n,o)|0;if((a|0)<0){c[p>>2]=a;Ue(0,1,37701,p);c[m>>2]=-2;d=30;break}p=(c[l>>2]|0)+-1|0;c[q>>2]=c[k+248+(c[m>>2]<<2)>>2];c[q+4>>2]=p;Ue(0,1,37720,q);if((c[m>>2]|0)>-1)xa(3,b|0,+(+f[o>>2]),+(+f[n>>2]),+(+f[n+4>>2]),+(+f[n+8>>2]),+(+f[n+12>>2]),+(+f[n+16>>2]),+(+f[n+20>>2]),+(+f[n+24>>2]),+(+f[n+28>>2]),+(+f[n+32>>2]),+(+f[n+36>>2]),+(+f[n+40>>2]),+(+f[n+44>>2]))|0;else d=30}else d=30;while(0);if((d|0)==30)wa(4,b|0)|0;a=0}while(0);zb=r;return a|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Tr(55484,d)|0))b=0;else{a=(Ur(55484,d)|0)+216|0;d=(b|0)!=0;tc(c[a>>2]|0,d&1)|0;c[e>>2]=d?37670:37674;Ue(0,1,37679,e)}zb=f;return b|0}function hr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;xc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function ir(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;a=c[(c[a>>2]|0)+4834148>>2]|0}zb=d;return a|0}function jr(a){a=a|0;c[3916]=a;return}function kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Fs(d)|0;d=Gs(d)|0;ka(a|0,e|0,d|0,Hs()|0,46,b|0);zb=c;return}function lr(){return c[3916]|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=As(d)|0;d=Bs(d)|0;ka(a|0,e|0,d|0,Cs()|0,82,b|0);zb=c;return}function nr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+312|0;g[d>>3]=b}zb=e;return}function or(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=us(d)|0;d=vs(d)|0;ka(a|0,e|0,d|0,ws()|0,1,b|0);zb=c;return}function pr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+312|0;b=+g[d>>3]}zb=e;return +b}function qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ps(d)|0;d=qs(d)|0;ka(a|0,e|0,d|0,rs()|0,1,b|0);zb=c;return}function rr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+320|0;g[d>>3]=b}zb=e;return}function sr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+320|0;b=+g[d>>3]}zb=e;return +b}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(uc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37628,e)}zb=f;return}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ks(d)|0;d=ls(d)|0;ka(a|0,e|0,d|0,ms()|0,2,b|0);zb=c;return}function vr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Cc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;d=g+4|0;c[d>>2]=a;if((Tr(55484,d)|0?(e=Ur(55484,d)|0,b>>>0<=255):0)?(Ac(c[e+216>>2]|0,b)|0)==0:0){c[f>>2]=b;Ue(0,1,37602,f)}zb=g;return}function xr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Bc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Fc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37567,e)}zb=f;return}function zr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ic(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Ar(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=j+8|0;c[e>>2]=a;if(((Tr(55484,e)|0?(f=Ur(55484,e)|0,!(b<=0.0|b>=1.0)):0)?(h=b,d=c[f+216>>2]|0,d|0):0)?(Jc(d,h)|0)==0:0){g[i>>3]=h;Ue(0,1,37536,i)}zb=j;return}function Br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ds(d)|0;d=es(d)|0;ka(a|0,e|0,d|0,fs()|0,2,b|0);zb=c;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+8|0;e=f;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if(!a)b=-1.0;else{d=(Kc(a,e)|0)==0;b=d?+g[e>>3]:-1.0}}zb=f;return +b}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+216|0;Gc(c[d>>2]|0,b)|0}zb=e;return}function Er(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;Hc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(yc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37506,e)}zb=f;return}function Gr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(zc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Dc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37477,e)}zb=f;return}function Ir(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ec(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Jr(a,b){a=a|0;b=b|0;var c=0;c=Pr()|0;ha(a|0,c|0,+(+Rr(Qr(b)|0)));return}function Kr(a,b){a=a|0;b=b|0;var c=0;c=Lr()|0;ha(a|0,c|0,+(+Nr(+Mr(b))));return}function Lr(){return Or()|0}function Mr(a){a=a|0;return +(+g[a>>3])}function Nr(a){a=+a;return +a}function Or(){return 14120}function Pr(){return Sr()|0}function Qr(a){a=a|0;return c[a>>2]|0}function Rr(a){a=a|0;return +(+(a|0))}function Sr(){return 14080}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Vr(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Wr(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(496)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];g=h+16|0;aP(g|0,0,480)|0;cs(g);a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Wr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)bs(a,b)}}else bs(a,b);return}function Xr(a){a=a|0;Yr(a+8|0);return}function Yr(a){a=a|0;Zr(a+328|0);_r(a+288|0);return}function Zr(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function _r(a){a=a|0;$r(a);return}function $r(a){a=a|0;var b=0;as(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function as(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function cs(a){a=a|0;var b=0;c[a+192>>2]=0;c[a+196>>2]=0;b=a+204|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+240>>2]=-2;c[a+244>>2]=0;b=a+288|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+304>>2]=1065353216;g[a+312>>3]=.0001;g[a+320>>3]=1.0e3;b=a+328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+472>>2]=2;return}function ds(a){a=a|0;return 3}function es(a){a=a|0;return js()|0}function fs(){return 37531}function gs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+is(c);Tb[a&3](b,c);return}function hs(a){a=a|0;return a|0}function is(a){a=+a;return +a}function js(){return 15828}function ks(a){a=a|0;return 3}function ls(a){a=a|0;return os()|0}function ms(){return 37623}function ns(a,b,c){a=a|0;b=b|0;c=c|0;b=hs(b)|0;c=hs(c)|0;Ub[a&63](b,c);return}function os(){return 15840}function ps(a){a=a|0;return 2}function qs(a){a=a|0;return ts()|0}function rs(){return 37654}function ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;c=+Db[a&3](b);g[e>>3]=c;c=+Mr(e);zb=d;return +c}function ts(){return 15852}function us(a){a=a|0;return 3}function vs(a){a=a|0;return zs()|0}function ws(){return 37658}function xs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+ys(c);Tb[a&3](b,c);return}function ys(a){a=+a;return +a}function zs(){return 15860}function As(a){a=a|0;return 1}function Bs(a){a=a|0;return Es()|0}function Cs(){return 37663}function Ds(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;a=Fb[a&1]()|0;c[d>>2]=a;a=Qr(d)|0;zb=b;return a|0}function Es(){return 15872}function Fs(a){a=a|0;return 2}function Gs(a){a=a|0;return Js()|0}function Hs(){return 37666}function Is(a,b){a=a|0;b=b|0;b=hs(b)|0;Sb[a&255](b);return}function Js(){return 15876}function Ks(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((d|0)==3)break;c=0;while(1){if((c|0)==4)break;g[b+(d<<5)+(c<<3)>>3]=+g[a+(d<<5)+(c<<3)>>3];c=c+1|0}d=d+1|0}return}function Ls(a){a=a|0;return 2}function Ms(a){a=a|0;return Qs()|0}function Ns(){return 40673}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zb;zb=zb+16|0;f=d+12|0;e=d;Ps(e,b);b=Gb[a&127](e)|0;c[f>>2]=b;b=Qr(f)|0;jO(e);zb=d;return b|0}function Ps(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,b+4|0,d);return}function Qs(){return 15884}function Rs(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Ss(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ts(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Ss(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(200)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];aP(h+16|0,0,184)|0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Us(a,b)}}else Us(a,b);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Vs(a){a=a|0;return 3}function Ws(a){a=a|0;return Zs()|0}function Xs(){return 40837}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;b=hs(b)|0;d=hs(d)|0;d=Ib[a&63](b,d)|0;c[f>>2]=d;d=Qr(f)|0;zb=e;return d|0}function Zs(){return 15892}function _s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=zb;zb=zb+96|0;n=r+80|0;m=r+72|0;l=r+64|0;k=r+56|0;j=r+48|0;i=r+40|0;q=r+32|0;p=r+24|0;o=r+16|0;h=r+8|0;s=r;e=r+88|0;f=r+84|0;g=c[a+232>>2]|0;c[e>>2]=0;c[s>>2]=d;Ue(0,1,40887,s);do if((Uf(d,40905,f)|0)>=0){c[o>>2]=b;Ue(0,1,40949,o);if((Vf(c[f>>2]|0,-1,b)|0)<0){Ue(0,3,40974,p);a=0;break}if((Sf(e,f)|0)<0){Ue(0,3,41010,q);a=0;break}Ue(0,1,41037,i);c[j>>2]=d;Ue(0,1,41046,j);s=tf(d,41063,0)|0;c[a+248+(b<<2)>>2]=s;if(!s){c[k>>2]=d;Ue(0,3,41068,k)}Ue(0,1,41037,l);if((b|0)==10)Ea(-1);if((fg(g,c[e>>2]|0)|0)<0){Ue(0,3,41101,m);a=0;break}else{Tf(e)|0;Ue(0,1,41126,n);a=1;break}}else{c[h>>2]=d;Ue(0,3,40911,h);a=0}while(0);zb=r;return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=zb;zb=zb+16|0;a=Se(a,c[d>>2]|0)|0;c[e>>2]=a;a:do if(!a){Ue(0,3,41206,f);jd(c[d>>2]|0)|0;a=0}else switch(c[a+108>>2]|0){case 0:{Fc(b,0)|0;a=1;break a}case 1:{Fc(b,2)|0;a=1;break a}default:{Fc(b,3)|0;a=1;break a}}while(0);zb=f;return a|0}function at(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=bt(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;ct(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;dt(a,d);et(d);zb=h;return}}function bt(a){a=a|0;return 536870911}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function et(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ft(a){a=a|0;return 3}function gt(a){a=a|0;return it()|0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;g=e+12|0;f=e;b=hs(b)|0;Ps(f,d);d=Ib[a&63](b,f)|0;c[g>>2]=d;d=Qr(g)|0;jO(f);zb=e;return d|0}function it(){return 15904}function jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;g=sd(c[d>>2]|0,a)|0;c[b>>2]=g;if((g|0)<0){c[e>>2]=a;Ue(0,3,41277,e);jd(c[d>>2]|0)|0;a=0}else a=1;zb=f;return a|0}function kt(a){a=a|0;return Jf(a)|0}function lt(a){a=a|0;return 2}function mt(a){a=a|0;return ot()|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;b=Gb[a&127](b)|0;c[e>>2]=b;b=Qr(e)|0;zb=d;return b|0}function ot(){return 15916}function pt(a){a=a|0;var b=0,d=0;b=a+216|0;d=c[b>>2]|0;if(d|0){gd(d)|0;wc(c[b>>2]|0)|0;c[b>>2]=0}b=a+228|0;if(c[b>>2]|0){rc(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){ne(b)|0;c[b>>2]=0}return}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+4|0;e=f;b=Tr(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];rt(a,d)|0;b=1}zb=f;return b|0}function rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;h=g+16|0;f=g+4|0;i=g;d=c[d>>2]|0;e=c[d>>2]|0;c[i>>2]=d;c[h>>2]=c[i>>2];st(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d|0){if(a[f+8>>0]|0)Xr(d+8|0);Pf(d,496)}zb=g;return e|0}function st(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;i=(m&l|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(l>>>0)|0;else j=m&e;f=(c[d>>2]|0)+(j<<2)|0;n=c[f>>2]|0;while(1){e=c[n>>2]|0;if((e|0)==(o|0))break;else n=e}k=d+8|0;if((n|0)!=(k|0)){e=c[n+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0))g=o;else h=14}else h=14;do if((h|0)==14){e=c[o>>2]|0;if(e|0){e=c[e+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0)){g=o;break}}c[f>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(!i){if(f>>>0>=l>>>0)f=(f>>>0)%(l>>>0)|0}else f=f&m;if((f|0)!=(j|0)){c[(c[d>>2]|0)+(f<<2)>>2]=n;e=c[o>>2]|0}}c[n>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=k;a[b+8>>0]=1;return}function tt(a){a=a|0;return 4}function ut(a){a=a|0;return xt()|0}function vt(){return 41348}function wt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;b=hs(b)|0;d=hs(d)|0;e=hs(e)|0;e=Jb[a&63](b,d,e)|0;c[g>>2]=e;e=Qr(g)|0;zb=f;return e|0}function xt(){return 2048}function yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+48|0;l=m+24|0;k=m+16|0;i=m+8|0;f=m;d=m+32|0;e=m+28|0;c[d>>2]=a;c[e>>2]=b;do if((Tr(55484,d)|0)!=0?(j=Ur(55484,d)|0,(zt(55504,e)|0)!=0):0){h=j+8|0;_O(h|0,Rs(55504,e)|0,184)|0;a=c[h>>2]|0;b=j+208|0;d=c[j+12>>2]|0;e=j+212|0;if(!((a|0)==(c[b>>2]|0)?(d|0)==(c[e>>2]|0):0)){c[f>>2]=a;c[f+4>>2]=d;Ue(0,2,41698,f);be(h,c[b>>2]|0,c[e>>2]|0,h)|0}pt(j);a=me(h,15)|0;d=j+192|0;c[d>>2]=a;if(!a){Ue(0,3,41745,i);a=-1;break}a=sc(a)|0;b=j+216|0;c[b>>2]=a;if(!a){Ue(0,3,41783,k);a=-1;break}Lc(a,c[j+472>>2]|0)|0;k=pc(h)|0;c[j+228>>2]=k;if(!k){Ue(0,3,41820,l);a=-1;break}else{fd(c[b>>2]|0,c[j+220>>2]|0)|0;le(c[d>>2]|0,+g[j+312>>3],+g[j+320>>3],j+344|0);a=kt(c[d>>2]|0)|0;c[j+232>>2]=a;a=0;break}}else a=-1;while(0);zb=m;return a|0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function At(a,b){a=a|0;b=b|0;b=Bt(b,c[a>>2]|0,c[a+4>>2]|0)|0;c[b>>2]=1;c[b+12>>2]=a;a=Ee(a+8|0)|0;c[b+16>>2]=a;Ge(a,0.0)|0;return b|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0;g=zb;zb=zb+16|0;e=FO(13732)|0;if(!e){Ue(0,3,41858,g);Ea(1)}c[e+20>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;c[e+24>>2]=25;c[e+28>>2]=11;c[e+32>>2]=11;c[e+36>>2]=10;f[e+40>>2]=.6000000238418579;f[e+44>>2]=2.0;c[e+13280>>2]=1;d=FO(B(d,b)|0)|0;c[e+13300>>2]=d;if(!d){Ue(0,3,41858,g+8|0);Ea(1)}else{c[e+13304>>2]=0;zb=g;return e|0}return 0}function Ct(a,b,d,e,h){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+48|0;x=D;y=D+40|0;z=D+32|0;a:do if((a|0)!=0&(b|0)!=0&(d|0)!=0&(e|0)!=0&(h|0)!=0){C=b+152|0;if((c[C>>2]|0)<1)i=-2;else{f[h>>2]=0.0;j=b+4|0;B=b+8|0;k=b+56|0;l=b+104|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;wd(B,(c[b>>2]|0)+(i*112|0)+12|0,a+48+(i*48|0)|0)|0;if((c[C>>2]|0)>1?(wd(k,(c[b>>2]|0)+(i*112|0)+12|0,a+528+(i*48|0)|0)|0,(c[C>>2]|0)>2):0)wd(l,(c[b>>2]|0)+(i*112|0)+12|0,a+1008+(i*48|0)|0)|0;i=i+1|0}if((c[a>>2]|0)==1){q=a+12|0;r=a+2672|0;n=a+7496|0;Dt(c[q>>2]|0,a+48|0,b,r,n);o=a+4|0;p=a+8|0}else{o=a+4|0;p=a+8|0;r=a+2672|0;n=a+7496|0;Et(c[o>>2]|0,c[p>>2]|0,a+48|0,b,r,n);q=a+12|0}s=a+36|0;t=a+13280|0;u=b+156|0;v=a+1488|0;w=a+40|0;A=0;i=r;j=0;while(1){if((j|0)>=(c[s>>2]|0))break;m=0;l=A;k=i;while(1){if((m|0)>=(c[t>>2]|0))break;if((j|0)==(c[s>>2]|0))break;i=pf(k,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){if((k|0)!=(r|0))break;i=pf(n,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){k=n;break}else k=n}E=k+(i*24|0)|0;c[x+(m<<2)>>2]=E;c[a+1488+(l<<3)>>2]=c[k+(i*24|0)+16>>2];c[a+1488+(l<<3)+4>>2]=c[k+(i*24|0)+20>>2];c[a+13284+(m*52|0)>>2]=a;c[a+13284+(m*52|0)+4>>2]=b;c[a+13284+(m*52|0)+8>>2]=E;c[a+13284+(m*52|0)+12>>2]=d;i=l+1|0;m=m+1|0;l=(i|0)==5?A:i;j=j+1|0}if(!m)break;l=0;i=A;while(1){if((l|0)==(m|0))break;E=a+13284+(l*52|0)+24|0;A=Lt(c[a+13284+(l*52|0)>>2]|0,c[a+13284+(l*52|0)+4>>2]|0,c[a+13284+(l*52|0)+8>>2]|0,c[a+13284+(l*52|0)+12>>2]|0,c[a+13284+(l*52|0)+16>>2]|0,a+13284+(l*52|0)+20|0,E)|0;c[a+13284+(l*52|0)+48>>2]=A;if((A|0)==0?+f[E>>2]>+f[w>>2]:0){if((c[a>>2]|0)==1){E=c[q>>2]|0;fe(E+104|0,+f[a+13284+(l*52|0)+28>>2],+f[a+13284+(l*52|0)+32>>2],y,z,c[E+176>>2]|0)|0;f[a+1872+(i<<3)>>2]=+g[y>>3];f[a+1872+(i<<3)+4>>2]=+g[z>>3]}else{c[a+1872+(i<<3)>>2]=c[a+13284+(l*52|0)+28>>2];c[a+1872+(i<<3)+4>>2]=c[a+13284+(l*52|0)+32>>2]}c[a+2192+(i*12|0)>>2]=c[a+13284+(l*52|0)+36>>2];c[a+2192+(i*12|0)+4>>2]=c[a+13284+(l*52|0)+40>>2];c[a+2192+(i*12|0)+8>>2]=c[a+13284+(l*52|0)+44>>2];E=c[x+(l<<2)>>2]|0;c[a+1488+(i<<3)>>2]=c[E+16>>2];c[a+1488+(i<<3)+4>>2]=c[E+20>>2];c[a+12320+(i*24|0)>>2]=c[E>>2];c[a+12320+(i*24|0)+4>>2]=c[E+4>>2];c[a+12320+(i*24|0)+8>>2]=c[E+8>>2];c[a+12320+(i*24|0)+12>>2]=0;i=i+1|0}l=l+1|0}A=i;i=k}i=0;while(1){if((i|0)>=(A|0))break;E=b+156+(i*24|0)|0;z=a+12320+(i*24|0)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];c[E+16>>2]=c[z+16>>2];c[E+20>>2]=c[z+20>>2];i=i+1|0}c[b+156+(A*24|0)+12>>2]=-1;i=(A|0)<3;if((c[a>>2]|0)==1){if(i){c[C>>2]=0;i=-3;break}j=a+16|0;k=a+1872|0;l=a+2192|0;F=+Ft(c[j>>2]|0,B,k,l,A,e,0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(Ge(c[j>>2]|0,.800000011920929)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.6000000238418579)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.4000000059604645)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,0.0)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}else{if(i){c[C>>2]=0;i=-3;break}j=a+1872|0;k=a+2192|0;F=+Gt(B,j,k,A,e,0,1.0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(F=+Gt(e,j,k,A,e,1,.800000011920929),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.6000000238418579),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.4000000059604645),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,0.0),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}c[C>>2]=(c[C>>2]|0)+1;i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+104+(i<<4)+(j<<2)>>2]=c[b+56+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+56+(i<<4)+(j<<2)>>2]=c[b+8+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3){i=0;break a}j=0;while(1){if((j|0)==4)break;c[b+8+(i<<4)+(j<<2)>>2]=c[e+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}}}else i=-1;while(0);zb=D;return i|0}function Dt(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;Q=zb;zb=zb+80|0;P=Q+48|0;I=Q;J=Q+76|0;L=Q+72|0;N=Q+64|0;O=Q+56|0;q=d+4|0;r=+(c[a>>2]|0);s=+(c[a+4>>2]|0);t=I+4|0;v=I+12|0;w=I+16|0;x=I+20|0;y=I+28|0;z=I+32|0;A=I+36|0;B=I+44|0;C=I+8|0;D=I+24|0;E=I+40|0;F=N+4|0;G=O+4|0;H=g+4812|0;k=0;l=0;p=0;a:while(1){if((p|0)>=(c[q>>2]|0)){i=29;break}i=0;while(1){if((i|0)==3)break;h=0;while(1){if((h|0)==4)break;c[I+(i<<4)+(h<<2)>>2]=c[b+(p*48|0)+(i<<4)+(h<<2)>>2];h=h+1|0}i=i+1|0}h=k;i=l;o=0;k=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0;while(1){if((o|0)>=(c[k+4>>2]|0))break;n=0;l=k;while(1){k=c[l>>2]|0;if((n|0)>=(c[k+(o*20|0)+4>>2]|0))break;l=c[k+(o*20|0)>>2]|0;l=(Df(a,I,+f[l+(n*20|0)+8>>2],+f[l+(n*20|0)+12>>2],J,L)|0)<0;j=+f[J>>2];do if((!(l|j<0.0)?(m=+f[L>>2],!(m>=s)&(!(j>=r)&!(m<0.0))):0)?(l=c[(c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0)+(o*20|0)>>2]|0,K=+f[l+(n*20|0)+8>>2],M=+f[l+(n*20|0)+12>>2],R=+f[v>>2]+(+f[I>>2]*K+ +f[t>>2]*M),j=+f[y>>2]+(K*+f[w>>2]+M*+f[x>>2]),S=+f[B>>2]+(K*+f[z>>2]+M*+f[A>>2]),m=+u(+(R*R+j*j+S*S)),!(+f[E>>2]*(S/m)+(+f[C>>2]*(R/m)+ +f[D>>2]*(j/m))>-.10000000149011612)):0){f[N>>2]=K;f[F>>2]=M;nf(a,I,N,O)|0;j=+f[G>>2];k=c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0;m=+f[k+(o*20|0)+12>>2];if(j<=m?j>=+f[k+(o*20|0)+16>>2]:0){if((i|0)==200){i=19;break a}c[e+(i*24|0)>>2]=p;c[e+(i*24|0)+4>>2]=o;c[e+(i*24|0)+8>>2]=n;c[e+(i*24|0)+16>>2]=c[J>>2];c[e+(i*24|0)+20>>2]=c[L>>2];c[e+(i*24|0)+12>>2]=0;i=i+1|0;break}if(j<=m*2.0?j>=+f[k+(o*20|0)+16>>2]*.5:0)if((h|0)==200){c[H>>2]=-1;h=200;break}else{c[g+(h*24|0)>>2]=p;c[g+(h*24|0)+4>>2]=o;c[g+(h*24|0)+8>>2]=n;c[g+(h*24|0)+16>>2]=c[J>>2];c[g+(h*24|0)+20>>2]=c[L>>2];c[g+(h*24|0)+12>>2]=0;h=h+1|0;break}}while(0);n=n+1|0;l=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0}o=o+1|0;k=l}k=h;l=i;p=p+1|0}if((i|0)==19){Ue(0,3,41890,P);h=e+4812|0}else if((i|0)==29){c[e+(l*24|0)+12>>2]=-1;h=g+(k*24|0)+12|0}c[h>>2]=-1;zb=Q;return} +function Et(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+80|0;A=B+48|0;w=B;x=B+76|0;y=B+72|0;z=B+64|0;u=B+56|0;v=e+4|0;t=+(a|0);p=+(b|0);q=z+4|0;r=u+4|0;s=h+4812|0;j=0;k=0;o=0;a:while(1){if((o|0)>=(c[v>>2]|0)){b=28;break}b=0;while(1){if((b|0)==3)break;a=0;while(1){if((a|0)==4)break;c[w+(b<<4)+(a<<2)>>2]=c[d+(o*48|0)+(b<<4)+(a<<2)>>2];a=a+1|0}b=b+1|0}a=j;b=k;n=0;j=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0;while(1){if((n|0)>=(c[j+4>>2]|0))break;m=0;k=j;while(1){j=c[k>>2]|0;if((m|0)>=(c[j+(n*20|0)+4>>2]|0))break;k=c[j+(n*20|0)>>2]|0;k=(Df(0,w,+f[k+(m*20|0)+8>>2],+f[k+(m*20|0)+12>>2],x,y)|0)<0;i=+f[x>>2];do if(!(k|i<0.0)?(l=+f[y>>2],!(l>=p)&(!(i>=t)&!(l<0.0))):0){j=c[(c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(n*20|0)>>2]|0;c[z>>2]=c[j+(m*20|0)+8>>2];c[q>>2]=c[j+(m*20|0)+12>>2];nf(0,w,z,u)|0;i=+f[r>>2];j=c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0;l=+f[j+(n*20|0)+12>>2];if(i<=l?i>=+f[j+(n*20|0)+16>>2]:0){if((b|0)==200){b=18;break a}c[g+(b*24|0)>>2]=o;c[g+(b*24|0)+4>>2]=n;c[g+(b*24|0)+8>>2]=m;c[g+(b*24|0)+16>>2]=c[x>>2];c[g+(b*24|0)+20>>2]=c[y>>2];c[g+(b*24|0)+12>>2]=0;b=b+1|0;break}if(i<=l*2.0?i>=+f[j+(n*20|0)+16>>2]*.5:0)if((a|0)==200){c[s>>2]=-1;a=200;break}else{c[h+(a*24|0)>>2]=o;c[h+(a*24|0)+4>>2]=n;c[h+(a*24|0)+8>>2]=m;c[h+(a*24|0)+16>>2]=c[x>>2];c[h+(a*24|0)+20>>2]=c[y>>2];c[h+(a*24|0)+12>>2]=0;a=a+1|0;break}}while(0);m=m+1|0;k=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0}n=n+1|0;j=k}j=a;k=b;o=o+1|0}if((b|0)==18){Ue(0,3,41890,A);a=g+4812|0}else if((b|0)==28){c[g+(k*24|0)+12>>2]=-1;a=h+(j*24|0)+12|0}c[a>>2]=-1;zb=B;return}function Ft(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;w=zb;zb=zb+224|0;s=w+212|0;t=w+96|0;v=w;u=w+192|0;l=FO(h<<4)|0;c[s>>2]=l;if(!l){Ue(0,3,41858,w+200|0);Ea(1)}p=FO(h*24|0)|0;q=s+4|0;c[q>>2]=p;if(!p){Ue(0,3,41858,w+208|0);Ea(1)}k=0;o=0.0;n=0.0;m=0.0;while(1){if((k|0)>=(h|0))break;r=m+ +f[e+(k*12|0)>>2];x=n+ +f[e+(k*12|0)+4>>2];y=o+ +f[e+(k*12|0)+8>>2];k=k+1|0;o=y;n=x;m=r}y=+(h|0);r=m/y;n=n/y;m=o/y;k=0;while(1){if((k|0)>=(h|0))break;g[l+(k<<4)>>3]=+f[d+(k<<3)>>2];g[l+(k<<4)+8>>3]=+f[d+(k<<3)+4>>2];g[p+(k*24|0)>>3]=+f[e+(k*12|0)>>2]-r;g[p+(k*24|0)+8>>3]=+f[e+(k*12|0)+4>>2]-n;g[p+(k*24|0)+16>>3]=+f[e+(k*12|0)+8>>2]-m;k=k+1|0}c[s+8>>2]=h;k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;g[t+(k<<5)+(l<<3)>>3]=+f[b+(k<<4)+(l<<2)>>2];l=l+1|0}k=k+1|0}g[t+24>>3]=+f[b+12>>2]+(r*+f[b>>2]+n*+f[b+4>>2]+m*+f[b+8>>2]);g[t+56>>3]=+f[b+28>>2]+(r*+f[b+16>>2]+n*+f[b+20>>2]+m*+f[b+24>>2]);g[t+88>>3]=+f[b+44>>2]+(r*+f[b+32>>2]+n*+f[b+36>>2]+m*+f[b+40>>2]);if(!j){if((He(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8}else if((Je(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8;GO(c[s>>2]|0);GO(c[q>>2]|0);k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;f[i+(k<<4)+(l<<2)>>2]=+g[v+(k<<5)+(l<<3)>>3];l=l+1|0}k=k+1|0}x=n;y=m;f[i+12>>2]=+g[v+24>>3]-+g[v>>3]*r-+g[v+8>>3]*x-+g[v+16>>3]*y;f[i+28>>2]=+g[v+56>>3]-+g[v+32>>3]*r-+g[v+40>>3]*x-+g[v+48>>3]*y;f[i+44>>2]=+g[v+88>>3]-+g[v+64>>3]*r-+g[v+72>>3]*x-+g[v+80>>3]*y;zb=w;return +(+g[u>>3])}function Gt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;if(!f)g=+Ht(a,b,c,d,e);else g=+It(a,b,c,d,e,g);return +g}function Ht(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0;H=zb;zb=zb+48|0;i=H+40|0;h=H+32|0;F=H;do if((d|0)>=4?(j=a+44|0,!(+f[j>>2]==0.0)):0){G=FO(d<<6)|0;if(!G){Ue(0,3,41875,h);g=-1.0;break}E=FO(d<<3)|0;if(!E){Ue(0,3,41875,i);GO(G);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[j>>2];i=i+1|0}h=h+1|0}a=e+4|0;j=e+12|0;q=e+16|0;r=e+20|0;s=e+28|0;t=e+32|0;u=e+36|0;v=+(d|0);w=d<<1;x=F+4|0;y=F+8|0;z=F+12|0;A=F+16|0;B=F+20|0;C=F+24|0;D=F+28|0;p=0.0;i=0;a:while(1){g=0.0;h=0;while(1){if((h|0)>=(d|0))break;k=+f[c+(h*12|0)>>2];l=+f[c+(h*12|0)+4>>2];m=+f[j>>2]+(+f[e>>2]*k+ +f[a>>2]*l);n=+f[s>>2]+(k*+f[q>>2]+l*+f[r>>2]);o=k*+f[t>>2]+l*+f[u>>2]+1.0;if(o==0.0){h=17;break a}L=o*o;J=+f[b+(h<<3)>>2]-m/o;I=+f[b+(h<<3)+4>>2]-n/o;K=h<<1;f[E+(K<<2)>>2]=J;f[E+((K|1)<<2)>>2]=I;N=k/o;K=h<<4;f[G+(K<<2)>>2]=N;M=l/o;f[G+((K|1)<<2)>>2]=M;o=1.0/o;f[G+((K|2)<<2)>>2]=o;f[G+((K|3)<<2)>>2]=0.0;f[G+((K|4)<<2)>>2]=0.0;f[G+((K|5)<<2)>>2]=0.0;f[G+((K|6)<<2)>>2]=-(k*m)/L;f[G+((K|7)<<2)>>2]=-(l*m)/L;f[G+((K|8)<<2)>>2]=0.0;f[G+((K|9)<<2)>>2]=0.0;f[G+((K|10)<<2)>>2]=0.0;f[G+((K|11)<<2)>>2]=N;f[G+((K|12)<<2)>>2]=M;f[G+((K|13)<<2)>>2]=o;f[G+((K|14)<<2)>>2]=-(k*n)/L;f[G+((K|15)<<2)>>2]=-(l*n)/L;g=g+(J*J+I*I);h=h+1|0}g=g/v;if(g<.10000000149011612){h=26;break}if((i|0)!=0&g<4.0){if((i|0)==10|g/p>.9900000095367432){h=26;break}}else if((i|0)==10){h=26;break}if((Kt(F,E,G,w)|0)<0){h=24;break}f[e>>2]=+f[F>>2]+ +f[e>>2];f[a>>2]=+f[x>>2]+ +f[a>>2];f[j>>2]=+f[y>>2]+ +f[j>>2];f[q>>2]=+f[z>>2]+ +f[q>>2];f[r>>2]=+f[A>>2]+ +f[r>>2];f[s>>2]=+f[B>>2]+ +f[s>>2];f[t>>2]=+f[C>>2]+ +f[t>>2];f[u>>2]=+f[D>>2]+ +f[u>>2];p=g;i=i+1|0}if((h|0)==17){GO(G);GO(E);g=1.0e8;break}else if((h|0)==24){GO(G);GO(E);g=1.0e8;break}else if((h|0)==26){GO(G);GO(E);break}}else g=1.0e8;while(0);zb=H;return +g}function It(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0;J=zb;zb=zb+64|0;k=J+56|0;j=J+48|0;i=J+40|0;h=J+32|0;I=J;do if((d|0)>=4?(l=a+44|0,!(+f[l>>2]==0.0)):0){G=+(d|0);m=~~(G*g)+-1|0;m=(m|0)>4?m:4;H=FO(d<<6)|0;if(!H){Ue(0,3,41875,h);g=-1.0;break}F=FO(d<<3)|0;if(!F){Ue(0,3,41875,i);GO(H);g=-1.0;break}h=d<<2;E=FO(h)|0;if(!E){Ue(0,3,41875,j);GO(H);GO(F);g=-1.0;break}D=FO(h)|0;if(!D){Ue(0,3,41875,k);GO(H);GO(F);GO(E);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[l>>2];i=i+1|0}h=h+1|0}w=e+4|0;x=e+12|0;y=e+16|0;z=e+20|0;A=e+28|0;B=e+32|0;C=e+36|0;k=D+(m<<2)|0;a=I+4|0;l=I+8|0;m=I+12|0;s=I+16|0;t=I+20|0;u=I+24|0;v=I+28|0;r=0.0;j=0;a:while(1){h=0;while(1){if((h|0)>=(d|0))break;g=+f[c+(h*12|0)>>2];n=+f[c+(h*12|0)+4>>2];o=+f[x>>2]+(+f[e>>2]*g+ +f[w>>2]*n);p=+f[A>>2]+(g*+f[y>>2]+n*+f[z>>2]);q=g*+f[B>>2]+n*+f[C>>2]+1.0;if(q==0.0){h=21;break a}K=q*q;L=+f[b+(h<<3)>>2]-o/q;M=+f[b+(h<<3)+4>>2]-p/q;i=h<<1;f[F+(i<<2)>>2]=L;f[F+((i|1)<<2)>>2]=M;M=L*L+M*M;f[D+(h<<2)>>2]=M;f[E+(h<<2)>>2]=M;M=g/q;i=h<<4;f[H+(i<<2)>>2]=M;L=n/q;f[H+((i|1)<<2)>>2]=L;q=1.0/q;f[H+((i|2)<<2)>>2]=q;f[H+((i|3)<<2)>>2]=0.0;f[H+((i|4)<<2)>>2]=0.0;f[H+((i|5)<<2)>>2]=0.0;f[H+((i|6)<<2)>>2]=-(g*o)/K;f[H+((i|7)<<2)>>2]=-(n*o)/K;f[H+((i|8)<<2)>>2]=0.0;f[H+((i|9)<<2)>>2]=0.0;f[H+((i|10)<<2)>>2]=0.0;f[H+((i|11)<<2)>>2]=M;f[H+((i|12)<<2)>>2]=L;f[H+((i|13)<<2)>>2]=q;f[H+((i|14)<<2)>>2]=-(g*p)/K;f[H+((i|15)<<2)>>2]=-(n*p)/K;h=h+1|0}oy(D,d,4,32);p=+f[k>>2]*4.0;p=p<16.0?16.0:p;o=p/6.0;n=0.0;h=0;while(1){if((h|0)==(d|0))break;g=+f[D+(h<<2)>>2];if(g>p)g=o;else{g=1.0-g/p;g=o*(1.0-g*(g*g))}n=n+g;h=h+1|0}g=n/G;if(g<.10000000149011612){h=42;break}if((j|0)!=0&g<4.0){if((j|0)==10|g/r>.9900000095367432){h=42;break}}else if((j|0)==10){h=42;break}h=0;i=0;while(1){if((i|0)==(d|0))break;n=+f[E+(i<<2)>>2];if(n<=p){M=1.0-n/p;M=M*M;O=i<<4;N=h<<3;f[H+(N<<2)>>2]=M*+f[H+(O<<2)>>2];f[H+((N|1)<<2)>>2]=M*+f[H+((O|1)<<2)>>2];f[H+((N|2)<<2)>>2]=M*+f[H+((O|2)<<2)>>2];f[H+((N|3)<<2)>>2]=M*+f[H+((O|3)<<2)>>2];f[H+((N|4)<<2)>>2]=M*+f[H+((O|4)<<2)>>2];f[H+((N|5)<<2)>>2]=M*+f[H+((O|5)<<2)>>2];f[H+((N|6)<<2)>>2]=M*+f[H+((O|6)<<2)>>2];f[H+((N|7)<<2)>>2]=M*+f[H+((O|7)<<2)>>2];f[H+(N+8<<2)>>2]=M*+f[H+((O|8)<<2)>>2];f[H+(N+9<<2)>>2]=M*+f[H+((O|9)<<2)>>2];f[H+(N+10<<2)>>2]=M*+f[H+((O|10)<<2)>>2];f[H+(N+11<<2)>>2]=M*+f[H+((O|11)<<2)>>2];f[H+(N+12<<2)>>2]=M*+f[H+((O|12)<<2)>>2];f[H+(N+13<<2)>>2]=M*+f[H+((O|13)<<2)>>2];f[H+(N+14<<2)>>2]=M*+f[H+((O|14)<<2)>>2];f[H+(N+15<<2)>>2]=M*+f[H+((O|15)<<2)>>2];N=i<<1;f[F+(h<<2)>>2]=M*+f[F+(N<<2)>>2];f[F+(h+1<<2)>>2]=M*+f[F+((N|1)<<2)>>2];h=h+2|0}i=i+1|0}if((h|0)<6){h=38;break}if((Kt(I,F,H,h)|0)<0){h=40;break}f[e>>2]=+f[I>>2]+ +f[e>>2];f[w>>2]=+f[a>>2]+ +f[w>>2];f[x>>2]=+f[l>>2]+ +f[x>>2];f[y>>2]=+f[m>>2]+ +f[y>>2];f[z>>2]=+f[s>>2]+ +f[z>>2];f[A>>2]=+f[t>>2]+ +f[A>>2];f[B>>2]=+f[u>>2]+ +f[B>>2];f[C>>2]=+f[v>>2]+ +f[C>>2];r=g;j=j+1|0}if((h|0)==21){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==38){GO(H);GO(F);GO(E);GO(D);g=-1.0;break}else if((h|0)==40){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==42){GO(H);GO(F);GO(E);GO(D);break}}else g=1.0e8;while(0);zb=J;return +g}function Jt(a,b){a=a|0;b=b|0;var c=0.0;c=+f[a>>2]-+f[b>>2];return (c<0.0?-1:c>0.0&1)|0}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=8;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=8;c[f>>2]=d;e=Jd(f)|0;if(!e)a=-1;else{d=Hd(e,f)|0;if(!d)a=-1;else{b=Hd(e,g)|0;if(!b)a=-1;else{if((Zd(d)|0)<0)a=-1;else{Od(h,d,b)|0;a=0}Md(b)|0}Md(d)|0}Md(e)|0}zb=i;return a|0}function Lt(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+32|0;j=s;q=s+28|0;r=s+24|0;o=c[d>>2]|0;p=c[d+4>>2]|0;n=c[d+8>>2]|0;d=c[h>>2]|0;if(!d){d=Af(c[a+28>>2]|0,c[a+32>>2]|0)|0;c[h>>2]=d}k=a+12|0;m=a+48+(o*48|0)|0;l=c[b>>2]|0;if((Bf(c[k>>2]|0,m,c[l+(o*112|0)>>2]|0,(c[c[l+(o*112|0)+4>>2]>>2]|0)+(p*20|0)|0,n,d)|0)>=0?(l=c[h>>2]|0,d=c[l+28>>2]|0,t=+(B(d,d)|0),!(+(B((c[l+16>>2]|0)+1+(c[l+20>>2]|0)|0,(c[l+8>>2]|0)+1+(c[l+12>>2]|0)|0)|0)*5.0*5.0>t)):0){l=c[b+152>>2]|0;do if((l|0)!=1){d=c[k>>2]|0;k=a+528+(o*48|0)|0;if((l|0)==2){Cf(d,m,k,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}else{Cf(d,m,k,a+1008+(o*48|0)|0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}}else Cf(c[k>>2]|0,m,0,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);while(0);m=c[a+24>>2]|0;if((wf(e,g,c[a+4>>2]|0,c[a+8>>2]|0,c[a+20>>2]|0,c[h>>2]|0,m,m,j,q,r,i)|0)>=0){f[i+4>>2]=+(c[q>>2]|0);f[i+8>>2]=+(c[r>>2]|0);r=c[b>>2]|0;j=c[(c[c[r+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0;q=j+(n*20|0)+8|0;j=j+(n*20|0)+12|0;f[i+12>>2]=+f[r+(o*112|0)+24>>2]+(+f[r+(o*112|0)+12>>2]*+f[q>>2]+ +f[r+(o*112|0)+16>>2]*+f[j>>2]);f[i+16>>2]=+f[r+(o*112|0)+40>>2]+(+f[r+(o*112|0)+28>>2]*+f[q>>2]+ +f[r+(o*112|0)+32>>2]*+f[j>>2]);f[i+20>>2]=+f[r+(o*112|0)+56>>2]+(+f[r+(o*112|0)+44>>2]*+f[q>>2]+ +f[r+(o*112|0)+48>>2]*+f[j>>2]);j=0}else j=-1}else j=-1;zb=s;return j|0}function Mt(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[a+128>>2]=0;return a|0}function Nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+24|0;d=c[e>>2]|0;if(!d){f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,0,40)|0;c[e>>2]=d;a=Jb[c[c[f>>2]>>2]&63](a,0,4096)|0;c[d+32>>2]=a;d=c[e>>2]|0}c[d+8>>2]=115;c[d+12>>2]=83;c[d+16>>2]=47;c[d+20>>2]=33;c[d+24>>2]=116;c[d+28>>2]=b;c[d+4>>2]=0;c[d>>2]=0;return}function Ot(a){a=a|0;c[(c[a+24>>2]|0)+36>>2]=1;return}function Pt(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+24>>2]|0;f=e+32|0;d=gA(c[f>>2]|0,1,4096,c[e+28>>2]|0)|0;g=e+36|0;if(d|0){b=d;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}if(!(c[g>>2]|0))d=b;else{d=c[b>>2]|0;c[d+20>>2]=43;Sb[c[d>>2]&255](b);d=b}b=c[b>>2]|0;c[b+20>>2]=123;Ub[c[b+4>>2]&63](d,-1);a[c[f>>2]>>0]=-1;a[(c[f>>2]|0)+1>>0]=-39;b=2;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+24>>2]|0;if((b|0)<=0)return;g=f+4|0;d=c[g>>2]|0;if((d|0)<(b|0)){e=f+12|0;do{b=b-d|0;Gb[c[e>>2]&127](a)|0;d=c[g>>2]|0}while((b|0)>(d|0))}c[f>>2]=(c[f>>2]|0)+b;c[g>>2]=d-b;return}function Rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+440|0;g=c[k>>2]|0;h=c[a>>2]|0;c[h+20>>2]=124;c[h+24>>2]=g;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;d=b+6&7|208;b=g;a:while(1){e=(b|0)<192;f=(b&-8|0)!=208|(b|0)==(h|0)|(b|0)==(i|0);g=(b|0)==(j|0)|(b|0)==(d|0)?2:1;b:while(1){l=e?2:f?3:g;m=c[a>>2]|0;c[m+20>>2]=99;c[m+24>>2]=b;c[(c[a>>2]|0)+28>>2]=l;Ub[c[(c[a>>2]|0)+4>>2]&63](a,4);switch(l&3){case 1:{d=4;break a}case 3:{b=1;d=7;break a}case 2:break b;default:{}}}if(!(Tt(a)|0)){b=0;d=7;break}b=c[k>>2]|0}if((d|0)==4){c[k>>2]=0;m=1;return m|0}else if((d|0)==7)return b|0;return 0}function St(a){a=a|0;return}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+464|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break}d=c[k>>2]|0;e=c[j>>2]|0}d=d+-1|0;f=e+1|0;if((a[e>>0]|0)==-1)e=f;else{e=f;do{h=(c[l>>2]|0)+24|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1)}do{if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;g=a[f>>0]|0}while(g<<24>>24==-1);f=(c[l>>2]|0)+24|0;h=c[f>>2]|0;if(g<<24>>24){f=18;break}c[f>>2]=h+2;c[j>>2]=e;c[k>>2]=d}if((f|0)==18){f=g&255;if(h|0){i=c[b>>2]|0;c[i+20>>2]=119;c[i+24>>2]=h;c[(c[b>>2]|0)+28>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);c[(c[l>>2]|0)+24>>2]=0}c[b+440>>2]=f;c[j>>2]=e;c[k>>2]=d;l=1;return l|0}else if((f|0)==21)return d|0;return 0}function Ut(a){a=a|0;var b=0,d=0;d=Jb[c[c[a+4>>2]>>2]&63](a,0,172)|0;b=a+464|0;c[b>>2]=d;c[d>>2]=117;c[d+4>>2]=84;c[d+8>>2]=85;c[d+28>>2]=86;c[d+96>>2]=0;c[d+100>>2]=0;c[d+36>>2]=86;c[d+104>>2]=0;c[d+40>>2]=86;c[d+108>>2]=0;c[d+44>>2]=86;c[d+112>>2]=0;c[d+48>>2]=86;c[d+116>>2]=0;c[d+52>>2]=86;c[d+120>>2]=0;c[d+56>>2]=86;c[d+124>>2]=0;c[d+60>>2]=86;c[d+128>>2]=0;c[d+64>>2]=86;c[d+132>>2]=0;c[d+68>>2]=86;c[d+136>>2]=0;c[d+72>>2]=86;c[d+140>>2]=0;c[d+76>>2]=86;c[d+144>>2]=0;c[d+80>>2]=86;c[d+148>>2]=0;c[d+84>>2]=86;c[d+152>>2]=0;c[d+156>>2]=0;c[d+92>>2]=86;c[d+160>>2]=0;c[d+32>>2]=87;c[d+88>>2]=87;b=c[b>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Vt(a){a=a|0;var b=0;b=c[a+464>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Wt(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;Pa=zb;zb=zb+256|0;ga=Pa;Na=f+440|0;Oa=f+464|0;oa=f+24|0;ua=f+232|0;va=f+248|0;wa=f+264|0;pa=f+280|0;qa=f+40|0;ra=f+304|0;sa=f+308|0;ta=f+284|0;ha=f+288|0;ia=f+289|0;ja=f+290|0;ka=f+292|0;la=f+294|0;ma=f+296|0;na=f+300|0;Ja=f+36|0;Ka=f+216|0;g=c[Na>>2]|0;a:while(1){do if(!g){if(c[(c[Oa>>2]|0)+12>>2]|0){if(!(Tt(f)|0)){xa=0;Aa=350;break a}g=c[Na>>2]|0;break}m=c[oa>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0}k=c[m>>2]|0;g=g+-1|0;h=k+1|0;k=a[k>>0]|0;l=k&255;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[n>>2]|0;h=c[m>>2]|0}else j=g;V=a[h>>0]|0;g=V&255;if(k<<24>>24!=-1|V<<24>>24!=-40){V=c[f>>2]|0;c[V+20>>2]=55;c[V+24>>2]=l;c[(c[f>>2]|0)+28>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}c[Na>>2]=g;c[m>>2]=h+1;c[n>>2]=j+-1}while(0);do switch(g|0){case 218:{Aa=25;break a}case 217:{Aa=75;break a}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Ub[c[g+4>>2]&63](f,1);g=(c[Oa>>2]|0)+12|0;if(c[g>>2]|0){g=c[f>>2]|0;c[g+20>>2]=64;Sb[c[g>>2]&255](f);g=(c[Oa>>2]|0)+12|0}h=ua;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));h=va;j=h+16|0;do{a[h>>0]=1;h=h+1|0}while((h|0)<(j|0));h=wa;j=h+16|0;do{a[h>>0]=5;h=h+1|0}while((h|0)<(j|0));c[pa>>2]=0;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;c[ta>>2]=0;a[ha>>0]=1;a[ia>>0]=1;a[ja>>0]=0;b[ka>>1]=1;b[la>>1]=1;c[ma>>2]=0;a[na>>0]=0;c[g>>2]=1;break}case 192:{if(!($t(f,1,0,0)|0)){xa=0;Aa=350;break a}break}case 193:{if(!($t(f,0,0,0)|0)){xa=0;Aa=350;break a}break}case 194:{if(!($t(f,0,1,0)|0)){xa=0;Aa=350;break a}break}case 201:{if(!($t(f,0,0,1)|0)){xa=0;Aa=350;break a}break}case 202:{if(!($t(f,0,1,1)|0)){xa=0;Aa=350;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{V=c[f>>2]|0;c[V+20>>2]=63;c[V+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f);break}case 204:{p=c[oa>>2]|0;q=p+4|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0}j=c[p>>2]|0;g=g+-1|0;h=j+1|0;j=d[j>>0]<<8;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0;h=c[p>>2]|0}V=j|d[h>>0];j=V+-2|0;k=g+-1|0;g=h+1|0;if(V>>>0>2){o=p+12|0;n=j;h=k;while(1){if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;g=c[p>>2]|0}h=h+-1|0;j=g+1|0;l=a[g>>0]|0;m=l&255;if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;k=c[p>>2]|0}else k=j;g=a[k>>0]|0;j=g&255;V=c[f>>2]|0;c[V+20>>2]=81;c[V+24>>2]=m;c[(c[f>>2]|0)+28>>2]=j;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if((l&255)<=31)if((l&255)<=15){U=j&15;a[f+232+m>>0]=U;V=(g&255)>>>4;a[f+248+m>>0]=V;if(U>>>0>(V&255)>>>0){V=c[f>>2]|0;c[V+20>>2]=30;c[V+24>>2]=j;Sb[c[c[f>>2]>>2]&255](f)}}else Aa=93;else{Aa=c[f>>2]|0;c[Aa+20>>2]=29;c[Aa+24>>2]=m;Sb[c[c[f>>2]>>2]&255](f);Aa=93}if((Aa|0)==93){Aa=0;a[m+-16+(f+264)>>0]=g}j=n+-2|0;h=h+-1|0;g=k+1|0;if((n|0)>2)n=j;else break}}else h=k;if(j|0){V=c[f>>2]|0;c[V+20>>2]=12;Sb[c[V>>2]&255](f)}c[p>>2]=g;c[q>>2]=h;break}case 196:{U=c[oa>>2]|0;V=U+4|0;g=c[V>>2]|0;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0}k=c[U>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0;j=c[U>>2]|0}else j=h;h=g+-1|0;g=j+1|0;T=k|d[j>>0];j=T+-2|0;if(T>>>0>18){T=U+12|0;do{if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}S=d[g>>0]|0;R=c[f>>2]|0;c[R+20>>2]=82;c[R+24>>2]=S;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}R=a[g>>0]|0;N=R&255;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}Q=a[g>>0]|0;L=Q&255;k=L+N|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}P=a[g>>0]|0;K=P&255;k=k+K|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}O=a[g>>0]|0;I=O&255;k=k+I|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}M=a[g>>0]|0;G=M&255;k=k+G|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}J=a[g>>0]|0;E=J&255;k=k+E|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}H=a[g>>0]|0;C=H&255;k=k+C|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}F=a[g>>0]|0;A=F&255;k=k+A|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}D=a[g>>0]|0;y=D&255;k=k+y|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}B=a[g>>0]|0;w=B&255;k=k+w|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}z=a[g>>0]|0;u=z&255;k=k+u|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}x=a[g>>0]|0;s=x&255;k=k+s|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}v=a[g>>0]|0;q=v&255;k=k+q|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}t=a[g>>0]|0;o=t&255;k=k+o|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}r=a[g>>0]|0;l=r&255;k=k+l|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}p=a[g>>0]|0;Qa=p&255;n=k+Qa|0;h=h+-1|0;g=g+1|0;m=j+-17|0;k=c[f>>2]|0;c[k+24>>2]=N;c[k+28>>2]=L;c[k+32>>2]=K;c[k+36>>2]=I;c[k+40>>2]=G;c[k+44>>2]=E;c[k+48>>2]=C;c[k+52>>2]=A;c[k+20>>2]=88;Ub[c[k+4>>2]&63](f,2);N=c[f>>2]|0;c[N+24>>2]=y;c[N+28>>2]=w;c[N+32>>2]=u;c[N+36>>2]=s;c[N+40>>2]=q;c[N+44>>2]=o;c[N+48>>2]=l;c[N+52>>2]=Qa;c[N+20>>2]=88;Ub[c[N+4>>2]&63](f,2);if(n>>>0>256|(m|0)<(n|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=9;Sb[c[Qa>>2]&255](f)}aP(ga|0,0,256)|0;if(!n)j=0;else{k=0;while(1){if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}h=h+-1|0;j=g+1|0;a[ga+k>>0]=a[g>>0]|0;k=k+1|0;if(k>>>0>=n>>>0){g=j;j=n;break}else g=j}}j=m-j|0;Qa=(S&16|0)==0;l=S+-16|0;k=Qa?S:l;l=Qa?f+180+(S<<2)|0:f+196+(l<<2)|0;if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=31;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=c[l>>2]|0;if(!k){k=au(f)|0;c[l>>2]=k}a[k>>0]=0;a[k+1>>0]=R;a[k+2>>0]=Q;a[k+3>>0]=P;a[k+4>>0]=O;a[k+5>>0]=M;a[k+6>>0]=J;a[k+7>>0]=H;a[k+8>>0]=F;a[k+9>>0]=D;a[k+10>>0]=B;a[k+11>>0]=z;a[k+12>>0]=x;a[k+13>>0]=v;a[k+14>>0]=t;a[k+15>>0]=r;a[k+16>>0]=p;_O((c[l>>2]|0)+17|0,ga|0,256)|0}while((j|0)>16)}if(j|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[U>>2]=g;c[V>>2]=h;break}case 219:{q=c[oa>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0}l=c[q>>2]|0;g=g+-1|0;h=l+1|0;l=d[l>>0]<<8;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;k=c[q>>2]|0}else k=h;j=g+-1|0;h=k+1|0;Qa=l|d[k>>0];g=Qa+-2|0;if(Qa>>>0>2){p=q+12|0;while(1){o=g+-1|0;if(!j){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[r>>2]|0;h=c[q>>2]|0}k=d[h>>0]|0;m=k>>>4;k=k&15;Qa=c[f>>2]|0;c[Qa+20>>2]=83;c[Qa+24>>2]=k;c[(c[f>>2]|0)+28>>2]=m;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=32;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=f+164+(k<<2)|0;l=c[k>>2]|0;if(!l){l=Mt(f)|0;c[k>>2]=l}n=(m|0)!=0;if(n)if((g|0)<129){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o>>1;Aa=196}else Aa=203;else if((g|0)<65){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o;Aa=196}else Aa=203;b:do if((Aa|0)==196){Aa=0;switch(ba|0){case 4:{g=3280;break}case 9:{g=3168;break}case 16:{g=3040;break}case 25:{g=2864;break}case 36:{g=2656;break}case 49:{g=2384;break}default:{j=j+-1|0;g=h+1|0;if((ba|0)>0){Z=2064;_=ba;$=g;aa=j;Aa=205;break b}else{Y=ba;X=j;W=g;break b}}}Z=g;_=ba;$=h+1|0;aa=j+-1|0;Aa=205}else if((Aa|0)==203){Z=2064;_=64;$=h+1|0;aa=j+-1|0;Aa=205}while(0);c:do if((Aa|0)==205){Aa=0;if(!n){j=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}b[l+(c[Z+(j<<2)>>2]<<1)>>1]=d[h>>0]|0;j=j+1|0;g=g+-1|0;h=h+1|0;if((j|0)>=(_|0)){Y=_;X=g;W=h;break c}}}m=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}else h=j;b[l+(c[Z+(m<<2)>>2]<<1)>>1]=k|d[h>>0];m=m+1|0;g=g+-1|0;h=h+1|0;if((m|0)>=(_|0)){Y=_;X=g;W=h;break}}}while(0);h=c[f>>2]|0;d:do if((c[h+104>>2]|0)>1){g=0;while(1){c[h+24>>2]=e[l+(g<<1)>>1];c[h+28>>2]=e[l+((g|1)<<1)>>1];c[h+32>>2]=e[l+((g|2)<<1)>>1];c[h+36>>2]=e[l+((g|3)<<1)>>1];c[h+40>>2]=e[l+((g|4)<<1)>>1];c[h+44>>2]=e[l+((g|5)<<1)>>1];c[h+48>>2]=e[l+((g|6)<<1)>>1];c[h+52>>2]=e[l+((g|7)<<1)>>1];c[h+20>>2]=95;Ub[c[h+4>>2]&63](f,2);g=g+8|0;if(g>>>0>=64)break d;h=c[f>>2]|0}}while(0);g=o-Y+(n?0-Y|0:0)|0;if((g|0)>0){h=W;j=X}else{j=X;h=W;break}}}if(g|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[q>>2]=h;c[r>>2]=j;break}case 221:{l=c[oa>>2]|0;m=l+4|0;g=c[m>>2]|0;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0}k=c[l>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;j=c[l>>2]|0}else j=h;g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=4){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;h=c[l>>2]|0}j=g+-1|0;g=h+1|0;k=d[h>>0]<<8;if(!j){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[m>>2]|0;g=c[l>>2]|0}else h=j;Qa=k|d[g>>0];V=c[f>>2]|0;c[V+20>>2]=84;c[V+24>>2]=Qa;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[pa>>2]=Qa;c[l>>2]=g+1;c[m>>2]=h+-1;break}case 248:{m=c[oa>>2]|0;h=c[m>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46637,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if((c[Ja>>2]|0)>=3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=24){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)!=13){Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=c[Na>>2];Sb[c[c[f>>2]>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)==255){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)==3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;k=c[Ka>>2]|0;if((c[k+88>>2]|0)==(d[j>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0;l=c[Ka>>2]|0}else l=k;g=g+-1|0;j=h+1|0;if((c[l>>2]|0)==(d[h>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;k=c[m>>2]|0;h=c[Ka>>2]|0}else{k=j;h=l}g=g+-1|0;j=k+1|0;if((c[h+176>>2]|0)!=(d[k>>0]|0)){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((a[j>>0]|0)!=-128){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(!(k|d[j>>0])){ea=g;fa=h}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=h;Aa=335}while(0);if((Aa|0)==335){Aa=0;ea=c[f>>2]|0;c[ea+20>>2]=28;Sb[c[ea>>2]&255](f);ea=ca;fa=da}c[ra>>2]=1;c[m>>2]=fa;c[n>>2]=ea;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(Gb[c[(c[Oa>>2]|0)+32+(g+-224<<2)>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 254:{if(!(Gb[c[(c[Oa>>2]|0)+28>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Qa=c[f>>2]|0;c[Qa+20>>2]=94;c[Qa+24>>2]=g;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);break}case 220:{k=c[oa>>2]|0;l=k+4|0;g=c[l>>2]|0;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0}h=c[k>>2]|0;g=g+-1|0;j=h+1|0;h=d[h>>0]<<8;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0;j=c[k>>2]|0}Qa=h|d[j>>0];h=Qa+-2|0;V=c[f>>2]|0;c[V+20>>2]=93;c[V+24>>2]=c[Na>>2];c[(c[f>>2]|0)+28>>2]=h;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[k>>2]=j+1;c[l>>2]=g+-1;if(Qa>>>0>2)Ub[c[(c[oa>>2]|0)+16>>2]&63](f,h);break}default:{Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}}while(0);c[Na>>2]=0;g=0}if((Aa|0)==25){q=c[oa>>2]|0;h=c[q>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46633,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}while(0);g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}else h=j;while(0);g=g+-1|0;j=h+1|0;l=k|d[h>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;k=c[q>>2]|0;break}else{h=g;k=j}while(0);m=a[k>>0]|0;p=m&255;Qa=c[f>>2]|0;c[Qa+20>>2]=105;c[Qa+24>>2]=p;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);do if(!((m&255)>4|(l|0)!=((p<<1)+6|0))){if(m<<24>>24){c[f+340>>2]=p;i=h+-1|0;ya=k+1|0;za=i;i=(i|0)==0;Aa=42;break}if(c[f+224>>2]|0){c[f+340>>2]=p;g=h+-1|0;if(!g){Ha=1;Aa=64}else{Fa=g;La=k+1|0;Ma=1}}else Aa=41}else Aa=41;while(0);if((Aa|0)==41){j=c[f>>2]|0;c[j+20>>2]=12;Sb[c[j>>2]&255](f);c[f+340>>2]=p;j=h+-1|0;g=k+1|0;h=(j|0)==0;if(!(m<<24>>24)){Da=j;Ea=g;Ga=h;Ia=1;Aa=63}else{ya=g;za=j;i=h;Aa=42}}e:do if((Aa|0)==42){n=q+12|0;o=f+344|0;m=0;g=ya;h=za;while(1){if(i){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}h=c[r>>2]|0;g=c[q>>2]|0}l=h+-1|0;i=g+1|0;h=d[g>>0]|0;f:do if(m){g=0;while(1){if((c[c[f+344+(g<<2)>>2]>>2]|0)==(h|0))break;g=g+1|0;if(g>>>0>=m>>>0)break f}g=c[c[o>>2]>>2]|0;if(m>>>0>1){h=1;do{Qa=c[c[f+344+(h<<2)>>2]>>2]|0;g=(Qa|0)>(g|0)?Qa:g;h=h+1|0}while((h|0)!=(m|0))}h=g+1|0}while(0);g=c[Ka>>2]|0;k=c[Ja>>2]|0;g:do if((k|0)>0){j=0;while(1){if((h|0)==(c[g>>2]|0)){Ca=g;break g}j=j+1|0;g=g+88|0;if((j|0)>=(k|0)){Ba=g;Aa=58;break}}}else{Ba=g;Aa=58}while(0);if((Aa|0)==58){Aa=0;Ca=c[f>>2]|0;c[Ca+20>>2]=4;c[Ca+24>>2]=h;Sb[c[c[f>>2]>>2]&255](f);Ca=Ba}c[f+344+(m<<2)>>2]=Ca;if(!l){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}g=c[r>>2]|0;i=c[q>>2]|0}else g=l;h=d[i>>0]|0;za=Ca+20|0;c[za>>2]=h>>>4;Qa=Ca+24|0;c[Qa>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[Ca>>2];c[h+28>>2]=c[za>>2];c[h+32>>2]=c[Qa>>2];c[h+20>>2]=106;Ub[c[h+4>>2]&63](f,1);m=m+1|0;h=g+-1|0;g=i+1|0;i=(h|0)==0;if(m>>>0>=p>>>0){Da=h;Ea=g;Ga=i;Ia=0;Aa=63;break e}}if((Aa|0)==350){zb=Pa;return xa|0}}while(0);if((Aa|0)==63)if(Ga){Ha=Ia;Aa=64}else{Fa=Da;La=Ea;Ma=Ia}do if((Aa|0)==64)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{Fa=c[r>>2]|0;La=c[q>>2]|0;Ma=Ha;break}while(0);g=Fa+-1|0;h=La+1|0;k=f+412|0;c[k>>2]=d[La>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;i=c[q>>2]|0;break}else i=h;while(0);h=g+-1|0;g=i+1|0;j=f+416|0;c[j>>2]=d[i>>0];do if(!h)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);Qa=d[g>>0]|0;Ka=f+420|0;c[Ka>>2]=Qa>>>4;La=f+424|0;c[La>>2]=Qa&15;Qa=c[f>>2]|0;c[Qa+24>>2]=c[k>>2];c[Qa+28>>2]=c[j>>2];c[Qa+32>>2]=c[Ka>>2];c[Qa+36>>2]=c[La>>2];c[Qa+20>>2]=107;Ub[c[Qa+4>>2]&63](f,1);c[(c[Oa>>2]|0)+20>>2]=0;if(!Ma){Qa=f+144|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[q>>2]=g+1;c[r>>2]=h+-1;c[Na>>2]=0;Qa=1;zb=Pa;return Qa|0}else if((Aa|0)==75){Qa=c[f>>2]|0;c[Qa+20>>2]=87;Ub[c[Qa+4>>2]&63](f,1);c[Na>>2]=0;Qa=2;zb=Pa;return Qa|0}else if((Aa|0)==174){Qa=0;zb=Pa;return Qa|0}else if((Aa|0)==350){zb=Pa;return xa|0}return 0}function Xt(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+440|0;b=c[f>>2]|0;do if(!b)if(!(Tt(a)|0)){f=0;return f|0}else{b=c[f>>2]|0;break}while(0);d=a+464|0;e=c[(c[d>>2]|0)+20>>2]|0;if((b|0)!=(e+208|0)){if(!(Ib[c[(c[a+24>>2]|0)+20>>2]&63](a,e)|0)){f=0;return f|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,3);c[f>>2]=0}f=(c[d>>2]|0)+20|0;c[f>>2]=(c[f>>2]|0)+1&7;f=1;return f|0}function Yt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+24|0;h=c[g>>2]|0;i=h+4|0;b=c[i>>2]|0;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;break}while(0);e=c[h>>2]|0;b=b+-1|0;f=e+1|0;e=(d[e>>0]|0)<<8;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;f=c[h>>2]|0;break}while(0);j=e|(d[f>>0]|0);e=j+-2|0;k=c[a>>2]|0;c[k+20>>2]=93;c[k+24>>2]=c[a+440>>2];c[(c[a>>2]|0)+28>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,1);c[h>>2]=f+1;c[i>>2]=b+-1;if(j>>>0<=2){k=1;return k|0}Ub[c[(c[g>>2]|0)+16>>2]&63](a,e);k=1;return k|0}function Zt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;l=p;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);j=g|d[f>>0];k=j+-2|0;j=j>>>0>15?14:j>>>0>2?k:0;g=e+-1|0;e=f+1|0;a:do if(!j)f=g;else{i=n+12|0;h=0;f=g;while(1){if(!f){if(!(Gb[c[i>>2]&127](b)|0)){e=0;break}f=c[o>>2]|0;e=c[n>>2]|0}a[l+h>>0]=a[e>>0]|0;h=h+1|0;f=f+-1|0;e=e+1|0;if(h>>>0>=j>>>0)break a}zb=p;return e|0}while(0);g=k-j|0;h=c[b+440>>2]|0;b:do switch(h|0){case 224:{_t(b,l,j,g);break}case 238:{if((((j>>>0>11&(a[l>>0]|0)==65?(a[l+1>>0]|0)==100:0)?(a[l+2>>0]|0)==111:0)?(a[l+3>>0]|0)==98:0)?(a[l+4>>0]|0)==101:0){h=d[l+7>>0]<<8|d[l+8>>0];i=d[l+9>>0]<<8|d[l+10>>0];k=a[l+11>>0]|0;j=c[b>>2]|0;c[j+24>>2]=d[l+5>>0]<<8|d[l+6>>0];c[j+28>>2]=h;c[j+32>>2]=i;c[j+36>>2]=k&255;c[j+20>>2]=78;Ub[c[j+4>>2]&63](b,1);c[b+296>>2]=1;a[b+300>>0]=k;break b}l=c[b>>2]|0;c[l+20>>2]=80;c[l+24>>2]=k;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1);break}default:{l=c[b>>2]|0;c[l+20>>2]=70;c[l+24>>2]=h;Sb[c[c[b>>2]>>2]&255](b)}}while(0);c[n>>2]=e;c[o>>2]=f;if((g|0)<=0){o=1;zb=p;return o|0}Ub[c[(c[m>>2]|0)+16>>2]&63](b,g);o=1;zb=p;return o|0}function _t(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(g>>>0>13){if((a[f>>0]|0)==74)if((((a[f+1>>0]|0)==70?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){c[e+284>>2]=1;j=a[f+5>>0]|0;k=e+288|0;a[k>>0]=j;l=a[f+6>>0]|0;m=e+289|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+290|0;a[p>>0]=h;i=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+292|0;b[n>>1]=i;g=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+294|0;b[o>>1]=g;if((j+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=j&255;c[(c[e>>2]|0)+28>>2]=d[m>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](e,-1);q=e;j=a[k>>0]|0;l=a[m>>0]|0;i=b[n>>1]|0;g=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=j&255;c[p+28>>2]=l&255;c[p+32>>2]=i&65535;c[p+36>>2]=g&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Ub[c[p+4>>2]&63](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=d[j>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(B((i&255)*3|0,g&255)|0))return;r=c[e>>2]|0;c[r+20>>2]=90;c[r+24>>2]=h;Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);return}else i=16}else if(g>>>0>5?(a[f>>0]|0)==74:0)i=16;if(((((i|0)==16?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;switch(a[h>>0]|0){case 16:{q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 17:{q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 19:{q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}default:{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}function $t(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+24>>2]|0;h=c[o>>2]|0;p=o+4|0;g=c[p>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;e=(d[h>>0]|0)<<8;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;j=e|(d[h>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;c[a+212>>2]=d[h>>0];do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;i=a+32|0;c[i>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;e=c[i>>2]|0;break}else e=h;while(0);g=g+-1|0;h=b+1|0;c[i>>2]=e+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;f=a+28|0;c[f>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;h=c[f>>2]|0;break}while(0);g=g+-1|0;e=b+1|0;c[f>>2]=h+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{b=c[p>>2]|0;e=c[o>>2]|0;break}else b=g;while(0);m=a+36|0;c[m>>2]=d[e>>0];h=j+-8|0;n=c[a>>2]|0;c[n+24>>2]=c[a+440>>2];c[n+28>>2]=c[f>>2];c[n+32>>2]=c[i>>2];c[n+36>>2]=c[m>>2];c[n+20>>2]=102;Ub[c[n+4>>2]&63](a,1);n=a+464|0;if(c[(c[n>>2]|0)+16>>2]|0){l=c[a>>2]|0;c[l+20>>2]=61;Sb[c[l>>2]&255](a)}if(((c[i>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(k=c[m>>2]|0,(k|0)>=1):0)g=k;else{g=c[a>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](a);g=c[m>>2]|0}if((h|0)!=(g*3|0)){l=c[a>>2]|0;c[l+20>>2]=12;Sb[c[l>>2]&255](a)}l=a+216|0;if(!(c[l>>2]|0)){k=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[m>>2]|0)*88|0)|0;c[l>>2]=k}b=b+-1|0;g=e+1|0;a:do if((c[m>>2]|0)>0){k=o+12|0;j=0;while(1){if(!b){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}b=c[p>>2]|0;g=c[o>>2]|0}f=b+-1|0;h=g+1|0;e=d[g>>0]|0;i=c[l>>2]|0;b:do if(!j)b=e;else{g=i;b=0;while(1){if((c[g>>2]|0)==(e|0))break;b=b+1|0;g=g+88|0;if(b>>>0>=j>>>0){b=e;i=g;break b}}b=c[i>>2]|0;g=i+88|0;if(j>>>0>1){e=1;while(1){q=c[g>>2]|0;b=(q|0)>(b|0)?q:b;e=e+1|0;if((e|0)==(j|0))break;else g=g+88|0}g=i+(j*88|0)|0}b=b+1|0;i=g}while(0);c[i>>2]=b;c[i+4>>2]=j;if(!f){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else g=f;g=g+-1|0;b=h+1|0;q=d[h>>0]|0;e=i+8|0;c[e>>2]=q>>>4;f=i+12|0;c[f>>2]=q&15;if(!g){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else h=b;q=i+16|0;c[q>>2]=d[h>>0];b=c[a>>2]|0;c[b+24>>2]=c[i>>2];c[b+28>>2]=c[e>>2];c[b+32>>2]=c[f>>2];c[b+36>>2]=c[q>>2];c[b+20>>2]=103;Ub[c[b+4>>2]&63](a,1);j=j+1|0;b=g+-1|0;g=h+1|0;if((j|0)>=(c[m>>2]|0))break a}if((h|0)==57)return g|0}while(0);c[(c[n>>2]|0)+16>>2]=1;c[o>>2]=g;c[p>>2]=b;q=1;return q|0}function au(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[a+276>>2]=0;return a|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+20|0;b=c[k>>2]|0;a:do switch(b|0){case 202:{cu(a);if(!(c[a+64>>2]|0)){c[k>>2]=203;d=6;break a}c[k>>2]=207;k=1;return k|0}case 203:{d=6;break}case 204:{b=a+444|0;break}default:{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a);d=17}}while(0);if((d|0)==6){g=a+460|0;b:do if(c[(c[g>>2]|0)+16>>2]|0){e=a+8|0;f=a+332|0;b=c[e>>2]|0;c:while(1){if(b|0)Sb[c[b>>2]&255](a);b=Gb[c[c[g>>2]>>2]&127](a)|0;switch(b|0){case 2:break b;case 0:break c;default:{}}d=c[e>>2]|0;if((b|2|0)==3&(d|0)!=0?(h=d+4|0,j=(c[h>>2]|0)+1|0,c[h>>2]=j,h=d+8|0,i=c[h>>2]|0,(j|0)>=(i|0)):0)c[h>>2]=(c[f>>2]|0)+i;b=d}return b|0}while(0);c[a+152>>2]=c[a+144>>2];d=17}if((d|0)==17){b=a+444|0;if((c[k>>2]|0)!=204){Sb[c[c[b>>2]>>2]&255](a);c[a+140>>2]=0;c[k>>2]=204}}d=c[b>>2]|0;d:do if(c[d+8>>2]|0){g=a+140|0;h=a+116|0;i=a+8|0;j=a+448|0;f=c[g>>2]|0;e:while(1){e=c[h>>2]|0;if(f>>>0>>0){do{d=c[i>>2]|0;if(!d)d=f;else{c[d+4>>2]=f;c[d+8>>2]=e;Sb[c[d>>2]&255](a);d=c[g>>2]|0}Xb[c[(c[j>>2]|0)+4>>2]&31](a,0,g,0);f=c[g>>2]|0;if((f|0)==(d|0)){b=0;break e}e=c[h>>2]|0}while(f>>>0>>0);d=c[b>>2]|0}Sb[c[d+4>>2]&255](a);Sb[c[c[b>>2]>>2]&255](a);c[g>>2]=0;d=c[b>>2]|0;if(!(c[d+8>>2]|0))break d;else f=0}return b|0}while(0);c[k>>2]=(c[a+68>>2]|0)==0?205:206;k=1;return k|0}function cu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Jb[c[c[k>>2]>>2]&63](b,1,28)|0;c[b+444>>2]=i;c[i>>2]=118;c[i+4>>2]=119;c[i+8>>2]=0;d=c[b+212>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}fu(b);e=Jb[c[c[k>>2]>>2]&63](b,1,1280)|0;aP(e|0,0,512)|0;f=e+512|0;c[b+336>>2]=f;d=0;do{a[f+d>>0]=d;d=d+1|0}while((d|0)!=256);aP(e+768|0,-1,512)|0;if(!(((c[b+116>>2]|0)!=0?(c[b+112>>2]|0)!=0:0)?(g=b+120|0,(c[g>>2]|0)>=1):0)){g=c[b>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](b);g=b+120|0}j=i+12|0;c[j>>2]=0;f=gu(b)|0;h=i+16|0;c[h>>2]=f;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(c[b+84>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;e=b+68|0}else{if(!(c[b+64>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}e=b+68|0;if(c[e>>2]|0){i=c[b>>2]|0;c[i+20>>2]=48;Sb[c[i>>2]&255](b)}do if((c[g>>2]|0)==3){if(c[b+136>>2]|0){c[b+104>>2]=1;break}if(!(c[b+92>>2]|0)){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}while(0);if(c[b+100>>2]|0){hu(b);c[f>>2]=c[b+484>>2]}if((c[b+108>>2]|0)==0?(c[b+104>>2]|0)==0:0)break;iu(b);c[d>>2]=c[b+484>>2]}while(0);if(!(c[e>>2]|0)){if(!(c[h>>2]|0)){ku(b);lu(b)}else ju(b);mu(b,c[b+108>>2]|0)}nu(b);if(!(c[b+228>>2]|0))pu(b);else ou(b);f=b+460|0;if(!(c[(c[f>>2]|0)+16>>2]|0))d=(c[b+64>>2]|0)!=0&1;else d=1;qu(b,d);if(!(c[e>>2]|0))ru(b,0);Sb[c[(c[k>>2]|0)+24>>2]&255](b);Sb[c[(c[f>>2]|0)+8>>2]&255](b);d=c[b+8>>2]|0;if(!d)return;if(c[b+64>>2]|0)return;if(!(c[(c[f>>2]|0)+16>>2]|0))return;k=c[b+36>>2]|0;k=(c[b+224>>2]|0)==0?k:(k*3|0)+2|0;c[d+4>>2]=0;k=B(k,c[b+332>>2]|0)|0;c[d+8>>2]=k;c[d+12>>2]=0;c[d+16>>2]=(c[b+108>>2]|0)==0?2:3;c[j>>2]=(c[j>>2]|0)+1;return}function du(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a+444>>2]|0;e=d+8|0;if(!(c[e>>2]|0)){b=a+84|0;do if(c[b>>2]|0?(c[a+136>>2]|0)==0:0){if(c[a+92>>2]|0?c[a+108>>2]|0:0){c[a+484>>2]=c[d+24>>2];c[e>>2]=1;break}if(!(c[a+100>>2]|0)){f=c[a>>2]|0;c[f+20>>2]=47;Sb[c[f>>2]&255](a);break}else{c[a+484>>2]=c[d+20>>2];break}}while(0);Sb[c[c[a+472>>2]>>2]&255](a);Sb[c[(c[a+452>>2]|0)+8>>2]&255](a);if(!(c[a+68>>2]|0)){if(!(c[d+16>>2]|0))Sb[c[c[a+480>>2]>>2]&255](a);Sb[c[c[a+476>>2]>>2]&255](a);if(c[b>>2]|0)Ub[c[c[a+484>>2]>>2]&63](a,c[e>>2]|0);Ub[c[c[a+456>>2]>>2]&63](a,(c[e>>2]|0)==0?0:3);Ub[c[c[a+448>>2]>>2]&63](a,0)}}else{c[e>>2]=0;Ub[c[c[a+484>>2]>>2]&63](a,0);Ub[c[c[a+456>>2]>>2]&63](a,2);Ub[c[c[a+448>>2]>>2]&63](a,2)}b=c[a+8>>2]|0;if(!b)return;d=c[d+12>>2]|0;c[b+12>>2]=d;d=((c[e>>2]|0)==0?1:2)+d|0;b=b+16|0;c[b>>2]=d;if(!(c[a+64>>2]|0))return;if(c[(c[a+460>>2]|0)+20>>2]|0)return;c[b>>2]=((c[a+108>>2]|0)==0?1:2)+d;return}function eu(a){a=a|0;var b=0;b=c[a+444>>2]|0;if(c[a+84>>2]|0)Sb[c[(c[a+484>>2]|0)+8>>2]&255](a);b=b+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=c[a+20>>2]|0;if((b|0)!=202){t=c[a>>2]|0;c[t+20>>2]=21;c[t+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}xw(a);d=c[a+216>>2]|0;t=a+36|0;b=c[t>>2]|0;o=(b|0)>0;if(o){p=c[a+324>>2]|0;q=(c[a+76>>2]|0)==0?4:8;r=a+320|0;s=c[a+328>>2]|0;if((p|0)>(q|0)){k=(s|0)>(q|0);l=p<<1;i=d;j=0;while(1){m=i+36|0;c[m>>2]=p;a:do if(k)e=s;else{h=c[r>>2]|0;g=c[i+12>>2]|0;f=1;e=s;do{f=f<<1;if((h|0)%(B(f,g)|0)|0|0)break a;e=B(s,f)|0}while((e|0)<=(q|0))}while(0);f=i+40|0;c[f>>2]=e;g=e<<1;if((p|0)<=(g|0)){if((e|0)>(l|0))c[f>>2]=l}else c[m>>2]=g;j=j+1|0;if((j|0)>=(b|0))break;else i=i+88|0}}else{m=c[a+316>>2]|0;n=(s|0)>(q|0);k=d;l=0;while(1){g=c[k+8>>2]|0;f=1;e=p;do{f=f<<1;if((m|0)%(B(f,g)|0)|0|0)break;e=B(p,f)|0}while((e|0)<=(q|0));j=k+36|0;c[j>>2]=e;b:do if(n)g=s;else{h=c[r>>2]|0;i=c[k+12>>2]|0;f=1;g=s;do{f=f<<1;if((h|0)%(B(f,i)|0)|0|0)break b;g=B(s,f)|0}while((g|0)<=(q|0))}while(0);h=k+40|0;c[h>>2]=g;f=g<<1;if((e|0)<=(f|0)){e=e<<1;if((g|0)>(e|0))c[h>>2]=e}else c[j>>2]=f;l=l+1|0;if((l|0)>=(b|0))break;else k=k+88|0}}if(o){f=a+28|0;g=a+316|0;h=a+428|0;i=a+32|0;j=a+320|0;e=0;while(1){b=B(B(c[d+8>>2]|0,c[f>>2]|0)|0,c[d+36>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[g>>2]|0)|0)|0;c[d+44>>2]=b;b=B(B(c[d+12>>2]|0,c[i>>2]|0)|0,c[d+40>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[j>>2]|0)|0)|0;c[d+48>>2]=b;e=e+1|0;b=c[t>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}}d=c[a+44>>2]|0;switch(d|0){case 1:{b=d;break}case 6:case 2:{b=3;break}case 7:case 3:{b=3;break}case 5:case 4:{b=4;break}default:{}}c[a+120>>2]=b;c[a+124>>2]=(c[a+84>>2]|0)==0?b:1;if(!(gu(a)|0)){t=1;a=a+128|0;c[a>>2]=t;return}t=c[a+320>>2]|0;a=a+128|0;c[a>>2]=t;return}function gu(a){a=a|0;var b=0,d=0;if(c[a+308>>2]|0)return 0;switch(c[a+40>>2]|0){case 7:case 3:break;default:return 0}if((c[a+36>>2]|0)!=3)return 0;if((c[a+44>>2]|0)!=2)return 0;if((c[a+120>>2]|0)!=3)return 0;if(c[a+304>>2]|0)return 0;d=c[a+216>>2]|0;if((c[d+8>>2]|0)!=2)return 0;if((c[d+96>>2]|0)!=1)return 0;if((c[d+184>>2]|0)!=1)return 0;if((c[d+12>>2]|0)>2)return 0;if((c[d+100>>2]|0)!=1)return 0;if((c[d+188>>2]|0)!=1)return 0;b=c[d+36>>2]|0;if((b|0)!=(c[a+324>>2]|0))return 0;if((c[d+124>>2]|0)!=(b|0))return 0;if((c[d+212>>2]|0)!=(b|0))return 0;b=c[d+40>>2]|0;if((b|0)!=(c[a+328>>2]|0))return 0;if((c[d+128>>2]|0)==(b|0))return (c[d+216>>2]|0)==(b|0)|0;else return 0;return 0}function hu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=b+4|0;t=Jb[c[c[s>>2]>>2]&63](b,1,88)|0;r=b+484|0;c[r>>2]=t;c[t>>2]=48;c[t+8>>2]=120;c[t+12>>2]=121;c[t+68>>2]=0;c[t+52>>2]=0;t=b+120|0;if((c[t>>2]|0)>4){n=c[b>>2]|0;c[n+20>>2]=57;c[n+24>>2]=4;Sb[c[c[b>>2]>>2]&255](b)}d=b+96|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Sb[c[c[b>>2]>>2]&255](b);e=c[d>>2]|0}n=c[r>>2]|0;l=n+32|0;k=c[t>>2]|0;if((k|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=B(d,g)|0;f=f+1|0}while((f|0)!=(k|0));if((d|0)>(e|0)){f=h;break}else h=g}}else{f=(e|0)>1?e:1;d=f+1|0}if(f>>>0<2){j=c[b>>2]|0;c[j+20>>2]=58;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}a:do if((k|0)>0){h=1;d=0;do{c[n+32+(d<<2)>>2]=f;h=B(h,f)|0;d=d+1|0}while((d|0)!=(k|0));if((c[b+44>>2]|0)==2){g=0;d=0;f=h;while(1){h=n+32+(c[15924+(d<<2)>>2]<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=22}}else{d=g;m=22}if((m|0)==22){m=0;if(!d)break a;else{g=0;d=0}}}}else{g=0;d=0;f=h;while(1){h=n+32+(d<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=26}}else{d=g;m=26}if((m|0)==26){m=0;if(!d)break a;else{g=0;d=0}}}}}else f=1;while(0);d=c[b>>2]|0;if((c[t>>2]|0)==3){c[d+24>>2]=f;c[d+28>>2]=c[l>>2];c[d+32>>2]=c[n+36>>2];c[d+36>>2]=c[n+40>>2];c[d+20>>2]=96;Ub[c[d+4>>2]&63](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1)}m=Kb[c[(c[s>>2]|0)+8>>2]&15](b,1,f,c[t>>2]|0)|0;d=c[t>>2]|0;if((d|0)>0){k=0;l=f;do{j=c[n+32+(k<<2)>>2]|0;i=l;l=(l|0)/(j|0)|0;if((j|0)>0?(o=j+-1|0,p=(o|0)/2|0,q=m+(k<<2)|0,(l|0)>0):0){g=0;do{d=B(g,l)|0;if((d|0)<(f|0)){h=(((g*255|0)+p|0)/(o|0)|0)&255;do{e=0;do{a[(c[q>>2]|0)+(e+d)>>0]=h;e=e+1|0}while((e|0)!=(l|0));d=d+i|0}while((d|0)<(f|0))}g=g+1|0}while((g|0)!=(j|0));d=c[t>>2]|0}k=k+1|0}while((k|0)<(d|0))}c[n+16>>2]=m;c[n+20>>2]=f;rw(b);if((c[b+88>>2]|0)!=2)return;e=c[r>>2]|0;f=(c[b+112>>2]<<1)+4|0;if((c[t>>2]|0)<=0)return;d=0;do{r=Jb[c[(c[s>>2]|0)+4>>2]&63](b,1,f)|0;c[e+68+(d<<2)>>2]=r;d=d+1|0}while((d|0)<(c[t>>2]|0));return}function iu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;e=Jb[c[c[f>>2]>>2]&63](a,1,44)|0;c[a+484>>2]=e;c[e>>2]=49;c[e+12>>2]=122;g=e+32|0;c[g>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){d=c[a>>2]|0;c[d+20>>2]=48;Sb[c[d>>2]&255](a)}b=Jb[c[c[f>>2]>>2]&63](a,1,128)|0;d=e+24|0;c[d>>2]=b;b=0;do{h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,4096)|0;c[(c[d>>2]|0)+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=32);c[e+28>>2]=1;if(!(c[a+108>>2]|0))c[e+16>>2]=0;else{b=c[a+96>>2]|0;if((b|0)>=8){if((b|0)>256){h=c[a>>2]|0;c[h+20>>2]=59;c[h+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{h=c[a>>2]|0;c[h+20>>2]=58;c[h+24>>2]=8;Sb[c[c[a>>2]>>2]&255](a)}h=Kb[c[(c[f>>2]|0)+8>>2]&15](a,1,b,3)|0;c[e+16>>2]=h;c[e+20>>2]=b}b=a+88|0;if(!(c[b>>2]|0))return;c[b>>2]=2;h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,((c[a+112>>2]|0)*6|0)+12|0)|0;c[g>>2]=h;gw(a);return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+4|0;b=Jb[c[c[g>>2]>>2]&63](a,1,48)|0;f=a+476|0;c[f>>2]=b;c[b>>2]=123;c[b+8>>2]=0;d=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[b+40>>2]=d;e=b+4|0;if((c[a+320>>2]|0)==2){c[e>>2]=1;c[b+12>>2]=9;e=Jb[c[(c[g>>2]|0)+4>>2]&63](a,1,d)|0;c[b+32>>2]=e;b=c[f>>2]|0}else{c[e>>2]=2;c[b+12>>2]=10;c[b+32>>2]=0}d=(c[a+40>>2]|0)==7;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;e=b+16|0;c[e>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;f=b+20|0;c[f>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;h=b+24|0;c[h>>2]=i;g=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;c[b+28>>2]=g;e=c[e>>2]|0;f=c[f>>2]|0;a=c[h>>2]|0;if(d){b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*183763|0)+32768>>16;c[f+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[a+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}else{b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*91881|0)+32768>>16;c[f+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[a+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}}function ku(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;e=Jb[c[c[b>>2]>>2]&63](a,1,28)|0;g=a+480|0;c[g>>2]=e;c[e>>2]=124;h=a+40|0;switch(c[h>>2]|0){case 1:{if((c[a+36>>2]|0)!=1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 7:case 6:case 3:case 2:{if((c[a+36>>2]|0)!=3){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 5:case 4:{if((c[a+36>>2]|0)!=4){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}default:if((c[a+36>>2]|0)<1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}}d=a+304|0;a:do if(c[d>>2]|0){switch(c[h>>2]|0){case 6:case 2:break a;default:{}}f=c[a>>2]|0;c[f+20>>2]=28;Sb[c[f>>2]&255](a)}while(0);f=c[a+44>>2]|0;b:do switch(f|0){case 1:{c[a+120>>2]=1;switch(c[h>>2]|0){case 7:case 3:case 1:{c[e+4>>2]=4;d=c[a+36>>2]|0;if((d|0)<=1)break b;e=c[a+216>>2]|0;b=1;do{c[e+(b*88|0)+52>>2]=0;b=b+1|0}while((b|0)<(d|0));break}case 2:{switch(c[d>>2]|0){case 0:{c[e+4>>2]=5;break}case 1:{c[e+4>>2]=6;break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a)}}h=c[g>>2]|0;d=Jb[c[c[b>>2]>>2]&63](a,1,3072)|0;c[h+24>>2]=d;b=0;do{c[d+(b<<2)>>2]=b*19595;c[d+(b+256<<2)>>2]=b*38470;c[d+(b+512<<2)>>2]=(b*7471|0)+32768;b=b+1|0}while((b|0)!=256);break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a);break b}}break}case 2:{c[a+120>>2]=3;switch(c[h>>2]|0){case 1:{c[e+4>>2]=7;break b}case 3:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 7:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*183763|0)+32768>>16;c[g+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[h+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 2:switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}case 6:{c[a+120>>2]=3;if((c[h>>2]|0)!=6){i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}}case 4:{c[a+120>>2]=4;switch(c[h>>2]|0){case 5:{c[e+4>>2]=11;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 4:{c[e+4>>2]=12;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}default:if((f|0)==(c[h>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=12;break b}else{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}while(0);if(c[a+84>>2]|0){h=1;i=a+124|0;c[i>>2]=h;return}h=c[a+120>>2]|0;i=a+124|0;c[i>>2]=h;return}function lu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=b+4|0;d=Jb[c[c[m>>2]>>2]&63](b,1,160)|0;c[b+476>>2]=d;c[d>>2]=125;c[d+4>>2]=3;c[d+8>>2]=0;if(c[b+308>>2]|0){w=c[b>>2]|0;c[w+20>>2]=26;Sb[c[w>>2]&255](b)}n=b+36|0;if((c[n>>2]|0)<=0)return;o=b+324|0;p=b+328|0;q=b+316|0;r=b+320|0;s=d+100|0;t=d+52|0;u=b+112|0;v=d+12|0;w=d+140|0;h=d+150|0;f=c[b+216>>2]|0;g=0;while(1){i=B(c[f+36>>2]|0,c[f+8>>2]|0)|0;i=(i|0)/(c[o>>2]|0)|0;j=B(c[f+40>>2]|0,c[f+12>>2]|0)|0;j=(j|0)/(c[p>>2]|0)|0;k=c[q>>2]|0;l=c[r>>2]|0;c[s+(g<<2)>>2]=j;do if(!(c[f+52>>2]|0))c[t+(g<<2)>>2]=11;else{d=(j|0)==(l|0);if((i|0)==(k|0)&d){c[t+(g<<2)>>2]=12;break}e=(i<<1|0)==(k|0);do if(e&d)c[t+(g<<2)>>2]=13;else{if(e&(j<<1|0)==(l|0)){c[t+(g<<2)>>2]=14;break}d=(k|0)/(i|0)|0;if((k-(B(d,i)|0)|0)==0?(x=(l|0)/(j|0)|0,(l-(B(x,j)|0)|0)==0):0){c[t+(g<<2)>>2]=15;a[w+g>>0]=d;a[h+g>>0]=x;break}l=c[b>>2]|0;c[l+20>>2]=39;Sb[c[l>>2]&255](b)}while(0);k=c[(c[m>>2]|0)+8>>2]|0;l=yu(c[u>>2]|0,c[q>>2]|0)|0;l=Kb[k&15](b,1,l,c[r>>2]|0)|0;c[v+(g<<2)>>2]=l}while(0);g=g+1|0;if((g|0)>=(c[n>>2]|0))break;else f=f+88|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,1,28)|0;c[a+456>>2]=d;c[d>>2]=50;h=d+8|0;c[h>>2]=0;i=d+12|0;c[i>>2]=0;if(!(c[a+84>>2]|0))return;g=c[a+320>>2]|0;e=d+16|0;c[e>>2]=g;d=c[f>>2]|0;if(!b){h=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=Kb[c[d+8>>2]&15](a,1,h,g)|0;c[i>>2]=h;return}else{f=c[d+16>>2]|0;b=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;i=yu(c[a+116>>2]|0,g)|0;i=Ob[f&63](a,1,0,b,i,c[e>>2]|0)|0;c[h>>2]=i;return}}function nu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Jb[c[c[f>>2]>>2]&63](a,1,84)|0;c[a+472>>2]=b;c[b>>2]=126;g=a+36|0;if((c[g>>2]|0)<=0)return;e=b+44|0;b=0;d=c[a+216>>2]|0;while(1){h=Jb[c[c[f>>2]>>2]&63](a,1,256)|0;c[d+84>>2]=h;aP(h|0,0,256)|0;c[e+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;else d=d+88|0}return}function ou(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+4|0;e=Jb[c[c[g>>2]>>2]&63](b,1,192)|0;c[b+468>>2]=e;c[e>>2]=127;c[e+8>>2]=128;d=e+188|0;e=e+60|0;f=e+128|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[d>>0]=113;if(!(c[b+224>>2]|0))return;f=b+36|0;e=Jb[c[c[g>>2]>>2]&63](b,1,c[f>>2]<<8)|0;c[b+160>>2]=e;if((c[f>>2]|0)<=0)return;d=0;do{aP(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;f=Jb[c[c[b>>2]>>2]&63](a,1,220)|0;c[a+468>>2]=f;c[f>>2]=129;c[f+8>>2]=130;if(!(c[a+224>>2]|0)){e=f+68|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[f+88>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;return}e=a+36|0;d=Jb[c[c[b>>2]>>2]&63](a,1,c[e>>2]<<8)|0;c[a+160>>2]=d;if((c[e>>2]|0)>0){b=0;do{aP(d+(b<<8)|0,-1,256)|0;b=b+1|0}while((b|0)<(c[e>>2]|0))}f=f+48|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;return}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=a+4|0;i=Jb[c[c[h>>2]>>2]&63](a,1,116)|0;c[a+452>>2]=i;c[i>>2]=131;c[i+8>>2]=132;c[i+112>>2]=0;if(!b){b=Jb[c[(c[h>>2]|0)+4>>2]&63](a,1,1280)|0;c[i+32>>2]=b;c[i+36>>2]=b+128;c[i+40>>2]=b+256;c[i+44>>2]=b+384;c[i+48>>2]=b+512;c[i+52>>2]=b+640;c[i+56>>2]=b+768;c[i+60>>2]=b+896;c[i+64>>2]=b+1024;c[i+68>>2]=b+1152;if(!(c[a+436>>2]|0))aP(b|0,0,1280)|0;c[i+4>>2]=89;c[i+12>>2]=35;c[i+16>>2]=0;return}f=a+36|0;if((c[f>>2]|0)>0){g=a+224|0;b=i+72|0;d=0;e=c[a+216>>2]|0;while(1){k=e+12|0;j=c[k>>2]|0;j=(c[g>>2]|0)==0?j:j*3|0;m=c[(c[h>>2]|0)+20>>2]|0;l=yu(c[e+28>>2]|0,c[e+8>>2]|0)|0;k=yu(c[e+32>>2]|0,c[k>>2]|0)|0;j=Ob[m&63](a,1,1,l,k,j)|0;c[b+(d<<2)>>2]=j;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}}else b=i+72|0;c[i+4>>2]=88;c[i+12>>2]=34;c[i+16>>2]=b;return}function ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;j=Jb[c[c[l>>2]>>2]&63](a,1,80)|0;d=a+448|0;c[d>>2]=j;c[j>>2]=51;if(b|0){k=c[a>>2]|0;c[k+20>>2]=3;Sb[c[k>>2]&255](a)}k=a+328|0;e=c[k>>2]|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[j+52>>2]=e;b=a+36|0;h=e;g=b;b=c[b>>2]|0;d=e}else{if((e|0)<2){e=c[a>>2]|0;c[e+20>>2]=48;Sb[c[e>>2]&255](a);e=c[k>>2]|0}h=c[d>>2]|0;i=a+36|0;f=Jb[c[c[l>>2]>>2]&63](a,1,c[i>>2]<<3)|0;g=h+60|0;c[g>>2]=f;b=c[i>>2]|0;h=h+64|0;c[h>>2]=f+(b<<2);if((b|0)>0){f=e+4|0;d=c[a+216>>2]|0;e=0;while(1){m=B(c[d+40>>2]|0,c[d+12>>2]|0)|0;m=(m|0)/(c[k>>2]|0)|0;b=B(m,f)|0;m=(Jb[c[c[l>>2]>>2]&63](a,1,b<<3)|0)+(m<<2)|0;c[(c[g>>2]|0)+(e<<2)>>2]=m;c[(c[h>>2]|0)+(e<<2)>>2]=m+(b<<2);e=e+1|0;b=c[i>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}d=c[k>>2]|0;h=d+2|0;g=i}if((b|0)<=0)return;f=j+8|0;b=0;e=c[a+216>>2]|0;while(1){m=(B(c[e+40>>2]|0,c[e+12>>2]|0)|0)/(d|0)|0;j=B(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=B(m,h)|0;m=Kb[c[(c[l>>2]|0)+8>>2]&15](a,1,j,m)|0;c[f+(b<<2)>>2]=m;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;e=e+88|0;d=c[k>>2]|0}return}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=c[a+448>>2]|0;switch(b|0){case 0:{b=r+4|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[b>>2]=17;c[r+48>>2]=c[r+52>>2];return}c[b>>2]=16;l=c[a+328>>2]|0;m=c[a+36>>2]|0;if((m|0)>0){n=r+60|0;o=r+64|0;p=l+2|0;q=l+-2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(l|0)|0;k=c[(c[n>>2]|0)+(i<<2)>>2]|0;f=c[(c[o>>2]|0)+(i<<2)>>2]|0;g=c[r+8+(i<<2)>>2]|0;a=B(j,p)|0;if((a|0)>0){b=0;do{e=c[g+(b<<2)>>2]|0;c[f+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(a|0))}a=j<<1;if((j|0)>0){d=B(j,l)|0;e=B(j,q)|0;b=0;do{s=b+d|0;t=b+e|0;c[f+(t<<2)>>2]=c[g+(s<<2)>>2];c[f+(s<<2)>>2]=c[g+(t<<2)>>2];b=b+1|0}while((b|0)<(a|0));b=0;do{c[k+(b-j<<2)>>2]=c[k>>2];b=b+1|0}while((b|0)!=(j|0))}i=i+1|0;if((i|0)==(m|0))break;else h=h+88|0}}c[r+68>>2]=0;c[r+72>>2]=0;c[r+76>>2]=0;c[r+56>>2]=0;return}case 2:{c[r+4>>2]=18;return}default:{t=c[a>>2]|0;c[t+20>>2]=3;Sb[c[t>>2]&255](a);return}}}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=a+448|0;w=c[v>>2]|0;y=w+56|0;do if(!(c[y>>2]|0))if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,c[w+60+(c[w+68>>2]<<2)>>2]|0)|0))return;else{c[y>>2]=1;x=w+76|0;c[x>>2]=(c[x>>2]|0)+1;break}while(0);x=w+72|0;switch(c[x>>2]|0){case 2:{f=w+48|0;g=w+52|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[w+68>>2]<<2)>>2]|0,f,c[g>>2]|0,b,d,e);if((c[f>>2]|0)>>>0<(c[g>>2]|0)>>>0)return;c[x>>2]=0;if((c[d>>2]|0)>>>0>>0)h=9;else return;break}case 0:{f=w+48|0;g=w+52|0;h=9;break}case 1:{u=w+48|0;t=w+52|0;break}default:return}if((h|0)==9){c[f>>2]=0;p=c[a+328>>2]|0;c[g>>2]=p+-1;if((c[w+76>>2]|0)==(c[a+332>>2]|0)?(i=c[v>>2]|0,r=c[a+36>>2]|0,(r|0)>0):0){q=i+52|0;l=i+60+(c[i+68>>2]<<2)|0;j=c[a+216>>2]|0;k=0;while(1){u=B(c[j+40>>2]|0,c[j+12>>2]|0)|0;h=(u|0)/(p|0)|0;o=((c[j+48>>2]|0)>>>0)%(u>>>0)|0;o=(o|0)==0?u:o;if(!k)c[q>>2]=((o+-1|0)/(h|0)|0)+1;m=c[(c[l>>2]|0)+(k<<2)>>2]|0;n=h<<1;if((h|0)>0){i=m+(o+-1<<2)|0;h=0;do{c[m+(h+o<<2)>>2]=c[i>>2];h=h+1|0}while((h|0)<(n|0))}k=k+1|0;if((k|0)==(r|0))break;else j=j+88|0}}c[x>>2]=1;u=f;t=g}s=w+68|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[s>>2]<<2)>>2]|0,u,c[t>>2]|0,b,d,e);if((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)return;if((c[w+76>>2]|0)==1){g=c[v>>2]|0;f=c[a+328>>2]|0;r=c[a+36>>2]|0;if((r|0)>0){b=g+60|0;o=g+64|0;p=f+1|0;q=f+2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(f|0)|0;k=c[(c[b>>2]|0)+(i<<2)>>2]|0;l=c[(c[o>>2]|0)+(i<<2)>>2]|0;if((j|0)>0){m=B(j,p)|0;n=B(j,q)|0;g=0;do{w=g+m|0;a=g-j|0;c[k+(a<<2)>>2]=c[k+(w<<2)>>2];c[l+(a<<2)>>2]=c[l+(w<<2)>>2];a=g+n|0;c[k+(a<<2)>>2]=c[k+(g<<2)>>2];c[l+(a<<2)>>2]=c[l+(g<<2)>>2];g=g+1|0}while((g|0)!=(j|0))}i=i+1|0;if((i|0)==(r|0))break;else h=h+88|0}}}else f=c[a+328>>2]|0;c[s>>2]=c[s>>2]^1;c[y>>2]=0;c[u>>2]=f+1;c[t>>2]=f+2;c[x>>2]=2;return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[a+448>>2]|0;i=f+48|0;h=f+52|0;g=c[h>>2]|0;do if((c[i>>2]|0)>>>0>=g>>>0){f=f+8|0;if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,f)|0))return;else{c[i>>2]=0;g=c[h>>2]|0;break}}else f=f+8|0;while(0);_b[c[(c[a+456>>2]|0)+4>>2]&7](a,f,i,g,b,d,e);return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,0,0,0,b,d,e);return}function wu(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+452>>2]|0;if((c[a+340>>2]|0)>1)a=1;else{d=c[a+344>>2]|0;a=c[((c[a+332>>2]|0)==1?d+76|0:d+12|0)>>2]|0}c[b+28>>2]=a;c[b+20>>2]=0;c[b+24>>2]=0;return}function xu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[a+452>>2]|0;if(!(c[k+16>>2]|0)){l=a+156|0;c[l>>2]=0;return}a:do if(((c[a+80>>2]|0)!=0?(c[a+224>>2]|0)!=0:0)?(j=a+160|0,(c[j>>2]|0)!=0):0){d=k+112|0;e=c[d>>2]|0;if(!e){i=a+36|0;e=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[d>>2]=e}else i=a+36|0;if((c[i>>2]|0)>0){f=0;g=c[a+216>>2]|0;h=0;while(1){d=c[g+80>>2]|0;if(!d){l=20;break a}if(!(b[d>>1]|0)){l=20;break a}if(!(b[d+2>>1]|0)){l=20;break a}if(!(b[d+16>>1]|0)){l=20;break a}if(!(b[d+32>>1]|0)){l=20;break a}if(!(b[d+18>>1]|0)){l=20;break a}if(!(b[d+4>>1]|0)){l=20;break a}d=c[j>>2]|0;if((c[d+(h<<8)>>2]|0)<0){l=20;break a}m=d+(h<<8)+4|0;c[e+4>>2]=c[m>>2];m=c[m>>2]|0;n=d+(h<<8)+8|0;c[e+8>>2]=c[n>>2];m=c[n>>2]|m;n=d+(h<<8)+12|0;c[e+12>>2]=c[n>>2];n=m|c[n>>2];m=d+(h<<8)+16|0;c[e+16>>2]=c[m>>2];m=n|c[m>>2];d=d+(h<<8)+20|0;c[e+20>>2]=c[d>>2];f=(m|c[d>>2]|0)==0?f:1;h=h+1|0;if((h|0)>=(c[i>>2]|0))break;else{g=g+88|0;e=e+24|0}}if(f)d=36;else l=20}else l=20}else l=20;while(0);if((l|0)==20)d=34;c[k+12>>2]=d;n=a+156|0;c[n>>2]=0;return}function yu(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;u=z;x=a+452|0;v=c[x>>2]|0;y=a+340|0;if((c[y>>2]|0)>0){d=a+4|0;e=a+148|0;b=0;do{r=c[a+344+(b<<2)>>2]|0;t=c[r+12>>2]|0;s=B(t,c[e>>2]|0)|0;t=Mb[c[(c[d>>2]|0)+32>>2]&31](a,c[v+72+(c[r+4>>2]<<2)>>2]|0,s,t,1)|0;c[u+(b<<2)>>2]=t;b=b+1|0}while((b|0)<(c[y>>2]|0))}o=v+24|0;b=c[o>>2]|0;p=v+28|0;f=c[p>>2]|0;a:do if((b|0)<(f|0)){q=v+20|0;r=a+360|0;s=a+468|0;t=v+32|0;d=c[q>>2]|0;e=c[r>>2]|0;b:while(1){if(d>>>0>>0){do{n=c[y>>2]|0;if((n|0)>0){e=0;m=0;do{l=c[a+344+(m<<2)>>2]|0;j=c[l+56>>2]|0;k=B(j,d)|0;l=c[l+60>>2]|0;if((l|0)>0?(w=c[u+(m<<2)>>2]|0,(j|0)>0):0){i=0;do{f=0;g=(c[w+(i+b<<2)>>2]|0)+(k<<7)|0;h=e;while(1){c[v+32+(h<<2)>>2]=g;f=f+1|0;if((f|0)==(j|0))break;else{g=g+128|0;h=h+1|0}}e=j+e|0;i=i+1|0}while((i|0)<(l|0))}m=m+1|0}while((m|0)<(n|0))}if(!(Ib[c[(c[s>>2]|0)+4>>2]&63](a,t)|0))break b;d=d+1|0;e=c[r>>2]|0}while(d>>>0>>0);f=c[p>>2]|0}c[q>>2]=0;b=b+1|0;if((b|0)<(f|0))d=0;else break a}c[o>>2]=b;c[q>>2]=d;y=0;zb=z;return y|0}while(0);d=a+148|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;d=c[a+332>>2]|0;if(b>>>0>=d>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);y=4;zb=z;return y|0}e=c[x>>2]|0;if((c[y>>2]|0)>1)b=1;else{y=c[a+344>>2]|0;b=c[(b>>>0<(d+-1|0)>>>0?y+12|0:y+76|0)>>2]|0}c[e+28>>2]=b;c[e+20>>2]=0;c[e+24>>2]=0;y=3;zb=z;return y|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=c[a+452>>2]|0;w=a+332|0;x=(c[w>>2]|0)+-1|0;g=a+144|0;h=a+152|0;i=a+460|0;d=a+148|0;u=a+156|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[d>>2]|0)>>>0>(c[u>>2]|0)>>>0)break}if(!(Gb[c[c[i>>2]>>2]&127](a)|0)){d=0;j=20;break}}if((j|0)==20)return d|0;q=a+36|0;if((c[q>>2]|0)>0){r=a+4|0;s=a+472|0;o=c[a+216>>2]|0;p=0;while(1){if(c[o+52>>2]|0){d=o+12|0;t=c[d>>2]|0;n=B(t,c[u>>2]|0)|0;t=Mb[c[(c[r>>2]|0)+32>>2]&31](a,c[v+72+(p<<2)>>2]|0,n,t,0)|0;if((c[u>>2]|0)>>>0>>0)i=c[d>>2]|0;else{n=c[d>>2]|0;i=((c[o+32>>2]|0)>>>0)%(n>>>0)|0;i=(i|0)==0?n:i}k=c[(c[s>>2]|0)+4+(p<<2)>>2]|0;if((i|0)>0){l=o+28|0;m=o+40|0;n=o+36|0;h=c[b+(p<<2)>>2]|0;j=0;d=c[l>>2]|0;while(1){if(!d)d=0;else{e=0;f=c[t+(j<<2)>>2]|0;g=0;while(1){Yb[k&63](a,o,f,h,e);g=g+1|0;d=c[l>>2]|0;if(g>>>0>=d>>>0)break;else{e=(c[n>>2]|0)+e|0;f=f+128|0}}}j=j+1|0;if((j|0)==(i|0))break;else h=h+(c[m>>2]<<2)|0}}}p=p+1|0;if((p|0)>=(c[q>>2]|0))break;else o=o+88|0}}x=(c[u>>2]|0)+1|0;c[u>>2]=x;x=x>>>0<(c[w>>2]|0)>>>0?3:4;return x|0}function Bu(a){a=a|0;return 0}function Cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+452|0;I=c[N>>2]|0;J=(c[a+360>>2]|0)+-1|0;M=a+332|0;f=c[M>>2]|0;K=f+-1|0;G=I+24|0;d=c[G>>2]|0;H=I+28|0;g=c[H>>2]|0;do if((d|0)<(g|0)){y=I+20|0;z=a+436|0;A=a+468|0;C=I+32|0;D=a+368|0;E=a+340|0;F=a+472|0;e=a+148|0;x=d;f=g;d=c[y>>2]|0;a:while(1){if(d>>>0<=J>>>0){do{if(c[z>>2]|0)aP(c[C>>2]|0,0,c[D>>2]<<7|0)|0;if(!(Ib[c[(c[A>>2]|0)+4>>2]&63](a,C)|0))break a;f=c[E>>2]|0;if((f|0)>0){w=d>>>0>>0;g=0;v=0;do{m=c[a+344+(v<<2)>>2]|0;b:do if(c[m+52>>2]|0){h=c[m+4>>2]|0;n=c[(c[F>>2]|0)+4+(h<<2)>>2]|0;o=m+56|0;p=c[(w?o:m+72|0)>>2]|0;q=m+40|0;i=c[q>>2]|0;r=B(c[m+68>>2]|0,d)|0;s=m+60|0;l=c[s>>2]|0;if((l|0)>0){t=m+76|0;u=m+36|0;if((p|0)<=0){i=c[o>>2]|0;h=0;while(1){g=i+g|0;h=h+1|0;if((h|0)>=(l|0))break b}}j=(c[b+(h<<2)>>2]|0)+((B(i,x)|0)<<2)|0;k=0;h=l;f=i;while(1){if(!((c[e>>2]|0)>>>0>=K>>>0?(k+x|0)>=(c[t>>2]|0):0)){f=r;h=0;while(1){Yb[n&63](a,m,c[I+32+(h+g<<2)>>2]|0,j,f);h=h+1|0;if((h|0)==(p|0))break;else f=(c[u>>2]|0)+f|0}f=c[q>>2]|0;h=c[s>>2]|0}g=(c[o>>2]|0)+g|0;k=k+1|0;if((k|0)>=(h|0))break;else j=j+(f<<2)|0}f=c[E>>2]|0}}else g=(c[m+64>>2]|0)+g|0;while(0);v=v+1|0}while((v|0)<(f|0))}d=d+1|0}while(d>>>0<=J>>>0);f=c[H>>2]|0}c[y>>2]=0;d=x+1|0;if((d|0)<(f|0)){x=d;d=0}else{L=30;break}}if((L|0)==30){f=c[M>>2]|0;break}c[G>>2]=x;c[y>>2]=d;a=0;return a|0}else e=a+148|0;while(0);d=a+156|0;c[d>>2]=(c[d>>2]|0)+1;d=(c[e>>2]|0)+1|0;c[e>>2]=d;if(d>>>0>=f>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);a=4;return a|0}e=c[N>>2]|0;if((c[a+340>>2]|0)>1)d=1;else{a=c[a+344>>2]|0;d=c[(d>>>0<(f+-1|0)>>>0?a+12|0:a+76|0)>>2]|0}c[e+28>>2]=d;c[e+20>>2]=0;c[e+24>>2]=0;a=3;return a|0}function Du(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;oa=zb;zb=zb+128|0;ka=oa;la=c[a+452>>2]|0;na=a+332|0;ma=(c[na>>2]|0)+-1|0;n=a+144|0;f=c[n>>2]|0;i=a+152|0;g=c[i>>2]|0;a:do if((f|0)<=(g|0)){j=a+460|0;k=a+412|0;l=a+148|0;m=a+156|0;while(1){h=c[j>>2]|0;if(c[h+20>>2]|0)break a;if((f|0)==(g|0)?(c[l>>2]|0)>>>0>((c[m>>2]|0)+((c[k>>2]|0)==0&1)|0)>>>0:0)break a;if(!(Gb[c[h>>2]&127](a)|0)){f=0;break}f=c[n>>2]|0;g=c[i>>2]|0;if((f|0)>(g|0))break a}zb=oa;return f|0}while(0);ba=a+36|0;if((c[ba>>2]|0)>0){f=a+156|0;ca=a+4|0;da=la+112|0;ea=a+472|0;fa=ka+2|0;ga=ka+16|0;ha=ka+32|0;ia=ka+18|0;ja=ka+4|0;_=0;$=c[a+216>>2]|0;while(1){if(c[$+52>>2]|0){h=c[f>>2]|0;if(h>>>0>>0){i=c[$+12>>2]|0;g=i<<1;j=0;aa=i}else{i=c[$+12>>2]|0;aa=((c[$+32>>2]|0)>>>0)%(i>>>0)|0;aa=(aa|0)==0?i:aa;g=aa;j=1}if(!h){Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,0,g,0)|0;g=1}else{Y=B(i,h+-1|0)|0;Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,Y,i+g|0,0)|0;Y=Y+(c[$+12>>2]<<2)|0;g=0}i=(c[da>>2]|0)+(_*6<<2)|0;o=c[$+80>>2]|0;l=e[o>>1]|0;h=e[o+2>>1]|0;k=e[o+16>>1]|0;m=e[o+32>>1]|0;n=e[o+18>>1]|0;o=e[o+4>>1]|0;Z=c[(c[ea>>2]|0)+4+(_<<2)>>2]|0;if((aa|0)>0){X=(g|0)!=0;N=(j|0)!=0;O=aa+-1|0;P=$+28|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=l*36|0;U=h<<7;V=i+16|0;W=k<<7;M=h<<8;J=i+20|0;K=l*9|0;L=m<<7;H=k<<8;I=$+36|0;F=l*5|0;G=n<<7;D=m<<8;E=o<<7;C=n<<8;y=o<<8;z=$+40|0;w=0;x=c[d+(_<<2)>>2]|0;while(1){g=c[Y+(w<<2)>>2]|0;if(X&(w|0)==0)h=g;else h=c[Y+(w+-1<<2)>>2]|0;if(N&(w|0)==(O|0))i=g;else i=c[Y+(w+1<<2)>>2]|0;l=b[h>>1]|0;q=b[g>>1]|0;k=b[i>>1]|0;A=(c[P>>2]|0)+-1|0;s=k;t=q;u=l;v=0;r=0;p=i;while(1){Eu(g,ka,1);if(v>>>0>>0){m=b[p+128>>1]|0;n=b[g+128>>1]|0;o=b[h+128>>1]|0}else{m=s;n=t;o=u}i=c[Q>>2]|0;if((i|0)!=0&(b[fa>>1]|0)==0){j=B(T,q-n|0)|0;if((j|0)>-1){j=(j+U|0)/(M|0)|0;pa=1<0?((j|0)<(pa|0)?j:pa+-1|0):j}else{pa=(U-j|0)/(M|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[fa>>1]=i}i=c[R>>2]|0;if((i|0)!=0&(b[ga>>1]|0)==0){j=B(T,u-s|0)|0;if((j|0)>-1){pa=(j+W|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(W-j|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ga>>1]=i}i=c[S>>2]|0;if((i|0)!=0&(b[ha>>1]|0)==0){j=B(K,u-(t<<1)+s|0)|0;if((j|0)>-1){pa=(j+L|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(L-j|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ha>>1]=i}j=c[V>>2]|0;if((j|0)!=0&(b[ia>>1]|0)==0){i=B(F,l-k-o+m|0)|0;if((i|0)>-1){i=(i+G|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(G-i|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ia>>1]=i}j=c[J>>2]|0;if((j|0)!=0&(b[ja>>1]|0)==0){i=B(K,q-(t<<1)+n|0)|0;if((i|0)>-1){i=(i+E|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(E-i|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ja>>1]=i}Yb[Z&63](a,$,ka,x,r);v=v+1|0;if(v>>>0>A>>>0)break;else{l=u;q=t;k=s;s=m;t=n;u=o;g=g+128|0;r=(c[I>>2]|0)+r|0;h=h+128|0;p=p+128|0}}w=w+1|0;if((w|0)==(aa|0))break;else x=x+(c[z>>2]<<2)|0}}}_=_+1|0;if((_|0)>=(c[ba>>2]|0))break;else $=$+88|0}}else f=a+156|0;pa=(c[f>>2]|0)+1|0;c[f>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;zb=oa;return pa|0}function Eu(a,b,c){a=a|0;b=b|0;c=c|0;_O(b|0,a|0,c<<7|0)|0;return}function Fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[a+468>>2]|0;m=a+412|0;f=c[m>>2]|0;d=(f|0)==0;if(!(c[a+224>>2]|0)){if((d?(c[a+420>>2]|0)==0:0)?(c[a+424>>2]|0)==0:0){m=c[a+416>>2]|0;if((c[a+220>>2]|0)!=0|(m|0)<64?(m|0)!=(c[a+436>>2]|0):0)e=38}else e=38;if((e|0)==38){m=c[a>>2]|0;c[m+20>>2]=125;Ub[c[m+4>>2]&63](a,-1)}g=a+436|0;c[n+4>>2]=(c[g>>2]|0)==63?41:42;d=a+340|0;if((c[d>>2]|0)>0){b=0;do{e=c[a+344+(b<<2)>>2]|0;m=c[e+20>>2]|0;Lu(a,1,m,n+68+(m<<2)|0);if(c[g>>2]|0){m=c[e+24>>2]|0;Lu(a,0,m,n+84+(m<<2)|0)}c[n+24+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[d>>2]|0))}f=a+368|0;if((c[f>>2]|0)<=0){m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}e=0;do{b=c[a+344+(c[a+372+(e<<2)>>2]<<2)>>2]|0;c[n+100+(e<<2)>>2]=c[n+68+(c[b+20>>2]<<2)>>2];c[n+140+(e<<2)>>2]=c[n+84+(c[b+24>>2]<<2)>>2];a:do if(!(c[b+52>>2]|0))b=0;else{d=c[b+40>>2]|0;b=c[b+36>>2]|0;switch(c[g>>2]|0){case 0:{b=1;break a}case 3:{b=(c[4336+(((d|0)!=1&1)<<3)+(((b|0)!=1&1)<<2)>>2]|0)+1|0;break a}case 8:{m=d+-1|0;b=b+-1|0;b=(c[4352+((m>>>0<2?m:2)*12|0)+((b>>>0<2?b:2)<<2)>>2]|0)+1|0;break a}case 15:{m=d+-1|0;b=b+-1|0;b=(c[4400+((m>>>0<3?m:3)<<4)+((b>>>0<3?b:3)<<2)>>2]|0)+1|0;break a}case 24:{m=d+-1|0;b=b+-1|0;b=(c[4464+((m>>>0<4?m:4)*20|0)+((b>>>0<4?b:4)<<2)>>2]|0)+1|0;break a}case 35:{m=d+-1|0;b=b+-1|0;b=(c[4576+((m>>>0<5?m:5)*24|0)+((b>>>0<5?b:5)<<2)>>2]|0)+1|0;break a}case 48:{m=d+-1|0;b=b+-1|0;b=(c[4720+((m>>>0<6?m:6)*28|0)+((b>>>0<6?b:6)<<2)>>2]|0)+1|0;break a}default:{m=d+-1|0;b=b+-1|0;b=(c[4928+((m>>>0<7?m:7)<<5)+((b>>>0<7?b:7)<<2)>>2]|0)+1|0;break a}}}while(0);c[n+180+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[f>>2]|0));m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}k=a+416|0;b=c[k>>2]|0;if(d)if(!b)e=7;else e=11;else if(((b|0)>=(f|0)?(b|0)<=(c[a+436>>2]|0):0)?(c[a+340>>2]|0)==1:0)e=7;else e=11;do if((e|0)==7){b=c[a+420>>2]|0;if(b){b=b+-1|0;if((b|0)!=(c[a+424>>2]|0)){e=11;break}}else b=c[a+424>>2]|0;if((b|0)>13)e=11}while(0);if((e|0)==11){l=c[a>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[a>>2]|0)+28>>2]=c[k>>2];c[(c[a>>2]|0)+32>>2]=c[a+420>>2];c[(c[a>>2]|0)+36>>2]=c[a+424>>2];Sb[c[c[a>>2]>>2]&255](a)}l=a+340|0;b=c[l>>2]|0;if((b|0)>0){i=a+160|0;g=a+420|0;j=a+424|0;h=0;do{e=c[(c[a+344+(h<<2)>>2]|0)+4>>2]|0;f=c[i>>2]|0;b=c[m>>2]|0;if(b){if((c[f+(e<<8)>>2]|0)<0){b=c[a>>2]|0;c[b+20>>2]=118;c[b+24>>2]=e;c[(c[a>>2]|0)+28>>2]=0;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);b=c[m>>2]|0}}else b=0;if((b|0)<=(c[k>>2]|0))while(1){d=f+(e<<8)+(b<<2)|0;o=c[d>>2]|0;if((c[g>>2]|0)!=(((o|0)>0?o:0)|0)){o=c[a>>2]|0;c[o+20>>2]=118;c[o+24>>2]=e;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1)}c[d>>2]=c[j>>2];if((b|0)<(c[k>>2]|0))b=b+1|0;else break}h=h+1|0;b=c[l>>2]|0}while((h|0)<(b|0))}else g=a+420|0;e=c[m>>2]|0;o=(e|0)==0;c[n+4>>2]=(c[g>>2]|0)==0?(o?37:38):o?39:40;b:do if((b|0)>0){f=n+64|0;b=0;while(1){d=c[a+344+(b<<2)>>2]|0;if(!e){if(!(c[g>>2]|0)){o=c[d+20>>2]|0;Lu(a,1,o,n+48+(o<<2)|0)}}else{k=c[d+24>>2]|0;o=n+48+(k<<2)|0;Lu(a,0,k,o);c[f>>2]=c[o>>2]}c[n+24+(b<<2)>>2]=0;b=b+1|0;if((b|0)>=(c[l>>2]|0))break b;e=c[m>>2]|0}}while(0);c[n+20>>2]=0;o=n+16|0;c[o>>2]=0;o=n+12|0;c[o>>2]=0;o=n+40|0;c[o>>2]=0;a=a+280|0;a=c[a>>2]|0;o=n+44|0;c[o>>2]=a;return}function Gu(a){a=a|0;var b=0;b=(c[a+468>>2]|0)+16|0;a=(c[a+464>>2]|0)+24|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function Hu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;t=c[a+424>>2]|0;i=a+280|0;if(c[i>>2]|0?(g=z+44|0,(c[g>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}h=a+340|0;if((c[h>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[h>>2]|0))}c[z+20>>2]=0;c[g>>2]=c[i>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;r=a+24|0;h=c[r>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;s=x+4|0;c[s>>2]=f;u=z+12|0;i=c[u>>2]|0;v=z+16|0;j=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];q=a+368|0;do if((c[q>>2]|0)>0){o=x+8|0;p=x+12|0;l=0;while(1){m=c[e+(l<<2)>>2]|0;n=c[a+372+(l<<2)>>2]|0;h=c[z+48+(c[(c[a+344+(n<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((j|0)<8){if(!(Ou(x,i,j,0)|0)){f=0;k=28;break}i=c[o>>2]|0;j=c[p>>2]|0;if((j|0)<8){f=1;k=17}else k=15}else k=15;if((k|0)==15){k=0;f=i>>j+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;k=17}else{f=d[h+1168+f>>0]|0;j=j-g|0}}if((k|0)==17){f=Pu(x,i,j,h,f)|0;if((f|0)<0){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}if(!f)f=0;else{if((j|0)<(f|0)){if(!(Ou(x,i,j,f)|0)){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}j=j-f|0;k=c[5184+(f<<2)>>2]|0;h=i>>j&k;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:k)|0}k=y+4+(n<<2)|0;n=(c[k>>2]|0)+f|0;c[k>>2]=n;b[m>>1]=n<=(c[q>>2]|0)){k=25;break}}if((k|0)==25){h=c[r>>2]|0;g=c[x>>2]|0;f=c[s>>2]|0;break}else if((k|0)==28){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=i;c[v>>2]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;zb=A;return z|0}function Iu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+32|0;w=y;x=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=x+44|0,(c[i>>2]|0)==0):0){u=x+16|0;v=c[a+464>>2]|0;t=v+24|0;c[t>>2]=(c[t>>2]|0)+((c[u>>2]|0)/8|0);c[u>>2]=0;if(!(Gb[c[v+8>>2]&127](a)|0)){x=0;zb=y;return x|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[x+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[x+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[x+40>>2]=0}if(!(c[x+40>>2]|0)){v=x+20|0;f=c[v>>2]|0;if(!f){c[w+16>>2]=a;r=a+24|0;t=c[r>>2]|0;c[w>>2]=c[t>>2];s=w+4|0;c[s>>2]=c[t+4>>2];t=x+12|0;g=c[t>>2]|0;u=x+16|0;h=c[u>>2]|0;n=c[a+416>>2]|0;o=c[a+424>>2]|0;p=c[a+432>>2]|0;k=c[e>>2]|0;l=c[x+64>>2]|0;f=c[a+412>>2]|0;a:do if((f|0)<=(n|0)){q=w+8|0;m=w+12|0;j=f;b:while(1){if((h|0)<8){if(!(Ou(w,g,h,0)|0)){f=0;a=36;break}g=c[q>>2]|0;h=c[m>>2]|0;if((h|0)<8){f=1;a=19}else a=17}else a=17;if((a|0)==17){a=0;f=g>>h+-8&255;i=c[l+144+(f<<2)>>2]|0;if(!i){f=9;a=19}else{f=d[l+1168+f>>0]|0;h=h-i|0}}if((a|0)==19){f=Pu(w,g,h,l,f)|0;if((f|0)<0){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}e=f>>>4;i=f&15;if(!i){switch(e&268435455|0){case 0:{f=0;break a}case 15:break;default:{a=27;break b}}f=j+15|0}else{f=e+j|0;if((h|0)<(i|0)){if(!(Ou(w,g,h,i)|0)){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}h=h-i|0;j=c[5184+(i<<2)>>2]|0;a=g>>h&j;b[k+(c[p+(f<<2)>>2]<<1)>>1]=a-((a|0)>(c[5184+(i+-1<<2)>>2]|0)?0:j)<>2]|0;g=c[q>>2]|0;break}else f=h;while(0);h=f-e|0;f=i+-1+(g>>h&c[5184+(e<<2)>>2])|0;break}else if((a|0)==36){zb=y;return f|0}}else f=0;while(0);r=c[r>>2]|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[s>>2];c[t>>2]=g;c[u>>2]=h}else f=f+-1|0;c[v>>2]=f}x=x+44|0;c[x>>2]=(c[x>>2]|0)+-1;x=1;zb=y;return x|0}function Ju(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;q=s;r=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=r+44|0,(c[i>>2]|0)==0):0){o=r+16|0;p=c[a+464>>2]|0;n=p+24|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)/8|0);c[o>>2]=0;if(!(Gb[c[p+8>>2]&127](a)|0)){r=0;zb=s;return r|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[r+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[r+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[r+40>>2]=0}c[q+16>>2]=a;m=a+24|0;h=c[m>>2]|0;g=c[h>>2]|0;c[q>>2]=g;f=c[h+4>>2]|0;n=q+4|0;c[n>>2]=f;o=r+12|0;i=c[o>>2]|0;p=r+16|0;j=c[p>>2]|0;l=1<>2];k=a+368|0;do if((c[k>>2]|0)>0){h=q+8|0;a=q+12|0;g=0;f=j;while(1){if((f|0)<1){if(!(Ou(q,i,f,1)|0)){f=0;a=19;break}f=c[a>>2]|0;i=c[h>>2]|0}f=f+-1|0;if(1<>2]|0;b[j>>1]=l|(e[j>>1]|0)}g=g+1|0;if((g|0)>=(c[k>>2]|0)){a=17;break}}if((a|0)==17){j=f;h=c[m>>2]|0;g=c[q>>2]|0;f=c[n>>2]|0;break}else if((a|0)==19){zb=s;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[o>>2]=i;c[p>>2]=j;r=r+44|0;c[r>>2]=(c[r>>2]|0)+-1;r=1;zb=s;return r|0}function Ku(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+288|0;E=G+256|0;D=G;F=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=F+44|0,(c[i>>2]|0)==0):0){z=F+16|0;A=c[a+464>>2]|0;y=A+24|0;c[y>>2]=(c[y>>2]|0)+((c[z>>2]|0)/8|0);c[z>>2]=0;if(!(Gb[c[A+8>>2]&127](a)|0)){F=0;zb=G;return F|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[F+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[F+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[F+40>>2]=0}do if(!(c[F+40>>2]|0)){q=c[a+416>>2]|0;s=c[a+424>>2]|0;r=1<>2]|0;c[E+16>>2]=a;w=a+24|0;y=c[w>>2]|0;c[E>>2]=c[y>>2];x=E+4|0;c[x>>2]=c[y+4>>2];y=F+12|0;j=c[y>>2]|0;z=F+16|0;g=c[z>>2]|0;A=F+20|0;h=c[A>>2]|0;u=c[e>>2]|0;l=c[F+64>>2]|0;i=c[a+412>>2]|0;o=E+8|0;p=E+12|0;a:do if(!h){f=0;b:while(1){if((g|0)<8){if(!(Ou(E,j,g,0)|0))break a;j=c[o>>2]|0;g=c[p>>2]|0;if((g|0)<8){h=1;v=17}else v=15}else v=15;if((v|0)==15){v=0;h=j>>g+-8&255;e=c[l+144+(h<<2)>>2]|0;if(!e){h=9;v=17}else{h=d[l+1168+h>>0]|0;g=g-e|0}}if((v|0)==17){v=0;g=Pu(E,j,g,l,h)|0;if((g|0)<0)break a;h=g;g=c[p>>2]|0;j=c[o>>2]|0}e=h>>>4;switch(h&15){case 0:{if((e|0)==15)k=0;else break b;break}case 1:{v=21;break}default:{v=c[a>>2]|0;c[v+20>>2]=121;Ub[c[v+4>>2]&63](a,-1);v=21}}if((v|0)==21){v=0;if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;k=(1<>2]<<1)|0;do if(!(b[e>>1]|0))if((h|0)<1)break c;else h=h+-1|0;else{if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,n=m<<16>>16,(r&n|0)==0):0)if(m<<16>>16>-1){b[e>>1]=r+n;break}else{b[e>>1]=s+n;break}}while(0);e=i+1|0;if((i|0)<(q|0))i=e;else{i=e;break}}if(k){e=c[t+(i<<2)>>2]|0;b[u+(e<<1)>>1]=k;c[D+(f<<2)>>2]=e;f=f+1|0}if((i|0)<(q|0))i=i+1|0;else{h=0;f=j;v=58;break a}}h=1<>2]|0;j=c[o>>2]|0}g=g-e|0;h=(j>>g&c[5184+(e<<2)>>2])+h|0;if(!h){h=0;f=j;v=58}else v=46}else{h=1;v=46}}else{f=0;v=46}while(0);d:do if((v|0)==46){while(1){e=u+(c[t+(i<<2)>>2]<<1)|0;do if(b[e>>1]|0){if((g|0)<1){if(!(Ou(E,j,g,1)|0))break d;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,C=B<<16>>16,(r&C|0)==0):0)if(B<<16>>16>-1){b[e>>1]=r+C;break}else{b[e>>1]=s+C;break}}while(0);if((i|0)<(q|0))i=i+1|0;else break}h=h+-1|0;f=j;v=58}while(0);if((v|0)==58){D=c[w>>2]|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[x>>2];c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;break}if(!f){F=0;zb=G;return F|0}do{f=f+-1|0;b[u+(c[D+(f<<2)>>2]<<1)>>1]=0}while((f|0)!=0);f=0;zb=G;return f|0}while(0);F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;zb=G;return F|0}function Lu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+1312|0;k=q+1040|0;p=q;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}n=(e|0)!=0;o=c[(n?b+180+(f<<2)|0:b+196+(f<<2)|0)>>2]|0;if(!o){m=c[b>>2]|0;c[m+20>>2]=52;c[m+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}e=c[g>>2]|0;if(!e){l=Jb[c[c[b+4>>2]>>2]&63](b,1,1424)|0;c[g>>2]=l;m=b}else{m=b;l=e}c[l+140>>2]=o;j=a[o+1>>0]|0;e=j&255;if(!(j<<24>>24))e=0;else aP(k|0,1,e|0)|0;f=a[o+2>>0]|0;g=f&255;h=e+g|0;if(h>>>0>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,2,g|0)|0;e=h}f=a[o+3>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,3,g|0)|0;e=h}f=a[o+4>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,4,g|0)|0;e=h}f=a[o+5>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,5,g|0)|0;e=h}f=a[o+6>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,6,g|0)|0;e=h}f=a[o+7>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,7,g|0)|0;e=h}f=a[o+8>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,8,g|0)|0;e=h}f=a[o+9>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,9,g|0)|0;e=h}f=a[o+10>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,10,g|0)|0;e=h}f=a[o+11>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,11,g|0)|0;e=h}f=a[o+12>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,12,g|0)|0;e=h}f=a[o+13>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,13,g|0)|0;e=h}f=a[o+14>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,14,g|0)|0;e=h}f=a[o+15>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,15,g|0)|0;e=h}f=a[o+16>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(!(f<<24>>24))h=e;else aP(k+e|0,16,g|0)|0;a[k+h>>0]=0;f=a[k>>0]|0;if(f<<24>>24){g=0;j=f<<24>>24;e=0;while(1){if((j|0)==(f<<24>>24|0)){f=g;while(1){i=e+1|0;c[p+(e<<2)>>2]=f;e=f+1|0;f=a[k+i>>0]|0;if((j|0)==(f<<24>>24|0)){f=e;e=i}else{g=e;e=i;break}}}if((g|0)>=(1<>2]|0;c[i+20>>2]=9;Sb[c[i>>2]&255](m)}if(!(f<<24>>24))break;else{g=g<<1;j=j+1|0}}}e=o+1|0;if(!(a[e>>0]|0)){f=0;e=-1}else{c[l+76>>2]=0-(c[p>>2]|0);e=d[e>>0]|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+4>>2]=e;e=o+2|0;if(!(a[e>>0]|0))e=-1;else{c[l+80>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+8>>2]=e;e=o+3|0;if(!(a[e>>0]|0))e=-1;else{c[l+84>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+12>>2]=e;e=o+4|0;if(!(a[e>>0]|0))e=-1;else{c[l+88>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+16>>2]=e;e=o+5|0;if(!(a[e>>0]|0))e=-1;else{c[l+92>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+20>>2]=e;e=o+6|0;if(!(a[e>>0]|0))e=-1;else{c[l+96>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+24>>2]=e;e=o+7|0;if(!(a[e>>0]|0))e=-1;else{c[l+100>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+28>>2]=e;e=o+8|0;if(!(a[e>>0]|0))e=-1;else{c[l+104>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+32>>2]=e;e=o+9|0;if(!(a[e>>0]|0))e=-1;else{c[l+108>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+36>>2]=e;e=o+10|0;if(!(a[e>>0]|0))e=-1;else{c[l+112>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+40>>2]=e;e=o+11|0;if(!(a[e>>0]|0))e=-1;else{c[l+116>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+44>>2]=e;e=o+12|0;if(!(a[e>>0]|0))e=-1;else{c[l+120>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+48>>2]=e;e=o+13|0;if(!(a[e>>0]|0))e=-1;else{c[l+124>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+52>>2]=e;e=o+14|0;if(!(a[e>>0]|0))e=-1;else{c[l+128>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+56>>2]=e;e=o+15|0;if(!(a[e>>0]|0))e=-1;else{c[l+132>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+60>>2]=e;e=o+16|0;if(!(a[e>>0]|0))e=-1;else{c[l+136>>2]=f-(c[p+(f<<2)>>2]|0);e=c[p+(f+(d[e>>0]|0)+-1<<2)>>2]|0}c[l+64>>2]=e;c[l+68>>2]=1048575;aP(l+144|0,0,1024)|0;k=o+1|0;if(!(a[k>>0]|0))e=0;else{j=1;e=0;while(1){i=o+17+e|0;f=128;g=c[p+(e<<2)>>2]<<7;while(1){c[l+144+(g<<2)>>2]=1;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}k=o+2|0;if(a[k>>0]|0){j=1;while(1){i=o+17+e|0;f=64;g=c[p+(e<<2)>>2]<<6;while(1){c[l+144+(g<<2)>>2]=2;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}g=o+3|0;if(a[g>>0]|0){f=1;while(1){k=c[p+(e<<2)>>2]<<5;j=o+17+e|0;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;i=k|1;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=i+1|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|3;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+3|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|7;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+7|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|15;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+7|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+8|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+9|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+10|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+11|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+12|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+13|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+14|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+15|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;k=k|31;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+4|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<4;k=o+17+e|0;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|7;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+3|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+4|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+5|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+6|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+7|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;r=r|15;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+5|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<3;k=o+17+e|0;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;r=r|7;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+6|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<2;k=o+17+e|0;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;r=r|3;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+7|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<1;k=o+17+e|0;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;r=r|1;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+8|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]|0;c[l+144+(r<<2)>>2]=8;a[l+1168+r>>0]=a[o+17+e>>0]|0;if(f>>>0<(d[g>>0]|0)>>>0){f=f+1|0;e=e+1|0}else break}}if(!(n&(h|0)>0)){zb=q;return}e=0;do{if((d[o+17+e>>0]|0)>15){r=c[b>>2]|0;c[r+20>>2]=9;Sb[c[r>>2]&255](m)}e=e+1|0}while((e|0)!=(h|0));zb=q;return}function Mu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=z+44|0,(c[i>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[z+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;s=a+24|0;h=c[s>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;t=x+4|0;c[t>>2]=f;u=z+12|0;j=c[u>>2]|0;v=z+16|0;i=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];r=a+368|0;do if((c[r>>2]|0)>0){p=x+8|0;q=x+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[z+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(x,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[z+140+(o<<2)>>2]|0;k=c[z+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=48}else{f=1;m=48}else{if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=y+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(x,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;g=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(x,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;h=c[5184+(g<<2)>>2]|0;B=j>>i&h;b[l+(c[2064+(f<<2)>>2]<<1)>>1]=B-((B|0)>(c[5184+(g+-1<<2)>>2]|0)?0:h);g=f}f=g+1|0}while((f|0)<(k|0));if((g|0)<63)m=48}else{f=1;m=48}}while(0);c:do if((m|0)==48){h=f;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(x,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<64)}while(0);o=o+1|0;if((o|0)>=(c[r>>2]|0)){m=64;break}}if((m|0)==64){h=c[s>>2]|0;g=c[x>>2]|0;f=c[t>>2]|0;break}else if((m|0)==67){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=j;c[v>>2]=i;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}B=z+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=A;return B|0}function Nu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+48|0;z=C+20|0;A=C;B=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=B+44|0,(c[i>>2]|0)==0):0){x=B+16|0;y=c[a+464>>2]|0;w=y+24|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!(Gb[c[y+8>>2]&127](a)|0)){B=0;zb=C;return B|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[B+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[B+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[B+40>>2]=0}if(!(c[B+40>>2]|0)){r=c[a+432>>2]|0;s=c[a+436>>2]|0;c[z+16>>2]=a;u=a+24|0;h=c[u>>2]|0;g=c[h>>2]|0;c[z>>2]=g;f=c[h+4>>2]|0;v=z+4|0;c[v>>2]=f;w=B+12|0;j=c[w>>2]|0;x=B+16|0;i=c[x>>2]|0;y=B+20|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];t=a+368|0;do if((c[t>>2]|0)>0){p=z+8|0;q=z+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[B+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(z,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[B+140+(o<<2)>>2]|0;k=c[B+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=47}else{f=1;m=47}else{if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=A+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;while(1){if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(z,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;f=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(z,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;m=c[5184+(g<<2)>>2]|0;h=j>>i&m;b[l+(c[r+(f<<2)>>2]<<1)>>1]=h-((h|0)>(c[5184+(g+-1<<2)>>2]|0)?0:m)}f=f+1|0;if((f|0)>=(k|0)){m=47;break}}}else{f=1;m=47}}while(0);c:do if((m|0)==47)if((f|0)<=(s|0)){h=f;do{if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(z,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<=(s|0))}while(0);o=o+1|0;if((o|0)>=(c[t>>2]|0)){m=64;break}}if((m|0)==64){h=c[u>>2]|0;g=c[z>>2]|0;f=c[v>>2]|0;break}else if((m|0)==67){zb=C;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[w>>2]=j;c[x>>2]=i;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2]}B=B+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=C;return B|0}function Ou(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;l=m+440|0;a:do if(!(c[l>>2]|0)){if((e|0)<25){k=m+24|0;j=e;b:while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break}g=c[k>>2]|0;h=c[g+4>>2]|0;g=c[g>>2]|0}h=h+-1|0;i=g+1|0;e=a[g>>0]|0;g=e&255;c:do if(e<<24>>24==-1){g=i;while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break b}e=c[k>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;switch(e<<24>>24){case 0:{e=255;break c}case -1:break;default:{o=13;break b}}}}else{e=g;g=i}while(0);d=e|d<<8;e=j+8|0;if((j|0)<17)j=e;else break a}if((o|0)==13){c[l>>2]=e&255;e=j;i=h;o=15;break}else if((o|0)==20)return g|0}}else{i=h;o=15}while(0);if((o|0)==15)if((e|0)<(f|0)){h=m+468|0;if(!(c[(c[h>>2]|0)+40>>2]|0)){o=c[m>>2]|0;c[o+20>>2]=120;Ub[c[o+4>>2]&63](m,-1);c[(c[h>>2]|0)+40>>2]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function Pu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!(Ou(a,b,e,g)|0)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[5184+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!(Ou(a,b,e,1)|0)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;a=c[f>>2]|0;c[a+20>>2]=121;Ub[c[a+4>>2]&63](f,-1);f=0;return f|0}else{f=d[(c[f+72+(g<<2)>>2]|0)+h+((c[f+140>>2]|0)+17)>>0]|0;return f|0}return 0}function Qu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+468>>2]|0;p=b+224|0;q=b+412|0;f=c[q>>2]|0;e=(f|0)==0;do if(c[p>>2]|0){m=b+416|0;d=c[m>>2]|0;if(e)if(!d)n=7;else n=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+436>>2]|0):0)?(c[b+340>>2]|0)==1:0)n=7;else n=11;do if((n|0)==7){d=c[b+420>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+424>>2]|0)){n=11;break}}else d=c[b+424>>2]|0;if((d|0)>13)n=11}while(0);if((n|0)==11){l=c[b>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[b>>2]|0)+28>>2]=c[m>>2];c[(c[b>>2]|0)+32>>2]=c[b+420>>2];c[(c[b>>2]|0)+36>>2]=c[b+424>>2];Sb[c[c[b>>2]>>2]&255](b)}l=b+340|0;d=c[l>>2]|0;if((d|0)>0){j=b+160|0;g=b+420|0;k=b+424|0;i=0;do{f=c[(c[b+344+(i<<2)>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[q>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[(c[b>>2]|0)+28>>2]=0;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);d=c[q>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;r=c[e>>2]|0;if((c[g>>2]|0)!=(((r|0)>0?r:0)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=f;c[(c[b>>2]|0)+28>>2]=d;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}i=i+1|0;d=c[l>>2]|0}while((i|0)<(d|0))}else g=b+420|0;e=(c[q>>2]|0)==0;f=o+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=43;k=l;break}else{c[f>>2]=44;k=l;break}else if(e){c[f>>2]=45;k=l;break}else{c[f>>2]=46;k=l;break}}else{if((e?(c[b+420>>2]|0)==0:0)?(c[b+424>>2]|0)==0:0){r=c[b+416>>2]|0;if((r|0)<64?(r|0)!=(c[b+436>>2]|0):0)n=36}else n=36;if((n|0)==36){r=c[b>>2]|0;c[r+20>>2]=125;Ub[c[r+4>>2]&63](b,-1)}c[o+4>>2]=47;d=b+340|0;k=d;d=c[d>>2]|0}while(0);if((d|0)<=0){q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}h=b+436|0;i=b+420|0;j=b+4|0;g=0;do{f=c[b+344+(g<<2)>>2]|0;if(c[p>>2]|0)if(!(c[q>>2]|0)){if(!(c[i>>2]|0))n=43}else n=50;else n=43;do if((n|0)==43){n=0;d=c[f+20>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+60+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,64)|0;c[e>>2]=d}e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[o+24+(g<<2)>>2]=0;c[o+40+(g<<2)>>2]=0;if(!(c[p>>2]|0))if(!(c[h>>2]|0))break;else{n=50;break}else if(!(c[q>>2]|0))break;else{n=50;break}}while(0);if((n|0)==50){n=0;d=c[f+24>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+124+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,256)|0;c[e>>2]=d}aP(d|0,0,256)|0}g=g+1|0}while((g|0)<(c[k>>2]|0));q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}function Ru(a){a=a|0;return}function Su(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){r=c[e>>2]|0;c[r+20>>2]=25;Sb[c[r>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{t=13;break}else if(!(c[j>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}o=s+20|0;if((c[o>>2]|0)==-1)return 1;p=e+368|0;if((c[p>>2]|0)<=0)return 1;q=e+424|0;n=0;a:while(1){r=c[f+(n<<2)>>2]|0;l=c[e+372+(n<<2)>>2]|0;j=c[(c[e+344+(l<<2)>>2]|0)+20>>2]|0;h=s+60+(j<<2)|0;k=s+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[s+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768)break a;h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=s+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[r>>1]=g<>2];n=n+1|0;if((n|0)>=(c[p>>2]|0)){t=37;break}}if((t|0)==37)return 1;t=c[e>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](e,-1);c[o>>2]=-1;return 1}function Tu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){t=c[e>>2]|0;c[t+20>>2]=25;Sb[c[t>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}t=s+20|0;if((c[t>>2]|0)==-1)return 1;r=c[e+432>>2]|0;p=c[f>>2]|0;o=c[(c[e+344>>2]|0)+24>>2]|0;q=s+124+(o<<2)|0;l=s+188|0;m=e+416|0;n=e+424|0;o=e+264+o|0;h=(c[e+412>>2]|0)+-1|0;a:while(1){g=(c[q>>2]|0)+(h*3|0)|0;if(Xu(e,g)|0){r=36;break}j=h+1|0;if(!(Xu(e,g+1|0)|0)){i=g;h=j;while(1){if((h|0)>=(c[m>>2]|0)){r=23;break a}g=i+3|0;j=h+1|0;if(!(Xu(e,i+4|0)|0)){i=g;h=j}else break}}k=Xu(e,l)|0;i=g+2|0;g=Xu(e,i)|0;if(g){if(Xu(e,i)|0){g=g<<1;h=(c[q>>2]|0)+((h|0)<(d[o>>0]|0|0)?189:217)|0;if(Xu(e,h)|0)do{g=g<<1;if((g|0)==32768){r=30;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{s=(Xu(e,i)|0)==0;g=(s?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(j<<2)>>2]<<1)>>1]=((k|0)==0?g+1|0:~g)<>2];if((j|0)<(c[m>>2]|0))h=j;else{r=36;break}}if((r|0)==23){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==30){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==36)return 1;return 0}function Uu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[d+468>>2]|0;p=d+280|0;if(c[p>>2]|0){s=r+56|0;g=c[s>>2]|0;if(!g){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){o=c[d>>2]|0;c[o+20>>2]=25;Sb[c[o>>2]&255](d)}h=d+340|0;if((c[h>>2]|0)>0){i=d+224|0;j=d+412|0;k=d+436|0;l=d+420|0;g=0;do{m=c[d+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))q=10}else q=13;else q=10;do if((q|0)==10){q=0;n=c[r+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[r+24+(g<<2)>>2]=0;c[r+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{q=13;break}else if(!(c[j>>2]|0))break;else{q=13;break}}while(0);if((q|0)==13){q=0;aP(c[r+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=-16;g=c[p>>2]|0;c[s>>2]=g}c[s>>2]=g+-1}h=r+188|0;i=1<>2];j=d+368|0;if((c[j>>2]|0)<=0)return 1;g=0;do{if(Xu(d,h)|0){s=c[f+(g<<2)>>2]|0;b[s>>1]=i|(e[s>>1]|0)}g=g+1|0}while((g|0)<(c[j>>2]|0));return 1}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[d+468>>2]|0;o=d+280|0;if(c[o>>2]|0){p=q+56|0;f=c[p>>2]|0;if(!f){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){s=c[d>>2]|0;c[s+20>>2]=25;Sb[c[s>>2]&255](d)}g=d+340|0;if((c[g>>2]|0)>0){h=d+224|0;i=d+412|0;j=d+436|0;k=d+420|0;f=0;do{l=c[d+344+(f<<2)>>2]|0;if(c[h>>2]|0)if(!(c[i>>2]|0)){if(!(c[k>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;m=c[q+60+(c[l+20>>2]<<2)>>2]|0;n=m+64|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[q+24+(f<<2)>>2]=0;c[q+40+(f<<2)>>2]=0;if(!(c[h>>2]|0))if(!(c[j>>2]|0))break;else{t=13;break}else if(!(c[i>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[q+124+(c[l+24>>2]<<2)>>2]|0,0,256)|0}f=f+1|0}while((f|0)<(c[g>>2]|0))}c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=-16;f=c[o>>2]|0;c[p>>2]=f}c[p>>2]=f+-1}r=q+20|0;if((c[r>>2]|0)==-1)return 1;s=c[d+432>>2]|0;n=c[e>>2]|0;g=c[(c[d+344>>2]|0)+24>>2]|0;p=c[d+424>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(f<<2)>>2]<<1)>>1]|0)break;f=f+-1|0;if(!f){f=0;break}}m=q+124+(g<<2)|0;j=q+188|0;k=o&65535;l=p&65535;g=(c[d+412>>2]|0)+-1|0;a:while(1){h=(c[m>>2]|0)+(g*3|0)|0;if((g|0)>=(f|0)?Xu(d,h)|0:0){t=38;break}g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;b:do if(!(b[i>>1]|0)){while(1){if(Xu(d,h+1|0)|0)break;if((g|0)>=(c[e>>2]|0)){t=35;break a}h=h+3|0;g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;if(b[i>>1]|0){t=26;break b}}if(!(Xu(d,j)|0)){b[i>>1]=k;break}else{b[i>>1]=l;break}}else t=26;while(0);do if((t|0)==26){t=0;if(Xu(d,h+2|0)|0){q=b[i>>1]|0;h=q<<16>>16;if(q<<16>>16<0){b[i>>1]=p+h;break}else{b[i>>1]=o+h;break}}}while(0);if((g|0)>=(c[e>>2]|0)){t=38;break}}if((t|0)==35){t=c[d>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](d,-1);c[r>>2]=-1;return 1}else if((t|0)==38)return 1;return 0} +function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;Jg(a+32|0,b);d=Ah(b)|0;d=Ng(c[d>>2]|0)|0;f=Ah(b)|0;f=Og(c[f>>2]|0)|0;e=Pg(b)|0;uj(a+92|0,d,f,e,Qg(b)|0,36,3.0,1.5,5,.800000011920929);e=Ah(b)|0;e=Ng(c[e>>2]|0)|0;c[a>>2]=e;e=Ah(b)|0;e=Og(c[e>>2]|0)|0;c[a+4>>2]=e;e=a+16|0;Bh(e,c[a+8>>2]|0);f=a+20|0;a=a+12|0;b=0;while(1){d=c[e>>2]|0;if(b>>>0>=(((c[f>>2]|0)-d|0)/12|0)>>>0)break;Ch(d+(b*12|0)|0,c[a>>2]|0);b=b+1|0}return}function Ah(a){a=a|0;return a+4|0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;kh(f);d=f}c[g>>2]=a}}else Kh(a,b-e|0);return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;lh(f);d=f}c[g>>2]=a}}else Dh(a,b-e|0);return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Fh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Gh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Hh(f,b);Ih(a,f);Jh(f);break}}else Eh(a,b);while(0);zb=i;return}function Eh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Fh(a){a=a|0;return 357913941}function Gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Hh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Jh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;lh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Mh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Nh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Oh(f,b);Ph(a,f);Qh(f);break}}else Lh(a,b);while(0);zb=i;return}function Lh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Qh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;kh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=zb;zb=zb+32|0;d=e;if((Pg(b)|0)<=0){f=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,147)|0,35007)|0,22967)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);g=XF(d,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(d);QE(f,g)|0;ME(f)|0;ua()}Bq(d,23866);if(Sh(d)|0)Zg(a+32|0,b);Cq(d);Bq(d,23878);if(Sh(d)|0)Th(a,b,a+32|0);Cq(d);Bq(d,23898);if(Sh(d)|0)Uh(a,b);Cq(d);Bq(d,23907);if(Sh(d)|0)Vh(a);Cq(d);Bq(d,23921);if(Sh(d)|0)Wh(a,b);Cq(d);zb=e;return}function Sh(a){a=a|0;return 1}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0.0;ha=zb;zb=zb+48|0;aa=ha;ca=a+60|0;da=a+64|0;c[da>>2]=c[ca>>2];fa=+ji(+f[a+52>>2]);V=a+32|0;W=aa+12|0;Y=aa+16|0;Z=aa+24|0;_=aa+28|0;$=aa+4|0;F=a+68|0;G=aa+12|0;H=aa+16|0;I=aa+24|0;J=aa+28|0;K=aa+4|0;L=aa+12|0;M=aa+16|0;N=aa+24|0;O=aa+28|0;P=aa+4|0;a=1;a:while(1){if(a>>>0>=((Ki(V)|0)+-1|0)>>>0){ga=3;break}Q=Li(d,a+-1|0)|0;R=Li(d,a)|0;S=a+1|0;T=Li(d,S)|0;U=Mi(d,a)|0;E=Ni(d,a)|0;D=Ng(Q)|0;b:do if((D|0)==(Ng(R)|0)?(D=Ng(Q)|0,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=7;break a}D=Og(Q)|0;if((D|0)!=(Og(T)|0)){ga=9;break a}k=(Ng(R)|0)+-1|0;l=(Og(R)|0)+-1|0;m=+(E|0);a=1;while(1){if(a>>>0>=l>>>0)break b;v=a+-1|0;n=ch(Q,v)|0;o=ch(Q,a)|0;p=a+1|0;q=ch(Q,p)|0;r=ch(R,v)|0;t=ch(R,a)|0;u=ch(R,p)|0;v=ch(T,v)|0;w=ch(T,a)|0;x=ch(T,p)|0;j=+(a>>>0);i=1;while(1){if(i>>>0>=k>>>0)break;a=t+(i<<2)|0;do if(!(+ji(+f[a>>2])>2];h=i+-1|0;e=+f[n+(h<<2)>>2];do if(((((g>e?g>+f[n+(i<<2)>>2]:0)?(X=i+1|0,g>+f[n+(X<<2)>>2]):0)?g>+f[o+(h<<2)>>2]:0)?g>+f[o+(i<<2)>>2]:0)?g>+f[o+(X<<2)>>2]:0){if(!(g>+f[q+(h<<2)>>2])){ga=42;break}if(!(g>+f[q+(i<<2)>>2])){ga=42;break}if(!(g>+f[q+(X<<2)>>2])){ga=42;break}if(!(g>+f[r+(h<<2)>>2])){ga=42;break}if(!(g>+f[r+(i<<2)>>2])){ga=42;break}if(!(g>+f[r+(X<<2)>>2])){ga=42;break}if(!(g>+f[t+(h<<2)>>2])){ga=42;break}if(!(g>+f[t+(X<<2)>>2])){ga=42;break}if(!(g>+f[u+(h<<2)>>2])){ga=42;break}if(!(g>+f[u+(i<<2)>>2])){ga=42;break}if(!(g>+f[u+(X<<2)>>2])){ga=42;break}if(!(g>+f[v+(h<<2)>>2])){ga=42;break}if(!(g>+f[v+(i<<2)>>2])){ga=42;break}if(!(g>+f[v+(X<<2)>>2])){ga=42;break}if(!(g>+f[w+(h<<2)>>2])){ga=42;break}if(!(g>+f[w+(i<<2)>>2])){ga=42;break}if(!(g>+f[w+(X<<2)>>2])){ga=42;break}if(!(g>+f[x+(h<<2)>>2])){ga=42;break}if(!(g>+f[x+(i<<2)>>2])){ga=42;break}if(!(g>+f[x+(X<<2)>>2]))ga=42}else ga=42;while(0);if((ga|0)==42){ga=0;if(!(g>2]))break;a=i+1|0;if(!(g<+f[n+(a<<2)>>2]))break;if(!(g<+f[o+(h<<2)>>2]))break;if(!(g<+f[o+(i<<2)>>2]))break;if(!(g<+f[o+(a<<2)>>2]))break;if(!(g<+f[q+(h<<2)>>2]))break;if(!(g<+f[q+(i<<2)>>2]))break;if(!(g<+f[q+(a<<2)>>2]))break;if(!(g<+f[r+(h<<2)>>2]))break;if(!(g<+f[r+(i<<2)>>2]))break;if(!(g<+f[r+(a<<2)>>2]))break;if(!(g<+f[t+(h<<2)>>2]))break;if(!(g<+f[t+(a<<2)>>2]))break;if(!(g<+f[u+(h<<2)>>2]))break;if(!(g<+f[u+(i<<2)>>2]))break;if(!(g<+f[u+(a<<2)>>2]))break;if(!(g<+f[v+(h<<2)>>2]))break;if(!(g<+f[v+(i<<2)>>2]))break;if(!(g<+f[v+(a<<2)>>2]))break;if(!(g<+f[w+(h<<2)>>2]))break;if(!(g<+f[w+(i<<2)>>2]))break;if(!(g<+f[w+(a<<2)>>2]))break;if(!(g<+f[x+(h<<2)>>2]))break;if(!(g<+f[x+(i<<2)>>2]))break;if(!(g<+f[x+(a<<2)>>2]))break}c[W>>2]=U;c[Y>>2]=E;f[Z>>2]=g;C=+si(b,U,m);f[_>>2]=C;ri(aa,$,+(i>>>0),j,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);i=i+1|0}a=p}}else ga=72;while(0);c:do if((ga|0)==72){ga=0;D=Ng(Q)|0;if((D|0)==(Ng(R)|0)?(D=(Ng(R)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=75;break a}D=(Og(R)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=77;break a}l=~~+s(+((+(((Ng(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;n=~~+s(+((+(((Og(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;C=+(E|0);a=2;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(Q,t)|0;p=ch(Q,a)|0;q=a+1|0;r=ch(Q,q)|0;t=ch(R,t)|0;u=ch(R,a)|0;v=ch(R,q)|0;y=+(a>>>0);z=y*.5+-.25;A=z+-.5;B=z+.5;k=2;while(1){if(k>>>0>=l>>>0)break;i=u+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0);m=j*.5+-.25;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ba=k+1|0,e>+f[o+(ba<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(k<<2)>>2])){ga=110;break}if(!(e>+f[p+(ba<<2)>>2])){ga=110;break}if(!(e>+f[r+(h<<2)>>2])){ga=110;break}if(!(e>+f[r+(k<<2)>>2])){ga=110;break}if(!(e>+f[r+(ba<<2)>>2])){ga=110;break}if(!(e>+f[t+(h<<2)>>2])){ga=110;break}if(!(e>+f[t+(k<<2)>>2])){ga=110;break}if(!(e>+f[t+(ba<<2)>>2])){ga=110;break}if(!(e>+f[u+(h<<2)>>2])){ga=110;break}if(!(e>+f[u+(ba<<2)>>2])){ga=110;break}if(!(e>+f[v+(h<<2)>>2])){ga=110;break}if(!(e>+f[v+(k<<2)>>2])){ga=110;break}if(!(e>+f[v+(ba<<2)>>2])){ga=110;break}g=m+-.5;if(!(e>+Ci(T,g,A))){ga=110;break}e=+f[i>>2];if(!(e>+Ci(T,m,A))){ga=110;break}ia=+f[i>>2];e=m+.5;if(!(ia>+Ci(T,e,A))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,B)))ga=110}else ga=110;while(0);if((ga|0)==110){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(k<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=m+-.5;if(!(e<+Ci(T,g,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,A)))break;ia=+f[i>>2];e=m+.5;if(!(ia<+Ci(T,e,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,B)))break}c[G>>2]=U;c[H>>2]=E;c[I>>2]=c[i>>2];ia=+si(b,U,C);f[J>>2]=ia;ri(aa,K,j,y,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}D=(Ng(Q)|0)>>>1;if((D|0)==(Ng(R)|0)?(D=(Ng(Q)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=(Og(Q)|0)>>>1;if((D|0)!=(Og(R)|0)){ga=144;break a}D=(Og(Q)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=146;break a}l=(Ng(R)|0)+-1|0;n=(Og(R)|0)+-1|0;A=+(E|0);a=1;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(R,t)|0;p=ch(R,a)|0;q=a+1|0;r=ch(R,q)|0;t=ch(T,t)|0;u=ch(T,a)|0;v=ch(T,q)|0;B=+(a<<1>>>0)+.5;m=+(a>>>0);y=B+-2.0;z=B+2.0;k=1;while(1){if(k>>>0>=l>>>0)break;i=p+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0)+.5;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ea=k+1|0,e>+f[o+(ea<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(ea<<2)>>2])){ga=179;break}if(!(e>+f[r+(h<<2)>>2])){ga=179;break}if(!(e>+f[r+(k<<2)>>2])){ga=179;break}if(!(e>+f[r+(ea<<2)>>2])){ga=179;break}if(!(e>+f[t+(h<<2)>>2])){ga=179;break}if(!(e>+f[t+(k<<2)>>2])){ga=179;break}if(!(e>+f[t+(ea<<2)>>2])){ga=179;break}if(!(e>+f[u+(h<<2)>>2])){ga=179;break}if(!(e>+f[u+(k<<2)>>2])){ga=179;break}if(!(e>+f[u+(ea<<2)>>2])){ga=179;break}if(!(e>+f[v+(h<<2)>>2])){ga=179;break}if(!(e>+f[v+(k<<2)>>2])){ga=179;break}if(!(e>+f[v+(ea<<2)>>2])){ga=179;break}g=j+-2.0;if(!(e>+Ci(Q,g,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,y))){ga=179;break}ia=+f[i>>2];e=j+2.0;if(!(ia>+Ci(Q,e,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,z)))ga=179}else ga=179;while(0);if((ga|0)==179){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(k<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=j+-2.0;if(!(e<+Ci(Q,g,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,y)))break;ia=+f[i>>2];e=j+2.0;if(!(ia<+Ci(Q,e,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,z)))break}c[L>>2]=U;c[M>>2]=E;c[N>>2]=c[i>>2];ia=+si(b,U,A);f[O>>2]=ia;ri(aa,P,+(k>>>0),m,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}}while(0);a=S}if((ga|0)==3){zb=ha;return}else if((ga|0)==7){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,192)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==9){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26726)|0,22676)|0,35e3)|0,193)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==75){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,277)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==77){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26778)|0,22676)|0,35e3)|0,278)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==144){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26835)|0,22676)|0,35e3)|0,362)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==146){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26892)|0,22676)|0,35e3)|0,363)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0;J=zb;zb=zb+80|0;I=J+68|0;A=J;C=J+56|0;D=J+44|0;E=J+40|0;F=J+36|0;s=+ji(+f[a+52>>2]);H=a+56|0;w=+ji(+f[H>>2]+1.0);w=w/+f[H>>2];H=a+60|0;x=a+64|0;y=a+32|0;z=D+4|0;o=a+88|0;p=C+4|0;q=C+8|0;r=D+8|0;m=0;n=0;while(1){l=c[H>>2]|0;i=l;if(n>>>0>=(((c[x>>2]|0)-l|0)/36|0)>>>0){a=3;break}d=i+(n*36|0)|0;a=i+(n*36|0)+16|0;l=c[a>>2]|0;if((l|0)>=(li(y)|0)){a=5;break}j=i+(n*36|0)+12|0;l=c[j>>2]|0;l=B(li(y)|0,l)|0;l=l+(c[a>>2]|0)|0;k=i+(n*36|0)+4|0;mi(E,F,+f[d>>2],+f[k>>2],c[j>>2]|0);e=~~(+f[E>>2]+.5);g=~~(+f[F>>2]+.5);L=ni(y)|0;L=(c[L>>2]|0)+(l+-1<<5)|0;h=ni(y)|0;h=(c[h>>2]|0)+(l<<5)|0;K=ni(y)|0;if(((oi(A,C,L,h,(c[K>>2]|0)+(l+1<<5)|0,e,g)|0?pi(D,A,C)|0:0)?(M=+ji(+f[D>>2]),M=M+ +ji(+f[z>>2]),!(M>+f[o>>2])):0)?(G=i+(n*36|0)+32|0,qi(G,A)|0):0){l=i+(n*36|0)+24|0;M=+f[l>>2];L=(ch(h,g)|0)+(e<<2)|0;if(!(M==+f[L>>2])){a=11;break}L=(ch(h,g)|0)+(e<<2)|0;N=+f[D>>2];M=+f[z>>2];f[l>>2]=+f[L>>2]-(+f[C>>2]*N+ +f[p>>2]*M+ +f[q>>2]*+f[r>>2]);ri(d,k,N+ +f[E>>2],M+ +f[F>>2],c[j>>2]|0);M=+f[r>>2]+ +(c[a>>2]|0);a=i+(n*36|0)+20|0;f[a>>2]=M;M=+Zh(M,0.0,+(li(y)|0));f[a>>2]=M;if(((((+t(+(+f[G>>2]))>2])>=s:0)?(u=+f[d>>2],u>=0.0):0)?(L=ni(y)|0,u<+((Ng(c[L>>2]|0)|0)>>>0)):0)?(v=+f[k>>2],v>=0.0):0)?(L=ni(y)|0,v<+((Og(c[L>>2]|0)|0)>>>0)):0){N=+si(b,c[j>>2]|0,+f[a>>2]);f[i+(n*36|0)+28>>2]=N;a=m+1|0;g=(c[H>>2]|0)+(m*36|0)|0;e=g+36|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}else a=m}else a=m;m=a;n=n+1|0}if((a|0)==3){ki(H,m);zb=J;return}else if((a|0)==5){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24248)|0,22676)|0,35e3)|0,489)|0,35007)|0,24320)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}else if((a|0)==11){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24357)|0,22676)|0,35e3)|0,526)|0,35007)|0,24414)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+16|0;d=l+12|0;h=l;i=a+60|0;j=a+64|0;k=a+84|0;e=c[k>>2]|0;do if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>e>>>0){f=a+16|0;b=c[f>>2]|0;g=((c[a+20>>2]|0)-b|0)/12|0;if((g|0)!=(c[a+8>>2]|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,23939)|0,22676)|0,35e3)|0,454)|0,35007)|0,23994)|0;IE(d,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(d,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(d);QE(m,n)|0;ME(m)|0;ua()}b=((c[b+4>>2]|0)-(c[b>>2]|0)|0)/12|0;if((b|0)!=(c[a+12>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24020)|0,22676)|0,35e3)|0,455)|0,35007)|0,23994)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;ai(f,h,i,g,b,c[a>>2]|0,c[a+4>>2]|0,e);Xh(i,h);if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>(c[k>>2]|0)>>>0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24078)|0,22676)|0,35e3)|0,469)|0,35007)|0,24147)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}else{hh(h);break}}while(0);zb=l;return}function Wh(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=zb;zb=zb+64|0;l=w+48|0;s=w+44|0;t=w+40|0;u=w+36|0;v=w;a:do if(!(a[b+28>>0]|0)){g=c[b+60>>2]|0;e=((c[b+64>>2]|0)-g|0)/36|0;b=0;while(1){if((b|0)==(e|0))break a;f[g+(b*36|0)+8>>2]=0.0;b=b+1|0}}else{k=b+72|0;m=b+76|0;c[m>>2]=c[k>>2];n=b+60|0;o=b+64|0;uh(k,(c[o>>2]|0)-(c[n>>2]|0)|0);p=b+92|0;vj(p,d);q=b+144|0;r=v+8|0;j=b+80|0;i=0;while(1){h=c[n>>2]|0;b=h;if(i>>>0>=(((c[o>>2]|0)-h|0)/36|0)>>>0)break;Yh(s,t,u,+f[b+(i*36|0)>>2],+f[b+(i*36|0)+4>>2],+f[b+(i*36|0)+28>>2],c[b+(i*36|0)+12>>2]|0);x=+f[s>>2];x=+Zh(x,0.0,+(((Ng(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[s>>2]=x;x=+f[t>>2];x=+Zh(x,0.0,+(((Og(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[t>>2]=x;h=c[n>>2]|0;yj(p,c[q>>2]|0,l,c[h+(i*36|0)+12>>2]|0,c[h+(i*36|0)+16>>2]|0,+f[s>>2],x,+f[u>>2]);h=0;while(1){if((h|0)>=(c[l>>2]|0))break;b=v;e=(c[n>>2]|0)+(i*36|0)|0;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[r>>2]=c[(c[q>>2]|0)+(h<<2)>>2];b=c[m>>2]|0;if((b|0)==(c[j>>2]|0))_h(k,v);else{e=v;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[m>>2]=(c[m>>2]|0)+36}h=h+1|0}i=i+1|0}Xh(n,k)}while(0);zb=w;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Yh(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=+d;e=+e;g=+g;h=h|0;var i=0.0,j=0.0;i=1.0/+(1<>2]=i*d+j;f[b>>2]=i*e+j;f[c>>2]=i*g;return}function Zh(a,b,c){a=+a;b=+b;c=+c;if(!(ac)a=c}else a=b;return +a}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+32|0;i=j;d=a+4|0;e=(((c[d>>2]|0)-(c[a>>2]|0)|0)/36|0)+1|0;f=$h(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;k=((c[a+8>>2]|0)-g|0)/36|0;h=k<<1;vh(i,k>>>0>>1>>>0?(h>>>0>>0?e:h):f,((c[d>>2]|0)-g|0)/36|0,a+8|0);f=i+8|0;g=c[f>>2]|0;h=g;d=b;e=h+36|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));c[f>>2]=g+36;wh(a,i);xh(i);zb=j;return}}function $h(a){a=a|0;return 119304647}function ai(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0.0;D=zb;zb=zb+48|0;C=D+8|0;v=D+32|0;u=D+28|0;y=D+24|0;z=D+20|0;w=D+16|0;x=D;o=B(g,e)|0;n=+A(+(+(h|0)/+(e|0)));m=+A(+(+(i|0)/+(g|0)));r=b+4|0;c[r>>2]=c[b>>2];uh(b,j);s=a+4|0;g=c[a>>2]|0;i=((c[s>>2]|0)-g|0)/12|0;e=0;while(1){if((e|0)==(i|0))break;l=c[g+(e*12|0)>>2]|0;k=((c[g+(e*12|0)+4>>2]|0)-l|0)/12|0;h=0;while(1){if((h|0)==(k|0))break;c[l+(h*12|0)+4>>2]=c[l+(h*12|0)>>2];h=h+1|0}e=e+1|0}q=(j|0)/(o|0)|0;o=d+4|0;n=+(~~n|0);m=+(~~m|0);g=C+4|0;l=0;while(1){p=c[d>>2]|0;e=p;if(l>>>0>=(((c[o>>2]|0)-p|0)/36|0)>>>0)break;i=~~(+f[e+(l*36|0)+4>>2]/m);k=c[(c[a>>2]|0)+(~~(+f[e+(l*36|0)>>2]/n)*12|0)>>2]|0;E=+t(+(+f[e+(l*36|0)+24>>2]));f[C>>2]=E;c[g>>2]=l;e=k+(i*12|0)+4|0;h=c[e>>2]|0;if(h>>>0<(c[k+(i*12|0)+8>>2]|0)>>>0){k=C;j=c[k+4>>2]|0;p=h;c[p>>2]=c[k>>2];c[p+4>>2]=j;c[e>>2]=(c[e>>2]|0)+8}else bi(k+(i*12|0)|0,C);l=l+1|0}p=b+8|0;e=c[a>>2]|0;g=e;j=0;h=g;a:while(1){if(j>>>0>=(((c[s>>2]|0)-e|0)/12|0)>>>0){e=16;break}o=0;i=g;while(1){l=c[i+(j*12|0)>>2]|0;e=l;if(o>>>0>=(((c[i+(j*12|0)+4>>2]|0)-l|0)/12|0)>>>0)break;l=e+(o*12|0)|0;e=e+(o*12|0)+4|0;g=c[e>>2]|0;i=c[l>>2]|0;k=g-i>>3;k=q>>>0>>0?q:k;if(!k)e=h;else{c[y>>2]=i;c[z>>2]=i+(k<<3);c[w>>2]=g;c[u>>2]=c[y>>2];c[v>>2]=c[z>>2];c[C>>2]=c[w>>2];ci(u,v,C,x);g=c[l>>2]|0;i=g;if(k>>>0>(c[e>>2]|0)-g>>3>>>0?!(+f[i>>2]>=+f[i+(k<<3)>>2]):0){e=23;break a}i=0;while(1){if(i>>>0>=k>>>0)break;h=(c[d>>2]|0)+((c[(c[l>>2]|0)+(i<<3)+4>>2]|0)*36|0)|0;e=c[r>>2]|0;if((e|0)==(c[p>>2]|0))_h(b,h);else{g=e+36|0;do{c[e>>2]=c[h>>2];e=e+4|0;h=h+4|0}while((e|0)<(g|0));c[r>>2]=(c[r>>2]|0)+36}i=i+1|0}e=c[a>>2]|0}o=o+1|0;h=e;i=e}j=j+1|0;g=i;e=i}if((e|0)==16){zb=D;return}else if((e|0)==23){D=Xf(Xf(PE(Xf(Xf(Xf(56032,24171)|0,22676)|0,35e3)|0,661)|0,35007)|0,24229)|0;IE(C,D+(c[(c[D>>2]|0)+-12>>2]|0)|0);z=XF(C,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(C);QE(D,z)|0;ME(D)|0;ua()}}function bi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=fi(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;gi(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;hi(a,d);ii(d);zb=h;return}}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=zb;zb=zb+48|0;y=K+40|0;x=K+36|0;w=K+32|0;C=K+28|0;D=K+24|0;E=K+20|0;G=K+16|0;H=K+12|0;I=K+8|0;z=K+4|0;A=K;v=c[b>>2]|0;a:while(1){u=c[d>>2]|0;n=u;t=u+-8|0;q=t;s=u+-4|0;if((v|0)==(u|0))break;r=c[a>>2]|0;k=r;b:while(1){b=n-k|0;g=b>>3;switch(g|0){case 1:case 0:break a;case 2:{J=5;break a}case 3:{J=10;break a}default:{}}if((b|0)<64){J=12;break a}g=g>>>1;p=r+(g<<3)|0;c[I>>2]=k;c[z>>2]=p;c[A>>2]=q;c[w>>2]=c[I>>2];c[x>>2]=c[z>>2];c[y>>2]=c[A>>2];b=di(w,x,y,e)|0;l=k;j=+f[p>>2];i=+f[l>>2];if(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0:0){J=53;break}g=t;while(1){m=g+-8|0;if((m|0)==(l|0))break;i=+f[m>>2];if(j>2]|0,(c[h>>2]|0)>>>0>>0):0){J=51;break b}g=m}h=l+8|0;b=h;o=+f[t>>2];j=+f[r>>2];do if(!(o>2]|0)>>>0<(c[g>>2]|0)>>>0)break}else g=r+4|0;while(1){if((h|0)==(t|0))break a;i=+f[h>>2];if(i>2]|0,F>>>0<(c[g>>2]|0)>>>0):0){J=28;break}h=h+8|0}if((J|0)==25){J=0;g=h+4|0;b=g;g=c[g>>2]|0}else if((J|0)==28){J=0;b=h+4|0;g=F}f[h>>2]=o;f[t>>2]=i;c[b>>2]=c[s>>2];c[s>>2]=g;b=h+8|0}while(0);if((t|0)==(b|0))break a;l=r+4|0;g=q;while(1){j=+f[r>>2];k=b;while(1){b=k;i=+f[b>>2];if(i>2]|0)>>>0<(c[l>>2]|0)>>>0:0)break;k=b+8|0}h=k;while(1){b=g+-8|0;i=+f[b>>2];if(!(i>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}g=b}if(b>>>0<=h>>>0)break;m=c[k>>2]|0;f[k>>2]=i;c[b>>2]=m;m=h+4|0;g=g+-4|0;p=c[m>>2]|0;c[m>>2]=c[g>>2];c[g>>2]=p;g=b;b=h+8|0}b=k;if(v>>>0>>0)break a;c[a>>2]=k;r=b}if((J|0)==47){h=g+-4|0;g=h;h=c[h>>2]|0;J=52}else if((J|0)==51){g=g+-4|0;h=B;J=52}else if((J|0)==53){J=0;h=t;s=k}if((J|0)==52){J=0;s=k;r=c[k>>2]|0;f[k>>2]=i;c[m>>2]=r;r=s+4|0;t=c[r>>2]|0;c[r>>2]=h;c[g>>2]=t;b=b+1|0;h=m}g=s+8|0;k=g;if(g>>>0>>0){q=p;g=k;while(1){p=q;n=p+4|0;j=+f[p>>2];while(1){k=g;i=+f[k>>2];if(!(j>2]|0)>>>0>=(c[k+4>>2]|0)>>>0)break}g=k+8|0}m=g;while(1){l=h+-8|0;i=+f[l>>2];if(j>2]|0)>>>0<(c[h+-4>>2]|0)>>>0:0)break;h=l}k=l;if(l>>>0<=m>>>0)break;t=c[g>>2]|0;f[g>>2]=i;c[l>>2]=t;t=m+4|0;h=h+-4|0;g=c[t>>2]|0;c[t>>2]=c[h>>2];c[h>>2]=g;b=b+1|0;h=k;q=(p|0)==(m|0)?k:q;g=m+8|0}r=g;p=q;k=g}else r=g;n=k;do if((p|0)!=(r|0)){i=+f[r>>2];j=+f[p>>2];if(!(i>2]|0;g=p+4|0;m=c[g>>2]|0;if(h>>>0>=m>>>0)break}else{h=r+4|0;m=p+4|0;g=m;l=h;m=c[m>>2]|0;h=c[h>>2]|0}t=c[k>>2]|0;f[k>>2]=j;c[p>>2]=t;c[l>>2]=m;c[g>>2]=h;b=b+1|0}while(0);if((v|0)==(r|0))break;c:do if(!b)if(v>>>0>>0){b=s;while(1){g=b+8|0;if((g|0)==(r|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}else{b=n;while(1){g=b+8|0;if((g|0)==(u|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}while(0);if(v>>>0>>0)c[d>>2]=k;else c[a>>2]=r+8}do if((J|0)==5){c[d>>2]=t;i=+f[r>>2];j=+f[t>>2];if(!(i>2]|0;h=c[s>>2]|0;if(g>>>0>=h>>>0)break}else{g=r+4|0;b=g;h=c[s>>2]|0;g=c[g>>2]|0}f[r>>2]=j;f[t>>2]=i;c[b>>2]=h;c[s>>2]=g}else if((J|0)==10){c[C>>2]=k;c[D>>2]=k+8;c[d>>2]=t;c[E>>2]=t;c[w>>2]=c[C>>2];c[x>>2]=c[D>>2];c[y>>2]=c[E>>2];di(w,x,y,e)|0}else if((J|0)==12){c[G>>2]=k;c[H>>2]=u;c[x>>2]=c[G>>2];c[y>>2]=c[H>>2];ei(x,y,e)}while(0);zb=K;return}function di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0.0,h=0.0,i=0,j=0.0,k=0,l=0;l=c[b>>2]|0;k=c[a>>2]|0;j=+f[k>>2];h=+f[l>>2];if(!(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0;else e=1;i=c[d>>2]|0;g=+f[i>>2];if(!(h>2]|0)>>>0<(c[i+4>>2]|0)>>>0;else b=1;do if(!e)if(b){f[l>>2]=g;f[i>>2]=h;d=l+4|0;i=i+4|0;a=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=a;g=+f[k>>2];h=+f[l>>2];if(!(g>2]|0;a=c[d>>2]|0;if(e>>>0>=a>>>0){b=1;break}}else{e=k+4|0;b=e;a=c[d>>2]|0;e=c[e>>2]|0}f[k>>2]=h;f[l>>2]=g;c[b>>2]=a;c[d>>2]=e;b=2}else b=0;else{if(b){f[k>>2]=g;f[i>>2]=j;k=k+4|0;b=i+4|0;l=c[k>>2]|0;c[k>>2]=c[b>>2];c[b>>2]=l;b=1;break}f[k>>2]=h;f[l>>2]=j;k=k+4|0;a=l+4|0;d=c[k>>2]|0;c[k>>2]=c[a>>2];c[a>>2]=d;g=+f[i>>2];if(!(j>2]|0;if(d>>>0>=e>>>0){b=1;break}}else{e=i+4|0;b=e;e=c[e>>2]|0}f[l>>2]=g;f[i>>2]=j;c[a>>2]=e;c[b>>2]=d;b=2}while(0);return b|0}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0,k=0,l=0;j=c[b>>2]|0;k=j+-8|0;l=c[a>>2]|0;while(1){if((l|0)==(k|0))break;a:do if((l|0)==(j|0))b=j;else{b=l;while(1){h=b+4|0;d=b;while(1){i=d+8|0;if((i|0)==(j|0))break a;e=+f[b>>2];g=+f[i>>2];if(e>2]|0)>>>0<(c[d+12>>2]|0)>>>0:0)break;d=i}b=i}}while(0);if((b|0)!=(l|0)){d=c[l>>2]|0;c[l>>2]=c[b>>2];c[b>>2]=d;d=l+4|0;i=b+4|0;h=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=h}i=l+8|0;c[a>>2]=i;l=i}return}function fi(a){a=a|0;return 536870911}function gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ii(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ji(a){a=+a;return +(a*a)}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=((c[d>>2]|0)-f|0)/36|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b*36|0)}else Hi(a,b-e|0);return}function li(a){a=a|0;return c[a+16>>2]|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;h=1.0/+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function ni(a){a=a|0;return a|0}function oi(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;k=Ng(d)|0;k=(k|0)==(Ng(e)|0)&1;do if((Ng(f)|0)==(k|0)){k=Og(d)|0;k=(k|0)==(Og(e)|0)&1;if((Og(f)|0)==(k|0)){yi(a,b,d,e,f,g,h);break}else{k=Xf(Xf(PE(Xf(Xf(Xf(56032,24457)|0,24528)|0,35e3)|0,466)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}}else{k=Ng(d)|0;if((k|0)==(Ng(e)|0)?(k=(Ng(e)|0)>>>1,(k|0)==(Ng(f)|0)):0){k=Og(d)|0;if((k|0)==(Og(e)|0)?(k=(Og(e)|0)>>>1,(k|0)==(Og(f)|0)):0){zi(a,b,d,e,f,g,h);break}k=Xf(Xf(PE(Xf(Xf(Xf(56032,24653)|0,24528)|0,35e3)|0,469)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){Ai(a,b,d,e,f,g,h);break}l=Xf(Xf(PE(Xf(Xf(Xf(56032,24750)|0,24528)|0,35e3)|0,472)|0,35007)|0,24621)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}l=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,24528)|0,35e3)|0,475)|0,35007)|0,24843)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}while(0);zb=j;return 1}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=zb;zb=zb+48|0;d=e;if(ti(d,b,1.1920928955078125e-07)|0){ui(a,d,c);a=1}else a=0;zb=e;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=b+16|0;d=+f[b>>2]*+f[c>>2];d=d-+ji(+f[b+4>>2]);if(d==0.0)a=0;else{d=+ji(+f[b>>2]+ +f[c>>2])/d;f[a>>2]=d;a=1}return a|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;g=+hz(1.0,e+-1|0)+-.5;h=+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function si(a,b,d){a=a|0;b=b|0;d=+d;var e=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;e=g;if(!(d>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,232)|0,35007)|0,34138)|0;IE(e,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(e,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(e);QE(h,i)|0;ME(h)|0;ua()}if(+(c[a+20>>2]|0)>d){d=+v(+(+f[a+24>>2]),+d)*+(1<>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(i,h)|0;ME(i)|0;ua()}return +(0.0)}function ti(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=+vi(b);if(!(+t(+e)<=d)){e=1.0/e;j=b+16|0;g=b+20|0;m=b+32|0;d=e*+wi(+f[j>>2],+f[g>>2],+f[m>>2]);f[a>>2]=d;l=b+8|0;k=b+4|0;d=e*+xi(+f[l>>2],+f[k>>2],+f[m>>2],+f[b+28>>2]);i=a+4|0;f[i>>2]=d;d=e*+xi(+f[k>>2],+f[l>>2],+f[j>>2],+f[g>>2]);h=a+8|0;f[h>>2]=d;d=e*+wi(+f[b>>2],+f[l>>2],+f[m>>2]);f[a+16>>2]=d;d=e*+xi(+f[l>>2],+f[b>>2],+f[g>>2],+f[b+12>>2]);g=a+20|0;f[g>>2]=d;e=e*+wi(+f[b>>2],+f[k>>2],+f[j>>2]);f[a+32>>2]=e;c[a+12>>2]=c[i>>2];c[a+24>>2]=c[h>>2];c[a+28>>2]=c[g>>2];a=1}else a=0;return a|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=c+4|0;d=c+8|0;f[a>>2]=+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[e>>2]+ +f[b+8>>2]*+f[d>>2];f[a+4>>2]=+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]+ +f[b+20>>2]*+f[d>>2];f[a+8>>2]=+f[b+24>>2]*+f[c>>2]+ +f[b+28>>2]*+f[e>>2]+ +f[b+32>>2]*+f[d>>2];return}function vi(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,g=0.0,h=0.0,i=0;b=a+32|0;g=+f[b>>2];c=a+4|0;g=g*+ji(+f[c>>2]);e=+f[a+8>>2];i=a+20|0;h=+f[c>>2]*2.0*e*+f[i>>2];c=a+16|0;d=+f[c>>2];e=d*+ji(e);d=+f[a>>2];d=d*+ji(+f[i>>2]);return +(h-g-e-d+ +f[a>>2]*+f[c>>2]*+f[b>>2])}function wi(a,b,c){a=+a;b=+b;c=+c;return +(a*c-b*b)}function xi(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(a*d-b*c)}function yi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0;r=zb;zb=zb+32|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;k=r+4|0;l=r;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){m=i+-1|0;if((i|0)>0?(n=i+1|0,n>>>0<(Og(e)|0)>>>0):0){s=Ng(d)|0;if((s|0)!=(Ng(e)|0)){s=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,311)|0,35007)|0,25078)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);t=XF(o,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(o);QE(s,t)|0;ME(s)|0;ua()}t=Ng(d)|0;if((t|0)!=(Ng(g)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26545)|0,24528)|0,35e3)|0,312)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)!=(Og(e)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,313)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)==(Og(g)|0)){z=(ch(d,m)|0)+(h<<2)|0;A=(ch(d,i)|0)+(h<<2)|0;o=(ch(d,n)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;t=(ch(g,m)|0)+(h<<2)|0;m=(ch(g,i)|0)+(h<<2)|0;s=(ch(g,n)|0)+(h<<2)|0;Bi(p,q,j,k,l,e,h,i);v=+f[m>>2];u=+f[A>>2];w=v+(u-+f[d>>2]*2.0);y=(+f[A+-4>>2]-+f[A+4>>2]+(+f[m+4>>2]-+f[m+-4>>2]))*.25;x=(+f[z>>2]-+f[o>>2]+(+f[s>>2]-+f[t>>2]))*.25;c[a>>2]=c[j>>2];t=c[l>>2]|0;c[a+4>>2]=t;f[a+8>>2]=y;c[a+12>>2]=t;c[a+16>>2]=c[k>>2];f[a+20>>2]=x;f[a+24>>2]=y;f[a+28>>2]=x;f[a+32>>2]=w;f[b>>2]=-+f[p>>2];f[b+4>>2]=-+f[q>>2];f[b+8>>2]=-((v-u)*.5);zb=r;return}else{A=Xf(Xf(PE(Xf(Xf(Xf(56032,26597)|0,24528)|0,35e3)|0,314)|0,35007)|0,25078)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,310)|0,35007)|0,25005)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,309)|0,35007)|0,24930)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}function zi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;w=zb;zb=zb+32|0;t=w+28|0;u=w+24|0;v=w+20|0;o=w+16|0;p=w+12|0;q=w+8|0;r=w+4|0;s=w;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){j=i+-1|0;if((i|0)>0?(l=i+1|0,l>>>0<(Og(e)|0)>>>0):0){n=Ng(d)|0;if((n|0)!=(Ng(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,415)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Ng(d)|0)>>>1;if((n|0)!=(Ng(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,416)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=Og(d)|0;if((n|0)!=(Og(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,417)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Og(d)|0)>>>1;if((n|0)!=(Og(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,418)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}m=(ch(d,j)|0)+(h<<2)|0;n=(ch(d,i)|0)+(h<<2)|0;j=(ch(d,l)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;mi(u,v,+(h|0),+(i|0),1);k=+f[u>>2];if(!(k+-.5>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,26252)|0,24528)|0,35e3)|0,428)|0,35007)|0,26293)|0;IE(t,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);x=XF(t,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(t);QE(l,x)|0;ME(l)|0;ua()}if(!(+f[v>>2]+-.5>=0.0)){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26347)|0,24528)|0,35e3)|0,429)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}if(!(k+.5<+((Ng(g)|0)>>>0))){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26442)|0,24528)|0,35e3)|0,430)|0,35007)|0,26293)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}k=+f[v>>2]+.5;if(k<+((Og(g)|0)>>>0)){Bi(o,p,q,r,s,e,h,i);y=+Ci(g,+f[u>>2],+f[v>>2]);k=+f[n>>2];z=y+(k-+f[d>>2]*2.0);C=+f[n+-4>>2];C=C+ +Ci(g,+f[u>>2]+.5,+f[v>>2]);B=+f[n+4>>2];B=(C-(B+ +Ci(g,+f[u>>2]+-.5,+f[v>>2])))*.25;C=+f[m>>2];C=C+ +Ci(g,+f[u>>2],+f[v>>2]+.5);A=+f[j>>2];A=(C-(A+ +Ci(g,+f[u>>2],+f[v>>2]+-.5)))*.25;c[a>>2]=c[q>>2];x=c[s>>2]|0;c[a+4>>2]=x;f[a+8>>2]=B;c[a+12>>2]=x;c[a+16>>2]=c[r>>2];f[a+20>>2]=A;f[a+24>>2]=B;f[a+28>>2]=A;f[a+32>>2]=z;f[b>>2]=-+f[o>>2];f[b+4>>2]=-+f[p>>2];f[b+8>>2]=-((y-k)*.5);zb=w;return}else{x=Xf(Xf(PE(Xf(Xf(Xf(56032,26493)|0,24528)|0,35e3)|0,431)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,414)|0,35007)|0,25005)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,413)|0,35007)|0,24930)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}function Ai(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;t=zb;zb=zb+32|0;q=t+28|0;r=t+24|0;s=t+20|0;j=t+16|0;k=t+12|0;l=t+8|0;m=t+4|0;n=t;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){o=i+-1|0;if((i|0)>0?(p=i+1|0,p>>>0<(Og(e)|0)>>>0):0){u=(Ng(d)|0)>>>1;if((u|0)!=(Ng(e)|0)){u=Xf(Xf(PE(Xf(Xf(Xf(56032,25021)|0,24528)|0,35e3)|0,361)|0,35007)|0,25078)|0;IE(q,u+(c[(c[u>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(u,v)|0;ME(u)|0;ua()}v=(Ng(d)|0)>>>1;if((v|0)!=(Ng(g)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,362)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)!=(Og(e)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25165)|0,24528)|0,35e3)|0,363)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)==(Og(g)|0)){C=(ch(e,i)|0)+(h<<2)|0;v=(ch(g,o)|0)+(h<<2)|0;q=(ch(g,i)|0)+(h<<2)|0;u=(ch(g,p)|0)+(h<<2)|0;ri(r,s,+(h|0),+(i|0),1);Bi(j,k,l,m,n,e,h,i);w=+Ci(d,+f[r>>2],+f[s>>2]);x=+f[q>>2];y=x+(w-+f[C>>2]*2.0);B=+Ci(d,+f[r>>2]+-2.0,+f[s>>2]);B=B+ +f[q+4>>2];A=+Ci(d,+f[r>>2]+2.0,+f[s>>2]);A=(B-(A+ +f[q+-4>>2]))*.25;B=+Ci(d,+f[r>>2],+f[s>>2]+-2.0);B=B+ +f[u>>2];z=+Ci(d,+f[r>>2],+f[s>>2]+2.0);z=(B-(z+ +f[v>>2]))*.25;c[a>>2]=c[l>>2];v=c[n>>2]|0;c[a+4>>2]=v;f[a+8>>2]=A;c[a+12>>2]=v;c[a+16>>2]=c[m>>2];f[a+20>>2]=z;f[a+24>>2]=A;f[a+28>>2]=z;f[a+32>>2]=y;f[b>>2]=-+f[j>>2];f[b+4>>2]=-+f[k>>2];f[b+8>>2]=-((x-w)*.5);zb=t;return}else{C=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,364)|0,35007)|0,25078)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,360)|0,35007)|0,25005)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,359)|0,35007)|0,24930)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}function Bi(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;if((i|0)>0?(i+1|0)>>>0<(Ng(h)|0)>>>0:0){k=j+-1|0;if((j|0)>0?(l=j+1|0,l>>>0<(Og(h)|0)>>>0):0){k=(ch(h,k)|0)+(i<<2)|0;j=(ch(h,j)|0)+(i<<2)|0;m=(ch(h,l)|0)+(i<<2)|0;h=j+4|0;i=j+-4|0;f[a>>2]=(+f[h>>2]-+f[i>>2])*.5;f[b>>2]=(+f[m>>2]-+f[k>>2])*.5;f[d>>2]=+f[h>>2]+(+f[i>>2]-+f[j>>2]*2.0);f[e>>2]=+f[m>>2]+(+f[k>>2]-+f[j>>2]*2.0);f[g>>2]=(+f[k+-4>>2]+ +f[m+4>>2]-(+f[k+4>>2]+ +f[m+-4>>2]))*.25;zb=n;return}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26089)|0,24528)|0,35e3)|0,285)|0,35007)|0,25005)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26033)|0,24528)|0,35e3)|0,284)|0,35007)|0,24930)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}function Ci(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;f=Di(a)|0;e=Ng(a)|0;d=Og(a)|0;return +(+Fi(f,e,d,Ei(a)|0,b,c))}function Di(a){a=a|0;return c[a+24>>2]|0}function Ei(a){a=a|0;return c[a+12>>2]|0}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return +(+Gi(a,b,c,d,e,f))}function Gi(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;h=+h;var i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;p=zb;zb=zb+16|0;n=p;o=~~+s(+g);if((o|0)!=(~~g|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25283)|0,25335)|0,35e3)|0,69)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(n,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(n);QE(m,l)|0;ME(m)|0;ua()}l=~~+s(+h);if((l|0)!=(~~h|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25441)|0,25335)|0,35e3)|0,70)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);k=XF(n,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(n);QE(m,k)|0;ME(m)|0;ua()}m=o+1|0;k=l+1|0;if(!((l|0)>-1&l>>>0>>0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,25493)|0,25335)|0,35e3)|0,79)|0,35007)|0,25539)|0;IE(n,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);r=XF(n,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(n);QE(q,r)|0;ME(q)|0;ua()}if(k>>>0>=d>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25556)|0,25335)|0,35e3)|0,80)|0,35007)|0,25616)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!((o|0)>-1&o>>>0>>0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25640)|0,25335)|0,35e3)|0,81)|0,35007)|0,25685)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(m>>>0>=b>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25702)|0,25335)|0,35e3)|0,82)|0,35007)|0,25761)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}b=a+(B(l,e)|0)|0;a=b+e|0;u=+(m|0)-g;i=+(k|0)-h;j=u*i;t=g-+(o|0);i=t*i;h=h-+(l|0);g=u*h;h=t*h;if(!(j>=0.0)|!(j<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25785)|0,25335)|0,35e3)|0,94)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(i>=0.0)|!(i<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25845)|0,25335)|0,35e3)|0,95)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(g>=0.0)|!(g<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25892)|0,25335)|0,35e3)|0,96)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h>=0.0)|!(h<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25939)|0,25335)|0,35e3)|0,97)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h+(g+(j+i))<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25986)|0,25335)|0,35e3)|0,98)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}else{zb=p;return +(j*+f[b+(o<<2)>>2]+i*+f[b+(m<<2)>>2]+g*+f[a+(o<<2)>>2]+h*+f[a+(m<<2)>>2])}return +(0.0)}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/36|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/36|0)+b|0;e=$h(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/36|0;g=k<<1;vh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/36|0,a+8|0);Ji(f,b);wh(a,f);xh(f);break}}else Ii(a,b);while(0);zb=i;return}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+4|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ji(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ki(a){a=a|0;return (c[a+4>>2]|0)-(c[a>>2]|0)>>5|0}function Li(a,b){a=a|0;b=b|0;return (c[a>>2]|0)+(b<<5)|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f;e=c[a>>2]|0;if((c[a+4>>2]|0)-e>>5>>>0>b>>>0){e=Ng(e)|0;e=~~+Pi(+Oi(+(((e>>>0)/((Ng((c[a>>2]|0)+(b<<5)|0)|0)>>>0)|0)>>>0)));zb=f;return e|0}else{f=Xf(Xf(PE(Xf(Xf(Xf(56032,26949)|0,24528)|0,35e3)|0,94)|0,35007)|0,26995)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=XF(d,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(d);QE(f,e)|0;ME(f)|0;ua()}return 0}function Ni(a,b){a=a|0;b=b|0;return (b|0)%(c[a+16>>2]|0)|0|0}function Oi(a){a=+a;return +(+z(+a)/.6931471824645996)}function Pi(a){a=+a;return +(+s(+(a+.5)))}function Qi(a){a=a|0;c[a>>2]=15676;gh(a+56|0);gh(a+44|0);Si(a+32|0);Ti(a);return}function Ri(a){a=a|0;Qi(a);SA(a);return}function Si(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Ti(a){a=a|0;c[a>>2]=15692;mh(a+4|0);return}function Ui(a){a=a|0;Ti(a);SA(a);return}function Vi(a,g,h,i,j){a=a|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=zb;zb=zb+16|0;k=t;if(i>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,55)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}if(j>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,56)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}o=i+-1|0;p=i+-2|0;q=i+-3|0;r=i+-4|0;l=g;m=0;while(1){if((m|0)==(j|0))break;s=h+(B(m,i)|0)|0;k=d[s>>0]|0;u=s+1|0;n=s+2|0;b[l>>1]=(k*7|0)+(d[n>>0]|0)+((d[u>>0]|0)+k<<2);k=d[s>>0]|0;b[l+2>>1]=((d[u>>0]|0)*6|0)+k+(d[s+3>>0]|0)+((d[n>>0]|0)+k<<2);k=2;n=l+4|0;while(1){if((k|0)==(p|0))break;u=k+1|0;b[n>>1]=((d[s+k>>0]|0)*6|0)+(d[s+(k+-2)>>0]|0)+((d[s+u>>0]|0)+(d[s+(k+-1)>>0]|0)<<2)+(d[s+(k+2)>>0]|0);k=u;n=n+2|0}u=l+(p<<1)|0;n=s+p|0;k=s+q|0;v=s+o|0;w=d[v>>0]|0;b[u>>1]=((d[n>>0]|0)*6|0)+w+(d[s+r>>0]|0)+(w+(d[k>>0]|0)<<2);s=d[v>>0]|0;b[u+2>>1]=(s*7|0)+(d[k>>0]|0)+((d[n>>0]|0)+s<<2);l=l+(i<<1)|0;m=m+1|0}s=j+-2|0;k=g+(i<<1)|0;q=k+(i<<1)|0;l=0;m=q;n=k;o=g;p=a;while(1){if((l|0)==(i|0))break;w=e[o>>1]|0;f[p>>2]=+((w*7|0)+((e[n>>1]|0)+w<<2)+(e[m>>1]|0)|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+4|0}o=0;p=q+(i<<1)|0;n=q;l=g;m=a+(i<<2)|0;while(1){if((o|0)==(i|0))break;w=e[l>>1]|0;f[m>>2]=+(((e[k>>1]|0)*6|0)+w+((e[n>>1]|0)+w<<2)+(e[p>>1]|0)|0)*.00390625;o=o+1|0;p=p+2|0;n=n+2|0;k=k+2|0;l=l+2|0;m=m+4|0}l=2;while(1){if((l|0)==(s|0))break;q=g+((B(l+-2|0,i)|0)<<1)|0;p=q+(i<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;k=0;m=n+(i<<1)|0;r=a+((B(l,i)|0)<<2)|0;while(1){if((k|0)==(i|0))break;f[r>>2]=+(((e[o>>1]|0)*6|0)+(e[q>>1]|0)+((e[n>>1]|0)+(e[p>>1]|0)<<2)+(e[m>>1]|0)|0)*.00390625;k=k+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;q=q+2|0;r=r+4|0}l=l+1|0}p=g+((B(j+-4|0,i)|0)<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(s,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+(((e[n>>1]|0)*6|0)+(e[p>>1]|0)+(w+(e[o>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;k=k+4|0}o=g+((B(j+-3|0,i)|0)<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(j+-1|0,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+((w*6|0)+(e[o>>1]|0)+(w+(e[n>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;k=k+4|0}zb=t;return}function Wi(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0;q=zb;zb=zb+16|0;h=q;if(e>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,168)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}if(g>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,169)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}l=e+-1|0;m=e+-2|0;n=e+-3|0;o=e+-4|0;i=b;j=0;while(1){if((j|0)==(g|0))break;p=d+((B(j,e)|0)<<2)|0;r=+f[p>>2];k=p+4|0;h=p+8|0;f[i>>2]=+f[h>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0));r=+f[p>>2];f[i+4>>2]=+f[p+12>>2]+(r+(+f[k>>2]*6.0+(r+ +f[h>>2])*4.0));h=2;k=i+8|0;while(1){if((h|0)==(m|0))break;s=h+1|0;f[k>>2]=+f[p+(h+2<<2)>>2]+(+f[p+(h+-2<<2)>>2]+(+f[p+(h<<2)>>2]*6.0+(+f[p+(h+-1<<2)>>2]+ +f[p+(s<<2)>>2])*4.0));h=s;k=k+4|0}s=i+(m<<2)|0;k=p+(m<<2)|0;h=p+(n<<2)|0;t=p+(l<<2)|0;r=+f[t>>2];f[s>>2]=r+(+f[p+(o<<2)>>2]+(+f[k>>2]*6.0+(+f[h>>2]+r)*4.0));r=+f[t>>2];f[s+4>>2]=r+(+f[h>>2]+(r*6.0+(r+ +f[k>>2])*4.0));i=i+(e<<2)|0;j=j+1|0}p=g+-2|0;h=b+(e<<2)|0;n=h+(e<<2)|0;i=0;j=n;k=h;l=b;m=a;while(1){if((i|0)==(e|0))break;r=+f[l>>2];f[m>>2]=(+f[j>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0}l=0;m=n+(e<<2)|0;k=n;i=b;j=a+(e<<2)|0;while(1){if((l|0)==(e|0))break;r=+f[i>>2];f[j>>2]=(+f[m>>2]+(r+(+f[h>>2]*6.0+(r+ +f[k>>2])*4.0)))*.00390625;l=l+1|0;m=m+4|0;k=k+4|0;h=h+4|0;i=i+4|0;j=j+4|0}i=2;while(1){if((i|0)==(p|0))break;n=b+((B(i+-2|0,e)|0)<<2)|0;m=n+(e<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;h=0;j=k+(e<<2)|0;o=a+((B(i,e)|0)<<2)|0;while(1){if((h|0)==(e|0))break;f[o>>2]=(+f[j>>2]+(+f[n>>2]+(+f[l>>2]*6.0+(+f[m>>2]+ +f[k>>2])*4.0)))*.00390625;h=h+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;n=n+4|0;o=o+4|0}i=i+1|0}m=b+((B(g+-4|0,e)|0)<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(p,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[m>>2]+(+f[k>>2]*6.0+(+f[l>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;h=h+4|0}l=b+((B(g+-3|0,e)|0)<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(g+-1|0,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[l>>2]+(r*6.0+(+f[k>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;h=h+4|0}zb=q;return}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c>>>1;j=d>>>1;k=c<<1;i=0;while(1){if((i|0)==(j|0))break;g=b+((B(k,i)|0)<<2)|0;d=0;e=g+(c<<2)|0;h=a;while(1){if((d|0)==(l|0))break;f[h>>2]=(+f[g>>2]+ +f[g+4>>2]+ +f[e>>2]+ +f[e+4>>2])*.25;d=d+1|0;e=e+8|0;g=g+8|0;h=h+4|0}i=i+1|0;a=a+(l<<2)|0}return}function Yi(a){a=a|0;c[a>>2]=15692;a=a+4|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;c[a+16>>2]=b;c[a+20>>2]=d;e=+La(+(1.0/+(d+-1|0)));f[a+24>>2]=e;e=1.0/+z(+e);f[a+28>>2]=e;return}function _i(a){a=a|0;var b=0;Yi(a);c[a>>2]=15676;a=a+32|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $i(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;Zi(a,e,3);k=a+4|0;l=a+20|0;Rg(k,B(c[l>>2]|0,e)|0);g=0;while(1){if((g|0)>=(e|0))break;h=b>>>g;i=d>>>g;f=0;while(1){j=c[l>>2]|0;if(f>>>0>=j>>>0)break;j=(B(j,g)|0)+f|0;cq((c[k>>2]|0)+(j<<5)|0,2,h,i,-1,1);f=f+1|0}g=g+1|0}l=B(d,b)|0;aj(a+32|0,l);fh(a+44|0,l);fh(a+56|0,l);return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>1;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<1)}else bj(a,b-e|0);return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>1>>>0>>0){d=(d-(c[a>>2]|0)>>1)+b|0;e=dj(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;g=(c[g>>2]|0)-j|0;ej(f,g>>1>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>1,a+8|0);fj(f,b);gj(a,f);hj(f);break}}else cj(a,b);while(0);zb=i;return}function cj(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function dj(a){a=a|0;return 2147483647}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if((b|0)<0){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<1)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<1)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<1);return}function fj(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function gj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>1)<<1)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hj(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-2|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((Mg(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27230)|0,27081)|0,35e3)|0,330)|0,35007)|0,27281)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((ah(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27305)|0,27081)|0,35e3)|0,331)|0,35007)|0,27350)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}e=a+4|0;f=a+16|0;g=a+20|0;if(((c[a+8>>2]|0)-(c[e>>2]|0)>>5|0)!=(B(c[g>>2]|0,c[f>>2]|0)|0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,27376)|0,27081)|0,35e3)|0,333)|0,35007)|0,27450)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(i,j)|0;ME(i)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27485)|0,27081)|0,35e3)|0,334)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27577)|0,27081)|0,35e3)|0,335)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}jj(a,c[e>>2]|0,b);b=c[e>>2]|0;jj(a,b+32|0,b);b=c[e>>2]|0;kj(a,b+64|0,b+32|0);b=1;while(1){if(b>>>0>=(c[f>>2]|0)>>>0)break;k=B(c[g>>2]|0,b)|0;k=lj((c[e>>2]|0)+(k<<5)|0)|0;d=(B(c[g>>2]|0,b)|0)+-1|0;d=lj((c[e>>2]|0)+(d<<5)|0)|0;i=(B(c[g>>2]|0,b)|0)+-1|0;i=Ng((c[e>>2]|0)+(i<<5)|0)|0;j=(B(c[g>>2]|0,b)|0)+-1|0;Xi(k,d,i,Og((c[e>>2]|0)+(j<<5)|0)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;jj(a,i+(j+1<<5)|0,i+(j<<5)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;kj(a,i+(j+2<<5)|0,i+(j+1<<5)|0);b=b+1|0}zb=h;return}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=zb;zb=zb+16|0;e=f;if((Mg(b)|0)!=2){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27639)|0,27081)|0,35e3)|0,357)|0,35007)|0,27686)|0;IE(e,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(g,h)|0;ME(g)|0;ua()}switch(Mg(d)|0){case 1:{e=lj(b)|0;g=c[a+32>>2]|0;h=Di(d)|0;Vi(e,g,h,Ng(d)|0,Og(d)|0);break}case 2:{e=lj(b)|0;g=c[a+44>>2]|0;h=Di(d)|0;Wi(e,g,h,Ng(d)|0,Og(d)|0);break}case 0:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27722,Yf(27722)|0);mj(h,e);Q(h|0,13208,5)}default:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27741,Yf(27741)|0);mj(h,e);Q(h|0,13208,5)}}zb=f;return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=zb;zb=zb+32|0;f=e;j=c[a+56>>2]|0;i=Mg(d)|0;h=Ng(d)|0;g=Og(d)|0;kq(f,j,i,h,g,Ei(d)|0,1);jj(a,f,d);jj(a,b,f);rq(f);zb=e;return}function lj(a){a=a|0;return c[a+24>>2]|0}function mj(a,b){a=a|0;b=b|0;c[a>>2]=15708;fO(a+4|0,b);return}function nj(a){a=a|0;c[a>>2]=15708;jO(a+4|0);return}function oj(a){a=a|0;nj(a);SA(a);return}function pj(b){b=b|0;b=b+4|0;if((a[b+11>>0]|0)<0)b=c[b>>2]|0;return b|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;m=c+-1|0;j=b+(c<<2)|0;h=b+4|0;n=+f[b>>2];o=+f[h>>2]-n;n=+f[j>>2]-n;p=+y(+n,+o)+3.141592653589793;f[a>>2]=p;n=+u(+(o*o+n*n));f[a+4>>2]=n;g=1;e=j;while(1){i=a+8|0;e=e+4|0;if(g>>>0>=m>>>0)break;l=h+4|0;o=+f[l>>2]-+f[h+-4>>2];p=+f[e>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;g=g+1|0;h=l;a=i}l=d+-1|0;p=+f[h>>2];o=p-+f[h+-4>>2];p=+f[e>>2]-p;n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;k=1;g=i;d=j+(c<<2)|0;h=b;a=j;while(1){e=g+8|0;if(k>>>0>=l>>>0)break;j=a+4|0;o=+f[j>>2]-+f[a>>2];p=+f[d>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;i=1;g=g+16|0;while(1){a=d+4|0;e=h+4|0;if(i>>>0>=m>>>0)break;q=j+4|0;o=+f[q>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;i=i+1|0;d=a;h=e;j=q;g=g+8|0}o=+f[j>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;k=k+1|0;d=d+8|0;h=h+8|0;a=j+4|0}h=b+((B(l,c)|0)<<2)|0;a=h+(0-c<<2)|0;q=h+4|0;p=+f[h>>2];o=+f[q>>2]-p;p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;h=1;g=q;while(1){d=e+8|0;a=a+4|0;if(h>>>0>=m>>>0)break;q=g+4|0;o=+f[q>>2]-+f[g+-4>>2];p=+f[g>>2]-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;h=h+1|0;e=d;g=q}p=+f[g>>2];o=p-+f[g+-4>>2];p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;return}function rj(a){a=a|0;return 536870911}function sj(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;a=a+12|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tj(a){a=a|0;mh(a+40|0);gh(a+28|0);return}function uj(a,b,d,e,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=+i;j=+j;k=k|0;l=+l;var m=0,n=0,o=0;c[a>>2]=e;n=a+4|0;c[n>>2]=g;c[a+8>>2]=h;f[a+12>>2]=i;f[a+16>>2]=j;c[a+20>>2]=k;f[a+24>>2]=l;fh(a+28|0,h);o=a+40|0;Rg(o,B(c[n>>2]|0,c[a>>2]|0)|0);k=0;while(1){if((k|0)==(e|0))break;a=B(k,g)|0;m=b>>>k;n=d>>>k;h=0;while(1){if((h|0)==(g|0))break;cq((c[o>>2]|0)+(h+a<<5)|0,2,m,n,-1,2);h=h+1|0}k=k+1|0}return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=zb;zb=zb+16|0;f=g;e=a+40|0;a=0;while(1){d=Ah(b)|0;if(a>>>0>=(c[d+4>>2]|0)-(c[d>>2]|0)>>5>>>0){a=3;break}d=Ah(b)|0;d=(c[d>>2]|0)+(a<<5)|0;h=Ng(d)|0;if((h|0)!=((Ei(d)|0)>>>2|0)){a=5;break}j=wj((c[e>>2]|0)+(a<<5)|0)|0;i=xj(d)|0;h=Ng(d)|0;qj(j,i,h,Og(d)|0);a=a+1|0}if((a|0)==3){zb=g;return}else if((a|0)==5){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27784)|0,27845)|0,35e3)|0,96)|0,35007)|0,27934)|0;IE(f,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(f,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(f);QE(j,i)|0;ME(j)|0;ua()}}function wj(a){a=a|0;return c[a+24>>2]|0}function xj(a){a=a|0;return c[a+24>>2]|0}function yj(a,b,d,e,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;i=+i;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0;F=zb;zb=zb+48|0;D=F+32|0;E=F+24|0;w=F+16|0;x=F+12|0;y=F+8|0;z=F+4|0;C=F;if(!(i>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,27975)|0,27845)|0,35e3)|0,119)|0,35007)|0,28005)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}l=a+4|0;v=(B(c[l>>2]|0,e)|0)+g|0;m=a+40|0;if(!(+((Ng((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>i)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28024)|0,27845)|0,35e3)|0,120)|0,35007)|0,28104)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}if(!(j>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28140)|0,27845)|0,35e3)|0,121)|0,35007)|0,28170)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}v=(B(c[l>>2]|0,e)|0)+g|0;if(!(+((Og((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>j)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28189)|0,27845)|0,35e3)|0,122)|0,35007)|0,28270)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}q=(B(c[l>>2]|0,e)|0)+g|0;q=(c[m>>2]|0)+(q<<5)|0;if((ah(q)|0)!=2){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28307)|0,27845)|0,35e3)|0,126)|0,35007)|0,28348)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}c[d>>2]=0;e=~~(i+.5);l=~~(j+.5);a:do if(((e|0)>=0?!((l|0)<0|(Ng(q)|0)>>>0<=e>>>0):0)?(Og(q)|0)>>>0>l>>>0:0){n=+zj(1.0,+f[a+12>>2]*k);s=-1.0/(+ji(n)*2.0);n=n*+f[a+16>>2];t=+A(+(+ji(n)));m=~~(n+.5);p=Aj(0,e-m|0)|0;o=Bj(m+e|0,(Ng(q)|0)+-1|0)|0;e=Aj(0,l-m|0)|0;m=Bj(m+l|0,(Og(q)|0)+-1|0)|0;u=a+28|0;v=c[u>>2]|0;Cj(v,(c[a+32>>2]|0)-v>>2);v=a+8|0;while(1){if((e|0)>(m|0))break;k=+ji(+(e|0)-j);g=ch(q,e)|0;l=p;while(1){if((l|0)>(o|0))break;n=k+ +ji(+(l|0)-i);if(!(n>t)){G=g+(l<<1<<2)|0;n=+Dj(s*n);r=c[v>>2]|0;Ej(c[u>>2]|0,+f[G>>2]*+(r|0)*.159154943091895,n*+f[G+4>>2],r)}l=l+1|0}e=e+1|0}l=a+20|0;e=0;while(1){if((e|0)>=(c[l>>2]|0))break;G=c[u>>2]|0;Fj(G,G,c[v>>2]|0,15720);e=e+1|0}l=c[v>>2]|0;e=0;s=0.0;while(1){if((e|0)>=(l|0))break;j=+f[(c[u>>2]|0)+(e<<2)>>2];e=e+1|0;s=j>s?j:s}if(!(s==0.0)){if(!(s>0.0)){G=Xf(Xf(PE(Xf(Xf(Xf(56032,28379)|0,27845)|0,35e3)|0,218)|0,35007)|0,28417)|0;IE(D,G+(c[(c[G>>2]|0)+-12>>2]|0)|0);r=XF(D,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(D);QE(G,r)|0;ME(G)|0;ua()}p=D+4|0;q=E+4|0;r=w+4|0;o=a+24|0;m=0;e=l;while(1){if((m|0)>=(e|0))break a;n=+(m|0);f[D>>2]=n;l=c[u>>2]|0;G=l+(m<<2)|0;a=c[G>>2]|0;c[p>>2]=a;g=m+-1|0;f[E>>2]=+(g|0);g=c[l+(((g+e|0)%(e|0)|0)<<2)>>2]|0;c[q>>2]=g;m=m+1|0;f[w>>2]=+(m|0);l=c[l+(((m+e|0)%(e|0)|0)<<2)>>2]|0;c[r>>2]=l;k=(c[h>>2]=a,+f[h>>2]);if(+f[G>>2]>s*+f[o>>2]?(j=(c[h>>2]=l,+f[h>>2]),k>(c[h>>2]=g,+f[h>>2])&k>j):0){f[C>>2]=n;if(Gj(x,y,z,E,D,w)|0)Hj(C,+f[x>>2],+f[y>>2],+f[z>>2])|0;j=+(c[v>>2]|0);e=c[d>>2]|0;f[b+(e<<2)>>2]=(+f[C>>2]+.5+j)/j*6.283185307179586%6.283185307179586;c[d>>2]=e+1;e=c[v>>2]|0}}}}while(0);zb=F;return}function zj(a,b){a=+a;b=+b;return +(a>b?a:b)}function Aj(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function Bj(a,b){a=a|0;b=b|0;return ((a|0)<(b|0)?a:b)|0}function Cj(a,b){a=a|0;b=b|0;aP(a|0,0,b<<2|0)|0;return}function Dj(a){a=+a;return +(((((((a+6.0)*a+30.0)*a+120.0)*a+360.0)*a+720.0)*a+720.0)*.0013888888)}function Ej(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var g=0.0,h=0,i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;if(!a){h=Xf(Xf(PE(Xf(Xf(Xf(56032,28448)|0,28484)|0,35e3)|0,139)|0,35007)|0,28571)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(h,k)|0;ME(h)|0;ua()}if(b+.5>0.0?(g=b+-.5,g<+(e|0)):0){if(!(d>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28702)|0,28484)|0,35e3)|0,141)|0,35007)|0,28740)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}if((e|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28769)|0,28484)|0,35e3)|0,142)|0,35007)|0,28806)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}k=~~+s(+g);b=b-+(k|0)+-.5;g=1.0-b;h=(k+e|0)%(e|0)|0;e=(k+1|0)%(e|0)|0;if(!(g>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28835)|0,28484)|0,35e3)|0,150)|0,35007)|0,28866)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}if(!(b>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28886)|0,28484)|0,35e3)|0,151)|0,35007)|0,28917)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((h|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28937)|0,28484)|0,35e3)|0,152)|0,35007)|0,28985)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((e|0)>-1){l=a+(h<<2)|0;f[l>>2]=g*d+ +f[l>>2];l=a+(e<<2)|0;f[l>>2]=b*d+ +f[l>>2];zb=j;return}else{l=Xf(Xf(PE(Xf(Xf(Xf(56032,29011)|0,28484)|0,35e3)|0,153)|0,35007)|0,29059)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}}l=Xf(Xf(PE(Xf(Xf(Xf(56032,28597)|0,28484)|0,35e3)|0,140)|0,35007)|0,28662)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;k=+f[b>>2];g=c+-1|0;h=b+(g<<2)|0;i=d+4|0;j=d+8|0;e=+f[h>>2];c=0;while(1){if((c|0)==(g|0))break;m=+f[b+(c<<2)>>2];l=c+1|0;f[a+(c<<2)>>2]=e*+f[d>>2]+m*+f[i>>2]+ +f[j>>2]*+f[b+(l<<2)>>2];e=m;c=l}f[a+(g<<2)>>2]=e*+f[d>>2]+ +f[i>>2]*+f[h>>2]+k*+f[j>>2];return}function Gj(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;h=+f[g>>2];k=+f[e>>2];l=+f[d>>2];j=h-l;h=(h-k)*j;i=l-k;j=i*j;if(i==0.0|(h==0.0|j==0.0)){f[a>>2]=0.0;f[b>>2]=0.0;b=0;h=0.0}else{l=l*l;m=e+4|0;n=+f[m>>2];e=d+4|0;h=(+f[g+4>>2]-n)/h-(+f[e>>2]-n)/j;f[a>>2]=h;h=(+f[e>>2]-+f[m>>2]+(k*k-l)*h)/i;f[b>>2]=h;b=1;h=+f[e>>2]-l*+f[a>>2]-h*+f[d>>2]}f[c>>2]=h;return b|0}function Hj(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;if(b==0.0)a=0;else{f[a>>2]=-c/(b*2.0);a=1}return a|0}function Ij(a){a=a|0;var b=0,d=0;c[a>>2]=0;d=tB(24)|0;Jj(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Kj(b);SA(b)}return}function Jj(a){a=a|0;var b=0,d=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=1065353216;d=tB(840)|0;$j(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Mj(b);SA(b)}return}function Kj(a){a=a|0;var b=0;Lj(a+4|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0){Mj(b);SA(b)}return}function Lj(a){a=a|0;Yj(a);return}function Mj(a){a=a|0;Nj(a+788|0);kp(a+652|0);Oj(a+636|0);Pj(a+316|0);yh(a+160|0);Qi(a+92|0);Qj(a+72|0);Rj(a+64|0);Sj(a+12|0);return}function Nj(a){a=a|0;Wj(a+24|0);Xj(a+12|0);gh(a);return}function Oj(a){a=a|0;Sj(a);return}function Pj(a){a=a|0;return}function Qj(a){a=a|0;Tj(a);return}function Rj(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function Sj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Tj(a){a=a|0;var b=0;Uj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Uj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Vj(b+8|0);Pf(b,20);b=a}return}function Vj(a){a=a|0;Rj(a+4|0);return}function Wj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Xj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Yj(a){a=a|0;var b=0;Zj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Zj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;_j(b+8|0);Pf(b,24);b=a}return}function _j(a){a=a|0;lg(a+4|0);return}function $j(b){b=b|0;var d=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+64|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+88>>2]=1065353216;_i(b+92|0);d=b+160|0;dh(d);Gp(b+316|0);ak(b+636|0);jp(b+652|0);bk(b+788|0,.009999999776482582,1024,1064,50);ck(d,3.0);dk(d,4.0);eh(d,500);f[b+4>>2]=3.0;c[b>>2]=8;a[b+8>>0]=1;return}function ak(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;f[a+12>>2]=.699999988079071;return}function bk(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=a;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));ek(a,b,d,e,f);return}function ck(a,b){a=a|0;b=+b;f[a+52>>2]=b;return}function dk(a,b){a=a|0;b=+b;f[a+56>>2]=b;return}function ek(a,b,d,e,g){a=a|0;b=+b;d=d|0;e=e|0;g=g|0;fh(a,d*9|0);fk(a+24|0,d);f[a+36>>2]=b;c[a+40>>2]=d;c[a+44>>2]=e;c[a+48>>2]=g;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>3;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<3)}else gk(a,b-e|0);return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>3>>>0>>0){d=(d-(c[a>>2]|0)>>3)+b|0;e=ik(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>2;jk(f,k>>3>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>3,a+8|0);kk(f,b);lk(a,f);mk(f);break}}else hk(a,b);while(0);zb=i;return}function hk(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function ik(a){a=a|0;return 536870911}function jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function kk(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function nk(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=0;if(b|0){Kj(b);SA(b)}return}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function pk(a){a=a|0;return a+4|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((b|0)<(c|0)|(a|0)<(c|0))break;d=d+1|0;b=b>>1;a=a>>1}return d|0}function rk(a){a=a|0;return c[a>>2]|0}function sk(a){a=a|0;return c[a+4>>2]|0}function tk(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;bm(a+8|0);cm(a+36|0);return}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15740;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;Rl(a,e);zb=d;return}function vk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wk(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xk(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;i=k+20|0;j=k;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,30067)|0,35e3)|0,212)|0,35007)|0,33688)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(h,l)|0;ME(h)|0;ua()}if(!e){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30146)|0,30067)|0,35e3)|0,213)|0,35007)|0,30178)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;if((c[l+4>>2]|0)==(c[l>>2]|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30195)|0,30067)|0,35e3)|0,214)|0,35007)|0,30247)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Ng(c[l>>2]|0)|0;if((l|0)!=(rk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30264)|0,30067)|0,35e3)|0,215)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Og(c[l>>2]|0)|0;if((l|0)!=(sk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30372)|0,30067)|0,35e3)|0,216)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}Rh(e,d);h=Ml(e)|0;Nl(i,((c[h+4>>2]|0)-(c[h>>2]|0)|0)/36|0);h=0;while(1){l=Ml(e)|0;if(h>>>0>=(((c[l+4>>2]|0)-(c[l>>2]|0)|0)/36|0)>>>0)break;l=Ml(e)|0;l=c[l>>2]|0;gg(j,+f[l+(h*36|0)>>2],+f[l+(h*36|0)+4>>2],+f[l+(h*36|0)+8>>2],+f[l+(h*36|0)+28>>2],+f[l+(h*36|0)+24>>2]>0.0);l=(c[i>>2]|0)+(h*20|0)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];a[l+16>>0]=a[j+16>>0]|0;Of(j);h=h+1|0}Hp(g,zk(b)|0,d,i);Nf(i);zb=k;return}function yk(){if((a[54528]|0)==0?nB(54528)|0:0){sq(55464);pB(54528)}return 55464}function zk(a){a=a|0;return a+8|0}function Ak(a){a=a|0;return ((c[a+20>>2]|0)-(c[a+16>>2]|0)|0)/20|0|0}function Bk(a){a=a|0;var b=0,d=0;d=a+36|0;Gk(d,128);Hk(d,8);Ik(d,8);Jk(d,16);a=a+8|0;b=Kk(a)|0;b=c[b>>2]|0;Lk(d,b,Ak(a)|0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Dk(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ek(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Dk(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(20)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Fk(a,b)}}else Fk(a,b);return}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Gk(a,b){a=a|0;b=b|0;Ll(a+12|0,b);return}function Hk(a,b){a=a|0;b=b|0;Kl(a+12|0,b);return}function Ik(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function Jk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function Kk(a){a=a|0;return a+4|0}function Lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;g=i;Mk(g,d);f=c[g>>2]|0;h=(c[g+4>>2]|0)-f>>2;e=0;while(1){if((e|0)==(h|0))break;c[f+(e<<2)>>2]=e;e=e+1|0}Nk(a,b,d,f,h);Xj(g);zb=i;return}function Mk(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Jl(a,b);Fl(a,b)}return}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=tB(128)|0;Pk(g,Ok(a)|0);i=a+8|0;h=c[i>>2]|0;c[i>>2]=g;if(h){Qk(h);SA(h);g=c[i>>2]|0}Rk(g,0);Sk(a,c[i>>2]|0,b,d,e,f);return}function Ok(a){a=a|0;var b=0;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;return a|0}function Pk(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Il(b+4|0,96);return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+104|0;f=a+108|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0){Qk(b);SA(b)}d=d+1|0}Xj(a+116|0);Hl(e);return}function Rk(b,c){b=b|0;c=c|0;a[b+100>>0]=c&1;return}function Sk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+32|0;o=q+20|0;p=q;h=a+12|0;n=Tk(h)|0;if((Aj(n,c[a+108>>2]|0)|0)>=(g|0)){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break;o=c[f+(h<<2)>>2]|0;p=Uk(b)|0;c[(c[p>>2]|0)+(h<<2)>>2]=o;h=h+1|0}zb=q;return}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=1065353216;Wk(h,d,e,f,g);m=Xk(h)|0;n=m+4|0;i=c[n>>2]|0;h=c[m>>2]|0;if((i-h>>2|0)!=(g|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29190)|0,35e3)|0,363)|0,35007)|0,29284)|0;IE(o,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(o,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(o);QE(l,k)|0;ME(l)|0;ua()}l=0;while(1){if(l>>>0>=i-h>>2>>>0){h=10;break}h=c[h+(l<<2)>>2]|0;if((h|0)==-1){h=12;break}if((h|0)>=(g|0)){h=14;break}h=f+(h<<2)|0;if((c[h>>2]|0)>=(e|0)){h=16;break}h=Yk(p,h)|0;i=f+(l<<2)|0;j=h+4|0;k=c[j>>2]|0;if((k|0)==(c[h+8>>2]|0))Zk(h,i);else{c[k>>2]=c[i>>2];c[j>>2]=k+4}l=l+1|0;h=c[m>>2]|0;i=c[n>>2]|0}if((h|0)==10){h=p+12|0;a:do if((c[h>>2]|0)==1){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break a;e=c[f+(h<<2)>>2]|0;o=Uk(b)|0;c[(c[o>>2]|0)+(h<<2)>>2]=e;h=h+1|0}}else{g=_k(b)|0;$k(g,c[h>>2]|0);h=p+8|0;while(1){h=c[h>>2]|0;if(!h)break a;i=h;l=i+12|0;m=i+16|0;if((c[m>>2]|0)==(c[l>>2]|0))break;j=tB(128)|0;k=Ok(a)|0;al(j,k,d+((c[i+8>>2]|0)*96|0)|0);c[o>>2]=j;Rk(j,0);i=_k(b)|0;j=i+4|0;k=c[j>>2]|0;if((k|0)==(c[i+8>>2]|0))bl(i,o);else{c[k>>2]=c[o>>2];c[j>>2]=(c[j>>2]|0)+4}g=c[l>>2]|0;Sk(a,c[o>>2]|0,d,e,g,(c[m>>2]|0)-g>>2)}b=Xf(Xf(PE(Xf(Xf(Xf(56032,29507)|0,29190)|0,35e3)|0,387)|0,35007)|0,29553)|0;IE(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);e=XF(o,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(o);QE(b,e)|0;ME(b)|0;ua()}while(0);cl(p);zb=q;return}else if((h|0)==12){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29306)|0,29190)|0,35e3)|0,365)|0,35007)|0,29349)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==14){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29371)|0,29190)|0,35e3)|0,366)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==16){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29446)|0,29190)|0,35e3)|0,367)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}}function Tk(a){a=a|0;return c[a+4>>2]|0}function Uk(a){a=a|0;return a+116|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else El(a,b-e|0);return}function Wk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+16|0;o=s;p=a+4|0;g=c[p>>2]|0;q=a+12|0;r=a+16|0;if((g|0)!=((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,154)|0,35007)|0,29707)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((d|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,155)|0,35007)|0,29792)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((f|0)>(d|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,156)|0,35007)|0,29879)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(f|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29906)|0,29635)|0,35e3)|0,157)|0,35007)|0,29947)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}j=a+24|0;c[o>>2]=-1;sl(j,f,o);k=a+36|0;c[o>>2]=-1;sl(k,f,o);l=a+48|0;Vk(l,f);n=c[l>>2]|0;m=a+52|0;tl(n,(c[m>>2]|0)-n>>2,0);n=a+8|0;g=-1;i=0;while(1){if((i|0)>=(c[n>>2]|0))break;h=c[l>>2]|0;ul(h,(c[m>>2]|0)-h>>2,c[p>>2]|0,c[a>>2]|0);h=vl(a,k,b,d,e,f,c[l>>2]|0,c[p>>2]|0)|0;if(h>>>0>>0){wl(j,k);xl(c[q>>2]|0,c[l>>2]|0,c[p>>2]|0);g=h}i=i+1|0}if((c[p>>2]|0)==((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){zb=s;return}else{s=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,187)|0,35007)|0,29707)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(o,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(o);QE(s,r)|0;ME(s)|0;ua()}}function Xk(a){a=a|0;return a+24|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){pl(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;ql(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;ml(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[g>>2]=f+4;nl(a,d);ol(d);zb=h;return}}function _k(a){a=a|0;return a+104|0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0>>0){hl(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);il(a,d);jl(d)}zb=f;return}function al(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;kl(b+4|0,e,96);return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=gl(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;hl(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;il(a,d);jl(d);zb=h;return}}function cl(a){a=a|0;dl(a);return}function dl(a){a=a|0;var b=0;el(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function el(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;fl(b+8|0);Pf(b,24);b=a}return}function fl(a){a=a|0;Xj(a+4|0);return}function gl(a){a=a|0;return 1073741823}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function jl(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c|0)|0;return}function ll(a){a=a|0;return 1073741823}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function ql(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)rl(a,b)}}else rl(a,b);return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+(b<<2)}else Cl(a,b-f|0,d);return}function tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a:do if((b|0)>=1){c[a>>2]=d;e=1;while(1){if((e|0)==(b|0))break a;f=d+1|0;c[a+(e<<2)>>2]=f;e=e+1|0;d=f}}while(0);return}function ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){if((f|0)>=(d|0))break;i=a+(f<<2)|0;g=a+(((Bl(e)|0)%(b|0)|0)<<2)|0;h=c[i>>2]|0;c[i>>2]=c[g>>2];c[g>>2]=h;f=f+1|0}return}function vl(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;a=o;if(((c[b+4>>2]|0)-(c[b>>2]|0)>>2|0)!=(g|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29635)|0,35e3)|0,198)|0,35007)|0,29967)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((e|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,199)|0,35007)|0,29792)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(e|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,200)|0,35007)|0,29879)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29996)|0,29635)|0,35e3)|0,201)|0,35007)|0,30035)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}k=0;m=0;while(1){if((m|0)>=(g|0))break;n=f+(m<<2)|0;l=0;a=-1;while(1){if((l|0)==(i|0))break;e=h+(l<<2)|0;j=yl(d+((c[n>>2]|0)*96|0)|0,d+((c[f+(c[e>>2]<<2)>>2]|0)*96|0)|0)|0;if(j>>>0>>0){c[(c[b>>2]|0)+(m<<2)>>2]=c[e>>2];a=j}l=l+1|0}k=a+k|0;m=m+1|0}zb=o;return k|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function xl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function yl(a,b){a=a|0;b=b|0;return zl(a,b)|0}function zl(a,b){a=a|0;b=b|0;var d=0;d=Al(c[a>>2]|0,c[b>>2]|0)|0;d=(Al(c[a+4>>2]|0,c[b+4>>2]|0)|0)+d|0;d=d+(Al(c[a+8>>2]|0,c[b+8>>2]|0)|0)|0;d=d+(Al(c[a+12>>2]|0,c[b+12>>2]|0)|0)|0;d=d+(Al(c[a+16>>2]|0,c[b+16>>2]|0)|0)|0;d=d+(Al(c[a+20>>2]|0,c[b+20>>2]|0)|0)|0;d=d+(Al(c[a+24>>2]|0,c[b+24>>2]|0)|0)|0;d=d+(Al(c[a+28>>2]|0,c[b+28>>2]|0)|0)|0;d=d+(Al(c[a+32>>2]|0,c[b+32>>2]|0)|0)|0;d=d+(Al(c[a+36>>2]|0,c[b+36>>2]|0)|0)|0;d=d+(Al(c[a+40>>2]|0,c[b+40>>2]|0)|0)|0;d=d+(Al(c[a+44>>2]|0,c[b+44>>2]|0)|0)|0;d=d+(Al(c[a+48>>2]|0,c[b+48>>2]|0)|0)|0;d=d+(Al(c[a+52>>2]|0,c[b+52>>2]|0)|0)|0;d=d+(Al(c[a+56>>2]|0,c[b+56>>2]|0)|0)|0;d=d+(Al(c[a+60>>2]|0,c[b+60>>2]|0)|0)|0;d=d+(Al(c[a+64>>2]|0,c[b+64>>2]|0)|0)|0;d=d+(Al(c[a+68>>2]|0,c[b+68>>2]|0)|0)|0;d=d+(Al(c[a+72>>2]|0,c[b+72>>2]|0)|0)|0;d=d+(Al(c[a+76>>2]|0,c[b+76>>2]|0)|0)|0;d=d+(Al(c[a+80>>2]|0,c[b+80>>2]|0)|0)|0;d=d+(Al(c[a+84>>2]|0,c[b+84>>2]|0)|0)|0;d=d+(Al(c[a+88>>2]|0,c[b+88>>2]|0)|0)|0;return d+(Al(c[a+92>>2]|0,c[b+92>>2]|0)|0)|0}function Al(a,b){a=a|0;b=b|0;b=b^a;b=b-(b>>>1&1431655765)|0;b=(b>>>2&858993459)+(b&858993459)|0;return (B((b>>>4)+b&252645135,16843009)|0)>>>24|0}function Bl(a){a=a|0;var b=0;b=((c[a>>2]|0)*214013|0)+2531011|0;c[a>>2]=b;return b>>>16&32767|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;h=k;i=a+8|0;j=a+4|0;e=c[j>>2]|0;g=e;do if((c[i>>2]|0)-e>>2>>>0>>0){e=(e-(c[a>>2]|0)>>2)+b|0;f=ll(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;l=(c[i>>2]|0)-g|0;i=l>>1;ml(h,l>>2>>>0>>1>>>0?(i>>>0>>0?e:i):f,(c[j>>2]|0)-g>>2,a+8|0);Dl(h,b,d);nl(a,h);ol(h);break}}else{e=b;f=g;while(1){c[f>>2]=c[d>>2];e=e+-1|0;if(!e)break;else f=f+4|0}c[j>>2]=g+(b<<2)}while(0);zb=k;return}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+8|0;e=c[f>>2]|0;a=b;g=e;while(1){c[g>>2]=c[d>>2];a=a+-1|0;if(!a)break;else g=g+4|0}c[f>>2]=e+(b<<2);return}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ll(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;ml(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);Gl(f,b);nl(a,f);ol(f);break}}else Fl(a,b);while(0);zb=i;return}function Fl(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Gl(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Hl(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Il(a,b){a=a|0;b=b|0;aP(a|0,0,b|0)|0;return}function Jl(a,b){a=a|0;b=b|0;var d=0;if((ll(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Kl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;Vk(a+12|0,b);return}function Ll(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ml(a){a=a|0;return a+60|0}function Nl(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Ol(a,b);Pl(a,b)}return}function Ol(a,b){a=a|0;b=b|0;var d=0;if((ug(a)|0)>>>0>>0)EO(a);if(b>>>0>214748364){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*20|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*20|0);return}}function Pl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ql(b){b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;return}function Rl(a,b){a=a|0;b=b|0;return}function Sl(a){a=a|0;Tl(a+36|0);Ul(a+8|0);return}function Tl(a){a=a|0;var b=0;Vl(a+84|0);Xj(a+72|0);Wl(a+12|0);b=a+8|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Qk(a);SA(a)}return}function Ul(a){a=a|0;Nf(a+16|0);Mf(a+4|0);return}function Vl(a){a=a|0;Xl(a);return}function Wl(a){a=a|0;Xj(a+48|0);Xj(a+36|0);Xj(a+24|0);Xj(a+12|0);return}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-8|0;Yl(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Yl(a){a=a|0;return}function Zl(a){a=a|0;ZN(a);SA(a);return}function _l(a){a=a|0;a=c[a+12>>2]|0;if(a|0){Sl(a);SA(a)}return}function $l(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==30447?a+12|0:0)|0}function am(a){a=a|0;Pf(a,16);return}function bm(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function cm(a){a=a|0;var b=0,d=0;c[a>>2]=1234;c[a+4>>2]=0;c[a+8>>2]=0;b=a+12|0;dm(b,a);d=a+72|0;c[a+100>>2]=0;c[a+104>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[a+108>>2]=16;Kl(b,8);Ll(b,1);return}function dm(a,b){a=a|0;b=b|0;c[a>>2]=b;a=a+4|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function em(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+32|0;m=l+24|0;j=l+12|0;k=l+16|0;n=l+8|0;i=l;c[j>>2]=h;h=tB(148)|0;tk(h);c[n>>2]=0;c[m>>2]=c[n>>2];uk(k,h,m);vk(c[k>>2]|0,f);wk(c[k>>2]|0,g);fm(zk(c[k>>2]|0)|0,96);g=gm(zk(c[k>>2]|0)|0)|0;f=b+4|0;hm(g,((c[f>>2]|0)-(c[b>>2]|0)|0)/20|0);g=gm(zk(c[k>>2]|0)|0)|0;if((g|0)!=(b|0))im(g,c[b>>2]|0,c[f>>2]|0);g=Kk(zk(c[k>>2]|0)|0)|0;f=d+4|0;jm(g,(c[f>>2]|0)-(c[d>>2]|0)|0);g=Kk(zk(c[k>>2]|0)|0)|0;if((g|0)!=(d|0))km(g,c[d>>2]|0,c[f>>2]|0);Bk(c[k>>2]|0);f=c[c[a>>2]>>2]|0;c[i>>2]=c[k>>2];g=c[k+4>>2]|0;c[i+4>>2]=g;if(g|0){n=g+4|0;c[n>>2]=(c[n>>2]|0)+1}lm(f,i,c[j>>2]|0);Rj(i);f=mm((c[a>>2]|0)+4|0,j)|0;if((f|0)!=(e|0))nm(f,c[e>>2]|0,c[e+4>>2]|0);Rj(k);zb=l;return}function fm(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gm(a){a=a|0;return a+16|0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/20|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*20|0)|0;while(1){if((d|0)==(a|0))break;f=d+-20|0;Of(f);d=f}c[g>>2]=a}}else Cm(a,b-e|0);return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b;l=(d-e|0)/20|0;f=a+8|0;i=c[a>>2]|0;g=i;do if(l>>>0>(((c[f>>2]|0)-i|0)/20|0)>>>0){Bm(a);e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=((c[f>>2]|0)-(c[a>>2]|0)|0)/20|0;k=j<<1;Ol(a,j>>>0>>1>>>0?(k>>>0>>0?l:k):e);Am(a,b,d,l);break}}else{k=a+4|0;j=((c[k>>2]|0)-i|0)/20|0;h=l>>>0>j>>>0;j=h?b+(j*20|0)|0:d;e=j-e|0;if(e|0)$O(i|0,b|0,e|0)|0;f=g+(((e|0)/20|0)*20|0)|0;if(h){Am(a,j,d,l-(((c[k>>2]|0)-(c[a>>2]|0)|0)/20|0)|0);break}e=c[k>>2]|0;while(1){if((e|0)==(f|0))break;l=e+-20|0;Of(l);e=l}c[k>>2]=f}while(0);return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+b}else xm(a,b-e|0);return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b;k=d-i|0;f=a+8|0;e=c[a>>2]|0;j=e;do if(k>>>0>((c[f>>2]|0)-e|0)>>>0){vm(a);e=mg(a)|0;if(e>>>0>>0)EO(a);else{i=(c[f>>2]|0)-(c[a>>2]|0)|0;j=i<<1;wm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);um(a,b,d,k);break}}else{h=a+4|0;g=(c[h>>2]|0)-e|0;f=k>>>0>g>>>0;g=f?b+g|0:d;e=g-i|0;if(e|0)$O(j|0,b|0,e|0)|0;if(f){um(a,g,d,k-(c[h>>2]|0)+(c[a>>2]|0)|0);break}else{c[h>>2]=j+e;break}}while(0);return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+4|0;e=i;c[e>>2]=d;a=a+72|0;if(ok(a,e)|0){i=O(16)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;gO(h,29085,Yf(29085)|0);mj(i,h);Q(i|0,13208,5)}f=Ck(a,e)|0;g=c[b>>2]|0;c[h>>2]=g;e=h+4|0;a=c[b+4>>2]|0;c[e>>2]=a;if(!a){d=e;a=0}else{d=a+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;a=c[e>>2]|0}c[h>>2]=c[f>>2];c[f>>2]=g;b=f+4|0;c[d>>2]=c[b>>2];c[b>>2]=a;Rj(h);zb=i;return}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){rm(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;sm(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b;k=(d-e|0)/12|0;f=a+8|0;j=c[a>>2]|0;i=j;do if(k>>>0>(((c[f>>2]|0)-j|0)/12|0)>>>0){pm(a);e=qg(a)|0;if(e>>>0>>0)EO(a);else{i=((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0;j=i<<1;qm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);om(a,b,d,k);break}}else{f=a+4|0;h=((c[f>>2]|0)-j|0)/12|0;g=k>>>0>h>>>0;h=g?b+(h*12|0)|0:d;e=h-e|0;if(e|0)$O(j|0,b|0,e|0)|0;if(g){om(a,h,d,k-(((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0)|0);break}else{c[f>>2]=i+(((e|0)/12|0)*12|0);break}}while(0);return}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(((a>>>0)/12|0)*12|0)}return}function pm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function qm(a,b){a=a|0;b=b|0;var d=0;if((qg(a)|0)>>>0>>0)EO(a);if(b>>>0>357913941){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*12|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*12|0);return}}function rm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function sm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)tm(a,b)}}else tm(a,b);return}function tm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a}return}function vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function wm(a,b){a=a|0;b=b|0;var d=0;if((mg(a)|0)>>>0>>0)EO(a);else{d=tB(b)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+b;return}}function xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if(((c[g>>2]|0)-d|0)>>>0>>0){d=d-(c[a>>2]|0)+b|0;e=mg(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k<<1;ng(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j|0,a+8|0);zm(f,b);og(a,f);pg(f);break}}else ym(a,b);while(0);zb=i;return}function ym(b,d){b=b|0;d=d|0;var e=0;e=b+4|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function zm(b,d){b=b|0;d=d|0;var e=0;e=b+8|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Am(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=a+4|0;while(1){if((b|0)==(d|0))break;e=c[a>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[a>>2]=(c[a>>2]|0)+20;b=b+20|0}return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;d=c[a>>2]|0;f=a+8|0;Pf(d,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/20|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/20|0)+b|0;e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/20|0;g=k<<1;vg(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/20|0,a+8|0);Dm(f,b);wg(a,f);xg(f);break}}else Pl(a,b);while(0);zb=i;return}function Dm(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Em(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+32|0;g=f;kq(g,b,1,d,e,d,1);e=Fm(c[c[a>>2]>>2]|0,g)|0;rq(g);zb=f;return e|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=zb;zb=zb+32|0;d=f;e=a+92|0;g=pk(e)|0;if(!(((c[g+4>>2]|0)!=(c[g>>2]|0)?(g=pk(e)|0,g=Ng(c[g>>2]|0)|0,(g|0)==(Ng(b)|0)):0)?(g=pk(e)|0,g=Og(c[g>>2]|0)|0,(g|0)==(Og(b)|0)):0)){g=Ng(b)|0;g=qk(g,Og(b)|0,8)|0;h=Ng(b)|0;$i(e,h,Og(b)|0,g)}Bq(d,29103);if(Sh(d)|0)ij(e,b);Cq(d);h=Gm(a,e)|0;zb=f;return h|0}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+64|0;e=k+16|0;j=k;g=k+56|0;h=k+48|0;i=b+160|0;l=rk(i)|0;f=Ah(d)|0;if(!((l|0)==(Ng(c[f>>2]|0)|0)?(f=sk(i)|0,l=Ah(d)|0,(f|0)==(Og(c[l>>2]|0)|0)):0))zh(i,d);f=b+64|0;m=tB(148)|0;tk(m);c[h>>2]=0;c[e>>2]=c[h>>2];uk(g,m,e);m=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=m;m=g+4|0;l=b+68|0;h=c[m>>2]|0;c[m>>2]=c[l>>2];c[l>>2]=h;Rj(g);l=c[f>>2]|0;h=Ah(d)|0;vk(l,Ng(c[h>>2]|0)|0);h=c[f>>2]|0;l=Ah(d)|0;wk(h,Og(c[l>>2]|0)|0);Bq(e,29117);if(Sh(e)|0)xk(c[f>>2]|0,d,i,b+316|0);Cq(e);m=yk()|0;Zp(e);i=(a[e+11>>0]|0)<0?c[e>>2]|0:e;l=Ak(zk(c[f>>2]|0)|0)|0;c[j>>2]=35129;c[j+4>>2]=i;c[j+8>>2]=30646;c[j+12>>2]=l;uq(m,8,30602,j);jO(e);m=Hm(b,c[f>>2]|0)|0;zb=k;return m|0}function Hm(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=zb;zb=zb+144|0;s=D+104|0;w=D;x=D+72|0;y=D+40|0;z=b+12|0;A=b+16|0;c[A>>2]=c[z>>2];B=b+24|0;c[B>>2]=-1;k=Jm(Im(d)|0)|0;l=b+8|0;m=b+636|0;n=b+652|0;o=s+4|0;p=s+8|0;q=b+788|0;r=x+4|0;t=x+8|0;u=b+4|0;v=b+28|0;e=b+80|0;while(1){e=c[e>>2]|0;if(!e)break;Bq(s,30936);do if(Sh(s)|0){E=(a[l>>0]|0)==0;g=Im(d)|0;j=e;h=j+12|0;i=zk(c[h>>2]|0)|0;if(E){E=Mm(m,g,i)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}else{E=Lm(m,g,i,Km(c[h>>2]|0)|0)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}Cq(s)}else{j=e;h=j+12|0;C=9}while(0);do if((C|0)==9){C=0;Cq(s);i=gm(zk(c[h>>2]|0)|0)|0;Bq(s,30953);if(Sh(s)|0){G=Nm(m)|0;F=Om(d)|0;E=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,G,F,E,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(s);break}}else g=-1;Cq(s);c[s>>2]=0;c[o>>2]=0;c[p>>2]=0;Bq(w,30970);if(Sh(w)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(w);Bq(x,30993);if(Sh(x)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0)Cq(x);else{Cq(x);c[x>>2]=0;c[r>>2]=0;c[t>>2]=0;Bq(y,31017);if(Sh(y)|0?(Tm(x,w,k,i,s,+f[u>>2]),(c[r>>2]|0)-(c[x>>2]|0)>>3>>>0<(c[b>>2]|0)>>>0):0)Cq(y);else C=20;do if((C|0)==20){C=0;Cq(y);Bq(y,31034);if(Sh(y)|0?(G=Im(d)|0,G=Um(m,G,zk(c[h>>2]|0)|0,w,10.0)|0,G>>>0<(c[b>>2]|0)>>>0):0){Cq(y);break}Cq(y);Bq(y,31051);if(Sh(y)|0){E=Nm(m)|0;F=Om(d)|0;G=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,E,F,G,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(y);break}}Cq(y);Bq(y,31068);if(Sh(y)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(y);Bq(y,31091);if(Sh(y)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0){Cq(y);break}Cq(y);c[r>>2]=c[x>>2];Bq(y,31115);if(Sh(y)|0)Tm(x,w,k,i,s,+f[u>>2]);Cq(y);G=(c[r>>2]|0)-(c[x>>2]|0)>>3;if(G>>>0>=(c[b>>2]|0)>>>0?G>>>0>(c[A>>2]|0)-(c[z>>2]|0)>>3>>>0:0){Vm(v,w);Wm(z,x);c[B>>2]=c[j+8>>2]}}while(0);Sj(x)}Sj(s)}while(0)}zb=D;return (c[B>>2]|0)>-1|0}function Im(a){a=a|0;return a+8|0}function Jm(a){a=a|0;return a+16|0}function Km(a){a=a|0;return a+36|0} +function Wu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=v+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){u=c[e>>2]|0;c[u+20>>2]=25;Sb[c[u>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[v+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[v+24+(g<<2)>>2]=0;c[v+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[v+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}u=v+20|0;if((c[u>>2]|0)==-1)return 1;p=c[e+432>>2]|0;q=e+368|0;if((c[q>>2]|0)<=0)return 1;r=e+436|0;s=v+188|0;o=0;a:while(1){t=c[f+(o<<2)>>2]|0;l=c[e+372+(o<<2)>>2]|0;n=c[e+344+(l<<2)>>2]|0;j=c[n+20>>2]|0;h=v+60+(j<<2)|0;k=v+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[v+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768){r=26;break a}h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=v+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[t>>1]=g;b:do if(c[r>>2]|0){m=c[n+24>>2]|0;l=v+124+(m<<2)|0;m=e+264+m|0;g=0;while(1){h=(c[l>>2]|0)+(g*3|0)|0;if(Xu(e,h)|0)break b;j=g+1|0;if(!(Xu(e,h+1|0)|0)){i=h;g=j;while(1){if((g|0)>=(c[r>>2]|0)){r=42;break a}h=i+3|0;j=g+1|0;if(!(Xu(e,i+4|0)|0)){i=h;g=j}else break}}k=Xu(e,s)|0;h=h+2|0;i=Xu(e,h)|0;if(i){if(Xu(e,h)|0){i=i<<1;h=(c[l>>2]|0)+((g|0)<(d[m>>0]|0|0)?189:217)|0;if(!(Xu(e,h)|0))g=i;else{g=i;do{g=g<<1;if((g|0)==32768){r=49;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}}else g=i;i=h+14|0;h=g>>1;if(h)do{n=(Xu(e,i)|0)==0;g=(n?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[t+(c[p+(j<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535;if((j|0)<(c[r>>2]|0))g=j;else break}}while(0);o=o+1|0;if((o|0)>=(c[q>>2]|0)){r=56;break}}if((r|0)==26){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==42){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==49){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==56)return 1;return 0}function Xu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b+468>>2]|0;m=g+16|0;f=c[m>>2]|0;k=g+20|0;if((f|0)<32768){h=b+440|0;j=b+24|0;i=g+12|0;f=c[k>>2]|0;while(1){g=f+-1|0;c[k>>2]=g;if((f|0)<1){if(!(c[h>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;l=a[l>>0]|0;f=l&255;a:do if(l<<24>>24==-1){b:while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;f=a[l>>0]|0;switch(f<<24>>24){case 0:{f=255;break a}case -1:break;default:break b}}c[h>>2]=f&255;f=0}while(0);g=c[k>>2]|0}else f=0;c[i>>2]=c[i>>2]<<8|f;f=g+8|0;c[k>>2]=f;if((g|0)<-8){f=g+9|0;c[k>>2]=f;if(!f){c[m>>2]=32768;g=0}else g=f}else g=f}f=c[m>>2]<<1;c[m>>2]=f;if((f|0)<32768)f=g;else break}}else{i=g+12|0;g=c[k>>2]|0}j=d[e>>0]|0;b=c[3360+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;h=f-l|0;c[m>>2]=h;f=h<>2]|0;if((g|0)>=(f|0)){c[i>>2]=g-f;c[m>>2]=l;f=j&128;if((h|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((h|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((h|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function Yu(a){a=a|0;var d=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;n=c[a+472>>2]|0;o=a+36|0;if((c[o>>2]|0)<=0)return;r=a+72|0;l=0;m=c[a+216>>2]|0;i=0;j=0;while(1){d=c[m+36>>2]|0;h=m+40|0;a:do switch((d<<8)+(c[h>>2]|0)|0){case 257:{d=0;k=13;break}case 514:{d=0;k=14;break}case 771:{d=0;k=15;break}case 1028:{d=0;k=16;break}case 1285:{d=0;k=17;break}case 1542:{d=0;k=18;break}case 1799:{d=0;k=19;break}case 2313:{d=0;k=20;break}case 2570:{d=0;k=21;break}case 2827:{d=0;k=22;break}case 3084:{d=0;k=23;break}case 3341:{d=0;k=24;break}case 3598:{d=0;k=25;break}case 3855:{d=0;k=26;break}case 4112:{d=0;k=27;break}case 4104:{d=0;k=28;break}case 3591:{d=0;k=29;break}case 3078:{d=0;k=30;break}case 2565:{d=0;k=31;break}case 2052:{d=0;k=32;break}case 1539:{d=0;k=33;break}case 1026:{d=0;k=34;break}case 513:{d=0;k=35;break}case 2064:{d=0;k=36;break}case 1806:{d=0;k=37;break}case 1548:{d=0;k=38;break}case 1290:{d=0;k=39;break}case 1032:{d=0;k=40;break}case 774:{d=0;k=41;break}case 516:{d=0;k=42;break}case 258:{d=0;k=43;break}case 2056:{d=c[r>>2]|0;switch(d|0){case 0:{k=44;break a}case 1:{k=45;break a}case 2:{k=46;break a}default:{d=c[a>>2]|0;c[d+20>>2]=49;Sb[c[d>>2]&255](a);d=i;k=j;break a}}}default:{k=c[a>>2]|0;c[k+20>>2]=7;c[k+24>>2]=d;c[(c[a>>2]|0)+28>>2]=c[h>>2];Sb[c[c[a>>2]>>2]&255](a);d=i;k=j}}while(0);c[n+4+(l<<2)>>2]=k;b:do if((c[m+52>>2]|0?(p=n+44+(l<<2)|0,(c[p>>2]|0)!=(d|0)):0)?(q=c[m+80>>2]|0,q|0):0){c[p>>2]=d;switch(d|0){case 0:{i=c[m+84>>2]|0;h=0;do{c[i+(h<<2)>>2]=e[q+(h<<1)>>1];h=h+1|0}while((h|0)!=64);break}case 1:{i=c[m+84>>2]|0;h=0;do{j=(B(b[5248+(h<<1)>>1]|0,e[q+(h<<1)>>1]|0)|0)+2048>>12;c[i+(h<<2)>>2]=j;h=h+1|0}while((h|0)!=64);break}case 2:{j=c[m+84>>2]|0;h=0;i=0;while(1){t=+g[5376+(h<<3)>>3];f[j+(i<<2)>>2]=t*+(e[q+(i<<1)>>1]|0)*.125;s=i|1;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.387039845*.125;s=s+1|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.306562965*.125;s=i|3;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.175875602*.125;u=s+1|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.125;u=s+2|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.785694958*.125;s=s+3|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.5411961*.125;s=i|7;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.275899379*.125;h=h+1|0;if((h|0)==8)break;else i=i+8|0}break}default:{u=c[a>>2]|0;c[u+20>>2]=49;Sb[c[u>>2]&255](a);break b}}}while(0);l=l+1|0;if((l|0)>=(c[o>>2]|0))break;else{m=m+88|0;i=d;j=k}}return}function Zu(d,e,g,h,i){d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=zb;zb=zb+256|0;j=q;o=c[d+336>>2]|0;n=j;m=c[e+84>>2]|0;l=8;while(1){e=b[g+16>>1]|0;d=b[g+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[g+48>>1]|0)==0?(b[g+64>>1]|0)==0:0)?(b[g+80>>1]|0)==0:0)?(b[g+96>>1]|0)==0:0)?(b[g+112>>1]|0)==0:0){k=+f[m>>2]*+(b[g>>1]|0);f[n>>2]=k;f[n+32>>2]=k;f[n+64>>2]=k;f[n+96>>2]=k;f[n+128>>2]=k;f[n+160>>2]=k;f[n+192>>2]=k;d=56}else{d=0;p=9}else p=9;if((p|0)==9){p=0;r=+f[m>>2]*+(b[g>>1]|0);x=+f[m+64>>2]*+(d<<16>>16);w=+f[m+128>>2]*+(b[g+64>>1]|0);t=+f[m+192>>2]*+(b[g+96>>1]|0);v=r+w;w=r-w;r=x+t;t=(x-t)*1.4142135381698608-r;x=v+r;r=v-r;v=w+t;t=w-t;w=+f[m+32>>2]*+(e<<16>>16);u=+f[m+96>>2]*+(b[g+48>>1]|0);z=+f[m+160>>2]*+(b[g+80>>1]|0);k=+f[m+224>>2]*+(b[g+112>>1]|0);s=u+z;u=z-u;z=w+k;k=w-k;w=s+z;y=(u+k)*1.8477590084075928;u=y-u*2.613126039505005-w;s=(z-s)*1.4142135381698608-u;k=y-k*1.0823922157287598-s;f[n>>2]=x+w;f[n+224>>2]=x-w;f[n+32>>2]=v+u;f[n+192>>2]=v-u;f[n+64>>2]=t+s;f[n+160>>2]=t-s;f[n+96>>2]=r+k;k=r-k;d=32}f[n+(d<<2)>>2]=k;if(l>>>0>1){n=n+4|0;m=m+4|0;g=g+2|0;l=l+-1|0}else break}e=o+-384|0;d=0;while(1){p=(c[h+(d<<2)>>2]|0)+i|0;s=+f[j>>2]+512.5;t=+f[j+16>>2];u=s+t;t=s-t;s=+f[j+8>>2];w=+f[j+24>>2];y=s+w;w=(s-w)*1.4142135381698608-y;s=u+y;y=u-y;u=t+w;w=t-w;t=+f[j+20>>2];v=+f[j+12>>2];x=t+v;v=t-v;t=+f[j+4>>2];z=+f[j+28>>2];k=t+z;z=t-z;t=x+k;r=(v+z)*1.8477590084075928;v=r-v*2.613126039505005-t;x=(k-x)*1.4142135381698608-v;z=r-z*1.0823922157287598-x;a[p>>0]=a[e+(~~(s+t)&1023)>>0]|0;a[p+7>>0]=a[e+(~~(s-t)&1023)>>0]|0;a[p+1>>0]=a[e+(~~(u+v)&1023)>>0]|0;a[p+6>>0]=a[e+(~~(u-v)&1023)>>0]|0;a[p+2>>0]=a[e+(~~(w+x)&1023)>>0]|0;a[p+5>>0]=a[e+(~~(w-x)&1023)>>0]|0;a[p+3>>0]=a[e+(~~(y+z)&1023)>>0]|0;a[p+4>>0]=a[e+(~~(y-z)&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else j=j+32|0}zb=q;return}function _u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(c[j>>2]|0,b[f>>1]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;p=B(c[j>>2]|0,b[f>>1]|0)|0;u=B(c[j+64>>2]|0,d<<16>>16)|0;t=B(c[j+128>>2]|0,b[f+64>>1]|0)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;s=t+p|0;t=p-t|0;p=q+u|0;q=((u-q|0)*362>>8)-p|0;u=p+s|0;p=s-p|0;s=q+t|0;q=t-q|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;w=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;e=w+r|0;r=w-r|0;w=d+t|0;d=t-d|0;t=w+e|0;v=(d+r|0)*473>>8;r=v-(r*669>>8)-t|0;e=((w-e|0)*362>>8)-r|0;d=v-(d*277>>8)-e|0;c[k>>2]=t+u;c[k+224>>2]=u-t;c[k+32>>2]=r+s;c[k+192>>2]=s-r;c[k+64>>2]=e+q;c[k+160>>2]=q-e;c[k+96>>2]=d+p;d=p-d|0;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){w=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=w;aP(f+1|0,w|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;w=c[e+16>>2]|0;r=w+i|0;w=i-w|0;t=c[e+24>>2]|0;v=t+d|0;t=((d-t|0)*362>>8)-v|0;p=v+r|0;v=r-v|0;r=t+w|0;t=w-t|0;w=c[e+20>>2]|0;s=c[e+12>>2]|0;u=s+w|0;s=w-s|0;w=c[e+28>>2]|0;i=w+j|0;w=j-w|0;q=i+u|0;m=(w+s|0)*473>>8;s=m-(s*669>>8)-q|0;u=((i-u|0)*362>>8)-s|0;w=m-(w*277>>8)-u|0;a[f>>0]=a[l+((q+p|0)>>>5&1023)>>0]|0;a[f+7>>0]=a[l+((p-q|0)>>>5&1023)>>0]|0;a[f+1>>0]=a[l+((s+r|0)>>>5&1023)>>0]|0;a[f+6>>0]=a[l+((r-s|0)>>>5&1023)>>0]|0;a[f+2>>0]=a[l+((u+t|0)>>>5&1023)>>0]|0;a[f+5>>0]=a[l+((t-u|0)>>>5&1023)>>0]|0;a[f+3>>0]=a[l+((w+v|0)>>>5&1023)>>0]|0;a[f+4>>0]=a[l+((v-w|0)>>>5&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function $u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;f=B(c[i+32>>2]|0,b[f+16>>1]|0)|0;a[(c[g>>2]|0)+h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+32|0;j=i;d=c[d+336>>2]|0;k=c[e+84>>2]|0;n=B(c[k>>2]|0,b[f>>1]|0)|0;q=B(c[k+64>>2]|0,b[f+32>>1]|0)|0;e=q+n<<13;q=n-q<<13;n=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;l=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;p=(l+n|0)*4433|0;n=p+(n*6270|0)|0;l=p+(B(l,-15137)|0)|0;p=n+e|0;c[j>>2]=p;c[j+24>>2]=e-n;n=l+q|0;c[j+8>>2]=n;l=q-l|0;c[j+16>>2]=l;q=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[k+68>>2]|0,b[f+34>>1]|0)|0;m=e+q<<13;e=q-e<<13;q=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;k=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;o=(k+q|0)*4433|0;f=o+(q*6270|0)|0;k=o+(B(k,-15137)|0)|0;o=f+m|0;c[j+4>>2]=o;f=m-f|0;c[j+28>>2]=f;m=k+e|0;c[j+12>>2]=m;k=e-k|0;c[j+20>>2]=k;e=d+-384|0;d=(c[g>>2]|0)+h|0;p=p+33587200|0;a[d>>0]=a[e+((p+o|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;n=n+33587200|0;a[d>>0]=a[e+((n+m|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=l+33587200|0;a[d>>0]=a[e+((l+k|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((l-k|0)>>>16&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;g=(c[j+24>>2]|0)+33587200|0;a[h>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g-f|0)>>>16&1023)>>0]|0;zb=i;return}function bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=zb;zb=zb+80|0;j=i;m=c[d+336>>2]|0;k=c[e+84>>2]|0;t=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;q=B((b[f+64>>1]|0)*5793|0,c[k+128>>2]|0)|0;r=q+t|0;t=(B(q,-2)|0)+t>>11;q=B((b[f+32>>1]|0)*10033|0,c[k+64>>2]|0)|0;l=q+r|0;q=r-q|0;r=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;s=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;e=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;n=(e+r|0)*2998|0;d=n+(s+r<<13)|0;n=n+(e-s<<13)|0;e=r-s-e<<2;c[j>>2]=d+l>>11;c[j+60>>2]=l-d>>11;d=j+12|0;c[d>>2]=e+t;c[j+48>>2]=t-e;c[j+24>>2]=n+q>>11;c[j+36>>2]=q-n>>11;n=j+4|0;q=B(b[f+2>>1]<<13,c[k+4>>2]|0)|0|1024;e=B((b[f+66>>1]|0)*5793|0,c[k+132>>2]|0)|0;t=e+q|0;q=(B(e,-2)|0)+q>>11;e=B((b[f+34>>1]|0)*10033|0,c[k+68>>2]|0)|0;l=e+t|0;e=t-e|0;t=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;s=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;r=B(c[k+164>>2]|0,b[f+82>>1]|0)|0;o=(r+t|0)*2998|0;p=o+(s+t<<13)|0;o=o+(r-s<<13)|0;r=t-s-r<<2;c[n>>2]=p+l>>11;c[j+64>>2]=l-p>>11;c[j+16>>2]=r+q;c[j+52>>2]=q-r;c[j+28>>2]=o+e>>11;c[j+40>>2]=e-o>>11;o=B(b[f+4>>1]<<13,c[k+8>>2]|0)|0|1024;e=B((b[f+68>>1]|0)*5793|0,c[k+136>>2]|0)|0;r=e+o|0;o=(B(e,-2)|0)+o>>11;e=B((b[f+36>>1]|0)*10033|0,c[k+72>>2]|0)|0;q=e+r|0;e=r-e|0;r=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;p=B(c[k+104>>2]|0,b[f+52>>1]|0)|0;k=B(c[k+168>>2]|0,b[f+84>>1]|0)|0;f=(k+r|0)*2998|0;l=f+(p+r<<13)|0;f=f+(k-p<<13)|0;k=r-p-k<<2;p=l+q>>11;c[j+8>>2]=p;c[j+68>>2]=q-l>>11;l=k+o|0;c[j+20>>2]=l;c[j+56>>2]=o-k;k=f+e>>11;c[j+32>>2]=k;c[j+44>>2]=e-f>>11;f=m+-384|0;e=(c[g>>2]|0)+h|0;m=(c[j>>2]<<13)+134348800|0;o=m+(p*5793|0)|0;m=(B(p,-11586)|0)+m|0;n=(c[n>>2]|0)*10033|0;a[e>>0]=a[f+((o+n|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(m>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;d=(c[d>>2]<<13)+134348800|0;m=d+(l*5793|0)|0;d=(B(l,-11586)|0)+d|0;l=(c[j+16>>2]|0)*10033|0;a[e>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;d=(c[j+24>>2]<<13)+134348800|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+28>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;d=(c[j+36>>2]<<13)+134348800|0;k=c[j+44>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+40>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+16>>2]|0)+h|0;d=(c[j+48>>2]<<13)+134348800|0;k=c[j+56>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+52>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;h=(c[g+20>>2]|0)+h|0;g=(c[j+60>>2]<<13)+134348800|0;e=c[j+68>>2]|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+64>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+128|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=4;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+16>>2]=d;c[k+32>>2]=d;c[k+48>>2]=d;c[k+64>>2]=d;c[k+80>>2]=d;c[k+96>>2]=d;e=28}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+112>>2]=u-t>>11;c[k+16>>2]=r+s>>11;c[k+96>>2]=s-r>>11;c[k+32>>2]=e+q>>11;c[k+80>>2]=q-e>>11;c[k+48>>2]=d+p>>11;d=p-d>>11;e=16}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}u=l+-384|0;x=(c[g>>2]|0)+h|0;s=(c[m>>2]|0)+16400|0;v=c[m+8>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+4>>2]|0;t=c[m+12>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+4>>2]|0)+h|0;t=(c[m+16>>2]|0)+16400|0;v=c[m+24>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+20>>2]|0;w=c[m+28>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+8>>2]|0)+h|0;w=(c[m+32>>2]|0)+16400|0;v=c[m+40>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+36>>2]|0;s=c[m+44>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+12>>2]|0)+h|0;s=(c[m+48>>2]|0)+16400|0;v=c[m+56>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+52>>2]|0;t=c[m+60>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+16>>2]|0)+h|0;t=(c[m+64>>2]|0)+16400|0;v=c[m+72>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+68>>2]|0;w=c[m+76>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+20>>2]|0)+h|0;w=(c[m+80>>2]|0)+16400|0;v=c[m+88>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+84>>2]|0;s=c[m+92>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+24>>2]|0)+h|0;s=(c[m+96>>2]|0)+16400|0;v=c[m+104>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+100>>2]|0;t=c[m+108>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+28>>2]|0)+h|0;t=(c[m+112>>2]|0)+16400|0;v=c[m+120>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+116>>2]|0;w=c[m+124>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;zb=o;return}function dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+180>>2]=v-u>>11;c[k+20>>2]=s+t>>11;c[k+160>>2]=t-s>>11;c[k+40>>2]=q+r;c[k+140>>2]=r-q;c[k+60>>2]=o+p>>11;c[k+120>>2]=p-o>>11;c[k+80>>2]=f+n>>11;c[k+100>>2]=n-f>>11;e=e+1|0;if((e|0)==5)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;v=c[i+16>>2]|0;w=(v+x|0)*6476|0;v=x-v|0;x=(v*2896|0)+y|0;u=x+w|0;w=x-w|0;y=(B(v,-11584)|0)+y|0;v=c[i+4>>2]|0;x=c[i+12>>2]|0;t=(x+v|0)*6810|0;v=t+(v*4209|0)|0;x=t+(B(x,-17828)|0)|0;a[z>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+(y>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+20|0}zb=m;return}function ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+264>>2]=x-w>>11;c[k+24>>2]=u+v>>11;c[k+240>>2]=v-u>>11;c[k+48>>2]=s+t>>11;c[k+216>>2]=t-s>>11;c[k+72>>2]=q+r>>11;c[k+192>>2]=r-q>>11;c[k+96>>2]=o+p>>11;c[k+168>>2]=p-o>>11;c[k+120>>2]=f+n>>11;c[k+144>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*5793|0;t=z+x|0;x=z-x-x|0;z=(c[i+8>>2]|0)*10033|0;v=t+z|0;z=t-z|0;t=c[i+4>>2]|0;u=c[i+12>>2]|0;y=c[i+20>>2]|0;A=(y+t|0)*2998|0;w=A+(u+t<<13)|0;A=A+(y-u<<13)|0;y=t-u-y<<13;a[C>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+24|0}zb=m;return}function fv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+400|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+364>>2]=z-y>>11;c[k+28>>2]=w+x>>11;c[k+336>>2]=x-w>>11;c[k+56>>2]=u+v>>11;c[k+308>>2]=v-u>>11;c[k+84>>2]=s+t;c[k+280>>2]=t-s;c[k+112>>2]=q+r>>11;c[k+252>>2]=r-q>>11;c[k+140>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+168>>2]=f+n>>11;c[k+196>>2]=n-f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;t=c[i+8>>2]|0;C=c[i+16>>2]|0;v=c[i+24>>2]|0;u=(C-v|0)*7223|0;A=(t-C|0)*2578|0;x=(B(C,-15083)|0)+E+A+u|0;D=v+t|0;z=(D*10438|0)+E|0;v=u+(B(v,-637)|0)+z|0;z=A+(B(t,-20239)|0)+z|0;t=c[i+4>>2]|0;A=c[i+12>>2]|0;u=c[i+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=B(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[F>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((((C-D|0)*11585|0)+E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+28|0}zb=m;return}function gv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;H=(c[i>>2]|0)+16400|0;I=c[i+16>>2]|0;D=H+I<<13;I=H-I<<13;H=c[i+8>>2]|0;F=c[i+24>>2]|0;A=(F+H|0)*4433|0;H=A+(H*6270|0)|0;F=A+(B(F,-15137)|0)|0;A=H+D|0;H=D-H|0;D=F+I|0;F=I-F|0;I=c[i+28>>2]|0;x=c[i+20>>2]|0;z=c[i+12>>2]|0;C=c[i+4>>2]|0;E=z+I|0;G=C+x|0;y=(G+E|0)*9633|0;E=y+(B(E,-16069)|0)|0;G=y+(B(G,-3196)|0)|0;y=B(C+I|0,-7373)|0;I=y+(I*2446|0)+E|0;C=y+(C*12299|0)+G|0;y=B(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;E=y+(z*25172|0)+E|0;a[J>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function hv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;h=(c[g>>2]|0)+h|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;g=B(c[i+4>>2]|0,b[f+2>>1]|0)|0;a[h>>0]=a[d+((g+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-g|0)>>>3&1023)>>0]|0;return}function iv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+32|0;r=i;p=c[d+336>>2]|0;k=c[e+84>>2]|0;d=B(c[k>>2]|0,b[f>>1]|0)|0;e=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;q=e+d|0;c[r>>2]=q;j=r+16|0;c[j>>2]=d-e;e=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;d=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;o=d+e|0;c[r+4>>2]=o;d=e-d|0;c[r+20>>2]=d;e=B(c[k+8>>2]|0,b[f+4>>1]|0)|0;l=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;n=l+e|0;c[r+8>>2]=n;l=e-l|0;c[r+24>>2]=l;e=B(c[k+12>>2]|0,b[f+6>>1]|0)|0;k=B(c[k+44>>2]|0,b[f+22>>1]|0)|0;m=k+e|0;c[r+12>>2]=m;k=e-k|0;c[r+28>>2]=k;e=p+-384|0;f=(c[g>>2]|0)+h|0;q=q+4100|0;p=q+n<<13;n=q-n<<13;q=(m+o|0)*4433|0;o=q+(o*6270|0)|0;m=q+(B(m,-15137)|0)|0;a[f>>0]=a[e+((o+p|0)>>>16&1023)>>0]|0;a[f+3>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;a[f+1>>0]=a[e+((m+n|0)>>>16&1023)>>0]|0;a[f+2>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;f=(c[j>>2]|0)+4100|0;j=f+l<<13;f=f-l<<13;g=(k+d|0)*4433|0;d=g+(d*6270|0)|0;g=g+(B(k,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>16&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>16&1023)>>0]|0;zb=i;return}function jv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=zb;zb=zb+80|0;k=i;q=c[d+336>>2]|0;e=c[e+84>>2]|0;s=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;n=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;l=n+s|0;s=(B(n,-2)|0)+s|0;n=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;c[k>>2]=n+l>>11;c[k+48>>2]=l-n>>11;n=k+24|0;c[n>>2]=s>>11;s=k+4|0;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;r=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;c[s>>2]=r+p>>11;c[k+52>>2]=p-r>>11;c[k+28>>2]=l>>11;l=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;r=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;c[k+8>>2]=r+p>>11;c[k+56>>2]=p-r>>11;c[k+32>>2]=l>>11;l=B(b[f+6>>1]<<13,c[e+12>>2]|0)|0|1024;r=B((b[f+38>>1]|0)*5793|0,c[e+76>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+22>>1]|0)*10033|0,c[e+44>>2]|0)|0;c[k+12>>2]=r+p>>11;c[k+60>>2]=p-r>>11;c[k+36>>2]=l>>11;l=B(b[f+8>>1]<<13,c[e+16>>2]|0)|0|1024;r=B((b[f+40>>1]|0)*5793|0,c[e+80>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+24>>1]|0)*10033|0,c[e+48>>2]|0)|0;c[k+16>>2]=r+p>>11;c[k+64>>2]=p-r>>11;c[k+40>>2]=l>>11;l=B(b[f+10>>1]<<13,c[e+20>>2]|0)|0|1024;r=B((b[f+42>>1]|0)*5793|0,c[e+84>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;e=B((b[f+26>>1]|0)*10033|0,c[e+52>>2]|0)|0;c[k+20>>2]=e+p>>11;c[k+68>>2]=p-e>>11;l=l>>11;c[k+44>>2]=l;e=q+-384|0;f=(c[g>>2]|0)+h|0;q=(c[k>>2]<<13)+134348800|0;p=(c[k+16>>2]|0)*5793|0;r=q+p|0;p=q-p-p|0;q=(c[k+8>>2]|0)*10033|0;d=r+q|0;q=r-q|0;s=c[s>>2]|0;r=c[k+12>>2]|0;o=c[k+20>>2]|0;m=(o+s|0)*2998|0;j=m+(r+s<<13)|0;m=m+(o-r<<13)|0;o=s-r-o<<13;a[f>>0]=a[e+((j+d|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((d-j|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((o+p|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((p-o|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((m+q|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((q-m|0)>>>18&1023)>>0]|0;f=(c[g+4>>2]|0)+h|0;n=(c[n>>2]<<13)+134348800|0;m=(c[k+40>>2]|0)*5793|0;q=n+m|0;m=n-m-m|0;n=(c[k+32>>2]|0)*10033|0;o=q+n|0;n=q-n|0;q=c[k+28>>2]|0;p=c[k+36>>2]|0;j=(l+q|0)*2998|0;d=j+(p+q<<13)|0;j=j+(l-p<<13)|0;l=q-p-l<<13;a[f>>0]=a[e+((d+o|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((o-d|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((j+n|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((n-j|0)>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;f=(c[k+48>>2]<<13)+134348800|0;j=(c[k+64>>2]|0)*5793|0;n=f+j|0;j=f-j-j|0;f=(c[k+56>>2]|0)*10033|0;l=n+f|0;f=n-f|0;n=c[k+52>>2]|0;m=c[k+60>>2]|0;d=c[k+68>>2]|0;g=(d+n|0)*2998|0;k=g+(m+n<<13)|0;g=g+(d-m<<13)|0;d=n-m-d<<13;a[h>>0]=a[e+((k+l|0)>>>18&1023)>>0]|0;a[h+5>>0]=a[e+((l-k|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function kv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=zb;zb=zb+128|0;j=i;d=c[d+336>>2]|0;m=c[e+84>>2]|0;l=B(c[m>>2]|0,b[f>>1]|0)|0;e=B(c[m+64>>2]|0,b[f+32>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+32>>2]|0,b[f+16>>1]|0)|0;k=B(c[m+96>>2]|0,b[f+48>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j>>2]=l+n;c[j+96>>2]=n-l;c[j+32>>2]=k+e;c[j+64>>2]=e-k;k=B(c[m+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[m+68>>2]|0,b[f+34>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+36>>2]|0,b[f+18>>1]|0)|0;n=B(c[m+100>>2]|0,b[f+50>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+4>>2]=k+l;c[j+100>>2]=l-k;c[j+36>>2]=n+e;c[j+68>>2]=e-n;n=B(c[m+8>>2]|0,b[f+4>>1]|0)|0;e=B(c[m+72>>2]|0,b[f+36>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[m+104>>2]|0,b[f+52>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+8>>2]=n+k;c[j+104>>2]=k-n;c[j+40>>2]=l+e;c[j+72>>2]=e-l;l=B(c[m+12>>2]|0,b[f+6>>1]|0)|0;e=B(c[m+76>>2]|0,b[f+38>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+44>>2]|0,b[f+22>>1]|0)|0;k=B(c[m+108>>2]|0,b[f+54>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+12>>2]=l+n;c[j+108>>2]=n-l;c[j+44>>2]=k+e;c[j+76>>2]=e-k;k=B(c[m+16>>2]|0,b[f+8>>1]|0)|0;e=B(c[m+80>>2]|0,b[f+40>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+48>>2]|0,b[f+24>>1]|0)|0;n=B(c[m+112>>2]|0,b[f+56>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+16>>2]=k+l;c[j+112>>2]=l-k;c[j+48>>2]=n+e;c[j+80>>2]=e-n;n=B(c[m+20>>2]|0,b[f+10>>1]|0)|0;e=B(c[m+84>>2]|0,b[f+42>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+52>>2]|0,b[f+26>>1]|0)|0;l=B(c[m+116>>2]|0,b[f+58>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+20>>2]=n+k;c[j+116>>2]=k-n;c[j+52>>2]=l+e;c[j+84>>2]=e-l;l=B(c[m+24>>2]|0,b[f+12>>1]|0)|0;e=B(c[m+88>>2]|0,b[f+44>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+56>>2]|0,b[f+28>>1]|0)|0;k=B(c[m+120>>2]|0,b[f+60>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+24>>2]=l+n;c[j+120>>2]=n-l;c[j+56>>2]=k+e;c[j+88>>2]=e-k;k=B(c[m+28>>2]|0,b[f+14>>1]|0)|0;e=B(c[m+92>>2]|0,b[f+46>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+60>>2]|0,b[f+30>>1]|0)|0;f=B(c[m+124>>2]|0,b[f+62>>1]|0)|0;m=((f+k|0)*4433|0)+1024|0;k=m+(k*6270|0)>>11;f=m+(B(f,-15137)|0)>>11;c[j+28>>2]=k+l;c[j+124>>2]=l-k;c[j+60>>2]=f+e;c[j+92>>2]=e-f;f=d+-384|0;d=j;e=0;while(1){o=(c[g+(e<<2)>>2]|0)+h|0;m=(c[d>>2]|0)+16400|0;n=c[d+16>>2]|0;p=m+n<<13;n=m-n<<13;m=c[d+8>>2]|0;k=c[d+24>>2]|0;r=(k+m|0)*4433|0;m=r+(m*6270|0)|0;k=r+(B(k,-15137)|0)|0;r=m+p|0;m=p-m|0;p=k+n|0;k=n-k|0;n=c[d+28>>2]|0;u=c[d+20>>2]|0;s=c[d+12>>2]|0;q=c[d+4>>2]|0;j=s+n|0;l=q+u|0;t=(l+j|0)*9633|0;j=t+(B(j,-16069)|0)|0;l=t+(B(l,-3196)|0)|0;t=B(q+n|0,-7373)|0;n=t+(n*2446|0)+j|0;q=t+(q*12299|0)+l|0;t=B(s+u|0,-20995)|0;l=t+(u*16819|0)+l|0;j=t+(s*25172|0)+j|0;a[o>>0]=a[f+((q+r|0)>>>18&1023)>>0]|0;a[o+7>>0]=a[f+((r-q|0)>>>18&1023)>>0]|0;a[o+1>>0]=a[f+((j+p|0)>>>18&1023)>>0]|0;a[o+6>>0]=a[f+((p-j|0)>>>18&1023)>>0]|0;a[o+2>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[o+5>>0]=a[f+((k-l|0)>>>18&1023)>>0]|0;a[o+3>>0]=a[f+((n+m|0)>>>18&1023)>>0]|0;a[o+4>>0]=a[f+((m-n|0)>>>18&1023)>>0]|0;e=e+1|0;if((e|0)==4)break;else d=d+32|0}zb=i;return}function lv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=zb;zb=zb+160|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=(p+n|0)*6476|0;p=n-p|0;n=(p*2896|0)+f|0;q=n+o|0;o=n-o|0;f=(B(p,-11584)|0)+f|0;p=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;n=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;r=(n+p|0)*6810|0;p=r+(p*4209|0)|0;n=r+(B(n,-17828)|0)|0;c[k>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+32>>2]=n+o>>11;c[k+96>>2]=o-n>>11;c[k+64>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){r=(c[g+(d<<2)>>2]|0)+h|0;p=(c[i>>2]<<13)+134348800|0;k=c[i+16>>2]|0;j=p+(k*9373|0)|0;u=p+(B(k,-3580)|0)|0;k=p+(B(k,-11586)|0)|0;p=c[i+8>>2]|0;n=c[i+24>>2]|0;t=(n+p|0)*6810|0;p=t+(p*4209|0)|0;n=t+(B(n,-17828)|0)|0;t=p+j|0;p=j-p|0;j=n+u|0;n=u-n|0;u=c[i+4>>2]|0;v=c[i+12>>2]|0;l=c[i+20>>2]<<13;f=c[i+28>>2]|0;o=f+v|0;f=v-f|0;v=f*2531|0;w=o*7791|0;q=v+l|0;s=w+(u*11443|0)+q|0;q=(u*1812|0)-w+q|0;o=o*4815|0;v=l-v-(f<<12)|0;l=(u-f<<13)-l|0;f=(u*10323|0)-o-v|0;o=v+((u*5260|0)-o)|0;a[r>>0]=a[e+((s+t|0)>>>18&1023)>>0]|0;a[r+9>>0]=a[e+((t-s|0)>>>18&1023)>>0]|0;a[r+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[r+8>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[r+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[r+7>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[r+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[r+6>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[r+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[r+5>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==5)break;else i=i+32|0}zb=m;return}function mv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+192|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+160>>2]=r-q>>11;c[k+32>>2]=o+p;c[k+128>>2]=p-o;c[k+64>>2]=f+n>>11;c[k+96>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*10033|0;w=r+x|0;x=r-x|0;k=c[i+8>>2]|0;n=c[i+24>>2]<<13;p=(k<<13)-n|0;j=p+r|0;p=r-p|0;r=n+(k*11190|0)|0;v=r+w|0;r=w-r|0;n=(k*2998|0)-n|0;k=n+x|0;n=x-n|0;x=c[i+4>>2]|0;w=c[i+12>>2]|0;q=c[i+20>>2]|0;f=c[i+28>>2]|0;z=w*10703|0;y=B(w,-4433)|0;l=q+x|0;s=(l+f|0)*7053|0;l=s+(l*2139|0)|0;u=z+(x*2295|0)+l|0;o=B(f+q|0,-8565)|0;l=(B(q,-12112)|0)+y+o+l|0;o=(f*12998|0)-z+s+o|0;s=y+(B(x,-5540)|0)+(B(f,-16244)|0)+s|0;f=x-f|0;q=w-q|0;w=(f+q|0)*4433|0;f=w+(f*6270|0)|0;q=w+(B(q,-15137)|0)|0;a[t>>0]=a[e+((u+v|0)>>>18&1023)>>0]|0;a[t+11>>0]=a[e+((v-u|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[t+10>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[t+9>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+8>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+7>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+6>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+32|0}zb=m;return}function nv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+224|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+192>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+160>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+96>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=c[i+16>>2]|0;k=r+(p*10438|0)|0;n=r+(p*2578|0)|0;w=r+(B(p,-7223)|0)|0;p=r+(B(p,-11586)|0)|0;r=c[i+8>>2]|0;j=c[i+24>>2]|0;t=(j+r|0)*9058|0;v=t+(r*2237|0)|0;t=t+(B(j,-14084)|0)|0;r=(B(j,-11295)|0)+(r*5027|0)|0;j=v+k|0;v=k-v|0;k=t+n|0;t=n-t|0;n=r+w|0;r=w-r|0;w=c[i+4>>2]|0;A=c[i+12>>2]|0;y=c[i+20>>2]|0;q=c[i+28>>2]<<13;s=y+w|0;l=(A+w|0)*10935|0;C=s*9810|0;f=l+(B(w,-9232)|0)+C+q|0;s=s*6164|0;z=w-A|0;u=(z*3826|0)-q|0;w=s+(B(w,-8693)|0)+u|0;o=(B(y+A|0,-1297)|0)-q|0;l=l+(B(A,-3474)|0)+o|0;o=C+(B(y,-19447)|0)+o|0;C=(y-A|0)*11512|0;s=q+(B(y,-13850)|0)+C+s|0;u=C+(A*5529|0)+u|0;q=(z-y<<13)+q|0;a[x>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+32|0}zb=m;return}function ov(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;o=zb;zb=zb+256|0;i=o;m=c[d+336>>2]|0;l=i;k=c[e+84>>2]|0;j=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[k>>2]|0)|0;c[l>>2]=d;c[l+32>>2]=d;c[l+64>>2]=d;c[l+96>>2]=d;c[l+128>>2]=d;c[l+160>>2]=d;c[l+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[k+128>>2]|0)|0;p=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[k+64>>2]|0,d<<16>>16)|0;q=B(c[k+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[k+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[k+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[l>>2]=t+u>>11;c[l+224>>2]=u-t>>11;c[l+32>>2]=r+s>>11;c[l+192>>2]=s-r>>11;c[l+64>>2]=e+q>>11;c[l+160>>2]=q-e>>11;c[l+96>>2]=d+p>>11;d=p-d>>11;e=32}c[l+(e<<2)>>2]=d;if(j>>>0>1){l=l+4|0;k=k+4|0;f=f+2|0;j=j+-1|0}else break}e=m+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;m=c[i+16>>2]|0;w=m*10703|0;m=m*4433|0;f=r+w|0;w=r-w|0;k=r+m|0;m=r-m|0;r=c[i+8>>2]|0;p=c[i+24>>2]|0;u=r-p|0;z=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=z+(r*7373|0)|0;r=u+(B(r,-4926)|0)|0;p=z+(B(p,-4176)|0)|0;z=v+f|0;v=f-v|0;f=t+k|0;t=k-t|0;k=r+m|0;r=m-r|0;m=p+w|0;p=w-p|0;w=c[i+4>>2]|0;u=c[i+12>>2]|0;C=c[i+20>>2]|0;E=c[i+28>>2]|0;A=C+w|0;j=(u+w|0)*11086|0;l=A*10217|0;s=(E+w|0)*8956|0;q=(w-E|0)*7350|0;A=A*5461|0;n=(w-u|0)*3363|0;y=j+(B(w,-18730)|0)+l+s|0;w=n+(B(w,-15038)|0)+A+q|0;H=(C+u|0)*1136|0;D=(C-u|0)*11529|0;F=E+u|0;G=B(F,-5461)|0;j=j+(u*589|0)+H+G|0;F=B(F,-10217)|0;u=n+(u*16154|0)+D+F|0;n=B(E+C|0,-11086)|0;l=H+(B(C,-9222)|0)+l+n|0;n=G+(E*8728|0)+s+n|0;s=(E-C|0)*3363|0;q=F+(E*25733|0)+q+s|0;s=D+(B(C,-6278)|0)+A+s|0;a[x>>0]=a[e+((y+z|0)>>>18&1023)>>0]|0;a[x+15>>0]=a[e+((z-y|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[x+14>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((n+m|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((m-n|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else i=i+32|0}zb=o;return}function pv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;D=(c[i>>2]<<13)+134348800|0;y=c[i+16>>2]|0;I=y*10703|0;y=y*4433|0;u=D+I|0;I=D-I|0;w=D+y|0;y=D-y|0;D=c[i+8>>2]|0;A=c[i+24>>2]|0;G=D-A|0;s=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;F=s+(D*7373|0)|0;D=G+(B(D,-4926)|0)|0;A=s+(B(A,-4176)|0)|0;s=H+u|0;H=u-H|0;u=F+w|0;F=w-F|0;w=D+y|0;D=y-D|0;y=A+I|0;A=I-A|0;I=c[i+4>>2]|0;G=c[i+12>>2]|0;q=c[i+20>>2]|0;o=c[i+28>>2]|0;r=q+I|0;v=(G+I|0)*11086|0;x=r*10217|0;E=(o+I|0)*8956|0;C=(I-o|0)*7350|0;r=r*5461|0;z=(I-G|0)*3363|0;t=v+(B(I,-18730)|0)+x+E|0;I=z+(B(I,-15038)|0)+r+C|0;k=(q+G|0)*1136|0;p=(q-G|0)*11529|0;n=o+G|0;l=B(n,-5461)|0;v=v+(G*589|0)+k+l|0;n=B(n,-10217)|0;G=z+(G*16154|0)+p+n|0;z=B(o+q|0,-11086)|0;x=k+(B(q,-9222)|0)+x+z|0;z=l+(o*8728|0)+E+z|0;E=(o-q|0)*3363|0;C=n+(o*25733|0)+C+E|0;E=p+(B(q,-6278)|0)+r+E|0;a[J>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[J+15>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[J+14>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[J+13>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[J+12>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+11>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+10>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+9>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+8>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function qv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+480|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;s=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;w=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;y=(B(t,-3580)|0)+f|0;D=(t*9373|0)+f|0;f=(B(t,-11586)|0)+f|0;t=s-w|0;w=w+s|0;E=w*10958|0;u=t*374|0;s=s*11795|0;A=u+E+D|0;u=s-E+u+y|0;E=w*4482|0;o=B(t,-3271)|0;q=D-E+o|0;o=E-s+o+y|0;w=w*6476|0;s=t*2896|0;y=s+w+y|0;s=D-w+s|0;w=f+(t*5792|0)|0;f=(B(t,-11584)|0)+f|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B((b[d+80>>1]|0)*10033|0,c[j+160>>2]|0)|0;C=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;r=D-C|0;F=(r+t|0)*6810|0;x=F+(t*4209|0)|0;r=F+(B(r,-17828)|0)|0;F=B(D,-6810)|0;D=B(D,-11018)|0;v=t-C|0;n=(v*11522|0)+E|0;z=(C*20131|0)-D+n|0;n=F+(B(t,-9113)|0)+n|0;v=(v*10033|0)-E|0;p=(C+t|0)*4712|0;t=F+(t*3897|0)-E+p|0;p=E+D+(B(C,-7121)|0)+p|0;c[k>>2]=z+A>>11;c[k+448>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+416>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+384>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+352>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+320>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+288>>2]=q-p>>11;c[k+192>>2]=n+o>>11;c[k+256>>2]=o-n>>11;c[k+224>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;t=c[i+16>>2]|0;w=c[i+24>>2]|0;r=(B(w,-3580)|0)+E|0;n=(w*9373|0)+E|0;E=(B(w,-11586)|0)+E|0;w=x-t|0;t=t+x|0;l=t*10958|0;v=w*374|0;x=x*11795|0;p=v+l+n|0;v=x-l+v+r|0;l=t*4482|0;C=B(w,-3271)|0;z=n-l+C|0;C=l-x+C+r|0;t=t*6476|0;x=w*2896|0;r=x+t+r|0;x=n-t+x|0;t=E+(w*5792|0)|0;E=(B(w,-11584)|0)+E|0;w=c[i+4>>2]|0;n=c[i+12>>2]|0;l=(c[i+20>>2]|0)*10033|0;o=c[i+28>>2]|0;y=n-o|0;k=(y+w|0)*6810|0;s=k+(w*4209|0)|0;y=k+(B(y,-17828)|0)|0;k=B(n,-6810)|0;n=B(n,-11018)|0;u=w-o|0;D=(u*11522|0)+l|0;q=(o*20131|0)-n+D|0;D=k+(B(w,-9113)|0)+D|0;u=(u*10033|0)-l|0;A=(o+w|0)*4712|0;w=k+(w*3897|0)-l+A|0;A=l+n+(B(o,-7121)|0)+A|0;a[F>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[F+14>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+(E>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==15)break;else i=i+32|0}zb=m;return}function rv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+448|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+416>>2]=z-y>>11;c[k+32>>2]=w+x>>11;c[k+384>>2]=x-w>>11;c[k+64>>2]=u+v>>11;c[k+352>>2]=v-u>>11;c[k+96>>2]=s+t;c[k+320>>2]=t-s;c[k+128>>2]=q+r>>11;c[k+288>>2]=r-q>>11;c[k+160>>2]=o+p>>11;c[k+256>>2]=p-o>>11;c[k+192>>2]=f+n>>11;c[k+224>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;w=c[i+16>>2]|0;s=y+(w*10438|0)|0;u=y+(w*2578|0)|0;E=y+(B(w,-7223)|0)|0;w=y+(B(w,-11586)|0)|0;y=c[i+8>>2]|0;q=c[i+24>>2]|0;A=(q+y|0)*9058|0;D=A+(y*2237|0)|0;A=A+(B(q,-14084)|0)|0;y=(B(q,-11295)|0)+(y*5027|0)|0;q=D+s|0;D=s-D|0;s=A+u|0;A=u-A|0;u=y+E|0;y=E-y|0;E=c[i+4>>2]|0;n=c[i+12>>2]|0;p=c[i+20>>2]|0;x=c[i+28>>2]<<13;z=p+E|0;t=(n+E|0)*10935|0;l=z*9810|0;r=t+(B(E,-9232)|0)+l+x|0;z=z*6164|0;o=E-n|0;C=(o*3826|0)-x|0;E=z+(B(E,-8693)|0)+C|0;v=(B(p+n|0,-1297)|0)-x|0;t=t+(B(n,-3474)|0)+v|0;v=l+(B(p,-19447)|0)+v|0;l=(p-n|0)*11512|0;z=x+(B(p,-13850)|0)+l+z|0;C=l+(n*5529|0)+C|0;x=(o-p<<13)+x|0;a[F>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+32|0}zb=m;return}function sv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;m=zb;zb=zb+416|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;s=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;E=o+s|0;o=s-o|0;s=E*9465|0;w=(o*793|0)+f|0;A=s+(n*11249|0)+w|0;w=(n*4108|0)-s+w|0;s=E*2592|0;q=(o*3989|0)+f|0;y=(n*8672|0)-s+q|0;q=s+(B(n,-10258)|0)+q|0;E=E*3570|0;s=f+(B(o,-7678)|0)|0;u=(B(n,-1396)|0)-E+s|0;s=E+(B(n,-6581)|0)+s|0;E=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;r=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;C=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;p=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=(r+E|0)*10832|0;v=(C+E|0)*9534|0;D=p+E|0;F=D*7682|0;z=x+(B(E,-16549)|0)+v+F|0;H=B(C+r|0,-2773)|0;G=B(p+r|0,-9534)|0;x=x+(r*6859|0)+H+G|0;t=B(p+C|0,-5384)|0;v=H+(B(C,-12879)|0)+v+t|0;t=G+(p*18068|0)+F+t|0;D=(D*2773|0)+((C-r|0)*7682|0)|0;r=D+(E*2611|0)+(B(r,-3818)|0)|0;p=D+(C*3150|0)+(B(p,-14273)|0)|0;c[k>>2]=z+A>>11;c[k+384>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+352>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+192>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){H=(c[g+(d<<2)>>2]|0)+h|0;G=(c[i>>2]<<13)+134348800|0;F=c[i+8>>2]|0;z=c[i+16>>2]|0;E=c[i+24>>2]|0;o=E+z|0;E=z-E|0;z=o*9465|0;v=(E*793|0)+G|0;r=z+(F*11249|0)+v|0;v=(F*4108|0)-z+v|0;z=o*2592|0;C=(E*3989|0)+G|0;t=(F*8672|0)-z+C|0;C=z+(B(F,-10258)|0)+C|0;o=o*3570|0;z=G+(B(E,-7678)|0)|0;x=(B(F,-1396)|0)-o+z|0;z=o+(B(F,-6581)|0)+z|0;o=c[i+4>>2]|0;A=c[i+12>>2]|0;q=c[i+20>>2]|0;D=c[i+28>>2]|0;u=(A+o|0)*10832|0;w=(q+o|0)*9534|0;p=D+o|0;n=p*7682|0;s=u+(B(o,-16549)|0)+w+n|0;k=B(q+A|0,-2773)|0;l=B(D+A|0,-9534)|0;u=u+(A*6859|0)+k+l|0;y=B(D+q|0,-5384)|0;w=k+(B(q,-12879)|0)+w+y|0;y=l+(D*18068|0)+n+y|0;p=(p*2773|0)+((q-A|0)*7682|0)|0;A=p+(o*2611|0)+(B(A,-3818)|0)|0;D=p+(q*3150|0)+(B(D,-14273)|0)|0;a[H>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[H+12>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[H+1>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[H+11>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[H+2>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[H+10>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[H+3>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[H+9>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[H+4>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[H+8>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[H+5>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[H+7>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[H+6>>0]=a[e+((((E-F|0)*11585|0)+G|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==13)break;else i=i+32|0}zb=m;return}function tv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+384|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+352>>2]=x-w>>11;c[k+32>>2]=u+v>>11;c[k+320>>2]=v-u>>11;c[k+64>>2]=s+t>>11;c[k+288>>2]=t-s>>11;c[k+96>>2]=q+r>>11;c[k+256>>2]=r-q>>11;c[k+128>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+160>>2]=f+n>>11;c[k+192>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;n=(c[i+16>>2]|0)*10033|0;o=z+n|0;n=z-n|0;t=c[i+8>>2]|0;v=c[i+24>>2]<<13;x=(t<<13)-v|0;r=x+z|0;x=z-x|0;z=v+(t*11190|0)|0;p=z+o|0;z=o-z|0;v=(t*2998|0)-v|0;t=v+n|0;v=n-v|0;n=c[i+4>>2]|0;o=c[i+12>>2]|0;y=c[i+20>>2]|0;s=c[i+28>>2]|0;k=o*10703|0;l=B(o,-4433)|0;u=y+n|0;A=(u+s|0)*7053|0;u=A+(u*2139|0)|0;q=k+(n*2295|0)+u|0;w=B(s+y|0,-8565)|0;u=(B(y,-12112)|0)+l+w+u|0;w=(s*12998|0)-k+A+w|0;A=l+(B(n,-5540)|0)+(B(s,-16244)|0)+A|0;s=n-s|0;y=o-y|0;o=(s+y|0)*4433|0;s=o+(s*6270|0)|0;y=o+(B(y,-15137)|0)|0;a[C>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[C+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+32|0}zb=m;return}function uv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+352|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;y=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;s=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;q=(z-y|0)*3529|0;o=s+y|0;v=o-z|0;x=(v*11116|0)+f|0;w=x+((z-s|0)*20862|0)|0;u=w+(B(z,-14924)|0)+q|0;w=w+(s*17333|0)|0;q=x+q+(B(y,-12399)|0)|0;o=x+(B(o,-9467)|0)|0;s=o+(B(s,-6461)|0)|0;o=(z*15929|0)+(B(y,-11395)|0)+o|0;f=(B(v,-11585)|0)+f|0;v=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;z=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y+v|0;n=(z+C+x|0)*3264|0;C=C*7274|0;r=(z+v|0)*5492|0;p=n+((x+v|0)*3e3|0)|0;v=C+(B(v,-7562)|0)+r+p|0;t=n+(B(z+y|0,-9527)|0)|0;r=r+(B(z,-9766)|0)+t|0;A=B(x+y|0,-14731)|0;t=C+(y*16984|0)+A+t|0;p=A+(x*17223|0)+p|0;n=(z*8203|0)+(B(y,-12019)|0)+(B(x,-13802)|0)+n|0;c[k>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+32>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+64>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+96>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+128>>2]=n+o>>11;c[k+192>>2]=o-n>>11;c[k+160>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;A=(c[i>>2]<<13)+134348800|0;o=c[i+8>>2]|0;n=c[i+16>>2]|0;u=c[i+24>>2]|0;w=(n-o|0)*3529|0;y=u+o|0;r=y-n|0;p=(r*11116|0)+A|0;q=p+((n-u|0)*20862|0)|0;s=q+(B(n,-14924)|0)+w|0;q=q+(u*17333|0)|0;w=p+w+(B(o,-12399)|0)|0;y=p+(B(y,-9467)|0)|0;u=y+(B(u,-6461)|0)|0;y=(n*15929|0)+(B(o,-11395)|0)+y|0;A=(B(r,-11585)|0)+A|0;r=c[i+4>>2]|0;o=c[i+12>>2]|0;n=c[i+20>>2]|0;p=c[i+28>>2]|0;k=o+r|0;z=(k+n+p|0)*3264|0;k=k*7274|0;v=(n+r|0)*5492|0;x=z+((p+r|0)*3e3|0)|0;r=k+(B(r,-7562)|0)+v+x|0;t=z+(B(n+o|0,-9527)|0)|0;v=v+(B(n,-9766)|0)+t|0;l=B(p+o|0,-14731)|0;t=k+(o*16984|0)+l+t|0;x=l+(p*17223|0)+x|0;z=(n*8203|0)+(B(o,-12019)|0)+(B(p,-13802)|0)+z|0;a[C>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+(A>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==11)break;else i=i+32|0}zb=m;return}function vv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+320|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+288>>2]=v-u>>11;c[k+32>>2]=s+t>>11;c[k+256>>2]=t-s>>11;c[k+64>>2]=q+r;c[k+224>>2]=r-q;c[k+96>>2]=o+p>>11;c[k+192>>2]=p-o>>11;c[k+128>>2]=f+n>>11;c[k+160>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;x=(c[i>>2]<<13)+134348800|0;t=c[i+16>>2]|0;r=x+(t*9373|0)|0;o=x+(B(t,-3580)|0)|0;t=x+(B(t,-11586)|0)|0;x=c[i+8>>2]|0;v=c[i+24>>2]|0;p=(v+x|0)*6810|0;x=p+(x*4209|0)|0;v=p+(B(v,-17828)|0)|0;p=x+r|0;x=r-x|0;r=v+o|0;v=o-v|0;o=c[i+4>>2]|0;n=c[i+12>>2]|0;u=c[i+20>>2]<<13;s=c[i+28>>2]|0;w=s+n|0;s=n-s|0;n=s*2531|0;l=w*7791|0;y=n+u|0;q=l+(o*11443|0)+y|0;y=(o*1812|0)-l+y|0;w=w*4815|0;n=u-n-(s<<12)|0;u=(o-s<<13)-u|0;s=(o*10323|0)-w-n|0;w=n+((o*5260|0)-w)|0;a[z>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[z+9>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[z+8>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[z+7>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[z+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[z+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+32|0}zb=m;return}function wv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){q=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=B((b[d+96>>1]|0)*5793|0,c[j+192>>2]|0)|0;v=f+q|0;f=q-f-f|0;q=w-o|0;s=f+(q*5793|0)|0;f=(B(q,-11586)|0)+f|0;q=(o+w|0)*10887|0;w=w*8875|0;o=o*2012|0;u=q-o+v|0;q=v-q+w|0;o=v-w+o|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;r=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=B(B(b[d+48>>1]|0,-10033)|0,c[j+96>>2]|0)|0;p=(v+w|0)*7447|0;n=(r+w|0)*3962|0;t=p-x+n|0;y=(v-r|0)*11409|0;p=x-y+p|0;n=y+x+n|0;r=(w-v-r|0)*10033|0;c[k>>2]=t+u>>11;c[k+256>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+224>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+192>>2]=q-p>>11;c[k+96>>2]=n+o>>11;c[k+160>>2]=o-n>>11;c[k+128>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){y=(c[g+(d<<2)>>2]|0)+h|0;t=(c[i>>2]<<13)+134348800|0;n=c[i+8>>2]|0;v=c[i+16>>2]|0;x=(c[i+24>>2]|0)*5793|0;o=x+t|0;x=t-x-x|0;t=n-v|0;r=x+(t*5793|0)|0;x=(B(t,-11586)|0)+x|0;t=(v+n|0)*10887|0;n=n*8875|0;v=v*2012|0;p=t-v+o|0;t=o-t+n|0;v=o-n+v|0;n=c[i+4>>2]|0;o=c[i+20>>2]|0;s=c[i+28>>2]|0;l=B(c[i+12>>2]|0,-10033)|0;u=(o+n|0)*7447|0;w=(s+n|0)*3962|0;q=u-l+w|0;k=(o-s|0)*11409|0;u=l-k+u|0;w=k+l+w|0;s=(n-o-s|0)*10033|0;a[y>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[y+8>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[y+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[y+7>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[y+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[y+6>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[y+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[y+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[y+4>>0]=a[e+(x>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==9)break;else i=i+32|0}zb=m;return}function xv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+168>>2]=u-t>>11;c[k+28>>2]=r+s>>11;c[k+140>>2]=s-r>>11;c[k+56>>2]=p+q>>11;c[k+112>>2]=q-p>>11;c[k+84>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;w=(c[i>>2]<<13)+134348800|0;l=c[i+8>>2]|0;u=c[i+16>>2]|0;o=c[i+24>>2]|0;n=(u-o|0)*7223|0;t=(l-u|0)*2578|0;q=(B(u,-15083)|0)+w+t+n|0;v=o+l|0;s=(v*10438|0)+w|0;o=n+(B(o,-637)|0)+s|0;s=t+(B(l,-20239)|0)+s|0;l=c[i+4>>2]|0;t=c[i+12>>2]|0;n=c[i+20>>2]|0;k=(t+l|0)*7663|0;p=(l-t|0)*1395|0;t=B(n+t|0,-11295)|0;r=k+p+t|0;l=(n+l|0)*5027|0;p=k-p+l|0;t=l+(n*15326|0)+t|0;a[x>>0]=a[e+((p+o|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((o-p|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((((u-v|0)*11585|0)+w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+28|0}zb=m;return}function yv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=zb;zb=zb+144|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+120>>2]=r-q>>11;c[k+24>>2]=o+p;c[k+96>>2]=p-o;c[k+48>>2]=f+n>>11;c[k+72>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=(c[i+16>>2]|0)*5793|0;k=r+p|0;p=r-p-p|0;r=(c[i+8>>2]|0)*10033|0;n=k+r|0;r=k-r|0;k=c[i+4>>2]|0;l=c[i+12>>2]|0;q=c[i+20>>2]|0;s=(q+k|0)*2998|0;o=s+(l+k<<13)|0;s=s+(q-l<<13)|0;q=k-l-q<<13;a[t>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+24|0}zb=m;return}function zv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+112|0;l=i;d=c[d+336>>2]|0;o=c[e+84>>2]|0;n=B(b[f>>1]<<13,c[o>>2]|0)|0|1024;e=B(c[o+64>>2]|0,b[f+32>>1]|0)|0;j=B(c[o+128>>2]|0,b[f+64>>1]|0)|0;q=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+n|0;p=e+q|0;q=e-q|0;n=(B(j,-11584)|0)+n|0;j=B(c[o+32>>2]|0,b[f+16>>1]|0)|0;e=B(c[o+96>>2]|0,b[f+48>>1]|0)|0;m=(e+j|0)*6810|0;j=m+(j*4209|0)|0;e=m+(B(e,-17828)|0)|0;c[l>>2]=j+p>>11;c[l+80>>2]=p-j>>11;j=l+20|0;c[j>>2]=e+q>>11;c[l+60>>2]=q-e>>11;c[l+40>>2]=n>>11;n=l+4|0;e=B(b[f+2>>1]<<13,c[o+4>>2]|0)|0|1024;q=B(c[o+68>>2]|0,b[f+34>>1]|0)|0;p=B(c[o+132>>2]|0,b[f+66>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[o+100>>2]|0,b[f+50>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[n>>2]=p+k>>11;c[l+84>>2]=k-p>>11;c[l+24>>2]=q+m>>11;c[l+64>>2]=m-q>>11;c[l+44>>2]=e>>11;e=B(b[f+4>>1]<<13,c[o+8>>2]|0)|0|1024;q=B(c[o+72>>2]|0,b[f+36>>1]|0)|0;m=B(c[o+136>>2]|0,b[f+68>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+40>>2]|0,b[f+20>>1]|0)|0;q=B(c[o+104>>2]|0,b[f+52>>1]|0)|0;r=(q+m|0)*6810|0;m=r+(m*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+8>>2]=m+k>>11;c[l+88>>2]=k-m>>11;c[l+28>>2]=q+p>>11;c[l+68>>2]=p-q>>11;c[l+48>>2]=e>>11;e=B(b[f+6>>1]<<13,c[o+12>>2]|0)|0|1024;q=B(c[o+76>>2]|0,b[f+38>>1]|0)|0;p=B(c[o+140>>2]|0,b[f+70>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+44>>2]|0,b[f+22>>1]|0)|0;q=B(c[o+108>>2]|0,b[f+54>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+12>>2]=p+k>>11;c[l+92>>2]=k-p>>11;c[l+32>>2]=q+m>>11;c[l+72>>2]=m-q>>11;c[l+52>>2]=e>>11;e=B(b[f+8>>1]<<13,c[o+16>>2]|0)|0|1024;q=B(c[o+80>>2]|0,b[f+40>>1]|0)|0;m=B(c[o+144>>2]|0,b[f+72>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+48>>2]|0,b[f+24>>1]|0)|0;f=B(c[o+112>>2]|0,b[f+56>>1]|0)|0;o=(f+m|0)*6810|0;m=o+(m*4209|0)|0;f=o+(B(f,-17828)|0)|0;c[l+16>>2]=m+k>>11;c[l+96>>2]=k-m>>11;c[l+36>>2]=f+p>>11;c[l+76>>2]=p-f>>11;c[l+56>>2]=e>>11;f=d+-384|0;e=(c[g>>2]|0)+h|0;d=(c[l>>2]<<13)+134348800|0;p=c[l+8>>2]|0;m=c[l+16>>2]|0;k=(m+p|0)*6476|0;m=p-m|0;p=(m*2896|0)+d|0;o=p+k|0;k=p-k|0;d=(B(m,-11584)|0)+d|0;n=c[n>>2]|0;m=c[l+12>>2]|0;p=(m+n|0)*6810|0;n=p+(n*4209|0)|0;m=p+(B(m,-17828)|0)|0;a[e>>0]=a[f+((n+o|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((m+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-m|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;j=(c[j>>2]<<13)+134348800|0;d=c[l+28>>2]|0;m=c[l+36>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+24>>2]|0;d=c[l+32>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;j=(c[l+40>>2]<<13)+134348800|0;d=c[l+48>>2]|0;k=c[l+56>>2]|0;m=(k+d|0)*6476|0;k=d-k|0;d=(k*2896|0)+j|0;n=d+m|0;m=d-m|0;j=(B(k,-11584)|0)+j|0;k=c[l+44>>2]|0;d=c[l+52>>2]|0;o=(d+k|0)*6810|0;k=o+(k*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((k+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+m|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((m-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;j=(c[l+60>>2]<<13)+134348800|0;d=c[l+68>>2]|0;m=c[l+76>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+64>>2]|0;d=c[l+72>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;h=(c[g+16>>2]|0)+h|0;g=(c[l+80>>2]<<13)+134348800|0;e=c[l+88>>2]|0;j=c[l+96>>2]|0;d=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+g|0;k=e+d|0;d=e-d|0;g=(B(j,-11584)|0)+g|0;j=c[l+84>>2]|0;e=c[l+92>>2]|0;l=(e+j|0)*6810|0;j=l+(j*4209|0)|0;e=l+(B(e,-17828)|0)|0;a[h>>0]=a[f+((j+k|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[f+((k-j|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+((e+d|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+64|0;k=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;m=B(c[e>>2]|0,b[f>>1]|0)|0;j=B(c[e+64>>2]|0,b[f+32>>1]|0)|0;o=j+m<<2;j=m-j<<2;m=B(c[e+32>>2]|0,b[f+16>>1]|0)|0;n=B(c[e+96>>2]|0,b[f+48>>1]|0)|0;l=((n+m|0)*4433|0)+1024|0;m=l+(m*6270|0)>>11;n=l+(B(n,-15137)|0)>>11;c[k>>2]=m+o;c[k+48>>2]=o-m;m=k+16|0;c[m>>2]=n+j;c[k+32>>2]=j-n;n=k+4|0;j=B(c[e+4>>2]|0,b[f+2>>1]|0)|0;o=B(c[e+68>>2]|0,b[f+34>>1]|0)|0;l=o+j<<2;o=j-o<<2;j=B(c[e+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[e+100>>2]|0,b[f+50>>1]|0)|0;p=((q+j|0)*4433|0)+1024|0;j=p+(j*6270|0)>>11;q=p+(B(q,-15137)|0)>>11;c[n>>2]=j+l;c[k+52>>2]=l-j;c[k+20>>2]=q+o;c[k+36>>2]=o-q;q=B(c[e+8>>2]|0,b[f+4>>1]|0)|0;o=B(c[e+72>>2]|0,b[f+36>>1]|0)|0;j=o+q<<2;o=q-o<<2;q=B(c[e+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[e+104>>2]|0,b[f+52>>1]|0)|0;p=((l+q|0)*4433|0)+1024|0;q=p+(q*6270|0)>>11;l=p+(B(l,-15137)|0)>>11;p=q+j|0;c[k+8>>2]=p;c[k+56>>2]=j-q;c[k+24>>2]=l+o;c[k+40>>2]=o-l;l=B(c[e+12>>2]|0,b[f+6>>1]|0)|0;o=B(c[e+76>>2]|0,b[f+38>>1]|0)|0;q=o+l<<2;o=l-o<<2;l=B(c[e+44>>2]|0,b[f+22>>1]|0)|0;e=B(c[e+108>>2]|0,b[f+54>>1]|0)|0;j=((e+l|0)*4433|0)+1024|0;l=j+(l*6270|0)>>11;e=j+(B(e,-15137)|0)>>11;j=l+q|0;c[k+12>>2]=j;c[k+60>>2]=q-l;l=e+o|0;c[k+28>>2]=l;c[k+44>>2]=o-e;e=d+-384|0;d=(c[g>>2]|0)+h|0;f=(c[k>>2]|0)+16400|0;o=f+p<<13;f=f-p<<13;n=c[n>>2]|0;p=(j+n|0)*4433|0;n=p+(n*6270|0)|0;j=p+(B(j,-15137)|0)|0;a[d>>0]=a[e+((n+o|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((o-n|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;m=(c[m>>2]|0)+16400|0;j=c[k+24>>2]|0;f=m+j<<13;j=m-j<<13;m=c[k+20>>2]|0;n=(l+m|0)*4433|0;m=n+(m*6270|0)|0;l=n+(B(l,-15137)|0)|0;a[d>>0]=a[e+((m+f|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((f-m|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((l+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-l|0)>>>18&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=(c[k+32>>2]|0)+16400|0;j=c[k+40>>2]|0;m=l+j<<13;j=l-j<<13;l=c[k+36>>2]|0;f=c[k+44>>2]|0;n=(f+l|0)*4433|0;l=n+(l*6270|0)|0;f=n+(B(f,-15137)|0)|0;a[d>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;d=(c[k+48>>2]|0)+16400|0;f=c[k+56>>2]|0;j=d+f<<13;f=d-f<<13;d=c[k+52>>2]|0;g=c[k+60>>2]|0;k=(g+d|0)*4433|0;d=k+(d*6270|0)|0;g=k+(B(g,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function Bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+48|0;j=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;l=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;k=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;n=k+l|0;l=(B(k,-2)|0)+l|0;k=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;m=k+n>>11;c[j>>2]=m;c[j+24>>2]=n-k>>11;k=j+12|0;c[k>>2]=l>>11;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;n=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;q=n+l|0;l=(B(n,-2)|0)+l|0;n=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;o=n+q>>11;c[j+4>>2]=o;c[j+28>>2]=q-n>>11;l=l>>11;c[j+16>>2]=l;n=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;q=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=q+n|0;n=(B(q,-2)|0)+n|0;e=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;q=e+p>>11;c[j+8>>2]=q;e=p-e>>11;c[j+32>>2]=e;n=n>>11;c[j+20>>2]=n;f=d+-384|0;d=(c[g>>2]|0)+h|0;m=(m<<13)+134348800|0;p=m+(q*5793|0)|0;m=(B(q,-11586)|0)+m|0;o=o*10033|0;a[d>>0]=a[f+((p+o|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((p-o|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(m>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;k=(c[k>>2]<<13)+134348800|0;m=k+(n*5793|0)|0;k=(B(n,-11586)|0)+k|0;l=l*10033|0;a[d>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(k>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;g=(c[j+24>>2]<<13)+134348800|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+28>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;d=(c[d+336>>2]|0)+-384|0;j=c[e+84>>2]|0;i=B(c[j>>2]|0,b[f>>1]|0)|0;e=B(c[j+32>>2]|0,b[f+16>>1]|0)|0;i=i+4100|0;k=e+i|0;e=i-e|0;i=B(c[j+4>>2]|0,b[f+2>>1]|0)|0;f=B(c[j+36>>2]|0,b[f+18>>1]|0)|0;j=f+i|0;f=i-f|0;i=(c[g>>2]|0)+h|0;a[i>>0]=a[d+((j+k|0)>>>3&1023)>>0]|0;a[i+1>>0]=a[d+((k-j|0)>>>3&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;a[h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function Dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=(c[d+336>>2]|0)+-384+(((B(c[c[e+84>>2]>>2]|0,b[f>>1]|0)|0)+4100|0)>>>3&1023)|0;a[(c[g>>2]|0)+h>>0]=a[f>>0]|0;return}function Ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+224>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+192>>2]=s-r>>11;c[k+64>>2]=e+q>>11;c[k+160>>2]=q-e>>11;c[k+96>>2]=d+p>>11;d=p-d>>11;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){x=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=x;aP(f+1|0,x|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;x=c[e+16>>2]|0;s=x+i<<13;x=i-x<<13;u=c[e+24>>2]|0;q=(u+d|0)*4433|0;w=q+(d*6270|0)|0;u=q+(B(u,-15137)|0)|0;q=w+s|0;w=s-w|0;s=u+x|0;u=x-u|0;x=c[e+28>>2]|0;i=c[e+20>>2]|0;p=c[e+12>>2]|0;t=p+x|0;v=i+j|0;r=(t+v|0)*9633|0;t=r+(B(t,-16069)|0)|0;v=r+(B(v,-3196)|0)|0;r=B(x+j|0,-7373)|0;x=r+(x*2446|0)+t|0;r=r+(j*12299|0)+v|0;m=B(p+i|0,-20995)|0;v=m+(i*16819|0)+v|0;t=m+(p*25172|0)+t|0;a[f>>0]=a[l+((r+q|0)>>>18&1023)>>0]|0;a[f+7>>0]=a[l+((q-r|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[l+((t+s|0)>>>18&1023)>>0]|0;a[f+6>>0]=a[l+((s-t|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[l+((v+u|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[l+((u-v|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[l+((x+w|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[l+((w-x|0)>>>18&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function Fv(a,b){a=a|0;b=b|0;var d=0;d=c[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(c[a+84>>2]|0)){c[d+4>>2]=c[(c[a+476>>2]|0)+4>>2];break a}c[d+4>>2]=4;b=d+12|0;if(!(c[b>>2]|0)){a=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0;c[b>>2]=a}break}case 3:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=5;break}case 2:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=6;break}default:{b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function Gv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=zb;zb=zb+16|0;j=i;m=c[a+456>>2]|0;k=h-(c[g>>2]|0)|0;l=c[m+16>>2]|0;c[j>>2]=0;h=m+12|0;_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,c[h>>2]|0,j,k>>>0>l>>>0?l:k);Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0);zb=i;return}function Hv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[a+456>>2]|0;l=k+24|0;f=c[l>>2]|0;if(!f){j=k+16|0;h=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;i=k+12|0;c[i>>2]=h;f=c[l>>2]|0}else{h=k+12|0;j=k+16|0;i=h;h=c[h>>2]|0}_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,h,l,c[j>>2]|0);h=c[l>>2]|0;if(h>>>0>f>>>0){h=h-f|0;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,(c[i>>2]|0)+(f<<2)|0,0,h);c[g>>2]=(c[g>>2]|0)+h;h=c[l>>2]|0}f=c[j>>2]|0;if(h>>>0>>0)return;k=k+20|0;c[k>>2]=(c[k>>2]|0)+f;c[l>>2]=0;return}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;d=c[a+456>>2]|0;j=d+24|0;b=c[j>>2]|0;if(!b){i=d+20|0;e=d+16|0;k=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,c[i>>2]|0,c[e>>2]|0,0)|0;c[d+12>>2]=k;b=c[j>>2]|0;d=k}else{i=d+20|0;e=d+16|0;d=c[d+12>>2]|0}k=(c[e>>2]|0)-b|0;l=c[g>>2]|0;h=h-l|0;k=k>>>0>h>>>0?h:k;h=(c[a+116>>2]|0)-(c[i>>2]|0)|0;k=k>>>0>h>>>0?h:k;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,d+(b<<2)|0,f+(l<<2)|0,k);c[g>>2]=(c[g>>2]|0)+k;k=(c[j>>2]|0)+k|0;c[j>>2]=k;b=c[e>>2]|0;if(k>>>0>>0)return;c[i>>2]=(c[i>>2]|0)+b;c[j>>2]=0;return}function Jv(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+92>>2]=c[a+320>>2];c[b+96>>2]=c[a+116>>2];return}function Kv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[a+476>>2]|0;m=l+92|0;i=c[m>>2]|0;k=a+320|0;e=c[k>>2]|0;if((i|0)>=(e|0)){j=a+36|0;if((c[j>>2]|0)>0){e=c[a+216>>2]|0;i=0;while(1){n=(c[b+(i<<2)>>2]|0)+((B(c[l+100+(i<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Xb[c[l+52+(i<<2)>>2]&31](a,e,n,l+12+(i<<2)|0);i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else e=e+88|0}e=c[k>>2]|0}c[m>>2]=0;i=0}n=e-i|0;b=l+96|0;j=c[b>>2]|0;n=n>>>0>j>>>0?j:n;j=c[g>>2]|0;h=h-j|0;n=n>>>0>h>>>0?h:n;Yb[c[(c[a+480>>2]|0)+4>>2]&63](a,l+12|0,i,f+(j<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;c[b>>2]=(c[b>>2]|0)-n;n=(c[m>>2]|0)+n|0;c[m>>2]=n;if((n|0)<(c[k>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function Mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+320|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+112|0;h=0;do{b=c[j+(h<<2)>>2]|0;f=c[i>>2]|0;g=b+f|0;if((f|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function Ov(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+320|0;if((c[l>>2]|0)<=0)return;j=b+112|0;h=0;i=0;while(1){b=c[k+(i<<2)>>2]|0;d=c[j>>2]|0;g=b+d|0;if((d|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[j>>2]|0}Qv(k,i,k,i|1,1,d);i=i+2|0;if((i|0)>=(c[l>>2]|0))break;else h=h+1|0}return}function Pv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[b+476>>2]|0;q=c[f>>2]|0;d=c[d+4>>2]|0;f=a[r+140+d>>0]|0;o=f&255;d=a[r+150+d>>0]|0;r=d&255;p=b+320|0;g=c[p>>2]|0;if((g|0)<=0)return;n=b+112|0;k=f<<24>>24!=0;l=r+-1|0;if((d&255)>1){j=(f<<24>>24==0?~o:-2)+o+2|0;h=0;i=0;while(1){d=c[q+(i<<2)>>2]|0;f=c[n>>2]|0;g=d+f|0;if((f|0)>0){if(!k)break;b=c[e+(h<<2)>>2]|0;f=d;while(1){aP(f|0,a[b>>0]|0,j|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)b=b+1|0;else break}f=c[n>>2]|0}Qv(q,i,q,i+1|0,l,f);i=i+r|0;if((i|0)>=(c[p>>2]|0)){m=27;break}else h=h+1|0}if((m|0)==27)return;while(1){}}if(!k){d=(c[n>>2]|0)>0;f=0;while(1){if(d)break;f=f+r|0;if((f|0)>=(g|0)){m=27;break}}if((m|0)==27)return;while(1){}}b=0;h=0;while(1){f=c[q+(h<<2)>>2]|0;m=c[n>>2]|0;i=f+m|0;if((m|0)>0){g=c[e+(b<<2)>>2]|0;while(1){aP(f|0,a[g>>0]|0,o|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)g=g+1|0;else break}}h=h+r|0;if((h|0)>=(c[p>>2]|0))break;else b=b+1|0}return}function Qv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;b=a+(b<<2)|0;a=d+(e<<2)|0;while(1){_O(c[a>>2]|0,c[b>>2]|0,g|0)|0;if((f|0)>1){b=b+4|0;a=a+4|0;f=f+-1|0}else break}return}function Rv(a){a=a|0;return}function Sv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Qv(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function Tv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{a[m+b>>0]=((c[q+((d[k+b>>0]|0|256)<<2)>>2]|0)+(c[q+((d[j+b>>0]|0)<<2)>>2]|0)+(c[q+((d[l+b>>0]|0|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Uv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{s=d[k+b>>0]|0;r=s+128|0;a[m+b>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+((r+(d[j+b>>0]|0)&255)<<2)>>2]|0)+(c[q+((r+(d[l+b>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Vv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;b=0;h=c[f>>2]|0;while(1){l=a[j+b>>0]|0;a[h+2>>0]=l;a[h+1>>0]=l;a[h>>0]=l;b=b+1|0;if((b|0)==(k|0))break;else h=h+3|0}if((i|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function Wv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[b+480>>2]|0;u=c[b+112>>2]|0;n=c[b+336>>2]|0;o=c[r+8>>2]|0;p=c[r+12>>2]|0;q=c[r+16>>2]|0;r=c[r+20>>2]|0;if((h|0)<=0)return;s=e+4|0;t=e+8|0;if(!u)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;m=c[(c[t>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){v=d[k+i>>0]|0;w=d[l+i>>0]|0;x=d[m+i>>0]|0;a[b>>0]=a[n+((c[o+(x<<2)>>2]|0)+v)>>0]|0;a[b+1>>0]=a[n+(((c[q+(x<<2)>>2]|0)+(c[r+(w<<2)>>2]|0)>>16)+v)>>0]|0;a[b+2>>0]=a[n+((c[p+(w<<2)>>2]|0)+v)>>0]|0;i=i+1|0;if((i|0)==(u|0))break;else b=b+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Xv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[b+112>>2]|0;if((g|0)<=0)return;n=d+4|0;o=d+8|0;if(!m)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;k=c[(c[n>>2]|0)+(e<<2)>>2]|0;l=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;b=0;h=c[f>>2]|0;while(1){a[h>>0]=a[j+b>>0]|0;a[h+1>>0]=a[k+b>>0]|0;a[h+2>>0]=a[l+b>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else h=h+3|0}if((i|0)<=1)break;else f=f+4|0}return}function Yv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[o>>2]|0)+(f<<2)>>2]|0;m=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=0;i=c[g>>2]|0;while(1){s=a[l+b>>0]|0;q=d[m+b>>0]|0;r=(s&255)+128|0;a[i>>0]=r+(d[k+b>>0]|0);a[i+1>>0]=s;a[i+2>>0]=r+q;b=b+1|0;if((b|0)==(n|0))break;else i=i+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Zv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=c[b+480>>2]|0;w=c[b+112>>2]|0;o=c[b+336>>2]|0;p=c[s+8>>2]|0;q=c[s+12>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;if((h|0)<=0)return;t=e+4|0;u=e+8|0;v=e+12|0;if(!w)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[t>>2]|0)+(f<<2)>>2]|0;m=c[(c[u>>2]|0)+(f<<2)>>2]|0;n=c[(c[v>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){x=d[l+i>>0]|0;z=d[m+i>>0]|0;y=~a[k+i>>0]&255;a[b>>0]=a[o+(y-(c[p+(z<<2)>>2]|0))>>0]|0;a[b+1>>0]=a[o+(y-((c[r+(z<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16))>>0]|0;a[b+2>>0]=a[o+(y-(c[q+(x<<2)>>2]|0))>>0]|0;a[b+3>>0]=a[n+i>>0]|0;i=i+1|0;if((i|0)==(w|0))break;else b=b+4|0}if((j|0)<=1)break;else g=g+4|0}return}function _v(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;m=c[b+112>>2]|0;if((g|0)<=0)return;l=(m|0)==0;if((n|0)<=0)return;while(1){k=g;g=g+-1|0;if(!l){j=0;do{b=0;h=c[(c[d+(j<<2)>>2]|0)+(e<<2)>>2]|0;i=(c[f>>2]|0)+j|0;while(1){a[i>>0]=a[h>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else{h=h+1|0;i=i+n|0}}j=j+1|0}while((j|0)!=(n|0))}if((k|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function $v(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function aw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;l=n;m=c[a+476>>2]|0;i=m+36|0;if(!(c[i>>2]|0)){j=m+44|0;e=c[j>>2]|0;e=e>>>0<2?e:2;k=c[g>>2]|0;h=h-k|0;e=e>>>0>h>>>0?h:e;c[l>>2]=c[f+(k<<2)>>2];if(e>>>0>1)c[l+4>>2]=c[f+(k+1<<2)>>2];else{c[l+4>>2]=c[m+32>>2];c[i>>2]=1}Xb[c[m+12>>2]&31](a,b,c[d>>2]|0,l);f=(c[i>>2]|0)==0;c[g>>2]=(c[g>>2]|0)+e;c[j>>2]=(c[j>>2]|0)-e;if(!f){zb=n;return}}else{Qv(m+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[m+40>>2]|0);c[i>>2]=0;f=m+44|0;c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+-1}c[d>>2]=(c[d>>2]|0)+1;zb=n;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=c[b+476>>2]|0;x=c[b+336>>2]|0;y=c[w+16>>2]|0;u=c[w+20>>2]|0;v=c[w+24>>2]|0;w=c[w+28>>2]|0;i=c[e>>2]|0;h=f<<1;t=c[i+(h<<2)>>2]|0;h=c[i+((h|1)<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=c[g+4>>2]|0;s=b+112|0;e=c[s>>2]|0;m=e>>>1;if(!m){j=p;b=t}else{n=i+m|0;q=e&-2;r=m*6|0;o=h+q|0;l=p;e=t;b=g;j=f;k=m;while(1){A=d[i>>0]|0;B=d[l>>0]|0;C=c[y+(B<<2)>>2]|0;B=(c[v+(B<<2)>>2]|0)+(c[w+(A<<2)>>2]|0)>>16;A=c[u+(A<<2)>>2]|0;z=d[e>>0]|0;a[j>>0]=a[x+(C+z)>>0]|0;a[j+1>>0]=a[x+(B+z)>>0]|0;a[j+2>>0]=a[x+(A+z)>>0]|0;z=d[e+1>>0]|0;a[j+3>>0]=a[x+(C+z)>>0]|0;a[j+4>>0]=a[x+(B+z)>>0]|0;a[j+5>>0]=a[x+(A+z)>>0]|0;z=d[h>>0]|0;a[b>>0]=a[x+(C+z)>>0]|0;a[b+1>>0]=a[x+(B+z)>>0]|0;a[b+2>>0]=a[x+(A+z)>>0]|0;z=d[h+1>>0]|0;a[b+3>>0]=a[x+(C+z)>>0]|0;a[b+4>>0]=a[x+(B+z)>>0]|0;a[b+5>>0]=a[x+(A+z)>>0]|0;k=k+-1|0;if(!k)break;else{l=l+1|0;i=i+1|0;h=h+2|0;e=e+2|0;b=b+6|0;j=j+6|0}}j=p+m|0;i=n;h=o;b=t+q|0;g=g+r|0;f=f+r|0;e=c[s>>2]|0}if(!(e&1))return;B=d[i>>0]|0;A=d[j>>0]|0;z=c[y+(A<<2)>>2]|0;A=(c[v+(A<<2)>>2]|0)+(c[w+(B<<2)>>2]|0)>>16;B=c[u+(B<<2)>>2]|0;C=d[b>>0]|0;a[f>>0]=a[x+(z+C)>>0]|0;a[f+1>>0]=a[x+(A+C)>>0]|0;a[f+2>>0]=a[x+(B+C)>>0]|0;C=d[h>>0]|0;a[g>>0]=a[x+(z+C)>>0]|0;a[g+1>>0]=a[x+(A+C)>>0]|0;a[g+2>>0]=a[x+(B+C)>>0]|0;return}function cw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Xb[c[(c[a+476>>2]|0)+12>>2]&31](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function dw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=c[b+476>>2]|0;t=c[b+336>>2]|0;u=c[s+16>>2]|0;q=c[s+20>>2]|0;r=c[s+24>>2]|0;s=c[s+28>>2]|0;p=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;h=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;o=b+112|0;e=c[o>>2]|0;l=e>>>1;if(!l){b=i;g=p}else{b=i+l|0;m=e&-2;n=l*6|0;k=h;e=i;g=p;i=f;j=l;while(1){w=d[e>>0]|0;x=d[k>>0]|0;y=c[u+(x<<2)>>2]|0;x=(c[r+(x<<2)>>2]|0)+(c[s+(w<<2)>>2]|0)>>16;w=c[q+(w<<2)>>2]|0;v=d[g>>0]|0;a[i>>0]=a[t+(y+v)>>0]|0;a[i+1>>0]=a[t+(x+v)>>0]|0;a[i+2>>0]=a[t+(w+v)>>0]|0;v=d[g+1>>0]|0;a[i+3>>0]=a[t+(y+v)>>0]|0;a[i+4>>0]=a[t+(x+v)>>0]|0;a[i+5>>0]=a[t+(w+v)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+1|0;e=e+1|0;g=g+2|0;i=i+6|0}}h=h+l|0;g=p+m|0;f=f+n|0;e=c[o>>2]|0}if(!(e&1))return;x=d[b>>0]|0;v=d[h>>0]|0;w=(c[r+(v<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16;x=c[q+(x<<2)>>2]|0;y=d[g>>0]|0;a[f>>0]=a[t+((c[u+(v<<2)>>2]|0)+y)>>0]|0;a[f+1>>0]=a[t+(w+y)>>0]|0;a[f+2>>0]=a[t+(x+y)>>0]|0;return}function ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+484>>2]|0;g=c[f+24>>2]|0;e=a+88|0;if(!(c[e>>2]|0))d=0;else{c[e>>2]=2;d=2}if(!b){c[f+4>>2]=(d|0)==2?20:21;c[f+8>>2]=134;b=c[a+132>>2]|0;if((b|0)>=1){if((b|0)>256){d=c[a>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{d=c[a>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}if((c[e>>2]|0)==2){e=((c[a+112>>2]|0)*6|0)+12|0;d=f+32|0;b=c[d>>2]|0;if(!b){b=Jb[c[(c[a+4>>2]|0)+4>>2]&63](a,1,e)|0;c[d>>2]=b}aP(b|0,0,e|0)|0;if(!(c[f+40>>2]|0))gw(a);c[f+36>>2]=0}}else{c[f+4>>2]=19;c[f+8>>2]=133;c[f+28>>2]=1}b=f+28|0;if(!(c[b>>2]|0))return;aP(c[g>>2]|0,0,4096)|0;aP(c[g+4>>2]|0,0,4096)|0;aP(c[g+8>>2]|0,0,4096)|0;aP(c[g+12>>2]|0,0,4096)|0;aP(c[g+16>>2]|0,0,4096)|0;aP(c[g+20>>2]|0,0,4096)|0;aP(c[g+24>>2]|0,0,4096)|0;aP(c[g+28>>2]|0,0,4096)|0;aP(c[g+32>>2]|0,0,4096)|0;aP(c[g+36>>2]|0,0,4096)|0;aP(c[g+40>>2]|0,0,4096)|0;aP(c[g+44>>2]|0,0,4096)|0;aP(c[g+48>>2]|0,0,4096)|0;aP(c[g+52>>2]|0,0,4096)|0;aP(c[g+56>>2]|0,0,4096)|0;aP(c[g+60>>2]|0,0,4096)|0;aP(c[g+64>>2]|0,0,4096)|0;aP(c[g+68>>2]|0,0,4096)|0;aP(c[g+72>>2]|0,0,4096)|0;aP(c[g+76>>2]|0,0,4096)|0;aP(c[g+80>>2]|0,0,4096)|0;aP(c[g+84>>2]|0,0,4096)|0;aP(c[g+88>>2]|0,0,4096)|0;aP(c[g+92>>2]|0,0,4096)|0;aP(c[g+96>>2]|0,0,4096)|0;aP(c[g+100>>2]|0,0,4096)|0;aP(c[g+104>>2]|0,0,4096)|0;aP(c[g+108>>2]|0,0,4096)|0;aP(c[g+112>>2]|0,0,4096)|0;aP(c[g+116>>2]|0,0,4096)|0;aP(c[g+120>>2]|0,0,4096)|0;aP(c[g+124>>2]|0,0,4096)|0;c[b>>2]=0;return}function fw(a){a=a|0;c[(c[a+484>>2]|0)+28>>2]=1;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=c[a+484>>2]|0;a=Jb[c[c[a+4>>2]>>2]&63](a,1,2044)|0;e=a+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;d=16;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=0-d;a=a+1|0;d=(a&1^1)+d|0}while((a|0)!=48);b=0-d|0;a=48;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=b;a=a+1|0}while((a|0)!=256);return}function hw(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+484>>2]|0)+24>>2]|0;i=c[a+112>>2]|0;if((g|0)<1|(i|0)==0)return;a=0;do{f=i;h=c[e+(a<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;f=f+-1|0;if(!f)break;else h=h+3|0}a=a+1|0}while((a|0)!=(g|0));return}function iw(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;y=d+484|0;A=c[y>>2]|0;C=d+136|0;c[C>>2]=c[A+16>>2];s=c[A+20>>2]|0;z=Jb[c[c[d+4>>2]>>2]&63](d,1,s<<5)|0;c[z>>2]=0;c[z+4>>2]=31;c[z+8>>2]=0;c[z+12>>2]=63;c[z+16>>2]=0;c[z+20>>2]=31;nw(d,z);a:do if((s|0)>1){e=1;while(1){if((e<<1|0)>(s|0)){g=0;h=0;i=z;f=0;while(1){j=c[i+24>>2]|0;k=(j|0)>(g|0);f=k?i:f;h=h+1|0;if((h|0)==(e|0)){q=f;break}else{g=k?j:g;i=i+32|0}}}else{f=0;i=0;j=z;g=0;while(1){h=c[j+28>>2]|0;if((h|0)>(f|0)){x=(c[j+24>>2]|0)>0;g=x?j:g;f=x?h:f}i=i+1|0;if((i|0)==(e|0)){q=g;break}else j=j+32|0}}if(!q)break a;r=z+(e<<5)|0;g=q+4|0;c[z+(e<<5)+4>>2]=c[g>>2];h=q+12|0;c[z+(e<<5)+12>>2]=c[h>>2];i=q+20|0;c[z+(e<<5)+20>>2]=c[i>>2];c[r>>2]=c[q>>2];n=q+8|0;f=z+(e<<5)+8|0;c[f>>2]=c[n>>2];p=q+16|0;j=z+(e<<5)+16|0;c[j>>2]=c[p>>2];k=c[g>>2]|0;l=c[q>>2]|0;v=k-l<<4;m=c[h>>2]|0;n=c[n>>2]|0;w=(m-n|0)*12|0;o=c[i>>2]|0;p=c[p>>2]|0;x=(v|0)>(w|0);switch(((o-p<<3|0)>((x?v:w)|0)?2:(x^1)&1)&3){case 0:{t=(l+k|0)/2|0;c[g>>2]=t;f=r;g=t;t=15;break}case 1:{g=(n+m|0)/2|0;c[h>>2]=g;t=15;break}case 2:{g=(p+o|0)/2|0;c[i>>2]=g;f=j;t=15;break}default:{}}if((t|0)==15){t=0;c[f>>2]=g+1}nw(d,q);nw(d,r);e=e+1|0;if((e|0)>=(s|0))break a}}else e=1;while(0);x=0;do{r=c[(c[y>>2]|0)+24>>2]|0;j=c[z+(x<<5)>>2]|0;s=c[z+(x<<5)+4>>2]|0;t=c[z+(x<<5)+8>>2]|0;u=c[z+(x<<5)+12>>2]|0;v=c[z+(x<<5)+16>>2]|0;w=c[z+(x<<5)+20>>2]|0;if((j|0)>(s|0)|(t|0)>(u|0)|(v|0)>(w|0)){i=0;h=0;g=0;f=0}else{i=0;h=0;g=0;f=0;while(1){p=c[r+(j<<2)>>2]|0;q=j<<3|4;o=t;while(1){n=o<<2|2;l=p+(o<<6)+(v<<1)|0;m=v;while(1){D=b[l>>1]|0;k=D&65535;if(D<<16>>16){i=(B(m<<3|4,k)|0)+i|0;h=(B(n,k)|0)+h|0;g=(B(q,k)|0)+g|0;f=f+k|0}if((m|0)<(w|0)){l=l+2|0;m=m+1|0}else break}if((o|0)<(u|0))o=o+1|0;else break}if((j|0)<(s|0))j=j+1|0;else break}}D=f>>1;a[(c[c[C>>2]>>2]|0)+x>>0]=(g+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+x>>0]=(h+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+x>>0]=(i+D|0)/(f|0)|0;x=x+1|0}while((x|0)<(e|0));c[d+132>>2]=e;D=c[d>>2]|0;c[D+20>>2]=98;c[D+24>>2]=e;Ub[c[(c[d>>2]|0)+4>>2]&63](d,1);c[A+28>>2]=1;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;i=c[e+484>>2]|0;U=c[i+24>>2]|0;V=c[e+112>>2]|0;O=c[e+336>>2]|0;P=c[i+40>>2]|0;S=c[e+136>>2]|0;Q=c[S>>2]|0;R=c[S+4>>2]|0;S=c[S+8>>2]|0;if((h|0)<=0)return;T=i+36|0;J=i+32|0;K=(V|0)==0;L=V+-1|0;M=L*3|0;N=(V*3|0)+3|0;I=0;do{k=c[f+(I<<2)>>2]|0;j=c[g+(I<<2)>>2]|0;if(!(c[T>>2]|0)){F=3;G=1;i=c[J>>2]|0;l=1}else{F=-3;G=-1;i=(c[J>>2]|0)+(N<<1)|0;j=j+L|0;k=k+M|0;l=0}c[T>>2]=l;if(K){l=0;k=0;j=0}else{A=F+1|0;C=F+2|0;H=B(V,F)|0;p=0;q=0;w=0;x=0;y=0;l=0;D=0;E=0;z=V;m=0;u=i;while(1){v=u;u=u+(F<<1)|0;r=d[O+((c[P+(m+8+(b[u>>1]|0)>>4<<2)>>2]|0)+(d[k>>0]|0))>>0]|0;s=d[O+((c[P+(p+8+(b[v+(A<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0;t=d[O+((c[P+(q+8+(b[v+(C<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0;n=r>>>3;o=s>>>2;p=t>>>3;q=(c[U+(n<<2)>>2]|0)+(o<<6)+(p<<1)|0;m=b[q>>1]|0;if(!(m<<16>>16)){mw(e,n,o,p);m=b[q>>1]|0}m=(m&65535)+-1|0;a[j>>0]=m;o=r-(d[Q+m>>0]|0)|0;n=s-(d[R+m>>0]|0)|0;m=t-(d[S+m>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+w|0;b[v+2>>1]=(n*3|0)+D;D=(n*5|0)+x|0;b[v+4>>1]=(m*3|0)+E;E=(m*5|0)+y|0;z=z+-1|0;if(!z)break;else{p=n*7|0;q=m*7|0;w=o;x=n;y=m;m=o*7|0;j=j+G|0;k=k+F|0}}k=D;j=E;i=i+(H<<1)|0}b[i>>1]=l;b[i+2>>1]=k;b[i+4>>1]=j;I=I+1|0}while((I|0)!=(h|0));return}function kw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[(c[e+484>>2]|0)+24>>2]|0;s=c[e+112>>2]|0;if((h|0)<1|(s|0)==0)return;o=0;do{n=s;p=c[g+(o<<2)>>2]|0;q=c[f+(o<<2)>>2]|0;while(1){j=(d[q>>0]|0)>>>3;k=(d[q+1>>0]|0)>>>2;l=(d[q+2>>0]|0)>>>3;m=(c[r+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){mw(e,j,k,l);i=b[m>>1]|0}a[p>>0]=(i&65535)+255;n=n+-1|0;if(!n)break;else{p=p+1|0;q=q+3|0}}o=o+1|0}while((o|0)!=(h|0));return}function lw(a){a=a|0;return}function mw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=zb;zb=zb+1408|0;K=N+384|0;L=N+128|0;i=N;M=c[(c[e+484>>2]|0)+24>>2]|0;n=f>>>2<<5;H=n|4;p=g>>>3<<5;I=p|2;r=h>>>2<<5;J=r|4;x=c[e+132>>2]|0;n=n|28;o=n+H>>1;p=p|30;q=p+I>>1;r=r|28;s=r+J>>1;if((x|0)>0){v=c[e+136>>2]|0;t=c[v>>2]|0;u=c[v+4>>2]|0;v=c[v+8>>2]|0;w=2147483647;m=0;do{j=d[t+m>>0]|0;do if((H|0)<=(j|0)){if((n|0)<(j|0)){G=j-n<<1;l=j-H<<1;l=B(l,l)|0;j=B(G,G)|0;break}if((o|0)<(j|0)){l=j-H<<1;l=B(l,l)|0;j=0;break}else{l=j-n<<1;l=B(l,l)|0;j=0;break}}else{G=j-H<<1;l=j-n<<1;l=B(l,l)|0;j=B(G,G)|0}while(0);k=d[u+m>>0]|0;do if((I|0)<=(k|0)){if((p|0)<(k|0)){G=(k-p|0)*3|0;k=(k-I|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((q|0)<(k|0)){k=(k-I|0)*3|0;k=B(k,k)|0;break}else{k=(k-p|0)*3|0;k=B(k,k)|0;break}}else{G=(k-I|0)*3|0;k=(k-p|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);l=k+l|0;k=d[v+m>>0]|0;do if((J|0)<=(k|0)){if((r|0)<(k|0)){G=k-r|0;k=k-J|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((s|0)<(k|0)){k=k-J|0;k=B(k,k)|0;break}else{k=k-r|0;k=B(k,k)|0;break}}else{G=k-J|0;k=k-r|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);G=l+k|0;c[K+(m<<2)>>2]=j;w=(G|0)<(w|0)?G:w;m=m+1|0}while((m|0)!=(x|0));j=0;k=0;do{if((c[K+(k<<2)>>2]|0)<=(w|0)){a[L+j>>0]=k;j=j+1|0}k=k+1|0}while((k|0)!=(x|0))}else j=0;c[K>>2]=2147483647;c[K+4>>2]=2147483647;c[K+8>>2]=2147483647;c[K+12>>2]=2147483647;c[K+16>>2]=2147483647;c[K+20>>2]=2147483647;c[K+24>>2]=2147483647;c[K+28>>2]=2147483647;c[K+32>>2]=2147483647;c[K+36>>2]=2147483647;c[K+40>>2]=2147483647;c[K+44>>2]=2147483647;c[K+48>>2]=2147483647;c[K+52>>2]=2147483647;c[K+56>>2]=2147483647;c[K+60>>2]=2147483647;c[K+64>>2]=2147483647;c[K+68>>2]=2147483647;c[K+72>>2]=2147483647;c[K+76>>2]=2147483647;c[K+80>>2]=2147483647;c[K+84>>2]=2147483647;c[K+88>>2]=2147483647;c[K+92>>2]=2147483647;c[K+96>>2]=2147483647;c[K+100>>2]=2147483647;c[K+104>>2]=2147483647;c[K+108>>2]=2147483647;c[K+112>>2]=2147483647;c[K+116>>2]=2147483647;c[K+120>>2]=2147483647;c[K+124>>2]=2147483647;c[K+128>>2]=2147483647;c[K+132>>2]=2147483647;c[K+136>>2]=2147483647;c[K+140>>2]=2147483647;c[K+144>>2]=2147483647;c[K+148>>2]=2147483647;c[K+152>>2]=2147483647;c[K+156>>2]=2147483647;c[K+160>>2]=2147483647;c[K+164>>2]=2147483647;c[K+168>>2]=2147483647;c[K+172>>2]=2147483647;c[K+176>>2]=2147483647;c[K+180>>2]=2147483647;c[K+184>>2]=2147483647;c[K+188>>2]=2147483647;c[K+192>>2]=2147483647;c[K+196>>2]=2147483647;c[K+200>>2]=2147483647;c[K+204>>2]=2147483647;c[K+208>>2]=2147483647;c[K+212>>2]=2147483647;c[K+216>>2]=2147483647;c[K+220>>2]=2147483647;c[K+224>>2]=2147483647;c[K+228>>2]=2147483647;c[K+232>>2]=2147483647;c[K+236>>2]=2147483647;c[K+240>>2]=2147483647;c[K+244>>2]=2147483647;c[K+248>>2]=2147483647;c[K+252>>2]=2147483647;c[K+256>>2]=2147483647;c[K+260>>2]=2147483647;c[K+264>>2]=2147483647;c[K+268>>2]=2147483647;c[K+272>>2]=2147483647;c[K+276>>2]=2147483647;c[K+280>>2]=2147483647;c[K+284>>2]=2147483647;c[K+288>>2]=2147483647;c[K+292>>2]=2147483647;c[K+296>>2]=2147483647;c[K+300>>2]=2147483647;c[K+304>>2]=2147483647;c[K+308>>2]=2147483647;c[K+312>>2]=2147483647;c[K+316>>2]=2147483647;c[K+320>>2]=2147483647;c[K+324>>2]=2147483647;c[K+328>>2]=2147483647;c[K+332>>2]=2147483647;c[K+336>>2]=2147483647;c[K+340>>2]=2147483647;c[K+344>>2]=2147483647;c[K+348>>2]=2147483647;c[K+352>>2]=2147483647;c[K+356>>2]=2147483647;c[K+360>>2]=2147483647;c[K+364>>2]=2147483647;c[K+368>>2]=2147483647;c[K+372>>2]=2147483647;c[K+376>>2]=2147483647;c[K+380>>2]=2147483647;c[K+384>>2]=2147483647;c[K+388>>2]=2147483647;c[K+392>>2]=2147483647;c[K+396>>2]=2147483647;c[K+400>>2]=2147483647;c[K+404>>2]=2147483647;c[K+408>>2]=2147483647;c[K+412>>2]=2147483647;c[K+416>>2]=2147483647;c[K+420>>2]=2147483647;c[K+424>>2]=2147483647;c[K+428>>2]=2147483647;c[K+432>>2]=2147483647;c[K+436>>2]=2147483647;c[K+440>>2]=2147483647;c[K+444>>2]=2147483647;c[K+448>>2]=2147483647;c[K+452>>2]=2147483647;c[K+456>>2]=2147483647;c[K+460>>2]=2147483647;c[K+464>>2]=2147483647;c[K+468>>2]=2147483647;c[K+472>>2]=2147483647;c[K+476>>2]=2147483647;c[K+480>>2]=2147483647;c[K+484>>2]=2147483647;c[K+488>>2]=2147483647;c[K+492>>2]=2147483647;c[K+496>>2]=2147483647;c[K+500>>2]=2147483647;c[K+504>>2]=2147483647;c[K+508>>2]=2147483647;if((j|0)>0){v=e+136|0;u=0;do{w=a[L+u>>0]|0;r=w&255;x=c[v>>2]|0;q=H-(d[(c[x>>2]|0)+r>>0]|0)|0;s=q<<1;s=B(s,s)|0;G=I-(d[(c[x+4>>2]|0)+r>>0]|0)|0;z=G*3|0;s=(B(z,z)|0)+s|0;r=J-(d[(c[x+8>>2]|0)+r>>0]|0)|0;G=G*72|0;x=G+144|0;z=r<<4;e=z+64|0;y=z+192|0;z=z+320|0;A=G+432|0;C=G+720|0;D=G+1008|0;E=G+1296|0;F=G+1584|0;G=G+1872|0;p=3;q=(q<<6)+256|0;r=s+(B(r,r)|0)|0;s=i;t=K;while(1){n=t+16|0;if((r|0)<(c[t>>2]|0)){c[t>>2]=r;a[s>>0]=w}k=r+e|0;l=t+4|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+1>>0]=w}k=k+y|0;l=t+8|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+2>>0]=w}k=k+z|0;l=t+12|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+3>>0]=w}m=x+r|0;o=t+32|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+4>>0]=w}k=m+e|0;l=t+20|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+5>>0]=w}k=k+y|0;l=t+24|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+6>>0]=w}k=k+z|0;l=t+28|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+7>>0]=w}m=A+m|0;n=t+48|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+8>>0]=w}k=m+e|0;l=t+36|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+9>>0]=w}k=k+y|0;l=t+40|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+10>>0]=w}k=k+z|0;l=t+44|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+11>>0]=w}m=C+m|0;o=t+64|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+12>>0]=w}k=m+e|0;l=t+52|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+13>>0]=w}k=k+y|0;l=t+56|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+14>>0]=w}k=k+z|0;l=t+60|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+15>>0]=w}m=D+m|0;n=t+80|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+16>>0]=w}k=m+e|0;l=t+68|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+17>>0]=w}k=k+y|0;l=t+72|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+18>>0]=w}k=k+z|0;l=t+76|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+19>>0]=w}m=E+m|0;o=t+96|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+20>>0]=w}k=m+e|0;l=t+84|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+21>>0]=w}k=k+y|0;l=t+88|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+22>>0]=w}k=k+z|0;l=t+92|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+23>>0]=w}m=F+m|0;n=t+112|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+24>>0]=w}k=m+e|0;l=t+100|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+25>>0]=w}k=k+y|0;l=t+104|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+26>>0]=w}k=k+z|0;l=t+108|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+27>>0]=w}k=G+m|0;if((k|0)<(c[n>>2]|0)){c[n>>2]=k;a[s+28>>0]=w}k=k+e|0;l=t+116|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+29>>0]=w}k=k+y|0;l=t+120|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+30>>0]=w}k=k+z|0;l=t+124|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+31>>0]=w}r=r+q|0;if(!p)break;else{p=p+-1|0;q=q+512|0;s=s+32|0;t=t+128|0}}u=u+1|0}while((u|0)!=(j|0))}s=f&-4;t=g&-8;l=h&-4;m=t|1;n=t|2;o=t|3;p=t|4;q=t|5;r=t|6;k=g|7;j=0;while(1){g=M+(j+s<<2)|0;h=c[g>>2]|0;L=h+(t<<6)+(l<<1)|0;b[L>>1]=(d[i>>0]|0)+1;b[L+2>>1]=(d[i+1>>0]|0)+1;b[L+4>>1]=(d[i+2>>0]|0)+1;b[L+6>>1]=(d[i+3>>0]|0)+1;L=h+(m<<6)+(l<<1)|0;b[L>>1]=(d[i+4>>0]|0)+1;b[L+2>>1]=(d[i+5>>0]|0)+1;b[L+4>>1]=(d[i+6>>0]|0)+1;b[L+6>>1]=(d[i+7>>0]|0)+1;L=h+(n<<6)+(l<<1)|0;b[L>>1]=(d[i+8>>0]|0)+1;b[L+2>>1]=(d[i+9>>0]|0)+1;b[L+4>>1]=(d[i+10>>0]|0)+1;b[L+6>>1]=(d[i+11>>0]|0)+1;h=h+(o<<6)+(l<<1)|0;b[h>>1]=(d[i+12>>0]|0)+1;b[h+2>>1]=(d[i+13>>0]|0)+1;b[h+4>>1]=(d[i+14>>0]|0)+1;b[h+6>>1]=(d[i+15>>0]|0)+1;g=c[g>>2]|0;h=g+(p<<6)+(l<<1)|0;b[h>>1]=(d[i+16>>0]|0)+1;b[h+2>>1]=(d[i+17>>0]|0)+1;b[h+4>>1]=(d[i+18>>0]|0)+1;b[h+6>>1]=(d[i+19>>0]|0)+1;h=g+(q<<6)+(l<<1)|0;b[h>>1]=(d[i+20>>0]|0)+1;b[h+2>>1]=(d[i+21>>0]|0)+1;b[h+4>>1]=(d[i+22>>0]|0)+1;b[h+6>>1]=(d[i+23>>0]|0)+1;h=g+(r<<6)+(l<<1)|0;b[h>>1]=(d[i+24>>0]|0)+1;b[h+2>>1]=(d[i+25>>0]|0)+1;b[h+4>>1]=(d[i+26>>0]|0)+1;b[h+6>>1]=(d[i+27>>0]|0)+1;g=g+(k<<6)+(l<<1)|0;b[g>>1]=(d[i+28>>0]|0)+1;b[g+2>>1]=(d[i+29>>0]|0)+1;b[g+4>>1]=(d[i+30>>0]|0)+1;b[g+6>>1]=(d[i+31>>0]|0)+1;j=j+1|0;if((j|0)==4)break;else i=i+32|0}zb=N;return} +function mO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=o;if((-18-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)m=c[b>>2]|0;else m=b;if(d>>>0<2147483623){k=e+d|0;l=d<<1;k=k>>>0>>0?l:k;k=k>>>0<11?11:k+16&-16}else k=-17;l=tB(k)|0;if(g|0)VD(l,m,g)|0;if(i|0)VD(l+g|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)VD(l+g+i|0,m+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(m,e);c[b>>2]=l;c[b+8>>2]=k|-2147483648;i=f+i|0;c[b+4>>2]=i;a[n>>0]=0;bg(l+i|0,n);zb=o;return}function nO(a,b){a=a|0;b=b|0;return kO(a,b,Yf(b)|0)|0}function oO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;h=b+11|0;f=a[h>>0]|0;i=f<<24>>24<0;if(i)f=c[b+4>>2]|0;else f=f&255;do if(f>>>0>=d>>>0)if(i){i=(c[b>>2]|0)+d|0;a[g>>0]=0;bg(i,g);c[b+4>>2]=d;break}else{a[g>>0]=0;bg(b+d|0,g);a[h>>0]=d;break}else pO(b,d-f|0,e)|0;while(0);zb=j;return}function pO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;if(d|0){j=b+11|0;f=a[j>>0]|0;if(f<<24>>24<0){h=c[b+4>>2]|0;g=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;g=10}if((g-h|0)>>>0>>0){qO(b,g,h+d-g|0,h,h,0,0);f=a[j>>0]|0}if(f<<24>>24<0)g=c[b>>2]|0;else g=b;iO(g+h|0,d,e)|0;f=h+d|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}zb=k;return b|0}function qO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<2147483623){j=e+d|0;k=d<<1;j=j>>>0>>0?k:j;j=j>>>0<11?11:j+16&-16}else j=-17;k=tB(j)|0;if(g|0)VD(k,l,g)|0;e=f-h-g|0;if(e|0)VD(k+g+i|0,l+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(l,e);c[b>>2]=k;c[b+8>>2]=j|-2147483648;return}function rO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g){h=c[b+4>>2]|0;f=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;f=10}if((f-h|0)>>>0>=e>>>0){if(e|0){if(g)g=c[b>>2]|0;else g=b;VD(g+h|0,d,e)|0;f=h+e|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}}else mO(b,f,h+e-f|0,h,h,0,e,d);zb=k;return b|0}function sO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;h=j;i=j+1|0;a[h>>0]=d;g=b+11|0;d=a[g>>0]|0;e=d<<24>>24<0;if(e){f=c[b+4>>2]|0;d=(c[b+8>>2]&2147483647)+-1|0}else{f=d&255;d=10}if((f|0)==(d|0)){qO(b,d,1,d,d,0,0);if((a[g>>0]|0)<0)e=8;else e=7}else if(e)e=8;else e=7;if((e|0)==7){a[g>>0]=f+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=f+1}b=d+f|0;bg(b,h);a[i>>0]=0;bg(b+1|0,i);zb=j;return}function tO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(e>>>0>1073741807)eO(b);do if(e>>>0>=2){g=e+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=e;break}}else{a[b+8+3>>0]=e;f=b}while(0);kE(f,d,e)|0;c[h>>2]=0;JF(f+(e<<2)|0,h);zb=i;return}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(d>>>0>1073741807)eO(b);do if(d>>>0>=2){g=d+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=d;break}}else{a[b+8+3>>0]=d;f=b}while(0);vO(f,d,e)|0;c[h>>2]=0;JF(f+(d<<2)|0,h);zb=i;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;if(b)uA(a,c,b)|0;return a|0}function wO(b){b=b|0;var d=0;d=b+8|0;if((a[d+3>>0]|0)<0)Pf(c[b>>2]|0,c[d>>2]<<2);return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;f=b+8|0;k=f+3|0;h=a[k>>0]|0;i=h<<24>>24<0;if(i)g=(c[f>>2]&2147483647)+-1|0;else g=1;do if(g>>>0>=e>>>0){if(i)f=c[b>>2]|0;else f=b;yO(f,d,e)|0;c[j>>2]=0;JF(f+(e<<2)|0,j);if((a[k>>0]|0)<0){c[b+4>>2]=e;break}else{a[k>>0]=e;break}}else{if(i)f=c[b+4>>2]|0;else f=h&255;zO(b,g,e-g|0,f,0,f,e,d)}while(0);zb=l;return b|0}function yO(a,b,c){a=a|0;b=b|0;c=c|0;if(c)vA(a,b,c)|0;return a|0}function zO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=p;if((1073741806-d|0)>>>0>>0)eO(b);l=b+8|0;if((a[l+3>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else m=e}else m=1073741807;k=tB(m<<2)|0;if(g|0)kE(k,n,g)|0;if(i|0)kE(k+(g<<2)|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)kE(k+(g<<2)+(i<<2)|0,n+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(n,e<<2);c[b>>2]=k;c[l>>2]=m|-2147483648;i=f+i|0;c[b+4>>2]=i;c[o>>2]=0;JF(k+(i<<2)|0,o);zb=p;return}function AO(a,b){a=a|0;b=b|0;return xO(a,b,JI(b)|0)|0}function BO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((1073741807-d|0)>>>0>>0)eO(b);m=b+8|0;if((a[m+3>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<536870887){e=e+d|0;j=d<<1;e=e>>>0>>0?j:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else k=e}else k=1073741807;j=tB(k<<2)|0;if(g|0)kE(j,l,g)|0;e=f-h-g|0;if(e|0)kE(j+(g<<2)+(i<<2)|0,l+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(l,e<<2);c[b>>2]=j;c[m>>2]=k|-2147483648;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;g=b+8|0;k=g+3|0;f=a[k>>0]|0;i=f<<24>>24<0;if(i){h=c[b+4>>2]|0;f=(c[g>>2]&2147483647)+-1|0}else{h=f&255;f=1}if((f-h|0)>>>0>=e>>>0){if(e|0){if(i)g=c[b>>2]|0;else g=b;kE(g+(h<<2)|0,d,e)|0;f=h+e|0;if((a[k>>0]|0)<0)c[b+4>>2]=f;else a[k>>0]=f;c[j>>2]=0;JF(g+(f<<2)|0,j)}}else zO(b,f,h+e-f|0,h,h,0,e,d);zb=l;return b|0}function DO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=k+4|0;c[i>>2]=d;e=b+8|0;h=e+3|0;d=a[h>>0]|0;f=d<<24>>24<0;if(f){g=c[b+4>>2]|0;d=(c[e>>2]&2147483647)+-1|0}else{g=d&255;d=1}if((g|0)==(d|0)){BO(b,d,1,d,d,0,0);if((a[h>>0]|0)<0)e=8;else e=7}else if(f)e=8;else e=7;if((e|0)==7){a[h>>0]=g+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=g+1}b=d+(g<<2)|0;JF(b,i);c[j>>2]=0;JF(b+4|0,j);zb=k;return}function EO(a){a=a|0;ua()}function FO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14291]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=57204+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14291]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;zb=w;return v|0}l=c[14293]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=57204+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=h;c[14296]=f;v=i;zb=w;return v|0}g=c[14292]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[57468+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14292]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=j;c[14296]=h}v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14292]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[57468+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[57468+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14293]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=57468+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=57468+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14293]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14296]|0;if(b>>>0>15){v=a+m|0;c[14296]=v;c[14293]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14293]=0;c[14296]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;zb=w;return v|0}h=c[14294]|0;if(h>>>0>m>>>0){t=h-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}if(!(c[14409]|0)){c[14411]=4096;c[14410]=4096;c[14412]=-1;c[14413]=-1;c[14414]=0;c[14402]=0;c[14409]=n&-16^1431655768;a=4096}else a=c[14411]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;zb=w;return v|0}a=c[14401]|0;if(a|0?(l=c[14399]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;zb=w;return v|0}d:do if(!(c[14402]&4)){d=c[14297]|0;e:do if(d){e=57612;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=LO(b)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=LO(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14410]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14399]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14401]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=LO(b)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14411]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((LO(a)|0)==(-1|0)){LO(d)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14402]=c[14402]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=LO(k)|0,p=LO(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

>>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14399]|0)+h|0;c[14399]=b;if(b>>>0>(c[14400]|0)>>>0)c[14400]=b;j=c[14297]|0;f:do if(j){b=57612;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14294]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14298]=c[14413];break}if(g>>>0<(c[14295]|0)>>>0)c[14295]=g;d=g+h|0;b=57612;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14294]|0)+i|0;c[14294]=v;c[14297]=k;c[k+4>>2]=v|1}else{if((c[14296]|0)==(b|0)){v=(c[14293]|0)+i|0;c[14293]=v;c[14296]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=57468+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14292]=c[14292]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=57468+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14292]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;zb=w;return v|0}b=57612;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14298]=c[14413];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14403];c[b+4>>2]=c[14404];c[b+8>>2]=c[14405];c[b+12>>2]=c[14406];c[14403]=g;c[14404]=h;c[14406]=0;c[14405]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=57468+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14292]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14295]|0;if((v|0)==0|g>>>0>>0)c[14295]=g;c[14403]=g;c[14404]=h;c[14406]=0;c[14300]=c[14409];c[14299]=-1;c[14304]=57204;c[14303]=57204;c[14306]=57212;c[14305]=57212;c[14308]=57220;c[14307]=57220;c[14310]=57228;c[14309]=57228;c[14312]=57236;c[14311]=57236;c[14314]=57244;c[14313]=57244;c[14316]=57252;c[14315]=57252;c[14318]=57260;c[14317]=57260;c[14320]=57268;c[14319]=57268;c[14322]=57276;c[14321]=57276;c[14324]=57284;c[14323]=57284;c[14326]=57292;c[14325]=57292;c[14328]=57300;c[14327]=57300;c[14330]=57308;c[14329]=57308;c[14332]=57316;c[14331]=57316;c[14334]=57324;c[14333]=57324;c[14336]=57332;c[14335]=57332;c[14338]=57340;c[14337]=57340;c[14340]=57348;c[14339]=57348;c[14342]=57356;c[14341]=57356;c[14344]=57364;c[14343]=57364;c[14346]=57372;c[14345]=57372;c[14348]=57380;c[14347]=57380;c[14350]=57388;c[14349]=57388;c[14352]=57396;c[14351]=57396;c[14354]=57404;c[14353]=57404;c[14356]=57412;c[14355]=57412;c[14358]=57420;c[14357]=57420;c[14360]=57428;c[14359]=57428;c[14362]=57436;c[14361]=57436;c[14364]=57444;c[14363]=57444;c[14366]=57452;c[14365]=57452;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14298]=c[14413]}while(0);b=c[14294]|0;if(b>>>0>m>>>0){t=b-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}}v=ox()|0;c[v>>2]=48;v=0;zb=w;return v|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14295]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14296]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14293]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=57468+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14297]|0)==(j|0)){j=(c[14294]|0)+b|0;c[14294]=j;c[14297]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(j|0)){j=(c[14293]|0)+b|0;c[14293]=j;c[14296]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14291]=c[14291]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=57468+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=57204+(a<<1<<2)|0;b=c[14291]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=57468+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14292]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14299]|0)+-1|0;c[14299]=j;if(j|0)return;a=57620;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14299]=-1;return}function HO(a,b){a=a|0;b=b|0;var d=0;if(a){d=B(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=FO(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;aP(a|0,0,d|0)|0;return a|0}function IO(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=FO(b)|0;return b|0}if(b>>>0>4294967231){b=ox()|0;c[b>>2]=48;b=0;return b|0}d=JO(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=FO(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;_O(d|0,a|0,(e>>>0>>0?e:b)|0)|0;GO(a);b=d;return b|0}function JO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14411]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;KO(k,d);return a|0}if((c[14297]|0)==(i|0)){k=(c[14294]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14297]=e;c[14294]=d;return a|0}if((c[14296]|0)==(i|0)){e=(c[14293]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14293]=d;c[14296]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;KO(i,k);return a|0}return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14296]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14293]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14297]|0)==(i|0)){i=(c[14294]|0)+b|0;c[14294]=i;c[14297]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(i|0)){i=(c[14293]|0)+b|0;c[14293]=i;c[14296]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=57468+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14292]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function LO(a){a=a|0;var b=0,d=0;b=VO()|0;d=c[b>>2]|0;a=d+a|0;if((a|0)<0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}if(a>>>0>(Ba()|0)>>>0?(Da(a|0)|0)==0:0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}c[b>>2]=a;return d|0}function MO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=B(e,f)|0;d=a>>>16;a=(c>>>16)+(B(e,d)|0)|0;e=b>>>16;b=B(e,f)|0;return (E((a>>>16)+(B(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=MO(e,f)|0;a=F()|0;return (E((B(b,f)|0)+(B(d,e)|0)+a|a&0|0),c|0|0)|0}function OO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (E(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function PO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (E(d|0),a-c>>>0|0)|0}function QO(a){a=a|0;return (a?31-(C(a^a-1)|0)|0:32)|0}function RO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (E(n|0),f)|0}else{if(!g){n=0;f=0;return (E(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (E(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (E(n|0),f)|0}g=h-1|0;if(g&h|0){i=(C(h|0)|0)+33-(C(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (E(o|0),p)|0}else{p=QO(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (E(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (E(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (E(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((QO(i|0)|0)>>>0);return (E(o|0),p)|0}g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (E(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=OO(m|0,l|0,-1,-1)|0;d=F()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;PO(k|0,d|0,e|0,n|0)|0;p=F()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=PO(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=F()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (E(o|0),p)|0}function SO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return RO(a,b,c,d,0)|0}function TO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function UO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;k=k+1|0;c[a>>2]=k;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=k;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;E(e|0);return d|0}f=f+1|0}e=e*2|0;d=IO(d|0,8*(e+1|0)|0)|0;d=XO(a|0,b|0,d|0,e|0)|0;E(e|0);return d|0}function YO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function ZO(a,b){a=a|0;b=b|0;if(!i){i=a;j=b}}function _O(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Ca(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function $O(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else _O(b,c,d)|0;return b|0}function aP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function bP(a){a=+a;return a>=0.0?+s(a+.5):+A(a-.5)}function cP(a,b){a=a|0;b=b|0;return +Db[a&3](b|0)}function dP(a,b,c){a=a|0;b=b|0;c=c|0;return +Eb[a&1](b|0,c|0)}function eP(a){a=a|0;return Fb[a&1]()|0}function fP(a,b){a=a|0;b=b|0;return Gb[a&127](b|0)|0}function gP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;return Hb[a&1](b|0,+c,d|0,e|0,f|0,g|0)|0}function hP(a,b,c){a=a|0;b=b|0;c=c|0;return Ib[a&63](b|0,c|0)|0}function iP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jb[a&63](b|0,c|0,d|0)|0}function jP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kb[a&15](b|0,c|0,d|0,e|0)|0}function kP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return Lb[a&7](b|0,c|0,d|0,e|0,+f)|0}function lP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Mb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function mP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Nb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function nP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ob[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function oP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Pb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function pP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Qb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function qP(a){a=a|0;Rb[a&1]()}function rP(a,b){a=a|0;b=b|0;Sb[a&255](b|0)}function sP(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function tP(a,b,c){a=a|0;b=b|0;c=c|0;Ub[a&63](b|0,c|0)}function uP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Vb[a&3](b|0,c|0,+d)}function vP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wb[a&3](b|0,c|0,d|0)}function wP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xb[a&31](b|0,c|0,d|0,e|0)}function xP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Yb[a&63](b|0,c|0,d|0,e|0,f|0)}function yP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Zb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function zP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;_b[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function AP(a){a=a|0;D(0);return 0.0}function BP(a,b){a=a|0;b=b|0;D(1);return 0.0}function CP(){D(2);return 0}function DP(a){a=a|0;D(3);return 0}function EP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;D(4);return 0}function FP(a,b){a=a|0;b=b|0;D(5);return 0}function GP(a,b,c){a=a|0;b=b|0;c=c|0;D(6);return 0}function HP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(7);return 0}function IP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;D(8);return 0}function JP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(9);return 0}function KP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;D(10);return 0}function LP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(11);return 0}function MP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(12);return 0}function NP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;D(13);return 0}function OP(){D(14)}function PP(a){a=a|0;D(15)}function QP(a,b){a=a|0;b=+b;D(16)}function RP(a,b){a=a|0;b=b|0;D(17)}function SP(a,b,c){a=a|0;b=b|0;c=+c;D(18)}function TP(a,b,c){a=a|0;b=b|0;c=c|0;D(19)}function UP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(20)}function VP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(21)}function WP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(22)}function XP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(23)} + +// EMSCRIPTEN_END_FUNCS +var Db=[AP,pr,sr,Cr];var Eb=[BP,ss];var Fb=[CP,lr];var Gb=[DP,pj,kx,rx,_A,ND,OD,QD,RD,aE,bE,dE,eE,aF,gF,lF,mF,rF,sF,NH,UH,VH,WH,XH,YH,ZH,_H,vI,CI,DI,EI,FI,GI,HI,II,qJ,rJ,wJ,BJ,CJ,HJ,MJ,NJ,SJ,XJ,YJ,bK,ZK,_K,aL,pL,qL,sL,XL,YL,cM,dM,iL,jL,lL,yL,zL,BL,ex,bu,FO,dx,Kq,Mq,Tq,Uq,ar,br,cr,hr,ir,vr,xr,zr,Er,Gr,Ir,Ds,Pt,Wt,Xt,Yt,Zt,zu,Bu,Yw,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP];var Hb=[EP,Lx];var Ib=[FP,$l,iq,pq,SD,UD,fE,hE,cF,iF,nF,tF,KL,ML,OL,nM,pM,rM,Le,bx,Nq,Pq,Qq,Rq,Xq,_q,$q,er,fr,gr,nt,Os,Jt,Rt,Au,Cu,Du,Hu,Iu,Ju,Ku,Mu,Nu,Su,Tu,Uu,Vu,Wu,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP];var Jb=[GP,lx,qx,fy,FA,fB,KD,PD,TD,ZD,cE,gE,bF,hF,AF,HF,NK,SK,LL,NL,QL,jM,oM,qM,tM,zw,Iq,Wq,Yq,Zq,dr,ht,Ys,Ew,Fw,Ez,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP];var Kb=[HP,mx,sx,PL,kM,lM,mM,sM,wt,Gw,Hw,HP,HP,HP,HP,HP];var Lb=[IP,oH,pH,FH,GH,IP,IP,IP];var Mb=[JP,yF,FF,jH,kH,mH,qH,AH,BH,DH,HH,YK,$K,oL,rL,RL,uM,hL,kL,xL,AL,Lw,Mw,JP,JP,JP,JP,JP,JP,JP,JP,JP];var Nb=[KP,BK,HK,KP];var Ob=[LP,MF,NF,OF,PF,QF,RF,SF,TF,UF,VF,WF,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,lH,nH,CH,EH,OH,PH,QH,RH,SH,wI,xI,yI,zI,AI,CK,IK,Iw,Jw,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP];var Pb=[MP,eJ,kJ,gK,hK,rK,sK,MP];var Qb=[NP,TH,BI,WK,XK,mL,nL,fL,gL,vL,wL,NP,NP,NP,NP,NP];var Rb=[OP,wA];var Sb=[PP,Qi,Ri,Ti,Ui,nj,oj,ZN,Zl,_l,am,gq,hq,jq,nq,oq,qq,BA,CA,DA,EA,OA,YA,ZA,dB,eB,gB,DD,FD,HD,ID,WD,XD,mE,nE,oE,pE,rE,sE,tE,uE,wE,xE,yE,zE,BE,CE,DE,EE,_E,eF,jF,pF,vF,wF,xF,DF,EF,KF,LF,GG,HG,hH,iH,yH,zH,LH,MH,tI,uI,cJ,dJ,iJ,jJ,oJ,pJ,zJ,AJ,KJ,LJ,VJ,WJ,eK,fK,pK,qK,zK,AK,FK,GK,LK,MK,QK,RK,CF,eL,VK,tL,uL,FL,GL,IL,JL,VL,WL,aM,bM,hM,iM,vM,wM,xM,hf,ax,jr,Ot,St,Vt,du,eu,pw,qw,fw,$v,Rv,Jv,Yu,Qu,Ru,Fu,Gu,wu,xu,iw,lw,Kw,Ow,Zw,_w,$w,fx,hx,jx,cG,eG,iK,GO,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP];var Tb=[QP,nr,rr,Ar];var Ub=[RP,JD,YD,$E,fF,kF,qF,sJ,tJ,uJ,vJ,xJ,yJ,DJ,EJ,FJ,GJ,IJ,JJ,OJ,PJ,QJ,RJ,TJ,UJ,ZJ,_J,$J,aK,cK,dK,PK,UK,ZL,_L,$L,eM,fM,gM,Nt,tr,wr,yr,Dr,Fr,Hr,Is,Qt,ow,ew,Fv,su,Nw,gx,ix,Mx,RP,RP,RP,RP,RP,RP,RP,RP];var Vb=[SP,xs,gs,SP];var Wb=[TP,Ww,ns,TP];var Xb=[UP,IA,RA,jB,MD,$D,zF,GF,Ue,bw,dw,Lv,Mv,Nv,Ov,Pv,tu,uu,vu,hw,jw,kw,sw,tw,uw,vw,ww,UP,UP,UP,UP,UP];var Yb=[VP,HA,QA,iB,Sv,Tv,Uv,Vv,Wv,Xv,Yv,Zv,_v,Dv,Cv,Bv,Av,zv,yv,xv,wv,vv,uv,tv,sv,rv,qv,pv,ov,nv,mv,lv,kv,jv,iv,hv,gv,fv,ev,dv,cv,bv,av,$u,Ev,_u,Zu,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP];var Zb=[WP,GA,PA,hB,LD,_D,OK,TK];var _b=[XP,aw,cw,Kv,Gv,Hv,Iv,XP];return{__GLOBAL__I_000101:SE,__GLOBAL__sub_I_ARToolKitJS_cpp:Dq,__GLOBAL__sub_I_bind_cpp:EB,__GLOBAL__sub_I_iostream_cpp:TE,__ZSt18uncaught_exceptionv:yD,___cxa_can_catch:wB,___cxa_is_pointer_type:xB,___embind_register_native_and_builtin_types:HB,___emscripten_environ_constructor:zB,___errno_location:ox,___getTypeName:tD,___muldi3:NO,___udivdi3:SO,__get_daylight:BB,__get_environ:DB,__get_timezone:CB,__get_tzname:AB,_bitshift64Lshr:TO,_bitshift64Shl:UO,_emscripten_get_sbrk_ptr:VO,_emscripten_replace_memory:Cb,_free:GO,_i64Add:OO,_i64Subtract:PO,_llvm_bswap_i32:WO,_malloc:FO,_memcpy:_O,_memmove:$O,_memset:aP,_realloc:IO,_roundf:bP,_saveSetjmp:XO,_setThrew:ZO,_testSetjmp:YO,dynCall_di:cP,dynCall_dii:dP,dynCall_i:eP,dynCall_ii:fP,dynCall_iidiiii:gP,dynCall_iii:hP,dynCall_iiii:iP,dynCall_iiiii:jP,dynCall_iiiiid:kP,dynCall_iiiiii:lP,dynCall_iiiiiid:mP,dynCall_iiiiiii:nP,dynCall_iiiiiiii:oP,dynCall_iiiiiiiii:pP,dynCall_v:qP,dynCall_vi:rP,dynCall_vid:sP,dynCall_vii:tP,dynCall_viid:uP,dynCall_viii:vP,dynCall_viiii:wP,dynCall_viiiii:xP,dynCall_viiiiii:yP,dynCall_viiiiiii:zP,establishStackSpace:cc,stackAlloc:$b,stackRestore:bc,stackSave:ac}}) + + +// EMSCRIPTEN_END_ASM +(asmGlobalArg,asmLibraryArg,buffer);var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var __ZSt18uncaught_exceptionv=Module["__ZSt18uncaught_exceptionv"]=asm["__ZSt18uncaught_exceptionv"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=asm["___embind_register_native_and_builtin_types"];var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=asm["___emscripten_environ_constructor"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var __get_daylight=Module["__get_daylight"]=asm["__get_daylight"];var __get_environ=Module["__get_environ"]=asm["__get_environ"];var __get_timezone=Module["__get_timezone"]=asm["__get_timezone"];var __get_tzname=Module["__get_tzname"]=asm["__get_tzname"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_get_sbrk_ptr=Module["_emscripten_get_sbrk_ptr"]=asm["_emscripten_get_sbrk_ptr"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _roundf=Module["_roundf"]=asm["_roundf"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _setThrew=Module["_setThrew"]=asm["_setThrew"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidiiii=Module["dynCall_iidiiii"]=asm["dynCall_iidiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status)}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); + +// continuing 'workerRunner' function from treex-armarkercontrols-nft-start.js file + +this.onmessage = function (e) { + var msg = e.data; + switch (msg.type) { + case "init": { + load(msg); + return; + } + case "process": { + next = msg.imagedata; + process(); + return; + } + } +}; + +var next = null; + +var ar = null; +var markerResult = null; + +function load(msg) { + var camUrl, nftMarkerUrl; + var basePath = self.origin; + console.log('base path:', basePath); + // test if the msg.param (the incoming url) is an http or https path + var regexC = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reC = regexC.test(msg.param); + if (reC == true) { + camUrl = msg.param; + } else if (reC == false) { + camUrl = basePath + '/' + msg.param; + } + var onLoad = function () { + ar = new ARController(msg.pw, msg.ph, param); + var cameraMatrix = ar.getCameraMatrix(); + + // after the ARController is set up, we load the NFT Marker + var regexM = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reM = regexM.test(msg.marker); + if (reM == true) { + nftMarkerUrl = msg.marker; + } else if (reM == false) { + nftMarkerUrl = basePath + '/' + msg.marker; + } + ar.loadNFTMarker(nftMarkerUrl, function (markerId) { + ar.trackNFTMarkerId(markerId); + postMessage({ type: 'endLoading' }) + }, function (err) { + console.log('Error in loading marker on Worker', err) + }); + + // ...and we listen for event when marker has been found from camera + ar.addEventListener('getNFTMarker', function (ev) { + // let AR.js know that a NFT marker has been found, with its matrix for positioning + markerResult = { + type: 'found', + matrix: JSON.stringify(ev.data.matrix), + }; + }); + + postMessage({ type: "loaded", proj: JSON.stringify(cameraMatrix) }); + }; + + var onError = function (error) { + console.error(error); + }; + console.log(msg.param); + // we cannot pass the entire ARController, so we re-create one inside the Worker, starting from camera_param + var param = new ARCameraParam(camUrl, onLoad, onError); +} + +function process() { + markerResult = null; + + if (ar && ar.process) { + ar.process(next); + } + + if (markerResult) { + postMessage(markerResult); + } else { + postMessage({ + type: "not found", + }); + } + next = null; +} + }; + +function onMarkerFound(event) { + if (event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence) return + if (event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) +} +} +var THREEx = THREEx || {} + +THREEx.ArMarkerHelper = function(markerControls){ + this.object3d = new THREE.Group + + var mesh = new THREE.AxesHelper() + this.object3d.add(mesh) + + var text = markerControls.id + // debugger + // var text = markerControls.parameters.patternUrl.slice(-1).toUpperCase(); + + var canvas = document.createElement( 'canvas' ); + canvas.width = 64; + canvas.height = 64; + + var context = canvas.getContext( '2d' ); + var texture = new THREE.CanvasTexture( canvas ); + + // put the text in the sprite + context.font = '48px monospace'; + context.fillStyle = 'rgba(192,192,255, 0.5)'; + context.fillRect( 0, 0, canvas.width, canvas.height ); + context.fillStyle = 'darkblue'; + context.fillText(text, canvas.width/4, 3*canvas.height/4 ) + texture.needsUpdate = true + + // var geometry = new THREE.CubeGeometry(1, 1, 1) + var geometry = new THREE.PlaneGeometry(1, 1) + var material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true + }); + var mesh = new THREE.Mesh(geometry, material) + mesh.rotation.x = -Math.PI/2 + + this.object3d.add(mesh) + +} +var THREEx = THREEx || {} + +/** + * - lerp position/quaternino/scale + * - minDelayDetected + * - minDelayUndetected + * @param {[type]} object3d [description] + * @param {[type]} parameters [description] + */ +THREEx.ArSmoothedControls = function(object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + // copy parameters + this.object3d.visible = false + + this._lastLerpStepAt = null + this._visibleStartedAt = null + this._unvisibleStartedAt = null + + // handle default parameters + parameters = parameters || {} + this.parameters = { + // lerp coeficient for the position - between [0,1] - default to 1 + lerpPosition: 0.8, + // lerp coeficient for the quaternion - between [0,1] - default to 1 + lerpQuaternion: 0.2, + // lerp coeficient for the scale - between [0,1] - default to 1 + lerpScale: 0.7, + // delay for lerp fixed steps - in seconds - default to 1/120 + lerpStepDelay: 1/60, + // minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds + minVisibleDelay: 0.0, + // minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds + minUnvisibleDelay: 0.2, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } +} + +THREEx.ArSmoothedControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +THREEx.ArSmoothedControls.prototype.constructor = THREEx.ArSmoothedControls; + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArSmoothedControls.prototype.update = function(targetObject3d){ + var object3d = this.object3d + var parameters = this.parameters + var wasVisible = object3d.visible + var present = performance.now()/1000 + + + ////////////////////////////////////////////////////////////////////////////// + // handle object3d.visible with minVisibleDelay/minUnvisibleDelay + ////////////////////////////////////////////////////////////////////////////// + if( targetObject3d.visible === false ) this._visibleStartedAt = null + if( targetObject3d.visible === true ) this._unvisibleStartedAt = null + + if( targetObject3d.visible === true && this._visibleStartedAt === null ) this._visibleStartedAt = present + if( targetObject3d.visible === false && this._unvisibleStartedAt === null ) this._unvisibleStartedAt = present + + if( wasVisible === false && targetObject3d.visible === true ){ + var visibleFor = present - this._visibleStartedAt + if( visibleFor >= this.parameters.minVisibleDelay ){ + object3d.visible = true + snapDirectlyToTarget() + } + // console.log('visibleFor', visibleFor) + } + + if( wasVisible === true && targetObject3d.visible === false ){ + var unvisibleFor = present - this._unvisibleStartedAt + if( unvisibleFor >= this.parameters.minUnvisibleDelay ){ + object3d.visible = false + } + } + + ////////////////////////////////////////////////////////////////////////////// + // apply lerp on positon/quaternion/scale + ////////////////////////////////////////////////////////////////////////////// + + // apply lerp steps - require fix time steps to behave the same no matter the fps + if( this._lastLerpStepAt === null ){ + applyOneSlerpStep() + this._lastLerpStepAt = present + }else{ + var nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay ) + for(var i = 0; i < nStepsToDo; i++){ + applyOneSlerpStep() + this._lastLerpStepAt += this.parameters.lerpStepDelay + } + } + + // disable the lerp by directly copying targetObject3d position/quaternion/scale + if( false ){ + snapDirectlyToTarget() + } + + // update the matrix + this.object3d.updateMatrix() + + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible/becameUnVisible event + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible event + if( wasVisible === false && object3d.visible === true ){ + this.dispatchEvent({ type: 'becameVisible' }) + } + // honor becameUnVisible event + if( wasVisible === true && object3d.visible === false ){ + this.dispatchEvent({ type: 'becameUnVisible' }) + } + return + + function snapDirectlyToTarget(){ + object3d.position.copy( targetObject3d.position ) + object3d.quaternion.copy( targetObject3d.quaternion ) + object3d.scale.copy( targetObject3d.scale ) + } + + function applyOneSlerpStep(){ + object3d.position.lerp(targetObject3d.position, parameters.lerpPosition) + object3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion) + object3d.scale.lerp(targetObject3d.scale, parameters.lerpScale) + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters, sourceParameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // Labeling mode for markers - ['black_region', 'white_region'] + // black_region: Black bordered markers on a white background, white_region: White bordered markers on a black background + labelingMode: 'black_region', + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + console.assert(["black_region", "white_region"].indexOf(this.parameters.labelingMode) !== -1, "invalid parameter labelingMode", this.parameters.labelingMode); + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false) + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done) + } else console.assert(false) + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + if (!markerControls.context.arController.showObject) { + markerControls.object3d.visible = false + } + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement) + } else { + console.assert(false) + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + var onError = function(err) { + console.error(err); + }; + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, + function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set the labelingMode for artoolkit + var labelingModeTypes = { + "black_region": artoolkit.AR_LABELING_BLACK_REGION, + "white_region": artoolkit.AR_LABELING_WHITE_REGION + } + var labelingModeType = labelingModeTypes[_this.parameters.labelingMode]; + console.assert(labelingModeType !== undefined); + arController.setLabelingMode(labelingModeType); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }, + onError + ); + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function () { + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +/** + * ArToolkitProfile helps you build parameters for artoolkit + * - it is fully independent of the rest of the code + * - all the other classes are still expecting normal parameters + * - you can use this class to understand how to tune your specific usecase + * - it is made to help people to build parameters without understanding all the underlying details. + */ +ARjs.Profile = THREEx.ArToolkitProfile = function () { + this.reset() + + this.performance('default') +} + + +ARjs.Profile.prototype._guessPerformanceLabel = function () { + var isMobile = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ? true : false + if (isMobile === true) { + return 'phone-normal' + } + return 'desktop-normal' +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all parameters + */ +ARjs.Profile.prototype.reset = function () { + this.sourceParameters = { + // to read from the webcam + sourceType: 'webcam', + } + + this.contextParameters = { + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + detectionMode: 'mono', + } + this.defaultMarkerParameters = { + type: 'pattern', + patternUrl: THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro', + changeMatrixMode: 'modelViewMatrix', + } + return this +}; + +////////////////////////////////////////////////////////////////////////////// +// Performance +////////////////////////////////////////////////////////////////////////////// + + + +ARjs.Profile.prototype.performance = function (label) { + + if (label === 'default') { + label = this._guessPerformanceLabel() + } + + if (label === 'desktop-fast') { + this.contextParameters.canvasWidth = 640 * 3 + this.contextParameters.canvasHeight = 480 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'desktop-normal') { + this.contextParameters.canvasWidth = 640 + this.contextParameters.canvasHeight = 480 + + this.contextParameters.maxDetectionRate = 60 + } else if (label === 'phone-normal') { + this.contextParameters.canvasWidth = 80 * 4 + this.contextParameters.canvasHeight = 60 * 4 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'phone-slow') { + this.contextParameters.canvasWidth = 80 * 3 + this.contextParameters.canvasHeight = 60 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else { + console.assert(false, 'unknonwn label ' + label) + } + return this +} + +////////////////////////////////////////////////////////////////////////////// +// Marker +////////////////////////////////////////////////////////////////////////////// + + +ARjs.Profile.prototype.defaultMarker = function (trackingBackend) { + trackingBackend = trackingBackend || this.contextParameters.trackingBackend + + if (trackingBackend === 'artoolkit') { + this.contextParameters.detectionMode = 'mono' + this.defaultMarkerParameters.type = 'pattern' + this.defaultMarkerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro' + } else console.assert(false) + + return this +} +////////////////////////////////////////////////////////////////////////////// +// Source +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.sourceWebcam = function () { + this.sourceParameters.sourceType = 'webcam' + delete this.sourceParameters.sourceUrl + return this +} + +ARjs.Profile.prototype.sourceVideo = function (url) { + this.sourceParameters.sourceType = 'video' + this.sourceParameters.sourceUrl = url + return this +} + +ARjs.Profile.prototype.sourceImage = function (url) { + this.sourceParameters.sourceType = 'image' + this.sourceParameters.sourceUrl = url + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingBackend = function (trackingBackend) { + console.warn('stop profile.trackingBackend() obsolete function. use .trackingMethod instead') + this.contextParameters.trackingBackend = trackingBackend + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.changeMatrixMode = function (changeMatrixMode) { + this.defaultMarkerParameters.changeMatrixMode = changeMatrixMode + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingMethod = function (trackingMethod) { + var data = ARjs.Utils.parseTrackingMethod(trackingMethod) + this.defaultMarkerParameters.markersAreaEnabled = data.markersAreaEnabled + this.contextParameters.trackingBackend = data.trackingBackend + return this +} + +/** + * check if the profile is valid. Throw an exception is not valid + */ +ARjs.Profile.prototype.checkIfValid = function () { + return this +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Source = THREEx.ArToolkitSource = function (parameters) { + var _this = this + + this.ready = false + this.domElement = null + + // handle default parameters + this.parameters = { + // type of source - ['webcam', 'image', 'video'] + sourceType: 'webcam', + // url of the source - valid if sourceType = image|video + sourceUrl: null, + + // Device id of the camera to use (optional) + deviceId: null, + + // resolution of at which we initialize in the source image + sourceWidth: 640, + sourceHeight: 480, + // resolution displayed for the source + displayWidth: 640, + displayHeight: 480, + } + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.init = function (onReady, onError) { + var _this = this + + if (this.parameters.sourceType === 'image') { + var domElement = this._initSourceImage(onSourceReady, onError) + } else if (this.parameters.sourceType === 'video') { + var domElement = this._initSourceVideo(onSourceReady, onError) + } else if (this.parameters.sourceType === 'webcam') { + // var domElement = this._initSourceWebcamOld(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) + } else { + console.assert(false) + } + + // attach + this.domElement = domElement + this.domElement.style.position = 'absolute' + this.domElement.style.top = '0px' + this.domElement.style.left = '0px' + this.domElement.style.zIndex = '-2' + this.domElement.setAttribute('id', 'arjs-video'); + + return this + function onSourceReady() { + document.body.appendChild(_this.domElement); + window.dispatchEvent(new CustomEvent('arjs-video-loaded', { + detail: { + component: document.querySelector('#arjs-video'), + }, + })); + + _this.ready = true + + onReady && onReady() + } +} + +//////////////////////////////////////////////////////////////////////////////// +// init image source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceImage = function (onReady) { + // TODO make it static + var domElement = document.createElement('img'); + domElement.src = this.parameters.sourceUrl; + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onload = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// init video source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceVideo = function (onReady) { + // TODO make it static + var domElement = document.createElement('video'); + domElement.src = this.parameters.sourceUrl; + + domElement.style.objectFit = 'initial'; + + domElement.autoplay = true; + domElement.webkitPlaysinline = true; + domElement.controls = false; + domElement.loop = true; + domElement.muted = true; + + // trick to trigger the video on android + document.body.addEventListener('click', function onClick() { + document.body.removeEventListener('click', onClick); + domElement.play() + }); + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onloadeddata = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// handle webcam source +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype._initSourceWebcam = function (onReady, onError) { + var _this = this + + // init default value + onError = onError || function (error) { + var event = new CustomEvent('camera-error', { error: error }); + window.dispatchEvent(event); + + setTimeout(() => { + alert('Webcam Error\nName: ' + error.name + '\nMessage: ' + error.message) + }, 1000); + } + + var domElement = document.createElement('video'); + domElement.setAttribute('autoplay', ''); + domElement.setAttribute('muted', ''); + domElement.setAttribute('playsinline', ''); + domElement.style.width = this.parameters.displayWidth + 'px' + domElement.style.height = this.parameters.displayHeight + 'px' + + // check API is available + if (navigator.mediaDevices === undefined + || navigator.mediaDevices.enumerateDevices === undefined + || navigator.mediaDevices.getUserMedia === undefined) { + if (navigator.mediaDevices === undefined) var fctName = 'navigator.mediaDevices' + else if (navigator.mediaDevices.enumerateDevices === undefined) var fctName = 'navigator.mediaDevices.enumerateDevices' + else if (navigator.mediaDevices.getUserMedia === undefined) var fctName = 'navigator.mediaDevices.getUserMedia' + else console.assert(false) + onError({ + name: '', + message: 'WebRTC issue-! ' + fctName + ' not present in your browser' + }); + return null + } + + // get available devices + navigator.mediaDevices.enumerateDevices().then(function (devices) { + var userMediaConstraints = { + audio: false, + video: { + facingMode: 'environment', + width: { + ideal: _this.parameters.sourceWidth, + // min: 1024, + // max: 1920 + }, + height: { + ideal: _this.parameters.sourceHeight, + // min: 776, + // max: 1080 + } + } + }; + + if (null !== _this.parameters.deviceId) { + userMediaConstraints.video.deviceId = { + exact: _this.parameters.deviceId + }; + } + + // get a device which satisfy the constraints + navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) { + // set the .src of the domElement + domElement.srcObject = stream; + + var event = new CustomEvent('camera-init', { stream: stream }); + window.dispatchEvent(event); + // to start the video, when it is possible to start it only on userevent. like in android + document.body.addEventListener('click', function () { + domElement.play(); + }); + // domElement.play(); + + onReady(); + }).catch(function (error) { + onError({ + name: error.name, + message: error.message + }); + }); + }).catch(function (error) { + onError({ + message: error.message + }); + }); + + return domElement +} + +////////////////////////////////////////////////////////////////////////////// +// Handle Mobile Torch +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.hasMobileTorch = function () { + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) return false + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + + // if videoTrack.getCapabilities() doesnt exist, return false now + if (videoTrack.getCapabilities === undefined) return false + + var capabilities = videoTrack.getCapabilities() + + return capabilities.torch ? true : false +} + +/** + * toggle the flash/torch of the mobile fun if applicable. + * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/ + */ +ARjs.Source.prototype.toggleMobileTorch = function () { + // sanity check + console.assert(this.hasMobileTorch() === true) + + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) { + alert('enabling mobile torch is available only on webcam') + return + } + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + var capabilities = videoTrack.getCapabilities() + + if (!capabilities.torch) { + alert('no mobile torch is available on your camera') + return + } + + this._currentTorchStatus = this._currentTorchStatus === false ? true : false + videoTrack.applyConstraints({ + advanced: [{ + torch: this._currentTorchStatus + }] + }).catch(function (error) { + console.log(error) + }); +} + +ARjs.Source.prototype.domElementWidth = function () { + return parseInt(this.domElement.style.width) +} +ARjs.Source.prototype.domElementHeight = function () { + return parseInt(this.domElement.style.height) +} + +//////////////////////////////////////////////////////////////////////////////// +// handle resize +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResizeElement = function () { + var _this = this + var screenWidth = window.innerWidth + var screenHeight = window.innerHeight + + // sanity check + console.assert(arguments.length === 0) + + // compute sourceWidth, sourceHeight + if (this.domElement.nodeName === "IMG") { + var sourceWidth = this.domElement.naturalWidth + var sourceHeight = this.domElement.naturalHeight + } else if (this.domElement.nodeName === "VIDEO") { + var sourceWidth = this.domElement.videoWidth + var sourceHeight = this.domElement.videoHeight + } else { + console.assert(false) + } + + // compute sourceAspect + var sourceAspect = sourceWidth / sourceHeight + // compute screenAspect + var screenAspect = screenWidth / screenHeight + + // if screenAspect < sourceAspect, then change the width, else change the height + if (screenAspect < sourceAspect) { + // compute newWidth and set .width/.marginLeft + var newWidth = sourceAspect * screenHeight + this.domElement.style.width = newWidth + 'px' + this.domElement.style.marginLeft = -(newWidth - screenWidth) / 2 + 'px' + + // init style.height/.marginTop to normal value + this.domElement.style.height = screenHeight + 'px' + this.domElement.style.marginTop = '0px' + } else { + // compute newHeight and set .height/.marginTop + var newHeight = 1 / (sourceAspect / screenWidth) + this.domElement.style.height = newHeight + 'px' + this.domElement.style.marginTop = -(newHeight - screenHeight) / 2 + 'px' + + // init style.width/.marginLeft to normal value + this.domElement.style.width = screenWidth + 'px' + this.domElement.style.marginLeft = '0px' + } +} +/* +ARjs.Source.prototype.copyElementSizeTo = function(otherElement){ + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop +} +*/ + +ARjs.Source.prototype.copyElementSizeTo = function (otherElement) { + + if (window.innerWidth > window.innerHeight) { + //landscape + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop + } + else { + //portrait + otherElement.style.height = this.domElement.style.height + otherElement.style.width = (parseInt(otherElement.style.height) * 4 / 3) + "px"; + otherElement.style.marginLeft = ((window.innerWidth - parseInt(otherElement.style.width)) / 2) + "px"; + otherElement.style.marginTop = 0; + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.copySizeTo = function () { + console.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo') + this.copyElementSizeTo.apply(this, arguments) +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResize = function (arToolkitContext, renderer, camera) { + if (arguments.length !== 3) { + console.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement') + return this.onResizeElement.apply(this, arguments) + } + + var trackingBackend = arToolkitContext.parameters.trackingBackend + + + // RESIZE DOMELEMENT + if (trackingBackend === 'artoolkit') { + + this.onResizeElement() + + var isAframe = renderer.domElement.dataset.aframeCanvas ? true : false + if (isAframe === false) { + this.copyElementSizeTo(renderer.domElement) + } else { + + } + + if (arToolkitContext.arController !== null) { + this.copyElementSizeTo(arToolkitContext.arController.canvas) + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) + + + // UPDATE CAMERA + if (trackingBackend === 'artoolkit') { + if (arToolkitContext.arController !== null) { + camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()); + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) +} +var THREEx = THREEx || {} + +THREEx.ArVideoInWebgl = function(videoTexture){ + var _this = this + + ////////////////////////////////////////////////////////////////////////////// + // plane always in front of the camera, exactly as big as the viewport + ////////////////////////////////////////////////////////////////////////////// + var geometry = new THREE.PlaneGeometry(2, 2); + var material = new THREE.MeshBasicMaterial({ + // map : new THREE.TextureLoader().load('images/water.jpg'), + map : videoTexture, + // side: THREE.DoubleSide, + // opacity: 0.5, + // color: 'pink', + // transparent: true, + }); + var seethruPlane = new THREE.Mesh(geometry, material); + this.object3d = seethruPlane + // scene.add(seethruPlane); + + // arToolkitSource.domElement.style.visibility = 'hidden' + + // TODO extract the fov from the projectionMatrix + // camera.fov = 43.1 + this.update = function(camera){ + camera.updateMatrixWorld(true) + + // get seethruPlane position + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + seethruPlane.position.copy(position) + camera.localToWorld(seethruPlane.position) + + // get seethruPlane quaternion + camera.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + seethruPlane.quaternion.copy( camera.quaternion ) + + // extract the fov from the projectionMatrix + var fov = THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2; + // console.log('fov', fov) + + var elementWidth = parseFloat( arToolkitSource.domElement.style.width.replace(/px$/,''), 10 ) + var elementHeight = parseFloat( arToolkitSource.domElement.style.height.replace(/px$/,''), 10 ) + + var aspect = elementWidth / elementHeight + + // camera.fov = fov + // if( vrDisplay.isPresenting ){ + // fov *= 2 + // aspect *= 2 + // } + + // get seethruPlane height relative to fov + seethruPlane.scale.y = Math.tan(THREE.Math.DEG2RAD * fov/2)*position.length() + // get seethruPlane aspect + seethruPlane.scale.x = seethruPlane.scale.y * aspect + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // var video = arToolkitSource.domElement; + // + // window.addEventListener('resize', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // video.addEventListener('canplaythrough', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // function updateSeeThruAspectUv(plane){ + // + // // if video isnt yet ready to play + // if( video.videoWidth === 0 || video.videoHeight === 0 ) return + // + // var faceVertexUvs = plane.geometry.faceVertexUvs[0] + // var screenAspect = window.innerWidth / window.innerHeight + // var videoAspect = video.videoWidth / video.videoHeight + // + // plane.geometry.uvsNeedUpdate = true + // if( screenAspect >= videoAspect ){ + // var actualHeight = videoAspect / screenAspect; + // // faceVertexUvs y 0 + // faceVertexUvs[0][1].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][0].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][1].y = 0.5 - actualHeight/2 + // // faceVertexUvs y 1 + // faceVertexUvs[0][0].y = 0.5 + actualHeight/2 + // faceVertexUvs[0][2].y = 0.5 + actualHeight/2 + // faceVertexUvs[1][2].y = 0.5 + actualHeight/2 + // }else{ + // var actualWidth = screenAspect / videoAspect; + // // faceVertexUvs x 0 + // faceVertexUvs[0][0].x = 0.5 - actualWidth/2 + // faceVertexUvs[0][1].x = 0.5 - actualWidth/2 + // faceVertexUvs[1][0].x = 0.5 - actualWidth/2 + // + // // faceVertexUvs x 1 + // faceVertexUvs[0][2].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][1].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][2].x = 0.5 + actualWidth/2 + // } + // } + +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.HitTestingPlane = function(sourceElement){ + this._sourceElement = sourceElement + + // create _pickingScene + this._pickingScene = new THREE.Scene + + // create _pickingPlane + var geometry = new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2) + // var geometry = new THREE.PlaneGeometry(20,20).rotateX(-Math.PI/2) + var material = new THREE.MeshBasicMaterial({ + // opacity: 0.5, + // transparent: true, + wireframe: true + }) + // material.visible = false + this._pickingPlane = new THREE.Mesh(geometry, material) + this._pickingScene.add(this._pickingPlane) + + // Create pickingCamera + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + // TODO hardcoded fov - couch + this._pickingCamera = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 30); +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.update = function(camera, pickingRoot, changeMatrixMode){ + + this.onResize() + + + if( changeMatrixMode === 'modelViewMatrix' ){ + // set pickingPlane position + var pickingPlane = this._pickingPlane + pickingRoot.parent.updateMatrixWorld() + pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld) + // set position/quaternion/scale from pickingPlane.matrix + pickingPlane.matrix.decompose(pickingPlane.position, pickingPlane.quaternion, pickingPlane.scale) + }else if( changeMatrixMode === 'cameraTransformMatrix' ){ + // set pickingPlane position + var pickingCamera = this._pickingCamera + camera.updateMatrixWorld() + pickingCamera.matrix.copy(camera.matrixWorld) + // set position/quaternion/scale from pickingCamera.matrix + pickingCamera.matrix.decompose(pickingCamera.position, pickingCamera.quaternion, pickingCamera.scale) + }else console.assert(false) + + +// var position = this._pickingPlane.position +// console.log('pickingPlane position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) +// var position = this._pickingCamera.position +// console.log('his._pickingCamera position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) + +} + +////////////////////////////////////////////////////////////////////////////// +// resize camera +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.onResize = function(){ + var sourceElement = this._sourceElement + var pickingCamera = this._pickingCamera + +// FIXME why using css here ??? not even computed style +// should get the size of the elment directly independantly + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + pickingCamera.aspect = fullWidth / fullHeight + + pickingCamera.updateProjectionMatrix() +} + +////////////////////////////////////////////////////////////////////////////// +// Perform test +////////////////////////////////////////////////////////////////////////////// +THREEx.HitTestingPlane.prototype.test = function(mouseX, mouseY){ + // convert mouseX, mouseY to [-1, +1] + mouseX = (mouseX-0.5)*2 + mouseY =-(mouseY-0.5)*2 + + this._pickingScene.updateMatrixWorld(true) + + // compute intersections between mouseVector3 and pickingPlane + var raycaster = new THREE.Raycaster(); + var mouseVector3 = new THREE.Vector3(mouseX, mouseY, 1); + raycaster.setFromCamera( mouseVector3, this._pickingCamera ) + var intersects = raycaster.intersectObjects( [this._pickingPlane] ) + + if( intersects.length === 0 ) return null + + // set new demoRoot position + var position = this._pickingPlane.worldToLocal( intersects[0].point.clone() ) + // TODO here do a look at the camera ? + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3(1,1,1)//.multiplyScalar(1) + + return { + position : position, + quaternion : quaternion, + scale : scale + } +} + +////////////////////////////////////////////////////////////////////////////// +// render the pickingPlane for debug +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.renderDebug = function(renderer){ + // render sceneOrtho + renderer.render( this._pickingScene, this._pickingCamera ) +} +// @namespace +var ARjs = ARjs || {} + +// TODO this is a controls... should i give the object3d here ? +// not according to 'no three.js dependancy' + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.Anchor = function(arSession, markerParameters){ + var _this = this + var arContext = arSession.arContext + var scene = arSession.parameters.scene + var camera = arSession.parameters.camera + + this.arSession = arSession + this.parameters = markerParameters + + // log to debug + console.log('ARjs.Anchor -', 'changeMatrixMode:', this.parameters.changeMatrixMode, '/ markersAreaEnabled:', markerParameters.markersAreaEnabled) + + var markerRoot = new THREE.Group + scene.add(markerRoot) + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var controlledObject = markerRoot + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var controlledObject = camera + }else console.assert(false) + + if( markerParameters.markersAreaEnabled === false ){ + var markerControls = new THREEx.ArMarkerControls(arContext, controlledObject, markerParameters) + this.controls = markerControls + }else{ + // sanity check - MUST be a trackingBackend with markers + console.assert( arContext.parameters.trackingBackend === 'artoolkit' ) + + // honor markers-page-resolution for https://webxr.io/augmented-website + if( location.hash.substring(1).startsWith('markers-page-resolution=') === true ){ + // get resolutionW/resolutionH from url + var markerPageResolution = location.hash.substring(1) + var matches = markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/) + console.assert(matches.length === 3) + var resolutionW = parseInt(matches[1]) + var resolutionH = parseInt(matches[2]) + var arContext = arSession.arContext + // generate and store the ARjsMultiMarkerFile + ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend, resolutionW, resolutionH) + } + + // if there is no ARjsMultiMarkerFile, build a default one + if( localStorage.getItem('ARjsMultiMarkerFile') === null ){ + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend) + } + + // get multiMarkerFile from localStorage + console.assert( localStorage.getItem('ARjsMultiMarkerFile') !== null ) + var multiMarkerFile = localStorage.getItem('ARjsMultiMarkerFile') + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var parent3D = scene + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var parent3D = camera + }else console.assert(false) + + // build a multiMarkerControls + var multiMarkerControls = ARjs.MarkersAreaControls.fromJSON(arContext, parent3D, controlledObject, multiMarkerFile) + this.controls = multiMarkerControls + + // honor markerParameters.changeMatrixMode + multiMarkerControls.parameters.changeMatrixMode = markerParameters.changeMatrixMode + +// TODO put subMarkerControls visibility into an external file. with 2 handling for three.js and babylon.js + // create ArMarkerHelper - useful to debug - super three.js specific + var markerHelpers = [] + multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){ + // add an helper to visuable each sub-marker + var markerHelper = new THREEx.ArMarkerHelper(subMarkerControls) + markerHelper.object3d.visible = false + // subMarkerControls.object3d.add( markerHelper.object3d ) + subMarkerControls.object3d.add( markerHelper.object3d ) + // add it to markerHelpers + markerHelpers.push(markerHelper) + }) + // define API specific to markersArea + this.markersArea = {} + this.markersArea.setSubMarkersVisibility = function(visible){ + markerHelpers.forEach(function(markerHelper){ + markerHelper.object3d.visible = visible + }) + } + } + + this.object3d = new THREE.Group() + + ////////////////////////////////////////////////////////////////////////////// + // THREEx.ArSmoothedControls + ////////////////////////////////////////////////////////////////////////////// + + var shouldBeSmoothed = true + + if( shouldBeSmoothed === true ){ + // build a smoothedControls + var smoothedRoot = new THREE.Group() + scene.add(smoothedRoot) + var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot) + smoothedRoot.add(this.object3d) + }else{ + markerRoot.add(this.object3d) + } + + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + this.update = function(){ + // update _this.object3d.visible + _this.object3d.visible = _this.object3d.parent.visible + + // console.log('controlledObject.visible', _this.object3d.parent.visible) + if( smoothedControls !== undefined ){ + // update smoothedControls parameters depending on how many markers are visible in multiMarkerControls + if( multiMarkerControls !== undefined ){ + multiMarkerControls.updateSmoothedControls(smoothedControls) + } + + // update smoothedControls + smoothedControls.update(markerRoot) + } + } +} +// @namespace +var ARjs = ARjs || {} + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.SessionDebugUI = function (arSession) { + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.left = '5px' + this.domElement.style.bottom = '10px' + this.domElement.style.textAlign = 'right' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.innerHTML = 'trackingBackend : ' + trackingBackend + this.domElement.appendChild(domElement) +} + +/** + * Url of augmented-website service - if === '' then dont include augmented-website link + * @type {String} + */ +ARjs.SessionDebugUI.AugmentedWebsiteURL = 'https://webxr.io/augmented-website' + +////////////////////////////////////////////////////////////////////////////// +// ARjs.AnchorDebugUI +////////////////////////////////////////////////////////////////////////////// + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.AnchorDebugUI = function (arAnchor) { + var arSession = arAnchor.arSession + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'inline-block' + this.domElement.style.padding = '0.5em' + this.domElement.style.margin = '0.5em' + this.domElement.style.textAlign = 'left' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.style.padding = '0.5em' + domElement.style.color = 'rgba(0,0,0,0.9)' + domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + domElement.style.position = 'fixed' + domElement.style.left = '5px' + domElement.style.bottom = '40px' + + this.domElement.appendChild(domElement) + domElement.innerHTML = 'markersAreaEnabled :' + arAnchor.parameters.markersAreaEnabled + + ////////////////////////////////////////////////////////////////////////////// + // toggle-marker-helper + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.textAlign = 'left' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonToggleMarkerHelpers' + domElement.innerHTML = 'toggle-marker-helper' + domElement.href = 'javascript:void(0)' + + var subMarkerHelpersVisible = false + domElement.addEventListener('click', function () { + subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true + arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Learn-new-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaLearner' + domElement.innerHTML = 'Learn-new-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + if (ARjs.AnchorDebugUI.MarkersAreaLearnerURL !== null) { + var learnerURL = ARjs.AnchorDebugUI.MarkersAreaLearnerURL + } else { + var learnerURL = ARjs.Context.baseURL + 'examples/multi-markers/examples/learner.html' + } + ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Reset-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaReset' + domElement.innerHTML = 'Reset-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend) + location.reload() + }) + } +} + +/** + * url for the markers-area learner. if not set, take the default one + * @type {String} + */ +ARjs.AnchorDebugUI.MarkersAreaLearnerURL = null +// @namespace +var ARjs = ARjs || {} + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.HitTesting = function (arSession) { + var _this = this + var arContext = arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + + this.enabled = true + this._arSession = arSession + this._hitTestingPlane = null + _this._hitTestingPlane = new THREEx.HitTestingPlane(arSession.arSource.domElement) +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// +/** + * update + * + * @param {THREE.Camera} camera - the camera to use + * @param {THREE.Object3D} object3d - + */ +ARjs.HitTesting.prototype.update = function (camera, pickingRoot, changeMatrixMode) { + // if it isnt enabled, do nothing + if (this.enabled === false) return + + + if (this._hitTestingPlane !== null) { + this._hitTestingPlane.update(camera, pickingRoot, changeMatrixMode) + } else console.assert(false) +} + +////////////////////////////////////////////////////////////////////////////// +// actual hit testing +////////////////////////////////////////////////////////////////////////////// + +/** + * Test the real world for intersections directly from a DomEvent + * + * @param {Number} mouseX - position X of the hit [-1, +1] + * @param {Number} mouseY - position Y of the hit [-1, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.testDomEvent = function (domEvent) { + var trackingBackend = this._arSession.arContext.parameters.trackingBackend + var arSource = this._arSession.arSource + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + var mouseX = domEvent.clientX / arSource.domElementWidth() + var mouseY = domEvent.clientY / arSource.domElementHeight() + + return this.test(mouseX, mouseY) +} + +/** + * Test the real world for intersections. + * + * @param {Number} mouseX - position X of the hit [0, +1] + * @param {Number} mouseY - position Y of the hit [0, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.test = function (mouseX, mouseY) { + var arContext = this._arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + var hitTestResults = [] + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + + var result = this._hitTestingPlane.test(mouseX, mouseY) + + // if no result is found, return now + if (result === null) return hitTestResults + + // build a ARjs.HitTesting.Result + var hitTestResult = new ARjs.HitTesting.Result(result.position, result.quaternion, result.scale) + hitTestResults.push(hitTestResult) + + return hitTestResults +} + +////////////////////////////////////////////////////////////////////////////// +// ARjs.HitTesting.Result +////////////////////////////////////////////////////////////////////////////// +/** + * Contains the result of ARjs.HitTesting.test() + * + * @param {THREE.Vector3} position - position to use + * @param {THREE.Quaternion} quaternion - quaternion to use + * @param {THREE.Vector3} scale - scale + */ +ARjs.HitTesting.Result = function (position, quaternion, scale) { + this.position = position + this.quaternion = quaternion + this.scale = scale +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.apply = function (object3d) { + object3d.position.copy(this.position) + object3d.quaternion.copy(this.quaternion) + object3d.scale.copy(this.scale) + + object3d.updateMatrix() +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyPosition = function (object3d) { + object3d.position.copy(this.position) + + object3d.updateMatrix() + + return this +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyQuaternion = function (object3d) { + object3d.quaternion.copy(this.quaternion) + + object3d.updateMatrix() + + return this +} +var ARjs = ARjs || {} + +/** + * define a ARjs.Session + * + * @param {Object} parameters - parameters for this session + */ +ARjs.Session = function(parameters){ + var _this = this + // handle default parameters + this.parameters = { + renderer: null, + camera: null, + scene: null, + sourceParameters: {}, + contextParameters: {}, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + // sanity check + console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer) + console.assert(this.parameters.camera instanceof THREE.Camera) + console.assert(this.parameters.scene instanceof THREE.Scene) + + + // backward emulation + Object.defineProperty(this, 'renderer', {get: function(){ + console.warn('use .parameters.renderer renderer') + return this.parameters.renderer; + }}); + Object.defineProperty(this, 'camera', {get: function(){ + console.warn('use .parameters.camera instead') + return this.parameters.camera; + }}); + Object.defineProperty(this, 'scene', {get: function(){ + console.warn('use .parameters.scene instead') + return this.parameters.scene; + }}); + + + // log the version + console.log('AR.js', ARjs.Context.REVISION, '- trackingBackend:', parameters.contextParameters.trackingBackend) + + ////////////////////////////////////////////////////////////////////////////// + // init arSource + ////////////////////////////////////////////////////////////////////////////// + var arSource = _this.arSource = new ARjs.Source(parameters.sourceParameters) + + arSource.init(function onReady(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + // handle resize + window.addEventListener('resize', function(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // init arContext + ////////////////////////////////////////////////////////////////////////////// + + // create atToolkitContext + var arContext = _this.arContext = new ARjs.Context(parameters.contextParameters) + + // initialize it + _this.arContext.init() + + arContext.addEventListener('initialized', function(event){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // update function + ////////////////////////////////////////////////////////////////////////////// + // update artoolkit on every frame + this.update = function(){ + if( arSource.ready === false ) return + + arContext.update( arSource.domElement ) + } +} + +ARjs.Session.prototype.onResize = function () { + this.arSource.onResize(this.arContext, this.parameters.renderer, this.parameters.camera) +}; +var ARjs = ARjs || {} +ARjs.Utils = {} + +/** + * Create a default rendering camera for this trackingBackend. They may be modified later. to fit physical camera parameters + * + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Utils.createDefaultCamera = function (trackingMethod) { + var trackingBackend = this.parseTrackingMethod(trackingMethod).trackingBackend + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false, 'unknown trackingBackend: ' + trackingBackend) + + return camera +} + +/** + * parse tracking method + * + * @param {String} trackingMethod - the tracking method to parse + * @return {Object} - various field of the tracking method + */ +ARjs.Utils.parseTrackingMethod = function (trackingMethod) { + + if (trackingMethod === 'best') { + trackingMethod = 'area-artoolkit'; + } + + if (trackingMethod.startsWith('area-')) { + return { + trackingBackend: trackingMethod.replace('area-', ''), + markersAreaEnabled: true, + } + } else { + return { + trackingBackend: trackingMethod, + markersAreaEnabled: false, + } + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaControls = THREEx.ArMultiMarkerControls = function(arToolkitContext, object3d, parameters){ + var _this = this + THREEx.ArBaseControls.call(this, object3d) + + if( arguments.length > 3 ) console.assert('wrong api for', THREEx.ArMultiMarkerControls) + + // have a parameters in argument + this.parameters = { + // list of controls for each subMarker + subMarkersControls: parameters.subMarkersControls, + // list of pose for each subMarker relative to the origin + subMarkerPoses: parameters.subMarkerPoses, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : parameters.changeMatrixMode !== undefined ? parameters.changeMatrixMode : 'modelViewMatrix', + } + + this.object3d.visible = false + // honor obsolete stuff - add a warning to use + this.subMarkersControls = this.parameters.subMarkersControls + this.subMarkerPoses = this.parameters.subMarkerPoses + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + +ARjs.MarkersAreaControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkersAreaControls.prototype.constructor = ARjs.MarkersAreaControls; + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaControls.prototype._onSourceProcessed = function(){ + var _this = this + var stats = { + count: 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + + var firstQuaternion = _this.parameters.subMarkersControls[0].object3d.quaternion + + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + + var markerObject3d = markerControls.object3d + // if this marker is not visible, ignore it + if( markerObject3d.visible === false ) return + + // transformation matrix of this.object3d according to this sub-markers + var matrix = markerObject3d.matrix.clone() + var markerPose = _this.parameters.subMarkerPoses[markerIndex] + matrix.multiply(new THREE.Matrix4().getInverse(markerPose)) + + // decompose the matrix into .position, .quaternion, .scale + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion() + var scale = new THREE.Vector3 + matrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + // honor _this.object3d.visible + if( stats.count > 0 ){ + _this.object3d.visible = true + }else{ + _this.object3d.visible = false + } + + // if at least one sub-marker has been detected, make the average of all detected markers + if( stats.count > 0 ){ + // compute modelViewMatrix + var modelViewMatrix = new THREE.Matrix4() + modelViewMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + // change _this.object3d.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + _this.object3d.matrix.copy(modelViewMatrix) + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + _this.object3d.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + _this.object3d.matrix.decompose(_this.object3d.position, _this.object3d.quaternion, _this.object3d.scale) + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + */ +ARjs.MarkersAreaControls.averageQuaternion = function(quaternionSum, newQuaternion, firstQuaternion, count, quaternionAverage){ + quaternionAverage = quaternionAverage || new THREE.Quaternion() + // sanity check + console.assert(firstQuaternion instanceof THREE.Quaternion === true) + + // from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + if( newQuaternion.dot(firstQuaternion) > 0 ){ + newQuaternion = new THREE.Quaternion(-newQuaternion.x, -newQuaternion.y, -newQuaternion.z, -newQuaternion.w) + } + + quaternionSum.x += newQuaternion.x + quaternionSum.y += newQuaternion.y + quaternionSum.z += newQuaternion.z + quaternionSum.w += newQuaternion.w + + quaternionAverage.x = quaternionSum.x/count + quaternionAverage.y = quaternionSum.y/count + quaternionAverage.z = quaternionSum.z/count + quaternionAverage.w = quaternionSum.w/count + + quaternionAverage.normalize() + + return quaternionAverage +} + + +ARjs.MarkersAreaControls.averageVector3 = function(vector3Sum, vector3, count, vector3Average){ + vector3Average = vector3Average || new THREE.Vector3() + + vector3Sum.x += vector3.x + vector3Sum.y += vector3.y + vector3Sum.z += vector3.z + + vector3Average.x = vector3Sum.x / count + vector3Average.y = vector3Sum.y / count + vector3Average.z = vector3Sum.z / count + + return vector3Average +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * compute the center of this multimarker file + */ +ARjs.MarkersAreaControls.computeCenter = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var stats = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + var firstQuaternion = new THREE.Quaternion() // FIXME ??? + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + return averageMatrix +} + +ARjs.MarkersAreaControls.computeBoundingBox = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var boundingBox = new THREE.Box3() + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + boundingBox.expandByPoint(position) + }) + + return boundingBox +} +////////////////////////////////////////////////////////////////////////////// +// updateSmoothedControls +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.prototype.updateSmoothedControls = function(smoothedControls, lerpsValues){ + // handle default values + if( lerpsValues === undefined ){ + // FIXME this parameter format is uselessly cryptic + // lerpValues = [ + // {lerpPosition: 0.5, lerpQuaternion: 0.2, lerpQuaternion: 0.7} + // ] + lerpsValues = [ + [0.3+.1, 0.1, 0.3], + [0.4+.1, 0.1, 0.4], + [0.4+.1, 0.2, 0.5], + [0.5+.1, 0.2, 0.7], + [0.5+.1, 0.2, 0.7], + ] + } + // count how many subMarkersControls are visible + var nVisible = 0 + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + var markerObject3d = markerControls.object3d + if( markerObject3d.visible === true ) nVisible ++ + }) + + // find the good lerpValues + if( lerpsValues[nVisible-1] !== undefined ){ + var lerpValues = lerpsValues[nVisible-1] + }else{ + var lerpValues = lerpsValues[lerpsValues.length-1] + } + + // modify lerpValues in smoothedControls + smoothedControls.parameters.lerpPosition = lerpValues[0] + smoothedControls.parameters.lerpQuaternion = lerpValues[1] + smoothedControls.parameters.lerpScale = lerpValues[2] +} + + +////////////////////////////////////////////////////////////////////////////// +// Create THREEx.ArMultiMarkerControls from JSON +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.fromJSON = function(arToolkitContext, parent3D, markerRoot, jsonData, parameters){ + var multiMarkerFile = JSON.parse(jsonData) + // declare variables + var subMarkersControls = [] + var subMarkerPoses = [] + // handle default arguments + parameters = parameters || {} + + // prepare the parameters + multiMarkerFile.subMarkersControls.forEach(function(item){ + // create a markerRoot + var markerRoot = new THREE.Object3D() + parent3D.add(markerRoot) + + // create markerControls for our markerRoot + var subMarkerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, item.parameters) + +// if( true ){ + // store it in the parameters + subMarkersControls.push(subMarkerControls) + subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// }else{ +// // build a smoothedControls +// var smoothedRoot = new THREE.Group() +// parent3D.add(smoothedRoot) +// var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot, { +// lerpPosition : 0.1, +// lerpQuaternion : 0.1, +// lerpScale : 0.1, +// minVisibleDelay: 0, +// minUnvisibleDelay: 0, +// }) +// onRenderFcts.push(function(delta){ +// smoothedControls.update(markerRoot) // TODO this is a global +// }) +// +// +// // store it in the parameters +// subMarkersControls.push(smoothedControls) +// subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// } + }) + + parameters.subMarkersControls = subMarkersControls + parameters.subMarkerPoses = subMarkerPoses + // create a new THREEx.ArMultiMarkerControls + var multiMarkerControls = new THREEx.ArMultiMarkerControls(arToolkitContext, markerRoot, parameters) + + // return it + return multiMarkerControls +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaLearning = THREEx.ArMultiMakersLearning = function(arToolkitContext, subMarkersControls){ + var _this = this + this._arToolkitContext = arToolkitContext + + // Init variables + this.subMarkersControls = subMarkersControls + this.enabled = true + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + + +////////////////////////////////////////////////////////////////////////////// +// statistic collection +////////////////////////////////////////////////////////////////////////////// + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaLearning.prototype._onSourceProcessed = function(){ + var originQuaternion = this.subMarkersControls[0].object3d.quaternion + // here collect the statistic on relative positioning + + // honor this.enabled + if( this.enabled === false ) return + + // keep only the visible markers + var visibleMarkerControls = this.subMarkersControls.filter(function(markerControls){ + return markerControls.object3d.visible === true + }) + + var count = Object.keys(visibleMarkerControls).length + + var positionDelta = new THREE.Vector3() + var quaternionDelta = new THREE.Quaternion() + var scaleDelta = new THREE.Vector3() + var tmpMatrix = new THREE.Matrix4() + + // go thru all the visibleMarkerControls + for(var i = 0; i < count; i++){ + var markerControls1 = visibleMarkerControls[i] + for(var j = 0; j < count; j++){ + var markerControls2 = visibleMarkerControls[j] + + // if markerControls1 is markerControls2, then skip it + if( i === j ) continue + + + ////////////////////////////////////////////////////////////////////////////// + // create data in markerControls1.object3d.userData if needed + ////////////////////////////////////////////////////////////////////////////// + // create seenCouples for markerControls1 if needed + if( markerControls1.object3d.userData.seenCouples === undefined ){ + markerControls1.object3d.userData.seenCouples = {} + } + var seenCouples = markerControls1.object3d.userData.seenCouples + // create the multiMarkerPosition average if needed` + if( seenCouples[markerControls2.id] === undefined ){ + // console.log('create seenCouples between', markerControls1.id, 'and', markerControls2.id) + seenCouples[markerControls2.id] = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + } + + + ////////////////////////////////////////////////////////////////////////////// + // Compute markerControls2 position relative to markerControls1 + ////////////////////////////////////////////////////////////////////////////// + + // compute markerControls2 position/quaternion/scale in relation with markerControls1 + tmpMatrix.getInverse(markerControls1.object3d.matrix) + tmpMatrix.multiply(markerControls2.object3d.matrix) + tmpMatrix.decompose(positionDelta, quaternionDelta, scaleDelta) + + ////////////////////////////////////////////////////////////////////////////// + // update statistics + ////////////////////////////////////////////////////////////////////////////// + var stats = seenCouples[markerControls2.id] + // update the count + stats.count++ + + // update the average of position/rotation/scale + THREEx.ArMultiMarkerControls.averageVector3(stats.position.sum, positionDelta, stats.count, stats.position.average) + THREEx.ArMultiMarkerControls.averageQuaternion(stats.quaternion.sum, quaternionDelta, originQuaternion, stats.count, stats.quaternion.average) + THREEx.ArMultiMarkerControls.averageVector3(stats.scale.sum, scaleDelta, stats.count, stats.scale.average) + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Compute markers transformation matrix from current stats +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.computeResult = function(){ + var _this = this + var originSubControls = this.subMarkersControls[0] + + this.deleteResult() + + // special case of originSubControls averageMatrix + originSubControls.object3d.userData.result = { + averageMatrix : new THREE.Matrix4(), + confidenceFactor: 1, + } + // TODO here check if the originSubControls has been seen at least once!! + + + /** + * ALGO in pseudo code + * + * - Set confidenceFactor of origin sub markers as 1 + * + * Start Looping + * - For a given sub marker, skip it if it already has a result. + * - if no result, check all seen couple and find n ones which has a progress of 1 or more. + * - So the other seen sub markers, got a valid transformation matrix. + * - So take local averages position/orientation/scale, compose a transformation matrix. + * - aka transformation matrix from parent matrix * transf matrix pos/orientation/scale + * - Multiple it by the other seen marker matrix. + * - Loop on the array until one pass could not compute any new sub marker + */ + + do{ + var resultChanged = false + // loop over each subMarkerControls + this.subMarkersControls.forEach(function(subMarkerControls){ + + // if subMarkerControls already has a result, do nothing + var result = subMarkerControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === true ) return + + // console.log('compute subMarkerControls', subMarkerControls.name()) + var otherSubControlsID = _this._getLearnedCoupleStats(subMarkerControls) + if( otherSubControlsID === null ){ + // console.log('no learnedCoupleStats') + return + } + + var otherSubControls = _this._getSubMarkerControlsByID(otherSubControlsID) + + var seenCoupleStats = subMarkerControls.object3d.userData.seenCouples[otherSubControlsID] + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(seenCoupleStats.position.average, seenCoupleStats.quaternion.average, seenCoupleStats.scale.average) + + var otherAverageMatrix = otherSubControls.object3d.userData.result.averageMatrix + + var matrix = new THREE.Matrix4().getInverse(otherAverageMatrix).multiply(averageMatrix) + matrix = new THREE.Matrix4().getInverse(matrix) + + console.assert( subMarkerControls.object3d.userData.result === undefined ) + subMarkerControls.object3d.userData.result = { + averageMatrix: matrix, + confidenceFactor: 1 + } + + resultChanged = true + }) + // console.log('loop') + }while(resultChanged === true) + + // debugger + // console.log('json:', this.toJSON()) + // this.subMarkersControls.forEach(function(subMarkerControls){ + // var hasResult = subMarkerControls.object3d.userData.result !== undefined + // console.log('marker', subMarkerControls.name(), hasResult ? 'has' : 'has NO', 'result') + // }) +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * get a _this.subMarkersControls id based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats = function(subMarkerControls){ + + // if this subMarkerControls has never been seen with another subMarkerControls + if( subMarkerControls.object3d.userData.seenCouples === undefined ) return null + + var seenCouples = subMarkerControls.object3d.userData.seenCouples + var coupleControlsIDs = Object.keys(seenCouples).map(Number) + + for(var i = 0; i < coupleControlsIDs.length; i++){ + var otherSubControlsID = coupleControlsIDs[i] + // get otherSubControls + var otherSubControls = this._getSubMarkerControlsByID(otherSubControlsID) + + // if otherSubControls isnt learned, skip it + var result = otherSubControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === false ) continue + + // return this seenCouplesStats + return otherSubControlsID + } + + // if none is found, return null + return null +} + +/** + * get a _this.subMarkersControls based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID = function(controlsID){ + + for(var i = 0; i < this.subMarkersControls.length; i++){ + var subMarkerControls = this.subMarkersControls[i] + if( subMarkerControls.id === controlsID ){ + return subMarkerControls + } + } + + return null +} + ////////////////////////////////////////////////////////////////////////////// +// JSON file building +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.toJSON = function(){ + + // compute the average matrix before generating the file + this.computeResult() + + ////////////////////////////////////////////////////////////////////////////// + // actually build the json + ////////////////////////////////////////////////////////////////////////////// + var data = { + meta : { + createdBy : "Area Learning - AR.js "+THREEx.ArToolkitContext.REVISION, + createdAt : new Date().toJSON(), + + }, + trackingBackend: this._arToolkitContext.parameters.trackingBackend, + subMarkersControls : [], + } + + var originSubControls = this.subMarkersControls[0] + var originMatrixInverse = new THREE.Matrix4().getInverse(originSubControls.object3d.matrix) + this.subMarkersControls.forEach(function(subMarkerControls, index){ + + // if a subMarkerControls has no result, ignore it + if( subMarkerControls.object3d.userData.result === undefined ) return + + var poseMatrix = subMarkerControls.object3d.userData.result.averageMatrix + console.assert(poseMatrix instanceof THREE.Matrix4) + + + // build the info + var info = { + parameters : { + // to fill ... + }, + poseMatrix : poseMatrix.toArray(), + } + if( subMarkerControls.parameters.type === 'pattern' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.patternUrl = subMarkerControls.parameters.patternUrl + }else if( subMarkerControls.parameters.type === 'barcode' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.barcodeValue = subMarkerControls.parameters.barcodeValue + }else console.assert(false) + + data.subMarkersControls.push(info) + }) + + var strJSON = JSON.stringify(data, null, '\t'); + + + ////////////////////////////////////////////////////////////////////////////// + // round matrix elements to ease readability - for debug + ////////////////////////////////////////////////////////////////////////////// + var humanReadable = false + if( humanReadable === true ){ + var tmp = JSON.parse(strJSON) + tmp.subMarkersControls.forEach(function(markerControls){ + markerControls.poseMatrix = markerControls.poseMatrix.map(function(value){ + var roundingFactor = 100 + return Math.round(value*roundingFactor)/roundingFactor + }) + }) + strJSON = JSON.stringify(tmp, null, '\t'); + } + + return strJSON; +} + +////////////////////////////////////////////////////////////////////////////// +// utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.resetStats = function(){ + this.deleteResult() + + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.seenCouples + }) +} +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.deleteResult = function(){ + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.result + }) +} +var THREEx = THREEx || {} + +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaUtils = THREEx.ArMultiMarkerUtils = {} + +////////////////////////////////////////////////////////////////////////////// +// navigateToLearnerPage +////////////////////////////////////////////////////////////////////////////// + +/** + * Navigate to the multi-marker learner page + * + * @param {String} learnerBaseURL - the base url for the learner + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.navigateToLearnerPage = function(learnerBaseURL, trackingBackend){ + var learnerParameters = { + backURL : location.href, + trackingBackend: trackingBackend, + markersControlsParameters: ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters(trackingBackend), + } + location.href = learnerBaseURL + '?' + encodeURIComponent(JSON.stringify(learnerParameters)) +} + +////////////////////////////////////////////////////////////////////////////// +// DefaultMultiMarkerFile +////////////////////////////////////////////////////////////////////////////// + +/** + * Create and store a default multi-marker file + * + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile = function(trackingBackend){ + var file = ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile(trackingBackend) + // json.strinfy the value and store it in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(file)) +} + + + +/** + * Create a default multi-marker file + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object of the multi-marker file + */ +ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile = function(trackingBackend){ + console.assert(trackingBackend) + if( trackingBackend === undefined ) debugger + + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + // create the base file + var file = { + meta : { + createdBy : 'AR.js ' + ARjs.Context.REVISION + ' - Default Marker', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... being filled + ] + } + // add a subMarkersControls + file.subMarkersControls[0] = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(0,0, 0).toArray(), + } + if( trackingBackend === 'artoolkit' ){ + file.subMarkersControls[0].parameters.type = 'pattern' + file.subMarkersControls[0].parameters.patternUrl = absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + }else console.assert(false) + + // json.strinfy the value and store it in localStorage + return file +} + +////////////////////////////////////////////////////////////////////////////// +// createDefaultMarkersControlsParameters +////////////////////////////////////////////////////////////////////////////// + +/** + * Create a default controls parameters for the multi-marker learner + * + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object containing the controls parameters + */ +ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters = function(trackingBackend){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + + if( trackingBackend === 'artoolkit' ){ + // pattern hiro/kanji/a/b/c/f + var markersControlsParameters = [ + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt', + }, + ] + }else console.assert(false) + return markersControlsParameters +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +/** + * generate areaFile + */ +ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution = function (trackingBackend, resolutionW, resolutionH) { + // generate areaFile + var areaFile = this.buildMarkersAreaFileFromResolution(trackingBackend, resolutionW, resolutionH) + // store areaFile in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(areaFile)) +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaUtils.buildMarkersAreaFileFromResolution = function(trackingBackend, resolutionW, resolutionH){ + // create the base file + var file = { + meta : { + createdBy : 'AR.js - Augmented Website', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... + ] + } + + var whiteMargin = 0.1 + if( resolutionW > resolutionH ){ + var markerImageSize = 0.4 * resolutionH + }else if( resolutionW < resolutionH ){ + var markerImageSize = 0.4 * resolutionW + }else if( resolutionW === resolutionH ){ + // specific for twitter player - https://dev.twitter.com/cards/types/player + var markerImageSize = 0.33 * resolutionW + }else console.assert(false) + + // console.warn('using new markerImageSize computation') + var actualMarkerSize = markerImageSize * (1 - 2*whiteMargin) + + var deltaX = (resolutionW - markerImageSize)/2 / actualMarkerSize + var deltaZ = (resolutionH - markerImageSize)/2 / actualMarkerSize + + var subMarkerControls = buildSubMarkerControls('center', 0, 0) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topleft', -deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topright', +deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomleft', -deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomright', +deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + return file + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + function buildSubMarkerControls(layout, positionX, positionZ){ + console.log('buildSubMarkerControls', layout, positionX, positionZ) + // create subMarkersControls + var subMarkersControls = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(positionX,0, positionZ).toArray(), + } + // fill the parameters + if( trackingBackend === 'artoolkit' ){ + layout2MarkerParametersArtoolkit(subMarkersControls.parameters, layout) + }else console.assert(false) + // return subMarkersControls + return subMarkersControls + } + + function layout2MarkerParametersArtoolkit(parameters, layout){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + var layout2PatternUrl = { + 'center' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt'), + 'topleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt'), + 'topright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt'), + 'bottomleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt'), + 'bottomright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt'), + } + console.assert(layout2PatternUrl[layout] !== undefined ) + parameters.type = 'pattern' + parameters.patternUrl = layout2PatternUrl[layout] + return + function convertRelativeUrlToAbsolute(relativeUrl){ + var tmpLink = document.createElement('a'); + tmpLink.href = relativeUrl + return tmpLink.href + } + } +} diff --git a/demo/ar/three.js/build/ar.js b/demo/ar/three.js/build/ar.js new file mode 100644 index 0000000..e28d8cc --- /dev/null +++ b/demo/ar/three.js/build/ar.js @@ -0,0 +1,4971 @@ + +((function(){"use strict";var ARController=(function(width,height,camera){var id;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;camera=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.transform_mat=new Float32Array(16);this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d");this.videoWidth=w;this.videoHeight=h;if(typeof camera==="string"){var self=this;this.cameraParam=new ARCameraParam(camera,(function(){self._initialize()}),(function(err){console.error("ARController: Failed to load ARCameraParam",err)}))}else{this.cameraParam=camera;this._initialize()}});ARController.prototype.dispose=(function(){artoolkit.teardown(this.id);for(var t in this){this[t]=null}});ARController.prototype.process=(function(image){this.detectMarker(image);var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat}})}var multiMarkerCount=this.getMultiMarkerCount();for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}});ARController.prototype.dispatchEvent=(function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||268435456;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[(function($0,$1,$2,$3){{if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3}}),(function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){{var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]}}),(function($0,$1,$2,$3,$4){{if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4}})];function _emscripten_asm_const_33(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}function _emscripten_asm_const_4(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_5(code,a0,a1,a2,a3,a4){return ASM_CONSTS[code](a0,a1,a2,a3,a4)}STATIC_BASE=8;STATICTOP=STATIC_BASE+16496;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_ARToolKitJS_cpp()})},{func:(function(){__GLOBAL__sub_I_bind_cpp()})});allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,53,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,116,42,0,0,52,9,0,0,136,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,73,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,54,47,0,0,228,8,0,0,23,47,0,0,228,8,0,0,62,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,0,46,0,0,228,8,0,0,225,45,0,0,228,8,0,0,194,45,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,186,46,0,0,228,8,0,0,217,46,0,0,228,8,0,0,248,46,0,0,12,9,0,0,199,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,212,47,0,0,228,8,0,0,225,47,0,0,12,9,0,0,238,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,15,48,0,0,64,2,0,0,0,0,0,0,12,9,0,0,49,48,0,0,64,2,0,0,0,0,0,0,200,8,0,0,89,48,0,0,200,8,0,0,91,48,0,0,200,8,0,0,93,48,0,0,200,8,0,0,95,48,0,0,200,8,0,0,97,48,0,0,200,8,0,0,99,48,0,0,200,8,0,0,101,48,0,0,200,8,0,0,103,48,0,0,200,8,0,0,105,48,0,0,200,8,0,0,107,48,0,0,200,8,0,0,109,48,0,0,200,8,0,0,111,48,0,0,200,8,0,0,113,48,0,0,12,9,0,0,115,48,0,0,80,2,0,0,0,0,0,0,12,9,0,0,152,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,81,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,73,58,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,118,111,105,100,0,98,111,111,108,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,108,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+15945);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return(new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n"))(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,(function(message){this.name=errorName;this.message=message;var stack=(new Error(message)).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}}));errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=(function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}});return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach((function(type){typeDependencies[type]=dependentTypes}));function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;var _BDtoILow=true;function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(wt){return!!wt}),"toWireType":(function(destructors,o){return o?trueValue:falseValue}),"argPackAdvance":8,"readValueFromPointer":(function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])}),destructorFunction:null})}Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=(function(){return HEAPU16});shift=1}else if(charSize===4){getHeap=(function(){return HEAPU32});shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=(function(value){return value});if(minRange===0){var bitshift=32-8*size;fromWireType=(function(value){return value<>>bitshift})}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _llvm_ctlz_i32=true;function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",(function(){}));dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var argsList="";var argsListWired="";for(var i=0;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _cos=Math_cos;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _BItoD=true;function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _ceilf=Math_ceil;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function jd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function kd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function ld(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function md(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function nd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function od(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function pd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function qd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function rd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function sd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function td(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ud(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function vd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function wd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function xd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function yd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function ec(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function fc(){return i|0}function gc(a){a=a|0;i=a}function hc(a,b){a=a|0;b=b|0;i=a;j=b}function ic(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function jc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function kc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function lc(a){a=a|0;D=a}function mc(){return D|0}function nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function zc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ac(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Bc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Cc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Dc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ec(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Fc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){b[a>>1]=0;k=q}else{k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Gc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Hc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Ic(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0} +function Jc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Kc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Lc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Mc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[a>>1]=0;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Zc(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function _c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function $c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)th(a,b)}}else th(a,b);return}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;h=g+16|0;f=g+4|0;j=g;d=c[d>>2]|0;e=c[d>>2]|0;c[j>>2]=d;c[h>>2]=c[j>>2];vh(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d){if(a[f+8>>0]|0)Fg(d+264|0);Lh(d)}i=g;return e|0}function vh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;n=(m&l|0)==0;if(n)k=m&e;else k=(e>>>0)%(l>>>0)|0;g=(c[d>>2]|0)+(k<<2)|0;f=c[g>>2]|0;while(1){e=c[f>>2]|0;if((e|0)==(o|0)){j=f;break}else f=e}i=d+8|0;if((j|0)!=(i|0)){e=c[j+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0))g=o;else h=12}else h=12;do if((h|0)==12){e=c[o>>2]|0;if(e){e=c[e+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0)){g=o;break}}c[g>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(n)f=f&m;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(k|0)){c[(c[d>>2]|0)+(f<<2)>>2]=j;e=c[o>>2]|0}}c[j>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=i;a[b+8>>0]=1;return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(408)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,392)|0;h[e+248>>3]=.0001;h[e+256>>3]=1.0e3;d=e+264|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function xh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;yh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return}function yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)zh(a,b)}}else zh(a,b);return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function Ah(a){a=a|0;return Aj(c[a+4>>2]|0)|0}function Bh(a){a=a|0;Ka(624,10917);Ya(632,10922,1,1,0);Ga(640,10927,1,-128,127);Ga(656,10932,1,-128,127);Ga(648,10944,1,0,255);Ga(664,10958,2,-32768,32767);Ga(672,10964,2,0,65535);Ga(680,10979,4,-2147483648,2147483647);Ga(688,10983,4,0,-1);Ga(696,10996,4,-2147483648,2147483647);Ga(704,11001,4,0,-1);kb(712,11015,4);kb(720,11021,8);sb(360,11028);sb(392,11040);bb(416,4,11073);db(440,11086);Aa(448,0,11102);Dh(11132);Eh(11169);Fh(11208);Gh(11239);Hh(11279);Ih(11308);Aa(456,4,11346);Aa(464,5,11376);Dh(11415);Eh(11447);Fh(11480);Gh(11513);Hh(11547);Ih(11580);Aa(472,6,11614);Aa(480,7,11645);Aa(488,7,11677);return}function Ch(){Bh(0);return}function Dh(a){a=a|0;Aa(536,0,a|0);return}function Eh(a){a=a|0;Aa(528,1,a|0);return}function Fh(a){a=a|0;Aa(520,2,a|0);return}function Gh(a){a=a|0;Aa(512,3,a|0);return}function Hh(a){a=a|0;Aa(504,4,a|0);return}function Ih(a){a=a|0;Aa(496,5,a|0);return}function Jh(a){a=a|0;Ia(12478,12501,303,12589)}function Kh(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=Uj(b)|0;a:do if(!a){while(1){a=Ph()|0;if(!a)break;_b[a&0]();a=Uj(b)|0;if(a)break a}b=Wa(4)|0;c[b>>2]=2224;wb(b|0,544,1)}while(0);return a|0}function Lh(a){a=a|0;Vj(a);return}function Mh(a){a=a|0;return}function Nh(a){a=a|0;Lh(a);return}function Oh(a){a=a|0;return 12610}function Ph(){var a=0;a=c[559]|0;c[559]=a+0;return a|0}function Qh(a){a=a|0;return}function Rh(a){a=a|0;return}function Sh(a){a=a|0;return}function Th(a){a=a|0;return}function Uh(a){a=a|0;return}function Vh(a){a=a|0;Lh(a);return}function Wh(a){a=a|0;Lh(a);return}function Xh(a){a=a|0;Lh(a);return}function Yh(a){a=a|0;Lh(a);return}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)!=(b|0))if((b|0)!=0?(f=ei(b,576,592,0)|0,(f|0)!=0):0){b=g;e=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));c[g>>2]=f;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dc[c[(c[f>>2]|0)+28>>2]&3](f,g,c[d>>2]|0,1);if((c[g+24>>2]|0)==1){c[d>>2]=c[g+16>>2];b=1}else b=0}else b=0;else b=1;i=h;return b|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function ai(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);return}function bi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);else{a=c[a+8>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d,e)}return}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d+f|0,(g&2|0)!=0?e:2);return}function di(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((b|0)!=(c[d+8>>2]|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;ci(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{ci(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else $h(0,d,e,f);while(0);return}function ei(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;g=q+16|0;d=q+20|0;e=q+24|0;h=q+28|0;j=q+32|0;k=q+40|0;l=(p|0)==(f|0);m=g;n=m+36|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do if(l){c[q+48>>2]=1;bc[c[(c[f>>2]|0)+20>>2]&3](f,q,o,o,1,0);g=(c[e>>2]|0)==1?o:0}else{Rb[c[(c[p>>2]|0)+24>>2]&3](p,q,o,1,0);switch(c[q+36>>2]|0){case 0:{g=(c[k>>2]|0)==1&(c[h>>2]|0)==1&(c[j>>2]|0)==1?c[d>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((c[e>>2]|0)!=1?!((c[k>>2]|0)==0&(c[h>>2]|0)==1&(c[j>>2]|0)==1):0){g=0;break}g=c[g>>2]|0}while(0);i=r;return g|0}function fi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;f=d+16|0;b=c[f>>2]|0;if(!b){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((b|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}b=d+24|0;f=c[b>>2]|0;if((f|0)==2){c[b>>2]=g;f=g}if((f|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function gi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){q=c[b+12>>2]|0;j=b+16+(q<<3)|0;ii(b+16|0,d,e,f,g);h=b+24|0;if((q|0)<=1)break;i=c[b+8>>2]|0;if((i&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(i&1)){i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[k>>2]|0)==1)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+24|0;b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[k>>2]|0)==1?(c[i>>2]|0)==1:0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+54|0;while(1){if(a[i>>0]|0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4)break;i=c[b+12>>2]|0;j=b+16+(i<<3)|0;k=d+52|0;f=d+53|0;n=d+54|0;l=b+8|0;o=d+24|0;b:do if((i|0)>0){i=0;h=0;b=b+16|0;while(1){a[k>>0]=0;a[f>>0]=0;hi(b,d,e,e,1,g);if(a[n>>0]|0){q=20;break b}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[l>>2]&1)){h=1;q=20;break b}else{h=1;break}if((c[o>>2]|0)==1)break b;if(!(c[l>>2]&2))break b;else{i=1;h=1}}while(0);b=b+8|0;if(b>>>0>=j>>>0){q=20;break}}}else{i=0;h=0;q=20}while(0);do if((q|0)==20){if((!i?(c[p>>2]=e,e=d+40|0,c[e>>2]=(c[e>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[n>>0]=1;if(h)break}else q=24;if((q|0)==24?h:0)break;c[m>>2]=4;break a}while(0);c[m>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function hi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e+h|0,(i&2|0)!=0?f:2,g);return}function ii(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Rb[c[(c[a>>2]|0)+24>>2]&3](a,b,d+g|0,(h&2|0)!=0?e:2,f);return}function ji(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;Rb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4)break;h=d+52|0;a[h>>0]=0;k=d+53|0;a[k>>0]=0;b=c[b+8>>2]|0;bc[c[(c[b>>2]|0)+20>>2]&3](b,d,e,e,1,g);if(a[k>>0]|0){if(!(a[h>>0]|0)){h=1;j=13}}else{h=0;j=13}do if((j|0)==13){c[i>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else j=16;if((j|0)==16?h:0)break;c[f>>2]=4;break a}while(0);c[f>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function ki(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(i=d+28|0,(c[i>>2]|0)!=1):0)c[i>>2]=f}else if((b|0)==(c[d>>2]|0)){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function li(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==(c[d+8>>2]|0))fi(0,d,e,f,g);else{m=d+52|0;n=a[m>>0]|0;o=d+53|0;p=a[o>>0]|0;l=c[b+12>>2]|0;i=b+16+(l<<3)|0;a[m>>0]=0;a[o>>0]=0;hi(b+16|0,d,e,f,g,h);a:do if((l|0)>1){j=d+24|0;k=b+8|0;l=d+54|0;b=b+24|0;do{if(a[l>>0]|0)break a;if(!(a[m>>0]|0)){if((a[o>>0]|0)!=0?(c[k>>2]&1|0)==0:0)break a}else{if((c[j>>2]|0)==1)break a;if(!(c[k>>2]&2))break a}a[m>>0]=0;a[o>>0]=0;hi(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}while(0);a[m>>0]=n;a[o>>0]=p}return}function mi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);else{a=c[a+8>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e,f,g)}return}function ni(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);return}function oi(a){a=a|0;Ia(12625,12654,1164,12589)}function pi(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function qi(){var a=0;if(!(c[597]|0))a=2644;else a=c[(gb()|0)+60>>2]|0;return a|0}function ri(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[12742+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=12830;e=5;break}}if((e|0)==2)if(!c)b=12830;else{b=12830;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function si(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0.0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+512|0;H=L;switch(e|0){case 0:{K=24;J=-149;A=4;break}case 1:{K=53;J=-1074;A=4;break}case 2:{K=53;J=-1074;A=4;break}default:g=0.0}a:do if((A|0)==4){E=b+4|0;C=b+100|0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0}while((pi(e)|0)!=0);b:do switch(e|0){case 43:case 45:{h=1-(((e|0)==45&1)<<1)|0;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;I=h;break b}else{e=vi(b)|0;I=h;break b}}default:I=1}while(0);h=e;e=0;do{if((h|32|0)!=(a[14634+e>>0]|0))break;do if(e>>>0<7){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{A=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{A=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[16477+e>>0]|0))break d;do if(e>>>0<2){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==40)e=1;else{if(!(c[C>>2]|0)){g=s;break a}c[E>>2]=(c[E>>2]|0)+-1;g=s;break a}while(1){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0}else h=vi(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!k){c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{do if((h|0)==48){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|32|0)!=120){if(!(c[C>>2]|0)){e=48;break}c[E>>2]=(c[E>>2]|0)+-1;e=48;break}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=0}else{e=vi(b)|0;k=0}e:while(1){switch(e|0){case 46:{A=74;break e}case 48:break;default:{y=0;l=0;x=0;h=0;n=k;o=0;w=0;m=1.0;k=0;g=0.0;break e}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==74){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){k=0;h=0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;k=gk(k|0,h|0,-1,-1)|0;h=D}while((e|0)==48);y=0;l=0;x=k;n=1;o=1;w=0;m=1.0;k=0;g=0.0}else{y=0;l=0;x=0;h=0;n=k;o=1;w=0;m=1.0;k=0;g=0.0}}while(1){u=e+-48|0;p=e|32;if(u>>>0>=10){v=(e|0)==46;if(!(v|(p+-97|0)>>>0<6)){p=x;u=y;break}if(v)if(!o){v=l;h=y;u=y;o=1;p=w;j=m}else{p=x;u=y;e=46;break}else A=86}else A=86;if((A|0)==86){A=0;e=(e|0)>57?p+-87|0:u;do if(!((y|0)<0|(y|0)==0&l>>>0<8)){if((y|0)<0|(y|0)==0&l>>>0<14){r=m*.0625;p=w;j=r;g=g+r*+(e|0);break}if((w|0)!=0|(e|0)==0){p=w;j=m}else{p=1;j=m;g=g+m*.5}}else{p=w;j=m;k=e+(k<<4)|0}while(0);l=gk(l|0,y|0,1,0)|0;v=x;u=D;n=1}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;y=u;x=v;e=d[e>>0]|0;w=p;m=j;continue}else{y=u;x=v;e=vi(b)|0;w=p;m=j;continue}}if(!n){e=(c[C>>2]|0)==0;if(!e)c[E>>2]=(c[E>>2]|0)+-1;if(f){if(!e?(z=c[E>>2]|0,c[E>>2]=z+-1,(o|0)!=0):0)c[E>>2]=z+-2}else ui(b,0);g=+(I|0)*0.0;break a}n=(o|0)==0;o=n?l:p;n=n?u:h;if((u|0)<0|(u|0)==0&l>>>0<8){h=u;do{k=k<<4;l=gk(l|0,h|0,1,0)|0;h=D}while((h|0)<0|(h|0)==0&l>>>0<8)}if((e|32|0)==112){h=Hj(b,f)|0;e=D;if((h|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break a}if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}}}else if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}H=fk(o|0,n|0,2)|0;H=gk(H|0,D|0,-32,-1)|0;e=gk(H|0,D|0,h|0,e|0)|0;h=D;if(!k){g=+(I|0)*0.0;break a}if((h|0)>0|(h|0)==0&e>>>0>(0-J|0)>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}H=J+-106|0;G=((H|0)<0)<<31>>31;if((h|0)<(G|0)|(h|0)==(G|0)&e>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((k|0)>-1){do{G=!(g>=.5);H=G&1|k<<1;k=H^1;g=g+(G?g:g+-1.0);e=gk(e|0,h|0,-1,-1)|0;h=D}while((H|0)>-1);l=e;m=g}else{l=e;m=g}e=dk(32,0,J|0,((J|0)<0)<<31>>31|0)|0;e=gk(l|0,h|0,e|0,D|0)|0;J=D;if(0>(J|0)|0==(J|0)&K>>>0>e>>>0)if((e|0)<0){e=0;A=127}else A=125;else{e=K;A=125}if((A|0)==125)if((e|0)<53)A=127;else{h=e;j=+(I|0);g=0.0}if((A|0)==127){g=+(I|0);h=e;j=g;g=+yi(+Di(1.0,84-e|0),g)}K=(k&1|0)==0&(m!=0.0&(h|0)<32);g=j*(K?0.0:m)+(g+j*+(((K&1)+k|0)>>>0))-g;if(!(g!=0.0))c[(qi()|0)>>2]=34;g=+Ei(g,l);break a}else e=h;while(0);F=J+K|0;G=0-F|0;k=0;f:while(1){switch(e|0){case 46:{A=138;break f}case 48:break;default:{h=0;p=0;o=0;break f}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==138){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){h=0;e=0;while(1){h=gk(h|0,e|0,-1,-1)|0;k=D;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48)e=k;else{p=k;k=1;o=1;break}}}else{h=0;p=0;o=1}}c[H>>2]=0;n=e+-48|0;l=(e|0)==46;g:do if(l|n>>>0<10){B=H+496|0;y=0;v=0;w=l;A=p;u=k;z=o;k=0;l=0;o=0;h:while(1){do if(w)if(!z){h=y;p=v;z=1}else{p=A;e=y;n=v;break h}else{w=gk(y|0,v|0,1,0)|0;v=D;x=(e|0)!=48;if((l|0)>=125){if(!x){p=A;y=w;break}c[B>>2]=c[B>>2]|1;p=A;y=w;break}p=H+(l<<2)|0;if(k)n=e+-48+((c[p>>2]|0)*10|0)|0;c[p>>2]=n;k=k+1|0;n=(k|0)==9;p=A;y=w;u=1;k=n?0:k;l=(n&1)+l|0;o=x?w:o}while(0);e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;n=e+-48|0;w=(e|0)==46;if(!(w|n>>>0<10)){n=z;A=161;break g}else A=p}u=(u|0)!=0;A=169}else{y=0;v=0;u=k;n=o;k=0;l=0;o=0;A=161}while(0);do if((A|0)==161){B=(n|0)==0;h=B?y:h;p=B?v:p;u=(u|0)!=0;if(!((e|32|0)==101&u))if((e|0)>-1){e=y;n=v;A=169;break}else{e=y;n=v;A=171;break}n=Hj(b,f)|0;e=D;if((n|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break}if(!(c[C>>2]|0)){n=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;n=0;e=0}}h=gk(n|0,e|0,h|0,p|0)|0;u=y;p=D;n=v;A=173}while(0);if((A|0)==169)if(c[C>>2]|0){c[E>>2]=(c[E>>2]|0)+-1;if(u){u=e;A=173}else A=172}else A=171;if((A|0)==171)if(u){u=e;A=173}else A=172;do if((A|0)==172){c[(qi()|0)>>2]=22;ui(b,0);g=0.0}else if((A|0)==173){e=c[H>>2]|0;if(!e){g=+(I|0)*0.0;break}if(((n|0)<0|(n|0)==0&u>>>0<10)&((h|0)==(u|0)&(p|0)==(n|0))?K>>>0>30|(e>>>K|0)==0:0){g=+(I|0)*+(e>>>0);break}b=(J|0)/-2|0;E=((b|0)<0)<<31>>31;if((p|0)>(E|0)|(p|0)==(E|0)&h>>>0>b>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}b=J+-106|0;E=((b|0)<0)<<31>>31;if((p|0)<(E|0)|(p|0)==(E|0)&h>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(k){if((k|0)<9){n=H+(l<<2)|0;e=c[n>>2]|0;do{e=e*10|0;k=k+1|0}while((k|0)!=9);c[n>>2]=e}l=l+1|0}if((o|0)<9?(o|0)<=(h|0)&(h|0)<18:0){if((h|0)==9){g=+(I|0)*+((c[H>>2]|0)>>>0);break}if((h|0)<9){g=+(I|0)*+((c[H>>2]|0)>>>0)/+(c[2648+(8-h<<2)>>2]|0);break}b=K+27+($(h,-3)|0)|0;e=c[H>>2]|0;if((b|0)>30|(e>>>b|0)==0){g=+(I|0)*+(e>>>0)*+(c[2648+(h+-10<<2)>>2]|0);break}}e=(h|0)%9|0;if(!e){k=0;e=0}else{u=(h|0)>-1?e:e+9|0;n=c[2648+(8-u<<2)>>2]|0;if(l){o=1e9/(n|0)|0;k=0;e=0;p=0;do{C=H+(p<<2)|0;E=c[C>>2]|0;b=((E>>>0)/(n>>>0)|0)+e|0;c[C>>2]=b;e=$((E>>>0)%(n>>>0)|0,o)|0;b=(p|0)==(k|0)&(b|0)==0;p=p+1|0;h=b?h+-9|0:h;k=b?p&127:k}while((p|0)!=(l|0));if(e){c[H+(l<<2)>>2]=e;l=l+1|0}}else{k=0;l=0}e=0;h=9-u+h|0}i:while(1){v=(h|0)<18;w=(h|0)==18;x=H+(k<<2)|0;do{if(!v){if(!w)break i;if((c[x>>2]|0)>>>0>=9007199){h=18;break i}}n=0;o=l+127|0;while(1){u=o&127;p=H+(u<<2)|0;o=fk(c[p>>2]|0,0,29)|0;o=gk(o|0,D|0,n|0,0)|0;n=D;if(n>>>0>0|(n|0)==0&o>>>0>1e9){b=pk(o|0,n|0,1e9,0)|0;o=qk(o|0,n|0,1e9,0)|0;n=b}else n=0;c[p>>2]=o;b=(u|0)==(k|0);l=(u|0)!=(l+127&127|0)|b?l:(o|0)==0?u:l;if(b)break;else o=u+-1|0}e=e+-29|0}while((n|0)==0);k=k+127&127;if((k|0)==(l|0)){b=l+127&127;l=H+((l+126&127)<<2)|0;c[l>>2]=c[l>>2]|c[H+(b<<2)>>2];l=b}c[H+(k<<2)>>2]=n;h=h+9|0}j:while(1){y=l+1&127;x=H+((l+127&127)<<2)|0;while(1){v=(h|0)==18;w=(h|0)>27?9:1;u=v^1;while(1){o=k&127;p=(o|0)==(l|0);do if(!p){n=c[H+(o<<2)>>2]|0;if(n>>>0<9007199){A=219;break}if(n>>>0>9007199)break;n=k+1&127;if((n|0)==(l|0)){A=219;break}n=c[H+(n<<2)>>2]|0;if(n>>>0<254740991){A=219;break}if(!(n>>>0>254740991|u)){h=o;break j}}else A=219;while(0);if((A|0)==219?(A=0,v):0){A=220;break j}e=e+w|0;if((k|0)==(l|0))k=l;else break}u=(1<>>w;o=k;n=0;p=k;while(1){E=H+(p<<2)|0;b=c[E>>2]|0;k=(b>>>w)+n|0;c[E>>2]=k;n=$(b&u,v)|0;k=(p|0)==(o|0)&(k|0)==0;p=p+1&127;h=k?h+-9|0:h;k=k?p:o;if((p|0)==(l|0))break;else o=k}if(!n)continue;if((y|0)!=(k|0))break;c[x>>2]=c[x>>2]|1}c[H+(l<<2)>>2]=n;l=y}if((A|0)==220)if(p){c[H+(y+-1<<2)>>2]=0;h=l;l=y}else h=o;g=+((c[H+(h<<2)>>2]|0)>>>0);h=k+1&127;if((h|0)==(l|0)){l=k+2&127;c[H+(l+-1<<2)>>2]=0}r=+(I|0);j=r*(g*1.0e9+ +((c[H+(h<<2)>>2]|0)>>>0));v=e+53|0;p=v-J|0;u=(p|0)<(K|0);h=u&1;o=u?((p|0)<0?0:p):K;if((o|0)<53){M=+yi(+Di(1.0,105-o|0),j);m=+Ai(j,+Di(1.0,53-o|0));q=M;g=m;m=M+(j-m)}else{q=0.0;g=0.0;m=j}n=k+2&127;do if((n|0)==(l|0))j=g;else{n=c[H+(n<<2)>>2]|0;do if(n>>>0>=5e8){if(n>>>0>5e8){g=r*.75+g;break}if((k+3&127|0)==(l|0)){g=r*.5+g;break}else{g=r*.75+g;break}}else{if((n|0)==0?(k+3&127|0)==(l|0):0)break;g=r*.25+g}while(0);if((53-o|0)<=1){j=g;break}if(+Ai(g,1.0)!=0.0){j=g;break}j=g+1.0}while(0);g=m+j-q;do if((v&2147483647|0)>(-2-F|0)){if(+O(+g)>=9007199254740992.0){h=u&(o|0)==(p|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(G|0)?!(j!=0.0&(h|0)!=0):0)break;c[(qi()|0)>>2]=34}while(0);g=+Ei(g,e)}while(0);break a}default:{if(c[C>>2]|0)c[E>>2]=(c[E>>2]|0)+-1;c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}}}}while(0);if((A|0)==23){h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[E>>2]=(c[E>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(I|0)*t}while(0);i=L;return +g}function ti(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(qi()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((pi(i)|0)!=0);b:do switch(i|0){case 43:case 45:{j=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=j;break b}else{i=vi(b)|0;p=j;break b}}default:p=0}while(0);j=(e|0)==0;do if((e&-17|0)==0&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;if((d[14643+(i+1)>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){ui(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[14643+(i+1)>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;ui(b,0);c[(qi()|0)>>2]=22;h=0;g=0;break a}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;while(1){j=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;e=i+-48|0;if(!(e>>>0<10&j>>>0<429496729)){e=j;break}else i=j}j=0}else{e=0;j=0}f=i+-48|0;if(f>>>0<10){while(1){k=ok(e|0,j|0,10,0)|0;l=D;m=((f|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&k>>>0>~f>>>0){k=e;break}e=gk(k|0,l|0,f|0,m|0)|0;j=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;f=i+-48|0;if(!(f>>>0<10&(j>>>0<429496729|(j|0)==429496729&e>>>0<2576980378))){k=e;break}}if(f>>>0>9){i=k;e=p}else{e=10;n=72}}else{i=e;e=p}}else n=46;c:do if((n|0)==46){if(!(e+-1&e)){n=a[14900+((e*23|0)>>>5&7)>>0]|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f|i<>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<134217728&f>>>0>>0))break;else i=k}f=0}else{f=0;k=0}l=hk(-1,-1,n|0)|0;m=D;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break}else i=f;while(1){k=fk(k|0,i|0,n|0)|0;f=D;k=j&255|k;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break c}else i=f}}j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f+($(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<119304647&f>>>0>>0))break;else i=k}f=0}else{k=0;f=0}if((j&255)>>>0>>0){n=pk(-1,-1,e|0,0)|0;o=D;m=f;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&k>>>0>n>>>0){j=m;n=72;break c}f=ok(k|0,m|0,e|0,0)|0;l=D;j=j&255;if(l>>>0>4294967295|(l|0)==-1&f>>>0>~j>>>0){j=m;n=72;break c}k=gk(j|0,0,f|0,l|0)|0;f=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0){j=f;n=72;break}else m=f}}else{j=f;n=72}}while(0);if((n|0)==72)if((d[14643+(i+1)>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((d[14643+(i+1)>>0]|0)>>>0>>0);c[(qi()|0)>>2]=34;j=h;i=g;e=(g&1|0)==0&0==0?p:0}else{i=k;e=p}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(j>>>0>>0|(j|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(e|0)!=0)){c[(qi()|0)>>2]=34;g=gk(g|0,h|0,-1,-1)|0;h=D;break}if(j>>>0>h>>>0|(j|0)==(h|0)&i>>>0>g>>>0){c[(qi()|0)>>2]=34;break}}g=((e|0)<0)<<31>>31;g=dk(i^e|0,j^g|0,e|0,g|0)|0;h=D}while(0);D=h;return g|0}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+4>>2]|0;e=c[a+8>>2]|0;f=e-d|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=d+b;else c[a+100>>2]=e;return}function vi(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;i=c[f>>2]|0;if((i|0)!=0?(c[b+108>>2]|0)>=(i|0):0)j=4;else{e=Vi(b)|0;if((e|0)>=0){h=c[f>>2]|0;f=b+8|0;if(h){g=c[f>>2]|0;i=c[b+4>>2]|0;f=g;h=h-(c[b+108>>2]|0)+-1|0;if((f-i|0)>(h|0))c[b+100>>2]=i+h;else j=9}else{g=c[f>>2]|0;f=g;j=9}if((j|0)==9)c[b+100>>2]=f;f=c[b+4>>2]|0;if(g){b=b+108|0;c[b>>2]=g+1-f+(c[b>>2]|0)}f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+100>>2]=0;e=-1}return e|0}function wi(a){a=a|0;if(a>>>0>4294963200){c[(qi()|0)>>2]=0-a;a=-1}return a|0}function xi(a,b){a=+a;b=+b;var d=0,e=0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;h[k>>3]=b;d=c[k+4>>2]&-2147483648|d&2147483647;c[k>>2]=e;c[k+4>>2]=d;return +(+h[k>>3])}function yi(a,b){a=+a;b=+b;return +(+xi(a,b))}function zi(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;h[k>>3]=a;d=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=hk(d|0,m|0,52)|0;e=e&2047;j=hk(n|0,o|0,52)|0;j=j&2047;p=m&-2147483648;i=fk(n|0,o|0,1)|0;l=D;a:do if(!((i|0)==0&(l|0)==0)?(g=o&2147483647,!(g>>>0>2146435072|(g|0)==2146435072&n>>>0>0|(e|0)==2047)):0){f=fk(d|0,m|0,1)|0;g=D;if(!(g>>>0>l>>>0|(g|0)==(l|0)&f>>>0>i>>>0))return +((f|0)==(i|0)&(g|0)==(l|0)?a*0.0:a);if(!e){e=fk(d|0,m|0,12)|0;f=D;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){g=e;e=0;do{e=e+-1|0;g=fk(g|0,f|0,1)|0;f=D}while((f|0)>-1|(f|0)==-1&g>>>0>4294967295)}else e=0;d=fk(d|0,m|0,1-e|0)|0;f=D}else f=m&1048575|1048576;if(!j){g=fk(n|0,o|0,12)|0;i=D;if((i|0)>-1|(i|0)==-1&g>>>0>4294967295){j=0;do{j=j+-1|0;g=fk(g|0,i|0,1)|0;i=D}while((i|0)>-1|(i|0)==-1&g>>>0>4294967295)}else j=0;n=fk(n|0,o|0,1-j|0)|0;m=D}else m=o&1048575|1048576;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;b:do if((e|0)>(j|0)){while(1){if(g)if((d|0)==(n|0)&(f|0)==(m|0))break;else{d=l;f=i}d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;if((e|0)<=(j|0))break b}b=a*0.0;break a}while(0);if(g)if((d|0)==(n|0)&(f|0)==(m|0)){b=a*0.0;break}else{f=i;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=gk(d|0,f|0,0,-1048576)|0;d=D;e=fk(e|0,0,52)|0;d=d|D;e=o|e}else{e=hk(d|0,f|0,1-e|0)|0;d=D}c[k>>2]=e;c[k+4>>2]=d|p;b=+h[k>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function Ai(a,b){a=+a;b=+b;return +(+zi(a,b))}function Bi(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=hk(d|0,e|0,52)|0;f=f&2047;switch(f|0){case 0:{if(a!=0.0){a=+Bi(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3]}}return +a}function Ci(a,b){a=+a;b=b|0;return +(+Bi(a,b))}function Di(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=fk(d+1023|0,0,52)|0;b=D;c[k>>2]=d;c[k+4>>2]=b;return +(a*+h[k>>3])}function Ei(a,b){a=+a;b=b|0;return +(+Di(a,b))}function Fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;g=l;j=(f|0)==0?2680:f;f=c[j>>2]|0;a:do if(!d)if(!f)f=0;else k=15;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[h>>2]=g;f=f<<24>>24!=0&1;break}f=g+-194|0;if(f>>>0>50){k=15;break}f=c[2432+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;k=9}}else{g=e;k=9}b:do if((k|0)==9){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){k=15;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){k=15;break a}}c[j>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[j>>2]=f;f=-2}}while(0);if((k|0)==15){c[j>>2]=0;c[(qi()|0)>>2]=84;f=-1}i=l;return f|0}function Gi(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(qi()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function Ii(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Hi(a,b,0)|0;return a|0}function Ji(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+112|0;n=o+40|0;l=o+24|0;k=o+16|0;g=o;m=o+52|0;f=a[d>>0]|0;if(sj(14909,f<<24>>24,4)|0){e=Uj(1144)|0;if(!e)e=0;else{h=e;j=h+112|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));if(!(wj(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(wj(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;va(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[k>>2]=b;c[k+4>>2]=3;f=va(221,k|0)|0;if(!(f&1024)){c[l>>2]=b;c[l+4>>2]=4;c[l+8>>2]=f|1024;va(221,l|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+120;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[n>>2]=b,c[n+4>>2]=21505,c[n+8>>2]=m,(mb(54,n|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=14;c[e+36>>2]=4;c[e+40>>2]=5;c[e+12>>2]=2;if(!(c[598]|0))c[e+76>>2]=-1;yb(2416);f=c[603]|0;c[e+56>>2]=f;if(f)c[f+52>>2]=e;c[603]=e;nb(2416)}}else{c[(qi()|0)>>2]=22;e=0}i=o;return e|0}function Ki(b){b=b|0;var c=0,d=0,e=0;d=(wj(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(wj(b,120)|0)==0;d=e?d:d|128;b=(wj(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function Li(a){a=a|0;return 0}function Mi(a){a=a|0;return}function Ni(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=wi(zb(6,d|0)|0)|0;i=b;return a|0}function Oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;h=m+16|0;g=m;f=m+32|0;c[f>>2]=d;j=f+4|0;l=b+48|0;n=c[l>>2]|0;c[j>>2]=e-((n|0)!=0&1);k=b+44|0;c[f+8>>2]=c[k>>2];c[f+12>>2]=n;if(!(c[597]|0)){c[h>>2]=c[b+60>>2];c[h+4>>2]=f;c[h+8>>2]=2;f=wi(Nb(145,h|0)|0)|0}else{Fa(13,b|0);c[g>>2]=c[b+60>>2];c[g+4>>2]=f;c[g+8>>2]=2;f=wi(Nb(145,g|0)|0)|0;pb(0)}if((f|0)>=1){j=c[j>>2]|0;if(f>>>0>j>>>0){h=c[k>>2]|0;g=b+4|0;c[g>>2]=h;c[b+8>>2]=h+(f-j);if(!(c[l>>2]|0))f=e;else{c[g>>2]=h+1;a[d+(e+-1)>>0]=a[h>>0]|0;f=e}}}else{c[b>>2]=c[b>>2]|f&48^16;c[b+8>>2]=0;c[b+4>>2]=0}i=m;return f|0}function Pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((wi(Ib(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function Qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[597]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=wi(Ob(146,n|0)|0)|0}else{Fa(14,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=wi(Ob(146,m|0)|0)|0;pb(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=4;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(mb(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=Qi(b,d,e)|0;i=g;return f|0}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=sj(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;ik(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Ti(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Qb[c[b+36>>2]&15](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(d&20)if(!(d&4))d=-1;else{c[b>>2]=d|32;d=-1}else{d=c[e>>2]|0;c[b+8>>2]=d;c[b+4>>2]=d;d=0}return d|0}function Ui(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);d=0}else{c[b>>2]=d|32;d=-1}return d|0}function Vi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(Ti(a)|0)!=0:0)b=-1;else if((Qb[c[a+32>>2]&15](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function Wi(a){a=a|0;var b=0,d=0,e=0;e=(c[a>>2]&1|0)!=0;if(!e){yb(2416);d=c[a+52>>2]|0;b=a+56|0;if(d)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b)c[b+52>>2]=d;if((c[603]|0)==(a|0))c[603]=b;nb(2416)}b=Yi(a)|0;b=Yb[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d)Vj(d);if(!e)Vj(a);return b|0}function Xi(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Yi(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Kj(a)|0;break}d=(Li(a)|0)==0;b=Kj(a)|0;if(!d)Mi(a)}else{if(!(c[660]|0))b=0;else b=Yi(c[660]|0)|0;yb(2416);a=c[603]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Li(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Kj(a)|0|b;if(d)Mi(a);a=c[a+56>>2]|0}while((a|0)!=0);nb(2416)}while(0);return b|0}function Zi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c[f+76>>2]|0)>-1)o=Li(f)|0;else o=0;g=e+-1|0;if((e|0)<2){p=f+74|0;n=a[p>>0]|0;a[p>>0]=n+255|n;if(o)Mi(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){m=f+4|0;n=f+8|0;h=b;while(1){i=c[m>>2]|0;q=i;k=(c[n>>2]|0)-q|0;j=sj(i,10,k)|0;r=(j|0)==0;j=r?k:1-q+j|0;q=j>>>0>>0;j=q?j:g;ik(h|0,i|0,j|0)|0;i=c[m>>2]|0;k=i+j|0;c[m>>2]=k;e=h+j|0;l=g-j|0;if(!(r&q)){p=18;break a}if(k>>>0<(c[n>>2]|0)>>>0){j=j+1|0;c[m>>2]=i+j;i=d[k>>0]|0}else{g=Vi(f)|0;if((g|0)<0)break;j=j+1|0;i=g}g=l+-1|0;h=h+j|0;a[e>>0]=i;if(!((g|0)!=0&(i&255|0)!=10)){e=h;p=18;break a}}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)p=18;else b=0}else{e=b;p=18}while(0);if((p|0)==18)if(!b)b=0;else a[e>>0]=0;if(o)Mi(f)}return b|0}function _i(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g+16|0;e=g;if(sj(14909,a[d>>0]|0,4)|0){h=Ki(d)|0|32768;c[e>>2]=b;c[e+4>>2]=h;c[e+8>>2]=438;e=wi(Ab(5,e|0)|0)|0;if((e|0)>=0){b=Ji(e,d)|0;if(!b){c[f>>2]=e;zb(6,f|0)|0;b=0}}else b=0}else{c[(qi()|0)>>2]=22;b=0}i=g;return b|0}function $i(a,b){a=a|0;b=b|0;return (ij(a,Bj(a)|0,1,b)|0)+-1|0}function aj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=$(e,d)|0;if((c[f+76>>2]|0)>-1)k=Li(f)|0;else k=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:j;ik(b|0,h|0,i|0)|0;c[g>>2]=h+i;b=b+i|0;g=j-i|0}else g=j;a:do if(!g)l=13;else{i=f+32|0;h=g;while(1){if(Ti(f)|0){e=h;break}g=Qb[c[i>>2]&15](f,b,h)|0;if((g+1|0)>>>0<2){e=h;break}if((h|0)==(g|0)){l=13;break a}else{b=b+g|0;h=h-g|0}}if(k)Mi(f);e=((j-e|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(k)Mi(f);return e|0}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;f=a+20|0;e=a+28|0;if((c[f>>2]|0)>>>0>(c[e>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[e>>2]=0;c[f>>2]=0;if((Qb[c[a+40>>2]&15](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(Li(a)|0)==0;b=bj(a,b,d)|0;if(!e)Mi(a)}else b=bj(a,b,d)|0;return b|0}function dj(a,b,c){a=a|0;b=b|0;c=c|0;return cj(a,b,c)|0}function ej(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Qb[c[a+40>>2]&15](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function fj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=ej(a)|0}else a=ej(a)|0;return a|0}function gj(a){a=a|0;return fj(a)|0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Ui(e)|0)){g=c[f>>2]|0;h=4}else f=0;else h=4;a:do if((h|0)==4){i=e+20|0;h=c[i>>2]|0;if((g-h|0)>>>0>>0){f=Qb[c[e+36>>2]&15](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break b}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Qb[c[e+36>>2]&15](e,b,f)|0)>>>0>>0)break a;d=d-f|0;b=b+f|0;g=c[i>>2]|0}else{g=h;f=0}while(0);ik(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;f=f+d|0}while(0);return f|0}function ij(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=$(d,b)|0;if((c[e+76>>2]|0)>-1){g=(Li(e)|0)==0;a=hj(a,f,e)|0;if(!g)Mi(e)}else a=hj(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function jj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Mi(a)}else{bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=pj(a,b,f)|0;i=e;return d|0}function lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=Uj(240)|0;do if(f){c[e>>2]=c[d>>2];e=oj(f,240,b,e)|0;if(e>>>0<240){b=Xj(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}Vj(f);if((e|0)>=0?(h=e+1|0,g=Uj(h)|0,c[a>>2]=g,(g|0)!=0):0)e=oj(g,h,b,d)|0;else e=-1}else e=-1;while(0);i=j;return e|0}function mj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+80|0;r=s+96|0;q=s;p=s+136|0;f=r;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=c[e>>2];if((Lj(0,d,o,q,r)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)m=Li(b)|0;else m=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=p;j=b+28|0;c[j>>2]=p;k=b+20|0;c[k>>2]=p;c[e>>2]=80;l=b+16|0;c[l>>2]=p+80;f=Lj(b,d,o,q,r)|0;if(h){Qb[c[b+36>>2]&15](b,0,0)|0;f=(c[k>>2]|0)==0?-1:f;c[g>>2]=h;c[e>>2]=0;c[l>>2]=0;c[j>>2]=0;c[k>>2]=0}}else f=Lj(b,d,o,q,r)|0;e=c[b>>2]|0;c[b>>2]=e|n;if(m)Mi(b);e=(e&32|0)==0?f:-1}i=s;return e|0}function nj(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=i;i=i+304|0;H=P+16|0;J=P+8|0;I=P+33|0;K=P;y=P+32|0;if((c[e+76>>2]|0)>-1)O=Li(e)|0;else O=0;k=a[f>>0]|0;a:do if(k<<24>>24){L=e+4|0;M=e+100|0;G=e+108|0;z=e+8|0;A=I+10|0;B=I+33|0;C=J+4|0;E=I+46|0;F=I+94|0;m=k;k=0;n=f;s=0;l=0;f=0;b:while(1){c:do if(!(pi(m&255)|0)){m=(a[n>>0]|0)==37;d:do if(m){q=n+1|0;o=a[q>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{x=0;o=n+2|0;break}default:{o=(o&255)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[H>>2]=c[j>>2];while(1){x=(c[H>>2]|0)+(4-1)&~(4-1);m=c[x>>2]|0;c[H>>2]=x+4;if(o>>>0>1)o=o+-1|0;else break}x=m;o=n+3|0;break e}o=(c[j>>2]|0)+(4-1)&~(4-1);x=c[o>>2]|0;c[j>>2]=o+4;o=q}}while(0);m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0<10){m=0;while(1){q=(m*10|0)+-48+n|0;o=o+1|0;m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0>=10)break;else m=q}}else q=0;if(m<<24>>24==109){o=o+1|0;r=a[o>>0]|0;m=(x|0)!=0&1;l=0;f=0}else{r=m;m=0}n=o+1|0;switch(r&255|0){case 104:{w=(a[n>>0]|0)==104;n=w?o+2|0:n;o=w?-2:-1;break}case 108:{w=(a[n>>0]|0)==108;n=w?o+2|0:n;o=w?3:1;break}case 106:{o=3;break}case 116:case 122:{o=1;break}case 76:{o=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=o;o=0;break}default:{N=152;break b}}r=d[n>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:o;switch(r|0){case 99:{w=s;v=(q|0)<1?1:q;break}case 91:{w=s;v=q;break}case 110:{if(!x){o=s;break c}switch(t|0){case -2:{a[x>>0]=s;o=s;break c}case -1:{b[x>>1]=s;o=s;break c}case 0:{c[x>>2]=s;o=s;break c}case 1:{c[x>>2]=s;o=s;break c}case 3:{o=x;c[o>>2]=s;c[o+4>>2]=((s|0)<0)<<31>>31;o=s;break c}default:{o=s;break c}}}default:{ui(e,0);do{o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0}while((pi(o)|0)!=0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}w=(c[G>>2]|0)+s+o-(c[z>>2]|0)|0;v=q}}ui(e,v);o=c[L>>2]|0;q=c[M>>2]|0;if(o>>>0>>0)c[L>>2]=o+1;else{if((vi(e)|0)<0){N=152;break b}q=c[M>>2]|0}if(q)c[L>>2]=(c[L>>2]|0)+-1;f:do switch(r|0){case 91:case 99:case 115:{u=(r|0)==99;g:do if((r&239|0)==99){ek(I|0,-1,257)|0;a[I>>0]=0;if((r|0)==115){a[B>>0]=0;a[A>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;a[A+3>>0]=0;a[A+4>>0]=0}}else{Q=n+1|0;s=(a[Q>>0]|0)==94;o=s&1;r=s?Q:n;n=s?n+2|0:Q;ek(I|0,s&1|0,257)|0;a[I>>0]=0;switch(a[n>>0]|0){case 45:{s=(o^1)&255;a[E>>0]=s;n=r+2|0;break}case 93:{s=(o^1)&255;a[F>>0]=s;n=r+2|0;break}default:s=(o^1)&255}while(1){o=a[n>>0]|0;h:do switch(o<<24>>24){case 0:{N=152;break b}case 93:break g;case 45:{r=n+1|0;o=a[r>>0]|0;switch(o<<24>>24){case 93:case 0:{o=45;break h}default:{}}n=a[n+-1>>0]|0;if((n&255)<(o&255)){n=n&255;do{n=n+1|0;a[I+n>>0]=s;o=a[r>>0]|0}while((n|0)<(o&255|0));n=r}else n=r;break}default:{}}while(0);a[I+((o&255)+1)>>0]=s;n=n+1|0}}while(0);r=u?v+1|0:31;s=(t|0)==1;t=(m|0)!=0;i:do if(s){if(t){f=Uj(r<<2)|0;if(!f){l=0;N=152;break b}}else f=x;c[J>>2]=0;c[C>>2]=0;l=0;j:while(1){q=(f|0)==0;do{k:while(1){o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0;if(!(a[I+(o+1)>>0]|0))break j;a[y>>0]=o;switch(Fi(K,y,1,J)|0){case -1:{l=0;N=152;break b}case -2:break;default:break k}}if(!q){c[f+(l<<2)>>2]=c[K>>2];l=l+1|0}}while(!(t&(l|0)==(r|0)));l=r<<1|1;o=Xj(f,l<<2)|0;if(!o){l=0;N=152;break b}Q=r;r=l;f=o;l=Q}if(!(Gi(J)|0)){l=0;N=152;break b}else{q=l;l=0}}else{if(t){l=Uj(r)|0;if(!l){l=0;f=0;N=152;break b}else o=0;while(1){do{f=c[L>>2]|0;if(f>>>0<(c[M>>2]|0)>>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=o;f=0;break i}a[l+o>>0]=f;o=o+1|0}while((o|0)!=(r|0));f=r<<1|1;o=Xj(l,f)|0;if(!o){f=0;N=152;break b}else{Q=r;r=f;l=o;o=Q}}}if(!x){l=q;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=0;l=0;f=0;break i}l=c[M>>2]|0}}else{l=0;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=l;l=x;f=0;break i}a[x+l>>0]=f;q=c[M>>2]|0;l=l+1|0}}}while(0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}o=o-(c[z>>2]|0)+(c[G>>2]|0)|0;if(!o)break b;if(!((o|0)==(v|0)|u^1))break b;do if(t)if(s){c[x>>2]=f;break}else{c[x>>2]=l;break}while(0);if(!u){if(f)c[f+(q<<2)>>2]=0;if(!l){l=0;break f}a[l+q>>0]=0}break}case 120:case 88:case 112:{o=16;N=134;break}case 111:{o=8;N=134;break}case 117:case 100:{o=10;N=134;break}case 105:{o=0;N=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+si(e,t,0);if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if(x)switch(t|0){case 0:{g[x>>2]=p;break f}case 1:{h[x>>3]=p;break f}case 2:{h[x>>3]=p;break f}default:break f}break}default:{}}while(0);l:do if((N|0)==134){N=0;o=ti(e,o,0,-1,-1)|0;if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if((x|0)!=0&(r|0)==112){c[x>>2]=o;break}if(x)switch(t|0){case -2:{a[x>>0]=o;break l}case -1:{b[x>>1]=o;break l}case 0:{c[x>>2]=o;break l}case 1:{c[x>>2]=o;break l}case 3:{Q=x;c[Q>>2]=o;c[Q+4>>2]=D;break l}default:break l}}while(0);k=((x|0)!=0&1)+k|0;o=(c[G>>2]|0)+w+(c[L>>2]|0)-(c[z>>2]|0)|0;break c}while(0);n=n+(m&1)|0;ui(e,0);m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0;if((m|0)!=(d[n>>0]|0)){N=21;break b}o=s+1|0}else{while(1){m=n+1|0;if(!(pi(d[m>>0]|0)|0))break;else n=m}ui(e,0);do{m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0}while((pi(m)|0)!=0);m=c[L>>2]|0;if(c[M>>2]|0){m=m+-1|0;c[L>>2]=m}o=(c[G>>2]|0)+s+m-(c[z>>2]|0)|0}while(0);n=n+1|0;m=a[n>>0]|0;if(!(m<<24>>24))break a;else s=o}if((N|0)==21){if(c[M>>2]|0)c[L>>2]=(c[L>>2]|0)+-1;if((k|0)!=0|(m|0)>-1)break;else{k=0;N=153}}else if((N|0)==152)if(!k){k=m;N=153}if((N|0)==153){m=k;k=-1}if(m){Vj(l);Vj(f)}}else k=0;while(0);if(O)Mi(e);i=P;return k|0}function oj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;g=n+112|0;m=n;h=m;j=2684;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){d=1;l=4}else{c[(qi()|0)>>2]=75;d=-1}else{g=b;l=4}if((l|0)==4){l=-2-g|0;l=d>>>0>l>>>0?l:d;c[m+48>>2]=l;b=m+20|0;c[b>>2]=g;c[m+44>>2]=g;d=g+l|0;g=m+16|0;c[g>>2]=d;c[m+28>>2]=d;d=mj(m,e,f)|0;if(l){e=c[b>>2]|0;a[e+(((e|0)==(c[g>>2]|0))<<31>>31)>>0]=0}}i=n;return d|0}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=15;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=nj(e,b,d)|0;i=g;return h|0}function qj(b){b=b|0;var c=0,d=0,e=0,f=0;while(1){c=b+1|0;if(!(pi(a[b>>0]|0)|0))break;else b=c}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:e=0}if((f|0)==5){b=c;d=a[c>>0]|0}c=(d<<24>>24)+-48|0;if(c>>>0<10){d=b;b=0;do{d=d+1|0;b=(b*10|0)-c|0;c=(a[d>>0]|0)+-48|0}while(c>>>0<10)}else b=0;return ((e|0)!=0?b:0-b|0)|0}function rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=$(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do if((f&3|0)==3){Nj(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)Nj(a,d,e,h,o);else Oj(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}Oj(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;Oj(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;Oj(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function sj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=$(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return ((e|0)!=0?b:0)|0}function tj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function uj(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function vj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);ek(b|0,0,e|0)|0;return b|0}function wj(b,c){b=b|0;c=c|0;b=xj(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Bj(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=$(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009)break b;b=b+4|0;e=c[b>>2]|0}while(((e&-2139062144^-2139062144)&e+-16843009|0)==0);while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function yj(a,b){a=a|0;b=b|0;uj(a,b)|0;return a|0}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;a:do if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31))break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}while(0);e=e-b|0}else e=(xj(b,e<<24>>24)|0)-b|0;i=g;return e|0}function Aj(a){a=a|0;var b=0,c=0;c=(Bj(a)|0)+1|0;b=Uj(c)|0;if(!b)b=0;else ik(b|0,a|0,c|0)|0;return b|0}function Bj(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Cj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Bj(b)|0)|0;a:do if(d)while(1){f=a[c>>0]|0;if(!(f<<24>>24))break a;d=d+-1|0;g=e+1|0;a[e>>0]=f;if(!d){e=g;break}else{c=c+1|0;e=g}}while(0);a[e>>0]=0;return b|0}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;vj(a,b,c)|0;return a|0}function Ej(a,b){a=a|0;b=b|0;return tj(a,b,(Bj(a)|0)+1|0)|0}function Fj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;do if(!(f<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;d=d-b|0;break}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);i=h;return d|0}function Gj(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){b=c[699]|0;if(!b)b=0;else{f=b;e=3}}else{f=b;e=3}do if((e|0)==3){e=Fj(f,d)|0;b=f+e|0;if(!(a[b>>0]|0)){c[699]=0;b=0;break}e=(zj(b,d)|0)+e|0;d=f+e|0;c[699]=d;if(!(a[d>>0]|0)){c[699]=0;break}else{c[699]=f+(e+1);a[d>>0]=0;break}}while(0);return b|0}function Hj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;e=c[i>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0){c[i>>2]=(c[i>>2]|0)+-1;h=f}else h=f;break}default:h=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[i>>2]=(c[i>>2]|0)+-1;f=-2147483648;e=0}else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=ok(f|0,b|0,10,0)|0;f=D;e=gk(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=gk(e|0,D|0,b|0,f|0)|0;b=D;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));g=f}else g=f;if((e+-48|0)>>>0<10)do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;a=(h|0)!=0;e=dk(0,0,g|0,b|0)|0;f=a?D:b;e=a?e:g}D=f;return e|0}function Ij(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Jj(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Kj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Qb[c[a+40>>2]&15](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function Lj(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=i;i=i+624|0;ca=ha+24|0;ea=ha+16|0;da=ha+588|0;Y=ha+576|0;ba=ha;V=ha+536|0;ga=ha+8|0;fa=ha+528|0;M=(e|0)!=0;N=V+40|0;U=N;V=V+39|0;W=ga+4|0;X=Y+12|0;Y=Y+11|0;Z=da;_=X;aa=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ca+288|0;R=da+9|0;S=R;T=da+8|0;m=0;w=f;n=0;f=0;a:while(1){do if((m|0)>-1)if((n|0)>(2147483647-m|0)){c[(qi()|0)>>2]=75;m=-1;break}else{m=n+m|0;break}while(0);n=a[w>>0]|0;if(!(n<<24>>24)){L=245;break}else o=w;b:while(1){switch(n<<24>>24){case 37:{n=o;L=9;break b}case 0:{n=o;break b}default:{}}K=o+1|0;n=a[K>>0]|0;o=K}c:do if((L|0)==9)while(1){L=0;if((a[n+1>>0]|0)!=37)break c;o=o+1|0;n=n+2|0;if((a[n>>0]|0)==37)L=9;else break}while(0);y=o-w|0;if(M?(c[e>>2]&32|0)==0:0)hj(w,y,e)|0;if((o|0)!=(w|0)){w=n;n=y;continue}r=n+1|0;o=a[r>>0]|0;p=(o<<24>>24)+-48|0;if(p>>>0<10){K=(a[n+2>>0]|0)==36;r=K?n+3|0:r;o=a[r>>0]|0;u=K?p:-1;f=K?1:f}else u=-1;n=o<<24>>24;d:do if((n&-32|0)==32){p=0;while(1){if(!(1<>24)+-32|p;r=r+1|0;o=a[r>>0]|0;n=o<<24>>24;if((n&-32|0)!=32){s=p;n=r;break}}}else{s=0;n=r}while(0);do if(o<<24>>24==42){p=n+1|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[l+(o<<2)>>2]=10;f=1;n=n+3|0;o=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(f){m=-1;break a}if(!M){x=s;n=p;f=0;K=0;break}f=(c[g>>2]|0)+(4-1)&~(4-1);o=c[f>>2]|0;c[g>>2]=f+4;f=0;n=p}if((o|0)<0){x=s|8192;K=0-o|0}else{x=s;K=o}}else{p=(o<<24>>24)+-48|0;if(p>>>0<10){o=0;do{o=(o*10|0)+p|0;n=n+1|0;p=(a[n>>0]|0)+-48|0}while(p>>>0<10);if((o|0)<0){m=-1;break a}else{x=s;K=o}}else{x=s;K=0}}while(0);e:do if((a[n>>0]|0)==46){p=n+1|0;o=a[p>>0]|0;if(o<<24>>24!=42){r=(o<<24>>24)+-48|0;if(r>>>0<10){n=p;o=0}else{n=p;r=0;break}while(1){o=(o*10|0)+r|0;n=n+1|0;r=(a[n>>0]|0)+-48|0;if(r>>>0>=10){r=o;break e}}}p=n+2|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+3>>0]|0)==36:0){c[l+(o<<2)>>2]=10;n=n+4|0;r=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(f){m=-1;break a}if(M){n=(c[g>>2]|0)+(4-1)&~(4-1);r=c[n>>2]|0;c[g>>2]=n+4;n=p}else{n=p;r=0}}else r=-1;while(0);t=0;while(1){o=(a[n>>0]|0)+-65|0;if(o>>>0>57){m=-1;break a}p=n+1|0;o=a[15953+(t*58|0)+o>>0]|0;s=o&255;if((s+-1|0)>>>0<8){n=p;t=s}else{J=p;break}}if(!(o<<24>>24)){m=-1;break}p=(u|0)>-1;do if(o<<24>>24==19)if(p){m=-1;break a}else L=52;else{if(p){c[l+(u<<2)>>2]=s;H=j+(u<<3)|0;I=c[H+4>>2]|0;L=ba;c[L>>2]=c[H>>2];c[L+4>>2]=I;L=52;break}if(!M){m=0;break a}Rj(ba,s,g)}while(0);if((L|0)==52?(L=0,!M):0){w=J;n=y;continue}u=a[n>>0]|0;u=(t|0)!=0&(u&15|0)==3?u&-33:u;p=x&-65537;I=(x&8192|0)==0?x:p;f:do switch(u|0){case 110:switch(t|0){case 0:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 1:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 2:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}case 3:{b[c[ba>>2]>>1]=m;w=J;n=y;continue a}case 4:{a[c[ba>>2]>>0]=m;w=J;n=y;continue a}case 6:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 7:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}default:{w=J;n=y;continue a}}case 112:{t=I|8;r=r>>>0>8?r:8;u=120;L=64;break}case 88:case 120:{t=I;L=64;break}case 111:{p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;if((o|0)==0&(p|0)==0)n=N;else{n=N;do{n=n+-1|0;a[n>>0]=o&7|48;o=hk(o|0,p|0,3)|0;p=D}while(!((o|0)==0&(p|0)==0))}if(!(I&8)){o=I;t=0;s=16433;L=77}else{t=U-n+1|0;o=I;r=(r|0)<(t|0)?t:r;t=0;s=16433;L=77}break}case 105:case 100:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)<0){n=dk(0,0,n|0,o|0)|0;o=D;p=ba;c[p>>2]=n;c[p+4>>2]=o;p=1;s=16433;L=76;break f}if(!(I&2048)){s=I&1;p=s;s=(s|0)==0?16433:16435;L=76}else{p=1;s=16434;L=76}break}case 117:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;p=0;s=16433;L=76;break}case 99:{a[V>>0]=c[ba>>2];w=V;o=1;t=0;u=16433;n=N;break}case 109:{n=ri(c[(qi()|0)>>2]|0)|0;L=82;break}case 115:{n=c[ba>>2]|0;n=(n|0)!=0?n:16443;L=82;break}case 67:{c[ga>>2]=c[ba>>2];c[W>>2]=0;c[ba>>2]=ga;r=-1;L=86;break}case 83:{if(!r){Tj(e,32,K,0,I);n=0;L=98}else L=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{q=+h[ba>>3];c[ea>>2]=0;h[k>>3]=q;if((c[k+4>>2]|0)>=0)if(!(I&2048)){H=I&1;G=H;H=(H|0)==0?16451:16456}else{G=1;H=16453}else{q=-q;G=1;H=16450}h[k>>3]=q;F=c[k+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Ci(q,ea)*2.0;o=v!=0.0;if(o)c[ea>>2]=(c[ea>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?H:H+9|0;x=G|2;n=12-r|0;do if(!(r>>>0>11|(n|0)==0)){q=8.0;do{n=n+-1|0;q=q*16.0}while((n|0)!=0);if((a[y>>0]|0)==45){q=-(q+(-v-q));break}else{q=v+q-q;break}}else q=v;while(0);o=c[ea>>2]|0;n=(o|0)<0?0-o|0:o;n=Sj(n,((n|0)<0)<<31>>31,X)|0;if((n|0)==(X|0)){a[Y>>0]=48;n=Y}a[n+-1>>0]=(o>>31&2)+43;t=n+-2|0;a[t>>0]=u+15;s=(r|0)<1;p=(I&8|0)==0;o=da;while(1){H=~~q;n=o+1|0;a[o>>0]=d[16417+H>>0]|w;q=(q-+(H|0))*16.0;do if((n-Z|0)==1){if(p&(s&q==0.0))break;a[n>>0]=46;n=o+2|0}while(0);if(!(q!=0.0))break;else o=n}r=(r|0)!=0&(O+n|0)<(r|0)?P+r-t|0:aa-t+n|0;p=r+x|0;Tj(e,32,K,p,I);if(!(c[e>>2]&32))hj(y,x,e)|0;Tj(e,48,K,p,I^65536);n=n-Z|0;if(!(c[e>>2]&32))hj(da,n,e)|0;o=_-t|0;Tj(e,48,r-(n+o)|0,0,0);if(!(c[e>>2]&32))hj(t,o,e)|0;Tj(e,32,K,p,I^8192);n=(p|0)<(K|0)?K:p;break}n=(r|0)<0?6:r;if(o){o=(c[ea>>2]|0)+-28|0;c[ea>>2]=o;q=v*268435456.0}else{q=v;o=c[ea>>2]|0}F=(o|0)<0?ca:Q;E=F;o=F;do{B=~~q>>>0;c[o>>2]=B;o=o+4|0;q=(q-+(B>>>0))*1.0e9}while(q!=0.0);p=o;o=c[ea>>2]|0;if((o|0)>0){s=F;while(1){t=(o|0)>29?29:o;r=p+-4|0;do if(r>>>0>>0)r=s;else{o=0;do{B=fk(c[r>>2]|0,0,t|0)|0;B=gk(B|0,D|0,o|0,0)|0;o=D;A=qk(B|0,o|0,1e9,0)|0;c[r>>2]=A;o=pk(B|0,o|0,1e9,0)|0;r=r+-4|0}while(r>>>0>=s>>>0);if(!o){r=s;break}r=s+-4|0;c[r>>2]=o}while(0);while(1){if(p>>>0<=r>>>0)break;o=p+-4|0;if(!(c[o>>2]|0))p=o;else break}o=(c[ea>>2]|0)-t|0;c[ea>>2]=o;if((o|0)>0)s=r;else break}}else r=F;if((o|0)<0){y=((n+25|0)/9|0)+1|0;z=(C|0)==102;w=r;while(1){x=0-o|0;x=(x|0)>9?9:x;do if(w>>>0

>>0){o=(1<>>x;r=0;t=w;do{B=c[t>>2]|0;c[t>>2]=(B>>>x)+r;r=$(B&o,s)|0;t=t+4|0}while(t>>>0

>>0);o=(c[w>>2]|0)==0?w+4|0:w;if(!r){r=o;break}c[p>>2]=r;r=o;p=p+4|0}else r=(c[w>>2]|0)==0?w+4|0:w;while(0);o=z?F:r;p=(p-o>>2|0)>(y|0)?o+(y<<2)|0:p;o=(c[ea>>2]|0)+x|0;c[ea>>2]=o;if((o|0)>=0){w=r;break}else w=r}}else w=r;do if(w>>>0

>>0){o=(E-w>>2)*9|0;s=c[w>>2]|0;if(s>>>0<10)break;else r=10;do{r=r*10|0;o=o+1|0}while(s>>>0>=r>>>0)}else o=0;while(0);A=(C|0)==103;B=(n|0)!=0;r=n-((C|0)!=102?o:0)+((B&A)<<31>>31)|0;if((r|0)<(((p-E>>2)*9|0)+-9|0)){t=r+9216|0;z=(t|0)/9|0;r=F+(z+-1023<<2)|0;t=((t|0)%9|0)+1|0;if((t|0)<9){s=10;do{s=s*10|0;t=t+1|0}while((t|0)!=9)}else s=10;x=c[r>>2]|0;y=(x>>>0)%(s>>>0)|0;if((y|0)==0?(F+(z+-1022<<2)|0)==(p|0):0)s=w;else L=163;do if((L|0)==163){L=0;v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;t=(s|0)/2|0;do if(y>>>0>>0)q=.5;else{if((y|0)==(t|0)?(F+(z+-1022<<2)|0)==(p|0):0){q=1.0;break}q=1.5}while(0);do if(G){if((a[H>>0]|0)!=45)break;v=-v;q=-q}while(0);t=x-y|0;c[r>>2]=t;if(!(v+q!=v)){s=w;break}C=t+s|0;c[r>>2]=C;if(C>>>0>999999999){o=w;while(1){s=r+-4|0;c[r>>2]=0;if(s>>>0>>0){o=o+-4|0;c[o>>2]=0}C=(c[s>>2]|0)+1|0;c[s>>2]=C;if(C>>>0>999999999)r=s;else{w=o;r=s;break}}}o=(E-w>>2)*9|0;t=c[w>>2]|0;if(t>>>0<10){s=w;break}else s=10;do{s=s*10|0;o=o+1|0}while(t>>>0>=s>>>0);s=w}while(0);C=r+4|0;w=s;p=p>>>0>C>>>0?C:p}y=0-o|0;while(1){if(p>>>0<=w>>>0){z=0;C=p;break}r=p+-4|0;if(!(c[r>>2]|0))p=r;else{z=1;C=p;break}}do if(A){n=(B&1^1)+n|0;if((n|0)>(o|0)&(o|0)>-5){u=u+-1|0;n=n+-1-o|0}else{u=u+-2|0;n=n+-1|0}p=I&8;if(p)break;do if(z){p=c[C+-4>>2]|0;if(!p){r=9;break}if(!((p>>>0)%10|0)){s=10;r=0}else{r=0;break}do{s=s*10|0;r=r+1|0}while(((p>>>0)%(s>>>0)|0|0)==0)}else r=9;while(0);p=((C-E>>2)*9|0)+-9|0;if((u|32|0)==102){p=p-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}else{p=p+o-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}}else p=I&8;while(0);x=n|p;s=(x|0)!=0&1;t=(u|32|0)==102;if(t){o=(o|0)>0?o:0;u=0}else{r=(o|0)<0?y:o;r=Sj(r,((r|0)<0)<<31>>31,X)|0;if((_-r|0)<2)do{r=r+-1|0;a[r>>0]=48}while((_-r|0)<2);a[r+-1>>0]=(o>>31&2)+43;E=r+-2|0;a[E>>0]=u;o=_-E|0;u=E}y=G+1+n+s+o|0;Tj(e,32,K,y,I);if(!(c[e>>2]&32))hj(H,G,e)|0;Tj(e,48,K,y,I^65536);do if(t){r=w>>>0>F>>>0?F:w;o=r;do{p=Sj(c[o>>2]|0,0,R)|0;do if((o|0)==(r|0)){if((p|0)!=(R|0))break;a[T>>0]=48;p=T}else{if(p>>>0<=da>>>0)break;do{p=p+-1|0;a[p>>0]=48}while(p>>>0>da>>>0)}while(0);if(!(c[e>>2]&32))hj(p,S-p|0,e)|0;o=o+4|0}while(o>>>0<=F>>>0);do if(x){if(c[e>>2]&32)break;hj(16485,1,e)|0}while(0);if((n|0)>0&o>>>0>>0){p=o;while(1){o=Sj(c[p>>2]|0,0,R)|0;if(o>>>0>da>>>0)do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0);if(!(c[e>>2]&32))hj(o,(n|0)>9?9:n,e)|0;p=p+4|0;o=n+-9|0;if(!((n|0)>9&p>>>0>>0)){n=o;break}else n=o}}Tj(e,48,n+9|0,9,0)}else{t=z?C:w+4|0;if((n|0)>-1){s=(p|0)==0;r=w;do{o=Sj(c[r>>2]|0,0,R)|0;if((o|0)==(R|0)){a[T>>0]=48;o=T}do if((r|0)==(w|0)){p=o+1|0;if(!(c[e>>2]&32))hj(o,1,e)|0;if(s&(n|0)<1){o=p;break}if(c[e>>2]&32){o=p;break}hj(16485,1,e)|0;o=p}else{if(o>>>0<=da>>>0)break;do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0)}while(0);p=S-o|0;if(!(c[e>>2]&32))hj(o,(n|0)>(p|0)?p:n,e)|0;n=n-p|0;r=r+4|0}while(r>>>0>>0&(n|0)>-1)}Tj(e,48,n+18|0,18,0);if(c[e>>2]&32)break;hj(u,_-u|0,e)|0}while(0);Tj(e,32,K,y,I^8192);n=(y|0)<(K|0)?K:y}else{t=(u&32|0)!=0;s=q!=q|0.0!=0.0;o=s?0:G;r=o+3|0;Tj(e,32,K,r,p);n=c[e>>2]|0;if(!(n&32)){hj(H,o,e)|0;n=c[e>>2]|0}if(!(n&32))hj(s?(t?16477:16481):t?16469:16473,3,e)|0;Tj(e,32,K,r,I^8192);n=(r|0)<(K|0)?K:r}while(0);w=J;continue a}default:{p=I;o=r;t=0;u=16433;n=N}}while(0);g:do if((L|0)==64){p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;s=u&32;if(!((o|0)==0&(p|0)==0)){n=N;do{n=n+-1|0;a[n>>0]=d[16417+(o&15)>>0]|s;o=hk(o|0,p|0,4)|0;p=D}while(!((o|0)==0&(p|0)==0));L=ba;if((t&8|0)==0|(c[L>>2]|0)==0&(c[L+4>>2]|0)==0){o=t;t=0;s=16433;L=77}else{o=t;t=2;s=16433+(u>>4)|0;L=77}}else{n=N;o=t;t=0;s=16433;L=77}}else if((L|0)==76){n=Sj(n,o,N)|0;o=I;t=p;L=77}else if((L|0)==82){L=0;I=sj(n,0,r)|0;H=(I|0)==0;w=n;o=H?r:I-n|0;t=0;u=16433;n=H?n+r|0:I}else if((L|0)==86){L=0;o=0;n=0;s=c[ba>>2]|0;while(1){p=c[s>>2]|0;if(!p)break;n=Ii(fa,p)|0;if((n|0)<0|n>>>0>(r-o|0)>>>0)break;o=n+o|0;if(r>>>0>o>>>0)s=s+4|0;else break}if((n|0)<0){m=-1;break a}Tj(e,32,K,o,I);if(!o){n=0;L=98}else{p=0;r=c[ba>>2]|0;while(1){n=c[r>>2]|0;if(!n){n=o;L=98;break g}n=Ii(fa,n)|0;p=n+p|0;if((p|0)>(o|0)){n=o;L=98;break g}if(!(c[e>>2]&32))hj(fa,n,e)|0;if(p>>>0>=o>>>0){n=o;L=98;break}else r=r+4|0}}}while(0);if((L|0)==98){L=0;Tj(e,32,K,n,I^8192);w=J;n=(K|0)>(n|0)?K:n;continue}if((L|0)==77){L=0;p=(r|0)>-1?o&-65537:o;o=ba;o=(c[o>>2]|0)!=0|(c[o+4>>2]|0)!=0;if((r|0)!=0|o){o=(o&1^1)+(U-n)|0;w=n;o=(r|0)>(o|0)?r:o;u=s;n=N}else{w=N;o=0;u=s;n=N}}s=n-w|0;o=(o|0)<(s|0)?s:o;r=t+o|0;n=(K|0)<(r|0)?r:K;Tj(e,32,n,r,p);if(!(c[e>>2]&32))hj(u,t,e)|0;Tj(e,48,n,r,p^65536);Tj(e,48,o,s,0);if(!(c[e>>2]&32))hj(w,s,e)|0;Tj(e,32,n,r,p^8192);w=J}h:do if((L|0)==245)if(!e)if(f){m=1;while(1){f=c[l+(m<<2)>>2]|0;if(!f)break;Rj(j+(m<<3)|0,f,g);m=m+1|0;if((m|0)>=10){m=1;break h}}if((m|0)<10)while(1){if(c[l+(m<<2)>>2]|0){m=-1;break h}m=m+1|0;if((m|0)>=10){m=1;break}}else m=1}else m=0;while(0);i=ha;return m|0}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;return Si(a,b,c)|0}function Nj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((cc[d&15](k,j)|0)>-1?(cc[d&15](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((cc[d&15](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1;while(0);Pj(b,o,e);i=p;return}function Oj(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(cc[d&15](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((cc[d&15](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((cc[d&15](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((cc[d&15](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){Pj(b,p,e);Nj(a,b,d,g,h)}i=r;return}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;ik(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;ik(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}while(0);i=h;return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;ik(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function Sj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295)while(1){e=qk(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e|48;e=pk(b|0,c|0,10,0)|0;if(c>>>0>9|(c|0)==9&b>>>0>4294967295){b=e;c=D}else{b=e;break}}if(b)while(1){d=d+-1|0;a[d>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return d|0}function Tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+256|0;h=j;do if((d|0)>(e|0)&(f&73728|0)==0){f=d-e|0;ek(h|0,b|0,(f>>>0>256?256:f)|0)|0;b=c[a>>2]|0;g=(b&32|0)==0;if(f>>>0>255){e=d-e|0;do{if(g){hj(h,256,a)|0;b=c[a>>2]|0}f=f+-256|0;g=(b&32|0)==0}while(f>>>0>255);if(g)f=e&255;else break}else if(!g)break;hj(h,f,a)|0}while(0);i=j;return}function Uj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[756]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[760]|0)>>>0)Da();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Da()}else c[756]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[758]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[760]|0)>>>0)Da();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[758]|0;break}else Da()}else{c[756]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[761]|0;d=k>>>3;b=d<<1;e=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(b>>>0<(c[760]|0)>>>0)Da();else{l=a;m=b}}else{c[756]=a|d;l=3064+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[758]=h;c[761]=i;M=j;return M|0}a=c[757]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[3328+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[760]|0;if(e>>>0>>0)Da();i=e+o|0;if(e>>>0>=i>>>0)Da();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(e|0))Da();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Da()}while(0);do if(h){b=c[e+28>>2]|0;a=3328+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[760]|0;if(n>>>0>>0)Da();c[n+24>>2]=h;b=c[e+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[758]|0;if(b){g=c[761]|0;d=b>>>3;b=d<<1;f=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{p=b;q=a}}else{c[756]=a|d;p=3064+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[758]=j;c[761]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[757]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[3328+(k<<2)>>2]|0;a:do if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v;if(!j){v=86;break}else{h=d;i=i<<1}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[3328+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[758]|0)-m|0)>>>0:0){f=c[760]|0;if(j>>>0>>0)Da();h=j+m|0;if(j>>>0>=h>>>0)Da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Da();b=e+12|0;if((c[b>>2]|0)!=(j|0))Da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Da()}while(0);do if(g){b=c[j+28>>2]|0;a=3328+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[760]|0;if(o>>>0>>0)Da();c[o+24>>2]=g;b=c[j+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[o+16>>2]=b;c[b+24>>2]=o;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}while(0);b:do if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{s=b;t=a}}else{c[756]=d|b;s=3064+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=3328+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b;while(0);b=y+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Da()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);d=c[758]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[761]|0;if(b>>>0>15){c[761]=a+q;c[758]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[758]=0;c[761]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[759]|0;if(a>>>0>q>>>0){L=a-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(c[874]|0)){a=$a(30)|0;if(!(a+-1&a)){c[876]=a;c[875]=a;c[877]=-1;c[878]=-1;c[879]=0;c[867]=0;c[874]=(Db(0)|0)&-16^1431655768;break}else Da()}while(0);j=q+48|0;i=c[876]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[866]|0;if((a|0)!=0?(t=c[864]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(c[867]&4)){a=c[762]|0;e:do if(a){f=3472;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[759]|0)&i;if(d>>>0<2147483647){f=Ua(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){g=Ua(0)|0;if((g|0)!=(-1|0)){a=g;d=c[875]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[864]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[866]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=Ua(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){g=0-d|0;do if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[876]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((Ua(u|0)|0)==(-1|0)){Ua(g|0)|0;break f}else{d=u+d|0;break}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}while(0);c[867]=c[867]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ua(l|0)|0,x=Ua(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[864]|0)+p|0;c[864]=a;if(a>>>0>(c[865]|0)>>>0)c[865]=a;h=c[762]|0;g:do if(h){g=3472;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[759]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[762]=h+L;c[759]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[763]=c[878];break}a=c[760]|0;if(w>>>0>>0){c[760]=w;a=w}d=w+p|0;g=3472;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=3472;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do if((b|0)!=(h|0)){if((b|0)==(c[761]|0)){M=(c[758]|0)+l|0;c[758]=M;c[761]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Da();a=f+12|0;if((c[a>>2]|0)!=(b|0))Da();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Da()}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=3328+(a<<2)|0;do if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[760]|0)>>>0)Da();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[757]=c[757]&~(1<>>0>>0)Da();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Da();else{c[J+16>>2]=a;c[a+24>>2]=J;break}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[760]|0)>>>0)Da();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=3064+(g<<1<<2)|0;do if((e|0)!=(d|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)==(b|0))break;Da()}while(0);if((f|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Da()}while(0);c[e+12>>2]=f;c[F>>2]=e}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0>=(c[760]|0)>>>0){K=b;L=a;break}Da()}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=3328+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=c[b>>2]|0;L=c[760]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Da()}else{M=(c[759]|0)+l|0;c[759]=M;c[762]=o;c[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else d=3472;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[762]=w+d;c[759]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[763]=c[878];d=a+4|0;c[d>>2]=27;c[b>>2]=c[868];c[b+4>>2]=c[869];c[b+8>>2]=c[870];c[b+12>>2]=c[871];c[868]=w;c[869]=p;c[871]=0;c[870]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{G=b;H=a}}else{c[756]=d|b;G=3064+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=3328+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[757]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b;while(0);b=I+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Da()}}else{M=c[760]|0;if((M|0)==0|w>>>0>>0)c[760]=w;c[868]=w;c[869]=p;c[871]=0;c[765]=c[874];c[764]=-1;b=0;do{M=b<<1;L=3064+(M<<2)|0;c[3064+(M+3<<2)>>2]=L;c[3064+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[762]=w+M;c[759]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[763]=c[878]}while(0);b=c[759]|0;if(b>>>0>q>>>0){L=b-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(qi()|0)>>2]=12;M=0;return M|0}function Vj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[760]|0;if(b>>>0>>0)Da();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Da();o=d&-8;q=a+(o+-8)|0;do if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Da();if((l|0)==(c[761]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[758]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)!=(l|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Da()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Da();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(l|0))Da();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Da()}while(0);if(h){b=c[a+(j+28)>>2]|0;d=3328+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Da();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Da();if(!(d&2)){if((q|0)==(c[762]|0)){t=(c[759]|0)+g|0;c[759]=t;c[762]=u;c[u+4>>2]=t|1;if((u|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){t=(c[758]|0)+g|0;c[758]=t;c[761]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();e=d+12|0;if((c[e>>2]|0)!=(q|0))Da();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Da()}while(0);if(h){b=c[a+(o+20)>>2]|0;d=3328+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[760]|0)>>>0)Da();if((c[e+12>>2]|0)!=(q|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0<(c[760]|0)>>>0)Da();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Da()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[761]|0)){c[758]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=3064+(d<<2)|0;e=c[756]|0;b=1<>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();else{r=b;s=d}}else{c[756]=e|b;r=3064+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=3328+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[757]|0;e=1<>2]|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[760]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Da()}else{c[757]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[764]|0)+-1|0;c[764]=u;if(!u)b=3480;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[764]=-1;return}function Wj(a,b){a=a|0;b=b|0;var d=0;if(a){d=$(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Uj(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;ek(b|0,0,d|0)|0;return b|0}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=Uj(b)|0;return a|0}if(b>>>0>4294967231){c[(qi()|0)>>2]=12;a=0;return a|0}d=Yj(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=Uj(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ik(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Vj(a);a=d;return a|0}function Yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[760]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Da();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Da();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[876]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;Zj(a+b|0,d);return a|0}if((l|0)==(c[762]|0)){d=(c[759]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[762]=a+b;c[759]=n;return a|0}if((l|0)==(c[761]|0)){e=(c[758]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[758]=d;c[761]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();d=f+12|0;if((c[d>>2]|0)!=(l|0))Da();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Da()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=3328+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(l|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Da()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;Zj(a+b|0,n);return a|0}return 0}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[760]|0;if(n>>>0>>0)Da();if((n|0)==(c[761]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[758]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(n|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Da()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(n|0))Da();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Da()}while(0);if(i){d=c[a+(28-k)>>2]|0;e=3328+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[760]|0;if(l>>>0>>0)Da();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do if(e)if(e>>>0>>0)Da();else{c[l+16>>2]=e;c[e+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[760]|0;if(q>>>0>>0)Da();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[762]|0)){s=(c[759]|0)+h|0;c[759]=s;c[762]=t;c[t+4>>2]=s|1;if((t|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){s=(c[758]|0)+h|0;c[758]=s;c[761]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(q|0))Da();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Da()}while(0);if(i){d=c[a+(b+28)>>2]|0;e=3328+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(q|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Da()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[761]|0)){c[758]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=3064+(e<<2)|0;f=c[756]|0;d=1<>2]|0;if(e>>>0<(c[760]|0)>>>0)Da();else{r=d;s=e}}else{c[756]=f|d;r=3064+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=3328+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[757]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[760]|0)>>>0)Da();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[760]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Da();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return} +function Ee(b,e,f,j,k,l,m,n,o,p,q,r){b=b|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=+q;r=r|0;var s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;T=i;i=i+240|0;x=T+224|0;w=T+216|0;C=T+208|0;B=T+200|0;s=T+136|0;N=T+72|0;P=T;Q=T+232|0;R=T+228|0;h[s>>3]=100.0;h[s+8>>3]=100.0;h[s+16>>3]=110.0;h[s+24>>3]=100.0;h[s+32>>3]=110.0;h[s+40>>3]=110.0;h[s+48>>3]=100.0;h[s+56>>3]=110.0;h[N>>3]=+h[p>>3];h[N+8>>3]=+h[p+8>>3];h[N+16>>3]=+h[p+16>>3];h[N+24>>3]=+h[p+24>>3];h[N+32>>3]=+h[p+32>>3];h[N+40>>3]=+h[p+40>>3];h[N+48>>3]=+h[p+48>>3];h[N+56>>3]=+h[p+56>>3];He(s,N,P);A=+h[N>>3];V=+h[N+16>>3];y=A-V;J=+h[N+8>>3];U=+h[N+24>>3];u=J-U;s=~~(y*y+u*u);u=+h[N+32>>3];y=+h[N+48>>3];X=u-y;v=+h[N+40>>3];z=+h[N+56>>3];W=v-z;N=~~(X*X+W*W);u=V-u;v=U-v;t=~~(u*u+v*v);A=y-A;J=z-J;O=~~(A*A+J*J);s=~~(+(((N|0)>(s|0)?N:s)|0)*q*q);t=~~(+(((O|0)>(t|0)?O:t)|0)*q*q);if(!b){p=f;while(1)if((p|0)<(j|0)&($(p,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s,s)|0)<(t|0))s=s<<1;else break}else{p=f;while(1)if((p|0)<(j|0)&($(p<<2,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s<<2,s)|0)<(t|0))s=s<<1;else break}O=(p|0)>(j|0)?j:p;M=(s|0)>(j|0)?j:s;L=(O|0)/(f|0)|0;K=(M|0)/(f|0)|0;u=(1.0-q)*.5*10.0;J=q*10.0;N=$(f,f)|0;a:do if(!e){I=N*3|0;p=Wj(I,4)|0;if(!p){Me(3,5472,B);rb(1)}do switch(n|0){case 0:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 1:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t+2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 2:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 3:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 4:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|3)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=d[k+(($(t,l)|0)+s)>>0]|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 6:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|3)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|1)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Z=$(t,l)|0;Y=(s&65534)+Z<<1;V=+((d[k+Y>>0]|0)+-128|0);X=+((d[k+(Y+2)>>0]|0)+-128|0);W=+((d[k+(Z+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;Z=~~(V*516.4110107421875+W)>>8;Y=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;t=~~(W+X*408.5830078125)>>8;Z=(Z|0)>0?Z:0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=((Z|0)<255?Z:255)+(c[s>>2]|0);Y=(Y|0)>0?Y:0;s=p+(b+1<<2)|0;c[s>>2]=((Y|0)<255?Y:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=p+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=$(t,l)|0;Y=(s&65534)+t<<1;V=+((d[k+(Y|1)>>0]|0)+-128|0);X=+((d[k+(Y+3)>>0]|0)+-128|0);W=+((d[k+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(W+V*516.4110107421875)>>8;t=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;Y=~~(W+X*408.5830078125)>>8;s=(s|0)>0?s:0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=p+(Z+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);Y=(Y|0)>0?Y:0;Z=p+(Z+2<<2)|0;c[Z>>2]=((Y|0)<255?Y:255)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<3&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&28|2)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<2&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&24|4)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(c[b>>2]|0)+((d[k+(Y|1)>>0]|0)&240|8);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<4&240|8)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&240|8)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}default:{Me(3,4615,C);S=278;break a}}while(0);t=$(K,L)|0;if(N){s=0;do{a[r+s>>0]=((c[p+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}while((s|0)<(I|0))}Vj(p);p=0}else{p=Wj(N,4)|0;if(!p){Me(3,5472,w);rb(1)}b:do if(n>>>0<2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=(($(t,l)|0)+s|0)*3|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y+1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y+2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}}else{if((n&-2|0)==2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y|2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}if((n&-3|0)==4){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|2)>>0]|0)+(d[k+(Y|1)>>0]|0)+(d[k+(Y|3)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}switch(n|0){case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<3&248|4)+(I&248|4)+(I<<5&224|Y>>>3&28|2)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<2&248|4)+(I&248|4)+(I<<5&224|Y>>>3&24|4)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((I<<4&240|8)+(I&240|8)+((d[k+(Y|1)>>0]|0)&240|8)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}default:{Me(3,4615,x);S=278;break a}}}while(0);s=$(K,L)|0;if(N){t=0;do{a[r+t>>0]=((c[p+(t<<2)>>2]|0)>>>0)/(s>>>0)|0;t=t+1|0}while((t|0)<(N|0))}Vj(p);p=0}while(0);if((S|0)==278){Vj(p);p=-1}i=T;return p|0}function Fe(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;p=v+24|0;o=v+8|0;u=v;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-1}else{c[o>>2]=0;t=e+-1|0;c[o+4>>2]=$(t,e)|0;r=$(e,e)|0;c[o+8>>2]=r+-1;c[o+12>>2]=t;n=a[b+(c[o>>2]|0)>>0]|0;m=(n&255)>0?n:0;n=(n&255)<255?n:-1;s=a[b+(c[o+4>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+8>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+12>>2]|0)>>0]|0;m=((s&255)>(m&255)?s:m)&255;n=((s&255)<(n&255)?s:n)&255;if((m-n|0)<30){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-2;break}q=(m+n|0)>>>1;a[p>>0]=(d[b+(c[o>>2]|0)>>0]|0)>>>0>>0&1;a[p+1>>0]=(d[b+(c[o+4>>2]|0)>>0]|0)>>>0>>0&1;a[p+2>>0]=(d[b+(c[o+8>>2]|0)>>0]|0)>>>0>>0&1;a[p+3>>0]=(d[b+(c[o+12>>2]|0)>>0]|0)>>>0>>0&1;n=0;while(1){m=n+1|0;if(((a[p+n>>0]|0)==1?(a[p+((m|0)%4|0)>>0]|0)==1:0)?(a[p+((n+2|0)%4|0)>>0]|0)==0:0){m=n;n=10;break}if((m|0)<4)n=m;else{n=12;break}}if((n|0)==10)c[g>>2]=m;else if((n|0)==12?(m|0)==4:0){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-3;break}if(!r)s=255;else{m=255;n=0;do{s=b+n|0;p=d[s>>0]|0;o=p-q|0;o=(o|0)<0?0-o|0:o;m=(o|0)<(m|0)?o:m;a[s>>0]=p>>>0>>0&1;n=n+1|0}while((n|0)<(r|0));s=m}switch(c[g>>2]|0){case 0:{if((e|0)>0){r=(e|0)==0;n=0;m=0;g=0;do{p=(g|0)==(t|0);q=$(g,e)|0;if(!r){o=0;do{if((o|g|0)!=0?!(p&((o|0)==0|(o|0)==(t|0))):0){n=fk(n|0,m|0,1)|0;n=(a[b+(o+q)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)!=(e|0))}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 1:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=0;do{p=(g|0)==0;q=(g|0)==(t|0);if(r){o=t;while(1){w=(o|0)==(t|0);if(!(p&w)?!(q&(w|(o|0)==0)):0){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 2:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){q=(g|0)==(t|0)|(g|0)==0;p=$(g,e)|0;if(r){o=t;while(1){if(!(q&(o|0)==(t|0)|(o|g|0)==0)){n=fk(n|0,m|0,1)|0;n=(a[b+(o+p)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}case 3:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){p=(g|0)==(t|0);q=(g|0)==0;if(r){o=0;do{if(!(p&(o|0)==0|(o|g|0)==0|q&(o|0)==(t|0))){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)<(e|0))}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}default:{n=0;m=0}}h[j>>3]=(s|0)>30?1.0:+(s|0)/30.0;switch(k|0){case 259:{w=a[4551+n>>0]|0;k=w<<24>>24;l=u;c[l>>2]=k;c[l+4>>2]=((k|0)<0)<<31>>31;if(w<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 515:{m=a[4423+n>>0]|0;k=m<<24>>24;w=u;c[w>>2]=k;c[w+4>>2]=((k|0)<0)<<31>>31;if(l)c[l>>2]=d[4487+n>>0];if(m<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 772:case 1028:{m=Ie(k,n,m,0,u)|0;if((m|0)<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}if((l|0)!=0&(m|0)>0)c[l>>2]=m;break}default:{w=u;c[w>>2]=n;c[w+4>>2]=m}}c[f>>2]=c[u>>2];m=0}while(0);i=v;return m|0}function Ge(a,b,e,f,g,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;l=C+8|0;n=C;a:do if(!a){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;b=-1}else switch(b|0){case 0:{o=$(f,f)|0;z=o*3|0;A=Uj(o*12|0)|0;if(!A){Me(3,5472,n);rb(1)}if(!o)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!o)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/(+(f|0)*1.7320508)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+12|0;x=a+16|0;if((v|0)>0){u=c[a+8>>2]|0;s=(o|0)==0;n=-1;t=0;m=0.0;l=-1;b=-1;do{b:while(1){n=n+1|0;switch(c[u+(n<<2)>>2]|0){case 0:break;case 2:break b;default:{B=17;break b}}}if((B|0)==17){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(s)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}t=t+1|0}while((t|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}case 1:{z=$(f,f)|0;A=Uj(z<<2)|0;if(!A){Me(3,5472,l);rb(1)}if(!z)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!z)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/+(f|0)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+20|0;x=a+24|0;if((v|0)>0){s=c[a+8>>2]|0;t=(z|0)==0;n=-1;u=0;m=0.0;l=-1;b=-1;do{c:while(1){n=n+1|0;switch(c[s+(n<<2)>>2]|0){case 0:break;case 2:break c;default:{B=37;break c}}}if((B|0)==37){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(t)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}u=u+1|0}while((u|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}default:{b=-1;break a}}while(0);i=C;return b|0}function He(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Re(8,8)|0;f=Re(8,1)|0;g=Re(8,1)|0;i=c[e>>2]|0;j=c[f>>2]|0;k=0;do{p=a+(k<<4)|0;l=k<<4;h[i+(l<<3)>>3]=+h[p>>3];o=a+(k<<4)+8|0;h[i+((l|1)<<3)>>3]=+h[o>>3];h[i+((l|2)<<3)>>3]=1.0;h[i+((l|3)<<3)>>3]=0.0;h[i+((l|4)<<3)>>3]=0.0;h[i+((l|5)<<3)>>3]=0.0;n=b+(k<<4)|0;h[i+((l|6)<<3)>>3]=-(+h[p>>3]*+h[n>>3]);h[i+((l|7)<<3)>>3]=-(+h[o>>3]*+h[n>>3]);h[i+((l|8)<<3)>>3]=0.0;h[i+((l|9)<<3)>>3]=0.0;h[i+((l|10)<<3)>>3]=0.0;h[i+((l|11)<<3)>>3]=+h[p>>3];h[i+((l|12)<<3)>>3]=+h[o>>3];h[i+((l|13)<<3)>>3]=1.0;m=b+(k<<4)+8|0;h[i+((l|14)<<3)>>3]=-(+h[p>>3]*+h[m>>3]);h[i+((l|15)<<3)>>3]=-(+h[o>>3]*+h[m>>3]);l=k<<1;h[j+(l<<3)>>3]=+h[n>>3];h[j+((l|1)<<3)>>3]=+h[m>>3];k=k+1|0}while((k|0)!=4);_e(e)|0;Xe(g,e,f)|0;p=c[g>>2]|0;h[d>>3]=+h[p>>3];h[d+8>>3]=+h[p+8>>3];h[d+16>>3]=+h[p+16>>3];p=c[g>>2]|0;h[d+24>>3]=+h[p+24>>3];h[d+32>>3]=+h[p+32>>3];h[d+40>>3]=+h[p+40>>3];p=c[g>>2]|0;h[d+48>>3]=+h[p+48>>3];h[d+56>>3]=+h[p+56>>3];h[d+64>>3]=1.0;We(e)|0;We(f)|0;We(g)|0;return}function Ie(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+2320|0;k=I+2304|0;y=I+864|0;u=I+784|0;H=I+704|0;w=I+624|0;v=I+548|0;G=I+40|0;E=I;switch(b|0){case 772:{g=9;j=1;l=3;break}case 1028:{g=5;j=2;l=3;break}case 2830:{A=900;s=1472;C=64;F=120;z=127;B=g;j=9;l=6;break}default:f=-1}if((l|0)==3){b=0;while(1){a[k+b>>0]=e&1;e=hk(e|0,f|0,1)|0;b=b+1|0;if((b|0)==13)break;else f=D}A=840;s=1408;C=g;F=13;z=15;B=k;l=6}do if((l|0)==6){r=j<<1;k=1;f=0;while(1){g=v+(k<<2)|0;c[g>>2]=0;b=0;e=0;do{if(a[B+e>>0]|0){b=b^c[A+((($(e,k)|0)%(z|0)|0)<<2)>>2];c[g>>2]=b}e=e+1|0}while((e|0)<(F|0));f=(b|0)==0?f:1;c[g>>2]=c[s+(b<<2)>>2];if((k|0)<(r|0))k=k+1|0;else break}x=(f|0)!=0;if(x){c[u>>2]=0;f=c[v+4>>2]|0;c[u+4>>2]=f;c[y>>2]=0;c[y+72>>2]=1;if((r|0)>1){b=1;do{c[y+(b<<2)>>2]=-1;c[y+72+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(r|0))}c[H>>2]=0;c[H+4>>2]=0;c[w>>2]=-1;c[w+4>>2]=0;p=0;q=0;while(1){g=q;q=q+1|0;o=u+(q<<2)|0;if((f|0)==-1){k=g+2|0;c[H+(k<<2)>>2]=p;if((p|0)<0)n=p;else{f=0;while(1){o=y+(q*72|0)+(f<<2)|0;n=c[o>>2]|0;c[y+(k*72|0)+(f<<2)>>2]=n;c[o>>2]=c[s+(n<<2)>>2];if((f|0)<(p|0))f=f+1|0;else{n=p;break}}}}else{b=g;while(1){f=(b|0)>0;if(f&(c[u+(b<<2)>>2]|0)==-1)b=b+-1|0;else break}if(f){e=b;do{f=e;e=e+-1|0;if((c[u+(e<<2)>>2]|0)!=-1)b=(c[w+(b<<2)>>2]|0)<(c[w+(e<<2)>>2]|0)?e:b}while((f|0)>1)}e=H+(b<<2)|0;m=q-b|0;n=m+(c[e>>2]|0)|0;k=g+2|0;n=(p|0)>(n|0)?p:n;c[H+(k<<2)>>2]=n;f=0;do{c[y+(k*72|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(r|0));f=c[e>>2]|0;e=u+(b<<2)|0;if((f|0)>=0){l=0;while(1){g=c[y+(b*72|0)+(l<<2)>>2]|0;if((g|0)!=-1)c[y+(k*72|0)+(m+l<<2)>>2]=c[A+(((g+z+(c[o>>2]|0)-(c[e>>2]|0)|0)%(z|0)|0)<<2)>>2];if((l|0)<(f|0))l=l+1|0;else break}}if((p|0)>=0){f=0;while(1){o=y+(q*72|0)+(f<<2)|0;m=c[o>>2]|0;l=y+(k*72|0)+(f<<2)|0;c[l>>2]=c[l>>2]^m;c[o>>2]=c[s+(m<<2)>>2];if((f|0)<(p|0))f=f+1|0;else break}}}c[w+(k<<2)>>2]=q-n;if((q|0)>=(r|0))break;f=c[v+(k<<2)>>2]|0;if((f|0)==-1)f=0;else f=c[A+(f<<2)>>2]|0;g=u+(k<<2)|0;c[g>>2]=f;if((n|0)>=1){e=1;while(1){b=c[v+(k-e<<2)>>2]|0;if((b|0)!=-1?(t=c[y+(k*72|0)+(e<<2)>>2]|0,(t|0)!=0):0){f=f^c[A+((((c[s+(t<<2)>>2]|0)+b|0)%(z|0)|0)<<2)>>2];c[g>>2]=f}if((e|0)<(n|0))e=e+1|0;else break}}f=c[s+(f<<2)>>2]|0;c[g>>2]=f;if((n|0)>(j|0))break;else p=n}if((n|0)>(j|0)){f=-1;break}if((n|0)>=0){f=0;while(1){w=y+(k*72|0)+(f<<2)|0;c[w>>2]=c[s+(c[w>>2]<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}if((n|0)>=1){f=1;while(1){c[E+(f<<2)>>2]=c[y+(k*72|0)+(f<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}l=(n|0)<1;f=0;m=1;do{if(l)b=1;else{j=1;b=1;while(1){e=E+(j<<2)|0;g=c[e>>2]|0;if((g|0)!=-1){y=(g+j|0)%(z|0)|0;c[e>>2]=y;b=c[A+(y<<2)>>2]^b}if((j|0)<(n|0))j=j+1|0;else break}}if(!b){c[G+(f<<2)>>2]=z-m;f=f+1|0}m=m+1|0}while((z|0)>=(m|0));if((f|0)!=(n|0)){f=-1;break}if((n|0)>0){f=0;do{E=B+(c[G+(f<<2)>>2]|0)|0;a[E>>0]=d[E>>0]^1;f=f+1|0}while((f|0)<(n|0))}}else k=0;b=h;c[b>>2]=0;c[b+4>>2]=0;b=1;e=0;g=0;j=0;f=F-C|0;while(1){G=ok(d[B+f>>0]|0,0,b|0,e|0)|0;g=gk(G|0,D|0,g|0,j|0)|0;j=D;G=h;c[G>>2]=g;c[G+4>>2]=j;b=fk(b|0,e|0,1)|0;f=f+1|0;if((f|0)>=(F|0))break;else e=D}if(x)f=c[H+(k<<2)>>2]|0;else f=0}while(0);i=I;return f|0}function Je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=i;i=i+32|0;z=A+24|0;g=A+16|0;d=A+8|0;do if(a){if(!b){Me(3,4674,d);d=-1;break}y=a+8|0;f=c[a+4>>2]|0;a:do if((f|0)>0){e=c[y>>2]|0;d=0;do{if(!(c[e+(d<<2)>>2]|0))break a;d=d+1|0}while((d|0)<(f|0))}else d=0;while(0);if((d|0)!=(f|0)){x=Aj(b)|0;if(!x){Me(3,4719,g);d=-1;break}r=a+28|0;s=d<<2;t=a+12|0;u=a+20|0;v=a+16|0;w=a+24|0;f=Gj(x,4742)|0;e=0;b:while(1){q=e+s|0;p=0;b=0;do{n=(p|0)==0;o=(p|0)==2;g=c[r>>2]|0;if((g|0)>0){m=0;do{if((g|0)>0){l=0;do{if(!f){e=17;break b}g=qj(f)|0;f=Gj(0,4742)|0;g=255-g|0;k=((($(c[r>>2]|0,m)|0)+l|0)*3|0)+p|0;c[(c[(c[t>>2]|0)+(q<<2)>>2]|0)+(k<<2)>>2]=g;k=($(c[r>>2]|0,m)|0)+l|0;j=c[(c[u>>2]|0)+(q<<2)>>2]|0;k=j+(k<<2)|0;if(!n){c[k>>2]=(c[k>>2]|0)+g;if(o){k=j+(($(c[r>>2]|0,m)|0)+l<<2)|0;c[k>>2]=(c[k>>2]|0)/3|0}}else c[k>>2]=g;b=g+b|0;l=l+1|0;g=c[r>>2]|0}while((l|0)<(g|0))}m=m+1|0}while((m|0)<(g|0))}p=p+1|0}while((p|0)<3);g=c[r>>2]|0;l=(b|0)/($(g*3|0,g)|0)|0;if(($(g*3|0,g)|0)>0){j=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=0;b=0;do{p=j+(k<<2)|0;g=(c[p>>2]|0)-l|0;c[p>>2]=g;b=($(g,g)|0)+b|0;k=k+1|0;g=c[r>>2]|0}while((k|0)<($(g*3|0,g)|0))}else b=0;B=+P(+(+(b|0)));h[(c[v>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;if(!($(g,g)|0))b=0;else{g=c[(c[u>>2]|0)+(q<<2)>>2]|0;j=0;b=0;do{o=g+(j<<2)|0;p=(c[o>>2]|0)-l|0;c[o>>2]=p;b=($(p,p)|0)+b|0;j=j+1|0;p=c[r>>2]|0}while((j|0)<($(p,p)|0))}B=+P(+(+(b|0)));h[(c[w>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;e=e+1|0;if((e|0)>=4){e=32;break}}if((e|0)==17){Me(3,4747,z);Vj(x);d=-1;break}else if((e|0)==32){Vj(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Me(3,4649,A);d=-1}while(0);i=A;return d|0}function Ke(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;h=k+8|0;e=k;g=_i(d,4854)|0;do if(g){dj(g,0,2)|0;e=gj(g)|0;dj(g,0,0)|0;f=Uj(e+1|0)|0;if(!f){Me(3,5472,h);Wi(g)|0;e=-1;break}h=aj(f,e,1,g)|0;Wi(g)|0;if(!h){c[j>>2]=d;Me(3,4820,j);Vj(f);e=-1;break}else{a[f+e>>0]=0;e=Je(b,f)|0;Vj(f);break}}else{c[e>>2]=d;Me(3,4774,e);e=-1}while(0);i=k;return e|0}function Le(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;f=j;c[h>>2]=0;if(((d|0)!=0&(c[496]|0)<=(b|0)?(a[d>>0]|0)!=0:0)?(c[f>>2]=e,g=lj(h,d,f)|0,(g|0)>-1):0){f=c[497]|0;do if(f){if(!(c[498]|0)){Wb[f&15](c[h>>2]|0);break}e=gb()|0;b=c[500]|0;if((e|0)==(c[499]|0)){if((b|0)>0){Wb[f&15](c[502]|0);c[500]=0;f=c[497]|0}Wb[f&15](c[h>>2]|0);break}f=c[501]|0;if((b|0)<(f|0)){d=(c[502]|0)+b|0;if((g|0)<(-3-b+f|0)){yj(d,c[h>>2]|0)|0;c[500]=(c[500]|0)+g;break}else{a[d>>0]=46;a[d+1>>0]=46;a[d+2>>0]=46;a[d+3>>0]=0;c[500]=c[501];break}}}else $i(c[h>>2]|0,c[659]|0)|0;while(0);Vj(c[h>>2]|0)}i=j;return}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0;i=0;do{d=a+(i<<5)|0;e=a+(i<<5)+8|0;f=a+(i<<5)+16|0;g=0;do{h[c+(i<<5)+(g<<3)>>3]=+h[d>>3]*+h[b+(g<<3)>>3]+ +h[e>>3]*+h[b+32+(g<<3)>>3]+ +h[f>>3]*+h[b+64+(g<<3)>>3];g=g+1|0}while((g|0)!=4);g=c+(i<<5)+24|0;h[g>>3]=+h[a+(i<<5)+24>>3]+ +h[g>>3];i=i+1|0}while((i|0)!=3);return 0}function Oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Re(4,4)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[d+(k<<3)>>3]=+h[a+(i<<5)>>3];h[e+(1+k<<3)>>3]=+h[a+(i<<5)+8>>3];h[f+(2+k<<3)>>3]=+h[a+(i<<5)+16>>3];h[g+(3+k<<3)>>3]=+h[a+(i<<5)+24>>3];i=i+1|0}while((i|0)!=3);d=c[j>>2]|0;e=d+96|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[d+120>>3]=1.0;_e(j)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[b+(i<<5)>>3]=+h[d+(k<<3)>>3];h[b+(i<<5)+8>>3]=+h[e+(1+k<<3)>>3];h[b+(i<<5)+16>>3]=+h[f+(2+k<<3)>>3];h[b+(i<<5)+24>>3]=+h[g+(3+k<<3)>>3];i=i+1|0}while((i|0)!=3);We(j)|0;return 0}function Pe(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Qe(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Ej(c,47)|0;if(!f){a[b>>0]=0;break}f=f+((e|0)!=0&1)-c|0;if((f+1|0)>>>0<=d>>>0){Dj(b,c,f)|0;a[b+f>>0]=0}else b=0}else b=0;while(0);return b|0}function Re(a,b){a=a|0;b=b|0;var d=0,e=0;d=Uj(12)|0;do if(d){e=Uj($(a<<3,b)|0)|0;c[d>>2]=e;if(!e){Vj(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Se(a){a=a|0;var b=0;b=Re(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Ve(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Te(a,b){a=a|0;b=b|0;var d=0;d=Re(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Xe(d,a,b)|0)<0){We(d)|0;d=0}}else d=0;return d|0}function Ue(a){a=a|0;var b=0;b=Re(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($e(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;d=c[a+4>>2]|0;if((d|0)==(c[b+4>>2]|0)?(j=c[a+8>>2]|0,(j|0)==(c[b+8>>2]|0)):0)if((d|0)>0){e=(j|0)>0;l=0;do{f=$(j,l)|0;if(e){g=c[b>>2]|0;i=c[a>>2]|0;k=0;do{m=f+k|0;h[i+(m<<3)>>3]=+h[g+(m<<3)>>3];k=k+1|0}while((k|0)<(j|0))}l=l+1|0}while((l|0)<(d|0));d=0}else d=0;else d=-1;return d|0}function We(a){a=a|0;if(a){Vj(c[a>>2]|0);Vj(a)}return 0}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+8>>2]|0;if(((n|0)==(c[d+4>>2]|0)?(r=c[a+4>>2]|0,(r|0)==(c[b+4>>2]|0)):0)?(o=c[a+8>>2]|0,(o|0)==(c[d+8>>2]|0)):0){s=(o|0)>0?o:0;if((r|0)>0){p=(o|0)>0;q=(n|0)>0;k=c[a>>2]|0;m=0;while(1){a=$(n,m)|0;if(p){f=0;l=k;while(1){h[l>>3]=0.0;if(q){e=0.0;g=0;i=(c[b>>2]|0)+(a<<3)|0;j=(c[d>>2]|0)+(f<<3)|0;while(1){e=e+ +h[i>>3]*+h[j>>3];h[l>>3]=e;g=g+1|0;if((g|0)>=(n|0))break;else{i=i+8|0;j=j+(o<<3)|0}}}f=f+1|0;if((f|0)>=(o|0))break;else l=l+8|0}}m=m+1|0;if((m|0)>=(r|0)){a=0;break}else k=k+(s<<3)|0}}else a=0}else a=-1;return a|0}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0;q=c[a+4>>2]|0;s=c[a+8>>2]|0;f=(q|0)<(s|0)?q:s;a:do if(((((!((q|0)<2|(s|0)<2)?(c[b+8>>2]|0)==(s|0):0)?(c[b+4>>2]|0)==(f|0):0)?(t=d+4|0,(c[t>>2]|0)==(f|0)):0)?(g=e+4|0,(c[g>>2]|0)==(s|0)):0)?(u=Se(a)|0,(u|0)!=0):0){r=+P(+(+(q|0)));o=c[u+4>>2]|0;p=c[u+8>>2]|0;if(!((o|0)<1|(p|0)<1)?(c[g>>2]|0)==(p|0):0){if(p){f=c[e>>2]|0;a=0;do{h[f+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)!=(p|0))}n=c[u>>2]|0;if(o){f=(p|0)==0;a=0;j=n;while(1){if(!f){g=0;k=j;l=c[e>>2]|0;while(1){h[l>>3]=+h[k>>3]+ +h[l>>3];g=g+1|0;if((g|0)==(p|0))break;else{k=k+8|0;l=l+8|0}}}a=a+1|0;if((a|0)==(o|0))break;else j=j+(p<<3)|0}}i=+(o|0);if(p){f=c[e>>2]|0;a=0;do{m=f+(a<<3)|0;h[m>>3]=+h[m>>3]/i;a=a+1|0}while((a|0)!=(p|0))}l=(p|0)>0?p:0;if((o|0)>0){f=(p|0)>0;a=0;j=n;while(1){if(f){g=0;k=j;m=c[e>>2]|0;while(1){h[k>>3]=+h[k>>3]-+h[m>>3];g=g+1|0;if((g|0)>=(p|0))break;else{k=k+8|0;m=m+8|0}}}a=a+1|0;if((a|0)>=(o|0))break;else j=j+(l<<3)|0}}f=$(s,q)|0;if((f|0)>0){a=0;do{e=n+(a<<3)|0;h[e>>3]=+h[e>>3]/r;a=a+1|0}while((a|0)<(f|0))}f=Ze(u,b,d)|0;We(u)|0;j=c[t>>2]|0;if((j|0)>0){a=c[d>>2]|0;g=0;i=0.0;do{i=i+ +h[a+(g<<3)>>3];g=g+1|0}while((g|0)<(j|0))}else i=0.0;if((j|0)<=0)break;a=c[d>>2]|0;g=0;while(1){d=a+(g<<3)|0;h[d>>3]=+h[d>>3]/i;g=g+1|0;if((g|0)>=(j|0))break a}}We(u)|0;f=-1}else f=-1;while(0);return f|0}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;U=i;i=i+16|0;w=U;F=a+4|0;I=c[F>>2]|0;J=a+8|0;K=c[J>>2]|0;S=(K|0)<(I|0)?K:I;a:do if(((!((I|0)<2|(K|0)<2)?(R=b+8|0,(c[R>>2]|0)==(K|0)):0)?(L=b+4|0,(c[L>>2]|0)==(S|0)):0)?(M=d+4|0,(c[M>>2]|0)==(S|0)):0){T=Re(S,S)|0;N=T+4|0;if((c[N>>2]|0)==(S|0)?(Q=T+8|0,(c[Q>>2]|0)==(S|0)):0){G=(I|0)<(K|0);s=c[F>>2]|0;t=c[J>>2]|0;if(G){if((S|0)!=(s|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){m=(S|0)==0;j=(t|0)>0;n=0;r=g;while(1){l=$(n,t)|0;if(!m){p=0;s=r;while(1){if((p|0)>=(n|0)){e=c[a>>2]|0;h[s>>3]=0.0;if(j){k=0.0;o=e+(l<<3)|0;e=e+(($(p,t)|0)<<3)|0;f=0;while(1){k=k+ +h[o>>3]*+h[e>>3];h[s>>3]=k;f=f+1|0;if((f|0)>=(t|0))break;else{o=o+8|0;e=e+8|0}}}}else h[s>>3]=+h[g+(($(p,S)|0)+n<<3)>>3];p=p+1|0;if((p|0)==(S|0))break;else s=s+8|0}}n=n+1|0;if((n|0)>=(S|0))break;else r=r+(S<<3)|0}}}else{if((S|0)!=(t|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){l=(S|0)==0;j=(s|0)>0;m=0;p=g;while(1){if(!l){o=0;r=p;while(1){if((o|0)>=(m|0)){e=c[a>>2]|0;h[r>>3]=0.0;if(j){k=0.0;n=e+(m<<3)|0;e=e+(o<<3)|0;f=0;while(1){k=k+ +h[n>>3]*+h[e>>3];h[r>>3]=k;f=f+1|0;if((f|0)>=(s|0))break;else{n=n+(S<<3)|0;e=e+(S<<3)|0}}}}else h[r>>3]=+h[g+(($(o,S)|0)+m<<3)>>3];o=o+1|0;if((o|0)==(S|0))break;else r=r+8|0}}m=m+1|0;if((m|0)>=(S|0))break;else p=p+(S<<3)|0}}}do if(((S|0)>=2?(c[M>>2]|0)==(S|0):0)?(H=nf(S)|0,(H|0)!=0):0){E=S+-1|0;c[w+4>>2]=E;c[w>>2]=(c[H>>2]|0)+8;if((rf(T,d,w)|0)<0){of(H)|0;break}B=c[H>>2]|0;h[B>>3]=0.0;if((E|0)>0){C=(S|0)==0;D=E;do{f=D;while(1){if((f|0)<=0)break;v=+O(+(+h[B+(f<<3)>>3]));e=f+-1|0;A=c[d>>2]|0;x=+O(+(+h[A+(e<<3)>>3]));if(v>(x+ +O(+(+h[A+(f<<3)>>3])))*1.0e-06)f=e;else break}y=D;D=D+-1|0;b:do if((f|0)!=(y|0)){o=B+(y<<3)|0;p=B+(f+1<<3)|0;r=(f|0)<(y|0);z=0;do{if((z|0)>99)break b;z=z+1|0;s=c[d>>2]|0;t=s+(D<<3)|0;w=s+(y<<3)|0;k=+h[w>>3];q=(+h[t>>3]-k)*.5;u=+h[o>>3];u=u*u;v=+P(+(u+q*q));if(r){A=f;q=+h[s+(f<<3)>>3]-k+u/(q+(q<0.0?-v:v));u=+h[p>>3];while(1){k=+O(+q);do if(!(k>=+O(+u))){v=-q/u;x=1.0/+P(+(v*v+1.0));v=v*x}else{if(!(k>1.0e-16)){v=1.0;x=0.0;break}k=-u/q;x=1.0/+P(+(k*k+1.0));v=x;x=k*x}while(0);j=s+(A<<3)|0;X=+h[j>>3];n=A;A=A+1|0;l=s+(A<<3)|0;W=+h[l>>3];k=X-W;m=B+(A<<3)|0;V=x*(x*k+v*2.0*+h[m>>3]);h[j>>3]=X-V;h[l>>3]=W+V;if((n|0)>(f|0)){l=B+(n<<3)|0;h[l>>3]=v*+h[l>>3]-u*x}X=+h[m>>3];h[m>>3]=X+x*(v*k-x*2.0*X);j=$(n,S)|0;l=$(A,S)|0;if(C)k=u;else{e=c[T>>2]|0;g=0;do{Z=e+(g+j<<3)|0;q=+h[Z>>3];Y=e+(g+l<<3)|0;k=+h[Y>>3];h[Z>>3]=v*q-x*k;h[Y>>3]=x*q+v*k;g=g+1|0}while((g|0)!=(S|0))}if((n|0)<(D|0)){q=+h[m>>3];Z=B+(n+2<<3)|0;k=+h[Z>>3];h[Z>>3]=v*k;k=-(x*k)}if((A|0)>=(y|0))break;else u=k}}W=+O(+(+h[o>>3]));X=+O(+(+h[t>>3]))}while(W>(X+ +O(+(+h[w>>3])))*1.0e-06)}while(0)}while((y|0)>1)}if(E){l=c[d>>2]|0;m=c[T>>2]|0;n=(S|0)==0;o=0;do{g=l+(o<<3)|0;q=+h[g>>3];j=o;o=o+1|0;if((o|0)<(S|0)){e=j;f=o;k=q;do{X=+h[l+(f<<3)>>3];Z=X>k;k=Z?X:k;e=Z?f:e;f=f+1|0}while((f|0)<(S|0))}else{e=j;k=q}h[l+(e<<3)>>3]=q;h[g>>3]=k;if(!n){g=0;f=m+(($(e,S)|0)<<3)|0;e=m+(($(j,S)|0)<<3)|0;while(1){X=+h[f>>3];h[f>>3]=+h[e>>3];h[e>>3]=X;g=g+1|0;if((g|0)==(S|0))break;else{f=f+8|0;e=e+8|0}}}}while((o|0)!=(E|0))}of(H)|0;c:do if(!G){g=c[b>>2]|0;p=(I|0)>(K|0)?K:I;d:do if((S|0)>0){m=c[d>>2]|0;n=(p|0)==0;e=0;o=c[T>>2]|0;do{if(+h[m+(e<<3)>>3]<1.0e-16)break d;if(!n){f=0;j=o;l=g;while(1){h[l>>3]=+h[j>>3];f=f+1|0;if((f|0)==(p|0))break;else{j=j+8|0;l=l+8|0}}}o=o+(p<<3)|0;g=g+(p<<3)|0;e=e+1|0}while((e|0)<(S|0))}else e=0;while(0);n=(p|0)>0?p:0;if((e|0)<(S|0)){l=c[d>>2]|0;m=(S|0)>0;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(S|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(S|0))break;else g=g+(n<<3)|0}}}else{w=c[F>>2]|0;t=c[J>>2]|0;do if(!((w|0)<1|(t|0)<1)){if((c[N>>2]|0)!=(w|0))break;if((c[Q>>2]|0)!=(w|0))break;if((c[L>>2]|0)!=(w|0))break;if((c[R>>2]|0)!=(t|0))break;if((c[M>>2]|0)!=(w|0))break;f=c[b>>2]|0;e:do if((w|0)>0){p=c[d>>2]|0;s=(t|0)==0;r=(w|0)==0;e=0;do{k=+h[p+(e<<3)>>3];if(k<1.0e-16)break e;q=1.0/+P(+(+O(+k)));m=$(e,w)|0;if(!s){n=0;o=f;while(1){if(r)k=0.0;else{g=0;j=(c[T>>2]|0)+(m<<3)|0;l=(c[a>>2]|0)+(n<<3)|0;k=0.0;while(1){k=k+ +h[j>>3]*+h[l>>3];g=g+1|0;if((g|0)==(w|0))break;else{j=j+8|0;l=l+(t<<3)|0}}}h[o>>3]=q*k;n=n+1|0;if((n|0)==(t|0))break;else o=o+8|0}}f=f+(t<<3)|0;e=e+1|0}while((e|0)<(w|0))}else e=0;while(0);n=(t|0)>0?t:0;if((e|0)>=(w|0))break c;l=c[d>>2]|0;m=(t|0)>0;g=f;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(t|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(w|0))break c;else g=g+(n<<3)|0}}while(0);We(T)|0;e=-1;break a}while(0);We(T)|0;e=0;break a}while(0);We(T)|0;e=-1;break}We(T)|0;e=-1}else e=-1;while(0);i=U;return e|0}function _e(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;v=i;i=i+2e3|0;u=v;b=c[a>>2]|0;t=c[a+4>>2]|0;a:do if((t|0)<=500){switch(t|0){case 0:{b=0;break a}case 1:{h[b>>3]=1.0/+h[b>>3];break a}default:{}}if((t|0)>0){a=0;do{c[u+(a<<2)>>2]=a;a=a+1|0}while((a|0)<(t|0))}s=b+(t+-1<<3)|0;if((t|0)>0){m=(t|0)==0;p=(t|0)==1;o=(t|0)==0;n=(t|0)==1;q=s;a=0;r=0;while(1){l=b+(($(r,t)|0)<<3)|0;if((r|0)<(t|0)){e=r;f=0.0;d=l;while(1){w=+O(+(+h[d>>3]));k=f=(t|0))break;else d=d+(t<<3)|0}}else f=0.0;if(f<=1.0e-10){b=0;break a}g=u+(a<<2)|0;j=c[g>>2]|0;k=u+(r<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;if(!m){d=0;e=b+(($(a,t)|0)<<3)|0;g=l;while(1){w=+h[e>>3];h[e>>3]=+h[g>>3];h[g>>3]=w;d=d+1|0;if((d|0)==(t|0))break;else{e=e+8|0;g=g+8|0}}}f=+h[l>>3];if(!p){d=1;e=l;do{k=e;e=e+8|0;h[k>>3]=+h[e>>3]/f;d=d+1|0}while((d|0)!=(t|0))}h[q>>3]=1.0/f;if(!o){g=0;j=s;while(1){if((g|0)!=(r|0)){d=b+(($(g,t)|0)<<3)|0;f=+h[d>>3];if(!n){k=1;e=l;while(1){x=d;d=d+8|0;h[x>>3]=+h[d>>3]-f*+h[e>>3];k=k+1|0;if((k|0)==(t|0))break;else e=e+8|0}}h[j>>3]=-(f*+h[q>>3])}g=g+1|0;if((g|0)==(t|0))break;else j=j+(t<<3)|0}}r=r+1|0;if((r|0)>=(t|0))break;else q=q+(t<<3)|0}}if((t|0)>0){g=(t|0)>0;j=0;do{a=u+(j<<2)|0;b:do if((j|0)<(t|0)){d=j;do{if((c[a>>2]|0)==(j|0))break b;d=d+1|0;a=u+(d<<2)|0}while((d|0)<(t|0))}else d=j;while(0);c[a>>2]=c[u+(j<<2)>>2];if(g){e=0;a=b+(d<<3)|0;d=b+(j<<3)|0;while(1){w=+h[a>>3];h[a>>3]=+h[d>>3];h[d>>3]=w;e=e+1|0;if((e|0)>=(t|0))break;else{a=a+(t<<3)|0;d=d+(t<<3)|0}}}j=j+1|0}while((j|0)<(t|0))}}else b=0;while(0);i=v;return ((b|0)==0)<<31>>31|0}function $e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;if((i|0)==(c[b+8>>2]|0)?(k=c[a+8>>2]|0,(k|0)==(c[b+4>>2]|0)):0){l=(k|0)>0?k:0;if((i|0)>0){j=(k|0)>0;e=c[a>>2]|0;g=0;while(1){if(j){a=0;d=(c[b>>2]|0)+(g<<3)|0;f=e;while(1){h[f>>3]=+h[d>>3];a=a+1|0;if((a|0)>=(k|0))break;else{d=d+(i<<3)|0;f=f+8|0}}}g=g+1|0;if((g|0)>=(i|0)){a=0;break}else e=e+(l<<3)|0}}else a=0}else a=-1;return a|0}function af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0;f=+(b|0)/+(c[a>>2]|0);g=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;do{h[e+8+(b<<3)>>3]=f*+h[a+8+(b<<3)>>3];h[e+40+(b<<3)>>3]=g*+h[a+40+(b<<3)>>3];h[e+72+(b<<3)>>3]=+h[a+72+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=c[a+176>>2]|0;switch(b|0){case 4:{h[e+104>>3]=+h[a+104>>3];h[e+112>>3]=+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=f*+h[a+136>>3];h[e+144>>3]=g*+h[a+144>>3];h[e+152>>3]=f*+h[a+152>>3];h[e+160>>3]=g*+h[a+160>>3];h[e+168>>3]=+h[a+168>>3];i=8;break}case 3:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=+h[a+136>>3]/(f*g);h[e+144>>3]=+h[a+144>>3]/(g*(f*f*g));i=8;break}case 2:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);h[e+136>>3]=+h[a+136>>3]/(g*(f*f*g));i=8;break}case 1:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);i=8;break}default:b=-1}if((i|0)==8){c[e+176>>2]=b;b=0}return b|0}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0.0;f=i;i=i+96|0;e=f;if(!(+h[a+88>>3]>=0.0)){d=0;do{h[e+(d<<5)>>3]=-+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=-+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=-+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=-+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}else{d=0;do{h[e+(d<<5)>>3]=+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}h[b>>3]=0.0;h[b+8>>3]=0.0;h[b+16>>3]=0.0;h[b+24>>3]=0.0;h[b+32>>3]=0.0;h[b+40>>3]=0.0;h[b+48>>3]=0.0;h[b+56>>3]=0.0;h[b+64>>3]=0.0;h[b+72>>3]=0.0;h[b+80>>3]=0.0;h[b+88>>3]=0.0;g=+h[e+64>>3];o=+h[e+72>>3];p=+h[e+80>>3];x=+P(+(g*g+o*o+p*p));a=b+80|0;h[a>>3]=x;x=g/x;v=c+64|0;h[v>>3]=x;o=o/+h[a>>3];t=c+72|0;h[t>>3]=o;p=p/+h[a>>3];q=c+80|0;h[q>>3]=p;n=c+88|0;h[n>>3]=+h[e+88>>3]/+h[a>>3];g=+h[e+32>>3];k=+h[e+40>>3];s=+h[e+48>>3];p=x*g+o*k+p*s;m=b+48|0;h[m>>3]=p;g=g-p*+h[v>>3];k=k-p*+h[t>>3];p=s-p*+h[q>>3];s=+P(+(g*g+k*k+p*p));l=b+40|0;h[l>>3]=s;w=c+32|0;h[w>>3]=g/s;u=c+40|0;h[u>>3]=k/+h[l>>3];r=c+48|0;h[r>>3]=p/+h[l>>3];p=+h[e>>3];k=+h[e+8>>3];s=+h[e+16>>3];g=+h[v>>3]*p+ +h[t>>3]*k+ +h[q>>3]*s;d=b+16|0;h[d>>3]=g;o=+h[w>>3]*p+ +h[u>>3]*k+ +h[r>>3]*s;j=b+8|0;h[j>>3]=o;p=p-o*+h[w>>3]-g*+h[v>>3];k=k-o*+h[u>>3]-g*+h[t>>3];g=s-o*+h[r>>3]-g*+h[q>>3];o=+P(+(p*p+k*k+g*g));h[b>>3]=o;h[c>>3]=p/o;h[c+8>>3]=k/+h[b>>3];h[c+16>>3]=g/+h[b>>3];g=+h[n>>3];k=(+h[e+56>>3]-+h[m>>3]*g)/+h[l>>3];h[c+56>>3]=k;h[c+24>>3]=(+h[e+24>>3]-k*+h[j>>3]-+h[d>>3]*g)/+h[b>>3];d=0;do{w=b+(d<<5)|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+8|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+16|0;h[w>>3]=+h[w>>3]/+h[a>>3];d=d+1|0}while((d|0)!=3);i=f;return 0}function cf(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;switch(f|0){case 4:{q=+h[a>>3];r=+h[a+8>>3];s=+h[a+16>>3];t=+h[a+24>>3];y=+h[a+32>>3];v=+h[a+40>>3];w=+h[a+48>>3];x=+h[a+56>>3];u=+h[a+64>>3];p=(b-w)/y;j=(c-x)/v;c=p*p;i=j*j;k=s*2.0;l=t*6.0;m=t*2.0;n=s*6.0;a:do if(i!=0.0|c!=0.0){f=1;g=p;b=j;while(1){C=i+c;B=q*C+1.0+C*(r*C);z=c*3.0;A=i*z;g=g-(t*(C+c*2.0)+(b*(k*g)+g*B)-p)/(l*g+(k*b+(q*(i+z)+1.0+r*(i*i+(c*(c*5.0)+A)))));z=m*g;b=b-(s*(i*2.0+C)+b*B+b*z-j)/(n*b+(q*(c+i*3.0)+1.0+r*(i*(i*5.0)+(c*c+A)))+z);if((f|0)==4)break a;c=g*g;i=b*b;if(!(i!=0.0|c!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);h[d>>3]=w+y*g/u;h[e>>3]=x+v*b/u;f=0;break}case 3:{p=+h[a>>3];g=(b-p)/+h[a+24>>3];o=a+8|0;b=c-+h[o>>3];j=+h[a+32>>3]/1.0e8;k=+h[a+40>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;b:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break b;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 2:{p=+h[a>>3];g=b-p;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;k=+h[a+32>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;c:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break c;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 1:{m=+h[a>>3];g=b-m;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;c=g*g+b*b;k=+P(+c);l=j*3.0;d:do if(k!=0.0){f=1;i=k;while(1){C=i-(i*(1.0-j*c)-k)/(1.0-l*c);g=g*C/i;b=b*C/i;if((f|0)==3)break d;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+m;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}default:f=-1}return f|0}function df(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;switch(f|0){case 4:{j=+h[a+16>>3];k=+h[a+24>>3];n=+h[a+32>>3];l=+h[a+40>>3];o=+h[a+48>>3];m=+h[a+56>>3];i=+h[a+64>>3];b=(b-o)*i/n;i=(c-m)*i/l;g=b*b+i*i;c=+h[a>>3]*g+1.0+g*(+h[a+8>>3]*g);h[d>>3]=o+n*(k*(b*(b*2.0)+g)+(j*2.0*b*i+b*c));h[e>>3]=m+l*(k*2.0*b*i+(j*(g+i*(i*2.0))+i*c));f=0;break}case 3:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+32>>3]/1.0e8)-o*(o*(+h[a+40>>3]/1.0e8/1.0e5));h[d>>3]=i+ +h[a+24>>3]*(g*o);b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 2:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+24>>3]/1.0e8)-o*(o*(+h[a+32>>3]/1.0e8/1.0e5));h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 1:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=1.0-(g*g+b*b)*(+h[a+24>>3]/1.0e8);h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}default:f=-1}return f|0}function ef(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=i;i=i+256|0;n=s+232|0;m=s+224|0;l=s+216|0;k=s+208|0;j=s+200|0;g=s+192|0;f=s+184|0;p=s+240|0;q=s;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=_i(a,4854)|0;if(!r){r=qi()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Me(3,4857,f);a=ri(c[r>>2]|0)|0;c[g>>2]=5367;c[g+4>>2]=a;Me(3,5361,g);a=-1;break}dj(r,0,2)|0;a:do if(!(Xi(r)|0)){g=gj(r)|0;jj(r);a=0;do{if((a|0)>=4){o=9;break}f=c[2012+(a<<3)+4>>2]|0;a=a+1|0}while(((g|0)%(f|0)|0|0)!=0);do if((o|0)==9)if((a|0)==4){Me(3,4971,l);a=-1;break a}else{f=c[2012+(0<<3)+4>>2]|0;a=0;break}while(0);if((aj(q,f,1,r)|0)!=1){a=qi()|0;c[m>>2]=c[a>>2];Me(3,5051,m);a=ri(c[a>>2]|0)|0;c[n>>2]=5367;c[n+4>>2]=a;Me(3,5361,n);a=-1;break}l=q+176|0;c[l>>2]=a;ff(q);m=(a|0)==1;n=q+120|0;if(m){t=+h[n>>3];k=q+128|0;h[n>>3]=+h[k>>3];h[k>>3]=t}else k=q+128|0;ik(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;if((b|0)>1){j=1;while(1){e=(c[p>>2]|0)+(4-1)&~(4-1);g=c[e>>2]|0;c[p>>2]=e+4;c[g+176>>2]=c[f>>2];if((aj(q,c[2012+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[l>>2]=a;ff(q);if(m){t=+h[n>>3];h[n>>3]=+h[k>>3];h[k>>3]=t}ik(g|0,q|0,184)|0;j=j+1|0;if((j|0)>=(b|0)){a=0;break}}}else a=0}else{a=qi()|0;c[j>>2]=c[a>>2];Me(3,4926,j);a=ri(c[a>>2]|0)|0;c[k>>2]=5367;c[k+4>>2]=a;Me(3,5361,k);a=-1}while(0);Wi(r)|0}else a=-1;while(0);i=s;return a|0}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+192|0;f=g;hf(a,f);hf(a+4|0,f+4|0);b=0;do{gf(a+8+(b<<5)|0,f+8+(b<<5)|0);gf(a+8+(b<<5)+8|0,f+8+(b<<5)+8|0);gf(a+8+(b<<5)+16|0,f+8+(b<<5)+16|0);gf(a+8+(b<<5)+24|0,f+8+(b<<5)+24|0);b=b+1|0}while((b|0)!=3);d=a+176|0;e=0;do{gf(a+104+(e<<3)|0,f+104+(e<<3)|0);e=e+1|0;b=c[d>>2]|0}while((e|0)<(c[2012+(b+-1<<3)>>2]|0));c[f+176>>2]=b;ik(a|0,f|0,184)|0;i=g;return}function gf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+7>>0]|0;a[c+1>>0]=a[b+6>>0]|0;a[c+2>>0]=a[b+5>>0]|0;a[c+3>>0]=a[b+4>>0]|0;a[c+4>>0]=a[b+3>>0]|0;a[c+5>>0]=a[b+2>>0]|0;a[c+6>>0]=a[b+1>>0]|0;a[c+7>>0]=a[b>>0]|0;return}function hf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+3>>0]|0;a[c+1>>0]=a[b+2>>0]|0;a[c+2>>0]=a[b+1>>0]|0;a[c+3>>0]=a[b>>0]|0;return}function jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=i;i=i+64|0;t=x+24|0;u=x+16|0;v=x+8|0;w=x;q=Uj(208)|0;if(!q){Me(3,5472,x+32|0);rb(1)}ik(q|0,a|0,184)|0;s=b<<1;r=(c[a>>2]|0)+s|0;c[q+192>>2]=r;s=(c[a+4>>2]|0)+s|0;c[q+196>>2]=s;c[q+200>>2]=b;c[q+204>>2]=b;d=$(r<<3,s)|0;e=Uj(d)|0;c[q+184>>2]=e;if(!e){Me(3,5472,x+40|0);rb(1)}d=Uj(d)|0;c[q+188>>2]=d;if(!d){Me(3,5472,x+48|0);rb(1)}p=a+104|0;m=c[a+176>>2]|0;n=(r|0)>0?r<<1:0;if((s|0)>0){o=(r|0)>0;l=0;while(1){f=+(l-b|0);if(o){a=0;j=e;k=d;while(1){y=+(a-b|0);df(p,y,f,v,w,m)|0;g[j>>2]=+h[v>>3];g[j+4>>2]=+h[w>>3];cf(p,y,f,t,u,m)|0;g[k>>2]=+h[t>>3];g[k+4>>2]=+h[u>>3];a=a+1|0;if((a|0)>=(r|0))break;else{j=j+8|0;k=k+8|0}}}d=d+(n<<2)|0;l=l+1|0;if((l|0)>=(s|0))break;else e=e+(n<<2)|0}}i=x;return q|0}function kf(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){Vj(c[b+184>>2]|0);Vj(c[(c[a>>2]|0)+188>>2]|0);Vj(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function lf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function mf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a+4>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function nf(a){a=a|0;var b=0,d=0;b=Uj(8)|0;do if(b){d=Uj(a<<3)|0;c[b>>2]=d;if(!d){Vj(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function of(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function pf(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,g=0;b=+P(+(+qf(a,a)));if(b!=0.0){f=c[a>>2]|0;e=+h[f>>3];b=e<0.0?-b:b;e=e+b;h[f>>3]=e;e=1.0/+P(+(e*b));a=c[a+4>>2]|0;if((a|0)>0){d=0;do{g=f+(d<<3)|0;h[g>>3]=e*+h[g>>3];d=d+1|0}while((d|0)<(a|0))}}return +-b}function qf(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))rb(0);if((f|0)>0){e=c[a>>2]|0;a=c[b>>2]|0;b=0;d=0.0;do{d=d+ +h[e+(b<<3)>>3]*+h[a+(b<<3)>>3];b=b+1|0}while((b|0)<(f|0))}else d=0.0;return +d}function rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+8|0;D=E;w=c[a+8>>2]|0;if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){z=w+-2|0;A=C+4|0;B=D+4|0;if((w|0)>2){s=w+-1|0;t=0;do{o=$(t,w)|0;p=c[a>>2]|0;h[(c[b>>2]|0)+(t<<3)>>3]=+h[p+(o+t<<3)>>3];k=w-t+-1|0;c[A>>2]=k;u=t;t=t+1|0;l=p+(o+t<<3)|0;c[C>>2]=l;r=+pf(C);h[(c[d>>2]|0)+(u<<3)>>3]=r;if(!(r==0.0)){if((t|0)<(w|0)){m=c[b>>2]|0;n=t;do{if((t|0)<(n|0)){e=c[a>>2]|0;f=t;j=0.0;do{r=+h[e+(($(f,w)|0)+n<<3)>>3];j=j+r*+h[p+(f+o<<3)>>3];f=f+1|0}while((f|0)<(n|0))}else j=0.0;e=$(n,w)|0;if((n|0)<(w|0)){f=c[a>>2]|0;g=n;do{j=j+ +h[f+(g+e<<3)>>3]*+h[p+(g+o<<3)>>3];g=g+1|0}while((g|0)<(w|0))}h[m+(n<<3)>>3]=j;n=n+1|0}while((n|0)<(w|0))}c[B>>2]=k;c[A>>2]=k;c[C>>2]=l;c[D>>2]=(c[b>>2]|0)+(t<<3);j=+qf(C,D)*.5;if((s|0)>(u|0)){e=c[b>>2]|0;k=s;do{q=+h[p+(k+o<<3)>>3];f=e+(k<<3)|0;r=+h[f>>3]-j*q;h[f>>3]=r;f=$(k,w)|0;if((k|0)<(w|0)){g=c[a>>2]|0;l=k;do{n=g+(l+f<<3)|0;h[n>>3]=+h[n>>3]-(q*+h[e+(l<<3)>>3]+r*+h[p+(l+o<<3)>>3]);l=l+1|0}while((l|0)<(w|0))}k=k+-1|0}while((k|0)>(u|0))}}}while((t|0)<(z|0))}if((w|0)<=1){if((w|0)>0){f=0;g=c[a>>2]|0;e=c[b>>2]|0;v=27}}else{v=$(z,w)|0;g=c[a>>2]|0;e=c[b>>2]|0;h[e+(z<<3)>>3]=+h[g+(v+z<<3)>>3];f=w+-1|0;h[(c[d>>2]|0)+(z<<3)>>3]=+h[g+(f+v<<3)>>3];v=27}if((v|0)==27)h[e+(f<<3)>>3]=+h[g+(($(f,w)|0)+f<<3)>>3];if((w|0)>0){m=(w|0)>0;p=w;do{d=p;p=p+-1|0;n=$(p,w)|0;o=c[a>>2]|0;if((d|0)<=(z|0)?(x=w-p+-1|0,y=o+(n+d<<3)|0,(d|0)<(w|0)):0){e=(d|0)<(w|0);k=d;do{c[B>>2]=x;c[A>>2]=x;c[C>>2]=y;f=$(k,w)|0;c[D>>2]=(c[a>>2]|0)+(f+d<<3);j=+qf(C,D);if(e){g=c[a>>2]|0;l=d;do{v=g+(l+f<<3)|0;h[v>>3]=+h[v>>3]-j*+h[o+(l+n<<3)>>3];l=l+1|0}while((l|0)<(w|0))}k=k+1|0}while((k|0)<(w|0))}if(m){e=0;do{h[o+(e+n<<3)>>3]=0.0;e=e+1|0}while((e|0)<(w|0))}h[o+(n+p<<3)>>3]=1.0}while((d|0)>1);e=0}else e=0}else e=-1;i=E;return e|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[c>>3];g=+h[c+8>>3];e=+h[c+16>>3];d=+h[b+88>>3]+(f*+h[b+64>>3]+g*+h[b+72>>3]+e*+h[b+80>>3]);if(d==0.0)c=-1;else{i=+h[b+56>>3]+(f*+h[b+32>>3]+g*+h[b+40>>3]+e*+h[b+48>>3]);h[a>>3]=(+h[b+24>>3]+(f*+h[b>>3]+g*+h[b+8>>3]+e*+h[b+16>>3]))/d;h[a+8>>3]=i/d;c=0}return c|0}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;B=i;i=i+1072|0;y=B+1056|0;x=B+768|0;w=B+192|0;A=B+48|0;z=B;K=+h[d>>3];F=+h[e>>3];s=K*F;J=+h[d+8>>3];t=e+8|0;E=+h[t>>3];v=J*E;j=+h[d+16>>3];G=+h[e+16>>3];l=j*G;m=+h[d+24>>3];I=+h[d+32>>3];H=+h[d+40>>3];n=E*H;k=+h[d+48>>3];o=G*k;p=+h[d+56>>3];D=+h[d+64>>3];C=+h[d+72>>3];q=E*C;f=+h[d+80>>3];r=G*f;g=+h[d+88>>3];h[x>>3]=s;h[x+8>>3]=K*E;h[x+16>>3]=K*G;h[x+24>>3]=F*J;h[x+32>>3]=v;h[x+40>>3]=G*J;h[x+48>>3]=F*j;h[x+56>>3]=E*j;h[x+64>>3]=l;h[x+72>>3]=K;h[x+80>>3]=J;h[x+88>>3]=j;j=F*I;h[x+96>>3]=j;h[x+104>>3]=E*I;h[x+112>>3]=G*I;h[x+120>>3]=F*H;h[x+128>>3]=n;h[x+136>>3]=G*H;h[x+144>>3]=F*k;h[x+152>>3]=E*k;h[x+160>>3]=o;h[x+168>>3]=I;h[x+176>>3]=H;h[x+184>>3]=k;k=D*F;h[x+192>>3]=k;h[x+200>>3]=E*D;h[x+208>>3]=G*D;h[x+216>>3]=F*C;E=+h[t>>3];h[x+224>>3]=C*E;h[x+232>>3]=G*C;h[x+240>>3]=F*f;h[x+248>>3]=E*f;h[x+256>>3]=r;h[x+264>>3]=D;h[x+272>>3]=C;h[x+280>>3]=f;e=w+64|0;d=w;t=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+72|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+104>>3]=1.0;e=w+160|0;d=w+112|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+240|0;d=w+168|0;t=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+296|0;d=w+248|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+304|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+336>>3]=1.0;e=w+456|0;d=w+344|0;t=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+512|0;d=w+464|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+568|0;d=w+520|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;u=0;do{t=0;do{d=A+(u*48|0)+(t<<3)|0;h[d>>3]=0.0;f=0.0;e=0;do{f=f+ +h[x+(u*96|0)+(e<<3)>>3]*+h[w+(e*48|0)+(t<<3)>>3];e=e+1|0}while((e|0)!=12);h[d>>3]=f;t=t+1|0}while((t|0)!=6);u=u+1|0}while((u|0)!=3);J=m+(s+v+l);K=p+(j+n+o);f=g+(k+q+r);g=+h[b>>3];j=+h[b+8>>3];k=+h[b+16>>3];l=+h[b+24>>3]+(J*g+K*j+f*k);m=+h[b+32>>3];n=+h[b+40>>3];o=+h[b+48>>3];p=+h[b+56>>3]+(J*m+K*n+f*o);q=+h[b+64>>3];r=+h[b+72>>3];s=+h[b+80>>3];f=+h[b+88>>3]+(J*q+K*r+f*s);if(f==0.0){Me(3,5089,y);e=-1}else{K=f*f;h[z>>3]=(g*f-l*q)/K;h[z+8>>3]=(f*j-l*r)/K;h[z+16>>3]=(f*k-l*s)/K;h[z+24>>3]=(f*m-p*q)/K;h[z+32>>3]=(f*n-p*r)/K;h[z+40>>3]=(f*o-p*s)/K;d=0;do{f=+h[z+(d*24|0)>>3];g=+h[z+(d*24|0)+8>>3];j=+h[z+(d*24|0)+16>>3];e=0;do{y=a+(d*48|0)+(e<<3)|0;h[y>>3]=0.0;K=f*+h[A+(e<<3)>>3]+0.0;h[y>>3]=K;K=K+g*+h[A+48+(e<<3)>>3];h[y>>3]=K;h[y>>3]=K+j*+h[A+96+(e<<3)>>3];e=e+1|0}while((e|0)!=6);d=d+1|0}while((d|0)!=2);e=0}i=B;return e|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j+24|0;g=j+12|0;f=j;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;b=Ue(f)|0;do if(b){a=Te(b,f)|0;if(!a){We(b)|0;d=-1;break}d=Te(b,g)|0;if(!d){We(b)|0;We(a)|0;d=-1;break}if((_e(a)|0)<0){We(b)|0;We(a)|0;We(d)|0;d=-1;break}else{Xe(h,a,d)|0;We(b)|0;We(a)|0;We(d)|0;d=0;break}}else d=-1;while(0);i=j;return d|0}function vf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;n=i;i=i+192|0;l=n+96|0;m=n;g=+h[b>>3];k=+h[b+8>>3];d=+h[b+16>>3];c=g*g+k*k+d*d;if(c==0.0){j=0.0;e=0.0;d=1.0;c=0.0}else{c=+P(+c);j=c;e=d/c;d=g/c;c=k/c}u=+h[b+24>>3];r=+h[b+32>>3];k=+h[b+40>>3];o=+R(+j);g=1.0-o;j=+S(+j);h[l>>3]=o+d*d*g;t=c*d*g;s=e*j;h[l+8>>3]=t-s;q=d*e*g;p=c*j;h[l+16>>3]=q+p;h[l+24>>3]=u;h[l+32>>3]=t+s;h[l+40>>3]=o+c*c*g;c=c*e*g;j=d*j;h[l+48>>3]=c-j;h[l+56>>3]=r;h[l+64>>3]=q-p;h[l+72>>3]=c+j;h[l+80>>3]=o+e*e*g;h[l+88>>3]=k;f=0;do{c=+h[a+(f<<5)>>3];d=+h[a+(f<<5)+8>>3];e=+h[a+(f<<5)+16>>3];b=0;do{h[m+(f<<5)+(b<<3)>>3]=c*+h[l+(b<<3)>>3]+d*+h[l+32+(b<<3)>>3]+e*+h[l+64+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=m+(f<<5)+24|0;h[b>>3]=+h[a+(f<<5)+24>>3]+ +h[b>>3];f=f+1|0}while((f|0)!=3);b=0;do{h[a+(b<<5)>>3]=+h[m+(b<<5)>>3];h[a+(b<<5)+8>>3]=+h[m+(b<<5)+8>>3];h[a+(b<<5)+16>>3]=+h[m+(b<<5)+16>>3];h[a+(b<<5)+24>>3]=+h[m+(b<<5)+24>>3];b=b+1|0}while((b|0)!=3);i=n;return 0}function wf(a){a=a|0;var b=0,d=0;b=Uj(136)|0;if(!b)b=0;else{d=0;do{h[b+(d<<5)>>3]=+h[a+(d<<5)>>3];h[b+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[b+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[b+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3);c[b+96>>2]=10;h[b+104>>3]=.10000000149011612;h[b+112>>3]=.9900000095367432;h[b+120>>3]=4.0;h[b+128>>3]=.5}return b|0}function xf(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{Vj(b);c[a>>2]=0;b=0}return b|0}function yf(a,b){a=a|0;b=+b;if(!a)a=-1;else{h[a+128>>3]=b;a=0}return a|0}function zf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=i;i=i+176|0;l=y+168|0;k=y+160|0;u=y+48|0;w=y+64|0;v=y;s=b+8|0;g=c[s>>2]|0;do if((g|0)>=3){x=Uj(g*96|0)|0;if(!x){Me(3,5109,k);g=-1;break}t=Uj(g<<4)|0;if(!t){Me(3,5109,l);Vj(x);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);q=b+4|0;l=u+8|0;d=a+104|0;n=a+120|0;o=a+112|0;p=a+96|0;m=0.0;r=0;a:while(1){Ne(a,e,w)|0;g=c[s>>2]|0;if((g|0)>0){j=0.0;k=0;do{if((sf(u,w,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=10;break a}g=c[b>>2]|0;A=+h[g+(k<<4)>>3]-+h[u>>3];z=+h[g+(k<<4)+8>>3]-+h[l>>3];j=j+(A*A+z*z);g=k<<1;h[t+(g<<3)>>3]=A;h[t+((g|1)<<3)>>3]=z;k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}else j=0.0;j=j/+(g|0);if(j<+h[d>>3]){k=24;break}if(((r|0)>0?j<+h[n>>3]:0)?j/m>+h[o>>3]:0){k=24;break}if((r|0)==(c[p>>2]|0)){k=24;break}if((g|0)>0){k=0;do{if((tf(x+(k*12<<3)|0,a,e,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=20;break a}k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}if((uf(v,t,x,g<<1)|0)<0){k=22;break}vf(e,v)|0;m=j;r=r+1|0}if((k|0)==10){Af(x,t);g=-1;break}else if((k|0)==20){Af(x,t);g=-1;break}else if((k|0)==22){Af(x,t);g=-1;break}else if((k|0)==24){h[f>>3]=j;Vj(x);Vj(t);g=0;break}}else g=-1;while(0);i=y;return g|0}function Af(a,b){a=a|0;b=b|0;Vj(a);Vj(b);return}function Bf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+192|0;n=G+184|0;m=G+176|0;l=G+168|0;g=G+160|0;B=G+48|0;D=G+64|0;C=G;A=b+8|0;k=c[A>>2]|0;do if((k|0)>=4){o=~~(+(k|0)*+h[a+128>>3])+-1|0;o=(o|0)<3?3:o;F=Uj(k*96|0)|0;if(!F){Me(3,5109,g);g=-1;break}E=Uj(k<<4)|0;if(!E){Me(3,5109,l);Vj(F);g=-1;break}g=k<<3;z=Uj(g)|0;if(!z){Me(3,5109,m);Vj(F);Vj(E);g=-1;break}y=Uj(g)|0;if(!y){Me(3,5109,n);Vj(F);Vj(E);Vj(z);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);w=b+4|0;x=B+8|0;n=y+(o<<3)|0;d=a+104|0;o=a+120|0;t=a+112|0;u=a+96|0;r=0.0;v=0;a:while(1){Ne(a,e,D)|0;g=c[A>>2]|0;if((g|0)>0){k=0;do{if((sf(B,D,(c[w>>2]|0)+(k*24|0)|0)|0)<0){k=14;break a}g=c[b>>2]|0;q=+h[g+(k<<4)>>3]-+h[B>>3];s=+h[g+(k<<4)+8>>3]-+h[x>>3];g=k<<1;h[E+(g<<3)>>3]=q;h[E+((g|1)<<3)>>3]=s;s=q*q+s*s;h[y+(k<<3)>>3]=s;h[z+(k<<3)>>3]=s;k=k+1|0;g=c[A>>2]|0}while((k|0)<(g|0))}rj(y,g,8,1);s=+h[n>>3]*4.0;s=s<16.0?16.0:s;k=c[A>>2]|0;q=s/6.0;if((k|0)>0){j=0.0;g=0;do{p=+h[y+(g<<3)>>3];if(p>s)p=q;else{p=1.0-p/s;p=q*(1.0-p*(p*p))}j=j+p;g=g+1|0}while((g|0)<(k|0))}else j=0.0;j=j/+(k|0);if(j<+h[d>>3]){k=36;break}if(((v|0)>0?j<+h[o>>3]:0)?j/r>+h[t>>3]:0){k=36;break}if((v|0)==(c[u>>2]|0)){k=36;break}if((k|0)>0){m=0;g=0;do{p=+h[z+(m<<3)>>3];if(p<=s){k=g*6|0;l=F+(k<<3)|0;if((tf(l,a,e,(c[w>>2]|0)+(m*24|0)|0)|0)<0){k=28;break a}r=1.0-p/s;r=r*r;h[l>>3]=+h[l>>3]*r;l=F+((k|1)<<3)|0;h[l>>3]=+h[l>>3]*r;l=F+(k+2<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+3<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+4<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+5<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+6<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+7<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+8<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+9<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+10<<3)|0;h[l>>3]=r*+h[l>>3];k=F+(k+11<<3)|0;h[k>>3]=r*+h[k>>3];k=m<<1;h[E+(g<<3)>>3]=r*+h[E+(k<<3)>>3];h[E+(g+1<<3)>>3]=r*+h[E+((k|1)<<3)>>3];k=c[A>>2]|0;g=g+2|0}m=m+1|0}while((m|0)<(k|0))}else g=0;if((g|0)<6){k=32;break}if((uf(C,E,F,g)|0)<0){k=34;break}vf(e,C)|0;r=j;v=v+1|0}if((k|0)==14){Cf(F,E,z,y);g=-1;break}else if((k|0)==28){Cf(F,E,z,y);g=-1;break}else if((k|0)==32){Cf(F,E,z,y);g=-1;break}else if((k|0)==34){Cf(F,E,z,y);g=-1;break}else if((k|0)==36){h[f>>3]=j;Vj(F);Vj(E);Vj(z);Vj(y);g=0;break}}else g=-1;while(0);i=G;return g|0}function Cf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vj(a);Vj(b);Vj(c);Vj(d);return}function Df(a,b){a=a|0;b=b|0;var c=0.0;c=+h[a>>3]-+h[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0;U=i;i=i+64|0;D=U+48|0;z=U+40|0;y=U+32|0;x=U+24|0;u=U+16|0;o=U+8|0;l=U;a:do if((e|0)>=4){g=0;while(1){if((g|0)>=(e|0))break;if(+h[d+(g*24|0)+16>>3]!=0.0){g=-1;break a}else g=g+1|0}if((((((((!(+h[a>>3]==0.0)?!(+h[a+32>>3]!=0.0):0)?(B=a+40|0,!(+h[B>>3]==0.0)):0)?!(+h[a+64>>3]!=0.0):0)?!(+h[a+72>>3]!=0.0):0)?!(+h[a+80>>3]!=1.0):0)?!(+h[a+24>>3]!=0.0):0)?!(+h[a+56>>3]!=0.0):0)?!(+h[a+88>>3]!=0.0):0){g=e<<1;C=Re(g,8)|0;if(!C){Me(3,5124,l);g=-1;break}w=Re(g,1)|0;if(!w){We(C)|0;Me(3,5150,o);g=-1;break}if(e){g=c[C>>2]|0;l=c[w>>2]|0;o=0;do{Z=d+(o*24|0)|0;V=o<<4;h[g+(V<<3)>>3]=+h[Z>>3];Y=d+(o*24|0)+8|0;h[g+((V|1)<<3)>>3]=+h[Y>>3];h[g+((V|2)<<3)>>3]=1.0;h[g+((V|3)<<3)>>3]=0.0;h[g+((V|4)<<3)>>3]=0.0;h[g+((V|5)<<3)>>3]=0.0;X=b+(o<<4)|0;h[g+((V|6)<<3)>>3]=-(+h[Z>>3]*+h[X>>3]);h[g+((V|7)<<3)>>3]=-(+h[Y>>3]*+h[X>>3]);h[g+((V|8)<<3)>>3]=0.0;h[g+((V|9)<<3)>>3]=0.0;h[g+((V|10)<<3)>>3]=0.0;h[g+((V|11)<<3)>>3]=+h[Z>>3];h[g+((V|12)<<3)>>3]=+h[Y>>3];h[g+((V|13)<<3)>>3]=1.0;W=b+(o<<4)+8|0;h[g+((V|14)<<3)>>3]=-(+h[Z>>3]*+h[W>>3]);h[g+((V|15)<<3)>>3]=-(+h[Y>>3]*+h[W>>3]);V=o<<1;h[l+(V<<3)>>3]=+h[X>>3];h[l+((V|1)<<3)>>3]=+h[W>>3];o=o+1|0}while((o|0)!=(e|0))}e=Ue(C)|0;if(!e){We(C)|0;We(w)|0;Me(3,5176,u);g=-1;break}o=Te(e,C)|0;if(!o){We(C)|0;We(w)|0;We(e)|0;Me(3,5202,x);g=-1;break}l=Te(e,w)|0;if(!l){We(C)|0;We(w)|0;We(e)|0;We(o)|0;Me(3,5228,y);g=-1;break}if((_e(o)|0)<0){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5254,z);g=-1;break}g=Te(o,l)|0;if(!g){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5280,D);g=-1;break}Z=c[g>>2]|0;p=+h[Z+48>>3];S=+h[a+48>>3];t=+h[B>>3];j=(+h[Z+24>>3]-p*S)/t;s=+h[a+16>>3];T=+h[a+8>>3];r=+h[a>>3];q=(+h[Z>>3]-p*s-j*T)/r;k=+h[Z+56>>3];m=(+h[Z+32>>3]-S*k)/t;n=(+h[Z+8>>3]-s*k-T*m)/r;t=(+h[Z+40>>3]-S)/t;r=(+h[Z+16>>3]-s-T*t)/r;We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;We(g)|0;T=+P(+(p*p+(j*j+q*q)));s=+P(+(k*k+(m*m+n*n)));q=q/T;j=j/T;p=p/T;n=n/s;m=m/s;k=k/s;s=(T+s)*.5;r=r/s;T=1.0/s;if(T<0.0){O=-j;k=-k;m=-m;p=-p;n=-n;Q=-q;S=-r;R=-T}else{O=j;Q=q;S=r;R=t/s}j=k*O-m*p;q=n*p-k*Q;r=m*Q-n*O;s=+P(+(r*r+(j*j+q*q)));do if(!(s==0.0)){t=j/s;q=q/s;j=r/s;N=k*p+(m*O+n*Q);N=N<0.0?-N:N;N=(+P(+(N+1.0))+ +P(+(1.0-N)))*.5;if(Q*q-O*t!=0.0){g=0;E=Q;v=O;F=p;I=t;H=q}else{Z=Q*j-p*t!=0.0;g=Z?1:2;E=Z?Q:p;v=Z?p:O;F=Z?O:Q;I=Z?t:j;H=Z?j:q;j=Z?q:t}r=E*H;s=v*I;q=r-s;if(q==0.0){q=O;j=Q;break}G=(v*j-F*H)/q;A=N*H/q;r=s-r;q=(E*j-F*I)/r;r=N*I/r;s=G*G+q*q+1.0;t=G*A+q*r;v=t*t-s*(A*A+r*r+-1.0);if(v<0.0){q=O;j=Q;break}M=+P(+v);L=(M-t)/s;F=A+G*L;K=r+q*L;M=(-t-M)/s;G=A+G*M;r=r+q*M;Z=(g|0)==1;q=Z?H:j;s=Z?j:H;J=Z?L:K;L=Z?K:L;K=Z?M:r;H=Z?r:M;Z=(g|0)==2&(Z^1);r=Z?I:q;q=Z?q:I;M=Z?L:F;L=Z?F:L;j=Z?H:G;I=Z?G:H;if(n*s-m*q!=0.0){g=0;E=n;v=m;F=k;H=q;A=s}else{Z=n*r-k*q!=0.0;g=Z?1:2;E=Z?n:k;v=Z?k:m;F=Z?m:n;H=Z?q:r;A=Z?r:s;r=Z?s:q}s=E*A;t=v*H;q=s-t;if(q==0.0){q=O;j=Q;break}G=(v*r-F*A)/q;A=N*A/q;q=t-s;v=(E*r-F*H)/q;q=N*H/q;r=G*G+v*v+1.0;s=G*A+v*q;t=s*s-r*(A*A+q*q+-1.0);if(t<0.0){q=O;j=Q;break}t=+P(+t);k=(t-s)/r;Q=A+G*k;O=q+v*k;t=(-s-t)/r;p=A+G*t;n=q+v*t;Z=(g|0)==1;m=Z?k:O;k=Z?O:k;v=Z?t:n;t=Z?n:t;Z=(g|0)==2&(Z^1);n=Z?k:Q;k=Z?Q:k;A=Z?t:p;t=Z?p:t;p=L*k+(J*m+M*n);p=p<0.0?-p:p;q=L*t+(J*v+M*A);q=q<0.0?-q:q;r=I*k+(K*m+j*n);r=r<0.0?-r:r;s=I*t+(K*v+j*A);s=s<0.0?-s:s;if(p>3]=j;h[f+32>>3]=q;h[f+64>>3]=p;h[f+8>>3]=n;h[f+40>>3]=m;h[f+72>>3]=k;h[f+16>>3]=M/Q;h[f+48>>3]=N/Q;h[f+80>>3]=O/Q;h[f+24>>3]=S;h[f+56>>3]=R;h[f+88>>3]=T;g=0}else g=-1}else g=-1;while(0);i=U;return g|0}function Ff(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function Gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,0))}function Hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,1))}function If(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+208|0;z=F+200|0;y=F+192|0;A=F+96|0;B=F;C=e+4|0;p=c[C>>2]|0;q=e+112|0;r=e+120|0;if((p|0)>0){u=c[e>>2]|0;v=(d|0)>0;w=(d|0)>0;x=0;do{if(!(c[u+(x*320|0)+4>>2]|0)){if(v){k=c[u+(x*320|0)>>2]|0;l=0;j=-1;do{if((c[b+(l<<8)+8>>2]|0)==(k|0)?(n=+h[b+(l<<8)+40>>3],!(n<+h[q>>3])):0)if(!((j|0)!=-1?!(+h[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{l=u+(x*320|0)+312|0;m=u+(x*320|0)|0;if(w){o=0;j=-1;do{k=c[b+(o<<8)+12>>2]|0;if((k|0)==0?(t=b+(o<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=l;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)E=20}else if((k|0)==(c[m>>2]|0))E=20;if((E|0)==20){E=0;g=+h[b+(o<<8)+48>>3];if(!(g<+h[r>>3]))if(!((j|0)!=-1?!(+h[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}x=x+1|0}while((x|0)<(p|0))}if((p|0)>0){q=0;j=0;p=0;k=0;while(1){l=c[e>>2]|0;m=c[l+(q*320|0)+304>>2]|0;do if((m|0)<0)l=p;else{o=b+(m<<8)|0;if(+ke(a,o,+h[l+(q*320|0)+8>>3],B)>4.0){c[(c[e>>2]|0)+(q*320|0)+304>>2]=-1;l=b+(m<<8)+236|0;if(c[l>>2]|0){l=p;break}c[l>>2]=7;l=p;break}l=c[o>>2]|0;if((k|0)==0|(p|0)<(l|0)){j=0;do{h[A+(j<<5)>>3]=+h[B+(j<<5)>>3];h[A+(j<<5)+8>>3]=+h[B+(j<<5)+8>>3];h[A+(j<<5)+16>>3]=+h[B+(j<<5)+16>>3];h[A+(j<<5)+24>>3]=+h[B+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3);j=q}else l=p;k=k+1|0}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=l}}else{j=0;k=0}do if((k|0)!=0?(k|0)>=(c[e+128>>2]|0):0){Ne(A,(c[e>>2]|0)+(j*320|0)+112|0,B)|0;p=k<<2;r=Uj(k<<6)|0;if(!r){Me(3,5472,y);rb(1)}q=Uj(k*96|0)|0;if(!q){Me(3,5472,z);rb(1)}l=c[C>>2]|0;if((l|0)>0){m=c[e>>2]|0;o=0;j=0;do{k=c[m+(o*320|0)+304>>2]|0;if((k|0)>=0){y=c[b+(k<<8)+16>>2]|0;d=(4-y|0)%4|0;z=j<<3;h[r+(z<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|1)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(5-y|0)%4|0;h[r+((z|2)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|3)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(6-y|0)%4|0;h[r+((z|4)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|5)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];y=(7-y|0)%4|0;h[r+((z|6)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)>>3];h[r+((z|7)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)+8>>3];z=j*12|0;h[q+(z<<3)>>3]=+h[m+(o*320|0)+208>>3];h[q+((z|1)<<3)>>3]=+h[m+(o*320|0)+216>>3];h[q+((z|2)<<3)>>3]=+h[m+(o*320|0)+224>>3];h[q+((z|3)<<3)>>3]=+h[m+(o*320|0)+232>>3];h[q+(z+4<<3)>>3]=+h[m+(o*320|0)+240>>3];h[q+(z+5<<3)>>3]=+h[m+(o*320|0)+248>>3];h[q+(z+6<<3)>>3]=+h[m+(o*320|0)+256>>3];h[q+(z+7<<3)>>3]=+h[m+(o*320|0)+264>>3];h[q+(z+8<<3)>>3]=+h[m+(o*320|0)+272>>3];h[q+(z+9<<3)>>3]=+h[m+(o*320|0)+280>>3];y=c[e>>2]|0;h[q+(z+10<<3)>>3]=+h[y+(o*320|0)+288>>3];h[q+(z+11<<3)>>3]=+h[y+(o*320|0)+296>>3];j=j+1|0}o=o+1|0}while((o|0)<(l|0))}m=e+104|0;k=(f|0)!=0;if(!(c[m>>2]|0)){j=e+8|0;g=+me(a,B,r,q,p,j);if(k&g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,j)}}}}Vj(q);Vj(r)}else{g=+me(a,B,r,q,p,A);l=e+8|0;n=+me(a,l,r,q,p,l);j=g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}}}}}else if(j){j=0;do{h[e+8+(j<<5)>>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;while(0);Vj(q);Vj(r)}if(g<20.0){c[m>>2]=1;break}c[m>>2]=0;m=c[C>>2]|0;if((m|0)>0){j=c[e>>2]|0;l=0;do{k=c[j+(l*320|0)+304>>2]|0;if((k|0)>=0?(D=b+(k<<8)+236|0,(c[D>>2]|0)==0):0)c[D>>2]=8;l=l+1|0}while((l|0)<(m|0))}}else E=38;while(0);if((E|0)==38){c[e+104>>2]=0;g=-1.0}i=F;return +g}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0;U=i;i=i+2544|0;S=U+208|0;R=U+200|0;G=U+184|0;Q=U+176|0;F=U+168|0;E=U+152|0;P=U+144|0;D=U+136|0;M=U+128|0;L=U+120|0;K=U+112|0;C=U+104|0;j=U+96|0;g=U+88|0;f=U+80|0;e=U+72|0;d=U+64|0;H=U;I=U+2280|0;J=U+232|0;z=U+224|0;O=U+220|0;A=U+216|0;B=U+212|0;T=_i(a,5306)|0;a:do if(!T){c[d>>2]=a;Me(3,5308,d);d=ri(c[(qi()|0)>>2]|0)|0;c[e>>2]=5367;c[e+4>>2]=d;Me(3,5361,e);d=0}else{Kf(I,T);c[f>>2]=O;if((kj(I,5368,f)|0)!=1){c[g>>2]=a;Me(3,5371,g);Wi(T)|0;d=0;break}d=c[O>>2]|0;N=Uj(d*320|0)|0;if(!N){Me(3,5472,j);rb(1)}r=H+8|0;s=H+16|0;t=H+24|0;u=H+32|0;v=H+40|0;w=H+48|0;x=H+56|0;y=(b|0)==0;b:do if((d|0)>0){d=0;f=0;c:while(1){Kf(I,T);e=N+(d*320|0)|0;g=N+(d*320|0)+312|0;c[C>>2]=g;c[C+4>>2]=z;if((kj(I,5489,C)|0)==1){q=c[g>>2]|0;c[e>>2]=(q&-32768|0)==0&0==0?q&32767:0;c[N+(d*320|0)+4>>2]=1;f=f|2}else{if(y){e=10;break}if(!(Qe(J,a,2048,1)|0)){e=12;break}Cj(J,I,2047-(Bj(J)|0)|0)|0;q=Ke(b,J)|0;c[e>>2]=q;if((q|0)<0){e=14;break}c[N+(d*320|0)+4>>2]=0;f=f|1}Kf(I,T);e=N+(d*320|0)+8|0;c[D>>2]=e;if((kj(I,5785,D)|0)!=1){e=18;break}Kf(I,T);o=N+(d*320|0)+16|0;p=N+(d*320|0)+24|0;q=N+(d*320|0)+40|0;c[E>>2]=o;c[E+4>>2]=p;c[E+8>>2]=N+(d*320|0)+32;c[E+12>>2]=q;if((kj(I,5894,E)|0)!=4){c[F>>2]=A;c[F+4>>2]=B;if((kj(I,5910,F)|0)==2)g=0;else{e=21;break}}else g=1;do{Kf(I,T);c[G>>2]=N+(d*320|0)+16+(g<<5);c[G+4>>2]=N+(d*320|0)+16+(g<<5)+8;c[G+8>>2]=N+(d*320|0)+16+(g<<5)+16;c[G+12>>2]=N+(d*320|0)+16+(g<<5)+24;if((kj(I,5894,G)|0)!=4){e=23;break c}g=g+1|0}while((g|0)<3);Oe(o,N+(d*320|0)+112|0)|0;W=+h[e>>3];V=W*-.5;h[H>>3]=V;W=W*.5;h[r>>3]=W;h[s>>3]=W;h[t>>3]=W;h[u>>3]=W;h[v>>3]=V;h[w>>3]=V;h[x>>3]=V;e=N+(d*320|0)+48|0;g=N+(d*320|0)+56|0;j=N+(d*320|0)+72|0;k=N+(d*320|0)+80|0;l=N+(d*320|0)+88|0;m=N+(d*320|0)+104|0;n=0;do{V=+h[H+(n<<4)>>3];W=+h[H+(n<<4)+8>>3];h[N+(d*320|0)+208+(n*24|0)>>3]=+h[q>>3]+(+h[o>>3]*V+ +h[p>>3]*W);h[N+(d*320|0)+208+(n*24|0)+8>>3]=+h[j>>3]+(+h[e>>3]*V+ +h[g>>3]*W);h[N+(d*320|0)+208+(n*24|0)+16>>3]=+h[m>>3]+(+h[k>>3]*V+ +h[l>>3]*W);n=n+1|0}while((n|0)!=4);d=d+1|0;if((d|0)>=(c[O>>2]|0))break b}if((e|0)==10){c[K>>2]=a;c[K+4>>2]=I;Me(3,5496,K)}else if((e|0)==12){c[L>>2]=a;Me(3,5624,L)}else if((e|0)==14){c[M>>2]=a;c[M+4>>2]=J;Me(3,5708,M)}else if((e|0)==18){c[P>>2]=a;c[P+4>>2]=d+1;Me(3,5789,P)}else if((e|0)==21){c[Q>>2]=a;c[Q+4>>2]=d+1;Me(3,5916,Q)}else if((e|0)==23){c[R>>2]=a;c[R+4>>2]=d+1;Me(3,5916,R)}Wi(T)|0;Vj(N);d=0;break a}else f=0;while(0);Wi(T)|0;d=Uj(136)|0;if(!d){Me(3,5472,S);rb(1)}c[d>>2]=N;c[d+4>>2]=c[O>>2];c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);h[d+112>>3]=.5;h[d+120>>3]=.5}while(0);i=U;return d|0}function Kf(b,c){b=b|0;c=c|0;var d=0,e=0;a:do if(Zi(b,256,c)|0)while(1){d=Bj(b)|0;b:do if(d)while(1){d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0;if(!d)break b}while(0);switch(a[b>>0]|0){case 0:case 35:break;default:break a}if(!(Zi(b,256,c)|0))break a}while(0);return}function Lf(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+400|0;n=r+296|0;q=r+200|0;o=r+128|0;p=r;k=c[a>>2]|0;f=c[a+4>>2]|0;if((bf(a+8|0,n,q)|0)<0)Me(3,6025,r+392|0);else{j=+(f+-1|0);f=n+32|0;h[f>>3]=j*+h[n+64>>3]-+h[f>>3];f=n+40|0;h[f>>3]=j*+h[n+72>>3]-+h[f>>3];f=n+48|0;h[f>>3]=j*+h[n+80>>3]-+h[f>>3];f=n+56|0;h[f>>3]=j*+h[n+88>>3]-+h[f>>3];g=+h[n+80>>3];f=0;do{h[o+(f*24|0)>>3]=+h[n+(f<<5)>>3]/g;h[o+(f*24|0)+8>>3]=+h[n+(f<<5)+8>>3]/g;h[o+(f*24|0)+16>>3]=+h[n+(f<<5)+16>>3]/g;f=f+1|0}while((f|0)!=3);g=+(k+-1|0);h[p>>3]=+h[o>>3]*2.0/g;h[p+8>>3]=+h[o+8>>3]*2.0/g;h[p+16>>3]=+h[o+16>>3]*2.0/g+-1.0;k=p+24|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+40>>3]=+h[o+32>>3]*2.0/j;h[p+48>>3]=+h[o+40>>3]*2.0/j+-1.0;k=p+56|0;g=d-b;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[p+80>>3]=(b+d)/g;h[p+88>>3]=d*-2.0*b/g;k=p+96|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+112>>3]=1.0;h[p+120>>3]=0.0;g=+h[q+24>>3];j=+h[q+56>>3];d=+h[q+88>>3];k=0;do{b=+h[p+(k<<5)>>3];f=p+(k<<5)+8|0;a=p+(k<<5)+16|0;l=+h[f>>3];m=+h[a>>3];n=0;do{h[e+((n<<2)+k<<3)>>3]=b*+h[q+(n<<3)>>3]+l*+h[q+32+(n<<3)>>3]+m*+h[q+64+(n<<3)>>3];n=n+1|0}while((n|0)!=3);h[e+(k+12<<3)>>3]=+h[p+(k<<5)+24>>3]+(b*g+ +h[f>>3]*j+ +h[a>>3]*d);k=k+1|0}while((k|0)!=4)}i=r;return}function Mf(a){a=a|0;c[496]=a;return}function Nf(){return c[496]|0}function Of(a){a=a|0;var b=0,d=0;b=a+212|0;d=c[b>>2]|0;if(d){ze(d)|0;Qd(c[b>>2]|0)|0;c[b>>2]=0}b=a+224|0;if(c[b>>2]|0){Ld(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){kf(b)|0;c[b>>2]=0}return}function Pf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(!(Cg(2044,d)|0))a=-1;else{f=Dg(2044,d)|0;a=f+196|0;b=c[a>>2]|0;if(b){Vj(b);c[a>>2]=0;c[f+200>>2]=0}Of(f);Ce(c[f+216>>2]|0)|0;Eg(2044,d)|0;d=f+248|0;e=f+252|0;a=c[d>>2]|0;if((c[e>>2]|0)!=(a|0)){b=0;do{Ff(c[a+(b<<3)+4>>2]|0)|0;b=b+1|0;a=c[d>>2]|0}while(b>>>0<(c[e>>2]|0)-a>>3>>>0)}Fg(d);Lh(d);Fg(f+248|0);Lh(f);a=0}i=g;return a|0}function Qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+208|0;g=h+192|0;f=h;e=h+196|0;if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;if((ef(d,1,f,h+184|0)|0)<0){if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;c[g>>2]=d;Me(3,6093,g);d=-1}else{d=c[521]|0;c[521]=d+1;c[e>>2]=d;ik(Gg(2064,e)|0,f|0,184)|0}i=h;return d|0}function Rf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;m=n+24|0;l=n+16|0;j=n+8|0;f=n;d=n+32|0;e=n+28|0;c[d>>2]=a;c[e>>2]=b;do if((Cg(2044,d)|0)!=0?(k=Dg(2044,d)|0,(Hg(2064,e)|0)!=0):0){g=k+8|0;ik(g|0,Gg(2064,e)|0,184)|0;e=c[g>>2]|0;d=k+204|0;b=c[k+12>>2]|0;a=k+208|0;if(!((e|0)==(c[d>>2]|0)?(b|0)==(c[a>>2]|0):0)){c[f>>2]=e;c[f+4>>2]=b;Me(2,6152,f);af(g,c[d>>2]|0,c[a>>2]|0,g)|0}Of(k);d=jf(g,15)|0;a=k+192|0;c[a>>2]=d;if(!d){Me(3,6199,j);d=-1;break}d=Md(d)|0;b=k+212|0;c[b>>2]=d;if(!d){Me(3,6237,l);d=-1;break}Nd(d,2)|0;l=Jd(g)|0;c[k+224>>2]=l;if(!l){Me(3,6274,m);d=-1;break}else{ye(c[b>>2]|0,c[k+216>>2]|0)|0;Lf(c[a>>2]|0,+h[k+232>>3],+h[k+240>>3],k+264|0);d=0;break}}else d=-1;while(0);i=n;return d|0}function Sf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;g=j;e=j+12|0;c[e>>2]=b;if(Cg(2044,e)|0){f=Dg(2044,e)|0;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;b=f+216|0;e=Ke(c[b>>2]|0,d)|0;c[f+260>>2]=e;if((e|0)<0){c[g>>2]=d;Me(3,6312,g);Ce(c[b>>2]|0)|0;Me(3,6358,h);e=-1}}else e=-1;i=j;return e|0}function Tf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;f=l+8|0;e=l+20|0;k=l;c[e>>2]=b;do if(Cg(2044,e)|0){j=Dg(2044,e)|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=c[j+212>>2]|0;d=j+216|0;h=j+220|0;e=Jf(e,c[d>>2]|0)|0;c[h>>2]=e;if(!e){Me(3,6402,f);Ce(c[d>>2]|0)|0;Me(3,6429,g);e=-1;break}switch(c[e+108>>2]|0){case 0:{Zd(b,0)|0;break}case 1:{Zd(b,2)|0;break}default:Zd(b,3)|0}b=j+248|0;d=j+252|0;f=c[d>>2]|0;e=f-(c[b>>2]|0)>>3;g=k;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=e;c[k+4>>2]=c[h>>2];if((f|0)==(c[j+256>>2]|0)){Ig(b,k);break}else{j=k;e=c[j>>2]|0;j=c[j+4>>2]|0;k=f;c[k>>2]=e;c[k+4>>2]=j;c[d>>2]=(c[d>>2]|0)+8;break}}else e=-1;while(0);i=l;return e|0}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,(b|0)>=0):0)?(f=c[e+248>>2]|0,(c[e+252>>2]|0)-f>>3>>>0>b>>>0):0)d=c[(c[f+(b<<3)+4>>2]|0)+4>>2]|0;else d=-1;i=g;return d|0}function Vf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{b=Dg(2044,b)|0;b=(c[b+252>>2]|0)-(c[b+248>>2]|0)>>3}i=d;return b|0}function Wf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+232>>3]=b;i=e;return}function Xf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+232>>3];i=e;return +b}function Yf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+240>>3]=b;i=e;return}function Zf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+240>>3];i=e;return +b}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Zd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6478,e)}i=f;return}function $f(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(ae(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ag(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,g=0,j=0,k=0;k=i;i=i+16|0;j=k;d=k+8|0;c[d>>2]=a;if((((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,!(b<=0.0|b>=1.0)):0)?(f=b,g=c[e+212>>2]|0,(g|0)!=0):0)?(be(g,f)|0)==0:0){h[j>>3]=f;Me(1,6513,j)}i=k;return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f;c[b>>2]=a;if((Cg(2044,b)|0)!=0?(d=c[(Dg(2044,b)|0)+212>>2]|0,(d|0)!=0):0){a=(ce(d,e)|0)==0;i=f;return +(a?+h[e>>3]:-1.0)}i=f;return -1.0}function cg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)_d(c[(Dg(2044,d)|0)+212>>2]|0,b)|0;i=e;return}function dg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{$d(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Sd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6544,e)}i=f;return}function fg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Td(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+4|0;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,b>>>0<=255):0)?(Ud(c[e+212>>2]|0,b)|0)==0:0){c[f>>2]=b;Me(1,6569,f)}i=g;return}function hg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Vd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Pd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6590,e)}i=f;return}function jg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Wd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Cg(2044,d)|0))b=0;else{a=(b|0)!=0;Od(c[(Dg(2044,d)|0)+212>>2]|0,a&1)|0;c[e>>2]=a?6616:6620;Me(1,6625,e)}i=f;return b|0}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else b=c[(c[(Dg(2044,b)|0)+212>>2]|0)+4834148>>2]|0;i=d;return b|0}function mg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else{Rd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Xd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6647,e)}i=f;return}function og(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Yd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function pg(a,b){a=a|0;b=b|0;var c=0;c=0;do{h[b+(c<<5)>>3]=+h[a+(c<<5)>>3];h[b+(c<<5)+8>>3]=+h[a+(c<<5)+8>>3];h[b+(c<<5)+16>>3]=+h[a+(c<<5)+16>>3];h[b+(c<<5)+24>>3]=+h[a+(c<<5)+24>>3];c=c+1|0}while((c|0)!=3);return}function qg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+ke(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function rg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+le(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,264,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function sg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=c[(Dg(2044,e)|0)+212>>2]|0;if((c[e+44>>2]|0)>(b|0)){c[((b|0)<0?8:e+48+(b<<8)|0)+16>>2]=d;e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;o=+h[33];h[d+168>>3]=o;k=+h[34];h[d+176>>3]=k;n=+h[35];h[d+184>>3]=n;j=+h[36];h[d+192>>3]=j;m=+h[37];h[d+200>>3]=m;g=+h[38];h[d+208>>3]=g;l=+h[39];h[d+216>>3]=l;f=+h[40];h[d+224>>3]=f;h[d+56>>3]=(o+n+m+l)*.25;h[d+64>>3]=(k+j+g+f)*.25;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function ug(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Hf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function vg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Gf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function wg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=c[522]|0;else{b=Dg(2044,b)|0;b=de(c[b+212>>2]|0,c[b+196>>2]|0)|0}i=d;return b|0}function xg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=2088;else b=(c[(Dg(2044,b)|0)+212>>2]|0)+44|0;i=d;return c[b>>2]|0}function yg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){a=Dg(2044,e)|0;e=c[a+248>>2]|0;if((b|0)<0?1:(c[a+252>>2]|0)-e>>3>>>0<=b>>>0){e=c[524]|0;break}e=c[e+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[e+4>>2]|0)<=(d|0)){e=c[523]|0;break}else{e=c[e>>2]|0;pg(e+(d*320|0)+16|0,264);Lb(0,c[e+(d*320|0)+304>>2]|0,c[e+(d*320|0)>>2]|0,c[e+(d*320|0)+4>>2]|0,+(+h[e+(d*320|0)+8>>3]))|0;e=0;break}}else e=c[522]|0;while(0);i=f;return e|0}function zg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;Qa(1,c[d>>2]|0,c[d+4>>2]|0,c[d+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[d+20>>2]|0,c[d+24>>2]|0,+(+h[d+32>>3]),+(+h[d+40>>3]),+(+h[d+48>>3]),+(+h[d+56>>3]),+(+h[d+64>>3]),+(+h[d+72>>3]),+(+h[d+80>>3]),+(+h[d+88>>3]),+(+h[d+96>>3]),+(+h[d+104>>3]),+(+h[d+112>>3]),+(+h[d+120>>3]),+(+h[d+128>>3]),+(+h[d+136>>3]),+(+h[d+144>>3]),+(+h[d+152>>3]),+(+h[d+160>>3]),+(+h[d+168>>3]),+(+h[d+176>>3]),+(+h[d+184>>3]),+(+h[d+192>>3]),+(+h[d+200>>3]),+(+h[d+208>>3]),+(+h[d+216>>3]),+(+h[d+224>>3]),c[d+240>>2]|0)|0;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+8|0;f=h+12|0;e=c[525]|0;c[525]=e+1;c[f>>2]=e;f=Dg(2044,f)|0;c[f>>2]=e;c[f+204>>2]=a;c[f+208>>2]=b;j=$(a<<2,b)|0;b=f+200|0;c[b>>2]=j;a=f+196|0;c[a>>2]=Uj(j)|0;j=Ae()|0;c[f+216>>2]=j;if(!j)Me(3,8285,h);Rf(e,d)|0;c[g>>2]=c[b>>2];Me(1,8322,g);Kb(2,c[f>>2]|0,c[a>>2]|0,c[b>>2]|0,f+264|0,264)|0;i=h;return c[f>>2]|0}function Bg(a){a=a|0;var b=0;a=i;i=i+16|0;b=a;Jg(8591,7);Kg(8597,3);Lg(8606,2);Lg(8617,3);Mg(8633,4);Kg(8651,4);Ng(8671,5);Jg(8683,8);Mg(8700,5);Jg(8720,9);Jg(8738,10);Mg(8760,6);Mg(8783,7);Kg(8812,6);Kg(8825,7);Jg(8838,11);Mg(8857,8);Mg(8867,9);Kg(8880,8);Kg(8893,9);Og(8912,10);Pg(8924,1);Qg(8936,1);Rg(8959,1);Qg(8982,2);Rg(9004,2);Sg(9026,1);Kg(9043,10);Sg(9060,2);Kg(9073,11);Sg(9086,3);Kg(9110,12);Tg(9134,3);Rg(9147,3);Sg(9160,4);Kg(9178,13);Sg(9196,5);Kg(9212,14);Sg(9228,6);Kg(9245,15);Ug(9262,2088);Ug(9291,2096);Ug(9319,2092);Cb(9352,680,0);Cb(9369,680,1);Cb(9385,680,0);Cb(9407,680,0);Cb(9432,680,1);Cb(9457,680,1);Cb(9482,680,100);Cb(9509,680,0);Cb(9535,680,1);Cb(9561,680,0);Cb(9588,680,0);Cb(9615,680,1);Cb(9641,680,2);Cb(9666,680,3);Cb(9704,680,4);Cb(9741,680,0);Cb(9775,680,0);Cb(9799,680,1);Cb(9825,680,2);Cb(9852,680,2);Cb(9886,680,5);h[b>>3]=.5;Vg(9904,b);Cb(9925,680,0);Cb(9944,680,1);Cb(9962,680,2);Cb(9980,680,3);Cb(9999,680,4);Cb(10021,680,3);Cb(10040,680,515);Cb(10069,680,259);Cb(10097,680,4);Cb(10116,680,772);Cb(10146,680,1028);Cb(10176,680,0);Cb(10207,680,1);Cb(10243,680,2);Cb(10277,680,3);Cb(10315,680,0);Cb(10348,680,1);Cb(10395,680,2);Cb(10437,680,3);Cb(10480,680,4);Cb(10532,680,5);Cb(10583,680,6);Cb(10628,680,7);Cb(10667,680,8);Cb(10712,680,9);i=a;return}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Dg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Cg(a,b)|0;if(!d){wh(f,a,b);xh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;b=Cg(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];uh(a,d)|0;b=1}i=f;return b|0}function Fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=a+4|0;a=c[b>>2]|0;if((a|0)!=(d|0)){do a=a+-8|0;while((a|0)!=(d|0));c[b>>2]=a}Lh(d)}return}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Hg(a,b)|0;if(!d){qh(f,a,b);rh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;g=a+4|0;d=c[a>>2]|0;f=((c[g>>2]|0)-d>>3)+1|0;if(f>>>0>536870911)Jh(a);e=d;d=(c[a+8>>2]|0)-e|0;if(d>>3>>>0<268435455){d=d>>2;d=d>>>0>>0?f:d}else d=536870911;nh(h,d,(c[g>>2]|0)-e>>3,a+8|0);g=h+8|0;f=c[g>>2]|0;d=b;e=c[d+4>>2]|0;b=f;c[b>>2]=c[d>>2];c[b+4>>2]=e;c[g>>2]=f+8;oh(a,h);ph(h);i=j;return}function Jg(a,b){a=a|0;b=b|0;Oa(a|0,4,2200,10911,1,b|0);return}function Kg(a,b){a=a|0;b=b|0;Oa(a|0,2,2192,10801,10,b|0);return}function Lg(a,b){a=a|0;b=b|0;Oa(a|0,3,2180,10906,12,b|0);return}function Mg(a,b){a=a|0;b=b|0;Oa(a|0,3,2168,10906,13,b|0);return}function Ng(a,b){a=a|0;b=b|0;Oa(a|0,2,2160,10801,11,b|0);return}function Og(a,b){a=a|0;b=b|0;Oa(a|0,2,2152,10797,7,b|0);return}function Pg(a,b){a=a|0;b=b|0;Oa(a|0,1,2148,10794,16,b|0);return}function Qg(a,b){a=a|0;b=b|0;Oa(a|0,3,2136,10789,1,b|0);return}function Rg(a,b){a=a|0;b=b|0;Oa(a|0,2,2128,10785,1,b|0);return}function Sg(a,b){a=a|0;b=b|0;Oa(a|0,3,2116,10780,1,b|0);return}function Tg(a,b){a=a|0;b=b|0;Oa(a|0,3,2104,10775,2,b|0);return}function Ug(a,b){a=a|0;b=b|0;Cb(a|0,680,c[b>>2]|0);return}function Vg(a,b){a=a|0;b=b|0;Cb(a|0,720,~~+h[b>>3]>>>0|0);return}function Wg(){c[511]=0;c[512]=0;c[513]=0;c[514]=0;g[515]=1.0;ub(11,2044,n|0)|0;c[516]=0;c[517]=0;c[518]=0;c[519]=0;g[520]=1.0;ub(12,2064,n|0)|0;Bg(0);return}function Xg(a){a=a|0;$g(a);return}function Yg(a){a=a|0;Zg(a);return}function Zg(a){a=a|0;var b=0;_g(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function _g(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Lh(a)}while((b|0)!=0);return}function $g(a){a=a|0;var b=0;ah(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function ah(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Fg(a+264|0);Lh(a)}while((b|0)!=0);return}function bh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b,c);return}function dh(a,b){a=a|0;b=b|0;return +(+Ub[a&3](b))}function eh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function fh(a){a=a|0;return Vb[a&1]()|0}function gh(a,b){a=a|0;b=b|0;Wb[a&15](b);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;i=i+16|0;d=c;ih(d,b);a=Yb[a&31](d)|0;bk(d);i=c;return a|0}function ih(a,b){a=a|0;b=b|0;ak(a,b+4|0,c[b>>2]|0);return}function jh(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b,c)|0}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;e=d;ih(e,c);a=cc[a&15](b,e)|0;bk(e);i=d;return a|0}function lh(a,b){a=a|0;b=b|0;return Yb[a&31](b)|0}function mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b,c,d)|0}function nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+12>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=Kh(b<<3)|0;c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[a+12>>2]=e+(b<<3);return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;g=a+4|0;d=b+4|0;f=(c[g>>2]|0)-e|0;h=(c[d>>2]|0)+(0-(f>>3)<<3)|0;c[d>>2]=h;ik(h|0,e|0,f|0)|0;f=c[a>>2]|0;c[a>>2]=c[d>>2];c[d>>2]=f;f=b+8|0;e=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=e;f=a+8|0;a=b+12|0;e=c[f>>2]|0;c[f>>2]=c[a>>2];c[a>>2]=e;c[b>>2]=c[d>>2];return}function ph(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=a+8|0;b=c[e>>2]|0;if((b|0)!=(d|0)){do b=b+-8|0;while((b|0)!=(d|0));c[e>>2]=b}b=c[a>>2]|0;if(b)Lh(b);return}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(200)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,184)|0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function rh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;sh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return} +function zd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Dd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Jd(a){a=a|0;return Kd(a+8|0)|0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Uj(4)|0;if(!b){Me(3,5472,d);rb(1)}a=wf(a)|0;c[b>>2]=a;if(!a){Vj(b);b=0}i=d;return b|0}function Ld(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{xf(b)|0;Vj(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function Md(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=Uj(7062432)|0;if(!b){Me(3,5472,d);rb(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;h[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=Uj($(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Me(3,5472,d+8|0);rb(1)}else{c[b+7062384>>2]=0;Nd(b,2)|0;Od(b,0)|0;c[b+7062388>>2]=-1;Pd(b,0)|0;c[b+7062392>>2]=7;c[b+7062396>>2]=0;i=d;return b|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;a:do if(a){e=a+4|0;if((c[e>>2]|0)!=(b|0)){switch(b|0){case 11:case 10:case 9:case 8:case 7:case 6:case 4:case 3:case 2:case 1:case 0:{f=0;break}case 14:case 13:case 12:case 5:{f=1;break}default:{c[d>>2]=b;Me(3,3936,d);d=-1;break a}}c[e>>2]=b;c[a+8>>2]=Pe(b)|0;d=a+7062408|0;b=c[d>>2]|0;if(b){pe(b);c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[e>>2]|0,0)|0}d=a+24|0;b=c[d>>2]|0;if(!f)switch(b|0){case 1:{c[d>>2]=4;d=0;break a}case 4:{c[d>>2]=3;d=0;break a}default:{d=0;break a}}else switch(b|0){case 0:{c[d>>2]=1;d=0;break a}case 3:{c[d>>2]=4;d=0;break a}default:{d=0;break a}}}else d=0}else d=-1;while(0);i=g;return d|0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;Vj(c[d>>2]|0);c[d>>2]=0;d=0;break}b=Uj($(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Me(3,5472,e);rb(1)}else d=0}else d=0;else d=-1;while(0);i=f;return d|0}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e){pe(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[a+4>>2]|0,0)|0;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:{b=0;break}default:{Me(3,3985,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[760+(b<<2)>>2];Me(3,4059,h);b=0}else b=0}else b=0}else b=-1;i=j;return b|0}function Qd(a){a=a|0;var b=0,d=0;if(!a)b=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d){pe(d);c[b>>2]=0}Vj(c[a+4834144>>2]|0);Vj(c[a+4834148>>2]|0);Vj(a);b=0}return b|0}function Rd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function Sd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function Td(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ud(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Vd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Wd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Xd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Yd(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Zd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function _d(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function $d(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function ae(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function be(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){h[a+7062416>>3]=b;a=0}else a=-1;return a|0}function ce(a,b){a=a|0;b=b|0;if(!a)a=-1;else{h[b>>3]=+h[a+7062416>>3];a=0}return a|0}function de(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0.0,S=0.0;Q=i;i=i+80|0;M=Q+32|0;G=Q+24|0;z=Q;y=Q+52|0;D=Q+40|0;L=Q+64|0;P=a+44|0;c[P>>2]=0;J=a+7062388|0;f=c[J>>2]|0;a:do if((f|0)==4){I=a+7062396|0;e=c[I>>2]|0;do if((e|0)>0){f=4;e=e+-1|0}else{C=a+16|0;F=c[C>>2]|0;E=a+7062400|0;A=(c[E>>2]|0)+F|0;A=(A|0)>255?255:A;c[y>>2]=A;H=a+7062404|0;B=F-(c[H>>2]|0)|0;B=(B|0)<0?0:B;c[y+4>>2]=B;c[y+8>>2]=F;e=a+36|0;f=a+40|0;g=a+4|0;k=a+12|0;l=a+20|0;m=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+7062384|0;s=a+24|0;t=a+32|0;u=a+7062416|0;v=a+48|0;w=a+7062424|0;x=0;do{if((xe(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[a>>2]|0,c[k>>2]|0,c[y+(x<<2)>>2]|0,c[l>>2]|0,m,0)|0)<0){e=-1;break a}if((fe(c[e>>2]|0,c[f>>2]|0,m,c[l>>2]|0,1e6,70,1.0,p,q)|0)<0){e=-1;break a}if((je(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,p,c[q>>2]|0,c[r>>2]|0,c[l>>2]|0,c[s>>2]|0,(c[t>>2]|0)+184|0,+h[u>>3],v,P,c[w>>2]|0)|0)<0){e=-1;break a}c[D+(x<<2)>>2]=c[P>>2];x=x+1|0}while((x|0)<3);if((c[a>>2]|0)==1){N=c[D+4>>2]|0;g=c[D+8>>2]|0;f=c[D>>2]|0;c[z>>2]=B;c[z+4>>2]=N;c[z+8>>2]=F;c[z+12>>2]=g;c[z+16>>2]=A;c[z+20>>2]=f;Me(3,4153,z)}else{f=c[D>>2]|0;g=c[D+8>>2]|0}e=c[D+4>>2]|0;if((f|0)>(g|0)|(e|0)>(g|0)){f=(f|0)>=(e|0)?A:B;c[C>>2]=f;e=f-F|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[H>>2]=e;if((c[a>>2]|0)==1){c[G>>2]=f;Me(3,4229,G)}f=c[J>>2]|0;e=c[a+7062392>>2]|0;break}e=c[E>>2]|0;f=c[H>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+F|0)>254){c[E>>2]=1;e=1}if((F|0)<=(e|0))c[H>>2]=1;c[I>>2]=c[a+7062392>>2];N=47;break a}while(0);c[I>>2]=e;N=30}else N=30;while(0);b:do if((N|0)==30){c:do switch(f|0){case 3:{f=a+7062408|0;e=we(c[f>>2]|0,b,9,-7)|0;if((e|0)<0)break b;e=c[f>>2]|0;f=a+4834144|0;e=xe(c[e>>2]|0,c[e+8>>2]|0,c[e+12>>2]|0,5,c[a>>2]|0,c[a+12>>2]|0,0,0,f,c[e+4>>2]|0)|0;if((e|0)<0)break b;e=a+36|0;g=a+40|0;k=a+20|0;break}case 2:case 1:{g=a+7062396|0;e=c[g>>2]|0;if((e|0)>0){c[g>>2]=e+-1;N=44;break c}e=c[a+7062408>>2]|0;if((f|0)==1)e=ue(e,b,L)|0;else e=ve(e,b,L)|0;if((e|0)<0)break b;e=a+16|0;if((c[a>>2]|0)==1?(K=d[L>>0]|0,(c[e>>2]|0)!=(K|0)):0){c[M>>2]=(c[J>>2]|0)==1?4281:4288;c[M+4>>2]=K;Me(3,4293,M)}c[e>>2]=d[L>>0];c[g>>2]=c[a+7062392>>2];N=44;break}default:N=44}while(0);if((N|0)==44){e=a+36|0;g=a+40|0;k=a+20|0;f=a+4834144|0;if((xe(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[k>>2]|0,f,0)|0)<0){e=-1;break}}l=a+15416|0;m=a+15408|0;if((fe(c[e>>2]|0,c[g>>2]|0,f,c[k>>2]|0,1e6,70,1.0,l,m)|0)>=0?(je(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,l,c[m>>2]|0,c[a+7062384>>2]|0,c[k>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+h[a+7062416>>3],a+48|0,P,c[a+7062424>>2]|0)|0)>=0:0)N=47;else e=-1}while(0);d:do if((N|0)==47){t=a+28|0;if((c[t>>2]|0)==1){ee(a);e=0;break}u=a+4818296|0;r=a+24|0;q=c[u>>2]|0;if((q|0)>0){s=0;do{f=c[P>>2]|0;g=a+4818304+(s*264|0)+56|0;k=a+4818304+(s*264|0)+64|0;if((f|0)>0){o=+(c[a+4818304+(s*264|0)>>2]|0);e=-1;l=0;n=.5;while(1){j=+(c[a+48+(l<<8)>>2]|0);R=o/j;if(!(R<.7|R>1.43)?(R=+h[a+48+(l<<8)+56>>3]-+h[g>>3],O=+h[a+48+(l<<8)+64>>3]-+h[k>>3],O=(R*R+O*O)/j,O=(f|0)){p=e;break}else n=j}}else p=-1;e:do if((p|0)>-1){m=c[r>>2]|0;switch(m|0){case 2:case 1:case 0:break;case 4:case 3:{g=a+48+(p<<8)+40|0;j=+h[a+4818304+(s*264|0)+40>>3];if(!(+h[g>>3]>3]<+h[f>>3]))break e}else{f=a+4818304+(s*264|0)+48|0;e=a+48+(p<<8)+48|0}h[g>>3]=j;c[a+48+(p<<8)+8>>2]=c[a+4818304+(s*264|0)+8>>2];h[e>>3]=+h[f>>3];c[a+48+(p<<8)+12>>2]=c[a+4818304+(s*264|0)+12>>2];e=-1;n=1.0e8;g=0;while(1){j=0.0;f=0;do{b=(f+g|0)%4|0;o=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(o*o+R*R);f=f+1|0}while((f|0)!=4);f=j>2]=(b+(c[a+4818304+(s*264|0)+20>>2]|0)|0)%4|0;c[a+48+(p<<8)+24>>2]=(b+(c[a+4818304+(s*264|0)+24>>2]|0)|0)%4|0;break e}default:{e=-1;break d}}e=a+48+(p<<8)+32|0;o=+h[a+4818304+(s*264|0)+32>>3];if(+h[e>>3]>3]=o;l=c[a+4818304+(s*264|0)+4>>2]|0;c[a+48+(p<<8)+4>>2]=l;g=a+4818304+(s*264|0)+16|0;e=-1;n=1.0e8;k=0;while(1){j=0.0;f=0;do{b=(f+k|0)%4|0;S=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(S*S+R*R);f=f+1|0}while((f|0)!=4);if(j>2]|0)|0)%4|0;else j=n;k=k+1|0;if((k|0)==4)break;else n=j}c[a+48+(p<<8)+16>>2]=e;if(m>>>0<2){c[a+48+(p<<8)+8>>2]=l;h[a+48+(p<<8)+40>>3]=o;c[a+48+(p<<8)+20>>2]=e;break}else{c[a+48+(p<<8)+12>>2]=l;h[a+48+(p<<8)+48>>3]=o;c[a+48+(p<<8)+24>>2]=e;break}}}while(0);s=s+1|0}while((s|0)<(q|0))}ee(a);if((c[u>>2]|0)>0){g=0;e=0;do{f=a+4818304+(g*264|0)|0;N=a+4818304+(g*264|0)+256|0;b=(c[N>>2]|0)+1|0;c[N>>2]=b;if((b|0)<4){if((g|0)!=(e|0))ik(a+4818304+(e*264|0)|0,f|0,264)|0;e=e+1|0}g=g+1|0}while((g|0)<(c[u>>2]|0))}else e=0;c[u>>2]=e;e=c[P>>2]|0;f:do if((e|0)>0){m=0;do{k=a+48+(m<<8)|0;g=c[a+48+(m<<8)+4>>2]|0;if((g|0)>=0){l=c[u>>2]|0;g:do if((l|0)>0){f=0;do{if((c[a+4818304+(f*264|0)+4>>2]|0)==(g|0))break g;f=f+1|0}while((f|0)<(l|0))}else f=0;while(0);if((f|0)==(l|0)){if((l|0)==60)break f;c[u>>2]=l+1}ik(a+4818304+(f*264|0)|0,k|0,256)|0;c[a+4818304+(f*264|0)+256>>2]=1}m=m+1|0;e=c[P>>2]|0}while((m|0)<(e|0))}while(0);if((c[t>>2]|0)!=2?(c[u>>2]|0)>0:0){l=0;while(1){g=a+4818304+(l*264|0)+56|0;k=a+4818304+(l*264|0)+64|0;h:do if((e|0)>0){n=+(c[a+4818304+(l*264|0)>>2]|0);f=0;do{j=+(c[a+48+(f<<8)>>2]|0);S=n/j;if(!(S<.7|S>1.43)?(R=+h[a+48+(f<<8)+56>>3]-+h[g>>3],S=+h[a+48+(f<<8)+64>>3]-+h[k>>3],(R*R+S*S)/j<.5):0)break h;f=f+1|0}while((f|0)<(e|0))}else f=0;while(0);if((f|0)==(e|0)){ik(a+48+(e<<8)|0,a+4818304+(l*264|0)|0,256)|0;e=(c[P>>2]|0)+1|0;c[P>>2]=e}l=l+1|0;if((l|0)>=(c[u>>2]|0)){e=0;break}}}else e=0}while(0);i=Q;return e|0}function ee(a){a=a|0;var b=0,d=0,e=0,f=0;switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+8>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}case 2:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+12>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}default:{e=c[a+44>>2]|0;if((e|0)>0){f=0;do{b=a+48+(f<<8)+8|0;if((c[b>>2]|0)>-1?+h[a+48+(f<<8)+40>>3]<.5:0){c[b>>2]=-1;d=0}else d=1;b=a+48+(f<<8)+12|0;if(((c[b>>2]|0)>-1?+h[a+48+(f<<8)+48>>3]<.5:0)?(c[b>>2]=-1,(d|0)==0):0)c[a+48+(f<<8)+236>>2]=6;f=f+1|0}while((f|0)<(e|0))}}}return}function fe(a,b,d,e,f,g,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;k=k|0;l=l|0;var m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+96|0;F=L+56|0;H=L+48|0;G=L+8|0;I=L;K=(e|0)==1;if(K){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;g=(g|0)/4|0}c[l>>2]=0;C=d+8|0;D=a+-2|0;z=b+-2|0;A=d+1179664|0;a:do if((c[C>>2]|0)>0){B=0;while(1){w=d+12+(B<<2)|0;y=c[w>>2]|0;b:do if(((((!((y|0)<(g|0)|(y|0)>(f|0))?(E=d+131084+(B<<4)|0,(c[E>>2]|0)!=1):0)?(c[d+131084+(B<<4)+4>>2]|0)!=(D|0):0)?(c[d+131084+(B<<4)+8>>2]|0)!=1:0)?(c[d+131084+(B<<4)+12>>2]|0)!=(z|0):0)?(ge(c[d>>2]|0,a,0,A,B+1|0,E,k+((c[l>>2]|0)*80048|0)|0)|0)>=0:0){t=c[w>>2]|0;x=c[l>>2]|0;u=k+(x*80048|0)+28|0;b=c[u>>2]|0;v=k+(x*80048|0)+40028|0;n=c[v>>2]|0;y=k+(x*80048|0)+24|0;o=(c[y>>2]|0)+-1|0;if((o|0)>1){r=0;s=1;e=0;while(1){p=(c[k+(x*80048|0)+28+(s<<2)>>2]|0)-b|0;p=$(p,p)|0;q=(c[k+(x*80048|0)+40028+(s<<2)>>2]|0)-n|0;p=($(q,q)|0)+p|0;q=(p|0)>(r|0);e=q?s:e;s=s+1|0;if((s|0)>=(o|0))break;else r=q?p:r}}else e=0;m=+(t|0)/.75*.01*j;c[H>>2]=0;c[I>>2]=0;c:do if((he(u,v,0,e,m,F,H)|0)>=0?(he(u,v,e,(c[y>>2]|0)+-1|0,m,G,I)|0)>=0:0){b=c[H>>2]|0;n=c[I>>2]|0;do if((b|0)==1&(n|0)==1){b=c[G>>2]|0;n=c[F>>2]|0}else{if((b|0)>1&(n|0)==0){b=(e|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,0,b,m,F,H)|0)<0)break c;if((he(u,v,b,e,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=e;n=c[F>>2]|0;e=c[G>>2]|0;break}if(!((b|0)==0&(n|0)>1))break c;b=(e+-1+(c[y>>2]|0)|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,e,b,m,F,H)|0)<0)break c;if((he(u,v,b,(c[y>>2]|0)+-1|0,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=c[G>>2]|0;n=e;e=c[F>>2]|0}while(0);c[k+(x*80048|0)+80028>>2]=0;c[k+(x*80048|0)+80032>>2]=n;c[k+(x*80048|0)+80036>>2]=e;c[k+(x*80048|0)+80040>>2]=b;c[k+(x*80048|0)+80044>>2]=(c[y>>2]|0)+-1;c[k+((c[l>>2]|0)*80048|0)>>2]=c[w>>2];y=c[l>>2]|0;h[k+(y*80048|0)+8>>3]=+h[d+655376+(B<<4)>>3];h[k+(y*80048|0)+16>>3]=+h[d+655376+(B<<4)+8>>3];y=y+1|0;c[l>>2]=y;if((y|0)==60){e=60;break a}else break b}while(0)}while(0);B=B+1|0;if((B|0)>=(c[C>>2]|0)){J=4;break}}}else J=4;while(0);if((J|0)==4)e=c[l>>2]|0;if((e|0)>0){o=0;do{a=o;o=o+1|0;g=k+(a*80048|0)+16|0;n=k+(a*80048|0)|0;if((o|0)<(e|0)){j=+h[k+(a*80048|0)+8>>3];f=o;do{M=j-+h[k+(f*80048|0)+8>>3];m=+h[g>>3]-+h[k+(f*80048|0)+16>>3];m=M*M+m*m;e=c[n>>2]|0;a=k+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(m<+((e|0)/4|0|0))c[a>>2]=0}else if(m<+((b|0)/4|0|0))c[n>>2]=0;f=f+1|0;e=c[l>>2]|0}while((f|0)<(e|0))}}while((o|0)<(e|0))}if((e|0)>0){f=0;do{if(!(c[k+(f*80048|0)>>2]|0)){a=f+1|0;if((a|0)<(e|0)){e=f;b=a;while(1){ik(k+(e*80048|0)|0,k+(b*80048|0)|0,80048)|0;e=c[l>>2]|0;a=b+1|0;if((a|0)<(e|0)){e=b;b=a}else break}}e=e+-1|0;c[l>>2]=e}f=f+1|0}while((f|0)<(e|0))}if(K&(e|0)>0){b=0;while(1){c[k>>2]=c[k>>2]<<2;e=k+8|0;h[e>>3]=+h[e>>3]*2.0;e=k+16|0;h[e>>3]=+h[e>>3]*2.0;e=k+24|0;if((c[e>>2]|0)>0){a=0;do{K=k+28+(a<<2)|0;c[K>>2]=c[K>>2]<<1;K=k+40028+(a<<2)|0;c[K>>2]=c[K>>2]<<1;a=a+1|0}while((a|0)<(c[e>>2]|0))}b=b+1|0;if((b|0)>=(c[l>>2]|0))break;else k=k+80048|0}}i=L;return 0}function ge(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+80032|0;p=w+16|0;o=w+8|0;l=w;u=w+40024|0;v=w+24|0;t=c[h+8>>2]|0;e=c[h>>2]|0;h=c[h+4>>2]|0;a:do if((e|0)<=(h|0)){k=e;e=a+(($(t,d)|0)+e<<1)|0;while(1){s=b[e>>1]|0;if(s<<16>>16>0?(c[f+((s<<16>>16)+-1<<2)>>2]|0)==(g|0):0){n=k;break}if((k|0)<(h|0)){k=k+1|0;e=e+2|0}else{x=6;break a}}q=j+24|0;c[q>>2]=1;r=j+28|0;c[r>>2]=n;s=j+40028|0;c[s>>2]=t;f=t;m=n;k=1;e=5;while(1){h=(e+5|0)%8|0;e=0;while(1){g=c[776+(h<<2)>>2]|0;l=c[808+(h<<2)>>2]|0;if((b[a+(l+m+($(g+f|0,d)|0)<<1)>>1]|0)>0){e=g;g=h;break}e=e+1|0;h=(h+1|0)%8|0;if((e|0)>=8){x=11;break}}if((x|0)==11){x=0;if((e|0)==8){x=13;break}l=c[808+(h<<2)>>2]|0;e=c[776+(h<<2)>>2]|0;g=h}c[j+28+(k<<2)>>2]=l+m;h=c[q>>2]|0;c[j+40028+(h<<2)>>2]=e+(c[j+40028+(h+-1<<2)>>2]|0);e=c[q>>2]|0;h=j+28+(e<<2)|0;if((c[h>>2]|0)==(n|0)?(c[j+40028+(e<<2)>>2]|0)==(t|0):0){f=e;x=16;break}k=e+1|0;c[q>>2]=k;if((k|0)==9999){x=19;break}f=c[j+40028+(e<<2)>>2]|0;m=c[h>>2]|0;e=g}if((x|0)==13){Me(3,4347,o);e=-1;break}else if((x|0)==16){if((f|0)>1){l=0;g=1;h=0;while(1){e=(c[j+28+(g<<2)>>2]|0)-n|0;e=$(e,e)|0;k=(c[j+40028+(g<<2)>>2]|0)-t|0;e=($(k,k)|0)+e|0;k=(e|0)>(l|0);h=k?g:h;g=g+1|0;if((g|0)>=(f|0))break;else l=k?e:l}}else h=0;if((h|0)>0){e=0;do{c[u+(e<<2)>>2]=c[j+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}if((h|0)<(f|0)){e=h;do{t=e-h|0;c[j+28+(t<<2)>>2]=c[j+28+(e<<2)>>2];c[j+40028+(t<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(c[q>>2]|0))}if((h|0)>0){e=0;do{t=e-h|0;c[j+28+((c[q>>2]|0)+t<<2)>>2]=c[u+(e<<2)>>2];c[j+40028+((c[q>>2]|0)+t<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}c[j+28+(c[q>>2]<<2)>>2]=c[r>>2];c[j+40028+(c[q>>2]<<2)>>2]=c[s>>2];c[q>>2]=(c[q>>2]|0)+1;e=0;break}else if((x|0)==19){Me(3,4354,p);e=-1;break}}else x=6;while(0);if((x|0)==6){Me(3,4340,l);e=-1}i=w;return e|0}function he(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0.0;i=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;o=+(i-q|0);l=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(l-r|0);k=+(($(r,q)|0)-($(l,i)|0)|0);i=d+1|0;if((i|0)<(e|0)){j=0.0;l=i;do{s=k+(o*+(c[a+(l<<2)>>2]|0)+m*+(c[b+(l<<2)>>2]|0));s=s*s;r=s>j;j=r?s:j;i=r?l:i;l=l+1|0}while((l|0)<(e|0))}else j=0.0;if(j/(o*o+m*m)>f)if(((he(a,b,d,i,f,g,h)|0)>=0?(n=c[h>>2]|0,(n|0)<=5):0)?(c[g+(n<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(he(a,b,i,e,f,g,h)|0)>=0):0)p=7;else i=-1;else p=7;if((p|0)==7)i=0;return i|0}function ie(a,b,d,e,f,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+16|0;t=y+4|0;u=y;v=nf(2)|0;w=nf(2)|0;x=Re(2,2)|0;q=0;a:while(1){r=q;q=q+1|0;s=c[e+(q<<2)>>2]|0;l=c[e+(r<<2)>>2]|0;p=+(s+1-l|0)*.05+.5;l=~~(+(l|0)+p);s=~~(+(s|0)-p)-l|0;n=s+1|0;d=Re(n,2)|0;if((s|0)>-1){s=0;do{z=s+l|0;if((mf(f,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),t,u)|0)<0){l=10;break a}z=s<<1;A=c[d>>2]|0;h[A+(z<<3)>>3]=+g[t>>2];h[A+((z|1)<<3)>>3]=+g[u>>2];s=s+1|0}while((s|0)<(n|0))}if((Ye(d,x,v,w)|0)<0){l=10;break}A=c[x>>2]|0;o=+h[A+8>>3];h[j+(r*24|0)>>3]=o;p=-+h[A>>3];h[j+(r*24|0)+8>>3]=p;A=c[w>>2]|0;h[j+(r*24|0)+16>>3]=-(o*+h[A>>3]+ +h[A+8>>3]*p);We(d)|0;if((q|0)>=4){l=7;break}}b:do if((l|0)==7){We(x)|0;of(w)|0;of(v)|0;q=0;while(1){d=(q+3|0)%4|0;l=j+(d*24|0)|0;m=+h[j+(q*24|0)+8>>3];n=j+(q*24|0)|0;o=+h[j+(d*24|0)+8>>3];p=+h[l>>3]*m-+h[n>>3]*o;if(+O(+p)<.0001){d=-1;break b}A=j+(q*24|0)+16|0;z=j+(d*24|0)+16|0;h[k+(q<<4)>>3]=(o*+h[A>>3]-m*+h[z>>3])/p;h[k+(q<<4)+8>>3]=(+h[n>>3]*+h[z>>3]-+h[l>>3]*+h[A>>3])/p;q=q+1|0;if((q|0)>=4){d=0;break}}}else if((l|0)==10){We(d)|0;We(x)|0;of(w)|0;of(v)|0;d=-1}while(0);i=y;return d|0}function je(a,b,d,e,f,j,k,l,m,n,o,p,q,r){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;D=F+4|0;E=F;z=m>>>0<2;A=(m|0)==2;if((j|0)>0){C=0;s=0;do{c[p+(s<<8)>>2]=c[f+(C*80048|0)>>2];if((mf(n,+h[f+(C*80048|0)+8>>3],+h[f+(C*80048|0)+16>>3],D,E)|0)>=0?(h[p+(s<<8)+56>>3]=+g[D>>2],h[p+(s<<8)+64>>3]=+g[E>>2],B=p+(s<<8)+168|0,(ie(f+(C*80048|0)+28|0,f+(C*80048|0)+40028|0,c[f+(C*80048|0)+24>>2]|0,f+(C*80048|0)+80028|0,n,p+(s<<8)+72|0,B)|0)>=0):0){t=p+(s<<8)+8|0;u=p+(s<<8)+20|0;v=p+(s<<8)+40|0;w=p+(s<<8)+12|0;x=p+(s<<8)+24|0;y=p+(s<<8)+48|0;switch(De(k,l,m,a,b,d,e,n,B,o,t,u,v,w,x,y,r,p+(s<<8)+240|0,p+(s<<8)+248|0)|0){case 0:{c[p+(s<<8)+236>>2]=0;break}case -1:{c[p+(s<<8)+236>>2]=2;break}case -2:{c[p+(s<<8)+236>>2]=3;break}case -3:{c[p+(s<<8)+236>>2]=4;break}case -4:{c[p+(s<<8)+236>>2]=5;break}case -5:{c[p+(s<<8)+236>>2]=9;break}case -6:{c[p+(s<<8)+236>>2]=1;break}default:{}}if(!z){if(A){c[p+(s<<8)+4>>2]=c[w>>2];c[p+(s<<8)+16>>2]=c[x>>2];h[p+(s<<8)+32>>3]=+h[y>>3]}}else{c[p+(s<<8)+4>>2]=c[t>>2];c[p+(s<<8)+16>>2]=c[u>>2];h[p+(s<<8)+32>>3]=+h[v>>3]}s=s+1|0}C=C+1|0}while((C|0)<(j|0))}else s=0;c[q>>2]=s;i=F;return 0}function ke(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;k=i;i=i+288|0;m=k+200|0;l=k+104|0;f=k+264|0;j=k+8|0;g=k;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=d*-.5;h[l>>3]=n;d=d*.5;h[l+8>>3]=d;h[l+16>>3]=0.0;h[l+24>>3]=d;h[l+32>>3]=d;h[l+40>>3]=0.0;h[l+48>>3]=d;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=4;if((Ef(c[a>>2]|0,m,l,4,j)|0)<0)d=1.0e8;else{p=(zf(c[a>>2]|0,f,j,e,g)|0)<0;d=p?1.0e8:+h[g>>3]}i=k;return +d}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;j=i;i=i+192|0;m=j+104|0;l=j+8|0;k=j+168|0;g=j;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=e*-.5;h[l>>3]=n;e=e*.5;h[l+8>>3]=e;h[l+16>>3]=0.0;h[l+24>>3]=e;h[l+32>>3]=e;h[l+40>>3]=0.0;h[l+48>>3]=e;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[k>>2]=m;c[k+4>>2]=l;c[k+8>>2]=4;b=(zf(c[a>>2]|0,k,d,f,g)|0)<0;i=j;return +(b?1.0e8:+h[g>>3])}function me(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((zf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function ne(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((Bf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Uj(2080)|0;a:do if(f){c[f+2068>>2]=d;b:do if(!e){switch(d|0){case 5:case 12:case 13:case 14:break;default:{g=4;break b}}c[f+2076>>2]=0}else g=4;while(0);do if((g|0)==4){g=Uj($(b,a)|0)|0;c[f>>2]=g;if(!g){Vj(f);f=0;break a}else{c[f+2076>>2]=1;break}}while(0);c[f+2072>>2]=e;c[f+4>>2]=0;c[f+8>>2]=a;c[f+12>>2]=b}while(0);return f|0}function pe(a){a=a|0;if(a){if(c[a+2076>>2]|0)Vj(c[a>>2]|0);Vj(c[a+4>>2]|0);Vj(a)}return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;g=k;f=c[b+2068>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:if(!(c[b+2072>>2]|0)){c[b>>2]=e;f=0;break a}else{ik(c[b>>2]|0,e|0,$(c[b+12>>2]|0,c[b+8>>2]|0)|0)|0;f=0;break a}default:{if((f&-2|0)==2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j|2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if((f&-3|0)==4){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|2)>>0]|0)+(d[e+(j|1)>>0]|0)+(d[e+(j|3)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if(f>>>0<2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j+1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j+2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+3|0}}switch(f|0){case 8:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+j>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 7:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+(j|1)>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 9:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;l=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&248)+10+(m<<5&224)+(l>>>3&28)+(l<<3&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 10:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){l=d[e+j>>0]|0;m=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((l&248)+12+(l<<5&224)+(m>>>3&24)+(m<<2&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 11:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&240)+24+(m<<4&240)+((d[e+(j|1)>>0]|0)&240)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}default:{Me(3,4361,g);f=-1;break a}}}}while(0);i=k;return f|0}function re(a,b){a=a|0;b=b|0;var e=0,f=0;if((a|0)!=0&(b|0)!=0?(qe(a,b)|0)>=0:0){ek(a+16|0,0,1024)|0;b=c[a>>2]|0;f=$(c[a+12>>2]|0,c[a+8>>2]|0)|0;e=b+f|0;if((f|0)>0){do{f=a+16+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}while(b>>>0>>0);b=0}else b=0}else b=-1;return b|0}function se(a,b){a=a|0;b=b|0;var d=0;b=re(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+16+(d<<2)>>2]|0)+b|0;c[a+1040+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function te(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0;if(!(e<0.0|e>1.0)){d=se(b,d)|0;if((d|0)>=0){i=~~(+($(c[b+12>>2]|0,c[b+8>>2]|0)|0)*e)>>>0;d=0;while(1){h=d&255;g=c[b+1040+(h<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}if((g|0)==(i|0))do d=d+1<<24>>24;while((c[b+1040+((d&255)<<2)>>2]|0)==(i|0));a[f>>0]=((d&255)+h|0)>>>1;d=0}}else d=-1;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=c|0;return te(a,b,.5,c)|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0;d=re(b,d)|0;if((d|0)>=0){d=1;f=0.0;do{f=f+ +(($(c[b+16+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+($(c[b+12>>2]|0,c[b+8>>2]|0)|0);l=0;h=0.0;d=0;j=0.0;m=0.0;while(1){g=c[b+16+(l<<2)>>2]|0;m=m+ +(g>>>0);if(m!=0.0){i=k-m;if(i==0.0)break;h=h+ +(($(l,g)|0)>>>0);n=h/m-(f-h)/i;i=n*(m*i*n);if(i>j)d=l&255;else i=j}else i=j;if((l&255)<<24>>24==-1)break;else{l=l+1|0;j=i}}a[e>>0]=d;d=0}return d|0}function we(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=re(b,e)|0;do if((e|0)>=0){t=b+4|0;if(!(c[t>>2]|0)){e=b+8|0;h=b+12|0;s=Uj($(c[h>>2]|0,c[e>>2]|0)|0)|0;c[t>>2]=s;if(!s){e=-1;break}else s=e}else{s=b+8|0;h=b+12|0}q=f>>1;r=0-q|0;e=c[h>>2]|0;if((e|0)>0){n=(q|0)<(r|0);o=(q|0)<(r|0);p=0;do{e=c[s>>2]|0;if((e|0)>0){m=0;do{if(n){i=0;f=0}else{i=0;l=r;f=0;while(1){j=l+p|0;if(((j|0)>=0?(j|0)<(c[h>>2]|0):0)?(u=$(e,j)|0,!o):0){k=r;while(1){j=k+m|0;if((j|0)>-1&(j|0)<(e|0)){i=i+1|0;f=(d[(c[b>>2]|0)+(u+j)>>0]|0)+f|0}if((k|0)<(q|0))k=k+1|0;else break}}if((l|0)<(q|0))l=l+1|0;else break}}l=($(e,p)|0)+m|0;a[(c[t>>2]|0)+l>>0]=(f|0)/(i|0)|0;m=m+1|0;e=c[s>>2]|0}while((m|0)<(e|0))}p=p+1|0;e=c[h>>2]|0}while((p|0)<(e|0))}if((g|0)!=0?($(e,c[s>>2]|0)|0)>0:0){e=0;do{b=(c[t>>2]|0)+e|0;a[b>>0]=(d[b>>0]|0)+g;e=e+1|0}while((e|0)<($(c[h>>2]|0,c[s>>2]|0)|0));e=0}else e=0}while(0);return e|0}function xe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;a:do switch(e|0){case 0:{switch(f|0){case 1:{if(j){k=Fc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=wc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=yc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Bc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Cc(a,b,c,g,i)|0;break a}case 8:{k=Ec(a,b,c,g,i)|0;break a}case 7:{k=Dc(a,b,c,g,i)|0;break a}case 9:{k=xc(a,b,c,g,i)|0;break a}case 10:{k=Ac(a,b,c,g,i)|0;break a}case 11:{k=zc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=nc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=pc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=sc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=tc(a,b,c,g,i)|0;break a}case 8:{k=vc(a,b,c,g,i)|0;break a}case 7:{k=uc(a,b,c,g,i)|0;break a}case 9:{k=oc(a,b,c,g,i)|0;break a}case 10:{k=rc(a,b,c,g,i)|0;break a}case 11:{k=qc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Yc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=Pc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Rc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Uc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Vc(a,b,c,g,i)|0;break a}case 8:{k=Xc(a,b,c,g,i)|0;break a}case 7:{k=Wc(a,b,c,g,i)|0;break a}case 9:{k=Qc(a,b,c,g,i)|0;break a}case 10:{k=Tc(a,b,c,g,i)|0;break a}case 11:{k=Sc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Gc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Ic(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Lc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Mc(a,b,c,g,i)|0;break a}case 8:{k=Oc(a,b,c,g,i)|0;break a}case 7:{k=Nc(a,b,c,g,i)|0;break a}case 9:{k=Hc(a,b,c,g,i)|0;break a}case 10:{k=Kc(a,b,c,g,i)|0;break a}case 11:{k=Jc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}case 1:{switch(f|0){case 1:{if(j){k=pd(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=gd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=id(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=ld(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=md(a,b,c,g,i)|0;break a}case 8:{k=od(a,b,c,g,i)|0;break a}case 7:{k=nd(a,b,c,g,i)|0;break a}case 9:{k=hd(a,b,c,g,i)|0;break a}case 10:{k=kd(a,b,c,g,i)|0;break a}case 11:{k=jd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Zc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=$c(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=cd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=dd(a,b,c,g,i)|0;break a}case 8:{k=fd(a,b,c,g,i)|0;break a}case 7:{k=ed(a,b,c,g,i)|0;break a}case 9:{k=_c(a,b,c,g,i)|0;break a}case 10:{k=bd(a,b,c,g,i)|0;break a}case 11:{k=ad(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Id(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=zd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Bd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Ed(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Fd(a,b,c,g,i)|0;break a}case 8:{k=Hd(a,b,c,g,i)|0;break a}case 7:{k=Gd(a,b,c,g,i)|0;break a}case 9:{k=Ad(a,b,c,g,i)|0;break a}case 10:{k=Dd(a,b,c,g,i)|0;break a}case 11:{k=Cd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=qd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=sd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=vd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=wd(a,b,c,g,i)|0;break a}case 8:{k=yd(a,b,c,g,i)|0;break a}case 7:{k=xd(a,b,c,g,i)|0;break a}case 9:{k=rd(a,b,c,g,i)|0;break a}case 10:{k=ud(a,b,c,g,i)|0;break a}case 11:{k=td(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}default:rb(0)}while(0);return k|0}function ye(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;d=0}else d=-1;return d|0}function ze(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;b=0}else b=-1;return b|0}function Ae(){return Be(16,50)|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+56|0;p=r+48|0;j=r+40|0;h=r+32|0;g=r+24|0;f=r+16|0;e=r+8|0;d=r;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){n=Uj(32)|0;if(!n){Me(3,5472,d);rb(1)}c[n>>2]=0;c[n+4>>2]=b;c[n+28>>2]=a;m=Uj(b<<2)|0;c[n+8>>2]=m;if(!m){Me(3,5472,e);rb(1)}d=b<<4;l=Uj(d)|0;c[n+12>>2]=l;if(!l){Me(3,5472,f);rb(1)}f=Uj(d)|0;k=n+20|0;c[k>>2]=f;if(!f){Me(3,5472,g);rb(1)}d=b<<5;g=Uj(d)|0;c[n+16>>2]=g;if(!g){Me(3,5472,h);rb(1)}h=Uj(d)|0;c[n+24>>2]=h;if(!h){Me(3,5472,j);rb(1)}e=$(a,a)|0;d=e*12|0;e=e<<2;if((b|0)>0){a=0;b:while(1){c[m+(a<<2)>>2]=0;f=a<<2;h=0;while(1){if((h|0)>=4)break;j=Uj(d)|0;g=h+f|0;c[l+(g<<2)>>2]=j;if(!j){d=18;break b}j=Uj(e)|0;c[(c[k>>2]|0)+(g<<2)>>2]=j;if(!j){d=20;break b}else h=h+1|0}a=a+1|0;if((a|0)>=(b|0)){o=n;break a}}if((d|0)==18){Me(3,5472,p);rb(1)}else if((d|0)==20){Me(3,5472,q);rb(1)}}else o=n}else o=0;while(0);i=r;return o|0}function Ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)b=-1;else{b=a+4|0;d=a+8|0;e=a+12|0;f=a+20|0;if((c[b>>2]|0)>0){g=0;do{if(c[(c[d>>2]|0)+(g<<2)>>2]|0)Le(a,g)|0;h=g<<2;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);i=1+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);i=2+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);h=3+h|0;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Vj(a);b=0}return b|0}function De(b,e,f,g,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;var y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+12448|0;A=L+12440|0;z=L+8|0;J=L;I=L+12312|0;K=L+24|0;do if((f+-2|0)>>>0<3){if((v|0)!=2830){y=v&255;if((Ee(e,2,y,y*3|0,g,j,k,l,m,n,o,K)|0)<0){c[s>>2]=-1;y=-6;break}y=Fe(K,y,s,t,u,v,w)|0;if(!x)break;c[x>>2]=0;c[x+4>>2]=0;break}if((Ee(e,2,14,42,g,j,k,l,m,n,.875,K)|0)<0){c[s>>2]=-1;y=-6;break}c[z>>2]=0;c[z+4>>2]=182;c[z+8>>2]=195;c[z+12>>2]=13;v=a[K+(c[z>>2]|0)>>0]|0;y=(v&255)>0?v:0;v=(v&255)<255?v:-1;H=a[K+(c[z+4>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+8>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+12>>2]|0)>>0]|0;y=((H&255)>(y&255)?H:y)&255;v=((H&255)<(v&255)?H:v)&255;a:do if((y-v|0)>=30){H=(y+v|0)>>>1;a[A>>0]=(d[K+(c[z>>2]|0)>>0]|0)>>>0>>0&1;a[A+1>>0]=(d[K+(c[z+4>>2]|0)>>0]|0)>>>0>>0&1;a[A+2>>0]=(d[K+(c[z+8>>2]|0)>>0]|0)>>>0>>0&1;a[A+3>>0]=(d[K+(c[z+12>>2]|0)>>0]|0)>>>0>>0&1;v=0;while(1){y=v+1|0;if(((a[A+v>>0]|0)==1?(a[A+((y|0)%4|0)>>0]|0)==1:0)?(a[A+((v+2|0)%4|0)>>0]|0)==0:0){G=v;break}if((y|0)<4)v=y;else{G=y;break}}switch(G|0){case 4:{c[t>>2]=0;h[u>>3]=-1.0;y=-3;v=0;z=0;break a}case 0:{z=119;y=255;v=0;do{D=v+-3|0;B=(v&-2|0)==12;C=v*14|0;A=0;do{if(((A+-3|D)>>>0>=8?(F=A&-2,(A|v)>>>0>=2):0)?!(B&((F|0)==0|(F|0)==12)):0){E=(d[K+(A+C)>>0]|0)-H|0;a[I+z>>0]=E>>>31;E=(E|0)>-1?E:0-E|0;z=z+-1|0;y=(E|0)<(y|0)?E:y}A=A+1|0}while((A|0)!=14);v=v+1|0}while((v|0)!=14);break}case 1:{z=119;y=255;v=0;do{D=v+-3|0;C=v&-2;B=(C|0)==0;C=(C|0)==12;A=13;while(1){if(((A+-3|D)>>>0>=8?(E=(A&-2|0)==12,!(B&E)):0)?!(C&(A>>>0<2|E)):0){F=(d[K+((A*14|0)+v)>>0]|0)-H|0;a[I+z>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;z=z+-1|0;y=(F|0)<(y|0)?F:y}if((A|0)>0)A=A+-1|0;else break}v=v+1|0}while((v|0)!=14);break}case 2:{v=119;y=255;D=13;while(1){B=D+-3|0;C=D>>>0<2|(D&-2|0)==12;A=D*14|0;z=13;while(1){if((z+-3|B)>>>0>=8?!((z|D)>>>0<2|C&(z&-2|0)==12):0){F=(d[K+(z+A)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}if((z|0)>0)z=z+-1|0;else break}if((D|0)>0)D=D+-1|0;else break}break}case 3:{v=119;y=255;D=13;while(1){C=D+-3|0;B=D&-2;A=(B|0)==12;B=(B|0)==0;z=0;do{if(((z+-3|C)>>>0>=8?!(A&z>>>0<2|(z|D)>>>0<2):0)?!(B&(z&-2|0)==12):0){F=(d[K+((z*14|0)+D)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}z=z+1|0}while((z|0)!=14);if((D|0)>0)D=D+-1|0;else break}break}default:y=255}c[t>>2]=G;h[u>>3]=(y|0)>30?1.0:+(y|0)/30.0;y=Ie(2830,0,0,I,J)|0;if((y|0)<0){y=-4;v=0;z=0}else{if(w)c[w>>2]=y;z=J;y=0;v=c[z>>2]|0;z=c[z+4>>2]|0}}else{c[t>>2]=0;h[u>>3]=-1.0;y=-2;v=0;z=0}while(0);if((y|0)<0){c[s>>2]=-1;break}if((v|0)==-1&(z|0)==-1){c[s>>2]=-1;y=-5;break}c[s>>2]=(v&-32768|0)==0&0==0?v&32767:0;if(!x)y=0;else{y=x;c[y>>2]=v;c[y+4>>2]=z;y=0}}else y=1;while(0);b:do switch(f|0){case 0:case 1:case 3:case 4:{if(!b){c[p>>2]=-1;v=-1;break b}v=b+28|0;z=c[v>>2]|0;A=z<<2;switch(f|0){case 0:case 3:if((Ee(e,0,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,0,K,c[v>>2]|0,p,q,r)|0;break b}default:if((Ee(e,1,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,1,K,c[v>>2]|0,p,q,r)|0;break b}}}default:v=1}while(0);if((y|0)!=1){if((v|0)!=1)y=(v&y|0)<0?v:0}else y=v;i=L;return y|0} +function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;b=k+8|0;h=k+4|0;d=k;c[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;c[d>>2]=a-e;b=($j(3712,3904,d,b)|0)-3712>>2;f=b;b=(c[3712+(b<<2)>>2]|0)+e|0;a:while(1){e=5;while(1){if(e>>>0>=47){e=211;j=8;break}d=c[3520+(e<<2)>>2]|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=106;break a}if((b|0)==($(a,d)|0))break;else e=e+1|0}b:do if((j|0)==8)while(1){j=0;d=(b>>>0)/(e>>>0)|0;if(d>>>0>>0){j=105;break a}if((b|0)==($(d,e)|0))break b;d=e+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+208|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break;else{e=e+210|0;j=8}}while(0);e=f+1|0;b=(e|0)==48;e=b?0:e;b=(b&1)+g|0;f=e;g=b;b=(c[3712+(e<<2)>>2]|0)+(b*210|0)|0}if((j|0)==105){c[h>>2]=b;break}else if((j|0)==106){c[h>>2]=b;break}}else b=c[($j(3520,3712,h,b)|0)>>2]|0;while(0);i=k;return b|0}function $j(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a;d=b-a>>2;a:while(1){while(1){if(!d)break a;a=(d|0)/2|0;if((c[e+(a<<2)>>2]|0)>>>0>>0)break;else d=a}e=e+(a+1<<2)|0;d=d+-1-a|0}return e|0}function ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>4294967279)oi(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{g=e+16&-16;f=Kh(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}ik(b|0,d|0,e|0)|0;a[b+e>>0]=0;return}function bk(b){b=b|0;if(a[b>>0]&1)Lh(c[b+8>>2]|0);return}function ck(){}function dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (D=d,a-c>>>0|0)|0}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<>>0;return (D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function ik(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Xa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function kk(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (D=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function mk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=dk(j^a,i^b,j,i)|0;g=D;a=f^j;b=e^i;return dk((rk(h,g,dk(f^c,e^d,f,e)|0,D,0)|0)^a,D^b,a,b)|0}function nk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=dk(h^a,g^b,h,g)|0;b=D;rk(a,b,dk(l^d,k^e,l,k)|0,D,j)|0;e=dk(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=D;i=f;return (D=d,e)|0}function ok(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=lk(e,f)|0;a=D;return (D=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rk(a,b,c,d,0)|0}function qk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;rk(a,b,d,e,f)|0;i=g;return (D=c[f+4>>2]|0,c[f>>2]|0)|0}function rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (D=n,f)|0}else{if(!g){n=0;f=0;return (D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (D=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (D=n,f)|0}g=h-1|0;if(g&h){i=(ba(h|0)|0)+33-(ba(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (D=o,p)|0}else{p=kk(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (D=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (D=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (D=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((kk(i|0)|0)>>>0);return (D=o,p)|0}g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (D=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gk(m|0,l|0,-1,-1)|0;d=D;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;dk(k,d,e,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=dk(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=D;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (D=o,p)|0}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b|0,c|0,d|0)|0}function tk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Rb[a&3](b|0,c|0,d|0,e|0,f|0)}function uk(a,b,c){a=a|0;b=b|0;c=c|0;return +Sb[a&1](b|0,c|0)}function vk(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function wk(a,b){a=a|0;b=b|0;return +Ub[a&3](b|0)}function xk(a){a=a|0;return Vb[a&1]()|0}function yk(a,b){a=a|0;b=b|0;Wb[a&15](b|0)}function zk(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b|0,c|0)}function Ak(a,b){a=a|0;b=b|0;return Yb[a&31](b|0)|0}function Bk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zb[a&1](b|0,c|0,d|0)}function Ck(a){a=a|0;_b[a&0]()}function Dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;$b[a&3](b|0,c|0,+d)}function Ek(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ac[a&1](b|0,c|0,d|0,e|0)|0}function Fk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b|0,c|0)|0}function Hk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dc[a&3](b|0,c|0,d|0,e|0)}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;ca(0);return 0}function Jk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ca(1)}function Kk(a,b){a=a|0;b=b|0;ca(2);return 0.0}function Lk(a,b){a=a|0;b=+b;ca(3)}function Mk(a){a=a|0;ca(4);return 0.0}function Nk(){ca(5);return 0}function Ok(a){a=a|0;ca(6)}function Pk(a,b){a=a|0;b=b|0;ca(7)}function Qk(a){a=a|0;ca(8);return 0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;ca(9)}function Sk(){ca(10)}function Tk(a,b,c){a=a|0;b=b|0;c=+c;ca(11)}function Uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(12);return 0}function Vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ca(13)}function Wk(a,b){a=a|0;b=b|0;ca(14);return 0}function Xk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(15)} + +// EMSCRIPTEN_END_FUNCS +var Qb=[Ik,Zh,_h,Qj,Qi,Pi,Ri,Ag,sg,qg,rg,yg,kh,jh,Oi,Mj];var Rb=[Jk,ki,ji,gi];var Sb=[Kk,dh];var Tb=[Lk,Wf,Yf,ag];var Ub=[Mk,Xf,Zf,bg];var Vb=[Nk,Nf];var Wb=[Ok,Mh,Nh,Sh,Vh,Th,Uh,Wh,Xh,Yh,Mf,Xg,Yg,Ij,Jj,Ok];var Xb=[Pk,ig,gg,_f,cg,eg,ng,gh];var Yb=[Qk,Oh,Ni,Pf,Vf,Qf,wg,xg,mg,lg,jg,hg,$f,dg,fg,og,fh,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk];var Zb=[Rk,ch];var _b=[Sk];var $b=[Tk,eh,bh,Tk];var ac=[Uk,mh];var bc=[Vk,ni,mi,li];var cc=[Wk,Df,Sf,Tf,Uf,tg,vg,ug,zg,kg,lh,hh,Wk,Wk,Wk,Wk];var dc=[Xk,ai,bi,di];return{_i64Subtract:dk,_fflush:Yi,_i64Add:gk,_memset:ek,_malloc:Uj,_memcpy:ik,___getTypeName:Ah,_bitshift64Lshr:hk,_free:Vj,___errno_location:qi,_bitshift64Shl:fk,__GLOBAL__sub_I_ARToolKitJS_cpp:Wg,__GLOBAL__sub_I_bind_cpp:Ch,runPostSets:ck,stackAlloc:ec,stackSave:fc,stackRestore:gc,establishStackSpace:hc,setThrew:ic,setTempRet0:lc,getTempRet0:mc,dynCall_iiii:sk,dynCall_viiiii:tk,dynCall_dii:uk,dynCall_vid:vk,dynCall_di:wk,dynCall_i:xk,dynCall_vi:yk,dynCall_vii:zk,dynCall_ii:Ak,dynCall_viii:Bk,dynCall_v:Ck,dynCall_viid:Dk,dynCall_iiiii:Ek,dynCall_viiiiii:Fk,dynCall_iii:Gk,dynCall_viiii:Hk}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var _fflush=Module["_fflush"]=asm["_fflush"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memset=Module["_memset"]=asm["_memset"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _free=Module["_free"]=asm["_free"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() +;(function() { + 'use strict' + + /** + The ARController is the main object for doing AR marker detection with JSARToolKit. + + To use an ARController, you need to tell it the dimensions to use for the AR processing canvas and + pass it an ARCameraParam to define the camera parameters to use when processing images. + The ARCameraParam defines the lens distortion and aspect ratio of the camera used. + See https://www.artoolworks.com/support/library/Calibrating_your_camera for more information about AR camera parameteters and how to make and use them. + + If you pass an image as the first argument, the ARController uses that as the image to process, + using the dimensions of the image as AR processing canvas width and height. If the first argument + to ARController is an image, the second argument is used as the camera param. + + The camera parameters argument can be either an ARCameraParam or an URL to a camera definition file. + If the camera argument is an URL, it is loaded into a new ARCameraParam, and the ARController dispatches + a 'load' event and calls the onload method if it is defined. + + @exports ARController + @constructor + + @param {number} width The width of the images to process. + @param {number} height The height of the images to process. + @param {ARCameraParam | string} camera The ARCameraParam to use for image processing. If this is a string, the ARController treats it as an URL and tries to load it as a ARCameraParam definition file, calling ARController#onload on success. + */ + var ARController = function(width, height, camera) { + var id; + var w = width, h = height; + + this.orientation = 'landscape'; + + this.listeners = {}; + + if (typeof width !== 'number') { + var image = width; + camera = height; + w = image.videoWidth || image.width; + h = image.videoHeight || image.height; + this.image = image; + } + + this.defaultMarkerWidth = 1; + this.patternMarkers = {}; + this.barcodeMarkers = {}; + this.transform_mat = new Float32Array(16); + + this.canvas = document.createElement('canvas'); + this.canvas.width = w; + this.canvas.height = h; + this.ctx = this.canvas.getContext('2d'); + + this.videoWidth = w; + this.videoHeight = h; + + if (typeof camera === 'string') { + + var self = this; + this.cameraParam = new ARCameraParam(camera, function() { + self._initialize(); + }, function(err) { + console.error("ARController: Failed to load ARCameraParam", err); + }); + + } else { + + this.cameraParam = camera; + this._initialize(); + + } + }; + + /** + Destroys the ARController instance and frees all associated resources. + After calling dispose, the ARController can't be used any longer. Make a new one if you need one. + + Calling this avoids leaking Emscripten memory, which may be important if you're using multiple ARControllers. + */ + ARController.prototype.dispose = function() { + artoolkit.teardown(this.id); + + for (var t in this) { + this[t] = null; + } + }; + + /** + Detects markers in the given image. The process method dispatches marker detection events during its run. + + The marker detection process proceeds by first dispatching a markerNum event that tells you how many + markers were found in the image. Next, a getMarker event is dispatched for each found marker square. + Finally, getMultiMarker is dispatched for every found multimarker, followed by getMultiMarkerSub events + dispatched for each of the markers in the multimarker. + + arController.addEventListener('markerNum', function(ev) { + console.log("Detected " + ev.data + " markers.") + }); + arController.addEventListener('getMarker', function(ev) { + console.log("Detected marker with ids:", ev.data.marker.id, ev.data.marker.idPatt, ev.data.marker.idMatrix); + console.log("Marker data", ev.data.marker); + console.log("Marker transform matrix:", [].join.call(ev.data.matrix, ', ')); + }); + arController.addEventListener('getMultiMarker', function(ev) { + console.log("Detected multimarker with id:", ev.data.multiMarkerId); + }); + arController.addEventListener('getMultiMarkerSub', function(ev) { + console.log("Submarker for " + ev.data.multiMarkerId, ev.data.markerIndex, ev.data.marker); + }); + + arController.process(image); + + + If no image is given, defaults to this.image. + + If the debugSetup has been called, draws debug markers on the debug canvas. + + @param {ImageElement | VideoElement} image The image to process [optional]. + */ + ARController.prototype.process = function(image) { + this.detectMarker(image); + + var markerNum = this.getMarkerNum(); + var k,o; + for (k in this.patternMarkers) { + o = this.patternMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + for (k in this.barcodeMarkers) { + o = this.barcodeMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + + for (var i=0; i -1 && (markerInfo.id === markerInfo.idPatt || markerInfo.idMatrix === -1)) { + visible = this.trackPatternMarkerId(markerInfo.idPatt); + markerType = artoolkit.PATTERN_MARKER; + + if (markerInfo.dir !== markerInfo.dirPatt) { + this.setMarkerInfoDir(i, markerInfo.dirPatt); + } + + } else if (markerInfo.idMatrix > -1) { + visible = this.trackBarcodeMarkerId(markerInfo.idMatrix); + markerType = artoolkit.BARCODE_MARKER; + + if (markerInfo.dir !== markerInfo.dirMatrix) { + this.setMarkerInfoDir(i, markerInfo.dirMatrix); + } + } + + if (markerType !== artoolkit.UNKNOWN_MARKER && visible.inPrevious) { + this.getTransMatSquareCont(i, visible.markerWidth, visible.matrix, visible.matrix); + } else { + this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + } +// this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + + visible.inCurrent = true; + this.transMatToGLMat(visible.matrix, this.transform_mat); + this.dispatchEvent({ + name: 'getMarker', + target: this, + data: { + index: i, + type: markerType, + marker: markerInfo, + matrix: this.transform_mat + } + }); + } + + var multiMarkerCount = this.getMultiMarkerCount(); + for (var i=0; i= 0) { + visible = true; + this.dispatchEvent({ + name: 'getMultiMarker', + target: this, + data: { + multiMarkerId: i, + matrix: this.transform_mat + } + }); + break; + } + } + if (visible) { + for (var j=0; j -1) { + this.listeners[name].splice(index, 1); + } + } + }; + + /** + Dispatches the given event to all registered listeners on event.name. + + @param {Object} event Event to dispatch. + */ + ARController.prototype.dispatchEvent = function(event) { + var listeners = this.listeners[event.name]; + if (listeners) { + for (var i=0; i= 0) if marker is valid, or -1 if invalid. + @field idPatt If pattern detection mode includes a pattern mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field idMatrix If pattern detection mode includes a matrix mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field dir If pattern detection mode is either pattern mode OR matrix but not both, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirPatt If pattern detection mode includes a pattern mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirMatrix If pattern detection mode includes a matrix mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field cf If pattern detection mode is either pattern mode OR matrix but not both, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfPatt If pattern detection mode includes a pattern mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfMatrix If pattern detection mode includes a matrix mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field pos 2D position (in camera image coordinates, origin at top-left) of the centre of the marker. + @field line Line equations for the 4 sides of the marker. + @field vertex 2D positions (in camera image coordinates, origin at top-left) of the corners of the marker. vertex[(4 - dir)%4][] is the top-left corner of the marker. Other vertices proceed clockwise from this. These are idealised coordinates (i.e. the onscreen position aligns correctly with the undistorted camera image.) + + + @param {number} markerIndex The index of the marker to query. + @returns {Object} The markerInfo struct. + */ + ARController.prototype.getMarker = function(markerIndex) { + if (0 === artoolkit.getMarker(this.id, markerIndex)) { + return artoolkit.markerInfo; + } + }; + + /** + Set marker vertices to the given vertexData[4][2] array. + + Sets the marker pos to the center of the vertices. + + Useful for building custom markers for getTransMatSquare. + + A markerIndex of -1 is used to access the global custom marker. + + @param {number} markerIndex The index of the marker to edit. + */ + ARController.prototype.setMarkerInfoVertex = function(markerIndex, vertexData) { + for (var i=0; i image.height ) || + (image.nodeName === 'VIDEO' && image.videoWidth > image.videoHeight) ){ + // if landscape + this.ctx.drawImage(image, 0, 0, this.canvas.width, this.canvas.height); // draw video + }else{ + // if portrait + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + var scale = this.canvas.height / this.canvas.width; + var scaledHeight = this.canvas.width*scale; + var scaledWidth = this.canvas.height*scale; + var marginLeft = ( this.canvas.width - scaledWidth)/2; + this.ctx.drawImage(image, marginLeft, 0, scaledWidth, scaledHeight); // draw video + } + + var imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height); + var data = imageData.data; + + if (this.dataHeap) { + this.dataHeap.set( data ); + return true; + } + return false; + }; + + ARController.prototype._debugMarker = function(marker) { + var vertex, pos; + vertex = marker.vertex; + var ctx = this.ctx; + ctx.strokeStyle = 'red'; + + ctx.beginPath() + ctx.moveTo(vertex[0][0], vertex[0][1]) + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[2][0], vertex[2][1]) + ctx.lineTo(vertex[3][0], vertex[3][1]) + ctx.stroke() + + ctx.strokeStyle = 'green'; + ctx.beginPath() + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.lineTo(vertex[2][0], vertex[2][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[3][0], vertex[3][1]) + ctx.lineTo(vertex[0][0], vertex[0][1]) + ctx.stroke(); + + pos = marker.pos + ctx.beginPath() + ctx.arc(pos[0], pos[1], 8, 0, Math.PI * 2) + ctx.fillStyle = 'red' + ctx.fill() + }; + + + // static + + /** + ARController.getUserMedia gets a device camera video feed and calls the given onSuccess callback with it. + + Tries to start playing the video. Playing the video can fail on Chrome for Android, + so ARController.getUserMedia adds user input event listeners to the window + that try to start playing the video. On success, the event listeners are removed. + + To use ARController.getUserMedia, call it with an object with the onSuccess attribute set to a callback function. + + ARController.getUserMedia({ + onSuccess: function(video) { + console.log("Got video", video); + } + }); + + The configuration object supports the following attributes: + + { + onSuccess : function(video), + onError : function(error), + + width : number | {min: number, ideal: number, max: number}, + height : number | {min: number, ideal: number, max: number}, + + facingMode : 'environment' | 'user' | 'left' | 'right' | { exact: 'environment' | ... } + } + + See https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia for more information about the + width, height and facingMode attributes. + + @param {object} configuration The configuration object. + @return {VideoElement} Returns the created video element. + */ + ARController.getUserMedia = function(configuration) { + var facing = configuration.facingMode || 'environment'; + + var onSuccess = configuration.onSuccess; + var onError = configuration.onError || function(err) { console.error("ARController.getUserMedia", err); }; + + var video = document.createElement('video'); + + var initProgress = function() { + if (this.videoWidth !== 0) { + onSuccess(video); + } + }; + + var readyToPlay = false; + var eventNames = [ + 'touchstart', 'touchend', 'touchmove', 'touchcancel', + 'click', 'mousedown', 'mouseup', 'mousemove', + 'keydown', 'keyup', 'keypress', 'scroll' + ]; + var play = function(ev) { + if (readyToPlay) { + video.play(); + if (!video.paused) { + eventNames.forEach(function(eventName) { + window.removeEventListener(eventName, play, true); + }); + } + } + }; + eventNames.forEach(function(eventName) { + window.addEventListener(eventName, play, true); + }); + + var success = function(stream) { + video.addEventListener('loadedmetadata', initProgress, false); + video.src = window.URL.createObjectURL(stream); + readyToPlay = true; + play(); // Try playing without user input, should work on non-Android Chrome + }; + + var constraints = {}; + var mediaDevicesConstraints = {}; + if (configuration.width) { + mediaDevicesConstraints.width = configuration.width; + if (typeof configuration.width === 'object') { + if (configuration.width.max) { + constraints.maxWidth = configuration.width.max; + } + if (configuration.width.min) { + constraints.minWidth = configuration.width.max; + } + } else { + constraints.maxWidth = configuration.width; + } + } + + if (configuration.height) { + mediaDevicesConstraints.height = configuration.height; + if (typeof configuration.height === 'object') { + if (configuration.height.max) { + constraints.maxHeight = configuration.height.max; + } + if (configuration.height.min) { + constraints.minHeight = configuration.height.max; + } + } else { + constraints.maxHeight = configuration.height; + } + } + + mediaDevicesConstraints.facingMode = facing; + + navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; + var hdConstraints = { + audio: false, + video: { + mandatory: constraints + } + }; + + if ( false ) { + // if ( navigator.mediaDevices || window.MediaStreamTrack) { + if (navigator.mediaDevices) { + navigator.mediaDevices.getUserMedia({ + audio: false, + video: mediaDevicesConstraints + }).then(success, onError); + } else { + MediaStreamTrack.getSources(function(sources) { + var facingDir = mediaDevicesConstraints.facingMode; + if (facing && facing.exact) { + facingDir = facing.exact; + } + for (var i=0; i -1) { // Or a string with the camera param + writeStringToFS(filename, url, writeCallback); + } else { + ajax(url, filename, writeCallback); + } + } + + + // transfer image + + function writeStringToFS(target, string, callback) { + var byteArray = new Uint8Array(string.length); + for (var i=0; i= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + markerObject3D.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent( { type: 'markerFound' } ); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * provide a name for a marker + * - silly heuristic for now + * - should be improved + */ +ARjs.MarkerControls.prototype.name = function(){ + var name = '' + name += this.parameters.type; + if( this.parameters.type === 'pattern' ){ + var url = this.parameters.patternUrl + var basename = url.replace(/^.*\//g, '') + name += ' - ' + basename + }else if( this.parameters.type === 'barcode' ){ + name += ' - ' + this.parameters.barcodeValue + }else{ + console.assert(false, 'no .name() implemented for this marker controls') + } + return name +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function(){ + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(function(){ + // check if arController is init + var arController = _this.context.arController + if( arController === null ) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000/50) + + return + + function postInit(){ + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null ) + + // start tracking this pattern + if( _this.parameters.type === 'pattern' ){ + arController.loadMarker(_this.parameters.patternUrl, function(markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + }else if( _this.parameters.type === 'barcode' ){ + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + }else if( _this.parameters.type === 'unknown' ){ + artoolkitMarkerId = null + }else{ + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function(event){ + if( event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern' ){ + if( artoolkitMarkerId === null ) return + if( event.data.marker.idPatt === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode' ){ + // console.log('BARCODE_MARKER idMatrix', event.data.marker.idMatrix, artoolkitMarkerId ) + if( artoolkitMarkerId === null ) return + if( event.data.marker.idMatrix === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown'){ + onMarkerFound(event) + } + }) + + } + + function onMarkerFound(event){ + // honor his.parameters.minConfidence + if( event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence ) return + if( event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence ) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) + } +} +var THREEx = THREEx || {} + +THREEx.ArMarkerHelper = function(markerControls){ + this.object3d = new THREE.Group + + var mesh = new THREE.AxesHelper() + this.object3d.add(mesh) + + var text = markerControls.id + // debugger + // var text = markerControls.parameters.patternUrl.slice(-1).toUpperCase(); + + var canvas = document.createElement( 'canvas' ); + canvas.width = 64; + canvas.height = 64; + + var context = canvas.getContext( '2d' ); + var texture = new THREE.CanvasTexture( canvas ); + + // put the text in the sprite + context.font = '48px monospace'; + context.fillStyle = 'rgba(192,192,255, 0.5)'; + context.fillRect( 0, 0, canvas.width, canvas.height ); + context.fillStyle = 'darkblue'; + context.fillText(text, canvas.width/4, 3*canvas.height/4 ) + texture.needsUpdate = true + + // var geometry = new THREE.CubeGeometry(1, 1, 1) + var geometry = new THREE.PlaneGeometry(1, 1) + var material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true + }); + var mesh = new THREE.Mesh(geometry, material) + mesh.rotation.x = -Math.PI/2 + + this.object3d.add(mesh) + +} +var THREEx = THREEx || {} + +/** + * - lerp position/quaternino/scale + * - minDelayDetected + * - minDelayUndetected + * @param {[type]} object3d [description] + * @param {[type]} parameters [description] + */ +THREEx.ArSmoothedControls = function(object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + // copy parameters + this.object3d.visible = false + + this._lastLerpStepAt = null + this._visibleStartedAt = null + this._unvisibleStartedAt = null + + // handle default parameters + parameters = parameters || {} + this.parameters = { + // lerp coeficient for the position - between [0,1] - default to 1 + lerpPosition: 0.8, + // lerp coeficient for the quaternion - between [0,1] - default to 1 + lerpQuaternion: 0.2, + // lerp coeficient for the scale - between [0,1] - default to 1 + lerpScale: 0.7, + // delay for lerp fixed steps - in seconds - default to 1/120 + lerpStepDelay: 1/60, + // minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds + minVisibleDelay: 0.0, + // minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds + minUnvisibleDelay: 0.2, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } +} + +THREEx.ArSmoothedControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +THREEx.ArSmoothedControls.prototype.constructor = THREEx.ArSmoothedControls; + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArSmoothedControls.prototype.update = function(targetObject3d){ + var object3d = this.object3d + var parameters = this.parameters + var wasVisible = object3d.visible + var present = performance.now()/1000 + + + ////////////////////////////////////////////////////////////////////////////// + // handle object3d.visible with minVisibleDelay/minUnvisibleDelay + ////////////////////////////////////////////////////////////////////////////// + if( targetObject3d.visible === false ) this._visibleStartedAt = null + if( targetObject3d.visible === true ) this._unvisibleStartedAt = null + + if( targetObject3d.visible === true && this._visibleStartedAt === null ) this._visibleStartedAt = present + if( targetObject3d.visible === false && this._unvisibleStartedAt === null ) this._unvisibleStartedAt = present + + if( wasVisible === false && targetObject3d.visible === true ){ + var visibleFor = present - this._visibleStartedAt + if( visibleFor >= this.parameters.minVisibleDelay ){ + object3d.visible = true + snapDirectlyToTarget() + } + // console.log('visibleFor', visibleFor) + } + + if( wasVisible === true && targetObject3d.visible === false ){ + var unvisibleFor = present - this._unvisibleStartedAt + if( unvisibleFor >= this.parameters.minUnvisibleDelay ){ + object3d.visible = false + } + } + + ////////////////////////////////////////////////////////////////////////////// + // apply lerp on positon/quaternion/scale + ////////////////////////////////////////////////////////////////////////////// + + // apply lerp steps - require fix time steps to behave the same no matter the fps + if( this._lastLerpStepAt === null ){ + applyOneSlerpStep() + this._lastLerpStepAt = present + }else{ + var nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay ) + for(var i = 0; i < nStepsToDo; i++){ + applyOneSlerpStep() + this._lastLerpStepAt += this.parameters.lerpStepDelay + } + } + + // disable the lerp by directly copying targetObject3d position/quaternion/scale + if( false ){ + snapDirectlyToTarget() + } + + // update the matrix + this.object3d.updateMatrix() + + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible/becameUnVisible event + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible event + if( wasVisible === false && object3d.visible === true ){ + this.dispatchEvent({ type: 'becameVisible' }) + } + // honor becameUnVisible event + if( wasVisible === true && object3d.visible === false ){ + this.dispatchEvent({ type: 'becameUnVisible' }) + } + return + + function snapDirectlyToTarget(){ + object3d.position.copy( targetObject3d.position ) + object3d.quaternion.copy( targetObject3d.quaternion ) + object3d.scale.copy( targetObject3d.scale ) + } + + function applyOneSlerpStep(){ + object3d.position.lerp(targetObject3d.position, parameters.lerpPosition) + object3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion) + object3d.scale.lerp(targetObject3d.scale, parameters.lerpScale) + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false); + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done); + } else console.assert(false); + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + markerControls.object3d.visible = false + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement); + } else { + console.assert(false); + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }) + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function (srcElement) { + + + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + // return the result + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +/** + * ArToolkitProfile helps you build parameters for artoolkit + * - it is fully independent of the rest of the code + * - all the other classes are still expecting normal parameters + * - you can use this class to understand how to tune your specific usecase + * - it is made to help people to build parameters without understanding all the underlying details. + */ +ARjs.Profile = THREEx.ArToolkitProfile = function () { + this.reset() + + this.performance('default') +} + + +ARjs.Profile.prototype._guessPerformanceLabel = function () { + var isMobile = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ? true : false + if (isMobile === true) { + return 'phone-normal' + } + return 'desktop-normal' +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all parameters + */ +ARjs.Profile.prototype.reset = function () { + this.sourceParameters = { + // to read from the webcam + sourceType: 'webcam', + } + + this.contextParameters = { + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + detectionMode: 'mono', + } + this.defaultMarkerParameters = { + type: 'pattern', + patternUrl: THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro', + changeMatrixMode: 'modelViewMatrix', + } + return this +}; + +////////////////////////////////////////////////////////////////////////////// +// Performance +////////////////////////////////////////////////////////////////////////////// + + + +ARjs.Profile.prototype.performance = function (label) { + + if (label === 'default') { + label = this._guessPerformanceLabel() + } + + if (label === 'desktop-fast') { + this.contextParameters.canvasWidth = 640 * 3 + this.contextParameters.canvasHeight = 480 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'desktop-normal') { + this.contextParameters.canvasWidth = 640 + this.contextParameters.canvasHeight = 480 + + this.contextParameters.maxDetectionRate = 60 + } else if (label === 'phone-normal') { + this.contextParameters.canvasWidth = 80 * 4 + this.contextParameters.canvasHeight = 60 * 4 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'phone-slow') { + this.contextParameters.canvasWidth = 80 * 3 + this.contextParameters.canvasHeight = 60 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else { + console.assert(false, 'unknonwn label ' + label) + } + return this +} + +////////////////////////////////////////////////////////////////////////////// +// Marker +////////////////////////////////////////////////////////////////////////////// + + +ARjs.Profile.prototype.defaultMarker = function (trackingBackend) { + trackingBackend = trackingBackend || this.contextParameters.trackingBackend + + if (trackingBackend === 'artoolkit') { + this.contextParameters.detectionMode = 'mono' + this.defaultMarkerParameters.type = 'pattern' + this.defaultMarkerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro' + } else console.assert(false) + + return this +} +////////////////////////////////////////////////////////////////////////////// +// Source +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.sourceWebcam = function () { + this.sourceParameters.sourceType = 'webcam' + delete this.sourceParameters.sourceUrl + return this +} + +ARjs.Profile.prototype.sourceVideo = function (url) { + this.sourceParameters.sourceType = 'video' + this.sourceParameters.sourceUrl = url + return this +} + +ARjs.Profile.prototype.sourceImage = function (url) { + this.sourceParameters.sourceType = 'image' + this.sourceParameters.sourceUrl = url + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingBackend = function (trackingBackend) { + console.warn('stop profile.trackingBackend() obsolete function. use .trackingMethod instead') + this.contextParameters.trackingBackend = trackingBackend + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.changeMatrixMode = function (changeMatrixMode) { + this.defaultMarkerParameters.changeMatrixMode = changeMatrixMode + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingMethod = function (trackingMethod) { + var data = ARjs.Utils.parseTrackingMethod(trackingMethod) + this.defaultMarkerParameters.markersAreaEnabled = data.markersAreaEnabled + this.contextParameters.trackingBackend = data.trackingBackend + return this +} + +/** + * check if the profile is valid. Throw an exception is not valid + */ +ARjs.Profile.prototype.checkIfValid = function () { + return this +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Source = THREEx.ArToolkitSource = function (parameters) { + var _this = this + + this.ready = false + this.domElement = null + + // handle default parameters + this.parameters = { + // type of source - ['webcam', 'image', 'video'] + sourceType: 'webcam', + // url of the source - valid if sourceType = image|video + sourceUrl: null, + + // Device id of the camera to use (optional) + deviceId: null, + + // resolution of at which we initialize in the source image + sourceWidth: 640, + sourceHeight: 480, + // resolution displayed for the source + displayWidth: 640, + displayHeight: 480, + } + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.init = function (onReady, onError) { + var _this = this + + if (this.parameters.sourceType === 'image') { + var domElement = this._initSourceImage(onSourceReady, onError) + } else if (this.parameters.sourceType === 'video') { + var domElement = this._initSourceVideo(onSourceReady, onError) + } else if (this.parameters.sourceType === 'webcam') { + // var domElement = this._initSourceWebcamOld(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) + } else { + console.assert(false) + } + + // attach + this.domElement = domElement + this.domElement.style.position = 'absolute' + this.domElement.style.top = '0px' + this.domElement.style.left = '0px' + this.domElement.style.zIndex = '-2' + this.domElement.setAttribute('id', 'arjs-video'); + + return this + function onSourceReady() { + document.body.appendChild(_this.domElement); + window.dispatchEvent(new CustomEvent('arjs-video-loaded', { + detail: { + component: document.querySelector('#arjs-video'), + }, + })); + + _this.ready = true + + onReady && onReady() + } +} + +//////////////////////////////////////////////////////////////////////////////// +// init image source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceImage = function (onReady) { + // TODO make it static + var domElement = document.createElement('img'); + domElement.src = this.parameters.sourceUrl; + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onload = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// init video source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceVideo = function (onReady) { + // TODO make it static + var domElement = document.createElement('video'); + domElement.src = this.parameters.sourceUrl; + + domElement.style.objectFit = 'initial'; + + domElement.autoplay = true; + domElement.webkitPlaysinline = true; + domElement.controls = false; + domElement.loop = true; + domElement.muted = true; + + // trick to trigger the video on android + document.body.addEventListener('click', function onClick() { + document.body.removeEventListener('click', onClick); + domElement.play() + }); + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onloadeddata = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// handle webcam source +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype._initSourceWebcam = function (onReady, onError) { + var _this = this + + // init default value + onError = onError || function (error) { + var event = new CustomEvent('camera-error', { error: error }); + window.dispatchEvent(event); + + setTimeout(() => { + alert('Webcam Error\nName: ' + error.name + '\nMessage: ' + error.message) + }, 1000); + } + + var domElement = document.createElement('video'); + domElement.setAttribute('autoplay', ''); + domElement.setAttribute('muted', ''); + domElement.setAttribute('playsinline', ''); + domElement.style.width = this.parameters.displayWidth + 'px' + domElement.style.height = this.parameters.displayHeight + 'px' + + // check API is available + if (navigator.mediaDevices === undefined + || navigator.mediaDevices.enumerateDevices === undefined + || navigator.mediaDevices.getUserMedia === undefined) { + if (navigator.mediaDevices === undefined) var fctName = 'navigator.mediaDevices' + else if (navigator.mediaDevices.enumerateDevices === undefined) var fctName = 'navigator.mediaDevices.enumerateDevices' + else if (navigator.mediaDevices.getUserMedia === undefined) var fctName = 'navigator.mediaDevices.getUserMedia' + else console.assert(false) + onError({ + name: '', + message: 'WebRTC issue-! ' + fctName + ' not present in your browser' + }); + return null + } + + // get available devices + navigator.mediaDevices.enumerateDevices().then(function (devices) { + var userMediaConstraints = { + audio: false, + video: { + facingMode: 'environment', + width: { + ideal: _this.parameters.sourceWidth, + // min: 1024, + // max: 1920 + }, + height: { + ideal: _this.parameters.sourceHeight, + // min: 776, + // max: 1080 + } + } + }; + + if (null !== _this.parameters.deviceId) { + userMediaConstraints.video.deviceId = { + exact: _this.parameters.deviceId + }; + } + + // get a device which satisfy the constraints + navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) { + // set the .src of the domElement + domElement.srcObject = stream; + + var event = new CustomEvent('camera-init', { stream: stream }); + window.dispatchEvent(event); + // to start the video, when it is possible to start it only on userevent. like in android + document.body.addEventListener('click', function () { + domElement.play(); + }); + // domElement.play(); + + onReady(); + }).catch(function (error) { + onError({ + name: error.name, + message: error.message + }); + }); + }).catch(function (error) { + onError({ + message: error.message + }); + }); + + return domElement +} + +////////////////////////////////////////////////////////////////////////////// +// Handle Mobile Torch +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.hasMobileTorch = function () { + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) return false + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + + // if videoTrack.getCapabilities() doesnt exist, return false now + if (videoTrack.getCapabilities === undefined) return false + + var capabilities = videoTrack.getCapabilities() + + return capabilities.torch ? true : false +} + +/** + * toggle the flash/torch of the mobile fun if applicable. + * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/ + */ +ARjs.Source.prototype.toggleMobileTorch = function () { + // sanity check + console.assert(this.hasMobileTorch() === true) + + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) { + alert('enabling mobile torch is available only on webcam') + return + } + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + var capabilities = videoTrack.getCapabilities() + + if (!capabilities.torch) { + alert('no mobile torch is available on your camera') + return + } + + this._currentTorchStatus = this._currentTorchStatus === false ? true : false + videoTrack.applyConstraints({ + advanced: [{ + torch: this._currentTorchStatus + }] + }).catch(function (error) { + console.log(error) + }); +} + +ARjs.Source.prototype.domElementWidth = function () { + return parseInt(this.domElement.style.width) +} +ARjs.Source.prototype.domElementHeight = function () { + return parseInt(this.domElement.style.height) +} + +//////////////////////////////////////////////////////////////////////////////// +// handle resize +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResizeElement = function () { + var _this = this + var screenWidth = window.innerWidth + var screenHeight = window.innerHeight + + // sanity check + console.assert(arguments.length === 0) + + // compute sourceWidth, sourceHeight + if (this.domElement.nodeName === "IMG") { + var sourceWidth = this.domElement.naturalWidth + var sourceHeight = this.domElement.naturalHeight + } else if (this.domElement.nodeName === "VIDEO") { + var sourceWidth = this.domElement.videoWidth + var sourceHeight = this.domElement.videoHeight + } else { + console.assert(false) + } + + // compute sourceAspect + var sourceAspect = sourceWidth / sourceHeight + // compute screenAspect + var screenAspect = screenWidth / screenHeight + + // if screenAspect < sourceAspect, then change the width, else change the height + if (screenAspect < sourceAspect) { + // compute newWidth and set .width/.marginLeft + var newWidth = sourceAspect * screenHeight + this.domElement.style.width = newWidth + 'px' + this.domElement.style.marginLeft = -(newWidth - screenWidth) / 2 + 'px' + + // init style.height/.marginTop to normal value + this.domElement.style.height = screenHeight + 'px' + this.domElement.style.marginTop = '0px' + } else { + // compute newHeight and set .height/.marginTop + var newHeight = 1 / (sourceAspect / screenWidth) + this.domElement.style.height = newHeight + 'px' + this.domElement.style.marginTop = -(newHeight - screenHeight) / 2 + 'px' + + // init style.width/.marginLeft to normal value + this.domElement.style.width = screenWidth + 'px' + this.domElement.style.marginLeft = '0px' + } +} +/* +ARjs.Source.prototype.copyElementSizeTo = function(otherElement){ + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop +} +*/ + +ARjs.Source.prototype.copyElementSizeTo = function (otherElement) { + + if (window.innerWidth > window.innerHeight) { + //landscape + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop + } + else { + //portrait + otherElement.style.height = this.domElement.style.height + otherElement.style.width = (parseInt(otherElement.style.height) * 4 / 3) + "px"; + otherElement.style.marginLeft = ((window.innerWidth - parseInt(otherElement.style.width)) / 2) + "px"; + otherElement.style.marginTop = 0; + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.copySizeTo = function () { + console.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo') + this.copyElementSizeTo.apply(this, arguments) +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResize = function (arToolkitContext, renderer, camera) { + if (arguments.length !== 3) { + console.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement') + return this.onResizeElement.apply(this, arguments) + } + + var trackingBackend = arToolkitContext.parameters.trackingBackend + + + // RESIZE DOMELEMENT + if (trackingBackend === 'artoolkit') { + + this.onResizeElement() + + var isAframe = renderer.domElement.dataset.aframeCanvas ? true : false + if (isAframe === false) { + this.copyElementSizeTo(renderer.domElement) + } else { + + } + + if (arToolkitContext.arController !== null) { + this.copyElementSizeTo(arToolkitContext.arController.canvas) + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) + + + // UPDATE CAMERA + if (trackingBackend === 'artoolkit') { + if (arToolkitContext.arController !== null) { + camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()); + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) +} +var THREEx = THREEx || {} + +THREEx.ArVideoInWebgl = function(videoTexture){ + var _this = this + + ////////////////////////////////////////////////////////////////////////////// + // plane always in front of the camera, exactly as big as the viewport + ////////////////////////////////////////////////////////////////////////////// + var geometry = new THREE.PlaneGeometry(2, 2); + var material = new THREE.MeshBasicMaterial({ + // map : new THREE.TextureLoader().load('images/water.jpg'), + map : videoTexture, + // side: THREE.DoubleSide, + // opacity: 0.5, + // color: 'pink', + // transparent: true, + }); + var seethruPlane = new THREE.Mesh(geometry, material); + this.object3d = seethruPlane + // scene.add(seethruPlane); + + // arToolkitSource.domElement.style.visibility = 'hidden' + + // TODO extract the fov from the projectionMatrix + // camera.fov = 43.1 + this.update = function(camera){ + camera.updateMatrixWorld(true) + + // get seethruPlane position + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + seethruPlane.position.copy(position) + camera.localToWorld(seethruPlane.position) + + // get seethruPlane quaternion + camera.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + seethruPlane.quaternion.copy( camera.quaternion ) + + // extract the fov from the projectionMatrix + var fov = THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2; + // console.log('fov', fov) + + var elementWidth = parseFloat( arToolkitSource.domElement.style.width.replace(/px$/,''), 10 ) + var elementHeight = parseFloat( arToolkitSource.domElement.style.height.replace(/px$/,''), 10 ) + + var aspect = elementWidth / elementHeight + + // camera.fov = fov + // if( vrDisplay.isPresenting ){ + // fov *= 2 + // aspect *= 2 + // } + + // get seethruPlane height relative to fov + seethruPlane.scale.y = Math.tan(THREE.Math.DEG2RAD * fov/2)*position.length() + // get seethruPlane aspect + seethruPlane.scale.x = seethruPlane.scale.y * aspect + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // var video = arToolkitSource.domElement; + // + // window.addEventListener('resize', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // video.addEventListener('canplaythrough', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // function updateSeeThruAspectUv(plane){ + // + // // if video isnt yet ready to play + // if( video.videoWidth === 0 || video.videoHeight === 0 ) return + // + // var faceVertexUvs = plane.geometry.faceVertexUvs[0] + // var screenAspect = window.innerWidth / window.innerHeight + // var videoAspect = video.videoWidth / video.videoHeight + // + // plane.geometry.uvsNeedUpdate = true + // if( screenAspect >= videoAspect ){ + // var actualHeight = videoAspect / screenAspect; + // // faceVertexUvs y 0 + // faceVertexUvs[0][1].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][0].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][1].y = 0.5 - actualHeight/2 + // // faceVertexUvs y 1 + // faceVertexUvs[0][0].y = 0.5 + actualHeight/2 + // faceVertexUvs[0][2].y = 0.5 + actualHeight/2 + // faceVertexUvs[1][2].y = 0.5 + actualHeight/2 + // }else{ + // var actualWidth = screenAspect / videoAspect; + // // faceVertexUvs x 0 + // faceVertexUvs[0][0].x = 0.5 - actualWidth/2 + // faceVertexUvs[0][1].x = 0.5 - actualWidth/2 + // faceVertexUvs[1][0].x = 0.5 - actualWidth/2 + // + // // faceVertexUvs x 1 + // faceVertexUvs[0][2].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][1].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][2].x = 0.5 + actualWidth/2 + // } + // } + +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.HitTestingPlane = function(sourceElement){ + this._sourceElement = sourceElement + + // create _pickingScene + this._pickingScene = new THREE.Scene + + // create _pickingPlane + var geometry = new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2) + // var geometry = new THREE.PlaneGeometry(20,20).rotateX(-Math.PI/2) + var material = new THREE.MeshBasicMaterial({ + // opacity: 0.5, + // transparent: true, + wireframe: true + }) + // material.visible = false + this._pickingPlane = new THREE.Mesh(geometry, material) + this._pickingScene.add(this._pickingPlane) + + // Create pickingCamera + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + // TODO hardcoded fov - couch + this._pickingCamera = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 30); +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.update = function(camera, pickingRoot, changeMatrixMode){ + + this.onResize() + + + if( changeMatrixMode === 'modelViewMatrix' ){ + // set pickingPlane position + var pickingPlane = this._pickingPlane + pickingRoot.parent.updateMatrixWorld() + pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld) + // set position/quaternion/scale from pickingPlane.matrix + pickingPlane.matrix.decompose(pickingPlane.position, pickingPlane.quaternion, pickingPlane.scale) + }else if( changeMatrixMode === 'cameraTransformMatrix' ){ + // set pickingPlane position + var pickingCamera = this._pickingCamera + camera.updateMatrixWorld() + pickingCamera.matrix.copy(camera.matrixWorld) + // set position/quaternion/scale from pickingCamera.matrix + pickingCamera.matrix.decompose(pickingCamera.position, pickingCamera.quaternion, pickingCamera.scale) + }else console.assert(false) + + +// var position = this._pickingPlane.position +// console.log('pickingPlane position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) +// var position = this._pickingCamera.position +// console.log('his._pickingCamera position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) + +} + +////////////////////////////////////////////////////////////////////////////// +// resize camera +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.onResize = function(){ + var sourceElement = this._sourceElement + var pickingCamera = this._pickingCamera + +// FIXME why using css here ??? not even computed style +// should get the size of the elment directly independantly + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + pickingCamera.aspect = fullWidth / fullHeight + + pickingCamera.updateProjectionMatrix() +} + +////////////////////////////////////////////////////////////////////////////// +// Perform test +////////////////////////////////////////////////////////////////////////////// +THREEx.HitTestingPlane.prototype.test = function(mouseX, mouseY){ + // convert mouseX, mouseY to [-1, +1] + mouseX = (mouseX-0.5)*2 + mouseY =-(mouseY-0.5)*2 + + this._pickingScene.updateMatrixWorld(true) + + // compute intersections between mouseVector3 and pickingPlane + var raycaster = new THREE.Raycaster(); + var mouseVector3 = new THREE.Vector3(mouseX, mouseY, 1); + raycaster.setFromCamera( mouseVector3, this._pickingCamera ) + var intersects = raycaster.intersectObjects( [this._pickingPlane] ) + + if( intersects.length === 0 ) return null + + // set new demoRoot position + var position = this._pickingPlane.worldToLocal( intersects[0].point.clone() ) + // TODO here do a look at the camera ? + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3(1,1,1)//.multiplyScalar(1) + + return { + position : position, + quaternion : quaternion, + scale : scale + } +} + +////////////////////////////////////////////////////////////////////////////// +// render the pickingPlane for debug +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.renderDebug = function(renderer){ + // render sceneOrtho + renderer.render( this._pickingScene, this._pickingCamera ) +} +// @namespace +var ARjs = ARjs || {} + +// TODO this is a controls... should i give the object3d here ? +// not according to 'no three.js dependancy' + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.Anchor = function(arSession, markerParameters){ + var _this = this + var arContext = arSession.arContext + var scene = arSession.parameters.scene + var camera = arSession.parameters.camera + + this.arSession = arSession + this.parameters = markerParameters + + // log to debug + console.log('ARjs.Anchor -', 'changeMatrixMode:', this.parameters.changeMatrixMode, '/ markersAreaEnabled:', markerParameters.markersAreaEnabled) + + var markerRoot = new THREE.Group + scene.add(markerRoot) + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var controlledObject = markerRoot + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var controlledObject = camera + }else console.assert(false) + + if( markerParameters.markersAreaEnabled === false ){ + var markerControls = new THREEx.ArMarkerControls(arContext, controlledObject, markerParameters) + this.controls = markerControls + }else{ + // sanity check - MUST be a trackingBackend with markers + console.assert( arContext.parameters.trackingBackend === 'artoolkit' ) + + // honor markers-page-resolution for https://webxr.io/augmented-website + if( location.hash.substring(1).startsWith('markers-page-resolution=') === true ){ + // get resolutionW/resolutionH from url + var markerPageResolution = location.hash.substring(1) + var matches = markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/) + console.assert(matches.length === 3) + var resolutionW = parseInt(matches[1]) + var resolutionH = parseInt(matches[2]) + var arContext = arSession.arContext + // generate and store the ARjsMultiMarkerFile + ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend, resolutionW, resolutionH) + } + + // if there is no ARjsMultiMarkerFile, build a default one + if( localStorage.getItem('ARjsMultiMarkerFile') === null ){ + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend) + } + + // get multiMarkerFile from localStorage + console.assert( localStorage.getItem('ARjsMultiMarkerFile') !== null ) + var multiMarkerFile = localStorage.getItem('ARjsMultiMarkerFile') + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var parent3D = scene + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var parent3D = camera + }else console.assert(false) + + // build a multiMarkerControls + var multiMarkerControls = ARjs.MarkersAreaControls.fromJSON(arContext, parent3D, controlledObject, multiMarkerFile) + this.controls = multiMarkerControls + + // honor markerParameters.changeMatrixMode + multiMarkerControls.parameters.changeMatrixMode = markerParameters.changeMatrixMode + +// TODO put subMarkerControls visibility into an external file. with 2 handling for three.js and babylon.js + // create ArMarkerHelper - useful to debug - super three.js specific + var markerHelpers = [] + multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){ + // add an helper to visuable each sub-marker + var markerHelper = new THREEx.ArMarkerHelper(subMarkerControls) + markerHelper.object3d.visible = false + // subMarkerControls.object3d.add( markerHelper.object3d ) + subMarkerControls.object3d.add( markerHelper.object3d ) + // add it to markerHelpers + markerHelpers.push(markerHelper) + }) + // define API specific to markersArea + this.markersArea = {} + this.markersArea.setSubMarkersVisibility = function(visible){ + markerHelpers.forEach(function(markerHelper){ + markerHelper.object3d.visible = visible + }) + } + } + + this.object3d = new THREE.Group() + + ////////////////////////////////////////////////////////////////////////////// + // THREEx.ArSmoothedControls + ////////////////////////////////////////////////////////////////////////////// + + var shouldBeSmoothed = true + + if( shouldBeSmoothed === true ){ + // build a smoothedControls + var smoothedRoot = new THREE.Group() + scene.add(smoothedRoot) + var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot) + smoothedRoot.add(this.object3d) + }else{ + markerRoot.add(this.object3d) + } + + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + this.update = function(){ + // update _this.object3d.visible + _this.object3d.visible = _this.object3d.parent.visible + + // console.log('controlledObject.visible', _this.object3d.parent.visible) + if( smoothedControls !== undefined ){ + // update smoothedControls parameters depending on how many markers are visible in multiMarkerControls + if( multiMarkerControls !== undefined ){ + multiMarkerControls.updateSmoothedControls(smoothedControls) + } + + // update smoothedControls + smoothedControls.update(markerRoot) + } + } +} +// @namespace +var ARjs = ARjs || {} + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.SessionDebugUI = function (arSession) { + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.left = '5px' + this.domElement.style.bottom = '10px' + this.domElement.style.textAlign = 'right' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.innerHTML = 'trackingBackend : ' + trackingBackend + this.domElement.appendChild(domElement) +} + +/** + * Url of augmented-website service - if === '' then dont include augmented-website link + * @type {String} + */ +ARjs.SessionDebugUI.AugmentedWebsiteURL = 'https://webxr.io/augmented-website' + +////////////////////////////////////////////////////////////////////////////// +// ARjs.AnchorDebugUI +////////////////////////////////////////////////////////////////////////////// + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.AnchorDebugUI = function (arAnchor) { + var arSession = arAnchor.arSession + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'inline-block' + this.domElement.style.padding = '0.5em' + this.domElement.style.margin = '0.5em' + this.domElement.style.textAlign = 'left' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.style.padding = '0.5em' + domElement.style.color = 'rgba(0,0,0,0.9)' + domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + domElement.style.position = 'fixed' + domElement.style.left = '5px' + domElement.style.bottom = '40px' + + this.domElement.appendChild(domElement) + domElement.innerHTML = 'markersAreaEnabled :' + arAnchor.parameters.markersAreaEnabled + + ////////////////////////////////////////////////////////////////////////////// + // toggle-marker-helper + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.textAlign = 'left' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonToggleMarkerHelpers' + domElement.innerHTML = 'toggle-marker-helper' + domElement.href = 'javascript:void(0)' + + var subMarkerHelpersVisible = false + domElement.addEventListener('click', function () { + subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true + arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Learn-new-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaLearner' + domElement.innerHTML = 'Learn-new-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + if (ARjs.AnchorDebugUI.MarkersAreaLearnerURL !== null) { + var learnerURL = ARjs.AnchorDebugUI.MarkersAreaLearnerURL + } else { + var learnerURL = ARjs.Context.baseURL + 'examples/multi-markers/examples/learner.html' + } + ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Reset-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaReset' + domElement.innerHTML = 'Reset-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend) + location.reload() + }) + } +} + +/** + * url for the markers-area learner. if not set, take the default one + * @type {String} + */ +ARjs.AnchorDebugUI.MarkersAreaLearnerURL = null +// @namespace +var ARjs = ARjs || {} + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.HitTesting = function (arSession) { + var _this = this + var arContext = arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + + this.enabled = true + this._arSession = arSession + this._hitTestingPlane = null + _this._hitTestingPlane = new THREEx.HitTestingPlane(arSession.arSource.domElement) +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// +/** + * update + * + * @param {THREE.Camera} camera - the camera to use + * @param {THREE.Object3D} object3d - + */ +ARjs.HitTesting.prototype.update = function (camera, pickingRoot, changeMatrixMode) { + // if it isnt enabled, do nothing + if (this.enabled === false) return + + + if (this._hitTestingPlane !== null) { + this._hitTestingPlane.update(camera, pickingRoot, changeMatrixMode) + } else console.assert(false) +} + +////////////////////////////////////////////////////////////////////////////// +// actual hit testing +////////////////////////////////////////////////////////////////////////////// + +/** + * Test the real world for intersections directly from a DomEvent + * + * @param {Number} mouseX - position X of the hit [-1, +1] + * @param {Number} mouseY - position Y of the hit [-1, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.testDomEvent = function (domEvent) { + var trackingBackend = this._arSession.arContext.parameters.trackingBackend + var arSource = this._arSession.arSource + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + var mouseX = domEvent.clientX / arSource.domElementWidth() + var mouseY = domEvent.clientY / arSource.domElementHeight() + + return this.test(mouseX, mouseY) +} + +/** + * Test the real world for intersections. + * + * @param {Number} mouseX - position X of the hit [0, +1] + * @param {Number} mouseY - position Y of the hit [0, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.test = function (mouseX, mouseY) { + var arContext = this._arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + var hitTestResults = [] + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + + var result = this._hitTestingPlane.test(mouseX, mouseY) + + // if no result is found, return now + if (result === null) return hitTestResults + + // build a ARjs.HitTesting.Result + var hitTestResult = new ARjs.HitTesting.Result(result.position, result.quaternion, result.scale) + hitTestResults.push(hitTestResult) + + return hitTestResults +} + +////////////////////////////////////////////////////////////////////////////// +// ARjs.HitTesting.Result +////////////////////////////////////////////////////////////////////////////// +/** + * Contains the result of ARjs.HitTesting.test() + * + * @param {THREE.Vector3} position - position to use + * @param {THREE.Quaternion} quaternion - quaternion to use + * @param {THREE.Vector3} scale - scale + */ +ARjs.HitTesting.Result = function (position, quaternion, scale) { + this.position = position + this.quaternion = quaternion + this.scale = scale +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.apply = function (object3d) { + object3d.position.copy(this.position) + object3d.quaternion.copy(this.quaternion) + object3d.scale.copy(this.scale) + + object3d.updateMatrix() +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyPosition = function (object3d) { + object3d.position.copy(this.position) + + object3d.updateMatrix() + + return this +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyQuaternion = function (object3d) { + object3d.quaternion.copy(this.quaternion) + + object3d.updateMatrix() + + return this +} +var ARjs = ARjs || {} + +/** + * define a ARjs.Session + * + * @param {Object} parameters - parameters for this session + */ +ARjs.Session = function(parameters){ + var _this = this + // handle default parameters + this.parameters = { + renderer: null, + camera: null, + scene: null, + sourceParameters: {}, + contextParameters: {}, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + // sanity check + console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer) + console.assert(this.parameters.camera instanceof THREE.Camera) + console.assert(this.parameters.scene instanceof THREE.Scene) + + + // backward emulation + Object.defineProperty(this, 'renderer', {get: function(){ + console.warn('use .parameters.renderer renderer') + return this.parameters.renderer; + }}); + Object.defineProperty(this, 'camera', {get: function(){ + console.warn('use .parameters.camera instead') + return this.parameters.camera; + }}); + Object.defineProperty(this, 'scene', {get: function(){ + console.warn('use .parameters.scene instead') + return this.parameters.scene; + }}); + + + // log the version + console.log('AR.js', ARjs.Context.REVISION, '- trackingBackend:', parameters.contextParameters.trackingBackend) + + ////////////////////////////////////////////////////////////////////////////// + // init arSource + ////////////////////////////////////////////////////////////////////////////// + var arSource = _this.arSource = new ARjs.Source(parameters.sourceParameters) + + arSource.init(function onReady(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + // handle resize + window.addEventListener('resize', function(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // init arContext + ////////////////////////////////////////////////////////////////////////////// + + // create atToolkitContext + var arContext = _this.arContext = new ARjs.Context(parameters.contextParameters) + + // initialize it + _this.arContext.init() + + arContext.addEventListener('initialized', function(event){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // update function + ////////////////////////////////////////////////////////////////////////////// + // update artoolkit on every frame + this.update = function(){ + if( arSource.ready === false ) return + + arContext.update( arSource.domElement ) + } +} + +ARjs.Session.prototype.onResize = function () { + this.arSource.onResize(this.arContext, this.parameters.renderer, this.parameters.camera) +}; +var ARjs = ARjs || {} +ARjs.Utils = {} + +/** + * Create a default rendering camera for this trackingBackend. They may be modified later. to fit physical camera parameters + * + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Utils.createDefaultCamera = function (trackingMethod) { + var trackingBackend = this.parseTrackingMethod(trackingMethod).trackingBackend + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false, 'unknown trackingBackend: ' + trackingBackend) + + return camera +} + +/** + * parse tracking method + * + * @param {String} trackingMethod - the tracking method to parse + * @return {Object} - various field of the tracking method + */ +ARjs.Utils.parseTrackingMethod = function (trackingMethod) { + + if (trackingMethod === 'best') { + trackingMethod = 'area-artoolkit'; + } + + if (trackingMethod.startsWith('area-')) { + return { + trackingBackend: trackingMethod.replace('area-', ''), + markersAreaEnabled: true, + } + } else { + return { + trackingBackend: trackingMethod, + markersAreaEnabled: false, + } + } +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaControls = THREEx.ArMultiMarkerControls = function(arToolkitContext, object3d, parameters){ + var _this = this + THREEx.ArBaseControls.call(this, object3d) + + if( arguments.length > 3 ) console.assert('wrong api for', THREEx.ArMultiMarkerControls) + + // have a parameters in argument + this.parameters = { + // list of controls for each subMarker + subMarkersControls: parameters.subMarkersControls, + // list of pose for each subMarker relative to the origin + subMarkerPoses: parameters.subMarkerPoses, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : parameters.changeMatrixMode !== undefined ? parameters.changeMatrixMode : 'modelViewMatrix', + } + + this.object3d.visible = false + // honor obsolete stuff - add a warning to use + this.subMarkersControls = this.parameters.subMarkersControls + this.subMarkerPoses = this.parameters.subMarkerPoses + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + +ARjs.MarkersAreaControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkersAreaControls.prototype.constructor = ARjs.MarkersAreaControls; + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaControls.prototype._onSourceProcessed = function(){ + var _this = this + var stats = { + count: 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + + var firstQuaternion = _this.parameters.subMarkersControls[0].object3d.quaternion + + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + + var markerObject3d = markerControls.object3d + // if this marker is not visible, ignore it + if( markerObject3d.visible === false ) return + + // transformation matrix of this.object3d according to this sub-markers + var matrix = markerObject3d.matrix.clone() + var markerPose = _this.parameters.subMarkerPoses[markerIndex] + matrix.multiply(new THREE.Matrix4().getInverse(markerPose)) + + // decompose the matrix into .position, .quaternion, .scale + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion() + var scale = new THREE.Vector3 + matrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + // honor _this.object3d.visible + if( stats.count > 0 ){ + _this.object3d.visible = true + }else{ + _this.object3d.visible = false + } + + // if at least one sub-marker has been detected, make the average of all detected markers + if( stats.count > 0 ){ + // compute modelViewMatrix + var modelViewMatrix = new THREE.Matrix4() + modelViewMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + // change _this.object3d.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + _this.object3d.matrix.copy(modelViewMatrix) + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + _this.object3d.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + _this.object3d.matrix.decompose(_this.object3d.position, _this.object3d.quaternion, _this.object3d.scale) + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + */ +ARjs.MarkersAreaControls.averageQuaternion = function(quaternionSum, newQuaternion, firstQuaternion, count, quaternionAverage){ + quaternionAverage = quaternionAverage || new THREE.Quaternion() + // sanity check + console.assert(firstQuaternion instanceof THREE.Quaternion === true) + + // from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + if( newQuaternion.dot(firstQuaternion) > 0 ){ + newQuaternion = new THREE.Quaternion(-newQuaternion.x, -newQuaternion.y, -newQuaternion.z, -newQuaternion.w) + } + + quaternionSum.x += newQuaternion.x + quaternionSum.y += newQuaternion.y + quaternionSum.z += newQuaternion.z + quaternionSum.w += newQuaternion.w + + quaternionAverage.x = quaternionSum.x/count + quaternionAverage.y = quaternionSum.y/count + quaternionAverage.z = quaternionSum.z/count + quaternionAverage.w = quaternionSum.w/count + + quaternionAverage.normalize() + + return quaternionAverage +} + + +ARjs.MarkersAreaControls.averageVector3 = function(vector3Sum, vector3, count, vector3Average){ + vector3Average = vector3Average || new THREE.Vector3() + + vector3Sum.x += vector3.x + vector3Sum.y += vector3.y + vector3Sum.z += vector3.z + + vector3Average.x = vector3Sum.x / count + vector3Average.y = vector3Sum.y / count + vector3Average.z = vector3Sum.z / count + + return vector3Average +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * compute the center of this multimarker file + */ +ARjs.MarkersAreaControls.computeCenter = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var stats = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + var firstQuaternion = new THREE.Quaternion() // FIXME ??? + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + return averageMatrix +} + +ARjs.MarkersAreaControls.computeBoundingBox = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var boundingBox = new THREE.Box3() + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + boundingBox.expandByPoint(position) + }) + + return boundingBox +} +////////////////////////////////////////////////////////////////////////////// +// updateSmoothedControls +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.prototype.updateSmoothedControls = function(smoothedControls, lerpsValues){ + // handle default values + if( lerpsValues === undefined ){ + // FIXME this parameter format is uselessly cryptic + // lerpValues = [ + // {lerpPosition: 0.5, lerpQuaternion: 0.2, lerpQuaternion: 0.7} + // ] + lerpsValues = [ + [0.3+.1, 0.1, 0.3], + [0.4+.1, 0.1, 0.4], + [0.4+.1, 0.2, 0.5], + [0.5+.1, 0.2, 0.7], + [0.5+.1, 0.2, 0.7], + ] + } + // count how many subMarkersControls are visible + var nVisible = 0 + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + var markerObject3d = markerControls.object3d + if( markerObject3d.visible === true ) nVisible ++ + }) + + // find the good lerpValues + if( lerpsValues[nVisible-1] !== undefined ){ + var lerpValues = lerpsValues[nVisible-1] + }else{ + var lerpValues = lerpsValues[lerpsValues.length-1] + } + + // modify lerpValues in smoothedControls + smoothedControls.parameters.lerpPosition = lerpValues[0] + smoothedControls.parameters.lerpQuaternion = lerpValues[1] + smoothedControls.parameters.lerpScale = lerpValues[2] +} + + +////////////////////////////////////////////////////////////////////////////// +// Create THREEx.ArMultiMarkerControls from JSON +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.fromJSON = function(arToolkitContext, parent3D, markerRoot, jsonData, parameters){ + var multiMarkerFile = JSON.parse(jsonData) + // declare variables + var subMarkersControls = [] + var subMarkerPoses = [] + // handle default arguments + parameters = parameters || {} + + // prepare the parameters + multiMarkerFile.subMarkersControls.forEach(function(item){ + // create a markerRoot + var markerRoot = new THREE.Object3D() + parent3D.add(markerRoot) + + // create markerControls for our markerRoot + var subMarkerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, item.parameters) + +// if( true ){ + // store it in the parameters + subMarkersControls.push(subMarkerControls) + subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// }else{ +// // build a smoothedControls +// var smoothedRoot = new THREE.Group() +// parent3D.add(smoothedRoot) +// var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot, { +// lerpPosition : 0.1, +// lerpQuaternion : 0.1, +// lerpScale : 0.1, +// minVisibleDelay: 0, +// minUnvisibleDelay: 0, +// }) +// onRenderFcts.push(function(delta){ +// smoothedControls.update(markerRoot) // TODO this is a global +// }) +// +// +// // store it in the parameters +// subMarkersControls.push(smoothedControls) +// subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// } + }) + + parameters.subMarkersControls = subMarkersControls + parameters.subMarkerPoses = subMarkerPoses + // create a new THREEx.ArMultiMarkerControls + var multiMarkerControls = new THREEx.ArMultiMarkerControls(arToolkitContext, markerRoot, parameters) + + // return it + return multiMarkerControls +} +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaLearning = THREEx.ArMultiMakersLearning = function(arToolkitContext, subMarkersControls){ + var _this = this + this._arToolkitContext = arToolkitContext + + // Init variables + this.subMarkersControls = subMarkersControls + this.enabled = true + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + + +////////////////////////////////////////////////////////////////////////////// +// statistic collection +////////////////////////////////////////////////////////////////////////////// + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaLearning.prototype._onSourceProcessed = function(){ + var originQuaternion = this.subMarkersControls[0].object3d.quaternion + // here collect the statistic on relative positioning + + // honor this.enabled + if( this.enabled === false ) return + + // keep only the visible markers + var visibleMarkerControls = this.subMarkersControls.filter(function(markerControls){ + return markerControls.object3d.visible === true + }) + + var count = Object.keys(visibleMarkerControls).length + + var positionDelta = new THREE.Vector3() + var quaternionDelta = new THREE.Quaternion() + var scaleDelta = new THREE.Vector3() + var tmpMatrix = new THREE.Matrix4() + + // go thru all the visibleMarkerControls + for(var i = 0; i < count; i++){ + var markerControls1 = visibleMarkerControls[i] + for(var j = 0; j < count; j++){ + var markerControls2 = visibleMarkerControls[j] + + // if markerControls1 is markerControls2, then skip it + if( i === j ) continue + + + ////////////////////////////////////////////////////////////////////////////// + // create data in markerControls1.object3d.userData if needed + ////////////////////////////////////////////////////////////////////////////// + // create seenCouples for markerControls1 if needed + if( markerControls1.object3d.userData.seenCouples === undefined ){ + markerControls1.object3d.userData.seenCouples = {} + } + var seenCouples = markerControls1.object3d.userData.seenCouples + // create the multiMarkerPosition average if needed` + if( seenCouples[markerControls2.id] === undefined ){ + // console.log('create seenCouples between', markerControls1.id, 'and', markerControls2.id) + seenCouples[markerControls2.id] = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + } + + + ////////////////////////////////////////////////////////////////////////////// + // Compute markerControls2 position relative to markerControls1 + ////////////////////////////////////////////////////////////////////////////// + + // compute markerControls2 position/quaternion/scale in relation with markerControls1 + tmpMatrix.getInverse(markerControls1.object3d.matrix) + tmpMatrix.multiply(markerControls2.object3d.matrix) + tmpMatrix.decompose(positionDelta, quaternionDelta, scaleDelta) + + ////////////////////////////////////////////////////////////////////////////// + // update statistics + ////////////////////////////////////////////////////////////////////////////// + var stats = seenCouples[markerControls2.id] + // update the count + stats.count++ + + // update the average of position/rotation/scale + THREEx.ArMultiMarkerControls.averageVector3(stats.position.sum, positionDelta, stats.count, stats.position.average) + THREEx.ArMultiMarkerControls.averageQuaternion(stats.quaternion.sum, quaternionDelta, originQuaternion, stats.count, stats.quaternion.average) + THREEx.ArMultiMarkerControls.averageVector3(stats.scale.sum, scaleDelta, stats.count, stats.scale.average) + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Compute markers transformation matrix from current stats +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.computeResult = function(){ + var _this = this + var originSubControls = this.subMarkersControls[0] + + this.deleteResult() + + // special case of originSubControls averageMatrix + originSubControls.object3d.userData.result = { + averageMatrix : new THREE.Matrix4(), + confidenceFactor: 1, + } + // TODO here check if the originSubControls has been seen at least once!! + + + /** + * ALGO in pseudo code + * + * - Set confidenceFactor of origin sub markers as 1 + * + * Start Looping + * - For a given sub marker, skip it if it already has a result. + * - if no result, check all seen couple and find n ones which has a progress of 1 or more. + * - So the other seen sub markers, got a valid transformation matrix. + * - So take local averages position/orientation/scale, compose a transformation matrix. + * - aka transformation matrix from parent matrix * transf matrix pos/orientation/scale + * - Multiple it by the other seen marker matrix. + * - Loop on the array until one pass could not compute any new sub marker + */ + + do{ + var resultChanged = false + // loop over each subMarkerControls + this.subMarkersControls.forEach(function(subMarkerControls){ + + // if subMarkerControls already has a result, do nothing + var result = subMarkerControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === true ) return + + // console.log('compute subMarkerControls', subMarkerControls.name()) + var otherSubControlsID = _this._getLearnedCoupleStats(subMarkerControls) + if( otherSubControlsID === null ){ + // console.log('no learnedCoupleStats') + return + } + + var otherSubControls = _this._getSubMarkerControlsByID(otherSubControlsID) + + var seenCoupleStats = subMarkerControls.object3d.userData.seenCouples[otherSubControlsID] + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(seenCoupleStats.position.average, seenCoupleStats.quaternion.average, seenCoupleStats.scale.average) + + var otherAverageMatrix = otherSubControls.object3d.userData.result.averageMatrix + + var matrix = new THREE.Matrix4().getInverse(otherAverageMatrix).multiply(averageMatrix) + matrix = new THREE.Matrix4().getInverse(matrix) + + console.assert( subMarkerControls.object3d.userData.result === undefined ) + subMarkerControls.object3d.userData.result = { + averageMatrix: matrix, + confidenceFactor: 1 + } + + resultChanged = true + }) + // console.log('loop') + }while(resultChanged === true) + + // debugger + // console.log('json:', this.toJSON()) + // this.subMarkersControls.forEach(function(subMarkerControls){ + // var hasResult = subMarkerControls.object3d.userData.result !== undefined + // console.log('marker', subMarkerControls.name(), hasResult ? 'has' : 'has NO', 'result') + // }) +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * get a _this.subMarkersControls id based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats = function(subMarkerControls){ + + // if this subMarkerControls has never been seen with another subMarkerControls + if( subMarkerControls.object3d.userData.seenCouples === undefined ) return null + + var seenCouples = subMarkerControls.object3d.userData.seenCouples + var coupleControlsIDs = Object.keys(seenCouples).map(Number) + + for(var i = 0; i < coupleControlsIDs.length; i++){ + var otherSubControlsID = coupleControlsIDs[i] + // get otherSubControls + var otherSubControls = this._getSubMarkerControlsByID(otherSubControlsID) + + // if otherSubControls isnt learned, skip it + var result = otherSubControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === false ) continue + + // return this seenCouplesStats + return otherSubControlsID + } + + // if none is found, return null + return null +} + +/** + * get a _this.subMarkersControls based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID = function(controlsID){ + + for(var i = 0; i < this.subMarkersControls.length; i++){ + var subMarkerControls = this.subMarkersControls[i] + if( subMarkerControls.id === controlsID ){ + return subMarkerControls + } + } + + return null +} + ////////////////////////////////////////////////////////////////////////////// +// JSON file building +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.toJSON = function(){ + + // compute the average matrix before generating the file + this.computeResult() + + ////////////////////////////////////////////////////////////////////////////// + // actually build the json + ////////////////////////////////////////////////////////////////////////////// + var data = { + meta : { + createdBy : "Area Learning - AR.js "+THREEx.ArToolkitContext.REVISION, + createdAt : new Date().toJSON(), + + }, + trackingBackend: this._arToolkitContext.parameters.trackingBackend, + subMarkersControls : [], + } + + var originSubControls = this.subMarkersControls[0] + var originMatrixInverse = new THREE.Matrix4().getInverse(originSubControls.object3d.matrix) + this.subMarkersControls.forEach(function(subMarkerControls, index){ + + // if a subMarkerControls has no result, ignore it + if( subMarkerControls.object3d.userData.result === undefined ) return + + var poseMatrix = subMarkerControls.object3d.userData.result.averageMatrix + console.assert(poseMatrix instanceof THREE.Matrix4) + + + // build the info + var info = { + parameters : { + // to fill ... + }, + poseMatrix : poseMatrix.toArray(), + } + if( subMarkerControls.parameters.type === 'pattern' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.patternUrl = subMarkerControls.parameters.patternUrl + }else if( subMarkerControls.parameters.type === 'barcode' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.barcodeValue = subMarkerControls.parameters.barcodeValue + }else console.assert(false) + + data.subMarkersControls.push(info) + }) + + var strJSON = JSON.stringify(data, null, '\t'); + + + ////////////////////////////////////////////////////////////////////////////// + // round matrix elements to ease readability - for debug + ////////////////////////////////////////////////////////////////////////////// + var humanReadable = false + if( humanReadable === true ){ + var tmp = JSON.parse(strJSON) + tmp.subMarkersControls.forEach(function(markerControls){ + markerControls.poseMatrix = markerControls.poseMatrix.map(function(value){ + var roundingFactor = 100 + return Math.round(value*roundingFactor)/roundingFactor + }) + }) + strJSON = JSON.stringify(tmp, null, '\t'); + } + + return strJSON; +} + +////////////////////////////////////////////////////////////////////////////// +// utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.resetStats = function(){ + this.deleteResult() + + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.seenCouples + }) +} +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.deleteResult = function(){ + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.result + }) +} +var THREEx = THREEx || {} + +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaUtils = THREEx.ArMultiMarkerUtils = {} + +////////////////////////////////////////////////////////////////////////////// +// navigateToLearnerPage +////////////////////////////////////////////////////////////////////////////// + +/** + * Navigate to the multi-marker learner page + * + * @param {String} learnerBaseURL - the base url for the learner + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.navigateToLearnerPage = function(learnerBaseURL, trackingBackend){ + var learnerParameters = { + backURL : location.href, + trackingBackend: trackingBackend, + markersControlsParameters: ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters(trackingBackend), + } + location.href = learnerBaseURL + '?' + encodeURIComponent(JSON.stringify(learnerParameters)) +} + +////////////////////////////////////////////////////////////////////////////// +// DefaultMultiMarkerFile +////////////////////////////////////////////////////////////////////////////// + +/** + * Create and store a default multi-marker file + * + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile = function(trackingBackend){ + var file = ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile(trackingBackend) + // json.strinfy the value and store it in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(file)) +} + + + +/** + * Create a default multi-marker file + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object of the multi-marker file + */ +ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile = function(trackingBackend){ + console.assert(trackingBackend) + if( trackingBackend === undefined ) debugger + + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + // create the base file + var file = { + meta : { + createdBy : 'AR.js ' + ARjs.Context.REVISION + ' - Default Marker', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... being filled + ] + } + // add a subMarkersControls + file.subMarkersControls[0] = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(0,0, 0).toArray(), + } + if( trackingBackend === 'artoolkit' ){ + file.subMarkersControls[0].parameters.type = 'pattern' + file.subMarkersControls[0].parameters.patternUrl = absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + }else console.assert(false) + + // json.strinfy the value and store it in localStorage + return file +} + +////////////////////////////////////////////////////////////////////////////// +// createDefaultMarkersControlsParameters +////////////////////////////////////////////////////////////////////////////// + +/** + * Create a default controls parameters for the multi-marker learner + * + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object containing the controls parameters + */ +ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters = function(trackingBackend){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + + if( trackingBackend === 'artoolkit' ){ + // pattern hiro/kanji/a/b/c/f + var markersControlsParameters = [ + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt', + }, + ] + }else console.assert(false) + return markersControlsParameters +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +/** + * generate areaFile + */ +ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution = function (trackingBackend, resolutionW, resolutionH) { + // generate areaFile + var areaFile = this.buildMarkersAreaFileFromResolution(trackingBackend, resolutionW, resolutionH) + // store areaFile in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(areaFile)) +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaUtils.buildMarkersAreaFileFromResolution = function(trackingBackend, resolutionW, resolutionH){ + // create the base file + var file = { + meta : { + createdBy : 'AR.js - Augmented Website', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... + ] + } + + var whiteMargin = 0.1 + if( resolutionW > resolutionH ){ + var markerImageSize = 0.4 * resolutionH + }else if( resolutionW < resolutionH ){ + var markerImageSize = 0.4 * resolutionW + }else if( resolutionW === resolutionH ){ + // specific for twitter player - https://dev.twitter.com/cards/types/player + var markerImageSize = 0.33 * resolutionW + }else console.assert(false) + + // console.warn('using new markerImageSize computation') + var actualMarkerSize = markerImageSize * (1 - 2*whiteMargin) + + var deltaX = (resolutionW - markerImageSize)/2 / actualMarkerSize + var deltaZ = (resolutionH - markerImageSize)/2 / actualMarkerSize + + var subMarkerControls = buildSubMarkerControls('center', 0, 0) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topleft', -deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topright', +deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomleft', -deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomright', +deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + return file + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + function buildSubMarkerControls(layout, positionX, positionZ){ + console.log('buildSubMarkerControls', layout, positionX, positionZ) + // create subMarkersControls + var subMarkersControls = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(positionX,0, positionZ).toArray(), + } + // fill the parameters + if( trackingBackend === 'artoolkit' ){ + layout2MarkerParametersArtoolkit(subMarkersControls.parameters, layout) + }else console.assert(false) + // return subMarkersControls + return subMarkersControls + } + + function layout2MarkerParametersArtoolkit(parameters, layout){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + var layout2PatternUrl = { + 'center' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt'), + 'topleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt'), + 'topright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt'), + 'bottomleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt'), + 'bottomright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt'), + } + console.assert(layout2PatternUrl[layout] !== undefined ) + parameters.type = 'pattern' + parameters.patternUrl = layout2PatternUrl[layout] + return + function convertRelativeUrlToAbsolute(relativeUrl){ + var tmpLink = document.createElement('a'); + tmpLink.href = relativeUrl + return tmpLink.href + } + } +} diff --git a/demo/ar/three.js/examples/.DS_Store b/demo/ar/three.js/examples/.DS_Store new file mode 100644 index 0000000..fd2bd17 Binary files /dev/null and b/demo/ar/three.js/examples/.DS_Store differ diff --git a/demo/ar/three.js/examples/arjs-session.html b/demo/ar/three.js/examples/arjs-session.html new file mode 100644 index 0000000..fb9d12f --- /dev/null +++ b/demo/ar/three.js/examples/arjs-session.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ AR.js - Session API demo with multi + tracking and hit testing + - by @nicolocarp +
+ Markers page +
+ Tracking Backend: + artoolkit + / + area artoolkit + / + best +
+ + diff --git a/demo/ar/three.js/examples/basic.html b/demo/ar/three.js/examples/basic.html new file mode 100644 index 0000000..8fcab34 --- /dev/null +++ b/demo/ar/three.js/examples/basic.html @@ -0,0 +1,168 @@ + + + + + + + + +
+ AR.js - three.js camera transform +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/boilerplate-threejs.html b/demo/ar/three.js/examples/boilerplate-threejs.html new file mode 100644 index 0000000..7d64537 --- /dev/null +++ b/demo/ar/three.js/examples/boilerplate-threejs.html @@ -0,0 +1,92 @@ + + + + +
+ AR.js - three.js camera transform +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/default-thinner-border.html b/demo/ar/three.js/examples/default-thinner-border.html new file mode 100644 index 0000000..a663248 --- /dev/null +++ b/demo/ar/three.js/examples/default-thinner-border.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + +
+ AR.js - use a ar.js marker with pattRatio 0.9 +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/default.html b/demo/ar/three.js/examples/default.html new file mode 100644 index 0000000..4e02f1b --- /dev/null +++ b/demo/ar/three.js/examples/default.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + +
+ AR.js - default setting - webcam + hiro + profile + lerp +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/dev.html b/demo/ar/three.js/examples/dev.html new file mode 100644 index 0000000..8aa50c5 --- /dev/null +++ b/demo/ar/three.js/examples/dev.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + +
+ AR.js - developement playground +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/marker-training/TODO.md b/demo/ar/three.js/examples/marker-training/TODO.md new file mode 100644 index 0000000..3fcbc43 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/TODO.md @@ -0,0 +1,10 @@ +- make a page with the player and the learner in the same page + - better user experience as there is no page reload + - no issue with fullscreen exiting when reloading page + - thus faster for the user + +# Feature: test the marker on the page with a qr-code +- would be good if i could try immediatly the marker +- like a way to load a page with a marker in the url +- say i got a page able to do read the marker file from a url +- can artoolkit read it from a data url ? diff --git a/demo/ar/three.js/examples/marker-training/examples/generator.html b/demo/ar/three.js/examples/marker-training/examples/generator.html new file mode 100644 index 0000000..b620708 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/generator.html @@ -0,0 +1,388 @@ + +AR.js Marker Training + + + + + + + + + + + + + + + + +

AR.js Marker Training

+ + + + + + +
+ +
+ +

Welcome!

+
+ Details on how to pick the inner image can be found here +
+
+ +
+
+ + + + + +
+
+ +
+ Upload the image to put inside the marker +
+ +
+
+ +
+ Set size of inner image vs black border +
+
+
+ +
+
+ +
+ Set the pixel width/height of the image. +
+
+
+ +
+
+ +
+ Set the marker border color, using hexa code or color name. +
+
+
+ +
+
+ +
+ Download marker encoded from the uploaded image +
+
+
+ +
+ Download marker image +
+
+
+ +
+ Download markers as PDF +
+ One marker per page +
+
+
+ +
+ Download markers as PDF +
+ Two marker per page +
+
+
+ +
+ Download markers as PDF. +
+ Six marker per page +
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-arjs.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-arjs.png new file mode 100644 index 0000000..9f0873b Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-arjs.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-hiro.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-hiro.png new file mode 100644 index 0000000..1d3cd37 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-hiro.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-kanji.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-kanji.png new file mode 100644 index 0000000..1e0c5c9 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-kanji.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterA.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterA.png new file mode 100644 index 0000000..662e869 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterA.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterB.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterB.png new file mode 100644 index 0000000..bd68c58 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterB.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterC.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterC.png new file mode 100644 index 0000000..f0486f5 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterC.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterD.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterD.png new file mode 100644 index 0000000..c699ecd Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterD.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterF.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterF.png new file mode 100644 index 0000000..2d93d5d Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterF.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterG.png b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterG.png new file mode 100644 index 0000000..91e3409 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/inner-images/inner-letterG.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-arjs.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-arjs.patt new file mode 100644 index 0000000..66aaa38 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-arjs.patt @@ -0,0 +1,195 @@ +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 220 92 92 92 222 222 222 222 222 222 222 +222 94 222 92 222 220 99 222 151 137 222 222 222 222 222 222 +222 92 222 92 222 220 92 92 149 222 222 222 222 222 222 222 +222 92 92 92 92 220 99 222 92 222 222 222 222 222 222 222 + 92 222 222 222 92 220 99 222 222 92 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 220 92 92 92 222 222 222 222 222 222 222 +222 94 222 92 222 220 99 222 151 137 222 222 199 222 222 222 +222 92 222 92 222 220 92 92 149 222 222 222 199 145 158 222 +222 92 92 92 92 220 99 222 92 222 222 222 199 209 145 222 + 92 222 222 222 92 220 99 222 222 92 145 222 199 145 145 222 +222 222 222 222 222 222 222 222 222 222 222 145 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 220 92 92 92 222 222 222 222 222 222 222 +222 94 222 92 222 220 99 222 151 137 222 222 157 222 222 222 +222 92 222 92 222 220 92 92 149 222 222 222 157 0 38 222 +222 92 92 92 92 220 99 222 92 222 222 222 157 185 0 222 + 92 222 222 222 92 220 99 222 222 92 0 222 157 0 0 222 +222 222 222 222 222 222 222 222 222 222 222 0 222 222 222 222 + +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 137 222 222 92 222 +222 222 222 222 222 222 222 222 222 222 92 151 149 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 92 222 222 222 +222 222 222 222 222 222 222 222 222 222 92 99 92 99 99 222 +222 222 222 222 222 222 222 222 222 222 220 220 220 220 220 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 92 92 222 +222 222 222 222 222 222 222 222 222 222 222 92 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 94 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 92 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 158 145 145 222 +222 222 222 222 222 222 222 222 222 222 222 222 145 209 145 222 +222 222 222 222 222 222 222 222 222 222 222 199 199 199 199 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 145 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 145 222 +222 222 222 222 222 222 222 222 222 222 222 137 222 222 92 222 +222 222 222 222 222 222 222 222 222 222 92 151 149 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 92 222 222 222 +222 222 222 222 222 222 222 222 222 222 92 99 92 99 99 222 +222 222 222 222 222 222 222 222 222 222 220 220 220 220 220 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 92 92 222 +222 222 222 222 222 222 222 222 222 222 222 92 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 94 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 92 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 38 0 0 222 +222 222 222 222 222 222 222 222 222 222 222 222 0 185 0 222 +222 222 222 222 222 222 222 222 222 222 222 157 157 157 157 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 0 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 0 222 +222 222 222 222 222 222 222 222 222 222 222 137 222 222 92 222 +222 222 222 222 222 222 222 222 222 222 92 151 149 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 92 222 222 222 +222 222 222 222 222 222 222 222 222 222 92 99 92 99 99 222 +222 222 222 222 222 222 222 222 222 222 220 220 220 220 220 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 92 92 222 +222 222 222 222 222 222 222 222 222 222 222 92 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 92 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 94 92 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 92 222 + +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 92 222 222 99 220 92 222 222 222 92 +222 222 222 222 222 222 222 92 222 99 220 92 92 92 92 222 +222 222 222 222 222 222 222 149 92 92 220 222 92 222 92 222 +222 222 222 222 222 222 137 151 222 99 220 222 92 222 94 222 +222 222 222 222 222 222 222 92 92 92 220 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 145 222 222 222 222 222 222 222 222 222 222 222 +222 145 145 199 222 145 92 222 222 99 220 92 222 222 222 92 +222 145 209 199 222 222 222 92 222 99 220 92 92 92 92 222 +222 158 145 199 222 222 222 149 92 92 220 222 92 222 92 222 +222 222 222 199 222 222 137 151 222 99 220 222 92 222 94 222 +222 222 222 222 222 222 222 92 92 92 220 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 0 222 222 222 222 222 222 222 222 222 222 222 +222 0 0 157 222 0 92 222 222 99 220 92 222 222 222 92 +222 0 185 157 222 222 222 92 222 99 220 92 92 92 92 222 +222 38 0 157 222 222 222 149 92 92 220 222 92 222 92 222 +222 222 222 157 222 222 137 151 222 99 220 222 92 222 94 222 +222 222 222 222 222 222 222 92 92 92 220 222 222 92 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 + +222 92 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 94 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 92 222 222 222 222 222 222 222 222 222 222 222 +222 92 92 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 220 220 220 220 220 222 222 222 222 222 222 222 222 222 222 +222 99 99 92 99 92 222 222 222 222 222 222 222 222 222 222 +222 222 222 92 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 149 151 92 222 222 222 222 222 222 222 222 222 222 +222 92 222 222 137 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 92 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 94 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 92 222 222 222 222 222 222 222 222 222 222 222 +222 92 92 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 220 220 220 220 220 222 222 222 222 222 222 222 222 222 222 +222 99 99 92 99 92 222 222 222 222 222 222 222 222 222 222 +222 222 222 92 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 149 151 92 222 222 222 222 222 222 222 222 222 222 +222 92 222 222 137 222 222 222 222 222 222 222 222 222 222 222 +222 145 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +145 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 199 199 199 199 222 222 222 222 222 222 222 222 222 222 222 +222 145 209 145 222 222 222 222 222 222 222 222 222 222 222 222 +222 145 145 158 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 92 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 94 222 222 222 222 222 222 222 222 222 222 222 +222 222 92 222 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 92 92 222 222 222 222 222 222 222 222 222 222 222 +222 92 92 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 220 220 220 220 220 222 222 222 222 222 222 222 222 222 222 +222 99 99 92 99 92 222 222 222 222 222 222 222 222 222 222 +222 222 222 92 222 92 222 222 222 222 222 222 222 222 222 222 +222 222 92 149 151 92 222 222 222 222 222 222 222 222 222 222 +222 92 222 222 137 222 222 222 222 222 222 222 222 222 222 222 +222 0 222 222 222 222 222 222 222 222 222 222 222 222 222 222 + 0 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 +222 157 157 157 157 222 222 222 222 222 222 222 222 222 222 222 +222 0 185 0 222 222 222 222 222 222 222 222 222 222 222 222 +222 0 0 38 222 222 222 222 222 222 222 222 222 222 222 222 +222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-hiro.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-hiro.patt new file mode 100644 index 0000000..be8cd39 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-hiro.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 13 255 255 13 255 13 171 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 0 163 255 255 255 255 255 255 255 255 +255 0 251 251 0 255 0 162 0 29 0 188 0 0 0 255 +255 0 0 0 0 255 0 162 0 103 255 0 255 255 0 254 +255 0 255 255 0 255 0 162 0 240 255 0 255 255 1 254 +255 0 255 255 0 255 0 162 0 240 255 25 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 250 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 13 255 255 13 255 13 171 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 0 163 255 255 255 255 255 255 255 255 +255 0 251 251 0 255 0 162 0 29 0 188 0 0 0 255 +255 0 0 0 0 255 0 162 0 103 255 0 255 255 0 254 +255 0 255 255 0 255 0 162 0 240 255 0 255 255 1 254 +255 0 255 255 0 255 0 162 0 240 255 25 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 250 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 13 255 255 13 255 13 171 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 0 163 255 255 255 255 255 255 255 255 +255 0 251 251 0 255 0 162 0 29 0 188 0 0 0 255 +255 0 0 0 0 255 0 162 0 103 255 0 255 255 0 254 +255 0 255 255 0 255 0 162 0 240 255 0 255 255 1 254 +255 0 255 255 0 255 0 162 0 240 255 25 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 250 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 254 254 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 1 250 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 188 0 0 25 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 29 103 240 240 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 171 163 162 162 162 162 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 254 254 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 1 250 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 188 0 0 25 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 29 103 240 240 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 171 163 162 162 162 162 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 254 254 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 1 0 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 1 250 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 188 0 0 25 255 +255 255 255 255 255 255 255 255 255 255 255 0 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 29 103 240 240 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 171 163 162 162 162 162 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 255 255 255 +255 255 255 255 255 255 255 255 255 13 0 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 250 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 25 255 240 0 162 0 255 0 255 255 0 255 +254 1 255 255 0 255 240 0 162 0 255 0 255 255 0 255 +254 0 255 255 0 255 103 0 162 0 255 0 0 0 0 255 +255 0 0 0 188 0 29 0 162 0 255 0 251 251 0 255 +255 255 255 255 255 255 255 255 163 0 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 171 13 255 13 255 255 13 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 250 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 25 255 240 0 162 0 255 0 255 255 0 255 +254 1 255 255 0 255 240 0 162 0 255 0 255 255 0 255 +254 0 255 255 0 255 103 0 162 0 255 0 0 0 0 255 +255 0 0 0 188 0 29 0 162 0 255 0 251 251 0 255 +255 255 255 255 255 255 255 255 163 0 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 171 13 255 13 255 255 13 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 250 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 25 255 240 0 162 0 255 0 255 255 0 255 +254 1 255 255 0 255 240 0 162 0 255 0 255 255 0 255 +254 0 255 255 0 255 103 0 162 0 255 0 0 0 0 255 +255 0 0 0 188 0 29 0 162 0 255 0 251 251 0 255 +255 255 255 255 255 255 255 255 163 0 255 0 255 255 0 255 +255 255 255 255 255 255 255 255 171 13 255 13 255 255 13 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 162 162 162 162 163 171 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 240 240 103 29 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 25 0 0 188 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +250 1 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 254 254 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 162 162 162 162 163 171 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 240 240 103 29 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 25 0 0 188 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +250 1 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 254 254 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 0 13 255 255 255 255 255 255 255 255 255 +255 162 162 162 162 163 171 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 240 240 103 29 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 25 0 0 188 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +250 1 255 255 0 255 255 255 255 255 255 255 255 255 255 255 +255 0 1 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 254 254 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-kanji.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-kanji.patt new file mode 100644 index 0000000..e93607f --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-kanji.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 249 255 255 255 255 255 255 255 +255 255 255 255 255 255 251 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 20 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 194 0 0 255 255 255 255 255 255 +255 255 255 255 255 0 0 255 255 0 253 255 255 255 255 255 +255 255 255 255 212 0 254 255 255 0 0 255 255 255 255 255 +255 255 255 108 0 5 255 255 255 255 0 0 255 255 255 255 +255 255 0 0 0 255 255 255 255 255 255 0 0 23 255 255 +254 0 0 79 255 255 255 255 255 255 255 255 0 0 0 255 +255 13 255 255 255 255 255 255 255 255 255 255 255 209 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 249 255 255 255 255 255 255 255 +255 255 255 255 255 255 251 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 20 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 194 0 0 255 255 255 255 255 255 +255 255 255 255 255 0 0 255 255 0 253 255 255 255 255 255 +255 255 255 255 212 0 254 255 255 0 0 255 255 255 255 255 +255 255 255 108 0 5 255 255 255 255 0 0 255 255 255 255 +255 255 0 0 0 255 255 255 255 255 255 0 0 23 255 255 +254 0 0 79 255 255 255 255 255 255 255 255 0 0 0 255 +255 13 255 255 255 255 255 255 255 255 255 255 255 209 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 249 255 255 255 255 255 255 255 +255 255 255 255 255 255 251 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 20 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 0 194 0 0 255 255 255 255 255 255 +255 255 255 255 255 0 0 255 255 0 253 255 255 255 255 255 +255 255 255 255 212 0 254 255 255 0 0 255 255 255 255 255 +255 255 255 108 0 5 255 255 255 255 0 0 255 255 255 255 +255 255 0 0 0 255 255 255 255 255 255 0 0 23 255 255 +254 0 0 79 255 255 255 255 255 255 255 255 0 0 0 255 +255 13 255 255 255 255 255 255 255 255 255 255 255 209 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 23 0 209 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 253 0 0 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 249 0 0 0 0 255 255 255 255 255 255 +255 255 0 0 0 0 0 0 0 194 255 255 255 255 255 255 +255 255 255 255 255 255 251 20 0 0 0 254 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 0 0 5 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 212 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 108 0 79 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 13 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 23 0 209 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 253 0 0 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 249 0 0 0 0 255 255 255 255 255 255 +255 255 0 0 0 0 0 0 0 194 255 255 255 255 255 255 +255 255 255 255 255 255 251 20 0 0 0 254 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 0 0 5 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 212 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 108 0 79 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 13 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 23 0 209 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 253 0 0 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 249 0 0 0 0 255 255 255 255 255 255 +255 255 0 0 0 0 0 0 0 194 255 255 255 255 255 255 +255 255 255 255 255 255 251 20 0 0 0 254 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 0 0 5 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 212 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 108 0 79 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 13 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 + +255 255 209 255 255 255 255 255 255 255 255 255 255 255 13 255 +255 0 0 0 255 255 255 255 255 255 255 255 79 0 0 254 +255 255 23 0 0 255 255 255 255 255 255 0 0 0 255 255 +255 255 255 255 0 0 255 255 255 255 5 0 108 255 255 255 +255 255 255 255 255 0 0 255 255 254 0 212 255 255 255 255 +255 255 255 255 255 253 0 255 255 0 0 255 255 255 255 255 +255 255 255 255 255 255 0 0 194 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 20 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 251 255 255 255 255 255 255 +255 255 255 255 255 255 255 249 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 209 255 255 255 255 255 255 255 255 255 255 255 13 255 +255 0 0 0 255 255 255 255 255 255 255 255 79 0 0 254 +255 255 23 0 0 255 255 255 255 255 255 0 0 0 255 255 +255 255 255 255 0 0 255 255 255 255 5 0 108 255 255 255 +255 255 255 255 255 0 0 255 255 254 0 212 255 255 255 255 +255 255 255 255 255 253 0 255 255 0 0 255 255 255 255 255 +255 255 255 255 255 255 0 0 194 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 20 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 251 255 255 255 255 255 255 +255 255 255 255 255 255 255 249 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 209 255 255 255 255 255 255 255 255 255 255 255 13 255 +255 0 0 0 255 255 255 255 255 255 255 255 79 0 0 254 +255 255 23 0 0 255 255 255 255 255 255 0 0 0 255 255 +255 255 255 255 0 0 255 255 255 255 5 0 108 255 255 255 +255 255 255 255 255 0 0 255 255 254 0 212 255 255 255 255 +255 255 255 255 255 253 0 255 255 0 0 255 255 255 255 255 +255 255 255 255 255 255 0 0 194 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 20 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 251 255 255 255 255 255 255 +255 255 255 255 255 255 255 249 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 13 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 79 0 108 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 212 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 5 0 0 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 254 0 0 0 20 251 255 255 255 255 255 255 +255 255 255 255 255 255 194 0 0 0 0 0 0 0 255 255 +255 255 255 255 255 255 0 0 0 0 249 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 0 0 253 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +209 0 23 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 13 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 79 0 108 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 212 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 5 0 0 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 254 0 0 0 20 251 255 255 255 255 255 255 +255 255 255 255 255 255 194 0 0 0 0 0 0 0 255 255 +255 255 255 255 255 255 0 0 0 0 249 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 0 0 253 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +209 0 23 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 13 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 79 0 108 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 212 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 5 0 0 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 254 0 0 0 20 251 255 255 255 255 255 255 +255 255 255 255 255 255 194 0 0 0 0 0 0 0 255 255 +255 255 255 255 255 255 0 0 0 0 249 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 0 0 253 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +209 0 23 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterA.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterA.patt new file mode 100644 index 0000000..7c4499c --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterA.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 231 16 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 100 255 255 255 255 255 255 +255 255 255 255 255 255 28 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 0 221 255 255 255 255 255 +255 255 255 255 255 72 180 0 0 0 1 255 255 255 255 255 +255 255 255 255 255 0 255 225 0 0 0 254 255 255 255 255 +255 255 255 255 165 89 255 255 0 0 0 12 255 255 255 255 +255 255 255 255 0 255 255 255 121 0 0 0 255 255 255 255 +255 255 255 246 0 0 0 0 0 0 0 0 65 255 255 255 +255 255 255 6 255 255 255 255 255 53 0 0 0 255 255 255 +255 255 252 0 255 255 255 255 255 255 0 0 0 186 255 255 +255 255 0 126 255 255 255 255 255 255 2 0 0 0 255 255 +251 5 0 0 108 252 255 255 254 184 0 0 0 0 5 239 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 253 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 244 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 79 255 255 255 255 255 255 +255 255 255 255 255 255 59 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 0 189 255 255 255 255 255 +255 255 255 255 255 140 139 0 0 0 0 255 255 255 255 255 +255 255 255 255 255 0 255 239 0 0 0 239 255 255 255 255 +255 255 255 255 203 40 255 255 0 0 0 0 255 255 255 255 +255 255 255 255 0 254 255 255 177 0 0 0 255 255 255 255 +255 255 255 254 0 0 0 0 0 0 0 0 33 255 255 255 +255 255 255 15 255 255 255 255 255 94 0 0 0 255 255 255 +255 255 255 0 255 255 255 255 255 255 0 0 0 156 255 255 +255 255 0 67 255 255 255 255 255 255 8 0 0 0 255 255 +252 12 0 0 70 249 255 255 255 193 0 0 0 0 4 227 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 252 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 252 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 55 255 255 255 255 255 255 +255 255 255 255 255 255 78 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 0 142 255 255 255 255 255 +255 255 255 255 255 191 114 0 0 0 0 255 255 255 255 255 +255 255 255 255 255 0 255 249 0 0 0 212 255 255 255 255 +255 255 255 255 234 13 255 255 0 0 0 0 255 255 255 255 +255 255 255 255 0 252 255 255 217 0 0 0 255 255 255 255 +255 255 255 254 0 0 0 0 0 0 0 0 24 255 255 255 +255 255 255 27 241 255 255 255 255 128 0 0 0 255 255 255 +255 255 255 0 255 255 255 255 255 255 0 0 0 110 255 255 +255 255 25 0 255 255 255 255 255 255 13 0 0 0 255 255 +254 16 0 0 63 240 255 255 255 202 0 0 0 0 2 218 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 239 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 5 255 +255 255 255 255 255 255 255 255 255 255 255 255 186 0 0 255 +255 255 255 255 255 255 255 255 255 255 65 0 0 0 0 255 +255 255 255 255 255 255 255 254 12 0 0 0 0 0 0 255 +255 255 255 255 255 221 1 0 0 0 0 0 0 2 0 255 +255 255 255 100 0 0 0 0 0 0 0 53 255 255 184 255 +254 16 0 0 0 0 0 0 0 121 0 255 255 255 254 255 +255 231 0 0 0 0 0 225 255 255 0 255 255 255 255 255 +255 255 255 255 28 0 180 255 255 255 0 255 255 255 255 255 +255 255 255 255 255 255 72 0 89 255 0 255 255 255 252 255 +255 255 255 255 255 255 255 255 165 0 0 255 255 255 108 255 +255 255 255 255 255 255 255 255 255 255 246 6 0 126 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 252 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 5 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 251 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 227 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 4 255 +255 255 255 255 255 255 255 255 255 255 255 255 156 0 0 255 +255 255 255 255 255 255 255 255 255 255 33 0 0 0 0 255 +255 255 255 255 255 255 255 239 0 0 0 0 0 0 0 255 +255 255 255 255 255 189 0 0 0 0 0 0 0 8 0 255 +255 255 255 79 0 0 0 0 0 0 0 94 255 255 193 255 +253 0 0 0 0 0 0 0 0 177 0 255 255 255 255 255 +255 244 0 0 0 0 0 239 255 255 0 255 255 255 255 255 +255 255 255 255 59 0 139 255 255 255 0 255 255 255 255 255 +255 255 255 255 255 255 140 0 40 254 0 255 255 255 249 255 +255 255 255 255 255 255 255 255 203 0 0 255 255 255 70 255 +255 255 255 255 255 255 255 255 255 255 254 15 0 67 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 12 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 252 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 218 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 2 255 +255 255 255 255 255 255 255 255 255 255 255 255 110 0 0 255 +255 255 255 255 255 255 255 255 255 255 24 0 0 0 0 255 +255 255 255 255 255 255 255 212 0 0 0 0 0 0 0 255 +255 255 255 255 255 142 0 0 0 0 0 0 0 13 0 255 +255 255 255 55 0 0 0 0 0 0 0 128 255 255 202 255 +252 0 0 0 0 0 0 0 0 217 0 255 255 255 255 255 +255 252 0 0 0 0 0 249 255 255 0 255 255 255 255 255 +255 255 255 255 78 0 114 255 255 255 0 255 255 255 255 255 +255 255 255 255 255 255 191 0 13 252 0 255 255 255 240 255 +255 255 255 255 255 255 255 255 234 0 0 241 255 255 63 255 +255 255 255 255 255 255 255 255 255 255 254 27 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 25 0 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 16 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +239 5 0 0 0 0 184 254 255 255 252 108 0 0 5 251 +255 255 0 0 0 2 255 255 255 255 255 255 126 0 255 255 +255 255 186 0 0 0 255 255 255 255 255 255 0 252 255 255 +255 255 255 0 0 0 53 255 255 255 255 255 6 255 255 255 +255 255 255 65 0 0 0 0 0 0 0 0 246 255 255 255 +255 255 255 255 0 0 0 121 255 255 255 0 255 255 255 255 +255 255 255 255 12 0 0 0 255 255 89 165 255 255 255 255 +255 255 255 255 254 0 0 0 225 255 0 255 255 255 255 255 +255 255 255 255 255 1 0 0 0 180 72 255 255 255 255 255 +255 255 255 255 255 221 0 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 28 255 255 255 255 255 255 +255 255 255 255 255 255 100 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 16 231 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +227 4 0 0 0 0 193 255 255 255 249 70 0 0 12 252 +255 255 0 0 0 8 255 255 255 255 255 255 67 0 255 255 +255 255 156 0 0 0 255 255 255 255 255 255 0 255 255 255 +255 255 255 0 0 0 94 255 255 255 255 255 15 255 255 255 +255 255 255 33 0 0 0 0 0 0 0 0 254 255 255 255 +255 255 255 255 0 0 0 177 255 255 254 0 255 255 255 255 +255 255 255 255 0 0 0 0 255 255 40 203 255 255 255 255 +255 255 255 255 239 0 0 0 239 255 0 255 255 255 255 255 +255 255 255 255 255 0 0 0 0 139 140 255 255 255 255 255 +255 255 255 255 255 189 0 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 59 255 255 255 255 255 255 +255 255 255 255 255 255 79 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 244 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 253 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +218 2 0 0 0 0 202 255 255 255 240 63 0 0 16 254 +255 255 0 0 0 13 255 255 255 255 255 255 0 25 255 255 +255 255 110 0 0 0 255 255 255 255 255 255 0 255 255 255 +255 255 255 0 0 0 128 255 255 255 255 241 27 255 255 255 +255 255 255 24 0 0 0 0 0 0 0 0 254 255 255 255 +255 255 255 255 0 0 0 217 255 255 252 0 255 255 255 255 +255 255 255 255 0 0 0 0 255 255 13 234 255 255 255 255 +255 255 255 255 212 0 0 0 249 255 0 255 255 255 255 255 +255 255 255 255 255 0 0 0 0 114 191 255 255 255 255 255 +255 255 255 255 255 142 0 0 0 0 255 255 255 255 255 255 +255 255 255 255 255 255 0 0 0 78 255 255 255 255 255 255 +255 255 255 255 255 255 55 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 0 252 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 252 255 255 255 255 255 255 255 255 + +255 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 5 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 252 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 126 0 6 246 255 255 255 255 255 255 255 255 255 255 +255 108 255 255 255 0 0 165 255 255 255 255 255 255 255 255 +255 252 255 255 255 0 255 89 0 72 255 255 255 255 255 255 +255 255 255 255 255 0 255 255 255 180 0 28 255 255 255 255 +255 255 255 255 255 0 255 255 225 0 0 0 0 0 231 255 +255 254 255 255 255 0 121 0 0 0 0 0 0 0 16 254 +255 184 255 255 53 0 0 0 0 0 0 0 100 255 255 255 +255 0 2 0 0 0 0 0 0 1 221 255 255 255 255 255 +255 0 0 0 0 0 0 12 254 255 255 255 255 255 255 255 +255 0 0 0 0 65 255 255 255 255 255 255 255 255 255 255 +255 0 0 186 255 255 255 255 255 255 255 255 255 255 255 255 +255 5 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 239 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 252 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 12 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 67 0 15 254 255 255 255 255 255 255 255 255 255 255 +255 70 255 255 255 0 0 203 255 255 255 255 255 255 255 255 +255 249 255 255 255 0 254 40 0 140 255 255 255 255 255 255 +255 255 255 255 255 0 255 255 255 139 0 59 255 255 255 255 +255 255 255 255 255 0 255 255 239 0 0 0 0 0 244 255 +255 255 255 255 255 0 177 0 0 0 0 0 0 0 0 253 +255 193 255 255 94 0 0 0 0 0 0 0 79 255 255 255 +255 0 8 0 0 0 0 0 0 0 189 255 255 255 255 255 +255 0 0 0 0 0 0 0 239 255 255 255 255 255 255 255 +255 0 0 0 0 33 255 255 255 255 255 255 255 255 255 255 +255 0 0 156 255 255 255 255 255 255 255 255 255 255 255 255 +255 4 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 227 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 25 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 27 254 255 255 255 255 255 255 255 255 255 255 +255 63 255 255 241 0 0 234 255 255 255 255 255 255 255 255 +255 240 255 255 255 0 252 13 0 191 255 255 255 255 255 255 +255 255 255 255 255 0 255 255 255 114 0 78 255 255 255 255 +255 255 255 255 255 0 255 255 249 0 0 0 0 0 252 255 +255 255 255 255 255 0 217 0 0 0 0 0 0 0 0 252 +255 202 255 255 128 0 0 0 0 0 0 0 55 255 255 255 +255 0 13 0 0 0 0 0 0 0 142 255 255 255 255 255 +255 0 0 0 0 0 0 0 212 255 255 255 255 255 255 255 +255 0 0 0 0 24 255 255 255 255 255 255 255 255 255 255 +255 0 0 110 255 255 255 255 255 255 255 255 255 255 255 255 +255 2 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 218 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterB.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterB.patt new file mode 100644 index 0000000..618870e --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterB.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 159 159 159 159 159 159 159 167 217 255 255 255 255 255 +255 255 255 138 0 0 0 225 140 0 0 0 6 255 255 255 +255 255 255 254 0 0 0 255 255 255 0 0 0 25 255 255 +255 255 255 254 0 0 0 255 255 255 143 0 0 0 255 255 +255 255 255 254 0 0 0 255 255 255 161 0 0 0 255 255 +255 255 255 254 0 0 0 255 255 255 0 0 0 18 255 255 +255 255 255 254 0 0 0 255 238 9 0 0 128 255 255 255 +255 255 255 254 0 0 0 48 0 0 0 0 172 255 255 255 +255 255 255 254 0 0 0 255 255 255 0 0 0 0 255 255 +255 255 255 254 0 0 0 255 255 255 255 0 0 0 80 255 +255 255 255 254 0 0 0 255 255 255 255 0 0 0 20 255 +255 255 255 254 0 0 0 255 255 255 255 0 0 0 29 255 +255 255 255 254 0 0 0 255 255 255 106 0 0 0 255 255 +255 255 255 144 0 0 0 100 240 21 0 0 0 251 255 255 +255 255 114 114 114 114 114 114 114 120 210 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 159 159 159 159 159 159 159 162 214 255 255 255 255 255 +255 255 255 180 0 0 0 225 149 0 0 0 0 255 255 255 +255 255 255 254 0 0 0 255 255 255 1 0 0 2 255 255 +255 255 255 255 0 0 0 255 255 255 191 0 0 0 255 255 +255 255 255 255 0 0 0 255 255 255 206 0 0 0 255 255 +255 255 255 255 0 0 0 255 255 255 11 0 0 10 255 255 +255 255 255 255 0 0 0 255 245 16 0 0 102 255 255 255 +255 255 255 255 0 0 0 48 0 0 0 0 153 255 255 255 +255 255 255 255 0 0 0 255 255 255 1 0 0 0 255 255 +255 255 255 255 0 0 0 255 255 255 255 0 0 0 27 255 +255 255 255 255 0 0 0 255 255 255 255 0 0 0 8 255 +255 255 255 255 0 0 0 255 255 255 255 0 0 0 24 255 +255 255 255 254 0 0 0 255 255 255 144 0 0 0 254 255 +255 255 255 183 0 0 0 48 242 24 0 0 0 247 255 255 +255 255 114 114 114 114 114 114 114 120 204 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 159 159 159 159 159 159 159 163 211 255 255 255 255 255 +255 255 255 210 0 0 0 228 160 1 0 0 0 255 255 255 +255 255 255 255 0 0 0 254 255 255 9 0 0 0 255 255 +255 255 255 255 0 0 0 254 255 255 229 0 0 0 255 255 +255 255 255 255 0 0 0 254 255 255 240 0 0 0 255 255 +255 255 255 255 0 0 0 254 255 255 22 0 0 2 255 255 +255 255 255 255 0 0 0 255 247 21 0 0 74 255 255 255 +255 255 255 255 0 0 0 47 0 0 0 0 147 255 255 255 +255 255 255 255 0 0 0 254 255 255 11 0 0 0 255 255 +255 255 255 255 0 0 0 254 255 255 255 0 0 0 23 255 +255 255 255 255 0 0 0 254 255 255 255 0 0 0 0 255 +255 255 255 255 0 0 0 254 255 255 255 0 0 0 16 255 +255 255 255 255 0 0 0 254 255 255 186 0 0 0 254 255 +255 255 255 220 0 0 0 41 245 26 0 0 0 239 255 255 +255 255 114 114 114 114 114 114 114 120 199 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 80 20 29 255 255 255 +255 255 255 25 0 0 18 255 255 0 0 0 0 0 251 255 +255 255 6 0 0 0 0 128 172 0 0 0 0 0 0 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 +255 217 0 0 143 161 0 0 0 0 255 255 255 106 0 210 +255 167 0 255 255 255 255 9 0 255 255 255 255 255 21 120 +255 159 140 255 255 255 255 238 0 255 255 255 255 255 240 114 +255 159 225 255 255 255 255 255 48 255 255 255 255 255 100 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 138 254 254 254 254 254 254 254 254 254 254 254 144 114 +255 159 255 255 255 255 255 255 255 255 255 255 255 255 255 114 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 27 8 24 254 255 255 +255 255 255 2 0 0 10 255 255 0 0 0 0 0 247 255 +255 255 0 0 0 0 0 102 153 0 0 0 0 0 0 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 +255 214 0 1 191 206 11 0 0 1 255 255 255 144 0 204 +255 162 0 255 255 255 255 16 0 255 255 255 255 255 24 120 +255 159 149 255 255 255 255 245 0 255 255 255 255 255 242 114 +255 159 225 255 255 255 255 255 48 255 255 255 255 255 48 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 180 254 255 255 255 255 255 255 255 255 255 254 183 114 +255 159 255 255 255 255 255 255 255 255 255 255 255 255 255 114 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 23 0 16 254 255 255 +255 255 255 0 0 0 2 255 255 0 0 0 0 0 239 255 +255 255 0 0 0 0 0 74 147 0 0 0 0 0 0 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 +255 211 0 9 229 240 22 0 0 11 255 255 255 186 0 199 +255 163 1 255 255 255 255 21 0 255 255 255 255 255 26 120 +255 159 160 255 255 255 255 247 0 255 255 255 255 255 245 114 +255 159 228 254 254 254 254 255 47 254 254 254 254 254 41 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 0 0 0 0 0 0 0 0 0 0 0 0 0 114 +255 159 210 255 255 255 255 255 255 255 255 255 255 255 220 114 +255 159 255 255 255 255 255 255 255 255 255 255 255 255 255 114 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 210 120 114 114 114 114 114 114 114 255 255 +255 255 251 0 0 0 21 240 100 0 0 0 144 255 255 255 +255 255 0 0 0 106 255 255 255 0 0 0 254 255 255 255 +255 29 0 0 0 255 255 255 255 0 0 0 254 255 255 255 +255 20 0 0 0 255 255 255 255 0 0 0 254 255 255 255 +255 80 0 0 0 255 255 255 255 0 0 0 254 255 255 255 +255 255 0 0 0 0 255 255 255 0 0 0 254 255 255 255 +255 255 255 172 0 0 0 0 48 0 0 0 254 255 255 255 +255 255 255 128 0 0 9 238 255 0 0 0 254 255 255 255 +255 255 18 0 0 0 255 255 255 0 0 0 254 255 255 255 +255 255 0 0 0 161 255 255 255 0 0 0 254 255 255 255 +255 255 0 0 0 143 255 255 255 0 0 0 254 255 255 255 +255 255 25 0 0 0 255 255 255 0 0 0 254 255 255 255 +255 255 255 6 0 0 0 140 225 0 0 0 138 255 255 255 +255 255 255 255 255 217 167 159 159 159 159 159 159 159 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 204 120 114 114 114 114 114 114 114 255 255 +255 255 247 0 0 0 24 242 48 0 0 0 183 255 255 255 +255 254 0 0 0 144 255 255 255 0 0 0 254 255 255 255 +255 24 0 0 0 255 255 255 255 0 0 0 255 255 255 255 +255 8 0 0 0 255 255 255 255 0 0 0 255 255 255 255 +255 27 0 0 0 255 255 255 255 0 0 0 255 255 255 255 +255 255 0 0 0 1 255 255 255 0 0 0 255 255 255 255 +255 255 255 153 0 0 0 0 48 0 0 0 255 255 255 255 +255 255 255 102 0 0 16 245 255 0 0 0 255 255 255 255 +255 255 10 0 0 11 255 255 255 0 0 0 255 255 255 255 +255 255 0 0 0 206 255 255 255 0 0 0 255 255 255 255 +255 255 0 0 0 191 255 255 255 0 0 0 255 255 255 255 +255 255 2 0 0 1 255 255 255 0 0 0 254 255 255 255 +255 255 255 0 0 0 0 149 225 0 0 0 180 255 255 255 +255 255 255 255 255 214 162 159 159 159 159 159 159 159 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 199 120 114 114 114 114 114 114 114 255 255 +255 255 239 0 0 0 26 245 41 0 0 0 220 255 255 255 +255 254 0 0 0 186 255 255 254 0 0 0 255 255 255 255 +255 16 0 0 0 255 255 255 254 0 0 0 255 255 255 255 +255 0 0 0 0 255 255 255 254 0 0 0 255 255 255 255 +255 23 0 0 0 255 255 255 254 0 0 0 255 255 255 255 +255 255 0 0 0 11 255 255 254 0 0 0 255 255 255 255 +255 255 255 147 0 0 0 0 47 0 0 0 255 255 255 255 +255 255 255 74 0 0 21 247 255 0 0 0 255 255 255 255 +255 255 2 0 0 22 255 255 254 0 0 0 255 255 255 255 +255 255 0 0 0 240 255 255 254 0 0 0 255 255 255 255 +255 255 0 0 0 229 255 255 254 0 0 0 255 255 255 255 +255 255 0 0 0 9 255 255 254 0 0 0 255 255 255 255 +255 255 255 0 0 0 1 160 228 0 0 0 210 255 255 255 +255 255 255 255 255 211 163 159 159 159 159 159 159 159 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +114 255 255 255 255 255 255 255 255 255 255 255 255 255 159 255 +114 144 254 254 254 254 254 254 254 254 254 254 254 138 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 100 255 255 255 255 255 48 255 255 255 255 255 225 159 255 +114 240 255 255 255 255 255 0 238 255 255 255 255 140 159 255 +120 21 255 255 255 255 255 0 9 255 255 255 255 0 167 255 +210 0 106 255 255 255 0 0 0 0 161 143 0 0 217 255 +255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 0 0 0 0 0 0 172 128 0 0 0 0 6 255 255 +255 251 0 0 0 0 0 255 255 18 0 0 25 255 255 255 +255 255 255 29 20 80 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +114 255 255 255 255 255 255 255 255 255 255 255 255 255 159 255 +114 183 254 255 255 255 255 255 255 255 255 255 254 180 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 48 255 255 255 255 255 48 255 255 255 255 255 225 159 255 +114 242 255 255 255 255 255 0 245 255 255 255 255 149 159 255 +120 24 255 255 255 255 255 0 16 255 255 255 255 0 162 255 +204 0 144 255 255 255 1 0 0 11 206 191 1 0 214 255 +255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 0 0 0 0 0 0 153 102 0 0 0 0 0 255 255 +255 247 0 0 0 0 0 255 255 10 0 0 2 255 255 255 +255 255 254 24 8 27 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +114 255 255 255 255 255 255 255 255 255 255 255 255 255 159 255 +114 220 255 255 255 255 255 255 255 255 255 255 255 210 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 0 0 0 0 0 0 0 0 0 0 0 0 0 159 255 +114 41 254 254 254 254 254 47 255 254 254 254 254 228 159 255 +114 245 255 255 255 255 255 0 247 255 255 255 255 160 159 255 +120 26 255 255 255 255 255 0 21 255 255 255 255 1 163 255 +199 0 186 255 255 255 11 0 0 22 240 229 9 0 211 255 +255 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 0 0 0 0 0 0 147 74 0 0 0 0 0 255 255 +255 239 0 0 0 0 0 255 255 2 0 0 0 255 255 255 +255 255 254 16 0 23 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterC.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterC.patt new file mode 100644 index 0000000..9423129 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterC.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 204 0 0 0 0 0 239 255 32 255 255 +255 255 255 251 0 0 0 219 255 255 238 0 0 0 255 255 +255 255 231 0 0 0 255 255 255 255 255 255 4 0 255 255 +255 255 0 0 0 251 255 255 255 255 255 255 255 0 255 255 +255 53 0 0 0 255 255 255 255 255 255 255 255 25 255 255 +255 0 0 0 39 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 110 255 255 255 255 255 255 255 255 255 255 255 +254 0 0 0 108 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 46 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 16 255 255 255 255 255 255 255 255 255 255 255 +255 15 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 0 195 255 255 255 255 255 255 255 0 255 255 +255 255 237 0 0 0 254 255 255 255 255 255 0 164 255 255 +255 255 255 254 9 0 0 4 147 128 4 0 245 255 255 255 +255 255 255 255 255 255 209 137 128 165 252 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 213 0 0 0 0 0 234 255 57 255 255 +255 255 255 255 0 0 0 211 255 255 243 0 0 0 255 255 +255 255 246 0 0 0 255 255 255 255 255 255 9 0 255 255 +255 255 0 0 0 240 255 255 255 255 255 255 255 0 255 255 +255 96 0 0 0 255 255 255 255 255 255 255 255 66 255 255 +255 0 0 0 31 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 42 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 41 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 38 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 74 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 0 175 255 255 255 255 255 255 255 0 255 255 +255 255 250 0 0 0 245 255 255 255 255 255 0 136 255 255 +255 255 255 254 12 0 0 3 142 134 4 0 240 255 255 255 +255 255 255 255 255 255 214 140 128 162 249 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 219 0 0 0 0 0 228 255 91 255 255 +255 255 255 255 0 0 0 202 255 255 248 0 0 0 255 255 +255 255 252 0 0 0 255 255 255 255 255 255 48 0 255 255 +255 255 0 0 0 224 255 255 255 255 255 255 255 0 255 255 +255 130 0 0 0 255 255 255 255 255 255 255 255 95 255 255 +255 0 0 0 20 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 35 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 35 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 27 255 255 255 255 255 255 255 255 255 255 255 +255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 114 0 0 0 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 0 134 255 255 255 255 255 255 255 2 255 255 +255 255 252 0 0 0 232 255 255 255 255 255 0 101 255 255 +255 255 255 255 16 0 0 2 136 140 5 0 228 255 255 255 +255 255 255 255 255 255 219 144 129 159 245 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 32 0 0 0 25 255 255 255 255 255 255 0 164 255 255 +255 255 0 4 255 255 255 255 255 255 255 255 255 0 245 255 +255 239 0 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 0 238 255 255 255 255 255 255 255 255 255 255 255 4 252 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 128 165 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 147 128 +255 0 219 255 255 255 255 255 255 255 255 255 255 255 4 137 +255 0 0 255 255 255 255 255 255 255 255 255 255 254 0 209 +255 204 0 0 251 255 255 255 255 255 255 255 195 0 0 255 +255 255 0 0 0 0 39 110 108 46 16 0 0 0 9 255 +255 255 251 0 0 0 0 0 0 0 0 0 0 0 254 255 +255 255 255 231 0 0 0 0 0 0 0 0 0 237 255 255 +255 255 255 255 255 53 0 0 0 0 0 15 255 255 255 255 +255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 57 0 0 0 66 255 255 255 255 255 255 0 136 255 255 +255 255 0 9 255 255 255 255 255 255 255 255 255 0 240 255 +255 234 0 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 0 243 255 255 255 255 255 255 255 255 255 255 255 4 249 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 134 162 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 142 128 +255 0 211 255 255 255 255 255 255 255 255 255 255 255 3 140 +255 0 0 255 255 255 255 255 255 255 255 255 255 245 0 214 +255 213 0 0 240 255 255 255 255 255 255 255 175 0 0 255 +255 255 0 0 0 0 31 42 41 38 0 0 0 0 12 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 254 255 +255 255 255 246 0 0 0 0 0 0 0 0 0 250 255 255 +255 255 255 255 255 96 0 0 0 0 0 74 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 91 0 0 0 95 255 255 255 255 255 255 2 101 255 255 +255 255 0 48 255 255 255 255 255 255 255 255 255 0 228 255 +255 228 0 255 255 255 255 255 255 255 255 255 255 255 0 255 +255 0 248 255 255 255 255 255 255 255 255 255 255 255 5 245 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 140 159 +255 0 255 255 255 255 255 255 255 255 255 255 255 255 136 129 +255 0 202 255 255 255 255 255 255 255 255 255 255 255 2 144 +255 0 0 255 255 255 255 255 255 255 255 255 255 232 0 219 +255 219 0 0 224 255 255 255 255 255 255 255 134 0 0 255 +255 255 0 0 0 0 20 35 35 27 0 0 0 0 16 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 255 255 252 0 0 0 0 0 0 0 0 0 252 255 255 +255 255 255 255 255 130 0 0 0 0 0 114 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 252 165 128 137 209 255 255 255 255 255 255 +255 255 255 245 0 4 128 147 4 0 0 9 254 255 255 255 +255 255 164 0 255 255 255 255 255 254 0 0 0 237 255 255 +255 255 0 255 255 255 255 255 255 255 195 0 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 15 255 +255 255 255 255 255 255 255 255 255 255 255 16 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 46 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 108 0 0 0 254 +255 255 255 255 255 255 255 255 255 255 255 110 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 39 0 0 0 255 +255 255 25 255 255 255 255 255 255 255 255 0 0 0 53 255 +255 255 0 255 255 255 255 255 255 255 251 0 0 0 255 255 +255 255 0 4 255 255 255 255 255 255 0 0 0 231 255 255 +255 255 0 0 0 238 255 255 219 0 0 0 251 255 255 255 +255 255 32 255 239 0 0 0 0 0 204 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 249 162 128 140 214 255 255 255 255 255 255 +255 255 255 240 0 4 134 142 3 0 0 12 254 255 255 255 +255 255 136 0 255 255 255 255 255 245 0 0 0 250 255 255 +255 255 0 255 255 255 255 255 255 255 175 0 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 74 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 38 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 41 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 42 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 31 0 0 0 255 +255 255 66 255 255 255 255 255 255 255 255 0 0 0 96 255 +255 255 0 255 255 255 255 255 255 255 240 0 0 0 255 255 +255 255 0 9 255 255 255 255 255 255 0 0 0 246 255 255 +255 255 0 0 0 243 255 255 211 0 0 0 255 255 255 255 +255 255 57 255 234 0 0 0 0 0 213 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 245 159 129 144 219 255 255 255 255 255 255 +255 255 255 228 0 5 140 136 2 0 0 16 255 255 255 255 +255 255 101 0 255 255 255 255 255 232 0 0 0 252 255 255 +255 255 2 255 255 255 255 255 255 255 134 0 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 114 255 +255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 27 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 35 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 35 0 0 0 255 +255 255 255 255 255 255 255 255 255 255 255 20 0 0 0 255 +255 255 95 255 255 255 255 255 255 255 255 0 0 0 130 255 +255 255 0 255 255 255 255 255 255 255 224 0 0 0 255 255 +255 255 0 48 255 255 255 255 255 255 0 0 0 252 255 255 +255 255 0 0 0 248 255 255 202 0 0 0 255 255 255 255 +255 255 91 255 228 0 0 0 0 0 219 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 255 +255 255 255 255 15 0 0 0 0 0 53 255 255 255 255 255 +255 255 237 0 0 0 0 0 0 0 0 0 231 255 255 255 +255 254 0 0 0 0 0 0 0 0 0 0 0 251 255 255 +255 9 0 0 0 16 46 108 110 39 0 0 0 0 255 255 +255 0 0 195 255 255 255 255 255 255 255 251 0 0 204 255 +209 0 254 255 255 255 255 255 255 255 255 255 255 0 0 255 +137 4 255 255 255 255 255 255 255 255 255 255 255 219 0 255 +128 147 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +165 128 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +252 4 255 255 255 255 255 255 255 255 255 255 255 238 0 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 0 239 255 +255 245 0 255 255 255 255 255 255 255 255 255 4 0 255 255 +255 255 164 0 255 255 255 255 255 255 25 0 0 0 32 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 74 0 0 0 0 0 96 255 255 255 255 255 +255 255 250 0 0 0 0 0 0 0 0 0 246 255 255 255 +255 254 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 12 0 0 0 0 38 41 42 31 0 0 0 0 255 255 +255 0 0 175 255 255 255 255 255 255 255 240 0 0 213 255 +214 0 245 255 255 255 255 255 255 255 255 255 255 0 0 255 +140 3 255 255 255 255 255 255 255 255 255 255 255 211 0 255 +128 142 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +162 134 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +249 4 255 255 255 255 255 255 255 255 255 255 255 243 0 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 0 234 255 +255 240 0 255 255 255 255 255 255 255 255 255 9 0 255 255 +255 255 136 0 255 255 255 255 255 255 66 0 0 0 57 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 114 0 0 0 0 0 130 255 255 255 255 255 +255 255 252 0 0 0 0 0 0 0 0 0 252 255 255 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 16 0 0 0 0 27 35 35 20 0 0 0 0 255 255 +255 0 0 134 255 255 255 255 255 255 255 224 0 0 219 255 +219 0 232 255 255 255 255 255 255 255 255 255 255 0 0 255 +144 2 255 255 255 255 255 255 255 255 255 255 255 202 0 255 +129 136 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +159 140 255 255 255 255 255 255 255 255 255 255 255 255 0 255 +245 5 255 255 255 255 255 255 255 255 255 255 255 248 0 255 +255 0 255 255 255 255 255 255 255 255 255 255 255 0 228 255 +255 228 0 255 255 255 255 255 255 255 255 255 48 0 255 255 +255 255 101 2 255 255 255 255 255 255 95 0 0 0 91 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterD.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterD.patt new file mode 100644 index 0000000..35aae3e --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterD.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 86 86 86 86 86 86 86 141 233 255 255 255 255 255 255 +255 255 252 0 0 0 222 228 50 0 0 0 255 255 255 255 +255 255 255 0 0 0 223 255 255 251 0 0 0 255 255 255 +255 255 255 0 0 0 223 255 255 255 101 0 0 0 255 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 215 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 2 255 +255 255 255 0 0 0 223 255 255 255 255 0 0 0 234 255 +255 255 255 0 0 0 223 255 255 255 144 0 0 1 255 255 +255 255 255 0 0 0 223 255 255 255 0 0 0 255 255 255 +255 255 224 0 0 0 0 157 63 0 0 82 255 255 255 255 +255 231 231 231 231 231 231 231 239 254 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 86 86 86 86 86 86 86 133 226 255 255 255 255 255 255 +255 255 254 0 0 0 188 232 53 0 0 0 255 255 255 255 +255 255 255 0 0 0 192 255 255 255 0 0 0 254 255 255 +255 255 255 0 0 0 192 255 255 255 146 0 0 0 255 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 187 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 192 255 255 255 255 10 0 0 0 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 192 255 255 255 255 0 0 0 215 255 +255 255 255 0 0 0 192 255 255 255 181 0 0 0 255 255 +255 255 255 0 0 0 192 255 255 255 0 0 0 255 255 255 +255 255 237 0 0 0 0 160 75 0 0 77 255 255 255 255 +255 231 231 231 231 231 231 231 238 253 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 84 86 86 86 86 86 86 130 223 255 255 255 255 255 255 +255 255 255 0 0 0 155 233 59 0 0 0 254 255 255 255 +255 255 255 0 0 0 160 255 255 255 0 0 0 254 255 255 +255 255 255 0 0 0 160 255 255 255 184 0 0 0 255 255 +255 255 255 0 0 0 160 255 255 255 255 0 0 0 157 255 +255 255 255 0 0 0 160 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 160 255 255 255 255 13 0 0 0 255 +255 255 255 0 0 0 160 255 255 255 255 23 0 0 0 255 +255 255 255 0 0 0 160 255 255 255 255 13 0 0 0 255 +255 255 255 0 0 0 160 255 255 255 255 0 0 0 0 255 +255 255 255 0 0 0 160 255 255 255 255 0 0 0 192 255 +255 255 255 0 0 0 160 255 255 255 211 0 0 0 255 255 +255 255 255 0 0 0 160 255 255 255 0 0 0 255 255 255 +255 255 250 0 0 0 0 160 91 0 0 68 255 255 255 255 +255 230 231 231 231 231 231 231 238 252 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 215 0 0 0 0 2 234 255 255 255 255 +255 255 255 255 0 0 0 0 0 0 0 0 1 255 255 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 82 255 +255 255 0 0 101 255 255 255 255 255 255 255 144 0 0 255 +255 233 0 251 255 255 255 255 255 255 255 255 255 255 0 254 +255 141 50 255 255 255 255 255 255 255 255 255 255 255 63 239 +255 86 228 255 255 255 255 255 255 255 255 255 255 255 157 231 +255 86 222 223 223 223 223 223 223 223 223 223 223 223 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 252 255 255 255 255 255 255 255 255 255 255 255 224 231 +255 86 255 255 255 255 255 255 255 255 255 255 255 255 255 231 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 187 0 0 0 0 0 215 255 255 255 255 +255 255 255 254 0 0 0 0 0 0 0 0 0 255 255 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 0 10 0 0 0 0 0 77 255 +255 255 0 0 146 255 255 255 255 255 255 255 181 0 0 255 +255 226 0 255 255 255 255 255 255 255 255 255 255 255 0 253 +255 133 53 255 255 255 255 255 255 255 255 255 255 255 75 238 +255 86 232 255 255 255 255 255 255 255 255 255 255 255 160 231 +255 86 188 192 192 192 192 192 192 192 192 192 192 192 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 254 255 255 255 255 255 255 255 255 255 255 255 237 231 +255 86 255 255 255 255 255 255 255 255 255 255 255 255 255 231 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 157 0 0 0 0 0 192 255 255 255 255 +255 255 255 254 0 0 0 0 0 0 0 0 0 255 255 255 +255 255 254 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 13 23 13 0 0 0 0 68 255 +255 255 0 0 184 255 255 255 255 255 255 255 211 0 0 255 +255 223 0 255 255 255 255 255 255 255 255 255 255 255 0 252 +255 130 59 255 255 255 255 255 255 255 255 255 255 255 91 238 +255 86 233 255 255 255 255 255 255 255 255 255 255 255 160 231 +255 86 155 160 160 160 160 160 160 160 160 160 160 160 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 0 0 0 0 0 0 0 0 0 0 0 0 0 231 +255 86 255 255 255 255 255 255 255 255 255 255 255 255 250 231 +255 84 255 255 255 255 255 255 255 255 255 255 255 255 255 230 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 254 239 231 231 231 231 231 231 231 255 +255 255 255 255 82 0 0 63 157 0 0 0 0 224 255 255 +255 255 255 0 0 0 255 255 255 223 0 0 0 255 255 255 +255 255 1 0 0 144 255 255 255 223 0 0 0 255 255 255 +255 234 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 2 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 215 0 0 0 255 255 255 255 223 0 0 0 255 255 255 +255 255 0 0 0 101 255 255 255 223 0 0 0 255 255 255 +255 255 255 0 0 0 251 255 255 223 0 0 0 255 255 255 +255 255 255 255 0 0 0 50 228 222 0 0 0 252 255 255 +255 255 255 255 255 255 233 141 86 86 86 86 86 86 86 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 253 238 231 231 231 231 231 231 231 255 +255 255 255 255 77 0 0 75 160 0 0 0 0 237 255 255 +255 255 255 0 0 0 255 255 255 192 0 0 0 255 255 255 +255 255 0 0 0 181 255 255 255 192 0 0 0 255 255 255 +255 215 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 0 0 0 10 255 255 255 255 192 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 187 0 0 0 255 255 255 255 192 0 0 0 255 255 255 +255 255 0 0 0 146 255 255 255 192 0 0 0 255 255 255 +255 255 254 0 0 0 255 255 255 192 0 0 0 255 255 255 +255 255 255 255 0 0 0 53 232 188 0 0 0 254 255 255 +255 255 255 255 255 255 226 133 86 86 86 86 86 86 86 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 252 238 231 231 231 231 231 231 230 255 +255 255 255 255 68 0 0 91 160 0 0 0 0 250 255 255 +255 255 255 0 0 0 255 255 255 160 0 0 0 255 255 255 +255 255 0 0 0 211 255 255 255 160 0 0 0 255 255 255 +255 192 0 0 0 255 255 255 255 160 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 160 0 0 0 255 255 255 +255 0 0 0 13 255 255 255 255 160 0 0 0 255 255 255 +255 0 0 0 23 255 255 255 255 160 0 0 0 255 255 255 +255 0 0 0 13 255 255 255 255 160 0 0 0 255 255 255 +255 0 0 0 0 255 255 255 255 160 0 0 0 255 255 255 +255 157 0 0 0 255 255 255 255 160 0 0 0 255 255 255 +255 255 0 0 0 184 255 255 255 160 0 0 0 255 255 255 +255 255 254 0 0 0 255 255 255 160 0 0 0 255 255 255 +255 255 255 254 0 0 0 59 233 155 0 0 0 255 255 255 +255 255 255 255 255 255 223 130 86 86 86 86 86 86 84 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +231 255 255 255 255 255 255 255 255 255 255 255 255 255 86 255 +231 224 255 255 255 255 255 255 255 255 255 255 255 252 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 223 223 223 223 223 223 223 223 223 223 223 222 86 255 +231 157 255 255 255 255 255 255 255 255 255 255 255 228 86 255 +239 63 255 255 255 255 255 255 255 255 255 255 255 50 141 255 +254 0 255 255 255 255 255 255 255 255 255 255 251 0 233 255 +255 0 0 144 255 255 255 255 255 255 255 101 0 0 255 255 +255 82 0 0 0 0 0 0 0 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 255 255 1 0 0 0 0 0 0 0 0 255 255 255 255 +255 255 255 255 234 2 0 0 0 0 215 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +231 255 255 255 255 255 255 255 255 255 255 255 255 255 86 255 +231 237 255 255 255 255 255 255 255 255 255 255 255 254 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 192 192 192 192 192 192 192 192 192 192 192 188 86 255 +231 160 255 255 255 255 255 255 255 255 255 255 255 232 86 255 +238 75 255 255 255 255 255 255 255 255 255 255 255 53 133 255 +253 0 255 255 255 255 255 255 255 255 255 255 255 0 226 255 +255 0 0 181 255 255 255 255 255 255 255 146 0 0 255 255 +255 77 0 0 0 0 0 10 0 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 255 255 0 0 0 0 0 0 0 0 0 254 255 255 255 +255 255 255 255 215 0 0 0 0 0 187 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +230 255 255 255 255 255 255 255 255 255 255 255 255 255 84 255 +231 250 255 255 255 255 255 255 255 255 255 255 255 255 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 0 0 0 0 0 0 0 0 0 0 0 0 86 255 +231 0 160 160 160 160 160 160 160 160 160 160 160 155 86 255 +231 160 255 255 255 255 255 255 255 255 255 255 255 233 86 255 +238 91 255 255 255 255 255 255 255 255 255 255 255 59 130 255 +252 0 255 255 255 255 255 255 255 255 255 255 255 0 223 255 +255 0 0 211 255 255 255 255 255 255 255 184 0 0 255 255 +255 68 0 0 0 0 13 23 13 0 0 0 0 0 255 255 +255 255 0 0 0 0 0 0 0 0 0 0 0 254 255 255 +255 255 255 0 0 0 0 0 0 0 0 0 254 255 255 255 +255 255 255 255 192 0 0 0 0 0 157 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterF.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterF.patt new file mode 100644 index 0000000..e9af06b --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterF.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 253 3 0 0 0 24 24 22 7 0 0 172 255 255 +255 255 255 210 0 0 0 255 255 255 255 255 0 172 255 255 +255 255 255 233 0 0 0 255 255 255 255 255 240 172 255 255 +255 255 255 233 0 0 0 255 255 255 28 255 255 168 255 255 +255 255 255 233 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 233 0 0 0 255 255 76 0 255 255 255 255 255 +255 255 255 233 0 0 0 0 0 0 0 255 255 255 255 255 +255 255 255 233 0 0 0 255 255 0 0 255 255 255 255 255 +255 255 255 233 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 233 0 0 0 255 255 255 5 255 255 255 255 255 +255 255 255 233 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 234 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 96 0 0 0 253 255 255 255 255 255 255 255 255 +255 247 48 48 48 48 48 48 48 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 254 5 0 0 0 25 24 22 8 0 0 124 255 255 +255 255 255 242 0 0 0 255 255 255 255 255 0 124 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 251 124 255 255 +255 255 255 255 0 0 0 255 255 255 47 255 255 127 255 255 +255 255 255 255 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 113 0 255 255 255 255 255 +255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 0 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 27 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 131 0 0 0 249 255 255 255 255 255 255 255 255 +255 255 48 48 48 48 48 48 48 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 254 44 0 0 0 24 24 22 9 0 0 104 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 0 104 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 253 104 255 255 +255 255 255 255 0 0 0 255 255 255 59 255 255 105 255 255 +255 255 255 255 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 144 0 255 255 255 255 255 +255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 29 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 0 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 47 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 +255 255 255 155 0 0 0 238 255 255 255 255 255 255 255 255 +255 255 48 48 48 48 48 48 48 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 172 172 172 168 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 240 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 7 255 255 28 0 0 0 0 0 5 255 255 255 255 +255 255 22 255 255 255 255 76 0 0 255 255 255 255 255 255 +255 255 24 255 255 255 255 255 0 255 255 255 255 255 255 48 +255 255 24 255 255 255 255 255 0 255 255 255 255 255 253 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 3 210 233 233 233 233 233 233 233 233 233 234 96 48 +255 255 253 255 255 255 255 255 255 255 255 255 255 255 255 48 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 247 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 124 124 124 127 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 251 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 8 255 255 47 0 0 0 0 0 27 255 255 255 255 +255 255 22 255 255 255 255 113 0 0 255 255 255 255 255 255 +255 255 24 255 255 255 255 255 0 255 255 255 255 255 255 48 +255 255 25 255 255 255 255 255 0 255 255 255 255 255 249 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 5 242 255 255 255 255 255 255 255 255 255 255 131 48 +255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 48 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 104 104 104 105 255 255 255 255 255 255 255 255 255 255 +255 255 0 0 253 255 255 255 255 255 255 255 255 255 255 255 +255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 9 255 255 59 0 0 0 0 0 47 255 255 255 255 +255 255 22 255 255 255 255 144 0 29 255 255 255 255 255 255 +255 255 24 255 255 255 255 255 0 255 255 255 255 255 255 48 +255 255 24 255 255 255 255 255 0 255 255 255 255 255 238 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 48 +255 255 44 255 255 255 255 255 255 255 255 255 255 255 155 48 +255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 48 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 48 48 48 48 48 48 48 247 255 +255 255 255 255 255 255 255 255 253 0 0 0 96 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 234 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 233 255 255 255 +255 255 255 255 255 5 255 255 255 0 0 0 233 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 233 255 255 255 +255 255 255 255 255 0 0 255 255 0 0 0 233 255 255 255 +255 255 255 255 255 0 0 0 0 0 0 0 233 255 255 255 +255 255 255 255 255 0 76 255 255 0 0 0 233 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 233 255 255 255 +255 255 168 255 255 28 255 255 255 0 0 0 233 255 255 255 +255 255 172 240 255 255 255 255 255 0 0 0 233 255 255 255 +255 255 172 0 255 255 255 255 255 0 0 0 210 255 255 255 +255 255 172 0 0 7 22 24 24 0 0 0 3 253 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 48 48 48 48 48 48 48 255 255 +255 255 255 255 255 255 255 255 249 0 0 0 131 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 27 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 0 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 +255 255 255 255 255 0 113 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 255 255 255 255 +255 255 127 255 255 47 255 255 255 0 0 0 255 255 255 255 +255 255 124 251 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 124 0 255 255 255 255 255 0 0 0 242 255 255 255 +255 255 124 0 0 8 22 24 25 0 0 0 5 254 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 48 48 48 48 48 48 48 255 255 +255 255 255 255 255 255 255 255 238 0 0 0 155 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 47 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 29 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 +255 255 255 255 255 0 144 255 255 0 0 0 255 255 255 255 +255 255 255 255 255 0 255 255 255 0 0 0 255 255 255 255 +255 255 105 255 255 59 255 255 255 0 0 0 255 255 255 255 +255 255 104 253 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 104 0 255 255 255 255 255 0 0 0 255 255 255 255 +255 255 104 0 0 9 22 24 24 0 0 0 44 254 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +247 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 48 255 255 255 255 255 255 255 255 255 255 255 255 253 255 255 + 48 96 234 233 233 233 233 233 233 233 233 233 210 3 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 253 255 255 255 255 255 0 255 255 255 255 255 24 255 255 + 48 255 255 255 255 255 255 0 255 255 255 255 255 24 255 255 +255 255 255 255 255 255 0 0 76 255 255 255 255 22 255 255 +255 255 255 255 5 0 0 0 0 0 28 255 255 7 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 240 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 168 172 172 172 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 48 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 + 48 131 255 255 255 255 255 255 255 255 255 255 242 5 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 249 255 255 255 255 255 0 255 255 255 255 255 25 255 255 + 48 255 255 255 255 255 255 0 255 255 255 255 255 24 255 255 +255 255 255 255 255 255 0 0 113 255 255 255 255 22 255 255 +255 255 255 255 27 0 0 0 0 0 47 255 255 8 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 251 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 127 124 124 124 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 48 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 + 48 155 255 255 255 255 255 255 255 255 255 255 255 44 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 + 48 238 255 255 255 255 255 0 255 255 255 255 255 24 255 255 + 48 255 255 255 255 255 255 0 255 255 255 255 255 24 255 255 +255 255 255 255 255 255 29 0 144 255 255 255 255 22 255 255 +255 255 255 255 47 0 0 0 0 0 59 255 255 9 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 255 +255 255 255 255 255 255 255 255 255 255 255 253 0 0 255 255 +255 255 255 255 255 255 255 255 255 255 105 104 104 104 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterG.patt b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterG.patt new file mode 100644 index 0000000..98affa2 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/pattern-files/pattern-letterG.patt @@ -0,0 +1,195 @@ +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 132 65 58 81 219 255 255 226 255 255 +255 255 255 255 0 0 0 199 254 251 33 0 0 0 255 255 +255 255 247 0 0 0 255 255 255 255 255 251 0 0 255 255 +255 255 0 0 0 255 255 255 255 255 255 255 248 0 255 255 +255 2 0 0 11 255 255 255 255 255 255 255 255 32 255 255 +255 0 0 0 129 255 255 255 255 255 255 255 255 254 255 255 +231 0 0 0 247 255 255 255 255 255 255 255 255 255 255 255 +174 0 0 0 254 255 255 255 255 255 255 255 255 255 255 255 +175 0 0 0 253 255 255 255 255 252 252 252 252 252 252 252 +253 0 0 0 228 255 255 255 255 255 19 0 0 0 84 253 +255 0 0 0 52 255 255 255 255 255 253 0 0 0 255 255 +255 134 0 0 0 255 255 255 255 255 253 0 0 0 255 255 +255 255 3 0 0 219 255 255 255 255 253 0 0 0 255 255 +255 255 255 68 0 0 180 255 255 255 252 0 0 0 255 255 +255 255 255 255 255 78 0 0 0 0 0 9 203 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 154 67 58 79 208 255 255 249 255 255 +255 255 255 255 0 0 0 184 254 253 37 0 0 0 254 255 +255 255 250 0 0 0 255 255 255 255 255 254 0 0 254 255 +255 255 0 0 0 254 255 255 255 255 255 255 252 0 254 255 +255 5 0 0 0 255 255 255 255 255 255 255 255 51 254 255 +255 0 0 0 55 255 255 255 255 255 255 255 255 255 255 255 +253 0 0 0 218 255 255 255 255 255 255 255 255 255 255 255 +219 0 0 0 247 255 255 255 255 255 255 255 255 255 255 255 +221 0 0 0 242 255 255 255 255 252 252 252 252 252 252 252 +254 0 0 0 186 255 255 255 255 255 22 0 0 0 50 253 +255 0 0 0 44 255 255 255 255 255 254 0 0 0 254 255 +255 170 0 0 0 255 255 255 255 255 254 0 0 0 254 255 +255 255 4 0 0 193 255 255 255 255 254 0 0 0 254 255 +255 255 255 84 0 0 154 255 255 255 253 0 0 0 254 255 +255 255 255 255 255 92 0 0 0 0 0 0 197 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 165 70 58 77 200 255 255 255 254 255 +255 255 255 255 0 0 0 162 254 253 48 0 0 0 254 255 +255 255 253 0 0 0 255 255 255 255 255 255 0 0 254 255 +255 255 0 0 0 251 255 255 255 255 255 255 254 0 254 255 +255 73 0 0 0 255 255 255 255 255 255 255 255 66 254 255 +255 0 0 0 47 255 255 255 255 255 255 255 255 255 255 255 +254 0 0 0 176 255 255 255 255 255 255 255 255 255 255 255 +246 0 0 0 219 255 255 255 255 255 255 255 255 255 255 255 +247 0 0 0 209 255 255 255 255 251 252 252 252 252 252 252 +255 0 0 0 139 255 255 255 255 255 102 0 0 0 39 252 +255 0 0 0 30 255 255 255 255 255 254 0 0 0 254 255 +255 204 0 0 0 255 255 255 255 255 254 0 0 0 254 255 +255 255 36 0 0 160 255 255 255 255 254 0 0 0 254 255 +255 255 255 99 0 0 124 255 255 255 255 0 0 0 254 255 +255 255 255 255 255 108 0 0 0 0 0 0 181 255 255 255 + +255 255 255 255 255 255 255 255 255 252 253 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 252 84 255 255 255 255 255 +255 226 0 0 0 32 254 255 255 252 0 0 0 0 0 255 +255 255 0 0 248 255 255 255 255 252 0 0 0 0 0 203 +255 255 0 251 255 255 255 255 255 252 0 0 0 0 0 9 +255 219 33 255 255 255 255 255 255 252 19 253 253 253 252 0 +255 81 251 255 255 255 255 255 255 252 255 255 255 255 255 0 +255 58 254 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 65 199 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 132 0 255 255 255 255 255 255 255 255 255 255 255 180 0 +255 255 0 0 255 255 255 255 255 255 255 255 255 219 0 78 +255 255 0 0 0 11 129 247 254 253 228 52 0 0 0 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 68 255 +255 255 255 247 0 0 0 0 0 0 0 0 0 3 255 255 +255 255 255 255 255 2 0 0 0 0 0 0 134 255 255 255 +255 255 255 255 255 255 255 231 174 175 253 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 252 253 255 255 255 255 255 +255 255 254 254 254 254 255 255 255 252 50 254 254 254 254 255 +255 249 0 0 0 51 255 255 255 252 0 0 0 0 0 255 +255 255 0 0 252 255 255 255 255 252 0 0 0 0 0 197 +255 255 0 254 255 255 255 255 255 252 0 0 0 0 0 0 +255 208 37 255 255 255 255 255 255 252 22 254 254 254 253 0 +255 79 253 255 255 255 255 255 255 252 255 255 255 255 255 0 +255 58 254 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 67 184 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 154 0 255 255 255 255 255 255 255 255 255 255 255 154 0 +255 255 0 0 254 255 255 255 255 255 255 255 255 193 0 92 +255 255 0 0 0 0 55 218 247 242 186 44 0 0 0 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 84 255 +255 255 255 250 0 0 0 0 0 0 0 0 0 4 255 255 +255 255 255 255 255 5 0 0 0 0 0 0 170 255 255 255 +255 255 255 255 255 255 255 253 219 221 254 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 252 252 255 255 255 255 255 +255 254 254 254 254 254 255 255 255 252 39 254 254 254 254 255 +255 255 0 0 0 66 255 255 255 252 0 0 0 0 0 255 +255 255 0 0 254 255 255 255 255 252 0 0 0 0 0 181 +255 255 0 255 255 255 255 255 255 252 0 0 0 0 0 0 +255 200 48 255 255 255 255 255 255 252 102 254 254 254 255 0 +255 77 253 255 255 255 255 255 255 251 255 255 255 255 255 0 +255 58 254 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 70 162 255 255 255 255 255 255 255 255 255 255 255 255 0 +255 165 0 255 255 255 255 255 255 255 255 255 255 255 124 0 +255 255 0 0 251 255 255 255 255 255 255 255 255 160 0 108 +255 255 0 0 0 0 47 176 219 209 139 30 0 0 0 255 +255 255 255 0 0 0 0 0 0 0 0 0 0 0 99 255 +255 255 255 253 0 0 0 0 0 0 0 0 0 36 255 255 +255 255 255 255 255 73 0 0 0 0 0 0 204 255 255 255 +255 255 255 255 255 255 255 254 246 247 255 255 255 255 255 255 + +255 255 255 203 9 0 0 0 0 0 78 255 255 255 255 255 +255 255 0 0 0 252 255 255 255 180 0 0 68 255 255 255 +255 255 0 0 0 253 255 255 255 255 219 0 0 3 255 255 +255 255 0 0 0 253 255 255 255 255 255 0 0 0 134 255 +255 255 0 0 0 253 255 255 255 255 255 52 0 0 0 255 +253 84 0 0 0 19 255 255 255 255 255 228 0 0 0 253 +252 252 252 252 252 252 252 255 255 255 255 253 0 0 0 175 +255 255 255 255 255 255 255 255 255 255 255 254 0 0 0 174 +255 255 255 255 255 255 255 255 255 255 255 247 0 0 0 231 +255 255 254 255 255 255 255 255 255 255 255 129 0 0 0 255 +255 255 32 255 255 255 255 255 255 255 255 11 0 0 2 255 +255 255 0 248 255 255 255 255 255 255 255 0 0 0 255 255 +255 255 0 0 251 255 255 255 255 255 0 0 0 247 255 255 +255 255 0 0 0 33 251 254 199 0 0 0 255 255 255 255 +255 255 226 255 255 219 81 58 65 132 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 197 0 0 0 0 0 0 92 255 255 255 255 255 +255 254 0 0 0 253 255 255 255 154 0 0 84 255 255 255 +255 254 0 0 0 254 255 255 255 255 193 0 0 4 255 255 +255 254 0 0 0 254 255 255 255 255 255 0 0 0 170 255 +255 254 0 0 0 254 255 255 255 255 255 44 0 0 0 255 +253 50 0 0 0 22 255 255 255 255 255 186 0 0 0 254 +252 252 252 252 252 252 252 255 255 255 255 242 0 0 0 221 +255 255 255 255 255 255 255 255 255 255 255 247 0 0 0 219 +255 255 255 255 255 255 255 255 255 255 255 218 0 0 0 253 +255 255 255 255 255 255 255 255 255 255 255 55 0 0 0 255 +255 254 51 255 255 255 255 255 255 255 255 0 0 0 5 255 +255 254 0 252 255 255 255 255 255 255 254 0 0 0 255 255 +255 254 0 0 254 255 255 255 255 255 0 0 0 250 255 255 +255 254 0 0 0 37 253 254 184 0 0 0 255 255 255 255 +255 255 249 255 255 208 79 58 67 154 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +255 255 255 181 0 0 0 0 0 0 108 255 255 255 255 255 +255 254 0 0 0 255 255 255 255 124 0 0 99 255 255 255 +255 254 0 0 0 254 255 255 255 255 160 0 0 36 255 255 +255 254 0 0 0 254 255 255 255 255 255 0 0 0 204 255 +255 254 0 0 0 254 255 255 255 255 255 30 0 0 0 255 +252 39 0 0 0 102 255 255 255 255 255 139 0 0 0 255 +252 252 252 252 252 252 251 255 255 255 255 209 0 0 0 247 +255 255 255 255 255 255 255 255 255 255 255 219 0 0 0 246 +255 255 255 255 255 255 255 255 255 255 255 176 0 0 0 254 +255 255 255 255 255 255 255 255 255 255 255 47 0 0 0 255 +255 254 66 255 255 255 255 255 255 255 255 0 0 0 73 255 +255 254 0 254 255 255 255 255 255 255 251 0 0 0 255 255 +255 254 0 0 255 255 255 255 255 255 0 0 0 253 255 255 +255 254 0 0 0 48 253 254 162 0 0 0 255 255 255 255 +255 254 255 255 255 200 77 58 70 165 255 255 255 255 255 255 +255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + +255 255 255 255 255 253 175 174 231 255 255 255 255 255 255 255 +255 255 255 134 0 0 0 0 0 0 2 255 255 255 255 255 +255 255 3 0 0 0 0 0 0 0 0 0 247 255 255 255 +255 68 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 0 0 0 52 228 253 254 247 129 11 0 0 0 255 255 + 78 0 219 255 255 255 255 255 255 255 255 255 0 0 255 255 + 0 180 255 255 255 255 255 255 255 255 255 255 255 0 132 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 199 65 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 254 58 255 + 0 255 255 255 255 255 252 255 255 255 255 255 255 251 81 255 + 0 252 253 253 253 19 252 255 255 255 255 255 255 33 219 255 + 9 0 0 0 0 0 252 255 255 255 255 255 251 0 255 255 +203 0 0 0 0 0 252 255 255 255 255 248 0 0 255 255 +255 0 0 0 0 0 252 255 255 254 32 0 0 0 226 255 +255 255 255 255 255 84 252 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 253 252 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 254 221 219 253 255 255 255 255 255 255 255 +255 255 255 170 0 0 0 0 0 0 5 255 255 255 255 255 +255 255 4 0 0 0 0 0 0 0 0 0 250 255 255 255 +255 84 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 0 0 0 44 186 242 247 218 55 0 0 0 0 255 255 + 92 0 193 255 255 255 255 255 255 255 255 254 0 0 255 255 + 0 154 255 255 255 255 255 255 255 255 255 255 255 0 154 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 184 67 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 254 58 255 + 0 255 255 255 255 255 252 255 255 255 255 255 255 253 79 255 + 0 253 254 254 254 22 252 255 255 255 255 255 255 37 208 255 + 0 0 0 0 0 0 252 255 255 255 255 255 254 0 255 255 +197 0 0 0 0 0 252 255 255 255 255 252 0 0 255 255 +255 0 0 0 0 0 252 255 255 255 51 0 0 0 249 255 +255 254 254 254 254 50 252 255 255 255 254 254 254 254 255 255 +255 255 255 255 255 253 252 255 255 255 255 255 255 255 255 255 +255 255 255 255 255 255 247 246 254 255 255 255 255 255 255 255 +255 255 255 204 0 0 0 0 0 0 73 255 255 255 255 255 +255 255 36 0 0 0 0 0 0 0 0 0 253 255 255 255 +255 99 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +255 0 0 0 30 139 209 219 176 47 0 0 0 0 255 255 +108 0 160 255 255 255 255 255 255 255 255 251 0 0 255 255 + 0 124 255 255 255 255 255 255 255 255 255 255 255 0 165 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 162 70 255 + 0 255 255 255 255 255 255 255 255 255 255 255 255 254 58 255 + 0 255 255 255 255 255 251 255 255 255 255 255 255 253 77 255 + 0 255 254 254 254 102 252 255 255 255 255 255 255 48 200 255 + 0 0 0 0 0 0 252 255 255 255 255 255 255 0 255 255 +181 0 0 0 0 0 252 255 255 255 255 254 0 0 255 255 +255 0 0 0 0 0 252 255 255 255 66 0 0 0 255 255 +255 254 254 254 254 39 252 255 255 255 254 254 254 254 254 255 +255 255 255 255 255 252 252 255 255 255 255 255 255 255 255 255 diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-arjs.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-arjs.png new file mode 100644 index 0000000..4c87edd Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-arjs.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-hiro.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-hiro.png new file mode 100644 index 0000000..e4258c4 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-hiro.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-kanji.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-kanji.png new file mode 100644 index 0000000..eeacc67 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-kanji.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterA.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterA.png new file mode 100644 index 0000000..501fbb7 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterA.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterB.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterB.png new file mode 100644 index 0000000..796a01a Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterB.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterC.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterC.png new file mode 100644 index 0000000..b21463a Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterC.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterD.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterD.png new file mode 100644 index 0000000..6467537 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterD.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterF.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterF.png new file mode 100644 index 0000000..fc4f2b9 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterF.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterG.png b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterG.png new file mode 100644 index 0000000..eea8486 Binary files /dev/null and b/demo/ar/three.js/examples/marker-training/examples/pattern-images/pattern-letterG.png differ diff --git a/demo/ar/three.js/examples/marker-training/examples/patternmarker-from-image.html b/demo/ar/three.js/examples/marker-training/examples/patternmarker-from-image.html new file mode 100644 index 0000000..f822e15 --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/examples/patternmarker-from-image.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + +
+ AR.js - developement playground +
+ Contact me any time at @jerome_etienne +
diff --git a/demo/ar/three.js/examples/marker-training/threex-arpatternfile.js b/demo/ar/three.js/examples/marker-training/threex-arpatternfile.js new file mode 100644 index 0000000..65ec00c --- /dev/null +++ b/demo/ar/three.js/examples/marker-training/threex-arpatternfile.js @@ -0,0 +1,131 @@ +var THREEx = THREEx || {} + +THREEx.ArPatternFile = {} + +THREEx.ArPatternFile.toCanvas = function(patternFileString, onComplete){ + console.assert(false, 'not yet implemented') +} + +////////////////////////////////////////////////////////////////////////////// +// function to encode image +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArPatternFile.encodeImageURL = function(imageURL, onComplete){ + var image = new Image; + image.onload = function(){ + var patternFileString = THREEx.ArPatternFile.encodeImage(image) + onComplete(patternFileString) + } + image.src = imageURL; +} + +THREEx.ArPatternFile.encodeImage = function(image){ + // copy image on canvas + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d') + canvas.width = 16; + canvas.height = 16; + + // document.body.appendChild(canvas) + // canvas.style.width = '200px' + + + var patternFileString = '' + for(var orientation = 0; orientation > -2*Math.PI; orientation -= Math.PI/2){ + // draw on canvas - honor orientation + context.save(); + context.clearRect(0,0,canvas.width,canvas.height); + context.translate(canvas.width/2,canvas.height/2); + context.rotate(orientation); + context.drawImage(image, -canvas.width/2,-canvas.height/2, canvas.width, canvas.height); + context.restore(); + + // get imageData + var imageData = context.getImageData(0, 0, canvas.width, canvas.height) + + // generate the patternFileString for this orientation + if( orientation !== 0 ) patternFileString += '\n' + // NOTE bgr order and not rgb!!! so from 2 to 0 + for(var channelOffset = 2; channelOffset >= 0; channelOffset--){ + // console.log('channelOffset', channelOffset) + for(var y = 0; y < imageData.height; y++){ + for(var x = 0; x < imageData.width; x++){ + + if( x !== 0 ) patternFileString += ' ' + + var offset = (y*imageData.width*4) + (x * 4) + channelOffset + var value = imageData.data[offset] + + patternFileString += String(value).padStart(3); + } + patternFileString += '\n' + } + } + } + + return patternFileString +} + +////////////////////////////////////////////////////////////////////////////// +// trigger download +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArPatternFile.triggerDownload = function(patternFileString, fileName = 'pattern-marker.patt'){ + // tech from https://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server + var domElement = window.document.createElement('a'); + domElement.href = window.URL.createObjectURL(new Blob([patternFileString], {type: 'text/plain'})); + domElement.download = fileName; + document.body.appendChild(domElement) + domElement.click(); + document.body.removeChild(domElement) +} + +THREEx.ArPatternFile.buildFullMarker = function(innerImageURL, pattRatio, size, color, onComplete){ + var whiteMargin = 0.1 + var blackMargin = (1 - 2 * whiteMargin) * ((1-pattRatio)/2) + // var blackMargin = 0.2 + + var innerMargin = whiteMargin + blackMargin + + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d') + canvas.width = canvas.height = size + + context.fillStyle = 'white'; + context.fillRect(0,0,canvas.width, canvas.height) + + // copy image on canvas + context.fillStyle = color; + context.fillRect( + whiteMargin * canvas.width, + whiteMargin * canvas.height, + canvas.width * (1-2*whiteMargin), + canvas.height * (1-2*whiteMargin) + ); + + // clear the area for innerImage (in case of transparent image) + context.fillStyle = 'white'; + context.fillRect( + innerMargin * canvas.width, + innerMargin * canvas.height, + canvas.width * (1-2*innerMargin), + canvas.height * (1-2*innerMargin) + ); + + + // display innerImage in the middle + var innerImage = document.createElement('img') + innerImage.addEventListener('load', function(){ + // draw innerImage + context.drawImage(innerImage, + innerMargin * canvas.width, + innerMargin * canvas.height, + canvas.width * (1-2*innerMargin), + canvas.height * (1-2*innerMargin) + ); + + var imageUrl = canvas.toDataURL() + onComplete(imageUrl) + }) + innerImage.src = innerImageURL +} diff --git a/demo/ar/three.js/examples/measure-it.html b/demo/ar/three.js/examples/measure-it.html new file mode 100644 index 0000000..a26bc89 --- /dev/null +++ b/demo/ar/three.js/examples/measure-it.html @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + +
+ AR.js - Measure the distance between 2 markers - hiro and kanji +
+ Contact me any time at @nicolocarp +
+ + + +
+ +
+
+
+
+ + + diff --git a/demo/ar/three.js/examples/mobile-performance.html b/demo/ar/three.js/examples/mobile-performance.html new file mode 100644 index 0000000..7adc792 --- /dev/null +++ b/demo/ar/three.js/examples/mobile-performance.html @@ -0,0 +1,180 @@ + + + + + + + + + +
+ AR.js - three.js mobile performance +
+ Contact me any time at @nicolocarp +
diff --git a/demo/ar/three.js/examples/multi-markers/README.md b/demo/ar/three.js/examples/multi-markers/README.md new file mode 100644 index 0000000..c791e0c --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/README.md @@ -0,0 +1,112 @@ +This is my own version of the multi markers. + +Definition of multi marker. + + a multi marker is a group of marker acting as one. + +# Goal +Make a multi marker with a nice workflow. It must be as easy as possible for the user. +It must handle dynamic markers positions. + +- The user put all the markers where he want until he is satisfied. This is the dynamic part. +- After that, markers positions is considered stable. aka they are no more supposed to move. +- Those markers are called sub markers. +- AR.js will build a multi marker based on them. +- All the sub-markers will act as one, the multi-marker. +- the multi-marker pose will be averaged from all the visible sub-markers. + +Thus even if only one sub-marker is visible, multi-marker position will still be tracked properly + +# Area Learning Process +- the user moves its phone around the area to learn +- we detect markers position +- we store statistics on the respective position between each marker + - if i simultaneously see marker1 and marker2, i store the position of marker2 in relation to marker1 +- When the learning process is considered done, output a file containing a description of this multi-marker + +# Motivation +- tl;dr; there was too many bugs in artoolkit +- issue in the file parsing - TODO get github issue +- in jsartoolkit5, it has several issue in the multimarker file loading. It is + impossible to use twice the same marker filename. +- it handles poorly the url. It is forcing the user to put all the + files (multimarker file plus all the pattern file) at the root of the url. + +I tried to workaround those issues, but it rapidely became a pain. +So i prefered to devote my energy at building a good version instead of +working around those bugs. + + +--- + +# High Level Description + +The workflow is splitted into 3 steps : + +1. collect statistics about the relative position of each marker couple +1. generation of multi-marker description +1. using the multi-marker + +So we first have a learning phase to collect data and generating result, then +we have a usage phase, where the multi-marker is used in a AR application. + +So in short, you put all your markers where you like them. Then you scan them +with your phone to collect statistics about their relative position. +When you are done, you start using the AR application with this multi-marker. + +# Definitions +- a multi-marker is several markers acting as one +- a markerA is said to be a sub-marker of a multi-marker + +# Learning Algo description +- every time i see markerA and markerB at the same time, i store statistics on their relative position +- such couple is called a seen-couple +- the statistics collected are simply an average of position/quaternion/scale +- this statistics can be trivially expressed as a transformation matrix + +# Generation of Multi-Marker description +- when the learning is considered completed, we generate a multi marker description + - it is a json file in which each sub-markers has a transformation matrix relative to the origin sub-marker +- the first sub-marker is the anchor/root sub-marker. +- The origin position of the multi-marker is the origin sub-marker +- the origin sub-marker MUST be seen at least once during the learning phase + +## Description Format +- the description format is simple: +- it is a list with one item for each sub-markers + - it contains a description of the sub-markers (e.g. marker barcode 3) + - and a poseMatrix which is the transformation matrix relative to the origin sub-markers + - the first item is the origin sub-marker + + +--- + +# Computation of the average matrix for each sub-marker + +Once statistics are collected, we need to produce a description of this new +area. This is a json structure describing each sub-marker and their respective +position. + +Here are the algo which can be used + +## Minimal Algo - assume origin always visible +- Assume that the origin sub-marker is ALWAYS visible +- Look on all the seen-couple of the origin sub-marker +- for each sub-markers, you got the relative position with the origin sub-marker +- just generate the transformation matrix for it + +This is the one implemented + +## Minimal Algo - origin may sometime be invisible +- do first pass where you compute all couple which contain the origin submarkers +- so you computed the transformation matrix for each sub-marker which has been + visible with the origin marker +- you computed the level 1 of transformation matrices +- the level 0 would the transformation matrix of the origin sub-marker. But it is + always the identity matrix. +- you do an iterative process, where each iterations compute one more level. + +Algo for one iteration +1. for each sub-markers, check all the seen couple it appears in +2. if at least one already has a transformation matrix, compute the transformation +3. Loop until all sub-markers got computed diff --git a/demo/ar/three.js/examples/multi-markers/TODO.md b/demo/ar/three.js/examples/multi-markers/TODO.md new file mode 100644 index 0000000..aecf105 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/TODO.md @@ -0,0 +1,123 @@ +- NOGO in player, load the hardcoded from a file + - clean up the code and demo the case + - link the hardcoded one with the image of the multi marker + +--- +# Porting to a-frame +- port only multi markers controls +- start the port +- it will make it easier to do demo and accessible for aframe people +- preset='multimarker-localstorage' + +- put the smoother on option for aframe +- use the profile by default + - remove all the default from the aframe configuration + - so first, init basic of profile, then push specific configuration from configuration + - avoid to duplicate all the default + + +--- + +- posts "Area Learning with Marker-based Augmented Reality" + - larger AR + - more stable AR + - describe workflow: dynamic learning + usage + - screenshots of the experience + +- describe the algorightm you used to learn and to use multi markers +- algo definition: ALGORITHM.md here + - how to learn + - how to use + - may become a post on medium + +--- + + + + + + + + + +# new Learning UI + +- DONE in learner, display all the markers as text + - each got a progress in percent + - display percent in red + - when percent is 100%, display check character in green + - find function to get name of marker (worst case scenario - display index) + - type + patternUrl basename ? + - add a .name() function in the controls ? + - progress is directly the result.confidenceFactor clamp [0, 1] +- display the origin markers +- DONE Global progress for the whole area + - sum of all progress divided by the number of sub markers. + - It should exclude the origin markers +- change compute .computeAverageMatrix() + - rename to .computeResult() + - put a confidence factor in the Number + - userData.markerLearningResult.averageMatrix / .confidenceFactor + - what if the result can not be computed ? + - .averageMatrix === null && .confidenceFactor === 0 +- .computeResult() MUST support unlearned markers + - aka we can learn among X markers and get a valid result for less markers + - it MUST work in the learner, in the result production, and in the player +- result.confidenceFactor is about amount of sample used to compute the averageMatrix. + - Say that 200 samples is deemed good enough. +- result.confidenceFactor is n-samples / required-n-samples. + - notes that it can go above 1 + +# new learning algo + + + + + + +--- + +- make all markers children of a parent THREEx.ArBaseControls() + - GOAL: make it explicit what is expected from a AR controls + - emit event + - have id + - anything which is common + +- TODO put a smoother on sub-marker while learning ? as a way to remove noise ? + - do it and hide it behind a flags + - in relation with THREEx.ArBaseControls +- add a-frame support + - support for learning new area - can i just use the area-learner.html + - support of multi-marker description + + +- DONE make a function in controls to compute the center of the multi markers + - it can be used as a default position for the origin controls.computer + - this is simply the average of all sub-marker matrix + - so compute all the sub-markers matrix + +- make a video for it + - recorded on the phab2 - abcf + - Multi marker with AR.js + - insert: Designed for easy workflow + - Step 1: scan all markers with your phone + - Step 2: once done, you just use it! + - show what happen when you go close to the markers at low altitude + - insert: more stable + - insert: only one is visible? still works! + +- what to do with the official multimarker support + - make an example for it, and keep supporting it + - issue with the last jsartoolkit + - park multimarker.html + + +- do an apps which does something with it + - a minecraft going from submarkers to submarkers + + +- do a post about multimarker - https://medium.com/p/4bcafc785dfd/edit + + + +- DONE merge it all in the README.md diff --git a/demo/ar/three.js/examples/multi-markers/examples/images/delete-scene.png b/demo/ar/three.js/examples/multi-markers/examples/images/delete-scene.png new file mode 100644 index 0000000..8bb03ba Binary files /dev/null and b/demo/ar/three.js/examples/multi-markers/examples/images/delete-scene.png differ diff --git a/demo/ar/three.js/examples/multi-markers/examples/images/record-start.png b/demo/ar/three.js/examples/multi-markers/examples/images/record-start.png new file mode 100644 index 0000000..c46fa4b Binary files /dev/null and b/demo/ar/three.js/examples/multi-markers/examples/images/record-start.png differ diff --git a/demo/ar/three.js/examples/multi-markers/examples/images/record-stop.png b/demo/ar/three.js/examples/multi-markers/examples/images/record-stop.png new file mode 100644 index 0000000..6d99486 Binary files /dev/null and b/demo/ar/three.js/examples/multi-markers/examples/images/record-stop.png differ diff --git a/demo/ar/three.js/examples/multi-markers/examples/learner-testrunner.html b/demo/ar/three.js/examples/multi-markers/examples/learner-testrunner.html new file mode 100644 index 0000000..f7d0b23 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/learner-testrunner.html @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
+ AR.js - Multi marker + by @jerome_etienne +
+ Status: + stopped + - + File: + none +
+ Clear File +
+
+ + +
+
+
+ Tracking Unknown - + Learning Stopped +
+
    +
    + diff --git a/demo/ar/three.js/examples/multi-markers/examples/learner.html b/demo/ar/three.js/examples/multi-markers/examples/learner.html new file mode 100644 index 0000000..6260ad0 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/learner.html @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    + AR.js - Multi marker + by @jerome_etienne +
    + Status: + stopped + - + File: + none +
    + Clear File +
    +
    + + +
    +
    +
    + Tracking Unknown - + Learning Stopped +
    +
      +
      + diff --git a/demo/ar/three.js/examples/multi-markers/examples/player.html b/demo/ar/three.js/examples/multi-markers/examples/player.html new file mode 100644 index 0000000..05afb88 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/player.html @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
      + AR.js - Multi marker + by @jerome_etienne +
      + +
      + tracking backend: + artoolkit +
      + Marker helpers + - + reset area +
      + +
      + + +
      + diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal-original.html b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal-original.html new file mode 100644 index 0000000..6546059 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal-original.html @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Screen as a gate to another world - by @jerome_etienne + with AR.js +
      + Directly inspired of the cult demo by johnny lee +
      + +
      + +
      + + diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal.html b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal.html new file mode 100644 index 0000000..c1abd48 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/examples/screenAsPortal.html @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Screen as a gate to another world - by @jerome_etienne + with AR.js +
      + Directly inspired of the cult demo by johnny lee +
      + +
      + +
      + + diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/box.png b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/box.png new file mode 100644 index 0000000..243887c Binary files /dev/null and b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/box.png differ diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/target.png b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/target.png new file mode 100644 index 0000000..f154096 Binary files /dev/null and b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/images/target.png differ diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/threex-screenasportal.js b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/threex-screenasportal.js new file mode 100644 index 0000000..b2cd66a --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/threex-screenasportal/threex-screenasportal.js @@ -0,0 +1,163 @@ +var THREEx = THREEx || {} + +THREEx.ScreenAsPortal = function (multiMarkerFile) { + var _this = this + this.object3d = new THREE.Group + + // init render loop + this._onRenderFcts = [] + this.update = function () { + _this._onRenderFcts.forEach(function (onRenderFct) { + onRenderFct() + }) + } + + // compute screenSize + var markerSize = 1 + var whiteMargin = 0.125 * 2 + var boundingBox = THREEx.ArMultiMarkerControls.computeBoundingBox(multiMarkerFile) + boundingBox.min.x -= markerSize / 2 + whiteMargin + boundingBox.min.z -= markerSize / 2 + whiteMargin + boundingBox.max.x += markerSize / 2 + whiteMargin + boundingBox.max.z += markerSize / 2 + whiteMargin + var screenSize = boundingBox.getSize() + // console.log('screenSize', screenSize) + + var screenDepth = screenSize.z + initCube() + addTargets() + addBorders() + initLogo() + + + + return + + function initLogo() { + // add the inner box + var geometry = new THREE.PlaneGeometry(1, 1).rotateX(-Math.PI / 2) + var material = new THREE.MeshBasicMaterial({ + side: THREE.DoubleSide, + map: new THREE.TextureLoader().load(THREEx.ArToolkitContext.baseURL + '../data/logo/logo-black-transparent-512x204.png'), + alphaTest: 0.9, + }) + var mesh = new THREE.Mesh(geometry, material) + mesh.scale.set(screenSize.x, 1, screenSize.x * 204 / 512) + mesh.position.y = -screenDepth + 0.3 + _this.object3d.add(mesh) + } + + function initCube() { + // add outter cube - invisibility cloak + var geometry = new THREE.BoxGeometry(screenSize.x, screenDepth, screenSize.z) + geometry.faces.splice(4, 2) // make hole by removing top two triangles (is this assumption stable?) + var material = new THREE.MeshBasicMaterial({ + colorWrite: false // only write to z-buf + }) + var outterCubeMesh = new THREE.Mesh(geometry, material) + outterCubeMesh.scale.set(1.04, 1, 1.04) + outterCubeMesh.position.y = -geometry.parameters.height / 2 + 0.15 / 2 + _this.object3d.add(outterCubeMesh) + + // add the inner box + var textureBox = new THREE.TextureLoader().load(THREEx.ScreenAsPortal.baseURL + 'images/box.png') + textureBox.wrapS = THREE.RepeatWrapping; + textureBox.wrapT = THREE.RepeatWrapping; + textureBox.repeat.set(15, 20) + // textureBox.anisotropy = renderer.getMaxAnisotropy() + textureBox.anisotropy = 16; + var geometry = new THREE.BoxGeometry(screenSize.x, screenDepth, screenSize.z) + var material = new THREE.MeshBasicMaterial({ + side: THREE.BackSide, + map: textureBox, + color: 'white', + }) + var innerBoxMesh = new THREE.Mesh(geometry, material) + // innerBoxMesh.scale.set(0.96, 1, 0.96) + + innerBoxMesh.position.y = -geometry.parameters.height / 2 + _this.object3d.add(innerBoxMesh) + } + + function addTargets() { + // add the inner box + var geometry = new THREE.PlaneGeometry(0.8, 0.8).rotateX(-Math.PI / 2) + var material = new THREE.MeshBasicMaterial({ + side: THREE.DoubleSide, + map: new THREE.TextureLoader().load(THREEx.ScreenAsPortal.baseURL + 'images/target.png'), + alphaTest: 0.9, + }) + var targetModel = new THREE.Mesh(geometry, material) + + // create a blue LineBasicMaterial + var lineMaterial = new THREE.LineBasicMaterial({ + color: 0x0000ff + }) + + var nTargets = 8; + for (var i = 0; i < nTargets; i++) { + var positionX = (Math.random() - 0.5) * (screenSize.x - targetModel.geometry.parameters.width) + var positionZ = (Math.random() - 0.5) * (screenSize.z - targetModel.geometry.parameters.height) + var height = screenDepth * 0.25 + Math.random() * (screenDepth * 2) + addTarget(positionX, positionZ, height) + } + + + return + function addTarget(positionX, positionZ, height) { + var geometry = new THREE.Geometry() + geometry.vertices.push(new THREE.Vector3(0, 0, 0)) + geometry.vertices.push(new THREE.Vector3(0, height - 0.1, 0)) + var line = new THREE.Line(geometry, lineMaterial) + line.position.x = positionX + line.position.y = -screenDepth + line.position.z = positionZ + _this.object3d.add(line) + + var target = targetModel.clone() + target.position.copy(line.position) + target.position.y += height + _this.object3d.add(target) + + } + } + ////////////////////////////////////////////////////////////////////////////// + // addBorders + ////////////////////////////////////////////////////////////////////////////// + function addBorders() { + var thickNess = 0.15 + + var material = new THREE.MeshNormalMaterial() + var material = new THREE.MeshBasicMaterial({ + color: 'black', + // color: '#111', + }) + // top border + var geometry = new THREE.BoxGeometry(screenSize.x, thickNess, thickNess).rotateX(Math.PI / 4) + var mesh = new THREE.Mesh(geometry, material) + mesh.position.y = +thickNess / 2 + mesh.position.z = -screenSize.z / 2 + _this.object3d.add(mesh) + + // bottom border + var mesh = new THREE.Mesh(geometry, material) + mesh.position.y = +thickNess / 2 + mesh.position.z = +screenSize.z / 2 + _this.object3d.add(mesh) + + // left border + var geometry = new THREE.BoxGeometry(thickNess, thickNess, screenSize.z).rotateZ(Math.PI / 4) + var mesh = new THREE.Mesh(geometry, material) + mesh.position.y = +thickNess / 2 + mesh.position.x = -screenSize.x / 2 + _this.object3d.add(mesh) + + // right border + var mesh = new THREE.Mesh(geometry, material) + mesh.position.y = +thickNess / 2 + mesh.position.x = +screenSize.x / 2 + _this.object3d.add(mesh) + } +} + +THREEx.ScreenAsPortal.baseURL = '../' diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/examples/basic.html b/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/examples/basic.html new file mode 100644 index 0000000..2a7bf5c --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/examples/basic.html @@ -0,0 +1,106 @@ + + + + diff --git a/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/threex.tweencontrols.js b/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/threex.tweencontrols.js new file mode 100644 index 0000000..06ed1f2 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/threex-tweencontrols/threex.tweencontrols.js @@ -0,0 +1,403 @@ +var THREEx = THREEx || {} + +// TODO: make something to be able to tune the tween with a minSpeed. thus the object3d can be have a constant velocity + +THREEx.TweenControls = function(object3d){ + var _this = this + + this.object3d = object3d + this.enabled = true + var startTime = null + + var startPosition = new THREE.Vector3 + var finalPosition = new THREE.Vector3 + var startQuaternion = new THREE.Quaternion + var finalQuaternion = new THREE.Quaternion + var startScale = new THREE.Vector3 + var finalScale = new THREE.Vector3 + + + this.tweenDelay = 1 + // to set the tween function + // - for a full list, see tween.js TWEEN.Easing in https://github.com/sole/tween.js/blob/master/src/Tween.js + this.tweenFunction = THREEx.TweenControls.Easing.Linear.None + + this.setTargetFromObject3D = function(object3d){ + _this.setTarget(object3d.position, object3d.quaternion, object3d.scale) + } + this.setTarget = function(newPosition, newQuaternion, newScale){ + // handle default arguments + newPosition = newPosition || object3d.position + newQuaternion = newQuaternion || object3d.quaternion + newScale = newScale || object3d.scale + // set startTime + startTime = Date.now()/1000 + + // set position + startPosition.copy(object3d.position) + finalPosition.copy(newPosition) + // set quaternion + startQuaternion.copy(object3d.quaternion) + finalQuaternion.copy(newQuaternion) + // set scale + startScale.copy(object3d.scale) + finalScale.copy(newScale) + } + this.isRunning = function(){ + return startTime !== null ? true : false + } + this.update = function(){ + // return now if no tweening is in progress + if( startTime === null ) return + + var now = Date.now()/1000 + // if tweening just completed or disabled, set it to final pose + if( now - startTime > this.tweenDelay || _this.enabled === false ){ + startTime = null + // set the object3d at his final pose + object3d.position.copy(finalPosition) + object3d.quaternion.copy(finalQuaternion) + object3d.scale.copy(finalScale) + return + } + // compute and tween progress + var progress = (now - startTime) / this.tweenDelay + progress = this.tweenFunction(progress) + + // Position - compute and set current delta position based on progress + var distance = finalPosition.distanceTo(startPosition) * progress + var delta = finalPosition.clone().sub(startPosition) + delta.setLength(distance) + object3d.position.copy(startPosition).add(delta) + + // Quaternion - compute and set current delta position based on progress + object3d.quaternion.copy(startQuaternion).slerp(finalQuaternion, progress) + + // Scale - compute and set current delta position based on progress + var distance = finalScale.distanceTo(startScale) * progress + var delta = finalScale.clone().sub(startScale) + delta.setLength(distance) + object3d.scale.copy(startScale).add(delta) + } +} + + +// By the excelent Tween.js library - https://github.com/tweenjs/tween.js +// copied here to avoid dependancy +THREEx.TweenControls.Easing = { + + Linear: { + + None: function (k) { + + return k; + + } + + }, + + Quadratic: { + + In: function (k) { + + return k * k; + + }, + + Out: function (k) { + + return k * (2 - k); + + }, + + InOut: function (k) { + + if ((k *= 2) < 1) { + return 0.5 * k * k; + } + + return - 0.5 * (--k * (k - 2) - 1); + + } + + }, + + Cubic: { + + In: function (k) { + + return k * k * k; + + }, + + Out: function (k) { + + return --k * k * k + 1; + + }, + + InOut: function (k) { + + if ((k *= 2) < 1) { + return 0.5 * k * k * k; + } + + return 0.5 * ((k -= 2) * k * k + 2); + + } + + }, + + Quartic: { + + In: function (k) { + + return k * k * k * k; + + }, + + Out: function (k) { + + return 1 - (--k * k * k * k); + + }, + + InOut: function (k) { + + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k; + } + + return - 0.5 * ((k -= 2) * k * k * k - 2); + + } + + }, + + Quintic: { + + In: function (k) { + + return k * k * k * k * k; + + }, + + Out: function (k) { + + return --k * k * k * k * k + 1; + + }, + + InOut: function (k) { + + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k * k; + } + + return 0.5 * ((k -= 2) * k * k * k * k + 2); + + } + + }, + + Sinusoidal: { + + In: function (k) { + + return 1 - Math.cos(k * Math.PI / 2); + + }, + + Out: function (k) { + + return Math.sin(k * Math.PI / 2); + + }, + + InOut: function (k) { + + return 0.5 * (1 - Math.cos(Math.PI * k)); + + } + + }, + + Exponential: { + + In: function (k) { + + return k === 0 ? 0 : Math.pow(1024, k - 1); + + }, + + Out: function (k) { + + return k === 1 ? 1 : 1 - Math.pow(2, - 10 * k); + + }, + + InOut: function (k) { + + if (k === 0) { + return 0; + } + + if (k === 1) { + return 1; + } + + if ((k *= 2) < 1) { + return 0.5 * Math.pow(1024, k - 1); + } + + return 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2); + + } + + }, + + Circular: { + + In: function (k) { + + return 1 - Math.sqrt(1 - k * k); + + }, + + Out: function (k) { + + return Math.sqrt(1 - (--k * k)); + + }, + + InOut: function (k) { + + if ((k *= 2) < 1) { + return - 0.5 * (Math.sqrt(1 - k * k) - 1); + } + + return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + + } + + }, + + Elastic: { + + In: function (k) { + + if (k === 0) { + return 0; + } + + if (k === 1) { + return 1; + } + + return -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI); + + }, + + Out: function (k) { + + if (k === 0) { + return 0; + } + + if (k === 1) { + return 1; + } + + return Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1; + + }, + + InOut: function (k) { + + if (k === 0) { + return 0; + } + + if (k === 1) { + return 1; + } + + k *= 2; + + if (k < 1) { + return -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI); + } + + return 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1; + + } + + }, + + Back: { + + In: function (k) { + + var s = 1.70158; + + return k * k * ((s + 1) * k - s); + + }, + + Out: function (k) { + + var s = 1.70158; + + return --k * k * ((s + 1) * k + s) + 1; + + }, + + InOut: function (k) { + + var s = 1.70158 * 1.525; + + if ((k *= 2) < 1) { + return 0.5 * (k * k * ((s + 1) * k - s)); + } + + return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + + } + + }, + + Bounce: { + + In: function (k) { + + return 1 - TWEEN.Easing.Bounce.Out(1 - k); + + }, + + Out: function (k) { + + if (k < (1 / 2.75)) { + return 7.5625 * k * k; + } else if (k < (2 / 2.75)) { + return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75; + } else if (k < (2.5 / 2.75)) { + return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375; + } else { + return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375; + } + + }, + + InOut: function (k) { + + if (k < 0.5) { + return TWEEN.Easing.Bounce.In(k * 2) * 0.5; + } + + return TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5; + + } + + } + +}; diff --git a/demo/ar/three.js/examples/multi-markers/examples/tmp/default.html b/demo/ar/three.js/examples/multi-markers/examples/tmp/default.html new file mode 100644 index 0000000..8397c44 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/tmp/default.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + +
      + AR.js - default setting - webcam + hiro + profile + lerp +
      + Contact me any time at @jerome_etienne +
      diff --git a/demo/ar/three.js/examples/multi-markers/examples/tmp/learner-old.html b/demo/ar/three.js/examples/multi-markers/examples/tmp/learner-old.html new file mode 100644 index 0000000..00f2991 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/tmp/learner-old.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + +
      + AR.js - Multi marker + by @jerome_etienne +
      + Status: + stopped + - + File: + none +
      + Area learner : + clear + - + start + - + stop +
      +
      + + +
      + diff --git a/demo/ar/three.js/examples/multi-markers/examples/tmp/player-old.html b/demo/ar/three.js/examples/multi-markers/examples/tmp/player-old.html new file mode 100644 index 0000000..c1fbf71 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/examples/tmp/player-old.html @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + AR.js - Multi marker + by @jerome_etienne +
      + Record new area +
      + Markers Helper : + enable + / + disable + appMode : + stored + / + hardcoded +
      diff --git a/demo/ar/three.js/examples/multi-markers/markers-page/index.html b/demo/ar/three.js/examples/multi-markers/markers-page/index.html new file mode 100644 index 0000000..efe3d13 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/markers-page/index.html @@ -0,0 +1,90 @@ + + + + +
      + AR.js - Multi marker marker page + by @jerome_etienne +
      +
      + Tracking : + - set + artoolkit / +
      +
      + + + + + +
      + + diff --git a/demo/ar/three.js/examples/multi-markers/threex-armultimarkercontrols.js b/demo/ar/three.js/examples/multi-markers/threex-armultimarkercontrols.js new file mode 120000 index 0000000..aaf4604 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/threex-armultimarkercontrols.js @@ -0,0 +1 @@ +../../src/markers-area/threex-armultimarkercontrols.js \ No newline at end of file diff --git a/demo/ar/three.js/examples/multi-markers/threex-armultimarkerlearning.js b/demo/ar/three.js/examples/multi-markers/threex-armultimarkerlearning.js new file mode 120000 index 0000000..602d4ca --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/threex-armultimarkerlearning.js @@ -0,0 +1 @@ +../../src/markers-area/threex-armultimarkerlearning.js \ No newline at end of file diff --git a/demo/ar/three.js/examples/multi-markers/threex-armultimarkerutils.js b/demo/ar/three.js/examples/multi-markers/threex-armultimarkerutils.js new file mode 120000 index 0000000..786685e --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/threex-armultimarkerutils.js @@ -0,0 +1 @@ +../../src/markers-area/threex-armultimarkerutils.js \ No newline at end of file diff --git a/demo/ar/three.js/examples/multi-markers/tmp/POST.md b/demo/ar/three.js/examples/multi-markers/tmp/POST.md new file mode 100644 index 0000000..7e2de89 --- /dev/null +++ b/demo/ar/three.js/examples/multi-markers/tmp/POST.md @@ -0,0 +1,30 @@ +# Area Learning with AR.js +## More stable more robust AR with multi-markers + + +# intro - what is multimarkers +- before we had only one marker at a time e.g. give examples +- this is nice but we can go furthers. +- with multi-markers, we have multiple markers acting as one +larger marker. They have several keys advantages which allow +to have more stable, larger AR with a more robust detection. +Additionaly we designed a user experience with a nice workflow +to learn new areas of markers. + +# Advantages of multimarkers +Recently added multimarkers. It provides very nice features in AR +- *More Stable* : +- *More Robust* : + +So it ends with much larger augmented reality +(here video of large glass donut). + +# Nice workflow for the user +- short descript of the steps +- a video showing the steps - with clear step 1/2/3 as captions + +The workflow is splitted into 3 steps : + +1. Learn the new area with multiple markers +2. Once learned, generate a file describing the area +3. Adding augmented reality on top of the area diff --git a/demo/ar/three.js/examples/nft-2.html b/demo/ar/three.js/examples/nft-2.html new file mode 100644 index 0000000..18ab02f --- /dev/null +++ b/demo/ar/three.js/examples/nft-2.html @@ -0,0 +1,229 @@ + + + + + + + + + + +
      +
      +
      + + diff --git a/demo/ar/three.js/examples/nft.html b/demo/ar/three.js/examples/nft.html new file mode 100644 index 0000000..bca2395 --- /dev/null +++ b/demo/ar/three.js/examples/nft.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + +
      +
      +
      + + diff --git a/demo/ar/three.js/examples/profile.html b/demo/ar/three.js/examples/profile.html new file mode 100644 index 0000000..4e48a69 --- /dev/null +++ b/demo/ar/three.js/examples/profile.html @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + +
      + AR.js - developement playground +
      + Contact me any time at @nicolocarp +
      +
      + +
      + diff --git a/demo/ar/three.js/examples/resources/Flamingo.glb b/demo/ar/three.js/examples/resources/Flamingo.glb new file mode 100644 index 0000000..662e68e Binary files /dev/null and b/demo/ar/three.js/examples/resources/Flamingo.glb differ diff --git a/demo/ar/three.js/examples/resources/pinball/pinball.fset b/demo/ar/three.js/examples/resources/pinball/pinball.fset new file mode 100644 index 0000000..586f7bf Binary files /dev/null and b/demo/ar/three.js/examples/resources/pinball/pinball.fset differ diff --git a/demo/ar/three.js/examples/resources/pinball/pinball.fset3 b/demo/ar/three.js/examples/resources/pinball/pinball.fset3 new file mode 100644 index 0000000..0291b4a Binary files /dev/null and b/demo/ar/three.js/examples/resources/pinball/pinball.fset3 differ diff --git a/demo/ar/three.js/examples/resources/pinball/pinball.iset b/demo/ar/three.js/examples/resources/pinball/pinball.iset new file mode 100644 index 0000000..5d22898 Binary files /dev/null and b/demo/ar/three.js/examples/resources/pinball/pinball.iset differ diff --git a/demo/ar/three.js/examples/test-runner.html b/demo/ar/three.js/examples/test-runner.html new file mode 100644 index 0000000..59c4685 --- /dev/null +++ b/demo/ar/three.js/examples/test-runner.html @@ -0,0 +1,216 @@ + + +AR.js Test Runner + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + AR.js - Session API demo with multi + tracking and hit testing + - by @nicolocarp +
      + Markers page +
      + Tracking Backend: + artoolkit + / + area artoolkit + / + best +
      + + diff --git a/demo/ar/three.js/examples/vendor/.DS_Store b/demo/ar/three.js/examples/vendor/.DS_Store new file mode 100644 index 0000000..9609880 Binary files /dev/null and b/demo/ar/three.js/examples/vendor/.DS_Store differ diff --git a/demo/ar/three.js/examples/vendor/NoSleep.min.js b/demo/ar/three.js/examples/vendor/NoSleep.min.js new file mode 100644 index 0000000..654e1d0 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/NoSleep.min.js @@ -0,0 +1,2 @@ +// NoSleep.min.js v0.5.0 - git.io/vfn01 - Rich Tibbett - MIT license +!function(A){function e(A,e,o){var t=document.createElement("source");t.src=o,t.type="video/"+e,A.appendChild(t)}var o={Android:/Android/gi.test(navigator.userAgent),iOS:/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent)},t={WebM:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",MP4:"data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=="},i=function(){return o.iOS?this.noSleepTimer=null:o.Android&&(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("loop",""),e(this.noSleepVideo,"webm",t.WebM),e(this.noSleepVideo,"mp4",t.MP4)),this};i.prototype.enable=function(A){o.iOS?(this.disable(),this.noSleepTimer=window.setInterval(function(){window.location.href='/',window.setTimeout(window.stop,0)},A||15e3)):o.Android&&this.noSleepVideo.play()},i.prototype.disable=function(){o.iOS?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):o.Android&&this.noSleepVideo.pause()},A.NoSleep=i}(this); diff --git a/demo/ar/three.js/examples/vendor/dat.gui.min.js b/demo/ar/three.js/examples/vendor/dat.gui.min.js new file mode 100644 index 0000000..8f07c7b --- /dev/null +++ b/demo/ar/three.js/examples/vendor/dat.gui.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=o(i);e.exports=r["default"]},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(2),r=o(i),a=n(6),l=o(a),s=n(3),u=o(s),d=n(7),c=o(d),f=n(8),_=o(f),p=n(10),h=o(p),m=n(11),b=o(m),g=n(12),v=o(g),y=n(13),w=o(y),x=n(14),E=o(x),C=n(15),A=o(C),S=n(16),k=o(S),O=n(9),T=o(O),R=n(17),L=o(R);t["default"]={color:{Color:r["default"],math:l["default"],interpret:u["default"]},controllers:{Controller:c["default"],BooleanController:_["default"],OptionController:h["default"],StringController:b["default"],NumberController:v["default"],NumberControllerBox:w["default"],NumberControllerSlider:E["default"],FunctionController:A["default"],ColorController:k["default"]},dom:{dom:T["default"]},gui:{GUI:L["default"]},GUI:L["default"]}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(h.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(h.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(h.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(h.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}t.__esModule=!0;var l=n(3),s=o(l),u=n(6),d=o(u),c=n(4),f=o(c),_=n(5),p=o(_),h=function(){function e(){if(i(this,e),this.__state=s["default"].apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return e.prototype.toString=function(){return(0,f["default"])(this)},e.prototype.toHexString=function(){return(0,f["default"])(this,!0)},e.prototype.toOriginal=function(){return this.__state.conversion.write(this)},e}();h.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=d["default"].component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");p["default"].extend(e.__state,d["default"].hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},h.recalculateHSV=function(e){var t=d["default"].rgb_to_hsv(e.r,e.g,e.b);p["default"].extend(e.__state,{s:t.s,v:t.v}),p["default"].isNaN(t.h)?p["default"].isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},h.COMPONENTS=["r","g","b","h","s","v","hex","a"],r(h.prototype,"r",2),r(h.prototype,"g",1),r(h.prototype,"b",0),a(h.prototype,"h"),a(h.prototype,"s"),a(h.prototype,"v"),Object.defineProperty(h.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(h.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=d["default"].rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),t["default"]=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(4),r=o(i),a=n(5),l=o(a),s=[{litmus:l["default"].isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:r["default"]},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:r["default"]},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:r["default"]},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:r["default"]}}},{litmus:l["default"].isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:l["default"].isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:l["default"].isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b)&&l["default"].isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v)&&l["default"].isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],u=void 0,d=void 0,c=function(){d=!1;var e=arguments.length>1?l["default"].toArray(arguments):arguments[0];return l["default"].each(s,function(t){if(t.litmus(e))return l["default"].each(t.conversions,function(t,n){if(u=t.read(e),d===!1&&u!==!1)return d=u,u.conversionName=n,u.conversion=t,l["default"].BREAK}),l["default"].BREAK}),d};t["default"]=c},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),a=e.a,l=Math.round(e.h),s=e.s.toFixed(1),u=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var d=e.hex.toString(16);d.length<6;)d="0"+d;return"#"+d}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+a+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+a+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+a+"}":"HSV_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+"}":"HSVA_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+",a:"+a+"}":"unknown format"}},function(e,t){"use strict";t.__esModule=!0;var n=Array.prototype.forEach,o=Array.prototype.slice,i={BREAK:{},extend:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=o.call(arguments);return function(){for(var t=o.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(n&&e.forEach&&e.forEach===n)e.forEach(t,o);else if(e.length===e.length+0){var i=void 0,r=void 0;for(i=0,r=e.length;i>8*t&255},hex_with_component:function(e,t,o){return o<<(n=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}t.__esModule=!0;var s=n(7),u=o(s),d=n(5),c=o(d),f=function(e){function t(n,o,a){i(this,t);var s=r(this,e.call(this,n,o)),u=a||{};return s.__min=u.min,s.__max=u.max,s.__step=u.step,c["default"].isUndefined(s.__step)?0===s.initialValue?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=l(s.__impliedStep),s}return a(t,e),t.prototype.setValue=function(t){var n=t;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),e.prototype.setValue.call(this,n)},t.prototype.min=function(e){return this.__min=e,this},t.prototype.max=function(e){return this.__max=e,this},t.prototype.step=function(e){return this.__step=e,this.__impliedStep=e,this.__precision=l(e),this},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=n(5),_=o(f),p=function(e){function t(n,o,a){function l(){var e=parseFloat(m.__input.value);_["default"].isNaN(e)||m.setValue(e)}function s(){m.__onFinishChange&&m.__onFinishChange.call(m,m.getValue())}function u(){s()}function d(e){var t=b-e.clientY;m.setValue(m.getValue()+t*m.__impliedStep),b=e.clientY}function f(){c["default"].unbind(window,"mousemove",d),c["default"].unbind(window,"mouseup",f),s()}function p(e){c["default"].bind(window,"mousemove",d),c["default"].bind(window,"mouseup",f),b=e.clientY}i(this,t);var h=r(this,e.call(this,n,o,a));h.__truncationSuspended=!1;var m=h,b=void 0;return h.__input=document.createElement("input"),h.__input.setAttribute("type","text"),c["default"].bind(h.__input,"change",l),c["default"].bind(h.__input,"blur",u),c["default"].bind(h.__input,"mousedown",p),c["default"].bind(h.__input,"keydown",function(e){13===e.keyCode&&(m.__truncationSuspended=!0,this.blur(),m.__truncationSuspended=!1,s())}),h.updateDisplay(),h.domElement.appendChild(h.__input),h}return a(t,e),t.prototype.updateDisplay=function(){return this.__input.value=this.__truncationSuspended?this.getValue():l(this.getValue(),this.__precision),e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=p},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o,i){return o+(i-o)*((e-t)/(n-t))}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=function(e){function t(n,o,a,s,u){function d(e){document.activeElement.blur(),c["default"].bind(window,"mousemove",f),c["default"].bind(window,"mouseup",_),f(e)}function f(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(l(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function _(){c["default"].unbind(window,"mousemove",f),c["default"].unbind(window,"mouseup",_),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}i(this,t);var p=r(this,e.call(this,n,o,{min:a,max:s,step:u})),h=p;return p.__background=document.createElement("div"),p.__foreground=document.createElement("div"),c["default"].bind(p.__background,"mousedown",d),c["default"].addClass(p.__background,"slider"),c["default"].addClass(p.__foreground,"slider-fg"),p.updateDisplay(),p.__background.appendChild(p.__foreground),p.domElement.appendChild(p.__background),p}return a(t,e),t.prototype.updateDisplay=function(){var t=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*t+"%",e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=n(7),s=o(l),u=n(9),d=o(u),c=function(e){function t(n,o,a){i(this,t);var l=r(this,e.call(this,n,o)),s=l;return l.__button=document.createElement("div"),l.__button.innerHTML=void 0===a?"Fire":a,d["default"].bind(l.__button,"click",function(e){return e.preventDefault(),s.fire(),!1}),d["default"].addClass(l.__button,"button"),l.domElement.appendChild(l.__button),l}return a(t,e),t.prototype.fire=function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())},t}(s["default"]);t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o){e.style.background="",g["default"].each(y,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function s(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}t.__esModule=!0;var u=n(7),d=o(u),c=n(9),f=o(c),_=n(2),p=o(_),h=n(3),m=o(h),b=n(5),g=o(b),v=function(e){function t(n,o){function a(e){h(e),f["default"].bind(window,"mousemove",h),f["default"].bind(window,"mouseup",u)}function u(){f["default"].unbind(window,"mousemove",h),f["default"].unbind(window,"mouseup",u),_()}function d(){var e=(0,m["default"])(this.value);e!==!1?(y.__color.__state=e,y.setValue(y.__color.toOriginal())):this.value=y.__color.toString()}function c(){f["default"].unbind(window,"mousemove",b),f["default"].unbind(window,"mouseup",c),_()}function _(){y.__onFinishChange&&y.__onFinishChange.call(y,y.__color.toOriginal())}function h(e){e.preventDefault();var t=y.__saturation_field.getBoundingClientRect(),n=(e.clientX-t.left)/(t.right-t.left),o=1-(e.clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),n>1?n=1:n<0&&(n=0),y.__color.v=o,y.__color.s=n,y.setValue(y.__color.toOriginal()),!1}function b(e){e.preventDefault();var t=y.__hue_field.getBoundingClientRect(),n=1-(e.clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),y.__color.h=360*n,y.setValue(y.__color.toOriginal()),!1}i(this,t);var v=r(this,e.call(this,n,o));v.__color=new p["default"](v.getValue()),v.__temp=new p["default"](0);var y=v;v.domElement=document.createElement("div"),f["default"].makeSelectable(v.domElement,!1),v.__selector=document.createElement("div"),v.__selector.className="selector",v.__saturation_field=document.createElement("div"),v.__saturation_field.className="saturation-field",v.__field_knob=document.createElement("div"),v.__field_knob.className="field-knob",v.__field_knob_border="2px solid ",v.__hue_knob=document.createElement("div"),v.__hue_knob.className="hue-knob",v.__hue_field=document.createElement("div"),v.__hue_field.className="hue-field",v.__input=document.createElement("input"),v.__input.type="text",v.__input_textShadow="0 1px 1px ",f["default"].bind(v.__input,"keydown",function(e){13===e.keyCode&&d.call(this)}),f["default"].bind(v.__input,"blur",d),f["default"].bind(v.__selector,"mousedown",function(){f["default"].addClass(this,"drag").bind(window,"mouseup",function(){f["default"].removeClass(y.__selector,"drag")})});var w=document.createElement("div");return g["default"].extend(v.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g["default"].extend(v.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:v.__field_knob_border+(v.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g["default"].extend(v.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g["default"].extend(v.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g["default"].extend(w.style,{width:"100%",height:"100%",background:"none"}),l(w,"top","rgba(0,0,0,0)","#000"),g["default"].extend(v.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),s(v.__hue_field),g["default"].extend(v.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:v.__input_textShadow+"rgba(0,0,0,0.7)"}),f["default"].bind(v.__saturation_field,"mousedown",a),f["default"].bind(v.__field_knob,"mousedown",a),f["default"].bind(v.__hue_field,"mousedown",function(e){b(e),f["default"].bind(window,"mousemove",b),f["default"].bind(window,"mouseup",c)}),v.__saturation_field.appendChild(w),v.__selector.appendChild(v.__field_knob),v.__selector.appendChild(v.__saturation_field),v.__selector.appendChild(v.__hue_field),v.__hue_field.appendChild(v.__hue_knob),v.domElement.appendChild(v.__input),v.domElement.appendChild(v.__selector),v.updateDisplay(),v}return a(t,e),t.prototype.updateDisplay=function(){var e=(0,m["default"])(this.getValue());if(e!==!1){var t=!1;g["default"].each(p["default"].COMPONENTS,function(n){if(!g["default"].isUndefined(e[n])&&!g["default"].isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&g["default"].extend(this.__color.__state,e)}g["default"].extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;g["default"].extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),g["default"].extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})},t}(d["default"]),y=["-moz-","-o-","-webkit-","-ms-",""];t["default"]=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function r(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];t?n.innerHTML=n.value+"*":n.innerHTML=n.value}function a(e,t,n){if(n.__li=t,n.__gui=e,U["default"].extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:o,factoryArgs:[U["default"].toArray(arguments)]})}if(U["default"].isArray(t)||U["default"].isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e, +n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof M["default"])!function(){var e=new B["default"](n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});U["default"].each(["updateDisplay","onChange","onFinishChange","step"],function(t){var o=n[t],i=e[t];n[t]=e[t]=function(){var t=Array.prototype.slice.call(arguments);return i.apply(e,t),o.apply(n,t)}}),z["default"].addClass(t,"has-slider"),n.domElement.insertBefore(e.domElement,n.domElement.firstElementChild)}();else if(n instanceof B["default"]){var o=function(t){if(U["default"].isNumber(n.__min)&&U["default"].isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=s(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=U["default"].compose(o,n.min),n.max=U["default"].compose(o,n.max)}else n instanceof O["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__checkbox,"click")}),z["default"].bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof R["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__button,"click")}),z["default"].bind(t,"mouseover",function(){z["default"].addClass(n.__button,"hover")}),z["default"].bind(t,"mouseout",function(){z["default"].removeClass(n.__button,"hover")})):n instanceof j["default"]&&(z["default"].addClass(t,"color"),n.updateDisplay=U["default"].compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=U["default"].compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&r(e.getRoot(),!0),t},n.setValue)}function l(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(o!==-1){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,a=void 0;if(r[e.preset])a=r[e.preset];else{if(!r[Q])return;a=r[Q]}if(a[o]&&void 0!==a[o][t.property]){var l=a[o][t.property];t.initialValue=l,t.setValue(l)}}}}function s(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new j["default"](t,n);else{var s=[t,n].concat(o.factoryArgs);r=C["default"].apply(e,s)}o.before instanceof S["default"]&&(o.before=o.before.__li),l(e,r),z["default"].addClass(r.domElement,"c");var u=document.createElement("span");z["default"].addClass(u,"property-name"),u.innerHTML=r.property;var d=document.createElement("div");d.appendChild(u),d.appendChild(r.domElement);var c=i(e,d,o.before);return z["default"].addClass(c,oe.CLASS_CONTROLLER_ROW),r instanceof j["default"]?z["default"].addClass(c,"color"):z["default"].addClass(c,g(r.getValue())),a(e,c,r),e.__controllers.push(r),r}function u(e,t){return document.location.href+"."+t}function d(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function c(e,t){t.style.display=e.useLocalStorage?"block":"none"}function f(e){var t=e.__save_row=document.createElement("li");z["default"].addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),z["default"].addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",z["default"].addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",z["default"].addClass(o,"button"),z["default"].addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",z["default"].addClass(i,"button"),z["default"].addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",z["default"].addClass(r,"button"),z["default"].addClass(r,"revert");var a=e.__preset_select=document.createElement("select");e.load&&e.load.remembered?U["default"].each(e.load.remembered,function(t,n){d(e,n,n===e.preset)}):d(e,Q,!1),z["default"].bind(a,"change",function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=h(this)),e.folders={},U["default"].each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=h(this),r(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[Q]=h(this,!0)),this.load.remembered[e]=h(this),this.preset=e,d(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){U["default"].each(this.__controllers,function(t){this.getRoot().load.remembered?l(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),U["default"].each(this.__folders,function(e){e.revert(e)}),e||r(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&b(this.__listening)},updateDisplay:function(){U["default"].each(this.__controllers,function(e){e.updateDisplay()}),U["default"].each(this.__folders,function(e){e.updateDisplay()})}}),e.exports=oe},function(e,t){"use strict";e.exports={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(r){}}}},function(e,t){e.exports="
      Here's the new load parameter for your GUI's constructor:
      Automatically save values to localStorage on exit.
      The values saved to localStorage will override those passed to dat.GUI's constructor. This makes it easier to work incrementally, but localStorage is fragile, and your friends may not see the same values you do.
      "},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(10),r=o(i),a=n(13),l=o(a),s=n(14),u=o(s),d=n(11),c=o(d),f=n(15),_=o(f),p=n(8),h=o(p),m=n(5),b=o(m),g=function(e,t){var n=e[t];return b["default"].isArray(arguments[2])||b["default"].isObject(arguments[2])?new r["default"](e,t,arguments[2]):b["default"].isNumber(n)?b["default"].isNumber(arguments[2])&&b["default"].isNumber(arguments[3])?b["default"].isNumber(arguments[4])?new u["default"](e,t,arguments[2],arguments[3],arguments[4]):new u["default"](e,t,arguments[2],arguments[3]):b["default"].isNumber(arguments[4])?new l["default"](e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new l["default"](e,t,{min:arguments[2],max:arguments[3]}):b["default"].isString(n)?new c["default"](e,t):b["default"].isFunction(n)?new _["default"](e,t,""):b["default"].isBoolean(n)?new h["default"](e,t):null};t["default"]=g},function(e,t){"use strict";function n(e){setTimeout(e,1e3/60)}t.__esModule=!0,t["default"]=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.__esModule=!0;var r=n(9),a=o(r),l=n(5),s=o(l),u=function(){function e(){i(this,e),this.backgroundElement=document.createElement("div"),s["default"].extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),a["default"].makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s["default"].extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;a["default"].bind(this.backgroundElement,"click",function(){t.hide()})}return e.prototype.show=function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s["default"].defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})},e.prototype.hide=function t(){var e=this,t=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",a["default"].unbind(e.domElement,"webkitTransitionEnd",n),a["default"].unbind(e.domElement,"transitionend",n),a["default"].unbind(e.domElement,"oTransitionEnd",n)};a["default"].bind(this.domElement,"webkitTransitionEnd",t),a["default"].bind(this.domElement,"transitionend",t),a["default"].bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"},e.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-a["default"].getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-a["default"].getHeight(this.domElement)/2+"px"},e}();t["default"]=u},function(e,t,n){t=e.exports=n(24)(),t.push([e.id,".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1!important}.dg.main .close-button.drag,.dg.main:hover .close-button{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-x:hidden}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;overflow:visible;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid transparent}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.boolean,.dg .cr.boolean *,.dg .cr.function,.dg .cr.function *,.dg .cr.function .property-name{cursor:pointer}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco,monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px Lucida Grande,sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid hsla(0,0%,100%,.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2fa1d6}.dg .cr.number input[type=text]{color:#2fa1d6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.boolean:hover,.dg .cr.function:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2fa1d6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|t}function g(t){return+t!=t&&(t=0),o.alloc(+t)}function v(t,e){if(o.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(t).length;default:if(r)return V(t).length;e=(""+e).toLowerCase(),r=!0}}function y(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return L(this,e,n);case"utf8":case"utf-8":return P(this,e,n);case"ascii":return O(this,e,n);case"latin1":case"binary":return T(this,e,n);case"base64":return E(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function b(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=o.from(e,r)),o.isBuffer(e))return 0===e.length?-1:w(t,e,n,r,i);if("number"==typeof e)return e&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):w(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function w(t,e,n,r,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,n/=2}var c;if(i){var l=-1;for(c=n;cs&&(n=s-u),c=n;c>=0;c--){for(var f=!0,h=0;hi&&(r=i):r=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+s<=n){var u,c,l,f;switch(s){case 1:o<128&&(a=o);break;case 2:u=t[i+1],128==(192&u)&&(f=(31&o)<<6|63&u)>127&&(a=f);break;case 3:u=t[i+1],c=t[i+2],128==(192&u)&&128==(192&c)&&(f=(15&o)<<12|(63&u)<<6|63&c)>2047&&(f<55296||f>57343)&&(a=f);break;case 4:u=t[i+1],c=t[i+2],l=t[i+3],128==(192&u)&&128==(192&c)&&128==(192&l)&&(f=(15&o)<<18|(63&u)<<12|(63&c)<<6|63&l)>65535&&f<1114112&&(a=f)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),i+=s}return I(r)}function I(t){var e=t.length;if(e<=$)return String.fromCharCode.apply(String,t);for(var n="",r=0;rr)&&(n=r);for(var i="",o=e;on)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,n,r,i,a){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function z(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i>>8*(r?i:1-i)}function F(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i>>8*(r?i:3-i)&255}function D(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(t,e,n,r,i){return i||D(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(t,e,n,r,23,4),n+4}function U(t,e,n,r,i){return i||D(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(t,e,n,r,52,8),n+8}function W(t){if(t=j(t).replace(tt,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function j(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function G(t){return t<16?"0"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],a=0;a55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function q(t){for(var e=[],n=0;n>8,i=n%256,o.push(i),o.push(r);return o}function Z(t){return X.toByteArray(W(t))}function Y(t,e,n,r){for(var i=0;i=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function K(t){return t!==t}var X=n(3),J=n(4),Q=n(5);e.Buffer=o,e.SlowBuffer=g,e.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,e,n){return a(null,t,e,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,e,n){return u(null,t,e,n)},o.allocUnsafe=function(t){return c(null,t)},o.allocUnsafeSlow=function(t){return c(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,e){if(!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},o.prototype.compare=function(t,e,n,r,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,i>>>=0,this===t)return 0;for(var a=i-r,s=n-e,u=Math.min(a,s),c=this.slice(r,i),l=t.slice(e,n),f=0;fi)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return x(this,t,e,n);case"utf8":case"utf-8":return S(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return _(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)r+=this[t+--e]*i;return r},o.prototype.readUInt8=function(t,e){return e||R(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||R(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||R(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=this[t],i=1,o=0;++o=i&&(r-=Math.pow(2,8*e)),r},o.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return e||R(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},o.prototype.readInt16LE=function(t,e){e||R(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(t,e){e||R(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(t,e){return e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||R(t,4,this.length),J.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||R(t,4,this.length),J.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||R(t,8,this.length),J.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||R(t,8,this.length),J.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){M(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+n},o.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):z(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):z(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):F(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);M(this,t,e,n,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+n},o.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);M(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):z(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):z(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):F(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,n){return N(this,t,e,!0,n)},o.prototype.writeFloatBE=function(t,e,n){return N(this,t,e,!1,n)},o.prototype.writeDoubleLE=function(t,e,n){return U(this,t,e,!0,n)},o.prototype.writeDoubleBE=function(t,e,n){return U(this,t,e,!1,n)},o.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e=0;--i)t[i+e]=this[i+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=e;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,a,s,u=t.length;a=n(t),s=new l(3*u/4-a),i=a>0?u-4:u;var f=0;for(e=0,r=0;e>16&255,s[f++]=o>>8&255,s[f++]=255&o;return 2===a?(o=c[t.charCodeAt(e)]<<2|c[t.charCodeAt(e+1)]>>4,s[f++]=255&o):1===a&&(o=c[t.charCodeAt(e)]<<10|c[t.charCodeAt(e+1)]<<4|c[t.charCodeAt(e+2)]>>2,s[f++]=o>>8&255,s[f++]=255&o),s}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,i=[],a=e;ac?c:s+16383));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var u=[],c=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h>1,l=-7,f=n?i-1:0,h=n?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=s;l>0;o=256*o+t[e+f],f+=h,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=r;l>0;a=256*a+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),o-=c}return(p?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+f>=1?h/u:h*Math.pow(2,1-f),e*u>=2&&(a++,u/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(e*u-1)*Math.pow(2,i),a+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;t[n+p]=255&s,p+=d,s/=256,i-=8);for(a=a<0;t[n+p]=255&a,p+=d,a/=256,c-=8);t[n+p-d]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";function r(t){this.fontDescriptors=t}function i(t,e){if(e.info.Producer="pdfmake",e.info.Creator="pdfmake",t.info){var n=t.info;e.info.Title=n.title?n.title:null,e.info.Author=n.author?n.author:null,e.info.Subject=n.subject?n.subject:null,e.info.Keywords=n.keywords?n.keywords:null,e.info.CreationDate=n.creationDate?n.creationDate:null}}function o(t,e){function n(t){return"function"==typeof t.item.getHeight?t.item.getHeight():t.item._height?t.item._height:0}var r=s(e||40),i=r.top+r.bottom;return t.forEach(function(t){t.items.forEach(function(t){i+=n(t)})}),i}function a(t,e){t&&"auto"===t.height&&(t.height=1/0);var n=c(t||"A4");return function(t){return("string"==typeof t||t instanceof String)&&("portrait"===(t=t.toLowerCase())&&n.width>n.height||"landscape"===t&&n.widthn.height?"landscape":"portrait",n}function s(t){if(!t)return null;if("number"==typeof t||t instanceof Number)t={left:t,right:t,top:t,bottom:t};else if(Array.isArray(t))if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function u(t){t.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t&&4||0},paddingRight:function(t,e){return te.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function f(t,e,n,r){n._pdfMakePages=t,n.addPage();var i=r&&v.sumBy(t,function(t){return t.items.length}),o=0;r=r||function(){};for(var a=0;a0&&(l(t[a],n),n.addPage(n.options));for(var s=t[a],u=0,c=s.items.length;u1){var a=t.points[0],s=t.points[t.points.length-1];(t.closePath||a.x===s.x&&a.y===s.y)&&e.closePath()}}t.color&&t.lineColor?e.fillAndStroke(t.color,t.lineColor):t.color?e.fill(t.color):e.stroke(t.lineColor||"black")}function g(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height}),t.link&&r.link(t.x,t.y,t._width,t._height,t.link)}var v=n(7),y=n(9),m=n(10),b=n(29),w=n(296),x=n(297),S=n(298);v.noConflict(),r.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=a(t.pageSize,t.pageOrientation);this.pdfKitDoc=new b({size:[n.width,n.height],autoFirstPage:!1,compress:t.compress||!0}),i(t,this.pdfKitDoc),this.fontProvider=new y(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var r=new m(n,s(t.pageMargins||40),new x(this.pdfKitDoc,t.images));u(r),e.tableLayouts&&r.registerTableLayouts(e.tableLayouts);var c=r.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore),l=t.maxPagesNumber||-1;if("number"==typeof l&&l>-1&&(c=c.slice(0,l)),n.height===1/0){var h=o(c,t.pageMargins);this.pdfKitDoc.options.size=[n.width,h]}if(f(c,this.fontProvider,this.pdfKitDoc,e.progressCallback),e.autoPrint){var p=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=p,p.end()}return this.pdfKitDoc},t.exports=r,r.prototype.fs=n(53)},function(t,e,n){var r;(function(t,i){(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function u(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function d(t,e,n){ +for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function N(t,e){for(var n=t.length;n--&&_(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function W(t){return"\\"+Sn[t]}function j(t,e){return null==t?it:t[e]}function G(t){return pn.test(t)}function V(t){return dn.test(t)}function q(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function H(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function Z(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n>>1,Nt=[["ary",kt],["bind",vt],["bindKey",yt],["curry",bt],["curryRight",wt],["flip",Ct],["partial",xt],["partialRight",St],["rearg",_t]],Ut="[object Arguments]",Wt="[object Array]",jt="[object AsyncFunction]",Gt="[object Boolean]",Vt="[object Date]",qt="[object DOMException]",Ht="[object Error]",Zt="[object Function]",Yt="[object GeneratorFunction]",Kt="[object Map]",Xt="[object Number]",Jt="[object Null]",Qt="[object Object]",$t="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",le="[object Float64Array]",fe="[object Int8Array]",he="[object Int16Array]",pe="[object Int32Array]",de="[object Uint8Array]",ge="[object Uint8ClampedArray]",ve="[object Uint16Array]",ye="[object Uint32Array]",me=/\b__p \+= '';/g,be=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,Se=/[&<>"']/g,ke=RegExp(xe.source),_e=RegExp(Se.source),Ce=/<%=([\s\S]+?)%>/g,Ae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ee=/^\w*$/,Pe=/^\./,Ie=/[\\^$.*+?()[\]{}|]/g,Oe=RegExp(Ie.source),Te=/^\s+|\s+$/g,Le=/^\s+/,Be=/\s+$/,Re=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,ze=/,? & /,Fe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,De=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ne=/\w*$/,Ue=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,je=/^\[object .+?Constructor\]$/,Ge=/^0o[0-7]+$/i,Ve=/^(?:0|[1-9]\d*)$/,qe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,He=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Ye="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ke="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Xe="["+Ye+"]",Je="[a-z\\xdf-\\xf6\\xf8-\\xff]",Qe="[^\\ud800-\\udfff"+Ke+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",$e="\\ud83c[\\udffb-\\udfff]",tn="(?:\\ud83c[\\udde6-\\uddff]){2}",en="[\\ud800-\\udbff][\\udc00-\\udfff]",nn="[A-Z\\xc0-\\xd6\\xd8-\\xde]",rn="(?:"+Xe+"|"+$e+")?",on="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",tn,en].join("|")+")[\\ufe0e\\ufe0f]?"+rn+")*",an="[\\ufe0e\\ufe0f]?"+rn+on,sn="(?:"+["[\\u2700-\\u27bf]",tn,en].join("|")+")"+an,un="(?:"+["[^\\ud800-\\udfff]"+Xe+"?",Xe,tn,en,"[\\ud800-\\udfff]"].join("|")+")",cn=RegExp("['’]","g"),ln=RegExp(Xe,"g"),fn=RegExp($e+"(?="+$e+")|"+un+an,"g"),hn=RegExp([nn+"?"+Je+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+["["+Ke+"]",nn,"$"].join("|")+")","(?:"+nn+"|"+Qe+")+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+["["+Ke+"]",nn+"(?:"+Je+"|"+Qe+")","$"].join("|")+")",nn+"?(?:"+Je+"|"+Qe+")+(?:['’](?:d|ll|m|re|s|t|ve))?",nn+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",sn].join("|"),"g"),pn=RegExp("[\\u200d\\ud800-\\udfff"+Ye+"\\ufe0e\\ufe0f]"),dn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,gn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],vn=-1,yn={};yn[ce]=yn[le]=yn[fe]=yn[he]=yn[pe]=yn[de]=yn[ge]=yn[ve]=yn[ye]=!0,yn[Ut]=yn[Wt]=yn[se]=yn[Gt]=yn[ue]=yn[Vt]=yn[Ht]=yn[Zt]=yn[Kt]=yn[Xt]=yn[Qt]=yn[te]=yn[ee]=yn[ne]=yn[oe]=!1;var mn={};mn[Ut]=mn[Wt]=mn[se]=mn[ue]=mn[Gt]=mn[Vt]=mn[ce]=mn[le]=mn[fe]=mn[he]=mn[pe]=mn[Kt]=mn[Xt]=mn[Qt]=mn[te]=mn[ee]=mn[ne]=mn[re]=mn[de]=mn[ge]=mn[ve]=mn[ye]=!0,mn[Ht]=mn[Zt]=mn[oe]=!1;var bn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},wn={"&":"&","<":"<",">":">",'"':""","'":"'"},xn={"&":"&","<":"<",">":">",""":'"',"'":"'"},Sn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},kn=parseFloat,_n=parseInt,Cn="object"==typeof t&&t&&t.Object===Object&&t,An="object"==typeof self&&self&&self.Object===Object&&self,En=Cn||An||Function("return this")(),Pn="object"==typeof e&&e&&!e.nodeType&&e,In=Pn&&"object"==typeof i&&i&&!i.nodeType&&i,On=In&&In.exports===Pn,Tn=On&&Cn.process,Ln=function(){try{return Tn&&Tn.binding&&Tn.binding("util")}catch(t){}}(),Bn=Ln&&Ln.isArrayBuffer,Rn=Ln&&Ln.isDate,Mn=Ln&&Ln.isMap,zn=Ln&&Ln.isRegExp,Fn=Ln&&Ln.isSet,Dn=Ln&&Ln.isTypedArray,Nn=P("length"),Un=I(bn),Wn=I(wn),jn=I(xn),Gn=function t(e){function n(t){if(eu(t)&&!ph(t)&&!(t instanceof w)){if(t instanceof i)return t;if(hl.call(t,"__wrapped__"))return Qo(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function w(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=zt,this.__views__=[]}function I(){var t=new w(this.__wrapped__);return t.__actions__=Bi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Bi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Bi(this.__views__),t}function J(){if(this.__filtered__){var t=new w(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=ph(t),r=e<0,i=n?t.length:0,o=ko(0,i,this.__views__),a=o.start,s=o.end,u=s-a,c=r?s:a-1,l=this.__iteratees__,f=l.length,h=0,p=jl(u,this.__takeCount__);if(!n||!r&&i==u&&p==u)return di(t,this.__actions__);var d=[];t:for(;u--&&h-1}function rn(t,e){var n=this.__data__,r=Hn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function on(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function $n(t,e,n,r,i,o){var a,s=e&ft,u=e&ht,l=e&pt;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!tu(t))return t;var f=ph(t);if(f){if(a=Ao(t),!s)return Bi(t,a)}else{var h=kf(t),p=h==Zt||h==Yt;if(gh(t))return xi(t,s);if(h==Qt||h==Ut||p&&!i){if(a=u||p?{}:Eo(t),!s)return u?zi(t,Kn(a,t)):Mi(t,Yn(a,t))}else{if(!mn[h])return i?t:{};a=Po(t,h,$n,s)}}o||(o=new wn);var d=o.get(t);if(d)return d;o.set(t,a);var g=l?u?go:po:u?Fu:zu,v=f?it:g(t);return c(v||t,function(r,i){v&&(i=r,r=t[i]),qn(a,i,$n(r,e,n,i,t,o))}),a}function tr(t){var e=zu(t);return function(n){return er(n,t,e)}}function er(t,e,n){var r=n.length;if(null==t)return!r;for(t=rl(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function nr(t,e,n){if("function"!=typeof t)throw new al(st);return Af(function(){t.apply(it,n)},e)}function rr(t,e,n,r){var i=-1,o=p,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=g(e,M(n))),r?(o=d,a=!1):e.length>=ot&&(o=F,a=!1,e=new pn(e));t:for(;++ii?0:i+n),r=r===it||r>i?i:mu(r),r<0&&(r+=i),r=n>r?0:bu(r);n0&&n(s)?e>1?ur(s,e-1,n,r,i):v(i,s):r||(i[i.length]=s)}return i}function cr(t,e){return t&&pf(t,e,zu)}function lr(t,e){return t&&df(t,e,zu)}function fr(t,e){return h(e,function(e){return Js(t[e])})}function hr(t,e){e=bi(e,t);for(var n=0,r=e.length;null!=t&&ne}function vr(t,e){return null!=t&&hl.call(t,e)}function yr(t,e){return null!=t&&e in rl(t)}function mr(t,e,n){return t>=jl(e,n)&&t=120&&l.length>=120)?new pn(a&&l):it}l=t[0];var f=-1,h=s[0];t:for(;++f-1;)s!==t&&Al.call(s,u,1),Al.call(t,u,1);return t}function Yr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;To(i)?Al.call(t,i,1):fi(t,i)}}return t}function Kr(t,e){return t+Ml(ql()*(e-t+1))}function Xr(t,e,n,r){for(var i=-1,o=Wl(Rl((e-t)/(n||1)),0),a=Qc(o);o--;)a[r?o:++i]=t,t+=n;return a}function Jr(t,e){var n="";if(!t||e<1||e>Bt)return n;do{e%2&&(n+=t),(e=Ml(e/2))&&(t+=t)}while(e);return n}function Qr(t,e){return Ef(Go(t,e,Ac),t+"")}function $r(t){return Tn(Ku(t))}function ti(t,e){var n=Ku(t);return Yo(n,Qn(e,0,n.length))}function ei(t,e,n,r){if(!tu(t))return t;e=bi(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++ii?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Qc(i);++r>>1,a=t[o];null!==a&&!hu(a)&&(n?a<=e:a=ot){var c=e?null:bf(t);if(c)return K(c);a=!1,i=F,u=new pn}else u=e?[]:s;t:for(;++r=r?t:ri(t,e,n)}function xi(t,e){if(e)return t.slice();var n=t.length,r=Sl?Sl(n):new t.constructor(n);return t.copy(r),r}function Si(t){var e=new t.constructor(t.byteLength);return new xl(e).set(new xl(t)),e}function ki(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function _i(t,e,n){return y(e?n(H(t),ft):H(t),o,new t.constructor)}function Ci(t){var e=new t.constructor(t.source,Ne.exec(t));return e.lastIndex=t.lastIndex,e}function Ai(t,e,n){return y(e?n(K(t),ft):K(t),a,new t.constructor)}function Ei(t){return uf?rl(uf.call(t)):{}}function Pi(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ii(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=hu(t),a=e!==it,s=null===e,u=e===e,c=hu(e);if(!s&&!c&&!o&&t>e||o&&a&&u&&!s&&!c||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Ti(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,c=Wl(o-a,0),l=Qc(u+c),f=!r;++s1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Lo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=rl(e);++r-1?i[o?e[a]:a]:it}}function Zi(t){return ho(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new al(st);if(o&&!s&&"wrapper"==vo(a))var s=new i([],!0)}for(r=s?r:n;++r1&&m.reverse(),f&&us))return!1;var c=o.get(t);if(c&&o.get(e))return c==e;var l=-1,f=!0,h=n>?new pn:it;for(o.set(t,e),o.set(e,t);++l1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Re,"{\n/* [wrapped with "+e+"] */\n")}function Oo(t){return ph(t)||hh(t)||!!(El&&t&&t[El])}function To(t,e){return!!(e=null==e?Bt:e)&&("number"==typeof t||Ve.test(t))&&t>-1&&t%1==0&&t0){if(++e>=Pt)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Yo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function Qa(){return this}function $a(t){for(var e,n=this;n instanceof r;){var i=Qo(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function ts(){var t=this.__wrapped__;if(t instanceof w){var e=t;return this.__actions__.length&&(e=new w(this)),e=e.reverse(),e.__actions__.push({func:Ya,args:[_a],thisArg:it}),new i(e,this.__chain__)}return this.thru(_a)}function es(){return di(this.__wrapped__,this.__actions__)}function ns(t,e,n){var r=ph(t)?f:ir;return n&&Lo(t,e,n)&&(e=it),r(t,mo(e,3))}function rs(t,e){return(ph(t)?h:sr)(t,mo(e,3))}function is(t,e){return ur(ls(t,e),1)}function os(t,e){return ur(ls(t,e),Lt)}function as(t,e,n){return n=n===it?1:mu(n),ur(ls(t,e),n)}function ss(t,e){return(ph(t)?c:ff)(t,mo(e,3))}function us(t,e){return(ph(t)?l:hf)(t,mo(e,3))}function cs(t,e,n,r){t=js(t)?t:Ku(t),n=n&&!r?mu(n):0;var i=t.length;return n<0&&(n=Wl(i+n,0)),fu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&_(t,e,n)>-1}function ls(t,e){return(ph(t)?g:Fr)(t,mo(e,3))}function fs(t,e,n,r){return null==t?[]:(ph(e)||(e=null==e?[]:[e]),n=r?it:n,ph(n)||(n=null==n?[]:[n]),Gr(t,e,n))}function hs(t,e,n){var r=ph(t)?y:O,i=arguments.length<3;return r(t,mo(e,4),n,i,ff)}function ps(t,e,n){var r=ph(t)?m:O,i=arguments.length<3;return r(t,mo(e,4),n,i,hf)}function ds(t,e){return(ph(t)?h:sr)(t,Ps(mo(e,3)))}function gs(t){return(ph(t)?Tn:$r)(t)}function vs(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:mu(e),(ph(t)?Ln:ti)(t,e)}function ys(t){return(ph(t)?Nn:ni)(t)}function ms(t){if(null==t)return 0;if(js(t))return fu(t)?$(t):t.length;var e=kf(t);return e==Kt||e==ee?t.size:Rr(t).length}function bs(t,e,n){var r=ph(t)?b:ii;return n&&Lo(t,e,n)&&(e=it),r(t,mo(e,3))}function ws(t,e){if("function"!=typeof e)throw new al(st);return t=mu(t),function(){if(--t<1)return e.apply(this,arguments)}}function xs(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,oo(t,kt,it,it,it,it,e)}function Ss(t,e){var n;if("function"!=typeof e)throw new al(st);return t=mu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function ks(t,e,n){e=n?it:e;var r=oo(t,bt,it,it,it,it,it,e);return r.placeholder=ks.placeholder,r}function _s(t,e,n){e=n?it:e;var r=oo(t,wt,it,it,it,it,it,e);return r.placeholder=_s.placeholder,r}function Cs(t,e,n){function r(e){var n=h,r=p;return h=p=it,m=e,g=t.apply(r,n)}function i(t){return m=t,v=Af(s,e),b?r(t):g}function o(t){var n=t-y,r=t-m,i=e-n;return w?jl(i,d-r):i}function a(t){var n=t-y,r=t-m;return y===it||n>=e||n<0||w&&r>=d}function s(){var t=eh();if(a(t))return u(t);v=Af(s,o(t))}function u(t){return v=it,x&&h?r(t):(h=p=it,g)}function c(){v!==it&&mf(v),m=0,h=y=p=v=it}function l(){return v===it?g:u(eh())}function f(){var t=eh(),n=a(t);if(h=arguments,p=this,y=t,n){if(v===it)return i(y);if(w)return v=Af(s,e),r(y)}return v===it&&(v=Af(s,e)),g}var h,p,d,g,v,y,m=0,b=!1,w=!1,x=!0;if("function"!=typeof t)throw new al(st);return e=wu(e)||0,tu(n)&&(b=!!n.leading,w="maxWait"in n,d=w?Wl(wu(n.maxWait)||0,e):d,x="trailing"in n?!!n.trailing:x),f.cancel=c,f.flush=l,f}function As(t){return oo(t,Ct)}function Es(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new al(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Es.Cache||on),n}function Ps(t){if("function"!=typeof t)throw new al(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Is(t){return Ss(2,t)}function Os(t,e){if("function"!=typeof t)throw new al(st);return e=e===it?e:mu(e),Qr(t,e)}function Ts(t,e){if("function"!=typeof t)throw new al(st);return e=null==e?0:Wl(mu(e),0),Qr(function(n){var r=n[e],i=wi(n,0,e);return r&&v(i,r),s(t,this,i)})}function Ls(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new al(st);return tu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Cs(t,e,{leading:r,maxWait:e,trailing:i})}function Bs(t){return xs(t,1)}function Rs(t,e){return sh(mi(e),t)}function Ms(){if(!arguments.length)return[];var t=arguments[0];return ph(t)?t:[t]}function zs(t){return $n(t,pt)}function Fs(t,e){return e="function"==typeof e?e:it,$n(t,pt,e)}function Ds(t){return $n(t,ft|pt)}function Ns(t,e){return e="function"==typeof e?e:it,$n(t,ft|pt,e)}function Us(t,e){return null==e||er(t,e,zu(e))}function Ws(t,e){return t===e||t!==t&&e!==e}function js(t){return null!=t&&$s(t.length)&&!Js(t)}function Gs(t){return eu(t)&&js(t)}function Vs(t){return t===!0||t===!1||eu(t)&&dr(t)==Gt}function qs(t){return eu(t)&&1===t.nodeType&&!cu(t)}function Hs(t){if(null==t)return!0;if(js(t)&&(ph(t)||"string"==typeof t||"function"==typeof t.splice||gh(t)||wh(t)||hh(t)))return!t.length;var e=kf(t);if(e==Kt||e==ee)return!t.size;if(Fo(t))return!Rr(t).length;for(var n in t)if(hl.call(t,n))return!1;return!0}function Zs(t,e){return Cr(t,e)}function Ys(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Cr(t,e,it,n):!!r}function Ks(t){if(!eu(t))return!1;var e=dr(t);return e==Ht||e==qt||"string"==typeof t.message&&"string"==typeof t.name&&!cu(t)}function Xs(t){return"number"==typeof t&&Dl(t)}function Js(t){if(!tu(t))return!1;var e=dr(t);return e==Zt||e==Yt||e==jt||e==$t}function Qs(t){return"number"==typeof t&&t==mu(t)}function $s(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Bt}function tu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function eu(t){return null!=t&&"object"==typeof t}function nu(t,e){return t===e||Pr(t,e,wo(e))}function ru(t,e,n){return n="function"==typeof n?n:it,Pr(t,e,wo(e),n)}function iu(t){return uu(t)&&t!=+t}function ou(t){if(_f(t))throw new tl(at);return Ir(t)}function au(t){return null===t}function su(t){return null==t}function uu(t){return"number"==typeof t||eu(t)&&dr(t)==Xt}function cu(t){if(!eu(t)||dr(t)!=Qt)return!1;var e=kl(t);if(null===e)return!0;var n=hl.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&fl.call(n)==vl}function lu(t){return Qs(t)&&t>=-Bt&&t<=Bt}function fu(t){return"string"==typeof t||!ph(t)&&eu(t)&&dr(t)==ne}function hu(t){return"symbol"==typeof t||eu(t)&&dr(t)==re}function pu(t){return t===it}function du(t){return eu(t)&&kf(t)==oe}function gu(t){return eu(t)&&dr(t)==ae}function vu(t){if(!t)return[];if(js(t))return fu(t)?tt(t):Bi(t);if(Pl&&t[Pl])return q(t[Pl]());var e=kf(t);return(e==Kt?H:e==ee?K:Ku)(t)}function yu(t){if(!t)return 0===t?t:0;if((t=wu(t))===Lt||t===-Lt){return(t<0?-1:1)*Rt}return t===t?t:0}function mu(t){var e=yu(t),n=e%1;return e===e?n?e-n:e:0}function bu(t){return t?Qn(mu(t),0,zt):0}function wu(t){if("number"==typeof t)return t;if(hu(t))return Mt;if(tu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=tu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Te,"");var n=We.test(t);return n||Ge.test(t)?_n(t.slice(2),n?2:8):Ue.test(t)?Mt:+t}function xu(t){return Ri(t,Fu(t))}function Su(t){return t?Qn(mu(t),-Bt,Bt):0===t?t:0}function ku(t){return null==t?"":ci(t)}function _u(t,e){var n=lf(t);return null==e?n:Yn(n,e)}function Cu(t,e){return S(t,mo(e,3),cr)}function Au(t,e){return S(t,mo(e,3),lr)}function Eu(t,e){return null==t?t:pf(t,mo(e,3),Fu)}function Pu(t,e){return null==t?t:df(t,mo(e,3),Fu)}function Iu(t,e){return t&&cr(t,mo(e,3))}function Ou(t,e){return t&&lr(t,mo(e,3))}function Tu(t){return null==t?[]:fr(t,zu(t))}function Lu(t){return null==t?[]:fr(t,Fu(t))}function Bu(t,e,n){var r=null==t?it:hr(t,e);return r===it?n:r}function Ru(t,e){return null!=t&&Co(t,e,vr)}function Mu(t,e){return null!=t&&Co(t,e,yr)}function zu(t){return js(t)?In(t):Rr(t)}function Fu(t){return js(t)?In(t,!0):Mr(t)}function Du(t,e){var n={};return e=mo(e,3),cr(t,function(t,r,i){Xn(n,e(t,r,i),t)}),n}function Nu(t,e){var n={};return e=mo(e,3),cr(t,function(t,r,i){Xn(n,r,e(t,r,i))}),n}function Uu(t,e){return Wu(t,Ps(mo(e)))}function Wu(t,e){if(null==t)return{};var n=g(go(t),function(t){return[t]});return e=mo(e),qr(t,n,function(t,n){return e(t,n[0])})}function ju(t,e,n){e=bi(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=ql();return jl(t+i*(e-t+kn("1e-"+((i+"").length-1))),e)}return Kr(t,e)}function tc(t){return Hh(ku(t).toLowerCase())}function ec(t){return(t=ku(t))&&t.replace(qe,Un).replace(ln,"")}function nc(t,e,n){t=ku(t),e=ci(e);var r=t.length;n=n===it?r:Qn(mu(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function rc(t){return t=ku(t),t&&_e.test(t)?t.replace(Se,Wn):t}function ic(t){return t=ku(t),t&&Oe.test(t)?t.replace(Ie,"\\$&"):t}function oc(t,e,n){t=ku(t),e=mu(e);var r=e?$(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Qi(Ml(i),n)+t+Qi(Rl(i),n)}function ac(t,e,n){t=ku(t),e=mu(e);var r=e?$(t):0;return e&&r>>0)?(t=ku(t),t&&("string"==typeof e||null!=e&&!mh(e))&&!(e=ci(e))&&G(t)?wi(tt(t),0,n):t.split(e,n)):[]}function hc(t,e,n){return t=ku(t),n=null==n?0:Qn(mu(n),0,t.length),e=ci(e),t.slice(n,n+e.length)==e}function pc(t,e,r){var i=n.templateSettings;r&&Lo(t,e,r)&&(e=it),t=ku(t),e=Ch({},e,i,ao);var o,a,s=Ch({},e.imports,i.imports,ao),u=zu(s),c=z(s,u),l=0,f=e.interpolate||He,h="__p += '",p=il((e.escape||He).source+"|"+f.source+"|"+(f===Ce?De:He).source+"|"+(e.evaluate||He).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++vn+"]")+"\n";t.replace(p,function(e,n,r,i,s,u){return r||(r=i),h+=t.slice(l,u).replace(Ze,W),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),s&&(a=!0,h+="';\n"+s+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=u+e.length,e}),h+="';\n";var g=e.variable;g||(h="with (obj) {\n"+h+"\n}\n"),h=(a?h.replace(me,""):h).replace(be,"$1").replace(we,"$1;"),h="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var v=Zh(function(){return el(u,d+"return "+h).apply(it,c)});if(v.source=h,Ks(v))throw v;return v}function dc(t){return ku(t).toLowerCase()}function gc(t){return ku(t).toUpperCase()}function vc(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Te,"");if(!t||!(e=ci(e)))return t;var r=tt(t),i=tt(e);return wi(r,D(r,i),N(r,i)+1).join("")}function yc(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Be,"");if(!t||!(e=ci(e)))return t;var r=tt(t);return wi(r,0,N(r,tt(e))+1).join("")}function mc(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Le,"");if(!t||!(e=ci(e)))return t;var r=tt(t);return wi(r,D(r,tt(e))).join("")}function bc(t,e){var n=At,r=Et;if(tu(e)){var i="separator"in e?e.separator:i;n="length"in e?mu(e.length):n,r="omission"in e?ci(e.omission):r}t=ku(t);var o=t.length;if(G(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-$(r);if(s<1)return r;var u=a?wi(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),mh(i)){if(t.slice(s).search(i)){var c,l=u;for(i.global||(i=il(i.source,ku(Ne.exec(i))+"g")),i.lastIndex=0;c=i.exec(l);)var f=c.index;u=u.slice(0,f===it?s:f)}}else if(t.indexOf(ci(i),s)!=s){var h=u.lastIndexOf(i);h>-1&&(u=u.slice(0,h))}return u+r}function wc(t){return t=ku(t),t&&ke.test(t)?t.replace(xe,jn):t}function xc(t,e,n){return t=ku(t),e=n?it:e,e===it?V(t)?rt(t):x(t):t.match(e)||[]}function Sc(t){var e=null==t?0:t.length,n=mo();return t=e?g(t,function(t){if("function"!=typeof t[1])throw new al(st);return[n(t[0]),t[1]]}):[],Qr(function(n){for(var r=-1;++rBt)return[];var n=zt,r=jl(t,zt);e=mo(e),t-=zt;for(var i=B(r,e);++n/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:Ce,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=lf(r.prototype),i.prototype.constructor=i,w.prototype=lf(r.prototype),w.prototype.constructor=w,nt.prototype.clear=Fe,nt.prototype.delete=Ye,nt.prototype.get=Ke,nt.prototype.has=Xe,nt.prototype.set=Je,Qe.prototype.clear=$e,Qe.prototype.delete=tn,Qe.prototype.get=en,Qe.prototype.has=nn,Qe.prototype.set=rn,on.prototype.clear=an,on.prototype.delete=sn,on.prototype.get=un,on.prototype.has=fn,on.prototype.set=hn,pn.prototype.add=pn.prototype.push=dn,pn.prototype.has=bn,wn.prototype.clear=xn,wn.prototype.delete=Sn,wn.prototype.get=Cn,wn.prototype.has=An,wn.prototype.set=Pn;var ff=Ni(cr),hf=Ni(lr,!0),pf=Ui(),df=Ui(!0),gf=$l?function(t,e){return $l.set(t,e),t}:Ac,vf=Ol?function(t,e){return Ol(t,"toString",{configurable:!0,enumerable:!1,value:_c(e),writable:!0})}:Ac,yf=Qr,mf=Tl||function(t){return En.clearTimeout(t)},bf=Xl&&1/K(new Xl([,-0]))[1]==Lt?function(t){return new Xl(t)}:Lc,wf=$l?function(t){return $l.get(t)}:Lc,xf=zl?function(t){return null==t?[]:(t=rl(t),h(zl(t),function(e){return Cl.call(t,e)}))}:zc,Sf=zl?function(t){for(var e=[];t;)v(e,xf(t)),t=kl(t);return e}:zc,kf=dr;(Zl&&kf(new Zl(new ArrayBuffer(1)))!=ue||Yl&&kf(new Yl)!=Kt||Kl&&"[object Promise]"!=kf(Kl.resolve())||Xl&&kf(new Xl)!=ee||Jl&&kf(new Jl)!=oe)&&(kf=function(t){var e=dr(t),n=e==Qt?t.constructor:it,r=n?Xo(n):"";if(r)switch(r){case ef:return ue;case nf:return Kt;case rf:return"[object Promise]";case of:return ee;case af:return oe}return e});var _f=ll?Js:Fc,Cf=Zo(gf),Af=Bl||function(t,e){return En.setTimeout(t,e)},Ef=Zo(vf),Pf=function(t){var e=Es(t,function(t){return n.size===ct&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Pe.test(t)&&e.push(""),t.replace(/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,function(t,n,r,i){e.push(r?i.replace(/\\(\\)?/g,"$1"):n||t)}),e}),If=Qr(function(t,e){return Gs(t)?rr(t,ur(e,1,Gs,!0)):[]}),Of=Qr(function(t,e){var n=ya(e);return Gs(n)&&(n=it),Gs(t)?rr(t,ur(e,1,Gs,!0),mo(n,2)):[]}),Tf=Qr(function(t,e){var n=ya(e);return Gs(n)&&(n=it),Gs(t)?rr(t,ur(e,1,Gs,!0),it,n):[]}),Lf=Qr(function(t){var e=g(t,yi);return e.length&&e[0]===t[0]?br(e):[]}),Bf=Qr(function(t){var e=ya(t),n=g(t,yi);return e===ya(n)?e=it:n.pop(),n.length&&n[0]===t[0]?br(n,mo(e,2)):[]}),Rf=Qr(function(t){var e=ya(t),n=g(t,yi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?br(n,it,e):[]}),Mf=Qr(wa),zf=ho(function(t,e){var n=null==t?0:t.length,r=Jn(t,e);return Yr(t,g(e,function(t){return To(t,n)?+t:t}).sort(Ii)),r}),Ff=Qr(function(t){return li(ur(t,1,Gs,!0))}),Df=Qr(function(t){var e=ya(t);return Gs(e)&&(e=it),li(ur(t,1,Gs,!0),mo(e,2))}),Nf=Qr(function(t){var e=ya(t);return e="function"==typeof e?e:it,li(ur(t,1,Gs,!0),it,e)}),Uf=Qr(function(t,e){return Gs(t)?rr(t,e):[]}),Wf=Qr(function(t){return gi(h(t,Gs))}),jf=Qr(function(t){var e=ya(t);return Gs(e)&&(e=it),gi(h(t,Gs),mo(e,2))}),Gf=Qr(function(t){var e=ya(t);return e="function"==typeof e?e:it,gi(h(t,Gs),it,e)}),Vf=Qr(ja),qf=Qr(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Ga(t,n)}),Hf=ho(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return Jn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof w&&To(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Ya,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Zf=Fi(function(t,e,n){hl.call(t,n)?++t[n]:Xn(t,n,1)}),Yf=Hi(sa),Kf=Hi(ua),Xf=Fi(function(t,e,n){hl.call(t,n)?t[n].push(e):Xn(t,n,[e])}),Jf=Qr(function(t,e,n){var r=-1,i="function"==typeof e,o=js(t)?Qc(t.length):[];return ff(t,function(t){o[++r]=i?s(e,t,n):xr(t,e,n)}),o}),Qf=Fi(function(t,e,n){Xn(t,n,e)}),$f=Fi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),th=Qr(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Lo(t,e[0],e[1])?e=[]:n>2&&Lo(e[0],e[1],e[2])&&(e=[e[0]]),Gr(t,ur(e,1),[])}),eh=Ll||function(){return En.Date.now()},nh=Qr(function(t,e,n){var r=vt;if(n.length){var i=Y(n,yo(nh));r|=xt}return oo(t,r,e,n,i)}),rh=Qr(function(t,e,n){var r=vt|yt;if(n.length){var i=Y(n,yo(rh));r|=xt}return oo(e,r,t,n,i)}),ih=Qr(function(t,e){return nr(t,1,e)}),oh=Qr(function(t,e,n){return nr(t,wu(e)||0,n)});Es.Cache=on;var ah=yf(function(t,e){e=1==e.length&&ph(e[0])?g(e[0],M(mo())):g(ur(e,1),M(mo()));var n=e.length;return Qr(function(r){for(var i=-1,o=jl(r.length,n);++i=e}),hh=Sr(function(){return arguments}())?Sr:function(t){return eu(t)&&hl.call(t,"callee")&&!Cl.call(t,"callee")},ph=Qc.isArray,dh=Bn?M(Bn):kr,gh=Fl||Fc,vh=Rn?M(Rn):_r,yh=Mn?M(Mn):Er,mh=zn?M(zn):Or,bh=Fn?M(Fn):Tr,wh=Dn?M(Dn):Lr,xh=eo(zr),Sh=eo(function(t,e){return t<=e}),kh=Di(function(t,e){if(Fo(e)||js(e))return void Ri(e,zu(e),t);for(var n in e)hl.call(e,n)&&qn(t,n,e[n])}),_h=Di(function(t,e){Ri(e,Fu(e),t)}),Ch=Di(function(t,e,n,r){Ri(e,Fu(e),t,r)}),Ah=Di(function(t,e,n,r){Ri(e,zu(e),t,r)}),Eh=ho(Jn),Ph=Qr(function(t){return t.push(it,ao),s(Ch,it,t)}),Ih=Qr(function(t){return t.push(it,so),s(Rh,it,t)}),Oh=Ki(function(t,e,n){t[e]=n},_c(Ac)),Th=Ki(function(t,e,n){hl.call(t,e)?t[e].push(n):t[e]=[n]},mo),Lh=Qr(xr),Bh=Di(function(t,e,n){Ur(t,e,n)}),Rh=Di(function(t,e,n,r){Ur(t,e,n,r)}),Mh=ho(function(t,e){var n={};if(null==t)return n;var r=!1;e=g(e,function(e){return e=bi(e,t),r||(r=e.length>1),e}),Ri(t,go(t),n),r&&(n=$n(n,ft|ht|pt,uo));for(var i=e.length;i--;)fi(n,e[i]);return n}),zh=ho(function(t,e){return null==t?{}:Vr(t,e)}),Fh=io(zu),Dh=io(Fu),Nh=Gi(function(t,e,n){return e=e.toLowerCase(),t+(n?tc(e):e)}),Uh=Gi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Wh=Gi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),jh=ji("toLowerCase"),Gh=Gi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Vh=Gi(function(t,e,n){return t+(n?" ":"")+Hh(e)}),qh=Gi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Hh=ji("toUpperCase"),Zh=Qr(function(t,e){try{return s(t,it,e)}catch(t){return Ks(t)?t:new tl(t)}}),Yh=ho(function(t,e){return c(e,function(e){e=Ko(e),Xn(t,e,nh(t[e],t))}),t}),Kh=Zi(),Xh=Zi(!0),Jh=Qr(function(t,e){return function(n){return xr(n,t,e)}}),Qh=Qr(function(t,e){return function(n){return xr(t,n,e)}}),$h=Ji(g),tp=Ji(f),ep=Ji(b),np=to(),rp=to(!0),ip=Xi(function(t,e){return t+e},0),op=ro("ceil"),ap=Xi(function(t,e){return t/e},1),sp=ro("floor"),up=Xi(function(t,e){return t*e},1),cp=ro("round"),lp=Xi(function(t,e){return t-e},0);return n.after=ws,n.ary=xs,n.assign=kh,n.assignIn=_h,n.assignInWith=Ch,n.assignWith=Ah,n.at=Eh,n.before=Ss,n.bind=nh,n.bindAll=Yh,n.bindKey=rh,n.castArray=Ms,n.chain=Ha,n.chunk=$o,n.compact=ta,n.concat=ea,n.cond=Sc,n.conforms=kc,n.constant=_c,n.countBy=Zf,n.create=_u,n.curry=ks,n.curryRight=_s,n.debounce=Cs,n.defaults=Ph,n.defaultsDeep=Ih,n.defer=ih,n.delay=oh,n.difference=If,n.differenceBy=Of,n.differenceWith=Tf,n.drop=na,n.dropRight=ra,n.dropRightWhile=ia,n.dropWhile=oa,n.fill=aa,n.filter=rs,n.flatMap=is,n.flatMapDeep=os,n.flatMapDepth=as,n.flatten=ca,n.flattenDeep=la,n.flattenDepth=fa,n.flip=As,n.flow=Kh,n.flowRight=Xh,n.fromPairs=ha,n.functions=Tu,n.functionsIn=Lu,n.groupBy=Xf,n.initial=ga,n.intersection=Lf,n.intersectionBy=Bf,n.intersectionWith=Rf,n.invert=Oh,n.invertBy=Th,n.invokeMap=Jf,n.iteratee=Ec,n.keyBy=Qf,n.keys=zu,n.keysIn=Fu,n.map=ls,n.mapKeys=Du,n.mapValues=Nu,n.matches=Pc,n.matchesProperty=Ic,n.memoize=Es,n.merge=Bh,n.mergeWith=Rh,n.method=Jh,n.methodOf=Qh,n.mixin=Oc,n.negate=Ps,n.nthArg=Bc,n.omit=Mh,n.omitBy=Uu,n.once=Is,n.orderBy=fs,n.over=$h,n.overArgs=ah,n.overEvery=tp,n.overSome=ep,n.partial=sh,n.partialRight=uh,n.partition=$f,n.pick=zh,n.pickBy=Wu,n.property=Rc,n.propertyOf=Mc,n.pull=Mf,n.pullAll=wa,n.pullAllBy=xa, +n.pullAllWith=Sa,n.pullAt=zf,n.range=np,n.rangeRight=rp,n.rearg=ch,n.reject=ds,n.remove=ka,n.rest=Os,n.reverse=_a,n.sampleSize=vs,n.set=Gu,n.setWith=Vu,n.shuffle=ys,n.slice=Ca,n.sortBy=th,n.sortedUniq=La,n.sortedUniqBy=Ba,n.split=fc,n.spread=Ts,n.tail=Ra,n.take=Ma,n.takeRight=za,n.takeRightWhile=Fa,n.takeWhile=Da,n.tap=Za,n.throttle=Ls,n.thru=Ya,n.toArray=vu,n.toPairs=Fh,n.toPairsIn=Dh,n.toPath=jc,n.toPlainObject=xu,n.transform=qu,n.unary=Bs,n.union=Ff,n.unionBy=Df,n.unionWith=Nf,n.uniq=Na,n.uniqBy=Ua,n.uniqWith=Wa,n.unset=Hu,n.unzip=ja,n.unzipWith=Ga,n.update=Zu,n.updateWith=Yu,n.values=Ku,n.valuesIn=Xu,n.without=Uf,n.words=xc,n.wrap=Rs,n.xor=Wf,n.xorBy=jf,n.xorWith=Gf,n.zip=Vf,n.zipObject=Va,n.zipObjectDeep=qa,n.zipWith=qf,n.entries=Fh,n.entriesIn=Dh,n.extend=_h,n.extendWith=Ch,Oc(n,n),n.add=ip,n.attempt=Zh,n.camelCase=Nh,n.capitalize=tc,n.ceil=op,n.clamp=Ju,n.clone=zs,n.cloneDeep=Ds,n.cloneDeepWith=Ns,n.cloneWith=Fs,n.conformsTo=Us,n.deburr=ec,n.defaultTo=Cc,n.divide=ap,n.endsWith=nc,n.eq=Ws,n.escape=rc,n.escapeRegExp=ic,n.every=ns,n.find=Yf,n.findIndex=sa,n.findKey=Cu,n.findLast=Kf,n.findLastIndex=ua,n.findLastKey=Au,n.floor=sp,n.forEach=ss,n.forEachRight=us,n.forIn=Eu,n.forInRight=Pu,n.forOwn=Iu,n.forOwnRight=Ou,n.get=Bu,n.gt=lh,n.gte=fh,n.has=Ru,n.hasIn=Mu,n.head=pa,n.identity=Ac,n.includes=cs,n.indexOf=da,n.inRange=Qu,n.invoke=Lh,n.isArguments=hh,n.isArray=ph,n.isArrayBuffer=dh,n.isArrayLike=js,n.isArrayLikeObject=Gs,n.isBoolean=Vs,n.isBuffer=gh,n.isDate=vh,n.isElement=qs,n.isEmpty=Hs,n.isEqual=Zs,n.isEqualWith=Ys,n.isError=Ks,n.isFinite=Xs,n.isFunction=Js,n.isInteger=Qs,n.isLength=$s,n.isMap=yh,n.isMatch=nu,n.isMatchWith=ru,n.isNaN=iu,n.isNative=ou,n.isNil=su,n.isNull=au,n.isNumber=uu,n.isObject=tu,n.isObjectLike=eu,n.isPlainObject=cu,n.isRegExp=mh,n.isSafeInteger=lu,n.isSet=bh,n.isString=fu,n.isSymbol=hu,n.isTypedArray=wh,n.isUndefined=pu,n.isWeakMap=du,n.isWeakSet=gu,n.join=va,n.kebabCase=Uh,n.last=ya,n.lastIndexOf=ma,n.lowerCase=Wh,n.lowerFirst=jh,n.lt=xh,n.lte=Sh,n.max=Vc,n.maxBy=qc,n.mean=Hc,n.meanBy=Zc,n.min=Yc,n.minBy=Kc,n.stubArray=zc,n.stubFalse=Fc,n.stubObject=Dc,n.stubString=Nc,n.stubTrue=Uc,n.multiply=up,n.nth=ba,n.noConflict=Tc,n.noop=Lc,n.now=eh,n.pad=oc,n.padEnd=ac,n.padStart=sc,n.parseInt=uc,n.random=$u,n.reduce=hs,n.reduceRight=ps,n.repeat=cc,n.replace=lc,n.result=ju,n.round=cp,n.runInContext=t,n.sample=gs,n.size=ms,n.snakeCase=Gh,n.some=bs,n.sortedIndex=Aa,n.sortedIndexBy=Ea,n.sortedIndexOf=Pa,n.sortedLastIndex=Ia,n.sortedLastIndexBy=Oa,n.sortedLastIndexOf=Ta,n.startCase=Vh,n.startsWith=hc,n.subtract=lp,n.sum=Xc,n.sumBy=Jc,n.template=pc,n.times=Wc,n.toFinite=yu,n.toInteger=mu,n.toLength=bu,n.toLower=dc,n.toNumber=wu,n.toSafeInteger=Su,n.toString=ku,n.toUpper=gc,n.trim=vc,n.trimEnd=yc,n.trimStart=mc,n.truncate=bc,n.unescape=wc,n.uniqueId=Gc,n.upperCase=qh,n.upperFirst=Hh,n.each=ss,n.eachRight=us,n.first=pa,Oc(n,function(){var t={};return cr(n,function(e,r){hl.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",c(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),c(["drop","take"],function(t,e){w.prototype[t]=function(n){n=n===it?1:Wl(mu(n),0);var r=this.__filtered__&&!e?new w(this):this.clone();return r.__filtered__?r.__takeCount__=jl(n,r.__takeCount__):r.__views__.push({size:jl(n,zt),type:t+(r.__dir__<0?"Right":"")}),r},w.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),c(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Ot||3==n;w.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:mo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),c(["head","last"],function(t,e){var n="take"+(e?"Right":"");w.prototype[t]=function(){return this[n](1).value()[0]}}),c(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");w.prototype[t]=function(){return this.__filtered__?new w(this):this[n](1)}}),w.prototype.compact=function(){return this.filter(Ac)},w.prototype.find=function(t){return this.filter(t).head()},w.prototype.findLast=function(t){return this.reverse().find(t)},w.prototype.invokeMap=Qr(function(t,e){return"function"==typeof t?new w(this):this.map(function(n){return xr(n,t,e)})}),w.prototype.reject=function(t){return this.filter(Ps(mo(t)))},w.prototype.slice=function(t,e){t=mu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new w(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=mu(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},w.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},w.prototype.toArray=function(){return this.take(zt)},cr(w.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,c=e instanceof w,l=u[0],f=c||ph(e),h=function(t){var e=a.apply(n,v([t],u));return o&&p?e[0]:e};f&&r&&"function"==typeof l&&1!=l.length&&(c=f=!1);var p=this.__chain__,d=!!this.__actions__.length,g=s&&!p,y=c&&!d;if(!s&&f){e=y?e:new w(this);var m=t.apply(e,u);return m.__actions__.push({func:Ya,args:[h],thisArg:it}),new i(m,p)}return g&&y?t.apply(this,u):(m=this.thru(h),g?o?m.value()[0]:m.value():m)})}),c(["pop","push","shift","sort","splice","unshift"],function(t){var e=sl[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(ph(n)?n:[],t)}return this[r](function(n){return e.apply(ph(n)?n:[],t)})}}),cr(w.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(tf[i]||(tf[i]=[])).push({name:e,func:r})}}),tf[Yi(it,yt).name]=[{name:"wrapper",func:it}],w.prototype.clone=I,w.prototype.reverse=J,w.prototype.value=et,n.prototype.at=Hf,n.prototype.chain=Ka,n.prototype.commit=Xa,n.prototype.next=Ja,n.prototype.plant=$a,n.prototype.reverse=ts,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=es,n.prototype.first=n.prototype.head,Pl&&(n.prototype[Pl]=Qa),n}();En._=Gn,(r=function(){return Gn}.call(e,n,e,i))!==it&&(i.exports=r)}).call(this)}).call(e,function(){return this}(),n(8)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t,e){var n="normal";return t&&e?n="bolditalics":t?n="bold":e&&(n="italics"),n}function i(t,e){this.fonts={},this.pdfKitDoc=e,this.fontCache={};for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}n(7).noConflict(),i.prototype.provideFont=function(t,e,n){var i=r(e,n);if(!this.fonts[t]||!this.fonts[t][i])throw new Error("Font '"+t+"' in style '"+i+"' is not defined in the font section of the document definition.");if(this.fontCache[t]=this.fontCache[t]||{},!this.fontCache[t][i]){var o=this.fonts[t][i];Array.isArray(o)||(o=[o]),this.fontCache[t][i]=this.pdfKitDoc.font.apply(this.pdfKitDoc,o)._font}return this.fontCache[t][i]},t.exports=i},function(t,e,n){"use strict";function r(t,e){a.each(e,function(e){t.push(e)})}function i(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new s,this.imageMeasure=n,this.tableLayouts={}}function o(t){var e=t.x,n=t.y;t.positions=[],a.each(t.canvas,function(t){var e=t.x,n=t.y,r=t.x1,i=t.y1,o=t.x2,a=t.y2;t.resetXY=function(){t.x=e,t.y=n,t.x1=r,t.y1=i,t.x2=o,t.y2=a}}),t.resetXY=function(){t.x=e,t.y=n,a.each(t.canvas,function(t){t.resetXY()})}}var a=n(7),s=n(11),u=n(12),c=n(24),l=n(25),f=n(21),h=n(28),p=n(27),d=n(22).pack,g=n(22).offsetVector,v=n(22).fontStringify,y=n(22).isFunction,m=n(13),b=n(20);i.prototype.registerTableLayouts=function(t){this.tableLayouts=d(this.tableLayouts,t)},i.prototype.layoutDocument=function(t,e,n,r,i,o,s,c,l,f){this.docMeasure=new u(e,n,r,this.imageMeasure,this.tableLayouts,c);for(var h=this.tryLayoutDocument(t,e,n,r,i,o,s,c,l);function(t,e){return!!y(f)&&(t=a.reject(t,function(t){return a.isEmpty(t.positions)}),a.each(t,function(t){var n=a.pick(t,["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"]);n.startPosition=a.first(t.positions),n.pageNumbers=a.chain(t.positions).map("pageNumber").uniq().value(),n.pages=e.length,n.stack=a.isArray(t.stack),t.nodeInfo=n}),a.some(t,function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=a.first(t.nodeInfo.pageNumbers),i=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value(),o=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r+1)}).value(),s=a.chain(n).take(e).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value();if(f(t.nodeInfo,a.map(i,"nodeInfo"),a.map(o,"nodeInfo"),a.map(s,"nodeInfo")))return t.pageBreak="before",!0}}))}(h.linearNodeList,h.pages);)!function(t){a.each(t.linearNodeList,function(t){t.resetXY()})}(h),h=this.tryLayoutDocument(t,e,n,r,i,o,s,c,l);return h.pages},i.prototype.tryLayoutDocument=function(t,e,n,r,i,o,a,s,u,f){this.linearNodeList=[],t=this.docMeasure.measureDocument(t),this.writer=new l(new c(this.pageSize,this.pageMargins),this.tracker);var h=this;return this.writer.context().tracker.startTracking("pageAdded",function(){h.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(o,a),null!=u&&this.addWatermark(u,e,r),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},i.prototype.addBackground=function(t){var e=y(t)?t:function(){return t},n=e(this.writer.context().page+1);if(n){var r=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(r.width,r.height),this.processNode(this.docMeasure.measureDocument(n)),this.writer.commitUnbreakableBlock(0,0)}},i.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return t},e)},i.prototype.addDynamicRepeatable=function(t,e){for(var n=this.writer.context().pages,r=0,i=n.length;r1;)u.push({fontSize:f}),r=s.sizeOfString(e.text,u),r.width>a?(l=f,f=(c+l)/2):r.width0;r--)n.push(t);return n}(t._gap);i&&(n-=(i.length-1)*t._gap),f.buildColumnWidths(e,n);var o=this.processRow(e,e,i);r(t.positions,o.positions)},i.prototype.processRow=function(t,e,n,i,o){function a(t){for(var e,n=0,r=l.length;nt?n[t]:0}function u(t,e){if(t.rowSpan&&t.rowSpan>1){var n=o+t.rowSpan-1;if(n>=i.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return i[n][e]}return null}var c=this,l=[],f=[];return this.tracker.auto("pageChanged",a,function(){e=e||t,c.writer.context().beginColumnGroup();for(var i=0,o=t.length;i1)for(var p=1;p0&&e.hasEnoughSpaceForInline(t._inlines[0]);)e.addInline(t._inlines.shift());return e.lastLineInParagraph=0===t._inlines.length,e},i.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},i.prototype.processCanvas=function(t){var e=t._minHeight;this.writer.context().availableHeight=0&&n.splice(r,1)}},n.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},n.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=n},function(t,e,n){"use strict";function r(t,e,n,r,a,s){this.textTools=new i(t),this.styleStack=new o(e,n),this.imageMeasure=r,this.tableLayouts=a,this.images=s,this.autoImageIndex=1}var i=n(13),o=n(20),a=n(21),s=n(22).fontStringify,u=n(22).pack,c=n(23);r.prototype.measureDocument=function(t){return this.measureNode(t)},r.prototype.measureNode=function(t){function e(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}function n(){function e(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function n(t){return"number"==typeof t||t instanceof Number?t=[t,t,t,t]:Array.isArray(t)&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var i=[void 0,void 0,void 0,void 0];if(t.style){var o=Array.isArray(t.style)?t.style:[t.style],a=function(t){for(var e={},n=t.length-1;n>=0;n--){var i=t[n],o=r.styleStack.styleDictionary[i];for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a])}return e}(o);a&&(i=e(a,i)),a.margin&&(i=n(a.margin))}return i=e(t,i),t.margin&&(i=n(t.margin)),void 0===i[0]&&void 0===i[1]&&void 0===i[2]&&void 0===i[3]?null:i}Array.isArray(t)?t={stack:t}:"string"==typeof t||t instanceof String?t={text:t}:"number"==typeof t||"boolean"==typeof t?t={text:t.toString()}:null===t&&(t={text:""}),0===Object.keys(t).length&&(t={text:""});var r=this;return this.styleStack.auto(t,function(){if(t._margin=n(),t.columns)return e(r.measureColumns(t));if(t.stack)return e(r.measureVerticalContainer(t));if(t.ul)return e(r.measureUnorderedList(t));if(t.ol)return e(r.measureOrderedList(t));if(t.table)return e(r.measureTable(t));if(void 0!==t.text)return e(r.measureLeaf(t));if(t.image)return e(r.measureImage(t));if(t.canvas)return e(r.measureCanvas(t));if(t.qr)return e(r.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,s)})},r.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},r.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width;return t._alignment=this.styleStack.getProperty("alignment"),t},r.prototype.measureLeaf=function(t){var e=this.styleStack.clone();e.push(t);var n=this.textTools.buildInlines(t.text,e);return t._inlines=n.items,t._minWidth=n.minWidth,t._maxWidth=n.maxWidth,t},r.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;n=26?e((t/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[t%26>>0]}return t<1?t.toString():e(t-1)}function o(t){if(t<1||t>4999)return t.toString();var e,n=t,r={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},i="";for(e in r)for(;n>=r[e];)i+=e,n-=r[e];return i}var a;switch(n){case"none":a=null;break;case"upper-alpha":a=i(t).toUpperCase();break;case"lower-alpha":a=i(t);break;case"upper-roman":a=o(t);break;case"lower-roman":a=o(t).toLowerCase();break;case"decimal":default:a=function(t){return t.toString()}(t)}if(null===a)return{};r&&(Array.isArray(r)?(r[0]&&(a=r[0]+a),r[1]&&(a+=r[1]),a+=" "):a+=r+" ");var s={text:a},u=e.getProperty("markerColor");return u&&(s.color=u),{_inlines:this.textTools.buildInlines(s,e).items}},r.prototype.measureUnorderedList=function(t){var e=this.styleStack.clone(),n=t.ul;t.type=t.type||"disc",t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=0,i=n.length;r1?(!function(t,e,n){for(var r=1;r1&&function(t,e,n,r){for(var i=1;i0)for(n=c/a.span,r=0;r0)for(n=l/a.span,r=0;r=this.string.length)return this.lastPos>p,a=1<>g,l=1024>>g,s=f+l,y=s,v=32,o=y+v,n=1<1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>g]<>g)]<>p)],e=this.data[e+(t>>g&u)],e=(e<>>=1,e}function s(t,e,n){if(!e)return n;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>16-e;return t.tag>>>=e,t.bitcount-=e,r+n}function u(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>=1,++i,n+=e.table[i],r-=e.table[i]}while(r>=0);return t.tag=o,t.bitcount-=i,e.trans[n+r]}function c(t,e,n){var r,i,a,c,l,f;for(r=s(t,5,257),i=s(t,5,1),a=s(t,4,4),c=0;c<19;++c)k[c]=0;for(c=0;c8;)t.sourceIndex--,t.bitcount-=8;if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],n=t.source[t.sourceIndex+3],n=256*n+t.source[t.sourceIndex+2],e!==(65535&~n))return d;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,p}function h(t,e){var n,i,o=new r(t,e);do{switch(n=a(o),s(o,2,0)){case 0:i=f(o);break;case 1:i=l(o,g,v);break;case 2:c(o,o.ltree,o.dtree),i=l(o,o.ltree,o.dtree);break;default:i=d}if(i!==p)throw new Error("Data error")}while(!n);return o.destLen0)throw new Error("Invalid string. Length must be a multiple of 4");var l=t.length;u="="===t.charAt(l-2)?2:"="===t.charAt(l-1)?1:0,c=new i(3*t.length/4-u),a=u>0?t.length-4:t.length;var f=0;for(r=0,o=0;r>16),n((65280&s)>>8),n(255&s);return 2===u?(s=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&s)):1===u&&(s=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(s>>8&255),n(255&s)),c}function r(t){function e(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}var n,r,i,o=t.length%3,a="";for(n=0,i=t.length-o;n>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}(r);switch(o){case 1:r=t[t.length-1],a+=e(r>>2),a+=e(r<<4&63),a+="==";break;case 2:r=(t[t.length-2]<<8)+t[t.length-1],a+=e(r>>10),a+=e(r>>4&63),a+=e(r<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),a="/".charCodeAt(0),s="0".charCodeAt(0),u="a".charCodeAt(0),c="A".charCodeAt(0),l="-".charCodeAt(0),f="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=r}(e)},function(t,e){(function(){e.OP=0,e.CL=1,e.CP=2,e.QU=3,e.GL=4,e.NS=5,e.EX=6,e.SY=7,e.IS=8,e.PR=9,e.PO=10,e.NU=11,e.AL=12,e.HL=13,e.ID=14,e.IN=15,e.HY=16,e.BA=17,e.BB=18,e.B2=19,e.ZW=20,e.CM=21,e.WJ=22,e.H2=23,e.H3=24,e.JL=25,e.JV=26,e.JT=27,e.RI=28,e.AI=29,e.BK=30,e.CB=31,e.CJ=32,e.CR=33,e.LF=34,e.NL=35,e.SA=36,e.SG=37,e.SP=38,e.XX=39}).call(this)},function(t,e){(function(){var t,n,r,i,o;e.DI_BRK=r=0,e.IN_BRK=i=1,e.CI_BRK=t=2,e.CP_BRK=n=3,e.PR_BRK=o=4,e.pairTable=[[o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,n,o,o,o,o,o,o,o],[r,o,o,i,i,o,o,o,o,i,i,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,o,o,o,o,i,i,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[o,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,i,r,i,i,r,r,o,t,o,i,i,i,i,i,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,o,o,t,o,r,r,r,r,r,r],[r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,o,r,r,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,i,i,i,i,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,i]]}).call(this)},function(t,e){"use strict";function n(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}n.prototype.clone=function(){var t=new n(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},n.prototype.push=function(t){this.styleOverrides.push(t)},n.prototype.pop=function(t){for(t=t||1;t-- >0;)this.styleOverrides.pop()},n.prototype.autopush=function(t){if("string"==typeof t||t instanceof String)return 0;var e=[];t.style&&(e=Array.isArray(t.style)?t.style:[t.style]);for(var n=0,r=e.length;n0&&this.pop(n),r},n.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if("string"==typeof n||n instanceof String){var r=this.styleDictionary[n];if(r&&null!==r[t]&&void 0!==r[t])return r[t]}else if(void 0!==n[t]&&null!==n[t])return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=n},function(t,e){"use strict";function n(t,e){var n=[],o=0,a=0,s=[],u=0,c=0,l=[],f=e;t.forEach(function(t){r(t)?(n.push(t),o+=t._minWidth,a+=t._maxWidth):i(t)?(s.push(t),u=Math.max(u,t._minWidth),c=Math.max(c,t._maxWidth)):l.push(t)}),l.forEach(function(t){"string"==typeof t.width&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*f/100),t.width=e)n.forEach(function(t){t._calcWidth=t._minWidth}),s.forEach(function(t){t._calcWidth=u});else{if(p0){var v=e/s.length;s.forEach(function(t){t._calcWidth=v})}}}function r(t){return"auto"===t.width}function i(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}function o(t){for(var e={min:0,max:0},n={min:0,max:0},o=0,a=0,s=t.length;a3)throw"invalid ECC level";if(i<0){for(i=1;i<=40&&!(t.length<=L(i,g,o));++i);if(i>40)throw"too large data for the Qr format"}else if(i<1||i>40)throw"invalid Qr version! should be between 1 and 40";if(v!=-1&&(v<0||v>8))throw"invalid mask";return G(t,i,g,o,v)}function r(t,e){var r=[],i=t.background||"#fff",o=t.foreground||"#000",a=n(t,e),s=a.length,u=Math.floor(e.fit?e.fit/s:5),c=s*u;r.push({type:"rect",x:0,y:0,w:c,h:c,lineWidth:0,color:i});for(var l=0;l=128?285:0);for(var b=[[]],y=0;y<30;++y){for(var w=b[y],x=[],S=0;S<=y;++S){var k=S6},P=function(t){return 4*t+17},I=function(t){var e=o[t],n=16*t*t+128*t+64;return E(t)&&(n-=36),e[2].length&&(n-=25*e[2].length*e[2].length-10*e[2].length-55),n},O=function(t,e){var n=I(t)&-8,r=o[t];return n-=8*r[0][e]*r[1][e]},T=function(t,e){switch(e){case a:return t<10?10:t<27?12:14;case s:return t<10?9:t<27?11:13;case u:return t<10?8:16;case 8:return t<10?8:t<27?10:12}},L=function(t,e,n){var r=O(t,n)-4-T(t,e);switch(e){case a:return 3*(r/10|0)+(r%10<4?0:r%10<7?1:2);case s:return 2*(r/11|0)+(r%11<6?0:1);case u:return r/8|0;case 8:return r/13|0}},B=function(t,e){switch(t){case a:return e.match(c)?e:null;case s:return e.match(/^[A-Za-z0-9 $%*+\-.\/:]*$/)?e.toUpperCase():null;case u:if("string"==typeof e){for(var n=[],r=0;r>6,128|63&i):i<65536?n.push(224|i>>12,128|i>>6&63,128|63&i):n.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i)}return n}return e}},R=function(t,e,n,r){var i=[],o=0,c=8,l=n.length,f=function(t,e){if(e>=c){for(i.push(o|t>>(e-=c));e>=8;)i.push(t>>(e-=8)&255);o=0,c=8}e>0&&(o|=(t&(1<=0)for(var s=0;s=0;--o)i>>r+o&1&&(i^=n<>u&1,i[t+s][e+u]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(var a=9;a>d++&1,i[a][n-11+h]=i[n-11+h][a]=1;return{matrix:r,reserved:i}},N=function(t,e,n){for(var r=t.length,i=0,o=-1,a=r-1;a>=0;a-=2){6==a&&--a;for(var s=o<0?r-1:0,u=0;ua-2;--c)e[s][c]||(t[s][c]=n[i>>3]>>(7&~i)&1,++i);s+=o}o=-o}return t},U=function(t,e,n){for(var r=A[n],i=t.length,o=0;o>a&1}return t},j=function(t){for(var e=function(t){for(var e=0,n=0;n=5&&(e+=t[n]-5+3);for(var n=5;n=4*r||t[n+1]>=4*r)&&(e+=40)}return e},n=t.length,r=0,i=0,o=0;o>3);s=z(s,a[1][r],b[a[0][r]]);var u=D(e),c=u.matrix,l=u.reserved;if(N(c,l,s),i<0){U(c,l,0),W(c,0,r,0);var f=0,h=j(c);for(U(c,l,0),i=1;i<8;++i){U(c,l,i),W(c,0,r,i);var p=j(c);h>p&&(h=p,f=i),U(c,l,i)}i=f}return U(c,l,i),W(c,0,r,i),c};t.exports={measure:i}},function(t,e,n){"use strict";function r(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new a,this.addPage(t)}function i(t,e){return void 0===t?e:("string"==typeof t||t instanceof String)&&"landscape"===t.toLowerCase()?"landscape":"portrait"}function o(t,e){var n;return n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e,{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}var a=n(11);r.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{y:this.y,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},r.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},r.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=o(this,t.bottomMost)},r.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},r.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},r.prototype.completeColumnGroup=function(){var t=this.snapshots.pop();this.calculateBottomMost(t),this.endingCell=null,this.x=t.x,this.y=t.bottomMost.y,this.page=t.bottomMost.page,this.availableWidth=t.availableWidth,this.availableHeight=t.bottomMost.availableHeight,this.lastColumnWidth=t.lastColumnWidth},r.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},r.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},r.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},r.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},r.prototype.moveTo=function(t,e){void 0!==t&&null!==t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),void 0!==e&&null!==e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},r.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},r.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var s=function(t,e){return e=i(e,t.pageSize.orientation),e!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};r.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;if(i){var o=this.availableWidth,a=this.getCurrentPage().pageSize.orientation,u=s(this.getCurrentPage(),t);this.addPage(u),a===u.orientation&&(this.availableWidth=o)}else this.page=e,this.initializePage();return{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},r.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},r.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},r.prototype.getCurrentPosition=function(){var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new o(t,e)}function i(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}var o=n(26);r.prototype.addLine=function(t,e,n){return i(this,function(r){return r.writer.addLine(t,e,n)})},r.prototype.addImage=function(t,e){return i(this,function(n){return n.writer.addImage(t,e)})},r.prototype.addQr=function(t,e){return i(this,function(n){return n.writer.addQr(t,e)})},r.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},r.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},r.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},r.prototype.beginUnbreakableBlock=function(t,e){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},r.prototype.commitUnbreakableBlock=function(t,e){if(0==--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var o=0,a=this.repeatables.length;ot.items.length?t.items.push(e):t.items.splice(n,0,e)}function o(t){var e=new a(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var a=n(27),s=n(22).pack,u=n(22).offsetVector,c=n(24);r.prototype.addLine=function(t,e,n){var r=t.getHeight(),o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();return!(o.availableHeight0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var o=(e-n)/(t.inlines.length-1),a=1,s=t.inlines.length;ai.availableHeight)&&(t.items.forEach(function(r){switch(r.type){case"line":var c=o(r.item);c.x=(c.x||0)+(e?t.xOffset||0:i.x),c.y=(c.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"line",item:c});break;case"vector":var l=s(r.item);u(l,e?t.xOffset||0:i.x,n?t.yOffset||0:i.y),a.items.push({type:"vector",item:l});break;case"image":var f=s(r.item);f.x=(f.x||0)+(e?t.xOffset||0:i.x),f.y=(f.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"image",item:f})}}),r||i.moveDown(t.height),!0)},r.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),("number"==typeof t||t instanceof Number)&&(t=new c({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},r.prototype.popContext=function(){this.context=this.contextStack.pop()},r.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=r},function(t,e){"use strict";function n(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}n.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},n.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length||!this.newLineForced&&this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},n.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},n.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},n.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=n},function(t,e,n){"use strict";function r(t){this.tableNode=t}var i=n(21);r.prototype.beginTable=function(t){var e,n,r=this;e=this.tableNode,this.offsets=e._offsets,this.layout=e._layout,n=t.context().availableWidth-this.offsets.total,i.buildColumnWidths(e.table.widths,n),this.tableWidth=e._offsets.total+function(){var t=0;return e.table.widths.forEach(function(e){t+=e._calcWidth}),t}(),this.rowSpanData=function(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var i=0,o=r.tableNode.table.body[0].length;i0&&e(n+u,i,0,o.border[0]),void 0!==o.border[2]&&e(n+u,i+s-1,2,o.border[2]);for(var c=0;c0&&e(n,i+c,1,o.border[1]),void 0!==o.border[3]&&e(n+a-1,i+c,3,o.border[3])}}}(this.tableNode.table.body),this.drawHorizontalLine(0,t)},r.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().moveDown(t)}},r.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},r.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var i=r/2,o=null,a=this.tableNode.table.body,s=0,u=this.rowSpanData.length;s0){var d=a[t-1][s];h=d.border?d.border[3]:this.layout.defaultBorder}l=f||h}!o&&l&&(o={left:c.left,width:0}),l&&(o.width+=c.width||0);var g=(n||0)+i;l&&s!==u-1||o&&o.width&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:g,y2:g,lineWidth:r,lineColor:"function"==typeof this.layout.hLineColor?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},r.prototype.drawVerticalLine=function(t,e,n,r,i){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&i.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:"function"==typeof this.layout.vLineColor?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},r.prototype.endTable=function(t){this.cleanUpRepeatables&&t.popFromRepeatables()},r.prototype.endRow=function(t,e,n){var r,i,o=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var a=e.context().page,s=e.context().y,u=function(){for(var e=[],n=0,r=0,i=o.tableNode.table.body[t].length;r0&&n--}return e.push({x:o.rowSpanData[o.rowSpanData.length-1].left,index:o.rowSpanData.length-1}),e}(),c=[],l=n&&n.length>0,f=this.tableNode.table.body;if(c.push({y0:this.rowTopY,page:l?n[0].prevPage:a}),l)for(i=0,r=n.length;i0&&!this.headerRows,m=y?0:this.topLineWidth,b=c[d].y0,w=c[d].y1;for(v&&(w+=this.rowPaddingBottom),e.context().page!=c[d].page&&(e.context().page=c[d].page,this.reservedAtBottom=0),i=0,r=u.length;i0){var _=f[t][k-1];S=_.border?_.border[2]:this.layout.defaultBorder}if((x||S)&&this.drawVerticalLine(u[i].x,b-m,w+this.bottomLineWidth,u[i].index,e),i1))for(var O=1;O0&&this.rowSpanData[i].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){o.headerRows||o.layout.hLineWhenBroken===!1||o.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock()}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=r},function(t,e,n){(function(e){(function(){var r,i,o,a,s,u,c=function(t,e){function n(){this.constructor=t}for(var r in e)l.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},l={}.hasOwnProperty;u=n(30),s=n(53),i=n(54),a=n(55),o=n(73),r=function(t){function r(t){var e,n,i,o;if(this.options=null!=t?t:{},r.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null==(n=this.options.compress)||n,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info){i=this.options.info;for(e in i)o=i[e],this.info[e]=o}this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),this.options.autoFirstPage!==!1&&this.addPage()}var u;return c(r,t),u=function(t){var e,n,i;i=[];for(n in t)e=t[n],i.push(r.prototype[n]=e);return i},u(n(74)),u(n(76)),u(n(78)),u(n(282)),u(n(289)),u(n(295)),r.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new o(this,t),this._pageBuffer.push(this.page),e=this._root.data.Pages.data,e.Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this},r.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},r.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},r.prototype.flushPages=function(){var t,e,n,r;for(r=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=r.length,t=0,e=r.length;t0&&this._events[t].length>i&&(this._events[t].warned=!0,console.trace),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,a,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],a=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=a;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(r){var i=function(){try{return n(30)}catch(t){}}();e=t.exports=n(35),e.Stream=i||e,e.Readable=e,e.Writable=n(42),e.Duplex=n(41),e.Transform=n(47),e.PassThrough=n(48),!r.browser&&"disable"===r.env.READABLE_STREAM&&i&&(t.exports=i)}).call(e,n(34))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){g&&p&&(g=!1,p.length?d=p.concat(d):v=-1,d.length&&s())}function s(){if(!g){var t=i(a);g=!0;for(var e=d.length;e;){for(p=d,d=[];++v1)for(var n=1;n0)if(e.ended&&!i){var a=new Error("stream.push() after EOF");t.emit("error",a)}else if(e.endEmitted&&i){var u=new Error("stream.unshift() after end event");t.emit("error",u)}else{var c;!e.decoder||i||r||(n=e.decoder.write(n),c=!e.objectMode&&0===n.length),i||(e.reading=!1),c||(e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,i?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&h(t))),d(t,e)}else i||(e.reading=!1);return s(e)}function s(t){return!t.ended&&(t.needReadable||t.length=W?t=W:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function c(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=u(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function l(t,e){var n=null;return R.isBuffer(e)||"string"==typeof e||null===e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function f(t,e){if(!e.ended){if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,h(t)}}function h(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(D("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?O(p,t):p(t))}function p(t){D("emit readable"),t.emit("readable"),w(t)}function d(t,e){e.readingMore||(e.readingMore=!0,O(g,t,e))}function g(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=S(t,e.buffer,e.decoder),n}function S(t,e,n){var r;return to.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++r}return e.length-=r,i}function _(t,e){var n=M.allocUnsafe(t),r=e.head,i=1;for(r.data.copy(n),t-=r.data.length;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,a),0===(t-=a)){a===o.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++i}return e.length-=i,n}function C(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,O(A,e,t))}function A(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function E(t,e){for(var n=0,r=t.length;n=e.highWaterMark||e.ended))return D("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?C(this):h(this),null;if(0===(t=c(t,e))&&e.ended)return 0===e.length&&C(this),null;var r=e.needReadable;D("need readable",r),(0===e.length||e.length-t0?x(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&C(this)),null!==i&&this.emit("data",i),i},o.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},o.prototype.pipe=function(t,n){function i(t){D("onunpipe"),t===h&&a()}function o(){D("onend"),t.end()}function a(){D("cleanup"),t.removeListener("close",c),t.removeListener("finish",l),t.removeListener("drain",y),t.removeListener("error",u),t.removeListener("unpipe",i),h.removeListener("end",o),h.removeListener("end",a),h.removeListener("data",s),m=!0,!p.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function s(e){D("ondata"),b=!1,!1!==t.write(e)||b||((1===p.pipesCount&&p.pipes===t||p.pipesCount>1&&P(p.pipes,t)!==-1)&&!m&&(D("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,b=!0),h.pause())}function u(e){D("onerror",e),f(),t.removeListener("error",u),0===B(t,"error")&&t.emit("error",e)}function c(){t.removeListener("finish",l),f()}function l(){D("onfinish"),t.removeListener("close",c),f()}function f(){D("unpipe"),h.unpipe(t)}var h=this,p=this._readableState;switch(p.pipesCount){case 0:p.pipes=t;break;case 1:p.pipes=[p.pipes,t];break;default:p.pipes.push(t)}p.pipesCount+=1,D("pipe count=%d opts=%j",p.pipesCount,n);var d=(!n||n.end!==!1)&&t!==e.stdout&&t!==e.stderr,g=d?o:a;p.endEmitted?O(g):h.once("end",g),t.on("unpipe",i);var y=v(h);t.on("drain",y);var m=!1,b=!1;return h.on("data",s),r(t,"error",u),t.once("close",c),t.once("finish",l),t.emit("pipe",h),p.flowing||(D("pipe resume"),h.resume()),t},o.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this),this);if(!t){var n=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;ia)throw new RangeError("size is too large");var r=n,o=e;void 0===o&&(r=void 0,o=0);var s=new i(t);if("string"==typeof o)for(var u=new i(o,r),c=u.length,l=-1;++la)throw new RangeError("size is too large");return new i(t)},e.from=function(e,n,r){if("function"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,n,r) +;if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new i(e,n);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var o=n;if(1===arguments.length)return new i(e);void 0===o&&(o=0);var a=r;if(void 0===a&&(a=e.byteLength-o),o>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(a>e.byteLength-o)throw new RangeError("'length' is out of bounds");return new i(e.slice(o,o+a))}if(i.isBuffer(e)){var s=new i(e.length);return e.copy(s,0,0,e.length),s}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new i(e);if("Buffer"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},e.allocUnsafeSlow=function(t){if("function"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(t);if("number"!=typeof t)throw new TypeError("size must be a number");if(t>=a)throw new RangeError("size is too large");return new o(t)}}).call(e,function(){return this}())},function(t,e,n){(function(t){function n(t){return Array.isArray?Array.isArray(t):"[object Array]"===v(t)}function r(t){return"boolean"==typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function u(t){return"symbol"==typeof t}function c(t){return void 0===t}function l(t){return"[object RegExp]"===v(t)}function f(t){return"object"==typeof t&&null!==t}function h(t){return"[object Date]"===v(t)}function p(t){return"[object Error]"===v(t)||t instanceof Error}function d(t){return"function"==typeof t}function g(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function v(t){return Object.prototype.toString.call(t)}e.isArray=n,e.isBoolean=r,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=u,e.isUndefined=c,e.isRegExp=l,e.isObject=f,e.isDate=h,e.isError=p,e.isFunction=d,e.isPrimitive=g,e.isBuffer=t.isBuffer}).call(e,n(2).Buffer)},function(t,e){},function(t,e,n){"use strict";function r(){this.head=null,this.tail=null,this.length=0}var i=(n(2).Buffer,n(37));t.exports=r,r.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},r.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},r.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},r.prototype.clear=function(){this.head=this.tail=null,this.length=0},r.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},r.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),n=this.head,r=0;n;)n.data.copy(e,r),r+=n.data.length,n=n.next;return e}},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);c.call(this,t),l.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",i)}function i(){this.allowHalfOpen||this._writableState.ended||s(o,this)}function o(t){t.end()}var a=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=r;var s=n(36),u=n(38);u.inherits=n(32);var c=n(35),l=n(42);u.inherits(r,c);for(var f=a(l.prototype),h=0;h-1?r:C;s.WritableState=a;var E=n(38);E.inherits=n(32);var P,I={deprecate:n(45)};!function(){try{P=n(30)}catch(t){}finally{P||(P=n(31).EventEmitter)}}();var O=n(2).Buffer,T=n(37);E.inherits(s,P),a.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(a.prototype,"buffer",{get:I.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(t){}}();var L;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(L=Function.prototype[Symbol.hasInstance],Object.defineProperty(s,Symbol.hasInstance,{value:function(t){return!!L.call(this,t)||t&&t._writableState instanceof a}})):L=function(t){return t instanceof this},s.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},s.prototype.write=function(t,e,n){var r=this._writableState,o=!1,a=O.isBuffer(t);return"function"==typeof e&&(n=e,e=null),a?e="buffer":e||(e=r.defaultEncoding),"function"!=typeof n&&(n=i),r.ended?u(this,n):(a||c(this,r,t,n))&&(r.pendingcb++,o=f(this,r,a,t,e,n)),o},s.prototype.cork=function(){this._writableState.corked++},s.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||m(this,t))},s.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},s.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},s.prototype._writev=null,s.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||S(this,r,n)}}).call(e,n(34),n(43).setImmediate)},function(t,e,n){function r(t,e){this._id=t,this._clearFn=e}var i=Function.prototype.apply;e.setTimeout=function(){return new r(i.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new r(i.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(44),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,r=e.charCodeAt(i);if(r>=55296&&r<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},c.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var n=t[t.length-e];if(1==e&&n>>5==6){this.charLength=2;break}if(e<=2&&n>>4==14){this.charLength=3;break}if(e<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=e},c.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;e+=r.slice(0,n).toString(i)}return e}},function(t,e,n){"use strict";function r(t){this.afterTransform=function(e,n){return i(t,e,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function i(t,e,n){var r=t._transformState;r.transforming=!1;var i=r.writecb;if(!i)return t.emit("error",new Error("no writecb in Transform class"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&t.push(n),i(e);var o=t._readableState;o.reading=!1,(o.needReadable||o.length127){l=!0;break}return l&&(g=a(new e("\ufeff"+g,"utf16le")).toString("binary")),"("+g+")"}if(e.isBuffer(s))return"<"+s.toString("hex")+">";if(s instanceof i)return s.toString();if(s instanceof Date)return"(D:"+o(s.getUTCFullYear(),4)+o(s.getUTCMonth()+1,2)+o(s.getUTCDate(),2)+o(s.getUTCHours(),2)+o(s.getUTCMinutes(),2)+o(s.getUTCSeconds(),2)+"Z)";if(Array.isArray(s))return"["+function(){var e,n,r;for(r=[],e=0,n=s.length;e>"),p.join("\n")}return""+s},t}(),t.exports=r,i=n(55)}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){(function(){var r,i,o,a,s=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var r in e)c.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty;a=n(56),o=n(30),i=function(t){function n(t,e,r){this.document=t,this.id=e,this.data=null!=r?r:{},this.finalize=s(this.finalize,this),n.__super__.constructor.call(this,{decodeStrings:!1}),this.gen=0,this.deflate=null,this.compress=this.document.compress&&!this.data.Filter,this.uncompressedLength=0,this.chunks=[]}return u(n,t),n.prototype.initDeflate=function(){return this.data.Filter="FlateDecode",this.deflate=a.createDeflate(),this.deflate.on("data",function(t){return function(e){return t.chunks.push(e),t.data.Length+=e.length}}(this)),this.deflate.on("end",this.finalize)},n.prototype._write=function(t,n,r){var i;return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.uncompressedLength+=t.length,null==(i=this.data).Length&&(i.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(t)):(this.chunks.push(t),this.data.Length+=t.length),r()},n.prototype.end=function(t){return n.__super__.end.apply(this,arguments),this.deflate?this.deflate.end():this.finalize()},n.prototype.finalize=function(){var t,e,n,i;if(this.offset=this.document._offset,this.document._write(this.id+" "+this.gen+" obj"),this.document._write(r.convert(this.data)),this.chunks.length){for(this.document._write("stream"),i=this.chunks,e=0,n=i.length;ee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+n.chunkSize);if(n.windowBits&&(n.windowBitse.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+n.windowBits);if(n.level&&(n.levele.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+n.level);if(n.memLevel&&(n.memLevele.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+n.memLevel);if(n.strategy&&n.strategy!=e.Z_FILTERED&&n.strategy!=e.Z_HUFFMAN_ONLY&&n.strategy!=e.Z_RLE&&n.strategy!=e.Z_FIXED&&n.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+n.strategy);if(n.dictionary&&!t.isBuffer(n.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new g.Zlib(r);var i=this;this._hadError=!1,this._binding.onerror=function(t,n){i._binding=null,i._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],i.emit("error",r)};var o=e.Z_DEFAULT_COMPRESSION;"number"==typeof n.level&&(o=n.level);var a=e.Z_DEFAULT_STRATEGY;"number"==typeof n.strategy&&(a=n.strategy),this._binding.init(n.windowBits||e.Z_DEFAULT_WINDOWBITS,o,n.memLevel||e.Z_DEFAULT_MEMLEVEL,a,n.dictionary),this._buffer=new t(this._chunkSize),this._offset=0,this._closed=!1,this._level=o,this._strategy=a,this.once("end",this.close)}var d=n(51),g=n(57),v=n(69),y=n(72).ok;g.Z_MIN_WINDOWBITS=8,g.Z_MAX_WINDOWBITS=15,g.Z_DEFAULT_WINDOWBITS=15,g.Z_MIN_CHUNK=64,g.Z_MAX_CHUNK=1/0,g.Z_DEFAULT_CHUNK=16384,g.Z_MIN_MEMLEVEL=1,g.Z_MAX_MEMLEVEL=9,g.Z_DEFAULT_MEMLEVEL=8,g.Z_MIN_LEVEL=-1,g.Z_MAX_LEVEL=9,g.Z_DEFAULT_LEVEL=g.Z_DEFAULT_COMPRESSION,Object.keys(g).forEach(function(t){t.match(/^Z/)&&(e[t]=g[t])}),e.codes={Z_OK:g.Z_OK,Z_STREAM_END:g.Z_STREAM_END,Z_NEED_DICT:g.Z_NEED_DICT,Z_ERRNO:g.Z_ERRNO,Z_STREAM_ERROR:g.Z_STREAM_ERROR,Z_DATA_ERROR:g.Z_DATA_ERROR,Z_MEM_ERROR:g.Z_MEM_ERROR,Z_BUF_ERROR:g.Z_BUF_ERROR,Z_VERSION_ERROR:g.Z_VERSION_ERROR},Object.keys(e.codes).forEach(function(t){e.codes[e.codes[t]]=t}),e.Deflate=a,e.Inflate=s,e.Gzip=u,e.Gunzip=c,e.DeflateRaw=l,e.InflateRaw=f,e.Unzip=h,e.createDeflate=function(t){return new a(t)},e.createInflate=function(t){return new s(t)},e.createDeflateRaw=function(t){return new l(t)},e.createInflateRaw=function(t){return new f(t)},e.createGzip=function(t){return new u(t)},e.createGunzip=function(t){return new c(t)},e.createUnzip=function(t){return new h(t)},e.deflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new a(e),t,n)},e.deflateSync=function(t,e){return o(new a(e),t)},e.gzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new u(e),t,n)},e.gzipSync=function(t,e){return o(new u(e),t)},e.deflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new l(e),t,n)},e.deflateRawSync=function(t,e){return o(new l(e),t)},e.unzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new h(e),t,n)},e.unzipSync=function(t,e){return o(new h(e),t)},e.inflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new s(e),t,n)},e.inflateSync=function(t,e){return o(new s(e),t)},e.gunzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new c(e),t,n)},e.gunzipSync=function(t,e){return o(new c(e),t)},e.inflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new f(e),t,n)},e.inflateRawSync=function(t,e){return o(new f(e),t)},v.inherits(p,d),p.prototype.params=function(t,n,i){if(te.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(n!=e.Z_FILTERED&&n!=e.Z_HUFFMAN_ONLY&&n!=e.Z_RLE&&n!=e.Z_FIXED&&n!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+n);if(this._level!==t||this._strategy!==n){var o=this;this.flush(g.Z_SYNC_FLUSH,function(){o._binding.params(t,n),o._hadError||(o._level=t,o._strategy=n,i&&i())})}else r.nextTick(i)},p.prototype.reset=function(){return this._binding.reset()},p.prototype._flush=function(e){this._transform(new t(0),"",e)},p.prototype.flush=function(e,n){var i=this._writableState;if(("function"==typeof e||void 0===e&&!n)&&(n=e,e=g.Z_FULL_FLUSH),i.ended)n&&r.nextTick(n);else if(i.ending)n&&this.once("end",n);else if(i.needDrain){var o=this;this.once("drain",function(){o.flush(n)})}else this._flushFlag=e,this.write(new t(0),"",n)},p.prototype.close=function(t){if(t&&r.nextTick(t),!this._closed){this._closed=!0,this._binding.close();var e=this;r.nextTick(function(){e.emit("close")})}},p.prototype._transform=function(e,n,r){var i,o=this._writableState,a=o.ending||o.ended,s=a&&(!e||o.length===e.length);if(null===!e&&!t.isBuffer(e))return r(new Error("invalid input"));s?i=g.Z_FINISH:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||g.Z_NO_FLUSH));this._processChunk(e,i,r)},p.prototype._processChunk=function(e,n,r){function i(l,p){if(!u._hadError){var d=a-p;if(y(d>=0,"have should not go down"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,c?u.push(g):(f.push(g),h+=g.length)}if((0===p||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=new t(u._chunkSize)),0===p){if(s+=o-l,o=l,!c)return!0;var v=u._binding.write(n,e,s,o,u._buffer,u._offset,u._chunkSize);return v.callback=i,void(v.buffer=e)}if(!c)return!1;r()}}var o=e&&e.length,a=this._chunkSize-this._offset,s=0,u=this,c="function"==typeof r;if(!c){var l,f=[],h=0;this.on("error",function(t){l=t});do{var p=this._binding.writeSync(n,e,s,o,this._buffer,this._offset,a)}while(!this._hadError&&i(p[0],p[1]));if(this._hadError)throw l;var d=t.concat(f,h);return this.close(),d}var g=this._binding.write(n,e,s,o,this._buffer,this._offset,a);g.buffer=e,g.callback=i},v.inherits(a,p),v.inherits(s,p),v.inherits(u,p),v.inherits(c,p),v.inherits(l,p),v.inherits(f,p),v.inherits(h,p)}).call(e,n(2).Buffer,n(34))},function(t,e,n){(function(t,r){function i(t){if(te.UNZIP)throw new TypeError("Bad argument");this.mode=t,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function o(t,e){for(var n=0;n4?9:0)}function o(t){for(var e=t.length;--e>=0;)t[e]=0}function a(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(O.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out), +t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function s(t,e){T._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,a(t.strm)}function u(t,e){t.pending_buf[t.pending++]=e}function c(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function l(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,O.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=L(t.adler,e,i,n):2===t.state.wrap&&(t.adler=B(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function f(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,u=t.strstart>t.w_size-ct?t.strstart-(t.w_size-ct):0,c=t.window,l=t.w_mask,f=t.prev,h=t.strstart+ut,p=c[o+a-1],d=c[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(n=e,c[n+a]===d&&c[n+a-1]===p&&c[n]===c[o]&&c[++n]===c[o+1]){o+=2,n++;do{}while(c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&oa){if(t.match_start=e,a=r,r>=s)break;p=c[o+a-1],d=c[o+a]}}}while((e=f[e&l])>u&&0!=--i);return a<=t.lookahead?a:t.lookahead}function h(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-ct)){O.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,n=t.hash_size,e=n;do{r=t.head[--e],t.head[e]=r>=a?r-a:0}while(--n);n=a,e=n;do{r=t.prev[--e],t.prev[e]=r>=a?r-a:0}while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=l(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=st)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(h(t),0===t.lookahead&&e===M)return mt;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,s(t,!1),0===t.strm.avail_out))return mt;if(t.strstart-t.block_start>=t.w_size-ct&&(s(t,!1),0===t.strm.avail_out))return mt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):(t.strstart>t.block_start&&(s(t,!1),t.strm.avail_out),mt)}function d(t,e){for(var n,r;;){if(t.lookahead=st&&(t.ins_h=(t.ins_h<=st)if(r=T._tr_tally(t,t.strstart-t.match_start,t.match_length-st),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=st){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=st&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=st-1)),t.prev_length>=st&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-st,r=T._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-st),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<=st&&t.strstart>0&&(i=t.strstart-1,(r=a[i])===a[++i]&&r===a[++i]&&r===a[++i])){o=t.strstart+ut;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=st?(n=T._tr_tally(t,1,t.match_length-st),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=T._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(s(t,!1),0===t.strm.avail_out))return mt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?mt:bt}function y(t,e){for(var n;;){if(0===t.lookahead&&(h(t),0===t.lookahead)){if(e===M)return mt;break}if(t.match_length=0,n=T._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(s(t,!1),0===t.strm.avail_out))return mt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?mt:bt}function m(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}function b(t){t.window_size=2*t.w_size,o(t.head),t.max_lazy_match=I[t.level].max_lazy,t.good_match=I[t.level].good_length,t.nice_match=I[t.level].nice_length,t.max_chain_length=I[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=st-1,t.match_available=0,t.ins_h=0}function w(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new O.Buf16(2*ot),this.dyn_dtree=new O.Buf16(2*(2*rt+1)),this.bl_tree=new O.Buf16(2*(2*it+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new O.Buf16(at+1),this.heap=new O.Buf16(2*nt+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new O.Buf16(2*nt+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function x(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=J,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?ft:vt,t.adler=2===e.wrap?0:1,e.last_flush=M,T._tr_init(e),U):r(t,j)}function S(t){var e=x(t);return e===U&&b(t.state),e}function k(t,e){return t&&t.state?2!==t.state.wrap?j:(t.state.gzhead=e,U):j}function _(t,e,n,i,o,a){if(!t)return j;var s=1;if(e===q&&(e=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),o<1||o>$||n!==Q||i<8||i>15||e<0||e>9||a<0||a>K)return r(t,j);8===i&&(i=9);var u=new w;return t.state=u,u.strm=t,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<N||e<0)return t?r(t,j):j;if(s=t.state,!t.output||!t.input&&0!==t.avail_in||s.status===yt&&e!==D)return r(t,0===t.avail_out?V:j);if(s.strm=t,n=s.last_flush,s.last_flush=e,s.status===ft)if(2===s.wrap)t.adler=0,u(s,31),u(s,139),u(s,8),s.gzhead?(u(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),u(s,255&s.gzhead.time),u(s,s.gzhead.time>>8&255),u(s,s.gzhead.time>>16&255),u(s,s.gzhead.time>>24&255),u(s,9===s.level?2:s.strategy>=Z||s.level<2?4:0),u(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(u(s,255&s.gzhead.extra.length),u(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=B(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=ht):(u(s,0),u(s,0),u(s,0),u(s,0),u(s,0),u(s,9===s.level?2:s.strategy>=Z||s.level<2?4:0),u(s,St),s.status=vt);else{var h=Q+(s.w_bits-8<<4)<<8,p=-1;p=s.strategy>=Z||s.level<2?0:s.level<6?1:6===s.level?2:3,h|=p<<6,0!==s.strstart&&(h|=lt),h+=31-h%31,s.status=vt,c(s,h),0!==s.strstart&&(c(s,t.adler>>>16),c(s,65535&t.adler)),t.adler=1}if(s.status===ht)if(s.gzhead.extra){for(l=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending!==s.pending_buf_size));)u(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=pt)}else s.status=pt;if(s.status===pt)if(s.gzhead.name){l=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexl&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),0===f&&(s.gzindex=0,s.status=dt)}else s.status=dt;if(s.status===dt)if(s.gzhead.comment){l=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexl&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),0===f&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(t),s.pending+2<=s.pending_buf_size&&(u(s,255&t.adler),u(s,t.adler>>8&255),t.adler=0,s.status=vt)):s.status=vt),0!==s.pending){if(a(t),0===t.avail_out)return s.last_flush=-1,U}else if(0===t.avail_in&&i(e)<=i(n)&&e!==D)return r(t,V);if(s.status===yt&&0!==t.avail_in)return r(t,V);if(0!==t.avail_in||0!==s.lookahead||e!==M&&s.status!==yt){var d=s.strategy===Z?y(s,e):s.strategy===Y?v(s,e):I[s.level].func(s,e);if(d!==wt&&d!==xt||(s.status=yt),d===mt||d===wt)return 0===t.avail_out&&(s.last_flush=-1),U;if(d===bt&&(e===z?T._tr_align(s):e!==N&&(T._tr_stored_block(s,0,0,!1),e===F&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(t),0===t.avail_out))return s.last_flush=-1,U}return e!==D?U:s.wrap<=0?W:(2===s.wrap?(u(s,255&t.adler),u(s,t.adler>>8&255),u(s,t.adler>>16&255),u(s,t.adler>>24&255),u(s,255&t.total_in),u(s,t.total_in>>8&255),u(s,t.total_in>>16&255),u(s,t.total_in>>24&255)):(c(s,t.adler>>>16),c(s,65535&t.adler)),a(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?U:W)}function E(t){var e;return t&&t.state?(e=t.state.status)!==ft&&e!==ht&&e!==pt&&e!==dt&&e!==gt&&e!==vt&&e!==yt?r(t,j):(t.state=null,e===vt?r(t,G):U):j}function P(t,e){var n,r,i,a,s,u,c,l,f=e.length;if(!t||!t.state)return j;if(n=t.state,2===(a=n.wrap)||1===a&&n.status!==ft||n.lookahead)return j;for(1===a&&(t.adler=L(t.adler,e,f,0)),n.wrap=0,f>=n.w_size&&(0===a&&(o(n.head),n.strstart=0,n.block_start=0,n.insert=0),l=new O.Buf8(n.w_size),O.arraySet(l,e,f-n.w_size,n.w_size,0),e=l,f=n.w_size),s=t.avail_in,u=t.next_in,c=t.input,t.avail_in=f,t.next_in=0,t.input=e,h(n);n.lookahead>=st;){r=n.strstart,i=n.lookahead-(st-1);do{n.ins_h=(n.ins_h<=0;)t[e]=0}function i(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function o(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function a(t){return t<256?ot[t]:ot[256+(t>>>7)]}function s(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function u(t,e,n){t.bi_valid>Z-n?(t.bi_buf|=e<>Z-t.bi_valid,t.bi_valid+=n-Z):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function f(t){16===t.bi_valid?(s(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function h(t,e){var n,r,i,o,a,s,u=e.dyn_tree,c=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,h=e.stat_desc.extra_bits,p=e.stat_desc.extra_base,d=e.stat_desc.max_length,g=0;for(o=0;o<=H;o++)t.bl_count[o]=0;for(u[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;nd&&(o=d,g++),u[2*r+1]=o,r>c||(t.bl_count[o]++,a=0,r>=p&&(a=h[r-p]),s=u[2*r],t.opt_len+=s*(o+a),f&&(t.static_len+=s*(l[2*r+1]+a)));if(0!==g){do{for(o=d-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[d]--,g-=2}while(g>0);for(o=d;0!==o;o--)for(r=t.bl_count[o];0!==r;)(i=t.heap[--n])>c||(u[2*i+1]!==o&&(t.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),r--)}}function p(t,e,n){var r,i,o=new Array(H+1),a=0;for(r=1;r<=H;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=l(o[s]++,s))}}function d(){var t,e,n,r,o,a=new Array(H+1);for(n=0,r=0;r>=7;r8?s(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function y(t,e,n,r){v(t),r&&(s(t,n),s(t,~n)),L.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}function m(t,e,n,r){var i=2*e,o=2*n;return t[i]>1;n>=1;n--)b(t,o,n);i=u;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],b(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,b(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],h(t,e),p(o,c,t.bl_count)}function S(t,e,n){var r,i,o=-1,a=e[1],s=0,u=7,c=4;for(0===a&&(u=138,c=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++s=3&&0===t.bl_tree[2*nt[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function C(t,e,n,r){var i;for(u(t,e-257,5),u(t,n-1,5),u(t,r-4,4),i=0;i>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return R;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return M;for(e=32;e0?(t.strm.data_type===z&&(t.strm.data_type=A(t)),x(t,t.l_desc),x(t,t.d_desc),a=_(t),i=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&e!==-1?P(t,e,n,r):t.strategy===B||o===i?(u(t,(D<<1)+(r?1:0),3),w(t,rt,it)):(u(t,(N<<1)+(r?1:0),3),C(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),w(t,t.dyn_ltree,t.dyn_dtree)),g(t),r&&v(t)}function T(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(at[n]+W+1)]++,t.dyn_dtree[2*a(e)]++),t.last_lit===t.lit_bufsize-1}var L=n(61),B=4,R=0,M=1,z=2,F=0,D=1,N=2,U=29,W=256,j=W+1+U,G=30,V=19,q=2*j+1,H=15,Z=16,Y=7,K=256,X=16,J=17,Q=18,$=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],tt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],et=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],nt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],rt=new Array(2*(j+2));r(rt);var it=new Array(2*G);r(it);var ot=new Array(512);r(ot);var at=new Array(256);r(at);var st=new Array(U);r(st);var ut=new Array(G);r(ut);var ct,lt,ft,ht=!1;e._tr_init=E,e._tr_stored_block=P,e._tr_flush_block=O,e._tr_tally=T,e._tr_align=I},function(t,e){"use strict";function n(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){a=n>2e3?2e3:n,n-=a;do{i=i+e[r++]|0,o=o+i|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=n},function(t,e){"use strict";function n(t,e,n,i){var o=r,a=i+n;t^=-1;for(var s=i;s>>8^o[255&(t^e[s])];return t^-1}var r=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=n},function(t,e,n){"use strict";function r(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new m.Buf16(320),this.work=new m.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=F,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new m.Buf32(gt),e.distcode=e.distdyn=new m.Buf32(vt),e.sane=1,e.back=-1,I):L}function a(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,o(t)):L}function s(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?L:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,a(t))):L}function u(t,e){var n,r;return t?(r=new i,t.state=r,r.window=null,n=s(t,e),n!==I&&(t.state=null),n):L}function c(t){return u(t,yt)}function l(t){if(mt){var e;for(v=new m.Buf32(512),y=new m.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(S(_,t.lens,0,288,v,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;S(C,t.lens,0,32,y,0,t.work,{bits:5}),mt=!1}t.lencode=v,t.lenbits=9,t.distcode=y,t.distbits=5}function f(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<=o.wsize?(m.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),m.arraySet(o.window,e,n-r,i,o.wnext),r-=i,r?(m.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=w(n.check,Et,2,0),h=0,p=0,n.mode=D;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",n.mode=ht;break}if((15&h)!==z){t.msg="unknown compression method",n.mode=ht;break}if(h>>>=4,p-=4,St=8+(15&h),0===n.wbits)n.wbits=St;else if(St>n.wbits){t.msg="invalid window size",n.mode=ht;break}n.dmax=1<>8&1),512&n.flags&&(Et[0]=255&h,Et[1]=h>>>8&255,n.check=w(n.check,Et,2,0)),h=0,p=0,n.mode=N;case N:for(;p<32;){if(0===u)break t;u--,h+=i[a++]<>>8&255,Et[2]=h>>>16&255,Et[3]=h>>>24&255,n.check=w(n.check,Et,4,0)),h=0,p=0,n.mode=U;case U:for(;p<16;){if(0===u)break t;u--,h+=i[a++]<>8),512&n.flags&&(Et[0]=255&h,Et[1]=h>>>8&255,n.check=w(n.check,Et,2,0)),h=0,p=0,n.mode=W;case W:if(1024&n.flags){for(;p<16;){if(0===u)break t;u--,h+=i[a++]<>>8&255,n.check=w(n.check,Et,2,0)),h=0,p=0}else n.head&&(n.head.extra=null);n.mode=j;case j:if(1024&n.flags&&(v=n.length,v>u&&(v=u),v&&(n.head&&(St=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),m.arraySet(n.head.extra,i,a,v,St)),512&n.flags&&(n.check=w(n.check,i,v,a)),u-=v,a+=v,n.length-=v),n.length))break t;n.length=0,n.mode=G;case G:if(2048&n.flags){if(0===u)break t;v=0;do{St=i[a+v++],n.head&&St&&n.length<65536&&(n.head.name+=String.fromCharCode(St))}while(St&&v>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=Y;break;case H:for(;p<32;){if(0===u)break t;u--,h+=i[a++]<>>=7&p,p-=7&p,n.mode=ct;break}for(;p<3;){if(0===u)break t;u--,h+=i[a++]<>>=1,p-=1,3&h){case 0:n.mode=X;break;case 1:if(l(n),n.mode=nt,e===P){h>>>=2,p-=2;break t}break;case 2:n.mode=$;break;case 3:t.msg="invalid block type",n.mode=ht}h>>>=2,p-=2;break;case X:for(h>>>=7&p,p-=7&p;p<32;){if(0===u)break t;u--,h+=i[a++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=ht;break}if(n.length=65535&h,h=0,p=0,n.mode=J,e===P)break t;case J:n.mode=Q;case Q:if(v=n.length){if(v>u&&(v=u),v>c&&(v=c),0===v)break t;m.arraySet(o,i,a,v,s),u-=v,a+=v,c-=v,s+=v,n.length-=v;break}n.mode=Y;break;case $:for(;p<14;){if(0===u)break t;u--,h+=i[a++]<>>=5,p-=5,n.ndist=1+(31&h),h>>>=5,p-=5,n.ncode=4+(15&h),h>>>=4,p-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=ht;break}n.have=0,n.mode=tt;case tt:for(;n.have>>=3,p-=3}for(;n.have<19;)n.lens[Pt[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,_t={bits:n.lenbits},kt=S(k,n.lens,0,19,n.lencode,0,n.work,_t),n.lenbits=_t.bits,kt){t.msg="invalid code lengths set",n.mode=ht;break}n.have=0,n.mode=et;case et:for(;n.have>>24,yt=At>>>16&255,mt=65535&At,!(vt<=p);){if(0===u)break t;u--,h+=i[a++]<>>=vt,p-=vt,n.lens[n.have++]=mt;else{if(16===mt){for(Ct=vt+2;p>>=vt,p-=vt,0===n.have){t.msg="invalid bit length repeat",n.mode=ht;break}St=n.lens[n.have-1],v=3+(3&h),h>>>=2,p-=2}else if(17===mt){for(Ct=vt+3;p>>=vt,p-=vt,St=0,v=3+(7&h),h>>>=3,p-=3}else{for(Ct=vt+7;p>>=vt,p-=vt,St=0,v=11+(127&h),h>>>=7,p-=7}if(n.have+v>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=ht;break}for(;v--;)n.lens[n.have++]=St}}if(n.mode===ht)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=ht;break}if(n.lenbits=9,_t={bits:n.lenbits},kt=S(_,n.lens,0,n.nlen,n.lencode,0,n.work,_t),n.lenbits=_t.bits,kt){t.msg="invalid literal/lengths set",n.mode=ht;break}if(n.distbits=6,n.distcode=n.distdyn,_t={bits:n.distbits},kt=S(C,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,_t),n.distbits=_t.bits,kt){t.msg="invalid distances set",n.mode=ht;break}if(n.mode=nt,e===P)break t;case nt:n.mode=rt;case rt:if(u>=6&&c>=258){t.next_out=s,t.avail_out=c,t.next_in=a,t.avail_in=u,n.hold=h,n.bits=p,x(t,g),s=t.next_out,o=t.output,c=t.avail_out,a=t.next_in,i=t.input,u=t.avail_in,h=n.hold,p=n.bits,n.mode===Y&&(n.back=-1);break}for(n.back=0;At=n.lencode[h&(1<>>24,yt=At>>>16&255,mt=65535&At,!(vt<=p);){if(0===u)break t;u--,h+=i[a++]<>bt)],vt=At>>>24,yt=At>>>16&255,mt=65535&At,!(bt+vt<=p);){if(0===u)break t;u--,h+=i[a++]<>>=bt,p-=bt,n.back+=bt}if(h>>>=vt,p-=vt,n.back+=vt,n.length=mt,0===yt){n.mode=ut;break}if(32&yt){n.back=-1,n.mode=Y;break}if(64&yt){t.msg="invalid literal/length code",n.mode=ht;break}n.extra=15&yt,n.mode=it;case it:if(n.extra){for(Ct=n.extra;p>>=n.extra,p-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=ot;case ot:for(;At=n.distcode[h&(1<>>24,yt=At>>>16&255,mt=65535&At,!(vt<=p);){if(0===u)break t;u--,h+=i[a++]<>bt)],vt=At>>>24,yt=At>>>16&255,mt=65535&At,!(bt+vt<=p);){if(0===u)break t;u--,h+=i[a++]<>>=bt,p-=bt,n.back+=bt}if(h>>>=vt,p-=vt,n.back+=vt,64&yt){t.msg="invalid distance code",n.mode=ht;break}n.offset=mt,n.extra=15&yt,n.mode=at;case at:if(n.extra){for(Ct=n.extra;p>>=n.extra,p-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=ht;break}n.mode=st;case st:if(0===c)break t;if(v=g-c,n.offset>v){if((v=n.offset-v)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=ht;break}v>n.wnext?(v-=n.wnext,y=n.wsize-v):y=n.wnext-v,v>n.length&&(v=n.length),gt=n.window}else gt=o,y=s-n.offset,v=n.length;v>c&&(v=c),c-=v,n.length-=v;do{o[s++]=gt[y++]}while(--v);0===n.length&&(n.mode=rt);break;case ut:if(0===c)break t;o[s++]=n.length,c--,n.mode=rt;break;case ct:if(n.wrap){for(;p<32;){ +if(0===u)break t;u--,h|=i[a++]<>>24,p>>>=w,d-=w,0===(w=b>>>16&255))A[o++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=g[(65535&b)+(p&(1<>>=w,d-=w),d<15&&(p+=C[r++]<>>24,p>>>=w,d-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=v[(65535&b)+(p&(1<u){t.msg="invalid distance too far back",n.mode=30;break t}if(p>>>=w,d-=w,w=o-a,S>w){if((w=S-w)>l&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(k=0,_=h,0===f){if(k+=c-w,w2;)A[o++]=_[k++],A[o++]=_[k++],A[o++]=_[k++],x-=3;x&&(A[o++]=_[k++],x>1&&(A[o++]=_[k++]))}else{k=o-S;do{A[o++]=A[k++],A[o++]=A[k++],A[o++]=A[k++],x-=3}while(x>2);x&&(A[o++]=A[k++],x>1&&(A[o++]=A[k++]))}break}}break}}while(r>3,r-=x,d-=x<<3,p&=(1<=1&&0===M[A];A--);if(E>A&&(E=A),0===A)return c[l++]=20971520,c[l++]=20971520,h.bits=1,0;for(C=1;C0&&(0===t||1!==A))return-1;for(z[1]=0,k=1;k<15;k++)z[k+1]=z[k]+M[k];for(_=0;_852||2===t&&T>592)return 1;for(var N=0;;){N++,b=k-I,f[_]m?(w=F[D+f[_]],x=B[R+f[_]]):(w=96,x=0),p=1<>I)+d]=b<<24|w<<16|x|0}while(0!==d);for(p=1<>=1;if(0!==p?(L&=p-1,L+=p):L=0,_++,0==--M[k]){if(k===A)break;k=e[n+f[_]]}if(k>E&&(L&v)!==g){for(0===I&&(I=E),y+=C,P=k-I,O=1<852||2===t&&T>592)return 1;g=L&v,c[g]=E<<24|P<<16|y-l|0}}return 0!==L&&(c[y+L]=k-I<<24|64<<16|0),h.bits=E,0}},function(t,e){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e,n){(function(t,r){function i(t,n){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&e._extend(r,n),x(r.showHidden)&&(r.showHidden=!1),x(r.depth)&&(r.depth=2),x(r.colors)&&(r.colors=!1),x(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),u(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function a(t,e){return t}function s(t){var e={};return t.forEach(function(t,n){e[t]=!0}),e}function u(t,n,r){if(t.customInspect&&n&&A(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return b(i)||(i=u(t,i,r)),i}var o=c(t,n);if(o)return o;var a=Object.keys(n),g=s(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(n)),C(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(n);if(0===a.length){if(A(n)){var v=n.name?": "+n.name:"";return t.stylize("[Function"+v+"]","special")}if(S(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(_(n))return t.stylize(Date.prototype.toString.call(n),"date");if(C(n))return l(n)}var y="",m=!1,w=["{","}"];if(d(n)&&(m=!0,w=["[","]"]),A(n)){y=" [Function"+(n.name?": "+n.name:"")+"]"}if(S(n)&&(y=" "+RegExp.prototype.toString.call(n)),_(n)&&(y=" "+Date.prototype.toUTCString.call(n)),C(n)&&(y=" "+l(n)),0===a.length&&(!m||0==n.length))return w[0]+y+w[1];if(r<0)return S(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special");t.seen.push(n);var x;return x=m?f(t,n,r,g,a):a.map(function(e){return h(t,n,r,g,e,m)}),t.seen.pop(),p(x,y,w)}function c(t,e){if(x(e))return t.stylize("undefined","undefined");if(b(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return m(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function l(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i){for(var o=[],a=0,s=e.length;a-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function p(t,e,n){var r=0;return t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function d(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function v(t){return null===t}function y(t){return null==t}function m(t){return"number"==typeof t}function b(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function x(t){return void 0===t}function S(t){return k(t)&&"[object RegExp]"===P(t)}function k(t){return"object"==typeof t&&null!==t}function _(t){return k(t)&&"[object Date]"===P(t)}function C(t){return k(t)&&("[object Error]"===P(t)||t instanceof Error)}function A(t){return"function"==typeof t}function E(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function P(t){return Object.prototype.toString.call(t)}function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.format=function(t){if(!b(t)){for(var e=[],n=0;n=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),s=r[n];n=0;s--)if(u[s]!==c[s])return!1;for(s=u.length-1;s>=0;s--)if(a=u[s],!p(t[a],e[a],n,r))return!1;return!0}function v(t,e,n){p(t,e,!0)&&f(t,e,n,"notDeepStrictEqual",v)}function y(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&e.call({},t)===!0}function m(t){var e;try{t()}catch(t){e=t}return e}function b(t,e,n,r){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=m(e),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&f(i,n,"Missing expected exception"+r);var o="string"==typeof r,a=!t&&w.isError(i),s=!t&&i&&!n;if((a&&o&&y(i,n)||s)&&f(i,n,"Got unwanted exception"+r),t&&i&&n&&!y(i,n)||!t&&i)throw i}var w=n(69),x=Object.prototype.hasOwnProperty,S=Array.prototype.slice,k=function(){return"foo"===function(){}.name}(),_=t.exports=h,C=/\s*function\s+([^\(\s]*)\s*/;_.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=l(this),this.generatedMessage=!0);var e=t.stackStartFunction||f;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var n=new Error;if(n.stack){var r=n.stack,i=s(e),o=r.indexOf("\n"+i);if(o>=0){var a=r.indexOf("\n",o+1);r=r.substring(a+1)}this.stack=r}}},w.inherits(_.AssertionError,Error),_.fail=f,_.ok=h,_.equal=function(t,e,n){t!=e&&f(t,e,n,"==",_.equal)},_.notEqual=function(t,e,n){t==e&&f(t,e,n,"!=",_.notEqual)},_.deepEqual=function(t,e,n){p(t,e,!1)||f(t,e,n,"deepEqual",_.deepEqual)},_.deepStrictEqual=function(t,e,n){p(t,e,!0)||f(t,e,n,"deepStrictEqual",_.deepStrictEqual)},_.notDeepEqual=function(t,e,n){p(t,e,!1)&&f(t,e,n,"notDeepEqual",_.notDeepEqual)},_.notDeepStrictEqual=v,_.strictEqual=function(t,e,n){t!==e&&f(t,e,n,"===",_.strictEqual)},_.notStrictEqual=function(t,e,n){t===e&&f(t,e,n,"!==",_.notStrictEqual)},_.throws=function(t,e,n){b(!0,t,e,n)},_.doesNotThrow=function(t,e,n){b(!1,t,e,n)},_.ifError=function(t){if(t)throw t};var A=Object.keys||function(t){var e=[];for(var n in t)x.call(t,n)&&e.push(n);return e}}).call(e,function(){return this}())},function(t,e){(function(){var e;e=function(){function t(t,r){var i;this.document=t,null==r&&(r={}),this.size=r.size||"letter",this.layout=r.layout||"portrait","number"==typeof r.margin?this.margins={top:r.margin,left:r.margin,bottom:r.margin,right:r.margin}:this.margins=r.margins||e,i=Array.isArray(this.size)?this.size:n[this.size.toUpperCase()],this.width=i["portrait"===this.layout?0:1],this.height=i["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:function(t){return function(){var e;return null!=(e=t.resources.data).Font?e.Font:e.Font={}}}(this)},xobjects:{get:function(t){return function(){var e;return null!=(e=t.resources.data).XObject?e.XObject:e.XObject={}}}(this)},ext_gstates:{get:function(t){return function(){var e;return null!=(e=t.resources.data).ExtGState?e.ExtGState:e.ExtGState={}}}(this)},patterns:{get:function(t){return function(){var e;return null!=(e=t.resources.data).Pattern?e.Pattern:e.Pattern={}}}(this)},annotations:{get:function(t){return function(){var e;return null!=(e=t.dictionary.data).Annots?e.Annots:e.Annots=[]}}(this)}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}var e,n;return t.prototype.maxY=function(){return this.height-this.margins.bottom},t.prototype.write=function(t){return this.content.write(t)},t.prototype.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},e={top:72,left:72,bottom:72,right:72},n={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,o,a;a=n(75),e=a.PDFGradient,r=a.PDFLinearGradient,i=a.PDFRadialGradient,t.exports={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(t){var n,r;return t instanceof e?t:("string"==typeof t&&("#"===t.charAt(0)?(4===t.length&&(t=t.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3")),n=parseInt(t.slice(1),16),t=[n>>16,n>>8&255,255&n]):o[t]&&(t=o[t])),Array.isArray(t)?(3===t.length?t=function(){var e,n,i;for(i=[],e=0,n=t.length;eE;c=0<=E?++l:--l)r.push(0,1),c+2!==this.stops.length&&t.push(this.stops[c+1][0]),i=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[c+0][1],C1:this.stops[c+1][1],N:1}),R.push(i),i.end();if(1===R.length?i=R[0]:(i=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:R,Bounds:t,Encode:r}),i.end()),this.id="Sh"+ ++this.doc._gradCount,d=this.doc._ctm.slice(),g=d[0],v=d[1],b=d[2],S=d[3],k=d[4],_=d[5],P=this.transform,y=P[0],m=P[1],w=P[2],x=P[3],e=P[4],n=P[5],d[0]=g*y+b*m,d[1]=v*y+S*m,d[2]=g*w+b*x,d[3]=v*w+S*x,d[4]=g*e+b*n+k,d[5]=v*e+S*n+_,L=this.shader(i),L.end(),A=this.doc.ref({Type:"Pattern",PatternType:2,Shading:L,Matrix:function(){var t,e,n;for(n=[],t=0,e=d.length;t0&&(e[e.length]=+i),l[l.length]={cmd:r,args:e},e=[],i="",o=!1),r=n;else if(" "===n||","===n||"-"===n&&i.length>0&&"e"!==i[i.length-1]||"."===n&&o){if(0===i.length)continue;e.length===c?(l[l.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i,o="."===n,i="-"===n||"."===n?n:""}else i+=n,"."===n&&(o=!0);return i.length>0&&(e.length===c?(l[l.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i),l[l.length]={cmd:r,args:e},l},r=i=u=c=p=d=0,e=function(t,e){var n,o,a,s,f;for(r=i=u=c=p=d=0,o=a=0,s=t.length;a1&&(b=Math.sqrt(b),n*=b,r*=b),f=g/n,h=C/n,p=-C/r,d=g/r,L=f*s+h*l,M=p*s+d*l,B=f*t+h*e,z=p*t+d*e,v=(B-L)*(B-L)+(z-M)*(z-M),_=1/v-.25,_<0&&(_=0),k=Math.sqrt(_),o===i&&(k=-k),R=.5*(L+B)-k*(z-M),F=.5*(M+z)+k*(B-L),E=Math.atan2(M-F,L-R),P=Math.atan2(z-F,B-R),T=P-E,T<0&&1===o?T+=2*Math.PI:T>0&&0===o&&(T-=2*Math.PI),S=Math.ceil(Math.abs(T/(.5*Math.PI+.001))),x=[],y=m=0,w=S;0<=w?mw;y=0<=w?++m:--m)I=E+y*T/S,O=E+(y+1)*T/S,x[y]=[R,F,I,O,n,r,C,g];return x},f=function(t,e,n,r,i,a,s,u){var c,l,f,h,p,d,g,v,y,m,b,w;return c=u*i,l=-s*a,f=s*i,h=u*a,d=.5*(r-n),p=8/3*Math.sin(.5*d)*Math.sin(.5*d)/Math.sin(d),g=o(t+Math.cos(n)-p*Math.sin(n)),m=o(e+Math.sin(n)+p*Math.cos(n)),y=o(t+Math.cos(r)),w=o(e+Math.sin(r)),v=o(y+p*Math.sin(r)),b=o(w-p*Math.cos(r)),[c*g+l*m,f*g+h*m,c*v+l*b,f*v+h*b,c*y+l*w,f*y+h*w]},o=function(t){return Math.abs(Math.round(t)-t)<1e-13?Math.round(t):t},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e;e=n(79),t.exports={initFonts:function(){this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={}},font:function(t,n,r){var i,o,a,s;return"number"==typeof n&&(r=n,n=null),"string"==typeof t&&this._registeredFonts[t]?(i=t,s=this._registeredFonts[t],t=s.src,n=s.family):"string"!=typeof(i=n||t)&&(i=null),null!=r&&this.fontSize(r),(o=this._fontFamilies[i])?(this._font=o,this):(a="F"+ ++this._fontCount,this._font=e.open(this,t,n,a),(o=this._fontFamilies[this._font.name])?(this._font=o,this):(i&&(this._fontFamilies[i]=this._font),this._fontFamilies[this._font.name]=this._font,this))},fontSize:function(t){return this._fontSize=t,this},currentLineHeight:function(t){return null==t&&(t=!1),this._font.lineHeight(this._fontSize,t)},registerFont:function(t,e,n){return this._registeredFonts[t]={src:e,family:n},this}}}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o,a;a=n(80),i=function(){function t(){throw new Error("Cannot construct a PDFFont directly.")}return t.open=function(t,n,i,s){var u;if("string"==typeof n){if(o.isStandardFont(n))return new o(t,n,s);u=a.openSync(n,i)}else e.isBuffer(n)?u=a.create(n,i):n instanceof Uint8Array?u=a.create(new e(n),i):n instanceof ArrayBuffer&&(u=a.create(new e(new Uint8Array(n)),i));if(null==u)throw new Error("Not a supported font format or standard PDF font.");return new r(t,u,s)},t.prototype.encode=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.widthOfString=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},t.prototype.finalize=function(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0},t.prototype.embed=function(){throw new Error("Must be implemented by subclasses")},t.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.descender)/1e3*t},t}(),t.exports=i,o=n(279),r=n(281)}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e,r){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t.default:t}function o(t,e,n){if(n.get)!function(){var t=n.get;n.get=function(){var n=t.call(this);return X(this,e,{value:n}),n}}();else if("function"==typeof n.value){var r=function(){var t=n.value;return{v:{get:function(){function n(){for(var e=arguments.length,n=Array(e),i=0;i0?n[0]:"value";if(r.has(o))return r.get(o);var a=t.apply(this,n);return r.set(o,a),a}var r=new $;return X(this,e,{value:n}),n}}}}();if("object"===(void 0===r?"undefined":K(r)))return r.v}}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return 1===t&&Bt[n]?Bt[n]:Lt[t][e]}function s(t){var e=new V.Struct({lookupType:V.uint16,flags:Qe,subTableCount:V.uint16,subTables:new V.Array(new V.Pointer(V.uint16,t),"subTableCount"),markFilteringSet:V.uint16});return new V.LazyArray(new V.Pointer(V.uint16,e),V.uint16)}function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:V.uint16,n=ot({newState:V.uint16,flags:V.uint16},t),r=new V.Struct(n),i=new Mr(new V.Array(V.uint16,function(t){return t.nClasses}));return new V.Struct({nClasses:V.uint32,classTable:new V.Pointer(V.uint32,new zr(e)),stateArray:new V.Pointer(V.uint32,i),entryTable:new V.Pointer(V.uint32,new Mr(r))})}function c(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:V.uint16,new V.Struct({version:function(){return 8},firstGlyph:V.uint16,values:new V.Array(V.uint8,V.uint16)})),n=ot({newStateOffset:V.uint16,newState:function(t){return(t.newStateOffset-(t.parent.stateArray.base-t.parent._startOffset))/t.parent.nClasses},flags:V.uint16},t),r=new V.Struct(n),i=new Mr(new V.Array(V.uint8,function(t){return t.nClasses}));return new V.Struct({nClasses:V.uint16,classTable:new V.Pointer(V.uint16,e),stateArray:new V.Pointer(V.uint16,i),entryTable:new V.Pointer(V.uint16,new Mr(r))})}function l(t,e){for(var n=0,r=t.length-1;n<=r;){var i=n+r>>1,o=e(t[i]);if(o<0)r=i-1;else{if(!(o>0))return i;n=i+1}}return-1}function f(t,e){for(var n=[];t3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=t.splice(n[0]-(n[1]-1),n[1]);i&&o.reverse();var a=t.splice.apply(t,[e[0],e[1]].concat(o));return r&&a.reverse(),t.splice.apply(t,[n[0]-(e[1]-1),0].concat(a)),t}function w(t,e,n,r){switch(e){case 0:return t;case 1:return b(t,[n,1],[r,0]);case 2:return b(t,[n,0],[r,1]);case 3:return b(t,[n,1],[r,1]);case 4:return b(t,[n,2],[r,0]);case 5:return b(t,[n,2],[r,0],!0,!1);case 6:return b(t,[n,0],[r,2]);case 7:return b(t,[n,0],[r,2],!1,!0);case 8:return b(t,[n,1],[r,2]);case 9:return b(t,[n,1],[r,2],!1,!0);case 10:return b(t,[n,2],[r,1]);case 11:return b(t,[n,2],[r,1],!0,!1);case 12:return b(t,[n,2],[r,2]);case 13:return b(t,[n,2],[r,2],!0,!1);case 14:return b(t,[n,2],[r,2],!1,!0);case 15:return b(t,[n,2],[r,2],!0,!0);default:throw new Error("Unknown verb: "+e)}}function x(t){var e=Qi.get(t);if(e)return e-1;var n=ct.getCategory(t);return"Mn"===n||"Me"===n||"Cf"===n?to.Transparent:to.Non_Joining}function S(t){return So(t)?Lo:ko(t)?Bo:_o(t)?Ro:Eo(t)?Mo:Ao(t)?zo:Co(t)?Fo:To}function k(t,e,n){return new uo(t,t.glyphForCodePoint(e).id,[e],n)}function _(t,e,n){var r=t[e],i=r.codePoints[0],o=i-lo,a=go+o%yo;o=o/yo|0;var s=ho+o/vo|0,u=po+o%vo;if(!n.hasGlyphForCodePoint(s)||!n.hasGlyphForCodePoint(u)||a!==go&&!n.hasGlyphForCodePoint(a))return e;var c=k(n,s,r.features);c.features.ljmo=!0;var l=k(n,u,r.features);l.features.vjmo=!0;var f=[c,l];if(a>go){var h=k(n,a,r.features);h.features.tjmo=!0,f.push(h)}return t.splice.apply(t,[e,1].concat(f)),e+f.length-1}function C(t,e,n){var r=t[e],i=t[e].codePoints[0],o=S(i),a=t[e-1].codePoints[0],s=S(a),u=void 0,c=void 0,l=void 0,f=void 0;if(s===Mo&&o===Ro)u=a,f=r;else{o===Bo?(c=t[e-1],l=r):(c=t[e-2],l=t[e-1],f=r);var h=c.codePoints[0],p=l.codePoints[0];Po(h)&&Io(p)&&(u=lo+((h-ho)*vo+(p-po))*yo)}var d=f&&f.codePoints[0]||go;if(null!=u&&(d===go||Oo(d))){var g=u+(d-go);if(n.hasGlyphForCodePoint(g)){var v=s===Bo?3:2;return t.splice(e-v+1,v,k(n,g,r.features)),e-v+1}}return c&&(c.features.ljmo=!0),l&&(l.features.vjmo=!0),f&&(f.features.tjmo=!0),s===Mo?(_(t,e-1,n),e+1):e}function A(t){switch(S(t)){case Mo:case zo:return 1;case Bo:return 2;case Ro:return 3}}function E(t,e,n){var r=t[e],i=t[e].codePoints[0];if(0!==n.glyphForCodePoint(i).advanceWidth){var o=t[e-1].codePoints[0],a=A(o);return t.splice(e,1),t.splice(e-a,0,r)}}function P(t,e,n){var r=t[e],i=t[e].codePoints[0];if(n.hasGlyphForCodePoint(xo)){var o=k(n,xo,r.features),a=0===n.glyphForCodePoint(i).advanceWidth?e:e+1;t.splice(a,0,o),e++}return e}function I(t){return Jo.get(t.codePoints[0])}function O(t,e){for(var n=0,r=Qo.match(e.map(I)),i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=s[0],c=s[1],l=s[2];++n;for(var f=u;f<=c;f++)e[f].shaperInfo=new ta(Ko[I(e[f])],l[0],n);for(var h="R"===e[u].shaperInfo.category?1:Math.min(3,c-u),p=u;p=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}o.substituted=!1}}function L(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;a.substituted&&a.features.rphf&&(a.shaperInfo.category="R")}}function B(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;a.substituted&&(a.shaperInfo.category="VPre")}}function R(t,e){for(var n=t.glyphForCodePoint(9676).id,r=0,i=M(e,0);r1)for(o=r+1;o=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e>7);if((c&=127)<10)s=0,u=j(c,((14&c)<<7)+e.readUInt8());else if(c<20)s=j(c,((c-10&14)<<7)+e.readUInt8()),u=0;else if(c<84){var f=c-20,h=e.readUInt8();s=j(c,1+(48&f)+(h>>4)),u=j(c>>1,1+((12&f)<<2)+(15&h))}else if(c<120){var f=c-84;s=j(c,1+(f/12<<8)+e.readUInt8()),u=j(c>>1,1+(f%12>>2<<8)+e.readUInt8())}else if(c<124){var h=e.readUInt8(),p=e.readUInt8();s=j(c,(h<<4)+(p>>4)),u=j(c>>1,((15&p)<<8)+e.readUInt8())}else s=j(c,e.readUInt16BE()),u=j(c>>1,e.readUInt16BE());i+=s,r+=u,o.push(new ga(l,!1,i,r))}return o}var V=i(n(81)),q=i(n(119)),H=i(n(145)),Z=i(n(178)),Y=i(n(182)),K=i(n(185)),X=i(n(202)),J=i(n(205)),Q=i(n(206)),$=i(n(207)),tt=i(n(224)),et=i(n(225)),nt=n(107),rt=i(n(233)),it=i(n(236)),ot=i(n(239)),at=i(n(243)),st=i(n(246)),ut=i(n(251)),ct=i(n(255)),lt=i(n(15)),ft=i(n(257)),ht=i(n(266)),pt=i(n(16)),dt=i(n(267)),gt={};gt.logErrors=!1;var vt=[];gt.registerFormat=function(t){vt.push(t)},gt.openSync=function(t,e){var r=n(53).readFileSync(t);return gt.create(r,e)},gt.open=function(t,e,r){"function"==typeof e&&(r=e,e=null),n(53).readFile(t,function(t,n){if(t)return r(t);try{var i=gt.create(n,e)}catch(t){return r(t)}return r(null,i)})},gt.create=function(t,e){for(var n=0;n>1},searchRange:V.uint16,entrySelector:V.uint16,rangeShift:V.uint16,endCode:new V.LazyArray(V.uint16,"segCount"),reservedPad:new V.Reserved(V.uint16),startCode:new V.LazyArray(V.uint16,"segCount"),idDelta:new V.LazyArray(V.int16,"segCount"),idRangeOffset:new V.LazyArray(V.uint16,"segCount"),glyphIndexArray:new V.LazyArray(V.uint16,function(t){return(t.length-t._currentOffset)/2})},6:{length:V.uint16,language:V.uint16,firstCode:V.uint16,entryCount:V.uint16,glyphIndices:new V.LazyArray(V.uint16,"entryCount")},8:{reserved:new V.Reserved(V.uint16),length:V.uint32,language:V.uint16,is32:new V.LazyArray(V.uint8,8192),nGroups:V.uint32,groups:new V.LazyArray(mt,"nGroups")},10:{reserved:new V.Reserved(V.uint16),length:V.uint32,language:V.uint32,firstCode:V.uint32,entryCount:V.uint32,glyphIndices:new V.LazyArray(V.uint16,"numChars")},12:{reserved:new V.Reserved(V.uint16),length:V.uint32,language:V.uint32,nGroups:V.uint32,groups:new V.LazyArray(mt,"nGroups")},13:{reserved:new V.Reserved(V.uint16),length:V.uint32,language:V.uint32,nGroups:V.uint32,groups:new V.LazyArray(mt,"nGroups")},14:{length:V.uint32,numRecords:V.uint32,varSelectors:new V.LazyArray(kt,"numRecords")}}),Ct=new V.Struct({platformID:V.uint16,encodingID:V.uint16,table:new V.Pointer(V.uint32,_t,{type:"parent",lazy:!0})}),At=new V.Struct({version:V.uint16,numSubtables:V.uint16,tables:new V.Array(Ct,"numSubtables")}),Et=new V.Struct({version:V.int32,revision:V.int32,checkSumAdjustment:V.uint32,magicNumber:V.uint32,flags:V.uint16,unitsPerEm:V.uint16,created:new V.Array(V.int32,2),modified:new V.Array(V.int32,2),xMin:V.int16,yMin:V.int16,xMax:V.int16,yMax:V.int16,macStyle:new V.Bitfield(V.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:V.uint16,fontDirectionHint:V.int16,indexToLocFormat:V.int16,glyphDataFormat:V.int16}),Pt=new V.Struct({version:V.int32,ascent:V.int16,descent:V.int16,lineGap:V.int16,advanceWidthMax:V.uint16,minLeftSideBearing:V.int16,minRightSideBearing:V.int16,xMaxExtent:V.int16,caretSlopeRise:V.int16,caretSlopeRun:V.int16,caretOffset:V.int16,reserved:new V.Reserved(V.int16,4),metricDataFormat:V.int16,numberOfMetrics:V.uint16}),It=new V.Struct({advance:V.uint16,bearing:V.int16}),Ot=new V.Struct({metrics:new V.LazyArray(It,function(t){return t.parent.hhea.numberOfMetrics}),bearings:new V.LazyArray(V.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.hhea.numberOfMetrics})}),Tt=new V.Struct({version:V.int32,numGlyphs:V.uint16,maxPoints:V.uint16,maxContours:V.uint16,maxComponentPoints:V.uint16,maxComponentContours:V.uint16,maxZones:V.uint16,maxTwilightPoints:V.uint16,maxStorage:V.uint16,maxFunctionDefs:V.uint16,maxInstructionDefs:V.uint16,maxStackElements:V.uint16,maxSizeOfInstructions:V.uint16,maxComponentElements:V.uint16,maxComponentDepth:V.uint16}),Lt=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],Bt={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},Rt=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],Mt=new V.Struct({platformID:V.uint16,encodingID:V.uint16,languageID:V.uint16,nameID:V.uint16,length:V.uint16,string:new V.Pointer(V.uint16,new V.String("length",function(t){return a(t.platformID,t.encodingID,t.languageID)}),{type:"parent",relativeTo:"parent.stringOffset",allowNull:!1})}),zt=new V.Struct({length:V.uint16,tag:new V.Pointer(V.uint16,new V.String("length","utf16be"),{type:"parent",relativeTo:"stringOffset"})}),NameTable=new V.VersionedStruct(V.uint16,{0:{count:V.uint16,stringOffset:V.uint16,records:new V.Array(Mt,"count")},1:{count:V.uint16,stringOffset:V.uint16,records:new V.Array(Mt,"count"),langTagCount:V.uint16,langTags:new V.Array(zt,"langTagCount")}}),Ft=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];NameTable.process=function(t){for(var e={},n=this.records,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=Rt[a.platformID][a.languageID];null==s&&null!=this.langTags&&a.languageID>=32768&&(s=this.langTags[a.languageID-32768].tag),null==s&&(s=a.platformID+"-"+a.languageID);var u=a.nameID>=256?"fontFeatures":Ft[a.nameID]||a.nameID;null==e[u]&&(e[u]={});var c=e[u];a.nameID>=256&&(c=c[a.nameID]||(c[a.nameID]={})),c[s]=a.string}this.records=e},NameTable.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var t=[];for(var n in this.records){var r=this.records[n];"fontFeatures"!==n&&(t.push({platformID:3,encodingID:1,languageID:1033,nameID:Ft.indexOf(n),length:e.byteLength(r.en,"utf16le"),string:r.en}),"postscriptName"===n&&t.push({platformID:1,encodingID:0,languageID:0,nameID:Ft.indexOf(n),length:r.en.length,string:r.en}))}this.records=t,this.count=t.length,this.stringOffset=NameTable.size(this,null,!1)}};var Dt=new V.VersionedStruct(V.uint16,{header:{xAvgCharWidth:V.int16,usWeightClass:V.uint16,usWidthClass:V.uint16,fsType:new V.Bitfield(V.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:V.int16,ySubscriptYSize:V.int16,ySubscriptXOffset:V.int16,ySubscriptYOffset:V.int16,ySuperscriptXSize:V.int16,ySuperscriptYSize:V.int16,ySuperscriptXOffset:V.int16,ySuperscriptYOffset:V.int16,yStrikeoutSize:V.int16,yStrikeoutPosition:V.int16,sFamilyClass:V.int16,panose:new V.Array(V.uint8,10),ulCharRange:new V.Array(V.uint32,4),vendorID:new V.String(4),fsSelection:new V.Bitfield(V.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:V.uint16,usLastCharIndex:V.uint16},0:{},1:{typoAscender:V.int16,typoDescender:V.int16,typoLineGap:V.int16,winAscent:V.uint16,winDescent:V.uint16,codePageRange:new V.Array(V.uint32,2)},2:{typoAscender:V.int16,typoDescender:V.int16,typoLineGap:V.int16,winAscent:V.uint16,winDescent:V.uint16,codePageRange:new V.Array(V.uint32,2),xHeight:V.int16,capHeight:V.int16,defaultChar:V.uint16,breakChar:V.uint16,maxContent:V.uint16},5:{typoAscender:V.int16,typoDescender:V.int16,typoLineGap:V.int16,winAscent:V.uint16,winDescent:V.uint16,codePageRange:new V.Array(V.uint32,2),xHeight:V.int16,capHeight:V.int16,defaultChar:V.uint16,breakChar:V.uint16,maxContent:V.uint16,usLowerOpticalPointSize:V.uint16,usUpperOpticalPointSize:V.uint16}}),Nt=Dt.versions;Nt[3]=Nt[4]=Nt[2];var Ut=new V.VersionedStruct(V.fixed32,{header:{italicAngle:V.fixed32,underlinePosition:V.int16,underlineThickness:V.int16,isFixedPitch:V.uint32,minMemType42:V.uint32,maxMemType42:V.uint32,minMemType1:V.uint32,maxMemType1:V.uint32},1:{},2:{numberOfGlyphs:V.uint16,glyphNameIndex:new V.Array(V.uint16,"numberOfGlyphs"),names:new V.Array(new V.String(V.uint8))},2.5:{numberOfGlyphs:V.uint16,offsets:new V.Array(V.uint8,"numberOfGlyphs")},3:{},4:{map:new V.Array(V.uint32,function(t){return t.parent.maxp.numGlyphs})}}),Wt=new V.Struct({controlValues:new V.Array(V.int16)}),jt=new V.Struct({instructions:new V.Array(V.uint8)}),Gt=new V.VersionedStruct("head.indexToLocFormat",{0:{offsets:new V.Array(V.uint16)},1:{offsets:new V.Array(V.uint32)}});Gt.process=function(){if(0===this.version)for(var t=0;t65535?1:0,0===this.version))for(var t=0;t>>=1};var Vt=new V.Struct({controlValueProgram:new V.Array(V.uint8)}),qt=new V.Array(new V.Buffer),Ht=function(){function t(e){J(this,t),this.type=e}return t.prototype.decode=function(t,e){var n=t.readUInt16BE();if(0===n)return[];var r=t.readUInt8(),i=void 0;if(1===r)i=V.uint8;else if(2===r)i=V.uint16;else if(3===r)i=V.uint24;else{if(4!==r)throw new Error("Bad offset size in CFFIndex: "+r+" "+t.pos);i=V.uint32}for(var o=[],a=t.pos+(n+1)*r-1,s=i.decode(t),u=0;u=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c,f=r.size(l,n);i.push(f),o+=f}var h=void 0;if(o<=255)h=V.uint8;else if(o<=65535)h=V.uint16;else if(o<=16777215)h=V.uint24;else{if(!(o<=4294967295))throw new Error("Bad offset in CFFIndex");h=V.uint32}t.writeUInt8(h.size()),o=1,h.encode(t,o);for(var p=i,d=Array.isArray(p),g=0,p=d?p:H(p);;){var v;if(d){if(g>=p.length)break;v=p[g++]}else{if(g=p.next(),g.done)break;v=g.value}o+=v,h.encode(t,o)}for(var y=e,m=Array.isArray(y),b=0,y=m?y:H(y);;){var w;if(m){if(b>=y.length)break;w=y[b++]}else{if(b=y.next(),b.done)break;w=b.value}var x=w;r.encode(t,x,n)}}},t}(),Zt=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],Yt={".":10,E:11,"E-":12,"-":14},Kt=function(){function t(){J(this,t)}return t.decode=function(t,e){if(32<=e&&e<=246)return e-139;if(247<=e&&e<=250)return 256*(e-247)+t.readUInt8()+108;if(251<=e&&e<=254)return 256*-(e-251)-t.readUInt8()-108;if(28===e)return t.readInt16BE();if(29===e)return t.readInt32BE();if(30===e){for(var n="";;){var r=t.readUInt8(),i=r>>4;if(15===i)break;n+=Zt[i];var o=15&r;if(15===o)break;n+=Zt[o]}return parseFloat(n)}return null},t.size=function(t){if(t.forceLarge&&(t=32768),(0|t)!==t){var e=""+t;return 1+Math.ceil((e.length+1)/2)}return-107<=t&&t<=107?1:108<=t&&t<=1131||-1131<=t&&t<=-108?2:-32768<=t&&t<=32767?3:5},t.encode=function(t,e){var n=Number(e);if(e.forceLarge)return t.writeUInt8(29),t.writeInt32BE(n);if((0|n)===n)return-107<=n&&n<=107?t.writeUInt8(n+139):108<=n&&n<=1131?(n-=108,t.writeUInt8(247+(n>>8)),t.writeUInt8(255&n)):-1131<=n&&n<=-108?(n=-n-108,t.writeUInt8(251+(n>>8)),t.writeUInt8(255&n)):-32768<=n&&n<=32767?(t.writeUInt8(28),t.writeInt16BE(n)):(t.writeUInt8(29),t.writeInt32BE(n));t.writeUInt8(30);for(var r=""+n,i=0;i0&&void 0!==arguments[0]?arguments[0]:[];J(this,t),this.ops=e,this.fields={};for(var n=e,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=Array.isArray(a[0])?a[0][0]<<8|a[0][1]:a[0];this.fields[s]=a}}return t.prototype.decodeOperands=function(t,e,n,r){var i=this;if(Array.isArray(t))return r.map(function(r,o){return i.decodeOperands(t[o],e,n,[r])});if(null!=t.decode)return t.decode(e,n,r);switch(t){case"number":case"offset":case"sid":return r[0];case"boolean":return!!r[0];default:return r}},t.prototype.encodeOperands=function(t,e,n,r){var i=this;return Array.isArray(t)?r.map(function(r,o){return i.encodeOperands(t[o],e,n,r)[0]}):null!=t.encode?t.encode(e,r,n):"number"==typeof r?[r]:"boolean"==typeof r?[+r]:Array.isArray(r)?r:[r]},t.prototype.decode=function(t,e){var n=t.pos+e.length,r={},i=[];rt(r,{parent:{value:e},_startOffset:{value:t.pos}});for(var o in this.fields){var a=this.fields[o];r[a[1]]=a[3]}for(;t.pos2&&void 0!==arguments[2])||arguments[2],r={parent:e,val:t,pointerSize:0,startOffset:e.startOffset||0},i=0;for(var o in this.fields){var a=this.fields[o],s=t[a[1]];if(null!=s&&!it(s,a[3])){for(var u=this.encodeOperands(a[2],null,r,s),c=u,l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h;i+=Kt.size(p)}i+=(Array.isArray(a[0])?a[0]:[a[0]]).length}}return n&&(i+=r.pointerSize),i},t.prototype.encode=function(t,e,n){var r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0};r.pointerOffset=t.pos+this.size(e,r,!1);for(var i=this.ops,o=Array.isArray(i),a=0,i=o?i:H(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s,c=e[u[1]];if(null!=c&&!it(c,u[3])){for(var l=this.encodeOperands(u[2],t,r,c),f=l,h=Array.isArray(f),p=0,f=h?f:H(f);;){var d;if(h){if(p>=f.length)break;d=f[p++]}else{if(p=f.next(),p.done)break;d=p.value}var g=d;Kt.encode(t,g)}for(var v=Array.isArray(u[0])?u[0]:[u[0]],y=v,m=Array.isArray(y),b=0,y=m?y:H(y);;){var w;if(m){if(b>=y.length)break;w=y[b++]}else{if(b=y.next(),b.done)break;w=b.value}var x=w;t.writeUInt8(x)}}}for(var S=0;S1&&void 0!==arguments[1]?arguments[1]:{};return J(this,e),null==r.type&&(r.type="global"),tt(this,t.call(this,null,n,r))}return et(e,t),e.prototype.decode=function(e,n,r){return this.offsetType={decode:function(){return r[0]}},t.prototype.decode.call(this,e,n,r)},e.prototype.encode=function(e,n,r){if(!e)return this.offsetType={size:function(){return 0}},this.size(n,r),[new Qt(0)];var i=null;return this.offsetType={encode:function(t,e){return i=e}},t.prototype.encode.call(this,e,n,r),[new Qt(i)]},e}(V.Pointer),Qt=function(){function t(e){J(this,t),this.val=e,this.forceLarge=!0}return t.prototype.valueOf=function(){return this.val},t}(),$t=new Xt([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[19,"Subrs",new Jt(new Ht,{type:"local"}),null]]),te=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],ee=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],ne=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],re=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],ie=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],oe=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],ae=function(){function t(e,n){J(this,t),this.predefinedOps=e,this.type=n}return t.prototype.decode=function(t,e,n){return this.predefinedOps[n[0]]?this.predefinedOps[n[0]]:this.type.decode(t,e,n)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){var r=this.predefinedOps.indexOf(e);return r!==-1?r:this.type.encode(t,e,n)},t}(),se=function(t){function e(){return J(this,e),tt(this,t.call(this,"UInt8"))}return et(e,t),e.prototype.decode=function(t){return 127&V.uint8.decode(t)},e}(V.Number),ue=new V.Struct({first:V.uint16,nLeft:V.uint8}),ce=new V.Struct({first:V.uint16,nLeft:V.uint16}),le=new V.VersionedStruct(new se,{0:{nCodes:V.uint8,codes:new V.Array(V.uint8,"nCodes")},1:{nRanges:V.uint8,ranges:new V.Array(ue,"nRanges")}}),fe=new ae([ee,ne],new Jt(le,{lazy:!0})),he=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype.decode=function(t,e){for(var n=nt.resolveLength(this.length,t,e),r=0,i=[];r>1;if(te[i+1].first))return e[i].fd;n=i+1}}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},t.prototype.privateDictForGlyph=function(t){if(this.topDict.FDSelect){var e=this.fdForGlyph(t);return this.topDict.FDArray[e]?this.topDict.FDArray[e].Private:null}return this.topDict.Private},Q(t,[{key:"topDict",get:function(){return this.topDictIndex[0]}},{key:"postscriptName",get:function(){return this.nameIndex[0]}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),t}(),_e=new V.Struct({glyphIndex:V.uint16,vertOriginY:V.int16}),Ce=new V.Struct({majorVersion:V.uint16,minorVersion:V.uint16,defaultVertOriginY:V.int16,numVertOriginYMetrics:V.uint16,metrics:new V.Array(_e,"numVertOriginYMetrics")}),Ae=new V.Struct({height:V.uint8,width:V.uint8,horiBearingX:V.int8,horiBearingY:V.int8,horiAdvance:V.uint8,vertBearingX:V.int8,vertBearingY:V.int8,vertAdvance:V.uint8}),Ee=new V.Struct({height:V.uint8,width:V.uint8,bearingX:V.int8,bearingY:V.int8,advance:V.uint8}),Pe=new V.Struct({glyph:V.uint16,xOffset:V.int8,yOffset:V.int8}),Ie=function t(){J(this,t)},Oe=function t(){J(this,t)},Te=(new V.VersionedStruct("version",{1:{metrics:Ee,data:Ie},2:{metrics:Ee,data:Oe},5:{data:Oe},6:{metrics:Ae,data:Ie},7:{metrics:Ae,data:Oe},8:{metrics:Ee,pad:new V.Reserved(V.uint8),numComponents:V.uint16,components:new V.Array(Pe,"numComponents")},9:{metrics:Ae,pad:new V.Reserved(V.uint8),numComponents:V.uint16,components:new V.Array(Pe,"numComponents")},17:{metrics:Ee,dataLen:V.uint32,data:new V.Buffer("dataLen")},18:{metrics:Ae,dataLen:V.uint32,data:new V.Buffer("dataLen")},19:{dataLen:V.uint32,data:new V.Buffer("dataLen")}}),new V.Struct({ascender:V.int8,descender:V.int8,widthMax:V.uint8,caretSlopeNumerator:V.int8,caretSlopeDenominator:V.int8,caretOffset:V.int8,minOriginSB:V.int8,minAdvanceSB:V.int8,maxBeforeBL:V.int8,minAfterBL:V.int8,pad:new V.Reserved(V.int8,2)})),Le=new V.Struct({glyphCode:V.uint16,offset:V.uint16}),Be=new V.VersionedStruct(V.uint16,{header:{imageFormat:V.uint16,imageDataOffset:V.uint32},1:{offsetArray:new V.Array(V.uint32,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},2:{imageSize:V.uint32,bigMetrics:Ae},3:{offsetArray:new V.Array(V.uint16,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},4:{numGlyphs:V.uint32,glyphArray:new V.Array(Le,function(t){return t.numGlyphs+1})},5:{imageSize:V.uint32,bigMetrics:Ae,numGlyphs:V.uint32,glyphCodeArray:new V.Array(V.uint16,"numGlyphs")}}),Re=new V.Struct({firstGlyphIndex:V.uint16,lastGlyphIndex:V.uint16,subtable:new V.Pointer(V.uint32,Be)}),Me=new V.Struct({indexSubTableArray:new V.Pointer(V.uint32,new V.Array(Re,1),{type:"parent"}),indexTablesSize:V.uint32,numberOfIndexSubTables:V.uint32,colorRef:V.uint32,hori:Te,vert:Te,startGlyphIndex:V.uint16,endGlyphIndex:V.uint16,ppemX:V.uint8,ppemY:V.uint8,bitDepth:V.uint8,flags:new V.Bitfield(V.uint8,["horizontal","vertical"])}),ze=new V.Struct({version:V.uint32,numSizes:V.uint32,sizes:new V.Array(Me,"numSizes")}),Fe=new V.Struct({ppem:V.uint16,resolution:V.uint16,imageOffsets:new V.Array(new V.Pointer(V.uint32,"void"),function(t){return t.parent.parent.maxp.numGlyphs+1})}),De=new V.Struct({version:V.uint16,flags:new V.Bitfield(V.uint16,["renderOutlines"]),numImgTables:V.uint32,imageTables:new V.Array(new V.Pointer(V.uint32,Fe),"numImgTables")}),Ne=new V.Struct({gid:V.uint16,paletteIndex:V.uint16}),Ue=new V.Struct({gid:V.uint16,firstLayerIndex:V.uint16,numLayers:V.uint16}),We=new V.Struct({version:V.uint16,numBaseGlyphRecords:V.uint16,baseGlyphRecord:new V.Pointer(V.uint32,new V.Array(Ue,"numBaseGlyphRecords")),layerRecords:new V.Pointer(V.uint32,new V.Array(Ne,"numLayerRecords"),{lazy:!0}),numLayerRecords:V.uint16}),je=new V.Struct({blue:V.uint8,green:V.uint8,red:V.uint8,alpha:V.uint8}),Ge=new V.Struct({version:V.uint16,numPaletteEntries:V.uint16,numPalettes:V.uint16,numColorRecords:V.uint16,colorRecords:new V.Pointer(V.uint32,new V.Array(je,"numColorRecords")),colorRecordIndices:new V.Array(V.uint16,"numPalettes")}),Ve=new V.Struct({reserved:new V.Reserved(V.uint16),reqFeatureIndex:V.uint16,featureCount:V.uint16,featureIndexes:new V.Array(V.uint16,"featureCount")}),qe=new V.Struct({tag:new V.String(4),langSys:new V.Pointer(V.uint16,Ve,{type:"parent"})}),He=new V.Struct({defaultLangSys:new V.Pointer(V.uint16,Ve),count:V.uint16,langSysRecords:new V.Array(qe,"count")}),Ze=new V.Struct({tag:new V.String(4),script:new V.Pointer(V.uint16,He,{type:"parent"})}),Ye=new V.Array(Ze,V.uint16),Ke=new V.Struct({featureParams:V.uint16,lookupCount:V.uint16,lookupListIndexes:new V.Array(V.uint16,"lookupCount")}),Xe=new V.Struct({tag:new V.String(4),feature:new V.Pointer(V.uint16,Ke,{type:"parent"})}),Je=new V.Array(Xe,V.uint16),Qe=new V.Bitfield(V.uint16,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet",null,"markAttachmentType"]),$e=new V.Struct({start:V.uint16,end:V.uint16,startCoverageIndex:V.uint16}),tn=new V.VersionedStruct(V.uint16,{1:{glyphCount:V.uint16,glyphs:new V.Array(V.uint16,"glyphCount")},2:{rangeCount:V.uint16,rangeRecords:new V.Array($e,"rangeCount")}}),en=new V.Struct({start:V.uint16,end:V.uint16,class:V.uint16}),nn=new V.VersionedStruct(V.uint16,{1:{startGlyph:V.uint16,glyphCount:V.uint16,classValueArray:new V.Array(V.uint16,"glyphCount")},2:{classRangeCount:V.uint16,classRangeRecord:new V.Array(en,"classRangeCount")}}),rn=new V.Struct({startSize:V.uint16,endSize:V.uint16,deltaFormat:V.uint16}),on=new V.Struct({sequenceIndex:V.uint16,lookupListIndex:V.uint16}),an=new V.Struct({glyphCount:V.uint16,lookupCount:V.uint16,input:new V.Array(V.uint16,function(t){return t.glyphCount-1}),lookupRecords:new V.Array(on,"lookupCount")}),sn=new V.Array(new V.Pointer(V.uint16,an),V.uint16),un=new V.Struct({glyphCount:V.uint16,lookupCount:V.uint16,classes:new V.Array(V.uint16,function(t){return t.glyphCount-1}),lookupRecords:new V.Array(on,"lookupCount")}),cn=new V.Array(new V.Pointer(V.uint16,un),V.uint16),ln=new V.VersionedStruct(V.uint16,{1:{coverage:new V.Pointer(V.uint16,tn),ruleSetCount:V.uint16,ruleSets:new V.Array(new V.Pointer(V.uint16,sn),"ruleSetCount")},2:{coverage:new V.Pointer(V.uint16,tn),classDef:new V.Pointer(V.uint16,nn),classSetCnt:V.uint16,classSet:new V.Array(new V.Pointer(V.uint16,cn),"classSetCnt")},3:{glyphCount:V.uint16,lookupCount:V.uint16,coverages:new V.Array(new V.Pointer(V.uint16,tn),"glyphCount"),lookupRecords:new V.Array(on,"lookupCount")}}),fn=new V.Struct({backtrackGlyphCount:V.uint16,backtrack:new V.Array(V.uint16,"backtrackGlyphCount"),inputGlyphCount:V.uint16,input:new V.Array(V.uint16,function(t){return t.inputGlyphCount-1}),lookaheadGlyphCount:V.uint16,lookahead:new V.Array(V.uint16,"lookaheadGlyphCount"),lookupCount:V.uint16,lookupRecords:new V.Array(on,"lookupCount")}),hn=new V.Array(new V.Pointer(V.uint16,fn),V.uint16),pn=new V.VersionedStruct(V.uint16,{1:{coverage:new V.Pointer(V.uint16,tn),chainCount:V.uint16,chainRuleSets:new V.Array(new V.Pointer(V.uint16,hn),"chainCount")},2:{coverage:new V.Pointer(V.uint16,tn),backtrackClassDef:new V.Pointer(V.uint16,nn),inputClassDef:new V.Pointer(V.uint16,nn),lookaheadClassDef:new V.Pointer(V.uint16,nn),chainCount:V.uint16,chainClassSet:new V.Array(new V.Pointer(V.uint16,hn),"chainCount")},3:{backtrackGlyphCount:V.uint16,backtrackCoverage:new V.Array(new V.Pointer(V.uint16,tn),"backtrackGlyphCount"),inputGlyphCount:V.uint16,inputCoverage:new V.Array(new V.Pointer(V.uint16,tn),"inputGlyphCount"),lookaheadGlyphCount:V.uint16,lookaheadCoverage:new V.Array(new V.Pointer(V.uint16,tn),"lookaheadGlyphCount"),lookupCount:V.uint16,lookupRecords:new V.Array(on,"lookupCount")}}),dn=new V.VersionedStruct(V.uint16,{1:{coordinate:V.int16},2:{coordinate:V.int16,referenceGlyph:V.uint16,baseCoordPoint:V.uint16},3:{coordinate:V.int16,deviceTable:new V.Pointer(V.uint16,rn)}}),gn=new V.Struct({defaultIndex:V.uint16,baseCoordCount:V.uint16,baseCoords:new V.Array(new V.Pointer(V.uint16,dn),"baseCoordCount")}),vn=new V.Struct({tag:new V.String(4),minCoord:new V.Pointer(V.uint16,dn,{type:"parent"}),maxCoord:new V.Pointer(V.uint16,dn,{type:"parent"})}),yn=new V.Struct({minCoord:new V.Pointer(V.uint16,dn),maxCoord:new V.Pointer(V.uint16,dn),featMinMaxCount:V.uint16,featMinMaxRecords:new V.Array(vn,"featMinMaxCount")}),mn=new V.Struct({tag:new V.String(4),minMax:new V.Pointer(V.uint16,yn,{type:"parent"})}),bn=new V.Struct({baseValues:new V.Pointer(V.uint16,gn),defaultMinMax:new V.Pointer(V.uint16,yn),baseLangSysCount:V.uint16,baseLangSysRecords:new V.Array(mn,"baseLangSysCount")}),wn=new V.Struct({tag:new V.String(4),script:new V.Pointer(V.uint16,bn,{type:"parent"})}),xn=new V.Array(wn,V.uint16),Sn=new V.Array(new V.String(4),V.uint16),kn=new V.Struct({baseTagList:new V.Pointer(V.uint16,Sn),baseScriptList:new V.Pointer(V.uint16,xn)}),_n=new V.Struct({version:V.uint32,horizAxis:new V.Pointer(V.uint16,kn),vertAxis:new V.Pointer(V.uint16,kn)}),Cn=new V.Array(V.uint16,V.uint16),An=new V.Struct({coverage:new V.Pointer(V.uint16,tn),glyphCount:V.uint16,attachPoints:new V.Array(new V.Pointer(V.uint16,Cn),"glyphCount")}),En=new V.VersionedStruct(V.uint16,{1:{coordinate:V.int16},2:{caretValuePoint:V.uint16},3:{coordinate:V.int16,deviceTable:new V.Pointer(V.uint16,rn)}}),Pn=new V.Array(new V.Pointer(V.uint16,En),V.uint16),In=new V.Struct({coverage:new V.Pointer(V.uint16,tn),ligGlyphCount:V.uint16,ligGlyphs:new V.Array(new V.Pointer(V.uint16,Pn),"ligGlyphCount")}),On=new V.Struct({ +markSetTableFormat:V.uint16,markSetCount:V.uint16,coverage:new V.Array(new V.Pointer(V.uint32,tn),"markSetCount")}),Tn=new V.VersionedStruct(V.uint32,{65536:{glyphClassDef:new V.Pointer(V.uint16,nn),attachList:new V.Pointer(V.uint16,An),ligCaretList:new V.Pointer(V.uint16,In),markAttachClassDef:new V.Pointer(V.uint16,nn)},65538:{glyphClassDef:new V.Pointer(V.uint16,nn),attachList:new V.Pointer(V.uint16,An),ligCaretList:new V.Pointer(V.uint16,In),markAttachClassDef:new V.Pointer(V.uint16,nn),markGlyphSetsDef:new V.Pointer(V.uint16,On)}}),Ln=new V.Bitfield(V.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),Bn={xPlacement:V.int16,yPlacement:V.int16,xAdvance:V.int16,yAdvance:V.int16,xPlaDevice:new V.Pointer(V.uint16,rn,{type:"global",relativeTo:"rel"}),yPlaDevice:new V.Pointer(V.uint16,rn,{type:"global",relativeTo:"rel"}),xAdvDevice:new V.Pointer(V.uint16,rn,{type:"global",relativeTo:"rel"}),yAdvDevice:new V.Pointer(V.uint16,rn,{type:"global",relativeTo:"rel"})},Rn=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"valueFormat";J(this,t),this.key=e}return t.prototype.buildStruct=function(t){for(var e=t;!e[this.key]&&e.parent;)e=e.parent;if(e[this.key]){var n={};n.rel=function(){return e._startOffset};var r=e[this.key];for(var i in r)r[i]&&(n[i]=Bn[i]);return new V.Struct(n)}},t.prototype.size=function(t,e){return this.buildStruct(e).size(t,e)},t.prototype.decode=function(t,e){var n=this.buildStruct(e).decode(t,e);return delete n.rel,n},t}(),Mn=new V.Struct({secondGlyph:V.uint16,value1:new Rn("valueFormat1"),value2:new Rn("valueFormat2")}),zn=new V.Array(Mn,V.uint16),Fn=new V.Struct({value1:new Rn("valueFormat1"),value2:new Rn("valueFormat2")}),Dn=new V.VersionedStruct(V.uint16,{1:{xCoordinate:V.int16,yCoordinate:V.int16},2:{xCoordinate:V.int16,yCoordinate:V.int16,anchorPoint:V.uint16},3:{xCoordinate:V.int16,yCoordinate:V.int16,xDeviceTable:new V.Pointer(V.uint16,rn),yDeviceTable:new V.Pointer(V.uint16,rn)}}),Nn=new V.Struct({entryAnchor:new V.Pointer(V.uint16,Dn,{type:"parent"}),exitAnchor:new V.Pointer(V.uint16,Dn,{type:"parent"})}),Un=new V.Struct({class:V.uint16,markAnchor:new V.Pointer(V.uint16,Dn,{type:"parent"})}),Wn=new V.Array(Un,V.uint16),jn=new V.Array(new V.Pointer(V.uint16,Dn),function(t){return t.parent.classCount}),Gn=new V.Array(jn,V.uint16),Vn=new V.Array(new V.Pointer(V.uint16,Dn),function(t){return t.parent.parent.classCount}),qn=new V.Array(Vn,V.uint16),Hn=new V.Array(new V.Pointer(V.uint16,qn),V.uint16),Zn=new V.VersionedStruct("lookupType",{1:new V.VersionedStruct(V.uint16,{1:{coverage:new V.Pointer(V.uint16,tn),valueFormat:Ln,value:new Rn},2:{coverage:new V.Pointer(V.uint16,tn),valueFormat:Ln,valueCount:V.uint16,values:new V.LazyArray(new Rn,"valueCount")}}),2:new V.VersionedStruct(V.uint16,{1:{coverage:new V.Pointer(V.uint16,tn),valueFormat1:Ln,valueFormat2:Ln,pairSetCount:V.uint16,pairSets:new V.LazyArray(new V.Pointer(V.uint16,zn),"pairSetCount")},2:{coverage:new V.Pointer(V.uint16,tn),valueFormat1:Ln,valueFormat2:Ln,classDef1:new V.Pointer(V.uint16,nn),classDef2:new V.Pointer(V.uint16,nn),class1Count:V.uint16,class2Count:V.uint16,classRecords:new V.LazyArray(new V.LazyArray(Fn,"class2Count"),"class1Count")}}),3:{format:V.uint16,coverage:new V.Pointer(V.uint16,tn),entryExitCount:V.uint16,entryExitRecords:new V.Array(Nn,"entryExitCount")},4:{format:V.uint16,markCoverage:new V.Pointer(V.uint16,tn),baseCoverage:new V.Pointer(V.uint16,tn),classCount:V.uint16,markArray:new V.Pointer(V.uint16,Wn),baseArray:new V.Pointer(V.uint16,Gn)},5:{format:V.uint16,markCoverage:new V.Pointer(V.uint16,tn),ligatureCoverage:new V.Pointer(V.uint16,tn),classCount:V.uint16,markArray:new V.Pointer(V.uint16,Wn),ligatureArray:new V.Pointer(V.uint16,Hn)},6:{format:V.uint16,mark1Coverage:new V.Pointer(V.uint16,tn),mark2Coverage:new V.Pointer(V.uint16,tn),classCount:V.uint16,mark1Array:new V.Pointer(V.uint16,Wn),mark2Array:new V.Pointer(V.uint16,Gn)},7:ln,8:pn,9:{posFormat:V.uint16,lookupType:V.uint16,extension:new V.Pointer(V.uint32,Zn)}});Zn.versions[9].extension.type=Zn;var Yn=new V.Struct({version:V.int32,scriptList:new V.Pointer(V.uint16,Ye),featureList:new V.Pointer(V.uint16,Je),lookupList:new V.Pointer(V.uint16,new s(Zn))}),Kn=new V.Array(V.uint16,V.uint16),Xn=Kn,Jn=new V.Struct({glyph:V.uint16,compCount:V.uint16,components:new V.Array(V.uint16,function(t){return t.compCount-1})}),Qn=new V.Array(new V.Pointer(V.uint16,Jn),V.uint16),$n=new V.VersionedStruct("lookupType",{1:new V.VersionedStruct(V.uint16,{1:{coverage:new V.Pointer(V.uint16,tn),deltaGlyphID:V.int16},2:{coverage:new V.Pointer(V.uint16,tn),glyphCount:V.uint16,substitute:new V.LazyArray(V.uint16,"glyphCount")}}),2:{substFormat:V.uint16,coverage:new V.Pointer(V.uint16,tn),count:V.uint16,sequences:new V.LazyArray(new V.Pointer(V.uint16,Kn),"count")},3:{substFormat:V.uint16,coverage:new V.Pointer(V.uint16,tn),count:V.uint16,alternateSet:new V.LazyArray(new V.Pointer(V.uint16,Xn),"count")},4:{substFormat:V.uint16,coverage:new V.Pointer(V.uint16,tn),count:V.uint16,ligatureSets:new V.LazyArray(new V.Pointer(V.uint16,Qn),"count")},5:ln,6:pn,7:{substFormat:V.uint16,lookupType:V.uint16,extension:new V.Pointer(V.uint32,$n)},8:{substFormat:V.uint16,coverage:new V.Pointer(V.uint16,tn),backtrackCoverage:new V.Array(new V.Pointer(V.uint16,tn),"backtrackGlyphCount"),lookaheadGlyphCount:V.uint16,lookaheadCoverage:new V.Array(new V.Pointer(V.uint16,tn),"lookaheadGlyphCount"),glyphCount:V.uint16,substitutes:new V.Array(V.uint16,"glyphCount")}});$n.versions[7].extension.type=$n;var tr=new V.Struct({version:V.int32,scriptList:new V.Pointer(V.uint16,Ye),featureList:new V.Pointer(V.uint16,Je),lookupList:new V.Pointer(V.uint16,new s($n))}),er=new V.Array(V.uint16,V.uint16),nr=new V.Struct({shrinkageEnableGSUB:new V.Pointer(V.uint16,er),shrinkageDisableGSUB:new V.Pointer(V.uint16,er),shrinkageEnableGPOS:new V.Pointer(V.uint16,er),shrinkageDisableGPOS:new V.Pointer(V.uint16,er),shrinkageJstfMax:new V.Pointer(V.uint16,new s(Zn)),extensionEnableGSUB:new V.Pointer(V.uint16,er),extensionDisableGSUB:new V.Pointer(V.uint16,er),extensionEnableGPOS:new V.Pointer(V.uint16,er),extensionDisableGPOS:new V.Pointer(V.uint16,er),extensionJstfMax:new V.Pointer(V.uint16,new s(Zn))}),rr=new V.Array(new V.Pointer(V.uint16,nr),V.uint16),ir=new V.Struct({tag:new V.String(4),jstfLangSys:new V.Pointer(V.uint16,rr)}),or=new V.Struct({extenderGlyphs:new V.Pointer(V.uint16,new V.Array(V.uint16,V.uint16)),defaultLangSys:new V.Pointer(V.uint16,rr),langSysCount:V.uint16,langSysRecords:new V.Array(ir,"langSysCount")}),ar=new V.Struct({tag:new V.String(4),script:new V.Pointer(V.uint16,or,{type:"parent"})}),sr=new V.Struct({version:V.uint32,scriptCount:V.uint16,scriptList:new V.Array(ar,"scriptCount")}),ur=new V.Struct({format:V.uint32,length:V.uint32,offset:V.uint32}),cr=new V.Struct({reserved:new V.Reserved(V.uint16,2),cbSignature:V.uint32,signature:new V.Buffer("cbSignature")}),lr=new V.Struct({ulVersion:V.uint32,usNumSigs:V.uint16,usFlag:V.uint16,signatures:new V.Array(ur,"usNumSigs"),signatureBlocks:new V.Array(cr,"usNumSigs")}),fr=new V.Struct({rangeMaxPPEM:V.uint16,rangeGaspBehavior:new V.Bitfield(V.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),hr=new V.Struct({version:V.uint16,numRanges:V.uint16,gaspRanges:new V.Array(fr,"numRanges")}),pr=new V.Struct({pixelSize:V.uint8,maximumWidth:V.uint8,widths:new V.Array(V.uint8,function(t){return t.parent.parent.maxp.numGlyphs})}),dr=new V.Struct({version:V.uint16,numRecords:V.int16,sizeDeviceRecord:V.int32,records:new V.Array(pr,"numRecords")}),gr=new V.Struct({left:V.uint16,right:V.uint16,value:V.int16}),vr=new V.Struct({firstGlyph:V.uint16,nGlyphs:V.uint16,offsets:new V.Array(V.uint16,"nGlyphs"),max:function(t){return t.offsets.length&&Math.max.apply(Math,t.offsets)}}),yr=new V.Struct({off:function(t){return t._startOffset-t.parent.parent._startOffset},len:function(t){return((t.parent.leftTable.max-t.off)/t.parent.rowWidth+1)*(t.parent.rowWidth/2)},values:new V.LazyArray(V.int16,"len")}),mr=new V.VersionedStruct("format",{0:{nPairs:V.uint16,searchRange:V.uint16,entrySelector:V.uint16,rangeShift:V.uint16,pairs:new V.Array(gr,"nPairs")},2:{rowWidth:V.uint16,leftTable:new V.Pointer(V.uint16,vr,{type:"parent"}),rightTable:new V.Pointer(V.uint16,vr,{type:"parent"}),array:new V.Pointer(V.uint16,yr,{type:"parent"})},3:{glyphCount:V.uint16,kernValueCount:V.uint8,leftClassCount:V.uint8,rightClassCount:V.uint8,flags:V.uint8,kernValue:new V.Array(V.int16,"kernValueCount"),leftClass:new V.Array(V.uint8,"glyphCount"),rightClass:new V.Array(V.uint8,"glyphCount"),kernIndex:new V.Array(V.uint8,function(t){return t.leftClassCount*t.rightClassCount})}}),br=new V.VersionedStruct("version",{0:{subVersion:V.uint16,length:V.uint16,format:V.uint8,coverage:new V.Bitfield(V.uint8,["horizontal","minimum","crossStream","override"]),subtable:mr,padding:new V.Reserved(V.uint8,function(t){return t.length-t._currentOffset})},1:{length:V.uint32,coverage:new V.Bitfield(V.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:V.uint8,tupleIndex:V.uint16,subtable:mr,padding:new V.Reserved(V.uint8,function(t){return t.length-t._currentOffset})}}),wr=new V.VersionedStruct(V.uint16,{0:{nTables:V.uint16,tables:new V.Array(br,"nTables")},1:{reserved:new V.Reserved(V.uint16),nTables:V.uint32,tables:new V.Array(br,"nTables")}}),xr=new V.Struct({version:V.uint16,numGlyphs:V.uint16,yPels:new V.Array(V.uint8,"numGlyphs")}),Sr=new V.Struct({version:V.uint16,fontNumber:V.uint32,pitch:V.uint16,xHeight:V.uint16,style:V.uint16,typeFamily:V.uint16,capHeight:V.uint16,symbolSet:V.uint16,typeface:new V.String(16),characterComplement:new V.String(8),fileName:new V.String(6),strokeWeight:new V.String(1),widthType:new V.String(1),serifStyle:V.uint8,reserved:new V.Reserved(V.uint8)}),kr=new V.Struct({bCharSet:V.uint8,xRatio:V.uint8,yStartRatio:V.uint8,yEndRatio:V.uint8}),_r=new V.Struct({yPelHeight:V.uint16,yMax:V.int16,yMin:V.int16}),Cr=new V.Struct({recs:V.uint16,startsz:V.uint8,endsz:V.uint8,entries:new V.Array(_r,"recs")}),Ar=new V.Struct({version:V.uint16,numRecs:V.uint16,numRatios:V.uint16,ratioRanges:new V.Array(kr,"numRatios"),offsets:new V.Array(V.uint16,"numRatios"),groups:new V.Array(Cr,"numRecs")}),Er=new V.Struct({version:V.uint16,ascent:V.int16,descent:V.int16,lineGap:V.int16,advanceHeightMax:V.int16,minTopSideBearing:V.int16,minBottomSideBearing:V.int16,yMaxExtent:V.int16,caretSlopeRise:V.int16,caretSlopeRun:V.int16,caretOffset:V.int16,reserved:new V.Reserved(V.int16,4),metricDataFormat:V.int16,numberOfMetrics:V.uint16}),Pr=new V.Struct({advance:V.uint16,bearing:V.int16}),Ir=new V.Struct({metrics:new V.LazyArray(Pr,function(t){return t.parent.vhea.numberOfMetrics}),bearings:new V.LazyArray(V.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.vhea.numberOfMetrics})}),Or=new V.Fixed(16,"BE",14),Tr=new V.Struct({fromCoord:Or,toCoord:Or}),Lr=new V.Struct({pairCount:V.uint16,correspondence:new V.Array(Tr,"pairCount")}),Br=new V.Struct({version:V.fixed32,axisCount:V.uint32,segment:new V.Array(Lr,"axisCount")}),Rr=function(){function t(e,n,r){J(this,t),this.type=e,this.stream=n,this.parent=r,this.base=this.stream.pos,this._items=[]}return t.prototype.getItem=function(t){if(null==this._items[t]){var e=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*t,this._items[t]=this.type.decode(this.stream,this.parent),this.stream.pos=e}return this._items[t]},t.prototype.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},t}(),Mr=function(t){function e(n){return J(this,e),tt(this,t.call(this,n,0))}return et(e,t),e.prototype.decode=function(t,e){return new Rr(this.type,t,e)},e}(V.Array),zr=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V.uint16;t=new(function(){function t(e){J(this,t),this.type=e}return t.prototype.decode=function(t,e){return e=e.parent.parent,this.type.decode(t,e)},t.prototype.size=function(t,e){return e=e.parent.parent,this.type.size(t,e)},t.prototype.encode=function(t,e,n){return n=n.parent.parent,this.type.encode(t,e,n)},t}())(t);var e=new V.Struct({unitSize:V.uint16,nUnits:V.uint16,searchRange:V.uint16,entrySelector:V.uint16,rangeShift:V.uint16}),n=new V.Struct({lastGlyph:V.uint16,firstGlyph:V.uint16,value:t}),r=new V.Struct({lastGlyph:V.uint16,firstGlyph:V.uint16,values:new V.Pointer(V.uint16,new V.Array(t,function(t){return t.lastGlyph-t.firstGlyph+1}),{type:"parent"})}),i=new V.Struct({glyph:V.uint16,value:t});return new V.VersionedStruct(V.uint16,{0:{values:new Mr(t)},2:{binarySearchHeader:e,segments:new V.Array(n,function(t){return t.binarySearchHeader.nUnits})},4:{binarySearchHeader:e,segments:new V.Array(r,function(t){return t.binarySearchHeader.nUnits})},6:{binarySearchHeader:e,segments:new V.Array(i,function(t){return t.binarySearchHeader.nUnits})},8:{firstGlyph:V.uint16,count:V.uint16,values:new V.Array(t,"count")}})},Fr=new V.VersionedStruct("format",{0:{deltas:new V.Array(V.int16,32)},1:{deltas:new V.Array(V.int16,32),mappingData:new zr(V.uint16)},2:{standardGlyph:V.uint16,controlPoints:new V.Array(V.uint16,32)},3:{standardGlyph:V.uint16,controlPoints:new V.Array(V.uint16,32),mappingData:new zr(V.uint16)}}),Dr=new V.Struct({version:V.fixed32,format:V.uint16,defaultBaseline:V.uint16,subtable:Fr}),Nr=new V.Struct({setting:V.uint16,nameIndex:V.int16,name:function(t){return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]}}),Ur=new V.Struct({feature:V.uint16,nSettings:V.uint16,settingTable:new V.Pointer(V.uint32,new V.Array(Nr,"nSettings"),{type:"parent"}),featureFlags:new V.Bitfield(V.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:V.uint8,nameIndex:V.int16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameIndex]}}),Wr=new V.Struct({version:V.fixed32,featureNameCount:V.uint16,reserved1:new V.Reserved(V.uint16),reserved2:new V.Reserved(V.uint32),featureNames:new V.Array(Ur,"featureNameCount")}),jr=new V.Struct({axisTag:new V.String(4),minValue:V.fixed32,defaultValue:V.fixed32,maxValue:V.fixed32,flags:V.uint16,nameID:V.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]}}),Gr=new V.Struct({nameID:V.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]},flags:V.uint16,coord:new V.Array(V.fixed32,function(t){return t.parent.axisCount})}),Vr=new V.Struct({version:V.fixed32,offsetToData:V.uint16,countSizePairs:V.uint16,axisCount:V.uint16,axisSize:V.uint16,instanceCount:V.uint16,instanceSize:V.uint16,axis:new V.Array(jr,"axisCount"),instance:new V.Array(Gr,"instanceCount")}),qr=new V.Fixed(16,"BE",14),Hr=function(){function t(){J(this,t)}return t.decode=function(t,e){return e.flags?t.readUInt32BE():2*t.readUInt16BE()},t}(),Zr=new V.Struct({version:V.uint16,reserved:new V.Reserved(V.uint16),axisCount:V.uint16,globalCoordCount:V.uint16,globalCoords:new V.Pointer(V.uint32,new V.Array(new V.Array(qr,"axisCount"),"globalCoordCount")),glyphCount:V.uint16,flags:V.uint16,offsetToData:V.uint32,offsets:new V.Array(new V.Pointer(Hr,"void",{relativeTo:"offsetToData",allowNull:!1}),function(t){return t.glyphCount+1})}),Yr=new V.Struct({length:V.uint16,coverage:V.uint16,subFeatureFlags:V.uint32,stateTable:new c}),Kr=new V.Struct({justClass:V.uint32,beforeGrowLimit:V.fixed32,beforeShrinkLimit:V.fixed32,afterGrowLimit:V.fixed32,afterShrinkLimit:V.fixed32,growFlags:V.uint16,shrinkFlags:V.uint16}),Xr=new V.Array(Kr,V.uint32),Jr=new V.VersionedStruct("actionType",{0:{lowerLimit:V.fixed32,upperLimit:V.fixed32,order:V.uint16,glyphs:new V.Array(V.uint16,V.uint16)},1:{addGlyph:V.uint16},2:{substThreshold:V.fixed32,addGlyph:V.uint16,substGlyph:V.uint16},3:{},4:{variationAxis:V.uint32,minimumLimit:V.fixed32,noStretchValue:V.fixed32,maximumLimit:V.fixed32},5:{flags:V.uint16,glyph:V.uint16}}),Qr=new V.Struct({actionClass:V.uint16,actionType:V.uint16,actionLength:V.uint32,actionData:Jr,padding:new V.Reserved(V.uint8,function(t){return t.actionLength-t._currentOffset})}),$r=new V.Array(Qr,V.uint32),ti=new V.Struct({lookupTable:new zr(new V.Pointer(V.uint16,$r))}),ei=new V.Struct({classTable:new V.Pointer(V.uint16,Yr,{type:"parent"}),wdcOffset:V.uint16,postCompensationTable:new V.Pointer(V.uint16,ti,{type:"parent"}),widthDeltaClusters:new zr(new V.Pointer(V.uint16,Xr,{type:"parent",relativeTo:"wdcOffset"}))}),ni=new V.Struct({version:V.uint32,format:V.uint16,horizontal:new V.Pointer(V.uint16,ei),vertical:new V.Pointer(V.uint16,ei)}),ri={action:V.uint16},ii={markIndex:V.uint16,currentIndex:V.uint16},oi={currentInsertIndex:V.uint16,markedInsertIndex:V.uint16},ai=new V.Struct({items:new Mr(new V.Pointer(V.uint32,new zr))}),si=new V.VersionedStruct("type",{0:{stateTable:new u},1:{stateTable:new u(ii),substitutionTable:new V.Pointer(V.uint32,ai)},2:{stateTable:new u(ri),ligatureActions:new V.Pointer(V.uint32,new Mr(V.uint32)),components:new V.Pointer(V.uint32,new Mr(V.uint16)),ligatureList:new V.Pointer(V.uint32,new Mr(V.uint16))},4:{lookupTable:new zr},5:{stateTable:new u(oi),insertionActions:new V.Pointer(V.uint32,new Mr(V.uint16))}}),ui=new V.Struct({length:V.uint32,coverage:V.uint24,type:V.uint8,subFeatureFlags:V.uint32,table:si,padding:new V.Reserved(V.uint8,function(t){return t.length-t._currentOffset})}),ci=new V.Struct({featureType:V.uint16,featureSetting:V.uint16,enableFlags:V.uint32,disableFlags:V.uint32}),li=new V.Struct({defaultFlags:V.uint32,chainLength:V.uint32,nFeatureEntries:V.uint32,nSubtables:V.uint32,features:new V.Array(ci,"nFeatureEntries"),subtables:new V.Array(ui,"nSubtables")}),fi=new V.Struct({version:V.uint16,unused:new V.Reserved(V.uint16),nChains:V.uint32,chains:new V.Array(li,"nChains")}),hi=new V.Struct({left:V.int16,top:V.int16,right:V.int16,bottom:V.int16}),pi=new V.Struct({version:V.fixed32,format:V.uint16,lookupTable:new zr(hi)}),di={};di.cmap=At,di.head=Et,di.hhea=Pt,di.hmtx=Ot,di.maxp=Tt,di.name=NameTable,di["OS/2"]=Dt,di.post=Ut,di.fpgm=jt,di.loca=Gt,di.prep=Vt,di["cvt "]=Wt,di.glyf=qt,di["CFF "]=ke,di.VORG=Ce,di.EBLC=ze,di.CBLC=di.EBLC,di.sbix=De,di.COLR=We,di.CPAL=Ge,di.BASE=_n,di.GDEF=Tn,di.GPOS=Yn,di.GSUB=tr,di.JSTF=sr,di.DSIG=lr,di.gasp=hr,di.hdmx=dr,di.kern=wr,di.LTSH=xr,di.PCLT=Sr,di.VDMX=Ar,di.vhea=Er,di.vmtx=Ir,di.avar=Br,di.bsln=Dr,di.feat=Wr,di.fvar=Vr,di.gvar=Zr,di.just=ni,di.morx=fi,di.opbd=pi;var gi=new V.Struct({tag:new V.String(4),checkSum:V.uint32,offset:new V.Pointer(V.uint32,"void",{type:"global"}),length:V.uint32}),vi=new V.Struct({tag:new V.String(4),numTables:V.uint16,searchRange:V.uint16,entrySelector:V.uint16,rangeShift:V.uint16,tables:new V.Array(gi,"numTables")});vi.process=function(){for(var t={},e=this.tables,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.tag]=o}this.tables=t},vi.preEncode=function(t){var e=[];for(var n in this.tables){var r=this.tables[n];r&&e.push({tag:n,checkSum:0,offset:new V.VoidPointer(di[n],r),length:di[n].size(r)})}this.tag="true",this.numTables=e.length,this.tables=e,this.searchRange=16*Math.floor(Math.log(this.numTables)/Math.LN2),this.entrySelector=Math.floor(this.searchRange/Math.LN2),this.rangeShift=16*this.numTables-this.searchRange};var yi;try{var mi=n(84)}catch(t){}for(var bi=(yi=function(){function t(e){if(J(this,t),this.encoding=null,this.cmap=this.findSubtable(e,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0],[3,0]]),!this.cmap&&mi)for(var n=e.tables,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o,u=a(s.platformID,s.encodingID,s.table.language-1);mi.encodingExists(u)&&(this.cmap=s.table,this.encoding=u)}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(e,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}return t.prototype.findSubtable=function(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a[0],u=a[1],c=t.tables,l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h;if(p.platformID===s&&p.encodingID===u)return p.table}}return null},t.prototype.lookup=function(t,e){if(this.encoding){var n=mi.encode(at(t),this.encoding);t=0;for(var r=0;r>1;if(to.endCode.get(u))){var c=o.idRangeOffset.get(u),l=void 0;if(0===c)l=t+o.idDelta.get(u);else{var f=c/2+(t-o.startCode.get(u))-(o.segCount-u);l=o.glyphIndexArray.get(f)||0,0!==l&&(l+=o.idDelta.get(u))}return 65535&l}a=u+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return o.glyphIndices.get(t-o.firstCode)||0;case 12:case 13:for(var h=0,p=o.nGroups-1;h<=p;){var d=h+p>>1,g=o.groups.get(d);if(tg.endCharCode))return 12===o.version?g.glyphID+(t-g.startCharCode):g.glyphID;h=d+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+o.version)}},t.prototype.getVariationSelector=function(t,e){if(!this.uvs)return 0;var n=this.uvs.varSelectors.toArray(),r=l(n,function(t){return e-t.varSelector}),i=n[r];return r!==-1&&i.defaultUVS&&(r=l(i.defaultUVS,function(e){return te.startUnicodeValue+e.additionalCount?1:0})),r!==-1&&i.nonDefaultUVS&&(r=l(i.nonDefaultUVS,function(e){return t-e.unicodeValue}))!==-1?i.nonDefaultUVS[r].glyphID:0},t.prototype.getCharacterSet=function(){var t=this.cmap;switch(t.version){case 0:return f(0,t.codeMap.length);case 4:for(var e=[],n=t.endCode.toArray(),r=0;r=s.length)break;l=s[c++]}else{if(c=s.next(),c.done)break;l=c.value}var h=l;a.push.apply(a,f(h.startCharCode,h.endCharCode+1))}return a;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+t.version)}},t.prototype.codePointsForGlyph=function(t){var e=this.cmap;switch(e.version){case 0:for(var n=[],r=0;r<256;r++)e.codeMap.get(r)===t&&n.push(r);return n;case 4:for(var i=[],o=0;o=g.length)break;m=g[y++]}else{if(y=g.next(),y.done)break;m=y.value}var b=m;t>=b.glyphID&&t<=b.glyphID+(b.endCharCode-b.startCharCode)&&d.push(b.startCharCode+(t-b.glyphID))}return d;case 13:for(var w=[],x=e.groups.toArray(),S=Array.isArray(x),k=0,x=S?x:H(x);;){var _;if(S){if(k>=x.length)break;_=x[k++]}else{if(k=x.next(),k.done)break;_=k.value}var C=_;t===C.glyphID&&w.push.apply(w,f(C.startCharCode,C.endCharCode+1))}return w;default:throw new Error("Unknown cmap format "+e.version)}},t}(),h(yi.prototype,"getCharacterSet",[o],q(yi.prototype,"getCharacterSet"),yi.prototype),h(yi.prototype,"codePointsForGlyph",[o],q(yi.prototype,"codePointsForGlyph"),yi.prototype),yi),wi=function(){function t(e){J(this,t),this.kern=e.kern}return t.prototype.process=function(t,e){for(var n=0;n=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(!s.coverage.crossStream){switch(s.version){case 0:if(!s.coverage.horizontal)continue;break;case 1:if(s.coverage.vertical||s.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version "+s.version)}var u=0,c=s.subtable;switch(s.format){case 0:var f=l(c.pairs,function(n){return t-n.left||e-n.right});f>=0&&(u=c.pairs[f].value);break;case 2:var h=0,p=0;h=t>=c.leftTable.firstGlyph&&t=c.rightTable.firstGlyph&&e=c.glyphCount||e>=c.glyphCount)return 0;u=c.kernValue[c.kernIndex[c.leftClass[t]*c.rightClassCount+c.rightClass[e]]];break;default:throw new Error("Unsupported kerning sub-table format "+s.format)}s.coverage.override?n=u:n+=u}}return n},t}(),xi=function(){function t(e){J(this,t),this.font=e}return t.prototype.positionGlyphs=function(t,e){for(var n=0,r=0,i=0;i1&&(o.minX+=(i.codePoints.length-1)*o.width/i.codePoints.length);for(var a=-e[n].xAdvance,s=0,u=this.font.unitsPerEm/16,c=n+1;c<=r;c++){var l=t[c],f=l.cbox,h=e[c],p=this.getCombiningClass(l.codePoints[0]);if("Not_Reordered"!==p){switch(h.xOffset=h.yOffset=0,p){case"Double_Above":case"Double_Below":h.xOffset+=o.minX-f.width/2-f.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":h.xOffset+=o.minX-f.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":h.xOffset+=o.maxX-f.width-f.minX;break;default:h.xOffset+=o.minX+(o.width-f.width)/2-f.minX}switch(p){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==p&&"Attached_Below"!==p||(o.minY+=u),h.yOffset=-o.minY-f.maxY,o.minY+=f.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==p&&"Attached_Above_Right"!==p||(o.maxY+=u),h.yOffset=o.maxY-f.minY,o.maxY+=f.height}h.xAdvance=h.yAdvance=0,h.xOffset+=a,h.yOffset+=s}else a-=h.xAdvance,s-=h.yAdvance}},t.prototype.getCombiningClass=function(t){var e=ct.getCombiningClass(t);if(3584==(t&-256))if("Not_Reordered"===e)switch(t){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===t)return"Below_Right";switch(e){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return e},t}(),Si=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-(1/0),i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-(1/0);J(this,t),this.minX=e,this.minY=n,this.maxX=r,this.maxY=i}return t.prototype.addPoint=function(t,e){tthis.maxX&&(this.maxX=t),e>this.maxY&&(this.maxY=e)},t.prototype.copy=function(){return new t(this.minX,this.minY,this.maxX,this.maxY)},Q(t,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),t}(),ki=function(){function t(e,n){J(this,t),this.glyphs=e,this.positions=n}return Q(t,[{key:"advanceWidth",get:function(){for(var t=0,e=this.positions,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}t+=i.xAdvance}return t}},{key:"advanceHeight",get:function(){for(var t=0,e=this.positions,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}t+=i.yAdvance}return t}},{key:"bbox",get:function(){for(var t=new Si,e=0,n=0,r=0;r0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;J(this,t),this.xAdvance=e,this.yAdvance=n,this.xOffset=r,this.yOffset=i},Ci={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:"orya",Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:"taml",Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},Ai={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0},Ei={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20}, +cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},Pi=function(t,e){return[Ei[t].code,Ei[t][e]]},Ii={rlig:Pi("ligatures","requiredLigatures"),clig:Pi("ligatures","contextualLigatures"),dlig:Pi("ligatures","rareLigatures"),hlig:Pi("ligatures","historicalLigatures"),liga:Pi("ligatures","commonLigatures"),hist:Pi("ligatures","historicalLigatures"),smcp:Pi("lowerCase","lowerCaseSmallCaps"),pcap:Pi("lowerCase","lowerCasePetiteCaps"),frac:Pi("fractions","diagonalFractions"),dnom:Pi("fractions","diagonalFractions"),numr:Pi("fractions","diagonalFractions"),afrc:Pi("fractions","verticalFractions"),case:Pi("caseSensitiveLayout","caseSensitiveLayout"),ccmp:Pi("unicodeDecomposition","canonicalComposition"),cpct:Pi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:Pi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:Pi("contextualAlternates","swashAlternates"),cswh:Pi("contextualAlternates","contextualSwashAlternates"),curs:Pi("cursiveConnection","cursive"),c2pc:Pi("upperCase","upperCasePetiteCaps"),c2sc:Pi("upperCase","upperCaseSmallCaps"),init:Pi("smartSwash","wordInitialSwashes"),fin2:Pi("smartSwash","wordFinalSwashes"),medi:Pi("smartSwash","nonFinalSwashes"),med2:Pi("smartSwash","nonFinalSwashes"),fin3:Pi("smartSwash","wordFinalSwashes"),fina:Pi("smartSwash","wordFinalSwashes"),pkna:Pi("kanaSpacing","proportionalKana"),half:Pi("textSpacing","halfWidthText"),halt:Pi("textSpacing","altHalfWidthText"),hkna:Pi("alternateKana","alternateHorizKana"),vkna:Pi("alternateKana","alternateVertKana"),ital:Pi("italicCJKRoman","CJKItalicRoman"),lnum:Pi("numberCase","upperCaseNumbers"),onum:Pi("numberCase","lowerCaseNumbers"),mgrk:Pi("mathematicalExtras","mathematicalGreek"),calt:Pi("contextualAlternates","contextualAlternates"),vrt2:Pi("verticalSubstitution","substituteVerticalForms"),vert:Pi("verticalSubstitution","substituteVerticalForms"),tnum:Pi("numberSpacing","monospacedNumbers"),pnum:Pi("numberSpacing","proportionalNumbers"),sups:Pi("verticalPosition","superiors"),subs:Pi("verticalPosition","inferiors"),ordn:Pi("verticalPosition","ordinals"),pwid:Pi("textSpacing","proportionalText"),hwid:Pi("textSpacing","halfWidthText"),qwid:Pi("textSpacing","quarterWidthText"),twid:Pi("textSpacing","thirdWidthText"),fwid:Pi("textSpacing","proportionalText"),palt:Pi("textSpacing","altProportionalText"),trad:Pi("characterShape","traditionalCharacters"),smpl:Pi("characterShape","simplifiedCharacters"),jp78:Pi("characterShape","JIS1978Characters"),jp83:Pi("characterShape","JIS1983Characters"),jp90:Pi("characterShape","JIS1990Characters"),jp04:Pi("characterShape","JIS2004Characters"),expt:Pi("characterShape","expertCharacters"),hojo:Pi("characterShape","hojoCharacters"),nlck:Pi("characterShape","NLCCharacters"),tnam:Pi("characterShape","traditionalNamesCharacters"),ruby:Pi("rubyKana","rubyKana"),titl:Pi("styleOptions","titlingCaps"),zero:Pi("typographicExtras","slashedZero"),ss01:Pi("stylisticAlternatives","stylisticAltOne"),ss02:Pi("stylisticAlternatives","stylisticAltTwo"),ss03:Pi("stylisticAlternatives","stylisticAltThree"),ss04:Pi("stylisticAlternatives","stylisticAltFour"),ss05:Pi("stylisticAlternatives","stylisticAltFive"),ss06:Pi("stylisticAlternatives","stylisticAltSix"),ss07:Pi("stylisticAlternatives","stylisticAltSeven"),ss08:Pi("stylisticAlternatives","stylisticAltEight"),ss09:Pi("stylisticAlternatives","stylisticAltNine"),ss10:Pi("stylisticAlternatives","stylisticAltTen"),ss11:Pi("stylisticAlternatives","stylisticAltEleven"),ss12:Pi("stylisticAlternatives","stylisticAltTwelve"),ss13:Pi("stylisticAlternatives","stylisticAltThirteen"),ss14:Pi("stylisticAlternatives","stylisticAltFourteen"),ss15:Pi("stylisticAlternatives","stylisticAltFifteen"),ss16:Pi("stylisticAlternatives","stylisticAltSixteen"),ss17:Pi("stylisticAlternatives","stylisticAltSeventeen"),ss18:Pi("stylisticAlternatives","stylisticAltEighteen"),ss19:Pi("stylisticAlternatives","stylisticAltNineteen"),ss20:Pi("stylisticAlternatives","stylisticAltTwenty")},Oi=1;Oi<=99;Oi++)Ii["cv"+("00"+Oi).slice(-2)]=[Ei.characterAlternatives.code,Oi];var Ti={};for(var Li in Ii){var Bi=Ii[Li];null==Ti[Bi[0]]&&(Ti[Bi[0]]={}),Ti[Bi[0]][Bi[1]]=Li}for(var Ri,Mi,zi,Fi,Di,Ni,Ui,Wi,ji=(Ri=function(){function t(e){J(this,t),this.table=e}return t.prototype.lookup=function(t){switch(this.table.version){case 0:return this.table.values.getItem(t);case 2:case 4:for(var e=0,n=this.table.binarySearchHeader.nUnits-1;e<=n;){var r=e+n>>1,i=this.table.segments[r];if(65535===i.firstGlyph)return null;if(ti.lastGlyph))return 2===this.table.version?i.value:i.values[t-i.firstGlyph];e=r+1}}return null;case 6:for(var o=0,a=this.table.binarySearchHeader.nUnits-1;o<=a;){var r=o+a>>1,i=this.table.segments[r];if(65535===i.glyph)return null;if(ti.glyph))return i.value;o=r+1}}return null;case 8:return this.table.values[t-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},t.prototype.glyphsForValue=function(t){var e=[];switch(this.table.version){case 2:case 4:for(var n=this.table.segments,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;if(2===this.table.version&&a.value===t)e.push.apply(e,f(a.firstGlyph,a.lastGlyph+1));else for(var s=0;s=u.length)break;h=u[l++]}else{if(l=u.next(),l.done)break;h=l.value}var p=h;p.value===t&&e.push(p.glyph)}break;case 8:for(var d=0;d=-1;){var a=null,s=1,u=!0;i===t.length||i===-1?s=0:(a=t[i],65535===a.id?s=2:null==(s=this.lookupTable.lookup(a.id))&&(s=1));var c=this.stateTable.stateArray.getItem(r),l=c[s],f=this.stateTable.entryTable.getItem(l);0!==s&&2!==s&&(n(a,f,i),u=!(16384&f.flags)),r=f.newState,u&&(i+=o)}return t},t.prototype.traverse=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new ut;if(!n.has(e)){n.add(e);for(var r=this.stateTable,i=r.nClasses,o=r.stateArray,a=r.entryTable,s=o.getItem(e),u=4;u=f.length)break;d=f[p++]}else{if(p=f.next(),p.done)break;d=p.value}var g=d;t.enter&&t.enter(g,l),0!==l.newState&&this.traverse(t,l.newState,n),t.exit&&t.exit(g,l)}}},t}(),Vi=(Mi=function(){function t(e){J(this,t),this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=e,this.morx=e.morx,this.inputCache=null}return t.prototype.process=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.morx.chains,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a.defaultFlags,u=a.features,c=Array.isArray(u),l=0,u=c?u:H(u);;){var f;if(c){if(l>=u.length)break;f=u[l++]}else{if(l=u.next(),l.done)break;f=l.value}var h=f,p=void 0;(p=e[h.featureType])&&p[h.featureSetting]&&(s&=h.disableFlags,s|=h.enableFlags)}for(var d=a.subtables,g=Array.isArray(d),v=0,d=g?d:H(d);;){var y;if(g){if(v>=d.length)break;y=d[v++]}else{if(v=d.next(),v.done)break;y=v.value}var m=y;m.subFeatureFlags&s&&this.processSubtable(m,t)}}for(var b=t.length-1;b>=0;)65535===t[b].id&&t.splice(b,1),b--;return t},t.prototype.processSubtable=function(t,e){if(this.subtable=t,this.glyphs=e,4===this.subtable.type)return void this.processNoncontextualSubstitutions(this.subtable,this.glyphs);this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var n=this.getStateMachine(t),r=this.getProcessor(),i=!!(4194304&this.subtable.coverage);return n.process(this.glyphs,i,r)},t.prototype.getStateMachine=function(t){return new Gi(t.table.stateTable)},t.prototype.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},t.prototype.processIndicRearragement=function(t,e,n){32768&e.flags&&(this.firstGlyph=n),8192&e.flags&&(this.lastGlyph=n),w(this.glyphs,15&e.flags,this.firstGlyph,this.lastGlyph)},t.prototype.processContextualSubstitution=function(t,e,n){var r=this.subtable.table.substitutionTable.items;if(65535!==e.markIndex){var i=r.getItem(e.markIndex),o=new ji(i);t=this.glyphs[this.markedGlyph];var a=o.lookup(t.id);a&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(a,t.codePoints))}if(65535!==e.currentIndex){var s=r.getItem(e.currentIndex),u=new ji(s);t=this.glyphs[n];var a=u.lookup(t.id);a&&(this.glyphs[n]=this.font.getGlyph(a,t.codePoints))}32768&e.flags&&(this.markedGlyph=n)},t.prototype.processLigature=function(t,e,n){if(32768&e.flags&&this.ligatureStack.push(n),8192&e.flags){for(var r,i=this.subtable.table.ligatureActions,o=this.subtable.table.components,a=this.subtable.table.ligatureList,s=e.action,u=!1,c=0,l=[],f=[];!u;){var h,p=this.ligatureStack.pop();(h=l).unshift.apply(h,this.glyphs[p].codePoints);var d=i.getItem(s++);u=!!(2147483648&d);var g=!!(1073741824&d),v=(1073741823&d)<<2>>2;v+=this.glyphs[p].id;if(c+=o.getItem(v),u||g){var y=a.getItem(c);this.glyphs[p]=this.font.getGlyph(y,l),f.push(p),c=0,l=[]}else this.glyphs[p]=this.font.getGlyph(65535)}(r=this.ligatureStack).push.apply(r,f)}},t.prototype.processNoncontextualSubstitutions=function(t,e,n){var r=new ji(t.table.lookupTable);for(n=0;n>>5,i=!!(1024&e.flags);this._insertGlyphs(this.markedIndex,e.markedInsertIndex,r,i)}if(65535!==e.currentInsertIndex){var o=(992&e.flags)>>>5,a=!!(2048&e.flags);this._insertGlyphs(n,e.currentInsertIndex,o,a)}},t.prototype.getSupportedFeatures=function(){for(var t=[],e=this.morx.chains,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=o.features,s=Array.isArray(a),u=0,a=s?a:H(a);;){var c;if(s){if(u>=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c;t.push([l.featureType,l.featureSetting])}}return t},t.prototype.generateInputs=function(t){return this.inputCache||this.generateInputCache(),this.inputCache[t]||[]},t.prototype.generateInputCache=function(){this.inputCache={};for(var t=this.morx.chains,e=Array.isArray(t),n=0,t=e?t:H(t);;){var r;if(e){if(n>=t.length)break;r=t[n++]}else{if(n=t.next(),n.done)break;r=n.value}for(var i=r,o=i.defaultFlags,a=i.subtables,s=Array.isArray(a),u=0,a=s?a:H(a);;){var c;if(s){if(u>=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c;l.subFeatureFlags&o&&this.generateInputsForSubtable(l)}}},t.prototype.generateInputsForSubtable=function(t){var e=this;if(2===t.type){if(!!(4194304&t.coverage))throw new Error("Reverse subtable, not supported.");this.subtable=t,this.ligatureStack=[];var n=this.getStateMachine(t),r=this.getProcessor(),i=[],o=[];this.glyphs=[],n.traverse({enter:function(t,n){var a=e.glyphs;o.push({glyphs:a.slice(),ligatureStack:e.ligatureStack.slice()});var s=e.font.getGlyph(t);i.push(s),a.push(i[i.length-1]),r(a[a.length-1],n,a.length-1);for(var u=0,c=0,l=0;l=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;this._addStrings(s,0,n,"")}return n},t.prototype._addStrings=function(t,e,n,r){for(var i=this.font._cmapProcessor.codePointsForGlyph(t[e]),o=i,a=Array.isArray(o),s=0,o=a?o:H(o);;){var u;if(a){if(s>=o.length)break;u=o[s++]}else{if(s=o.next(),s.done)break;u=s.value}var c=u,l=r+at(c);e=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;this.allFeatures[a]||(e.push(a),this.allFeatures[a]=!0)}},t.prototype._addGlobal=function(t){for(var e=t,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;this.globalFeatures[o]=!0}},t.prototype.add=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0===this.stages.length&&this.stages.push([]),"string"==typeof t&&(t=[t]),Array.isArray(t))this._addFeatures(t),e&&this._addGlobal(t);else{if("object"!==(void 0===t?"undefined":K(t)))throw new Error("Unsupported argument to ShapingPlan#add");var n=(t.global||[]).concat(t.local||[]);this._addFeatures(n),t.global&&this._addGlobal(t.global)}},t.prototype.addStage=function(t,e){"function"==typeof t?this.stages.push(t,[]):(this.stages.push([]),this.add(t,e))},t.prototype.assignGlobalFeatures=function(t){for(var e=t,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;for(var a in this.globalFeatures)o.features[a]=!0}},t.prototype.process=function(t,e,n){t.selectScript(this.script,this.language);for(var r=this.stages,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;"function"==typeof s?n||s(this.font,e,n):s.length>0&&t.applyFeatures(s,e,n)}},t}(),Zi=["ccmp","locl","rlig","mark","mkmk"],Yi=["frac","numr","dnom"],Ki=["calt","clig","liga","rclt","curs","kern"],Xi={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},Ji=(Fi=zi=function(){function t(){J(this,t)}return t.plan=function(t,e,n){this.planPreprocessing(t),this.planFeatures(t),this.planPostprocessing(t,n),t.assignGlobalFeatures(e),this.assignFeatures(t,e)},t.planPreprocessing=function(t){t.add({global:Xi[t.direction],local:Yi})},t.planFeatures=function(t){},t.planPostprocessing=function(t,e){t.add([].concat(Zi,Ki,e))},t.assignFeatures=function(t,e){for(var n=0;n=0&&ct.isDigit(e[i].codePoints[0]);)e[i].features.numr=!0,e[i].features.frac=!0,i--;for(;o0&&void 0!==arguments[0]?arguments[0]:{};this.flags=t,this.index=0},t.prototype.shouldIgnore=function(t,e){return e.ignoreMarks&&t.isMark||e.ignoreBaseGlyphs&&!t.isMark||e.ignoreLigatures&&t.isLigature},t.prototype.move=function(t){for(this.index+=t;0<=this.index&&this.indexthis.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},t.prototype.next=function(){return this.move(1)},t.prototype.prev=function(){return this.move(-1)},t.prototype.peek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index,n=this.increment(t);return this.index=e,n},t.prototype.peekIndex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index;this.increment(t);var n=this.index;return this.index=e,n},t.prototype.increment=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=t<0?-1:1;for(t=Math.abs(t);t--;)this.move(e);return this.glyphs[this.index]},Q(t,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),t}(),ao=["DFLT","dflt","latn"],so=(function(){function t(e,n){J(this,t),this.font=e,this.table=n,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1}return t.prototype.findScript=function(t){if(null==this.table.scriptList)return null;Array.isArray(t)||(t=[t]);for(var e=this.table.scriptList,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=t,s=Array.isArray(a),u=0,a=s?a:H(a);;){var c;if(s){if(u>=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c;if(o.tag===l)return o}}return null},t.prototype.selectScript=function(t,e){var n=!1,r=void 0;if(!this.script||t!==this.scriptTag){if(r=this.findScript(t),t&&(r=this.findScript(t)),r||(r=this.findScript(ao)),!r)return;this.scriptTag=r.tag,this.script=r.script,this.direction=g(t),this.language=null,n=!0}if(!e&&e!==this.langugeTag)for(var i=this.script.langSysRecords,o=Array.isArray(i),a=0,i=o?i:H(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s;if(u.tag===e){this.language=u.langSys,this.langugeTag=u.tag,n=!0;break}}if(this.language||(this.language=this.script.defaultLangSys),n&&(this.features={},this.language))for(var c=this.language.featureIndexes,l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h,d=this.table.featureList[p];this.features[d.tag]=d.feature}},t.prototype.lookupsForFeatures=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1],n=[],r=t,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=this.features[s];if(u)for(var c=u.lookupListIndexes,l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h;e&&e.indexOf(p)!==-1||n.push({feature:s,index:p,lookup:this.table.lookupList.get(p)})}}return n.sort(function(t,e){return t.index-e.index}),n},t.prototype.applyFeatures=function(t,e,n){var r=this.lookupsForFeatures(t);this.applyLookups(r,e,n)},t.prototype.applyLookups=function(t,e,n){this.glyphs=e,this.positions=n,this.glyphIterator=new oo(e);for(var r=t,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=s.feature,c=s.lookup;for(this.glyphIterator.reset(c.flags);this.glyphIterator.index=l.length)break;p=l[h++]}else{if(h=l.next(),h.done)break;p=h.value}var d=p,g=this.applyLookup(c.lookupType,d);if(g)break}this.glyphIterator.next()}else this.glyphIterator.next()}},t.prototype.applyLookup=function(t,e){throw new Error("applyLookup must be implemented by subclasses")},t.prototype.applyLookupList=function(t){for(var e=this.glyphIterator.index,n=t,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;this.glyphIterator.index=e,this.glyphIterator.increment(a.sequenceIndex);for(var s=this.table.lookupList.get(a.lookupListIndex),u=s.subTables,c=Array.isArray(u),l=0,u=c?u:H(u);;){var f;if(c){if(l>=u.length)break;f=u[l++]}else{if(l=u.next(),l.done)break;f=l.value}var h=f;this.applyLookup(s.lookupType,h)}}return this.glyphIterator.index=e,!0},t.prototype.coverageIndex=function(t,e){switch(null==e&&(e=this.glyphIterator.cur.id),t.version){case 1:return t.glyphs.indexOf(e);case 2:for(var n=t.rangeRecords,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;if(a.start<=e&&e<=a.end)return a.startCoverageIndex+e-a.start}}return-1},t.prototype.match=function(t,e,n,r){for(var i=this.glyphIterator.index,o=this.glyphIterator.increment(t),a=0;a=0})},t.prototype.getClassID=function(t,e){switch(e.version){case 1:var n=t-e.startGlyph;if(n>=0&&n=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(s.start<=t&&t<=s.end)return s.class}}return 0},t.prototype.classSequenceMatches=function(t,e,n){var r=this;return this.match(t,e,function(t,e){return t===r.getClassID(e,n)})},t.prototype.applyContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(e===-1)return!1;for(var n=t.ruleSets[e],r=n,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(this.sequenceMatches(1,s.input))return this.applyLookupList(s.lookupRecords)}break;case 2:if(this.coverageIndex(t.coverage)===-1)return!1;if((e=this.getClassID(this.glyphIterator.cur.id,t.classDef))===-1)return!1;n=t.classSet[e];for(var u=n,c=Array.isArray(u),l=0,u=c?u:H(u);;){var f;if(c){if(l>=u.length)break;f=u[l++]}else{if(l=u.next(),l.done)break;f=l.value}var h=f;if(this.classSequenceMatches(1,h.classes,t.classDef))return this.applyLookupList(h.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,t.coverages))return this.applyLookupList(t.lookupRecords)}return!1},t.prototype.applyChainingContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(e===-1)return!1;for(var n=t.chainRuleSets[e],r=n,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(this.sequenceMatches(-s.backtrack.length,s.backtrack)&&this.sequenceMatches(1,s.input)&&this.sequenceMatches(1+s.input.length,s.lookahead))return this.applyLookupList(s.lookupRecords)}break;case 2:if(this.coverageIndex(t.coverage)===-1)return!1;e=this.getClassID(this.glyphIterator.cur.id,t.inputClassDef);var u=t.chainClassSet[e];if(!u)return!1;for(var c=u,l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h;if(this.classSequenceMatches(-p.backtrack.length,p.backtrack,t.backtrackClassDef)&&this.classSequenceMatches(1,p.input,t.inputClassDef)&&this.classSequenceMatches(1+p.input.length,p.lookahead,t.lookaheadClassDef))return this.applyLookupList(p.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-t.backtrackGlyphCount,t.backtrackCoverage)&&this.coverageSequenceMatches(0,t.inputCoverage)&&this.coverageSequenceMatches(t.inputGlyphCount,t.lookaheadCoverage))return this.applyLookupList(t.lookupRecords)}return!1},t}()),uo=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(J(this,t),this._font=e, +this.codePoints=r,this.id=n,this.features={},Array.isArray(i))for(var o=0;o1}}]),t}(),co=(Ni=Di=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.planFeatures=function(t){t.add(["ljmo","vjmo","tjmo"],!1)},e.assignFeatures=function(t,e){for(var n=0,r=0;r=0;n--)!function(n){var r=e[n].codePoints[0];if(Xo[r]){var i=Xo[r].map(function(r){var i=t.font.glyphForCodePoint(r);return new uo(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(i))}}(n)},e}(Ji),Ui.zeroMarkWidths="BEFORE_GPOS",Wi),ta=function t(e,n,r){J(this,t),this.category=e,this.syllableType=n,this.syllable=r},ea={arab:io,mong:io,syrc:io,"nko ":io,phag:io,mand:io,mani:io,phlp:io,hang:co,bali:$o,batk:$o,brah:$o,bugi:$o,buhd:$o,cakm:$o,cham:$o,dupl:$o,egyp:$o,gran:$o,hano:$o,java:$o,kthi:$o,kali:$o,khar:$o,khoj:$o,sind:$o,lepc:$o,limb:$o,mahj:$o,mtei:$o,modi:$o,hmng:$o,rjng:$o,saur:$o,shrd:$o,sidd:$o,sinh:$o,sund:$o,sylo:$o,tglg:$o,tagb:$o,tale:$o,lana:$o,tavt:$o,takr:$o,tibt:$o,tfng:$o,tirh:$o,latn:Ji,DFLT:Ji},na=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype.applyLookup=function(t,e){var n=this;switch(t){case 1:var r=this.coverageIndex(e.coverage);if(r===-1)return!1;var i=this.glyphIterator.cur;switch(e.version){case 1:i.id=i.id+e.deltaGlyphID&65535;break;case 2:i.id=e.substitute.get(r)}return!0;case 2:var o=this.coverageIndex(e.coverage);if(o!==-1){var a=function(){var t,r=e.sequences.get(o);n.glyphIterator.cur.id=r[0],n.glyphIterator.cur.ligatureComponent=0;var i=n.glyphIterator.cur.features,a=n.glyphIterator.cur,s=r.slice(1).map(function(t,e){var r=new uo(n.font,t,void 0,i);return r.shaperInfo=a.shaperInfo,r.isLigated=a.isLigated,r.ligatureComponent=e+1,r.substituted=!0,r});return(t=n.glyphs).splice.apply(t,[n.glyphIterator.index+1,0].concat(s)),{v:!0}}();if("object"===(void 0===a?"undefined":K(a)))return a.v}return!1;case 3:var s=this.coverageIndex(e.coverage);if(s!==-1){return this.glyphIterator.cur.id=e.alternateSet.get(s)[0],!0}return!1;case 4:var u=this.coverageIndex(e.coverage);if(u===-1)return!1;for(var c=e.ligatureSets.get(u),l=Array.isArray(c),f=0,c=l?c:H(c);;){var h;if(l){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var p=h,d=this.sequenceMatchIndices(1,p.components);if(d){for(var g=this.glyphIterator.cur,v=g.codePoints.slice(),y=d,m=Array.isArray(y),b=0,y=m?y:H(y);;){var w;if(m){if(b>=y.length)break;w=y[b++]}else{if(b=y.next(),b.done)break;w=b.value}var x=w;v.push.apply(v,this.glyphs[x].codePoints)}var S=new uo(this.font,p.glyph,v,g.features);S.shaperInfo=g.shaperInfo,S.isLigated=!0,S.substituted=!0;for(var k=g.isMark,_=0;_=I.length)break;L=I[T++]}else{if(T=I.next(),T.done)break;L=T.value}var B=L;if(k)P=B;else for(;P=0;z--)this.glyphs.splice(d[z],1);return this.glyphs[this.glyphIterator.index]=S,!0}}return!1;case 5:return this.applyContext(e);case 6:return this.applyChainingContext(e);case 7:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("GSUB lookupType "+t+" is not supported")}},e}(so),ra=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype.applyPositionValue=function(t,e){var n=this.positions[this.glyphIterator.peekIndex(t)];null!=e.xAdvance&&(n.xAdvance+=e.xAdvance),null!=e.yAdvance&&(n.yAdvance+=e.yAdvance),null!=e.xPlacement&&(n.xOffset+=e.xPlacement),null!=e.yPlacement&&(n.yOffset+=e.yPlacement)},e.prototype.applyLookup=function(t,e){switch(t){case 1:var n=this.coverageIndex(e.coverage);if(n===-1)return!1;switch(e.version){case 1:this.applyPositionValue(0,e.value);break;case 2:this.applyPositionValue(0,e.values.get(n))}return!0;case 2:var r=this.glyphIterator.peek();if(!r)return!1;var i=this.coverageIndex(e.coverage);if(i===-1)return!1;switch(e.version){case 1:for(var o=e.pairSets.get(i),a=o,s=Array.isArray(a),u=0,a=s?a:H(a);;){var c;if(s){if(u>=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c;if(l.secondGlyph===r.id)return this.applyPositionValue(0,l.value1),this.applyPositionValue(1,l.value2),!0}return!1;case 2:var f=this.getClassID(this.glyphIterator.cur.id,e.classDef1),h=this.getClassID(r.id,e.classDef2);if(f===-1||h===-1)return!1;var p=e.classRecords.get(f).get(h);return this.applyPositionValue(0,p.value1),this.applyPositionValue(1,p.value2),!0}case 3:var d=this.glyphIterator.peekIndex(),g=this.glyphs[d];if(!g)return!1;var v=e.entryExitRecords[this.coverageIndex(e.coverage)];if(!v||!v.exitAnchor)return!1;var y=e.entryExitRecords[this.coverageIndex(e.coverage,g.id)];if(!y||!y.entryAnchor)return!1;var m=this.getAnchor(y.entryAnchor),b=this.getAnchor(v.exitAnchor),w=this.positions[this.glyphIterator.index],x=this.positions[d];switch(this.direction){case"ltr":w.xAdvance=b.x+w.xOffset;var S=m.x+x.xOffset;x.xAdvance-=S,x.xOffset-=S;break;case"rtl":S=b.x+w.xOffset,w.xAdvance-=S,w.xOffset-=S,x.xAdvance=m.x+x.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=d,w.yOffset=m.y-b.y):(g.cursiveAttachment=this.glyphIterator.index,w.yOffset=b.y-m.y),!0;case 4:var k=this.coverageIndex(e.markCoverage);if(k===-1)return!1;for(var _=this.glyphIterator.index;--_>=0&&this.glyphs[_].isMark;);if(_<0)return!1;var C=this.coverageIndex(e.baseCoverage,this.glyphs[_].id);if(C===-1)return!1;var A=e.markArray[k],E=e.baseArray[C][A.class];return this.applyAnchor(A,E,_),!0;case 5:var P=this.coverageIndex(e.markCoverage);if(P===-1)return!1;for(var I=this.glyphIterator.index;--I>=0&&this.glyphs[I].isMark;);if(I<0)return!1;var O=this.coverageIndex(e.ligatureCoverage,this.glyphs[I].id);if(O===-1)return!1;var T=e.ligatureArray[O],L=this.glyphIterator.cur,B=this.glyphs[I],R=B.ligatureID&&B.ligatureID===L.ligatureID&&null!=L.ligatureComponent?Math.min(L.ligatureComponent,B.codePoints.length)-1:B.codePoints.length-1,M=e.markArray[P],z=T[R][M.class];return this.applyAnchor(M,z,I),!0;case 6:var F=this.coverageIndex(e.mark1Coverage);if(F===-1)return!1;var D=this.glyphIterator.peekIndex(-1),N=this.glyphs[D];if(!N||!N.isMark)return!1;var U=this.glyphIterator.cur,W=!1;if(U.ligatureID===N.ligatureID?U.ligatureID?U.ligatureComponent===N.ligatureComponent&&(W=!0):W=!0:(U.ligatureID&&!U.ligatureComponent||N.ligatureID&&!N.ligatureComponent)&&(W=!0),!W)return!1;var j=this.coverageIndex(e.mark2Coverage,N.id);if(j===-1)return!1;var G=e.mark1Array[F],V=e.mark2Array[j][G.class];return this.applyAnchor(G,V,D),!0;case 7:return this.applyContext(e);case 8:return this.applyChainingContext(e);case 9:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("Unsupported GPOS table: "+t)}},e.prototype.applyAnchor=function(t,e,n){var r=this.getAnchor(e),i=this.getAnchor(t.markAnchor),o=(this.positions[n],this.positions[this.glyphIterator.index]);o.xOffset=r.x-i.x,o.yOffset=r.y-i.y,this.glyphIterator.cur.markAttachment=n},e.prototype.getAnchor=function(t){return{x:t.xCoordinate,y:t.yCoordinate}},e.prototype.applyFeatures=function(e,n,r){t.prototype.applyFeatures.call(this,e,n,r);for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2],r=arguments[3];if("string"==typeof e&&(n=e,r=n,e=[]),"string"==typeof t){null==n&&(n=p(t));var i=this.font.glyphsForString(t)}else{if(null==n){for(var o=[],a=t,s=Array.isArray(a),u=0,a=s?a:H(a);;){var c;if(s){if(u>=a.length)break;c=a[u++]}else{if(u=a.next(),u.done)break;c=u.value}var l=c;o.push.apply(o,l.codePoints)}n=d(o)}var i=t}if(0===i.length)return new ki(i,[]);this.engine&&this.engine.setup&&this.engine.setup(i,e,n,r),i=this.substitute(i,e,n,r);var f=this.position(i,e,n,r);return this.engine&&this.engine.cleanup&&this.engine.cleanup(),new ki(i,f)},t.prototype.substitute=function(t,e,n,r){return this.engine&&this.engine.substitute&&(t=this.engine.substitute(t,e,n,r)),t},t.prototype.position=function(t,e,n,r){var i=t.map(function(t){return new _i(t.advanceWidth)}),o=null;return this.engine&&this.engine.position&&(o=this.engine.position(t,i,e,n,r)),o||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new xi(this.font)),this.unicodeLayoutEngine.positionGlyphs(t,i)),o&&o.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new wi(this.font)),this.kernProcessor.process(t,i)),i},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.engine&&n.push.apply(n,this.engine.getAvailableFeatures(t,e)),this.font.kern&&n.indexOf("kern")===-1&&n.push("kern"),n},t.prototype.stringsForGlyph=function(t){for(var e=new ut,n=this.font._cmapProcessor.codePointsForGlyph(t),r=n,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;e.add(at(s))}if(this.engine&&this.engine.stringsForGlyph)for(var u=this.engine.stringsForGlyph(t),c=Array.isArray(u),l=0,u=c?u:H(u);;){var f;if(c){if(l>=u.length)break;f=u[l++]}else{if(l=u.next(),l.done)break;f=l.value}var h=f;e.add(h)}return st(e)},t}(),aa={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},sa=function(){function t(){J(this,t),this.commands=[],this._bbox=null,this._cbox=null}return t.prototype.toFunction=function(){var t=this.commands.map(function(t){return" ctx."+t.command+"("+t.args.join(", ")+");"});return new Function("ctx",t.join("\n"))},t.prototype.toSVG=function(){return this.commands.map(function(t){var e=t.args.map(function(t){return Math.round(100*t)/100});return""+aa[t.command]+e.join(" ")}).join("")},Q(t,[{key:"cbox",get:function(){if(!this._cbox){for(var t=new Si,e=this.commands,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=0;a=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s;switch(u.command){case"moveTo":case"lineTo":var c=u.args,l=c[0],f=c[1];t.addPoint(l,f),e=l,n=f;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===u.command)var h=u.args,p=h[0],d=h[1],g=h[2],v=h[3],y=e+2/3*(p-e),m=n+2/3*(d-n),b=g+2/3*(p-g),w=v+2/3*(d-v);else var x=u.args,y=x[0],m=x[1],b=x[2],w=x[3],g=x[4],v=x[5];t.addPoint(g,v);for(var S=[e,n],k=[y,m],_=[b,w],C=[g,v],A=0;A<=1;A++){var E=6*S[A]-12*k[A]+6*_[A],P=-3*S[A]+9*k[A]-9*_[A]+3*C[A];if(u=3*k[A]-3*S[A],0!==P){var I=Math.pow(E,2)-4*u*P;if(!(I<0)){var O=(-E+Math.sqrt(I))/(2*P);01}return t.prototype._getPath=function(){return new sa},t.prototype._getCBox=function(){return this.path.cbox},t.prototype._getBBox=function(){return this.path.bbox},t.prototype._getTableMetrics=function(t){if(this.id0)var o=Math.abs(s.typoAscender-s.typoDescender),a=s.typoAscender-t.maxY;else var u=this._font.hhea,o=Math.abs(u.ascent-u.descent),a=u.ascent-t.maxY}return this._metrics={advanceWidth:n,advanceHeight:o,leftBearing:r,topBearing:a}},t.prototype._getName=function(){var t=this._font.post;if(!t)return null;switch(t.version){case 1:return ha[this.id];case 2:var e=t.glyphNameIndex[this.id];return e2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;J(this,t),this.onCurve=e,this.endContour=n,this.x=r,this.y=i}return t.prototype.copy=function(){return new t(this.onCurve,this.endContour,this.x,this.y)},t}(),va=function t(e,n,r){J(this,t),this.glyphID=e,this.dx=n,this.dy=r,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},ya=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype._getCBox=function(t){if(this._font._variationProcessor&&!t)return this.path.cbox;var e=this._font._getTableStream("glyf");e.pos+=this._font.loca.offsets[this.id];var n=da.decode(e),r=new Si(n.xMin,n.yMin,n.xMax,n.yMax);return Z(r)},e.prototype._parseGlyphCoord=function(t,e,n,r){if(n){var i=t.readUInt8();r||(i=-i),i+=e}else if(r)var i=e;else var i=e+t.readInt16BE();return i},e.prototype._decode=function(){var t=this._font.loca.offsets[this.id];if(t===this._font.loca.offsets[this.id+1])return null;var e=this._font._getTableStream("glyf");e.pos+=t;var n=e.pos,r=da.decode(e);return r.numberOfContours>0?this._decodeSimple(r,e):r.numberOfContours<0&&this._decodeComposite(r,e,n),r},e.prototype._decodeSimple=function(t,e){t.points=[];var n=new V.Array(V.uint16,t.numberOfContours).decode(e);t.instructions=new V.Array(V.uint8,V.uint16).decode(e);for(var r=[],i=n[n.length-1]+1;r.length=0,0,0);t.points.push(c)}for(var l=0,u=0;u2&&void 0!==arguments[2]?arguments[2]:0;t.components=[];for(var r=!1,i=32;32&i;){i=e.readUInt16BE();var o=e.pos-n,a=e.readUInt16BE();if(r||(r=0!=(256&i)),1&i)var s=e.readInt16BE(),u=e.readInt16BE();else var s=e.readInt8(),u=e.readInt8();var c=new va(a,s,u);c.pos=o,8&i?c.scaleX=c.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824:64&i?(c.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,c.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824):128&i&&(c.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,c.scale01=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,c.scale10=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,c.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824),t.components.push(c)}if(this._font._variationProcessor){for(var l=[],f=0;f=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;t=this._font.getGlyph(a.glyphID)._decode();for(var s=t.points,u=Array.isArray(s),c=0,s=u?s:H(s);;){var l;if(u){if(c>=s.length)break;l=s[c++]}else{if(c=s.next(),c.done)break;l=c.value}var f=l;e.push(new ga(f.onCurve,f.endContour,f.x+a.dx,f.y+a.dy))}}else var e=t.points||[];t.phantomPoints&&(this._metrics.advanceWidth=t.phantomPoints[1].x-t.phantomPoints[0].x,this._metrics.advanceHeight=t.phantomPoints[3].y-t.phantomPoints[2].y,this._metrics.leftBearing=t.xMin-t.phantomPoints[0].x,this._metrics.topBearing=t.phantomPoints[2].y-t.yMax);for(var h=[],p=[],d=0;d>1,s.length=0}function e(t,e){g&&a.closePath(),a.moveTo(t,e),g=!0}var n=this._font.stream,r=(n.pos,this._font["CFF "]),i=r.topDict.CharStrings[this.id],o=i.offset+i.length;n.pos=i.offset;var a=new sa,s=[],u=[],c=null,l=0,f=0,h=0,p=void 0,d=void 0,g=!1;this._usedGsubrs=p={},this._usedSubrs=d={};var v=r.globalSubrIndex||[],y=this.bias(v),m=r.privateDictForGlyph(this.id),b=m.Subrs||[],w=this.bias(b);return function r(){for(;n.pos1&&(void 0!==c&&null!==c||(c=s.shift()+m.nominalWidthX)),h+=s.shift(),e(f,h);break;case 5:for(;s.length>=2;)f+=s.shift(),h+=s.shift(),a.lineTo(f,h);break;case 6:case 7:for(var x=6===i;s.length>=1;)x?f+=s.shift():h+=s.shift(),a.lineTo(f,h),x=!x;break;case 8:for(;s.length>0;){var S=f+s.shift(),k=h+s.shift(),_=S+s.shift(),C=k+s.shift();f=_+s.shift(),h=C+s.shift(),a.bezierCurveTo(S,k,_,C,f,h)}break;case 10:var A=s.pop()+w,E=b[A];if(E){d[A]=!0;var P=n.pos,I=o;n.pos=E.offset,o=E.offset+E.length,r(),n.pos=P,o=I}break;case 11:return;case 14:s.length>0&&(void 0!==c&&null!==c||(c=s.shift()+m.nominalWidthX)),a.closePath(),g=!1;break;case 19:case 20:t(),n.pos+=l+7>>3;break;case 21:if(s.length>2){void 0!==c&&null!==c||(c=s.shift()+m.nominalWidthX)}f+=s.shift(),h+=s.shift(),e(f,h);break;case 22:s.length>1&&(void 0!==c&&null!==c||(c=s.shift()+m.nominalWidthX)),f+=s.shift(),e(f,h);break;case 24:for(;s.length>=8;){var S=f+s.shift(),k=h+s.shift(),_=S+s.shift(),C=k+s.shift();f=_+s.shift(),h=C+s.shift(),a.bezierCurveTo(S,k,_,C,f,h)}f+=s.shift(),h+=s.shift(),a.lineTo(f,h);break;case 25:for(;s.length>=8;)f+=s.shift(),h+=s.shift(),a.lineTo(f,h);var S=f+s.shift(),k=h+s.shift(),_=S+s.shift(),C=k+s.shift();f=_+s.shift(),h=C+s.shift(),a.bezierCurveTo(S,k,_,C,f,h);break;case 26:for(s.length%2&&(f+=s.shift());s.length>=4;)S=f,k=h+s.shift(),_=S+s.shift(),C=k+s.shift(),f=_,h=C+s.shift(),a.bezierCurveTo(S,k,_,C,f,h);break;case 27:for(s.length%2&&(h+=s.shift());s.length>=4;)S=f+s.shift(),k=h,_=S+s.shift(),C=k+s.shift(),f=_+s.shift(),h=C,a.bezierCurveTo(S,k,_,C,f,h);break;case 28:s.push(n.readInt16BE());break;case 29:if(A=s.pop()+y,E=v[A]){p[A]=!0;var P=n.pos,I=o;n.pos=E.offset,o=E.offset+E.length,r(),n.pos=P,o=I}break;case 30:case 31:for(x=31===i;s.length>=4;)x?(S=f+s.shift(),k=h,_=S+s.shift(),C=k+s.shift(),h=C+s.shift(),f=_+(1===s.length?s.shift():0)):(S=f,k=h+s.shift(),_=S+s.shift(),C=k+s.shift(),f=_+s.shift(),h=C+(1===s.length?s.shift():0)),a.bezierCurveTo(S,k,_,C,f,h),x=!x;break;case 12:switch(i=n.readUInt8()){case 3:var O=s.pop(),T=s.pop();s.push(O&&T?1:0);break;case 4:O=s.pop(),T=s.pop(),s.push(O||T?1:0);break;case 5:O=s.pop(),s.push(O?0:1);break;case 9:O=s.pop(),s.push(Math.abs(O));break;case 10:O=s.pop(),T=s.pop(),s.push(O+T);break;case 11:O=s.pop(),T=s.pop(),s.push(O-T);break;case 12:O=s.pop(),T=s.pop(),s.push(O/T);break;case 14:O=s.pop(),s.push(-O);break;case 15:O=s.pop(),T=s.pop(),s.push(O===T?1:0);break;case 18:s.pop();break;case 20:var L=s.pop(),B=s.pop();u[B]=L;break;case 21:B=s.pop(),s.push(u[B]||0);break;case 22:var R=s.pop(),M=s.pop(),z=s.pop(),F=s.pop();s.push(z<=F?R:M);break;case 23:s.push(Math.random());break;case 24:O=s.pop(),T=s.pop(),s.push(O*T);break;case 26:O=s.pop(),s.push(Math.sqrt(O));break;case 27:O=s.pop(),s.push(O,O);break;case 28:O=s.pop(),T=s.pop(),s.push(T,O);break;case 29:B=s.pop(),B<0?B=0:B>s.length-1&&(B=s.length-1),s.push(s[B]);break;case 30:var D=s.pop(),N=s.pop();if(N>=0)for(;N>0;){for(var U=s[D-1],W=D-2;W>=0;W--)s[W+1]=s[W];s[0]=U,N--}else for(;N<0;){for(var U=s[0],j=0;j<=D;j++)s[j]=s[j+1];s[D-1]=U,N++}break;case 34:S=f+s.shift(),k=h,_=S+s.shift(),C=k+s.shift();var G=_+s.shift(),V=C,q=G+s.shift(),H=V,Z=q+s.shift(),Y=H,K=Z+s.shift(),X=Y;f=K,h=X,a.bezierCurveTo(S,k,_,C,G,V),a.bezierCurveTo(q,H,Z,Y,K,X);break;case 35:for(var J=[],Q=0;Q<=5;Q++)f+=s.shift(),h+=s.shift(),J.push(f,h);a.bezierCurveTo.apply(a,J.slice(0,6)),a.bezierCurveTo.apply(a,J.slice(6)),s.shift();break;case 36:S=f+s.shift(),k=h+s.shift(),_=S+s.shift(),C=k+s.shift(),G=_+s.shift(),V=C,q=G+s.shift(),H=V,Z=q+s.shift(),Y=H+s.shift(),K=Z+s.shift(),X=Y,f=K,h=X,a.bezierCurveTo(S,k,_,C,G,V),a.bezierCurveTo(q,H,Z,Y,K,X);break;case 37:var $=f,tt=h;J=[];for(var et=0;et<=4;et++)f+=s.shift(),h+=s.shift(),J.push(f,h);Math.abs(f-$)>Math.abs(h-tt)?(f+=s.shift(),h=tt):(f=$,h+=s.shift()),J.push(f,h),a.bezierCurveTo.apply(a,J.slice(0,6)),a.bezierCurveTo.apply(a,J.slice(6));break;default:throw new Error("Unknown op: 12 "+i)}break;default:throw new Error("Unknown op: "+i)}else if(i<247)s.push(i-139);else if(i<251){var nt=n.readUInt8();s.push(256*(i-247)+nt+108)}else if(i<255){var nt=n.readUInt8();s.push(256*-(i-251)-nt-108)}else s.push(n.readInt32BE()/65536)}}(),a},e}(pa),ba=new V.Struct({originX:V.uint16,originY:V.uint16,type:new V.String(4),data:new V.Buffer(function(t){return t.parent.buflen-t._currentOffset})}),wa=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype.getImageForSize=function(t){for(var e=0;e=t)break}var r=n.imageOffsets,i=r[this.id],o=r[this.id+1];return i===o?null:(this._font.stream.pos=i,ba.decode(this._font.stream,{buflen:o-i}))},e.prototype.render=function(e,n){var r=this.getImageForSize(n);if(null!=r){var i=n/this._font.unitsPerEm;e.image(r.data,{height:n,x:r.originX,y:(this.bbox.minY-r.originY)*i})}this._font.sbix.flags.renderOutlines&&t.prototype.render.call(this,e,n)},e}(ya),xa=function t(e,n){J(this,t),this.glyph=e,this.color=n},Sa=function(t){function e(){return J(this,e),tt(this,t.apply(this,arguments))}return et(e,t),e.prototype._getBBox=function(){for(var t=new Si,e=0;e=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=a.glyph,u=a.color;t.fillColor([u.red,u.green,u.blue],u.alpha/255*100),s.render(t,e)}},Q(e,[{key:"layers",get:function(){for(var t=this._font.CPAL,e=this._font.COLR,n=0,r=e.baseGlyphRecord.length-1;n<=r;){var i=n+r>>1,o=e.baseGlyphRecord[i];if(this.ido.gid)){var a=o;break}n=i+1}}if(null==a){var s=this._font._getBaseGlyph(this.id),u={red:0,green:0,blue:0,alpha:255};return[new xa(s,u)]}for(var c=[],l=a.firstLayerIndex;l=1&&e[n]=n.glyphCount)){var r=n.offsets[t];if(r!==n.offsets[t+1]){var i=this.font.stream;if(i.pos=r,!(i.pos>=i.length)){var o=i.readUInt16BE(),a=r+i.readUInt16BE();if(32768&o){var s=i.pos;i.pos=a;var u=this.decodePoints();a=i.pos,i.pos=s}var c=e.map(function(t){return t.copy()});o&=4095;for(var l=0;l=n.globalCoordCount)throw new Error("Invalid gvar table");var p=n.globalCoords[4095&h]}if(16384&h){for(var g=[],v=0;vMath.max(0,e[s]))return 0;a=a*i[s]/e[s]}else{if(i[s]r[s])return 0;a=i[s]o)){var s=r,u=r;for(r++;r<=o;)n[r]&&(this.deltaInterpolate(u+1,r-1,u,r,e,t),u=r),r++;u===s?this.deltaShift(i,o,u,e,t):(this.deltaInterpolate(u+1,o,u,s,e,t),s>0&&this.deltaInterpolate(i,s-1,u,s,e,t)),r=o+1}}},t.prototype.deltaInterpolate=function(t,e,n,r,i,o){if(!(t>e))for(var a=["x","y"],s=0;si[r][u]){var c=n;n=r,r=c}for(var l=i[n][u],f=i[r][u],h=o[n][u],p=o[r][u],d=l===f?0:(p-h)/(f-l),g=t;g<=e;g++){var v=i[g][u];v<=l?v+=h-l:v>=f?v+=p-f:v=h+(v-l)*d,o[g][u]=v}}},t.prototype.deltaShift=function(t,e,n,r,i){var o=i[n].x-r[n].x,a=i[n].y-r[n].y;if(0!==o||0!==a)for(var s=t;s<=e;s++)s!==n&&(i[s].x+=o,i[s].y+=a)},t}(),_a=function(){function t(e){J(this,t),this.font=e,this.glyphs=[],this.mapping={},this.includeGlyph(0)}return t.prototype.includeGlyph=function(t){return"object"===(void 0===t?"undefined":K(t))&&(t=t.id),null==this.mapping[t]&&(this.glyphs.push(t),this.mapping[t]=this.glyphs.length-1),this.mapping[t]},t.prototype.encodeStream=function(){var t=this,e=new V.EncodeStream;return r.nextTick(function(){return t.encode(e),e.end()}),e},t}(),Ca=function(){function t(){J(this,t)}return t.size=function(t){return t>=0&&t<=255?1:2},t.encode=function(t,e){e>=0&&e<=255?t.writeUInt8(e):t.writeInt16BE(e)},t}(),Aa=new V.Struct({numberOfContours:V.int16,xMin:V.int16,yMin:V.int16,xMax:V.int16,yMax:V.int16,endPtsOfContours:new V.Array(V.uint16,"numberOfContours"),instructions:new V.Array(V.uint8,V.uint16),flags:new V.Array(V.uint8,0),xPoints:new V.Array(Ca,0),yPoints:new V.Array(Ca,0)}),Ea=function(){function t(){J(this,t)}return t.prototype.encodeSimple=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],i=[],o=[],a=0,s=0,u=0,c=0,l=0,f=0;f0&&(o.push(a),a=0),o.push(v),c=v),s=d,u=g,l++}"closePath"===h.command&&n.push(l-1)}t.commands.length>1&&"closePath"!==t.commands[t.commands.length-1].command&&n.push(l-1);var w=t.bbox,x={numberOfContours:n.length,xMin:w.minX,yMin:w.minY,xMax:w.maxX,yMax:w.maxY,endPtsOfContours:n,instructions:e,flags:o,xPoints:r,yPoints:i},S=Aa.size(x),k=4-S%4,_=new V.EncodeStream(S+k);return Aa.encode(_,x),0!==k&&_.fill(0,k),_.buffer},t.prototype._encodePoint=function(t,e,n,r,i,o){var a=t-e;return t===e?r|=o:(-255<=a&&a<=255&&(r|=i,a<0?a=-a:r|=o),n.push(a)),r},t}(),Pa=function(t){function n(e){J(this,n);var r=tt(this,t.call(this,e));return r.glyphEncoder=new Ea,r}return et(n,t),n.prototype._addGlyph=function(t){var n=this.font.getGlyph(t),r=n._decode(),i=this.font.loca.offsets[t],o=this.font.loca.offsets[t+1],a=this.font._getTableStream("glyf");a.pos+=i;var s=a.readBuffer(o-i);if(r&&r.numberOfContours<0){s=new e(s);for(var u=r.components,c=Array.isArray(u),l=0,u=c?u:H(u);;){var f;if(c){if(l>=u.length)break;f=u[l++]}else{if(l=u.next(),l.done)break;f=l.value}var h=f;t=this.includeGlyph(h.glyphID),s.writeUInt16BE(t,h.pos)}}else r&&this.font._variationProcessor&&(s=this.glyphEncoder.encodeSimple(n.path,r.instructions));return this.glyf.push(s),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:n.advanceWidth,bearing:n._getMetrics().leftBearing}),this.offset+=s.length,this.glyf.length-1},n.prototype.encode=function(t){this.glyf=[],this.offset=0,this.loca={offsets:[]},this.hmtx={metrics:[],bearings:[]};for(var e=0;e=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;this.charstrings.push(this.cff.getCharString(o));var a=this.font.getGlyph(o);a.path;for(var s in a._usedGsubrs)t[s]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,t)},n.prototype.subsetSubrs=function(t,n){for(var r=[],i=0;i=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=this.cff.fdForGlyph(s);if(null!=u){e[u]||(t.FDArray.push(ot({},this.cff.topDict.FDArray[u])),n.push({})),e[u]=!0,t.FDSelect.fds.push(t.FDArray.length-1);var c=this.font.getGlyph(s);c.path;for(var l in c._usedSubrs)n[n.length-1][l]=!0}}for(var f=0;f=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=this.font.getGlyph(a);s.path;for(var u in s._usedSubrs)e[u]=!0}var c=ot({},this.cff.topDict.Private);return c.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,e),t.FDArray=[{Private:c}],t.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},n.prototype.addString=function(t){return t?(this.strings||(this.strings=[]),this.strings.push(t),te.length+this.strings.length-1):null},n.prototype.encode=function(t){this.subsetCharstrings();var e={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},n=ot({},this.cff.topDict);n.Private=null,n.charset=e,n.Encoding=null,n.CharStrings=this.charstrings;for(var r=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"],i=0;i1&&void 0!==arguments[1]?arguments[1]:null;J(this,t),this.stream=e,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory();for(var r in this.directory.tables){var i=this.directory.tables[r];di[r]&&i.length>0&&X(this,r,{get:this._getTable.bind(this,i)})}n&&(this._variationProcessor=new ka(this,n))}return t.probe=function(t){var e=t.toString("ascii",0,4);return"true"===e||"OTTO"===e||e===String.fromCharCode(0,1,0,0)},t.prototype._getTable=function(t){if(!(t.tag in this._tables))try{this._tables[t.tag]=this._decodeTable(t)}catch(t){gt.logErrors}return this._tables[t.tag]},t.prototype._getTableStream=function(t){var e=this.directory.tables[t];return e?(this.stream.pos=e.offset,this.stream):null},t.prototype._decodeDirectory=function(){return this.directory=vi.decode(this.stream,{_startOffset:0})},t.prototype._decodeTable=function(t){var e=this.stream.pos,n=this._getTableStream(t.tag),r=di[t.tag].decode(n,this,t.length);return this.stream.pos=e,r},t.prototype.getName=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n=this.name.records[t];return n?n[e]:null},t.prototype.hasGlyphForCodePoint=function(t){return!!this._cmapProcessor.lookup(t)},t.prototype.glyphForCodePoint=function(t){return this.getGlyph(this._cmapProcessor.lookup(t),[t])},t.prototype.glyphsForString=function(t){for(var e=[],n=t.length,r=0,i=-1,o=-1;r<=n;){var a=0,s=0;if(r1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.glyf?this._glyphs[t]=new ya(t,e,this):this.directory.tables["CFF "]&&(this._glyphs[t]=new ma(t,e,this))),this._glyphs[t]||null},t.prototype.getGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.sbix?this._glyphs[t]=new wa(t,e,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[t]=new Sa(t,e,this):this._getBaseGlyph(t,e)),this._glyphs[t]||null},t.prototype.createSubset=function(){return this.directory.tables["CFF "]?new Ia(this):new Pa(this)},t.prototype.getVariation=function(e){if(!this.directory.tables.fvar||!this.directory.tables.gvar||!this.directory.tables.glyf)throw new Error("Variations require a font with the fvar, gvar, and glyf tables.");if("string"==typeof e&&(e=this.namedVariations[e]),"object"!==(void 0===e?"undefined":K(e)))throw new Error("Variation settings must be either a variation name or settings object.");var n=this.fvar.axis.map(function(t,n){var r=t.axisTag.trim();return r in e?Math.max(t.minValue,Math.min(t.maxValue,e[r])):t.defaultValue}),r=new V.DecodeStream(this.stream.buffer);r.pos=this._directoryPos;var i=new t(r,n);return i._tables=this._tables,i},t.prototype.getFont=function(t){return this.getVariation(t)},Q(t,[{key:"postscriptName",get:function(){var t=this.name.records.postscriptName;return t[Y(t)[0]]}},{key:"fullName",get:function(){return this.getName("fullName")}},{key:"familyName",get:function(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function(){return this.getName("fontSubfamily")}},{key:"copyright",get:function(){return this.getName("copyright")}},{key:"version",get:function(){return this.getName("version")}},{key:"ascent",get:function(){return this.hhea.ascent}},{key:"descent",get:function(){return this.hhea.descent}},{key:"lineGap",get:function(){return this.hhea.lineGap}},{key:"underlinePosition",get:function(){return this.post.underlinePosition}},{key:"underlineThickness",get:function(){return this.post.underlineThickness}},{key:"italicAngle",get:function(){return this.post.italicAngle}},{key:"capHeight",get:function(){var t=this["OS/2"];return t?t.capHeight:this.ascent}},{key:"xHeight",get:function(){var t=this["OS/2"];return t?t.xHeight:0}},{key:"numGlyphs",get:function(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function(){return this.head.unitsPerEm}},{key:"bbox",get:function(){return Z(new Si(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function(){return new bi(this.cmap)}},{key:"characterSet",get:function(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function(){return new oa(this)}},{key:"availableFeatures",get:function(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function(){var t={};if(!this.fvar)return t;for(var e=this.fvar.axis,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.axisTag.trim()]={name:o.name.en,min:o.minValue,default:o.defaultValue,max:o.maxValue}}return t}},{key:"namedVariations",get:function(){var t={};if(!this.fvar)return t;for(var e=this.fvar.instance,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a={},s=0;s=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.tag]=o}this.tables=t};var Ba=function(t){function n(){return J(this,n),tt(this,t.apply(this,arguments))}return et(n,t),n.probe=function(t){return"wOFF"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=La.decode(this.stream,{_startOffset:0})},n.prototype._getTableStream=function(t){var n=this.directory.tables[t];if(n){if(this.stream.pos=n.offset,n.compLength>>6&3},transformed:function(t){return"glyf"===t.tag||"loca"===t.tag?0===t.transformVersion:0!==t.transformVersion},transformLength:new V.Optional(Ma,function(t){return t.transformed})}),Da=new V.Struct({tag:new V.String(4),flavor:V.uint32,length:V.uint32,numTables:V.uint16,reserved:new V.Reserved(V.uint16),totalSfntSize:V.uint32,totalCompressedSize:V.uint32,majorVersion:V.uint16,minorVersion:V.uint16,metaOffset:V.uint32,metaLength:V.uint32,metaOrigLength:V.uint32,privOffset:V.uint32,privLength:V.uint32,tables:new V.Array(Fa,"numTables")});Da.process=function(){for(var t={},e=0;e1&&void 0!==arguments[1]?arguments[1]:[];if(!this._glyphs[e])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[e]=new Ra(e,n,this)):t.prototype._getBaseGlyph.call(this,e,n)},n.prototype._transformGlyfTable=function(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;for(var t=GlyfTable.decode(this.stream),e=[],n=0;n0){for(var o=[],a=0,s=0;s=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=new V.DecodeStream(this.stream.buffer);a.pos=o;var s=new Oa(a);if(s.postscriptName===t)return s}return null},Q(t,[{key:"fonts",get:function(){for(var t=[],e=this.header.offsets,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=new V.DecodeStream(this.stream.buffer);a.pos=o,t.push(new Oa(a))}return t}}]),t}(),Za=new V.String(V.uint8),Ya=(new V.Struct({len:V.uint32,buf:new V.Buffer("len")}),new V.Struct({id:V.uint16,nameOffset:V.int16,attr:V.uint8,dataOffset:V.uint24,handle:V.uint32})),Ka=new V.Struct({name:new V.String(4),maxTypeIndex:V.uint16,refList:new V.Pointer(V.uint16,new V.Array(Ya,function(t){return t.maxTypeIndex+1}),{type:"parent"})}),Xa=new V.Struct({length:V.uint16,types:new V.Array(Ka,function(t){return t.length+1})}),Ja=new V.Struct({reserved:new V.Reserved(V.uint8,24),typeList:new V.Pointer(V.uint16,Xa),nameListOffset:new V.Pointer(V.uint16,"void")}),Qa=new V.Struct({dataOffset:V.uint32,map:new V.Pointer(V.uint32,Ja),dataLength:V.uint32,mapLength:V.uint32}),$a=function(){function t(e){J(this,t),this.stream=e,this.header=Qa.decode(this.stream);for(var n=this.header.map.typeList.types,r=Array.isArray(n),i=0,n=r?n:H(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a.refList,u=Array.isArray(s),c=0,s=u?s:H(s);;){var l;if(u){if(c>=s.length)break;l=s[c++]}else{if(c=s.next(),c.done)break;l=c.value}var f=l;f.nameOffset>=0?(this.stream.pos=f.nameOffset+this.header.map.nameListOffset,f.name=Za.decode(this.stream)):f.name=null}"sfnt"===a.name&&(this.sfnt=a)}}return t.probe=function(t){var e=new V.DecodeStream(t);try{var n=Qa.decode(e)}catch(t){return!1}for(var r=n.map.typeList.types,i=Array.isArray(r),o=0,r=i?r:H(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}if("sfnt"===a.name)return!0}return!1},t.prototype.getFont=function(t){if(!this.sfnt)return null;for(var e=this.sfnt.refList,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=this.header.dataOffset+o.dataOffset+4,s=new V.DecodeStream(this.stream.buffer.slice(a)),u=new Oa(s);if(u.postscriptName===t)return u}return null},Q(t,[{key:"fonts",get:function(){for(var t=[],e=this.sfnt.refList,n=Array.isArray(e),r=0,e=n?e:H(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=this.header.dataOffset+o.dataOffset+4,s=new V.DecodeStream(this.stream.buffer.slice(a));t.push(new Oa(s))}return t}}]),t}();gt.registerFormat(Oa),gt.registerFormat(Ba),gt.registerFormat(Na),gt.registerFormat(Ha),gt.registerFormat($a),t.exports=gt}).call(e,n(2).Buffer,n(34))},function(t,e,n){(function(){var t,r,i,o;e.EncodeStream=n(82),e.DecodeStream=n(83),e.Array=n(105),e.LazyArray=n(108),e.Bitfield=n(109),e.Boolean=n(110),e.Buffer=n(111),e.Enum=n(112),e.Optional=n(113),e.Reserved=n(114),e.String=n(115),e.Struct=n(116),e.VersionedStruct=n(117),i=n(106);for(t in i)r=i[t],e[t]=r;o=n(118);for(t in o)r=o[t],e[t]=r}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o,a,s={}.hasOwnProperty,u=function(t,e){function n(){this.constructor=t}for(var r in e)s.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};a=n(30),r=n(83);try{o=n(84)}catch(t){}i=function(t){function n(t){null==t&&(t=65536),n.__super__.constructor.apply(this,arguments),this.buffer=new e(t),this.bufferOffset=0,this.pos=0}var i;u(n,t);for(i in e.prototype)"write"===i.slice(0,5)&&function(t){var e;e=+r.TYPES[t.replace(/write|[BL]E/g,"")],n.prototype[t]=function(n){return this.ensure(e),this.buffer[t](n,this.bufferOffset),this.bufferOffset+=e,this.pos+=e}}(i);return n.prototype._read=function(){},n.prototype.ensure=function(t){if(this.bufferOffset+t>this.buffer.length)return this.flush()},n.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new e(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},n.prototype.writeBuffer=function(t){return this.flush(),this.push(t),this.pos+=t.length},n.prototype.writeString=function(t,n){var r,i,a,s,u;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new e(t,n));case"utf16be":for(r=new e(t,"utf16le"),a=s=0,u=r.length-1;s>>16&255,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=255&t,this.pos+=3},n.prototype.writeUInt24LE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=255&t,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=t>>>16&255,this.pos+=3},n.prototype.writeInt24BE=function(t){return t>=0?this.writeUInt24BE(t):this.writeUInt24BE(t+16777215+1)},n.prototype.writeInt24LE=function(t){return t>=0?this.writeUInt24LE(t):this.writeUInt24LE(t+16777215+1)},n.prototype.fill=function(t,n){var r;return n0?e.concat([a,s]):a},o.decode=function(t,n,r){"string"==typeof t&&(o.skipDecodeWarning||(o.skipDecodeWarning=!0),t=new e(""+(t||""),"binary"));var i=o.getDecoder(n,r),a=i.write(t),s=i.end();return s?a+s:a},o.encodingExists=function(t){try{return o.getCodec(t),!0}catch(t){return!1}},o.toEncoding=o.encode,o.fromEncoding=o.decode,o._codecDataCache={},o.getCodec=function(t){o.encodings||(o.encodings=n(86));for(var e=(""+t).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g,""),r={};;){var i=o._codecDataCache[e];if(i)return i;var a=o.encodings[e];switch(typeof a){case"string":e=a;break;case"object":for(var s in a)r[s]=a[s];r.encodingName||(r.encodingName=e),e=a.type;break;case"function":return r.encodingName||(r.encodingName=e),i=new a(r,o),o._codecDataCache[r.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+e+"')")}}},o.getEncoder=function(t,e){var n=o.getCodec(t),r=new n.encoder(e,n);return n.bomAware&&e&&e.addBOM&&(r=new i.PrependBOM(r,e)),r},o.getDecoder=function(t,e){var n=o.getCodec(t),r=new n.decoder(e,n);return!n.bomAware||e&&e.stripBOM===!1||(r=new i.StripBOM(r,e)),r};var a=void 0!==r&&r.versions&&r.versions.node;if(a){var s=a.split(".").map(Number);(s[0]>0||s[1]>=10)&&n(103)(o),n(104)(o)}}).call(e,n(2).Buffer,n(34))},function(t,e){"use strict";function n(t,e){this.encoder=t,this.addBOM=!0}function r(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}e.PrependBOM=n,n.prototype.write=function(t){return this.addBOM&&(t="\ufeff"+t,this.addBOM=!1),this.encoder.write(t)},n.prototype.end=function(){return this.encoder.end()},e.StripBOM=r,r.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e?e:("\ufeff"===e[0]&&(e=e.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,e)},r.prototype.end=function(){return this.decoder.end()}},function(t,e,n){"use strict";for(var r=[n(87),n(88),n(89),n(90),n(91),n(92),n(93),n(94)],i=0;i>>6),n[r++]=128+(63&o)):(n[r++]=224+(o>>>12),n[r++]=128+(o>>>6&63),n[r++]=128+(63&o))}return n.slice(0,r)},s.prototype.end=function(){},u.prototype.write=function(t){for(var e=this.acc,n=this.contBytes,r=this.accBytes,i="",o=0;o0&&(i+=this.defaultCharUnicode,n=0),a<128?i+=String.fromCharCode(a):a<224?(e=31&a,n=1,r=1):a<240?(e=15&a,n=2,r=1):i+=this.defaultCharUnicode):n>0?(e=e<<6|63&a,n--,r++,0===n&&(i+=2===r&&e<128&&e>0?this.defaultCharUnicode:3===r&&e<2048?this.defaultCharUnicode:String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=n,this.accBytes=r,i},u.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}}).call(e,n(2).Buffer)},function(t,e,n){(function(t){"use strict";function n(){}function r(){}function i(){this.overflowByte=-1}function o(t,e){this.iconv=e}function a(t,e){t=t||{},void 0===t.addBOM&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}function s(t,e){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=t||{},this.iconv=e.iconv}function u(t,e){var n=e||"utf-16le";if(t.length>=2)if(254==t[0]&&255==t[1])n="utf-16be";else if(255==t[0]&&254==t[1])n="utf-16le";else{for(var r=0,i=0,o=Math.min(t.length-t.length%2,64),a=0;ar?n="utf-16be":i0&&(e=this.iconv.decode(new t(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e},e.utf7imap=o,o.prototype.encoder=a,o.prototype.decoder=s,o.prototype.bomAware=!0,a.prototype.write=function(e){for(var n=this.inBase64,r=this.base64Accum,i=this.base64AccumIdx,o=new t(5*e.length+10),a=0,s=0;s0&&(a+=o.write(r.slice(0,i).toString("base64").replace(/\//g,",").replace(/=+$/,""),a),i=0),o[a++]=h,n=!1),n||(o[a++]=u,u===p&&(o[a++]=h))):(n||(o[a++]=p,n=!0),n&&(r[i++]=u>>8,r[i++]=255&u,i==r.length&&(a+=o.write(r.toString("base64").replace(/\//g,","),a),i=0)))}return this.inBase64=n,this.base64AccumIdx=i,o.slice(0,a)},a.prototype.end=function(){var e=new t(10),n=0;return this.inBase64&&(this.base64AccumIdx>0&&(n+=e.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),n),this.base64AccumIdx=0),e[n++]=h,this.inBase64=!1),e.slice(0,n)};var d=c.slice();d[",".charCodeAt(0)]=!0,s.prototype.write=function(e){for(var n="",r=0,i=this.inBase64,o=this.base64Accum,a=0;a0&&(e=this.iconv.decode(new t(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e}}).call(e,n(2).Buffer)},function(t,e,n){(function(t){"use strict";function n(e,n){if(!e)throw new Error("SBCS codec is called without the data.");if(!e.chars||128!==e.chars.length&&256!==e.chars.length)throw new Error("Encoding '"+e.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===e.chars.length){for(var r="",i=0;i<128;i++)r+=String.fromCharCode(i);e.chars=r+e.chars}this.decodeBuf=new t(e.chars,"ucs2");var o=new t(65536);o.fill(n.defaultCharSingleByte.charCodeAt(0));for(var i=0;i?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs", +chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},function(t,e,n){(function(t){"use strict";function n(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var n=t.table();this.decodeTables=[],this.decodeTables[0]=c.slice(0),this.decodeTableSeq=[];for(var r=0;re)return-1;for(var n=0,r=t.length;n0;t>>=8)e.push(255&t);0==e.length&&e.push(0);for(var n=this.decodeTables[0],r=e.length-1;r>0;r--){var i=n[e[r]];if(i==a)n[e[r]]=u-this.decodeTables.length,this.decodeTables.push(n=c.slice(0));else{if(!(i<=u))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16));n=this.decodeTables[u-i]}}return n},n.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),n=this._getDecodeTrieNode(e);e&=255;for(var r=1;r255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)},n.prototype._getEncodeBucket=function(t){var e=t>>8;return void 0===this.encodeTable[e]&&(this.encodeTable[e]=c.slice(0)),this.encodeTable[e]},n.prototype._setEncodeChar=function(t,e){var n=this._getEncodeBucket(t),r=255&t;n[r]<=-10?this.encodeTableSeq[-10-n[r]][-1]=e:n[r]==a&&(n[r]=e)},n.prototype._setEncodeSequence=function(t,e){var n,r=t[0],i=this._getEncodeBucket(r),o=255&r;i[o]<=-10?n=this.encodeTableSeq[-10-i[o]]:(n={},i[o]!==a&&(n[-1]=i[o]),i[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(n));for(var s=1;s=0?this._setEncodeChar(o,a):o<=u?this._fillEncodeTable(u-o,a<<8,n):o<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-o],a))}},r.prototype.write=function(e){for(var n=new t(e.length*(this.gb18030?4:3)),r=this.leadSurrogate,i=this.seqObj,s=-1,u=0,c=0;;){if(s===-1){if(u==e.length)break;var l=e.charCodeAt(u++)}else{var l=s;s=-1}if(55296<=l&&l<57344)if(l<56320){if(r===-1){r=l;continue}r=l,l=a}else r!==-1?(l=65536+1024*(r-55296)+(l-56320),r=-1):l=a;else r!==-1&&(s=l,l=a,r=-1);var f=a;if(void 0!==i&&l!=a){var h=i[l];if("object"==typeof h){i=h;continue}"number"==typeof h?f=h:void 0==h&&void 0!==(h=i[-1])&&(f=h,s=l),i=void 0}else if(l>=0){var p=this.encodeTable[l>>8];if(void 0!==p&&(f=p[255&l]),f<=-10){i=this.encodeTableSeq[-10-f];continue}if(f==a&&this.gb18030){var d=o(this.gb18030.uChars,l);if(d!=-1){var f=this.gb18030.gbChars[d]+(l-this.gb18030.uChars[d]);n[c++]=129+Math.floor(f/12600),f%=12600,n[c++]=48+Math.floor(f/1260),f%=1260,n[c++]=129+Math.floor(f/10),f%=10,n[c++]=48+f;continue}}}f===a&&(f=this.defaultCharSingleByte),f<256?n[c++]=f:f<65536?(n[c++]=f>>8,n[c++]=255&f):(n[c++]=f>>16,n[c++]=f>>8&255,n[c++]=255&f)}return this.seqObj=i,this.leadSurrogate=r,n.slice(0,c)},r.prototype.end=function(){if(this.leadSurrogate!==-1||void 0!==this.seqObj){var e=new t(10),n=0;if(this.seqObj){var r=this.seqObj[-1];void 0!==r&&(r<256?e[n++]=r:(e[n++]=r>>8,e[n++]=255&r)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(e[n++]=this.defaultCharSingleByte,this.leadSurrogate=-1),e.slice(0,n)}},r.prototype.findIdx=o,i.prototype.write=function(e){var n,r=new t(2*e.length),i=this.nodeIdx,c=this.prevBuf,l=this.prevBuf.length,f=-this.prevBuf.length;l>0&&(c=t.concat([c,e.slice(0,10)]));for(var h=0,p=0;h=0?e[h]:c[h+l],n=this.decodeTables[i][d];if(n>=0);else if(n===a)h=f,n=this.defaultCharUnicode.charCodeAt(0);else if(n===s){var g=f>=0?e.slice(f,h+1):c.slice(f+l,h+1+l),v=12600*(g[0]-129)+1260*(g[1]-48)+10*(g[2]-129)+(g[3]-48),y=o(this.gb18030.gbChars,v);n=this.gb18030.uChars[y]+v-this.gb18030.gbChars[y]}else{if(n<=u){i=u-n;continue}if(!(n<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+n+" at "+i+"/"+d);for(var m=this.decodeTableSeq[-10-n],b=0;b>8;n=m[m.length-1]}if(n>65535){n-=65536;var w=55296+Math.floor(n/1024);r[p++]=255&w,r[p++]=w>>8,n=56320+n%1024}r[p++]=255&n,r[p++]=n>>8,i=0,f=h+1}return this.nodeIdx=i,this.prevBuf=f>=0?e.slice(f):c.slice(f+l),r.slice(0,p).toString("ucs2")},i.prototype.end=function(){for(var e="";this.prevBuf.length>0;){e+=this.defaultCharUnicode;var n=this.prevBuf.slice(1);this.prevBuf=new t(0),this.nodeIdx=0,n.length>0&&(e+=this.write(n))}return this.nodeIdx=0,e}}).call(e,n(2).Buffer)},function(t,e,n){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return n(95)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return n(96)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return n(97)}},gbk:{type:"_dbcs",table:function(){return n(97).concat(n(98))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return n(97).concat(n(98))},gb18030:function(){return n(99)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return n(100)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return n(101)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return n(101).concat(n(102))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(t,e){t.exports=[["0","\0",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},function(t,e){ +t.exports=[["0","\0",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},function(t,e){ +t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},function(t,e){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},function(t,e){t.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},function(t,e){ +t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},function(t,e){ +t.exports=[["0","\0",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},function(t,e){t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},function(t,e,n){(function(e){"use strict";function r(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,o.call(this,e)}function i(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",o.call(this,e)}var o=n(30).Transform;t.exports=function(t){t.encodeStream=function(e,n){return new r(t.getEncoder(e,n),n)},t.decodeStream=function(e,n){return new i(t.getDecoder(e,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=r,t.IconvLiteDecoderStream=i,t._collect=i.prototype.collect},r.prototype=Object.create(o.prototype,{constructor:{value:r}}),r.prototype._transform=function(t,e,n){if("string"!=typeof t)return n(new Error("Iconv encoding stream needs strings as its input."));try{var r=this.conv.write(t);r&&r.length&&this.push(r),n()}catch(t){n(t)}},r.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(e){t(e)}},r.prototype.collect=function(t){var n=[];return this.on("error",t),this.on("data",function(t){n.push(t)}),this.on("end",function(){t(null,e.concat(n))}),this},i.prototype=Object.create(o.prototype,{constructor:{value:i}}),i.prototype._transform=function(t,n,r){if(!e.isBuffer(t))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var i=this.conv.write(t);i&&i.length&&this.push(i,this.encoding),r()}catch(t){r(t)}},i.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(e){t(e)}},i.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(t){e+=t}),this.on("end",function(){t(null,e)}),this}}).call(e,n(2).Buffer)},function(t,e,n){(function(e){"use strict";t.exports=function(t){var r=void 0;t.supportsNodeEncodingsExtension=!(new e(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!r&&(r={},t.supportsNodeEncodingsExtension)){var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};e.isNativeEncoding=function(t){return t&&i[t.toLowerCase()]};var o=n(2).SlowBuffer;if(r.SlowBufferToString=o.prototype.toString,o.prototype.toString=function(n,i,o){return n=String(n||"utf8").toLowerCase(),e.isNativeEncoding(n)?r.SlowBufferToString.call(this,n,i,o):(void 0===i&&(i=0),void 0===o&&(o=this.length),t.decode(this.slice(i,o),n))},r.SlowBufferWrite=o.prototype.write,o.prototype.write=function(n,i,o,a){if(isFinite(i))isFinite(o)||(a=o,o=void 0);else{var s=a;a=i,i=o,o=s}i=+i||0;var u=this.length-i;if(o?(o=+o)>u&&(o=u):o=u,a=String(a||"utf8").toLowerCase(),e.isNativeEncoding(a))return r.SlowBufferWrite.call(this,n,i,o,a);if(n.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var c=t.encode(n,a);return c.lengthf&&(o=f):o=f,n.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var h=t.encode(n,a);return h.length>1),e.__super__.constructor.call(this,"Int"+t,n),this._point=1<=this.length))return null==this.items[t]&&(e=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*t,this.items[t]=this.type.decode(this.stream,this.ctx),this.stream.pos=e),this.items[t]},t.prototype.toArray=function(){var t,e,n,r;for(r=[],t=e=0,n=this.length;e=t.length?(this._t=void 0,i(1)):"keys"==e?i(0,n):"values"==e?i(0,t[n]):i(0,[n,t[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(153),i=n(138),o=n(154),a=n(142),s=n(131),u=n(151),c=n(155),l=n(169),f=n(171),h=n(170)("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,g,v,y,m){c(n,e,g);var b,w,x,S=function(t){if(!p&&t in A)return A[t];switch(t){case"keys":return function(){return new n(this,t)};case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",_="values"==v,C=!1,A=t.prototype,E=A[h]||A["@@iterator"]||v&&A[v],P=E||S(v),I=v?_?S("entries"):P:void 0,O="Array"==e?A.entries||E:E;if(O&&(x=f(O.call(new t)))!==Object.prototype&&(l(x,k,!0),r||s(x,h)||a(x,h,d)),_&&E&&"values"!==E.name&&(C=!0,P=function(){return E.call(this)}),r&&!m||!p&&!C&&A[h]||a(A,h,P),u[e]=P,u[k]=d,v)if(b={values:_?P:S("values"),keys:y?P:S("keys"),entries:I},m)for(w in b)w in A||o(A,w,b[w]);else i(i.P+i.F*(p||C),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){t.exports=n(142)},function(t,e,n){"use strict";var r=n(156),i=n(128),o=n(169),a={};n(142)(a,n(170)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(144),i=n(157),o=n(167),a=n(164)("IE_PROTO"),s=function(){},u=function(){var t,e=n(135)("iframe"),r=o.length;for(e.style.display="none",n(168).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(""),t.close(),u=t.F;r--;)delete u.prototype[o[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=u(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(143),i=n(144),o=n(158);t.exports=n(133)?Object.defineProperties:function(t,e){i(t);for(var n,a=o(e),s=a.length,u=0;s>u;)r.f(t,n=a[u++],e[n]);return t}},function(t,e,n){var r=n(159),i=n(167);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(131),i=n(122),o=n(160)(!1),a=n(164)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),u=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;e.length>u;)r(s,n=e[u++])&&(~o(c,n)||c.push(n));return c}},function(t,e,n){var r=n(122),i=n(161),o=n(163);t.exports=function(t){return function(e,n,a){var s,u=r(e),c=i(u.length),l=o(a,c);if(t&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(162),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(162),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(165)("keys"),i=n(166);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(136),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){t.exports=n(136).document&&document.documentElement},function(t,e,n){var r=n(143).f,i=n(131),o=n(170)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(165)("wks"),i=n(166),o=n(136).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(131),i=n(172),o=n(164)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(125);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";var r=n(174)(!0);n(152)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(162),i=n(125);t.exports=function(t){return function(e,n){var o,a,s=String(i(e)),u=r(n),c=s.length;return u<0||u>=c?t?"":void 0:(o=s.charCodeAt(u),o<55296||o>56319||u+1===c||(a=s.charCodeAt(u+1))<56320||a>57343?t?s.charAt(u):o:t?s.slice(u,u+2):a-56320+(o-55296<<10)+65536)}}},function(t,e,n){var r=n(144),i=n(176);t.exports=n(139).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},function(t,e,n){var r=n(177),i=n(170)("iterator"),o=n(151);t.exports=n(139).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){var r=n(124),i=n(170)("toStringTag"),o="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),i))?n:o?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,n){t.exports={default:n(179),__esModule:!0}},function(t,e,n){n(180),t.exports=n(139).Object.freeze},function(t,e,n){var r=n(130),i=n(181).onFreeze;n(137)("freeze",function(t){return function(e){return t&&r(e)?t(i(e)):e}})},function(t,e,n){var r=n(166)("meta"),i=n(130),o=n(131),a=n(143).f,s=0,u=Object.isExtensible||function(){return!0},c=!n(134)(function(){return u(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,r)){if(!u(t))return"F";if(!e)return"E";l(t)}return t[r].i},h=function(t,e){if(!o(t,r)){if(!u(t))return!0;if(!e)return!1;l(t)}return t[r].w},p=function(t){return c&&d.NEED&&u(t)&&!o(t,r)&&l(t),t},d=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:h,onFreeze:p}},function(t,e,n){t.exports={default:n(183),__esModule:!0}},function(t,e,n){n(184),t.exports=n(139).Object.keys},function(t,e,n){var r=n(172),i=n(158);n(137)("keys",function(){return function(t){return i(r(t))}})},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(186),o=r(i),a=n(189),s=r(a),u="function"==typeof s.default&&"symbol"==typeof o.default?function(t){return typeof t}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":typeof t};e.default="function"==typeof s.default&&"symbol"===u(o.default)?function(t){return void 0===t?"undefined":u(t)}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":void 0===t?"undefined":u(t)}},function(t,e,n){t.exports={default:n(187),__esModule:!0}},function(t,e,n){n(173),n(147),t.exports=n(188).f("iterator")},function(t,e,n){e.f=n(170)},function(t,e,n){t.exports={default:n(190),__esModule:!0}},function(t,e,n){n(191),n(199),n(200),n(201),t.exports=n(139).Symbol},function(t,e,n){"use strict";var r=n(136),i=n(131),o=n(133),a=n(138),s=n(154),u=n(181).KEY,c=n(134),l=n(165),f=n(169),h=n(166),p=n(170),d=n(188),g=n(192),v=n(193),y=n(194),m=n(196),b=n(144),w=n(122),x=n(129),S=n(128),k=n(156),_=n(197),C=n(126),A=n(143),E=n(158),P=C.f,I=A.f,O=_.f,T=r.Symbol,L=r.JSON,B=L&&L.stringify,R=p("_hidden"),M=p("toPrimitive"),z={}.propertyIsEnumerable,F=l("symbol-registry"),D=l("symbols"),N=l("op-symbols"),U=Object.prototype,W="function"==typeof T,j=r.QObject,G=!j||!j.prototype||!j.prototype.findChild,V=o&&c(function(){return 7!=k(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=P(U,e);r&&delete U[e],I(t,e,n),r&&t!==U&&I(U,e,r)}:I,q=function(t){var e=D[t]=k(T.prototype);return e._k=t,e},H=W&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},Z=function(t,e,n){return t===U&&Z(N,e,n),b(t),e=x(e,!0),b(n),i(D,e)?(n.enumerable?(i(t,R)&&t[R][e]&&(t[R][e]=!1),n=k(n,{enumerable:S(0,!1)})):(i(t,R)||I(t,R,S(1,{})),t[R][e]=!0),V(t,e,n)):I(t,e,n)},Y=function(t,e){b(t);for(var n,r=y(e=w(e)),i=0,o=r.length;o>i;)Z(t,n=r[i++],e[n]);return t},K=function(t,e){return void 0===e?k(t):Y(k(t),e)},X=function(t){var e=z.call(this,t=x(t,!0));return!(this===U&&i(D,t)&&!i(N,t))&&(!(e||!i(this,t)||!i(D,t)||i(this,R)&&this[R][t])||e)},J=function(t,e){if(t=w(t),e=x(e,!0),t!==U||!i(D,e)||i(N,e)){var n=P(t,e);return!n||!i(D,e)||i(t,R)&&t[R][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=O(w(t)),r=[],o=0;n.length>o;)i(D,e=n[o++])||e==R||e==u||r.push(e);return r},$=function(t){for(var e,n=t===U,r=O(n?N:w(t)),o=[],a=0;r.length>a;)!i(D,e=r[a++])||n&&!i(U,e)||o.push(D[e]);return o};W||(T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(N,n),i(this,R)&&i(this[R],t)&&(this[R][t]=!1),V(this,t,S(1,n))};return o&&G&&V(U,t,{configurable:!0,set:e}),q(t)},s(T.prototype,"toString",function(){return this._k}),C.f=J,A.f=Z,n(198).f=_.f=Q,n(127).f=X,n(195).f=$,o&&!n(153)&&s(U,"propertyIsEnumerable",X,!0),d.f=function(t){return q(p(t))}),a(a.G+a.W+a.F*!W,{Symbol:T});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)p(tt[et++]);for(var tt=E(p.store),et=0;tt.length>et;)g(tt[et++]);a(a.S+a.F*!W,"Symbol",{for:function(t){return i(F,t+="")?F[t]:F[t]=T(t)},keyFor:function(t){if(H(t))return v(F,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!W,"Object",{create:K,defineProperty:Z,defineProperties:Y,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:$}),L&&a(a.S+a.F*(!W||c(function(){var t=T();return"[null]"!=B([t])||"{}"!=B({a:t})||"{}"!=B(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!H(t)){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);return e=r[1],"function"==typeof e&&(n=e),!n&&m(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!H(e))return e}),r[1]=e,B.apply(L,r)}}}),T.prototype[M]||n(142)(T.prototype,M,T.prototype.valueOf),f(T,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(t,e,n){var r=n(136),i=n(139),o=n(153),a=n(188),s=n(143).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},function(t,e,n){var r=n(158),i=n(122);t.exports=function(t,e){for(var n,o=i(t),a=r(o),s=a.length,u=0;s>u;)if(o[n=a[u++]]===e)return n}},function(t,e,n){var r=n(158),i=n(195),o=n(127);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var a,s=n(t),u=o.f,c=0;s.length>c;)u.call(t,a=s[c++])&&e.push(a);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(124);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(122),i=n(198).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?s(t):i(r(t))}},function(t,e,n){var r=n(159),i=n(167).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e){},function(t,e,n){n(192)("asyncIterator")},function(t,e,n){n(192)("observable")},function(t,e,n){t.exports={default:n(203),__esModule:!0}},function(t,e,n){n(204);var r=n(139).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(138);r(r.S+r.F*!n(133),"Object",{defineProperty:n(143).f})},function(t,e){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(202),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(){function t(t,e){for(var n=0;n0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(this,t);return e&&e.v},set:function(t,e){return r.def(this,0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(143).f,i=n(156),o=n(211),a=n(140),s=n(212),u=n(125),c=n(213),l=n(152),f=n(150),h=n(216),p=n(133),d=n(181).fastKey,g=p?"_s":"size",v=function(t,e){var n,r=d(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,l){var f=t(function(t,r){s(t,f,e,"_i"),t._i=i(null),t._f=void 0,t._l=void 0,t[g]=0,void 0!=r&&c(r,n,t[l],t)});return o(f.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[g]=0},delete:function(t){var e=this,n=v(e,t);if(n){var r=n.n,i=n.p;delete e._i[n.i],n.r=!0,i&&(i.n=r),r&&(r.p=i),e._f==n&&(e._f=r),e._l==n&&(e._l=i),e[g]--}return!!n},forEach:function(t){s(this,f,"forEach");for(var e,n=a(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!v(this,t)}}),p&&r(f.prototype,"size",{get:function(){return u(this[g])}}),f},def:function(t,e,n){var r,i,o=v(t,e);return o?o.v=n:(t._l=o={i:i=d(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=o),r&&(r.n=o),t[g]++,"F"!==i&&(t._i[i]=o)),t},getEntry:v,setStrong:function(t,e,n){l(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?f(0,n.k):"values"==e?f(0,n.v):f(0,[n.k,n.v]):(t._t=void 0,f(1))},n?"entries":"values",!n,!0),h(e)}}},function(t,e,n){var r=n(142);t.exports=function(t,e,n){for(var i in e)n&&t[i]?t[i]=e[i]:r(t,i,e[i]);return t}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(140),i=n(214),o=n(215),a=n(144),s=n(161),u=n(176),c={},l={},e=t.exports=function(t,e,n,f,h){var p,d,g,v,y=h?function(){return t}:u(t),m=r(n,f,e?2:1),b=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(p=s(t.length);p>b;b++)if((v=e?m(a(d=t[b])[0],d[1]):m(t[b]))===c||v===l)return v}else for(g=y.call(t);!(d=g.next()).done;)if((v=i(g,m,d.value,e))===c||v===l)return v};e.BREAK=c,e.RETURN=l},function(t,e,n){var r=n(144);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){var r=n(151),i=n(170)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){"use strict";var r=n(136),i=n(139),o=n(143),a=n(133),s=n(170)("species");t.exports=function(t){var e="function"==typeof i[t]?i[t]:r[t];a&&e&&!e[s]&&o.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e,n){"use strict";var r=n(136),i=n(138),o=n(181),a=n(134),s=n(142),u=n(211),c=n(213),l=n(212),f=n(130),h=n(169),p=n(143).f,d=n(218)(0),g=n(133);t.exports=function(t,e,n,v,y,m){var b=r[t],w=b,x=y?"set":"add",S=w&&w.prototype,k={};return g&&"function"==typeof w&&(m||S.forEach&&!a(function(){(new w).entries().next()}))?(w=e(function(e,n){l(e,w,t,"_c"),e._c=new b,void 0!=n&&c(n,y,e[x],e)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(t){var e="add"==t||"set"==t;t in S&&(!m||"clear"!=t)&&s(w.prototype,t,function(n,r){if(l(this,w,t),!e&&m&&!f(n))return"get"==t&&void 0;var i=this._c[t](0===n?0:n,r);return e?this:i})}),"size"in S&&p(w.prototype,"size",{get:function(){return this._c.size}})):(w=v.getConstructor(e,t,y,x),u(w.prototype,n),o.NEED=!0),h(w,t),k[t]=w,i(i.G+i.W+i.F,k),m||v.setStrong(w,t,y),w}},function(t,e,n){var r=n(140),i=n(123),o=n(172),a=n(161),s=n(219);t.exports=function(t,e){var n=1==t,u=2==t,c=3==t,l=4==t,f=6==t,h=5==t||f,p=e||s;return function(e,s,d){for(var g,v,y=o(e),m=i(y),b=r(s,d,3),w=a(m.length),x=0,S=n?p(e,w):u?p(e,0):void 0;w>x;x++)if((h||x in m)&&(g=m[x],v=b(g,x,y),t))if(n)S[x]=v;else if(v)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:S.push(g)}else if(l)return!1;return f?-1:c||l?l:S}}},function(t,e,n){var r=n(220);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(130),i=n(196),o=n(170)("species");t.exports=function(t){var e;return i(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(138);r(r.P+r.R,"Map",{toJSON:n(222)("Map")})},function(t,e,n){var r=n(177),i=n(223);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}} +},function(t,e,n){var r=n(213);t.exports=function(t,e){var n=[];return r(t,!1,n.push,n,e),n}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(185),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,i.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(226),o=r(i),a=n(230),s=r(a),u=n(185),c=r(u);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,c.default)(e)));t.prototype=(0,s.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(o.default?(0,o.default)(t,e):t.__proto__=e)}},function(t,e,n){t.exports={default:n(227),__esModule:!0}},function(t,e,n){n(228),t.exports=n(139).Object.setPrototypeOf},function(t,e,n){var r=n(138);r(r.S,"Object",{setPrototypeOf:n(229).set})},function(t,e,n){var r=n(130),i=n(144),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n(140)(Function.call,n(126).f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){t.exports={default:n(231),__esModule:!0}},function(t,e,n){n(232);var r=n(139).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){var r=n(138);r(r.S,"Object",{create:n(156)})},function(t,e,n){t.exports={default:n(234),__esModule:!0}},function(t,e,n){n(235);var r=n(139).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){var r=n(138);r(r.S+r.F*!n(133),"Object",{defineProperties:n(157)})},function(t,e,n){function r(t){return null===t||void 0===t}function i(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function o(t,e,n){var o,l;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(u(t))return!!u(e)&&(t=a.call(t),e=a.call(e),c(t,e,n));if(i(t)){if(!i(e))return!1;if(t.length!==e.length)return!1;for(o=0;o=0;o--)if(f[o]!=h[o])return!1;for(o=f.length-1;o>=0;o--)if(l=f[o],!c(t[l],e[l],n))return!1;return typeof t==typeof e}var a=Array.prototype.slice,s=n(237),u=n(238),c=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:o(t,e,n))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function r(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var i="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=i?n:r,e.supported=n,e.unsupported=r},function(t,e,n){t.exports={default:n(240),__esModule:!0}},function(t,e,n){n(241),t.exports=n(139).Object.assign},function(t,e,n){var r=n(138);r(r.S+r.F,"Object",{assign:n(242)})},function(t,e,n){"use strict";var r=n(158),i=n(195),o=n(127),a=n(172),s=n(123),u=Object.assign;t.exports=!u||n(134)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=r})?function(t,e){for(var n=a(t),u=arguments.length,c=1,l=i.f,f=o.f;u>c;)for(var h,p=s(arguments[c++]),d=l?r(p).concat(l(p)):r(p),g=d.length,v=0;g>v;)f.call(p,h=d[v++])&&(n[h]=p[h]);return n}:u},function(t,e,n){t.exports={default:n(244),__esModule:!0}},function(t,e,n){n(245),t.exports=n(139).String.fromCodePoint},function(t,e,n){var r=n(138),i=n(163),o=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){t.exports={default:n(247),__esModule:!0}},function(t,e,n){n(173),n(248),t.exports=n(139).Array.from},function(t,e,n){"use strict";var r=n(140),i=n(138),o=n(172),a=n(214),s=n(215),u=n(161),c=n(249),l=n(176);i(i.S+i.F*!n(250)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,i,f,h=o(t),p="function"==typeof this?this:Array,d=arguments.length,g=d>1?arguments[1]:void 0,v=void 0!==g,y=0,m=l(h);if(v&&(g=r(g,d>2?arguments[2]:void 0,2)),void 0==m||p==Array&&s(m))for(e=u(h.length),n=new p(e);e>y;y++)c(n,y,v?g(h[y],y):h[y]);else for(f=m.call(h),n=new p;!(i=f.next()).done;y++)c(n,y,v?a(f,g,[i.value,y],!0):i.value);return n.length=y,n}})},function(t,e,n){"use strict";var r=n(143),i=n(128);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(170)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:n=!0}},o[r]=function(){return a},t(o)}catch(t){}return n}},function(t,e,n){t.exports={default:n(252),__esModule:!0}},function(t,e,n){n(199),n(173),n(147),n(253),n(254),t.exports=n(139).Set},function(t,e,n){"use strict";var r=n(210);t.exports=n(217)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t=0===t?0:t,t)}},r)},function(t,e,n){var r=n(138);r(r.P+r.R,"Set",{toJSON:n(222)("Set")})},function(t,e,n){(function(t){var r,i,o,a,s,u,c,l,f,h,p,d,g,v,y,m,b,w,x;y=n(15),b=n(256),x=new y(t("ABEAAAAAAAAAEKiQ5ZlpWFPX2vd73lPrafWIdQBlirUqKggKIqOkWhVxgGJFZIyCiMgQIUCAQNIjRxEZoqIiQogaBgcGAZkhEZFEQIiMAQKJECHGEEIImciwX2x7TrGnp+u9ng/vl2dfXNlJdvZa6/7t//rf91pMDqHfPNNQBgL8sjccSNRdbRc9uWHX5MnvbXfYXDWY/3CyInqFXvTkQJk/Lf3j549vpiQStB13g03WhrM3LLJscN7NU6x2ssNko8yCPlOg8t3zg2vP9u3mOyqelpehLkSEi6dXxAvXyXP/ue/lhrwz71bdPN6781lk/Pu1a7LueJwcHLCxrq2JjfkS65ywd73fimPmEV8d2npe19PWgS33ZXfjRgxDHDed1T6xK3qZs2mYoe9Fof+2P2uKQq/uVw2QP4czqqdwLsxrV+788+Ykn1sbusdp/9HvD8s6UP/Rc1jwug3rN32z8dvCe3kPCu7nc76nP3/18vWLNmpnU2tLR/Ph6QTJl8lXnA62vtqy+dHDoHM8+RuLBRHi2EjIZHcY5fP7UctXfJ1x7cb1H//JJiN40b90SOf9vkNDPqhD8YeVv7b0wzHXnjfdovuBp874nT0d4M99+25sYnSjXDH7Z0P6CB3+e6CzS1OPvDZhC72I2X3RvzVU/I+fIaXmXLxx9e7l2+lau//67UqLJcZ6douNdKy0zJrM7rkc3Hdk76EDzr8wpCXl/uN6ctalW2mExIyU7KTMtzq9Rn8e0HIeKJ5LoHhUL+ZAEvr6jyMuCpnUz/Eetm/4nPLQ4Zuvd3y5Za3Noo2rLf++zQAW98WBT9SFOEIE0SgB0ch8A6LBB9HY+KeC+0jjGJBGEJBGKpDGCSCNQiANBoDGtfcgGquB2rgKpLERSKMcSGM/iEbpYxAN9x4QDeDM18yxIS+2zvfMhWOZyk74D5v5yXL5nzal/gvbVvrWvfoLEJnLQDI/Asnkg8gw+kFkgB4SBdRJHVAnu4E6IYNosL8D0UA+BNGwmpOKBWw3cuCUHBASFRjSSmBIj4AhAW0RCbTFapAtTv/1v7ie5jlSnYCs+rWrPaf//ucRU4KUVts/6Uo5wXb+fUgqL+5V8nUcgTFI7qS/Q3A9qkrFGxWMWLyAr9qviTL0U9oSr+EIOgNkMpuLYPdUlwqZCoZsQsBXIjWS3VJxVOie6ai051aMv8Sjil9IK9VnbxNxQuJztHTA5a3YshCCpnAWeOhsvwbSTAaHGcZ3UOAI1OTbYEO14q7xYgRqlM7wtpLfpWPJE0VNjIZZsaVsKXkik1hqc2ba0kV19qycUByudLLXjJCZaGUYW1BIQZa0yE19mhkSfSYjaq2CIVk9f14xf142f14yf148f/58/vwZk+ENh+7SkQiUVBXsS07oaBSXKiRSy6ROykTr/EVr6K4wDIEaUgWz6hI6js5f5Eotaa8pE9fnL+6A7mrNXyTP31md0DEyU6oYlFouVpZoNDKfbfI9Gq2D8kRyFLw87beHhXvjooobscJ3/UufOAFmIPejvNijUYmwkIR/7oPLjaZaDA//9nzJGWq4If/jw6PkVg+UhLBPU0YEv6ol6SRfS9Ev3vury40lxSv5t8LcexF4y6ptI1Yy3CuXOZmUwMNtJUJpTQ6filErqmi+u1k7lcOw8y/dYd+7YHdXcnc+gydzo9n2zpBE3BR9Zq4OzjQtQsismOrCe0oDg1xchPr4lMxgRJqA1ZVCa8crqW+TFD4r/qvvqE7DsVAE9NF8Rvv3fpwAc824OX3cRBTql8lWh6z7/WyDv9jx9S8NQleEc/Qm9K0XZZk/C5ndYLTgxxCc3dyO/Sh4Hnr/J3PLHZvEiK7/eRRbcEOsUqLnE9b8JFKsnC0lNvEVYXAyUwnNW8NB4u4XMIVFCSyoZcF0YRelfZyaCqOyiRaOsZ4SPZPT7P/rJOY1gipT0u88FtuLVnM/FN6plP48cniGfvN5wscHwWAMCYkX/WPsuRvlXVj2v6csfI4pKx4umVfMLFozN6+Ynt8XrtmVX/8BcE1VKcWF+dFOxExygppRrZbTULgRHFlgBLE0r99G6Tchx9UbAcP3ApVeD4E5ZBfQcL2AhksAGq4vyHCFwKocDarKp+1AKfUhsA7tBNLQAdJ4AqRxFEgDmH5kwPSDAZVe54Da8AXSQAJp4IE03IE0gFW5DFSVTy8GleXngNr4B4iGZh2IBu4piAZ8H4gGDFiVa4Gq8ukkkG+8B2rjayCNg0AaN4E0PIE0SCAa+D4QDf8/DBa6Uyqur/qtJ5ru3wBIwoFIYoBILgKRuIKQEPNASFxAi5PpQtB0eQ+cLif/IFa4tDBeYxE7tbArTlHGtStyWgKD/hTruaGfeOM6zoh2LKbo11K3Fp4BU1rF0X63Cad65LAERHsnkHYdkPb3QNqPALRPAZ06ELgUrADStgFqzxtIIxdIAwGigQCl8VPALK4D3DJIAZpTC5DGCiAN4CqSAlxFIkBp/FQ3iIY7cDvJGKgNNyCN80AaaUAawM01BCiNnwLaEgO41agH1EYakMYmII0KIA3g5hoblMZPdYFoVAN9gwnUhgGQxn/8J+M/aGQCaXgBaYDS+ClgFpcBfUMJ1IYaSOMvIBrQPRAN3EEQDXgRiAawwsMDfcMRqA1/II1wII1/AmkcA9IAbbaeAlb/LkDfCARqowJIwwZIowFIYw+IBgW42QqsN8yAvpEJ1IYxkIYbkMZdIA0fII37IBrAegMJ9I1qoDaYQBoGQBolQBouQBqlIBrAegMG9A0toDYcgTT8gTSSQTSg4yAauAIQDWC9QQT6hhlQG5lAGsZAGpVAGgeANJ6AaADrDTbQN4RAbWgBaTgCaWQAaXiAaEAPQDSA9QYF6BtsoDaEQBpaQBqFQBqHgTSKATTWyQ2bZBsAQHYDwzUB7ieeAIULzwaFSwQmDfrCpNEB9bDUL63jWLF+RikmN9zCnHJ8kFUZR9e3WWQIOmLQmMRF69ctdrX425vvpPeGP3+3ro362aJJ/a1Wf7WpeVfb21WrOBsn2xswdBn1JLGswP7Vi+826QXfTGt8dX9gZnLfq7gvVlp/98WrPYoZRN9hbY8NfNgTTyKCQ+ImEGUKiGymIPeNfEi0TkW+dNWnVXPsutJ8VdudH8DgacQWM7/lxBZEC8LxUa6GtBZPWu0yFtSwVhCjLXxZ35UMuimMfOzbuyJrT9GGXGp2V3qgyLlBj2B9pVl+QL8lPN6OvHLkfYsWZ8OcqEfuoVr/hchD5aaKuintxu3khD8bc7JPsyIZ0McIMVa24cuTRGnWVzny6Hijuq4UGNVpllMoqpDvXzpWIX8i528WFELnqJxzLRkxusgDdrktdqKwyLF1yzh64au88OcdXjxR/A0uiwmjrHbZxHQx4mX3cMbPO0w8WNE3kObZS/oaUwa7JM3VThVjjREr0aftMyfOOMyHSJqtnumL1KGq4YRZKJJZ6Htl37eUApmaEwLPDYGlzug1465vZrpchjI77av+Xso8YDii26rHsktzrS28dYDc5n+MbPHI7jHF4jWMAUmNBjXW2N2mzNcGopD7RodnrLZkhm/brTmThyqw5Dp9k1B+CudR66fH0Zj1IztuJuwaxEZXUYLmznRE7+JxWy/OtH+AexzTxOdmykTvbtjklLLHxd79kFvP0QmKrU90UcWD1yppxaIo7VteJwI9sqJojVNy7Vtrbb235zbbNHPYW3oRDbtx20Jus4ajymNynvS/C3DO9Ige2eZVIVF6zSoak/n9FMQyYQ1l6lB+ZYNF95285gbqu5Oke3fg9erOvWk2+bWRohizqp5ca2FwLDHb+pwkzNfOFnU51nHJTFLdSv4EooDyPD7LjQM70h0QVRCbv1HRYiuoVXcnORmZhiDJ/Y4Kfdu2hO1Hkxgtrp18hcY6/YCCYJFvr1zW/prW9a5uDSzYeSg2+kTVHWeltXOcT3PNZEwZJZZmdcrNLmWOYEAv3+HgZSzYJPD9xsehoBCVYGIYDMfaOpWOFXoxBh9jv2m8GyjbsHuzRBxr3pu1RpCJtS4TiEbOxvXVMQ2rI9ckhrAde9a8y4i7JuzeT6XZyfqtL/snVGwnJibTOKkyTH63HmpCzNJcCK/1U+zXrrQ6z28WSRc7UXRgLSmbIa1WfDVHLV9HthK5NlyZge2fEFO3d9jE2PGUGYIgRLPg9Iibq0ODnbESmR66vHima1FzYf0JRdAe1JjovecaJCw1oNFU0gS75clOwWvOHUcPSGvYE3nFzcW6DmalXlUWctLw13TxyBrHwakD8KFBoT1cyZp850GRaG5IYnBn64e3VqM/0Sxqu+Xani5xcek3+zNQqNbdO8gU7WG7nmDSsEH2hFY7Ge4eNsz+guESnpqBsWIKUmVbL3d1Bu7HDFBlufie0FdxzyoMSZFdUuWlBoXASrvX63Z6p1eQuVCsqcY1+rhwWR9CT7WiOR82w8Y1yYeO+1udd8UfmGzB3kzvpvWP63p/UDvdpaeVJZ7TjtQx/c5KwLqaGnBgjnKt+lV87UZJJ43dUH561qLfKxNlYZmmyYOiprqO+liaxtNMhnKnXBpfVfjY0Nch7SmTNoE88Zt73pErkswetaoc4hwG4VvuIJL2849Nj8WehqYns1DT1JdHRo5SrRocHOnj43scdEgLSDzKQDcPk9x9Mrs7f5gbsVmrR+0cHS8oC4EKis9j4hrWtFNVGdyMhoyLrKKKXV8FHxuGZhUtGu39ZVMPLLPXco6wx7udMUZbXdNGHu7frVumo3R9CMW8f/YMpRLL7R2SETTkvnSD1HaTKyfmDOyyJmGmkWWsEE15HKPysUBRZsI0FGjRoc1Q3il7KIAfcZrgkIC9PxxQFtKQua/2lhh26yE1rPeBYdpAinpzTr0fLBMf6DC0BR5tPgj3DiIP10lK/NyYLZz2ttwOSy4uB33sTf0pUd2RNp1OXJngyUvFGrry6Lse3OyTT0KWNW2USer8J/PYzhN9Wa8rMmYybUqrY36OGWuSmW7zc1N30EiqIr6TkVfDzqqHzLx6UhTtVJsedG1GxcJxHSQknla72NrRYLRSzk6sIRF9magMprrOOdxNDb5jau6F3YUjlPcIFA37x29LKjbjDHS4GPMuO6ZvvOrdC43rqMrsfP0AdTUp/uYn8VqrT3FjlputVxuYiGJuml4Nm2B3WBdSY5My75pVOBP4NcnSQG68dZas14k3ppsDI7KFJTVQvR3bLIoyo77EjyybHH0dU8ClZH/SbE2kPic6vaczfMimpDO0kCKy7HKhqF/Xw7MwcE7t6/isqA/etE0CM2O7NKwDRIs1shCbejZsMuJGnciB/BrHAyZoQ3pZudXYTtzxB7r1rilxO/3MpP4FaU+o69TLzFlNZ14nPovKUpjze2u1OrmYmF3sMlZqeJaYI1YmzreAaWdIZoJPRcdzE4za5r94uM8ymqQtOffSd5LGS4nX0FLkZ64F/iSXnJrC4K4p4/vu3txq5E8SNGe7pmafF5eTd22p7qy5KmpfJFNFdhyI4x6gxS1pM3lq3ZZvr3Dc+LhMr/Kh47dSP7h2an5tUUd+V5s3rIo1HN0kTMCFdCmMd5PzOqZqNAwKPLhAfXZeY6sWwFlz28BjlWCWkeuN7Il005Tf6c8qrX+tEvkpM9MCTiDD6t9qUeDmJQw74/qQBm5CJI0HhzRFTnoZm/Gsa8YkxL9FxjYdNhInRB1Y9tVdxoUfDhqRWXrZPM6R2gzRwiE6TB1Ph4TyNJkxDdqs4cuRHAoe2uFgWGCDZQXuUDefHrpqdGn2zNj0seaTbhMlHY5cPAXxQWW+tTlWc+pGp2JcFpg249JZjUOtJ64koaxHENaXFwnMdvhSJO3sS6I72r74/Cx+dGvZ4JyOMHGUrbPNlk5Z4+hBT+KceWAV6OqrEolFZd4/fqvzAXYbHwEtHNuxqtqXdf4EOCvbLvrYdjZ1ffuQZy/DNi4/xd+3W8agUxua5givK3Hbu4vt6zMv7zjKJd1hd9jar8o/ZhGE3iR0GXjsENL1063LZZuRrpoHce7FOMSwTMRmiFGIfi65BNLpGLz7rlF6hPXNiYG1x9ONf7OQ8LkHEarYBk3QuLw4xoy8lp0GowUtjVD13Im93ahpWNZfvvMxvebvgXymR8iK4g/Z4X/77Hljf04N1ktw/ttlwoPGua/tNegb9LhD+RO97PfHlTgLsn5wr5ehow35UYskzh9XNUc/q0PKrrMiWe36gKtzfkIifnxfHrT0GPpHsYSqbLye5i+b3tiTbb0lxCyifC8yDHMJp4wvHzF53ymAG+JF1XRIdSSounHlAvWcjJYeg6wl+B//4CWzz6zSvOQ+b7fFSJiAHBs96V369lwvzpiDX5AdghXyns7R3d2Ni/1rPJ74MTle7UJcTaRpcbwmvKuuq7MurL0G8m1qzUlR6NAQJnYI3BhF9bS3MzBMKTPDwqvQWhPS7O/Hu9hypoE6mXp+Ka7vV++MMseH3qEG0PqTSTdxB6ssNRtdHdqiViwYfHjWoPAtyRv9ff42/tmw6k0yb6uPf28HFGpGR8KuXpfaTLrT7Fc8v+b33NrwKtV41Nn2jmx9SNB+lAQpGyPgjLML/ECZaY/zrcBSmQ370LyyoMivIEr/GIQLuz8m6tZylCz2KPUwCpdfULvQjVB3iO6l13DlzzdAbM37bimXDq3jwhdklOt1HYf1i4wYU+uIRqTILMuhrGRP5Hq6dmXzNpstqSTr3L0aIrQ5Vycd/+H24coGeP+M5mS70j/3hwe/2ko32UvWR4nPnd0Qt9JoUWOt/3XJWs/VxZ6oA3YJI2ZGxrMnNt9UZlbAU4LxE3Yk+zmKZ+8BXHChbdyL4jRs38/TuaSSO2Sjh6zNmHNNPj95YNuHriuNA/hjRuPVpPp9qLxnbVc3Y4VLcWHdvFLRiEUmYishlb/NVVfN9OFelkyIL4emDgWtxt/6yt8rAv4ue9rB1vMe3LY/YTpd+2Tp6wn+AMWvkVmmrpxfXmQpI7oq3r3gwKha1NiR1ZKqMzyuG69ZXLsUgnfkh0IYt+5MC58AJidjWQ/pVm7x0xrWztt9dnCsnZqdKXJhnrzN0qjcO5Bug8KiC9AHemcwtvFyFCtLH1N4qmdOh7/Nl5HC6AiQMOwgrkSHQIuiwdOpX3R6bTu68wBk2nbSnyqXXdfLR76sdkTq5ndJVVjxkUdPE3JlPfJBD1yFrs6HW1/xaucvB87QmELnVe0OhFRBq7dm6/zqIB6TGWSS5R7kpFk0PkrRZeiqva6QBkJvpge3PnHUhbNS1KezRPICqhhz7MMyvjCvc5aNZz3EBj3rGxkIsfd95DEQVuSKTWDgKwKneMo5VUUMrqmsWyuwg7u6HT0x5CEXJ/JfNr2cZvMNkVZfxXKVhFbNce5eX/9ncGa/PC626nlTFvWiA57eltozKm7LWCKhK5EdqcGawG8Je3FiDrbuu3AsYa+6MFDwjBoLYabSEC8pyfCORnGQCjmoqZDjHniaGkD8PJwxj46ahNIoje62Grp/YIxw9xbJJw4lO6R2dEIky8jHPmixNkvsnBAbfOqxxhIvHb5WI1HgkuFM/JKfEYFIQWyiDK8ZgXok2WmjlDJsV9MibjBmO5eny0wpsiW/H6pzqhAHHanSC04PHilDJHjzg1Z1Uy/6py0K0OnzuUkxQWriPPpZY8HBsbDMysYQZ34JPQBVb4IjSBk+2e3SUv4mJgLd0V+M85p6TFSG9nGdnuzE9mcXWCk8ogZlL2odecqujQkVvDhkhTAUQWdWdYSbXQ0tpRVwGnkDH2JMGzCOv4R0F33pY0TunMpzVORL9hXKWkQ6Xabd0M6ukGqT9Z52T3N3WiV0HhBGyU6FabWpAl9U0SrOxz8ZPo5zN3AsU0VNVMbY61DcrbZZIaR1Yh+ZfZFXYFRtBzHTNFtWbv5khsusS7as/5JpSC/n4wYtd9Srl+ei3elKBwmllcs6igtDBNqjJQki85onsewj8OLuSTqi/xAj4Qt9jeG+ALlyVZmXpwqDKxyXtIeqh8PCutBjkduqZaja89QfOtbczreypJKG/jK9qFLNxr3VnLt1aAnFvyQ7DOPLRPQoK7RlAfrPpaFKNX8Xix12/mhJ1Vmm2qZ9Z1WC71S79QQNdWtH8Y/ckrGzSkF/7u6THBHasOj0a01CUeAltRsOHUxWPYhLOQLpa2rC0HnfNlrx3jStQAV4NaIyGi7JYh55zIZXR8aTEbzhw6Rw99uvC6+xSw3IvaYp2GK9jsPt3p4QnchupaBRHkWPoXKYkMsaKVBQvkXn7tLRz2b7jncsYoolhcri7nH49569WHRH+BElDuWERXXTR2il5xejx0yVc+vrS7kw8sGprYa3lu0yhyFMLW+wTdakU7Jnn6qeeEKTQnKRc2FC0VbZ2dOY40gj9QJDTuLIE6Vah3BvFNuDzBxM1K0MqOVVTePU/yGJcjT7i6H5dJsZ5G9eWhHrjMOKHmJfbbtDhemrT71z5RHK4tBjFyI15Ls3mVbkqfrBXE9V+qxLBH4Y3TIgpdzX7HeTawZjj9uWzJdy/gIhKdTHwl2taQjNpkbBV2ryIp5aJiv4Bf+q8Yz1vF2sQuSBx5NwhTyJulvkJfKNtyDrwVkwPJ/dvgaKtk/HwTWJcjsRjIpbBYU3aM7zam7NpskPqc6q+qcdBifmzGqQQuZcKafaggpt0ITZJ1eX90NB3ezkUiobj1sObc+lwq9CJiyM5IsJSd9cs6VGNaCx9j0re6v5KR/rZvf5Z//l+MmCT2vSGaqir/xvv/ifHs+PellpnNTT2pHIRz4fv5h6MUnHL/P15O8z4odTojLPpevnL30eV9dlUnMCM06K+2RVFX6CW0BCxGkTFt8xvD1X7NsN095Ji+Wvub0tqnr71NTAGf2RnB9NB3j9yoUrJsdHSjTGv1ZHx8NAOPxgSpca4FXr4FnrsMvFzr1IVp43Uht18ozriGSIotI3YIkU1lZpClUKh+2byij0snZM0pnl/9j4IlpFpAfKdG7VhhutbEwelTal1srzjttqrLEGhaL5VV7E+1Njog0++omzyoigzpNr0zKSmzNftkripfGN2U+69Ldm6goIC8v8Gb4wjdWxGWbaZWJtf9jINSxA9UlWNQ7GVMfpGOQYjyvKbqHeOA8ye5jPnR6pB/H99dGbujrlUF5EDPdqV+sAnfBytFnSw82wyXnd8cQqExdhyi3KED99FB7ZThiGL2hVaFIDFQr0x+O9e1OmbvhbtDneaqCcmNF4Brn/u/wyKYKnkoqYaobX2Bk/kcY2vIwYRY2IkCpiP12ZkV4o4Lq54gd93JhL7SUZiRdHNa3vhmxtjHtC7S+4xHF5b/YgpQMZrJm4lrq0bGiwMz5Hxk6bOAhX8tvFF0ooZRnJEy+nY9DrFXwH2oYvapdp1z7iuPMwnrg+UZ8wV0aTG1TZcf1qSUdZek8MSk5XKIVVR4U81g3BhKrRZ4qrXKgM9WEWvEqk+vL/XYnT5gM75x6hvKbKS+vNYYlUs39pf/FUBfW/3lXzANG3LHbNY+N0oqalpaFt9xqZz2ZkmXDOO469rc455lRBmSD86aDiLv7Eo4regh0HCbFLSDmieOFiTuQ2F6vNXtsFwR5YkbxcsNpzeKXQu/3oSynjs5/cDuUbNbuEEBUMX1omxmAKE+JQSAu/cAK611t/2zF/YqOn6MyzRhPbYlYEYXyuuCwcjnRusNshkD3mtYjocdVv7XFrdNrJtQfg37sYBRBzbZBC0RHYk06or2QJeXMn59ws24xbZ/u7LUyzzCG7hZLbi3FZMl8Q1MxOOqdyu3Necwkx6JsazjGuc6oSZ8uDeINDuxwpnjtGwm7n9msxuk2iGKYY4lLa7tmKttH+Vf5uWdn2vqkitTQmYvfS0tbEiobTOyuIT053Nr2aCz9+4Yfzq/hTBmETW6NKPhQot1ahR6pK67BWbsSkwNM7l5z1K/zFO/81P4JqI+eXP+QfbbHGrBQkFc2hhesm6rv404rPORqlP9BTj4pirpuP5yFfMkXY+OXsFPxlGqfn5qDT3C35iNwz3ljjoToTYz9RcOFpm5FjvoZWtrIyRuiVjzVi4UsTgnPQc03WuOkm+UCKFpWWaaCcTQwfGS0jkFC3bHrmxL5Qf03Hg9PK4taBidU0C5Nshb5Wgi4lPf6Dobe7jSDePDS42TLXQk+HiTlXxlNVI+Ua27QTDjpTnjuGBnHvS1ba6KAVNpgyKBWXEm2LoVVaJ+CE8sZSgY8++7H1ITtG5Fxxo+axeeLprP1dHSIMTygxPblKfXPkcji7o3sdU9YaX1TSM7x2UmIcPudXCsUu9TWpPaFN1VRgSlCllVIt2DPp7SMPhllI4b7f1qvyYDU/tvn9GRPZ4HwnWZmtm8Kf4UYJ4Zz3BS4/ZXbsgkNhH8SyKhLRQXuLIaVoOMFNX6yKT2EmepmnNmFRgU9x3snnc8gDcI39F6L1DmnHeIeTqt+fOlc4m8/5eYUW7qnpFnFdz+cPVxVdIZygGvQNEB628PTWYpaODTFwdpyaLS1S7Y5CgojGY67FLX3Q6zTo9bTHCS4sJK7Zt1HZ1zkcF0XuNTHIV/mcXOXIo2T7M3spASgRO2G+C7zSRiuDYzf4iQw+xBuWQu8O05AtGFGHfMqlk85dRzs8iNxvZxu+auQ9bZ1v3hEbnp4ougEGeykbI42K5DsDom9gN2KtyNrsqzht+FpDPKLgyEYekipsYXC0OEQaTAtPg66HQ/VyaOzwFgg9hh6jXIG2arLlhc07tMqXJZpJOlM3/TiQi+8qw9lugewandQojnm7DMm8JFpGk8PxtPjRAQqGbPHK84BlNGd2f2fU0rGWFEsH9he1SSdqdxoasCoJ3SSOLNowIAx/N//EzNSAM9+V/L3huN0G/3NGwojFwTdrTyMEt4ZwF0bjBoPgbTJHqiaaaphY7chBmlY6R3az289Fp3fkpx+T7jpCH+wi/fwEnOGvalP2NFw5ZhWAbLs4wCuA5h05B2umnuew7xExzmq0/H0gIWVXKgE7sbxvIK0Hb560Jn72/Rwdl5hKaB853zAzOR6er0D7Grb7F84eYtkhWjFcY8UUbjzm2uz+yWdtsTRjrkFpjqw+giVso/1aruiNx7tn4hHQIcUnmxENN5+tFrx/6RpJgtsbwgqLXcZcOD1r/l4kaXOa3cQbPfwQbYkT2QehHinEzLiNXNGtHJp7hCGqhPTL3l4C55cvEK2xr6OWs1OFVDxn5xc2mvVtxe5DQRWEXcz/eGmk/r3K/jIqJLDEf37p/Blh1ezEkZkksQpxGRXqrL+6ilaiS0gdrfJZMe5ckrEg3aJNa53TNVih91wdIm5JjkkrPod7f7ROP8Bn4Y74I0bO/DLdohPzLSPGCrXGS1ibT4zSs0tuXjyVd6/68k1lCmzbucJY135pA2sw6tgU1zZlwcbFqiFCKGVn/K6H+u6/lZycZ942Gntf9iN9ymphixWnXsSxTtuTTrmSVsLeQ0WtDCsvbp+P4quvYm0KE3NKw7Go+xUxkgu1PNH+8RN9PgGkuXZ4pqeN5sK4Db8v4yLLD9pK98Mp4rtm24vdxTmz53MzfDtQ3U9ineMs6U6lEza8PnujxrvcvJ8vYnhzlT2agdZX1sLpY9woHSH7mVsoHT/evSNwGy12vpJ5IVXopjI9GtiadljH61jFUK5JK2Invpas2YN8lFV1Qh+xmjCrfjo/wtvWW/JS2gLtZO5GDGpsfYdr3fo2wjBuYXXhHQEZ5OOT+Hn3rDjxWKPDbQF2wdiblvA2T3auYgc9vTS7IUkwD3JvmXd3ERRT7/G0i65sG/GGFjbiG6GW9bCbrweyi5ixtiO+69hfq3GV03aYs+o5D8qCRyoz86DwqevEdUsqEqRfOW+KWzLDnTF1+OutxZ/8jMZLccfD8c96TKw33/LFVAUQQrdm+gYvtE24c3vpuJpf2YBrvC0rZcxoJJ4sim+7khEcC8VtEyJKfUZlfr7tFtM6zwO6OsM/1gFbDj/oxhYj/l2AGKdva2cnuwlMt1qMIKp9y4Y7hRvVjeO0FOX+HqneJWxBwuptd+kq/QLaVVTWbUWPfKemn8llwvEuYwiX7vv4JQHsuRHGnFA9NVN5R6W6F9u0qUzAXzGVUZ/uPPexUK8pDVuf3r3ss8/80V+PzH3z2fPD3G4u0T4w9HCQXFaI+DQe7dR6m3LB+0BD5oV+CBqqP5cYtTaveLEAJr3dbusdub3QLtD7bMdmrQj1gd/uwm0nY10QDdH2V1w49DE6p0JO8T2imZoOLaKHEsXBjuJrsXql7NbmSEFwoVVhfVnphFLUdVX4ipl6ohOm1XyUQDnKZ7+UoHw16+Ly++kPbOKdre+iGOGfNUT2p4XiUQSbEIw+evL9mbweISHLhgXpBAac9ZabZvXxZk0tQyk9H3x2uk+UdOAD+dz3ziO++vkJ6xm9WV6+4sEBaaXE3GutXX53+CdPLZ9D50gIvy2e0ntOFpZuFE2mR069SrjjwtuYTT8at8uDGHhJ0H1RsF/ZojrK/fHu4UyPqPiueN8qcUVI2uHDM1a74fmYncR2KiJVuYuYKYizgIl3wMRZd6k+rwU8gw5eOfZ1j32HGEtH3Ul/4L21UjzFKtnHGmHGopHckUYCWhb97cwUq7MeoyRnGldmL/7suY6zcKO0vDOKgKqbUlCKwsQX+S8f1Jq0IxhRpB77z7/aVNYTZLjAJUi9NpPbKp2ftSVZaI+PFPjhegRjA7vW0gPEWUhMl61Ju9fNMFtN1JDXcVwGqiKMkO3JfJIr3M9veExkTkK2XVvhBrVx+vbbtRJUZvVHOZvm6sL0mEWUPvEPYTfTk6IXeBzcxF03O+jedXLVaVtaqIRCUPjalzINGWdRAxumJhxij+O7B9z8PGXf1HyQM7KgPn8mMeP5SEzgP0LxX/7EdKtb7B+TRf1yeyShJgzHMGivYqRnVwaFYBrMSEfH6kKRmBKmbzu/qkKgGOlTCeO80asZBvwqbtVIpcpNsPx/vnD8/3jsKncOwaT+7svn7UEZA9KToymv1Iv/8K4L9VWrmblWWkOa3Wv++pnWqxD9UE5X4RsrZsQPH/6i1RvF+ZNVxf+K49QZXabhH7P733JcwJkkQ7D/Cw==","base64")),w=Math.log2||function(t){return Math.log(t)/Math.LN2},m=function(t){return w(t)+1|0},r=m(b.categories.length-1),a=m(b.combiningClasses.length-1),d=m(b.scripts.length-1),c=m(b.eaw.length-1),h=10,o=a+d+c+h,u=d+c+h,v=c+h,f=h,i=(1<>o&i]},e.getCombiningClass=function(t){var e;return e=x.get(t),b.combiningClasses[e>>u&s]},e.getScript=function(t){var e;return e=x.get(t),b.scripts[e>>v&g]},e.getEastAsianWidth=function(t){var e;return e=x.get(t),b.eaw[e>>f&l]},e.getNumericValue=function(t){var e,n,r,i,o;if(o=x.get(t),0===(r=o&p))return null;if(r<=50)return r-1;if(r<480)return i=(r>>4)-12,e=1+(15&r),i/e;if(r<768){for(o=(r>>5)-14,n=2+(31&r);n>0;)o*=10,n--;return o}for(o=(r>>2)-191,n=1+(3&r);n>0;)o*=60,n--;return o},e.isAlphabetic=function(t){var n;return"Lu"===(n=e.getCategory(t))||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Nl"===n},e.isDigit=function(t){return"Nd"===e.getCategory(t)},e.isPunctuation=function(t){var n;return"Pc"===(n=e.getCategory(t))||"Pd"===n||"Pe"===n||"Pf"===n||"Pi"===n||"Po"===n||"Ps"===n},e.isLowerCase=function(t){return"Ll"===e.getCategory(t)},e.isUpperCase=function(t){return"Lu"===e.getCategory(t)},e.isTitleCase=function(t){return"Lt"===e.getCategory(t)},e.isWhiteSpace=function(t){var n;return"Zs"===(n=e.getCategory(t))||"Zl"===n||"Zp"===n},e.isBaseForm=function(t){var n;return"Nd"===(n=e.getCategory(t))||"No"===n||"Nl"===n||"Lu"===n||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Me"===n||"Mc"===n},e.isMark=function(t){var n;return"Mn"===(n=e.getCategory(t))||"Me"===n||"Mc"===n}}).call(e,n(2).Buffer)},function(t,e){t.exports={categories:["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],combiningClasses:["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],scripts:["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],eaw:["N","Na","A","W","H","F"]}},function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var i=r(n(258)),o=r(n(145)),a=r(n(262)),s=r(n(263)),u=r(n(186)),c=r(n(205)),l=r(n(206)),f=function(){function t(e){c(this,t),this.stateTable=e.stateTable,this.accepting=e.accepting,this.tags=e.tags}return l(t,[{key:"match",value:function(t){var e=this;return a({},u,s.mark(function n(){var r,i,o,a,u,c;return s.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:r=1,i=null,o=null,a=null,u=0;case 5:if(!(u=i)){n.next=13;break}return n.next=13,[i,o,e.tags[a]];case 13:r=e.stateTable[1][c],i=null;case 15:0!==r&&null==i&&(i=u),e.accepting[r]&&(o=u),0===r&&(r=1);case 18:u++,n.next=5;break;case 21:if(!(null!=i&&null!=o&&o>=i)){n.next=24;break}return n.next=24,[i,o,e.tags[r]];case 24:case"end":return n.stop()}},n,this)}))}},{key:"apply",value:function(t,e){var n=!0,r=!1,a=void 0;try{for(var s,u=o(this.match(t));!(n=(s=u.next()).done);n=!0){var c=i(s.value,3),l=c[0],f=c[1],h=c[2],p=!0,d=!1,g=void 0;try{for(var v,y=o(h);!(p=(v=y.next()).done);p=!0){var m=v.value;"function"==typeof e[m]&&e[m](l,f,t.slice(l,f+1))}}catch(t){d=!0,g=t}finally{try{!p&&y.return&&y.return()}finally{if(d)throw g}}}}catch(t){r=!0,a=t}finally{try{!n&&u.return&&u.return()}finally{if(r)throw a}}}}]),t}();t.exports=f},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(259),o=r(i),a=n(145),s=r(a);e.default=function(){function t(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=(0,s.default)(t);!(r=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if((0,o.default)(Object(e)))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,n){t.exports={default:n(260),__esModule:!0}},function(t,e,n){n(147),n(173),t.exports=n(261)},function(t,e,n){var r=n(177),i=n(170)("iterator"),o=n(151);t.exports=n(139).isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||o.hasOwnProperty(r(e))}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(202),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e,n){return e in t?(0,i.default)(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){t.exports=n(264)},function(t,e,n){(function(e){var r="object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this,i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(265),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}}).call(e,function(){return this}())},function(t,e,n){(function(e,n){!function(e){"use strict";function r(t,e,n,r){var i=e&&e.prototype instanceof o?e:o,a=Object.create(i.prototype),s=new d(r||[]);return a._invoke=l(t,n,s),a}function i(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function o(){}function a(){}function s(){}function u(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function c(t){function e(n,r,o,a){var s=i(t[n],t,r);if("throw"!==s.type){var u=s.arg,c=u.value;return c&&"object"==typeof c&&b.call(c,"__await")?Promise.resolve(c.__await).then(function(t){e("next",t,o,a)},function(t){e("throw",t,o,a)}):Promise.resolve(c).then(function(t){u.value=t,o(u)},a)}a(s.arg)}function r(t,n){function r(){return new Promise(function(r,i){e(t,n,r,i)})}return o=o?o.then(r,r):r()}"object"==typeof n&&n.domain&&(e=n.domain.bind(e));var o;this._invoke=r}function l(t,e,n){var r=C;return function(o,a){if(r===E)throw new Error("Generator is already running");if(r===P){if("throw"===o)throw a;return v()}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var u=f(s,n);if(u){if(u===I)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===C)throw r=P,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=E;var c=i(t,e,n);if("normal"===c.type){if(r=n.done?P:A,c.arg===I)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=P,n.method="throw",n.arg=c.arg)}}}function f(t,e){var n=t.iterator[e.method];if(n===y){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=y,f(t,e),"throw"===e.method))return I;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return I}var r=i(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,I;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=y),e.delegate=null,I):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,I)}function h(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function p(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function d(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(h,this),this.reset(!0)}function g(t){if(t){var e=t[x];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=b.call(i,"catchLoc"),s=b.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&b.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),p(n),I}},catch:function(t){ +for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;p(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:g(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=y),I}}}("object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this)}).call(e,function(){return this}(),n(34))},function(t,e,n){(function(e){var n=function(){"use strict";function t(n,r,i,o){function s(n,i){if(null===n)return null;if(0==i)return n;var f,h;if("object"!=typeof n)return n;if(t.__isArray(n))f=[];else if(t.__isRegExp(n))f=new RegExp(n.source,a(n)),n.lastIndex&&(f.lastIndex=n.lastIndex);else if(t.__isDate(n))f=new Date(n.getTime());else{if(l&&e.isBuffer(n))return f=new e(n.length),n.copy(f),f;void 0===o?(h=Object.getPrototypeOf(n),f=Object.create(h)):(f=Object.create(o),h=o)}if(r){var p=u.indexOf(n);if(p!=-1)return c[p];u.push(n),c.push(f)}for(var d in n){var g;h&&(g=Object.getOwnPropertyDescriptor(h,d)),g&&null==g.set||(f[d]=s(n[d],i-1))}return f}"object"==typeof r&&(i=r.depth,o=r.prototype,r.filter,r=r.circular);var u=[],c=[],l=void 0!==e;return void 0===r&&(r=!0),void 0===i&&(i=1/0),s(n,i)}function n(t){return Object.prototype.toString.call(t)}function r(t){return"object"==typeof t&&"[object Date]"===n(t)}function i(t){return"object"==typeof t&&"[object Array]"===n(t)}function o(t){return"object"==typeof t&&"[object RegExp]"===n(t)}function a(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return t.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},t.__objToStr=n,t.__isDate=r,t.__isArray=i,t.__isRegExp=o,t.__getRegExpFlags=a,t}();"object"==typeof t&&t.exports&&(t.exports=n)}).call(e,n(2).Buffer)},function(t,e,n){t.exports=n(268).BrotliDecompressBuffer},function(t,e,n){function r(t){var e;return 0===t.readBits(1)?16:(e=t.readBits(3))>0?17+e:(e=t.readBits(3),e>0?8+e:17)}function i(t){if(t.readBits(1)){var e=t.readBits(3);return 0===e?1:t.readBits(e)+(1<1&&0===a)throw new Error("Invalid size byte");i.meta_block_length|=a<<8*r}}else for(r=0;r4&&0===s)throw new Error("Invalid size nibble");i.meta_block_length|=s<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=t.readBits(1)),i}function s(t,e,n){var r;return n.fillBitWindow(),e+=n.val_>>>n.bit_pos_&N,r=t[e].bits-D,r>0&&(n.bit_pos_+=D,e+=t[e].value,e+=n.val_>>>n.bit_pos_&(1<0;){var f,h=0;if(r.readMoreInput(),r.fillBitWindow(),h+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=c[h].bits,(f=255&c[h].value)>f);else{var p,d,g=f-14,v=0;if(f===L&&(v=o),s!==v&&(a=0,s=v),p=a,a>0&&(a-=2,a<<=g),a+=r.readBits(g)+3,d=a-p,i+d>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var y=0;y0;++s){var y,m=j[s],b=0;r.fillBitWindow(),b+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=v[b].bits,y=v[b].value,p[m]=y,0!==y&&(d-=32>>y,++g)}if(1!==g&&0!==d)throw new Error("[ReadHuffmanCode] invalid num_codes or space");u(p,t,a,r)}if(0===(o=E(e,n,D,a,t)))throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return o}function l(t,e,n){var r,i;return r=s(t,e,n),i=I.kBlockLengthPrefixCode[r].nbits,I.kBlockLengthPrefixCode[r].offset+n.readBits(i)}function f(t,e,n){var r;return t>>5]),this.htrees=new Uint32Array(e)}function g(t,e){var n,r,o,a={num_htrees:null,context_map:null},u=0;e.readMoreInput();var l=a.num_htrees=i(e)+1,f=a.context_map=new Uint8Array(t);if(l<=1)return a;for(n=e.readBits(1),n&&(u=e.readBits(4)+1),r=[],o=0;o=t)throw new Error("[DecodeContextMap] i >= context_map_size");f[o]=0,++o}else f[o]=h-u,++o}return e.readBits(1)&&p(f,t),a}function v(t,e,n,r,i,o,a){var u,c=2*n,l=n,f=s(e,n*U,a);u=0===f?i[c+(1&o[l])]:1===f?i[c+(o[l]-1&1)]+1:f-2,u>=t&&(u-=t),r[n]=u,i[c+(1&o[l])]=u,++o[l]}function y(t,e,n,r,i,o){var a,s=i+1,u=n&i,c=o.pos_&_.IBUF_MASK;if(e<8||o.bit_pos_+(e<<3)0;)o.readMoreInput(),r[u++]=o.readBits(8),u===s&&(t.write(r,s),u=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[u]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++u,--e;if(a=o.bit_end_pos_-o.bit_pos_>>3,c+a>_.IBUF_MASK){for(var l=_.IBUF_MASK+1-c,f=0;f=s){t.write(r,s),u-=s;for(var f=0;f=s;){if(a=s-u,o.input_.read(r,u,a)e.buffer.length){var wt=new Uint8Array(k+nt);wt.set(e.buffer),e.buffer=wt}if(E=bt.input_end,Z=bt.is_uncompressed,bt.is_metadata)for(m(S);nt>0;--nt)S.readMoreInput(),S.readBits(8);else if(0!==nt)if(Z)S.bit_pos_=S.bit_pos_+7&-8,y(e,nt,k,p,h,S),k+=nt;else{for(n=0;n<3;++n)ot[n]=i(S)+1,ot[n]>=2&&(c(ot[n]+2,w,n*U,S),c(M,x,n*U,S),rt[n]=l(x,n*U,S),st[n]=1);for(S.readMoreInput(),Y=S.readBits(2),K=G+(S.readBits(4)<0;){var kt,_t,Ct,At,Et,Pt,It,Ot,Tt,Lt,Bt;for(S.readMoreInput(),0===rt[1]&&(v(ot[1],w,1,it,at,st,S),rt[1]=l(x,U,S),et=V[1].htrees[it[1]]),--rt[1],kt=s(V[1].codes,et,S),_t=kt>>6,_t>=2?(_t-=2,It=-1):It=0,Ct=I.kInsertRangeLut[_t]+(kt>>3&7),At=I.kCopyRangeLut[_t]+(7&kt),Et=I.kInsertLengthPrefixCode[Ct].offset+S.readBits(I.kInsertLengthPrefixCode[Ct].nbits),Pt=I.kCopyLengthPrefixCode[At].offset+S.readBits(I.kCopyLengthPrefixCode[At].nbits),W=p[k-1&h],j=p[k-2&h],Lt=0;Lt4?3:Pt-2),vt=lt[gt+Tt],(It=s(V[2].codes,V[2].htrees[vt],S))>=K){var Rt,Mt,zt;It-=K,Mt=It&X,It>>=Y,Rt=1+(It>>1),zt=(2+(1&It)<L){if(!(Pt>=C.minDictionaryWordLength&&Pt<=C.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+k+" distance: "+Ot+" len: "+Pt+" bytes left: "+nt);var zt=C.offsetsByLength[Pt],Ft=Ot-L-1,Dt=C.sizeBitsByLength[Pt],Nt=(1<>Dt;if(zt+=Ut*Pt,!(Wt=b){e.write(p,u);for(var Gt=0;Gt0&&(D[3&N]=Ot,++N),Pt>nt)throw new Error("Invalid backward reference. pos: "+k+" distance: "+Ot+" len: "+Pt+" bytes left: "+nt);for(Lt=0;Ltthis.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;rthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(t.subarray(0,e),this.pos),this.pos+=e,e},e.BrotliOutput=r},function(t,e){function n(t){this.buf_=new Uint8Array(r),this.input_=t,this.reset()}var r=8224,i=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);n.READ_SIZE=4096,n.IBUF_MASK=8191,n.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,++this.pos_;return this.bit_end_pos_>0},n.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var t=this.buf_ptr_,e=this.input_.read(this.buf_,t,4096);if(e<0)throw new Error("Unexpected end of input");if(e<4096){this.eos_=1;for(var n=0;n<32;n++)this.buf_[t+e+n]=0}if(0===t){for(var n=0;n<32;n++)this.buf_[8192+n]=this.buf_[n];this.buf_ptr_=4096}else this.buf_ptr_=0;this.bit_end_pos_+=e<<3}},n.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},n.prototype.readBits=function(t){32-this.bit_pos_>>this.bit_pos_&i[t];return this.bit_pos_+=t,e},t.exports=n},function(t,e,n){var r=n(272);e.init=function(){e.dictionary=r.init()},e.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),e.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),e.minDictionaryWordLength=4,e.maxDictionaryWordLength=24},function(t,e,n){var r=n(273);n(53);e.init=function(){return(0,n(268).BrotliDecompressBuffer)(r.toByteArray(n(274)))}},function(t,e){"use strict";function n(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,a,s,u=t.length;a=n(t),s=new l(3*u/4-a),i=a>0?u-4:u;var f=0;for(e=0,r=0;e>16&255,s[f++]=o>>8&255,s[f++]=255&o;return 2===a?(o=c[t.charCodeAt(e)]<<2|c[t.charCodeAt(e+1)]>>4,s[f++]=255&o):1===a&&(o=c[t.charCodeAt(e)]<<10|c[t.charCodeAt(e+1)]<<4|c[t.charCodeAt(e+2)]>>2,s[f++]=o>>8&255,s[f++]=255&o),s}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,i=[],a=e;ac?c:s+16383));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var u=[],c=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h>=1;return(t&n-1)+n}function i(t,e,r,i,o){do{i-=r,t[e+i]=new n(o.bits,o.value)}while(i>0)}function o(t,e,n){for(var r=1<0;--S[f])l=new n(255&f,65535&w[h++]),i(t,e+p,d,m,l),p=r(p,f);for(v=b-1,g=-1,f=s+1,d=2;f<=a;++f,d<<=1)for(;S[f]>0;--S[f])(p&v)!==g&&(e+=m,y=o(S,f,s),m=1<>s),d,m,l),p=r(p,f);return b}},function(t,e){e.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),e.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},function(t,e){function n(t,e){this.offset=t,this.nbits=e}e.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],e.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],e.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],e.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],e.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},function(t,e,n){function r(t,e,n){this.prefix=new Uint8Array(t.length),this.transform=e,this.suffix=new Uint8Array(n.length);for(var r=0;r=97&&t[e]<=122&&(t[e]^=32),1):t[e]<224?(t[e+1]^=32,2):(t[e+2]^=5,3)}var o=n(271),a=[new r("",0,""),new r("",0," "),new r(" ",0," "),new r("",12,""),new r("",10," "),new r("",0," the "),new r(" ",0,""),new r("s ",0," "),new r("",0," of "),new r("",10,""),new r("",0," and "),new r("",13,""),new r("",1,""),new r(", ",0," "),new r("",0,", "),new r(" ",10," "),new r("",0," in "),new r("",0," to "),new r("e ",0," "),new r("",0,'"'),new r("",0,"."),new r("",0,'">'),new r("",0,"\n"),new r("",3,""),new r("",0,"]"),new r("",0," for "),new r("",14,""),new r("",2,""),new r("",0," a "),new r("",0," that "),new r(" ",10,""),new r("",0,". "),new r(".",0,""),new r(" ",0,", "),new r("",15,""),new r("",0," with "),new r("",0,"'"),new r("",0," from "),new r("",0," by "),new r("",16,""),new r("",17,""),new r(" the ",0,""),new r("",4,""),new r("",0,". The "),new r("",11,""),new r("",0," on "),new r("",0," as "),new r("",0," is "),new r("",7,""),new r("",1,"ing "),new r("",0,"\n\t"),new r("",0,":"),new r(" ",0,". "),new r("",0,"ed "),new r("",20,""),new r("",18,""),new r("",6,""),new r("",0,"("),new r("",10,", "),new r("",8,""),new r("",0," at "),new r("",0,"ly "),new r(" the ",0," of "),new r("",5,""),new r("",9,""),new r(" ",10,", "),new r("",10,'"'),new r(".",0,"("),new r("",11," "),new r("",10,'">'),new r("",0,'="'),new r(" ",0,"."),new r(".com/",0,""),new r(" the ",0," of the "),new r("",10,"'"),new r("",0,". This "),new r("",0,","),new r(".",0," "),new r("",10,"("),new r("",10,"."),new r("",0," not "),new r(" ",0,'="'),new r("",0,"er "),new r(" ",11," "),new r("",0,"al "),new r(" ",11,""),new r("",0,"='"),new r("",11,'"'),new r("",10,". "),new r(" ",0,"("),new r("",0,"ful "),new r(" ",10,". "),new r("",0,"ive "),new r("",0,"less "),new r("",11,"'"),new r("",0,"est "),new r(" ",10,"."),new r("",11,'">'),new r(" ",0,"='"),new r("",10,","),new r("",0,"ize "),new r("",11,"."),new r(" ",0,""),new r(" ",0,","),new r("",10,'="'),new r("",11,'="'),new r("",0,"ous "),new r("",11,", "),new r("",10,"='"),new r(" ",10,","),new r(" ",11,'="'),new r(" ",11,", "),new r("",11,","),new r("",11,"("),new r("",11,". "),new r(" ",11,"."),new r("",11,"='"),new r(" ",11,". "),new r(" ",10,'="'),new r(" ",11,"='"),new r(" ",10,"='")];e.kTransforms=a,e.kNumTransforms=a.length,e.transformDictionaryWord=function(t,e,n,r,s){var u,c=a[s].prefix,l=a[s].suffix,f=a[s].transform,h=f<12?0:f-11,p=0,d=e;h>r&&(h=r);for(var g=0;g0;){var v=i(t,u);u+=v,r-=v}for(var y=0;yo;r=0<=o?++i:--i)n=t.charCodeAt(r),n=e[n]||n,a.push(n.toString(16));return a},t.prototype.glyphsForString=function(t){var e,n,r,i,o;for(n=[],r=i=0,o=t.length;0<=o?io;r=0<=o?++i:--i)e=t.charCodeAt(r),n.push(this.characterToGlyph(e));return n},t.prototype.characterToGlyph=function(t){return n[e[t]||t]||".notdef"},t.prototype.widthOfGlyph=function(t){return this.glyphWidths[t]||0},t.prototype.getKernPair=function(t,e){return this.kernPairs[t+"\0"+e]||0},t.prototype.advancesForGlyphs=function(t){var e,n,r,i,o,a;for(e=[],n=r=0,o=t.length;r>8,i=0,this.font.post.isFixedPitch&&(i|=1),1<=r&&r<=7&&(i|=2),i|=4,10===r&&(i|=8),this.font.head.macStyle.italic&&(i|=64),l=function(){var t,e;for(e=[],a=t=0;t<6;a=++t)e.push(String.fromCharCode(26*Math.random()+65));return e}().join(""),u=l+"+"+this.font.postscriptName,t=this.font.bbox,n=this.document.ref({Type:"FontDescriptor",FontName:u,Flags:i,FontBBox:[t.minX*this.scale,t.minY*this.scale,t.maxX*this.scale,t.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0}),s?n.data.FontFile3=o:n.data.FontFile2=o,n.end(),e=this.document.ref({Type:"Font",Subtype:s?"CIDFontType0":"CIDFontType2",BaseFont:u,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:n,W:[0,this.widths]}),e.end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:u,Encoding:"Identity-H",DescendantFonts:[e],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()},n=function(){var t,e,n;return e=1<=arguments.length?a.call(arguments,0):[],n=function(){var n,r,i;for(i=[],n=0,r=e.length;n65535&&(l-=65536,r.push(n(l>>>10&1023|55296)),l=56320|1023&l),r.push(n(l));i.push("<"+r.join(" ")+">")}return t.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000>\nendcodespacerange\n1 beginbfrange\n<0000> <"+n(i.length-1)+"> ["+i.join(" ")+"]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"),t},e}(r),t.exports=e}).call(this)},function(t,e,n){(function(){var e;e=n(283),t.exports={initText:function(){return this.x=0,this.y=0,this._lineGap=0},lineGap:function(t){return this._lineGap=t,this},moveDown:function(t){return null==t&&(t=1),this.y+=this.currentLineHeight(!0)*t+this._lineGap,this},moveUp:function(t){return null==t&&(t=1),this.y-=this.currentLineHeight(!0)*t+this._lineGap,this},_text:function(t,n,r,i,o){var a,s,u,c,l;if(i=this._initOptions(n,r,i),t=""+t,i.wordSpacing&&(t=t.replace(/\s{2,}/g," ")),i.width)l=this._wrapper,l||(l=new e(this,i),l.on("line",o)),this._wrapper=i.continued?l:null,this._textOptions=i.continued?i:null,l.wrap(t,i);else for(c=t.split("\n"),a=0,s=c.length;a "+-e)),v=t}}(),h=function(t){return function(e){if(i(e),u.length>0)return t.addContent("["+u.join(" ")+"] TJ"),u.length=0}}(this),d=x=0,m=C.length;xthis.lineWidth+this.continuedX)for(u=s,o={};f.length;){for(a=f.length;l>this.spaceLeft;)l=this.wordWidth(f.slice(0,--a));if(o.required=athis.maxY||o>this.maxY)&&this.nextSection(),n="",a=0,s=0,i=0,u=this.document.y,r=function(t){return function(){return e.textWidth=a+t.wordSpacing*(s-1),e.wordCount=s,e.lineWidth=t.lineWidth,u=t.document.y,t.emit("line",n,e,t),i++}}(this),this.emit("sectionStart",e,this),this.eachWord(t,function(t){return function(i,o,u,c){var l;if((null==c||c.required)&&(t.emit("firstLine",e,t),t.spaceLeft=t.lineWidth),o<=t.spaceLeft&&(n+=i,a+=o,s++),u.required||o>t.spaceLeft){if(u.required&&t.emit("lastLine",e,t),l=t.document.currentLineHeight(!0),null!=t.height&&t.ellipsis&&t.document.y+2*l>t.maxY&&t.column>=t.columns){for(t.ellipsis===!0&&(t.ellipsis="…"),n=n.replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);a>t.lineWidth;)n=n.slice(0,-1).replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);n+=t.ellipsis}return r(),t.document.y+l>t.maxY&&!t.nextSection()?(s=0,n="",!1):u.required?(o>t.spaceLeft&&(n=i,a=o,s=1,r()),t.spaceLeft=t.lineWidth,n="",a=0,s=0):(t.spaceLeft=t.lineWidth-o,n=i,a=o,s=1)}return t.spaceLeft-=o}}(this)),s>0&&(this.emit("lastLine",e,this),r()),this.emit("sectionEnd",e,this),e.continued===!0?(i>1&&(this.continuedX=0),this.continuedX+=e.textWidth,this.document.y=u):this.document.x=this.startX},e.prototype.nextSection=function(t){var e;if(this.emit("sectionEnd",t,this),++this.column>this.columns){if(null!=this.height)return!1;this.document.addPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor&&(e=this.document).fillColor.apply(e,this.document._fillColor),this.emit("pageBreak",t,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",t,this);return this.emit("sectionStart",t,this),!0},e}(e),t.exports=i}).call(this)},function(t,e,n){(function(){var e,r,i,o,a,s,u,c,l,f,h,p,d,g,v,y,m,b,w,x,S,k,_,C,A;w=n(285),k=new w(n(286)),C=n(287),o=C.BK,l=C.CR,p=C.LF,g=C.NL,a=C.CB,i=C.BA,b=C.SP,x=C.WJ,b=C.SP,o=C.BK,p=C.LF,g=C.NL,e=C.AI,r=C.AL,y=C.SA,m=C.SG,S=C.XX,u=C.CJ,C.ID,v=C.NS,C.characterClasses,A=n(288),f=A.DI_BRK,h=A.IN_BRK,s=A.CI_BRK,c=A.CP_BRK,A.PR_BRK,_=A.pairTable,d=function(){function t(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}var n,d,w;return t.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},d=function(t){switch(t){case e:return r;case y:case m:case S:return r;case u:return v;default:return t}},w=function(t){switch(t){case p:case g:return o;case a:return i;case b:return x;default:return t}},t.prototype.nextCharClass=function(t){return null==t&&(t=!1),d(k.get(this.nextCodePoint()))},n=function(){function t(t,e){this.position=t,this.required=null!=e&&e}return t}(),t.prototype.nextBreak=function(){var t,e,r;for(null==this.curClass&&(this.curClass=w(this.nextCharClass()));this.pos=this.string.length)return this.lastPos>p,a=1<>g,l=1024>>g,s=f+l,y=s,v=32,o=y+v,n=1<1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>g]<>g)]<>p)],e=this.data[e+(t>>g&u)],e=(e<u?(m=c,l=c/p):(l=s,m=s*p),"center"===o.align?n=n+c/2-m/2:"right"===o.align&&(n=n+c-m),"center"===o.valign?i=i+s/2-l/2:"bottom"===o.valign&&(i=i+s-l)),this.y===i&&(this.y+=l),this.save(),this.transform(m,0,0,-l,n,i+l),this.addContent("/"+h.label+" Do"),this.restore(),this}}}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){(function(){var r,i,o,a;a=n(53),n(291),r=n(292),o=n(293),i=function(){function t(){}return t.open=function(t,n){var i,s;if(e.isBuffer(t))i=t;else if(t instanceof ArrayBuffer)i=new e(new Uint8Array(t));else if(s=/^data:.+;base64,(.*)$/.exec(t))i=new e(s[1],"base64");else if(!(i=a.readFileSync(t)))return;if(255===i[0]&&216===i[1])return new r(i,n);if(137===i[0]&&"PNG"===i.toString("ascii",1,4))return new o(i,n);throw new Error("Unknown image format.")},t}(),t.exports=i}).call(this)}).call(e,n(2).Buffer)},function(t,e){(function(){var e;e=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.byteAt=function(t){return this.data[t]},t.prototype.readBool=function(){return!!this.readByte()},t.prototype.writeBool=function(t){return this.writeByte(t?1:0)},t.prototype.readUInt32=function(){var t,e,n,r;return t=16777216*this.readByte(),e=this.readByte()<<16,n=this.readByte()<<8,r=this.readByte(),t+e+n+r},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return t=this.readUInt32(),t>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){var t,e;return t=this.readByte()<<8,e=this.readByte(),t|e},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return t=this.readUInt16(),t>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t;0<=r?nr;e=0<=r?++n:--n)i[e]=String.fromCharCode(this.readByte());return i.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;0<=r?nr;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.stringAt=function(t,e){return this.pos=t,this.readString(e)},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),o=this.readByte(),a=this.readByte(),s=this.readByte(),128&t?(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1)*-1:72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.slice=function(t,e){return this.data.slice(t,e)},t.prototype.read=function(t){var e,n,r;for(e=[],n=0,r=t;0<=r?nr;0<=r?++n:--n)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;n=0));)a+=this.data.readUInt16BE(a);if(r.call(e,o)<0)throw"Invalid JPEG.";a+=2,this.bits=this.data[a++],this.height=this.data.readUInt16BE(a),a+=2,this.width=this.data.readUInt16BE(a),a+=2,i=this.data[a++],this.colorSpace=function(){switch(i){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}var e;return e=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],t.prototype.embed=function(t){if(!this.obj)return this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o;o=n(56),r=n(294),i=function(){function t(t,e){this.label=e,this.image=new r(t),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return t.prototype.embed=function(t){var n,r,i,o,a,s,u,c;if(this.document=t,!this.obj){if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),this.image.hasAlphaChannel||(a=this.document.ref({Predictor:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width}),this.obj.data.DecodeParms=a,a.end()),0===this.image.palette.length?this.obj.data.ColorSpace=this.image.colorSpace:(o=this.document.ref(),o.end(new e(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,o]),this.image.transparency.grayscale)return u=this.image.transparency.greyscale,this.obj.data.Mask=[u,u];if(this.image.transparency.rgb){for(s=this.image.transparency.rgb,i=[],n=0,r=s.length;n0)for(i=l=0;0<=s?ls;i=0<=s?++l:--l)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(n)[0];break;case 2:this.transparency.rgb=this.read(n)}break;case"tEXt":u=this.read(n),o=u.indexOf(0),a=String.fromCharCode.apply(String,u.slice(0,o)),this.text[a]=String.fromCharCode.apply(String,u.slice(o+1));break;case"IEND":return this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(f=this.colorType)||6===f,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new e(this.imgData));default:this.pos+=n}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return t.decode=function(e,n){return r.readFile(e,function(e,r){var i;return i=new t(r),i.decode(function(t){return n(t)})})},t.load=function(e){var n;return n=r.readFileSync(e),new t(n)},t.prototype.read=function(t){var e,n;for(n=[],e=0;0<=t?et;0<=t?++e:--e)n.push(this.data[this.pos++]);return n},t.prototype.readUInt32=function(){var t,e,n,r;return t=this.data[this.pos++]<<24,e=this.data[this.pos++]<<16,n=this.data[this.pos++]<<8,r=this.data[this.pos++],t|e|n|r},t.prototype.readUInt16=function(){var t,e;return t=this.data[this.pos++]<<8,e=this.data[this.pos++],t|e},t.prototype.decodePixels=function(t){var n=this;return i.inflate(this.imgData,function(r,i){var o,a,s,u,c,l,f,h,p,d,g,v,y,m,b,w,x,S,k,_,C,A,E;if(r)throw r;for(v=n.pixelBitlength/8,w=v*n.width,y=new e(w*n.height),l=i.length,b=0,m=0,a=0;me?n:e}return t.inlines[e]}(),a=function(){for(var e=0,n=0,r=t.inlines.length;n=2.0 are supported. Use LegacyGLTFLoader instead.' ) ); + return; + + } + + if ( json.extensionsUsed ) { + + for ( var i = 0; i < json.extensionsUsed.length; ++ i ) { + + var extensionName = json.extensionsUsed[ i ]; + var extensionsRequired = json.extensionsRequired || []; + + switch ( extensionName ) { + + case EXTENSIONS.KHR_LIGHTS_PUNCTUAL: + extensions[ extensionName ] = new GLTFLightsExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[ extensionName ] = new GLTFMaterialsUnlitExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: + extensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension( json ); + break; + + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); + break; + + case EXTENSIONS.MSFT_TEXTURE_DDS: + extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension( json ); + break; + + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] = new GLTFTextureTransformExtension( json ); + break; + + default: + + if ( extensionsRequired.indexOf( extensionName ) >= 0 ) { + + console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); + + } + + } + + } + + } + + var parser = new GLTFParser( json, extensions, { + + path: path || this.resourcePath || '', + crossOrigin: this.crossOrigin, + manager: this.manager + + } ); + + parser.parse( function ( scene, scenes, cameras, animations, json ) { + + var glTF = { + scene: scene, + scenes: scenes, + cameras: cameras, + animations: animations, + asset: json.asset, + parser: parser, + userData: {} + }; + + addUnknownExtensionsToUserData( extensions, glTF, json ); + + onLoad( glTF ); + + }, onError ); + + } + + }; + + /* GLTFREGISTRY */ + + function GLTFRegistry() { + + var objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + } + + }; + + } + + /*********************************/ + /********** EXTENSIONS ***********/ + /*********************************/ + + var EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + MSFT_TEXTURE_DDS: 'MSFT_texture_dds' + }; + + /** + * DDS Texture Extension + * + * Specification: + * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds + * + */ + function GLTFTextureDDSExtension() { + + if ( ! THREE.DDSLoader ) { + + throw new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader' ); + + } + + this.name = EXTENSIONS.MSFT_TEXTURE_DDS; + this.ddsLoader = new THREE.DDSLoader(); + + } + + /** + * Lights Extension + * + * Specification: PENDING + */ + function GLTFLightsExtension( json ) { + + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {}; + this.lightDefs = extension.lights || []; + + } + + GLTFLightsExtension.prototype.loadLight = function ( lightIndex ) { + + var lightDef = this.lightDefs[ lightIndex ]; + var lightNode; + + var color = new THREE.Color( 0xffffff ); + if ( lightDef.color !== undefined ) color.fromArray( lightDef.color ); + + var range = lightDef.range !== undefined ? lightDef.range : 0; + + switch ( lightDef.type ) { + + case 'directional': + lightNode = new THREE.DirectionalLight( color ); + lightNode.target.position.set( 0, 0, -1 ); + lightNode.add( lightNode.target ); + break; + + case 'point': + lightNode = new THREE.PointLight( color ); + lightNode.distance = range; + break; + + case 'spot': + lightNode = new THREE.SpotLight( color ); + lightNode.distance = range; + // Handle spotlight properties. + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set( 0, 0, -1 ); + lightNode.add( lightNode.target ); + break; + + default: + throw new Error( 'THREE.GLTFLoader: Unexpected light type, "' + lightDef.type + '".' ); + + } + + lightNode.decay = 2; + + if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; + + lightNode.name = lightDef.name || ( 'light_' + lightIndex ); + + return Promise.resolve( lightNode ); + + }; + + /** + * Unlit Materials Extension (pending) + * + * PR: https://github.com/KhronosGroup/glTF/pull/1163 + */ + function GLTFMaterialsUnlitExtension( json ) { + + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + + } + + GLTFMaterialsUnlitExtension.prototype.getMaterialType = function ( material ) { + + return THREE.MeshBasicMaterial; + + }; + + GLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, material, parser ) { + + var pending = []; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + var metallicRoughness = material.pbrMetallicRoughness; + + if ( metallicRoughness ) { + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + } + + return Promise.all( pending ); + + }; + + /* BINARY EXTENSION */ + + var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; + var BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; + var BINARY_EXTENSION_HEADER_LENGTH = 12; + var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + + function GLTFBinaryExtension( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + + this.header = { + magic: THREE.LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.' ); + + } + + var chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + var chunkIndex = 0; + + while ( chunkIndex < chunkView.byteLength ) { + + var chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + var chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = THREE.LoaderUtils.decodeText( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); + + } + + } + + /** + * DRACO Mesh Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/pull/874 + */ + function GLTFDracoMeshCompressionExtension( json, dracoLoader ) { + + if ( ! dracoLoader ) { + + throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); + + } + + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + THREE.DRACOLoader.getDecoderModule(); + + } + + GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) { + + var json = this.json; + var dracoLoader = this.dracoLoader; + var bufferViewIndex = primitive.extensions[ this.name ].bufferView; + var gltfAttributeMap = primitive.extensions[ this.name ].attributes; + var threeAttributeMap = {}; + var attributeNormalizedMap = {}; + var attributeTypeMap = {}; + + for ( var attributeName in gltfAttributeMap ) { + + if ( ! ( attributeName in ATTRIBUTES ) ) continue; + + threeAttributeMap[ ATTRIBUTES[ attributeName ] ] = gltfAttributeMap[ attributeName ]; + + } + + for ( attributeName in primitive.attributes ) { + + if ( ATTRIBUTES[ attributeName ] !== undefined && gltfAttributeMap[ attributeName ] !== undefined ) { + + var accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; + var componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + attributeTypeMap[ ATTRIBUTES[ attributeName ] ] = componentType; + attributeNormalizedMap[ ATTRIBUTES[ attributeName ] ] = accessorDef.normalized === true; + + } + + } + + return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { + + return new Promise( function ( resolve ) { + + dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { + + for ( var attributeName in geometry.attributes ) { + + var attribute = geometry.attributes[ attributeName ]; + var normalized = attributeNormalizedMap[ attributeName ]; + + if ( normalized !== undefined ) attribute.normalized = normalized; + + } + + resolve( geometry ); + + }, threeAttributeMap, attributeTypeMap ); + + } ); + + } ); + + }; + + /** + * Texture Transform Extension + * + * Specification: + */ + function GLTFTextureTransformExtension( json ) { + + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + + } + + GLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) { + + texture = texture.clone(); + + if ( transform.offset !== undefined ) { + + texture.offset.fromArray( transform.offset ); + + } + + if ( transform.rotation !== undefined ) { + + texture.rotation = transform.rotation; + + } + + if ( transform.scale !== undefined ) { + + texture.repeat.fromArray( transform.scale ); + + } + + if ( transform.texCoord !== undefined ) { + + console.warn( 'THREE.GLTFLoader: Custom UV sets in "' + this.name + '" extension not yet supported.' ); + + } + + texture.needsUpdate = true; + + return texture; + + }; + + /** + * Specular-Glossiness Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness + */ + function GLTFMaterialsPbrSpecularGlossinessExtension() { + + return { + + name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, + + specularGlossinessParams: [ + 'color', + 'map', + 'lightMap', + 'lightMapIntensity', + 'aoMap', + 'aoMapIntensity', + 'emissive', + 'emissiveIntensity', + 'emissiveMap', + 'bumpMap', + 'bumpScale', + 'normalMap', + 'displacementMap', + 'displacementScale', + 'displacementBias', + 'specularMap', + 'specular', + 'glossinessMap', + 'glossiness', + 'alphaMap', + 'envMap', + 'envMapIntensity', + 'refractionRatio', + ], + + getMaterialType: function () { + + return THREE.ShaderMaterial; + + }, + + extendParams: function ( params, material, parser ) { + + var pbrSpecularGlossiness = material.extensions[ this.name ]; + + var shader = THREE.ShaderLib[ 'standard' ]; + + var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); + + var specularMapParsFragmentChunk = [ + '#ifdef USE_SPECULARMAP', + ' uniform sampler2D specularMap;', + '#endif' + ].join( '\n' ); + + var glossinessMapParsFragmentChunk = [ + '#ifdef USE_GLOSSINESSMAP', + ' uniform sampler2D glossinessMap;', + '#endif' + ].join( '\n' ); + + var specularMapFragmentChunk = [ + 'vec3 specularFactor = specular;', + '#ifdef USE_SPECULARMAP', + ' vec4 texelSpecular = texture2D( specularMap, vUv );', + ' texelSpecular = sRGBToLinear( texelSpecular );', + ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' specularFactor *= texelSpecular.rgb;', + '#endif' + ].join( '\n' ); + + var glossinessMapFragmentChunk = [ + 'float glossinessFactor = glossiness;', + '#ifdef USE_GLOSSINESSMAP', + ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', + ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' glossinessFactor *= texelGlossiness.a;', + '#endif' + ].join( '\n' ); + + var lightPhysicalFragmentChunk = [ + 'PhysicalMaterial material;', + 'material.diffuseColor = diffuseColor.rgb;', + 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', + 'material.specularColor = specularFactor.rgb;', + ].join( '\n' ); + + var fragmentShader = shader.fragmentShader + .replace( 'uniform float roughness;', 'uniform vec3 specular;' ) + .replace( 'uniform float metalness;', 'uniform float glossiness;' ) + .replace( '#include ', specularMapParsFragmentChunk ) + .replace( '#include ', glossinessMapParsFragmentChunk ) + .replace( '#include ', specularMapFragmentChunk ) + .replace( '#include ', glossinessMapFragmentChunk ) + .replace( '#include ', lightPhysicalFragmentChunk ); + + delete uniforms.roughness; + delete uniforms.metalness; + delete uniforms.roughnessMap; + delete uniforms.metalnessMap; + + uniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) }; + uniforms.glossiness = { value: 0.5 }; + uniforms.specularMap = { value: null }; + uniforms.glossinessMap = { value: null }; + + params.vertexShader = shader.vertexShader; + params.fragmentShader = fragmentShader; + params.uniforms = uniforms; + params.defines = { 'STANDARD': '' }; + + params.color = new THREE.Color( 1.0, 1.0, 1.0 ); + params.opacity = 1.0; + + var pending = []; + + if ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) { + + var array = pbrSpecularGlossiness.diffuseFactor; + + params.color.fromArray( array ); + params.opacity = array[ 3 ]; + + } + + if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) { + + pending.push( parser.assignTexture( params, 'map', pbrSpecularGlossiness.diffuseTexture ) ); + + } + + params.emissive = new THREE.Color( 0.0, 0.0, 0.0 ); + params.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0; + params.specular = new THREE.Color( 1.0, 1.0, 1.0 ); + + if ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) { + + params.specular.fromArray( pbrSpecularGlossiness.specularFactor ); + + } + + if ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) { + + var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture; + pending.push( parser.assignTexture( params, 'glossinessMap', specGlossMapDef ) ); + pending.push( parser.assignTexture( params, 'specularMap', specGlossMapDef ) ); + + } + + return Promise.all( pending ); + + }, + + createMaterial: function ( params ) { + + // setup material properties based on MeshStandardMaterial for Specular-Glossiness + + var material = new THREE.ShaderMaterial( { + defines: params.defines, + vertexShader: params.vertexShader, + fragmentShader: params.fragmentShader, + uniforms: params.uniforms, + fog: true, + lights: true, + opacity: params.opacity, + transparent: params.transparent + } ); + + material.isGLTFSpecularGlossinessMaterial = true; + + material.color = params.color; + + material.map = params.map === undefined ? null : params.map; + + material.lightMap = null; + material.lightMapIntensity = 1.0; + + material.aoMap = params.aoMap === undefined ? null : params.aoMap; + material.aoMapIntensity = 1.0; + + material.emissive = params.emissive; + material.emissiveIntensity = 1.0; + material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap; + + material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap; + material.bumpScale = 1; + + material.normalMap = params.normalMap === undefined ? null : params.normalMap; + if ( params.normalScale ) material.normalScale = params.normalScale; + + material.displacementMap = null; + material.displacementScale = 1; + material.displacementBias = 0; + + material.specularMap = params.specularMap === undefined ? null : params.specularMap; + material.specular = params.specular; + + material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap; + material.glossiness = params.glossiness; + + material.alphaMap = null; + + material.envMap = params.envMap === undefined ? null : params.envMap; + material.envMapIntensity = 1.0; + + material.refractionRatio = 0.98; + + material.extensions.derivatives = true; + + return material; + + }, + + /** + * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can + * copy only properties it knows about or inherits, and misses many properties that would + * normally be defined by MeshStandardMaterial. + * + * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of + * loading a glTF model, but cloning later (e.g. by the user) would require these changes + * AND also updating `.onBeforeRender` on the parent mesh. + * + * @param {THREE.ShaderMaterial} source + * @return {THREE.ShaderMaterial} + */ + cloneMaterial: function ( source ) { + + var target = source.clone(); + + target.isGLTFSpecularGlossinessMaterial = true; + + var params = this.specularGlossinessParams; + + for ( var i = 0, il = params.length; i < il; i ++ ) { + + target[ params[ i ] ] = source[ params[ i ] ]; + + } + + return target; + + }, + + // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer. + refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) { + + if ( material.isGLTFSpecularGlossinessMaterial !== true ) { + + return; + + } + + var uniforms = material.uniforms; + var defines = material.defines; + + uniforms.opacity.value = material.opacity; + + uniforms.diffuse.value.copy( material.color ); + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + uniforms.map.value = material.map; + uniforms.specularMap.value = material.specularMap; + uniforms.alphaMap.value = material.alphaMap; + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.glossinessMap ) { + + uvScaleMap = material.glossinessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + uniforms.envMapIntensity.value = material.envMapIntensity; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = renderer.properties.get( material.envMap ).__maxMipLevel; + } + + uniforms.specular.value.copy( material.specular ); + uniforms.glossiness.value = material.glossiness; + + uniforms.glossinessMap.value = material.glossinessMap; + + uniforms.emissiveMap.value = material.emissiveMap; + uniforms.bumpMap.value = material.bumpMap; + uniforms.normalMap.value = material.normalMap; + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + if ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) { + + defines.USE_GLOSSINESSMAP = ''; + // set USE_ROUGHNESSMAP to enable vUv + defines.USE_ROUGHNESSMAP = ''; + + } + + if ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) { + + delete defines.USE_GLOSSINESSMAP; + delete defines.USE_ROUGHNESSMAP; + + } + + } + + }; + + } + + /*********************************/ + /********** INTERPOLATION ********/ + /*********************************/ + + // Spline Interpolation + // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation + function GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + THREE.Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + GLTFCubicSplineInterpolant.prototype = Object.create( THREE.Interpolant.prototype ); + GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant; + + GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) { + + // Copies a sample value to the result buffer. See description of glTF + // CUBICSPLINE values layout in interpolate_() function below. + + var result = this.resultBuffer, + values = this.sampleValues, + valueSize = this.valueSize, + offset = index * valueSize * 3 + valueSize; + + for ( var i = 0; i !== valueSize; i ++ ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }; + + GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer; + var values = this.sampleValues; + var stride = this.valueSize; + + var stride2 = stride * 2; + var stride3 = stride * 3; + + var td = t1 - t0; + + var p = ( t - t0 ) / td; + var pp = p * p; + var ppp = pp * p; + + var offset1 = i1 * stride3; + var offset0 = offset1 - stride3; + + var s2 = - 2 * ppp + 3 * pp; + var s3 = ppp - pp; + var s0 = 1 - s2; + var s1 = s3 - pp + p; + + // Layout of keyframe output values for CUBICSPLINE animations: + // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] + for ( var i = 0; i !== stride; i ++ ) { + + var p0 = values[ offset0 + i + stride ]; // splineVertex_k + var m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) + var p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 + var m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) + + result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + + } + + return result; + + }; + + /*********************************/ + /********** INTERNALS ************/ + /*********************************/ + + /* CONSTANTS */ + + var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 + }; + + var WEBGL_TYPE = { + 5126: Number, + //35674: THREE.Matrix2, + 35675: THREE.Matrix3, + 35676: THREE.Matrix4, + 35664: THREE.Vector2, + 35665: THREE.Vector3, + 35666: THREE.Vector4, + 35678: THREE.Texture + }; + + var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array + }; + + var WEBGL_FILTERS = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipMapNearestFilter, + 9985: THREE.LinearMipMapNearestFilter, + 9986: THREE.NearestMipMapLinearFilter, + 9987: THREE.LinearMipMapLinearFilter + }; + + var WEBGL_WRAPPINGS = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping + }; + + var WEBGL_SIDES = { + 1028: THREE.BackSide, // Culling front + 1029: THREE.FrontSide // Culling back + //1032: THREE.NoSide // Culling front and back, what to do? + }; + + var WEBGL_DEPTH_FUNCS = { + 512: THREE.NeverDepth, + 513: THREE.LessDepth, + 514: THREE.EqualDepth, + 515: THREE.LessEqualDepth, + 516: THREE.GreaterEqualDepth, + 517: THREE.NotEqualDepth, + 518: THREE.GreaterEqualDepth, + 519: THREE.AlwaysDepth + }; + + var WEBGL_BLEND_EQUATIONS = { + 32774: THREE.AddEquation, + 32778: THREE.SubtractEquation, + 32779: THREE.ReverseSubtractEquation + }; + + var WEBGL_BLEND_FUNCS = { + 0: THREE.ZeroFactor, + 1: THREE.OneFactor, + 768: THREE.SrcColorFactor, + 769: THREE.OneMinusSrcColorFactor, + 770: THREE.SrcAlphaFactor, + 771: THREE.OneMinusSrcAlphaFactor, + 772: THREE.DstAlphaFactor, + 773: THREE.OneMinusDstAlphaFactor, + 774: THREE.DstColorFactor, + 775: THREE.OneMinusDstColorFactor, + 776: THREE.SrcAlphaSaturateFactor + // The followings are not supported by Three.js yet + //32769: CONSTANT_COLOR, + //32770: ONE_MINUS_CONSTANT_COLOR, + //32771: CONSTANT_ALPHA, + //32772: ONE_MINUS_CONSTANT_COLOR + }; + + var WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 + }; + + var ATTRIBUTES = { + POSITION: 'position', + NORMAL: 'normal', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv2', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', + }; + + var PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' + }; + + var INTERPOLATION = { + CUBICSPLINE: THREE.InterpolateSmooth, // We use custom interpolation GLTFCubicSplineInterpolation for CUBICSPLINE. + // KeyframeTrack.optimize() can't handle glTF Cubic Spline output values layout, + // using THREE.InterpolateSmooth for KeyframeTrack instantiation to prevent optimization. + // See KeyframeTrack.optimize() for the detail. + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete + }; + + var STATES_ENABLES = { + 2884: 'CULL_FACE', + 2929: 'DEPTH_TEST', + 3042: 'BLEND', + 3089: 'SCISSOR_TEST', + 32823: 'POLYGON_OFFSET_FILL', + 32926: 'SAMPLE_ALPHA_TO_COVERAGE' + }; + + var ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' + }; + + var MIME_TYPE_FORMATS = { + 'image/png': THREE.RGBAFormat, + 'image/jpeg': THREE.RGBFormat + }; + + /* UTILITY FUNCTIONS */ + + function resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) return ''; + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) return url; + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) return url; + + // Blob URL + if ( /^blob:.*$/i.test( url ) ) return url; + + // Relative URL + return path + url; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material + */ + function createDefaultMaterial() { + + return new THREE.MeshStandardMaterial( { + color: 0xFFFFFF, + emissive: 0x000000, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: THREE.FrontSide + } ); + + } + + function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { + + // Add unknown glTF extensions to an object's userData. + + for ( var name in objectDef.extensions ) { + + if ( knownExtensions[ name ] === undefined ) { + + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; + + } + + } + + } + + /** + * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object + * @param {GLTF.definition} gltfDef + */ + function assignExtrasToUserData( object, gltfDef ) { + + if ( gltfDef.extras !== undefined ) { + + if ( typeof gltfDef.extras === 'object' ) { + + object.userData = gltfDef.extras; + + } else { + + console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); + + } + + } + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets + * + * @param {THREE.BufferGeometry} geometry + * @param {Array} targets + * @param {GLTFParser} parser + * @return {Promise} + */ + function addMorphTargets( geometry, targets, parser ) { + + var hasMorphPosition = false; + var hasMorphNormal = false; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( target.POSITION !== undefined ) hasMorphPosition = true; + if ( target.NORMAL !== undefined ) hasMorphNormal = true; + + if ( hasMorphPosition && hasMorphNormal ) break; + + } + + if ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry ); + + var pendingPositionAccessors = []; + var pendingNormalAccessors = []; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( hasMorphPosition ) { + + // TODO: Error-prone use of a callback inside a loop. + var accessor = target.POSITION !== undefined + ? parser.getDependency( 'accessor', target.POSITION ) + .then( function ( accessor ) { + // Cloning not to pollute original accessor below + return cloneBufferAttribute( accessor ); + } ) + : geometry.attributes.position; + + pendingPositionAccessors.push( accessor ); + + } + + if ( hasMorphNormal ) { + + // TODO: Error-prone use of a callback inside a loop. + var accessor = target.NORMAL !== undefined + ? parser.getDependency( 'accessor', target.NORMAL ) + .then( function ( accessor ) { + return cloneBufferAttribute( accessor ); + } ) + : geometry.attributes.normal; + + pendingNormalAccessors.push( accessor ); + + } + + } + + return Promise.all( [ + Promise.all( pendingPositionAccessors ), + Promise.all( pendingNormalAccessors ) + ] ).then( function ( accessors ) { + + var morphPositions = accessors[ 0 ]; + var morphNormals = accessors[ 1 ]; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + var attributeName = 'morphTarget' + i; + + if ( hasMorphPosition ) { + + // Three.js morph position is absolute value. The formula is + // basePosition + // + weight0 * ( morphPosition0 - basePosition ) + // + weight1 * ( morphPosition1 - basePosition ) + // ... + // while the glTF one is relative + // basePosition + // + weight0 * glTFmorphPosition0 + // + weight1 * glTFmorphPosition1 + // ... + // then we need to convert from relative to absolute here. + + if ( target.POSITION !== undefined ) { + + var positionAttribute = morphPositions[ i ]; + positionAttribute.name = attributeName; + + var position = geometry.attributes.position; + + for ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) { + + positionAttribute.setXYZ( + j, + positionAttribute.getX( j ) + position.getX( j ), + positionAttribute.getY( j ) + position.getY( j ), + positionAttribute.getZ( j ) + position.getZ( j ) + ); + + } + + } + + } + + if ( hasMorphNormal ) { + + // see target.POSITION's comment + + if ( target.NORMAL !== undefined ) { + + var normalAttribute = morphNormals[ i ]; + normalAttribute.name = attributeName; + + var normal = geometry.attributes.normal; + + for ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) { + + normalAttribute.setXYZ( + j, + normalAttribute.getX( j ) + normal.getX( j ), + normalAttribute.getY( j ) + normal.getY( j ), + normalAttribute.getZ( j ) + normal.getZ( j ) + ); + + } + + } + + } + + } + + if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; + if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; + + return geometry; + + } ); + + } + + /** + * @param {THREE.Mesh} mesh + * @param {GLTF.Mesh} meshDef + */ + function updateMorphTargets( mesh, meshDef ) { + + mesh.updateMorphTargets(); + + if ( meshDef.weights !== undefined ) { + + for ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) { + + mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; + + } + + } + + // .extras has user-defined data, so check that .extras.targetNames is an array. + if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { + + var targetNames = meshDef.extras.targetNames; + + if ( mesh.morphTargetInfluences.length === targetNames.length ) { + + mesh.morphTargetDictionary = {}; + + for ( var i = 0, il = targetNames.length; i < il; i ++ ) { + + mesh.morphTargetDictionary[ targetNames[ i ] ] = i; + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); + + } + + } + + } + + function isPrimitiveEqual( a, b ) { + + var dracoExtA = a.extensions ? a.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] : undefined; + var dracoExtB = b.extensions ? b.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] : undefined; + + if ( dracoExtA && dracoExtB ) { + + if ( dracoExtA.bufferView !== dracoExtB.bufferView ) return false; + + return isObjectEqual( dracoExtA.attributes, dracoExtB.attributes ); + + } + + if ( a.indices !== b.indices ) { + + return false; + + } + + return isObjectEqual( a.attributes, b.attributes ); + + } + + function isObjectEqual( a, b ) { + + if ( Object.keys( a ).length !== Object.keys( b ).length ) return false; + + for ( var key in a ) { + + if ( a[ key ] !== b[ key ] ) return false; + + } + + return true; + + } + + function isArrayEqual( a, b ) { + + if ( a.length !== b.length ) return false; + + for ( var i = 0, il = a.length; i < il; i ++ ) { + + if ( a[ i ] !== b[ i ] ) return false; + + } + + return true; + + } + + function getCachedGeometry( cache, newPrimitive ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( isPrimitiveEqual( cached.primitive, newPrimitive ) ) return cached.promise; + + } + + return null; + + } + + function getCachedCombinedGeometry( cache, geometries ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( isArrayEqual( geometries, cached.baseGeometries ) ) return cached.geometry; + + } + + return null; + + } + + function getCachedMultiPassGeometry( cache, geometry, primitives ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( geometry === cached.baseGeometry && isArrayEqual( primitives, cached.primitives ) ) return cached.geometry; + + } + + return null; + + } + + function cloneBufferAttribute( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) { + + var count = attribute.count; + var itemSize = attribute.itemSize; + var array = attribute.array.slice( 0, count * itemSize ); + + for ( var i = 0, j = 0; i < count; ++ i ) { + + array[ j ++ ] = attribute.getX( i ); + if ( itemSize >= 2 ) array[ j ++ ] = attribute.getY( i ); + if ( itemSize >= 3 ) array[ j ++ ] = attribute.getZ( i ); + if ( itemSize >= 4 ) array[ j ++ ] = attribute.getW( i ); + + } + + return new THREE.BufferAttribute( array, itemSize, attribute.normalized ); + + } + + return attribute.clone(); + + } + + /** + * Checks if we can build a single Mesh with MultiMaterial from multiple primitives. + * Returns true if all primitives use the same attributes/morphAttributes/mode + * and also have index. Otherwise returns false. + * + * @param {Array} primitives + * @return {Boolean} + */ + function isMultiPassGeometry( primitives ) { + + if ( primitives.length < 2 ) return false; + + var primitive0 = primitives[ 0 ]; + var targets0 = primitive0.targets || []; + + if ( primitive0.indices === undefined ) return false; + + for ( var i = 1, il = primitives.length; i < il; i ++ ) { + + var primitive = primitives[ i ]; + + if ( primitive0.mode !== primitive.mode ) return false; + if ( primitive.indices === undefined ) return false; + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) return false; + if ( ! isObjectEqual( primitive0.attributes, primitive.attributes ) ) return false; + + var targets = primitive.targets || []; + + if ( targets0.length !== targets.length ) return false; + + for ( var j = 0, jl = targets0.length; j < jl; j ++ ) { + + if ( ! isObjectEqual( targets0[ j ], targets[ j ] ) ) return false; + + } + + } + + return true; + + } + + /* GLTF PARSER */ + + function GLTFParser( json, extensions, options ) { + + this.json = json || {}; + this.extensions = extensions || {}; + this.options = options || {}; + + // loader object cache + this.cache = new GLTFRegistry(); + + // BufferGeometry caching + this.primitiveCache = []; + this.multiplePrimitivesCache = []; + this.multiPassGeometryCache = []; + + this.textureLoader = new THREE.TextureLoader( this.options.manager ); + this.textureLoader.setCrossOrigin( this.options.crossOrigin ); + + this.fileLoader = new THREE.FileLoader( this.options.manager ); + this.fileLoader.setResponseType( 'arraybuffer' ); + + } + + GLTFParser.prototype.parse = function ( onLoad, onError ) { + + var json = this.json; + + // Clear the loader cache + this.cache.removeAll(); + + // Mark the special nodes/meshes in json for efficient parse + this.markDefs(); + + // Fire the callback on complete + this.getMultiDependencies( [ + + 'scene', + 'animation', + 'camera' + + ] ).then( function ( dependencies ) { + + var scenes = dependencies.scenes || []; + var scene = scenes[ json.scene || 0 ]; + var animations = dependencies.animations || []; + var cameras = dependencies.cameras || []; + + onLoad( scene, scenes, cameras, animations, json ); + + } ).catch( onError ); + + }; + + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + GLTFParser.prototype.markDefs = function () { + + var nodeDefs = this.json.nodes || []; + var skinDefs = this.json.skins || []; + var meshDefs = this.json.meshes || []; + + var meshReferences = {}; + var meshUses = {}; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + for ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { + + var joints = skinDefs[ skinIndex ].joints; + + for ( var i = 0, il = joints.length; i < il; i ++ ) { + + nodeDefs[ joints[ i ] ].isBone = true; + + } + + } + + // Meshes can (and should) be reused by multiple nodes in a glTF asset. To + // avoid having more than one THREE.Mesh with the same name, count + // references and rename instances below. + // + // Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + for ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + var nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.mesh !== undefined ) { + + if ( meshReferences[ nodeDef.mesh ] === undefined ) { + + meshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0; + + } + + meshReferences[ nodeDef.mesh ] ++; + + // Nothing in the mesh definition indicates whether it is + // a SkinnedMesh or Mesh. Use the node's mesh reference + // to mark SkinnedMesh if node has skin. + if ( nodeDef.skin !== undefined ) { + + meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; + + } + + } + + } + + this.json.meshReferences = meshReferences; + this.json.meshUses = meshUses; + + }; + + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + GLTFParser.prototype.getDependency = function ( type, index ) { + + var cacheKey = type + ':' + index; + var dependency = this.cache.get( cacheKey ); + + if ( ! dependency ) { + + switch ( type ) { + + case 'scene': + dependency = this.loadScene( index ); + break; + + case 'node': + dependency = this.loadNode( index ); + break; + + case 'mesh': + dependency = this.loadMesh( index ); + break; + + case 'accessor': + dependency = this.loadAccessor( index ); + break; + + case 'bufferView': + dependency = this.loadBufferView( index ); + break; + + case 'buffer': + dependency = this.loadBuffer( index ); + break; + + case 'material': + dependency = this.loadMaterial( index ); + break; + + case 'texture': + dependency = this.loadTexture( index ); + break; + + case 'skin': + dependency = this.loadSkin( index ); + break; + + case 'animation': + dependency = this.loadAnimation( index ); + break; + + case 'camera': + dependency = this.loadCamera( index ); + break; + + case 'light': + dependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index ); + break + + default: + throw new Error( 'Unknown type: ' + type ); + + } + + this.cache.add( cacheKey, dependency ); + + } + + return dependency; + + }; + + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + GLTFParser.prototype.getDependencies = function ( type ) { + + var dependencies = this.cache.get( type ); + + if ( ! dependencies ) { + + var parser = this; + var defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; + + dependencies = Promise.all( defs.map( function ( def, index ) { + + return parser.getDependency( type, index ); + + } ) ); + + this.cache.add( type, dependencies ); + + } + + return dependencies; + + }; + + /** + * Requests all multiple dependencies of the specified types asynchronously, with caching. + * @param {Array} types + * @return {Promise>>} + */ + GLTFParser.prototype.getMultiDependencies = function ( types ) { + + var results = {}; + var pending = []; + + for ( var i = 0, il = types.length; i < il; i ++ ) { + + var type = types[ i ]; + var value = this.getDependencies( type ); + + // TODO: Error-prone use of a callback inside a loop. + value = value.then( function ( key, value ) { + + results[ key ] = value; + + }.bind( this, type + ( type === 'mesh' ? 'es' : 's' ) ) ); + + pending.push( value ); + + } + + return Promise.all( pending ).then( function () { + + return results; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBuffer = function ( bufferIndex ) { + + var bufferDef = this.json.buffers[ bufferIndex ]; + var loader = this.fileLoader; + + if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { + + throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); + + } + + // If present, GLB container is required to be the first buffer. + if ( bufferDef.uri === undefined && bufferIndex === 0 ) { + + return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); + + } + + var options = this.options; + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { + + reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) { + + var bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; + + return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { + + var byteLength = bufferViewDef.byteLength || 0; + var byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAccessor = function ( accessorIndex ) { + + var parser = this; + var json = this.json; + + var accessorDef = this.json.accessors[ accessorIndex ]; + + if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { + + // Ignore empty accessors, which may be used to declare runtime + // information about attributes coming from another source (e.g. Draco + // compression extension). + return Promise.resolve( null ); + + } + + var pendingBufferViews = []; + + if ( accessorDef.bufferView !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); + + } else { + + pendingBufferViews.push( null ); + + } + + if ( accessorDef.sparse !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); + + } + + return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { + + var bufferView = bufferViews[ 0 ]; + + var itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + var TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + var elementBytes = TypedArray.BYTES_PER_ELEMENT; + var itemBytes = elementBytes * itemSize; + var byteOffset = accessorDef.byteOffset || 0; + var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; + var normalized = accessorDef.normalized === true; + var array, bufferAttribute; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( byteStride && byteStride !== itemBytes ) { + + var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType; + var ib = parser.cache.get( ibCacheKey ); + + if ( ! ib ) { + + // Use the full buffer if it's interleaved. + array = new TypedArray( bufferView ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes ); + + parser.cache.add( ibCacheKey, ib ); + + } + + bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized ); + + } else { + + if ( bufferView === null ) { + + array = new TypedArray( accessorDef.count * itemSize ); + + } else { + + array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); + + } + + bufferAttribute = new THREE.BufferAttribute( array, itemSize, normalized ); + + } + + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors + if ( accessorDef.sparse !== undefined ) { + + var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + var TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; + + var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + + var sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); + var sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); + + if ( bufferView !== null ) { + + // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. + bufferAttribute.setArray( bufferAttribute.array.slice() ); + + } + + for ( var i = 0, il = sparseIndices.length; i < il; i ++ ) { + + var index = sparseIndices[ i ]; + + bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); + if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); + if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); + if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); + if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); + + } + + } + + return bufferAttribute; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + GLTFParser.prototype.loadTexture = function ( textureIndex ) { + + var parser = this; + var json = this.json; + var options = this.options; + var textureLoader = this.textureLoader; + + var URL = window.URL || window.webkitURL; + + var textureDef = json.textures[ textureIndex ]; + + var textureExtensions = textureDef.extensions || {}; + + var source; + + if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) { + + source = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ]; + + } else { + + source = json.images[ textureDef.source ]; + + } + + var sourceURI = source.uri; + var isObjectURL = false; + + if ( source.bufferView !== undefined ) { + + // Load binary image data from bufferView, if provided. + + sourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) { + + isObjectURL = true; + var blob = new Blob( [ bufferView ], { type: source.mimeType } ); + sourceURI = URL.createObjectURL( blob ); + return sourceURI; + + } ); + + } + + return Promise.resolve( sourceURI ).then( function ( sourceURI ) { + + // Load Texture resource. + + var loader = THREE.Loader.Handlers.get( sourceURI ); + + if ( ! loader ) { + + loader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] + ? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader + : textureLoader; + + } + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject ); + + } ); + + } ).then( function ( texture ) { + + // Clean up resources and configure Texture. + + if ( isObjectURL === true ) { + + URL.revokeObjectURL( sourceURI ); + + } + + texture.flipY = false; + + if ( textureDef.name !== undefined ) texture.name = textureDef.name; + + // Ignore unknown mime types, like DDS files. + if ( source.mimeType in MIME_TYPE_FORMATS ) { + + texture.format = MIME_TYPE_FORMATS[ source.mimeType ]; + + } + + var samplers = json.samplers || {}; + var sampler = samplers[ textureDef.sampler ] || {}; + + texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; + texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; + + return texture; + + } ); + + }; + + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + GLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) { + + var parser = this; + + return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { + + if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { + + var transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; + + if ( transform ) { + + texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); + + } + + } + + materialParams[ mapName ] = texture; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMaterial = function ( materialIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + var materialDef = json.materials[ materialIndex ]; + + var materialType; + var materialParams = {}; + var materialExtensions = materialDef.extensions || {}; + + var pending = []; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) { + + var sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ]; + materialType = sgExtension.getMaterialType( materialDef ); + pending.push( sgExtension.extendParams( materialParams, materialDef, parser ) ); + + } else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { + + var kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; + materialType = kmuExtension.getMaterialType( materialDef ); + pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); + + } else { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + materialType = THREE.MeshStandardMaterial; + + var metallicRoughness = materialDef.pbrMetallicRoughness || {}; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); + pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); + + } + + } + + if ( materialDef.doubleSided === true ) { + + materialParams.side = THREE.DoubleSide; + + } + + var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode === ALPHA_MODES.BLEND ) { + + materialParams.transparent = true; + + } else { + + materialParams.transparent = false; + + if ( alphaMode === ALPHA_MODES.MASK ) { + + materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; + + } + + } + + if ( materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); + + materialParams.normalScale = new THREE.Vector2( 1, 1 ); + + if ( materialDef.normalTexture.scale !== undefined ) { + + materialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale ); + + } + + } + + if ( materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); + + if ( materialDef.occlusionTexture.strength !== undefined ) { + + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + + } + + } + + if ( materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + materialParams.emissive = new THREE.Color().fromArray( materialDef.emissiveFactor ); + + } + + if ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) ); + + } + + return Promise.all( pending ).then( function () { + + var material; + + if ( materialType === THREE.ShaderMaterial ) { + + material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams ); + + } else { + + material = new materialType( materialParams ); + + } + + if ( materialDef.name !== undefined ) material.name = materialDef.name; + + // Normal map textures use OpenGL conventions: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture + if ( material.normalScale ) { + + material.normalScale.y = - material.normalScale.y; + + } + + // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding. + if ( material.map ) material.map.encoding = THREE.sRGBEncoding; + if ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding; + if ( material.specularMap ) material.specularMap.encoding = THREE.sRGBEncoding; + + assignExtrasToUserData( material, materialDef ); + + if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); + + return material; + + } ); + + }; + + /** + * @param {THREE.BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + * @return {Promise} + */ + function addPrimitiveAttributes( geometry, primitiveDef, parser ) { + + var attributes = primitiveDef.attributes; + + var pending = []; + + function assignAttributeAccessor( accessorIndex, attributeName ) { + + return parser.getDependency( 'accessor', accessorIndex ) + .then( function ( accessor ) { + + geometry.addAttribute( attributeName, accessor ); + + } ); + + } + + for ( var gltfAttributeName in attributes ) { + + var threeAttributeName = ATTRIBUTES[ gltfAttributeName ]; + + if ( ! threeAttributeName ) continue; + + // Skip attributes already provided by e.g. Draco extension. + if ( threeAttributeName in geometry.attributes ) continue; + + pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); + + } + + if ( primitiveDef.indices !== undefined && ! geometry.index ) { + + var accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { + + geometry.setIndex( accessor ); + + } ); + + pending.push( accessor ); + + } + + assignExtrasToUserData( geometry, primitiveDef ); + + return Promise.all( pending ).then( function () { + + return primitiveDef.targets !== undefined + ? addMorphTargets( geometry, primitiveDef.targets, parser ) + : geometry; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * If we can build a single BufferGeometry with .groups from multiple primitives, returns one BufferGeometry. + * Otherwise, returns BufferGeometries without .groups as many as primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + GLTFParser.prototype.loadGeometries = function ( primitives ) { + + var parser = this; + var extensions = this.extensions; + var cache = this.primitiveCache; + + var isMultiPass = isMultiPassGeometry( primitives ); + var originalPrimitives; + + if ( isMultiPass ) { + + originalPrimitives = primitives; // save original primitives and use later + + // We build a single BufferGeometry with .groups from multiple primitives + // because all primitives share the same attributes/morph/mode and have indices. + + primitives = [ primitives[ 0 ] ]; + + // Sets .groups and combined indices to a geometry later in this method. + + } + + function createDracoPrimitive( primitive ) { + + return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] + .decodePrimitive( primitive, parser ) + .then( function ( geometry ) { + + return addPrimitiveAttributes( geometry, primitive, parser ); + + } ); + + } + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var primitive = primitives[ i ]; + + // See if we've already created this geometry + var cached = getCachedGeometry( cache, primitive ); + + if ( cached ) { + + // Use the cached geometry if it exists + pending.push( cached ); + + } else { + + var geometryPromise; + + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { + + // Use DRACO geometry if available + geometryPromise = createDracoPrimitive( primitive ); + + } else { + + // Otherwise create a new geometry + geometryPromise = addPrimitiveAttributes( new THREE.BufferGeometry(), primitive, parser ); + + } + + // Cache this geometry + cache.push( { primitive: primitive, promise: geometryPromise } ); + + pending.push( geometryPromise ); + + } + + } + + return Promise.all( pending ).then( function ( geometries ) { + + if ( isMultiPass ) { + + var baseGeometry = geometries[ 0 ]; + + // See if we've already created this combined geometry + var cache = parser.multiPassGeometryCache; + var cached = getCachedMultiPassGeometry( cache, baseGeometry, originalPrimitives ); + + if ( cached !== null ) return [ cached.geometry ]; + + // Cloning geometry because of index override. + // Attributes can be reused so cloning by myself here. + var geometry = new THREE.BufferGeometry(); + + geometry.name = baseGeometry.name; + geometry.userData = baseGeometry.userData; + + for ( var key in baseGeometry.attributes ) geometry.addAttribute( key, baseGeometry.attributes[ key ] ); + for ( var key in baseGeometry.morphAttributes ) geometry.morphAttributes[ key ] = baseGeometry.morphAttributes[ key ]; + + var pendingIndices = []; + + for ( var i = 0, il = originalPrimitives.length; i < il; i ++ ) { + + pendingIndices.push( parser.getDependency( 'accessor', originalPrimitives[ i ].indices ) ); + + } + + return Promise.all( pendingIndices ).then( function ( accessors ) { + + var indices = []; + var offset = 0; + + for ( var i = 0, il = originalPrimitives.length; i < il; i ++ ) { + + var accessor = accessors[ i ]; + + for ( var j = 0, jl = accessor.count; j < jl; j ++ ) indices.push( accessor.array[ j ] ); + + geometry.addGroup( offset, accessor.count, i ); + + offset += accessor.count; + + } + + geometry.setIndex( indices ); + + cache.push( { geometry: geometry, baseGeometry: baseGeometry, primitives: originalPrimitives } ); + + return [ geometry ]; + + } ); + + } else if ( geometries.length > 1 && THREE.BufferGeometryUtils !== undefined ) { + + // Tries to merge geometries with BufferGeometryUtils if possible + + for ( var i = 1, il = primitives.length; i < il; i ++ ) { + + // can't merge if draw mode is different + if ( primitives[ 0 ].mode !== primitives[ i ].mode ) return geometries; + + } + + // See if we've already created this combined geometry + var cache = parser.multiplePrimitivesCache; + var cached = getCachedCombinedGeometry( cache, geometries ); + + if ( cached ) { + + if ( cached.geometry !== null ) return [ cached.geometry ]; + + } else { + + var geometry = THREE.BufferGeometryUtils.mergeBufferGeometries( geometries, true ); + + cache.push( { geometry: geometry, baseGeometries: geometries } ); + + if ( geometry !== null ) return [ geometry ]; + + } + + } + + return geometries; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMesh = function ( meshIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + + var meshDef = json.meshes[ meshIndex ]; + var primitives = meshDef.primitives; + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var material = primitives[ i ].material === undefined + ? createDefaultMaterial() + : this.getDependency( 'material', primitives[ i ].material ); + + pending.push( material ); + + } + + return Promise.all( pending ).then( function ( originalMaterials ) { + + return parser.loadGeometries( primitives ).then( function ( geometries ) { + + var isMultiMaterial = geometries.length === 1 && geometries[ 0 ].groups.length > 0; + + var meshes = []; + + for ( var i = 0, il = geometries.length; i < il; i ++ ) { + + var geometry = geometries[ i ]; + var primitive = primitives[ i ]; + + // 1. create Mesh + + var mesh; + + var material = isMultiMaterial ? originalMaterials : originalMaterials[ i ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || + primitive.mode === undefined ) { + + // .isSkinnedMesh isn't in glTF spec. See .markDefs() + mesh = meshDef.isSkinnedMesh === true + ? new THREE.SkinnedMesh( geometry, material ) + : new THREE.Mesh( geometry, material ); + + if ( mesh.isSkinnedMesh === true ) mesh.normalizeSkinWeights(); // #15319 + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { + + mesh.drawMode = THREE.TriangleStripDrawMode; + + } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { + + mesh.drawMode = THREE.TriangleFanDrawMode; + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + mesh = new THREE.LineSegments( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { + + mesh = new THREE.Line( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { + + mesh = new THREE.LineLoop( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { + + mesh = new THREE.Points( geometry, material ); + + } else { + + throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); + + } + + if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { + + updateMorphTargets( mesh, meshDef ); + + } + + mesh.name = meshDef.name || ( 'mesh_' + meshIndex ); + + if ( geometries.length > 1 ) mesh.name += '_' + i; + + assignExtrasToUserData( mesh, meshDef ); + + meshes.push( mesh ); + + // 2. update Material depending on Mesh and BufferGeometry + + var materials = isMultiMaterial ? mesh.material : [ mesh.material ]; + + var useVertexColors = geometry.attributes.color !== undefined; + var useFlatShading = geometry.attributes.normal === undefined; + var useSkinning = mesh.isSkinnedMesh === true; + var useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0; + var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined; + + for ( var j = 0, jl = materials.length; j < jl; j ++ ) { + + var material = materials[ j ]; + + if ( mesh.isPoints ) { + + var cacheKey = 'PointsMaterial:' + material.uuid; + + var pointsMaterial = parser.cache.get( cacheKey ); + + if ( ! pointsMaterial ) { + + pointsMaterial = new THREE.PointsMaterial(); + THREE.Material.prototype.copy.call( pointsMaterial, material ); + pointsMaterial.color.copy( material.color ); + pointsMaterial.map = material.map; + pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet + + parser.cache.add( cacheKey, pointsMaterial ); + + } + + material = pointsMaterial; + + } else if ( mesh.isLine ) { + + var cacheKey = 'LineBasicMaterial:' + material.uuid; + + var lineMaterial = parser.cache.get( cacheKey ); + + if ( ! lineMaterial ) { + + lineMaterial = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call( lineMaterial, material ); + lineMaterial.color.copy( material.color ); + lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet + + parser.cache.add( cacheKey, lineMaterial ); + + } + + material = lineMaterial; + + } + + // Clone the material if it will be modified + if ( useVertexColors || useFlatShading || useSkinning || useMorphTargets ) { + + var cacheKey = 'ClonedMaterial:' + material.uuid + ':'; + + if ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:'; + if ( useSkinning ) cacheKey += 'skinning:'; + if ( useVertexColors ) cacheKey += 'vertex-colors:'; + if ( useFlatShading ) cacheKey += 'flat-shading:'; + if ( useMorphTargets ) cacheKey += 'morph-targets:'; + if ( useMorphNormals ) cacheKey += 'morph-normals:'; + + var cachedMaterial = parser.cache.get( cacheKey ); + + if ( ! cachedMaterial ) { + + cachedMaterial = material.isGLTFSpecularGlossinessMaterial + ? extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].cloneMaterial( material ) + : material.clone(); + + if ( useSkinning ) cachedMaterial.skinning = true; + if ( useVertexColors ) cachedMaterial.vertexColors = THREE.VertexColors; + if ( useFlatShading ) cachedMaterial.flatShading = true; + if ( useMorphTargets ) cachedMaterial.morphTargets = true; + if ( useMorphNormals ) cachedMaterial.morphNormals = true; + + parser.cache.add( cacheKey, cachedMaterial ); + + } + + material = cachedMaterial; + + } + + materials[ j ] = material; + + // workarounds for mesh and geometry + + if ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) { + + console.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' ); + geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) ); + + } + + if ( material.isGLTFSpecularGlossinessMaterial ) { + + // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update + mesh.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms; + + } + + } + + mesh.material = isMultiMaterial ? materials : materials[ 0 ]; + + } + + if ( meshes.length === 1 ) { + + return meshes[ 0 ]; + + } + + var group = new THREE.Group(); + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + group.add( meshes[ i ] ); + + } + + return group; + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + GLTFParser.prototype.loadCamera = function ( cameraIndex ) { + + var camera; + var cameraDef = this.json.cameras[ cameraIndex ]; + var params = cameraDef[ cameraDef.type ]; + + if ( ! params ) { + + console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); + return; + + } + + if ( cameraDef.type === 'perspective' ) { + + camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); + + } else if ( cameraDef.type === 'orthographic' ) { + + camera = new THREE.OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar ); + + } + + if ( cameraDef.name !== undefined ) camera.name = cameraDef.name; + + assignExtrasToUserData( camera, cameraDef ); + + return Promise.resolve( camera ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + GLTFParser.prototype.loadSkin = function ( skinIndex ) { + + var skinDef = this.json.skins[ skinIndex ]; + + var skinEntry = { joints: skinDef.joints }; + + if ( skinDef.inverseBindMatrices === undefined ) { + + return Promise.resolve( skinEntry ); + + } + + return this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) { + + skinEntry.inverseBindMatrices = accessor; + + return skinEntry; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAnimation = function ( animationIndex ) { + + var json = this.json; + + var animationDef = json.animations[ animationIndex ]; + + var pendingNodes = []; + var pendingInputAccessors = []; + var pendingOutputAccessors = []; + var pendingSamplers = []; + var pendingTargets = []; + + for ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) { + + var channel = animationDef.channels[ i ]; + var sampler = animationDef.samplers[ channel.sampler ]; + var target = channel.target; + var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated. + var input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; + var output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; + + pendingNodes.push( this.getDependency( 'node', name ) ); + pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); + pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); + pendingSamplers.push( sampler ); + pendingTargets.push( target ); + + } + + return Promise.all( [ + + Promise.all( pendingNodes ), + Promise.all( pendingInputAccessors ), + Promise.all( pendingOutputAccessors ), + Promise.all( pendingSamplers ), + Promise.all( pendingTargets ) + + ] ).then( function ( dependencies ) { + + var nodes = dependencies[ 0 ]; + var inputAccessors = dependencies[ 1 ]; + var outputAccessors = dependencies[ 2 ]; + var samplers = dependencies[ 3 ]; + var targets = dependencies[ 4 ]; + + var tracks = []; + + for ( var i = 0, il = nodes.length; i < il; i ++ ) { + + var node = nodes[ i ]; + var inputAccessor = inputAccessors[ i ]; + var outputAccessor = outputAccessors[ i ]; + var sampler = samplers[ i ]; + var target = targets[ i ]; + + if ( node === undefined ) continue; + + node.updateMatrix(); + node.matrixAutoUpdate = true; + + var TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = THREE.NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = THREE.QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + default: + + TypedKeyframeTrack = THREE.VectorKeyframeTrack; + break; + + } + + var targetName = node.name ? node.name : node.uuid; + + var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; + + var targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + // node can be THREE.Group here but + // PATH_PROPERTIES.weights(morphTargetInfluences) should be + // the property of a mesh object under group. + + node.traverse( function ( object ) { + + if ( object.isMesh === true && object.morphTargetInfluences ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + // KeyframeTrack.optimize() will modify given 'times' and 'values' + // buffers before creating a truncated copy to keep. Because buffers may + // be reused by other tracks, make copies here. + for ( var j = 0, jl = targetNames.length; j < jl; j ++ ) { + + var track = new TypedKeyframeTrack( + targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], + THREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ), + THREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ), + interpolation + ); + + // Here is the trick to enable custom interpolation. + // Overrides .createInterpolant in a factory method which creates custom interpolation. + if ( sampler.interpolation === 'CUBICSPLINE' ) { + + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { + + // A CUBICSPLINE keyframe in glTF has three output values for each input value, + // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() + // must be divided by three to get the interpolant's sampleSize argument. + + return new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result ); + + }; + + // Workaround, provide an alternate way to know if the interpolant type is cubis spline to track. + // track.getInterpolation() doesn't return valid value for custom interpolant. + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + + } + + tracks.push( track ); + + } + + } + + var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex; + + return new THREE.AnimationClip( name, undefined, tracks ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + GLTFParser.prototype.loadNode = function ( nodeIndex ) { + + var json = this.json; + var extensions = this.extensions; + var parser = this; + + var meshReferences = json.meshReferences; + var meshUses = json.meshUses; + + var nodeDef = json.nodes[ nodeIndex ]; + + return ( function() { + + // .isBone isn't in glTF spec. See .markDefs + if ( nodeDef.isBone === true ) { + + return Promise.resolve( new THREE.Bone() ); + + } else if ( nodeDef.mesh !== undefined ) { + + return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { + + var node; + + if ( meshReferences[ nodeDef.mesh ] > 1 ) { + + var instanceNum = meshUses[ nodeDef.mesh ] ++; + + node = mesh.clone(); + node.name += '_instance_' + instanceNum; + + // onBeforeRender copy for Specular-Glossiness + node.onBeforeRender = mesh.onBeforeRender; + + for ( var i = 0, il = node.children.length; i < il; i ++ ) { + + node.children[ i ].name += '_instance_' + instanceNum; + node.children[ i ].onBeforeRender = mesh.children[ i ].onBeforeRender; + + } + + } else { + + node = mesh; + + } + + // if weights are provided on the node, override weights on the mesh. + if ( nodeDef.weights !== undefined ) { + + node.traverse( function ( o ) { + + if ( ! o.isMesh ) return; + + for ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) { + + o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; + + } + + } ); + + } + + return node; + + } ); + + } else if ( nodeDef.camera !== undefined ) { + + return parser.getDependency( 'camera', nodeDef.camera ); + + } else if ( nodeDef.extensions + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) { + + return parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ); + + } else { + + return Promise.resolve( new THREE.Object3D() ); + + } + + }() ).then( function ( node ) { + + if ( nodeDef.name !== undefined ) { + + node.name = THREE.PropertyBinding.sanitizeNodeName( nodeDef.name ); + + } + + assignExtrasToUserData( node, nodeDef ); + + if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); + + if ( nodeDef.matrix !== undefined ) { + + var matrix = new THREE.Matrix4(); + matrix.fromArray( nodeDef.matrix ); + node.applyMatrix( matrix ); + + } else { + + if ( nodeDef.translation !== undefined ) { + + node.position.fromArray( nodeDef.translation ); + + } + + if ( nodeDef.rotation !== undefined ) { + + node.quaternion.fromArray( nodeDef.rotation ); + + } + + if ( nodeDef.scale !== undefined ) { + + node.scale.fromArray( nodeDef.scale ); + + } + + } + + return node; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + GLTFParser.prototype.loadScene = function () { + + // scene node hierachy builder + + function buildNodeHierachy( nodeId, parentObject, json, parser ) { + + var nodeDef = json.nodes[ nodeId ]; + + return parser.getDependency( 'node', nodeId ).then( function ( node ) { + + if ( nodeDef.skin === undefined ) return node; + + // build skeleton here as well + + var skinEntry; + + return parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) { + + skinEntry = skin; + + var pendingJoints = []; + + for ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) { + + pendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) ); + + } + + return Promise.all( pendingJoints ); + + } ).then( function ( jointNodes ) { + + var meshes = node.isGroup === true ? node.children : [ node ]; + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + var mesh = meshes[ i ]; + + var bones = []; + var boneInverses = []; + + for ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) { + + var jointNode = jointNodes[ j ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + var mat = new THREE.Matrix4(); + + if ( skinEntry.inverseBindMatrices !== undefined ) { + + mat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 ); + + } + + boneInverses.push( mat ); + + } else { + + console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinEntry.joints[ j ] ); + + } + + } + + mesh.bind( new THREE.Skeleton( bones, boneInverses ), mesh.matrixWorld ); + + }; + + return node; + + } ); + + } ).then( function ( node ) { + + // build node hierachy + + parentObject.add( node ); + + var pending = []; + + if ( nodeDef.children ) { + + var children = nodeDef.children; + + for ( var i = 0, il = children.length; i < il; i ++ ) { + + var child = children[ i ]; + pending.push( buildNodeHierachy( child, node, json, parser ) ); + + } + + } + + return Promise.all( pending ); + + } ); + + } + + return function loadScene( sceneIndex ) { + + var json = this.json; + var extensions = this.extensions; + var sceneDef = this.json.scenes[ sceneIndex ]; + var parser = this; + + var scene = new THREE.Scene(); + if ( sceneDef.name !== undefined ) scene.name = sceneDef.name; + + assignExtrasToUserData( scene, sceneDef ); + + if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); + + var nodeIds = sceneDef.nodes || []; + + var pending = []; + + for ( var i = 0, il = nodeIds.length; i < il; i ++ ) { + + pending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) ); + + } + + return Promise.all( pending ).then( function () { + + return scene; + + } ); + + }; + + }(); + + return GLTFLoader; + +} )(); diff --git a/demo/ar/three.js/examples/vendor/three.js/build/three.js b/demo/ar/three.js/examples/vendor/three.js/build/three.js new file mode 100755 index 0000000..56f738b --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/build/three.js @@ -0,0 +1,48498 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.THREE = {})); +}(this, function (exports) { 'use strict'; + + // Polyfills + + if ( Number.EPSILON === undefined ) { + + Number.EPSILON = Math.pow( 2, - 52 ); + + } + + if ( Number.isInteger === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + + Number.isInteger = function ( value ) { + + return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; + + }; + + } + + // + + if ( Math.sign === undefined ) { + + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + + Math.sign = function ( x ) { + + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; + + }; + + } + + if ( 'name' in Function.prototype === false ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + + Object.defineProperty( Function.prototype, 'name', { + + get: function () { + + return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; + + } + + } ); + + } + + if ( Object.assign === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + + ( function () { + + Object.assign = function ( target ) { + + if ( target === undefined || target === null ) { + + throw new TypeError( 'Cannot convert undefined or null to object' ); + + } + + var output = Object( target ); + + for ( var index = 1; index < arguments.length; index ++ ) { + + var source = arguments[ index ]; + + if ( source !== undefined && source !== null ) { + + for ( var nextKey in source ) { + + if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { + + output[ nextKey ] = source[ nextKey ]; + + } + + } + + } + + } + + return output; + + }; + + } )(); + + } + + /** + * https://github.com/mrdoob/eventdispatcher.js/ + */ + + function EventDispatcher() {} + + Object.assign( EventDispatcher.prototype, { + + addEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) this._listeners = {}; + + var listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + + listeners[ type ].push( listener ); + + } + + }, + + hasEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return false; + + var listeners = this._listeners; + + return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; + + }, + + removeEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + var index = listenerArray.indexOf( listener ); + + if ( index !== - 1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + }, + + dispatchEvent: function ( event ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + var array = listenerArray.slice( 0 ); + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + array[ i ].call( this, event ); + + } + + } + + } + + } ); + + var REVISION = '103'; + var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; + var CullFaceNone = 0; + var CullFaceBack = 1; + var CullFaceFront = 2; + var CullFaceFrontBack = 3; + var FrontFaceDirectionCW = 0; + var FrontFaceDirectionCCW = 1; + var BasicShadowMap = 0; + var PCFShadowMap = 1; + var PCFSoftShadowMap = 2; + var FrontSide = 0; + var BackSide = 1; + var DoubleSide = 2; + var FlatShading = 1; + var SmoothShading = 2; + var NoColors = 0; + var FaceColors = 1; + var VertexColors = 2; + var NoBlending = 0; + var NormalBlending = 1; + var AdditiveBlending = 2; + var SubtractiveBlending = 3; + var MultiplyBlending = 4; + var CustomBlending = 5; + var AddEquation = 100; + var SubtractEquation = 101; + var ReverseSubtractEquation = 102; + var MinEquation = 103; + var MaxEquation = 104; + var ZeroFactor = 200; + var OneFactor = 201; + var SrcColorFactor = 202; + var OneMinusSrcColorFactor = 203; + var SrcAlphaFactor = 204; + var OneMinusSrcAlphaFactor = 205; + var DstAlphaFactor = 206; + var OneMinusDstAlphaFactor = 207; + var DstColorFactor = 208; + var OneMinusDstColorFactor = 209; + var SrcAlphaSaturateFactor = 210; + var NeverDepth = 0; + var AlwaysDepth = 1; + var LessDepth = 2; + var LessEqualDepth = 3; + var EqualDepth = 4; + var GreaterEqualDepth = 5; + var GreaterDepth = 6; + var NotEqualDepth = 7; + var MultiplyOperation = 0; + var MixOperation = 1; + var AddOperation = 2; + var NoToneMapping = 0; + var LinearToneMapping = 1; + var ReinhardToneMapping = 2; + var Uncharted2ToneMapping = 3; + var CineonToneMapping = 4; + var ACESFilmicToneMapping = 5; + + var UVMapping = 300; + var CubeReflectionMapping = 301; + var CubeRefractionMapping = 302; + var EquirectangularReflectionMapping = 303; + var EquirectangularRefractionMapping = 304; + var SphericalReflectionMapping = 305; + var CubeUVReflectionMapping = 306; + var CubeUVRefractionMapping = 307; + var RepeatWrapping = 1000; + var ClampToEdgeWrapping = 1001; + var MirroredRepeatWrapping = 1002; + var NearestFilter = 1003; + var NearestMipMapNearestFilter = 1004; + var NearestMipMapLinearFilter = 1005; + var LinearFilter = 1006; + var LinearMipMapNearestFilter = 1007; + var LinearMipMapLinearFilter = 1008; + var UnsignedByteType = 1009; + var ByteType = 1010; + var ShortType = 1011; + var UnsignedShortType = 1012; + var IntType = 1013; + var UnsignedIntType = 1014; + var FloatType = 1015; + var HalfFloatType = 1016; + var UnsignedShort4444Type = 1017; + var UnsignedShort5551Type = 1018; + var UnsignedShort565Type = 1019; + var UnsignedInt248Type = 1020; + var AlphaFormat = 1021; + var RGBFormat = 1022; + var RGBAFormat = 1023; + var LuminanceFormat = 1024; + var LuminanceAlphaFormat = 1025; + var RGBEFormat = RGBAFormat; + var DepthFormat = 1026; + var DepthStencilFormat = 1027; + var RedFormat = 1028; + var RGB_S3TC_DXT1_Format = 33776; + var RGBA_S3TC_DXT1_Format = 33777; + var RGBA_S3TC_DXT3_Format = 33778; + var RGBA_S3TC_DXT5_Format = 33779; + var RGB_PVRTC_4BPPV1_Format = 35840; + var RGB_PVRTC_2BPPV1_Format = 35841; + var RGBA_PVRTC_4BPPV1_Format = 35842; + var RGBA_PVRTC_2BPPV1_Format = 35843; + var RGB_ETC1_Format = 36196; + var RGBA_ASTC_4x4_Format = 37808; + var RGBA_ASTC_5x4_Format = 37809; + var RGBA_ASTC_5x5_Format = 37810; + var RGBA_ASTC_6x5_Format = 37811; + var RGBA_ASTC_6x6_Format = 37812; + var RGBA_ASTC_8x5_Format = 37813; + var RGBA_ASTC_8x6_Format = 37814; + var RGBA_ASTC_8x8_Format = 37815; + var RGBA_ASTC_10x5_Format = 37816; + var RGBA_ASTC_10x6_Format = 37817; + var RGBA_ASTC_10x8_Format = 37818; + var RGBA_ASTC_10x10_Format = 37819; + var RGBA_ASTC_12x10_Format = 37820; + var RGBA_ASTC_12x12_Format = 37821; + var LoopOnce = 2200; + var LoopRepeat = 2201; + var LoopPingPong = 2202; + var InterpolateDiscrete = 2300; + var InterpolateLinear = 2301; + var InterpolateSmooth = 2302; + var ZeroCurvatureEnding = 2400; + var ZeroSlopeEnding = 2401; + var WrapAroundEnding = 2402; + var TrianglesDrawMode = 0; + var TriangleStripDrawMode = 1; + var TriangleFanDrawMode = 2; + var LinearEncoding = 3000; + var sRGBEncoding = 3001; + var GammaEncoding = 3007; + var RGBEEncoding = 3002; + var LogLuvEncoding = 3003; + var RGBM7Encoding = 3004; + var RGBM16Encoding = 3005; + var RGBDEncoding = 3006; + var BasicDepthPacking = 3200; + var RGBADepthPacking = 3201; + var TangentSpaceNormalMap = 0; + var ObjectSpaceNormalMap = 1; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _Math = { + + DEG2RAD: Math.PI / 180, + RAD2DEG: 180 / Math.PI, + + generateUUID: ( function () { + + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + + var lut = []; + + for ( var i = 0; i < 256; i ++ ) { + + lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); + + } + + return function generateUUID() { + + var d0 = Math.random() * 0xffffffff | 0; + var d1 = Math.random() * 0xffffffff | 0; + var d2 = Math.random() * 0xffffffff | 0; + var d3 = Math.random() * 0xffffffff | 0; + var uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + + lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + + lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + + lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; + + // .toUpperCase() here flattens concatenated strings to save heap memory space. + return uuid.toUpperCase(); + + }; + + } )(), + + clamp: function ( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + + }, + + // compute euclidian modulo of m % n + // https://en.wikipedia.org/wiki/Modulo_operation + + euclideanModulo: function ( n, m ) { + + return ( ( n % m ) + m ) % m; + + }, + + // Linear mapping from range to range + + mapLinear: function ( x, a1, a2, b1, b2 ) { + + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + + }, + + // https://en.wikipedia.org/wiki/Linear_interpolation + + lerp: function ( x, y, t ) { + + return ( 1 - t ) * x + t * y; + + }, + + // http://en.wikipedia.org/wiki/Smoothstep + + smoothstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * ( 3 - 2 * x ); + + }, + + smootherstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + + }, + + // Random integer from interval + + randInt: function ( low, high ) { + + return low + Math.floor( Math.random() * ( high - low + 1 ) ); + + }, + + // Random float from interval + + randFloat: function ( low, high ) { + + return low + Math.random() * ( high - low ); + + }, + + // Random float from <-range/2, range/2> interval + + randFloatSpread: function ( range ) { + + return range * ( 0.5 - Math.random() ); + + }, + + degToRad: function ( degrees ) { + + return degrees * _Math.DEG2RAD; + + }, + + radToDeg: function ( radians ) { + + return radians * _Math.RAD2DEG; + + }, + + isPowerOfTwo: function ( value ) { + + return ( value & ( value - 1 ) ) === 0 && value !== 0; + + }, + + ceilPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + + }, + + floorPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author philogb / http://blog.thejit.org/ + * @author egraether / http://egraether.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + function Vector2( x, y ) { + + this.x = x || 0; + this.y = y || 0; + + } + + Object.defineProperties( Vector2.prototype, { + + "width": { + + get: function () { + + return this.x; + + }, + + set: function ( value ) { + + this.x = value; + + } + + }, + + "height": { + + get: function () { + + return this.y; + + }, + + set: function ( value ) { + + this.y = value; + + } + + } + + } ); + + Object.assign( Vector2.prototype, { + + isVector2: true, + + set: function ( x, y ) { + + this.x = x; + this.y = y; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + + }, + + multiply: function ( v ) { + + this.x *= v.x; + this.y *= v.y; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + + return this; + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + + return this; + + }, + + clampScalar: function () { + + var min = new Vector2(); + var max = new Vector2(); + + return function clampScalar( minVal, maxVal ) { + + min.set( minVal, minVal ); + max.set( maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y; + + }, + + cross: function ( v ) { + + return this.x * v.y - this.y * v.x; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + angle: function () { + + // computes the angle in radians with respect to the positive x-axis + + var angle = Math.atan2( this.y, this.x ); + + if ( angle < 0 ) angle += 2 * Math.PI; + + return angle; + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + + return this; + + }, + + rotateAround: function ( center, angle ) { + + var c = Math.cos( angle ), s = Math.sin( angle ); + + var x = this.x - center.x; + var y = this.y - center.y; + + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + + return this; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Quaternion( x, y, z, w ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Quaternion, { + + slerp: function ( qa, qb, qm, t ) { + + return qm.copy( qa ).slerp( qb, t ); + + }, + + slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + + // fuzz-free, array-based Quaternion SLERP operation + + var x0 = src0[ srcOffset0 + 0 ], + y0 = src0[ srcOffset0 + 1 ], + z0 = src0[ srcOffset0 + 2 ], + w0 = src0[ srcOffset0 + 3 ], + + x1 = src1[ srcOffset1 + 0 ], + y1 = src1[ srcOffset1 + 1 ], + z1 = src1[ srcOffset1 + 2 ], + w1 = src1[ srcOffset1 + 3 ]; + + if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + + var s = 1 - t, + + cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + + dir = ( cos >= 0 ? 1 : - 1 ), + sqrSin = 1 - cos * cos; + + // Skip the Slerp for tiny steps to avoid numeric problems: + if ( sqrSin > Number.EPSILON ) { + + var sin = Math.sqrt( sqrSin ), + len = Math.atan2( sin, cos * dir ); + + s = Math.sin( s * len ) / sin; + t = Math.sin( t * len ) / sin; + + } + + var tDir = t * dir; + + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + + // Normalize in case we just did a lerp: + if ( s === 1 - t ) { + + var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + + } + + } + + dst[ dstOffset ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + + } + + } ); + + Object.defineProperties( Quaternion.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + w: { + + get: function () { + + return this._w; + + }, + + set: function ( value ) { + + this._w = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Quaternion.prototype, { + + isQuaternion: true, + + set: function ( x, y, z, w ) { + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._w ); + + }, + + copy: function ( quaternion ) { + + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this.onChangeCallback(); + + return this; + + }, + + setFromEuler: function ( euler, update ) { + + if ( ! ( euler && euler.isEuler ) ) { + + throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + var x = euler._x, y = euler._y, z = euler._z, order = euler.order; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + var cos = Math.cos; + var sin = Math.sin; + + var c1 = cos( x / 2 ); + var c2 = cos( y / 2 ); + var c3 = cos( z / 2 ); + + var s1 = sin( x / 2 ); + var s2 = sin( y / 2 ); + var s3 = sin( z / 2 ); + + if ( order === 'XYZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'YXZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'ZXY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'ZYX' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'YZX' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'XZY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromAxisAngle: function ( axis, angle ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + + // assumes axis is normalized + + var halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos( halfAngle ); + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33, + s; + + if ( trace > 0 ) { + + s = 0.5 / Math.sqrt( trace + 1.0 ); + + this._w = 0.25 / s; + this._x = ( m32 - m23 ) * s; + this._y = ( m13 - m31 ) * s; + this._z = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + this._w = ( m32 - m23 ) / s; + this._x = 0.25 * s; + this._y = ( m12 + m21 ) / s; + this._z = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + this._w = ( m13 - m31 ) / s; + this._x = ( m12 + m21 ) / s; + this._y = 0.25 * s; + this._z = ( m23 + m32 ) / s; + + } else { + + s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + this._w = ( m21 - m12 ) / s; + this._x = ( m13 + m31 ) / s; + this._y = ( m23 + m32 ) / s; + this._z = 0.25 * s; + + } + + this.onChangeCallback(); + + return this; + + }, + + setFromUnitVectors: function ( vFrom, vTo ) { + + // assumes direction vectors vFrom and vTo are normalized + + var EPS = 0.000001; + + var r = vFrom.dot( vTo ) + 1; + + if ( r < EPS ) { + + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + + this._x = - vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + + } else { + + this._x = 0; + this._y = - vFrom.z; + this._z = vFrom.y; + this._w = r; + + } + + } else { + + // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + + } + + return this.normalize(); + + }, + + angleTo: function ( q ) { + + return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); + + }, + + rotateTowards: function ( q, step ) { + + var angle = this.angleTo( q ); + + if ( angle === 0 ) return this; + + var t = Math.min( 1, step / angle ); + + this.slerp( q, t ); + + return this; + + }, + + inverse: function () { + + // quaternion is assumed to have unit length + + return this.conjugate(); + + }, + + conjugate: function () { + + this._x *= - 1; + this._y *= - 1; + this._z *= - 1; + + this.onChangeCallback(); + + return this; + + }, + + dot: function ( v ) { + + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + + }, + + lengthSq: function () { + + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + + }, + + length: function () { + + return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + + }, + + normalize: function () { + + var l = this.length(); + + if ( l === 0 ) { + + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + + } else { + + l = 1 / l; + + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + + } + + this.onChangeCallback(); + + return this; + + }, + + multiply: function ( q, p ) { + + if ( p !== undefined ) { + + console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); + return this.multiplyQuaternions( q, p ); + + } + + return this.multiplyQuaternions( this, q ); + + }, + + premultiply: function ( q ) { + + return this.multiplyQuaternions( q, this ); + + }, + + multiplyQuaternions: function ( a, b ) { + + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this.onChangeCallback(); + + return this; + + }, + + slerp: function ( qb, t ) { + + if ( t === 0 ) return this; + if ( t === 1 ) return this.copy( qb ); + + var x = this._x, y = this._y, z = this._z, w = this._w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if ( cosHalfTheta < 0 ) { + + this._w = - qb._w; + this._x = - qb._x; + this._y = - qb._y; + this._z = - qb._z; + + cosHalfTheta = - cosHalfTheta; + + } else { + + this.copy( qb ); + + } + + if ( cosHalfTheta >= 1.0 ) { + + this._w = w; + this._x = x; + this._y = y; + this._z = z; + + return this; + + } + + var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; + + if ( sqrSinHalfTheta <= Number.EPSILON ) { + + var s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + + return this.normalize(); + + } + + var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); + var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); + var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this._w = ( w * ratioA + this._w * ratioB ); + this._x = ( x * ratioA + this._x * ratioB ); + this._y = ( y * ratioA + this._y * ratioB ); + this._z = ( z * ratioA + this._z * ratioB ); + + this.onChangeCallback(); + + return this; + + }, + + equals: function ( quaternion ) { + + return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this._x = array[ offset ]; + this._y = array[ offset + 1 ]; + this._z = array[ offset + 2 ]; + this._w = array[ offset + 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._w; + + return array; + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector3( x, y, z ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + + } + + Object.assign( Vector3.prototype, { + + isVector3: true, + + set: function ( x, y, z ) { + + this.x = x; + this.y = y; + this.z = z; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + + return this; + + }, + + multiply: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); + return this.multiplyVectors( v, w ); + + } + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + + return this; + + }, + + multiplyVectors: function ( a, b ) { + + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + + return this; + + }, + + applyEuler: function () { + + var quaternion = new Quaternion(); + + return function applyEuler( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + return this.applyQuaternion( quaternion.setFromEuler( euler ) ); + + }; + + }(), + + applyAxisAngle: function () { + + var quaternion = new Quaternion(); + + return function applyAxisAngle( axis, angle ) { + + return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); + + }; + + }(), + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; + this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + + this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; + this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; + this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + + return this; + + }, + + applyQuaternion: function ( q ) { + + var x = this.x, y = this.y, z = this.z; + var qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // calculate quat * vector + + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + + this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return this; + + }, + + project: function ( camera ) { + + return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); + + }, + + unproject: function ( camera ) { + + return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld ); + + }, + + transformDirection: function ( m ) { + + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + + return this.normalize(); + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + + return this; + + }, + + clampScalar: function () { + + var min = new Vector3(); + var max = new Vector3(); + + return function clampScalar( minVal, maxVal ) { + + min.set( minVal, minVal, minVal ); + max.set( maxVal, maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z; + + }, + + // TODO lengthSquared? + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + cross: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); + return this.crossVectors( v, w ); + + } + + return this.crossVectors( this, v ); + + }, + + crossVectors: function ( a, b ) { + + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + + }, + + projectOnVector: function ( vector ) { + + var scalar = vector.dot( this ) / vector.lengthSq(); + + return this.copy( vector ).multiplyScalar( scalar ); + + }, + + projectOnPlane: function () { + + var v1 = new Vector3(); + + return function projectOnPlane( planeNormal ) { + + v1.copy( this ).projectOnVector( planeNormal ); + + return this.sub( v1 ); + + }; + + }(), + + reflect: function () { + + // reflect incident vector off plane orthogonal to normal + // normal is assumed to have unit length + + var v1 = new Vector3(); + + return function reflect( normal ) { + + return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + + }; + + }(), + + angleTo: function ( v ) { + + var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); + + // clamp, to handle numerical problems + + return Math.acos( _Math.clamp( theta, - 1, 1 ) ); + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + + return dx * dx + dy * dy + dz * dz; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + + }, + + setFromSpherical: function ( s ) { + + return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); + + }, + + setFromSphericalCoords: function ( radius, phi, theta ) { + + var sinPhiRadius = Math.sin( phi ) * radius; + + this.x = sinPhiRadius * Math.sin( theta ); + this.y = Math.cos( phi ) * radius; + this.z = sinPhiRadius * Math.cos( theta ); + + return this; + + }, + + setFromCylindrical: function ( c ) { + + return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); + + }, + + setFromCylindricalCoords: function ( radius, theta, y ) { + + this.x = radius * Math.sin( theta ); + this.y = y; + this.z = radius * Math.cos( theta ); + + return this; + + }, + + setFromMatrixPosition: function ( m ) { + + var e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + + return this; + + }, + + setFromMatrixScale: function ( m ) { + + var sx = this.setFromMatrixColumn( m, 0 ).length(); + var sy = this.setFromMatrixColumn( m, 1 ).length(); + var sz = this.setFromMatrixColumn( m, 2 ).length(); + + this.x = sx; + this.y = sy; + this.z = sz; + + return this; + + }, + + setFromMatrixColumn: function ( m, index ) { + + return this.fromArray( m.elements, index * 4 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + * @author tschw + */ + + function Matrix3() { + + this.elements = [ + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix3.prototype, { + + isMatrix3: true, + + set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; + te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; + te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new this.constructor().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; + te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; + te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + + return this; + + }, + + setFromMatrix4: function ( m ) { + + var me = m.elements; + + this.set( + + me[ 0 ], me[ 4 ], me[ 8 ], + me[ 1 ], me[ 5 ], me[ 9 ], + me[ 2 ], me[ 6 ], me[ 10 ] + + ); + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix3( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + multiply: function ( m ) { + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; + var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; + var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + + var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; + var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; + var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; + te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; + te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; + te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; + te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; + te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; + te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; + te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; + te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + + return this; + + }, + + determinant: function () { + + var te = this.elements; + + var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], + d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], + g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + + }, + + getInverse: function ( matrix, throwOnDegenerate ) { + + if ( matrix && matrix.isMatrix4 ) { + + console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); + + } + + var me = matrix.elements, + te = this.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], + n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], + n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], + + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + + det = n11 * t11 + n21 * t12 + n31 * t13; + + if ( det === 0 ) { + + var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; + te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + + te[ 3 ] = t12 * detInv; + te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; + te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + + te[ 6 ] = t13 * detInv; + te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; + te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + + return this; + + }, + + transpose: function () { + + var tmp, m = this.elements; + + tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; + tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; + tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + + return this; + + }, + + getNormalMatrix: function ( matrix4 ) { + + return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); + + }, + + transposeIntoArray: function ( r ) { + + var m = this.elements; + + r[ 0 ] = m[ 0 ]; + r[ 1 ] = m[ 3 ]; + r[ 2 ] = m[ 6 ]; + r[ 3 ] = m[ 1 ]; + r[ 4 ] = m[ 4 ]; + r[ 5 ] = m[ 7 ]; + r[ 6 ] = m[ 2 ]; + r[ 7 ] = m[ 5 ]; + r[ 8 ] = m[ 8 ]; + + return this; + + }, + + setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { + + var c = Math.cos( rotation ); + var s = Math.sin( rotation ); + + this.set( + sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, + - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + 0, 0, 1 + ); + + }, + + scale: function ( sx, sy ) { + + var te = this.elements; + + te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; + te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; + + return this; + + }, + + rotate: function ( theta ) { + + var c = Math.cos( theta ); + var s = Math.sin( theta ); + + var te = this.elements; + + var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; + var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; + + te[ 0 ] = c * a11 + s * a21; + te[ 3 ] = c * a12 + s * a22; + te[ 6 ] = c * a13 + s * a23; + + te[ 1 ] = - s * a11 + c * a21; + te[ 4 ] = - s * a12 + c * a22; + te[ 7 ] = - s * a13 + c * a23; + + return this; + + }, + + translate: function ( tx, ty ) { + + var te = this.elements; + + te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; + te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 9; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 9; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + + array[ offset + 3 ] = te[ 3 ]; + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + array[ offset + 8 ] = te[ 8 ]; + + return array; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var _canvas; + + var ImageUtils = { + + getDataURL: function ( image ) { + + var canvas; + + if ( typeof HTMLCanvasElement == 'undefined' ) { + + return image.src; + + } else if ( image instanceof HTMLCanvasElement ) { + + canvas = image; + + } else { + + if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + + _canvas.width = image.width; + _canvas.height = image.height; + + var context = _canvas.getContext( '2d' ); + + if ( image instanceof ImageData ) { + + context.putImageData( image, 0, 0 ); + + } else { + + context.drawImage( image, 0, 0, image.width, image.height ); + + } + + canvas = _canvas; + + } + + if ( canvas.width > 2048 || canvas.height > 2048 ) { + + return canvas.toDataURL( 'image/jpeg', 0.6 ); + + } else { + + return canvas.toDataURL( 'image/png' ); + + } + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var textureId = 0; + + function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + Object.defineProperty( this, 'id', { value: textureId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + + this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; + this.mipmaps = []; + + this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; + + this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; + this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; + + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter; + + this.anisotropy = anisotropy !== undefined ? anisotropy : 1; + + this.format = format !== undefined ? format : RGBAFormat; + this.type = type !== undefined ? type : UnsignedByteType; + + this.offset = new Vector2( 0, 0 ); + this.repeat = new Vector2( 1, 1 ); + this.center = new Vector2( 0, 0 ); + this.rotation = 0; + + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + + // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. + // + // Also changing the encoding after already used by a Material will not automatically make the Material + // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. + this.encoding = encoding !== undefined ? encoding : LinearEncoding; + + this.version = 0; + this.onUpdate = null; + + } + + Texture.DEFAULT_IMAGE = undefined; + Texture.DEFAULT_MAPPING = UVMapping; + + Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Texture, + + isTexture: true, + + updateMatrix: function () { + + this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.image = source.image; + this.mipmaps = source.mipmaps.slice( 0 ); + + this.mapping = source.mapping; + + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + + this.anisotropy = source.anisotropy; + + this.format = source.format; + this.type = source.type; + + this.offset.copy( source.offset ); + this.repeat.copy( source.repeat ); + this.center.copy( source.center ); + this.rotation = source.rotation; + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy( source.matrix ); + + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.encoding = source.encoding; + + return this; + + }, + + toJSON: function ( meta ) { + + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + + return meta.textures[ this.uuid ]; + + } + + var output = { + + metadata: { + version: 4.5, + type: 'Texture', + generator: 'Texture.toJSON' + }, + + uuid: this.uuid, + name: this.name, + + mapping: this.mapping, + + repeat: [ this.repeat.x, this.repeat.y ], + offset: [ this.offset.x, this.offset.y ], + center: [ this.center.x, this.center.y ], + rotation: this.rotation, + + wrap: [ this.wrapS, this.wrapT ], + + format: this.format, + type: this.type, + encoding: this.encoding, + + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + + flipY: this.flipY, + + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + + }; + + if ( this.image !== undefined ) { + + // TODO: Move to THREE.Image + + var image = this.image; + + if ( image.uuid === undefined ) { + + image.uuid = _Math.generateUUID(); // UGH + + } + + if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { + + var url; + + if ( Array.isArray( image ) ) { + + // process array of images e.g. CubeTexture + + url = []; + + for ( var i = 0, l = image.length; i < l; i ++ ) { + + url.push( ImageUtils.getDataURL( image[ i ] ) ); + + } + + } else { + + // process single image + + url = ImageUtils.getDataURL( image ); + + } + + meta.images[ image.uuid ] = { + uuid: image.uuid, + url: url + }; + + } + + output.image = image.uuid; + + } + + if ( ! isRootObject ) { + + meta.textures[ this.uuid ] = output; + + } + + return output; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + }, + + transformUv: function ( uv ) { + + if ( this.mapping !== UVMapping ) return uv; + + uv.applyMatrix3( this.matrix ); + + if ( uv.x < 0 || uv.x > 1 ) { + + switch ( this.wrapS ) { + + case RepeatWrapping: + + uv.x = uv.x - Math.floor( uv.x ); + break; + + case ClampToEdgeWrapping: + + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + + uv.x = Math.ceil( uv.x ) - uv.x; + + } else { + + uv.x = uv.x - Math.floor( uv.x ); + + } + break; + + } + + } + + if ( uv.y < 0 || uv.y > 1 ) { + + switch ( this.wrapT ) { + + case RepeatWrapping: + + uv.y = uv.y - Math.floor( uv.y ); + break; + + case ClampToEdgeWrapping: + + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + + uv.y = Math.ceil( uv.y ) - uv.y; + + } else { + + uv.y = uv.y - Math.floor( uv.y ); + + } + break; + + } + + } + + if ( this.flipY ) { + + uv.y = 1 - uv.y; + + } + + return uv; + + } + + } ); + + Object.defineProperty( Texture.prototype, "needsUpdate", { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector4( x, y, z, w ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Vector4.prototype, { + + isVector4: true, + + set: function ( x, y, z, w ) { + + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setW: function ( w ) { + + this.w = w; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + case 3: this.w = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + case 3: return this.w; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z, this.w ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = ( v.w !== undefined ) ? v.w : 1; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + this.w += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z, w = this.w; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; + this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + setAxisAngleFromQuaternion: function ( q ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + + // q is assumed to be normalized + + this.w = 2 * Math.acos( q.w ); + + var s = Math.sqrt( 1 - q.w * q.w ); + + if ( s < 0.0001 ) { + + this.x = 1; + this.y = 0; + this.z = 0; + + } else { + + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + + } + + return this; + + }, + + setAxisAngleFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var angle, x, y, z, // variables for result + epsilon = 0.01, // margin to allow for rounding errors + epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees + + te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + if ( ( Math.abs( m12 - m21 ) < epsilon ) && + ( Math.abs( m13 - m31 ) < epsilon ) && + ( Math.abs( m23 - m32 ) < epsilon ) ) { + + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + + if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && + ( Math.abs( m13 + m31 ) < epsilon2 ) && + ( Math.abs( m23 + m32 ) < epsilon2 ) && + ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + + // this singularity is identity matrix so angle = 0 + + this.set( 1, 0, 0, 0 ); + + return this; // zero angle, arbitrary axis + + } + + // otherwise this singularity is angle = 180 + + angle = Math.PI; + + var xx = ( m11 + 1 ) / 2; + var yy = ( m22 + 1 ) / 2; + var zz = ( m33 + 1 ) / 2; + var xy = ( m12 + m21 ) / 4; + var xz = ( m13 + m31 ) / 4; + var yz = ( m23 + m32 ) / 4; + + if ( ( xx > yy ) && ( xx > zz ) ) { + + // m11 is the largest diagonal term + + if ( xx < epsilon ) { + + x = 0; + y = 0.707106781; + z = 0.707106781; + + } else { + + x = Math.sqrt( xx ); + y = xy / x; + z = xz / x; + + } + + } else if ( yy > zz ) { + + // m22 is the largest diagonal term + + if ( yy < epsilon ) { + + x = 0.707106781; + y = 0; + z = 0.707106781; + + } else { + + y = Math.sqrt( yy ); + x = xy / y; + z = yz / y; + + } + + } else { + + // m33 is the largest diagonal term so base result on this + + if ( zz < epsilon ) { + + x = 0.707106781; + y = 0.707106781; + z = 0; + + } else { + + z = Math.sqrt( zz ); + x = xz / z; + y = yz / z; + + } + + } + + this.set( x, y, z, angle ); + + return this; // return 180 deg rotation + + } + + // as we have reached here there are no singularities so we can handle normally + + var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + + ( m13 - m31 ) * ( m13 - m31 ) + + ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + + if ( Math.abs( s ) < 0.001 ) s = 1; + + // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = ( m32 - m23 ) / s; + this.y = ( m13 - m31 ) / s; + this.z = ( m21 - m12 ) / s; + this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + this.w = Math.min( this.w, v.w ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + this.w = Math.max( this.w, v.w ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + this.w = Math.max( min.w, Math.min( max.w, this.w ) ); + + return this; + + }, + + clampScalar: function () { + + var min, max; + + return function clampScalar( minVal, maxVal ) { + + if ( min === undefined ) { + + min = new Vector4(); + max = new Vector4(); + + } + + min.set( minVal, minVal, minVal, minVal ); + max.set( maxVal, maxVal, maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + this.w = - this.w; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + this.w += ( v.w - this.w ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + this.w = array[ offset + 3 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + array[ offset + 3 ] = this.w; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + this.w = attribute.getW( index ); + + return this; + + } + + } ); + + /** + * @author szimek / https://github.com/szimek/ + * @author alteredq / http://alteredqualia.com/ + * @author Marius Kintel / https://github.com/kintel + */ + + /* + In options, we can specify: + * Texture parameters for an auto-generated target texture + * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers + */ + function WebGLRenderTarget( width, height, options ) { + + this.width = width; + this.height = height; + + this.scissor = new Vector4( 0, 0, width, height ); + this.scissorTest = false; + + this.viewport = new Vector4( 0, 0, width, height ); + + options = options || {}; + + this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); + + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + + this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; + this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; + this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; + + } + + WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: WebGLRenderTarget, + + isWebGLRenderTarget: true, + + setSize: function ( width, height ) { + + if ( this.width !== width || this.height !== height ) { + + this.width = width; + this.height = height; + + this.dispose(); + + } + + this.viewport.set( 0, 0, width, height ); + this.scissor.set( 0, 0, width, height ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.width = source.width; + this.height = source.height; + + this.viewport.copy( source.viewport ); + + this.texture = source.texture.clone(); + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * @author Matt DesLauriers / @mattdesl + */ + + function WebGLMultisampleRenderTarget( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + this.samples = 4; + + } + + WebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { + + constructor: WebGLMultisampleRenderTarget, + + isWebGLMultisampleRenderTarget: true, + + copy: function ( source ) { + + WebGLRenderTarget.prototype.copy.call( this, source ); + + this.samples = source.samples; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com + */ + + function WebGLRenderTargetCube( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + } + + WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); + WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; + + WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { data: data, width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + + } + + DataTexture.prototype = Object.create( Texture.prototype ); + DataTexture.prototype.constructor = DataTexture; + + DataTexture.prototype.isDataTexture = true; + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); + + } + + Object.assign( Box3.prototype, { + + isBox3: true, + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromArray: function ( array ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var x = array[ i ]; + var y = array[ i + 1 ]; + var z = array[ i + 2 ]; + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromBufferAttribute: function ( attribute ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + var x = attribute.getX( i ); + var y = attribute.getY( i ); + var z = attribute.getZ( i ); + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector3(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + setFromObject: function ( object ) { + + this.makeEmpty(); + + return this.expandByObject( object ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = this.min.z = + Infinity; + this.max.x = this.max.y = this.max.z = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getSize() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + expandByObject: function () { + + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + + var scope, i, l; + + var v1 = new Vector3(); + + function traverse( node ) { + + var geometry = node.geometry; + + if ( geometry !== undefined ) { + + if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + + for ( i = 0, l = vertices.length; i < l; i ++ ) { + + v1.copy( vertices[ i ] ); + v1.applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } else if ( geometry.isBufferGeometry ) { + + var attribute = geometry.attributes.position; + + if ( attribute !== undefined ) { + + for ( i = 0, l = attribute.count; i < l; i ++ ) { + + v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } + + } + + } + + } + + return function expandByObject( object ) { + + scope = this; + + object.updateMatrixWorld( true ); + + object.traverse( traverse ); + + return this; + + }; + + }(), + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y || + point.z < this.min.z || point.z > this.max.z ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y && + this.min.z <= box.min.z && box.max.z <= this.max.z; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getParameter() target is now required' ); + target = new Vector3(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ), + ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 6 splitting planes to rule out intersections. + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y || + box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + + }, + + intersectsSphere: ( function () { + + var closestPoint = new Vector3(); + + return function intersectsSphere( sphere ) { + + // Find the point on the AABB closest to the sphere center. + this.clampPoint( sphere.center, closestPoint ); + + // If that point is inside the sphere, the AABB and sphere intersect. + return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }; + + } )(), + + intersectsPlane: function ( plane ) { + + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + + var min, max; + + if ( plane.normal.x > 0 ) { + + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + + } else { + + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + + } + + if ( plane.normal.y > 0 ) { + + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + + } else { + + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + + } + + if ( plane.normal.z > 0 ) { + + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + + } else { + + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + + } + + return ( min <= - plane.constant && max >= - plane.constant ); + + }, + + intersectsTriangle: ( function () { + + // triangle centered vertices + var v0 = new Vector3(); + var v1 = new Vector3(); + var v2 = new Vector3(); + + // triangle edge vectors + var f0 = new Vector3(); + var f1 = new Vector3(); + var f2 = new Vector3(); + + var testAxis = new Vector3(); + + var center = new Vector3(); + var extents = new Vector3(); + + var triangleNormal = new Vector3(); + + function satForAxes( axes ) { + + var i, j; + + for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { + + testAxis.fromArray( axes, i ); + // project the aabb onto the seperating axis + var r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z ); + // project all 3 vertices of the triangle onto the seperating axis + var p0 = v0.dot( testAxis ); + var p1 = v1.dot( testAxis ); + var p2 = v2.dot( testAxis ); + // actual test, basically see if either of the most extreme of the triangle points intersects r + if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { + + // points of the projected triangle are outside the projected half-length of the aabb + // the axis is seperating and we can exit + return false; + + } + + } + + return true; + + } + + return function intersectsTriangle( triangle ) { + + if ( this.isEmpty() ) { + + return false; + + } + + // compute box center and extents + this.getCenter( center ); + extents.subVectors( this.max, center ); + + // translate triangle to aabb origin + v0.subVectors( triangle.a, center ); + v1.subVectors( triangle.b, center ); + v2.subVectors( triangle.c, center ); + + // compute edge vectors for triangle + f0.subVectors( v1, v0 ); + f1.subVectors( v2, v1 ); + f2.subVectors( v0, v2 ); + + // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb + // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation + // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) + var axes = [ + 0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y, + f0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x, + - f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0 + ]; + if ( ! satForAxes( axes ) ) { + + return false; + + } + + // test 3 face normals from the aabb + axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; + if ( ! satForAxes( axes ) ) { + + return false; + + } + + // finally testing the face normal of the triangle + // use already existing triangle edge vectors here + triangleNormal.crossVectors( f0, f1 ); + axes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ]; + return satForAxes( axes ); + + }; + + } )(), + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector3(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + getBoundingSphere: function () { + + var v1 = new Vector3(); + + return function getBoundingSphere( target ) { + + if ( target === undefined ) { + + console.error( 'THREE.Box3: .getBoundingSphere() target is now required' ); + //target = new Sphere(); // removed to avoid cyclic dependency + + } + + this.getCenter( target.center ); + + target.radius = this.getSize( v1 ).length() * 0.5; + + return target; + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + if ( this.isEmpty() ) this.makeEmpty(); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + applyMatrix4: function () { + + var points = [ + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3() + ]; + + return function applyMatrix4( matrix ) { + + // transform of empty box is an empty box. + if ( this.isEmpty() ) return this; + + // NOTE: I am using a binary pattern to specify all 2^3 combinations below + points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 + points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 + points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 + points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 + points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 + points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 + points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 + points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + + this.setFromPoints( points ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Sphere( center, radius ) { + + this.center = ( center !== undefined ) ? center : new Vector3(); + this.radius = ( radius !== undefined ) ? radius : 0; + + } + + Object.assign( Sphere.prototype, { + + set: function ( center, radius ) { + + this.center.copy( center ); + this.radius = radius; + + return this; + + }, + + setFromPoints: function () { + + var box = new Box3(); + + return function setFromPoints( points, optionalCenter ) { + + var center = this.center; + + if ( optionalCenter !== undefined ) { + + center.copy( optionalCenter ); + + } else { + + box.setFromPoints( points ).getCenter( center ); + + } + + var maxRadiusSq = 0; + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + + } + + this.radius = Math.sqrt( maxRadiusSq ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( sphere ) { + + this.center.copy( sphere.center ); + this.radius = sphere.radius; + + return this; + + }, + + empty: function () { + + return ( this.radius <= 0 ); + + }, + + containsPoint: function ( point ) { + + return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + + }, + + distanceToPoint: function ( point ) { + + return ( point.distanceTo( this.center ) - this.radius ); + + }, + + intersectsSphere: function ( sphere ) { + + var radiusSum = this.radius + sphere.radius; + + return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsSphere( this ); + + }, + + intersectsPlane: function ( plane ) { + + return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + + }, + + clampPoint: function ( point, target ) { + + var deltaLengthSq = this.center.distanceToSquared( point ); + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + target.copy( point ); + + if ( deltaLengthSq > ( this.radius * this.radius ) ) { + + target.sub( this.center ).normalize(); + target.multiplyScalar( this.radius ).add( this.center ); + + } + + return target; + + }, + + getBoundingBox: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); + target = new Box3(); + + } + + target.set( this.center, this.center ); + target.expandByScalar( this.radius ); + + return target; + + }, + + applyMatrix4: function ( matrix ) { + + this.center.applyMatrix4( matrix ); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + + return this; + + }, + + translate: function ( offset ) { + + this.center.add( offset ); + + return this; + + }, + + equals: function ( sphere ) { + + return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Plane( normal, constant ) { + + // normal is assumed to be normalized + + this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); + this.constant = ( constant !== undefined ) ? constant : 0; + + } + + Object.assign( Plane.prototype, { + + set: function ( normal, constant ) { + + this.normal.copy( normal ); + this.constant = constant; + + return this; + + }, + + setComponents: function ( x, y, z, w ) { + + this.normal.set( x, y, z ); + this.constant = w; + + return this; + + }, + + setFromNormalAndCoplanarPoint: function ( normal, point ) { + + this.normal.copy( normal ); + this.constant = - point.dot( this.normal ); + + return this; + + }, + + setFromCoplanarPoints: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function setFromCoplanarPoints( a, b, c ) { + + var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); + + // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + this.setFromNormalAndCoplanarPoint( normal, a ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( plane ) { + + this.normal.copy( plane.normal ); + this.constant = plane.constant; + + return this; + + }, + + normalize: function () { + + // Note: will lead to a divide by zero if the plane is invalid. + + var inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar( inverseNormalLength ); + this.constant *= inverseNormalLength; + + return this; + + }, + + negate: function () { + + this.constant *= - 1; + this.normal.negate(); + + return this; + + }, + + distanceToPoint: function ( point ) { + + return this.normal.dot( point ) + this.constant; + + }, + + distanceToSphere: function ( sphere ) { + + return this.distanceToPoint( sphere.center ) - sphere.radius; + + }, + + projectPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .projectPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); + + }, + + intersectLine: function () { + + var v1 = new Vector3(); + + return function intersectLine( line, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .intersectLine() target is now required' ); + target = new Vector3(); + + } + + var direction = line.delta( v1 ); + + var denominator = this.normal.dot( direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( this.distanceToPoint( line.start ) === 0 ) { + + return target.copy( line.start ); + + } + + // Unsure if this is the correct method to handle this case. + return undefined; + + } + + var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + + if ( t < 0 || t > 1 ) { + + return undefined; + + } + + return target.copy( direction ).multiplyScalar( t ).add( line.start ); + + }; + + }(), + + intersectsLine: function ( line ) { + + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + + var startSign = this.distanceToPoint( line.start ); + var endSign = this.distanceToPoint( line.end ); + + return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsPlane( this ); + + }, + + intersectsSphere: function ( sphere ) { + + return sphere.intersectsPlane( this ); + + }, + + coplanarPoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.constant ); + + }, + + applyMatrix4: function () { + + var v1 = new Vector3(); + var m1 = new Matrix3(); + + return function applyMatrix4( matrix, optionalNormalMatrix ) { + + var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); + + var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); + + var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + + this.constant = - referencePoint.dot( normal ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.constant -= offset.dot( this.normal ); + + return this; + + }, + + equals: function ( plane ) { + + return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / http://clara.io + */ + + function Frustum( p0, p1, p2, p3, p4, p5 ) { + + this.planes = [ + + ( p0 !== undefined ) ? p0 : new Plane(), + ( p1 !== undefined ) ? p1 : new Plane(), + ( p2 !== undefined ) ? p2 : new Plane(), + ( p3 !== undefined ) ? p3 : new Plane(), + ( p4 !== undefined ) ? p4 : new Plane(), + ( p5 !== undefined ) ? p5 : new Plane() + + ]; + + } + + Object.assign( Frustum.prototype, { + + set: function ( p0, p1, p2, p3, p4, p5 ) { + + var planes = this.planes; + + planes[ 0 ].copy( p0 ); + planes[ 1 ].copy( p1 ); + planes[ 2 ].copy( p2 ); + planes[ 3 ].copy( p3 ); + planes[ 4 ].copy( p4 ); + planes[ 5 ].copy( p5 ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( frustum ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + planes[ i ].copy( frustum.planes[ i ] ); + + } + + return this; + + }, + + setFromMatrix: function ( m ) { + + var planes = this.planes; + var me = m.elements; + var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; + var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; + var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; + var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + + planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); + planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); + planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); + planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); + planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); + planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + + return this; + + }, + + intersectsObject: function () { + + var sphere = new Sphere(); + + return function intersectsObject( object ) { + + var geometry = object.geometry; + + if ( geometry.boundingSphere === null ) + geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ) + .applyMatrix4( object.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSprite: function () { + + var sphere = new Sphere(); + + return function intersectsSprite( sprite ) { + + sphere.center.set( 0, 0, 0 ); + sphere.radius = 0.7071067811865476; + sphere.applyMatrix4( sprite.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + var planes = this.planes; + var center = sphere.center; + var negRadius = - sphere.radius; + + for ( var i = 0; i < 6; i ++ ) { + + var distance = planes[ i ].distanceToPoint( center ); + + if ( distance < negRadius ) { + + return false; + + } + + } + + return true; + + }, + + intersectsBox: function () { + + var p = new Vector3(); + + return function intersectsBox( box ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + var plane = planes[ i ]; + + // corner at max distance + + p.x = plane.normal.x > 0 ? box.max.x : box.min.x; + p.y = plane.normal.y > 0 ? box.max.y : box.min.y; + p.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + if ( plane.distanceToPoint( p ) < 0 ) { + + return false; + + } + + } + + return true; + + }; + + }(), + + containsPoint: function ( point ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + if ( planes[ i ].distanceToPoint( point ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author jordi_ros / http://plattsoft.com + * @author D1plo1d / http://github.com/D1plo1d + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author timknip / http://www.floorplanner.com/ + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Matrix4() { + + this.elements = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix4.prototype, { + + isMatrix4: true, + + set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; + te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; + te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; + te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new Matrix4().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; + te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; + te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; + te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + + return this; + + }, + + copyPosition: function ( m ) { + + var te = this.elements, me = m.elements; + + te[ 12 ] = me[ 12 ]; + te[ 13 ] = me[ 13 ]; + te[ 14 ] = me[ 14 ]; + + return this; + + }, + + extractBasis: function ( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrixColumn( this, 0 ); + yAxis.setFromMatrixColumn( this, 1 ); + zAxis.setFromMatrixColumn( this, 2 ); + + return this; + + }, + + makeBasis: function ( xAxis, yAxis, zAxis ) { + + this.set( + xAxis.x, yAxis.x, zAxis.x, 0, + xAxis.y, yAxis.y, zAxis.y, 0, + xAxis.z, yAxis.z, zAxis.z, 0, + 0, 0, 0, 1 + ); + + return this; + + }, + + extractRotation: function () { + + var v1 = new Vector3(); + + return function extractRotation( m ) { + + // this method does not support reflection matrices + + var te = this.elements; + var me = m.elements; + + var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); + var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); + var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); + + te[ 0 ] = me[ 0 ] * scaleX; + te[ 1 ] = me[ 1 ] * scaleX; + te[ 2 ] = me[ 2 ] * scaleX; + te[ 3 ] = 0; + + te[ 4 ] = me[ 4 ] * scaleY; + te[ 5 ] = me[ 5 ] * scaleY; + te[ 6 ] = me[ 6 ] * scaleY; + te[ 7 ] = 0; + + te[ 8 ] = me[ 8 ] * scaleZ; + te[ 9 ] = me[ 9 ] * scaleZ; + te[ 10 ] = me[ 10 ] * scaleZ; + te[ 11 ] = 0; + + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }; + + }(), + + makeRotationFromEuler: function ( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + + } + + var te = this.elements; + + var x = euler.x, y = euler.y, z = euler.z; + var a = Math.cos( x ), b = Math.sin( x ); + var c = Math.cos( y ), d = Math.sin( y ); + var e = Math.cos( z ), f = Math.sin( z ); + + if ( euler.order === 'XYZ' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = - c * f; + te[ 8 ] = d; + + te[ 1 ] = af + be * d; + te[ 5 ] = ae - bf * d; + te[ 9 ] = - b * c; + + te[ 2 ] = bf - ae * d; + te[ 6 ] = be + af * d; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YXZ' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce + df * b; + te[ 4 ] = de * b - cf; + te[ 8 ] = a * d; + + te[ 1 ] = a * f; + te[ 5 ] = a * e; + te[ 9 ] = - b; + + te[ 2 ] = cf * b - de; + te[ 6 ] = df + ce * b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZXY' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce - df * b; + te[ 4 ] = - a * f; + te[ 8 ] = de + cf * b; + + te[ 1 ] = cf + de * b; + te[ 5 ] = a * e; + te[ 9 ] = df - ce * b; + + te[ 2 ] = - a * d; + te[ 6 ] = b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZYX' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = be * d - af; + te[ 8 ] = ae * d + bf; + + te[ 1 ] = c * f; + te[ 5 ] = bf * d + ae; + te[ 9 ] = af * d - be; + + te[ 2 ] = - d; + te[ 6 ] = b * c; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YZX' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = bd - ac * f; + te[ 8 ] = bc * f + ad; + + te[ 1 ] = f; + te[ 5 ] = a * e; + te[ 9 ] = - b * e; + + te[ 2 ] = - d * e; + te[ 6 ] = ad * f + bc; + te[ 10 ] = ac - bd * f; + + } else if ( euler.order === 'XZY' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = - f; + te[ 8 ] = d * e; + + te[ 1 ] = ac * f + bd; + te[ 5 ] = a * e; + te[ 9 ] = ad * f - bc; + + te[ 2 ] = bc * f - ad; + te[ 6 ] = b * e; + te[ 10 ] = bd * f + ac; + + } + + // bottom row + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // last column + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + makeRotationFromQuaternion: function () { + + var zero = new Vector3( 0, 0, 0 ); + var one = new Vector3( 1, 1, 1 ); + + return function makeRotationFromQuaternion( q ) { + + return this.compose( zero, q, one ); + + }; + + }(), + + lookAt: function () { + + var x = new Vector3(); + var y = new Vector3(); + var z = new Vector3(); + + return function lookAt( eye, target, up ) { + + var te = this.elements; + + z.subVectors( eye, target ); + + if ( z.lengthSq() === 0 ) { + + // eye and target are in the same position + + z.z = 1; + + } + + z.normalize(); + x.crossVectors( up, z ); + + if ( x.lengthSq() === 0 ) { + + // up and z are parallel + + if ( Math.abs( up.z ) === 1 ) { + + z.x += 0.0001; + + } else { + + z.z += 0.0001; + + } + + z.normalize(); + x.crossVectors( up, z ); + + } + + x.normalize(); + y.crossVectors( z, x ); + + te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; + te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; + te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; + + return this; + + }; + + }(), + + multiply: function ( m, n ) { + + if ( n !== undefined ) { + + console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); + return this.multiplyMatrices( m, n ); + + } + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; + var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; + var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; + var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + + var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; + var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; + var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; + var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + + te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; + te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; + te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; + te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix4( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + determinant: function () { + + var te = this.elements; + + var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; + var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; + var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; + var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + + //TODO: make this more efficient + //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) + + return ( + n41 * ( + + n14 * n23 * n32 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 + ) + + n42 * ( + + n11 * n23 * n34 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 + ) + + n43 * ( + + n11 * n24 * n32 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 + ) + + n44 * ( + - n13 * n22 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 + ) + + ); + + }, + + transpose: function () { + + var te = this.elements; + var tmp; + + tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; + tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; + tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + + tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; + tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; + tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + + return this; + + }, + + setPosition: function ( v ) { + + var te = this.elements; + + te[ 12 ] = v.x; + te[ 13 ] = v.y; + te[ 14 ] = v.z; + + return this; + + }, + + getInverse: function ( m, throwOnDegenerate ) { + + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + var te = this.elements, + me = m.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], + n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], + n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], + n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], + + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + + if ( det === 0 ) { + + var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; + te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; + te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + + te[ 4 ] = t12 * detInv; + te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; + te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; + te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + + te[ 8 ] = t13 * detInv; + te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; + te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; + te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + + te[ 12 ] = t14 * detInv; + te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; + te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; + te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + + return this; + + }, + + scale: function ( v ) { + + var te = this.elements; + var x = v.x, y = v.y, z = v.z; + + te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; + te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; + te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; + te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + + return this; + + }, + + getMaxScaleOnAxis: function () { + + var te = this.elements; + + var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; + var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; + var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + + return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + + }, + + makeTranslation: function ( x, y, z ) { + + this.set( + + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationX: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + 1, 0, 0, 0, + 0, c, - s, 0, + 0, s, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationY: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, 0, s, 0, + 0, 1, 0, 0, + - s, 0, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationZ: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, - s, 0, 0, + s, c, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationAxis: function ( axis, angle ) { + + // Based on http://www.gamedev.net/reference/articles/article1199.asp + + var c = Math.cos( angle ); + var s = Math.sin( angle ); + var t = 1 - c; + var x = axis.x, y = axis.y, z = axis.z; + var tx = t * x, ty = t * y; + + this.set( + + tx * x + c, tx * y - s * z, tx * z + s * y, 0, + tx * y + s * z, ty * y + c, ty * z - s * x, 0, + tx * z - s * y, ty * z + s * x, t * z * z + c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeScale: function ( x, y, z ) { + + this.set( + + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeShear: function ( x, y, z ) { + + this.set( + + 1, y, z, 0, + x, 1, z, 0, + x, y, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + compose: function ( position, quaternion, scale ) { + + var te = this.elements; + + var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; + var x2 = x + x, y2 = y + y, z2 = z + z; + var xx = x * x2, xy = x * y2, xz = x * z2; + var yy = y * y2, yz = y * z2, zz = z * z2; + var wx = w * x2, wy = w * y2, wz = w * z2; + + var sx = scale.x, sy = scale.y, sz = scale.z; + + te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; + te[ 1 ] = ( xy + wz ) * sx; + te[ 2 ] = ( xz - wy ) * sx; + te[ 3 ] = 0; + + te[ 4 ] = ( xy - wz ) * sy; + te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; + te[ 6 ] = ( yz + wx ) * sy; + te[ 7 ] = 0; + + te[ 8 ] = ( xz + wy ) * sz; + te[ 9 ] = ( yz - wx ) * sz; + te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; + te[ 11 ] = 0; + + te[ 12 ] = position.x; + te[ 13 ] = position.y; + te[ 14 ] = position.z; + te[ 15 ] = 1; + + return this; + + }, + + decompose: function () { + + var vector = new Vector3(); + var matrix = new Matrix4(); + + return function decompose( position, quaternion, scale ) { + + var te = this.elements; + + var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); + var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); + var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + + // if determine is negative, we need to invert one scale + var det = this.determinant(); + if ( det < 0 ) sx = - sx; + + position.x = te[ 12 ]; + position.y = te[ 13 ]; + position.z = te[ 14 ]; + + // scale the rotation part + matrix.copy( this ); + + var invSX = 1 / sx; + var invSY = 1 / sy; + var invSZ = 1 / sz; + + matrix.elements[ 0 ] *= invSX; + matrix.elements[ 1 ] *= invSX; + matrix.elements[ 2 ] *= invSX; + + matrix.elements[ 4 ] *= invSY; + matrix.elements[ 5 ] *= invSY; + matrix.elements[ 6 ] *= invSY; + + matrix.elements[ 8 ] *= invSZ; + matrix.elements[ 9 ] *= invSZ; + matrix.elements[ 10 ] *= invSZ; + + quaternion.setFromRotationMatrix( matrix ); + + scale.x = sx; + scale.y = sy; + scale.z = sz; + + return this; + + }; + + }(), + + makePerspective: function ( left, right, top, bottom, near, far ) { + + if ( far === undefined ) { + + console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); + + } + + var te = this.elements; + var x = 2 * near / ( right - left ); + var y = 2 * near / ( top - bottom ); + + var a = ( right + left ) / ( right - left ); + var b = ( top + bottom ) / ( top - bottom ); + var c = - ( far + near ) / ( far - near ); + var d = - 2 * far * near / ( far - near ); + + te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; + te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; + + return this; + + }, + + makeOrthographic: function ( left, right, top, bottom, near, far ) { + + var te = this.elements; + var w = 1.0 / ( right - left ); + var h = 1.0 / ( top - bottom ); + var p = 1.0 / ( far - near ); + + var x = ( right + left ) * w; + var y = ( top + bottom ) * h; + var z = ( far + near ) * p; + + te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; + te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 16; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 16; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + array[ offset + 3 ] = te[ 3 ]; + + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + + array[ offset + 8 ] = te[ 8 ]; + array[ offset + 9 ] = te[ 9 ]; + array[ offset + 10 ] = te[ 10 ]; + array[ offset + 11 ] = te[ 11 ]; + + array[ offset + 12 ] = te[ 12 ]; + array[ offset + 13 ] = te[ 13 ]; + array[ offset + 14 ] = te[ 14 ]; + array[ offset + 15 ] = te[ 15 ]; + + return array; + + } + + } ); + + var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; + + var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + + var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif"; + + var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif"; + + var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + + var begin_vertex = "vec3 transformed = vec3( position );"; + + var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; + + var bsdfs = "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick( specularColor, dotNV );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}"; + + var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; + + var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif"; + + var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; + + var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif"; + + var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif"; + + var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; + + var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; + + var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}"; + + var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif"; + + var defaultnormal_vertex = "vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif"; + + var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; + + var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif"; + + var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; + + var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; + + var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; + + var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}"; + + var envmap_fragment = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; + + var envmap_pars_fragment = "#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; + + var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; + + var envmap_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; + + var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif"; + + var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif"; + + var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; + + var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; + + var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif"; + + var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif"; + + var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + + var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif"; + + var lights_pars_begin = "uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif"; + + var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif"; + + var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; + + var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)"; + + var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif"; + + var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor;\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; + + var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif"; + + var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif"; + + var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif"; + + var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; + + var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif"; + + var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif"; + + var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif"; + + var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; + + var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; + + var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif"; + + var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif"; + + var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; + + var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + + var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif"; + + var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; + + var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif"; + + var normal_fragment_begin = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif"; + + var normal_fragment_maps = "#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif"; + + var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif"; + + var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}"; + + var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; + + var project_vertex = "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;"; + + var dithering_fragment = "#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; + + var dithering_pars_fragment = "#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; + + var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; + + var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + + var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif"; + + var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif"; + + var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif"; + + var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}"; + + var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; + + var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif"; + + var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; + + var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif"; + + var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; + + var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + + var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; + + var tonemapping_pars_fragment = "#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}"; + + var uv_pars_fragment = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif"; + + var uv_pars_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif"; + + var uv_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; + + var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; + + var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif"; + + var background_frag = "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var background_vert = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; + + var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; + + var cube_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; + + var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}"; + + var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; + + var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; + + var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; + + var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; + + var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_frag = "#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_vert = "#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; + + var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; + + var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; + + var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}"; + + var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}"; + + var sprite_vert = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var ShaderChunk = { + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + encodings_fragment: encodings_fragment, + encodings_pars_fragment: encodings_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_physical_pars_fragment: envmap_physical_pars_fragment, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_fragment: lightmap_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_vertex: lights_lambert_vertex, + lights_pars_begin: lights_pars_begin, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_fragment_begin: lights_fragment_begin, + lights_fragment_maps: lights_fragment_maps, + lights_fragment_end: lights_fragment_end, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment_begin: normal_fragment_begin, + normal_fragment_maps: normal_fragment_maps, + normalmap_pars_fragment: normalmap_pars_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + uv2_pars_fragment: uv2_pars_fragment, + uv2_pars_vertex: uv2_pars_vertex, + uv2_vertex: uv2_vertex, + worldpos_vertex: worldpos_vertex, + + background_frag: background_frag, + background_vert: background_vert, + cube_frag: cube_frag, + cube_vert: cube_vert, + depth_frag: depth_frag, + depth_vert: depth_vert, + distanceRGBA_frag: distanceRGBA_frag, + distanceRGBA_vert: distanceRGBA_vert, + equirect_frag: equirect_frag, + equirect_vert: equirect_vert, + linedashed_frag: linedashed_frag, + linedashed_vert: linedashed_vert, + meshbasic_frag: meshbasic_frag, + meshbasic_vert: meshbasic_vert, + meshlambert_frag: meshlambert_frag, + meshlambert_vert: meshlambert_vert, + meshmatcap_frag: meshmatcap_frag, + meshmatcap_vert: meshmatcap_vert, + meshphong_frag: meshphong_frag, + meshphong_vert: meshphong_vert, + meshphysical_frag: meshphysical_frag, + meshphysical_vert: meshphysical_vert, + normal_frag: normal_frag, + normal_vert: normal_vert, + points_frag: points_frag, + points_vert: points_vert, + shadow_frag: shadow_frag, + shadow_vert: shadow_vert, + sprite_frag: sprite_frag, + sprite_vert: sprite_vert + }; + + /** + * Uniform Utilities + */ + + function cloneUniforms( src ) { + + var dst = {}; + + for ( var u in src ) { + + dst[ u ] = {}; + + for ( var p in src[ u ] ) { + + var property = src[ u ][ p ]; + + if ( property && ( property.isColor || + property.isMatrix3 || property.isMatrix4 || + property.isVector2 || property.isVector3 || property.isVector4 || + property.isTexture ) ) { + + dst[ u ][ p ] = property.clone(); + + } else if ( Array.isArray( property ) ) { + + dst[ u ][ p ] = property.slice(); + + } else { + + dst[ u ][ p ] = property; + + } + + } + + } + + return dst; + + } + + function mergeUniforms( uniforms ) { + + var merged = {}; + + for ( var u = 0; u < uniforms.length; u ++ ) { + + var tmp = cloneUniforms( uniforms[ u ] ); + + for ( var p in tmp ) { + + merged[ p ] = tmp[ p ]; + + } + + } + + return merged; + + } + + // Legacy + + var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + + function Color( r, g, b ) { + + if ( g === undefined && b === undefined ) { + + // r is THREE.Color, hex or string + return this.set( r ); + + } + + return this.setRGB( r, g, b ); + + } + + Object.assign( Color.prototype, { + + isColor: true, + + r: 1, g: 1, b: 1, + + set: function ( value ) { + + if ( value && value.isColor ) { + + this.copy( value ); + + } else if ( typeof value === 'number' ) { + + this.setHex( value ); + + } else if ( typeof value === 'string' ) { + + this.setStyle( value ); + + } + + return this; + + }, + + setScalar: function ( scalar ) { + + this.r = scalar; + this.g = scalar; + this.b = scalar; + + return this; + + }, + + setHex: function ( hex ) { + + hex = Math.floor( hex ); + + this.r = ( hex >> 16 & 255 ) / 255; + this.g = ( hex >> 8 & 255 ) / 255; + this.b = ( hex & 255 ) / 255; + + return this; + + }, + + setRGB: function ( r, g, b ) { + + this.r = r; + this.g = g; + this.b = b; + + return this; + + }, + + setHSL: function () { + + function hue2rgb( p, q, t ) { + + if ( t < 0 ) t += 1; + if ( t > 1 ) t -= 1; + if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; + if ( t < 1 / 2 ) return q; + if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); + return p; + + } + + return function setHSL( h, s, l ) { + + // h,s,l ranges are in 0.0 - 1.0 + h = _Math.euclideanModulo( h, 1 ); + s = _Math.clamp( s, 0, 1 ); + l = _Math.clamp( l, 0, 1 ); + + if ( s === 0 ) { + + this.r = this.g = this.b = l; + + } else { + + var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); + var q = ( 2 * l ) - p; + + this.r = hue2rgb( q, p, h + 1 / 3 ); + this.g = hue2rgb( q, p, h ); + this.b = hue2rgb( q, p, h - 1 / 3 ); + + } + + return this; + + }; + + }(), + + setStyle: function ( style ) { + + function handleAlpha( string ) { + + if ( string === undefined ) return; + + if ( parseFloat( string ) < 1 ) { + + console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + + } + + } + + + var m; + + if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { + + // rgb / hsl + + var color; + var name = m[ 1 ]; + var components = m[ 2 ]; + + switch ( name ) { + + case 'rgb': + case 'rgba': + + if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(255,0,0) rgba(255,0,0,0.5) + this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; + this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; + this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; + this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; + this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + break; + + case 'hsl': + case 'hsla': + + if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + var h = parseFloat( color[ 1 ] ) / 360; + var s = parseInt( color[ 2 ], 10 ) / 100; + var l = parseInt( color[ 3 ], 10 ) / 100; + + handleAlpha( color[ 5 ] ); + + return this.setHSL( h, s, l ); + + } + + break; + + } + + } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { + + // hex color + + var hex = m[ 1 ]; + var size = hex.length; + + if ( size === 3 ) { + + // #ff0 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; + + return this; + + } else if ( size === 6 ) { + + // #ff0000 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; + + return this; + + } + + } + + if ( style && style.length > 0 ) { + + // color keywords + var hex = ColorKeywords[ style ]; + + if ( hex !== undefined ) { + + // red + this.setHex( hex ); + + } else { + + // unknown color + console.warn( 'THREE.Color: Unknown color ' + style ); + + } + + } + + return this; + + }, + + clone: function () { + + return new this.constructor( this.r, this.g, this.b ); + + }, + + copy: function ( color ) { + + this.r = color.r; + this.g = color.g; + this.b = color.b; + + return this; + + }, + + copyGammaToLinear: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + this.r = Math.pow( color.r, gammaFactor ); + this.g = Math.pow( color.g, gammaFactor ); + this.b = Math.pow( color.b, gammaFactor ); + + return this; + + }, + + copyLinearToGamma: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + + this.r = Math.pow( color.r, safeInverse ); + this.g = Math.pow( color.g, safeInverse ); + this.b = Math.pow( color.b, safeInverse ); + + return this; + + }, + + convertGammaToLinear: function ( gammaFactor ) { + + this.copyGammaToLinear( this, gammaFactor ); + + return this; + + }, + + convertLinearToGamma: function ( gammaFactor ) { + + this.copyLinearToGamma( this, gammaFactor ); + + return this; + + }, + + copySRGBToLinear: function () { + + function SRGBToLinear( c ) { + + return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); + + } + + return function copySRGBToLinear( color ) { + + this.r = SRGBToLinear( color.r ); + this.g = SRGBToLinear( color.g ); + this.b = SRGBToLinear( color.b ); + + return this; + + }; + + }(), + + copyLinearToSRGB: function () { + + function LinearToSRGB( c ) { + + return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; + + } + + return function copyLinearToSRGB( color ) { + + this.r = LinearToSRGB( color.r ); + this.g = LinearToSRGB( color.g ); + this.b = LinearToSRGB( color.b ); + + return this; + + }; + + }(), + + convertSRGBToLinear: function () { + + this.copySRGBToLinear( this ); + + return this; + + }, + + convertLinearToSRGB: function () { + + this.copyLinearToSRGB( this ); + + return this; + + }, + + getHex: function () { + + return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; + + }, + + getHexString: function () { + + return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); + + }, + + getHSL: function ( target ) { + + // h,s,l ranges are in 0.0 - 1.0 + + if ( target === undefined ) { + + console.warn( 'THREE.Color: .getHSL() target is now required' ); + target = { h: 0, s: 0, l: 0 }; + + } + + var r = this.r, g = this.g, b = this.b; + + var max = Math.max( r, g, b ); + var min = Math.min( r, g, b ); + + var hue, saturation; + var lightness = ( min + max ) / 2.0; + + if ( min === max ) { + + hue = 0; + saturation = 0; + + } else { + + var delta = max - min; + + saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + + switch ( max ) { + + case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; + case g: hue = ( b - r ) / delta + 2; break; + case b: hue = ( r - g ) / delta + 4; break; + + } + + hue /= 6; + + } + + target.h = hue; + target.s = saturation; + target.l = lightness; + + return target; + + }, + + getStyle: function () { + + return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; + + }, + + offsetHSL: function () { + + var hsl = {}; + + return function ( h, s, l ) { + + this.getHSL( hsl ); + + hsl.h += h; hsl.s += s; hsl.l += l; + + this.setHSL( hsl.h, hsl.s, hsl.l ); + + return this; + + }; + + }(), + + add: function ( color ) { + + this.r += color.r; + this.g += color.g; + this.b += color.b; + + return this; + + }, + + addColors: function ( color1, color2 ) { + + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + + return this; + + }, + + addScalar: function ( s ) { + + this.r += s; + this.g += s; + this.b += s; + + return this; + + }, + + sub: function ( color ) { + + this.r = Math.max( 0, this.r - color.r ); + this.g = Math.max( 0, this.g - color.g ); + this.b = Math.max( 0, this.b - color.b ); + + return this; + + }, + + multiply: function ( color ) { + + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + + return this; + + }, + + multiplyScalar: function ( s ) { + + this.r *= s; + this.g *= s; + this.b *= s; + + return this; + + }, + + lerp: function ( color, alpha ) { + + this.r += ( color.r - this.r ) * alpha; + this.g += ( color.g - this.g ) * alpha; + this.b += ( color.b - this.b ) * alpha; + + return this; + + }, + + lerpHSL: function () { + + var hslA = { h: 0, s: 0, l: 0 }; + var hslB = { h: 0, s: 0, l: 0 }; + + return function lerpHSL( color, alpha ) { + + this.getHSL( hslA ); + color.getHSL( hslB ); + + var h = _Math.lerp( hslA.h, hslB.h, alpha ); + var s = _Math.lerp( hslA.s, hslB.s, alpha ); + var l = _Math.lerp( hslA.l, hslB.l, alpha ); + + this.setHSL( h, s, l ); + + return this; + + }; + + }(), + + equals: function ( c ) { + + return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.r = array[ offset ]; + this.g = array[ offset + 1 ]; + this.b = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; + + }, + + toJSON: function () { + + return this.getHex(); + + } + + } ); + + /** + * Uniforms library for shared webgl shaders + */ + + var UniformsLib = { + + common: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + + map: { value: null }, + uvTransform: { value: new Matrix3() }, + + alphaMap: { value: null }, + + }, + + specularmap: { + + specularMap: { value: null }, + + }, + + envmap: { + + envMap: { value: null }, + flipEnvMap: { value: - 1 }, + reflectivity: { value: 1.0 }, + refractionRatio: { value: 0.98 }, + maxMipLevel: { value: 0 } + + }, + + aomap: { + + aoMap: { value: null }, + aoMapIntensity: { value: 1 } + + }, + + lightmap: { + + lightMap: { value: null }, + lightMapIntensity: { value: 1 } + + }, + + emissivemap: { + + emissiveMap: { value: null } + + }, + + bumpmap: { + + bumpMap: { value: null }, + bumpScale: { value: 1 } + + }, + + normalmap: { + + normalMap: { value: null }, + normalScale: { value: new Vector2( 1, 1 ) } + + }, + + displacementmap: { + + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + + }, + + roughnessmap: { + + roughnessMap: { value: null } + + }, + + metalnessmap: { + + metalnessMap: { value: null } + + }, + + gradientmap: { + + gradientMap: { value: null } + + }, + + fog: { + + fogDensity: { value: 0.00025 }, + fogNear: { value: 1 }, + fogFar: { value: 2000 }, + fogColor: { value: new Color( 0xffffff ) } + + }, + + lights: { + + ambientLightColor: { value: [] }, + + directionalLights: { value: [], properties: { + direction: {}, + color: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + spotShadowMap: { value: [] }, + spotShadowMatrix: { value: [] }, + + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } } + + }, + + points: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + size: { value: 1.0 }, + scale: { value: 1.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + }, + + sprite: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + center: { value: new Vector2( 0.5, 0.5 ) }, + rotation: { value: 0.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + } + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + */ + + var ShaderLib = { + + basic: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + + }, + + lambert: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + + }, + + phong: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + specular: { value: new Color( 0x111111 ) }, + shininess: { value: 30 } + } + ] ), + + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + + }, + + standard: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + roughness: { value: 0.5 }, + metalness: { value: 0.5 }, + envMapIntensity: { value: 1 } // temporary + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }, + + matcap: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + { + matcap: { value: null } + } + ] ), + + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + + }, + + points: { + + uniforms: mergeUniforms( [ + UniformsLib.points, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + + }, + + dashed: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ] ), + + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + + }, + + depth: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap + ] ), + + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + + }, + + normal: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1.0 } + } + ] ), + + vertexShader: ShaderChunk.normal_vert, + fragmentShader: ShaderChunk.normal_frag + + }, + + sprite: { + + uniforms: mergeUniforms( [ + UniformsLib.sprite, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + + }, + + background: { + + uniforms: { + uvTransform: { value: new Matrix3() }, + t2D: { value: null }, + }, + + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + + }, + /* ------------------------------------------------------------------------- + // Cube map shader + ------------------------------------------------------------------------- */ + + cube: { + + uniforms: { + tCube: { value: null }, + tFlip: { value: - 1 }, + opacity: { value: 1.0 } + }, + + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + + }, + + equirect: { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + + }, + + distanceRGBA: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1000 } + } + ] ), + + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + + }, + + shadow: { + + uniforms: mergeUniforms( [ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: new Color( 0x00000 ) }, + opacity: { value: 1.0 } + }, + ] ), + + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + + } + + }; + + ShaderLib.physical = { + + uniforms: mergeUniforms( [ + ShaderLib.standard.uniforms, + { + clearCoat: { value: 0 }, + clearCoatRoughness: { value: 0 } + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAnimation() { + + var context = null; + var isAnimating = false; + var animationLoop = null; + + function onAnimationFrame( time, frame ) { + + if ( isAnimating === false ) return; + + animationLoop( time, frame ); + + context.requestAnimationFrame( onAnimationFrame ); + + } + + return { + + start: function () { + + if ( isAnimating === true ) return; + if ( animationLoop === null ) return; + + context.requestAnimationFrame( onAnimationFrame ); + + isAnimating = true; + + }, + + stop: function () { + + isAnimating = false; + + }, + + setAnimationLoop: function ( callback ) { + + animationLoop = callback; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAttributes( gl ) { + + var buffers = new WeakMap(); + + function createBuffer( attribute, bufferType ) { + + var array = attribute.array; + var usage = attribute.dynamic ? 35048 : 35044; + + var buffer = gl.createBuffer(); + + gl.bindBuffer( bufferType, buffer ); + gl.bufferData( bufferType, array, usage ); + + attribute.onUploadCallback(); + + var type = 5126; + + if ( array instanceof Float32Array ) { + + type = 5126; + + } else if ( array instanceof Float64Array ) { + + console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); + + } else if ( array instanceof Uint16Array ) { + + type = 5123; + + } else if ( array instanceof Int16Array ) { + + type = 5122; + + } else if ( array instanceof Uint32Array ) { + + type = 5125; + + } else if ( array instanceof Int32Array ) { + + type = 5124; + + } else if ( array instanceof Int8Array ) { + + type = 5120; + + } else if ( array instanceof Uint8Array ) { + + type = 5121; + + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version + }; + + } + + function updateBuffer( buffer, attribute, bufferType ) { + + var array = attribute.array; + var updateRange = attribute.updateRange; + + gl.bindBuffer( bufferType, buffer ); + + if ( attribute.dynamic === false ) { + + gl.bufferData( bufferType, array, 35044 ); + + } else if ( updateRange.count === - 1 ) { + + // Not using update ranges + + gl.bufferSubData( bufferType, 0, array ); + + } else if ( updateRange.count === 0 ) { + + console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); + + } else { + + gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, + array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); + + updateRange.count = - 1; // reset range + + } + + } + + // + + function get( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + return buffers.get( attribute ); + + } + + function remove( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers.get( attribute ); + + if ( data ) { + + gl.deleteBuffer( data.buffer ); + + buffers.delete( attribute ); + + } + + } + + function update( attribute, bufferType ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers.get( attribute ); + + if ( data === undefined ) { + + buffers.set( attribute, createBuffer( attribute, bufferType ) ); + + } else if ( data.version < attribute.version ) { + + updateBuffer( data.buffer, attribute, bufferType ); + + data.version = attribute.version; + + } + + } + + return { + + get: get, + remove: remove, + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Face3( a, b, c, normal, color, materialIndex ) { + + this.a = a; + this.b = b; + this.c = c; + + this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); + this.vertexNormals = Array.isArray( normal ) ? normal : []; + + this.color = ( color && color.isColor ) ? color : new Color(); + this.vertexColors = Array.isArray( color ) ? color : []; + + this.materialIndex = materialIndex !== undefined ? materialIndex : 0; + + } + + Object.assign( Face3.prototype, { + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.a = source.a; + this.b = source.b; + this.c = source.c; + + this.normal.copy( source.normal ); + this.color.copy( source.color ); + + this.materialIndex = source.materialIndex; + + for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { + + this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); + + } + + for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { + + this.vertexColors[ i ] = source.vertexColors[ i ].clone(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Euler( x, y, z, order ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._order = order || Euler.DefaultOrder; + + } + + Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; + + Euler.DefaultOrder = 'XYZ'; + + Object.defineProperties( Euler.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + order: { + + get: function () { + + return this._order; + + }, + + set: function ( value ) { + + this._order = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Euler.prototype, { + + isEuler: true, + + set: function ( x, y, z, order ) { + + this._x = x; + this._y = y; + this._z = z; + this._order = order || this._order; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._order ); + + }, + + copy: function ( euler ) { + + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m, order, update ) { + + var clamp = _Math.clamp; + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements; + var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + order = order || this._order; + + if ( order === 'XYZ' ) { + + this._y = Math.asin( clamp( m13, - 1, 1 ) ); + + if ( Math.abs( m13 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m33 ); + this._z = Math.atan2( - m12, m11 ); + + } else { + + this._x = Math.atan2( m32, m22 ); + this._z = 0; + + } + + } else if ( order === 'YXZ' ) { + + this._x = Math.asin( - clamp( m23, - 1, 1 ) ); + + if ( Math.abs( m23 ) < 0.99999 ) { + + this._y = Math.atan2( m13, m33 ); + this._z = Math.atan2( m21, m22 ); + + } else { + + this._y = Math.atan2( - m31, m11 ); + this._z = 0; + + } + + } else if ( order === 'ZXY' ) { + + this._x = Math.asin( clamp( m32, - 1, 1 ) ); + + if ( Math.abs( m32 ) < 0.99999 ) { + + this._y = Math.atan2( - m31, m33 ); + this._z = Math.atan2( - m12, m22 ); + + } else { + + this._y = 0; + this._z = Math.atan2( m21, m11 ); + + } + + } else if ( order === 'ZYX' ) { + + this._y = Math.asin( - clamp( m31, - 1, 1 ) ); + + if ( Math.abs( m31 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m33 ); + this._z = Math.atan2( m21, m11 ); + + } else { + + this._x = 0; + this._z = Math.atan2( - m12, m22 ); + + } + + } else if ( order === 'YZX' ) { + + this._z = Math.asin( clamp( m21, - 1, 1 ) ); + + if ( Math.abs( m21 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m22 ); + this._y = Math.atan2( - m31, m11 ); + + } else { + + this._x = 0; + this._y = Math.atan2( m13, m33 ); + + } + + } else if ( order === 'XZY' ) { + + this._z = Math.asin( - clamp( m12, - 1, 1 ) ); + + if ( Math.abs( m12 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m22 ); + this._y = Math.atan2( m13, m11 ); + + } else { + + this._x = Math.atan2( - m23, m33 ); + this._y = 0; + + } + + } else { + + console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); + + } + + this._order = order; + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromQuaternion: function () { + + var matrix = new Matrix4(); + + return function setFromQuaternion( q, order, update ) { + + matrix.makeRotationFromQuaternion( q ); + + return this.setFromRotationMatrix( matrix, order, update ); + + }; + + }(), + + setFromVector3: function ( v, order ) { + + return this.set( v.x, v.y, v.z, order || this._order ); + + }, + + reorder: function () { + + // WARNING: this discards revolution information -bhouston + + var q = new Quaternion(); + + return function reorder( newOrder ) { + + q.setFromEuler( this ); + + return this.setFromQuaternion( q, newOrder ); + + }; + + }(), + + equals: function ( euler ) { + + return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + + }, + + fromArray: function ( array ) { + + this._x = array[ 0 ]; + this._y = array[ 1 ]; + this._z = array[ 2 ]; + if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; + + }, + + toVector3: function ( optionalResult ) { + + if ( optionalResult ) { + + return optionalResult.set( this._x, this._y, this._z ); + + } else { + + return new Vector3( this._x, this._y, this._z ); + + } + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Layers() { + + this.mask = 1 | 0; + + } + + Object.assign( Layers.prototype, { + + set: function ( channel ) { + + this.mask = 1 << channel | 0; + + }, + + enable: function ( channel ) { + + this.mask |= 1 << channel | 0; + + }, + + toggle: function ( channel ) { + + this.mask ^= 1 << channel | 0; + + }, + + disable: function ( channel ) { + + this.mask &= ~ ( 1 << channel | 0 ); + + }, + + test: function ( layers ) { + + return ( this.mask & layers.mask ) !== 0; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author elephantatwork / www.elephantatwork.ch + */ + + var object3DId = 0; + + function Object3D() { + + Object.defineProperty( this, 'id', { value: object3DId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Object3D'; + + this.parent = null; + this.children = []; + + this.up = Object3D.DefaultUp.clone(); + + var position = new Vector3(); + var rotation = new Euler(); + var quaternion = new Quaternion(); + var scale = new Vector3( 1, 1, 1 ); + + function onRotationChange() { + + quaternion.setFromEuler( rotation, false ); + + } + + function onQuaternionChange() { + + rotation.setFromQuaternion( quaternion, undefined, false ); + + } + + rotation.onChange( onRotationChange ); + quaternion.onChange( onQuaternionChange ); + + Object.defineProperties( this, { + position: { + configurable: true, + enumerable: true, + value: position + }, + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + scale: { + configurable: true, + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + } ); + + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + + this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; + this.matrixWorldNeedsUpdate = false; + + this.layers = new Layers(); + this.visible = true; + + this.castShadow = false; + this.receiveShadow = false; + + this.frustumCulled = true; + this.renderOrder = 0; + + this.userData = {}; + + } + + Object3D.DefaultUp = new Vector3( 0, 1, 0 ); + Object3D.DefaultMatrixAutoUpdate = true; + + Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Object3D, + + isObject3D: true, + + onBeforeRender: function () {}, + onAfterRender: function () {}, + + applyMatrix: function ( matrix ) { + + this.matrix.multiplyMatrices( matrix, this.matrix ); + + this.matrix.decompose( this.position, this.quaternion, this.scale ); + + }, + + applyQuaternion: function ( q ) { + + this.quaternion.premultiply( q ); + + return this; + + }, + + setRotationFromAxisAngle: function ( axis, angle ) { + + // assumes axis is normalized + + this.quaternion.setFromAxisAngle( axis, angle ); + + }, + + setRotationFromEuler: function ( euler ) { + + this.quaternion.setFromEuler( euler, true ); + + }, + + setRotationFromMatrix: function ( m ) { + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + this.quaternion.setFromRotationMatrix( m ); + + }, + + setRotationFromQuaternion: function ( q ) { + + // assumes q is normalized + + this.quaternion.copy( q ); + + }, + + rotateOnAxis: function () { + + // rotate object on axis in object space + // axis is assumed to be normalized + + var q1 = new Quaternion(); + + return function rotateOnAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.multiply( q1 ); + + return this; + + }; + + }(), + + rotateOnWorldAxis: function () { + + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + + var q1 = new Quaternion(); + + return function rotateOnWorldAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.premultiply( q1 ); + + return this; + + }; + + }(), + + rotateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function rotateX( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function rotateY( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function rotateZ( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + translateOnAxis: function () { + + // translate object by distance along axis in object space + // axis is assumed to be normalized + + var v1 = new Vector3(); + + return function translateOnAxis( axis, distance ) { + + v1.copy( axis ).applyQuaternion( this.quaternion ); + + this.position.add( v1.multiplyScalar( distance ) ); + + return this; + + }; + + }(), + + translateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function translateX( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function translateY( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function translateZ( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + localToWorld: function ( vector ) { + + return vector.applyMatrix4( this.matrixWorld ); + + }, + + worldToLocal: function () { + + var m1 = new Matrix4(); + + return function worldToLocal( vector ) { + + return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); + + }; + + }(), + + lookAt: function () { + + // This method does not support objects having non-uniformly-scaled parent(s) + + var q1 = new Quaternion(); + var m1 = new Matrix4(); + var target = new Vector3(); + var position = new Vector3(); + + return function lookAt( x, y, z ) { + + if ( x.isVector3 ) { + + target.copy( x ); + + } else { + + target.set( x, y, z ); + + } + + var parent = this.parent; + + this.updateWorldMatrix( true, false ); + + position.setFromMatrixPosition( this.matrixWorld ); + + if ( this.isCamera || this.isLight ) { + + m1.lookAt( position, target, this.up ); + + } else { + + m1.lookAt( target, position, this.up ); + + } + + this.quaternion.setFromRotationMatrix( m1 ); + + if ( parent ) { + + m1.extractRotation( parent.matrixWorld ); + q1.setFromRotationMatrix( m1 ); + this.quaternion.premultiply( q1.inverse() ); + + } + + }; + + }(), + + add: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.add( arguments[ i ] ); + + } + + return this; + + } + + if ( object === this ) { + + console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); + return this; + + } + + if ( ( object && object.isObject3D ) ) { + + if ( object.parent !== null ) { + + object.parent.remove( object ); + + } + + object.parent = this; + object.dispatchEvent( { type: 'added' } ); + + this.children.push( object ); + + } else { + + console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); + + } + + return this; + + }, + + remove: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.remove( arguments[ i ] ); + + } + + return this; + + } + + var index = this.children.indexOf( object ); + + if ( index !== - 1 ) { + + object.parent = null; + + object.dispatchEvent( { type: 'removed' } ); + + this.children.splice( index, 1 ); + + } + + return this; + + }, + + getObjectById: function ( id ) { + + return this.getObjectByProperty( 'id', id ); + + }, + + getObjectByName: function ( name ) { + + return this.getObjectByProperty( 'name', name ); + + }, + + getObjectByProperty: function ( name, value ) { + + if ( this[ name ] === value ) return this; + + for ( var i = 0, l = this.children.length; i < l; i ++ ) { + + var child = this.children[ i ]; + var object = child.getObjectByProperty( name, value ); + + if ( object !== undefined ) { + + return object; + + } + + } + + return undefined; + + }, + + getWorldPosition: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + return target.setFromMatrixPosition( this.matrixWorld ); + + }, + + getWorldQuaternion: function () { + + var position = new Vector3(); + var scale = new Vector3(); + + return function getWorldQuaternion( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); + target = new Quaternion(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, target, scale ); + + return target; + + }; + + }(), + + getWorldScale: function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + + return function getWorldScale( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, quaternion, target ); + + return target; + + }; + + }(), + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); + + }, + + raycast: function () {}, + + traverse: function ( callback ) { + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverse( callback ); + + } + + }, + + traverseVisible: function ( callback ) { + + if ( this.visible === false ) return; + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverseVisible( callback ); + + } + + }, + + traverseAncestors: function ( callback ) { + + var parent = this.parent; + + if ( parent !== null ) { + + callback( parent ); + + parent.traverseAncestors( callback ); + + } + + }, + + updateMatrix: function () { + + this.matrix.compose( this.position, this.quaternion, this.scale ); + + this.matrixWorldNeedsUpdate = true; + + }, + + updateMatrixWorld: function ( force ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.matrixWorldNeedsUpdate || force ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + this.matrixWorldNeedsUpdate = false; + + force = true; + + } + + // update children + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( force ); + + } + + }, + + updateWorldMatrix: function ( updateParents, updateChildren ) { + + var parent = this.parent; + + if ( updateParents === true && parent !== null ) { + + parent.updateWorldMatrix( true, false ); + + } + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + // update children + + if ( updateChildren === true ) { + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateWorldMatrix( false, true ); + + } + + } + + }, + + toJSON: function ( meta ) { + + // meta is a string when called from JSON.stringify + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + var output = {}; + + // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + if ( isRootObject ) { + + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {} + }; + + output.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON' + }; + + } + + // standard Object3D serialization + + var object = {}; + + object.uuid = this.uuid; + object.type = this.type; + + if ( this.name !== '' ) object.name = this.name; + if ( this.castShadow === true ) object.castShadow = true; + if ( this.receiveShadow === true ) object.receiveShadow = true; + if ( this.visible === false ) object.visible = false; + if ( this.frustumCulled === false ) object.frustumCulled = false; + if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; + if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; + + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + + if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; + + // object specific properties + + if ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode; + + // + + function serialize( library, element ) { + + if ( library[ element.uuid ] === undefined ) { + + library[ element.uuid ] = element.toJSON( meta ); + + } + + return element.uuid; + + } + + if ( this.isMesh || this.isLine || this.isPoints ) { + + object.geometry = serialize( meta.geometries, this.geometry ); + + var parameters = this.geometry.parameters; + + if ( parameters !== undefined && parameters.shapes !== undefined ) { + + var shapes = parameters.shapes; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + serialize( meta.shapes, shape ); + + } + + } else { + + serialize( meta.shapes, shapes ); + + } + + } + + } + + if ( this.material !== undefined ) { + + if ( Array.isArray( this.material ) ) { + + var uuids = []; + + for ( var i = 0, l = this.material.length; i < l; i ++ ) { + + uuids.push( serialize( meta.materials, this.material[ i ] ) ); + + } + + object.material = uuids; + + } else { + + object.material = serialize( meta.materials, this.material ); + + } + + } + + // + + if ( this.children.length > 0 ) { + + object.children = []; + + for ( var i = 0; i < this.children.length; i ++ ) { + + object.children.push( this.children[ i ].toJSON( meta ).object ); + + } + + } + + if ( isRootObject ) { + + var geometries = extractFromCache( meta.geometries ); + var materials = extractFromCache( meta.materials ); + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + var shapes = extractFromCache( meta.shapes ); + + if ( geometries.length > 0 ) output.geometries = geometries; + if ( materials.length > 0 ) output.materials = materials; + if ( textures.length > 0 ) output.textures = textures; + if ( images.length > 0 ) output.images = images; + if ( shapes.length > 0 ) output.shapes = shapes; + + } + + output.object = object; + + return output; + + // extract data from the cache hash + // remove metadata on each item + // and return as array + function extractFromCache( cache ) { + + var values = []; + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + return values; + + } + + }, + + clone: function ( recursive ) { + + return new this.constructor().copy( this, recursive ); + + }, + + copy: function ( source, recursive ) { + + if ( recursive === undefined ) recursive = true; + + this.name = source.name; + + this.up.copy( source.up ); + + this.position.copy( source.position ); + this.quaternion.copy( source.quaternion ); + this.scale.copy( source.scale ); + + this.matrix.copy( source.matrix ); + this.matrixWorld.copy( source.matrixWorld ); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + + this.layers.mask = source.layers.mask; + this.visible = source.visible; + + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + if ( recursive === true ) { + + for ( var i = 0; i < source.children.length; i ++ ) { + + var child = source.children[ i ]; + this.add( child.clone() ); + + } + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author bhouston / http://clara.io + */ + + var geometryId = 0; // Geometry uses even numbers as Id + + function Geometry() { + + Object.defineProperty( this, 'id', { value: geometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Geometry'; + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + + this.morphTargets = []; + this.morphNormals = []; + + this.skinWeights = []; + this.skinIndices = []; + + this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.elementsNeedUpdate = false; + this.verticesNeedUpdate = false; + this.uvsNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.lineDistancesNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Geometry, + + isGeometry: true, + + applyMatrix: function ( matrix ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { + + var vertex = this.vertices[ i ]; + vertex.applyMatrix4( matrix ); + + } + + for ( var i = 0, il = this.faces.length; i < il; i ++ ) { + + var face = this.faces[ i ]; + face.normal.applyMatrix3( normalMatrix ).normalize(); + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); + + } + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + this.verticesNeedUpdate = true; + this.normalsNeedUpdate = true; + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + fromBufferGeometry: function ( geometry ) { + + var scope = this; + + var indices = geometry.index !== null ? geometry.index.array : undefined; + var attributes = geometry.attributes; + + var positions = attributes.position.array; + var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; + var colors = attributes.color !== undefined ? attributes.color.array : undefined; + var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; + var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; + + if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; + + for ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) { + + scope.vertices.push( new Vector3().fromArray( positions, i ) ); + + if ( colors !== undefined ) { + + scope.colors.push( new Color().fromArray( colors, i ) ); + + } + + } + + function addFace( a, b, c, materialIndex ) { + + var vertexColors = ( colors === undefined ) ? [] : [ + scope.colors[ a ].clone(), + scope.colors[ b ].clone(), + scope.colors[ c ].clone() ]; + + var vertexNormals = ( normals === undefined ) ? [] : [ + new Vector3().fromArray( normals, a * 3 ), + new Vector3().fromArray( normals, b * 3 ), + new Vector3().fromArray( normals, c * 3 ) + ]; + + var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); + + scope.faces.push( face ); + + if ( uvs !== undefined ) { + + scope.faceVertexUvs[ 0 ].push( [ + new Vector2().fromArray( uvs, a * 2 ), + new Vector2().fromArray( uvs, b * 2 ), + new Vector2().fromArray( uvs, c * 2 ) + ] ); + + } + + if ( uvs2 !== undefined ) { + + scope.faceVertexUvs[ 1 ].push( [ + new Vector2().fromArray( uvs2, a * 2 ), + new Vector2().fromArray( uvs2, b * 2 ), + new Vector2().fromArray( uvs2, c * 2 ) + ] ); + + } + + } + + var groups = geometry.groups; + + if ( groups.length > 0 ) { + + for ( var i = 0; i < groups.length; i ++ ) { + + var group = groups[ i ]; + + var start = group.start; + var count = group.count; + + for ( var j = start, jl = start + count; j < jl; j += 3 ) { + + if ( indices !== undefined ) { + + addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); + + } else { + + addFace( j, j + 1, j + 2, group.materialIndex ); + + } + + } + + } + + } else { + + if ( indices !== undefined ) { + + for ( var i = 0; i < indices.length; i += 3 ) { + + addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + + } + + } else { + + for ( var i = 0; i < positions.length / 3; i += 3 ) { + + addFace( i, i + 1, i + 2 ); + + } + + } + + } + + this.computeFaceNormals(); + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + return this; + + }, + + center: function () { + + var offset = new Vector3(); + + return function center() { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( offset ).negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return this; + + }; + + }(), + + normalize: function () { + + this.computeBoundingSphere(); + + var center = this.boundingSphere.center; + var radius = this.boundingSphere.radius; + + var s = radius === 0 ? 1 : 1.0 / radius; + + var matrix = new Matrix4(); + matrix.set( + s, 0, 0, - s * center.x, + 0, s, 0, - s * center.y, + 0, 0, s, - s * center.z, + 0, 0, 0, 1 + ); + + this.applyMatrix( matrix ); + + return this; + + }, + + computeFaceNormals: function () { + + var cb = new Vector3(), ab = new Vector3(); + + for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { + + var face = this.faces[ f ]; + + var vA = this.vertices[ face.a ]; + var vB = this.vertices[ face.b ]; + var vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + cb.normalize(); + + face.normal.copy( cb ); + + } + + }, + + computeVertexNormals: function ( areaWeighted ) { + + if ( areaWeighted === undefined ) areaWeighted = true; + + var v, vl, f, fl, face, vertices; + + vertices = new Array( this.vertices.length ); + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ] = new Vector3(); + + } + + if ( areaWeighted ) { + + // vertex normals weighted by triangle areas + // http://www.iquilezles.org/www/articles/normals/normals.htm + + var vA, vB, vC; + var cb = new Vector3(), ab = new Vector3(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vA = this.vertices[ face.a ]; + vB = this.vertices[ face.b ]; + vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + vertices[ face.a ].add( cb ); + vertices[ face.b ].add( cb ); + vertices[ face.c ].add( cb ); + + } + + } else { + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vertices[ face.a ].add( face.normal ); + vertices[ face.b ].add( face.normal ); + vertices[ face.c ].add( face.normal ); + + } + + } + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ].normalize(); + + } + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( vertices[ face.a ] ); + vertexNormals[ 1 ].copy( vertices[ face.b ] ); + vertexNormals[ 2 ].copy( vertices[ face.c ] ); + + } else { + + vertexNormals[ 0 ] = vertices[ face.a ].clone(); + vertexNormals[ 1 ] = vertices[ face.b ].clone(); + vertexNormals[ 2 ] = vertices[ face.c ].clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeFlatVertexNormals: function () { + + var f, fl, face; + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( face.normal ); + vertexNormals[ 1 ].copy( face.normal ); + vertexNormals[ 2 ].copy( face.normal ); + + } else { + + vertexNormals[ 0 ] = face.normal.clone(); + vertexNormals[ 1 ] = face.normal.clone(); + vertexNormals[ 2 ] = face.normal.clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeMorphNormals: function () { + + var i, il, f, fl, face; + + // save original normals + // - create temp variables on first access + // otherwise just copy (for faster repeated calls) + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + if ( ! face.__originalFaceNormal ) { + + face.__originalFaceNormal = face.normal.clone(); + + } else { + + face.__originalFaceNormal.copy( face.normal ); + + } + + if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; + + for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { + + if ( ! face.__originalVertexNormals[ i ] ) { + + face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); + + } else { + + face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); + + } + + } + + } + + // use temp geometry to compute face and vertex normals for each morph + + var tmpGeo = new Geometry(); + tmpGeo.faces = this.faces; + + for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { + + // create on first access + + if ( ! this.morphNormals[ i ] ) { + + this.morphNormals[ i ] = {}; + this.morphNormals[ i ].faceNormals = []; + this.morphNormals[ i ].vertexNormals = []; + + var dstNormalsFace = this.morphNormals[ i ].faceNormals; + var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + faceNormal = new Vector3(); + vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; + + dstNormalsFace.push( faceNormal ); + dstNormalsVertex.push( vertexNormals ); + + } + + } + + var morphNormals = this.morphNormals[ i ]; + + // set vertices to morph target + + tmpGeo.vertices = this.morphTargets[ i ].vertices; + + // compute morph normals + + tmpGeo.computeFaceNormals(); + tmpGeo.computeVertexNormals(); + + // store morph normals + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + faceNormal = morphNormals.faceNormals[ f ]; + vertexNormals = morphNormals.vertexNormals[ f ]; + + faceNormal.copy( face.normal ); + + vertexNormals.a.copy( face.vertexNormals[ 0 ] ); + vertexNormals.b.copy( face.vertexNormals[ 1 ] ); + vertexNormals.c.copy( face.vertexNormals[ 2 ] ); + + } + + } + + // restore original normals + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + face.normal = face.__originalFaceNormal; + face.vertexNormals = face.__originalVertexNormals; + + } + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + this.boundingBox.setFromPoints( this.vertices ); + + }, + + computeBoundingSphere: function () { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + this.boundingSphere.setFromPoints( this.vertices ); + + }, + + merge: function ( geometry, matrix, materialIndexOffset ) { + + if ( ! ( geometry && geometry.isGeometry ) ) { + + console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + return; + + } + + var normalMatrix, + vertexOffset = this.vertices.length, + vertices1 = this.vertices, + vertices2 = geometry.vertices, + faces1 = this.faces, + faces2 = geometry.faces, + uvs1 = this.faceVertexUvs[ 0 ], + uvs2 = geometry.faceVertexUvs[ 0 ], + colors1 = this.colors, + colors2 = geometry.colors; + + if ( materialIndexOffset === undefined ) materialIndexOffset = 0; + + if ( matrix !== undefined ) { + + normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + } + + // vertices + + for ( var i = 0, il = vertices2.length; i < il; i ++ ) { + + var vertex = vertices2[ i ]; + + var vertexCopy = vertex.clone(); + + if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); + + vertices1.push( vertexCopy ); + + } + + // colors + + for ( var i = 0, il = colors2.length; i < il; i ++ ) { + + colors1.push( colors2[ i ].clone() ); + + } + + // faces + + for ( i = 0, il = faces2.length; i < il; i ++ ) { + + var face = faces2[ i ], faceCopy, normal, color, + faceVertexNormals = face.vertexNormals, + faceVertexColors = face.vertexColors; + + faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); + faceCopy.normal.copy( face.normal ); + + if ( normalMatrix !== undefined ) { + + faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); + + } + + for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { + + normal = faceVertexNormals[ j ].clone(); + + if ( normalMatrix !== undefined ) { + + normal.applyMatrix3( normalMatrix ).normalize(); + + } + + faceCopy.vertexNormals.push( normal ); + + } + + faceCopy.color.copy( face.color ); + + for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { + + color = faceVertexColors[ j ]; + faceCopy.vertexColors.push( color.clone() ); + + } + + faceCopy.materialIndex = face.materialIndex + materialIndexOffset; + + faces1.push( faceCopy ); + + } + + // uvs + + for ( i = 0, il = uvs2.length; i < il; i ++ ) { + + var uv = uvs2[ i ], uvCopy = []; + + if ( uv === undefined ) { + + continue; + + } + + for ( var j = 0, jl = uv.length; j < jl; j ++ ) { + + uvCopy.push( uv[ j ].clone() ); + + } + + uvs1.push( uvCopy ); + + } + + }, + + mergeMesh: function ( mesh ) { + + if ( ! ( mesh && mesh.isMesh ) ) { + + console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + return; + + } + + if ( mesh.matrixAutoUpdate ) mesh.updateMatrix(); + + this.merge( mesh.geometry, mesh.matrix ); + + }, + + /* + * Checks for duplicate vertices with hashmap. + * Duplicated vertices are removed + * and faces' vertices are updated. + */ + + mergeVertices: function () { + + var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) + var unique = [], changes = []; + + var v, key; + var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 + var precision = Math.pow( 10, precisionPoints ); + var i, il, face; + var indices, j, jl; + + for ( i = 0, il = this.vertices.length; i < il; i ++ ) { + + v = this.vertices[ i ]; + key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); + + if ( verticesMap[ key ] === undefined ) { + + verticesMap[ key ] = i; + unique.push( this.vertices[ i ] ); + changes[ i ] = unique.length - 1; + + } else { + + //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); + changes[ i ] = changes[ verticesMap[ key ] ]; + + } + + } + + + // if faces are completely degenerate after merging vertices, we + // have to remove them from the geometry. + var faceIndicesToRemove = []; + + for ( i = 0, il = this.faces.length; i < il; i ++ ) { + + face = this.faces[ i ]; + + face.a = changes[ face.a ]; + face.b = changes[ face.b ]; + face.c = changes[ face.c ]; + + indices = [ face.a, face.b, face.c ]; + + // if any duplicate vertices are found in a Face3 + // we have to remove the face as nothing can be saved + for ( var n = 0; n < 3; n ++ ) { + + if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { + + faceIndicesToRemove.push( i ); + break; + + } + + } + + } + + for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { + + var idx = faceIndicesToRemove[ i ]; + + this.faces.splice( idx, 1 ); + + for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { + + this.faceVertexUvs[ j ].splice( idx, 1 ); + + } + + } + + // Use unique set of vertices + + var diff = this.vertices.length - unique.length; + this.vertices = unique; + return diff; + + }, + + setFromPoints: function ( points ) { + + this.vertices = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return this; + + }, + + sortFacesByMaterialIndex: function () { + + var faces = this.faces; + var length = faces.length; + + // tag faces + + for ( var i = 0; i < length; i ++ ) { + + faces[ i ]._id = i; + + } + + // sort faces + + function materialIndexSort( a, b ) { + + return a.materialIndex - b.materialIndex; + + } + + faces.sort( materialIndexSort ); + + // sort uvs + + var uvs1 = this.faceVertexUvs[ 0 ]; + var uvs2 = this.faceVertexUvs[ 1 ]; + + var newUvs1, newUvs2; + + if ( uvs1 && uvs1.length === length ) newUvs1 = []; + if ( uvs2 && uvs2.length === length ) newUvs2 = []; + + for ( var i = 0; i < length; i ++ ) { + + var id = faces[ i ]._id; + + if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); + if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); + + } + + if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; + if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Geometry', + generator: 'Geometry.toJSON' + } + }; + + // standard Geometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + var vertices = []; + + for ( var i = 0; i < this.vertices.length; i ++ ) { + + var vertex = this.vertices[ i ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + var faces = []; + var normals = []; + var normalsHash = {}; + var colors = []; + var colorsHash = {}; + var uvs = []; + var uvsHash = {}; + + for ( var i = 0; i < this.faces.length; i ++ ) { + + var face = this.faces[ i ]; + + var hasMaterial = true; + var hasFaceUv = false; // deprecated + var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; + var hasFaceNormal = face.normal.length() > 0; + var hasFaceVertexNormal = face.vertexNormals.length > 0; + var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; + var hasFaceVertexColor = face.vertexColors.length > 0; + + var faceType = 0; + + faceType = setBit( faceType, 0, 0 ); // isQuad + faceType = setBit( faceType, 1, hasMaterial ); + faceType = setBit( faceType, 2, hasFaceUv ); + faceType = setBit( faceType, 3, hasFaceVertexUv ); + faceType = setBit( faceType, 4, hasFaceNormal ); + faceType = setBit( faceType, 5, hasFaceVertexNormal ); + faceType = setBit( faceType, 6, hasFaceColor ); + faceType = setBit( faceType, 7, hasFaceVertexColor ); + + faces.push( faceType ); + faces.push( face.a, face.b, face.c ); + faces.push( face.materialIndex ); + + if ( hasFaceVertexUv ) { + + var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; + + faces.push( + getUvIndex( faceVertexUvs[ 0 ] ), + getUvIndex( faceVertexUvs[ 1 ] ), + getUvIndex( faceVertexUvs[ 2 ] ) + ); + + } + + if ( hasFaceNormal ) { + + faces.push( getNormalIndex( face.normal ) ); + + } + + if ( hasFaceVertexNormal ) { + + var vertexNormals = face.vertexNormals; + + faces.push( + getNormalIndex( vertexNormals[ 0 ] ), + getNormalIndex( vertexNormals[ 1 ] ), + getNormalIndex( vertexNormals[ 2 ] ) + ); + + } + + if ( hasFaceColor ) { + + faces.push( getColorIndex( face.color ) ); + + } + + if ( hasFaceVertexColor ) { + + var vertexColors = face.vertexColors; + + faces.push( + getColorIndex( vertexColors[ 0 ] ), + getColorIndex( vertexColors[ 1 ] ), + getColorIndex( vertexColors[ 2 ] ) + ); + + } + + } + + function setBit( value, position, enabled ) { + + return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); + + } + + function getNormalIndex( normal ) { + + var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); + + if ( normalsHash[ hash ] !== undefined ) { + + return normalsHash[ hash ]; + + } + + normalsHash[ hash ] = normals.length / 3; + normals.push( normal.x, normal.y, normal.z ); + + return normalsHash[ hash ]; + + } + + function getColorIndex( color ) { + + var hash = color.r.toString() + color.g.toString() + color.b.toString(); + + if ( colorsHash[ hash ] !== undefined ) { + + return colorsHash[ hash ]; + + } + + colorsHash[ hash ] = colors.length; + colors.push( color.getHex() ); + + return colorsHash[ hash ]; + + } + + function getUvIndex( uv ) { + + var hash = uv.x.toString() + uv.y.toString(); + + if ( uvsHash[ hash ] !== undefined ) { + + return uvsHash[ hash ]; + + } + + uvsHash[ hash ] = uvs.length / 2; + uvs.push( uv.x, uv.y ); + + return uvsHash[ hash ]; + + } + + data.data = {}; + + data.data.vertices = vertices; + data.data.normals = normals; + if ( colors.length > 0 ) data.data.colors = colors; + if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility + data.data.faces = faces; + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new Geometry().copy( this ); + + }, + + copy: function ( source ) { + + var i, il, j, jl, k, kl; + + // reset + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + this.morphTargets = []; + this.morphNormals = []; + this.skinWeights = []; + this.skinIndices = []; + this.lineDistances = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // vertices + + var vertices = source.vertices; + + for ( i = 0, il = vertices.length; i < il; i ++ ) { + + this.vertices.push( vertices[ i ].clone() ); + + } + + // colors + + var colors = source.colors; + + for ( i = 0, il = colors.length; i < il; i ++ ) { + + this.colors.push( colors[ i ].clone() ); + + } + + // faces + + var faces = source.faces; + + for ( i = 0, il = faces.length; i < il; i ++ ) { + + this.faces.push( faces[ i ].clone() ); + + } + + // face vertex uvs + + for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { + + var faceVertexUvs = source.faceVertexUvs[ i ]; + + if ( this.faceVertexUvs[ i ] === undefined ) { + + this.faceVertexUvs[ i ] = []; + + } + + for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { + + var uvs = faceVertexUvs[ j ], uvsCopy = []; + + for ( k = 0, kl = uvs.length; k < kl; k ++ ) { + + var uv = uvs[ k ]; + + uvsCopy.push( uv.clone() ); + + } + + this.faceVertexUvs[ i ].push( uvsCopy ); + + } + + } + + // morph targets + + var morphTargets = source.morphTargets; + + for ( i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = {}; + morphTarget.name = morphTargets[ i ].name; + + // vertices + + if ( morphTargets[ i ].vertices !== undefined ) { + + morphTarget.vertices = []; + + for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { + + morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); + + } + + } + + // normals + + if ( morphTargets[ i ].normals !== undefined ) { + + morphTarget.normals = []; + + for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { + + morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); + + } + + } + + this.morphTargets.push( morphTarget ); + + } + + // morph normals + + var morphNormals = source.morphNormals; + + for ( i = 0, il = morphNormals.length; i < il; i ++ ) { + + var morphNormal = {}; + + // vertex normals + + if ( morphNormals[ i ].vertexNormals !== undefined ) { + + morphNormal.vertexNormals = []; + + for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { + + var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; + var destVertexNormal = {}; + + destVertexNormal.a = srcVertexNormal.a.clone(); + destVertexNormal.b = srcVertexNormal.b.clone(); + destVertexNormal.c = srcVertexNormal.c.clone(); + + morphNormal.vertexNormals.push( destVertexNormal ); + + } + + } + + // face normals + + if ( morphNormals[ i ].faceNormals !== undefined ) { + + morphNormal.faceNormals = []; + + for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { + + morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); + + } + + } + + this.morphNormals.push( morphNormal ); + + } + + // skin weights + + var skinWeights = source.skinWeights; + + for ( i = 0, il = skinWeights.length; i < il; i ++ ) { + + this.skinWeights.push( skinWeights[ i ].clone() ); + + } + + // skin indices + + var skinIndices = source.skinIndices; + + for ( i = 0, il = skinIndices.length; i < il; i ++ ) { + + this.skinIndices.push( skinIndices[ i ].clone() ); + + } + + // line distances + + var lineDistances = source.lineDistances; + + for ( i = 0, il = lineDistances.length; i < il; i ++ ) { + + this.lineDistances.push( lineDistances[ i ] ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // update flags + + this.elementsNeedUpdate = source.elementsNeedUpdate; + this.verticesNeedUpdate = source.verticesNeedUpdate; + this.uvsNeedUpdate = source.uvsNeedUpdate; + this.normalsNeedUpdate = source.normalsNeedUpdate; + this.colorsNeedUpdate = source.colorsNeedUpdate; + this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; + this.groupsNeedUpdate = source.groupsNeedUpdate; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferAttribute( array, itemSize, normalized ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.name = ''; + + this.array = array; + this.itemSize = itemSize; + this.count = array !== undefined ? array.length / itemSize : 0; + this.normalized = normalized === true; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( BufferAttribute.prototype, { + + isBufferAttribute: true, + + onUploadCallback: function () {}, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.itemSize : 0; + this.array = array; + + return this; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.name = source.name; + this.array = new source.array.constructor( source.array ); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for ( var i = 0, l = this.itemSize; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + copyArray: function ( array ) { + + this.array.set( array ); + + return this; + + }, + + copyColorsArray: function ( colors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = colors.length; i < l; i ++ ) { + + var color = colors[ i ]; + + if ( color === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); + color = new Color(); + + } + + array[ offset ++ ] = color.r; + array[ offset ++ ] = color.g; + array[ offset ++ ] = color.b; + + } + + return this; + + }, + + copyVector2sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); + vector = new Vector2(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + + } + + return this; + + }, + + copyVector3sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); + vector = new Vector3(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + + } + + return this; + + }, + + copyVector4sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); + vector = new Vector4(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + array[ offset ++ ] = vector.w; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + getX: function ( index ) { + + return this.array[ index * this.itemSize ]; + + }, + + setX: function ( index, x ) { + + this.array[ index * this.itemSize ] = x; + + return this; + + }, + + getY: function ( index ) { + + return this.array[ index * this.itemSize + 1 ]; + + }, + + setY: function ( index, y ) { + + this.array[ index * this.itemSize + 1 ] = y; + + return this; + + }, + + getZ: function ( index ) { + + return this.array[ index * this.itemSize + 2 ]; + + }, + + setZ: function ( index, z ) { + + this.array[ index * this.itemSize + 2 ] = z; + + return this; + + }, + + getW: function ( index ) { + + return this.array[ index * this.itemSize + 3 ]; + + }, + + setW: function ( index, w ) { + + this.array[ index * this.itemSize + 3 ] = w; + + return this; + + }, + + setXY: function ( index, x, y ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + this.array[ index + 3 ] = w; + + return this; + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + }, + + clone: function () { + + return new this.constructor( this.array, this.itemSize ).copy( this ); + + } + + } ); + + // + + function Int8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); + + } + + Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; + + + function Uint8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); + + } + + Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; + + + function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); + + } + + Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; + + + function Int16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); + + } + + Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; + + + function Uint16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); + + } + + Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; + + + function Int32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); + + } + + Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; + + + function Uint32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); + + } + + Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; + + + function Float32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); + + } + + Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; + + + function Float64BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); + + } + + Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectGeometry() { + + this.vertices = []; + this.normals = []; + this.colors = []; + this.uvs = []; + this.uvs2 = []; + + this.groups = []; + + this.morphTargets = {}; + + this.skinWeights = []; + this.skinIndices = []; + + // this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.verticesNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.uvsNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Object.assign( DirectGeometry.prototype, { + + computeGroups: function ( geometry ) { + + var group; + var groups = []; + var materialIndex = undefined; + + var faces = geometry.faces; + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + // materials + + if ( face.materialIndex !== materialIndex ) { + + materialIndex = face.materialIndex; + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + group = { + start: i * 3, + materialIndex: materialIndex + }; + + } + + } + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + this.groups = groups; + + }, + + fromGeometry: function ( geometry ) { + + var faces = geometry.faces; + var vertices = geometry.vertices; + var faceVertexUvs = geometry.faceVertexUvs; + + var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; + var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; + + // morphs + + var morphTargets = geometry.morphTargets; + var morphTargetsLength = morphTargets.length; + + var morphTargetsPosition; + + if ( morphTargetsLength > 0 ) { + + morphTargetsPosition = []; + + for ( var i = 0; i < morphTargetsLength; i ++ ) { + + morphTargetsPosition[ i ] = { + name: morphTargets[ i ].name, + data: [] + }; + + } + + this.morphTargets.position = morphTargetsPosition; + + } + + var morphNormals = geometry.morphNormals; + var morphNormalsLength = morphNormals.length; + + var morphTargetsNormal; + + if ( morphNormalsLength > 0 ) { + + morphTargetsNormal = []; + + for ( var i = 0; i < morphNormalsLength; i ++ ) { + + morphTargetsNormal[ i ] = { + name: morphNormals[ i ].name, + data: [] + }; + + } + + this.morphTargets.normal = morphTargetsNormal; + + } + + // skins + + var skinIndices = geometry.skinIndices; + var skinWeights = geometry.skinWeights; + + var hasSkinIndices = skinIndices.length === vertices.length; + var hasSkinWeights = skinWeights.length === vertices.length; + + // + + if ( vertices.length > 0 && faces.length === 0 ) { + + console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); + + } + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); + + } else { + + var normal = face.normal; + + this.normals.push( normal, normal, normal ); + + } + + var vertexColors = face.vertexColors; + + if ( vertexColors.length === 3 ) { + + this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); + + } else { + + var color = face.color; + + this.colors.push( color, color, color ); + + } + + if ( hasFaceVertexUv === true ) { + + var vertexUvs = faceVertexUvs[ 0 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); + + this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + if ( hasFaceVertexUv2 === true ) { + + var vertexUvs = faceVertexUvs[ 1 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); + + this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + // morphs + + for ( var j = 0; j < morphTargetsLength; j ++ ) { + + var morphTarget = morphTargets[ j ].vertices; + + morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); + + } + + for ( var j = 0; j < morphNormalsLength; j ++ ) { + + var morphNormal = morphNormals[ j ].vertexNormals[ i ]; + + morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); + + } + + // skins + + if ( hasSkinIndices ) { + + this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); + + } + + if ( hasSkinWeights ) { + + this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); + + } + + } + + this.computeGroups( geometry ); + + this.verticesNeedUpdate = geometry.verticesNeedUpdate; + this.normalsNeedUpdate = geometry.normalsNeedUpdate; + this.colorsNeedUpdate = geometry.colorsNeedUpdate; + this.uvsNeedUpdate = geometry.uvsNeedUpdate; + this.groupsNeedUpdate = geometry.groupsNeedUpdate; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function arrayMax( array ) { + + if ( array.length === 0 ) return - Infinity; + + var max = array[ 0 ]; + + for ( var i = 1, l = array.length; i < l; ++ i ) { + + if ( array[ i ] > max ) max = array[ i ]; + + } + + return max; + + } + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id + + function BufferGeometry() { + + Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'BufferGeometry'; + + this.index = null; + this.attributes = {}; + + this.morphAttributes = {}; + + this.groups = []; + + this.boundingBox = null; + this.boundingSphere = null; + + this.drawRange = { start: 0, count: Infinity }; + + this.userData = {}; + + } + + BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: BufferGeometry, + + isBufferGeometry: true, + + getIndex: function () { + + return this.index; + + }, + + setIndex: function ( index ) { + + if ( Array.isArray( index ) ) { + + this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + + } else { + + this.index = index; + + } + + }, + + addAttribute: function ( name, attribute ) { + + if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { + + console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + + return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); + + } + + if ( name === 'index' ) { + + console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); + this.setIndex( attribute ); + + return this; + + } + + this.attributes[ name ] = attribute; + + return this; + + }, + + getAttribute: function ( name ) { + + return this.attributes[ name ]; + + }, + + removeAttribute: function ( name ) { + + delete this.attributes[ name ]; + + return this; + + }, + + addGroup: function ( start, count, materialIndex ) { + + this.groups.push( { + + start: start, + count: count, + materialIndex: materialIndex !== undefined ? materialIndex : 0 + + } ); + + }, + + clearGroups: function () { + + this.groups = []; + + }, + + setDrawRange: function ( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + + }, + + applyMatrix: function ( matrix ) { + + var position = this.attributes.position; + + if ( position !== undefined ) { + + matrix.applyToBufferAttribute( position ); + position.needsUpdate = true; + + } + + var normal = this.attributes.normal; + + if ( normal !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + normalMatrix.applyToBufferAttribute( normal ); + normal.needsUpdate = true; + + } + + var tangent = this.attributes.tangent; + + if ( tangent !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + // Tangent is vec4, but the '.w' component is a sign value (+1/-1). + normalMatrix.applyToBufferAttribute( tangent ); + tangent.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + center: function () { + + var offset = new Vector3(); + + return function center() { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( offset ).negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return this; + + }; + + }(), + + setFromObject: function ( object ) { + + // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); + + var geometry = object.geometry; + + if ( object.isPoints || object.isLine ) { + + var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); + var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); + + this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); + this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); + + if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { + + var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); + + this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + } else if ( object.isMesh ) { + + if ( geometry && geometry.isGeometry ) { + + this.fromGeometry( geometry ); + + } + + } + + return this; + + }, + + setFromPoints: function ( points ) { + + var position = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + position.push( point.x, point.y, point.z || 0 ); + + } + + this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + + return this; + + }, + + updateFromObject: function ( object ) { + + var geometry = object.geometry; + + if ( object.isMesh ) { + + var direct = geometry.__directGeometry; + + if ( geometry.elementsNeedUpdate === true ) { + + direct = undefined; + geometry.elementsNeedUpdate = false; + + } + + if ( direct === undefined ) { + + return this.fromGeometry( geometry ); + + } + + direct.verticesNeedUpdate = geometry.verticesNeedUpdate; + direct.normalsNeedUpdate = geometry.normalsNeedUpdate; + direct.colorsNeedUpdate = geometry.colorsNeedUpdate; + direct.uvsNeedUpdate = geometry.uvsNeedUpdate; + direct.groupsNeedUpdate = geometry.groupsNeedUpdate; + + geometry.verticesNeedUpdate = false; + geometry.normalsNeedUpdate = false; + geometry.colorsNeedUpdate = false; + geometry.uvsNeedUpdate = false; + geometry.groupsNeedUpdate = false; + + geometry = direct; + + } + + var attribute; + + if ( geometry.verticesNeedUpdate === true ) { + + attribute = this.attributes.position; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.vertices ); + attribute.needsUpdate = true; + + } + + geometry.verticesNeedUpdate = false; + + } + + if ( geometry.normalsNeedUpdate === true ) { + + attribute = this.attributes.normal; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.normals ); + attribute.needsUpdate = true; + + } + + geometry.normalsNeedUpdate = false; + + } + + if ( geometry.colorsNeedUpdate === true ) { + + attribute = this.attributes.color; + + if ( attribute !== undefined ) { + + attribute.copyColorsArray( geometry.colors ); + attribute.needsUpdate = true; + + } + + geometry.colorsNeedUpdate = false; + + } + + if ( geometry.uvsNeedUpdate ) { + + attribute = this.attributes.uv; + + if ( attribute !== undefined ) { + + attribute.copyVector2sArray( geometry.uvs ); + attribute.needsUpdate = true; + + } + + geometry.uvsNeedUpdate = false; + + } + + if ( geometry.lineDistancesNeedUpdate ) { + + attribute = this.attributes.lineDistance; + + if ( attribute !== undefined ) { + + attribute.copyArray( geometry.lineDistances ); + attribute.needsUpdate = true; + + } + + geometry.lineDistancesNeedUpdate = false; + + } + + if ( geometry.groupsNeedUpdate ) { + + geometry.computeGroups( object.geometry ); + this.groups = geometry.groups; + + geometry.groupsNeedUpdate = false; + + } + + return this; + + }, + + fromGeometry: function ( geometry ) { + + geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); + + return this.fromDirectGeometry( geometry.__directGeometry ); + + }, + + fromDirectGeometry: function ( geometry ) { + + var positions = new Float32Array( geometry.vertices.length * 3 ); + this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); + + if ( geometry.normals.length > 0 ) { + + var normals = new Float32Array( geometry.normals.length * 3 ); + this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); + + } + + if ( geometry.colors.length > 0 ) { + + var colors = new Float32Array( geometry.colors.length * 3 ); + this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + var uvs = new Float32Array( geometry.uvs.length * 2 ); + this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); + + } + + if ( geometry.uvs2.length > 0 ) { + + var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); + this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); + + } + + // groups + + this.groups = geometry.groups; + + // morphs + + for ( var name in geometry.morphTargets ) { + + var array = []; + var morphTargets = geometry.morphTargets[ name ]; + + for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { + + var morphTarget = morphTargets[ i ]; + + var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); + attribute.name = morphTarget.name; + + array.push( attribute.copyVector3sArray( morphTarget.data ) ); + + } + + this.morphAttributes[ name ] = array; + + } + + // skinning + + if ( geometry.skinIndices.length > 0 ) { + + var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); + this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); + + } + + if ( geometry.skinWeights.length > 0 ) { + + var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); + this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); + + } + + // + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + return this; + + }, + + computeBoundingBox: function () { + + var box = new Box3(); + + return function computeBoundingBox() { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position !== undefined ) { + + this.boundingBox.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + box.setFromBufferAttribute( morphAttribute ); + + this.boundingBox.expandByPoint( box.min ); + this.boundingBox.expandByPoint( box.max ); + + } + + } + + } else { + + this.boundingBox.makeEmpty(); + + } + + if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + + } + + }; + + }(), + + computeBoundingSphere: function () { + + var box = new Box3(); + var boxMorphTargets = new Box3(); + var vector = new Vector3(); + + return function computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position ) { + + // first, find the center of the bounding sphere + + var center = this.boundingSphere.center; + + box.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + boxMorphTargets.setFromBufferAttribute( morphAttribute ); + + box.expandByPoint( boxMorphTargets.min ); + box.expandByPoint( boxMorphTargets.max ); + + } + + } + + box.getCenter( center ); + + // second, try to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + var maxRadiusSq = 0; + + for ( var i = 0, il = position.count; i < il; i ++ ) { + + vector.fromBufferAttribute( position, i ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + + for ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) { + + vector.fromBufferAttribute( morphAttribute, i ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + } + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + }; + + }(), + + computeFaceNormals: function () { + + // backwards compatibility + + }, + + computeVertexNormals: function () { + + var index = this.index; + var attributes = this.attributes; + + if ( attributes.position ) { + + var positions = attributes.position.array; + + if ( attributes.normal === undefined ) { + + this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); + + } else { + + // reset existing normals to zero + + var array = attributes.normal.array; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + array[ i ] = 0; + + } + + } + + var normals = attributes.normal.array; + + var vA, vB, vC; + var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + var cb = new Vector3(), ab = new Vector3(); + + // indexed elements + + if ( index ) { + + var indices = index.array; + + for ( var i = 0, il = index.count; i < il; i += 3 ) { + + vA = indices[ i + 0 ] * 3; + vB = indices[ i + 1 ] * 3; + vC = indices[ i + 2 ] * 3; + + pA.fromArray( positions, vA ); + pB.fromArray( positions, vB ); + pC.fromArray( positions, vC ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ vA ] += cb.x; + normals[ vA + 1 ] += cb.y; + normals[ vA + 2 ] += cb.z; + + normals[ vB ] += cb.x; + normals[ vB + 1 ] += cb.y; + normals[ vB + 2 ] += cb.z; + + normals[ vC ] += cb.x; + normals[ vC + 1 ] += cb.y; + normals[ vC + 2 ] += cb.z; + + } + + } else { + + // non-indexed elements (unconnected triangle soup) + + for ( var i = 0, il = positions.length; i < il; i += 9 ) { + + pA.fromArray( positions, i ); + pB.fromArray( positions, i + 3 ); + pC.fromArray( positions, i + 6 ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ i ] = cb.x; + normals[ i + 1 ] = cb.y; + normals[ i + 2 ] = cb.z; + + normals[ i + 3 ] = cb.x; + normals[ i + 4 ] = cb.y; + normals[ i + 5 ] = cb.z; + + normals[ i + 6 ] = cb.x; + normals[ i + 7 ] = cb.y; + normals[ i + 8 ] = cb.z; + + } + + } + + this.normalizeNormals(); + + attributes.normal.needsUpdate = true; + + } + + }, + + merge: function ( geometry, offset ) { + + if ( ! ( geometry && geometry.isBufferGeometry ) ) { + + console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + return; + + } + + if ( offset === undefined ) { + + offset = 0; + + console.warn( + 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.' + ); + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + if ( geometry.attributes[ key ] === undefined ) continue; + + var attribute1 = attributes[ key ]; + var attributeArray1 = attribute1.array; + + var attribute2 = geometry.attributes[ key ]; + var attributeArray2 = attribute2.array; + + var attributeSize = attribute2.itemSize; + + for ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) { + + attributeArray1[ j ] = attributeArray2[ i ]; + + } + + } + + return this; + + }, + + normalizeNormals: function () { + + var vector = new Vector3(); + + return function normalizeNormals() { + + var normals = this.attributes.normal; + + for ( var i = 0, il = normals.count; i < il; i ++ ) { + + vector.x = normals.getX( i ); + vector.y = normals.getY( i ); + vector.z = normals.getZ( i ); + + vector.normalize(); + + normals.setXYZ( i, vector.x, vector.y, vector.z ); + + } + + }; + + }(), + + toNonIndexed: function () { + + function convertBufferAttribute( attribute, indices ) { + + var array = attribute.array; + var itemSize = attribute.itemSize; + + var array2 = new array.constructor( indices.length * itemSize ); + + var index = 0, index2 = 0; + + for ( var i = 0, l = indices.length; i < l; i ++ ) { + + index = indices[ i ] * itemSize; + + for ( var j = 0; j < itemSize; j ++ ) { + + array2[ index2 ++ ] = array[ index ++ ]; + + } + + } + + return new BufferAttribute( array2, itemSize ); + + } + + // + + if ( this.index === null ) { + + console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); + return this; + + } + + var geometry2 = new BufferGeometry(); + + var indices = this.index.array; + var attributes = this.attributes; + + // attributes + + for ( var name in attributes ) { + + var attribute = attributes[ name ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + geometry2.addAttribute( name, newAttribute ); + + } + + // morph attributes + + var morphAttributes = this.morphAttributes; + + for ( name in morphAttributes ) { + + var morphArray = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( var i = 0, il = morphAttribute.length; i < il; i ++ ) { + + var attribute = morphAttribute[ i ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + morphArray.push( newAttribute ); + + } + + geometry2.morphAttributes[ name ] = morphArray; + + } + + // groups + + var groups = this.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + geometry2.addGroup( group.start, group.count, group.materialIndex ); + + } + + return geometry2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; + + // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + data.data = { attributes: {} }; + + var index = this.index; + + if ( index !== null ) { + + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call( index.array ) + }; + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + + var attributeData = { + itemSize: attribute.itemSize, + type: attribute.array.constructor.name, + array: Array.prototype.slice.call( attribute.array ), + normalized: attribute.normalized + }; + + if ( attribute.name !== '' ) attributeData.name = attribute.name; + + data.data.attributes[ key ] = attributeData; + + } + + var morphAttributes = {}; + var hasMorphAttributes = false; + + for ( var key in this.morphAttributes ) { + + var attributeArray = this.morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + + var attributeData = { + itemSize: attribute.itemSize, + type: attribute.array.constructor.name, + array: Array.prototype.slice.call( attribute.array ), + normalized: attribute.normalized + }; + + if ( attribute.name !== '' ) attributeData.name = attribute.name; + + array.push( attributeData ); + + } + + if ( array.length > 0 ) { + + morphAttributes[ key ] = array; + + hasMorphAttributes = true; + + } + + } + + if ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes; + + var groups = this.groups; + + if ( groups.length > 0 ) { + + data.data.groups = JSON.parse( JSON.stringify( groups ) ); + + } + + var boundingSphere = this.boundingSphere; + + if ( boundingSphere !== null ) { + + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + + } + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new BufferGeometry().copy( this ); + + }, + + copy: function ( source ) { + + var name, i, l; + + // reset + + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // index + + var index = source.index; + + if ( index !== null ) { + + this.setIndex( index.clone() ); + + } + + // attributes + + var attributes = source.attributes; + + for ( name in attributes ) { + + var attribute = attributes[ name ]; + this.addAttribute( name, attribute.clone() ); + + } + + // morph attributes + + var morphAttributes = source.morphAttributes; + + for ( name in morphAttributes ) { + + var array = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { + + array.push( morphAttribute[ i ].clone() ); + + } + + this.morphAttributes[ name ] = array; + + } + + // groups + + var groups = source.groups; + + for ( i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + this.addGroup( group.start, group.count, group.materialIndex ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // draw range + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + + // user data + + this.userData = source.userData; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // BoxGeometry + + function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + Geometry.call( this ); + + this.type = 'BoxGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); + this.mergeVertices(); + + } + + BoxGeometry.prototype = Object.create( Geometry.prototype ); + BoxGeometry.prototype.constructor = BoxGeometry; + + // BoxBufferGeometry + + function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + BufferGeometry.call( this ); + + this.type = 'BoxBufferGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + var scope = this; + + width = width || 1; + height = height || 1; + depth = depth || 1; + + // segments + + widthSegments = Math.floor( widthSegments ) || 1; + heightSegments = Math.floor( heightSegments ) || 1; + depthSegments = Math.floor( depthSegments ) || 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var numberOfVertices = 0; + var groupStart = 0; + + // build each side of the box geometry + + buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px + buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx + buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py + buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny + buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz + buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + + var segmentWidth = width / gridX; + var segmentHeight = height / gridY; + + var widthHalf = width / 2; + var heightHalf = height / 2; + var depthHalf = depth / 2; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var vertexCounter = 0; + var groupCount = 0; + + var ix, iy; + + var vector = new Vector3(); + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segmentHeight - heightHalf; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segmentWidth - widthHalf; + + // set values to correct vector component + + vector[ u ] = x * udir; + vector[ v ] = y * vdir; + vector[ w ] = depthHalf; + + // now apply vector to vertex buffer + + vertices.push( vector.x, vector.y, vector.z ); + + // set values to correct vector component + + vector[ u ] = 0; + vector[ v ] = 0; + vector[ w ] = depth > 0 ? 1 : - 1; + + // now apply vector to normal buffer + + normals.push( vector.x, vector.y, vector.z ); + + // uvs + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + // counters + + vertexCounter += 1; + + } + + } + + // indices + + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = numberOfVertices + ix + gridX1 * iy; + var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); + var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // increase counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, materialIndex ); + + // calculate new start value for groups + + groupStart += groupCount; + + // update total number of vertices + + numberOfVertices += vertexCounter; + + } + + } + + BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PlaneGeometry + + function PlaneGeometry( width, height, widthSegments, heightSegments ) { + + Geometry.call( this ); + + this.type = 'PlaneGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + this.mergeVertices(); + + } + + PlaneGeometry.prototype = Object.create( Geometry.prototype ); + PlaneGeometry.prototype.constructor = PlaneGeometry; + + // PlaneBufferGeometry + + function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { + + BufferGeometry.call( this ); + + this.type = 'PlaneBufferGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + width = width || 1; + height = height || 1; + + var width_half = width / 2; + var height_half = height / 2; + + var gridX = Math.floor( widthSegments ) || 1; + var gridY = Math.floor( heightSegments ) || 1; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var segment_width = width / gridX; + var segment_height = height / gridY; + + var ix, iy; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segment_height - height_half; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segment_width - width_half; + + vertices.push( x, - y, 0 ); + + normals.push( 0, 0, 1 ); + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + } + + } + + // indices + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = ix + gridX1 * iy; + var b = ix + gridX1 * ( iy + 1 ); + var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + var materialId = 0; + + function Material() { + + Object.defineProperty( this, 'id', { value: materialId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Material'; + + this.fog = true; + this.lights = true; + + this.blending = NormalBlending; + this.side = FrontSide; + this.flatShading = false; + this.vertexTangents = false; + this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors + + this.opacity = 1; + this.transparent = false; + + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + + this.shadowSide = null; + + this.colorWrite = true; + + this.precision = null; // override the renderer's default precision for this material + + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + + this.dithering = false; + + this.alphaTest = 0; + this.premultipliedAlpha = false; + + this.visible = true; + + this.userData = {}; + + this.needsUpdate = true; + + } + + Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Material, + + isMaterial: true, + + onBeforeCompile: function () {}, + + setValues: function ( values ) { + + if ( values === undefined ) return; + + for ( var key in values ) { + + var newValue = values[ key ]; + + if ( newValue === undefined ) { + + console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + continue; + + } + + // for backward compatability if shading is set in the constructor + if ( key === 'shading' ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( newValue === FlatShading ) ? true : false; + continue; + + } + + var currentValue = this[ key ]; + + if ( currentValue === undefined ) { + + console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); + continue; + + } + + if ( currentValue && currentValue.isColor ) { + + currentValue.set( newValue ); + + } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + + currentValue.copy( newValue ); + + } else { + + this[ key ] = newValue; + + } + + } + + }, + + toJSON: function ( meta ) { + + var isRoot = ( meta === undefined || typeof meta === 'string' ); + + if ( isRoot ) { + + meta = { + textures: {}, + images: {} + }; + + } + + var data = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON' + } + }; + + // standard Material serialization + data.uuid = this.uuid; + data.type = this.type; + + if ( this.name !== '' ) data.name = this.name; + + if ( this.color && this.color.isColor ) data.color = this.color.getHex(); + + if ( this.roughness !== undefined ) data.roughness = this.roughness; + if ( this.metalness !== undefined ) data.metalness = this.metalness; + + if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); + if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; + + if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); + if ( this.shininess !== undefined ) data.shininess = this.shininess; + if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; + if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; + + if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; + if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; + if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; + + if ( this.aoMap && this.aoMap.isTexture ) { + + data.aoMap = this.aoMap.toJSON( meta ).uuid; + data.aoMapIntensity = this.aoMapIntensity; + + } + + if ( this.bumpMap && this.bumpMap.isTexture ) { + + data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpScale = this.bumpScale; + + } + + if ( this.normalMap && this.normalMap.isTexture ) { + + data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + + } + + if ( this.displacementMap && this.displacementMap.isTexture ) { + + data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + + } + + if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; + if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; + + if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; + if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; + + if ( this.envMap && this.envMap.isTexture ) { + + data.envMap = this.envMap.toJSON( meta ).uuid; + data.reflectivity = this.reflectivity; // Scale behind envMap + + if ( this.combine !== undefined ) data.combine = this.combine; + if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; + + } + + if ( this.gradientMap && this.gradientMap.isTexture ) { + + data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + + } + + if ( this.size !== undefined ) data.size = this.size; + if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; + + if ( this.blending !== NormalBlending ) data.blending = this.blending; + if ( this.flatShading === true ) data.flatShading = this.flatShading; + if ( this.side !== FrontSide ) data.side = this.side; + if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; + + if ( this.opacity < 1 ) data.opacity = this.opacity; + if ( this.transparent === true ) data.transparent = this.transparent; + + data.depthFunc = this.depthFunc; + data.depthTest = this.depthTest; + data.depthWrite = this.depthWrite; + + // rotation (SpriteMaterial) + if ( this.rotation !== 0 ) data.rotation = this.rotation; + + if ( this.polygonOffset === true ) data.polygonOffset = true; + if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; + if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; + + if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; + if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; + if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; + if ( this.scale !== undefined ) data.scale = this.scale; + + if ( this.dithering === true ) data.dithering = true; + + if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; + if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; + + if ( this.wireframe === true ) data.wireframe = this.wireframe; + if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; + if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; + if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; + + if ( this.morphTargets === true ) data.morphTargets = true; + if ( this.skinning === true ) data.skinning = true; + + if ( this.visible === false ) data.visible = false; + if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; + + // TODO: Copied from Object3D.toJSON + + function extractFromCache( cache ) { + + var values = []; + + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + if ( isRoot ) { + + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + + if ( textures.length > 0 ) data.textures = textures; + if ( images.length > 0 ) data.images = images; + + } + + return data; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.fog = source.fog; + this.lights = source.lights; + + this.blending = source.blending; + this.side = source.side; + this.flatShading = source.flatShading; + this.vertexColors = source.vertexColors; + + this.opacity = source.opacity; + this.transparent = source.transparent; + + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + + this.colorWrite = source.colorWrite; + + this.precision = source.precision; + + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + + this.dithering = source.dithering; + + this.alphaTest = source.alphaTest; + this.premultipliedAlpha = source.premultipliedAlpha; + + this.visible = source.visible; + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + this.clipShadows = source.clipShadows; + this.clipIntersection = source.clipIntersection; + + var srcPlanes = source.clippingPlanes, + dstPlanes = null; + + if ( srcPlanes !== null ) { + + var n = srcPlanes.length; + dstPlanes = new Array( n ); + + for ( var i = 0; i !== n; ++ i ) + dstPlanes[ i ] = srcPlanes[ i ].clone(); + + } + + this.clippingPlanes = dstPlanes; + + this.shadowSide = source.shadowSide; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; + + var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * defines: { "label" : "value" }, + * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, + * + * fragmentShader: , + * vertexShader: , + * + * wireframe: , + * wireframeLinewidth: , + * + * lights: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function ShaderMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShaderMaterial'; + + this.defines = {}; + this.uniforms = {}; + + this.vertexShader = default_vertex; + this.fragmentShader = default_fragment; + + this.linewidth = 1; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; // set to use scene fog + this.lights = false; // set to use scene lights + this.clipping = false; // set to use user-defined clipping planes + + this.skinning = false; // set to use skinning attribute streams + this.morphTargets = false; // set to use morph targets + this.morphNormals = false; // set to use morph normals + + this.extensions = { + derivatives: false, // set to use derivatives + fragDepth: false, // set to use fragment depth values + drawBuffers: false, // set to use draw buffers + shaderTextureLOD: false // set to use shader texture LOD + }; + + // When rendered geometry doesn't include these attributes but the material does, + // use these default values in WebGL. This avoids errors when buffer data is missing. + this.defaultAttributeValues = { + 'color': [ 1, 1, 1 ], + 'uv': [ 0, 0 ], + 'uv2': [ 0, 0 ] + }; + + this.index0AttributeName = undefined; + this.uniformsNeedUpdate = false; + + if ( parameters !== undefined ) { + + if ( parameters.attributes !== undefined ) { + + console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); + + } + + this.setValues( parameters ); + + } + + } + + ShaderMaterial.prototype = Object.create( Material.prototype ); + ShaderMaterial.prototype.constructor = ShaderMaterial; + + ShaderMaterial.prototype.isShaderMaterial = true; + + ShaderMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + + this.uniforms = cloneUniforms( source.uniforms ); + + this.defines = Object.assign( {}, source.defines ); + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.lights = source.lights; + this.clipping = source.clipping; + + this.skinning = source.skinning; + + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + this.extensions = source.extensions; + + return this; + + }; + + ShaderMaterial.prototype.toJSON = function ( meta ) { + + var data = Material.prototype.toJSON.call( this, meta ); + + data.uniforms = {}; + + for ( var name in this.uniforms ) { + + var uniform = this.uniforms[ name ]; + var value = uniform.value; + + if ( value && value.isTexture ) { + + data.uniforms[ name ] = { + type: 't', + value: value.toJSON( meta ).uuid + }; + + } else if ( value && value.isColor ) { + + data.uniforms[ name ] = { + type: 'c', + value: value.getHex() + }; + + } else if ( value && value.isVector2 ) { + + data.uniforms[ name ] = { + type: 'v2', + value: value.toArray() + }; + + } else if ( value && value.isVector3 ) { + + data.uniforms[ name ] = { + type: 'v3', + value: value.toArray() + }; + + } else if ( value && value.isVector4 ) { + + data.uniforms[ name ] = { + type: 'v4', + value: value.toArray() + }; + + } else if ( value && value.isMatrix3 ) { + + data.uniforms[ name ] = { + type: 'm3', + value: value.toArray() + }; + + } else if ( value && value.isMatrix4 ) { + + data.uniforms[ name ] = { + type: 'm4', + value: value.toArray() + }; + + } else { + + data.uniforms[ name ] = { + value: value + }; + + // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far + + } + + } + + if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; + + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + + var extensions = {}; + + for ( var key in this.extensions ) { + + if ( this.extensions[ key ] === true ) extensions[ key ] = true; + + } + + if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions; + + return data; + + }; + + /** + * @author bhouston / http://clara.io + */ + + function Ray( origin, direction ) { + + this.origin = ( origin !== undefined ) ? origin : new Vector3(); + this.direction = ( direction !== undefined ) ? direction : new Vector3(); + + } + + Object.assign( Ray.prototype, { + + set: function ( origin, direction ) { + + this.origin.copy( origin ); + this.direction.copy( direction ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( ray ) { + + this.origin.copy( ray.origin ); + this.direction.copy( ray.direction ); + + return this; + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .at() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); + + }, + + lookAt: function ( v ) { + + this.direction.copy( v ).sub( this.origin ).normalize(); + + return this; + + }, + + recast: function () { + + var v1 = new Vector3(); + + return function recast( t ) { + + this.origin.copy( this.at( t, v1 ) ); + + return this; + + }; + + }(), + + closestPointToPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( point, this.origin ); + + var directionDistance = target.dot( this.direction ); + + if ( directionDistance < 0 ) { + + return target.copy( this.origin ); + + } + + return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + }, + + distanceToPoint: function ( point ) { + + return Math.sqrt( this.distanceSqToPoint( point ) ); + + }, + + distanceSqToPoint: function () { + + var v1 = new Vector3(); + + return function distanceSqToPoint( point ) { + + var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); + + // point behind the ray + + if ( directionDistance < 0 ) { + + return this.origin.distanceToSquared( point ); + + } + + v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + return v1.distanceToSquared( point ); + + }; + + }(), + + distanceSqToSegment: function () { + + var segCenter = new Vector3(); + var segDir = new Vector3(); + var diff = new Vector3(); + + return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + + segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); + segDir.copy( v1 ).sub( v0 ).normalize(); + diff.copy( this.origin ).sub( segCenter ); + + var segExtent = v0.distanceTo( v1 ) * 0.5; + var a01 = - this.direction.dot( segDir ); + var b0 = diff.dot( this.direction ); + var b1 = - diff.dot( segDir ); + var c = diff.lengthSq(); + var det = Math.abs( 1 - a01 * a01 ); + var s0, s1, sqrDist, extDet; + + if ( det > 0 ) { + + // The ray and segment are not parallel. + + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if ( s0 >= 0 ) { + + if ( s1 >= - extDet ) { + + if ( s1 <= extDet ) { + + // region 0 + // Minimum at interior points of ray and segment. + + var invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + + } else { + + // region 1 + + s1 = segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + // region 5 + + s1 = - segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + if ( s1 <= - extDet ) { + + // region 4 + + s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } else if ( s1 <= extDet ) { + + // region 3 + + s0 = 0; + s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = s1 * ( s1 + 2 * b1 ) + c; + + } else { + + // region 2 + + s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } + + } else { + + // Ray and segment are parallel. + + s1 = ( a01 > 0 ) ? - segExtent : segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + if ( optionalPointOnRay ) { + + optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); + + } + + if ( optionalPointOnSegment ) { + + optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); + + } + + return sqrDist; + + }; + + }(), + + intersectSphere: function () { + + var v1 = new Vector3(); + + return function intersectSphere( sphere, target ) { + + v1.subVectors( sphere.center, this.origin ); + var tca = v1.dot( this.direction ); + var d2 = v1.dot( v1 ) - tca * tca; + var radius2 = sphere.radius * sphere.radius; + + if ( d2 > radius2 ) return null; + + var thc = Math.sqrt( radius2 - d2 ); + + // t0 = first intersect point - entrance on front of sphere + var t0 = tca - thc; + + // t1 = second intersect point - exit point on back of sphere + var t1 = tca + thc; + + // test to see if both t0 and t1 are behind the ray - if so, return null + if ( t0 < 0 && t1 < 0 ) return null; + + // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + if ( t0 < 0 ) return this.at( t1, target ); + + // else t0 is in front of the ray, so return the first collision point scaled by t0 + return this.at( t0, target ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }, + + distanceToPlane: function ( plane ) { + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( plane.distanceToPoint( this.origin ) === 0 ) { + + return 0; + + } + + // Null is preferable to undefined since undefined means.... it is undefined + + return null; + + } + + var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + + // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + + }, + + intersectPlane: function ( plane, target ) { + + var t = this.distanceToPlane( plane ); + + if ( t === null ) { + + return null; + + } + + return this.at( t, target ); + + }, + + intersectsPlane: function ( plane ) { + + // check if the ray lies on the plane first + + var distToPoint = plane.distanceToPoint( this.origin ); + + if ( distToPoint === 0 ) { + + return true; + + } + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator * distToPoint < 0 ) { + + return true; + + } + + // ray origin is behind the plane (and is pointing behind it) + + return false; + + }, + + intersectBox: function ( box, target ) { + + var tmin, tmax, tymin, tymax, tzmin, tzmax; + + var invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + + var origin = this.origin; + + if ( invdirx >= 0 ) { + + tmin = ( box.min.x - origin.x ) * invdirx; + tmax = ( box.max.x - origin.x ) * invdirx; + + } else { + + tmin = ( box.max.x - origin.x ) * invdirx; + tmax = ( box.min.x - origin.x ) * invdirx; + + } + + if ( invdiry >= 0 ) { + + tymin = ( box.min.y - origin.y ) * invdiry; + tymax = ( box.max.y - origin.y ) * invdiry; + + } else { + + tymin = ( box.max.y - origin.y ) * invdiry; + tymax = ( box.min.y - origin.y ) * invdiry; + + } + + if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; + + // These lines also handle the case where tmin or tmax is NaN + // (result of 0 * Infinity). x !== x returns true if x is NaN + + if ( tymin > tmin || tmin !== tmin ) tmin = tymin; + + if ( tymax < tmax || tmax !== tmax ) tmax = tymax; + + if ( invdirz >= 0 ) { + + tzmin = ( box.min.z - origin.z ) * invdirz; + tzmax = ( box.max.z - origin.z ) * invdirz; + + } else { + + tzmin = ( box.max.z - origin.z ) * invdirz; + tzmax = ( box.min.z - origin.z ) * invdirz; + + } + + if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; + + if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; + + if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; + + //return point closest to the ray (positive side) + + if ( tmax < 0 ) return null; + + return this.at( tmin >= 0 ? tmin : tmax, target ); + + }, + + intersectsBox: ( function () { + + var v = new Vector3(); + + return function intersectsBox( box ) { + + return this.intersectBox( box, v ) !== null; + + }; + + } )(), + + intersectTriangle: function () { + + // Compute the offset origin, edges, and normal. + var diff = new Vector3(); + var edge1 = new Vector3(); + var edge2 = new Vector3(); + var normal = new Vector3(); + + return function intersectTriangle( a, b, c, backfaceCulling, target ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + + edge1.subVectors( b, a ); + edge2.subVectors( c, a ); + normal.crossVectors( edge1, edge2 ); + + // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + var DdN = this.direction.dot( normal ); + var sign; + + if ( DdN > 0 ) { + + if ( backfaceCulling ) return null; + sign = 1; + + } else if ( DdN < 0 ) { + + sign = - 1; + DdN = - DdN; + + } else { + + return null; + + } + + diff.subVectors( this.origin, a ); + var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); + + // b1 < 0, no intersection + if ( DdQxE2 < 0 ) { + + return null; + + } + + var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); + + // b2 < 0, no intersection + if ( DdE1xQ < 0 ) { + + return null; + + } + + // b1+b2 > 1, no intersection + if ( DdQxE2 + DdE1xQ > DdN ) { + + return null; + + } + + // Line intersects triangle, check if ray does. + var QdN = - sign * diff.dot( normal ); + + // t < 0, no intersection + if ( QdN < 0 ) { + + return null; + + } + + // Ray intersects triangle. + return this.at( QdN / DdN, target ); + + }; + + }(), + + applyMatrix4: function ( matrix4 ) { + + this.origin.applyMatrix4( matrix4 ); + this.direction.transformDirection( matrix4 ); + + return this; + + }, + + equals: function ( ray ) { + + return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Triangle( a, b, c ) { + + this.a = ( a !== undefined ) ? a : new Vector3(); + this.b = ( b !== undefined ) ? b : new Vector3(); + this.c = ( c !== undefined ) ? c : new Vector3(); + + } + + Object.assign( Triangle, { + + getNormal: function () { + + var v0 = new Vector3(); + + return function getNormal( a, b, c, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getNormal() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( c, b ); + v0.subVectors( a, b ); + target.cross( v0 ); + + var targetLengthSq = target.lengthSq(); + if ( targetLengthSq > 0 ) { + + return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); + + } + + return target.set( 0, 0, 0 ); + + }; + + }(), + + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + getBarycoord: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function getBarycoord( point, a, b, c, target ) { + + v0.subVectors( c, a ); + v1.subVectors( b, a ); + v2.subVectors( point, a ); + + var dot00 = v0.dot( v0 ); + var dot01 = v0.dot( v1 ); + var dot02 = v0.dot( v2 ); + var dot11 = v1.dot( v1 ); + var dot12 = v1.dot( v2 ); + + var denom = ( dot00 * dot11 - dot01 * dot01 ); + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); + target = new Vector3(); + + } + + // collinear or singular triangle + if ( denom === 0 ) { + + // arbitrary location outside of triangle? + // not sure if this is the best idea, maybe should be returning undefined + return target.set( - 2, - 1, - 1 ); + + } + + var invDenom = 1 / denom; + var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; + var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + + // barycentric coordinates must always sum to 1 + return target.set( 1 - u - v, v, u ); + + }; + + }(), + + containsPoint: function () { + + var v1 = new Vector3(); + + return function containsPoint( point, a, b, c ) { + + Triangle.getBarycoord( point, a, b, c, v1 ); + + return ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 ); + + }; + + }(), + + getUV: function () { + + var barycoord = new Vector3(); + + return function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { + + this.getBarycoord( point, p1, p2, p3, barycoord ); + + target.set( 0, 0 ); + target.addScaledVector( uv1, barycoord.x ); + target.addScaledVector( uv2, barycoord.y ); + target.addScaledVector( uv3, barycoord.z ); + + return target; + + }; + + }() + + } ); + + Object.assign( Triangle.prototype, { + + set: function ( a, b, c ) { + + this.a.copy( a ); + this.b.copy( b ); + this.c.copy( c ); + + return this; + + }, + + setFromPointsAndIndices: function ( points, i0, i1, i2 ) { + + this.a.copy( points[ i0 ] ); + this.b.copy( points[ i1 ] ); + this.c.copy( points[ i2 ] ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( triangle ) { + + this.a.copy( triangle.a ); + this.b.copy( triangle.b ); + this.c.copy( triangle.c ); + + return this; + + }, + + getArea: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + + return function getArea() { + + v0.subVectors( this.c, this.b ); + v1.subVectors( this.a, this.b ); + + return v0.cross( v1 ).length() * 0.5; + + }; + + }(), + + getMidpoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + + }, + + getNormal: function ( target ) { + + return Triangle.getNormal( this.a, this.b, this.c, target ); + + }, + + getPlane: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getPlane() target is now required' ); + target = new Vector3(); + + } + + return target.setFromCoplanarPoints( this.a, this.b, this.c ); + + }, + + getBarycoord: function ( point, target ) { + + return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); + + }, + + containsPoint: function ( point ) { + + return Triangle.containsPoint( point, this.a, this.b, this.c ); + + }, + + getUV: function ( point, uv1, uv2, uv3, result ) { + + return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, result ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsTriangle( this ); + + }, + + closestPointToPoint: function () { + + var vab = new Vector3(); + var vac = new Vector3(); + var vbc = new Vector3(); + var vap = new Vector3(); + var vbp = new Vector3(); + var vcp = new Vector3(); + + return function closestPointToPoint( p, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + var a = this.a, b = this.b, c = this.c; + var v, w; + + // algorithm thanks to Real-Time Collision Detection by Christer Ericson, + // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., + // under the accompanying license; see chapter 5.1.5 for detailed explanation. + // basically, we're distinguishing which of the voronoi regions of the triangle + // the point lies in with the minimum amount of redundant computation. + + vab.subVectors( b, a ); + vac.subVectors( c, a ); + vap.subVectors( p, a ); + var d1 = vab.dot( vap ); + var d2 = vac.dot( vap ); + if ( d1 <= 0 && d2 <= 0 ) { + + // vertex region of A; barycentric coords (1, 0, 0) + return target.copy( a ); + + } + + vbp.subVectors( p, b ); + var d3 = vab.dot( vbp ); + var d4 = vac.dot( vbp ); + if ( d3 >= 0 && d4 <= d3 ) { + + // vertex region of B; barycentric coords (0, 1, 0) + return target.copy( b ); + + } + + var vc = d1 * d4 - d3 * d2; + if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { + + v = d1 / ( d1 - d3 ); + // edge region of AB; barycentric coords (1-v, v, 0) + return target.copy( a ).addScaledVector( vab, v ); + + } + + vcp.subVectors( p, c ); + var d5 = vab.dot( vcp ); + var d6 = vac.dot( vcp ); + if ( d6 >= 0 && d5 <= d6 ) { + + // vertex region of C; barycentric coords (0, 0, 1) + return target.copy( c ); + + } + + var vb = d5 * d2 - d1 * d6; + if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { + + w = d2 / ( d2 - d6 ); + // edge region of AC; barycentric coords (1-w, 0, w) + return target.copy( a ).addScaledVector( vac, w ); + + } + + var va = d3 * d6 - d5 * d4; + if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { + + vbc.subVectors( c, b ); + w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); + // edge region of BC; barycentric coords (0, 1-w, w) + return target.copy( b ).addScaledVector( vbc, w ); // edge region of BC + + } + + // face region + var denom = 1 / ( va + vb + vc ); + // u = va * denom + v = vb * denom; + w = vc * denom; + return target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w ); + + }; + + }(), + + equals: function ( triangle ) { + + return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * depthTest: , + * depthWrite: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: + * } + */ + + function MeshBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshBasicMaterial'; + + this.color = new Color( 0xffffff ); // emissive + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + MeshBasicMaterial.prototype = Object.create( Material.prototype ); + MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; + + MeshBasicMaterial.prototype.isMeshBasicMaterial = true; + + MeshBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author jonobr1 / http://jonobr1.com/ + */ + + function Mesh( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Mesh'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); + + this.drawMode = TrianglesDrawMode; + + this.updateMorphTargets(); + + } + + Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Mesh, + + isMesh: true, + + setDrawMode: function ( value ) { + + this.drawMode = value; + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.drawMode = source.drawMode; + + if ( source.morphTargetInfluences !== undefined ) { + + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + + } + + if ( source.morphTargetDictionary !== undefined ) { + + this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + + } + + return this; + + }, + + updateMorphTargets: function () { + + var geometry = this.geometry; + var m, ml, name; + + if ( geometry.isBufferGeometry ) { + + var morphAttributes = geometry.morphAttributes; + var keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + var morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } else { + + var morphTargets = geometry.morphTargets; + + if ( morphTargets !== undefined && morphTargets.length > 0 ) { + + console.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + } + + }, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + var vA = new Vector3(); + var vB = new Vector3(); + var vC = new Vector3(); + + var tempA = new Vector3(); + var tempB = new Vector3(); + var tempC = new Vector3(); + + var morphA = new Vector3(); + var morphB = new Vector3(); + var morphC = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + var intersectionPoint = new Vector3(); + var intersectionPointWorld = new Vector3(); + + function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { + + var intersect; + + if ( material.side === BackSide ) { + + intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + + } else { + + intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); + + } + + if ( intersect === null ) return null; + + intersectionPointWorld.copy( point ); + intersectionPointWorld.applyMatrix4( object.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); + + if ( distance < raycaster.near || distance > raycaster.far ) return null; + + return { + distance: distance, + point: intersectionPointWorld.clone(), + object: object + }; + + } + + function checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, a, b, c ) { + + vA.fromBufferAttribute( position, a ); + vB.fromBufferAttribute( position, b ); + vC.fromBufferAttribute( position, c ); + + var morphInfluences = object.morphTargetInfluences; + + if ( material.morphTargets && morphPosition && morphInfluences ) { + + morphA.set( 0, 0, 0 ); + morphB.set( 0, 0, 0 ); + morphC.set( 0, 0, 0 ); + + for ( var i = 0, il = morphPosition.length; i < il; i ++ ) { + + var influence = morphInfluences[ i ]; + var morphAttribute = morphPosition[ i ]; + + if ( influence === 0 ) continue; + + tempA.fromBufferAttribute( morphAttribute, a ); + tempB.fromBufferAttribute( morphAttribute, b ); + tempC.fromBufferAttribute( morphAttribute, c ); + + morphA.addScaledVector( tempA.sub( vA ), influence ); + morphB.addScaledVector( tempB.sub( vB ), influence ); + morphC.addScaledVector( tempC.sub( vC ), influence ); + + } + + vA.add( morphA ); + vB.add( morphB ); + vC.add( morphC ); + + } + + var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint ); + + if ( intersection ) { + + if ( uv ) { + + uvA.fromBufferAttribute( uv, a ); + uvB.fromBufferAttribute( uv, b ); + uvC.fromBufferAttribute( uv, c ); + + intersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ); + + } + + var face = new Face3( a, b, c ); + Triangle.getNormal( vA, vB, vC, face.normal ); + + intersection.face = face; + + } + + return intersection; + + } + + return function raycast( raycaster, intersects ) { + + var geometry = this.geometry; + var material = this.material; + var matrixWorld = this.matrixWorld; + + if ( material === undefined ) return; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + // Check boundingBox before continuing + + if ( geometry.boundingBox !== null ) { + + if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; + + } + + var intersection; + + if ( geometry.isBufferGeometry ) { + + var a, b, c; + var index = geometry.index; + var position = geometry.attributes.position; + var morphPosition = geometry.morphAttributes.position; + var uv = geometry.attributes.uv; + var groups = geometry.groups; + var drawRange = geometry.drawRange; + var i, j, il, jl; + var group, groupMaterial; + var start, end; + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = index.getX( j ); + b = index.getX( j + 1 ); + c = index.getX( j + 2 ); + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } else if ( position !== undefined ) { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = j; + b = j + 1; + c = j + 2; + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } + + } else if ( geometry.isGeometry ) { + + var fvA, fvB, fvC; + var isMultiMaterial = Array.isArray( material ); + + var vertices = geometry.vertices; + var faces = geometry.faces; + var uvs; + + var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; + if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; + + for ( var f = 0, fl = faces.length; f < fl; f ++ ) { + + var face = faces[ f ]; + var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; + + if ( faceMaterial === undefined ) continue; + + fvA = vertices[ face.a ]; + fvB = vertices[ face.b ]; + fvC = vertices[ face.c ]; + + intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); + + if ( intersection ) { + + if ( uvs && uvs[ f ] ) { + + var uvs_f = uvs[ f ]; + uvA.copy( uvs_f[ 0 ] ); + uvB.copy( uvs_f[ 1 ] ); + uvC.copy( uvs_f[ 2 ] ); + + intersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() ); + + } + + intersection.face = face; + intersection.faceIndex = f; + intersects.push( intersection ); + + } + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { + + var clearColor = new Color( 0x000000 ); + var clearAlpha = 0; + + var planeMesh; + var boxMesh; + // Store the current background texture and its `version` + // so we can recompile the material accordingly. + var currentBackground = null; + var currentBackgroundVersion = 0; + + function render( renderList, scene, camera, forceClear ) { + + var background = scene.background; + + // Ignore background in AR + // TODO: Reconsider this. + + var vr = renderer.vr; + var session = vr.getSession && vr.getSession(); + + if ( session && session.environmentBlendMode === 'additive' ) { + + background = null; + + } + + if ( background === null ) { + + setClear( clearColor, clearAlpha ); + currentBackground = null; + currentBackgroundVersion = 0; + + } else if ( background && background.isColor ) { + + setClear( background, 1 ); + forceClear = true; + currentBackground = null; + currentBackgroundVersion = 0; + + } + + if ( renderer.autoClear || forceClear ) { + + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { + + if ( boxMesh === undefined ) { + + boxMesh = new Mesh( + new BoxBufferGeometry( 1, 1, 1 ), + new ShaderMaterial( { + type: 'BackgroundCubeMaterial', + uniforms: cloneUniforms( ShaderLib.cube.uniforms ), + vertexShader: ShaderLib.cube.vertexShader, + fragmentShader: ShaderLib.cube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + boxMesh.geometry.removeAttribute( 'normal' ); + boxMesh.geometry.removeAttribute( 'uv' ); + + boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + + this.matrixWorld.copyPosition( camera.matrixWorld ); + + }; + + // enable code injection for non-built-in material + Object.defineProperty( boxMesh.material, 'map', { + + get: function () { + + return this.uniforms.tCube.value; + + } + + } ); + + objects.update( boxMesh ); + + } + + var texture = background.isWebGLRenderTargetCube ? background.texture : background; + boxMesh.material.uniforms.tCube.value = texture; + boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; + + if ( currentBackground !== background || + currentBackgroundVersion !== texture.version ) { + + boxMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = texture.version; + + } + + // push to the pre-sorted opaque render list + renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); + + } else if ( background && background.isTexture ) { + + if ( planeMesh === undefined ) { + + planeMesh = new Mesh( + new PlaneBufferGeometry( 2, 2 ), + new ShaderMaterial( { + type: 'BackgroundMaterial', + uniforms: cloneUniforms( ShaderLib.background.uniforms ), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + planeMesh.geometry.removeAttribute( 'normal' ); + + // enable code injection for non-built-in material + Object.defineProperty( planeMesh.material, 'map', { + + get: function () { + + return this.uniforms.t2D.value; + + } + + } ); + + objects.update( planeMesh ); + + } + + planeMesh.material.uniforms.t2D.value = background; + + if ( background.matrixAutoUpdate === true ) { + + background.updateMatrix(); + + } + + planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); + + if ( currentBackground !== background || + currentBackgroundVersion !== background.version ) { + + planeMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = background.version; + + } + + + // push to the pre-sorted opaque render list + renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); + + } + + } + + function setClear( color, alpha ) { + + state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); + + } + + return { + + getClearColor: function () { + + return clearColor; + + }, + setClearColor: function ( color, alpha ) { + + clearColor.set( color ); + clearAlpha = alpha !== undefined ? alpha : 1; + setClear( clearColor, clearAlpha ); + + }, + getClearAlpha: function () { + + return clearAlpha; + + }, + setClearAlpha: function ( alpha ) { + + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + render: render + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + function render( start, count ) { + + gl.drawArrays( mode, start, count ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count ) { + + var extension; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + + } else { + + extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount ); + + info.update( count, mode, geometry.maxInstancedCount ); + + } + + // + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLCapabilities( gl, extensions, parameters ) { + + var maxAnisotropy; + + function getMaxAnisotropy() { + + if ( maxAnisotropy !== undefined ) return maxAnisotropy; + + var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension !== null ) { + + maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + + } else { + + maxAnisotropy = 0; + + } + + return maxAnisotropy; + + } + + function getMaxPrecision( precision ) { + + if ( precision === 'highp' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { + + return 'highp'; + + } + + precision = 'mediump'; + + } + + if ( precision === 'mediump' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { + + return 'mediump'; + + } + + } + + return 'lowp'; + + } + + var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; + + var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + var maxPrecision = getMaxPrecision( precision ); + + if ( maxPrecision !== precision ) { + + console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + precision = maxPrecision; + + } + + var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + + var maxTextures = gl.getParameter( 34930 ); + var maxVertexTextures = gl.getParameter( 35660 ); + var maxTextureSize = gl.getParameter( 3379 ); + var maxCubemapSize = gl.getParameter( 34076 ); + + var maxAttributes = gl.getParameter( 34921 ); + var maxVertexUniforms = gl.getParameter( 36347 ); + var maxVaryings = gl.getParameter( 36348 ); + var maxFragmentUniforms = gl.getParameter( 36349 ); + + var vertexTextures = maxVertexTextures > 0; + var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); + var floatVertexTextures = vertexTextures && floatFragmentTextures; + + var maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0; + + return { + + isWebGL2: isWebGL2, + + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + + vertexTextures: vertexTextures, + floatFragmentTextures: floatFragmentTextures, + floatVertexTextures: floatVertexTextures, + + maxSamples: maxSamples + + }; + + } + + /** + * @author tschw + */ + + function WebGLClipping() { + + var scope = this, + + globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false, + + plane = new Plane(), + viewNormalMatrix = new Matrix3(), + + uniform = { value: null, needsUpdate: false }; + + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function ( planes, enableLocalClipping, camera ) { + + var enabled = + planes.length !== 0 || + enableLocalClipping || + // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || + localClippingEnabled; + + localClippingEnabled = enableLocalClipping; + + globalState = projectPlanes( planes, camera, 0 ); + numGlobalPlanes = planes.length; + + return enabled; + + }; + + this.beginShadows = function () { + + renderingShadows = true; + projectPlanes( null ); + + }; + + this.endShadows = function () { + + renderingShadows = false; + resetGlobalState(); + + }; + + this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { + + if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + + // there's no local clipping + + if ( renderingShadows ) { + + // there's no global clipping + + projectPlanes( null ); + + } else { + + resetGlobalState(); + + } + + } else { + + var nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4, + + dstArray = cache.clippingState || null; + + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); + + for ( var i = 0; i !== lGlobal; ++ i ) { + + dstArray[ i ] = globalState[ i ]; + + } + + cache.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + + } + + + }; + + function resetGlobalState() { + + if ( uniform.value !== globalState ) { + + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + + } + + function projectPlanes( planes, camera, dstOffset, skipTransform ) { + + var nPlanes = planes !== null ? planes.length : 0, + dstArray = null; + + if ( nPlanes !== 0 ) { + + dstArray = uniform.value; + + if ( skipTransform !== true || dstArray === null ) { + + var flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + + viewNormalMatrix.getNormalMatrix( viewMatrix ); + + if ( dstArray === null || dstArray.length < flatSize ) { + + dstArray = new Float32Array( flatSize ); + + } + + for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + + plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + + plane.normal.toArray( dstArray, i4 ); + dstArray[ i4 + 3 ] = plane.constant; + + } + + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + + } + + scope.numPlanes = nPlanes; + + return dstArray; + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLExtensions( gl ) { + + var extensions = {}; + + return { + + get: function ( name ) { + + if ( extensions[ name ] !== undefined ) { + + return extensions[ name ]; + + } + + var extension; + + switch ( name ) { + + case 'WEBGL_depth_texture': + extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + break; + + default: + extension = gl.getExtension( name ); + + } + + if ( extension === null ) { + + console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + + } + + extensions[ name ] = extension; + + return extension; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLGeometries( gl, attributes, info ) { + + var geometries = {}; + var wireframeAttributes = {}; + + function onGeometryDispose( event ) { + + var geometry = event.target; + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry.index !== null ) { + + attributes.remove( buffergeometry.index ); + + } + + for ( var name in buffergeometry.attributes ) { + + attributes.remove( buffergeometry.attributes[ name ] ); + + } + + geometry.removeEventListener( 'dispose', onGeometryDispose ); + + delete geometries[ geometry.id ]; + + var attribute = wireframeAttributes[ buffergeometry.id ]; + + if ( attribute ) { + + attributes.remove( attribute ); + delete wireframeAttributes[ buffergeometry.id ]; + + } + + // + + info.memory.geometries --; + + } + + function get( object, geometry ) { + + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry ) return buffergeometry; + + geometry.addEventListener( 'dispose', onGeometryDispose ); + + if ( geometry.isBufferGeometry ) { + + buffergeometry = geometry; + + } else if ( geometry.isGeometry ) { + + if ( geometry._bufferGeometry === undefined ) { + + geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); + + } + + buffergeometry = geometry._bufferGeometry; + + } + + geometries[ geometry.id ] = buffergeometry; + + info.memory.geometries ++; + + return buffergeometry; + + } + + function update( geometry ) { + + var index = geometry.index; + var geometryAttributes = geometry.attributes; + + if ( index !== null ) { + + attributes.update( index, 34963 ); + + } + + for ( var name in geometryAttributes ) { + + attributes.update( geometryAttributes[ name ], 34962 ); + + } + + // morph targets + + var morphAttributes = geometry.morphAttributes; + + for ( var name in morphAttributes ) { + + var array = morphAttributes[ name ]; + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + attributes.update( array[ i ], 34962 ); + + } + + } + + } + + function getWireframeAttribute( geometry ) { + + var attribute = wireframeAttributes[ geometry.id ]; + + if ( attribute ) return attribute; + + var indices = []; + + var geometryIndex = geometry.index; + var geometryAttributes = geometry.attributes; + + // console.time( 'wireframe' ); + + if ( geometryIndex !== null ) { + + var array = geometryIndex.array; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var a = array[ i + 0 ]; + var b = array[ i + 1 ]; + var c = array[ i + 2 ]; + + indices.push( a, b, b, c, c, a ); + + } + + } else { + + var array = geometryAttributes.position.array; + + for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + + var a = i + 0; + var b = i + 1; + var c = i + 2; + + indices.push( a, b, b, c, c, a ); + + } + + } + + // console.timeEnd( 'wireframe' ); + + attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + + attributes.update( attribute, 34963 ); + + wireframeAttributes[ geometry.id ] = attribute; + + return attribute; + + } + + return { + + get: get, + update: update, + + getWireframeAttribute: getWireframeAttribute + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + var type, bytesPerElement; + + function setIndex( value ) { + + type = value.type; + bytesPerElement = value.bytesPerElement; + + } + + function render( start, count ) { + + gl.drawElements( mode, count, type, start * bytesPerElement ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count ) { + + var extension; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + + } else { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); + + info.update( count, mode, geometry.maxInstancedCount ); + + } + + // + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLInfo( gl ) { + + var memory = { + geometries: 0, + textures: 0 + }; + + var render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + + function update( count, mode, instanceCount ) { + + instanceCount = instanceCount || 1; + + render.calls ++; + + switch ( mode ) { + + case 4: + render.triangles += instanceCount * ( count / 3 ); + break; + + case 5: + case 6: + render.triangles += instanceCount * ( count - 2 ); + break; + + case 1: + render.lines += instanceCount * ( count / 2 ); + break; + + case 3: + render.lines += instanceCount * ( count - 1 ); + break; + + case 2: + render.lines += instanceCount * count; + break; + + case 0: + render.points += instanceCount * count; + break; + + default: + console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); + break; + + } + + } + + function reset() { + + render.frame ++; + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + + } + + return { + memory: memory, + render: render, + programs: null, + autoReset: true, + reset: reset, + update: update + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function absNumericalSort( a, b ) { + + return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); + + } + + function WebGLMorphtargets( gl ) { + + var influencesList = {}; + var morphInfluences = new Float32Array( 8 ); + + function update( object, geometry, material, program ) { + + var objectInfluences = object.morphTargetInfluences; + + var length = objectInfluences.length; + + var influences = influencesList[ geometry.id ]; + + if ( influences === undefined ) { + + // initialise list + + influences = []; + + for ( var i = 0; i < length; i ++ ) { + + influences[ i ] = [ i, 0 ]; + + } + + influencesList[ geometry.id ] = influences; + + } + + var morphTargets = material.morphTargets && geometry.morphAttributes.position; + var morphNormals = material.morphNormals && geometry.morphAttributes.normal; + + // Remove current morphAttributes + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + if ( influence[ 1 ] !== 0 ) { + + if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); + if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); + + } + + } + + // Collect influences + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + influence[ 0 ] = i; + influence[ 1 ] = objectInfluences[ i ]; + + } + + influences.sort( absNumericalSort ); + + // Add morphAttributes + + for ( var i = 0; i < 8; i ++ ) { + + var influence = influences[ i ]; + + if ( influence ) { + + var index = influence[ 0 ]; + var value = influence[ 1 ]; + + if ( value ) { + + if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); + if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); + + morphInfluences[ i ] = value; + continue; + + } + + } + + morphInfluences[ i ] = 0; + + } + + program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); + + } + + return { + + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLObjects( geometries, info ) { + + var updateList = {}; + + function update( object ) { + + var frame = info.render.frame; + + var geometry = object.geometry; + var buffergeometry = geometries.get( object, geometry ); + + // Update once per frame + + if ( updateList[ buffergeometry.id ] !== frame ) { + + if ( geometry.isGeometry ) { + + buffergeometry.updateFromObject( object ); + + } + + geometries.update( buffergeometry ); + + updateList[ buffergeometry.id ] = frame; + + } + + return buffergeometry; + + } + + function dispose() { + + updateList = {}; + + } + + return { + + update: update, + dispose: dispose + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + images = images !== undefined ? images : []; + mapping = mapping !== undefined ? mapping : CubeReflectionMapping; + format = format !== undefined ? format : RGBFormat; + + Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.flipY = false; + + } + + CubeTexture.prototype = Object.create( Texture.prototype ); + CubeTexture.prototype.constructor = CubeTexture; + + CubeTexture.prototype.isCubeTexture = true; + + Object.defineProperty( CubeTexture.prototype, 'images', { + + get: function () { + + return this.image; + + }, + + set: function ( value ) { + + this.image = value; + + } + + } ); + + /** + * @author Takahiro https://github.com/takahirox + */ + + function DataTexture2DArray( data, width, height, depth ) { + + Texture.call( this, null ); + + this.image = { data: data, width: width, height: height, depth: depth }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + } + + DataTexture2DArray.prototype = Object.create( Texture.prototype ); + DataTexture2DArray.prototype.constructor = DataTexture2DArray; + DataTexture2DArray.prototype.isDataTexture2DArray = true; + + /** + * @author Artur Trzesiok + */ + + function DataTexture3D( data, width, height, depth ) { + + // We're going to add .setXXX() methods for setting properties later. + // Users can still set in DataTexture3D directly. + // + // var texture = new THREE.DataTexture3D( data, width, height, depth ); + // texture.anisotropy = 16; + // + // See #14839 + + Texture.call( this, null ); + + this.image = { data: data, width: width, height: height, depth: depth }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + } + + DataTexture3D.prototype = Object.create( Texture.prototype ); + DataTexture3D.prototype.constructor = DataTexture3D; + DataTexture3D.prototype.isDataTexture3D = true; + + /** + * @author tschw + * @author Mugen87 / https://github.com/Mugen87 + * @author mrdoob / http://mrdoob.com/ + * + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [textures] ) + * + * uploads a uniform value(s) + * the 'textures' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (textures factorizations): + * + * .upload( gl, seq, values, textures ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (textures factorizations): + * + * .setValue( gl, name, value, textures ) + * + * sets uniform with name 'name' to 'value' + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + + var emptyTexture = new Texture(); + var emptyTexture2dArray = new DataTexture2DArray(); + var emptyTexture3d = new DataTexture3D(); + var emptyCubeTexture = new CubeTexture(); + + // --- Utilities --- + + // Array Caches (provide typed arrays for temporary by size) + + var arrayCacheF32 = []; + var arrayCacheI32 = []; + + // Float32Array caches used for uploading Matrix uniforms + + var mat4array = new Float32Array( 16 ); + var mat3array = new Float32Array( 9 ); + var mat2array = new Float32Array( 4 ); + + // Flattening for arrays of vectors and matrices + + function flatten( array, nBlocks, blockSize ) { + + var firstElem = array[ 0 ]; + + if ( firstElem <= 0 || firstElem > 0 ) return array; + // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + var n = nBlocks * blockSize, + r = arrayCacheF32[ n ]; + + if ( r === undefined ) { + + r = new Float32Array( n ); + arrayCacheF32[ n ] = r; + + } + + if ( nBlocks !== 0 ) { + + firstElem.toArray( r, 0 ); + + for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { + + offset += blockSize; + array[ i ].toArray( r, offset ); + + } + + } + + return r; + + } + + function arraysEqual( a, b ) { + + if ( a.length !== b.length ) return false; + + for ( var i = 0, l = a.length; i < l; i ++ ) { + + if ( a[ i ] !== b[ i ] ) return false; + + } + + return true; + + } + + function copyArray( a, b ) { + + for ( var i = 0, l = b.length; i < l; i ++ ) { + + a[ i ] = b[ i ]; + + } + + } + + // Texture unit allocation + + function allocTexUnits( textures, n ) { + + var r = arrayCacheI32[ n ]; + + if ( r === undefined ) { + + r = new Int32Array( n ); + arrayCacheI32[ n ] = r; + + } + + for ( var i = 0; i !== n; ++ i ) + r[ i ] = textures.allocateTextureUnit(); + + return r; + + } + + // --- Setters --- + + // Note: Defining these methods externally, because they come in a bunch + // and this way their names minify. + + // Single scalar + + function setValue1f( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1f( this.addr, v ); + + cache[ 0 ] = v; + + } + + function setValue1i( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1i( this.addr, v ); + + cache[ 0 ] = v; + + } + + // Single float vector (from flat array or THREE.VectorN) + + function setValue2fv( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2f( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValue3fv( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3f( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else if ( v.r !== undefined ) { + + if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { + + gl.uniform3f( this.addr, v.r, v.g, v.b ); + + cache[ 0 ] = v.r; + cache[ 1 ] = v.g; + cache[ 2 ] = v.b; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValue4fv( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + // Single matrix (from flat array or MatrixN) + + function setValue2fm( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix2fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat2array.set( elements ); + + gl.uniformMatrix2fv( this.addr, false, mat2array ); + + copyArray( cache, elements ); + + } + + } + + function setValue3fm( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix3fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat3array.set( elements ); + + gl.uniformMatrix3fv( this.addr, false, mat3array ); + + copyArray( cache, elements ); + + } + + } + + function setValue4fm( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix4fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat4array.set( elements ); + + gl.uniformMatrix4fv( this.addr, false, mat4array ); + + copyArray( cache, elements ); + + } + + } + + // Single texture (2D / Cube) + + function setValueT1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTexture2D( v || emptyTexture, unit ); + + } + + function setValueT2DArray1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture2DArray( v || emptyTexture2dArray, unit ); + + } + + function setValueT3D1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture3D( v || emptyTexture3d, unit ); + + } + + function setValueT6( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTextureCube( v || emptyCubeTexture, unit ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + + function setValue2iv( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValue3iv( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValue4iv( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4iv( this.addr, v ); + + copyArray( cache, v ); + + } + + // Helper to pick the right setter for the singular case + + function getSingularSetter( type ) { + + switch ( type ) { + + case 0x1406: return setValue1f; // FLOAT + case 0x8b50: return setValue2fv; // _VEC2 + case 0x8b51: return setValue3fv; // _VEC3 + case 0x8b52: return setValue4fv; // _VEC4 + + case 0x8b5a: return setValue2fm; // _MAT2 + case 0x8b5b: return setValue3fm; // _MAT3 + case 0x8b5c: return setValue4fm; // _MAT4 + + case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES + case 0x8b5f: return setValueT3D1; // SAMPLER_3D + case 0x8b60: return setValueT6; // SAMPLER_CUBE + case 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY + + case 0x1404: case 0x8b56: return setValue1i; // INT, BOOL + case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 + case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 + case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 + + } + + } + + // Array of scalars + + function setValue1fv( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform1fv( this.addr, v ); + + copyArray( cache, v ); + + } + function setValue1iv( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform1iv( this.addr, v ); + + copyArray( cache, v ); + + } + + // Array of vectors (flat or from THREE classes) + + function setValueV2a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 2 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniform2fv( this.addr, data ); + + this.updateCache( data ); + + } + + function setValueV3a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 3 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniform3fv( this.addr, data ); + + this.updateCache( data ); + + } + + function setValueV4a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 4 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniform4fv( this.addr, data ); + + this.updateCache( data ); + + } + + // Array of matrices (flat or from THREE clases) + + function setValueM2a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 4 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniformMatrix2fv( this.addr, false, data ); + + this.updateCache( data ); + + } + + function setValueM3a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 9 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniformMatrix3fv( this.addr, false, data ); + + this.updateCache( data ); + + } + + function setValueM4a( gl, v ) { + + var cache = this.cache; + var data = flatten( v, this.size, 16 ); + + if ( arraysEqual( cache, data ) ) return; + + gl.uniformMatrix4fv( this.addr, false, data ); + + this.updateCache( data ); + + } + + // Array of textures (2D / Cube) + + function setValueT1a( gl, v, textures ) { + + var cache = this.cache; + var n = v.length; + + var units = allocTexUnits( textures, n ); + + if ( arraysEqual( cache, units ) === false ) { + + gl.uniform1iv( this.addr, units ); + copyArray( cache, units ); + + } + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] ); + + } + + } + + function setValueT6a( gl, v, textures ) { + + var cache = this.cache; + var n = v.length; + + var units = allocTexUnits( textures, n ); + + if ( arraysEqual( cache, units ) === false ) { + + gl.uniform1iv( this.addr, units ); + copyArray( cache, units ); + + } + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + + } + + } + + // Helper to pick the right setter for a pure (bottom-level) array + + function getPureArraySetter( type ) { + + switch ( type ) { + + case 0x1406: return setValue1fv; // FLOAT + case 0x8b50: return setValueV2a; // _VEC2 + case 0x8b51: return setValueV3a; // _VEC3 + case 0x8b52: return setValueV4a; // _VEC4 + + case 0x8b5a: return setValueM2a; // _MAT2 + case 0x8b5b: return setValueM3a; // _MAT3 + case 0x8b5c: return setValueM4a; // _MAT4 + + case 0x8b5e: return setValueT1a; // SAMPLER_2D + case 0x8b60: return setValueT6a; // SAMPLER_CUBE + + case 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL + case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 + case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 + case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 + + } + + } + + // --- Uniform Classes --- + + function SingleUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.setValue = getSingularSetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + function PureArrayUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.size = activeInfo.size; + this.setValue = getPureArraySetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + PureArrayUniform.prototype.updateCache = function ( data ) { + + var cache = this.cache; + + if ( data instanceof Float32Array && cache.length !== data.length ) { + + this.cache = new Float32Array( data.length ); + + } + + copyArray( cache, data ); + + }; + + function StructuredUniform( id ) { + + this.id = id; + + this.seq = []; + this.map = {}; + + } + + StructuredUniform.prototype.setValue = function ( gl, value, textures ) { + + var seq = this.seq; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + u.setValue( gl, value[ u.id ], textures ); + + } + + }; + + // --- Top-level --- + + // Parser - builds up the property tree from the path strings + + var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; + + // extracts + // - the identifier (member name or array index) + // - followed by an optional right bracket (found when array index) + // - followed by an optional left bracket or dot (type of subscript) + // + // Note: These portions can be read in a non-overlapping fashion and + // allow straightforward parsing of the hierarchy that WebGL encodes + // in the uniform names. + + function addUniform( container, uniformObject ) { + + container.seq.push( uniformObject ); + container.map[ uniformObject.id ] = uniformObject; + + } + + function parseUniform( activeInfo, addr, container ) { + + var path = activeInfo.name, + pathLength = path.length; + + // reset RegExp object, because of the early exit of a previous run + RePathPart.lastIndex = 0; + + while ( true ) { + + var match = RePathPart.exec( path ), + matchEnd = RePathPart.lastIndex, + + id = match[ 1 ], + idIsIndex = match[ 2 ] === ']', + subscript = match[ 3 ]; + + if ( idIsIndex ) id = id | 0; // convert to integer + + if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + + // bare name or "pure" bottom-level array "[0]" suffix + + addUniform( container, subscript === undefined ? + new SingleUniform( id, activeInfo, addr ) : + new PureArrayUniform( id, activeInfo, addr ) ); + + break; + + } else { + + // step into inner node / create it in case it doesn't exist + + var map = container.map, next = map[ id ]; + + if ( next === undefined ) { + + next = new StructuredUniform( id ); + addUniform( container, next ); + + } + + container = next; + + } + + } + + } + + // Root Container + + function WebGLUniforms( gl, program ) { + + this.seq = []; + this.map = {}; + + var n = gl.getProgramParameter( program, 35718 ); + + for ( var i = 0; i < n; ++ i ) { + + var info = gl.getActiveUniform( program, i ), + addr = gl.getUniformLocation( program, info.name ); + + parseUniform( info, addr, this ); + + } + + } + + WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) { + + var u = this.map[ name ]; + + if ( u !== undefined ) u.setValue( gl, value, textures ); + + }; + + WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { + + var v = object[ name ]; + + if ( v !== undefined ) this.setValue( gl, name, v ); + + }; + + + // Static interface + + WebGLUniforms.upload = function ( gl, seq, values, textures ) { + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ], + v = values[ u.id ]; + + if ( v.needsUpdate !== false ) { + + // note: always updating when .needsUpdate is undefined + u.setValue( gl, v.value, textures ); + + } + + } + + }; + + WebGLUniforms.seqWithValue = function ( seq, values ) { + + var r = []; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + if ( u.id in values ) r.push( u ); + + } + + return r; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function addLineNumbers( string ) { + + var lines = string.split( '\n' ); + + for ( var i = 0; i < lines.length; i ++ ) { + + lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; + + } + + return lines.join( '\n' ); + + } + + function WebGLShader( gl, type, string ) { + + var shader = gl.createShader( type ); + + gl.shaderSource( shader, string ); + gl.compileShader( shader ); + + if ( gl.getShaderParameter( shader, 35713 ) === false ) { + + console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); + + } + + if ( gl.getShaderInfoLog( shader ) !== '' ) { + + console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); + + } + + // --enable-privileged-webgl-extension + // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + return shader; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var programIdCount = 0; + + function getEncodingComponents( encoding ) { + + switch ( encoding ) { + + case LinearEncoding: + return [ 'Linear', '( value )' ]; + case sRGBEncoding: + return [ 'sRGB', '( value )' ]; + case RGBEEncoding: + return [ 'RGBE', '( value )' ]; + case RGBM7Encoding: + return [ 'RGBM', '( value, 7.0 )' ]; + case RGBM16Encoding: + return [ 'RGBM', '( value, 16.0 )' ]; + case RGBDEncoding: + return [ 'RGBD', '( value, 256.0 )' ]; + case GammaEncoding: + return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; + default: + throw new Error( 'unsupported encoding: ' + encoding ); + + } + + } + + function getTexelDecodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; + + } + + function getTexelEncodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; + + } + + function getToneMappingFunction( functionName, toneMapping ) { + + var toneMappingName; + + switch ( toneMapping ) { + + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case Uncharted2ToneMapping: + toneMappingName = 'Uncharted2'; + break; + + case CineonToneMapping: + toneMappingName = 'OptimizedCineon'; + break; + + case ACESFilmicToneMapping: + toneMappingName = 'ACESFilmic'; + break; + + default: + throw new Error( 'unsupported toneMapping: ' + toneMapping ); + + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + + } + + function generateExtensions( extensions, parameters, rendererExtensions ) { + + extensions = extensions || {}; + + var chunks = [ + ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', + ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', + ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', + ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' + ]; + + return chunks.filter( filterEmptyLine ).join( '\n' ); + + } + + function generateDefines( defines ) { + + var chunks = []; + + for ( var name in defines ) { + + var value = defines[ name ]; + + if ( value === false ) continue; + + chunks.push( '#define ' + name + ' ' + value ); + + } + + return chunks.join( '\n' ); + + } + + function fetchAttributeLocations( gl, program ) { + + var attributes = {}; + + var n = gl.getProgramParameter( program, 35721 ); + + for ( var i = 0; i < n; i ++ ) { + + var info = gl.getActiveAttrib( program, i ); + var name = info.name; + + // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[ name ] = gl.getAttribLocation( program, name ); + + } + + return attributes; + + } + + function filterEmptyLine( string ) { + + return string !== ''; + + } + + function replaceLightNums( string, parameters ) { + + return string + .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) + .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) + .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) + .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) + .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); + + } + + function replaceClippingPlaneNums( string, parameters ) { + + return string + .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) + .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); + + } + + function parseIncludes( string ) { + + var pattern = /^[ \t]*#include +<([\w\d./]+)>/gm; + + function replace( match, include ) { + + var replace = ShaderChunk[ include ]; + + if ( replace === undefined ) { + + throw new Error( 'Can not resolve #include <' + include + '>' ); + + } + + return parseIncludes( replace ); + + } + + return string.replace( pattern, replace ); + + } + + function unrollLoops( string ) { + + var pattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; + + function replace( match, start, end, snippet ) { + + var unroll = ''; + + for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { + + unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); + + } + + return unroll; + + } + + return string.replace( pattern, replace ); + + } + + function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ) { + + var gl = renderer.context; + + var defines = material.defines; + + var vertexShader = shader.vertexShader; + var fragmentShader = shader.fragmentShader; + + var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if ( parameters.shadowMapType === PCFShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + + } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + + } + + var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + + if ( parameters.envMap ) { + + switch ( material.envMap.mapping ) { + + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + case CubeUVRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + + case EquirectangularReflectionMapping: + case EquirectangularRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; + break; + + case SphericalReflectionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; + break; + + } + + switch ( material.envMap.mapping ) { + + case CubeRefractionMapping: + case EquirectangularRefractionMapping: + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + + } + + switch ( material.combine ) { + + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + + } + + } + + var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + + // console.log( 'building new program ' ); + + // + + var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); + + var customDefines = generateDefines( defines ); + + // + + var program = gl.createProgram(); + + var prefixVertex, prefixFragment; + + if ( material.isRawShaderMaterial ) { + + prefixVertex = [ + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixVertex.length > 0 ) { + + prefixVertex += '\n'; + + } + + prefixFragment = [ + + customExtensions, + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixFragment.length > 0 ) { + + prefixFragment += '\n'; + + } + + } else { + + prefixVertex = [ + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + '#define MAX_BONES ' + parameters.maxBones, + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.skinning ? '#define USE_SKINNING' : '', + parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', + + parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', + parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + + '#ifdef USE_TANGENT', + + ' attribute vec4 tangent;', + + '#endif', + + '#ifdef USE_COLOR', + + ' attribute vec3 color;', + + '#endif', + + '#ifdef USE_MORPHTARGETS', + + ' attribute vec3 morphTarget0;', + ' attribute vec3 morphTarget1;', + ' attribute vec3 morphTarget2;', + ' attribute vec3 morphTarget3;', + + ' #ifdef USE_MORPHNORMALS', + + ' attribute vec3 morphNormal0;', + ' attribute vec3 morphNormal1;', + ' attribute vec3 morphNormal2;', + ' attribute vec3 morphNormal3;', + + ' #else', + + ' attribute vec3 morphTarget4;', + ' attribute vec3 morphTarget5;', + ' attribute vec3 morphTarget6;', + ' attribute vec3 morphTarget7;', + + ' #endif', + + '#endif', + + '#ifdef USE_SKINNING', + + ' attribute vec4 skinIndex;', + ' attribute vec4 skinWeight;', + + '#endif', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + prefixFragment = [ + + customExtensions, + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.matcap ? '#define USE_MATCAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapTypeDefine : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.envMap ? '#define ' + envMapBlendingDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + + parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', + + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + + ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', + ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below + ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + + parameters.dithering ? '#define DITHERING' : '', + + ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? + ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below + parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', + parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', + parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', + parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', + parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', + + parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + } + + vertexShader = parseIncludes( vertexShader ); + vertexShader = replaceLightNums( vertexShader, parameters ); + vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); + + fragmentShader = parseIncludes( fragmentShader ); + fragmentShader = replaceLightNums( fragmentShader, parameters ); + fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); + + vertexShader = unrollLoops( vertexShader ); + fragmentShader = unrollLoops( fragmentShader ); + + if ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) { + + var isGLSL3ShaderMaterial = false; + + var versionRegex = /^\s*#version\s+300\s+es\s*\n/; + + if ( material.isShaderMaterial && + vertexShader.match( versionRegex ) !== null && + fragmentShader.match( versionRegex ) !== null ) { + + isGLSL3ShaderMaterial = true; + + vertexShader = vertexShader.replace( versionRegex, '' ); + fragmentShader = fragmentShader.replace( versionRegex, '' ); + + } + + // GLSL 3.0 conversion + prefixVertex = [ + '#version 300 es\n', + '#define attribute in', + '#define varying out', + '#define texture2D texture' + ].join( '\n' ) + '\n' + prefixVertex; + + prefixFragment = [ + '#version 300 es\n', + '#define varying in', + isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', + isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', + '#define gl_FragDepthEXT gl_FragDepth', + '#define texture2D texture', + '#define textureCube texture', + '#define texture2DProj textureProj', + '#define texture2DLodEXT textureLod', + '#define texture2DProjLodEXT textureProjLod', + '#define textureCubeLodEXT textureLod', + '#define texture2DGradEXT textureGrad', + '#define texture2DProjGradEXT textureProjGrad', + '#define textureCubeGradEXT textureGrad' + ].join( '\n' ) + '\n' + prefixFragment; + + } + + var vertexGlsl = prefixVertex + vertexShader; + var fragmentGlsl = prefixFragment + fragmentShader; + + // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + var glVertexShader = WebGLShader( gl, 35633, vertexGlsl ); + var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl ); + + gl.attachShader( program, glVertexShader ); + gl.attachShader( program, glFragmentShader ); + + // Force a particular attribute to index 0. + + if ( material.index0AttributeName !== undefined ) { + + gl.bindAttribLocation( program, 0, material.index0AttributeName ); + + } else if ( parameters.morphTargets === true ) { + + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation( program, 0, 'position' ); + + } + + gl.linkProgram( program ); + + var programLog = gl.getProgramInfoLog( program ).trim(); + var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); + var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); + + var runnable = true; + var haveDiagnostics = true; + + // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); + // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); + + if ( gl.getProgramParameter( program, 35714 ) === false ) { + + runnable = false; + + console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); + + } else if ( programLog !== '' ) { + + console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); + + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; + + } + + if ( haveDiagnostics ) { + + this.diagnostics = { + + runnable: runnable, + material: material, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + + } + + // clean up + + gl.deleteShader( glVertexShader ); + gl.deleteShader( glFragmentShader ); + + // set up caching for uniform locations + + var cachedUniforms; + + this.getUniforms = function () { + + if ( cachedUniforms === undefined ) { + + cachedUniforms = new WebGLUniforms( gl, program, textures ); + + } + + return cachedUniforms; + + }; + + // set up caching for attribute locations + + var cachedAttributes; + + this.getAttributes = function () { + + if ( cachedAttributes === undefined ) { + + cachedAttributes = fetchAttributeLocations( gl, program ); + + } + + return cachedAttributes; + + }; + + // free resource + + this.destroy = function () { + + gl.deleteProgram( program ); + this.program = undefined; + + }; + + // DEPRECATED + + Object.defineProperties( this, { + + uniforms: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); + return this.getUniforms(); + + } + }, + + attributes: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); + return this.getAttributes(); + + } + } + + } ); + + + // + + this.name = shader.name; + this.id = programIdCount ++; + this.code = code; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + + return this; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLPrograms( renderer, extensions, capabilities, textures ) { + + var programs = []; + + var shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'phong', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite' + }; + + var parameterNames = [ + "precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", + "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "displacementMap", "specularMap", + "roughnessMap", "metalnessMap", "gradientMap", + "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp", + "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", + "maxBones", "useVertexTexture", "morphTargets", "morphNormals", + "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", + "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", + "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', + "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering" + ]; + + + function allocateBones( object ) { + + var skeleton = object.skeleton; + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + return 1024; + + } else { + + // default for when object is not specified + // ( for example when prebuilding shader to be used with multiple objects ) + // + // - leave some extra space for other uniforms + // - limit here is ANGLE's 254 max uniform vectors + // (up to 54 should be safe) + + var nVertexUniforms = capabilities.maxVertexUniforms; + var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); + + var maxBones = Math.min( nVertexMatrices, bones.length ); + + if ( maxBones < bones.length ) { + + console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); + return 0; + + } + + return maxBones; + + } + + } + + function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + + var encoding; + + if ( ! map ) { + + encoding = LinearEncoding; + + } else if ( map.isTexture ) { + + encoding = map.encoding; + + } else if ( map.isWebGLRenderTarget ) { + + console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); + encoding = map.texture.encoding; + + } + + // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. + if ( encoding === LinearEncoding && gammaOverrideLinear ) { + + encoding = GammaEncoding; + + } + + return encoding; + + } + + this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { + + var shaderID = shaderIDs[ material.type ]; + + // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; + var precision = capabilities.precision; + + if ( material.precision !== null ) { + + precision = capabilities.getMaxPrecision( material.precision ); + + if ( precision !== material.precision ) { + + console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + + } + + } + + var currentRenderTarget = renderer.getRenderTarget(); + + var parameters = { + + shaderID: shaderID, + + precision: precision, + supportsVertexTextures: capabilities.vertexTextures, + outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), + map: !! material.map, + mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), + matcap: !! material.matcap, + matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), + envMap: !! material.envMap, + envMapMode: material.envMap && material.envMap.mapping, + envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), + envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), + lightMap: !! material.lightMap, + aoMap: !! material.aoMap, + emissiveMap: !! material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), + bumpMap: !! material.bumpMap, + normalMap: !! material.normalMap, + objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, + displacementMap: !! material.displacementMap, + roughnessMap: !! material.roughnessMap, + metalnessMap: !! material.metalnessMap, + specularMap: !! material.specularMap, + alphaMap: !! material.alphaMap, + + gradientMap: !! material.gradientMap, + + combine: material.combine, + + vertexTangents: ( material.normalMap && material.vertexTangents ), + vertexColors: material.vertexColors, + + fog: !! fog, + useFog: material.fog, + fogExp: ( fog && fog.isFogExp2 ), + + flatShading: material.flatShading, + + sizeAttenuation: material.sizeAttenuation, + logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, + + skinning: material.skinning && maxBones > 0, + maxBones: maxBones, + useVertexTexture: capabilities.floatVertexTextures, + + morphTargets: material.morphTargets, + morphNormals: material.morphNormals, + maxMorphTargets: renderer.maxMorphTargets, + maxMorphNormals: renderer.maxMorphNormals, + + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + + numClippingPlanes: nClipPlanes, + numClipIntersection: nClipIntersection, + + dithering: material.dithering, + + shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + + toneMapping: renderer.toneMapping, + physicallyCorrectLights: renderer.physicallyCorrectLights, + + premultipliedAlpha: material.premultipliedAlpha, + + alphaTest: material.alphaTest, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + + depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false + + }; + + return parameters; + + }; + + this.getProgramCode = function ( material, parameters ) { + + var array = []; + + if ( parameters.shaderID ) { + + array.push( parameters.shaderID ); + + } else { + + array.push( material.fragmentShader ); + array.push( material.vertexShader ); + + } + + if ( material.defines !== undefined ) { + + for ( var name in material.defines ) { + + array.push( name ); + array.push( material.defines[ name ] ); + + } + + } + + for ( var i = 0; i < parameterNames.length; i ++ ) { + + array.push( parameters[ parameterNames[ i ] ] ); + + } + + array.push( material.onBeforeCompile.toString() ); + + array.push( renderer.gammaOutput ); + + array.push( renderer.gammaFactor ); + + return array.join(); + + }; + + this.acquireProgram = function ( material, shader, parameters, code ) { + + var program; + + // Check if code has been already compiled + for ( var p = 0, pl = programs.length; p < pl; p ++ ) { + + var programInfo = programs[ p ]; + + if ( programInfo.code === code ) { + + program = programInfo; + ++ program.usedTimes; + + break; + + } + + } + + if ( program === undefined ) { + + program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ); + programs.push( program ); + + } + + return program; + + }; + + this.releaseProgram = function ( program ) { + + if ( -- program.usedTimes === 0 ) { + + // Remove from unordered set + var i = programs.indexOf( program ); + programs[ i ] = programs[ programs.length - 1 ]; + programs.pop(); + + // Free WebGL resources + program.destroy(); + + } + + }; + + // Exposed for resource monitoring & error feedback via renderer.info: + this.programs = programs; + + } + + /** + * @author fordacious / fordacious.github.io + */ + + function WebGLProperties() { + + var properties = new WeakMap(); + + function get( object ) { + + var map = properties.get( object ); + + if ( map === undefined ) { + + map = {}; + properties.set( object, map ); + + } + + return map; + + } + + function remove( object ) { + + properties.delete( object ); + + } + + function update( object, key, value ) { + + properties.get( object )[ key ] = value; + + } + + function dispose() { + + properties = new WeakMap(); + + } + + return { + get: get, + remove: remove, + update: update, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function painterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.program !== b.program ) { + + return a.program.id - b.program.id; + + } else if ( a.material.id !== b.material.id ) { + + return a.material.id - b.material.id; + + } else if ( a.z !== b.z ) { + + return a.z - b.z; + + } else { + + return a.id - b.id; + + } + + } + + function reversePainterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return a.id - b.id; + + } + + } + + + function WebGLRenderList() { + + var renderItems = []; + var renderItemsIndex = 0; + + var opaque = []; + var transparent = []; + + var defaultProgram = { id: - 1 }; + + function init() { + + renderItemsIndex = 0; + + opaque.length = 0; + transparent.length = 0; + + } + + function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { + + var renderItem = renderItems[ renderItemsIndex ]; + + if ( renderItem === undefined ) { + + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + program: material.program || defaultProgram, + groupOrder: groupOrder, + renderOrder: object.renderOrder, + z: z, + group: group + }; + + renderItems[ renderItemsIndex ] = renderItem; + + } else { + + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.program = material.program || defaultProgram; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + + } + + renderItemsIndex ++; + + return renderItem; + + } + + function push( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).push( renderItem ); + + } + + function unshift( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).unshift( renderItem ); + + } + + function sort() { + + if ( opaque.length > 1 ) opaque.sort( painterSortStable ); + if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); + + } + + return { + opaque: opaque, + transparent: transparent, + + init: init, + push: push, + unshift: unshift, + + sort: sort + }; + + } + + function WebGLRenderLists() { + + var lists = {}; + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + delete lists[ scene.id ]; + + } + + function get( scene, camera ) { + + var cameras = lists[ scene.id ]; + var list; + if ( cameras === undefined ) { + + list = new WebGLRenderList(); + lists[ scene.id ] = {}; + lists[ scene.id ][ camera.id ] = list; + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + list = cameras[ camera.id ]; + if ( list === undefined ) { + + list = new WebGLRenderList(); + cameras[ camera.id ] = list; + + } + + } + + return list; + + } + + function dispose() { + + lists = {}; + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function UniformsCache() { + + var lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + var uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color(), + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + // TODO (abelnation): set RectAreaLight shadow uniforms + }; + break; + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + + } + + var count = 0; + + function WebGLLights() { + + var cache = new UniformsCache(); + + var state = { + + id: count ++, + + hash: { + stateID: - 1, + directionalLength: - 1, + pointLength: - 1, + spotLength: - 1, + rectAreaLength: - 1, + hemiLength: - 1, + shadowsLength: - 1 + }, + + ambient: [ 0, 0, 0 ], + directional: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotShadowMap: [], + spotShadowMatrix: [], + rectArea: [], + point: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [] + + }; + + var vector3 = new Vector3(); + var matrix4 = new Matrix4(); + var matrix42 = new Matrix4(); + + function setup( lights, shadows, camera ) { + + var r = 0, g = 0, b = 0; + + var directionalLength = 0; + var pointLength = 0; + var spotLength = 0; + var rectAreaLength = 0; + var hemiLength = 0; + + var viewMatrix = camera.matrixWorldInverse; + + for ( var i = 0, l = lights.length; i < l; i ++ ) { + + var light = lights[ i ]; + + var color = light.color; + var intensity = light.intensity; + var distance = light.distance; + + var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + + if ( light.isAmbientLight ) { + + r += color.r * intensity; + g += color.g * intensity; + b += color.b * intensity; + + } else if ( light.isDirectionalLight ) { + + var uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.directionalShadowMap[ directionalLength ] = shadowMap; + state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; + state.directional[ directionalLength ] = uniforms; + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.distance = distance; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.coneCos = Math.cos( light.angle ); + uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.spotShadowMap[ spotLength ] = shadowMap; + state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; + state.spot[ spotLength ] = uniforms; + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + var uniforms = cache.get( light ); + + // (a) intensity is the total visible light emitted + //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); + + // (b) intensity is the brightness of the light + uniforms.color.copy( color ).multiplyScalar( intensity ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + // extract local rotation of light to derive width/height half vectors + matrix42.identity(); + matrix4.copy( light.matrixWorld ); + matrix4.premultiply( viewMatrix ); + matrix42.extractRotation( matrix4 ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + uniforms.halfWidth.applyMatrix4( matrix42 ); + uniforms.halfHeight.applyMatrix4( matrix42 ); + + // TODO (abelnation): RectAreaLight distance? + // uniforms.distance = distance; + + state.rectArea[ rectAreaLength ] = uniforms; + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + uniforms.shadowCameraNear = shadow.camera.near; + uniforms.shadowCameraFar = shadow.camera.far; + + } + + state.pointShadowMap[ pointLength ] = shadowMap; + state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; + state.point[ pointLength ] = uniforms; + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + var uniforms = cache.get( light ); + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.normalize(); + + uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); + uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + + state.hemi[ hemiLength ] = uniforms; + + hemiLength ++; + + } + + } + + state.ambient[ 0 ] = r; + state.ambient[ 1 ] = g; + state.ambient[ 2 ] = b; + + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + + state.hash.stateID = state.id; + state.hash.directionalLength = directionalLength; + state.hash.pointLength = pointLength; + state.hash.spotLength = spotLength; + state.hash.rectAreaLength = rectAreaLength; + state.hash.hemiLength = hemiLength; + state.hash.shadowsLength = shadows.length; + + } + + return { + setup: setup, + state: state + }; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLRenderState() { + + var lights = new WebGLLights(); + + var lightsArray = []; + var shadowsArray = []; + + function init() { + + lightsArray.length = 0; + shadowsArray.length = 0; + + } + + function pushLight( light ) { + + lightsArray.push( light ); + + } + + function pushShadow( shadowLight ) { + + shadowsArray.push( shadowLight ); + + } + + function setupLights( camera ) { + + lights.setup( lightsArray, shadowsArray, camera ); + + } + + var state = { + lightsArray: lightsArray, + shadowsArray: shadowsArray, + + lights: lights + }; + + return { + init: init, + state: state, + setupLights: setupLights, + + pushLight: pushLight, + pushShadow: pushShadow + }; + + } + + function WebGLRenderStates() { + + var renderStates = {}; + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + delete renderStates[ scene.id ]; + + } + + function get( scene, camera ) { + + var renderState; + + if ( renderStates[ scene.id ] === undefined ) { + + renderState = new WebGLRenderState(); + renderStates[ scene.id ] = {}; + renderStates[ scene.id ][ camera.id ] = renderState; + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + if ( renderStates[ scene.id ][ camera.id ] === undefined ) { + + renderState = new WebGLRenderState(); + renderStates[ scene.id ][ camera.id ] = renderState; + + } else { + + renderState = renderStates[ scene.id ][ camera.id ]; + + } + + } + + return renderState; + + } + + function dispose() { + + renderStates = {}; + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / https://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * opacity: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * } + */ + + function MeshDepthMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDepthMaterial'; + + this.depthPacking = BasicDepthPacking; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDepthMaterial.prototype = Object.create( Material.prototype ); + MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; + + MeshDepthMaterial.prototype.isMeshDepthMaterial = true; + + MeshDepthMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.depthPacking = source.depthPacking; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * referencePosition: , + * nearDistance: , + * farDistance: , + * + * skinning: , + * morphTargets: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: + * + * } + */ + + function MeshDistanceMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDistanceMaterial'; + + this.referencePosition = new Vector3(); + this.nearDistance = 1; + this.farDistance = 1000; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDistanceMaterial.prototype = Object.create( Material.prototype ); + MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; + + MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; + + MeshDistanceMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.referencePosition.copy( source.referencePosition ); + this.nearDistance = source.nearDistance; + this.farDistance = source.farDistance; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { + + var _frustum = new Frustum(), + _projScreenMatrix = new Matrix4(), + + _shadowMapSize = new Vector2(), + _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), + + _lookTarget = new Vector3(), + _lightPositionWorld = new Vector3(), + + _MorphingFlag = 1, + _SkinningFlag = 2, + + _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, + + _depthMaterials = new Array( _NumberOfMaterialVariants ), + _distanceMaterials = new Array( _NumberOfMaterialVariants ), + + _materialCache = {}; + + var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; + + var cubeDirections = [ + new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), + new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) + ]; + + var cubeUps = [ + new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), + new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) + ]; + + var cube2DViewPorts = [ + new Vector4(), new Vector4(), new Vector4(), + new Vector4(), new Vector4(), new Vector4() + ]; + + // init + + for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { + + var useMorphing = ( i & _MorphingFlag ) !== 0; + var useSkinning = ( i & _SkinningFlag ) !== 0; + + var depthMaterial = new MeshDepthMaterial( { + + depthPacking: RGBADepthPacking, + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _depthMaterials[ i ] = depthMaterial; + + // + + var distanceMaterial = new MeshDistanceMaterial( { + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _distanceMaterials[ i ] = distanceMaterial; + + } + + // + + var scope = this; + + this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + + this.type = PCFShadowMap; + + this.render = function ( lights, scene, camera ) { + + if ( scope.enabled === false ) return; + if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; + + if ( lights.length === 0 ) return; + + var currentRenderTarget = _renderer.getRenderTarget(); + + var _state = _renderer.state; + + // Set GL state for depth map. + _state.setBlending( NoBlending ); + _state.buffers.color.setClear( 1, 1, 1, 1 ); + _state.buffers.depth.setTest( true ); + _state.setScissorTest( false ); + + // render depth map + + var faceCount; + + for ( var i = 0, il = lights.length; i < il; i ++ ) { + + var light = lights[ i ]; + var shadow = light.shadow; + var isPointLight = light && light.isPointLight; + + if ( shadow === undefined ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + continue; + + } + + var shadowCamera = shadow.camera; + + _shadowMapSize.copy( shadow.mapSize ); + _shadowMapSize.min( _maxShadowMapSize ); + + if ( isPointLight ) { + + var vpWidth = _shadowMapSize.x; + var vpHeight = _shadowMapSize.y; + + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + + // positive X + cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); + // negative X + cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); + // positive Z + cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); + // negative Z + cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); + // positive Y + cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); + // negative Y + cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); + + _shadowMapSize.x *= 4.0; + _shadowMapSize.y *= 2.0; + + } + + if ( shadow.map === null ) { + + var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + ".shadowMap"; + + shadowCamera.updateProjectionMatrix(); + + } + + if ( shadow.isSpotLightShadow ) { + + shadow.update( light ); + + } + + var shadowMap = shadow.map; + var shadowMatrix = shadow.matrix; + + _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + shadowCamera.position.copy( _lightPositionWorld ); + + if ( isPointLight ) { + + faceCount = 6; + + // for point lights we set the shadow matrix to be a translation-only matrix + // equal to inverse of the light's position + + shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); + + } else { + + faceCount = 1; + + _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + // compute shadow matrix + + shadowMatrix.set( + 0.5, 0.0, 0.0, 0.5, + 0.0, 0.5, 0.0, 0.5, + 0.0, 0.0, 0.5, 0.5, + 0.0, 0.0, 0.0, 1.0 + ); + + shadowMatrix.multiply( shadowCamera.projectionMatrix ); + shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); + + } + + _renderer.setRenderTarget( shadowMap ); + _renderer.clear(); + + // render shadow map for each cube face (if omni-directional) or + // run a single pass if not + + for ( var face = 0; face < faceCount; face ++ ) { + + if ( isPointLight ) { + + _lookTarget.copy( shadowCamera.position ); + _lookTarget.add( cubeDirections[ face ] ); + shadowCamera.up.copy( cubeUps[ face ] ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + var vpDimensions = cube2DViewPorts[ face ]; + _state.viewport( vpDimensions ); + + } + + // update camera matrices and frustum + + _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + // set object matrices & frustum culling + + renderObject( scene, camera, shadowCamera, isPointLight ); + + } + + } + + scope.needsUpdate = false; + + _renderer.setRenderTarget( currentRenderTarget ); + + }; + + function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { + + var geometry = object.geometry; + + var result = null; + + var materialVariants = _depthMaterials; + var customMaterial = object.customDepthMaterial; + + if ( isPointLight ) { + + materialVariants = _distanceMaterials; + customMaterial = object.customDistanceMaterial; + + } + + if ( ! customMaterial ) { + + var useMorphing = false; + + if ( material.morphTargets ) { + + if ( geometry && geometry.isBufferGeometry ) { + + useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; + + } else if ( geometry && geometry.isGeometry ) { + + useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; + + } + + } + + if ( object.isSkinnedMesh && material.skinning === false ) { + + console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); + + } + + var useSkinning = object.isSkinnedMesh && material.skinning; + + var variantIndex = 0; + + if ( useMorphing ) variantIndex |= _MorphingFlag; + if ( useSkinning ) variantIndex |= _SkinningFlag; + + result = materialVariants[ variantIndex ]; + + } else { + + result = customMaterial; + + } + + if ( _renderer.localClippingEnabled && + material.clipShadows === true && + material.clippingPlanes.length !== 0 ) { + + // in this case we need a unique material instance reflecting the + // appropriate state + + var keyA = result.uuid, keyB = material.uuid; + + var materialsForVariant = _materialCache[ keyA ]; + + if ( materialsForVariant === undefined ) { + + materialsForVariant = {}; + _materialCache[ keyA ] = materialsForVariant; + + } + + var cachedMaterial = materialsForVariant[ keyB ]; + + if ( cachedMaterial === undefined ) { + + cachedMaterial = result.clone(); + materialsForVariant[ keyB ] = cachedMaterial; + + } + + result = cachedMaterial; + + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; + + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if ( isPointLight && result.isMeshDistanceMaterial ) { + + result.referencePosition.copy( lightPositionWorld ); + result.nearDistance = shadowCameraNear; + result.farDistance = shadowCameraFar; + + } + + return result; + + } + + function renderObject( object, camera, shadowCamera, isPointLight ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + + if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + + var geometry = _objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var k = 0, kl = groups.length; k < kl; k ++ ) { + + var group = groups[ k ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + + } + + } + + } else if ( material.visible ) { + + var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + renderObject( children[ i ], camera, shadowCamera, isPointLight ); + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLState( gl, extensions, utils, capabilities ) { + + function ColorBuffer() { + + var locked = false; + + var color = new Vector4(); + var currentColorMask = null; + var currentColorClear = new Vector4( 0, 0, 0, 0 ); + + return { + + setMask: function ( colorMask ) { + + if ( currentColorMask !== colorMask && ! locked ) { + + gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + currentColorMask = colorMask; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( r, g, b, a, premultipliedAlpha ) { + + if ( premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + color.set( r, g, b, a ); + + if ( currentColorClear.equals( color ) === false ) { + + gl.clearColor( r, g, b, a ); + currentColorClear.copy( color ); + + } + + }, + + reset: function () { + + locked = false; + + currentColorMask = null; + currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state + + } + + }; + + } + + function DepthBuffer() { + + var locked = false; + + var currentDepthMask = null; + var currentDepthFunc = null; + var currentDepthClear = null; + + return { + + setTest: function ( depthTest ) { + + if ( depthTest ) { + + enable( 2929 ); + + } else { + + disable( 2929 ); + + } + + }, + + setMask: function ( depthMask ) { + + if ( currentDepthMask !== depthMask && ! locked ) { + + gl.depthMask( depthMask ); + currentDepthMask = depthMask; + + } + + }, + + setFunc: function ( depthFunc ) { + + if ( currentDepthFunc !== depthFunc ) { + + if ( depthFunc ) { + + switch ( depthFunc ) { + + case NeverDepth: + + gl.depthFunc( 512 ); + break; + + case AlwaysDepth: + + gl.depthFunc( 519 ); + break; + + case LessDepth: + + gl.depthFunc( 513 ); + break; + + case LessEqualDepth: + + gl.depthFunc( 515 ); + break; + + case EqualDepth: + + gl.depthFunc( 514 ); + break; + + case GreaterEqualDepth: + + gl.depthFunc( 518 ); + break; + + case GreaterDepth: + + gl.depthFunc( 516 ); + break; + + case NotEqualDepth: + + gl.depthFunc( 517 ); + break; + + default: + + gl.depthFunc( 515 ); + + } + + } else { + + gl.depthFunc( 515 ); + + } + + currentDepthFunc = depthFunc; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( depth ) { + + if ( currentDepthClear !== depth ) { + + gl.clearDepth( depth ); + currentDepthClear = depth; + + } + + }, + + reset: function () { + + locked = false; + + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + + } + + }; + + } + + function StencilBuffer() { + + var locked = false; + + var currentStencilMask = null; + var currentStencilFunc = null; + var currentStencilRef = null; + var currentStencilFuncMask = null; + var currentStencilFail = null; + var currentStencilZFail = null; + var currentStencilZPass = null; + var currentStencilClear = null; + + return { + + setTest: function ( stencilTest ) { + + if ( stencilTest ) { + + enable( 2960 ); + + } else { + + disable( 2960 ); + + } + + }, + + setMask: function ( stencilMask ) { + + if ( currentStencilMask !== stencilMask && ! locked ) { + + gl.stencilMask( stencilMask ); + currentStencilMask = stencilMask; + + } + + }, + + setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + + if ( currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask ) { + + gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + + } + + }, + + setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + + if ( currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass ) { + + gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( stencil ) { + + if ( currentStencilClear !== stencil ) { + + gl.clearStencil( stencil ); + currentStencilClear = stencil; + + } + + }, + + reset: function () { + + locked = false; + + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + + } + + }; + + } + + // + + var colorBuffer = new ColorBuffer(); + var depthBuffer = new DepthBuffer(); + var stencilBuffer = new StencilBuffer(); + + var maxVertexAttributes = gl.getParameter( 34921 ); + var newAttributes = new Uint8Array( maxVertexAttributes ); + var enabledAttributes = new Uint8Array( maxVertexAttributes ); + var attributeDivisors = new Uint8Array( maxVertexAttributes ); + + var enabledCapabilities = {}; + + var compressedTextureFormats = null; + + var currentProgram = null; + + var currentBlendingEnabled = null; + var currentBlending = null; + var currentBlendEquation = null; + var currentBlendSrc = null; + var currentBlendDst = null; + var currentBlendEquationAlpha = null; + var currentBlendSrcAlpha = null; + var currentBlendDstAlpha = null; + var currentPremultipledAlpha = false; + + var currentFlipSided = null; + var currentCullFace = null; + + var currentLineWidth = null; + + var currentPolygonOffsetFactor = null; + var currentPolygonOffsetUnits = null; + + var maxTextures = gl.getParameter( 35661 ); + + var lineWidthAvailable = false; + var version = 0; + var glVersion = gl.getParameter( 7938 ); + + if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { + + version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 1.0 ); + + } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { + + version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 2.0 ); + + } + + var currentTextureSlot = null; + var currentBoundTextures = {}; + + var currentScissor = new Vector4(); + var currentViewport = new Vector4(); + + function createTexture( type, target, count ) { + + var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + var texture = gl.createTexture(); + + gl.bindTexture( type, texture ); + gl.texParameteri( type, 10241, 9728 ); + gl.texParameteri( type, 10240, 9728 ); + + for ( var i = 0; i < count; i ++ ) { + + gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); + + } + + return texture; + + } + + var emptyTextures = {}; + emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); + emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); + + // init + + colorBuffer.setClear( 0, 0, 0, 1 ); + depthBuffer.setClear( 1 ); + stencilBuffer.setClear( 0 ); + + enable( 2929 ); + depthBuffer.setFunc( LessEqualDepth ); + + setFlipSided( false ); + setCullFace( CullFaceBack ); + enable( 2884 ); + + setBlending( NoBlending ); + + // + + function initAttributes() { + + for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + + newAttributes[ i ] = 0; + + } + + } + + function enableAttribute( attribute ) { + + enableAttributeAndDivisor( attribute, 0 ); + + } + + function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + + var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); + + extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); + attributeDivisors[ attribute ] = meshPerAttribute; + + } + + } + + function disableUnusedAttributes() { + + for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + } + + function enable( id ) { + + if ( enabledCapabilities[ id ] !== true ) { + + gl.enable( id ); + enabledCapabilities[ id ] = true; + + } + + } + + function disable( id ) { + + if ( enabledCapabilities[ id ] !== false ) { + + gl.disable( id ); + enabledCapabilities[ id ] = false; + + } + + } + + function getCompressedTextureFormats() { + + if ( compressedTextureFormats === null ) { + + compressedTextureFormats = []; + + if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || + extensions.get( 'WEBGL_compressed_texture_s3tc' ) || + extensions.get( 'WEBGL_compressed_texture_etc1' ) || + extensions.get( 'WEBGL_compressed_texture_astc' ) ) { + + var formats = gl.getParameter( 34467 ); + + for ( var i = 0; i < formats.length; i ++ ) { + + compressedTextureFormats.push( formats[ i ] ); + + } + + } + + } + + return compressedTextureFormats; + + } + + function useProgram( program ) { + + if ( currentProgram !== program ) { + + gl.useProgram( program ); + + currentProgram = program; + + return true; + + } + + return false; + + } + + function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { + + if ( blending === NoBlending ) { + + if ( currentBlendingEnabled ) { + + disable( 3042 ); + currentBlendingEnabled = false; + + } + + return; + + } + + if ( ! currentBlendingEnabled ) { + + enable( 3042 ); + currentBlendingEnabled = true; + + } + + if ( blending !== CustomBlending ) { + + if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + + if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { + + gl.blendEquation( 32774 ); + + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + + } + + if ( premultipliedAlpha ) { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 1, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 1, 1 ); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate( 0, 0, 769, 771 ); + break; + + case MultiplyBlending: + gl.blendFuncSeparate( 0, 768, 0, 770 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } else { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 770, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 770, 1 ); + break; + + case SubtractiveBlending: + gl.blendFunc( 0, 769 ); + break; + + case MultiplyBlending: + gl.blendFunc( 0, 768 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } + + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + + } + + return; + + } + + // custom blending + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + currentBlending = blending; + currentPremultipledAlpha = null; + + } + + function setMaterial( material, frontFaceCW ) { + + material.side === DoubleSide + ? disable( 2884 ) + : enable( 2884 ); + + var flipSided = ( material.side === BackSide ); + if ( frontFaceCW ) flipSided = ! flipSided; + + setFlipSided( flipSided ); + + ( material.blending === NormalBlending && material.transparent === false ) + ? setBlending( NoBlending ) + : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); + + depthBuffer.setFunc( material.depthFunc ); + depthBuffer.setTest( material.depthTest ); + depthBuffer.setMask( material.depthWrite ); + colorBuffer.setMask( material.colorWrite ); + + setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + } + + // + + function setFlipSided( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( 2304 ); + + } else { + + gl.frontFace( 2305 ); + + } + + currentFlipSided = flipSided; + + } + + } + + function setCullFace( cullFace ) { + + if ( cullFace !== CullFaceNone ) { + + enable( 2884 ); + + if ( cullFace !== currentCullFace ) { + + if ( cullFace === CullFaceBack ) { + + gl.cullFace( 1029 ); + + } else if ( cullFace === CullFaceFront ) { + + gl.cullFace( 1028 ); + + } else { + + gl.cullFace( 1032 ); + + } + + } + + } else { + + disable( 2884 ); + + } + + currentCullFace = cullFace; + + } + + function setLineWidth( width ) { + + if ( width !== currentLineWidth ) { + + if ( lineWidthAvailable ) gl.lineWidth( width ); + + currentLineWidth = width; + + } + + } + + function setPolygonOffset( polygonOffset, factor, units ) { + + if ( polygonOffset ) { + + enable( 32823 ); + + if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + } else { + + disable( 32823 ); + + } + + } + + function setScissorTest( scissorTest ) { + + if ( scissorTest ) { + + enable( 3089 ); + + } else { + + disable( 3089 ); + + } + + } + + // texture + + function activeTexture( webglSlot ) { + + if ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1; + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + } + + function bindTexture( webglType, webglTexture ) { + + if ( currentTextureSlot === null ) { + + activeTexture(); + + } + + var boundTexture = currentBoundTextures[ currentTextureSlot ]; + + if ( boundTexture === undefined ) { + + boundTexture = { type: undefined, texture: undefined }; + currentBoundTextures[ currentTextureSlot ] = boundTexture; + + } + + if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + + gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + + } + + } + + function compressedTexImage2D() { + + try { + + gl.compressedTexImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage2D() { + + try { + + gl.texImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage3D() { + + try { + + gl.texImage3D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + // + + function scissor( scissor ) { + + if ( currentScissor.equals( scissor ) === false ) { + + gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); + currentScissor.copy( scissor ); + + } + + } + + function viewport( viewport ) { + + if ( currentViewport.equals( viewport ) === false ) { + + gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); + currentViewport.copy( viewport ); + + } + + } + + // + + function reset() { + + for ( var i = 0; i < enabledAttributes.length; i ++ ) { + + if ( enabledAttributes[ i ] === 1 ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + enabledCapabilities = {}; + + compressedTextureFormats = null; + + currentTextureSlot = null; + currentBoundTextures = {}; + + currentProgram = null; + + currentBlending = null; + + currentFlipSided = null; + currentCullFace = null; + + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + + } + + return { + + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + + initAttributes: initAttributes, + enableAttribute: enableAttribute, + enableAttributeAndDivisor: enableAttributeAndDivisor, + disableUnusedAttributes: disableUnusedAttributes, + enable: enable, + disable: disable, + getCompressedTextureFormats: getCompressedTextureFormats, + + useProgram: useProgram, + + setBlending: setBlending, + setMaterial: setMaterial, + + setFlipSided: setFlipSided, + setCullFace: setCullFace, + + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + + setScissorTest: setScissorTest, + + activeTexture: activeTexture, + bindTexture: bindTexture, + compressedTexImage2D: compressedTexImage2D, + texImage2D: texImage2D, + texImage3D: texImage3D, + + scissor: scissor, + viewport: viewport, + + reset: reset + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { + + var _videoTextures = {}; + var _canvas; + + // + + var useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'; + + function createCanvas( width, height ) { + + // Use OffscreenCanvas when available. Specially needed in web workers + + return useOffscreenCanvas ? + new OffscreenCanvas( width, height ) : + document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + + } + + function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) { + + var scale = 1; + + // handle case if texture exceeds max size + + if ( image.width > maxSize || image.height > maxSize ) { + + scale = maxSize / Math.max( image.width, image.height ); + + } + + // only perform resize if necessary + + if ( scale < 1 || needsPowerOfTwo === true ) { + + // only perform resize for certain image types + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { + + var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor; + + var width = floor( scale * image.width ); + var height = floor( scale * image.height ); + + if ( _canvas === undefined ) _canvas = createCanvas( width, height ); + + // cube textures can't reuse the same canvas + + var canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas; + + canvas.width = width; + canvas.height = height; + + var context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, width, height ); + + console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' ); + + return canvas; + + } else { + + if ( 'data' in image ) { + + console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); + + } + + return image; + + } + + } + + return image; + + } + + function isPowerOfTwo( image ) { + + return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); + + } + + function textureNeedsPowerOfTwo( texture ) { + + if ( capabilities.isWebGL2 ) return false; + + return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || + ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); + + } + + function textureNeedsGenerateMipmaps( texture, supportsMips ) { + + return texture.generateMipmaps && supportsMips && + texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + + } + + function generateMipmap( target, texture, width, height ) { + + _gl.generateMipmap( target ); + + var textureProperties = properties.get( texture ); + + // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 + textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; + + } + + function getInternalFormat( glFormat, glType ) { + + if ( ! capabilities.isWebGL2 ) return glFormat; + + var internalFormat = glFormat; + + if ( glFormat === 6403 ) { + + if ( glType === 5126 ) internalFormat = 33326; + if ( glType === 5131 ) internalFormat = 33325; + if ( glType === 5121 ) internalFormat = 33321; + + } + + if ( glFormat === 6407 ) { + + if ( glType === 5126 ) internalFormat = 34837; + if ( glType === 5131 ) internalFormat = 34843; + if ( glType === 5121 ) internalFormat = 32849; + + } + + if ( glFormat === 6408 ) { + + if ( glType === 5126 ) internalFormat = 34836; + if ( glType === 5131 ) internalFormat = 34842; + if ( glType === 5121 ) internalFormat = 32856; + + } + + if ( internalFormat === 33325 || internalFormat === 33326 || + internalFormat === 34842 || internalFormat === 34836 ) { + + extensions.get( 'EXT_color_buffer_float' ); + + } else if ( internalFormat === 34843 || internalFormat === 34837 ) { + + console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' ); + + } + + return internalFormat; + + } + + // Fallback filters for non-power-of-2 textures + + function filterFallback( f ) { + + if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { + + return 9728; + + } + + return 9729; + + } + + // + + function onTextureDispose( event ) { + + var texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + deallocateTexture( texture ); + + if ( texture.isVideoTexture ) { + + delete _videoTextures[ texture.id ]; + + } + + info.memory.textures --; + + } + + function onRenderTargetDispose( event ) { + + var renderTarget = event.target; + + renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + + deallocateRenderTarget( renderTarget ); + + info.memory.textures --; + + } + + // + + function deallocateTexture( texture ) { + + var textureProperties = properties.get( texture ); + + if ( textureProperties.__webglInit === undefined ) return; + + _gl.deleteTexture( textureProperties.__webglTexture ); + + properties.remove( texture ); + + } + + function deallocateRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + if ( ! renderTarget ) return; + + if ( textureProperties.__webglTexture !== undefined ) { + + _gl.deleteTexture( textureProperties.__webglTexture ); + + } + + if ( renderTarget.depthTexture ) { + + renderTarget.depthTexture.dispose(); + + } + + if ( renderTarget.isWebGLRenderTargetCube ) { + + for ( var i = 0; i < 6; i ++ ) { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); + + } + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); + + } + + properties.remove( renderTarget.texture ); + properties.remove( renderTarget ); + + } + + // + + var textureUnits = 0; + + function resetTextureUnits() { + + textureUnits = 0; + + } + + function allocateTextureUnit() { + + var textureUnit = textureUnits; + + if ( textureUnit >= capabilities.maxTextures ) { + + console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + + } + + textureUnits += 1; + + return textureUnit; + + } + + // + + function setTexture2D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.isVideoTexture ) updateVideoTexture( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + var image = texture.image; + + if ( image === undefined ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); + + } else if ( image.complete === false ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); + + } else { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 3553, textureProperties.__webglTexture ); + + } + + function setTexture2DArray( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 35866, textureProperties.__webglTexture ); + + } + + function setTexture3D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 32879, textureProperties.__webglTexture ); + + } + + function setTextureCube( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.image.length === 6 ) { + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + + var isCompressed = ( texture && texture.isCompressedTexture ); + var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + + var cubeImage = []; + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed && ! isDataTexture ) { + + cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize ); + + } else { + + cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + + } + + } + + var image = cubeImage[ 0 ], + supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( 34067, texture, supportsMips ); + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed ) { + + if ( isDataTexture ) { + + state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + + } else { + + state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); + + } + + } else { + + var mipmap, mipmaps = cubeImage[ i ].mipmaps; + + for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { + + mipmap = mipmaps[ j ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + + } + + } else { + + state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } + + if ( ! isCompressed ) { + + textureProperties.__maxMipLevel = 0; + + } else { + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + // We assume images for cube map have the same size. + generateMipmap( 34067, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } else { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + } + + } + + } + + function setTextureCubeDynamic( texture, slot ) { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, properties.get( texture ).__webglTexture ); + + } + + function setTextureParameters( textureType, texture, supportsMips ) { + + var extension; + + if ( supportsMips ) { + + _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); + _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) ); + + } + + _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); + + } else { + + _gl.texParameteri( textureType, 10242, 33071 ); + _gl.texParameteri( textureType, 10243, 33071 ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, 33071 ); + + } + + if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); + + } + + _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); + + if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); + + } + + } + + extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension ) { + + if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; + if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return; + + if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + + _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); + properties.get( texture ).__currentAnisotropy = texture.anisotropy; + + } + + } + + } + + function initTexture( textureProperties, texture ) { + + if ( textureProperties.__webglInit === undefined ) { + + textureProperties.__webglInit = true; + + texture.addEventListener( 'dispose', onTextureDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + } + + } + + function uploadTexture( textureProperties, texture, slot ) { + + var textureType = 3553; + + if ( texture.isDataTexture2DArray ) textureType = 35866; + if ( texture.isDataTexture3D ) textureType = 32879; + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( textureType, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + _gl.pixelStorei( 37441, texture.premultiplyAlpha ); + _gl.pixelStorei( 3317, texture.unpackAlignment ); + + var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false; + var image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize ); + + var supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( textureType, texture, supportsMips ); + + var mipmap, mipmaps = texture.mipmaps; + + if ( texture.isDepthTexture ) { + + // populate depth texture with dummy data + + glInternalFormat = 6402; + + if ( texture.type === FloatType ) { + + if ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); + glInternalFormat = 36012; + + } else if ( capabilities.isWebGL2 ) { + + // WebGL 2.0 requires signed internalformat for glTexImage2D + glInternalFormat = 33189; + + } + + if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); + + texture.type = UnsignedShortType; + glType = utils.convert( texture.type ); + + } + + } + + // Depth stencil textures need the DEPTH_STENCIL internal format + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.format === DepthStencilFormat ) { + + glInternalFormat = 34041; + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedInt248Type ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); + + texture.type = UnsignedInt248Type; + glType = utils.convert( texture.type ); + + } + + } + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); + + } else if ( texture.isDataTexture ) { + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } + + } else if ( texture.isCompressedTexture ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else if ( texture.isDataTexture2DArray ) { + + state.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else if ( texture.isDataTexture3D ) { + + state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else { + + // regular Texture (image, video, canvas) + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); + textureProperties.__maxMipLevel = 0; + + } + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + generateMipmap( 3553, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } + + // Render targets + + // Setup storage for target texture and bind it to correct framebuffer + function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); + _gl.bindFramebuffer( 36160, framebuffer ); + _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); + _gl.bindFramebuffer( 36160, null ); + + } + + // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { + + _gl.bindRenderbuffer( 36161, renderbuffer ); + + if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); + + } + + _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); + + } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 34041, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); + + } + + + _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); + + } else { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height ); + + } + + } + + _gl.bindRenderbuffer( 36161, null ); + + } + + // Setup resources for a Depth Texture for a FBO (needs an extension) + function setupDepthTexture( framebuffer, renderTarget ) { + + var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); + if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); + + _gl.bindFramebuffer( 36160, framebuffer ); + + if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + + throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + + } + + // upload an empty depth texture with framebuffer size + if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height ) { + + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + + } + + setTexture2D( renderTarget.depthTexture, 0 ); + + var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; + + if ( renderTarget.depthTexture.format === DepthFormat ) { + + _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); + + } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + + _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); + + } else { + + throw new Error( 'Unknown depthTexture format' ); + + } + + } + + // Setup GL resources for a non-texture depth buffer + function setupDepthRenderbuffer( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + + if ( renderTarget.depthTexture ) { + + if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); + + setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + + } else { + + if ( isCube ) { + + renderTargetProperties.__webglDepthbuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); + renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + + } + + } else { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + + } + + } + + _gl.bindFramebuffer( 36160, null ); + + } + + // Set up GL resources for the render target + function setupRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true ); + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + // Setup framebuffer + + if ( isCube ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + if ( isMultisample ) { + + if ( capabilities.isWebGL2 ) { + + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); + + _gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer ); + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + var samples = getRenderTargetSamples( renderTarget ); + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer ); + _gl.bindRenderbuffer( 36161, null ); + + if ( renderTarget.depthBuffer ) { + + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); + + } + + _gl.bindFramebuffer( 36160, null ); + + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } + + } + + // Setup color buffer + + if ( isCube ) { + + state.bindTexture( 34067, textureProperties.__webglTexture ); + setTextureParameters( 34067, renderTarget.texture, supportsMips ); + + for ( var i = 0; i < 6; i ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); + + } + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 34067, null ); + + } else { + + state.bindTexture( 3553, textureProperties.__webglTexture ); + setTextureParameters( 3553, renderTarget.texture, supportsMips ); + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 3553, null ); + + } + + // Setup depth and stencil buffers + + if ( renderTarget.depthBuffer ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + function updateRenderTargetMipmap( renderTarget ) { + + var texture = renderTarget.texture; + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; + var webglTexture = properties.get( texture ).__webglTexture; + + state.bindTexture( target, webglTexture ); + generateMipmap( target, texture, renderTarget.width, renderTarget.height ); + state.bindTexture( target, null ); + + } + + } + + function updateMultisampleRenderTarget( renderTarget ) { + + if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + if ( capabilities.isWebGL2 ) { + + var renderTargetProperties = properties.get( renderTarget ); + + _gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer ); + + var width = renderTarget.width; + var height = renderTarget.height; + var mask = 16384; + + if ( renderTarget.depthBuffer ) mask |= 256; + if ( renderTarget.stencilBuffer ) mask |= 1024; + + _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 ); + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } + + } + + function getRenderTargetSamples( renderTarget ) { + + return ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ? + Math.min( capabilities.maxSamples, renderTarget.samples ) : 0; + + } + + function updateVideoTexture( texture ) { + + var id = texture.id; + var frame = info.render.frame; + + // Check the last frame we updated the VideoTexture + + if ( _videoTextures[ id ] !== frame ) { + + _videoTextures[ id ] = frame; + texture.update(); + + } + + } + + // backwards compatibility + + var warnedTexture2D = false; + var warnedTextureCube = false; + + function safeSetTexture2D( texture, slot ) { + + if ( texture && texture.isWebGLRenderTarget ) { + + if ( warnedTexture2D === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead." ); + warnedTexture2D = true; + + } + + texture = texture.texture; + + } + + setTexture2D( texture, slot ); + + } + + function safeSetTextureCube( texture, slot ) { + + if ( texture && texture.isWebGLRenderTargetCube ) { + + if ( warnedTextureCube === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); + warnedTextureCube = true; + + } + + texture = texture.texture; + + } + + // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture + // TODO: unify these code paths + if ( ( texture && texture.isCubeTexture ) || + ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { + + // CompressedTexture can have Array in image :/ + + // this function alone should take care of cube textures + setTextureCube( texture, slot ); + + } else { + + // assumed: texture property of THREE.WebGLRenderTargetCube + setTextureCubeDynamic( texture, slot ); + + } + + } + + // + + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.setTextureCubeDynamic = setTextureCubeDynamic; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + + this.safeSetTexture2D = safeSetTexture2D; + this.safeSetTextureCube = safeSetTextureCube; + + } + + /** + * @author thespite / http://www.twitter.com/thespite + */ + + function WebGLUtils( gl, extensions, capabilities ) { + + function convert( p ) { + + var extension; + + if ( p === RepeatWrapping ) return 10497; + if ( p === ClampToEdgeWrapping ) return 33071; + if ( p === MirroredRepeatWrapping ) return 33648; + + if ( p === NearestFilter ) return 9728; + if ( p === NearestMipMapNearestFilter ) return 9984; + if ( p === NearestMipMapLinearFilter ) return 9986; + + if ( p === LinearFilter ) return 9729; + if ( p === LinearMipMapNearestFilter ) return 9985; + if ( p === LinearMipMapLinearFilter ) return 9987; + + if ( p === UnsignedByteType ) return 5121; + if ( p === UnsignedShort4444Type ) return 32819; + if ( p === UnsignedShort5551Type ) return 32820; + if ( p === UnsignedShort565Type ) return 33635; + + if ( p === ByteType ) return 5120; + if ( p === ShortType ) return 5122; + if ( p === UnsignedShortType ) return 5123; + if ( p === IntType ) return 5124; + if ( p === UnsignedIntType ) return 5125; + if ( p === FloatType ) return 5126; + + if ( p === HalfFloatType ) { + + if ( capabilities.isWebGL2 ) return 5131; + + extension = extensions.get( 'OES_texture_half_float' ); + + if ( extension !== null ) return extension.HALF_FLOAT_OES; + + } + + if ( p === AlphaFormat ) return 6406; + if ( p === RGBFormat ) return 6407; + if ( p === RGBAFormat ) return 6408; + if ( p === LuminanceFormat ) return 6409; + if ( p === LuminanceAlphaFormat ) return 6410; + if ( p === DepthFormat ) return 6402; + if ( p === DepthStencilFormat ) return 34041; + if ( p === RedFormat ) return 6403; + + if ( p === AddEquation ) return 32774; + if ( p === SubtractEquation ) return 32778; + if ( p === ReverseSubtractEquation ) return 32779; + + if ( p === ZeroFactor ) return 0; + if ( p === OneFactor ) return 1; + if ( p === SrcColorFactor ) return 768; + if ( p === OneMinusSrcColorFactor ) return 769; + if ( p === SrcAlphaFactor ) return 770; + if ( p === OneMinusSrcAlphaFactor ) return 771; + if ( p === DstAlphaFactor ) return 772; + if ( p === OneMinusDstAlphaFactor ) return 773; + + if ( p === DstColorFactor ) return 774; + if ( p === OneMinusDstColorFactor ) return 775; + if ( p === SrcAlphaSaturateFactor ) return 776; + + if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || + p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + + } + + } + + if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || + p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + if ( extension !== null ) { + + if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + + } + + } + + if ( p === RGB_ETC1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + + if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; + + } + + if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || + p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || + p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || + p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || + p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_astc' ); + + if ( extension !== null ) { + + return p; + + } + + } + + if ( p === MinEquation || p === MaxEquation ) { + + if ( capabilities.isWebGL2 ) { + + if ( p === MinEquation ) return 32775; + if ( p === MaxEquation ) return 32776; + + } + + extension = extensions.get( 'EXT_blend_minmax' ); + + if ( extension !== null ) { + + if ( p === MinEquation ) return extension.MIN_EXT; + if ( p === MaxEquation ) return extension.MAX_EXT; + + } + + } + + if ( p === UnsignedInt248Type ) { + + if ( capabilities.isWebGL2 ) return 34042; + + extension = extensions.get( 'WEBGL_depth_texture' ); + + if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; + + } + + return 0; + + } + + return { convert: convert }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Group() { + + Object3D.call( this ); + + this.type = 'Group'; + + } + + Group.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Group, + + isGroup: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Camera() { + + Object3D.call( this ); + + this.type = 'Camera'; + + this.matrixWorldInverse = new Matrix4(); + + this.projectionMatrix = new Matrix4(); + this.projectionMatrixInverse = new Matrix4(); + + } + + Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Camera, + + isCamera: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + this.matrixWorldInverse.copy( source.matrixWorldInverse ); + + this.projectionMatrix.copy( source.projectionMatrix ); + this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); + + return this; + + }, + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); + + }, + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + this.matrixWorldInverse.getInverse( this.matrixWorld ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author greggman / http://games.greggman.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author tschw + */ + + function PerspectiveCamera( fov, aspect, near, far ) { + + Camera.call( this ); + + this.type = 'PerspectiveCamera'; + + this.fov = fov !== undefined ? fov : 50; + this.zoom = 1; + + this.near = near !== undefined ? near : 0.1; + this.far = far !== undefined ? far : 2000; + this.focus = 10; + + this.aspect = aspect !== undefined ? aspect : 1; + this.view = null; + + this.filmGauge = 35; // width of the film (default in millimeters) + this.filmOffset = 0; // horizontal film offset (same unit as gauge) + + this.updateProjectionMatrix(); + + } + + PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: PerspectiveCamera, + + isPerspectiveCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.fov = source.fov; + this.zoom = source.zoom; + + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + + return this; + + }, + + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength: function ( focalLength ) { + + // see http://www.bobatkins.com/photography/technical/field_of_view.html + var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + + this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.updateProjectionMatrix(); + + }, + + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength: function () { + + var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); + + return 0.5 * this.getFilmHeight() / vExtentSlope; + + }, + + getEffectiveFOV: function () { + + return _Math.RAD2DEG * 2 * Math.atan( + Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); + + }, + + getFilmWidth: function () { + + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min( this.aspect, 1 ); + + }, + + getFilmHeight: function () { + + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max( this.aspect, 1 ); + + }, + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * var w = 1920; + * var h = 1080; + * var fullWidth = w * 3; + * var fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + this.aspect = fullWidth / fullHeight; + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var near = this.near, + top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, + height = 2 * top, + width = this.aspect * height, + left = - 0.5 * width, + view = this.view; + + if ( this.view !== null && this.view.enabled ) { + + var fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + + } + + var skew = this.filmOffset; + if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); + + this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.fov = this.fov; + data.object.zoom = this.zoom; + + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + + data.object.aspect = this.aspect; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ArrayCamera( array ) { + + PerspectiveCamera.call( this ); + + this.cameras = array || []; + + } + + ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { + + constructor: ArrayCamera, + + isArrayCamera: true + + } ); + + /** + * @author jsantell / https://www.jsantell.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var cameraLPos = new Vector3(); + var cameraRPos = new Vector3(); + + /** + * Assumes 2 cameras that are parallel and share an X-axis, and that + * the cameras' projection and world matrices have already been set. + * And that near and far planes are identical for both cameras. + * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 + */ + function setProjectionFromUnion( camera, cameraL, cameraR ) { + + cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); + cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); + + var ipd = cameraLPos.distanceTo( cameraRPos ); + + var projL = cameraL.projectionMatrix.elements; + var projR = cameraR.projectionMatrix.elements; + + // VR systems will have identical far and near planes, and + // most likely identical top and bottom frustum extents. + // Use the left camera for these values. + var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); + var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); + var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; + var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; + + var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; + var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; + var left = near * leftFov; + var right = near * rightFov; + + // Calculate the new camera's position offset from the + // left camera. xOffset should be roughly half `ipd`. + var zOffset = ipd / ( - leftFov + rightFov ); + var xOffset = zOffset * - leftFov; + + // TODO: Better way to apply this offset? + cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + camera.translateX( xOffset ); + camera.translateZ( zOffset ); + camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + // Find the union of the frustum values of the cameras and scale + // the values so that the near plane's position does not change in world space, + // although must now be relative to the new union camera. + var near2 = near + zOffset; + var far2 = far + zOffset; + var left2 = left - xOffset; + var right2 = right + ( ipd - xOffset ); + var top2 = topFov * far / far2 * near2; + var bottom2 = bottomFov * far / far2 * near2; + + camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebVRManager( renderer ) { + + var scope = this; + + var device = null; + var frameData = null; + + var poseTarget = null; + + var controllers = []; + var standingMatrix = new Matrix4(); + var standingMatrixInverse = new Matrix4(); + + var framebufferScaleFactor = 1.0; + + var frameOfReferenceType = 'stage'; + + if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { + + frameData = new window.VRFrameData(); + window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + } + + var matrixWorldInverse = new Matrix4(); + var tempQuaternion = new Quaternion(); + var tempPosition = new Vector3(); + + var cameraL = new PerspectiveCamera(); + cameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 ); + cameraL.layers.enable( 1 ); + + var cameraR = new PerspectiveCamera(); + cameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 ); + cameraR.layers.enable( 2 ); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + function isPresenting() { + + return device !== null && device.isPresenting === true; + + } + + var currentSize = new Vector2(), currentPixelRatio; + + function onVRDisplayPresentChange() { + + if ( isPresenting() ) { + + var eyeParameters = device.getEyeParameters( 'left' ); + var renderWidth = eyeParameters.renderWidth * framebufferScaleFactor; + var renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; + + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize( currentSize ); + + renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); + + animation.start(); + + } else { + + if ( scope.enabled ) { + + renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + + } + + animation.stop(); + + } + + } + + // + + var triggers = []; + + function findGamepad( id ) { + + var gamepads = navigator.getGamepads && navigator.getGamepads(); + + for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { + + var gamepad = gamepads[ i ]; + + if ( gamepad && ( gamepad.id === 'Daydream Controller' || + gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || + gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || + gamepad.id.startsWith( 'Spatial Controller' ) ) ) { + + if ( j === id ) return gamepad; + + j ++; + + } + + } + + } + + function updateControllers() { + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var gamepad = findGamepad( i ); + + if ( gamepad !== undefined && gamepad.pose !== undefined ) { + + if ( gamepad.pose === null ) return; + + // Pose + + var pose = gamepad.pose; + + if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 ); + + if ( pose.position !== null ) controller.position.fromArray( pose.position ); + if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation ); + controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); + controller.matrix.premultiply( standingMatrix ); + controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); + controller.matrixWorldNeedsUpdate = true; + controller.visible = true; + + // Trigger + + var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; + + if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { + + triggers[ i ] = gamepad.buttons[ buttonId ].pressed; + + if ( triggers[ i ] === true ) { + + controller.dispatchEvent( { type: 'selectstart' } ); + + } else { + + controller.dispatchEvent( { type: 'selectend' } ); + controller.dispatchEvent( { type: 'select' } ); + + } + + } + + } else { + + controller.visible = false; + + } + + } + + } + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + this.getDevice = function () { + + return device; + + }; + + this.setDevice = function ( value ) { + + if ( value !== undefined ) device = value; + + animation.setContext( value ); + + }; + + this.setFramebufferScaleFactor = function ( value ) { + + framebufferScaleFactor = value; + + }; + + this.setFrameOfReferenceType = function ( value ) { + + frameOfReferenceType = value; + + }; + + this.setPoseTarget = function ( object ) { + + if ( object !== undefined ) poseTarget = object; + + }; + + this.getCamera = function ( camera ) { + + var userHeight = frameOfReferenceType === 'stage' ? 1.6 : 0; + + if ( isPresenting() === false ) { + + camera.position.set( 0, userHeight, 0 ); + camera.rotation.set( 0, 0, 0 ); + + return camera; + + } + + device.depthNear = camera.near; + device.depthFar = camera.far; + + device.getFrameData( frameData ); + + // + + if ( frameOfReferenceType === 'stage' ) { + + var stageParameters = device.stageParameters; + + if ( stageParameters ) { + + standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); + + } else { + + standingMatrix.makeTranslation( 0, userHeight, 0 ); + + } + + } + + + var pose = frameData.pose; + var poseObject = poseTarget !== null ? poseTarget : camera; + + // We want to manipulate poseObject by its position and quaternion components since users may rely on them. + poseObject.matrix.copy( standingMatrix ); + poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); + + if ( pose.orientation !== null ) { + + tempQuaternion.fromArray( pose.orientation ); + poseObject.quaternion.multiply( tempQuaternion ); + + } + + if ( pose.position !== null ) { + + tempQuaternion.setFromRotationMatrix( standingMatrix ); + tempPosition.fromArray( pose.position ); + tempPosition.applyQuaternion( tempQuaternion ); + poseObject.position.add( tempPosition ); + + } + + poseObject.updateMatrixWorld(); + + // + + cameraL.near = camera.near; + cameraR.near = camera.near; + + cameraL.far = camera.far; + cameraR.far = camera.far; + + cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); + cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); + + // TODO (mrdoob) Double check this code + + standingMatrixInverse.getInverse( standingMatrix ); + + if ( frameOfReferenceType === 'stage' ) { + + cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); + cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); + + } + + var parent = poseObject.parent; + + if ( parent !== null ) { + + matrixWorldInverse.getInverse( parent.matrixWorld ); + + cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); + cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); + + } + + // envMap and Mirror needs camera.matrixWorld + + cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); + cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); + + cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); + cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + // + + var layers = device.getLayers(); + + if ( layers.length ) { + + var layer = layers[ 0 ]; + + if ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) { + + cameraL.bounds.fromArray( layer.leftBounds ); + + } + + if ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) { + + cameraR.bounds.fromArray( layer.rightBounds ); + + } + + } + + updateControllers(); + + return cameraVR; + + }; + + this.getStandingMatrix = function () { + + return standingMatrix; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var animation = new WebGLAnimation(); + + this.setAnimationLoop = function ( callback ) { + + animation.setAnimationLoop( callback ); + + if ( isPresenting() ) animation.start(); + + }; + + this.submitFrame = function () { + + if ( isPresenting() ) device.submitFrame(); + + }; + + this.dispose = function () { + + if ( typeof window !== 'undefined' ) { + + window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebXRManager( renderer ) { + + var gl = renderer.context; + + var device = null; + var session = null; + + var framebufferScaleFactor = 1.0; + + var frameOfReference = null; + var frameOfReferenceType = 'stage'; + + var pose = null; + + var controllers = []; + var inputSources = []; + + function isPresenting() { + + return session !== null && frameOfReference !== null; + + } + + // + + var cameraL = new PerspectiveCamera(); + cameraL.layers.enable( 1 ); + cameraL.viewport = new Vector4(); + + var cameraR = new PerspectiveCamera(); + cameraR.layers.enable( 2 ); + cameraR.viewport = new Vector4(); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + this.getDevice = function () { + + return device; + + }; + + this.setDevice = function ( value ) { + + if ( value !== undefined ) device = value; + if ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value ); + + }; + + // + + function onSessionEvent( event ) { + + var controller = controllers[ inputSources.indexOf( event.inputSource ) ]; + if ( controller ) controller.dispatchEvent( { type: event.type } ); + + } + + function onSessionEnd() { + + renderer.setFramebuffer( null ); + renderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830 + animation.stop(); + + } + + this.setFramebufferScaleFactor = function ( value ) { + + framebufferScaleFactor = value; + + }; + + this.setFrameOfReferenceType = function ( value ) { + + frameOfReferenceType = value; + + }; + + this.setSession = function ( value ) { + + session = value; + + if ( session !== null ) { + + session.addEventListener( 'select', onSessionEvent ); + session.addEventListener( 'selectstart', onSessionEvent ); + session.addEventListener( 'selectend', onSessionEvent ); + session.addEventListener( 'end', onSessionEnd ); + + session.baseLayer = new XRWebGLLayer( session, gl, { framebufferScaleFactor: framebufferScaleFactor } ); + session.requestFrameOfReference( frameOfReferenceType ).then( function ( value ) { + + frameOfReference = value; + + renderer.setFramebuffer( session.baseLayer.framebuffer ); + + animation.setContext( session ); + animation.start(); + + } ); + + // + + inputSources = session.getInputSources(); + + session.addEventListener( 'inputsourceschange', function () { + + inputSources = session.getInputSources(); + console.log( inputSources ); + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + controller.userData.inputSource = inputSources[ i ]; + + } + + } ); + + } + + }; + + function updateCamera( camera, parent ) { + + if ( parent === null ) { + + camera.matrixWorld.copy( camera.matrix ); + + } else { + + camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); + + } + + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + } + + this.getCamera = function ( camera ) { + + if ( isPresenting() ) { + + var parent = camera.parent; + var cameras = cameraVR.cameras; + + updateCamera( cameraVR, parent ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + updateCamera( cameras[ i ], parent ); + + } + + // update camera and its children + + camera.matrixWorld.copy( cameraVR.matrixWorld ); + + var children = camera.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( true ); + + } + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + return cameraVR; + + } + + return camera; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time, frame ) { + + pose = frame.getDevicePose( frameOfReference ); + + if ( pose !== null ) { + + var layer = session.baseLayer; + var views = frame.views; + + for ( var i = 0; i < views.length; i ++ ) { + + var view = views[ i ]; + var viewport = layer.getViewport( view ); + var viewMatrix = pose.getViewMatrix( view ); + + var camera = cameraVR.cameras[ i ]; + camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); + camera.projectionMatrix.fromArray( view.projectionMatrix ); + camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); + + if ( i === 0 ) { + + cameraVR.matrix.copy( camera.matrix ); + + } + + } + + } + + // + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var inputSource = inputSources[ i ]; + + if ( inputSource ) { + + var inputPose = frame.getInputPose( inputSource, frameOfReference ); + + if ( inputPose !== null ) { + + if ( 'targetRay' in inputPose ) { + + controller.matrix.elements = inputPose.targetRay.transformMatrix; + + } else if ( 'pointerMatrix' in inputPose ) { + + // DEPRECATED + + controller.matrix.elements = inputPose.pointerMatrix; + + } + + controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); + controller.visible = true; + + continue; + + } + + } + + controller.visible = false; + + } + + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + + }; + + this.dispose = function () {}; + + // DEPRECATED + + this.getStandingMatrix = function () { + + console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); + return new Matrix4(); + + }; + + this.submitFrame = function () {}; + + } + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + * @author tschw + */ + + function WebGLRenderer( parameters ) { + + console.log( 'THREE.WebGLRenderer', REVISION ); + + parameters = parameters || {}; + + var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), + _context = parameters.context !== undefined ? parameters.context : null, + + _alpha = parameters.alpha !== undefined ? parameters.alpha : false, + _depth = parameters.depth !== undefined ? parameters.depth : true, + _stencil = parameters.stencil !== undefined ? parameters.stencil : true, + _antialias = parameters.antialias !== undefined ? parameters.antialias : false, + _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default'; + + var currentRenderList = null; + var currentRenderState = null; + + // public properties + + this.domElement = _canvas; + this.context = null; + + // clearing + + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; + + // scene graph + + this.sortObjects = true; + + // user-defined clipping + + this.clippingPlanes = []; + this.localClippingEnabled = false; + + // physically based shading + + this.gammaFactor = 2.0; // for backwards compatibility + this.gammaInput = false; + this.gammaOutput = false; + + // physical lights + + this.physicallyCorrectLights = false; + + // tone mapping + + this.toneMapping = LinearToneMapping; + this.toneMappingExposure = 1.0; + this.toneMappingWhitePoint = 1.0; + + // morphs + + this.maxMorphTargets = 8; + this.maxMorphNormals = 4; + + // internal properties + + var _this = this, + + _isContextLost = false, + + // internal state cache + + _framebuffer = null, + + _currentRenderTarget = null, + _currentFramebuffer = null, + _currentMaterialId = - 1, + + // geometry and program caching + + _currentGeometryProgram = { + geometry: null, + program: null, + wireframe: false + }, + + _currentCamera = null, + _currentArrayCamera = null, + + _currentViewport = new Vector4(), + _currentScissor = new Vector4(), + _currentScissorTest = null, + + // + + _width = _canvas.width, + _height = _canvas.height, + + _pixelRatio = 1, + + _viewport = new Vector4( 0, 0, _width, _height ), + _scissor = new Vector4( 0, 0, _width, _height ), + _scissorTest = false, + + // frustum + + _frustum = new Frustum(), + + // clipping + + _clipping = new WebGLClipping(), + _clippingEnabled = false, + _localClippingEnabled = false, + + // camera matrices cache + + _projScreenMatrix = new Matrix4(), + + _vector3 = new Vector3(); + + function getTargetPixelRatio() { + + return _currentRenderTarget === null ? _pixelRatio : 1; + + } + + // initialize + + var _gl; + + try { + + var contextAttributes = { + alpha: _alpha, + depth: _depth, + stencil: _stencil, + antialias: _antialias, + premultipliedAlpha: _premultipliedAlpha, + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference + }; + + // event listeners must be registered before WebGL context is created, see #12753 + + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + + _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); + + if ( _gl === null ) { + + if ( _canvas.getContext( 'webgl' ) !== null ) { + + throw new Error( 'Error creating WebGL context with your selected attributes.' ); + + } else { + + throw new Error( 'Error creating WebGL context.' ); + + } + + } + + // Some experimental-webgl implementations do not have getShaderPrecisionFormat + + if ( _gl.getShaderPrecisionFormat === undefined ) { + + _gl.getShaderPrecisionFormat = function () { + + return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; + + }; + + } + + } catch ( error ) { + + console.error( 'THREE.WebGLRenderer: ' + error.message ); + throw error; + + } + + var extensions, capabilities, state, info; + var properties, textures, attributes, geometries, objects; + var programCache, renderLists, renderStates; + + var background, morphtargets, bufferRenderer, indexedBufferRenderer; + + var utils; + + function initGLContext() { + + extensions = new WebGLExtensions( _gl ); + + capabilities = new WebGLCapabilities( _gl, extensions, parameters ); + + if ( ! capabilities.isWebGL2 ) { + + extensions.get( 'WEBGL_depth_texture' ); + extensions.get( 'OES_texture_float' ); + extensions.get( 'OES_texture_half_float' ); + extensions.get( 'OES_texture_half_float_linear' ); + extensions.get( 'OES_standard_derivatives' ); + extensions.get( 'OES_element_index_uint' ); + extensions.get( 'ANGLE_instanced_arrays' ); + + } + + extensions.get( 'OES_texture_float_linear' ); + + utils = new WebGLUtils( _gl, extensions, capabilities ); + + state = new WebGLState( _gl, extensions, utils, capabilities ); + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + info = new WebGLInfo( _gl ); + properties = new WebGLProperties(); + textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); + attributes = new WebGLAttributes( _gl ); + geometries = new WebGLGeometries( _gl, attributes, info ); + objects = new WebGLObjects( geometries, info ); + morphtargets = new WebGLMorphtargets( _gl ); + programCache = new WebGLPrograms( _this, extensions, capabilities, textures ); + renderLists = new WebGLRenderLists(); + renderStates = new WebGLRenderStates(); + + background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); + + bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); + indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); + + info.programs = programCache.programs; + + _this.context = _gl; + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.state = state; + _this.info = info; + + } + + initGLContext(); + + // vr + + var vr = null; + + if ( typeof navigator !== 'undefined' ) { + + vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this ); + + } + + this.vr = vr; + + // shadow map + + var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); + + this.shadowMap = shadowMap; + + // API + + this.getContext = function () { + + return _gl; + + }; + + this.getContextAttributes = function () { + + return _gl.getContextAttributes(); + + }; + + this.forceContextLoss = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.loseContext(); + + }; + + this.forceContextRestore = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.restoreContext(); + + }; + + this.getPixelRatio = function () { + + return _pixelRatio; + + }; + + this.setPixelRatio = function ( value ) { + + if ( value === undefined ) return; + + _pixelRatio = value; + + this.setSize( _width, _height, false ); + + }; + + this.getSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width, _height ); + + }; + + this.setSize = function ( width, height, updateStyle ) { + + if ( vr.isPresenting() ) { + + console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + return; + + } + + _width = width; + _height = height; + + _canvas.width = width * _pixelRatio; + _canvas.height = height * _pixelRatio; + + if ( updateStyle !== false ) { + + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + + } + + this.setViewport( 0, 0, width, height ); + + }; + + this.getDrawingBufferSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width * _pixelRatio, _height * _pixelRatio ); + + }; + + this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + + _width = width; + _height = height; + + _pixelRatio = pixelRatio; + + _canvas.width = width * pixelRatio; + _canvas.height = height * pixelRatio; + + this.setViewport( 0, 0, width, height ); + + }; + + this.getCurrentViewport = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' ); + + target = new Vector4(); + + } + + return target.copy( _currentViewport ); + + }; + + this.getViewport = function ( target ) { + + return target.copy( _viewport ); + + }; + + this.setViewport = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _viewport.set( x.x, x.y, x.z, x.w ); + + } else { + + _viewport.set( x, y, width, height ); + + } + + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + }; + + this.getScissor = function ( target ) { + + return target.copy( _scissor ); + + }; + + this.setScissor = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _scissor.set( x.x, x.y, x.z, x.w ); + + } else { + + _scissor.set( x, y, width, height ); + + } + + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + + }; + + this.getScissorTest = function () { + + return _scissorTest; + + }; + + this.setScissorTest = function ( boolean ) { + + state.setScissorTest( _scissorTest = boolean ); + + }; + + // Clearing + + this.getClearColor = function () { + + return background.getClearColor(); + + }; + + this.setClearColor = function () { + + background.setClearColor.apply( background, arguments ); + + }; + + this.getClearAlpha = function () { + + return background.getClearAlpha(); + + }; + + this.setClearAlpha = function () { + + background.setClearAlpha.apply( background, arguments ); + + }; + + this.clear = function ( color, depth, stencil ) { + + var bits = 0; + + if ( color === undefined || color ) bits |= 16384; + if ( depth === undefined || depth ) bits |= 256; + if ( stencil === undefined || stencil ) bits |= 1024; + + _gl.clear( bits ); + + }; + + this.clearColor = function () { + + this.clear( true, false, false ); + + }; + + this.clearDepth = function () { + + this.clear( false, true, false ); + + }; + + this.clearStencil = function () { + + this.clear( false, false, true ); + + }; + + // + + this.dispose = function () { + + _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + objects.dispose(); + + vr.dispose(); + + animation.stop(); + + }; + + // Events + + function onContextLost( event ) { + + event.preventDefault(); + + console.log( 'THREE.WebGLRenderer: Context Lost.' ); + + _isContextLost = true; + + } + + function onContextRestore( /* event */ ) { + + console.log( 'THREE.WebGLRenderer: Context Restored.' ); + + _isContextLost = false; + + initGLContext(); + + } + + function onMaterialDispose( event ) { + + var material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + deallocateMaterial( material ); + + } + + // Buffer deallocation + + function deallocateMaterial( material ) { + + releaseMaterialProgramReference( material ); + + properties.remove( material ); + + } + + + function releaseMaterialProgramReference( material ) { + + var programInfo = properties.get( material ).program; + + material.program = undefined; + + if ( programInfo !== undefined ) { + + programCache.releaseProgram( programInfo ); + + } + + } + + // Buffer rendering + + function renderObjectImmediate( object, program ) { + + object.render( function ( object ) { + + _this.renderBufferImmediate( object, program ); + + } ); + + } + + this.renderBufferImmediate = function ( object, program ) { + + state.initAttributes(); + + var buffers = properties.get( object ); + + if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); + if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); + if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); + if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); + + var programAttributes = program.getAttributes(); + + if ( object.hasPositions ) { + + _gl.bindBuffer( 34962, buffers.position ); + _gl.bufferData( 34962, object.positionArray, 35048 ); + + state.enableAttribute( programAttributes.position ); + _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasNormals ) { + + _gl.bindBuffer( 34962, buffers.normal ); + _gl.bufferData( 34962, object.normalArray, 35048 ); + + state.enableAttribute( programAttributes.normal ); + _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasUvs ) { + + _gl.bindBuffer( 34962, buffers.uv ); + _gl.bufferData( 34962, object.uvArray, 35048 ); + + state.enableAttribute( programAttributes.uv ); + _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); + + } + + if ( object.hasColors ) { + + _gl.bindBuffer( 34962, buffers.color ); + _gl.bufferData( 34962, object.colorArray, 35048 ); + + state.enableAttribute( programAttributes.color ); + _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); + + } + + state.disableUnusedAttributes(); + + _gl.drawArrays( 4, 0, object.count ); + + object.count = 0; + + }; + + this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { + + var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + state.setMaterial( material, frontFaceCW ); + + var program = setProgram( camera, fog, material, object ); + + var updateBuffers = false; + + if ( _currentGeometryProgram.geometry !== geometry.id || + _currentGeometryProgram.program !== program.id || + _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { + + _currentGeometryProgram.geometry = geometry.id; + _currentGeometryProgram.program = program.id; + _currentGeometryProgram.wireframe = material.wireframe === true; + updateBuffers = true; + + } + + if ( object.morphTargetInfluences ) { + + morphtargets.update( object, geometry, material, program ); + + updateBuffers = true; + + } + + // + + var index = geometry.index; + var position = geometry.attributes.position; + var rangeFactor = 1; + + if ( material.wireframe === true ) { + + index = geometries.getWireframeAttribute( geometry ); + rangeFactor = 2; + + } + + var attribute; + var renderer = bufferRenderer; + + if ( index !== null ) { + + attribute = attributes.get( index ); + + renderer = indexedBufferRenderer; + renderer.setIndex( attribute ); + + } + + if ( updateBuffers ) { + + setupVertexAttributes( material, program, geometry ); + + if ( index !== null ) { + + _gl.bindBuffer( 34963, attribute.buffer ); + + } + + } + + // + + var dataCount = Infinity; + + if ( index !== null ) { + + dataCount = index.count; + + } else if ( position !== undefined ) { + + dataCount = position.count; + + } + + var rangeStart = geometry.drawRange.start * rangeFactor; + var rangeCount = geometry.drawRange.count * rangeFactor; + + var groupStart = group !== null ? group.start * rangeFactor : 0; + var groupCount = group !== null ? group.count * rangeFactor : Infinity; + + var drawStart = Math.max( rangeStart, groupStart ); + var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; + + var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); + + if ( drawCount === 0 ) return; + + // + + if ( object.isMesh ) { + + if ( material.wireframe === true ) { + + state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); + renderer.setMode( 1 ); + + } else { + + switch ( object.drawMode ) { + + case TrianglesDrawMode: + renderer.setMode( 4 ); + break; + + case TriangleStripDrawMode: + renderer.setMode( 5 ); + break; + + case TriangleFanDrawMode: + renderer.setMode( 6 ); + break; + + } + + } + + + } else if ( object.isLine ) { + + var lineWidth = material.linewidth; + + if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material + + state.setLineWidth( lineWidth * getTargetPixelRatio() ); + + if ( object.isLineSegments ) { + + renderer.setMode( 1 ); + + } else if ( object.isLineLoop ) { + + renderer.setMode( 2 ); + + } else { + + renderer.setMode( 3 ); + + } + + } else if ( object.isPoints ) { + + renderer.setMode( 0 ); + + } else if ( object.isSprite ) { + + renderer.setMode( 4 ); + + } + + if ( geometry && geometry.isInstancedBufferGeometry ) { + + if ( geometry.maxInstancedCount > 0 ) { + + renderer.renderInstances( geometry, drawStart, drawCount ); + + } + + } else { + + renderer.render( drawStart, drawCount ); + + } + + }; + + function setupVertexAttributes( material, program, geometry ) { + + if ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) { + + if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { + + console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + state.initAttributes(); + + var geometryAttributes = geometry.attributes; + + var programAttributes = program.getAttributes(); + + var materialDefaultAttributeValues = material.defaultAttributeValues; + + for ( var name in programAttributes ) { + + var programAttribute = programAttributes[ name ]; + + if ( programAttribute >= 0 ) { + + var geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute !== undefined ) { + + var normalized = geometryAttribute.normalized; + var size = geometryAttribute.itemSize; + + var attribute = attributes.get( geometryAttribute ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) continue; + + var buffer = attribute.buffer; + var type = attribute.type; + var bytesPerElement = attribute.bytesPerElement; + + if ( geometryAttribute.isInterleavedBufferAttribute ) { + + var data = geometryAttribute.data; + var stride = data.stride; + var offset = geometryAttribute.offset; + + if ( data && data.isInstancedInterleavedBuffer ) { + + state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = data.meshPerAttribute * data.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); + + } else { + + if ( geometryAttribute.isInstancedBufferAttribute ) { + + state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); + + } + + } else if ( materialDefaultAttributeValues !== undefined ) { + + var value = materialDefaultAttributeValues[ name ]; + + if ( value !== undefined ) { + + switch ( value.length ) { + + case 2: + _gl.vertexAttrib2fv( programAttribute, value ); + break; + + case 3: + _gl.vertexAttrib3fv( programAttribute, value ); + break; + + case 4: + _gl.vertexAttrib4fv( programAttribute, value ); + break; + + default: + _gl.vertexAttrib1fv( programAttribute, value ); + + } + + } + + } + + } + + } + + state.disableUnusedAttributes(); + + } + + // Compile + + this.compile = function ( scene, camera ) { + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.traverse( function ( object ) { + + if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } + + } ); + + currentRenderState.setupLights( camera ); + + scene.traverse( function ( object ) { + + if ( object.material ) { + + if ( Array.isArray( object.material ) ) { + + for ( var i = 0; i < object.material.length; i ++ ) { + + initMaterial( object.material[ i ], scene.fog, object ); + + } + + } else { + + initMaterial( object.material, scene.fog, object ); + + } + + } + + } ); + + }; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time ) { + + if ( vr.isPresenting() ) return; + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + if ( typeof window !== 'undefined' ) animation.setContext( window ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + vr.setAnimationLoop( callback ); + + animation.start(); + + }; + + // Rendering + + this.render = function ( scene, camera ) { + + var renderTarget, forceClear; + + if ( arguments[ 2 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' ); + renderTarget = arguments[ 2 ]; + + } + + if ( arguments[ 3 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' ); + forceClear = arguments[ 3 ]; + + } + + if ( ! ( camera && camera.isCamera ) ) { + + console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + if ( _isContextLost ) return; + + // reset caching for this frame + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + _currentMaterialId = - 1; + _currentCamera = null; + + // update scene graph + + if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); + + // update camera matrices and frustum + + if ( camera.parent === null ) camera.updateMatrixWorld(); + + if ( vr.enabled ) { + + camera = vr.getCamera( camera ); + + } + + // + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget ); + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); + + currentRenderList = renderLists.get( scene, camera ); + currentRenderList.init(); + + projectObject( scene, camera, 0, _this.sortObjects ); + + if ( _this.sortObjects === true ) { + + currentRenderList.sort(); + + } + + // + + if ( _clippingEnabled ) _clipping.beginShadows(); + + var shadowsArray = currentRenderState.state.shadowsArray; + + shadowMap.render( shadowsArray, scene, camera ); + + currentRenderState.setupLights( camera ); + + if ( _clippingEnabled ) _clipping.endShadows(); + + // + + if ( this.info.autoReset ) this.info.reset(); + + if ( renderTarget !== undefined ) { + + this.setRenderTarget( renderTarget ); + + } + + // + + background.render( currentRenderList, scene, camera, forceClear ); + + // render scene + + var opaqueObjects = currentRenderList.opaque; + var transparentObjects = currentRenderList.transparent; + + if ( scene.overrideMaterial ) { + + var overrideMaterial = scene.overrideMaterial; + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); + + } else { + + // opaque pass (front-to-back order) + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); + + // transparent pass (back-to-front order) + + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); + + } + + // + + scene.onAfterRender( _this, scene, camera ); + + // + + if ( _currentRenderTarget !== null ) { + + // Generate mipmap if we're using any kind of mipmap filtering + + textures.updateRenderTargetMipmap( _currentRenderTarget ); + + // resolve multisample renderbuffers to a single-sample texture if necessary + + textures.updateMultisampleRenderTarget( _currentRenderTarget ); + + } + + // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + state.setPolygonOffset( false ); + + if ( vr.enabled ) { + + vr.submitFrame(); + + } + + // _gl.finish(); + + currentRenderList = null; + currentRenderState = null; + + }; + + function projectObject( object, camera, groupOrder, sortObjects ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible ) { + + if ( object.isGroup ) { + + groupOrder = object.renderOrder; + + } else if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } else if ( object.isSprite ) { + + if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } else if ( object.isImmediateRenderObject ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null ); + + } else if ( object.isMesh || object.isLine || object.isPoints ) { + + if ( object.isSkinnedMesh ) { + + object.skeleton.update(); + + } + + if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group ); + + } + + } + + } else if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + projectObject( children[ i ], camera, groupOrder, sortObjects ); + + } + + } + + function renderObjects( renderList, scene, camera, overrideMaterial ) { + + for ( var i = 0, l = renderList.length; i < l; i ++ ) { + + var renderItem = renderList[ i ]; + + var object = renderItem.object; + var geometry = renderItem.geometry; + var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; + var group = renderItem.group; + + if ( camera.isArrayCamera ) { + + _currentArrayCamera = camera; + + var cameras = camera.cameras; + + for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { + + var camera2 = cameras[ j ]; + + if ( object.layers.test( camera2.layers ) ) { + + if ( 'viewport' in camera2 ) { // XR + + state.viewport( _currentViewport.copy( camera2.viewport ) ); + + } else { + + var bounds = camera2.bounds; + + var x = bounds.x * _width; + var y = bounds.y * _height; + var width = bounds.z * _width; + var height = bounds.w * _height; + + state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) ); + + } + + currentRenderState.setupLights( camera2 ); + + renderObject( object, scene, camera2, geometry, material, group ); + + } + + } + + } else { + + _currentArrayCamera = null; + + renderObject( object, scene, camera, geometry, material, group ); + + } + + } + + } + + function renderObject( object, scene, camera, geometry, material, group ) { + + object.onBeforeRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + if ( object.isImmediateRenderObject ) { + + state.setMaterial( material ); + + var program = setProgram( camera, scene.fog, material, object ); + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + + renderObjectImmediate( object, program ); + + } else { + + _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); + + } + + object.onAfterRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + } + + function initMaterial( material, fog, object ) { + + var materialProperties = properties.get( material ); + + var lights = currentRenderState.state.lights; + var shadowsArray = currentRenderState.state.shadowsArray; + + var lightsHash = materialProperties.lightsHash; + var lightsStateHash = lights.state.hash; + + var parameters = programCache.getParameters( + material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); + + var code = programCache.getProgramCode( material, parameters ); + + var program = materialProperties.program; + var programChange = true; + + if ( program === undefined ) { + + // new material + material.addEventListener( 'dispose', onMaterialDispose ); + + } else if ( program.code !== code ) { + + // changed glsl or parameters + releaseMaterialProgramReference( material ); + + } else if ( lightsHash.stateID !== lightsStateHash.stateID || + lightsHash.directionalLength !== lightsStateHash.directionalLength || + lightsHash.pointLength !== lightsStateHash.pointLength || + lightsHash.spotLength !== lightsStateHash.spotLength || + lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || + lightsHash.hemiLength !== lightsStateHash.hemiLength || + lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) { + + lightsHash.stateID = lightsStateHash.stateID; + lightsHash.directionalLength = lightsStateHash.directionalLength; + lightsHash.pointLength = lightsStateHash.pointLength; + lightsHash.spotLength = lightsStateHash.spotLength; + lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; + lightsHash.hemiLength = lightsStateHash.hemiLength; + lightsHash.shadowsLength = lightsStateHash.shadowsLength; + + programChange = false; + + } else if ( parameters.shaderID !== undefined ) { + + // same glsl and uniform list + return; + + } else { + + // only rebuild uniform list + programChange = false; + + } + + if ( programChange ) { + + if ( parameters.shaderID ) { + + var shader = ShaderLib[ parameters.shaderID ]; + + materialProperties.shader = { + name: material.type, + uniforms: cloneUniforms( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + }; + + } else { + + materialProperties.shader = { + name: material.type, + uniforms: material.uniforms, + vertexShader: material.vertexShader, + fragmentShader: material.fragmentShader + }; + + } + + material.onBeforeCompile( materialProperties.shader, _this ); + + // Computing code again as onBeforeCompile may have changed the shaders + code = programCache.getProgramCode( material, parameters ); + + program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); + + materialProperties.program = program; + material.program = program; + + } + + var programAttributes = program.getAttributes(); + + if ( material.morphTargets ) { + + material.numSupportedMorphTargets = 0; + + for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { + + if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { + + material.numSupportedMorphTargets ++; + + } + + } + + } + + if ( material.morphNormals ) { + + material.numSupportedMorphNormals = 0; + + for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { + + if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { + + material.numSupportedMorphNormals ++; + + } + + } + + } + + var uniforms = materialProperties.shader.uniforms; + + if ( ! material.isShaderMaterial && + ! material.isRawShaderMaterial || + material.clipping === true ) { + + materialProperties.numClippingPlanes = _clipping.numPlanes; + materialProperties.numIntersection = _clipping.numIntersection; + uniforms.clippingPlanes = _clipping.uniform; + + } + + materialProperties.fog = fog; + + // store the light setup it was created for + if ( lightsHash === undefined ) { + + materialProperties.lightsHash = lightsHash = {}; + + } + + lightsHash.stateID = lightsStateHash.stateID; + lightsHash.directionalLength = lightsStateHash.directionalLength; + lightsHash.pointLength = lightsStateHash.pointLength; + lightsHash.spotLength = lightsStateHash.spotLength; + lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; + lightsHash.hemiLength = lightsStateHash.hemiLength; + lightsHash.shadowsLength = lightsStateHash.shadowsLength; + + if ( material.lights ) { + + // wire up the material to this renderer's lighting state + + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.directionalLights.value = lights.state.directional; + uniforms.spotLights.value = lights.state.spot; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.pointLights.value = lights.state.point; + uniforms.hemisphereLights.value = lights.state.hemi; + + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + // TODO (abelnation): add area lights shadow info to uniforms + + } + + var progUniforms = materialProperties.program.getUniforms(), + uniformsList = + WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); + + materialProperties.uniformsList = uniformsList; + + } + + function setProgram( camera, fog, material, object ) { + + textures.resetTextureUnits(); + + var materialProperties = properties.get( material ); + var lights = currentRenderState.state.lights; + + var lightsHash = materialProperties.lightsHash; + var lightsStateHash = lights.state.hash; + + if ( _clippingEnabled ) { + + if ( _localClippingEnabled || camera !== _currentCamera ) { + + var useCache = + camera === _currentCamera && + material.id === _currentMaterialId; + + // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + _clipping.setState( + material.clippingPlanes, material.clipIntersection, material.clipShadows, + camera, materialProperties, useCache ); + + } + + } + + if ( material.needsUpdate === false ) { + + if ( materialProperties.program === undefined ) { + + material.needsUpdate = true; + + } else if ( material.fog && materialProperties.fog !== fog ) { + + material.needsUpdate = true; + + } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || + lightsHash.directionalLength !== lightsStateHash.directionalLength || + lightsHash.pointLength !== lightsStateHash.pointLength || + lightsHash.spotLength !== lightsStateHash.spotLength || + lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || + lightsHash.hemiLength !== lightsStateHash.hemiLength || + lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) { + + material.needsUpdate = true; + + } else if ( materialProperties.numClippingPlanes !== undefined && + ( materialProperties.numClippingPlanes !== _clipping.numPlanes || + materialProperties.numIntersection !== _clipping.numIntersection ) ) { + + material.needsUpdate = true; + + } + + } + + if ( material.needsUpdate ) { + + initMaterial( material, fog, object ); + material.needsUpdate = false; + + } + + var refreshProgram = false; + var refreshMaterial = false; + var refreshLights = false; + + var program = materialProperties.program, + p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.shader.uniforms; + + if ( state.useProgram( program.program ) ) { + + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + + } + + if ( material.id !== _currentMaterialId ) { + + _currentMaterialId = material.id; + + refreshMaterial = true; + + } + + if ( refreshProgram || _currentCamera !== camera ) { + + p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + + if ( capabilities.logarithmicDepthBuffer ) { + + p_uniforms.setValue( _gl, 'logDepthBufFC', + 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + + } + + if ( _currentCamera !== camera ) { + + _currentCamera = camera; + + // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + refreshLights = true; // remains set until update done + + } + + // load material specific uniforms + // (shader material also gets them for the sake of genericity) + + if ( material.isShaderMaterial || + material.isMeshPhongMaterial || + material.isMeshStandardMaterial || + material.envMap ) { + + var uCamPos = p_uniforms.map.cameraPosition; + + if ( uCamPos !== undefined ) { + + uCamPos.setValue( _gl, + _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + + } + + } + + if ( material.isMeshPhongMaterial || + material.isMeshLambertMaterial || + material.isMeshBasicMaterial || + material.isMeshStandardMaterial || + material.isShaderMaterial || + material.skinning ) { + + p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + + } + + } + + // skinning uniforms must be set even if material didn't change + // auto-setting of texture unit for bone texture must go before other textures + // not sure why, but otherwise weird things happen + + if ( material.skinning ) { + + p_uniforms.setOptional( _gl, object, 'bindMatrix' ); + p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + + var skeleton = object.skeleton; + + if ( skeleton ) { + + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + if ( skeleton.boneTexture === undefined ) { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + + + var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix + size = _Math.ceilPowerOfTwo( size ); + size = Math.max( size, 4 ); + + var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + boneMatrices.set( skeleton.boneMatrices ); // copy current values + + var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + boneTexture.needsUpdate = true; + + skeleton.boneMatrices = boneMatrices; + skeleton.boneTexture = boneTexture; + skeleton.boneTextureSize = size; + + } + + p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures ); + p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); + + } else { + + p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); + + } + + } + + } + + if ( refreshMaterial ) { + + p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); + p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); + + if ( material.lights ) { + + // the current material requires lighting info + + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + + markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + + } + + // refresh uniforms common to several materials + + if ( fog && material.fog ) { + + refreshUniformsFog( m_uniforms, fog ); + + } + + if ( material.isMeshBasicMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + } else if ( material.isMeshLambertMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsLambert( m_uniforms, material ); + + } else if ( material.isMeshPhongMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshToonMaterial ) { + + refreshUniformsToon( m_uniforms, material ); + + } else { + + refreshUniformsPhong( m_uniforms, material ); + + } + + } else if ( material.isMeshStandardMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshPhysicalMaterial ) { + + refreshUniformsPhysical( m_uniforms, material ); + + } else { + + refreshUniformsStandard( m_uniforms, material ); + + } + + } else if ( material.isMeshMatcapMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + refreshUniformsMatcap( m_uniforms, material ); + + } else if ( material.isMeshDepthMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDepth( m_uniforms, material ); + + } else if ( material.isMeshDistanceMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDistance( m_uniforms, material ); + + } else if ( material.isMeshNormalMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsNormal( m_uniforms, material ); + + } else if ( material.isLineBasicMaterial ) { + + refreshUniformsLine( m_uniforms, material ); + + if ( material.isLineDashedMaterial ) { + + refreshUniformsDash( m_uniforms, material ); + + } + + } else if ( material.isPointsMaterial ) { + + refreshUniformsPoints( m_uniforms, material ); + + } else if ( material.isSpriteMaterial ) { + + refreshUniformsSprites( m_uniforms, material ); + + } else if ( material.isShadowMaterial ) { + + m_uniforms.color.value = material.color; + m_uniforms.opacity.value = material.opacity; + + } + + // RectAreaLight Texture + // TODO (mrdoob): Find a nicer implementation + + if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1; + if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2; + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + + } + + if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + material.uniformsNeedUpdate = false; + + } + + if ( material.isSpriteMaterial ) { + + p_uniforms.setValue( _gl, 'center', object.center ); + + } + + // common matrices + + p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); + p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); + p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + + return program; + + } + + // Uniforms (refresh uniforms objects) + + function refreshUniformsCommon( uniforms, material ) { + + uniforms.opacity.value = material.opacity; + + if ( material.color ) { + + uniforms.diffuse.value = material.color; + + } + + if ( material.emissive ) { + + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + } + + if ( material.map ) { + + uniforms.map.value = material.map; + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + } + + if ( material.specularMap ) { + + uniforms.specularMap.value = material.specularMap; + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; + + } + + if ( material.lightMap ) { + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + } + + if ( material.aoMap ) { + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + } + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.roughnessMap ) { + + uvScaleMap = material.roughnessMap; + + } else if ( material.metalnessMap ) { + + uvScaleMap = material.metalnessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + } + + function refreshUniformsLine( uniforms, material ) { + + uniforms.diffuse.value = material.color; + uniforms.opacity.value = material.opacity; + + } + + function refreshUniformsDash( uniforms, material ) { + + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + + } + + function refreshUniformsPoints( uniforms, material ) { + + uniforms.diffuse.value = material.color; + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * _pixelRatio; + uniforms.scale.value = _height * 0.5; + + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsSprites( uniforms, material ) { + + uniforms.diffuse.value = material.color; + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsFog( uniforms, fog ) { + + uniforms.fogColor.value = fog.color; + + if ( fog.isFog ) { + + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + + } else if ( fog.isFogExp2 ) { + + uniforms.fogDensity.value = fog.density; + + } + + } + + function refreshUniformsLambert( uniforms, material ) { + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + } + + function refreshUniformsPhong( uniforms, material ) { + + uniforms.specular.value = material.specular; + uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsToon( uniforms, material ) { + + refreshUniformsPhong( uniforms, material ); + + if ( material.gradientMap ) { + + uniforms.gradientMap.value = material.gradientMap; + + } + + } + + function refreshUniformsStandard( uniforms, material ) { + + uniforms.roughness.value = material.roughness; + uniforms.metalness.value = material.metalness; + + if ( material.roughnessMap ) { + + uniforms.roughnessMap.value = material.roughnessMap; + + } + + if ( material.metalnessMap ) { + + uniforms.metalnessMap.value = material.metalnessMap; + + } + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + if ( material.envMap ) { + + //uniforms.envMap.value = material.envMap; // part of uniforms common + uniforms.envMapIntensity.value = material.envMapIntensity; + + } + + } + + function refreshUniformsPhysical( uniforms, material ) { + + refreshUniformsStandard( uniforms, material ); + + uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common + + uniforms.clearCoat.value = material.clearCoat; + uniforms.clearCoatRoughness.value = material.clearCoatRoughness; + + } + + function refreshUniformsMatcap( uniforms, material ) { + + if ( material.matcap ) { + + uniforms.matcap.value = material.matcap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDepth( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDistance( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + uniforms.referencePosition.value.copy( material.referencePosition ); + uniforms.nearDistance.value = material.nearDistance; + uniforms.farDistance.value = material.farDistance; + + } + + function refreshUniformsNormal( uniforms, material ) { + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + function markUniformsLightsNeedsUpdate( uniforms, value ) { + + uniforms.ambientLightColor.needsUpdate = value; + + uniforms.directionalLights.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + + } + + // + + this.setFramebuffer = function ( value ) { + + _framebuffer = value; + + }; + + this.getRenderTarget = function () { + + return _currentRenderTarget; + + }; + + this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) { + + _currentRenderTarget = renderTarget; + + if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( renderTarget ); + + } + + var framebuffer = _framebuffer; + var isCube = false; + + if ( renderTarget ) { + + var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube ) { + + framebuffer = __webglFramebuffer[ activeCubeFace || 0 ]; + isCube = true; + + } else if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; + + } else { + + framebuffer = __webglFramebuffer; + + } + + _currentViewport.copy( renderTarget.viewport ); + _currentScissor.copy( renderTarget.scissor ); + _currentScissorTest = renderTarget.scissorTest; + + } else { + + _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); + _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); + _currentScissorTest = _scissorTest; + + } + + if ( _currentFramebuffer !== framebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + _currentFramebuffer = framebuffer; + + } + + state.viewport( _currentViewport ); + state.scissor( _currentScissor ); + state.setScissorTest( _currentScissorTest ); + + if ( isCube ) { + + var textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipMapLevel || 0 ); + + } + + }; + + this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + var framebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( framebuffer ) { + + var restore = false; + + if ( framebuffer !== _currentFramebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + + restore = true; + + } + + try { + + var texture = renderTarget.texture; + var textureFormat = texture.format; + var textureType = texture.type; + + if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + return; + + } + + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) + ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox + ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + return; + + } + + if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + + } + + } else { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + + } + + } finally { + + if ( restore ) { + + _gl.bindFramebuffer( 36160, _currentFramebuffer ); + + } + + } + + } + + }; + + this.copyFramebufferToTexture = function ( position, texture, level ) { + + var width = texture.image.width; + var height = texture.image.height; + var glFormat = utils.convert( texture.format ); + + textures.setTexture2D( texture, 0 ); + + _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); + + }; + + this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { + + var width = srcTexture.image.width; + var height = srcTexture.image.height; + var glFormat = utils.convert( dstTexture.format ); + var glType = utils.convert( dstTexture.type ); + + textures.setTexture2D( dstTexture, 0 ); + + if ( srcTexture.isDataTexture ) { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); + + } else { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function FogExp2( color, density ) { + + this.name = ''; + + this.color = new Color( color ); + this.density = ( density !== undefined ) ? density : 0.00025; + + } + + Object.assign( FogExp2.prototype, { + + isFogExp2: true, + + clone: function () { + + return new FogExp2( this.color, this.density ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density + }; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Fog( color, near, far ) { + + this.name = ''; + + this.color = new Color( color ); + + this.near = ( near !== undefined ) ? near : 1; + this.far = ( far !== undefined ) ? far : 1000; + + } + + Object.assign( Fog.prototype, { + + isFog: true, + + clone: function () { + + return new Fog( this.color, this.near, this.far ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far + }; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Scene() { + + Object3D.call( this ); + + this.type = 'Scene'; + + this.background = null; + this.fog = null; + this.overrideMaterial = null; + + this.autoUpdate = true; // checked by the renderer + + } + + Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Scene, + + isScene: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + if ( source.background !== null ) this.background = source.background.clone(); + if ( source.fog !== null ) this.fog = source.fog.clone(); + if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); + + this.autoUpdate = source.autoUpdate; + this.matrixAutoUpdate = source.matrixAutoUpdate; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); + if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); + + return data; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBuffer( array, stride ) { + + this.array = array; + this.stride = stride; + this.count = array !== undefined ? array.length / stride : 0; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( InterleavedBuffer.prototype, { + + isInterleavedBuffer: true, + + onUploadCallback: function () {}, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.stride : 0; + this.array = array; + + return this; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.array = new source.array.constructor( source.array ); + this.count = source.count; + this.stride = source.stride; + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.stride; + index2 *= attribute.stride; + + for ( var i = 0, l = this.stride; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { + + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + + this.normalized = normalized === true; + + } + + Object.defineProperties( InterleavedBufferAttribute.prototype, { + + count: { + + get: function () { + + return this.data.count; + + } + + }, + + array: { + + get: function () { + + return this.data.array; + + } + + } + + } ); + + Object.assign( InterleavedBufferAttribute.prototype, { + + isInterleavedBufferAttribute: true, + + setX: function ( index, x ) { + + this.data.array[ index * this.data.stride + this.offset ] = x; + + return this; + + }, + + setY: function ( index, y ) { + + this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + + return this; + + }, + + setZ: function ( index, z ) { + + this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + + return this; + + }, + + setW: function ( index, w ) { + + this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + + return this; + + }, + + getX: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset ]; + + }, + + getY: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 1 ]; + + }, + + getZ: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 2 ]; + + }, + + getW: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 3 ]; + + }, + + setXY: function ( index, x, y ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + this.data.array[ index + 3 ] = w; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * map: new THREE.Texture( ), + * rotation: , + * sizeAttenuation: + * } + */ + + function SpriteMaterial( parameters ) { + + Material.call( this ); + + this.type = 'SpriteMaterial'; + + this.color = new Color( 0xffffff ); + this.map = null; + + this.rotation = 0; + + this.sizeAttenuation = true; + + this.lights = false; + this.transparent = true; + + this.setValues( parameters ); + + } + + SpriteMaterial.prototype = Object.create( Material.prototype ); + SpriteMaterial.prototype.constructor = SpriteMaterial; + SpriteMaterial.prototype.isSpriteMaterial = true; + + SpriteMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.map = source.map; + + this.rotation = source.rotation; + + this.sizeAttenuation = source.sizeAttenuation; + + return this; + + }; + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + var geometry; + + function Sprite( material ) { + + Object3D.call( this ); + + this.type = 'Sprite'; + + if ( geometry === undefined ) { + + geometry = new BufferGeometry(); + + var float32Array = new Float32Array( [ + - 0.5, - 0.5, 0, 0, 0, + 0.5, - 0.5, 0, 1, 0, + 0.5, 0.5, 0, 1, 1, + - 0.5, 0.5, 0, 0, 1 + ] ); + + var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); + + geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); + geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); + geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); + + } + + this.geometry = geometry; + this.material = ( material !== undefined ) ? material : new SpriteMaterial(); + + this.center = new Vector2( 0.5, 0.5 ); + + } + + Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Sprite, + + isSprite: true, + + raycast: ( function () { + + var intersectPoint = new Vector3(); + var worldScale = new Vector3(); + var mvPosition = new Vector3(); + + var alignedPosition = new Vector2(); + var rotatedPosition = new Vector2(); + var viewWorldMatrix = new Matrix4(); + + var vA = new Vector3(); + var vB = new Vector3(); + var vC = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { + + // compute position in camera space + alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); + + // to check if rotation is not zero + if ( sin !== undefined ) { + + rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y ); + rotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y ); + + } else { + + rotatedPosition.copy( alignedPosition ); + + } + + + vertexPosition.copy( mvPosition ); + vertexPosition.x += rotatedPosition.x; + vertexPosition.y += rotatedPosition.y; + + // transform to world space + vertexPosition.applyMatrix4( viewWorldMatrix ); + + } + + return function raycast( raycaster, intersects ) { + + worldScale.setFromMatrixScale( this.matrixWorld ); + viewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld ); + mvPosition.setFromMatrixPosition( this.modelViewMatrix ); + + var rotation = this.material.rotation; + var sin, cos; + if ( rotation !== 0 ) { + + cos = Math.cos( rotation ); + sin = Math.sin( rotation ); + + } + + var center = this.center; + + transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + transformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + transformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + + uvA.set( 0, 0 ); + uvB.set( 1, 0 ); + uvC.set( 1, 1 ); + + // check first triangle + var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint ); + + if ( intersect === null ) { + + // check second triangle + transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + uvB.set( 0, 1 ); + + intersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint ); + if ( intersect === null ) { + + return; + + } + + } + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + point: intersectPoint.clone(), + uv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ), + face: null, + object: this + + } ); + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.material ).copy( this ); + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + if ( source.center !== undefined ) this.center.copy( source.center ); + + return this; + + } + + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function LOD() { + + Object3D.call( this ); + + this.type = 'LOD'; + + Object.defineProperties( this, { + levels: { + enumerable: true, + value: [] + } + } ); + + } + + LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: LOD, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + var levels = source.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + this.addLevel( level.object.clone(), level.distance ); + + } + + return this; + + }, + + addLevel: function ( object, distance ) { + + if ( distance === undefined ) distance = 0; + + distance = Math.abs( distance ); + + var levels = this.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + if ( distance < levels[ l ].distance ) { + + break; + + } + + } + + levels.splice( l, 0, { distance: distance, object: object } ); + + this.add( object ); + + }, + + getObjectForDistance: function ( distance ) { + + var levels = this.levels; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance < levels[ i ].distance ) { + + break; + + } + + } + + return levels[ i - 1 ].object; + + }, + + raycast: ( function () { + + var matrixPosition = new Vector3(); + + return function raycast( raycaster, intersects ) { + + matrixPosition.setFromMatrixPosition( this.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( matrixPosition ); + + this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + + }; + + }() ), + + update: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function update( camera ) { + + var levels = this.levels; + + if ( levels.length > 1 ) { + + v1.setFromMatrixPosition( camera.matrixWorld ); + v2.setFromMatrixPosition( this.matrixWorld ); + + var distance = v1.distanceTo( v2 ); + + levels[ 0 ].object.visible = true; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance >= levels[ i ].distance ) { + + levels[ i - 1 ].object.visible = false; + levels[ i ].object.visible = true; + + } else { + + break; + + } + + } + + for ( ; i < l; i ++ ) { + + levels[ i ].object.visible = false; + + } + + } + + }; + + }(), + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.levels = []; + + var levels = this.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + data.object.levels.push( { + object: level.object.uuid, + distance: level.distance + } ); + + } + + return data; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function SkinnedMesh( geometry, material ) { + + if ( geometry && geometry.isGeometry ) { + + console.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + Mesh.call( this, geometry, material ); + + this.type = 'SkinnedMesh'; + + this.bindMode = 'attached'; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + + } + + SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + + constructor: SkinnedMesh, + + isSkinnedMesh: true, + + bind: function ( skeleton, bindMatrix ) { + + this.skeleton = skeleton; + + if ( bindMatrix === undefined ) { + + this.updateMatrixWorld( true ); + + this.skeleton.calculateInverses(); + + bindMatrix = this.matrixWorld; + + } + + this.bindMatrix.copy( bindMatrix ); + this.bindMatrixInverse.getInverse( bindMatrix ); + + }, + + pose: function () { + + this.skeleton.pose(); + + }, + + normalizeSkinWeights: function () { + + var vector = new Vector4(); + + var skinWeight = this.geometry.attributes.skinWeight; + + for ( var i = 0, l = skinWeight.count; i < l; i ++ ) { + + vector.x = skinWeight.getX( i ); + vector.y = skinWeight.getY( i ); + vector.z = skinWeight.getZ( i ); + vector.w = skinWeight.getW( i ); + + var scale = 1.0 / vector.manhattanLength(); + + if ( scale !== Infinity ) { + + vector.multiplyScalar( scale ); + + } else { + + vector.set( 1, 0, 0, 0 ); // do something reasonable + + } + + skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); + + } + + }, + + updateMatrixWorld: function ( force ) { + + Mesh.prototype.updateMatrixWorld.call( this, force ); + + if ( this.bindMode === 'attached' ) { + + this.bindMatrixInverse.getInverse( this.matrixWorld ); + + } else if ( this.bindMode === 'detached' ) { + + this.bindMatrixInverse.getInverse( this.bindMatrix ); + + } else { + + console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author michael guerrero / http://realitymeltdown.com + * @author ikerr / http://verold.com + */ + + function Skeleton( bones, boneInverses ) { + + // copy the bone array + + bones = bones || []; + + this.bones = bones.slice( 0 ); + this.boneMatrices = new Float32Array( this.bones.length * 16 ); + + // use the supplied bone inverses or calculate the inverses + + if ( boneInverses === undefined ) { + + this.calculateInverses(); + + } else { + + if ( this.bones.length === boneInverses.length ) { + + this.boneInverses = boneInverses.slice( 0 ); + + } else { + + console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + this.boneInverses.push( new Matrix4() ); + + } + + } + + } + + } + + Object.assign( Skeleton.prototype, { + + calculateInverses: function () { + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var inverse = new Matrix4(); + + if ( this.bones[ i ] ) { + + inverse.getInverse( this.bones[ i ].matrixWorld ); + + } + + this.boneInverses.push( inverse ); + + } + + }, + + pose: function () { + + var bone, i, il; + + // recover the bind-time world matrices + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + bone.matrixWorld.getInverse( this.boneInverses[ i ] ); + + } + + } + + // compute the local matrices, positions, rotations and scales + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + if ( bone.parent && bone.parent.isBone ) { + + bone.matrix.getInverse( bone.parent.matrixWorld ); + bone.matrix.multiply( bone.matrixWorld ); + + } else { + + bone.matrix.copy( bone.matrixWorld ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + } + + } + + }, + + update: ( function () { + + var offsetMatrix = new Matrix4(); + var identityMatrix = new Matrix4(); + + return function update() { + + var bones = this.bones; + var boneInverses = this.boneInverses; + var boneMatrices = this.boneMatrices; + var boneTexture = this.boneTexture; + + // flatten bone matrices to array + + for ( var i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; + + offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + offsetMatrix.toArray( boneMatrices, i * 16 ); + + } + + if ( boneTexture !== undefined ) { + + boneTexture.needsUpdate = true; + + } + + }; + + } )(), + + clone: function () { + + return new Skeleton( this.bones, this.boneInverses ); + + }, + + getBoneByName: function ( name ) { + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var bone = this.bones[ i ]; + + if ( bone.name === name ) { + + return bone; + + } + + } + + return undefined; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function Bone() { + + Object3D.call( this ); + + this.type = 'Bone'; + + } + + Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Bone, + + isBone: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * linecap: "round", + * linejoin: "round" + * } + */ + + function LineBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'LineBasicMaterial'; + + this.color = new Color( 0xffffff ); + + this.linewidth = 1; + this.linecap = 'round'; + this.linejoin = 'round'; + + this.lights = false; + + this.setValues( parameters ); + + } + + LineBasicMaterial.prototype = Object.create( Material.prototype ); + LineBasicMaterial.prototype.constructor = LineBasicMaterial; + + LineBasicMaterial.prototype.isLineBasicMaterial = true; + + LineBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Line( geometry, material, mode ) { + + if ( mode === 1 ) { + + console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); + + } + + Object3D.call( this ); + + this.type = 'Line'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); + + } + + Line.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Line, + + isLine: true, + + computeLineDistances: ( function () { + + var start = new Vector3(); + var end = new Vector3(); + + return function computeLineDistances() { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = [ 0 ]; + + for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { + + start.fromBufferAttribute( positionAttribute, i - 1 ); + end.fromBufferAttribute( positionAttribute, i ); + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += start.distanceTo( end ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + lineDistances[ 0 ] = 0; + + for ( var i = 1, l = vertices.length; i < l; i ++ ) { + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); + + } + + } + + return this; + + }; + + }() ), + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var precision = raycaster.linePrecision; + + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + sphere.radius += precision; + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localPrecisionSq = localPrecision * localPrecision; + + var vStart = new Vector3(); + var vEnd = new Vector3(); + var interSegment = new Vector3(); + var interRay = new Vector3(); + var step = ( this && this.isLineSegments ) ? 2 : 1; + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, l = indices.length - 1; i < l; i += step ) { + + var a = indices[ i ]; + var b = indices[ i + 1 ]; + + vStart.fromArray( positions, a * 3 ); + vEnd.fromArray( positions, b * 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { + + vStart.fromArray( positions, 3 * i ); + vEnd.fromArray( positions, 3 * i + 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var nbVertices = vertices.length; + + for ( var i = 0; i < nbVertices - 1; i += step ) { + + var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LineSegments( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineSegments'; + + } + + LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineSegments, + + isLineSegments: true, + + computeLineDistances: ( function () { + + var start = new Vector3(); + var end = new Vector3(); + + return function computeLineDistances() { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = []; + + for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { + + start.fromBufferAttribute( positionAttribute, i ); + end.fromBufferAttribute( positionAttribute, i + 1 ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + for ( var i = 0, l = vertices.length; i < l; i += 2 ) { + + start.copy( vertices[ i ] ); + end.copy( vertices[ i + 1 ] ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + + } + + } + + return this; + + }; + + }() ) + + } ); + + /** + * @author mgreter / http://github.com/mgreter + */ + + function LineLoop( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineLoop'; + + } + + LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineLoop, + + isLineLoop: true, + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * size: , + * sizeAttenuation: + * + * morphTargets: + * } + */ + + function PointsMaterial( parameters ) { + + Material.call( this ); + + this.type = 'PointsMaterial'; + + this.color = new Color( 0xffffff ); + + this.map = null; + + this.size = 1; + this.sizeAttenuation = true; + + this.morphTargets = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + PointsMaterial.prototype = Object.create( Material.prototype ); + PointsMaterial.prototype.constructor = PointsMaterial; + + PointsMaterial.prototype.isPointsMaterial = true; + + PointsMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Points( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Points'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); + + } + + Points.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Points, + + isPoints: true, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var object = this; + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + var threshold = raycaster.params.Points.threshold; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + sphere.radius += threshold; + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localThresholdSq = localThreshold * localThreshold; + var position = new Vector3(); + var intersectPoint = new Vector3(); + + function testPoint( point, index ) { + + var rayPointDistanceSq = ray.distanceSqToPoint( point ); + + if ( rayPointDistanceSq < localThresholdSq ) { + + ray.closestPointToPoint( point, intersectPoint ); + intersectPoint.applyMatrix4( matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + distanceToRay: Math.sqrt( rayPointDistanceSq ), + point: intersectPoint.clone(), + index: index, + face: null, + object: object + + } ); + + } + + } + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, il = indices.length; i < il; i ++ ) { + + var a = indices[ i ]; + + position.fromArray( positions, a * 3 ); + + testPoint( position, a ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { + + position.fromArray( positions, i * 3 ); + + testPoint( position, i ); + + } + + } + + } else { + + var vertices = geometry.vertices; + + for ( var i = 0, l = vertices.length; i < l; i ++ ) { + + testPoint( vertices[ i ], i ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.format = format !== undefined ? format : RGBFormat; + + this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + + this.generateMipmaps = false; + + } + + VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { + + constructor: VideoTexture, + + isVideoTexture: true, + + update: function () { + + var video = this.image; + + if ( video.readyState >= video.HAVE_CURRENT_DATA ) { + + this.needsUpdate = true; + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { width: width, height: height }; + this.mipmaps = mipmaps; + + // no flipping for cube textures + // (also flipping doesn't work for compressed textures ) + + this.flipY = false; + + // can't generate mipmaps for compressed textures + // mips must be embedded in DDS files + + this.generateMipmaps = false; + + } + + CompressedTexture.prototype = Object.create( Texture.prototype ); + CompressedTexture.prototype.constructor = CompressedTexture; + + CompressedTexture.prototype.isCompressedTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.needsUpdate = true; + + } + + CanvasTexture.prototype = Object.create( Texture.prototype ); + CanvasTexture.prototype.constructor = CanvasTexture; + CanvasTexture.prototype.isCanvasTexture = true; + + /** + * @author Matt DesLauriers / @mattdesl + * @author atix / arthursilber.de + */ + + function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { + + format = format !== undefined ? format : DepthFormat; + + if ( format !== DepthFormat && format !== DepthStencilFormat ) { + + throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + + } + + if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; + if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.image = { width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.flipY = false; + this.generateMipmaps = false; + + } + + DepthTexture.prototype = Object.create( Texture.prototype ); + DepthTexture.prototype.constructor = DepthTexture; + DepthTexture.prototype.isDepthTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WireframeGeometry( geometry ) { + + BufferGeometry.call( this ); + + this.type = 'WireframeGeometry'; + + // buffer + + var vertices = []; + + // helper variables + + var i, j, l, o, ol; + var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + var vertex; + + // different logic for Geometry and BufferGeometry + + if ( geometry && geometry.isGeometry ) { + + // create a data structure that contains all edges without duplicates + + var faces = geometry.faces; + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex = geometry.vertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = geometry.vertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else if ( geometry && geometry.isBufferGeometry ) { + + var position, indices, groups; + var group, start, count; + var index1, index2; + + vertex = new Vector3(); + + if ( geometry.index !== null ) { + + // indexed BufferGeometry + + position = geometry.attributes.position; + indices = geometry.index; + groups = geometry.groups; + + if ( groups.length === 0 ) { + + groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + + } + + // create a data structure that contains all eges without duplicates + + for ( o = 0, ol = groups.length; o < ol; ++ o ) { + + group = groups[ o ]; + + start = group.start; + count = group.count; + + for ( i = start, l = ( start + count ); i < l; i += 3 ) { + + for ( j = 0; j < 3; j ++ ) { + + edge1 = indices.getX( i + j ); + edge2 = indices.getX( i + ( j + 1 ) % 3 ); + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex.fromBufferAttribute( position, e.index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex.fromBufferAttribute( position, e.index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else { + + // non-indexed BufferGeometry + + position = geometry.attributes.position; + + for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + + for ( j = 0; j < 3; j ++ ) { + + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + + index1 = 3 * i + j; + vertex.fromBufferAttribute( position, index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + index2 = 3 * i + ( ( j + 1 ) % 3 ); + vertex.fromBufferAttribute( position, index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); + WireframeGeometry.prototype.constructor = WireframeGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author Mugen87 / https://github.com/Mugen87 + * + * Parametric Surfaces Geometry + * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 + */ + + // ParametricGeometry + + function ParametricGeometry( func, slices, stacks ) { + + Geometry.call( this ); + + this.type = 'ParametricGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); + this.mergeVertices(); + + } + + ParametricGeometry.prototype = Object.create( Geometry.prototype ); + ParametricGeometry.prototype.constructor = ParametricGeometry; + + // ParametricBufferGeometry + + function ParametricBufferGeometry( func, slices, stacks ) { + + BufferGeometry.call( this ); + + this.type = 'ParametricBufferGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + var EPS = 0.00001; + + var normal = new Vector3(); + + var p0 = new Vector3(), p1 = new Vector3(); + var pu = new Vector3(), pv = new Vector3(); + + var i, j; + + if ( func.length < 3 ) { + + console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); + + } + + // generate vertices, normals and uvs + + var sliceCount = slices + 1; + + for ( i = 0; i <= stacks; i ++ ) { + + var v = i / stacks; + + for ( j = 0; j <= slices; j ++ ) { + + var u = j / slices; + + // vertex + + func( u, v, p0 ); + vertices.push( p0.x, p0.y, p0.z ); + + // normal + + // approximate tangent vectors via finite differences + + if ( u - EPS >= 0 ) { + + func( u - EPS, v, p1 ); + pu.subVectors( p0, p1 ); + + } else { + + func( u + EPS, v, p1 ); + pu.subVectors( p1, p0 ); + + } + + if ( v - EPS >= 0 ) { + + func( u, v - EPS, p1 ); + pv.subVectors( p0, p1 ); + + } else { + + func( u, v + EPS, p1 ); + pv.subVectors( p1, p0 ); + + } + + // cross product of tangent vectors returns surface normal + + normal.crossVectors( pu, pv ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, v ); + + } + + } + + // generate indices + + for ( i = 0; i < stacks; i ++ ) { + + for ( j = 0; j < slices; j ++ ) { + + var a = i * sliceCount + j; + var b = i * sliceCount + j + 1; + var c = ( i + 1 ) * sliceCount + j + 1; + var d = ( i + 1 ) * sliceCount + j; + + // faces one and two + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; + + /** + * @author clockworkgeek / https://github.com/clockworkgeek + * @author timothypratley / https://github.com/timothypratley + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PolyhedronGeometry + + function PolyhedronGeometry( vertices, indices, radius, detail ) { + + Geometry.call( this ); + + this.type = 'PolyhedronGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); + this.mergeVertices(); + + } + + PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); + PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; + + // PolyhedronBufferGeometry + + function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { + + BufferGeometry.call( this ); + + this.type = 'PolyhedronBufferGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + radius = radius || 1; + detail = detail || 0; + + // default buffer data + + var vertexBuffer = []; + var uvBuffer = []; + + // the subdivision creates the vertex buffer data + + subdivide( detail ); + + // all vertices should lie on a conceptual sphere with a given radius + + appplyRadius( radius ); + + // finally, create the uv data + + generateUVs(); + + // build non-indexed geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + + if ( detail === 0 ) { + + this.computeVertexNormals(); // flat normals + + } else { + + this.normalizeNormals(); // smooth normals + + } + + // helper functions + + function subdivide( detail ) { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + // iterate over all faces and apply a subdivison with the given detail value + + for ( var i = 0; i < indices.length; i += 3 ) { + + // get the vertices of the face + + getVertexByIndex( indices[ i + 0 ], a ); + getVertexByIndex( indices[ i + 1 ], b ); + getVertexByIndex( indices[ i + 2 ], c ); + + // perform subdivision + + subdivideFace( a, b, c, detail ); + + } + + } + + function subdivideFace( a, b, c, detail ) { + + var cols = Math.pow( 2, detail ); + + // we use this multidimensional array as a data structure for creating the subdivision + + var v = []; + + var i, j; + + // construct all of the vertices for this subdivision + + for ( i = 0; i <= cols; i ++ ) { + + v[ i ] = []; + + var aj = a.clone().lerp( c, i / cols ); + var bj = b.clone().lerp( c, i / cols ); + + var rows = cols - i; + + for ( j = 0; j <= rows; j ++ ) { + + if ( j === 0 && i === cols ) { + + v[ i ][ j ] = aj; + + } else { + + v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + + } + + } + + } + + // construct all of the faces + + for ( i = 0; i < cols; i ++ ) { + + for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + + var k = Math.floor( j / 2 ); + + if ( j % 2 === 0 ) { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + pushVertex( v[ i ][ k ] ); + + } else { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + + } + + } + + } + + } + + function appplyRadius( radius ) { + + var vertex = new Vector3(); + + // iterate over the entire buffer and apply the radius to each vertex + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + vertex.normalize().multiplyScalar( radius ); + + vertexBuffer[ i + 0 ] = vertex.x; + vertexBuffer[ i + 1 ] = vertex.y; + vertexBuffer[ i + 2 ] = vertex.z; + + } + + } + + function generateUVs() { + + var vertex = new Vector3(); + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + var u = azimuth( vertex ) / 2 / Math.PI + 0.5; + var v = inclination( vertex ) / Math.PI + 0.5; + uvBuffer.push( u, 1 - v ); + + } + + correctUVs(); + + correctSeam(); + + } + + function correctSeam() { + + // handle case when face straddles the seam, see #3269 + + for ( var i = 0; i < uvBuffer.length; i += 6 ) { + + // uv data of a single face + + var x0 = uvBuffer[ i + 0 ]; + var x1 = uvBuffer[ i + 2 ]; + var x2 = uvBuffer[ i + 4 ]; + + var max = Math.max( x0, x1, x2 ); + var min = Math.min( x0, x1, x2 ); + + // 0.9 is somewhat arbitrary + + if ( max > 0.9 && min < 0.1 ) { + + if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; + if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; + if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; + + } + + } + + } + + function pushVertex( vertex ) { + + vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + + } + + function getVertexByIndex( index, vertex ) { + + var stride = index * 3; + + vertex.x = vertices[ stride + 0 ]; + vertex.y = vertices[ stride + 1 ]; + vertex.z = vertices[ stride + 2 ]; + + } + + function correctUVs() { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + var centroid = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + + a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); + b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); + c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + + uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); + uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); + uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + + centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + + var azi = azimuth( centroid ); + + correctUV( uvA, j + 0, a, azi ); + correctUV( uvB, j + 2, b, azi ); + correctUV( uvC, j + 4, c, azi ); + + } + + } + + function correctUV( uv, stride, vector, azimuth ) { + + if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + + uvBuffer[ stride ] = uv.x - 1; + + } + + if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + + uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + + } + + } + + // Angle around the Y axis, counter-clockwise when looking from above. + + function azimuth( vector ) { + + return Math.atan2( vector.z, - vector.x ); + + } + + + // Angle above the XZ plane. + + function inclination( vector ) { + + return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + + } + + } + + PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TetrahedronGeometry + + function TetrahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'TetrahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); + TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; + + // TetrahedronBufferGeometry + + function TetrahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 + ]; + + var indices = [ + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'TetrahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // OctahedronGeometry + + function OctahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'OctahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + OctahedronGeometry.prototype = Object.create( Geometry.prototype ); + OctahedronGeometry.prototype.constructor = OctahedronGeometry; + + // OctahedronBufferGeometry + + function OctahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 0, 0, - 1, 0, 0, 0, 1, 0, + 0, - 1, 0, 0, 0, 1, 0, 0, - 1 + ]; + + var indices = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'OctahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // IcosahedronGeometry + + function IcosahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'IcosahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); + IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; + + // IcosahedronBufferGeometry + + function IcosahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + + var vertices = [ + - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, + 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, + t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 + ]; + + var indices = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'IcosahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; + + /** + * @author Abe Pazos / https://hamoid.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // DodecahedronGeometry + + function DodecahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'DodecahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); + DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; + + // DodecahedronBufferGeometry + + function DodecahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var r = 1 / t; + + var vertices = [ + + // (±1, ±1, ±1) + - 1, - 1, - 1, - 1, - 1, 1, + - 1, 1, - 1, - 1, 1, 1, + 1, - 1, - 1, 1, - 1, 1, + 1, 1, - 1, 1, 1, 1, + + // (0, ±1/φ, ±φ) + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, + + // (±1/φ, ±φ, 0) + - r, - t, 0, - r, t, 0, + r, - t, 0, r, t, 0, + + // (±φ, 0, ±1/φ) + - t, 0, - r, t, 0, - r, + - t, 0, r, t, 0, r + ]; + + var indices = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'DodecahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; + + /** + * @author oosmoxiecode / https://github.com/oosmoxiecode + * @author WestLangley / https://github.com/WestLangley + * @author zz85 / https://github.com/zz85 + * @author miningold / https://github.com/miningold + * @author jonobr1 / https://github.com/jonobr1 + * @author Mugen87 / https://github.com/Mugen87 + * + */ + + // TubeGeometry + + function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { + + Geometry.call( this ); + + this.type = 'TubeGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); + + var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); + + // expose internals + + this.tangents = bufferGeometry.tangents; + this.normals = bufferGeometry.normals; + this.binormals = bufferGeometry.binormals; + + // create geometry + + this.fromBufferGeometry( bufferGeometry ); + this.mergeVertices(); + + } + + TubeGeometry.prototype = Object.create( Geometry.prototype ); + TubeGeometry.prototype.constructor = TubeGeometry; + + // TubeBufferGeometry + + function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { + + BufferGeometry.call( this ); + + this.type = 'TubeBufferGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + tubularSegments = tubularSegments || 64; + radius = radius || 1; + radialSegments = radialSegments || 8; + closed = closed || false; + + var frames = path.computeFrenetFrames( tubularSegments, closed ); + + // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; + + // helper variables + + var vertex = new Vector3(); + var normal = new Vector3(); + var uv = new Vector2(); + var P = new Vector3(); + + var i, j; + + // buffer + + var vertices = []; + var normals = []; + var uvs = []; + var indices = []; + + // create buffer data + + generateBufferData(); + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // functions + + function generateBufferData() { + + for ( i = 0; i < tubularSegments; i ++ ) { + + generateSegment( i ); + + } + + // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + generateSegment( ( closed === false ) ? tubularSegments : 0 ); + + // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); + + // finally create faces + + generateIndices(); + + } + + function generateSegment( i ) { + + // we use getPointAt to sample evenly distributed points from the given path + + P = path.getPointAt( i / tubularSegments, P ); + + // retrieve corresponding normal and binormal + + var N = frames.normals[ i ]; + var B = frames.binormals[ i ]; + + // generate normals and vertices for the current segment + + for ( j = 0; j <= radialSegments; j ++ ) { + + var v = j / radialSegments * Math.PI * 2; + + var sin = Math.sin( v ); + var cos = - Math.cos( v ); + + // normal + + normal.x = ( cos * N.x + sin * B.x ); + normal.y = ( cos * N.y + sin * B.y ); + normal.z = ( cos * N.z + sin * B.z ); + normal.normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + function generateIndices() { + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + } + + function generateUVs() { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + for ( j = 0; j <= radialSegments; j ++ ) { + + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + + uvs.push( uv.x, uv.y ); + + } + + } + + } + + } + + TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; + + TubeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + data.path = this.parameters.path.toJSON(); + + return data; + + }; + + /** + * @author oosmoxiecode + * @author Mugen87 / https://github.com/Mugen87 + * + * based on http://www.blackpawn.com/texts/pqtorus/ + */ + + // TorusKnotGeometry + + function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { + + Geometry.call( this ); + + this.type = 'TorusKnotGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); + + this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); + this.mergeVertices(); + + } + + TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); + TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; + + // TorusKnotBufferGeometry + + function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { + + BufferGeometry.call( this ); + + this.type = 'TorusKnotBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + radius = radius || 1; + tube = tube || 0.4; + tubularSegments = Math.floor( tubularSegments ) || 64; + radialSegments = Math.floor( radialSegments ) || 8; + p = p || 2; + q = q || 3; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, j; + + var vertex = new Vector3(); + var normal = new Vector3(); + + var P1 = new Vector3(); + var P2 = new Vector3(); + + var B = new Vector3(); + var T = new Vector3(); + var N = new Vector3(); + + // generate vertices, normals and uvs + + for ( i = 0; i <= tubularSegments; ++ i ) { + + // the radian "u" is used to calculate the position on the torus curve of the current tubular segement + + var u = i / tubularSegments * p * Math.PI * 2; + + // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve( u, p, q, radius, P1 ); + calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + + // calculate orthonormal basis + + T.subVectors( P2, P1 ); + N.addVectors( P2, P1 ); + B.crossVectors( T, N ); + N.crossVectors( B, T ); + + // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for ( j = 0; j <= radialSegments; ++ j ) { + + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + + var v = j / radialSegments * Math.PI * 2; + var cx = - tube * Math.cos( v ); + var cy = tube * Math.sin( v ); + + // now calculate the final vertex position. + // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve + + vertex.x = P1.x + ( cx * N.x + cy * B.x ); + vertex.y = P1.y + ( cx * N.y + cy * B.y ); + vertex.z = P1.z + ( cx * N.z + cy * B.z ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors( vertex, P1 ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + // indices + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // this function calculates the current position on the torus curve + + function calculatePositionOnCurve( u, p, q, radius, position ) { + + var cu = Math.cos( u ); + var su = Math.sin( u ); + var quOverP = q / p * u; + var cs = Math.cos( quOverP ); + + position.x = radius * ( 2 + cs ) * 0.5 * cu; + position.y = radius * ( 2 + cs ) * su * 0.5; + position.z = radius * Math.sin( quOverP ) * 0.5; + + } + + } + + TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; + + /** + * @author oosmoxiecode + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TorusGeometry + + function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + Geometry.call( this ); + + this.type = 'TorusGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); + this.mergeVertices(); + + } + + TorusGeometry.prototype = Object.create( Geometry.prototype ); + TorusGeometry.prototype.constructor = TorusGeometry; + + // TorusBufferGeometry + + function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + BufferGeometry.call( this ); + + this.type = 'TorusBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + radius = radius || 1; + tube = tube || 0.4; + radialSegments = Math.floor( radialSegments ) || 8; + tubularSegments = Math.floor( tubularSegments ) || 6; + arc = arc || Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var center = new Vector3(); + var vertex = new Vector3(); + var normal = new Vector3(); + + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= radialSegments; j ++ ) { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + var u = i / tubularSegments * arc; + var v = j / radialSegments * Math.PI * 2; + + // vertex + + vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); + vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); + vertex.z = tube * Math.sin( v ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + center.x = radius * Math.cos( u ); + center.y = radius * Math.sin( u ); + normal.subVectors( vertex, center ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= radialSegments; j ++ ) { + + for ( i = 1; i <= tubularSegments; i ++ ) { + + // indices + + var a = ( tubularSegments + 1 ) * j + i - 1; + var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; + var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; + var d = ( tubularSegments + 1 ) * j + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; + + /** + * @author Mugen87 / https://github.com/Mugen87 + * Port from https://github.com/mapbox/earcut (v2.1.2) + */ + + var Earcut = { + + triangulate: function ( data, holeIndices, dim ) { + + dim = dim || 2; + + var hasHoles = holeIndices && holeIndices.length, + outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, + outerNode = linkedList( data, 0, outerLen, dim, true ), + triangles = []; + + if ( ! outerNode ) return triangles; + + var minX, minY, maxX, maxY, x, y, invSize; + + if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + + if ( data.length > 80 * dim ) { + + minX = maxX = data[ 0 ]; + minY = maxY = data[ 1 ]; + + for ( var i = dim; i < outerLen; i += dim ) { + + x = data[ i ]; + y = data[ i + 1 ]; + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + + invSize = Math.max( maxX - minX, maxY - minY ); + invSize = invSize !== 0 ? 1 / invSize : 0; + + } + + earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); + + return triangles; + + } + + }; + + // create a circular doubly linked list from polygon points in the specified winding order + + function linkedList( data, start, end, dim, clockwise ) { + + var i, last; + + if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { + + for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } else { + + for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } + + if ( last && equals( last, last.next ) ) { + + removeNode( last ); + last = last.next; + + } + + return last; + + } + + // eliminate colinear or duplicate points + + function filterPoints( start, end ) { + + if ( ! start ) return start; + if ( ! end ) end = start; + + var p = start, again; + + do { + + again = false; + + if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { + + removeNode( p ); + p = end = p.prev; + if ( p === p.next ) break; + again = true; + + } else { + + p = p.next; + + } + + } while ( again || p !== end ); + + return end; + + } + + // main ear slicing loop which triangulates a polygon (given as a linked list) + + function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { + + if ( ! ear ) return; + + // interlink polygon nodes in z-order + + if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); + + var stop = ear, prev, next; + + // iterate through ears, slicing them one by one + + while ( ear.prev !== ear.next ) { + + prev = ear.prev; + next = ear.next; + + if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { + + // cut off the triangle + triangles.push( prev.i / dim ); + triangles.push( ear.i / dim ); + triangles.push( next.i / dim ); + + removeNode( ear ); + + // skipping the next vertice leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + + if ( ear === stop ) { + + // try filtering points and slicing again + + if ( ! pass ) { + + earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); + + // if this didn't work, try curing all small self-intersections locally + + } else if ( pass === 1 ) { + + ear = cureLocalIntersections( ear, triangles, dim ); + earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); + + // as a last resort, try splitting the remaining polygon into two + + } else if ( pass === 2 ) { + + splitEarcut( ear, triangles, dim, minX, minY, invSize ); + + } + + break; + + } + + } + + } + + // check whether a polygon node forms a valid ear with adjacent nodes + + function isEar( ear ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + var p = ear.next.next; + + while ( p !== ear.prev ) { + + if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { + + return false; + + } + + p = p.next; + + } + + return true; + + } + + function isEarHashed( ear, minX, minY, invSize ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // triangle bbox; min & max are calculated like this for speed + + var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), + minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), + maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), + maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); + + // z-order range for the current triangle bbox; + + var minZ = zOrder( minTX, minTY, minX, minY, invSize ), + maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); + + // first look for points inside the triangle in increasing z-order + + var p = ear.nextZ; + + while ( p && p.z <= maxZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + p = p.nextZ; + + } + + // then look for points in decreasing z-order + + p = ear.prevZ; + + while ( p && p.z >= minZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + + p = p.prevZ; + + } + + return true; + + } + + // go through all polygon nodes and cure small local self-intersections + + function cureLocalIntersections( start, triangles, dim ) { + + var p = start; + + do { + + var a = p.prev, b = p.next.next; + + if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { + + triangles.push( a.i / dim ); + triangles.push( p.i / dim ); + triangles.push( b.i / dim ); + + // remove two nodes involved + + removeNode( p ); + removeNode( p.next ); + + p = start = b; + + } + + p = p.next; + + } while ( p !== start ); + + return p; + + } + + // try splitting polygon into two and triangulate them independently + + function splitEarcut( start, triangles, dim, minX, minY, invSize ) { + + // look for a valid diagonal that divides the polygon into two + + var a = start; + + do { + + var b = a.next.next; + + while ( b !== a.prev ) { + + if ( a.i !== b.i && isValidDiagonal( a, b ) ) { + + // split the polygon in two by the diagonal + + var c = splitPolygon( a, b ); + + // filter colinear points around the cuts + + a = filterPoints( a, a.next ); + c = filterPoints( c, c.next ); + + // run earcut on each half + + earcutLinked( a, triangles, dim, minX, minY, invSize ); + earcutLinked( c, triangles, dim, minX, minY, invSize ); + return; + + } + + b = b.next; + + } + + a = a.next; + + } while ( a !== start ); + + } + + // link every hole into the outer loop, producing a single-ring polygon without holes + + function eliminateHoles( data, holeIndices, outerNode, dim ) { + + var queue = [], i, len, start, end, list; + + for ( i = 0, len = holeIndices.length; i < len; i ++ ) { + + start = holeIndices[ i ] * dim; + end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; + list = linkedList( data, start, end, dim, false ); + if ( list === list.next ) list.steiner = true; + queue.push( getLeftmost( list ) ); + + } + + queue.sort( compareX ); + + // process holes from left to right + + for ( i = 0; i < queue.length; i ++ ) { + + eliminateHole( queue[ i ], outerNode ); + outerNode = filterPoints( outerNode, outerNode.next ); + + } + + return outerNode; + + } + + function compareX( a, b ) { + + return a.x - b.x; + + } + + // find a bridge between vertices that connects hole with an outer ring and and link it + + function eliminateHole( hole, outerNode ) { + + outerNode = findHoleBridge( hole, outerNode ); + + if ( outerNode ) { + + var b = splitPolygon( outerNode, hole ); + + filterPoints( b, b.next ); + + } + + } + + // David Eberly's algorithm for finding a bridge between hole and outer polygon + + function findHoleBridge( hole, outerNode ) { + + var p = outerNode, + hx = hole.x, + hy = hole.y, + qx = - Infinity, + m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + + do { + + if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { + + var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); + + if ( x <= hx && x > qx ) { + + qx = x; + + if ( x === hx ) { + + if ( hy === p.y ) return p; + if ( hy === p.next.y ) return p.next; + + } + + m = p.x < p.next.x ? p : p.next; + + } + + } + + p = p.next; + + } while ( p !== outerNode ); + + if ( ! m ) return null; + + if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + var stop = m, + mx = m.x, + my = m.y, + tanMin = Infinity, + tan; + + p = m.next; + + while ( p !== stop ) { + + if ( hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { + + tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential + + if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { + + m = p; + tanMin = tan; + + } + + } + + p = p.next; + + } + + return m; + + } + + // interlink polygon nodes in z-order + + function indexCurve( start, minX, minY, invSize ) { + + var p = start; + + do { + + if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + + } while ( p !== start ); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked( p ); + + } + + // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + + function sortLinked( list ) { + + var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + + do { + + p = list; + list = null; + tail = null; + numMerges = 0; + + while ( p ) { + + numMerges ++; + q = p; + pSize = 0; + + for ( i = 0; i < inSize; i ++ ) { + + pSize ++; + q = q.nextZ; + if ( ! q ) break; + + } + + qSize = inSize; + + while ( pSize > 0 || ( qSize > 0 && q ) ) { + + if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { + + e = p; + p = p.nextZ; + pSize --; + + } else { + + e = q; + q = q.nextZ; + qSize --; + + } + + if ( tail ) tail.nextZ = e; + else list = e; + + e.prevZ = tail; + tail = e; + + } + + p = q; + + } + + tail.nextZ = null; + inSize *= 2; + + } while ( numMerges > 1 ); + + return list; + + } + + // z-order of a point given coords and inverse of the longer side of data bbox + + function zOrder( x, y, minX, minY, invSize ) { + + // coords are transformed into non-negative 15-bit integer range + + x = 32767 * ( x - minX ) * invSize; + y = 32767 * ( y - minY ) * invSize; + + x = ( x | ( x << 8 ) ) & 0x00FF00FF; + x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; + x = ( x | ( x << 2 ) ) & 0x33333333; + x = ( x | ( x << 1 ) ) & 0x55555555; + + y = ( y | ( y << 8 ) ) & 0x00FF00FF; + y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; + y = ( y | ( y << 2 ) ) & 0x33333333; + y = ( y | ( y << 1 ) ) & 0x55555555; + + return x | ( y << 1 ); + + } + + // find the leftmost node of a polygon ring + + function getLeftmost( start ) { + + var p = start, leftmost = start; + + do { + + if ( p.x < leftmost.x ) leftmost = p; + p = p.next; + + } while ( p !== start ); + + return leftmost; + + } + + // check if a point lies within a convex triangle + + function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { + + return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && + ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && + ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; + + } + + // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + + function isValidDiagonal( a, b ) { + + return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && + locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); + + } + + // signed area of a triangle + + function area( p, q, r ) { + + return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); + + } + + // check if two points are equal + + function equals( p1, p2 ) { + + return p1.x === p2.x && p1.y === p2.y; + + } + + // check if two segments intersect + + function intersects( p1, q1, p2, q2 ) { + + if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || + ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; + + return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && + area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; + + } + + // check if a polygon diagonal intersects any polygon segments + + function intersectsPolygon( a, b ) { + + var p = a; + + do { + + if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects( p, p.next, a, b ) ) { + + return true; + + } + + p = p.next; + + } while ( p !== a ); + + return false; + + } + + // check if a polygon diagonal is locally inside the polygon + + function locallyInside( a, b ) { + + return area( a.prev, a, a.next ) < 0 ? + area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : + area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; + + } + + // check if the middle point of a polygon diagonal is inside the polygon + + function middleInside( a, b ) { + + var p = a, + inside = false, + px = ( a.x + b.x ) / 2, + py = ( a.y + b.y ) / 2; + + do { + + if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && + ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { + + inside = ! inside; + + } + + p = p.next; + + } while ( p !== a ); + + return inside; + + } + + // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + + function splitPolygon( a, b ) { + + var a2 = new Node( a.i, a.x, a.y ), + b2 = new Node( b.i, b.x, b.y ), + an = a.next, + bp = b.prev; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; + + } + + // create a node and optionally link it with previous one (in a circular doubly linked list) + + function insertNode( i, x, y, last ) { + + var p = new Node( i, x, y ); + + if ( ! last ) { + + p.prev = p; + p.next = p; + + } else { + + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + + } + + return p; + + } + + function removeNode( p ) { + + p.next.prev = p.prev; + p.prev.next = p.next; + + if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; + if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; + + } + + function Node( i, x, y ) { + + // vertice index in coordinates array + this.i = i; + + // vertex coordinates + this.x = x; + this.y = y; + + // previous and next vertice nodes in a polygon ring + this.prev = null; + this.next = null; + + // z-order curve value + this.z = null; + + // previous and next nodes in z-order + this.prevZ = null; + this.nextZ = null; + + // indicates whether this is a steiner point + this.steiner = false; + + } + + function signedArea( data, start, end, dim ) { + + var sum = 0; + + for ( var i = start, j = end - dim; i < end; i += dim ) { + + sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); + j = i; + + } + + return sum; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + var ShapeUtils = { + + // calculate area of the contour polygon + + area: function ( contour ) { + + var n = contour.length; + var a = 0.0; + + for ( var p = n - 1, q = 0; q < n; p = q ++ ) { + + a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + + } + + return a * 0.5; + + }, + + isClockWise: function ( pts ) { + + return ShapeUtils.area( pts ) < 0; + + }, + + triangulateShape: function ( contour, holes ) { + + var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + var holeIndices = []; // array of hole indices + var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts( contour ); + addContour( vertices, contour ); + + // + + var holeIndex = contour.length; + + holes.forEach( removeDupEndPts ); + + for ( var i = 0; i < holes.length; i ++ ) { + + holeIndices.push( holeIndex ); + holeIndex += holes[ i ].length; + addContour( vertices, holes[ i ] ); + + } + + // + + var triangles = Earcut.triangulate( vertices, holeIndices ); + + // + + for ( var i = 0; i < triangles.length; i += 3 ) { + + faces.push( triangles.slice( i, i + 3 ) ); + + } + + return faces; + + } + + }; + + function removeDupEndPts( points ) { + + var l = points.length; + + if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + + points.pop(); + + } + + } + + function addContour( vertices, contour ) { + + for ( var i = 0; i < contour.length; i ++ ) { + + vertices.push( contour[ i ].x ); + vertices.push( contour[ i ].y ); + + } + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Creates extruded geometry from a path shape. + * + * parameters = { + * + * curveSegments: , // number of points on the curves + * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too + * depth: , // Depth to extrude the shape + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into the original shape bevel goes + * bevelSize: , // how far from shape outline is bevel + * bevelSegments: , // number of bevel layers + * + * extrudePath: // curve to extrude shape along + * + * UVGenerator: // object that provides UV generator functions + * + * } + */ + + // ExtrudeGeometry + + function ExtrudeGeometry( shapes, options ) { + + Geometry.call( this ); + + this.type = 'ExtrudeGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); + this.mergeVertices(); + + } + + ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); + ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; + + ExtrudeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // ExtrudeBufferGeometry + + function ExtrudeBufferGeometry( shapes, options ) { + + BufferGeometry.call( this ); + + this.type = 'ExtrudeBufferGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + + var scope = this; + + var verticesArray = []; + var uvArray = []; + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + addShape( shape ); + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + + this.computeVertexNormals(); + + // functions + + function addShape( shape ) { + + var placeholder = []; + + // options + + var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + var steps = options.steps !== undefined ? options.steps : 1; + var depth = options.depth !== undefined ? options.depth : 100; + + var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; + var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; + var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; + var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + + var extrudePath = options.extrudePath; + + var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; + + // deprecated options + + if ( options.amount !== undefined ) { + + console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); + depth = options.amount; + + } + + // + + var extrudePts, extrudeByPath = false; + var splineTube, binormal, normal, position2; + + if ( extrudePath ) { + + extrudePts = extrudePath.getSpacedPoints( steps ); + + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + + // SETUP TNB variables + + // TODO1 - have a .isClosed in spline? + + splineTube = extrudePath.computeFrenetFrames( steps, false ); + + // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + + } + + // Safeguards if bevels are not enabled + + if ( ! bevelEnabled ) { + + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + + } + + // Variables initialization + + var ahole, h, hl; // looping of holes + + var shapePoints = shape.extractPoints( curveSegments ); + + var vertices = shapePoints.shape; + var holes = shapePoints.holes; + + var reverse = ! ShapeUtils.isClockWise( vertices ); + + if ( reverse ) { + + vertices = vertices.reverse(); + + // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + if ( ShapeUtils.isClockWise( ahole ) ) { + + holes[ h ] = ahole.reverse(); + + } + + } + + } + + + var faces = ShapeUtils.triangulateShape( vertices, holes ); + + /* Vertices */ + + var contour = vertices; // vertices has all points but contour has only points of circumference + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + vertices = vertices.concat( ahole ); + + } + + + function scalePt2( pt, vec, size ) { + + if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); + + return vec.clone().multiplyScalar( size ).add( pt ); + + } + + var b, bs, t, z, + vert, vlen = vertices.length, + face, flen = faces.length; + + + // Find directions for point movement + + + function getBevelVec( inPt, inPrev, inNext ) { + + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + + var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + var v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + var v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + + var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + + // check for collinear edges + var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + if ( Math.abs( collinear0 ) > Number.EPSILON ) { + + // not collinear + + // length of vectors for normalizing + + var v_prev_len = Math.sqrt( v_prev_lensq ); + var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + + // shift adjacent points by unit vectors to the left + + var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); + var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + + var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); + var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + + // scaling factor for v_prev to intersection point + + var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - + ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / + ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + // vector from inPt to intersection point + + v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); + v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); + if ( v_trans_lensq <= 2 ) { + + return new Vector2( v_trans_x, v_trans_y ); + + } else { + + shrink_by = Math.sqrt( v_trans_lensq / 2 ); + + } + + } else { + + // handle special case of collinear edges + + var direction_eq = false; // assumes: opposite + if ( v_prev_x > Number.EPSILON ) { + + if ( v_next_x > Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( v_prev_x < - Number.EPSILON ) { + + if ( v_next_x < - Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + + direction_eq = true; + + } + + } + + } + + if ( direction_eq ) { + + // console.log("Warning: lines are a straight sequence"); + v_trans_x = - v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt( v_prev_lensq ); + + } else { + + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt( v_prev_lensq / 2 ); + + } + + } + + return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + + } + + + var contourMovements = []; + + for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + + } + + var holesMovements = [], + oneHoleMovements, verticesMovements = contourMovements.concat(); + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + oneHoleMovements = []; + + for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + + } + + holesMovements.push( oneHoleMovements ); + verticesMovements = verticesMovements.concat( oneHoleMovements ); + + } + + + // Loop bevelSegments, 1 for the front, 1 for the back + + for ( b = 0; b < bevelSegments; b ++ ) { + + //for ( b = bevelSegments; b > 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ); + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + } + + } + + bs = bevelSize; + + // Back facing vertices + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, 0 ); + + } else { + + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + + normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + // Add stepped vertices... + // Including front facing vertices + + var s; + + for ( s = 1; s <= steps; s ++ ) { + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth / steps * s ); + + } else { + + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + + normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + } + + + // Add bevel segments planes + + //for ( b = 1; b <= bevelSegments; b ++ ) { + for ( b = bevelSegments - 1; b >= 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ); + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + v( vert.x, vert.y, depth + z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth + z ); + + } else { + + v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + + } + + } + + } + + } + + /* Faces */ + + // Top and bottom faces + + buildLidFaces(); + + // Sides faces + + buildSideFaces(); + + + ///// Internal functions + + function buildLidFaces() { + + var start = verticesArray.length / 3; + + if ( bevelEnabled ) { + + var layer = 0; // steps + 1 + var offset = vlen * layer; + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + + } + + } else { + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + + } + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + + } + + } + + scope.addGroup( start, verticesArray.length / 3 - start, 0 ); + + } + + // Create faces for the z-sides of the shape + + function buildSideFaces() { + + var start = verticesArray.length / 3; + var layeroffset = 0; + sidewalls( contour, layeroffset ); + layeroffset += contour.length; + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + sidewalls( ahole, layeroffset ); + + //, true + layeroffset += ahole.length; + + } + + + scope.addGroup( start, verticesArray.length / 3 - start, 1 ); + + + } + + function sidewalls( contour, layeroffset ) { + + var j, k; + i = contour.length; + + while ( -- i >= 0 ) { + + j = i; + k = i - 1; + if ( k < 0 ) k = contour.length - 1; + + //console.log('b', i,j, i-1, k,vertices.length); + + var s = 0, + sl = steps + bevelSegments * 2; + + for ( s = 0; s < sl; s ++ ) { + + var slen1 = vlen * s; + var slen2 = vlen * ( s + 1 ); + + var a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + + f4( a, b, c, d ); + + } + + } + + } + + function v( x, y, z ) { + + placeholder.push( x ); + placeholder.push( y ); + placeholder.push( z ); + + } + + + function f3( a, b, c ) { + + addVertex( a ); + addVertex( b ); + addVertex( c ); + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + + } + + function f4( a, b, c, d ) { + + addVertex( a ); + addVertex( b ); + addVertex( d ); + + addVertex( b ); + addVertex( c ); + addVertex( d ); + + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 3 ] ); + + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + addUV( uvs[ 3 ] ); + + } + + function addVertex( index ) { + + verticesArray.push( placeholder[ index * 3 + 0 ] ); + verticesArray.push( placeholder[ index * 3 + 1 ] ); + verticesArray.push( placeholder[ index * 3 + 2 ] ); + + } + + + function addUV( vector2 ) { + + uvArray.push( vector2.x ); + uvArray.push( vector2.y ); + + } + + } + + } + + ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; + + ExtrudeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // + + var WorldUVGenerator = { + + generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + + return [ + new Vector2( a_x, a_y ), + new Vector2( b_x, b_y ), + new Vector2( c_x, c_y ) + ]; + + }, + + generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var a_z = vertices[ indexA * 3 + 2 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var b_z = vertices[ indexB * 3 + 2 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + var c_z = vertices[ indexC * 3 + 2 ]; + var d_x = vertices[ indexD * 3 ]; + var d_y = vertices[ indexD * 3 + 1 ]; + var d_z = vertices[ indexD * 3 + 2 ]; + + if ( Math.abs( a_y - b_y ) < 0.01 ) { + + return [ + new Vector2( a_x, 1 - a_z ), + new Vector2( b_x, 1 - b_z ), + new Vector2( c_x, 1 - c_z ), + new Vector2( d_x, 1 - d_z ) + ]; + + } else { + + return [ + new Vector2( a_y, 1 - a_z ), + new Vector2( b_y, 1 - b_z ), + new Vector2( c_y, 1 - c_z ), + new Vector2( d_y, 1 - d_z ) + ]; + + } + + } + }; + + function toJSON( shapes, options, data ) { + + // + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + // + + if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); + + return data; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author alteredq / http://alteredqualia.com/ + * + * Text = 3D Text + * + * parameters = { + * font: , // font + * + * size: , // size of the text + * height: , // thickness to extrude text + * curveSegments: , // number of points on the curves + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into text bevel goes + * bevelSize: // how far from text outline is bevel + * } + */ + + // TextGeometry + + function TextGeometry( text, parameters ) { + + Geometry.call( this ); + + this.type = 'TextGeometry'; + + this.parameters = { + text: text, + parameters: parameters + }; + + this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); + this.mergeVertices(); + + } + + TextGeometry.prototype = Object.create( Geometry.prototype ); + TextGeometry.prototype.constructor = TextGeometry; + + // TextBufferGeometry + + function TextBufferGeometry( text, parameters ) { + + parameters = parameters || {}; + + var font = parameters.font; + + if ( ! ( font && font.isFont ) ) { + + console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); + return new Geometry(); + + } + + var shapes = font.generateShapes( text, parameters.size ); + + // translate parameters to ExtrudeGeometry API + + parameters.depth = parameters.height !== undefined ? parameters.height : 50; + + // defaults + + if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; + if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; + if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; + + ExtrudeBufferGeometry.call( this, shapes, parameters ); + + this.type = 'TextBufferGeometry'; + + } + + TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); + TextBufferGeometry.prototype.constructor = TextBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + */ + + // SphereGeometry + + function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'SphereGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + SphereGeometry.prototype = Object.create( Geometry.prototype ); + SphereGeometry.prototype.constructor = SphereGeometry; + + // SphereBufferGeometry + + function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'SphereBufferGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + + widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); + heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); + + phiStart = phiStart !== undefined ? phiStart : 0; + phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; + + var thetaEnd = thetaStart + thetaLength; + + var ix, iy; + + var index = 0; + var grid = []; + + var vertex = new Vector3(); + var normal = new Vector3(); + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy <= heightSegments; iy ++ ) { + + var verticesRow = []; + + var v = iy / heightSegments; + + // special case for the poles + + var uOffset = ( iy == 0 ) ? 0.5 / widthSegments : ( ( iy == heightSegments ) ? - 0.5 / widthSegments : 0 ); + + for ( ix = 0; ix <= widthSegments; ix ++ ) { + + var u = ix / widthSegments; + + // vertex + + vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); + vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.copy( vertex ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u + uOffset, 1 - v ); + + verticesRow.push( index ++ ); + + } + + grid.push( verticesRow ); + + } + + // indices + + for ( iy = 0; iy < heightSegments; iy ++ ) { + + for ( ix = 0; ix < widthSegments; ix ++ ) { + + var a = grid[ iy ][ ix + 1 ]; + var b = grid[ iy ][ ix ]; + var c = grid[ iy + 1 ][ ix ]; + var d = grid[ iy + 1 ][ ix + 1 ]; + + if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); + if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; + + /** + * @author Kaleb Murphy + * @author Mugen87 / https://github.com/Mugen87 + */ + + // RingGeometry + + function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'RingGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + RingGeometry.prototype = Object.create( Geometry.prototype ); + RingGeometry.prototype.constructor = RingGeometry; + + // RingBufferGeometry + + function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'RingBufferGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + innerRadius = innerRadius || 0.5; + outerRadius = outerRadius || 1; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; + phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // some helper variables + + var segment; + var radius = innerRadius; + var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + var vertex = new Vector3(); + var uv = new Vector2(); + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= phiSegments; j ++ ) { + + for ( i = 0; i <= thetaSegments; i ++ ) { + + // values are generate from the inside of the ring to the outside + + segment = thetaStart + i / thetaSegments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uv + + uv.x = ( vertex.x / outerRadius + 1 ) / 2; + uv.y = ( vertex.y / outerRadius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // increase the radius for next row of vertices + + radius += radiusStep; + + } + + // indices + + for ( j = 0; j < phiSegments; j ++ ) { + + var thetaSegmentLevel = j * ( thetaSegments + 1 ); + + for ( i = 0; i < thetaSegments; i ++ ) { + + segment = i + thetaSegmentLevel; + + var a = segment; + var b = segment + thetaSegments + 1; + var c = segment + thetaSegments + 2; + var d = segment + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + RingBufferGeometry.prototype.constructor = RingBufferGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author bhouston / http://clara.io + * @author Mugen87 / https://github.com/Mugen87 + */ + + // LatheGeometry + + function LatheGeometry( points, segments, phiStart, phiLength ) { + + Geometry.call( this ); + + this.type = 'LatheGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); + this.mergeVertices(); + + } + + LatheGeometry.prototype = Object.create( Geometry.prototype ); + LatheGeometry.prototype.constructor = LatheGeometry; + + // LatheBufferGeometry + + function LatheBufferGeometry( points, segments, phiStart, phiLength ) { + + BufferGeometry.call( this ); + + this.type = 'LatheBufferGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + segments = Math.floor( segments ) || 12; + phiStart = phiStart || 0; + phiLength = phiLength || Math.PI * 2; + + // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); + + + // buffers + + var indices = []; + var vertices = []; + var uvs = []; + + // helper variables + + var base; + var inverseSegments = 1.0 / segments; + var vertex = new Vector3(); + var uv = new Vector2(); + var i, j; + + // generate vertices and uvs + + for ( i = 0; i <= segments; i ++ ) { + + var phi = phiStart + i * inverseSegments * phiLength; + + var sin = Math.sin( phi ); + var cos = Math.cos( phi ); + + for ( j = 0; j <= ( points.length - 1 ); j ++ ) { + + // vertex + + vertex.x = points[ j ].x * sin; + vertex.y = points[ j ].y; + vertex.z = points[ j ].x * cos; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // uv + + uv.x = i / segments; + uv.y = j / ( points.length - 1 ); + + uvs.push( uv.x, uv.y ); + + + } + + } + + // indices + + for ( i = 0; i < segments; i ++ ) { + + for ( j = 0; j < ( points.length - 1 ); j ++ ) { + + base = j + i * points.length; + + var a = base; + var b = base + points.length; + var c = base + points.length + 1; + var d = base + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // generate normals + + this.computeVertexNormals(); + + // if the geometry is closed, we need to average the normals along the seam. + // because the corresponding vertices are identical (but still have different UVs). + + if ( phiLength === Math.PI * 2 ) { + + var normals = this.attributes.normal.array; + var n1 = new Vector3(); + var n2 = new Vector3(); + var n = new Vector3(); + + // this is the buffer offset for the last line of vertices + + base = segments * points.length * 3; + + for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { + + // select the normal of the vertex in the first line + + n1.x = normals[ j + 0 ]; + n1.y = normals[ j + 1 ]; + n1.z = normals[ j + 2 ]; + + // select the normal of the vertex in the last line + + n2.x = normals[ base + j + 0 ]; + n2.y = normals[ base + j + 1 ]; + n2.z = normals[ base + j + 2 ]; + + // average normals + + n.addVectors( n1, n2 ).normalize(); + + // assign the new values to both normals + + normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; + normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; + normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; + + } + + } + + } + + LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; + + /** + * @author jonobr1 / http://jonobr1.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // ShapeGeometry + + function ShapeGeometry( shapes, curveSegments ) { + + Geometry.call( this ); + + this.type = 'ShapeGeometry'; + + if ( typeof curveSegments === 'object' ) { + + console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); + + curveSegments = curveSegments.curveSegments; + + } + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); + this.mergeVertices(); + + } + + ShapeGeometry.prototype = Object.create( Geometry.prototype ); + ShapeGeometry.prototype.constructor = ShapeGeometry; + + ShapeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // ShapeBufferGeometry + + function ShapeBufferGeometry( shapes, curveSegments ) { + + BufferGeometry.call( this ); + + this.type = 'ShapeBufferGeometry'; + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + curveSegments = curveSegments || 12; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var groupStart = 0; + var groupCount = 0; + + // allow single and array values for "shapes" parameter + + if ( Array.isArray( shapes ) === false ) { + + addShape( shapes ); + + } else { + + for ( var i = 0; i < shapes.length; i ++ ) { + + addShape( shapes[ i ] ); + + this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + + // helper functions + + function addShape( shape ) { + + var i, l, shapeHole; + + var indexOffset = vertices.length / 3; + var points = shape.extractPoints( curveSegments ); + + var shapeVertices = points.shape; + var shapeHoles = points.holes; + + // check direction of vertices + + if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + + shapeVertices = shapeVertices.reverse(); + + } + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + + if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + + shapeHoles[ i ] = shapeHole.reverse(); + + } + + } + + var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + + // join vertices of inner and outer paths to a single array + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + shapeVertices = shapeVertices.concat( shapeHole ); + + } + + // vertices, normals, uvs + + for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { + + var vertex = shapeVertices[ i ]; + + vertices.push( vertex.x, vertex.y, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( vertex.x, vertex.y ); // world uvs + + } + + // incides + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var a = face[ 0 ] + indexOffset; + var b = face[ 1 ] + indexOffset; + var c = face[ 2 ] + indexOffset; + + indices.push( a, b, c ); + groupCount += 3; + + } + + } + + } + + ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; + + ShapeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // + + function toJSON$1( shapes, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + return data; + + } + + /** + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + function EdgesGeometry( geometry, thresholdAngle ) { + + BufferGeometry.call( this ); + + this.type = 'EdgesGeometry'; + + this.parameters = { + thresholdAngle: thresholdAngle + }; + + thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + + // buffer + + var vertices = []; + + // helper variables + + var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); + var edge = [ 0, 0 ], edges = {}, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + + // prepare source geometry + + var geometry2; + + if ( geometry.isBufferGeometry ) { + + geometry2 = new Geometry(); + geometry2.fromBufferGeometry( geometry ); + + } else { + + geometry2 = geometry.clone(); + + } + + geometry2.mergeVertices(); + geometry2.computeFaceNormals(); + + var sourceVertices = geometry2.vertices; + var faces = geometry2.faces; + + // now create a data structure where each entry represents an edge with its adjoining faces + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; + + } else { + + edges[ key ].face2 = i; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + var e = edges[ key ]; + + // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. + + if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { + + var vertex = sourceVertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = sourceVertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); + EdgesGeometry.prototype.constructor = EdgesGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // CylinderGeometry + + function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CylinderGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CylinderGeometry.prototype = Object.create( Geometry.prototype ); + CylinderGeometry.prototype.constructor = CylinderGeometry; + + // CylinderBufferGeometry + + function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CylinderBufferGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + var scope = this; + + radiusTop = radiusTop !== undefined ? radiusTop : 1; + radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; + height = height || 1; + + radialSegments = Math.floor( radialSegments ) || 8; + heightSegments = Math.floor( heightSegments ) || 1; + + openEnded = openEnded !== undefined ? openEnded : false; + thetaStart = thetaStart !== undefined ? thetaStart : 0.0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var index = 0; + var indexArray = []; + var halfHeight = height / 2; + var groupStart = 0; + + // generate geometry + + generateTorso(); + + if ( openEnded === false ) { + + if ( radiusTop > 0 ) generateCap( true ); + if ( radiusBottom > 0 ) generateCap( false ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function generateTorso() { + + var x, y; + var normal = new Vector3(); + var vertex = new Vector3(); + + var groupCount = 0; + + // this will be used to calculate the normal + var slope = ( radiusBottom - radiusTop ) / height; + + // generate vertices, normals and uvs + + for ( y = 0; y <= heightSegments; y ++ ) { + + var indexRow = []; + + var v = y / heightSegments; + + // calculate the radius of the current row + + var radius = v * ( radiusBottom - radiusTop ) + radiusTop; + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + + var theta = u * thetaLength + thetaStart; + + var sinTheta = Math.sin( theta ); + var cosTheta = Math.cos( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = - v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( sinTheta, slope, cosTheta ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + // save index of vertex in respective row + + indexRow.push( index ++ ); + + } + + // now save vertices of the row in our index array + + indexArray.push( indexRow ); + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + for ( y = 0; y < heightSegments; y ++ ) { + + // we use the index array to access the correct indices + + var a = indexArray[ y ][ x ]; + var b = indexArray[ y + 1 ][ x ]; + var c = indexArray[ y + 1 ][ x + 1 ]; + var d = indexArray[ y ][ x + 1 ]; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // update group counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, 0 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + function generateCap( top ) { + + var x, centerIndexStart, centerIndexEnd; + + var uv = new Vector2(); + var vertex = new Vector3(); + + var groupCount = 0; + + var radius = ( top === true ) ? radiusTop : radiusBottom; + var sign = ( top === true ) ? 1 : - 1; + + // save the index of the first center vertex + centerIndexStart = index; + + // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for ( x = 1; x <= radialSegments; x ++ ) { + + // vertex + + vertices.push( 0, halfHeight * sign, 0 ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uvs.push( 0.5, 0.5 ); + + // increase index + + index ++; + + } + + // save the index of the last center vertex + + centerIndexEnd = index; + + // now we generate the surrounding vertices, normals and uvs + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + var theta = u * thetaLength + thetaStart; + + var cosTheta = Math.cos( theta ); + var sinTheta = Math.sin( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uv.x = ( cosTheta * 0.5 ) + 0.5; + uv.y = ( sinTheta * 0.5 * sign ) + 0.5; + uvs.push( uv.x, uv.y ); + + // increase index + + index ++; + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + var c = centerIndexStart + x; + var i = centerIndexEnd + x; + + if ( top === true ) { + + // face top + + indices.push( i, i + 1, c ); + + } else { + + // face bottom + + indices.push( i + 1, i, c ); + + } + + groupCount += 3; + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + } + + CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; + + /** + * @author abelnation / http://github.com/abelnation + */ + + // ConeGeometry + + function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); + ConeGeometry.prototype.constructor = ConeGeometry; + + // ConeBufferGeometry + + function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeBufferGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); + ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + * @author hughes + */ + + // CircleGeometry + + function CircleGeometry( radius, segments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CircleGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CircleGeometry.prototype = Object.create( Geometry.prototype ); + CircleGeometry.prototype.constructor = CircleGeometry; + + // CircleBufferGeometry + + function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CircleBufferGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + segments = segments !== undefined ? Math.max( 3, segments ) : 8; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, s; + var vertex = new Vector3(); + var uv = new Vector2(); + + // center point + + vertices.push( 0, 0, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( 0.5, 0.5 ); + + for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { + + var segment = thetaStart + s / segments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uvs + + uv.x = ( vertices[ i ] / radius + 1 ) / 2; + uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // indices + + for ( i = 1; i <= segments; i ++ ) { + + indices.push( i, i + 1, 0 ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; + + + + var Geometries = /*#__PURE__*/Object.freeze({ + WireframeGeometry: WireframeGeometry, + ParametricGeometry: ParametricGeometry, + ParametricBufferGeometry: ParametricBufferGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TetrahedronBufferGeometry: TetrahedronBufferGeometry, + OctahedronGeometry: OctahedronGeometry, + OctahedronBufferGeometry: OctahedronBufferGeometry, + IcosahedronGeometry: IcosahedronGeometry, + IcosahedronBufferGeometry: IcosahedronBufferGeometry, + DodecahedronGeometry: DodecahedronGeometry, + DodecahedronBufferGeometry: DodecahedronBufferGeometry, + PolyhedronGeometry: PolyhedronGeometry, + PolyhedronBufferGeometry: PolyhedronBufferGeometry, + TubeGeometry: TubeGeometry, + TubeBufferGeometry: TubeBufferGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TorusKnotBufferGeometry: TorusKnotBufferGeometry, + TorusGeometry: TorusGeometry, + TorusBufferGeometry: TorusBufferGeometry, + TextGeometry: TextGeometry, + TextBufferGeometry: TextBufferGeometry, + SphereGeometry: SphereGeometry, + SphereBufferGeometry: SphereBufferGeometry, + RingGeometry: RingGeometry, + RingBufferGeometry: RingBufferGeometry, + PlaneGeometry: PlaneGeometry, + PlaneBufferGeometry: PlaneBufferGeometry, + LatheGeometry: LatheGeometry, + LatheBufferGeometry: LatheBufferGeometry, + ShapeGeometry: ShapeGeometry, + ShapeBufferGeometry: ShapeBufferGeometry, + ExtrudeGeometry: ExtrudeGeometry, + ExtrudeBufferGeometry: ExtrudeBufferGeometry, + EdgesGeometry: EdgesGeometry, + ConeGeometry: ConeGeometry, + ConeBufferGeometry: ConeBufferGeometry, + CylinderGeometry: CylinderGeometry, + CylinderBufferGeometry: CylinderBufferGeometry, + CircleGeometry: CircleGeometry, + CircleBufferGeometry: CircleBufferGeometry, + BoxGeometry: BoxGeometry, + BoxBufferGeometry: BoxBufferGeometry + }); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * parameters = { + * color: + * } + */ + + function ShadowMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShadowMaterial'; + + this.color = new Color( 0x000000 ); + this.transparent = true; + + this.setValues( parameters ); + + } + + ShadowMaterial.prototype = Object.create( Material.prototype ); + ShadowMaterial.prototype.constructor = ShadowMaterial; + + ShadowMaterial.prototype.isShadowMaterial = true; + + ShadowMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function RawShaderMaterial( parameters ) { + + ShaderMaterial.call( this, parameters ); + + this.type = 'RawShaderMaterial'; + + } + + RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); + RawShaderMaterial.prototype.constructor = RawShaderMaterial; + + RawShaderMaterial.prototype.isRawShaderMaterial = true; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * roughness: , + * metalness: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * roughnessMap: new THREE.Texture( ), + * + * metalnessMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * envMapIntensity: + * + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshStandardMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'STANDARD': '' }; + + this.type = 'MeshStandardMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.roughness = 0.5; + this.metalness = 0.5; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.roughnessMap = null; + + this.metalnessMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapIntensity = 1.0; + + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshStandardMaterial.prototype = Object.create( Material.prototype ); + MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; + + MeshStandardMaterial.prototype.isMeshStandardMaterial = true; + + MeshStandardMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapIntensity = source.envMapIntensity; + + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * reflectivity: + * clearCoat: + * clearCoatRoughness: + * } + */ + + function MeshPhysicalMaterial( parameters ) { + + MeshStandardMaterial.call( this ); + + this.defines = { 'PHYSICAL': '' }; + + this.type = 'MeshPhysicalMaterial'; + + this.reflectivity = 0.5; // maps to F0 = 0.04 + + this.clearCoat = 0.0; + this.clearCoatRoughness = 0.0; + + this.setValues( parameters ); + + } + + MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); + MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; + + MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; + + MeshPhysicalMaterial.prototype.copy = function ( source ) { + + MeshStandardMaterial.prototype.copy.call( this, source ); + + this.defines = { 'PHYSICAL': '' }; + + this.reflectivity = source.reflectivity; + + this.clearCoat = source.clearCoat; + this.clearCoatRoughness = source.clearCoatRoughness; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * specular: , + * shininess: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshPhongMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshPhongMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.specular = new Color( 0x111111 ); + this.shininess = 30; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshPhongMaterial.prototype = Object.create( Material.prototype ); + MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; + + MeshPhongMaterial.prototype.isMeshPhongMaterial = true; + + MeshPhongMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author takahirox / http://github.com/takahirox + * + * parameters = { + * gradientMap: new THREE.Texture( ) + * } + */ + + function MeshToonMaterial( parameters ) { + + MeshPhongMaterial.call( this ); + + this.defines = { 'TOON': '' }; + + this.type = 'MeshToonMaterial'; + + this.gradientMap = null; + + this.setValues( parameters ); + + } + + MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); + MeshToonMaterial.prototype.constructor = MeshToonMaterial; + + MeshToonMaterial.prototype.isMeshToonMaterial = true; + + MeshToonMaterial.prototype.copy = function ( source ) { + + MeshPhongMaterial.prototype.copy.call( this, source ); + + this.gradientMap = source.gradientMap; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * opacity: , + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshNormalMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshNormalMaterial'; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshNormalMaterial.prototype = Object.create( Material.prototype ); + MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; + + MeshNormalMaterial.prototype.isMeshNormalMaterial = true; + + MeshNormalMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshLambertMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshLambertMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshLambertMaterial.prototype = Object.create( Material.prototype ); + MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; + + MeshLambertMaterial.prototype.isMeshLambertMaterial = true; + + MeshLambertMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * opacity: , + * + * matcap: new THREE.Texture( ), + * + * map: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * alphaMap: new THREE.Texture( ), + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshMatcapMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'MATCAP': '' }; + + this.type = 'MeshMatcapMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.matcap = null; + + this.map = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.alphaMap = null; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + MeshMatcapMaterial.prototype = Object.create( Material.prototype ); + MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; + + MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; + + MeshMatcapMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'MATCAP': '' }; + + this.color.copy( source.color ); + + this.matcap = source.matcap; + + this.map = source.map; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.alphaMap = source.alphaMap; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * + * scale: , + * dashSize: , + * gapSize: + * } + */ + + function LineDashedMaterial( parameters ) { + + LineBasicMaterial.call( this ); + + this.type = 'LineDashedMaterial'; + + this.scale = 1; + this.dashSize = 3; + this.gapSize = 1; + + this.setValues( parameters ); + + } + + LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); + LineDashedMaterial.prototype.constructor = LineDashedMaterial; + + LineDashedMaterial.prototype.isLineDashedMaterial = true; + + LineDashedMaterial.prototype.copy = function ( source ) { + + LineBasicMaterial.prototype.copy.call( this, source ); + + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + + return this; + + }; + + + + var Materials = /*#__PURE__*/Object.freeze({ + ShadowMaterial: ShadowMaterial, + SpriteMaterial: SpriteMaterial, + RawShaderMaterial: RawShaderMaterial, + ShaderMaterial: ShaderMaterial, + PointsMaterial: PointsMaterial, + MeshPhysicalMaterial: MeshPhysicalMaterial, + MeshStandardMaterial: MeshStandardMaterial, + MeshPhongMaterial: MeshPhongMaterial, + MeshToonMaterial: MeshToonMaterial, + MeshNormalMaterial: MeshNormalMaterial, + MeshLambertMaterial: MeshLambertMaterial, + MeshDepthMaterial: MeshDepthMaterial, + MeshDistanceMaterial: MeshDistanceMaterial, + MeshBasicMaterial: MeshBasicMaterial, + MeshMatcapMaterial: MeshMatcapMaterial, + LineDashedMaterial: LineDashedMaterial, + LineBasicMaterial: LineBasicMaterial, + Material: Material + }); + + /** + * @author tschw + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + var AnimationUtils = { + + // same as Array.prototype.slice, but also works on typed arrays + arraySlice: function ( array, from, to ) { + + if ( AnimationUtils.isTypedArray( array ) ) { + + // in ios9 array.subarray(from, undefined) will return empty array + // but array.subarray(from) or array.subarray(from, len) is correct + return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); + + } + + return array.slice( from, to ); + + }, + + // converts an array to a specific type + convertArray: function ( array, type, forceClone ) { + + if ( ! array || // let 'undefined' and 'null' pass + ! forceClone && array.constructor === type ) return array; + + if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + + return new type( array ); // create typed array + + } + + return Array.prototype.slice.call( array ); // create Array + + }, + + isTypedArray: function ( object ) { + + return ArrayBuffer.isView( object ) && + ! ( object instanceof DataView ); + + }, + + // returns an array by which times and values can be sorted + getKeyframeOrder: function ( times ) { + + function compareTime( i, j ) { + + return times[ i ] - times[ j ]; + + } + + var n = times.length; + var result = new Array( n ); + for ( var i = 0; i !== n; ++ i ) result[ i ] = i; + + result.sort( compareTime ); + + return result; + + }, + + // uses the array previously returned by 'getKeyframeOrder' to sort data + sortedArray: function ( values, stride, order ) { + + var nValues = values.length; + var result = new values.constructor( nValues ); + + for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + + var srcOffset = order[ i ] * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + result[ dstOffset ++ ] = values[ srcOffset + j ]; + + } + + } + + return result; + + }, + + // function for parsing AOS keyframe formats + flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { + + var i = 1, key = jsonKeys[ 0 ]; + + while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + + key = jsonKeys[ i ++ ]; + + } + + if ( key === undefined ) return; // no data + + var value = key[ valuePropertyName ]; + if ( value === undefined ) return; // no data + + if ( Array.isArray( value ) ) { + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push.apply( values, value ); // push all elements + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else if ( value.toArray !== undefined ) { + + // ...assume THREE.Math-ish + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + value.toArray( values, values.length ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else { + + // otherwise push as-is + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( value ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } + + } + + }; + + /** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: + * + * http://www.oodesign.com/template-method-pattern.html + * + * @author tschw + */ + + function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + + this.resultBuffer = resultBuffer !== undefined ? + resultBuffer : new sampleValues.constructor( sampleSize ); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + + } + + Object.assign( Interpolant.prototype, { + + evaluate: function ( t ) { + + var pp = this.parameterPositions, + i1 = this._cachedIndex, + + t1 = pp[ i1 ], + t0 = pp[ i1 - 1 ]; + + validate_interval: { + + seek: { + + var right; + + linear_scan: { + + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if ( ! ( t < t1 ) ) { + + for ( var giveUpAt = i1 + 2; ; ) { + + if ( t1 === undefined ) { + + if ( t < t0 ) break forward_scan; + + // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t, t0 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t0 = t1; + t1 = pp[ ++ i1 ]; + + if ( t < t1 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the right side of the index + right = pp.length; + break linear_scan; + + } + + //- slower code: + //- if ( t < t0 || t0 === undefined ) { + if ( ! ( t >= t0 ) ) { + + // looping? + + var t1global = pp[ 1 ]; + + if ( t < t1global ) { + + i1 = 2; // + 1, using the scan for the details + t0 = t1global; + + } + + // linear reverse scan + + for ( var giveUpAt = i1 - 2; ; ) { + + if ( t0 === undefined ) { + + // before start + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t1 = t0; + t0 = pp[ -- i1 - 1 ]; + + if ( t >= t0 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the left side of the index + right = i1; + i1 = 0; + break linear_scan; + + } + + // the interval is valid + + break validate_interval; + + } // linear scan + + // binary search + + while ( i1 < right ) { + + var mid = ( i1 + right ) >>> 1; + + if ( t < pp[ mid ] ) { + + right = mid; + + } else { + + i1 = mid + 1; + + } + + } + + t1 = pp[ i1 ]; + t0 = pp[ i1 - 1 ]; + + // check boundary cases, again + + if ( t0 === undefined ) { + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( t1 === undefined ) { + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t0, t ); + + } + + } // seek + + this._cachedIndex = i1; + + this.intervalChanged_( i1, t0, t1 ); + + } // validate_interval + + return this.interpolate_( i1, t0, t, t1 ); + + }, + + settings: null, // optional, subclass-specific settings structure + // Note: The indirection allows central control of many interpolants. + + // --- Protected interface + + DefaultSettings_: {}, + + getSettings_: function () { + + return this.settings || this.DefaultSettings_; + + }, + + copySampleValue_: function ( index ) { + + // copies a sample value to the result buffer + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }, + + // Template methods for derived classes: + + interpolate_: function ( /* i1, t0, t, t1 */ ) { + + throw new Error( 'call to abstract method' ); + // implementations shall return this.resultBuffer + + }, + + intervalChanged_: function ( /* i1, t0, t1 */ ) { + + // empty + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( Interpolant.prototype, { + + //( 0, t, t0 ), returns this.resultBuffer + beforeStart_: Interpolant.prototype.copySampleValue_, + + //( N-1, tN-1, t ), returns this.resultBuffer + afterEnd_: Interpolant.prototype.copySampleValue_, + + } ); + + /** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + * + * @author tschw + */ + + function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + this._weightPrev = - 0; + this._offsetPrev = - 0; + this._weightNext = - 0; + this._offsetNext = - 0; + + } + + CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: CubicInterpolant, + + DefaultSettings_: { + + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + + }, + + intervalChanged_: function ( i1, t0, t1 ) { + + var pp = this.parameterPositions, + iPrev = i1 - 2, + iNext = i1 + 1, + + tPrev = pp[ iPrev ], + tNext = pp[ iNext ]; + + if ( tPrev === undefined ) { + + switch ( this.getSettings_().endingStart ) { + + case ZeroSlopeEnding: + + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + + } + + } + + if ( tNext === undefined ) { + + switch ( this.getSettings_().endingEnd ) { + + case ZeroSlopeEnding: + + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[ 1 ] - pp[ 0 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + + } + + } + + var halfDt = ( t1 - t0 ) * 0.5, + stride = this.valueSize; + + this._weightPrev = halfDt / ( t0 - tPrev ); + this._weightNext = halfDt / ( tNext - t1 ); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + + }, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, + + p = ( t - t0 ) / ( t1 - t0 ), + pp = p * p, + ppp = pp * p; + + // evaluate polynomials + + var sP = - wP * ppp + 2 * wP * pp - wP * p; + var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; + var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + var sN = wN * ppp - wN * pp; + + // combine data linearly + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + sP * values[ oP + i ] + + s0 * values[ o0 + i ] + + s1 * values[ o1 + i ] + + sN * values[ oN + i ]; + + } + + return result; + + } + + } ); + + /** + * @author tschw + */ + + function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: LinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset1 = i1 * stride, + offset0 = offset1 - stride, + + weight1 = ( t - t0 ) / ( t1 - t0 ), + weight0 = 1 - weight1; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + values[ offset0 + i ] * weight0 + + values[ offset1 + i ] * weight1; + + } + + return result; + + } + + } ); + + /** + * + * Interpolant that evaluates to the sample value at the position preceeding + * the parameter. + * + * @author tschw + */ + + function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: DiscreteInterpolant, + + interpolate_: function ( i1 /*, t0, t, t1 */ ) { + + return this.copySampleValue_( i1 - 1 ); + + } + + } ); + + /** + * + * A timed sequence of keyframes for a specific property. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function KeyframeTrack( name, times, values, interpolation ) { + + if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); + if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); + + this.name = name; + + this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); + this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); + + this.setInterpolation( interpolation || this.DefaultInterpolation ); + + } + + // Static methods + + Object.assign( KeyframeTrack, { + + // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + + toJSON: function ( track ) { + + var trackType = track.constructor; + + var json; + + // derived classes can define a static toJSON method + if ( trackType.toJSON !== undefined ) { + + json = trackType.toJSON( track ); + + } else { + + // by default, we assume the data can be serialized as-is + json = { + + 'name': track.name, + 'times': AnimationUtils.convertArray( track.times, Array ), + 'values': AnimationUtils.convertArray( track.values, Array ) + + }; + + var interpolation = track.getInterpolation(); + + if ( interpolation !== track.DefaultInterpolation ) { + + json.interpolation = interpolation; + + } + + } + + json.type = track.ValueTypeName; // mandatory + + return json; + + } + + } ); + + Object.assign( KeyframeTrack.prototype, { + + constructor: KeyframeTrack, + + TimeBufferType: Float32Array, + + ValueBufferType: Float32Array, + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodDiscrete: function ( result ) { + + return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: function ( result ) { + + return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + setInterpolation: function ( interpolation ) { + + var factoryMethod; + + switch ( interpolation ) { + + case InterpolateDiscrete: + + factoryMethod = this.InterpolantFactoryMethodDiscrete; + + break; + + case InterpolateLinear: + + factoryMethod = this.InterpolantFactoryMethodLinear; + + break; + + case InterpolateSmooth: + + factoryMethod = this.InterpolantFactoryMethodSmooth; + + break; + + } + + if ( factoryMethod === undefined ) { + + var message = "unsupported interpolation for " + + this.ValueTypeName + " keyframe track named " + this.name; + + if ( this.createInterpolant === undefined ) { + + // fall back to default, unless the default itself is messed up + if ( interpolation !== this.DefaultInterpolation ) { + + this.setInterpolation( this.DefaultInterpolation ); + + } else { + + throw new Error( message ); // fatal, in this case + + } + + } + + console.warn( 'THREE.KeyframeTrack:', message ); + return this; + + } + + this.createInterpolant = factoryMethod; + + return this; + + }, + + getInterpolation: function () { + + switch ( this.createInterpolant ) { + + case this.InterpolantFactoryMethodDiscrete: + + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + + return InterpolateSmooth; + + } + + }, + + getValueSize: function () { + + return this.values.length / this.times.length; + + }, + + // move all keyframes either forwards or backwards in time + shift: function ( timeOffset ) { + + if ( timeOffset !== 0.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] += timeOffset; + + } + + } + + return this; + + }, + + // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + scale: function ( timeScale ) { + + if ( timeScale !== 1.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] *= timeScale; + + } + + } + + return this; + + }, + + // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + trim: function ( startTime, endTime ) { + + var times = this.times, + nKeys = times.length, + from = 0, + to = nKeys - 1; + + while ( from !== nKeys && times[ from ] < startTime ) { + + ++ from; + + } + + while ( to !== - 1 && times[ to ] > endTime ) { + + -- to; + + } + + ++ to; // inclusive -> exclusive bound + + if ( from !== 0 || to !== nKeys ) { + + // empty tracks are forbidden, so keep at least one keyframe + if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; + + var stride = this.getValueSize(); + this.times = AnimationUtils.arraySlice( times, from, to ); + this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); + + } + + return this; + + }, + + // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + validate: function () { + + var valid = true; + + var valueSize = this.getValueSize(); + if ( valueSize - Math.floor( valueSize ) !== 0 ) { + + console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + valid = false; + + } + + var times = this.times, + values = this.values, + + nKeys = times.length; + + if ( nKeys === 0 ) { + + console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + valid = false; + + } + + var prevTime = null; + + for ( var i = 0; i !== nKeys; i ++ ) { + + var currTime = times[ i ]; + + if ( typeof currTime === 'number' && isNaN( currTime ) ) { + + console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + valid = false; + break; + + } + + if ( prevTime !== null && prevTime > currTime ) { + + console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + valid = false; + break; + + } + + prevTime = currTime; + + } + + if ( values !== undefined ) { + + if ( AnimationUtils.isTypedArray( values ) ) { + + for ( var i = 0, n = values.length; i !== n; ++ i ) { + + var value = values[ i ]; + + if ( isNaN( value ) ) { + + console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + valid = false; + break; + + } + + } + + } + + } + + return valid; + + }, + + // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + optimize: function () { + + var times = this.times, + values = this.values, + stride = this.getValueSize(), + + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + + writeIndex = 1, + lastIndex = times.length - 1; + + for ( var i = 1; i < lastIndex; ++ i ) { + + var keep = false; + + var time = times[ i ]; + var timeNext = times[ i + 1 ]; + + // remove adjacent keyframes scheduled at the same time + + if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { + + if ( ! smoothInterpolation ) { + + // remove unnecessary keyframes same as their neighbors + + var offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for ( var j = 0; j !== stride; ++ j ) { + + var value = values[ offset + j ]; + + if ( value !== values[ offsetP + j ] || + value !== values[ offsetN + j ] ) { + + keep = true; + break; + + } + + } + + } else { + + keep = true; + + } + + } + + // in-place compaction + + if ( keep ) { + + if ( i !== writeIndex ) { + + times[ writeIndex ] = times[ i ]; + + var readOffset = i * stride, + writeOffset = writeIndex * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + } + + ++ writeIndex; + + } + + } + + // flush last keyframe (compaction looks ahead) + + if ( lastIndex > 0 ) { + + times[ writeIndex ] = times[ lastIndex ]; + + for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + ++ writeIndex; + + } + + if ( writeIndex !== times.length ) { + + this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); + this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); + + } + + return this; + + }, + + clone: function () { + + var times = AnimationUtils.arraySlice( this.times, 0 ); + var values = AnimationUtils.arraySlice( this.values, 0 ); + + var TypedKeyframeTrack = this.constructor; + var track = new TypedKeyframeTrack( this.name, times, values ); + + // Interpolant argument to constructor is not saved, so copy the factory method directly. + track.createInterpolant = this.createInterpolant; + + return track; + + } + + } ); + + /** + * + * A Track of Boolean keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function BooleanKeyframeTrack( name, times, values ) { + + KeyframeTrack.call( this, name, times, values ); + + } + + BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: BooleanKeyframeTrack, + + ValueTypeName: 'bool', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + InterpolantFactoryMethodSmooth: undefined + + // Note: Actually this track could have a optimized / compressed + // representation of a single value and a custom interpolant that + // computes "firstValue ^ isOdd( index )". + + } ); + + /** + * + * A Track of keyframe values that represent color. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function ColorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: ColorKeyframeTrack, + + ValueTypeName: 'color' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + // Note: Very basic implementation and nothing special yet. + // However, this is the place for color space parameterization. + + } ); + + /** + * + * A Track of numeric keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function NumberKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: NumberKeyframeTrack, + + ValueTypeName: 'number' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * Spherical linear unit quaternion interpolant. + * + * @author tschw + */ + + function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: QuaternionLinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset = i1 * stride, + + alpha = ( t - t0 ) / ( t1 - t0 ); + + for ( var end = offset + stride; offset !== end; offset += 4 ) { + + Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + + } + + return result; + + } + + } ); + + /** + * + * A Track of quaternion keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function QuaternionKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: QuaternionKeyframeTrack, + + ValueTypeName: 'quaternion', + + // ValueBufferType is inherited + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: undefined // not yet implemented + + } ); + + /** + * + * A Track that interpolates Strings + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function StringKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: StringKeyframeTrack, + + ValueTypeName: 'string', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + + InterpolantFactoryMethodSmooth: undefined + + } ); + + /** + * + * A Track of vectored keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function VectorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: VectorKeyframeTrack, + + ValueTypeName: 'vector' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * + * Reusable set of Tracks that represent an animation. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + function AnimationClip( name, duration, tracks ) { + + this.name = name; + this.tracks = tracks; + this.duration = ( duration !== undefined ) ? duration : - 1; + + this.uuid = _Math.generateUUID(); + + // this means it should figure out its duration by scanning the tracks + if ( this.duration < 0 ) { + + this.resetDuration(); + + } + + } + + function getTrackTypeForValueTypeName( typeName ) { + + switch ( typeName.toLowerCase() ) { + + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + + return VectorKeyframeTrack; + + case 'color': + + return ColorKeyframeTrack; + + case 'quaternion': + + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + + return BooleanKeyframeTrack; + + case 'string': + + return StringKeyframeTrack; + + } + + throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + + } + + function parseKeyframeTrack( json ) { + + if ( json.type === undefined ) { + + throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + + } + + var trackType = getTrackTypeForValueTypeName( json.type ); + + if ( json.times === undefined ) { + + var times = [], values = []; + + AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); + + json.times = times; + json.values = values; + + } + + // derived classes can define a static parse method + if ( trackType.parse !== undefined ) { + + return trackType.parse( json ); + + } else { + + // by default, we assume a constructor compatible with the base + return new trackType( json.name, json.times, json.values, json.interpolation ); + + } + + } + + Object.assign( AnimationClip, { + + parse: function ( json ) { + + var tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / ( json.fps || 1.0 ); + + for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { + + tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); + + } + + return new AnimationClip( json.name, json.duration, tracks ); + + }, + + toJSON: function ( clip ) { + + var tracks = [], + clipTracks = clip.tracks; + + var json = { + + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks, + 'uuid': clip.uuid + + }; + + for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + + } + + return json; + + }, + + CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { + + var numMorphTargets = morphTargetSequence.length; + var tracks = []; + + for ( var i = 0; i < numMorphTargets; i ++ ) { + + var times = []; + var values = []; + + times.push( + ( i + numMorphTargets - 1 ) % numMorphTargets, + i, + ( i + 1 ) % numMorphTargets ); + + values.push( 0, 1, 0 ); + + var order = AnimationUtils.getKeyframeOrder( times ); + times = AnimationUtils.sortedArray( times, 1, order ); + values = AnimationUtils.sortedArray( values, 1, order ); + + // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + if ( ! noLoop && times[ 0 ] === 0 ) { + + times.push( numMorphTargets ); + values.push( values[ 0 ] ); + + } + + tracks.push( + new NumberKeyframeTrack( + '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + times, values + ).scale( 1.0 / fps ) ); + + } + + return new AnimationClip( name, - 1, tracks ); + + }, + + findByName: function ( objectOrClipArray, name ) { + + var clipArray = objectOrClipArray; + + if ( ! Array.isArray( objectOrClipArray ) ) { + + var o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + + } + + for ( var i = 0; i < clipArray.length; i ++ ) { + + if ( clipArray[ i ].name === name ) { + + return clipArray[ i ]; + + } + + } + + return null; + + }, + + CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { + + var animationToMorphTargets = {}; + + // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + var pattern = /^([\w-]*?)([\d]+)$/; + + // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = morphTargets[ i ]; + var parts = morphTarget.name.match( pattern ); + + if ( parts && parts.length > 1 ) { + + var name = parts[ 1 ]; + + var animationMorphTargets = animationToMorphTargets[ name ]; + if ( ! animationMorphTargets ) { + + animationToMorphTargets[ name ] = animationMorphTargets = []; + + } + + animationMorphTargets.push( morphTarget ); + + } + + } + + var clips = []; + + for ( var name in animationToMorphTargets ) { + + clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + + } + + return clips; + + }, + + // parse the animation.hierarchy format + parseAnimation: function ( animation, bones ) { + + if ( ! animation ) { + + console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + return null; + + } + + var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + + // only return track if there are actually keys. + if ( animationKeys.length !== 0 ) { + + var times = []; + var values = []; + + AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); + + // empty keys are filtered out, so check again + if ( times.length !== 0 ) { + + destTracks.push( new trackType( trackName, times, values ) ); + + } + + } + + }; + + var tracks = []; + + var clipName = animation.name || 'default'; + // automatic length determination in AnimationClip. + var duration = animation.length || - 1; + var fps = animation.fps || 30; + + var hierarchyTracks = animation.hierarchy || []; + + for ( var h = 0; h < hierarchyTracks.length; h ++ ) { + + var animationKeys = hierarchyTracks[ h ].keys; + + // skip empty tracks + if ( ! animationKeys || animationKeys.length === 0 ) continue; + + // process morph targets + if ( animationKeys[ 0 ].morphTargets ) { + + // figure out all morph targets used in this track + var morphTargetNames = {}; + + for ( var k = 0; k < animationKeys.length; k ++ ) { + + if ( animationKeys[ k ].morphTargets ) { + + for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + + morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; + + } + + } + + } + + // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + for ( var morphTargetName in morphTargetNames ) { + + var times = []; + var values = []; + + for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + + var animationKey = animationKeys[ k ]; + + times.push( animationKey.time ); + values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + + } + + tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + + } + + duration = morphTargetNames.length * ( fps || 1.0 ); + + } else { + + // ...assume skeletal animation + + var boneName = '.bones[' + bones[ h ].name + ']'; + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.position', + animationKeys, 'pos', tracks ); + + addNonemptyTrack( + QuaternionKeyframeTrack, boneName + '.quaternion', + animationKeys, 'rot', tracks ); + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.scale', + animationKeys, 'scl', tracks ); + + } + + } + + if ( tracks.length === 0 ) { + + return null; + + } + + var clip = new AnimationClip( clipName, duration, tracks ); + + return clip; + + } + + } ); + + Object.assign( AnimationClip.prototype, { + + resetDuration: function () { + + var tracks = this.tracks, duration = 0; + + for ( var i = 0, n = tracks.length; i !== n; ++ i ) { + + var track = this.tracks[ i ]; + + duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + + } + + this.duration = duration; + + return this; + + }, + + trim: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].trim( 0, this.duration ); + + } + + return this; + + }, + + validate: function () { + + var valid = true; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + valid = valid && this.tracks[ i ].validate(); + + } + + return valid; + + }, + + optimize: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].optimize(); + + } + + return this; + + }, + + + clone: function () { + + var tracks = []; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + tracks.push( this.tracks[ i ].clone() ); + + } + + return new AnimationClip( this.name, this.duration, tracks ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var Cache = { + + enabled: false, + + files: {}, + + add: function ( key, file ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[ key ] = file; + + }, + + get: function ( key ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[ key ]; + + }, + + remove: function ( key ) { + + delete this.files[ key ]; + + }, + + clear: function () { + + this.files = {}; + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LoadingManager( onLoad, onProgress, onError ) { + + var scope = this; + + var isLoading = false; + var itemsLoaded = 0; + var itemsTotal = 0; + var urlModifier = undefined; + + // Refer to #5689 for the reason why we don't set .onStart + // in the constructor + + this.onStart = undefined; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + + this.itemStart = function ( url ) { + + itemsTotal ++; + + if ( isLoading === false ) { + + if ( scope.onStart !== undefined ) { + + scope.onStart( url, itemsLoaded, itemsTotal ); + + } + + } + + isLoading = true; + + }; + + this.itemEnd = function ( url ) { + + itemsLoaded ++; + + if ( scope.onProgress !== undefined ) { + + scope.onProgress( url, itemsLoaded, itemsTotal ); + + } + + if ( itemsLoaded === itemsTotal ) { + + isLoading = false; + + if ( scope.onLoad !== undefined ) { + + scope.onLoad(); + + } + + } + + }; + + this.itemError = function ( url ) { + + if ( scope.onError !== undefined ) { + + scope.onError( url ); + + } + + }; + + this.resolveURL = function ( url ) { + + if ( urlModifier ) { + + return urlModifier( url ); + + } + + return url; + + }; + + this.setURLModifier = function ( transform ) { + + urlModifier = transform; + return this; + + }; + + } + + var DefaultLoadingManager = new LoadingManager(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var loading = {}; + + function FileLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FileLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + // Check if request is duplicate + + if ( loading[ url ] !== undefined ) { + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + return; + + } + + // Check for data: URI + var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; + var dataUriRegexResult = url.match( dataUriRegex ); + + // Safari can not handle Data URIs through XMLHttpRequest so process manually + if ( dataUriRegexResult ) { + + var mimeType = dataUriRegexResult[ 1 ]; + var isBase64 = !! dataUriRegexResult[ 2 ]; + var data = dataUriRegexResult[ 3 ]; + + data = decodeURIComponent( data ); + + if ( isBase64 ) data = atob( data ); + + try { + + var response; + var responseType = ( this.responseType || '' ).toLowerCase(); + + switch ( responseType ) { + + case 'arraybuffer': + case 'blob': + + var view = new Uint8Array( data.length ); + + for ( var i = 0; i < data.length; i ++ ) { + + view[ i ] = data.charCodeAt( i ); + + } + + if ( responseType === 'blob' ) { + + response = new Blob( [ view.buffer ], { type: mimeType } ); + + } else { + + response = view.buffer; + + } + + break; + + case 'document': + + var parser = new DOMParser(); + response = parser.parseFromString( data, mimeType ); + + break; + + case 'json': + + response = JSON.parse( data ); + + break; + + default: // 'text' or other + + response = data; + + break; + + } + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onLoad ) onLoad( response ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + } catch ( error ) { + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onError ) onError( error ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, 0 ); + + } + + } else { + + // Initialise array for duplicate requests + + loading[ url ] = []; + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + var request = new XMLHttpRequest(); + + request.open( 'GET', url, true ); + + request.addEventListener( 'load', function ( event ) { + + var response = this.response; + + Cache.add( url, response ); + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + if ( this.status === 200 || this.status === 0 ) { + + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + + if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onLoad ) callback.onLoad( response ); + + } + + scope.manager.itemEnd( url ); + + } else { + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + }, false ); + + request.addEventListener( 'progress', function ( event ) { + + var callbacks = loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onProgress ) callback.onProgress( event ); + + } + + }, false ); + + request.addEventListener( 'error', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + request.addEventListener( 'abort', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + if ( this.responseType !== undefined ) request.responseType = this.responseType; + if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; + + if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); + + for ( var header in this.requestHeader ) { + + request.setRequestHeader( header, this.requestHeader[ header ] ); + + } + + request.send( null ); + + } + + scope.manager.itemStart( url ); + + return request; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResponseType: function ( value ) { + + this.responseType = value; + return this; + + }, + + setWithCredentials: function ( value ) { + + this.withCredentials = value; + return this; + + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + + }, + + setRequestHeader: function ( value ) { + + this.requestHeader = value; + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io/ + */ + + function AnimationLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( AnimationLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var clip = AnimationClip.parse( json[ i ] ); + + animations.push( clip ); + + } + + return animations; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * Abstract Base class to block based textures loader (dds, pvr, ...) + */ + + function CompressedTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( CompressedTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var images = []; + + var texture = new CompressedTexture(); + texture.image = images; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + function loadTexture( i ) { + + loader.load( url[ i ], function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + images[ i ] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + + loaded += 1; + + if ( loaded === 6 ) { + + if ( texDatas.mipmapCount === 1 ) + texture.minFilter = LinearFilter; + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, onProgress, onError ); + + } + + if ( Array.isArray( url ) ) { + + var loaded = 0; + + for ( var i = 0, il = url.length; i < il; ++ i ) { + + loadTexture( i ); + + } + + } else { + + // compressed cubemap texture stored in a single DDS file + + loader.load( url, function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + if ( texDatas.isCubemap ) { + + var faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for ( var f = 0; f < faces; f ++ ) { + + images[ f ] = { mipmaps: [] }; + + for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { + + images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); + images[ f ].format = texDatas.format; + images[ f ].width = texDatas.width; + images[ f ].height = texDatas.height; + + } + + } + + } else { + + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + + } + + if ( texDatas.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + }, onProgress, onError ); + + } + + return texture; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author Nikos M. / https://github.com/foo123/ + * + * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) + */ + + function DataTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( DataTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var texture = new DataTexture(); + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + var texData = scope._parser( buffer ); + + if ( ! texData ) return; + + if ( texData.image !== undefined ) { + + texture.image = texData.image; + + } else if ( texData.data !== undefined ) { + + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + + } + + texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; + + texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; + texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter; + + texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; + + if ( texData.format !== undefined ) { + + texture.format = texData.format; + + } + if ( texData.type !== undefined ) { + + texture.type = texData.type; + + } + + if ( texData.mipmaps !== undefined ) { + + texture.mipmaps = texData.mipmaps; + + } + + if ( texData.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture, texData ); + + }, onProgress, onError ); + + + return texture; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function ImageLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( ImageLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); + + function onImageLoad() { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + Cache.add( url, this ); + + if ( onLoad ) onLoad( this ); + + scope.manager.itemEnd( url ); + + } + + function onImageError( event ) { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + if ( onError ) onError( event ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + image.addEventListener( 'load', onImageLoad, false ); + image.addEventListener( 'error', onImageError, false ); + + if ( url.substr( 0, 5 ) !== 'data:' ) { + + if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; + + } + + scope.manager.itemStart( url ); + + image.src = url; + + return image; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function CubeTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( CubeTextureLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( urls, onLoad, onProgress, onError ) { + + var texture = new CubeTexture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + var loaded = 0; + + function loadTexture( i ) { + + loader.load( urls[ i ], function ( image ) { + + texture.images[ i ] = image; + + loaded ++; + + if ( loaded === 6 ) { + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, undefined, onError ); + + } + + for ( var i = 0; i < urls.length; ++ i ) { + + loadTexture( i ); + + } + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function TextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( TextureLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var texture = new Texture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + loader.load( url, function ( image ) { + + texture.image = image; + + // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. + var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; + + texture.format = isJPEG ? RGBFormat : RGBAFormat; + texture.needsUpdate = true; + + if ( onLoad !== undefined ) { + + onLoad( texture ); + + } + + }, onProgress, onError ); + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Extensible curve object + * + * Some common of curve methods: + * .getPoint( t, optionalTarget ), .getTangent( t ) + * .getPointAt( u, optionalTarget ), .getTangentAt( u ) + * .getPoints(), .getSpacedPoints() + * .getLength() + * .updateArcLengths() + * + * This following curves inherit from THREE.Curve: + * + * -- 2D curves -- + * THREE.ArcCurve + * THREE.CubicBezierCurve + * THREE.EllipseCurve + * THREE.LineCurve + * THREE.QuadraticBezierCurve + * THREE.SplineCurve + * + * -- 3D curves -- + * THREE.CatmullRomCurve3 + * THREE.CubicBezierCurve3 + * THREE.LineCurve3 + * THREE.QuadraticBezierCurve3 + * + * A series of curves can be represented as a THREE.CurvePath. + * + **/ + + /************************************************************** + * Abstract Curve base class + **************************************************************/ + + function Curve() { + + this.type = 'Curve'; + + this.arcLengthDivisions = 200; + + } + + Object.assign( Curve.prototype, { + + // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + + getPoint: function ( /* t, optionalTarget */ ) { + + console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + return null; + + }, + + // Get point at relative position in curve according to arc length + // - u [0 .. 1] + + getPointAt: function ( u, optionalTarget ) { + + var t = this.getUtoTmapping( u ); + return this.getPoint( t, optionalTarget ); + + }, + + // Get sequence of points using getPoint( t ) + + getPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPoint( d / divisions ) ); + + } + + return points; + + }, + + // Get sequence of points using getPointAt( u ) + + getSpacedPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPointAt( d / divisions ) ); + + } + + return points; + + }, + + // Get total curve arc length + + getLength: function () { + + var lengths = this.getLengths(); + return lengths[ lengths.length - 1 ]; + + }, + + // Get list of cumulative segment lengths + + getLengths: function ( divisions ) { + + if ( divisions === undefined ) divisions = this.arcLengthDivisions; + + if ( this.cacheArcLengths && + ( this.cacheArcLengths.length === divisions + 1 ) && + ! this.needsUpdate ) { + + return this.cacheArcLengths; + + } + + this.needsUpdate = false; + + var cache = []; + var current, last = this.getPoint( 0 ); + var p, sum = 0; + + cache.push( 0 ); + + for ( p = 1; p <= divisions; p ++ ) { + + current = this.getPoint( p / divisions ); + sum += current.distanceTo( last ); + cache.push( sum ); + last = current; + + } + + this.cacheArcLengths = cache; + + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + + }, + + updateArcLengths: function () { + + this.needsUpdate = true; + this.getLengths(); + + }, + + // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + + getUtoTmapping: function ( u, distance ) { + + var arcLengths = this.getLengths(); + + var i = 0, il = arcLengths.length; + + var targetArcLength; // The targeted u distance value to get + + if ( distance ) { + + targetArcLength = distance; + + } else { + + targetArcLength = u * arcLengths[ il - 1 ]; + + } + + // binary search for the index with largest value smaller than target u distance + + var low = 0, high = il - 1, comparison; + + while ( low <= high ) { + + i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[ i ] - targetArcLength; + + if ( comparison < 0 ) { + + low = i + 1; + + } else if ( comparison > 0 ) { + + high = i - 1; + + } else { + + high = i; + break; + + // DONE + + } + + } + + i = high; + + if ( arcLengths[ i ] === targetArcLength ) { + + return i / ( il - 1 ); + + } + + // we could get finer grain at lengths, or use simple interpolation between two points + + var lengthBefore = arcLengths[ i ]; + var lengthAfter = arcLengths[ i + 1 ]; + + var segmentLength = lengthAfter - lengthBefore; + + // determine where we are between the 'before' and 'after' points + + var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + + // add that fractional amount to t + + var t = ( i + segmentFraction ) / ( il - 1 ); + + return t; + + }, + + // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + + getTangent: function ( t ) { + + var delta = 0.0001; + var t1 = t - delta; + var t2 = t + delta; + + // Capping in case of danger + + if ( t1 < 0 ) t1 = 0; + if ( t2 > 1 ) t2 = 1; + + var pt1 = this.getPoint( t1 ); + var pt2 = this.getPoint( t2 ); + + var vec = pt2.clone().sub( pt1 ); + return vec.normalize(); + + }, + + getTangentAt: function ( u ) { + + var t = this.getUtoTmapping( u ); + return this.getTangent( t ); + + }, + + computeFrenetFrames: function ( segments, closed ) { + + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + + var normal = new Vector3(); + + var tangents = []; + var normals = []; + var binormals = []; + + var vec = new Vector3(); + var mat = new Matrix4(); + + var i, u, theta; + + // compute the tangent vectors for each segment on the curve + + for ( i = 0; i <= segments; i ++ ) { + + u = i / segments; + + tangents[ i ] = this.getTangentAt( u ); + tangents[ i ].normalize(); + + } + + // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + normals[ 0 ] = new Vector3(); + binormals[ 0 ] = new Vector3(); + var min = Number.MAX_VALUE; + var tx = Math.abs( tangents[ 0 ].x ); + var ty = Math.abs( tangents[ 0 ].y ); + var tz = Math.abs( tangents[ 0 ].z ); + + if ( tx <= min ) { + + min = tx; + normal.set( 1, 0, 0 ); + + } + + if ( ty <= min ) { + + min = ty; + normal.set( 0, 1, 0 ); + + } + + if ( tz <= min ) { + + normal.set( 0, 0, 1 ); + + } + + vec.crossVectors( tangents[ 0 ], normal ).normalize(); + + normals[ 0 ].crossVectors( tangents[ 0 ], vec ); + binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + + + // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for ( i = 1; i <= segments; i ++ ) { + + normals[ i ] = normals[ i - 1 ].clone(); + + binormals[ i ] = binormals[ i - 1 ].clone(); + + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + + if ( vec.length() > Number.EPSILON ) { + + vec.normalize(); + + theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + + normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + + } + + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + if ( closed === true ) { + + theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); + theta /= segments; + + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + + theta = - theta; + + } + + for ( i = 1; i <= segments; i ++ ) { + + // twist a little... + normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.arcLengthDivisions = source.arcLengthDivisions; + + return this; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + + return data; + + }, + + fromJSON: function ( json ) { + + this.arcLengthDivisions = json.arcLengthDivisions; + + return this; + + } + + } ); + + function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + Curve.call( this ); + + this.type = 'EllipseCurve'; + + this.aX = aX || 0; + this.aY = aY || 0; + + this.xRadius = xRadius || 1; + this.yRadius = yRadius || 1; + + this.aStartAngle = aStartAngle || 0; + this.aEndAngle = aEndAngle || 2 * Math.PI; + + this.aClockwise = aClockwise || false; + + this.aRotation = aRotation || 0; + + } + + EllipseCurve.prototype = Object.create( Curve.prototype ); + EllipseCurve.prototype.constructor = EllipseCurve; + + EllipseCurve.prototype.isEllipseCurve = true; + + EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var twoPi = Math.PI * 2; + var deltaAngle = this.aEndAngle - this.aStartAngle; + var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + + // ensures that deltaAngle is 0 .. 2 PI + while ( deltaAngle < 0 ) deltaAngle += twoPi; + while ( deltaAngle > twoPi ) deltaAngle -= twoPi; + + if ( deltaAngle < Number.EPSILON ) { + + if ( samePoints ) { + + deltaAngle = 0; + + } else { + + deltaAngle = twoPi; + + } + + } + + if ( this.aClockwise === true && ! samePoints ) { + + if ( deltaAngle === twoPi ) { + + deltaAngle = - twoPi; + + } else { + + deltaAngle = deltaAngle - twoPi; + + } + + } + + var angle = this.aStartAngle + t * deltaAngle; + var x = this.aX + this.xRadius * Math.cos( angle ); + var y = this.aY + this.yRadius * Math.sin( angle ); + + if ( this.aRotation !== 0 ) { + + var cos = Math.cos( this.aRotation ); + var sin = Math.sin( this.aRotation ); + + var tx = x - this.aX; + var ty = y - this.aY; + + // Rotate the point about the center of the ellipse. + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + + } + + return point.set( x, y ); + + }; + + EllipseCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.aX = source.aX; + this.aY = source.aY; + + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + + this.aClockwise = source.aClockwise; + + this.aRotation = source.aRotation; + + return this; + + }; + + + EllipseCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.aX = this.aX; + data.aY = this.aY; + + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + + data.aClockwise = this.aClockwise; + + data.aRotation = this.aRotation; + + return data; + + }; + + EllipseCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.aX = json.aX; + this.aY = json.aY; + + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + + this.aClockwise = json.aClockwise; + + this.aRotation = json.aRotation; + + return this; + + }; + + function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + this.type = 'ArcCurve'; + + } + + ArcCurve.prototype = Object.create( EllipseCurve.prototype ); + ArcCurve.prototype.constructor = ArcCurve; + + ArcCurve.prototype.isArcCurve = true; + + /** + * @author zz85 https://github.com/zz85 + * + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + function CubicPoly() { + + var c0 = 0, c1 = 0, c2 = 0, c3 = 0; + + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + function init( x0, x1, t0, t1 ) { + + c0 = x0; + c1 = t0; + c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + + } + + return { + + initCatmullRom: function ( x0, x1, x2, x3, tension ) { + + init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + + }, + + initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + + // compute tangents when parameterized in [t1,t2] + var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; + var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + + // rescale tangents for parametrization in [0,1] + t1 *= dt1; + t2 *= dt1; + + init( x1, x2, t1, t2 ); + + }, + + calc: function ( t ) { + + var t2 = t * t; + var t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + + } + + }; + + } + + // + + var tmp = new Vector3(); + var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); + + function CatmullRomCurve3( points, closed, curveType, tension ) { + + Curve.call( this ); + + this.type = 'CatmullRomCurve3'; + + this.points = points || []; + this.closed = closed || false; + this.curveType = curveType || 'centripetal'; + this.tension = tension || 0.5; + + } + + CatmullRomCurve3.prototype = Object.create( Curve.prototype ); + CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; + + CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; + + CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var points = this.points; + var l = points.length; + + var p = ( l - ( this.closed ? 0 : 1 ) ) * t; + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + if ( this.closed ) { + + intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; + + } else if ( weight === 0 && intPoint === l - 1 ) { + + intPoint = l - 2; + weight = 1; + + } + + var p0, p1, p2, p3; // 4 points + + if ( this.closed || intPoint > 0 ) { + + p0 = points[ ( intPoint - 1 ) % l ]; + + } else { + + // extrapolate first point + tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + p0 = tmp; + + } + + p1 = points[ intPoint % l ]; + p2 = points[ ( intPoint + 1 ) % l ]; + + if ( this.closed || intPoint + 2 < l ) { + + p3 = points[ ( intPoint + 2 ) % l ]; + + } else { + + // extrapolate last point + tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + p3 = tmp; + + } + + if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + + // init Centripetal / Chordal Catmull-Rom + var pow = this.curveType === 'chordal' ? 0.5 : 0.25; + var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); + var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); + var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + + // safety check for repeated points + if ( dt1 < 1e-4 ) dt1 = 1.0; + if ( dt0 < 1e-4 ) dt0 = dt1; + if ( dt2 < 1e-4 ) dt2 = dt1; + + px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); + py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); + pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + + } else if ( this.curveType === 'catmullrom' ) { + + px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); + py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); + pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + + } + + point.set( + px.calc( weight ), + py.calc( weight ), + pz.calc( weight ) + ); + + return point; + + }; + + CatmullRomCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + + return this; + + }; + + CatmullRomCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + + return data; + + }; + + CatmullRomCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector3().fromArray( point ) ); + + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + + return this; + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Bezier Curves formulas obtained from + * http://en.wikipedia.org/wiki/Bézier_curve + */ + + function CatmullRom( t, p0, p1, p2, p3 ) { + + var v0 = ( p2 - p0 ) * 0.5; + var v1 = ( p3 - p1 ) * 0.5; + var t2 = t * t; + var t3 = t * t2; + return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + + } + + // + + function QuadraticBezierP0( t, p ) { + + var k = 1 - t; + return k * k * p; + + } + + function QuadraticBezierP1( t, p ) { + + return 2 * ( 1 - t ) * t * p; + + } + + function QuadraticBezierP2( t, p ) { + + return t * t * p; + + } + + function QuadraticBezier( t, p0, p1, p2 ) { + + return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + + QuadraticBezierP2( t, p2 ); + + } + + // + + function CubicBezierP0( t, p ) { + + var k = 1 - t; + return k * k * k * p; + + } + + function CubicBezierP1( t, p ) { + + var k = 1 - t; + return 3 * k * k * t * p; + + } + + function CubicBezierP2( t, p ) { + + return 3 * ( 1 - t ) * t * t * p; + + } + + function CubicBezierP3( t, p ) { + + return t * t * t * p; + + } + + function CubicBezier( t, p0, p1, p2, p3 ) { + + return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + + CubicBezierP3( t, p3 ); + + } + + function CubicBezierCurve( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + this.v3 = v3 || new Vector2(); + + } + + CubicBezierCurve.prototype = Object.create( Curve.prototype ); + CubicBezierCurve.prototype.constructor = CubicBezierCurve; + + CubicBezierCurve.prototype.isCubicBezierCurve = true; + + CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + ); + + return point; + + }; + + CubicBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function CubicBezierCurve3( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + this.v3 = v3 || new Vector3(); + + } + + CubicBezierCurve3.prototype = Object.create( Curve.prototype ); + CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; + + CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; + + CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), + CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + ); + + return point; + + }; + + CubicBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function LineCurve( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve'; + + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + LineCurve.prototype = Object.create( Curve.prototype ); + LineCurve.prototype.constructor = LineCurve; + + LineCurve.prototype.isLineCurve = true; + + LineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve.prototype.getTangent = function ( /* t */ ) { + + var tangent = this.v2.clone().sub( this.v1 ); + + return tangent.normalize(); + + }; + + LineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function LineCurve3( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve3'; + + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + LineCurve3.prototype = Object.create( Curve.prototype ); + LineCurve3.prototype.constructor = LineCurve3; + + LineCurve3.prototype.isLineCurve3 = true; + + LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; + + QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; + + QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ) + ); + + return point; + + }; + + QuadraticBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve3( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; + + QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; + + QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ), + QuadraticBezier( t, v0.z, v1.z, v2.z ) + ); + + return point; + + }; + + QuadraticBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function SplineCurve( points /* array of Vector2 */ ) { + + Curve.call( this ); + + this.type = 'SplineCurve'; + + this.points = points || []; + + } + + SplineCurve.prototype = Object.create( Curve.prototype ); + SplineCurve.prototype.constructor = SplineCurve; + + SplineCurve.prototype.isSplineCurve = true; + + SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var points = this.points; + var p = ( points.length - 1 ) * t; + + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; + var p1 = points[ intPoint ]; + var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; + var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + + point.set( + CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), + CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + ); + + return point; + + }; + + SplineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + return this; + + }; + + SplineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + return data; + + }; + + SplineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector2().fromArray( point ) ); + + } + + return this; + + }; + + + + var Curves = /*#__PURE__*/Object.freeze({ + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve + }); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + **/ + + /************************************************************** + * Curved Path - a curve path is simply a array of connected + * curves, but retains the api of a curve + **************************************************************/ + + function CurvePath() { + + Curve.call( this ); + + this.type = 'CurvePath'; + + this.curves = []; + this.autoClose = false; // Automatically closes the path + + } + + CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { + + constructor: CurvePath, + + add: function ( curve ) { + + this.curves.push( curve ); + + }, + + closePath: function () { + + // Add a line curve if start and end of lines are not connected + var startPoint = this.curves[ 0 ].getPoint( 0 ); + var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + + if ( ! startPoint.equals( endPoint ) ) { + + this.curves.push( new LineCurve( endPoint, startPoint ) ); + + } + + }, + + // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + getPoint: function ( t ) { + + var d = t * this.getLength(); + var curveLengths = this.getCurveLengths(); + var i = 0; + + // To think about boundaries points. + + while ( i < curveLengths.length ) { + + if ( curveLengths[ i ] >= d ) { + + var diff = curveLengths[ i ] - d; + var curve = this.curves[ i ]; + + var segmentLength = curve.getLength(); + var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + + return curve.getPointAt( u ); + + } + + i ++; + + } + + return null; + + // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + + points.push( points[ 0 ] ); + + } + + return points; + + }, + + copy: function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.curves = []; + + for ( var i = 0, l = source.curves.length; i < l; i ++ ) { + + var curve = source.curves[ i ]; + + this.curves.push( curve.clone() ); + + } + + this.autoClose = source.autoClose; + + return this; + + }, + + toJSON: function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.autoClose = this.autoClose; + data.curves = []; + + for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + + var curve = this.curves[ i ]; + data.curves.push( curve.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.autoClose = json.autoClose; + this.curves = []; + + for ( var i = 0, l = json.curves.length; i < l; i ++ ) { + + var curve = json.curves[ i ]; + this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + + } + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Creates free form 2d path using series of points, lines or curves. + **/ + + function Path( points ) { + + CurvePath.call( this ); + + this.type = 'Path'; + + this.currentPoint = new Vector2(); + + if ( points ) { + + this.setFromPoints( points ); + + } + + } + + Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { + + constructor: Path, + + setFromPoints: function ( points ) { + + this.moveTo( points[ 0 ].x, points[ 0 ].y ); + + for ( var i = 1, l = points.length; i < l; i ++ ) { + + this.lineTo( points[ i ].x, points[ i ].y ); + + } + + }, + + moveTo: function ( x, y ) { + + this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + + }, + + lineTo: function ( x, y ) { + + var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); + this.curves.push( curve ); + + this.currentPoint.set( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + var curve = new QuadraticBezierCurve( + this.currentPoint.clone(), + new Vector2( aCPx, aCPy ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + var curve = new CubicBezierCurve( + this.currentPoint.clone(), + new Vector2( aCP1x, aCP1y ), + new Vector2( aCP2x, aCP2y ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + splineThru: function ( pts /*Array of Vector*/ ) { + + var npts = [ this.currentPoint.clone() ].concat( pts ); + + var curve = new SplineCurve( npts ); + this.curves.push( curve ); + + this.currentPoint.copy( pts[ pts.length - 1 ] ); + + }, + + arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absarc( aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise ); + + }, + + absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + }, + + ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + }, + + absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + if ( this.curves.length > 0 ) { + + // if a previous curve is present, attempt to join + var firstPoint = curve.getPoint( 0 ); + + if ( ! firstPoint.equals( this.currentPoint ) ) { + + this.lineTo( firstPoint.x, firstPoint.y ); + + } + + } + + this.curves.push( curve ); + + var lastPoint = curve.getPoint( 1 ); + this.currentPoint.copy( lastPoint ); + + }, + + copy: function ( source ) { + + CurvePath.prototype.copy.call( this, source ); + + this.currentPoint.copy( source.currentPoint ); + + return this; + + }, + + toJSON: function () { + + var data = CurvePath.prototype.toJSON.call( this ); + + data.currentPoint = this.currentPoint.toArray(); + + return data; + + }, + + fromJSON: function ( json ) { + + CurvePath.prototype.fromJSON.call( this, json ); + + this.currentPoint.fromArray( json.currentPoint ); + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Defines a 2d shape plane using paths. + **/ + + // STEP 1 Create a path. + // STEP 2 Turn path into shape. + // STEP 3 ExtrudeGeometry takes in Shape/Shapes + // STEP 3a - Extract points from each shape, turn to vertices + // STEP 3b - Triangulate each shape, add faces. + + function Shape( points ) { + + Path.call( this, points ); + + this.uuid = _Math.generateUUID(); + + this.type = 'Shape'; + + this.holes = []; + + } + + Shape.prototype = Object.assign( Object.create( Path.prototype ), { + + constructor: Shape, + + getPointsHoles: function ( divisions ) { + + var holesPts = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + + } + + return holesPts; + + }, + + // get points of shape and holes (keypoints based on segments parameter) + + extractPoints: function ( divisions ) { + + return { + + shape: this.getPoints( divisions ), + holes: this.getPointsHoles( divisions ) + + }; + + }, + + copy: function ( source ) { + + Path.prototype.copy.call( this, source ); + + this.holes = []; + + for ( var i = 0, l = source.holes.length; i < l; i ++ ) { + + var hole = source.holes[ i ]; + + this.holes.push( hole.clone() ); + + } + + return this; + + }, + + toJSON: function () { + + var data = Path.prototype.toJSON.call( this ); + + data.uuid = this.uuid; + data.holes = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + var hole = this.holes[ i ]; + data.holes.push( hole.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Path.prototype.fromJSON.call( this, json ); + + this.uuid = json.uuid; + this.holes = []; + + for ( var i = 0, l = json.holes.length; i < l; i ++ ) { + + var hole = json.holes[ i ]; + this.holes.push( new Path().fromJSON( hole ) ); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Light( color, intensity ) { + + Object3D.call( this ); + + this.type = 'Light'; + + this.color = new Color( color ); + this.intensity = intensity !== undefined ? intensity : 1; + + this.receiveShadow = undefined; + + } + + Light.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Light, + + isLight: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + + if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); + + if ( this.distance !== undefined ) data.object.distance = this.distance; + if ( this.angle !== undefined ) data.object.angle = this.angle; + if ( this.decay !== undefined ) data.object.decay = this.decay; + if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; + + if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); + + return data; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function HemisphereLight( skyColor, groundColor, intensity ) { + + Light.call( this, skyColor, intensity ); + + this.type = 'HemisphereLight'; + + this.castShadow = undefined; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.groundColor = new Color( groundColor ); + + } + + HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: HemisphereLight, + + isHemisphereLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.groundColor.copy( source.groundColor ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LightShadow( camera ) { + + this.camera = camera; + + this.bias = 0; + this.radius = 1; + + this.mapSize = new Vector2( 512, 512 ); + + this.map = null; + this.matrix = new Matrix4(); + + } + + Object.assign( LightShadow.prototype, { + + copy: function ( source ) { + + this.camera = source.camera.clone(); + + this.bias = source.bias; + this.radius = source.radius; + + this.mapSize.copy( source.mapSize ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var object = {}; + + if ( this.bias !== 0 ) object.bias = this.bias; + if ( this.radius !== 1 ) object.radius = this.radius; + if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); + + object.camera = this.camera.toJSON( false ).object; + delete object.camera.matrix; + + return object; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function SpotLightShadow() { + + LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + + } + + SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: SpotLightShadow, + + isSpotLightShadow: true, + + update: function ( light ) { + + var camera = this.camera; + + var fov = _Math.RAD2DEG * 2 * light.angle; + var aspect = this.mapSize.width / this.mapSize.height; + var far = light.distance || camera.far; + + if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function SpotLight( color, intensity, distance, angle, penumbra, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'SpotLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / Math.PI; + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; + this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new SpotLightShadow(); + + } + + SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: SpotLight, + + isSpotLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function PointLight( color, intensity, distance, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'PointLight'; + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * 4 * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / ( 4 * Math.PI ); + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + + } + + PointLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: PointLight, + + isPointLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.decay = source.decay; + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author arose / http://github.com/arose + */ + + function OrthographicCamera( left, right, top, bottom, near, far ) { + + Camera.call( this ); + + this.type = 'OrthographicCamera'; + + this.zoom = 1; + this.view = null; + + this.left = ( left !== undefined ) ? left : - 1; + this.right = ( right !== undefined ) ? right : 1; + this.top = ( top !== undefined ) ? top : 1; + this.bottom = ( bottom !== undefined ) ? bottom : - 1; + + this.near = ( near !== undefined ) ? near : 0.1; + this.far = ( far !== undefined ) ? far : 2000; + + this.updateProjectionMatrix(); + + } + + OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: OrthographicCamera, + + isOrthographicCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + return this; + + }, + + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var dx = ( this.right - this.left ) / ( 2 * this.zoom ); + var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); + var cx = ( this.right + this.left ) / 2; + var cy = ( this.top + this.bottom ) / 2; + + var left = cx - dx; + var right = cx + dx; + var top = cy + dy; + var bottom = cy - dy; + + if ( this.view !== null && this.view.enabled ) { + + var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); + var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); + var scaleW = ( this.right - this.left ) / this.view.width; + var scaleH = ( this.top - this.bottom ) / this.view.height; + + left += scaleW * ( this.view.offsetX / zoomW ); + right = left + scaleW * ( this.view.width / zoomW ); + top -= scaleH * ( this.view.offsetY / zoomH ); + bottom = top - scaleH * ( this.view.height / zoomH ); + + } + + this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectionalLightShadow( ) { + + LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); + + } + + DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: DirectionalLightShadow + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function DirectionalLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'DirectionalLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + this.shadow = new DirectionalLightShadow(); + + } + + DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: DirectionalLight, + + isDirectionalLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AmbientLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'AmbientLight'; + + this.castShadow = undefined; + + } + + AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: AmbientLight, + + isAmbientLight: true + + } ); + + /** + * @author abelnation / http://github.com/abelnation + */ + + function RectAreaLight( color, intensity, width, height ) { + + Light.call( this, color, intensity ); + + this.type = 'RectAreaLight'; + + this.width = ( width !== undefined ) ? width : 10; + this.height = ( height !== undefined ) ? height : 10; + + } + + RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: RectAreaLight, + + isRectAreaLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.width = source.width; + this.height = source.height; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + data.object.width = this.width; + data.object.height = this.height; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function MaterialLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.textures = {}; + + } + + Object.assign( MaterialLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var textures = this.textures; + + function getTexture( name ) { + + if ( textures[ name ] === undefined ) { + + console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + } + + var material = new Materials[ json.type ](); + + if ( json.uuid !== undefined ) material.uuid = json.uuid; + if ( json.name !== undefined ) material.name = json.name; + if ( json.color !== undefined ) material.color.setHex( json.color ); + if ( json.roughness !== undefined ) material.roughness = json.roughness; + if ( json.metalness !== undefined ) material.metalness = json.metalness; + if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); + if ( json.specular !== undefined ) material.specular.setHex( json.specular ); + if ( json.shininess !== undefined ) material.shininess = json.shininess; + if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; + if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; + if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; + if ( json.fog !== undefined ) material.fog = json.fog; + if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; + if ( json.blending !== undefined ) material.blending = json.blending; + if ( json.combine !== undefined ) material.combine = json.combine; + if ( json.side !== undefined ) material.side = json.side; + if ( json.opacity !== undefined ) material.opacity = json.opacity; + if ( json.transparent !== undefined ) material.transparent = json.transparent; + if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; + if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; + if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; + if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; + if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; + if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; + if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; + if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; + + if ( json.rotation !== undefined ) material.rotation = json.rotation; + + if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; + if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; + if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; + if ( json.scale !== undefined ) material.scale = json.scale; + + if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; + if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; + if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; + + if ( json.skinning !== undefined ) material.skinning = json.skinning; + if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; + if ( json.dithering !== undefined ) material.dithering = json.dithering; + + if ( json.visible !== undefined ) material.visible = json.visible; + if ( json.userData !== undefined ) material.userData = json.userData; + + // Shader Material + + if ( json.uniforms !== undefined ) { + + for ( var name in json.uniforms ) { + + var uniform = json.uniforms[ name ]; + + material.uniforms[ name ] = {}; + + switch ( uniform.type ) { + + case 't': + material.uniforms[ name ].value = getTexture( uniform.value ); + break; + + case 'c': + material.uniforms[ name ].value = new Color().setHex( uniform.value ); + break; + + case 'v2': + material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); + break; + + case 'v3': + material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); + break; + + case 'v4': + material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); + break; + + case 'm3': + material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); + + case 'm4': + material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); + break; + + default: + material.uniforms[ name ].value = uniform.value; + + } + + } + + } + + if ( json.defines !== undefined ) material.defines = json.defines; + if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; + if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; + + if ( json.extensions !== undefined ) { + + for ( var key in json.extensions ) { + + material.extensions[ key ] = json.extensions[ key ]; + + } + + } + + // Deprecated + + if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading + + // for PointsMaterial + + if ( json.size !== undefined ) material.size = json.size; + if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + + // maps + + if ( json.map !== undefined ) material.map = getTexture( json.map ); + + if ( json.alphaMap !== undefined ) { + + material.alphaMap = getTexture( json.alphaMap ); + material.transparent = true; + + } + + if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); + if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; + + if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); + if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; + if ( json.normalScale !== undefined ) { + + var normalScale = json.normalScale; + + if ( Array.isArray( normalScale ) === false ) { + + // Blender exporter used to export a scalar. See #7459 + + normalScale = [ normalScale, normalScale ]; + + } + + material.normalScale = new Vector2().fromArray( normalScale ); + + } + + if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); + if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; + if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; + + if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); + if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); + + if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); + if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; + + if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); + + if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); + if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; + + if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; + + if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); + if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; + + if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); + if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; + + if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); + + return material; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setTextures: function ( value ) { + + this.textures = value; + return this; + + } + + } ); + + /** + * @author Don McCurdy / https://www.donmccurdy.com + */ + + var LoaderUtils = { + + decodeText: function ( array ) { + + if ( typeof TextDecoder !== 'undefined' ) { + + return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + // Implicitly assumes little-endian. + s += String.fromCharCode( array[ i ] ); + + } + + // Merges multi-byte utf-8 characters. + return decodeURIComponent( escape( s ) ); + + }, + + extractUrlBase: function ( url ) { + + var index = url.lastIndexOf( '/' ); + + if ( index === - 1 ) return './'; + + return url.substr( 0, index + 1 ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferGeometryLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( BufferGeometryLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var geometry = new BufferGeometry(); + + var index = json.data.index; + + if ( index !== undefined ) { + + var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); + geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + + } + + var attributes = json.data.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + + var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + geometry.addAttribute( key, bufferAttribute ); + + } + + var morphAttributes = json.data.morphAttributes; + + if ( morphAttributes ) { + + for ( var key in morphAttributes ) { + + var attributeArray = morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + + var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + array.push( bufferAttribute ); + + } + + geometry.morphAttributes[ key ] = array; + + } + + } + + var groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if ( groups !== undefined ) { + + for ( var i = 0, n = groups.length; i !== n; ++ i ) { + + var group = groups[ i ]; + + geometry.addGroup( group.start, group.count, group.materialIndex ); + + } + + } + + var boundingSphere = json.data.boundingSphere; + + if ( boundingSphere !== undefined ) { + + var center = new Vector3(); + + if ( boundingSphere.center !== undefined ) { + + center.fromArray( boundingSphere.center ); + + } + + geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + + } + + if ( json.name ) geometry.name = json.name; + if ( json.userData ) geometry.userData = json.userData; + + return geometry; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + var TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + // Workaround for IE11 pre KB2929437. See #11440 + Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ObjectLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.resourcePath = ''; + + } + + Object.assign( ObjectLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; + this.resourcePath = this.resourcePath || path; + + var loader = new FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json = null; + + try { + + json = JSON.parse( text ); + + } catch ( error ) { + + if ( onError !== undefined ) onError( error ); + + console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + + return; + + } + + var metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); + return; + + } + + scope.parse( json, onLoad ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResourcePath: function ( value ) { + + this.resourcePath = value; + return this; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + parse: function ( json, onLoad ) { + + var shapes = this.parseShape( json.shapes ); + var geometries = this.parseGeometries( json.geometries, shapes ); + + var images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) onLoad( object ); + + } ); + + var textures = this.parseTextures( json.textures, images ); + var materials = this.parseMaterials( json.materials, textures ); + + var object = this.parseObject( json.object, geometries, materials ); + + if ( json.animations ) { + + object.animations = this.parseAnimations( json.animations ); + + } + + if ( json.images === undefined || json.images.length === 0 ) { + + if ( onLoad !== undefined ) onLoad( object ); + + } + + return object; + + }, + + parseShape: function ( json ) { + + var shapes = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var shape = new Shape().fromJSON( json[ i ] ); + + shapes[ shape.uuid ] = shape; + + } + + } + + return shapes; + + }, + + parseGeometries: function ( json, shapes ) { + + var geometries = {}; + + if ( json !== undefined ) { + + var bufferGeometryLoader = new BufferGeometryLoader(); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var geometry; + var data = json[ i ]; + + switch ( data.type ) { + + case 'PlaneGeometry': + case 'PlaneBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.widthSegments, + data.heightSegments + ); + + break; + + case 'BoxGeometry': + case 'BoxBufferGeometry': + case 'CubeGeometry': // backwards compatible + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.depth, + data.widthSegments, + data.heightSegments, + data.depthSegments + ); + + break; + + case 'CircleGeometry': + case 'CircleBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.segments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'CylinderGeometry': + case 'CylinderBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radiusTop, + data.radiusBottom, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'ConeGeometry': + case 'ConeBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'SphereGeometry': + case 'SphereBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.widthSegments, + data.heightSegments, + data.phiStart, + data.phiLength, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'DodecahedronGeometry': + case 'DodecahedronBufferGeometry': + case 'IcosahedronGeometry': + case 'IcosahedronBufferGeometry': + case 'OctahedronGeometry': + case 'OctahedronBufferGeometry': + case 'TetrahedronGeometry': + case 'TetrahedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.detail + ); + + break; + + case 'RingGeometry': + case 'RingBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.innerRadius, + data.outerRadius, + data.thetaSegments, + data.phiSegments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'TorusGeometry': + case 'TorusBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.radialSegments, + data.tubularSegments, + data.arc + ); + + break; + + case 'TorusKnotGeometry': + case 'TorusKnotBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.tubularSegments, + data.radialSegments, + data.p, + data.q + ); + + break; + + case 'TubeGeometry': + case 'TubeBufferGeometry': + + // This only works for built-in curves (e.g. CatmullRomCurve3). + // User defined curves or instances of CurvePath will not be deserialized. + geometry = new Geometries[ data.type ]( + new Curves[ data.path.type ]().fromJSON( data.path ), + data.tubularSegments, + data.radius, + data.radialSegments, + data.closed + ); + + break; + + case 'LatheGeometry': + case 'LatheBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.points, + data.segments, + data.phiStart, + data.phiLength + ); + + break; + + case 'PolyhedronGeometry': + case 'PolyhedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.vertices, + data.indices, + data.radius, + data.details + ); + + break; + + case 'ShapeGeometry': + case 'ShapeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.curveSegments + ); + + break; + + + case 'ExtrudeGeometry': + case 'ExtrudeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + var extrudePath = data.options.extrudePath; + + if ( extrudePath !== undefined ) { + + data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.options + ); + + break; + + case 'BufferGeometry': + + geometry = bufferGeometryLoader.parse( data ); + + break; + + case 'Geometry': + + if ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) { + + var geometryLoader = new THREE.LegacyJSONLoader(); + geometry = geometryLoader.parse( data, this.resourcePath ).geometry; + + + } else { + + console.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".' ); + + } + + break; + + default: + + console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); + + continue; + + } + + geometry.uuid = data.uuid; + + if ( data.name !== undefined ) geometry.name = data.name; + if ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData; + + geometries[ data.uuid ] = geometry; + + } + + } + + return geometries; + + }, + + parseMaterials: function ( json, textures ) { + + var cache = {}; // MultiMaterial + var materials = {}; + + if ( json !== undefined ) { + + var loader = new MaterialLoader(); + loader.setTextures( textures ); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.type === 'MultiMaterial' ) { + + // Deprecated + + var array = []; + + for ( var j = 0; j < data.materials.length; j ++ ) { + + var material = data.materials[ j ]; + + if ( cache[ material.uuid ] === undefined ) { + + cache[ material.uuid ] = loader.parse( material ); + + } + + array.push( cache[ material.uuid ] ); + + } + + materials[ data.uuid ] = array; + + } else { + + if ( cache[ data.uuid ] === undefined ) { + + cache[ data.uuid ] = loader.parse( data ); + + } + + materials[ data.uuid ] = cache[ data.uuid ]; + + } + + } + + } + + return materials; + + }, + + parseAnimations: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var data = json[ i ]; + + var clip = AnimationClip.parse( data ); + + if ( data.uuid !== undefined ) clip.uuid = data.uuid; + + animations.push( clip ); + + } + + return animations; + + }, + + parseImages: function ( json, onLoad ) { + + var scope = this; + var images = {}; + + function loadImage( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + }, undefined, function () { + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + } + + if ( json !== undefined && json.length > 0 ) { + + var manager = new LoadingManager( onLoad ); + + var loader = new ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( var i = 0, il = json.length; i < il; i ++ ) { + + var image = json[ i ]; + var url = image.url; + + if ( Array.isArray( url ) ) { + + // load array of images e.g CubeTexture + + images[ image.uuid ] = []; + + for ( var j = 0, jl = url.length; j < jl; j ++ ) { + + var currentUrl = url[ j ]; + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; + + images[ image.uuid ].push( loadImage( path ) ); + + } + + } else { + + // load single image + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; + + images[ image.uuid ] = loadImage( path ); + + } + + } + + } + + return images; + + }, + + parseTextures: function ( json, images ) { + + function parseConstant( value, type ) { + + if ( typeof value === 'number' ) return value; + + console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + + return type[ value ]; + + } + + var textures = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.image === undefined ) { + + console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + var texture; + + if ( Array.isArray( images[ data.image ] ) ) { + + texture = new CubeTexture( images[ data.image ] ); + + } else { + + texture = new Texture( images[ data.image ] ); + + } + + texture.needsUpdate = true; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) texture.name = data.name; + + if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); + + if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); + if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); + if ( data.center !== undefined ) texture.center.fromArray( data.center ); + if ( data.rotation !== undefined ) texture.rotation = data.rotation; + + if ( data.wrap !== undefined ) { + + texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); + texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + + } + + if ( data.format !== undefined ) texture.format = data.format; + if ( data.type !== undefined ) texture.type = data.type; + if ( data.encoding !== undefined ) texture.encoding = data.encoding; + + if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); + if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); + if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + + if ( data.flipY !== undefined ) texture.flipY = data.flipY; + + if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha; + if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment; + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + }, + + parseObject: function ( data, geometries, materials ) { + + var object; + + function getGeometry( name ) { + + if ( geometries[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + } + + function getMaterial( name ) { + + if ( name === undefined ) return undefined; + + if ( Array.isArray( name ) ) { + + var array = []; + + for ( var i = 0, l = name.length; i < l; i ++ ) { + + var uuid = name[ i ]; + + if ( materials[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + + } + + array.push( materials[ uuid ] ); + + } + + return array; + + } + + if ( materials[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + } + + switch ( data.type ) { + + case 'Scene': + + object = new Scene(); + + if ( data.background !== undefined ) { + + if ( Number.isInteger( data.background ) ) { + + object.background = new Color( data.background ); + + } + + } + + if ( data.fog !== undefined ) { + + if ( data.fog.type === 'Fog' ) { + + object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + + } else if ( data.fog.type === 'FogExp2' ) { + + object.fog = new FogExp2( data.fog.color, data.fog.density ); + + } + + } + + break; + + case 'PerspectiveCamera': + + object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + + if ( data.focus !== undefined ) object.focus = data.focus; + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; + if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'OrthographicCamera': + + object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'AmbientLight': + + object = new AmbientLight( data.color, data.intensity ); + + break; + + case 'DirectionalLight': + + object = new DirectionalLight( data.color, data.intensity ); + + break; + + case 'PointLight': + + object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + + break; + + case 'RectAreaLight': + + object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + + break; + + case 'SpotLight': + + object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + + break; + + case 'HemisphereLight': + + object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + + break; + + case 'SkinnedMesh': + + console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); + + case 'Mesh': + + var geometry = getGeometry( data.geometry ); + var material = getMaterial( data.material ); + + if ( geometry.bones && geometry.bones.length > 0 ) { + + object = new SkinnedMesh( geometry, material ); + + } else { + + object = new Mesh( geometry, material ); + + } + + if ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode ); + + break; + + case 'LOD': + + object = new LOD(); + + break; + + case 'Line': + + object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); + + break; + + case 'LineLoop': + + object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineSegments': + + object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'PointCloud': + case 'Points': + + object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'Sprite': + + object = new Sprite( getMaterial( data.material ) ); + + break; + + case 'Group': + + object = new Group(); + + break; + + default: + + object = new Object3D(); + + } + + object.uuid = data.uuid; + + if ( data.name !== undefined ) object.name = data.name; + + if ( data.matrix !== undefined ) { + + object.matrix.fromArray( data.matrix ); + + if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; + if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); + + } else { + + if ( data.position !== undefined ) object.position.fromArray( data.position ); + if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); + if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); + if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); + + } + + if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; + if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; + + if ( data.shadow ) { + + if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; + if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; + if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); + if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); + + } + + if ( data.visible !== undefined ) object.visible = data.visible; + if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; + if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; + if ( data.userData !== undefined ) object.userData = data.userData; + if ( data.layers !== undefined ) object.layers.mask = data.layers; + + if ( data.children !== undefined ) { + + var children = data.children; + + for ( var i = 0; i < children.length; i ++ ) { + + object.add( this.parseObject( children[ i ], geometries, materials ) ); + + } + + } + + if ( data.type === 'LOD' ) { + + var levels = data.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + var level = levels[ l ]; + var child = object.getObjectByProperty( 'uuid', level.object ); + + if ( child !== undefined ) { + + object.addLevel( child, level.distance ); + + } + + } + + } + + return object; + + } + + } ); + + var TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + SphericalReflectionMapping: SphericalReflectionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping, + CubeUVRefractionMapping: CubeUVRefractionMapping + }; + + var TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping + }; + + var TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipMapNearestFilter: NearestMipMapNearestFilter, + NearestMipMapLinearFilter: NearestMipMapLinearFilter, + LinearFilter: LinearFilter, + LinearMipMapNearestFilter: LinearMipMapNearestFilter, + LinearMipMapLinearFilter: LinearMipMapLinearFilter + }; + + /** + * @author thespite / http://clicktorelease.com/ + */ + + + function ImageBitmapLoader( manager ) { + + if ( typeof createImageBitmap === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + + } + + if ( typeof fetch === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + + } + + this.manager = manager !== undefined ? manager : DefaultLoadingManager; + this.options = undefined; + + } + + ImageBitmapLoader.prototype = { + + constructor: ImageBitmapLoader, + + setOptions: function setOptions( options ) { + + this.options = options; + + return this; + + }, + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + fetch( url ).then( function ( res ) { + + return res.blob(); + + } ).then( function ( blob ) { + + if ( scope.options === undefined ) { + + // Workaround for FireFox. It causes an error if you pass options. + return createImageBitmap( blob ); + + } else { + + return createImageBitmap( blob, scope.options ); + + } + + } ).then( function ( imageBitmap ) { + + Cache.add( url, imageBitmap ); + + if ( onLoad ) onLoad( imageBitmap ); + + scope.manager.itemEnd( url ); + + } ).catch( function ( e ) { + + if ( onError ) onError( e ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + scope.manager.itemStart( url ); + + }, + + setCrossOrigin: function ( /* value */ ) { + + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" + **/ + + function ShapePath() { + + this.type = 'ShapePath'; + + this.color = new Color(); + + this.subPaths = []; + this.currentPath = null; + + } + + Object.assign( ShapePath.prototype, { + + moveTo: function ( x, y ) { + + this.currentPath = new Path(); + this.subPaths.push( this.currentPath ); + this.currentPath.moveTo( x, y ); + + }, + + lineTo: function ( x, y ) { + + this.currentPath.lineTo( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + + }, + + splineThru: function ( pts ) { + + this.currentPath.splineThru( pts ); + + }, + + toShapes: function ( isCCW, noHoles ) { + + function toShapesNoHoles( inSubpaths ) { + + var shapes = []; + + for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { + + var tmpPath = inSubpaths[ i ]; + + var tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + + shapes.push( tmpShape ); + + } + + return shapes; + + } + + function isPointInsidePolygon( inPt, inPolygon ) { + + var polyLen = inPolygon.length; + + // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + var inside = false; + for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + + var edgeLowPt = inPolygon[ p ]; + var edgeHighPt = inPolygon[ q ]; + + var edgeDx = edgeHighPt.x - edgeLowPt.x; + var edgeDy = edgeHighPt.y - edgeLowPt.y; + + if ( Math.abs( edgeDy ) > Number.EPSILON ) { + + // not parallel + if ( edgeDy < 0 ) { + + edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + + } + if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; + + if ( inPt.y === edgeLowPt.y ) { + + if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + + } else { + + var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); + if ( perpEdge === 0 ) return true; // inPt is on contour ? + if ( perpEdge < 0 ) continue; + inside = ! inside; // true intersection left of inPt + + } + + } else { + + // parallel or collinear + if ( inPt.y !== edgeLowPt.y ) continue; // parallel + // edge lies on the same horizontal line as inPt + if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || + ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! + // continue; + + } + + } + + return inside; + + } + + var isClockWise = ShapeUtils.isClockWise; + + var subPaths = this.subPaths; + if ( subPaths.length === 0 ) return []; + + if ( noHoles === true ) return toShapesNoHoles( subPaths ); + + + var solid, tmpPath, tmpShape, shapes = []; + + if ( subPaths.length === 1 ) { + + tmpPath = subPaths[ 0 ]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push( tmpShape ); + return shapes; + + } + + var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); + holesFirst = isCCW ? ! holesFirst : holesFirst; + + // console.log("Holes first", holesFirst); + + var betterShapeHoles = []; + var newShapes = []; + var newShapeHoles = []; + var mainIdx = 0; + var tmpPoints; + + newShapes[ mainIdx ] = undefined; + newShapeHoles[ mainIdx ] = []; + + for ( var i = 0, l = subPaths.length; i < l; i ++ ) { + + tmpPath = subPaths[ i ]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise( tmpPoints ); + solid = isCCW ? ! solid : solid; + + if ( solid ) { + + if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; + + newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; + newShapes[ mainIdx ].s.curves = tmpPath.curves; + + if ( holesFirst ) mainIdx ++; + newShapeHoles[ mainIdx ] = []; + + //console.log('cw', i); + + } else { + + newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + + //console.log('ccw', i); + + } + + } + + // only Holes? -> probably all Shapes with wrong orientation + if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); + + + if ( newShapes.length > 1 ) { + + var ambiguous = false; + var toChange = []; + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + betterShapeHoles[ sIdx ] = []; + + } + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + var sho = newShapeHoles[ sIdx ]; + + for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { + + var ho = sho[ hIdx ]; + var hole_unassigned = true; + + for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + + if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + + if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); + if ( hole_unassigned ) { + + hole_unassigned = false; + betterShapeHoles[ s2Idx ].push( ho ); + + } else { + + ambiguous = true; + + } + + } + + } + if ( hole_unassigned ) { + + betterShapeHoles[ sIdx ].push( ho ); + + } + + } + + } + // console.log("ambiguous: ", ambiguous); + if ( toChange.length > 0 ) { + + // console.log("to change: ", toChange); + if ( ! ambiguous ) newShapeHoles = betterShapeHoles; + + } + + } + + var tmpHoles; + + for ( var i = 0, il = newShapes.length; i < il; i ++ ) { + + tmpShape = newShapes[ i ].s; + shapes.push( tmpShape ); + tmpHoles = newShapeHoles[ i ]; + + for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + + tmpShape.holes.push( tmpHoles[ j ].h ); + + } + + } + + //console.log("shape", shapes); + + return shapes; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author mrdoob / http://mrdoob.com/ + */ + + + function Font( data ) { + + this.type = 'Font'; + + this.data = data; + + } + + Object.assign( Font.prototype, { + + isFont: true, + + generateShapes: function ( text, size ) { + + if ( size === undefined ) size = 100; + + var shapes = []; + var paths = createPaths( text, size, this.data ); + + for ( var p = 0, pl = paths.length; p < pl; p ++ ) { + + Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); + + } + + return shapes; + + } + + } ); + + function createPaths( text, size, data ) { + + var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 + var scale = size / data.resolution; + var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; + + var paths = []; + + var offsetX = 0, offsetY = 0; + + for ( var i = 0; i < chars.length; i ++ ) { + + var char = chars[ i ]; + + if ( char === '\n' ) { + + offsetX = 0; + offsetY -= line_height; + + } else { + + var ret = createPath( char, scale, offsetX, offsetY, data ); + offsetX += ret.offsetX; + paths.push( ret.path ); + + } + + } + + return paths; + + } + + function createPath( char, scale, offsetX, offsetY, data ) { + + var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; + + if ( ! glyph ) return; + + var path = new ShapePath(); + + var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; + + if ( glyph.o ) { + + var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); + + for ( var i = 0, l = outline.length; i < l; ) { + + var action = outline[ i ++ ]; + + switch ( action ) { + + case 'm': // moveTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.moveTo( x, y ); + + break; + + case 'l': // lineTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.lineTo( x, y ); + + break; + + case 'q': // quadraticCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + + path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); + + break; + + case 'b': // bezierCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + cpx2 = outline[ i ++ ] * scale + offsetX; + cpy2 = outline[ i ++ ] * scale + offsetY; + + path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); + + break; + + } + + } + + } + + return { offsetX: glyph.ha * scale, path: path }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function FontLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FontLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json; + + try { + + json = JSON.parse( text ); + + } catch ( e ) { + + console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); + json = JSON.parse( text.substring( 65, text.length - 2 ) ); + + } + + var font = scope.parse( json ); + + if ( onLoad ) onLoad( font ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + return new Font( json ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Loader() {} + + Loader.Handlers = { + + handlers: [], + + add: function ( regex, loader ) { + + this.handlers.push( regex, loader ); + + }, + + get: function ( file ) { + + var handlers = this.handlers; + + for ( var i = 0, l = handlers.length; i < l; i += 2 ) { + + var regex = handlers[ i ]; + var loader = handlers[ i + 1 ]; + + if ( regex.test( file ) ) { + + return loader; + + } + + } + + return null; + + } + + }; + + Object.assign( Loader.prototype, { + + crossOrigin: 'anonymous', + + onLoadStart: function () {}, + + onLoadProgress: function () {}, + + onLoadComplete: function () {}, + + initMaterials: function ( materials, texturePath, crossOrigin ) { + + var array = []; + + for ( var i = 0; i < materials.length; ++ i ) { + + array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); + + } + + return array; + + }, + + createMaterial: ( function () { + + var BlendingMode = { + NoBlending: NoBlending, + NormalBlending: NormalBlending, + AdditiveBlending: AdditiveBlending, + SubtractiveBlending: SubtractiveBlending, + MultiplyBlending: MultiplyBlending, + CustomBlending: CustomBlending + }; + + var color = new Color(); + var textureLoader = new TextureLoader(); + var materialLoader = new MaterialLoader(); + + return function createMaterial( m, texturePath, crossOrigin ) { + + // convert from old material format + + var textures = {}; + + function loadTexture( path, repeat, offset, wrap, anisotropy ) { + + var fullPath = texturePath + path; + var loader = Loader.Handlers.get( fullPath ); + + var texture; + + if ( loader !== null ) { + + texture = loader.load( fullPath ); + + } else { + + textureLoader.setCrossOrigin( crossOrigin ); + texture = textureLoader.load( fullPath ); + + } + + if ( repeat !== undefined ) { + + texture.repeat.fromArray( repeat ); + + if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; + if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; + + } + + if ( offset !== undefined ) { + + texture.offset.fromArray( offset ); + + } + + if ( wrap !== undefined ) { + + if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; + if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; + + if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; + if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; + + } + + if ( anisotropy !== undefined ) { + + texture.anisotropy = anisotropy; + + } + + var uuid = _Math.generateUUID(); + + textures[ uuid ] = texture; + + return uuid; + + } + + // + + var json = { + uuid: _Math.generateUUID(), + type: 'MeshLambertMaterial' + }; + + for ( var name in m ) { + + var value = m[ name ]; + + switch ( name ) { + + case 'DbgColor': + case 'DbgIndex': + case 'opticalDensity': + case 'illumination': + break; + case 'DbgName': + json.name = value; + break; + case 'blending': + json.blending = BlendingMode[ value ]; + break; + case 'colorAmbient': + case 'mapAmbient': + console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); + break; + case 'colorDiffuse': + json.color = color.fromArray( value ).getHex(); + break; + case 'colorSpecular': + json.specular = color.fromArray( value ).getHex(); + break; + case 'colorEmissive': + json.emissive = color.fromArray( value ).getHex(); + break; + case 'specularCoef': + json.shininess = value; + break; + case 'shading': + if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; + if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; + if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; + break; + case 'mapDiffuse': + json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); + break; + case 'mapDiffuseRepeat': + case 'mapDiffuseOffset': + case 'mapDiffuseWrap': + case 'mapDiffuseAnisotropy': + break; + case 'mapEmissive': + json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); + break; + case 'mapEmissiveRepeat': + case 'mapEmissiveOffset': + case 'mapEmissiveWrap': + case 'mapEmissiveAnisotropy': + break; + case 'mapLight': + json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); + break; + case 'mapLightRepeat': + case 'mapLightOffset': + case 'mapLightWrap': + case 'mapLightAnisotropy': + break; + case 'mapAO': + json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); + break; + case 'mapAORepeat': + case 'mapAOOffset': + case 'mapAOWrap': + case 'mapAOAnisotropy': + break; + case 'mapBump': + json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); + break; + case 'mapBumpScale': + json.bumpScale = value; + break; + case 'mapBumpRepeat': + case 'mapBumpOffset': + case 'mapBumpWrap': + case 'mapBumpAnisotropy': + break; + case 'mapNormal': + json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); + break; + case 'mapNormalFactor': + json.normalScale = value; + break; + case 'mapNormalRepeat': + case 'mapNormalOffset': + case 'mapNormalWrap': + case 'mapNormalAnisotropy': + break; + case 'mapSpecular': + json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); + break; + case 'mapSpecularRepeat': + case 'mapSpecularOffset': + case 'mapSpecularWrap': + case 'mapSpecularAnisotropy': + break; + case 'mapMetalness': + json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); + break; + case 'mapMetalnessRepeat': + case 'mapMetalnessOffset': + case 'mapMetalnessWrap': + case 'mapMetalnessAnisotropy': + break; + case 'mapRoughness': + json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); + break; + case 'mapRoughnessRepeat': + case 'mapRoughnessOffset': + case 'mapRoughnessWrap': + case 'mapRoughnessAnisotropy': + break; + case 'mapAlpha': + json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); + break; + case 'mapAlphaRepeat': + case 'mapAlphaOffset': + case 'mapAlphaWrap': + case 'mapAlphaAnisotropy': + break; + case 'flipSided': + json.side = BackSide; + break; + case 'doubleSided': + json.side = DoubleSide; + break; + case 'transparency': + console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); + json.opacity = value; + break; + case 'depthTest': + case 'depthWrite': + case 'colorWrite': + case 'opacity': + case 'reflectivity': + case 'transparent': + case 'visible': + case 'wireframe': + json[ name ] = value; + break; + case 'vertexColors': + if ( value === true ) json.vertexColors = VertexColors; + if ( value === 'face' ) json.vertexColors = FaceColors; + break; + default: + console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); + break; + + } + + } + + if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; + if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; + + if ( json.opacity < 1 ) json.transparent = true; + + materialLoader.setTextures( textures ); + + return materialLoader.parse( json ); + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var context; + + var AudioContext = { + + getContext: function () { + + if ( context === undefined ) { + + context = new ( window.AudioContext || window.webkitAudioContext )(); + + } + + return context; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + /** + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function AudioLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( AudioLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + // Create a copy of the buffer. The `decodeAudioData` method + // detaches the buffer when complete, preventing reuse. + var bufferCopy = buffer.slice( 0 ); + + var context = AudioContext.getContext(); + context.decodeAudioData( bufferCopy, function ( audioBuffer ) { + + onLoad( audioBuffer ); + + } ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function StereoCamera() { + + this.type = 'StereoCamera'; + + this.aspect = 1; + + this.eyeSep = 0.064; + + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable( 1 ); + this.cameraL.matrixAutoUpdate = false; + + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable( 2 ); + this.cameraR.matrixAutoUpdate = false; + + } + + Object.assign( StereoCamera.prototype, { + + update: ( function () { + + var instance, focus, fov, aspect, near, far, zoom, eyeSep; + + var eyeRight = new Matrix4(); + var eyeLeft = new Matrix4(); + + return function update( camera ) { + + var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || + aspect !== camera.aspect * this.aspect || near !== camera.near || + far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; + + if ( needsUpdate ) { + + instance = this; + focus = camera.focus; + fov = camera.fov; + aspect = camera.aspect * this.aspect; + near = camera.near; + far = camera.far; + zoom = camera.zoom; + + // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + var projectionMatrix = camera.projectionMatrix.clone(); + eyeSep = this.eyeSep / 2; + var eyeSepOnProjection = eyeSep * near / focus; + var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; + var xmin, xmax; + + // translate xOffset + + eyeLeft.elements[ 12 ] = - eyeSep; + eyeRight.elements[ 12 ] = eyeSep; + + // for left eye + + xmin = - ymax * aspect + eyeSepOnProjection; + xmax = ymax * aspect + eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraL.projectionMatrix.copy( projectionMatrix ); + + // for right eye + + xmin = - ymax * aspect - eyeSepOnProjection; + xmax = ymax * aspect - eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraR.projectionMatrix.copy( projectionMatrix ); + + } + + this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); + this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); + + }; + + } )() + + } ); + + /** + * Camera for rendering cube maps + * - renders scene into axis-aligned cube + * + * @author alteredq / http://alteredqualia.com/ + */ + + function CubeCamera( near, far, cubeResolution, options ) { + + Object3D.call( this ); + + this.type = 'CubeCamera'; + + var fov = 90, aspect = 1; + + var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); + cameraPX.up.set( 0, - 1, 0 ); + cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); + this.add( cameraPX ); + + var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); + cameraNX.up.set( 0, - 1, 0 ); + cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); + this.add( cameraNX ); + + var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); + cameraPY.up.set( 0, 0, 1 ); + cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); + this.add( cameraPY ); + + var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); + cameraNY.up.set( 0, 0, - 1 ); + cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); + this.add( cameraNY ); + + var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraPZ.up.set( 0, - 1, 0 ); + cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); + this.add( cameraPZ ); + + var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraNZ.up.set( 0, - 1, 0 ); + cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); + this.add( cameraNZ ); + + options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; + + this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); + this.renderTarget.texture.name = "CubeCamera"; + + this.update = function ( renderer, scene ) { + + if ( this.parent === null ) this.updateMatrixWorld(); + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + var generateMipmaps = renderTarget.texture.generateMipmaps; + + renderTarget.texture.generateMipmaps = false; + + renderer.setRenderTarget( renderTarget, 0 ); + renderer.render( scene, cameraPX ); + + renderer.setRenderTarget( renderTarget, 1 ); + renderer.render( scene, cameraNX ); + + renderer.setRenderTarget( renderTarget, 2 ); + renderer.render( scene, cameraPY ); + + renderer.setRenderTarget( renderTarget, 3 ); + renderer.render( scene, cameraNY ); + + renderer.setRenderTarget( renderTarget, 4 ); + renderer.render( scene, cameraPZ ); + + renderTarget.texture.generateMipmaps = generateMipmaps; + + renderer.setRenderTarget( renderTarget, 5 ); + renderer.render( scene, cameraNZ ); + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + this.clear = function ( renderer, color, depth, stencil ) { + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + + for ( var i = 0; i < 6; i ++ ) { + + renderer.setRenderTarget( renderTarget, i ); + + renderer.clear( color, depth, stencil ); + + } + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + } + + CubeCamera.prototype = Object.create( Object3D.prototype ); + CubeCamera.prototype.constructor = CubeCamera; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Clock( autoStart ) { + + this.autoStart = ( autoStart !== undefined ) ? autoStart : true; + + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + + this.running = false; + + } + + Object.assign( Clock.prototype, { + + start: function () { + + this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 + + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + + }, + + stop: function () { + + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + + }, + + getElapsedTime: function () { + + this.getDelta(); + return this.elapsedTime; + + }, + + getDelta: function () { + + var diff = 0; + + if ( this.autoStart && ! this.running ) { + + this.start(); + return 0; + + } + + if ( this.running ) { + + var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); + + diff = ( newTime - this.oldTime ) / 1000; + this.oldTime = newTime; + + this.elapsedTime += diff; + + } + + return diff; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioListener() { + + Object3D.call( this ); + + this.type = 'AudioListener'; + + this.context = AudioContext.getContext(); + + this.gain = this.context.createGain(); + this.gain.connect( this.context.destination ); + + this.filter = null; + + this.timeDelta = 0; + + } + + AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: AudioListener, + + getInput: function () { + + return this.gain; + + }, + + removeFilter: function ( ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + this.gain.connect( this.context.destination ); + this.filter = null; + + } + + return this; + + }, + + getFilter: function () { + + return this.filter; + + }, + + setFilter: function ( value ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + + } else { + + this.gain.disconnect( this.context.destination ); + + } + + this.filter = value; + this.gain.connect( this.filter ); + this.filter.connect( this.context.destination ); + + return this; + + }, + + getMasterVolume: function () { + + return this.gain.gain.value; + + }, + + setMasterVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + var scale = new Vector3(); + + var orientation = new Vector3(); + var clock = new Clock(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + var listener = this.context.listener; + var up = this.up; + + this.timeDelta = clock.getDelta(); + + this.matrixWorld.decompose( position, quaternion, scale ); + + orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); + + if ( listener.positionX ) { + + // code path for Chrome (see #14393) + + var endTime = this.context.currentTime + this.timeDelta; + + listener.positionX.linearRampToValueAtTime( position.x, endTime ); + listener.positionY.linearRampToValueAtTime( position.y, endTime ); + listener.positionZ.linearRampToValueAtTime( position.z, endTime ); + listener.forwardX.linearRampToValueAtTime( orientation.x, endTime ); + listener.forwardY.linearRampToValueAtTime( orientation.y, endTime ); + listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime ); + listener.upX.linearRampToValueAtTime( up.x, endTime ); + listener.upY.linearRampToValueAtTime( up.y, endTime ); + listener.upZ.linearRampToValueAtTime( up.z, endTime ); + + } else { + + listener.setPosition( position.x, position.y, position.z ); + listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); + + } + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function Audio( listener ) { + + Object3D.call( this ); + + this.type = 'Audio'; + + this.listener = listener; + this.context = listener.context; + + this.gain = this.context.createGain(); + this.gain.connect( listener.getInput() ); + + this.autoplay = false; + + this.buffer = null; + this.detune = 0; + this.loop = false; + this.startTime = 0; + this.offset = 0; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.sourceType = 'empty'; + + this.filters = []; + + } + + Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Audio, + + getOutput: function () { + + return this.gain; + + }, + + setNodeSource: function ( audioNode ) { + + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + + return this; + + }, + + setMediaElementSource: function ( mediaElement ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaNode'; + this.source = this.context.createMediaElementSource( mediaElement ); + this.connect(); + + return this; + + }, + + setBuffer: function ( audioBuffer ) { + + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + + if ( this.autoplay ) this.play(); + + return this; + + }, + + play: function () { + + if ( this.isPlaying === true ) { + + console.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + var source = this.context.createBufferSource(); + + source.buffer = this.buffer; + source.loop = this.loop; + source.onended = this.onEnded.bind( this ); + this.startTime = this.context.currentTime; + source.start( this.startTime, this.offset ); + + this.isPlaying = true; + + this.source = source; + + this.setDetune( this.detune ); + this.setPlaybackRate( this.playbackRate ); + + return this.connect(); + + }, + + pause: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + if ( this.isPlaying === true ) { + + this.source.stop(); + this.source.onended = null; + this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; + this.isPlaying = false; + + } + + return this; + + }, + + stop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.source.stop(); + this.source.onended = null; + this.offset = 0; + this.isPlaying = false; + + return this; + + }, + + connect: function () { + + if ( this.filters.length > 0 ) { + + this.source.connect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].connect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + + } else { + + this.source.connect( this.getOutput() ); + + } + + return this; + + }, + + disconnect: function () { + + if ( this.filters.length > 0 ) { + + this.source.disconnect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + + } else { + + this.source.disconnect( this.getOutput() ); + + } + + return this; + + }, + + getFilters: function () { + + return this.filters; + + }, + + setFilters: function ( value ) { + + if ( ! value ) value = []; + + if ( this.isPlaying === true ) { + + this.disconnect(); + this.filters = value; + this.connect(); + + } else { + + this.filters = value; + + } + + return this; + + }, + + setDetune: function ( value ) { + + this.detune = value; + + if ( this.source.detune === undefined ) return; // only set detune when available + + if ( this.isPlaying === true ) { + + this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getDetune: function () { + + return this.detune; + + }, + + getFilter: function () { + + return this.getFilters()[ 0 ]; + + }, + + setFilter: function ( filter ) { + + return this.setFilters( filter ? [ filter ] : [] ); + + }, + + setPlaybackRate: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.playbackRate = value; + + if ( this.isPlaying === true ) { + + this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getPlaybackRate: function () { + + return this.playbackRate; + + }, + + onEnded: function () { + + this.isPlaying = false; + + }, + + getLoop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return false; + + } + + return this.loop; + + }, + + setLoop: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.loop = value; + + if ( this.isPlaying === true ) { + + this.source.loop = this.loop; + + } + + return this; + + }, + + getVolume: function () { + + return this.gain.gain.value; + + }, + + setVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function PositionalAudio( listener ) { + + Audio.call( this, listener ); + + this.panner = this.context.createPanner(); + this.panner.connect( this.gain ); + + } + + PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { + + constructor: PositionalAudio, + + getOutput: function () { + + return this.panner; + + }, + + getRefDistance: function () { + + return this.panner.refDistance; + + }, + + setRefDistance: function ( value ) { + + this.panner.refDistance = value; + + return this; + + }, + + getRolloffFactor: function () { + + return this.panner.rolloffFactor; + + }, + + setRolloffFactor: function ( value ) { + + this.panner.rolloffFactor = value; + + return this; + + }, + + getDistanceModel: function () { + + return this.panner.distanceModel; + + }, + + setDistanceModel: function ( value ) { + + this.panner.distanceModel = value; + + return this; + + }, + + getMaxDistance: function () { + + return this.panner.maxDistance; + + }, + + setMaxDistance: function ( value ) { + + this.panner.maxDistance = value; + + return this; + + }, + + setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { + + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + + return this; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + var scale = new Vector3(); + + var orientation = new Vector3(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + if ( this.hasPlaybackControl === true && this.isPlaying === false ) return; + + this.matrixWorld.decompose( position, quaternion, scale ); + + orientation.set( 0, 0, 1 ).applyQuaternion( quaternion ); + + var panner = this.panner; + + if ( panner.positionX ) { + + // code path for Chrome and Firefox (see #14393) + + var endTime = this.context.currentTime + this.listener.timeDelta; + + panner.positionX.linearRampToValueAtTime( position.x, endTime ); + panner.positionY.linearRampToValueAtTime( position.y, endTime ); + panner.positionZ.linearRampToValueAtTime( position.z, endTime ); + panner.orientationX.linearRampToValueAtTime( orientation.x, endTime ); + panner.orientationY.linearRampToValueAtTime( orientation.y, endTime ); + panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime ); + + } else { + + panner.setPosition( position.x, position.y, position.z ); + panner.setOrientation( orientation.x, orientation.y, orientation.z ); + + } + + }; + + } )() + + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioAnalyser( audio, fftSize ) { + + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; + + this.data = new Uint8Array( this.analyser.frequencyBinCount ); + + audio.getOutput().connect( this.analyser ); + + } + + Object.assign( AudioAnalyser.prototype, { + + getFrequencyData: function () { + + this.analyser.getByteFrequencyData( this.data ); + + return this.data; + + }, + + getAverageFrequency: function () { + + var value = 0, data = this.getFrequencyData(); + + for ( var i = 0; i < data.length; i ++ ) { + + value += data[ i ]; + + } + + return value / data.length; + + } + + } ); + + /** + * + * Buffered scene graph property that allows weighted accumulation. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function PropertyMixer( binding, typeName, valueSize ) { + + this.binding = binding; + this.valueSize = valueSize; + + var bufferType = Float64Array, + mixFunction; + + switch ( typeName ) { + + case 'quaternion': + mixFunction = this._slerp; + break; + + case 'string': + case 'bool': + bufferType = Array; + mixFunction = this._select; + break; + + default: + mixFunction = this._lerp; + + } + + this.buffer = new bufferType( valueSize * 4 ); + // layout: [ incoming | accu0 | accu1 | orig ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + + this._mixBufferRegion = mixFunction; + + this.cumulativeWeight = 0; + + this.useCount = 0; + this.referenceCount = 0; + + } + + Object.assign( PropertyMixer.prototype, { + + // accumulate data in the 'incoming' region into 'accu' + accumulate: function ( accuIndex, weight ) { + + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + + var buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride, + + currentWeight = this.cumulativeWeight; + + if ( currentWeight === 0 ) { + + // accuN := incoming * weight + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ offset + i ] = buffer[ i ]; + + } + + currentWeight = weight; + + } else { + + // accuN := accuN + incoming * weight + + currentWeight += weight; + var mix = weight / currentWeight; + this._mixBufferRegion( buffer, offset, 0, mix, stride ); + + } + + this.cumulativeWeight = currentWeight; + + }, + + // apply the state of 'accu' to the binding when accus differ + apply: function ( accuIndex ) { + + var stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + + weight = this.cumulativeWeight, + + binding = this.binding; + + this.cumulativeWeight = 0; + + if ( weight < 1 ) { + + // accuN := accuN + original * ( 1 - cumulativeWeight ) + + var originalValueOffset = stride * 3; + + this._mixBufferRegion( + buffer, offset, originalValueOffset, 1 - weight, stride ); + + } + + for ( var i = stride, e = stride + stride; i !== e; ++ i ) { + + if ( buffer[ i ] !== buffer[ i + stride ] ) { + + // value has changed -> update scene graph + + binding.setValue( buffer, offset ); + break; + + } + + } + + }, + + // remember the state of the bound property and copy it to both accus + saveOriginalState: function () { + + var binding = this.binding; + + var buffer = this.buffer, + stride = this.valueSize, + + originalValueOffset = stride * 3; + + binding.getValue( buffer, originalValueOffset ); + + // accu[0..1] := orig -- initially detect changes against the original + for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { + + buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + + } + + this.cumulativeWeight = 0; + + }, + + // apply the state previously taken via 'saveOriginalState' to the binding + restoreOriginalState: function () { + + var originalValueOffset = this.valueSize * 3; + this.binding.setValue( this.buffer, originalValueOffset ); + + }, + + + // mix functions + + _select: function ( buffer, dstOffset, srcOffset, t, stride ) { + + if ( t >= 0.5 ) { + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + + } + + } + + }, + + _slerp: function ( buffer, dstOffset, srcOffset, t ) { + + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + + }, + + _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { + + var s = 1 - t; + + for ( var i = 0; i !== stride; ++ i ) { + + var j = dstOffset + i; + + buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + + } + + } + + } ); + + /** + * + * A reference to a real property in the scene graph. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + // Characters [].:/ are reserved for track binding syntax. + var RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; + + function Composite( targetGroup, path, optionalParsedPath ) { + + var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_( path, parsedPath ); + + } + + Object.assign( Composite.prototype, { + + getValue: function ( array, offset ) { + + this.bind(); // bind all binding + + var firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[ firstValidIndex ]; + + // and only call .getValue on the first + if ( binding !== undefined ) binding.getValue( array, offset ); + + }, + + setValue: function ( array, offset ) { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].setValue( array, offset ); + + } + + }, + + bind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].bind(); + + } + + }, + + unbind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].unbind(); + + } + + } + + } ); + + + function PropertyBinding( rootNode, path, parsedPath ) { + + this.path = path; + this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + + this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; + + this.rootNode = rootNode; + + } + + Object.assign( PropertyBinding, { + + Composite: Composite, + + create: function ( root, path, parsedPath ) { + + if ( ! ( root && root.isAnimationObjectGroup ) ) { + + return new PropertyBinding( root, path, parsedPath ); + + } else { + + return new PropertyBinding.Composite( root, path, parsedPath ); + + } + + }, + + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + sanitizeNodeName: ( function () { + + var reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' ); + + return function sanitizeNodeName( name ) { + + return name.replace( /\s/g, '_' ).replace( reservedRe, '' ); + + }; + + }() ), + + parseTrackName: function () { + + // Attempts to allow node names from any language. ES5's `\w` regexp matches + // only latin characters, and the unicode \p{L} is not yet supported. So + // instead, we exclude reserved characters and match everything else. + var wordChar = '[^' + RESERVED_CHARS_RE + ']'; + var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; + + // Parent directories, delimited by '/' or ':'. Currently unused, but must + // be matched to parse the rest of the track name. + var directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', wordChar ); + + // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. + var nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot ); + + // Object on target node, and accessor. May not contain reserved + // characters. Accessor may contain any character except closing bracket. + var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', wordChar ); + + // Property and accessor. May not contain reserved characters. Accessor may + // contain any non-bracket characters. + var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', wordChar ); + + var trackRe = new RegExp( '' + + '^' + + directoryRe + + nodeRe + + objectRe + + propertyRe + + '$' + ); + + var supportedObjectNames = [ 'material', 'materials', 'bones' ]; + + return function parseTrackName( trackName ) { + + var matches = trackRe.exec( trackName ); + + if ( ! matches ) { + + throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + + } + + var results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[ 2 ], + objectName: matches[ 3 ], + objectIndex: matches[ 4 ], + propertyName: matches[ 5 ], // required + propertyIndex: matches[ 6 ] + }; + + var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + + if ( lastDot !== undefined && lastDot !== - 1 ) { + + var objectName = results.nodeName.substring( lastDot + 1 ); + + // Object names must be checked against a whitelist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { + + results.nodeName = results.nodeName.substring( 0, lastDot ); + results.objectName = objectName; + + } + + } + + if ( results.propertyName === null || results.propertyName.length === 0 ) { + + throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + + } + + return results; + + }; + + }(), + + findNode: function ( root, nodeName ) { + + if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { + + return root; + + } + + // search into skeleton bones. + if ( root.skeleton ) { + + var bone = root.skeleton.getBoneByName( nodeName ); + + if ( bone !== undefined ) { + + return bone; + + } + + } + + // search into node subtree. + if ( root.children ) { + + var searchNodeSubtree = function ( children ) { + + for ( var i = 0; i < children.length; i ++ ) { + + var childNode = children[ i ]; + + if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + + return childNode; + + } + + var result = searchNodeSubtree( childNode.children ); + + if ( result ) return result; + + } + + return null; + + }; + + var subTreeNode = searchNodeSubtree( root.children ); + + if ( subTreeNode ) { + + return subTreeNode; + + } + + } + + return null; + + } + + } ); + + Object.assign( PropertyBinding.prototype, { // prototype, continued + + // these are used to "bind" a nonexistent property + _getValue_unavailable: function () {}, + _setValue_unavailable: function () {}, + + BindingType: { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 + }, + + Versioning: { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 + }, + + GetterByBindingType: [ + + function getValue_direct( buffer, offset ) { + + buffer[ offset ] = this.node[ this.propertyName ]; + + }, + + function getValue_array( buffer, offset ) { + + var source = this.resolvedProperty; + + for ( var i = 0, n = source.length; i !== n; ++ i ) { + + buffer[ offset ++ ] = source[ i ]; + + } + + }, + + function getValue_arrayElement( buffer, offset ) { + + buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + + }, + + function getValue_toArray( buffer, offset ) { + + this.resolvedProperty.toArray( buffer, offset ); + + } + + ], + + SetterByBindingTypeAndVersioning: [ + + [ + // Direct + + function setValue_direct( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + + }, + + function setValue_direct_setNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // EntireArray + + function setValue_array( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + }, + + function setValue_array_setNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.needsUpdate = true; + + }, + + function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // ArrayElement + + function setValue_arrayElement( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + + }, + + function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // HasToFromArray + + function setValue_fromArray( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + + }, + + function setValue_fromArray_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.needsUpdate = true; + + }, + + function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ] + + ], + + getValue: function getValue_unbound( targetArray, offset ) { + + this.bind(); + this.getValue( targetArray, offset ); + + // Note: This class uses a State pattern on a per-method basis: + // 'bind' sets 'this.getValue' / 'setValue' and shadows the + // prototype version of these methods with one that represents + // the bound state. When the property is not found, the methods + // become no-ops. + + }, + + setValue: function getValue_unbound( sourceArray, offset ) { + + this.bind(); + this.setValue( sourceArray, offset ); + + }, + + // create getter / setter pair for a property in the scene graph + bind: function () { + + var targetObject = this.node, + parsedPath = this.parsedPath, + + objectName = parsedPath.objectName, + propertyName = parsedPath.propertyName, + propertyIndex = parsedPath.propertyIndex; + + if ( ! targetObject ) { + + targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; + + this.node = targetObject; + + } + + // set fail state so we can just 'return' on error + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + + // ensure there is a value node + if ( ! targetObject ) { + + console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); + return; + + } + + if ( objectName ) { + + var objectIndex = parsedPath.objectIndex; + + // special cases were we need to reach deeper into the hierarchy to get the face materials.... + switch ( objectName ) { + + case 'materials': + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.materials ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + return; + + } + + targetObject = targetObject.material.materials; + + break; + + case 'bones': + + if ( ! targetObject.skeleton ) { + + console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + return; + + } + + // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + targetObject = targetObject.skeleton.bones; + + // support resolving morphTarget names into indices. + for ( var i = 0; i < targetObject.length; i ++ ) { + + if ( targetObject[ i ].name === objectIndex ) { + + objectIndex = i; + break; + + } + + } + + break; + + default: + + if ( targetObject[ objectName ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + return; + + } + + targetObject = targetObject[ objectName ]; + + } + + + if ( objectIndex !== undefined ) { + + if ( targetObject[ objectIndex ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + return; + + } + + targetObject = targetObject[ objectIndex ]; + + } + + } + + // resolve property + var nodeProperty = targetObject[ propertyName ]; + + if ( nodeProperty === undefined ) { + + var nodeName = parsedPath.nodeName; + + console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject ); + return; + + } + + // determine versioning scheme + var versioning = this.Versioning.None; + + this.targetObject = targetObject; + + if ( targetObject.needsUpdate !== undefined ) { // material + + versioning = this.Versioning.NeedsUpdate; + + } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform + + versioning = this.Versioning.MatrixWorldNeedsUpdate; + + } + + // determine how the property gets bound + var bindingType = this.BindingType.Direct; + + if ( propertyIndex !== undefined ) { + + // access a sub element of the property array (only primitives are supported right now) + + if ( propertyName === "morphTargetInfluences" ) { + + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + + // support resolving morphTarget names into indices. + if ( ! targetObject.geometry ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + return; + + } + + if ( targetObject.geometry.isBufferGeometry ) { + + if ( ! targetObject.geometry.morphAttributes ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { + + if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + + } else { + + if ( ! targetObject.geometry.morphTargets ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { + + if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + } + + } + + bindingType = this.BindingType.ArrayElement; + + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + + } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + + // must use copy for Object3D.Euler/Quaternion + + bindingType = this.BindingType.HasFromToArray; + + this.resolvedProperty = nodeProperty; + + } else if ( Array.isArray( nodeProperty ) ) { + + bindingType = this.BindingType.EntireArray; + + this.resolvedProperty = nodeProperty; + + } else { + + this.propertyName = propertyName; + + } + + // select getter / setter + this.getValue = this.GetterByBindingType[ bindingType ]; + this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + + }, + + unbind: function () { + + this.node = null; + + // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( PropertyBinding.prototype, { + + // initial state of these methods that calls 'bind' + _getValue_unbound: PropertyBinding.prototype.getValue, + _setValue_unbound: PropertyBinding.prototype.setValue, + + } ); + + /** + * + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * + * - Instead pass this object as 'root'. + * + * - You can also add and remove objects later when the mixer + * is running. + * + * Note: + * + * Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done + * on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the + * all objects in the group. + * + * - A single property can either be controlled through a + * target group or directly, but not both. + * + * @author tschw + */ + + function AnimationObjectGroup() { + + this.uuid = _Math.generateUUID(); + + // cached objects followed by the active ones + this._objects = Array.prototype.slice.call( arguments ); + + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + var indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + indices[ arguments[ i ].uuid ] = i; + + } + + this._paths = []; // inside: string + this._parsedPaths = []; // inside: { we don't care, here } + this._bindings = []; // inside: Array< PropertyBinding > + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + var scope = this; + + this.stats = { + + objects: { + get total() { + + return scope._objects.length; + + }, + get inUse() { + + return this.total - scope.nCachedObjects_; + + } + }, + get bindingsPerObject() { + + return scope._bindings.length; + + } + + }; + + } + + Object.assign( AnimationObjectGroup.prototype, { + + isAnimationObjectGroup: true, + + add: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length, + knownObject = undefined; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index === undefined ) { + + // unknown object -> add it to the ACTIVE region + + index = nObjects ++; + indicesByUUID[ uuid ] = index; + objects.push( object ); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + + } + + } else if ( index < nCachedObjects ) { + + knownObject = objects[ index ]; + + // move existing object to the ACTIVE region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ]; + + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + indicesByUUID[ uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = lastCached; + + if ( binding === undefined ) { + + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + + binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + + } + + bindingsForPath[ firstActiveIndex ] = binding; + + } + + } else if ( objects[ index ] !== knownObject ) { + + console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + + } // else the object is already where we want it to be + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + remove: function () { + + var objects = this._objects, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined && index >= nCachedObjects ) { + + // move existing object into the CACHED region + + var lastCachedIndex = nCachedObjects ++, + firstActiveObject = objects[ lastCachedIndex ]; + + indicesByUUID[ firstActiveObject.uuid ] = index; + objects[ index ] = firstActiveObject; + + indicesByUUID[ uuid ] = lastCachedIndex; + objects[ lastCachedIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + firstActive = bindingsForPath[ lastCachedIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = firstActive; + bindingsForPath[ lastCachedIndex ] = binding; + + } + + } + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // remove & forget + uncache: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined ) { + + delete indicesByUUID[ uuid ]; + + if ( index < nCachedObjects ) { + + // object is cached, shrink the CACHED region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ], + lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + // last cached object takes this object's place + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + // last object goes to the activated slot and pop + indicesByUUID[ lastObject.uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + last = bindingsForPath[ lastIndex ]; + + bindingsForPath[ index ] = lastCached; + bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath.pop(); + + } + + } else { + + // object is active, just swap with the last and pop + + var lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + indicesByUUID[ lastObject.uuid ] = index; + objects[ index ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ]; + + bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath.pop(); + + } + + } // cached or active + + } // if object is known + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // Internal interface used by befriended PropertyBinding.Composite: + + subscribe_: function ( path, parsedPath ) { + + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ], + bindings = this._bindings; + + if ( index !== undefined ) return bindings[ index ]; + + var paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array( nObjects ); + + index = bindings.length; + + indicesByPath[ path ] = index; + + paths.push( path ); + parsedPaths.push( parsedPath ); + bindings.push( bindingsForPath ); + + for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + + var object = objects[ i ]; + bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + + } + + return bindingsForPath; + + }, + + unsubscribe_: function ( path ) { + + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ]; + + if ( index !== undefined ) { + + var paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[ lastBindingsIndex ], + lastBindingsPath = path[ lastBindingsIndex ]; + + indicesByPath[ lastBindingsPath ] = index; + + bindings[ index ] = lastBindings; + bindings.pop(); + + parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths.pop(); + + paths[ index ] = paths[ lastBindingsIndex ]; + paths.pop(); + + } + + } + + } ); + + /** + * + * Action provided by AnimationMixer for scheduling clip playback on specific + * objects. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + * + */ + + function AnimationAction( mixer, clip, localRoot ) { + + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot || null; + + var tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array( nTracks ); + + var interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for ( var i = 0; i !== nTracks; ++ i ) { + + var interpolant = tracks[ i ].createInterpolant( null ); + interpolants[ i ] = interpolant; + interpolant.settings = interpolantSettings; + + } + + this._interpolantSettings = interpolantSettings; + + this._interpolants = interpolants; // bound by the mixer + + // inside: PropertyMixer (managed by the mixer) + this._propertyBindings = new Array( nTracks ); + + this._cacheIndex = null; // for the memory manager + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + + this.loop = LoopRepeat; + this._loopCount = - 1; + + // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + this._startTime = null; + + // scaled local time of the action + // gets clamped or wrapped to 0..clip.duration according to loop + this.time = 0; + + this.timeScale = 1; + this._effectiveTimeScale = 1; + + this.weight = 1; + this._effectiveWeight = 1; + + this.repetitions = Infinity; // no. of repetitions when looping + + this.paused = false; // true -> zero effective time scale + this.enabled = true; // false -> zero effective weight + + this.clampWhenFinished = false;// keep feeding the last frame? + + this.zeroSlopeAtStart = true;// for smooth interpolation w/o separate + this.zeroSlopeAtEnd = true;// clips for start, loop and end + + } + + Object.assign( AnimationAction.prototype, { + + // State & Scheduling + + play: function () { + + this._mixer._activateAction( this ); + + return this; + + }, + + stop: function () { + + this._mixer._deactivateAction( this ); + + return this.reset(); + + }, + + reset: function () { + + this.paused = false; + this.enabled = true; + + this.time = 0; // restart clip + this._loopCount = - 1;// forget previous loops + this._startTime = null;// forget scheduling + + return this.stopFading().stopWarping(); + + }, + + isRunning: function () { + + return this.enabled && ! this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction( this ); + + }, + + // return true when play has been called + isScheduled: function () { + + return this._mixer._isActiveAction( this ); + + }, + + startAt: function ( time ) { + + this._startTime = time; + + return this; + + }, + + setLoop: function ( mode, repetitions ) { + + this.loop = mode; + this.repetitions = repetitions; + + return this; + + }, + + // Weight + + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + setEffectiveWeight: function ( weight ) { + + this.weight = weight; + + // note: same logic as when updated at runtime + this._effectiveWeight = this.enabled ? weight : 0; + + return this.stopFading(); + + }, + + // return the weight considering fading and .enabled + getEffectiveWeight: function () { + + return this._effectiveWeight; + + }, + + fadeIn: function ( duration ) { + + return this._scheduleFading( duration, 0, 1 ); + + }, + + fadeOut: function ( duration ) { + + return this._scheduleFading( duration, 1, 0 ); + + }, + + crossFadeFrom: function ( fadeOutAction, duration, warp ) { + + fadeOutAction.fadeOut( duration ); + this.fadeIn( duration ); + + if ( warp ) { + + var fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + + fadeOutAction.warp( 1.0, startEndRatio, duration ); + this.warp( endStartRatio, 1.0, duration ); + + } + + return this; + + }, + + crossFadeTo: function ( fadeInAction, duration, warp ) { + + return fadeInAction.crossFadeFrom( this, duration, warp ); + + }, + + stopFading: function () { + + var weightInterpolant = this._weightInterpolant; + + if ( weightInterpolant !== null ) { + + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant( weightInterpolant ); + + } + + return this; + + }, + + // Time Scale Control + + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + setEffectiveTimeScale: function ( timeScale ) { + + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + + return this.stopWarping(); + + }, + + // return the time scale considering warping and .paused + getEffectiveTimeScale: function () { + + return this._effectiveTimeScale; + + }, + + setDuration: function ( duration ) { + + this.timeScale = this._clip.duration / duration; + + return this.stopWarping(); + + }, + + syncWith: function ( action ) { + + this.time = action.time; + this.timeScale = action.timeScale; + + return this.stopWarping(); + + }, + + halt: function ( duration ) { + + return this.warp( this._effectiveTimeScale, 0, duration ); + + }, + + warp: function ( startTimeScale, endTimeScale, duration ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._timeScaleInterpolant, + + timeScale = this.timeScale; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + times[ 1 ] = now + duration; + + values[ 0 ] = startTimeScale / timeScale; + values[ 1 ] = endTimeScale / timeScale; + + return this; + + }, + + stopWarping: function () { + + var timeScaleInterpolant = this._timeScaleInterpolant; + + if ( timeScaleInterpolant !== null ) { + + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + + } + + return this; + + }, + + // Object Accessors + + getMixer: function () { + + return this._mixer; + + }, + + getClip: function () { + + return this._clip; + + }, + + getRoot: function () { + + return this._localRoot || this._mixer._root; + + }, + + // Interna + + _update: function ( time, deltaTime, timeDirection, accuIndex ) { + + // called by the mixer + + if ( ! this.enabled ) { + + // call ._updateWeight() to update ._effectiveWeight + + this._updateWeight( time ); + return; + + } + + var startTime = this._startTime; + + if ( startTime !== null ) { + + // check for scheduled start of action + + var timeRunning = ( time - startTime ) * timeDirection; + if ( timeRunning < 0 || timeDirection === 0 ) { + + return; // yet to come / don't decide when delta = 0 + + } + + // start + + this._startTime = null; // unschedule + deltaTime = timeDirection * timeRunning; + + } + + // apply time scale and advance time + + deltaTime *= this._updateTimeScale( time ); + var clipTime = this._updateTime( deltaTime ); + + // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + var weight = this._updateWeight( time ); + + if ( weight > 0 ) { + + var interpolants = this._interpolants; + var propertyMixers = this._propertyBindings; + + for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulate( accuIndex, weight ); + + } + + } + + }, + + _updateWeight: function ( time ) { + + var weight = 0; + + if ( this.enabled ) { + + weight = this.weight; + var interpolant = this._weightInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + weight *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopFading(); + + if ( interpolantValue === 0 ) { + + // faded out, disable + this.enabled = false; + + } + + } + + } + + } + + this._effectiveWeight = weight; + return weight; + + }, + + _updateTimeScale: function ( time ) { + + var timeScale = 0; + + if ( ! this.paused ) { + + timeScale = this.timeScale; + + var interpolant = this._timeScaleInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + timeScale *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopWarping(); + + if ( timeScale === 0 ) { + + // motion has halted, pause + this.paused = true; + + } else { + + // warp done - apply final time scale + this.timeScale = timeScale; + + } + + } + + } + + } + + this._effectiveTimeScale = timeScale; + return timeScale; + + }, + + _updateTime: function ( deltaTime ) { + + var time = this.time + deltaTime; + var duration = this._clip.duration; + var loop = this.loop; + var loopCount = this._loopCount; + + var pingPong = ( loop === LoopPingPong ); + + if ( deltaTime === 0 ) { + + if ( loopCount === - 1 ) return time; + + return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; + + } + + if ( loop === LoopOnce ) { + + if ( loopCount === - 1 ) { + + // just started + + this._loopCount = 0; + this._setEndings( true, true, false ); + + } + + handle_stop: { + + if ( time >= duration ) { + + time = duration; + + } else if ( time < 0 ) { + + time = 0; + + } else break handle_stop; + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime < 0 ? - 1 : 1 + } ); + + } + + } else { // repetitive Repeat or PingPong + + if ( loopCount === - 1 ) { + + // just started + + if ( deltaTime >= 0 ) { + + loopCount = 0; + + this._setEndings( true, this.repetitions === 0, pingPong ); + + } else { + + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + + this._setEndings( this.repetitions === 0, true, pingPong ); + + } + + } + + if ( time >= duration || time < 0 ) { + + // wrap around + + var loopDelta = Math.floor( time / duration ); // signed + time -= duration * loopDelta; + + loopCount += Math.abs( loopDelta ); + + var pending = this.repetitions - loopCount; + + if ( pending <= 0 ) { + + // have to stop (switch state, clamp time, fire event) + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + time = deltaTime > 0 ? duration : 0; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime > 0 ? 1 : - 1 + } ); + + } else { + + // keep running + + if ( pending === 1 ) { + + // entering the last round + + var atStart = deltaTime < 0; + this._setEndings( atStart, ! atStart, pingPong ); + + } else { + + this._setEndings( false, false, pingPong ); + + } + + this._loopCount = loopCount; + + this._mixer.dispatchEvent( { + type: 'loop', action: this, loopDelta: loopDelta + } ); + + } + + } + + if ( pingPong && ( loopCount & 1 ) === 1 ) { + + // invert time for the "pong round" + + this.time = time; + return duration - time; + + } + + } + + this.time = time; + return time; + + }, + + _setEndings: function ( atStart, atEnd, pingPong ) { + + var settings = this._interpolantSettings; + + if ( pingPong ) { + + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + + } else { + + // assuming for LoopOnce atStart == atEnd == true + + if ( atStart ) { + + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingStart = WrapAroundEnding; + + } + + if ( atEnd ) { + + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingEnd = WrapAroundEnding; + + } + + } + + }, + + _scheduleFading: function ( duration, weightNow, weightThen ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._weightInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + values[ 0 ] = weightNow; + times[ 1 ] = now + duration; + values[ 1 ] = weightThen; + + return this; + + } + + } ); + + /** + * + * Player for AnimationClips. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function AnimationMixer( root ) { + + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + + this.time = 0; + + this.timeScale = 1.0; + + } + + AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: AnimationMixer, + + _bindAction: function ( action, prototypeAction ) { + + var root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName, + bindingsByName = bindingsByRoot[ rootUuid ]; + + if ( bindingsByName === undefined ) { + + bindingsByName = {}; + bindingsByRoot[ rootUuid ] = bindingsByName; + + } + + for ( var i = 0; i !== nTracks; ++ i ) { + + var track = tracks[ i ], + trackName = track.name, + binding = bindingsByName[ trackName ]; + + if ( binding !== undefined ) { + + bindings[ i ] = binding; + + } else { + + binding = bindings[ i ]; + + if ( binding !== undefined ) { + + // existing binding, make sure the cache knows + + if ( binding._cacheIndex === null ) { + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + } + + continue; + + } + + var path = prototypeAction && prototypeAction. + _propertyBindings[ i ].binding.parsedPath; + + binding = new PropertyMixer( + PropertyBinding.create( root, trackName, path ), + track.ValueTypeName, track.getValueSize() ); + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + bindings[ i ] = binding; + + } + + interpolants[ i ].resultBuffer = binding.buffer; + + } + + }, + + _activateAction: function ( action ) { + + if ( ! this._isActiveAction( action ) ) { + + if ( action._cacheIndex === null ) { + + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + + var rootUuid = ( action._localRoot || this._root ).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[ clipUuid ]; + + this._bindAction( action, + actionsForClip && actionsForClip.knownActions[ 0 ] ); + + this._addInactiveAction( action, clipUuid, rootUuid ); + + } + + var bindings = action._propertyBindings; + + // increment reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( binding.useCount ++ === 0 ) { + + this._lendBinding( binding ); + binding.saveOriginalState(); + + } + + } + + this._lendAction( action ); + + } + + }, + + _deactivateAction: function ( action ) { + + if ( this._isActiveAction( action ) ) { + + var bindings = action._propertyBindings; + + // decrement reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.useCount === 0 ) { + + binding.restoreOriginalState(); + this._takeBackBinding( binding ); + + } + + } + + this._takeBackAction( action ); + + } + + }, + + // Memory manager + + _initMemoryManager: function () { + + this._actions = []; // 'nActiveActions' followed by inactive ones + this._nActiveActions = 0; + + this._actionsByClip = {}; + // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + this._nActiveBindings = 0; + + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + + this._controlInterpolants = []; // same game as above + this._nActiveControlInterpolants = 0; + + var scope = this; + + this.stats = { + + actions: { + get total() { + + return scope._actions.length; + + }, + get inUse() { + + return scope._nActiveActions; + + } + }, + bindings: { + get total() { + + return scope._bindings.length; + + }, + get inUse() { + + return scope._nActiveBindings; + + } + }, + controlInterpolants: { + get total() { + + return scope._controlInterpolants.length; + + }, + get inUse() { + + return scope._nActiveControlInterpolants; + + } + } + + }; + + }, + + // Memory management for AnimationAction objects + + _isActiveAction: function ( action ) { + + var index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + + }, + + _addInactiveAction: function ( action, clipUuid, rootUuid ) { + + var actions = this._actions, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip === undefined ) { + + actionsForClip = { + + knownActions: [ action ], + actionByRoot: {} + + }; + + action._byClipCacheIndex = 0; + + actionsByClip[ clipUuid ] = actionsForClip; + + } else { + + var knownActions = actionsForClip.knownActions; + + action._byClipCacheIndex = knownActions.length; + knownActions.push( action ); + + } + + action._cacheIndex = actions.length; + actions.push( action ); + + actionsForClip.actionByRoot[ rootUuid ] = action; + + }, + + _removeInactiveAction: function ( action ) { + + var actions = this._actions, + lastInactiveAction = actions[ actions.length - 1 ], + cacheIndex = action._cacheIndex; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + action._cacheIndex = null; + + + var clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ], + knownActionsForClip = actionsForClip.knownActions, + + lastKnownAction = + knownActionsForClip[ knownActionsForClip.length - 1 ], + + byClipCacheIndex = action._byClipCacheIndex; + + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip.pop(); + + action._byClipCacheIndex = null; + + + var actionByRoot = actionsForClip.actionByRoot, + rootUuid = ( action._localRoot || this._root ).uuid; + + delete actionByRoot[ rootUuid ]; + + if ( knownActionsForClip.length === 0 ) { + + delete actionsByClip[ clipUuid ]; + + } + + this._removeInactiveBindingsForAction( action ); + + }, + + _removeInactiveBindingsForAction: function ( action ) { + + var bindings = action._propertyBindings; + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.referenceCount === 0 ) { + + this._removeInactiveBinding( binding ); + + } + + } + + }, + + _lendAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + + var actions = this._actions, + prevIndex = action._cacheIndex, + + lastActiveIndex = this._nActiveActions ++, + + firstInactiveAction = actions[ lastActiveIndex ]; + + action._cacheIndex = lastActiveIndex; + actions[ lastActiveIndex ] = action; + + firstInactiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = firstInactiveAction; + + }, + + _takeBackAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + + var actions = this._actions, + prevIndex = action._cacheIndex, + + firstInactiveIndex = -- this._nActiveActions, + + lastActiveAction = actions[ firstInactiveIndex ]; + + action._cacheIndex = firstInactiveIndex; + actions[ firstInactiveIndex ] = action; + + lastActiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = lastActiveAction; + + }, + + // Memory management for PropertyMixer objects + + _addInactiveBinding: function ( binding, rootUuid, trackName ) { + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + bindings = this._bindings; + + if ( bindingByName === undefined ) { + + bindingByName = {}; + bindingsByRoot[ rootUuid ] = bindingByName; + + } + + bindingByName[ trackName ] = binding; + + binding._cacheIndex = bindings.length; + bindings.push( binding ); + + }, + + _removeInactiveBinding: function ( binding ) { + + var bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + lastInactiveBinding = bindings[ bindings.length - 1 ], + cacheIndex = binding._cacheIndex; + + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[ cacheIndex ] = lastInactiveBinding; + bindings.pop(); + + delete bindingByName[ trackName ]; + + remove_empty_map: { + + for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars + + delete bindingsByRoot[ rootUuid ]; + + } + + }, + + _lendBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + lastActiveIndex = this._nActiveBindings ++, + + firstInactiveBinding = bindings[ lastActiveIndex ]; + + binding._cacheIndex = lastActiveIndex; + bindings[ lastActiveIndex ] = binding; + + firstInactiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = firstInactiveBinding; + + }, + + _takeBackBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + firstInactiveIndex = -- this._nActiveBindings, + + lastActiveBinding = bindings[ firstInactiveIndex ]; + + binding._cacheIndex = firstInactiveIndex; + bindings[ firstInactiveIndex ] = binding; + + lastActiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = lastActiveBinding; + + }, + + + // Memory management of Interpolants for weight and time scale + + _lendControlInterpolant: function () { + + var interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants ++, + interpolant = interpolants[ lastActiveIndex ]; + + if ( interpolant === undefined ) { + + interpolant = new LinearInterpolant( + new Float32Array( 2 ), new Float32Array( 2 ), + 1, this._controlInterpolantsResultBuffer ); + + interpolant.__cacheIndex = lastActiveIndex; + interpolants[ lastActiveIndex ] = interpolant; + + } + + return interpolant; + + }, + + _takeBackControlInterpolant: function ( interpolant ) { + + var interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + + firstInactiveIndex = -- this._nActiveControlInterpolants, + + lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[ firstInactiveIndex ] = interpolant; + + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[ prevIndex ] = lastActiveInterpolant; + + }, + + _controlInterpolantsResultBuffer: new Float32Array( 1 ), + + // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + clipAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject !== null ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ], + prototypeAction = null; + + if ( actionsForClip !== undefined ) { + + var existingAction = + actionsForClip.actionByRoot[ rootUuid ]; + + if ( existingAction !== undefined ) { + + return existingAction; + + } + + // we know the clip, so we don't have to parse all + // the bindings again but can just copy + prototypeAction = actionsForClip.knownActions[ 0 ]; + + // also, take the clip from the prototype action + if ( clipObject === null ) + clipObject = prototypeAction._clip; + + } + + // clip must be known when specified via string + if ( clipObject === null ) return null; + + // allocate all resources required to run it + var newAction = new AnimationAction( this, clipObject, optionalRoot ); + + this._bindAction( newAction, prototypeAction ); + + // and make the action known to the memory manager + this._addInactiveAction( newAction, clipUuid, rootUuid ); + + return newAction; + + }, + + // get an existing action + existingAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + return actionsForClip.actionByRoot[ rootUuid ] || null; + + } + + return null; + + }, + + // deactivates all previously scheduled actions + stopAllAction: function () { + + var actions = this._actions, + nActions = this._nActiveActions, + bindings = this._bindings, + nBindings = this._nActiveBindings; + + this._nActiveActions = 0; + this._nActiveBindings = 0; + + for ( var i = 0; i !== nActions; ++ i ) { + + actions[ i ].reset(); + + } + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].useCount = 0; + + } + + return this; + + }, + + // advance the time and update apply the animation + update: function ( deltaTime ) { + + deltaTime *= this.timeScale; + + var actions = this._actions, + nActions = this._nActiveActions, + + time = this.time += deltaTime, + timeDirection = Math.sign( deltaTime ), + + accuIndex = this._accuIndex ^= 1; + + // run active actions + + for ( var i = 0; i !== nActions; ++ i ) { + + var action = actions[ i ]; + + action._update( time, deltaTime, timeDirection, accuIndex ); + + } + + // update scene graph + + var bindings = this._bindings, + nBindings = this._nActiveBindings; + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].apply( accuIndex ); + + } + + return this; + + }, + + // return this mixer's root target object + getRoot: function () { + + return this._root; + + }, + + // free all resources specific to a particular clip + uncacheClip: function ( clip ) { + + var actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + + var actionsToRemove = actionsForClip.knownActions; + + for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + + var action = actionsToRemove[ i ]; + + this._deactivateAction( action ); + + var cacheIndex = action._cacheIndex, + lastInactiveAction = actions[ actions.length - 1 ]; + + action._cacheIndex = null; + action._byClipCacheIndex = null; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction( action ); + + } + + delete actionsByClip[ clipUuid ]; + + } + + }, + + // free all resources specific to a particular root target object + uncacheRoot: function ( root ) { + + var rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for ( var clipUuid in actionsByClip ) { + + var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, + action = actionByRoot[ rootUuid ]; + + if ( action !== undefined ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName !== undefined ) { + + for ( var trackName in bindingByName ) { + + var binding = bindingByName[ trackName ]; + binding.restoreOriginalState(); + this._removeInactiveBinding( binding ); + + } + + } + + }, + + // remove a targeted clip from the cache + uncacheAction: function ( clip, optionalRoot ) { + + var action = this.existingAction( clip, optionalRoot ); + + if ( action !== null ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Uniform( value ) { + + if ( typeof value === 'string' ) { + + console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); + value = arguments[ 1 ]; + + } + + this.value = value; + + } + + Uniform.prototype.clone = function () { + + return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferGeometry() { + + BufferGeometry.call( this ); + + this.type = 'InstancedBufferGeometry'; + this.maxInstancedCount = undefined; + + } + + InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { + + constructor: InstancedBufferGeometry, + + isInstancedBufferGeometry: true, + + copy: function ( source ) { + + BufferGeometry.prototype.copy.call( this, source ); + + this.maxInstancedCount = source.maxInstancedCount; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { + + InterleavedBuffer.call( this, array, stride ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { + + constructor: InstancedInterleavedBuffer, + + isInstancedInterleavedBuffer: true, + + copy: function ( source ) { + + InterleavedBuffer.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { + + if ( typeof ( normalized ) === 'number' ) { + + meshPerAttribute = normalized; + + normalized = false; + + console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); + + } + + BufferAttribute.call( this, array, itemSize, normalized ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { + + constructor: InstancedBufferAttribute, + + isInstancedBufferAttribute: true, + + copy: function ( source ) { + + BufferAttribute.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author bhouston / http://clara.io/ + * @author stephomi / http://stephaneginier.com/ + */ + + function Raycaster( origin, direction, near, far ) { + + this.ray = new Ray( origin, direction ); + // direction is assumed to be normalized (for accurate distance calculations) + + this.near = near || 0; + this.far = far || Infinity; + + this.params = { + Mesh: {}, + Line: {}, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + + Object.defineProperties( this.params, { + PointCloud: { + get: function () { + + console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); + return this.Points; + + } + } + } ); + + } + + function ascSort( a, b ) { + + return a.distance - b.distance; + + } + + function intersectObject( object, raycaster, intersects, recursive ) { + + if ( object.visible === false ) return; + + object.raycast( raycaster, intersects ); + + if ( recursive === true ) { + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + intersectObject( children[ i ], raycaster, intersects, true ); + + } + + } + + } + + Object.assign( Raycaster.prototype, { + + linePrecision: 1, + + set: function ( origin, direction ) { + + // direction is assumed to be normalized (for accurate distance calculations) + + this.ray.set( origin, direction ); + + }, + + setFromCamera: function ( coords, camera ) { + + if ( ( camera && camera.isPerspectiveCamera ) ) { + + this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); + this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + + } else if ( ( camera && camera.isOrthographicCamera ) ) { + + this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera + this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); + + } else { + + console.error( 'THREE.Raycaster: Unsupported camera type.' ); + + } + + }, + + intersectObject: function ( object, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + intersectObject( object, this, intersects, recursive ); + + intersects.sort( ascSort ); + + return intersects; + + }, + + intersectObjects: function ( objects, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + if ( Array.isArray( objects ) === false ) { + + console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + return intersects; + + } + + for ( var i = 0, l = objects.length; i < l; i ++ ) { + + intersectObject( objects[ i ], this, intersects, recursive ); + + } + + intersects.sort( ascSort ); + + return intersects; + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system + * + * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. + * The azimuthal angle (theta) is measured from the positive z-axiz. + */ + + function Spherical( radius, phi, theta ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; + this.phi = ( phi !== undefined ) ? phi : 0; // polar angle + this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle + + return this; + + } + + Object.assign( Spherical.prototype, { + + set: function ( radius, phi, theta ) { + + this.radius = radius; + this.phi = phi; + this.theta = theta; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + + return this; + + }, + + // restrict phi to be betwee EPS and PI-EPS + makeSafe: function () { + + var EPS = 0.000001; + this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + y * y + z * z ); + + if ( this.radius === 0 ) { + + this.theta = 0; + this.phi = 0; + + } else { + + this.theta = Math.atan2( x, z ); + this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); + + } + + return this; + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * + * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system + * + */ + + function Cylindrical( radius, theta, y ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane + this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane + + return this; + + } + + Object.assign( Cylindrical.prototype, { + + set: function ( radius, theta, y ) { + + this.radius = radius; + this.theta = theta; + this.y = y; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + z * z ); + this.theta = Math.atan2( x, z ); + this.y = y; + + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Box2( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); + + } + + Object.assign( Box2.prototype, { + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector2(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = + Infinity; + this.max.x = this.max.y = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getCenter() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getSize() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getParameter() target is now required' ); + target = new Vector2(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 4 splitting planes to rule out intersections + + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y ? false : true; + + }, + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .clampPoint() target is now required' ); + target = new Vector2(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector2(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Line3( start, end ) { + + this.start = ( start !== undefined ) ? start : new Vector3(); + this.end = ( end !== undefined ) ? end : new Vector3(); + + } + + Object.assign( Line3.prototype, { + + set: function ( start, end ) { + + this.start.copy( start ); + this.end.copy( end ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( line ) { + + this.start.copy( line.start ); + this.end.copy( line.end ); + + return this; + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + + }, + + delta: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .delta() target is now required' ); + target = new Vector3(); + + } + + return target.subVectors( this.end, this.start ); + + }, + + distanceSq: function () { + + return this.start.distanceToSquared( this.end ); + + }, + + distance: function () { + + return this.start.distanceTo( this.end ); + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .at() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + closestPointToPointParameter: function () { + + var startP = new Vector3(); + var startEnd = new Vector3(); + + return function closestPointToPointParameter( point, clampToLine ) { + + startP.subVectors( point, this.start ); + startEnd.subVectors( this.end, this.start ); + + var startEnd2 = startEnd.dot( startEnd ); + var startEnd_startP = startEnd.dot( startP ); + + var t = startEnd_startP / startEnd2; + + if ( clampToLine ) { + + t = _Math.clamp( t, 0, 1 ); + + } + + return t; + + }; + + }(), + + closestPointToPoint: function ( point, clampToLine, target ) { + + var t = this.closestPointToPointParameter( point, clampToLine ); + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + applyMatrix4: function ( matrix ) { + + this.start.applyMatrix4( matrix ); + this.end.applyMatrix4( matrix ); + + return this; + + }, + + equals: function ( line ) { + + return line.start.equals( this.start ) && line.end.equals( this.end ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function ImmediateRenderObject( material ) { + + Object3D.call( this ); + + this.material = material; + this.render = function ( /* renderCallback */ ) {}; + + } + + ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); + ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; + + ImmediateRenderObject.prototype.isImmediateRenderObject = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function VertexNormalsHelper( object, size, hex, linewidth ) { + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xff0000; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length * 3; + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + nNormals = objGeometry.attributes.normal.count; + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + + this.update(); + + } + + VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); + VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; + + VertexNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + var keys = [ 'a', 'b', 'c' ]; + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + var vertex = vertices[ face[ keys[ j ] ] ]; + + var normal = face.vertexNormals[ j ]; + + v1.copy( vertex ).applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + var objPos = objGeometry.attributes.position; + + var objNorm = objGeometry.attributes.normal; + + var idx = 0; + + // for simplicity, ignore index and drawcalls, and render every normal + + for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { + + v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); + + v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); + + v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function SpotLightHelper( light, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new BufferGeometry(); + + var positions = [ + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, - 1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, - 1, 1 + ]; + + for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + + var p1 = ( i / l ) * Math.PI * 2; + var p2 = ( j / l ) * Math.PI * 2; + + positions.push( + Math.cos( p1 ), Math.sin( p1 ), 1, + Math.cos( p2 ), Math.sin( p2 ), 1 + ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.cone = new LineSegments( geometry, material ); + this.add( this.cone ); + + this.update(); + + } + + SpotLightHelper.prototype = Object.create( Object3D.prototype ); + SpotLightHelper.prototype.constructor = SpotLightHelper; + + SpotLightHelper.prototype.dispose = function () { + + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + }; + + SpotLightHelper.prototype.update = function () { + + var vector = new Vector3(); + + return function update() { + + this.light.updateMatrixWorld(); + + var coneLength = this.light.distance ? this.light.distance : 1000; + var coneWidth = coneLength * Math.tan( this.light.angle ); + + this.cone.scale.set( coneWidth, coneWidth, coneLength ); + + vector.setFromMatrixPosition( this.light.target.matrixWorld ); + + this.cone.lookAt( vector ); + + if ( this.color !== undefined ) { + + this.cone.material.color.set( this.color ); + + } else { + + this.cone.material.color.copy( this.light.color ); + + } + + }; + + }(); + + /** + * @author Sean Griffin / http://twitter.com/sgrif + * @author Michael Guerrero / http://realitymeltdown.com + * @author mrdoob / http://mrdoob.com/ + * @author ikerr / http://verold.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + function getBoneList( object ) { + + var boneList = []; + + if ( object && object.isBone ) { + + boneList.push( object ); + + } + + for ( var i = 0; i < object.children.length; i ++ ) { + + boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); + + } + + return boneList; + + } + + function SkeletonHelper( object ) { + + var bones = getBoneList( object ); + + var geometry = new BufferGeometry(); + + var vertices = []; + var colors = []; + + var color1 = new Color( 0, 0, 1 ); + var color2 = new Color( 0, 1, 0 ); + + for ( var i = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + vertices.push( 0, 0, 0 ); + vertices.push( 0, 0, 0 ); + colors.push( color1.r, color1.g, color1.b ); + colors.push( color2.r, color2.g, color2.b ); + + } + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); + + LineSegments.call( this, geometry, material ); + + this.root = object; + this.bones = bones; + + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + + } + + SkeletonHelper.prototype = Object.create( LineSegments.prototype ); + SkeletonHelper.prototype.constructor = SkeletonHelper; + + SkeletonHelper.prototype.updateMatrixWorld = function () { + + var vector = new Vector3(); + + var boneMatrix = new Matrix4(); + var matrixWorldInv = new Matrix4(); + + return function updateMatrixWorld( force ) { + + var bones = this.bones; + + var geometry = this.geometry; + var position = geometry.getAttribute( 'position' ); + + matrixWorldInv.getInverse( this.root.matrixWorld ); + + for ( var i = 0, j = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j, vector.x, vector.y, vector.z ); + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j + 1, vector.x, vector.y, vector.z ); + + j += 2; + + } + + } + + geometry.getAttribute( 'position' ).needsUpdate = true; + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function PointLightHelper( light, sphereSize, color ) { + + this.light = light; + this.light.updateMatrixWorld(); + + this.color = color; + + var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); + var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + + Mesh.call( this, geometry, material ); + + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + + this.update(); + + + /* + var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); + var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + + var d = light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.scale.set( d, d, d ); + + } + + this.add( this.lightDistance ); + */ + + } + + PointLightHelper.prototype = Object.create( Mesh.prototype ); + PointLightHelper.prototype.constructor = PointLightHelper; + + PointLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + PointLightHelper.prototype.update = function () { + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ); + + } + + /* + var d = this.light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + + } + */ + + }; + + /** + * @author abelnation / http://github.com/abelnation + * @author Mugen87 / http://github.com/Mugen87 + * @author WestLangley / http://github.com/WestLangley + * + * This helper must be added as a child of the light + */ + + function RectAreaLightHelper( light, color ) { + + this.type = 'RectAreaLightHelper'; + + this.light = light; + + this.color = color; // optional hardwired color for the helper + + var positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + var material = new LineBasicMaterial( { fog: false } ); + + Line.call( this, geometry, material ); + + // + + var positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); + + this.update(); + + } + + RectAreaLightHelper.prototype = Object.create( Line.prototype ); + RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; + + RectAreaLightHelper.prototype.update = function () { + + this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + this.children[ 0 ].material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); + + // prevent hue shift + var c = this.material.color; + var max = Math.max( c.r, c.g, c.b ); + if ( max > 1 ) c.multiplyScalar( 1 / max ); + + this.children[ 0 ].material.color.copy( this.material.color ); + + } + + }; + + RectAreaLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function HemisphereLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new OctahedronBufferGeometry( size ); + geometry.rotateY( Math.PI * 0.5 ); + + this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + if ( this.color === undefined ) this.material.vertexColors = VertexColors; + + var position = geometry.getAttribute( 'position' ); + var colors = new Float32Array( position.count * 3 ); + + geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); + + this.add( new Mesh( geometry, this.material ) ); + + this.update(); + + } + + HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); + HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; + + HemisphereLightHelper.prototype.dispose = function () { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + HemisphereLightHelper.prototype.update = function () { + + var vector = new Vector3(); + + var color1 = new Color(); + var color2 = new Color(); + + return function update() { + + var mesh = this.children[ 0 ]; + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + var colors = mesh.geometry.getAttribute( 'color' ); + + color1.copy( this.light.color ); + color2.copy( this.light.groundColor ); + + for ( var i = 0, l = colors.count; i < l; i ++ ) { + + var color = ( i < ( l / 2 ) ) ? color1 : color2; + + colors.setXYZ( i, color.r, color.g, color.b ); + + } + + colors.needsUpdate = true; + + } + + mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function GridHelper( size, divisions, color1, color2 ) { + + size = size || 10; + divisions = divisions || 10; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var center = divisions / 2; + var step = size / divisions; + var halfSize = size / 2; + + var vertices = [], colors = []; + + for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + + vertices.push( - halfSize, 0, k, halfSize, 0, k ); + vertices.push( k, 0, - halfSize, k, 0, halfSize ); + + var color = i === center ? color1 : color2; + + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), { + + constructor: GridHelper, + + copy: function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.geometry.copy( source.geometry ); + this.material.copy( source.material ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + * @author Hectate / http://www.github.com/Hectate + */ + + function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { + + radius = radius || 10; + radials = radials || 16; + circles = circles || 8; + divisions = divisions || 64; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var vertices = []; + var colors = []; + + var x, z; + var v, i, j, r, color; + + // create the radials + + for ( i = 0; i <= radials; i ++ ) { + + v = ( i / radials ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * radius; + z = Math.cos( v ) * radius; + + vertices.push( 0, 0, 0 ); + vertices.push( x, 0, z ); + + color = ( i & 1 ) ? color1 : color2; + + colors.push( color.r, color.g, color.b ); + colors.push( color.r, color.g, color.b ); + + } + + // create the circles + + for ( i = 0; i <= circles; i ++ ) { + + color = ( i & 1 ) ? color1 : color2; + + r = radius - ( radius / circles * i ); + + for ( j = 0; j < divisions; j ++ ) { + + // first vertex + + v = ( j / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + // second vertex + + v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + } + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + PolarGridHelper.prototype = Object.create( LineSegments.prototype ); + PolarGridHelper.prototype.constructor = PolarGridHelper; + + /** + * @author Mugen87 / http://github.com/Mugen87 + */ + + function PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) { + + this.audio = audio; + this.range = range || 1; + this.divisionsInnerAngle = divisionsInnerAngle || 16; + this.divisionsOuterAngle = divisionsOuterAngle || 2; + + var geometry = new BufferGeometry(); + var divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2; + var positions = new Float32Array( ( divisions * 3 + 3 ) * 3 ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + var materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } ); + var materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } ); + + Line.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] ); + + this.update(); + + } + + PositionalAudioHelper.prototype = Object.create( Line.prototype ); + PositionalAudioHelper.prototype.constructor = PositionalAudioHelper; + + PositionalAudioHelper.prototype.update = function () { + + var audio = this.audio; + var range = this.range; + var divisionsInnerAngle = this.divisionsInnerAngle; + var divisionsOuterAngle = this.divisionsOuterAngle; + + var coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle ); + var coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle ); + + var halfConeInnerAngle = coneInnerAngle / 2; + var halfConeOuterAngle = coneOuterAngle / 2; + + var start = 0; + var count = 0; + var i, stride; + + var geometry = this.geometry; + var positionAttribute = geometry.attributes.position; + + geometry.clearGroups(); + + // + + function generateSegment( from, to, divisions, materialIndex ) { + + var step = ( to - from ) / divisions; + + positionAttribute.setXYZ( start, 0, 0, 0 ); + count ++; + + for ( i = from; i < to; i += step ) { + + stride = start + count; + + positionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range ); + positionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range ); + positionAttribute.setXYZ( stride + 2, 0, 0, 0 ); + + count += 3; + + } + + geometry.addGroup( start, count, materialIndex ); + + start += count; + count = 0; + + } + + // + + generateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 ); + generateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 ); + generateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 ); + + // + + positionAttribute.needsUpdate = true; + + if ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false; + + }; + + PositionalAudioHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material[ 0 ].dispose(); + this.material[ 1 ].dispose(); + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function FaceNormalsHelper( object, size, hex, linewidth ) { + + // FaceNormalsHelper only supports THREE.Geometry + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length; + + } else { + + console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + this.update(); + + } + + FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); + FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; + + FaceNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var normal = face.normal; + + v1.copy( vertices[ face.a ] ) + .add( vertices[ face.b ] ) + .add( vertices[ face.c ] ) + .divideScalar( 3 ) + .applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function DirectionalLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + if ( size === undefined ) size = 1; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ + - size, size, 0, + size, size, 0, + size, - size, 0, + - size, - size, 0, + - size, size, 0 + ], 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.lightPlane = new Line( geometry, material ); + this.add( this.lightPlane ); + + geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + + this.targetLine = new Line( geometry, material ); + this.add( this.targetLine ); + + this.update(); + + } + + DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); + DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; + + DirectionalLightHelper.prototype.dispose = function () { + + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + + }; + + DirectionalLightHelper.prototype.update = function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var v3 = new Vector3(); + + return function update() { + + v1.setFromMatrixPosition( this.light.matrixWorld ); + v2.setFromMatrixPosition( this.light.target.matrixWorld ); + v3.subVectors( v2, v1 ); + + this.lightPlane.lookAt( v2 ); + + if ( this.color !== undefined ) { + + this.lightPlane.material.color.set( this.color ); + this.targetLine.material.color.set( this.color ); + + } else { + + this.lightPlane.material.color.copy( this.light.color ); + this.targetLine.material.color.copy( this.light.color ); + + } + + this.targetLine.lookAt( v2 ); + this.targetLine.scale.z = v3.length(); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author Mugen87 / https://github.com/Mugen87 + * + * - shows frustum, line of sight and up of the camera + * - suitable for fast updates + * - based on frustum visualization in lightgl.js shadowmap example + * http://evanw.github.com/lightgl.js/tests/shadowmap.html + */ + + function CameraHelper( camera ) { + + var geometry = new BufferGeometry(); + var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); + + var vertices = []; + var colors = []; + + var pointMap = {}; + + // colors + + var colorFrustum = new Color( 0xffaa00 ); + var colorCone = new Color( 0xff0000 ); + var colorUp = new Color( 0x00aaff ); + var colorTarget = new Color( 0xffffff ); + var colorCross = new Color( 0x333333 ); + + // near + + addLine( 'n1', 'n2', colorFrustum ); + addLine( 'n2', 'n4', colorFrustum ); + addLine( 'n4', 'n3', colorFrustum ); + addLine( 'n3', 'n1', colorFrustum ); + + // far + + addLine( 'f1', 'f2', colorFrustum ); + addLine( 'f2', 'f4', colorFrustum ); + addLine( 'f4', 'f3', colorFrustum ); + addLine( 'f3', 'f1', colorFrustum ); + + // sides + + addLine( 'n1', 'f1', colorFrustum ); + addLine( 'n2', 'f2', colorFrustum ); + addLine( 'n3', 'f3', colorFrustum ); + addLine( 'n4', 'f4', colorFrustum ); + + // cone + + addLine( 'p', 'n1', colorCone ); + addLine( 'p', 'n2', colorCone ); + addLine( 'p', 'n3', colorCone ); + addLine( 'p', 'n4', colorCone ); + + // up + + addLine( 'u1', 'u2', colorUp ); + addLine( 'u2', 'u3', colorUp ); + addLine( 'u3', 'u1', colorUp ); + + // target + + addLine( 'c', 't', colorTarget ); + addLine( 'p', 'c', colorCross ); + + // cross + + addLine( 'cn1', 'cn2', colorCross ); + addLine( 'cn3', 'cn4', colorCross ); + + addLine( 'cf1', 'cf2', colorCross ); + addLine( 'cf3', 'cf4', colorCross ); + + function addLine( a, b, color ) { + + addPoint( a, color ); + addPoint( b, color ); + + } + + function addPoint( id, color ) { + + vertices.push( 0, 0, 0 ); + colors.push( color.r, color.g, color.b ); + + if ( pointMap[ id ] === undefined ) { + + pointMap[ id ] = []; + + } + + pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + LineSegments.call( this, geometry, material ); + + this.camera = camera; + if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); + + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + + this.pointMap = pointMap; + + this.update(); + + } + + CameraHelper.prototype = Object.create( LineSegments.prototype ); + CameraHelper.prototype.constructor = CameraHelper; + + CameraHelper.prototype.update = function () { + + var geometry, pointMap; + + var vector = new Vector3(); + var camera = new Camera(); + + function setPoint( point, x, y, z ) { + + vector.set( x, y, z ).unproject( camera ); + + var points = pointMap[ point ]; + + if ( points !== undefined ) { + + var position = geometry.getAttribute( 'position' ); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); + + } + + } + + } + + return function update() { + + geometry = this.geometry; + pointMap = this.pointMap; + + var w = 1, h = 1; + + // we need just camera projection matrix inverse + // world matrix must be identity + + camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse ); + + // center / target + + setPoint( 'c', 0, 0, - 1 ); + setPoint( 't', 0, 0, 1 ); + + // near + + setPoint( 'n1', - w, - h, - 1 ); + setPoint( 'n2', w, - h, - 1 ); + setPoint( 'n3', - w, h, - 1 ); + setPoint( 'n4', w, h, - 1 ); + + // far + + setPoint( 'f1', - w, - h, 1 ); + setPoint( 'f2', w, - h, 1 ); + setPoint( 'f3', - w, h, 1 ); + setPoint( 'f4', w, h, 1 ); + + // up + + setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); + setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); + setPoint( 'u3', 0, h * 2, - 1 ); + + // cross + + setPoint( 'cf1', - w, 0, 1 ); + setPoint( 'cf2', w, 0, 1 ); + setPoint( 'cf3', 0, - h, 1 ); + setPoint( 'cf4', 0, h, 1 ); + + setPoint( 'cn1', - w, 0, - 1 ); + setPoint( 'cn2', w, 0, - 1 ); + setPoint( 'cn3', 0, - h, - 1 ); + setPoint( 'cn4', 0, h, - 1 ); + + geometry.getAttribute( 'position' ).needsUpdate = true; + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + */ + + function BoxHelper( object, color ) { + + this.object = object; + + if ( color === undefined ) color = 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + var positions = new Float32Array( 8 * 3 ); + + var geometry = new BufferGeometry(); + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.matrixAutoUpdate = false; + + this.update(); + + } + + BoxHelper.prototype = Object.create( LineSegments.prototype ); + BoxHelper.prototype.constructor = BoxHelper; + + BoxHelper.prototype.update = ( function () { + + var box = new Box3(); + + return function update( object ) { + + if ( object !== undefined ) { + + console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); + + } + + if ( this.object !== undefined ) { + + box.setFromObject( this.object ); + + } + + if ( box.isEmpty() ) return; + + var min = box.min; + var max = box.max; + + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + var position = this.geometry.attributes.position; + var array = position.array; + + array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; + array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; + array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; + array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; + array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; + array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; + array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; + array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + + position.needsUpdate = true; + + this.geometry.computeBoundingSphere(); + + }; + + } )(); + + BoxHelper.prototype.setFromObject = function ( object ) { + + this.object = object; + this.update(); + + return this; + + }; + + BoxHelper.prototype.copy = function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.object = source.object; + + return this; + + }; + + BoxHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3Helper( box, hex ) { + + this.type = 'Box3Helper'; + + this.box = box; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + + var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; + + var geometry = new BufferGeometry(); + + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.geometry.computeBoundingSphere(); + + } + + Box3Helper.prototype = Object.create( LineSegments.prototype ); + Box3Helper.prototype.constructor = Box3Helper; + + Box3Helper.prototype.updateMatrixWorld = function ( force ) { + + var box = this.box; + + if ( box.isEmpty() ) return; + + box.getCenter( this.position ); + + box.getSize( this.scale ); + + this.scale.multiplyScalar( 0.5 ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function PlaneHelper( plane, size, hex ) { + + this.type = 'PlaneHelper'; + + this.plane = plane; + + this.size = ( size === undefined ) ? 1 : size; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + // + + var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); + + } + + PlaneHelper.prototype = Object.create( Line.prototype ); + PlaneHelper.prototype.constructor = PlaneHelper; + + PlaneHelper.prototype.updateMatrixWorld = function ( force ) { + + var scale = - this.plane.constant; + + if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter + + this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); + + this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here + + this.lookAt( this.plane.normal ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * @author zz85 / http://github.com/zz85 + * @author bhouston / http://clara.io + * + * Creates an arrow for visualizing directions + * + * Parameters: + * dir - Vector3 + * origin - Vector3 + * length - Number + * color - color in hex value + * headLength - Number + * headWidth - Number + */ + + var lineGeometry, coneGeometry; + + function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { + + // dir is assumed to be normalized + + Object3D.call( this ); + + if ( dir === undefined ) dir = new Vector3( 0, 0, 1 ); + if ( origin === undefined ) origin = new Vector3( 0, 0, 0 ); + if ( length === undefined ) length = 1; + if ( color === undefined ) color = 0xffff00; + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + if ( lineGeometry === undefined ) { + + lineGeometry = new BufferGeometry(); + lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + + coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); + coneGeometry.translate( 0, - 0.5, 0 ); + + } + + this.position.copy( origin ); + + this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); + this.line.matrixAutoUpdate = false; + this.add( this.line ); + + this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); + this.cone.matrixAutoUpdate = false; + this.add( this.cone ); + + this.setDirection( dir ); + this.setLength( length, headLength, headWidth ); + + } + + ArrowHelper.prototype = Object.create( Object3D.prototype ); + ArrowHelper.prototype.constructor = ArrowHelper; + + ArrowHelper.prototype.setDirection = ( function () { + + var axis = new Vector3(); + var radians; + + return function setDirection( dir ) { + + // dir is assumed to be normalized + + if ( dir.y > 0.99999 ) { + + this.quaternion.set( 0, 0, 0, 1 ); + + } else if ( dir.y < - 0.99999 ) { + + this.quaternion.set( 1, 0, 0, 0 ); + + } else { + + axis.set( dir.z, 0, - dir.x ).normalize(); + + radians = Math.acos( dir.y ); + + this.quaternion.setFromAxisAngle( axis, radians ); + + } + + }; + + }() ); + + ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { + + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); + this.line.updateMatrix(); + + this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.position.y = length; + this.cone.updateMatrix(); + + }; + + ArrowHelper.prototype.setColor = function ( color ) { + + this.line.material.color.copy( color ); + this.cone.material.color.copy( color ); + + }; + + ArrowHelper.prototype.copy = function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + this.line.copy( source.line ); + this.cone.copy( source.cone ); + + return this; + + }; + + ArrowHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author sroucheray / http://sroucheray.org/ + * @author mrdoob / http://mrdoob.com/ + */ + + function AxesHelper( size ) { + + size = size || 1; + + var vertices = [ + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size + ]; + + var colors = [ + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 + ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + AxesHelper.prototype = Object.create( LineSegments.prototype ); + AxesHelper.prototype.constructor = AxesHelper; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Face4( a, b, c, d, normal, color, materialIndex ) { + + console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); + return new Face3( a, b, c, normal, color, materialIndex ); + + } + + var LineStrip = 0; + + var LinePieces = 1; + + function MeshFaceMaterial( materials ) { + + console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); + return materials; + + } + + function MultiMaterial( materials ) { + + if ( materials === undefined ) materials = []; + + console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); + materials.isMultiMaterial = true; + materials.materials = materials; + materials.clone = function () { + + return materials.slice(); + + }; + return materials; + + } + + function PointCloud( geometry, material ) { + + console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function Particle( material ) { + + console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); + return new Sprite( material ); + + } + + function ParticleSystem( geometry, material ) { + + console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function PointCloudMaterial( parameters ) { + + console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleBasicMaterial( parameters ) { + + console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleSystemMaterial( parameters ) { + + console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function Vertex( x, y, z ) { + + console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); + return new Vector3( x, y, z ); + + } + + // + + function DynamicBufferAttribute( array, itemSize ) { + + console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); + return new BufferAttribute( array, itemSize ).setDynamic( true ); + + } + + function Int8Attribute( array, itemSize ) { + + console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); + return new Int8BufferAttribute( array, itemSize ); + + } + + function Uint8Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); + return new Uint8BufferAttribute( array, itemSize ); + + } + + function Uint8ClampedAttribute( array, itemSize ) { + + console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); + return new Uint8ClampedBufferAttribute( array, itemSize ); + + } + + function Int16Attribute( array, itemSize ) { + + console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); + return new Int16BufferAttribute( array, itemSize ); + + } + + function Uint16Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); + return new Uint16BufferAttribute( array, itemSize ); + + } + + function Int32Attribute( array, itemSize ) { + + console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); + return new Int32BufferAttribute( array, itemSize ); + + } + + function Uint32Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); + return new Uint32BufferAttribute( array, itemSize ); + + } + + function Float32Attribute( array, itemSize ) { + + console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); + return new Float32BufferAttribute( array, itemSize ); + + } + + function Float64Attribute( array, itemSize ) { + + console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); + return new Float64BufferAttribute( array, itemSize ); + + } + + // + + Curve.create = function ( construct, getPoint ) { + + console.log( 'THREE.Curve.create() has been deprecated' ); + + construct.prototype = Object.create( Curve.prototype ); + construct.prototype.constructor = construct; + construct.prototype.getPoint = getPoint; + + return construct; + + }; + + // + + Object.assign( CurvePath.prototype, { + + createPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from path points (for Line or Points objects) + + var pts = this.getPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createSpacedPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from equidistant sampling along the path + + var pts = this.getSpacedPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createGeometry: function ( points ) { + + console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + var geometry = new Geometry(); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return geometry; + + } + + } ); + + // + + Object.assign( Path.prototype, { + + fromPoints: function ( points ) { + + console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); + this.setFromPoints( points ); + + } + + } ); + + // + + function ClosedSplineCurve3( points ) { + + console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + this.closed = true; + + } + + ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function SplineCurve3( points ) { + + console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function Spline( points ) { + + console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + Spline.prototype = Object.create( CatmullRomCurve3.prototype ); + + Object.assign( Spline.prototype, { + + initFromArray: function ( /* a */ ) { + + console.error( 'THREE.Spline: .initFromArray() has been removed.' ); + + }, + getControlPointsArray: function ( /* optionalTarget */ ) { + + console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); + + }, + reparametrizeByArcLength: function ( /* samplingCoef */ ) { + + console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); + + } + + } ); + + // + + function AxisHelper( size ) { + + console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); + return new AxesHelper( size ); + + } + + function BoundingBoxHelper( object, color ) { + + console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); + return new BoxHelper( object, color ); + + } + + function EdgesHelper( object, hex ) { + + console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); + return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + GridHelper.prototype.setColors = function () { + + console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); + + }; + + SkeletonHelper.prototype.update = function () { + + console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); + + }; + + function WireframeHelper( object, hex ) { + + console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); + return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + // + + Object.assign( Loader.prototype, { + + extractUrlBase: function ( url ) { + + console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); + return LoaderUtils.extractUrlBase( url ); + + } + + } ); + + function XHRLoader( manager ) { + + console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); + return new FileLoader( manager ); + + } + + function BinaryTextureLoader( manager ) { + + console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); + return new DataTextureLoader( manager ); + + } + + Object.assign( ObjectLoader.prototype, { + + setTexturePath: function ( value ) { + + console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); + return this.setResourcePath( value ); + + } + + } ); + + // + + Object.assign( Box2.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Object.assign( Box3.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Line3.prototype.center = function ( optionalTarget ) { + + console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }; + + Object.assign( _Math, { + + random16: function () { + + console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); + return Math.random(); + + }, + + nearestPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); + return _Math.floorPowerOfTwo( value ); + + }, + + nextPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); + return _Math.ceilPowerOfTwo( value ); + + } + + } ); + + Object.assign( Matrix3.prototype, { + + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); + return vector.applyMatrix3( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); + + } + + } ); + + Object.assign( Matrix4.prototype, { + + extractPosition: function ( m ) { + + console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); + return this.copyPosition( m ); + + }, + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + getPosition: function () { + + var v1; + + return function getPosition() { + + if ( v1 === undefined ) v1 = new Vector3(); + console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); + return v1.setFromMatrixColumn( this, 3 ); + + }; + + }(), + setRotationFromQuaternion: function ( q ) { + + console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); + return this.makeRotationFromQuaternion( q ); + + }, + multiplyToArray: function () { + + console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector4: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); + + }, + rotateAxis: function ( v ) { + + console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); + v.transformDirection( this ); + + }, + crossVector: function ( vector ) { + + console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + translate: function () { + + console.error( 'THREE.Matrix4: .translate() has been removed.' ); + + }, + rotateX: function () { + + console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); + + }, + rotateY: function () { + + console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); + + }, + rotateZ: function () { + + console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); + + }, + rotateByAxis: function () { + + console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); + + }, + makeFrustum: function ( left, right, bottom, top, near, far ) { + + console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); + return this.makePerspective( left, right, top, bottom, near, far ); + + } + + } ); + + Plane.prototype.isIntersectionLine = function ( line ) { + + console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); + return this.intersectsLine( line ); + + }; + + Quaternion.prototype.multiplyVector3 = function ( vector ) { + + console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); + return vector.applyQuaternion( this ); + + }; + + Object.assign( Ray.prototype, { + + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionPlane: function ( plane ) { + + console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); + return this.intersectsPlane( plane ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + } + + } ); + + Object.assign( Triangle.prototype, { + + area: function () { + + console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); + return this.getArea(); + + }, + barycoordFromPoint: function ( point, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return this.getBarycoord( point, target ); + + }, + midpoint: function ( target ) { + + console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); + return this.getMidpoint( target ); + + }, + normal: function ( target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return this.getNormal( target ); + + }, + plane: function ( target ) { + + console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); + return this.getPlane( target ); + + } + + } ); + + Object.assign( Triangle, { + + barycoordFromPoint: function ( point, a, b, c, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return Triangle.getBarycoord( point, a, b, c, target ); + + }, + normal: function ( a, b, c, target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return Triangle.getNormal( a, b, c, target ); + + } + + } ); + + Object.assign( Shape.prototype, { + + extractAllPoints: function ( divisions ) { + + console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); + return this.extractPoints( divisions ); + + }, + extrude: function ( options ) { + + console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); + return new ExtrudeGeometry( this, options ); + + }, + makeGeometry: function ( options ) { + + console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); + return new ShapeGeometry( this, options ); + + } + + } ); + + Object.assign( Vector2.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector3.prototype, { + + setEulerFromRotationMatrix: function () { + + console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + + }, + setEulerFromQuaternion: function () { + + console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + + }, + getPositionFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); + return this.setFromMatrixPosition( m ); + + }, + getScaleFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); + return this.setFromMatrixScale( m ); + + }, + getColumnFromMatrix: function ( index, matrix ) { + + console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); + return this.setFromMatrixColumn( matrix, index ); + + }, + applyProjection: function ( m ) { + + console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); + return this.applyMatrix4( m ); + + }, + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector4.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + // + + Object.assign( Geometry.prototype, { + + computeTangents: function () { + + console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); + + }, + computeLineDistances: function () { + + console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); + + } + + } ); + + Object.assign( Object3D.prototype, { + + getChildByName: function ( name ) { + + console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); + return this.getObjectByName( name ); + + }, + renderDepth: function () { + + console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); + + }, + translate: function ( distance, axis ) { + + console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); + return this.translateOnAxis( axis, distance ); + + }, + getWorldRotation: function () { + + console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); + + } + + } ); + + Object.defineProperties( Object3D.prototype, { + + eulerOrder: { + get: function () { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + return this.rotation.order; + + }, + set: function ( value ) { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + this.rotation.order = value; + + } + }, + useQuaternion: { + get: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + }, + set: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + } + } + + } ); + + Object.defineProperties( LOD.prototype, { + + objects: { + get: function () { + + console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); + return this.levels; + + } + } + + } ); + + Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { + + get: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + } + + } ); + + SkinnedMesh.prototype.initBones = function () { + + console.error( 'THREE.SkinnedMesh: initBones() has been removed.' ); + + }; + + Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { + + get: function () { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + return this.arcLengthDivisions; + + }, + set: function ( value ) { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + this.arcLengthDivisions = value; + + } + + } ); + + // + + PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { + + console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + + "Use .setFocalLength and .filmGauge for a photographic setup." ); + + if ( filmGauge !== undefined ) this.filmGauge = filmGauge; + this.setFocalLength( focalLength ); + + }; + + // + + Object.defineProperties( Light.prototype, { + onlyShadow: { + set: function () { + + console.warn( 'THREE.Light: .onlyShadow has been removed.' ); + + } + }, + shadowCameraFov: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); + this.shadow.camera.fov = value; + + } + }, + shadowCameraLeft: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); + this.shadow.camera.left = value; + + } + }, + shadowCameraRight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); + this.shadow.camera.right = value; + + } + }, + shadowCameraTop: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); + this.shadow.camera.top = value; + + } + }, + shadowCameraBottom: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); + this.shadow.camera.bottom = value; + + } + }, + shadowCameraNear: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); + this.shadow.camera.near = value; + + } + }, + shadowCameraFar: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); + this.shadow.camera.far = value; + + } + }, + shadowCameraVisible: { + set: function () { + + console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); + + } + }, + shadowBias: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); + this.shadow.bias = value; + + } + }, + shadowDarkness: { + set: function () { + + console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); + + } + }, + shadowMapWidth: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); + this.shadow.mapSize.width = value; + + } + }, + shadowMapHeight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); + this.shadow.mapSize.height = value; + + } + } + } ); + + // + + Object.defineProperties( BufferAttribute.prototype, { + + length: { + get: function () { + + console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); + return this.array.length; + + } + }, + copyIndicesArray: function ( /* indices */ ) { + + console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); + + } + + } ); + + Object.assign( BufferGeometry.prototype, { + + addIndex: function ( index ) { + + console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); + this.setIndex( index ); + + }, + addDrawCall: function ( start, count, indexOffset ) { + + if ( indexOffset !== undefined ) { + + console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); + + } + console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); + this.addGroup( start, count ); + + }, + clearDrawCalls: function () { + + console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); + this.clearGroups(); + + }, + computeTangents: function () { + + console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); + + }, + computeOffsets: function () { + + console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); + + } + + } ); + + Object.defineProperties( BufferGeometry.prototype, { + + drawcalls: { + get: function () { + + console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); + return this.groups; + + } + }, + offsets: { + get: function () { + + console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); + return this.groups; + + } + } + + } ); + + // + + Object.assign( ExtrudeBufferGeometry.prototype, { + + getArrays: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); + + }, + + addShapeList: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); + + }, + + addShape: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); + + } + + } ); + + // + + Object.defineProperties( Uniform.prototype, { + + dynamic: { + set: function () { + + console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); + + } + }, + onUpdate: { + value: function () { + + console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); + return this; + + } + } + + } ); + + // + + Object.defineProperties( Material.prototype, { + + wrapAround: { + get: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + } + }, + + overdraw: { + get: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + } + }, + + wrapRGB: { + get: function () { + + console.warn( 'THREE.Material: .wrapRGB has been removed.' ); + return new Color(); + + } + }, + + shading: { + get: function () { + + console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + + }, + set: function ( value ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( value === FlatShading ); + + } + } + + } ); + + Object.defineProperties( MeshPhongMaterial.prototype, { + + metal: { + get: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); + return false; + + }, + set: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); + + } + } + + } ); + + Object.defineProperties( ShaderMaterial.prototype, { + + derivatives: { + get: function () { + + console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + return this.extensions.derivatives; + + }, + set: function ( value ) { + + console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + this.extensions.derivatives = value; + + } + } + + } ); + + // + + Object.assign( WebGLRenderer.prototype, { + + clearTarget: function ( renderTarget, color, depth, stencil ) { + + console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); + this.setRenderTarget( renderTarget ); + this.clear( color, depth, stencil ); + + }, + animate: function ( callback ) { + + console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); + this.setAnimationLoop( callback ); + + }, + getCurrentRenderTarget: function () { + + console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); + return this.getRenderTarget(); + + }, + getMaxAnisotropy: function () { + + console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); + return this.capabilities.getMaxAnisotropy(); + + }, + getPrecision: function () { + + console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); + return this.capabilities.precision; + + }, + resetGLState: function () { + + console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); + return this.state.reset(); + + }, + supportsFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); + return this.extensions.get( 'OES_texture_float' ); + + }, + supportsHalfFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); + return this.extensions.get( 'OES_texture_half_float' ); + + }, + supportsStandardDerivatives: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); + return this.extensions.get( 'OES_standard_derivatives' ); + + }, + supportsCompressedTextureS3TC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + }, + supportsCompressedTexturePVRTC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + }, + supportsBlendMinMax: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); + return this.extensions.get( 'EXT_blend_minmax' ); + + }, + supportsVertexTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); + return this.capabilities.vertexTextures; + + }, + supportsInstancedArrays: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); + return this.extensions.get( 'ANGLE_instanced_arrays' ); + + }, + enableScissorTest: function ( boolean ) { + + console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); + this.setScissorTest( boolean ); + + }, + initMaterial: function () { + + console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + + }, + addPrePlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + + }, + addPostPlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + + }, + updateShadowMap: function () { + + console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + + }, + setFaceCulling: function () { + + console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); + + }, + allocTextureUnit: function () { + + console.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' ); + + }, + setTexture: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' ); + + }, + setTexture2D: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' ); + + }, + setTextureCube: function () { + + console.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' ); + + } + + } ); + + Object.defineProperties( WebGLRenderer.prototype, { + + shadowMapEnabled: { + get: function () { + + return this.shadowMap.enabled; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); + this.shadowMap.enabled = value; + + } + }, + shadowMapType: { + get: function () { + + return this.shadowMap.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); + this.shadowMap.type = value; + + } + }, + shadowMapCullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + + } + } + } ); + + Object.defineProperties( WebGLShadowMap.prototype, { + + cullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* cullFace */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderReverseSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderSingleSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTargetCube.prototype, { + + activeCubeFace: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' ); + + } + }, + activeMipMapLevel: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTarget.prototype, { + + wrapS: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + return this.texture.wrapS; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + this.texture.wrapS = value; + + } + }, + wrapT: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + return this.texture.wrapT; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + this.texture.wrapT = value; + + } + }, + magFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + return this.texture.magFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + this.texture.magFilter = value; + + } + }, + minFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + return this.texture.minFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + this.texture.minFilter = value; + + } + }, + anisotropy: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + return this.texture.anisotropy; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + this.texture.anisotropy = value; + + } + }, + offset: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + return this.texture.offset; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + this.texture.offset = value; + + } + }, + repeat: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + return this.texture.repeat; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + this.texture.repeat = value; + + } + }, + format: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + return this.texture.format; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + this.texture.format = value; + + } + }, + type: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + return this.texture.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + this.texture.type = value; + + } + }, + generateMipmaps: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + return this.texture.generateMipmaps; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + this.texture.generateMipmaps = value; + + } + } + + } ); + + // + + Object.defineProperties( WebVRManager.prototype, { + + standing: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .standing has been removed.' ); + + } + }, + userHeight: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); + + } + } + + } ); + + // + + Audio.prototype.load = function ( file ) { + + console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); + var scope = this; + var audioLoader = new AudioLoader(); + audioLoader.load( file, function ( buffer ) { + + scope.setBuffer( buffer ); + + } ); + return this; + + }; + + AudioAnalyser.prototype.getData = function () { + + console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); + return this.getFrequencyData(); + + }; + + // + + CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { + + console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); + return this.update( renderer, scene ); + + }; + + // + + var GeometryUtils = { + + merge: function ( geometry1, geometry2, materialIndexOffset ) { + + console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + var matrix; + + if ( geometry2.isMesh ) { + + geometry2.matrixAutoUpdate && geometry2.updateMatrix(); + + matrix = geometry2.matrix; + geometry2 = geometry2.geometry; + + } + + geometry1.merge( geometry2, matrix, materialIndexOffset ); + + }, + + center: function ( geometry ) { + + console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + return geometry.center(); + + } + + }; + + ImageUtils.crossOrigin = undefined; + + ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); + + var loader = new TextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( url, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }; + + ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); + + var loader = new CubeTextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( urls, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }; + + ImageUtils.loadCompressedTexture = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); + + }; + + ImageUtils.loadCompressedTextureCube = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); + + }; + + // + + function Projector() { + + console.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); + + this.projectVector = function ( vector, camera ) { + + console.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); + vector.project( camera ); + + }; + + this.unprojectVector = function ( vector, camera ) { + + console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); + vector.unproject( camera ); + + }; + + this.pickingRay = function () { + + console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); + + }; + + } + + // + + function CanvasRenderer() { + + console.error( 'THREE.CanvasRenderer has been removed' ); + + } + + // + + function JSONLoader() { + + console.error( 'THREE.JSONLoader has been removed.' ); + + } + + // + + var SceneUtils = { + + createMultiMaterialObject: function ( /* geometry, materials */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + detach: function ( /* child, parent, scene */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + attach: function ( /* child, scene, parent */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + } + + }; + + // + + function LensFlare() { + + console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); + + } + + exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; + exports.WebGLRenderTargetCube = WebGLRenderTargetCube; + exports.WebGLRenderTarget = WebGLRenderTarget; + exports.WebGLRenderer = WebGLRenderer; + exports.ShaderLib = ShaderLib; + exports.UniformsLib = UniformsLib; + exports.UniformsUtils = UniformsUtils; + exports.ShaderChunk = ShaderChunk; + exports.FogExp2 = FogExp2; + exports.Fog = Fog; + exports.Scene = Scene; + exports.Sprite = Sprite; + exports.LOD = LOD; + exports.SkinnedMesh = SkinnedMesh; + exports.Skeleton = Skeleton; + exports.Bone = Bone; + exports.Mesh = Mesh; + exports.LineSegments = LineSegments; + exports.LineLoop = LineLoop; + exports.Line = Line; + exports.Points = Points; + exports.Group = Group; + exports.VideoTexture = VideoTexture; + exports.DataTexture = DataTexture; + exports.DataTexture2DArray = DataTexture2DArray; + exports.DataTexture3D = DataTexture3D; + exports.CompressedTexture = CompressedTexture; + exports.CubeTexture = CubeTexture; + exports.CanvasTexture = CanvasTexture; + exports.DepthTexture = DepthTexture; + exports.Texture = Texture; + exports.AnimationLoader = AnimationLoader; + exports.CompressedTextureLoader = CompressedTextureLoader; + exports.DataTextureLoader = DataTextureLoader; + exports.CubeTextureLoader = CubeTextureLoader; + exports.TextureLoader = TextureLoader; + exports.ObjectLoader = ObjectLoader; + exports.MaterialLoader = MaterialLoader; + exports.BufferGeometryLoader = BufferGeometryLoader; + exports.DefaultLoadingManager = DefaultLoadingManager; + exports.LoadingManager = LoadingManager; + exports.ImageLoader = ImageLoader; + exports.ImageBitmapLoader = ImageBitmapLoader; + exports.FontLoader = FontLoader; + exports.FileLoader = FileLoader; + exports.Loader = Loader; + exports.LoaderUtils = LoaderUtils; + exports.Cache = Cache; + exports.AudioLoader = AudioLoader; + exports.SpotLightShadow = SpotLightShadow; + exports.SpotLight = SpotLight; + exports.PointLight = PointLight; + exports.RectAreaLight = RectAreaLight; + exports.HemisphereLight = HemisphereLight; + exports.DirectionalLightShadow = DirectionalLightShadow; + exports.DirectionalLight = DirectionalLight; + exports.AmbientLight = AmbientLight; + exports.LightShadow = LightShadow; + exports.Light = Light; + exports.StereoCamera = StereoCamera; + exports.PerspectiveCamera = PerspectiveCamera; + exports.OrthographicCamera = OrthographicCamera; + exports.CubeCamera = CubeCamera; + exports.ArrayCamera = ArrayCamera; + exports.Camera = Camera; + exports.AudioListener = AudioListener; + exports.PositionalAudio = PositionalAudio; + exports.AudioContext = AudioContext; + exports.AudioAnalyser = AudioAnalyser; + exports.Audio = Audio; + exports.VectorKeyframeTrack = VectorKeyframeTrack; + exports.StringKeyframeTrack = StringKeyframeTrack; + exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; + exports.NumberKeyframeTrack = NumberKeyframeTrack; + exports.ColorKeyframeTrack = ColorKeyframeTrack; + exports.BooleanKeyframeTrack = BooleanKeyframeTrack; + exports.PropertyMixer = PropertyMixer; + exports.PropertyBinding = PropertyBinding; + exports.KeyframeTrack = KeyframeTrack; + exports.AnimationUtils = AnimationUtils; + exports.AnimationObjectGroup = AnimationObjectGroup; + exports.AnimationMixer = AnimationMixer; + exports.AnimationClip = AnimationClip; + exports.Uniform = Uniform; + exports.InstancedBufferGeometry = InstancedBufferGeometry; + exports.BufferGeometry = BufferGeometry; + exports.Geometry = Geometry; + exports.InterleavedBufferAttribute = InterleavedBufferAttribute; + exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; + exports.InterleavedBuffer = InterleavedBuffer; + exports.InstancedBufferAttribute = InstancedBufferAttribute; + exports.Face3 = Face3; + exports.Object3D = Object3D; + exports.Raycaster = Raycaster; + exports.Layers = Layers; + exports.EventDispatcher = EventDispatcher; + exports.Clock = Clock; + exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; + exports.LinearInterpolant = LinearInterpolant; + exports.DiscreteInterpolant = DiscreteInterpolant; + exports.CubicInterpolant = CubicInterpolant; + exports.Interpolant = Interpolant; + exports.Triangle = Triangle; + exports.Math = _Math; + exports.Spherical = Spherical; + exports.Cylindrical = Cylindrical; + exports.Plane = Plane; + exports.Frustum = Frustum; + exports.Sphere = Sphere; + exports.Ray = Ray; + exports.Matrix4 = Matrix4; + exports.Matrix3 = Matrix3; + exports.Box3 = Box3; + exports.Box2 = Box2; + exports.Line3 = Line3; + exports.Euler = Euler; + exports.Vector4 = Vector4; + exports.Vector3 = Vector3; + exports.Vector2 = Vector2; + exports.Quaternion = Quaternion; + exports.Color = Color; + exports.ImmediateRenderObject = ImmediateRenderObject; + exports.VertexNormalsHelper = VertexNormalsHelper; + exports.SpotLightHelper = SpotLightHelper; + exports.SkeletonHelper = SkeletonHelper; + exports.PointLightHelper = PointLightHelper; + exports.RectAreaLightHelper = RectAreaLightHelper; + exports.HemisphereLightHelper = HemisphereLightHelper; + exports.GridHelper = GridHelper; + exports.PolarGridHelper = PolarGridHelper; + exports.PositionalAudioHelper = PositionalAudioHelper; + exports.FaceNormalsHelper = FaceNormalsHelper; + exports.DirectionalLightHelper = DirectionalLightHelper; + exports.CameraHelper = CameraHelper; + exports.BoxHelper = BoxHelper; + exports.Box3Helper = Box3Helper; + exports.PlaneHelper = PlaneHelper; + exports.ArrowHelper = ArrowHelper; + exports.AxesHelper = AxesHelper; + exports.Shape = Shape; + exports.Path = Path; + exports.ShapePath = ShapePath; + exports.Font = Font; + exports.CurvePath = CurvePath; + exports.Curve = Curve; + exports.ImageUtils = ImageUtils; + exports.ShapeUtils = ShapeUtils; + exports.WebGLUtils = WebGLUtils; + exports.WireframeGeometry = WireframeGeometry; + exports.ParametricGeometry = ParametricGeometry; + exports.ParametricBufferGeometry = ParametricBufferGeometry; + exports.TetrahedronGeometry = TetrahedronGeometry; + exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; + exports.OctahedronGeometry = OctahedronGeometry; + exports.OctahedronBufferGeometry = OctahedronBufferGeometry; + exports.IcosahedronGeometry = IcosahedronGeometry; + exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; + exports.DodecahedronGeometry = DodecahedronGeometry; + exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; + exports.PolyhedronGeometry = PolyhedronGeometry; + exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; + exports.TubeGeometry = TubeGeometry; + exports.TubeBufferGeometry = TubeBufferGeometry; + exports.TorusKnotGeometry = TorusKnotGeometry; + exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; + exports.TorusGeometry = TorusGeometry; + exports.TorusBufferGeometry = TorusBufferGeometry; + exports.TextGeometry = TextGeometry; + exports.TextBufferGeometry = TextBufferGeometry; + exports.SphereGeometry = SphereGeometry; + exports.SphereBufferGeometry = SphereBufferGeometry; + exports.RingGeometry = RingGeometry; + exports.RingBufferGeometry = RingBufferGeometry; + exports.PlaneGeometry = PlaneGeometry; + exports.PlaneBufferGeometry = PlaneBufferGeometry; + exports.LatheGeometry = LatheGeometry; + exports.LatheBufferGeometry = LatheBufferGeometry; + exports.ShapeGeometry = ShapeGeometry; + exports.ShapeBufferGeometry = ShapeBufferGeometry; + exports.ExtrudeGeometry = ExtrudeGeometry; + exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; + exports.EdgesGeometry = EdgesGeometry; + exports.ConeGeometry = ConeGeometry; + exports.ConeBufferGeometry = ConeBufferGeometry; + exports.CylinderGeometry = CylinderGeometry; + exports.CylinderBufferGeometry = CylinderBufferGeometry; + exports.CircleGeometry = CircleGeometry; + exports.CircleBufferGeometry = CircleBufferGeometry; + exports.BoxGeometry = BoxGeometry; + exports.CubeGeometry = BoxGeometry; + exports.BoxBufferGeometry = BoxBufferGeometry; + exports.ShadowMaterial = ShadowMaterial; + exports.SpriteMaterial = SpriteMaterial; + exports.RawShaderMaterial = RawShaderMaterial; + exports.ShaderMaterial = ShaderMaterial; + exports.PointsMaterial = PointsMaterial; + exports.MeshPhysicalMaterial = MeshPhysicalMaterial; + exports.MeshStandardMaterial = MeshStandardMaterial; + exports.MeshPhongMaterial = MeshPhongMaterial; + exports.MeshToonMaterial = MeshToonMaterial; + exports.MeshNormalMaterial = MeshNormalMaterial; + exports.MeshLambertMaterial = MeshLambertMaterial; + exports.MeshDepthMaterial = MeshDepthMaterial; + exports.MeshDistanceMaterial = MeshDistanceMaterial; + exports.MeshBasicMaterial = MeshBasicMaterial; + exports.MeshMatcapMaterial = MeshMatcapMaterial; + exports.LineDashedMaterial = LineDashedMaterial; + exports.LineBasicMaterial = LineBasicMaterial; + exports.Material = Material; + exports.Float64BufferAttribute = Float64BufferAttribute; + exports.Float32BufferAttribute = Float32BufferAttribute; + exports.Uint32BufferAttribute = Uint32BufferAttribute; + exports.Int32BufferAttribute = Int32BufferAttribute; + exports.Uint16BufferAttribute = Uint16BufferAttribute; + exports.Int16BufferAttribute = Int16BufferAttribute; + exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; + exports.Uint8BufferAttribute = Uint8BufferAttribute; + exports.Int8BufferAttribute = Int8BufferAttribute; + exports.BufferAttribute = BufferAttribute; + exports.ArcCurve = ArcCurve; + exports.CatmullRomCurve3 = CatmullRomCurve3; + exports.CubicBezierCurve = CubicBezierCurve; + exports.CubicBezierCurve3 = CubicBezierCurve3; + exports.EllipseCurve = EllipseCurve; + exports.LineCurve = LineCurve; + exports.LineCurve3 = LineCurve3; + exports.QuadraticBezierCurve = QuadraticBezierCurve; + exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; + exports.SplineCurve = SplineCurve; + exports.REVISION = REVISION; + exports.MOUSE = MOUSE; + exports.CullFaceNone = CullFaceNone; + exports.CullFaceBack = CullFaceBack; + exports.CullFaceFront = CullFaceFront; + exports.CullFaceFrontBack = CullFaceFrontBack; + exports.FrontFaceDirectionCW = FrontFaceDirectionCW; + exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; + exports.BasicShadowMap = BasicShadowMap; + exports.PCFShadowMap = PCFShadowMap; + exports.PCFSoftShadowMap = PCFSoftShadowMap; + exports.FrontSide = FrontSide; + exports.BackSide = BackSide; + exports.DoubleSide = DoubleSide; + exports.FlatShading = FlatShading; + exports.SmoothShading = SmoothShading; + exports.NoColors = NoColors; + exports.FaceColors = FaceColors; + exports.VertexColors = VertexColors; + exports.NoBlending = NoBlending; + exports.NormalBlending = NormalBlending; + exports.AdditiveBlending = AdditiveBlending; + exports.SubtractiveBlending = SubtractiveBlending; + exports.MultiplyBlending = MultiplyBlending; + exports.CustomBlending = CustomBlending; + exports.AddEquation = AddEquation; + exports.SubtractEquation = SubtractEquation; + exports.ReverseSubtractEquation = ReverseSubtractEquation; + exports.MinEquation = MinEquation; + exports.MaxEquation = MaxEquation; + exports.ZeroFactor = ZeroFactor; + exports.OneFactor = OneFactor; + exports.SrcColorFactor = SrcColorFactor; + exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; + exports.SrcAlphaFactor = SrcAlphaFactor; + exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; + exports.DstAlphaFactor = DstAlphaFactor; + exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; + exports.DstColorFactor = DstColorFactor; + exports.OneMinusDstColorFactor = OneMinusDstColorFactor; + exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; + exports.NeverDepth = NeverDepth; + exports.AlwaysDepth = AlwaysDepth; + exports.LessDepth = LessDepth; + exports.LessEqualDepth = LessEqualDepth; + exports.EqualDepth = EqualDepth; + exports.GreaterEqualDepth = GreaterEqualDepth; + exports.GreaterDepth = GreaterDepth; + exports.NotEqualDepth = NotEqualDepth; + exports.MultiplyOperation = MultiplyOperation; + exports.MixOperation = MixOperation; + exports.AddOperation = AddOperation; + exports.NoToneMapping = NoToneMapping; + exports.LinearToneMapping = LinearToneMapping; + exports.ReinhardToneMapping = ReinhardToneMapping; + exports.Uncharted2ToneMapping = Uncharted2ToneMapping; + exports.CineonToneMapping = CineonToneMapping; + exports.ACESFilmicToneMapping = ACESFilmicToneMapping; + exports.UVMapping = UVMapping; + exports.CubeReflectionMapping = CubeReflectionMapping; + exports.CubeRefractionMapping = CubeRefractionMapping; + exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; + exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; + exports.SphericalReflectionMapping = SphericalReflectionMapping; + exports.CubeUVReflectionMapping = CubeUVReflectionMapping; + exports.CubeUVRefractionMapping = CubeUVRefractionMapping; + exports.RepeatWrapping = RepeatWrapping; + exports.ClampToEdgeWrapping = ClampToEdgeWrapping; + exports.MirroredRepeatWrapping = MirroredRepeatWrapping; + exports.NearestFilter = NearestFilter; + exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; + exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; + exports.LinearFilter = LinearFilter; + exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; + exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; + exports.UnsignedByteType = UnsignedByteType; + exports.ByteType = ByteType; + exports.ShortType = ShortType; + exports.UnsignedShortType = UnsignedShortType; + exports.IntType = IntType; + exports.UnsignedIntType = UnsignedIntType; + exports.FloatType = FloatType; + exports.HalfFloatType = HalfFloatType; + exports.UnsignedShort4444Type = UnsignedShort4444Type; + exports.UnsignedShort5551Type = UnsignedShort5551Type; + exports.UnsignedShort565Type = UnsignedShort565Type; + exports.UnsignedInt248Type = UnsignedInt248Type; + exports.AlphaFormat = AlphaFormat; + exports.RGBFormat = RGBFormat; + exports.RGBAFormat = RGBAFormat; + exports.LuminanceFormat = LuminanceFormat; + exports.LuminanceAlphaFormat = LuminanceAlphaFormat; + exports.RGBEFormat = RGBEFormat; + exports.DepthFormat = DepthFormat; + exports.DepthStencilFormat = DepthStencilFormat; + exports.RedFormat = RedFormat; + exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; + exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; + exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; + exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; + exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; + exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; + exports.RGB_ETC1_Format = RGB_ETC1_Format; + exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; + exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; + exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; + exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; + exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; + exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; + exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; + exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; + exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; + exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; + exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; + exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; + exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; + exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; + exports.LoopOnce = LoopOnce; + exports.LoopRepeat = LoopRepeat; + exports.LoopPingPong = LoopPingPong; + exports.InterpolateDiscrete = InterpolateDiscrete; + exports.InterpolateLinear = InterpolateLinear; + exports.InterpolateSmooth = InterpolateSmooth; + exports.ZeroCurvatureEnding = ZeroCurvatureEnding; + exports.ZeroSlopeEnding = ZeroSlopeEnding; + exports.WrapAroundEnding = WrapAroundEnding; + exports.TrianglesDrawMode = TrianglesDrawMode; + exports.TriangleStripDrawMode = TriangleStripDrawMode; + exports.TriangleFanDrawMode = TriangleFanDrawMode; + exports.LinearEncoding = LinearEncoding; + exports.sRGBEncoding = sRGBEncoding; + exports.GammaEncoding = GammaEncoding; + exports.RGBEEncoding = RGBEEncoding; + exports.LogLuvEncoding = LogLuvEncoding; + exports.RGBM7Encoding = RGBM7Encoding; + exports.RGBM16Encoding = RGBM16Encoding; + exports.RGBDEncoding = RGBDEncoding; + exports.BasicDepthPacking = BasicDepthPacking; + exports.RGBADepthPacking = RGBADepthPacking; + exports.TangentSpaceNormalMap = TangentSpaceNormalMap; + exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; + exports.Face4 = Face4; + exports.LineStrip = LineStrip; + exports.LinePieces = LinePieces; + exports.MeshFaceMaterial = MeshFaceMaterial; + exports.MultiMaterial = MultiMaterial; + exports.PointCloud = PointCloud; + exports.Particle = Particle; + exports.ParticleSystem = ParticleSystem; + exports.PointCloudMaterial = PointCloudMaterial; + exports.ParticleBasicMaterial = ParticleBasicMaterial; + exports.ParticleSystemMaterial = ParticleSystemMaterial; + exports.Vertex = Vertex; + exports.DynamicBufferAttribute = DynamicBufferAttribute; + exports.Int8Attribute = Int8Attribute; + exports.Uint8Attribute = Uint8Attribute; + exports.Uint8ClampedAttribute = Uint8ClampedAttribute; + exports.Int16Attribute = Int16Attribute; + exports.Uint16Attribute = Uint16Attribute; + exports.Int32Attribute = Int32Attribute; + exports.Uint32Attribute = Uint32Attribute; + exports.Float32Attribute = Float32Attribute; + exports.Float64Attribute = Float64Attribute; + exports.ClosedSplineCurve3 = ClosedSplineCurve3; + exports.SplineCurve3 = SplineCurve3; + exports.Spline = Spline; + exports.AxisHelper = AxisHelper; + exports.BoundingBoxHelper = BoundingBoxHelper; + exports.EdgesHelper = EdgesHelper; + exports.WireframeHelper = WireframeHelper; + exports.XHRLoader = XHRLoader; + exports.BinaryTextureLoader = BinaryTextureLoader; + exports.GeometryUtils = GeometryUtils; + exports.Projector = Projector; + exports.CanvasRenderer = CanvasRenderer; + exports.JSONLoader = JSONLoader; + exports.SceneUtils = SceneUtils; + exports.LensFlare = LensFlare; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/demo/ar/three.js/examples/vendor/three.js/build/three.min.js b/demo/ar/three.js/examples/vendor/three.js/build/three.min.js new file mode 100644 index 0000000..a1b5bce --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/build/three.min.js @@ -0,0 +1,975 @@ +// threejs.org/license +(function(l,ta){"object"===typeof exports&&"undefined"!==typeof module?ta(exports):"function"===typeof define&&define.amd?define(["exports"],ta):(l=l||self,ta(l.THREE={}))})(this,function(l){function ta(){}function B(a,b){this.x=a||0;this.y=b||0}function aa(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function n(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function ba(){this.elements=[1,0,0,0,1,0,0,0,1];0b&&(b=a[c]);return b}function z(){Object.defineProperty(this,"id",{value:Yf+=2});this.uuid=K.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}} +function Rb(a,b,c,d,e,f){N.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new ub(a,b,c,d,e,f));this.mergeVertices()}function ub(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,l,ua,F,Zf){var r=f/ua,u=g/F,x=f/2,w=g/2,A=l/2;g=ua+1;var y=F+1,X=f=0,Q,J,D=new n;for(J=0;Jm;m++){if(q=d[m])if(h=q[0],k=q[1]){p&&e.addAttribute("morphTarget"+m, +p[h]);f&&e.addAttribute("morphNormal"+m,f[h]);c[m]=k;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function kg(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function bb(a,b,c,d,e,f,g,h,k,m){a=void 0!==a?a:[];W.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h,k,m);this.flipY=!1}function Sb(a,b,c,d){W.call(this,null); +this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Tb(a,b,c,d){W.call(this,null);this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Ub(a,b,c){var d=a[0];if(0>=d||0/gm,function(a,c){a=T[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return ee(a)})}function kf(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g, +function(a,c,d,e){a="";for(c=parseInt(c);cd||a.height>d)e=d/Math.max(a.width,a.height);if(1>e||!0===b){if("undefined"!==typeof HTMLImageElement&&a instanceof HTMLImageElement||"undefined"!==typeof HTMLCanvasElement&&a instanceof HTMLCanvasElement||"undefined"!==typeof ImageBitmap&&a instanceof ImageBitmap)return d=b?K.floorPowerOfTwo:Math.floor,b=d(e*a.width),e=d(e*a.height), +void 0===C&&(C=h(b,e)),c=c?h(b,e):C,c.width=b,c.height=e,c.getContext("2d").drawImage(a,0,0,b,e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+a.width+"x"+a.height+") to ("+b+"x"+e+")."),c;"data"in a&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+a.width+"x"+a.height+").")}return a}function m(a){return K.isPowerOfTwo(a.width)&&K.isPowerOfTwo(a.height)}function p(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function q(b,c,e, +f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,f))*Math.LOG2E}function v(a,c){if(!e.isWebGL2)return a;var d=a;6403===a&&(5126===c&&(d=33326),5131===c&&(d=33325),5121===c&&(d=33321));6407===a&&(5126===c&&(d=34837),5131===c&&(d=34843),5121===c&&(d=32849));6408===a&&(5126===c&&(d=34836),5131===c&&(d=34842),5121===c&&(d=32856));33325===d||33326===d||34842===d||34836===d?b.get("EXT_color_buffer_float"):(34843===d||34837===d)&&console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead."); +return d}function l(a){return 1003===a||1004===a||1005===a?9728:9729}function r(b){b=b.target;b.removeEventListener("dispose",r);var c=d.get(b);void 0!==c.__webglInit&&(a.deleteTexture(c.__webglTexture),d.remove(b));b.isVideoTexture&&delete E[b.id];g.memory.textures--}function u(b){b=b.target;b.removeEventListener("dispose",u);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e= +0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.memory.textures--}function n(a,b){var e=d.get(a);if(a.isVideoTexture){var f=a.id,h=g.render.frame;E[f]!==h&&(E[f]=h,a.update())}if(0r;r++)t[r]=g||l?l?b.image[r].image: +b.image[r]:k(b.image[r],!1,!0,e.maxCubemapSize);var u=t[0],n=m(u)||e.isWebGL2,x=f.convert(b.format),w=f.convert(b.type),Q=v(x,w);y(34067,b,n);for(r=0;6>r;r++)if(g)for(var X,J=t[r].mipmaps,A=0,F=J.length;A=e.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+a+" texture units while this GPU supports only "+e.maxTextures);z+=1;return a};this.resetTextureUnits=function(){z=0};this.setTexture2D=n;this.setTexture2DArray=function(a,b){var e=d.get(a);0r;r++)h.__webglFramebuffer[r]=a.createFramebuffer();else if(h.__webglFramebuffer=a.createFramebuffer(),r)if(e.isWebGL2){h.__webglMultisampledFramebuffer= +a.createFramebuffer();h.__webglColorRenderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,h.__webglColorRenderbuffer);r=f.convert(b.texture.format);var x=f.convert(b.texture.type);r=v(r,x);x=B(b);a.renderbufferStorageMultisample(36161,x,r,b.width,b.height);a.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);a.framebufferRenderbuffer(36160,36064,36161,h.__webglColorRenderbuffer);a.bindRenderbuffer(36161,null);b.depthBuffer&&(h.__webglDepthRenderbuffer=a.createRenderbuffer(),F(h.__webglDepthRenderbuffer, +b,!0));a.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");if(l){c.bindTexture(34067,k.__webglTexture);y(34067,b.texture,t);for(r=0;6>r;r++)ua(h.__webglFramebuffer[r],b,36064,34069+r);p(b.texture,t)&&q(34067,b.texture,b.width,b.height);c.bindTexture(34067,null)}else c.bindTexture(3553,k.__webglTexture),y(3553,b.texture,t),ua(h.__webglFramebuffer,b,36064,3553),p(b.texture,t)&&q(3553,b.texture,b.width,b.height),c.bindTexture(3553, +null);if(b.depthBuffer){h=d.get(b);k=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(k)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(36160,h.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width=== +b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);n(b.depthTexture,0);h=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(36160,36096,3553,h,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(36160,33306,3553,h,0);else throw Error("Unknown depthTexture format");}else if(k)for(h.__webglDepthbuffer=[],k=0;6>k;k++)a.bindFramebuffer(36160,h.__webglFramebuffer[k]), +h.__webglDepthbuffer[k]=a.createRenderbuffer(),F(h.__webglDepthbuffer[k],b);else a.bindFramebuffer(36160,h.__webglFramebuffer),h.__webglDepthbuffer=a.createRenderbuffer(),F(h.__webglDepthbuffer,b);a.bindFramebuffer(36160,null)}};this.updateRenderTargetMipmap=function(a){var b=a.texture,f=m(a)||e.isWebGL2;if(p(b,f)){f=a.isWebGLRenderTargetCube?34067:3553;var g=d.get(b).__webglTexture;c.bindTexture(f,g);q(f,b,a.width,a.height);c.bindTexture(f,null)}};this.updateMultisampleRenderTarget=function(b){if(b.isWebGLMultisampleRenderTarget)if(e.isWebGL2){var c= +d.get(b);a.bindFramebuffer(36008,c.__webglMultisampledFramebuffer);a.bindFramebuffer(36009,c.__webglFramebuffer);c=b.width;var f=b.height,g=16384;b.depthBuffer&&(g|=256);b.stencilBuffer&&(g|=1024);a.blitFramebuffer(0,0,c,f,0,0,c,f,g,9728)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")};this.safeSetTexture2D=function(a,b){a&&a.isWebGLRenderTarget&&(!1===G&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."), +G=!0),a=a.texture);n(a,b)};this.safeSetTextureCube=function(a,b){a&&a.isWebGLRenderTargetCube&&(!1===I&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),I=!0),a=a.texture);a&&a.isCubeTexture||Array.isArray(a.image)&&6===a.image.length?A(a,b):w(a,b)}}function pf(a,b,c){return{convert:function(a){if(1E3===a)return 10497;if(1001===a)return 33071;if(1002===a)return 33648;if(1003===a)return 9728;if(1004===a)return 9984; +if(1005===a)return 9986;if(1006===a)return 9729;if(1007===a)return 9985;if(1008===a)return 9987;if(1009===a)return 5121;if(1017===a)return 32819;if(1018===a)return 32820;if(1019===a)return 33635;if(1010===a)return 5120;if(1011===a)return 5122;if(1012===a)return 5123;if(1013===a)return 5124;if(1014===a)return 5125;if(1015===a)return 5126;if(1016===a){if(c.isWebGL2)return 5131;var d=b.get("OES_texture_half_float");if(null!==d)return d.HALF_FLOAT_OES}if(1021===a)return 6406;if(1022===a)return 6407;if(1023=== +a)return 6408;if(1024===a)return 6409;if(1025===a)return 6410;if(1026===a)return 6402;if(1027===a)return 34041;if(1028===a)return 6403;if(100===a)return 32774;if(101===a)return 32778;if(102===a)return 32779;if(200===a)return 0;if(201===a)return 1;if(202===a)return 768;if(203===a)return 769;if(204===a)return 770;if(205===a)return 771;if(206===a)return 772;if(207===a)return 773;if(208===a)return 774;if(209===a)return 775;if(210===a)return 776;if(33776===a||33777===a||33778===a||33779===a)if(d=b.get("WEBGL_compressed_texture_s3tc"), +null!==d){if(33776===a)return d.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===a)return d.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===a)return d.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===a)return d.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840===a||35841===a||35842===a||35843===a)if(d=b.get("WEBGL_compressed_texture_pvrtc"),null!==d){if(35840===a)return d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===a)return d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===a)return d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===a)return d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196=== +a&&(d=b.get("WEBGL_compressed_texture_etc1"),null!==d))return d.COMPRESSED_RGB_ETC1_WEBGL;if(37808===a||37809===a||37810===a||37811===a||37812===a||37813===a||37814===a||37815===a||37816===a||37817===a||37818===a||37819===a||37820===a||37821===a)if(d=b.get("WEBGL_compressed_texture_astc"),null!==d)return a;if(103===a||104===a){if(c.isWebGL2){if(103===a)return 32775;if(104===a)return 32776}d=b.get("EXT_blend_minmax");if(null!==d){if(103===a)return d.MIN_EXT;if(104===a)return d.MAX_EXT}}if(1020===a){if(c.isWebGL2)return 34042; +d=b.get("WEBGL_depth_texture");if(null!==d)return d.UNSIGNED_INT_24_8_WEBGL}return 0}}}function Vb(){C.call(this);this.type="Group"}function Xa(){C.call(this);this.type="Camera";this.matrixWorldInverse=new P;this.projectionMatrix=new P;this.projectionMatrixInverse=new P}function ja(a,b,c,d){Xa.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset= +0;this.updateProjectionMatrix()}function Gc(a){ja.call(this);this.cameras=a||[]}function qf(a,b,c){rf.setFromMatrixPosition(b.matrixWorld);sf.setFromMatrixPosition(c.matrixWorld);var d=rf.distanceTo(sf),e=b.projectionMatrix.elements,f=c.projectionMatrix.elements,g=e[14]/(e[10]-1);c=e[14]/(e[10]+1);var h=(e[9]+1)/e[5],k=(e[9]-1)/e[5],m=(e[8]-1)/e[0],p=(f[8]+1)/f[0];e=g*m;f=g*p;p=d/(-m+p);m=p*-m;b.matrixWorld.decompose(a.position,a.quaternion,a.scale);a.translateX(m);a.translateZ(p);a.matrixWorld.compose(a.position, +a.quaternion,a.scale);a.matrixWorldInverse.getInverse(a.matrixWorld);b=g+p;g=c+p;a.projectionMatrix.makePerspective(e-m,f+(d-m),h*c/g*b,k*c/g*b,b,g)}function tf(a){function b(){return null!==e&&!0===e.isPresenting}function c(){if(b()){var c=e.getEyeParameters("left"),f=c.renderWidth*p;c=c.renderHeight*p;y=a.getPixelRatio();a.getSize(w);a.setDrawingBufferSize(2*f,c,1);J.start()}else d.enabled&&a.setDrawingBufferSize(w.width,w.height,y),J.stop()}var d=this,e=null,f=null,g=null,h=[],k=new P,m=new P, +p=1,q="stage";"undefined"!==typeof window&&"VRFrameData"in window&&(f=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));var v=new P,l=new aa,r=new n,u=new ja;u.bounds=new Y(0,0,.5,1);u.layers.enable(1);var x=new ja;x.bounds=new Y(.5,0,.5,1);x.layers.enable(2);var A=new Gc([u,x]);A.layers.enable(1);A.layers.enable(2);var w=new B,y,D=[];this.enabled=!1;this.getController=function(a){var b=h[a];void 0===b&&(b=new Vb,b.matrixAutoUpdate=!1,b.visible=!1,h[a]=b);return b};this.getDevice= +function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);J.setContext(a)};this.setFramebufferScaleFactor=function(a){p=a};this.setFrameOfReferenceType=function(a){q=a};this.setPoseTarget=function(a){void 0!==a&&(g=a)};this.getCamera=function(a){var c="stage"===q?1.6:0;if(!1===b())return a.position.set(0,c,0),a.rotation.set(0,0,0),a;e.depthNear=a.near;e.depthFar=a.far;e.getFrameData(f);if("stage"===q){var d=e.stageParameters;d?k.fromArray(d.sittingToStandingTransform):k.makeTranslation(0, +c,0)}c=f.pose;d=null!==g?g:a;d.matrix.copy(k);d.matrix.decompose(d.position,d.quaternion,d.scale);null!==c.orientation&&(l.fromArray(c.orientation),d.quaternion.multiply(l));null!==c.position&&(l.setFromRotationMatrix(k),r.fromArray(c.position),r.applyQuaternion(l),d.position.add(r));d.updateMatrixWorld();u.near=a.near;x.near=a.near;u.far=a.far;x.far=a.far;u.matrixWorldInverse.fromArray(f.leftViewMatrix);x.matrixWorldInverse.fromArray(f.rightViewMatrix);m.getInverse(k);"stage"===q&&(u.matrixWorldInverse.multiply(m), +x.matrixWorldInverse.multiply(m));a=d.parent;null!==a&&(v.getInverse(a.matrixWorld),u.matrixWorldInverse.multiply(v),x.matrixWorldInverse.multiply(v));u.matrixWorld.getInverse(u.matrixWorldInverse);x.matrixWorld.getInverse(x.matrixWorldInverse);u.projectionMatrix.fromArray(f.leftProjectionMatrix);x.projectionMatrix.fromArray(f.rightProjectionMatrix);qf(A,u,x);a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&u.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4=== +a.rightBounds.length&&x.bounds.fromArray(a.rightBounds));a:for(a=0;af.matrixWorld.determinant();ca.setMaterial(e,h);var k=l(a,c,e,f),m=!1;if(b!==d.id||O!==k.id||da!==(!0===e.wireframe))b=d.id,O=k.id,da=!0===e.wireframe,m=!0;f.morphTargetInfluences&&(va.update(f,d,e,k),m=!0);h=d.index;var p=d.attributes.position;c=1;!0===e.wireframe&&(h=sa.getWireframeAttribute(d),c=2);a=wa;if(null!==h){var q=pa.get(h);a=ya;a.setIndex(q)}if(m){if(d&& +d.isInstancedBufferGeometry&&!Aa.isWebGL2&&null===na.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{ca.initAttributes();m=d.attributes;k=k.getAttributes();var v=e.defaultAttributeValues;for(D in k){var r=k[D];if(0<=r){var t=m[D];if(void 0!==t){var n=t.normalized,u=t.itemSize,x=pa.get(t);if(void 0!==x){var w=x.buffer,A=x.type;x=x.bytesPerElement;if(t.isInterleavedBufferAttribute){var y= +t.data,J=y.stride;t=t.offset;y&&y.isInstancedInterleavedBuffer?(ca.enableAttributeAndDivisor(r,y.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=y.meshPerAttribute*y.count)):ca.enableAttribute(r);L.bindBuffer(34962,w);L.vertexAttribPointer(r,u,A,n,J*x,t*x)}else t.isInstancedBufferAttribute?(ca.enableAttributeAndDivisor(r,t.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=t.meshPerAttribute*t.count)):ca.enableAttribute(r),L.bindBuffer(34962,w),L.vertexAttribPointer(r, +u,A,n,0,0)}}else if(void 0!==v&&(n=v[D],void 0!==n))switch(n.length){case 2:L.vertexAttrib2fv(r,n);break;case 3:L.vertexAttrib3fv(r,n);break;case 4:L.vertexAttrib4fv(r,n);break;default:L.vertexAttrib1fv(r,n)}}}ca.disableUnusedAttributes()}null!==h&&L.bindBuffer(34963,q.buffer)}q=Infinity;null!==h?q=h.count:void 0!==p&&(q=p.count);h=d.drawRange.start*c;p=null!==g?g.start*c:0;var D=Math.max(h,p);g=Math.max(0,Math.min(q,h+d.drawRange.count*c,p+(null!==g?g.count*c:Infinity))-1-D+1);if(0!==g){if(f.isMesh)if(!0=== +e.wireframe)ca.setLineWidth(e.wireframeLinewidth*(null===N?H:1)),a.setMode(1);else switch(f.drawMode){case 0:a.setMode(4);break;case 1:a.setMode(5);break;case 2:a.setMode(6)}else f.isLine?(e=e.linewidth,void 0===e&&(e=1),ca.setLineWidth(e*(null===N?H:1)),f.isLineSegments?a.setMode(1):f.isLineLoop?a.setMode(2):a.setMode(3)):f.isPoints?a.setMode(0):f.isSprite&&a.setMode(4);d&&d.isInstancedBufferGeometry?0c;c++){var q=p[h[c]];var l=p[h[(c+1)%3]];f[0]=Math.min(q,l);f[1]=Math.max(q,l);q=f[0]+","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)m=g[q],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new n,null!==a.index){k= +a.attributes.position;p=a.index;var t=a.groups;0===t.length&&(t=[{start:0,count:p.count,materialIndex:0}]);a=0;for(e=t.length;ac;c++)q=p.getX(m+c),l=p.getX(m+(c+1)%3),f[0]=Math.min(q,l),f[1]=Math.max(q,l),q=f[0]+","+f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)m=g[q],h.fromBufferAttribute(k,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,m.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,m=0,d= +k.count/3;mc;c++)g=3*m+c,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z);this.addAttribute("position",new E(b,3))}function Nc(a,b,c){N.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};this.fromBufferGeometry(new $b(a,b,c));this.mergeVertices()}function $b(a,b,c){z.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new n, +k=new n,m=new n,p=new n,q=new n,l,t;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");var r=b+1;for(l=0;l<=c;l++){var u=l/c;for(t=0;t<=b;t++){var x=t/b;a(x,u,k);e.push(k.x,k.y,k.z);0<=x-1E-5?(a(x-1E-5,u,m),p.subVectors(k,m)):(a(x+1E-5,u,m),p.subVectors(m,k));0<=u-1E-5?(a(x,u-1E-5,m),q.subVectors(k,m)):(a(x,u+1E-5,m),q.subVectors(m,k));h.crossVectors(p,q).normalize();f.push(h.x,h.y,h.z);g.push(x,u)}}for(l=0;ld&&1===a.x&&(k[b]=a.x-1);0===c.x&&0===c.z&&(k[b]=d/2/Math.PI+.5)}z.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new n,d=new n,g=new n,h=0;he&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position", +new E(h,3));this.addAttribute("normal",new E(h.slice(),3));this.addAttribute("uv",new E(k,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Pc(a,b){N.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new ac(a,b));this.mergeVertices()}function ac(a,b){ka.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Qc(a,b){N.call(this); +this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new yb(a,b));this.mergeVertices()}function yb(a,b){ka.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Rc(a,b){N.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new bc(a,b));this.mergeVertices()}function bc(a,b){var c= +(1+Math.sqrt(5))/2;ka.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Sc(a,b){N.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new cc(a,b));this.mergeVertices()}function cc(a,b){var c= +(1+Math.sqrt(5))/2,d=1/c;ka.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters= +{radius:a,detail:b}}function Tc(a,b,c,d,e,f){N.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new zb(a,b,c,d,e);this.tangents=a.tangents;this.normals=a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function zb(a,b,c,d,e){function f(e){p=a.getPointAt(e/b,p);var f=g.normals[e];e=g.binormals[e];for(l=0;l<=d;l++){var m=l/d*Math.PI* +2,q=Math.sin(m);m=-Math.cos(m);k.x=m*f.x+q*e.x;k.y=m*f.y+q*e.y;k.z=m*f.z+q*e.z;k.normalize();r.push(k.x,k.y,k.z);h.x=p.x+c*k.x;h.y=p.y+c*k.y;h.z=p.z+c*k.z;t.push(h.x,h.y,h.z)}}z.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new n,k=new n,m=new B,p=new n,q,l,t=[],r=[],u=[],x=[];for(q= +0;q=b;e-=d)f=wf(e,a[e],a[e+1],f);f&&Ab(f,f.next)&&(Wc(f),f=f.next);return f}function Xc(a,b){if(!a)return a; +b||(b=a);do{var c=!1;if(a.steiner||!Ab(a,a.next)&&0!==wa(a.prev,a,a.next))a=a.next;else{Wc(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b}function Yc(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,k=h;do null===k.z&&(k.z=je(k.x,k.y,d,e,f)),k.prevZ=k.prev,k=k.nextZ=k.next;while(k!==h);k.prevZ.nextZ=null;k.prevZ=null;h=k;var m,p,q,l,t=1;do{k=h;var r=h=null;for(p=0;k;){p++;var n=k;for(m=q=0;mq.x?p.x>t.x?p.x:t.x:q.x>t.x?q.x:t.x,y=p.y>q.y?p.y>t.y?p.y:t.y:q.y>t.y?q.y:t.y;m=je(p.x=m;){if(x!==r.prev&&x!==r.next&&Dd(p.x,p.y,q.x,q.y,t.x,t.y,x.x,x.y)&&0<=wa(x.prev,x,x.next)){r=!1;break a}x=x.prevZ}r=!0}}else a:if(r=a,p=r.prev,q=r,t=r.next,0<=wa(p,q,t))r=!1;else{for(m=r.next.next;m!==r.prev;){if(Dd(p.x,p.y,q.x,q.y,t.x,t.y,m.x,m.y)&&0<=wa(m.prev,m,m.next)){r=!1;break a}m=m.next}r=!0}if(r)b.push(k.i/c),b.push(a.i/c),b.push(n.i/c),Wc(a),h=a=n.next;else if(a=n,a===h){if(!g)Yc(Xc(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;k=a;do n=k.prev, +r=k.next.next,!Ab(n,r)&&xf(n,k,k.next,r)&&Zc(n,r)&&Zc(r,n)&&(g.push(n.i/h),g.push(k.i/h),g.push(r.i/h),Wc(k),Wc(k.next),k=a=r),k=k.next;while(k!==a);a=k;Yc(a,b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(k=g.i!==h.i){k=g;n=h;if(r=k.next.i!==n.i&&k.prev.i!==n.i){b:{r=k;do{if(r.i!==k.i&&r.next.i!==k.i&&r.i!==n.i&&r.next.i!==n.i&&xf(r,r.next,k,n)){r=!0;break b}r=r.next}while(r!==k);r=!1}r=!r}if(r=r&&Zc(k,n)&&Zc(n,k)){r=k;p=!1;q=(k.x+n.x)/2;n=(k.y+n.y)/2;do r.y>n!==r.next.y>n&& +r.next.y!==r.y&&q<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(p=!p),r=r.next;while(r!==k);r=p}k=r}if(k){a=yf(g,h);g=Xc(g,g.next);a=Xc(a,a.next);Yc(g,b,c,d,e,f);Yc(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function eh(a,b){return a.x-b.x}function fh(a,b){var c=b,d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x=c.x&&c.x>=g&&d!==c.x&&Dd(eh.x)&&Zc(c,a)&&(h=c,m=p)}c=c.next}return h}function je(a,b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function gh(a){var b= +a,c=a;do b.xwa(a.prev,a,a.next)?0<=wa(a,b,a.next)&&0<=wa(a,a.prev,b):0>wa(a,b,a.prev)|| +0>wa(a,a.next,b)}function yf(a,b){var c=new ke(a.i,a.x,a.y),d=new ke(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev=c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function wf(a,b,c,d){a=new ke(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a):(a.prev=a,a.next=a);return a}function Wc(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function ke(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next= +this.prev=null;this.steiner=!1}function zf(a){var b=a.length;2Number.EPSILON){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/k;b=b.y+d/k;g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new B(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new B(f/e,d/e)}function h(a,b){for(H=a.length;0<= +--H;){var c=H;var f=H-1;0>f&&(f=a.length-1);var g,h=w+2*F;for(g=0;gp;p++){var l=m[f[p]];var n=m[f[(p+1)%3]];d[0]=Math.min(l,n);d[1]=Math.max(l,n);l=d[0]+","+d[1];void 0===e[l]?e[l]={index1:d[0],index2:d[1], +face1:h,face2:void 0}:e[l].face2=h}for(l in e)if(d=e[l],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",new E(c,3))}function Fb(a,b,c,d,e,f,g,h){N.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new db(a,b,c,d,e,f,g,h));this.mergeVertices()}function db(a, +b,c,d,e,f,g,h){function k(c){var e,f=new B,k=new n,q=0,u=!0===c?a:b,w=!0===c?1:-1;var z=r;for(e=1;e<=d;e++)l.push(0,x*w,0),v.push(0,w,0),t.push(.5,.5),r++;var C=r;for(e=0;e<=d;e++){var E=e/d*h+g,G=Math.cos(E);E=Math.sin(E);k.x=u*E;k.y=x*w;k.z=u*G;l.push(k.x,k.y,k.z);v.push(0,w,0);f.x=.5*G+.5;f.y=.5*E*w+.5;t.push(f.x,f.y);r++}for(e=0;ethis.duration&&this.resetDuration()}function ih(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return lc;case "vector":case "vector2":case "vector3":case "vector4":return mc;case "color":return Hd;case "quaternion":return hd;case "bool":case "boolean":return Gd;case "string":return Jd}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+a);}function jh(a){if(void 0===a.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse"); +var b=ih(a.type);if(void 0===a.times){var c=[],d=[];pa.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)}function le(a,b,c){var d=this,e=!1,f=0,g=0,h=void 0;this.onStart=void 0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){g++;if(!1===e&&void 0!==d.onStart)d.onStart(a,f,g);e=!0};this.itemEnd=function(a){f++;if(void 0!==d.onProgress)d.onProgress(a,f,g);if(f===g&&(e=!1,void 0!==d.onLoad))d.onLoad()}; +this.itemError=function(a){if(void 0!==d.onError)d.onError(a)};this.resolveURL=function(a){return h?h(a):a};this.setURLModifier=function(a){h=a;return this}}function Ma(a){this.manager=void 0!==a?a:za}function Df(a){this.manager=void 0!==a?a:za}function Ef(a){this.manager=void 0!==a?a:za;this._parser=null}function me(a){this.manager=void 0!==a?a:za;this._parser=null}function id(a){this.manager=void 0!==a?a:za}function ne(a){this.manager=void 0!==a?a:za}function Kd(a){this.manager=void 0!==a?a:za} +function I(){this.type="Curve";this.arcLengthDivisions=200}function Ga(a,b,c,d,e,f,g,h){I.call(this);this.type="EllipseCurve";this.aX=a||0;this.aY=b||0;this.xRadius=c||1;this.yRadius=d||1;this.aStartAngle=e||0;this.aEndAngle=f||2*Math.PI;this.aClockwise=g||!1;this.aRotation=h||0}function nc(a,b,c,d,e,f){Ga.call(this,a,b,c,c,d,e,f);this.type="ArcCurve"}function oe(){var a=0,b=0,c=0,d=0;return{initCatmullRom:function(e,f,g,h,k){e=k*(g-e);h=k*(h-f);a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},initNonuniformCatmullRom:function(e, +f,g,h,k,m,p){e=((f-e)/k-(g-e)/(k+m)+(g-f)/m)*m;h=((g-f)/m-(h-f)/(m+p)+(h-g)/p)*m;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function qa(a,b,c,d){I.call(this);this.type="CatmullRomCurve3";this.points=a||[];this.closed=b||!1;this.curveType=c||"centripetal";this.tension=d||.5}function Ff(a,b,c,d,e){b=.5*(d-b);e=.5*(e-c);var f=a*a;return(2*c-2*d+b+e)*a*f+(-3*c+3*d-2*b-e)*f+b*a+c}function jd(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}function kd(a, +b,c,d,e){var f=1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}function Na(a,b,c,d){I.call(this);this.type="CubicBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B;this.v3=d||new B}function $a(a,b,c,d){I.call(this);this.type="CubicBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n;this.v3=d||new n}function xa(a,b){I.call(this);this.type="LineCurve";this.v1=a||new B;this.v2=b||new B}function Oa(a,b){I.call(this);this.type="LineCurve3";this.v1=a||new n;this.v2=b|| +new n}function Pa(a,b,c){I.call(this);this.type="QuadraticBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B}function ab(a,b,c){I.call(this);this.type="QuadraticBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n}function Qa(a){I.call(this);this.type="SplineCurve";this.points=a||[]}function eb(){I.call(this);this.type="CurvePath";this.curves=[];this.autoClose=!1}function Ra(a){eb.call(this);this.type="Path";this.currentPoint=new B;a&&this.setFromPoints(a)}function nb(a){Ra.call(this, +a);this.uuid=K.generateUUID();this.type="Shape";this.holes=[]}function ea(a,b){C.call(this);this.type="Light";this.color=new M(a);this.intensity=void 0!==b?b:1;this.receiveShadow=void 0}function Ld(a,b,c){ea.call(this,a,c);this.type="HemisphereLight";this.castShadow=void 0;this.position.copy(C.DefaultUp);this.updateMatrix();this.groundColor=new M(b)}function Nb(a){this.camera=a;this.bias=0;this.radius=1;this.mapSize=new B(512,512);this.map=null;this.matrix=new P}function Md(){Nb.call(this,new ja(50, +1,.5,500))}function Nd(a,b,c,d,e,f){ea.call(this,a,b);this.type="SpotLight";this.position.copy(C.DefaultUp);this.updateMatrix();this.target=new C;Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(a){this.intensity=a/Math.PI}});this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.penumbra=void 0!==e?e:0;this.decay=void 0!==f?f:1;this.shadow=new Md}function Od(a,b,c,d){ea.call(this,a,b);this.type="PointLight";Object.defineProperty(this,"power", +{get:function(){return 4*this.intensity*Math.PI},set:function(a){this.intensity=a/(4*Math.PI)}});this.distance=void 0!==c?c:0;this.decay=void 0!==d?d:1;this.shadow=new Nb(new ja(90,1,.5,500))}function ld(a,b,c,d,e,f){Xa.call(this);this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=void 0!==a?a:-1;this.right=void 0!==b?b:1;this.top=void 0!==c?c:1;this.bottom=void 0!==d?d:-1;this.near=void 0!==e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()}function Pd(){Nb.call(this, +new ld(-5,5,5,-5,.5,500))}function Qd(a,b){ea.call(this,a,b);this.type="DirectionalLight";this.position.copy(C.DefaultUp);this.updateMatrix();this.target=new C;this.shadow=new Pd}function Rd(a,b){ea.call(this,a,b);this.type="AmbientLight";this.castShadow=void 0}function Sd(a,b,c,d){ea.call(this,a,b);this.type="RectAreaLight";this.width=void 0!==c?c:10;this.height=void 0!==d?d:10}function Td(a){this.manager=void 0!==a?a:za;this.textures={}}function pe(a){this.manager=void 0!==a?a:za}function qe(a){this.manager= +void 0!==a?a:za;this.resourcePath=""}function re(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported.");this.manager=void 0!==a?a:za;this.options=void 0}function se(){this.type="ShapePath";this.color=new M;this.subPaths=[];this.currentPath=null}function te(a){this.type="Font";this.data=a}function Gf(a){this.manager=void 0!==a?a:za}function md(){} +function ue(a){this.manager=void 0!==a?a:za}function Hf(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new ja;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new ja;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function nd(a,b,c,d){C.call(this);this.type="CubeCamera";var e=new ja(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(1,0,0));this.add(e);var f=new ja(90,1,a,b);f.up.set(0,-1,0);f.lookAt(new n(-1,0,0));this.add(f);var g=new ja(90, +1,a,b);g.up.set(0,0,1);g.lookAt(new n(0,1,0));this.add(g);var h=new ja(90,1,a,b);h.up.set(0,0,-1);h.lookAt(new n(0,-1,0));this.add(h);var k=new ja(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new n(0,0,1));this.add(k);var m=new ja(90,1,a,b);m.up.set(0,-1,0);m.lookAt(new n(0,0,-1));this.add(m);d=d||{format:1022,magFilter:1006,minFilter:1006};this.renderTarget=new pb(c,c,d);this.renderTarget.texture.name="CubeCamera";this.update=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=a.getRenderTarget(), +d=this.renderTarget,p=d.texture.generateMipmaps;d.texture.generateMipmaps=!1;a.setRenderTarget(d,0);a.render(b,e);a.setRenderTarget(d,1);a.render(b,f);a.setRenderTarget(d,2);a.render(b,g);a.setRenderTarget(d,3);a.render(b,h);a.setRenderTarget(d,4);a.render(b,k);d.texture.generateMipmaps=p;a.setRenderTarget(d,5);a.render(b,m);a.setRenderTarget(c)};this.clear=function(a,b,c,d){for(var e=a.getRenderTarget(),f=this.renderTarget,g=0;6>g;g++)a.setRenderTarget(f,g),a.clear(b,c,d);a.setRenderTarget(e)}}function ve(a){this.autoStart= +void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}function we(){C.call(this);this.type="AudioListener";this.context=xe.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null;this.timeDelta=0}function oc(a){C.call(this);this.type="Audio";this.listener=a;this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay=!1;this.buffer=null;this.detune=0;this.loop=!1;this.offset= +this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function ye(a){oc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function ze(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);a.getOutput().connect(this.analyser)}function Ae(a,b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b= +this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function If(a,b,c){c=c||ma.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function ma(a,b,c){this.path=b;this.parsedPath=c||ma.parseTrackName(b);this.node=ma.findNode(a,this.parsedPath.nodeName)||a;this.rootNode=a}function Jf(){this.uuid=K.generateUUID();this._objects=Array.prototype.slice.call(arguments); +this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}}function Kf(a,b,c){this._mixer=a;this._clip=b;this._localRoot=c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400, +endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale=this.timeScale=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd= +this.zeroSlopeAtStart=!0}function Be(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function Ud(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function Ce(){z.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function De(a,b,c){xb.call(this,a,b);this.meshPerAttribute=c||1}function Ee(a,b,c,d){"number"===typeof c&&(d=c,c=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")); +S.call(this,a,b,c);this.meshPerAttribute=d||1}function Lf(a,b,c,d){this.ray=new wb(a,b);this.near=c||0;this.far=d||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points.");return this.Points}}})}function Mf(a,b){return a.distance-b.distance}function Fe(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e= +a.length;dc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new E(b,3));b=new R({fog:!1});this.cone=new V(a,b);this.add(this.cone);this.update()}function Pf(a){var b=[];a&&a.isBone&&b.push(a);for(var c=0;c +a?-1:0b;b++)a[b]=(16>b?"0":"")+b.toString(16);return function(){var b=4294967295*Math.random()|0,d=4294967295*Math.random()|0,e=4294967295*Math.random()|0,f=4294967295*Math.random()|0;return(a[b&255]+a[b>>8&255]+a[b>>16&255]+a[b>>24&255]+"-"+a[d&255]+a[d>>8&255]+"-"+a[d>>16&15|64]+a[d>>24&255]+ +"-"+a[e&63|128]+a[e>>8&255]+"-"+a[e>>16&255]+a[e>>24&255]+a[f&255]+a[f>>8&255]+a[f>>16&255]+a[f>>24&255]).toUpperCase()}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a* +a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*K.DEG2RAD},radToDeg:function(a){return a*K.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/Math.LN2))}};Object.defineProperties(B.prototype, +{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(B.prototype,{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x; +case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this}, +addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this}, +divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y=a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y, +this.y));return this},clampScalar:function(){var a=new B,b=new B;return function(c,d){a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x= +0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()|| +1)},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b, +a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d= +this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(aa,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var p=e[f+1],l=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==p||m!==l){f=1-g;var n=h*d+k*p+m*l+c*e,t=0<=n?1:-1,r=1-n*n;r>Number.EPSILON&&(r=Math.sqrt(r),n=Math.atan2(r,n*t),f=Math.sin(f*n)/r,g=Math.sin(g*n)/r);t*=g;h=h*f+d*t;k=k*f+p*t;m=m*f+l*t;c=c*f+e*t;f===1-g&&(g=1/Math.sqrt(h* +h+k*k+m*m+c*c),h*=g,k*=g,m*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=m;a[b+3]=c}});Object.defineProperties(aa.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w=a;this.onChangeCallback()}}});Object.assign(aa.prototype,{isQuaternion:!0, +set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/ +2),k=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"YXZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"ZXY"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"ZYX"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"YZX"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f- +c*d*e):"XZY"===a&&(this._x=c*k*f-h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6];b=b[10];var m=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(a,b){var c=a.dot(b)+1;1E-6>c?(c=0,Math.abs(a.x)>Math.abs(a.z)?(this._x=-a.y,this._y=a.x,this._z=0):(this._x=0,this._y=-a.z,this._z=a.y)):(this._x= +a.y*b.z-a.z*b.y,this._y=a.z*b.x-a.x*b.z,this._z=a.x*b.y-a.y*b.x);this._w=c;return this.normalize()},angleTo:function(a){return 2*Math.acos(Math.abs(K.clamp(this.dot(a),-1,1)))},rotateTowards:function(a,b){var c=this.angleTo(a);if(0===c)return this;this.slerp(a,Math.min(1,b/c));return this},inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w}, +lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), +this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z; +0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=1-g*g;if(a<=Number.EPSILON)return g=1-b,this._w=g*f+b*this._w,this._x=g*c+b*this._x,this._y=g*d+b*this._y,this._z=g*e+b*this._z,this.normalize();a=Math.sqrt(a);var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x=== +this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(n.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this}, +setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x, +this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+= +a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), +this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new aa;return function(b){b&&b.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a=new aa;return function(b, +c){return this.applyQuaternion(a.setFromAxisAngle(b,c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x, +c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-m*-f;this.y=k*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-k*-e;return this},project:function(a){return this.applyMatrix4(a.matrixWorldInverse).applyMatrix4(a.projectionMatrix)},unproject:function(a){return this.applyMatrix4(a.projectionMatrixInverse).applyMatrix4(a.matrixWorld)},transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d; +this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y= +Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a=new n,b=new n;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y); +this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x* +this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)}, +cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this,a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new n;return function(b){a.copy(this).projectOnVector(b); +return this.sub(a)}}(),reflect:function(){var a=new n;return function(b){return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(K.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z- +a.z)},setFromSpherical:function(a){return this.setFromSphericalCoords(a.radius,a.phi,a.theta)},setFromSphericalCoords:function(a,b,c){var d=Math.sin(b)*a;this.x=d*Math.sin(c);this.y=Math.cos(b)*a;this.z=d*Math.cos(c);return this},setFromCylindrical:function(a){return this.setFromCylindricalCoords(a.radius,a.theta,a.y)},setFromCylindricalCoords:function(a,b,c){this.x=a*Math.sin(b);this.y=c;this.z=a*Math.cos(b);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z= +a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0=== +b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(ba.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,k){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)}, +copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;cc;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c= +this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a}});var wc,ob={getDataURL:function(a){if("undefined"==typeof HTMLCanvasElement)return a.src;if(!(a instanceof HTMLCanvasElement)){void 0===wc&&(wc=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"));wc.width=a.width;wc.height=a.height;var b=wc.getContext("2d");a instanceof ImageData?b.putImageData(a,0,0):b.drawImage(a,0,0,a.width,a.height);a=wc}return 2048< +a.width||2048a.x||1a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)%2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y);return a}});Object.defineProperty(W.prototype, +"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(Y.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w= +b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), +this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a, +b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]* +e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d=a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var k=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-k)){if(.1>Math.abs(c+ +e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+k)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI;b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+k)/4;b>f&&b>m?.01>b?(k=0,c=h=.707106781):(k=Math.sqrt(b),h=c/k,c=d/k):f>m?.01>f?(k=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),k=c/h,c=g/h):.01>m?(h=k=.707106781,c=0):(c=Math.sqrt(m),k=d/c,h=g/c);this.set(k,h,c,a);return this}a=Math.sqrt((k-g)*(k-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(k-g)/a;this.y=(d-h)/a;this.z=(e-c)/a; +this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w, +this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new Y,b=new Y);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z); +this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this}, +dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+= +(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a, +b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});Ta.prototype=Object.assign(Object.create(ta.prototype),{constructor:Ta,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width= +a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});$d.prototype=Object.assign(Object.create(Ta.prototype),{constructor:$d,isWebGLMultisampleRenderTarget:!0,copy:function(a){Ta.prototype.copy.call(this,a);this.samples=a.samples;return this}});pb.prototype=Object.create(Ta.prototype);pb.prototype.constructor= +pb;pb.prototype.isWebGLRenderTargetCube=!0;qb.prototype=Object.create(W.prototype);qb.prototype.constructor=qb;qb.prototype.isDataTexture=!0;Object.assign(Ja.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;he&&(e=m);p>f&&(f=p);l>g&&(g=l)}this.min.set(b,c,d);this.max.set(e, +f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;he&&(e=m);p>f&&(f=p);l>g&&(g=l)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new n);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))}, +intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},intersectsSphere:function(){var a=new n;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0=-a.constant},intersectsTriangle:function(){function a(a){var e;var f=0;for(e=a.length-3;f<=e;f+=3){h.fromArray(a,f);var g=m.x*Math.abs(h.x)+m.y*Math.abs(h.y)+m.z*Math.abs(h.z),k=b.dot(h),p=c.dot(h),l=d.dot(h);if(Math.max(-Math.max(k,p,l),Math.min(k,p,l))>g)return!1}return!0}var b=new n, +c=new n,d=new n,e=new n,f=new n,g=new n,h=new n,k=new n,m=new n,p=new n;return function(h){if(this.isEmpty())return!1;this.getCenter(k);m.subVectors(this.max,k);b.subVectors(h.a,k);c.subVectors(h.b,k);d.subVectors(h.c,k);e.subVectors(c,b);f.subVectors(d,c);g.subVectors(b,d);h=[0,-e.z,e.y,0,-f.z,f.y,0,-g.z,g.y,e.z,0,-e.x,f.z,0,-f.x,g.z,0,-g.x,-e.y,e.x,0,-f.y,f.x,0,-g.y,g.x,0];if(!a(h))return!1;h=[1,0,0,0,1,0,0,0,1];if(!a(h))return!1;p.crossVectors(e,f);h=[p.x,p.y,p.z];return a(h)}}(),clampPoint:function(a, +b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"),b=new n);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new n;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new n;return function(b){void 0===b&&console.error("THREE.Box3: .getBoundingSphere() target is now required");this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min); +this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new n,new n,new n,new n,new n,new n,new n,new n];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b); +a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ua.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this}, +setFromPoints:function(){var a=new Ja;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e=c=0,f=b.length;e=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius}, +distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),b=new n);b.copy(a);c>this.radius* +this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0===a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new Ja);a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&& +a.radius===this.radius}});Object.assign(Va.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new n,b=new n;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(), +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){void 0=== +b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new n);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new n;return function(b,c){void 0===c&&(console.warn("THREE.Plane: .intersectLine() target is now required"),c=new n);var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1b&&0a&&0c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],m=c[7],p=c[8],l=c[9],n=c[10],t=c[11],r=c[12],u=c[13],x=c[14];c=c[15];b[0].setComponents(f-a,m-g,t-p,c-r).normalize();b[1].setComponents(f+a,m+g,t+p,c+r).normalize();b[2].setComponents(f+d,m+h,t+l,c+u).normalize();b[3].setComponents(f-d,m-h,t-l,c-u).normalize();b[4].setComponents(f-e,m-k,t-n,c-x).normalize();b[5].setComponents(f+e, +m+k,t+n,c+x).normalize();return this},intersectsObject:function(){var a=new Ua;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ua;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d= +0;6>d;d++)if(b[d].distanceToPoint(c)d;d++){var e=c[d];a.x=0e.distanceToPoint(a))return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});Object.assign(P.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,m,l,q,n,t,r,u){var p= +this.elements;p[0]=a;p[4]=b;p[8]=c;p[12]=d;p[1]=e;p[5]=f;p[9]=g;p[13]=h;p[2]=k;p[6]=m;p[10]=l;p[14]=q;p[3]=n;p[7]=t;p[11]=r;p[15]=u;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new P).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this}, +copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new n;return function(b){var c=this.elements,d=b.elements,e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length(); +b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[3]=0;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[7]=0;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return this}}(),makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e); +e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f*e,m=c*h,p=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+m*d;b[5]=a-p*d;b[9]=-c*g;b[2]=p-a*d;b[6]=m+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a+p*c,b[4]=m*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-m,b[6]=p+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a-p*c,b[4]=-f*e,b[8]=m+k*c,b[1]=k+m*c,b[5]=f*h,b[9]=p-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,m=c*h,p=c*e,b[0]=g*h,b[4]=m*d-k,b[8]=a*d+p,b[1]=g*e,b[5]= +p*d+a,b[9]=k*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=p-a*e,b[8]=m*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+m,b[10]=a-p*e):"XZY"===a.order&&(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+p,b[5]=f*h,b[9]=k*e-m,b[2]=m*e-k,b[6]=c*h,b[10]=p*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(){var a=new n(0,0,0),b=new n(1,1,1);return function(c){return this.compose(a,c,b)}}(),lookAt:function(){var a= +new n,b=new n,c=new n;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."), +this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],k=c[5],m=c[9],p=c[13],l=c[2],n=c[6],t=c[10],r=c[14],u=c[3],x=c[7],A=c[11];c=c[15];var w=d[0],y=d[4],D=d[8],J=d[12],B=d[1],F=d[5],C=d[9],z=d[13],E=d[2],G=d[6],I=d[10],K=d[14],M=d[3],X=d[7],Q=d[11];d=d[15];b[0]=a*w+e*B+f*E+g*M;b[4]=a*y+e*F+f*G+g*X;b[8]=a*D+e*C+f*I+ +g*Q;b[12]=a*J+e*z+f*K+g*d;b[1]=h*w+k*B+m*E+p*M;b[5]=h*y+k*F+m*G+p*X;b[9]=h*D+k*C+m*I+p*Q;b[13]=h*J+k*z+m*K+p*d;b[2]=l*w+n*B+t*E+r*M;b[6]=l*y+n*F+t*G+r*X;b[10]=l*D+n*C+t*I+r*Q;b[14]=l*J+n*z+t*K+r*d;b[3]=u*w+x*B+A*E+c*M;b[7]=u*y+x*F+A*G+c*X;b[11]=u*D+x*C+A*I+c*Q;b[15]=u*J+x*z+A*K+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a= +new n;return function(b){for(var c=0,d=b.count;cthis.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;f=1/h;var m=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=m;b.elements[9]*=m;b.elements[10]*=m;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=k;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs."); +var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),m=1/(f-e);g[0]=2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements; +a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});var T={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif", +alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif", +aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick( specularColor, dotNV );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}", +bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif", +clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif", +clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif", +color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}", +cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif", +defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif", +emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}", +envmap_fragment:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif", +envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif", +envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif", +envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif", +fog_vertex:"#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif", +gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif", +lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif", +lights_pars_begin:"uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif", +lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)", +lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif", +lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor;\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}", +lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif", +lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif", +lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif", +logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif", +map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif", +metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif", +morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif", +normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif", +normal_fragment_maps:"#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif", +normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif", +packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}", +premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif", +roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif", +shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif", +shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif", +shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}", +skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif", +skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif", +specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}", +uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif", +uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif", +uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}", +cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}", +depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}", +depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}", +distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}", +equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}", +equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}", +meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}", +meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphysical_vert:"#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}", +normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}", +normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}", +points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}", +shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}", +sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"}, +kh={clone:Pb,merge:ia},lh={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643, +darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055, +grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184, +lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130, +palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780, +teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Object.assign(M.prototype,{isColor:!0,r:1,g:1,b:1,set:function(a){a&&a.isColor?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setScalar:function(a){this.b=this.g=this.r=a;return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255; +return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b,c,d){b=K.euclideanModulo(b,1);c=K.clamp(c,0,1);d=K.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+ +a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2], +10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/360;var e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2), +16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}a&&0a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}return function(b){this.r=a(b.r);this.g=a(b.g);this.b= +a(b.b);return this}}(),copyLinearToSRGB:function(){function a(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}return function(b){this.r=a(b.r);this.g=a(b.g);this.b=a(b.b);return this}}(),convertSRGBToLinear:function(){this.copySRGBToLinear(this);return this},convertLinearToSRGB:function(){this.copyLinearToSRGB(this);return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){void 0=== +a&&(console.warn("THREE.Color: .getHSL() target is now required"),a={h:0,s:0,l:0});var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f;f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(cMath.abs(g)?(this._x=Math.atan2(-m,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-l,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?(this._y=Math.atan2(-l,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(l, +-1,1)),.99999>Math.abs(l)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-m,k),this._y=Math.atan2(-l,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order= +b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new P;return function(b,c,d){a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new aa;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x= +a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new n(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(be.prototype,{set:function(a){this.mask=1<g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e= +this.faceVertexUvs.length;cthis.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;0!==this.rotation&&(d.rotation=this.rotation);!0===this.polygonOffset&&(d.polygonOffset=!0);0!==this.polygonOffsetFactor&&(d.polygonOffsetFactor=this.polygonOffsetFactor);0!==this.polygonOffsetUnits&&(d.polygonOffsetUnits=this.polygonOffsetUnits); +1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize=this.dashSize);void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new n;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a= +new n,b=new n,c=new n;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),m=c.dot(this.direction),l=-c.dot(b),n=c.lengthSq(),v=Math.abs(1-k*k);if(0=-t?e<=t?(h=1/v,d*=h,e*=h,k=d*(d+k*e+2*m)+e*(k*d+e+2*l)+n):(e=h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):(e=-h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):e<=-t?(d=Math.max(0,-(-k*h+m)),e=0b)return null; +b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceSqToPoint(a.center)<=a.radius*a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin); +return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(da||h>c)return null; +if(h>g||g!==g)g=h;if(ac?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new n;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new n,b=new n,c=new n,d=new n;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null; +g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(),applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(ra,{getNormal:function(){var a=new n;return function(b,c,d,e){void 0===e&&(console.warn("THREE.Triangle: .getNormal() target is now required"),e=new n);e.subVectors(d,c);a.subVectors(b, +c);e.cross(a);b=e.lengthSq();return 0=a.x+a.y}}(),getUV:function(){var a=new n;return function(b,c,d,e,f,g,h,k){this.getBarycoord(b,c,d,e,a);k.set(0,0);k.addScaledVector(f,a.x);k.addScaledVector(g,a.y);k.addScaledVector(h,a.z);return k}}()});Object.assign(ra.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this}, +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){var a=new n,b=new n;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),getMidpoint:function(a){void 0===a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new n);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return ra.getNormal(this.a, +this.b,this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new n);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a,b){return ra.getBarycoord(a,this.a,this.b,this.c,b)},containsPoint:function(a){return ra.containsPoint(a,this.a,this.b,this.c)},getUV:function(a,b,c,d,e){return ra.getUV(a,this.a,this.b,this.c,b,c,d,e)},intersectsBox:function(a){return a.intersectsTriangle(this)},closestPointToPoint:function(){var a= +new n,b=new n,c=new n,d=new n,e=new n,f=new n;return function(g,h){void 0===h&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),h=new n);var k=this.a,m=this.b,l=this.c;a.subVectors(m,k);b.subVectors(l,k);d.subVectors(g,k);var q=a.dot(d),v=b.dot(d);if(0>=q&&0>=v)return h.copy(k);e.subVectors(g,m);var t=a.dot(e),r=b.dot(e);if(0<=t&&r<=t)return h.copy(m);var u=q*r-t*v;if(0>=u&&0<=q&&0>=t)return m=q/(q-t),h.copy(k).addScaledVector(a,m);f.subVectors(g,l);g=a.dot(f);var x= +b.dot(f);if(0<=x&&g<=x)return h.copy(l);q=g*v-q*x;if(0>=q&&0<=v&&0>=x)return u=v/(v-x),h.copy(k).addScaledVector(b,u);v=t*x-g*r;if(0>=v&&0<=r-t&&0<=g-x)return c.subVectors(l,m),u=(r-t)/(r-t+(g-x)),h.copy(m).addScaledVector(c,u);l=1/(v+q+u);m=q*l;u*=l;return h.copy(k).addScaledVector(a,m).addScaledVector(b,u)}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});Da.prototype=Object.create(O.prototype);Da.prototype.constructor=Da;Da.prototype.isMeshBasicMaterial= +!0;Da.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap; +this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;return this};va.prototype=Object.assign(Object.create(C.prototype),{constructor:va,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){C.prototype.copy.call(this,a);this.drawMode=a.drawMode;void 0!==a.morphTargetInfluences&&(this.morphTargetInfluences=a.morphTargetInfluences.slice());void 0!==a.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},a.morphTargetDictionary)); +return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0c.far?null:{distance:b,point:w.clone(),object:a}}function b(b,c,d,e,p,n,w,C,z,E){f.fromBufferAttribute(p,C);g.fromBufferAttribute(p,z);h.fromBufferAttribute(p,E);p=b.morphTargetInfluences;if(c.morphTargets&&n&&p){q.set(0,0,0);v.set(0,0,0);t.set(0,0,0);for(var y= +0,J=n.length;ye.far||f.push({distance:r,point:b.clone(),uv:ra.getUV(b,h,k,m,l,q,v,new B),face:null,object:this})}}(),clone:function(){return(new this.constructor(this.material)).copy(this)}, +copy:function(a){C.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center);return this}});Jc.prototype=Object.assign(Object.create(C.prototype),{constructor:Jc,copy:function(a){C.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break;for(;ef||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far|| +e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}else for(g=0,r=t.length/3-1;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,m=k.length,g=0;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});V.prototype=Object.assign(Object.create(oa.prototype),{constructor:V,isLineSegments:!0,computeLineDistances:function(){var a=new n,b=new n;return function(){var c=this.geometry;if(c.isBufferGeometry)if(null=== +c.index){for(var d=c.attributes.position,e=[],f=0,g=d.count;fd.far||e.push({distance:a,distanceToRay:Math.sqrt(f),point:q.clone(),index:c,face:null,object:g}))}var g=this,h=this.geometry,k=this.matrixWorld,m=d.params.Points.threshold;null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=m;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k); +b.copy(d.ray).applyMatrix4(a);m/=(this.scale.x+this.scale.y+this.scale.z)/3;var l=m*m;m=new n;var q=new n;if(h.isBufferGeometry){var v=h.index;h=h.attributes.position.array;if(null!==v){var t=v.array;v=0;for(var r=t.length;v=a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Yb.prototype=Object.create(W.prototype);Yb.prototype.constructor=Yb;Yb.prototype.isCompressedTexture=!0;Lc.prototype=Object.create(W.prototype);Lc.prototype.constructor=Lc;Lc.prototype.isCanvasTexture=!0;Mc.prototype=Object.create(W.prototype);Mc.prototype.constructor=Mc;Mc.prototype.isDepthTexture=!0;Zb.prototype=Object.create(z.prototype);Zb.prototype.constructor=Zb;Nc.prototype= +Object.create(N.prototype);Nc.prototype.constructor=Nc;$b.prototype=Object.create(z.prototype);$b.prototype.constructor=$b;Oc.prototype=Object.create(N.prototype);Oc.prototype.constructor=Oc;ka.prototype=Object.create(z.prototype);ka.prototype.constructor=ka;Pc.prototype=Object.create(N.prototype);Pc.prototype.constructor=Pc;ac.prototype=Object.create(ka.prototype);ac.prototype.constructor=ac;Qc.prototype=Object.create(N.prototype);Qc.prototype.constructor=Qc;yb.prototype=Object.create(ka.prototype); +yb.prototype.constructor=yb;Rc.prototype=Object.create(N.prototype);Rc.prototype.constructor=Rc;bc.prototype=Object.create(ka.prototype);bc.prototype.constructor=bc;Sc.prototype=Object.create(N.prototype);Sc.prototype.constructor=Sc;cc.prototype=Object.create(ka.prototype);cc.prototype.constructor=cc;Tc.prototype=Object.create(N.prototype);Tc.prototype.constructor=Tc;zb.prototype=Object.create(z.prototype);zb.prototype.constructor=zb;zb.prototype.toJSON=function(){var a=z.prototype.toJSON.call(this); +a.path=this.parameters.path.toJSON();return a};Uc.prototype=Object.create(N.prototype);Uc.prototype.constructor=Uc;dc.prototype=Object.create(z.prototype);dc.prototype.constructor=dc;Vc.prototype=Object.create(N.prototype);Vc.prototype.constructor=Vc;ec.prototype=Object.create(z.prototype);ec.prototype.constructor=ec;var mh={triangulate:function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=vf(a,0,e,c,!0),g=[];if(!f)return g;var h;if(d){var k=c;d=[];var m;var l=0;for(m=b.length;l80*c){var t=h=a[0];var r=d=a[1];for(k=c;kh&&(h=l),b>d&&(d=b);h=Math.max(h-t,d-r);h=0!==h?1/h:0}Yc(f,g,c,t,r,h);return g}},cb={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e +cb.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];zf(a);Af(c,a);var f=a.length;b.forEach(zf);for(a=0;aMath.abs(g-k)?[new B(a,1-c),new B(h,1-d), +new B(m,1-e),new B(n,1-b)]:[new B(g,1-c),new B(k,1-d),new B(l,1-e),new B(v,1-b)]}};$c.prototype=Object.create(N.prototype);$c.prototype.constructor=$c;fc.prototype=Object.create(Ya.prototype);fc.prototype.constructor=fc;ad.prototype=Object.create(N.prototype);ad.prototype.constructor=ad;Cb.prototype=Object.create(z.prototype);Cb.prototype.constructor=Cb;bd.prototype=Object.create(N.prototype);bd.prototype.constructor=bd;gc.prototype=Object.create(z.prototype);gc.prototype.constructor=gc;cd.prototype= +Object.create(N.prototype);cd.prototype.constructor=cd;hc.prototype=Object.create(z.prototype);hc.prototype.constructor=hc;Db.prototype=Object.create(N.prototype);Db.prototype.constructor=Db;Db.prototype.toJSON=function(){var a=N.prototype.toJSON.call(this);return Cf(this.parameters.shapes,a)};Eb.prototype=Object.create(z.prototype);Eb.prototype.constructor=Eb;Eb.prototype.toJSON=function(){var a=z.prototype.toJSON.call(this);return Cf(this.parameters.shapes,a)};ic.prototype=Object.create(z.prototype); +ic.prototype.constructor=ic;Fb.prototype=Object.create(N.prototype);Fb.prototype.constructor=Fb;db.prototype=Object.create(z.prototype);db.prototype.constructor=db;dd.prototype=Object.create(Fb.prototype);dd.prototype.constructor=dd;ed.prototype=Object.create(db.prototype);ed.prototype.constructor=ed;fd.prototype=Object.create(N.prototype);fd.prototype.constructor=fd;jc.prototype=Object.create(z.prototype);jc.prototype.constructor=jc;var ya=Object.freeze({WireframeGeometry:Zb,ParametricGeometry:Nc, +ParametricBufferGeometry:$b,TetrahedronGeometry:Pc,TetrahedronBufferGeometry:ac,OctahedronGeometry:Qc,OctahedronBufferGeometry:yb,IcosahedronGeometry:Rc,IcosahedronBufferGeometry:bc,DodecahedronGeometry:Sc,DodecahedronBufferGeometry:cc,PolyhedronGeometry:Oc,PolyhedronBufferGeometry:ka,TubeGeometry:Tc,TubeBufferGeometry:zb,TorusKnotGeometry:Uc,TorusKnotBufferGeometry:dc,TorusGeometry:Vc,TorusBufferGeometry:ec,TextGeometry:$c,TextBufferGeometry:fc,SphereGeometry:ad,SphereBufferGeometry:Cb,RingGeometry:bd, +RingBufferGeometry:gc,PlaneGeometry:Dc,PlaneBufferGeometry:vb,LatheGeometry:cd,LatheBufferGeometry:hc,ShapeGeometry:Db,ShapeBufferGeometry:Eb,ExtrudeGeometry:Bb,ExtrudeBufferGeometry:Ya,EdgesGeometry:ic,ConeGeometry:dd,ConeBufferGeometry:ed,CylinderGeometry:Fb,CylinderBufferGeometry:db,CircleGeometry:fd,CircleBufferGeometry:jc,BoxGeometry:Rb,BoxBufferGeometry:ub});Gb.prototype=Object.create(O.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isShadowMaterial=!0;Gb.prototype.copy=function(a){O.prototype.copy.call(this, +a);this.color.copy(a.color);return this};kc.prototype=Object.create(Ca.prototype);kc.prototype.constructor=kc;kc.prototype.isRawShaderMaterial=!0;Za.prototype=Object.create(O.prototype);Za.prototype.constructor=Za;Za.prototype.isMeshStandardMaterial=!0;Za.prototype.copy=function(a){O.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity; +this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap=a.metalnessMap;this.alphaMap= +a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Hb.prototype=Object.create(Za.prototype);Hb.prototype.constructor=Hb;Hb.prototype.isMeshPhysicalMaterial=!0;Hb.prototype.copy=function(a){Za.prototype.copy.call(this, +a);this.defines={PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearCoat=a.clearCoat;this.clearCoatRoughness=a.clearCoatRoughness;return this};La.prototype=Object.create(O.prototype);La.prototype.constructor=La;La.prototype.isMeshPhongMaterial=!0;La.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity= +a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity= +a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Ib.prototype=Object.create(La.prototype);Ib.prototype.constructor=Ib;Ib.prototype.isMeshToonMaterial=!0;Ib.prototype.copy=function(a){La.prototype.copy.call(this,a);this.gradientMap=a.gradientMap; +return this};Jb.prototype=Object.create(O.prototype);Jb.prototype.constructor=Jb;Jb.prototype.isMeshNormalMaterial=!0;Jb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth= +a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Kb.prototype=Object.create(O.prototype);Kb.prototype.constructor=Kb;Kb.prototype.isMeshLambertMaterial=!0;Kb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap= +a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Lb.prototype= +Object.create(O.prototype);Lb.prototype.constructor=Lb;Lb.prototype.isMeshMatcapMaterial=!0;Lb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.defines={MATCAP:""};this.color.copy(a.color);this.matcap=a.matcap;this.map=a.map;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias; +this.alphaMap=a.alphaMap;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Mb.prototype=Object.create(R.prototype);Mb.prototype.constructor=Mb;Mb.prototype.isLineDashedMaterial=!0;Mb.prototype.copy=function(a){R.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var nh=Object.freeze({ShadowMaterial:Gb,SpriteMaterial:mb,RawShaderMaterial:kc,ShaderMaterial:Ca,PointsMaterial:Ka,MeshPhysicalMaterial:Hb, +MeshStandardMaterial:Za,MeshPhongMaterial:La,MeshToonMaterial:Ib,MeshNormalMaterial:Jb,MeshLambertMaterial:Kb,MeshDepthMaterial:ib,MeshDistanceMaterial:jb,MeshBasicMaterial:Da,MeshMatcapMaterial:Lb,LineDashedMaterial:Mb,LineBasicMaterial:R,Material:O}),pa={arraySlice:function(a,b,c){return pa.isTypedArray(a)?new a.constructor(a.subarray(b,void 0!==c?c:a.length)):a.slice(b,c)},convertArray:function(a,b,c){return!a||!c&&a.constructor===b?a:"number"===typeof b.BYTES_PER_ELEMENT?new b(a):Array.prototype.slice.call(a)}, +isTypedArray:function(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)},getKeyframeOrder:function(a){for(var b=a.length,c=Array(b),d=0;d!==b;++d)c[d]=d;c.sort(function(b,c){return a[b]-a[c]});return c},sortedArray:function(a,b,c){for(var d=a.length,e=new a.constructor(d),f=0,g=0;g!==d;++f)for(var h=c[f]*b,k=0;k!==b;++k)e[g++]=a[h+k];return e},flattenJSON:function(a,b,c,d){for(var e=1,f=a[0];void 0!==f&&void 0===f[d];)f=a[e++];if(void 0!==f){var g=f[d];if(void 0!==g)if(Array.isArray(g)){do g= +f[d],void 0!==g&&(b.push(f.time),c.push.apply(c,g)),f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d],void 0!==g&&(b.push(f.time),g.toArray(c,c.length)),f=a[e++];while(void 0!==f)}else{do g=f[d],void 0!==g&&(b.push(f.time),c.push(g)),f=a[e++];while(void 0!==f)}}}};Object.assign(Fa.prototype,{evaluate:function(a){var b=this.parameterPositions,c=this._cachedIndex,d=b[c],e=b[c-1];a:{b:{c:{d:if(!(a=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=pa.arraySlice(c,e,f),this.values=pa.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.", +this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&pa.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values, +c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;gg)e=a+1;else if(0b&&(b=0);1Number.EPSILON&&(g.normalize(),c=Math.acos(K.clamp(d[k-1].dot(d[k]),-1,1)),e[k].applyMatrix4(h.makeRotationAxis(g,c))),f[k].crossVectors(d[k],e[k]);if(!0===b)for(c=Math.acos(K.clamp(e[0].dot(e[a]),-1,1)),c/=a,0d;)d+=c;for(;d>c;)d-=c;de&&(e=1);1E-4>d&&(d=e);1E-4>k&&(k=e);Ke.initNonuniformCatmullRom(f.x,g.x,h.x,c.x,d,e,k);Le.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,k);Me.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,k)}else"catmullrom"===this.curveType&&(Ke.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),Le.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),Me.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(Ke.calc(a), +Le.calc(a),Me.calc(a));return b};qa.prototype.copy=function(a){I.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;bc.length-2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set(Ff(d,e.x,f.x,g.x,c.x),Ff(d,e.y,f.y,g.y,c.y));return b};Qa.prototype.copy=function(a){I.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths(); +return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;cNumber.EPSILON){if(0>m&&(g=b[f],k=-k,h=b[e],m=-m),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=m*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=cb.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new nb;h.curves=g.curves; +b.push(h);return b}var k=!e(f[0].getPoints());k=a?!k:k;h=[];var m=[],l=[],n=0;m[n]=void 0;l[n]=[];for(var v=0,t=f.length;vl.opacity&&(l.transparent=!0);d.setTextures(k);return d.parse(l)}}()});var Zd,xe={getContext:function(){void 0===Zd&&(Zd=new (window.AudioContext||window.webkitAudioContext));return Zd},setContext:function(a){Zd=a}};Object.assign(ue.prototype,{load:function(a,b,c,d){var e=new Ma(this.manager);e.setResponseType("arraybuffer");e.setPath(this.path);e.load(a,function(a){a=a.slice(0);xe.getContext().decodeAudioData(a,function(a){b(a)})},c,d)},setPath:function(a){this.path=a; +return this}});Object.assign(Hf.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new P,l=new P;return function(m){if(a!==this||b!==m.focus||c!==m.fov||d!==m.aspect*this.aspect||e!==m.near||f!==m.far||g!==m.zoom||h!==this.eyeSep){a=this;b=m.focus;c=m.fov;d=m.aspect*this.aspect;e=m.near;f=m.far;g=m.zoom;var n=m.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,t=e*Math.tan(K.DEG2RAD*c*.5)/g;l.elements[12]=-h;k.elements[12]=h;var r=-t*d+p;var u=t*d+p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/ +(u-r);this.cameraL.projectionMatrix.copy(n);r=-t*d-p;u=t*d-p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/(u-r);this.cameraR.projectionMatrix.copy(n)}this.cameraL.matrixWorld.copy(m.matrixWorld).multiply(l);this.cameraR.matrixWorld.copy(m.matrixWorld).multiply(k)}}()});nd.prototype=Object.create(C.prototype);nd.prototype.constructor=nd;Object.assign(ve.prototype,{start:function(){this.oldTime=this.startTime=("undefined"===typeof performance?Date:performance).now();this.elapsedTime=0;this.running=!0}, +stop:function(){this.getElapsedTime();this.autoStart=this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var b=("undefined"===typeof performance?Date:performance).now();a=(b-this.oldTime)/1E3;this.oldTime=b;this.elapsedTime+=a}return a}});we.prototype=Object.assign(Object.create(C.prototype),{constructor:we,getInput:function(){return this.gain},removeFilter:function(){null!== +this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null);return this},getFilter:function(){return this.filter},setFilter:function(a){null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination);return this},getMasterVolume:function(){return this.gain.gain.value}, +setMasterVolume:function(a){this.gain.gain.setTargetAtTime(a,this.context.currentTime,.01);return this},updateMatrixWorld:function(){var a=new n,b=new aa,c=new n,d=new n,e=new ve;return function(f){C.prototype.updateMatrixWorld.call(this,f);f=this.context.listener;var g=this.up;this.timeDelta=e.getDelta();this.matrixWorld.decompose(a,b,c);d.set(0,0,-1).applyQuaternion(b);if(f.positionX){var h=this.context.currentTime+this.timeDelta;f.positionX.linearRampToValueAtTime(a.x,h);f.positionY.linearRampToValueAtTime(a.y, +h);f.positionZ.linearRampToValueAtTime(a.z,h);f.forwardX.linearRampToValueAtTime(d.x,h);f.forwardY.linearRampToValueAtTime(d.y,h);f.forwardZ.linearRampToValueAtTime(d.z,h);f.upX.linearRampToValueAtTime(g.x,h);f.upY.linearRampToValueAtTime(g.y,h);f.upZ.linearRampToValueAtTime(g.z,h)}else f.setPosition(a.x,a.y,a.z),f.setOrientation(d.x,d.y,d.z,g.x,g.y,g.z)}}()});oc.prototype=Object.assign(Object.create(C.prototype),{constructor:oc,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl= +!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setMediaElementSource:function(a){this.hasPlaybackControl=!1;this.sourceType="mediaNode";this.source=this.context.createMediaElementSource(a);this.connect();return this},setBuffer:function(a){this.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else{var a=this.context.createBufferSource();a.buffer=this.buffer;a.loop=this.loop;a.onended=this.onEnded.bind(this);this.startTime=this.context.currentTime;a.start(this.startTime,this.offset);this.isPlaying=!0;this.source=a;this.setDetune(this.detune);this.setPlaybackRate(this.playbackRate);return this.connect()}},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return!0===this.isPlaying&&(this.source.stop(),this.source.onended= +null,this.offset+=(this.context.currentTime-this.startTime)*this.playbackRate,this.isPlaying=!1),this},stop:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.source.stop(),this.source.onended=null,this.offset=0,this.isPlaying=!1,this},connect:function(){if(0d&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a, +b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){aa.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(If.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings, +b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(ma,{Composite:If,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new ma.Composite(a,b,c):new ma(a,b,c)},sanitizeNodeName:function(){var a=/[\[\]\.:\/]/g;return function(b){return b.replace(/\s/g,"_").replace(a,"")}}(),parseTrackName:function(){var a="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]", +b=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]");a=/(WCOD+)?/.source.replace("WCOD",a);var c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),d=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),e=new RegExp("^"+b+a+c+d+"$"),f=["material","materials","bones"];return function(a){var b=e.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+a);b={nodeName:b[2],objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&& +b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==f.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b}}(),findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a;if(a.skeleton){var c=a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c= +0;c=b){var n=b++,q=a[n];c[q.uuid]=l;a[l]=q;c[k]=n;a[n]=h;h=0;for(k=e;h!==k;++h){q=d[h];var v=q[l];q[l]=q[n];q[n]=v}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k=arguments[g].uuid,l=d[k];if(void 0!==l)if(delete d[k],lb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0]; +b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a,c=this._clip.duration,d=this.loop,e=this._loopCount,f=2202===d;if(0===a)return-1===e?b:f&&1===(e&1)?c-b:b;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0> +a?-1:1})}else{-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f));if(b>=c||0>b){d=Math.floor(b/c);b-=c*d;e+=Math.abs(d);var g=this.repetitions-e;0>=g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=0a,this._setEndings(a,!a,f)):this._setEndings(!1,!1,f),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:d}))}if(f&& +1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});Be.prototype= +Object.assign(Object.create(ta.prototype),{constructor:Be,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],n=l.name,q=k[n];if(void 0===q){q=f[h];if(void 0!==q){null===q._cacheIndex&&(++q.referenceCount,this._addInactiveBinding(q,g,n));continue}q=new Ae(ma.create(c,n,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName, +l.getValueSize());++q.referenceCount;this._addInactiveBinding(q,g,n)}f[h]=q;a[h].resultBuffer=q.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b= +a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length}, +get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&athis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new B); +return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new B);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new B;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min); +this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(He.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0=== +a&&(console.warn("THREE.Line3: .getCenter() target is now required"),a=new n);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new n);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b= +new n);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new n,b=new n;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=K.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),c=new n);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a); +this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});od.prototype=Object.create(C.prototype);od.prototype.constructor=od;od.prototype.isImmediateRenderObject=!0;pd.prototype=Object.create(V.prototype);pd.prototype.constructor=pd;pd.prototype.update=function(){var a=new n,b=new n,c=new ba;return function(){var d=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f= +this.geometry.attributes.position,g=this.object.geometry;if(g&&g.isGeometry)for(var h=g.vertices,k=g.faces,l=g=0,n=k.length;lMath.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side=0>b?1:0;this.lookAt(this.plane.normal);C.prototype.updateMatrixWorld.call(this,a)};var Xd,Ie;gb.prototype=Object.create(C.prototype); +gb.prototype.constructor=gb;gb.prototype.setDirection=function(){var a=new n,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();gb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};gb.prototype.setColor= +function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};gb.prototype.copy=function(a){C.prototype.copy.call(this,a,!1);this.line.copy(a.line);this.cone.copy(a.cone);return this};gb.prototype.clone=function(){return(new this.constructor).copy(this)};ud.prototype=Object.create(V.prototype);ud.prototype.constructor=ud;I.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(I.prototype);a.prototype.constructor=a;a.prototype.getPoint= +b;return a};Object.assign(eb.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead."); +for(var b=new N,c=0,d=a.length;c EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + //console.log( 'handleKeyDown' ); + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + scope.update(); + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDolly( event ) { + + //console.log( 'handleTouchStartDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartPan( event ) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDolly( event ) { + + //console.log( 'handleTouchMoveDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleTouchMovePan( event ) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.button ) { + + case scope.mouseButtons.ORBIT: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case scope.mouseButtons.ZOOM: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + handleMouseWheel( event ); + + scope.dispatchEvent( startEvent ); // not sure why these are here... + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + + handleTouchStartDolly( event ); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?... + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?... + + handleTouchMoveDolly( event ); + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_PAN ) return; // is this needed?... + + handleTouchMovePan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties( THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/controls/VRControls.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/controls/VRControls.js new file mode 100644 index 0000000..8829c06 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/controls/VRControls.js @@ -0,0 +1,149 @@ +/** + * @author dmarcos / https://github.com/dmarcos + * @author mrdoob / http://mrdoob.com + */ + +THREE.VRControls = function ( object, onError ) { + + var scope = this; + + var vrDisplay, vrDisplays; + + var standingMatrix = new THREE.Matrix4(); + + var frameData = null; + + if ( 'VRFrameData' in window ) { + + frameData = new VRFrameData(); + + } + + function gotVRDisplays( displays ) { + + vrDisplays = displays; + + if ( displays.length > 0 ) { + + vrDisplay = displays[ 0 ]; + + } else { + + if ( onError ) onError( 'VR input not available.' ); + + } + + } + + if ( navigator.getVRDisplays ) { + + navigator.getVRDisplays().then( gotVRDisplays ).catch( function () { + + console.warn( 'THREE.VRControls: Unable to get VR Displays' ); + + } ); + + } + + // the Rift SDK returns the position in meters + // this scale factor allows the user to define how meters + // are converted to scene units. + + this.scale = 1; + + // If true will use "standing space" coordinate system where y=0 is the + // floor and x=0, z=0 is the center of the room. + this.standing = false; + + // Distance from the users eyes to the floor in meters. Used when + // standing=true but the VRDisplay doesn't provide stageParameters. + this.userHeight = 1.6; + + this.getVRDisplay = function () { + + return vrDisplay; + + }; + + this.setVRDisplay = function ( value ) { + + vrDisplay = value; + + }; + + this.getVRDisplays = function () { + + console.warn( 'THREE.VRControls: getVRDisplays() is being deprecated.' ); + return vrDisplays; + + }; + + this.getStandingMatrix = function () { + + return standingMatrix; + + }; + + this.update = function () { + + if ( vrDisplay ) { + + var pose; + + if ( vrDisplay.getFrameData ) { + + vrDisplay.getFrameData( frameData ); + pose = frameData.pose; + + } else if ( vrDisplay.getPose ) { + + pose = vrDisplay.getPose(); + + } + + if ( pose.orientation !== null ) { + + object.quaternion.fromArray( pose.orientation ); + + } + + if ( pose.position !== null ) { + + object.position.fromArray( pose.position ); + + } else { + + object.position.set( 0, 0, 0 ); + + } + + if ( this.standing ) { + + if ( vrDisplay.stageParameters ) { + + object.updateMatrix(); + + standingMatrix.fromArray( vrDisplay.stageParameters.sittingToStandingTransform ); + object.applyMatrix( standingMatrix ); + + } else { + + object.position.setY( object.position.y + this.userHeight ); + + } + + } + + object.position.multiplyScalar( scope.scale ); + + } + + }; + + this.dispose = function () { + + vrDisplay = null; + + }; + +}; diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/effects/VREffect.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/effects/VREffect.js new file mode 100644 index 0000000..9a2482e --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/effects/VREffect.js @@ -0,0 +1,533 @@ +/** + * @author dmarcos / https://github.com/dmarcos + * @author mrdoob / http://mrdoob.com + * + * WebVR Spec: http://mozvr.github.io/webvr-spec/webvr.html + * + * Firefox: http://mozvr.com/downloads/ + * Chromium: https://webvr.info/get-chrome + */ + +THREE.VREffect = function ( renderer, onError ) { + + var vrDisplay, vrDisplays; + var eyeTranslationL = new THREE.Vector3(); + var eyeTranslationR = new THREE.Vector3(); + var renderRectL, renderRectR; + var headMatrix = new THREE.Matrix4(); + var eyeMatrixL = new THREE.Matrix4(); + var eyeMatrixR = new THREE.Matrix4(); + + var frameData = null; + + if ( 'VRFrameData' in window ) { + + frameData = new window.VRFrameData(); + + } + + function gotVRDisplays( displays ) { + + vrDisplays = displays; + + if ( displays.length > 0 ) { + + vrDisplay = displays[ 0 ]; + + } else { + + if ( onError ) onError( 'HMD not available' ); + + } + + } + + if ( navigator.getVRDisplays ) { + + navigator.getVRDisplays().then( gotVRDisplays ).catch( function () { + + console.warn( 'THREE.VREffect: Unable to get VR Displays' ); + + } ); + + } + + // + + this.isPresenting = false; + + var scope = this; + + var rendererSize = renderer.getSize(); + var rendererUpdateStyle = false; + var rendererPixelRatio = renderer.getPixelRatio(); + + this.getVRDisplay = function () { + + return vrDisplay; + + }; + + this.setVRDisplay = function ( value ) { + + vrDisplay = value; + + }; + + this.getVRDisplays = function () { + + console.warn( 'THREE.VREffect: getVRDisplays() is being deprecated.' ); + return vrDisplays; + + }; + + this.setSize = function ( width, height, updateStyle ) { + + rendererSize = { width: width, height: height }; + rendererUpdateStyle = updateStyle; + + if ( scope.isPresenting ) { + + var eyeParamsL = vrDisplay.getEyeParameters( 'left' ); + renderer.setPixelRatio( 1 ); + renderer.setSize( eyeParamsL.renderWidth * 2, eyeParamsL.renderHeight, false ); + + } else { + + renderer.setPixelRatio( rendererPixelRatio ); + renderer.setSize( width, height, updateStyle ); + + } + + }; + + // VR presentation + + var canvas = renderer.domElement; + var defaultLeftBounds = [ 0.0, 0.0, 0.5, 1.0 ]; + var defaultRightBounds = [ 0.5, 0.0, 0.5, 1.0 ]; + + function onVRDisplayPresentChange() { + + var wasPresenting = scope.isPresenting; + scope.isPresenting = vrDisplay !== undefined && vrDisplay.isPresenting; + + if ( scope.isPresenting ) { + + var eyeParamsL = vrDisplay.getEyeParameters( 'left' ); + var eyeWidth = eyeParamsL.renderWidth; + var eyeHeight = eyeParamsL.renderHeight; + + if ( ! wasPresenting ) { + + rendererPixelRatio = renderer.getPixelRatio(); + rendererSize = renderer.getSize(); + + renderer.setPixelRatio( 1 ); + renderer.setSize( eyeWidth * 2, eyeHeight, false ); + + } + + } else if ( wasPresenting ) { + + renderer.setPixelRatio( rendererPixelRatio ); + renderer.setSize( rendererSize.width, rendererSize.height, rendererUpdateStyle ); + + } + + } + + window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + this.setFullScreen = function ( boolean ) { + + return new Promise( function ( resolve, reject ) { + + if ( vrDisplay === undefined ) { + + reject( new Error( 'No VR hardware found.' ) ); + return; + + } + + if ( scope.isPresenting === boolean ) { + + resolve(); + return; + + } + + if ( boolean ) { + + resolve( vrDisplay.requestPresent( [ { source: canvas } ] ) ); + + } else { + + resolve( vrDisplay.exitPresent() ); + + } + + } ); + + }; + + this.requestPresent = function () { + + return this.setFullScreen( true ); + + }; + + this.exitPresent = function () { + + return this.setFullScreen( false ); + + }; + + this.requestAnimationFrame = function ( f ) { + + if ( vrDisplay !== undefined ) { + + return vrDisplay.requestAnimationFrame( f ); + + } else { + + return window.requestAnimationFrame( f ); + + } + + }; + + this.cancelAnimationFrame = function ( h ) { + + if ( vrDisplay !== undefined ) { + + vrDisplay.cancelAnimationFrame( h ); + + } else { + + window.cancelAnimationFrame( h ); + + } + + }; + + this.submitFrame = function () { + + if ( vrDisplay !== undefined && scope.isPresenting ) { + + vrDisplay.submitFrame(); + + } + + }; + + this.autoSubmitFrame = true; + + // render + + var cameraL = new THREE.PerspectiveCamera(); + cameraL.layers.enable( 1 ); + + var cameraR = new THREE.PerspectiveCamera(); + cameraR.layers.enable( 2 ); + + this.render = function ( scene, camera, renderTarget, forceClear ) { + + if ( vrDisplay && scope.isPresenting ) { + + var autoUpdate = scene.autoUpdate; + + if ( autoUpdate ) { + + scene.updateMatrixWorld(); + scene.autoUpdate = false; + + } + + if ( Array.isArray( scene ) ) { + + console.warn( 'THREE.VREffect.render() no longer supports arrays. Use object.layers instead.' ); + scene = scene[ 0 ]; + + } + + // When rendering we don't care what the recommended size is, only what the actual size + // of the backbuffer is. + var size = renderer.getSize(); + var layers = vrDisplay.getLayers(); + var leftBounds; + var rightBounds; + + if ( layers.length ) { + + var layer = layers[ 0 ]; + + leftBounds = layer.leftBounds !== null && layer.leftBounds.length === 4 ? layer.leftBounds : defaultLeftBounds; + rightBounds = layer.rightBounds !== null && layer.rightBounds.length === 4 ? layer.rightBounds : defaultRightBounds; + + } else { + + leftBounds = defaultLeftBounds; + rightBounds = defaultRightBounds; + + } + + renderRectL = { + x: Math.round( size.width * leftBounds[ 0 ] ), + y: Math.round( size.height * leftBounds[ 1 ] ), + width: Math.round( size.width * leftBounds[ 2 ] ), + height: Math.round( size.height * leftBounds[ 3 ] ) + }; + renderRectR = { + x: Math.round( size.width * rightBounds[ 0 ] ), + y: Math.round( size.height * rightBounds[ 1 ] ), + width: Math.round( size.width * rightBounds[ 2 ] ), + height: Math.round( size.height * rightBounds[ 3 ] ) + }; + + if ( renderTarget ) { + + renderer.setRenderTarget( renderTarget ); + renderTarget.scissorTest = true; + + } else { + + renderer.setRenderTarget( null ); + renderer.setScissorTest( true ); + + } + + if ( renderer.autoClear || forceClear ) renderer.clear(); + + if ( camera.parent === null ) camera.updateMatrixWorld(); + + camera.matrixWorld.decompose( cameraL.position, cameraL.quaternion, cameraL.scale ); + + cameraR.position.copy( cameraL.position ); + cameraR.quaternion.copy( cameraL.quaternion ); + cameraR.scale.copy( cameraL.scale ); + + if ( vrDisplay.getFrameData ) { + + vrDisplay.depthNear = camera.near; + vrDisplay.depthFar = camera.far; + + vrDisplay.getFrameData( frameData ); + + cameraL.projectionMatrix.elements = frameData.leftProjectionMatrix; + cameraR.projectionMatrix.elements = frameData.rightProjectionMatrix; + + getEyeMatrices( frameData ); + + cameraL.updateMatrix(); + cameraL.matrix.multiply( eyeMatrixL ); + cameraL.matrix.decompose( cameraL.position, cameraL.quaternion, cameraL.scale ); + + cameraR.updateMatrix(); + cameraR.matrix.multiply( eyeMatrixR ); + cameraR.matrix.decompose( cameraR.position, cameraR.quaternion, cameraR.scale ); + + } else { + + var eyeParamsL = vrDisplay.getEyeParameters( 'left' ); + var eyeParamsR = vrDisplay.getEyeParameters( 'right' ); + + cameraL.projectionMatrix = fovToProjection( eyeParamsL.fieldOfView, true, camera.near, camera.far ); + cameraR.projectionMatrix = fovToProjection( eyeParamsR.fieldOfView, true, camera.near, camera.far ); + + eyeTranslationL.fromArray( eyeParamsL.offset ); + eyeTranslationR.fromArray( eyeParamsR.offset ); + + cameraL.translateOnAxis( eyeTranslationL, cameraL.scale.x ); + cameraR.translateOnAxis( eyeTranslationR, cameraR.scale.x ); + + } + + // render left eye + if ( renderTarget ) { + + renderTarget.viewport.set( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height ); + renderTarget.scissor.set( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height ); + + } else { + + renderer.setViewport( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height ); + renderer.setScissor( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height ); + + } + renderer.render( scene, cameraL, renderTarget, forceClear ); + + // render right eye + if ( renderTarget ) { + + renderTarget.viewport.set( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height ); + renderTarget.scissor.set( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height ); + + } else { + + renderer.setViewport( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height ); + renderer.setScissor( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height ); + + } + renderer.render( scene, cameraR, renderTarget, forceClear ); + + if ( renderTarget ) { + + renderTarget.viewport.set( 0, 0, size.width, size.height ); + renderTarget.scissor.set( 0, 0, size.width, size.height ); + renderTarget.scissorTest = false; + renderer.setRenderTarget( null ); + + } else { + + renderer.setViewport( 0, 0, size.width, size.height ); + renderer.setScissorTest( false ); + + } + + if ( autoUpdate ) { + + scene.autoUpdate = true; + + } + + if ( scope.autoSubmitFrame ) { + + scope.submitFrame(); + + } + + return; + + } + + // Regular render mode if not HMD + + renderer.render( scene, camera, renderTarget, forceClear ); + + }; + + this.dispose = function () { + + window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + }; + + // + + var poseOrientation = new THREE.Quaternion(); + var posePosition = new THREE.Vector3(); + + // Compute model matrices of the eyes with respect to the head. + function getEyeMatrices( frameData ) { + + // Compute the matrix for the position of the head based on the pose + if ( frameData.pose.orientation ) { + + poseOrientation.fromArray( frameData.pose.orientation ); + headMatrix.makeRotationFromQuaternion( poseOrientation ); + + } else { + + headMatrix.identity(); + + } + + if ( frameData.pose.position ) { + + posePosition.fromArray( frameData.pose.position ); + headMatrix.setPosition( posePosition ); + + } + + // The view matrix transforms vertices from sitting space to eye space. As such, the view matrix can be thought of as a product of two matrices: + // headToEyeMatrix * sittingToHeadMatrix + + // The headMatrix that we've calculated above is the model matrix of the head in sitting space, which is the inverse of sittingToHeadMatrix. + // So when we multiply the view matrix with headMatrix, we're left with headToEyeMatrix: + // viewMatrix * headMatrix = headToEyeMatrix * sittingToHeadMatrix * headMatrix = headToEyeMatrix + + eyeMatrixL.fromArray( frameData.leftViewMatrix ); + eyeMatrixL.multiply( headMatrix ); + eyeMatrixR.fromArray( frameData.rightViewMatrix ); + eyeMatrixR.multiply( headMatrix ); + + // The eye's model matrix in head space is the inverse of headToEyeMatrix we calculated above. + + eyeMatrixL.getInverse( eyeMatrixL ); + eyeMatrixR.getInverse( eyeMatrixR ); + + } + + function fovToNDCScaleOffset( fov ) { + + var pxscale = 2.0 / ( fov.leftTan + fov.rightTan ); + var pxoffset = ( fov.leftTan - fov.rightTan ) * pxscale * 0.5; + var pyscale = 2.0 / ( fov.upTan + fov.downTan ); + var pyoffset = ( fov.upTan - fov.downTan ) * pyscale * 0.5; + return { scale: [ pxscale, pyscale ], offset: [ pxoffset, pyoffset ] }; + + } + + function fovPortToProjection( fov, rightHanded, zNear, zFar ) { + + rightHanded = rightHanded === undefined ? true : rightHanded; + zNear = zNear === undefined ? 0.01 : zNear; + zFar = zFar === undefined ? 10000.0 : zFar; + + var handednessScale = rightHanded ? - 1.0 : 1.0; + + // start with an identity matrix + var mobj = new THREE.Matrix4(); + var m = mobj.elements; + + // and with scale/offset info for normalized device coords + var scaleAndOffset = fovToNDCScaleOffset( fov ); + + // X result, map clip edges to [-w,+w] + m[ 0 * 4 + 0 ] = scaleAndOffset.scale[ 0 ]; + m[ 0 * 4 + 1 ] = 0.0; + m[ 0 * 4 + 2 ] = scaleAndOffset.offset[ 0 ] * handednessScale; + m[ 0 * 4 + 3 ] = 0.0; + + // Y result, map clip edges to [-w,+w] + // Y offset is negated because this proj matrix transforms from world coords with Y=up, + // but the NDC scaling has Y=down (thanks D3D?) + m[ 1 * 4 + 0 ] = 0.0; + m[ 1 * 4 + 1 ] = scaleAndOffset.scale[ 1 ]; + m[ 1 * 4 + 2 ] = - scaleAndOffset.offset[ 1 ] * handednessScale; + m[ 1 * 4 + 3 ] = 0.0; + + // Z result (up to the app) + m[ 2 * 4 + 0 ] = 0.0; + m[ 2 * 4 + 1 ] = 0.0; + m[ 2 * 4 + 2 ] = zFar / ( zNear - zFar ) * - handednessScale; + m[ 2 * 4 + 3 ] = ( zFar * zNear ) / ( zNear - zFar ); + + // W result (= Z in) + m[ 3 * 4 + 0 ] = 0.0; + m[ 3 * 4 + 1 ] = 0.0; + m[ 3 * 4 + 2 ] = handednessScale; + m[ 3 * 4 + 3 ] = 0.0; + + mobj.transpose(); + return mobj; + + } + + function fovToProjection( fov, rightHanded, zNear, zFar ) { + + var DEG2RAD = Math.PI / 180.0; + + var fovPort = { + upTan: Math.tan( fov.upDegrees * DEG2RAD ), + downTan: Math.tan( fov.downDegrees * DEG2RAD ), + leftTan: Math.tan( fov.leftDegrees * DEG2RAD ), + rightTan: Math.tan( fov.rightDegrees * DEG2RAD ) + }; + + return fovPortToProjection( fovPort, rightHanded, zNear, zFar ); + + } + +}; diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/libs/dat.gui.min.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/libs/dat.gui.min.js new file mode 100644 index 0000000..5b69be5 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/libs/dat.gui.min.js @@ -0,0 +1,14 @@ +/** + * dat-gui JavaScript Controller Library + * https://github.com/dataarts/dat.gui + * + * Copyright 2016 Data Arts Team, Google Creative Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=o(i);e.exports=r["default"]},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(2),r=o(i),a=n(6),l=o(a),s=n(3),u=o(s),d=n(7),c=o(d),f=n(8),_=o(f),p=n(10),h=o(p),m=n(11),b=o(m),g=n(12),v=o(g),y=n(13),w=o(y),x=n(14),E=o(x),C=n(15),A=o(C),S=n(16),k=o(S),O=n(9),T=o(O),R=n(17),L=o(R);t["default"]={color:{Color:r["default"],math:l["default"],interpret:u["default"]},controllers:{Controller:c["default"],BooleanController:_["default"],OptionController:h["default"],StringController:b["default"],NumberController:v["default"],NumberControllerBox:w["default"],NumberControllerSlider:E["default"],FunctionController:A["default"],ColorController:k["default"]},dom:{dom:T["default"]},gui:{GUI:L["default"]},GUI:L["default"]}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(h.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(h.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(h.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(h.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}t.__esModule=!0;var l=n(3),s=o(l),u=n(6),d=o(u),c=n(4),f=o(c),_=n(5),p=o(_),h=function(){function e(){if(i(this,e),this.__state=s["default"].apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return e.prototype.toString=function(){return(0,f["default"])(this)},e.prototype.toHexString=function(){return(0,f["default"])(this,!0)},e.prototype.toOriginal=function(){return this.__state.conversion.write(this)},e}();h.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=d["default"].component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");p["default"].extend(e.__state,d["default"].hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},h.recalculateHSV=function(e){var t=d["default"].rgb_to_hsv(e.r,e.g,e.b);p["default"].extend(e.__state,{s:t.s,v:t.v}),p["default"].isNaN(t.h)?p["default"].isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},h.COMPONENTS=["r","g","b","h","s","v","hex","a"],r(h.prototype,"r",2),r(h.prototype,"g",1),r(h.prototype,"b",0),a(h.prototype,"h"),a(h.prototype,"s"),a(h.prototype,"v"),Object.defineProperty(h.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(h.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=d["default"].rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),t["default"]=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(4),r=o(i),a=n(5),l=o(a),s=[{litmus:l["default"].isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:r["default"]},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:r["default"]},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:r["default"]},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:r["default"]}}},{litmus:l["default"].isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:l["default"].isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:l["default"].isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b)&&l["default"].isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v)&&l["default"].isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],u=void 0,d=void 0,c=function(){d=!1;var e=arguments.length>1?l["default"].toArray(arguments):arguments[0];return l["default"].each(s,function(t){if(t.litmus(e))return l["default"].each(t.conversions,function(t,n){if(u=t.read(e),d===!1&&u!==!1)return d=u,u.conversionName=n,u.conversion=t,l["default"].BREAK}),l["default"].BREAK}),d};t["default"]=c},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),a=e.a,l=Math.round(e.h),s=e.s.toFixed(1),u=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var d=e.hex.toString(16);d.length<6;)d="0"+d;return"#"+d}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+a+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+a+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+a+"}":"HSV_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+"}":"HSVA_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+",a:"+a+"}":"unknown format"}},function(e,t){"use strict";t.__esModule=!0;var n=Array.prototype.forEach,o=Array.prototype.slice,i={BREAK:{},extend:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=o.call(arguments);return function(){for(var t=o.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(n&&e.forEach&&e.forEach===n)e.forEach(t,o);else if(e.length===e.length+0){var i=void 0,r=void 0;for(i=0,r=e.length;i>8*t&255},hex_with_component:function(e,t,o){return o<<(n=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}t.__esModule=!0;var s=n(7),u=o(s),d=n(5),c=o(d),f=function(e){function t(n,o,a){i(this,t);var s=r(this,e.call(this,n,o)),u=a||{};return s.__min=u.min,s.__max=u.max,s.__step=u.step,c["default"].isUndefined(s.__step)?0===s.initialValue?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=l(s.__impliedStep),s}return a(t,e),t.prototype.setValue=function(t){var n=t;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),e.prototype.setValue.call(this,n)},t.prototype.min=function(e){return this.__min=e,this},t.prototype.max=function(e){return this.__max=e,this},t.prototype.step=function(e){return this.__step=e,this.__impliedStep=e,this.__precision=l(e),this},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=n(5),_=o(f),p=function(e){function t(n,o,a){function l(){var e=parseFloat(m.__input.value);_["default"].isNaN(e)||m.setValue(e)}function s(){m.__onFinishChange&&m.__onFinishChange.call(m,m.getValue())}function u(){s()}function d(e){var t=b-e.clientY;m.setValue(m.getValue()+t*m.__impliedStep),b=e.clientY}function f(){c["default"].unbind(window,"mousemove",d),c["default"].unbind(window,"mouseup",f),s()}function p(e){c["default"].bind(window,"mousemove",d),c["default"].bind(window,"mouseup",f),b=e.clientY}i(this,t);var h=r(this,e.call(this,n,o,a));h.__truncationSuspended=!1;var m=h,b=void 0;return h.__input=document.createElement("input"),h.__input.setAttribute("type","text"),c["default"].bind(h.__input,"change",l),c["default"].bind(h.__input,"blur",u),c["default"].bind(h.__input,"mousedown",p),c["default"].bind(h.__input,"keydown",function(e){13===e.keyCode&&(m.__truncationSuspended=!0,this.blur(),m.__truncationSuspended=!1,s())}),h.updateDisplay(),h.domElement.appendChild(h.__input),h}return a(t,e),t.prototype.updateDisplay=function(){return this.__input.value=this.__truncationSuspended?this.getValue():l(this.getValue(),this.__precision),e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=p},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o,i){return o+(i-o)*((e-t)/(n-t))}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=function(e){function t(n,o,a,s,u){function d(e){document.activeElement.blur(),c["default"].bind(window,"mousemove",f),c["default"].bind(window,"mouseup",_),f(e)}function f(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(l(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function _(){c["default"].unbind(window,"mousemove",f),c["default"].unbind(window,"mouseup",_),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}i(this,t);var p=r(this,e.call(this,n,o,{min:a,max:s,step:u})),h=p;return p.__background=document.createElement("div"),p.__foreground=document.createElement("div"),c["default"].bind(p.__background,"mousedown",d),c["default"].addClass(p.__background,"slider"),c["default"].addClass(p.__foreground,"slider-fg"),p.updateDisplay(),p.__background.appendChild(p.__foreground),p.domElement.appendChild(p.__background),p}return a(t,e),t.prototype.updateDisplay=function(){var t=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*t+"%",e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=n(7),s=o(l),u=n(9),d=o(u),c=function(e){function t(n,o,a){i(this,t);var l=r(this,e.call(this,n,o)),s=l;return l.__button=document.createElement("div"),l.__button.innerHTML=void 0===a?"Fire":a,d["default"].bind(l.__button,"click",function(e){return e.preventDefault(),s.fire(),!1}),d["default"].addClass(l.__button,"button"),l.domElement.appendChild(l.__button),l}return a(t,e),t.prototype.fire=function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())},t}(s["default"]);t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o){e.style.background="",g["default"].each(y,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function s(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}t.__esModule=!0;var u=n(7),d=o(u),c=n(9),f=o(c),_=n(2),p=o(_),h=n(3),m=o(h),b=n(5),g=o(b),v=function(e){function t(n,o){function a(e){h(e),f["default"].bind(window,"mousemove",h),f["default"].bind(window,"mouseup",u)}function u(){f["default"].unbind(window,"mousemove",h),f["default"].unbind(window,"mouseup",u),_()}function d(){var e=(0,m["default"])(this.value);e!==!1?(y.__color.__state=e,y.setValue(y.__color.toOriginal())):this.value=y.__color.toString()}function c(){f["default"].unbind(window,"mousemove",b),f["default"].unbind(window,"mouseup",c),_()}function _(){y.__onFinishChange&&y.__onFinishChange.call(y,y.__color.toOriginal())}function h(e){e.preventDefault();var t=y.__saturation_field.getBoundingClientRect(),n=(e.clientX-t.left)/(t.right-t.left),o=1-(e.clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),n>1?n=1:n<0&&(n=0),y.__color.v=o,y.__color.s=n,y.setValue(y.__color.toOriginal()),!1}function b(e){e.preventDefault();var t=y.__hue_field.getBoundingClientRect(),n=1-(e.clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),y.__color.h=360*n,y.setValue(y.__color.toOriginal()),!1}i(this,t);var v=r(this,e.call(this,n,o));v.__color=new p["default"](v.getValue()),v.__temp=new p["default"](0);var y=v;v.domElement=document.createElement("div"),f["default"].makeSelectable(v.domElement,!1),v.__selector=document.createElement("div"),v.__selector.className="selector",v.__saturation_field=document.createElement("div"),v.__saturation_field.className="saturation-field",v.__field_knob=document.createElement("div"),v.__field_knob.className="field-knob",v.__field_knob_border="2px solid ",v.__hue_knob=document.createElement("div"),v.__hue_knob.className="hue-knob",v.__hue_field=document.createElement("div"),v.__hue_field.className="hue-field",v.__input=document.createElement("input"),v.__input.type="text",v.__input_textShadow="0 1px 1px ",f["default"].bind(v.__input,"keydown",function(e){13===e.keyCode&&d.call(this)}),f["default"].bind(v.__input,"blur",d),f["default"].bind(v.__selector,"mousedown",function(){f["default"].addClass(this,"drag").bind(window,"mouseup",function(){f["default"].removeClass(y.__selector,"drag")})});var w=document.createElement("div");return g["default"].extend(v.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g["default"].extend(v.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:v.__field_knob_border+(v.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g["default"].extend(v.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g["default"].extend(v.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g["default"].extend(w.style,{width:"100%",height:"100%",background:"none"}),l(w,"top","rgba(0,0,0,0)","#000"),g["default"].extend(v.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),s(v.__hue_field),g["default"].extend(v.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:v.__input_textShadow+"rgba(0,0,0,0.7)"}),f["default"].bind(v.__saturation_field,"mousedown",a),f["default"].bind(v.__field_knob,"mousedown",a),f["default"].bind(v.__hue_field,"mousedown",function(e){b(e),f["default"].bind(window,"mousemove",b),f["default"].bind(window,"mouseup",c)}),v.__saturation_field.appendChild(w),v.__selector.appendChild(v.__field_knob),v.__selector.appendChild(v.__saturation_field),v.__selector.appendChild(v.__hue_field),v.__hue_field.appendChild(v.__hue_knob),v.domElement.appendChild(v.__input),v.domElement.appendChild(v.__selector),v.updateDisplay(),v}return a(t,e),t.prototype.updateDisplay=function(){var e=(0,m["default"])(this.getValue());if(e!==!1){var t=!1;g["default"].each(p["default"].COMPONENTS,function(n){if(!g["default"].isUndefined(e[n])&&!g["default"].isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&g["default"].extend(this.__color.__state,e)}g["default"].extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;g["default"].extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),g["default"].extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})},t}(d["default"]),y=["-moz-","-o-","-webkit-","-ms-",""];t["default"]=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function r(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];t?n.innerHTML=n.value+"*":n.innerHTML=n.value}function a(e,t,n){if(n.__li=t,n.__gui=e,U["default"].extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:o,factoryArgs:[U["default"].toArray(arguments)]})}if(U["default"].isArray(t)||U["default"].isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){ +return n.__gui.remove(n),n}}),n instanceof B["default"])!function(){var e=new N["default"](n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});U["default"].each(["updateDisplay","onChange","onFinishChange","step"],function(t){var o=n[t],i=e[t];n[t]=e[t]=function(){var t=Array.prototype.slice.call(arguments);return i.apply(e,t),o.apply(n,t)}}),z["default"].addClass(t,"has-slider"),n.domElement.insertBefore(e.domElement,n.domElement.firstElementChild)}();else if(n instanceof N["default"]){var o=function(t){if(U["default"].isNumber(n.__min)&&U["default"].isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=s(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=U["default"].compose(o,n.min),n.max=U["default"].compose(o,n.max)}else n instanceof O["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__checkbox,"click")}),z["default"].bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof R["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__button,"click")}),z["default"].bind(t,"mouseover",function(){z["default"].addClass(n.__button,"hover")}),z["default"].bind(t,"mouseout",function(){z["default"].removeClass(n.__button,"hover")})):n instanceof j["default"]&&(z["default"].addClass(t,"color"),n.updateDisplay=U["default"].compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=U["default"].compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&r(e.getRoot(),!0),t},n.setValue)}function l(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(o!==-1){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,a=void 0;if(r[e.preset])a=r[e.preset];else{if(!r[Q])return;a=r[Q]}if(a[o]&&void 0!==a[o][t.property]){var l=a[o][t.property];t.initialValue=l,t.setValue(l)}}}}function s(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new j["default"](t,n);else{var s=[t,n].concat(o.factoryArgs);r=C["default"].apply(e,s)}o.before instanceof S["default"]&&(o.before=o.before.__li),l(e,r),z["default"].addClass(r.domElement,"c");var u=document.createElement("span");z["default"].addClass(u,"property-name"),u.innerHTML=r.property;var d=document.createElement("div");d.appendChild(u),d.appendChild(r.domElement);var c=i(e,d,o.before);return z["default"].addClass(c,oe.CLASS_CONTROLLER_ROW),r instanceof j["default"]?z["default"].addClass(c,"color"):z["default"].addClass(c,g(r.getValue())),a(e,c,r),e.__controllers.push(r),r}function u(e,t){return document.location.href+"."+t}function d(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function c(e,t){t.style.display=e.useLocalStorage?"block":"none"}function f(e){var t=e.__save_row=document.createElement("li");z["default"].addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),z["default"].addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",z["default"].addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",z["default"].addClass(o,"button"),z["default"].addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",z["default"].addClass(i,"button"),z["default"].addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",z["default"].addClass(r,"button"),z["default"].addClass(r,"revert");var a=e.__preset_select=document.createElement("select");e.load&&e.load.remembered?U["default"].each(e.load.remembered,function(t,n){d(e,n,n===e.preset)}):d(e,Q,!1),z["default"].bind(a,"change",function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=h(this)),e.folders={},U["default"].each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=h(this),r(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[Q]=h(this,!0)),this.load.remembered[e]=h(this),this.preset=e,d(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){U["default"].each(this.__controllers,function(t){this.getRoot().load.remembered?l(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),U["default"].each(this.__folders,function(e){e.revert(e)}),e||r(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&b(this.__listening)},updateDisplay:function(){U["default"].each(this.__controllers,function(e){e.updateDisplay()}),U["default"].each(this.__folders,function(e){e.updateDisplay()})}}),e.exports=oe},function(e,t){"use strict";e.exports={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(r){}}}},function(e,t){e.exports="
      Here's the new load parameter for your GUI's constructor:
      Automatically save values to localStorage on exit.
      The values saved to localStorage will override those passed to dat.GUI's constructor. This makes it easier to work incrementally, but localStorage is fragile, and your friends may not see the same values you do.
      "},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(10),r=o(i),a=n(13),l=o(a),s=n(14),u=o(s),d=n(11),c=o(d),f=n(15),_=o(f),p=n(8),h=o(p),m=n(5),b=o(m),g=function(e,t){var n=e[t];return b["default"].isArray(arguments[2])||b["default"].isObject(arguments[2])?new r["default"](e,t,arguments[2]):b["default"].isNumber(n)?b["default"].isNumber(arguments[2])&&b["default"].isNumber(arguments[3])?b["default"].isNumber(arguments[4])?new u["default"](e,t,arguments[2],arguments[3],arguments[4]):new u["default"](e,t,arguments[2],arguments[3]):b["default"].isNumber(arguments[4])?new l["default"](e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new l["default"](e,t,{min:arguments[2],max:arguments[3]}):b["default"].isString(n)?new c["default"](e,t):b["default"].isFunction(n)?new _["default"](e,t,""):b["default"].isBoolean(n)?new h["default"](e,t):null};t["default"]=g},function(e,t){"use strict";function n(e){setTimeout(e,1e3/60)}t.__esModule=!0,t["default"]=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.__esModule=!0;var r=n(9),a=o(r),l=n(5),s=o(l),u=function(){function e(){i(this,e),this.backgroundElement=document.createElement("div"),s["default"].extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),a["default"].makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s["default"].extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;a["default"].bind(this.backgroundElement,"click",function(){t.hide()})}return e.prototype.show=function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s["default"].defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})},e.prototype.hide=function t(){var e=this,t=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",a["default"].unbind(e.domElement,"webkitTransitionEnd",n),a["default"].unbind(e.domElement,"transitionend",n),a["default"].unbind(e.domElement,"oTransitionEnd",n)};a["default"].bind(this.domElement,"webkitTransitionEnd",t),a["default"].bind(this.domElement,"transitionend",t),a["default"].bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"},e.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-a["default"].getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-a["default"].getHeight(this.domElement)/2+"px"},e}();t["default"]=u},function(e,t,n){t=e.exports=n(24)(),t.push([e.id,".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1!important}.dg.main .close-button.drag,.dg.main:hover .close-button{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;border:0;position:absolute;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-x:hidden}.dg.a.has-save>ul{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{position:fixed;top:0;z-index:1002}.dg li{-webkit-transition:height .1s ease-out;transition:height .1s ease-out}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;overflow:hidden;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid transparent}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:9px}.dg .c select{margin-top:5px}.dg .cr.boolean,.dg .cr.boolean *,.dg .cr.function,.dg .cr.function *,.dg .cr.function .property-name{cursor:pointer}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco,monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px Lucida Grande,sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid hsla(0,0%,100%,.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2fa1d6}.dg .cr.number input[type=text]{color:#2fa1d6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.boolean:hover,.dg .cr.function:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2fa1d6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;te+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; +Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, +v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats); diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/DDSLoader.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/DDSLoader.js new file mode 100644 index 0000000..e4d15c6 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/DDSLoader.js @@ -0,0 +1,269 @@ +/* + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.DDSLoader = function () { + + this._parser = THREE.DDSLoader.parse; + +}; + +THREE.DDSLoader.prototype = Object.create( THREE.CompressedTextureLoader.prototype ); +THREE.DDSLoader.prototype.constructor = THREE.DDSLoader; + +THREE.DDSLoader.parse = function ( buffer, loadMipmaps ) { + + var dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 }; + + // Adapted from @toji's DDS utils + // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js + + // All values and structures referenced from: + // http://msdn.microsoft.com/en-us/library/bb943991.aspx/ + + var DDS_MAGIC = 0x20534444; + + var DDSD_CAPS = 0x1, + DDSD_HEIGHT = 0x2, + DDSD_WIDTH = 0x4, + DDSD_PITCH = 0x8, + DDSD_PIXELFORMAT = 0x1000, + DDSD_MIPMAPCOUNT = 0x20000, + DDSD_LINEARSIZE = 0x80000, + DDSD_DEPTH = 0x800000; + + var DDSCAPS_COMPLEX = 0x8, + DDSCAPS_MIPMAP = 0x400000, + DDSCAPS_TEXTURE = 0x1000; + + var DDSCAPS2_CUBEMAP = 0x200, + DDSCAPS2_CUBEMAP_POSITIVEX = 0x400, + DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800, + DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000, + DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000, + DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000, + DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000, + DDSCAPS2_VOLUME = 0x200000; + + var DDPF_ALPHAPIXELS = 0x1, + DDPF_ALPHA = 0x2, + DDPF_FOURCC = 0x4, + DDPF_RGB = 0x40, + DDPF_YUV = 0x200, + DDPF_LUMINANCE = 0x20000; + + function fourCCToInt32( value ) { + + return value.charCodeAt( 0 ) + + ( value.charCodeAt( 1 ) << 8 ) + + ( value.charCodeAt( 2 ) << 16 ) + + ( value.charCodeAt( 3 ) << 24 ); + + } + + function int32ToFourCC( value ) { + + return String.fromCharCode( + value & 0xff, + ( value >> 8 ) & 0xff, + ( value >> 16 ) & 0xff, + ( value >> 24 ) & 0xff + ); + + } + + function loadARGBMip( buffer, dataOffset, width, height ) { + + var dataLength = width * height * 4; + var srcBuffer = new Uint8Array( buffer, dataOffset, dataLength ); + var byteArray = new Uint8Array( dataLength ); + var dst = 0; + var src = 0; + for ( var y = 0; y < height; y ++ ) { + + for ( var x = 0; x < width; x ++ ) { + + var b = srcBuffer[ src ]; src ++; + var g = srcBuffer[ src ]; src ++; + var r = srcBuffer[ src ]; src ++; + var a = srcBuffer[ src ]; src ++; + byteArray[ dst ] = r; dst ++; //r + byteArray[ dst ] = g; dst ++; //g + byteArray[ dst ] = b; dst ++; //b + byteArray[ dst ] = a; dst ++; //a + + } + + } + return byteArray; + + } + + var FOURCC_DXT1 = fourCCToInt32( "DXT1" ); + var FOURCC_DXT3 = fourCCToInt32( "DXT3" ); + var FOURCC_DXT5 = fourCCToInt32( "DXT5" ); + var FOURCC_ETC1 = fourCCToInt32( "ETC1" ); + + var headerLengthInt = 31; // The header length in 32 bit ints + + // Offsets into the header array + + var off_magic = 0; + + var off_size = 1; + var off_flags = 2; + var off_height = 3; + var off_width = 4; + + var off_mipmapCount = 7; + + var off_pfFlags = 20; + var off_pfFourCC = 21; + var off_RGBBitCount = 22; + var off_RBitMask = 23; + var off_GBitMask = 24; + var off_BBitMask = 25; + var off_ABitMask = 26; + + var off_caps = 27; + var off_caps2 = 28; + var off_caps3 = 29; + var off_caps4 = 30; + + // Parse header + + var header = new Int32Array( buffer, 0, headerLengthInt ); + + if ( header[ off_magic ] !== DDS_MAGIC ) { + + console.error( 'THREE.DDSLoader.parse: Invalid magic number in DDS header.' ); + return dds; + + } + + if ( ! header[ off_pfFlags ] & DDPF_FOURCC ) { + + console.error( 'THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.' ); + return dds; + + } + + var blockBytes; + + var fourCC = header[ off_pfFourCC ]; + + var isRGBAUncompressed = false; + + switch ( fourCC ) { + + case FOURCC_DXT1: + + blockBytes = 8; + dds.format = THREE.RGB_S3TC_DXT1_Format; + break; + + case FOURCC_DXT3: + + blockBytes = 16; + dds.format = THREE.RGBA_S3TC_DXT3_Format; + break; + + case FOURCC_DXT5: + + blockBytes = 16; + dds.format = THREE.RGBA_S3TC_DXT5_Format; + break; + + case FOURCC_ETC1: + + blockBytes = 8; + dds.format = THREE.RGB_ETC1_Format; + break; + + default: + + if ( header[ off_RGBBitCount ] === 32 + && header[ off_RBitMask ] & 0xff0000 + && header[ off_GBitMask ] & 0xff00 + && header[ off_BBitMask ] & 0xff + && header[ off_ABitMask ] & 0xff000000 ) { + + isRGBAUncompressed = true; + blockBytes = 64; + dds.format = THREE.RGBAFormat; + + } else { + + console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) ); + return dds; + + } + } + + dds.mipmapCount = 1; + + if ( header[ off_flags ] & DDSD_MIPMAPCOUNT && loadMipmaps !== false ) { + + dds.mipmapCount = Math.max( 1, header[ off_mipmapCount ] ); + + } + + var caps2 = header[ off_caps2 ]; + dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false; + if ( dds.isCubemap && ( + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) + ) ) { + + console.error( 'THREE.DDSLoader.parse: Incomplete cubemap faces' ); + return dds; + + } + + dds.width = header[ off_width ]; + dds.height = header[ off_height ]; + + var dataOffset = header[ off_size ] + 4; + + // Extract mipmaps buffers + + var faces = dds.isCubemap ? 6 : 1; + + for ( var face = 0; face < faces; face ++ ) { + + var width = dds.width; + var height = dds.height; + + for ( var i = 0; i < dds.mipmapCount; i ++ ) { + + if ( isRGBAUncompressed ) { + + var byteArray = loadARGBMip( buffer, dataOffset, width, height ); + var dataLength = byteArray.length; + + } else { + + var dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes; + var byteArray = new Uint8Array( buffer, dataOffset, dataLength ); + + } + + var mipmap = { "data": byteArray, "width": width, "height": height }; + dds.mipmaps.push( mipmap ); + + dataOffset += dataLength; + + width = Math.max( width >> 1, 1 ); + height = Math.max( height >> 1, 1 ); + + } + + } + + return dds; + +}; diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTF2Loader.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTF2Loader.js new file mode 100644 index 0000000..3efb86f --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTF2Loader.js @@ -0,0 +1,2872 @@ +/** + * @author Rich Tibbett / https://github.com/richtr + * @author mrdoob / http://mrdoob.com/ + * @author Tony Parisi / http://www.tonyparisi.com/ + * @author Takahiro / https://github.com/takahirox + * @author Don McCurdy / https://www.donmccurdy.com + */ + +THREE.GLTF2Loader = ( function () { + + function GLTF2Loader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + } + + GLTF2Loader.prototype = { + + constructor: GLTF2Loader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = this.path && ( typeof this.path === "string" ) ? this.path : THREE.Loader.prototype.extractUrlBase( url ); + + var loader = new THREE.FileLoader( scope.manager ); + + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + scope.parse( data, onLoad, path ); + + }, onProgress, onError ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + + }, + + setPath: function ( value ) { + + this.path = value; + + }, + + parse: function ( data, callback, path ) { + + var content; + var extensions = {}; + + var magic = convertUint8ArrayToString( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + content = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content; + + } else { + + content = convertUint8ArrayToString( new Uint8Array( data ) ); + + } + + var json = JSON.parse( content ); + + if ( json.extensionsUsed ) { + + if( json.extensionsUsed.indexOf( EXTENSIONS.KHR_LIGHTS ) >= 0 ) { + + extensions[ EXTENSIONS.KHR_LIGHTS ] = new GLTFLightsExtension( json ); + + } + + if( json.extensionsUsed.indexOf( EXTENSIONS.KHR_MATERIALS_COMMON ) >= 0 ) { + + extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] = new GLTFMaterialsCommonExtension( json ); + + } + + if( json.extensionsUsed.indexOf( EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ) >= 0 ) { + + extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] = new GLTFMaterialsPbrSpecularGlossinessExtension(); + + } + + if ( json.extensionsUsed.indexOf( EXTENSIONS.KHR_TECHNIQUE_WEBGL ) >= 0 ) { + + extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ] = new GLTFTechniqueWebglExtension( json ); + + } + + } + + console.time( 'GLTF2Loader' ); + + var parser = new GLTFParser( json, extensions, { + + path: path || this.path, + crossOrigin: this.crossOrigin + + } ); + + parser.parse( function ( scene, scenes, cameras, animations ) { + + console.timeEnd( 'GLTF2Loader' ); + + var glTF = { + "scene": scene, + "scenes": scenes, + "cameras": cameras, + "animations": animations + }; + + callback( glTF ); + + } ); + + } + + }; + + /* GLTFREGISTRY */ + + function GLTFRegistry() { + + var objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + }, + + update: function ( scene, camera ) { + + for ( var name in objects ) { + + var object = objects[ name ]; + + if ( object.update ) { + + object.update( scene, camera ); + + } + + } + + } + + }; + + } + + /* GLTFSHADER */ + + function GLTFShader( targetNode, allNodes ) { + + var boundUniforms = {}; + + // bind each uniform to its source node + + var uniforms = targetNode.material.uniforms; + + for ( var uniformId in uniforms ) { + + var uniform = uniforms[ uniformId ]; + + if ( uniform.semantic ) { + + var sourceNodeRef = uniform.node; + + var sourceNode = targetNode; + + if ( sourceNodeRef ) { + + sourceNode = allNodes[ sourceNodeRef ]; + + } + + boundUniforms[ uniformId ] = { + semantic: uniform.semantic, + sourceNode: sourceNode, + targetNode: targetNode, + uniform: uniform + }; + + } + + } + + this.boundUniforms = boundUniforms; + this._m4 = new THREE.Matrix4(); + + } + + // Update - update all the uniform values + GLTFShader.prototype.update = function ( scene, camera ) { + + var boundUniforms = this.boundUniforms; + + for ( var name in boundUniforms ) { + + var boundUniform = boundUniforms[ name ]; + + switch ( boundUniform.semantic ) { + + case "MODELVIEW": + + var m4 = boundUniform.uniform.value; + m4.multiplyMatrices( camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld ); + break; + + case "MODELVIEWINVERSETRANSPOSE": + + var m3 = boundUniform.uniform.value; + this._m4.multiplyMatrices( camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld ); + m3.getNormalMatrix( this._m4 ); + break; + + case "PROJECTION": + + var m4 = boundUniform.uniform.value; + m4.copy( camera.projectionMatrix ); + break; + + case "JOINTMATRIX": + + var m4v = boundUniform.uniform.value; + + for ( var mi = 0; mi < m4v.length; mi ++ ) { + + // So it goes like this: + // SkinnedMesh world matrix is already baked into MODELVIEW; + // transform joints to local space, + // then transform using joint's inverse + m4v[ mi ] + .getInverse( boundUniform.sourceNode.matrixWorld ) + .multiply( boundUniform.targetNode.skeleton.bones[ mi ].matrixWorld ) + .multiply( boundUniform.targetNode.skeleton.boneInverses[ mi ] ) + .multiply( boundUniform.targetNode.bindMatrix ); + + } + + break; + + default : + + console.warn( "Unhandled shader semantic: " + boundUniform.semantic ); + break; + + } + + } + + }; + + /*********************************/ + /********** EXTENSIONS ***********/ + /*********************************/ + + var EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_LIGHTS: 'KHR_lights', + KHR_MATERIALS_COMMON: 'KHR_materials_common', + KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', + KHR_TECHNIQUE_WEBGL: 'KHR_technique_webgl', + }; + + /** + * Lights Extension + * + * Specification: PENDING + */ + function GLTFLightsExtension( json ) { + + this.name = EXTENSIONS.KHR_LIGHTS; + + this.lights = {}; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS ] ) || {}; + var lights = extension.lights || {}; + + for ( var lightId in lights ) { + + var light = lights[ lightId ]; + var lightNode; + + var color = new THREE.Color().fromArray( light.color ); + + switch ( light.type ) { + + case 'directional': + lightNode = new THREE.DirectionalLight( color ); + lightNode.position.set( 0, 0, 1 ); + break; + + case 'point': + lightNode = new THREE.PointLight( color ); + break; + + case 'spot': + lightNode = new THREE.SpotLight( color ); + lightNode.position.set( 0, 0, 1 ); + break; + + case 'ambient': + lightNode = new THREE.AmbientLight( color ); + break; + + } + + if ( lightNode ) { + + lightNode.name = light.name || ( 'light_' + lightId ); + this.lights[ lightId ] = lightNode; + + } + + } + + } + + /** + * Common Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_materials_common + */ + function GLTFMaterialsCommonExtension( json ) { + + this.name = EXTENSIONS.KHR_MATERIALS_COMMON; + + } + + GLTFMaterialsCommonExtension.prototype.getMaterialType = function ( material ) { + + var khrMaterial = material.extensions[ this.name ]; + + switch ( khrMaterial.type ) { + + case 'commonBlinn' : + case 'commonPhong' : + return THREE.MeshPhongMaterial; + + case 'commonLambert' : + return THREE.MeshLambertMaterial; + + case 'commonConstant' : + default : + return THREE.MeshBasicMaterial; + + } + + }; + + GLTFMaterialsCommonExtension.prototype.extendParams = function ( materialParams, material, dependencies ) { + + var khrMaterial = material.extensions[ this.name ]; + + var keys = []; + + // TODO: Currently ignored: 'ambientFactor', 'ambientTexture' + switch ( khrMaterial.type ) { + + case 'commonBlinn' : + case 'commonPhong' : + keys.push( 'diffuseFactor', 'diffuseTexture', 'specularFactor', 'specularTexture', 'shininessFactor' ); + break; + + case 'commonLambert' : + keys.push( 'diffuseFactor', 'diffuseTexture' ); + break; + + case 'commonConstant' : + default : + break; + + } + + var materialValues = {}; + + keys.forEach( function( v ) { + + if ( khrMaterial[ v ] !== undefined ) materialValues[ v ] = khrMaterial[ v ]; + + } ); + + if ( materialValues.diffuseFactor !== undefined ) { + + materialParams.color = new THREE.Color().fromArray( materialValues.diffuseFactor ); + + } + + if ( materialValues.diffuseTexture !== undefined ) { + + materialParams.map = dependencies.textures[ materialValues.diffuseTexture.index ]; + + } + + if ( materialValues.specularFactor !== undefined ) { + + materialParams.specular = new THREE.Color().fromArray( materialValues.specularFactor ); + + } + + if ( materialValues.specularTexture !== undefined ) { + + materialParams.specularMap = dependencies.textures[ materialValues.specularTexture.index ]; + + } + + if ( materialValues.shininessFactor !== undefined ) { + + materialParams.shininess = materialValues.shininessFactor; + + } + + }; + + /* BINARY EXTENSION */ + + var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; + var BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; + var BINARY_EXTENSION_HEADER_LENGTH = 12; + var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + + function GLTFBinaryExtension( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + + this.header = { + magic: convertUint8ArrayToString( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'GLTF2Loader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'GLTF2Loader: Legacy binary file detected. Use GLTFLoader instead.' ); + + } + + var chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + var chunkIndex = 0; + + while ( chunkIndex < chunkView.byteLength ) { + + var chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + var chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = convertUint8ArrayToString( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'GLTF2Loader: JSON content not found.' ); + + } + + } + + /** + * WebGL Technique Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_technique_webgl + */ + function GLTFTechniqueWebglExtension( json ) { + + this.name = EXTENSIONS.KHR_TECHNIQUE_WEBGL; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ] ) || {}; + + this.techniques = extension.techniques || {}; + this.programs = extension.programs || {}; + this.shaders = extension.shaders || {}; + + } + + GLTFTechniqueWebglExtension.prototype.getMaterialType = function () { + + return DeferredShaderMaterial; + + }; + + GLTFTechniqueWebglExtension.prototype.extendParams = function ( materialParams, material, dependencies ) { + + var extension = material[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ]; + var technique = dependencies.techniques[ extension.technique ]; + + materialParams.uniforms = {}; + + var program = dependencies.programs[ technique.program ]; + + if ( program === undefined ) { + + return; + + } + + materialParams.fragmentShader = dependencies.shaders[ program.fragmentShader ]; + + if ( ! materialParams.fragmentShader ) { + + throw new Error( 'ERROR: Missing fragment shader definition:', program.fragmentShader ); + + } + + var vertexShader = dependencies.shaders[ program.vertexShader ]; + + if ( ! vertexShader ) { + + throw new Error( 'ERROR: Missing vertex shader definition:', program.vertexShader ); + + } + + // IMPORTANT: FIX VERTEX SHADER ATTRIBUTE DEFINITIONS + materialParams.vertexShader = replaceTHREEShaderAttributes( vertexShader, technique ); + + var uniforms = technique.uniforms; + + for ( var uniformId in uniforms ) { + + var pname = uniforms[ uniformId ]; + var shaderParam = technique.parameters[ pname ]; + + var ptype = shaderParam.type; + + if ( WEBGL_TYPE[ ptype ] ) { + + var pcount = shaderParam.count; + var value; + + if ( material.values !== undefined ) value = material.values[ pname ]; + + var uvalue = new WEBGL_TYPE[ ptype ](); + var usemantic = shaderParam.semantic; + var unode = shaderParam.node; + + switch ( ptype ) { + + case WEBGL_CONSTANTS.FLOAT: + + uvalue = shaderParam.value; + + if ( pname === 'transparency' ) { + + materialParams.transparent = true; + + } + + if ( value !== undefined ) { + + uvalue = value; + + } + + break; + + case WEBGL_CONSTANTS.FLOAT_VEC2: + case WEBGL_CONSTANTS.FLOAT_VEC3: + case WEBGL_CONSTANTS.FLOAT_VEC4: + case WEBGL_CONSTANTS.FLOAT_MAT3: + + if ( shaderParam && shaderParam.value ) { + + uvalue.fromArray( shaderParam.value ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + break; + + case WEBGL_CONSTANTS.FLOAT_MAT2: + + // what to do? + console.warn( 'FLOAT_MAT2 is not a supported uniform type' ); + break; + + case WEBGL_CONSTANTS.FLOAT_MAT4: + + if ( pcount ) { + + uvalue = new Array( pcount ); + + for ( var mi = 0; mi < pcount; mi ++ ) { + + uvalue[ mi ] = new WEBGL_TYPE[ ptype ](); + + } + + if ( shaderParam && shaderParam.value ) { + + var m4v = shaderParam.value; + uvalue.fromArray( m4v ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + } else { + + if ( shaderParam && shaderParam.value ) { + + var m4 = shaderParam.value; + uvalue.fromArray( m4 ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + } + + break; + + case WEBGL_CONSTANTS.SAMPLER_2D: + + if ( value !== undefined ) { + + uvalue = dependencies.textures[ value ]; + + } else if ( shaderParam.value !== undefined ) { + + uvalue = dependencies.textures[ shaderParam.value ]; + + } else { + + uvalue = null; + + } + + break; + + } + + materialParams.uniforms[ uniformId ] = { + value: uvalue, + semantic: usemantic, + node: unode + }; + + } else { + + throw new Error( 'Unknown shader uniform param type: ' + ptype ); + + } + + } + + var states = technique.states || {}; + var enables = states.enable || []; + var functions = states.functions || {}; + + var enableCullFace = false; + var enableDepthTest = false; + var enableBlend = false; + + for ( var i = 0, il = enables.length; i < il; i ++ ) { + + var enable = enables[ i ]; + + switch ( STATES_ENABLES[ enable ] ) { + + case 'CULL_FACE': + + enableCullFace = true; + + break; + + case 'DEPTH_TEST': + + enableDepthTest = true; + + break; + + case 'BLEND': + + enableBlend = true; + + break; + + // TODO: implement + case 'SCISSOR_TEST': + case 'POLYGON_OFFSET_FILL': + case 'SAMPLE_ALPHA_TO_COVERAGE': + + break; + + default: + + throw new Error( "Unknown technique.states.enable: " + enable ); + + } + + } + + if ( enableCullFace ) { + + materialParams.side = functions.cullFace !== undefined ? WEBGL_SIDES[ functions.cullFace ] : THREE.FrontSide; + + } else { + + materialParams.side = THREE.DoubleSide; + + } + + materialParams.depthTest = enableDepthTest; + materialParams.depthFunc = functions.depthFunc !== undefined ? WEBGL_DEPTH_FUNCS[ functions.depthFunc ] : THREE.LessDepth; + materialParams.depthWrite = functions.depthMask !== undefined ? functions.depthMask[ 0 ] : true; + + materialParams.blending = enableBlend ? THREE.CustomBlending : THREE.NoBlending; + materialParams.transparent = enableBlend; + + var blendEquationSeparate = functions.blendEquationSeparate; + + if ( blendEquationSeparate !== undefined ) { + + materialParams.blendEquation = WEBGL_BLEND_EQUATIONS[ blendEquationSeparate[ 0 ] ]; + materialParams.blendEquationAlpha = WEBGL_BLEND_EQUATIONS[ blendEquationSeparate[ 1 ] ]; + + } else { + + materialParams.blendEquation = THREE.AddEquation; + materialParams.blendEquationAlpha = THREE.AddEquation; + + } + + var blendFuncSeparate = functions.blendFuncSeparate; + + if ( blendFuncSeparate !== undefined ) { + + materialParams.blendSrc = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 0 ] ]; + materialParams.blendDst = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 1 ] ]; + materialParams.blendSrcAlpha = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 2 ] ]; + materialParams.blendDstAlpha = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 3 ] ]; + + } else { + + materialParams.blendSrc = THREE.OneFactor; + materialParams.blendDst = THREE.ZeroFactor; + materialParams.blendSrcAlpha = THREE.OneFactor; + materialParams.blendDstAlpha = THREE.ZeroFactor; + + } + + }; + + /** + * Specular-Glossiness Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_materials_pbrSpecularGlossiness + */ + function GLTFMaterialsPbrSpecularGlossinessExtension() { + + return { + + name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, + + getMaterialType: function () { + + return THREE.ShaderMaterial; + + }, + + extendParams: function ( params, material, dependencies ) { + + // specification + // https://github.com/sbtron/glTF/tree/KHRpbrSpecGloss/extensions/Khronos/KHR_materials_pbrSpecularGlossiness + + var pbrSpecularGlossiness = material.extensions[ this.name ]; + + var shader = THREE.ShaderLib[ 'standard' ]; + + var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); + + var specularMapParsFragmentChunk = [ + '#ifdef USE_SPECULARMAP', + ' uniform sampler2D specularMap;', + '#endif' + ].join( '\n' ); + + var glossinessMapParsFragmentChunk = [ + '#ifdef USE_GLOSSINESSMAP', + ' uniform sampler2D glossinessMap;', + '#endif' + ].join( '\n' ); + + var specularMapFragmentChunk = [ + 'vec3 specularFactor = specular;', + '#ifdef USE_SPECULARMAP', + ' vec4 texelSpecular = texture2D( specularMap, vUv );', + ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' specularFactor *= texelSpecular.rgb;', + '#endif' + ].join( '\n' ); + + var glossinessMapFragmentChunk = [ + 'float glossinessFactor = glossiness;', + '#ifdef USE_GLOSSINESSMAP', + ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', + ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' glossinessFactor *= texelGlossiness.a;', + '#endif' + ].join( '\n' ); + + var lightPhysicalFragmentChunk = [ + 'PhysicalMaterial material;', + 'material.diffuseColor = diffuseColor.rgb;', + 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', + 'material.specularColor = specularFactor.rgb;', + ].join( '\n' ); + + var fragmentShader = shader.fragmentShader + .replace( '#include ', '' ) + .replace( 'uniform float roughness;', 'uniform vec3 specular;' ) + .replace( 'uniform float metalness;', 'uniform float glossiness;' ) + .replace( '#include ', specularMapParsFragmentChunk ) + .replace( '#include ', glossinessMapParsFragmentChunk ) + .replace( '#include ', specularMapFragmentChunk ) + .replace( '#include ', glossinessMapFragmentChunk ) + .replace( '#include ', lightPhysicalFragmentChunk ); + + delete uniforms.roughness; + delete uniforms.metalness; + delete uniforms.roughnessMap; + delete uniforms.metalnessMap; + + uniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) }; + uniforms.glossiness = { value: 0.5 }; + uniforms.specularMap = { value: null }; + uniforms.glossinessMap = { value: null }; + + params.vertexShader = shader.vertexShader; + params.fragmentShader = fragmentShader; + params.uniforms = uniforms; + params.defines = { 'STANDARD': '' }; + + params.color = new THREE.Color( 1.0, 1.0, 1.0 ); + params.opacity = 1.0; + + if ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) { + + var array = pbrSpecularGlossiness.diffuseFactor; + + params.color.fromArray( array ); + params.opacity = array[ 3 ]; + + } + + if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) { + + params.map = dependencies.textures[ pbrSpecularGlossiness.diffuseTexture.index ]; + + } + + params.emissive = new THREE.Color( 0.0, 0.0, 0.0 ); + params.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0; + params.specular = new THREE.Color( 1.0, 1.0, 1.0 ); + + if ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) { + + params.specular.fromArray( pbrSpecularGlossiness.specularFactor ); + + } + + if ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) { + + params.glossinessMap = dependencies.textures[ pbrSpecularGlossiness.specularGlossinessTexture.index ]; + params.specularMap = dependencies.textures[ pbrSpecularGlossiness.specularGlossinessTexture.index ]; + + } + + }, + + createMaterial: function ( params ) { + + // setup material properties based on MeshStandardMaterial for Specular-Glossiness + + var material = new THREE.ShaderMaterial( { + defines: params.defines, + vertexShader: params.vertexShader, + fragmentShader: params.fragmentShader, + uniforms: params.uniforms, + fog: true, + lights: true, + opacity: params.opacity, + transparent: params.transparent + } ); + + material.color = params.color; + + material.map = params.map === undefined ? null : params.map; + + material.lightMap = null; + material.lightMapIntensity = 1.0; + + material.aoMap = params.aoMap === undefined ? null : params.aoMap; + material.aoMapIntensity = 1.0; + + material.emissive = params.emissive; + material.emissiveIntensity = 1.0; + material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap; + + material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap; + material.bumpScale = 1; + + material.normalMap = params.normalMap === undefined ? null : params.normalMap; + material.normalScale = new THREE.Vector2( 1, 1 ); + + material.displacementMap = null; + material.displacementScale = 1; + material.displacementBias = 0; + + material.specularMap = params.specularMap === undefined ? null : params.specularMap; + material.specular = params.specular; + + material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap; + material.glossiness = params.glossiness; + + material.alphaMap = null; + + material.envMap = params.envMap === undefined ? null : params.envMap; + material.envMapIntensity = 1.0; + + material.refractionRatio = 0.98; + + material.extensions.derivatives = true; + + return material; + + }, + + // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer. + refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) { + + var uniforms = material.uniforms; + var defines = material.defines; + + uniforms.opacity.value = material.opacity; + + uniforms.diffuse.value.copy( material.color ); + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + uniforms.map.value = material.map; + uniforms.specularMap.value = material.specularMap; + uniforms.alphaMap.value = material.alphaMap; + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.glossinessMap ) { + + uvScaleMap = material.glossinessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + var offset = uvScaleMap.offset; + var repeat = uvScaleMap.repeat; + + uniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y ); + + } + + uniforms.envMap.value = material.envMap; + uniforms.envMapIntensity.value = material.envMapIntensity; + uniforms.flipEnvMap.value = ( material.envMap && material.envMap.isCubeTexture ) ? -1 : 1; + + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.specular.value.copy( material.specular ); + uniforms.glossiness.value = material.glossiness; + + uniforms.glossinessMap.value = material.glossinessMap; + + uniforms.emissiveMap.value = material.emissiveMap; + uniforms.bumpMap.value = material.bumpMap; + uniforms.normalMap.value = material.normalMap; + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + if ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) { + + defines.USE_GLOSSINESSMAP = ''; + // set USE_ROUGHNESSMAP to enable vUv + defines.USE_ROUGHNESSMAP = '' + + } + + if ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) { + + delete defines.USE_GLOSSINESSMAP; + delete defines.USE_ROUGHNESSMAP; + + } + + } + + }; + + } + + /*********************************/ + /********** INTERNALS ************/ + /*********************************/ + + /* CONSTANTS */ + + var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + TRIANGLES: 4, + LINES: 1, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123, + + VERTEX_SHADER: 35633, + FRAGMENT_SHADER: 35632 + }; + + var WEBGL_TYPE = { + 5126: Number, + //35674: THREE.Matrix2, + 35675: THREE.Matrix3, + 35676: THREE.Matrix4, + 35664: THREE.Vector2, + 35665: THREE.Vector3, + 35666: THREE.Vector4, + 35678: THREE.Texture + }; + + var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array + }; + + var WEBGL_FILTERS = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipMapNearestFilter, + 9985: THREE.LinearMipMapNearestFilter, + 9986: THREE.NearestMipMapLinearFilter, + 9987: THREE.LinearMipMapLinearFilter + }; + + var WEBGL_WRAPPINGS = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping + }; + + var WEBGL_TEXTURE_FORMATS = { + 6406: THREE.AlphaFormat, + 6407: THREE.RGBFormat, + 6408: THREE.RGBAFormat, + 6409: THREE.LuminanceFormat, + 6410: THREE.LuminanceAlphaFormat + }; + + var WEBGL_TEXTURE_DATATYPES = { + 5121: THREE.UnsignedByteType, + 32819: THREE.UnsignedShort4444Type, + 32820: THREE.UnsignedShort5551Type, + 33635: THREE.UnsignedShort565Type + }; + + var WEBGL_SIDES = { + 1028: THREE.BackSide, // Culling front + 1029: THREE.FrontSide // Culling back + //1032: THREE.NoSide // Culling front and back, what to do? + }; + + var WEBGL_DEPTH_FUNCS = { + 512: THREE.NeverDepth, + 513: THREE.LessDepth, + 514: THREE.EqualDepth, + 515: THREE.LessEqualDepth, + 516: THREE.GreaterEqualDepth, + 517: THREE.NotEqualDepth, + 518: THREE.GreaterEqualDepth, + 519: THREE.AlwaysDepth + }; + + var WEBGL_BLEND_EQUATIONS = { + 32774: THREE.AddEquation, + 32778: THREE.SubtractEquation, + 32779: THREE.ReverseSubtractEquation + }; + + var WEBGL_BLEND_FUNCS = { + 0: THREE.ZeroFactor, + 1: THREE.OneFactor, + 768: THREE.SrcColorFactor, + 769: THREE.OneMinusSrcColorFactor, + 770: THREE.SrcAlphaFactor, + 771: THREE.OneMinusSrcAlphaFactor, + 772: THREE.DstAlphaFactor, + 773: THREE.OneMinusDstAlphaFactor, + 774: THREE.DstColorFactor, + 775: THREE.OneMinusDstColorFactor, + 776: THREE.SrcAlphaSaturateFactor + // The followings are not supported by Three.js yet + //32769: CONSTANT_COLOR, + //32770: ONE_MINUS_CONSTANT_COLOR, + //32771: CONSTANT_ALPHA, + //32772: ONE_MINUS_CONSTANT_COLOR + }; + + var WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 + }; + + var PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' + }; + + var INTERPOLATION = { + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete + }; + + var STATES_ENABLES = { + 2884: 'CULL_FACE', + 2929: 'DEPTH_TEST', + 3042: 'BLEND', + 3089: 'SCISSOR_TEST', + 32823: 'POLYGON_OFFSET_FILL', + 32926: 'SAMPLE_ALPHA_TO_COVERAGE' + }; + + var ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' + }; + + /* UTILITY FUNCTIONS */ + + function _each( object, callback, thisObj ) { + + if ( !object ) { + return Promise.resolve(); + } + + var results; + var fns = []; + + if ( Object.prototype.toString.call( object ) === '[object Array]' ) { + + results = []; + + var length = object.length; + + for ( var idx = 0; idx < length; idx ++ ) { + + var value = callback.call( thisObj || this, object[ idx ], idx ); + + if ( value ) { + + fns.push( value ); + + if ( value instanceof Promise ) { + + value.then( function( key, value ) { + + results[ key ] = value; + + }.bind( this, idx )); + + } else { + + results[ idx ] = value; + + } + + } + + } + + } else { + + results = {}; + + for ( var key in object ) { + + if ( object.hasOwnProperty( key ) ) { + + var value = callback.call( thisObj || this, object[ key ], key ); + + if ( value ) { + + fns.push( value ); + + if ( value instanceof Promise ) { + + value.then( function( key, value ) { + + results[ key ] = value; + + }.bind( this, key )); + + } else { + + results[ key ] = value; + + } + + } + + } + + } + + } + + return Promise.all( fns ).then( function() { + + return results; + + }); + + } + + function resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) + return ''; + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) { + + return url; + + } + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) { + + return url; + + } + + // Blob URL + if ( /^blob:.*$/i.test( url ) ) { + + return url; + + } + + // Relative URL + return ( path || '' ) + url; + + } + + function convertUint8ArrayToString( array ) { + + if ( window.TextDecoder !== undefined ) { + + return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + s += String.fromCharCode( array[ i ] ); + + } + + return s; + + } + + // Three.js seems too dependent on attribute names so globally + // replace those in the shader code + function replaceTHREEShaderAttributes( shaderText, technique ) { + + // Expected technique attributes + var attributes = {}; + + for ( var attributeId in technique.attributes ) { + + var pname = technique.attributes[ attributeId ]; + + var param = technique.parameters[ pname ]; + var atype = param.type; + var semantic = param.semantic; + + attributes[ attributeId ] = { + type: atype, + semantic: semantic + }; + + } + + // Figure out which attributes to change in technique + + var shaderParams = technique.parameters; + var shaderAttributes = technique.attributes; + var params = {}; + + for ( var attributeId in attributes ) { + + var pname = shaderAttributes[ attributeId ]; + var shaderParam = shaderParams[ pname ]; + var semantic = shaderParam.semantic; + if ( semantic ) { + + params[ attributeId ] = shaderParam; + + } + + } + + for ( var pname in params ) { + + var param = params[ pname ]; + var semantic = param.semantic; + + var regEx = new RegExp( "\\b" + pname + "\\b", "g" ); + + switch ( semantic ) { + + case 'POSITION': + + shaderText = shaderText.replace( regEx, 'position' ); + break; + + case 'NORMAL': + + shaderText = shaderText.replace( regEx, 'normal' ); + break; + + case 'TEXCOORD_0': + case 'TEXCOORD0': + case 'TEXCOORD': + + shaderText = shaderText.replace( regEx, 'uv' ); + break; + + case 'TEXCOORD_1': + + shaderText = shaderText.replace( regEx, 'uv2' ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + + shaderText = shaderText.replace( regEx, 'color' ); + break; + + case 'WEIGHTS_0': + case 'WEIGHT': // WEIGHT semantic deprecated. + + shaderText = shaderText.replace( regEx, 'skinWeight' ); + break; + + case 'JOINTS_0': + case 'JOINT': // JOINT semantic deprecated. + + shaderText = shaderText.replace( regEx, 'skinIndex' ); + break; + + } + + } + + return shaderText; + + } + + function createDefaultMaterial() { + + return new THREE.MeshPhongMaterial( { + color: 0x00000, + emissive: 0x888888, + specular: 0x000000, + shininess: 0, + transparent: false, + depthTest: true, + side: THREE.FrontSide + } ); + + } + + // Deferred constructor for RawShaderMaterial types + function DeferredShaderMaterial( params ) { + + this.isDeferredShaderMaterial = true; + + this.params = params; + + } + + DeferredShaderMaterial.prototype.create = function () { + + var uniforms = THREE.UniformsUtils.clone( this.params.uniforms ); + + for ( var uniformId in this.params.uniforms ) { + + var originalUniform = this.params.uniforms[ uniformId ]; + + if ( originalUniform.value instanceof THREE.Texture ) { + + uniforms[ uniformId ].value = originalUniform.value; + uniforms[ uniformId ].value.needsUpdate = true; + + } + + uniforms[ uniformId ].semantic = originalUniform.semantic; + uniforms[ uniformId ].node = originalUniform.node; + + } + + this.params.uniforms = uniforms; + + return new THREE.RawShaderMaterial( this.params ); + + }; + + /* GLTF PARSER */ + + function GLTFParser( json, extensions, options ) { + + this.json = json || {}; + this.extensions = extensions || {}; + this.options = options || {}; + + // loader object cache + this.cache = new GLTFRegistry(); + + } + + GLTFParser.prototype._withDependencies = function ( dependencies ) { + + var _dependencies = {}; + + for ( var i = 0; i < dependencies.length; i ++ ) { + + var dependency = dependencies[ i ]; + var fnName = "load" + dependency.charAt( 0 ).toUpperCase() + dependency.slice( 1 ); + + var cached = this.cache.get( dependency ); + + if ( cached !== undefined ) { + + _dependencies[ dependency ] = cached; + + } else if ( this[ fnName ] ) { + + var fn = this[ fnName ](); + this.cache.add( dependency, fn ); + + _dependencies[ dependency ] = fn; + + } + + } + + return _each( _dependencies, function ( dependency ) { + + return dependency; + + } ); + + }; + + GLTFParser.prototype.parse = function ( callback ) { + + var json = this.json; + + // Clear the loader cache + this.cache.removeAll(); + + // Fire the callback on complete + this._withDependencies( [ + + "scenes", + "cameras", + "animations" + + ] ).then( function ( dependencies ) { + + var scenes = []; + + for ( var name in dependencies.scenes ) { + + scenes.push( dependencies.scenes[ name ] ); + + } + + var scene = json.scene !== undefined ? dependencies.scenes[ json.scene ] : scenes[ 0 ]; + + var cameras = []; + + for ( var name in dependencies.cameras ) { + + var camera = dependencies.cameras[ name ]; + cameras.push( camera ); + + } + + var animations = []; + + for ( var name in dependencies.animations ) { + + animations.push( dependencies.animations[ name ] ); + + } + + callback( scene, scenes, cameras, animations ); + + } ); + + }; + + GLTFParser.prototype.loadShaders = function () { + + var json = this.json; + var options = this.options; + var extensions = this.extensions; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + var shaders = extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ] !== undefined ? extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ].shaders : json.shaders; + + if ( shaders === undefined ) shaders = {}; + + return _each( shaders, function ( shader ) { + + if ( shader.bufferView !== undefined ) { + + var bufferView = dependencies.bufferViews[ shader.bufferView ]; + var array = new Uint8Array( bufferView ); + return convertUint8ArrayToString( array ); + + } + + return new Promise( function ( resolve ) { + + var loader = new THREE.FileLoader(); + loader.setResponseType( 'text' ); + loader.load( resolveURL( shader.uri, options.path ), function ( shaderText ) { + + resolve( shaderText ); + + } ); + + } ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadBuffers = function () { + + var json = this.json; + var extensions = this.extensions; + var options = this.options; + + return _each( json.buffers, function ( buffer, name ) { + + if ( buffer.type === 'arraybuffer' || buffer.type === undefined ) { + + // If present, GLB container is required to be the first buffer. + if ( buffer.uri === undefined && name === 0 ) { + + return extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body; + + } + + return new Promise( function ( resolve ) { + + var loader = new THREE.FileLoader(); + loader.setResponseType( 'arraybuffer' ); + loader.load( resolveURL( buffer.uri, options.path ), function ( buffer ) { + + resolve( buffer ); + + } ); + + } ); + + } else { + + console.warn( 'THREE.GLTF2Loader: ' + buffer.type + ' buffer type is not supported' ); + + } + + } ); + + }; + + GLTFParser.prototype.loadBufferViews = function () { + + var json = this.json; + + return this._withDependencies( [ + + "buffers" + + ] ).then( function ( dependencies ) { + + return _each( json.bufferViews, function ( bufferView ) { + + var arraybuffer = dependencies.buffers[ bufferView.buffer ]; + + var byteLength = bufferView.byteLength || 0; + var byteOffset = bufferView.byteOffset || 0; + + return arraybuffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadAccessors = function () { + + var json = this.json; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + return _each( json.accessors, function ( accessor ) { + + var arraybuffer = dependencies.bufferViews[ accessor.bufferView ]; + var itemSize = WEBGL_TYPE_SIZES[ accessor.type ]; + var TypedArray = WEBGL_COMPONENT_TYPES[ accessor.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + var elementBytes = TypedArray.BYTES_PER_ELEMENT; + var itemBytes = elementBytes * itemSize; + + var array; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( accessor.byteStride && accessor.byteStride !== itemBytes ) { + + // Use the full buffer if it's interleaved. + array = new TypedArray( arraybuffer ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + var ib = new THREE.InterleavedBuffer( array, accessor.byteStride / elementBytes ); + + return new THREE.InterleavedBufferAttribute( ib, itemSize, accessor.byteOffset / elementBytes ); + + } else { + + array = new TypedArray( arraybuffer, accessor.byteOffset, accessor.count * itemSize ); + + return new THREE.BufferAttribute( array, itemSize ); + + } + + } ); + + } ); + + }; + + GLTFParser.prototype.loadTextures = function () { + + var json = this.json; + var options = this.options; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + return _each( json.textures, function ( texture ) { + + if ( texture.source !== undefined ) { + + return new Promise( function ( resolve ) { + + var source = json.images[ texture.source ]; + var sourceUri = source.uri; + + var urlCreator; + + if ( source.bufferView !== undefined ) { + + var bufferView = dependencies.bufferViews[ source.bufferView ]; + var blob = new Blob( [ bufferView ], { type: source.mimeType } ); + urlCreator = window.URL || window.webkitURL; + sourceUri = urlCreator.createObjectURL( blob ); + + } + + var textureLoader = THREE.Loader.Handlers.get( sourceUri ); + + if ( textureLoader === null ) { + + textureLoader = new THREE.TextureLoader(); + + } + + textureLoader.setCrossOrigin( options.crossOrigin ); + + textureLoader.load( resolveURL( sourceUri, options.path ), function ( _texture ) { + + if ( urlCreator !== undefined ) { + + urlCreator.revokeObjectURL( sourceUri ); + + } + + _texture.flipY = false; + + if ( texture.name !== undefined ) _texture.name = texture.name; + + _texture.format = texture.format !== undefined ? WEBGL_TEXTURE_FORMATS[ texture.format ] : THREE.RGBAFormat; + + if ( texture.internalFormat !== undefined && _texture.format !== WEBGL_TEXTURE_FORMATS[ texture.internalFormat ] ) { + + console.warn( 'THREE.GLTF2Loader: Three.js doesn\'t support texture internalFormat which is different from texture format. ' + + 'internalFormat will be forced to be the same value as format.' ); + + } + + _texture.type = texture.type !== undefined ? WEBGL_TEXTURE_DATATYPES[ texture.type ] : THREE.UnsignedByteType; + + var samplers = json.samplers || {}; + var sampler = samplers[ texture.sampler ] || {}; + + _texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; + _texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.NearestMipMapLinearFilter; + _texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; + _texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; + + resolve( _texture ); + + }, undefined, function () { + + resolve(); + + } ); + + } ); + + } + + } ); + + } ); + + }; + + GLTFParser.prototype.loadMaterials = function () { + + var json = this.json; + var extensions = this.extensions; + + return this._withDependencies( [ + + 'shaders', + 'textures' + + ] ).then( function ( dependencies ) { + + return _each( json.materials, function ( material ) { + + var materialType; + var materialParams = {}; + var materialExtensions = material.extensions || {}; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] ) { + + materialType = extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].getMaterialType( material ); + extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].extendParams( materialParams, material, dependencies ); + + } else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) { + + materialType = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].getMaterialType( material ); + extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].extendParams( materialParams, material, dependencies ); + + } else if ( materialExtensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ] ) { + + materialType = extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ].getMaterialType( material ); + extensions[ EXTENSIONS.KHR_TECHNIQUE_WEBGL ].extendParams( materialParams, material, dependencies ); + + } else if ( material.pbrMetallicRoughness !== undefined ) { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + materialType = THREE.MeshStandardMaterial; + + var metallicRoughness = material.pbrMetallicRoughness; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + materialParams.map = dependencies.textures[ metallicRoughness.baseColorTexture.index ]; + + var alphaMode = metallicRoughness.baseColorTexture.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode !== ALPHA_MODES.OPAQUE ) { + + materialParams.transparent = true; + + } + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + var textureIndex = metallicRoughness.metallicRoughnessTexture.index; + materialParams.metalnessMap = dependencies.textures[ textureIndex ]; + materialParams.roughnessMap = dependencies.textures[ textureIndex ]; + + } + + } else { + + materialType = THREE.MeshPhongMaterial; + + } + + if ( material.doubleSided === true ) { + + materialParams.side = THREE.DoubleSide; + + } + + if ( materialParams.opacity !== undefined && materialParams.opacity < 1.0 ) { + + materialParams.transparent = true; + + } else { + + materialParams.transparent = false; + + } + + if ( material.normalTexture !== undefined ) { + + materialParams.normalMap = dependencies.textures[ material.normalTexture.index ]; + + } + + if ( material.occlusionTexture !== undefined ) { + + materialParams.aoMap = dependencies.textures[ material.occlusionTexture.index ]; + + } + + if ( material.emissiveFactor !== undefined ) { + + if ( materialType === THREE.MeshBasicMaterial ) { + + materialParams.color = new THREE.Color().fromArray( material.emissiveFactor ); + + } else { + + materialParams.emissive = new THREE.Color().fromArray( material.emissiveFactor ); + + } + + } + + if ( material.emissiveTexture !== undefined ) { + + if ( materialType === THREE.MeshBasicMaterial ) { + + materialParams.map = dependencies.textures[ material.emissiveTexture.index ]; + + } else { + + materialParams.emissiveMap = dependencies.textures[ material.emissiveTexture.index ]; + + } + + } + + var _material; + + if ( materialType === THREE.ShaderMaterial ) { + + _material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams ); + + } else { + + _material = new materialType( materialParams ); + + } + + if ( material.name !== undefined ) _material.name = material.name; + + return _material; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadMeshes = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors", + "materials" + + ] ).then( function ( dependencies ) { + + return _each( json.meshes, function ( mesh ) { + + var group = new THREE.Group(); + if ( mesh.name !== undefined ) group.name = mesh.name; + + if ( mesh.extras ) group.userData = mesh.extras; + + var primitives = mesh.primitives || []; + + for ( var name in primitives ) { + + var primitive = primitives[ name ]; + + var material = primitive.material !== undefined ? dependencies.materials[ primitive.material ] : createDefaultMaterial(); + + var geometry; + + var meshNode; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === undefined ) { + + geometry = new THREE.BufferGeometry(); + + var attributes = primitive.attributes; + + for ( var attributeId in attributes ) { + + var attributeEntry = attributes[ attributeId ]; + + if ( attributeEntry === undefined ) return; + + var bufferAttribute = dependencies.accessors[ attributeEntry ]; + + switch ( attributeId ) { + + case 'POSITION': + + geometry.addAttribute( 'position', bufferAttribute ); + break; + + case 'NORMAL': + + geometry.addAttribute( 'normal', bufferAttribute ); + break; + + case 'TEXCOORD_0': + case 'TEXCOORD0': + case 'TEXCOORD': + + geometry.addAttribute( 'uv', bufferAttribute ); + break; + + case 'TEXCOORD_1': + + geometry.addAttribute( 'uv2', bufferAttribute ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + + geometry.addAttribute( 'color', bufferAttribute ); + break; + + case 'WEIGHTS_0': + case 'WEIGHT': // WEIGHT semantic deprecated. + + geometry.addAttribute( 'skinWeight', bufferAttribute ); + break; + + case 'JOINTS_0': + case 'JOINT': // JOINT semantic deprecated. + + geometry.addAttribute( 'skinIndex', bufferAttribute ); + break; + + } + + } + + if ( primitive.indices !== undefined ) { + + geometry.setIndex( dependencies.accessors[ primitive.indices ] ); + + } + + if ( material.aoMap !== undefined + && geometry.attributes.uv2 === undefined + && geometry.attributes.uv !== undefined ) { + + console.log( 'GLTF2Loader: Duplicating UVs to support aoMap.' ); + geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) ); + + } + + meshNode = new THREE.Mesh( geometry, material ); + meshNode.castShadow = true; + + if ( primitive.targets !== undefined ) { + + var targets = primitive.targets; + var morphAttributes = geometry.morphAttributes; + + morphAttributes.position = []; + morphAttributes.normal = []; + + material.morphTargets = true; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + var attributeName = 'morphTarget' + i; + + var positionAttribute, normalAttribute; + + if ( target.POSITION !== undefined ) { + + // Three.js morph formula is + // position + // + weight0 * ( morphTarget0 - position ) + // + weight1 * ( morphTarget1 - position ) + // ... + // while the glTF one is + // position + // + weight0 * morphTarget0 + // + weight1 * morphTarget1 + // ... + // then adding position to morphTarget. + // So morphTarget value will depend on mesh's position, then cloning attribute + // for the case if attribute is shared among two or more meshes. + + positionAttribute = dependencies.accessors[ target.POSITION ].clone(); + var position = geometry.attributes.position; + + for ( var j = 0, jl = positionAttribute.array.length; j < jl; j ++ ) { + + positionAttribute.array[ j ] += position.array[ j ]; + + } + + } else { + + // Copying the original position not to affect the final position. + // See the formula above. + positionAttribute = geometry.attributes.position.clone(); + + } + + if ( target.NORMAL !== undefined ) { + + material.morphNormals = true; + + // see target.POSITION's comment + + normalAttribute = dependencies.accessors[ target.NORMAL ].clone(); + var normal = geometry.attributes.normal; + + for ( var j = 0, jl = normalAttribute.array.length; j < jl; j ++ ) { + + normalAttribute.array[ j ] += normal.array[ j ]; + + } + + } else { + + normalAttribute = geometry.attributes.normal.clone(); + + } + + // TODO: implement + if ( target.TANGENT !== undefined ) { + + } + + positionAttribute.name = attributeName; + normalAttribute.name = attributeName; + + morphAttributes.position.push( positionAttribute ); + morphAttributes.normal.push( normalAttribute ); + + } + + meshNode.updateMorphTargets(); + + if ( mesh.weights !== undefined ) { + + for ( var i = 0, il = mesh.weights.length; i < il; i ++ ) { + + meshNode.morphTargetInfluences[ i ] = mesh.weights[ i ]; + + } + + } + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + geometry = new THREE.BufferGeometry(); + + var attributes = primitive.attributes; + + for ( var attributeId in attributes ) { + + var attributeEntry = attributes[ attributeId ]; + + if ( ! attributeEntry ) return; + + var bufferAttribute = dependencies.accessors[ attributeEntry ]; + + switch ( attributeId ) { + + case 'POSITION': + geometry.addAttribute( 'position', bufferAttribute ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + geometry.addAttribute( 'color', bufferAttribute ); + break; + + } + + } + + if ( primitive.indices !== undefined ) { + + geometry.setIndex( dependencies.accessors[ primitive.indices ] ); + + meshNode = new THREE.LineSegments( geometry, material ); + + } else { + + meshNode = new THREE.Line( geometry, material ); + + } + + } else { + + throw new Error( "Only triangular and line primitives are supported" ); + + } + + if ( geometry.attributes.color !== undefined ) { + + material.vertexColors = THREE.VertexColors; + material.needsUpdate = true; + + } + + meshNode.name = ( name === "0" ? group.name : group.name + name ); + + if ( primitive.extras ) meshNode.userData = primitive.extras; + + group.add( meshNode ); + + } + + return group; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadCameras = function () { + + var json = this.json; + + return _each( json.cameras, function ( camera ) { + + if ( camera.type == "perspective" && camera.perspective ) { + + var yfov = camera.perspective.yfov; + var aspectRatio = camera.perspective.aspectRatio !== undefined ? camera.perspective.aspectRatio : 1; + + // According to COLLADA spec... + // aspectRatio = xfov / yfov + var xfov = yfov * aspectRatio; + + var _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspectRatio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6 ); + if ( camera.name !== undefined ) _camera.name = camera.name; + + if ( camera.extras ) _camera.userData = camera.extras; + + return _camera; + + } else if ( camera.type == "orthographic" && camera.orthographic ) { + + var _camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, camera.orthographic.znear, camera.orthographic.zfar ); + if ( camera.name !== undefined ) _camera.name = camera.name; + + if ( camera.extras ) _camera.userData = camera.extras; + + return _camera; + + } + + } ); + + }; + + GLTFParser.prototype.loadSkins = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors" + + ] ).then( function ( dependencies ) { + + return _each( json.skins, function ( skin ) { + + var bindShapeMatrix = new THREE.Matrix4(); + + if ( skin.bindShapeMatrix !== undefined ) bindShapeMatrix.fromArray( skin.bindShapeMatrix ); + + var _skin = { + bindShapeMatrix: bindShapeMatrix, + joints: skin.joints, + inverseBindMatrices: dependencies.accessors[ skin.inverseBindMatrices ] + }; + + return _skin; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadAnimations = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors", + "nodes" + + ] ).then( function ( dependencies ) { + + return _each( json.animations, function ( animation, animationId ) { + + var tracks = []; + + for ( var channelId in animation.channels ) { + + var channel = animation.channels[ channelId ]; + var sampler = animation.samplers[ channel.sampler ]; + + if ( sampler ) { + + var target = channel.target; + var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated. + var input = animation.parameters !== undefined ? animation.parameters[ sampler.input ] : sampler.input; + var output = animation.parameters !== undefined ? animation.parameters[ sampler.output ] : sampler.output; + + var inputAccessor = dependencies.accessors[ input ]; + var outputAccessor = dependencies.accessors[ output ]; + + var node = dependencies.nodes[ name ]; + + if ( node ) { + + node.updateMatrix(); + node.matrixAutoUpdate = true; + + var TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = THREE.NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = THREE.QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + default: + + TypedKeyframeTrack = THREE.VectorKeyframeTrack; + break; + + } + + var targetName = node.name ? node.name : node.uuid; + var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; + + var targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + // node should be THREE.Group here but + // PATH_PROPERTIES.weights(morphTargetInfluences) should be + // the property of a mesh object under node. + // So finding targets here. + + node.traverse( function ( object ) { + + if ( object.isMesh === true && object.material.morphTargets === true ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + // KeyframeTrack.optimize() will modify given 'times' and 'values' + // buffers before creating a truncated copy to keep. Because buffers may + // be reused by other tracks, make copies here. + for ( var i = 0, il = targetNames.length; i < il; i ++ ) { + + tracks.push( new TypedKeyframeTrack( + targetNames[ i ] + '.' + PATH_PROPERTIES[ target.path ], + THREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ), + THREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ), + interpolation + ) ); + + } + + } + + } + + } + + var name = animation.name !== undefined ? animation.name : "animation_" + animationId; + + return new THREE.AnimationClip( name, undefined, tracks ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadNodes = function () { + + var json = this.json; + var extensions = this.extensions; + var scope = this; + + var nodes = json.nodes || []; + var skins = json.skins || []; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + skins.forEach( function ( skin ) { + + skin.joints.forEach( function ( id ) { + + nodes[ id ].isBone = true; + + } ); + + } ); + + return _each( json.nodes, function ( node ) { + + var matrix = new THREE.Matrix4(); + + var _node = node.isBone === true ? new THREE.Bone() : new THREE.Object3D(); + + if ( node.name !== undefined ) { + + _node.name = THREE.PropertyBinding.sanitizeNodeName( node.name ); + + } + + if ( node.extras ) _node.userData = node.extras; + + if ( node.matrix !== undefined ) { + + matrix.fromArray( node.matrix ); + _node.applyMatrix( matrix ); + + } else { + + if ( node.translation !== undefined ) { + + _node.position.fromArray( node.translation ); + + } + + if ( node.rotation !== undefined ) { + + _node.quaternion.fromArray( node.rotation ); + + } + + if ( node.scale !== undefined ) { + + _node.scale.fromArray( node.scale ); + + } + + } + + return _node; + + } ).then( function ( __nodes ) { + + return scope._withDependencies( [ + + "meshes", + "skins", + "cameras" + + ] ).then( function ( dependencies ) { + + return _each( __nodes, function ( _node, nodeId ) { + + var node = json.nodes[ nodeId ]; + + var meshes; + + if ( node.mesh !== undefined) { + + meshes = [ node.mesh ]; + + } else if ( node.meshes !== undefined ) { + + console.warn( 'GLTF2Loader: Legacy glTF file detected. Nodes may have no more than 1 mesh.' ); + + meshes = node.meshes; + + } + + if ( meshes !== undefined ) { + + for ( var meshId in meshes ) { + + var mesh = meshes[ meshId ]; + var group = dependencies.meshes[ mesh ]; + + if ( group === undefined ) { + + console.warn( 'GLTF2Loader: Couldn\'t find node "' + mesh + '".' ); + continue; + + } + + for ( var childrenId in group.children ) { + + var child = group.children[ childrenId ]; + + // clone Mesh to add to _node + + var originalMaterial = child.material; + var originalGeometry = child.geometry; + var originalUserData = child.userData; + var originalName = child.name; + + var material; + + if ( originalMaterial.isDeferredShaderMaterial ) { + + originalMaterial = material = originalMaterial.create(); + + } else { + + material = originalMaterial; + + } + + switch ( child.type ) { + + case 'LineSegments': + child = new THREE.LineSegments( originalGeometry, material ); + break; + + case 'LineLoop': + child = new THREE.LineLoop( originalGeometry, material ); + break; + + case 'Line': + child = new THREE.Line( originalGeometry, material ); + break; + + default: + child = new THREE.Mesh( originalGeometry, material ); + + } + + child.castShadow = true; + child.userData = originalUserData; + child.name = originalName; + + var skinEntry; + + if ( node.skin !== undefined ) { + + skinEntry = dependencies.skins[ node.skin ]; + + } + + // Replace Mesh with SkinnedMesh in library + if ( skinEntry ) { + + var geometry = originalGeometry; + material = originalMaterial; + material.skinning = true; + + child = new THREE.SkinnedMesh( geometry, material, false ); + child.castShadow = true; + child.userData = originalUserData; + child.name = originalName; + + var bones = []; + var boneInverses = []; + + for ( var i = 0, l = skinEntry.joints.length; i < l; i ++ ) { + + var jointId = skinEntry.joints[ i ]; + var jointNode = __nodes[ jointId ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + var m = skinEntry.inverseBindMatrices.array; + var mat = new THREE.Matrix4().fromArray( m, i * 16 ); + boneInverses.push( mat ); + + } else { + + console.warn( "WARNING: joint: '" + jointId + "' could not be found" ); + + } + + } + + child.bind( new THREE.Skeleton( bones, boneInverses, false ), skinEntry.bindShapeMatrix ); + + var buildBoneGraph = function ( parentJson, parentObject, property ) { + + var children = parentJson[ property ]; + + if ( children === undefined ) return; + + for ( var i = 0, il = children.length; i < il; i ++ ) { + + var nodeId = children[ i ]; + var bone = __nodes[ nodeId ]; + var boneJson = json.nodes[ nodeId ]; + + if ( bone !== undefined && bone.isBone === true && boneJson !== undefined ) { + + parentObject.add( bone ); + buildBoneGraph( boneJson, bone, 'children' ); + + } + + } + + }; + + buildBoneGraph( node, child, 'skeletons' ); + + } + + _node.add( child ); + + } + + } + + } + + if ( node.camera !== undefined ) { + + var camera = dependencies.cameras[ node.camera ]; + + _node.add( camera ); + + } + + if ( node.extensions + && node.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] + && node.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].light ) { + + var extensionLights = extensions[ EXTENSIONS.KHR_LIGHTS ].lights; + var light = extensionLights[ node.extensions[ EXTENSIONS.KHR_LIGHTS ].light ]; + + _node.add( light ); + + } + + return _node; + + } ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadScenes = function () { + + var json = this.json; + var extensions = this.extensions; + + // scene node hierachy builder + + function buildNodeHierachy( nodeId, parentObject, allNodes ) { + + var _node = allNodes[ nodeId ]; + parentObject.add( _node ); + + var node = json.nodes[ nodeId ]; + + if ( node.children ) { + + var children = node.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + var child = children[ i ]; + buildNodeHierachy( child, _node, allNodes ); + + } + + } + + } + + return this._withDependencies( [ + + "nodes" + + ] ).then( function ( dependencies ) { + + return _each( json.scenes, function ( scene ) { + + var _scene = new THREE.Scene(); + if ( scene.name !== undefined ) _scene.name = scene.name; + + if ( scene.extras ) _scene.userData = scene.extras; + + var nodes = scene.nodes || []; + + for ( var i = 0, l = nodes.length; i < l; i ++ ) { + + var nodeId = nodes[ i ]; + buildNodeHierachy( nodeId, _scene, dependencies.nodes ); + + } + + _scene.traverse( function ( child ) { + + // Register raw material meshes with GLTF2Loader.Shaders + if ( child.material && child.material.isRawShaderMaterial ) { + + child.gltfShader = new GLTFShader( child, dependencies.nodes ); + child.onBeforeRender = function(renderer, scene, camera){ + this.gltfShader.update(scene, camera); + }; + + } + + // for Specular-Glossiness. + if ( child.material && child.material.type === 'ShaderMaterial' ) { + + child.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms; + + } + + } ); + + return _scene; + + } ); + + } ); + + }; + + return GLTF2Loader; + +} )(); diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTFLoader.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTFLoader.js new file mode 100644 index 0000000..326392a --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/GLTFLoader.js @@ -0,0 +1,2213 @@ +/** + * @author Rich Tibbett / https://github.com/richtr + * @author mrdoob / http://mrdoob.com/ + * @author Tony Parisi / http://www.tonyparisi.com/ + * @author Takahiro / https://github.com/takahirox + */ + +THREE.GLTFLoader = ( function () { + + function GLTFLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + } + + GLTFLoader.prototype = { + + constructor: GLTFLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = this.path && ( typeof this.path === "string" ) ? this.path : THREE.Loader.prototype.extractUrlBase( url ); + + var loader = new THREE.FileLoader( scope.manager ); + + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + scope.parse( data, onLoad, path ); + + }, onProgress, onError ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + + }, + + setPath: function ( value ) { + + this.path = value; + + }, + + parse: function ( data, callback, path ) { + + var content; + var extensions = {}; + + var magic = convertUint8ArrayToString( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_DEFAULTS.magic ) { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + content = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content; + + } else { + + content = convertUint8ArrayToString( new Uint8Array( data ) ); + + } + + var json = JSON.parse( content ); + + if ( json.extensionsUsed && json.extensionsUsed.indexOf( EXTENSIONS.KHR_MATERIALS_COMMON ) >= 0 ) { + + extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] = new GLTFMaterialsCommonExtension( json ); + + } + + console.time( 'GLTFLoader' ); + + var parser = new GLTFParser( json, extensions, { + + path: path || this.path, + crossOrigin: this.crossOrigin + + } ); + + parser.parse( function ( scene, scenes, cameras, animations ) { + + console.timeEnd( 'GLTFLoader' ); + + var glTF = { + "scene": scene, + "scenes": scenes, + "cameras": cameras, + "animations": animations + }; + + callback( glTF ); + + } ); + + } + + }; + + /* GLTFREGISTRY */ + + function GLTFRegistry() { + + var objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + }, + + update: function ( scene, camera ) { + + for ( var name in objects ) { + + var object = objects[ name ]; + + if ( object.update ) { + + object.update( scene, camera ); + + } + + } + + } + + }; + + } + + /* GLTFSHADERS */ + + GLTFLoader.Shaders = { + + update: function () { + + console.warn( 'THREE.GLTFLoader.Shaders has been deprecated, and now updates automatically.' ); + + } + + }; + + /* GLTFSHADER */ + + function GLTFShader( targetNode, allNodes ) { + + var boundUniforms = {}; + + // bind each uniform to its source node + + var uniforms = targetNode.material.uniforms; + + for ( var uniformId in uniforms ) { + + var uniform = uniforms[ uniformId ]; + + if ( uniform.semantic ) { + + var sourceNodeRef = uniform.node; + + var sourceNode = targetNode; + + if ( sourceNodeRef ) { + + sourceNode = allNodes[ sourceNodeRef ]; + + } + + boundUniforms[ uniformId ] = { + semantic: uniform.semantic, + sourceNode: sourceNode, + targetNode: targetNode, + uniform: uniform + }; + + } + + } + + this.boundUniforms = boundUniforms; + this._m4 = new THREE.Matrix4(); + + } + + // Update - update all the uniform values + GLTFShader.prototype.update = function ( scene, camera ) { + + var boundUniforms = this.boundUniforms; + + for ( var name in boundUniforms ) { + + var boundUniform = boundUniforms[ name ]; + + switch ( boundUniform.semantic ) { + + case "MODELVIEW": + + var m4 = boundUniform.uniform.value; + m4.multiplyMatrices( camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld ); + break; + + case "MODELVIEWINVERSETRANSPOSE": + + var m3 = boundUniform.uniform.value; + this._m4.multiplyMatrices( camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld ); + m3.getNormalMatrix( this._m4 ); + break; + + case "PROJECTION": + + var m4 = boundUniform.uniform.value; + m4.copy( camera.projectionMatrix ); + break; + + case "JOINTMATRIX": + + var m4v = boundUniform.uniform.value; + + for ( var mi = 0; mi < m4v.length; mi ++ ) { + + // So it goes like this: + // SkinnedMesh world matrix is already baked into MODELVIEW; + // transform joints to local space, + // then transform using joint's inverse + m4v[ mi ] + .getInverse( boundUniform.sourceNode.matrixWorld ) + .multiply( boundUniform.targetNode.skeleton.bones[ mi ].matrixWorld ) + .multiply( boundUniform.targetNode.skeleton.boneInverses[ mi ] ) + .multiply( boundUniform.targetNode.bindMatrix ); + + } + + break; + + default : + + console.warn( "Unhandled shader semantic: " + boundUniform.semantic ); + break; + + } + + } + + }; + + + /* ANIMATION */ + + GLTFLoader.Animations = { + + update: function () { + + console.warn( 'THREE.GLTFLoader.Animation has been deprecated. Use THREE.AnimationMixer instead.' ); + + } + + }; + + /*********************************/ + /********** EXTENSIONS ***********/ + /*********************************/ + + var EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_MATERIALS_COMMON: 'KHR_materials_common' + }; + + /* MATERIALS COMMON EXTENSION */ + + function GLTFMaterialsCommonExtension( json ) { + + this.name = EXTENSIONS.KHR_MATERIALS_COMMON; + + this.lights = {}; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] ) || {}; + var lights = extension.lights || {}; + + for ( var lightId in lights ) { + + var light = lights[ lightId ]; + var lightNode; + + var lightParams = light[ light.type ]; + var color = new THREE.Color().fromArray( lightParams.color ); + + switch ( light.type ) { + + case "directional": + lightNode = new THREE.DirectionalLight( color ); + lightNode.position.set( 0, 0, 1 ); + break; + + case "point": + lightNode = new THREE.PointLight( color ); + break; + + case "spot": + lightNode = new THREE.SpotLight( color ); + lightNode.position.set( 0, 0, 1 ); + break; + + case "ambient": + lightNode = new THREE.AmbientLight( color ); + break; + + } + + if ( lightNode ) { + + this.lights[ lightId ] = lightNode; + + } + + } + + } + + /* BINARY EXTENSION */ + + var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; + + var BINARY_EXTENSION_HEADER_DEFAULTS = { magic: 'glTF', version: 1, contentFormat: 0 }; + + var BINARY_EXTENSION_HEADER_LENGTH = 20; + + function GLTFBinaryExtension( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + + var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + + var header = { + magic: convertUint8ArrayToString( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ), + contentLength: headerView.getUint32( 12, true ), + contentFormat: headerView.getUint32( 16, true ) + }; + + for ( var key in BINARY_EXTENSION_HEADER_DEFAULTS ) { + + var value = BINARY_EXTENSION_HEADER_DEFAULTS[ key ]; + + if ( header[ key ] !== value ) { + + throw new Error( 'Unsupported glTF-Binary header: Expected "%s" to be "%s".', key, value ); + + } + + } + + var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH, header.contentLength ); + + this.header = header; + this.content = convertUint8ArrayToString( contentArray ); + this.body = data.slice( BINARY_EXTENSION_HEADER_LENGTH + header.contentLength, header.length ); + + } + + GLTFBinaryExtension.prototype.loadShader = function ( shader, bufferViews ) { + + var bufferView = bufferViews[ shader.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].bufferView ]; + var array = new Uint8Array( bufferView ); + + return convertUint8ArrayToString( array ); + + }; + + GLTFBinaryExtension.prototype.loadTextureSourceUri = function ( source, bufferViews ) { + + var metadata = source.extensions[ EXTENSIONS.KHR_BINARY_GLTF ]; + var bufferView = bufferViews[ metadata.bufferView ]; + var stringData = convertUint8ArrayToString( new Uint8Array( bufferView ) ); + + return 'data:' + metadata.mimeType + ';base64,' + btoa( stringData ); + + }; + + /*********************************/ + /********** INTERNALS ************/ + /*********************************/ + + /* CONSTANTS */ + + var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + TRIANGLES: 4, + LINES: 1, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123, + + VERTEX_SHADER: 35633, + FRAGMENT_SHADER: 35632 + }; + + var WEBGL_TYPE = { + 5126: Number, + //35674: THREE.Matrix2, + 35675: THREE.Matrix3, + 35676: THREE.Matrix4, + 35664: THREE.Vector2, + 35665: THREE.Vector3, + 35666: THREE.Vector4, + 35678: THREE.Texture + }; + + var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array + }; + + var WEBGL_FILTERS = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipMapNearestFilter, + 9985: THREE.LinearMipMapNearestFilter, + 9986: THREE.NearestMipMapLinearFilter, + 9987: THREE.LinearMipMapLinearFilter + }; + + var WEBGL_WRAPPINGS = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping + }; + + var WEBGL_TEXTURE_FORMATS = { + 6406: THREE.AlphaFormat, + 6407: THREE.RGBFormat, + 6408: THREE.RGBAFormat, + 6409: THREE.LuminanceFormat, + 6410: THREE.LuminanceAlphaFormat + }; + + var WEBGL_TEXTURE_DATATYPES = { + 5121: THREE.UnsignedByteType, + 32819: THREE.UnsignedShort4444Type, + 32820: THREE.UnsignedShort5551Type, + 33635: THREE.UnsignedShort565Type + }; + + var WEBGL_SIDES = { + 1028: THREE.BackSide, // Culling front + 1029: THREE.FrontSide // Culling back + //1032: THREE.NoSide // Culling front and back, what to do? + }; + + var WEBGL_DEPTH_FUNCS = { + 512: THREE.NeverDepth, + 513: THREE.LessDepth, + 514: THREE.EqualDepth, + 515: THREE.LessEqualDepth, + 516: THREE.GreaterEqualDepth, + 517: THREE.NotEqualDepth, + 518: THREE.GreaterEqualDepth, + 519: THREE.AlwaysDepth + }; + + var WEBGL_BLEND_EQUATIONS = { + 32774: THREE.AddEquation, + 32778: THREE.SubtractEquation, + 32779: THREE.ReverseSubtractEquation + }; + + var WEBGL_BLEND_FUNCS = { + 0: THREE.ZeroFactor, + 1: THREE.OneFactor, + 768: THREE.SrcColorFactor, + 769: THREE.OneMinusSrcColorFactor, + 770: THREE.SrcAlphaFactor, + 771: THREE.OneMinusSrcAlphaFactor, + 772: THREE.DstAlphaFactor, + 773: THREE.OneMinusDstAlphaFactor, + 774: THREE.DstColorFactor, + 775: THREE.OneMinusDstColorFactor, + 776: THREE.SrcAlphaSaturateFactor + // The followings are not supported by Three.js yet + //32769: CONSTANT_COLOR, + //32770: ONE_MINUS_CONSTANT_COLOR, + //32771: CONSTANT_ALPHA, + //32772: ONE_MINUS_CONSTANT_COLOR + }; + + var WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 + }; + + var PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion' + }; + + var INTERPOLATION = { + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete + }; + + var STATES_ENABLES = { + 2884: 'CULL_FACE', + 2929: 'DEPTH_TEST', + 3042: 'BLEND', + 3089: 'SCISSOR_TEST', + 32823: 'POLYGON_OFFSET_FILL', + 32926: 'SAMPLE_ALPHA_TO_COVERAGE' + }; + + /* UTILITY FUNCTIONS */ + + function _each( object, callback, thisObj ) { + + if ( !object ) { + return Promise.resolve(); + } + + var results; + var fns = []; + + if ( Object.prototype.toString.call( object ) === '[object Array]' ) { + + results = []; + + var length = object.length; + + for ( var idx = 0; idx < length; idx ++ ) { + + var value = callback.call( thisObj || this, object[ idx ], idx ); + + if ( value ) { + + fns.push( value ); + + if ( value instanceof Promise ) { + + value.then( function( key, value ) { + + results[ key ] = value; + + }.bind( this, idx )); + + } else { + + results[ idx ] = value; + + } + + } + + } + + } else { + + results = {}; + + for ( var key in object ) { + + if ( object.hasOwnProperty( key ) ) { + + var value = callback.call( thisObj || this, object[ key ], key ); + + if ( value ) { + + fns.push( value ); + + if ( value instanceof Promise ) { + + value.then( function( key, value ) { + + results[ key ] = value; + + }.bind( this, key )); + + } else { + + results[ key ] = value; + + } + + } + + } + + } + + } + + return Promise.all( fns ).then( function() { + + return results; + + }); + + } + + function resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) + return ''; + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) { + + return url; + + } + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) { + + return url; + + } + + // Relative URL + return ( path || '' ) + url; + + } + + function convertUint8ArrayToString( array ) { + + if ( window.TextDecoder !== undefined ) { + + //return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + s += String.fromCharCode( array[ i ] ); + + } + + return s; + + } + + // Three.js seems too dependent on attribute names so globally + // replace those in the shader code + function replaceTHREEShaderAttributes( shaderText, technique ) { + + // Expected technique attributes + var attributes = {}; + + for ( var attributeId in technique.attributes ) { + + var pname = technique.attributes[ attributeId ]; + + var param = technique.parameters[ pname ]; + var atype = param.type; + var semantic = param.semantic; + + attributes[ attributeId ] = { + type: atype, + semantic: semantic + }; + + } + + // Figure out which attributes to change in technique + + var shaderParams = technique.parameters; + var shaderAttributes = technique.attributes; + var params = {}; + + for ( var attributeId in attributes ) { + + var pname = shaderAttributes[ attributeId ]; + var shaderParam = shaderParams[ pname ]; + var semantic = shaderParam.semantic; + if ( semantic ) { + + params[ attributeId ] = shaderParam; + + } + + } + + for ( var pname in params ) { + + var param = params[ pname ]; + var semantic = param.semantic; + + var regEx = new RegExp( "\\b" + pname + "\\b", "g" ); + + switch ( semantic ) { + + case "POSITION": + + shaderText = shaderText.replace( regEx, 'position' ); + break; + + case "NORMAL": + + shaderText = shaderText.replace( regEx, 'normal' ); + break; + + case 'TEXCOORD_0': + case 'TEXCOORD0': + case 'TEXCOORD': + + shaderText = shaderText.replace( regEx, 'uv' ); + break; + + case 'TEXCOORD_1': + + shaderText = shaderText.replace( regEx, 'uv2' ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + + shaderText = shaderText.replace( regEx, 'color' ); + break; + + case "WEIGHT": + + shaderText = shaderText.replace( regEx, 'skinWeight' ); + break; + + case "JOINT": + + shaderText = shaderText.replace( regEx, 'skinIndex' ); + break; + + } + + } + + return shaderText; + + } + + function createDefaultMaterial() { + + return new THREE.MeshPhongMaterial( { + color: 0x00000, + emissive: 0x888888, + specular: 0x000000, + shininess: 0, + transparent: false, + depthTest: true, + side: THREE.FrontSide + } ); + + } + + // Deferred constructor for RawShaderMaterial types + function DeferredShaderMaterial( params ) { + + this.isDeferredShaderMaterial = true; + + this.params = params; + + } + + DeferredShaderMaterial.prototype.create = function () { + + var uniforms = THREE.UniformsUtils.clone( this.params.uniforms ); + + for ( var uniformId in this.params.uniforms ) { + + var originalUniform = this.params.uniforms[ uniformId ]; + + if ( originalUniform.value instanceof THREE.Texture ) { + + uniforms[ uniformId ].value = originalUniform.value; + uniforms[ uniformId ].value.needsUpdate = true; + + } + + uniforms[ uniformId ].semantic = originalUniform.semantic; + uniforms[ uniformId ].node = originalUniform.node; + + } + + this.params.uniforms = uniforms; + + return new THREE.RawShaderMaterial( this.params ); + + }; + + /* GLTF PARSER */ + + function GLTFParser( json, extensions, options ) { + + this.json = json || {}; + this.extensions = extensions || {}; + this.options = options || {}; + + // loader object cache + this.cache = new GLTFRegistry(); + + } + + GLTFParser.prototype._withDependencies = function ( dependencies ) { + + var _dependencies = {}; + + for ( var i = 0; i < dependencies.length; i ++ ) { + + var dependency = dependencies[ i ]; + var fnName = "load" + dependency.charAt( 0 ).toUpperCase() + dependency.slice( 1 ); + + var cached = this.cache.get( dependency ); + + if ( cached !== undefined ) { + + _dependencies[ dependency ] = cached; + + } else if ( this[ fnName ] ) { + + var fn = this[ fnName ](); + this.cache.add( dependency, fn ); + + _dependencies[ dependency ] = fn; + + } + + } + + return _each( _dependencies, function ( dependency ) { + + return dependency; + + } ); + + }; + + GLTFParser.prototype.parse = function ( callback ) { + + var json = this.json; + + // Clear the loader cache + this.cache.removeAll(); + + // Fire the callback on complete + this._withDependencies( [ + + "scenes", + "cameras", + "animations" + + ] ).then( function ( dependencies ) { + + var scenes = []; + + for ( var name in dependencies.scenes ) { + + scenes.push( dependencies.scenes[ name ] ); + + } + + var scene = json.scene !== undefined ? dependencies.scenes[ json.scene ] : scenes[ 0 ]; + + var cameras = []; + + for ( var name in dependencies.cameras ) { + + var camera = dependencies.cameras[ name ]; + cameras.push( camera ); + + } + + var animations = []; + + for ( var name in dependencies.animations ) { + + animations.push( dependencies.animations[ name ] ); + + } + + callback( scene, scenes, cameras, animations ); + + } ); + + }; + + GLTFParser.prototype.loadShaders = function () { + + var json = this.json; + var extensions = this.extensions; + var options = this.options; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + return _each( json.shaders, function ( shader ) { + + if ( shader.extensions && shader.extensions[ EXTENSIONS.KHR_BINARY_GLTF ] ) { + + return extensions[ EXTENSIONS.KHR_BINARY_GLTF ].loadShader( shader, dependencies.bufferViews ); + + } + + return new Promise( function ( resolve ) { + + var loader = new THREE.FileLoader(); + loader.setResponseType( 'text' ); + loader.load( resolveURL( shader.uri, options.path ), function ( shaderText ) { + + resolve( shaderText ); + + } ); + + } ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadBuffers = function () { + + var json = this.json; + var extensions = this.extensions; + var options = this.options; + + return _each( json.buffers, function ( buffer, name ) { + + if ( name === BINARY_EXTENSION_BUFFER_NAME ) { + + return extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body; + + } + + if ( buffer.type === 'arraybuffer' || buffer.type === undefined ) { + + return new Promise( function ( resolve ) { + + var loader = new THREE.FileLoader(); + loader.setResponseType( 'arraybuffer' ); + loader.load( resolveURL( buffer.uri, options.path ), function ( buffer ) { + + resolve( buffer ); + + } ); + + } ); + + } else { + + console.warn( 'THREE.GLTFLoader: ' + buffer.type + ' buffer type is not supported' ); + + } + + } ); + + }; + + GLTFParser.prototype.loadBufferViews = function () { + + var json = this.json; + + return this._withDependencies( [ + + "buffers" + + ] ).then( function ( dependencies ) { + + return _each( json.bufferViews, function ( bufferView ) { + + var arraybuffer = dependencies.buffers[ bufferView.buffer ]; + + var byteLength = bufferView.byteLength !== undefined ? bufferView.byteLength : 0; + + return arraybuffer.slice( bufferView.byteOffset, bufferView.byteOffset + byteLength ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadAccessors = function () { + + var json = this.json; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + return _each( json.accessors, function ( accessor ) { + + var arraybuffer = dependencies.bufferViews[ accessor.bufferView ]; + var itemSize = WEBGL_TYPE_SIZES[ accessor.type ]; + var TypedArray = WEBGL_COMPONENT_TYPES[ accessor.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + var elementBytes = TypedArray.BYTES_PER_ELEMENT; + var itemBytes = elementBytes * itemSize; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( accessor.byteStride && accessor.byteStride !== itemBytes ) { + + // Use the full buffer if it's interleaved. + var array = new TypedArray( arraybuffer ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + var ib = new THREE.InterleavedBuffer( array, accessor.byteStride / elementBytes ); + + return new THREE.InterleavedBufferAttribute( ib, itemSize, accessor.byteOffset / elementBytes ); + + } else { + + array = new TypedArray( arraybuffer, accessor.byteOffset, accessor.count * itemSize ); + + return new THREE.BufferAttribute( array, itemSize ); + + } + + } ); + + } ); + + }; + + GLTFParser.prototype.loadTextures = function () { + + var json = this.json; + var extensions = this.extensions; + var options = this.options; + + return this._withDependencies( [ + + "bufferViews" + + ] ).then( function ( dependencies ) { + + return _each( json.textures, function ( texture ) { + + if ( texture.source ) { + + return new Promise( function ( resolve ) { + + var source = json.images[ texture.source ]; + var sourceUri = source.uri; + + if ( source.extensions && source.extensions[ EXTENSIONS.KHR_BINARY_GLTF ] ) { + + sourceUri = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].loadTextureSourceUri( source, dependencies.bufferViews ); + + } + + var textureLoader = THREE.Loader.Handlers.get( sourceUri ); + + if ( textureLoader === null ) { + + textureLoader = new THREE.TextureLoader(); + + } + + textureLoader.setCrossOrigin( options.crossOrigin ); + + textureLoader.load( resolveURL( sourceUri, options.path ), function ( _texture ) { + + _texture.flipY = false; + + if ( texture.name !== undefined ) _texture.name = texture.name; + + _texture.format = texture.format !== undefined ? WEBGL_TEXTURE_FORMATS[ texture.format ] : THREE.RGBAFormat; + + if ( texture.internalFormat !== undefined && _texture.format !== WEBGL_TEXTURE_FORMATS[ texture.internalFormat ] ) { + + console.warn( 'THREE.GLTFLoader: Three.js doesn\'t support texture internalFormat which is different from texture format. ' + + 'internalFormat will be forced to be the same value as format.' ); + + } + + _texture.type = texture.type !== undefined ? WEBGL_TEXTURE_DATATYPES[ texture.type ] : THREE.UnsignedByteType; + + if ( texture.sampler ) { + + var sampler = json.samplers[ texture.sampler ]; + + _texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; + _texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.NearestMipMapLinearFilter; + _texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; + _texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; + + } + + resolve( _texture ); + + }, undefined, function () { + + resolve(); + + } ); + + } ); + + } + + } ); + + } ); + + }; + + GLTFParser.prototype.loadMaterials = function () { + + var json = this.json; + + return this._withDependencies( [ + + "shaders", + "textures" + + ] ).then( function ( dependencies ) { + + return _each( json.materials, function ( material ) { + + var materialType; + var materialValues = {}; + var materialParams = {}; + + var khr_material; + + if ( material.extensions && material.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] ) { + + khr_material = material.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ]; + + } + + if ( khr_material ) { + + // don't copy over unused values to avoid material warning spam + var keys = [ 'ambient', 'emission', 'transparent', 'transparency', 'doubleSided' ]; + + switch ( khr_material.technique ) { + + case 'BLINN' : + case 'PHONG' : + materialType = THREE.MeshPhongMaterial; + keys.push( 'diffuse', 'specular', 'shininess' ); + break; + + case 'LAMBERT' : + materialType = THREE.MeshLambertMaterial; + keys.push( 'diffuse' ); + break; + + case 'CONSTANT' : + default : + materialType = THREE.MeshBasicMaterial; + break; + + } + + keys.forEach( function( v ) { + + if ( khr_material.values[ v ] !== undefined ) materialValues[ v ] = khr_material.values[ v ]; + + } ); + + if ( khr_material.doubleSided || materialValues.doubleSided ) { + + materialParams.side = THREE.DoubleSide; + + } + + if ( khr_material.transparent || materialValues.transparent ) { + + materialParams.transparent = true; + materialParams.opacity = ( materialValues.transparency !== undefined ) ? materialValues.transparency : 1; + + } + + } else if ( material.technique === undefined ) { + + materialType = THREE.MeshPhongMaterial; + + Object.assign( materialValues, material.values ); + + } else { + + materialType = DeferredShaderMaterial; + + var technique = json.techniques[ material.technique ]; + + materialParams.uniforms = {}; + + var program = json.programs[ technique.program ]; + + if ( program ) { + + materialParams.fragmentShader = dependencies.shaders[ program.fragmentShader ]; + + if ( ! materialParams.fragmentShader ) { + + console.warn( "ERROR: Missing fragment shader definition:", program.fragmentShader ); + materialType = THREE.MeshPhongMaterial; + + } + + var vertexShader = dependencies.shaders[ program.vertexShader ]; + + if ( ! vertexShader ) { + + console.warn( "ERROR: Missing vertex shader definition:", program.vertexShader ); + materialType = THREE.MeshPhongMaterial; + + } + + // IMPORTANT: FIX VERTEX SHADER ATTRIBUTE DEFINITIONS + materialParams.vertexShader = replaceTHREEShaderAttributes( vertexShader, technique ); + + var uniforms = technique.uniforms; + + for ( var uniformId in uniforms ) { + + var pname = uniforms[ uniformId ]; + var shaderParam = technique.parameters[ pname ]; + + var ptype = shaderParam.type; + + if ( WEBGL_TYPE[ ptype ] ) { + + var pcount = shaderParam.count; + var value; + + if ( material.values !== undefined ) value = material.values[ pname ]; + + var uvalue = new WEBGL_TYPE[ ptype ](); + var usemantic = shaderParam.semantic; + var unode = shaderParam.node; + + switch ( ptype ) { + + case WEBGL_CONSTANTS.FLOAT: + + uvalue = shaderParam.value; + + if ( pname == "transparency" ) { + + materialParams.transparent = true; + + } + + if ( value !== undefined ) { + + uvalue = value; + + } + + break; + + case WEBGL_CONSTANTS.FLOAT_VEC2: + case WEBGL_CONSTANTS.FLOAT_VEC3: + case WEBGL_CONSTANTS.FLOAT_VEC4: + case WEBGL_CONSTANTS.FLOAT_MAT3: + + if ( shaderParam && shaderParam.value ) { + + uvalue.fromArray( shaderParam.value ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + break; + + case WEBGL_CONSTANTS.FLOAT_MAT2: + + // what to do? + console.warn( "FLOAT_MAT2 is not a supported uniform type" ); + break; + + case WEBGL_CONSTANTS.FLOAT_MAT4: + + if ( pcount ) { + + uvalue = new Array( pcount ); + + for ( var mi = 0; mi < pcount; mi ++ ) { + + uvalue[ mi ] = new WEBGL_TYPE[ ptype ](); + + } + + if ( shaderParam && shaderParam.value ) { + + var m4v = shaderParam.value; + uvalue.fromArray( m4v ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + } else { + + if ( shaderParam && shaderParam.value ) { + + var m4 = shaderParam.value; + uvalue.fromArray( m4 ); + + } + + if ( value ) { + + uvalue.fromArray( value ); + + } + + } + + break; + + case WEBGL_CONSTANTS.SAMPLER_2D: + + if ( value !== undefined ) { + + uvalue = dependencies.textures[ value ]; + + } else if ( shaderParam.value !== undefined ) { + + uvalue = dependencies.textures[ shaderParam.value ]; + + } else { + + uvalue = null; + + } + + break; + + } + + materialParams.uniforms[ uniformId ] = { + value: uvalue, + semantic: usemantic, + node: unode + }; + + } else { + + throw new Error( "Unknown shader uniform param type: " + ptype ); + + } + + } + + var states = technique.states || {}; + var enables = states.enable || []; + var functions = states.functions || {}; + + var enableCullFace = false; + var enableDepthTest = false; + var enableBlend = false; + + for ( var i = 0, il = enables.length; i < il; i ++ ) { + + var enable = enables[ i ]; + + switch ( STATES_ENABLES[ enable ] ) { + + case 'CULL_FACE': + + enableCullFace = true; + + break; + + case 'DEPTH_TEST': + + enableDepthTest = true; + + break; + + case 'BLEND': + + enableBlend = true; + + break; + + // TODO: implement + case 'SCISSOR_TEST': + case 'POLYGON_OFFSET_FILL': + case 'SAMPLE_ALPHA_TO_COVERAGE': + + break; + + default: + + throw new Error( "Unknown technique.states.enable: " + enable ); + + } + + } + + if ( enableCullFace ) { + + materialParams.side = functions.cullFace !== undefined ? WEBGL_SIDES[ functions.cullFace ] : THREE.FrontSide; + + } else { + + materialParams.side = THREE.DoubleSide; + + } + + materialParams.depthTest = enableDepthTest; + materialParams.depthFunc = functions.depthFunc !== undefined ? WEBGL_DEPTH_FUNCS[ functions.depthFunc ] : THREE.LessDepth; + materialParams.depthWrite = functions.depthMask !== undefined ? functions.depthMask[ 0 ] : true; + + materialParams.blending = enableBlend ? THREE.CustomBlending : THREE.NoBlending; + materialParams.transparent = enableBlend; + + var blendEquationSeparate = functions.blendEquationSeparate; + + if ( blendEquationSeparate !== undefined ) { + + materialParams.blendEquation = WEBGL_BLEND_EQUATIONS[ blendEquationSeparate[ 0 ] ]; + materialParams.blendEquationAlpha = WEBGL_BLEND_EQUATIONS[ blendEquationSeparate[ 1 ] ]; + + } else { + + materialParams.blendEquation = THREE.AddEquation; + materialParams.blendEquationAlpha = THREE.AddEquation; + + } + + var blendFuncSeparate = functions.blendFuncSeparate; + + if ( blendFuncSeparate !== undefined ) { + + materialParams.blendSrc = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 0 ] ]; + materialParams.blendDst = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 1 ] ]; + materialParams.blendSrcAlpha = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 2 ] ]; + materialParams.blendDstAlpha = WEBGL_BLEND_FUNCS[ blendFuncSeparate[ 3 ] ]; + + } else { + + materialParams.blendSrc = THREE.OneFactor; + materialParams.blendDst = THREE.ZeroFactor; + materialParams.blendSrcAlpha = THREE.OneFactor; + materialParams.blendDstAlpha = THREE.ZeroFactor; + + } + + } + + } + + if ( Array.isArray( materialValues.diffuse ) ) { + + materialParams.color = new THREE.Color().fromArray( materialValues.diffuse ); + + } else if ( typeof( materialValues.diffuse ) === 'string' ) { + + materialParams.map = dependencies.textures[ materialValues.diffuse ]; + + } + + delete materialParams.diffuse; + + if ( typeof( materialValues.reflective ) === 'string' ) { + + materialParams.envMap = dependencies.textures[ materialValues.reflective ]; + + } + + if ( typeof( materialValues.bump ) === 'string' ) { + + materialParams.bumpMap = dependencies.textures[ materialValues.bump ]; + + } + + if ( Array.isArray( materialValues.emission ) ) { + + if ( materialType === THREE.MeshBasicMaterial ) { + + materialParams.color = new THREE.Color().fromArray( materialValues.emission ); + + } else { + + materialParams.emissive = new THREE.Color().fromArray( materialValues.emission ); + + } + + } else if ( typeof( materialValues.emission ) === 'string' ) { + + if ( materialType === THREE.MeshBasicMaterial ) { + + materialParams.map = dependencies.textures[ materialValues.emission ]; + + } else { + + materialParams.emissiveMap = dependencies.textures[ materialValues.emission ]; + + } + + } + + if ( Array.isArray( materialValues.specular ) ) { + + materialParams.specular = new THREE.Color().fromArray( materialValues.specular ); + + } else if ( typeof( materialValues.specular ) === 'string' ) { + + materialParams.specularMap = dependencies.textures[ materialValues.specular ]; + + } + + if ( materialValues.shininess !== undefined ) { + + materialParams.shininess = materialValues.shininess; + + } + + var _material = new materialType( materialParams ); + if ( material.name !== undefined ) _material.name = material.name; + + return _material; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadMeshes = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors", + "materials" + + ] ).then( function ( dependencies ) { + + return _each( json.meshes, function ( mesh ) { + + var group = new THREE.Group(); + if ( mesh.name !== undefined ) group.name = mesh.name; + + if ( mesh.extras ) group.userData = mesh.extras; + + var primitives = mesh.primitives || []; + + for ( var name in primitives ) { + + var primitive = primitives[ name ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === undefined ) { + + var geometry = new THREE.BufferGeometry(); + + var attributes = primitive.attributes; + + for ( var attributeId in attributes ) { + + var attributeEntry = attributes[ attributeId ]; + + if ( ! attributeEntry ) return; + + var bufferAttribute = dependencies.accessors[ attributeEntry ]; + + switch ( attributeId ) { + + case 'POSITION': + geometry.addAttribute( 'position', bufferAttribute ); + break; + + case 'NORMAL': + geometry.addAttribute( 'normal', bufferAttribute ); + break; + + case 'TEXCOORD_0': + case 'TEXCOORD0': + case 'TEXCOORD': + geometry.addAttribute( 'uv', bufferAttribute ); + break; + + case 'TEXCOORD_1': + geometry.addAttribute( 'uv2', bufferAttribute ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + geometry.addAttribute( 'color', bufferAttribute ); + break; + + case 'WEIGHT': + geometry.addAttribute( 'skinWeight', bufferAttribute ); + break; + + case 'JOINT': + geometry.addAttribute( 'skinIndex', bufferAttribute ); + break; + + } + + } + + if ( primitive.indices ) { + + geometry.setIndex( dependencies.accessors[ primitive.indices ] ); + + } + + var material = dependencies.materials !== undefined ? dependencies.materials[ primitive.material ] : createDefaultMaterial(); + + var meshNode = new THREE.Mesh( geometry, material ); + meshNode.castShadow = true; + meshNode.name = ( name === "0" ? group.name : group.name + name ); + + if ( primitive.extras ) meshNode.userData = primitive.extras; + + group.add( meshNode ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + var geometry = new THREE.BufferGeometry(); + + var attributes = primitive.attributes; + + for ( var attributeId in attributes ) { + + var attributeEntry = attributes[ attributeId ]; + + if ( ! attributeEntry ) return; + + var bufferAttribute = dependencies.accessors[ attributeEntry ]; + + switch ( attributeId ) { + + case 'POSITION': + geometry.addAttribute( 'position', bufferAttribute ); + break; + + case 'COLOR_0': + case 'COLOR0': + case 'COLOR': + geometry.addAttribute( 'color', bufferAttribute ); + break; + + } + + } + + var material = dependencies.materials[ primitive.material ]; + + var meshNode; + + if ( primitive.indices ) { + + geometry.setIndex( dependencies.accessors[ primitive.indices ] ); + + meshNode = new THREE.LineSegments( geometry, material ); + + } else { + + meshNode = new THREE.Line( geometry, material ); + + } + + meshNode.name = ( name === "0" ? group.name : group.name + name ); + + if ( primitive.extras ) meshNode.userData = primitive.extras; + + group.add( meshNode ); + + } else { + + console.warn( "Only triangular and line primitives are supported" ); + + } + + } + + return group; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadCameras = function () { + + var json = this.json; + + return _each( json.cameras, function ( camera ) { + + if ( camera.type == "perspective" && camera.perspective ) { + + var yfov = camera.perspective.yfov; + var aspectRatio = camera.perspective.aspectRatio !== undefined ? camera.perspective.aspectRatio : 1; + + // According to COLLADA spec... + // aspectRatio = xfov / yfov + var xfov = yfov * aspectRatio; + + var _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspectRatio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6 ); + if ( camera.name !== undefined ) _camera.name = camera.name; + + if ( camera.extras ) _camera.userData = camera.extras; + + return _camera; + + } else if ( camera.type == "orthographic" && camera.orthographic ) { + + var _camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, camera.orthographic.znear, camera.orthographic.zfar ); + if ( camera.name !== undefined ) _camera.name = camera.name; + + if ( camera.extras ) _camera.userData = camera.extras; + + return _camera; + + } + + } ); + + }; + + GLTFParser.prototype.loadSkins = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors" + + ] ).then( function ( dependencies ) { + + return _each( json.skins, function ( skin ) { + + var bindShapeMatrix = new THREE.Matrix4(); + + if ( skin.bindShapeMatrix !== undefined ) bindShapeMatrix.fromArray( skin.bindShapeMatrix ); + + var _skin = { + bindShapeMatrix: bindShapeMatrix, + jointNames: skin.jointNames, + inverseBindMatrices: dependencies.accessors[ skin.inverseBindMatrices ] + }; + + return _skin; + + } ); + + } ); + + }; + + GLTFParser.prototype.loadAnimations = function () { + + var json = this.json; + + return this._withDependencies( [ + + "accessors", + "nodes" + + ] ).then( function ( dependencies ) { + + return _each( json.animations, function ( animation, animationId ) { + + var tracks = []; + + for ( var channelId in animation.channels ) { + + var channel = animation.channels[ channelId ]; + var sampler = animation.samplers[ channel.sampler ]; + + if ( sampler ) { + + var target = channel.target; + var name = target.id; + var input = animation.parameters !== undefined ? animation.parameters[ sampler.input ] : sampler.input; + var output = animation.parameters !== undefined ? animation.parameters[ sampler.output ] : sampler.output; + + var inputAccessor = dependencies.accessors[ input ]; + var outputAccessor = dependencies.accessors[ output ]; + + var node = dependencies.nodes[ name ]; + + if ( node ) { + + node.updateMatrix(); + node.matrixAutoUpdate = true; + + var TypedKeyframeTrack = PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.rotation + ? THREE.QuaternionKeyframeTrack + : THREE.VectorKeyframeTrack; + + var targetName = node.name ? node.name : node.uuid; + var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; + + // KeyframeTrack.optimize() will modify given 'times' and 'values' + // buffers before creating a truncated copy to keep. Because buffers may + // be reused by other tracks, make copies here. + tracks.push( new TypedKeyframeTrack( + targetName + '.' + PATH_PROPERTIES[ target.path ], + THREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ), + THREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ), + interpolation + ) ); + + } + + } + + } + + var name = animation.name !== undefined ? animation.name : "animation_" + animationId; + + return new THREE.AnimationClip( name, undefined, tracks ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadNodes = function () { + + var json = this.json; + var extensions = this.extensions; + var scope = this; + + return _each( json.nodes, function ( node ) { + + var matrix = new THREE.Matrix4(); + + var _node; + + if ( node.jointName ) { + + _node = new THREE.Bone(); + _node.name = node.name !== undefined ? node.name : node.jointName; + _node.jointName = node.jointName; + + } else { + + _node = new THREE.Object3D(); + if ( node.name !== undefined ) _node.name = node.name; + + } + + if ( node.extras ) _node.userData = node.extras; + + if ( node.matrix !== undefined ) { + + matrix.fromArray( node.matrix ); + _node.applyMatrix( matrix ); + + } else { + + if ( node.translation !== undefined ) { + + _node.position.fromArray( node.translation ); + + } + + if ( node.rotation !== undefined ) { + + _node.quaternion.fromArray( node.rotation ); + + } + + if ( node.scale !== undefined ) { + + _node.scale.fromArray( node.scale ); + + } + + } + + return _node; + + } ).then( function ( __nodes ) { + + return scope._withDependencies( [ + + "meshes", + "skins", + "cameras" + + ] ).then( function ( dependencies ) { + + return _each( __nodes, function ( _node, nodeId ) { + + var node = json.nodes[ nodeId ]; + + if ( node.meshes !== undefined ) { + + for ( var meshId in node.meshes ) { + + var mesh = node.meshes[ meshId ]; + var group = dependencies.meshes[ mesh ]; + + if ( group === undefined ) { + + console.warn( 'GLTFLoader: Couldn\'t find node "' + mesh + '".' ); + continue; + + } + + for ( var childrenId in group.children ) { + + var child = group.children[ childrenId ]; + + // clone Mesh to add to _node + + var originalMaterial = child.material; + var originalGeometry = child.geometry; + var originalUserData = child.userData; + var originalName = child.name; + + var material; + + if ( originalMaterial.isDeferredShaderMaterial ) { + + originalMaterial = material = originalMaterial.create(); + + } else { + + material = originalMaterial; + + } + + switch ( child.type ) { + + case 'LineSegments': + child = new THREE.LineSegments( originalGeometry, material ); + break; + + case 'LineLoop': + child = new THREE.LineLoop( originalGeometry, material ); + break; + + case 'Line': + child = new THREE.Line( originalGeometry, material ); + break; + + default: + child = new THREE.Mesh( originalGeometry, material ); + + } + + child.castShadow = true; + child.userData = originalUserData; + child.name = originalName; + + var skinEntry; + + if ( node.skin ) { + + skinEntry = dependencies.skins[ node.skin ]; + + } + + // Replace Mesh with SkinnedMesh in library + if ( skinEntry ) { + + var getJointNode = function ( jointId ) { + + var keys = Object.keys( __nodes ); + + for ( var i = 0, il = keys.length; i < il; i ++ ) { + + var n = __nodes[ keys[ i ] ]; + + if ( n.jointName === jointId ) return n; + + } + + return null; + + }; + + var geometry = originalGeometry; + var material = originalMaterial; + material.skinning = true; + + child = new THREE.SkinnedMesh( geometry, material, false ); + child.castShadow = true; + child.userData = originalUserData; + child.name = originalName; + + var bones = []; + var boneInverses = []; + + for ( var i = 0, l = skinEntry.jointNames.length; i < l; i ++ ) { + + var jointId = skinEntry.jointNames[ i ]; + var jointNode = getJointNode( jointId ); + + if ( jointNode ) { + + bones.push( jointNode ); + + var m = skinEntry.inverseBindMatrices.array; + var mat = new THREE.Matrix4().fromArray( m, i * 16 ); + boneInverses.push( mat ); + + } else { + + console.warn( "WARNING: joint: '" + jointId + "' could not be found" ); + + } + + } + + child.bind( new THREE.Skeleton( bones, boneInverses, false ), skinEntry.bindShapeMatrix ); + + var buildBoneGraph = function ( parentJson, parentObject, property ) { + + var children = parentJson[ property ]; + + if ( children === undefined ) return; + + for ( var i = 0, il = children.length; i < il; i ++ ) { + + var nodeId = children[ i ]; + var bone = __nodes[ nodeId ]; + var boneJson = json.nodes[ nodeId ]; + + if ( bone !== undefined && bone.isBone === true && boneJson !== undefined ) { + + parentObject.add( bone ); + buildBoneGraph( boneJson, bone, 'children' ); + + } + + } + + }; + + buildBoneGraph( node, child, 'skeletons' ); + + } + + _node.add( child ); + + } + + } + + } + + if ( node.camera !== undefined ) { + + var camera = dependencies.cameras[ node.camera ]; + + _node.add( camera ); + + } + + if ( node.extensions + && node.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] + && node.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].light ) { + + var extensionLights = extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].lights; + var light = extensionLights[ node.extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ].light ]; + + _node.add( light ); + + } + + return _node; + + } ); + + } ); + + } ); + + }; + + GLTFParser.prototype.loadScenes = function () { + + var json = this.json; + + // scene node hierachy builder + + function buildNodeHierachy( nodeId, parentObject, allNodes ) { + + var _node = allNodes[ nodeId ]; + parentObject.add( _node ); + + var node = json.nodes[ nodeId ]; + + if ( node.children ) { + + var children = node.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + var child = children[ i ]; + buildNodeHierachy( child, _node, allNodes ); + + } + + } + + } + + return this._withDependencies( [ + + "nodes" + + ] ).then( function ( dependencies ) { + + return _each( json.scenes, function ( scene ) { + + var _scene = new THREE.Scene(); + if ( scene.name !== undefined ) _scene.name = scene.name; + + if ( scene.extras ) _scene.userData = scene.extras; + + var nodes = scene.nodes || []; + + for ( var i = 0, l = nodes.length; i < l; i ++ ) { + + var nodeId = nodes[ i ]; + buildNodeHierachy( nodeId, _scene, dependencies.nodes ); + + } + + _scene.traverse( function ( child ) { + + // Register raw material meshes with GLTFLoader.Shaders + if ( child.material && child.material.isRawShaderMaterial ) { + + child.gltfShader = new GLTFShader( child, dependencies.nodes ); + child.onBeforeRender = function(renderer, scene, camera){ + this.gltfShader.update(scene, camera); + }; + + } + + } ); + + return _scene; + + } ); + + } ); + + }; + + return GLTFLoader; + +} )(); diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/MTLLoader.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/MTLLoader.js new file mode 100644 index 0000000..057a831 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/MTLLoader.js @@ -0,0 +1,543 @@ +/** + * Loads a Wavefront .mtl file specifying materials + * + * @author angelxuanchang + */ + +THREE.MTLLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + +}; + +THREE.MTLLoader.prototype = { + + constructor: THREE.MTLLoader, + + /** + * Loads and parses a MTL asset from a URL. + * + * @param {String} url - URL to the MTL file. + * @param {Function} [onLoad] - Callback invoked with the loaded object. + * @param {Function} [onProgress] - Callback for download progress. + * @param {Function} [onError] - Callback for download errors. + * + * @see setPath setTexturePath + * + * @note In order for relative texture references to resolve correctly + * you must call setPath and/or setTexturePath explicitly prior to load. + */ + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + /** + * Set base path for resolving references. + * If set this path will be prepended to each loaded and found reference. + * + * @see setTexturePath + * @param {String} path + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setPath: function ( path ) { + + this.path = path; + + }, + + /** + * Set base path for resolving texture references. + * If set this path will be prepended found texture reference. + * If not set and setPath is, it will be used as texture base path. + * + * @see setPath + * @param {String} path + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.setTexturePath( 'assets/textures/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setTexturePath: function ( path ) { + + this.texturePath = path; + + }, + + setBaseUrl: function ( path ) { + + console.warn( 'THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.' ); + + this.setTexturePath( path ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + + }, + + setMaterialOptions: function ( value ) { + + this.materialOptions = value; + + }, + + /** + * Parses a MTL file. + * + * @param {String} text - Content of MTL file + * @return {THREE.MTLLoader.MaterialCreator} + * + * @see setPath setTexturePath + * + * @note In order for relative texture references to resolve correctly + * you must call setPath and/or setTexturePath explicitly prior to parse. + */ + parse: function ( text ) { + + var lines = text.split( '\n' ); + var info = {}; + var delimiter_pattern = /\s+/; + var materialsInfo = {}; + + for ( var i = 0; i < lines.length; i ++ ) { + + var line = lines[ i ]; + line = line.trim(); + + if ( line.length === 0 || line.charAt( 0 ) === '#' ) { + + // Blank line or comment ignore + continue; + + } + + var pos = line.indexOf( ' ' ); + + var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line; + key = key.toLowerCase(); + + var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : ''; + value = value.trim(); + + if ( key === 'newmtl' ) { + + // New material + + info = { name: value }; + materialsInfo[ value ] = info; + + } else if ( info ) { + + if ( key === 'ka' || key === 'kd' || key === 'ks' ) { + + var ss = value.split( delimiter_pattern, 3 ); + info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ]; + + } else { + + info[ key ] = value; + + } + + } + + } + + var materialCreator = new THREE.MTLLoader.MaterialCreator( this.texturePath || this.path, this.materialOptions ); + materialCreator.setCrossOrigin( this.crossOrigin ); + materialCreator.setManager( this.manager ); + materialCreator.setMaterials( materialsInfo ); + return materialCreator; + + } + +}; + +/** + * Create a new THREE-MTLLoader.MaterialCreator + * @param baseUrl - Url relative to which textures are loaded + * @param options - Set of options on how to construct the materials + * side: Which side to apply the material + * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide + * wrap: What type of wrapping to apply for textures + * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping + * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 + * Default: false, assumed to be already normalized + * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's + * Default: false + * @constructor + */ + +THREE.MTLLoader.MaterialCreator = function ( baseUrl, options ) { + + this.baseUrl = baseUrl || ''; + this.options = options; + this.materialsInfo = {}; + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide; + this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping; + +}; + +THREE.MTLLoader.MaterialCreator.prototype = { + + constructor: THREE.MTLLoader.MaterialCreator, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + + }, + + setManager: function ( value ) { + + this.manager = value; + + }, + + setMaterials: function ( materialsInfo ) { + + this.materialsInfo = this.convert( materialsInfo ); + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + }, + + convert: function ( materialsInfo ) { + + if ( ! this.options ) return materialsInfo; + + var converted = {}; + + for ( var mn in materialsInfo ) { + + // Convert materials info into normalized form based on options + + var mat = materialsInfo[ mn ]; + + var covmat = {}; + + converted[ mn ] = covmat; + + for ( var prop in mat ) { + + var save = true; + var value = mat[ prop ]; + var lprop = prop.toLowerCase(); + + switch ( lprop ) { + + case 'kd': + case 'ka': + case 'ks': + + // Diffuse color (color under white light) using RGB values + + if ( this.options && this.options.normalizeRGB ) { + + value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ]; + + } + + if ( this.options && this.options.ignoreZeroRGBs ) { + + if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) { + + // ignore + + save = false; + + } + + } + + break; + + default: + + break; + + } + + if ( save ) { + + covmat[ lprop ] = value; + + } + + } + + } + + return converted; + + }, + + preload: function () { + + for ( var mn in this.materialsInfo ) { + + this.create( mn ); + + } + + }, + + getIndex: function ( materialName ) { + + return this.nameLookup[ materialName ]; + + }, + + getAsArray: function () { + + var index = 0; + + for ( var mn in this.materialsInfo ) { + + this.materialsArray[ index ] = this.create( mn ); + this.nameLookup[ mn ] = index; + index ++; + + } + + return this.materialsArray; + + }, + + create: function ( materialName ) { + + if ( this.materials[ materialName ] === undefined ) { + + this.createMaterial_( materialName ); + + } + + return this.materials[ materialName ]; + + }, + + createMaterial_: function ( materialName ) { + + // Create material + + var scope = this; + var mat = this.materialsInfo[ materialName ]; + var params = { + + name: materialName, + side: this.side + + }; + + function resolveURL( baseUrl, url ) { + + if ( typeof url !== 'string' || url === '' ) + return ''; + + // Absolute URL + if ( /^https?:\/\//i.test( url ) ) return url; + + return baseUrl + url; + + } + + function setMapForType( mapType, value ) { + + if ( params[ mapType ] ) return; // Keep the first encountered texture + + var texParams = scope.getTextureParams( value, params ); + var map = scope.loadTexture( resolveURL( scope.baseUrl, texParams.url ) ); + + map.repeat.copy( texParams.scale ); + map.offset.copy( texParams.offset ); + + map.wrapS = scope.wrap; + map.wrapT = scope.wrap; + + params[ mapType ] = map; + + } + + for ( var prop in mat ) { + + var value = mat[ prop ]; + var n; + + if ( value === '' ) continue; + + switch ( prop.toLowerCase() ) { + + // Ns is material specular exponent + + case 'kd': + + // Diffuse color (color under white light) using RGB values + + params.color = new THREE.Color().fromArray( value ); + + break; + + case 'ks': + + // Specular color (color when light is reflected from shiny surface) using RGB values + params.specular = new THREE.Color().fromArray( value ); + + break; + + case 'map_kd': + + // Diffuse texture map + + setMapForType( "map", value ); + + break; + + case 'map_ks': + + // Specular map + + setMapForType( "specularMap", value ); + + break; + + case 'map_bump': + case 'bump': + + // Bump texture map + + setMapForType( "bumpMap", value ); + + break; + + case 'ns': + + // The specular exponent (defines the focus of the specular highlight) + // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. + + params.shininess = parseFloat( value ); + + break; + + case 'd': + n = parseFloat(value); + + if ( n < 1 ) { + + params.opacity = n; + params.transparent = true; + + } + + break; + + case 'tr': + n = parseFloat(value); + + if ( n > 0 ) { + + params.opacity = 1 - n; + params.transparent = true; + + } + + break; + + default: + break; + + } + + } + + this.materials[ materialName ] = new THREE.MeshPhongMaterial( params ); + return this.materials[ materialName ]; + + }, + + getTextureParams: function ( value, matParams ) { + + var texParams = { + + scale: new THREE.Vector2( 1, 1 ), + offset: new THREE.Vector2( 0, 0 ) + + }; + + var items = value.split( /\s+/ ); + var pos; + + pos = items.indexOf( '-bm' ); + + if ( pos >= 0 ) { + + matParams.bumpScale = parseFloat( items[ pos + 1 ] ); + items.splice( pos, 2 ); + + } + + pos = items.indexOf( '-s' ); + + if ( pos >= 0 ) { + + texParams.scale.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); + items.splice( pos, 4 ); // we expect 3 parameters here! + + } + + pos = items.indexOf( '-o' ); + + if ( pos >= 0 ) { + + texParams.offset.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); + items.splice( pos, 4 ); // we expect 3 parameters here! + + } + + texParams.url = items.join( ' ' ).trim(); + return texParams; + + }, + + loadTexture: function ( url, mapping, onLoad, onProgress, onError ) { + + var texture; + var loader = THREE.Loader.Handlers.get( url ); + var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager; + + if ( loader === null ) { + + loader = new THREE.TextureLoader( manager ); + + } + + if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin ); + texture = loader.load( url, onLoad, onProgress, onError ); + + if ( mapping !== undefined ) texture.mapping = mapping; + + return texture; + + } + +}; diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/OBJLoader.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/OBJLoader.js new file mode 100644 index 0000000..f99da8a --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/loaders/OBJLoader.js @@ -0,0 +1,753 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.OBJLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + this.materials = null; + + this.regexp = { + // v float float float + vertex_pattern : /^v\s+([\d\.\+\-eE]+)\s+([\d\.\+\-eE]+)\s+([\d\.\+\-eE]+)/, + // vn float float float + normal_pattern : /^vn\s+([\d\.\+\-eE]+)\s+([\d\.\+\-eE]+)\s+([\d\.\+\-eE]+)/, + // vt float float + uv_pattern : /^vt\s+([\d\.\+\-eE]+)\s+([\d\.\+\-eE]+)/, + // f vertex vertex vertex + face_vertex : /^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/, + // f vertex/uv vertex/uv vertex/uv + face_vertex_uv : /^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/, + // f vertex/uv/normal vertex/uv/normal vertex/uv/normal + face_vertex_uv_normal : /^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/, + // f vertex//normal vertex//normal vertex//normal + face_vertex_normal : /^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/, + // o object_name | g group_name + object_pattern : /^[og]\s*(.+)?/, + // s boolean + smoothing_pattern : /^s\s+(\d+|on|off)/, + // mtllib file_reference + material_library_pattern : /^mtllib /, + // usemtl material_name + material_use_pattern : /^usemtl / + }; + +}; + +THREE.OBJLoader.prototype = { + + constructor: THREE.OBJLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + + }, + + setMaterials: function ( materials ) { + + this.materials = materials; + + }, + + _createParserState : function () { + + var state = { + objects : [], + object : {}, + + vertices : [], + normals : [], + uvs : [], + + materialLibraries : [], + + startObject: function ( name, fromDeclaration ) { + + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if ( this.object && this.object.fromDeclaration === false ) { + + this.object.name = name; + this.object.fromDeclaration = ( fromDeclaration !== false ); + return; + + } + + var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + this.object = { + name : name || '', + fromDeclaration : ( fromDeclaration !== false ), + + geometry : { + vertices : [], + normals : [], + uvs : [] + }, + materials : [], + smooth : true, + + startMaterial : function( name, libraries ) { + + var previous = this._finalize( false ); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { + + this.materials.splice( previous.index, 1 ); + + } + + var material = { + index : this.materials.length, + name : name || '', + mtllib : ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), + smooth : ( previous !== undefined ? previous.smooth : this.smooth ), + groupStart : ( previous !== undefined ? previous.groupEnd : 0 ), + groupEnd : -1, + groupCount : -1, + inherited : false, + + clone : function( index ) { + var cloned = { + index : ( typeof index === 'number' ? index : this.index ), + name : this.name, + mtllib : this.mtllib, + smooth : this.smooth, + groupStart : 0, + groupEnd : -1, + groupCount : -1, + inherited : false + }; + cloned.clone = this.clone.bind(cloned); + return cloned; + } + }; + + this.materials.push( material ); + + return material; + + }, + + currentMaterial : function() { + + if ( this.materials.length > 0 ) { + return this.materials[ this.materials.length - 1 ]; + } + + return undefined; + + }, + + _finalize : function( end ) { + + var lastMultiMaterial = this.currentMaterial(); + if ( lastMultiMaterial && lastMultiMaterial.groupEnd === -1 ) { + + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if ( end && this.materials.length > 1 ) { + + for ( var mi = this.materials.length - 1; mi >= 0; mi-- ) { + if ( this.materials[mi].groupCount <= 0 ) { + this.materials.splice( mi, 1 ); + } + } + + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if ( end && this.materials.length === 0 ) { + + this.materials.push({ + name : '', + smooth : this.smooth + }); + + } + + return lastMultiMaterial; + + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === "function" ) { + + var declared = previousMaterial.clone( 0 ); + declared.inherited = true; + this.object.materials.push( declared ); + + } + + this.objects.push( this.object ); + + }, + + finalize : function() { + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + }, + + parseVertexIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseNormalIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseUVIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; + + }, + + addVertex: function ( a, b, c ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ] ); + dst.push( src[ a + 1 ] ); + dst.push( src[ a + 2 ] ); + dst.push( src[ b + 0 ] ); + dst.push( src[ b + 1 ] ); + dst.push( src[ b + 2 ] ); + dst.push( src[ c + 0 ] ); + dst.push( src[ c + 1 ] ); + dst.push( src[ c + 2 ] ); + + }, + + addVertexLine: function ( a ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ] ); + dst.push( src[ a + 1 ] ); + dst.push( src[ a + 2 ] ); + + }, + + addNormal : function ( a, b, c ) { + + var src = this.normals; + var dst = this.object.geometry.normals; + + dst.push( src[ a + 0 ] ); + dst.push( src[ a + 1 ] ); + dst.push( src[ a + 2 ] ); + dst.push( src[ b + 0 ] ); + dst.push( src[ b + 1 ] ); + dst.push( src[ b + 2 ] ); + dst.push( src[ c + 0 ] ); + dst.push( src[ c + 1 ] ); + dst.push( src[ c + 2 ] ); + + }, + + addUV: function ( a, b, c ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ] ); + dst.push( src[ a + 1 ] ); + dst.push( src[ b + 0 ] ); + dst.push( src[ b + 1 ] ); + dst.push( src[ c + 0 ] ); + dst.push( src[ c + 1 ] ); + + }, + + addUVLine: function ( a ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ] ); + dst.push( src[ a + 1 ] ); + + }, + + addFace: function ( a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd ) { + + var vLen = this.vertices.length; + + var ia = this.parseVertexIndex( a, vLen ); + var ib = this.parseVertexIndex( b, vLen ); + var ic = this.parseVertexIndex( c, vLen ); + var id; + + if ( d === undefined ) { + + this.addVertex( ia, ib, ic ); + + } else { + + id = this.parseVertexIndex( d, vLen ); + + this.addVertex( ia, ib, id ); + this.addVertex( ib, ic, id ); + + } + + if ( ua !== undefined ) { + + var uvLen = this.uvs.length; + + ia = this.parseUVIndex( ua, uvLen ); + ib = this.parseUVIndex( ub, uvLen ); + ic = this.parseUVIndex( uc, uvLen ); + + if ( d === undefined ) { + + this.addUV( ia, ib, ic ); + + } else { + + id = this.parseUVIndex( ud, uvLen ); + + this.addUV( ia, ib, id ); + this.addUV( ib, ic, id ); + + } + + } + + if ( na !== undefined ) { + + // Normals are many times the same. If so, skip function call and parseInt. + var nLen = this.normals.length; + ia = this.parseNormalIndex( na, nLen ); + + ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); + ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); + + if ( d === undefined ) { + + this.addNormal( ia, ib, ic ); + + } else { + + id = this.parseNormalIndex( nd, nLen ); + + this.addNormal( ia, ib, id ); + this.addNormal( ib, ic, id ); + + } + + } + + }, + + addLineGeometry: function ( vertices, uvs ) { + + this.object.geometry.type = 'Line'; + + var vLen = this.vertices.length; + var uvLen = this.uvs.length; + + for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { + + this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); + + } + + for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { + + this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); + + } + + } + + }; + + state.startObject( '', false ); + + return state; + + }, + + parse: function ( text ) { + + console.time( 'OBJLoader' ); + + var state = this._createParserState(); + + if ( text.indexOf( '\r\n' ) !== - 1 ) { + + // This is faster than String.split with regex that splits on both + text = text.replace( /\r\n/g, '\n' ); + + } + + if ( text.indexOf( '\\\n' ) !== - 1) { + + // join lines separated by a line continuation character (\) + text = text.replace( /\\\n/g, '' ); + + } + + var lines = text.split( '\n' ); + var line = '', lineFirstChar = '', lineSecondChar = ''; + var lineLength = 0; + var result = []; + + // Faster to just trim left side of the line. Use if available. + var trimLeft = ( typeof ''.trimLeft === 'function' ); + + for ( var i = 0, l = lines.length; i < l; i ++ ) { + + line = lines[ i ]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if ( lineLength === 0 ) continue; + + lineFirstChar = line.charAt( 0 ); + + // @todo invoke passed in handler if any + if ( lineFirstChar === '#' ) continue; + + if ( lineFirstChar === 'v' ) { + + lineSecondChar = line.charAt( 1 ); + + if ( lineSecondChar === ' ' && ( result = this.regexp.vertex_pattern.exec( line ) ) !== null ) { + + // 0 1 2 3 + // ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"] + + state.vertices.push( + parseFloat( result[ 1 ] ), + parseFloat( result[ 2 ] ), + parseFloat( result[ 3 ] ) + ); + + } else if ( lineSecondChar === 'n' && ( result = this.regexp.normal_pattern.exec( line ) ) !== null ) { + + // 0 1 2 3 + // ["vn 1.0 2.0 3.0", "1.0", "2.0", "3.0"] + + state.normals.push( + parseFloat( result[ 1 ] ), + parseFloat( result[ 2 ] ), + parseFloat( result[ 3 ] ) + ); + + } else if ( lineSecondChar === 't' && ( result = this.regexp.uv_pattern.exec( line ) ) !== null ) { + + // 0 1 2 + // ["vt 0.1 0.2", "0.1", "0.2"] + + state.uvs.push( + parseFloat( result[ 1 ] ), + parseFloat( result[ 2 ] ) + ); + + } else { + + throw new Error( "Unexpected vertex/normal/uv line: '" + line + "'" ); + + } + + } else if ( lineFirstChar === "f" ) { + + if ( ( result = this.regexp.face_vertex_uv_normal.exec( line ) ) !== null ) { + + // f vertex/uv/normal vertex/uv/normal vertex/uv/normal + // 0 1 2 3 4 5 6 7 8 9 10 11 12 + // ["f 1/1/1 2/2/2 3/3/3", "1", "1", "1", "2", "2", "2", "3", "3", "3", undefined, undefined, undefined] + + state.addFace( + result[ 1 ], result[ 4 ], result[ 7 ], result[ 10 ], + result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ], + result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] + ); + + } else if ( ( result = this.regexp.face_vertex_uv.exec( line ) ) !== null ) { + + // f vertex/uv vertex/uv vertex/uv + // 0 1 2 3 4 5 6 7 8 + // ["f 1/1 2/2 3/3", "1", "1", "2", "2", "3", "3", undefined, undefined] + + state.addFace( + result[ 1 ], result[ 3 ], result[ 5 ], result[ 7 ], + result[ 2 ], result[ 4 ], result[ 6 ], result[ 8 ] + ); + + } else if ( ( result = this.regexp.face_vertex_normal.exec( line ) ) !== null ) { + + // f vertex//normal vertex//normal vertex//normal + // 0 1 2 3 4 5 6 7 8 + // ["f 1//1 2//2 3//3", "1", "1", "2", "2", "3", "3", undefined, undefined] + + state.addFace( + result[ 1 ], result[ 3 ], result[ 5 ], result[ 7 ], + undefined, undefined, undefined, undefined, + result[ 2 ], result[ 4 ], result[ 6 ], result[ 8 ] + ); + + } else if ( ( result = this.regexp.face_vertex.exec( line ) ) !== null ) { + + // f vertex vertex vertex + // 0 1 2 3 4 + // ["f 1 2 3", "1", "2", "3", undefined] + + state.addFace( + result[ 1 ], result[ 2 ], result[ 3 ], result[ 4 ] + ); + + } else { + + throw new Error( "Unexpected face line: '" + line + "'" ); + + } + + } else if ( lineFirstChar === "l" ) { + + var lineParts = line.substring( 1 ).trim().split( " " ); + var lineVertices = [], lineUVs = []; + + if ( line.indexOf( "/" ) === - 1 ) { + + lineVertices = lineParts; + + } else { + + for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { + + var parts = lineParts[ li ].split( "/" ); + + if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); + if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); + + } + + } + state.addLineGeometry( lineVertices, lineUVs ); + + } else if ( ( result = this.regexp.object_pattern.exec( line ) ) !== null ) { + + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // var name = result[ 0 ].substr( 1 ).trim(); + var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); + + state.startObject( name ); + + } else if ( this.regexp.material_use_pattern.test( line ) ) { + + // material + + state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); + + } else if ( this.regexp.material_library_pattern.test( line ) ) { + + // mtl file + + state.materialLibraries.push( line.substring( 7 ).trim() ); + + } else if ( ( result = this.regexp.smoothing_pattern.exec( line ) ) !== null ) { + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + var value = result[ 1 ].trim().toLowerCase(); + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + state.object.smooth = ( value !== '0' && value !== 'off' ); + + var material = state.object.currentMaterial(); + if ( material ) { + + material.smooth = state.object.smooth; + + } + + } else { + + // Handle null terminated files without exception + if ( line === '\0' ) continue; + + throw new Error( "Unexpected line: '" + line + "'" ); + + } + + } + + state.finalize(); + + var container = new THREE.Group(); + container.materialLibraries = [].concat( state.materialLibraries ); + + for ( var i = 0, l = state.objects.length; i < l; i ++ ) { + + var object = state.objects[ i ]; + var geometry = object.geometry; + var materials = object.materials; + var isLine = ( geometry.type === 'Line' ); + + // Skip o/g line declarations that did not follow with any faces + if ( geometry.vertices.length === 0 ) continue; + + var buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( geometry.vertices ), 3 ) ); + + if ( geometry.normals.length > 0 ) { + + buffergeometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( geometry.normals ), 3 ) ); + + } else { + + buffergeometry.computeVertexNormals(); + + } + + if ( geometry.uvs.length > 0 ) { + + buffergeometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( geometry.uvs ), 2 ) ); + + } + + // Create materials + + var createdMaterials = []; + + for ( var mi = 0, miLen = materials.length; mi < miLen ; mi++ ) { + + var sourceMaterial = materials[mi]; + var material = undefined; + + if ( this.materials !== null ) { + + material = this.materials.create( sourceMaterial.name ); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { + + var materialLine = new THREE.LineBasicMaterial(); + materialLine.copy( material ); + material = materialLine; + + } + + } + + if ( ! material ) { + + material = ( ! isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial() ); + material.name = sourceMaterial.name; + + } + + material.shading = sourceMaterial.smooth ? THREE.SmoothShading : THREE.FlatShading; + + createdMaterials.push(material); + + } + + // Create mesh + + var mesh; + + if ( createdMaterials.length > 1 ) { + + for ( var mi = 0, miLen = materials.length; mi < miLen ; mi++ ) { + + var sourceMaterial = materials[mi]; + buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); + + } + + mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials ) : new THREE.LineSegments( buffergeometry, createdMaterials ) ); + + } else { + + mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ) : new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ) ); + } + + mesh.name = object.name; + + container.add( mesh ); + + } + + console.timeEnd( 'OBJLoader' ); + + return container; + + } + +}; diff --git a/demo/ar/three.js/examples/vendor/three.js/examples/js/vr/WebVR.js b/demo/ar/three.js/examples/vendor/three.js/examples/js/vr/WebVR.js new file mode 100644 index 0000000..149f5a0 --- /dev/null +++ b/demo/ar/three.js/examples/vendor/three.js/examples/js/vr/WebVR.js @@ -0,0 +1,186 @@ +/** + * @author mrdoob / http://mrdoob.com + * @author Mugen87 / https://github.com/Mugen87 + * + * Based on @tojiro's vr-samples-utils.js + */ + +var WEBVR = { + + isAvailable: function () { + + console.warn( 'WEBVR: isAvailable() is being deprecated. Use .checkAvailability() instead.' ); + return navigator.getVRDisplays !== undefined; + + }, + + checkAvailability: function () { + + return new Promise( function( resolve, reject ) { + + if ( navigator.getVRDisplays !== undefined ) { + + navigator.getVRDisplays().then( function ( displays ) { + + if ( displays.length === 0 ) { + + reject( 'WebVR supported, but no VRDisplays found.' ); + + } else { + + resolve(); + + } + + } ); + + } else { + + reject( 'Your browser does not support WebVR. See webvr.info for assistance.' ); + + } + + } ); + + }, + + getVRDisplay: function ( onDisplay ) { + + if ( 'getVRDisplays' in navigator ) { + + navigator.getVRDisplays() + .then( function ( displays ) { + onDisplay( displays[ 0 ] ); + } ); + + } + + }, + + getMessage: function () { + + console.warn( 'WEBVR: getMessage() is being deprecated. Use .getMessageContainer( message ) instead.' ); + + var message; + + if ( navigator.getVRDisplays ) { + + navigator.getVRDisplays().then( function ( displays ) { + + if ( displays.length === 0 ) message = 'WebVR supported, but no VRDisplays found.'; + + } ); + + } else { + + message = 'Your browser does not support WebVR. See webvr.info for assistance.'; + + } + + if ( message !== undefined ) { + + var container = document.createElement( 'div' ); + container.style.position = 'absolute'; + container.style.left = '0'; + container.style.top = '0'; + container.style.right = '0'; + container.style.zIndex = '999'; + container.align = 'center'; + + var error = document.createElement( 'div' ); + error.style.fontFamily = 'sans-serif'; + error.style.fontSize = '16px'; + error.style.fontStyle = 'normal'; + error.style.lineHeight = '26px'; + error.style.backgroundColor = '#fff'; + error.style.color = '#000'; + error.style.padding = '10px 20px'; + error.style.margin = '50px'; + error.style.display = 'inline-block'; + error.innerHTML = message; + container.appendChild( error ); + + return container; + + } + + }, + + getMessageContainer: function ( message ) { + + var container = document.createElement( 'div' ); + container.style.position = 'absolute'; + container.style.left = '0'; + container.style.top = '0'; + container.style.right = '0'; + container.style.zIndex = '999'; + container.align = 'center'; + + var error = document.createElement( 'div' ); + error.style.fontFamily = 'sans-serif'; + error.style.fontSize = '16px'; + error.style.fontStyle = 'normal'; + error.style.lineHeight = '26px'; + error.style.backgroundColor = '#fff'; + error.style.color = '#000'; + error.style.padding = '10px 20px'; + error.style.margin = '50px'; + error.style.display = 'inline-block'; + error.innerHTML = message; + container.appendChild( error ); + + return container; + + }, + + getButton: function ( display, canvas ) { + + if ( 'VREffect' in THREE && display instanceof THREE.VREffect ) { + + console.error( 'WebVR.getButton() now expects a VRDisplay.' ); + return document.createElement( 'button' ); + + } + + var button = document.createElement( 'button' ); + button.style.position = 'absolute'; + button.style.left = 'calc(50% - 50px)'; + button.style.bottom = '20px'; + button.style.width = '100px'; + button.style.border = '0'; + button.style.padding = '8px'; + button.style.cursor = 'pointer'; + button.style.backgroundColor = '#000'; + button.style.color = '#fff'; + button.style.fontFamily = 'sans-serif'; + button.style.fontSize = '13px'; + button.style.fontStyle = 'normal'; + button.style.textAlign = 'center'; + button.style.zIndex = '999'; + + if ( display ) { + + button.textContent = 'ENTER VR'; + button.onclick = function () { + + display.isPresenting ? display.exitPresent() : display.requestPresent( [ { source: canvas } ] ); + + }; + + window.addEventListener( 'vrdisplaypresentchange', function () { + + button.textContent = display.isPresenting ? 'EXIT VR' : 'ENTER VR'; + + }, false ); + + } else { + + button.textContent = 'NO VR DISPLAY'; + + } + + return button; + + } + +}; diff --git a/demo/ar/three.js/examples/vendor/webvr-polyfill.js b/demo/ar/three.js/examples/vendor/webvr-polyfill.js new file mode 100644 index 0000000..61aa58f --- /dev/null +++ b/demo/ar/three.js/examples/vendor/webvr-polyfill.js @@ -0,0 +1,6370 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.WebVRPolyfill = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o self.capabilities.maxLayers) { + reject(new Error('Invalid number of layers.')); + return; + } + + var incomingLayer = layers[0]; + if (!incomingLayer.source) { + /* + todo: figure out the correct behavior if the source is not provided. + see https://github.com/w3c/webvr/issues/58 + */ + resolve(); + return; + } + + var leftBounds = incomingLayer.leftBounds || defaultLeftBounds; + var rightBounds = incomingLayer.rightBounds || defaultRightBounds; + if (wasPresenting) { + // Already presenting, just changing configuration + var layer = self.layer_; + if (layer.source !== incomingLayer.source) { + layer.source = incomingLayer.source; + } + + for (var i = 0; i < 4; i++) { + layer.leftBounds[i] = leftBounds[i]; + layer.rightBounds[i] = rightBounds[i]; + } + + resolve(); + return; + } + + // Was not already presenting. + self.layer_ = { + predistorted: incomingLayer.predistorted, + source: incomingLayer.source, + leftBounds: leftBounds.slice(0), + rightBounds: rightBounds.slice(0) + }; + + self.waitingForPresent_ = false; + if (self.layer_ && self.layer_.source) { + var fullscreenElement = self.wrapForFullscreen(self.layer_.source); + + function onFullscreenChange() { + var actualFullscreenElement = Util.getFullscreenElement(); + + self.isPresenting = (fullscreenElement === actualFullscreenElement); + if (self.isPresenting) { + if (screen.orientation && screen.orientation.lock) { + screen.orientation.lock('landscape-primary').catch(function(error){ + console.error('screen.orientation.lock() failed due to', error.message) + }); + } + self.waitingForPresent_ = false; + self.beginPresent_(); + resolve(); + } else { + if (screen.orientation && screen.orientation.unlock) { + screen.orientation.unlock(); + } + self.removeFullscreenWrapper(); + self.wakelock_.release(); + self.endPresent_(); + self.removeFullscreenListeners_(); + } + self.fireVRDisplayPresentChange_(); + } + function onFullscreenError() { + if (!self.waitingForPresent_) { + return; + } + + self.removeFullscreenWrapper(); + self.removeFullscreenListeners_(); + + self.wakelock_.release(); + self.waitingForPresent_ = false; + self.isPresenting = false; + + reject(new Error('Unable to present.')); + } + + self.addFullscreenListeners_(fullscreenElement, + onFullscreenChange, onFullscreenError); + + if (Util.requestFullscreen(fullscreenElement)) { + self.wakelock_.request(); + self.waitingForPresent_ = true; + } else if (Util.isIOS()) { + // *sigh* Just fake it. + self.wakelock_.request(); + self.isPresenting = true; + self.beginPresent_(); + self.fireVRDisplayPresentChange_(); + resolve(); + } + } + + if (!self.waitingForPresent_ && !Util.isIOS()) { + Util.exitFullscreen(); + reject(new Error('Unable to present.')); + } + }); +}; + +VRDisplay.prototype.exitPresent = function() { + var wasPresenting = this.isPresenting; + var self = this; + this.isPresenting = false; + this.layer_ = null; + this.wakelock_.release(); + + return new Promise(function(resolve, reject) { + if (wasPresenting) { + if (!Util.exitFullscreen() && Util.isIOS()) { + self.endPresent_(); + self.fireVRDisplayPresentChange_(); + } + + resolve(); + } else { + reject(new Error('Was not presenting to VRDisplay.')); + } + }); +}; + +VRDisplay.prototype.getLayers = function() { + if (this.layer_) { + return [this.layer_]; + } + return []; +}; + +VRDisplay.prototype.fireVRDisplayPresentChange_ = function() { + // Important: unfortunately we cannot have full spec compliance here. + // CustomEvent custom fields all go under e.detail (so the VRDisplay ends up + // being e.detail.display, instead of e.display as per WebVR spec). + var event = new CustomEvent('vrdisplaypresentchange', {detail: {display: this}}); + window.dispatchEvent(event); +}; + +VRDisplay.prototype.addFullscreenListeners_ = function(element, changeHandler, errorHandler) { + this.removeFullscreenListeners_(); + + this.fullscreenEventTarget_ = element; + this.fullscreenChangeHandler_ = changeHandler; + this.fullscreenErrorHandler_ = errorHandler; + + if (changeHandler) { + if (document.fullscreenEnabled) { + element.addEventListener('fullscreenchange', changeHandler, false); + } else if (document.webkitFullscreenEnabled) { + element.addEventListener('webkitfullscreenchange', changeHandler, false); + } else if (document.mozFullScreenEnabled) { + document.addEventListener('mozfullscreenchange', changeHandler, false); + } else if (document.msFullscreenEnabled) { + element.addEventListener('msfullscreenchange', changeHandler, false); + } + } + + if (errorHandler) { + if (document.fullscreenEnabled) { + element.addEventListener('fullscreenerror', errorHandler, false); + } else if (document.webkitFullscreenEnabled) { + element.addEventListener('webkitfullscreenerror', errorHandler, false); + } else if (document.mozFullScreenEnabled) { + document.addEventListener('mozfullscreenerror', errorHandler, false); + } else if (document.msFullscreenEnabled) { + element.addEventListener('msfullscreenerror', errorHandler, false); + } + } +}; + +VRDisplay.prototype.removeFullscreenListeners_ = function() { + if (!this.fullscreenEventTarget_) + return; + + var element = this.fullscreenEventTarget_; + + if (this.fullscreenChangeHandler_) { + var changeHandler = this.fullscreenChangeHandler_; + element.removeEventListener('fullscreenchange', changeHandler, false); + element.removeEventListener('webkitfullscreenchange', changeHandler, false); + document.removeEventListener('mozfullscreenchange', changeHandler, false); + element.removeEventListener('msfullscreenchange', changeHandler, false); + } + + if (this.fullscreenErrorHandler_) { + var errorHandler = this.fullscreenErrorHandler_; + element.removeEventListener('fullscreenerror', errorHandler, false); + element.removeEventListener('webkitfullscreenerror', errorHandler, false); + document.removeEventListener('mozfullscreenerror', errorHandler, false); + element.removeEventListener('msfullscreenerror', errorHandler, false); + } + + this.fullscreenEventTarget_ = null; + this.fullscreenChangeHandler_ = null; + this.fullscreenErrorHandler_ = null; +}; + +VRDisplay.prototype.beginPresent_ = function() { + // Override to add custom behavior when presentation begins. +}; + +VRDisplay.prototype.endPresent_ = function() { + // Override to add custom behavior when presentation ends. +}; + +VRDisplay.prototype.submitFrame = function(pose) { + // Override to add custom behavior for frame submission. +}; + +VRDisplay.prototype.getEyeParameters = function(whichEye) { + // Override to return accurate eye parameters if canPresent is true. + return null; +}; + +/* + * Deprecated classes + */ + +/** + * The base class for all VR devices. (Deprecated) + */ +function VRDevice() { + this.isPolyfilled = true; + this.hardwareUnitId = 'webvr-polyfill hardwareUnitId'; + this.deviceId = 'webvr-polyfill deviceId'; + this.deviceName = 'webvr-polyfill deviceName'; +} + +/** + * The base class for all VR HMD devices. (Deprecated) + */ +function HMDVRDevice() { +} +HMDVRDevice.prototype = new VRDevice(); + +/** + * The base class for all VR position sensor devices. (Deprecated) + */ +function PositionSensorVRDevice() { +} +PositionSensorVRDevice.prototype = new VRDevice(); + +module.exports.VRFrameData = VRFrameData; +module.exports.VRDisplay = VRDisplay; +module.exports.VRDevice = VRDevice; +module.exports.HMDVRDevice = HMDVRDevice; +module.exports.PositionSensorVRDevice = PositionSensorVRDevice; + +},{"./util.js":22,"./wakelock.js":24}],4:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var CardboardUI = _dereq_('./cardboard-ui.js'); +var Util = _dereq_('./util.js'); +var WGLUPreserveGLState = _dereq_('./deps/wglu-preserve-state.js'); + +var distortionVS = [ + 'attribute vec2 position;', + 'attribute vec3 texCoord;', + + 'varying vec2 vTexCoord;', + + 'uniform vec4 viewportOffsetScale[2];', + + 'void main() {', + ' vec4 viewport = viewportOffsetScale[int(texCoord.z)];', + ' vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;', + ' gl_Position = vec4( position, 1.0, 1.0 );', + '}', +].join('\n'); + +var distortionFS = [ + 'precision mediump float;', + 'uniform sampler2D diffuse;', + + 'varying vec2 vTexCoord;', + + 'void main() {', + ' gl_FragColor = texture2D(diffuse, vTexCoord);', + '}', +].join('\n'); + +/** + * A mesh-based distorter. + */ +function CardboardDistorter(gl) { + this.gl = gl; + this.ctxAttribs = gl.getContextAttributes(); + + this.meshWidth = 20; + this.meshHeight = 20; + + this.bufferScale = WebVRConfig.BUFFER_SCALE; + + this.bufferWidth = gl.drawingBufferWidth; + this.bufferHeight = gl.drawingBufferHeight; + + // Patching support + this.realBindFramebuffer = gl.bindFramebuffer; + this.realEnable = gl.enable; + this.realDisable = gl.disable; + this.realColorMask = gl.colorMask; + this.realClearColor = gl.clearColor; + this.realViewport = gl.viewport; + + if (!Util.isIOS()) { + this.realCanvasWidth = Object.getOwnPropertyDescriptor(gl.canvas.__proto__, 'width'); + this.realCanvasHeight = Object.getOwnPropertyDescriptor(gl.canvas.__proto__, 'height'); + } + + this.isPatched = false; + + // State tracking + this.lastBoundFramebuffer = null; + this.cullFace = false; + this.depthTest = false; + this.blend = false; + this.scissorTest = false; + this.stencilTest = false; + this.viewport = [0, 0, 0, 0]; + this.colorMask = [true, true, true, true]; + this.clearColor = [0, 0, 0, 0]; + + this.attribs = { + position: 0, + texCoord: 1 + }; + this.program = Util.linkProgram(gl, distortionVS, distortionFS, this.attribs); + this.uniforms = Util.getProgramUniforms(gl, this.program); + + this.viewportOffsetScale = new Float32Array(8); + this.setTextureBounds(); + + this.vertexBuffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + this.indexCount = 0; + + this.renderTarget = gl.createTexture(); + this.framebuffer = gl.createFramebuffer(); + + this.depthStencilBuffer = null; + this.depthBuffer = null; + this.stencilBuffer = null; + + if (this.ctxAttribs.depth && this.ctxAttribs.stencil) { + this.depthStencilBuffer = gl.createRenderbuffer(); + } else if (this.ctxAttribs.depth) { + this.depthBuffer = gl.createRenderbuffer(); + } else if (this.ctxAttribs.stencil) { + this.stencilBuffer = gl.createRenderbuffer(); + } + + this.patch(); + + this.onResize(); + + if (!WebVRConfig.CARDBOARD_UI_DISABLED) { + this.cardboardUI = new CardboardUI(gl); + } +}; + +/** + * Tears down all the resources created by the distorter and removes any + * patches. + */ +CardboardDistorter.prototype.destroy = function() { + var gl = this.gl; + + this.unpatch(); + + gl.deleteProgram(this.program); + gl.deleteBuffer(this.vertexBuffer); + gl.deleteBuffer(this.indexBuffer); + gl.deleteTexture(this.renderTarget); + gl.deleteFramebuffer(this.framebuffer); + if (this.depthStencilBuffer) { + gl.deleteRenderbuffer(this.depthStencilBuffer); + } + if (this.depthBuffer) { + gl.deleteRenderbuffer(this.depthBuffer); + } + if (this.stencilBuffer) { + gl.deleteRenderbuffer(this.stencilBuffer); + } + + if (this.cardboardUI) { + this.cardboardUI.destroy(); + } +}; + + +/** + * Resizes the backbuffer to match the canvas width and height. + */ +CardboardDistorter.prototype.onResize = function() { + var gl = this.gl; + var self = this; + + var glState = [ + gl.RENDERBUFFER_BINDING, + gl.TEXTURE_BINDING_2D, gl.TEXTURE0 + ]; + + WGLUPreserveGLState(gl, glState, function(gl) { + // Bind real backbuffer and clear it once. We don't need to clear it again + // after that because we're overwriting the same area every frame. + self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, null); + + // Put things in a good state + if (self.scissorTest) { self.realDisable.call(gl, gl.SCISSOR_TEST); } + self.realColorMask.call(gl, true, true, true, true); + self.realViewport.call(gl, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + self.realClearColor.call(gl, 0, 0, 0, 1); + + gl.clear(gl.COLOR_BUFFER_BIT); + + // Now bind and resize the fake backbuffer + self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.framebuffer); + + gl.bindTexture(gl.TEXTURE_2D, self.renderTarget); + gl.texImage2D(gl.TEXTURE_2D, 0, self.ctxAttribs.alpha ? gl.RGBA : gl.RGB, + self.bufferWidth, self.bufferHeight, 0, + self.ctxAttribs.alpha ? gl.RGBA : gl.RGB, gl.UNSIGNED_BYTE, null); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, self.renderTarget, 0); + + if (self.ctxAttribs.depth && self.ctxAttribs.stencil) { + gl.bindRenderbuffer(gl.RENDERBUFFER, self.depthStencilBuffer); + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, + self.bufferWidth, self.bufferHeight); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, + gl.RENDERBUFFER, self.depthStencilBuffer); + } else if (self.ctxAttribs.depth) { + gl.bindRenderbuffer(gl.RENDERBUFFER, self.depthBuffer); + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, + self.bufferWidth, self.bufferHeight); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, + gl.RENDERBUFFER, self.depthBuffer); + } else if (self.ctxAttribs.stencil) { + gl.bindRenderbuffer(gl.RENDERBUFFER, self.stencilBuffer); + gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, + self.bufferWidth, self.bufferHeight); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, + gl.RENDERBUFFER, self.stencilBuffer); + } + + if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) { + console.error('Framebuffer incomplete!'); + } + + self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.lastBoundFramebuffer); + + if (self.scissorTest) { self.realEnable.call(gl, gl.SCISSOR_TEST); } + + self.realColorMask.apply(gl, self.colorMask); + self.realViewport.apply(gl, self.viewport); + self.realClearColor.apply(gl, self.clearColor); + }); + + if (this.cardboardUI) { + this.cardboardUI.onResize(); + } +}; + +CardboardDistorter.prototype.patch = function() { + if (this.isPatched) { + return; + } + + var self = this; + var canvas = this.gl.canvas; + var gl = this.gl; + + if (!Util.isIOS()) { + canvas.width = Util.getScreenWidth() * this.bufferScale; + canvas.height = Util.getScreenHeight() * this.bufferScale; + + Object.defineProperty(canvas, 'width', { + configurable: true, + enumerable: true, + get: function() { + return self.bufferWidth; + }, + set: function(value) { + self.bufferWidth = value; + self.realCanvasWidth.set.call(canvas, value); + self.onResize(); + } + }); + + Object.defineProperty(canvas, 'height', { + configurable: true, + enumerable: true, + get: function() { + return self.bufferHeight; + }, + set: function(value) { + self.bufferHeight = value; + self.realCanvasHeight.set.call(canvas, value); + self.onResize(); + } + }); + } + + this.lastBoundFramebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING); + + if (this.lastBoundFramebuffer == null) { + this.lastBoundFramebuffer = this.framebuffer; + this.gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer); + } + + this.gl.bindFramebuffer = function(target, framebuffer) { + self.lastBoundFramebuffer = framebuffer ? framebuffer : self.framebuffer; + // Silently make calls to bind the default framebuffer bind ours instead. + self.realBindFramebuffer.call(gl, target, self.lastBoundFramebuffer); + }; + + this.cullFace = gl.getParameter(gl.CULL_FACE); + this.depthTest = gl.getParameter(gl.DEPTH_TEST); + this.blend = gl.getParameter(gl.BLEND); + this.scissorTest = gl.getParameter(gl.SCISSOR_TEST); + this.stencilTest = gl.getParameter(gl.STENCIL_TEST); + + gl.enable = function(pname) { + switch (pname) { + case gl.CULL_FACE: self.cullFace = true; break; + case gl.DEPTH_TEST: self.depthTest = true; break; + case gl.BLEND: self.blend = true; break; + case gl.SCISSOR_TEST: self.scissorTest = true; break; + case gl.STENCIL_TEST: self.stencilTest = true; break; + } + self.realEnable.call(gl, pname); + }; + + gl.disable = function(pname) { + switch (pname) { + case gl.CULL_FACE: self.cullFace = false; break; + case gl.DEPTH_TEST: self.depthTest = false; break; + case gl.BLEND: self.blend = false; break; + case gl.SCISSOR_TEST: self.scissorTest = false; break; + case gl.STENCIL_TEST: self.stencilTest = false; break; + } + self.realDisable.call(gl, pname); + }; + + this.colorMask = gl.getParameter(gl.COLOR_WRITEMASK); + gl.colorMask = function(r, g, b, a) { + self.colorMask[0] = r; + self.colorMask[1] = g; + self.colorMask[2] = b; + self.colorMask[3] = a; + self.realColorMask.call(gl, r, g, b, a); + }; + + this.clearColor = gl.getParameter(gl.COLOR_CLEAR_VALUE); + gl.clearColor = function(r, g, b, a) { + self.clearColor[0] = r; + self.clearColor[1] = g; + self.clearColor[2] = b; + self.clearColor[3] = a; + self.realClearColor.call(gl, r, g, b, a); + }; + + this.viewport = gl.getParameter(gl.VIEWPORT); + gl.viewport = function(x, y, w, h) { + self.viewport[0] = x; + self.viewport[1] = y; + self.viewport[2] = w; + self.viewport[3] = h; + self.realViewport.call(gl, x, y, w, h); + }; + + this.isPatched = true; + Util.safariCssSizeWorkaround(canvas); +}; + +CardboardDistorter.prototype.unpatch = function() { + if (!this.isPatched) { + return; + } + + var gl = this.gl; + var canvas = this.gl.canvas; + + if (!Util.isIOS()) { + Object.defineProperty(canvas, 'width', this.realCanvasWidth); + Object.defineProperty(canvas, 'height', this.realCanvasHeight); + } + canvas.width = this.bufferWidth; + canvas.height = this.bufferHeight; + + gl.bindFramebuffer = this.realBindFramebuffer; + gl.enable = this.realEnable; + gl.disable = this.realDisable; + gl.colorMask = this.realColorMask; + gl.clearColor = this.realClearColor; + gl.viewport = this.realViewport; + + // Check to see if our fake backbuffer is bound and bind the real backbuffer + // if that's the case. + if (this.lastBoundFramebuffer == this.framebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + } + + this.isPatched = false; + + setTimeout(function() { + Util.safariCssSizeWorkaround(canvas); + }, 1); +}; + +CardboardDistorter.prototype.setTextureBounds = function(leftBounds, rightBounds) { + if (!leftBounds) { + leftBounds = [0, 0, 0.5, 1]; + } + + if (!rightBounds) { + rightBounds = [0.5, 0, 0.5, 1]; + } + + // Left eye + this.viewportOffsetScale[0] = leftBounds[0]; // X + this.viewportOffsetScale[1] = leftBounds[1]; // Y + this.viewportOffsetScale[2] = leftBounds[2]; // Width + this.viewportOffsetScale[3] = leftBounds[3]; // Height + + // Right eye + this.viewportOffsetScale[4] = rightBounds[0]; // X + this.viewportOffsetScale[5] = rightBounds[1]; // Y + this.viewportOffsetScale[6] = rightBounds[2]; // Width + this.viewportOffsetScale[7] = rightBounds[3]; // Height +}; + +/** + * Performs distortion pass on the injected backbuffer, rendering it to the real + * backbuffer. + */ +CardboardDistorter.prototype.submitFrame = function() { + var gl = this.gl; + var self = this; + + var glState = []; + + if (!WebVRConfig.DIRTY_SUBMIT_FRAME_BINDINGS) { + glState.push( + gl.CURRENT_PROGRAM, + gl.ARRAY_BUFFER_BINDING, + gl.ELEMENT_ARRAY_BUFFER_BINDING, + gl.TEXTURE_BINDING_2D, gl.TEXTURE0 + ); + } + + WGLUPreserveGLState(gl, glState, function(gl) { + // Bind the real default framebuffer + self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, null); + + // Make sure the GL state is in a good place + if (self.cullFace) { self.realDisable.call(gl, gl.CULL_FACE); } + if (self.depthTest) { self.realDisable.call(gl, gl.DEPTH_TEST); } + if (self.blend) { self.realDisable.call(gl, gl.BLEND); } + if (self.scissorTest) { self.realDisable.call(gl, gl.SCISSOR_TEST); } + if (self.stencilTest) { self.realDisable.call(gl, gl.STENCIL_TEST); } + self.realColorMask.call(gl, true, true, true, true); + self.realViewport.call(gl, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + + // If the backbuffer has an alpha channel clear every frame so the page + // doesn't show through. + if (self.ctxAttribs.alpha || Util.isIOS()) { + self.realClearColor.call(gl, 0, 0, 0, 1); + gl.clear(gl.COLOR_BUFFER_BIT); + } + + // Bind distortion program and mesh + gl.useProgram(self.program); + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, self.indexBuffer); + + gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer); + gl.enableVertexAttribArray(self.attribs.position); + gl.enableVertexAttribArray(self.attribs.texCoord); + gl.vertexAttribPointer(self.attribs.position, 2, gl.FLOAT, false, 20, 0); + gl.vertexAttribPointer(self.attribs.texCoord, 3, gl.FLOAT, false, 20, 8); + + gl.activeTexture(gl.TEXTURE0); + gl.uniform1i(self.uniforms.diffuse, 0); + gl.bindTexture(gl.TEXTURE_2D, self.renderTarget); + + gl.uniform4fv(self.uniforms.viewportOffsetScale, self.viewportOffsetScale); + + // Draws both eyes + gl.drawElements(gl.TRIANGLES, self.indexCount, gl.UNSIGNED_SHORT, 0); + + if (self.cardboardUI) { + self.cardboardUI.renderNoState(); + } + + // Bind the fake default framebuffer again + self.realBindFramebuffer.call(self.gl, gl.FRAMEBUFFER, self.framebuffer); + + // If preserveDrawingBuffer == false clear the framebuffer + if (!self.ctxAttribs.preserveDrawingBuffer) { + self.realClearColor.call(gl, 0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); + } + + if (!WebVRConfig.DIRTY_SUBMIT_FRAME_BINDINGS) { + self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.lastBoundFramebuffer); + } + + // Restore state + if (self.cullFace) { self.realEnable.call(gl, gl.CULL_FACE); } + if (self.depthTest) { self.realEnable.call(gl, gl.DEPTH_TEST); } + if (self.blend) { self.realEnable.call(gl, gl.BLEND); } + if (self.scissorTest) { self.realEnable.call(gl, gl.SCISSOR_TEST); } + if (self.stencilTest) { self.realEnable.call(gl, gl.STENCIL_TEST); } + + self.realColorMask.apply(gl, self.colorMask); + self.realViewport.apply(gl, self.viewport); + if (self.ctxAttribs.alpha || !self.ctxAttribs.preserveDrawingBuffer) { + self.realClearColor.apply(gl, self.clearColor); + } + }); + + // Workaround for the fact that Safari doesn't allow us to patch the canvas + // width and height correctly. After each submit frame check to see what the + // real backbuffer size has been set to and resize the fake backbuffer size + // to match. + if (Util.isIOS()) { + var canvas = gl.canvas; + if (canvas.width != self.bufferWidth || canvas.height != self.bufferHeight) { + self.bufferWidth = canvas.width; + self.bufferHeight = canvas.height; + self.onResize(); + } + } +}; + +/** + * Call when the deviceInfo has changed. At this point we need + * to re-calculate the distortion mesh. + */ +CardboardDistorter.prototype.updateDeviceInfo = function(deviceInfo) { + var gl = this.gl; + var self = this; + + var glState = [gl.ARRAY_BUFFER_BINDING, gl.ELEMENT_ARRAY_BUFFER_BINDING]; + WGLUPreserveGLState(gl, glState, function(gl) { + var vertices = self.computeMeshVertices_(self.meshWidth, self.meshHeight, deviceInfo); + gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); + + // Indices don't change based on device parameters, so only compute once. + if (!self.indexCount) { + var indices = self.computeMeshIndices_(self.meshWidth, self.meshHeight); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, self.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW); + self.indexCount = indices.length; + } + }); +}; + +/** + * Build the distortion mesh vertices. + * Based on code from the Unity cardboard plugin. + */ +CardboardDistorter.prototype.computeMeshVertices_ = function(width, height, deviceInfo) { + var vertices = new Float32Array(2 * width * height * 5); + + var lensFrustum = deviceInfo.getLeftEyeVisibleTanAngles(); + var noLensFrustum = deviceInfo.getLeftEyeNoLensTanAngles(); + var viewport = deviceInfo.getLeftEyeVisibleScreenRect(noLensFrustum); + var vidx = 0; + var iidx = 0; + for (var e = 0; e < 2; e++) { + for (var j = 0; j < height; j++) { + for (var i = 0; i < width; i++, vidx++) { + var u = i / (width - 1); + var v = j / (height - 1); + + // Grid points regularly spaced in StreoScreen, and barrel distorted in + // the mesh. + var s = u; + var t = v; + var x = Util.lerp(lensFrustum[0], lensFrustum[2], u); + var y = Util.lerp(lensFrustum[3], lensFrustum[1], v); + var d = Math.sqrt(x * x + y * y); + var r = deviceInfo.distortion.distortInverse(d); + var p = x * r / d; + var q = y * r / d; + u = (p - noLensFrustum[0]) / (noLensFrustum[2] - noLensFrustum[0]); + v = (q - noLensFrustum[3]) / (noLensFrustum[1] - noLensFrustum[3]); + + // Convert u,v to mesh screen coordinates. + var aspect = deviceInfo.device.widthMeters / deviceInfo.device.heightMeters; + + // FIXME: The original Unity plugin multiplied U by the aspect ratio + // and didn't multiply either value by 2, but that seems to get it + // really close to correct looking for me. I hate this kind of "Don't + // know why it works" code though, and wold love a more logical + // explanation of what needs to happen here. + u = (viewport.x + u * viewport.width - 0.5) * 2.0; //* aspect; + v = (viewport.y + v * viewport.height - 0.5) * 2.0; + + vertices[(vidx * 5) + 0] = u; // position.x + vertices[(vidx * 5) + 1] = v; // position.y + vertices[(vidx * 5) + 2] = s; // texCoord.x + vertices[(vidx * 5) + 3] = t; // texCoord.y + vertices[(vidx * 5) + 4] = e; // texCoord.z (viewport index) + } + } + var w = lensFrustum[2] - lensFrustum[0]; + lensFrustum[0] = -(w + lensFrustum[0]); + lensFrustum[2] = w - lensFrustum[2]; + w = noLensFrustum[2] - noLensFrustum[0]; + noLensFrustum[0] = -(w + noLensFrustum[0]); + noLensFrustum[2] = w - noLensFrustum[2]; + viewport.x = 1 - (viewport.x + viewport.width); + } + return vertices; +} + +/** + * Build the distortion mesh indices. + * Based on code from the Unity cardboard plugin. + */ +CardboardDistorter.prototype.computeMeshIndices_ = function(width, height) { + var indices = new Uint16Array(2 * (width - 1) * (height - 1) * 6); + var halfwidth = width / 2; + var halfheight = height / 2; + var vidx = 0; + var iidx = 0; + for (var e = 0; e < 2; e++) { + for (var j = 0; j < height; j++) { + for (var i = 0; i < width; i++, vidx++) { + if (i == 0 || j == 0) + continue; + // Build a quad. Lower right and upper left quadrants have quads with + // the triangle diagonal flipped to get the vignette to interpolate + // correctly. + if ((i <= halfwidth) == (j <= halfheight)) { + // Quad diagonal lower left to upper right. + indices[iidx++] = vidx; + indices[iidx++] = vidx - width - 1; + indices[iidx++] = vidx - width; + indices[iidx++] = vidx - width - 1; + indices[iidx++] = vidx; + indices[iidx++] = vidx - 1; + } else { + // Quad diagonal upper left to lower right. + indices[iidx++] = vidx - 1; + indices[iidx++] = vidx - width; + indices[iidx++] = vidx; + indices[iidx++] = vidx - width; + indices[iidx++] = vidx - 1; + indices[iidx++] = vidx - width - 1; + } + } + } + } + return indices; +}; + +CardboardDistorter.prototype.getOwnPropertyDescriptor_ = function(proto, attrName) { + var descriptor = Object.getOwnPropertyDescriptor(proto, attrName); + // In some cases (ahem... Safari), the descriptor returns undefined get and + // set fields. In this case, we need to create a synthetic property + // descriptor. This works around some of the issues in + // https://github.com/borismus/webvr-polyfill/issues/46 + if (descriptor.get === undefined || descriptor.set === undefined) { + descriptor.configurable = true; + descriptor.enumerable = true; + descriptor.get = function() { + return this.getAttribute(attrName); + }; + descriptor.set = function(val) { + this.setAttribute(attrName, val); + }; + } + return descriptor; +}; + +module.exports = CardboardDistorter; + +},{"./cardboard-ui.js":5,"./deps/wglu-preserve-state.js":7,"./util.js":22}],5:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Util = _dereq_('./util.js'); +var WGLUPreserveGLState = _dereq_('./deps/wglu-preserve-state.js'); + +var uiVS = [ + 'attribute vec2 position;', + + 'uniform mat4 projectionMat;', + + 'void main() {', + ' gl_Position = projectionMat * vec4( position, -1.0, 1.0 );', + '}', +].join('\n'); + +var uiFS = [ + 'precision mediump float;', + + 'uniform vec4 color;', + + 'void main() {', + ' gl_FragColor = color;', + '}', +].join('\n'); + +var DEG2RAD = Math.PI/180.0; + +// The gear has 6 identical sections, each spanning 60 degrees. +var kAnglePerGearSection = 60; + +// Half-angle of the span of the outer rim. +var kOuterRimEndAngle = 12; + +// Angle between the middle of the outer rim and the start of the inner rim. +var kInnerRimBeginAngle = 20; + +// Distance from center to outer rim, normalized so that the entire model +// fits in a [-1, 1] x [-1, 1] square. +var kOuterRadius = 1; + +// Distance from center to depressed rim, in model units. +var kMiddleRadius = 0.75; + +// Radius of the inner hollow circle, in model units. +var kInnerRadius = 0.3125; + +// Center line thickness in DP. +var kCenterLineThicknessDp = 4; + +// Button width in DP. +var kButtonWidthDp = 28; + +// Factor to scale the touch area that responds to the touch. +var kTouchSlopFactor = 1.5; + +var Angles = [ + 0, kOuterRimEndAngle, kInnerRimBeginAngle, + kAnglePerGearSection - kInnerRimBeginAngle, + kAnglePerGearSection - kOuterRimEndAngle +]; + +/** + * Renders the alignment line and "options" gear. It is assumed that the canvas + * this is rendered into covers the entire screen (or close to it.) + */ +function CardboardUI(gl) { + this.gl = gl; + + this.attribs = { + position: 0 + }; + this.program = Util.linkProgram(gl, uiVS, uiFS, this.attribs); + this.uniforms = Util.getProgramUniforms(gl, this.program); + + this.vertexBuffer = gl.createBuffer(); + this.gearOffset = 0; + this.gearVertexCount = 0; + this.arrowOffset = 0; + this.arrowVertexCount = 0; + + this.projMat = new Float32Array(16); + + this.listener = null; + + this.onResize(); +}; + +/** + * Tears down all the resources created by the UI renderer. + */ +CardboardUI.prototype.destroy = function() { + var gl = this.gl; + + if (this.listener) { + gl.canvas.removeEventListener('click', this.listener, false); + } + + gl.deleteProgram(this.program); + gl.deleteBuffer(this.vertexBuffer); +}; + +/** + * Adds a listener to clicks on the gear and back icons + */ +CardboardUI.prototype.listen = function(optionsCallback, backCallback) { + var canvas = this.gl.canvas; + this.listener = function(event) { + var midline = canvas.clientWidth / 2; + var buttonSize = kButtonWidthDp * kTouchSlopFactor; + // Check to see if the user clicked on (or around) the gear icon + if (event.clientX > midline - buttonSize && + event.clientX < midline + buttonSize && + event.clientY > canvas.clientHeight - buttonSize) { + optionsCallback(event); + } + // Check to see if the user clicked on (or around) the back icon + else if (event.clientX < buttonSize && event.clientY < buttonSize) { + backCallback(event); + } + }; + canvas.addEventListener('click', this.listener, false); +}; + +/** + * Builds the UI mesh. + */ +CardboardUI.prototype.onResize = function() { + var gl = this.gl; + var self = this; + + var glState = [ + gl.ARRAY_BUFFER_BINDING + ]; + + WGLUPreserveGLState(gl, glState, function(gl) { + var vertices = []; + + var midline = gl.drawingBufferWidth / 2; + + // Assumes your canvas width and height is scaled proportionately. + // TODO(smus): The following causes buttons to become huge on iOS, but seems + // like the right thing to do. For now, added a hack. But really, investigate why. + var dps = (gl.drawingBufferWidth / (screen.width * window.devicePixelRatio)); + if (!Util.isIOS()) { + dps *= window.devicePixelRatio; + } + + var lineWidth = kCenterLineThicknessDp * dps / 2; + var buttonSize = kButtonWidthDp * kTouchSlopFactor * dps; + var buttonScale = kButtonWidthDp * dps / 2; + var buttonBorder = ((kButtonWidthDp * kTouchSlopFactor) - kButtonWidthDp) * dps; + + // Build centerline + vertices.push(midline - lineWidth, buttonSize); + vertices.push(midline - lineWidth, gl.drawingBufferHeight); + vertices.push(midline + lineWidth, buttonSize); + vertices.push(midline + lineWidth, gl.drawingBufferHeight); + + // Build gear + self.gearOffset = (vertices.length / 2); + + function addGearSegment(theta, r) { + var angle = (90 - theta) * DEG2RAD; + var x = Math.cos(angle); + var y = Math.sin(angle); + vertices.push(kInnerRadius * x * buttonScale + midline, kInnerRadius * y * buttonScale + buttonScale); + vertices.push(r * x * buttonScale + midline, r * y * buttonScale + buttonScale); + } + + for (var i = 0; i <= 6; i++) { + var segmentTheta = i * kAnglePerGearSection; + + addGearSegment(segmentTheta, kOuterRadius); + addGearSegment(segmentTheta + kOuterRimEndAngle, kOuterRadius); + addGearSegment(segmentTheta + kInnerRimBeginAngle, kMiddleRadius); + addGearSegment(segmentTheta + (kAnglePerGearSection - kInnerRimBeginAngle), kMiddleRadius); + addGearSegment(segmentTheta + (kAnglePerGearSection - kOuterRimEndAngle), kOuterRadius); + } + + self.gearVertexCount = (vertices.length / 2) - self.gearOffset; + + // Build back arrow + self.arrowOffset = (vertices.length / 2); + + function addArrowVertex(x, y) { + vertices.push(buttonBorder + x, gl.drawingBufferHeight - buttonBorder - y); + } + + var angledLineWidth = lineWidth / Math.sin(45 * DEG2RAD); + + addArrowVertex(0, buttonScale); + addArrowVertex(buttonScale, 0); + addArrowVertex(buttonScale + angledLineWidth, angledLineWidth); + addArrowVertex(angledLineWidth, buttonScale + angledLineWidth); + + addArrowVertex(angledLineWidth, buttonScale - angledLineWidth); + addArrowVertex(0, buttonScale); + addArrowVertex(buttonScale, buttonScale * 2); + addArrowVertex(buttonScale + angledLineWidth, (buttonScale * 2) - angledLineWidth); + + addArrowVertex(angledLineWidth, buttonScale - angledLineWidth); + addArrowVertex(0, buttonScale); + + addArrowVertex(angledLineWidth, buttonScale - lineWidth); + addArrowVertex(kButtonWidthDp * dps, buttonScale - lineWidth); + addArrowVertex(angledLineWidth, buttonScale + lineWidth); + addArrowVertex(kButtonWidthDp * dps, buttonScale + lineWidth); + + self.arrowVertexCount = (vertices.length / 2) - self.arrowOffset; + + // Buffer data + gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); + }); +}; + +/** + * Performs distortion pass on the injected backbuffer, rendering it to the real + * backbuffer. + */ +CardboardUI.prototype.render = function() { + var gl = this.gl; + var self = this; + + var glState = [ + gl.CULL_FACE, + gl.DEPTH_TEST, + gl.BLEND, + gl.SCISSOR_TEST, + gl.STENCIL_TEST, + gl.COLOR_WRITEMASK, + gl.VIEWPORT, + + gl.CURRENT_PROGRAM, + gl.ARRAY_BUFFER_BINDING + ]; + + WGLUPreserveGLState(gl, glState, function(gl) { + // Make sure the GL state is in a good place + gl.disable(gl.CULL_FACE); + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.BLEND); + gl.disable(gl.SCISSOR_TEST); + gl.disable(gl.STENCIL_TEST); + gl.colorMask(true, true, true, true); + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + + self.renderNoState(); + }); +}; + +CardboardUI.prototype.renderNoState = function() { + var gl = this.gl; + + // Bind distortion program and mesh + gl.useProgram(this.program); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.enableVertexAttribArray(this.attribs.position); + gl.vertexAttribPointer(this.attribs.position, 2, gl.FLOAT, false, 8, 0); + + gl.uniform4f(this.uniforms.color, 1.0, 1.0, 1.0, 1.0); + + Util.orthoMatrix(this.projMat, 0, gl.drawingBufferWidth, 0, gl.drawingBufferHeight, 0.1, 1024.0); + gl.uniformMatrix4fv(this.uniforms.projectionMat, false, this.projMat); + + // Draws UI element + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); + gl.drawArrays(gl.TRIANGLE_STRIP, this.gearOffset, this.gearVertexCount); + gl.drawArrays(gl.TRIANGLE_STRIP, this.arrowOffset, this.arrowVertexCount); +}; + +module.exports = CardboardUI; + +},{"./deps/wglu-preserve-state.js":7,"./util.js":22}],6:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var CardboardDistorter = _dereq_('./cardboard-distorter.js'); +var CardboardUI = _dereq_('./cardboard-ui.js'); +var DeviceInfo = _dereq_('./device-info.js'); +var Dpdb = _dereq_('./dpdb/dpdb.js'); +var FusionPoseSensor = _dereq_('./sensor-fusion/fusion-pose-sensor.js'); +var RotateInstructions = _dereq_('./rotate-instructions.js'); +var ViewerSelector = _dereq_('./viewer-selector.js'); +var VRDisplay = _dereq_('./base.js').VRDisplay; +var Util = _dereq_('./util.js'); + +var Eye = { + LEFT: 'left', + RIGHT: 'right' +}; + +/** + * VRDisplay based on mobile device parameters and DeviceMotion APIs. + */ +function CardboardVRDisplay() { + this.displayName = 'Cardboard VRDisplay (webvr-polyfill)'; + + this.capabilities.hasOrientation = true; + this.capabilities.canPresent = true; + + // "Private" members. + this.bufferScale_ = WebVRConfig.BUFFER_SCALE; + this.poseSensor_ = new FusionPoseSensor(); + this.distorter_ = null; + this.cardboardUI_ = null; + + this.dpdb_ = new Dpdb(true, this.onDeviceParamsUpdated_.bind(this)); + this.deviceInfo_ = new DeviceInfo(this.dpdb_.getDeviceParams()); + + this.viewerSelector_ = new ViewerSelector(); + this.viewerSelector_.on('change', this.onViewerChanged_.bind(this)); + + // Set the correct initial viewer. + this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer()); + + if (!WebVRConfig.ROTATE_INSTRUCTIONS_DISABLED) { + this.rotateInstructions_ = new RotateInstructions(); + } + + if (Util.isIOS()) { + // Listen for resize events to workaround this awful Safari bug. + window.addEventListener('resize', this.onResize_.bind(this)); + } +} +CardboardVRDisplay.prototype = new VRDisplay(); + +CardboardVRDisplay.prototype.getImmediatePose = function() { + return { + position: this.poseSensor_.getPosition(), + orientation: this.poseSensor_.getOrientation(), + linearVelocity: null, + linearAcceleration: null, + angularVelocity: null, + angularAcceleration: null + }; +}; + +CardboardVRDisplay.prototype.resetPose = function() { + this.poseSensor_.resetPose(); +}; + +CardboardVRDisplay.prototype.getEyeParameters = function(whichEye) { + var offset = [this.deviceInfo_.viewer.interLensDistance * 0.5, 0.0, 0.0]; + var fieldOfView; + + // TODO: FoV can be a little expensive to compute. Cache when device params change. + if (whichEye == Eye.LEFT) { + offset[0] *= -1.0; + fieldOfView = this.deviceInfo_.getFieldOfViewLeftEye(); + } else if (whichEye == Eye.RIGHT) { + fieldOfView = this.deviceInfo_.getFieldOfViewRightEye(); + } else { + console.error('Invalid eye provided: %s', whichEye); + return null; + } + + return { + fieldOfView: fieldOfView, + offset: offset, + // TODO: Should be able to provide better values than these. + renderWidth: this.deviceInfo_.device.width * 0.5 * this.bufferScale_, + renderHeight: this.deviceInfo_.device.height * this.bufferScale_, + }; +}; + +CardboardVRDisplay.prototype.onDeviceParamsUpdated_ = function(newParams) { + if (Util.isDebug()) { + console.log('DPDB reported that device params were updated.'); + } + this.deviceInfo_.updateDeviceParams(newParams); + + if (this.distorter_) { + this.distorter_.updateDeviceInfo(this.deviceInfo_); + } +}; + +CardboardVRDisplay.prototype.updateBounds_ = function () { + if (this.layer_ && this.distorter_ && (this.layer_.leftBounds || this.layer_.rightBounds)) { + this.distorter_.setTextureBounds(this.layer_.leftBounds, this.layer_.rightBounds); + } +}; + +CardboardVRDisplay.prototype.beginPresent_ = function() { + var gl = this.layer_.source.getContext('webgl'); + if (!gl) + gl = this.layer_.source.getContext('experimental-webgl'); + if (!gl) + gl = this.layer_.source.getContext('webgl2'); + + if (!gl) + return; // Can't do distortion without a WebGL context. + + // Provides a way to opt out of distortion + if (this.layer_.predistorted) { + if (!WebVRConfig.CARDBOARD_UI_DISABLED) { + gl.canvas.width = Util.getScreenWidth() * this.bufferScale_; + gl.canvas.height = Util.getScreenHeight() * this.bufferScale_; + this.cardboardUI_ = new CardboardUI(gl); + } + } else { + // Create a new distorter for the target context + this.distorter_ = new CardboardDistorter(gl); + this.distorter_.updateDeviceInfo(this.deviceInfo_); + this.cardboardUI_ = this.distorter_.cardboardUI; + } + + if (this.cardboardUI_) { + this.cardboardUI_.listen(function(e) { + // Options clicked. + this.viewerSelector_.show(this.layer_.source.parentElement); + e.stopPropagation(); + e.preventDefault(); + }.bind(this), function(e) { + // Back clicked. + this.exitPresent(); + e.stopPropagation(); + e.preventDefault(); + }.bind(this)); + } + + if (this.rotateInstructions_) { + if (Util.isLandscapeMode() && Util.isMobile()) { + // In landscape mode, temporarily show the "put into Cardboard" + // interstitial. Otherwise, do the default thing. + this.rotateInstructions_.showTemporarily(3000, this.layer_.source.parentElement); + } else { + this.rotateInstructions_.update(); + } + } + + // Listen for orientation change events in order to show interstitial. + this.orientationHandler = this.onOrientationChange_.bind(this); + window.addEventListener('orientationchange', this.orientationHandler); + + // Listen for present display change events in order to update distorter dimensions + this.vrdisplaypresentchangeHandler = this.updateBounds_.bind(this); + window.addEventListener('vrdisplaypresentchange', this.vrdisplaypresentchangeHandler); + + // Fire this event initially, to give geometry-distortion clients the chance + // to do something custom. + this.fireVRDisplayDeviceParamsChange_(); +}; + +CardboardVRDisplay.prototype.endPresent_ = function() { + if (this.distorter_) { + this.distorter_.destroy(); + this.distorter_ = null; + } + if (this.cardboardUI_) { + this.cardboardUI_.destroy(); + this.cardboardUI_ = null; + } + + if (this.rotateInstructions_) { + this.rotateInstructions_.hide(); + } + this.viewerSelector_.hide(); + + window.removeEventListener('orientationchange', this.orientationHandler); + window.removeEventListener('vrdisplaypresentchange', this.vrdisplaypresentchangeHandler); +}; + +CardboardVRDisplay.prototype.submitFrame = function(pose) { + if (this.distorter_) { + this.updateBounds_(); + this.distorter_.submitFrame(); + } else if (this.cardboardUI_ && this.layer_) { + // Hack for predistorted: true. + var canvas = this.layer_.source.getContext('webgl').canvas; + if (canvas.width != this.lastWidth || canvas.height != this.lastHeight) { + this.cardboardUI_.onResize(); + } + this.lastWidth = canvas.width; + this.lastHeight = canvas.height; + + // Render the Cardboard UI. + this.cardboardUI_.render(); + } +}; + +CardboardVRDisplay.prototype.onOrientationChange_ = function(e) { + // Hide the viewer selector. + this.viewerSelector_.hide(); + + // Update the rotate instructions. + if (this.rotateInstructions_) { + this.rotateInstructions_.update(); + } + + this.onResize_(); +}; + +CardboardVRDisplay.prototype.onResize_ = function(e) { + if (this.layer_) { + var gl = this.layer_.source.getContext('webgl'); + // Size the CSS canvas. + // Added padding on right and bottom because iPhone 5 will not + // hide the URL bar unless content is bigger than the screen. + // This will not be visible as long as the container element (e.g. body) + // is set to 'overflow: hidden'. + var cssProperties = [ + 'position: absolute', + 'top: 0', + 'left: 0', + 'width: ' + Math.max(screen.width, screen.height) + 'px', + 'height: ' + Math.min(screen.height, screen.width) + 'px', + 'border: 0', + 'margin: 0', + 'padding: 0 10px 10px 0', + ]; + gl.canvas.setAttribute('style', cssProperties.join('; ') + ';'); + + Util.safariCssSizeWorkaround(gl.canvas); + } +}; + +CardboardVRDisplay.prototype.onViewerChanged_ = function(viewer) { + this.deviceInfo_.setViewer(viewer); + + if (this.distorter_) { + // Update the distortion appropriately. + this.distorter_.updateDeviceInfo(this.deviceInfo_); + } + + // Fire a new event containing viewer and device parameters for clients that + // want to implement their own geometry-based distortion. + this.fireVRDisplayDeviceParamsChange_(); +}; + +CardboardVRDisplay.prototype.fireVRDisplayDeviceParamsChange_ = function() { + var event = new CustomEvent('vrdisplaydeviceparamschange', { + detail: { + vrdisplay: this, + deviceInfo: this.deviceInfo_, + } + }); + window.dispatchEvent(event); +}; + +module.exports = CardboardVRDisplay; + +},{"./base.js":3,"./cardboard-distorter.js":4,"./cardboard-ui.js":5,"./device-info.js":8,"./dpdb/dpdb.js":12,"./rotate-instructions.js":16,"./sensor-fusion/fusion-pose-sensor.js":18,"./util.js":22,"./viewer-selector.js":23}],7:[function(_dereq_,module,exports){ +/* +Copyright (c) 2016, Brandon Jones. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +/* +Caches specified GL state, runs a callback, and restores the cached state when +done. + +Example usage: + +var savedState = [ + gl.ARRAY_BUFFER_BINDING, + + // TEXTURE_BINDING_2D or _CUBE_MAP must always be followed by the texure unit. + gl.TEXTURE_BINDING_2D, gl.TEXTURE0, + + gl.CLEAR_COLOR, +]; +// After this call the array buffer, texture unit 0, active texture, and clear +// color will be restored. The viewport will remain changed, however, because +// gl.VIEWPORT was not included in the savedState list. +WGLUPreserveGLState(gl, savedState, function(gl) { + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, ....); + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texImage2D(gl.TEXTURE_2D, ...); + + gl.clearColor(1, 0, 0, 1); + gl.clear(gl.COLOR_BUFFER_BIT); +}); + +Note that this is not intended to be fast. Managing state in your own code to +avoid redundant state setting and querying will always be faster. This function +is most useful for cases where you may not have full control over the WebGL +calls being made, such as tooling or effect injectors. +*/ + +function WGLUPreserveGLState(gl, bindings, callback) { + if (!bindings) { + callback(gl); + return; + } + + var boundValues = []; + + var activeTexture = null; + for (var i = 0; i < bindings.length; ++i) { + var binding = bindings[i]; + switch (binding) { + case gl.TEXTURE_BINDING_2D: + case gl.TEXTURE_BINDING_CUBE_MAP: + var textureUnit = bindings[++i]; + if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31) { + console.error("TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit"); + boundValues.push(null, null); + break; + } + if (!activeTexture) { + activeTexture = gl.getParameter(gl.ACTIVE_TEXTURE); + } + gl.activeTexture(textureUnit); + boundValues.push(gl.getParameter(binding), null); + break; + case gl.ACTIVE_TEXTURE: + activeTexture = gl.getParameter(gl.ACTIVE_TEXTURE); + boundValues.push(null); + break; + default: + boundValues.push(gl.getParameter(binding)); + break; + } + } + + callback(gl); + + for (var i = 0; i < bindings.length; ++i) { + var binding = bindings[i]; + var boundValue = boundValues[i]; + switch (binding) { + case gl.ACTIVE_TEXTURE: + break; // Ignore this binding, since we special-case it to happen last. + case gl.ARRAY_BUFFER_BINDING: + gl.bindBuffer(gl.ARRAY_BUFFER, boundValue); + break; + case gl.COLOR_CLEAR_VALUE: + gl.clearColor(boundValue[0], boundValue[1], boundValue[2], boundValue[3]); + break; + case gl.COLOR_WRITEMASK: + gl.colorMask(boundValue[0], boundValue[1], boundValue[2], boundValue[3]); + break; + case gl.CURRENT_PROGRAM: + gl.useProgram(boundValue); + break; + case gl.ELEMENT_ARRAY_BUFFER_BINDING: + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundValue); + break; + case gl.FRAMEBUFFER_BINDING: + gl.bindFramebuffer(gl.FRAMEBUFFER, boundValue); + break; + case gl.RENDERBUFFER_BINDING: + gl.bindRenderbuffer(gl.RENDERBUFFER, boundValue); + break; + case gl.TEXTURE_BINDING_2D: + var textureUnit = bindings[++i]; + if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31) + break; + gl.activeTexture(textureUnit); + gl.bindTexture(gl.TEXTURE_2D, boundValue); + break; + case gl.TEXTURE_BINDING_CUBE_MAP: + var textureUnit = bindings[++i]; + if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31) + break; + gl.activeTexture(textureUnit); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, boundValue); + break; + case gl.VIEWPORT: + gl.viewport(boundValue[0], boundValue[1], boundValue[2], boundValue[3]); + break; + case gl.BLEND: + case gl.CULL_FACE: + case gl.DEPTH_TEST: + case gl.SCISSOR_TEST: + case gl.STENCIL_TEST: + if (boundValue) { + gl.enable(binding); + } else { + gl.disable(binding); + } + break; + default: + console.log("No GL restore behavior for 0x" + binding.toString(16)); + break; + } + + if (activeTexture) { + gl.activeTexture(activeTexture); + } + } +} + +module.exports = WGLUPreserveGLState; +},{}],8:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Distortion = _dereq_('./distortion/distortion.js'); +var MathUtil = _dereq_('./math-util.js'); +var Util = _dereq_('./util.js'); + +function Device(params) { + this.width = params.width || Util.getScreenWidth(); + this.height = params.height || Util.getScreenHeight(); + this.widthMeters = params.widthMeters; + this.heightMeters = params.heightMeters; + this.bevelMeters = params.bevelMeters; +} + + +// Fallback Android device (based on Nexus 5 measurements) for use when +// we can't recognize an Android device. +var DEFAULT_ANDROID = new Device({ + widthMeters: 0.110, + heightMeters: 0.062, + bevelMeters: 0.004 +}); + +// Fallback iOS device (based on iPhone6) for use when +// we can't recognize an Android device. +var DEFAULT_IOS = new Device({ + widthMeters: 0.1038, + heightMeters: 0.0584, + bevelMeters: 0.004 +}); + + +var Viewers = { + CardboardV1: new CardboardViewer({ + id: 'CardboardV1', + label: 'Cardboard I/O 2014', + fov: 40, + interLensDistance: 0.060, + baselineLensDistance: 0.035, + screenLensDistance: 0.042, + distortionCoefficients: [0.441, 0.156], + inverseCoefficients: [-0.4410035, 0.42756155, -0.4804439, 0.5460139, + -0.58821183, 0.5733938, -0.48303202, 0.33299083, -0.17573841, + 0.0651772, -0.01488963, 0.001559834] + }), + CardboardV2: new CardboardViewer({ + id: 'CardboardV2', + label: 'Cardboard I/O 2015', + fov: 60, + interLensDistance: 0.064, + baselineLensDistance: 0.035, + screenLensDistance: 0.039, + distortionCoefficients: [0.34, 0.55], + inverseCoefficients: [-0.33836704, -0.18162185, 0.862655, -1.2462051, + 1.0560602, -0.58208317, 0.21609078, -0.05444823, 0.009177956, + -9.904169E-4, 6.183535E-5, -1.6981803E-6] + }) +}; + + +var DEFAULT_LEFT_CENTER = {x: 0.5, y: 0.5}; +var DEFAULT_RIGHT_CENTER = {x: 0.5, y: 0.5}; + +/** + * Manages information about the device and the viewer. + * + * deviceParams indicates the parameters of the device to use (generally + * obtained from dpdb.getDeviceParams()). Can be null to mean no device + * params were found. + */ +function DeviceInfo(deviceParams) { + this.viewer = Viewers.CardboardV2; + this.updateDeviceParams(deviceParams); + this.distortion = new Distortion(this.viewer.distortionCoefficients); +} + +DeviceInfo.prototype.updateDeviceParams = function(deviceParams) { + this.device = this.determineDevice_(deviceParams) || this.device; +}; + +DeviceInfo.prototype.getDevice = function() { + return this.device; +}; + +DeviceInfo.prototype.setViewer = function(viewer) { + this.viewer = viewer; + this.distortion = new Distortion(this.viewer.distortionCoefficients); +}; + +DeviceInfo.prototype.determineDevice_ = function(deviceParams) { + if (!deviceParams) { + // No parameters, so use a default. + if (Util.isIOS()) { + console.warn('Using fallback iOS device measurements.'); + return DEFAULT_IOS; + } else { + console.warn('Using fallback Android device measurements.'); + return DEFAULT_ANDROID; + } + } + + // Compute device screen dimensions based on deviceParams. + var METERS_PER_INCH = 0.0254; + var metersPerPixelX = METERS_PER_INCH / deviceParams.xdpi; + var metersPerPixelY = METERS_PER_INCH / deviceParams.ydpi; + var width = Util.getScreenWidth(); + var height = Util.getScreenHeight(); + return new Device({ + widthMeters: metersPerPixelX * width, + heightMeters: metersPerPixelY * height, + bevelMeters: deviceParams.bevelMm * 0.001, + }); +}; + +/** + * Calculates field of view for the left eye. + */ +DeviceInfo.prototype.getDistortedFieldOfViewLeftEye = function() { + var viewer = this.viewer; + var device = this.device; + var distortion = this.distortion; + + // Device.height and device.width for device in portrait mode, so transpose. + var eyeToScreenDistance = viewer.screenLensDistance; + + var outerDist = (device.widthMeters - viewer.interLensDistance) / 2; + var innerDist = viewer.interLensDistance / 2; + var bottomDist = viewer.baselineLensDistance - device.bevelMeters; + var topDist = device.heightMeters - bottomDist; + + var outerAngle = MathUtil.radToDeg * Math.atan( + distortion.distort(outerDist / eyeToScreenDistance)); + var innerAngle = MathUtil.radToDeg * Math.atan( + distortion.distort(innerDist / eyeToScreenDistance)); + var bottomAngle = MathUtil.radToDeg * Math.atan( + distortion.distort(bottomDist / eyeToScreenDistance)); + var topAngle = MathUtil.radToDeg * Math.atan( + distortion.distort(topDist / eyeToScreenDistance)); + + return { + leftDegrees: Math.min(outerAngle, viewer.fov), + rightDegrees: Math.min(innerAngle, viewer.fov), + downDegrees: Math.min(bottomAngle, viewer.fov), + upDegrees: Math.min(topAngle, viewer.fov) + }; +}; + +/** + * Calculates the tan-angles from the maximum FOV for the left eye for the + * current device and screen parameters. + */ +DeviceInfo.prototype.getLeftEyeVisibleTanAngles = function() { + var viewer = this.viewer; + var device = this.device; + var distortion = this.distortion; + + // Tan-angles from the max FOV. + var fovLeft = Math.tan(-MathUtil.degToRad * viewer.fov); + var fovTop = Math.tan(MathUtil.degToRad * viewer.fov); + var fovRight = Math.tan(MathUtil.degToRad * viewer.fov); + var fovBottom = Math.tan(-MathUtil.degToRad * viewer.fov); + // Viewport size. + var halfWidth = device.widthMeters / 4; + var halfHeight = device.heightMeters / 2; + // Viewport center, measured from left lens position. + var verticalLensOffset = (viewer.baselineLensDistance - device.bevelMeters - halfHeight); + var centerX = viewer.interLensDistance / 2 - halfWidth; + var centerY = -verticalLensOffset; + var centerZ = viewer.screenLensDistance; + // Tan-angles of the viewport edges, as seen through the lens. + var screenLeft = distortion.distort((centerX - halfWidth) / centerZ); + var screenTop = distortion.distort((centerY + halfHeight) / centerZ); + var screenRight = distortion.distort((centerX + halfWidth) / centerZ); + var screenBottom = distortion.distort((centerY - halfHeight) / centerZ); + // Compare the two sets of tan-angles and take the value closer to zero on each side. + var result = new Float32Array(4); + result[0] = Math.max(fovLeft, screenLeft); + result[1] = Math.min(fovTop, screenTop); + result[2] = Math.min(fovRight, screenRight); + result[3] = Math.max(fovBottom, screenBottom); + return result; +}; + +/** + * Calculates the tan-angles from the maximum FOV for the left eye for the + * current device and screen parameters, assuming no lenses. + */ +DeviceInfo.prototype.getLeftEyeNoLensTanAngles = function() { + var viewer = this.viewer; + var device = this.device; + var distortion = this.distortion; + + var result = new Float32Array(4); + // Tan-angles from the max FOV. + var fovLeft = distortion.distortInverse(Math.tan(-MathUtil.degToRad * viewer.fov)); + var fovTop = distortion.distortInverse(Math.tan(MathUtil.degToRad * viewer.fov)); + var fovRight = distortion.distortInverse(Math.tan(MathUtil.degToRad * viewer.fov)); + var fovBottom = distortion.distortInverse(Math.tan(-MathUtil.degToRad * viewer.fov)); + // Viewport size. + var halfWidth = device.widthMeters / 4; + var halfHeight = device.heightMeters / 2; + // Viewport center, measured from left lens position. + var verticalLensOffset = (viewer.baselineLensDistance - device.bevelMeters - halfHeight); + var centerX = viewer.interLensDistance / 2 - halfWidth; + var centerY = -verticalLensOffset; + var centerZ = viewer.screenLensDistance; + // Tan-angles of the viewport edges, as seen through the lens. + var screenLeft = (centerX - halfWidth) / centerZ; + var screenTop = (centerY + halfHeight) / centerZ; + var screenRight = (centerX + halfWidth) / centerZ; + var screenBottom = (centerY - halfHeight) / centerZ; + // Compare the two sets of tan-angles and take the value closer to zero on each side. + result[0] = Math.max(fovLeft, screenLeft); + result[1] = Math.min(fovTop, screenTop); + result[2] = Math.min(fovRight, screenRight); + result[3] = Math.max(fovBottom, screenBottom); + return result; +}; + +/** + * Calculates the screen rectangle visible from the left eye for the + * current device and screen parameters. + */ +DeviceInfo.prototype.getLeftEyeVisibleScreenRect = function(undistortedFrustum) { + var viewer = this.viewer; + var device = this.device; + + var dist = viewer.screenLensDistance; + var eyeX = (device.widthMeters - viewer.interLensDistance) / 2; + var eyeY = viewer.baselineLensDistance - device.bevelMeters; + var left = (undistortedFrustum[0] * dist + eyeX) / device.widthMeters; + var top = (undistortedFrustum[1] * dist + eyeY) / device.heightMeters; + var right = (undistortedFrustum[2] * dist + eyeX) / device.widthMeters; + var bottom = (undistortedFrustum[3] * dist + eyeY) / device.heightMeters; + return { + x: left, + y: bottom, + width: right - left, + height: top - bottom + }; +}; + +DeviceInfo.prototype.getFieldOfViewLeftEye = function(opt_isUndistorted) { + return opt_isUndistorted ? this.getUndistortedFieldOfViewLeftEye() : + this.getDistortedFieldOfViewLeftEye(); +}; + +DeviceInfo.prototype.getFieldOfViewRightEye = function(opt_isUndistorted) { + var fov = this.getFieldOfViewLeftEye(opt_isUndistorted); + return { + leftDegrees: fov.rightDegrees, + rightDegrees: fov.leftDegrees, + upDegrees: fov.upDegrees, + downDegrees: fov.downDegrees + }; +}; + +/** + * Calculates undistorted field of view for the left eye. + */ +DeviceInfo.prototype.getUndistortedFieldOfViewLeftEye = function() { + var p = this.getUndistortedParams_(); + + return { + leftDegrees: MathUtil.radToDeg * Math.atan(p.outerDist), + rightDegrees: MathUtil.radToDeg * Math.atan(p.innerDist), + downDegrees: MathUtil.radToDeg * Math.atan(p.bottomDist), + upDegrees: MathUtil.radToDeg * Math.atan(p.topDist) + }; +}; + +DeviceInfo.prototype.getUndistortedViewportLeftEye = function() { + var p = this.getUndistortedParams_(); + var viewer = this.viewer; + var device = this.device; + + // Distances stored in local variables are in tan-angle units unless otherwise + // noted. + var eyeToScreenDistance = viewer.screenLensDistance; + var screenWidth = device.widthMeters / eyeToScreenDistance; + var screenHeight = device.heightMeters / eyeToScreenDistance; + var xPxPerTanAngle = device.width / screenWidth; + var yPxPerTanAngle = device.height / screenHeight; + + var x = Math.round((p.eyePosX - p.outerDist) * xPxPerTanAngle); + var y = Math.round((p.eyePosY - p.bottomDist) * yPxPerTanAngle); + return { + x: x, + y: y, + width: Math.round((p.eyePosX + p.innerDist) * xPxPerTanAngle) - x, + height: Math.round((p.eyePosY + p.topDist) * yPxPerTanAngle) - y + }; +}; + +DeviceInfo.prototype.getUndistortedParams_ = function() { + var viewer = this.viewer; + var device = this.device; + var distortion = this.distortion; + + // Most of these variables in tan-angle units. + var eyeToScreenDistance = viewer.screenLensDistance; + var halfLensDistance = viewer.interLensDistance / 2 / eyeToScreenDistance; + var screenWidth = device.widthMeters / eyeToScreenDistance; + var screenHeight = device.heightMeters / eyeToScreenDistance; + + var eyePosX = screenWidth / 2 - halfLensDistance; + var eyePosY = (viewer.baselineLensDistance - device.bevelMeters) / eyeToScreenDistance; + + var maxFov = viewer.fov; + var viewerMax = distortion.distortInverse(Math.tan(MathUtil.degToRad * maxFov)); + var outerDist = Math.min(eyePosX, viewerMax); + var innerDist = Math.min(halfLensDistance, viewerMax); + var bottomDist = Math.min(eyePosY, viewerMax); + var topDist = Math.min(screenHeight - eyePosY, viewerMax); + + return { + outerDist: outerDist, + innerDist: innerDist, + topDist: topDist, + bottomDist: bottomDist, + eyePosX: eyePosX, + eyePosY: eyePosY + }; +}; + + +function CardboardViewer(params) { + // A machine readable ID. + this.id = params.id; + // A human readable label. + this.label = params.label; + + // Field of view in degrees (per side). + this.fov = params.fov; + + // Distance between lens centers in meters. + this.interLensDistance = params.interLensDistance; + // Distance between viewer baseline and lens center in meters. + this.baselineLensDistance = params.baselineLensDistance; + // Screen-to-lens distance in meters. + this.screenLensDistance = params.screenLensDistance; + + // Distortion coefficients. + this.distortionCoefficients = params.distortionCoefficients; + // Inverse distortion coefficients. + // TODO: Calculate these from distortionCoefficients in the future. + this.inverseCoefficients = params.inverseCoefficients; +} + +// Export viewer information. +DeviceInfo.Viewers = Viewers; +module.exports = DeviceInfo; + +},{"./distortion/distortion.js":10,"./math-util.js":14,"./util.js":22}],9:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var VRDisplay = _dereq_('./base.js').VRDisplay; +var HMDVRDevice = _dereq_('./base.js').HMDVRDevice; +var PositionSensorVRDevice = _dereq_('./base.js').PositionSensorVRDevice; + +/** + * Wraps a VRDisplay and exposes it as a HMDVRDevice + */ +function VRDisplayHMDDevice(display) { + this.display = display; + + this.hardwareUnitId = display.displayId; + this.deviceId = 'webvr-polyfill:HMD:' + display.displayId; + this.deviceName = display.displayName + ' (HMD)'; +} +VRDisplayHMDDevice.prototype = new HMDVRDevice(); + +VRDisplayHMDDevice.prototype.getEyeParameters = function(whichEye) { + var eyeParameters = this.display.getEyeParameters(whichEye); + + return { + currentFieldOfView: eyeParameters.fieldOfView, + maximumFieldOfView: eyeParameters.fieldOfView, + minimumFieldOfView: eyeParameters.fieldOfView, + recommendedFieldOfView: eyeParameters.fieldOfView, + eyeTranslation: { x: eyeParameters.offset[0], y: eyeParameters.offset[1], z: eyeParameters.offset[2] }, + renderRect: { + x: (whichEye == 'right') ? eyeParameters.renderWidth : 0, + y: 0, + width: eyeParameters.renderWidth, + height: eyeParameters.renderHeight + } + }; +}; + +VRDisplayHMDDevice.prototype.setFieldOfView = + function(opt_fovLeft, opt_fovRight, opt_zNear, opt_zFar) { + // Not supported. getEyeParameters reports that the min, max, and recommended + // FoV is all the same, so no adjustment can be made. +}; + +// TODO: Need to hook requestFullscreen to see if a wrapped VRDisplay was passed +// in as an option. If so we should prevent the default fullscreen behavior and +// call VRDisplay.requestPresent instead. + +/** + * Wraps a VRDisplay and exposes it as a PositionSensorVRDevice + */ +function VRDisplayPositionSensorDevice(display) { + this.display = display; + + this.hardwareUnitId = display.displayId; + this.deviceId = 'webvr-polyfill:PositionSensor: ' + display.displayId; + this.deviceName = display.displayName + ' (PositionSensor)'; +} +VRDisplayPositionSensorDevice.prototype = new PositionSensorVRDevice(); + +VRDisplayPositionSensorDevice.prototype.getState = function() { + var pose = this.display.getPose(); + return { + position: pose.position ? { x: pose.position[0], y: pose.position[1], z: pose.position[2] } : null, + orientation: pose.orientation ? { x: pose.orientation[0], y: pose.orientation[1], z: pose.orientation[2], w: pose.orientation[3] } : null, + linearVelocity: null, + linearAcceleration: null, + angularVelocity: null, + angularAcceleration: null + }; +}; + +VRDisplayPositionSensorDevice.prototype.resetState = function() { + return this.positionDevice.resetPose(); +}; + + +module.exports.VRDisplayHMDDevice = VRDisplayHMDDevice; +module.exports.VRDisplayPositionSensorDevice = VRDisplayPositionSensorDevice; + + +},{"./base.js":3}],10:[function(_dereq_,module,exports){ +/** + * TODO(smus): Implement coefficient inversion. + */ +function Distortion(coefficients) { + this.coefficients = coefficients; +} + +/** + * Calculates the inverse distortion for a radius. + *

      + * Allows to compute the original undistorted radius from a distorted one. + * See also getApproximateInverseDistortion() for a faster but potentially + * less accurate method. + * + * @param {Number} radius Distorted radius from the lens center in tan-angle units. + * @return {Number} The undistorted radius in tan-angle units. + */ +Distortion.prototype.distortInverse = function(radius) { + // Secant method. + var r0 = 0; + var r1 = 1; + var dr0 = radius - this.distort(r0); + while (Math.abs(r1 - r0) > 0.0001 /** 0.1mm */) { + var dr1 = radius - this.distort(r1); + var r2 = r1 - dr1 * ((r1 - r0) / (dr1 - dr0)); + r0 = r1; + r1 = r2; + dr0 = dr1; + } + return r1; +}; + +/** + * Distorts a radius by its distortion factor from the center of the lenses. + * + * @param {Number} radius Radius from the lens center in tan-angle units. + * @return {Number} The distorted radius in tan-angle units. + */ +Distortion.prototype.distort = function(radius) { + var r2 = radius * radius; + var ret = 0; + for (var i = 0; i < this.coefficients.length; i++) { + ret = r2 * (ret + this.coefficients[i]); + } + return (ret + 1) * radius; +}; + +// Functions below roughly ported from +// https://github.com/googlesamples/cardboard-unity/blob/master/Cardboard/Scripts/CardboardProfile.cs#L412 + +// Solves a small linear equation via destructive gaussian +// elimination and back substitution. This isn't generic numeric +// code, it's just a quick hack to work with the generally +// well-behaved symmetric matrices for least-squares fitting. +// Not intended for reuse. +// +// @param a Input positive definite symmetrical matrix. Destroyed +// during calculation. +// @param y Input right-hand-side values. Destroyed during calculation. +// @return Resulting x value vector. +// +Distortion.prototype.solveLinear_ = function(a, y) { + var n = a.length; + + // Gaussian elimination (no row exchange) to triangular matrix. + // The input matrix is a A^T A product which should be a positive + // definite symmetrical matrix, and if I remember my linear + // algebra right this implies that the pivots will be nonzero and + // calculations sufficiently accurate without needing row + // exchange. + for (var j = 0; j < n - 1; ++j) { + for (var k = j + 1; k < n; ++k) { + var p = a[j][k] / a[j][j]; + for (var i = j + 1; i < n; ++i) { + a[i][k] -= p * a[i][j]; + } + y[k] -= p * y[j]; + } + } + // From this point on, only the matrix elements a[j][i] with i>=j are + // valid. The elimination doesn't fill in eliminated 0 values. + + var x = new Array(n); + + // Back substitution. + for (var j = n - 1; j >= 0; --j) { + var v = y[j]; + for (var i = j + 1; i < n; ++i) { + v -= a[i][j] * x[i]; + } + x[j] = v / a[j][j]; + } + + return x; +}; + +// Solves a least-squares matrix equation. Given the equation A * x = y, calculate the +// least-square fit x = inverse(A * transpose(A)) * transpose(A) * y. The way this works +// is that, while A is typically not a square matrix (and hence not invertible), A * transpose(A) +// is always square. That is: +// A * x = y +// transpose(A) * (A * x) = transpose(A) * y <- multiply both sides by transpose(A) +// (transpose(A) * A) * x = transpose(A) * y <- associativity +// x = inverse(transpose(A) * A) * transpose(A) * y <- solve for x +// Matrix A's row count (first index) must match y's value count. A's column count (second index) +// determines the length of the result vector x. +Distortion.prototype.solveLeastSquares_ = function(matA, vecY) { + var i, j, k, sum; + var numSamples = matA.length; + var numCoefficients = matA[0].length; + if (numSamples != vecY.Length) { + throw new Error("Matrix / vector dimension mismatch"); + } + + // Calculate transpose(A) * A + var matATA = new Array(numCoefficients); + for (k = 0; k < numCoefficients; ++k) { + matATA[k] = new Array(numCoefficients); + for (j = 0; j < numCoefficients; ++j) { + sum = 0; + for (i = 0; i < numSamples; ++i) { + sum += matA[j][i] * matA[k][i]; + } + matATA[k][j] = sum; + } + } + + // Calculate transpose(A) * y + var vecATY = new Array(numCoefficients); + for (j = 0; j < numCoefficients; ++j) { + sum = 0; + for (i = 0; i < numSamples; ++i) { + sum += matA[j][i] * vecY[i]; + } + vecATY[j] = sum; + } + + // Now solve (A * transpose(A)) * x = transpose(A) * y. + return this.solveLinear_(matATA, vecATY); +}; + +/// Calculates an approximate inverse to the given radial distortion parameters. +Distortion.prototype.approximateInverse = function(maxRadius, numSamples) { + maxRadius = maxRadius || 1; + numSamples = numSamples || 100; + var numCoefficients = 6; + var i, j; + + // R + K1*R^3 + K2*R^5 = r, with R = rp = distort(r) + // Repeating for numSamples: + // [ R0^3, R0^5 ] * [ K1 ] = [ r0 - R0 ] + // [ R1^3, R1^5 ] [ K2 ] [ r1 - R1 ] + // [ R2^3, R2^5 ] [ r2 - R2 ] + // [ etc... ] [ etc... ] + // That is: + // matA * [K1, K2] = y + // Solve: + // [K1, K2] = inverse(transpose(matA) * matA) * transpose(matA) * y + var matA = new Array(numCoefficients); + for (j = 0; j < numCoefficients; ++j) { + matA[j] = new Array(numSamples); + } + var vecY = new Array(numSamples); + + for (i = 0; i < numSamples; ++i) { + var r = maxRadius * (i + 1) / numSamples; + var rp = this.distort(r); + var v = rp; + for (j = 0; j < numCoefficients; ++j) { + v *= rp * rp; + matA[j][i] = v; + } + vecY[i] = r - rp; + } + + var inverseCoefficients = this.solveLeastSquares_(matA, vecY); + + return new Distortion(inverseCoefficients); +}; + +module.exports = Distortion; + +},{}],11:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * DPDB cache. + */ +var DPDB_CACHE = { + "format": 1, + "last_updated": "2016-01-20T00:18:35Z", + "devices": [ + + { + "type": "android", + "rules": [ + { "mdmh": "asus/*/Nexus 7/*" }, + { "ua": "Nexus 7" } + ], + "dpi": [ 320.8, 323.0 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "asus/*/ASUS_Z00AD/*" }, + { "ua": "ASUS_Z00AD" } + ], + "dpi": [ 403.0, 404.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Google//Pixel XL/" }, + { "ua": "Pixel XL" } + ], + "dpi": [537.9, 533], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Google//Pixel/" }, + { "ua": "Pixel" } + ], + "dpi": [432.6, 436.7], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "HTC/*/HTC6435LVW/*" }, + { "ua": "HTC6435LVW" } + ], + "dpi": [ 449.7, 443.3 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "HTC/*/HTC One XL/*" }, + { "ua": "HTC One XL" } + ], + "dpi": [ 315.3, 314.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "htc/*/Nexus 9/*" }, + { "ua": "Nexus 9" } + ], + "dpi": 289.0, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "HTC/*/HTC One M9/*" }, + { "ua": "HTC One M9" } + ], + "dpi": [ 442.5, 443.3 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "HTC/*/HTC One_M8/*" }, + { "ua": "HTC One_M8" } + ], + "dpi": [ 449.7, 447.4 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "HTC/*/HTC One/*" }, + { "ua": "HTC One" } + ], + "dpi": 472.8, + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Huawei/*/Nexus 6P/*" }, + { "ua": "Nexus 6P" } + ], + "dpi": [ 515.1, 518.0 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/Nexus 5X/*" }, + { "ua": "Nexus 5X" } + ], + "dpi": [ 422.0, 419.9 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LGMS345/*" }, + { "ua": "LGMS345" } + ], + "dpi": [ 221.7, 219.1 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LG-D800/*" }, + { "ua": "LG-D800" } + ], + "dpi": [ 422.0, 424.1 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LG-D850/*" }, + { "ua": "LG-D850" } + ], + "dpi": [ 537.9, 541.9 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/VS985 4G/*" }, + { "ua": "VS985 4G" } + ], + "dpi": [ 537.9, 535.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/Nexus 5/*" }, + { "ua": "Nexus 5 " } + ], + "dpi": [ 442.4, 444.8 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/Nexus 4/*" }, + { "ua": "Nexus 4" } + ], + "dpi": [ 319.8, 318.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LG-P769/*" }, + { "ua": "LG-P769" } + ], + "dpi": [ 240.6, 247.5 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LGMS323/*" }, + { "ua": "LGMS323" } + ], + "dpi": [ 206.6, 204.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "LGE/*/LGLS996/*" }, + { "ua": "LGLS996" } + ], + "dpi": [ 403.4, 401.5 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Micromax/*/4560MMX/*" }, + { "ua": "4560MMX" } + ], + "dpi": [ 240.0, 219.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Micromax/*/A250/*" }, + { "ua": "Micromax A250" } + ], + "dpi": [ 480.0, 446.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Micromax/*/Micromax AQ4501/*" }, + { "ua": "Micromax AQ4501" } + ], + "dpi": 240.0, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/DROID RAZR/*" }, + { "ua": "DROID RAZR" } + ], + "dpi": [ 368.1, 256.7 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT830C/*" }, + { "ua": "XT830C" } + ], + "dpi": [ 254.0, 255.9 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1021/*" }, + { "ua": "XT1021" } + ], + "dpi": [ 254.0, 256.7 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1023/*" }, + { "ua": "XT1023" } + ], + "dpi": [ 254.0, 256.7 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1028/*" }, + { "ua": "XT1028" } + ], + "dpi": [ 326.6, 327.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1034/*" }, + { "ua": "XT1034" } + ], + "dpi": [ 326.6, 328.4 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1053/*" }, + { "ua": "XT1053" } + ], + "dpi": [ 315.3, 316.1 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1562/*" }, + { "ua": "XT1562" } + ], + "dpi": [ 403.4, 402.7 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/Nexus 6/*" }, + { "ua": "Nexus 6 " } + ], + "dpi": [ 494.3, 489.7 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1063/*" }, + { "ua": "XT1063" } + ], + "dpi": [ 295.0, 296.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1064/*" }, + { "ua": "XT1064" } + ], + "dpi": [ 295.0, 295.6 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1092/*" }, + { "ua": "XT1092" } + ], + "dpi": [ 422.0, 424.1 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/XT1095/*" }, + { "ua": "XT1095" } + ], + "dpi": [ 422.0, 423.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "motorola/*/G4/*" }, + { "ua": "Moto G (4)" } + ], + "dpi": 401.0, + "bw": 4, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "OnePlus/*/A0001/*" }, + { "ua": "A0001" } + ], + "dpi": [ 403.4, 401.0 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "OnePlus/*/ONE E1005/*" }, + { "ua": "ONE E1005" } + ], + "dpi": [ 442.4, 441.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "OnePlus/*/ONE A2005/*" }, + { "ua": "ONE A2005" } + ], + "dpi": [ 391.9, 405.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "OPPO/*/X909/*" }, + { "ua": "X909" } + ], + "dpi": [ 442.4, 444.1 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9082/*" }, + { "ua": "GT-I9082" } + ], + "dpi": [ 184.7, 185.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G360P/*" }, + { "ua": "SM-G360P" } + ], + "dpi": [ 196.7, 205.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/Nexus S/*" }, + { "ua": "Nexus S" } + ], + "dpi": [ 234.5, 229.8 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9300/*" }, + { "ua": "GT-I9300" } + ], + "dpi": [ 304.8, 303.9 ], + "bw": 5, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-T230NU/*" }, + { "ua": "SM-T230NU" } + ], + "dpi": 216.0, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SGH-T399/*" }, + { "ua": "SGH-T399" } + ], + "dpi": [ 217.7, 231.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-N9005/*" }, + { "ua": "SM-N9005" } + ], + "dpi": [ 386.4, 387.0 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SAMSUNG-SM-N900A/*" }, + { "ua": "SAMSUNG-SM-N900A" } + ], + "dpi": [ 386.4, 387.7 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9500/*" }, + { "ua": "GT-I9500" } + ], + "dpi": [ 442.5, 443.3 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9505/*" }, + { "ua": "GT-I9505" } + ], + "dpi": 439.4, + "bw": 4, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G900F/*" }, + { "ua": "SM-G900F" } + ], + "dpi": [ 415.6, 431.6 ], + "bw": 5, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G900M/*" }, + { "ua": "SM-G900M" } + ], + "dpi": [ 415.6, 431.6 ], + "bw": 5, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G800F/*" }, + { "ua": "SM-G800F" } + ], + "dpi": 326.8, + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G906S/*" }, + { "ua": "SM-G906S" } + ], + "dpi": [ 562.7, 572.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9300/*" }, + { "ua": "GT-I9300" } + ], + "dpi": [ 306.7, 304.8 ], + "bw": 5, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-T535/*" }, + { "ua": "SM-T535" } + ], + "dpi": [ 142.6, 136.4 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-N920C/*" }, + { "ua": "SM-N920C" } + ], + "dpi": [ 515.1, 518.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-N920W8/*" }, + { "ua": "SM-N920W8" } + ], + "dpi": [ 515.1, 518.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9300I/*" }, + { "ua": "GT-I9300I" } + ], + "dpi": [ 304.8, 305.8 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-I9195/*" }, + { "ua": "GT-I9195" } + ], + "dpi": [ 249.4, 256.7 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SPH-L520/*" }, + { "ua": "SPH-L520" } + ], + "dpi": [ 249.4, 255.9 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SAMSUNG-SGH-I717/*" }, + { "ua": "SAMSUNG-SGH-I717" } + ], + "dpi": 285.8, + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SPH-D710/*" }, + { "ua": "SPH-D710" } + ], + "dpi": [ 217.7, 204.2 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/GT-N7100/*" }, + { "ua": "GT-N7100" } + ], + "dpi": 265.1, + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SCH-I605/*" }, + { "ua": "SCH-I605" } + ], + "dpi": 265.1, + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/Galaxy Nexus/*" }, + { "ua": "Galaxy Nexus" } + ], + "dpi": [ 315.3, 314.2 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-N910H/*" }, + { "ua": "SM-N910H" } + ], + "dpi": [ 515.1, 518.0 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-N910C/*" }, + { "ua": "SM-N910C" } + ], + "dpi": [ 515.2, 520.2 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G130M/*" }, + { "ua": "SM-G130M" } + ], + "dpi": [ 165.9, 164.8 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G928I/*" }, + { "ua": "SM-G928I" } + ], + "dpi": [ 515.1, 518.4 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G920F/*" }, + { "ua": "SM-G920F" } + ], + "dpi": 580.6, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G920P/*" }, + { "ua": "SM-G920P" } + ], + "dpi": [ 522.5, 577.0 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G925F/*" }, + { "ua": "SM-G925F" } + ], + "dpi": 580.6, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G925V/*" }, + { "ua": "SM-G925V" } + ], + "dpi": [ 522.5, 576.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "samsung/*/SM-G935F/*" }, + { "ua": "SM-G935F" } + ], + "dpi": 534, + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Sony/*/C6903/*" }, + { "ua": "C6903" } + ], + "dpi": [ 442.5, 443.3 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Sony/*/D6653/*" }, + { "ua": "D6653" } + ], + "dpi": [ 428.6, 427.6 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Sony/*/E6653/*" }, + { "ua": "E6653" } + ], + "dpi": [ 428.6, 425.7 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Sony/*/E6853/*" }, + { "ua": "E6853" } + ], + "dpi": [ 403.4, 401.9 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "Sony/*/SGP321/*" }, + { "ua": "SGP321" } + ], + "dpi": [ 224.7, 224.1 ], + "bw": 3, + "ac": 500 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "TCT/*/ALCATEL ONE TOUCH Fierce/*" }, + { "ua": "ALCATEL ONE TOUCH Fierce" } + ], + "dpi": [ 240.0, 247.5 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "THL/*/thl 5000/*" }, + { "ua": "thl 5000" } + ], + "dpi": [ 480.0, 443.3 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "android", + "rules": [ + { "mdmh": "ZTE/*/ZTE Blade L2/*" }, + { "ua": "ZTE Blade L2" } + ], + "dpi": 240.0, + "bw": 3, + "ac": 500 + }, + + { + "type": "ios", + "rules": [ { "res": [ 640, 960 ] } ], + "dpi": [ 325.1, 328.4 ], + "bw": 4, + "ac": 1000 + }, + + { + "type": "ios", + "rules": [ { "res": [ 640, 1136 ] } ], + "dpi": [ 317.1, 320.2 ], + "bw": 3, + "ac": 1000 + }, + + { + "type": "ios", + "rules": [ { "res": [ 750, 1334 ] } ], + "dpi": 326.4, + "bw": 4, + "ac": 1000 + }, + + { + "type": "ios", + "rules": [ { "res": [ 1242, 2208 ] } ], + "dpi": [ 453.6, 458.4 ], + "bw": 4, + "ac": 1000 + }, + + { + "type": "ios", + "rules": [ { "res": [ 1125, 2001 ] } ], + "dpi": [ 410.9, 415.4 ], + "bw": 4, + "ac": 1000 + } +]}; + +module.exports = DPDB_CACHE; + +},{}],12:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Offline cache of the DPDB, to be used until we load the online one (and +// as a fallback in case we can't load the online one). +var DPDB_CACHE = _dereq_('./dpdb-cache.js'); +var Util = _dereq_('../util.js'); + +// Online DPDB URL. +var ONLINE_DPDB_URL = 'https://storage.googleapis.com/cardboard-dpdb/dpdb.json'; + +/** + * Calculates device parameters based on the DPDB (Device Parameter Database). + * Initially, uses the cached DPDB values. + * + * If fetchOnline == true, then this object tries to fetch the online version + * of the DPDB and updates the device info if a better match is found. + * Calls the onDeviceParamsUpdated callback when there is an update to the + * device information. + */ +function Dpdb(fetchOnline, onDeviceParamsUpdated) { + // Start with the offline DPDB cache while we are loading the real one. + this.dpdb = DPDB_CACHE; + + // Calculate device params based on the offline version of the DPDB. + this.recalculateDeviceParams_(); + + // XHR to fetch online DPDB file, if requested. + if (fetchOnline) { + // Set the callback. + this.onDeviceParamsUpdated = onDeviceParamsUpdated; + + var xhr = new XMLHttpRequest(); + var obj = this; + xhr.open('GET', ONLINE_DPDB_URL, true); + xhr.addEventListener('load', function() { + obj.loading = false; + if (xhr.status >= 200 && xhr.status <= 299) { + // Success. + obj.dpdb = JSON.parse(xhr.response); + obj.recalculateDeviceParams_(); + } else { + // Error loading the DPDB. + console.error('Error loading online DPDB!'); + } + }); + xhr.send(); + } +} + +// Returns the current device parameters. +Dpdb.prototype.getDeviceParams = function() { + return this.deviceParams; +}; + +// Recalculates this device's parameters based on the DPDB. +Dpdb.prototype.recalculateDeviceParams_ = function() { + var newDeviceParams = this.calcDeviceParams_(); + if (newDeviceParams) { + this.deviceParams = newDeviceParams; + // Invoke callback, if it is set. + if (this.onDeviceParamsUpdated) { + this.onDeviceParamsUpdated(this.deviceParams); + } + } else { + console.error('Failed to recalculate device parameters.'); + } +}; + +// Returns a DeviceParams object that represents the best guess as to this +// device's parameters. Can return null if the device does not match any +// known devices. +Dpdb.prototype.calcDeviceParams_ = function() { + var db = this.dpdb; // shorthand + if (!db) { + console.error('DPDB not available.'); + return null; + } + if (db.format != 1) { + console.error('DPDB has unexpected format version.'); + return null; + } + if (!db.devices || !db.devices.length) { + console.error('DPDB does not have a devices section.'); + return null; + } + + // Get the actual user agent and screen dimensions in pixels. + var userAgent = navigator.userAgent || navigator.vendor || window.opera; + var width = Util.getScreenWidth(); + var height = Util.getScreenHeight(); + + if (!db.devices) { + console.error('DPDB has no devices section.'); + return null; + } + + for (var i = 0; i < db.devices.length; i++) { + var device = db.devices[i]; + if (!device.rules) { + console.warn('Device[' + i + '] has no rules section.'); + continue; + } + + if (device.type != 'ios' && device.type != 'android') { + console.warn('Device[' + i + '] has invalid type.'); + continue; + } + + // See if this device is of the appropriate type. + if (Util.isIOS() != (device.type == 'ios')) continue; + + // See if this device matches any of the rules: + var matched = false; + for (var j = 0; j < device.rules.length; j++) { + var rule = device.rules[j]; + if (this.matchRule_(rule, userAgent, width, height)) { + matched = true; + break; + } + } + if (!matched) continue; + + // device.dpi might be an array of [ xdpi, ydpi] or just a scalar. + var xdpi = device.dpi[0] || device.dpi; + var ydpi = device.dpi[1] || device.dpi; + + return new DeviceParams({ xdpi: xdpi, ydpi: ydpi, bevelMm: device.bw }); + } + + console.warn('No DPDB device match.'); + return null; +}; + +Dpdb.prototype.matchRule_ = function(rule, ua, screenWidth, screenHeight) { + // We can only match 'ua' and 'res' rules, not other types like 'mdmh' + // (which are meant for native platforms). + if (!rule.ua && !rule.res) return false; + + // If our user agent string doesn't contain the indicated user agent string, + // the match fails. + if (rule.ua && ua.indexOf(rule.ua) < 0) return false; + + // If the rule specifies screen dimensions that don't correspond to ours, + // the match fails. + if (rule.res) { + if (!rule.res[0] || !rule.res[1]) return false; + var resX = rule.res[0]; + var resY = rule.res[1]; + // Compare min and max so as to make the order not matter, i.e., it should + // be true that 640x480 == 480x640. + if (Math.min(screenWidth, screenHeight) != Math.min(resX, resY) || + (Math.max(screenWidth, screenHeight) != Math.max(resX, resY))) { + return false; + } + } + + return true; +} + +function DeviceParams(params) { + this.xdpi = params.xdpi; + this.ydpi = params.ydpi; + this.bevelMm = params.bevelMm; +} + +module.exports = Dpdb; + +},{"../util.js":22,"./dpdb-cache.js":11}],13:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var Util = _dereq_('./util.js'); +var WebVRPolyfill = _dereq_('./webvr-polyfill.js').WebVRPolyfill; + +// Initialize a WebVRConfig just in case. +window.WebVRConfig = Util.extend({ + // Forces availability of VR mode, even for non-mobile devices. + FORCE_ENABLE_VR: false, + + // Complementary filter coefficient. 0 for accelerometer, 1 for gyro. + K_FILTER: 0.98, + + // How far into the future to predict during fast motion (in seconds). + PREDICTION_TIME_S: 0.040, + + // Flag to enable touch panner. In case you have your own touch controls. + TOUCH_PANNER_DISABLED: true, + + // Flag to disabled the UI in VR Mode. + CARDBOARD_UI_DISABLED: false, // Default: false + + // Flag to disable the instructions to rotate your device. + ROTATE_INSTRUCTIONS_DISABLED: false, // Default: false. + + // Enable yaw panning only, disabling roll and pitch. This can be useful + // for panoramas with nothing interesting above or below. + YAW_ONLY: false, + + // To disable keyboard and mouse controls, if you want to use your own + // implementation. + MOUSE_KEYBOARD_CONTROLS_DISABLED: false, + + // Prevent the polyfill from initializing immediately. Requires the app + // to call InitializeWebVRPolyfill() before it can be used. + DEFER_INITIALIZATION: false, + + // Enable the deprecated version of the API (navigator.getVRDevices). + ENABLE_DEPRECATED_API: false, + + // Scales the recommended buffer size reported by WebVR, which can improve + // performance. + // UPDATE(2016-05-03): Setting this to 0.5 by default since 1.0 does not + // perform well on many mobile devices. + BUFFER_SCALE: 0.5, + + // Allow VRDisplay.submitFrame to change gl bindings, which is more + // efficient if the application code will re-bind its resources on the + // next frame anyway. This has been seen to cause rendering glitches with + // THREE.js. + // Dirty bindings include: gl.FRAMEBUFFER_BINDING, gl.CURRENT_PROGRAM, + // gl.ARRAY_BUFFER_BINDING, gl.ELEMENT_ARRAY_BUFFER_BINDING, + // and gl.TEXTURE_BINDING_2D for texture unit 0. + DIRTY_SUBMIT_FRAME_BINDINGS: false, + + // When set to true, this will cause a polyfilled VRDisplay to always be + // appended to the list returned by navigator.getVRDisplays(), even if that + // list includes a native VRDisplay. + ALWAYS_APPEND_POLYFILL_DISPLAY: false +}, window.WebVRConfig); + +if (!window.WebVRConfig.DEFER_INITIALIZATION) { + new WebVRPolyfill(); +} else { + window.InitializeWebVRPolyfill = function() { + new WebVRPolyfill(); + } +} + +},{"./util.js":22,"./webvr-polyfill.js":25}],14:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var MathUtil = window.MathUtil || {}; + +MathUtil.degToRad = Math.PI / 180; +MathUtil.radToDeg = 180 / Math.PI; + +// Some minimal math functionality borrowed from THREE.Math and stripped down +// for the purposes of this library. + + +MathUtil.Vector2 = function ( x, y ) { + this.x = x || 0; + this.y = y || 0; +}; + +MathUtil.Vector2.prototype = { + constructor: MathUtil.Vector2, + + set: function ( x, y ) { + this.x = x; + this.y = y; + + return this; + }, + + copy: function ( v ) { + this.x = v.x; + this.y = v.y; + + return this; + }, + + subVectors: function ( a, b ) { + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + }, +}; + +MathUtil.Vector3 = function ( x, y, z ) { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; +}; + +MathUtil.Vector3.prototype = { + constructor: MathUtil.Vector3, + + set: function ( x, y, z ) { + this.x = x; + this.y = y; + this.z = z; + + return this; + }, + + copy: function ( v ) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + }, + + length: function () { + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + }, + + normalize: function () { + var scalar = this.length(); + + if ( scalar !== 0 ) { + var invScalar = 1 / scalar; + + this.multiplyScalar(invScalar); + } else { + this.x = 0; + this.y = 0; + this.z = 0; + } + + return this; + }, + + multiplyScalar: function ( scalar ) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + }, + + applyQuaternion: function ( q ) { + var x = this.x; + var y = this.y; + var z = this.z; + + var qx = q.x; + var qy = q.y; + var qz = q.z; + var qw = q.w; + + // calculate quat * vector + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return this; + }, + + dot: function ( v ) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }, + + crossVectors: function ( a, b ) { + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + }, +}; + +MathUtil.Quaternion = function ( x, y, z, w ) { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = ( w !== undefined ) ? w : 1; +}; + +MathUtil.Quaternion.prototype = { + constructor: MathUtil.Quaternion, + + set: function ( x, y, z, w ) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + }, + + copy: function ( quaternion ) { + this.x = quaternion.x; + this.y = quaternion.y; + this.z = quaternion.z; + this.w = quaternion.w; + + return this; + }, + + setFromEulerXYZ: function( x, y, z ) { + var c1 = Math.cos( x / 2 ); + var c2 = Math.cos( y / 2 ); + var c3 = Math.cos( z / 2 ); + var s1 = Math.sin( x / 2 ); + var s2 = Math.sin( y / 2 ); + var s3 = Math.sin( z / 2 ); + + this.x = s1 * c2 * c3 + c1 * s2 * s3; + this.y = c1 * s2 * c3 - s1 * c2 * s3; + this.z = c1 * c2 * s3 + s1 * s2 * c3; + this.w = c1 * c2 * c3 - s1 * s2 * s3; + + return this; + }, + + setFromEulerYXZ: function( x, y, z ) { + var c1 = Math.cos( x / 2 ); + var c2 = Math.cos( y / 2 ); + var c3 = Math.cos( z / 2 ); + var s1 = Math.sin( x / 2 ); + var s2 = Math.sin( y / 2 ); + var s3 = Math.sin( z / 2 ); + + this.x = s1 * c2 * c3 + c1 * s2 * s3; + this.y = c1 * s2 * c3 - s1 * c2 * s3; + this.z = c1 * c2 * s3 - s1 * s2 * c3; + this.w = c1 * c2 * c3 + s1 * s2 * s3; + + return this; + }, + + setFromAxisAngle: function ( axis, angle ) { + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + // assumes axis is normalized + + var halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this.x = axis.x * s; + this.y = axis.y * s; + this.z = axis.z * s; + this.w = Math.cos( halfAngle ); + + return this; + }, + + multiply: function ( q ) { + return this.multiplyQuaternions( this, q ); + }, + + multiplyQuaternions: function ( a, b ) { + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + var qax = a.x, qay = a.y, qaz = a.z, qaw = a.w; + var qbx = b.x, qby = b.y, qbz = b.z, qbw = b.w; + + this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + return this; + }, + + inverse: function () { + this.x *= -1; + this.y *= -1; + this.z *= -1; + + this.normalize(); + + return this; + }, + + normalize: function () { + var l = Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + if ( l === 0 ) { + this.x = 0; + this.y = 0; + this.z = 0; + this.w = 1; + } else { + l = 1 / l; + + this.x = this.x * l; + this.y = this.y * l; + this.z = this.z * l; + this.w = this.w * l; + } + + return this; + }, + + slerp: function ( qb, t ) { + if ( t === 0 ) return this; + if ( t === 1 ) return this.copy( qb ); + + var x = this.x, y = this.y, z = this.z, w = this.w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + var cosHalfTheta = w * qb.w + x * qb.x + y * qb.y + z * qb.z; + + if ( cosHalfTheta < 0 ) { + this.w = - qb.w; + this.x = - qb.x; + this.y = - qb.y; + this.z = - qb.z; + + cosHalfTheta = - cosHalfTheta; + } else { + this.copy( qb ); + } + + if ( cosHalfTheta >= 1.0 ) { + this.w = w; + this.x = x; + this.y = y; + this.z = z; + + return this; + } + + var halfTheta = Math.acos( cosHalfTheta ); + var sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta ); + + if ( Math.abs( sinHalfTheta ) < 0.001 ) { + this.w = 0.5 * ( w + this.w ); + this.x = 0.5 * ( x + this.x ); + this.y = 0.5 * ( y + this.y ); + this.z = 0.5 * ( z + this.z ); + + return this; + } + + var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this.w = ( w * ratioA + this.w * ratioB ); + this.x = ( x * ratioA + this.x * ratioB ); + this.y = ( y * ratioA + this.y * ratioB ); + this.z = ( z * ratioA + this.z * ratioB ); + + return this; + }, + + setFromUnitVectors: function () { + // http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final + // assumes direction vectors vFrom and vTo are normalized + + var v1, r; + var EPS = 0.000001; + + return function ( vFrom, vTo ) { + if ( v1 === undefined ) v1 = new MathUtil.Vector3(); + + r = vFrom.dot( vTo ) + 1; + + if ( r < EPS ) { + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + v1.set( - vFrom.y, vFrom.x, 0 ); + } else { + v1.set( 0, - vFrom.z, vFrom.y ); + } + } else { + v1.crossVectors( vFrom, vTo ); + } + + this.x = v1.x; + this.y = v1.y; + this.z = v1.z; + this.w = r; + + this.normalize(); + + return this; + } + }(), +}; + +module.exports = MathUtil; + +},{}],15:[function(_dereq_,module,exports){ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var VRDisplay = _dereq_('./base.js').VRDisplay; +var MathUtil = _dereq_('./math-util.js'); +var Util = _dereq_('./util.js'); + +// How much to rotate per key stroke. +var KEY_SPEED = 0.15; +var KEY_ANIMATION_DURATION = 80; + +// How much to rotate for mouse events. +var MOUSE_SPEED_X = 0.5; +var MOUSE_SPEED_Y = 0.3; + +/** + * VRDisplay based on mouse and keyboard input. Designed for desktops/laptops + * where orientation events aren't supported. Cannot present. + */ +function MouseKeyboardVRDisplay() { + this.displayName = 'Mouse and Keyboard VRDisplay (webvr-polyfill)'; + + this.capabilities.hasOrientation = true; + + // Attach to mouse and keyboard events. + window.addEventListener('keydown', this.onKeyDown_.bind(this)); + window.addEventListener('mousemove', this.onMouseMove_.bind(this)); + window.addEventListener('mousedown', this.onMouseDown_.bind(this)); + window.addEventListener('mouseup', this.onMouseUp_.bind(this)); + + // "Private" members. + this.phi_ = 0; + this.theta_ = 0; + + // Variables for keyboard-based rotation animation. + this.targetAngle_ = null; + this.angleAnimation_ = null; + + // State variables for calculations. + this.orientation_ = new MathUtil.Quaternion(); + + // Variables for mouse-based rotation. + this.rotateStart_ = new MathUtil.Vector2(); + this.rotateEnd_ = new MathUtil.Vector2(); + this.rotateDelta_ = new MathUtil.Vector2(); + this.isDragging_ = false; + + this.orientationOut_ = new Float32Array(4); +} +MouseKeyboardVRDisplay.prototype = new VRDisplay(); + +MouseKeyboardVRDisplay.prototype.getImmediatePose = function() { + this.orientation_.setFromEulerYXZ(this.phi_, this.theta_, 0); + + this.orientationOut_[0] = this.orientation_.x; + this.orientationOut_[1] = this.orientation_.y; + this.orientationOut_[2] = this.orientation_.z; + this.orientationOut_[3] = this.orientation_.w; + + return { + position: null, + orientation: this.orientationOut_, + linearVelocity: null, + linearAcceleration: null, + angularVelocity: null, + angularAcceleration: null + }; +}; + +MouseKeyboardVRDisplay.prototype.onKeyDown_ = function(e) { + // Track WASD and arrow keys. + if (e.keyCode == 38) { // Up key. + this.animatePhi_(this.phi_ + KEY_SPEED); + } else if (e.keyCode == 39) { // Right key. + this.animateTheta_(this.theta_ - KEY_SPEED); + } else if (e.keyCode == 40) { // Down key. + this.animatePhi_(this.phi_ - KEY_SPEED); + } else if (e.keyCode == 37) { // Left key. + this.animateTheta_(this.theta_ + KEY_SPEED); + } +}; + +MouseKeyboardVRDisplay.prototype.animateTheta_ = function(targetAngle) { + this.animateKeyTransitions_('theta_', targetAngle); +}; + +MouseKeyboardVRDisplay.prototype.animatePhi_ = function(targetAngle) { + // Prevent looking too far up or down. + targetAngle = Util.clamp(targetAngle, -Math.PI/2, Math.PI/2); + this.animateKeyTransitions_('phi_', targetAngle); +}; + +/** + * Start an animation to transition an angle from one value to another. + */ +MouseKeyboardVRDisplay.prototype.animateKeyTransitions_ = function(angleName, targetAngle) { + // If an animation is currently running, cancel it. + if (this.angleAnimation_) { + cancelAnimationFrame(this.angleAnimation_); + } + var startAngle = this[angleName]; + var startTime = new Date(); + // Set up an interval timer to perform the animation. + this.angleAnimation_ = requestAnimationFrame(function animate() { + // Once we're finished the animation, we're done. + var elapsed = new Date() - startTime; + if (elapsed >= KEY_ANIMATION_DURATION) { + this[angleName] = targetAngle; + cancelAnimationFrame(this.angleAnimation_); + return; + } + // loop with requestAnimationFrame + this.angleAnimation_ = requestAnimationFrame(animate.bind(this)) + // Linearly interpolate the angle some amount. + var percent = elapsed / KEY_ANIMATION_DURATION; + this[angleName] = startAngle + (targetAngle - startAngle) * percent; + }.bind(this)); +}; + +MouseKeyboardVRDisplay.prototype.onMouseDown_ = function(e) { + this.rotateStart_.set(e.clientX, e.clientY); + this.isDragging_ = true; +}; + +// Very similar to https://gist.github.com/mrflix/8351020 +MouseKeyboardVRDisplay.prototype.onMouseMove_ = function(e) { + if (!this.isDragging_ && !this.isPointerLocked_()) { + return; + } + // Support pointer lock API. + if (this.isPointerLocked_()) { + var movementX = e.movementX || e.mozMovementX || 0; + var movementY = e.movementY || e.mozMovementY || 0; + this.rotateEnd_.set(this.rotateStart_.x - movementX, this.rotateStart_.y - movementY); + } else { + this.rotateEnd_.set(e.clientX, e.clientY); + } + // Calculate how much we moved in mouse space. + this.rotateDelta_.subVectors(this.rotateEnd_, this.rotateStart_); + this.rotateStart_.copy(this.rotateEnd_); + + // Keep track of the cumulative euler angles. + this.phi_ += 2 * Math.PI * this.rotateDelta_.y / screen.height * MOUSE_SPEED_Y; + this.theta_ += 2 * Math.PI * this.rotateDelta_.x / screen.width * MOUSE_SPEED_X; + + // Prevent looking too far up or down. + this.phi_ = Util.clamp(this.phi_, -Math.PI/2, Math.PI/2); +}; + +MouseKeyboardVRDisplay.prototype.onMouseUp_ = function(e) { + this.isDragging_ = false; +}; + +MouseKeyboardVRDisplay.prototype.isPointerLocked_ = function() { + var el = document.pointerLockElement || document.mozPointerLockElement || + document.webkitPointerLockElement; + return el !== undefined; +}; + +MouseKeyboardVRDisplay.prototype.resetPose = function() { + this.phi_ = 0; + this.theta_ = 0; +}; + +module.exports = MouseKeyboardVRDisplay; + +},{"./base.js":3,"./math-util.js":14,"./util.js":22}],16:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Util = _dereq_('./util.js'); + +function RotateInstructions() { + this.loadIcon_(); + + var overlay = document.createElement('div'); + var s = overlay.style; + s.position = 'fixed'; + s.top = 0; + s.right = 0; + s.bottom = 0; + s.left = 0; + s.backgroundColor = 'gray'; + s.fontFamily = 'sans-serif'; + // Force this to be above the fullscreen canvas, which is at zIndex: 999999. + s.zIndex = 1000000; + + var img = document.createElement('img'); + img.src = this.icon; + var s = img.style; + s.marginLeft = '25%'; + s.marginTop = '25%'; + s.width = '50%'; + overlay.appendChild(img); + + var text = document.createElement('div'); + var s = text.style; + s.textAlign = 'center'; + s.fontSize = '16px'; + s.lineHeight = '24px'; + s.margin = '24px 25%'; + s.width = '50%'; + text.innerHTML = 'Place your phone into your Cardboard viewer.'; + overlay.appendChild(text); + + var snackbar = document.createElement('div'); + var s = snackbar.style; + s.backgroundColor = '#CFD8DC'; + s.position = 'fixed'; + s.bottom = 0; + s.width = '100%'; + s.height = '48px'; + s.padding = '14px 24px'; + s.boxSizing = 'border-box'; + s.color = '#656A6B'; + overlay.appendChild(snackbar); + + var snackbarText = document.createElement('div'); + snackbarText.style.float = 'left'; + snackbarText.innerHTML = 'No Cardboard viewer?'; + + var snackbarButton = document.createElement('a'); + snackbarButton.href = 'https://www.google.com/get/cardboard/get-cardboard/'; + snackbarButton.innerHTML = 'get one'; + snackbarButton.target = '_blank'; + var s = snackbarButton.style; + s.float = 'right'; + s.fontWeight = 600; + s.textTransform = 'uppercase'; + s.borderLeft = '1px solid gray'; + s.paddingLeft = '24px'; + s.textDecoration = 'none'; + s.color = '#656A6B'; + + snackbar.appendChild(snackbarText); + snackbar.appendChild(snackbarButton); + + this.overlay = overlay; + this.text = text; + + this.hide(); +} + +RotateInstructions.prototype.show = function(parent) { + if (!parent && !this.overlay.parentElement) { + document.body.appendChild(this.overlay); + } else if (parent) { + if (this.overlay.parentElement && this.overlay.parentElement != parent) + this.overlay.parentElement.removeChild(this.overlay); + + parent.appendChild(this.overlay); + } + + this.overlay.style.display = 'block'; + + var img = this.overlay.querySelector('img'); + var s = img.style; + + if (Util.isLandscapeMode()) { + s.width = '20%'; + s.marginLeft = '40%'; + s.marginTop = '3%'; + } else { + s.width = '50%'; + s.marginLeft = '25%'; + s.marginTop = '25%'; + } +}; + +RotateInstructions.prototype.hide = function() { + this.overlay.style.display = 'none'; +}; + +RotateInstructions.prototype.showTemporarily = function(ms, parent) { + this.show(parent); + this.timer = setTimeout(this.hide.bind(this), ms); +}; + +RotateInstructions.prototype.disableShowTemporarily = function() { + clearTimeout(this.timer); +}; + +RotateInstructions.prototype.update = function() { + this.disableShowTemporarily(); + // In portrait VR mode, tell the user to rotate to landscape. Otherwise, hide + // the instructions. + if (!Util.isLandscapeMode() && Util.isMobile()) { + this.show(); + } else { + this.hide(); + } +}; + +RotateInstructions.prototype.loadIcon_ = function() { + // Encoded asset_src/rotate-instructions.svg + this.icon = Util.base64('image/svg+xml', 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE5OHB4IiBoZWlnaHQ9IjI0MHB4IiB2aWV3Qm94PSIwIDAgMTk4IDI0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMy4zICgxMjA4MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+dHJhbnNpdGlvbjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHNrZXRjaDp0eXBlPSJNU1BhZ2UiPgogICAgICAgIDxnIGlkPSJ0cmFuc2l0aW9uIiBza2V0Y2g6dHlwZT0iTVNBcnRib2FyZEdyb3VwIj4KICAgICAgICAgICAgPGcgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTQtKy1JbXBvcnRlZC1MYXllcnMtQ29weS0rLUltcG9ydGVkLUxheWVycy1Db3B5LTItQ29weSIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHktNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwNy4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjYyNSwyLjUyNyBDMTQ5LjYyNSwyLjUyNyAxNTUuODA1LDYuMDk2IDE1Ni4zNjIsNi40MTggTDE1Ni4zNjIsNy4zMDQgQzE1Ni4zNjIsNy40ODEgMTU2LjM3NSw3LjY2NCAxNTYuNCw3Ljg1MyBDMTU2LjQxLDcuOTM0IDE1Ni40Miw4LjAxNSAxNTYuNDI3LDguMDk1IEMxNTYuNTY3LDkuNTEgMTU3LjQwMSwxMS4wOTMgMTU4LjUzMiwxMi4wOTQgTDE2NC4yNTIsMTcuMTU2IEwxNjQuMzMzLDE3LjA2NiBDMTY0LjMzMywxNy4wNjYgMTY4LjcxNSwxNC41MzYgMTY5LjU2OCwxNC4wNDIgQzE3MS4wMjUsMTQuODgzIDE5NS41MzgsMjkuMDM1IDE5NS41MzgsMjkuMDM1IEwxOTUuNTM4LDgzLjAzNiBDMTk1LjUzOCw4My44MDcgMTk1LjE1Miw4NC4yNTMgMTk0LjU5LDg0LjI1MyBDMTk0LjM1Nyw4NC4yNTMgMTk0LjA5NSw4NC4xNzcgMTkzLjgxOCw4NC4wMTcgTDE2OS44NTEsNzAuMTc5IEwxNjkuODM3LDcwLjIwMyBMMTQyLjUxNSw4NS45NzggTDE0MS42NjUsODQuNjU1IEMxMzYuOTM0LDgzLjEyNiAxMzEuOTE3LDgxLjkxNSAxMjYuNzE0LDgxLjA0NSBDMTI2LjcwOSw4MS4wNiAxMjYuNzA3LDgxLjA2OSAxMjYuNzA3LDgxLjA2OSBMMTIxLjY0LDk4LjAzIEwxMTMuNzQ5LDEwMi41ODYgTDExMy43MTIsMTAyLjUyMyBMMTEzLjcxMiwxMzAuMTEzIEMxMTMuNzEyLDEzMC44ODUgMTEzLjMyNiwxMzEuMzMgMTEyLjc2NCwxMzEuMzMgQzExMi41MzIsMTMxLjMzIDExMi4yNjksMTMxLjI1NCAxMTEuOTkyLDEzMS4wOTQgTDY5LjUxOSwxMDYuNTcyIEM2OC41NjksMTA2LjAyMyA2Ny43OTksMTA0LjY5NSA2Ny43OTksMTAzLjYwNSBMNjcuNzk5LDEwMi41NyBMNjcuNzc4LDEwMi42MTcgQzY3LjI3LDEwMi4zOTMgNjYuNjQ4LDEwMi4yNDkgNjUuOTYyLDEwMi4yMTggQzY1Ljg3NSwxMDIuMjE0IDY1Ljc4OCwxMDIuMjEyIDY1LjcwMSwxMDIuMjEyIEM2NS42MDYsMTAyLjIxMiA2NS41MTEsMTAyLjIxNSA2NS40MTYsMTAyLjIxOSBDNjUuMTk1LDEwMi4yMjkgNjQuOTc0LDEwMi4yMzUgNjQuNzU0LDEwMi4yMzUgQzY0LjMzMSwxMDIuMjM1IDYzLjkxMSwxMDIuMjE2IDYzLjQ5OCwxMDIuMTc4IEM2MS44NDMsMTAyLjAyNSA2MC4yOTgsMTAxLjU3OCA1OS4wOTQsMTAwLjg4MiBMMTIuNTE4LDczLjk5MiBMMTIuNTIzLDc0LjAwNCBMMi4yNDUsNTUuMjU0IEMxLjI0NCw1My40MjcgMi4wMDQsNTEuMDM4IDMuOTQzLDQ5LjkxOCBMNTkuOTU0LDE3LjU3MyBDNjAuNjI2LDE3LjE4NSA2MS4zNSwxNy4wMDEgNjIuMDUzLDE3LjAwMSBDNjMuMzc5LDE3LjAwMSA2NC42MjUsMTcuNjYgNjUuMjgsMTguODU0IEw2NS4yODUsMTguODUxIEw2NS41MTIsMTkuMjY0IEw2NS41MDYsMTkuMjY4IEM2NS45MDksMjAuMDAzIDY2LjQwNSwyMC42OCA2Ni45ODMsMjEuMjg2IEw2Ny4yNiwyMS41NTYgQzY5LjE3NCwyMy40MDYgNzEuNzI4LDI0LjM1NyA3NC4zNzMsMjQuMzU3IEM3Ni4zMjIsMjQuMzU3IDc4LjMyMSwyMy44NCA4MC4xNDgsMjIuNzg1IEM4MC4xNjEsMjIuNzg1IDg3LjQ2NywxOC41NjYgODcuNDY3LDE4LjU2NiBDODguMTM5LDE4LjE3OCA4OC44NjMsMTcuOTk0IDg5LjU2NiwxNy45OTQgQzkwLjg5MiwxNy45OTQgOTIuMTM4LDE4LjY1MiA5Mi43OTIsMTkuODQ3IEw5Ni4wNDIsMjUuNzc1IEw5Ni4wNjQsMjUuNzU3IEwxMDIuODQ5LDI5LjY3NCBMMTAyLjc0NCwyOS40OTIgTDE0OS42MjUsMi41MjcgTTE0OS42MjUsMC44OTIgQzE0OS4zNDMsMC44OTIgMTQ5LjA2MiwwLjk2NSAxNDguODEsMS4xMSBMMTAyLjY0MSwyNy42NjYgTDk3LjIzMSwyNC41NDIgTDk0LjIyNiwxOS4wNjEgQzkzLjMxMywxNy4zOTQgOTEuNTI3LDE2LjM1OSA4OS41NjYsMTYuMzU4IEM4OC41NTUsMTYuMzU4IDg3LjU0NiwxNi42MzIgODYuNjQ5LDE3LjE1IEM4My44NzgsMTguNzUgNzkuNjg3LDIxLjE2OSA3OS4zNzQsMjEuMzQ1IEM3OS4zNTksMjEuMzUzIDc5LjM0NSwyMS4zNjEgNzkuMzMsMjEuMzY5IEM3Ny43OTgsMjIuMjU0IDc2LjA4NCwyMi43MjIgNzQuMzczLDIyLjcyMiBDNzIuMDgxLDIyLjcyMiA2OS45NTksMjEuODkgNjguMzk3LDIwLjM4IEw2OC4xNDUsMjAuMTM1IEM2Ny43MDYsMTkuNjcyIDY3LjMyMywxOS4xNTYgNjcuMDA2LDE4LjYwMSBDNjYuOTg4LDE4LjU1OSA2Ni45NjgsMTguNTE5IDY2Ljk0NiwxOC40NzkgTDY2LjcxOSwxOC4wNjUgQzY2LjY5LDE4LjAxMiA2Ni42NTgsMTcuOTYgNjYuNjI0LDE3LjkxMSBDNjUuNjg2LDE2LjMzNyA2My45NTEsMTUuMzY2IDYyLjA1MywxNS4zNjYgQzYxLjA0MiwxNS4zNjYgNjAuMDMzLDE1LjY0IDU5LjEzNiwxNi4xNTggTDMuMTI1LDQ4LjUwMiBDMC40MjYsNTAuMDYxIC0wLjYxMyw1My40NDIgMC44MTEsNTYuMDQgTDExLjA4OSw3NC43OSBDMTEuMjY2LDc1LjExMyAxMS41MzcsNzUuMzUzIDExLjg1LDc1LjQ5NCBMNTguMjc2LDEwMi4yOTggQzU5LjY3OSwxMDMuMTA4IDYxLjQzMywxMDMuNjMgNjMuMzQ4LDEwMy44MDYgQzYzLjgxMiwxMDMuODQ4IDY0LjI4NSwxMDMuODcgNjQuNzU0LDEwMy44NyBDNjUsMTAzLjg3IDY1LjI0OSwxMDMuODY0IDY1LjQ5NCwxMDMuODUyIEM2NS41NjMsMTAzLjg0OSA2NS42MzIsMTAzLjg0NyA2NS43MDEsMTAzLjg0NyBDNjUuNzY0LDEwMy44NDcgNjUuODI4LDEwMy44NDkgNjUuODksMTAzLjg1MiBDNjUuOTg2LDEwMy44NTYgNjYuMDgsMTAzLjg2MyA2Ni4xNzMsMTAzLjg3NCBDNjYuMjgyLDEwNS40NjcgNjcuMzMyLDEwNy4xOTcgNjguNzAyLDEwNy45ODggTDExMS4xNzQsMTMyLjUxIEMxMTEuNjk4LDEzMi44MTIgMTEyLjIzMiwxMzIuOTY1IDExMi43NjQsMTMyLjk2NSBDMTE0LjI2MSwxMzIuOTY1IDExNS4zNDcsMTMxLjc2NSAxMTUuMzQ3LDEzMC4xMTMgTDExNS4zNDcsMTAzLjU1MSBMMTIyLjQ1OCw5OS40NDYgQzEyMi44MTksOTkuMjM3IDEyMy4wODcsOTguODk4IDEyMy4yMDcsOTguNDk4IEwxMjcuODY1LDgyLjkwNSBDMTMyLjI3OSw4My43MDIgMTM2LjU1Nyw4NC43NTMgMTQwLjYwNyw4Ni4wMzMgTDE0MS4xNCw4Ni44NjIgQzE0MS40NTEsODcuMzQ2IDE0MS45NzcsODcuNjEzIDE0Mi41MTYsODcuNjEzIEMxNDIuNzk0LDg3LjYxMyAxNDMuMDc2LDg3LjU0MiAxNDMuMzMzLDg3LjM5MyBMMTY5Ljg2NSw3Mi4wNzYgTDE5Myw4NS40MzMgQzE5My41MjMsODUuNzM1IDE5NC4wNTgsODUuODg4IDE5NC41OSw4NS44ODggQzE5Ni4wODcsODUuODg4IDE5Ny4xNzMsODQuNjg5IDE5Ny4xNzMsODMuMDM2IEwxOTcuMTczLDI5LjAzNSBDMTk3LjE3MywyOC40NTEgMTk2Ljg2MSwyNy45MTEgMTk2LjM1NSwyNy42MTkgQzE5Ni4zNTUsMjcuNjE5IDE3MS44NDMsMTMuNDY3IDE3MC4zODUsMTIuNjI2IEMxNzAuMTMyLDEyLjQ4IDE2OS44NSwxMi40MDcgMTY5LjU2OCwxMi40MDcgQzE2OS4yODUsMTIuNDA3IDE2OS4wMDIsMTIuNDgxIDE2OC43NDksMTIuNjI3IEMxNjguMTQzLDEyLjk3OCAxNjUuNzU2LDE0LjM1NyAxNjQuNDI0LDE1LjEyNSBMMTU5LjYxNSwxMC44NyBDMTU4Ljc5NiwxMC4xNDUgMTU4LjE1NCw4LjkzNyAxNTguMDU0LDcuOTM0IEMxNTguMDQ1LDcuODM3IDE1OC4wMzQsNy43MzkgMTU4LjAyMSw3LjY0IEMxNTguMDA1LDcuNTIzIDE1Ny45OTgsNy40MSAxNTcuOTk4LDcuMzA0IEwxNTcuOTk4LDYuNDE4IEMxNTcuOTk4LDUuODM0IDE1Ny42ODYsNS4yOTUgMTU3LjE4MSw1LjAwMiBDMTU2LjYyNCw0LjY4IDE1MC40NDIsMS4xMTEgMTUwLjQ0MiwxLjExMSBDMTUwLjE4OSwwLjk2NSAxNDkuOTA3LDAuODkyIDE0OS42MjUsMC44OTIiIGlkPSJGaWxsLTEiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTYuMDI3LDI1LjYzNiBMMTQyLjYwMyw1Mi41MjcgQzE0My44MDcsNTMuMjIyIDE0NC41ODIsNTQuMTE0IDE0NC44NDUsNTUuMDY4IEwxNDQuODM1LDU1LjA3NSBMNjMuNDYxLDEwMi4wNTcgTDYzLjQ2LDEwMi4wNTcgQzYxLjgwNiwxMDEuOTA1IDYwLjI2MSwxMDEuNDU3IDU5LjA1NywxMDAuNzYyIEwxMi40ODEsNzMuODcxIEw5Ni4wMjcsMjUuNjM2IiBpZD0iRmlsbC0yIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYzLjQ2MSwxMDIuMTc0IEM2My40NTMsMTAyLjE3NCA2My40NDYsMTAyLjE3NCA2My40MzksMTAyLjE3MiBDNjEuNzQ2LDEwMi4wMTYgNjAuMjExLDEwMS41NjMgNTguOTk4LDEwMC44NjMgTDEyLjQyMiw3My45NzMgQzEyLjM4Niw3My45NTIgMTIuMzY0LDczLjkxNCAxMi4zNjQsNzMuODcxIEMxMi4zNjQsNzMuODMgMTIuMzg2LDczLjc5MSAxMi40MjIsNzMuNzcgTDk1Ljk2OCwyNS41MzUgQzk2LjAwNCwyNS41MTQgOTYuMDQ5LDI1LjUxNCA5Ni4wODUsMjUuNTM1IEwxNDIuNjYxLDUyLjQyNiBDMTQzLjg4OCw1My4xMzQgMTQ0LjY4Miw1NC4wMzggMTQ0Ljk1Nyw1NS4wMzcgQzE0NC45Nyw1NS4wODMgMTQ0Ljk1Myw1NS4xMzMgMTQ0LjkxNSw1NS4xNjEgQzE0NC45MTEsNTUuMTY1IDE0NC44OTgsNTUuMTc0IDE0NC44OTQsNTUuMTc3IEw2My41MTksMTAyLjE1OCBDNjMuNTAxLDEwMi4xNjkgNjMuNDgxLDEwMi4xNzQgNjMuNDYxLDEwMi4xNzQgTDYzLjQ2MSwxMDIuMTc0IFogTTEyLjcxNCw3My44NzEgTDU5LjExNSwxMDAuNjYxIEM2MC4yOTMsMTAxLjM0MSA2MS43ODYsMTAxLjc4MiA2My40MzUsMTAxLjkzNyBMMTQ0LjcwNyw1NS4wMTUgQzE0NC40MjgsNTQuMTA4IDE0My42ODIsNTMuMjg1IDE0Mi41NDQsNTIuNjI4IEw5Ni4wMjcsMjUuNzcxIEwxMi43MTQsNzMuODcxIEwxMi43MTQsNzMuODcxIFoiIGlkPSJGaWxsLTMiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ4LjMyNyw1OC40NzEgQzE0OC4xNDUsNTguNDggMTQ3Ljk2Miw1OC40OCAxNDcuNzgxLDU4LjQ3MiBDMTQ1Ljg4Nyw1OC4zODkgMTQ0LjQ3OSw1Ny40MzQgMTQ0LjYzNiw1Ni4zNCBDMTQ0LjY4OSw1NS45NjcgMTQ0LjY2NCw1NS41OTcgMTQ0LjU2NCw1NS4yMzUgTDYzLjQ2MSwxMDIuMDU3IEM2NC4wODksMTAyLjExNSA2NC43MzMsMTAyLjEzIDY1LjM3OSwxMDIuMDk5IEM2NS41NjEsMTAyLjA5IDY1Ljc0MywxMDIuMDkgNjUuOTI1LDEwMi4wOTggQzY3LjgxOSwxMDIuMTgxIDY5LjIyNywxMDMuMTM2IDY5LjA3LDEwNC4yMyBMMTQ4LjMyNyw1OC40NzEiIGlkPSJGaWxsLTQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNjkuMDcsMTA0LjM0NyBDNjkuMDQ4LDEwNC4zNDcgNjkuMDI1LDEwNC4zNCA2OS4wMDUsMTA0LjMyNyBDNjguOTY4LDEwNC4zMDEgNjguOTQ4LDEwNC4yNTcgNjguOTU1LDEwNC4yMTMgQzY5LDEwMy44OTYgNjguODk4LDEwMy41NzYgNjguNjU4LDEwMy4yODggQzY4LjE1MywxMDIuNjc4IDY3LjEwMywxMDIuMjY2IDY1LjkyLDEwMi4yMTQgQzY1Ljc0MiwxMDIuMjA2IDY1LjU2MywxMDIuMjA3IDY1LjM4NSwxMDIuMjE1IEM2NC43NDIsMTAyLjI0NiA2NC4wODcsMTAyLjIzMiA2My40NSwxMDIuMTc0IEM2My4zOTksMTAyLjE2OSA2My4zNTgsMTAyLjEzMiA2My4zNDcsMTAyLjA4MiBDNjMuMzM2LDEwMi4wMzMgNjMuMzU4LDEwMS45ODEgNjMuNDAyLDEwMS45NTYgTDE0NC41MDYsNTUuMTM0IEMxNDQuNTM3LDU1LjExNiAxNDQuNTc1LDU1LjExMyAxNDQuNjA5LDU1LjEyNyBDMTQ0LjY0Miw1NS4xNDEgMTQ0LjY2OCw1NS4xNyAxNDQuNjc3LDU1LjIwNCBDMTQ0Ljc4MSw1NS41ODUgMTQ0LjgwNiw1NS45NzIgMTQ0Ljc1MSw1Ni4zNTcgQzE0NC43MDYsNTYuNjczIDE0NC44MDgsNTYuOTk0IDE0NS4wNDcsNTcuMjgyIEMxNDUuNTUzLDU3Ljg5MiAxNDYuNjAyLDU4LjMwMyAxNDcuNzg2LDU4LjM1NSBDMTQ3Ljk2NCw1OC4zNjMgMTQ4LjE0Myw1OC4zNjMgMTQ4LjMyMSw1OC4zNTQgQzE0OC4zNzcsNTguMzUyIDE0OC40MjQsNTguMzg3IDE0OC40MzksNTguNDM4IEMxNDguNDU0LDU4LjQ5IDE0OC40MzIsNTguNTQ1IDE0OC4zODUsNTguNTcyIEw2OS4xMjksMTA0LjMzMSBDNjkuMTExLDEwNC4zNDIgNjkuMDksMTA0LjM0NyA2OS4wNywxMDQuMzQ3IEw2OS4wNywxMDQuMzQ3IFogTTY1LjY2NSwxMDEuOTc1IEM2NS43NTQsMTAxLjk3NSA2NS44NDIsMTAxLjk3NyA2NS45MywxMDEuOTgxIEM2Ny4xOTYsMTAyLjAzNyA2OC4yODMsMTAyLjQ2OSA2OC44MzgsMTAzLjEzOSBDNjkuMDY1LDEwMy40MTMgNjkuMTg4LDEwMy43MTQgNjkuMTk4LDEwNC4wMjEgTDE0Ny44ODMsNTguNTkyIEMxNDcuODQ3LDU4LjU5MiAxNDcuODExLDU4LjU5MSAxNDcuNzc2LDU4LjU4OSBDMTQ2LjUwOSw1OC41MzMgMTQ1LjQyMiw1OC4xIDE0NC44NjcsNTcuNDMxIEMxNDQuNTg1LDU3LjA5MSAxNDQuNDY1LDU2LjcwNyAxNDQuNTIsNTYuMzI0IEMxNDQuNTYzLDU2LjAyMSAxNDQuNTUyLDU1LjcxNiAxNDQuNDg4LDU1LjQxNCBMNjMuODQ2LDEwMS45NyBDNjQuMzUzLDEwMi4wMDIgNjQuODY3LDEwMi4wMDYgNjUuMzc0LDEwMS45ODIgQzY1LjQ3MSwxMDEuOTc3IDY1LjU2OCwxMDEuOTc1IDY1LjY2NSwxMDEuOTc1IEw2NS42NjUsMTAxLjk3NSBaIiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMjA4LDU1LjEzNCBDMS4yMDcsNTMuMzA3IDEuOTY3LDUwLjkxNyAzLjkwNiw0OS43OTcgTDU5LjkxNywxNy40NTMgQzYxLjg1NiwxNi4zMzMgNjQuMjQxLDE2LjkwNyA2NS4yNDMsMTguNzM0IEw2NS40NzUsMTkuMTQ0IEM2NS44NzIsMTkuODgyIDY2LjM2OCwyMC41NiA2Ni45NDUsMjEuMTY1IEw2Ny4yMjMsMjEuNDM1IEM3MC41NDgsMjQuNjQ5IDc1LjgwNiwyNS4xNTEgODAuMTExLDIyLjY2NSBMODcuNDMsMTguNDQ1IEM4OS4zNywxNy4zMjYgOTEuNzU0LDE3Ljg5OSA5Mi43NTUsMTkuNzI3IEw5Ni4wMDUsMjUuNjU1IEwxMi40ODYsNzMuODg0IEwyLjIwOCw1NS4xMzQgWiIgaWQ9IkZpbGwtNiIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi40ODYsNzQuMDAxIEMxMi40NzYsNzQuMDAxIDEyLjQ2NSw3My45OTkgMTIuNDU1LDczLjk5NiBDMTIuNDI0LDczLjk4OCAxMi4zOTksNzMuOTY3IDEyLjM4NCw3My45NCBMMi4xMDYsNTUuMTkgQzEuMDc1LDUzLjMxIDEuODU3LDUwLjg0NSAzLjg0OCw0OS42OTYgTDU5Ljg1OCwxNy4zNTIgQzYwLjUyNSwxNi45NjcgNjEuMjcxLDE2Ljc2NCA2Mi4wMTYsMTYuNzY0IEM2My40MzEsMTYuNzY0IDY0LjY2NiwxNy40NjYgNjUuMzI3LDE4LjY0NiBDNjUuMzM3LDE4LjY1NCA2NS4zNDUsMTguNjYzIDY1LjM1MSwxOC42NzQgTDY1LjU3OCwxOS4wODggQzY1LjU4NCwxOS4xIDY1LjU4OSwxOS4xMTIgNjUuNTkxLDE5LjEyNiBDNjUuOTg1LDE5LjgzOCA2Ni40NjksMjAuNDk3IDY3LjAzLDIxLjA4NSBMNjcuMzA1LDIxLjM1MSBDNjkuMTUxLDIzLjEzNyA3MS42NDksMjQuMTIgNzQuMzM2LDI0LjEyIEM3Ni4zMTMsMjQuMTIgNzguMjksMjMuNTgyIDgwLjA1MywyMi41NjMgQzgwLjA2NCwyMi41NTcgODAuMDc2LDIyLjU1MyA4MC4wODgsMjIuNTUgTDg3LjM3MiwxOC4zNDQgQzg4LjAzOCwxNy45NTkgODguNzg0LDE3Ljc1NiA4OS41MjksMTcuNzU2IEM5MC45NTYsMTcuNzU2IDkyLjIwMSwxOC40NzIgOTIuODU4LDE5LjY3IEw5Ni4xMDcsMjUuNTk5IEM5Ni4xMzgsMjUuNjU0IDk2LjExOCwyNS43MjQgOTYuMDYzLDI1Ljc1NiBMMTIuNTQ1LDczLjk4NSBDMTIuNTI2LDczLjk5NiAxMi41MDYsNzQuMDAxIDEyLjQ4Niw3NC4wMDEgTDEyLjQ4Niw3NC4wMDEgWiBNNjIuMDE2LDE2Ljk5NyBDNjEuMzEyLDE2Ljk5NyA2MC42MDYsMTcuMTkgNTkuOTc1LDE3LjU1NCBMMy45NjUsNDkuODk5IEMyLjA4Myw1MC45ODUgMS4zNDEsNTMuMzA4IDIuMzEsNTUuMDc4IEwxMi41MzEsNzMuNzIzIEw5NS44NDgsMjUuNjExIEw5Mi42NTMsMTkuNzgyIEM5Mi4wMzgsMTguNjYgOTAuODcsMTcuOTkgODkuNTI5LDE3Ljk5IEM4OC44MjUsMTcuOTkgODguMTE5LDE4LjE4MiA4Ny40ODksMTguNTQ3IEw4MC4xNzIsMjIuNzcyIEM4MC4xNjEsMjIuNzc4IDgwLjE0OSwyMi43ODIgODAuMTM3LDIyLjc4NSBDNzguMzQ2LDIzLjgxMSA3Ni4zNDEsMjQuMzU0IDc0LjMzNiwyNC4zNTQgQzcxLjU4OCwyNC4zNTQgNjkuMDMzLDIzLjM0NyA2Ny4xNDIsMjEuNTE5IEw2Ni44NjQsMjEuMjQ5IEM2Ni4yNzcsMjAuNjM0IDY1Ljc3NCwxOS45NDcgNjUuMzY3LDE5LjIwMyBDNjUuMzYsMTkuMTkyIDY1LjM1NiwxOS4xNzkgNjUuMzU0LDE5LjE2NiBMNjUuMTYzLDE4LjgxOSBDNjUuMTU0LDE4LjgxMSA2NS4xNDYsMTguODAxIDY1LjE0LDE4Ljc5IEM2NC41MjUsMTcuNjY3IDYzLjM1NywxNi45OTcgNjIuMDE2LDE2Ljk5NyBMNjIuMDE2LDE2Ljk5NyBaIiBpZD0iRmlsbC03IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQyLjQzNCw0OC44MDggTDQyLjQzNCw0OC44MDggQzM5LjkyNCw0OC44MDcgMzcuNzM3LDQ3LjU1IDM2LjU4Miw0NS40NDMgQzM0Ljc3MSw0Mi4xMzkgMzYuMTQ0LDM3LjgwOSAzOS42NDEsMzUuNzg5IEw1MS45MzIsMjguNjkxIEM1My4xMDMsMjguMDE1IDU0LjQxMywyNy42NTggNTUuNzIxLDI3LjY1OCBDNTguMjMxLDI3LjY1OCA2MC40MTgsMjguOTE2IDYxLjU3MywzMS4wMjMgQzYzLjM4NCwzNC4zMjcgNjIuMDEyLDM4LjY1NyA1OC41MTQsNDAuNjc3IEw0Ni4yMjMsNDcuNzc1IEM0NS4wNTMsNDguNDUgNDMuNzQyLDQ4LjgwOCA0Mi40MzQsNDguODA4IEw0Mi40MzQsNDguODA4IFogTTU1LjcyMSwyOC4xMjUgQzU0LjQ5NSwyOC4xMjUgNTMuMjY1LDI4LjQ2MSA1Mi4xNjYsMjkuMDk2IEwzOS44NzUsMzYuMTk0IEMzNi41OTYsMzguMDg3IDM1LjMwMiw0Mi4xMzYgMzYuOTkyLDQ1LjIxOCBDMzguMDYzLDQ3LjE3MyA0MC4wOTgsNDguMzQgNDIuNDM0LDQ4LjM0IEM0My42NjEsNDguMzQgNDQuODksNDguMDA1IDQ1Ljk5LDQ3LjM3IEw1OC4yODEsNDAuMjcyIEM2MS41NiwzOC4zNzkgNjIuODUzLDM0LjMzIDYxLjE2NCwzMS4yNDggQzYwLjA5MiwyOS4yOTMgNTguMDU4LDI4LjEyNSA1NS43MjEsMjguMTI1IEw1NS43MjEsMjguMTI1IFoiIGlkPSJGaWxsLTgiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjU4OCwyLjQwNyBDMTQ5LjU4OCwyLjQwNyAxNTUuNzY4LDUuOTc1IDE1Ni4zMjUsNi4yOTcgTDE1Ni4zMjUsNy4xODQgQzE1Ni4zMjUsNy4zNiAxNTYuMzM4LDcuNTQ0IDE1Ni4zNjIsNy43MzMgQzE1Ni4zNzMsNy44MTQgMTU2LjM4Miw3Ljg5NCAxNTYuMzksNy45NzUgQzE1Ni41Myw5LjM5IDE1Ny4zNjMsMTAuOTczIDE1OC40OTUsMTEuOTc0IEwxNjUuODkxLDE4LjUxOSBDMTY2LjA2OCwxOC42NzUgMTY2LjI0OSwxOC44MTQgMTY2LjQzMiwxOC45MzQgQzE2OC4wMTEsMTkuOTc0IDE2OS4zODIsMTkuNCAxNjkuNDk0LDE3LjY1MiBDMTY5LjU0MywxNi44NjggMTY5LjU1MSwxNi4wNTcgMTY5LjUxNywxNS4yMjMgTDE2OS41MTQsMTUuMDYzIEwxNjkuNTE0LDEzLjkxMiBDMTcwLjc4LDE0LjY0MiAxOTUuNTAxLDI4LjkxNSAxOTUuNTAxLDI4LjkxNSBMMTk1LjUwMSw4Mi45MTUgQzE5NS41MDEsODQuMDA1IDE5NC43MzEsODQuNDQ1IDE5My43ODEsODMuODk3IEwxNTEuMzA4LDU5LjM3NCBDMTUwLjM1OCw1OC44MjYgMTQ5LjU4OCw1Ny40OTcgMTQ5LjU4OCw1Ni40MDggTDE0OS41ODgsMjIuMzc1IiBpZD0iRmlsbC05IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5NC41NTMsODQuMjUgQzE5NC4yOTYsODQuMjUgMTk0LjAxMyw4NC4xNjUgMTkzLjcyMiw4My45OTcgTDE1MS4yNSw1OS40NzYgQzE1MC4yNjksNTguOTA5IDE0OS40NzEsNTcuNTMzIDE0OS40NzEsNTYuNDA4IEwxNDkuNDcxLDIyLjM3NSBMMTQ5LjcwNSwyMi4zNzUgTDE0OS43MDUsNTYuNDA4IEMxNDkuNzA1LDU3LjQ1OSAxNTAuNDUsNTguNzQ0IDE1MS4zNjYsNTkuMjc0IEwxOTMuODM5LDgzLjc5NSBDMTk0LjI2Myw4NC4wNCAxOTQuNjU1LDg0LjA4MyAxOTQuOTQyLDgzLjkxNyBDMTk1LjIyNyw4My43NTMgMTk1LjM4NCw4My4zOTcgMTk1LjM4NCw4Mi45MTUgTDE5NS4zODQsMjguOTgyIEMxOTQuMTAyLDI4LjI0MiAxNzIuMTA0LDE1LjU0MiAxNjkuNjMxLDE0LjExNCBMMTY5LjYzNCwxNS4yMiBDMTY5LjY2OCwxNi4wNTIgMTY5LjY2LDE2Ljg3NCAxNjkuNjEsMTcuNjU5IEMxNjkuNTU2LDE4LjUwMyAxNjkuMjE0LDE5LjEyMyAxNjguNjQ3LDE5LjQwNSBDMTY4LjAyOCwxOS43MTQgMTY3LjE5NywxOS41NzggMTY2LjM2NywxOS4wMzIgQzE2Ni4xODEsMTguOTA5IDE2NS45OTUsMTguNzY2IDE2NS44MTQsMTguNjA2IEwxNTguNDE3LDEyLjA2MiBDMTU3LjI1OSwxMS4wMzYgMTU2LjQxOCw5LjQzNyAxNTYuMjc0LDcuOTg2IEMxNTYuMjY2LDcuOTA3IDE1Ni4yNTcsNy44MjcgMTU2LjI0Nyw3Ljc0OCBDMTU2LjIyMSw3LjU1NSAxNTYuMjA5LDcuMzY1IDE1Ni4yMDksNy4xODQgTDE1Ni4yMDksNi4zNjQgQzE1NS4zNzUsNS44ODMgMTQ5LjUyOSwyLjUwOCAxNDkuNTI5LDIuNTA4IEwxNDkuNjQ2LDIuMzA2IEMxNDkuNjQ2LDIuMzA2IDE1NS44MjcsNS44NzQgMTU2LjM4NCw2LjE5NiBMMTU2LjQ0Miw2LjIzIEwxNTYuNDQyLDcuMTg0IEMxNTYuNDQyLDcuMzU1IDE1Ni40NTQsNy41MzUgMTU2LjQ3OCw3LjcxNyBDMTU2LjQ4OSw3LjggMTU2LjQ5OSw3Ljg4MiAxNTYuNTA3LDcuOTYzIEMxNTYuNjQ1LDkuMzU4IDE1Ny40NTUsMTAuODk4IDE1OC41NzIsMTEuODg2IEwxNjUuOTY5LDE4LjQzMSBDMTY2LjE0MiwxOC41ODQgMTY2LjMxOSwxOC43MiAxNjYuNDk2LDE4LjgzNyBDMTY3LjI1NCwxOS4zMzYgMTY4LDE5LjQ2NyAxNjguNTQzLDE5LjE5NiBDMTY5LjAzMywxOC45NTMgMTY5LjMyOSwxOC40MDEgMTY5LjM3NywxNy42NDUgQzE2OS40MjcsMTYuODY3IDE2OS40MzQsMTYuMDU0IDE2OS40MDEsMTUuMjI4IEwxNjkuMzk3LDE1LjA2NSBMMTY5LjM5NywxMy43MSBMMTY5LjU3MiwxMy44MSBDMTcwLjgzOSwxNC41NDEgMTk1LjU1OSwyOC44MTQgMTk1LjU1OSwyOC44MTQgTDE5NS42MTgsMjguODQ3IEwxOTUuNjE4LDgyLjkxNSBDMTk1LjYxOCw4My40ODQgMTk1LjQyLDgzLjkxMSAxOTUuMDU5LDg0LjExOSBDMTk0LjkwOCw4NC4yMDYgMTk0LjczNyw4NC4yNSAxOTQuNTUzLDg0LjI1IiBpZD0iRmlsbC0xMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDUuNjg1LDU2LjE2MSBMMTY5LjgsNzAuMDgzIEwxNDMuODIyLDg1LjA4MSBMMTQyLjM2LDg0Ljc3NCBDMTM1LjgyNiw4Mi42MDQgMTI4LjczMiw4MS4wNDYgMTIxLjM0MSw4MC4xNTggQzExNi45NzYsNzkuNjM0IDExMi42NzgsODEuMjU0IDExMS43NDMsODMuNzc4IEMxMTEuNTA2LDg0LjQxNCAxMTEuNTAzLDg1LjA3MSAxMTEuNzMyLDg1LjcwNiBDMTEzLjI3LDg5Ljk3MyAxMTUuOTY4LDk0LjA2OSAxMTkuNzI3LDk3Ljg0MSBMMTIwLjI1OSw5OC42ODYgQzEyMC4yNiw5OC42ODUgOTQuMjgyLDExMy42ODMgOTQuMjgyLDExMy42ODMgTDcwLjE2Nyw5OS43NjEgTDE0NS42ODUsNTYuMTYxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05NC4yODIsMTEzLjgxOCBMOTQuMjIzLDExMy43ODUgTDY5LjkzMyw5OS43NjEgTDcwLjEwOCw5OS42NiBMMTQ1LjY4NSw1Ni4wMjYgTDE0NS43NDMsNTYuMDU5IEwxNzAuMDMzLDcwLjA4MyBMMTQzLjg0Miw4NS4yMDUgTDE0My43OTcsODUuMTk1IEMxNDMuNzcyLDg1LjE5IDE0Mi4zMzYsODQuODg4IDE0Mi4zMzYsODQuODg4IEMxMzUuNzg3LDgyLjcxNCAxMjguNzIzLDgxLjE2MyAxMjEuMzI3LDgwLjI3NCBDMTIwLjc4OCw4MC4yMDkgMTIwLjIzNiw4MC4xNzcgMTE5LjY4OSw4MC4xNzcgQzExNS45MzEsODAuMTc3IDExMi42MzUsODEuNzA4IDExMS44NTIsODMuODE5IEMxMTEuNjI0LDg0LjQzMiAxMTEuNjIxLDg1LjA1MyAxMTEuODQyLDg1LjY2NyBDMTEzLjM3Nyw4OS45MjUgMTE2LjA1OCw5My45OTMgMTE5LjgxLDk3Ljc1OCBMMTE5LjgyNiw5Ny43NzkgTDEyMC4zNTIsOTguNjE0IEMxMjAuMzU0LDk4LjYxNyAxMjAuMzU2LDk4LjYyIDEyMC4zNTgsOTguNjI0IEwxMjAuNDIyLDk4LjcyNiBMMTIwLjMxNyw5OC43ODcgQzEyMC4yNjQsOTguODE4IDk0LjU5OSwxMTMuNjM1IDk0LjM0LDExMy43ODUgTDk0LjI4MiwxMTMuODE4IEw5NC4yODIsMTEzLjgxOCBaIE03MC40MDEsOTkuNzYxIEw5NC4yODIsMTEzLjU0OSBMMTE5LjA4NCw5OS4yMjkgQzExOS42Myw5OC45MTQgMTE5LjkzLDk4Ljc0IDEyMC4xMDEsOTguNjU0IEwxMTkuNjM1LDk3LjkxNCBDMTE1Ljg2NCw5NC4xMjcgMTEzLjE2OCw5MC4wMzMgMTExLjYyMiw4NS43NDYgQzExMS4zODIsODUuMDc5IDExMS4zODYsODQuNDA0IDExMS42MzMsODMuNzM4IEMxMTIuNDQ4LDgxLjUzOSAxMTUuODM2LDc5Ljk0MyAxMTkuNjg5LDc5Ljk0MyBDMTIwLjI0Niw3OS45NDMgMTIwLjgwNiw3OS45NzYgMTIxLjM1NSw4MC4wNDIgQzEyOC43NjcsODAuOTMzIDEzNS44NDYsODIuNDg3IDE0Mi4zOTYsODQuNjYzIEMxNDMuMjMyLDg0LjgzOCAxNDMuNjExLDg0LjkxNyAxNDMuNzg2LDg0Ljk2NyBMMTY5LjU2Niw3MC4wODMgTDE0NS42ODUsNTYuMjk1IEw3MC40MDEsOTkuNzYxIEw3MC40MDEsOTkuNzYxIFoiIGlkPSJGaWxsLTEyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2Ny4yMywxOC45NzkgTDE2Ny4yMyw2OS44NSBMMTM5LjkwOSw4NS42MjMgTDEzMy40NDgsNzEuNDU2IEMxMzIuNTM4LDY5LjQ2IDEzMC4wMiw2OS43MTggMTI3LjgyNCw3Mi4wMyBDMTI2Ljc2OSw3My4xNCAxMjUuOTMxLDc0LjU4NSAxMjUuNDk0LDc2LjA0OCBMMTE5LjAzNCw5Ny42NzYgTDkxLjcxMiwxMTMuNDUgTDkxLjcxMiw2Mi41NzkgTDE2Ny4yMywxOC45NzkiIGlkPSJGaWxsLTEzIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkxLjcxMiwxMTMuNTY3IEM5MS42OTIsMTEzLjU2NyA5MS42NzIsMTEzLjU2MSA5MS42NTMsMTEzLjU1MSBDOTEuNjE4LDExMy41MyA5MS41OTUsMTEzLjQ5MiA5MS41OTUsMTEzLjQ1IEw5MS41OTUsNjIuNTc5IEM5MS41OTUsNjIuNTM3IDkxLjYxOCw2Mi40OTkgOTEuNjUzLDYyLjQ3OCBMMTY3LjE3MiwxOC44NzggQzE2Ny4yMDgsMTguODU3IDE2Ny4yNTIsMTguODU3IDE2Ny4yODgsMTguODc4IEMxNjcuMzI0LDE4Ljg5OSAxNjcuMzQ3LDE4LjkzNyAxNjcuMzQ3LDE4Ljk3OSBMMTY3LjM0Nyw2OS44NSBDMTY3LjM0Nyw2OS44OTEgMTY3LjMyNCw2OS45MyAxNjcuMjg4LDY5Ljk1IEwxMzkuOTY3LDg1LjcyNSBDMTM5LjkzOSw4NS43NDEgMTM5LjkwNSw4NS43NDUgMTM5Ljg3Myw4NS43MzUgQzEzOS44NDIsODUuNzI1IDEzOS44MTYsODUuNzAyIDEzOS44MDIsODUuNjcyIEwxMzMuMzQyLDcxLjUwNCBDMTMyLjk2Nyw3MC42ODIgMTMyLjI4LDcwLjIyOSAxMzEuNDA4LDcwLjIyOSBDMTMwLjMxOSw3MC4yMjkgMTI5LjA0NCw3MC45MTUgMTI3LjkwOCw3Mi4xMSBDMTI2Ljg3NCw3My4yIDEyNi4wMzQsNzQuNjQ3IDEyNS42MDYsNzYuMDgyIEwxMTkuMTQ2LDk3LjcwOSBDMTE5LjEzNyw5Ny43MzggMTE5LjExOCw5Ny43NjIgMTE5LjA5Miw5Ny43NzcgTDkxLjc3LDExMy41NTEgQzkxLjc1MiwxMTMuNTYxIDkxLjczMiwxMTMuNTY3IDkxLjcxMiwxMTMuNTY3IEw5MS43MTIsMTEzLjU2NyBaIE05MS44MjksNjIuNjQ3IEw5MS44MjksMTEzLjI0OCBMMTE4LjkzNSw5Ny41OTggTDEyNS4zODIsNzYuMDE1IEMxMjUuODI3LDc0LjUyNSAxMjYuNjY0LDczLjA4MSAxMjcuNzM5LDcxLjk1IEMxMjguOTE5LDcwLjcwOCAxMzAuMjU2LDY5Ljk5NiAxMzEuNDA4LDY5Ljk5NiBDMTMyLjM3Nyw2OS45OTYgMTMzLjEzOSw3MC40OTcgMTMzLjU1NCw3MS40MDcgTDEzOS45NjEsODUuNDU4IEwxNjcuMTEzLDY5Ljc4MiBMMTY3LjExMywxOS4xODEgTDkxLjgyOSw2Mi42NDcgTDkxLjgyOSw2Mi42NDcgWiIgaWQ9IkZpbGwtMTQiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTY4LjU0MywxOS4yMTMgTDE2OC41NDMsNzAuMDgzIEwxNDEuMjIxLDg1Ljg1NyBMMTM0Ljc2MSw3MS42ODkgQzEzMy44NTEsNjkuNjk0IDEzMS4zMzMsNjkuOTUxIDEyOS4xMzcsNzIuMjYzIEMxMjguMDgyLDczLjM3NCAxMjcuMjQ0LDc0LjgxOSAxMjYuODA3LDc2LjI4MiBMMTIwLjM0Niw5Ny45MDkgTDkzLjAyNSwxMTMuNjgzIEw5My4wMjUsNjIuODEzIEwxNjguNTQzLDE5LjIxMyIgaWQ9IkZpbGwtMTUiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTMuMDI1LDExMy44IEM5My4wMDUsMTEzLjggOTIuOTg0LDExMy43OTUgOTIuOTY2LDExMy43ODUgQzkyLjkzMSwxMTMuNzY0IDkyLjkwOCwxMTMuNzI1IDkyLjkwOCwxMTMuNjg0IEw5Mi45MDgsNjIuODEzIEM5Mi45MDgsNjIuNzcxIDkyLjkzMSw2Mi43MzMgOTIuOTY2LDYyLjcxMiBMMTY4LjQ4NCwxOS4xMTIgQzE2OC41MiwxOS4wOSAxNjguNTY1LDE5LjA5IDE2OC42MDEsMTkuMTEyIEMxNjguNjM3LDE5LjEzMiAxNjguNjYsMTkuMTcxIDE2OC42NiwxOS4yMTIgTDE2OC42Niw3MC4wODMgQzE2OC42Niw3MC4xMjUgMTY4LjYzNyw3MC4xNjQgMTY4LjYwMSw3MC4xODQgTDE0MS4yOCw4NS45NTggQzE0MS4yNTEsODUuOTc1IDE0MS4yMTcsODUuOTc5IDE0MS4xODYsODUuOTY4IEMxNDEuMTU0LDg1Ljk1OCAxNDEuMTI5LDg1LjkzNiAxNDEuMTE1LDg1LjkwNiBMMTM0LjY1NSw3MS43MzggQzEzNC4yOCw3MC45MTUgMTMzLjU5Myw3MC40NjMgMTMyLjcyLDcwLjQ2MyBDMTMxLjYzMiw3MC40NjMgMTMwLjM1Nyw3MS4xNDggMTI5LjIyMSw3Mi4zNDQgQzEyOC4xODYsNzMuNDMzIDEyNy4zNDcsNzQuODgxIDEyNi45MTksNzYuMzE1IEwxMjAuNDU4LDk3Ljk0MyBDMTIwLjQ1LDk3Ljk3MiAxMjAuNDMxLDk3Ljk5NiAxMjAuNDA1LDk4LjAxIEw5My4wODMsMTEzLjc4NSBDOTMuMDY1LDExMy43OTUgOTMuMDQ1LDExMy44IDkzLjAyNSwxMTMuOCBMOTMuMDI1LDExMy44IFogTTkzLjE0Miw2Mi44ODEgTDkzLjE0MiwxMTMuNDgxIEwxMjAuMjQ4LDk3LjgzMiBMMTI2LjY5NSw3Ni4yNDggQzEyNy4xNCw3NC43NTggMTI3Ljk3Nyw3My4zMTUgMTI5LjA1Miw3Mi4xODMgQzEzMC4yMzEsNzAuOTQyIDEzMS41NjgsNzAuMjI5IDEzMi43Miw3MC4yMjkgQzEzMy42ODksNzAuMjI5IDEzNC40NTIsNzAuNzMxIDEzNC44NjcsNzEuNjQxIEwxNDEuMjc0LDg1LjY5MiBMMTY4LjQyNiw3MC4wMTYgTDE2OC40MjYsMTkuNDE1IEw5My4xNDIsNjIuODgxIEw5My4xNDIsNjIuODgxIFoiIGlkPSJGaWxsLTE2IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS44LDcwLjA4MyBMMTQyLjQ3OCw4NS44NTcgTDEzNi4wMTgsNzEuNjg5IEMxMzUuMTA4LDY5LjY5NCAxMzIuNTksNjkuOTUxIDEzMC4zOTMsNzIuMjYzIEMxMjkuMzM5LDczLjM3NCAxMjguNSw3NC44MTkgMTI4LjA2NCw3Ni4yODIgTDEyMS42MDMsOTcuOTA5IEw5NC4yODIsMTEzLjY4MyBMOTQuMjgyLDYyLjgxMyBMMTY5LjgsMTkuMjEzIEwxNjkuOCw3MC4wODMgWiIgaWQ9IkZpbGwtMTciIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTQuMjgyLDExMy45MTcgQzk0LjI0MSwxMTMuOTE3IDk0LjIwMSwxMTMuOTA3IDk0LjE2NSwxMTMuODg2IEM5NC4wOTMsMTEzLjg0NSA5NC4wNDgsMTEzLjc2NyA5NC4wNDgsMTEzLjY4NCBMOTQuMDQ4LDYyLjgxMyBDOTQuMDQ4LDYyLjczIDk0LjA5Myw2Mi42NTIgOTQuMTY1LDYyLjYxMSBMMTY5LjY4MywxOS4wMSBDMTY5Ljc1NSwxOC45NjkgMTY5Ljg0NCwxOC45NjkgMTY5LjkxNywxOS4wMSBDMTY5Ljk4OSwxOS4wNTIgMTcwLjAzMywxOS4xMjkgMTcwLjAzMywxOS4yMTIgTDE3MC4wMzMsNzAuMDgzIEMxNzAuMDMzLDcwLjE2NiAxNjkuOTg5LDcwLjI0NCAxNjkuOTE3LDcwLjI4NSBMMTQyLjU5NSw4Ni4wNiBDMTQyLjUzOCw4Ni4wOTIgMTQyLjQ2OSw4Ni4xIDE0Mi40MDcsODYuMDggQzE0Mi4zNDQsODYuMDYgMTQyLjI5Myw4Ni4wMTQgMTQyLjI2Niw4NS45NTQgTDEzNS44MDUsNzEuNzg2IEMxMzUuNDQ1LDcwLjk5NyAxMzQuODEzLDcwLjU4IDEzMy45NzcsNzAuNTggQzEzMi45MjEsNzAuNTggMTMxLjY3Niw3MS4yNTIgMTMwLjU2Miw3Mi40MjQgQzEyOS41NCw3My41MDEgMTI4LjcxMSw3NC45MzEgMTI4LjI4Nyw3Ni4zNDggTDEyMS44MjcsOTcuOTc2IEMxMjEuODEsOTguMDM0IDEyMS43NzEsOTguMDgyIDEyMS43Miw5OC4xMTIgTDk0LjM5OCwxMTMuODg2IEM5NC4zNjIsMTEzLjkwNyA5NC4zMjIsMTEzLjkxNyA5NC4yODIsMTEzLjkxNyBMOTQuMjgyLDExMy45MTcgWiBNOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDExMy4yNzkgTDEyMS40MDYsOTcuNzU0IEwxMjcuODQsNzYuMjE1IEMxMjguMjksNzQuNzA4IDEyOS4xMzcsNzMuMjQ3IDEzMC4yMjQsNzIuMTAzIEMxMzEuNDI1LDcwLjgzOCAxMzIuNzkzLDcwLjExMiAxMzMuOTc3LDcwLjExMiBDMTM0Ljk5NSw3MC4xMTIgMTM1Ljc5NSw3MC42MzggMTM2LjIzLDcxLjU5MiBMMTQyLjU4NCw4NS41MjYgTDE2OS41NjYsNjkuOTQ4IEwxNjkuNTY2LDE5LjYxNyBMOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDYyLjk0OCBaIiBpZD0iRmlsbC0xOCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMDkuODk0LDkyLjk0MyBMMTA5Ljg5NCw5Mi45NDMgQzEwOC4xMiw5Mi45NDMgMTA2LjY1Myw5Mi4yMTggMTA1LjY1LDkwLjgyMyBDMTA1LjU4Myw5MC43MzEgMTA1LjU5Myw5MC42MSAxMDUuNjczLDkwLjUyOSBDMTA1Ljc1Myw5MC40NDggMTA1Ljg4LDkwLjQ0IDEwNS45NzQsOTAuNTA2IEMxMDYuNzU0LDkxLjA1MyAxMDcuNjc5LDkxLjMzMyAxMDguNzI0LDkxLjMzMyBDMTEwLjA0Nyw5MS4zMzMgMTExLjQ3OCw5MC44OTQgMTEyLjk4LDkwLjAyNyBDMTE4LjI5MSw4Ni45NiAxMjIuNjExLDc5LjUwOSAxMjIuNjExLDczLjQxNiBDMTIyLjYxMSw3MS40ODkgMTIyLjE2OSw2OS44NTYgMTIxLjMzMyw2OC42OTIgQzEyMS4yNjYsNjguNiAxMjEuMjc2LDY4LjQ3MyAxMjEuMzU2LDY4LjM5MiBDMTIxLjQzNiw2OC4zMTEgMTIxLjU2Myw2OC4yOTkgMTIxLjY1Niw2OC4zNjUgQzEyMy4zMjcsNjkuNTM3IDEyNC4yNDcsNzEuNzQ2IDEyNC4yNDcsNzQuNTg0IEMxMjQuMjQ3LDgwLjgyNiAxMTkuODIxLDg4LjQ0NyAxMTQuMzgyLDkxLjU4NyBDMTEyLjgwOCw5Mi40OTUgMTExLjI5OCw5Mi45NDMgMTA5Ljg5NCw5Mi45NDMgTDEwOS44OTQsOTIuOTQzIFogTTEwNi45MjUsOTEuNDAxIEMxMDcuNzM4LDkyLjA1MiAxMDguNzQ1LDkyLjI3OCAxMDkuODkzLDkyLjI3OCBMMTA5Ljg5NCw5Mi4yNzggQzExMS4yMTUsOTIuMjc4IDExMi42NDcsOTEuOTUxIDExNC4xNDgsOTEuMDg0IEMxMTkuNDU5LDg4LjAxNyAxMjMuNzgsODAuNjIxIDEyMy43OCw3NC41MjggQzEyMy43OCw3Mi41NDkgMTIzLjMxNyw3MC45MjkgMTIyLjQ1NCw2OS43NjcgQzEyMi44NjUsNzAuODAyIDEyMy4wNzksNzIuMDQyIDEyMy4wNzksNzMuNDAyIEMxMjMuMDc5LDc5LjY0NSAxMTguNjUzLDg3LjI4NSAxMTMuMjE0LDkwLjQyNSBDMTExLjY0LDkxLjMzNCAxMTAuMTMsOTEuNzQyIDEwOC43MjQsOTEuNzQyIEMxMDguMDgzLDkxLjc0MiAxMDcuNDgxLDkxLjU5MyAxMDYuOTI1LDkxLjQwMSBMMTA2LjkyNSw5MS40MDEgWiIgaWQ9IkZpbGwtMTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjA5Nyw5MC4yMyBDMTE4LjQ4MSw4Ny4xMjIgMTIyLjg0NSw3OS41OTQgMTIyLjg0NSw3My40MTYgQzEyMi44NDUsNzEuMzY1IDEyMi4zNjIsNjkuNzI0IDEyMS41MjIsNjguNTU2IEMxMTkuNzM4LDY3LjMwNCAxMTcuMTQ4LDY3LjM2MiAxMTQuMjY1LDY5LjAyNiBDMTA4Ljg4MSw3Mi4xMzQgMTA0LjUxNyw3OS42NjIgMTA0LjUxNyw4NS44NCBDMTA0LjUxNyw4Ny44OTEgMTA1LDg5LjUzMiAxMDUuODQsOTAuNyBDMTA3LjYyNCw5MS45NTIgMTEwLjIxNCw5MS44OTQgMTEzLjA5Nyw5MC4yMyIgaWQ9IkZpbGwtMjAiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA4LjcyNCw5MS42MTQgTDEwOC43MjQsOTEuNjE0IEMxMDcuNTgyLDkxLjYxNCAxMDYuNTY2LDkxLjQwMSAxMDUuNzA1LDkwLjc5NyBDMTA1LjY4NCw5MC43ODMgMTA1LjY2NSw5MC44MTEgMTA1LjY1LDkwLjc5IEMxMDQuNzU2LDg5LjU0NiAxMDQuMjgzLDg3Ljg0MiAxMDQuMjgzLDg1LjgxNyBDMTA0LjI4Myw3OS41NzUgMTA4LjcwOSw3MS45NTMgMTE0LjE0OCw2OC44MTIgQzExNS43MjIsNjcuOTA0IDExNy4yMzIsNjcuNDQ5IDExOC42MzgsNjcuNDQ5IEMxMTkuNzgsNjcuNDQ5IDEyMC43OTYsNjcuNzU4IDEyMS42NTYsNjguMzYyIEMxMjEuNjc4LDY4LjM3NyAxMjEuNjk3LDY4LjM5NyAxMjEuNzEyLDY4LjQxOCBDMTIyLjYwNiw2OS42NjIgMTIzLjA3OSw3MS4zOSAxMjMuMDc5LDczLjQxNSBDMTIzLjA3OSw3OS42NTggMTE4LjY1Myw4Ny4xOTggMTEzLjIxNCw5MC4zMzggQzExMS42NCw5MS4yNDcgMTEwLjEzLDkxLjYxNCAxMDguNzI0LDkxLjYxNCBMMTA4LjcyNCw5MS42MTQgWiBNMTA2LjAwNiw5MC41MDUgQzEwNi43OCw5MS4wMzcgMTA3LjY5NCw5MS4yODEgMTA4LjcyNCw5MS4yODEgQzExMC4wNDcsOTEuMjgxIDExMS40NzgsOTAuODY4IDExMi45OCw5MC4wMDEgQzExOC4yOTEsODYuOTM1IDEyMi42MTEsNzkuNDk2IDEyMi42MTEsNzMuNDAzIEMxMjIuNjExLDcxLjQ5NCAxMjIuMTc3LDY5Ljg4IDEyMS4zNTYsNjguNzE4IEMxMjAuNTgyLDY4LjE4NSAxMTkuNjY4LDY3LjkxOSAxMTguNjM4LDY3LjkxOSBDMTE3LjMxNSw2Ny45MTkgMTE1Ljg4Myw2OC4zNiAxMTQuMzgyLDY5LjIyNyBDMTA5LjA3MSw3Mi4yOTMgMTA0Ljc1MSw3OS43MzMgMTA0Ljc1MSw4NS44MjYgQzEwNC43NTEsODcuNzM1IDEwNS4xODUsODkuMzQzIDEwNi4wMDYsOTAuNTA1IEwxMDYuMDA2LDkwLjUwNSBaIiBpZD0iRmlsbC0yMSIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzE4LDcuMjYyIEwxMzkuMzM0LDE2LjE0IEwxNTUuMjI3LDI3LjE3MSBMMTYwLjgxNiwyMS4wNTkgTDE0OS4zMTgsNy4yNjIiIGlkPSJGaWxsLTIyIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS42NzYsMTMuODQgTDE1OS45MjgsMTkuNDY3IEMxNTYuMjg2LDIxLjU3IDE1MC40LDIxLjU4IDE0Ni43ODEsMTkuNDkxIEMxNDMuMTYxLDE3LjQwMiAxNDMuMTgsMTQuMDAzIDE0Ni44MjIsMTEuOSBMMTU2LjMxNyw2LjI5MiBMMTQ5LjU4OCwyLjQwNyBMNjcuNzUyLDQ5LjQ3OCBMMTEzLjY3NSw3NS45OTIgTDExNi43NTYsNzQuMjEzIEMxMTcuMzg3LDczLjg0OCAxMTcuNjI1LDczLjMxNSAxMTcuMzc0LDcyLjgyMyBDMTE1LjAxNyw2OC4xOTEgMTE0Ljc4MSw2My4yNzcgMTE2LjY5MSw1OC41NjEgQzEyMi4zMjksNDQuNjQxIDE0MS4yLDMzLjc0NiAxNjUuMzA5LDMwLjQ5MSBDMTczLjQ3OCwyOS4zODggMTgxLjk4OSwyOS41MjQgMTkwLjAxMywzMC44ODUgQzE5MC44NjUsMzEuMDMgMTkxLjc4OSwzMC44OTMgMTkyLjQyLDMwLjUyOCBMMTk1LjUwMSwyOC43NSBMMTY5LjY3NiwxMy44NCIgaWQ9IkZpbGwtMjMiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3Ni40NTkgQzExMy41OTQsNzYuNDU5IDExMy41MTQsNzYuNDM4IDExMy40NDIsNzYuMzk3IEw2Ny41MTgsNDkuODgyIEM2Ny4zNzQsNDkuNzk5IDY3LjI4NCw0OS42NDUgNjcuMjg1LDQ5LjQ3OCBDNjcuMjg1LDQ5LjMxMSA2Ny4zNzQsNDkuMTU3IDY3LjUxOSw0OS4wNzMgTDE0OS4zNTUsMi4wMDIgQzE0OS40OTksMS45MTkgMTQ5LjY3NywxLjkxOSAxNDkuODIxLDIuMDAyIEwxNTYuNTUsNS44ODcgQzE1Ni43NzQsNi4wMTcgMTU2Ljg1LDYuMzAyIDE1Ni43MjIsNi41MjYgQzE1Ni41OTIsNi43NDkgMTU2LjMwNyw2LjgyNiAxNTYuMDgzLDYuNjk2IEwxNDkuNTg3LDIuOTQ2IEw2OC42ODcsNDkuNDc5IEwxMTMuNjc1LDc1LjQ1MiBMMTE2LjUyMyw3My44MDggQzExNi43MTUsNzMuNjk3IDExNy4xNDMsNzMuMzk5IDExNi45NTgsNzMuMDM1IEMxMTQuNTQyLDY4LjI4NyAxMTQuMyw2My4yMjEgMTE2LjI1OCw1OC4zODUgQzExOS4wNjQsNTEuNDU4IDEyNS4xNDMsNDUuMTQzIDEzMy44NCw0MC4xMjIgQzE0Mi40OTcsMzUuMTI0IDE1My4zNTgsMzEuNjMzIDE2NS4yNDcsMzAuMDI4IEMxNzMuNDQ1LDI4LjkyMSAxODIuMDM3LDI5LjA1OCAxOTAuMDkxLDMwLjQyNSBDMTkwLjgzLDMwLjU1IDE5MS42NTIsMzAuNDMyIDE5Mi4xODYsMzAuMTI0IEwxOTQuNTY3LDI4Ljc1IEwxNjkuNDQyLDE0LjI0NCBDMTY5LjIxOSwxNC4xMTUgMTY5LjE0MiwxMy44MjkgMTY5LjI3MSwxMy42MDYgQzE2OS40LDEzLjM4MiAxNjkuNjg1LDEzLjMwNiAxNjkuOTA5LDEzLjQzNSBMMTk1LjczNCwyOC4zNDUgQzE5NS44NzksMjguNDI4IDE5NS45NjgsMjguNTgzIDE5NS45NjgsMjguNzUgQzE5NS45NjgsMjguOTE2IDE5NS44NzksMjkuMDcxIDE5NS43MzQsMjkuMTU0IEwxOTIuNjUzLDMwLjkzMyBDMTkxLjkzMiwzMS4zNSAxOTAuODksMzEuNTA4IDE4OS45MzUsMzEuMzQ2IEMxODEuOTcyLDI5Ljk5NSAxNzMuNDc4LDI5Ljg2IDE2NS4zNzIsMzAuOTU0IEMxNTMuNjAyLDMyLjU0MyAxNDIuODYsMzUuOTkzIDEzNC4zMDcsNDAuOTMxIEMxMjUuNzkzLDQ1Ljg0NyAxMTkuODUxLDUyLjAwNCAxMTcuMTI0LDU4LjczNiBDMTE1LjI3LDYzLjMxNCAxMTUuNTAxLDY4LjExMiAxMTcuNzksNzIuNjExIEMxMTguMTYsNzMuMzM2IDExNy44NDUsNzQuMTI0IDExNi45OSw3NC42MTcgTDExMy45MDksNzYuMzk3IEMxMTMuODM2LDc2LjQzOCAxMTMuNzU2LDc2LjQ1OSAxMTMuNjc1LDc2LjQ1OSIgaWQ9IkZpbGwtMjQiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUzLjMxNiwyMS4yNzkgQzE1MC45MDMsMjEuMjc5IDE0OC40OTUsMjAuNzUxIDE0Ni42NjQsMTkuNjkzIEMxNDQuODQ2LDE4LjY0NCAxNDMuODQ0LDE3LjIzMiAxNDMuODQ0LDE1LjcxOCBDMTQzLjg0NCwxNC4xOTEgMTQ0Ljg2LDEyLjc2MyAxNDYuNzA1LDExLjY5OCBMMTU2LjE5OCw2LjA5MSBDMTU2LjMwOSw2LjAyNSAxNTYuNDUyLDYuMDYyIDE1Ni41MTgsNi4xNzMgQzE1Ni41ODMsNi4yODQgMTU2LjU0Nyw2LjQyNyAxNTYuNDM2LDYuNDkzIEwxNDYuOTQsMTIuMTAyIEMxNDUuMjQ0LDEzLjA4MSAxNDQuMzEyLDE0LjM2NSAxNDQuMzEyLDE1LjcxOCBDMTQ0LjMxMiwxNy4wNTggMTQ1LjIzLDE4LjMyNiAxNDYuODk3LDE5LjI4OSBDMTUwLjQ0NiwyMS4zMzggMTU2LjI0LDIxLjMyNyAxNTkuODExLDE5LjI2NSBMMTY5LjU1OSwxMy42MzcgQzE2OS42NywxMy41NzMgMTY5LjgxMywxMy42MTEgMTY5Ljg3OCwxMy43MjMgQzE2OS45NDMsMTMuODM0IDE2OS45MDQsMTMuOTc3IDE2OS43OTMsMTQuMDQyIEwxNjAuMDQ1LDE5LjY3IEMxNTguMTg3LDIwLjc0MiAxNTUuNzQ5LDIxLjI3OSAxNTMuMzE2LDIxLjI3OSIgaWQ9IkZpbGwtMjUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3NS45OTIgTDY3Ljc2Miw0OS40ODQiIGlkPSJGaWxsLTI2IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMy42NzUsNzYuMzQyIEMxMTMuNjE1LDc2LjM0MiAxMTMuNTU1LDc2LjMyNyAxMTMuNSw3Ni4yOTUgTDY3LjU4Nyw0OS43ODcgQzY3LjQxOSw0OS42OSA2Ny4zNjIsNDkuNDc2IDY3LjQ1OSw0OS4zMDkgQzY3LjU1Niw0OS4xNDEgNjcuNzcsNDkuMDgzIDY3LjkzNyw0OS4xOCBMMTEzLjg1LDc1LjY4OCBDMTE0LjAxOCw3NS43ODUgMTE0LjA3NSw3NiAxMTMuOTc4LDc2LjE2NyBDMTEzLjkxNCw3Ni4yNzkgMTEzLjc5Niw3Ni4zNDIgMTEzLjY3NSw3Ni4zNDIiIGlkPSJGaWxsLTI3IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY3Ljc2Miw0OS40ODQgTDY3Ljc2MiwxMDMuNDg1IEM2Ny43NjIsMTA0LjU3NSA2OC41MzIsMTA1LjkwMyA2OS40ODIsMTA2LjQ1MiBMMTExLjk1NSwxMzAuOTczIEMxMTIuOTA1LDEzMS41MjIgMTEzLjY3NSwxMzEuMDgzIDExMy42NzUsMTI5Ljk5MyBMMTEzLjY3NSw3NS45OTIiIGlkPSJGaWxsLTI4IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMi43MjcsMTMxLjU2MSBDMTEyLjQzLDEzMS41NjEgMTEyLjEwNywxMzEuNDY2IDExMS43OCwxMzEuMjc2IEw2OS4zMDcsMTA2Ljc1NSBDNjguMjQ0LDEwNi4xNDIgNjcuNDEyLDEwNC43MDUgNjcuNDEyLDEwMy40ODUgTDY3LjQxMiw0OS40ODQgQzY3LjQxMiw0OS4yOSA2Ny41NjksNDkuMTM0IDY3Ljc2Miw0OS4xMzQgQzY3Ljk1Niw0OS4xMzQgNjguMTEzLDQ5LjI5IDY4LjExMyw0OS40ODQgTDY4LjExMywxMDMuNDg1IEM2OC4xMTMsMTA0LjQ0NSA2OC44MiwxMDUuNjY1IDY5LjY1NywxMDYuMTQ4IEwxMTIuMTMsMTMwLjY3IEMxMTIuNDc0LDEzMC44NjggMTEyLjc5MSwxMzAuOTEzIDExMywxMzAuNzkyIEMxMTMuMjA2LDEzMC42NzMgMTEzLjMyNSwxMzAuMzgxIDExMy4zMjUsMTI5Ljk5MyBMMTEzLjMyNSw3NS45OTIgQzExMy4zMjUsNzUuNzk4IDExMy40ODIsNzUuNjQxIDExMy42NzUsNzUuNjQxIEMxMTMuODY5LDc1LjY0MSAxMTQuMDI1LDc1Ljc5OCAxMTQuMDI1LDc1Ljk5MiBMMTE0LjAyNSwxMjkuOTkzIEMxMTQuMDI1LDEzMC42NDggMTEzLjc4NiwxMzEuMTQ3IDExMy4zNSwxMzEuMzk5IEMxMTMuMTYyLDEzMS41MDcgMTEyLjk1MiwxMzEuNTYxIDExMi43MjcsMTMxLjU2MSIgaWQ9IkZpbGwtMjkiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEyLjg2LDQwLjUxMiBDMTEyLjg2LDQwLjUxMiAxMTIuODYsNDAuNTEyIDExMi44NTksNDAuNTEyIEMxMTAuNTQxLDQwLjUxMiAxMDguMzYsMzkuOTkgMTA2LjcxNywzOS4wNDEgQzEwNS4wMTIsMzguMDU3IDEwNC4wNzQsMzYuNzI2IDEwNC4wNzQsMzUuMjkyIEMxMDQuMDc0LDMzLjg0NyAxMDUuMDI2LDMyLjUwMSAxMDYuNzU0LDMxLjUwNCBMMTE4Ljc5NSwyNC41NTEgQzEyMC40NjMsMjMuNTg5IDEyMi42NjksMjMuMDU4IDEyNS4wMDcsMjMuMDU4IEMxMjcuMzI1LDIzLjA1OCAxMjkuNTA2LDIzLjU4MSAxMzEuMTUsMjQuNTMgQzEzMi44NTQsMjUuNTE0IDEzMy43OTMsMjYuODQ1IDEzMy43OTMsMjguMjc4IEMxMzMuNzkzLDI5LjcyNCAxMzIuODQxLDMxLjA2OSAxMzEuMTEzLDMyLjA2NyBMMTE5LjA3MSwzOS4wMTkgQzExNy40MDMsMzkuOTgyIDExNS4xOTcsNDAuNTEyIDExMi44Niw0MC41MTIgTDExMi44Niw0MC41MTIgWiBNMTI1LjAwNywyMy43NTkgQzEyMi43OSwyMy43NTkgMTIwLjcwOSwyNC4yNTYgMTE5LjE0NiwyNS4xNTggTDEwNy4xMDQsMzIuMTEgQzEwNS42MDIsMzIuOTc4IDEwNC43NzQsMzQuMTA4IDEwNC43NzQsMzUuMjkyIEMxMDQuNzc0LDM2LjQ2NSAxMDUuNTg5LDM3LjU4MSAxMDcuMDY3LDM4LjQzNCBDMTA4LjYwNSwzOS4zMjMgMTEwLjY2MywzOS44MTIgMTEyLjg1OSwzOS44MTIgTDExMi44NiwzOS44MTIgQzExNS4wNzYsMzkuODEyIDExNy4xNTgsMzkuMzE1IDExOC43MjEsMzguNDEzIEwxMzAuNzYyLDMxLjQ2IEMxMzIuMjY0LDMwLjU5MyAxMzMuMDkyLDI5LjQ2MyAxMzMuMDkyLDI4LjI3OCBDMTMzLjA5MiwyNy4xMDYgMTMyLjI3OCwyNS45OSAxMzAuOCwyNS4xMzYgQzEyOS4yNjEsMjQuMjQ4IDEyNy4yMDQsMjMuNzU5IDEyNS4wMDcsMjMuNzU5IEwxMjUuMDA3LDIzLjc1OSBaIiBpZD0iRmlsbC0zMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNjUuNjMsMTYuMjE5IEwxNTkuODk2LDE5LjUzIEMxNTYuNzI5LDIxLjM1OCAxNTEuNjEsMjEuMzY3IDE0OC40NjMsMTkuNTUgQzE0NS4zMTYsMTcuNzMzIDE0NS4zMzIsMTQuNzc4IDE0OC40OTksMTIuOTQ5IEwxNTQuMjMzLDkuNjM5IEwxNjUuNjMsMTYuMjE5IiBpZD0iRmlsbC0zMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTQuMjMzLDEwLjQ0OCBMMTY0LjIyOCwxNi4yMTkgTDE1OS41NDYsMTguOTIzIEMxNTguMTEyLDE5Ljc1IDE1Ni4xOTQsMjAuMjA2IDE1NC4xNDcsMjAuMjA2IEMxNTIuMTE4LDIwLjIwNiAxNTAuMjI0LDE5Ljc1NyAxNDguODE0LDE4Ljk0MyBDMTQ3LjUyNCwxOC4xOTkgMTQ2LjgxNCwxNy4yNDkgMTQ2LjgxNCwxNi4yNjkgQzE0Ni44MTQsMTUuMjc4IDE0Ny41MzcsMTQuMzE0IDE0OC44NSwxMy41NTYgTDE1NC4yMzMsMTAuNDQ4IE0xNTQuMjMzLDkuNjM5IEwxNDguNDk5LDEyLjk0OSBDMTQ1LjMzMiwxNC43NzggMTQ1LjMxNiwxNy43MzMgMTQ4LjQ2MywxOS41NSBDMTUwLjAzMSwyMC40NTUgMTUyLjA4NiwyMC45MDcgMTU0LjE0NywyMC45MDcgQzE1Ni4yMjQsMjAuOTA3IDE1OC4zMDYsMjAuNDQ3IDE1OS44OTYsMTkuNTMgTDE2NS42MywxNi4yMTkgTDE1NC4yMzMsOS42MzkiIGlkPSJGaWxsLTMyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NS40NDUsNzIuNjY3IEwxNDUuNDQ1LDcyLjY2NyBDMTQzLjY3Miw3Mi42NjcgMTQyLjIwNCw3MS44MTcgMTQxLjIwMiw3MC40MjIgQzE0MS4xMzUsNzAuMzMgMTQxLjE0NSw3MC4xNDcgMTQxLjIyNSw3MC4wNjYgQzE0MS4zMDUsNjkuOTg1IDE0MS40MzIsNjkuOTQ2IDE0MS41MjUsNzAuMDExIEMxNDIuMzA2LDcwLjU1OSAxNDMuMjMxLDcwLjgyMyAxNDQuMjc2LDcwLjgyMiBDMTQ1LjU5OCw3MC44MjIgMTQ3LjAzLDcwLjM3NiAxNDguNTMyLDY5LjUwOSBDMTUzLjg0Miw2Ni40NDMgMTU4LjE2Myw1OC45ODcgMTU4LjE2Myw1Mi44OTQgQzE1OC4xNjMsNTAuOTY3IDE1Ny43MjEsNDkuMzMyIDE1Ni44ODQsNDguMTY4IEMxNTYuODE4LDQ4LjA3NiAxNTYuODI4LDQ3Ljk0OCAxNTYuOTA4LDQ3Ljg2NyBDMTU2Ljk4OCw0Ny43ODYgMTU3LjExNCw0Ny43NzQgMTU3LjIwOCw0Ny44NCBDMTU4Ljg3OCw0OS4wMTIgMTU5Ljc5OCw1MS4yMiAxNTkuNzk4LDU0LjA1OSBDMTU5Ljc5OCw2MC4zMDEgMTU1LjM3Myw2OC4wNDYgMTQ5LjkzMyw3MS4xODYgQzE0OC4zNiw3Mi4wOTQgMTQ2Ljg1LDcyLjY2NyAxNDUuNDQ1LDcyLjY2NyBMMTQ1LjQ0NSw3Mi42NjcgWiBNMTQyLjQ3Niw3MSBDMTQzLjI5LDcxLjY1MSAxNDQuMjk2LDcyLjAwMiAxNDUuNDQ1LDcyLjAwMiBDMTQ2Ljc2Nyw3Mi4wMDIgMTQ4LjE5OCw3MS41NSAxNDkuNyw3MC42ODIgQzE1NS4wMSw2Ny42MTcgMTU5LjMzMSw2MC4xNTkgMTU5LjMzMSw1NC4wNjUgQzE1OS4zMzEsNTIuMDg1IDE1OC44NjgsNTAuNDM1IDE1OC4wMDYsNDkuMjcyIEMxNTguNDE3LDUwLjMwNyAxNTguNjMsNTEuNTMyIDE1OC42Myw1Mi44OTIgQzE1OC42Myw1OS4xMzQgMTU0LjIwNSw2Ni43NjcgMTQ4Ljc2NSw2OS45MDcgQzE0Ny4xOTIsNzAuODE2IDE0NS42ODEsNzEuMjgzIDE0NC4yNzYsNzEuMjgzIEMxNDMuNjM0LDcxLjI4MyAxNDMuMDMzLDcxLjE5MiAxNDIuNDc2LDcxIEwxNDIuNDc2LDcxIFoiIGlkPSJGaWxsLTMzIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0OC42NDgsNjkuNzA0IEMxNTQuMDMyLDY2LjU5NiAxNTguMzk2LDU5LjA2OCAxNTguMzk2LDUyLjg5MSBDMTU4LjM5Niw1MC44MzkgMTU3LjkxMyw0OS4xOTggMTU3LjA3NCw0OC4wMyBDMTU1LjI4OSw0Ni43NzggMTUyLjY5OSw0Ni44MzYgMTQ5LjgxNiw0OC41MDEgQzE0NC40MzMsNTEuNjA5IDE0MC4wNjgsNTkuMTM3IDE0MC4wNjgsNjUuMzE0IEMxNDAuMDY4LDY3LjM2NSAxNDAuNTUyLDY5LjAwNiAxNDEuMzkxLDcwLjE3NCBDMTQzLjE3Niw3MS40MjcgMTQ1Ljc2NSw3MS4zNjkgMTQ4LjY0OCw2OS43MDQiIGlkPSJGaWxsLTM0IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NC4yNzYsNzEuMjc2IEwxNDQuMjc2LDcxLjI3NiBDMTQzLjEzMyw3MS4yNzYgMTQyLjExOCw3MC45NjkgMTQxLjI1Nyw3MC4zNjUgQzE0MS4yMzYsNzAuMzUxIDE0MS4yMTcsNzAuMzMyIDE0MS4yMDIsNzAuMzExIEMxNDAuMzA3LDY5LjA2NyAxMzkuODM1LDY3LjMzOSAxMzkuODM1LDY1LjMxNCBDMTM5LjgzNSw1OS4wNzMgMTQ0LjI2LDUxLjQzOSAxNDkuNyw0OC4yOTggQzE1MS4yNzMsNDcuMzkgMTUyLjc4NCw0Ni45MjkgMTU0LjE4OSw0Ni45MjkgQzE1NS4zMzIsNDYuOTI5IDE1Ni4zNDcsNDcuMjM2IDE1Ny4yMDgsNDcuODM5IEMxNTcuMjI5LDQ3Ljg1NCAxNTcuMjQ4LDQ3Ljg3MyAxNTcuMjYzLDQ3Ljg5NCBDMTU4LjE1Nyw0OS4xMzggMTU4LjYzLDUwLjg2NSAxNTguNjMsNTIuODkxIEMxNTguNjMsNTkuMTMyIDE1NC4yMDUsNjYuNzY2IDE0OC43NjUsNjkuOTA3IEMxNDcuMTkyLDcwLjgxNSAxNDUuNjgxLDcxLjI3NiAxNDQuMjc2LDcxLjI3NiBMMTQ0LjI3Niw3MS4yNzYgWiBNMTQxLjU1OCw3MC4xMDQgQzE0Mi4zMzEsNzAuNjM3IDE0My4yNDUsNzEuMDA1IDE0NC4yNzYsNzEuMDA1IEMxNDUuNTk4LDcxLjAwNSAxNDcuMDMsNzAuNDY3IDE0OC41MzIsNjkuNiBDMTUzLjg0Miw2Ni41MzQgMTU4LjE2Myw1OS4wMzMgMTU4LjE2Myw1Mi45MzkgQzE1OC4xNjMsNTEuMDMxIDE1Ny43MjksNDkuMzg1IDE1Ni45MDcsNDguMjIzIEMxNTYuMTMzLDQ3LjY5MSAxNTUuMjE5LDQ3LjQwOSAxNTQuMTg5LDQ3LjQwOSBDMTUyLjg2Nyw0Ny40MDkgMTUxLjQzNSw0Ny44NDIgMTQ5LjkzMyw0OC43MDkgQzE0NC42MjMsNTEuNzc1IDE0MC4zMDIsNTkuMjczIDE0MC4zMDIsNjUuMzY2IEMxNDAuMzAyLDY3LjI3NiAxNDAuNzM2LDY4Ljk0MiAxNDEuNTU4LDcwLjEwNCBMMTQxLjU1OCw3MC4xMDQgWiIgaWQ9IkZpbGwtMzUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUwLjcyLDY1LjM2MSBMMTUwLjM1Nyw2NS4wNjYgQzE1MS4xNDcsNjQuMDkyIDE1MS44NjksNjMuMDQgMTUyLjUwNSw2MS45MzggQzE1My4zMTMsNjAuNTM5IDE1My45NzgsNTkuMDY3IDE1NC40ODIsNTcuNTYzIEwxNTQuOTI1LDU3LjcxMiBDMTU0LjQxMiw1OS4yNDUgMTUzLjczMyw2MC43NDUgMTUyLjkxLDYyLjE3MiBDMTUyLjI2Miw2My4yOTUgMTUxLjUyNSw2NC4zNjggMTUwLjcyLDY1LjM2MSIgaWQ9IkZpbGwtMzYiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE1LjkxNyw4NC41MTQgTDExNS41NTQsODQuMjIgQzExNi4zNDQsODMuMjQ1IDExNy4wNjYsODIuMTk0IDExNy43MDIsODEuMDkyIEMxMTguNTEsNzkuNjkyIDExOS4xNzUsNzguMjIgMTE5LjY3OCw3Ni43MTcgTDEyMC4xMjEsNzYuODY1IEMxMTkuNjA4LDc4LjM5OCAxMTguOTMsNzkuODk5IDExOC4xMDYsODEuMzI2IEMxMTcuNDU4LDgyLjQ0OCAxMTYuNzIyLDgzLjUyMSAxMTUuOTE3LDg0LjUxNCIgaWQ9IkZpbGwtMzciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE0LDEzMC40NzYgTDExNCwxMzAuMDA4IEwxMTQsNzYuMDUyIEwxMTQsNzUuNTg0IEwxMTQsNzYuMDUyIEwxMTQsMTMwLjAwOCBMMTE0LDEzMC40NzYiIGlkPSJGaWxsLTM4IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyLjAwMDAwMCwgMC4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuODIyLDM3LjQ3NCBDMTkuODM5LDM3LjMzOSAxOS43NDcsMzcuMTk0IDE5LjU1NSwzNy4wODIgQzE5LjIyOCwzNi44OTQgMTguNzI5LDM2Ljg3MiAxOC40NDYsMzcuMDM3IEwxMi40MzQsNDAuNTA4IEMxMi4zMDMsNDAuNTg0IDEyLjI0LDQwLjY4NiAxMi4yNDMsNDAuNzkzIEMxMi4yNDUsNDAuOTI1IDEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQxLjM3MSBMMTIuMjQ1LDQxLjQxNCBMMTIuMjM4LDQxLjU0MiBDOC4xNDgsNDMuODg3IDUuNjQ3LDQ1LjMyMSA1LjY0Nyw0NS4zMjEgQzUuNjQ2LDQ1LjMyMSAzLjU3LDQ2LjM2NyAyLjg2LDUwLjUxMyBDMi44Niw1MC41MTMgMS45NDgsNTcuNDc0IDEuOTYyLDcwLjI1OCBDMS45NzcsODIuODI4IDIuNTY4LDg3LjMyOCAzLjEyOSw5MS42MDkgQzMuMzQ5LDkzLjI5MyA2LjEzLDkzLjczNCA2LjEzLDkzLjczNCBDNi40NjEsOTMuNzc0IDYuODI4LDkzLjcwNyA3LjIxLDkzLjQ4NiBMODIuNDgzLDQ5LjkzNSBDODQuMjkxLDQ4Ljg2NiA4NS4xNSw0Ni4yMTYgODUuNTM5LDQzLjY1MSBDODYuNzUyLDM1LjY2MSA4Ny4yMTQsMTAuNjczIDg1LjI2NCwzLjc3MyBDODUuMDY4LDMuMDggODQuNzU0LDIuNjkgODQuMzk2LDIuNDkxIEw4Mi4zMSwxLjcwMSBDODEuNTgzLDEuNzI5IDgwLjg5NCwyLjE2OCA4MC43NzYsMi4yMzYgQzgwLjYzNiwyLjMxNyA0MS44MDcsMjQuNTg1IDIwLjAzMiwzNy4wNzIgTDE5LjgyMiwzNy40NzQiIGlkPSJGaWxsLTEiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNODIuMzExLDEuNzAxIEw4NC4zOTYsMi40OTEgQzg0Ljc1NCwyLjY5IDg1LjA2OCwzLjA4IDg1LjI2NCwzLjc3MyBDODcuMjEzLDEwLjY3MyA4Ni43NTEsMzUuNjYgODUuNTM5LDQzLjY1MSBDODUuMTQ5LDQ2LjIxNiA4NC4yOSw0OC44NjYgODIuNDgzLDQ5LjkzNSBMNy4yMSw5My40ODYgQzYuODk3LDkzLjY2NyA2LjU5NSw5My43NDQgNi4zMTQsOTMuNzQ0IEw2LjEzMSw5My43MzMgQzYuMTMxLDkzLjczNCAzLjM0OSw5My4yOTMgMy4xMjgsOTEuNjA5IEMyLjU2OCw4Ny4zMjcgMS45NzcsODIuODI4IDEuOTYzLDcwLjI1OCBDMS45NDgsNTcuNDc0IDIuODYsNTAuNTEzIDIuODYsNTAuNTEzIEMzLjU3LDQ2LjM2NyA1LjY0Nyw0NS4zMjEgNS42NDcsNDUuMzIxIEM1LjY0Nyw0NS4zMjEgOC4xNDgsNDMuODg3IDEyLjIzOCw0MS41NDIgTDEyLjI0NSw0MS40MTQgTDEyLjI0NSw0MS4zNzEgQzEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQwLjkyNSAxMi4yNDMsNDAuNzkzIEMxMi4yNCw0MC42ODYgMTIuMzAyLDQwLjU4MyAxMi40MzQsNDAuNTA4IEwxOC40NDYsMzcuMDM2IEMxOC41NzQsMzYuOTYyIDE4Ljc0NiwzNi45MjYgMTguOTI3LDM2LjkyNiBDMTkuMTQ1LDM2LjkyNiAxOS4zNzYsMzYuOTc5IDE5LjU1NCwzNy4wODIgQzE5Ljc0NywzNy4xOTQgMTkuODM5LDM3LjM0IDE5LjgyMiwzNy40NzQgTDIwLjAzMywzNy4wNzIgQzQxLjgwNiwyNC41ODUgODAuNjM2LDIuMzE4IDgwLjc3NywyLjIzNiBDODAuODk0LDIuMTY4IDgxLjU4MywxLjcyOSA4Mi4zMTEsMS43MDEgTTgyLjMxMSwwLjcwNCBMODIuMjcyLDAuNzA1IEM4MS42NTQsMC43MjggODAuOTg5LDAuOTQ5IDgwLjI5OCwxLjM2MSBMODAuMjc3LDEuMzczIEM4MC4xMjksMS40NTggNTkuNzY4LDEzLjEzNSAxOS43NTgsMzYuMDc5IEMxOS41LDM1Ljk4MSAxOS4yMTQsMzUuOTI5IDE4LjkyNywzNS45MjkgQzE4LjU2MiwzNS45MjkgMTguMjIzLDM2LjAxMyAxNy45NDcsMzYuMTczIEwxMS45MzUsMzkuNjQ0IEMxMS40OTMsMzkuODk5IDExLjIzNiw0MC4zMzQgMTEuMjQ2LDQwLjgxIEwxMS4yNDcsNDAuOTYgTDUuMTY3LDQ0LjQ0NyBDNC43OTQsNDQuNjQ2IDIuNjI1LDQ1Ljk3OCAxLjg3Nyw1MC4zNDUgTDEuODcxLDUwLjM4NCBDMS44NjIsNTAuNDU0IDAuOTUxLDU3LjU1NyAwLjk2NSw3MC4yNTkgQzAuOTc5LDgyLjg3OSAxLjU2OCw4Ny4zNzUgMi4xMzcsOTEuNzI0IEwyLjEzOSw5MS43MzkgQzIuNDQ3LDk0LjA5NCA1LjYxNCw5NC42NjIgNS45NzUsOTQuNzE5IEw2LjAwOSw5NC43MjMgQzYuMTEsOTQuNzM2IDYuMjEzLDk0Ljc0MiA2LjMxNCw5NC43NDIgQzYuNzksOTQuNzQyIDcuMjYsOTQuNjEgNy43MSw5NC4zNSBMODIuOTgzLDUwLjc5OCBDODQuNzk0LDQ5LjcyNyA4NS45ODIsNDcuMzc1IDg2LjUyNSw0My44MDEgQzg3LjcxMSwzNS45ODcgODguMjU5LDEwLjcwNSA4Ni4yMjQsMy41MDIgQzg1Ljk3MSwyLjYwOSA4NS41MiwxLjk3NSA4NC44ODEsMS42MiBMODQuNzQ5LDEuNTU4IEw4Mi42NjQsMC43NjkgQzgyLjU1MSwwLjcyNSA4Mi40MzEsMC43MDQgODIuMzExLDAuNzA0IiBpZD0iRmlsbC0yIiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY2LjI2NywxMS41NjUgTDY3Ljc2MiwxMS45OTkgTDExLjQyMyw0NC4zMjUiIGlkPSJGaWxsLTMiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMjAyLDkwLjU0NSBDMTIuMDI5LDkwLjU0NSAxMS44NjIsOTAuNDU1IDExLjc2OSw5MC4yOTUgQzExLjYzMiw5MC4wNTcgMTEuNzEzLDg5Ljc1MiAxMS45NTIsODkuNjE0IEwzMC4zODksNzguOTY5IEMzMC42MjgsNzguODMxIDMwLjkzMyw3OC45MTMgMzEuMDcxLDc5LjE1MiBDMzEuMjA4LDc5LjM5IDMxLjEyNyw3OS42OTYgMzAuODg4LDc5LjgzMyBMMTIuNDUxLDkwLjQ3OCBMMTIuMjAyLDkwLjU0NSIgaWQ9IkZpbGwtNCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43NjQsNDIuNjU0IEwxMy42NTYsNDIuNTkyIEwxMy43MDIsNDIuNDIxIEwxOC44MzcsMzkuNDU3IEwxOS4wMDcsMzkuNTAyIEwxOC45NjIsMzkuNjczIEwxMy44MjcsNDIuNjM3IEwxMy43NjQsNDIuNjU0IiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTguNTIsOTAuMzc1IEw4LjUyLDQ2LjQyMSBMOC41ODMsNDYuMzg1IEw3NS44NCw3LjU1NCBMNzUuODQsNTEuNTA4IEw3NS43NzgsNTEuNTQ0IEw4LjUyLDkwLjM3NSBMOC41Miw5MC4zNzUgWiBNOC43Nyw0Ni41NjQgTDguNzcsODkuOTQ0IEw3NS41OTEsNTEuMzY1IEw3NS41OTEsNy45ODUgTDguNzcsNDYuNTY0IEw4Ljc3LDQ2LjU2NCBaIiBpZD0iRmlsbC02IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljk4Niw4My4xODIgQzI0Ljc1Niw4My4zMzEgMjQuMzc0LDgzLjU2NiAyNC4xMzcsODMuNzA1IEwxMi42MzIsOTAuNDA2IEMxMi4zOTUsOTAuNTQ1IDEyLjQyNiw5MC42NTggMTIuNyw5MC42NTggTDEzLjI2NSw5MC42NTggQzEzLjU0LDkwLjY1OCAxMy45NTgsOTAuNTQ1IDE0LjE5NSw5MC40MDYgTDI1LjcsODMuNzA1IEMyNS45MzcsODMuNTY2IDI2LjEyOCw4My40NTIgMjYuMTI1LDgzLjQ0OSBDMjYuMTIyLDgzLjQ0NyAyNi4xMTksODMuMjIgMjYuMTE5LDgyLjk0NiBDMjYuMTE5LDgyLjY3MiAyNS45MzEsODIuNTY5IDI1LjcwMSw4Mi43MTkgTDI0Ljk4Niw4My4xODIiIGlkPSJGaWxsLTciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjY2LDkwLjc4MiBMMTIuNyw5MC43ODIgQzEyLjUsOTAuNzgyIDEyLjM4NCw5MC43MjYgMTIuMzU0LDkwLjYxNiBDMTIuMzI0LDkwLjUwNiAxMi4zOTcsOTAuMzk5IDEyLjU2OSw5MC4yOTkgTDI0LjA3NCw4My41OTcgQzI0LjMxLDgzLjQ1OSAyNC42ODksODMuMjI2IDI0LjkxOCw4My4wNzggTDI1LjYzMyw4Mi42MTQgQzI1LjcyMyw4Mi41NTUgMjUuODEzLDgyLjUyNSAyNS44OTksODIuNTI1IEMyNi4wNzEsODIuNTI1IDI2LjI0NCw4Mi42NTUgMjYuMjQ0LDgyLjk0NiBDMjYuMjQ0LDgzLjE2IDI2LjI0NSw4My4zMDkgMjYuMjQ3LDgzLjM4MyBMMjYuMjUzLDgzLjM4NyBMMjYuMjQ5LDgzLjQ1NiBDMjYuMjQ2LDgzLjUzMSAyNi4yNDYsODMuNTMxIDI1Ljc2Myw4My44MTIgTDE0LjI1OCw5MC41MTQgQzE0LDkwLjY2NSAxMy41NjQsOTAuNzgyIDEzLjI2Niw5MC43ODIgTDEzLjI2Niw5MC43ODIgWiBNMTIuNjY2LDkwLjUzMiBMMTIuNyw5MC41MzMgTDEzLjI2Niw5MC41MzMgQzEzLjUxOCw5MC41MzMgMTMuOTE1LDkwLjQyNSAxNC4xMzIsOTAuMjk5IEwyNS42MzcsODMuNTk3IEMyNS44MDUsODMuNDk5IDI1LjkzMSw4My40MjQgMjUuOTk4LDgzLjM4MyBDMjUuOTk0LDgzLjI5OSAyNS45OTQsODMuMTY1IDI1Ljk5NCw4Mi45NDYgTDI1Ljg5OSw4Mi43NzUgTDI1Ljc2OCw4Mi44MjQgTDI1LjA1NCw4My4yODcgQzI0LjgyMiw4My40MzcgMjQuNDM4LDgzLjY3MyAyNC4yLDgzLjgxMiBMMTIuNjk1LDkwLjUxNCBMMTIuNjY2LDkwLjUzMiBMMTIuNjY2LDkwLjUzMiBaIiBpZD0iRmlsbC04IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2Niw4OS44NzEgTDEyLjcsODkuODcxIEMxMi41LDg5Ljg3MSAxMi4zODQsODkuODE1IDEyLjM1NCw4OS43MDUgQzEyLjMyNCw4OS41OTUgMTIuMzk3LDg5LjQ4OCAxMi41NjksODkuMzg4IEwyNC4wNzQsODIuNjg2IEMyNC4zMzIsODIuNTM1IDI0Ljc2OCw4Mi40MTggMjUuMDY3LDgyLjQxOCBMMjUuNjMyLDgyLjQxOCBDMjUuODMyLDgyLjQxOCAyNS45NDgsODIuNDc0IDI1Ljk3OCw4Mi41ODQgQzI2LjAwOCw4Mi42OTQgMjUuOTM1LDgyLjgwMSAyNS43NjMsODIuOTAxIEwxNC4yNTgsODkuNjAzIEMxNCw4OS43NTQgMTMuNTY0LDg5Ljg3MSAxMy4yNjYsODkuODcxIEwxMy4yNjYsODkuODcxIFogTTEyLjY2Niw4OS42MjEgTDEyLjcsODkuNjIyIEwxMy4yNjYsODkuNjIyIEMxMy41MTgsODkuNjIyIDEzLjkxNSw4OS41MTUgMTQuMTMyLDg5LjM4OCBMMjUuNjM3LDgyLjY4NiBMMjUuNjY3LDgyLjY2OCBMMjUuNjMyLDgyLjY2NyBMMjUuMDY3LDgyLjY2NyBDMjQuODE1LDgyLjY2NyAyNC40MTgsODIuNzc1IDI0LjIsODIuOTAxIEwxMi42OTUsODkuNjAzIEwxMi42NjYsODkuNjIxIEwxMi42NjYsODkuNjIxIFoiIGlkPSJGaWxsLTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzcsOTAuODAxIEwxMi4zNyw4OS41NTQgTDEyLjM3LDkwLjgwMSIgaWQ9IkZpbGwtMTAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNi4xMyw5My45MDEgQzUuMzc5LDkzLjgwOCA0LjgxNiw5My4xNjQgNC42OTEsOTIuNTI1IEMzLjg2LDg4LjI4NyAzLjU0LDgzLjc0MyAzLjUyNiw3MS4xNzMgQzMuNTExLDU4LjM4OSA0LjQyMyw1MS40MjggNC40MjMsNTEuNDI4IEM1LjEzNCw0Ny4yODIgNy4yMSw0Ni4yMzYgNy4yMSw0Ni4yMzYgQzcuMjEsNDYuMjM2IDgxLjY2NywzLjI1IDgyLjA2OSwzLjAxNyBDODIuMjkyLDIuODg4IDg0LjU1NiwxLjQzMyA4NS4yNjQsMy45NCBDODcuMjE0LDEwLjg0IDg2Ljc1MiwzNS44MjcgODUuNTM5LDQzLjgxOCBDODUuMTUsNDYuMzgzIDg0LjI5MSw0OS4wMzMgODIuNDgzLDUwLjEwMSBMNy4yMSw5My42NTMgQzYuODI4LDkzLjg3NCA2LjQ2MSw5My45NDEgNi4xMyw5My45MDEgQzYuMTMsOTMuOTAxIDMuMzQ5LDkzLjQ2IDMuMTI5LDkxLjc3NiBDMi41NjgsODcuNDk1IDEuOTc3LDgyLjk5NSAxLjk2Miw3MC40MjUgQzEuOTQ4LDU3LjY0MSAyLjg2LDUwLjY4IDIuODYsNTAuNjggQzMuNTcsNDYuNTM0IDUuNjQ3LDQ1LjQ4OSA1LjY0Nyw0NS40ODkgQzUuNjQ2LDQ1LjQ4OSA4LjA2NSw0NC4wOTIgMTIuMjQ1LDQxLjY3OSBMMTMuMTE2LDQxLjU2IEwxOS43MTUsMzcuNzMgTDE5Ljc2MSwzNy4yNjkgTDYuMTMsOTMuOTAxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjMxNyw5NC4xNjEgTDYuMTAyLDk0LjE0OCBMNi4xMDEsOTQuMTQ4IEw1Ljg1Nyw5NC4xMDEgQzUuMTM4LDkzLjk0NSAzLjA4NSw5My4zNjUgMi44ODEsOTEuODA5IEMyLjMxMyw4Ny40NjkgMS43MjcsODIuOTk2IDEuNzEzLDcwLjQyNSBDMS42OTksNTcuNzcxIDIuNjA0LDUwLjcxOCAyLjYxMyw1MC42NDggQzMuMzM4LDQ2LjQxNyA1LjQ0NSw0NS4zMSA1LjUzNSw0NS4yNjYgTDEyLjE2Myw0MS40MzkgTDEzLjAzMyw0MS4zMiBMMTkuNDc5LDM3LjU3OCBMMTkuNTEzLDM3LjI0NCBDMTkuNTI2LDM3LjEwNyAxOS42NDcsMzcuMDA4IDE5Ljc4NiwzNy4wMjEgQzE5LjkyMiwzNy4wMzQgMjAuMDIzLDM3LjE1NiAyMC4wMDksMzcuMjkzIEwxOS45NSwzNy44ODIgTDEzLjE5OCw0MS44MDEgTDEyLjMyOCw0MS45MTkgTDUuNzcyLDQ1LjcwNCBDNS43NDEsNDUuNzIgMy43ODIsNDYuNzcyIDMuMTA2LDUwLjcyMiBDMy4wOTksNTAuNzgyIDIuMTk4LDU3LjgwOCAyLjIxMiw3MC40MjQgQzIuMjI2LDgyLjk2MyAyLjgwOSw4Ny40MiAzLjM3Myw5MS43MjkgQzMuNDY0LDkyLjQyIDQuMDYyLDkyLjg4MyA0LjY4Miw5My4xODEgQzQuNTY2LDkyLjk4NCA0LjQ4Niw5Mi43NzYgNC40NDYsOTIuNTcyIEMzLjY2NSw4OC41ODggMy4yOTEsODQuMzcgMy4yNzYsNzEuMTczIEMzLjI2Miw1OC41MiA0LjE2Nyw1MS40NjYgNC4xNzYsNTEuMzk2IEM0LjkwMSw0Ny4xNjUgNy4wMDgsNDYuMDU5IDcuMDk4LDQ2LjAxNCBDNy4wOTQsNDYuMDE1IDgxLjU0MiwzLjAzNCA4MS45NDQsMi44MDIgTDgxLjk3MiwyLjc4NSBDODIuODc2LDIuMjQ3IDgzLjY5MiwyLjA5NyA4NC4zMzIsMi4zNTIgQzg0Ljg4NywyLjU3MyA4NS4yODEsMy4wODUgODUuNTA0LDMuODcyIEM4Ny41MTgsMTEgODYuOTY0LDM2LjA5MSA4NS43ODUsNDMuODU1IEM4NS4yNzgsNDcuMTk2IDg0LjIxLDQ5LjM3IDgyLjYxLDUwLjMxNyBMNy4zMzUsOTMuODY5IEM2Ljk5OSw5NC4wNjMgNi42NTgsOTQuMTYxIDYuMzE3LDk0LjE2MSBMNi4zMTcsOTQuMTYxIFogTTYuMTcsOTMuNjU0IEM2LjQ2Myw5My42OSA2Ljc3NCw5My42MTcgNy4wODUsOTMuNDM3IEw4Mi4zNTgsNDkuODg2IEM4NC4xODEsNDguODA4IDg0Ljk2LDQ1Ljk3MSA4NS4yOTIsNDMuNzggQzg2LjQ2NiwzNi4wNDkgODcuMDIzLDExLjA4NSA4NS4wMjQsNC4wMDggQzg0Ljg0NiwzLjM3NyA4NC41NTEsMi45NzYgODQuMTQ4LDIuODE2IEM4My42NjQsMi42MjMgODIuOTgyLDIuNzY0IDgyLjIyNywzLjIxMyBMODIuMTkzLDMuMjM0IEM4MS43OTEsMy40NjYgNy4zMzUsNDYuNDUyIDcuMzM1LDQ2LjQ1MiBDNy4zMDQsNDYuNDY5IDUuMzQ2LDQ3LjUyMSA0LjY2OSw1MS40NzEgQzQuNjYyLDUxLjUzIDMuNzYxLDU4LjU1NiAzLjc3NSw3MS4xNzMgQzMuNzksODQuMzI4IDQuMTYxLDg4LjUyNCA0LjkzNiw5Mi40NzYgQzUuMDI2LDkyLjkzNyA1LjQxMiw5My40NTkgNS45NzMsOTMuNjE1IEM2LjA4Nyw5My42NCA2LjE1OCw5My42NTIgNi4xNjksOTMuNjU0IEw2LjE3LDkzLjY1NCBMNi4xNyw5My42NTQgWiIgaWQ9IkZpbGwtMTIiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4zMTcsNjguOTgyIEM3LjgwNiw2OC43MDEgOC4yMDIsNjguOTI2IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNi44MjksNzEuMjk0IDYuNDMzLDcxLjA2OSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIiBpZD0iRmlsbC0xMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjkyLDcxLjEzMyBDNi42MzEsNzEuMTMzIDYuNDMzLDcwLjkwNSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIEM3LjQ2LDY4LjkgNy41OTUsNjguODYxIDcuNzE0LDY4Ljg2MSBDOC4wMDMsNjguODYxIDguMjAyLDY5LjA5IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNy4xNzQsNzEuMDk0IDcuMDM5LDcxLjEzMyA2LjkyLDcxLjEzMyBNNy43MTQsNjguNjc0IEM3LjU1Nyw2OC42NzQgNy4zOTIsNjguNzIzIDcuMjI0LDY4LjgyMSBDNi42NzYsNjkuMTM4IDYuMjQ2LDY5Ljg3OSA2LjI0Niw3MC41MDggQzYuMjQ2LDcwLjk5NCA2LjUxNyw3MS4zMiA2LjkyLDcxLjMyIEM3LjA3OCw3MS4zMiA3LjI0Myw3MS4yNzEgNy40MTEsNzEuMTc0IEM3Ljk1OSw3MC44NTcgOC4zODksNzAuMTE3IDguMzg5LDY5LjQ4NyBDOC4zODksNjkuMDAxIDguMTE3LDY4LjY3NCA3LjcxNCw2OC42NzQiIGlkPSJGaWxsLTE0IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYuOTIsNzAuOTQ3IEM2LjY0OSw3MC45NDcgNi42MjEsNzAuNjQgNi42MjEsNzAuNTA4IEM2LjYyMSw3MC4wMTcgNi45ODIsNjkuMzkyIDcuNDExLDY5LjE0NSBDNy41MjEsNjkuMDgyIDcuNjI1LDY5LjA0OSA3LjcxNCw2OS4wNDkgQzcuOTg2LDY5LjA0OSA4LjAxNSw2OS4zNTUgOC4wMTUsNjkuNDg3IEM4LjAxNSw2OS45NzggNy42NTIsNzAuNjAzIDcuMjI0LDcwLjg1MSBDNy4xMTUsNzAuOTE0IDcuMDEsNzAuOTQ3IDYuOTIsNzAuOTQ3IE03LjcxNCw2OC44NjEgQzcuNTk1LDY4Ljg2MSA3LjQ2LDY4LjkgNy4zMTcsNjguOTgyIEM2LjgyOSw2OS4yNjUgNi40MzMsNjkuOTQ4IDYuNDMzLDcwLjUwOCBDNi40MzMsNzAuOTA1IDYuNjMxLDcxLjEzMyA2LjkyLDcxLjEzMyBDNy4wMzksNzEuMTMzIDcuMTc0LDcxLjA5NCA3LjMxNyw3MS4wMTIgQzcuODA2LDcwLjczIDguMjAyLDcwLjA0NyA4LjIwMiw2OS40ODcgQzguMjAyLDY5LjA5IDguMDAzLDY4Ljg2MSA3LjcxNCw2OC44NjEiIGlkPSJGaWxsLTE1IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuNDQ0LDg1LjM1IEM3LjcwOCw4NS4xOTggNy45MjEsODUuMzE5IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuOTI1IDcuNzA4LDg2LjI5MiA3LjQ0NCw4Ni40NDQgQzcuMTgxLDg2LjU5NyA2Ljk2Nyw4Ni40NzUgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IiBpZD0iRmlsbC0xNiIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjIzLDg2LjUxIEM3LjA3NCw4Ni41MSA2Ljk2Nyw4Ni4zODcgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IEM3LjUyMSw4NS4zMDUgNy41OTQsODUuMjg0IDcuNjU4LDg1LjI4NCBDNy44MTQsODUuMjg0IDcuOTIxLDg1LjQwOCA3LjkyMSw4NS42MjIgQzcuOTIxLDg1LjkyNSA3LjcwOCw4Ni4yOTIgNy40NDQsODYuNDQ0IEM3LjM2Nyw4Ni40ODkgNy4yOTQsODYuNTEgNy4yMyw4Ni41MSBNNy42NTgsODUuMDk4IEM3LjU1OCw4NS4wOTggNy40NTUsODUuMTI3IDcuMzUxLDg1LjE4OCBDNy4wMzEsODUuMzczIDYuNzgxLDg1LjgwNiA2Ljc4MSw4Ni4xNzMgQzYuNzgxLDg2LjQ4MiA2Ljk2Niw4Ni42OTcgNy4yMyw4Ni42OTcgQzcuMzMsODYuNjk3IDcuNDMzLDg2LjY2NiA3LjUzOCw4Ni42MDcgQzcuODU4LDg2LjQyMiA4LjEwOCw4NS45ODkgOC4xMDgsODUuNjIyIEM4LjEwOCw4NS4zMTMgNy45MjMsODUuMDk4IDcuNjU4LDg1LjA5OCIgaWQ9IkZpbGwtMTciIGZpbGw9IiM4MDk3QTIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4yMyw4Ni4zMjIgTDcuMTU0LDg2LjE3MyBDNy4xNTQsODUuOTM4IDcuMzMzLDg1LjYyOSA3LjUzOCw4NS41MTIgTDcuNjU4LDg1LjQ3MSBMNy43MzQsODUuNjIyIEM3LjczNCw4NS44NTYgNy41NTUsODYuMTY0IDcuMzUxLDg2LjI4MiBMNy4yMyw4Ni4zMjIgTTcuNjU4LDg1LjI4NCBDNy41OTQsODUuMjg0IDcuNTIxLDg1LjMwNSA3LjQ0NCw4NS4zNSBDNy4xODEsODUuNTAyIDYuOTY3LDg1Ljg3MSA2Ljk2Nyw4Ni4xNzMgQzYuOTY3LDg2LjM4NyA3LjA3NCw4Ni41MSA3LjIzLDg2LjUxIEM3LjI5NCw4Ni41MSA3LjM2Nyw4Ni40ODkgNy40NDQsODYuNDQ0IEM3LjcwOCw4Ni4yOTIgNy45MjEsODUuOTI1IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuNDA4IDcuODE0LDg1LjI4NCA3LjY1OCw4NS4yODQiIGlkPSJGaWxsLTE4IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTc3LjI3OCw3Ljc2OSBMNzcuMjc4LDUxLjQzNiBMMTAuMjA4LDkwLjE2IEwxMC4yMDgsNDYuNDkzIEw3Ny4yNzgsNy43NjkiIGlkPSJGaWxsLTE5IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA4Myw5MC4zNzUgTDEwLjA4Myw0Ni40MjEgTDEwLjE0Niw0Ni4zODUgTDc3LjQwMyw3LjU1NCBMNzcuNDAzLDUxLjUwOCBMNzcuMzQxLDUxLjU0NCBMMTAuMDgzLDkwLjM3NSBMMTAuMDgzLDkwLjM3NSBaIE0xMC4zMzMsNDYuNTY0IEwxMC4zMzMsODkuOTQ0IEw3Ny4xNTQsNTEuMzY1IEw3Ny4xNTQsNy45ODUgTDEwLjMzMyw0Ni41NjQgTDEwLjMzMyw0Ni41NjQgWiIgaWQ9IkZpbGwtMjAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjUuNzM3LDg4LjY0NyBMMTE4LjA5OCw5MS45ODEgTDExOC4wOTgsODQgTDEwNi42MzksODguNzEzIEwxMDYuNjM5LDk2Ljk4MiBMOTksMTAwLjMxNSBMMTEyLjM2OSwxMDMuOTYxIEwxMjUuNzM3LDg4LjY0NyIgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTIiIGZpbGw9IiM0NTVBNjQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+'); +}; + +module.exports = RotateInstructions; + +},{"./util.js":22}],17:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var SensorSample = _dereq_('./sensor-sample.js'); +var MathUtil = _dereq_('../math-util.js'); +var Util = _dereq_('../util.js'); + +/** + * An implementation of a simple complementary filter, which fuses gyroscope and + * accelerometer data from the 'devicemotion' event. + * + * Accelerometer data is very noisy, but stable over the long term. + * Gyroscope data is smooth, but tends to drift over the long term. + * + * This fusion is relatively simple: + * 1. Get orientation estimates from accelerometer by applying a low-pass filter + * on that data. + * 2. Get orientation estimates from gyroscope by integrating over time. + * 3. Combine the two estimates, weighing (1) in the long term, but (2) for the + * short term. + */ +function ComplementaryFilter(kFilter) { + this.kFilter = kFilter; + + // Raw sensor measurements. + this.currentAccelMeasurement = new SensorSample(); + this.currentGyroMeasurement = new SensorSample(); + this.previousGyroMeasurement = new SensorSample(); + + // Set default look direction to be in the correct direction. + if (Util.isIOS()) { + this.filterQ = new MathUtil.Quaternion(-1, 0, 0, 1); + } else { + this.filterQ = new MathUtil.Quaternion(1, 0, 0, 1); + } + this.previousFilterQ = new MathUtil.Quaternion(); + this.previousFilterQ.copy(this.filterQ); + + // Orientation based on the accelerometer. + this.accelQ = new MathUtil.Quaternion(); + // Whether or not the orientation has been initialized. + this.isOrientationInitialized = false; + // Running estimate of gravity based on the current orientation. + this.estimatedGravity = new MathUtil.Vector3(); + // Measured gravity based on accelerometer. + this.measuredGravity = new MathUtil.Vector3(); + + // Debug only quaternion of gyro-based orientation. + this.gyroIntegralQ = new MathUtil.Quaternion(); +} + +ComplementaryFilter.prototype.addAccelMeasurement = function(vector, timestampS) { + this.currentAccelMeasurement.set(vector, timestampS); +}; + +ComplementaryFilter.prototype.addGyroMeasurement = function(vector, timestampS) { + this.currentGyroMeasurement.set(vector, timestampS); + + var deltaT = timestampS - this.previousGyroMeasurement.timestampS; + if (Util.isTimestampDeltaValid(deltaT)) { + this.run_(); + } + + this.previousGyroMeasurement.copy(this.currentGyroMeasurement); +}; + +ComplementaryFilter.prototype.run_ = function() { + + if (!this.isOrientationInitialized) { + this.accelQ = this.accelToQuaternion_(this.currentAccelMeasurement.sample); + this.previousFilterQ.copy(this.accelQ); + this.isOrientationInitialized = true; + return; + } + + var deltaT = this.currentGyroMeasurement.timestampS - + this.previousGyroMeasurement.timestampS; + + // Convert gyro rotation vector to a quaternion delta. + var gyroDeltaQ = this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample, deltaT); + this.gyroIntegralQ.multiply(gyroDeltaQ); + + // filter_1 = K * (filter_0 + gyro * dT) + (1 - K) * accel. + this.filterQ.copy(this.previousFilterQ); + this.filterQ.multiply(gyroDeltaQ); + + // Calculate the delta between the current estimated gravity and the real + // gravity vector from accelerometer. + var invFilterQ = new MathUtil.Quaternion(); + invFilterQ.copy(this.filterQ); + invFilterQ.inverse(); + + this.estimatedGravity.set(0, 0, -1); + this.estimatedGravity.applyQuaternion(invFilterQ); + this.estimatedGravity.normalize(); + + this.measuredGravity.copy(this.currentAccelMeasurement.sample); + this.measuredGravity.normalize(); + + // Compare estimated gravity with measured gravity, get the delta quaternion + // between the two. + var deltaQ = new MathUtil.Quaternion(); + deltaQ.setFromUnitVectors(this.estimatedGravity, this.measuredGravity); + deltaQ.inverse(); + + if (Util.isDebug()) { + console.log('Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)', + MathUtil.radToDeg * Util.getQuaternionAngle(deltaQ), + (this.estimatedGravity.x).toFixed(1), + (this.estimatedGravity.y).toFixed(1), + (this.estimatedGravity.z).toFixed(1), + (this.measuredGravity.x).toFixed(1), + (this.measuredGravity.y).toFixed(1), + (this.measuredGravity.z).toFixed(1)); + } + + // Calculate the SLERP target: current orientation plus the measured-estimated + // quaternion delta. + var targetQ = new MathUtil.Quaternion(); + targetQ.copy(this.filterQ); + targetQ.multiply(deltaQ); + + // SLERP factor: 0 is pure gyro, 1 is pure accel. + this.filterQ.slerp(targetQ, 1 - this.kFilter); + + this.previousFilterQ.copy(this.filterQ); +}; + +ComplementaryFilter.prototype.getOrientation = function() { + return this.filterQ; +}; + +ComplementaryFilter.prototype.accelToQuaternion_ = function(accel) { + var normAccel = new MathUtil.Vector3(); + normAccel.copy(accel); + normAccel.normalize(); + var quat = new MathUtil.Quaternion(); + quat.setFromUnitVectors(new MathUtil.Vector3(0, 0, -1), normAccel); + quat.inverse(); + return quat; +}; + +ComplementaryFilter.prototype.gyroToQuaternionDelta_ = function(gyro, dt) { + // Extract axis and angle from the gyroscope data. + var quat = new MathUtil.Quaternion(); + var axis = new MathUtil.Vector3(); + axis.copy(gyro); + axis.normalize(); + quat.setFromAxisAngle(axis, gyro.length() * dt); + return quat; +}; + + +module.exports = ComplementaryFilter; + +},{"../math-util.js":14,"../util.js":22,"./sensor-sample.js":20}],18:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ComplementaryFilter = _dereq_('./complementary-filter.js'); +var PosePredictor = _dereq_('./pose-predictor.js'); +var TouchPanner = _dereq_('../touch-panner.js'); +var MathUtil = _dereq_('../math-util.js'); +var Util = _dereq_('../util.js'); + +/** + * The pose sensor, implemented using DeviceMotion APIs. + */ +function FusionPoseSensor() { + this.deviceId = 'webvr-polyfill:fused'; + this.deviceName = 'VR Position Device (webvr-polyfill:fused)'; + + this.accelerometer = new MathUtil.Vector3(); + this.gyroscope = new MathUtil.Vector3(); + + this.start(); + + this.filter = new ComplementaryFilter(WebVRConfig.K_FILTER); + this.posePredictor = new PosePredictor(WebVRConfig.PREDICTION_TIME_S); + this.touchPanner = new TouchPanner(); + + this.filterToWorldQ = new MathUtil.Quaternion(); + + // Set the filter to world transform, depending on OS. + if (Util.isIOS()) { + this.filterToWorldQ.setFromAxisAngle(new MathUtil.Vector3(1, 0, 0), Math.PI / 2); + } else { + this.filterToWorldQ.setFromAxisAngle(new MathUtil.Vector3(1, 0, 0), -Math.PI / 2); + } + + this.inverseWorldToScreenQ = new MathUtil.Quaternion(); + this.worldToScreenQ = new MathUtil.Quaternion(); + this.originalPoseAdjustQ = new MathUtil.Quaternion(); + this.originalPoseAdjustQ.setFromAxisAngle(new MathUtil.Vector3(0, 0, 1), + -window.orientation * Math.PI / 180); + + this.setScreenTransform_(); + // Adjust this filter for being in landscape mode. + if (Util.isLandscapeMode()) { + this.filterToWorldQ.multiply(this.inverseWorldToScreenQ); + } + + // Keep track of a reset transform for resetSensor. + this.resetQ = new MathUtil.Quaternion(); + + this.isFirefoxAndroid = Util.isFirefoxAndroid(); + this.isIOS = Util.isIOS(); + + this.orientationOut_ = new Float32Array(4); +} + +FusionPoseSensor.prototype.getPosition = function() { + // This PoseSensor doesn't support position + return null; +}; + +FusionPoseSensor.prototype.getOrientation = function() { + // Convert from filter space to the the same system used by the + // deviceorientation event. + var orientation = this.filter.getOrientation(); + + // Predict orientation. + this.predictedQ = this.posePredictor.getPrediction(orientation, this.gyroscope, this.previousTimestampS); + + // Convert to THREE coordinate system: -Z forward, Y up, X right. + var out = new MathUtil.Quaternion(); + out.copy(this.filterToWorldQ); + out.multiply(this.resetQ); + if (!WebVRConfig.TOUCH_PANNER_DISABLED) { + out.multiply(this.touchPanner.getOrientation()); + } + out.multiply(this.predictedQ); + out.multiply(this.worldToScreenQ); + + // Handle the yaw-only case. + if (WebVRConfig.YAW_ONLY) { + // Make a quaternion that only turns around the Y-axis. + out.x = 0; + out.z = 0; + out.normalize(); + } + + this.orientationOut_[0] = out.x; + this.orientationOut_[1] = out.y; + this.orientationOut_[2] = out.z; + this.orientationOut_[3] = out.w; + return this.orientationOut_; +}; + +FusionPoseSensor.prototype.resetPose = function() { + // Reduce to inverted yaw-only. + this.resetQ.copy(this.filter.getOrientation()); + this.resetQ.x = 0; + this.resetQ.y = 0; + this.resetQ.z *= -1; + this.resetQ.normalize(); + + // Take into account extra transformations in landscape mode. + if (Util.isLandscapeMode()) { + this.resetQ.multiply(this.inverseWorldToScreenQ); + } + + // Take into account original pose. + this.resetQ.multiply(this.originalPoseAdjustQ); + + if (!WebVRConfig.TOUCH_PANNER_DISABLED) { + this.touchPanner.resetSensor(); + } +}; + +FusionPoseSensor.prototype.onDeviceMotion_ = function(deviceMotion) { + this.updateDeviceMotion_(deviceMotion); +}; + +FusionPoseSensor.prototype.updateDeviceMotion_ = function(deviceMotion) { + var accGravity = deviceMotion.accelerationIncludingGravity; + var rotRate = deviceMotion.rotationRate; + var timestampS = deviceMotion.timeStamp / 1000; + + // Firefox Android timeStamp returns one thousandth of a millisecond. + if (this.isFirefoxAndroid) { + timestampS /= 1000; + } + + var deltaS = timestampS - this.previousTimestampS; + if (deltaS <= Util.MIN_TIMESTEP || deltaS > Util.MAX_TIMESTEP) { + console.warn('Invalid timestamps detected. Time step between successive ' + + 'gyroscope sensor samples is very small or not monotonic'); + this.previousTimestampS = timestampS; + return; + } + this.accelerometer.set(-accGravity.x, -accGravity.y, -accGravity.z); + this.gyroscope.set(rotRate.alpha, rotRate.beta, rotRate.gamma); + + // With iOS and Firefox Android, rotationRate is reported in degrees, + // so we first convert to radians. + if (this.isIOS || this.isFirefoxAndroid) { + this.gyroscope.multiplyScalar(Math.PI / 180); + } + + this.filter.addAccelMeasurement(this.accelerometer, timestampS); + this.filter.addGyroMeasurement(this.gyroscope, timestampS); + + this.previousTimestampS = timestampS; +}; + +FusionPoseSensor.prototype.onOrientationChange_ = function(screenOrientation) { + this.setScreenTransform_(); +}; + +/** + * This is only needed if we are in an cross origin iframe on iOS to work around + * this issue: https://bugs.webkit.org/show_bug.cgi?id=152299. + */ +FusionPoseSensor.prototype.onMessage_ = function(event) { + var message = event.data; + + // If there's no message type, ignore it. + if (!message || !message.type) { + return; + } + + // Ignore all messages that aren't devicemotion. + var type = message.type.toLowerCase(); + if (type !== 'devicemotion') { + return; + } + + // Update device motion. + this.updateDeviceMotion_(message.deviceMotionEvent); +}; + +FusionPoseSensor.prototype.setScreenTransform_ = function() { + this.worldToScreenQ.set(0, 0, 0, 1); + switch (window.orientation) { + case 0: + break; + case 90: + this.worldToScreenQ.setFromAxisAngle(new MathUtil.Vector3(0, 0, 1), -Math.PI / 2); + break; + case -90: + this.worldToScreenQ.setFromAxisAngle(new MathUtil.Vector3(0, 0, 1), Math.PI / 2); + break; + case 180: + // TODO. + break; + } + this.inverseWorldToScreenQ.copy(this.worldToScreenQ); + this.inverseWorldToScreenQ.inverse(); +}; + +FusionPoseSensor.prototype.start = function() { + this.onDeviceMotionCallback_ = this.onDeviceMotion_.bind(this); + this.onOrientationChangeCallback_ = this.onOrientationChange_.bind(this); + this.onMessageCallback_ = this.onMessage_.bind(this); + + // Only listen for postMessages if we're in an iOS and embedded inside a cross + // domain IFrame. In this case, the polyfill can still work if the containing + // page sends synthetic devicemotion events. For an example of this, see + // iframe-message-sender.js in VR View: https://goo.gl/XDtvFZ + if (Util.isIOS() && Util.isInsideCrossDomainIFrame()) { + window.addEventListener('message', this.onMessageCallback_); + } + window.addEventListener('orientationchange', this.onOrientationChangeCallback_); + window.addEventListener('devicemotion', this.onDeviceMotionCallback_); +}; + +FusionPoseSensor.prototype.stop = function() { + window.removeEventListener('devicemotion', this.onDeviceMotionCallback_); + window.removeEventListener('orientationchange', this.onOrientationChangeCallback_); + window.removeEventListener('message', this.onMessageCallback_); +}; + +module.exports = FusionPoseSensor; + +},{"../math-util.js":14,"../touch-panner.js":21,"../util.js":22,"./complementary-filter.js":17,"./pose-predictor.js":19}],19:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var MathUtil = _dereq_('../math-util'); +var Util = _dereq_('../util'); + +/** + * Given an orientation and the gyroscope data, predicts the future orientation + * of the head. This makes rendering appear faster. + * + * Also see: http://msl.cs.uiuc.edu/~lavalle/papers/LavYerKatAnt14.pdf + * + * @param {Number} predictionTimeS time from head movement to the appearance of + * the corresponding image. + */ +function PosePredictor(predictionTimeS) { + this.predictionTimeS = predictionTimeS; + + // The quaternion corresponding to the previous state. + this.previousQ = new MathUtil.Quaternion(); + // Previous time a prediction occurred. + this.previousTimestampS = null; + + // The delta quaternion that adjusts the current pose. + this.deltaQ = new MathUtil.Quaternion(); + // The output quaternion. + this.outQ = new MathUtil.Quaternion(); +} + +PosePredictor.prototype.getPrediction = function(currentQ, gyro, timestampS) { + if (!this.previousTimestampS) { + this.previousQ.copy(currentQ); + this.previousTimestampS = timestampS; + return currentQ; + } + + // Calculate axis and angle based on gyroscope rotation rate data. + var axis = new MathUtil.Vector3(); + axis.copy(gyro); + axis.normalize(); + + var angularSpeed = gyro.length(); + + // If we're rotating slowly, don't do prediction. + if (angularSpeed < MathUtil.degToRad * 20) { + if (Util.isDebug()) { + console.log('Moving slowly, at %s deg/s: no prediction', + (MathUtil.radToDeg * angularSpeed).toFixed(1)); + } + this.outQ.copy(currentQ); + this.previousQ.copy(currentQ); + return this.outQ; + } + + // Get the predicted angle based on the time delta and latency. + var deltaT = timestampS - this.previousTimestampS; + var predictAngle = angularSpeed * this.predictionTimeS; + + this.deltaQ.setFromAxisAngle(axis, predictAngle); + this.outQ.copy(this.previousQ); + this.outQ.multiply(this.deltaQ); + + this.previousQ.copy(currentQ); + this.previousTimestampS = timestampS; + + return this.outQ; +}; + + +module.exports = PosePredictor; + +},{"../math-util":14,"../util":22}],20:[function(_dereq_,module,exports){ +function SensorSample(sample, timestampS) { + this.set(sample, timestampS); +}; + +SensorSample.prototype.set = function(sample, timestampS) { + this.sample = sample; + this.timestampS = timestampS; +}; + +SensorSample.prototype.copy = function(sensorSample) { + this.set(sensorSample.sample, sensorSample.timestampS); +}; + +module.exports = SensorSample; + +},{}],21:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var MathUtil = _dereq_('./math-util.js'); +var Util = _dereq_('./util.js'); + +var ROTATE_SPEED = 0.5; +/** + * Provides a quaternion responsible for pre-panning the scene before further + * transformations due to device sensors. + */ +function TouchPanner() { + window.addEventListener('touchstart', this.onTouchStart_.bind(this)); + window.addEventListener('touchmove', this.onTouchMove_.bind(this)); + window.addEventListener('touchend', this.onTouchEnd_.bind(this)); + + this.isTouching = false; + this.rotateStart = new MathUtil.Vector2(); + this.rotateEnd = new MathUtil.Vector2(); + this.rotateDelta = new MathUtil.Vector2(); + + this.theta = 0; + this.orientation = new MathUtil.Quaternion(); +} + +TouchPanner.prototype.getOrientation = function() { + this.orientation.setFromEulerXYZ(0, 0, this.theta); + return this.orientation; +}; + +TouchPanner.prototype.resetSensor = function() { + this.theta = 0; +}; + +TouchPanner.prototype.onTouchStart_ = function(e) { + // Only respond if there is exactly one touch. + if (e.touches.length != 1) { + return; + } + this.rotateStart.set(e.touches[0].pageX, e.touches[0].pageY); + this.isTouching = true; +}; + +TouchPanner.prototype.onTouchMove_ = function(e) { + if (!this.isTouching) { + return; + } + this.rotateEnd.set(e.touches[0].pageX, e.touches[0].pageY); + this.rotateDelta.subVectors(this.rotateEnd, this.rotateStart); + this.rotateStart.copy(this.rotateEnd); + + // On iOS, direction is inverted. + if (Util.isIOS()) { + this.rotateDelta.x *= -1; + } + + var element = document.body; + this.theta += 2 * Math.PI * this.rotateDelta.x / element.clientWidth * ROTATE_SPEED; +}; + +TouchPanner.prototype.onTouchEnd_ = function(e) { + this.isTouching = false; +}; + +module.exports = TouchPanner; + +},{"./math-util.js":14,"./util.js":22}],22:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var objectAssign = _dereq_('object-assign'); + +var Util = window.Util || {}; + +Util.MIN_TIMESTEP = 0.001; +Util.MAX_TIMESTEP = 1; + +Util.base64 = function(mimeType, base64) { + return 'data:' + mimeType + ';base64,' + base64; +}; + +Util.clamp = function(value, min, max) { + return Math.min(Math.max(min, value), max); +}; + +Util.lerp = function(a, b, t) { + return a + ((b - a) * t); +}; + +Util.isIOS = (function() { + var isIOS = /iPad|iPhone|iPod/.test(navigator.platform); + return function() { + return isIOS; + }; +})(); + +Util.isSafari = (function() { + var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + return function() { + return isSafari; + }; +})(); + +Util.isFirefoxAndroid = (function() { + var isFirefoxAndroid = navigator.userAgent.indexOf('Firefox') !== -1 && + navigator.userAgent.indexOf('Android') !== -1; + return function() { + return isFirefoxAndroid; + }; +})(); + +Util.isLandscapeMode = function() { + return (window.orientation == 90 || window.orientation == -90); +}; + +// Helper method to validate the time steps of sensor timestamps. +Util.isTimestampDeltaValid = function(timestampDeltaS) { + if (isNaN(timestampDeltaS)) { + return false; + } + if (timestampDeltaS <= Util.MIN_TIMESTEP) { + return false; + } + if (timestampDeltaS > Util.MAX_TIMESTEP) { + return false; + } + return true; +}; + +Util.getScreenWidth = function() { + return Math.max(window.screen.width, window.screen.height) * + window.devicePixelRatio; +}; + +Util.getScreenHeight = function() { + return Math.min(window.screen.width, window.screen.height) * + window.devicePixelRatio; +}; + +Util.requestFullscreen = function(element) { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } else { + return false; + } + + return true; +}; + +Util.exitFullscreen = function() { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else { + return false; + } + + return true; +}; + +Util.getFullscreenElement = function() { + return document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.msFullscreenElement; +}; + +Util.linkProgram = function(gl, vertexSource, fragmentSource, attribLocationMap) { + // No error checking for brevity. + var vertexShader = gl.createShader(gl.VERTEX_SHADER); + gl.shaderSource(vertexShader, vertexSource); + gl.compileShader(vertexShader); + + var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); + gl.shaderSource(fragmentShader, fragmentSource); + gl.compileShader(fragmentShader); + + var program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + + for (var attribName in attribLocationMap) + gl.bindAttribLocation(program, attribLocationMap[attribName], attribName); + + gl.linkProgram(program); + + gl.deleteShader(vertexShader); + gl.deleteShader(fragmentShader); + + return program; +}; + +Util.getProgramUniforms = function(gl, program) { + var uniforms = {}; + var uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + var uniformName = ''; + for (var i = 0; i < uniformCount; i++) { + var uniformInfo = gl.getActiveUniform(program, i); + uniformName = uniformInfo.name.replace('[0]', ''); + uniforms[uniformName] = gl.getUniformLocation(program, uniformName); + } + return uniforms; +}; + +Util.orthoMatrix = function (out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right), + bt = 1 / (bottom - top), + nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 2 * nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = (far + near) * nf; + out[15] = 1; + return out; +}; + +Util.copyArray = function (source, dest) { + for (var i = 0, n = source.length; i < n; i++) { + dest[i] = source[i]; + } +}; + +Util.isMobile = function() { + var check = false; + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera); + return check; +}; + +Util.extend = objectAssign; + +Util.safariCssSizeWorkaround = function(canvas) { + // TODO(smus): Remove this workaround when Safari for iOS is fixed. + // iOS only workaround (for https://bugs.webkit.org/show_bug.cgi?id=152556). + // + // "To the last I grapple with thee; + // from hell's heart I stab at thee; + // for hate's sake I spit my last breath at thee." + // -- Moby Dick, by Herman Melville + if (Util.isIOS()) { + var width = canvas.style.width; + var height = canvas.style.height; + canvas.style.width = (parseInt(width) + 1) + 'px'; + canvas.style.height = (parseInt(height)) + 'px'; + setTimeout(function() { + canvas.style.width = width; + canvas.style.height = height; + }, 100); + } + + // Debug only. + window.Util = Util; + window.canvas = canvas; +}; + +Util.isDebug = function() { + return Util.getQueryParameter('debug'); +}; + +Util.getQueryParameter = function(name) { + var name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); + var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), + results = regex.exec(location.search); + return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); +}; + +Util.frameDataFromPose = (function() { + var piOver180 = Math.PI / 180.0; + var rad45 = Math.PI * 0.25; + + // Borrowed from glMatrix. + function mat4_perspectiveFromFieldOfView(out, fov, near, far) { + var upTan = Math.tan(fov ? (fov.upDegrees * piOver180) : rad45), + downTan = Math.tan(fov ? (fov.downDegrees * piOver180) : rad45), + leftTan = Math.tan(fov ? (fov.leftDegrees * piOver180) : rad45), + rightTan = Math.tan(fov ? (fov.rightDegrees * piOver180) : rad45), + xScale = 2.0 / (leftTan + rightTan), + yScale = 2.0 / (upTan + downTan); + + out[0] = xScale; + out[1] = 0.0; + out[2] = 0.0; + out[3] = 0.0; + out[4] = 0.0; + out[5] = yScale; + out[6] = 0.0; + out[7] = 0.0; + out[8] = -((leftTan - rightTan) * xScale * 0.5); + out[9] = ((upTan - downTan) * yScale * 0.5); + out[10] = far / (near - far); + out[11] = -1.0; + out[12] = 0.0; + out[13] = 0.0; + out[14] = (far * near) / (near - far); + out[15] = 0.0; + return out; + } + + function mat4_fromRotationTranslation(out, q, v) { + // Quaternion math + var x = q[0], y = q[1], z = q[2], w = q[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + xy = x * y2, + xz = x * z2, + yy = y * y2, + yz = y * z2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + out[0] = 1 - (yy + zz); + out[1] = xy + wz; + out[2] = xz - wy; + out[3] = 0; + out[4] = xy - wz; + out[5] = 1 - (xx + zz); + out[6] = yz + wx; + out[7] = 0; + out[8] = xz + wy; + out[9] = yz - wx; + out[10] = 1 - (xx + yy); + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + + return out; + }; + + function mat4_translate(out, a, v) { + var x = v[0], y = v[1], z = v[2], + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23; + + if (a === out) { + out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; + out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; + out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; + out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; + } else { + a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; + a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; + a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; + + out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03; + out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13; + out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23; + + out[12] = a00 * x + a10 * y + a20 * z + a[12]; + out[13] = a01 * x + a11 * y + a21 * z + a[13]; + out[14] = a02 * x + a12 * y + a22 * z + a[14]; + out[15] = a03 * x + a13 * y + a23 * z + a[15]; + } + + return out; + }; + + function mat4_invert(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + // Calculate the determinant + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + + return out; + }; + + var defaultOrientation = new Float32Array([0, 0, 0, 1]); + var defaultPosition = new Float32Array([0, 0, 0]); + + function updateEyeMatrices(projection, view, pose, parameters, vrDisplay) { + mat4_perspectiveFromFieldOfView(projection, parameters ? parameters.fieldOfView : null, vrDisplay.depthNear, vrDisplay.depthFar); + + var orientation = pose.orientation || defaultOrientation; + var position = pose.position || defaultPosition; + + mat4_fromRotationTranslation(view, orientation, position); + if (parameters) + mat4_translate(view, view, parameters.offset); + mat4_invert(view, view); + } + + return function(frameData, pose, vrDisplay) { + if (!frameData || !pose) + return false; + + frameData.pose = pose; + frameData.timestamp = pose.timestamp; + + updateEyeMatrices( + frameData.leftProjectionMatrix, frameData.leftViewMatrix, + pose, vrDisplay.getEyeParameters("left"), vrDisplay); + updateEyeMatrices( + frameData.rightProjectionMatrix, frameData.rightViewMatrix, + pose, vrDisplay.getEyeParameters("right"), vrDisplay); + + return true; + }; +})(); + +Util.isInsideCrossDomainIFrame = function() { + var isFramed = (window.self !== window.top); + var refDomain = Util.getDomainFromUrl(document.referrer); + var thisDomain = Util.getDomainFromUrl(window.location.href); + + return isFramed && (refDomain !== thisDomain); +}; + +// From http://stackoverflow.com/a/23945027. +Util.getDomainFromUrl = function(url) { + var domain; + // Find & remove protocol (http, ftp, etc.) and get domain. + if (url.indexOf("://") > -1) { + domain = url.split('/')[2]; + } + else { + domain = url.split('/')[0]; + } + + //find & remove port number + domain = domain.split(':')[0]; + + return domain; +} + +module.exports = Util; + +},{"object-assign":2}],23:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var DeviceInfo = _dereq_('./device-info.js'); +var EventEmitter3 = _dereq_('eventemitter3'); +var Util = _dereq_('./util.js'); + +var DEFAULT_VIEWER = 'CardboardV1'; +var VIEWER_KEY = 'WEBVR_CARDBOARD_VIEWER'; +var CLASS_NAME = 'webvr-polyfill-viewer-selector'; + +/** + * Creates a viewer selector with the options specified. Supports being shown + * and hidden. Generates events when viewer parameters change. Also supports + * saving the currently selected index in localStorage. + */ +function ViewerSelector() { + // Try to load the selected key from local storage. If none exists, use the + // default key. + try { + this.selectedKey = localStorage.getItem(VIEWER_KEY) || DEFAULT_VIEWER; + } catch (error) { + console.error('Failed to load viewer profile: %s', error); + } + this.dialog = this.createDialog_(DeviceInfo.Viewers); + this.root = null; +} +ViewerSelector.prototype = new EventEmitter3(); + +ViewerSelector.prototype.show = function(root) { + this.root = root; + + root.appendChild(this.dialog); + + // Ensure the currently selected item is checked. + var selected = this.dialog.querySelector('#' + this.selectedKey); + selected.checked = true; + + // Show the UI. + this.dialog.style.display = 'block'; +}; + +ViewerSelector.prototype.hide = function() { + if (this.root && this.root.contains(this.dialog)) { + this.root.removeChild(this.dialog); + } + this.dialog.style.display = 'none'; +}; + +ViewerSelector.prototype.getCurrentViewer = function() { + return DeviceInfo.Viewers[this.selectedKey]; +}; + +ViewerSelector.prototype.getSelectedKey_ = function() { + var input = this.dialog.querySelector('input[name=field]:checked'); + if (input) { + return input.id; + } + return null; +}; + +ViewerSelector.prototype.onSave_ = function() { + this.selectedKey = this.getSelectedKey_(); + if (!this.selectedKey || !DeviceInfo.Viewers[this.selectedKey]) { + console.error('ViewerSelector.onSave_: this should never happen!'); + return; + } + + this.emit('change', DeviceInfo.Viewers[this.selectedKey]); + + // Attempt to save the viewer profile, but fails in private mode. + try { + localStorage.setItem(VIEWER_KEY, this.selectedKey); + } catch(error) { + console.error('Failed to save viewer profile: %s', error); + } + this.hide(); +}; + +/** + * Creates the dialog. + */ +ViewerSelector.prototype.createDialog_ = function(options) { + var container = document.createElement('div'); + container.classList.add(CLASS_NAME); + container.style.display = 'none'; + // Create an overlay that dims the background, and which goes away when you + // tap it. + var overlay = document.createElement('div'); + var s = overlay.style; + s.position = 'fixed'; + s.left = 0; + s.top = 0; + s.width = '100%'; + s.height = '100%'; + s.background = 'rgba(0, 0, 0, 0.3)'; + overlay.addEventListener('click', this.hide.bind(this)); + + var width = 280; + var dialog = document.createElement('div'); + var s = dialog.style; + s.boxSizing = 'border-box'; + s.position = 'fixed'; + s.top = '24px'; + s.left = '50%'; + s.marginLeft = (-width/2) + 'px'; + s.width = width + 'px'; + s.padding = '24px'; + s.overflow = 'hidden'; + s.background = '#fafafa'; + s.fontFamily = "'Roboto', sans-serif"; + s.boxShadow = '0px 5px 20px #666'; + + dialog.appendChild(this.createH1_('Select your viewer')); + for (var id in options) { + dialog.appendChild(this.createChoice_(id, options[id].label)); + } + dialog.appendChild(this.createButton_('Save', this.onSave_.bind(this))); + + container.appendChild(overlay); + container.appendChild(dialog); + + return container; +}; + +ViewerSelector.prototype.createH1_ = function(name) { + var h1 = document.createElement('h1'); + var s = h1.style; + s.color = 'black'; + s.fontSize = '20px'; + s.fontWeight = 'bold'; + s.marginTop = 0; + s.marginBottom = '24px'; + h1.innerHTML = name; + return h1; +}; + +ViewerSelector.prototype.createChoice_ = function(id, name) { + /* +

      + + +
      + */ + var div = document.createElement('div'); + div.style.marginTop = '8px'; + div.style.color = 'black'; + + var input = document.createElement('input'); + input.style.fontSize = '30px'; + input.setAttribute('id', id); + input.setAttribute('type', 'radio'); + input.setAttribute('value', id); + input.setAttribute('name', 'field'); + + var label = document.createElement('label'); + label.style.marginLeft = '4px'; + label.setAttribute('for', id); + label.innerHTML = name; + + div.appendChild(input); + div.appendChild(label); + + return div; +}; + +ViewerSelector.prototype.createButton_ = function(label, onclick) { + var button = document.createElement('button'); + button.innerHTML = label; + var s = button.style; + s.float = 'right'; + s.textTransform = 'uppercase'; + s.color = '#1094f7'; + s.fontSize = '14px'; + s.letterSpacing = 0; + s.border = 0; + s.background = 'none'; + s.marginTop = '16px'; + + button.addEventListener('click', onclick); + + return button; +}; + +module.exports = ViewerSelector; + +},{"./device-info.js":8,"./util.js":22,"eventemitter3":1}],24:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Util = _dereq_('./util.js'); + +/** + * Android and iOS compatible wakelock implementation. + * + * Refactored thanks to dkovalev@. + */ +function AndroidWakeLock() { + var video = document.createElement('video'); + + video.addEventListener('ended', function() { + video.play(); + }); + + this.request = function() { + if (video.paused) { + // Base64 version of videos_src/no-sleep-120s.mp4. + video.src = Util.base64('video/mp4', 'AAAAGGZ0eXBpc29tAAAAAG1wNDFhdmMxAAAIA21vb3YAAABsbXZoZAAAAADSa9v60mvb+gABX5AAlw/gAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAdkdHJhawAAAFx0a2hkAAAAAdJr2/rSa9v6AAAAAQAAAAAAlw/gAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAQAAAAHAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAJcP4AAAAAAAAQAAAAAG3G1kaWEAAAAgbWRoZAAAAADSa9v60mvb+gAPQkAGjneAFccAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAABodtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAZHc3RibAAAAJdzdHNkAAAAAAAAAAEAAACHYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAMABwASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADFhdmNDAWQAC//hABlnZAALrNlfllw4QAAAAwBAAAADAKPFCmWAAQAFaOvssiwAAAAYc3R0cwAAAAAAAAABAAAAbgAPQkAAAAAUc3RzcwAAAAAAAAABAAAAAQAAA4BjdHRzAAAAAAAAAG4AAAABAD0JAAAAAAEAehIAAAAAAQA9CQAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEATEtAAAAAAQAehIAAAAABAAAAAAAAAAEAD0JAAAAAAQBMS0AAAAABAB6EgAAAAAEAAAAAAAAAAQAPQkAAAAABAExLQAAAAAEAHoSAAAAAAQAAAAAAAAABAA9CQAAAAAEALcbAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAABuAAAAAQAAAcxzdHN6AAAAAAAAAAAAAABuAAADCQAAABgAAAAOAAAADgAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABIAAAAOAAAADAAAAAwAAAASAAAADgAAAAwAAAAMAAAAEgAAAA4AAAAMAAAADAAAABMAAAAUc3RjbwAAAAAAAAABAAAIKwAAACt1ZHRhAAAAI6llbmMAFwAAdmxjIDIuMi4xIHN0cmVhbSBvdXRwdXQAAAAId2lkZQAACRRtZGF0AAACrgX//6vcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTQyIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MTIgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1hYnIgbWJ0cmVlPTEgYml0cmF0ZT0xMDAgcmF0ZXRvbD0xLjAgcWNvbXA9MC42MCBxcG1pbj0xMCBxcG1heD01MSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAU2WIhAAQ/8ltlOe+cTZuGkKg+aRtuivcDZ0pBsfsEi9p/i1yU9DxS2lq4dXTinViF1URBKXgnzKBd/Uh1bkhHtMrwrRcOJslD01UB+fyaL6ef+DBAAAAFEGaJGxBD5B+v+a+4QqF3MgBXz9MAAAACkGeQniH/+94r6EAAAAKAZ5hdEN/8QytwAAAAAgBnmNqQ3/EgQAAAA5BmmhJqEFomUwIIf/+4QAAAApBnoZFESw//76BAAAACAGepXRDf8SBAAAACAGep2pDf8SAAAAADkGarEmoQWyZTAgh//7gAAAACkGeykUVLD//voEAAAAIAZ7pdEN/xIAAAAAIAZ7rakN/xIAAAAAOQZrwSahBbJlMCCH//uEAAAAKQZ8ORRUsP/++gQAAAAgBny10Q3/EgQAAAAgBny9qQ3/EgAAAAA5BmzRJqEFsmUwIIf/+4AAAAApBn1JFFSw//76BAAAACAGfcXRDf8SAAAAACAGfc2pDf8SAAAAADkGbeEmoQWyZTAgh//7hAAAACkGflkUVLD//voAAAAAIAZ+1dEN/xIEAAAAIAZ+3akN/xIEAAAAOQZu8SahBbJlMCCH//uAAAAAKQZ/aRRUsP/++gQAAAAgBn/l0Q3/EgAAAAAgBn/tqQ3/EgQAAAA5Bm+BJqEFsmUwIIf/+4QAAAApBnh5FFSw//76AAAAACAGePXRDf8SAAAAACAGeP2pDf8SBAAAADkGaJEmoQWyZTAgh//7gAAAACkGeQkUVLD//voEAAAAIAZ5hdEN/xIAAAAAIAZ5jakN/xIEAAAAOQZpoSahBbJlMCCH//uEAAAAKQZ6GRRUsP/++gQAAAAgBnqV0Q3/EgQAAAAgBnqdqQ3/EgAAAAA5BmqxJqEFsmUwIIf/+4AAAAApBnspFFSw//76BAAAACAGe6XRDf8SAAAAACAGe62pDf8SAAAAADkGa8EmoQWyZTAgh//7hAAAACkGfDkUVLD//voEAAAAIAZ8tdEN/xIEAAAAIAZ8vakN/xIAAAAAOQZs0SahBbJlMCCH//uAAAAAKQZ9SRRUsP/++gQAAAAgBn3F0Q3/EgAAAAAgBn3NqQ3/EgAAAAA5Bm3hJqEFsmUwIIf/+4QAAAApBn5ZFFSw//76AAAAACAGftXRDf8SBAAAACAGft2pDf8SBAAAADkGbvEmoQWyZTAgh//7gAAAACkGf2kUVLD//voEAAAAIAZ/5dEN/xIAAAAAIAZ/7akN/xIEAAAAOQZvgSahBbJlMCCH//uEAAAAKQZ4eRRUsP/++gAAAAAgBnj10Q3/EgAAAAAgBnj9qQ3/EgQAAAA5BmiRJqEFsmUwIIf/+4AAAAApBnkJFFSw//76BAAAACAGeYXRDf8SAAAAACAGeY2pDf8SBAAAADkGaaEmoQWyZTAgh//7hAAAACkGehkUVLD//voEAAAAIAZ6ldEN/xIEAAAAIAZ6nakN/xIAAAAAOQZqsSahBbJlMCCH//uAAAAAKQZ7KRRUsP/++gQAAAAgBnul0Q3/EgAAAAAgBnutqQ3/EgAAAAA5BmvBJqEFsmUwIIf/+4QAAAApBnw5FFSw//76BAAAACAGfLXRDf8SBAAAACAGfL2pDf8SAAAAADkGbNEmoQWyZTAgh//7gAAAACkGfUkUVLD//voEAAAAIAZ9xdEN/xIAAAAAIAZ9zakN/xIAAAAAOQZt4SahBbJlMCCH//uEAAAAKQZ+WRRUsP/++gAAAAAgBn7V0Q3/EgQAAAAgBn7dqQ3/EgQAAAA5Bm7xJqEFsmUwIIf/+4AAAAApBn9pFFSw//76BAAAACAGf+XRDf8SAAAAACAGf+2pDf8SBAAAADkGb4EmoQWyZTAgh//7hAAAACkGeHkUVLD//voAAAAAIAZ49dEN/xIAAAAAIAZ4/akN/xIEAAAAOQZokSahBbJlMCCH//uAAAAAKQZ5CRRUsP/++gQAAAAgBnmF0Q3/EgAAAAAgBnmNqQ3/EgQAAAA5BmmhJqEFsmUwIIf/+4QAAAApBnoZFFSw//76BAAAACAGepXRDf8SBAAAACAGep2pDf8SAAAAADkGarEmoQWyZTAgh//7gAAAACkGeykUVLD//voEAAAAIAZ7pdEN/xIAAAAAIAZ7rakN/xIAAAAAPQZruSahBbJlMFEw3//7B'); + video.play(); + } + }; + + this.release = function() { + video.pause(); + video.src = ''; + }; +} + +function iOSWakeLock() { + var timer = null; + + this.request = function() { + if (!timer) { + timer = setInterval(function() { + window.location = window.location; + setTimeout(window.stop, 0); + }, 30000); + } + } + + this.release = function() { + if (timer) { + clearInterval(timer); + timer = null; + } + } +} + + +function getWakeLock() { + var userAgent = navigator.userAgent || navigator.vendor || window.opera; + if (userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) { + return iOSWakeLock; + } else { + return AndroidWakeLock; + } +} + +module.exports = getWakeLock(); +},{"./util.js":22}],25:[function(_dereq_,module,exports){ +/* + * Copyright 2015 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Util = _dereq_('./util.js'); +var CardboardVRDisplay = _dereq_('./cardboard-vr-display.js'); +var MouseKeyboardVRDisplay = _dereq_('./mouse-keyboard-vr-display.js'); +// Uncomment to add positional tracking via webcam. +//var WebcamPositionSensorVRDevice = require('./webcam-position-sensor-vr-device.js'); +var VRDisplay = _dereq_('./base.js').VRDisplay; +var VRFrameData = _dereq_('./base.js').VRFrameData; +var HMDVRDevice = _dereq_('./base.js').HMDVRDevice; +var PositionSensorVRDevice = _dereq_('./base.js').PositionSensorVRDevice; +var VRDisplayHMDDevice = _dereq_('./display-wrappers.js').VRDisplayHMDDevice; +var VRDisplayPositionSensorDevice = _dereq_('./display-wrappers.js').VRDisplayPositionSensorDevice; + +function WebVRPolyfill() { + this.displays = []; + this.devices = []; // For deprecated objects + this.devicesPopulated = false; + this.nativeWebVRAvailable = this.isWebVRAvailable(); + this.nativeLegacyWebVRAvailable = this.isDeprecatedWebVRAvailable(); + this.nativeGetVRDisplaysFunc = this.nativeWebVRAvailable ? + navigator.getVRDisplays : + null; + + if (!this.nativeLegacyWebVRAvailable) { + this.enablePolyfill(); + if (WebVRConfig.ENABLE_DEPRECATED_API) { + this.enableDeprecatedPolyfill(); + } + } + + // Put a shim in place to update the API to 1.1 if needed. + InstallWebVRSpecShim(); +} + +WebVRPolyfill.prototype.isWebVRAvailable = function() { + return ('getVRDisplays' in navigator); +}; + +WebVRPolyfill.prototype.isDeprecatedWebVRAvailable = function() { + return ('getVRDevices' in navigator) || ('mozGetVRDevices' in navigator); +}; + +WebVRPolyfill.prototype.populateDevices = function() { + if (this.devicesPopulated) { + return; + } + + // Initialize our virtual VR devices. + var vrDisplay = null; + + // Add a Cardboard VRDisplay on compatible mobile devices + if (this.isCardboardCompatible()) { + vrDisplay = new CardboardVRDisplay(); + this.displays.push(vrDisplay); + + // For backwards compatibility + if (WebVRConfig.ENABLE_DEPRECATED_API) { + this.devices.push(new VRDisplayHMDDevice(vrDisplay)); + this.devices.push(new VRDisplayPositionSensorDevice(vrDisplay)); + } + } + + // Add a Mouse and Keyboard driven VRDisplay for desktops/laptops + if (!this.isMobile() && !WebVRConfig.MOUSE_KEYBOARD_CONTROLS_DISABLED) { + vrDisplay = new MouseKeyboardVRDisplay(); + this.displays.push(vrDisplay); + + // For backwards compatibility + if (WebVRConfig.ENABLE_DEPRECATED_API) { + this.devices.push(new VRDisplayHMDDevice(vrDisplay)); + this.devices.push(new VRDisplayPositionSensorDevice(vrDisplay)); + } + } + + // Uncomment to add positional tracking via webcam. + //if (!this.isMobile() && WebVRConfig.ENABLE_DEPRECATED_API) { + // positionDevice = new WebcamPositionSensorVRDevice(); + // this.devices.push(positionDevice); + //} + + this.devicesPopulated = true; +}; + +WebVRPolyfill.prototype.enablePolyfill = function() { + // Provide navigator.getVRDisplays. + navigator.getVRDisplays = this.getVRDisplays.bind(this); + + // Polyfill native VRDisplay.getFrameData + if (this.nativeWebVRAvailable && this.isCardboardCompatible() && window.VRFrameData) { + var nativeFrameData = new window.VRFrameData(); + var nativeGetFrameData = window.VRDisplay.prototype.getFrameData; + window.VRFrameData = VRFrameData; + + window.VRDisplay.prototype.getFrameData = function(frameData) { + /* + Copy frame data from native object into polyfilled object + */ + + nativeGetFrameData.call(this, nativeFrameData); + frameData.pose = nativeFrameData.pose; + Util.copyArray(nativeFrameData.leftProjectionMatrix, frameData.leftProjectionMatrix); + Util.copyArray(nativeFrameData.rightProjectionMatrix, frameData.rightProjectionMatrix); + Util.copyArray(nativeFrameData.leftViewMatrix, frameData.leftViewMatrix); + Util.copyArray(nativeFrameData.rightViewMatrix, frameData.rightViewMatrix); + //todo: copy + }; + } + + // Provide the VRDisplay object. + window.VRDisplay = VRDisplay; + + // Provide navigator.vrEnabled. + var self = this; + Object.defineProperty(navigator, 'vrEnabled', { + get: function () { + return self.isCardboardCompatible() && + (self.isFullScreenAvailable() || Util.isIOS()); + } + }); + + if (!'VRFrameData' in window) { + // Provide the VRFrameData object. + window.VRFrameData = VRFrameData; + } +}; + +WebVRPolyfill.prototype.enableDeprecatedPolyfill = function() { + // Provide navigator.getVRDevices. + navigator.getVRDevices = this.getVRDevices.bind(this); + + // Provide the CardboardHMDVRDevice and PositionSensorVRDevice objects. + window.HMDVRDevice = HMDVRDevice; + window.PositionSensorVRDevice = PositionSensorVRDevice; +}; + +WebVRPolyfill.prototype.getVRDisplays = function() { + this.populateDevices(); + var polyfillDisplays = this.displays; + + if (this.nativeWebVRAvailable) { + return this.nativeGetVRDisplaysFunc.call(navigator).then(function(nativeDisplays) { + if (WebVRConfig.ALWAYS_APPEND_POLYFILL_DISPLAY) { + return nativeDisplays.concat(polyfillDisplays); + } else { + return nativeDisplays.length > 0 ? nativeDisplays : polyfillDisplays; + } + }); + } else { + return new Promise(function(resolve, reject) { + try { + resolve(polyfillDisplays); + } catch (e) { + reject(e); + } + }); + } +}; + +WebVRPolyfill.prototype.getVRDevices = function() { + console.warn('getVRDevices is deprecated. Please update your code to use getVRDisplays instead.'); + var self = this; + return new Promise(function(resolve, reject) { + try { + if (!self.devicesPopulated) { + if (self.nativeWebVRAvailable) { + return navigator.getVRDisplays(function(displays) { + for (var i = 0; i < displays.length; ++i) { + self.devices.push(new VRDisplayHMDDevice(displays[i])); + self.devices.push(new VRDisplayPositionSensorDevice(displays[i])); + } + self.devicesPopulated = true; + resolve(self.devices); + }, reject); + } + + if (self.nativeLegacyWebVRAvailable) { + return (navigator.getVRDDevices || navigator.mozGetVRDevices)(function(devices) { + for (var i = 0; i < devices.length; ++i) { + if (devices[i] instanceof HMDVRDevice) { + self.devices.push(devices[i]); + } + if (devices[i] instanceof PositionSensorVRDevice) { + self.devices.push(devices[i]); + } + } + self.devicesPopulated = true; + resolve(self.devices); + }, reject); + } + } + + self.populateDevices(); + resolve(self.devices); + } catch (e) { + reject(e); + } + }); +}; + +/** + * Determine if a device is mobile. + */ +WebVRPolyfill.prototype.isMobile = function() { + return /Android/i.test(navigator.userAgent) || + /iPhone|iPad|iPod/i.test(navigator.userAgent); +}; + +WebVRPolyfill.prototype.isCardboardCompatible = function() { + // For now, support all iOS and Android devices. + // Also enable the WebVRConfig.FORCE_VR flag for debugging. + return this.isMobile() || WebVRConfig.FORCE_ENABLE_VR; +}; + +WebVRPolyfill.prototype.isFullScreenAvailable = function() { + return (document.fullscreenEnabled || + document.mozFullScreenEnabled || + document.webkitFullscreenEnabled || + false); +}; + +// Installs a shim that updates a WebVR 1.0 spec implementation to WebVR 1.1 +function InstallWebVRSpecShim() { + if ('VRDisplay' in window && !('VRFrameData' in window)) { + // Provide the VRFrameData object. + window.VRFrameData = VRFrameData; + + // A lot of Chrome builds don't have depthNear and depthFar, even + // though they're in the WebVR 1.0 spec. Patch them in if they're not present. + if(!('depthNear' in window.VRDisplay.prototype)) { + window.VRDisplay.prototype.depthNear = 0.01; + } + + if(!('depthFar' in window.VRDisplay.prototype)) { + window.VRDisplay.prototype.depthFar = 10000.0; + } + + window.VRDisplay.prototype.getFrameData = function(frameData) { + return Util.frameDataFromPose(frameData, this.getPose(), this); + } + } +}; + +module.exports.WebVRPolyfill = WebVRPolyfill; + +},{"./base.js":3,"./cardboard-vr-display.js":6,"./display-wrappers.js":9,"./mouse-keyboard-vr-display.js":15,"./util.js":22}]},{},[13])(13) +}); \ No newline at end of file diff --git a/demo/ar/three.js/src/markers-area/threex-armultimarkercontrols.js b/demo/ar/three.js/src/markers-area/threex-armultimarkercontrols.js new file mode 100644 index 0000000..1f7e4b4 --- /dev/null +++ b/demo/ar/three.js/src/markers-area/threex-armultimarkercontrols.js @@ -0,0 +1,322 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaControls = THREEx.ArMultiMarkerControls = function(arToolkitContext, object3d, parameters){ + var _this = this + THREEx.ArBaseControls.call(this, object3d) + + if( arguments.length > 3 ) console.assert('wrong api for', THREEx.ArMultiMarkerControls) + + // have a parameters in argument + this.parameters = { + // list of controls for each subMarker + subMarkersControls: parameters.subMarkersControls, + // list of pose for each subMarker relative to the origin + subMarkerPoses: parameters.subMarkerPoses, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : parameters.changeMatrixMode !== undefined ? parameters.changeMatrixMode : 'modelViewMatrix', + } + + this.object3d.visible = false + // honor obsolete stuff - add a warning to use + this.subMarkersControls = this.parameters.subMarkersControls + this.subMarkerPoses = this.parameters.subMarkerPoses + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + +ARjs.MarkersAreaControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkersAreaControls.prototype.constructor = ARjs.MarkersAreaControls; + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaControls.prototype._onSourceProcessed = function(){ + var _this = this + var stats = { + count: 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + + var firstQuaternion = _this.parameters.subMarkersControls[0].object3d.quaternion + + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + + var markerObject3d = markerControls.object3d + // if this marker is not visible, ignore it + if( markerObject3d.visible === false ) return + + // transformation matrix of this.object3d according to this sub-markers + var matrix = markerObject3d.matrix.clone() + var markerPose = _this.parameters.subMarkerPoses[markerIndex] + matrix.multiply(new THREE.Matrix4().getInverse(markerPose)) + + // decompose the matrix into .position, .quaternion, .scale + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion() + var scale = new THREE.Vector3 + matrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + // honor _this.object3d.visible + if( stats.count > 0 ){ + _this.object3d.visible = true + }else{ + _this.object3d.visible = false + } + + // if at least one sub-marker has been detected, make the average of all detected markers + if( stats.count > 0 ){ + // compute modelViewMatrix + var modelViewMatrix = new THREE.Matrix4() + modelViewMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + // change _this.object3d.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + _this.object3d.matrix.copy(modelViewMatrix) + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + _this.object3d.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + _this.object3d.matrix.decompose(_this.object3d.position, _this.object3d.quaternion, _this.object3d.scale) + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + */ +ARjs.MarkersAreaControls.averageQuaternion = function(quaternionSum, newQuaternion, firstQuaternion, count, quaternionAverage){ + quaternionAverage = quaternionAverage || new THREE.Quaternion() + // sanity check + console.assert(firstQuaternion instanceof THREE.Quaternion === true) + + // from http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + if( newQuaternion.dot(firstQuaternion) > 0 ){ + newQuaternion = new THREE.Quaternion(-newQuaternion.x, -newQuaternion.y, -newQuaternion.z, -newQuaternion.w) + } + + quaternionSum.x += newQuaternion.x + quaternionSum.y += newQuaternion.y + quaternionSum.z += newQuaternion.z + quaternionSum.w += newQuaternion.w + + quaternionAverage.x = quaternionSum.x/count + quaternionAverage.y = quaternionSum.y/count + quaternionAverage.z = quaternionSum.z/count + quaternionAverage.w = quaternionSum.w/count + + quaternionAverage.normalize() + + return quaternionAverage +} + + +ARjs.MarkersAreaControls.averageVector3 = function(vector3Sum, vector3, count, vector3Average){ + vector3Average = vector3Average || new THREE.Vector3() + + vector3Sum.x += vector3.x + vector3Sum.y += vector3.y + vector3Sum.z += vector3.z + + vector3Average.x = vector3Sum.x / count + vector3Average.y = vector3Sum.y / count + vector3Average.z = vector3Sum.z / count + + return vector3Average +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * compute the center of this multimarker file + */ +ARjs.MarkersAreaControls.computeCenter = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var stats = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + var firstQuaternion = new THREE.Quaternion() // FIXME ??? + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + // http://wiki.unity3d.com/index.php/Averaging_Quaternions_and_Vectors + stats.count++ + + ARjs.MarkersAreaControls.averageVector3(stats.position.sum, position, stats.count, stats.position.average) + ARjs.MarkersAreaControls.averageQuaternion(stats.quaternion.sum, quaternion, firstQuaternion, stats.count, stats.quaternion.average) + ARjs.MarkersAreaControls.averageVector3(stats.scale.sum, scale, stats.count, stats.scale.average) + }) + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(stats.position.average, stats.quaternion.average, stats.scale.average) + + return averageMatrix +} + +ARjs.MarkersAreaControls.computeBoundingBox = function(jsonData){ + var multiMarkerFile = JSON.parse(jsonData) + var boundingBox = new THREE.Box3() + + multiMarkerFile.subMarkersControls.forEach(function(item){ + var poseMatrix = new THREE.Matrix4().fromArray(item.poseMatrix) + + var position = new THREE.Vector3 + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3 + poseMatrix.decompose(position, quaternion, scale) + + boundingBox.expandByPoint(position) + }) + + return boundingBox +} +////////////////////////////////////////////////////////////////////////////// +// updateSmoothedControls +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.prototype.updateSmoothedControls = function(smoothedControls, lerpsValues){ + // handle default values + if( lerpsValues === undefined ){ + // FIXME this parameter format is uselessly cryptic + // lerpValues = [ + // {lerpPosition: 0.5, lerpQuaternion: 0.2, lerpQuaternion: 0.7} + // ] + lerpsValues = [ + [0.3+.1, 0.1, 0.3], + [0.4+.1, 0.1, 0.4], + [0.4+.1, 0.2, 0.5], + [0.5+.1, 0.2, 0.7], + [0.5+.1, 0.2, 0.7], + ] + } + // count how many subMarkersControls are visible + var nVisible = 0 + this.parameters.subMarkersControls.forEach(function(markerControls, markerIndex){ + var markerObject3d = markerControls.object3d + if( markerObject3d.visible === true ) nVisible ++ + }) + + // find the good lerpValues + if( lerpsValues[nVisible-1] !== undefined ){ + var lerpValues = lerpsValues[nVisible-1] + }else{ + var lerpValues = lerpsValues[lerpsValues.length-1] + } + + // modify lerpValues in smoothedControls + smoothedControls.parameters.lerpPosition = lerpValues[0] + smoothedControls.parameters.lerpQuaternion = lerpValues[1] + smoothedControls.parameters.lerpScale = lerpValues[2] +} + + +////////////////////////////////////////////////////////////////////////////// +// Create THREEx.ArMultiMarkerControls from JSON +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaControls.fromJSON = function(arToolkitContext, parent3D, markerRoot, jsonData, parameters){ + var multiMarkerFile = JSON.parse(jsonData) + // declare variables + var subMarkersControls = [] + var subMarkerPoses = [] + // handle default arguments + parameters = parameters || {} + + // prepare the parameters + multiMarkerFile.subMarkersControls.forEach(function(item){ + // create a markerRoot + var markerRoot = new THREE.Object3D() + parent3D.add(markerRoot) + + // create markerControls for our markerRoot + var subMarkerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, item.parameters) + +// if( true ){ + // store it in the parameters + subMarkersControls.push(subMarkerControls) + subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// }else{ +// // build a smoothedControls +// var smoothedRoot = new THREE.Group() +// parent3D.add(smoothedRoot) +// var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot, { +// lerpPosition : 0.1, +// lerpQuaternion : 0.1, +// lerpScale : 0.1, +// minVisibleDelay: 0, +// minUnvisibleDelay: 0, +// }) +// onRenderFcts.push(function(delta){ +// smoothedControls.update(markerRoot) // TODO this is a global +// }) +// +// +// // store it in the parameters +// subMarkersControls.push(smoothedControls) +// subMarkerPoses.push(new THREE.Matrix4().fromArray(item.poseMatrix)) +// } + }) + + parameters.subMarkersControls = subMarkersControls + parameters.subMarkerPoses = subMarkerPoses + // create a new THREEx.ArMultiMarkerControls + var multiMarkerControls = new THREEx.ArMultiMarkerControls(arToolkitContext, markerRoot, parameters) + + // return it + return multiMarkerControls +} diff --git a/demo/ar/three.js/src/markers-area/threex-armultimarkerlearning.js b/demo/ar/three.js/src/markers-area/threex-armultimarkerlearning.js new file mode 100644 index 0000000..ca8f130 --- /dev/null +++ b/demo/ar/three.js/src/markers-area/threex-armultimarkerlearning.js @@ -0,0 +1,330 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaLearning = THREEx.ArMultiMakersLearning = function(arToolkitContext, subMarkersControls){ + var _this = this + this._arToolkitContext = arToolkitContext + + // Init variables + this.subMarkersControls = subMarkersControls + this.enabled = true + + // listen to arToolkitContext event 'sourceProcessed' + // - after we fully processed one image, aka when we know all detected poses in it + arToolkitContext.addEventListener('sourceProcessed', function(){ + _this._onSourceProcessed() + }) +} + + +////////////////////////////////////////////////////////////////////////////// +// statistic collection +////////////////////////////////////////////////////////////////////////////// + +/** + * What to do when a image source is fully processed + */ +ARjs.MarkersAreaLearning.prototype._onSourceProcessed = function(){ + var originQuaternion = this.subMarkersControls[0].object3d.quaternion + // here collect the statistic on relative positioning + + // honor this.enabled + if( this.enabled === false ) return + + // keep only the visible markers + var visibleMarkerControls = this.subMarkersControls.filter(function(markerControls){ + return markerControls.object3d.visible === true + }) + + var count = Object.keys(visibleMarkerControls).length + + var positionDelta = new THREE.Vector3() + var quaternionDelta = new THREE.Quaternion() + var scaleDelta = new THREE.Vector3() + var tmpMatrix = new THREE.Matrix4() + + // go thru all the visibleMarkerControls + for(var i = 0; i < count; i++){ + var markerControls1 = visibleMarkerControls[i] + for(var j = 0; j < count; j++){ + var markerControls2 = visibleMarkerControls[j] + + // if markerControls1 is markerControls2, then skip it + if( i === j ) continue + + + ////////////////////////////////////////////////////////////////////////////// + // create data in markerControls1.object3d.userData if needed + ////////////////////////////////////////////////////////////////////////////// + // create seenCouples for markerControls1 if needed + if( markerControls1.object3d.userData.seenCouples === undefined ){ + markerControls1.object3d.userData.seenCouples = {} + } + var seenCouples = markerControls1.object3d.userData.seenCouples + // create the multiMarkerPosition average if needed` + if( seenCouples[markerControls2.id] === undefined ){ + // console.log('create seenCouples between', markerControls1.id, 'and', markerControls2.id) + seenCouples[markerControls2.id] = { + count : 0, + position : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + quaternion : { + sum: new THREE.Quaternion(0,0,0,0), + average: new THREE.Quaternion(0,0,0,0), + }, + scale : { + sum: new THREE.Vector3(0,0,0), + average: new THREE.Vector3(0,0,0), + }, + } + } + + + ////////////////////////////////////////////////////////////////////////////// + // Compute markerControls2 position relative to markerControls1 + ////////////////////////////////////////////////////////////////////////////// + + // compute markerControls2 position/quaternion/scale in relation with markerControls1 + tmpMatrix.getInverse(markerControls1.object3d.matrix) + tmpMatrix.multiply(markerControls2.object3d.matrix) + tmpMatrix.decompose(positionDelta, quaternionDelta, scaleDelta) + + ////////////////////////////////////////////////////////////////////////////// + // update statistics + ////////////////////////////////////////////////////////////////////////////// + var stats = seenCouples[markerControls2.id] + // update the count + stats.count++ + + // update the average of position/rotation/scale + THREEx.ArMultiMarkerControls.averageVector3(stats.position.sum, positionDelta, stats.count, stats.position.average) + THREEx.ArMultiMarkerControls.averageQuaternion(stats.quaternion.sum, quaternionDelta, originQuaternion, stats.count, stats.quaternion.average) + THREEx.ArMultiMarkerControls.averageVector3(stats.scale.sum, scaleDelta, stats.count, stats.scale.average) + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Compute markers transformation matrix from current stats +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.computeResult = function(){ + var _this = this + var originSubControls = this.subMarkersControls[0] + + this.deleteResult() + + // special case of originSubControls averageMatrix + originSubControls.object3d.userData.result = { + averageMatrix : new THREE.Matrix4(), + confidenceFactor: 1, + } + // TODO here check if the originSubControls has been seen at least once!! + + + /** + * ALGO in pseudo code + * + * - Set confidenceFactor of origin sub markers as 1 + * + * Start Looping + * - For a given sub marker, skip it if it already has a result. + * - if no result, check all seen couple and find n ones which has a progress of 1 or more. + * - So the other seen sub markers, got a valid transformation matrix. + * - So take local averages position/orientation/scale, compose a transformation matrix. + * - aka transformation matrix from parent matrix * transf matrix pos/orientation/scale + * - Multiple it by the other seen marker matrix. + * - Loop on the array until one pass could not compute any new sub marker + */ + + do{ + var resultChanged = false + // loop over each subMarkerControls + this.subMarkersControls.forEach(function(subMarkerControls){ + + // if subMarkerControls already has a result, do nothing + var result = subMarkerControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === true ) return + + // console.log('compute subMarkerControls', subMarkerControls.name()) + var otherSubControlsID = _this._getLearnedCoupleStats(subMarkerControls) + if( otherSubControlsID === null ){ + // console.log('no learnedCoupleStats') + return + } + + var otherSubControls = _this._getSubMarkerControlsByID(otherSubControlsID) + + var seenCoupleStats = subMarkerControls.object3d.userData.seenCouples[otherSubControlsID] + + var averageMatrix = new THREE.Matrix4() + averageMatrix.compose(seenCoupleStats.position.average, seenCoupleStats.quaternion.average, seenCoupleStats.scale.average) + + var otherAverageMatrix = otherSubControls.object3d.userData.result.averageMatrix + + var matrix = new THREE.Matrix4().getInverse(otherAverageMatrix).multiply(averageMatrix) + matrix = new THREE.Matrix4().getInverse(matrix) + + console.assert( subMarkerControls.object3d.userData.result === undefined ) + subMarkerControls.object3d.userData.result = { + averageMatrix: matrix, + confidenceFactor: 1 + } + + resultChanged = true + }) + // console.log('loop') + }while(resultChanged === true) + + // debugger + // console.log('json:', this.toJSON()) + // this.subMarkersControls.forEach(function(subMarkerControls){ + // var hasResult = subMarkerControls.object3d.userData.result !== undefined + // console.log('marker', subMarkerControls.name(), hasResult ? 'has' : 'has NO', 'result') + // }) +} + +////////////////////////////////////////////////////////////////////////////// +// Utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * get a _this.subMarkersControls id based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getLearnedCoupleStats = function(subMarkerControls){ + + // if this subMarkerControls has never been seen with another subMarkerControls + if( subMarkerControls.object3d.userData.seenCouples === undefined ) return null + + var seenCouples = subMarkerControls.object3d.userData.seenCouples + var coupleControlsIDs = Object.keys(seenCouples).map(Number) + + for(var i = 0; i < coupleControlsIDs.length; i++){ + var otherSubControlsID = coupleControlsIDs[i] + // get otherSubControls + var otherSubControls = this._getSubMarkerControlsByID(otherSubControlsID) + + // if otherSubControls isnt learned, skip it + var result = otherSubControls.object3d.userData.result + var isLearned = (result !== undefined && result.confidenceFactor >= 1) ? true : false + if( isLearned === false ) continue + + // return this seenCouplesStats + return otherSubControlsID + } + + // if none is found, return null + return null +} + +/** + * get a _this.subMarkersControls based on markerControls.id + */ +ARjs.MarkersAreaLearning.prototype._getSubMarkerControlsByID = function(controlsID){ + + for(var i = 0; i < this.subMarkersControls.length; i++){ + var subMarkerControls = this.subMarkersControls[i] + if( subMarkerControls.id === controlsID ){ + return subMarkerControls + } + } + + return null +} + ////////////////////////////////////////////////////////////////////////////// +// JSON file building +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaLearning.prototype.toJSON = function(){ + + // compute the average matrix before generating the file + this.computeResult() + + ////////////////////////////////////////////////////////////////////////////// + // actually build the json + ////////////////////////////////////////////////////////////////////////////// + var data = { + meta : { + createdBy : "Area Learning - AR.js "+THREEx.ArToolkitContext.REVISION, + createdAt : new Date().toJSON(), + + }, + trackingBackend: this._arToolkitContext.parameters.trackingBackend, + subMarkersControls : [], + } + + var originSubControls = this.subMarkersControls[0] + var originMatrixInverse = new THREE.Matrix4().getInverse(originSubControls.object3d.matrix) + this.subMarkersControls.forEach(function(subMarkerControls, index){ + + // if a subMarkerControls has no result, ignore it + if( subMarkerControls.object3d.userData.result === undefined ) return + + var poseMatrix = subMarkerControls.object3d.userData.result.averageMatrix + console.assert(poseMatrix instanceof THREE.Matrix4) + + + // build the info + var info = { + parameters : { + // to fill ... + }, + poseMatrix : poseMatrix.toArray(), + } + if( subMarkerControls.parameters.type === 'pattern' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.patternUrl = subMarkerControls.parameters.patternUrl + }else if( subMarkerControls.parameters.type === 'barcode' ){ + info.parameters.type = subMarkerControls.parameters.type + info.parameters.barcodeValue = subMarkerControls.parameters.barcodeValue + }else console.assert(false) + + data.subMarkersControls.push(info) + }) + + var strJSON = JSON.stringify(data, null, '\t'); + + + ////////////////////////////////////////////////////////////////////////////// + // round matrix elements to ease readability - for debug + ////////////////////////////////////////////////////////////////////////////// + var humanReadable = false + if( humanReadable === true ){ + var tmp = JSON.parse(strJSON) + tmp.subMarkersControls.forEach(function(markerControls){ + markerControls.poseMatrix = markerControls.poseMatrix.map(function(value){ + var roundingFactor = 100 + return Math.round(value*roundingFactor)/roundingFactor + }) + }) + strJSON = JSON.stringify(tmp, null, '\t'); + } + + return strJSON; +} + +////////////////////////////////////////////////////////////////////////////// +// utility function +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.resetStats = function(){ + this.deleteResult() + + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.seenCouples + }) +} +/** + * reset all collected statistics + */ +ARjs.MarkersAreaLearning.prototype.deleteResult = function(){ + this.subMarkersControls.forEach(function(markerControls){ + delete markerControls.object3d.userData.result + }) +} diff --git a/demo/ar/three.js/src/markers-area/threex-armultimarkerutils.js b/demo/ar/three.js/src/markers-area/threex-armultimarkerutils.js new file mode 100644 index 0000000..b700a37 --- /dev/null +++ b/demo/ar/three.js/src/markers-area/threex-armultimarkerutils.js @@ -0,0 +1,239 @@ +var THREEx = THREEx || {} + +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkersAreaUtils = THREEx.ArMultiMarkerUtils = {} + +////////////////////////////////////////////////////////////////////////////// +// navigateToLearnerPage +////////////////////////////////////////////////////////////////////////////// + +/** + * Navigate to the multi-marker learner page + * + * @param {String} learnerBaseURL - the base url for the learner + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.navigateToLearnerPage = function(learnerBaseURL, trackingBackend){ + var learnerParameters = { + backURL : location.href, + trackingBackend: trackingBackend, + markersControlsParameters: ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters(trackingBackend), + } + location.href = learnerBaseURL + '?' + encodeURIComponent(JSON.stringify(learnerParameters)) +} + +////////////////////////////////////////////////////////////////////////////// +// DefaultMultiMarkerFile +////////////////////////////////////////////////////////////////////////////// + +/** + * Create and store a default multi-marker file + * + * @param {String} trackingBackend - the tracking backend to use + */ +ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile = function(trackingBackend){ + var file = ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile(trackingBackend) + // json.strinfy the value and store it in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(file)) +} + + + +/** + * Create a default multi-marker file + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object of the multi-marker file + */ +ARjs.MarkersAreaUtils.createDefaultMultiMarkerFile = function(trackingBackend){ + console.assert(trackingBackend) + if( trackingBackend === undefined ) debugger + + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + // create the base file + var file = { + meta : { + createdBy : 'AR.js ' + ARjs.Context.REVISION + ' - Default Marker', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... being filled + ] + } + // add a subMarkersControls + file.subMarkersControls[0] = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(0,0, 0).toArray(), + } + if( trackingBackend === 'artoolkit' ){ + file.subMarkersControls[0].parameters.type = 'pattern' + file.subMarkersControls[0].parameters.patternUrl = absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt' + }else console.assert(false) + + // json.strinfy the value and store it in localStorage + return file +} + +////////////////////////////////////////////////////////////////////////////// +// createDefaultMarkersControlsParameters +////////////////////////////////////////////////////////////////////////////// + +/** + * Create a default controls parameters for the multi-marker learner + * + * @param {String} trackingBackend - the tracking backend to use + * @return {Object} - json object containing the controls parameters + */ +ARjs.MarkersAreaUtils.createDefaultMarkersControlsParameters = function(trackingBackend){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + + if( trackingBackend === 'artoolkit' ){ + // pattern hiro/kanji/a/b/c/f + var markersControlsParameters = [ + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-kanji.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt', + }, + { + type : 'pattern', + patternUrl : absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt', + }, + ] + }else console.assert(false) + return markersControlsParameters +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +/** + * generate areaFile + */ +ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution = function (trackingBackend, resolutionW, resolutionH) { + // generate areaFile + var areaFile = this.buildMarkersAreaFileFromResolution(trackingBackend, resolutionW, resolutionH) + // store areaFile in localStorage + localStorage.setItem('ARjsMultiMarkerFile', JSON.stringify(areaFile)) +} + + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkersAreaUtils.buildMarkersAreaFileFromResolution = function(trackingBackend, resolutionW, resolutionH){ + // create the base file + var file = { + meta : { + createdBy : 'AR.js - Augmented Website', + createdAt : new Date().toJSON(), + }, + trackingBackend : trackingBackend, + subMarkersControls : [ + // empty for now... + ] + } + + var whiteMargin = 0.1 + if( resolutionW > resolutionH ){ + var markerImageSize = 0.4 * resolutionH + }else if( resolutionW < resolutionH ){ + var markerImageSize = 0.4 * resolutionW + }else if( resolutionW === resolutionH ){ + // specific for twitter player - https://dev.twitter.com/cards/types/player + var markerImageSize = 0.33 * resolutionW + }else console.assert(false) + + // console.warn('using new markerImageSize computation') + var actualMarkerSize = markerImageSize * (1 - 2*whiteMargin) + + var deltaX = (resolutionW - markerImageSize)/2 / actualMarkerSize + var deltaZ = (resolutionH - markerImageSize)/2 / actualMarkerSize + + var subMarkerControls = buildSubMarkerControls('center', 0, 0) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topleft', -deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('topright', +deltaX, -deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomleft', -deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + var subMarkerControls = buildSubMarkerControls('bottomright', +deltaX, +deltaZ) + file.subMarkersControls.push(subMarkerControls) + + return file + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + function buildSubMarkerControls(layout, positionX, positionZ){ + console.log('buildSubMarkerControls', layout, positionX, positionZ) + // create subMarkersControls + var subMarkersControls = { + parameters: {}, + poseMatrix: new THREE.Matrix4().makeTranslation(positionX,0, positionZ).toArray(), + } + // fill the parameters + if( trackingBackend === 'artoolkit' ){ + layout2MarkerParametersArtoolkit(subMarkersControls.parameters, layout) + }else console.assert(false) + // return subMarkersControls + return subMarkersControls + } + + function layout2MarkerParametersArtoolkit(parameters, layout){ + // create absoluteBaseURL + var link = document.createElement('a') + link.href = ARjs.Context.baseURL + var absoluteBaseURL = link.href + + var layout2PatternUrl = { + 'center' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-hiro.patt'), + 'topleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterA.patt'), + 'topright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterB.patt'), + 'bottomleft' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterC.patt'), + 'bottomright' : convertRelativeUrlToAbsolute(absoluteBaseURL + 'examples/marker-training/examples/pattern-files/pattern-letterF.patt'), + } + console.assert(layout2PatternUrl[layout] !== undefined ) + parameters.type = 'pattern' + parameters.patternUrl = layout2PatternUrl[layout] + return + function convertRelativeUrlToAbsolute(relativeUrl){ + var tmpLink = document.createElement('a'); + tmpLink.href = relativeUrl + return tmpLink.href + } + } +} diff --git a/demo/ar/three.js/src/new-api/arjs-anchor.js b/demo/ar/three.js/src/new-api/arjs-anchor.js new file mode 100644 index 0000000..a2859f5 --- /dev/null +++ b/demo/ar/three.js/src/new-api/arjs-anchor.js @@ -0,0 +1,136 @@ +// @namespace +var ARjs = ARjs || {} + +// TODO this is a controls... should i give the object3d here ? +// not according to 'no three.js dependancy' + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.Anchor = function(arSession, markerParameters){ + var _this = this + var arContext = arSession.arContext + var scene = arSession.parameters.scene + var camera = arSession.parameters.camera + + this.arSession = arSession + this.parameters = markerParameters + + // log to debug + console.log('ARjs.Anchor -', 'changeMatrixMode:', this.parameters.changeMatrixMode, '/ markersAreaEnabled:', markerParameters.markersAreaEnabled) + + var markerRoot = new THREE.Group + scene.add(markerRoot) + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var controlledObject = markerRoot + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var controlledObject = camera + }else console.assert(false) + + if( markerParameters.markersAreaEnabled === false ){ + var markerControls = new THREEx.ArMarkerControls(arContext, controlledObject, markerParameters) + this.controls = markerControls + }else{ + // sanity check - MUST be a trackingBackend with markers + console.assert( arContext.parameters.trackingBackend === 'artoolkit' ) + + // honor markers-page-resolution for https://webxr.io/augmented-website + if( location.hash.substring(1).startsWith('markers-page-resolution=') === true ){ + // get resolutionW/resolutionH from url + var markerPageResolution = location.hash.substring(1) + var matches = markerPageResolution.match(/markers-page-resolution=(\d+)x(\d+)/) + console.assert(matches.length === 3) + var resolutionW = parseInt(matches[1]) + var resolutionH = parseInt(matches[2]) + var arContext = arSession.arContext + // generate and store the ARjsMultiMarkerFile + ARjs.MarkersAreaUtils.storeMarkersAreaFileFromResolution(arContext.parameters.trackingBackend, resolutionW, resolutionH) + } + + // if there is no ARjsMultiMarkerFile, build a default one + if( localStorage.getItem('ARjsMultiMarkerFile') === null ){ + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(arContext.parameters.trackingBackend) + } + + // get multiMarkerFile from localStorage + console.assert( localStorage.getItem('ARjsMultiMarkerFile') !== null ) + var multiMarkerFile = localStorage.getItem('ARjsMultiMarkerFile') + + // set controlledObject depending on changeMatrixMode + if( markerParameters.changeMatrixMode === 'modelViewMatrix' ){ + var parent3D = scene + }else if( markerParameters.changeMatrixMode === 'cameraTransformMatrix' ){ + var parent3D = camera + }else console.assert(false) + + // build a multiMarkerControls + var multiMarkerControls = ARjs.MarkersAreaControls.fromJSON(arContext, parent3D, controlledObject, multiMarkerFile) + this.controls = multiMarkerControls + + // honor markerParameters.changeMatrixMode + multiMarkerControls.parameters.changeMatrixMode = markerParameters.changeMatrixMode + +// TODO put subMarkerControls visibility into an external file. with 2 handling for three.js and babylon.js + // create ArMarkerHelper - useful to debug - super three.js specific + var markerHelpers = [] + multiMarkerControls.subMarkersControls.forEach(function(subMarkerControls){ + // add an helper to visuable each sub-marker + var markerHelper = new THREEx.ArMarkerHelper(subMarkerControls) + markerHelper.object3d.visible = false + // subMarkerControls.object3d.add( markerHelper.object3d ) + subMarkerControls.object3d.add( markerHelper.object3d ) + // add it to markerHelpers + markerHelpers.push(markerHelper) + }) + // define API specific to markersArea + this.markersArea = {} + this.markersArea.setSubMarkersVisibility = function(visible){ + markerHelpers.forEach(function(markerHelper){ + markerHelper.object3d.visible = visible + }) + } + } + + this.object3d = new THREE.Group() + + ////////////////////////////////////////////////////////////////////////////// + // THREEx.ArSmoothedControls + ////////////////////////////////////////////////////////////////////////////// + + var shouldBeSmoothed = true + + if( shouldBeSmoothed === true ){ + // build a smoothedControls + var smoothedRoot = new THREE.Group() + scene.add(smoothedRoot) + var smoothedControls = new THREEx.ArSmoothedControls(smoothedRoot) + smoothedRoot.add(this.object3d) + }else{ + markerRoot.add(this.object3d) + } + + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + this.update = function(){ + // update _this.object3d.visible + _this.object3d.visible = _this.object3d.parent.visible + + // console.log('controlledObject.visible', _this.object3d.parent.visible) + if( smoothedControls !== undefined ){ + // update smoothedControls parameters depending on how many markers are visible in multiMarkerControls + if( multiMarkerControls !== undefined ){ + multiMarkerControls.updateSmoothedControls(smoothedControls) + } + + // update smoothedControls + smoothedControls.update(markerRoot) + } + } +} diff --git a/demo/ar/three.js/src/new-api/arjs-debugui.js b/demo/ar/three.js/src/new-api/arjs-debugui.js new file mode 100644 index 0000000..6b4b8c5 --- /dev/null +++ b/demo/ar/three.js/src/new-api/arjs-debugui.js @@ -0,0 +1,145 @@ +// @namespace +var ARjs = ARjs || {} + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.SessionDebugUI = function (arSession) { + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.left = '5px' + this.domElement.style.bottom = '10px' + this.domElement.style.textAlign = 'right' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.innerHTML = 'trackingBackend : ' + trackingBackend + this.domElement.appendChild(domElement) +} + +/** + * Url of augmented-website service - if === '' then dont include augmented-website link + * @type {String} + */ +ARjs.SessionDebugUI.AugmentedWebsiteURL = 'https://webxr.io/augmented-website' + +////////////////////////////////////////////////////////////////////////////// +// ARjs.AnchorDebugUI +////////////////////////////////////////////////////////////////////////////// + +/** + * Create an debug UI for an ARjs.Anchor + * + * @param {ARjs.Anchor} arAnchor - the anchor to user + */ +ARjs.AnchorDebugUI = function (arAnchor) { + var arSession = arAnchor.arSession + var trackingBackend = arSession.arContext.parameters.trackingBackend + + this.domElement = document.createElement('div') + this.domElement.style.color = 'rgba(0,0,0,0.9)' + this.domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + this.domElement.style.display = 'inline-block' + this.domElement.style.padding = '0.5em' + this.domElement.style.margin = '0.5em' + this.domElement.style.textAlign = 'left' + + ////////////////////////////////////////////////////////////////////////////// + // current-tracking-backend + ////////////////////////////////////////////////////////////////////////////// + + var domElement = document.createElement('span') + domElement.style.display = 'block' + domElement.style.padding = '0.5em' + domElement.style.color = 'rgba(0,0,0,0.9)' + domElement.style.backgroundColor = 'rgba(127,127,127,0.5)' + domElement.style.position = 'fixed' + domElement.style.left = '5px' + domElement.style.bottom = '40px' + + this.domElement.appendChild(domElement) + domElement.innerHTML = 'markersAreaEnabled :' + arAnchor.parameters.markersAreaEnabled + + ////////////////////////////////////////////////////////////////////////////// + // toggle-marker-helper + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.style.padding = '0.5em' + this.domElement.style.position = 'fixed' + this.domElement.style.textAlign = 'left' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonToggleMarkerHelpers' + domElement.innerHTML = 'toggle-marker-helper' + domElement.href = 'javascript:void(0)' + + var subMarkerHelpersVisible = false + domElement.addEventListener('click', function () { + subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true + arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Learn-new-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaLearner' + domElement.innerHTML = 'Learn-new-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + if (ARjs.AnchorDebugUI.MarkersAreaLearnerURL !== null) { + var learnerURL = ARjs.AnchorDebugUI.MarkersAreaLearnerURL + } else { + var learnerURL = ARjs.Context.baseURL + 'examples/multi-markers/examples/learner.html' + } + ARjs.MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend) + }) + } + + ////////////////////////////////////////////////////////////////////////////// + // Reset-marker-area + ////////////////////////////////////////////////////////////////////////////// + + if (arAnchor.parameters.markersAreaEnabled) { + var domElement = document.createElement('button') + domElement.style.display = 'block' + this.domElement.appendChild(domElement) + + domElement.id = 'buttonMarkersAreaReset' + domElement.innerHTML = 'Reset-marker-area' + domElement.href = 'javascript:void(0)' + + domElement.addEventListener('click', function () { + ARjs.MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend) + location.reload() + }) + } +} + +/** + * url for the markers-area learner. if not set, take the default one + * @type {String} + */ +ARjs.AnchorDebugUI.MarkersAreaLearnerURL = null diff --git a/demo/ar/three.js/src/new-api/arjs-hittesting.js b/demo/ar/three.js/src/new-api/arjs-hittesting.js new file mode 100644 index 0000000..e810fb7 --- /dev/null +++ b/demo/ar/three.js/src/new-api/arjs-hittesting.js @@ -0,0 +1,143 @@ +// @namespace +var ARjs = ARjs || {} + +/** + * Create an anchor in the real world + * + * @param {ARjs.Session} arSession - the session on which we create the anchor + * @param {Object} markerParameters - parameter of this anchor + */ +ARjs.HitTesting = function (arSession) { + var _this = this + var arContext = arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + + this.enabled = true + this._arSession = arSession + this._hitTestingPlane = null + _this._hitTestingPlane = new THREEx.HitTestingPlane(arSession.arSource.domElement) +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// +/** + * update + * + * @param {THREE.Camera} camera - the camera to use + * @param {THREE.Object3D} object3d - + */ +ARjs.HitTesting.prototype.update = function (camera, pickingRoot, changeMatrixMode) { + // if it isnt enabled, do nothing + if (this.enabled === false) return + + + if (this._hitTestingPlane !== null) { + this._hitTestingPlane.update(camera, pickingRoot, changeMatrixMode) + } else console.assert(false) +} + +////////////////////////////////////////////////////////////////////////////// +// actual hit testing +////////////////////////////////////////////////////////////////////////////// + +/** + * Test the real world for intersections directly from a DomEvent + * + * @param {Number} mouseX - position X of the hit [-1, +1] + * @param {Number} mouseY - position Y of the hit [-1, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.testDomEvent = function (domEvent) { + var trackingBackend = this._arSession.arContext.parameters.trackingBackend + var arSource = this._arSession.arSource + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + var mouseX = domEvent.clientX / arSource.domElementWidth() + var mouseY = domEvent.clientY / arSource.domElementHeight() + + return this.test(mouseX, mouseY) +} + +/** + * Test the real world for intersections. + * + * @param {Number} mouseX - position X of the hit [0, +1] + * @param {Number} mouseY - position Y of the hit [0, +1] + * @return {[ARjs.HitTesting.Result]} - array of result + */ +ARjs.HitTesting.prototype.test = function (mouseX, mouseY) { + var arContext = this._arSession.arContext + var trackingBackend = arContext.parameters.trackingBackend + var hitTestResults = [] + + // if it isnt enabled, do nothing + if (this.enabled === false) return [] + + var result = this._hitTestingPlane.test(mouseX, mouseY) + + // if no result is found, return now + if (result === null) return hitTestResults + + // build a ARjs.HitTesting.Result + var hitTestResult = new ARjs.HitTesting.Result(result.position, result.quaternion, result.scale) + hitTestResults.push(hitTestResult) + + return hitTestResults +} + +////////////////////////////////////////////////////////////////////////////// +// ARjs.HitTesting.Result +////////////////////////////////////////////////////////////////////////////// +/** + * Contains the result of ARjs.HitTesting.test() + * + * @param {THREE.Vector3} position - position to use + * @param {THREE.Quaternion} quaternion - quaternion to use + * @param {THREE.Vector3} scale - scale + */ +ARjs.HitTesting.Result = function (position, quaternion, scale) { + this.position = position + this.quaternion = quaternion + this.scale = scale +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.apply = function (object3d) { + object3d.position.copy(this.position) + object3d.quaternion.copy(this.quaternion) + object3d.scale.copy(this.scale) + + object3d.updateMatrix() +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyPosition = function (object3d) { + object3d.position.copy(this.position) + + object3d.updateMatrix() + + return this +} + +/** + * Apply to a controlled object3d + * + * @param {THREE.Object3D} object3d - the result to apply + */ +ARjs.HitTesting.Result.prototype.applyQuaternion = function (object3d) { + object3d.quaternion.copy(this.quaternion) + + object3d.updateMatrix() + + return this +} diff --git a/demo/ar/three.js/src/new-api/arjs-session.js b/demo/ar/three.js/src/new-api/arjs-session.js new file mode 100644 index 0000000..b7d6336 --- /dev/null +++ b/demo/ar/three.js/src/new-api/arjs-session.js @@ -0,0 +1,108 @@ +var ARjs = ARjs || {} + +/** + * define a ARjs.Session + * + * @param {Object} parameters - parameters for this session + */ +ARjs.Session = function(parameters){ + var _this = this + // handle default parameters + this.parameters = { + renderer: null, + camera: null, + scene: null, + sourceParameters: {}, + contextParameters: {}, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.Session: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + // sanity check + console.assert(this.parameters.renderer instanceof THREE.WebGLRenderer) + console.assert(this.parameters.camera instanceof THREE.Camera) + console.assert(this.parameters.scene instanceof THREE.Scene) + + + // backward emulation + Object.defineProperty(this, 'renderer', {get: function(){ + console.warn('use .parameters.renderer renderer') + return this.parameters.renderer; + }}); + Object.defineProperty(this, 'camera', {get: function(){ + console.warn('use .parameters.camera instead') + return this.parameters.camera; + }}); + Object.defineProperty(this, 'scene', {get: function(){ + console.warn('use .parameters.scene instead') + return this.parameters.scene; + }}); + + + // log the version + console.log('AR.js', ARjs.Context.REVISION, '- trackingBackend:', parameters.contextParameters.trackingBackend) + + ////////////////////////////////////////////////////////////////////////////// + // init arSource + ////////////////////////////////////////////////////////////////////////////// + var arSource = _this.arSource = new ARjs.Source(parameters.sourceParameters) + + arSource.init(function onReady(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + // handle resize + window.addEventListener('resize', function(){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // init arContext + ////////////////////////////////////////////////////////////////////////////// + + // create atToolkitContext + var arContext = _this.arContext = new ARjs.Context(parameters.contextParameters) + + // initialize it + _this.arContext.init() + + arContext.addEventListener('initialized', function(event){ + arSource.onResize(arContext, _this.parameters.renderer, _this.parameters.camera) + }) + + ////////////////////////////////////////////////////////////////////////////// + // update function + ////////////////////////////////////////////////////////////////////////////// + // update artoolkit on every frame + this.update = function(){ + if( arSource.ready === false ) return + + arContext.update( arSource.domElement ) + } +} + +ARjs.Session.prototype.onResize = function () { + this.arSource.onResize(this.arContext, this.parameters.renderer, this.parameters.camera) +}; diff --git a/demo/ar/three.js/src/new-api/arjs-utils.js b/demo/ar/three.js/src/new-api/arjs-utils.js new file mode 100644 index 0000000..01c4a8f --- /dev/null +++ b/demo/ar/three.js/src/new-api/arjs-utils.js @@ -0,0 +1,43 @@ +var ARjs = ARjs || {} +ARjs.Utils = {} + +/** + * Create a default rendering camera for this trackingBackend. They may be modified later. to fit physical camera parameters + * + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Utils.createDefaultCamera = function (trackingMethod) { + var trackingBackend = this.parseTrackingMethod(trackingMethod).trackingBackend + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false, 'unknown trackingBackend: ' + trackingBackend) + + return camera +} + +/** + * parse tracking method + * + * @param {String} trackingMethod - the tracking method to parse + * @return {Object} - various field of the tracking method + */ +ARjs.Utils.parseTrackingMethod = function (trackingMethod) { + + if (trackingMethod === 'best') { + trackingMethod = 'area-artoolkit'; + } + + if (trackingMethod.startsWith('area-')) { + return { + trackingBackend: trackingMethod.replace('area-', ''), + markersAreaEnabled: true, + } + } else { + return { + trackingBackend: trackingMethod, + markersAreaEnabled: false, + } + } +} diff --git a/demo/ar/three.js/src/threex/threex-arbasecontrols.js b/demo/ar/three.js/src/threex/threex-arbasecontrols.js new file mode 100644 index 0000000..82907d4 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-arbasecontrols.js @@ -0,0 +1,36 @@ +var THREEx = THREEx || {} + +THREEx.ArBaseControls = function(object3d){ + this.id = THREEx.ArBaseControls.id++ + + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + // Events to honor + // this.dispatchEvent({ type: 'becameVisible' }) + // this.dispatchEvent({ type: 'markerVisible' }) // replace markerFound + // this.dispatchEvent({ type: 'becameUnVisible' }) +} + +THREEx.ArBaseControls.id = 0 + +Object.assign( THREEx.ArBaseControls.prototype, THREE.EventDispatcher.prototype ); + +////////////////////////////////////////////////////////////////////////////// +// Functions +////////////////////////////////////////////////////////////////////////////// +/** + * error catching function for update() + */ +THREEx.ArBaseControls.prototype.update = function(){ + console.assert(false, 'you need to implement your own update') +} + +/** + * error catching function for name() + */ +THREEx.ArBaseControls.prototype.name = function(){ + console.assert(false, 'you need to implement your own .name()') + return 'Not yet implemented - name()' +} diff --git a/demo/ar/three.js/src/threex/threex-arclickability.js b/demo/ar/three.js/src/threex/threex-arclickability.js new file mode 100644 index 0000000..d97e481 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-arclickability.js @@ -0,0 +1,50 @@ +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.ARClickability = function (sourceElement) { + this._sourceElement = sourceElement + // Create cameraPicking + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + this._cameraPicking = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 100); + + console.warn('THREEx.ARClickability works only in modelViewMatrix') + console.warn('OBSOLETE OBSOLETE! instead use THREEx.HitTestingPlane') +} + +THREEx.ARClickability.prototype.onResize = function () { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + cameraPicking.aspect = fullWidth / fullHeight; + cameraPicking.updateProjectionMatrix(); +} + +THREEx.ARClickability.prototype.computeIntersects = function (domEvent, objects) { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + // compute mouse coordinatge with [-1,1] + var eventCoords = new THREE.Vector3(); + eventCoords.x = (domEvent.layerX / parseInt(sourceElement.style.width)) * 2 - 1; + eventCoords.y = - (domEvent.layerY / parseInt(sourceElement.style.height)) * 2 + 1; + + // compute intersections between eventCoords and pickingPlane + var raycaster = new THREE.Raycaster(); + raycaster.setFromCamera(eventCoords, cameraPicking); + var intersects = raycaster.intersectObjects(objects) + + return intersects +} + +THREEx.ARClickability.prototype.update = function () { + +} diff --git a/demo/ar/three.js/src/threex/threex-armarkercloak.js b/demo/ar/three.js/src/threex/threex-armarkercloak.js new file mode 100644 index 0000000..25bca04 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-armarkercloak.js @@ -0,0 +1,223 @@ +var THREEx = THREEx || {} +/** + * - videoTexture + * - cloakWidth + * - cloakHeight + * - cloakSegmentsHeight + * - remove all mentions of cache, for cloak + */ +THREEx.ArMarkerCloak = function(videoTexture){ + var updateInShaderEnabled = true + + // build cloakMesh + // TODO if webgl2 use repeat warp, and not multi segment, this will reduce the geometry to draw + var geometry = new THREE.PlaneGeometry(1.3+0.25,1.85+0.25, 1, 8).translate(0,-0.3,0) + var material = new THREE.ShaderMaterial( { + vertexShader: THREEx.ArMarkerCloak.vertexShader, + fragmentShader: THREEx.ArMarkerCloak.fragmentShader, + transparent: true, + uniforms: { + texture: { + value: videoTexture + }, + opacity: { + value: 0.5 + } + }, + defines: { + updateInShaderEnabled: updateInShaderEnabled ? 1 : 0, + } + }); + + var cloakMesh = new THREE.Mesh( geometry, material ); + cloakMesh.rotation.x = -Math.PI/2 + this.object3d = cloakMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var xMin = -0.65 + var xMax = 0.65 + var yMin = 0.65 + 0.1 + var yMax = 0.95 + 0.1 + + ////////////////////////////////////////////////////////////////////////////// + // originalsFaceVertexUvs + ////////////////////////////////////////////////////////////////////////////// + var originalsFaceVertexUvs = [[]] + + // build originalsFaceVertexUvs array + for(var faceIndex = 0; faceIndex < cloakMesh.geometry.faces.length; faceIndex ++ ){ + originalsFaceVertexUvs[0][faceIndex] = [] + originalsFaceVertexUvs[0][faceIndex][0] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][1] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][2] = new THREE.Vector2() + } + + // set values in originalsFaceVertexUvs + for(var i = 0; i < cloakMesh.geometry.parameters.heightSegments/2; i ++ ){ + // one segment height - even row - normale orientation + originalsFaceVertexUvs[0][i*4+0][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][1].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][2].set( xMax/2+0.5, yMax/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+1][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][1].set( xMax/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][2].set( xMax/2+0.5, yMax/2+0.5 ) + + // one segment height - odd row - mirror-y orientation + originalsFaceVertexUvs[0][i*4+2][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][1].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][2].set( xMax/2+0.5, yMin/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+3][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][1].set( xMax/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][2].set( xMax/2+0.5, yMin/2+0.5 ) + } + + if( updateInShaderEnabled === true ){ + cloakMesh.geometry.faceVertexUvs = originalsFaceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var originalOrthoVertices = [] + originalOrthoVertices.push( new THREE.Vector3(xMin, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMin, yMin, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMin, 0)) + + // build debugMesh + var material = new THREE.MeshNormalMaterial({ + transparent : true, + opacity: 0.5, + side: THREE.DoubleSide + }); + var geometry = new THREE.PlaneGeometry(1,1); + var orthoMesh = new THREE.Mesh(geometry, material); + this.orthoMesh = orthoMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this.update = function(modelViewMatrix, cameraProjectionMatrix){ + updateOrtho(modelViewMatrix, cameraProjectionMatrix) + + if( updateInShaderEnabled === false ){ + updateUvs(modelViewMatrix, cameraProjectionMatrix) + } + } + + return + + // update cloakMesh + function updateUvs(modelViewMatrix, cameraProjectionMatrix){ + var transformedUv = new THREE.Vector3() + originalsFaceVertexUvs[0].forEach(function(faceVertexUvs, faceIndex){ + faceVertexUvs.forEach(function(originalUv, uvIndex){ + // set transformedUv - from UV coord to clip coord + transformedUv.x = originalUv.x * 2.0 - 1.0; + transformedUv.y = originalUv.y * 2.0 - 1.0; + transformedUv.z = 0 + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // set back from clip coord to Uv coord + transformedUv.x = transformedUv.x / 2.0 + 0.5; + transformedUv.y = transformedUv.y / 2.0 + 0.5; + // copy the trasnformedUv into the geometry + cloakMesh.geometry.faceVertexUvs[0][faceIndex][uvIndex].set(transformedUv.x, transformedUv.y) + }) + }) + + // cloakMesh.geometry.faceVertexUvs = faceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + // update orthoMesh + function updateOrtho(modelViewMatrix, cameraProjectionMatrix){ + // compute transformedUvs + var transformedUvs = [] + originalOrthoVertices.forEach(function(originalOrthoVertices, index){ + var transformedUv = originalOrthoVertices.clone() + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // store it + transformedUvs.push(transformedUv) + }) + + // change orthoMesh vertices + for(var i = 0; i < transformedUvs.length; i++){ + orthoMesh.geometry.vertices[i].copy(transformedUvs[i]) + } + orthoMesh.geometry.computeBoundingSphere() + orthoMesh.geometry.verticesNeedUpdate = true + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Shaders +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArMarkerCloak.markerSpaceShaderFunction = '\n'+ +' vec2 transformUvToMarkerSpace(vec2 originalUv){\n'+ +' vec3 transformedUv;\n'+ +' // set transformedUv - from UV coord to clip coord\n'+ +' transformedUv.x = originalUv.x * 2.0 - 1.0;\n'+ +' transformedUv.y = originalUv.y * 2.0 - 1.0;\n'+ +' transformedUv.z = 0.0;\n'+ +'\n'+ +' // apply modelViewMatrix and projectionMatrix\n'+ +' transformedUv = (projectionMatrix * modelViewMatrix * vec4( transformedUv, 1.0 ) ).xyz;\n'+ +'\n'+ +' // apply perspective\n'+ +' transformedUv.x /= transformedUv.z;\n'+ +' transformedUv.y /= transformedUv.z;\n'+ +'\n'+ +' // set back from clip coord to Uv coord\n'+ +' transformedUv.x = transformedUv.x / 2.0 + 0.5;\n'+ +' transformedUv.y = transformedUv.y / 2.0 + 0.5;\n'+ +'\n'+ +' // return the result\n'+ +' return transformedUv.xy;\n'+ +' }' + +THREEx.ArMarkerCloak.vertexShader = THREEx.ArMarkerCloak.markerSpaceShaderFunction + +' varying vec2 vUv;\n'+ +'\n'+ +' void main(){\n'+ +' // pass the UV to the fragment\n'+ +' #if (updateInShaderEnabled == 1)\n'+ +' vUv = transformUvToMarkerSpace(uv);\n'+ +' #else\n'+ +' vUv = uv;\n'+ +' #endif\n'+ +'\n'+ +' // compute gl_Position\n'+ +' vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n'+ +' gl_Position = projectionMatrix * mvPosition;\n'+ +' }'; + +THREEx.ArMarkerCloak.fragmentShader = '\n'+ +' varying vec2 vUv;\n'+ +' uniform sampler2D texture;\n'+ +' uniform float opacity;\n'+ +'\n'+ +' void main(void){\n'+ +' vec3 color = texture2D( texture, vUv ).rgb;\n'+ +'\n'+ +' gl_FragColor = vec4( color, opacity);\n'+ +' }' diff --git a/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-end.js b/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-end.js new file mode 100644 index 0000000..b2fad79 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-end.js @@ -0,0 +1,99 @@ +// continuing 'workerRunner' function from treex-armarkercontrols-nft-start.js file + +this.onmessage = function (e) { + var msg = e.data; + switch (msg.type) { + case "init": { + load(msg); + return; + } + case "process": { + next = msg.imagedata; + process(); + return; + } + } +}; + +var next = null; + +var ar = null; +var markerResult = null; + +function load(msg) { + var camUrl, nftMarkerUrl; + var basePath = self.origin; + console.log('base path:', basePath); + // test if the msg.param (the incoming url) is an http or https path + var regexC = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reC = regexC.test(msg.param); + if (reC == true) { + camUrl = msg.param; + } else if (reC == false) { + camUrl = basePath + '/' + msg.param; + } + var onLoad = function () { + ar = new ARController(msg.pw, msg.ph, param); + var cameraMatrix = ar.getCameraMatrix(); + + // after the ARController is set up, we load the NFT Marker + var regexM = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/igm + var reM = regexM.test(msg.marker); + if (reM == true) { + nftMarkerUrl = msg.marker; + } else if (reM == false) { + nftMarkerUrl = basePath + '/' + msg.marker; + } + ar.loadNFTMarker(nftMarkerUrl, function (markerId) { + ar.trackNFTMarkerId(markerId); + postMessage({ type: 'endLoading' }) + }, function (err) { + console.log('Error in loading marker on Worker', err) + }); + + // ...and we listen for event when marker has been found from camera + ar.addEventListener('getNFTMarker', function (ev) { + // let AR.js know that a NFT marker has been found, with its matrix for positioning + markerResult = { + type: 'found', + matrix: JSON.stringify(ev.data.matrix), + }; + }); + + postMessage({ type: "loaded", proj: JSON.stringify(cameraMatrix) }); + }; + + var onError = function (error) { + console.error(error); + }; + console.log(msg.param); + // we cannot pass the entire ARController, so we re-create one inside the Worker, starting from camera_param + var param = new ARCameraParam(camUrl, onLoad, onError); +} + +function process() { + markerResult = null; + + if (ar && ar.process) { + ar.process(next); + } + + if (markerResult) { + postMessage(markerResult); + } else { + postMessage({ + type: "not found", + }); + } + next = null; +} + }; + +function onMarkerFound(event) { + if (event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence) return + if (event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) +} +} diff --git a/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-start.js b/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-start.js new file mode 100644 index 0000000..b03411f --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-armarkercontrols-nft-start.js @@ -0,0 +1,378 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkerControls = THREEx.ArMarkerControls = function (context, object3d, parameters) { + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + this.context = context + // handle default parameters + this.parameters = { + // size of the marker in meter + size: 1, + // type of marker - ['pattern', 'barcode', 'nft', 'unknown' ] + type: 'unknown', + // url of the pattern - IIF type='pattern' + patternUrl: null, + // value of the barcode - IIF type='barcode' + barcodeValue: null, + // url of the descriptors of image - IIF type='nft' + descriptorsUrl: null, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode: 'modelViewMatrix', + // minimal confidence in the marke recognition - between [0, 1] - default to 1 + minConfidence: 0.6, + // turn on/off camera smoothing + smooth: false, + // number of matrices to smooth tracking over, more = smoother but slower follow + smoothCount: 5, + // distance tolerance for smoothing, if smoothThreshold # of matrices are under tolerance, tracking will stay still + smoothTolerance: 0.01, + // threshold for smoothing, will keep still unless enough matrices are over tolerance + smoothThreshold: 2, + } + + // sanity check + var possibleValues = ['pattern', 'barcode', 'nft', 'unknown'] + console.assert(possibleValues.indexOf(this.parameters.type) !== -1, 'illegal value', this.parameters.type) + var possibleValues = ['modelViewMatrix', 'cameraTransformMatrix'] + console.assert(possibleValues.indexOf(this.parameters.changeMatrixMode) !== -1, 'illegal value', this.parameters.changeMatrixMode) + + // create the marker Root + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } + + if (this.parameters.smooth) { + this.smoothMatrices = []; // last DEBOUNCE_COUNT modelViewMatrix + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // add this marker to artoolkitsystem + // TODO rename that .addMarkerControls + context.addMarker(this) + + if (_this.context.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit() + } else console.assert(false) +} + +ARjs.MarkerControls.prototype = Object.create(THREEx.ArBaseControls.prototype); +ARjs.MarkerControls.prototype.constructor = THREEx.ArMarkerControls; + +ARjs.MarkerControls.prototype.dispose = function () { + this.context.removeMarker(this) +} + +////////////////////////////////////////////////////////////////////////////// +// update controls with new modelViewMatrix +////////////////////////////////////////////////////////////////////////////// + +/** + * When you actually got a new modelViewMatrix, you need to perfom a whole bunch + * of things. it is done here. + */ +ARjs.MarkerControls.prototype.updateWithModelViewMatrix = function (modelViewMatrix) { + var markerObject3D = this.object3d; + + // mark object as visible + markerObject3D.visible = true + + if (this.context.parameters.trackingBackend === 'artoolkit') { + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + var tmpMatrix = new THREE.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix) + tmpMatrix.multiply(modelViewMatrix) + + modelViewMatrix.copy(tmpMatrix) + } else { + console.assert(false) + } + + // change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker + var markerAxisTransformMatrix = new THREE.Matrix4().makeRotationX(Math.PI/2) + modelViewMatrix.multiply(markerAxisTransformMatrix) + + var renderReqd = false; + + // change markerObject3D.matrix based on parameters.changeMatrixMode + if (this.parameters.changeMatrixMode === 'modelViewMatrix') { + if (this.parameters.smooth) { + var sum, + i, j, + averages, // average values for matrix over last smoothCount + exceedsAverageTolerance = 0; + + this.smoothMatrices.push(modelViewMatrix.elements.slice()); // add latest + + if (this.smoothMatrices.length < (this.parameters.smoothCount + 1)) { + markerObject3D.matrix.copy(modelViewMatrix); // not enough for average + } else { + this.smoothMatrices.shift(); // remove oldest entry + averages = []; + + for (i in modelViewMatrix.elements) { // loop over entries in matrix + sum = 0; + for (j in this.smoothMatrices) { // calculate average for this entry + sum += this.smoothMatrices[j][i]; + } + averages[i] = sum / this.parameters.smoothCount; + // check how many elements vary from the average by at least AVERAGE_MATRIX_TOLERANCE + if (Math.abs(averages[i] - modelViewMatrix.elements[i]) >= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + } else if (this.parameters.changeMatrixMode === 'cameraTransformMatrix') { + markerObject3D.matrix.getInverse(modelViewMatrix) + } else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent({ type: 'markerFound' }); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkerControls.prototype.name = function () { + var name = ''; + name += this.parameters.type; + + if (this.parameters.type === 'pattern') { + var url = this.parameters.patternUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else if (this.parameters.type === 'barcode') { + name += ' - ' + this.parameters.barcodeValue; + } else if (this.parameters.type === 'nft') { + var url = this.parameters.descriptorsUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else { + console.assert(false, 'no .name() implemented for this marker controls'); + } + + return name; +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function () { + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(() => { + // check if arController is init + var arController = _this.context.arController + if (arController === null) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000 / 50) + + return + + function postInit() { + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null) + + // start tracking this pattern + if (_this.parameters.type === 'pattern') { + arController.loadMarker(_this.parameters.patternUrl, function (markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + } else if (_this.parameters.type === 'barcode') { + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + } else if (_this.parameters.type === 'nft') { + // use workers as default + handleNFT(_this.parameters.descriptorsUrl, arController); + } else if (_this.parameters.type === 'unknown') { + artoolkitMarkerId = null + } else { + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function (event) { + if (event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idPatt === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idMatrix === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown') { + onMarkerFound(event); + } + }) + } + + function setMatrix(matrix, value) { + var array = []; + for (var key in value) { + array[key] = value[key]; + } + if (typeof matrix.elements.set === "function") { + matrix.elements.set(array); + } else { + matrix.elements = [].slice.call(array); + } + }; + + function handleNFT(descriptorsUrl, arController) { + // create a Worker to handle loading of NFT marker and tracking of it + var workerBlob = new Blob( + [workerRunner.toString().replace(/^function .+\{?|\}$/g, '')], + { type: 'text/js-worker' } + ); + var workerBlobUrl = URL.createObjectURL(workerBlob); + var worker = new Worker(workerBlobUrl); + + window.addEventListener('arjs-video-loaded', function (ev) { + var video = ev.detail.component; + var vw = video.clientWidth; + var vh = video.clientHeight; + + var pscale = 320 / Math.max(vw, vh / 3 * 4); + + w = vw * pscale; + h = vh * pscale; + pw = Math.max(w, h / 3 * 4); + ph = Math.max(h, w / 4 * 3); + ox = (pw - w) / 2; + oy = (ph - h) / 2; + + arController.canvas.style.clientWidth = pw + "px"; + arController.canvas.style.clientHeight = ph + "px"; + arController.canvas.width = pw; + arController.canvas.height = ph; + + var context_process = arController.canvas.getContext('2d'); + + function process() { + context_process.fillStyle = "black"; + context_process.fillRect(0, 0, pw, ph); + context_process.drawImage(video, 0, 0, vw, vh, ox, oy, w, h); + + var imageData = context_process.getImageData(0, 0, pw, ph); + worker.postMessage({ type: "process", imagedata: imageData }, [imageData.data.buffer]); + } + + // initialize the worker + worker.postMessage({ + type: 'init', + pw: pw, + ph: ph, + marker: descriptorsUrl, + param: arController.cameraParam.src, + }); + + worker.onmessage = function (ev) { + if (ev && ev.data && ev.data.type === 'endLoading') { + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + var endLoadingEvent = new Event('arjs-nft-loaded'); + window.dispatchEvent(endLoadingEvent); + } + + if (ev && ev.data && ev.data.type === 'loaded') { + var proj = JSON.parse(ev.data.proj); + var ratioW = pw / w; + var ratioH = ph / h; + proj[0] *= ratioW; + proj[4] *= ratioW; + proj[8] *= ratioW; + proj[12] *= ratioW; + proj[1] *= ratioH; + proj[5] *= ratioH; + proj[9] *= ratioH; + proj[13] *= ratioH; + + setMatrix(_this.object3d.matrix, proj); + } + + if (ev && ev.data && ev.data.type === 'found') { + var matrix = JSON.parse(ev.data.matrix); + + onMarkerFound({ + data: { + type: artoolkit.NFT_MARKER, + matrix: matrix, + msg: ev.data.type, + } + }); + + _this.context.arController.showObject = true; + } else { + _this.context.arController.showObject = false; + } + + process(); + }; + + }); + + + + }; + + function workerRunner() { + // continuing 'workerRunner' function at treex-armarkercontrols-nft-end.js file + // see the makefile of three.js folder to better understand the division of this function between two files diff --git a/demo/ar/three.js/src/threex/threex-armarkercontrols.js b/demo/ar/three.js/src/threex/threex-armarkercontrols.js new file mode 100644 index 0000000..900146e --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-armarkercontrols.js @@ -0,0 +1,270 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkerControls = THREEx.ArMarkerControls = function(context, object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + this.context = context + // handle default parameters + this.parameters = { + // size of the marker in meter + size : 1, + // type of marker - ['pattern', 'barcode', 'unknown' ] + type : 'unknown', + // url of the pattern - IIF type='pattern' + patternUrl : null, + // value of the barcode - IIF type='barcode' + barcodeValue : null, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode : 'modelViewMatrix', + // minimal confidence in the marke recognition - between [0, 1] - default to 1 + minConfidence: 0.6, + // turn on/off camera smoothing + smooth: false, + // number of matrices to smooth tracking over, more = smoother but slower follow + smoothCount: 5, + // distance tolerance for smoothing, if smoothThreshold # of matrices are under tolerance, tracking will stay still + smoothTolerance: 0.01, + // threshold for smoothing, will keep still unless enough matrices are over tolerance + smoothThreshold: 2, + } + + // sanity check + var possibleValues = ['pattern', 'barcode', 'unknown'] + console.assert(possibleValues.indexOf(this.parameters.type) !== -1, 'illegal value', this.parameters.type) + var possibleValues = ['modelViewMatrix', 'cameraTransformMatrix' ] + console.assert(possibleValues.indexOf(this.parameters.changeMatrixMode) !== -1, 'illegal value', this.parameters.changeMatrixMode) + + + // create the marker Root + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArMarkerControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArMarkerControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } + + if (this.parameters.smooth) { + this.smoothMatrices = []; // last DEBOUNCE_COUNT modelViewMatrix + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // add this marker to artoolkitsystem + // TODO rename that .addMarkerControls + context.addMarker(this) + + if( _this.context.parameters.trackingBackend === 'artoolkit' ){ + this._initArtoolkit() + }else console.assert(false) +} + +ARjs.MarkerControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +ARjs.MarkerControls.prototype.constructor = THREEx.ArMarkerControls; + +ARjs.MarkerControls.prototype.dispose = function(){ + this.context.removeMarker(this) + + // TODO remove the event listener if needed + // unloadMaker ??? +} + +////////////////////////////////////////////////////////////////////////////// +// update controls with new modelViewMatrix +////////////////////////////////////////////////////////////////////////////// + +/** + * When you actually got a new modelViewMatrix, you need to perfom a whole bunch + * of things. it is done here. + */ +ARjs.MarkerControls.prototype.updateWithModelViewMatrix = function(modelViewMatrix){ + var markerObject3D = this.object3d; + + // mark object as visible + markerObject3D.visible = true + + if( this.context.parameters.trackingBackend === 'artoolkit' ){ + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + var tmpMatrix = new THREE.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix) + tmpMatrix.multiply(modelViewMatrix) + + modelViewMatrix.copy(tmpMatrix) + }else console.assert(false) + + // change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker + var markerAxisTransformMatrix = new THREE.Matrix4().makeRotationX(Math.PI/2) + modelViewMatrix.multiply(markerAxisTransformMatrix) + + var renderReqd = false; + + // change markerObject3D.matrix based on parameters.changeMatrixMode + if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){ + if (this.parameters.smooth) { + var sum, + i, j, + averages, // average values for matrix over last smoothCount + exceedsAverageTolerance = 0; + + this.smoothMatrices.push(modelViewMatrix.elements.slice()); // add latest + + if (this.smoothMatrices.length < (this.parameters.smoothCount + 1)) { + markerObject3D.matrix.copy(modelViewMatrix); // not enough for average + } else { + this.smoothMatrices.shift(); // remove oldest entry + averages = []; + + for (i in modelViewMatrix.elements) { // loop over entries in matrix + sum = 0; + for (j in this.smoothMatrices) { // calculate average for this entry + sum += this.smoothMatrices[j][i]; + } + averages[i] = sum / this.parameters.smoothCount; + // check how many elements vary from the average by at least AVERAGE_MATRIX_TOLERANCE + if (Math.abs(averages[i] - modelViewMatrix.elements[i]) >= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + }else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){ + markerObject3D.matrix.getInverse( modelViewMatrix ) + }else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent( { type: 'markerFound' } ); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +/** + * provide a name for a marker + * - silly heuristic for now + * - should be improved + */ +ARjs.MarkerControls.prototype.name = function(){ + var name = '' + name += this.parameters.type; + if( this.parameters.type === 'pattern' ){ + var url = this.parameters.patternUrl + var basename = url.replace(/^.*\//g, '') + name += ' - ' + basename + }else if( this.parameters.type === 'barcode' ){ + name += ' - ' + this.parameters.barcodeValue + }else{ + console.assert(false, 'no .name() implemented for this marker controls') + } + return name +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function(){ + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(function(){ + // check if arController is init + var arController = _this.context.arController + if( arController === null ) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000/50) + + return + + function postInit(){ + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null ) + + // start tracking this pattern + if( _this.parameters.type === 'pattern' ){ + arController.loadMarker(_this.parameters.patternUrl, function(markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + }else if( _this.parameters.type === 'barcode' ){ + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + }else if( _this.parameters.type === 'unknown' ){ + artoolkitMarkerId = null + }else{ + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function(event){ + if( event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern' ){ + if( artoolkitMarkerId === null ) return + if( event.data.marker.idPatt === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode' ){ + // console.log('BARCODE_MARKER idMatrix', event.data.marker.idMatrix, artoolkitMarkerId ) + if( artoolkitMarkerId === null ) return + if( event.data.marker.idMatrix === artoolkitMarkerId ) onMarkerFound(event) + }else if( event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown'){ + onMarkerFound(event) + } + }) + + } + + function onMarkerFound(event){ + // honor his.parameters.minConfidence + if( event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence ) return + if( event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatrix < _this.parameters.minConfidence ) return + + var modelViewMatrix = new THREE.Matrix4().fromArray(event.data.matrix) + _this.updateWithModelViewMatrix(modelViewMatrix) + } +} diff --git a/demo/ar/three.js/src/threex/threex-armarkerhelper.js b/demo/ar/three.js/src/threex/threex-armarkerhelper.js new file mode 100644 index 0000000..5467c71 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-armarkerhelper.js @@ -0,0 +1,39 @@ +var THREEx = THREEx || {} + +THREEx.ArMarkerHelper = function(markerControls){ + this.object3d = new THREE.Group + + var mesh = new THREE.AxesHelper() + this.object3d.add(mesh) + + var text = markerControls.id + // debugger + // var text = markerControls.parameters.patternUrl.slice(-1).toUpperCase(); + + var canvas = document.createElement( 'canvas' ); + canvas.width = 64; + canvas.height = 64; + + var context = canvas.getContext( '2d' ); + var texture = new THREE.CanvasTexture( canvas ); + + // put the text in the sprite + context.font = '48px monospace'; + context.fillStyle = 'rgba(192,192,255, 0.5)'; + context.fillRect( 0, 0, canvas.width, canvas.height ); + context.fillStyle = 'darkblue'; + context.fillText(text, canvas.width/4, 3*canvas.height/4 ) + texture.needsUpdate = true + + // var geometry = new THREE.CubeGeometry(1, 1, 1) + var geometry = new THREE.PlaneGeometry(1, 1) + var material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true + }); + var mesh = new THREE.Mesh(geometry, material) + mesh.rotation.x = -Math.PI/2 + + this.object3d.add(mesh) + +} diff --git a/demo/ar/three.js/src/threex/threex-arsmoothedcontrols.js b/demo/ar/three.js/src/threex/threex-arsmoothedcontrols.js new file mode 100644 index 0000000..ec2d8ff --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-arsmoothedcontrols.js @@ -0,0 +1,152 @@ +var THREEx = THREEx || {} + +/** + * - lerp position/quaternino/scale + * - minDelayDetected + * - minDelayUndetected + * @param {[type]} object3d [description] + * @param {[type]} parameters [description] + */ +THREEx.ArSmoothedControls = function(object3d, parameters){ + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + // copy parameters + this.object3d.visible = false + + this._lastLerpStepAt = null + this._visibleStartedAt = null + this._unvisibleStartedAt = null + + // handle default parameters + parameters = parameters || {} + this.parameters = { + // lerp coeficient for the position - between [0,1] - default to 1 + lerpPosition: 0.8, + // lerp coeficient for the quaternion - between [0,1] - default to 1 + lerpQuaternion: 0.2, + // lerp coeficient for the scale - between [0,1] - default to 1 + lerpScale: 0.7, + // delay for lerp fixed steps - in seconds - default to 1/120 + lerpStepDelay: 1/60, + // minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds + minVisibleDelay: 0.0, + // minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds + minUnvisibleDelay: 0.2, + } + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters){ + if( parameters === undefined ) return + for( var key in parameters ){ + var newValue = parameters[ key ] + + if( newValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' parameter is undefined." ) + continue + } + + var currentValue = _this.parameters[ key ] + + if( currentValue === undefined ){ + console.warn( "THREEx.ArSmoothedControls: '" + key + "' is not a property of this material." ) + continue + } + + _this.parameters[ key ] = newValue + } + } +} + +THREEx.ArSmoothedControls.prototype = Object.create( THREEx.ArBaseControls.prototype ); +THREEx.ArSmoothedControls.prototype.constructor = THREEx.ArSmoothedControls; + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArSmoothedControls.prototype.update = function(targetObject3d){ + var object3d = this.object3d + var parameters = this.parameters + var wasVisible = object3d.visible + var present = performance.now()/1000 + + + ////////////////////////////////////////////////////////////////////////////// + // handle object3d.visible with minVisibleDelay/minUnvisibleDelay + ////////////////////////////////////////////////////////////////////////////// + if( targetObject3d.visible === false ) this._visibleStartedAt = null + if( targetObject3d.visible === true ) this._unvisibleStartedAt = null + + if( targetObject3d.visible === true && this._visibleStartedAt === null ) this._visibleStartedAt = present + if( targetObject3d.visible === false && this._unvisibleStartedAt === null ) this._unvisibleStartedAt = present + + if( wasVisible === false && targetObject3d.visible === true ){ + var visibleFor = present - this._visibleStartedAt + if( visibleFor >= this.parameters.minVisibleDelay ){ + object3d.visible = true + snapDirectlyToTarget() + } + // console.log('visibleFor', visibleFor) + } + + if( wasVisible === true && targetObject3d.visible === false ){ + var unvisibleFor = present - this._unvisibleStartedAt + if( unvisibleFor >= this.parameters.minUnvisibleDelay ){ + object3d.visible = false + } + } + + ////////////////////////////////////////////////////////////////////////////// + // apply lerp on positon/quaternion/scale + ////////////////////////////////////////////////////////////////////////////// + + // apply lerp steps - require fix time steps to behave the same no matter the fps + if( this._lastLerpStepAt === null ){ + applyOneSlerpStep() + this._lastLerpStepAt = present + }else{ + var nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay ) + for(var i = 0; i < nStepsToDo; i++){ + applyOneSlerpStep() + this._lastLerpStepAt += this.parameters.lerpStepDelay + } + } + + // disable the lerp by directly copying targetObject3d position/quaternion/scale + if( false ){ + snapDirectlyToTarget() + } + + // update the matrix + this.object3d.updateMatrix() + + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible/becameUnVisible event + ////////////////////////////////////////////////////////////////////////////// + // honor becameVisible event + if( wasVisible === false && object3d.visible === true ){ + this.dispatchEvent({ type: 'becameVisible' }) + } + // honor becameUnVisible event + if( wasVisible === true && object3d.visible === false ){ + this.dispatchEvent({ type: 'becameUnVisible' }) + } + return + + function snapDirectlyToTarget(){ + object3d.position.copy( targetObject3d.position ) + object3d.quaternion.copy( targetObject3d.quaternion ) + object3d.scale.copy( targetObject3d.scale ) + } + + function applyOneSlerpStep(){ + object3d.position.lerp(targetObject3d.position, parameters.lerpPosition) + object3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion) + object3d.scale.lerp(targetObject3d.scale, parameters.lerpScale) + } +} diff --git a/demo/ar/three.js/src/threex/threex-artoolkitcontext-nft.js b/demo/ar/three.js/src/threex/threex-artoolkitcontext-nft.js new file mode 100644 index 0000000..0c43621 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-artoolkitcontext-nft.js @@ -0,0 +1,286 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters, sourceParameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // Labeling mode for markers - ['black_region', 'white_region'] + // black_region: Black bordered markers on a white background, white_region: White bordered markers on a black background + labelingMode: 'black_region', + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + console.assert(["black_region", "white_region"].indexOf(this.parameters.labelingMode) !== -1, "invalid parameter labelingMode", this.parameters.labelingMode); + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false) + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done) + } else console.assert(false) + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + if (!markerControls.context.arController.showObject) { + markerControls.object3d.visible = false + } + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement) + } else { + console.assert(false) + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + var onError = function(err) { + console.error(err); + }; + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, + function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set the labelingMode for artoolkit + var labelingModeTypes = { + "black_region": artoolkit.AR_LABELING_BLACK_REGION, + "white_region": artoolkit.AR_LABELING_WHITE_REGION + } + var labelingModeType = labelingModeTypes[_this.parameters.labelingMode]; + console.assert(labelingModeType !== undefined); + arController.setLabelingMode(labelingModeType); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }, + onError + ); + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function () { + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} diff --git a/demo/ar/three.js/src/threex/threex-artoolkitcontext.js b/demo/ar/three.js/src/threex/threex-artoolkitcontext.js new file mode 100644 index 0000000..8321ef5 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-artoolkitcontext.js @@ -0,0 +1,266 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Context = THREEx.ArToolkitContext = function (parameters) { + var _this = this + + _this._updatedAt = null + + // handle default parameters + this.parameters = { + // AR backend - ['artoolkit'] + trackingBackend: 'artoolkit', + // debug - true if one should display artoolkit debug canvas, false otherwise + debug: false, + // the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix'] + detectionMode: 'mono', + // type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5] + matrixCodeType: '3x3', + + // url of the camera parameters + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + + // tune the maximum rate of pose detection in the source image + maxDetectionRate: 60, + // resolution of at which we detect pose in the source image + canvasWidth: 640, + canvasHeight: 480, + + // the patternRatio inside the artoolkit marker - artoolkit only + patternRatio: 0.5, + + // enable image smoothing or not for canvas copy - default to true + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled + imageSmoothingEnabled: false, + } + // parameters sanity check + console.assert(['artoolkit'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend) + console.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode) + + this.arController = null; + + _this.initialized = false + + + this._arMarkersControls = [] + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitContext: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +Object.assign(ARjs.Context.prototype, THREE.EventDispatcher.prototype); + +// default to github page +ARjs.Context.baseURL = 'https://ar-js-org.github.io/AR.js/three.js/' +ARjs.Context.REVISION = '3.3.1'; + +/** + * Create a default camera for this trackingBackend + * @param {string} trackingBackend - the tracking to user + * @return {THREE.Camera} the created camera + */ +ARjs.Context.createDefaultCamera = function (trackingBackend) { + console.assert(false, 'use ARjs.Utils.createDefaultCamera instead') + // Create a camera + if (trackingBackend === 'artoolkit') { + var camera = new THREE.Camera(); + } else console.assert(false); + return camera +} + + +////////////////////////////////////////////////////////////////////////////// +// init functions +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.init = function (onCompleted) { + var _this = this + if (this.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit(done); + } else console.assert(false); + return + + function done() { + // dispatch event + _this.dispatchEvent({ + type: 'initialized' + }); + + _this.initialized = true + + onCompleted && onCompleted() + } + +} +//////////////////////////////////////////////////////////////////////////////// +// update function +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.update = function (srcElement) { + + // be sure arController is fully initialized + if (this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false; + + // honor this.parameters.maxDetectionRate + var present = performance.now() + if (this._updatedAt !== null && present - this._updatedAt < 1000 / this.parameters.maxDetectionRate) { + return false + } + this._updatedAt = present + + // mark all markers to invisible before processing this frame + this._arMarkersControls.forEach(function (markerControls) { + markerControls.object3d.visible = false + }) + + // process this frame + if (this.parameters.trackingBackend === 'artoolkit') { + this._updateArtoolkit(srcElement); + } else { + console.assert(false); + } + + // dispatch event + this.dispatchEvent({ + type: 'sourceProcessed' + }); + + + // return true as we processed the frame + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Add/Remove markerControls +//////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype.addMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + this._arMarkersControls.push(arMarkerControls) +} + +ARjs.Context.prototype.removeMarker = function (arMarkerControls) { + console.assert(arMarkerControls instanceof THREEx.ArMarkerControls) + // console.log('remove marker for', arMarkerControls) + var index = this.arMarkerControlss.indexOf(artoolkitMarker); + console.assert(index !== index) + this._arMarkersControls.splice(index, 1) +} + +////////////////////////////////////////////////////////////////////////////// +// artoolkit specific +////////////////////////////////////////////////////////////////////////////// +ARjs.Context.prototype._initArtoolkit = function (onCompleted) { + var _this = this + + // set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one + this._artoolkitProjectionAxisTransformMatrix = new THREE.Matrix4() + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI)) + this._artoolkitProjectionAxisTransformMatrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI)) + + // get cameraParameters + var cameraParameters = new ARCameraParam(_this.parameters.cameraParametersUrl, function () { + // init controller + var arController = new ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters); + _this.arController = arController + + // honor this.parameters.imageSmoothingEnabled + arController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + arController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled; + + // honor this.parameters.debug + if (_this.parameters.debug === true) { + arController.debugSetup(); + arController.canvas.style.position = 'absolute' + arController.canvas.style.top = '0px' + arController.canvas.style.opacity = '0.6' + arController.canvas.style.pointerEvents = 'none' + arController.canvas.style.zIndex = '-1' + } + + // setPatternDetectionMode + var detectionModes = { + 'color': artoolkit.AR_TEMPLATE_MATCHING_COLOR, + 'color_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX, + 'mono': artoolkit.AR_TEMPLATE_MATCHING_MONO, + 'mono_and_matrix': artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX, + } + var detectionMode = detectionModes[_this.parameters.detectionMode] + console.assert(detectionMode !== undefined) + arController.setPatternDetectionMode(detectionMode); + + // setMatrixCodeType + var matrixCodeTypes = { + '3x3': artoolkit.AR_MATRIX_CODE_3x3, + '3x3_HAMMING63': artoolkit.AR_MATRIX_CODE_3x3_HAMMING63, + '3x3_PARITY65': artoolkit.AR_MATRIX_CODE_3x3_PARITY65, + '4x4': artoolkit.AR_MATRIX_CODE_4x4, + '4x4_BCH_13_9_3': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3, + '4x4_BCH_13_5_5': artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5, + } + var matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType] + console.assert(matrixCodeType !== undefined) + arController.setMatrixCodeType(matrixCodeType); + + // set the patternRatio for artoolkit + arController.setPattRatio(_this.parameters.patternRatio); + + // set thresholding in artoolkit + // this seems to be the default + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL) + // adatative consume a LOT of cpu... + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE) + // arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU) + + // notify + onCompleted() + }) + return this +} + +/** + * return the projection matrix + */ +ARjs.Context.prototype.getProjectionMatrix = function (srcElement) { + + + // FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix + // keep a backward compatibility with a console.warn + + console.assert(this.parameters.trackingBackend === 'artoolkit') + console.assert(this.arController, 'arController MUST be initialized to call this function') + // get projectionMatrixArr from artoolkit + var projectionMatrixArr = this.arController.getCameraMatrix(); + var projectionMatrix = new THREE.Matrix4().fromArray(projectionMatrixArr) + + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + projectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix) + + // return the result + return projectionMatrix +} + +ARjs.Context.prototype._updateArtoolkit = function (srcElement) { + this.arController.process(srcElement) +} diff --git a/demo/ar/three.js/src/threex/threex-artoolkitprofile.js b/demo/ar/three.js/src/threex/threex-artoolkitprofile.js new file mode 100644 index 0000000..12bd745 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-artoolkitprofile.js @@ -0,0 +1,165 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +/** + * ArToolkitProfile helps you build parameters for artoolkit + * - it is fully independent of the rest of the code + * - all the other classes are still expecting normal parameters + * - you can use this class to understand how to tune your specific usecase + * - it is made to help people to build parameters without understanding all the underlying details. + */ +ARjs.Profile = THREEx.ArToolkitProfile = function () { + this.reset() + + this.performance('default') +} + + +ARjs.Profile.prototype._guessPerformanceLabel = function () { + var isMobile = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ? true : false + if (isMobile === true) { + return 'phone-normal' + } + return 'desktop-normal' +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +/** + * reset all parameters + */ +ARjs.Profile.prototype.reset = function () { + this.sourceParameters = { + // to read from the webcam + sourceType: 'webcam', + } + + this.contextParameters = { + cameraParametersUrl: THREEx.ArToolkitContext.baseURL + '../data/data/camera_para.dat', + detectionMode: 'mono', + } + this.defaultMarkerParameters = { + type: 'pattern', + patternUrl: THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro', + changeMatrixMode: 'modelViewMatrix', + } + return this +}; + +////////////////////////////////////////////////////////////////////////////// +// Performance +////////////////////////////////////////////////////////////////////////////// + + + +ARjs.Profile.prototype.performance = function (label) { + + if (label === 'default') { + label = this._guessPerformanceLabel() + } + + if (label === 'desktop-fast') { + this.contextParameters.canvasWidth = 640 * 3 + this.contextParameters.canvasHeight = 480 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'desktop-normal') { + this.contextParameters.canvasWidth = 640 + this.contextParameters.canvasHeight = 480 + + this.contextParameters.maxDetectionRate = 60 + } else if (label === 'phone-normal') { + this.contextParameters.canvasWidth = 80 * 4 + this.contextParameters.canvasHeight = 60 * 4 + + this.contextParameters.maxDetectionRate = 30 + } else if (label === 'phone-slow') { + this.contextParameters.canvasWidth = 80 * 3 + this.contextParameters.canvasHeight = 60 * 3 + + this.contextParameters.maxDetectionRate = 30 + } else { + console.assert(false, 'unknonwn label ' + label) + } + return this +} + +////////////////////////////////////////////////////////////////////////////// +// Marker +////////////////////////////////////////////////////////////////////////////// + + +ARjs.Profile.prototype.defaultMarker = function (trackingBackend) { + trackingBackend = trackingBackend || this.contextParameters.trackingBackend + + if (trackingBackend === 'artoolkit') { + this.contextParameters.detectionMode = 'mono' + this.defaultMarkerParameters.type = 'pattern' + this.defaultMarkerParameters.patternUrl = THREEx.ArToolkitContext.baseURL + '../data/data/patt.hiro' + } else console.assert(false) + + return this +} +////////////////////////////////////////////////////////////////////////////// +// Source +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.sourceWebcam = function () { + this.sourceParameters.sourceType = 'webcam' + delete this.sourceParameters.sourceUrl + return this +} + +ARjs.Profile.prototype.sourceVideo = function (url) { + this.sourceParameters.sourceType = 'video' + this.sourceParameters.sourceUrl = url + return this +} + +ARjs.Profile.prototype.sourceImage = function (url) { + this.sourceParameters.sourceType = 'image' + this.sourceParameters.sourceUrl = url + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingBackend = function (trackingBackend) { + console.warn('stop profile.trackingBackend() obsolete function. use .trackingMethod instead') + this.contextParameters.trackingBackend = trackingBackend + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.changeMatrixMode = function (changeMatrixMode) { + this.defaultMarkerParameters.changeMatrixMode = changeMatrixMode + return this +} + +////////////////////////////////////////////////////////////////////////////// +// trackingBackend +////////////////////////////////////////////////////////////////////////////// +ARjs.Profile.prototype.trackingMethod = function (trackingMethod) { + var data = ARjs.Utils.parseTrackingMethod(trackingMethod) + this.defaultMarkerParameters.markersAreaEnabled = data.markersAreaEnabled + this.contextParameters.trackingBackend = data.trackingBackend + return this +} + +/** + * check if the profile is valid. Throw an exception is not valid + */ +ARjs.Profile.prototype.checkIfValid = function () { + return this +} diff --git a/demo/ar/three.js/src/threex/threex-artoolkitsource.js b/demo/ar/three.js/src/threex/threex-artoolkitsource.js new file mode 100644 index 0000000..dfafbe8 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-artoolkitsource.js @@ -0,0 +1,425 @@ +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.Source = THREEx.ArToolkitSource = function (parameters) { + var _this = this + + this.ready = false + this.domElement = null + + // handle default parameters + this.parameters = { + // type of source - ['webcam', 'image', 'video'] + sourceType: 'webcam', + // url of the source - valid if sourceType = image|video + sourceUrl: null, + + // Device id of the camera to use (optional) + deviceId: null, + + // resolution of at which we initialize in the source image + sourceWidth: 640, + sourceHeight: 480, + // resolution displayed for the source + displayWidth: 640, + displayHeight: 480, + } + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArToolkitSource: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.init = function (onReady, onError) { + var _this = this + + if (this.parameters.sourceType === 'image') { + var domElement = this._initSourceImage(onSourceReady, onError) + } else if (this.parameters.sourceType === 'video') { + var domElement = this._initSourceVideo(onSourceReady, onError) + } else if (this.parameters.sourceType === 'webcam') { + // var domElement = this._initSourceWebcamOld(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) + } else { + console.assert(false) + } + + // attach + this.domElement = domElement + this.domElement.style.position = 'absolute' + this.domElement.style.top = '0px' + this.domElement.style.left = '0px' + this.domElement.style.zIndex = '-2' + this.domElement.setAttribute('id', 'arjs-video'); + + return this + function onSourceReady() { + document.body.appendChild(_this.domElement); + window.dispatchEvent(new CustomEvent('arjs-video-loaded', { + detail: { + component: document.querySelector('#arjs-video'), + }, + })); + + _this.ready = true + + onReady && onReady() + } +} + +//////////////////////////////////////////////////////////////////////////////// +// init image source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceImage = function (onReady) { + // TODO make it static + var domElement = document.createElement('img'); + domElement.src = this.parameters.sourceUrl; + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onload = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// init video source +//////////////////////////////////////////////////////////////////////////////// + + +ARjs.Source.prototype._initSourceVideo = function (onReady) { + // TODO make it static + var domElement = document.createElement('video'); + domElement.src = this.parameters.sourceUrl; + + domElement.style.objectFit = 'initial'; + + domElement.autoplay = true; + domElement.webkitPlaysinline = true; + domElement.controls = false; + domElement.loop = true; + domElement.muted = true; + + // trick to trigger the video on android + document.body.addEventListener('click', function onClick() { + document.body.removeEventListener('click', onClick); + domElement.play() + }); + + domElement.width = this.parameters.sourceWidth; + domElement.height = this.parameters.sourceHeight; + domElement.style.width = this.parameters.displayWidth + 'px'; + domElement.style.height = this.parameters.displayHeight + 'px'; + + domElement.onloadeddata = onReady; + return domElement +} + +//////////////////////////////////////////////////////////////////////////////// +// handle webcam source +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype._initSourceWebcam = function (onReady, onError) { + var _this = this + + // init default value + onError = onError || function (error) { + var event = new CustomEvent('camera-error', { error: error }); + window.dispatchEvent(event); + + setTimeout(() => { + alert('Webcam Error\nName: ' + error.name + '\nMessage: ' + error.message) + }, 1000); + } + + var domElement = document.createElement('video'); + domElement.setAttribute('autoplay', ''); + domElement.setAttribute('muted', ''); + domElement.setAttribute('playsinline', ''); + domElement.style.width = this.parameters.displayWidth + 'px' + domElement.style.height = this.parameters.displayHeight + 'px' + + // check API is available + if (navigator.mediaDevices === undefined + || navigator.mediaDevices.enumerateDevices === undefined + || navigator.mediaDevices.getUserMedia === undefined) { + if (navigator.mediaDevices === undefined) var fctName = 'navigator.mediaDevices' + else if (navigator.mediaDevices.enumerateDevices === undefined) var fctName = 'navigator.mediaDevices.enumerateDevices' + else if (navigator.mediaDevices.getUserMedia === undefined) var fctName = 'navigator.mediaDevices.getUserMedia' + else console.assert(false) + onError({ + name: '', + message: 'WebRTC issue-! ' + fctName + ' not present in your browser' + }); + return null + } + + // get available devices + navigator.mediaDevices.enumerateDevices().then(function (devices) { + var userMediaConstraints = { + audio: false, + video: { + facingMode: 'environment', + width: { + ideal: _this.parameters.sourceWidth, + // min: 1024, + // max: 1920 + }, + height: { + ideal: _this.parameters.sourceHeight, + // min: 776, + // max: 1080 + } + } + }; + + if (null !== _this.parameters.deviceId) { + userMediaConstraints.video.deviceId = { + exact: _this.parameters.deviceId + }; + } + + // get a device which satisfy the constraints + navigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) { + // set the .src of the domElement + domElement.srcObject = stream; + + var event = new CustomEvent('camera-init', { stream: stream }); + window.dispatchEvent(event); + // to start the video, when it is possible to start it only on userevent. like in android + document.body.addEventListener('click', function () { + domElement.play(); + }); + // domElement.play(); + + onReady(); + }).catch(function (error) { + onError({ + name: error.name, + message: error.message + }); + }); + }).catch(function (error) { + onError({ + message: error.message + }); + }); + + return domElement +} + +////////////////////////////////////////////////////////////////////////////// +// Handle Mobile Torch +////////////////////////////////////////////////////////////////////////////// +ARjs.Source.prototype.hasMobileTorch = function () { + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) return false + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + + // if videoTrack.getCapabilities() doesnt exist, return false now + if (videoTrack.getCapabilities === undefined) return false + + var capabilities = videoTrack.getCapabilities() + + return capabilities.torch ? true : false +} + +/** + * toggle the flash/torch of the mobile fun if applicable. + * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/ + */ +ARjs.Source.prototype.toggleMobileTorch = function () { + // sanity check + console.assert(this.hasMobileTorch() === true) + + var stream = arToolkitSource.domElement.srcObject + if (stream instanceof MediaStream === false) { + alert('enabling mobile torch is available only on webcam') + return + } + + if (this._currentTorchStatus === undefined) { + this._currentTorchStatus = false + } + + var videoTrack = stream.getVideoTracks()[0]; + var capabilities = videoTrack.getCapabilities() + + if (!capabilities.torch) { + alert('no mobile torch is available on your camera') + return + } + + this._currentTorchStatus = this._currentTorchStatus === false ? true : false + videoTrack.applyConstraints({ + advanced: [{ + torch: this._currentTorchStatus + }] + }).catch(function (error) { + console.log(error) + }); +} + +ARjs.Source.prototype.domElementWidth = function () { + return parseInt(this.domElement.style.width) +} +ARjs.Source.prototype.domElementHeight = function () { + return parseInt(this.domElement.style.height) +} + +//////////////////////////////////////////////////////////////////////////////// +// handle resize +//////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResizeElement = function () { + var _this = this + var screenWidth = window.innerWidth + var screenHeight = window.innerHeight + + // sanity check + console.assert(arguments.length === 0) + + // compute sourceWidth, sourceHeight + if (this.domElement.nodeName === "IMG") { + var sourceWidth = this.domElement.naturalWidth + var sourceHeight = this.domElement.naturalHeight + } else if (this.domElement.nodeName === "VIDEO") { + var sourceWidth = this.domElement.videoWidth + var sourceHeight = this.domElement.videoHeight + } else { + console.assert(false) + } + + // compute sourceAspect + var sourceAspect = sourceWidth / sourceHeight + // compute screenAspect + var screenAspect = screenWidth / screenHeight + + // if screenAspect < sourceAspect, then change the width, else change the height + if (screenAspect < sourceAspect) { + // compute newWidth and set .width/.marginLeft + var newWidth = sourceAspect * screenHeight + this.domElement.style.width = newWidth + 'px' + this.domElement.style.marginLeft = -(newWidth - screenWidth) / 2 + 'px' + + // init style.height/.marginTop to normal value + this.domElement.style.height = screenHeight + 'px' + this.domElement.style.marginTop = '0px' + } else { + // compute newHeight and set .height/.marginTop + var newHeight = 1 / (sourceAspect / screenWidth) + this.domElement.style.height = newHeight + 'px' + this.domElement.style.marginTop = -(newHeight - screenHeight) / 2 + 'px' + + // init style.width/.marginLeft to normal value + this.domElement.style.width = screenWidth + 'px' + this.domElement.style.marginLeft = '0px' + } +} +/* +ARjs.Source.prototype.copyElementSizeTo = function(otherElement){ + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop +} +*/ + +ARjs.Source.prototype.copyElementSizeTo = function (otherElement) { + + if (window.innerWidth > window.innerHeight) { + //landscape + otherElement.style.width = this.domElement.style.width + otherElement.style.height = this.domElement.style.height + otherElement.style.marginLeft = this.domElement.style.marginLeft + otherElement.style.marginTop = this.domElement.style.marginTop + } + else { + //portrait + otherElement.style.height = this.domElement.style.height + otherElement.style.width = (parseInt(otherElement.style.height) * 4 / 3) + "px"; + otherElement.style.marginLeft = ((window.innerWidth - parseInt(otherElement.style.width)) / 2) + "px"; + otherElement.style.marginTop = 0; + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.copySizeTo = function () { + console.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo') + this.copyElementSizeTo.apply(this, arguments) +} + +////////////////////////////////////////////////////////////////////////////// +// Code Separator +////////////////////////////////////////////////////////////////////////////// + +ARjs.Source.prototype.onResize = function (arToolkitContext, renderer, camera) { + if (arguments.length !== 3) { + console.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement') + return this.onResizeElement.apply(this, arguments) + } + + var trackingBackend = arToolkitContext.parameters.trackingBackend + + + // RESIZE DOMELEMENT + if (trackingBackend === 'artoolkit') { + + this.onResizeElement() + + var isAframe = renderer.domElement.dataset.aframeCanvas ? true : false + if (isAframe === false) { + this.copyElementSizeTo(renderer.domElement) + } else { + + } + + if (arToolkitContext.arController !== null) { + this.copyElementSizeTo(arToolkitContext.arController.canvas) + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) + + + // UPDATE CAMERA + if (trackingBackend === 'artoolkit') { + if (arToolkitContext.arController !== null) { + camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()); + } + } else console.assert(false, 'unhandled trackingBackend ' + trackingBackend) +} diff --git a/demo/ar/three.js/src/threex/threex-arvideoinwebgl.js b/demo/ar/three.js/src/threex/threex-arvideoinwebgl.js new file mode 100644 index 0000000..a27dad8 --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-arvideoinwebgl.js @@ -0,0 +1,105 @@ +var THREEx = THREEx || {} + +THREEx.ArVideoInWebgl = function(videoTexture){ + var _this = this + + ////////////////////////////////////////////////////////////////////////////// + // plane always in front of the camera, exactly as big as the viewport + ////////////////////////////////////////////////////////////////////////////// + var geometry = new THREE.PlaneGeometry(2, 2); + var material = new THREE.MeshBasicMaterial({ + // map : new THREE.TextureLoader().load('images/water.jpg'), + map : videoTexture, + // side: THREE.DoubleSide, + // opacity: 0.5, + // color: 'pink', + // transparent: true, + }); + var seethruPlane = new THREE.Mesh(geometry, material); + this.object3d = seethruPlane + // scene.add(seethruPlane); + + // arToolkitSource.domElement.style.visibility = 'hidden' + + // TODO extract the fov from the projectionMatrix + // camera.fov = 43.1 + this.update = function(camera){ + camera.updateMatrixWorld(true) + + // get seethruPlane position + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + var position = new THREE.Vector3(-0,0,-20) // TODO how come you got that offset on x ??? + seethruPlane.position.copy(position) + camera.localToWorld(seethruPlane.position) + + // get seethruPlane quaternion + camera.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + seethruPlane.quaternion.copy( camera.quaternion ) + + // extract the fov from the projectionMatrix + var fov = THREE.Math.radToDeg(Math.atan(1/camera.projectionMatrix.elements[5]))*2; + // console.log('fov', fov) + + var elementWidth = parseFloat( arToolkitSource.domElement.style.width.replace(/px$/,''), 10 ) + var elementHeight = parseFloat( arToolkitSource.domElement.style.height.replace(/px$/,''), 10 ) + + var aspect = elementWidth / elementHeight + + // camera.fov = fov + // if( vrDisplay.isPresenting ){ + // fov *= 2 + // aspect *= 2 + // } + + // get seethruPlane height relative to fov + seethruPlane.scale.y = Math.tan(THREE.Math.DEG2RAD * fov/2)*position.length() + // get seethruPlane aspect + seethruPlane.scale.x = seethruPlane.scale.y * aspect + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // var video = arToolkitSource.domElement; + // + // window.addEventListener('resize', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // video.addEventListener('canplaythrough', function(){ + // updateSeeThruAspectUv(seethruPlane) + // }) + // function updateSeeThruAspectUv(plane){ + // + // // if video isnt yet ready to play + // if( video.videoWidth === 0 || video.videoHeight === 0 ) return + // + // var faceVertexUvs = plane.geometry.faceVertexUvs[0] + // var screenAspect = window.innerWidth / window.innerHeight + // var videoAspect = video.videoWidth / video.videoHeight + // + // plane.geometry.uvsNeedUpdate = true + // if( screenAspect >= videoAspect ){ + // var actualHeight = videoAspect / screenAspect; + // // faceVertexUvs y 0 + // faceVertexUvs[0][1].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][0].y = 0.5 - actualHeight/2 + // faceVertexUvs[1][1].y = 0.5 - actualHeight/2 + // // faceVertexUvs y 1 + // faceVertexUvs[0][0].y = 0.5 + actualHeight/2 + // faceVertexUvs[0][2].y = 0.5 + actualHeight/2 + // faceVertexUvs[1][2].y = 0.5 + actualHeight/2 + // }else{ + // var actualWidth = screenAspect / videoAspect; + // // faceVertexUvs x 0 + // faceVertexUvs[0][0].x = 0.5 - actualWidth/2 + // faceVertexUvs[0][1].x = 0.5 - actualWidth/2 + // faceVertexUvs[1][0].x = 0.5 - actualWidth/2 + // + // // faceVertexUvs x 1 + // faceVertexUvs[0][2].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][1].x = 0.5 + actualWidth/2 + // faceVertexUvs[1][2].x = 0.5 + actualWidth/2 + // } + // } + +} diff --git a/demo/ar/three.js/src/threex/threex-hittesting-plane.js b/demo/ar/three.js/src/threex/threex-hittesting-plane.js new file mode 100644 index 0000000..0f308ca --- /dev/null +++ b/demo/ar/three.js/src/threex/threex-hittesting-plane.js @@ -0,0 +1,123 @@ +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.HitTestingPlane = function(sourceElement){ + this._sourceElement = sourceElement + + // create _pickingScene + this._pickingScene = new THREE.Scene + + // create _pickingPlane + var geometry = new THREE.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2) + // var geometry = new THREE.PlaneGeometry(20,20).rotateX(-Math.PI/2) + var material = new THREE.MeshBasicMaterial({ + // opacity: 0.5, + // transparent: true, + wireframe: true + }) + // material.visible = false + this._pickingPlane = new THREE.Mesh(geometry, material) + this._pickingScene.add(this._pickingPlane) + + // Create pickingCamera + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + // TODO hardcoded fov - couch + this._pickingCamera = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 30); +} + +////////////////////////////////////////////////////////////////////////////// +// update function +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.update = function(camera, pickingRoot, changeMatrixMode){ + + this.onResize() + + + if( changeMatrixMode === 'modelViewMatrix' ){ + // set pickingPlane position + var pickingPlane = this._pickingPlane + pickingRoot.parent.updateMatrixWorld() + pickingPlane.matrix.copy(pickingRoot.parent.matrixWorld) + // set position/quaternion/scale from pickingPlane.matrix + pickingPlane.matrix.decompose(pickingPlane.position, pickingPlane.quaternion, pickingPlane.scale) + }else if( changeMatrixMode === 'cameraTransformMatrix' ){ + // set pickingPlane position + var pickingCamera = this._pickingCamera + camera.updateMatrixWorld() + pickingCamera.matrix.copy(camera.matrixWorld) + // set position/quaternion/scale from pickingCamera.matrix + pickingCamera.matrix.decompose(pickingCamera.position, pickingCamera.quaternion, pickingCamera.scale) + }else console.assert(false) + + +// var position = this._pickingPlane.position +// console.log('pickingPlane position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) +// var position = this._pickingCamera.position +// console.log('his._pickingCamera position', position.x.toFixed(2), position.y.toFixed(2), position.z.toFixed(2)) + +} + +////////////////////////////////////////////////////////////////////////////// +// resize camera +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.onResize = function(){ + var sourceElement = this._sourceElement + var pickingCamera = this._pickingCamera + +// FIXME why using css here ??? not even computed style +// should get the size of the elment directly independantly + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + pickingCamera.aspect = fullWidth / fullHeight + + pickingCamera.updateProjectionMatrix() +} + +////////////////////////////////////////////////////////////////////////////// +// Perform test +////////////////////////////////////////////////////////////////////////////// +THREEx.HitTestingPlane.prototype.test = function(mouseX, mouseY){ + // convert mouseX, mouseY to [-1, +1] + mouseX = (mouseX-0.5)*2 + mouseY =-(mouseY-0.5)*2 + + this._pickingScene.updateMatrixWorld(true) + + // compute intersections between mouseVector3 and pickingPlane + var raycaster = new THREE.Raycaster(); + var mouseVector3 = new THREE.Vector3(mouseX, mouseY, 1); + raycaster.setFromCamera( mouseVector3, this._pickingCamera ) + var intersects = raycaster.intersectObjects( [this._pickingPlane] ) + + if( intersects.length === 0 ) return null + + // set new demoRoot position + var position = this._pickingPlane.worldToLocal( intersects[0].point.clone() ) + // TODO here do a look at the camera ? + var quaternion = new THREE.Quaternion + var scale = new THREE.Vector3(1,1,1)//.multiplyScalar(1) + + return { + position : position, + quaternion : quaternion, + scale : scale + } +} + +////////////////////////////////////////////////////////////////////////////// +// render the pickingPlane for debug +////////////////////////////////////////////////////////////////////////////// + +THREEx.HitTestingPlane.prototype.renderDebug = function(renderer){ + // render sceneOrtho + renderer.render( this._pickingScene, this._pickingCamera ) +} diff --git a/demo/ar/three.js/vendor/.DS_Store b/demo/ar/three.js/vendor/.DS_Store new file mode 100644 index 0000000..8c78359 Binary files /dev/null and b/demo/ar/three.js/vendor/.DS_Store differ diff --git a/demo/ar/three.js/vendor/jsartoolkit5/LICENSE.txt b/demo/ar/three.js/vendor/jsartoolkit5/LICENSE.txt new file mode 100644 index 0000000..a166cd6 --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/LICENSE.txt @@ -0,0 +1,902 @@ + ARTOOLKIT LICENSE TERMS + +Please carefully read the license terms below. If you do not accept the terms, +please cease use of the software and remove all copies from your system. + +ARToolKit is licensed primarily under the LGPLv3 (with the addition of a special +exception permitting static-linking). Please see below for the license text. + +Other files included with ARToolKit may be licensed under other terms or made +available for use without requiring a license. Where applicable, such terms are +noted in the file to which they apply. + +Contents: + +1) ARToolKit LGPLv3 license and additional permission. +2) Full text of the LGPLv3. +3) Full text of the GPLv3, incorporated by reference into the LGPLv3. + + +-- + + +ARToolKit is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +ARToolKit is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +Copies of the GNU Lesser General Public License and the GNU General Public +License are included in this file below. For additional information or to +view copies in other formats and translations see . + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent modules, and to +copy and distribute the resulting executable under terms of your choice, +provided that you also meet, for each linked independent module, the terms and +conditions of the license of that module. An independent module is a module +which is neither derived from nor based on this library. If you modify this +library, you may extend this exception to your version of the library, but you +are not obligated to do so. If you do not wish to do so, delete this exception +statement from your version. + +Some files included with ARToolKit may be licensed under other terms or made +available for use without requiring a license. Where applicable, such terms are +noted in the file to which they apply. + + +-- + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +-- + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +-- +EOF diff --git a/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit-nft.min.js b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit-nft.min.js new file mode 100644 index 0000000..83b87e3 --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit-nft.min.js @@ -0,0 +1,22 @@ +var Module=typeof Module!=="undefined"?Module:{};(function(){"use strict";var scope;if(typeof window!=="undefined"){scope=window}else{scope=self}if(scope.artoolkit_wasm_url){var downloadWasm=function(url){return new Promise(function(resolve,reject){var wasmXHR=new XMLHttpRequest;wasmXHR.open("GET",url,true);wasmXHR.responseType="arraybuffer";wasmXHR.onload=function(){resolve(wasmXHR.response)};wasmXHR.onerror=function(){reject("error "+wasmXHR.status)};wasmXHR.send(null)})};var wasm=downloadWasm(scope.artoolkit_wasm_url);Module.instantiateWasm=function(imports,successCallback){console.log("instantiateWasm: instantiating synchronously");wasm.then(function(wasmBinary){console.log("wasm download finished, begin instantiating");var wasmInstantiate=WebAssembly.instantiate(new Uint8Array(wasmBinary),imports).then(function(output){console.log("wasm instantiation succeeded");successCallback(output.instance)}).catch(function(e){console.log("wasm instantiation failed! "+e)})});return{}}}var ARController=function(width,height,cameraPara){this.id=undefined;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;cameraPara=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.width=w;this.height=h;this.nftMarkerCount=0;this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.nftMarkers={};this.transform_mat=new Float32Array(16);this.transformGL_RH=new Float64Array(16);if(typeof document!=="undefined"){this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d")}this.videoWidth=w;this.videoHeight=h;this.videoSize=this.videoWidth*this.videoHeight;this.framepointer=null;this.framesize=null;this.dataHeap=null;this.videoLuma=null;this.camera_mat=null;this.marker_transform_mat=null;this.videoLumaPointer=null;this._bwpointer=undefined;this._lumaCtx=undefined;if(typeof cameraPara==="string"){this.cameraParam=new ARCameraParam(cameraPara,function(){this._initialize()}.bind(this),function(err){console.error("ARController: Failed to load ARCameraParam",err);this.onload(err)}.bind(this))}else{this.cameraParam=cameraPara;this._initialize()}};ARController.prototype.dispose=function(){if(this.id>-1){artoolkit.teardown(this.id)}if(this.image&&this.image.srcObject){ARController._teardownVideo(this.image)}for(var t in this){this[t]=null}};ARController.prototype.process=function(image){var result=this.detectMarker(image);if(result!=0){console.error("detectMarker error: "+result)}var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.nftMarkers){o=this.nftMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var nftMarkerCount=this.nftMarkerCount;this.detectNFTMarker();var MARKER_LOST_TIME=200;for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i>3;q+=4}}if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(){if(readyToPlay){video.play().then(function(){onSuccess(video)}).catch(function(error){onError(error);ARController._teardownVideo(video)});if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){if(window.URL.createObjectURL){try{video.srcObject=stream}catch(ex){}}video.srcObject=stream;readyToPlay=true;video.autoplay=true;video.playsInline=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.min}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.min}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;mediaDevicesConstraints.deviceId=configuration.deviceId;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:constraints};if(navigator.mediaDevices||window.MediaStreamTrack.getSources){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{window.MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback,errorCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=57888,DYNAMIC_BASE=5300768,DYNAMICTOP_PTR=57696;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;if(Module["buffer"]){buffer=Module["buffer"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw what}var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;var ASM_CONSTS=[function($0,$1,$2,$3,$4,$5){if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4;frameMalloc["videoLumaPointer"]=$5},function($0,$1,$2,$3){if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=$a[i++];markerInfo["found"]=1;markerInfo["pose"][0]=$a[i++];markerInfo["pose"][1]=$a[i++];markerInfo["pose"][2]=$a[i++];markerInfo["pose"][3]=$a[i++];markerInfo["pose"][4]=$a[i++];markerInfo["pose"][5]=$a[i++];markerInfo["pose"][6]=$a[i++];markerInfo["pose"][7]=$a[i++];markerInfo["pose"][8]=$a[i++];markerInfo["pose"][9]=$a[i++];markerInfo["pose"][10]=$a[i++];markerInfo["pose"][11]=$a[i++]},function($0){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=-1;markerInfo["found"]=0;markerInfo["pose"][0]=0;markerInfo["pose"][1]=0;markerInfo["pose"][2]=0;markerInfo["pose"][3]=0;markerInfo["pose"][4]=0;markerInfo["pose"][5]=0;markerInfo["pose"][6]=0;markerInfo["pose"][7]=0;markerInfo["pose"][8]=0;markerInfo["pose"][9]=0;markerInfo["pose"][10]=0;markerInfo["pose"][11]=0}];function _emscripten_asm_const_iiiiiii(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiddddddddddddd(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _emscripten_asm_const_iiiiiiiidddddddddddddddddddddddddi(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}__ATINIT__.push({func:function(){__GLOBAL__I_000101()}},{func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){___emscripten_environ_constructor()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}},{func:function(){__GLOBAL__sub_I_iostream_cpp()}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACKTQAAkU0AAJ1NAACnTQAAtU0AAAAAAAAAAAAAAAAAAP//////////AAAAAAEAAAABAAAAAQAAAAAAAAD/////AAAAAAEAAAABAAAAAQAAAAAAAAD///////////////8AAAABAAEBAQACBP//BQMBAAL/Bgf/AwECAgMCAwIDAwD/BAYHBf8BBAUEBAUFBAUHBgYGBwcHBv8CBAYHBQP/AAEBAQEBAQABAQEAAAEBAQEBAAEBAAEBAQABAQEBAAEBAAEBAQEAAQEBAAEBAAEBAQEBAAABAQEAAQEBAQEBAAD//wP/BQb//wkK/wz//w//ERL/FP//Fxj//xv/HR7//wEC/wT//wcI//8L/w0O/xD//xP/FRb//xka/xz//x8BAAAAAgAAAAQAAAAIAAAAEAAAAAUAAAAKAAAAFAAAAA0AAAAaAAAAEQAAAAcAAAAOAAAAHAAAAB0AAAAfAAAAGwAAABMAAAADAAAABgAAAAwAAAAYAAAAFQAAAA8AAAAeAAAAGQAAABcAAAALAAAAFgAAAAkAAAASAAAAAAAAAAEAAAACAAAABAAAAAgAAAADAAAABgAAAAwAAAALAAAABQAAAAoAAAAHAAAADgAAAA8AAAANAAAACQAAAAAAAAD/////AAAAAAEAAAASAAAAAgAAAAUAAAATAAAACwAAAAMAAAAdAAAABgAAABsAAAAUAAAACAAAAAwAAAAXAAAABAAAAAoAAAAeAAAAEQAAAAcAAAAWAAAAHAAAABoAAAAVAAAAGQAAAAkAAAAQAAAADQAAAA4AAAAYAAAADwAAAP////8AAAAAAQAAAAQAAAACAAAACAAAAAUAAAAKAAAAAwAAAA4AAAAJAAAABwAAAAYAAAANAAAACwAAAAwAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAAwAAAAYAAAAMAAAAGAAAADAAAABgAAAAQwAAAAUAAAAKAAAAFAAAACgAAABQAAAAIwAAAEYAAAAPAAAAHgAAADwAAAB4AAAAcwAAAGUAAABJAAAAEQAAACIAAABEAAAACwAAABYAAAAsAAAAWAAAADMAAABmAAAATwAAAB0AAAA6AAAAdAAAAGsAAABVAAAAKQAAAFIAAAAnAAAATgAAAB8AAAA+AAAAfAAAAHsAAAB1AAAAaQAAAFEAAAAhAAAAQgAAAAcAAAAOAAAAHAAAADgAAABwAAAAYwAAAEUAAAAJAAAAEgAAACQAAABIAAAAEwAAACYAAABMAAAAGwAAADYAAABsAAAAWwAAADUAAABqAAAAVwAAAC0AAABaAAAANwAAAG4AAABfAAAAPQAAAHoAAAB3AAAAbQAAAFkAAAAxAAAAYgAAAEcAAAANAAAAGgAAADQAAABoAAAAUwAAACUAAABKAAAAFwAAAC4AAABcAAAAOwAAAHYAAABvAAAAXQAAADkAAAByAAAAZwAAAE0AAAAZAAAAMgAAAGQAAABLAAAAFQAAACoAAABUAAAAKwAAAFYAAAAvAAAAXgAAAD8AAAB+AAAAfwAAAH0AAAB5AAAAcQAAAGEAAABBAAAAAAAAAP////8AAAAAAQAAAAcAAAACAAAADgAAAAgAAAA4AAAAAwAAAD8AAAAPAAAAHwAAAAkAAABaAAAAOQAAABUAAAAEAAAAHAAAAEAAAABDAAAAEAAAAHAAAAAgAAAAYQAAAAoAAABsAAAAWwAAAEYAAAA6AAAAJgAAABYAAAAvAAAABQAAADYAAAAdAAAAEwAAAEEAAABfAAAARAAAAC0AAAARAAAAKwAAAHEAAABzAAAAIQAAAE0AAABiAAAAdQAAAAsAAABXAAAAbQAAACMAAABcAAAASgAAAEcAAABPAAAAOwAAAGgAAAAnAAAAZAAAABcAAABSAAAAMAAAAHcAAAAGAAAAfgAAADcAAAANAAAAHgAAAD4AAAAUAAAAWQAAAEIAAAAbAAAAYAAAAG8AAABFAAAAawAAAC4AAAAlAAAAEgAAADUAAAAsAAAAXgAAAHIAAAAqAAAAdAAAAEwAAAAiAAAAVgAAAE4AAABJAAAAYwAAAGcAAAB2AAAAUQAAAAwAAAB9AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAABAAAAIgAAAAFAAAAkAAAAAYAAACYAAAACQAAALAAAAA3VAAAPVQAAEJUAABKVAAAAAAAALK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/ADcAAAA3AAAANwAAADcAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAMAAAAKAAAAEQAAABgAAAAgAAAAGQAAABIAAAALAAAABAAAAAUAAAAMAAAAEwAAABoAAAAhAAAAKAAAADAAAAApAAAAIgAAABsAAAAUAAAADQAAAAYAAAAHAAAADgAAABUAAAAcAAAAIwAAACoAAAAxAAAAOAAAADkAAAAyAAAAKwAAACQAAAAdAAAAFgAAAA8AAAAXAAAAHgAAACUAAAAsAAAAMwAAADoAAAA7AAAANAAAAC0AAAAmAAAAHwAAACcAAAAuAAAANQAAADwAAAA9AAAANgAAAC8AAAA3AAAAPgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAABQAAAAwAAAATAAAAGgAAACEAAAAoAAAAMAAAACkAAAAiAAAAGwAAABQAAAANAAAABgAAAA4AAAAVAAAAHAAAACMAAAAqAAAAMQAAADIAAAArAAAAJAAAAB0AAAAWAAAAHgAAACUAAAAsAAAAMwAAADQAAAAtAAAAJgAAAC4AAAA1AAAANgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAIAAAABkAAAASAAAACwAAAAQAAAAFAAAADAAAABMAAAAaAAAAIQAAACgAAAApAAAAIgAAABsAAAAUAAAADQAAABUAAAAcAAAAIwAAACoAAAArAAAAJAAAAB0AAAAlAAAALAAAAC0AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAADAAAABMAAAAaAAAAIQAAACIAAAAbAAAAFAAAABwAAAAjAAAAJAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAJAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAIEBHVoOAoYlEAMUERIECwgUBdgDFwbaARkH5QAcCG8AHgk2ACEKGgAjCw0ACQwGAAoNAwAMDQEAjw9/WiQQJT8mEfIsJxJ8ICgTuRcqFIIRKxXvDC0WoQkuFy8HMBhcBTEZBgQzGgMDNBtAAjYcsQE4HUQBOR71ADsftwA8IIoAPiFoAD8iTgAgIzsAIQksAKUl4VpAJkxIQScNOkMo8S5EKR8mRSozH0YrqBlILBgVSS13EUoudA5LL/sLTTD4CU4xYQhPMgYHMDPNBTI03gQyNQ8EMzZjAzQ31AI1OFwCNjn4ATc6pAE4O2ABOTwlATo99gA7PssAPT+rAD0gjwDBQRJbUEIETVFDLEFSRNg3U0XoL1RGPClWR3kjV0jfHldJqRpISk4XSEskFEpMnBFKTWsPS05RDU1PtgtNMEAK0FEyWFhSHE1ZU45DWlTdO1tV7jRcVq4uXVeaKVZHFiXYWXBVX1qpTGBb2URhXCI+Y10kOGNetDJdVhcu32CoVmVhRk9mYuVHZ2PPQWhkPTxjXV43aWYxUmpnD0xraDlGZ2NeQelqJ1Zsa+dQbWeFS25tl1Vva09Q7m8QWnBtIlXwb+tZcXEdWgAAAAAAAAAA1aMAAOujAAALpAAAMKQAAEqkAABppAAAfqQAAJukAADFpAAABaUAACSlAAA7pQAAUaUAAGWlAACipQAA0qUAAO6lAAARpgAASKYAAH+mAACWpgAAtqYAAOCmAAAtpwAASKcAAHOnAACPpwAAtKcAANqnAAD/pwAAEqgAACeoAAA6qAAATagAAHKoAACHqAAAm6gAALyoAADSqAAAAakAACmpAABKqQAAa6kAAJqpAACrqQAAx6kAAAWqAAAsqgAAU6oAAGeqAACVqgAAvaoAANmqAAD+qgAAIKsAAEqrAAB1qwAAk6sAAMGrAADpqwAAEKwAADusAABorAAAmKwAAMKsAADvrAAAEq0AADCtAABOrQAAhK0AAK6tAADNrQAA8K0AABeuAAAsrgAAQK4AAHWuAACFrgAAw64AAAWvAAAvrwAAW68AAIKvAACerwAAya8AAOSvAAD4rwAAD7AAABywAABEsAAAebAAALWwAADjsAAABLEAACuxAABEsQAAbLEAAI+xAACnsQAAy7EAAPCxAAD2sQAAL7IAAGmyAACIsgAAl7IAALSyAADSsgAA77IAAAizAAAhswAAY7MAAJ2zAADTswAAB7QAABu0AAAytAAAWLQAAH+0AADBtAAA/bQAAC61AABStQAAgLUAAJu1AADTtQAA/rUAAAAAAAAAAAAAAQAAAAIAAAADAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAAGAAAAAwAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAAIAAAAEAAAABwAAAAwAAAADAAAACAAAAAsAAAANAAAACQAAAAoAAAAOAAAADwAAAAAAAAABAAAABQAAAAYAAAAOAAAAAgAAAAQAAAAHAAAADQAAAA8AAAADAAAACAAAAAwAAAAQAAAAFQAAAAkAAAALAAAAEQAAABQAAAAWAAAACgAAABIAAAATAAAAFwAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAACAAAABAAAAAcAAAANAAAAEAAAABkAAAADAAAACAAAAAwAAAARAAAAGAAAABoAAAAJAAAACwAAABIAAAAXAAAAGwAAACAAAAAKAAAAEwAAABYAAAAcAAAAHwAAACEAAAAUAAAAFQAAAB0AAAAeAAAAIgAAACMAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAAbAAAAAgAAAAQAAAAHAAAADQAAABAAAAAaAAAAHAAAAAMAAAAIAAAADAAAABEAAAAZAAAAHQAAACYAAAAJAAAACwAAABIAAAAYAAAAHgAAACUAAAAnAAAACgAAABMAAAAXAAAAHwAAACQAAAAoAAAALQAAABQAAAAWAAAAIAAAACMAAAApAAAALAAAAC4AAAAVAAAAIQAAACIAAAAqAAAAKwAAAC8AAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAA4AAAAPAAAAGwAAABwAAAACAAAABAAAAAcAAAANAAAAEAAAABoAAAAdAAAAKgAAAAMAAAAIAAAADAAAABEAAAAZAAAAHgAAACkAAAArAAAACQAAAAsAAAASAAAAGAAAAB8AAAAoAAAALAAAADUAAAAKAAAAEwAAABcAAAAgAAAAJwAAAC0AAAA0AAAANgAAABQAAAAWAAAAIQAAACYAAAAuAAAAMwAAADcAAAA8AAAAFQAAACIAAAAlAAAALwAAADIAAAA4AAAAOwAAAD0AAAAjAAAAJAAAADAAAAAxAAAAOQAAADoAAAA+AAAAPwAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAAAQMVYn1NCSwBASTKjIqgRxVghe/xzYmjFWL9FCzB+GJ9T/HNBbVRin1OzQUEtEhdCS2JoVGJ+WEJLITu6KMMUAEDFWJ9TQksAQEkyoyKoEUkyv0WzQSE7STKCJzcb4A2jIgswQS26KKMiNxu/Eo4JqBF+GBIXwxSoEeANjgnfBAAAAAAAAPA/72FIsVAx9j/Kb02Rruf0P6oRbO9i0PI/AAAAAAAA8D87v6fAaSTpP7sgx3t6UeE/Xaty3lWo0T8AwDDwDMw8/APDM/MPzz//gECwcIxMvHyDQ7Nzj0+/fyDgENAs7BzcI+MT0y/vH9+gYJBQrGycXKNjk1Ovb59fCMg4+ATENPQLyzv7B8c394hIuHiERLR0i0u7e4dHt3co6BjYJOQU1CvrG9sn5xfXqGiYWKRklFSra5tbp2eXVwLCMvIOzj7+AcEx8Q3NPf2CQrJyjk6+foFBsXGNTb19IuIS0i7uHt4h4RHRLe0d3aJiklKubp5eoWGRUa1tnV0Kyjr6BsY29gnJOfkFxTX1ikq6eoZGtnaJSbl5hUW1dSrqGtom5hbWKekZ2SXlFdWqappapmaWVqlpmVmlZZVV3hIElQAAAAD///////////////8AAAAAAAAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNMAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAyACIAIgAiACIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAFgBMAEwATABMAEwATABMAEwATABMAEwATABMAEwATACNgI2AjYCNgI2AjYCNgI2AjYCNgEwATABMAEwATABMAEwAjVCNUI1QjVCNUI1QjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUEwATABMAEwATABMAI1gjWCNYI1gjWCNYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGBMAEwATABMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAAAAAAAAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAAAAAAAAAAAAAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAAAAAAAAAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAApD8AABVdAADMPwAAiWkAAIAzAAAAAAAAzD8AAHRsAAA4NgAAAAAAAMw/AAAjdwAAGD0AAAAAAADMPwAAi4cAABg9AAAAAAAAzD8AAP+HAAAYPQAAAAAAADhAAADlngAAAAAAAAEAAADwMwAAAAAAAKQ/AAAknwAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAABG4QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAIyQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAYzQAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApD8AAEe3AADMPwAAp7cAAFA2AAAAAAAAzD8AAFS3AABgNgAAAAAAAKQ/AAB1twAAzD8AAIK3AABANgAAAAAAAMw/AADxtwAAODYAAAAAAADMPwAAAbgAAHg2AAAAAAAAzD8AABK4AABQNgAAAAAAAMw/AAA0uAAAmDYAAAAAAADMPwAAWLgAAFA2AAAAAAAAHEAAAIC4AAAcQAAAgrgAABxAAACEuAAAHEAAAIa4AAAcQAAAiLgAABxAAACKuAAAHEAAAIy4AAAcQAAAjrgAABxAAACQuAAAHEAAAA3BAAAcQAAAkrgAABxAAACUuAAAHEAAAJa4AADMPwAAmLgAAEA2AAAAAAAApD8AANu7AACkPwAA+rsAAKQ/AAAZvAAApD8AADi8AACkPwAAV7wAAKQ/AAB2vAAApD8AAJW8AACkPwAAtLwAAKQ/AADTvAAApD8AAPK8AACkPwAAEb0AAKQ/AAAwvQAApD8AAE+9AAA4QAAAYr0AAAAAAAABAAAA8DMAAAAAAAA4QAAAob0AAAAAAAABAAAA8DMAAAAAAADMPwAA8r0AAOg3AAAAAAAApD8AAOC9AADMPwAAHL4AAOg3AAAAAAAApD8AAEa+AACkPwAAd74AADhAAACovgAAAAAAAAEAAADYNwAAA/T//zhAAADXvgAAAAAAAAEAAADwNwAAA/T//zhAAAAGvwAAAAAAAAEAAADYNwAAA/T//zhAAAA1vwAAAAAAAAEAAADwNwAAA/T//8w/AABkvwAACDgAAAAAAADMPwAAfb8AAAA4AAAAAAAAzD8AALy/AAAIOAAAAAAAAMw/AADUvwAAADgAAAAAAADMPwAA7L8AAMA4AAAAAAAAzD8AAADAAAAQPQAAAAAAAMw/AAAWwAAAwDgAAAAAAAA4QAAAL8AAAAAAAAACAAAAwDgAAAIAAAAAOQAAAAAAADhAAABzwAAAAAAAAAEAAAAYOQAAAAAAAKQ/AACJwAAAOEAAAKLAAAAAAAAAAgAAAMA4AAACAAAAQDkAAAAAAAA4QAAA5sAAAAAAAAABAAAAGDkAAAAAAAA4QAAAD8EAAAAAAAACAAAAwDgAAAIAAAB4OQAAAAAAADhAAABTwQAAAAAAAAEAAACQOQAAAAAAAKQ/AABpwQAAOEAAAILBAAAAAAAAAgAAAMA4AAACAAAAuDkAAAAAAAA4QAAAxsEAAAAAAAABAAAAkDkAAAAAAAA4QAAAHMMAAAAAAAADAAAAwDgAAAIAAAD4OQAAAgAAAAA6AAAACAAApD8AAIPDAACkPwAAYcMAADhAAACWwwAAAAAAAAMAAADAOAAAAgAAAPg5AAACAAAAMDoAAAAIAACkPwAA28MAADhAAAD9wwAAAAAAAAIAAADAOAAAAgAAAFg6AAAACAAApD8AAELEAAA4QAAAV8QAAAAAAAACAAAAwDgAAAIAAABYOgAAAAgAADhAAACcxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAApD8AALjEAAA4QAAAzcQAAAAAAAACAAAAwDgAAAIAAACgOgAAAgAAADhAAADpxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAAOEAAAAXFAAAAAAAAAgAAAMA4AAACAAAAoDoAAAIAAAA4QAAAMMUAAAAAAAACAAAAwDgAAAIAAAAoOwAAAAAAAKQ/AAB2xQAAOEAAAJrFAAAAAAAAAgAAAMA4AAACAAAAUDsAAAAAAACkPwAA4MUAADhAAAD/xQAAAAAAAAIAAADAOAAAAgAAAHg7AAAAAAAApD8AAEXGAAA4QAAAXsYAAAAAAAACAAAAwDgAAAIAAACgOwAAAAAAAKQ/AACkxgAAOEAAAL3GAAAAAAAAAgAAAMA4AAACAAAAyDsAAAIAAACkPwAA0sYAADhAAABpxwAAAAAAAAIAAADAOAAAAgAAAMg7AAACAAAAzD8AAOrGAAAAPAAAAAAAADhAAAANxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAApD8AADDHAADMPwAAR8cAAAA8AAAAAAAAOEAAAH7HAAAAAAAAAgAAAMA4AAACAAAAIDwAAAIAAAA4QAAAoMcAAAAAAAACAAAAwDgAAAIAAAAgPAAAAgAAADhAAADCxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAAzD8AAOXHAADAOAAAAAAAADhAAAD7xwAAAAAAAAIAAADAOAAAAgAAAMg8AAACAAAApD8AAA3IAAA4QAAAIsgAAAAAAAACAAAAwDgAAAIAAADIPAAAAgAAAMw/AAA/yAAAwDgAAAAAAADMPwAAVMgAAMA4AAAAAAAApD8AAGnIAAA4QAAAgsgAAAAAAAABAAAAED0AAAAAAAABAAAAAAAAAIgzAAABAAAAAgAAAAAAAACAMwAAAwAAAAQAAAAAAAAAmDMAAAUAAAAGAAAAAQAAALlSjD6OWuc+uVKMPgAAAACoMwAABwAAAAgAAAAJAAAAAQAAAAoAAAAAAAAAuDMAAAcAAAALAAAADAAAAAIAAAANAAAAAAAAAMgzAAAHAAAADgAAAA8AAAADAAAAEAAAAP/////+/////f///8g2AAAANwAAIDcAAMg2AAAANwAAADcAACg3AAAANwAAyDYAAAA3AAAoNwAAADcAAMg2AAAANwAAADcAANgzAAAANwAAADcAAAA3AAAANwAAADcAANgzAAAANwAAADcAAAEAAAAAAAAAAgAAAEAGAACAPgAAAAAAAIgTAABAFgAAFAAAAEMuVVRGLTgAAAAAAAAAAAAAAAAAUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA+DMAAIg0AAAYNQAAGDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGwAAIB8AACAlAABfcIkA/wkvDwAAAABANgAAEQAAABIAAAATAAAAFAAAAAQAAAABAAAAAQAAAAEAAAAAAAAAaDYAABEAAAAVAAAAEwAAABQAAAAEAAAAAgAAAAIAAAACAAAAAAAAAHg2AAAWAAAAFwAAAAQAAAAAAAAAiDYAABYAAAAYAAAABAAAAAAAAAC4NgAAEQAAABkAAAATAAAAFAAAAAUAAAAAAAAAMDcAABEAAAAaAAAAEwAAABQAAAAEAAAAAwAAAAMAAAADAAAAAAAAAOg3AAAbAAAAHAAAAAAAAAAAOAAAHQAAAB4AAAABAAAABgAAAAQAAAAEAAAABQAAAAYAAAAHAAAABwAAAAgAAAAEAAAACAAAAAUAAAAAAAAACDgAAB8AAAAgAAAAAgAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAAsAAAAMAAAABgAAAAsAAAAHAAAACAAAAAAAAAAQOAAAIQAAACIAAAD4////+P///xA4AAAjAAAAJAAAAPRAAAAIQQAACAAAAAAAAAAoOAAAJQAAACYAAAD4////+P///yg4AAAnAAAAKAAAACRBAAA4QQAABAAAAAAAAABAOAAAKQAAACoAAAD8/////P///0A4AAArAAAALAAAAFRBAABoQQAABAAAAAAAAABYOAAALQAAAC4AAAD8/////P///1g4AAAvAAAAMAAAAIRBAACYQQAAAAAAAHA4AAAfAAAAMQAAAAMAAAAJAAAABQAAAAUAAAANAAAACgAAAAoAAAALAAAADAAAAAYAAAAMAAAACAAAAAAAAACAOAAAHQAAADIAAAAEAAAABgAAAAQAAAAEAAAADgAAAAYAAAAHAAAABwAAAAgAAAAEAAAADQAAAAkAAAAAAAAAkDgAAB8AAAAzAAAABQAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAA8AAAAQAAAACgAAAAsAAAAHAAAAAAAAAKA4AAAdAAAANAAAAAYAAAAGAAAABAAAAAQAAAAFAAAABgAAAAcAAAARAAAAEgAAAAsAAAAIAAAABQAAAAAAAACwOAAANQAAADYAAAA3AAAAAQAAAAYAAAAOAAAAAAAAANA4AAA4AAAAOQAAADcAAAACAAAABwAAAA8AAAAAAAAA4DgAADoAAAA7AAAANwAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAACA5AAA8AAAAPQAAADcAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAAAAAABYOQAAPgAAAD8AAAA3AAAAAwAAAAQAAAAXAAAABQAAABgAAAABAAAAAgAAAAYAAAAAAAAAmDkAAEAAAABBAAAANwAAAAcAAAAIAAAAGQAAAAkAAAAaAAAAAwAAAAQAAAAKAAAAAAAAANA5AABCAAAAQwAAADcAAAATAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAAA+P///9A5AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAAAAAAAg6AABEAAAARQAAADcAAAAbAAAAIAAAACEAAAAiAAAAIwAAACQAAAACAAAA+P///wg6AAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAAAAAAAAODoAAEYAAABHAAAANwAAAAEAAAAAAAAAYDoAAEgAAABJAAAANwAAAAIAAAAAAAAAgDoAAEoAAABLAAAANwAAACMAAAAkAAAABwAAAAgAAAAJAAAACgAAACUAAAALAAAADAAAAAAAAACoOgAATAAAAE0AAAA3AAAAJgAAACcAAAANAAAADgAAAA8AAAAQAAAAKAAAABEAAAASAAAAAAAAAMg6AABOAAAATwAAADcAAAApAAAAKgAAABMAAAAUAAAAFQAAABYAAAArAAAAFwAAABgAAAAAAAAA6DoAAFAAAABRAAAANwAAACwAAAAtAAAAGQAAABoAAAAbAAAAHAAAAC4AAAAdAAAAHgAAAAAAAAAIOwAAUgAAAFMAAAA3AAAAAwAAAAQAAAAAAAAAMDsAAFQAAABVAAAANwAAAAUAAAAGAAAAAAAAAFg7AABWAAAAVwAAADcAAAABAAAAJQAAAAAAAACAOwAAWAAAAFkAAAA3AAAAAgAAACYAAAAAAAAAqDsAAFoAAABbAAAANwAAABAAAAAGAAAAHwAAAAAAAADQOwAAXAAAAF0AAAA3AAAAEQAAAAcAAAAgAAAAAAAAACg8AABeAAAAXwAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAPA7AABeAAAAYAAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAFg8AABhAAAAYgAAADcAAAAFAAAABgAAAA0AAAAyAAAAMwAAAA4AAAA0AAAAAAAAAJg8AABjAAAAZAAAADcAAAAAAAAAqDwAAGUAAABmAAAANwAAAAwAAAASAAAADQAAABMAAAAOAAAAAwAAABQAAAAPAAAAAAAAAPA8AABnAAAAaAAAADcAAAA1AAAANgAAACEAAAAiAAAAIwAAAAAAAAAAPQAAaQAAAGoAAAA3AAAANwAAADgAAAAkAAAAJQAAACYAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAB0AAAAcgAAAHUAAABlAAAAAAAAAAAAAADAOAAAXgAAAGsAAAA3AAAAAAAAANA8AABeAAAAbAAAADcAAAAVAAAABAAAAAUAAAAGAAAADwAAABYAAAAQAAAAFwAAABEAAAAHAAAAGAAAABAAAAAAAAAAODwAAF4AAABtAAAANwAAAAcAAAAIAAAAEQAAADkAAAA6AAAAEgAAADsAAAAAAAAAeDwAAF4AAABuAAAANwAAAAkAAAAKAAAAEwAAADwAAAA9AAAAFAAAAD4AAAAAAAAAADwAAF4AAABvAAAANwAAAAMAAAAEAAAACwAAAC8AAAAwAAAADAAAADEAAAAAAAAAADoAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAAAAAAMDoAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABFcnJvcjogbGFiZWxpbmcgd29yayBvdmVyZmxvdy4KAFVua25vd24gb3IgdW5zdXBwb3J0ZWQgbGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgcmVxdWVzdGVkLiBTZXQgdG8gbWFudWFsLgoATGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgc2V0IHRvICVzLgoATUFOVUFMAEFVVE9fTUVESUFOAEFVVE9fT1RTVQBBVVRPX0FEQVBUSVZFAEFVVE9fQlJBQ0tFVElORwBFcnJvcjogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICglZCkgcmVxdWVzdGVkLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIG1hcmtlciBjb3VudHMgLVslM2Q6ICUzZF0gWyUzZDogJTNkXSBbJTNkOiAlM2RdKy4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgBtZWRpYW4AT3RzdQBBdXRvIHRocmVzaG9sZCAoJXMpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAD8/PyAxCgA/Pz8gMgoAPz8/IDMKAEVycm9yOiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARXJyb3I6IGNhbid0IGxvYWQgcGF0dGVybiBmcm9tIE5VTEwgYnVmZmVyLgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgAgCQoNAFBhdHRlcm4gRGF0YSByZWFkIGVycm9yISEKAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgbGVuZ3RoLgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAEVycm9yICglZCk6IHVuYWJsZSB0byByZWFkIGZyb20gZmlsZS4AYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAEVycm9yOiBpY3BHZXRKX1VfWGMARXJyb3IgMTogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDY6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNzogaWNwR2V0SW5pdFh3MlhjCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogRmlyc3QgbGluZSBtdXN0IGJlIG51bWJlciBvZiBtYXJrZXIgY29uZmlncyB0byByZWFkLgoAJWxsdSVjAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGRpcmVjdG9yeSBuYW1lLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gbG9hZCBwYXR0ZXJuICclcycuCgAlbGYARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IEZpcnN0IGxpbmUgbXVzdCBiZSBwYXR0ZXJuIHdpZHRoLgoAJWxmICVsZiAlbGYgJWxmACVmICVmAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJywgbWFya2VyIGRlZmluaXRpb24gJTNkOiBMaW5lcyAyIC0gNCBtdXN0IGJlIG1hcmtlciB0cmFuc2Zvcm0uCgBbJXNdIABkZWJ1ZwBpbmZvAHdhcm5pbmcAZXJyb3IAJXMlcwAuaXNldABFcnJvcjogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciByZWFkaW5nIGltYWdlU2V0LgoASW1hZ2VzZXQgY29udGFpbnMgJWQgaW1hZ2VzLgoARmFsbGluZyBiYWNrIHRvIHJlYWRpbmcgJyVzJXMnIGluIEFSVG9vbEtpdCB2NC54IGZvcm1hdC4KAEVycm9yIHJlYWRpbmcgSlBFRyBmaWxlLgoARXJyb3IgcmVhZGluZyBKUEVHIGZpbGUgaGVhZGVyLgoAJWYARmlsZSBvcGVuIGVycm9yLiAlcwoAUmVhZCBlcnJvciEhCgByAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAAJXMlcwoAJWQACiMjIyBTdXJmYWNlIE5vLiVkICMjIwoAJXMAICBSZWFkIEltYWdlU2V0LgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5pc2V0Jy4KACAgICBlbmQuCgAgIFJlYWQgRmVhdHVyZVNldC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuZnNldCcuCgAgIFJlYWQgTWFya2VyU2V0LgoAbXJrAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMubXJrJy4KACVmICVmICVmICVmAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAGpwZwBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0cjEvcmVmRGF0YVNldFB0cjIuCgBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0ci4KAHJiAGtwbUxvYWRSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldFB0ci4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciBsb2FkaW5nIEtQTSBkYXRhOiBlcnJvciByZWFkaW5nIGRhdGEuCgBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiBOVUxMIGtwbUhhbmRsZS9yZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiByZWZEYXRhU2V0LgoAcG9pbnRzLSVkCgBrcG1NYXRjaGluZygpOiBOVUxMIGtwbUhhbmRsZS9pbkltYWdlTHVtYS4KAFBhZ2VbJWRdICBwcmU6JTNkLCBhZnQ6JTNkLCBlcnJvciA9ICVmCgAlcy4lcwBBc3NlcnRpb24gYHB5cmFtaWQtPnNpemUoKSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmNwcABQeXJhbWlkIGlzIG5vdCBhbGxvY2F0ZWQAT2N0YXZlIG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBtSW1hZ2VzLnNpemUoKSA+IDBgIGZhaWxlZCBpbiAATGFwbGFjaWFuIHB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZABBc3NlcnRpb24gYHB5cmFtaWQtPm51bU9jdGF2ZXMoKSA+IDBgIGZhaWxlZCBpbiAAUHlyYW1pZCBkb2VzIG5vdCBjb250YWluIGFueSBsZXZlbHMAQXNzZXJ0aW9uIGBkeW5hbWljX2Nhc3Q8Y29uc3QgQmlub21pYWxQeXJhbWlkMzJmKj4ocHlyYW1pZClgIGZhaWxlZCBpbiAAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAEFzc2VydGlvbiBgaW0xLnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBc3NlcnRpb24gYGltMS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgd2lkdGgAQXNzZXJ0aW9uIGBkLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodABBc3NlcnRpb24gYGltMS53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHJvdyA8IG1IZWlnaHRgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2ZyYW1ld29yay9pbWFnZS5oAHJvdyBvdXQgb2YgYm91bmRzAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQBEb0cgUHlyYW1pZABOb24tbWF4IHN1cHByZXNzaW9uAFN1YnBpeGVsAHBydW5lRmVhdHVyZXMARmluZCBPcmllbnRhdGlvbnMAQXNzZXJ0aW9uIGBtQnVja2V0cy5zaXplKCkgPT0gbU51bUJ1Y2tldHNYYCBmYWlsZWQgaW4gAEJ1Y2tldHMgYXJlIG5vdCBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBtQnVja2V0c1swXS5zaXplKCkgPT0gbU51bUJ1Y2tldHNZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUZlYXR1cmVQb2ludHMuc2l6ZSgpIDw9IG1NYXhOdW1GZWF0dXJlUG9pbnRzYCBmYWlsZWQgaW4gAFRvbyBtYW55IGZlYXR1cmUgcG9pbnRzAEFzc2VydGlvbiBgYnVja2V0WzBdLmZpcnN0ID49IGJ1Y2tldFtuXS5maXJzdGAgZmFpbGVkIGluIABudGhfZWxlbWVudCBmYWlsZWQAQXNzZXJ0aW9uIGBrcC5zY2FsZSA8IG1MYXBsYWNpYW5QeXJhbWlkLm51bVNjYWxlUGVyT2N0YXZlKClgIGZhaWxlZCBpbiAARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBga3Auc2NvcmUgPT0gbGFwMS5nZXQ8ZmxvYXQ+KHkpW3hdYCBmYWlsZWQgaW4gAFNjb3JlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIERvRyBpbWFnZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMS5oZWlnaHQoKSA9PSBsYXAyLmhlaWdodCgpYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvRG9HX3NjYWxlX2ludmFyaWFudF9kZXRlY3Rvci5oAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKSkgJiYgKGxhcDEud2lkdGgoKSA9PSBsYXAyLndpZHRoKCkpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAHggb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIABJbWFnZSBkaW1lbnNpb25zIGluY29uc2lzdGVudABBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDIud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGxhcDAuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvaW50ZXJwb2xhdGUuaABmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgaW0ud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB4X2Rpdl8yLTAuNWYgPj0gMGAgZmFpbGVkIGluIAB4X2Rpdl8yIG91dCBvZiBib3VuZHMgb3V0IG9mIGJvdW5kcyBmb3IgaW50ZXJwb2xhdGlvbgBBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAEFzc2VydGlvbiBgeF9kaXZfMiswLjVmIDwgbGFwMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeV9kaXZfMiswLjVmIDwgbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMS5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPCBtSW1hZ2VzLnNpemUoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgcmFuZ2UATjZ2aXNpb24xOEJpbm9taWFsUHlyYW1pZDMyZkUAQXNzZXJ0aW9uIGB3aWR0aCA+PSA1YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5jcHAASW1hZ2UgaXMgdG9vIHNtYWxsAEFzc2VydGlvbiBgaGVpZ2h0ID49IDVgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAQXNzZXJ0aW9uIGBpbWFnZS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBoYXZlIDEgY2hhbm5lbABBc3NlcnRpb24gYG1QeXJhbWlkLnNpemUoKSA9PSBtTnVtT2N0YXZlcyptTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQAQXNzZXJ0aW9uIGBpbWFnZS53aWR0aCgpID09IG1QeXJhbWlkWzBdLndpZHRoKClgIGZhaWxlZCBpbiAASW1hZ2Ugb2Ygd3Jvbmcgc2l6ZSBmb3IgcHlyYW1pZABBc3NlcnRpb24gYGltYWdlLmhlaWdodCgpID09IG1QeXJhbWlkWzBdLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAARGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIGEgZmxvYXQAVW5rbm93biBpbWFnZSB0eXBlAFVuc3VwcG9ydGVkIGltYWdlIHR5cGUATjZ2aXNpb245RXhjZXB0aW9uRQBBc3NlcnRpb24gYGltLndpZHRoKCkgPT0gaW0uc3RlcCgpL3NpemVvZihmbG9hdClgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmNwcABTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEFzc2VydGlvbiBgeCA+PSAwYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHggPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS53aWR0aCgpYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAHkgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHkgPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS5oZWlnaHQoKWAgZmFpbGVkIGluIAB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAQXNzZXJ0aW9uIGBnLmNoYW5uZWxzKCkgPT0gMmAgZmFpbGVkIGluIABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBtYXhfaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABNYXhpbXVtIGJpbiBzaG91bGQgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgASGlzdG9ncmFtIHBvaW50ZXIgaXMgTlVMTABBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYG1hZ25pdHVkZSA+PSAwYCBmYWlsZWQgaW4gAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAQXNzZXJ0aW9uIGBudW1fYmlucyA+PSAwYCBmYWlsZWQgaW4gAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gAHcxIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAHcyIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBiMSA+PSAwICYmIGIxIDwgbnVtX2JpbnNgIGZhaWxlZCBpbiAAYjEgYmluIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGIyID49IDAgJiYgYjIgPCBudW1fYmluc2AgZmFpbGVkIGluIABiMiBiaW4gaW5kZXggb3V0IG9mIHJhbmdlAElEIGFscmVhZHkgZXhpc3RzAEJ1aWxkIFB5cmFtaWQARXh0cmFjdCBGZWF0dXJlcwBBc3NlcnRpb24gYGFzc2lnbm1lbnQuc2l6ZSgpID09IG51bV9pbmRpY2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9iaW5hcnlfaGllcmFyY2hpY2FsX2NsdXN0ZXJpbmcuaABBc3NpZ25tZW50IHNpemUgd3JvbmcAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2lnbm1lbnQgaXMgaW52YWxpZABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABBc3NpZ25tZW50IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpdC0+c2Vjb25kLnNpemUoKSAhPSAwYCBmYWlsZWQgaW4gAENsdXN0ZXIgbXVzdCBoYXZlIGF0bGVhc2V0IDEgZmVhdHVyZQBBc3NlcnRpb24gYG1LID09IG1DZW50ZXJzLnNpemUoKWAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMva21lZG9pZHMuaABrIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgY2VudGVycwBBc3NlcnRpb24gYG51bV9mZWF0dXJlcyA+IDBgIGZhaWxlZCBpbiAATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA8PSBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA+PSBtS2AgZmFpbGVkIGluIABOb3QgZW5vdWdoIGZlYXR1cmVzAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBudW1fY2VudGVycyA+IDBgIGZhaWxlZCBpbiAAVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAxIGNlbnRlcgAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAQXNzZXJ0aW9uIGBkZXRlY3RvcmAgZmFpbGVkIGluIABEZXRlY3RvciBpcyBOVUxMAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQeXJhbWlkIGlzIGVtcHR5AEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSU42dmlzaW9uOEtleWZyYW1lSUxpOTZFRUVFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAWyVzXSBbJXNdIFslc10gOiBGb3VuZCAlZCBmZWF0dXJlcyBpbiBxdWVyeQBib29sIHZpc2lvbjo6VmlzdWFsRGF0YWJhc2U8dmlzaW9uOjpGUkVBS0V4dHJhY3RvciwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIHZpc2lvbjo6QmluYXJ5RmVhdHVyZU1hdGNoZXI8OTY+ID46OnF1ZXJ5KGNvbnN0IHZpc2lvbjo6R2F1c3NpYW5TY2FsZVNwYWNlUHlyYW1pZCAqKSBbRkVBVFVSRV9FWFRSQUNUT1IgPSB2aXNpb246OkZSRUFLRXh0cmFjdG9yLCBTVE9SRSA9IHZpc2lvbjo6QmluYXJ5RmVhdHVyZVN0b3JlLCBNQVRDSEVSID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj5dAEZpbmQgTWF0Y2hlcyAoMSkASG91Z2ggVm90aW5nICgxKQBGaW5kIEhvdWdoIE1hdGNoZXMgKDEpAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkARmluZCBNYXRjaGVzICgyKQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikARXN0aW1hdGUgSG9tb2dyYXBoeSAoMikARmluZCBJbmxpZXJzICgyKQBBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2ZlYXR1cmVfbWF0Y2hlci1pbmxpbmUuaABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBBc3NlcnRpb24gYGJlc3RfaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKWAgZmFpbGVkIGluIABTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAQXNzZXJ0aW9uIGBoeXAuc2l6ZSgpID49IDkqbWF4X251bV9oeXBvdGhlc2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9ob21vZ3JhcGh5X2VzdGltYXRpb24vcm9idXN0X2hvbW9ncmFwaHkuaABoeXAgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIDkqbWF4X251bV9oeXBvdGhlc2VzAEFzc2VydGlvbiBgdG1wX2kuc2l6ZSgpID49IG51bV9wb2ludHNgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABoeXBfY29zdHMgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG1heF9udW1faHlwb3RoZXNlcwBBc3NlcnRpb24gYG4gPD0gaW5fbWF0Y2hlcy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgbVJvb3QuZ2V0KClgIGZhaWxlZCBpbiAAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAATWluaW11bSBpbmRleCBub3Qgc2V0AEFzc2VydGlvbiBgeCA+PSBtTWluWGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaAB4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYHggPCBtTWF4WGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAeSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGB5IDwgbU1heFlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA+IC1QSWAgZmFpbGVkIGluIABhbmdsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABzY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBzY2FsZSA8IG1NYXhTY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGluZGV4ID49IDBgIGZhaWxlZCBpbiAAaW5kZXggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAGJpblggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA8IG1OdW1YQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblkgPj0gMGAgZmFpbGVkIGluIABiaW5ZIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpblkgPCBtTnVtWUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblNjYWxlID49IDBgIGZhaWxlZCBpbiAAYmluU2NhbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2l6ZSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcABzaXplIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VXaWR0aCA+IDBgIGZhaWxlZCBpbiAAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1SZWZJbWFnZUhlaWdodCA+IDBgIGZhaWxlZCBpbiAAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBuID4gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvdXRpbHMvcGFydGlhbF9zb3J0LmgAbiBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgcHlyYW1pZGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZnJlYWsuaABQeXJhbWlkIGlzIE5VTEwAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIABGZWF0dXJlIHN0b3JlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBudW1fcG9pbnRzID09IHBvaW50cy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHNhbWUgc2l6ZQBBc3NlcnRpb24gYG9jdGF2ZSA+PSAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAE9jdGF2ZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABTY2FsZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlACVtLSVkLSVZLSVILSVNLSVTAEFzc2VydGlvbiBgd2lkdGggPiAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAFdpZHRoIGNhbm5vdCBiZSB6ZXJvAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABIZWlnaHQgY2Fubm90IGJlIHplcm8AQXNzZXJ0aW9uIGBzdGVwID49IHdpZHRoYCBmYWlsZWQgaW4gAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAEFzc2VydGlvbiBgY2hhbm5lbHMgPiAwYCBmYWlsZWQgaW4gAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwBBc3NlcnRpb24gYG1EYXRhLmdldCgpYCBmYWlsZWQgaW4gAERhdGEgcG9pbnRlciBpcyBOVUxMAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSWhFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQaE5TXzE0ZGVmYXVsdF9kZWxldGVJaEVFTlNfOWFsbG9jYXRvckloRUVFRQBJbnZhbGlkIGltYWdlIHR5cGUAMTZOdWxsQXJyYXlEZWxldGVySWhFAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQBBc3NlcnRpb24gYG1TdGFydFRpbWUgPj0gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAIGxpbmUgADogAENsb2NrIGhhcyBub3QgYmVlbiBzdGFydGVkAEFzc2VydGlvbiBgbVN0b3BUaW1lID49IDBgIGZhaWxlZCBpbiAAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMAIElORk8gIAB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBzZXR1cAB0ZWFyZG93bgBzZXR1cEFSMgBfYWRkTWFya2VyAF9hZGRNdWx0aU1hcmtlcgBfYWRkTkZUTWFya2VyAGdldE11bHRpTWFya2VyTnVtAGdldE11bHRpTWFya2VyQ291bnQAX2xvYWRDYW1lcmEAc2V0TWFya2VySW5mb0RpcgBzZXRNYXJrZXJJbmZvVmVydGV4AGdldFRyYW5zTWF0U3F1YXJlAGdldFRyYW5zTWF0U3F1YXJlQ29udABnZXRUcmFuc01hdE11bHRpU3F1YXJlAGdldFRyYW5zTWF0TXVsdGlTcXVhcmVSb2J1c3QAZGV0ZWN0TWFya2VyAGdldE1hcmtlck51bQBkZXRlY3RORlRNYXJrZXIAZ2V0TXVsdGlFYWNoTWFya2VyAGdldE1hcmtlcgBnZXRORlRNYXJrZXIAc2V0RGVidWdNb2RlAGdldERlYnVnTW9kZQBnZXRQcm9jZXNzaW5nSW1hZ2UAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldFRocmVzaG9sZABnZXRUaHJlc2hvbGQAc2V0UGF0dGVybkRldGVjdGlvbk1vZGUAZ2V0UGF0dGVybkRldGVjdGlvbk1vZGUAc2V0UGF0dFJhdGlvAGdldFBhdHRSYXRpbwBzZXRNYXRyaXhDb2RlVHlwZQBnZXRNYXRyaXhDb2RlVHlwZQBzZXRMYWJlbGluZ01vZGUAZ2V0TGFiZWxpbmdNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBFUlJPUl9BUkNPTlRST0xMRVJfTk9UX0ZPVU5EAEVSUk9SX01VTFRJTUFSS0VSX05PVF9GT1VORABFUlJPUl9NQVJLRVJfSU5ERVhfT1VUX09GX0JPVU5EUwBBUl9ERUJVR19ESVNBQkxFAEFSX0RFQlVHX0VOQUJMRQBBUl9ERUZBVUxUX0RFQlVHX01PREUAQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAEFSX0xBQkVMSU5HX0JMQUNLX1JFR0lPTgBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfSU1BR0VfUFJPQ19GUkFNRV9JTUFHRQBBUl9JTUFHRV9QUk9DX0ZJRUxEX0lNQUdFAEFSX0RFRkFVTFRfSU1BR0VfUFJPQ19NT0RFAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SAEFSX1RFTVBMQVRFX01BVENISU5HX01PTk8AQVJfTUFUUklYX0NPREVfREVURUNUSU9OAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0RFRkFVTFRfUEFUVEVSTl9ERVRFQ1RJT05fTU9ERQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZAEFSX1VTRV9UUkFDS0lOR19ISVNUT1JZX1YyAEFSX0RFRkFVTFRfTUFSS0VSX0VYVFJBQ1RJT05fTU9ERQBBUl9NQVhfTE9PUF9DT1VOVABBUl9MT09QX0JSRUFLX1RIUkVTSABBUl9MT0dfTEVWRUxfREVCVUcAQVJfTE9HX0xFVkVMX0lORk8AQVJfTE9HX0xFVkVMX1dBUk4AQVJfTE9HX0xFVkVMX0VSUk9SAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9NQVRSSVhfQ09ERV8zeDMAQVJfTUFUUklYX0NPREVfM3gzX0hBTU1JTkc2MwBBUl9NQVRSSVhfQ09ERV8zeDNfUEFSSVRZNjUAQVJfTUFUUklYX0NPREVfNHg0AEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfNV81AEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX01BTlVBTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX09UU1UAQVJfTEFCRUxJTkdfVEhSRVNIX01PREVfQVVUT19BREFQVElWRQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTk9ORQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUEFUVEVSTl9FWFRSQUNUSU9OAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9DT05UUkFTVABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfRURDX0ZBSUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1IAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX0hFVVJJU1RJQ19UUk9VQkxFU09NRV9NQVRSSVhfQ09ERVMAYWxsb2NhdG9yPFQ+OjphbGxvY2F0ZShzaXplX3QgbikgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZQBJbWFnZSBwcm9jLiBtb2RlIHNldCB0byAlZC4KAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgB2aWlmAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAFRocmVzaG9sZCBzZXQgdG8gJWQKAHZpaWkAVGhyZXNob2xkIG1vZGUgc2V0IHRvICVkCgBkaWkAdmlpZABpaQB2aWkAb24uAG9mZi4ARGVidWcgbW9kZSBzZXQgdG8gJXMKAFRyYWNraW5nIGxvc3QuICVkCgBUcmFja2VkIHBhZ2UgJWQgKG1heCAlZCkuCgB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAwOyBpZiAoIWFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdKSB7IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdID0gKHsgaWQ6IDAsIGVycm9yOiAtMSwgZm91bmQ6IDAsIHBvc2U6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSB9KTsgfSB2YXIgbWFya2VySW5mbyA9IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdOyBtYXJrZXJJbmZvWyJpZCJdID0gJGFbaSsrXTsgbWFya2VySW5mb1siZXJyb3IiXSA9ICRhW2krK107IG1hcmtlckluZm9bImZvdW5kIl0gPSAxOyBtYXJrZXJJbmZvWyJwb3NlIl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bM10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bN10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sicG9zZSJdWzExXSA9ICRhW2krK107IH0AeyB2YXIgJGEgPSBhcmd1bWVudHM7IHZhciBpID0gMDsgaWYgKCFhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSA9ICh7IGlkOiAwLCBlcnJvcjogLTEsIGZvdW5kOiAwLCBwb3NlOiBbMCwwLDAsMCwgMCwwLDAsMCwgMCwwLDAsMF0gfSk7IH0gdmFyIG1hcmtlckluZm8gPSBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXTsgbWFya2VySW5mb1siaWQiXSA9ICRhW2krK107IG1hcmtlckluZm9bImVycm9yIl0gPSAtMTsgbWFya2VySW5mb1siZm91bmQiXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVswXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsyXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVszXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs0XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs1XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs2XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs3XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs4XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs5XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxMF0gPSAwOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTFdID0gMDsgfQB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAxMjsgaWYgKCFhcnRvb2xraXRbIm1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIm1hcmtlckluZm8iXSA9ICh7IHBvczogWzAsMF0sIGxpbmU6IFtbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdXSwgdmVydGV4OiBbWzAsMF0sIFswLDBdLCBbMCwwXSwgWzAsMF1dIH0pOyB9IHZhciBtYXJrZXJJbmZvID0gYXJ0b29sa2l0WyJtYXJrZXJJbmZvIl07IG1hcmtlckluZm9bImFyZWEiXSA9ICQwOyBtYXJrZXJJbmZvWyJpZCJdID0gJDE7IG1hcmtlckluZm9bImlkUGF0dCJdID0gJDI7IG1hcmtlckluZm9bImlkTWF0cml4Il0gPSAkMzsgbWFya2VySW5mb1siZGlyIl0gPSAkNDsgbWFya2VySW5mb1siZGlyUGF0dCJdID0gJDU7IG1hcmtlckluZm9bImRpck1hdHJpeCJdID0gJDY7IG1hcmtlckluZm9bImNmIl0gPSAkNzsgbWFya2VySW5mb1siY2ZQYXR0Il0gPSAkODsgbWFya2VySW5mb1siY2ZNYXRyaXgiXSA9ICQ5OyBtYXJrZXJJbmZvWyJwb3MiXVswXSA9ICQxMDsgbWFya2VySW5mb1sicG9zIl1bMV0gPSAkMTE7IG1hcmtlckluZm9bImxpbmUiXVswXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzBdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMF1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzFdWzFdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzNdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bM11bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJlcnJvckNvcnJlY3RlZCJdID0gJGFbaSsrXTsgfQB7IGlmICghYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0pIHsgYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0gPSAoe30pOyB9IHZhciBtdWx0aUVhY2hNYXJrZXIgPSBhcnRvb2xraXRbIm11bHRpRWFjaE1hcmtlckluZm8iXTsgbXVsdGlFYWNoTWFya2VyWyd2aXNpYmxlJ10gPSAkMDsgbXVsdGlFYWNoTWFya2VyWydwYXR0SWQnXSA9ICQxOyBtdWx0aUVhY2hNYXJrZXJbJ3BhdHRUeXBlJ10gPSAkMjsgbXVsdGlFYWNoTWFya2VyWyd3aWR0aCddID0gJDM7IH0AaWlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUAbG9hZENhbWVyYSgpOiBFcnJvciBsb2FkaW5nIHBhcmFtZXRlciBmaWxlICVzIGZvciBjYW1lcmEuCgBpaWlpAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgTkZUIG1hcmtlci4KAFJlYWRpbmcgJXMuZnNldDMKAGZzZXQzAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAEVycm9yOiBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQKAEVycm9yOiBrcG1NZXJnZVJlZkRhdGFTZXQKACAgRG9uZS4KAFJlYWRpbmcgJXMuZnNldAoAZnNldABFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBFcnJvcjoga3BtU2V0UmVmRGF0YVNldAoATG9hZGluZyBvZiBORlQgZGF0YSBjb21wbGV0ZS4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBjb25maWcgZGF0YSBsb2FkIGVycm9yICEhCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAGxvYWRNYXJrZXIoKTogRXJyb3IgbG9hZGluZyBwYXR0ZXJuIGZpbGUgJXMuCgBFcnJvcjogYXIyQ3JlYXRlSGFuZGxlLgoAaWlpaWkAc2V0dXAoKTogRXJyb3I6IGFyUGF0dENyZWF0ZUhhbmRsZS4KAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAeyBpZiAoIWFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXSkgeyBhcnRvb2xraXRbImZyYW1lTWFsbG9jIl0gPSAoe30pOyB9IHZhciBmcmFtZU1hbGxvYyA9IGFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXTsgZnJhbWVNYWxsb2NbImZyYW1lcG9pbnRlciJdID0gJDE7IGZyYW1lTWFsbG9jWyJmcmFtZXNpemUiXSA9ICQyOyBmcmFtZU1hbGxvY1siY2FtZXJhIl0gPSAkMzsgZnJhbWVNYWxsb2NbInRyYW5zZm9ybSJdID0gJDQ7IGZyYW1lTWFsbG9jWyJ2aWRlb0x1bWFQb2ludGVyIl0gPSAkNTsgfQAqKiogQ2FtZXJhIFBhcmFtZXRlciByZXNpemVkIGZyb20gJWQsICVkLiAqKioKAHNldENhbWVyYSgpOiBFcnJvcjogYXJQYXJhbUxUQ3JlYXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAT3V0IG9mIG1lbW9yeSEhCgBFcnJvcjogbWFsbG9jCgAjIyMgRmVhdHVyZSBjYW5kaWRhdGVzIGZvciB0cmFja2luZyBhcmUgb3ZlcmZsb3cuCgBCb2d1cyBtZXNzYWdlIGNvZGUgJWQAQUxJR05fVFlQRSBpcyB3cm9uZywgcGxlYXNlIGZpeABNQVhfQUxMT0NfQ0hVTksgaXMgd3JvbmcsIHBsZWFzZSBmaXgAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MASW52YWxpZCBjcm9wIHJlcXVlc3QARENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZQBEQ1Qgc2NhbGVkIGJsb2NrIHNpemUgJWR4JWQgbm90IHN1cHBvcnRlZABDb21wb25lbnQgaW5kZXggJWQ6IG1pc21hdGNoaW5nIHNhbXBsaW5nIHJhdGlvICVkOiVkLCAlZDolZCwgJWMAQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAEJvZ3VzIGlucHV0IGNvbG9yc3BhY2UAQm9ndXMgSlBFRyBjb2xvcnNwYWNlAEJvZ3VzIG1hcmtlciBsZW5ndGgAV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkAFNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkAEludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBJbnZhbGlkIHNjYW4gc2NyaXB0IGF0IGVudHJ5ICVkAEltcHJvcGVyIGNhbGwgdG8gSlBFRyBsaWJyYXJ5IGluIHN0YXRlICVkAEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQnVmZmVyIHBhc3NlZCB0byBKUEVHIGxpYnJhcnkgaXMgdG9vIHNtYWxsAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBDQ0lSNjAxIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQAVG9vIG1hbnkgY29sb3IgY29tcG9uZW50czogJWQsIG1heCAlZABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAQm9ndXMgREFDIGluZGV4ICVkAEJvZ3VzIERBQyB2YWx1ZSAweCV4AEJvZ3VzIERIVCBpbmRleCAlZABCb2d1cyBEUVQgaW5kZXggJWQARW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdyaXRlIHRvIEVNUyBmYWlsZWQARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4ASW5wdXQgZmlsZSByZWFkIGVycm9yAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8ARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE1pc3NpbmcgSHVmZm1hbiBjb2RlIHRhYmxlIGVudHJ5AE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMARW1wdHkgaW5wdXQgZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGlucHV0IGZpbGUAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YQBJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZQBOb3QgaW1wbGVtZW50ZWQgeWV0AFJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZQBBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UAUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AEluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpAENhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cwBDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMAQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAFVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4AEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPSSBtYXJrZXJzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMAVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4AFZpcnR1YWwgYXJyYXkgY29udHJvbGxlciBtZXNzZWQgdXAASW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24AUmVhZCBmcm9tIFhNUyBmYWlsZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nADljICAxNC1KYW4tMjAxOABDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHAEFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkAFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUARGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZABEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldQBGcmVlZCBFTVMgaGFuZGxlICV1AE9idGFpbmVkIEVNUyBoYW5kbGUgJXUARW5kIE9mIEltYWdlACAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZABKRklGIEFQUDAgbWFya2VyOiB2ZXJzaW9uICVkLiUwMmQsIGRlbnNpdHkgJWR4JWQgICVkAFdhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldQAgICAgd2l0aCAlZCB4ICVkIHRodW1ibmFpbCBpbWFnZQBNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldQBVbmV4cGVjdGVkIG1hcmtlciAweCUwMngAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AFF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMAUXVhbnRpemluZyB0byAlZCBjb2xvcnMAU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24AQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkAFJTVCVkAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAFN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZAAgICAgQ29tcG9uZW50ICVkOiAlZGh4JWR2IHE9JWQAU3RhcnQgb2YgSW1hZ2UAU3RhcnQgT2YgU2NhbjogJWQgY29tcG9uZW50cwAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZAAgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkAENsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcwBPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMASkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiBwYWxldHRlIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBGcmVlZCBYTVMgaGFuZGxlICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUAVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZABDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZABDb3JydXB0IEpQRUcgZGF0YTogJXUgZXh0cmFuZW91cyBieXRlcyBiZWZvcmUgbWFya2VyIDB4JTAyeABDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQAQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcwBTT1MATFNFAEpQRUdNRU0AJWxkJWMAJXMKAAABAgQHAwYFAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AaW5maW5pdHkAbmFuAExDX0FMTABMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIAHJ3YQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAYgBjAGgAYQBzAHQAaQBqAG0AZgBkAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAdm9pZABib29sAGNoYXIAc2lnbmVkIGNoYXIAdW5zaWduZWQgY2hhcgBzaG9ydAB1bnNpZ25lZCBzaG9ydABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBmbG9hdABkb3VibGUAc3RkOjpzdHJpbmcAc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4Ac3RkOjp3c3RyaW5nAGVtc2NyaXB0ZW46OnZhbABlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmcgZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0llRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjhpb3NfYmFzZUUATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQBOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQBOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQBOU3QzX18yN2NvbGxhdGVJY0VFAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQBOU3QzX18yN2NvbGxhdGVJd0VFACVwAEMATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFACVwAAAAAEwAbGwAJQAAAAAAbABOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAJUg6JU06JVMAJW0vJWQvJXkAJUk6JU06JVMgJXAAJWEgJWIgJWQgJUg6JU06JVMgJVkAQU0AUE0ASmFudWFyeQBGZWJydWFyeQBNYXJjaABBcHJpbABNYXkASnVuZQBKdWx5AEF1Z3VzdABTZXB0ZW1iZXIAT2N0b2JlcgBOb3ZlbWJlcgBEZWNlbWJlcgBKYW4ARmViAE1hcgBBcHIASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdAAlbS8lZC8leSVZLSVtLSVkJUk6JU06JVMgJXAlSDolTSVIOiVNOiVTJUg6JU06JVNOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAMDEyMzQ1Njc4OQAlTGYATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAwMTIzNDU2Nzg5AE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAJS4wTGYATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQBOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAE5TdDNfXzI4bWVzc2FnZXNJY0VFAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAE5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUUATlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjZsb2NhbGU1X19pbXBFAE5TdDNfXzI1Y3R5cGVJY0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAE5TdDNfXzI1Y3R5cGVJd0VFAGZhbHNlAHRydWUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE0X19zaGFyZWRfY291bnRFAE5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRF";var tempDoublePtr=57872;function demangle(func){return func}function demangleAll(text){var regex=/\b__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";ENV["_"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=value;return value}function ___map_file(pathname,size){___setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(fd){if(fd===undefined)fd=SYSCALLS.get();var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_read(){return _fd_read.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function __embind_register_constant(name,type,value){name=readLatin1String(name);whenDependentTypesAreResolved([],[type],function(type){type=type[0];Module[name]=type["fromWireType"](value);return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;iLIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=57728;var ___tm_timezone=(stringToUTF8("GMT",57776,4),57776);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Yb[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)==0?2:e,f);return}function nB(a){a=a|0;return ((oB(a)|0)^1)&1|0}function oB(b){b=b|0;return (a[b>>0]|0)!=0|0}function pB(a){a=a|0;c[a>>2]=0;qB(a);return}function qB(a){a=a|0;c[a>>2]=c[a>>2]|1;return}function rB(a){a=a|0;c[a>>2]=0;return}function sB(){return 0}function tB(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=FO(b)|0;if(a|0)break;a=sB()|0;if(!a){a=0;break}Rb[a&1]()}return a|0}function uB(a){a=a|0;return tB(a)|0}function vB(a){a=a|0;SA(a);return}function wB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=c[d>>2];a=Jb[c[(c[a>>2]|0)+16>>2]&63](a,b,e)|0;if(a)c[d>>2]=c[e>>2];zb=f;return a&1|0}function xB(a){a=a|0;if(!a)a=0;else a=(NA(a,13904,13992,0)|0)!=0&1;return a|0}function yB(){return 0}function zB(){N(55684);return}function AB(){return 55668}function BB(){return 55676}function CB(){return 55680}function DB(){return 55684}function EB(){FB();return}function FB(){GB(57670);return}function GB(a){a=a|0;var b=0;b=zb;zb=zb+16|0;c[b>>2]=a;HB();zb=b;return}function HB(){pa(IB()|0,47294);ga(JB()|0,47299,1,1,0);KB(47304);LB(47309);MB(47321);NB(47335);OB(47341);PB(47356);QB(47360);RB(47373);SB(47378);TB(47392);UB(47398);na(VB()|0,47405);na(WB()|0,47417);oa(XB()|0,4,47450);ia(YB()|0,47463);ZB(47479);_B(47509);$B(47546);aC(47585);bC(47616);cC(47656);dC(47685);eC(47723);fC(47753);_B(47792);$B(47824);aC(47857);bC(47890);cC(47924);dC(47957);gC(47991);hC(48022);iC(48054);return}function IB(){return sD()|0}function JB(){return rD()|0}function KB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=pD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function LB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=nD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function MB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=lD()|0;la(a|0,c[d>>2]|0,1,0,255);zb=b;return}function NB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=jD()|0;la(a|0,c[d>>2]|0,2,-32768<<16>>16|0,32767<<16>>16|0);zb=b;return}function OB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=hD()|0;la(a|0,c[d>>2]|0,2,0,65535);zb=b;return}function PB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=fD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function QB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=dD()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function RB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=bD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function SB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=$C()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function TB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=ZC()|0;ja(a|0,c[d>>2]|0,4);zb=b;return}function UB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=XC()|0;ja(a|0,c[d>>2]|0,8);zb=b;return}function VB(){return WC()|0}function WB(){return VC()|0}function XB(){return UC()|0}function YB(){return TC()|0}function ZB(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=QC()|0;a=RC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function _B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=NC()|0;a=OC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function $B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=KC()|0;a=LC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function aC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=HC()|0;a=IC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function bC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=EC()|0;a=FC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function cC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=BC()|0;a=CC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function dC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=yC()|0;a=zC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function eC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=vC()|0;a=wC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function fC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=sC()|0;a=tC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function gC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=pC()|0;a=qC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function hC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=mC()|0;a=nC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function iC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=jC()|0;a=kC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function jC(){return lC()|0}function kC(){return 7}function lC(){return 14144}function mC(){return oC()|0}function nC(){return 7}function oC(){return 14152}function pC(){return rC()|0}function qC(){return 6}function rC(){return 14160}function sC(){return uC()|0}function tC(){return 5}function uC(){return 14168}function vC(){return xC()|0}function wC(){return 4}function xC(){return 14176}function yC(){return AC()|0}function zC(){return 5}function AC(){return 14184}function BC(){return DC()|0}function CC(){return 4}function DC(){return 14192}function EC(){return GC()|0}function FC(){return 3}function GC(){return 14200}function HC(){return JC()|0}function IC(){return 2}function JC(){return 14208}function KC(){return MC()|0}function LC(){return 1}function MC(){return 14216}function NC(){return PC()|0}function OC(){return 0}function PC(){return 14224}function QC(){return SC()|0}function RC(){return 0}function SC(){return 14232}function TC(){return 14240}function UC(){return 14248}function VC(){return 14272}function WC(){return 13272}function XC(){return YC()|0}function YC(){return 14120}function ZC(){return _C()|0}function _C(){return 14112}function $C(){return aD()|0}function aD(){return 14104}function bD(){return cD()|0}function cD(){return 14096}function dD(){return eD()|0}function eD(){return 14088}function fD(){return gD()|0}function gD(){return 14080}function hD(){return iD()|0}function iD(){return 14072}function jD(){return kD()|0}function kD(){return 14064}function lD(){return mD()|0}function mD(){return 14048}function nD(){return oD()|0}function oD(){return 14056}function pD(){return qD()|0}function qD(){return 14040}function rD(){return 14032}function sD(){return 14024}function tD(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b+4|0;e=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=jz(c[(c[d>>2]|0)+4>>2]|0)|0;zb=b;return a|0}function uD(a){a=a|0;return 0}function vD(a){a=a|0;return 0}function wD(a,b){a=a|0;b=b|0;return 0}function xD(a){a=a|0;return 0}function yD(){return (zD()|0)>0|0}function zD(){return yB()|0}function AD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k;i=k+8|0;e=k+4|0;c[i>>2]=a;do if(a>>>0>=212){h=(a>>>0)/210|0;b=h*210|0;c[e>>2]=a-b;a=0;g=(BD(12736,12928,e,d)|0)-12736>>2;a:while(1){f=(c[12736+(g<<2)>>2]|0)+b|0;b=5;while(1){if(b>>>0>=47){j=6;break}d=c[12544+(b<<2)>>2]|0;e=(f>>>0)/(d>>>0)|0;if(e>>>0>>0){j=107;break a}if((f|0)==(B(e,d)|0))break;else b=b+1|0}b:do if((j|0)==6){j=0;e=211;c:while(1){b=(f>>>0)/(e>>>0)|0;do if(b>>>0>=e>>>0)if((f|0)!=(B(b,e)|0)){b=e+10|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+12|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+16|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+18|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+22|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+28|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)==(B(d,b)|0))d=9;else{b=e+30|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+36|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+40|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+42|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+46|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+52|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+58|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+60|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+66|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+70|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+72|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+78|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+82|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+88|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+96|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+100|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+102|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+106|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+108|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+112|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+120|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+126|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+130|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+136|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+138|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+142|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+148|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+150|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+156|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+162|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+166|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+168|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+172|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+178|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+180|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+186|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+190|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+192|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+196|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+198|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+208|0;d=(f>>>0)/(b>>>0)|0;l=d>>>0>>0;d=(f|0)==(B(d,b)|0);b=l|d?b:e+210|0;d=l?1:d?9:0;a=l?f:a}else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else{b=e;d=9}else{b=e;d=1;a=f}while(0);switch(d&15){case 9:break b;case 0:{e=b;break}default:break c}}if(d){j=108;break a}}while(0);l=g+1|0;f=(l|0)==48;b=h+(f&1)|0;h=b;b=b*210|0;g=f?0:l}if((j|0)==107){c[i>>2]=f;a=f;break}else if((j|0)==108){c[i>>2]=f;break}}else{a=BD(12544,12736,i,d)|0;a=c[a>>2]|0}while(0);zb=k;return a|0}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[d>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=d>>>1;g=e+(b<<2)|0;a=(c[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function CD(a){a=a|0;DD(a);return}function DD(a){a=a|0;c[a>>2]=16480;ED(a,0);YF(a+28|0);GO(c[a+32>>2]|0);GO(c[a+36>>2]|0);GO(c[a+48>>2]|0);GO(c[a+60>>2]|0);return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+32|0;f=a+36|0;d=c[a+40>>2]|0;while(1){if(!d)break;g=d+-1|0;Wb[c[(c[e>>2]|0)+(g<<2)>>2]&3](b,a,c[(c[f>>2]|0)+(g<<2)>>2]|0);d=g}return}function FD(a){a=a|0;DD(a);SA(a);return}function GD(a){a=a|0;DD(a);return}function HD(a){a=a|0;c[a>>2]=16496;YF(a+4|0);return}function ID(a){a=a|0;HD(a);SA(a);return}function JD(a,b){a=a|0;b=b|0;return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function LD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function MD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function ND(a){a=a|0;return 0}function OD(a){a=a|0;return 0}function PD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;Wf()|0;i=b+12|0;j=b+16|0;h=0;while(1){if((h|0)>=(e|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f|0;k=e-h|0;g=(k|0)<(g|0)?k:g;VD(d,f,g)|0;c[i>>2]=(c[i>>2]|0)+g;d=d+g|0;f=g}else{f=Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((f|0)==-1)break;f=eg(f)|0;a[d>>0]=f;d=d+1|0;f=1}h=f+h|0}return h|0}function QD(a){a=a|0;return Wf()|0}function RD(b){b=b|0;var d=0;d=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;if((d|0)==(Wf()|0))b=Wf()|0;else{d=b+12|0;b=c[d>>2]|0;c[d>>2]=b+1;b=cg(a[b>>0]|0)|0}return b|0}function SD(a,b){a=a|0;b=b|0;return Wf()|0}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Wf()|0;j=b+24|0;k=b+28|0;f=0;while(1){if((f|0)>=(e|0))break;g=c[j>>2]|0;h=c[k>>2]|0;if(g>>>0>>0){h=h-g|0;l=e-f|0;h=(l|0)<(h|0)?l:h;VD(g,d,h)|0;c[j>>2]=(c[j>>2]|0)+h;d=d+h|0;f=h+f|0}else{h=c[(c[b>>2]|0)+52>>2]|0;l=cg(a[d>>0]|0)|0;if((Ib[h&63](b,l)|0)==(i|0))break;d=d+1|0;f=f+1|0}}return f|0}function UD(a,b){a=a|0;b=b|0;return Wf()|0}function VD(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)_O(a|0,b|0,c|0)|0;return a|0}function WD(a){a=a|0;c[a>>2]=16560;YF(a+4|0);return}function XD(a){a=a|0;WD(a);SA(a);return}function YD(a,b){a=a|0;b=b|0;return}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function _D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function $D(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function aE(a){a=a|0;return 0}function bE(a){a=a|0;return 0}function cE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;iE()|0;h=a+12|0;i=a+16|0;g=0;while(1){if((g|0)>=(d|0))break;e=c[h>>2]|0;f=c[i>>2]|0;if(e>>>0>>0){f=f-e>>2;j=d-g|0;f=(j|0)<(f|0)?j:f;kE(b,e,f)|0;c[h>>2]=(c[h>>2]|0)+(f<<2);b=b+(f<<2)|0;e=f}else{e=Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((e|0)==-1)break;e=lE(e)|0;c[b>>2]=e;b=b+4|0;e=1}g=e+g|0}return g|0}function dE(a){a=a|0;return iE()|0}function eE(a){a=a|0;var b=0;b=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(iE()|0))a=iE()|0;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=jE(c[a>>2]|0)|0}return a|0}function fE(a,b){a=a|0;b=b|0;return iE()|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=iE()|0;i=a+24|0;j=a+28|0;e=0;while(1){if((e|0)>=(d|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f>>2;k=d-e|0;g=(k|0)<(g|0)?k:g;kE(f,b,g)|0;c[i>>2]=(c[i>>2]|0)+(g<<2);b=b+(g<<2)|0;e=g+e|0}else{g=c[(c[a>>2]|0)+52>>2]|0;k=jE(c[b>>2]|0)|0;if((Ib[g&63](a,k)|0)==(h|0))break;b=b+4|0;e=e+1|0}}return e|0}function hE(a,b){a=a|0;b=b|0;return iE()|0}function iE(){return -1}function jE(a){a=a|0;return a|0}function kE(a,b,c){a=a|0;b=b|0;c=c|0;if(c)gz(a,b,c)|0;return a|0}function lE(a){a=a|0;return a|0}function mE(a){a=a|0;qE(a,16656);CD(a+8|0);return}function nE(a){a=a|0;mE(a);SA(a);return}function oE(a){a=a|0;mE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function pE(a){a=a|0;nE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function qE(a,b){a=a|0;b=b|0;return}function rE(a){a=a|0;vE(a,16704);GD(a+8|0);return}function sE(a){a=a|0;rE(a);SA(a);return}function tE(a){a=a|0;rE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function uE(a){a=a|0;sE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function vE(a,b){a=a|0;b=b|0;return}function wE(a){a=a|0;AE(a,16752);CD(a+4|0);return}function xE(a){a=a|0;wE(a);SA(a);return}function yE(a){a=a|0;wE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function zE(a){a=a|0;xE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function AE(a,b){a=a|0;b=b|0;return}function BE(a){a=a|0;FE(a,16800);GD(a+4|0);return}function CE(a){a=a|0;BE(a);SA(a);return}function DE(a){a=a|0;BE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function EE(a){a=a|0;CE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function FE(a,b){a=a|0;b=b|0;return}function GE(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[a+24>>2]|0)==0|b;return}function HE(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));YN(d);return}function IE(a,b){a=a|0;b=b|0;WN(a,b+28|0);return}function JE(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function KE(a){a=a|0;c[a>>2]=16496;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function LE(a){a=a|0;c[a>>2]=16560;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function ME(b){b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;if(c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0){NE(d,b);if(a[d>>0]|0?(f=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(f,c[f+16>>2]|1)}OE(d)}zb=e;return b|0}function NE(b,d){b=b|0;d=d|0;a[b>>0]=0;c[b+4>>2]=d;d=d+(c[(c[d>>2]|0)+-12>>2]|0)|0;if(!(c[d+16>>2]|0)){d=c[d+72>>2]|0;if(d|0)ME(d)|0;a[b>>0]=1}return}function OE(a){a=a|0;var b=0;a=a+4|0;b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;if((((c[b+24>>2]|0?(c[b+16>>2]|0)==0:0)?c[b+4>>2]&8192|0:0)?!(yD()|0):0)?(b=c[a>>2]|0,b=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(b,c[b+16>>2]|1)}return}function PE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;f=l+12|0;j=l+8|0;k=l;NE(k,b);if(a[k>>0]|0){IE(f,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);g=XF(f,56792)|0;YF(f);h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;i=c[h+24>>2]|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(f,h);m=XF(f,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(f);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;m=c[(c[g>>2]|0)+16>>2]|0;c[j>>2]=i;c[f>>2]=c[j>>2];if(!(Mb[m&31](g,f,h,e&255,d)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(k);zb=l;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;NE(i,b);do if(a[i>>0]|0){e=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0;f=e;if(e|0){g=f+24|0;h=c[g>>2]|0;if((h|0)==(c[f+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;d=cg(d)|0;d=Ib[h&63](f,d)|0}else{c[g>>2]=h+1;a[h>>0]=d;d=cg(d)|0}if(!(_f(d,Wf()|0)|0))break}h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(h,c[h+16>>2]|1)}while(0);OE(i);zb=j;return b|0}function RE(a){a=a|0;a=a+16|0;c[a>>2]=c[a>>2]|1;return}function SE(){UE();return}function TE(){return}function UE(){VE(0);return}function VE(a){a=a|0;var b=0,d=0;b=c[4002]|0;WE(56368,b,56424);c[13922]=16628;c[13924]=16648;c[13923]=0;HE(55696,56368);c[13942]=0;a=Wf()|0;c[13943]=a;XE(56432,b,56488);c[13944]=16676;c[13946]=16696;c[13945]=0;HE(55784,56432);c[13964]=0;b=iE()|0;c[13965]=b;b=c[4003]|0;YE(56496,b,56544);c[13966]=16724;c[13967]=16744;HE(55868,56496);c[13985]=0;a=Wf()|0;c[13986]=a;ZE(56552,b,56600);c[13987]=16772;c[13988]=16792;HE(55952,56552);c[14006]=0;b=iE()|0;c[14007]=b;b=c[4001]|0;YE(56608,b,56656);c[14008]=16724;c[14009]=16744;HE(56036,56608);c[14027]=0;a=Wf()|0;c[14028]=a;a=c[56032+(c[(c[14008]|0)+-12>>2]|0)+24>>2]|0;c[14050]=16724;c[14051]=16744;HE(56204,a);c[14069]=0;a=Wf()|0;c[14070]=a;ZE(56664,b,56712);c[14029]=16772;c[14030]=16792;HE(56120,56664);c[14048]=0;b=iE()|0;c[14049]=b;b=c[56116+(c[(c[14029]|0)+-12>>2]|0)+24>>2]|0;c[14071]=16772;c[14072]=16792;HE(56288,b);c[14090]=0;b=iE()|0;c[14091]=b;c[55688+(c[(c[13922]|0)+-12>>2]|0)+72>>2]=55864;c[55776+(c[(c[13944]|0)+-12>>2]|0)+72>>2]=55948;b=(c[14008]|0)+-12|0;a=56032+(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|8192;a=(c[14029]|0)+-12|0;d=56116+(c[a>>2]|0)+4|0;c[d>>2]=c[d>>2]|8192;c[56032+(c[b>>2]|0)+72>>2]=55864;c[56116+(c[a>>2]|0)+72>>2]=55948;return}function WE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=17008;c[b+32>>2]=d;c[b+40>>2]=e;e=Wf()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function XE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16944;c[b+32>>2]=d;c[b+40>>2]=e;e=iE()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function YE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=16880;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57040)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function ZE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16816;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57048)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function _E(a){a=a|0;WD(a);SA(a);return}function $E(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57048)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function aF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function bF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=jE(c[d>>2]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(iE()|0))break a;f=f+1|0;d=d+4|0}}else f=lz(d,4,e,c[b+32>>2]|0)|0;while(0);return f|0}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(JE(d,iE()|0)|0)){k=lE(d)|0;c[f>>2]=k;if(a[b+44>>0]|0){if((lz(f,4,1,c[b+32>>2]|0)|0)==1){e=15;break}b=iE()|0;break}c[m>>2]=l;e=f+4|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=iE()|0;break}}else e=15;while(0);if((e|0)==15)b=dF(d)|0;zb=o;return b|0}function dF(a){a=a|0;if(JE(a,iE()|0)|0)a=~(iE()|0);return a|0}function eF(a){a=a|0;HD(a);SA(a);return}function fF(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57040)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function gF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function hF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=cg(a[d>>0]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(Wf()|0))break a;f=f+1|0;d=d+1|0}}else f=lz(d,1,e,c[b+32>>2]|0)|0;while(0);return f|0}function iF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(_f(d,Wf()|0)|0)){k=eg(d)|0;a[f>>0]=k;if(a[b+44>>0]|0){if((lz(f,1,1,c[b+32>>2]|0)|0)==1){e=15;break}b=Wf()|0;break}c[m>>2]=l;e=f+1|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=Wf()|0;break}}else e=15;while(0);if((e|0)==15)b=dg(d)|0;zb=o;return b|0}function jF(a){a=a|0;WD(a);SA(a);return}function kF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57048)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function lF(a){a=a|0;return oF(a,0)|0}function mF(a){a=a|0;return oF(a,1)|0}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+8|0;f=l+4|0;g=l;j=JE(d,iE()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((JE(e,iE()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=lE(c[j>>2]|0)|0;c[f>>2]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=iE()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function oF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=iE()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=iE()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+4|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)c[q>>2]=a[p>>0];else if((n|0)==17){e=iE()|0;break}n=19}else{c[q>>2]=a[p>>0];n=19}while(0);b:do if((n|0)==19){c:do if(d){t=jE(c[q>>2]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=jE(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=iE()|0;break b}while(0);e=jE(c[q>>2]|0)|0}while(0)}}zb=r;return e|0}function pF(a){a=a|0;HD(a);SA(a);return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57040)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function rF(a){a=a|0;return uF(a,0)|0}function sF(a){a=a|0;return uF(a,1)|0}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+4|0;f=l+8|0;g=l;j=_f(d,Wf()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((_f(e,Wf()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=eg(c[j>>2]|0)|0;a[f>>0]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=Wf()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=Wf()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=Wf()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+1|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)a[q>>0]=a[p>>0]|0;else if((n|0)==17){e=Wf()|0;break}n=19}else{a[q>>0]=a[p>>0]|0;n=19}while(0);b:do if((n|0)==19){c:do if(d){t=cg(a[q>>0]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=cg(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=Wf()|0;break b}while(0);e=cg(a[q>>0]|0)|0}while(0)}}zb=r;return e|0}function vF(a){a=a|0;CF(a);return}function wF(a){a=a|0;vF(a);SA(a);return}function xF(a){a=a|0;if(a|0)Sb[c[(c[a>>2]|0)+4>>2]&255](a);return}function yF(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=c;while(1){if((e|0)==(f|0)){h=7;break}if((b|0)==(d|0)){b=-1;break}c=a[b>>0]|0;g=a[e>>0]|0;if(c<<24>>24>24){b=-1;break}if(g<<24>>24>24){b=1;break}e=e+1|0;b=b+1|0}if((h|0)==7)b=(b|0)!=(d|0)&1;return b|0}function zF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;BF(a,d,e);return}function AF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=0;while(1){if((c|0)==(d|0))break;e=(b<<4)+(a[c>>0]|0)|0;f=e&-268435456;b=(f>>>24|f)^e;c=c+1|0}return b|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function CF(a){a=a|0;return}function DF(a){a=a|0;CF(a);return}function EF(a){a=a|0;DF(a);SA(a);return}function FF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=b;while(1){if((e|0)==(f|0)){h=7;break}if((a|0)==(d|0)){a=-1;break}b=c[a>>2]|0;g=c[e>>2]|0;if((b|0)<(g|0)){a=-1;break}if((g|0)<(b|0)){a=1;break}e=e+4|0;a=a+4|0}if((h|0)==7)a=(a|0)!=(d|0)&1;return a|0}function GF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;IF(a,d,e);return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=0;while(1){if((b|0)==(d|0))break;e=(c[b>>2]|0)+(a<<4)|0;f=e&-268435456;a=(f>>>24|f)^e;b=b+4|0}return a|0}function IF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function JF(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return}function KF(a){a=a|0;CF(a);return}function LF(a){a=a|0;CF(a);SA(a);return}function MF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56736)|0;YF(i);IE(i,f);b=XF(i,56752)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(FG(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;jO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function NF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=DG(a,j,i,e,f,g)|0;zb=h;return g|0}function OF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=BG(a,j,i,e,f,g)|0;zb=h;return g|0}function PF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=zG(a,j,i,e,f,g)|0;zb=h;return g|0}function QF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=xG(a,j,i,e,f,g)|0;zb=h;return g|0}function RF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=vG(a,j,i,e,f,g)|0;zb=h;return g|0}function SF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=pG(a,j,i,e,f,g)|0;zb=h;return g|0}function TF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=nG(a,j,i,e,f,g)|0;zb=h;return g|0}function UF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=lG(a,j,i,e,f,g)|0;zb=h;return g|0}function VF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=gG(a,j,i,e,f,g)|0;zb=h;return g|0}function WF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+240|0;v=y+192|0;t=y+160|0;w=y+220|0;x=y+208|0;u=y+204|0;q=y;r=y+200|0;s=y+196|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56736)|0;Kb[c[(c[b>>2]|0)+32>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function XF(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return bG(a,aG(b)|0)|0}function YF(a){a=a|0;var b=0,d=0;a=c[a>>2]|0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b)Sb[c[(c[a>>2]|0)+8>>2]&255](a);return}function ZF(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if(b<<24>>24==h<<24>>24?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+26|0;h=0;while(1){m=l+h|0;if((h|0)==26){m=i;break}if((a[m>>0]|0)==b<<24>>24)break;else h=h+1|0}m=m-l|0;if((m|0)>23)m=-1;else{switch(d|0){case 10:case 8:{if((m|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function _F(){var b=0;if((a[54800]|0)==0?nB(54800)|0:0){b=az(2147483647,49197,0)|0;c[14186]=b;pB(54800)}return c[14186]|0}function $F(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=Dz(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function aG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=zb;zb=zb+48|0;b=f+32|0;d=f+24|0;e=f;g=f+16|0;c[g>>2]=143;c[g+4>>2]=0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];dG(e,b,a);if((c[a>>2]|0)!=-1){c[b>>2]=e;c[d>>2]=b;$N(a,d,144)}zb=f;return (c[a+4>>2]|0)+-1|0}function bG(a,b){a=a|0;b=b|0;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}function cG(a){a=a|0;var b=0;b=c[14187]|0;c[14187]=b+1;c[a+4>>2]=b+1;return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;b=c[b+4>>2]|0;c[a>>2]=d;c[a+4>>2]=e;c[a+8>>2]=b;return}function eG(a){a=a|0;fG(c[c[a>>2]>>2]|0);return}function fG(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;e=c[a+8>>2]|0;d=(c[a>>2]|0)+(e>>1)|0;if(!(e&1))a=b;else a=c[(c[d>>2]|0)+b>>2]|0;Sb[a&255](d);return}function gG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function hG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;i=h;IE(i,d);d=XF(i,56736)|0;Kb[c[(c[d>>2]|0)+32>>2]&15](d,12928,12960,e)|0;e=XF(i,56752)|0;d=Gb[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[f>>0]=d;f=Gb[c[(c[e>>2]|0)+16>>2]&127](e)|0;a[g>>0]=f;Ub[c[(c[e>>2]|0)+20>>2]&63](b,e);YF(i);zb=h;return}function iG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if(b<<24>>24==h<<24>>24)if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if(b<<24>>24==i<<24>>24?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+32|0;h=0;while(1){o=n+h|0;if((h|0)==32){o=i;break}if((a[o>>0]|0)==b<<24>>24)break;else h=h+1|0}h=o-n|0;if((h|0)>31)o=-1;else{i=a[12928+h>>0]|0;switch(h|0){case 24:case 25:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 23:case 22:{a[e>>0]=80;o=c[g>>2]|0;c[g>>2]=o+1;a[o>>0]=i;o=0;break a}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>21){o=0;break a}c[m>>2]=(c[m>>2]|0)+1;o=0;break a}}}}while(0);return o|0}function jG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+rA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function kG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=b+11|0;h=a[j>>0]|0;k=b+4|0;g=c[k>>2]|0;i=h&255;do if((h<<24>>24<0?g:i)|0){if((d|0)!=(e|0)){g=e;h=d;while(1){g=g+-4|0;if(h>>>0>=g>>>0)break;i=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=i;h=h+4|0}h=a[j>>0]|0;i=h&255;g=c[k>>2]|0}j=h<<24>>24<0;b=j?c[b>>2]|0:b;k=e+-4|0;j=b+(j?g:i)|0;g=b;while(1){h=a[g>>0]|0;i=h<<24>>24>0&h<<24>>24!=127;if(d>>>0>=k>>>0)break;if(i?(c[d>>2]|0)!=(h<<24>>24|0):0){l=11;break}d=d+4|0;g=(j-g|0)>1?g+1|0:g}if((l|0)==11){c[f>>2]=4;break}if(i?((c[k>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function lG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+qA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function nG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(iG(g&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+pA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function pG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function qG(a){a=a|0;switch(c[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function rG(a,b,c){a=a|0;b=b|0;c=c|0;return uG(a,b,c)|0}function sG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=zb;zb=zb+16|0;g=f;IE(g,d);d=XF(g,56752)|0;h=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[e>>0]=h;Ub[c[(c[d>>2]|0)+20>>2]&63](b,d);YF(g);zb=f;return}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;g=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if((f|0)==68){c[e>>2]=4;b=-1;f=-1;break}else{l=PO(0,0,b|0,g|0)|0;f=F()|0;b=j?l:b;f=j?f:g;break}else{c[e>>2]=4;b=0;f=0}while(0)}while(0);E(f|0);zb=k;return b|0}function uG(a,b,c){a=a|0;b=b|0;c=c|0;return 12928}function vG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function wG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function xG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function yG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function zG(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+240|0;s=C+224|0;z=C+212|0;A=C+200|0;t=C+196|0;u=C;w=C+192|0;x=C+188|0;y=qG(g)|0;r=rG(d,g,C+160|0)|0;sG(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(ZF(g&255,y,d,t,x,a[s>>0]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=cg(a[d>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function AG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0)){if(f>>>0>0|(f|0)==0&b>>>0>65535|(g|0)==68){c[e>>2]=4;b=-1;break}if(j)b=0-b&65535;else b=b&65535}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function BG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function CG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;e=0;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}if((c[g>>2]|0)==(b|0)){if((f|0)==68){c[d>>2]=4;e=(e|0)>0|(e|0)==0&a>>>0>0;a=e?-1:0;e=e?2147483647:-2147483648}}else{c[d>>2]=4;a=0;e=0}}E(e|0);zb=i;return a|0}function DG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function EG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}a:do if((c[g>>2]|0)==(b|0)){do if((f|0)==68){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{c[d>>2]=4;a=0}while(0)}zb=i;return a|0}function FG(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}n=e;o=j;k=0;while(1){if((n|0)==(f|0))break;m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;l=l+-1|0;k=k+1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=cg(a[m>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;k=k&255;if(!i)k=Ib[c[(c[g>>2]|0)+12>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+11|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=a[m+t>>0]|0;if(!i)m=Ib[c[(c[g>>2]|0)+12>>2]&63](g,m)|0;if(k<<24>>24!=m<<24>>24){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+1;cg(a[n>>0]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(!(_f(k,Wf()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function GG(a){a=a|0;CF(a);return}function HG(a){a=a|0;CF(a);SA(a);return}function IG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56768)|0;YF(i);IE(i,f);b=XF(i,56776)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(gH(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;wO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function JG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=fH(a,j,i,e,f,g)|0;zb=h;return g|0}function KG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eH(a,j,i,e,f,g)|0;zb=h;return g|0}function LG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=dH(a,j,i,e,f,g)|0;zb=h;return g|0}function MG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=cH(a,j,i,e,f,g)|0;zb=h;return g|0}function NG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=bH(a,j,i,e,f,g)|0;zb=h;return g|0}function OG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=ZG(a,j,i,e,f,g)|0;zb=h;return g|0}function PG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=YG(a,j,i,e,f,g)|0;zb=h;return g|0}function QG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=XG(a,j,i,e,f,g)|0;zb=h;return g|0}function RG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=UG(a,j,i,e,f,g)|0;zb=h;return g|0}function SG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+304|0;v=y+264|0;t=y+160|0;w=y+292|0;x=y+280|0;u=y+276|0;q=y;r=y+272|0;s=y+268|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function TG(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if((b|0)==(h|0)?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+104|0;h=0;while(1){m=l+(h<<2)|0;if((h|0)==26){m=i;break}if((c[m>>2]|0)==(b|0))break;else h=h+1|0}m=m-l|0;h=m>>2;if((m|0)>92)m=-1;else{switch(d|0){case 10:case 8:{if((h|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function UG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function VG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;IE(h,b);b=XF(h,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12960,d)|0;d=XF(h,56776)|0;b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[e>>2]=b;e=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;c[f>>2]=e;Ub[c[(c[d>>2]|0)+20>>2]&63](a,d);YF(h);zb=g;return}function WG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if((b|0)==(h|0))if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if((b|0)==(i|0)?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+128|0;h=0;while(1){o=n+(h<<2)|0;if((h|0)==32){o=i;break}if((c[o>>2]|0)==(b|0))break;else h=h+1|0}h=o-n|0;if((h|0)<=124){i=a[12928+(h>>2)>>0]|0;n=h+-88|0;switch(n>>>2|n<<30|0){case 2:case 3:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 1:case 0:{a[e>>0]=80;break}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}}}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>84)o=0;else{c[m>>2]=(c[m>>2]|0)+1;o=0}}else o=-1}while(0);return o|0}function XG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function YG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(WG(g,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function ZG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function _G(a,b,c){a=a|0;b=b|0;c=c|0;return aH(a,b,c)|0}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;IE(f,b);b=XF(f,56776)|0;g=Gb[c[(c[b>>2]|0)+16>>2]&127](b)|0;c[d>>2]=g;Ub[c[(c[b>>2]|0)+20>>2]&63](a,b);YF(f);zb=e;return}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=zb;zb=zb+16|0;e=a;IE(e,b);b=XF(e,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,d)|0;YF(e);zb=a;return d|0}function bH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function cH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function dH(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+304|0;s=C+300|0;z=C+288|0;A=C+276|0;t=C+272|0;u=C;w=C+268|0;x=C+264|0;y=qG(g)|0;r=_G(d,g,C+160|0)|0;$G(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(TG(g,y,d,t,x,c[s>>2]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=jE(c[d>>2]|0)|0;if(JE(d,iE()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=jE(c[d>>2]|0)|0;if(!(JE(d,iE()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function eH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function fH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function gH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}k=0;n=e;o=j;while(1){if((n|0)==(f|0))break;m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;k=k+1|0;l=l+-1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=jE(c[m>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!i)k=Ib[c[(c[g>>2]|0)+28>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+8+3|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=c[m+(t<<2)>>2]|0;if(!i)m=Ib[c[(c[g>>2]|0)+28>>2]&63](g,m)|0;if((k|0)!=(m|0)){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+4;jE(c[n>>2]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function hH(a){a=a|0;CF(a);return}function iH(a){a=a|0;CF(a);SA(a);return}function jH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56752)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+11|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+(h?c[j>>2]|0:b&255)|0))break;b=a[g>>0]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=cg(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+1;a[h>>0]=b;b=cg(b)|0}if(_f(b,Wf()|0)|0)c[d>>2]=0}g=g+1|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;jO(k)}zb=l;return b|0}function kH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1|0)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function lH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function mH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*(p<<1|21)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function pH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function qH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+96|0;l=b+72|0;k=b+80|0;h=b+48|0;j=b;m=b+76|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56736)|0;YF(l);Kb[c[(c[n>>2]|0)+32>>2]&15](n,h,k,j)|0;g=j+g|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=$f(l,j,(i|0)==(k|0)?g:j+(i-h)|0,g,e,f)|0;zb=b;return g|0}function rH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;c[h>>2]=f;f=ez(d)|0;d=Jx(a,b,e,h)|0;if(f|0)ez(f)|0;zb=g;return d|0}function sH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do switch((c[e+4>>2]&176)<<24>>24){case 16:{e=a[b>>0]|0;switch(e<<24>>24){case 43:case 45:{b=b+1|0;break a}default:{}}if((d-b|0)>1&e<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}b=b+2|0}else f=7;break}case 32:{b=d;break}default:f=7}while(0);return b|0}function tH(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}g=d&260;e=d&16384;f=(g|0)==260;if(f)h=0;else{a[b>>0]=46;a[b+1>>0]=42;h=1;b=b+2|0}while(1){d=a[c>>0]|0;if(!(d<<24>>24))break;a[b>>0]=d;c=c+1|0;b=b+1|0}a:do switch(g&511){case 4:{d=e>>>9&255^102;break}case 256:{d=e>>>9&255^101;break}default:{d=e>>>9&255;if(f){d=d^97;break a}else{d=d^103;break a}}}while(0);a[b>>0]=d;return h|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=bA(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function vH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56736)|0;r=XF(i,56752)|0;Ub[c[(c[r>>2]|0)+20>>2]&63](s,r);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{q=Ib[c[(c[t>>2]|0)+28>>2]&63](t,i)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=q;j=b+1|0;break}default:j=b}q=e;a:do if((q-j|0)>1?(a[j>>0]|0)==48:0){i=j+1|0;switch(a[i>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+28>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=o;j=j+2|0;p=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[i>>0]|0)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=j;while(1){if(i>>>0>=e>>>0)break a;p=a[i>>0]|0;if(!(_y(p,_F()|0)|0))break a;i=i+1|0}}else u=4;while(0);b:do if((u|0)==4){i=j;while(1){if(i>>>0>=e>>>0)break b;p=a[i>>0]|0;if(!(Zy(p,_F()|0)|0))break b;i=i+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((j|0)!=(i|0)){k=i;l=j;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[r>>2]|0)+16>>2]&127](r)|0;m=j;l=0;k=0;while(1){if(m>>>0>=i>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+1;a[w>>0]=x;m=m+1|0;l=l+1|0}k=f+(j-b)|0;j=c[h>>2]|0;if((k|0)==(j|0))k=t;else while(1){j=j+-1|0;if(k>>>0>=j>>>0){k=t;break c}x=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=x;k=k+1|0}}else{Kb[c[(c[t>>2]|0)+32>>2]&15](t,j,i,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(i-j);k=t}while(0);while(1){if(i>>>0>=e>>>0)break;j=a[i>>0]|0;if(j<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+28>>2]&63](t,j)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}if((u|0)==32){w=Gb[c[(c[r>>2]|0)+12>>2]&127](r)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}Kb[c[(c[t>>2]|0)+32>>2]&15](t,i,e,c[h>>2]|0)|0;x=(c[h>>2]|0)+(q-i)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b)|0;jO(s);zb=v;return}function wH(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=b;while(1){b=a[c>>0]|0;if(!(b<<24>>24))break;a[f>>0]=b;c=c+1|0;f=f+1|0}switch(e&74){case 64:{b=111;break}case 8:{b=e>>>9&32^120;break}default:b=d?100:117}a[f>>0]=b;return}function xH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56736)|0;l=XF(i,56752)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+1|0;k=k+1|0}i=f+(i-b)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-1|0;if(i>>>0>=j>>>0)break;t=a[i>>0]|0;a[i>>0]=a[j>>0]|0;a[j>>0]=t;i=i+1|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+32>>2]&15](p,b,e,f)|0;i=f+(e-b)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b)|0;jO(q);zb=r;return}function yH(a){a=a|0;CF(a);return}function zH(a){a=a|0;CF(a);SA(a);return}function AH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56776)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+8+3|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+((h?c[j>>2]|0:b&255)<<2)|0))break;b=c[g>>2]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=jE(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+4;c[h>>2]=b;b=jE(b)|0}if(JE(b,iE()|0)|0)c[d>>2]=0}g=g+4|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;wO(k)}zb=l;return b|0}function BH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function CH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function DH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|21)<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function EH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function FH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function GH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function HH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+208|0;l=b+184|0;k=b+192|0;h=b+160|0;j=b;m=b+188|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56768)|0;YF(l);Kb[c[(c[n>>2]|0)+48>>2]&15](n,h,k,j)|0;g=j+(g<<2)|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=IH(l,j,(i|0)==(k|0)?g:j+(i-h<<2)|0,g,e,f)|0;zb=b;return g|0}function IH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{o=d;j=f-o>>2;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;o=j-o|0;k=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;uO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+8+3>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){wO(m);break}else{c[b>>2]=0;wO(m);i=0;break a}}while(0);o=f-j|0;f=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function JH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56768)|0;q=XF(i,56776)|0;Ub[c[(c[q>>2]|0)+20>>2]&63](s,q);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{r=Ib[c[(c[t>>2]|0)+44>>2]&63](t,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=r;i=b+1|0;break}default:i=b}r=e;a:do if((r-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+44>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=o;i=i+2|0;p=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[j>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=p;j=i;while(1){if(j>>>0>=e>>>0)break a;p=a[j>>0]|0;if(!(_y(p,_F()|0)|0))break a;j=j+1|0}}else u=4;while(0);b:do if((u|0)==4){j=i;while(1){if(j>>>0>=e>>>0)break b;p=a[j>>0]|0;if(!(Zy(p,_F()|0)|0))break b;j=j+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((i|0)!=(j|0)){k=j;l=i;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[q>>2]|0)+16>>2]&127](q)|0;m=i;k=0;l=0;while(1){if(m>>>0>=j>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+4;c[w>>2]=x;m=m+1|0;l=l+1|0}i=f+(i-b<<2)|0;l=c[h>>2]|0;if((i|0)==(l|0))k=t;else{k=l;while(1){k=k+-4|0;if(i>>>0>=k>>>0){k=t;i=l;break c}x=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=x;i=i+4|0}}}else{Kb[c[(c[t>>2]|0)+48>>2]&15](t,i,j,c[h>>2]|0)|0;i=(c[h>>2]|0)+(j-i<<2)|0;c[h>>2]=i;k=t}while(0);while(1){if(j>>>0>=e>>>0)break;i=a[j>>0]|0;if(i<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+44>>2]&63](t,i)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}if((u|0)==32){w=Gb[c[(c[q>>2]|0)+12>>2]&127](q)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}Kb[c[(c[t>>2]|0)+48>>2]&15](t,j,e,i)|0;x=(c[h>>2]|0)+(r-j<<2)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b<<2)|0;jO(s);zb=v;return}function KH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56768)|0;l=XF(i,56776)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+1|0;k=k+1|0}i=f+(i-b<<2)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-4|0;if(i>>>0>=j>>>0)break;t=c[i>>2]|0;c[i>>2]=c[j>>2];c[j>>2]=t;i=i+4|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+48>>2]&15](p,b,e,f)|0;i=f+(e-b<<2)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b<<2)|0;jO(q);zb=r;return}function LH(a){a=a|0;CF(a);return}function MH(a){a=a|0;CF(a);SA(a);return}function NH(a){a=a|0;return 2}function OH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eI(a,j,i,e,f,g,49940,49948)|0;zb=h;return g|0}function PH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+11>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+(o?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=eI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function QH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];cI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function RH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];dI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function SH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];pI(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function TH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56736)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];cI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];dI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];fI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=eI(b,j,k,f,g,h,49900,49908)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=eI(b,j,k,f,g,h,49908,49916)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];gI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];hI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];iI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];jI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];kI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];lI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];mI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=eI(b,j,k,f,g,h,49916,49927)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=eI(b,j,k,f,g,h,49927,49932)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];nI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=eI(b,j,k,f,g,h,49932,49940)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];oI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];pI(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];qI(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];rI(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function UH(b){b=b|0;if((a[54872]|0)==0?nB(54872)|0:0){bI();c[14216]=53856;pB(54872)}return c[14216]|0}function VH(b){b=b|0;if((a[54856]|0)==0?nB(54856)|0:0){aI();c[14215]=53568;pB(54856)}return c[14215]|0}function WH(b){b=b|0;if((a[54840]|0)==0?nB(54840)|0:0){$H();c[14214]=53536;pB(54840)}return c[14214]|0}function XH(b){b=b|0;if((a[54832]|0)==0?nB(54832)|0:0){c[14211]=0;c[14212]=0;c[14213]=0;gO(56844,49658,Yf(49658)|0);pB(54832)}return 56844}function YH(b){b=b|0;if((a[54824]|0)==0?nB(54824)|0:0){c[14208]=0;c[14209]=0;c[14210]=0;gO(56832,49646,Yf(49646)|0);pB(54824)}return 56832}function ZH(b){b=b|0;if((a[54816]|0)==0?nB(54816)|0:0){c[14205]=0;c[14206]=0;c[14207]=0;gO(56820,49637,Yf(49637)|0);pB(54816)}return 56820}function _H(b){b=b|0;if((a[54808]|0)==0?nB(54808)|0:0){c[14202]=0;c[14203]=0;c[14204]=0;gO(56808,49628,Yf(49628)|0);pB(54808)}return 56808}function $H(){var b=0,d=0;if((a[54848]|0)==0?nB(54848)|0:0){d=53536;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53560);pB(54848)}nO(53536,49679)|0;nO(53548,49682)|0;return} +function sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g+8|0;e=g;d=We(b,0)|0;if(!d){c[e>>2]=b;Ue(0,3,20325,e);a=ox()|0;a=By(c[a>>2]|0)|0;c[f>>2]=57671;c[f+4>>2]=a;Ue(0,3,21881,f);a=-1}else{a=rd(a,d)|0;GO(d)}zb=g;return a|0}function td(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;f=a+(d<<5)|0;h=a+(d<<5)+8|0;i=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;g[c+(d<<5)+(e<<3)>>3]=+g[f>>3]*+g[b+(e<<3)>>3]+ +g[h>>3]*+g[b+32+(e<<3)>>3]+ +g[i>>3]*+g[b+64+(e<<3)>>3];e=e+1|0}i=c+(d<<5)+24|0;g[i>>3]=+g[a+(d<<5)+24>>3]+ +g[i>>3];d=d+1|0}return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,h=0,i=0,j=0;d=0;while(1){if((d|0)==3)break;h=a+(d<<5)|0;i=a+(d<<5)+8|0;j=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[b+(e<<2)>>2]*+g[h>>3]+ +f[b+16+(e<<2)>>2]*+g[i>>3]+ +f[b+32+(e<<2)>>2]*+g[j>>3];e=e+1|0}j=c+(d<<4)+12|0;f[j>>2]=+f[j>>2]+ +g[a+(d<<5)+24>>3];d=d+1|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;g=a+(d<<4)|0;h=a+(d<<4)+4|0;i=a+(d<<4)+8|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[g>>2]*+f[b+(e<<2)>>2]+ +f[h>>2]*+f[b+16+(e<<2)>>2]+ +f[i>>2]*+f[b+32+(e<<2)>>2];e=e+1|0}i=c+(d<<4)+12|0;f[i>>2]=+f[a+(d<<4)+12>>2]+ +f[i>>2];d=d+1|0}return 0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;h=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;f=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[h>>2]|0)+(e+f<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}d=c[h>>2]|0;f=d+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[d+120>>3]=1.0;Xd(h)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[(c[h>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(h)|0;return 0}function yd(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0;i=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;h=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[i>>2]|0)+(e+h<<3)>>3]=+f[a+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}d=c[i>>2]|0;h=d+96|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;g[d+120>>3]=1.0;Xd(i)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;f[b+(d<<4)+(e<<2)>>2]=+g[(c[i>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(i)|0;return 0}function zd(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Ad(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Oz(c,47)|0;if(!f){a[b>>0]=0;break}e=f+((e|0)!=0&1)-c|0;if((e+1|0)>>>0<=d>>>0){Wz(b,c,e)|0;a[b+e>>0]=0}else b=0}else b=0;while(0);return b|0}function Bd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;h=0;a:while(1){switch(a[b+h>>0]|0){case 0:break a;case 46:{e=h;break}default:{}}h=h+1|0}f=b+h|0;g=(Qy(d)|0)+2|0;if(!e)if((g+h|0)>(c|0))e=-1;else{a[f>>0]=46;e=h;i=9}else if((g+e|0)>(c|0))e=-1;else i=9;if((i|0)==9){a[b+(e+1)>>0]=0;aA(b,d)|0;e=0}return e|0}function Cd(b){b=b|0;var c=0,d=0;c=-1;d=0;a:while(1){switch(a[b+d>>0]|0){case 0:break a;case 46:{c=d;break}default:{}}d=d+1|0}if((c|0)!=-1)a[b+c>>0]=0;return 0}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<3,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<2,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Fd(a){a=a|0;var b=0;b=Dd(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Kd(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Gd(a,b){a=a|0;b=b|0;var d=0;d=Dd(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Nd(d,a,b)|0)<0){Ld(d)|0;d=0}}else d=0;return d|0}function Hd(a,b){a=a|0;b=b|0;var d=0;d=Ed(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Od(d,a,b)|0)<0){Md(d)|0;d=0}}else d=0;return d|0}function Id(a){a=a|0;var b=0;b=Dd(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($d(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Jd(a){a=a|0;var b=0;b=Ed(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if((ae(b,a)|0)<0){Md(b)|0;b=0}}else b=0;return b|0}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+4>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+8>>2]|0)):0){e=0;while(1){if((e|0)>=(h|0)){d=0;break a}f=B(e,i)|0;d=0;while(1){if((d|0)>=(i|0))break;j=d+f|0;g[(c[a>>2]|0)+(j<<3)>>3]=+g[(c[b>>2]|0)+(j<<3)>>3];d=d+1|0}e=e+1|0}}else d=-1;while(0);return d|0}function Ld(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Md(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;g[a>>3]=0.0;e=(c[d>>2]|0)+(j<<3)|0;f=(c[b>>2]|0)+(l<<3)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +g[f>>3]*+g[e>>3];g[a>>3]=p;e=e+(m<<3)|0;f=f+8|0;h=h+1|0;i=p}j=j+1|0;a=a+8|0}k=k+1|0}}else a=-1;while(0);return a|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;f[a>>2]=0.0;e=(c[d>>2]|0)+(j<<2)|0;g=(c[b>>2]|0)+(l<<2)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +f[g>>2]*+f[e>>2];f[a>>2]=p;e=e+(m<<2)|0;g=g+4|0;h=h+1|0;i=p}j=j+1|0;a=a+4|0}k=k+1|0}}else a=-1;while(0);return a|0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;j=c[a+8>>2]|0;f=(i|0)<(j|0)?i:j;a:do if(((((!((i|0)<2|(j|0)<2)?(c[b+8>>2]|0)==(j|0):0)?(c[b+4>>2]|0)==(f|0):0)?(k=d+4|0,(c[k>>2]|0)==(f|0)):0)?(c[e+4>>2]|0)==(j|0):0)?(l=Fd(a)|0,(l|0)!=0):0){h=+u(+(+(i|0)));if((Qd(l,e)|0)<0){Ld(l)|0;a=-1;break}if((Rd(l,e)|0)<0){Ld(l)|0;a=-1;break}f=B(j,i)|0;a=0;while(1){if((a|0)>=(f|0))break;j=(c[l>>2]|0)+(a<<3)|0;g[j>>3]=+g[j>>3]/h;a=a+1|0}a=Sd(l,b,d)|0;Ld(l)|0;e=c[k>>2]|0;h=0.0;f=0;while(1){if((f|0)>=(e|0))break;h=h+ +g[(c[d>>2]|0)+(f<<3)>>3];f=f+1|0}f=0;while(1){if((f|0)>=(e|0))break a;l=(c[d>>2]|0)+(f<<3)|0;g[l>>3]=+g[l>>3]/h;f=f+1|0}}else a=-1;while(0);return a|0}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,i=0,j=0,k=0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;a:do if(!((j|0)<1|(k|0)<1)?(c[b+4>>2]|0)==(k|0):0){d=0;while(1){if((d|0)==(k|0))break;g[(c[b>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}a=c[a>>2]|0;h=0;while(1){if((h|0)==(j|0))break;d=0;f=c[b>>2]|0;i=a;while(1){if((d|0)==(k|0))break;g[f>>3]=+g[i>>3]+ +g[f>>3];d=d+1|0;f=f+8|0;i=i+8|0}a=a+(k<<3)|0;h=h+1|0}e=+(j|0);d=0;while(1){if((d|0)==(k|0)){d=0;break a}j=(c[b>>2]|0)+(d<<3)|0;g[j>>3]=+g[j>>3]/e;d=d+1|0}}else d=-1;while(0);return d|0}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;i=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(i|0)){f=0;a=c[a>>2]|0;while(1){if((f|0)>=(h|0)){a=0;break a}d=0;e=c[b>>2]|0;while(1){if((d|0)>=(i|0))break;g[a>>3]=+g[a>>3]-+g[e>>3];d=d+1|0;e=e+8|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=c[a+4>>2]|0;f=c[a+8>>2]|0;i=(f|0)<(e|0)?f:e;a:do if(((!((e|0)<2|(f|0)<2)?(c[b+8>>2]|0)==(f|0):0)?(c[b+4>>2]|0)==(i|0):0)?(c[d+4>>2]|0)==(i|0):0){h=Dd(i,i)|0;if((c[h+4>>2]|0)==(i|0)?(c[h+8>>2]|0)==(i|0):0){e=(e|0)<(f|0);if(e){if((Td(a,h)|0)<0){Ld(h)|0;e=-1;break}}else if((Ud(a,h)|0)<0){Ld(h)|0;e=-1;break}if((Vd(h,d)|0)<0){Ld(h)|0;e=-1;break}b:do if(e){if((Wd(a,h,b,d)|0)<0){Ld(h)|0;e=-1;break a}}else{a=0;f=c[h>>2]|0;e=c[b>>2]|0;while(1){if((a|0)>=(i|0))break;if(+g[(c[d>>2]|0)+(a<<3)>>3]<1.0e-16)break;b=0;while(1){if((b|0)>=(i|0))break;g[e>>3]=+g[f>>3];b=b+1|0;f=f+8|0;e=e+8|0}a=a+1|0}while(1){if((a|0)>=(i|0))break b;g[(c[d>>2]|0)+(a<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(i|0))break;g[e>>3]=0.0;f=f+1|0;e=e+8|0}a=a+1|0}}while(0);Ld(h)|0;e=0;break}Ld(h)|0;e=-1}else e=-1;while(0);return e|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0;n=c[a+4>>2]|0;o=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}l=B(e,o)|0;d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{f=c[a>>2]|0;i=f+((B(d,o)|0)<<3)|0;g[j>>3]=0.0;b=0;f=f+(l<<3)|0;m=0.0;while(1){if((b|0)>=(o|0))break b;p=m+ +g[f>>3]*+g[i>>3];g[j>>3]=p;b=b+1|0;f=f+8|0;i=i+8|0;m=p}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0;m=c[a+4>>2]|0;n=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{i=c[a>>2]|0;g[j>>3]=0.0;b=0;f=i+(e<<3)|0;i=i+(d<<3)|0;l=0.0;while(1){if((b|0)>=(m|0))break b;o=l+ +g[f>>3]*+g[i>>3];g[j>>3]=o;b=b+1|0;f=f+(n<<3)|0;i=i+(n<<3)|0;l=o}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;F=zb;zb=zb+16|0;d=F;E=c[a+4>>2]|0;do if((!((E|0)<2?1:(E|0)!=(c[a+8>>2]|0))?(c[b+4>>2]|0)==(E|0):0)?(C=qe(E)|0,(C|0)!=0):0){D=E+-1|0;c[d+4>>2]=D;c[d>>2]=(c[C>>2]|0)+8;if((ue(a,b,d)|0)<0){re(C)|0;d=-1;break}A=c[C>>2]|0;g[A>>3]=0.0;y=D;while(1){if((y|0)<=0)break;z=y;while(1){if((z|0)<=0)break;n=+t(+(+g[A+(z<<3)>>3]));x=c[b>>2]|0;d=z+-1|0;o=+t(+(+g[x+(d<<3)>>3]));if(n>(o+ +t(+(+g[x+(z<<3)>>3])))*1.0e-06)z=d;else break}q=y+-1|0;a:do if((z|0)!=(y|0)){r=A+(y<<3)|0;s=A+(z+1<<3)|0;p=0;do{if(p>>>0>99)break a;p=p+1|0;v=c[b>>2]|0;w=v+(q<<3)|0;x=v+(y<<3)|0;h=+g[x>>3];o=(+g[w>>3]-h)*.5;m=+g[r>>3];m=m*m;j=+u(+(m+o*o));l=z;n=+g[s>>3];j=+g[v+(z<<3)>>3]-h+m/(o+(o<0.0?-j:j));while(1){if((l|0)>=(y|0))break;h=+t(+j);if(h>=+t(+n))if(h>1.0e-16){h=-n/j;o=1.0/+u(+(h*h+1.0));m=o;o=h*o}else{m=1.0;o=0.0}else{m=-j/n;o=1.0/+u(+(m*m+1.0));m=m*o}f=v+(l<<3)|0;I=+g[f>>3];k=l+1|0;d=v+(k<<3)|0;H=+g[d>>3];h=I-H;i=A+(k<<3)|0;G=o*(o*h+m*2.0*+g[i>>3]);g[f>>3]=I-G;g[d>>3]=H+G;d=A+(l<<3)|0;if((l|0)>(z|0))g[d>>3]=m*+g[d>>3]-n*o;I=+g[i>>3];g[i>>3]=I+o*(m*h-o*2.0*I);e=B(l,E)|0;f=B(k,E)|0;d=0;h=n;while(1){if((d|0)==(E|0))break;J=c[a>>2]|0;K=J+(d+e<<3)|0;j=+g[K>>3];J=J+(d+f<<3)|0;h=+g[J>>3];g[K>>3]=m*j-o*h;g[J>>3]=o*j+m*h;d=d+1|0}if((l|0)<(q|0)){j=+g[i>>3];K=A+(l+2<<3)|0;h=+g[K>>3];g[K>>3]=m*h;h=-(o*h)}l=k;n=h}H=+t(+(+g[r>>3]));I=+t(+(+g[w>>3]))}while(H>(I+ +t(+(+g[x>>3])))*1.0e-06)}while(0);y=q}d=0;while(1){if((d|0)==(D|0))break;f=c[b>>2]|0;i=f+(d<<3)|0;j=+g[i>>3];l=d+1|0;h=j;k=d;e=l;while(1){if((e|0)>=(E|0))break;I=+g[f+(e<<3)>>3];K=I>h;h=K?I:h;k=K?e:k;e=e+1|0}g[f+(k<<3)>>3]=j;g[i>>3]=h;e=c[a>>2]|0;f=e+((B(d,E)|0)<<3)|0;d=e+((B(k,E)|0)<<3)|0;e=0;while(1){if((e|0)==(E|0))break;I=+g[d>>3];g[d>>3]=+g[f>>3];g[f>>3]=I;f=f+8|0;d=d+8|0;e=e+1|0}d=l}re(C)|0;d=0}else d=-1;while(0);zb=F;return d|0}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0;p=c[a+4>>2]|0;q=c[a+8>>2]|0;a:do if(((((!((p|0)<1|(q|0)<1)?(c[b+4>>2]|0)==(p|0):0)?(c[b+8>>2]|0)==(p|0):0)?(c[d+4>>2]|0)==(p|0):0)?(c[d+8>>2]|0)==(q|0):0)?(c[e+4>>2]|0)==(p|0):0){h=0;d=c[d>>2]|0;while(1){if((h|0)>=(p|0))break;i=+g[(c[e>>2]|0)+(h<<3)>>3];if(i<1.0e-16)break;n=1.0/+u(+(+t(+i)));o=B(h,p)|0;j=0;m=d;while(1){if((j|0)==(q|0))break;f=0;k=(c[b>>2]|0)+(o<<3)|0;i=0.0;l=(c[a>>2]|0)+(j<<3)|0;while(1){if((f|0)==(p|0))break;r=i+ +g[k>>3]*+g[l>>3];f=f+1|0;k=k+8|0;i=r;l=l+(q<<3)|0}g[m>>3]=n*i;j=j+1|0;m=m+8|0}h=h+1|0;d=d+(q<<3)|0}while(1){if((h|0)>=(p|0)){d=0;break a}g[(c[e>>2]|0)+(h<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(q|0))break;g[d>>3]=0.0;f=f+1|0;d=d+8|0}h=h+1|0}}else d=-1;while(0);return d|0}function Xd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((Yd(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{g[a>>3]=1.0/+g[a>>3];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<3)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<3)|0;k=0.0;e=m;i=-1;f=l;while(1){if((f|0)==(b|0))break;r=+t(+(+g[e>>3]));j=k>2]|0;f=p+(l<<2)|0;c[e>>2]=c[f>>2];c[f>>2]=h;f=0;h=m;e=a+((B(i,d)|0)<<3)|0;while(1){if((f|0)==(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+8|0;e=e+8|0}k=+g[m>>3];e=1;f=m;while(1){if((e|0)==(b|0))break;j=f+8|0;g[f>>3]=+g[j>>3]/k;e=e+1|0;f=j}g[n>>3]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<3)|0;k=+g[i>>3];f=m;h=1;while(1){if((h|0)==(b|0))break;s=i+8|0;g[i>>3]=+g[s>>3]-k*+g[f>>3];f=f+8|0;h=h+1|0;i=s}g[j>>3]=-(k*+g[n>>3])}e=e+1|0;j=j+(d<<3)|0}l=l+1|0;n=n+(d<<3)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];f=0;h=a+(j<<3)|0;e=a+(i<<3)|0;while(1){if((f|0)>=(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+(d<<3)|0;e=e+(d<<3)|0}j=j+1|0}}while(0);zb=q;return a|0}function Zd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((_d(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function _d(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{f[a>>2]=1.0/+f[a>>2];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<2)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<2)|0;k=0.0;e=m;i=-1;g=l;while(1){if((g|0)==(b|0))break;r=+t(+(+f[e>>2]));j=k>2]|0;g=p+(l<<2)|0;c[e>>2]=c[g>>2];c[g>>2]=h;g=0;h=m;e=a+((B(i,d)|0)<<2)|0;while(1){if((g|0)==(b|0))break;j=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=j;g=g+1|0;h=h+4|0;e=e+4|0}k=+f[m>>2];e=1;g=m;while(1){if((e|0)==(b|0))break;j=g+4|0;f[g>>2]=+f[j>>2]/k;e=e+1|0;g=j}f[n>>2]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<2)|0;k=+f[i>>2];g=m;h=1;while(1){if((h|0)==(b|0))break;s=i+4|0;f[i>>2]=+f[s>>2]-k*+f[g>>2];g=g+4|0;h=h+1|0;i=s}f[j>>2]=-(k*+f[n>>2])}e=e+1|0;j=j+(d<<2)|0}l=l+1|0;n=n+(d<<2)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];g=0;h=a+(j<<2)|0;e=a+(i<<2)|0;while(1){if((g|0)>=(b|0))break;s=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=s;g=g+1|0;h=h+(d<<2)|0;e=e+(d<<2)|0}j=j+1|0}}while(0);zb=q;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+8>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(h|0)){a=0;break a}d=(c[b>>2]|0)+(f<<3)|0;e=0;while(1){if((e|0)>=(i|0))break;g[a>>3]=+g[d>>3];d=d+(h<<3)|0;e=e+1|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;a:do if((g|0)==(c[b+8>>2]|0)?(h=c[a+8>>2]|0,(h|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(g|0)){a=0;break a}d=(c[b>>2]|0)+(f<<2)|0;e=0;while(1){if((e|0)>=(h|0))break;c[a>>2]=c[d>>2];d=d+(g<<2)|0;e=e+1|0;a=a+4|0}f=f+1|0}}else a=-1;while(0);return a|0}function be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0;h=+(b|0)/+(c[a>>2]|0);f=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;while(1){if((b|0)==4)break;g[e+8+(b<<3)>>3]=h*+g[a+8+(b<<3)>>3];g[e+40+(b<<3)>>3]=f*+g[a+40+(b<<3)>>3];g[e+72+(b<<3)>>3]=+g[a+72+(b<<3)>>3];b=b+1|0}b=c[a+176>>2]|0;switch(b|0){case 4:{g[e+104>>3]=+g[a+104>>3];g[e+112>>3]=+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=h*+g[a+136>>3];g[e+144>>3]=f*+g[a+144>>3];g[e+152>>3]=h*+g[a+152>>3];g[e+160>>3]=f*+g[a+160>>3];g[e+168>>3]=+g[a+168>>3];i=9;break}case 3:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=+g[a+136>>3]/(h*f);g[e+144>>3]=+g[a+144>>3]/(f*(h*h*f));i=9;break}case 2:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);g[e+136>>3]=+g[a+136>>3]/(f*(h*h*f));i=9;break}case 1:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);i=9;break}default:b=-1}if((i|0)==9){c[e+176>>2]=b;b=0}return b|0}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;h=zb;zb=zb+96|0;f=h;a:do if(!(+g[a+88>>3]>=0.0)){d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=-+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}else{d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}while(0);d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=0.0;e=e+1|0}d=d+1|0}i=+g[f+64>>3];n=+g[f+72>>3];o=+g[f+80>>3];w=+de(i,n,o);a=b+80|0;g[a>>3]=w;w=i/w;u=c+64|0;g[u>>3]=w;n=n/+g[a>>3];s=c+72|0;g[s>>3]=n;o=o/+g[a>>3];p=c+80|0;g[p>>3]=o;m=c+88|0;g[m>>3]=+g[f+88>>3]/+g[a>>3];i=+g[f+32>>3];j=+g[f+40>>3];r=+g[f+48>>3];o=+ee(w,n,o,i,j,r);l=b+48|0;g[l>>3]=o;i=i-o*+g[u>>3];j=j-o*+g[s>>3];o=r-o*+g[p>>3];r=+de(i,j,o);k=b+40|0;g[k>>3]=r;v=c+32|0;g[v>>3]=i/r;t=c+40|0;g[t>>3]=j/+g[k>>3];q=c+48|0;g[q>>3]=o/+g[k>>3];o=+g[f>>3];j=+g[f+8>>3];r=+g[f+16>>3];i=+ee(+g[u>>3],+g[s>>3],+g[p>>3],o,j,r);d=b+16|0;g[d>>3]=i;n=+ee(+g[v>>3],+g[t>>3],+g[q>>3],o,j,r);e=b+8|0;g[e>>3]=n;o=o-n*+g[v>>3]-i*+g[u>>3];j=j-n*+g[t>>3]-i*+g[s>>3];i=r-n*+g[q>>3]-i*+g[p>>3];n=+de(o,j,i);g[b>>3]=n;g[c>>3]=o/n;g[c+8>>3]=j/+g[b>>3];g[c+16>>3]=i/+g[b>>3];i=+g[m>>3];j=(+g[f+56>>3]-+g[l>>3]*i)/+g[k>>3];g[c+56>>3]=j;g[c+24>>3]=(+g[f+24>>3]-j*+g[e>>3]-i*+g[d>>3])/+g[b>>3];d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==3)break;v=b+(d<<5)+(e<<3)|0;g[v>>3]=+g[v>>3]/+g[a>>3];e=e+1|0}d=d+1|0}zb=h;return 0}function de(a,b,c){a=+a;b=+b;c=+c;return +(+u(+(a*a+b*b+c*c)))}function ee(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;return +(a*d+b*e+c*f)}function fe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;switch(f|0){case 4:{t=+g[a>>3];v=+g[a+8>>3];r=+g[a+16>>3];s=+g[a+24>>3];x=+g[a+32>>3];y=+g[a+40>>3];z=+g[a+48>>3];A=+g[a+56>>3];w=+g[a+64>>3];q=(b-z)/x;l=(c-A)/y;m=r*2.0;n=s*6.0;o=s*2.0;p=r*6.0;i=q;j=l;k=q*q;b=l*l;f=1;while(1){if(!(b!=0.0|k!=0.0)){c=0.0;b=0.0;break}D=b+k;C=t*D+1.0+D*(v*D);c=k*3.0;B=b*c;c=i-(s*(D+k*2.0)+(j*(m*i)+i*C)-q)/(n*i+(m*j+(t*(b+c)+1.0+v*(b*b+(k*(k*5.0)+B)))));i=o*c;b=j-(r*(b*2.0+D)+j*C+j*i-l)/(p*j+(t*(k+b*3.0)+1.0+v*(b*(b*5.0)+(k*k+B)))+i);if((f|0)==4)break;i=c;j=b;k=c*c;b=b*b;f=f+1|0}g[d>>3]=z+x*c/w;b=A+y*b/w;h=22;break}case 3:{p=+g[a>>3];b=(b-p)/+g[a+24>>3];h=a+8|0;c=c-+g[h>>3];k=+g[a+32>>3]/1.0e8;l=+g[a+40>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;j=b*b+c*c;i=j;f=f+1|0;j=+u(+j)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 2:{p=+g[a>>3];b=b-p;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;l=+g[a+32>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 1:{n=+g[a>>3];b=b-n;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;i=b*b+c*c;l=+u(+i);m=k*3.0;f=1;j=l;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i)-l)/(1.0-m*i);b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=n+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}default:f=-1}if((h|0)==22){g[e>>3]=b;f=0}return f|0}function ge(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do switch(f|0){case 4:{h=+g[a+16>>3];l=+g[a+24>>3];o=+g[a+32>>3];m=+g[a+40>>3];p=+g[a+48>>3];n=+g[a+56>>3];i=+g[a+64>>3];k=(b-p)*i/o;c=(c-n)*i/m;i=k*k+c*c;b=+g[a>>3]*i+1.0+i*(+g[a+8>>3]*i);g[d>>3]=p+o*(l*(i+k*(k*2.0))+(c*(h*2.0*k)+k*b));b=n+m*(c*(l*2.0*k)+(h*(i+c*(c*2.0))+c*b));j=12;break}case 3:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+32>>3]/1.0e8)-p*(p*(+g[a+40>>3]/1.0e8/1.0e5));g[d>>3]=i+ +g[a+24>>3]*(h*p);b=+g[f>>3]+b*p;j=12;break a}}case 2:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+24>>3]/1.0e8)-p*(p*(+g[a+32>>3]/1.0e8/1.0e5));g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}case 1:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=1.0-(h*h+b*b)*(+g[a+24>>3]/1.0e8);g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}default:f=-1}while(0);if((j|0)==12){g[e>>3]=b;f=0}return f|0}function he(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+192|0;f=g;ie(a,f);ie(a+4|0,f+4|0);b=0;while(1){if((b|0)==3)break;d=0;while(1){if((d|0)==4)break;je(a+8+(b<<5)+(d<<3)|0,f+8+(b<<5)+(d<<3)|0);d=d+1|0}b=b+1|0}d=a+176|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[1712+(e+-1<<3)>>2]|0))break;je(a+104+(b<<3)|0,f+104+(b<<3)|0);b=b+1|0}c[f+176>>2]=e;_O(a|0,f|0,184)|0;zb=g;return}function ie(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==4)break;a[c+d>>0]=a[b+(3-d)>>0]|0;d=d+1|0}return}function je(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==8)break;a[c+d>>0]=a[b+(7-d)>>0]|0;d=d+1|0}return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+256|0;n=s+248|0;l=s+240|0;k=s+232|0;j=s+224|0;i=s+216|0;h=s+208|0;f=s+200|0;p=s;q=s+16|0;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=rz(a,22236)|0;if(!r){r=ox()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Ue(0,3,20359,f);a=ox()|0;a=By(c[a>>2]|0)|0;c[h>>2]=57671;c[h+4>>2]=a;Ue(0,3,21881,h);a=-1;break}Kz(r,0,2)|0;a:do if(!(Bz(r)|0)){h=hA(r)|0;iA(r);f=0;while(1){if(f>>>0>=4){o=9;break}a=c[1712+(f<<3)+4>>2]|0;f=f+1|0;if(!((h|0)%(a|0)|0)){m=f;break}}do if((o|0)==9)if((f|0)==4){Ue(0,3,20473,k);a=-1;break a}else{m=0;a=c[1712+(0<<3)+4>>2]|0;break}while(0);if((gA(q,a,1,r)|0)!=1){a=ox()|0;c[l>>2]=c[a>>2];Ue(0,3,20553,l);a=ox()|0;a=By(c[a>>2]|0)|0;c[n>>2]=57671;c[n+4>>2]=a;Ue(0,3,21881,n);a=-1;break}j=q+176|0;c[j>>2]=m;he(q);k=(m|0)==1;l=q+120|0;if(k){t=+g[l>>3];i=q+128|0;g[l>>3]=+g[i>>3];g[i>>3]=t}else i=q+128|0;_O(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;a=1;while(1){if((a|0)>=(b|0)){a=0;break a}e=(c[p>>2]|0)+(4-1)&~(4-1);h=c[e>>2]|0;c[p>>2]=e+4;c[h+176>>2]=c[f>>2];if((gA(q,c[1712+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[j>>2]=m;he(q);if(k){t=+g[l>>3];g[l>>3]=+g[i>>3];g[i>>3]=t}_O(h|0,q|0,184)|0;a=a+1|0}}else{a=ox()|0;c[i>>2]=c[a>>2];Ue(0,3,20428,i);a=ox()|0;a=By(c[a>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=a;Ue(0,3,21881,j);a=-1}while(0);xz(r)|0}else a=-1;while(0);zb=s;return a|0}function le(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+416|0;j=o+304|0;m=o+208|0;k=o+128|0;n=o;l=c[a>>2]|0;f=c[a+4>>2]|0;a:do if((ce(a+8|0,j,m)|0)<0)Ue(0,3,20591,o+400|0);else{i=+(f+-1|0);a=0;while(1){if((a|0)==4)break;f=j+32+(a<<3)|0;g[f>>3]=+g[j+64+(a<<3)>>3]*i-+g[f>>3];a=a+1|0}h=+g[j+80>>3];f=0;while(1){if((f|0)==3)break;a=0;while(1){if((a|0)==3)break;g[k+(f*24|0)+(a<<3)>>3]=+g[j+(f<<5)+(a<<3)>>3]/h;a=a+1|0}f=f+1|0}h=+(l+-1|0);g[n>>3]=+g[k>>3]*2.0/h;g[n+8>>3]=+g[k+8>>3]*2.0/h;g[n+16>>3]=-(+g[k+16>>3]*2.0/h+-1.0);f=n+24|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+40>>3]=-(+g[k+32>>3]*2.0/i);g[n+48>>3]=-(+g[k+40>>3]*2.0/i+-1.0);f=n+56|0;h=b-d;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[n+80>>3]=(b+d)/h;g[n+88>>3]=d*2.0*b/h;f=n+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+112>>3]=-1.0;g[n+120>>3]=0.0;h=+g[m+24>>3];i=+g[m+56>>3];b=+g[m+88>>3];f=0;while(1){if((f|0)==4)break a;d=+g[n+(f<<5)>>3];j=n+(f<<5)+8|0;k=n+(f<<5)+16|0;a=0;while(1){if((a|0)==3)break;g[e+((a<<2)+f<<3)>>3]=d*+g[m+(a<<3)>>3]+ +g[j>>3]*+g[m+32+(a<<3)>>3]+ +g[k>>3]*+g[m+64+(a<<3)>>3];a=a+1|0}g[e+(f+12<<3)>>3]=+g[n+(f<<5)+24>>3]+(d*h+ +g[j>>3]*i+ +g[k>>3]*b);f=f+1|0}}while(0);zb=o;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+64|0;n=s+24|0;o=s+16|0;p=s+8|0;q=s;r=FO(208)|0;if(!r){Ue(0,3,41858,s+32|0);Ea(1)}_O(r|0,a|0,184)|0;m=b<<1;l=(c[a>>2]|0)+m|0;c[r+192>>2]=l;m=(c[a+4>>2]|0)+m|0;c[r+196>>2]=m;c[r+200>>2]=b;c[r+204>>2]=b;d=B(l<<3,m)|0;e=FO(d)|0;c[r+184>>2]=e;if(!e){Ue(0,3,41858,s+40|0);Ea(1)}d=FO(d)|0;c[r+188>>2]=d;if(!d){Ue(0,3,41858,s+48|0);Ea(1)}k=a+104|0;j=c[a+176>>2]|0;i=0;a=e;while(1){if((i|0)>=(m|0))break;h=+(i-b|0);e=0;while(1){if((e|0)>=(l|0))break;t=+(e-b|0);ge(k,t,h,p,q,j)|0;f[a>>2]=+g[p>>3];f[a+4>>2]=+g[q>>3];fe(k,t,h,n,o,j)|0;f[d>>2]=+g[n>>3];f[d+4>>2]=+g[o>>3];e=e+1|0;d=d+8|0;a=a+8|0}i=i+1|0}zb=s;return r|0}function ne(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){GO(c[b+184>>2]|0);GO(c[(c[a>>2]|0)+188>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;a=0}else a=-1;return a|0}function oe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function pe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a+4>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function qe(a){a=a|0;var b=0,d=0;b=FO(8)|0;do if(b){d=FO(a<<3)|0;c[b>>2]=d;if(!d){GO(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function re(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function se(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0;b=+u(+(+te(a,a)));a:do if(b!=0.0){f=c[a>>2]|0;e=+g[f>>3];b=e<0.0?-b:b;e=e+b;g[f>>3]=e;e=1.0/+u(+(b*e));d=c[a+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;h=f+(a<<3)|0;g[h>>3]=e*+g[h>>3];a=a+1|0}}while(0);return +-b}function te(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))Ea(0);d=0;e=0.0;while(1){if((d|0)>=(f|0))break;h=e+ +g[(c[a>>2]|0)+(d<<3)>>3]*+g[(c[b>>2]|0)+(d<<3)>>3];d=d+1|0;e=h}return +e}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;u=x+8|0;v=x;w=c[a+8>>2]|0;a:do if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){r=w+-2|0;s=u+4|0;t=v+4|0;l=0;while(1){if((l|0)>=(r|0))break;m=(c[a>>2]|0)+((B(l,w)|0)<<3)|0;g[(c[b>>2]|0)+(l<<3)>>3]=+g[m+(l<<3)>>3];i=w-l+-1|0;c[s>>2]=i;p=l+1|0;k=m+(p<<3)|0;c[u>>2]=k;o=+se(u);g[(c[d>>2]|0)+(l<<3)>>3]=o;b:do if(!(o==0.0)){h=p;while(1){if((h|0)>=(w|0))break;e=p;j=0.0;while(1){if(e>>>0>=h>>>0)break;f=(c[a>>2]|0)+((B(e,w)|0)+h<<3)|0;o=j+ +g[f>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}f=B(h,w)|0;e=h;while(1){if((e|0)>=(w|0))break;o=j+ +g[(c[a>>2]|0)+(e+f<<3)>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}g[(c[b>>2]|0)+(h<<3)>>3]=j;h=h+1|0}c[t>>2]=i;c[s>>2]=i;c[u>>2]=k;c[v>>2]=(c[b>>2]|0)+(p<<3);o=+te(u,v)*.5;e=w;while(1){e=e+-1|0;if((e|0)<=(l|0))break b;j=+g[m+(e<<3)>>3];h=c[b>>2]|0;i=h+(e<<3)|0;n=+g[i>>3]-o*j;g[i>>3]=n;i=B(e,w)|0;f=e;while(1){if((f|0)>=(w|0))break;k=(c[a>>2]|0)+(f+i<<3)|0;g[k>>3]=+g[k>>3]-(j*+g[h+(f<<3)>>3]+n*+g[m+(f<<3)>>3]);f=f+1|0}}}while(0);l=p}if((w|0)<=1)if((w|0)==1){h=0;e=c[a>>2]|0;f=c[b>>2]|0;q=27}else i=w;else{e=c[a>>2]|0;q=B(r,w)|0;f=c[b>>2]|0;g[f+(r<<3)>>3]=+g[e+(q+r<<3)>>3];h=w+-1|0;g[(c[d>>2]|0)+(r<<3)>>3]=+g[e+(h+q<<3)>>3];q=27}if((q|0)==27){e=e+((B(h,w)|0)+h<<3)|0;i=w;j=+g[e>>3];e=f+(h<<3)|0;q=28}while(1){if((q|0)==28)g[e>>3]=j;d=i+-1|0;if((i|0)<=0){e=0;break a}m=(c[a>>2]|0)+((B(d,w)|0)<<3)|0;c:do if((i|0)<=(r|0)){h=w-d+-1|0;k=m+(i<<3)|0;e=i;while(1){if((e|0)>=(w|0))break c;c[t>>2]=h;c[s>>2]=h;c[u>>2]=k;l=B(e,w)|0;c[v>>2]=(c[a>>2]|0)+(l+i<<3);j=+te(u,v);f=i;while(1){if((f|0)>=(w|0))break;q=(c[a>>2]|0)+(f+l<<3)|0;g[q>>3]=+g[q>>3]-j*+g[m+(f<<3)>>3];f=f+1|0}e=e+1|0}}while(0);e=0;while(1){if((e|0)>=(w|0))break;g[m+(e<<3)>>3]=0.0;e=e+1|0}i=d;j=1.0;e=m+(d<<3)|0;q=28}}else e=-1;while(0);zb=x;return e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;f=+g[c>>3];h=+g[c+8>>3];e=+g[c+16>>3];d=+g[b+88>>3]+(f*+g[b+64>>3]+h*+g[b+72>>3]+e*+g[b+80>>3]);if(d==0.0)c=-1;else{i=+g[b+56>>3]+(f*+g[b+32>>3]+h*+g[b+40>>3]+e*+g[b+48>>3]);g[a>>3]=(+g[b+24>>3]+(f*+g[b>>3]+h*+g[b+8>>3]+e*+g[b+16>>3]))/d;g[a+8>>3]=i/d;c=0}return c|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0;j=zb;zb=zb+224|0;h=j+48|0;i=j;f=j+192|0;xe(h,f,c,d);a:do if((ye(i,b,f)|0)<0){Ue(0,3,20661,j+216|0);b=-1}else{c=0;while(1){if((c|0)==2){b=0;break a}d=0;while(1){if((d|0)==6)break;f=a+(c*48|0)+(d<<3)|0;g[f>>3]=0.0;b=0;e=0.0;while(1){if((b|0)==3)break;k=e+ +g[i+(c*24|0)+(b<<3)>>3]*+g[h+(b*48|0)+(d<<3)>>3];g[f>>3]=k;b=b+1|0;e=k}d=d+1|0}c=c+1|0}}while(0);zb=j;return b|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=zb;zb=zb+864|0;h=j+576|0;i=j;u=c+8|0;e=d+8|0;n=+g[e>>3];t=c+16|0;v=d+16|0;l=+g[v>>3];g[b>>3]=+g[c+24>>3]+(+g[c>>3]*+g[d>>3]+ +g[u>>3]*n+ +g[t>>3]*l);s=c+32|0;o=+g[d>>3];r=c+40|0;q=c+48|0;g[b+8>>3]=+g[c+56>>3]+(+g[s>>3]*o+n*+g[r>>3]+l*+g[q>>3]);p=c+64|0;d=c+72|0;n=+g[e>>3];e=c+80|0;g[b+16>>3]=+g[c+88>>3]+(o*+g[p>>3]+ +g[d>>3]*n+l*+g[e>>3]);l=+g[c>>3];g[h>>3]=o*l;g[h+8>>3]=n*l;m=+g[v>>3];g[h+16>>3]=l*m;k=+g[u>>3];g[h+24>>3]=o*k;g[h+32>>3]=n*k;g[h+40>>3]=m*k;f=+g[t>>3];g[h+48>>3]=o*f;g[h+56>>3]=n*f;g[h+64>>3]=m*f;g[h+72>>3]=l;g[h+80>>3]=k;g[h+88>>3]=f;f=+g[s>>3];g[h+96>>3]=o*f;g[h+104>>3]=n*f;g[h+112>>3]=m*f;k=+g[r>>3];g[h+120>>3]=o*k;g[h+128>>3]=n*k;g[h+136>>3]=m*k;l=+g[q>>3];g[h+144>>3]=o*l;g[h+152>>3]=n*l;g[h+160>>3]=m*l;g[h+168>>3]=f;g[h+176>>3]=k;g[h+184>>3]=l;l=+g[p>>3];g[h+192>>3]=o*l;g[h+200>>3]=n*l;g[h+208>>3]=m*l;k=+g[d>>3];g[h+216>>3]=o*k;g[h+224>>3]=n*k;g[h+232>>3]=m*k;f=+g[e>>3];g[h+240>>3]=o*f;g[h+248>>3]=n*f;g[h+256>>3]=m*f;g[h+264>>3]=l;g[h+272>>3]=k;g[h+280>>3]=f;ze(i);c=0;while(1){if((c|0)==3)break;d=0;while(1){if((d|0)==6)break;e=a+(c*48|0)+(d<<3)|0;g[e>>3]=0.0;b=0;f=0.0;while(1){if((b|0)==12)break;o=f+ +g[h+(c*96|0)+(b<<3)>>3]*+g[i+(b*48|0)+(d<<3)>>3];g[e>>3]=o;b=b+1|0;f=o}d=d+1|0}c=c+1|0}zb=j;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0;o=+g[b>>3];r=+g[c>>3];p=b+8|0;q=+g[c+8>>3];n=b+16|0;d=+g[c+16>>3];e=+g[b+24>>3]+(o*r+ +g[p>>3]*q+ +g[n>>3]*d);c=b+32|0;f=b+40|0;h=b+48|0;i=+g[b+56>>3]+(r*+g[c>>3]+q*+g[f>>3]+d*+g[h>>3]);j=b+64|0;k=+g[j>>3];l=b+72|0;m=b+80|0;d=+g[b+88>>3]+(r*k+q*+g[l>>3]+d*+g[m>>3]);if(d==0.0)c=-1;else{r=d*d;g[a>>3]=(o*d-e*k)/r;g[a+8>>3]=(d*+g[p>>3]-e*+g[l>>3])/r;g[a+16>>3]=(d*+g[n>>3]-e*+g[m>>3])/r;g[a+24>>3]=(d*+g[c>>3]-i*+g[j>>3])/r;g[a+32>>3]=(d*+g[f>>3]-i*+g[l>>3])/r;g[a+40>>3]=(d*+g[h>>3]-i*+g[m>>3])/r;c=0}return c|0}function ze(a){a=a|0;var b=0,d=0,e=0;b=a+64|0;d=a;e=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+104>>3]=1.0;b=a+160|0;d=a+112|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+240|0;d=a+168|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+296|0;d=a+248|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+304|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+336>>3]=1.0;b=a+456|0;d=a+344|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+512|0;d=a+464|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+568|0;d=a+520|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;return}function Ae(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;d=Id(f)|0;do if(d){b=Gd(d,f)|0;if(!b){Ld(d)|0;a=-1;break}a=Gd(d,g)|0;if(!a){Ld(d)|0;Ld(b)|0;a=-1;break}if((Xd(b)|0)<0){Ld(d)|0;Ld(b)|0;Ld(a)|0;a=-1;break}else{Nd(h,b,a)|0;Ld(d)|0;Ld(b)|0;Ld(a)|0;a=0;break}}else a=-1;while(0);zb=i;return a|0}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0;j=zb;zb=zb+256|0;f=j+192|0;h=j+96|0;i=j;Ce(f,b);De(h,f);b=0;while(1){if((b|0)==3)break;d=a+(b<<5)|0;e=a+(b<<5)+8|0;f=a+(b<<5)+16|0;c=0;while(1){if((c|0)==4)break;g[i+(b<<5)+(c<<3)>>3]=+g[d>>3]*+g[h+(c<<3)>>3]+ +g[e>>3]*+g[h+32+(c<<3)>>3]+ +g[f>>3]*+g[h+64+(c<<3)>>3];c=c+1|0}f=i+(b<<5)+24|0;g[f>>3]=+g[a+(b<<5)+24>>3]+ +g[f>>3];b=b+1|0}b=0;while(1){if((b|0)==3)break;c=0;while(1){if((c|0)==4)break;g[a+(b<<5)+(c<<3)>>3]=+g[i+(b<<5)+(c<<3)>>3];c=c+1|0}b=b+1|0}zb=j;return 0}function Ce(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,h=0.0;d=+g[b>>3];e=b+8|0;h=+g[e>>3];f=b+16|0;c=+g[f>>3];c=d*d+h*h+c*c;if(c==0.0){g[a>>3]=1.0;g[a+8>>3]=0.0;d=0.0;c=0.0}else{c=+u(+c);g[a>>3]=d/c;g[a+8>>3]=+g[e>>3]/c;d=c;c=+g[f>>3]/c}g[a+16>>3]=c;g[a+24>>3]=d;g[a+32>>3]=+g[b+24>>3];g[a+40>>3]=+g[b+32>>3];g[a+48>>3]=+g[b+40>>3];return}function De(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0;c=+g[b+24>>3];e=+w(+c);d=1.0-e;c=+x(+c);i=+g[b>>3];g[a>>3]=e+i*i*d;h=b+8|0;f=b+16|0;g[a+8>>3]=d*(+g[b>>3]*+g[h>>3])-c*+g[f>>3];g[a+16>>3]=d*(+g[b>>3]*+g[f>>3])+c*+g[h>>3];g[a+24>>3]=+g[b+32>>3];g[a+32>>3]=d*(+g[h>>3]*+g[b>>3])+c*+g[f>>3];i=+g[h>>3];g[a+40>>3]=e+d*(i*i);g[a+48>>3]=d*(+g[h>>3]*+g[f>>3])-c*+g[b>>3];g[a+56>>3]=+g[b+40>>3];g[a+64>>3]=d*(+g[f>>3]*+g[b>>3])-c*+g[h>>3];g[a+72>>3]=d*(+g[f>>3]*+g[h>>3])+c*+g[b>>3];c=+g[f>>3];g[a+80>>3]=e+d*(c*c);g[a+88>>3]=+g[b+48>>3];return}function Ee(a){a=a|0;var b=0,d=0,e=0;b=FO(136)|0;if(!b)b=0;else{d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}c[b+96>>2]=10;g[b+104>>3]=.10000000149011612;g[b+112>>3]=.9900000095367432;g[b+120>>3]=4.0;g[b+128>>3]=.5}return b|0}function Fe(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{GO(b);c[a>>2]=0;a=0}return a|0}function Ge(a,b){a=a|0;b=+b;if(!a)a=-1;else{g[a+128>>3]=b;a=0}return a|0}function He(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=zb;zb=zb+176|0;j=x+168|0;i=x+160|0;s=x+144|0;t=x+48|0;u=x;v=b+8|0;h=c[v>>2]|0;do if((h|0)>=3){w=FO(h*96|0)|0;if(!w){Ue(0,3,41875,i);h=-1;break}r=FO(h<<4)|0;if(!r){Ue(0,3,41875,j);GO(w);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}d=b+4|0;m=s+8|0;n=a+104|0;o=a+96|0;p=a+120|0;q=a+112|0;l=0.0;j=0;a:while(1){ud(a,e,t)|0;k=0.0;i=0;while(1){h=c[v>>2]|0;if((i|0)>=(h|0))break;if((ve(s,t,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=16;break a}h=c[b>>2]|0;z=+g[h+(i<<4)>>3]-+g[s>>3];y=+g[h+(i<<4)+8>>3]-+g[m>>3];h=i<<1;g[r+(h<<3)>>3]=z;g[r+((h|1)<<3)>>3]=y;k=k+(z*z+y*y);i=i+1|0}k=k/+(h|0);if(k<+g[n>>3]){i=31;break}if((j|0?k<+g[p>>3]:0)?k/l>+g[q>>3]:0){i=31;break}if((j|0)==(c[o>>2]|0)){i=31;break}i=0;while(1){if((i|0)>=(h|0))break;if((we(w+(i*12<<3)|0,a,e,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=27;break a}i=i+1|0;h=c[v>>2]|0}if((Ae(u,r,w,h<<1)|0)<0){i=29;break}Be(e,u)|0;l=k;j=j+1|0}if((i|0)==16){Ie(w,r);h=-1;break}else if((i|0)==27){Ie(w,r);h=-1;break}else if((i|0)==29){Ie(w,r);h=-1;break}else if((i|0)==31){g[f>>3]=k;GO(w);GO(r);h=0;break}}else h=-1;while(0);zb=x;return h|0}function Ie(a,b){a=a|0;b=b|0;GO(a);GO(b);return}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=zb;zb=zb+192|0;l=F+184|0;k=F+176|0;j=F+168|0;h=F+160|0;A=F+144|0;B=F+48|0;C=F;D=b+8|0;i=c[D>>2]|0;do if((i|0)>=4){m=~~(+g[a+128>>3]*+(i|0))+-1|0;m=(m|0)>3?m:3;E=FO(i*96|0)|0;if(!E){Ue(0,3,41875,h);h=-1;break}z=FO(i<<4)|0;if(!z){Ue(0,3,41875,j);GO(E);h=-1;break}h=i<<3;y=FO(h)|0;if(!y){Ue(0,3,41875,k);GO(E);GO(z);h=-1;break}x=FO(h)|0;if(!x){Ue(0,3,41875,l);GO(E);GO(z);GO(y);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}v=b+4|0;w=A+8|0;d=x+(m<<3)|0;m=a+104|0;s=a+96|0;t=a+120|0;u=a+112|0;q=0.0;l=0;a:while(1){ud(a,e,B)|0;h=0;while(1){i=c[D>>2]|0;if((h|0)>=(i|0))break;if((ve(A,B,(c[v>>2]|0)+(h*24|0)|0)|0)<0){i=20;break a}k=c[b>>2]|0;p=+g[k+(h<<4)>>3]-+g[A>>3];r=+g[k+(h<<4)+8>>3]-+g[w>>3];k=h<<1;g[z+(k<<3)>>3]=p;g[z+((k|1)<<3)>>3]=r;r=p*p+r*r;g[x+(h<<3)>>3]=r;g[y+(h<<3)>>3]=r;h=h+1|0}oy(x,i,8,18);r=+g[d>>3]*4.0;r=r<16.0?16.0:r;i=c[D>>2]|0;p=r/6.0;o=0.0;h=0;while(1){if((h|0)>=(i|0))break;n=+g[x+(h<<3)>>3];if(n>r)n=p;else{n=1.0-n/r;n=p*(1.0-n*(n*n))}o=o+n;h=h+1|0}o=o/+(i|0);if(o<+g[m>>3]){i=44;break}if((l|0?o<+g[t>>3]:0)?o/q>+g[u>>3]:0){i=44;break}if((l|0)==(c[s>>2]|0)){i=44;break}h=0;k=0;while(1){if((k|0)>=(i|0))break;n=+g[y+(k<<3)>>3];if(n<=r){j=h*6|0;i=E+(j<<3)|0;if((we(i,a,e,(c[v>>2]|0)+(k*24|0)|0)|0)<0){i=36;break a}q=1.0-n/r;q=q*q;g[i>>3]=q*+g[i>>3];i=E+((j|1)<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+2<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+3<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+4<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+5<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+6<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+7<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+8<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+9<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+10<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+11<<3)|0;g[i>>3]=q*+g[i>>3];i=k<<1;g[z+(h<<3)>>3]=q*+g[z+(i<<3)>>3];g[z+(h+1<<3)>>3]=q*+g[z+((i|1)<<3)>>3];h=h+2|0;i=c[D>>2]|0}k=k+1|0}if((h|0)<6){i=40;break}if((Ae(C,z,E,h)|0)<0){i=42;break}Be(e,C)|0;q=o;l=l+1|0}if((i|0)==20){Ke(E,z,y,x);h=-1;break}else if((i|0)==36){Ke(E,z,y,x);h=-1;break}else if((i|0)==40){Ke(E,z,y,x);h=-1;break}else if((i|0)==42){Ke(E,z,y,x);h=-1;break}else if((i|0)==44){g[f>>3]=o;GO(E);GO(z);GO(y);GO(x);h=0;break}}else h=-1;while(0);zb=F;return h|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;GO(a);GO(b);GO(c);GO(d);return}function Le(a,b){a=a|0;b=b|0;var c=0.0;c=+g[a>>3]-+g[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;t=zb;zb=zb+128|0;s=t+120|0;p=t+112|0;o=t+104|0;m=t+96|0;l=t+88|0;j=t+80|0;i=t+72|0;r=t;a:do if((e|0)>=4){h=0;while(1){if((h|0)>=(e|0))break;if(+g[d+(h*24|0)+16>>3]!=0.0){h=-1;break a}else h=h+1|0}if((((((((!(+g[a>>3]==0.0)?!(+g[a+32>>3]!=0.0):0)?(q=a+40|0,!(+g[q>>3]==0.0)):0)?!(+g[a+64>>3]!=0.0):0)?!(+g[a+72>>3]!=0.0):0)?!(+g[a+80>>3]!=1.0):0)?!(+g[a+24>>3]!=0.0):0)?!(+g[a+56>>3]!=0.0):0)?!(+g[a+88>>3]!=0.0):0){h=e<<1;n=Dd(h,8)|0;if(!n){Ue(0,3,20681,i);h=-1;break}k=Dd(h,1)|0;if(!k){Ld(n)|0;Ue(0,3,20707,j);h=-1;break}h=0;while(1){if((h|0)==(e|0))break;y=d+(h*24|0)|0;j=c[n>>2]|0;i=h<<4;g[j+(i<<3)>>3]=+g[y>>3];x=d+(h*24|0)+8|0;g[j+((i|1)<<3)>>3]=+g[x>>3];g[j+((i|2)<<3)>>3]=1.0;g[j+((i|3)<<3)>>3]=0.0;g[j+((i|4)<<3)>>3]=0.0;g[j+((i|5)<<3)>>3]=0.0;w=b+(h<<4)|0;g[j+((i|6)<<3)>>3]=-(+g[y>>3]*+g[w>>3]);g[j+((i|7)<<3)>>3]=-(+g[x>>3]*+g[w>>3]);g[j+((i|8)<<3)>>3]=0.0;g[j+((i|9)<<3)>>3]=0.0;g[j+((i|10)<<3)>>3]=0.0;g[j+((i|11)<<3)>>3]=+g[y>>3];g[j+((i|12)<<3)>>3]=+g[x>>3];g[j+((i|13)<<3)>>3]=1.0;v=b+(h<<4)+8|0;g[j+((i|14)<<3)>>3]=-(+g[y>>3]*+g[v>>3]);g[j+((i|15)<<3)>>3]=-(+g[x>>3]*+g[v>>3]);i=c[k>>2]|0;j=h<<1;g[i+(j<<3)>>3]=+g[w>>3];g[i+((j|1)<<3)>>3]=+g[v>>3];h=h+1|0}b=Id(n)|0;if(!b){Ld(n)|0;Ld(k)|0;Ue(0,3,20733,l);h=-1;break}j=Gd(b,n)|0;if(!j){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ue(0,3,20759,m);h=-1;break}i=Gd(b,k)|0;if(!i){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ue(0,3,20785,o);h=-1;break}if((Xd(j)|0)<0){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20811,p);h=-1;break}h=Gd(j,i)|0;if(!h){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20837,s);h=-1;break}else{p=c[h>>2]|0;H=+g[p+48>>3];w=r+16|0;E=+g[a+48>>3];A=+g[q>>3];K=(+g[p+24>>3]-H*E)/A;s=r+8|0;D=+g[a+16>>3];C=+g[a+8>>3];B=+g[a>>3];N=(+g[p>>3]-H*D-K*C)/B;I=+g[p+56>>3];v=r+40|0;L=(+g[p+32>>3]-E*I)/A;x=r+32|0;J=(+g[p+8>>3]-D*I-C*L)/B;y=r+24|0;A=(+g[p+40>>3]-E)/A;E=+g[p+16>>3];Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ld(h)|0;M=+u(+(H*H+(K*K+N*N)));z=+u(+(I*I+(L*L+J*J)));g[r>>3]=N/M;g[s>>3]=K/M;g[w>>3]=H/M;g[y>>3]=J/z;g[x>>3]=L/z;g[v>>3]=I/z;z=(M+z)*.5;Ne(r);M=+g[s>>3];I=+g[v>>3];L=+g[w>>3];J=+g[x>>3];H=M*I-L*J;K=+g[y>>3];N=+g[r>>3];G=L*K-I*N;O=J*N-M*K;F=+u(+(O*O+(H*H+G*G)));H=H/F;g[r+48>>3]=H;G=G/F;g[r+56>>3]=G;F=O/F;g[r+64>>3]=F;g[f>>3]=N;g[f+32>>3]=M;g[f+64>>3]=L;g[f+8>>3]=K;g[f+40>>3]=J;g[f+72>>3]=I;g[f+16>>3]=H;g[f+48>>3]=G;g[f+80>>3]=F;g[f+24>>3]=(E-D-C*A)/B/z;g[f+56>>3]=A/z;g[f+88>>3]=1.0/z;h=0;break}}else h=-1}else h=-1;while(0);zb=t;return h|0}function Ne(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0;l=+g[a>>3];L=a+8|0;o=+g[L>>3];M=a+16|0;p=+g[M>>3];N=a+24|0;B=+g[N>>3];O=a+32|0;C=+g[O>>3];K=a+40|0;f=+g[K>>3];b=o*f-p*C;c=p*B-l*f;d=l*C-o*B;e=+u(+(d*d+(b*b+c*c)));do if(!(e==0.0)){m=b/e;k=c/e;j=d/e;A=l*B+o*C+p*f;A=A<0.0?-A:A;A=(+u(+(A+1.0))+ +u(+(1.0-A)))*.5;d=l*k;b=o*m;c=d-b;if(c!=0.0){n=0;y=m;h=l;i=o;z=k;e=p}else{P=l*j-p*m!=0.0;i=P?p:o;h=P?l:p;z=P?j:k;y=P?m:j;d=h*z;c=i*y;n=P?1:2;b=c;c=d-c;e=P?o:l;j=P?k:m}if(!(c==0.0)?(t=(i*j-e*z)/c,v=A*z/c,x=b-d,w=(h*j-e*y)/x,x=A*y/x,r=t*t+w*w+1.0,s=t*v+w*x,q=s*s-r*(v*v+x*x+-1.0),!(q<0.0)):0){d=+u(+q);h=(d-s)/r;i=v+t*h;e=x+w*h;d=(-s-d)/r;c=v+t*d;b=x+w*d;switch(n&3){case 1:{t=b;s=d;q=c;r=e;p=h;o=i;l=y;m=j;b=z;break}case 2:{t=c;s=b;q=d;r=i;p=e;o=h;l=j;m=z;b=y;break}default:{t=d;s=b;q=c;r=h;p=e;o=i;l=y;m=z;b=j}}c=B*m;d=C*l;e=c-d;if(e!=0.0){n=0;h=l;i=B;j=C;k=m}else{P=B*b-f*l!=0.0;j=P?f:C;i=P?B:f;k=P?b:m;h=P?l:b;f=i*k;e=j*h;n=P?1:2;c=f;d=e;e=f-e;f=P?C:B;b=P?m:l}if(!(e==0.0)?(G=(j*b-f*k)/e,H=A*k/e,J=d-c,I=(i*b-f*h)/J,J=A*h/J,E=G*G+I*I+1.0,F=G*H+I*J,D=F*F-E*(H*H+J*J+-1.0),!(D<0.0)):0){j=+u(+D);h=(j-F)/E;d=H+G*h;i=J+I*h;j=(-F-j)/E;c=H+G*j;b=J+I*j;switch(n&3){case 1:{l=b;b=j;j=c;k=i;i=h;h=d;break}case 2:{l=c;k=d;break}default:{l=j;j=c;k=h;h=d}}f=o*h+p*i+r*k;f=f<0.0?-f:f;e=o*j+p*b+r*l;e=e<0.0?-e:e;d=q*h+s*i+t*k;d=d<0.0?-d:d;c=q*j+s*b+t*l;c=c<0.0?-c:c;if(f>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}else if(e>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}}}}while(0);return}function Oe(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,0))}function Qe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+208|0;w=C+200|0;v=C+192|0;y=C+96|0;x=C;z=e+4|0;i=c[z>>2]|0;u=e+112|0;p=e+120|0;o=0;while(1){if((o|0)>=(i|0))break;q=c[e>>2]|0;r=q+(o*320|0)|0;if(!(c[q+(o*320|0)+4>>2]|0)){j=-1;k=0;while(1){if((k|0)>=(d|0))break;if((c[b+(k<<8)+8>>2]|0)==(c[r>>2]|0)?(l=+g[b+(k<<8)+40>>3],!(l<+g[u>>3])):0)if(!((j|0)!=-1?!(+g[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{n=q+(o*320|0)+312|0;m=0;j=-1;while(1){if((m|0)>=(d|0))break;k=c[b+(m<<8)+12>>2]|0;if((k|0)==0?(t=b+(m<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=n;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)B=20}else if((k|0)==(c[r>>2]|0))B=20;if((B|0)==20){B=0;h=+g[b+(m<<8)+48>>3];if(!(h<+g[p>>3]))if(!((j|0)!=-1?!(+g[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}o=o+1|0}p=0;n=0;j=0;o=0;while(1){if((o|0)>=(i|0))break;i=c[e>>2]|0;k=c[i+(o*320|0)+304>>2]|0;do if((k|0)<0){k=p;i=n}else{m=b+(k<<8)|0;if(+Uc(a,m,+g[i+(o*320|0)+8>>3],x)>4.0){c[(c[e>>2]|0)+(o*320|0)+304>>2]=-1;i=b+(k<<8)+236|0;if(c[i>>2]|0){k=p;i=n;break}c[i>>2]=7;k=p;i=n;break}k=c[m>>2]|0;a:do if((p|0)==0|(n|0)<(k|0)){i=0;while(1){if((i|0)==3){i=k;j=o;break a}j=0;while(1){if((j|0)==4)break;g[y+(i<<5)+(j<<3)>>3]=+g[x+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else i=n;while(0);k=p+1|0}while(0);p=k;n=i;o=o+1|0;i=c[z>>2]|0}b:do if((p|0)!=0?(p|0)>=(c[e+128>>2]|0):0){ud(y,(c[e>>2]|0)+(j*320|0)+112|0,x)|0;o=p<<2;q=FO(p<<6)|0;if(!q){Ue(0,3,41858,v);Ea(1)}p=FO(p*96|0)|0;if(!p){Ue(0,3,41858,w);Ea(1)}n=c[z>>2]|0;m=0;i=0;while(1){if((m|0)>=(n|0))break;j=c[e>>2]|0;k=c[j+(m*320|0)+304>>2]|0;if((k|0)>=0){v=c[b+(k<<8)+16>>2]|0;u=(4-v|0)%4|0;w=i<<3;g[q+(w<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|1)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(5-v|0)%4|0;g[q+((w|2)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|3)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(6-v|0)%4|0;g[q+((w|4)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|5)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];v=(7-v|0)%4|0;g[q+((w|6)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)>>3];g[q+((w|7)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)+8>>3];w=i*12|0;g[p+(w<<3)>>3]=+g[j+(m*320|0)+208>>3];g[p+((w|1)<<3)>>3]=+g[j+(m*320|0)+216>>3];g[p+((w|2)<<3)>>3]=+g[j+(m*320|0)+224>>3];g[p+((w|3)<<3)>>3]=+g[j+(m*320|0)+232>>3];g[p+(w+4<<3)>>3]=+g[j+(m*320|0)+240>>3];g[p+(w+5<<3)>>3]=+g[j+(m*320|0)+248>>3];g[p+(w+6<<3)>>3]=+g[j+(m*320|0)+256>>3];g[p+(w+7<<3)>>3]=+g[j+(m*320|0)+264>>3];g[p+(w+8<<3)>>3]=+g[j+(m*320|0)+272>>3];g[p+(w+9<<3)>>3]=+g[j+(m*320|0)+280>>3];g[p+(w+10<<3)>>3]=+g[j+(m*320|0)+288>>3];g[p+(w+11<<3)>>3]=+g[j+(m*320|0)+296>>3];i=i+1|0}m=m+1|0}m=e+104|0;j=(f|0)!=0;if(!(c[m>>2]|0)){i=e+8|0;h=+Wc(a,x,q,p,o,i);if(j&h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,i)}}}}GO(p);GO(q)}else{h=+Wc(a,x,q,p,o,y);k=e+8|0;l=+Wc(a,k,q,p,o,k);i=h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);e:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);f:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);g:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l}}}}}else if(i){i=0;while(1){if((i|0)==3)break c;j=0;while(1){if((j|0)==4)break;g[e+8+(i<<5)+(j<<3)>>3]=+g[y+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else h=l;while(0);GO(p);GO(q)}if(h<20.0){c[m>>2]=1;break}c[m>>2]=0;j=c[z>>2]|0;i=0;while(1){if((i|0)>=(j|0))break b;k=c[(c[e>>2]|0)+(i*320|0)+304>>2]|0;if((k|0)>=0?(A=b+(k<<8)+236|0,(c[A>>2]|0)==0):0)c[A>>2]=8;i=i+1|0}}else B=45;while(0);if((B|0)==45){c[e+104>>2]=0;h=-1.0}zb=C;return +h}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,1))}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0;T=zb;zb=zb+2528|0;S=T+2512|0;Q=T+2504|0;G=T+2488|0;P=T+2480|0;F=T+2472|0;E=T+2456|0;O=T+2448|0;D=T+2440|0;N=T+2432|0;M=T+2424|0;L=T+2416|0;C=T+2408|0;h=T+2400|0;f=T+2392|0;H=T+2384|0;e=T+2376|0;d=T+2368|0;z=T+2304|0;I=T+2048|0;J=T;A=T+2524|0;R=T+2520|0;B=T+2516|0;K=rz(a,21853)|0;do if(!K){c[d>>2]=a;Ue(0,3,20863,d);d=ox()|0;d=By(c[d>>2]|0)|0;c[e>>2]=57671;c[e+4>>2]=d;Ue(0,3,21881,e);d=0}else{Te(I,K);c[H>>2]=R;if((Cz(I,21887,H)|0)!=1){c[f>>2]=a;Ue(0,3,20916,f);xz(K)|0;d=0;break}d=c[R>>2]|0;y=FO(d*320|0)|0;if(!y){Ue(0,3,41858,h);Ea(1)}p=(b|0)==0;q=z+8|0;r=z+16|0;s=z+24|0;t=z+32|0;u=z+40|0;v=z+48|0;w=z+56|0;x=0;f=0;a:while(1){if((x|0)>=(d|0)){d=31;break}Te(I,K);d=y+(x*320|0)|0;e=y+(x*320|0)+312|0;c[C>>2]=e;c[C+4>>2]=A;if((Cz(I,21017,C)|0)!=1){if(p){d=11;break}if(!(Ad(J,a,2048,1)|0)){d=13;break}sA(J,I,2047-(Qy(J)|0)|0)|0;o=sd(b,J)|0;c[d>>2]=o;if((o|0)<0){d=15;break}else{d=1;e=0}}else{e=c[e>>2]|0;c[d>>2]=(e&-32768|0)==0&0==0?e&32767:0;d=2;e=1}c[y+(x*320|0)+4>>2]=e;f=f|d;Te(I,K);e=y+(x*320|0)+8|0;c[D>>2]=e;if((Cz(I,21313,D)|0)!=1){d=18;break}Te(I,K);m=y+(x*320|0)+16|0;n=y+(x*320|0)+24|0;o=y+(x*320|0)+40|0;c[E>>2]=m;c[E+4>>2]=n;c[E+8>>2]=y+(x*320|0)+32;c[E+12>>2]=o;if((Cz(I,21422,E)|0)==4)d=1;else{c[F>>2]=H;c[F+4>>2]=B;if((Cz(I,21438,F)|0)!=2){d=23;break}d=0}do{Te(I,K);c[G>>2]=y+(x*320|0)+16+(d<<5);c[G+4>>2]=y+(x*320|0)+16+(d<<5)+8;c[G+8>>2]=y+(x*320|0)+16+(d<<5)+16;c[G+12>>2]=y+(x*320|0)+16+(d<<5)+24;if((Cz(I,21422,G)|0)!=4){d=25;break a}d=d+1|0}while(d>>>0<3);xd(m,y+(x*320|0)+112|0)|0;V=+g[e>>3];U=V*-.5;g[z>>3]=U;V=V*.5;g[q>>3]=V;g[r>>3]=V;g[s>>3]=V;g[t>>3]=V;g[u>>3]=U;g[v>>3]=U;g[w>>3]=U;e=y+(x*320|0)+48|0;h=y+(x*320|0)+56|0;i=y+(x*320|0)+72|0;j=y+(x*320|0)+80|0;k=y+(x*320|0)+88|0;l=y+(x*320|0)+104|0;d=0;while(1){if((d|0)==4)break;U=+g[z+(d<<4)>>3];V=+g[z+(d<<4)+8>>3];g[y+(x*320|0)+208+(d*24|0)>>3]=+g[o>>3]+(+g[m>>3]*U+ +g[n>>3]*V);g[y+(x*320|0)+208+(d*24|0)+8>>3]=+g[i>>3]+(U*+g[e>>3]+V*+g[h>>3]);g[y+(x*320|0)+208+(d*24|0)+16>>3]=+g[l>>3]+(U*+g[j>>3]+V*+g[k>>3]);d=d+1|0}x=x+1|0;d=c[R>>2]|0}if((d|0)==11){c[L>>2]=a;c[L+4>>2]=I;Ue(0,3,21024,L)}else if((d|0)==13){c[M>>2]=a;Ue(0,3,21152,M)}else if((d|0)==15){c[N>>2]=a;c[N+4>>2]=J;Ue(0,3,21236,N)}else if((d|0)==18){c[O>>2]=a;c[O+4>>2]=x+1;Ue(0,3,21317,O)}else if((d|0)==23){c[P>>2]=a;c[P+4>>2]=x+1;Ue(0,3,21444,P)}else if((d|0)==25){c[Q>>2]=a;c[Q+4>>2]=x+1;Ue(0,3,21444,Q)}else if((d|0)==31){xz(K)|0;d=FO(136)|0;if(!d){Ue(0,3,41858,S);Ea(1)}c[d>>2]=y;c[d+4>>2]=c[R>>2];c[d+128>>2]=0;c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);g[d+112>>3]=.5;g[d+120>>3]=.5;break}xz(K)|0;GO(y);d=0}while(0);zb=T;return d|0}function Te(b,c){b=b|0;c=c|0;var d=0,e=0;a:while(1){if(!(Az(b,256,c)|0))break;d=Qy(b)|0;b:while(1){if(!d)break;d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0}switch(a[b>>0]|0){case 0:case 35:break;default:break a}}return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;b=g;if((e|0)!=0&(c[3916]|0)<=(d|0)?a[e>>0]|0:0){c[b>>2]=f;Ve(0,d,e,b)}zb=g;return}function Ve(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;j=l+16|0;b=l;if((!((e|0)==0|(c[3916]|0)>(d|0))?a[e>>0]|0:0)?(c[b>>2]=c[f>>2],k=Jx(0,0,e,b)|0,k|0):0){if(d>>>0<4)b=(Qy(c[1744+(d<<2)>>2]|0)|0)+3|0;else b=0;g=b+k|0;h=g+1|0;i=FO(h)|0;if(b|0){c[j>>2]=c[1744+(d<<2)>>2];bz(i,b+1|0,21553,j)|0}Jx(i+b|0,k+1|0,e,f)|0;do if(0){if(0?(m=c[13864]|0,m>>>0<0):0){b=0+m|0;if(g>>>0>(-4-m+0|0)>>>0){a[b>>0]=46;a[b+1>>0]=46;a[b+2>>0]=46;a[b+3>>0]=0;c[13864]=0;break}else{Wz(b,i,h)|0;c[13864]=(c[13864]|0)+g;break}}}else kz(i,c[4001]|0)|0;while(0);GO(i)}zb=l;return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(b){e=rz(b,22236)|0;if(e){Kz(e,0,2)|0;f=hA(e)|0;Kz(e,0,0)|0;g=f+1|0;b=FO(g)|0;if(!b){xz(e)|0;b=ox()|0;c[b>>2]=48;b=0;break}if(!(gA(b,f,1,e)|0)){GO(b);xz(e)|0;b=0;break}a[b+f>>0]=0;xz(e)|0;if(d)c[d>>2]=g}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}while(0);return b|0}function Xe(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+40>>2]=b;a=0}return a|0}function Ye(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+44>>2]=b;a=0}return a|0}function Ze(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+24>>2]=b;a=0}return a|0}function _e(a,b){a=a|0;b=b|0;b=(b|0)<40?b:40;if(!a)b=-1;else{c[a+36>>2]=(b|0)>3?b:3;b=0}return b|0}function $e(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+28>>2]=b;a=0}return a|0}function af(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+32>>2]=b;a=0}return a|0}function bf(b,e){b=b|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0;z=zb;zb=zb+16|0;w=b+4|0;x=b+12|0;A=+f[x>>2];y=iz(+(c[w>>2]|0)*e/A)|0;t=b+8|0;u=iz(+(c[t>>2]|0)*e/A)|0;v=FO(16)|0;if(!v){Ue(0,3,41858,z);Ea(1)}c[v+4>>2]=y;c[v+8>>2]=u;f[v+12>>2]=e;g=FO(B(u,y)|0)|0;c[v>>2]=g;if(!g){Ue(0,3,41858,z+8|0);Ea(1)}h=0;while(1){if((h|0)>=(u|0))break;A=+f[x>>2];s=iz(A*+(h|0)/e)|0;h=h+1|0;r=iz(A*+(h|0)/e)|0;i=c[t>>2]|0;r=(r|0)>(i|0)?i:r;i=0;while(1){if((i|0)>=(y|0))break;A=+f[x>>2];q=iz(A*+(i|0)/e)|0;i=i+1|0;p=iz(A*+(i|0)/e)|0;o=c[w>>2]|0;p=(p|0)>(o|0)?o:p;j=0;k=0;l=s;while(1){if((l|0)>=(r|0))break;m=q;n=(c[b>>2]|0)+((B(l,o)|0)+q)|0;while(1){if((m|0)>=(p|0))break;C=j+(d[n>>0]|0)|0;m=m+1|0;n=n+1|0;j=C;k=k+1|0}l=l+1|0}a[g>>0]=(j|0)/(k|0)|0;g=g+1|0}}zb=z;return v|0}function cf(a){a=a|0;var b=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+96|0;m=q+72|0;l=q+64|0;k=q+56|0;j=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;e=q+16|0;b=q+8|0;n=q+80|0;d=FO((Qy(a)|0)+6|0)|0;if(!d){Ue(0,3,41858,q);Ea(1)}c[b>>2]=a;c[b+4>>2]=21589;Hx(d,21584,b)|0;p=rz(d,22236)|0;GO(d);a:do if(!p){c[e>>2]=a;c[e+4>>2]=21589;Ue(0,3,21595,e);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,g);Ea(1)}d=b+4|0;if((gA(d,4,1,p)|0)==1?(o=c[d>>2]|0,(o|0)>=1):0){c[i>>2]=o;Ue(0,1,21668,i);e=o<<2;g=FO(e)|0;c[b>>2]=g;if(!g){Ue(0,3,41858,j);Ea(1)}j=FO(16)|0;c[g>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}d=ff(p)|0;if(!d){c[l>>2]=a;c[l+4>>2]=21589;Ue(0,2,21698,l);GO(c[g>>2]|0);GO(g);GO(b);iA(p);b=df(p)|0;break}if((c[d+4>>2]|0)!=1){c[m>>2]=a;c[m+4>>2]=21589;Ue(0,2,21698,m);GO(c[g>>2]|0);GO(g);GO(b);GO(d);xz(p)|0;b=0;break}m=c[g>>2]|0;c[m+4>>2]=c[d+8>>2];c[m+8>>2]=c[d+12>>2];c[m+12>>2]=c[d+16>>2];c[m>>2]=c[d>>2];GO(d);Kz(p,4-e|0,2)|0;e=1;while(1){if((e|0)>=(o|0)){d=29;break}if((gA(n,4,1,p)|0)!=1){d=21;break}m=bf(c[g>>2]|0,+f[n>>2])|0;c[g+(e<<2)>>2]=m;if(!m){d=25;break}e=e+1|0}b:do if((d|0)==21){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==25){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==29){xz(p)|0;break a}while(0);GO(g)}else Ue(0,3,21643,h);GO(b);xz(p)|0;b=0}while(0);zb=q;return b|0}function df(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+48|0;h=l+32|0;g=l+24|0;f=l+16|0;e=l+8|0;b=FO(8)|0;if(!b){Ue(0,3,41858,l);Ea(1)}d=b+4|0;a:do if((gA(d,4,1,a)|0)==1?(k=c[d>>2]|0,(k|0)>=1):0){j=FO(k<<2)|0;c[b>>2]=j;if(!j){Ue(0,3,41858,f);Ea(1)}d=0;while(1){if((d|0)>=(k|0))break;f=FO(16)|0;c[j+(d<<2)>>2]=f;if(!f){i=12;break}else d=d+1|0}if((i|0)==12){Ue(0,3,41858,g);Ea(1)}e=0;while(1){if((e|0)>=(k|0)){i=44;break}d=j+(e<<2)|0;if((gA((c[d>>2]|0)+4|0,4,1,a)|0)!=1){i=15;break}if((gA((c[d>>2]|0)+8|0,4,1,a)|0)!=1){i=22;break}if((gA((c[d>>2]|0)+12|0,4,1,a)|0)!=1){i=29;break}i=c[d>>2]|0;i=FO(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)|0;c[c[d>>2]>>2]=i;if(!i){i=36;break}g=c[d>>2]|0;g=gA(c[g>>2]|0,1,B(c[g+8>>2]|0,c[g+4>>2]|0)|0,a)|0;i=c[d>>2]|0;e=e+1|0;if((g|0)!=(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)){i=38;break}}b:do if((i|0)==15){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==22){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==29){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==36){Ue(0,3,41858,h);Ea(1)}else if((i|0)==38){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==44){xz(a)|0;break a}while(0);GO(j);i=46}else i=5;while(0);if((i|0)==5){Ue(0,3,21643,e);i=46}if((i|0)==46){GO(b);xz(a)|0;b=0}zb=l;return b|0}function ef(a){a=a|0;var b=0,d=0,e=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[c[d+(e<<2)>>2]>>2]|0);GO(c[(c[c[a>>2]>>2]|0)+(e<<2)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function ff(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(20)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=gf(a,b+8|0,b+12|0,b+4|0,b+16|0)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function gf(d,e,g,h,k){d=d|0;e=e|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,N=0;N=zb;zb=zb+832|0;z=N+528|0;y=N+520|0;x=N+512|0;A=4;D=FO(40)|0;c[D>>2]=0;C=N+24|0;n=N+536|0;w=N;aP(C|0,0,488)|0;i=0;o=G(63,n|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)!=1){c[C>>2]=o;c[n>>2]=112;D=XO(n+132|0,1,D|0,A|0)|0;A=F()|0;i=0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1)m=l;else m=0}else m=l;a:while(1){if(m|0){i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;M(8,0,3,21756,x|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=7;break}}i=0;L(1,C|0,90,488);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;K(39,C|0,d|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;m=H(19,C|0,1)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){n=YO(c[l>>2]|0,D|0,A|0)|0;if(!n)Qa(l|0,j|0);E(j|0)}else n=-1;l=F()|0;if((n|0)==1){m=l;continue}if((m|0)!=1){i=0;M(8,0,3,21782,y|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=14;break}}i=0;G(64,C|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}t=C+36|0;u=C+28|0;s=B(c[u>>2]|0,c[t>>2]|0)|0;v=C+32|0;l=B(s,c[v>>2]|0)|0;i=0;l=G(65,l|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;if(!l){i=0;M(8,0,3,41858,z|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=20;break}}q=C+140|0;r=C+116|0;p=0;while(1){if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;m=0;while(1){if((m|0)==5)break;o=l+(B(m+p|0,s)|0)|0;c[w+(m<<2)>>2]=o;m=m+1|0}i=0;n=I(25,C|0,w|0,5)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){o=YO(c[m>>2]|0,D|0,A|0)|0;if(!o)Qa(m|0,j|0);E(j|0)}else o=-1;m=F()|0;if((o|0)==1)continue a;p=n+p|0}i=0;G(66,C|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;i=0;J(113,C|0);m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)!=1){m=30;break}}b:do if((m|0)==7)l=0;else if((m|0)==14)l=0;else if((m|0)==20)l=0;else if((m|0)==30){if(e|0)c[e>>2]=c[u>>2];if(g|0)c[g>>2]=c[v>>2];if(h|0)c[h>>2]=c[t>>2];if(k){m=a[C+290>>0]|0;switch(m<<24>>24){case 1:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535);break b}break}case 2:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535)*2.5399999618530273;break b}break}default:if(((m&255)>2?(b[C+292>>1]|0)==0:0)?(b[C+294>>1]|0)==0:0){f[k>>2]=+(m&255);break b}}f[k>>2]=0.0}}while(0);GO(D|0);zb=N;return l|0}function hf(a){a=a|0;Qa((c[a>>2]|0)+132|0,1)}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+1088|0;m=o+1072|0;l=o+1064|0;n=o+1056|0;g=o+1048|0;f=o+1040|0;e=o+1032|0;h=o+1024|0;i=o+768|0;j=o+512|0;k=o;c[h>>2]=a;c[h+4>>2]=b;Hx(k,22627,h)|0;k=rz(k,21853)|0;if(!k)a=0;else{a=FO(8)|0;if(!a){Ue(0,3,41858,e);Ea(1)}a:do if(kf(i,k)|0){h=a+4|0;c[f>>2]=h;if((Cz(i,21887,f)|0)!=1){GO(a);a=0;break}b=c[h>>2]|0;if((b|0)<1){GO(a);a=0;break}f=FO(b*56|0)|0;c[a>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}f=0;b:while(1){if((f|0)>=(b|0))break a;if(!(kf(i,k)|0)){b=15;break}c[n>>2]=j;if((Cz(i,21914,n)|0)!=1){b=17;break}g=sd(d,j)|0;e=c[a>>2]|0;c[e+(f*56|0)+4>>2]=g;if((g|0)<0){b=19;break}if(!(kf(i,k)|0)){b=21;break}c[l>>2]=(c[a>>2]|0)+(f*56|0);if((Cz(i,21815,l)|0)!=1){b=24;break}b=0;while(1){if(b>>>0>=3)break;if(!(kf(i,k)|0)){b=27;break b}g=c[a>>2]|0;c[m>>2]=g+(f*56|0)+8+(b<<4);c[m+4>>2]=g+(f*56|0)+8+(b<<4)+4;c[m+8>>2]=g+(f*56|0)+8+(b<<4)+8;c[m+12>>2]=g+(f*56|0)+8+(b<<4)+12;if((Cz(i,22080,m)|0)==4)b=b+1|0;else{b=29;break b}}f=f+1|0;b=c[h>>2]|0}if((b|0)==15){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==17){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==19){GO(e);GO(a);a=0;break}else if((b|0)==21){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==24){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==27){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==29){GO(c[a>>2]|0);GO(a);a=0;break}}else{GO(a);a=0}while(0);xz(k)|0}zb=o;return a|0}function kf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+640|0;s=v+624|0;r=v+616|0;q=v+608|0;p=v+600|0;o=v+592|0;n=v+584|0;m=v+576|0;l=v+568|0;k=v+560|0;j=v+552|0;g=v+544|0;f=v+536|0;e=v+528|0;d=v+520|0;i=v+512|0;t=v;c[i>>2]=a;c[i+4>>2]=b;Hx(t,22627,i)|0;t=rz(t,22236)|0;if(!t){c[d>>2]=a;Ue(0,3,21818,d);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,e);Ea(1)}a=b+4|0;a:do if((gA(a,4,1,t)|0)==1){h=c[a>>2]|0;i=FO(h*20|0)|0;c[b>>2]=i;if(!i){Ue(0,3,41858,g);Ea(1)}g=0;b:while(1){if((g|0)>=(h|0))break a;if((gA(i+(g*20|0)+8|0,4,1,t)|0)!=1){u=12;break}if((gA(i+(g*20|0)+12|0,4,1,t)|0)!=1){u=15;break}if((gA(i+(g*20|0)+16|0,4,1,t)|0)!=1){u=17;break}e=i+(g*20|0)+4|0;if((gA(e,4,1,t)|0)!=1){u=19;break}a=c[e>>2]|0;d=FO(a*20|0)|0;f=i+(g*20|0)|0;c[f>>2]=d;if(!d){u=22;break}d=0;while(1){if((d|0)>=(a|0))break;if((gA((c[f>>2]|0)+(d*20|0)|0,4,1,t)|0)!=1){u=25;break b}if((gA((c[f>>2]|0)+(d*20|0)+4|0,4,1,t)|0)!=1){u=27;break b}if((gA((c[f>>2]|0)+(d*20|0)+8|0,4,1,t)|0)!=1){u=29;break b}if((gA((c[f>>2]|0)+(d*20|0)+12|0,4,1,t)|0)!=1){u=31;break b}if((gA((c[f>>2]|0)+(d*20|0)+16|0,4,1,t)|0)!=1){u=34;break b}d=d+1|0;a=c[e>>2]|0}g=g+1|0}switch(u|0){case 12:{Ue(0,3,21839,j);break}case 15:{Ue(0,3,21839,k);break}case 17:{Ue(0,3,21839,l);break}case 19:{Ue(0,3,21839,m);break}case 22:{Ue(0,3,41858,n);Ea(1);break}case 25:{Ue(0,3,21839,o);break}case 27:{Ue(0,3,21839,p);break}case 29:{Ue(0,3,21839,q);break}case 31:{Ue(0,3,21839,r);break}case 34:{Ue(0,3,21839,s);break}}a=0;while(1){if((a|0)==(g|0))break;GO(c[i+(a*20|0)>>2]|0);a=a+1|0}GO(i);u=39}else{Ue(0,3,21839,f);u=39}while(0);if((u|0)==39){GO(b);b=0}xz(t)|0}zb=v;return b|0}function mf(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)b=-1;else{e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[d+(e*20|0)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)of(0,b,c,d)|0;else of(a,b,c,d)|0;return 0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=zb;zb=zb+48|0;e=m;if(!a){t=+f[c>>2];w=+f[c+4>>2];s=+f[b>>2];o=t*s;v=+f[b+4>>2];n=w*v;p=+f[b+12>>2];i=+f[b+16>>2];q=t*i;g=+f[b+20>>2];k=w*g;r=+f[b+28>>2];z=+f[b+32>>2];x=t*z;h=+f[b+36>>2];j=w*h;y=+f[b+44>>2];l=y+(x+j);t=t+10.0;j=y+(t*z+j);w=w+10.0;h=y+(x+w*h);g=(r+(q+w*g))/h;h=(p+(o+w*v))/h;i=(r+(t*i+k))/j;j=(p+(t*s+n))/j;k=(r+(q+k))/l;l=(p+(o+n))/l}else{vd(a+8|0,b,e)|0;s=+f[c>>2];q=+f[c+4>>2];t=+f[e>>2];y=s*t;r=+f[e+4>>2];z=q*r;x=+f[e+12>>2];i=+f[e+16>>2];w=s*i;g=+f[e+20>>2];k=q*g;v=+f[e+28>>2];n=+f[e+32>>2];p=s*n;h=+f[e+36>>2];j=q*h;o=+f[e+44>>2];l=o+(p+j);s=s+10.0;j=o+(s*n+j);q=q+10.0;h=o+(p+q*h);g=(v+(w+q*g))/h;h=(x+(y+q*r))/h;i=(v+(s*i+k))/j;j=(x+(s*t+z))/j;k=(v+(w+k))/l;l=(x+(y+z))/l}x=j-l;y=i-k;y=x*x+y*y;x=h-l;z=g-k;z=x*x+z*z;e=y>2]=x;z=+u(+(e?y:z))*2.5399999618530273;f[d+4>>2]=z;zb=m;return 0}function pf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+32|0;l=G+20|0;j=G+16|0;i=G+12|0;k=G+8|0;C=G+4|0;D=G;a:do if((d|0)<0)d=-1;else switch(d|0){case 0:{q=+((g|0)/8|0|0);r=+((g*7|0)/8|0|0);s=+((h|0)/8|0|0);t=+((h*7|0)/8|0|0);p=+((g|0)/2|0|0);o=+((h|0)/2|0|0);m=0.0;i=0;d=-1;b:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break b;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(nr)?(u=+f[a+(i*24|0)+20>>2],!(ut)):0)?(B=n-p,v=u-o,v=B*B+v*v,v>m):0){m=v;d=i}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 1:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+4|0;d=-1;i=0;m=0.0;c:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break c;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(s=+f[a+(i*24|0)+20>>2],!(so)):0)?(B=n-+f[e>>2],t=s-+f[g>>2],t=B*B+t*t,t>m):0){d=i;m=t}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 2:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+12|0;j=e+4|0;k=e+8|0;d=-1;i=0;m=0.0;d:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break d;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(x=+f[a+(i*24|0)+20>>2],!(xo)):0)?(w=+f[e>>2],B=+f[j>>2],w=(n-w)*(+f[g>>2]-B)-(x-B)*(+f[k>>2]-w),w=w*w,w>m):0){d=i;m=w}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 3:{qf(e,e+8|0,l,j);qf(e,e+16|0,i,k);B=+((g|0)/8|0|0);w=+((g*7|0)/8|0|0);x=+((h|0)/8|0|0);v=+((h*7|0)/8|0|0);z=e+24|0;A=e+28|0;u=+f[i>>2];t=+f[j>>2];m=u*t;s=+f[k>>2];r=+f[l>>2];q=s*r;h=!(m-q>=0.0);y=!(q-m>=0.0);l=h?2:1;b=h?1:2;d=-1;k=0;m=0.0;e:while(1){f:do switch(c[a+(k*24|0)+12>>2]|0){case -1:break e;case 0:{n=+f[a+(k*24|0)+16>>2];if(!(nw)?(E=a+(k*24|0)+20|0,q=+f[E>>2],!(qv)):0){f[z>>2]=n;c[A>>2]=c[E>>2];qf(e,z,C,D);q=+f[C>>2];if(!h){n=+f[D>>2];if(!(t*q-r*n>=0.0))F=39;else{g=!(s*q-u*n>=0.0);i=g?2:3;g=g?3:2;j=1}}else{n=+f[D>>2];F=39}do if((F|0)==39){F=0;o=s*q;p=u*n;if(y|!(o-p>=0.0))if(p-o>=0.0?!(r*n-t*q>=0.0):1)break f;else{i=b;g=l;j=3;break}else{g=!(t*q-r*n>=0.0);i=g?1:3;g=g?3:1;j=2;break}}while(0);n=+rf(e,j,g,i);if(n>m){d=k;m=n}}break}default:{}}while(0);k=k+1|0}if((d|0)!=-1)c[a+(d*24|0)+12>>2]=1;break a}default:{l=0;g:while(1){d=b+(l*24|0)+12|0;h:do switch(c[d>>2]|0){case -1:break g;case 0:{c[d>>2]=1;i=b+(l*24|0)|0;g=b+(l*24|0)+4|0;j=b+(l*24|0)+8|0;d=0;while(1){k=a+(d*24|0)+12|0;switch(c[k>>2]|0){case -1:break h;case 0:{if(((c[i>>2]|0)==(c[a+(d*24|0)>>2]|0)?(c[g>>2]|0)==(c[a+(d*24|0)+4>>2]|0):0)?(c[j>>2]|0)==(c[a+(d*24|0)+8>>2]|0):0){F=55;break g}break}default:{}}d=d+1|0}}default:{}}while(0);l=l+1|0}if((F|0)==55){c[k>>2]=1;break a}c[b+12>>2]=-1;d=c[13865]|0;if(!d){_z(Ta(0)|0);d=c[13865]|0}d=d+1|0;c[13865]=(d|0)==128?0:d;d=0;i=0;i:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break i;case 0:{d=d+1|0;break}default:{}}i=i+1|0}if(!d){d=-1;break a}k=~~(+(d|0)*+($z()|0)*4.656612873077393e-10);d=0;i=0;j:while(1){g=a+(d*24|0)+12|0;j=c[g>>2]|0;switch(j|0){case -1:{d=j;break a}case 0:{if((i|0)==(k|0))break j;i=i+1|0;break}default:{}}d=d+1|0}c[g>>2]=1;break a}}while(0);zb=G;return d|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0;g=+f[b>>2]-+f[a>>2];e=+f[b+4>>2]-+f[a+4>>2];g=+u(+(g*g+e*e));if(!(g==0.0)){f[c>>2]=e/g;f[d>>2]=(+f[b>>2]-+f[a>>2])/g}return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0;c=a+(c<<3)|0;e=+sf(a,a+(b<<3)|0,c);return +(e+ +sf(a,c,a+(d<<3)|0))}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];d=((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))*.5;return +(d<0.0?-d:d)}function tf(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=zb;zb=zb+1248|0;L=M+1232|0;K=M+1224|0;J=M+1208|0;I=M+1200|0;H=M+1184|0;G=M+1176|0;F=M+1160|0;E=M+1152|0;D=M+1144|0;C=M+1136|0;B=M+1128|0;A=M+1120|0;z=M+1112|0;y=M+1104|0;x=M+1096|0;w=M+1088|0;v=M+1080|0;u=M+1072|0;p=M+1064|0;l=M+1056|0;k=M+1048|0;j=M+1040|0;i=M+1032|0;h=M+1024|0;r=M+768|0;s=M+512|0;t=M+1236|0;g=M;do if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(Fx(d,41063)|0)!=0:0){c[h>>2]=b;c[h+4>>2]=d;Hx(g,22627,h)|0;d=rz(g,21853)|0;if(!d){c[i>>2]=b;Ue(0,3,21855,i);q=ox()|0;q=By(c[q>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=q;Ue(0,3,21881,j);q=0;break}else{n=d;d=1;m=8;break}}else m=4;while(0);if((m|0)==4){Wz(s,b,255)|0;a[s+255>>0]=0;n=0;d=0;m=8}do if((m|0)==8){o=FO(1140)|0;if(!o){Ue(0,3,41858,k);Ea(1)}k=(d|0)!=0;if(k){if(!(uf(r,n)|0)){xz(n)|0;GO(o);q=0;break}c[l>>2]=t;if((Cz(r,21887,l)|0)!=1){xz(n)|0;GO(o);q=0;break}d=c[t>>2]|0;if((d|0)<1){xz(n)|0;GO(o);q=0;break}}else d=1;c[o+4>>2]=d;c[o+152>>2]=0;j=FO(d*112|0)|0;c[o>>2]=j;if(!j){Ue(0,3,41858,p);Ea(1)}i=(e|0)==0;g=0;a:while(1){c[t>>2]=g;if((g|0)>=(d|0)){m=57;break}c[u>>2]=g+1;Ue(0,1,21890,u);if(k){if(!(uf(r,n)|0)){m=57;break}c[v>>2]=s;if((Cz(r,21914,v)|0)!=1){m=57;break}If(s)|0}Ue(0,1,21917,w);p=cf(s)|0;c[j+((c[t>>2]|0)*112|0)>>2]=p;if(!p){m=26;break}Ue(0,1,21966,y);Ue(0,1,21976,z);p=lf(s,41063)|0;c[j+((c[t>>2]|0)*112|0)+4>>2]=p;if(!p){m=29;break}Ue(0,1,21966,B);if(i)c[j+((c[t>>2]|0)*112|0)+8>>2]=0;else{Ue(0,1,22027,C);If(s)|0;p=jf(s,22046,e)|0;c[j+((c[t>>2]|0)*112|0)+8>>2]=p;if(!p){m=33;break}Ue(0,1,21966,E)}b:do if(k){if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[F>>2]=j+(p*112|0)+12;c[F+4>>2]=j+(p*112|0)+16;c[F+8>>2]=j+(p*112|0)+20;c[F+12>>2]=j+(p*112|0)+24;if((Cz(r,22080,F)|0)!=4){m=40;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[H>>2]=j+(p*112|0)+28;c[H+4>>2]=j+(p*112|0)+32;c[H+8>>2]=j+(p*112|0)+36;c[H+12>>2]=j+(p*112|0)+40;if((Cz(r,22080,H)|0)!=4){m=43;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[J>>2]=j+(p*112|0)+44;c[J+4>>2]=j+(p*112|0)+48;c[J+8>>2]=j+(p*112|0)+52;c[J+12>>2]=j+(p*112|0)+56;if((Cz(r,22080,J)|0)!=4){m=47;break a}g=c[t>>2]|0}else{g=c[t>>2]|0;b=0;while(1){if((b|0)==3)break b;h=0;while(1){if((h|0)==4)break;f[j+(g*112|0)+12+(b<<4)+(h<<2)>>2]=(b|0)==(h|0)?1.0:0.0;h=h+1|0}b=b+1|0}}while(0);yd(j+(g*112|0)+12|0,j+(g*112|0)+60|0)|0;Hf(s,256,22128)|0;g=FO(256)|0;c[j+((c[t>>2]|0)*112|0)+108>>2]=g;if(!g){m=55;break}Wz(g,s,256)|0;g=(c[t>>2]|0)+1|0}if((m|0)==26){c[x>>2]=s;Ue(0,3,21935,x);GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==29){c[A>>2]=s;Ue(0,3,21996,A);ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==33){c[D>>2]=s;Ue(0,3,22050,D);mf(j+((c[t>>2]|0)*112|0)+4|0)|0;ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==40){Ue(0,3,22092,G);xz(n)|0;Ea(0)}else if((m|0)==43){Ue(0,3,22092,I);xz(n)|0;Ea(0)}else if((m|0)==47){Ue(0,3,22092,K);xz(n)|0;Ea(0)}else if((m|0)==55){Ue(0,3,41858,L);Ea(1)}else if((m|0)==57){if(n|0)xz(n)|0;if((c[t>>2]|0)>=(d|0)){q=o;break}Ea(0)}}while(0);zb=M;return q|0}function uf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function vf(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)d=-1;else{c[a+152>>2]=1;d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;c[a+8+(d<<4)+(e<<2)>>2]=c[b+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}c[a+168>>2]=-1;d=0}return d|0}function wf(b,e,g,h,i,j,k,l,m,n,o,p){b=b|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=zb;zb=zb+80|0;F=X+8|0;E=X;M=X+72|0;P=X+60|0;R=X+48|0;D=X+36|0;S=X+32|0;T=X+24|0;U=X+16|0;V=j+16|0;A=c[V>>2]|0;W=j+20|0;x=c[W>>2]|0;y=g+-1|0;z=h+-1|0;w=0;while(1){if(w>>>0>=3)break;q=c[m+(w<<3)>>2]|0;if((q|0)<0)break;u=q&-4|2;q=((c[m+(w<<3)+4>>2]|0)/4|0)<<2|2;v=u-k|0;v=(v|0)>0?v:0;u=u+k|0;u=(u|0)<(g|0)?u:y;t=q-l|0;q=q+l|0;q=(q|0)<(h|0)?q:z;t=(t|0)>0?t:0;while(1){if((t|0)>(q|0))break;r=v;s=e+((B(t,g)|0)+v)|0;while(1){if((r|0)>(u|0))break;a[s>>0]=0;r=r+1|0;s=s+1|0}t=t+1|0}w=w+1|0}c[M>>2]=0;C=x<<1;z=A<<1;K=j+12|0;L=j+8|0;r=1;y=0;while(1){if(y>>>0>=3){J=28;break}q=c[m+(y<<3)>>2]|0;if((q|0)<0){J=14;break}x=q&-4|2;u=((c[m+(y<<3)+4>>2]|0)/4|0)<<2|2;v=u+l|0;w=x-k|0;x=x+k|0;q=r;u=u-l|0;a:while(1){if((u|0)>(v|0))break;b:do if((u|0)>=(z|0)){if((u+C|0)>=(h|0))break a;t=B(u,g)|0;s=w;while(1){if((s|0)>(x|0))break b;if((s|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+s|0)>=(g|0))break b;r=e+(s+t)|0;if(!(a[r>>0]|0)){a[r>>0]=1;xf(b,g,i,j,s,u,S);yf(s,u,c[S>>2]|0,M,P,R,D);q=0}}s=s+4|0}}while(0);u=u+4|0}r=q;y=y+1|0}if((J|0)==14)if(!r)J=28;else q=-1;if((J|0)==28){I=j+4|0;q=B((c[j>>2]<<3)+32|0,(c[I>>2]<<1)+8|0)|0;H=FO(q)|0;if(!H){Ue(0,3,41858,E);Ea(1)}G=FO(q)|0;if(!G){Ue(0,3,41858,F);Ea(1)}F=j+36|0;r=0;E=0;q=-1;while(1){if((E|0)>=(c[M>>2]|0))break;u=c[j>>2]|0;s=c[I>>2]|0;c:do if((c[F>>2]|0)==(B(s,u)|0)){switch(i|0){case 5:case 12:case 13:case 14:break;default:{J=40;break c}}l=R+(E<<2)|0;k=c[l>>2]|0;m=k+-3-(c[V>>2]<<1)|0;if((((m|0)>=0?(k+3+(c[W>>2]<<1)|0)<(h|0):0)?(N=P+(E<<2)|0,O=c[N>>2]|0,Q=O+-3-(c[L>>2]<<1)|0,(Q|0)>=0):0)?(O+3+(c[K>>2]<<1)|0)<(g|0):0){k=(s<<1)+6|0;t=(u<<2)+16|0;v=G;w=H;s=0;while(1){if((s|0)>=(t|0))break;c[w>>2]=0;c[v>>2]=0;v=v+4|0;w=w+4|0;s=s+1|0}D=(u<<1)+6|0;e=b+(Q+(B(m,g)|0))|0;z=G;A=H;s=w;C=0;while(1){if((C|0)>=(k|0))break;y=s+8|0;u=v;t=0;while(1){if((t|0)==2)break;c[s>>2]=0;c[u>>2]=0;c[T+(t<<2)>>2]=0;c[U+(t<<2)>>2]=0;u=u+4|0;s=s+4|0;t=t+1|0}x=e;u=z+8|0;w=A+8|0;v=v+8|0;s=y;t=0;while(1){if((t|0)>=(D|0))break;y=t&1;A=T+(y<<2)|0;z=(c[A>>2]|0)+(d[x>>0]|0)|0;c[A>>2]=z;A=d[x>>0]|0;A=B(A,A)|0;y=U+(y<<2)|0;A=A+(c[y>>2]|0)|0;c[y>>2]=A;c[s>>2]=(c[w>>2]|0)+z;c[v>>2]=(c[u>>2]|0)+A;x=x+1|0;u=u+4|0;w=w+4|0;v=v+4|0;s=s+4|0;t=t+1|0}e=e+g|0;z=u;A=w;C=C+1|0}u=0;while(1){if((u|0)==7)break c;v=u+m|0;w=u+2|0;x=u+-3|0;t=0;while(1){if((t|0)==7)break;zf(b,g,t+Q|0,v,j,H,G,t+2|0,w,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t+-3+(c[N>>2]|0);c[o>>2]=x+(c[l>>2]|0);f[p>>2]=+(s|0)/1.0e4;q=0;r=s}t=t+1|0}u=u+1|0}}else J=40}else J=40;while(0);d:do if((J|0)==40){J=0;v=c[R+(E<<2)>>2]|0;w=v+3|0;x=P+(E<<2)|0;v=v+-3|0;while(1){if((v|0)>(w|0))break d;e:do if((v|0)>=(c[V>>2]<<1|0)){if(((c[W>>2]<<1)+v|0)>=(h|0))break d;t=c[x>>2]|0;u=t+3|0;t=t+-3|0;while(1){if((t|0)>(u|0))break e;if((t|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+t|0)>=(g|0))break e;xf(b,g,i,j,t,v,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t;c[o>>2]=v;f[p>>2]=+(s|0)/1.0e4;r=s;q=0}}t=t+1|0}}while(0);v=v+1|0}}while(0);E=E+1|0}GO(H);GO(G)}zb=X;return q|0}function xf(a,e,f,g,h,i,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;l=c[g+24>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:{s=0-(c[g+8>>2]|0)|0;t=c[g+12>>2]|0;q=0-(c[g+16>>2]|0)|0;v=c[g+20>>2]|0;w=e<<1;m=l;p=a+((s<<1)+h+(B((q<<1)+i|0,e)|0))|0;l=0;f=0;k=0;while(1){if((q|0)>(v|0)){m=l;break a}r=s;n=m;o=p;while(1){if((r|0)>(t|0))break;m=b[n>>1]|0;if(m<<16>>16!=4096){i=d[o>>0]|0;l=l+i|0;f=(B(i,i)|0)+f|0;k=(B(i,m&65535)|0)+k|0}r=r+1|0;n=n+2|0;o=o+2|0}m=n;p=p+w|0;q=q+1|0}}default:{if(f>>>0<2){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+((w-(p<<1)|0)*3|0)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+6|0;l=l+2|0}r=r+1|0}}if((f|1|0)==3){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;l=l+2|0}r=r+1|0}}if((f|2|0)==6){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=l;l=0;f=0;k=0;while(1){if((r|0)>(s|0)){m=l;break a}w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[m>>1]|0;if(n<<16>>16!=4096){w=(((d[p+2>>0]|0)+(d[p+1>>0]|0)+(d[p+3>>0]|0)|0)>>>0)/3|0;l=w+l|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;m=m+2|0}r=r+1|0}}switch(f|0){case 7:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;r=0-(c[g+16>>2]|0)|0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p+1>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+4|0;l=l+2|0}r=r+1|0}}case 8:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;q=0-(c[g+16>>2]|0)|0;while(1){if((q|0)>(s|0))break a;w=(B((q<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;r=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(r|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}l=l+2|0;o=o+1|0;p=p+4|0}q=q+1|0}}default:{m=0;f=0;k=0;break a}}}}while(0);l=c[g+36>>2]|0;f=f-((B(m,m)|0)/(l|0)|0)|0;if(!f)f=0;else{i=(k-((B(c[g+32>>2]|0,m)|0)/(l|0)|0)|0)*100|0;f=(((i|0)/(c[g+28>>2]|0)|0)*100|0)/(~~+u(+(+(f|0)))|0)|0}c[j>>2]=f;return}function yf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[e>>2]|0;do if(!i){c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[e>>2]=1}else{j=0;while(1){if((j|0)>=(i|0))break;if((c[h+(j<<2)>>2]|0)<(d|0))break;j=j+1|0}if((j|0)==(i|0)){if(i>>>0>=3)break;c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;break}if((i|0)==3)i=2;else c[e>>2]=i+1;while(1){if((i|0)<=(j|0))break;e=i+-1|0;c[f+(i<<2)>>2]=c[f+(e<<2)>>2];c[g+(i<<2)>>2]=c[g+(e<<2)>>2];c[h+(i<<2)>>2]=c[h+(e<<2)>>2];i=e}c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d}while(0);return}function zf(a,b,f,g,h,i,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;o=a+((B(g,b)|0)+f)|0;r=c[h+4>>2]|0;p=b<<1;q=c[h>>2]|0;b=0;a=c[h+24>>2]|0;s=0;while(1){if((b|0)>=(r|0))break;n=0;f=o;g=s;while(1){if((n|0)>=(q|0))break;s=(B(e[a>>1]|0,d[f>>0]|0)|0)+g|0;n=n+1|0;a=a+2|0;f=f+2|0;g=s}b=b+1|0;o=o+p|0;s=g}a=q<<1;q=a+8|0;g=k+-2|0;a=g+a|0;f=l+-2|0;l=B(q,f+(r<<1)|0)|0;f=B(q,f)|0;k=l+a|0;r=f+g|0;l=l+g|0;a=f+a|0;f=(c[i+(r<<2)>>2]|0)+(c[i+(k<<2)>>2]|0)-(c[i+(l<<2)>>2]|0)-(c[i+(a<<2)>>2]|0)|0;g=c[h+36>>2]|0;a=(c[j+(r<<2)>>2]|0)+(c[j+(k<<2)>>2]|0)-(c[j+(l<<2)>>2]|0)-(c[j+(a<<2)>>2]|0)-((B(f,f)|0)/(g|0)|0)|0;if(!a)a=0;else{j=(s-((B(c[h+32>>2]|0,f)|0)/(g|0)|0)|0)*100|0;a=(((j|0)/(c[h+28>>2]|0)|0)*100|0)/(~~+u(+(+(a|0)))|0)|0}c[m>>2]=a;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=FO(40)|0;if(!d){Ue(0,3,41858,e);Ea(1)}c[d+16>>2]=a;c[d+8>>2]=a;c[d+20>>2]=b;c[d+12>>2]=b;b=a+1+b|0;c[d>>2]=b;c[d+4>>2]=b;b=FO(B(b<<1,b)|0)|0;c[d+24>>2]=b;if(!b){Ue(0,3,41858,e+8|0);Ea(1)}else{zb=e;return d|0}return 0}function Bf(d,e,g,i,j,k){d=d|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;D=zb;zb=zb+80|0;l=D+60|0;m=D+56|0;z=D+52|0;A=D+48|0;x=D;C=D+64|0;a:do if(!d){x=c[i>>2]|0;y=c[x+(j*20|0)+8>>2]|0;c[l>>2]=y;p=+f[x+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,e,(c[h>>2]=y,+f[h>>2]),p,z,A)|0)<0)d=-1;else{s=~~(+f[z>>2]+.5);l=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;q=0-l|0;i=~~(+f[A>>2]+.5)-(l<<1)|0;l=0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((q|0)>(c[t>>2]|0)){n=25;break a}o=c[v>>2]|0;p=+(i|0);n=0-o|0;o=s-(o<<1)|0;while(1){if((n|0)>(c[w>>2]|0))break;if((Gf(0,e,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+(o|0),p,C)|0)<0)b[m>>1]=4096;else{A=a[C>>0]|0;b[m>>1]=A&255;A=A&255;l=l+1|0;j=(B(A,A)|0)+j|0;d=d+A|0}n=n+1|0;o=o+2|0;m=m+2|0}q=q+1|0;i=i+2|0}}}else{vd(d+8|0,e,x)|0;w=c[i>>2]|0;e=c[w+(j*20|0)+8>>2]|0;c[l>>2]=e;p=+f[w+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,x,(c[h>>2]=e,+f[h>>2]),p,l,m)|0)>=0?(y=d+184|0,(oe(y,+f[l>>2],+f[m>>2],z,A)|0)>=0):0){s=~~(+f[z>>2]+.5);o=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;l=0;n=0-o|0;o=~~(+f[A>>2]+.5)-(o<<1)|0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((n|0)>(c[t>>2]|0)){n=25;break a}q=c[v>>2]|0;p=+(o|0);i=0-q|0;q=s-(q<<1)|0;while(1){if((i|0)>(c[w>>2]|0))break;do if((pe(y,+(q|0),p,z,A)|0)>=0)if((Gf(0,x,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+f[z>>2],+f[A>>2],C)|0)<0){b[m>>1]=4096;break}else{e=a[C>>0]|0;b[m>>1]=e&255;e=e&255;l=l+1|0;j=(B(e,e)|0)+j|0;d=d+e|0;break}else b[m>>1]=4096;while(0);i=i+1|0;q=q+2|0;m=m+2|0}n=n+1|0;o=o+2|0}}else d=-1}while(0);if((n|0)==25)if(!l)d=-1;else{g=~~+u(+(+(j-((B(d,d)|0)/(l|0)|0)|0)));c[k+28>>2]=g;c[k+32>>2]=d;c[k+36>>2]=l;d=0}zb=D;return d|0}function Cf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+32|0;m=r+20|0;n=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;k=r;l=+f[g+8>>2];i=+f[g+12>>2];if((b|0)!=0?(Ef(a,b,l,i,m,p)|0)>=0:0){c[h>>2]=~~+f[m>>2];c[h+4>>2]=~~+f[p>>2];if((d|0)!=0?(Ef(a,d,l,i,n,j)|0)>=0:0){c[h+8>>2]=~~(+f[m>>2]*2.0-+f[n>>2]);c[h+12>>2]=~~(+f[p>>2]*2.0-+f[j>>2]);if((e|0)!=0?(Ef(a,e,l,i,o,k)|0)>=0:0){c[h+16>>2]=~~(+f[o>>2]+(+f[m>>2]*3.0-+f[n>>2]*3.0));g=~~(+f[k>>2]+(+f[p>>2]*3.0-+f[j>>2]*3.0))}else q=10}else q=9}else{c[h>>2]=-1;c[h+4>>2]=-1;q=9}if((q|0)==9){c[h+8>>2]=-1;c[h+12>>2]=-1;q=10}if((q|0)==10){c[h+16>>2]=-1;g=-1}c[h+20>>2]=g;zb=r;return}function Df(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0;l=zb;zb=zb+64|0;h=l;j=l+52|0;k=l+48|0;if(a){vd(a+8|0,b,h)|0;m=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);i=(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/m;c=(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/m;b=a+184|0;if((oe(b,i,c,e,g)|0)>=0?(pe(b,+f[e>>2],+f[g>>2],j,k)|0)>=0:0){i=i-+f[j>>2];m=c-+f[k>>2];b=(i*i+m*m>1.0)<<31>>31}else b=-1}else{i=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);m=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/m;f[g>>2]=i/m;b=0}zb=l;return b|0}function Ef(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0.0;i=zb;zb=zb+48|0;h=i;if(!a){k=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);j=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/j;f[g>>2]=k/j;a=0}else{vd(a+8|0,b,h)|0;k=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);a=(oe(a+184|0,(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/k,(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/k,e,g)|0)>>31}zb=i;return a|0}function Ff(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0;r=zb;zb=zb+64|0;i=r+52|0;j=r+48|0;l=r;if(a)if((pe(a+184|0,c,d,i,j)|0)<0)a=-1;else{vd(a+8|0,b,l)|0;h=+f[l+32>>2];k=+f[i>>2];p=+f[l+36>>2];d=+f[j>>2];c=+f[l+44>>2];m=+f[l+12>>2]-k*c;n=p*d-+f[l+20>>2];o=h*d-+f[l+16>>2];p=k*p-+f[l+4>>2];k=h*k-+f[l>>2];h=+f[l+28>>2];c=d*c;q=5}else{k=+f[b+32>>2];p=+f[b+36>>2];s=+f[b+44>>2];m=+f[b+12>>2]-s*c;n=p*d-+f[b+20>>2];o=k*d-+f[b+16>>2];p=p*c-+f[b+4>>2];k=k*c-+f[b>>2];h=+f[b+28>>2];c=s*d;q=5}if((q|0)==5){c=h-c;h=k*n-p*o;if(h==0.0)a=-1;else{f[e>>2]=(n*m-p*c)/h;f[g>>2]=(k*c-o*m)/h;a=0}}zb=r;return a|0}function Gf(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=+g;h=+h;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+4|0;o=p;if((((Ff(b,d,g,h,n,o)|0)>=0?(j=+f[e+12>>2],k=~~(+f[n>>2]*j/25.399999618530273+.5),(k|0)>=0):0)?(l=c[e+4>>2]|0,(l|0)>(k|0)):0)?(n=c[e+8>>2]|0,m=~~(+(n|0)-j*+f[o>>2]/25.399999618530273+.5),(m|0)>-1&(n|0)>(m|0)):0){b=(B(l,m)|0)+k|0;a[i>>0]=a[(c[e>>2]|0)+b>>0]|0;b=0}else b=-1;zb=p;return b|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return Bd(a,b,c)|0}function If(a){a=a|0;return Cd(a)|0}function Jf(a){a=a|0;return Kf(a,c[a>>2]|0,c[a+4>>2]|0,1)|0}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=zb;zb=zb+16|0;f=HO(1,4156)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{h=tB(4)|0;Ij(h);c[f>>2]=h;c[f+4>>2]=a;c[f+8>>2]=e;c[f+12>>2]=b;c[f+16>>2]=d;c[f+20>>2]=1;c[f+24>>2]=-1;e=f+28|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;zb=g;return f|0}return 0}function Lf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)b=-1;else{d=c[b>>2]|0;if(d){nk(d);SA(d);b=c[a>>2]|0}d=c[b+28>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+36>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+52>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+44>>2]|0;if(d){GO(d);b=c[a>>2]|0}GO(b);c[a>>2]=0;b=0}return b|0}function Mf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;Rf(a);return}function Qf(a){a=a|0;P(a|0)|0;UA()}function Rf(a){a=a|0;SA(a);return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+48|0;r=s+40|0;p=s+32|0;m=s+24|0;k=s+16|0;f=s+8|0;e=s;if((a|0)!=0&(b|0)!=0){e=c[a>>2]|0;do if(!e){e=FO(16)|0;c[a>>2]=e;if(!e){Ue(0,3,41858,f);Ea(1)}else{c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=0;c[e+8>>2]=0;l=e;d=e;break}}else{l=e;d=e}while(0);f=c[b>>2]|0;if(!f)d=0;else{g=c[l+4>>2]|0;h=c[f+4>>2]|0;i=h+g|0;j=FO(i*132|0)|0;if(!j){Ue(0,3,41858,k);Ea(1)}e=0;while(1){if((e|0)>=(g|0))break;_O(j+(e*132|0)|0,(c[l>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=0;while(1){if((e|0)>=(h|0))break;_O(j+((e+g|0)*132|0)|0,(c[f>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=c[l>>2]|0;if(e){GO(e);d=c[a>>2]|0}c[d>>2]=j;h=c[a>>2]|0;c[h+4>>2]=i;k=c[h+12>>2]|0;g=c[b>>2]|0;l=c[g+12>>2]|0;g=g+8|0;h=h+8|0;d=0;f=0;while(1){if((f|0)>=(l|0))break;e=0;while(1){if((e|0)>=(k|0))break;if((c[(c[g>>2]|0)+(f*12|0)+8>>2]|0)==(c[(c[h>>2]|0)+(e*12|0)+8>>2]|0)){q=23;break}else e=e+1|0}if((q|0)==23){q=0;d=d+1|0}f=f+1|0}n=l+k-d|0;o=FO(n*12|0)|0;if(!o){Ue(0,3,41858,m);Ea(1)}j=0;while(1){if((j|0)>=(k|0))break;h=(c[a>>2]|0)+8|0;d=c[h>>2]|0;g=d+(j*12|0)+8|0;c[o+(j*12|0)+8>>2]=c[g>>2];d=c[d+(j*12|0)+4>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(f*12|0)+8>>2]|0)==(c[g>>2]|0))d=(c[e+(f*12|0)+4>>2]|0)+d|0;f=f+1|0}i=o+(j*12|0)|0;m=FO(d*12|0)|0;c[i>>2]=m;if(!m){q=36;break}h=c[(c[h>>2]|0)+(j*12|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;g=(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;m=(c[i>>2]|0)+(e*12|0)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];e=e+1|0}g=0;while(1){if((g|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(g*12|0)+8>>2]|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)+8>>2]|0)){q=43;break}g=g+1|0}a:do if((q|0)==43){q=0;f=0;while(1){if((f|0)>=(c[e+(g*12|0)+4>>2]|0))break a;t=(c[e+(g*12|0)>>2]|0)+(f*12|0)|0;m=(c[i>>2]|0)+((f+h|0)*12|0)|0;c[m>>2]=c[t>>2];c[m+4>>2]=c[t+4>>2];c[m+8>>2]=c[t+8>>2];f=f+1|0;e=c[(c[b>>2]|0)+8>>2]|0}}while(0);c[o+(j*12|0)+4>>2]=d;j=j+1|0}if((q|0)==36){Ue(0,3,41858,p);Ea(1)}d=0;j=0;while(1){if((j|0)>=(l|0))break;f=c[(c[b>>2]|0)+8>>2]|0;g=c[f+(j*12|0)+8>>2]|0;e=0;while(1){if((e|0)>=(k|0)){q=53;break}if((g|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(e*12|0)+8>>2]|0)){q=52;break}else e=e+1|0}if((q|0)==52){q=0;d=d+1|0}else if((q|0)==53){q=0;h=j+k-d|0;i=o+(h*12|0)|0;c[o+(h*12|0)+8>>2]=g;f=c[f+(j*12|0)+4>>2]|0;t=FO(f*12|0)|0;c[i>>2]=t;if(!t){q=55;break}e=0;while(1){if((e|0)>=(f|0))break;p=(c[(c[(c[b>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;t=(c[i>>2]|0)+(e*12|0)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];e=e+1|0}c[o+(h*12|0)+4>>2]=f}j=j+1|0}if((q|0)==55){Ue(0,3,41858,r);Ea(1)}e=c[a>>2]|0;d=e+8|0;g=c[d>>2]|0;if(g){f=0;d=g;while(1){if((f|0)>=(c[e+12>>2]|0))break;GO(c[d+(f*12|0)>>2]|0);t=c[a>>2]|0;f=f+1|0;e=t;d=c[t+8>>2]|0}GO(d);d=(c[a>>2]|0)+8|0}c[d>>2]=o;c[(c[a>>2]|0)+12>>2]=n;Tf(b)|0;d=0}}else{Ue(0,3,22132,e);d=-1}zb=s;return d|0}function Tf(a){a=a|0;var b=0,d=0,e=0,f=0;e=zb;zb=zb+16|0;if(a){b=c[a>>2]|0;if(!b)b=0;else{b=c[b>>2]|0;if(b|0)GO(b);b=0;while(1){f=c[a>>2]|0;d=f+8|0;if((b|0)>=(c[f+12>>2]|0))break;GO(c[(c[d>>2]|0)+(b*12|0)>>2]|0);b=b+1|0}GO(c[d>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;b=0}}else{Ue(0,3,22192,e);b=-1}zb=e;return b|0}function Uf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;o=p+56|0;n=p+48|0;l=p+40|0;k=p+32|0;j=p+24|0;i=p+8|0;h=p;g=p+60|0;a[g>>0]=a[22236]|0;a[g+1>>0]=a[22237]|0;a[g+2>>0]=a[22238]|0;a:do if((b|0)!=0&(e|0)!=0){m=Hg(b,d,g)|0;if(!m){f=(d|0)!=0;c[i>>2]=b;c[i+4>>2]=f?46716:57671;c[i+8>>2]=f?d:57671;Ue(0,3,22290,i);f=-1;break}i=HO(1,16)|0;if(!i){Ue(0,3,41858,j);Ea(1)}h=i+4|0;b:do if((gA(h,4,1,m)|0)==1?(f=c[h>>2]|0,(f|0)>=1):0){j=FO(f*132|0)|0;c[i>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}g=0;while(1){if((g|0)>=(f|0))break;if((gA((c[i>>2]|0)+(g*132|0)|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+8|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+16|0,108,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+124|0,4,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+128|0,4,1,m)|0)!=1)break b;g=g+1|0;f=c[h>>2]|0}b=i+12|0;if((gA(b,4,1,m)|0)==1){f=c[b>>2]|0;if((f|0)<1){c[i+8>>2]=0;break}k=FO(f*12|0)|0;d=i+8|0;c[d>>2]=k;if(!k){Ue(0,3,41858,l);Ea(1)}h=0;while(1){if((h|0)>=(f|0)){f=32;break}if((gA((c[d>>2]|0)+(h*12|0)+8|0,4,1,m)|0)!=1)break b;if((gA((c[d>>2]|0)+(h*12|0)+4|0,4,1,m)|0)!=1)break b;l=c[d>>2]|0;f=c[l+(h*12|0)+4>>2]|0;g=FO(f*12|0)|0;c[l+(h*12|0)>>2]=g;if(!g){f=29;break}if((gA(g,12,f,m)|0)!=(f|0))break b;h=h+1|0;f=c[b>>2]|0}if((f|0)==29){Ue(0,3,41858,n);Ea(1)}else if((f|0)==32){c[e>>2]=i;xz(m)|0;f=0;break a}}}while(0);Ue(0,3,22357,o);f=c[i+8>>2]|0;if(f|0)GO(f);f=c[i>>2]|0;if(f|0)GO(f);GO(i);xz(m)|0;f=-1}else{Ue(0,3,22239,h);f=-1}while(0);zb=p;return f|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;a:do if(!a){Ue(0,3,22402,j);e=-1}else{g=c[a+4>>2]|0;i=(b|0)==-1;e=0;while(1){if((e|0)>=(g|0))break;f=(c[a>>2]|0)+(e*132|0)+124|0;h=c[f>>2]|0;if((h|0)==(b|0)|i&(h|0)>-1)c[f>>2]=d;e=e+1|0}h=c[a+12>>2]|0;f=a+8|0;e=0;while(1){if((e|0)>=(h|0)){e=0;break a}g=(c[f>>2]|0)+(e*12|0)+8|0;a=c[g>>2]|0;if((a|0)==(b|0)|i&(a|0)>-1)c[g>>2]=d;e=e+1|0}}while(0);zb=j;return e|0}function Wf(){return -1}function Xf(a,b){a=a|0;b=b|0;return Zf(a,b,Yf(b)|0)|0}function Yf(a){a=a|0;return Qy(a)|0}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;g=l+12|0;j=l;k=l+8|0;NE(j,b);if(a[j>>0]|0){h=(c[b>>2]|0)+-12|0;c[k>>2]=c[b+(c[h>>2]|0)+24>>2];h=b+(c[h>>2]|0)|0;i=c[h+4>>2]|0;f=d+e|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(g,h);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(g);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;c[g>>2]=c[k>>2];if(!($f(g,d,(i&176|0)==32?f:d,f,h,e&255)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(j);zb=l;return b|0}function _f(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{k=d;j=f-k|0;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;k=j-k|0;if((k|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;hO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+11>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){jO(m);break}else{c[b>>2]=0;jO(m);i=0;break a}}while(0);f=f-j|0;if((f|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function bg(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return}function cg(a){a=a|0;return a&255|0}function dg(a){a=a|0;if(_f(a,Wf()|0)|0)a=~(Wf()|0);return a|0}function eg(a){a=a|0;return a&255|0}function fg(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+112|0;z=A+48|0;p=A+40|0;n=A+32|0;l=A+24|0;h=A+16|0;g=A+8|0;e=A;v=A+96|0;w=A+84|0;x=A+72|0;y=A+52|0;a:do if((b|0)!=0&(d|0)!=0){i=d+4|0;e=c[i>>2]|0;if(!e){Ue(0,3,22499,g);e=-1;break}u=b+28|0;g=c[u>>2]|0;if(g){GO(g);e=c[i>>2]|0;if(!e){c[u>>2]=0;e=0}else j=7}else j=7;b:do if((j|0)==7){t=FO(e*132|0)|0;c[u>>2]=t;if(!t){Ue(0,3,41858,h);Ea(1)}g=0;while(1){if((g|0)>=(e|0))break b;_O((c[u>>2]|0)+(g*132|0)|0,(c[d>>2]|0)+(g*132|0)|0,132)|0;g=g+1|0;e=c[i>>2]|0}}while(0);m=b+32|0;c[m>>2]=e;t=b+36|0;e=c[t>>2]|0;if(e|0){i=b+40|0;h=0;while(1){if((h|0)>=(c[i>>2]|0))break;g=c[e+(h*12|0)>>2]|0;if(g){GO(g);e=c[t>>2]|0}h=h+1|0}GO(e)}k=d+12|0;e=c[k>>2]|0;c:do if(!e){c[t>>2]=0;o=0}else{s=FO(e*12|0)|0;c[t>>2]=s;if(!s){Ue(0,3,41858,l);Ea(1)}d=d+8|0;j=0;while(1){if((j|0)>=(e|0)){o=e;break c}i=c[d>>2]|0;g=c[t>>2]|0;c[g+(j*12|0)+8>>2]=c[i+(j*12|0)+8>>2];h=i+(j*12|0)+4|0;c[g+(j*12|0)+4>>2]=c[h>>2];h=c[h>>2]|0;if(!h)c[i+(j*12|0)>>2]=0;else{s=FO(h*12|0)|0;c[g+(j*12|0)>>2]=s;if(!s)break;g=0;e=i;while(1){if((g|0)>=(c[e+(j*12|0)+4>>2]|0))break;r=(c[e+(j*12|0)>>2]|0)+(g*12|0)|0;s=(c[(c[t>>2]|0)+(j*12|0)>>2]|0)+(g*12|0)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];g=g+1|0;e=c[d>>2]|0}e=c[k>>2]|0}j=j+1|0}Ue(0,3,41858,n);Ea(1)}while(0);s=b+40|0;c[s>>2]=o;i=b+52|0;e=c[i>>2]|0;if(e|0){GO(e);c[i>>2]=0;c[b+56>>2]=0}g=c[k>>2]|0;d:do if((g|0)>0){c[b+56>>2]=g;h=FO(g*68|0)|0;c[i>>2]=h;if(!h){Ue(0,3,41858,p);Ea(1)}e=0;while(1){if((e|0)==(g|0))break d;c[h+(e*68|0)+64>>2]=0;e=e+1|0}}while(0);l=c[m>>2]|0;if(!l)e=0;else{m=v+4|0;n=v+8|0;o=w+4|0;p=w+8|0;q=x+4|0;r=x+8|0;k=0;e=0;while(1){if((k|0)>=(c[s>>2]|0)){e=0;break a}d=0;while(1){if((d|0)>=(c[(c[t>>2]|0)+(k*12|0)+4>>2]|0))break;c[v>>2]=0;c[m>>2]=0;c[n>>2]=0;c[w>>2]=0;c[o>>2]=0;c[p>>2]=0;c[x>>2]=0;c[q>>2]=0;c[r>>2]=0;j=0;while(1){if((j|0)>=(l|0))break;g=c[u>>2]|0;i=c[t>>2]|0;e:do if((c[g+(j*132|0)+128>>2]|0)==(c[(c[i+(k*12|0)>>2]|0)+(d*12|0)+8>>2]|0)?(c[g+(j*132|0)+124>>2]|0)==(c[i+(k*12|0)+8>>2]|0):0){gg(y,+f[g+(j*132|0)>>2],+f[g+(j*132|0)+4>>2],+f[g+(j*132|0)+112>>2],+f[g+(j*132|0)+116>>2],(c[g+(j*132|0)+120>>2]|0)!=0);g=c[m>>2]|0;if(g>>>0<(c[n>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[m>>2]=g+20}else hg(v,y);Of(y);g=c[u>>2]|0;ig(y,+f[g+(j*132|0)+8>>2],+f[g+(j*132|0)+12>>2],0.0);g=c[o>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[o>>2]=(c[o>>2]|0)+12}else jg(w,y);g=0;while(1){if(g>>>0>=96)break e;h=(c[u>>2]|0)+(j*132|0)+16+g|0;i=c[q>>2]|0;if((i|0)==(c[r>>2]|0))kg(x,h);else{a[i>>0]=a[h>>0]|0;c[q>>2]=(c[q>>2]|0)+1}g=g+1|0}}while(0);j=j+1|0}c[z>>2]=((c[m>>2]|0)-(c[v>>2]|0)|0)/20|0;Ue(0,1,22532,z);j=c[t>>2]|0;c[b+60+(e<<2)>>2]=c[j+(k*12|0)+8>>2];j=c[j+(k*12|0)>>2]|0;em(c[b>>2]|0,v,x,w,c[j+(d*12|0)>>2]|0,c[j+(d*12|0)+4>>2]|0,e);Mf(x);lg(w);Nf(v);d=d+1|0;e=e+1|0}k=k+1|0}}}else{Ue(0,3,22451,e);e=-1}while(0);zb=A;return e|0}function gg(b,c,d,e,g,h){b=b|0;c=+c;d=+d;e=+e;g=+g;h=h|0;f[b>>2]=c;f[b+4>>2]=d;f[b+8>>2]=e;f[b+12>>2]=g;a[b+16>>0]=h&1;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/20|0)+1|0;g=ug(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/20|0;j=k<<1;vg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/20|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[g>>2]=(c[g>>2]|0)+20;wg(a,d);xg(d);zb=h;return}}function ig(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;f[a>>2]=b;f[a+4>>2]=c;f[a+8>>2]=d;return}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qg(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/12|0;j=k<<1;rg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/12|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[g>>2]=(c[g>>2]|0)+12;sg(a,d);tg(d);zb=h;return}}function kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=zb;zb=zb+32|0;e=i;f=b+4|0;g=(c[f>>2]|0)-(c[b>>2]|0)+1|0;h=mg(b)|0;if(h>>>0>>0)EO(b);else{j=c[b>>2]|0;l=(c[b+8>>2]|0)-j|0;k=l<<1;ng(e,l>>>0>>1>>>0?(k>>>0>>0?g:k):h,(c[f>>2]|0)-j|0,b+8|0);h=e+8|0;a[c[h>>2]>>0]=a[d>>0]|0;c[h>>2]=(c[h>>2]|0)+1;og(b,e);pg(e);zb=i;return}}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mg(a){a=a|0;return 2147483647}function ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=tB(b)|0;c[a>>2]=e;d=e+d|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+b;return}function og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-f)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-1|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function qg(a){a=a|0;return 357913941}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-12|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ug(a){a=a|0;return 214748364}function vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>214748364){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*20|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*20|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*20|0);return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;i=(c[g>>2]|0)+-20|0;h=d+-20|0;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[g>>2]=(c[g>>2]|0)+-20;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;f=a+8|0;i=b+12|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;c[b>>2]=c[g>>2];return}function xg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-20|0;c[d>>2]=e;Of(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+48|0;r=u+16|0;o=u+8|0;d=u;e=u+44|0;h=u+40|0;do if((a|0)!=0&(b|0)!=0){i=c[a+12>>2]|0;j=c[a+16>>2]|0;m=c[a+20>>2]|0;n=(m|0)==1;if(!n){d=Bg(b,i,j,m,e,h)|0;if(!d){d=-1;break}else{s=d;t=1}}else{s=b;t=0}Em(c[a>>2]|0,s,i,j)|0;j=fp(c[a>>2]|0)|0;j=(c[j+4>>2]|0)-(c[j>>2]|0)|0;d=(j|0)/20|0;i=a+48|0;c[i>>2]=d;a:do if(!j){e=c[a+56>>2]|0;b=a+52|0;d=0;while(1){if((d|0)>=(e|0))break a;c[(c[b>>2]|0)+(d*68|0)+60>>2]=-1;d=d+1|0}}else{j=a+44|0;b=c[j>>2]|0;if(b){GO(b);d=c[i>>2]|0}h=FO(d<<3)|0;c[j>>2]=h;if(!h){Ue(0,3,41858,o);Ea(1)}e=fp(c[a>>2]|0)|0;b:do if(n){h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k;f[o+(d<<3)+4>>2]=l}else{o=c[j>>2]|0;pe(b+184|0,k,l,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}else switch(m|0){case 5:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*1.5;f[o+(d<<3)+4>>2]=l*1.5}else{o=c[j>>2]|0;pe(b+184|0,k*1.5,l*1.5,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 2:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*2.0;f[o+(d<<3)+4>>2]=l*2.0}else{o=c[j>>2]|0;pe(b+184|0,k*2.0,l*2.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 4:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*3.0;f[o+(d<<3)+4>>2]=l*3.0}else{o=c[j>>2]|0;pe(b+184|0,k*3.0,l*3.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}default:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*4.0;f[o+(d<<3)+4>>2]=l*4.0}else{o=c[j>>2]|0;pe(b+184|0,k*4.0,l*4.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}}while(0);i=a+56|0;j=a+36|0;b=a+52|0;d=0;while(1){e=c[i>>2]|0;if((d|0)>=(e|0))break a;o=c[b>>2]|0;c[o+(d*68|0)+48>>2]=c[(c[j>>2]|0)+(d*12|0)+8>>2];c[o+(d*68|0)+60>>2]=-1;if(((c[o+(d*68|0)+64>>2]|0)==0?(p=hp(c[a>>2]|0)|0,q=cp(c[a>>2]|0)|0,(q|0)>=0):0)?(e=c[h>>2]|0,m=ep(c[a>>2]|0,q)|0,n=fp(c[a>>2]|0)|0,o=c[b>>2]|0,(zg(e,p,m,n,o+(d*68|0)|0,o+(d*68|0)+52|0)|0)==0):0){n=c[b>>2]|0;c[n+(d*68|0)+60>>2]=0;o=(c[p+4>>2]|0)-(c[p>>2]|0)>>3;c[n+(d*68|0)+56>>2]=o;c[n+(d*68|0)+48>>2]=c[a+60+(q<<2)>>2];l=+f[n+(d*68|0)+52>>2];c[r>>2]=d;c[r+4>>2]=o;c[r+8>>2]=o;g[r+16>>3]=l;Ue(0,1,22587,r)}d=d+1|0}}while(0);d=0;while(1){if((d|0)>=(e|0))break;c[(c[b>>2]|0)+(d*68|0)+64>>2]=0;d=d+1|0}if(!t)d=0;else{GO(s);d=0}}else{Ue(0,3,22543,d);d=-1}while(0);zb=u;return d|0}function zg(a,b,d,e,h,i){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=zb;zb=zb+240|0;k=u+208|0;j=u+200|0;s=u+224|0;p=u+212|0;q=u+96|0;t=u+192|0;r=u;l=c[b>>2]|0;b=(c[b+4>>2]|0)-l|0;m=b>>3;do if(m>>>0<4)b=-1;else{o=FO(b<<1)|0;if(!o){Ue(0,3,41858,j);Ea(1)}n=FO(m*24|0)|0;if(!n){Ue(0,3,41858,k);Ea(1)}e=c[e>>2]|0;j=c[d>>2]|0;b=0;while(1){if((b|0)==(m|0))break;d=c[l+(b<<3)>>2]|0;g[o+(b<<4)>>3]=+f[e+(d*20|0)>>2];g[o+(b<<4)+8>>3]=+f[e+(d*20|0)+4>>2];d=c[l+(b<<3)+4>>2]|0;g[n+(b*24|0)>>3]=+f[j+(d*12|0)>>2];g[n+(b*24|0)+8>>3]=+f[j+(d*12|0)+4>>2];g[n+(b*24|0)+16>>3]=0.0;b=b+1|0}c[p+8>>2]=m;c[p>>2]=o;c[p+4>>2]=n;b=a+8|0;if((Me(b,o,n,m,q)|0)<0){GO(o);GO(n);b=-1;break}b=Ee(b)|0;c[s>>2]=b;if(!b){GO(o);GO(n);b=-1;break}if((He(b,p,q,r,t)|0)<0){GO(o);GO(n);Fe(s)|0;b=-1}else{j=0;while(1){if((j|0)==3)break;b=0;while(1){if((b|0)==4)break;f[h+(j<<4)+(b<<2)>>2]=+g[r+(j<<5)+(b<<3)>>3];b=b+1|0}j=j+1|0}Fe(s)|0;GO(o);GO(n);v=+g[t>>3];f[i>>2]=v;b=(v>10.0)<<31>>31}}while(0);zb=u;return b|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)a=-1;else{c[b>>2]=c[a+52>>2];c[d>>2]=c[a+56>>2];a=0}return a|0}function Bg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;switch(d|0){case 1:{a=Cg(a,b,c,e,f)|0;break}case 5:{a=Dg(a,b,c,e,f)|0;break}case 2:{a=Eg(a,b,c,e,f)|0;break}case 4:{a=Fg(a,b,c,e,f)|0;break}default:a=Gg(a,b,c,e,f)|0}return a|0}function Cg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;c[e>>2]=b;c[f>>2]=d;b=B(d,b)|0;d=FO(b)|0;if(!d){Ue(0,3,41858,g);Ea(1)}else{_O(d|0,a|0,b|0)|0;zb=g;return d|0}return 0}function Dg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=zb;zb=zb+16|0;o=(e|0)/3|0;p=o<<1;c[g>>2]=p;n=(f|0)/3|0;m=n<<1;c[h>>2]=m;m=FO(B(m,p)|0)|0;if(!m){Ue(0,3,41858,q);Ea(1)}h=0;f=m;g=m;while(1){if((h|0)>=(n|0))break;l=h*3|0;i=0;j=b+(B(l+2|0,e)|0)|0;k=b+(B(l+1|0,e)|0)|0;l=b+(B(l,e)|0)|0;g=g+p|0;while(1){if((i|0)>=(o|0))break;u=l+1|0;s=k+1|0;a[f>>0]=(((d[u>>0]|0)>>>1&255)+(d[l>>0]|0)+((d[k>>0]|0)>>>1&255)+((d[s>>0]|0)>>>2&255)<<2>>>0)/9|0;r=j+1|0;a[g>>0]=((((d[s>>0]|0)>>>2)+((d[k>>0]|0)>>>1)&255)+(d[j>>0]|0)+((d[r>>0]|0)>>>1&255)<<2>>>0)/9|0;t=k+2|0;a[f+1>>0]=(((d[u>>0]|0)>>>1&255)+(d[l+2>>0]|0)+((d[s>>0]|0)>>>2&255)+((d[t>>0]|0)>>>1&255)<<2>>>0)/9|0;a[g+1>>0]=((((d[t>>0]|0)>>>1)+((d[s>>0]|0)>>>2)&255)+((d[r>>0]|0)>>>1&255)+(d[j+2>>0]|0)<<2>>>0)/9|0;i=i+1|0;j=j+3|0;k=k+3|0;l=l+3|0;f=f+2|0;g=g+2|0}h=h+1|0;f=f+p|0}zb=q;return m|0}function Eg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=(e|0)/2|0;c[g>>2]=m;l=(f|0)/2|0;c[h>>2]=l;k=FO(B(l,m)|0)|0;if(!k){Ue(0,3,41858,n);Ea(1)}g=0;f=k;while(1){if((g|0)>=(l|0))break;j=g<<1;h=0;i=b+(B(j,e)|0)|0;j=b+(B(j|1,e)|0)|0;while(1){if((h|0)>=(m|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)|0)>>>2;h=h+1|0;i=i+2|0;j=j+2|0;f=f+1|0}g=g+1|0}zb=n;return k|0}function Fg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=(e|0)/3|0;c[g>>2]=n;m=(f|0)/3|0;c[h>>2]=m;l=FO(B(m,n)|0)|0;if(!l){Ue(0,3,41858,o);Ea(1)}g=0;f=l;while(1){if((g|0)>=(m|0))break;k=g*3|0;h=0;i=b+(B(k,e)|0)|0;j=b+(B(k+2|0,e)|0)|0;k=b+(B(k+1|0,e)|0)|0;while(1){if((h|0)>=(n|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)|0)/9|0;h=h+1|0;i=i+3|0;j=j+3|0;k=k+3|0;f=f+1|0}g=g+1|0}zb=o;return l|0}function Gg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=(e|0)/4|0;c[g>>2]=o;n=(f|0)/4|0;c[h>>2]=n;m=FO(B(n,o)|0)|0;if(!m){Ue(0,3,41858,p);Ea(1)}g=0;f=m;while(1){if((g|0)>=(n|0))break;l=g<<2;h=0;i=b+(B(l,e)|0)|0;j=b+(B(l|3,e)|0)|0;k=b+(B(l|2,e)|0)|0;l=b+(B(l|1,e)|0)|0;while(1){if((h|0)>=(o|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[i+3>>0]|0)+(d[l>>0]|0)+(d[l+1>>0]|0)+(d[l+2>>0]|0)+(d[l+3>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[k+3>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)+(d[j+3>>0]|0)|0)/16|0;h=h+1|0;i=i+4|0;j=j+4|0;k=k+4|0;l=l+4|0;f=f+1|0}g=g+1|0}zb=p;return m|0}function Hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;g=i;do if(a){if(!b){e=rz(a,d)|0;break}f=Qy(a)|0;f=FO(f+2+(Qy(b)|0)|0)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{c[h>>2]=a;c[h+4>>2]=b;Hx(f,22627,h)|0;e=rz(f,d)|0;GO(f);break}}else e=0;while(0);zb=i;return e|0}function Ig(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;d=m;if(!(Kg(b)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,22633)|0,22676)|0,35e3)|0,53)|0,35007)|0,22771)|0;IE(d,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(d,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(d);QE(l,k)|0;ME(l)|0;ua()}i=Mg(Lg(b,0,0)|0)|0;j=Ng(Lg(b,0,0)|0)|0;k=Og(Lg(b,0,0)|0)|0;e=Pg(b)|0;l=a+12|0;c[l>>2]=e;b=(Qg(b)|0)+-1|0;e=a+16|0;c[e>>2]=b;Rg(a,B(c[l>>2]|0,b)|0);b=0;while(1){if(b>>>0>=(c[l>>2]|0)>>>0)break;f=j>>>b;g=k>>>b;d=0;while(1){h=c[e>>2]|0;if(d>>>0>=h>>>0)break;h=(B(h,b)|0)+d|0;cq((c[a>>2]|0)+(h<<5)|0,i,f,g,-1,1);d=d+1|0}b=b+1|0}zb=m;return}function Kg(a){a=a|0;return (c[a+8>>2]|0)-(c[a+4>>2]|0)>>5|0}function Lg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=zb;zb=zb+16|0;f=g;if((c[a+16>>2]|0)>>>0<=b>>>0){e=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,218)|0,35007)|0,22796)|0;IE(f,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);h=XF(f,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(f);QE(e,h)|0;ME(e)|0;ua()}e=c[a+20>>2]|0;if(e>>>0>d>>>0){h=(B(e,b)|0)+d|0;zb=g;return (c[a+4>>2]|0)+(h<<5)|0}else{h=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,219)|0,35007)|0,22816)|0;IE(f,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);g=XF(f,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(f);QE(h,g)|0;ME(h)|0;ua()}return 0}function Mg(a){a=a|0;return c[a>>2]|0}function Ng(a){a=a|0;return c[a+4>>2]|0}function Og(a){a=a|0;return c[a+8>>2]|0}function Pg(a){a=a|0;return c[a+16>>2]|0}function Qg(a){a=a|0;return c[a+20>>2]|0}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=d-f>>5;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b<<5)|0;while(1){if((d|0)==(a|0))break;f=d+-32|0;rq(f);d=f}c[g>>2]=a}}else Sg(a,b-e|0);return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>5>>>0>>0){d=(d-(c[a>>2]|0)>>5)+b|0;e=Ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>4;Vg(f,k>>5>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>5,a+8|0);Wg(f,b);Xg(a,f);Yg(f);break}}else Tg(a,b);while(0);zb=i;return}function Tg(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ug(a){a=a|0;return 134217727}function Vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>134217727){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<5)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<5)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<5);return}function Wg(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-32|0;bq((c[g>>2]|0)+-32|0,h);c[g>>2]=(c[g>>2]|0)+-32;d=h}e=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=e;e=b+8|0;h=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=h;e=a+8|0;h=b+12|0;f=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=f;c[b>>2]=c[g>>2];return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-32|0;c[d>>2]=e;rq(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((c[a+4>>2]|0)==(c[a>>2]|0)){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22835)|0,22676)|0,35e3)|0,72)|0,35007)|0,22877)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((Pg(b)|0)<=0){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,73)|0,35007)|0,22967)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if(b|0?NA(b,13184,13192,0)|0:0){f=a+12|0;g=a+16|0;e=0;while(1){if(e>>>0>=(c[f>>2]|0)>>>0)break;d=0;while(1){if(d>>>0>=(c[g>>2]|0)>>>0)break;k=_g(a,e,d)|0;j=Lg(b,e,d)|0;i=d+1|0;$g(0,k,j,Lg(b,e,i)|0);d=i}e=e+1|0}zb=h;return}k=Xf(Xf(PE(Xf(Xf(Xf(56032,23003)|0,22676)|0,35e3)|0,74)|0,35007)|0,23075)|0;IE(d,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(k,j)|0;ME(k)|0;ua()}function _g(a,b,d){a=a|0;b=b|0;d=d|0;d=(B(c[a+16>>2]|0,b)|0)+d|0;return (c[a>>2]|0)+(d<<5)|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;a=k;if((Mg(b)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23110)|0,22676)|0,35e3)|0,86)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(d)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23181)|0,22676)|0,35e3)|0,87)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(e)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23228)|0,22676)|0,35e3)|0,88)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(b)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23275)|0,22676)|0,35e3)|0,89)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(d)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23353)|0,22676)|0,35e3)|0,90)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(e)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23396)|0,22676)|0,35e3)|0,91)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23439)|0,22676)|0,35e3)|0,92)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23519)|0,22676)|0,35e3)|0,93)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(d)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23602)|0,22676)|0,35e3)|0,94)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(d)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23652)|0,22676)|0,35e3)|0,95)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}g=0;while(1){if(g>>>0>=(Og(d)|0)>>>0)break;h=bh(b,g)|0;i=ch(d,g)|0;j=ch(e,g)|0;a=0;while(1){if(a>>>0>=(Ng(d)|0)>>>0)break;f[h+(a<<2)>>2]=+f[i+(a<<2)>>2]-+f[j+(a<<2)>>2];a=a+1|0}g=g+1|0}zb=k;return}function ah(a){a=a|0;return c[a+16>>2]|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,119)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,124)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function dh(b){b=b|0;var d=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=10;c[b+12>>2]=10;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;a[b+28>>0]=1;Ig(b+32|0);f[b+52>>2]=0.0;f[b+56>>2]=10.0;d=b+60|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;f[b+88>>2]=9.0;sj(b+92|0);d=b+144|0;c[d>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;eh(b,5e3);fh(d,36);return}function eh(a,b){a=a|0;b=b|0;c[a+84>>2]=b;uh(a+60|0,b);return}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else nh(a,b-e|0);return}function gh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function hh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function ih(a){a=a|0;mh(a);return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;kh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;lh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function lh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-32|0;rq(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ph(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;qh(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);rh(f,b);sh(a,f);th(f);break}}else oh(a,b);while(0);zb=i;return}function oh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function ph(a){a=a|0;return 1073741823}function qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function rh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function th(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((((c[a+8>>2]|0)-e|0)/36|0)>>>0>>0){vh(d,b,((c[a+4>>2]|0)-e|0)/36|0,a+8|0);wh(a,d);xh(d)}zb=f;return}function vh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>119304647){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*36|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*36|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*36|0);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-36|0)*36|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-36|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yh(a){a=a|0;gh(a+144|0);tj(a+92|0);hh(a+72|0);hh(a+60|0);ih(a+32|0);jh(a+16|0);return} +function aI(){var b=0,d=0;if((a[54864]|0)==0?nB(54864)|0:0){d=53568;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53856);pB(54864)}nO(53568,49685)|0;nO(53580,49693)|0;nO(53592,49702)|0;nO(53604,49708)|0;nO(53616,49714)|0;nO(53628,49718)|0;nO(53640,49723)|0;nO(53652,49728)|0;nO(53664,49735)|0;nO(53676,49745)|0;nO(53688,49753)|0;nO(53700,49762)|0;nO(53712,49771)|0;nO(53724,49775)|0;nO(53736,49779)|0;nO(53748,49783)|0;nO(53760,49714)|0;nO(53772,49787)|0;nO(53784,49791)|0;nO(53796,49795)|0;nO(53808,49799)|0;nO(53820,49803)|0;nO(53832,49807)|0;nO(53844,49811)|0;return}function bI(){var b=0,d=0;if((a[54880]|0)==0?nB(54880)|0:0){d=53856;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54024);pB(54880)}nO(53856,49815)|0;nO(53868,49822)|0;nO(53880,49829)|0;nO(53892,49837)|0;nO(53904,49847)|0;nO(53916,49856)|0;nO(53928,49863)|0;nO(53940,49872)|0;nO(53952,49876)|0;nO(53964,49880)|0;nO(53976,49884)|0;nO(53988,49888)|0;nO(54e3,49892)|0;nO(54012,49896)|0;return}function cI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function dI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function eI(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;s=z+12|0;r=z+8|0;w=z+4|0;x=z;IE(s,g);t=XF(s,56736)|0;YF(s);c[h>>2]=0;u=t+8|0;m=0;a:while(1){l=c[e>>2]|0;if(!((j|0)!=(k|0)&(m|0)==0))break;n=l;if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;o=1;q=0}else{o=0;q=n}}else{l=0;o=1;q=n}p=c[f>>2]|0;m=p;do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else n=cg(a[n>>0]|0)|0;if(!(_f(n,Wf()|0)|0))if(o)break;else{y=63;break a}else{c[f>>2]=0;m=0;y=15;break}}else y=15;while(0);if((y|0)==15){y=0;if(o){y=63;break}else p=0}b:do if((Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0)<<24>>24==37){p=j+1|0;if((p|0)==(k|0)){y=63;break a}n=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{j=j+2|0;if((j|0)==(k|0)){y=63;break a}o=n;l=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0;j=p;break}default:{o=0;l=n}}p=c[(c[d>>2]|0)+36>>2]|0;c[w>>2]=q;c[x>>2]=m;c[r>>2]=c[w>>2];c[s>>2]=c[x>>2];q=Qb[p&15](d,r,s,g,h,i,l,o)|0;c[e>>2]=q;j=j+2|0}else{m=a[j>>0]|0;if(m<<24>>24>-1?(v=c[u>>2]|0,b[v+(m<<24>>24<<1)>>1]&8192):0){do{j=j+1|0;if((j|0)==(k|0)){j=k;break}m=a[j>>0]|0;if(m<<24>>24<=-1)break}while((b[v+(m<<24>>24<<1)>>1]&8192)!=0);while(1){if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}do if(p){m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))m=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else m=cg(a[m>>0]|0)|0;if(!(_f(m,Wf()|0)|0))if(n)break;else break b;else{c[f>>2]=0;y=42;break}}else y=42;while(0);if((y|0)==42){y=0;if(n)break b;else p=0}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(b[(c[u>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}}}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;q=Ib[c[(c[t>>2]|0)+12>>2]&63](t,m&255)|0;if(q<<24>>24!=(Ib[c[(c[t>>2]|0)+12>>2]&63](t,a[j>>0]|0)|0)<<24>>24){c[h>>2]=4;break}m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}j=j+1|0}while(0);m=c[h>>2]|0}if((y|0)==63)c[h>>2]=4;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[f>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[m>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(n)break;else{y=78;break}else{c[f>>2]=0;y=76;break}}else y=76;while(0);if((y|0)==76?n:0)y=78;if((y|0)==78)c[h>>2]=c[h>>2]|2;zb=z;return l|0}function fI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function gI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function hI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function iI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function lI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);i=c[f>>2]|0;do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else break a;else{c[f>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){i=0;break}else i=0}d=c[e>>2]|0;h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if((d&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(d<<24>>24<<1)>>1]&8192))break;d=c[e>>2]|0;h=d+12|0;i=c[h>>2]|0;if((i|0)==(c[d+16>>2]|0))Gb[c[(c[d>>2]|0)+40>>2]&127](d)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}}d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else{k=41;break}else{c[f>>2]=0;k=39;break}}else k=39;while(0);if((k|0)==39?h:0)k=41;if((k|0)==41)c[g>>2]=c[g>>2]|2;return}function mI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+11>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+12+11>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(FG(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function nI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function oI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function pI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function qI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function rI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;i=1;break}else{i=(c[d>>2]|0)==0;break}}else i=1;while(0);h=c[e>>2]|0;do if(h){b=c[h+12>>2]|0;if((b|0)==(c[h+16>>2]|0))b=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(i){j=h;k=17;break}else{k=16;break}else{c[e>>2]=0;k=14;break}}else k=14;while(0);if((k|0)==14)if(i)k=16;else{j=0;k=17}a:do if((k|0)==16)c[f>>2]=c[f>>2]|6;else if((k|0)==17){b=c[d>>2]|0;h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if((Jb[c[(c[g>>2]|0)+36>>2]&63](g,b&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}b=c[d>>2]|0;h=b+12|0;i=c[h>>2]|0;if((i|0)==(c[b+16>>2]|0))Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;h=1;break}else{h=(c[d>>2]|0)==0;break}}else h=1;while(0);do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(h)break a;else break;else{c[e>>2]=0;k=38;break}}else k=38;while(0);if((k|0)==38?!h:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function sI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[d>>2]|0;do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[j>>0]|0)|0;if(_f(i,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);j=c[e>>2]|0;do if(j){i=c[j+12>>2]|0;if((i|0)==(c[j+16>>2]|0))i=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else i=cg(a[i>>0]|0)|0;if(!(_f(i,Wf()|0)|0))if(k){q=17;break}else{q=16;break}else{c[e>>2]=0;q=14;break}}else q=14;while(0);if((q|0)==14)if(k)q=16;else{j=0;q=17}a:do if((q|0)==16){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==17){i=c[d>>2]|0;k=c[i+12>>2]|0;if((k|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[k>>0]|0)|0;k=i&255;if(k<<24>>24>-1?(p=g+8|0,b[(c[p>>2]|0)+(i<<24>>24<<1)>>1]&2048):0){i=(Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24;k=c[d>>2]|0;l=k+12|0;m=c[l>>2]|0;if((m|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=m+1;cg(a[m>>0]|0)|0}n=j;m=j;while(1){i=i+-48|0;o=h+-1|0;j=c[d>>2]|0;do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[k>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;l=1;break}else{l=(c[d>>2]|0)==0;break}}else l=1;while(0);if(m){j=c[m+12>>2]|0;if((j|0)==(c[m+16>>2]|0))j=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;j=1;n=0;m=0}else j=0}else{j=1;m=0}k=c[d>>2]|0;if(!((h|0)>1&(l^j)))break;j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;k=j&255;if(k<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=(i*10|0)+((Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24)|0;j=c[d>>2]|0;k=j+12|0;l=c[k>>2]|0;if((l|0)==(c[j+16>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=l+1;cg(a[l>>0]|0)|0}h=o}do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);do if(n){j=c[n+12>>2]|0;if((j|0)==(c[n+16>>2]|0))j=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else j=cg(a[j>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(k)break a;else break;else{c[e>>2]=0;q=63;break}}else q=63;while(0);if((q|0)==63?!k:0)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function tI(a){a=a|0;CF(a);return}function uI(a){a=a|0;CF(a);SA(a);return}function vI(a){a=a|0;return 2}function wI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=PI(a,j,i,e,f,g,13152,13184)|0;zb=h;return g|0}function xI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+8+3>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+((o?c[n+4>>2]|0:e&255)<<2)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=PI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function yI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];NI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function zI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];OI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function AI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];_I(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function BI(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56768)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];NI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];OI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];QI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=PI(b,j,k,f,g,h,12976,13008)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=PI(b,j,k,f,g,h,13008,13040)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];RI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];SI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];TI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];UI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];VI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];WI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];XI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=PI(b,j,k,f,g,h,13040,13084)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=PI(b,j,k,f,g,h,13088,13108)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];YI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=PI(b,j,k,f,g,h,13120,13152)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];ZI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];_I(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];$I(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];aJ(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function CI(b){b=b|0;if((a[54952]|0)==0?nB(54952)|0:0){MI();c[14233]=54352;pB(54952)}return c[14233]|0}function DI(b){b=b|0;if((a[54936]|0)==0?nB(54936)|0:0){LI();c[14232]=54064;pB(54936)}return c[14232]|0}function EI(b){b=b|0;if((a[54920]|0)==0?nB(54920)|0:0){KI();c[14231]=54032;pB(54920)}return c[14231]|0}function FI(b){b=b|0;if((a[54912]|0)==0?nB(54912)|0:0){c[14228]=0;c[14229]=0;c[14230]=0;tO(56912,17648,JI(17648)|0);pB(54912)}return 56912}function GI(b){b=b|0;if((a[54904]|0)==0?nB(54904)|0:0){c[14225]=0;c[14226]=0;c[14227]=0;tO(56900,17600,JI(17600)|0);pB(54904)}return 56900}function HI(b){b=b|0;if((a[54896]|0)==0?nB(54896)|0:0){c[14222]=0;c[14223]=0;c[14224]=0;tO(56888,17564,JI(17564)|0);pB(54896)}return 56888}function II(b){b=b|0;if((a[54888]|0)==0?nB(54888)|0:0){c[14219]=0;c[14220]=0;c[14221]=0;tO(56876,17528,JI(17528)|0);pB(54888)}return 56876}function JI(a){a=a|0;return ly(a)|0}function KI(){var b=0,d=0;if((a[54928]|0)==0?nB(54928)|0:0){d=54032;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54056);pB(54928)}AO(54032,17732)|0;AO(54044,17744)|0;return}function LI(){var b=0,d=0;if((a[54944]|0)==0?nB(54944)|0:0){d=54064;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54352);pB(54944)}AO(54064,17756)|0;AO(54076,17788)|0;AO(54088,17824)|0;AO(54100,17848)|0;AO(54112,17872)|0;AO(54124,17888)|0;AO(54136,17908)|0;AO(54148,17928)|0;AO(54160,17956)|0;AO(54172,17996)|0;AO(54184,18028)|0;AO(54196,18064)|0;AO(54208,18100)|0;AO(54220,18116)|0;AO(54232,18132)|0;AO(54244,18148)|0;AO(54256,17872)|0;AO(54268,18164)|0;AO(54280,18180)|0;AO(54292,18196)|0;AO(54304,18212)|0;AO(54316,18228)|0;AO(54328,18244)|0;AO(54340,18260)|0;return}function MI(){var b=0,d=0;if((a[54960]|0)==0?nB(54960)|0:0){d=54352;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54520);pB(54960)}AO(54352,18276)|0;AO(54364,18304)|0;AO(54376,18332)|0;AO(54388,18364)|0;AO(54400,18404)|0;AO(54412,18440)|0;AO(54424,18468)|0;AO(54436,18504)|0;AO(54448,18520)|0;AO(54460,18536)|0;AO(54472,18552)|0;AO(54484,18568)|0;AO(54496,18584)|0;AO(54508,18600)|0;return}function NI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function OI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function PI(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+16|0;q=v+12|0;p=v+8|0;s=v+4|0;t=v;IE(q,e);r=XF(q,56768)|0;YF(q);c[f>>2]=0;k=0;a:while(1){j=c[b>>2]|0;if(!((h|0)!=(i|0)&(k|0)==0))break;l=j;if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;m=1;o=0}else{m=0;o=l}}else{j=0;m=1;o=l}n=c[d>>2]|0;k=n;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else l=jE(c[l>>2]|0)|0;if(!(JE(l,iE()|0)|0))if(m)break;else{u=60;break a}else{c[d>>2]=0;k=0;u=15;break}}else u=15;while(0);if((u|0)==15){u=0;if(m){u=60;break}else n=0}b:do if((Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0)<<24>>24==37){n=h+4|0;if((n|0)==(i|0)){u=60;break a}l=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{h=h+8|0;if((h|0)==(i|0)){u=60;break a}m=l;j=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0;h=n;break}default:{m=0;j=l}}n=c[(c[a>>2]|0)+36>>2]|0;c[s>>2]=o;c[t>>2]=k;c[p>>2]=c[s>>2];c[q>>2]=c[t>>2];o=Qb[n&15](a,p,q,e,f,g,j,m)|0;c[b>>2]=o;h=h+8|0}else{if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0)){l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;o=Ib[c[(c[r>>2]|0)+28>>2]&63](r,k)|0;if((o|0)!=(Ib[c[(c[r>>2]|0)+28>>2]&63](r,c[h>>2]|0)|0)){c[f>>2]=4;break}k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}h=h+4|0;break}do{h=h+4|0;if((h|0)==(i|0)){h=i;break}}while(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0);while(1){if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else break b;else{c[d>>2]=0;u=40;break}}else u=40;while(0);if((u|0)==40){u=0;if(l)break b;else n=0}l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,k)|0))break b;k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}}}while(0);k=c[f>>2]|0}if((u|0)==60)c[f>>2]=4;if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}h=c[d>>2]|0;do if(h){k=c[h+12>>2]|0;if((k|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[k>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(l)break;else{u=75;break}else{c[d>>2]=0;u=73;break}}else u=73;while(0);if((u|0)==73?l:0)u=75;if((u|0)==75)c[f>>2]=c[f>>2]|2;zb=v;return j|0}function QI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function RI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function SI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function TI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function UI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function VI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function WI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(!(Jb[c[(c[f>>2]|0)+12>>2]&63](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break;else{i=40;break}else{c[d>>2]=0;i=38;break}}else i=38;while(0);if((i|0)==38?g:0)i=40;if((i|0)==40)c[e>>2]=c[e>>2]|2;return}function XI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+8+3>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+20+3>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(gH(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function YI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function ZI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function _I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function $I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function aJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if((Jb[c[(c[f>>2]|0)+52>>2]&63](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function bJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[h>>2]|0)|0;if(JE(g,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(i){n=17;break}else{n=16;break}else{c[b>>2]=0;n=14;break}}else n=14;while(0);if((n|0)==14)if(i)n=16;else{h=0;n=17}a:do if((n|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((n|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[i>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Jb[c[(c[e>>2]|0)+52>>2]&63](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0))Gb[c[(c[i>>2]|0)+40>>2]&127](i)|0;else{c[j>>2]=k+4;jE(c[k>>2]|0)|0}l=h;k=h;while(1){g=g+-48|0;m=f+-1|0;h=c[a>>2]|0;do if(h){i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[i>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;h=1;l=0;k=0}else h=0}else{h=1;k=0}i=c[a>>2]|0;if(!((f|0)>1&(j^h)))break;h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,h)|0))break a;g=(g*10|0)+((Jb[c[(c[e>>2]|0)+52>>2]&63](e,h,0)|0)<<24>>24)|0;h=c[a>>2]|0;i=h+12|0;j=c[i>>2]|0;if((j|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[i>>2]=j+4;jE(c[j>>2]|0)|0}f=m}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(l){h=c[l+12>>2]|0;if((h|0)==(c[l+16>>2]|0))h=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else h=jE(c[h>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(i)break a;else break;else{c[b>>2]=0;n=61;break}}else n=61;while(0);if((n|0)==61?!i:0)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function cJ(a){a=a|0;hJ(a+8|0);CF(a);return}function dJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function eJ(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=zb;zb=zb+112|0;e=j;f=j+100|0;c[f>>2]=e+100;fJ(b+8|0,e,f,g,h,i);i=c[f>>2]|0;h=e;e=c[d>>2]|0;while(1){if((h|0)==(i|0))break;f=a[h>>0]|0;if(!e)e=0;else{b=e+24|0;g=c[b>>2]|0;if((g|0)==(c[e+28>>2]|0)){d=c[(c[e>>2]|0)+52>>2]|0;f=cg(f)|0;f=Ib[d&63](e,f)|0}else{c[b>>2]=g+1;a[g>>0]=f;f=cg(f)|0}d=_f(f,Wf()|0)|0;e=d?0:e}h=h+1|0}zb=j;return e|0}function fJ(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;i=l;a[i>>0]=37;j=i+1|0;a[j>>0]=g;k=i+2|0;a[k>>0]=h;a[i+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}k=gJ(d,c[e>>2]|0)|0;k=d+(Sa(d|0,k|0,i|0,f|0,c[b>>2]|0)|0)|0;c[e>>2]=k;zb=l;return}function gJ(a,b){a=a|0;b=b|0;return b-a|0}function hJ(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(_F()|0))Vy(c[a>>2]|0);return}function iJ(a){a=a|0;hJ(a+8|0);CF(a);return}function jJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function kJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=zb;zb=zb+416|0;d=i;e=i+400|0;c[e>>2]=d+400;lJ(a+8|0,d,e,f,g,h);h=c[e>>2]|0;g=d;d=c[b>>2]|0;while(1){if((g|0)==(h|0))break;e=c[g>>2]|0;if(!d)d=0;else{a=d+24|0;f=c[a>>2]|0;if((f|0)==(c[d+28>>2]|0)){b=c[(c[d>>2]|0)+52>>2]|0;e=jE(e)|0;e=Ib[b&63](d,e)|0}else{c[a>>2]=f+4;c[f>>2]=e;e=jE(e)|0}b=JE(e,iE()|0)|0;d=b?0:d}g=g+4|0}zb=i;return d|0}function lJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+128|0;k=h;l=h+116|0;i=h+104|0;j=h+112|0;c[l>>2]=k+100;fJ(a,k,l,e,f,g);e=i;c[e>>2]=0;c[e+4>>2]=0;c[j>>2]=k;e=mJ(b,c[d>>2]|0)|0;a=ez(c[a>>2]|0)|0;e=Sz(b,j,e,i)|0;if(a|0)ez(a)|0;if((e|0)==-1)nJ(0);else{c[d>>2]=b+(e<<2);zb=h;return}}function mJ(a,b){a=a|0;b=b|0;return b-a>>2|0}function nJ(a){a=a|0;ua()}function oJ(a){a=a|0;CF(a);return}function pJ(a){a=a|0;CF(a);SA(a);return}function qJ(a){a=a|0;return 127}function rJ(a){a=a|0;return 127}function sJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function tJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function uJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function vJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function wJ(a){a=a|0;return 0}function xJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function yJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function zJ(a){a=a|0;CF(a);return}function AJ(a){a=a|0;CF(a);SA(a);return}function BJ(a){a=a|0;return 127}function CJ(a){a=a|0;return 127}function DJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function EJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function FJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function GJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function HJ(a){a=a|0;return 0}function IJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function JJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function KJ(a){a=a|0;CF(a);return}function LJ(a){a=a|0;CF(a);SA(a);return}function MJ(a){a=a|0;return 2147483647}function NJ(a){a=a|0;return 2147483647}function OJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function PJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function SJ(a){a=a|0;return 0}function TJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function UJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function VJ(a){a=a|0;CF(a);return}function WJ(a){a=a|0;CF(a);SA(a);return}function XJ(a){a=a|0;return 2147483647}function YJ(a){a=a|0;return 2147483647}function ZJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function _J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function $J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function aK(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function bK(a){a=a|0;return 0}function cK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function dK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function eK(a){a=a|0;CF(a);return}function fK(a){a=a|0;CF(a);SA(a);return}function gK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+256|0;n=v+240|0;q=v+216|0;m=v+112|0;u=v+232|0;p=v+228|0;s=v+224|0;j=v+250|0;w=v+220|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56736)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(jK(d,n,f,s,l,h,j,b,u,p,m+100|0)|0){Kb[c[(c[b>>2]|0)+32>>2]&15](b,50465,50475,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>98){b=FO(b+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+10|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=a[j>>0]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((a[b>>0]|0)==f<<24>>24)break;b=b+1|0}a[g>>0]=a[50465+(b-m)>>0]|0;j=j+1|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function hK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+128|0;j=s+120|0;b=s;r=s+112|0;m=s+108|0;p=s+100|0;k=s+124|0;n=s+104|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56736)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(jK(d,j,f,p,g,h,k,l,r,m,b+100|0)|0){b=i+11|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;a[j>>0]=0;bg(f,j);c[i+4>>2]=0}else{a[j>>0]=0;bg(i,j);a[b>>0]=0}if(a[k>>0]|0)sO(i,Ib[c[(c[l>>2]|0)+28>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+28>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-1|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((a[b>>0]|0)!=k<<24>>24)break;b=b+1|0}kK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[g>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function iK(a){a=a|0;return}function jK(e,f,g,h,i,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=zb;zb=zb+512|0;I=Y+488|0;O=Y;X=Y+480|0;Q=Y+472|0;J=Y+468|0;K=Y+496|0;L=Y+493|0;M=Y+492|0;S=Y+456|0;T=Y+444|0;U=Y+432|0;V=Y+420|0;W=Y+408|0;N=Y+404|0;R=Y+400|0;c[I>>2]=o;c[X>>2]=O;c[X+4>>2]=145;c[Q>>2]=O;c[J>>2]=O+400;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[S+(o<<2)>>2]=0;o=o+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[T+(o<<2)>>2]=0;o=o+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[U+(o<<2)>>2]=0;o=o+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[V+(o<<2)>>2]=0;o=o+1|0}c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[W+(o<<2)>>2]=0;o=o+1|0}mK(g,h,K,L,M,S,T,U,V,N);c[n>>2]=c[m>>2];B=l+8|0;C=U+11|0;D=U+4|0;E=V+11|0;F=V+4|0;G=S+11|0;H=S+4|0;v=(i&512|0)!=0;w=T+11|0;x=K+3|0;y=T+4|0;z=W+11|0;A=W+4|0;O=0;u=0;a:while(1){if(u>>>0>=4){P=243;break}o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);g=c[f>>2]|0;do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h){t=g;break}else{P=243;break a}else{c[f>>2]=0;P=31;break}}else P=31;while(0);if((P|0)==31){P=0;if(h){P=243;break}else t=0}b:do switch(a[K+u>>0]|0){case 1:{if((u|0)==3)o=O;else{o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=45;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){P=45;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);P=47}break}case 0:{if((u|0)==3)o=O;else P=47;break}case 3:{o=a[C>>0]|0;o=o<<24>>24<0?c[D>>2]|0:o&255;l=a[E>>0]|0;l=l<<24>>24<0?c[F>>2]|0:l&255;if((o|0)==(0-l|0))o=O;else{i=(o|0)==0;o=c[e>>2]|0;g=c[o+12>>2]|0;h=(g|0)==(c[o+16>>2]|0);if(i|(l|0)==0){if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;o=o&255;if(i){if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=o<<24>>24){o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O;break b}if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)!=o<<24>>24){a[k>>0]=1;o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[e>>2]|0;h=g+12|0;l=c[h>>2]|0;i=(l|0)==(c[g+16>>2]|0);if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)==(o&255)<<24>>24){if(i)Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=l+1;cg(a[l>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(i)o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[l>>0]|0)|0;if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=(o&255)<<24>>24){P=105;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O}break}case 2:{if(u>>>0<2|(O|0)!=0){o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;l=h?g:T;i=l;if(!u)h=i;else{s=i;P=110}}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){o=0;break b}o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;s=h?g:T;l=s;P=110}c:do if((P|0)==110){P=0;if((d[K+(u+-1)>>0]|0)<2){i=l+(h?c[y>>2]|0:o&255)|0;h=s;while(1){p=h;if((i|0)==(p|0))break;q=a[p>>0]|0;if(q<<24>>24<=-1)break;if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192))break;h=p+1|0}q=h-s|0;p=a[z>>0]|0;r=p<<24>>24<0;i=c[A>>2]|0;p=p&255;if(q>>>0<=(r?i:p)>>>0){Z=(c[W>>2]|0)+i|0;i=W+p|0;p=r?Z:i;i=r?Z+(0-q)|0:i+(0-q)|0;while(1){if((i|0)==(p|0))break c;if((a[i>>0]|0)!=(a[l>>0]|0)){h=s;break c}l=l+1|0;i=i+1|0}}else h=s}else h=s}while(0);i=h;h=t;d:while(1){Z=o<<24>>24<0;if((i|0)==((Z?g:T)+(Z?c[y>>2]|0:o&255)|0))break;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else break d;else{c[f>>2]=0;P=136;break}}else P=136;while(0);if((P|0)==136){P=0;if(g)break;else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}i=i+1|0;o=a[w>>0]|0;g=c[T>>2]|0;h=l}if(v?(Z=a[w>>0]|0,t=Z<<24>>24<0,(i|0)!=((t?c[T>>2]|0:T)+(t?c[y>>2]|0:Z&255)|0)):0){P=148;break a}else o=O;break}case 4:{i=0;l=t;o=t;e:while(1){g=c[e>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(l){g=c[l+12>>2]|0;if((g|0)==(c[l+16>>2]|0))g=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(h){p=l;break}else{l=o;break e}else{c[f>>2]=0;o=0;P=162;break}}else P=162;while(0);if((P|0)==162){P=0;if(h){l=o;break}else p=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;h=g&255;if(h<<24>>24>-1?(b[(c[B>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0:0){g=c[n>>2]|0;if((g|0)==(c[I>>2]|0)){nK(m,n,I);g=c[n>>2]|0}c[n>>2]=g+1;a[g>>0]=h;g=i+1|0}else{Z=a[G>>0]|0;if(!((a[M>>0]|0)==h<<24>>24&(i|0?((Z<<24>>24<0?c[H>>2]|0:Z&255)|0)!=0:0))){l=o;break}g=c[Q>>2]|0;if((g|0)==(c[J>>2]|0)){oK(X,Q,J);g=c[Q>>2]|0}c[Q>>2]=g+4;c[g>>2]=i;g=0}h=c[e>>2]|0;l=h+12|0;i=c[l>>2]|0;if((i|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[l>>2]=i+1;cg(a[i>>0]|0)|0}i=g;l=p}o=c[Q>>2]|0;if(i|0?(c[X>>2]|0)!=(o|0):0){if((o|0)==(c[J>>2]|0)){oK(X,Q,J);o=c[Q>>2]|0}c[Q>>2]=o+4;c[o>>2]=i}f:do if((c[N>>2]|0)>0){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(l){o=c[l+12>>2]|0;if((o|0)==(c[l+16>>2]|0))o=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g)break;else{P=204;break a}else{c[f>>2]=0;P=198;break}}else P=198;while(0);if((P|0)==198){P=0;if(g){P=204;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[L>>0]|0)!=(o&255)<<24>>24){P=204;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l;while(1){if((c[N>>2]|0)<=0)break f;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{P=230;break a}else{c[f>>2]=0;P=223;break}}else P=223;while(0);if((P|0)==223){P=0;if(g){P=230;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=230;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&2048)){P=230;break a}if((c[n>>2]|0)==(c[I>>2]|0))nK(m,n,I);o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[n>>2]|0;c[n>>2]=g+1;a[g>>0]=o;c[N>>2]=(c[N>>2]|0)+-1;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l}}while(0);if((c[n>>2]|0)==(c[m>>2]|0)){P=241;break a}else o=O;break}default:o=O}while(0);g:do if((P|0)==47){P=0;h=t;while(1){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{o=O;break g}else{c[f>>2]=0;P=61;break}}else P=61;while(0);if((P|0)==61){P=0;if(g){o=O;break g}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){o=O;break g}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=O;break g}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);h=l}}while(0);O=o;u=u+1|0}h:do if((P|0)==45){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==105){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==148){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==204){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==230){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==241){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==243){i:do if(O|0){i=O+11|0;p=O+4|0;l=1;j:while(1){o=a[i>>0]|0;if(o<<24>>24<0)o=c[p>>2]|0;else o=o&255;if(l>>>0>=o>>>0)break i;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);o=c[f>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h)break;else break j;else{c[f>>2]=0;P=262;break}}else P=262;while(0);if((P|0)==262?(P=0,h):0)break;o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)<0)g=c[O>>2]|0;else g=O;if((a[g+l>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}l=l+1|0}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);g=c[X>>2]|0;o=c[Q>>2]|0;if((g|0)!=(o|0)){c[R>>2]=0;kG(S,g,o,R);if(!(c[R>>2]|0)){g=1;break}else{c[j>>2]=c[j>>2]|4;g=0;break}}else g=1}while(0);jO(W);jO(V);jO(U);jO(T);jO(S);o=c[X>>2]|0;c[X>>2]=0;if(o|0)Sb[c[X+4>>2]&255](o);zb=Y;return g|0}function kK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;j=d;m=o;n=b+11|0;h=a[n>>0]|0;f=h<<24>>24<0;if(f){l=c[b+4>>2]|0;i=(c[b+8>>2]&2147483647)+-1|0}else{l=h&255;i=10}k=e-j|0;do if(k|0){if(f){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=h&255}if(lK(d,g,g+f|0)|0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;ag(m,d,e);n=a[m+11>>0]|0;l=n<<24>>24<0;rO(b,l?c[m>>2]|0:m,l?c[m+4>>2]|0:n&255)|0;jO(m);break}if((i-l|0)>>>0>>0)qO(b,i,l+k-i|0,l,l,0,0);if((a[n>>0]|0)<0)h=c[b>>2]|0;else h=b;g=e+(l-j)|0;f=h+l|0;while(1){if((d|0)==(e|0))break;bg(f,d);f=f+1|0;d=d+1|0}a[m>>0]=0;bg(h+g|0,m);d=l+k|0;if((a[n>>0]|0)<0){c[b+4>>2]=d;break}else{a[n>>0]=d;break}}while(0);zb=o;return b|0}function lK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function mK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;o=zb;zb=zb+16|0;m=o+12|0;n=o;if(b){d=XF(d,56968)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}else{d=XF(d,56960)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}c[l>>2]=b;zb=o;return}function nK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?1:g):-1;h=(c[b>>2]|0)-h|0;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+h;c[d>>2]=(c[a>>2]|0)+g;return}function oK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function pK(a){a=a|0;CF(a);return}function qK(a){a=a|0;CF(a);SA(a);return}function rK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+592|0;n=v+512|0;q=v+552|0;m=v+112|0;u=v+568|0;p=v+564|0;s=v+560|0;j=v+576|0;w=v+556|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56768)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(tK(d,n,f,s,l,h,j,b,u,p,m+400|0)|0){Kb[c[(c[b>>2]|0)+48>>2]&15](b,50575,50585,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>392){b=FO((b>>>2)+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+40|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=c[j>>2]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((c[b>>2]|0)==(f|0))break;b=b+4|0}a[g>>0]=a[50575+(b-m>>2)>>0]|0;j=j+4|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function sK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+432|0;j=s+424|0;b=s;r=s+416|0;m=s+408|0;p=s+400|0;k=s+428|0;n=s+404|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56768)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(tK(d,j,f,p,g,h,k,l,r,m,b+400|0)|0){b=i+8+3|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;c[j>>2]=0;JF(f,j);c[i+4>>2]=0}else{c[j>>2]=0;JF(i,j);a[b>>0]=0}if(a[k>>0]|0)DO(i,Ib[c[(c[l>>2]|0)+44>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+44>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-4|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((c[b>>2]|0)!=(k|0))break;b=b+4|0}uK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[g>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function tK(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;X=zb;zb=zb+512|0;H=X+496|0;N=X;W=X+488|0;P=X+480|0;I=X+476|0;J=X+500|0;K=X+472|0;L=X+468|0;R=X+456|0;S=X+444|0;T=X+432|0;U=X+420|0;V=X+408|0;M=X+404|0;Q=X+400|0;c[H>>2]=n;c[W>>2]=N;c[W+4>>2]=145;c[P>>2]=N;c[I>>2]=N+400;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[R+(n<<2)>>2]=0;n=n+1|0}c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[S+(n<<2)>>2]=0;n=n+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[T+(n<<2)>>2]=0;n=n+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[U+(n<<2)>>2]=0;n=n+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[V+(n<<2)>>2]=0;n=n+1|0}xK(f,g,J,K,L,R,S,T,U,M);c[m>>2]=c[l>>2];B=T+8+3|0;C=T+4|0;D=U+8+3|0;E=U+4|0;F=R+11|0;G=R+4|0;v=(h&512|0)!=0;w=S+8+3|0;x=J+3|0;y=S+4|0;z=V+8+3|0;A=V+4|0;N=0;u=0;a:while(1){if(u>>>0>=4){O=239;break}n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g){t=f;break}else{O=239;break a}else{c[e>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(g){O=239;break}else t=0}b:do switch(a[J+u>>0]|0){case 1:{if((u|0)==3)n=N;else{n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){O=44;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);O=46}break}case 0:{if((u|0)==3)n=N;else O=46;break}case 3:{n=a[B>>0]|0;n=n<<24>>24<0?c[C>>2]|0:n&255;h=a[D>>0]|0;h=h<<24>>24<0?c[E>>2]|0:h&255;if((n|0)==(0-h|0))n=N;else{o=(n|0)==0;n=c[b>>2]|0;f=c[n+12>>2]|0;g=(f|0)==(c[n+16>>2]|0);if(o|(h|0)==0){if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(o){if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){a[j>>0]=1;n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;o=(h|0)==(c[f+16>>2]|0);if((n|0)==(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){if(o)Gb[c[(c[f>>2]|0)+40>>2]&127](f)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[h>>2]|0)|0;if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){O=103;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(u>>>0<2|(N|0)!=0){f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;if(u)O=108}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){n=0;break b}f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;O=108}c:do if((O|0)==108){O=0;if((d[J+(u+-1)>>0]|0)<2){h=f;while(1){s=h<<24>>24<0;f=n;if(((s?g:S)+((s?c[y>>2]|0:h&255)<<2)|0)==(f|0)){f=h;break}if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,c[f>>2]|0)|0)){O=112;break}n=f+4|0;h=a[w>>0]|0;g=c[S>>2]|0}if((O|0)==112){O=0;f=a[w>>0]|0;g=c[S>>2]|0}o=f<<24>>24<0?g:S;s=o;q=n-s>>2;p=a[z>>0]|0;r=p<<24>>24<0;h=c[A>>2]|0;p=p&255;if(q>>>0>(r?h:p)>>>0)n=s;else{Y=(c[V>>2]|0)+(h<<2)|0;h=V+(p<<2)|0;p=r?Y:h;h=(r?Y:h)+(0-q<<2)|0;while(1){if((h|0)==(p|0))break c;if((c[h>>2]|0)!=(c[o>>2]|0)){n=s;break c}o=o+4|0;h=h+4|0}}}}while(0);o=n;h=t;d:while(1){Y=f<<24>>24<0;if((o|0)==((Y?g:S)+((Y?c[y>>2]|0:f&255)<<2)|0))break;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else break d;else{c[e>>2]=0;O=134;break}}else O=134;while(0);if((O|0)==134){O=0;if(f)break;else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[o>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}o=o+4|0;f=a[w>>0]|0;g=c[S>>2]|0}if(v?(Y=a[w>>0]|0,t=Y<<24>>24<0,(o|0)!=((t?c[S>>2]|0:S)+((t?c[y>>2]|0:Y&255)<<2)|0)):0){O=146;break a}else n=N;break}case 4:{o=0;h=t;n=t;e:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=jE(c[g>>2]|0)|0;if(JE(f,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))f=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(g){p=h;break}else{h=n;break e}else{c[e>>2]=0;n=0;O=160;break}}else O=160;while(0);if((O|0)==160){O=0;if(g){h=n;break}else p=0}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else g=jE(c[g>>2]|0)|0;if(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,g)|0){f=c[m>>2]|0;if((f|0)==(c[H>>2]|0)){yK(l,m,H);f=c[m>>2]|0}c[m>>2]=f+4;c[f>>2]=g;f=o+1|0}else{Y=a[F>>0]|0;if(!((g|0)==(c[L>>2]|0)&(o|0?((Y<<24>>24<0?c[G>>2]|0:Y&255)|0)!=0:0))){h=n;break}f=c[P>>2]|0;if((f|0)==(c[I>>2]|0)){oK(W,P,I);f=c[P>>2]|0}c[P>>2]=f+4;c[f>>2]=o;f=0}g=c[b>>2]|0;h=g+12|0;o=c[h>>2]|0;if((o|0)==(c[g+16>>2]|0))Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=o+4;jE(c[o>>2]|0)|0}o=f;h=p}n=c[P>>2]|0;if(o|0?(c[W>>2]|0)!=(n|0):0){if((n|0)==(c[I>>2]|0)){oK(W,P,I);n=c[P>>2]|0}c[P>>2]=n+4;c[n>>2]=o}f:do if((c[M>>2]|0)>0){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else{O=201;break a}else{c[e>>2]=0;O=195;break}}else O=195;while(0);if((O|0)==195){O=0;if(f){O=201;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[K>>2]|0)){O=201;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h;while(1){if((c[M>>2]|0)<=0)break f;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{O=226;break a}else{c[e>>2]=0;O=220;break}}else O=220;while(0);if((O|0)==220){O=0;if(f){O=226;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,n)|0)){O=226;break a}if((c[m>>2]|0)==(c[H>>2]|0))yK(l,m,H);n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[m>>2]|0;c[m>>2]=f+4;c[f>>2]=n;c[M>>2]=(c[M>>2]|0)+-1;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h}}while(0);if((c[m>>2]|0)==(c[l>>2]|0)){O=237;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==46){O=0;g=t;while(1){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{n=N;break g}else{c[e>>2]=0;O=60;break}}else O=60;while(0);if((O|0)==60){O=0;if(f){n=N;break g}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){n=N;break g}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);g=h}}while(0);N=n;u=u+1|0}h:do if((O|0)==44){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==103){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==146){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==201){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==226){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==237){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==239){i:do if(N|0){o=N+8+3|0;p=N+4|0;h=1;j:while(1){n=a[o>>0]|0;if(n<<24>>24<0)n=c[p>>2]|0;else n=n&255;if(h>>>0>=n>>>0)break i;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);n=c[e>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g)break;else break j;else{c[e>>2]=0;O=258;break}}else O=258;while(0);if((O|0)==258?(O=0,g):0)break;n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((a[o>>0]|0)<0)f=c[N>>2]|0;else f=N;if((n|0)!=(c[f+(h<<2)>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}h=h+1|0}c[i>>2]=c[i>>2]|4;f=0;break h}while(0);f=c[W>>2]|0;n=c[P>>2]|0;if((f|0)!=(n|0)){c[Q>>2]=0;kG(R,f,n,Q);if(!(c[Q>>2]|0)){f=1;break}else{c[i>>2]=c[i>>2]|4;f=0;break}}else f=1}while(0);wO(V);wO(U);wO(T);wO(S);jO(R);n=c[W>>2]|0;c[W>>2]=0;if(n|0)Sb[c[W+4>>2]&255](n);zb=X;return f|0}function uK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;k=n;f=b+8|0;m=f+3|0;i=a[m>>0]|0;g=i<<24>>24<0;if(g){l=c[b+4>>2]|0;h=(c[f>>2]&2147483647)+-1|0}else{l=i&255;h=1}f=e-d|0;j=f>>2;do if(f|0){if(g){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=i&255}if(vK(d,g,g+(f<<2)|0)|0){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;wK(k,d,e);m=a[k+8+3>>0]|0;l=m<<24>>24<0;CO(b,l?c[k>>2]|0:k,l?c[k+4>>2]|0:m&255)|0;wO(k);break}if((h-l|0)>>>0>>0)BO(b,h,l+j-h|0,l,l,0,0);if((a[m>>0]|0)<0)f=c[b>>2]|0;else f=b;f=f+(l<<2)|0;while(1){if((d|0)==(e|0))break;JF(f,d);f=f+4|0;d=d+4|0}c[k>>2]=0;JF(f,k);d=l+j|0;if((a[m>>0]|0)<0){c[b+4>>2]=d;break}else{a[m>>0]=d;break}}while(0);zb=n;return b|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function wK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function xK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(d,56984)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(d,56976)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function yK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function zK(a){a=a|0;CF(a);return}function AK(a){a=a|0;CF(a);SA(a);return}function BK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+416|0;q=E+336|0;k=E+328|0;b=E+224|0;l=E+400|0;j=E+112|0;D=E+396|0;r=E+408|0;s=E+405|0;t=E+404|0;A=E+384|0;B=E+372|0;C=E+360|0;o=E+356|0;p=E;u=E+352|0;v=E+344|0;w=E+348|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56736)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+32>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}DK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}EK(y,u,v,c[f+4>>2]|0,x,x+z|0,n,m,r,a[s>>0]|0,a[t>>0]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=$f(q,y,d,b,f,h)|0;if(F|0)GO(F);jO(C);jO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function CK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+176|0;p=C+156|0;B=C+152|0;u=C+164|0;v=C+161|0;w=C+160|0;y=C+140|0;z=C+128|0;A=C+116|0;l=C+112|0;n=C;q=C+108|0;r=C+104|0;s=C+100|0;IE(B,f);t=XF(B,56736)|0;i=h+11|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=a[(b?c[h>>2]|0:h)>>0]|0;o=o<<24>>24==(Ib[c[(c[t>>2]|0)+28>>2]&63](t,45)|0)<<24>>24};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}DK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;EK(x,q,r,c[f+4>>2]|0,h,h+k|0,t,o,u,a[v>>0]|0,a[w>>0]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=$f(p,x,h,b,f,g)|0;if(D|0)GO(D);jO(A);jO(z);jO(y);YF(B);zb=C;return b|0}function DK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56968)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56960)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function EK(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c[f>>2]=d;y=q+11|0;G=q+4|0;z=p+11|0;A=p+4|0;B=(g&512|0)==0;C=j+8|0;D=(r|0)>0;E=o+11|0;F=o+4|0;x=0;while(1){if((x|0)==4)break;a:do switch(a[l+x>>0]|0){case 0:{c[e>>2]=c[f>>2];break}case 1:{c[e>>2]=c[f>>2];v=Ib[c[(c[j>>2]|0)+28>>2]&63](j,32)|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v;break}case 3:{w=a[y>>0]|0;s=w<<24>>24<0;if((s?c[G>>2]|0:w&255)|0){v=a[(s?c[q>>2]|0:q)>>0]|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v}break}case 2:{t=a[z>>0]|0;s=t<<24>>24<0;t=s?c[A>>2]|0:t&255;if(!(B|(t|0)==0)){w=s?c[p>>2]|0:p;u=w+t|0;s=c[f>>2]|0;t=w;while(1){if((t|0)==(u|0))break;a[s>>0]=a[t>>0]|0;s=s+1|0;t=t+1|0}c[f>>2]=s}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;u=h;while(1){if(u>>>0>=i>>>0)break;s=a[u>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[C>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(D){v=r;while(1){s=(v|0)>0;if(!(u>>>0>h>>>0&s))break;w=u+-1|0;H=a[w>>0]|0;s=c[f>>2]|0;c[f>>2]=s+1;a[s>>0]=H;v=v+-1|0;u=w}if(s)w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;else w=0;s=v;while(1){v=c[f>>2]|0;c[f>>2]=v+1;if((s|0)<=0)break;a[v>>0]=w;s=s+-1|0}a[v>>0]=m}b:do if((u|0)==(h|0)){w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=w}else{H=a[E>>0]|0;s=H<<24>>24<0;if(!((s?c[F>>2]|0:H&255)|0))s=-1;else s=a[(s?c[o>>2]|0:o)>>0]|0;v=0;w=0;while(1){if((u|0)==(h|0))break b;if((w|0)==(s|0)){H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=n;v=v+1|0;H=a[E>>0]|0;s=H<<24>>24<0;if(v>>>0<(s?c[F>>2]|0:H&255)>>>0){s=a[(s?c[o>>2]|0:o)+v>>0]|0;s=s<<24>>24==127?-1:s<<24>>24;w=0}else{s=w;w=0}}H=u+-1|0;J=a[H>>0]|0;I=c[f>>2]|0;c[f>>2]=I+1;a[I>>0]=J;w=w+1|0;u=H}}while(0);s=c[f>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=a[t>>0]|0;a[t>>0]=a[s>>0]|0;a[s>>0]=J;t=t+1|0}break}default:{}}while(0);x=x+1|0}h=a[y>>0]|0;s=h<<24>>24<0;h=s?c[G>>2]|0:h&255;if(h>>>0>1){J=s?c[q>>2]|0:q;t=J+h|0;s=c[f>>2]|0;h=J;while(1){h=h+1|0;if((h|0)==(t|0))break;a[s>>0]=a[h>>0]|0;s=s+1|0}c[f>>2]=s}switch((g&176)<<24>>24){case 32:{c[e>>2]=c[f>>2];break}case 16:break;default:c[e>>2]=d}return}function FK(a){a=a|0;CF(a);return}function GK(a){a=a|0;CF(a);SA(a);return}function HK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+992|0;q=E+912|0;k=E+904|0;b=E+800|0;l=E+984|0;j=E+400|0;D=E+980|0;r=E+988|0;s=E+976|0;t=E+972|0;A=E+960|0;B=E+948|0;C=E+936|0;o=E+932|0;p=E;u=E+928|0;v=E+920|0;w=E+924|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b<<2)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56768)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+48>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}JK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}KK(y,u,v,c[f+4>>2]|0,x,x+(z<<2)|0,n,m,r,c[s>>2]|0,c[t>>2]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=IH(q,y,d,b,f,h)|0;if(F|0)GO(F);wO(C);wO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function IK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+480|0;p=C+464|0;B=C+460|0;u=C+468|0;v=C+456|0;w=C+452|0;y=C+440|0;z=C+428|0;A=C+416|0;l=C+412|0;n=C;q=C+408|0;r=C+404|0;s=C+400|0;IE(B,f);t=XF(B,56768)|0;i=h+8+3|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=c[(b?c[h>>2]|0:h)>>2]|0;o=(o|0)==(Ib[c[(c[t>>2]|0)+44>>2]&63](t,45)|0)};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}JK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;KK(x,q,r,c[f+4>>2]|0,h,h+(k<<2)|0,t,o,u,c[v>>2]|0,c[w>>2]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=IH(p,x,h,b,f,g)|0;if(D|0)GO(D);wO(A);wO(z);jO(y);YF(B);zb=C;return b|0}function JK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56984)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56976)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function KK(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[e>>2]=b;z=p+8+3|0;G=p+4|0;A=o+8+3|0;B=o+4|0;C=(f&512|0)==0;D=(q|0)>0;E=n+11|0;F=n+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(a[k+y>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w;break}case 3:{x=a[z>>0]|0;r=x<<24>>24<0;if((r?c[G>>2]|0:x&255)|0){w=c[(r?c[p>>2]|0:p)>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w}break}case 2:{v=a[A>>0]|0;r=v<<24>>24<0;v=r?c[B>>2]|0:v&255;if(!(C|(v|0)==0)){u=r?c[o>>2]|0:o;s=u+(v<<2)|0;t=c[e>>2]|0;r=t;while(1){if((u|0)==(s|0))break;c[r>>2]=c[u>>2];r=r+4|0;u=u+4|0}c[e>>2]=t+(v<<2)}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;r=g;while(1){if(r>>>0>=h>>>0)break;if(!(Jb[c[(c[i>>2]|0)+12>>2]&63](i,2048,c[r>>2]|0)|0))break;r=r+4|0}if(D){u=q;while(1){t=(u|0)>0;if(!(r>>>0>g>>>0&t))break;x=r+-4|0;v=c[x>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=v;u=u+-1|0;r=x}if(t)w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;else w=0;v=c[e>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;c[v>>2]=w;u=u+-1|0;v=t}c[e>>2]=t;c[v>>2]=l;t=r}else t=r;if((t|0)==(g|0)){w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;x=c[e>>2]|0;r=x+4|0;c[e>>2]=r;c[x>>2]=w}else{x=a[E>>0]|0;r=x<<24>>24<0;if(!((r?c[F>>2]|0:x&255)|0))r=-1;else r=a[(r?c[n>>2]|0:n)>>0]|0;u=0;v=0;x=t;while(1){if((x|0)==(g|0))break;t=c[e>>2]|0;if((v|0)==(r|0)){w=t+4|0;c[e>>2]=w;c[t>>2]=m;t=u+1|0;u=a[E>>0]|0;r=u<<24>>24<0;if(t>>>0<(r?c[F>>2]|0:u&255)>>>0){r=a[(r?c[n>>2]|0:n)+t>>0]|0;r=r<<24>>24==127?-1:r<<24>>24;u=t;v=0;t=w}else{r=v;u=t;v=0;t=w}}w=x+-4|0;H=c[w>>2]|0;c[e>>2]=t+4;c[t>>2]=H;v=v+1|0;x=w}r=c[e>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;H=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=H;s=s+4|0}break}default:{}}while(0);y=y+1|0}r=a[z>>0]|0;g=r<<24>>24<0;r=g?c[G>>2]|0:r&255;if(r>>>0>1){s=c[p>>2]|0;u=g?s+4|0:G;r=(g?s:p)+(r<<2)|0;s=c[e>>2]|0;t=r-u|0;g=s;while(1){if((u|0)==(r|0))break;c[g>>2]=c[u>>2];g=g+4|0;u=u+4|0}c[e>>2]=s+(t>>>2<<2)}switch((f&176)<<24>>24){case 32:{c[d>>2]=c[e>>2];break}case 16:break;default:c[d>>2]=b}return}function LK(a){a=a|0;CF(a);return}function MK(a){a=a|0;CF(a);SA(a);return}function NK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function OK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0}k=a[h+11>>0]|0;l=k<<24>>24<0;d=l?c[h>>2]|0:h;h=d+(l?c[h+4>>2]|0:k&255)|0;while(1){if(d>>>0>=h>>>0)break;sO(i,a[d>>0]|0);d=d+1|0}d=(a[i+11>>0]|0)<0?c[i>>2]|0:i;e=Oy((e|0)==-1?-1:e<<1,f,g,d)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break;c[b+(h<<2)>>2]=0;h=h+1|0}h=d+(Qy(e)|0)|0;while(1){if(d>>>0>=h>>>0)break;sO(b,a[d>>0]|0);d=d+1|0}jO(i);zb=j;return}function PK(a,b){a=a|0;b=b|0;return}function QK(a){a=a|0;CF(a);return}function RK(a){a=a|0;CF(a);SA(a);return}function SK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function TK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+176|0;p=t+168|0;q=t;r=t+164|0;s=t+160|0;n=t+128|0;l=t+152|0;o=t+144|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0}c[l+4>>2]=0;c[l>>2]=19072;j=a[h+8+3>>0]|0;k=j<<24>>24<0;d=k?c[h>>2]|0:h;j=d+((k?c[h+4>>2]|0:j&255)<<2)|0;k=q+32|0;h=d;d=0;while(1){if(!((d|0)!=2&h>>>0>>0))break;c[s>>2]=h;i=Qb[c[(c[l>>2]|0)+12>>2]&15](l,p,h,j,s,q,k,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=8;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;sO(n,a[d>>0]|0);d=d+1|0}h=c[s>>2]|0;d=i}if((m|0)==8)nJ(0);CF(l);i=(a[n+11>>0]|0)<0?c[n>>2]|0:n;h=Oy((e|0)==-1?-1:e<<1,f,g,i)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0}c[o+4>>2]=0;c[o>>2]=19120;j=i+(Qy(h)|0)|0;k=j;l=q+128|0;h=i;d=0;while(1){if(!((d|0)!=2&h>>>0>>0)){m=23;break}c[s>>2]=h;i=Qb[c[(c[o>>2]|0)+16>>2]&15](o,p,h,(k-h|0)>32?h+32|0:j,s,q,l,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=19;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;DO(b,c[d>>2]|0);d=d+4|0}h=c[s>>2]|0;d=i}if((m|0)==19)nJ(0);else if((m|0)==23){CF(o);jO(n);zb=t;return}}function UK(a,b){a=a|0;b=b|0;return}function VK(a){a=a|0;CF(a);SA(a);return}function WK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=dL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function XK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=cL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function YK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function ZK(a){a=a|0;return 0}function _K(a){a=a|0;return 0}function $K(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return bL(c,d,e,1114111,0)|0}function aL(a){a=a|0;return 4}function bL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;n=0;a:while(1){if(!(n>>>0>>0&g>>>0>>0))break;k=a[g>>0]|0;m=k&255;do if(k<<24>>24<=-1){if((k&255)<194)break a;if((k&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((k&255)<240){if((o-g|0)<3)break a;i=a[g+1>>0]|0;h=a[g+2>>0]|0;switch(k<<24>>24){case -32:{if((i&-32)<<24>>24!=-96)break a;break}case -19:{if((i&-32)<<24>>24!=-128)break a;break}default:if((i&-64)<<24>>24!=-128)break a}h=h&255;if((h&192|0)!=128)break a;if(((i&63)<<6|m<<12&61440|h&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((k&255)>=245)break a;if((o-g|0)<4)break a;l=a[g+1>>0]|0;h=a[g+2>>0]|0;j=a[g+3>>0]|0;switch(k<<24>>24){case -16:{if((l+112&255)>=48)break a;break}case -12:{if((l&-16)<<24>>24!=-128)break a;break}default:if((l&-64)<<24>>24!=-128)break a}i=h&255;if((i&192|0)!=128)break a;h=j&255;if((h&192|0)!=128)break a;if(((l&63)<<12|m<<18&1835008|i<<6&4032|h&63)>>>0>f>>>0)break a;else g=g+4|0}else{if(m>>>0>f>>>0)break a;g=g+1|0}while(0);n=n+1|0}return g-b|0}function cL(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;if(k&4){b=c[f>>2]|0;g=e;if((((g-b|0)>2?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0)c[f>>2]=b+3}else g=e;a:while(1){p=c[f>>2]|0;if(p>>>0>=e>>>0){b=0;break}q=c[i>>2]|0;if(q>>>0>=h>>>0){b=1;break}n=a[p>>0]|0;b=n&255;do if(n<<24>>24>-1)if(b>>>0>j>>>0){b=2;break a}else k=1;else{if((n&255)<194){b=2;break a}if((n&255)<224){if((g-p|0)<2){b=1;break a}k=d[p+1>>0]|0;if((k&192|0)!=128){b=2;break a}b=k&63|b<<6&1984;if(b>>>0>j>>>0){b=2;break a}else{k=2;break}}if((n&255)<240){if((g-p|0)<3){b=1;break a}l=a[p+1>>0]|0;k=a[p+2>>0]|0;switch(n<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){b=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){b=2;break a}break}default:if((l&-64)<<24>>24!=-128){b=2;break a}}k=k&255;if((k&192|0)!=128){b=2;break a}b=(l&63)<<6|b<<12&61440|k&63;if(b>>>0>j>>>0){b=2;break a}else{k=3;break}}if((n&255)>=245){b=2;break a}if((g-p|0)<4){b=1;break a}o=a[p+1>>0]|0;k=a[p+2>>0]|0;m=a[p+3>>0]|0;switch(n<<24>>24){case -16:{if((o+112&255)>=48){b=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){b=2;break a}break}default:if((o&-64)<<24>>24!=-128){b=2;break a}}l=k&255;if((l&192|0)!=128){b=2;break a}k=m&255;if((k&192|0)!=128){b=2;break a}b=(o&63)<<12|b<<18&1835008|l<<6&4032|k&63;if(b>>>0>j>>>0){b=2;break a}else k=4}while(0);c[q>>2]=b;c[f>>2]=p+k;c[i>>2]=(c[i>>2]|0)+4}return b|0}function dL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;c[e>>2]=b;c[h>>2]=f;l=g;if(j&2)if((l-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;while(1){if(b>>>0>=d>>>0){b=0;break a}f=c[b>>2]|0;if(f>>>0>i>>>0|(f&-2048|0)==55296){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((l-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;g=l-b|0;if(f>>>0<65536){if((g|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((g|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((l-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b}}while(0);return b|0}function eL(a){a=a|0;CF(a);SA(a);return}function fL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function gL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function iL(a){a=a|0;return 1}function jL(a){a=a|0;return 1}function kL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function lL(a){a=a|0;return 1}function mL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+16|0;p=q;n=q+8|0;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}c[j>>2]=h;c[g>>2]=e;m=i;o=b+8|0;a:while(1){if((h|0)==(i|0)|(e|0)==(f|0)){k=36;break}r=d;l=c[r+4>>2]|0;b=p;c[b>>2]=c[r>>2];c[b+4>>2]=l;b=ez(c[o>>2]|0)|0;l=Uz(h,g,k-e>>2,m-h|0,d)|0;if(b|0)ez(b)|0;switch(l|0){case -1:{k=10;break a}case 0:{e=1;k=33;break a}default:{}}h=(c[j>>2]|0)+l|0;c[j>>2]=h;if((h|0)==(i|0)){k=34;break}if((k|0)==(f|0)){k=f;e=c[g>>2]|0}else{h=ez(c[o>>2]|0)|0;e=_x(n,0,d)|0;if(h|0)ez(h)|0;if((e|0)==-1){e=2;k=32;break}if(e>>>0>(m-(c[j>>2]|0)|0)>>>0){e=1;k=32;break}h=n;while(1){if(!e)break;l=a[h>>0]|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r>>0]=l;h=h+1|0;e=e+-1|0}e=(c[g>>2]|0)+4|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}h=c[j>>2]|0}}if((k|0)==10){c[j>>2]=h;while(1){if((e|0)==(c[g>>2]|0))break;r=c[e>>2]|0;k=ez(c[o>>2]|0)|0;h=_x(h,r,p)|0;if(k|0)ez(k)|0;if((h|0)==-1)break;h=(c[j>>2]|0)+h|0;c[j>>2]=h;e=e+4|0}c[g>>2]=e;e=2;k=33}else if((k|0)==32)k=33;else if((k|0)==34){e=c[g>>2]|0;k=36}if((k|0)!=33)if((k|0)==36)e=(e|0)!=(f|0)&1;zb=q;return e|0}function nL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=zb;zb=zb+16|0;o=p;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}c[j>>2]=h;c[g>>2]=e;m=i;n=b+8|0;while(1){if((h|0)==(i|0)|(e|0)==(f|0)){b=33;break}q=d;l=c[q+4>>2]|0;b=o;c[b>>2]=c[q>>2];c[b+4>>2]=l;b=ez(c[n>>2]|0)|0;l=Rz(h,g,k-e|0,m-h>>2,d)|0;if(b|0)ez(b)|0;if((l|0)==-1){b=10;break}h=(c[j>>2]|0)+(l<<2)|0;c[j>>2]=h;if((h|0)==(i|0)){b=30;break}e=c[g>>2]|0;if((k|0)==(f|0))k=f;else{k=ez(c[n>>2]|0)|0;e=Xy(h,e,1,d)|0;if(k|0)ez(k)|0;if(e|0){e=2;b=29;break}c[j>>2]=(c[j>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}h=c[j>>2]|0}}do if((b|0)==10){a:while(1){c[j>>2]=h;if((e|0)==(c[g>>2]|0)){b=19;break}b=ez(c[n>>2]|0)|0;h=Xy(h,e,k-e|0,o)|0;if(b|0)ez(b)|0;switch(h|0){case -1:{b=15;break a}case -2:{b=16;break a}case 0:{h=1;break}default:{}}e=e+h|0;h=(c[j>>2]|0)+4|0}if((b|0)==15){c[g>>2]=e;e=2;b=29;break}else if((b|0)==16){c[g>>2]=e;e=1;b=29;break}else if((b|0)==19){c[g>>2]=e;e=(e|0)!=(f|0)&1;b=29;break}}else if((b|0)==30){e=c[g>>2]|0;b=33}while(0);if((b|0)!=29)if((b|0)==33)e=(e|0)!=(f|0)&1;zb=p;return e|0}function oL(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=zb;zb=zb+16|0;h=i;c[g>>2]=e;e=ez(c[b+8>>2]|0)|0;b=_x(h,0,d)|0;if(e|0)ez(e)|0;a:do if((b+1|0)>>>0>=2){b=b+-1|0;if(b>>>0>(f-(c[g>>2]|0)|0)>>>0)b=1;else while(1){if(!b){b=0;break a}d=a[h>>0]|0;f=c[g>>2]|0;c[g>>2]=f+1;a[f>>0]=d;h=h+1|0;b=b+-1|0}}else b=2;while(0);zb=i;return b|0}function pL(a){a=a|0;var b=0,d=0;a=a+8|0;b=ez(c[a>>2]|0)|0;d=pz(0,0,4)|0;if(b|0)ez(b)|0;if(!d){a=c[a>>2]|0;if(!a)a=1;else{b=ez(a)|0;a=hy()|0;if(b|0)ez(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function qL(a){a=a|0;return 0}function rL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=e;j=a+8|0;h=0;i=0;a:while(1){if((d|0)==(e|0)|h>>>0>=f>>>0)break;g=ez(c[j>>2]|0)|0;a=Qz(d,k-d|0,b)|0;if(g|0)ez(g)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}h=h+1|0;i=a+i|0;d=d+a|0}return i|0}function sL(a){a=a|0;var b=0;a=c[a+8>>2]|0;if(a){b=ez(a)|0;a=hy()|0;if(b)ez(b)|0}else a=1;return a|0}function tL(a){a=a|0;var b=0,d=0;c[a>>2]=19168;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(_F()|0))Vy(c[b>>2]|0);CF(a);return}function uL(a){a=a|0;tL(a);SA(a);return}function vL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=EL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function wL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=DL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function xL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function yL(a){a=a|0;return 0}function zL(a){a=a|0;return 0}function AL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return CL(c,d,e,1114111,0)|0}function BL(a){a=a|0;return 4}function CL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;h=0;a:while(1){if(!(h>>>0>>0&g>>>0>>0))break;l=a[g>>0]|0;n=l&255;if(n>>>0>f>>>0)break;do if(l<<24>>24<=-1){if((l&255)<194)break a;if((l&255)<224){if((o-g|0)<2)break a;i=d[g+1>>0]|0;if((i&192|0)!=128)break a;if((i&63|n<<6&1984)>>>0>f>>>0)break a;else{g=g+2|0;break}}if((l&255)<240){if((o-g|0)<3)break a;j=a[g+1>>0]|0;i=a[g+2>>0]|0;switch(l<<24>>24){case -32:{if((j&-32)<<24>>24!=-96)break a;break}case -19:{if((j&-32)<<24>>24!=-128)break a;break}default:if((j&-64)<<24>>24!=-128)break a}i=i&255;if((i&192|0)!=128)break a;if(((j&63)<<6|n<<12&61440|i&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((l&255)>=245)break a;if((e-h|0)>>>0<2|(o-g|0)<4)break a;m=a[g+1>>0]|0;i=a[g+2>>0]|0;k=a[g+3>>0]|0;switch(l<<24>>24){case -16:{if((m+112&255)>=48)break a;break}case -12:{if((m&-16)<<24>>24!=-128)break a;break}default:if((m&-64)<<24>>24!=-128)break a}j=i&255;if((j&192|0)!=128)break a;i=k&255;if((i&192|0)!=128)break a;if(((m&63)<<12|n<<18&1835008|j<<6&4032|i&63)>>>0>f>>>0)break a;else{h=h+1|0;g=g+4|0}}else g=g+1|0;while(0);h=h+1|0}return g-b|0}function DL(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[g>>2]=e;c[j>>2]=h;if(l&4){e=c[g>>2]|0;h=f;if((((h-e|0)>2?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0)c[g>>2]=e+3}else h=f;s=i;a:while(1){n=c[g>>2]|0;if(n>>>0>=f>>>0){e=0;break}r=c[j>>2]|0;if(r>>>0>=i>>>0){e=1;break}m=a[n>>0]|0;q=m&255;if(q>>>0>k>>>0){e=2;break}do if(m<<24>>24>-1){b[r>>1]=m&255;e=n+1|0}else{if((m&255)<194){e=2;break a}if((m&255)<224){if((h-n|0)<2){e=1;break a}e=d[n+1>>0]|0;if((e&192|0)!=128){e=2;break a}e=e&63|q<<6&1984;if(e>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+2|0;break}if((m&255)<240){if((h-n|0)<3){e=1;break a}l=a[n+1>>0]|0;e=a[n+2>>0]|0;switch(m<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){e=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){e=2;break a}break}default:if((l&-64)<<24>>24!=-128){e=2;break a}}e=e&255;if((e&192|0)!=128){e=2;break a}e=(l&63)<<6|q<<12|e&63;if((e&65535)>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+3|0;break}if((m&255)>=245){e=2;break a}if((h-n|0)<4){e=1;break a}o=a[n+1>>0]|0;e=a[n+2>>0]|0;l=a[n+3>>0]|0;switch(m<<24>>24){case -16:{if((o+112&255)>=48){e=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){e=2;break a}break}default:if((o&-64)<<24>>24!=-128){e=2;break a}}p=e&255;if((p&192|0)!=128){e=2;break a}e=l&255;if((e&192|0)!=128){e=2;break a}if((s-r|0)<4){e=1;break a}n=q&7;l=o&255;m=p<<6;e=e&63;if((l<<12&258048|n<<18|m&4032|e)>>>0>k>>>0){e=2;break a}b[r>>1]=l<<2&60|p>>>4&3|((l>>>4&3|n<<2)<<6)+16320|55296;r=r+2|0;c[j>>2]=r;b[r>>1]=e|m&960|56320;e=(c[g>>2]|0)+4|0}while(0);c[g>>2]=e;c[j>>2]=(c[j>>2]|0)+2}return e|0}function EL(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;while(1){if(d>>>0>=f>>>0){d=0;break a}h=b[d>>1]|0;m=h&65535;if(m>>>0>k>>>0){d=2;break a}do if((h&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=h}else{if((h&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;h=e[d>>1]|0;if((h&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}l=m&960;if(((l<<10)+65536|m<<10&64512|h&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(l>>>6)+1|0;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=d>>>2|240;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>2&15|d<<4&48|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m<<4&48|h>>>6&15|128;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=h&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d}}while(0);return d|0}function FL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=19216;e=a+8|0;f=a+12|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0?(h=b+4|0,g=c[h>>2]|0,c[h>>2]=g+-1,(g|0)==0):0)Sb[c[(c[b>>2]|0)+8>>2]&255](b);d=d+1|0}jO(a+144|0);HL(e);CF(a);return}function GL(a){a=a|0;FL(a);SA(a);return}function HL(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=d;do if(d|0){c[b+4>>2]=e;if((d|0)==(b+16|0)){a[b+128>>0]=0;break}else{Pf(d,(c[b+8>>2]|0)-e|0);break}}while(0);return}function IL(b){b=b|0;var d=0;c[b>>2]=19236;d=c[b+8>>2]|0;if(d|0?a[b+12>>0]|0:0)vB(d);CF(b);return}function JL(a){a=a|0;IL(a);SA(a);return}function KL(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(TL()|0)+((b&255)<<2)|0;b=c[b>>2]&255}return b|0}function LL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=TL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function ML(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(SL()|0)+(b<<24>>24<<2)|0;b=c[b>>2]&255}return b|0}function NL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=SL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function OL(a,b){a=a|0;b=b|0;return b|0}function PL(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((c|0)==(d|0))break;a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}return d|0}function QL(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function RL(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;while(1){if((c|0)==(d|0))break;b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;f=f+1|0;c=c+1|0}return d|0}function SL(){var a=0;a=jy()|0;return c[a>>2]|0}function TL(){var a=0;a=ky()|0;return c[a>>2]|0}function UL(){var a=0;a=gy()|0;return c[a>>2]|0}function VL(a){a=a|0;c[a>>2]=19288;jO(a+12|0);CF(a);return}function WL(a){a=a|0;VL(a);SA(a);return}function XL(b){b=b|0;return a[b+8>>0]|0}function YL(b){b=b|0;return a[b+9>>0]|0}function ZL(a,b){a=a|0;b=b|0;fO(a,b+12|0);return}function _L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51258,Yf(51258)|0);return}function $L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51252,Yf(51252)|0);return}function aM(a){a=a|0;c[a>>2]=19328;jO(a+16|0);CF(a);return}function bM(a){a=a|0;aM(a);SA(a);return}function cM(a){a=a|0;return c[a+8>>2]|0}function dM(a){a=a|0;return c[a+12>>2]|0}function eM(a,b){a=a|0;b=b|0;fO(a,b+16|0);return}function fM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19384,JI(19384)|0);return}function gM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19360,JI(19360)|0);return}function hM(a){a=a|0;CF(a);SA(a);return}function iM(a){a=a|0;CF(a);SA(a);return}function jM(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128){a=(UL()|0)+(d<<1)|0;a=(b[a>>1]&c)<<16>>16!=0}else a=0;return a|0}function kM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;while(1){if((d|0)==(f|0))break;if((c[d>>2]|0)>>>0<128){a=UL()|0;a=e[a+(c[d>>2]<<1)>>1]|0}else a=0;b[g>>1]=a;g=g+2|0;d=d+4|0}return f|0}function lM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0<128?(a=UL()|0,(b[a+(c[e>>2]<<1)>>1]&d)<<16>>16):0)break;e=e+4|0}return e|0}function mM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0>=128)break;a=UL()|0;if(!((b[a+(c[e>>2]<<1)>>1]&d)<<16>>16))break;e=e+4|0}return e|0}function nM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(TL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function oM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=TL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function pM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(SL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=SL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function rM(a,b){a=a|0;b=b|0;return b<<24>>24|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;while(1){if((d|0)==(e|0))break;c[f>>2]=a[d>>0];f=f+4|0;d=d+1|0}return e|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=(e-d|0)>>>2;b=g;g=d;while(1){if((g|0)==(e|0))break;i=c[g>>2]|0;a[b>>0]=i>>>0<128?i&255:f;b=b+1|0;g=g+4|0}return d+(h<<2)|0}function vM(a){a=a|0;CF(a);SA(a);return}function wM(a){a=a|0;CF(a);SA(a);return}function xM(a){a=a|0;CF(a);SA(a);return}function yM(a){a=a|0;c[a>>2]=19644;return}function zM(a){a=a|0;c[a>>2]=19680;return}function AM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+4>>2]=f+-1;c[b>>2]=19236;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(!d){e=UL()|0;c[f>>2]=e}return}function BM(a,b){a=a|0;b=b|0;var d=0;c[a+4>>2]=b+-1;c[a>>2]=19216;b=a+8|0;CM(b,28);d=a+144|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,49197,Yf(49197)|0);c[a+12>>2]=c[b>>2];DM();EM(a,54968);FM();GM(a,54976);HM();IM(a,54984);JM();KM(a,55e3);LM();MM(a,55008);NM();OM(a,55016);PM();QM(a,55032);RM();SM(a,55040);TM();UM(a,55048);VM();WM(a,55072);XM();YM(a,55104);ZM();_M(a,55112);$M();aN(a,55120);bN();cN(a,55128);dN();eN(a,55136);fN();gN(a,55144);hN();iN(a,55152);jN();kN(a,55160);lN();mN(a,55168);nN();oN(a,55176);pN();qN(a,55184);rN();sN(a,55192);tN();uN(a,55200);vN();wN(a,55216);xN();yN(a,55232);zN();AN(a,55248);BN();CN(a,55264);DN();EN(a,55272);return}function CM(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d|0){RN(b,d);IN(b,d)}return}function DM(){c[13743]=0;c[13742]=17072;return}function EM(a,b){a=a|0;b=b|0;FN(a,b,aG(56720)|0);return}function FM(){c[13745]=0;c[13744]=17104;return}function GM(a,b){a=a|0;b=b|0;FN(a,b,aG(56728)|0);return}function HM(){AM(54984,0,0,1);return}function IM(a,b){a=a|0;b=b|0;FN(a,b,aG(56736)|0);return}function JM(){c[13751]=0;c[13750]=19432;return}function KM(a,b){a=a|0;b=b|0;FN(a,b,aG(56768)|0);return}function LM(){c[13753]=0;c[13752]=19500;return}function MM(a,b){a=a|0;b=b|0;FN(a,b,aG(57040)|0);return}function NM(){QN(55016,1);return}function OM(a,b){a=a|0;b=b|0;FN(a,b,aG(57048)|0);return}function PM(){c[13759]=0;c[13758]=19548;return}function QM(a,b){a=a|0;b=b|0;FN(a,b,aG(57056)|0);return}function RM(){c[13761]=0;c[13760]=19596;return}function SM(a,b){a=a|0;b=b|0;FN(a,b,aG(57064)|0);return}function TM(){PN(55048,1);return}function UM(a,b){a=a|0;b=b|0;FN(a,b,aG(56752)|0);return}function VM(){ON(55072,1);return}function WM(a,b){a=a|0;b=b|0;FN(a,b,aG(56776)|0);return}function XM(){c[13777]=0;c[13776]=17136;return}function YM(a,b){a=a|0;b=b|0;FN(a,b,aG(56760)|0);return}function ZM(){c[13779]=0;c[13778]=17200;return}function _M(a,b){a=a|0;b=b|0;FN(a,b,aG(56784)|0);return}function $M(){c[13781]=0;c[13780]=17264;return}function aN(a,b){a=a|0;b=b|0;FN(a,b,aG(56792)|0);return}function bN(){c[13783]=0;c[13782]=17316;return}function cN(a,b){a=a|0;b=b|0;FN(a,b,aG(56800)|0);return}function dN(){c[13785]=0;c[13784]=18672;return}function eN(a,b){a=a|0;b=b|0;FN(a,b,aG(56960)|0);return}function fN(){c[13787]=0;c[13786]=18728;return}function gN(a,b){a=a|0;b=b|0;FN(a,b,aG(56968)|0);return}function hN(){c[13789]=0;c[13788]=18784;return}function iN(a,b){a=a|0;b=b|0;FN(a,b,aG(56976)|0);return}function jN(){c[13791]=0;c[13790]=18840;return}function kN(a,b){a=a|0;b=b|0;FN(a,b,aG(56984)|0);return}function lN(){c[13793]=0;c[13792]=18896;return}function mN(a,b){a=a|0;b=b|0;FN(a,b,aG(56992)|0);return}function nN(){c[13795]=0;c[13794]=18924;return}function oN(a,b){a=a|0;b=b|0;FN(a,b,aG(57e3)|0);return}function pN(){c[13797]=0;c[13796]=18952;return}function qN(a,b){a=a|0;b=b|0;FN(a,b,aG(57008)|0);return}function rN(){c[13799]=0;c[13798]=18980;return}function sN(a,b){a=a|0;b=b|0;FN(a,b,aG(57016)|0);return}function tN(){c[13801]=0;c[13800]=19412;yM(55208);c[13800]=17368;c[13802]=17416;return}function uN(a,b){a=a|0;b=b|0;FN(a,b,aG(56868)|0);return}function vN(){c[13805]=0;c[13804]=19412;zM(55224);c[13804]=17452;c[13806]=17500;return}function wN(a,b){a=a|0;b=b|0;FN(a,b,aG(56936)|0);return}function xN(){var a=0;c[13809]=0;c[13808]=19412;a=_F()|0;c[13810]=a;c[13808]=18624;return}function yN(a,b){a=a|0;b=b|0;FN(a,b,aG(56944)|0);return}function zN(){var a=0;c[13813]=0;c[13812]=19412;a=_F()|0;c[13814]=a;c[13812]=18648;return}function AN(a,b){a=a|0;b=b|0;FN(a,b,aG(56952)|0);return}function BN(){c[13817]=0;c[13816]=19008;return}function CN(a,b){a=a|0;b=b|0;FN(a,b,aG(57024)|0);return}function DN(){c[13819]=0;c[13818]=19040;return}function EN(a,b){a=a|0;b=b|0;FN(a,b,aG(57032)|0);return}function FN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=b+4|0;c[f>>2]=(c[f>>2]|0)+1;f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0>d>>>0)a=f;else{GN(f,d+1|0);a=f;e=c[f>>2]|0}e=c[e+(d<<2)>>2]|0;if(e|0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+-1,(f|0)==0):0)Sb[c[(c[e>>2]|0)+8>>2]&255](e);c[(c[a>>2]|0)+(d<<2)>>2]=b;return}function GN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else HN(a,b-e|0);return}function HN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=JN(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;KN(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+16|0);LN(f,b);MN(a,f);NN(f);break}}else IN(a,b);while(0);zb=i;return}function IN(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function JN(a){a=a|0;return 1073741823}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if(d>>>0<29&(a[g>>0]|0)==0){a[g>>0]=1;break}else{f=tB(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function LN(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function MN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function NN(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;while(1){if((f|0)==(d|0))break;g=f+-4|0;c[e>>2]=g;f=g}e=c[b>>2]|0;f=e;do if(e|0){d=c[b+16>>2]|0;if((e|0)==(d|0)){a[d+112>>0]=0;break}else{Pf(e,(c[b+12>>2]|0)-f|0);break}}while(0);return}function ON(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19328;c[a+8>>2]=46;c[a+12>>2]=44;b=a+16|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0}return}function PN(b,d){b=b|0;d=d|0;c[b+4>>2]=d+-1;c[b>>2]=19288;a[b+8>>0]=46;a[b+9>>0]=44;d=b+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}return}function QN(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19168;b=_F()|0;c[a+8>>2]=b;return}function RN(b,d){b=b|0;d=d|0;var e=0;if((JN(b)|0)>>>0>>0)EO(b);e=b+128|0;if(d>>>0<29&(a[e>>0]|0)==0){a[e>>0]=1;e=b+16|0}else e=tB(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function SN(){if((a[55280]|0)==0?nB(55280)|0:0){TN()|0;c[14269]=57072;pB(55280)}return c[14269]|0}function TN(){UN();c[14268]=55288;return 57072}function UN(){BM(55288,1);return}function VN(){WN(57080,SN()|0);return 57080}function WN(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;b=b+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function XN(){if((a[55448]|0)==0?nB(55448)|0:0){VN()|0;c[14271]=57080;pB(55448)}return c[14271]|0}function YN(a){a=a|0;var b=0;b=XN()|0;b=c[b>>2]|0;c[a>>2]=b;a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function ZN(a){a=a|0;return}function _N(a){a=a|0;var b=0,d=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(d=c[b>>2]|0,c[b>>2]=d+-1,(d|0)!=0):0))Sb[c[(c[a>>2]|0)+16>>2]&255](a);return}function $N(a,b,d){a=a|0;b=b|0;d=d|0;do{}while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Sb[d&255](b);c[a>>2]=-1}return}function aO(){ua()}function bO(a,b){a=a|0;b=b|0;var d=0,e=0;e=Qy(b)|0;d=tB(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=cO(d)|0;_O(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function cO(a){a=a|0;return a+12|0}function dO(a,b){a=a|0;b=b|0;c[a>>2]=16372;bO(a+4|0,b);return}function eO(a){a=a|0;ua()}function fO(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)gO(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}return}function gO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(e>>>0>4294967279)eO(b);if(e>>>0<11)a[b+11>>0]=e;else{i=e+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;b=h}VD(b,d,e)|0;a[f>>0]=0;bg(b+e|0,f);zb=g;return}function hO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(d>>>0>4294967279)eO(b);if(d>>>0<11)a[b+11>>0]=d;else{i=d+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=d;b=h}iO(b,d,e)|0;a[f>>0]=0;bg(b+d|0,f);zb=g;return}function iO(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)aP(a|0,(cg(c)|0)&255|0,b|0)|0;return a|0}function jO(b){b=b|0;if((a[b+11>>0]|0)<0)Pf(c[b>>2]|0,c[b+8>>2]&2147483647);return}function kO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g)h=(c[b+8>>2]&2147483647)+-1|0;else h=10;do if(h>>>0>=e>>>0){if(g)f=c[b>>2]|0;else f=b;lO(f,d,e)|0;a[i>>0]=0;bg(f+e|0,i);if((a[j>>0]|0)<0){c[b+4>>2]=e;break}else{a[j>>0]=e;break}}else{if(g)f=c[b+4>>2]|0;else f=f&255;mO(b,h,e-h|0,f,0,f,e,d)}while(0);zb=k;return b|0}function lO(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)$O(a|0,b|0,c|0)|0;return a|0} +function nw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[(c[a+484>>2]|0)+24>>2]|0;h=c[d>>2]|0;j=d+4|0;l=c[j>>2]|0;o=d+8|0;n=c[o>>2]|0;p=d+12|0;m=c[p>>2]|0;q=d+16|0;k=c[q>>2]|0;r=d+20|0;s=c[r>>2]|0;a:do if((l|0)<=(h|0)|(n|0)>(m|0)|(k|0)>(s|0))i=h;else{i=h;b:while(1){g=c[t+(i<<2)>>2]|0;e=n;while(1){a=g+(e<<6)+(k<<1)|0;f=k;while(1){if(b[a>>1]|0)break b;if((f|0)<(s|0)){a=a+2|0;f=f+1|0}else break}if((e|0)<(m|0))e=e+1|0;else break}if((i|0)<(l|0))i=i+1|0;else{i=h;break a}}c[d>>2]=i}while(0);c:do if(!((l|0)<=(i|0)|(n|0)>(m|0)|(k|0)>(s|0))){e=l;d:while(1){h=c[t+(e<<2)>>2]|0;f=n;while(1){a=h+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break d;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((f|0)<(m|0))f=f+1|0;else break}if((e|0)>(i|0))e=e+-1|0;else break c}c[j>>2]=e;l=e}while(0);e:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=n;f:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break f;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)<(m|0))f=f+1|0;else break e}c[o>>2]=f;n=f}while(0);g:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=m;h:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break h;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)>(n|0))f=f+-1|0;else break g}c[p>>2]=f;m=f}while(0);i:do if(!((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))){f=k;j:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break j;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)<(s|0))f=f+1|0;else break i}c[q>>2]=f;k=f}while(0);k:do if((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))f=s;else{f=s;l:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break l;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)>(k|0))f=f+-1|0;else{f=s;break k}}c[r>>2]=f}while(0);r=l-i<<4;q=(m-n|0)*12|0;s=f-k<<3;s=(B(q,q)|0)+(B(r,r)|0)+(B(s,s)|0)|0;c[d+24>>2]=s;if((l|0)<(i|0)|(m|0)<(n|0)|(f|0)<(k|0)){t=0;d=d+28|0;c[d>>2]=t;return}a=0;while(1){j=c[t+(i<<2)>>2]|0;h=n;while(1){e=k;g=j+(h<<6)+(k<<1)|0;while(1){a=a+((b[g>>1]|0)!=0&1)|0;if((e|0)>=(f|0))break;else{e=e+1|0;g=g+2|0}}if((h|0)<(m|0))h=h+1|0;else break}if((i|0)<(l|0))i=i+1|0;else break}d=d+28|0;c[d>>2]=a;return}function ow(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+484|0;j=c[b>>2]|0;c[a+136>>2]=c[j+16>>2];c[a+132>>2]=c[j+20>>2];switch(c[a+88>>2]|0){case 0:{b=j+4|0;if((c[a+120>>2]|0)==3){c[b>>2]=22;return}else{c[b>>2]=23;return}}case 1:{l=a+120|0;c[j+4>>2]=(c[l>>2]|0)==3?24:25;c[j+48>>2]=0;if(!(c[j+28>>2]|0))rw(a);if(c[j+52>>2]|0)return;j=c[b>>2]|0;b=c[l>>2]|0;if((b|0)<=0)return;k=a+4|0;i=0;do{f=c[j+32+(i<<2)>>2]|0;a:do if(i){e=0;while(1){if((f|0)==(c[j+32+(e<<2)>>2]|0))break;e=e+1|0;if(e>>>0>=i>>>0){m=15;break a}}e=c[j+52+(e<<2)>>2]|0;if(!e)m=15}else m=15;while(0);if((m|0)==15){m=0;e=Jb[c[c[k>>2]>>2]&63](a,1,1024)|0;h=(f<<9)+-512|0;g=0;do{f=0;do{n=255-((d[5440+(g<<4)+f>>0]|0)<<1)|0;b=n*255|0;if((n|0)<0)b=0-((0-b|0)/(h|0)|0)|0;else b=(b|0)/(h|0)|0;c[e+(g<<6)+(f<<2)>>2]=b;f=f+1|0}while((f|0)!=16);g=g+1|0}while((g|0)!=16);b=c[l>>2]|0}c[j+52+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(b|0));return}case 2:{c[j+4>>2]=26;c[j+84>>2]=0;if(!(c[j+68>>2]|0)){b=a+112|0;g=(c[b>>2]<<1)+4|0;h=a+120|0;if((c[h>>2]|0)<=0)return;i=a+4|0;e=0;do{f=Jb[c[(c[i>>2]|0)+4>>2]&63](a,1,g)|0;c[j+68+(e<<2)>>2]=f;e=e+1|0;f=c[h>>2]|0}while((e|0)<(f|0))}else{f=a+120|0;h=f;b=a+112|0;f=c[f>>2]|0}e=(c[b>>2]<<1)+4|0;if((f|0)<=0)return;b=0;do{aP(c[j+68+(b<<2)>>2]|0,0,e|0)|0;b=b+1|0}while((b|0)<(c[h>>2]|0));return}default:{n=c[a>>2]|0;c[n+20>>2]=49;Sb[c[n>>2]&255](a);return}}}function pw(a){a=a|0;return}function qw(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Sb[c[b>>2]&255](a);return}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+484>>2]|0;d=(c[b+88>>2]|0)==1;c[m+28>>2]=d&1;l=b+120|0;e=Kb[c[(c[b+4>>2]|0)+8>>2]&15](b,1,d?766:256,c[l>>2]|0)|0;k=m+24|0;c[k>>2]=e;b=c[m+20>>2]|0;if((c[l>>2]|0)<=0)return;if(!d){d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;h=c[e+(d<<2)>>2]|0;i=f+-1|0;j=i<<1;e=0;f=(f+254|0)/(j|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+i|0)/(j|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[h+g>>0]=n;g=g+1|0}while((g|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;j=e+(d<<2)|0;c[j>>2]=(c[j>>2]|0)+255;j=c[(c[k>>2]|0)+(d<<2)>>2]|0;h=f+-1|0;i=h<<1;e=0;f=(f+254|0)/(i|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+h|0)/(i|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[j+g>>0]=n;g=g+1|0}while((g|0)!=256);f=j+255|0;e=1;do{a[j+(0-e)>>0]=a[j>>0]|0;a[j+(e+255)>>0]=a[f>>0]|0;e=e+1|0}while((e|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}function sw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[(c[b+484>>2]|0)+24>>2]|0;n=c[m>>2]|0;l=c[m+4>>2]|0;m=c[m+8>>2]|0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;h=0;do{b=k;i=c[f+(h<<2)>>2]|0;j=c[e+(h<<2)>>2]|0;while(1){a[i>>0]=(d[l+(d[j+1>>0]|0)>>0]|0)+(d[n+(d[j>>0]|0)>>0]|0)+(d[m+(d[j+2>>0]|0)>>0]|0);b=b+-1|0;if(!b)break;else{i=i+1|0;j=j+3|0}}h=h+1|0}while((h|0)!=(g|0));return}function tw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[(c[b+484>>2]|0)+24>>2]|0;p=c[b+112>>2]|0;n=c[b+120>>2]|0;if((g|0)<1|(p|0)==0)return;if((n|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,p|0)|0;b=b+1|0}while((b|0)!=(g|0));return}i=0;do{h=p;j=c[f+(i<<2)>>2]|0;k=c[e+(i<<2)>>2]|0;while(1){b=0;l=0;m=k;while(1){l=l+(d[(c[o+(b<<2)>>2]|0)+(d[m>>0]|0)>>0]|0)|0;b=b+1|0;if((b|0)==(n|0))break;else m=m+1|0}a[j>>0]=l;h=h+-1|0;if(!h)break;else{j=j+1|0;k=k+n|0}}i=i+1|0}while((i|0)!=(g|0));return}function uw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=c[b+484>>2]|0;u=c[h+24>>2]|0;v=c[u>>2]|0;t=c[u+4>>2]|0;u=c[u+8>>2]|0;q=c[b+112>>2]|0;if((g|0)<=0)return;w=h+48|0;r=h+52|0;s=h+56|0;p=h+60|0;b=c[w>>2]|0;if(!q){h=0;do{b=b+1&15;h=h+1|0}while((h|0)!=(g|0));c[w>>2]=b;return}o=0;do{l=c[r>>2]|0;m=c[s>>2]|0;n=c[p>>2]|0;h=q;i=0;j=c[f+(o<<2)>>2]|0;k=c[e+(o<<2)>>2]|0;while(1){a[j>>0]=(d[t+((c[m+(b<<6)+(i<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0)+(d[v+((c[l+(b<<6)+(i<<2)>>2]|0)+(d[k>>0]|0))>>0]|0)+(d[u+((c[n+(b<<6)+(i<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0);h=h+-1|0;if(!h)break;else{i=i+1&15;j=j+1|0;k=k+3|0}}b=b+1&15;c[w>>2]=b;o=o+1|0}while((o|0)!=(g|0));return}function vw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[b+484>>2]|0;v=c[b+120>>2]|0;w=c[b+112>>2]|0;if((g|0)<=0)return;t=u+48|0;m=u+24|0;n=(w|0)==0;if((v|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,w|0)|0;c[t>>2]=(c[t>>2]|0)+1&15;b=b+1|0}while((b|0)!=(g|0));return}h=0;do{o=f+(h<<2)|0;aP(c[o>>2]|0,0,w|0)|0;p=c[t>>2]|0;q=e+(h<<2)|0;if(!n){i=0;do{r=c[(c[m>>2]|0)+(i<<2)>>2]|0;s=c[u+52+(i<<2)>>2]|0;b=w;j=c[o>>2]|0;k=0;l=(c[q>>2]|0)+i|0;while(1){a[j>>0]=(d[j>>0]|0)+(d[r+((c[s+(p<<6)+(k<<2)>>2]|0)+(d[l>>0]|0))>>0]|0);b=b+-1|0;if(!b)break;else{j=j+1|0;k=k+1&15;l=l+v|0}}i=i+1|0}while((i|0)!=(v|0))}c[t>>2]=p+1&15;h=h+1|0}while((h|0)!=(g|0));return}function ww(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;J=c[e+484>>2]|0;K=c[e+120>>2]|0;L=c[e+112>>2]|0;y=c[e+336>>2]|0;if((h|0)<=0)return;z=(K|0)>0;A=J+84|0;C=J+24|0;D=J+16|0;E=(L|0)==0;F=L+-1|0;G=B(F,K)|0;H=0-K|0;I=L+1|0;x=0;do{v=g+(x<<2)|0;aP(c[v>>2]|0,0,L|0)|0;a:do if(z){w=f+(x<<2)|0;if(E){i=(c[A>>2]|0)==0;e=0;while(1){w=c[J+68+(e<<2)>>2]|0;b[(i?w:w+(I<<1)|0)>>1]=0;e=e+1|0;if((e|0)==(K|0))break a}}r=0;do{e=(c[w>>2]|0)+r|0;i=c[v>>2]|0;if(!(c[A>>2]|0)){s=K;t=1;u=c[J+68+(r<<2)>>2]|0}else{s=H;t=-1;u=(c[J+68+(r<<2)>>2]|0)+(I<<1)|0;e=e+G|0;i=i+F|0}o=c[(c[C>>2]|0)+(r<<2)>>2]|0;p=c[(c[D>>2]|0)+(r<<2)>>2]|0;q=B(L,t)|0;l=0;m=L;n=0;j=0;k=u;while(1){M=k;k=k+(t<<1)|0;N=d[y+((j+8+(b[k>>1]|0)>>4)+(d[e>>0]|0))>>0]|0;j=d[o+N>>0]|0;a[i>>0]=(d[i>>0]|0)+j;j=N-(d[p+j>>0]|0)|0;b[M>>1]=(j*3|0)+n;n=(j*5|0)+l|0;m=m+-1|0;if(!m)break;else{l=j;j=j*7|0;e=e+s|0;i=i+t|0}}b[u+(q<<1)>>1]=n;r=r+1|0}while((r|0)!=(K|0))}while(0);c[A>>2]=(c[A>>2]|0)==0&1;x=x+1|0}while((x|0)!=(h|0));return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+428|0;d=c[g>>2]|0;e=B(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do if(e>>>0>f>>>0){if(e>>>0<=f<<1>>>0){f=yw(c[a+28>>2]<<1,d)|0;c[a+112>>2]=f;f=2;b=c[a+32>>2]<<1;break}if(e>>>0<=(f*3|0)>>>0){f=yw((c[a+28>>2]|0)*3|0,d)|0;c[a+112>>2]=f;f=3;b=(c[a+32>>2]|0)*3|0;break}if(e>>>0<=f<<2>>>0){f=yw(c[a+28>>2]<<2,d)|0;c[a+112>>2]=f;f=4;b=c[a+32>>2]<<2;break}if(e>>>0<=(f*5|0)>>>0){f=yw((c[a+28>>2]|0)*5|0,d)|0;c[a+112>>2]=f;f=5;b=(c[a+32>>2]|0)*5|0;break}if(e>>>0<=(f*6|0)>>>0){f=yw((c[a+28>>2]|0)*6|0,d)|0;c[a+112>>2]=f;f=6;b=(c[a+32>>2]|0)*6|0;break}if(e>>>0<=(f*7|0)>>>0){f=yw((c[a+28>>2]|0)*7|0,d)|0;c[a+112>>2]=f;f=7;b=(c[a+32>>2]|0)*7|0;break}if(e>>>0<=f<<3>>>0){f=yw(c[a+28>>2]<<3,d)|0;c[a+112>>2]=f;f=8;b=c[a+32>>2]<<3;break}if(e>>>0<=(f*9|0)>>>0){f=yw((c[a+28>>2]|0)*9|0,d)|0;c[a+112>>2]=f;f=9;b=(c[a+32>>2]|0)*9|0;break}if(e>>>0<=(f*10|0)>>>0){f=yw((c[a+28>>2]|0)*10|0,d)|0;c[a+112>>2]=f;f=10;b=(c[a+32>>2]|0)*10|0;break}if(e>>>0<=(f*11|0)>>>0){f=yw((c[a+28>>2]|0)*11|0,d)|0;c[a+112>>2]=f;f=11;b=(c[a+32>>2]|0)*11|0;break}if(e>>>0<=(f*12|0)>>>0){f=yw((c[a+28>>2]|0)*12|0,d)|0;c[a+112>>2]=f;f=12;b=(c[a+32>>2]|0)*12|0;break}if(e>>>0<=(f*13|0)>>>0){f=yw((c[a+28>>2]|0)*13|0,d)|0;c[a+112>>2]=f;f=13;b=(c[a+32>>2]|0)*13|0;break}if(e>>>0<=(f*14|0)>>>0){f=yw((c[a+28>>2]|0)*14|0,d)|0;c[a+112>>2]=f;f=14;b=(c[a+32>>2]|0)*14|0;break}b=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){f=yw(b<<4,d)|0;c[a+112>>2]=f;f=16;b=c[a+32>>2]<<4;break}else{f=yw(b*15|0,d)|0;c[a+112>>2]=f;f=15;b=(c[a+32>>2]|0)*15|0;break}}else{f=yw(c[a+28>>2]|0,d)|0;c[a+112>>2]=f;f=1;b=c[a+32>>2]|0}while(0);e=yw(b,c[g>>2]|0)|0;c[a+116>>2]=e;c[a+324>>2]=f;c[a+328>>2]=f;e=c[a+36>>2]|0;if((e|0)<=0)return;d=0;b=c[a+216>>2]|0;while(1){c[b+36>>2]=f;c[b+40>>2]=f;d=d+1|0;if((d|0)>=(e|0))break;else b=b+88|0}return}function yw(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=c[a+20>>2]|0;if((e|0)!=205){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=e;Sb[c[c[a>>2]>>2]&255](a)}e=a+140|0;f=c[e>>2]|0;g=c[a+116>>2]|0;if(f>>>0>=g>>>0){i=c[a>>2]|0;c[i+20>>2]=126;Ub[c[i+4>>2]&63](a,-1);i=0;zb=j;return i|0}h=c[a+8>>2]|0;if(h|0){c[h+4>>2]=f;c[h+8>>2]=g;Sb[c[h>>2]&255](a)}c[i>>2]=0;Xb[c[(c[a+448>>2]|0)+4>>2]&31](a,b,i,d);i=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+i;zb=j;return i|0}function Aw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;j=k;g=k+8|0;h=k+12|0;d=b+4|0;c[d>>2]=0;e=Bw(b)|0;c[g>>2]=e;f=Cw(b,84)|0;if(!f){Dw(b);i=c[b>>2]|0;c[i+20>>2]=56;c[i+24>>2]=0;Sb[c[c[b>>2]>>2]&255](b)}c[f>>2]=33;c[f+4>>2]=34;c[f+8>>2]=9;c[f+12>>2]=10;c[f+16>>2]=39;c[f+20>>2]=40;c[f+24>>2]=135;c[f+28>>2]=21;c[f+32>>2]=22;c[f+36>>2]=52;c[f+40>>2]=136;c[f+48>>2]=1e9;i=f+44|0;c[i>>2]=e;c[f+56>>2]=0;c[f+64>>2]=0;c[f+52>>2]=0;c[f+60>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+76>>2]=84;c[d>>2]=f;b=Ja(46641)|0;if(!b){zb=k;return}a[h>>0]=120;c[j>>2]=g;c[j+4>>2]=h;if((Cz(b,46649,j)|0)>0){switch(a[h>>0]|0){case 77:case 109:{b=(c[g>>2]|0)*1e3|0;c[g>>2]=b;break}default:b=c[g>>2]|0}c[i>>2]=b*1e3}zb=k;return}function Bw(a){a=a|0;return 0}function Cw(a,b){a=a|0;b=b|0;return FO(b)|0}function Dw(a){a=a|0;return}function Ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;if(d>>>0>999999984){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}j=d&7;j=((j|0)==0?0:8-j|0)+d|0;if(b>>>0>1){i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=k+52+(b<<2)|0;d=c[i>>2]|0;a:do if(!d){d=0;f=9}else while(1){if((c[d+8>>2]|0)>>>0>=j>>>0)break a;e=c[d>>2]|0;if(!e){f=9;break}else d=e}while(0);do if((f|0)==9){h=(d|0)==0;b=c[(h?15936:15944)+(b<<2)>>2]|0;e=999999984-j|0;b=b>>>0>e>>>0?e:b;e=b+j|0;g=e+16|0;f=Cw(a,g)|0;if(!f){do{if(b>>>0<100){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=2;Sb[c[c[a>>2]>>2]&255](a)}b=b>>>1;e=b+j|0;g=e+16|0;f=Cw(a,g)|0}while(!(f|0));b=g}else b=g;k=k+76|0;c[k>>2]=(c[k>>2]|0)+b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;if(h){c[i>>2]=f;d=f;break}else{c[d>>2]=f;d=f;break}}while(0);i=d+4|0;k=c[i>>2]|0;c[i>>2]=k+j;i=d+8|0;c[i>>2]=(c[i>>2]|0)-j;return d+16+k|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}f=d&7;d=((f|0)==0?0:8-f|0)+d|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}e=d+16|0;f=Tw(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function Gw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(d>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(h,d)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+d|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Hw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;n=d<<7;f=999999984/(n>>>0)|0;if(n>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(n,h)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+(d<<7)|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+68|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Jw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+72|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+4|0;s=c[u>>2]|0;f=s+68|0;b=c[f>>2]|0;if(!b){d=0;e=0}else{d=0;e=0;do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(t,c[b+12>>2]|0)|0)+d|0;e=(B(c[b+4>>2]|0,t)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0)}r=s+72|0;b=c[r>>2]|0;if(!b)b=e;else{do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(c[b+12>>2]<<7,t)|0)+d|0;e=(B(t<<7,c[b+4>>2]|0)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0);b=e}if((d|0)<1)return;e=Rw(a,d,b,c[s+76>>2]|0)|0;if((e|0)<(b|0)){t=(e|0)/(d|0)|0;t=(t|0)>1?t:1}else t=1e9;b=c[f>>2]|0;if(b|0){q=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;p=b+16|0;c[p>>2]=d;d=b+8|0;Sw(a,b+48|0,B(c[d>>2]|0,e)|0);c[b+40>>2]=1;e=c[p>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;d=999999984/(p>>>0)|0;if(p>>>0>999999984){o=c[a>>2]|0;c[o+20>>2]=72;Sb[c[o>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,p)|0;i=c[u>>2]|0;if(f>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=56;c[m+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}h=f&7;f=((h|0)==0?0:8-h|0)+f|0;h=f+16|0;m=Tw(a,h)|0;if(!m){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}l=i+76|0;c[l>>2]=(c[l>>2]|0)+h;l=i+64|0;c[m>>2]=c[l>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[l>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+p|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[q>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0)}b=c[r>>2]|0;if(!b)return;r=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;s=b+16|0;c[s>>2]=d;d=b+8|0;Sw(a,b+48|0,B(e<<7,c[d>>2]|0)|0);c[b+40>>2]=1;e=c[s>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;q=p<<7;d=999999984/(q>>>0)|0;if(q>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=72;Sb[c[s>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,q)|0;h=c[u>>2]|0;if(f>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}i=f|16;m=Tw(a,i)|0;if(!m){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}s=h+76|0;c[s>>2]=(c[s>>2]|0)+i;s=h+64|0;c[m>>2]=c[s>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[s>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+(p<<7)|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[r>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0);return}function Lw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]|0;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]|0;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);g=c[m>>2]|0;j=g+j|0;e=c[k>>2]|0;if((e|0)<=(j|0))break a;r=e-j|0;r=(g|0)<(r|0)?g:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]|0;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Mw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]<<7;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]<<7;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[k>>2]|0;if((g|0)<=(j|0))break a;r=g-j|0;r=(e|0)<(r|0)?e:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]<<7;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){f=g+68|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0;f=g+72|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0}}else{f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}f=g+60+(b<<2)|0;d=c[f>>2]|0;c[f>>2]=0;if(d|0){e=g+76|0;do{h=d;d=c[d>>2]|0;f=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;Qw(a,h,f);c[e>>2]=(c[e>>2]|0)-f}while((d|0)!=0)}h=g+52+(b<<2)|0;d=c[h>>2]|0;c[h>>2]=0;if(!d)return;e=g+76|0;do{g=d;d=c[d>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;Pw(a,g,h);c[e>>2]=(c[e>>2]|0)-h}while((d|0)!=0);return}function Ow(a){a=a|0;var b=0;Nw(a,1);Nw(a,0);b=a+4|0;Pw(a,c[b>>2]|0,84);c[b>>2]=0;Dw(a);return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Sb[c[d>>2]&255](a);return}function Tw(a,b){a=a|0;b=b|0;return FO(b)|0}function Uw(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d|0)Sb[c[d+40>>2]&255](a);c[b>>2]=0;c[a+20>>2]=0;return}function Vw(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Ub[c[b+36>>2]&63](a,1);b=a+20|0;if(!(c[a+16>>2]|0)){c[b>>2]=100;return}else{c[b>>2]=200;c[a+312>>2]=0;return}}function Ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[a+4>>2]=0;if((b|0)!=90){e=c[a>>2]|0;c[e+20>>2]=13;c[e+24>>2]=90;c[(c[a>>2]|0)+28>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}if((d|0)==488)b=a;else{b=c[a>>2]|0;c[b+20>>2]=22;c[b+24>>2]=488;c[(c[a>>2]|0)+28>>2]=d;Sb[c[c[a>>2]>>2]&255](a);b=a}f=c[a>>2]|0;d=a+12|0;e=c[d>>2]|0;aP(a+4|0,0,484)|0;c[a>>2]=f;c[d>>2]=e;c[a+16>>2]=1;Aw(b);c[a+8>>2]=0;c[a+24>>2]=0;c[a+312>>2]=0;b=a+164|0;d=b+48|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ut(a);Xw(a);c[a+20>>2]=200;return}function Xw(a){a=a|0;var b=0;b=Jb[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+460>>2]=b;c[b>>2]=90;c[b+4>>2]=137;c[b+8>>2]=138;c[b+12>>2]=139;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function Yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+460|0;b=c[G>>2]|0;H=b+20|0;if(c[H>>2]|0){a=2;return a|0}I=a+464|0;K=b+24|0;L=a+340|0;F=b+16|0;l=a+32|0;m=a+212|0;n=a+28|0;o=a+36|0;p=a+316|0;q=a+320|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+324|0;v=a+328|0;w=a+428|0;x=a+432|0;y=a+436|0;z=a+416|0;A=a+332|0;C=a+412|0;D=a+420|0;E=a+424|0;a:while(1){b=Gb[c[(c[I>>2]|0)+4>>2]&127](a)|0;switch(b|0){case 2:{k=58;break a}case 1:break;default:{k=63;break a}}b:do switch(c[K>>2]|0){case 0:{if(!(c[F>>2]|0)){j=c[a>>2]|0;c[j+20>>2]=36;Sb[c[j>>2]&255](a)}if(c[L>>2]|0){k=57;break a}break}case 1:{if(!((c[l>>2]|0)<=65500?(c[n>>2]|0)<=65500:0)){j=c[a>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Sb[c[c[a>>2]>>2]&255](a)}b=c[m>>2]|0;if((b+-8|0)>>>0>4){j=c[a>>2]|0;c[j+20>>2]=16;c[j+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}b=c[o>>2]|0;if((b|0)>10){j=c[a>>2]|0;c[j+20>>2]=27;c[j+24>>2]=b;c[(c[a>>2]|0)+28>>2]=10;Sb[c[c[a>>2]>>2]&255](a);b=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((b|0)>0){i=0;j=c[r>>2]|0;f=1;h=1;while(1){d=j+8|0;e=c[d>>2]|0;g=j+12|0;if((e+-1|0)>>>0<=3?(J=c[g>>2]|0,(J+-1|0)>>>0<=3):0)d=J;else{h=c[a>>2]|0;c[h+20>>2]=19;Sb[c[h>>2]&255](a);h=c[p>>2]|0;e=c[d>>2]|0;f=c[q>>2]|0;d=c[g>>2]|0;b=c[o>>2]|0}h=(h|0)>(e|0)?h:e;c[p>>2]=h;f=(f|0)>(d|0)?f:d;c[q>>2]=f;i=i+1|0;if((i|0)>=(b|0)){d=b;break}else j=j+88|0}}else d=b;c:do if(!(c[s>>2]|0)){if(c[t>>2]|0?c[L>>2]|0:0){k=22;break}do switch(c[z>>2]|0){case 0:{c[w>>2]=1;c[x>>2]=2064;c[y>>2]=0;b=1;break c}case 3:{c[w>>2]=2;c[x>>2]=3280;c[y>>2]=3;b=2;break c}case 8:{c[w>>2]=3;c[x>>2]=3168;c[y>>2]=8;b=3;break c}case 15:{c[w>>2]=4;c[x>>2]=3040;c[y>>2]=15;b=4;break c}case 24:{c[w>>2]=5;c[x>>2]=2864;c[y>>2]=24;b=5;break c}case 35:{c[w>>2]=6;c[x>>2]=2656;c[y>>2]=35;b=6;break c}case 48:{c[w>>2]=7;c[x>>2]=2384;c[y>>2]=48;b=7;break c}case 63:{c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8;break c}case 80:{c[w>>2]=9;c[x>>2]=2064;c[y>>2]=63;b=9;break c}case 99:{c[w>>2]=10;c[x>>2]=2064;c[y>>2]=63;b=10;break c}case 120:{c[w>>2]=11;c[x>>2]=2064;c[y>>2]=63;b=11;break c}case 143:{c[w>>2]=12;c[x>>2]=2064;c[y>>2]=63;b=12;break c}case 168:{c[w>>2]=13;c[x>>2]=2064;c[y>>2]=63;b=13;break c}case 195:{c[w>>2]=14;c[x>>2]=2064;c[y>>2]=63;b=14;break c}case 224:{c[w>>2]=15;c[x>>2]=2064;c[y>>2]=63;b=15;break c}case 255:{c[w>>2]=16;c[x>>2]=2064;c[y>>2]=63;b=16;break c}default:{b=c[a>>2]|0;c[b+20>>2]=17;c[b+24>>2]=c[C>>2];c[(c[a>>2]|0)+28>>2]=c[z>>2];c[(c[a>>2]|0)+32>>2]=c[D>>2];c[(c[a>>2]|0)+36>>2]=c[E>>2];Sb[c[c[a>>2]>>2]&255](a);b=c[w>>2]|0;d=c[o>>2]|0;break c}}while(0)}else k=22;while(0);if((k|0)==22){c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8}c[u>>2]=b;c[v>>2]=b;if((d|0)>0){d=0;e=c[r>>2]|0;while(1){c[e+36>>2]=b;c[e+40>>2]=b;k=e+8|0;j=B(c[k>>2]|0,c[n>>2]|0)|0;b=yw(j,B(c[p>>2]|0,b)|0)|0;c[e+28>>2]=b;b=e+12|0;j=B(c[b>>2]|0,c[l>>2]|0)|0;j=yw(j,B(c[w>>2]|0,c[q>>2]|0)|0)|0;c[e+32>>2]=j;k=B(c[k>>2]|0,c[n>>2]|0)|0;k=yw(k,c[p>>2]|0)|0;c[e+44>>2]=k;b=B(c[b>>2]|0,c[l>>2]|0)|0;b=yw(b,c[q>>2]|0)|0;c[e+48>>2]=b;c[e+52>>2]=1;c[e+80>>2]=0;b=d+1|0;if((b|0)>=(c[o>>2]|0))break;d=b;e=e+88|0;b=c[w>>2]|0}b=c[w>>2]|0}b=yw(c[l>>2]|0,B(b,c[q>>2]|0)|0)|0;c[A>>2]=b;b=c[L>>2]|0;if((b|0)>=(c[o>>2]|0)?(c[t>>2]|0)==0:0){c[(c[G>>2]|0)+16>>2]=0;k=50;break b}c[(c[G>>2]|0)+16>>2]=1;k=50;break}default:{b=c[L>>2]|0;k=50}}while(0);if((k|0)==50){k=0;if(b|0){k=52;break}c[K>>2]=2}}if((k|0)==52){c[K>>2]=0;a=1;return a|0}else if((k|0)==57){_w(a);a=1;return a|0}else if((k|0)==58){c[H>>2]=1;if(!(c[K>>2]|0)){d=a+152|0;b=c[a+144>>2]|0;if((c[d>>2]|0)<=(b|0)){a=2;return a|0}c[d>>2]=b;a=2;return a|0}else{if(!(c[(c[I>>2]|0)+16>>2]|0)){a=2;return a|0}L=c[a>>2]|0;c[L+20>>2]=62;Sb[c[L>>2]&255](a);a=2;return a|0}}else if((k|0)==63)return b|0;return 0}function Zw(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[b>>2]=90;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;Sb[c[(c[a>>2]|0)+16>>2]&255](a);Sb[c[c[a+464>>2]>>2]&255](a);c[a+160>>2]=0;return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+340|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[(c[a>>2]|0)+28>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}f=a+428|0;g=yw(c[a+28>>2]|0,B(c[f>>2]|0,c[a+316>>2]|0)|0)|0;c[a+360>>2]=g;f=yw(c[a+32>>2]|0,B(c[f>>2]|0,c[a+320>>2]|0)|0)|0;c[a+364>>2]=f;f=a+368|0;c[f>>2]=0;if((c[h>>2]|0)<=0){g=a+468|0;g=c[g>>2]|0;g=c[g>>2]|0;Sb[g&255](a);g=a+452|0;h=c[g>>2]|0;h=c[h>>2]|0;Sb[h&255](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;h=a+460|0;h=c[h>>2]|0;c[h>>2]=g;return}d=0;e=0;while(1){g=c[a+344+(d<<2)>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=B(j,k)|0;c[g+64>>2]=b;i=B(c[g+36>>2]|0,k)|0;c[g+68>>2]=i;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Sb[c[k>>2]&255](a)}if((b|0)>0)while(1){k=c[f>>2]|0;c[f>>2]=k+1;c[a+372+(k<<2)>>2]=d;if((b|0)>1)b=b+-1|0;else break}d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}}else{b=c[a+344>>2]|0;c[a+360>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+364>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;j=c[b+12>>2]|0;k=(k>>>0)%(j>>>0)|0;c[b+76>>2]=(k|0)==0?j:k;c[a+368>>2]=1;c[a+372>>2]=0;b=1}g=a+4|0;f=0;do{d=c[a+344+(f<<2)>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+164+(d<<2)|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}k=Jb[c[c[g>>2]>>2]&63](a,1,132)|0;_O(k|0,c[b>>2]|0,132)|0;c[e>>2]=k;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0));j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}function $w(a){a=a|0;Sb[c[(c[a+468>>2]|0)+8>>2]&255](a);c[c[a+460>>2]>>2]=90;return}function ax(a){a=a|0;Uw(a);return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}d=cx(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(b){e=c[a>>2]|0;c[e+20>>2]=53;Sb[c[e>>2]&255](a)}Vw(a);e=2;return e|0}default:{e=d;return e|0}}return 0}function cx(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;i=b+20|0;d=c[i>>2]|0;switch(d|0){case 200:{d=b+460|0;Sb[c[(c[d>>2]|0)+4>>2]&255](b);Sb[c[(c[b+24>>2]|0)+8>>2]&255](b);c[i>>2]=201;break}case 201:{d=b+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{i=Gb[c[c[b+460>>2]>>2]&127](b)|0;return i|0}case 202:{i=1;return i|0}default:{i=c[b>>2]|0;c[i+20>>2]=21;c[i+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b);i=0;return i|0}}d=Gb[c[c[d>>2]>>2]&127](b)|0;if((d|0)!=1){i=d;return i|0}d=c[b+36>>2]|0;a:do switch(d|0){case 1:{e=d;break}case 3:{f=c[b+216>>2]|0;d=c[f>>2]|0;e=c[f+88>>2]|0;f=c[f+176>>2]|0;h=(d|0)==1;if(!(h&(e|0)==2&(f|0)==3))if(!(h&(e|0)==34&(f|0)==35))if(!((d|0)==82&(e|0)==71&(f|0)==66))if(!((d|0)==114&(e|0)==103&(f|0)==98))if(!(c[b+284>>2]|0)){if(!(c[b+296>>2]|0)){h=c[b>>2]|0;c[h+24>>2]=d;c[h+28>>2]=e;c[h+32>>2]=f;c[h+20>>2]=113;Ub[c[h+4>>2]&63](b,1);e=2;d=3;break a}d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=2;d=2;break a}case 1:{e=2;d=3;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=2;d=3;break a}}}else{e=2;d=3}else{e=2;d=6}else{e=2;d=2}else{e=2;d=7}else{e=2;d=3}break}case 4:{if(!(c[b+296>>2]|0)){e=4;d=4}else{d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=4;d=4;break a}case 2:{e=4;d=5;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=4;d=5;break a}}}break}default:{e=0;d=0}}while(0);c[b+40>>2]=d;c[b+44>>2]=e;h=c[b+428>>2]|0;c[b+48>>2]=h;c[b+52>>2]=h;g[b+56>>3]=1.0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+76>>2]=1;c[b+80>>2]=1;c[b+84>>2]=0;c[b+88>>2]=2;c[b+92>>2]=1;c[b+96>>2]=256;c[b+136>>2]=0;c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;c[i>>2]=202;i=1;return i|0}function dx(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=c[b>>2]|0;if((d+-205|0)>>>0<2?(c[a+64>>2]|0)==0:0){if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){d=c[a>>2]|0;c[d+20>>2]=69;Sb[c[d>>2]&255](a)}Sb[c[(c[a+444>>2]|0)+4>>2]&255](a);c[b>>2]=210}else e=6;a:do if((e|0)==6)switch(d|0){case 210:break a;case 207:{c[b>>2]=210;break a}default:{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a);break a}}while(0);d=a+460|0;b=c[d>>2]|0;b:do if(!(c[b+20>>2]|0)){while(1){if(!(Gb[c[b>>2]&127](a)|0)){b=0;break}b=c[d>>2]|0;if(c[b+20>>2]|0)break b}return b|0}while(0);Sb[c[(c[a+24>>2]|0)+24>>2]&255](a);Vw(a);a=1;return a|0}function ex(a){a=a|0;c[a>>2]=140;c[a+4>>2]=53;c[a+8>>2]=141;c[a+12>>2]=54;c[a+16>>2]=142;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=3824;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function fx(a){a=a|0;Sb[c[(c[a>>2]|0)+8>>2]&255](a);Uw(a);Ea(1)}function gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Sb[c[d+8>>2]&255](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Sb[c[d+8>>2]&255](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function hx(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+208|0;d=b+200|0;e=b;Ub[c[(c[a>>2]|0)+12>>2]&63](a,e);a=c[4001]|0;c[d>>2]=e;Lz(a,46655,d)|0;zb=b;return}function ix(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+48|0;j=k+8|0;i=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;a:while(1){f=e+1|0;switch(a[e>>0]|0){case 0:break a;case 37:{g=12;break a}default:e=f}}if((g|0)==12?(a[f>>0]|0)==115:0){c[i>>2]=h+24;Hx(d,b,i)|0;zb=k;return}n=c[h+28>>2]|0;m=c[h+32>>2]|0;l=c[h+36>>2]|0;e=c[h+40>>2]|0;f=c[h+44>>2]|0;g=c[h+48>>2]|0;i=c[h+52>>2]|0;c[j>>2]=c[h+24>>2];c[j+4>>2]=n;c[j+8>>2]=m;c[j+12>>2]=l;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=i;Hx(d,b,j)|0;zb=k;return}function jx(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function kx(a){a=a|0;return (aa(px(c[a+60>>2]|0)|0)|0)&65535|0}function lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=zb;zb=zb+32|0;h=l;i=l+16|0;j=a+28|0;f=c[j>>2]|0;c[h>>2]=f;k=a+20|0;f=(c[k>>2]|0)-f|0;c[h+4>>2]=f;c[h+8>>2]=b;c[h+12>>2]=d;e=a+60|0;g=2;b=f+d|0;while(1){if(!(nx(da(c[e>>2]|0,h|0,g|0,i|0)|0)|0))f=c[i>>2]|0;else{c[i>>2]=-1;f=-1}if((b|0)==(f|0)){b=6;break}if((f|0)<0){b=8;break}p=c[h+4>>2]|0;n=f>>>0>p>>>0;m=n?h+8|0:h;p=f-(n?p:0)|0;c[m>>2]=(c[m>>2]|0)+p;o=m+4|0;c[o>>2]=(c[o>>2]|0)-p;g=g+(n<<31>>31)|0;b=b-f|0;h=m}if((b|0)==6){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}else if((b|0)==8){c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)d=0;else d=d-(c[h+4>>2]|0)|0}zb=l;return d|0}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+16|0;f=g;if(!(nx(ca(c[a+60>>2]|0,b|0,d|0,e&255|0,f|0)|0)|0)){b=f;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=f;c[a>>2]=-1;c[a+4>>2]=-1;a=-1;b=-1}E(a|0);zb=g;return b|0}function nx(a){a=a|0;var b=0;if(!(a<<16>>16))a=0;else{b=ox()|0;c[b>>2]=a&65535;a=-1}return a|0}function ox(){return 55620}function px(a){a=a|0;return a|0}function qx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;i=l;f=l+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;if(!(nx(ba(c[b+60>>2]|0,i|0,2,f|0)|0)|0)){f=c[f>>2]|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else k=4}else{c[f>>2]=-1;f=-1;k=4}if((k|0)==4)c[b>>2]=f&48^16|c[b>>2];zb=l;return f|0}function rx(a){a=a|0;return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;E(0);return 0}function tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=ux(a,b,c)|0;E(F()|0);return d|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,-1,-1)|0;E(F()|0);return c|0}function vx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+144|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;wx(h,0,0);d=xx(h,d,1,e,f)|0;e=F()|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+120>>2]|0)-(c[g>>2]|0));E(e|0);zb=j;return d|0}function wx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=a+112|0;c[f>>2]=b;c[f+4>>2]=d;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;h=((g|0)<0)<<31>>31;i=a+120|0;c[i>>2]=g;c[i+4>>2]=h;if(((b|0)!=0|(d|0)!=0)&((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>b>>>0))c[a+104>>2]=e+b;else c[a+104>>2]=f;return}function xx(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){h=ox()|0;c[h>>2]=28;h=0;g=0}else{r=b+4|0;q=b+104|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while((zx(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=yx(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((i|32|0)!=120)if(j){o=8;n=47;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((d[5937+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){wx(b,0,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{o=16;n=47}}else{e=j?10:e;if(e>>>0>(d[5937+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;wx(b,0,0);h=ox()|0;c[h>>2]=28;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;do{i=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&i>>>0<429496729);if(e>>>0<10){m=0;do{f=NO(i|0,m|0,10,0)|0;k=F()|0;l=((e|0)<0)<<31>>31;o=~l;if(k>>>0>o>>>0|(k|0)==(o|0)&f>>>0>~e>>>0){f=10;e=m;n=76;break c}i=OO(f|0,k|0,e|0,l|0)|0;m=F()|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&(m>>>0<429496729|(m|0)==429496729&i>>>0<2576980378));if(e>>>0>9){j=p;e=m}else{f=10;e=m;n=76}}else{j=p;e=0}}else{j=p;e=0;i=0}}else{o=e;n=47}while(0);d:do if((n|0)==47){if(!(o+-1&o)){n=a[46659+((o*23|0)>>>5&7)>>0]|0;f=a[5937+i>>0]|0;e=f&255;if(o>>>0>e>>>0){i=0;do{i=e|i<>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;e=f&255}while(i>>>0<134217728&o>>>0>e>>>0);k=e;e=0}else{j=i;k=e;e=0;i=0}l=TO(-1,-1,n|0)|0;m=F()|0;if(o>>>0<=k>>>0|(m>>>0>>0|(m|0)==(e|0)&l>>>0>>0)){f=o;n=76;break}while(1){i=UO(i|0,e|0,n|0)|0;e=F()|0;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0|(e>>>0>m>>>0|(e|0)==(m|0)&i>>>0>l>>>0)){f=o;n=76;break d}}}e=a[5937+i>>0]|0;f=e&255;if(o>>>0>f>>>0){i=0;do{i=f+(B(i,o)|0)|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=a[5937+j>>0]|0;f=e&255}while(i>>>0<119304647&o>>>0>f>>>0);k=e;e=0}else{j=i;k=e;i=0;e=0}if(o>>>0>f>>>0){m=SO(-1,-1,o|0,0)|0;n=F()|0;f=k;while(1){if(e>>>0>n>>>0|(e|0)==(n|0)&i>>>0>m>>>0){f=o;n=76;break d}k=NO(i|0,e|0,o|0,0)|0;l=F()|0;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=o;n=76;break d}i=OO(k|0,l|0,f|0,0)|0;e=F()|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0){f=o;n=76;break}}}else{f=o;n=76}}while(0);if((n|0)==76)if(f>>>0>(d[5937+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while(f>>>0>(d[5937+i>>0]|0)>>>0);j=ox()|0;c[j>>2]=68;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else j=p;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){r=ox()|0;c[r>>2]=68;g=OO(g|0,h|0,-1,-1)|0;h=F()|0;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){r=ox()|0;c[r>>2]=68;break}}g=((j|0)<0)<<31>>31;g=PO(i^j|0,e^g|0,j|0,g|0)|0;h=F()|0}while(0);E(h|0);return g|0}function yx(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+112|0;f=g;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0)?(i=b+120|0,h=c[i+4>>2]|0,!((h|0)<(f|0)|((h|0)==(f|0)?(c[i>>2]|0)>>>0>>0:0))):0)j=4;else{e=Ax(b)|0;if((e|0)>=0){f=c[g>>2]|0;g=c[g+4>>2]|0;i=c[b+8>>2]|0;if(!((f|0)==0&(g|0)==0)){h=c[b+4>>2]|0;k=i-h|0;l=((k|0)<0)<<31>>31;m=b+120|0;f=PO(f|0,g|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=F()|0;g=i;if((m|0)>(l|0)|(m|0)==(l|0)&f>>>0>k>>>0)j=9;else c[b+104>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+104>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;k=g+1-f|0;m=b+120|0;l=m;k=OO(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=F()|0;c[m>>2]=k;c[m+4>>2]=l}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+104>>2]=0;e=-1}return e|0}function zx(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Ax(a){a=a|0;var b=0,e=0;e=zb;zb=zb+16|0;b=e;if((Bx(a)|0)==0?(Jb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;zb=e;return a|0}function Bx(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Jb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Dx(a,b,c)|0;E(F()|0);return d|0}function Dx(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,0,-2147483648)|0;E(F()|0);return c|0}function Ex(a,b){a=+a;b=+b;var d=0,e=0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;g[h>>3]=b;d=c[h+4>>2]&-2147483648|d&2147483647;c[h>>2]=e;c[h+4>>2]=d;return +(+g[h>>3])}function Fx(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gx(a){a=a|0;return (a+-48|0)>>>0<10|0}function Hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Ix(a,b,f)|0;zb=e;return d|0}function Ix(a,b,c){a=a|0;b=b|0;c=c|0;return Jx(a,2147483647,b,c)|0}function Jx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+160|0;g=j+144|0;i=j;_O(i|0,13736,144)|0;if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;h=4}else{d=ox()|0;c[d>>2]=61;d=-1}else h=4;if((h|0)==4){h=-2-b|0;h=d>>>0>h>>>0?h:d;c[i+48>>2]=h;g=i+20|0;c[g>>2]=b;c[i+44>>2]=b;d=b+h|0;b=i+16|0;c[b>>2]=d;c[i+28>>2]=d;d=Kx(i,e,f)|0;if(h){i=c[g>>2]|0;a[i+(((i|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}zb=j;return d|0}function Kx(a,b,c){a=a|0;b=b|0;c=c|0;return Nx(a,b,c,1,55)|0}function Lx(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0;H=zb;zb=zb+560|0;l=H+32|0;u=H+536|0;G=H;E=G;m=H+540|0;c[u>>2]=0;D=m+12|0;dy(e)|0;j=F()|0;if((j|0)<0){e=-e;dy(e)|0;C=1;A=46685;j=F()|0}else{C=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?46686:46691):46688}do if(0==0&(j&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;Yx(b,32,f,j,h&-65537);Rx(b,A,C);Rx(b,e!=e|0.0!=0.0?(G?46727:46712):G?46704:46708,3);Yx(b,32,f,j,h^8192)}else{q=+ey(e,u)*2.0;j=q!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;t=i|32;if((t|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[r>>0]|0)==45){e=-(e+(-q-e));break}else{e=q+e-e;break}}else e=q;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Wx(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;a[n>>0]=i+15;k=(g|0)<1;l=(h&8|0)==0;m=G;do{C=~~e;j=m+1|0;a[m>>0]=o|d[6672+C>>0];e=(e-+(C|0))*16.0;if((j-E|0)==1?!(l&(k&e==0.0)):0){a[j>>0]=46;m=m+2|0}else m=j}while(e!=0.0);if((g|0)!=0?(-2-E+m|0)<(g|0):0){k=D;l=n;j=g+2+k-l|0}else{k=D;l=n;j=k-E-l+m|0}D=j+p|0;Yx(b,32,f,D,h);Rx(b,r,p);Yx(b,48,f,D,h^65536);E=m-E|0;Rx(b,G,E);G=k-l|0;Yx(b,48,j-(E+G)|0,0,0);Rx(b,n,G);Yx(b,32,f,D,h^8192);j=D;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=q*268435456.0}else{e=q;j=c[u>>2]|0}z=(j|0)<0?l:l+288|0;l=z;do{x=~~e>>>0;c[l>>2]=x;l=l+4|0;e=(e-+(x>>>0))*1.0e9}while(e!=0.0);x=z;if((j|0)>0){o=z;while(1){n=(j|0)<29?j:29;j=l+-4|0;if(j>>>0>=o>>>0){m=0;do{s=UO(c[j>>2]|0,0,n|0)|0;s=OO(s|0,F()|0,m|0,0)|0;v=F()|0;m=SO(s|0,v|0,1e9,0)|0;w=NO(m|0,F()|0,1e9,0)|0;w=PO(s|0,v|0,w|0,F()|0)|0;F()|0;c[j>>2]=w;j=j+-4|0}while(j>>>0>=o>>>0);if(m){w=o+-4|0;c[w>>2]=m;m=w}else m=o}else m=o;a:do if(l>>>0>m>>>0){j=l;while(1){l=j+-4|0;if(c[l>>2]|0){l=j;break a}if(l>>>0>m>>>0)j=l;else break}}while(0);j=(c[u>>2]|0)-n|0;c[u>>2]=j;if((j|0)>0)o=m;else break}}else m=z;if((j|0)<0){g=((k+25|0)/9|0)+1|0;s=(t|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{w=c[j>>2]|0;c[j>>2]=(w>>>r)+p;p=B(w&n,o)|0;j=j+4|0}while(j>>>0>>0);m=(c[m>>2]|0)==0?m+4|0:m;if(p){c[l>>2]=p;l=l+4|0}}else m=(c[m>>2]|0)==0?m+4|0:m;j=s?z:m;l=(l-j>>2|0)>(g|0)?j+(g<<2)|0:l;j=(c[u>>2]|0)+r|0;c[u>>2]=j}while((j|0)<0);s=m}else s=m;if(s>>>0>>0){j=(x-s>>2)*9|0;n=c[s>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;v=(t|0)==103;w=(k|0)!=0;m=k-((t|0)==102?0:j)+((w&v)<<31>>31)|0;if((m|0)<(((l-x>>2)*9|0)+-9|0)){u=m+9216|0;m=(u|0)/9|0;g=z+4+(m+-1024<<2)|0;m=u-(m*9|0)|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;p=c[g>>2]|0;m=(p>>>0)/(n>>>0)|0;r=p-(B(m,n)|0)|0;o=(g+4|0)==(l|0);if(!(o&(r|0)==0)){q=(m&1|0)==0?9007199254740992.0:9007199254740994.0;u=n>>>1;e=r>>>0>>0?.5:o&(r|0)==(u|0)?1.0:1.5;if(C){u=(a[A>>0]|0)==45;e=u?-e:e;q=u?-q:q}m=p-r|0;c[g>>2]=m;if(q+e!=q){u=m+n|0;c[g>>2]=u;if(u>>>0>999999999){n=g;j=s;while(1){m=n+-4|0;c[n>>2]=0;if(m>>>0>>0){j=j+-4|0;c[j>>2]=0}u=(c[m>>2]|0)+1|0;c[m>>2]=u;if(u>>>0>999999999)n=m;else{n=j;break}}}else{m=g;n=s}j=(x-n>>2)*9|0;p=c[n>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;j=j+1|0}while(p>>>0>=o>>>0)}}else{m=g;n=s}}else{m=g;n=s}u=m+4|0;l=l>>>0>u>>>0?u:l}else n=s;g=0-j|0;b:do if(l>>>0>n>>>0)while(1){m=l+-4|0;if(c[m>>2]|0){u=l;t=1;break b}if(m>>>0>n>>>0)l=m;else{u=m;t=0;break}}else{u=l;t=0}while(0);do if(v){k=k+((w^1)&1)|0;if((k|0)>(j|0)&(j|0)>-5){o=i+-1|0;k=k+-1-j|0}else{o=i+-2|0;k=k+-1|0}if(!(h&8)){if(t?(y=c[u+-4>>2]|0,(y|0)!=0):0)if(!((y>>>0)%10|0)){m=0;l=10;do{l=l*10|0;m=m+1|0}while(!((y>>>0)%(l>>>0)|0|0))}else m=0;else m=9;l=((u-x>>2)*9|0)+-9|0;if((o|32|0)==102){i=l-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}else{i=l+j-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}}}else o=i;while(0);s=(k|0)!=0;p=s?1:h>>>3&1;r=(o|32|0)==102;if(r){v=0;j=(j|0)>0?j:0}else{l=(j|0)<0?g:j;l=Wx(l,((l|0)<0)<<31>>31,D)|0;m=D;if((m-l|0)<2)do{l=l+-1|0;a[l>>0]=48}while((m-l|0)<2);a[l+-1>>0]=(j>>31&2)+43;j=l+-2|0;a[j>>0]=o;v=j;j=m-j|0}j=C+1+k+p+j|0;Yx(b,32,f,j,h);Rx(b,A,C);Yx(b,48,f,j,h^65536);if(r){p=n>>>0>z>>>0?z:n;r=G+9|0;n=r;o=G+8|0;m=p;do{l=Wx(c[m>>2]|0,0,r)|0;if((m|0)==(p|0)){if((l|0)==(r|0)){a[o>>0]=48;l=o}}else if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,n-l|0);m=m+4|0}while(m>>>0<=z>>>0);if(!((h&8|0)==0&(s^1)))Rx(b,46716,1);if(m>>>0>>0&(k|0)>0)while(1){l=Wx(c[m>>2]|0,0,r)|0;if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}Yx(b,48,k+9|0,9,0)}else{u=t?u:n+4|0;if(n>>>0>>0&(k|0)>-1){g=G+9|0;s=(h&8|0)==0;t=g;p=0-E|0;r=G+8|0;o=n;do{l=Wx(c[o>>2]|0,0,g)|0;if((l|0)==(g|0)){a[r>>0]=48;l=r}do if((o|0)==(n|0)){m=l+1|0;Rx(b,l,1);if(s&(k|0)<1){l=m;break}Rx(b,46716,1);l=m}else{if(l>>>0<=G>>>0)break;aP(G|0,48,l+p|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}while(0);E=t-l|0;Rx(b,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}Yx(b,48,k+18|0,18,0);Rx(b,v,D-v|0)}Yx(b,32,f,j,h^8192)}while(0);zb=H;return ((j|0)<(f|0)?f:j)|0}function Mx(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=(c[b>>2]|0)+(8-1)&~(8-1);d=+g[e>>3];c[b>>2]=e+8;g[a>>3]=d;return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+224|0;p=t+208|0;q=t+160|0;r=t+80|0;s=t;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[p>>2]=c[e>>2];if((Ox(0,d,p,r,q,f,g)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=Px(b)|0;else o=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;h=b+48|0;if(!(c[h>>2]|0)){i=b+44|0;j=c[i>>2]|0;c[i>>2]=s;k=b+28|0;c[k>>2]=s;l=b+20|0;c[l>>2]=s;c[h>>2]=80;m=b+16|0;c[m>>2]=s+80;e=Ox(b,d,p,r,q,f,g)|0;if(j){Jb[c[b+36>>2]&63](b,0,0)|0;e=(c[l>>2]|0)==0?-1:e;c[i>>2]=j;c[h>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else e=Ox(b,d,p,r,q,f,g)|0;h=c[b>>2]|0;c[b>>2]=h|n;if(o|0)Qx(b);e=(h&32|0)==0?e:-1}zb=t;return e|0}function Ox(d,e,f,h,i,j,k){d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0;J=zb;zb=zb+64|0;G=J+56|0;I=J+40|0;A=J;C=J+48|0;D=J+60|0;c[G>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=C+4|0;l=0;e=0;n=0;a:while(1){do{do if((e|0)>-1)if((l|0)>(2147483647-e|0)){e=ox()|0;c[e>>2]=61;e=-1;break}else{e=l+e|0;break}while(0);r=c[G>>2]|0;l=a[r>>0]|0;if(!(l<<24>>24)){w=92;break a}m=r;b:while(1){switch(l<<24>>24){case 37:{w=10;break b}case 0:{l=m;break b}default:{}}v=m+1|0;c[G>>2]=v;l=a[v>>0]|0;m=v}c:do if((w|0)==10){w=0;l=m;do{if((a[m+1>>0]|0)!=37)break c;l=l+1|0;m=m+2|0;c[G>>2]=m}while((a[m>>0]|0)==37)}while(0);l=l-r|0;if(x)Rx(d,r,l)}while((l|0)!=0);v=(Gx(a[(c[G>>2]|0)+1>>0]|0)|0)==0;m=c[G>>2]|0;if(!v?(a[m+2>>0]|0)==36:0){t=(a[m+1>>0]|0)+-48|0;p=1;l=3}else{t=-1;p=n;l=1}l=m+l|0;c[G>>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0;if(n>>>0>31|(1<>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0}while(!(n>>>0>31|(1<>24==42){if((Gx(a[l+1>>0]|0)|0)!=0?(H=c[G>>2]|0,(a[H+2>>0]|0)==36):0){l=H+1|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;n=1;m=H+3|0}else{if(p|0){e=-1;break}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);l=c[v>>2]|0;c[f>>2]=v+4}else l=0;n=0;m=(c[G>>2]|0)+1|0}c[G>>2]=m;v=(l|0)<0;u=v?0-l|0:l;o=v?o|8192:o;v=n}else{l=Sx(G)|0;if((l|0)<0){e=-1;break}u=l;v=p;m=c[G>>2]|0}do if((a[m>>0]|0)==46){l=m+1|0;if((a[l>>0]|0)!=42){c[G>>2]=l;l=Sx(G)|0;m=c[G>>2]|0;break}if(Gx(a[m+2>>0]|0)|0?(E=c[G>>2]|0,(a[E+3>>0]|0)==36):0){l=E+2|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;m=E+4|0;c[G>>2]=m;break}if(v|0){e=-1;break a}if(x){s=(c[f>>2]|0)+(4-1)&~(4-1);l=c[s>>2]|0;c[f>>2]=s+4}else l=0;m=(c[G>>2]|0)+2|0;c[G>>2]=m}else l=-1;while(0);s=0;while(1){if(((a[m>>0]|0)+-65|0)>>>0>57){e=-1;break a}n=m;m=m+1|0;c[G>>2]=m;n=a[(a[n>>0]|0)+-65+(6208+(s*58|0))>>0]|0;p=n&255;if((p+-1|0)>>>0>=8)break;else s=p}if(!(n<<24>>24)){e=-1;break}q=(t|0)>-1;do if(n<<24>>24==19)if(q){e=-1;break a}else w=54;else{if(q){c[i+(t<<2)>>2]=p;q=h+(t<<3)|0;t=c[q+4>>2]|0;w=I;c[w>>2]=c[q>>2];c[w+4>>2]=t;w=54;break}if(!x){e=0;break a}Tx(I,p,f,k);m=c[G>>2]|0;w=55}while(0);if((w|0)==54){w=0;if(x)w=55;else l=0}d:do if((w|0)==55){w=0;m=a[m+-1>>0]|0;m=(s|0)!=0&(m&15|0)==3?m&-33:m;n=o&-65537;t=(o&8192|0)==0?o:n;e:do switch(m|0){case 110:switch((s&255)<<24>>24){case 0:{c[c[I>>2]>>2]=e;l=0;break d}case 1:{c[c[I>>2]>>2]=e;l=0;break d}case 2:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}case 3:{b[c[I>>2]>>1]=e;l=0;break d}case 4:{a[c[I>>2]>>0]=e;l=0;break d}case 6:{c[c[I>>2]>>2]=e;l=0;break d}case 7:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}default:{l=0;break d}}case 112:{m=120;l=l>>>0>8?l:8;n=t|8;w=67;break}case 88:case 120:{n=t;w=67;break}case 111:{q=I;q=Vx(c[q>>2]|0,c[q+4>>2]|0,y)|0;n=z-q|0;o=0;p=46668;l=(t&8|0)==0|(l|0)>(n|0)?l:n+1|0;n=t;w=73;break}case 105:case 100:{n=I;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){m=PO(0,0,m|0,n|0)|0;n=F()|0;o=I;c[o>>2]=m;c[o+4>>2]=n;o=1;p=46668;w=72;break e}else{o=(t&2049|0)!=0&1;p=(t&2048|0)==0?((t&1|0)==0?46668:46670):46669;w=72;break e}}case 117:{n=I;o=0;p=46668;m=c[n>>2]|0;n=c[n+4>>2]|0;w=72;break}case 99:{a[A>>0]=c[I>>2];r=A;o=0;p=46668;q=1;m=n;l=z;break}case 115:{s=c[I>>2]|0;s=(s|0)==0?46678:s;t=Xx(s,0,l)|0;K=(t|0)==0;r=s;o=0;p=46668;q=K?l:t-s|0;m=n;l=K?s+l|0:t;break}case 67:{c[C>>2]=c[I>>2];c[B>>2]=0;c[I>>2]=C;p=-1;w=79;break}case 83:{if(!l){Yx(d,32,u,0,t);l=0;w=89}else{p=l;w=79}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{l=Hb[j&1](d,+g[I>>3],u,l,t,m)|0;break d}default:{o=0;p=46668;q=l;m=t;l=z}}while(0);f:do if((w|0)==67){q=I;q=Ux(c[q>>2]|0,c[q+4>>2]|0,y,m&32)|0;p=I;p=(n&8|0)==0|(c[p>>2]|0)==0&(c[p+4>>2]|0)==0;o=p?0:2;p=p?46668:46668+(m>>>4)|0;w=73}else if((w|0)==72){q=Wx(m,n,y)|0;n=t;w=73}else if((w|0)==79){w=0;o=c[I>>2]|0;l=0;while(1){m=c[o>>2]|0;if(!m)break;m=Zx(D,m)|0;n=(m|0)<0;if(n|m>>>0>(p-l|0)>>>0){w=83;break}l=m+l|0;if(p>>>0>l>>>0)o=o+4|0;else break}if((w|0)==83){w=0;if(n){e=-1;break a}}Yx(d,32,u,l,t);if(!l){l=0;w=89}else{n=c[I>>2]|0;o=0;while(1){m=c[n>>2]|0;if(!m){w=89;break f}m=Zx(D,m)|0;o=m+o|0;if((o|0)>(l|0)){w=89;break f}Rx(d,D,m);if(o>>>0>=l>>>0){w=89;break}else n=n+4|0}}}while(0);if((w|0)==73){w=0;m=I;m=(c[m>>2]|0)!=0|(c[m+4>>2]|0)!=0;K=(l|0)!=0|m;m=z-q+((m^1)&1)|0;r=K?q:y;q=K?((l|0)>(m|0)?l:m):0;m=(l|0)>-1?n&-65537:n;l=z}else if((w|0)==89){w=0;Yx(d,32,u,l,t^8192);l=(u|0)>(l|0)?u:l;break}t=l-r|0;s=(q|0)<(t|0)?t:q;K=s+o|0;l=(u|0)<(K|0)?K:u;Yx(d,32,l,K,m);Rx(d,p,o);Yx(d,48,l,K,m^65536);Yx(d,48,s,t,0);Rx(d,r,t);Yx(d,32,l,K,m^8192)}while(0);n=v}g:do if((w|0)==92)if(!d)if(!n)e=0;else{e=1;while(1){l=c[i+(e<<2)>>2]|0;if(!l)break;Tx(h+(e<<3)|0,l,f,k);e=e+1|0;if(e>>>0>=10){e=1;break g}}while(1){if(c[i+(e<<2)>>2]|0){e=-1;break g}e=e+1|0;if(e>>>0>=10){e=1;break}}}while(0);zb=J;return e|0}function Px(a){a=a|0;return 1}function Qx(a){a=a|0;return}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))by(b,d,a)|0;return}function Sx(b){b=b|0;var d=0,e=0;if(!(Gx(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((Gx(a[e>>0]|0)|0)!=0)}return d|0}function Tx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);e=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=e;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);h=+g[f>>3];c[d>>2]=f+8;g[a>>3]=h;break a}case 18:{Ub[e&63](a,d);break a}default:break a}while(0);while(0);return}function Ux(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6672+(b&15)>>0]|0|f;b=TO(b|0,c|0,4)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return e|0}function Vx(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=TO(b|0,c|0,3)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return d|0}function Wx(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){do{e=b;b=SO(b|0,c|0,10,0)|0;f=c;c=F()|0;g=NO(b|0,c|0,10,0)|0;g=PO(e|0,f|0,g|0,F()|0)|0;F()|0;d=d+-1|0;a[d>>0]=g&255|48}while(f>>>0>9|(f|0)==9&e>>>0>4294967295);c=b}else c=b;if(c)do{g=c;c=(c>>>0)/10|0;d=d+-1|0;a[d>>0]=g-(c*10|0)|48}while(g>>>0>=10);return d|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else i=16;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)==g<<24>>24)if(!e){i=16;break}else break;f=B(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break c;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break}}else i=11;while(0);if((i|0)==11)if(!e){i=16;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;e=e+-1|0;if(!e){i=16;break}else b=b+1|0}}while(0);if((i|0)==16)b=0;return b|0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;aP(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Rx(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Rx(a,f,e)}zb=g;return}function Zx(a,b){a=a|0;b=b|0;if(!a)a=0;else a=_x(a,b,0)|0;return a|0}function _x(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}e=($x()|0)+188|0;if(!(c[c[e>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}}else b=1;while(0);return b|0}function $x(){return ay()|0}function ay(){return 16020}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(cy(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=Jb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){h=0;g=b}else{i=d;while(1){g=i+-1|0;if((a[b+g>>0]|0)==10)break;if(!g){h=0;g=b;break b}else i=g}f=Jb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}while(0);_O(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function cy(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function dy(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function ey(a,b){a=+a;b=b|0;var d=0,e=0,f=0;g[h>>3]=a;d=c[h>>2]|0;e=c[h+4>>2]|0;f=TO(d|0,e|0,52)|0;F()|0;switch(f&2047){case 0:{if(a!=0.0){a=+ey(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[h>>2]=d;c[h+4>>2]=e&-2146435073|1071644672;a=+g[h>>3]}}return +a}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;_O(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function gy(){return 16264}function hy(){var a=0;a=(iy()|0)+188|0;return ((c[c[a>>2]>>2]|0)==0?1:4)|0}function iy(){return ay()|0}function jy(){return 16268}function ky(){return 16272}function ly(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function my(a){a=a|0;return (((a|32)+-97|0)>>>0<6|(Gx(a)|0)!=0)&1|0}function ny(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ox()|0;c[b>>2]=0-a;a=-1}return a|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=zb;zb=zb+208|0;j=m;k=m+192|0;h=B(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)py(a,d,e,f,j);else ry(a,d,e,k,f,0,j);if((f|0)==1){sy(k,1);f=0;break}else{sy(k,b);f=1;break}}else{py(a,d,e,f,j);qy(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}ry(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{sy(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;qy(k,1);ry(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);sy(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;ry(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=ty(k)|0;qy(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);zb=m;return}function py(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Ib[d&63](h,a)|0)>-1?(Ib[d&63](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Ib[d&63](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);vy(b,l,e);zb=m;return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function ry(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=zb;zb=zb+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Ib[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Ib[d&63](g,j)|0)>-1){i=10;break a}if((Ib[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=ty(m)|0;qy(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Ib[d&63](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){vy(b,n,e);py(a,b,d,f,h)}zb=o;return}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=uy(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function uy(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function vy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=zb;zb=zb+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;_O(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;_O(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);zb=h;return}function wy(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[10528+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=10624;else{b=f;g=5}if((g|0)==5){f=10624;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return xy(f,c[e+20>>2]|0)|0}function xy(a,b){a=a|0;b=b|0;return yy(a,b)|0}function yy(a,b){a=a|0;b=b|0;if(!b)b=0;else b=zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Ay(c[b+8>>2]|0,o)|0;f=Ay(c[b+12>>2]|0,o)|0;g=Ay(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Ay(c[b+(g<<2)>>2]|0,o)|0;g=Ay(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fx(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Ay(c[b+(f<<2)>>2]|0,o)|0;f=Ay(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Ay(a,b){a=a|0;b=b|0;var c=0;c=WO(a|0)|0;return ((b|0)==0?a:c)|0}function By(a){a=a|0;var b=0;b=(Cy()|0)+188|0;return wy(a,c[b>>2]|0)|0}function Cy(){return ay()|0}function Dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+104|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0}while((zx(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=yx(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;while(1){if((h|32|0)!=(a[46718+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=8){e=8;break}}c:do switch(e&2147483647|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;while(1){if((h|32|0)!=(a[46727+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=3){e=3;break}}}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|0)!=40){if(!(c[n>>2]|0)){g=q;break a}c[o>>2]=(c[o>>2]|0)+-1;g=q;break a}e=1;while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=yx(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=q;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}if(!e){g=q;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=q;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|32|0)==120){g=+Ey(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+Fy(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*r}while(0);return +g}function Ey(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+104|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=0;a:while(1){switch(i|0){case 46:{w=10;break a}case 48:break;default:{p=0;m=j;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=1}if((w|0)==10){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;if((i|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;l=OO(l|0,j|0,-1,-1)|0;j=F()|0}while((i|0)==48);p=1;m=1}else{p=1;m=j;l=0;j=0}}o=0;n=1.0;h=0.0;v=0;s=p;t=m;u=0;m=0;while(1){q=i+-48|0;p=i|32;if(q>>>0>=10){r=(i|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=n;q=v;r=t;l=m;j=u;p=u}else{i=46;break}else w=24}else w=24;if((w|0)==24){w=0;i=(i|0)>57?p+-87|0:q;do if(!((u|0)<0|(u|0)==0&m>>>0<8))if((u|0)<0|(u|0)==0&m>>>0<14){n=n*.0625;k=n;h=h+n*+(i|0);i=v;break}else{i=(o|0)!=0|(i|0)==0;o=i?o:1;k=n;h=i?h:h+n*.5;i=v;break}else{k=n;i=i+(v<<4)|0}while(0);m=OO(m|0,u|0,1,0)|0;q=i;r=1;p=F()|0}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;n=k;v=q;t=r;u=p}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i?(c[y>>2]=(c[y>>2]|0)+-1,!((s|0)==0|i)):0)c[y>>2]=(c[y>>2]|0)+-1}else wx(a,0,0);h=+(f|0)*0.0}else{o=(s|0)==0;p=o?m:l;o=o?u:j;if((u|0)<0|(u|0)==0&m>>>0<8){j=v;l=u;do{j=j<<4;w=m;m=OO(m|0,l|0,1,0)|0;v=l;l=F()|0}while((v|0)<0|(v|0)==0&w>>>0<7);m=j}else m=v;if((i|32|0)==112){j=Gy(a,g)|0;i=F()|0;if((j|0)==0&(i|0)==-2147483648){if(!g){wx(a,0,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=UO(p|0,o|0,2)|0;l=OO(l|0,F()|0,-32,-1)|0;l=OO(l|0,F()|0,j|0,i|0)|0;i=F()|0;if(!m){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=OO(l|0,i|0,-1,-1)|0;i=F()|0}while((j|0)>-1);n=h;m=j}else n=h;y=((b|0)<0)<<31>>31;e=PO(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=OO(e|0,F()|0,l|0,i|0)|0;e=F()|0;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=65;else{j=0;i=84;w=67}else{i=b;w=65}if((w|0)==65)if((i|0)<53){j=i;i=84-i|0;w=67}else{k=0.0;h=+(f|0)}if((w|0)==67){h=+(f|0);k=+Iy(+Hy(1.0,i),h);i=j}f=(m&1|0)==0&(n!=0.0&(i|0)<32);h=(f?0.0:n)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0)){f=ox()|0;c[f>>2]=68}h=+Ky(h,l)}while(0);return +h}function Fy(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0.0;I=zb;zb=zb+512|0;E=I;G=f+e|0;H=0-G|0;D=a+4|0;C=a+104|0;j=0;a:while(1){switch(b|0){case 46:{z=7;break a}case 48:break;default:{v=0;p=j;j=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;j=1}if((z|0)==7){b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48){j=0;b=0;while(1){j=OO(j|0,b|0,-1,-1)|0;o=F()|0;b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48)b=o;else{v=1;p=1;break}}}else{v=1;p=j;j=0;o=0}}c[E>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=E+496|0;w=0;l=0;s=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;j=p;o=n}else break c;else{p=OO(p|0,n|0,1,0)|0;n=F()|0;v=(b|0)!=48;if((l|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=E+(l<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;l=l+(y&1)|0;s=v?p:s;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=31;break b}}b=w;m=(y|0)!=0;z=39}else{w=0;l=0;s=0;m=p;p=0;n=0;z=31}while(0);do if((z|0)==31){A=(v|0)==0;j=A?p:j;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=39;break}else{b=w;z=41;break}m=Gy(a,h)|0;b=F()|0;if((m|0)==0&(b|0)==-2147483648){if(!h){wx(a,0,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}j=OO(m|0,b|0,j|0,o|0)|0;b=w;o=F()|0;z=43}while(0);if((z|0)==39)if(c[C>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m)z=43;else z=42}else z=41;if((z|0)==41)if(m)z=43;else z=42;do if((z|0)==42){H=ox()|0;c[H>>2]=28;wx(a,0,0);i=0.0}else if((z|0)==43){m=c[E>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((j|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&j>>>0>a>>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&j>>>0>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=E+(l<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}l=l+1|0}if((s|0)<9?(s|0)<=(j|0)&(j|0)<18:0){if((j|0)==9){i=+(g|0)*+((c[E>>2]|0)>>>0);break}if((j|0)<9){i=+(g|0)*+((c[E>>2]|0)>>>0)/+(c[12432+(8-j<<2)>>2]|0);break}a=e+27+(B(j,-3)|0)|0;b=c[E>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[12432+(j+-10<<2)>>2]|0);break}}b=(j|0)%9|0;if(!b)m=0;else{s=(j|0)>-1?b:b+9|0;o=c[12432+(8-s<<2)>>2]|0;if(l){p=1e9/(o|0)|0;n=0;m=0;b=0;do{C=E+(b<<2)|0;D=c[C>>2]|0;a=(D>>>0)/(o>>>0)|0;D=D-(B(a,o)|0)|0;a=a+n|0;c[C>>2]=a;n=B(p,D)|0;a=(b|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;b=b+1|0}while((b|0)!=(l|0));if(!n)b=l;else{c[E+(l<<2)>>2]=n;b=l+1|0}}else{m=0;b=0}l=b;j=9-s+j|0}b=0;d:while(1){v=(j|0)<18;w=(j|0)==18;x=E+(m<<2)|0;while(1){if(!v){if(!w)break d;if((c[x>>2]|0)>>>0>=9007199){j=18;break d}}n=0;y=l;l=l+127|0;while(1){p=l&127;o=E+(p<<2)|0;l=UO(c[o>>2]|0,0,29)|0;l=OO(l|0,F()|0,n|0,0)|0;n=F()|0;if(n>>>0>0|(n|0)==0&l>>>0>1e9){s=SO(l|0,n|0,1e9,0)|0;a=NO(s|0,F()|0,1e9,0)|0;l=PO(l|0,n|0,a|0,F()|0)|0;F()|0}else s=0;c[o>>2]=l;a=(p|0)==(m|0);o=(p|0)!=(y+127&127|0)|a?y:(l|0)==0?p:y;if(a)break;else{n=s;y=o;l=p+-1|0}}b=b+-29|0;if(!s)l=y;else break}m=m+127&127;l=o+127&127;n=E+((o+126&127)<<2)|0;if((m|0)==(o|0))c[n>>2]=c[n>>2]|c[E+(l<<2)>>2];else l=y;c[E+(m<<2)>>2]=s;j=j+9|0}e:while(1){w=l+1&127;x=E+((l+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){o=0;while(1){m=o+y&127;if((m|0)==(l|0)){z=92;break}m=c[E+(m<<2)>>2]|0;n=c[16276+(o<<2)>>2]|0;if(m>>>0>>0){z=92;break}if(m>>>0>n>>>0)break;if((o+1|0)>>>0<2)o=1;else{z=92;break}}if((z|0)==92?(z=0,p):0)break e;b=v+b|0;if((y|0)==(l|0))y=l;else break}p=(1<>>v;o=0;m=y;n=y;do{C=E+(n<<2)|0;D=c[C>>2]|0;a=(D>>>v)+o|0;c[C>>2]=a;o=B(D&p,s)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(l|0));if(o|0){if((w|0)!=(m|0))break;c[x>>2]=c[x>>2]|1}}c[E+(l<<2)>>2]=o;l=w}i=0.0;j=l;m=0;do{n=m+y&127;l=j+1&127;if((n|0)==(j|0)){c[E+(l+-1<<2)>>2]=0;j=l}i=i*1.0e9+ +((c[E+(n<<2)>>2]|0)>>>0);m=m+1|0}while((m|0)!=2);u=+(g|0);k=i*u;n=b+53|0;o=n-f|0;p=(o|0)<(e|0);m=p?((o|0)>0?o:0):e;if((m|0)<53){J=+Iy(+Hy(1.0,105-m|0),k);q=+Jy(k,+Hy(1.0,53-m|0));r=J;i=q;q=J+(k-q)}else{r=0.0;i=0.0;q=k}l=y+2&127;if((l|0)!=(j|0)){l=c[E+(l<<2)>>2]|0;do if(l>>>0>=5e8){if((l|0)!=5e8){i=u*.75+i;break}if((y+3&127|0)==(j|0)){i=u*.5+i;break}else{i=u*.75+i;break}}else{if((l|0)==0?(y+3&127|0)==(j|0):0)break;i=u*.25+i}while(0);if((53-m|0)>1?!(+Jy(i,1.0)!=0.0):0)k=i+1.0;else k=i}else k=i;i=q+k-r;do if((n&2147483647|0)>(-2-G|0)){G=!(+t(+i)>=9007199254740992.0);b=b+((G^1)&1)|0;i=G?i:i*.5;if((b+50|0)<=(H|0)?!(k!=0.0&(p&((m|0)!=(o|0)|G))):0)break;H=ox()|0;c[H>>2]=68}while(0);i=+Ky(i,b)}while(0);zb=I;return +i}function Gy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=a+4|0;e=c[i>>2]|0;j=a+104|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;f=d[e>>0]|0}else f=yx(a)|0;switch(f|0){case 43:case 45:{g=(f|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;f=e+-48|0;if((b|0)!=0&f>>>0>9)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;k=14}else k=12;break}default:{g=0;e=f;f=f+-48|0;k=12}}if((k|0)==12)if(f>>>0>9)k=14;else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&(f|0)<214748364);h=((f|0)<0)<<31>>31;if(b>>>0<10){do{l=NO(f|0,h|0,10,0)|0;b=F()|0;e=OO(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=OO(e|0,F()|0,l|0,b|0)|0;h=F()|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&((h|0)<21474836|(h|0)==21474836&f>>>0<2061584302));if(b>>>0<10){do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0}while((e+-48|0)>>>0<10);e=h}else e=h}else e=h;if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;j=(g|0)==0;i=PO(0,0,f|0,e|0)|0;l=F()|0;f=j?f:i;e=j?e:l}if((k|0)==14)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;f=0;e=-2147483648}E(e|0);return f|0}function Hy(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=UO(b+1023|0,0,52)|0;e=F()|0;c[h>>2]=d;c[h+4>>2]=e;return +(a*+g[h>>3])}function Iy(a,b){a=+a;b=+b;return +(+Ex(a,b))}function Jy(a,b){a=+a;b=+b;return +(+Ly(a,b))}function Ky(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function Ly(a,b){a=+a;b=+b;var d=0,e=0,f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g[h>>3]=a;j=c[h>>2]|0;l=c[h+4>>2]|0;g[h>>3]=b;n=c[h>>2]|0;o=c[h+4>>2]|0;e=TO(j|0,l|0,52)|0;F()|0;e=e&2047;m=TO(n|0,o|0,52)|0;F()|0;m=m&2047;p=l&-2147483648;i=UO(n|0,o|0,1)|0;k=F()|0;a:do if(!((i|0)==0&(k|0)==0)?(f=My(b)|0,d=(F()|0)&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=UO(j|0,l|0,1)|0;f=F()|0;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>i>>>0))return +((d|0)==(i|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=UO(j|0,l|0,12)|0;f=F()|0;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=UO(d|0,f|0,1)|0;f=F()|0}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;j=UO(j|0,l|0,1-e|0)|0;i=F()|0}else i=l&1048575|1048576;if(!m){f=UO(n|0,o|0,12)|0;k=F()|0;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=UO(f|0,k|0,1)|0;k=F()|0}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=UO(n|0,o|0,1-d|0)|0;m=d;l=F()|0}else l=o&1048575|1048576;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=j;d=i}j=UO(f|0,d|0,1)|0;i=F()|0;e=e+-1|0;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=i;f=j}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=UO(f|0,d|0,1)|0;d=F()|0;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=OO(f|0,d|0,0,-1048576)|0;d=F()|0;e=UO(e|0,0,52)|0;d=d|(F()|0);e=o|e}else{e=TO(f|0,d|0,1-e|0)|0;d=F()|0}c[h>>2]=e;c[h+4>>2]=d|p;b=+g[h>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function My(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function Ny(a){a=a|0;return 0}function Oy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Py(a,b){a=a|0;b=b|0;return -1|0}function Qy(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ny(_(91,e|0)|0)|0;zb=d;return b|0}function Sy(b,c){b=b|0;c=c|0;b=Ty(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Ty(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Qy(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=B(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Uy(){return}function Vy(a){a=a|0;if(Wy(a)|0)GO(a);return}function Wy(a){a=a|0;return (a|0)!=15980&((a|0)!=0&(a|0)!=55596)&1|0}function Xy(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;h=l;j=(g|0)==0?55624:g;g=c[j>>2]|0;a:do if(!e)if(!g)g=0;else k=19;else{i=(b|0)==0?h:b;if(!f)g=-2;else{if(!g){g=a[e>>0]|0;if(g<<24>>24>-1){c[i>>2]=g&255;g=g<<24>>24!=0&1;break}h=(Yy()|0)+188|0;g=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=g<<24>>24&57343;g=1;break}g=(g&255)+-194|0;if(g>>>0>50){k=19;break}g=c[5728+(g<<2)>>2]|0;h=f+-1|0;if(h){e=e+1|0;k=11}}else{h=f;k=11}b:do if((k|0)==11){b=d[e>>0]|0;m=b>>>3;if((m+-16|m+(g>>26))>>>0>7){k=19;break a}g=b+-128|g<<6;b=h+-1|0;if((g|0)<0)do{e=e+1|0;if(!b)break b;h=a[e>>0]|0;if((h&-64)<<24>>24!=-128){k=19;break a}g=(h&255)+-128|g<<6;b=b+-1|0}while((g|0)<0);c[j>>2]=0;c[i>>2]=g;g=f-b|0;break a}while(0);c[j>>2]=g;g=-2}}while(0);if((k|0)==19){c[j>>2]=0;g=ox()|0;c[g>>2]=25;g=-1}zb=l;return g|0}function Yy(){return ay()|0}function Zy(a,b){a=a|0;b=b|0;return Gx(a)|0}function _y(a,b){a=a|0;b=b|0;return my(a)|0}function $y(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+272|0;m=o;n=o+256|0;do if(!(a[d>>0]|0)){d=Ja(46731)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(12464+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(46738)|0;if(d|0?a[d>>0]|0:0)break;d=46743}while(0);e=0;a:while(1){switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0;if(e>>>0>=15){e=15;break}}f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)l=15;else{k=d;l=16}else{d=46743;l=15}if((l|0)==15)if(!(a[d+1>>0]|0))l=18;else{k=d;l=16}b:do if((l|0)==16)if((Fx(k,46743)|0)!=0?(Fx(k,46751)|0)!=0:0){d=c[13907]|0;if(d|0)do{if(!(Fx(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);U(55632);d=c[13907]|0;c:do if(d|0){while(1){if(!(Fx(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}$(55632);break b}while(0);d:do if(((c[13885]|0)==0?(g=Ja(46757)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=Ty(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){_O(m|0,f|0,g|0)|0;f=m+g|0;a[f>>0]=47;_O(f+1|0,k|0,e|0)|0;a[m+(j+g)>>0]=0;f=V(m|0,n|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){l=41;break d}}d=FO(28)|0;if(!d){Ry(f,c[n>>2]|0)|0;l=41;break}else{c[d>>2]=f;c[d+4>>2]=c[n>>2];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d;break}}else l=41;while(0);if((l|0)==41){d=FO(28)|0;if(d){c[d>>2]=c[3988];c[d+4>>2]=c[3989];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d}}$(55632);d=(b|0)==0&(d|0)==0?15952:d}else{d=k;l=18}while(0);do if((l|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=15952;break}d=0}while(0);zb=o;return d|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+32|0;i=j;a:do if(!(Wy(d)|0)){h=(d|0)!=0;f=0;g=0;do{e=1<>2]|0;else e=$y(g,(e|0)==0?57671:b)|0;f=f+((e|0)!=0&1)|0;c[i+(g<<2)>>2]=e;g=g+1|0}while((g|0)!=6);switch(f&2147483647|0){case 0:{d=55596;break a}case 1:{if((c[i>>2]|0)==15952){d=15980;break a}break}default:{}}}else{e=0;do{if(1<>2]=i}e=e+1|0}while((e|0)!=6)}while(0);zb=j;return d|0}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=Jx(a,b,d,g)|0;zb=f;return e|0}function cz(a,b){a=a|0;b=b|0;dz(a,b)|0;return a|0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function ez(a){a=a|0;var b=0,d=0;b=(fz()|0)+188|0;d=c[b>>2]|0;if(a|0)c[b>>2]=(a|0)==(-1|0)?55572:a;return ((d|0)==55572?-1:d)|0}function fz(){return ay()|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}return a|0}function hz(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function iz(a){a=+a;return ~~+bP(+a)|0}function jz(a){a=a|0;var b=0,c=0;b=(Qy(a)|0)+1|0;c=FO(b)|0;if(!c)a=0;else a=_O(c|0,a|0,b|0)|0;return a|0}function kz(a,b){a=a|0;b=b|0;var c=0;c=Qy(a)|0;return ((lz(a,1,c,b)|0)!=(c|0))<<31>>31|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=B(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Px(e)|0)==0;a=by(a,f,e)|0;if(!g)Qx(e)}else a=by(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function mz(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+132>>2]|0;a=a+128|0;if(b|0)c[b+128>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(nz()|0)+232|0;else a=a+132|0;c[a>>2]=b}return}function nz(){return ay()|0}function oz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(cy(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Jb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);zb=l;return f|0}function pz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(qz()|0)+188|0;b=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[5728+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);b=ox()|0;c[b>>2]=25;b=-1}while(0);zb=j;return b|0}function qz(){return ay()|0}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;if(Sy(46770,a[d>>0]|0)|0){g=sz(d)|0|32768;c[e>>2]=b;c[e+4>>2]=g;c[e+8>>2]=438;e=ny(Y(5,e|0)|0)|0;if((e|0)>=0){b=tz(e,d)|0;if(!b){aa(e|0)|0;b=0}}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}zb=f;return b|0}function sz(b){b=b|0;var c=0,d=0,e=0;d=(Sy(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Sy(b,120)|0)==0;d=e?d:d|128;b=(Sy(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function tz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+48|0;i=j+24|0;g=j+8|0;f=j;h=j+40|0;if(Sy(46770,a[d>>0]|0)|0){e=FO(1176)|0;if(!e)e=0;else{aP(e|0,0,144)|0;k=(Sy(d,43)|0)==0;d=a[d>>0]|0;if(k)c[e>>2]=d<<24>>24==114?8:4;if(d<<24>>24==97){c[f>>2]=b;c[f+4>>2]=3;d=X(221,f|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;X(221,g|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+152;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[i>>2]=b,c[i+4>>2]=21523,c[i+8>>2]=h,(Z(54,i|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=2;c[e+36>>2]=1;c[e+40>>2]=1;c[e+12>>2]=2;if(!(c[13884]|0))c[e+76>>2]=-1;uz(e)|0}}else{e=ox()|0;c[e>>2]=28;e=0}zb=j;return e|0}function uz(a){a=a|0;var b=0,d=0;b=vz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;wz();return a|0}function vz(){U(55640);return 55648}function wz(){$(55640);return}function xz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=Px(a)|0;else f=0;mz(a);g=(c[a>>2]&1|0)!=0;if(!g){e=vz()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;wz()}b=yz(a)|0;b=Gb[c[a+12>>2]&127](a)|0|b;d=c[a+96>>2]|0;if(d|0)GO(d);if(g){if(f|0)Qx(a)}else GO(a);return b|0}function yz(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=zz(a)|0;break}d=(Px(a)|0)==0;b=zz(a)|0;if(!d)Qx(a)}else{if(!(c[4004]|0))b=0;else b=yz(c[4004]|0)|0;a=vz()|0;a=c[a>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Px(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=zz(a)|0|b;if(d|0)Qx(a);a=c[a+56>>2]|0}while((a|0)!=0);wz()}while(0);return b|0}function zz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0){g=e-g|0;Kb[c[a+40>>2]&15](a,g,((g|0)<0)<<31>>31,1)|0;F()|0}c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function Az(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=Px(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)Qx(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;j=Xx(h,10,p)|0;i=(j|0)==0;j=i?p:1-o+j|0;j=j>>>0>>0?j:g;_O(e|0,h|0,j|0)|0;h=(c[k>>2]|0)+j|0;c[k>>2]=h;e=e+j|0;j=g-j|0;if(!(i&(j|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=Ax(f)|0;if((g|0)<0)break;else h=g}else{c[k>>2]=h+1;h=d[h>>0]|0}i=e+1|0;a[e>>0]=h;g=j+-1|0;if((h&255|0)==10|(g|0)==0){e=i;n=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)Qx(f)}return b|0}function Bz(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Dz(a,b,f)|0;zb=e;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+144|0;f=e;aP(f|0,0,144)|0;c[f+32>>2]=35;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+84>>2]=a;d=Fz(f,b,d)|0;zb=e;return d|0}function Ez(a,b,c){a=a|0;b=b|0;c=c|0;return Jz(a,b,c)|0}function Fz(e,h,i){e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=zb;zb=zb+288|0;K=Q+264|0;L=Q;M=Q+260|0;N=Q+272|0;if((c[e+76>>2]|0)>-1)P=Px(e)|0;else P=0;j=a[h>>0]|0;a:do if(j<<24>>24){B=e+4|0;C=e+104|0;D=e+120|0;E=e+8|0;G=L+10|0;H=L+33|0;I=L+46|0;J=L+94|0;A=K+4|0;m=h;h=0;k=0;l=j;j=0;u=0;v=0;b:while(1){c:do if(!(zx(l&255)|0)){n=(a[m>>0]|0)==37;d:do if(n){l=m+1|0;o=a[l>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{z=0;l=m+2|0;break}default:{if(Gx(o&255)|0?(a[m+2>>0]|0)==36:0){z=Gz(i,(d[l>>0]|0)+-48|0)|0;l=m+3|0;break e}y=(c[i>>2]|0)+(4-1)&~(4-1);z=c[y>>2]|0;c[i>>2]=y+4}}while(0);if(!(Gx(d[l>>0]|0)|0)){r=0;o=l}else{m=0;do{m=(m*10|0)+-48+(d[l>>0]|0)|0;l=l+1|0}while((Gx(d[l>>0]|0)|0)!=0);r=m;o=l}n=a[o>>0]|0;q=o+1|0;if(n<<24>>24==109){l=(z|0)!=0&1;k=0;m=q;o=o+2|0;n=a[q>>0]|0;j=0}else{l=0;m=o;o=q}switch(n<<24>>24){case 104:{y=(a[o>>0]|0)==104;n=y?-2:-1;m=y?m+2|0:o;break}case 108:{y=(a[o>>0]|0)==108;n=y?3:1;m=y?m+2|0:o;break}case 106:{n=3;m=o;break}case 116:case 122:{n=1;m=o;break}case 76:{n=2;m=o;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=143;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:n;q=s&255;switch(q<<24>>24){case 99:{y=(r|0)>1?r:1;break}case 91:{y=r;break}case 110:{Hz(z,t,u,v);n=u;o=v;break c}default:{wx(e,0,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=yx(e)|0}while((zx(n)|0)!=0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}x=D;y=n-(c[E>>2]|0)|0;u=OO(c[x>>2]|0,c[x+4>>2]|0,u|0,v|0)|0;u=OO(u|0,F()|0,y|0,((y|0)<0)<<31>>31|0)|0;y=r;v=F()|0}}x=((y|0)<0)<<31>>31;wx(e,y,x);o=c[B>>2]|0;n=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((yx(e)|0)<0){O=143;break b}n=c[C>>2]|0}if(n|0)c[B>>2]=(c[B>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{w=(s|0)==99;g:do if((s|16|0)==115){aP(L|0,-1,257)|0;a[L>>0]=0;if((s|0)==115){a[H>>0]=0;b[G>>1]=0;b[G+2>>1]=0;a[G+4>>0]=0}}else{s=m+1|0;r=(a[s>>0]|0)==94;n=r&1;m=r?m+2|0:s;aP(L|0,n|0,257)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{q=(n^1)&255;a[I>>0]=q;m=m+1|0;break}case 93:{q=(n^1)&255;a[J>>0]=q;m=m+1|0;break}default:q=(n^1)&255}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=143;break b}case 93:break g;case 45:{o=m+1|0;n=a[o>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=q;n=a[o>>0]|0}while(m>>>0<(n&255)>>>0);m=o}else m=o;break}default:{}}while(0);a[L+((n&255)+1)>>0]=q;m=m+1|0}}while(0);n=w?y+1|0:31;s=(t|0)==1;t=(l|0)!=0;i:do if(s){if(t){j=FO(n<<2)|0;if(!j){k=0;j=0;O=143;break b}}else j=z;c[K>>2]=0;c[A>>2]=0;k=0;j:while(1){q=(j|0)==0;do{k:while(1){o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=yx(e)|0;if(!(a[L+(o+1)>>0]|0))break j;a[N>>0]=o;switch(Xy(M,N,1,K)|0){case -1:{k=0;O=143;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(t&(k|0)==(n|0)));n=n<<1|1;o=IO(j,n<<2)|0;if(!o){k=0;O=143;break b}else j=o}if(!(Iz(K)|0)){k=0;O=143;break b}else{q=k;k=0;r=j}}else{if(t){k=FO(n)|0;if(!k){k=0;j=0;O=143;break b}j=0;while(1){q=j;do{j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){r=0;j=0;break i}r=q;q=q+1|0;a[k+r>>0]=j}while((q|0)!=(n|0));n=n<<1|1;o=IO(k,n)|0;if(!o){j=0;O=143;break b}else{j=q;k=o}}}if(!z)while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=0;k=0;r=0;j=0;break i}}k=0;while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=k;k=z;r=0;j=0;break i}a[z+k>>0]=j;k=k+1|0}}while(0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}o=D;n=n-(c[E>>2]|0)|0;n=OO(c[o>>2]|0,c[o+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0;if((n|0)==0&(o|0)==0)break b;if(!((n|0)==(y|0)&(o|0)==(x|0)|w^1))break b;do if(t)if(s){c[z>>2]=r;break}else{c[z>>2]=k;break}while(0);if(!w){if(r|0)c[r+(q<<2)>>2]=0;if(!k){k=0;break f}a[k+q>>0]=0}break}case 120:case 88:case 112:{n=16;O=131;break}case 111:{n=8;O=131;break}case 117:case 100:{n=10;O=131;break}case 105:{n=0;O=131;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Dy(e,t,0);y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if(z)switch(t|0){case 0:{f[z>>2]=p;break f}case 1:{g[z>>3]=p;break f}case 2:{g[z>>3]=p;break f}default:break f}break}default:{}}while(0);do if((O|0)==131){O=0;n=xx(e,n,0,-1,-1)|0;o=F()|0;y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if((z|0)!=0&(s|0)==112){c[z>>2]=n;break}else{Hz(z,t,n,o);break}}while(0);o=D;n=(c[B>>2]|0)-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=h+((z|0)!=0&1)|0;o=F()|0;break c}while(0);m=m+(n&1)|0;wx(e,0,0);l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0;if((l|0)!=(d[m>>0]|0)){O=23;break b}n=OO(u|0,v|0,1,0)|0;o=F()|0}else{while(1){l=m+1|0;if(!(zx(d[l>>0]|0)|0))break;else m=l}wx(e,0,0);do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0}while((zx(l)|0)!=0);if(!(c[C>>2]|0))l=c[B>>2]|0;else{l=(c[B>>2]|0)+-1|0;c[B>>2]=l}o=D;n=l-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0}while(0);m=m+1|0;l=a[m>>0]|0;if(!(l<<24>>24))break a;else{u=n;v=o}}if((O|0)==23){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((h|0)!=0|(l|0)>-1)break;else{l=0;h=k;O=144}}else if((O|0)==143)if(!h){h=k;O=144}if((O|0)==144){k=h;h=-1}if(l){GO(k);GO(j)}}else h=0;while(0);if(P|0)Qx(e);zb=Q;return h|0}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}zb=e;return a|0}function Hz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function Iz(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=Xx(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;_O(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;return Mz(a,b,((b|0)<0)<<31>>31,c)|0}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Kx(a,b,f)|0;zb=e;return d|0}function Mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+76>>2]|0)>-1){f=(Px(a)|0)==0;b=Nz(a,b,d,e)|0;if(!f)Qx(a)}else b=Nz(a,b,d,e)|0;return b|0}function Nz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((e|0)==1){g=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;b=PO(b|0,d|0,g|0,((g|0)<0)<<31>>31|0)|0;d=F()|0}f=a+20|0;g=a+28|0;if((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[g>>2]=0;c[f>>2]=0;Kb[c[a+40>>2]&15](a,b,d,e)|0;if((F()|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function Oz(a,b){a=a|0;b=b|0;return Pz(a,b,(Qy(a)|0)+1|0)|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return Xy(0,a,b,(c|0)==0?55652:c)|0}function Rz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+1040|0;k=n;l=n+1024|0;j=c[b>>2]|0;c[l>>2]=j;m=(a|0)!=0;h=m?e:256;i=m?a:k;g=j;a:do if((h|0)!=0&(j|0)!=0){e=0;j=i;while(1){a=d>>>2;i=a>>>0>=h>>>0;if(!(d>>>0>131|i)){i=j;break a}a=i?h:a;d=d-a|0;a=Sz(j,l,a,f)|0;if((a|0)==-1)break;i=(j|0)==(k|0);h=h-(i?0:a)|0;i=i?j:j+(a<<2)|0;e=a+e|0;g=c[l>>2]|0;if((h|0)!=0&(g|0)!=0)j=i;else break a}e=-1;i=j;h=0;g=c[l>>2]|0}else e=0;while(0);b:do if((g|0)!=0?(h|0)!=0&(d|0)!=0:0){while(1){a=Xy(i,g,d,f)|0;if((a+2|0)>>>0<3)break;g=(c[l>>2]|0)+a|0;c[l>>2]=g;d=d-a|0;h=h+-1|0;e=e+1|0;if(!((h|0)!=0&(d|0)!=0))break b;else i=i+4|0}switch(a|0){case -1:{e=a;break b}case 0:{c[l>>2]=0;break b}default:{c[f>>2]=0;break b}}}while(0);if(m)c[b>>2]=c[l>>2];zb=n;return e|0}function Sz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){j=h;g=f;l=26}else{c[g>>2]=0;k=f;j=h;l=48}else l=5;a:do if((l|0)==5){l=(Tz()|0)+188|0;g=(b|0)!=0;if(c[c[l>>2]>>2]|0)if(g){g=f;l=33;break}else{g=f;l=15;break}if(!g){f=Qy(h)|0;l=63;break}b:do if(f){g=f;while(1){i=a[h>>0]|0;if(!(i<<24>>24))break;h=h+1|0;c[b>>2]=i<<24>>24&57343;g=g+-1|0;if(!g)break b;else b=b+4|0}c[b>>2]=0;c[e>>2]=0;f=f-g|0;l=63;break a}while(0);c[e>>2]=h;l=63}while(0);c:while(1){d:do if((l|0)==15){while(1){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){l=c[h>>2]|0;i=l&255;if(!((l+-16843009|l)&-2139062144)){do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(!((i+-16843009|i)&-2139062144|0));i=i&255}}i=i&255;if((i+-1|0)>>>0>=127)break;g=g+-1|0;h=h+1|0}i=i+-194|0;if(i>>>0>50)l=57;else{i=c[5728+(i<<2)>>2]|0;j=h+1|0;l=26;continue c}}else if((l|0)==26){l=(d[j>>0]|0)>>>3;if((l+-16|l+(i>>26))>>>0>7){h=j;l=56}else{h=j+1|0;if(i&33554432){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+2|0;if(i&524288){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+3|0}}g=g+-1|0;l=15;continue c}}else if((l|0)==33){l=0;e:do if(g){while(1){i=d[h>>0]|0;j=i+-1|0;if(j>>>0<127){if((h&3|0)==0&g>>>0>4){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144|0){l=42;break}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];j=h+4|0;i=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=i;h=j}else{l=41;break}}if((l|0)==41){b=i;h=j;i=a[j>>0]|0}else if((l|0)==42)i=i&255;i=i&255;j=i+-1|0;l=44}}else l=44;if((l|0)==44){l=0;if(j>>>0>=127)break}h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g)break e;else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=57;break d}i=c[5728+(i<<2)>>2]|0;k=g;j=h+1|0;l=48;continue c}while(0);c[e>>2]=h;l=63;continue c}else if((l|0)==48){l=0;g=d[j>>0]|0;h=g>>>3;if((h+-16|h+(i>>26))>>>0>7){h=j;g=k;l=56}else{h=j+1|0;g=g+-128|i<<6;do if((g|0)<0){i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+2|0;g=i|g<<6;if((g|0)>=0)break;i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+3|0;g=i|g<<6;break}}h=ox()|0;c[h>>2]=25;h=j+-1|0;break d}while(0);c[b>>2]=g;b=b+4|0;g=k+-1|0;l=33;continue c}}else if((l|0)==63)return f|0;while(0);if((l|0)==56){h=h+-1|0;if(!i)l=57;else{f=b;l=61}}if((l|0)==57)if(!(a[h>>0]|0)){if(b|0){c[b>>2]=0;c[e>>2]=0}f=f-g|0;l=63;continue}else{f=b;l=61}if((l|0)==61){l=ox()|0;c[l>>2]=25;if(!f){f=-1;l=63;continue}}c[e>>2]=h;f=-1;l=63}return 0}function Tz(){return ay()|0}function Uz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+272|0;i=l;j=l+256|0;f=c[b>>2]|0;c[j>>2]=f;k=(a|0)!=0;g=k?e:256;h=k?a:i;e=f;a:do if((g|0)!=0&(f|0)!=0){f=0;a=e;while(1){e=d>>>0>=g>>>0;if(!(e|d>>>0>32)){e=a;break a}e=e?g:d;d=d-e|0;e=Vz(h,j,e,0)|0;if((e|0)==-1)break;a=(h|0)==(i|0);g=g-(a?0:e)|0;h=a?h:h+e|0;f=e+f|0;e=c[j>>2]|0;if((g|0)!=0&(e|0)!=0)a=e;else break a}f=-1;g=0;e=c[j>>2]|0}else f=0;while(0);b:do if((e|0)!=0?(g|0)!=0&(d|0)!=0:0){while(1){a=_x(h,c[e>>2]|0,0)|0;if((a+1|0)>>>0<2)break;e=(c[j>>2]|0)+4|0;c[j>>2]=e;d=d+-1|0;g=g-a|0;f=a+f|0;if(!((g|0)!=0&(d|0)!=0))break b;else h=h+a|0}if(!a)c[j>>2]=0;else f=-1}while(0);if(k)c[b>>2]=c[j>>2];zb=l;return f|0}function Vz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;a:do if(!b){e=c[d>>2]|0;f=c[e>>2]|0;if(!f)e=0;else{b=e;e=0;do{if(f>>>0>127){f=_x(i,f,0)|0;if((f|0)==-1){e=-1;break a}}else f=1;e=f+e|0;b=b+4|0;f=c[b>>2]|0}while((f|0)!=0)}}else{b:do if(e>>>0>3){f=e;g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h)break;h=_x(b,h,0)|0;if((h|0)==-1){e=-1;break a}b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(f>>>0<=3)break b}a[b>>0]=0;c[d>>2]=0;e=e-f|0;break a}else f=e;while(0);if(f){g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){g=20;break}h=_x(i,h,0)|0;if((h|0)==-1){e=-1;break a}if(f>>>0>>0){g=23;break}_x(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f)break a}if((g|0)==20){a[b>>0]=0;c[d>>2]=0;e=e-f|0;break}else if((g|0)==23){e=e-f|0;break}}}while(0);zb=j;return e|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;Xz(a,b,c)|0;return a|0}function Xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);aP(b|0,0,e|0)|0;return b|0}function Yz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{i=e&255;h=f+(i>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(i&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{i=e&255;if(!(c[f+(i>>>5<<2)>>2]&1<<(i&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);zb=g;return d|0}function Zz(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(Px(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=Ax(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=Ax(a)|0;break}}while(0);return b|0}function _z(a){a=a|0;var b=0;b=54792;c[b>>2]=a+-1;c[b+4>>2]=0;return}function $z(){var a=0,b=0,d=0;b=54792;b=NO(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=OO(b|0,F()|0,1,0)|0;a=F()|0;d=54792;c[d>>2]=b;c[d+4>>2]=a;a=TO(b|0,a|0,33)|0;F()|0;return a|0}function aA(a,b){a=a|0;b=b|0;cz(a+(Qy(a)|0)|0,b)|0;return a|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=zb;zb=zb+16|0;e=h;c[e>>2]=c[d>>2];e=Jx(0,0,b,e)|0;if((e|0)>=0?(f=e+1|0,g=FO(f)|0,c[a>>2]=g,(g|0)!=0):0)a=Jx(g,f,b,d)|0;else a=-1;zb=h;return a|0}function cA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if((b|0)!=-1){if((c[d+76>>2]|0)>-1)g=Px(d)|0;else g=0;h=d+4|0;e=c[h>>2]|0;if(!e){Bx(d)|0;e=c[h>>2]|0;if(e|0){f=e;i=6}}else{f=e;i=6}if((i|0)==6?f>>>0>((c[d+44>>2]|0)+-8|0)>>>0:0){i=f+-1|0;c[h>>2]=i;a[i>>0]=b;c[d>>2]=c[d>>2]&-17;if(!g)break;Qx(d);break}if(g){Qx(d);b=-1}else b=-1}else b=-1;while(0);return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;if((c[a+76>>2]|0)>-1){e=(Px(a)|0)==0;d=eA(a)|0;b=F()|0;if(e)a=d;else{Qx(a);a=d}}else{a=eA(a)|0;b=F()|0}E(b|0);return a|0}function eA(a){a=a|0;var b=0,d=0,e=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Kb[c[a+40>>2]&15](a,0,0,b)|0;d=F()|0;if((d|0)>=0){e=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;e=PO(b|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=F()|0;b=(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;b=OO(e|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;d=F()|0}E(d|0);return b|0}function fA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Px(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=oz(d,b)|0;Qx(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=oz(d,b)|0}while(0);return e|0}function gA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=B(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=Px(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;_O(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(Bx(f)|0)break;h=Jb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)Qx(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)Qx(f);return e|0}function hA(a){a=a|0;var b=0;a=dA(a)|0;b=F()|0;if((b|0)>0|(b|0)==0&a>>>0>2147483647){a=ox()|0;c[a>>2]=61;a=-1}return a|0}function iA(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Qx(a)}else{Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function jA(a,b){a=a|0;b=b|0;return +(+kA(a,b,1))}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,i=0;g=zb;zb=zb+144|0;e=g;aP(e|0,0,144)|0;i=e+4|0;c[i>>2]=a;h=e+8|0;c[h>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;wx(e,0,0);f=+Dy(e,d,1);e=e+120|0;d=(c[i>>2]|0)-(c[h>>2]|0)|0;d=OO(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;e=F()|0;if(b|0)c[b>>2]=(d|0)==0&(e|0)==0?a:a+d|0;zb=g;return +f}function lA(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(zx(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(Gx(b)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Gx(a[c>>0]|0)|0)!=0)}return ((g|0)==0?0-b|0:b)|0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=zb;zb=zb+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){aP(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ty(b,e<<24>>24)|0;zb=h;return e-b|0}function nA(a,b){a=a|0;b=b|0;return +(+kA(a,b,0))}function oA(a,b){a=a|0;b=b|0;return +(+kA(a,b,2))}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+nA(a,b))}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+jA(a,b))}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+oA(a,b))}function sA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Qy(b)|0)|0;a:do if(d)while(1){g=a[c>>0]|0;if(!(g<<24>>24))break a;d=d+-1|0;f=e+1|0;a[e>>0]=g;if(!d){e=f;break}else{c=c+1|0;e=f}}while(0);a[e>>0]=0;return b|0}function tA(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[13914]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(Yz(b,d)|0)|0;if(!(a[b>>0]|0)){c[13914]=0;b=0;break}d=b+(mA(b,d)|0)|0;c[13914]=d;if(!(a[d>>0]|0)){c[13914]=0;break}else{c[13914]=d+1;a[d>>0]=0;break}}while(0);return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}return a|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(a-b>>2>>>0>=d>>>0){if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}}else do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}function wA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;e=zb;zb=zb+48|0;g=e+32|0;b=e+24|0;h=e+16|0;f=e;e=e+36|0;a=xA()|0;if(a|0?(d=c[a>>2]|0,d|0):0){a=d+48|0;if(!(yA(a)|0)){c[b>>2]=46910;AA(46860,b)}b=zA(a)|0;if((b|0)==1126902529&(F()|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Jb[c[(c[3470]|0)+16>>2]&63](13880,d,e)|0){h=c[e>>2]|0;h=Gb[c[(c[h>>2]|0)+8>>2]&127](h)|0;c[f>>2]=46910;c[f+4>>2]=a;c[f+8>>2]=h;AA(46774,f)}else{c[h>>2]=46910;c[h+4>>2]=a;AA(46819,h)}}AA(46898,g)}function xA(){return 55660}function yA(a){a=a|0;return 0}function zA(a){a=a|0;E(0);return 0}function AA(a,b){a=a|0;b=b|0;var d=0;d=zb;zb=zb+16|0;c[d>>2]=b;b=c[4001]|0;Kx(b,a,d)|0;fA(10,b)|0;ua()}function BA(a){a=a|0;return}function CA(a){a=a|0;BA(a);SA(a);return}function DA(a){a=a|0;return}function EA(a){a=a|0;return}function FA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+64|0;j=l;if(!(JA(d,e,0)|0))if((e|0)!=0?(k=NA(e,13904,13888,0)|0,(k|0)!=0):0){c[j>>2]=k;c[j+4>>2]=0;c[j+8>>2]=d;c[j+12>>2]=-1;d=j+16|0;e=j+24|0;g=j+48|0;h=d;i=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));b[d+36>>1]=0;a[d+38>>0]=0;c[g>>2]=1;Xb[c[(c[k>>2]|0)+28>>2]&31](k,j,c[f>>2]|0,1);if((c[e>>2]|0)==1){c[f>>2]=c[d>>2];d=1}else d=0}else d=0;else d=1;zb=l;return d|0}function GA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);return}function HA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(JA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}else LA(0,d,e,f);while(0);return}function IA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;if(d)a=(Fx(c[a+4>>2]|0,c[b+4>>2]|0)|0)==0;else a=(a|0)==(b|0);return a|0}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[b+4>>2]|0)==(d|0)?(f=b+28|0,(c[f>>2]|0)!=1):0)c[f>>2]=e;return}function MA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((f|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if((b|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function NA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;n=p;m=c[d>>2]|0;o=d+(c[m+-8>>2]|0)|0;m=c[m+-4>>2]|0;c[n>>2]=f;c[n+4>>2]=d;c[n+8>>2]=e;c[n+12>>2]=g;d=n+16|0;e=n+20|0;g=n+24|0;h=n+28|0;i=n+32|0;j=n+40|0;k=d;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[d+36>>1]=0;a[d+38>>0]=0;a:do if(JA(m,f,0)|0){c[n+48>>2]=1;Zb[c[(c[m>>2]|0)+20>>2]&7](m,n,o,o,1,0);d=(c[g>>2]|0)==1?o:0}else{Yb[c[(c[m>>2]|0)+24>>2]&63](m,n,o,1,0);switch(c[n+36>>2]|0){case 0:{d=(c[j>>2]|0)==1&(c[h>>2]|0)==1&(c[i>>2]|0)==1?c[e>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((c[g>>2]|0)!=1?!((c[j>>2]|0)==0&(c[h>>2]|0)==1&(c[i>>2]|0)==1):0){d=0;break}d=c[d>>2]|0}while(0);zb=p;return d|0}function OA(a){a=a|0;BA(a);SA(a);return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);else{a=c[a+8>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e,f,g)}return}function QA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){i=c[b+8>>2]|0;Yb[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;do if((c[f>>2]|0)!=4){h=d+52|0;a[h>>0]=0;j=d+53|0;a[j>>0]=0;b=c[b+8>>2]|0;Zb[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if(a[j>>0]|0){j=(a[h>>0]|0)==0;c[f>>2]=3;if(j)break;else break a}else{c[f>>2]=4;break}}while(0);c[i>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function RA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);else{a=c[a+8>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d,e)}return}function SA(a){a=a|0;GO(a);return}function TA(a){a=a|0;return}function UA(){var a=0,b=0;a=xA()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?yA(b+48|0)|0:0)VA(c[b+12>>2]|0);VA(WA()|0)}function VA(a){a=a|0;var b=0;b=zb;zb=zb+16|0;Rb[a&1]();AA(47049,b)}function WA(){return 1}function XA(a){a=a|0;return}function YA(a){a=a|0;c[a>>2]=16372;aB(a+4|0);return}function ZA(a){a=a|0;YA(a);SA(a);return}function _A(a){a=a|0;return $A(a+4|0)|0}function $A(a){a=a|0;return c[a>>2]|0}function aB(a){a=a|0;var b=0,d=0;if(bB(a)|0?(b=cB(c[a>>2]|0)|0,d=b+8|0,a=c[d>>2]|0,c[d>>2]=a+-1,(a|0)<1):0)SA(b);return}function bB(a){a=a|0;return 1}function cB(a){a=a|0;return a+-12|0}function dB(a){a=a|0;YA(a);SA(a);return}function eB(a){a=a|0;BA(a);SA(a);return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;return JA(a,b,0)|0}function gB(a){a=a|0;BA(a);SA(a);return}function hB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(JA(b,c[d+8>>2]|0,h)|0)MA(0,d,e,f,g);else{r=d+52|0;j=a[r>>0]|0;q=d+53|0;i=a[q>>0]|0;p=c[b+12>>2]|0;m=b+16+(p<<3)|0;a[r>>0]=0;a[q>>0]=0;lB(b+16|0,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;a:do if((p|0)>1){n=d+24|0;o=b+8|0;p=d+54|0;b=b+24|0;do{i=i&1;j=j&1;if(a[p>>0]|0)break a;if(!(k<<24>>24)){if(l<<24>>24?(c[o>>2]&1|0)==0:0)break a}else{if((c[n>>2]|0)==1)break a;if(!(c[o>>2]&2))break a}a[r>>0]=0;a[q>>0]=0;lB(b,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;b=b+8|0}while(b>>>0>>0)}while(0);a[r>>0]=j<<24>>24!=0&1;a[q>>0]=i<<24>>24!=0&1}return}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){p=c[b+12>>2]|0;k=b+16+(p<<3)|0;mB(b+16|0,d,e,f,g);h=b+24|0;if((p|0)<=1)break;b=c[b+8>>2]|0;if((b&2|0)==0?(j=d+36|0,(c[j>>2]|0)!=1):0){if(!(b&1)){b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[j>>2]|0)==1)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+24|0;i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[j>>2]|0)==1?(c[b>>2]|0)==1:0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+54|0;while(1){if(a[b>>0]|0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;o=d+44|0;if((c[o>>2]|0)!=4){j=b+16+(c[b+12>>2]<<3)|0;k=d+52|0;f=d+53|0;l=d+54|0;m=b+8|0;n=d+24|0;h=0;i=b+16|0;b=0;b:while(1){if(i>>>0>=j>>>0){i=18;break}a[k>>0]=0;a[f>>0]=0;lB(i,d,e,e,1,g);if(a[l>>0]|0){i=18;break}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[m>>2]&1)){i=19;break b}else{b=1;break}if((c[n>>2]|0)==1){h=1;i=19;break b}if(!(c[m>>2]&2)){h=1;i=19;break b}else{h=1;b=1}}while(0);i=i+8|0}if((i|0)==18)if(b)i=19;else b=4;if((i|0)==19)b=3;c[o>>2]=b;if(h&1)break}c[p>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function jB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if(!(JA(b,c[d+8>>2]|0,0)|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;kB(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{kB(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else KA(0,d,e,f);while(0);return}function kB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;if(d){f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0}else f=0;a=c[a>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d+f|0,(g&2|0)==0?2:e);return}function lB(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e+h|0,(i&2|0)==0?2:f,g);return} +function $b(a){a=a|0;var b=0;b=zb;zb=zb+a|0;zb=zb+15&-16;return b|0}function ac(){return zb|0}function bc(a){a=a|0;zb=a}function cc(a,b){a=a|0;b=b|0;zb=a;Ab=b}function dc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0))b[k>>1]=0;else{a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function ec(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0))b[l>>1]=0;else{a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function fc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0))b[r>>1]=0;else{l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function gc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0)){a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}else b[k>>1]=0;while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function hc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0)){a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}else b[l>>1]=0;while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function ic(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0)){l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}else b[r>>1]=0;while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function jc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){b[e>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function kc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){b[e>>1]=0;a[t>>0]=0}else{a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function lc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){b[t>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function mc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}else{b[e>>1]=0;a[s>>0]=0}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function nc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}else{b[e>>1]=0;a[t>>0]=0}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function oc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}else{b[t>>1]=0;a[s>>0]=0}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function pc(a){a=a|0;return qc(a+8|0)|0}function qc(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(4)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=Ee(a)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function rc(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{Fe(b)|0;GO(c[a>>2]|0);c[a>>2]=0;a=0}return a|0}function sc(a){a=a|0;var b=0,d=0,e=0;d=zb;zb=zb+16|0;b=FO(7062432)|0;if(!b){Ue(0,3,41858,d);Ea(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;g[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=FO(B(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Ue(0,3,41858,d+8|0);Ea(1)}else{c[b+7062384>>2]=0;tc(b,0)|0;c[b+7062388>>2]=-1;uc(b,0)|0;vc(b,7)|0;zb=d;return b|0}return 0}function tc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;GO(c[d>>2]|0);c[d>>2]=0;d=0;break}b=FO(B(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Ue(0,3,41858,e);Ea(1)}else d=0}else d=0;else d=-1;while(0);zb=f;return d|0}function uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;f=i;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e|0){Zc(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{f=Yc(c[a+36>>2]|0,c[a+40>>2]|0)|0;c[d>>2]=f;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:break;default:{Ue(0,3,19740,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[16+(b<<2)>>2];Ue(0,3,19814,h);b=0}else b=0}else b=0}else b=-1;zb=i;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062392>>2]=b;c[a+7062396>>2]=0;a=0}return a|0}function wc(a){a=a|0;var b=0,d=0;if(!a)a=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d|0){Zc(d);c[b>>2]=0}GO(c[a+4834144>>2]|0);GO(c[a+4834148>>2]|0);GO(a);a=0}return a|0}function xc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function yc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function zc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ac(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Bc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Cc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Dc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Ec(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Fc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function Gc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function Hc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function Ic(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function Jc(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){g[a+7062416>>3]=b;a=0}else a=-1;return a|0}function Kc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{g[b>>3]=+g[a+7062416>>3];a=0}return a|0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;a:do if(a){d=a+4|0;if((c[d>>2]|0)!=(b|0)){if(b>>>0>=15){c[e>>2]=b;Ue(0,3,19909,e);a=-1;break}c[d>>2]=b;d=zd(b)|0;c[a+8>>2]=d;a=a+24|0;d=c[a>>2]|0;if(!(28704>>>(b&32767)&1))switch(d|0){case 1:{c[a>>2]=4;a=0;break a}case 4:{c[a>>2]=3;a=0;break a}default:{a=0;break a}}else switch(d|0){case 0:{c[a>>2]=1;a=0;break a}case 3:{c[a>>2]=4;a=0;break a}default:{a=0;break a}}}else a=0}else a=-1;while(0);zb=f;return a|0}function Mc(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0;P=zb;zb=zb+64|0;L=P+32|0;F=P+24|0;y=P;J=P+52|0;C=P+40|0;a:do if((a|0)!=0&(b|0)!=0){O=a+44|0;c[O>>2]=0;K=a+7062388|0;e=c[K>>2]|0;b:do if((e|0)==4){H=a+7062396|0;e=c[H>>2]|0;do if((e|0)>0)c[H>>2]=e+-1;else{B=a+16|0;D=c[B>>2]|0;E=a+7062400|0;z=(c[E>>2]|0)+D|0;z=(z|0)<255?z:255;c[J>>2]=z;G=a+7062404|0;A=D-(c[G>>2]|0)|0;A=(A|0)>0?A:0;c[J+4>>2]=A;c[J+8>>2]=D;f=b+12|0;h=a+36|0;i=a+40|0;j=a+12|0;k=a+20|0;n=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+4|0;s=a+7062384|0;t=a+24|0;u=a+32|0;v=a+7062416|0;w=a+48|0;x=a+7062424|0;e=0;while(1){if(e>>>0>=3)break;if((ed(c[f>>2]|0,c[h>>2]|0,c[i>>2]|0,c[a>>2]|0,c[j>>2]|0,c[J+(e<<2)>>2]|0,c[k>>2]|0,n,0)|0)<0){M=29;break}if((Oc(c[h>>2]|0,c[i>>2]|0,n,c[k>>2]|0,1e6,70,1.0,p,q)|0)<0){M=29;break}if((Tc(c[b>>2]|0,c[h>>2]|0,c[i>>2]|0,c[r>>2]|0,p,c[q>>2]|0,c[s>>2]|0,c[k>>2]|0,c[t>>2]|0,(c[u>>2]|0)+184|0,+g[v>>3],w,O,c[x>>2]|0)|0)<0){M=29;break}c[C+(e<<2)>>2]=c[O>>2];e=e+1|0}if((M|0)==29){e=-1;break a}if((c[a>>2]|0)==1){x=c[C+4>>2]|0;h=c[C+8>>2]|0;f=c[C>>2]|0;c[y>>2]=A;c[y+4>>2]=x;c[y+8>>2]=D;c[y+12>>2]=h;c[y+16>>2]=z;c[y+20>>2]=f;Ue(0,3,19958,y)}else{f=c[C>>2]|0;h=c[C+8>>2]|0}e=c[C+4>>2]|0;if((f|0)>(h|0)|(e|0)>(h|0)){f=(f|0)<(e|0)?A:z;c[B>>2]=f;e=f-D|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[G>>2]=e;if((c[a>>2]|0)==1){c[F>>2]=f;Ue(0,3,20034,F);c[H>>2]=c[a+7062392>>2];break}else{c[H>>2]=c[a+7062392>>2];break}}e=c[E>>2]|0;f=c[G>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+D|0)>254){c[E>>2]=1;e=1}if((D|0)<=(e|0))c[G>>2]=1;c[H>>2]=c[a+7062392>>2];break b}while(0);h=c[K>>2]|0;M=33}else{h=e;M=33}while(0);if((M|0)==33){c:do switch(h|0){case 3:{f=a+7062408|0;h=b+12|0;e=dd(c[f>>2]|0,c[h>>2]|0,9,-7)|0;if((e|0)<0)break a;e=c[f>>2]|0;k=a+4834144|0;e=ed(c[h>>2]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[a>>2]|0,c[a+12>>2]|0,0,0,k,c[e>>2]|0)|0;if((e|0)<0)break a;e=a+36|0;f=a+40|0;h=a+20|0;break}case 2:case 1:{i=a+7062396|0;e=c[i>>2]|0;if((e|0)>0){c[i>>2]=e+-1;M=48;break c}e=c[a+7062408>>2]|0;f=c[b+12>>2]|0;if((h|0)==1)e=bd(e,f,J)|0;else e=cd(e,f,J)|0;if((e|0)<0)break a;e=a+16|0;if((c[a>>2]|0)==1?(I=d[J>>0]|0,(c[e>>2]|0)!=(I|0)):0){c[L>>2]=(c[K>>2]|0)==1?20086:20093;c[L+4>>2]=I;Ue(0,3,20098,L)}c[e>>2]=d[J>>0];c[i>>2]=c[a+7062392>>2];M=48;break}default:M=48}while(0);if((M|0)==48){e=a+36|0;f=a+40|0;h=a+20|0;k=a+4834144|0;if((ed(c[b+12>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[h>>2]|0,k,0)|0)<0){e=-1;break}}i=a+15416|0;j=a+15408|0;if((Oc(c[e>>2]|0,c[f>>2]|0,k,c[h>>2]|0,1e6,70,1.0,i,j)|0)<0){e=-1;break}if((Tc(c[b>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a+4>>2]|0,i,c[j>>2]|0,c[a+7062384>>2]|0,c[h>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+g[a+7062416>>3],a+48|0,O,c[a+7062424>>2]|0)|0)<0){e=-1;break}}s=a+28|0;if((c[s>>2]|0)==1){Nc(a);e=0;break}t=a+4818296|0;q=c[t>>2]|0;r=a+24|0;p=0;while(1){if((p|0)>=(q|0))break;h=c[O>>2]|0;i=a+4818304+(p*264|0)|0;j=a+4818304+(p*264|0)+56|0;k=a+4818304+(p*264|0)+64|0;f=0;n=-1;l=.5;while(1){if((f|0)>=(h|0))break;m=+(c[a+48+(f<<8)>>2]|0);o=+(c[i>>2]|0)/m;if(!(o<.7|o>1.43)?(o=+g[a+48+(f<<8)+56>>3]-+g[j>>3],N=+g[a+48+(f<<8)+64>>3]-+g[k>>3],N=(o*o+N*N)/m,N-1){k=c[r>>2]|0;switch(k|0){case 2:case 1:case 0:break;case 4:case 3:{f=a+48+(n<<8)+40|0;m=+g[a+4818304+(p*264|0)+40>>3];if(!(+g[f>>3]>3];if(!(+g[e>>3]>3]}g[f>>3]=m;c[a+48+(n<<8)+8>>2]=c[a+4818304+(p*264|0)+8>>2];g[e>>3]=l;c[a+48+(n<<8)+12>>2]=c[a+4818304+(p*264|0)+12>>2];f=0;h=-1;m=1.0e8;while(1){if((f|0)==4)break;e=0;l=0.0;while(1){if((e|0)==4)break;b=e+f&3;Q=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];o=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;l=l+(Q*Q+o*o)}b=l>2]=(b+(c[a+4818304+(p*264|0)+20>>2]|0)|0)%4|0;c[a+48+(n<<8)+24>>2]=(b+(c[a+4818304+(p*264|0)+24>>2]|0)|0)%4|0;break d}default:{e=-1;break a}}e=a+48+(n<<8)+32|0;o=+g[a+4818304+(p*264|0)+32>>3];if(+g[e>>3]>3]=o;i=c[a+4818304+(p*264|0)+4>>2]|0;c[a+48+(n<<8)+4>>2]=i;j=a+4818304+(p*264|0)+16|0;f=-1;l=1.0e8;h=0;while(1){if((h|0)==4)break;e=0;m=0.0;while(1){if((e|0)==4)break;b=e+h&3;R=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];Q=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;m=m+(R*R+Q*Q)}if(m>2]|0)|0)%4|0;l=m}else e=f;f=e;h=h+1|0}c[a+48+(n<<8)+16>>2]=f;if(k>>>0<2){c[a+48+(n<<8)+8>>2]=i;g[a+48+(n<<8)+40>>3]=o;c[a+48+(n<<8)+20>>2]=f;break}else{c[a+48+(n<<8)+12>>2]=i;g[a+48+(n<<8)+48>>3]=o;c[a+48+(n<<8)+24>>2]=f;break}}}while(0);p=p+1|0}Nc(a);f=0;e=0;while(1){if((f|0)>=(c[t>>2]|0))break;M=a+4818304+(f*264|0)+256|0;b=c[M>>2]|0;c[M>>2]=b+1;if((b|0)<3){if((f|0)!=(e|0))_O(a+4818304+(e*264|0)|0,a+4818304+(f*264|0)|0,264)|0;e=e+1|0}f=f+1|0}c[t>>2]=e;f=c[O>>2]|0;k=0;while(1){if((k|0)>=(f|0))break;j=a+48+(k<<8)|0;h=c[a+48+(k<<8)+4>>2]|0;if((h|0)>=0){i=0;while(1){if((i|0)>=(e|0))break;if((c[a+4818304+(i*264|0)+4>>2]|0)==(h|0))break;i=i+1|0}if((i|0)==(e|0)){if((e|0)==60)break;e=e+1|0;c[t>>2]=e}_O(a+4818304+(i*264|0)|0,j|0,256)|0;c[a+4818304+(i*264|0)+256>>2]=1}k=k+1|0}if((c[s>>2]|0)==2)e=0;else{n=0;while(1){if((n|0)>=(e|0)){e=0;break a}i=a+4818304+(n*264|0)|0;j=a+4818304+(n*264|0)+56|0;k=a+4818304+(n*264|0)+64|0;h=0;while(1){if((h|0)>=(f|0))break;l=+(c[a+48+(h<<8)>>2]|0);R=+(c[i>>2]|0)/l;if(!(R<.7|R>1.43)?(Q=+g[a+48+(h<<8)+56>>3]-+g[j>>3],R=+g[a+48+(h<<8)+64>>3]-+g[k>>3],(Q*Q+R*R)/l<.5):0)break;h=h+1|0}if((h|0)==(f|0)){_O(a+48+(f<<8)|0,a+4818304+(n*264|0)|0,256)|0;f=f+1|0;c[O>>2]=f;e=c[t>>2]|0}n=n+1|0}}}else e=-1;while(0);zb=P;return e|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0;a:do switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+8>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}case 2:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+12>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}default:{f=c[a+44>>2]|0;e=0;while(1){if((e|0)>=(f|0))break a;b=a+48+(e<<8)+8|0;if((c[b>>2]|0)>-1?+g[a+48+(e<<8)+40>>3]<.5:0){c[b>>2]=-1;b=0}else b=1;d=a+48+(e<<8)+12|0;if(((c[d>>2]|0)>-1?+g[a+48+(e<<8)+48>>3]<.5:0)?(c[d>>2]=-1,(b|0)==0):0)c[a+48+(e<<8)+236>>2]=6;e=e+1|0}}}while(0);return}function Oc(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;r=(e|0)==1;if(r){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;h=(h|0)/4|0}c[k>>2]=0;n=d+8|0;o=a+-2|0;b=b+-2|0;l=d+1179664|0;e=0;while(1){if((e|0)>=(c[n>>2]|0)){q=5;break}m=d+12+(e<<2)|0;s=c[m>>2]|0;if(((((((!((s|0)<(h|0)|(s|0)>(f|0))?(p=d+131084+(e<<4)|0,(c[p>>2]|0)!=1):0)?(c[d+131084+(e<<4)+4>>2]|0)!=(o|0):0)?(c[d+131084+(e<<4)+8>>2]|0)!=1:0)?(c[d+131084+(e<<4)+12>>2]|0)!=(b|0):0)?(Pc(c[d>>2]|0,a,0,l,e+1|0,p,j+((c[k>>2]|0)*80048|0)|0)|0)>=0:0)?(Qc(c[m>>2]|0,j+((c[k>>2]|0)*80048|0)|0,i)|0)>=0:0)?(c[j+((c[k>>2]|0)*80048|0)>>2]=c[m>>2],s=c[k>>2]|0,g[j+(s*80048|0)+8>>3]=+g[d+655376+(e<<4)>>3],g[j+(s*80048|0)+16>>3]=+g[d+655376+(e<<4)+8>>3],s=s+1|0,c[k>>2]=s,(s|0)==60):0){e=60;break}e=e+1|0}if((q|0)==5)e=c[k>>2]|0;a=0;while(1){if((a|0)>=(e|0))break;l=a+1|0;m=j+(a*80048|0)+8|0;n=j+(a*80048|0)+16|0;h=j+(a*80048|0)|0;f=l;while(1){if((f|0)>=(e|0))break;t=+g[m>>3]-+g[j+(f*80048|0)+8>>3];i=+g[n>>3]-+g[j+(f*80048|0)+16>>3];i=t*t+i*i;e=c[h>>2]|0;a=j+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(i<+((e|0)/4|0|0))c[a>>2]=0}else if(i<+((b|0)/4|0|0))c[h>>2]=0;f=f+1|0;e=c[k>>2]|0}a=l}f=0;while(1){if((f|0)>=(e|0))break;if(!(c[j+(f*80048|0)>>2]|0)){b=f;while(1){a=b+1|0;if((a|0)>=(e|0))break;_O(j+(b*80048|0)|0,j+(a*80048|0)|0,80048)|0;b=a;e=c[k>>2]|0}e=e+-1|0;c[k>>2]=e}f=f+1|0}a:do if(r){b=0;while(1){if((b|0)>=(e|0))break a;c[j>>2]=c[j>>2]<<2;a=j+8|0;g[a>>3]=+g[a>>3]*2.0;a=j+16|0;g[a>>3]=+g[a>>3]*2.0;a=c[j+24>>2]|0;e=0;while(1){if((e|0)>=(a|0))break;s=j+28+(e<<2)|0;c[s>>2]=c[s>>2]<<1;s=j+40028+(e<<2)|0;c[s>>2]=c[s>>2]<<1;e=e+1|0}j=j+80048|0;b=b+1|0;e=c[k>>2]|0}}while(0);return 0}function Pc(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=zb;zb=zb+80032|0;n=w+80016|0;m=w+80008|0;j=w+8e4|0;u=w+4e4|0;v=w;s=c[h+8>>2]|0;t=B(s,d)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;r=e;e=a+(t+e<<1)|0;while(1){if((r|0)>(h|0)){t=7;break}t=b[e>>1]|0;if(t<<16>>16>0?(c[f+((t<<16>>16)+-1<<2)>>2]|0)==(g|0):0){t=6;break}r=r+1|0;e=e+2|0}do if((t|0)==6)if((r|0)!=-1){o=i+24|0;c[o>>2]=1;p=i+28|0;c[p>>2]=r;q=i+40028|0;c[q>>2]=s;g=5;e=s;l=r;f=1;while(1){k=a+((B(e,d)|0)+l<<1)|0;j=0;e=g+5|0;while(1){g=(e|0)%8|0;if(j>>>0>=8){t=13;break}e=c[48+(g<<2)>>2]|0;x=B(e,d)|0;h=c[80+(g<<2)>>2]|0;if((b[k+(x+h<<1)>>1]|0)>0)break;j=j+1|0;e=g+1|0}if((t|0)==13){t=0;if((j|0)==8){t=15;break}h=c[80+(g<<2)>>2]|0;e=c[48+(g<<2)>>2]|0}c[i+28+(f<<2)>>2]=h+l;j=c[o>>2]|0;c[i+40028+(j<<2)>>2]=e+(c[i+40028+(j+-1<<2)>>2]|0);j=c[o>>2]|0;h=i+28+(j<<2)|0;if((c[h>>2]|0)==(r|0)?(c[i+40028+(j<<2)>>2]|0)==(s|0):0){t=18;break}f=j+1|0;c[o>>2]=f;if((f|0)==9999){t=21;break}e=c[i+40028+(j<<2)>>2]|0;l=c[h>>2]|0}if((t|0)==15){Ue(0,3,20152,m);e=-1;break}else if((t|0)==18){f=0;e=0;h=1;while(1){if((h|0)>=(j|0))break;x=(c[i+28+(h<<2)>>2]|0)-r|0;x=B(x,x)|0;d=(c[i+40028+(h<<2)>>2]|0)-s|0;x=(B(d,d)|0)+x|0;d=(x|0)>(e|0);f=d?h:f;e=d?x:e;h=h+1|0}e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=c[i+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[i+40028+(e<<2)>>2];e=e+1|0}h=f;e=j;while(1){if((h|0)>=(e|0))break;e=h-f|0;c[i+28+(e<<2)>>2]=c[i+28+(h<<2)>>2];c[i+40028+(e<<2)>>2]=c[i+40028+(h<<2)>>2];h=h+1|0;e=c[o>>2]|0}e=0;while(1){if((e|0)>=(f|0))break;x=e-f|0;c[i+28+((c[o>>2]|0)+x<<2)>>2]=c[u+(e<<2)>>2];c[i+40028+((c[o>>2]|0)+x<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}c[i+28+(c[o>>2]<<2)>>2]=c[p>>2];c[i+40028+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1;e=0;break}else if((t|0)==21){Ue(0,3,20159,n);e=-1;break}}else t=7;while(0);if((t|0)==7){Ue(0,3,20145,j);e=-1}zb=w;return e|0}function Qc(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=zb;zb=zb+96|0;o=r+48|0;k=r+92|0;p=r;l=r+88|0;m=b+28|0;j=c[m>>2]|0;n=b+40028|0;h=c[n>>2]|0;q=b+24|0;i=(c[q>>2]|0)+-1|0;f=1;g=0;e=0;while(1){if((f|0)>=(i|0))break;t=(c[b+28+(f<<2)>>2]|0)-j|0;t=B(t,t)|0;u=(c[b+40028+(f<<2)>>2]|0)-h|0;t=(B(u,u)|0)+t|0;u=(t|0)>(g|0);s=u?f:e;f=f+1|0;g=u?t:g;e=s}d=+(a|0)/.75*.01*d;c[k>>2]=0;c[l>>2]=0;a:do if((Rc(m,n,0,e,d,o,k)|0)>=0?(Rc(m,n,e,(c[q>>2]|0)+-1|0,d,p,l)|0)>=0:0){f=c[k>>2]|0;g=c[l>>2]|0;do if((f|0)==1&(g|0)==1){f=c[p>>2]|0;g=c[o>>2]|0}else{if((f|0)>1&(g|0)==0){f=(e|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,0,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,e,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=e;g=c[o>>2]|0;e=c[p>>2]|0;break}if(!((f|0)==0&(g|0)>1)){e=-1;break a}f=(e+-1+(c[q>>2]|0)|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,e,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,(c[q>>2]|0)+-1|0,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=c[p>>2]|0;g=e;e=c[o>>2]|0}while(0);c[b+80028>>2]=0;c[b+80032>>2]=g;c[b+80036>>2]=e;c[b+80040>>2]=f;c[b+80044>>2]=(c[q>>2]|0)+-1;e=0}else e=-1;while(0);zb=r;return e|0}function Rc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0;j=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;l=+(j-q|0);i=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(i-r|0);n=+((B(r,q)|0)-(B(i,j)|0)|0);j=d+1|0;i=j;k=0.0;while(1){if((j|0)>=(e|0))break;s=l*+(c[a+(j<<2)>>2]|0)+m*+(c[b+(j<<2)>>2]|0)+n;s=s*s;r=s>k;i=r?j:i;j=j+1|0;k=r?s:k}if(k/(l*l+m*m)>f)if(((Rc(a,b,d,i,f,g,h)|0)>=0?(o=c[h>>2]|0,(o|0)<=5):0)?(c[g+(o<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(Rc(a,b,i,e,f,g,h)|0)>=0):0)p=8;else i=-1;else p=8;if((p|0)==8)i=0;return i|0}function Sc(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=zb;zb=zb+16|0;r=y+4|0;s=y;x=qe(2)|0;u=qe(2)|0;v=Dd(2,2)|0;k=0;a:while(1){if(k>>>0>=4){q=10;break}l=k+1|0;q=c[e+(l<<2)>>2]|0;n=c[e+(k<<2)>>2]|0;p=+(q+1-n|0)*.05+.5;n=~~(p+ +(n|0));q=~~(+(q|0)-p)-n|0;w=Dd(q+1|0,2)|0;d=0;while(1){if((d|0)>(q|0))break;z=d+n|0;if((pe(h,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),r,s)|0)<0){q=6;break a}A=c[w>>2]|0;z=d<<1;g[A+(z<<3)>>3]=+f[r>>2];g[A+((z|1)<<3)>>3]=+f[s>>2];d=d+1|0}if((Pd(w,v,x,u)|0)<0){q=14;break}A=c[v>>2]|0;o=+g[A+8>>3];g[i+(k*24|0)>>3]=o;p=-+g[A>>3];g[i+(k*24|0)+8>>3]=p;A=c[u>>2]|0;g[i+(k*24|0)+16>>3]=-(o*+g[A>>3]+ +g[A+8>>3]*p);Ld(w)|0;k=l}b:do if((q|0)==6)q=14;else if((q|0)==10){Ld(v)|0;re(u)|0;re(x)|0;d=0;while(1){if(d>>>0>=4){d=0;break b}k=d+3&3;l=i+(k*24|0)|0;m=+g[i+(d*24|0)+8>>3];n=i+(d*24|0)|0;o=+g[i+(k*24|0)+8>>3];p=+g[l>>3]*m-+g[n>>3]*o;if(+t(+p)<.0001){d=-1;break b}A=i+(d*24|0)+16|0;z=i+(k*24|0)+16|0;g[j+(d<<4)>>3]=(o*+g[A>>3]-m*+g[z>>3])/p;g[j+(d<<4)+8>>3]=(+g[n>>3]*+g[z>>3]-+g[l>>3]*+g[A>>3])/p;d=d+1|0}}while(0);if((q|0)==14){Ld(w)|0;Ld(v)|0;re(u)|0;re(x)|0;d=-1}zb=y;return d|0}function Tc(a,b,d,e,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=+n;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+16|0;A=G+4|0;B=G;C=l>>>0<2;D=(l|0)==2;z=0;r=0;while(1){if((z|0)>=(i|0))break;c[o+(r<<8)>>2]=c[h+(z*80048|0)>>2];if((pe(m,+g[h+(z*80048|0)+8>>3],+g[h+(z*80048|0)+16>>3],A,B)|0)>=0?(g[o+(r<<8)+56>>3]=+f[A>>2],g[o+(r<<8)+64>>3]=+f[B>>2],E=o+(r<<8)+168|0,(Sc(h+(z*80048|0)+28|0,h+(z*80048|0)+40028|0,c[h+(z*80048|0)+24>>2]|0,h+(z*80048|0)+80028|0,m,o+(r<<8)+72|0,E)|0)>=0):0){v=o+(r<<8)+8|0;s=o+(r<<8)+20|0;t=o+(r<<8)+40|0;w=o+(r<<8)+12|0;y=o+(r<<8)+24|0;x=o+(r<<8)+48|0;u=od(j,k,l,a,b,d,e,m,E,n,v,s,t,w,y,x,q,o+(r<<8)+240|0,o+(r<<8)+248|0)|0;switch(u|0){case 0:{F=12;break}case -1:{u=2;F=12;break}case -2:{u=3;F=12;break}case -3:{u=4;F=12;break}case -4:{u=5;F=12;break}case -5:{u=9;F=12;break}case -6:{u=1;F=12;break}default:{}}if((F|0)==12){F=0;c[o+(r<<8)+236>>2]=u}if(!C){if(D){c[o+(r<<8)+4>>2]=c[w>>2];t=x;s=y;F=17}}else{c[o+(r<<8)+4>>2]=c[v>>2];F=17}if((F|0)==17){F=0;c[o+(r<<8)+16>>2]=c[s>>2];g[o+(r<<8)+32>>3]=+g[t>>3]}r=r+1|0}z=z+1|0}c[p>>2]=r;zb=G;return 0}function Uc(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+288|0;h=m+192|0;i=m+96|0;j=m+264|0;k=m;l=m+256|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){f=b+24|0;break}else{f=b+16|0;break}else f=b+20|0;while(0);f=c[f>>2]|0;o=(4-f|0)%4|0;g[h>>3]=+g[b+168+(o<<4)>>3];g[h+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-f|0)%4|0;g[h+16>>3]=+g[b+168+(o<<4)>>3];g[h+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-f|0)%4|0;g[h+32>>3]=+g[b+168+(o<<4)>>3];g[h+40>>3]=+g[b+168+(o<<4)+8>>3];f=(7-f|0)%4|0;g[h+48>>3]=+g[b+168+(f<<4)>>3];g[h+56>>3]=+g[b+168+(f<<4)+8>>3];n=d*-.5;g[i>>3]=n;d=d*.5;g[i+8>>3]=d;g[i+16>>3]=0.0;g[i+24>>3]=d;g[i+32>>3]=d;g[i+40>>3]=0.0;g[i+48>>3]=d;g[i+56>>3]=n;g[i+64>>3]=0.0;g[i+72>>3]=n;g[i+80>>3]=n;g[i+88>>3]=0.0;c[j>>2]=h;c[j+4>>2]=i;c[j+8>>2]=4;if((Me(c[a>>2]|0,h,i,4,k)|0)<0)d=1.0e8;else{o=(He(c[a>>2]|0,j,k,e,l)|0)<0;d=o?1.0e8:+g[l>>3]}zb=m;return +d}function Vc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+192|0;i=m+96|0;j=m;k=m+168|0;l=m+160|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){h=b+24|0;break}else{h=b+16|0;break}else h=b+20|0;while(0);h=c[h>>2]|0;o=(4-h|0)%4|0;g[i>>3]=+g[b+168+(o<<4)>>3];g[i+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-h|0)%4|0;g[i+16>>3]=+g[b+168+(o<<4)>>3];g[i+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-h|0)%4|0;g[i+32>>3]=+g[b+168+(o<<4)>>3];g[i+40>>3]=+g[b+168+(o<<4)+8>>3];h=(7-h|0)%4|0;g[i+48>>3]=+g[b+168+(h<<4)>>3];g[i+56>>3]=+g[b+168+(h<<4)+8>>3];n=e*-.5;g[j>>3]=n;e=e*.5;g[j+8>>3]=e;g[j+16>>3]=0.0;g[j+24>>3]=e;g[j+32>>3]=e;g[j+40>>3]=0.0;g[j+48>>3]=e;g[j+56>>3]=n;g[j+64>>3]=0.0;g[j+72>>3]=n;g[j+80>>3]=n;g[j+88>>3]=0.0;c[k>>2]=i;c[k+4>>2]=j;c[k+8>>2]=4;k=(He(c[a>>2]|0,k,d,f,l)|0)<0;zb=m;return +(k?1.0e8:+g[l>>3])}function Wc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((He(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Xc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((Je(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Yc(a,b){a=a|0;b=b|0;var d=0;d=FO(2064)|0;if(d|0){c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b}return d|0}function Zc(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return}function _c(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0&(b|0)!=0){aP(a+12|0,0,1024)|0;e=b+(B(c[a+8>>2]|0,c[a+4>>2]|0)|0)|0;while(1){if(b>>>0>=e>>>0){b=0;break a}f=a+12+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}}else b=-1;while(0);return b|0}function $c(a,b){a=a|0;b=b|0;var d=0;b=_c(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+12+(d<<2)>>2]|0)+b|0;c[a+1036+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function ad(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;if(!(e<0.0|e>1.0)){d=$c(b,d)|0;if((d|0)>=0){i=~~(+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0)*e)>>>0;d=0;while(1){j=d&255;g=c[b+1036+(j<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}while(1){h=d+1<<24>>24;if((g|0)!=(i|0))break;d=h;g=c[b+1036+((h&255)<<2)>>2]|0}a[f>>0]=((d&255)+j|0)>>>1;d=0}}else d=-1;return d|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;return ad(a,b,.5,c)|0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0;d=_c(b,d)|0;if((d|0)>=0){m=0.0;d=1;do{m=m+ +((B(c[b+12+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0);d=0;h=0.0;j=0.0;g=0.0;l=0;while(1){f=c[b+12+(l<<2)>>2]|0;j=j+ +(f>>>0);if(j!=0.0){i=k-j;if(i==0.0)break;g=g+ +((B(f,l)|0)>>>0);o=g/j-(m-g)/i;i=o*(j*i*o);n=i>h;f=l&255;d=n?f:d;h=n?i:h}else f=l&255;if(f<<24>>24==-1)break;else l=l+1|0}a[e>>0]=d;d=0}return d|0}function dd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=_c(b,e)|0;a:do if((h|0)>=0){if(!(c[b>>2]|0)){h=b+4|0;i=b+8|0;s=FO(B(c[i>>2]|0,c[h>>2]|0)|0)|0;c[b>>2]=s;if(!s){h=-1;break}else{s=h;r=i}}else{s=b+4|0;r=b+8|0}p=f>>1;q=0-p|0;o=0;while(1){h=c[r>>2]|0;if((o|0)>=(h|0))break;l=0;while(1){n=c[s>>2]|0;if((l|0)>=(n|0))break;m=q;f=0;h=0;while(1){if((m|0)>(p|0))break;i=m+o|0;b:do if((i|0)>=0?(i|0)<(c[r>>2]|0):0){k=B(i,n)|0;j=q;i=f;while(1){if((j|0)>(p|0))break b;f=j+l|0;if((f|0)>-1&(f|0)<(n|0)){i=i+1|0;h=h+(d[e+(f+k)>>0]|0)|0}j=j+1|0}}else i=f;while(0);m=m+1|0;f=i}n=(c[b>>2]|0)+((B(n,o)|0)+l)|0;a[n>>0]=(h|0)/(f|0)|0;l=l+1|0}o=o+1|0}if(!g)h=0;else{i=0;while(1){if((i|0)>=(B(h,c[s>>2]|0)|0)){h=0;break a}h=(c[b>>2]|0)+i|0;a[h>>0]=(d[h>>0]|0)+g;i=i+1|0;h=c[r>>2]|0}}}while(0);return h|0}function ed(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;e=(e|0)==1;j=(i|0)!=0;do if(!d)if(e){if(j){e=fc(a,b,c,i,h)|0;break}if(!g){e=ec(a,b,c,f,h)|0;break}else{e=dc(a,b,c,f,h)|0;break}}else{if(j){e=ic(a,b,c,i,h)|0;break}if(!g){e=hc(a,b,c,f,h)|0;break}else{e=gc(a,b,c,f,h)|0;break}}else if(e){if(j){e=lc(a,b,c,i,h)|0;break}if(!g){e=kc(a,b,c,f,h)|0;break}else{e=jc(a,b,c,f,h)|0;break}}else{if(j){e=oc(a,b,c,i,h)|0;break}if(!g){e=nc(a,b,c,f,h)|0;break}else{e=mc(a,b,c,f,h)|0;break}}while(0);return e|0}function fd(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;a=0}else a=-1;return a|0}function gd(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;a=0}else a=-1;return a|0}function hd(){return id(16,50)|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+64|0;p=q+56|0;o=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;f=q+16|0;e=q+8|0;d=q;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){m=FO(32)|0;if(!m){Ue(0,3,41858,d);Ea(1)}c[m>>2]=0;c[m+4>>2]=b;c[m+28>>2]=a;l=FO(b<<2)|0;c[m+8>>2]=l;if(!l){Ue(0,3,41858,e);Ea(1)}d=b<<4;k=FO(d)|0;c[m+12>>2]=k;if(!k){Ue(0,3,41858,f);Ea(1)}f=FO(d)|0;j=m+20|0;c[j>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}d=b<<5;g=FO(d)|0;c[m+16>>2]=g;if(!g){Ue(0,3,41858,h);Ea(1)}h=FO(d)|0;c[m+24>>2]=h;if(!h){Ue(0,3,41858,i);Ea(1)}g=B(a,a)|0;f=g*12|0;g=g<<2;e=0;b:while(1){if((e|0)>=(b|0)){n=m;break a}c[l+(e<<2)>>2]=0;a=e<<2;d=0;while(1){if(d>>>0>=4)break;i=FO(f)|0;h=d+a|0;c[k+(h<<2)>>2]=i;if(!i){d=19;break b}i=FO(g)|0;c[(c[j>>2]|0)+(h<<2)>>2]=i;if(!i){d=21;break b}else d=d+1|0}e=e+1|0}if((d|0)==19){Ue(0,3,41858,o);Ea(1)}else if((d|0)==21){Ue(0,3,41858,p);Ea(1)}}else n=0;while(0);zb=q;return n|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)b=-1;else{f=a+4|0;g=a+8|0;h=a+12|0;i=a+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;if(c[(c[g>>2]|0)+(d<<2)>>2]|0)td(a,d)|0;e=d<<2;b=0;while(1){if((b|0)==4)break;j=b+e|0;GO(c[(c[h>>2]|0)+(j<<2)>>2]|0);GO(c[(c[i>>2]|0)+(j<<2)>>2]|0);b=b+1|0}d=d+1|0}GO(c[h>>2]|0);GO(c[i>>2]|0);GO(c[g>>2]|0);GO(c[a+16>>2]|0);GO(c[a+24>>2]|0);GO(a);b=0}return b|0}function kd(b,e,f,h,i,j,k){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+32|0;p=u+24|0;o=u;t=u+16|0;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-1}else{c[o>>2]=0;s=e+-1|0;q=B(s,e)|0;c[o+4>>2]=q;q=B(e,e)|0;c[o+8>>2]=q+-1;c[o+12>>2]=s;l=0;m=0;n=-1;while(1){if((l|0)==4)break;r=a[b+(c[o+(l<<2)>>2]|0)>>0]|0;l=l+1|0;m=(r&255)>(m&255)?r:m;n=(r&255)<(n&255)?r:n}m=m&255;l=n&255;if((m-l|0)<30){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-2;break}n=(m+l|0)>>>1;l=0;while(1){if((l|0)==4)break;a[p+l>>0]=n>>>0>(d[b+(c[o+(l<<2)>>2]|0)>>0]|0)>>>0&1;l=l+1|0}m=0;while(1){if(m>>>0>=4){l=18;break}l=m+1|0;if(((a[p+m>>0]|0)==1?(a[p+(l&3)>>0]|0)==1:0)?(a[p+(m+2&3)>>0]|0)==0:0){l=17;break}m=l}if((l|0)==17)c[h>>2]=m;else if((l|0)==18?(m|0)==4:0){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-3;break}r=255;l=0;while(1){if((l|0)==(q|0))break;o=b+l|0;m=d[o>>0]|0;p=m-n|0;p=(p|0)<0?0-p|0:p;a[o>>0]=n>>>0>m>>>0&1;r=(p|0)<(r|0)?p:r;l=l+1|0}l=c[h>>2]|0;b:do switch(l|0){case 0:{n=l;m=0;l=0;while(1){if((n|0)>=(e|0))break b;p=(n|0)==(s|0);q=B(n,e)|0;o=0;while(1){if((o|0)==(e|0))break;if((o|n|0)!=0?!(p&((o|0)==0|(o|0)==(s|0))):0){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+q)>>0]|0)!=0}o=o+1|0}n=n+1|0}}case 1:{o=0;m=0;l=0;while(1){if((o|0)>=(e|0))break b;p=(o|0)==0;q=(o|0)==(s|0);n=s;while(1){if((n|0)<=-1)break;h=(n|0)==(s|0);if(!(p&h)?!(q&(h|(n|0)==0)):0){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+-1|0}o=o+1|0}}case 2:{n=s;m=0;l=0;while(1){if((n|0)<=-1)break b;q=(n|0)==(s|0)|(n|0)==0;p=B(n,e)|0;o=s;while(1){if((o|0)<=-1)break;if(!(q&(o|0)==(s|0)|(o|n|0)==0)){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+p)>>0]|0)!=0}o=o+-1|0}n=n+-1|0}}case 3:{o=s;m=0;l=0;while(1){if((o|0)<=-1)break b;p=(o|0)==(s|0);q=(o|0)==0;n=0;while(1){if((n|0)>=(e|0))break;if(!(p&(n|0)==0|(n|o|0)==0|q&(n|0)==(s|0))){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+1|0}o=o+-1|0}}default:{m=0;l=0}}while(0);g[i>>3]=(r|0)>30?1.0:+(r|0)/30.0;switch(j|0){case 259:{k=a[240+m>>0]|0;s=k<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 515:{l=a[112+m>>0]|0;s=l<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k|0)c[k>>2]=d[176+m>>0];if(l<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 772:case 1028:case 1029:case 1285:{l=md(j,m,l,0,t)|0;if((l|0)<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}if((k|0)!=0&(l|0)!=0)c[k>>2]=l;break}default:{k=t;c[k>>2]=m;c[k+4>>2]=l}}c[f>>2]=c[t>>2];l=0}while(0);zb=u;return l|0}function ld(b,d,e,f,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;l=z+8|0;k=z;a:do if((b|0)==0|(f|0)<1){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;d=-1}else switch(d|0){case 0:{x=B(f,f)|0;w=x*3|0;x=FO(x*12|0)|0;if(!x){Ue(0,3,41858,k);Ea(1)}d=0;k=0;while(1){if((d|0)==(w|0))break;t=k+(~a[e+d>>0]&255)|0;d=d+1|0;k=t}l=(k>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/(+(f|0)*1.7320508)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+12|0;q=b+16|0;m=0.0;p=0;d=-1;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;b:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break b}default:{y=18;break b}}}c:do if((y|0)==18){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break c;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}case 1:{w=B(f,f)|0;x=FO(w<<2)|0;if(!x){Ue(0,3,41858,l);Ea(1)}d=0;k=0;while(1){if((k|0)==(w|0))break;d=d+(~a[e+k>>0]&255)|0;k=k+1|0}l=(d>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/+(f|0)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+20|0;q=b+24|0;p=0;d=-1;m=0.0;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;d:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break d}default:{y=40;break d}}}e:do if((y|0)==40){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break e;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}default:{d=-1;break a}}while(0);zb=z;return d|0}function md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0;I=zb;zb=zb+2384|0;l=I+2320|0;D=I+880|0;A=I+800|0;H=I+720|0;C=I+640|0;y=I+560|0;G=I+48|0;E=I;switch(b|0){case 2830:{l=g;u=1200;x=688;m=120;n=127;w=64;o=9;i=8;break}case 772:{j=624;k=432;m=13;n=15;b=9;o=1;i=5;break}case 1028:{j=624;k=432;m=13;n=15;b=5;o=2;i=5;break}case 1029:{b=12;g=2;i=4;break}case 1285:{b=7;g=3;i=4;break}default:b=-1}if((i|0)==4){j=496;k=304;m=22;n=31;o=g;i=5}a:do if((i|0)==5){i=0;g=f;while(1){if((i|0)==(m|0)){u=j;x=k;w=b;i=8;break a}a[l+i>>0]=e&1;x=TO(e|0,g|0,1)|0;i=i+1|0;e=x;g=F()|0}}while(0);b:do if((i|0)==8){t=o<<1;g=0;i=1;while(1){if((i|0)>(t|0))break;j=y+(i<<2)|0;c[j>>2]=0;e=0;b=0;while(1){if((e|0)>=(m|0))break;if(a[l+e>>0]|0){v=x+(((B(e,i)|0)%(n|0)|0)<<2)|0;b=b^c[v>>2];c[j>>2]=b}e=e+1|0}c[j>>2]=c[u+(b<<2)>>2];g=(b|0)==0?g:1;i=i+1|0}v=(g|0)!=0;c:do if(v){c[A>>2]=0;g=c[y+4>>2]|0;c[A+4>>2]=g;c[D>>2]=0;c[D+72>>2]=1;b=1;while(1){if((b|0)>=(t|0))break;c[D+(b<<2)>>2]=-1;c[D+72+(b<<2)>>2]=0;b=b+1|0}c[H>>2]=0;c[H+4>>2]=0;c[C>>2]=-1;c[C+4>>2]=0;s=0;r=0;while(1){f=s;s=s+1|0;d:do if((g|0)==-1){f=f+2|0;c[H+(f<<2)>>2]=r;b=0;while(1){if((b|0)>(r|0)){q=r;break d}q=D+(s*72|0)+(b<<2)|0;p=c[q>>2]|0;c[D+(f*72|0)+(b<<2)>>2]=p;c[q>>2]=c[u+(p<<2)>>2];b=b+1|0}}else{e=f;while(1){b=(e|0)>0;if(b&(c[A+(e<<2)>>2]|0)==-1)e=e+-1|0;else break}if(b){b=e;i=e;while(1){j=i;i=i+-1|0;if((c[A+(i<<2)>>2]|0)==-1)e=b;else e=(c[C+(b<<2)>>2]|0)<(c[C+(i<<2)>>2]|0)?i:b;if((j|0)<=1)break;else b=e}}i=H+(e<<2)|0;p=s-e|0;q=p+(c[i>>2]|0)|0;f=f+2|0;q=(r|0)>(q|0)?r:q;c[H+(f<<2)>>2]=q;b=0;while(1){if((b|0)>=(t|0))break;c[D+(f*72|0)+(b<<2)>>2]=0;b=b+1|0}j=g+n|0;k=A+(e<<2)|0;g=c[i>>2]|0;b=0;while(1){if((b|0)>(g|0))break;i=c[D+(e*72|0)+(b<<2)>>2]|0;if((i|0)!=-1)c[D+(f*72|0)+(p+b<<2)>>2]=c[x+(((j+i-(c[k>>2]|0)|0)%(n|0)|0)<<2)>>2];b=b+1|0}b=0;while(1){if((b|0)>(r|0))break d;p=D+(s*72|0)+(b<<2)|0;k=c[p>>2]|0;j=D+(f*72|0)+(b<<2)|0;c[j>>2]=c[j>>2]^k;c[p>>2]=c[u+(k<<2)>>2];b=b+1|0}}while(0);c[C+(f<<2)>>2]=s-q;if((s|0)>=(t|0))break;b=c[y+(f<<2)>>2]|0;if((b|0)==-1)b=0;else b=c[x+(b<<2)>>2]|0;i=A+(f<<2)|0;c[i>>2]=b;e=1;while(1){if((e|0)>(q|0))break;g=c[y+(f-e<<2)>>2]|0;if((g|0)!=-1?(z=c[D+(f*72|0)+(e<<2)>>2]|0,(z|0)!=0):0){b=b^c[x+((((c[u+(z<<2)>>2]|0)+g|0)%(n|0)|0)<<2)>>2];c[i>>2]=b}e=e+1|0}g=c[u+(b<<2)>>2]|0;c[i>>2]=g;if((q|0)>(o|0))break;else r=q}if((q|0)>(o|0)){b=-1;break b}b=0;while(1){if((b|0)>(q|0))break;C=D+(f*72|0)+(b<<2)|0;c[C>>2]=c[u+(c[C>>2]<<2)>>2];b=b+1|0}b=1;while(1){if((b|0)>(q|0))break;c[E+(b<<2)>>2]=c[D+(f*72|0)+(b<<2)>>2];b=b+1|0}b=0;k=1;while(1){if((n|0)<(k|0))break;j=1;g=1;while(1){if((j|0)>(q|0))break;e=E+(j<<2)|0;i=c[e>>2]|0;if((i|0)!=-1){D=(i+j|0)%(n|0)|0;c[e>>2]=D;g=c[x+(D<<2)>>2]^g}j=j+1|0}if(!g){c[G+(b<<2)>>2]=n-k;b=b+1|0}k=k+1|0}if((b|0)!=(q|0)){b=-1;break b}b=0;while(1){if((b|0)>=(q|0))break c;E=l+(c[G+(b<<2)>>2]|0)|0;a[E>>0]=a[E>>0]^1;b=b+1|0}}else f=0;while(0);b=h;c[b>>2]=0;c[b+4>>2]=0;b=m-w|0;g=1;e=0;i=0;j=0;while(1){if((b|0)>=(m|0))break;E=NO(g|0,e|0,d[l+b>>0]|0,0)|0;E=OO(E|0,F()|0,i|0,j|0)|0;G=F()|0;D=h;c[D>>2]=E;c[D+4>>2]=G;D=UO(g|0,e|0,1)|0;b=b+1|0;g=D;e=F()|0;i=E;j=G}if(v)b=c[H+(f<<2)>>2]|0;else b=0}while(0);zb=I;return b|0}function nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Dd(8,8)|0;h=Dd(8,1)|0;i=Dd(8,1)|0;e=0;while(1){if((e|0)==4)break;o=a+(e<<4)|0;j=c[f>>2]|0;k=e<<4;g[j+(k<<3)>>3]=+g[o>>3];n=a+(e<<4)+8|0;g[j+((k|1)<<3)>>3]=+g[n>>3];g[j+((k|2)<<3)>>3]=1.0;g[j+((k|3)<<3)>>3]=0.0;g[j+((k|4)<<3)>>3]=0.0;g[j+((k|5)<<3)>>3]=0.0;m=b+(e<<4)|0;g[j+((k|6)<<3)>>3]=-(+g[o>>3]*+g[m>>3]);g[j+((k|7)<<3)>>3]=-(+g[n>>3]*+g[m>>3]);g[j+((k|8)<<3)>>3]=0.0;g[j+((k|9)<<3)>>3]=0.0;g[j+((k|10)<<3)>>3]=0.0;g[j+((k|11)<<3)>>3]=+g[o>>3];g[j+((k|12)<<3)>>3]=+g[n>>3];g[j+((k|13)<<3)>>3]=1.0;l=b+(e<<4)+8|0;g[j+((k|14)<<3)>>3]=-(+g[o>>3]*+g[l>>3]);g[j+((k|15)<<3)>>3]=-(+g[n>>3]*+g[l>>3]);k=c[h>>2]|0;j=e<<1;g[k+(j<<3)>>3]=+g[m>>3];g[k+((j|1)<<3)>>3]=+g[l>>3];e=e+1|0}Xd(f)|0;Nd(i,f,h)|0;a=c[i>>2]|0;e=0;while(1){if((e|0)==2)break;o=e*3|0;g[d+(e*24|0)>>3]=+g[a+(o<<3)>>3];g[d+(e*24|0)+8>>3]=+g[a+(o+1<<3)>>3];g[d+(e*24|0)+16>>3]=+g[a+(o+2<<3)>>3];e=e+1|0}g[d+48>>3]=+g[a+48>>3];g[d+56>>3]=+g[a+56>>3];g[d+64>>3]=1.0;Ld(f)|0;Ld(h)|0;Ld(i)|0;return}function od(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0;w=zb;zb=zb+12304|0;v=w;u=w+12288|0;do if((d+-2|0)>>>0<3){if((r|0)!=2830){u=r&255;if((pd(b,2,u,u*3|0,e,f,g,h,i,j,k,v)|0)<0){c[o>>2]=-1;r=-6;break}u=kd(v,u,o,p,q,r,s)|0;if(!t){r=u;break}r=t;c[r>>2]=0;c[r+4>>2]=0;r=u;break}if((pd(b,2,14,42,e,f,g,h,i,j,.875,v)|0)<0){c[o>>2]=-1;r=-6;break}r=qd(v,u,p,q,s)|0;if((r|0)<0){c[o>>2]=-1;break}p=u;u=c[p>>2]|0;p=c[p+4>>2]|0;if((u|0)==-1&(p|0)==-1){c[o>>2]=-1;r=-5;break}c[o>>2]=(u&-32768|0)==0&0==0?u&32767:0;if(t){c[t>>2]=u;c[t+4>>2]=p}}else r=1;while(0);a:do switch(d|0){case 0:case 1:case 3:case 4:{if(!a){c[l>>2]=-1;u=-1;break a}u=a+28|0;p=c[u>>2]|0;q=p<<2;switch(d|0){case 0:case 3:if((pd(b,0,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,0,v,c[u>>2]|0,l,m,n)|0;break a}default:if((pd(b,1,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,1,v,c[u>>2]|0,l,m,n)|0;break a}}}default:u=1}while(0);if((r|0)!=1)u=(u|0)==1?r:(u&r|0)<0?u:0;zb=w;return u|0}function pd(b,e,h,i,j,k,l,m,n,o,p,q){b=b|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=+p;q=q|0;var r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0;R=zb;zb=zb+256|0;A=R+232|0;z=R+224|0;D=R+216|0;C=R+208|0;s=R+144|0;t=R+80|0;N=R;O=R+240|0;P=R+236|0;g[s>>3]=100.0;g[s+8>>3]=100.0;g[s+16>>3]=110.0;g[s+24>>3]=100.0;g[s+32>>3]=110.0;g[s+40>>3]=110.0;g[s+48>>3]=100.0;g[s+56>>3]=110.0;r=0;while(1){if((r|0)==4)break;g[t+(r<<4)>>3]=+g[o+(r<<4)>>3];g[t+(r<<4)+8>>3]=+g[o+(r<<4)+8>>3];r=r+1|0}nd(s,t,N);y=+g[t>>3];T=+g[t+16>>3];w=y-T;I=+g[t+8>>3];S=+g[t+24>>3];u=I-S;r=~~(w*w+u*u);u=+g[t+32>>3];w=+g[t+48>>3];V=u-w;v=+g[t+40>>3];x=+g[t+56>>3];U=v-x;L=~~(V*V+U*U);u=T-u;v=S-v;t=~~(u*u+v*v);y=w-y;I=x-I;M=~~(y*y+I*I);r=~~(+(((L|0)>(r|0)?L:r)|0)*p*p);t=~~(+(((M|0)>(t|0)?M:t)|0)*p*p);if(!b){s=h;while(1)if((s|0)<(i|0)&(B(s,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r,r)|0)<(t|0))r=r<<1;else break}else{s=h;while(1)if((s|0)<(i|0)&(B(s<<2,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r<<2,r)|0)<(t|0))r=r<<1;else break}M=(s|0)>(i|0)?i:s;J=(r|0)>(i|0)?i:r;K=(M|0)/(h|0)|0;L=(J|0)/(h|0)|0;u=(1.0-p)*.5*10.0;I=p*10.0;H=B(h,h)|0;a:do if(!e){H=H*3|0;r=HO(H,4)|0;if(!r){Ue(0,3,41858,C);Ea(1)}b:do switch(m|0){case 0:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 1:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t+2)>>0]|0)}i=i+1|0}o=o+1|0}}case 2:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 3:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|2)>>0]|0)}i=i+1|0}o=o+1|0}}case 4:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|3)>>0]|0)}i=i+1|0}o=o+1|0}}case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=j+((B(t,k)|0)+s)|0;t=d[t>>0]|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}i=i+1|0}o=o+1|0}}case 6:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|3)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|1)>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){X=B(t,k)|0;W=(s&65534)+X<<1;T=+((d[j+W>>0]|0)+-128|0);V=+((d[j+(W+2)>>0]|0)+-128|0);U=+((d[j+(X+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;X=~~(T*516.4110107421875+U)>>8;W=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;t=~~(U+V*408.5830078125)>>8;X=(X|0)>0?X:0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=((X|0)<255?X:255)+(c[s>>2]|0);W=(W|0)>0?W:0;s=r+(b+1<<2)|0;c[s>>2]=((W|0)<255?W:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=r+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=B(t,k)|0;W=(s&65534)+t<<1;T=+((d[j+(W|1)>>0]|0)+-128|0);V=+((d[j+(W+3)>>0]|0)+-128|0);U=+((d[j+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(U+T*516.4110107421875)>>8;t=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;W=~~(U+V*408.5830078125)>>8;s=(s|0)>0?s:0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=r+(X+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);W=(W|0)>0?W:0;X=r+(X+2<<2)|0;c[X>>2]=((W|0)<255?W:255)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;i=0;while(1){if((i|0)>=(J|0))break b;v=w+I*(+(i|0)+.5)/x;o=0;while(1){if((o|0)>=(M|0))break;u=w+I*(+(o|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((i|0)/(L|0)|0,h)|0)+((o|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<3&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-32&255)>>>3|W<<5&255|2)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}o=o+1|0}i=i+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<2&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-64&255)>>>3|W<<5&255|4)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((a[j+(W|1)>>0]&-16|8)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=(c[b>>2]|0)+((W<<4&255|8)&255);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-16|8)&255)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,D);Q=306;break a}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}else{r=HO(H,4)|0;if(!r){Ue(0,3,41858,z);Ea(1)}c:do if(m>>>0<2){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=((B(t,k)|0)+s|0)*3|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W+1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W+2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}else{if((m|1|0)==3){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W|2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}if((m|2|0)==6){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|2)>>0]|0)+(d[j+(W|1)>>0]|0)+(d[j+(W|3)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}switch(m|0){case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1|1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&28|2)+(b&248|4)+(W<<3&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&24|4)+(b&248|4)+(W<<2&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<4&240|8)+(b&240|8)+((a[j+(W|1)>>0]&-16|8)&255)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,A);Q=306;break a}}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}while(0);if((Q|0)==306){GO(r);r=-1}zb=R;return r|0}function qd(b,e,f,h,i){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+160|0;o=y+152|0;n=y+128|0;x=y+144|0;w=y;c[n>>2]=0;c[n+4>>2]=182;c[n+8>>2]=195;c[n+12>>2]=13;j=0;l=0;m=-1;while(1){if((j|0)==4)break;v=a[b+(c[n+(j<<2)>>2]|0)>>0]|0;j=j+1|0;l=(v&255)>(l&255)?v:l;m=(v&255)<(m&255)?v:m}l=l&255;j=m&255;a:do if((l-j|0)>=30){v=(l+j|0)>>>1;j=0;while(1){if((j|0)==4)break;a[o+j>>0]=v>>>0>(d[b+(c[n+(j<<2)>>2]|0)>>0]|0)>>>0&1;j=j+1|0}u=0;while(1){if(u>>>0>=4)break;j=u+1|0;if(((a[o+u>>0]|0)==1?(a[o+(j&3)>>0]|0)==1:0)?(a[o+(u+2&3)>>0]|0)==0:0)break;u=j}b:do switch(u&2147483647|0){case 4:{c[f>>2]=0;g[h>>3]=-1.0;j=-3;break a}case 0:{l=119;n=0;j=255;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;p=(n&2147483646|0)==12;q=n*14|0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(r=m&2147483646,((m|n)&2147483646|0)!=0):0)?!(p&((r|0)==0|(r|0)==12)):0){t=(d[b+(m+q)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+1|0}n=n+1|0}}case 1:{l=119;j=255;n=0;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;q=n&2147483646;p=(q|0)==0;q=(q|0)==12;m=13;while(1){if((m|0)<=-1)break;if(((m+-3|o)>>>0>=8?(s=(m&-2|0)==12,!(p&s)):0)?!(q&(m>>>0<2|s)):0){t=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+-1|0}n=n+1|0}}case 2:{m=13;l=119;j=255;while(1){if((m|0)<=-1){p=57;break b}n=m+-3|0;q=m>>>0<2|(m&-2|0)==12;p=m*14|0;o=13;while(1){if((o|0)<=-1)break;if((o+-3|n)>>>0>=8?!((o|m)>>>0<2|q&(o&-2|0)==12):0){t=(d[b+(o+p)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}o=o+-1|0}m=m+-1|0}}case 3:{n=13;l=119;j=255;while(1){if((n|0)<=-1){p=57;break b}o=n+-3|0;p=n&-2;q=(p|0)==12;r=(p|0)==0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(t=m&2147483646,!(q&(t|0)==0)):0)?!((t|p|0)==0|r&(t|0)==12):0){s=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=s>>>31;s=(s|0)>-1?s:0-s|0;l=l+-1|0;j=(s|0)<(j|0)?s:j}m=m+1|0}n=n+-1|0}}default:{c[f>>2]=u;k=1.0}}while(0);if((p|0)==57){c[f>>2]=u;k=(j|0)>30?1.0:+(j|0)/30.0}g[h>>3]=k;j=md(2830,0,0,w,x)|0;if((j|0)<0)j=-4;else{if(i|0)c[i>>2]=j;i=x;x=c[i+4>>2]|0;j=e;c[j>>2]=c[i>>2];c[j+4>>2]=x;j=0}}else{c[f>>2]=0;g[h>>3]=-1.0;j=-2}while(0);zb=y;return j|0}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+32|0;z=A+24|0;f=A+16|0;d=A+8|0;do if(a){if(!b){Ue(0,3,20225,d);d=-1;break}y=a+8|0;e=c[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;if(!(c[(c[y>>2]|0)+(d<<2)>>2]|0))break;d=d+1|0}if((d|0)!=(e|0)){x=jz(b)|0;if(!x){Ue(0,3,20270,f);d=-1;break}p=a+28|0;q=a+12|0;r=d<<2;s=a+20|0;t=a+16|0;v=a+24|0;e=tA(x,20293)|0;o=0;a:while(1){if(o>>>0>=4){e=36;break}w=o+r|0;b=0;n=0;while(1){if(n>>>0>=3)break;l=(n|0)==0;m=(n|0)==2;k=0;f=c[p>>2]|0;while(1){if((k|0)>=(f|0))break;j=0;while(1){if((j|0)>=(f|0))break;if(!e){e=21;break a}f=lA(e)|0;e=tA(0,20293)|0;f=255-f|0;h=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+((((B(c[p>>2]|0,k)|0)+j|0)*3|0)+n<<2)|0;c[h>>2]=f;h=c[(c[s>>2]|0)+(w<<2)>>2]|0;i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;if(!l){c[i>>2]=(c[i>>2]|0)+f;if(m){i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;c[i>>2]=(c[i>>2]|0)/3|0}}else c[i>>2]=f;j=j+1|0;b=f+b|0;f=c[p>>2]|0}k=k+1|0}n=n+1|0}i=c[p>>2]|0;j=(b|0)/(B(i*3|0,i)|0)|0;b=0;f=0;while(1){if(f>>>0>=(B(i*3|0,i)|0)>>>0)break;n=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+(f<<2)|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;i=(B(i,i)|0)+b|0;b=i;f=f+1|0;i=c[p>>2]|0}C=+u(+(+(b|0)));g[(c[t>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;f=0;h=0;b=i;while(1){if(h>>>0>=(B(b,b)|0)>>>0)break;n=(c[(c[s>>2]|0)+(w<<2)>>2]|0)+(h<<2)|0;b=(c[n>>2]|0)-j|0;c[n>>2]=b;b=(B(b,b)|0)+f|0;f=b;h=h+1|0;b=c[p>>2]|0}C=+u(+(+(f|0)));g[(c[v>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;o=o+1|0}if((e|0)==21){Ue(0,3,20298,z);GO(x);d=-1;break}else if((e|0)==36){GO(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Ue(0,3,20200,A);d=-1}while(0);zb=A;return d|0} +function Lm(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+16|0;v=y;w=b+4|0;c[w>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);t=b+8|0;u=b+12|0;s=0;a:while(1){if(s>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,s)|0;yo(g,n)|0;q=_m(d,s)|0;o=zo(g)|0;p=o+4|0;q=q+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){h=c[o>>2]|0;if(l>>>0>=(c[p>>2]|0)-h>>2>>>0)break;z=a[q>>0]|0;k=(_m(e,c[h+(l<<2)>>2]|0)|0)+16|0;do if(z<<24>>24==(a[k>>0]|0)){h=yl(n,Zm(e,c[(c[o>>2]|0)+(l<<2)>>2]|0)|0)|0;if(h>>>0>>0){k=h;h=m;i=c[(c[o>>2]|0)+(l<<2)>>2]|0;break}else{k=m;h=h>>>0>>0?h:j;break}}else{k=m;h=j}while(0);l=l+1|0;m=k;j=h}do if((m|0)!=-1){if((i|0)==-1){x=15;break a}if((j|0)==-1){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v);break}if(+(m>>>0)/+(j>>>0)<+f[u>>2]){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v)}}while(0);s=s+1|0}if((x|0)==15){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,160)|0,35007)|0,31348)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}z=(c[w>>2]|0)-(c[b>>2]|0)>>3;if(z>>>0>(Ak(d)|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,175)|0,35007)|0,31426)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}else{r=(c[w>>2]|0)-(c[b>>2]|0)>>3;break}}else r=0;while(0);zb=y;return r|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;r=t;s=b+4|0;c[s>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);p=b+8|0;q=b+12|0;o=0;while(1){if(o>>>0>=(Ak(d)|0)>>>0)break;l=Zm(d,o)|0;m=(_m(d,o)|0)+16|0;i=0;j=-1;g=2147483647;h=-1;while(1){if(i>>>0>=(Ak(e)|0)>>>0)break;u=a[m>>0]|0;k=(_m(e,i)|0)+16|0;if(u<<24>>24==(a[k>>0]|0)){u=yl(l,Zm(e,i)|0)|0;v=u>>>0>>0;k=v?u:j;g=v?i:g;h=v?j:u>>>0>>0?u:h}else k=j;i=i+1|0;j=k}do if((j|0)!=-1){if((h|0)==-1){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r);break}if(+(j>>>0)/+(h>>>0)<+f[q>>2]){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r)}}while(0);o=o+1|0}v=(c[s>>2]|0)-(c[b>>2]|0)>>3;if(v>>>0>(Ak(d)|0)>>>0){v=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,112)|0,35007)|0,31426)|0;IE(r,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(r,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(r);QE(v,u)|0;ME(v)|0;ua()}else{n=(c[s>>2]|0)-(c[b>>2]|0)>>3;break}}else n=0;while(0);zb=t;return n|0}function Nm(a){a=a|0;return a|0}function Om(a){a=a|0;return c[a>>2]|0}function Pm(a){a=a|0;return c[a+4>>2]|0}function Qm(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;u=zb;zb=zb+32|0;s=u+20|0;t=u+8|0;o=u+4|0;p=u;q=e+4|0;uo(s,(c[q>>2]|0)-(c[e>>2]|0)>>1);uo(t,(c[q>>2]|0)-(c[e>>2]|0)>>1);n=c[e>>2]|0;r=(c[q>>2]|0)-n>>3;m=c[b>>2]|0;d=c[d>>2]|0;k=c[s>>2]|0;l=c[t>>2]|0;b=0;while(1){if((b|0)==(r|0))break;y=c[n+(b<<3)>>2]|0;w=c[n+(b<<3)+4>>2]|0;v=b<<2;x=k+(v<<2)|0;c[x>>2]=c[m+(y*20|0)>>2];c[x+4>>2]=c[m+(y*20|0)+4>>2];c[x+8>>2]=c[m+(y*20|0)+8>>2];c[x+12>>2]=c[m+(y*20|0)+12>>2];v=l+(v<<2)|0;c[v>>2]=c[d+(w*20|0)>>2];c[v+4>>2]=c[d+(w*20|0)+4>>2];c[v+8>>2]=c[d+(w*20|0)+8>>2];c[v+12>>2]=c[d+(w*20|0)+12>>2];b=b+1|0}A=+(g|0);A=A*.20000000298023224+A;z=+(h|0);z=z*.20000000298023224+z;op(a,-A,A,-z,z,0,0,12,10);vo(a,+(i>>1|0),+(j>>1|0));wo(a,i,j);qp(a,c[s>>2]|0,c[t>>2]|0,(c[q>>2]|0)-(c[e>>2]|0)>>3);Fp(a,o,p);y=+f[o>>2]<3.0?-1:c[p>>2]|0;gh(t);gh(s);zb=u;return y|0}function Rm(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+48|0;h=v+32|0;r=v+28|0;s=v+24|0;t=v+20|0;u=v+16|0;n=v+12|0;o=v+8|0;p=v+4|0;q=v;qo(b,n,o,p,q,e);l=a+4|0;c[l>>2]=c[a>>2];m=ro(b)|0;m=(c[m+4>>2]|0)-(c[m>>2]|0)>>2;e=so(b)|0;if(m>>>0>(c[d+4>>2]|0)-(c[d>>2]|0)>>3>>>0){k=Xf(Xf(PE(Xf(Xf(Xf(56032,31870)|0,30067)|0,35e3)|0,342)|0,35007)|0,31916)|0;IE(h,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(k,j)|0;ME(k)|0;ua()}k=a+8|0;e=c[e>>2]|0;h=0;while(1){if((h|0)>=(m|0))break;to(b,r,s,t,u,+f[e>>2],+f[e+4>>2],+f[e+8>>2],+f[e+12>>2],+(c[n>>2]|0)+.5,+(c[o>>2]|0)+.5,+(c[p>>2]|0)+.5,+(c[q>>2]|0)+.5);do if((+f[r>>2]>2]>2]>2]>2]|0)+(c[(c[i>>2]|0)+(h<<2)>>2]<<3)|0;j=c[l>>2]|0;if((j|0)==(c[k>>2]|0)){hn(a,i);break}else{w=i;i=c[w+4>>2]|0;c[j>>2]=c[w>>2];c[j+4>>2]=i;c[l>>2]=(c[l>>2]|0)+8;break}}while(0);e=e+16|0;h=h+1|0}zb=v;return}function Sm(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=zb;zb=zb+64|0;o=q+44|0;p=q+32|0;n=q;m=e+4|0;jn(o,(c[m>>2]|0)-(c[e>>2]|0)>>3);jn(p,(c[m>>2]|0)-(c[e>>2]|0)>>3);l=c[e>>2]|0;m=(c[m>>2]|0)-l>>3;j=c[b>>2]|0;k=c[p>>2]|0;b=c[d>>2]|0;d=c[o>>2]|0;e=0;while(1){if((e|0)==(m|0))break;r=c[l+(e<<3)>>2]|0;c[k+(e<<3)>>2]=c[j+(r*20|0)>>2];c[k+(e<<3)+4>>2]=c[j+(r*20|0)+4>>2];r=c[l+(e<<3)+4>>2]|0;c[d+(e<<3)>>2]=c[b+(r*20|0)>>2];c[d+(e<<3)+4>>2]=c[b+(r*20|0)+4>>2];e=e+1|0}f[n>>2]=0.0;f[n+4>>2]=0.0;s=+(h|0);f[n+8>>2]=s;f[n+12>>2]=0.0;f[n+16>>2]=s;s=+(i|0);f[n+20>>2]=s;f[n+24>>2]=0.0;f[n+28>>2]=s;if(kn(g,a,d,k,m,n,4)|0)e=mn(a,h,i)|0;else e=0;ln(p);ln(o);zb=q;return e|0}function Tm(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+16|0;p=q;h=+ji(h);o=g+4|0;Ym(a,(c[o>>2]|0)-(c[g>>2]|0)>>3);l=p+4|0;m=a+4|0;n=a+8|0;k=0;while(1){i=c[g>>2]|0;if(k>>>0>=(c[o>>2]|0)-i>>3>>>0)break;j=c[i+(k<<3)+4>>2]|0;i=c[e>>2]|0;$m(p,l,b,+f[i+(j*20|0)>>2],+f[i+(j*20|0)+4>>2]);r=+ji(+f[p>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)>>2]);do if(r+ +ji(+f[l>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)+4>>2])<=h){i=(c[g>>2]|0)+(k<<3)|0;j=c[m>>2]|0;if((j|0)==(c[n>>2]|0)){hn(a,i);break}else{s=i;i=c[s+4>>2]|0;c[j>>2]=c[s>>2];c[j+4>>2]=i;c[m>>2]=(c[m>>2]|0)+8;break}}while(0);k=k+1|0}zb=q;return}function Um(b,d,e,g,h){b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=zb;zb=zb+64|0;u=z+40|0;v=z;w=z+52|0;x=z+48|0;t=b+4|0;c[t>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){h=+ji(h);if(!(Xm(v,g,0.0)|0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,31157)|0,35e3)|0,196)|0,35007)|0,31243)|0;IE(u,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(u,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(u);QE(r,q)|0;ME(r)|0;ua()}Ym(b,Ak(d)|0);q=b+8|0;r=b+12|0;p=0;a:while(1){if(p>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,p)|0;o=_m(d,p)|0;$m(w,x,v,+f[o>>2],+f[o+4>>2]);o=o+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){if(l>>>0>=(Ak(e)|0)>>>0)break;g=_m(e,l)|0;if((a[o>>0]|0)==(a[g+16>>0]|0)?(A=+ji(+f[w>>2]-+f[g>>2]),!(A+ +ji(+f[x>>2]-+f[g+4>>2])>h)):0){g=zl(n,Zm(e,l)|0)|0;B=g>>>0>>0;k=B?g:m;g=B?m:g>>>0>>0?g:j;i=B?l:i}else{k=m;g=j}l=l+1|0;m=k;j=g}do if((m|0)!=-1){if((i|0)==-1){y=16;break a}if((j|0)==-1){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u);break}if(+(m>>>0)/+(j>>>0)<+f[r>>2]){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u)}}while(0);p=p+1|0}if((y|0)==16){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,241)|0,35007)|0,31348)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}B=(c[t>>2]|0)-(c[b>>2]|0)>>3;if(B>>>0>(Ak(d)|0)>>>0){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,256)|0,35007)|0,31426)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}else{s=(c[t>>2]|0)-(c[b>>2]|0)>>3;break}}else s=0;while(0);zb=z;return s|0}function Vm(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));return}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Xm(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=+gn(b);if(!(+t(+d)<=c)){d=1.0/d;e=b+16|0;k=b+20|0;j=b+28|0;m=b+32|0;c=d*+xi(+f[e>>2],+f[k>>2],+f[j>>2],+f[m>>2]);f[a>>2]=c;l=b+8|0;h=b+4|0;c=d*+xi(+f[l>>2],+f[h>>2],+f[m>>2],+f[j>>2]);f[a+4>>2]=c;c=d*+xi(+f[h>>2],+f[l>>2],+f[e>>2],+f[k>>2]);f[a+8>>2]=c;g=b+12|0;i=b+24|0;c=d*+xi(+f[k>>2],+f[g>>2],+f[m>>2],+f[i>>2]);f[a+12>>2]=c;c=d*+xi(+f[b>>2],+f[l>>2],+f[i>>2],+f[m>>2]);f[a+16>>2]=c;c=d*+xi(+f[l>>2],+f[b>>2],+f[k>>2],+f[g>>2]);f[a+20>>2]=c;c=d*+xi(+f[g>>2],+f[e>>2],+f[i>>2],+f[j>>2]);f[a+24>>2]=c;c=d*+xi(+f[h>>2],+f[b>>2],+f[j>>2],+f[i>>2]);f[a+28>>2]=c;d=d*+xi(+f[b>>2],+f[h>>2],+f[g>>2],+f[e>>2]);f[a+32>>2]=d;a=1}else a=0;return a|0}function Ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>3>>>0>>0){dn(d,b,(c[a+4>>2]|0)-e>>3,a+8|0);en(a,d);fn(d)}zb=f;return}function Zm(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function _m(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function $m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var g=0.0;g=+f[c+32>>2]+(+f[c+24>>2]*d+ +f[c+28>>2]*e);f[a>>2]=(+f[c+8>>2]+(+f[c>>2]*d+ +f[c+4>>2]*e))/g;f[b>>2]=(+f[c+20>>2]+(+f[c+12>>2]*d+ +f[c+16>>2]*e))/g;return}function an(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function cn(a){a=a|0;return 536870911}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function gn(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;k=a+20|0;e=a+28|0;j=a+32|0;d=+xi(+f[h>>2],+f[k>>2],+f[e>>2],+f[j>>2]);i=a+12|0;g=a+24|0;c=+xi(+f[i>>2],+f[k>>2],+f[g>>2],+f[j>>2]);b=+xi(+f[i>>2],+f[h>>2],+f[g>>2],+f[e>>2]);return +(d*+f[a>>2]-c*+f[a+4>>2]+b*+f[a+8>>2])}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function jn(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){no(a,b);oo(a,b)}return}function kn(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0;j=a+12|0;Vk(j,g);return wn(b,d,e,g,h,i,a,j,a+24|0,+f[a+36>>2],c[a+40>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0)|0}function ln(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0;m=zb;zb=zb+96|0;e=m+88|0;g=m+80|0;h=m+72|0;i=m+64|0;j=m;k=m+56|0;l=m+48|0;d=m+40|0;if(Xm(j,a,9.999999747378752e-06)|0){n=+(b|0);f[k>>2]=n;f[k+4>>2]=0.0;f[l>>2]=n;n=+(c|0);f[l+4>>2]=n;f[d>>2]=0.0;f[d+4>>2]=n;nn(e,j,55476);nn(g,j,k);nn(h,j,l);nn(i,j,d);n=+(B(c,b)|0)*.0001;if(+on(e,g,h,i)>2];e=c+4|0;g=+f[e>>2];d=+f[b+32>>2]+(+f[b+24>>2]*h+ +f[b+28>>2]*g);f[a>>2]=(+f[b+8>>2]+(h*+f[b>>2]+g*+f[b+4>>2]))/d;f[a+4>>2]=(+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]))/d;return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0;f=zb;zb=zb+48|0;l=f+32|0;m=f+24|0;k=f+16|0;h=f+8|0;g=f;rn(l,b,a);rn(m,c,a);rn(k,d,a);rn(h,b,c);rn(g,d,c);j=+sn(l,m);i=+sn(m,k);e=+sn(l,k);e=+tn(j,i,e,+sn(h,g));zb=f;return +e}function pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=+qn(a,b,c)>0.0;f=+qn(b,c,d)>0.0;c=+qn(c,d,a)>0.0;d=+qn(d,a,b)>0.0;d=(f?1:-1)+(e?1:-1)+(c?1:-1)+(d?1:-1)|0;return (((d|0)>-1?d:0-d|0)|0)==4|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];return +((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))}function rn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=+f[b>>2]-+f[c>>2];f[a+4>>2]=+f[b+4>>2]-+f[c+4>>2];return}function sn(a,b){a=a|0;b=b|0;return +(+t(+(+f[a>>2]*+f[b+4>>2]-+f[a+4>>2]*+f[b>>2]))*.5)}function tn(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(+vn(+un(a,b,c),d))}function un(a,b,c){a=+a;b=+b;c=+c;return +(+vn(+vn(a,b),c))}function vn(a,b){a=+a;b=+b;return +(a>2]|0)-(c[i>>2]|0)>>2>>>0<(m*9|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31460)|0,31518)|0,35e3)|0,119)|0,35007)|0,31612)|0;IE(y,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(y,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(y);QE(z,x)|0;ME(z)|0;ua()}x=c[j>>2]|0;z=x;if((c[j+4>>2]|0)-x>>2>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31662)|0,31518)|0,35e3)|0,120)|0,35007)|0,31712)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((c[k+4>>2]|0)-(c[k>>2]|0)>>3>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31754)|0,31518)|0,35e3)|0,121)|0,35007)|0,31816)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((e|0)>=4){c[w>>2]=1234;l=+ji(l);x=Bj(o,e)|0;tl(z,e,0);ul(z,e,e,w);q=z+4|0;r=z+8|0;s=z+12|0;t=(h|0)>0;o=0;u=0;while(1){if(!((u|0)<(m|0)&(o|0)<(n|0)))break;ul(z,e,4,w);D=c[z>>2]<<1;C=c[q>>2]<<1;B=c[r>>2]<<1;j=c[s>>2]<<1;do if(xn(b+(D<<2)|0,b+(C<<2)|0,b+(B<<2)|0,b+(j<<2)|0,d+(D<<2)|0,d+(C<<2)|0,d+(B<<2)|0,d+(j<<2)|0)|0?(v=u*9|0,j=c[z>>2]<<1,B=c[q>>2]<<1,C=c[r>>2]<<1,D=c[s>>2]<<1,yn((c[i>>2]|0)+(v<<2)|0,b+(j<<2)|0,b+(B<<2)|0,b+(C<<2)|0,b+(D<<2)|0,d+(j<<2)|0,d+(B<<2)|0,d+(C<<2)|0,d+(D<<2)|0)|0):0){if(t?!(zn((c[i>>2]|0)+(v<<2)|0,g,h)|0):0){j=u;break}j=u+1|0}else j=u;while(0);o=o+1|0;u=j}l=1.0/l;if(u){o=c[k>>2]|0;j=0;while(1){if((j|0)>=(u|0))break;f[o+(j<<3)>>2]=0.0;c[o+(j<<3)+4>>2]=j;j=j+1|0}t=0;while(1){if(!((u|0)>2&(t|0)<(e|0)))break;r=(Bj(x,e-t|0)|0)+t|0;q=0;j=c[k>>2]|0;while(1){if((q|0)==(u|0))break;s=(c[i>>2]|0)+((c[j+(q<<3)+4>>2]|0)*9<<2)|0;o=t;while(1){if((o|0)>=(r|0))break;j=c[z+(o<<2)>>2]<<1;p=+Bn(s,b+(j<<2)|0,d+(j<<2)|0,l);j=c[k>>2]|0;D=j+(q<<3)|0;f[D>>2]=p+ +f[D>>2];o=o+1|0}q=q+1|0}An(y,j,u);t=r;u=u>>1}q=c[k>>2]|0;o=1;l=+f[q>>2];j=c[q+4>>2]|0;while(1){if((o|0)>=(u|0))break;p=+f[q+(o<<3)>>2];if(p>2]|0}o=o+1|0}Vm(a,(c[i>>2]|0)+(j*9<<2)|0);Cn(a);j=1}else j=0}else j=0;zb=A;return j|0}function xn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=+qn(a,b,c)>0.0;if((!(i^+qn(e,f,g)>0.0)?(i=+qn(b,c,d)>0.0,!(i^+qn(f,g,h)>0.0)):0)?(i=+qn(c,d,a)>0.0,!(i^+qn(g,h,e)>0.0)):0){a=+qn(d,a,b)>0.0;a=a^+qn(h,e,f)>0.0^1}else a=0;return a|0}function yn(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+128|0;w=x;k=x+124|0;l=x+120|0;m=x+112|0;n=x+104|0;o=x+96|0;p=x+88|0;q=x+80|0;r=x+72|0;s=x+64|0;t=x+56|0;u=x+48|0;v=x+40|0;if((In(o,p,q,r,k,m,b,c,d,e)|0?In(s,t,u,v,l,n,g,h,i,j)|0:0)?Jn(w,o,p,q,r,s,t,u,v)|0:0){Kn(a,w,+f[k>>2],m,+f[l>>2],n);a=1}else a=0;zb=x;return a|0}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+48|0;f=n+32|0;e=n+24|0;d=n+16|0;k=n+8|0;l=n;a:do if((c|0)>=2){m=b+8|0;g=b+16|0;nn(f,a,b);nn(e,a,m);nn(d,a,g);Gn(k,f);Gn(l,e);if(Hn(b,m,g,f,e,d)|0){j=3;i=f;f=m;h=b;while(1){if((j|0)>=(c|0))break;h=h+8|0;f=f+8|0;g=g+8|0;nn(i,a,g);if(!(Hn(h,f,g,e,d,i)|0)){d=0;break a}else{o=i;j=j+1|0;i=e;e=d;d=o}}if(Hn(f,g,b,e,d,k)|0)d=Hn(g,b,m,d,k,l)|0;else d=0}else d=0}else d=1;while(0);zb=n;return d|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;Fn(a,b,c,(c&1)+-1+((c|0)/2|0)|0);return}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,g=0,h=0,i=0;e=zb;zb=zb+16|0;i=e+8|0;g=e;h=i+4|0;$m(i,h,a,+f[b>>2],+f[b+4>>2]);f[g>>2]=+f[i>>2]-+f[c>>2];f[g+4>>2]=+f[h>>2]-+f[c+4>>2];d=+Dn(g,d);zb=e;return +d}function Cn(a){a=a|0;var b=0,c=0.0,d=0;b=a+32|0;c=1.0/+f[b>>2];f[a>>2]=+f[a>>2]*c;d=a+4|0;f[d>>2]=c*+f[d>>2];d=a+8|0;f[d>>2]=c*+f[d>>2];d=a+12|0;f[d>>2]=c*+f[d>>2];d=a+16|0;f[d>>2]=c*+f[d>>2];d=a+20|0;f[d>>2]=c*+f[d>>2];d=a+24|0;f[d>>2]=c*+f[d>>2];a=a+28|0;f[a>>2]=c*+f[a>>2];f[b>>2]=1.0;return}function Dn(a,b){a=a|0;b=+b;return +(+En(+f[a>>2],+f[a+4>>2],b))}function En(a,b,c){a=+a;b=+b;c=+c;return +(+z(+((a*a+b*b)*c+1.0)))}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+16|0;g=s;if((d|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,82)|0,35007)|0,33521)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}if((e|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,83)|0,35007)|0,33569)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}p=e+-1|0;q=b+(p<<3)|0;r=b+(p<<3)+4|0;l=d+-1|0;m=0;while(1){if((m|0)>=(l|0))break;n=+f[q>>2];o=c[r>>2]|0;g=m;d=l;do{while(1){j=b+(g<<3)|0;k=+f[j>>2];if(!(k>2]|0)>=(o|0))break}g=g+1|0}while(1){h=b+(d<<3)|0;i=+f[h>>2];if(!(n=(c[b+(d<<3)+4>>2]|0))break}d=d+-1|0}if((g|0)<=(d|0)){f[j>>2]=i;f[h>>2]=k;t=b+(g<<3)+4|0;j=b+(d<<3)+4|0;h=c[t>>2]|0;c[t>>2]=c[j>>2];c[j>>2]=h;g=g+1|0;d=d+-1|0}}while((g|0)<=(d|0));l=(g|0)<(e|0)?l:d;m=(d|0)<(p|0)?g:m}b=q;e=c[b+4>>2]|0;t=a;c[t>>2]=c[b>>2];c[t+4>>2]=e;zb=s;return}function Gn(a,b){a=a|0;b=b|0;var d=0,e=0;e=b;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;c=+qn(a,b,c)>0.0;return c^+qn(d,e,f)>0.0^1|0}function In(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0,w=0,x=0,y=0;l=(+f[h>>2]+ +f[i>>2]+ +f[j>>2]+ +f[k>>2])*.25;f[g>>2]=l;y=h+4|0;x=i+4|0;w=j+4|0;v=k+4|0;m=(+f[y>>2]+ +f[x>>2]+ +f[w>>2]+ +f[v>>2])*.25;f[g+4>>2]=m;s=+f[h>>2]-l;t=+f[y>>2]-m;q=+f[i>>2]-l;r=+f[x>>2]-m;o=+f[j>>2]-l;p=+f[w>>2]-m;l=+f[k>>2]-l;m=+f[v>>2]-m;n=(+u(+(s*s+t*t))+ +u(+(q*q+r*r))+ +u(+(o*o+p*p))+ +u(+(l*l+m*m)))*.25;if(n==0.0)g=0;else{n=1.0/n*1.4142135623730951;f[e>>2]=n;f[a>>2]=s*n;f[a+4>>2]=t*+f[e>>2];f[b>>2]=q*+f[e>>2];f[b+4>>2]=r*+f[e>>2];f[c>>2]=o*+f[e>>2];f[c+4>>2]=p*+f[e>>2];f[d>>2]=l*+f[e>>2];f[d+4>>2]=m*+f[e>>2];g=1}return g|0}function Jn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=zb;zb=zb+288|0;k=j;Ln(k,b,c,d,e,f,g,h,i);if(Mn(a,k)|0)a=!(+t(+(+gn(a)))<1.0e-05);else a=0;zb=j;return a|0}function Kn(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0;l=b+24|0;o=+f[l>>2];q=+f[g>>2];k=b+28|0;n=+f[k>>2];r=o*q+ +f[b>>2]/e;q=q*n+ +f[b+4>>2]/e;p=g+4|0;m=+f[p>>2];o=o*m+ +f[b+12>>2]/e;m=n*m+ +f[b+16>>2]/e;n=+f[d>>2]*c;h=d+4|0;i=+f[h>>2]*c;f[a>>2]=r*c;f[a+4>>2]=q*c;j=b+32|0;f[a+8>>2]=+f[j>>2]*+f[g>>2]+ +f[b+8>>2]/e-r*n-q*i;f[a+12>>2]=o*c;f[a+16>>2]=m*c;f[a+20>>2]=+f[j>>2]*+f[p>>2]+ +f[b+20>>2]/e-o*n-m*i;i=+f[l>>2]*c;f[a+24>>2]=i;e=+f[k>>2]*c;f[a+28>>2]=e;f[a+32>>2]=+f[j>>2]-i*+f[d>>2]-e*+f[h>>2];return}function Ln(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;lo(a,b,f);lo(a+72|0,c,g);lo(a+144|0,d,h);lo(a+216|0,e,i);return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0;d=zb;zb=zb+288|0;c=d;if(((((((Nn(c,b)|0?On(c,b)|0:0)?Pn(c,b)|0:0)?Qn(c,b)|0:0)?Rn(c,b)|0:0)?Sn(c,b)|0:0)?Tn(c,b)|0:0)?Un(c,b)|0:0)a=Vn(a,c)|0;else a=0;zb=d;return a|0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0;g=zb;zb=zb+32|0;d=g;h=+_n(b);f[d>>2]=h;e=b+36|0;h=+_n(e);f[d+4>>2]=h;h=+_n(b+72|0);f[d+8>>2]=h;h=+_n(b+108|0);f[d+12>>2]=h;h=+_n(b+144|0);f[d+16>>2]=h;h=+_n(b+180|0);f[d+20>>2]=h;h=+_n(b+216|0);f[d+24>>2]=h;h=+_n(b+252|0);f[d+28>>2]=h;c=jo(d)|0;d=d+(c<<2)|0;if(+f[d>>2]==0.0)a=0;else{co(b,b+(c*9<<2)|0);Yn(a,b,1.0/+u(+(+f[d>>2])));ko(a+36|0,e,63);a=1}zb=g;return a|0}function On(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0;e=zb;zb=zb+32|0;g=e;c=a+36|0;d=b+36|0;ao(c,a,d);n=a+72|0;ao(n,a,b+72|0);m=a+108|0;ao(m,a,b+108|0);l=a+144|0;ao(l,a,b+144|0);k=a+180|0;ao(k,a,b+180|0);j=a+216|0;ao(j,a,b+216|0);i=a+252|0;ao(i,a,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(n);f[g+4>>2]=h;h=+_n(m);f[g+8>>2]=h;h=+_n(l);f[g+12>>2]=h;h=+_n(k);f[g+16>>2]=h;h=+_n(j);f[g+20>>2]=h;h=+_n(i);f[g+24>>2]=h;a=io(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Pn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0;e=zb;zb=zb+32|0;g=e;c=a+72|0;m=a+36|0;d=b+72|0;ao(c,m,d);l=a+108|0;ao(l,m,b+108|0);k=a+144|0;ao(k,m,b+144|0);j=a+180|0;ao(j,m,b+180|0);i=a+216|0;ao(i,m,b+216|0);a=a+252|0;ao(a,m,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(l);f[g+4>>2]=h;h=+_n(k);f[g+8>>2]=h;h=+_n(j);f[g+12>>2]=h;h=+_n(i);f[g+16>>2]=h;h=+_n(a);f[g+20>>2]=h;a=ho(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0;e=zb;zb=zb+32|0;g=e;c=a+108|0;l=a+72|0;d=b+108|0;ao(c,l,d);k=a+144|0;ao(k,l,b+144|0);j=a+180|0;ao(j,l,b+180|0);i=a+216|0;ao(i,l,b+216|0);a=a+252|0;ao(a,l,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(k);f[g+4>>2]=h;h=+_n(j);f[g+8>>2]=h;h=+_n(i);f[g+12>>2]=h;h=+_n(a);f[g+16>>2]=h;a=go(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0;e=zb;zb=zb+16|0;g=e;c=a+144|0;k=a+108|0;d=b+144|0;ao(c,k,d);j=a+180|0;ao(j,k,b+180|0);i=a+216|0;ao(i,k,b+216|0);a=a+252|0;ao(a,k,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(j);f[g+4>>2]=h;h=+_n(i);f[g+8>>2]=h;h=+_n(a);f[g+12>>2]=h;a=fo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0;e=zb;zb=zb+16|0;g=e;c=a+180|0;j=a+144|0;d=b+180|0;ao(c,j,d);i=a+216|0;ao(i,j,b+216|0);a=a+252|0;ao(a,j,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(i);f[g+4>>2]=h;h=+_n(a);f[g+8>>2]=h;a=eo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0;e=zb;zb=zb+16|0;g=e;c=a+216|0;i=a+180|0;d=b+216|0;ao(c,i,d);a=a+252|0;ao(a,i,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(a);f[g+4>>2]=h;a=bo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Un(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=a+252|0;ao(d,a+216|0,b+252|0);c=+_n(d);if(c==0.0)a=0;else{Yn(d,d,1.0/+u(+c));a=1}return a|0}function Vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0.0;d=zb;zb=zb+384|0;e=d+336|0;c=d;g=+Wn(c,b,0);f[e>>2]=g;g=+Wn(c+36|0,b,1);f[e+4>>2]=g;g=+Wn(c+72|0,b,2);f[e+8>>2]=g;g=+Wn(c+108|0,b,3);f[e+12>>2]=g;g=+Wn(c+144|0,b,4);f[e+16>>2]=g;g=+Wn(c+180|0,b,5);f[e+20>>2]=g;g=+Wn(c+216|0,b,6);f[e+24>>2]=g;g=+Wn(c+252|0,b,7);f[e+28>>2]=g;g=+Wn(c+288|0,b,8);f[e+32>>2]=g;b=Xn(e)|0;if(+f[e+(b<<2)>>2]==0.0)b=0;else{Vm(a,c+(b*9<<2)|0);b=1}zb=d;return b|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,g=0;Yn(a,b,-+f[b+(c<<2)>>2]);g=a+(c<<2)|0;f[g>>2]=+f[g>>2]+1.0;Zn(a,b+36|0,-+f[b+(c+9<<2)>>2]);Zn(a,b+72|0,-+f[b+(c+18<<2)>>2]);Zn(a,b+108|0,-+f[b+(c+27<<2)>>2]);Zn(a,b+144|0,-+f[b+(c+36<<2)>>2]);Zn(a,b+180|0,-+f[b+(c+45<<2)>>2]);Zn(a,b+216|0,-+f[b+(c+54<<2)>>2]);Zn(a,b+252|0,-+f[b+(c+63<<2)>>2]);e=+_n(a);d=+u(+e);if(e==0.0)d=0.0;else Yn(a,a,1.0/d);return +d}function Xn(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;b=+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b;return (+f[a+32>>2]>+f[a+(b<<2)>>2]?8:b)|0}function Yn(a,b,c){a=a|0;b=b|0;c=+c;f[a>>2]=+f[b>>2]*c;f[a+4>>2]=+f[b+4>>2]*c;f[a+8>>2]=+f[b+8>>2]*c;f[a+12>>2]=+f[b+12>>2]*c;f[a+16>>2]=+f[b+16>>2]*c;f[a+20>>2]=+f[b+20>>2]*c;f[a+24>>2]=+f[b+24>>2]*c;f[a+28>>2]=+f[b+28>>2]*c;f[a+32>>2]=+f[b+32>>2]*c;return}function Zn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;f[a>>2]=+f[a>>2]+ +f[b>>2]*c;d=a+4|0;f[d>>2]=+f[d>>2]+ +f[b+4>>2]*c;d=a+8|0;f[d>>2]=+f[d>>2]+ +f[b+8>>2]*c;d=a+12|0;f[d>>2]=+f[d>>2]+ +f[b+12>>2]*c;d=a+16|0;f[d>>2]=+f[d>>2]+ +f[b+16>>2]*c;d=a+20|0;f[d>>2]=+f[d>>2]+ +f[b+20>>2]*c;d=a+24|0;f[d>>2]=+f[d>>2]+ +f[b+24>>2]*c;d=a+28|0;f[d>>2]=+f[d>>2]+ +f[b+28>>2]*c;a=a+32|0;f[a>>2]=+f[a>>2]+ +f[b+32>>2]*c;return}function _n(a){a=a|0;return +(+$n(a,a))}function $n(a,b){a=a|0;b=b|0;return +(+f[a>>2]*+f[b>>2]+ +f[a+4>>2]*+f[b+4>>2]+ +f[a+8>>2]*+f[b+8>>2]+ +f[a+12>>2]*+f[b+12>>2]+ +f[a+16>>2]*+f[b+16>>2]+ +f[a+20>>2]*+f[b+20>>2]+ +f[a+24>>2]*+f[b+24>>2]+ +f[a+28>>2]*+f[b+28>>2]+ +f[a+32>>2]*+f[b+32>>2])}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+$n(c,b);f[a>>2]=+f[a>>2]-d*+f[b>>2];c=a+4|0;f[c>>2]=+f[c>>2]-d*+f[b+4>>2];c=a+8|0;f[c>>2]=+f[c>>2]-d*+f[b+8>>2];c=a+12|0;f[c>>2]=+f[c>>2]-d*+f[b+12>>2];c=a+16|0;f[c>>2]=+f[c>>2]-d*+f[b+16>>2];c=a+20|0;f[c>>2]=+f[c>>2]-d*+f[b+20>>2];c=a+24|0;f[c>>2]=+f[c>>2]-d*+f[b+24>>2];c=a+28|0;f[c>>2]=+f[c>>2]-d*+f[b+28>>2];c=a+32|0;f[c>>2]=+f[c>>2]-d*+f[b+32>>2];return}function bo(a){a=a|0;return +f[a+4>>2]>+f[a>>2]|0}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a>>2]|0;f=a+4|0;c[a>>2]=c[b>>2];d=b+4|0;c[b>>2]=g;g=c[f>>2]|0;e=a+8|0;c[f>>2]=c[d>>2];f=b+8|0;c[d>>2]=g;d=c[e>>2]|0;g=a+12|0;c[e>>2]=c[f>>2];e=b+12|0;c[f>>2]=d;f=c[g>>2]|0;d=a+16|0;c[g>>2]=c[e>>2];g=b+16|0;c[e>>2]=f;e=c[d>>2]|0;f=a+20|0;c[d>>2]=c[g>>2];d=b+20|0;c[g>>2]=e;g=c[f>>2]|0;e=a+24|0;c[f>>2]=c[d>>2];f=b+24|0;c[d>>2]=g;d=c[e>>2]|0;g=a+28|0;c[e>>2]=c[f>>2];e=b+28|0;c[f>>2]=d;f=c[g>>2]|0;d=a+32|0;c[g>>2]=c[e>>2];b=b+32|0;c[e>>2]=f;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function eo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;return (+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b)|0}function fo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;return (+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b)|0}function go(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;return (+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b)|0}function ho(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;return (+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b)|0}function io(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;return (+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b)|0}function jo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;return (+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b)|0}function ko(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;f[a>>2]=-+f[b>>2];e=b+4|0;f[a+4>>2]=-+f[e>>2];f[a+8>>2]=-1.0;mo(a+12|0);f[a+24>>2]=+f[d>>2]*+f[b>>2];f[a+28>>2]=+f[d>>2]*+f[e>>2];c[a+32>>2]=c[d>>2];mo(a+36|0);f[a+48>>2]=-+f[b>>2];f[a+52>>2]=-+f[e>>2];f[a+56>>2]=-1.0;d=d+4|0;f[a+60>>2]=+f[d>>2]*+f[b>>2];f[a+64>>2]=+f[d>>2]*+f[e>>2];c[a+68>>2]=c[d>>2];return}function mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function no(a,b){a=a|0;b=b|0;var d=0;if((rj(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function oo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{po(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function po(a){a=a|0;f[a>>2]=0.0;f[a+4>>2]=0.0;return}function qo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+16|0;j=k;i=a+88|0;n=a+84|0;h=a+52|0;m=(((g|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)%(c[h>>2]|0)|0;c[b>>2]=m;m=(((g-m|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)/(c[h>>2]|0)|0;c[d>>2]=m;m=g-(c[b>>2]|0)-(B(c[h>>2]|0,m)|0)|0;m=((m|0)%(c[i>>2]|0)|0|0)/(c[n>>2]|0)|0;c[e>>2]=m;l=B(c[h>>2]|0,c[d>>2]|0)|0;g=g-(c[b>>2]|0)-((B(c[n>>2]|0,m)|0)+l)|0;i=(g|0)/(c[i>>2]|0)|0;c[f>>2]=i;g=c[b>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,190)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[h>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,191)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[d>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,192)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+56>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,193)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[e>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,194)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+60>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,195)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,196)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<(c[a+64>>2]|0)){zb=k;return}else{n=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,197)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}}function ro(a){a=a|0;return a+124|0}function so(a){a=a|0;return a+112|0}function to(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0;q=zb;zb=zb+16|0;p=q;l=+t(+(h-l));f[b>>2]=l;l=+t(+(i-m));f[d>>2]=l;l=+t(+(k-o));f[g>>2]=l;l=+t(+(j-n));l=+vn(l,+(c[a+60>>2]|0)-l);f[e>>2]=l;if(!(l>=0.0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,31935)|0,32155)|0,35e3)|0,333)|0,35007)|0,31976)|0;IE(p,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);g=XF(p,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(p);QE(q,g)|0;ME(q)|0;ua()}else{zb=q;return}}function uo(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){xo(a,b);oh(a,b)}return}function vo(a,b,c){a=a|0;b=+b;c=+c;f[a+8>>2]=b;f[a+12>>2]=c;return}function wo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function xo(a,b){a=a|0;b=b|0;var d=0;if((ph(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+48|0;j=t+8|0;i=t+32|0;h=t+28|0;k=t+24|0;p=t+20|0;q=t+16|0;r=t;s=a+8|0;if(!(c[s>>2]|0)){o=Xf(Xf(PE(Xf(Xf(Xf(56032,32010)|0,29190)|0,35e3)|0,405)|0,35007)|0,32045)|0;IE(j,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(j,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(j);QE(o,n)|0;ME(o)|0;ua()}c[a+100>>2]=0;l=a+72|0;m=a+76|0;c[m>>2]=c[l>>2];n=a+84|0;o=a+88|0;e=c[o>>2]|0;while(1){d=c[n>>2]|0;f=d;if((d|0)==(e|0))break;g=e-f|0;if((g|0)>8){e=e+-8|0;u=d;v=c[u>>2]|0;u=c[u+4>>2]|0;x=j;c[x>>2]=v;c[x+4>>2]=u;x=e;w=c[x+4>>2]|0;c[d>>2]=c[x>>2];c[d+4>>2]=w;d=e;c[d>>2]=v;c[d+4>>2]=u;Yl(j);c[k>>2]=f;c[p>>2]=e;c[q>>2]=f;c[h>>2]=c[k>>2];c[i>>2]=c[p>>2];c[j>>2]=c[q>>2];Ao(h,i,r,(g>>>3)+-1|0,j);e=c[o>>2]|0}d=0;while(1){if((d|0)==-1)break;x=d+-1|0;Yl(e+(x<<3)|0);d=x}e=e+-8|0;c[o>>2]=e}Bo(a,n,c[s>>2]|0,b);zb=t;return (c[m>>2]|0)-(c[l>>2]|0)>>2|0}function zo(a){a=a|0;return a+72|0}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=zb;zb=zb+16|0;l=m;j=c[f>>2]|0;k=c[a>>2]|0;b=j-k|0;i=j;h=j;if((e|0)>=2?(n=(e+-2|0)/2|0,(n|0)>=(b>>3|0)):0){b=b>>2|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;a=Oo(a,o)|0;b=a?g:b;d=a?o:d}if(!(Oo(d,i)|0)){o=c[j+4>>2]|0;i=l;c[i>>2]=c[j>>2];c[i+4>>2]=o;i=d;while(1){o=h;h=i;g=h;j=c[g+4>>2]|0;c[o>>2]=c[g>>2];c[o+4>>2]=j;c[f>>2]=i;if((n|0)<(b|0))break;b=b<<1|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;j=Oo(a,o)|0;b=j?g:b;d=j?o:d}if(Oo(d,l)|0)break;else i=d}e=l;f=c[e+4>>2]|0;o=i;c[o>>2]=c[e>>2];c[o+4>>2]=f;Yl(l)}}zb=m;return}function Bo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+64|0;m=t+8|0;l=t+56|0;k=t+52|0;n=t+44|0;o=t+36|0;p=t+28|0;q=t;g=t+48|0;h=t+40|0;f=t+32|0;r=t+16|0;if(Co(d)|0){c[g>>2]=c[a+76>>2];s=Do(d)|0;c[h>>2]=c[s>>2];s=(Do(d)|0)+4|0;c[f>>2]=c[s>>2];c[k>>2]=c[g>>2];c[l>>2]=c[h>>2];c[m>>2]=c[f>>2];Eo(a+72|0,k,l,m)|0}else{c[r>>2]=0;h=r+4|0;c[h>>2]=0;c[r+8>>2]=0;Fo(d,r,b,e);f=0;while(1){g=c[r>>2]|0;if(f>>>0>=(c[h>>2]|0)-g>>2>>>0)break;Bo(a,b,c[g+(f<<2)>>2]|0,e);f=f+1|0}i=a+100|0;if((c[i>>2]|0)<(c[a+104>>2]|0)?(j=c[b>>2]|0,s=b+4|0,(j|0)!=(c[s>>2]|0)):0){d=Go(j)|0;f=c[b>>2]|0;g=c[s>>2]|0;h=g-f|0;if((h|0)>8){j=f;g=g+-8|0;u=j;v=c[u>>2]|0;u=c[u+4>>2]|0;x=m;c[x>>2]=v;c[x+4>>2]=u;x=g;w=c[x+4>>2]|0;c[j>>2]=c[x>>2];c[j+4>>2]=w;j=g;c[j>>2]=v;c[j+4>>2]=u;Yl(m);c[n>>2]=f;c[o>>2]=g;c[p>>2]=f;c[k>>2]=c[n>>2];c[l>>2]=c[o>>2];c[m>>2]=c[p>>2];Ao(k,l,q,(h>>>3)+-1|0,m);g=c[s>>2]|0}f=0;while(1){if((f|0)==-1)break;x=f+-1|0;Yl(g+(x<<3)|0);f=x}c[s>>2]=g+-8;c[i>>2]=(c[i>>2]|0)+1;Bo(a,b,d,e)}Ho(r)}zb=t;return}function Co(b){b=b|0;return (a[b+100>>0]|0)!=0|0}function Do(a){a=a|0;return a+116|0}function Eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+48|0;p=s+40|0;o=s+36|0;q=s+32|0;r=s+28|0;j=s+8|0;k=s+4|0;l=s;f=c[a>>2]|0;g=f;b=f+((c[b>>2]|0)-g>>2<<2)|0;d=c[d>>2]|0;f=c[e>>2]|0;n=f-d|0;m=n>>2;a:do if((n|0)>0){h=a+8|0;n=c[a+4>>2]|0;i=n;if((m|0)>((c[h>>2]|0)-i>>2|0)){e=(i-g>>2)+m|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{r=c[a>>2]|0;n=(c[h>>2]|0)-r|0;q=n>>1;ml(j,n>>2>>>0>>1>>>0?(q>>>0>>0?e:q):g,b-r>>2,a+8|0);c[k>>2]=d;c[l>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[l>>2];ap(j,o,p);b=bp(a,j,b)|0;ol(j);break}}g=i-b|0;h=g>>2;e=d+(h<<2)|0;if((m|0)>(h|0)){c[q>>2]=e;c[r>>2]=f;c[o>>2]=c[q>>2];c[p>>2]=c[r>>2];_o(a,o,p,m-h|0);if((g|0)>0)f=e;else break}$o(a,b,n,b+(m<<2)|0);e=b;while(1){if((d|0)==(f|0))break a;c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}}while(0);zb=s;return b|0}function Fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+48|0;n=t+8|0;m=t+36|0;o=t+32|0;p=t+28|0;q=t;r=t+16|0;s=a+104|0;Io(r,(c[a+108>>2]|0)-(c[s>>2]|0)>>2);l=r+4|0;a=-1;f=0;k=-1;while(1){if(f>>>0>=(c[l>>2]|0)-(c[r>>2]|0)>>3>>>0)break;i=yl((c[(c[s>>2]|0)+(f<<2)>>2]|0)+4|0,e)|0;Jo(n,c[(c[s>>2]|0)+(f<<2)>>2]|0,i);g=n;j=c[g+4>>2]|0;h=(c[r>>2]|0)+(f<<3)|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;Yl(n);h=i>>>0>>0;j=h?f:k;a=h?i:a;f=f+1|0;k=j}if((k|0)==-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32065)|0,29190)|0,35e3)|0,155)|0,35007)|0,32099)|0;IE(n,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(n,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(n);QE(j,i)|0;ME(j)|0;ua()}a=c[(c[s>>2]|0)+(k<<2)>>2]|0;c[n>>2]=a;i=b+4|0;f=c[i>>2]|0;j=b+8|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);g=d+4|0;h=d+8|0;e=0;while(1){a=c[r>>2]|0;if(e>>>0>=(c[l>>2]|0)-a>>3>>>0)break;do if((e|0)!=(k|0)){f=Lo(a+(e<<3)|0)|0;if((f|0)==(Lo((c[r>>2]|0)+(k<<3)|0)|0)){a=c[(c[s>>2]|0)+(e<<2)>>2]|0;c[n>>2]=a;f=c[i>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);break}else{a=(c[r>>2]|0)+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){Mo(d,a);a=c[g>>2]|0}else{v=a;u=c[v+4>>2]|0;a=f;c[a>>2]=c[v>>2];c[a+4>>2]=u;a=(c[g>>2]|0)+8|0;c[g>>2]=a}v=c[d>>2]|0;c[o>>2]=v;c[p>>2]=a;c[m>>2]=c[o>>2];c[n>>2]=c[p>>2];No(m,n,q,a-v>>3);break}}while(0);e=e+1|0}Xl(r);zb=t;return}function Go(a){a=a|0;return c[a>>2]|0}function Ho(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Io(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Xo(a,b);Yo(a,b)}return}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=To(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Uo(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Vo(a,d);Wo(d);zb=h;return}}function Lo(a){a=a|0;return c[a+4>>2]|0}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=Po(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;Qo(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;Ro(a,d);So(d);zb=h;return}}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;i=j;if((e|0)>1?(g=(e+-2|0)/2|0,k=c[a>>2]|0,h=k+(g<<3)|0,f=(c[b>>2]|0)+-8|0,c[b>>2]=f,Oo(h,f)|0):0){a=f;e=c[a+4>>2]|0;d=i;c[d>>2]=c[a>>2];c[d+4>>2]=e;d=h;while(1){a=d;e=c[a+4>>2]|0;h=f;c[h>>2]=c[a>>2];c[h+4>>2]=e;c[b>>2]=d;if(!g)break;g=(g+-1|0)/2|0;f=k+(g<<3)|0;if(!(Oo(f,i)|0))break;else{h=d;d=f;f=h}}h=i;b=c[h+4>>2]|0;k=d;c[k>>2]=c[h>>2];c[k+4>>2]=b;Yl(i)}zb=j;return}function Oo(a,b){a=a|0;b=b|0;return (c[a+4>>2]|0)>>>0>(c[b+4>>2]|0)>>>0|0}function Po(a){a=a|0;return 536870911}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-8|0;k=h;j=c[k+4>>2]|0;i=(c[g>>2]|0)+-8|0;c[i>>2]=c[k>>2];c[i+4>>2]=j;c[g>>2]=(c[g>>2]|0)+-8;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function So(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-8|0;c[d>>2]=e;Yl(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function To(a){a=a|0;return 1073741823}function Uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Wo(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Xo(a,b){a=a|0;b=b|0;var d=0;if((Po(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function Yo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Zo(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Zo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a+4|0;d=c[b>>2]|0;while(1){if((d|0)==(f|0))break;b=c[e>>2]|0;c[b>>2]=c[d>>2];c[e>>2]=b+4;d=d+4|0}return}function $o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+4|0;i=c[h>>2]|0;f=i-e|0;g=f>>2;a=b+(g<<2)|0;e=i;while(1){if(a>>>0>=d>>>0)break;c[e>>2]=c[a>>2];j=e+4|0;c[h>>2]=j;a=a+4|0;e=j}if(f|0)$O(i+(0-g<<2)|0,b|0,f|0)|0;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;d=a+8|0;a=c[b>>2]|0;while(1){if((a|0)==(e|0))break;f=c[d>>2]|0;c[f>>2]=c[a>>2];c[d>>2]=f+4;f=a+4|0;c[b>>2]=f;a=f}return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;j=c[i>>2]|0;f=c[a>>2]|0;h=d;g=h-f|0;e=j+(0-(g>>2)<<2)|0;c[i>>2]=e;if((g|0)>0)_O(e|0,f|0,g|0)|0;f=a+4|0;g=b+8|0;e=(c[f>>2]|0)-h|0;if((e|0)>0){_O(c[g>>2]|0,d|0,e|0)|0;c[g>>2]=(c[g>>2]|0)+(e>>>2<<2)}h=c[a>>2]|0;c[a>>2]=c[i>>2];c[i>>2]=h;h=c[f>>2]|0;c[f>>2]=c[g>>2];c[g>>2]=h;h=a+8|0;d=b+12|0;a=c[h>>2]|0;c[h>>2]=c[d>>2];c[d>>2]=a;c[b>>2]=c[i>>2];return j|0}function cp(a){a=a|0;return dp(c[c[a>>2]>>2]|0)|0}function dp(a){a=a|0;return c[a+24>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=b;b=mm((c[a>>2]|0)+4|0,e)|0;zb=d;return b|0}function fp(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;gp(d,c[c[a>>2]>>2]|0);a=gm(zk(c[d>>2]|0)|0)|0;Rj(d);zb=b;return a|0}function gp(a,b){a=a|0;b=b|0;c[a>>2]=c[b+64>>2];b=c[b+68>>2]|0;c[a+4>>2]=b;if(b|0){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1}return}function hp(a){a=a|0;return ip(c[c[a>>2]>>2]|0)|0}function ip(a){a=a|0;return a+12|0}function jp(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;d=b+108|0;e=b+20|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d>>2]=1065353216;f=b+112|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return}function kp(a){a=a|0;Xj(a+124|0);gh(a+112|0);lp(a+92|0);return}function lp(a){a=a|0;mp(a);return}function mp(a){a=a|0;var b=0;np(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function np(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function op(b,d,e,g,h,i,j,k,l){b=b|0;d=+d;e=+e;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;f[b+20>>2]=d;f[b+24>>2]=e;f[b+28>>2]=g;f[b+32>>2]=h;f[b+36>>2]=-1.0;f[b+40>>2]=1.0;c[b+52>>2]=i;c[b+56>>2]=j;c[b+60>>2]=k;c[b+64>>2]=l;l=B(j,i)|0;c[b+84>>2]=l;l=B(l,k)|0;c[b+88>>2]=l;f[b+44>>2]=10.0;f[b+48>>2]=.4342944622039795;a[b+16>>0]=(j|i|0)==0&1;pp(b+92|0);return}function pp(a){a=a|0;var b=0,d=0,e=0;d=a+12|0;if(c[d>>2]|0){e=a+8|0;np(a,c[e>>2]|0);c[e>>2]=0;e=c[a+4>>2]|0;b=0;while(1){if((b|0)==(e|0))break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+1|0}c[d>>2]=0}return}function qp(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;p=t+12|0;q=t+8|0;r=t+4|0;s=t;pp(b+92|0);if(g|0){j=b+112|0;fh(j,g<<2);k=b+124|0;Vk(k,g);if(a[b+16>>0]|0)rp(b,d,e,g);l=b+68|0;m=b+72|0;n=b+76|0;o=b+80|0;h=0;i=0;while(1){if((i|0)>=(g|0))break;u=i<<2;v=d+(u<<2)|0;u=e+(u<<2)|0;sp(b,p,q,r,s,+f[v>>2],+f[v+4>>2],+f[v+8>>2],+f[v+12>>2],+f[u>>2],+f[u+4>>2],+f[u+8>>2],+f[u+12>>2]);if(tp(b,+f[p>>2],+f[q>>2],+f[r>>2],+f[s>>2])|0){v=(c[j>>2]|0)+(h<<2<<2)|0;c[v>>2]=c[l>>2];c[v+4>>2]=c[m>>2];c[v+8>>2]=c[n>>2];c[v+12>>2]=c[o>>2];c[(c[k>>2]|0)+(h<<2)>>2]=i;h=h+1|0}i=i+1|0}fh(j,h<<2);Vk(k,h)}zb=t;return}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;l=zb;zb=zb+16|0;g=l+12|0;k=l;i=a+4|0;j=Aj(c[a>>2]|0,c[i>>2]|0)|0;uo(k,e);if((e|0)<=0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33144)|0,33176)|0,35e3)|0,208)|0,35007)|0,33265)|0;IE(g,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(g,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(g);QE(m,n)|0;ME(m)|0;ua()}if((c[a>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33287)|0,33176)|0,35e3)|0,209)|0,35007)|0,33329)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}if((c[i>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33352)|0,33176)|0,35e3)|0,210)|0,35007)|0,33395)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}h=+(j|0);g=0;while(1){if((g|0)==(e|0))break;n=g<<2;o=+Bp(+f[b+(n<<2)+12>>2],+f[d+(n<<2)+12>>2])*h;f[(c[k>>2]|0)+(g<<2)>>2]=o;g=g+1|0}n=c[k>>2]|0;o=+Dp(n,(c[k+4>>2]|0)-n>>2)*.25;n=Aj(5,~~+A(+((+f[a+24>>2]-+f[a+20>>2])/o)))|0;m=a+52|0;c[m>>2]=n;n=Aj(5,~~+A(+((+f[a+32>>2]-+f[a+28>>2])/o)))|0;c[a+56>>2]=n;n=B(c[m>>2]|0,n)|0;c[a+84>>2]=n;n=B(c[a+60>>2]|0,n)|0;c[a+88>>2]=n;gh(k);zb=l;return}function sp(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+32|0;q=s+16|0;r=s;n=j-n;f[e>>2]=n;j=n;if(!(j<=-3.141592653589793)){if(j>3.141592653589793){n=j+-6.283185307179586;p=5}}else{n=j+6.283185307179586;p=5}if((p|0)==5)f[e>>2]=n;if(!(n>-3.141592653589793)){p=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,468)|0,35007)|0,32407)|0;IE(q,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);t=XF(q,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(q);QE(p,t)|0;ME(p)|0;ua()}if(!(n<=3.141592653589793)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,469)|0,35007)|0,32407)|0;IE(q,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(q,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(q);QE(t,s)|0;ME(t)|0;ua()}else{n=+Bp(k,o);f[g>>2]=n;Cp(r,+f[e>>2],n);n=+z(+(+f[g>>2]));f[g>>2]=n*+f[a+48>>2];n=+f[r>>2];j=+f[r+4>>2];o=+f[r+8>>2];k=+f[r+12>>2];g=a+8|0;t=a+12|0;f[b>>2]=h-(n*l+j*m)+(n*+f[g>>2]+j*+f[t>>2]);f[d>>2]=i-(o*l+k*m)+(o*+f[g>>2]+k*+f[t>>2]);zb=s;return}}function tp(a,b,d,e,g){a=a|0;b=+b;d=+d;e=+e;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;h=x;t=+f[a+20>>2];if((((((!(t>b)?(m=+f[a+24>>2],!(m<=b)):0)?(n=+f[a+28>>2],!(n>d)):0)?(o=+f[a+32>>2],!(o<=d)):0)?(p=e,!(p<=-3.141592653589793|p>3.141592653589793)):0)?(q=+f[a+36>>2],!(q>g)):0)?(r=+f[a+40>>2],!(r<=g)):0){if(!(t<=b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32121)|0,32155)|0,35e3)|0,360)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(m>b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32257)|0,32155)|0,35e3)|0,361)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(n<=d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32290)|0,32155)|0,35e3)|0,362)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(o>d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32339)|0,32155)|0,35e3)|0,363)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p>-3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,364)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p<=3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,365)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(q<=g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32461)|0,32155)|0,35e3)|0,366)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(r>g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32522)|0,32155)|0,35e3)|0,367)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}h=a+68|0;i=a+72|0;l=a+76|0;j=a+80|0;up(a,h,i,l,j,b,d,e,g);h=~~+s(+(+f[h>>2]+-.5));i=~~+s(+(+f[i>>2]+-.5));l=~~+s(+(+f[l>>2]+-.5));j=~~+s(+(+f[j>>2]+-.5));k=c[a+60>>2]|0;l=(k+l|0)%(k|0)|0;if((((h|0)>=0?(u=h+1|0,!((i|0)<0?1:(u|0)>=(c[a+52>>2]|0))):0)?(v=i+1|0,!((j|0)<0?1:(v|0)>=(c[a+56>>2]|0))):0)?(w=j+1|0,(w|0)<(c[a+64>>2]|0)):0){k=(l+1|0)%(k|0)|0;wp(a,vp(a,h,i,l,j)|0,1);wp(a,vp(a,u,i,l,j)|0,1);wp(a,vp(a,u,v,l,j)|0,1);wp(a,vp(a,u,v,k,j)|0,1);wp(a,vp(a,u,v,k,w)|0,1);wp(a,vp(a,u,v,l,w)|0,1);wp(a,vp(a,u,i,k,j)|0,1);wp(a,vp(a,u,i,k,w)|0,1);wp(a,vp(a,u,i,l,w)|0,1);wp(a,vp(a,h,v,l,j)|0,1);wp(a,vp(a,h,v,k,j)|0,1);wp(a,vp(a,h,v,k,w)|0,1);wp(a,vp(a,h,v,l,w)|0,1);wp(a,vp(a,h,i,k,j)|0,1);wp(a,vp(a,h,i,k,w)|0,1);wp(a,vp(a,h,i,l,w)|0,1);h=1}else h=0}else h=0;zb=x;return h|0}function up(a,b,d,e,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;var l=0.0,m=0.0;l=+(c[a+52>>2]|0);m=+f[a+20>>2];h=+Bp(h-m,+f[a+24>>2]-m)*l;f[b>>2]=h;h=+(c[a+56>>2]|0);l=+f[a+28>>2];i=+Bp(i-l,+f[a+32>>2]-l)*h;f[d>>2]=i;f[e>>2]=(j+3.141592653589793)*.15915494309189535*+(c[a+60>>2]|0);j=+(c[a+64>>2]|0);i=+f[a+36>>2];k=+Bp(k-i,+f[a+40>>2]-i)*j;f[g>>2]=k;return}function vp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+16|0;h=k;if((b|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,165)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}g=c[a+52>>2]|0;if((g|0)<=(b|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,166)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}if((d|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,167)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}i=c[a+56>>2]|0;if((i|0)<=(d|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,168)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(j,l)|0;ME(j)|0;ua()}if((e|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,169)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(l,j)|0;ME(l)|0;ua()}j=c[a+60>>2]|0;if((j|0)<=(e|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,170)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);m=XF(h,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(h);QE(l,m)|0;ME(l)|0;ua()}if((f|0)<=-1){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,171)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}if((c[a+64>>2]|0)<=(f|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,172)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}m=(B(g,d)|0)+b|0;l=(B(c[a+84>>2]|0,e)|0)+m|0;a=l+(B(c[a+88>>2]|0,f)|0)|0;if((a|0)>((B(B(i,g)|0,(B(j,f)|0)+e|0)|0)+m|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33012)|0,32155)|0,35e3)|0,176)|0,35007)|0,32597)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}else{zb=k;return a|0}return 0}function wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;e=s+8|0;n=s;if((b|0)<=-1){r=Xf(Xf(PE(Xf(Xf(Xf(56032,32563)|0,32155)|0,35e3)|0,290)|0,35007)|0,32597)|0;IE(e,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(e,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(e);QE(r,q)|0;ME(r)|0;ua()}r=a+92|0;c[e>>2]=b;g=xp(r,e)|0;if(!g){c[n>>2]=b;c[n+4>>2]=d;p=a+96|0;k=c[p>>2]|0;q=(k|0)==0;a:do if(!q){l=k+-1|0;m=(l&k|0)==0;if(!m)if(k>>>0>b>>>0)d=b;else d=(b>>>0)%(k>>>0)|0;else d=l&b;g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g)o=19;else do{g=c[g>>2]|0;if(!g){o=19;break a}h=c[g+4>>2]|0;if((h|0)!=(b|0)){if(!m){if(h>>>0>=k>>>0)h=(h>>>0)%(k>>>0)|0}else h=h&l;if((h|0)!=(d|0)){o=19;break a}}}while((c[g+8>>2]|0)!=(b|0))}else{d=0;o=19}while(0);if((o|0)==19){yp(e,r,b,n);l=a+104|0;i=+(((c[l>>2]|0)+1|0)>>>0);j=+f[a+108>>2];do if(q|j*+(k>>>0)>>0<3|(k+-1&k|0)!=0)&1;g=~~+A(+(i/j))>>>0;zp(r,d>>>0>>0?g:d);d=c[p>>2]|0;g=d+-1|0;if(!(g&d)){k=d;d=g&b;break}if(d>>>0>b>>>0){k=d;d=b}else{k=d;d=(b>>>0)%(d>>>0)|0}}while(0);g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g){h=a+100|0;c[c[e>>2]>>2]=c[h>>2];c[h>>2]=c[e>>2];c[(c[r>>2]|0)+(d<<2)>>2]=h;h=c[e>>2]|0;d=c[h>>2]|0;if(d){d=c[d+4>>2]|0;g=k+-1|0;if(g&k){if(d>>>0>=k>>>0)d=(d>>>0)%(k>>>0)|0}else d=d&g;c[(c[r>>2]|0)+(d<<2)>>2]=h}}else{c[c[e>>2]>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0}}else{r=g+12|0;c[r>>2]=(c[r>>2]|0)+d}zb=s;return}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function yp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=tB(16)|0;c[b>>2]=g;c[b+4>>2]=d+8;c[g+8>>2]=c[f>>2];c[g+12>>2]=c[f+4>>2];a[b+8>>0]=1;c[g+4>>2]=e;c[g>>2]=0;return}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Ap(a,b)}}else Ap(a,b);return}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Bp(a,b){a=+a;b=+b;return +(a/(b==0.0?1.0:b))}function Cp(a,b,c){a=a|0;b=+b;c=+c;var d=0.0;d=+w(+b)*c;c=+x(+b)*c;f[a>>2]=d;f[a+4>>2]=-c;f[a+8>>2]=c;f[a+12>>2]=d;return}function Dp(a,b){a=a|0;b=b|0;return +(+Ep(a,b,(b&1)+-1+((b|0)/2|0)|0))}function Ep(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0;r=zb;zb=zb+16|0;e=r;if((b|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,53)|0,35007)|0,33521)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}if((d|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,54)|0,35007)|0,33569)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}p=d+-1|0;q=a+(p<<2)|0;m=b+-1|0;n=0;while(1){o=+f[q>>2];if((n|0)>=(m|0))break;e=n;b=m;do{while(1){i=a+(e<<2)|0;j=+f[i>>2];k=e+1|0;if(j>2];l=b+-1|0;if(o>2]=h;f[g>>2]=j;e=k;b=l}}while((e|0)<=(b|0));m=(e|0)<(d|0)?m:b;n=(b|0)<(p|0)?e:n}zb=r;return +o}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0,h=0;f[b>>2]=0.0;c[d>>2]=-1;a=a+100|0;e=0.0;while(1){a=c[a>>2]|0;if(!a)break;g=a;h=g+12|0;if(e<+((c[h>>2]|0)>>>0)){c[d>>2]=c[g+8>>2];e=+((c[h>>2]|0)>>>0);f[b>>2]=e}}return}function Gp(a){a=a|0;ko(a,1760,12);ko(a+48|0,1808,12);ko(a+96|0,1856,12);ko(a+144|0,1904,12);ko(a+192|0,1952,12);ko(a+240|0,2e3,12);f[a+288>>2]=.10000000149011612;f[a+292>>2]=.17499999701976776;f[a+296>>2]=.25;f[a+300>>2]=.32499998807907104;f[a+304>>2]=.4000000059604645;f[a+308>>2]=.4749999940395355;f[a+312>>2]=.550000011920929;f[a+316>>2]=7.0;return}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;fm(b,96);Ip(b,((c[e+4>>2]|0)-(c[e>>2]|0)|0)/20|0);Jp(b,d,e,a,a+48|0,a+96|0,a+144|0,a+192|0,a+240|0,+f[a+288>>2],+f[a+292>>2],+f[a+296>>2],+f[a+300>>2],+f[a+304>>2],+f[a+308>>2],+f[a+312>>2],+f[a+316>>2]);return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;g=B(c[b>>2]|0,d)|0;a[f>>0]=0;Wp(b+4|0,g,f);hm(b+16|0,d);zb=e;return}function Jp(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;x=z;if(!d){y=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,33619)|0,35e3)|0,537)|0,35007)|0,33688)|0;IE(x,y+(c[(c[y>>2]|0)+-12>>2]|0)|0);w=XF(x,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(x);QE(y,w)|0;ME(y)|0;ua()}w=Ak(b)|0;y=e+4|0;v=c[y>>2]|0;u=c[e>>2]|0;if((w|0)!=((v-u|0)/20|0|0)){w=Xf(Xf(PE(Xf(Xf(Xf(56032,33704)|0,33619)|0,35e3)|0,538)|0,35007)|0,33757)|0;IE(x,w+(c[(c[w>>2]|0)+-12>>2]|0)|0);t=XF(x,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(x);QE(w,t)|0;ME(w)|0;ua()}w=0;t=0;while(1){u=(v-u|0)/20|0;if(w>>>0>=u>>>0)break;v=Kp(b,t)|0;if(Lp(v,d,(c[e>>2]|0)+(w*20|0)|0,f,g,h,i,j,k,l,m,n,o,p,q,r,s)|0){u=(c[e>>2]|0)+(w*20|0)|0;v=Mp(b,t)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];a[v+16>>0]=a[u+16>>0]|0;t=t+1|0}w=w+1|0;u=c[e>>2]|0;v=c[y>>2]|0}if((t|0)==(u|0)){Ip(b,t);zb=z;return}else{z=Xf(Xf(PE(Xf(Xf(Xf(56032,33794)|0,33619)|0,35e3)|0,617)|0,35007)|0,33845)|0;IE(x,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);k=XF(x,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(x);QE(z,k)|0;ME(z)|0;ua()}}function Kp(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function Lp(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0;s=zb;zb=zb+160|0;r=s;if(Np(r,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)|0){Op(a,r);a=1}else a=0;zb=s;return a|0}function Mp(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function Np(a,b,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;t=zb;zb=zb+336|0;aa=t+288|0;y=t+240|0;D=t+192|0;I=t+144|0;N=t+96|0;S=t+48|0;X=t;v=t+328|0;u=t+324|0;x=+f[d+12>>2]*s;x=x<1.0?1.0:x;Qp(aa,+f[d>>2],+f[d+4>>2],+f[d+8>>2],x);w=+f[aa+8>>2];s=+f[aa+20>>2];Rp(y,aa,e);C=y+8|0;Rp(C,aa,e+8|0);B=y+16|0;Rp(B,aa,e+16|0);A=y+24|0;Rp(A,aa,e+24|0);z=y+32|0;Rp(z,aa,e+32|0);d=y+40|0;Rp(d,aa,e+40|0);Rp(D,aa,g);H=D+8|0;Rp(H,aa,g+8|0);G=D+16|0;Rp(G,aa,g+16|0);F=D+24|0;Rp(F,aa,g+24|0);E=D+32|0;Rp(E,aa,g+32|0);e=D+40|0;Rp(e,aa,g+40|0);Rp(I,aa,h);M=I+8|0;Rp(M,aa,h+8|0);L=I+16|0;Rp(L,aa,h+16|0);K=I+24|0;Rp(K,aa,h+24|0);J=I+32|0;Rp(J,aa,h+32|0);g=I+40|0;Rp(g,aa,h+40|0);Rp(N,aa,i);R=N+8|0;Rp(R,aa,i+8|0);Q=N+16|0;Rp(Q,aa,i+16|0);P=N+24|0;Rp(P,aa,i+24|0);O=N+32|0;Rp(O,aa,i+32|0);h=N+40|0;Rp(h,aa,i+40|0);Rp(S,aa,j);W=S+8|0;Rp(W,aa,j+8|0);V=S+16|0;Rp(V,aa,j+16|0);U=S+24|0;Rp(U,aa,j+24|0);T=S+32|0;Rp(T,aa,j+32|0);i=S+40|0;Rp(i,aa,j+40|0);Rp(X,aa,k);$=X+8|0;Rp($,aa,k+8|0);_=X+16|0;Rp(_,aa,k+16|0);Z=X+24|0;Rp(Z,aa,k+24|0);Y=X+32|0;Rp(Y,aa,k+32|0);j=X+40|0;Rp(j,aa,k+40|0);Sp(b,v,u,x*r);r=+Tp(b,+f[X>>2],+f[X+4>>2],c[v>>2]|0,c[u>>2]|0);f[a>>2]=r;r=+Tp(b,+f[$>>2],+f[X+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+4>>2]=r;r=+Tp(b,+f[_>>2],+f[X+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+8>>2]=r;r=+Tp(b,+f[Z>>2],+f[X+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+12>>2]=r;r=+Tp(b,+f[Y>>2],+f[X+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+16>>2]=r;r=+Tp(b,+f[j>>2],+f[X+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+20>>2]=r;Sp(b,v,u,x*q);r=+Tp(b,+f[S>>2],+f[S+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+24>>2]=r;r=+Tp(b,+f[W>>2],+f[S+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+28>>2]=r;r=+Tp(b,+f[V>>2],+f[S+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+32>>2]=r;r=+Tp(b,+f[U>>2],+f[S+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+36>>2]=r;r=+Tp(b,+f[T>>2],+f[S+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+40>>2]=r;r=+Tp(b,+f[i>>2],+f[S+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+44>>2]=r;Sp(b,v,u,x*p);r=+Tp(b,+f[N>>2],+f[N+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+48>>2]=r;r=+Tp(b,+f[R>>2],+f[N+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+52>>2]=r;r=+Tp(b,+f[Q>>2],+f[N+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+56>>2]=r;r=+Tp(b,+f[P>>2],+f[N+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+60>>2]=r;r=+Tp(b,+f[O>>2],+f[N+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+64>>2]=r;r=+Tp(b,+f[h>>2],+f[N+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+68>>2]=r;Sp(b,v,u,x*o);r=+Tp(b,+f[I>>2],+f[I+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+72>>2]=r;r=+Tp(b,+f[M>>2],+f[I+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+76>>2]=r;r=+Tp(b,+f[L>>2],+f[I+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+80>>2]=r;r=+Tp(b,+f[K>>2],+f[I+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+84>>2]=r;r=+Tp(b,+f[J>>2],+f[I+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+88>>2]=r;r=+Tp(b,+f[g>>2],+f[I+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+92>>2]=r;Sp(b,v,u,x*n);r=+Tp(b,+f[D>>2],+f[D+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+96>>2]=r;r=+Tp(b,+f[H>>2],+f[D+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+100>>2]=r;r=+Tp(b,+f[G>>2],+f[D+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+104>>2]=r;r=+Tp(b,+f[F>>2],+f[D+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+108>>2]=r;r=+Tp(b,+f[E>>2],+f[D+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+112>>2]=r;r=+Tp(b,+f[e>>2],+f[D+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+116>>2]=r;Sp(b,v,u,x*m);r=+Tp(b,+f[y>>2],+f[y+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+120>>2]=r;r=+Tp(b,+f[C>>2],+f[y+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+124>>2]=r;r=+Tp(b,+f[B>>2],+f[y+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+128>>2]=r;r=+Tp(b,+f[A>>2],+f[y+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+132>>2]=r;r=+Tp(b,+f[z>>2],+f[y+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+136>>2]=r;r=+Tp(b,+f[d>>2],+f[y+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+140>>2]=r;Sp(b,v,u,x*l);l=+Tp(b,w,s,c[v>>2]|0,c[u>>2]|0);f[a+144>>2]=l;zb=t;return 1}function Op(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;Il(a,84);c=0;g=0;i=36;j=35;k=36;while(1){if((c|0)==37)break;h=c+1|0;e=b+(c<<2)|0;c=h;d=g;while(1){if((d|0)==(k|0))break;Pp(a,d,+f[e>>2]<+f[b+(c<<2)>>2]&1);c=c+1|0;d=d+1|0}e=k+j|0;c=h;g=g+i|0;i=i+-1|0;j=j+-1|0;k=e}return}function Pp(b,c,e){b=b|0;c=c|0;e=e|0;b=b+((c|0)/8|0)|0;a[b>>0]=(e&255)<<(c&7)|(d[b>>0]|0);return}function Qp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var g=0.0;g=+w(+d)*e;e=+x(+d)*e;f[a>>2]=g;f[a+4>>2]=-e;f[a+8>>2]=b;f[a+12>>2]=e;f[a+16>>2]=g;f[a+20>>2]=c;f[a+24>>2]=0.0;f[a+28>>2]=0.0;f[a+32>>2]=1.0;return}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+4|0;f[a>>2]=+f[b+8>>2]+(+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[d>>2]);f[a+4>>2]=+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[d>>2]);return}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;l=m;g=~~+s(+(+Oi(e)));c[b>>2]=g;e=+z(+(e/+(1<>2]*e);c[d>>2]=g;j=a+20|0;if(((c[j>>2]|0)+-1|0)==(g|0)){c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=0;g=0}h=c[b>>2]|0;if((h|0)>=0){i=c[a+16>>2]|0;if((h|0)<(i|0))h=g;else{c[b>>2]=i+-1;g=(c[j>>2]|0)+-1|0;k=7}}else{c[b>>2]=0;g=0;k=7}if((k|0)==7){c[d>>2]=g;h=g}g=c[b>>2]|0;if((g|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,33865)|0,33900)|0,35e3)|0,268)|0,35007)|0,33993)|0;IE(l,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);b=XF(l,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(l);QE(k,b)|0;ME(k)|0;ua()}if((g|0)>=(c[a+16>>2]|0)){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,269)|0,35007)|0,34061)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<=-1){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,270)|0,35007)|0,34138)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<(c[j>>2]|0)){zb=m;return}else{m=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,271)|0,35007)|0,34212)|0;IE(l,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);a=XF(l,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(l);QE(m,a)|0;ME(m)|0;ua()}}function Tp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var g=0,h=0,i=0;g=zb;zb=zb+16|0;i=g+4|0;h=g;e=Lg(a,d,e)|0;mi(i,h,b,c,d);c=+Up(e,+f[i>>2],+f[h>>2]);zb=g;return +c}function Up(a,b,c){a=a|0;b=+b;c=+c;return +(+Vp(a,b,c))}function Vp(a,b,c){a=a|0;b=+b;c=+c;b=+Zh(b,0.0,+(((Ng(a)|0)+-2|0)>>>0));return +(+Ci(a,b,+Zh(c,0.0,+(((Og(a)|0)+-2|0)>>>0))))}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g|0;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+b}else Xp(a,b-f|0,d);return}function Xp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+32|0;h=k;i=b+8|0;j=b+4|0;f=c[j>>2]|0;do if(((c[i>>2]|0)-f|0)>>>0>>0){f=f-(c[b>>2]|0)+d|0;g=mg(b)|0;if(g>>>0>>0)EO(b);else{l=c[b>>2]|0;m=(c[i>>2]|0)-l|0;i=m<<1;ng(h,m>>>0>>1>>>0?(i>>>0>>0?f:i):g,(c[j>>2]|0)-l|0,b+8|0);Yp(h,d,e);og(b,h);pg(h);break}}else do{a[f>>0]=a[e>>0]|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;d=d+-1|0}while((d|0)!=0);while(0);zb=k;return}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;b=d;d=c[f>>2]|0;do{a[d>>0]=a[e>>0]|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Zp(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+272|0;e=b+256|0;d=b;Ta(e|0)|0;Ra(d|0,256,34263,Oa(e|0)|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,d,Yf(d)|0);zb=b;return}function _p(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;f=i;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];g=a+24|0;h=c[b+24>>2]|0;c[f>>2]=h;e=f+4|0;b=c[b+28>>2]|0;c[e>>2]=b;if(!b){d=e;b=0}else{d=b+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;b=c[e>>2]|0}c[f>>2]=c[g>>2];c[g>>2]=h;h=a+28|0;c[d>>2]=c[h>>2];c[h>>2]=b;aq(f);zb=i;return}function aq(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function bq(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;$p(a,b);return}function cq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=zb;zb=zb+32|0;i=l+16|0;j=l+8|0;k=l;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34281)|0,34314)|0,35e3)|0,127)|0,35007)|0,34386)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);m=XF(i,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(i);QE(h,m)|0;ME(h)|0;ua()}if(!e){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34407)|0,34314)|0,35e3)|0,128)|0,35007)|0,34441)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(f>>>0>>0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34463)|0,34314)|0,35e3)|0,129)|0,35007)|0,34500)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(!g){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34545)|0,34314)|0,35e3)|0,130)|0,35007)|0,34581)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if((f|0)<0)f=B(B(g,d)|0,dq(b)|0)|0;c[a+12>>2]=f;f=B(f,e)|0;h=a+20|0;if((c[h>>2]|0)!=(f|0)?(m=a+24|0,o=uB(f)|0,c[k>>2]=0,c[i>>2]=c[k>>2],eq(j,o,i),o=c[j>>2]|0,c[j>>2]=c[m>>2],c[m>>2]=o,o=j+4|0,k=a+28|0,n=c[o>>2]|0,c[o>>2]=c[k>>2],c[k>>2]=n,aq(j),(c[m>>2]|0)==0):0){o=Xf(Xf(PE(Xf(Xf(Xf(56032,34615)|0,34314)|0,35e3)|0,149)|0,35007)|0,34650)|0;IE(i,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(i,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(i);QE(o,n)|0;ME(o)|0;ua()}c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+16>>2]=g;c[h>>2]=f;zb=l;return}function dq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;switch(a|0){case 1:break;case 2:{a=4;break}default:{d=O(16)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,34774,Yf(34774)|0);mj(d,b);Q(d|0,13208,5)}}zb=d;return a|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15768;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;fq(a,e);zb=d;return}function fq(a,b){a=a|0;b=b|0;return}function gq(a){a=a|0;ZN(a);SA(a);return}function hq(a){a=a|0;SA(c[a+12>>2]|0);return}function iq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34671?a+12|0:0)|0}function jq(a){a=a|0;Pf(a,16);return}function kq(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=zb;zb=zb+16|0;k=j+8|0;l=j+4|0;m=j;c[b>>2]=e;c[b+4>>2]=f;c[b+8>>2]=g;c[b+16>>2]=i;g=B(h,g)|0;c[b+20>>2]=g;c[m>>2]=0;a[l>>0]=a[j+12>>0]|0;c[k>>2]=c[m>>2];lq(b+24|0,d,l,k);if((h|0)<0)h=B(B(i,f)|0,dq(e)|0)|0;c[b+12>>2]=h;zb=j;return}function lq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=zb;zb=zb+16|0;d=e;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15796;c[f+12>>2]=b;c[a+4>>2]=f;c[d>>2]=b;c[d+4>>2]=b;fq(a,d);zb=e;return}function mq(a,b){a=a|0;b=b|0;return}function nq(a){a=a|0;ZN(a);SA(a);return}function oq(a){a=a|0;a=a+12|0;mq(a,c[a>>2]|0);return}function pq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34793?a+12|0:0)|0}function qq(a){a=a|0;Pf(a,16);return}function rq(a){a=a|0;aq(a+24|0);return}function sq(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+4|0;e=0;while(1){g=c[a>>2]|0;if(e>>>0>=(c[f>>2]|0)-g>>3>>>0)break;g=c[g+(e<<3)>>2]|0;Wb[c[(c[g>>2]|0)+8>>2]&3](g,b,d);e=e+1|0}return}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=zb;zb=zb+48|0;i=f;h=f+28|0;g=f+16|0;c[i>>2]=e;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;gO(g,d,Yf(d)|0);vq(h,g,i);tq(a,b,h);jO(h);jO(g);zb=f;return}function vq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+2048|0;g=f;Jx(g,2048,(a[d+11>>0]|0)<0?c[d>>2]|0:d,e)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,g,Yf(g)|0);zb=f;return}function wq(a){a=a|0;g[a>>3]=-1.0;g[a+8>>3]=-1.0;return}function xq(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;Ka(d|0,0)|0;g[a>>3]=+(c[d+4>>2]|0)*1.0e-06+ +(c[d>>2]|0);zb=b;return}function yq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;if(!(+g[a>>3]>=0.0)){d=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,67)|0,35007)|0,35010)|0;IE(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);a=XF(b,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(b);QE(d,a)|0;ME(d)|0;ua()}else{Ka(b|0,0)|0;g[a+8>>3]=+(c[b+4>>2]|0)*1.0e-06+ +(c[b>>2]|0);zb=d;return}}function zq(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0,i=0;f=zb;zb=zb+16|0;d=f;e=+g[a>>3];if(!(e>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,80)|0,35007)|0,35010)|0;IE(d,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(h,i)|0;ME(h)|0;ua()}b=+g[a+8>>3];if(!(b>=0.0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,35037)|0,34927)|0,35e3)|0,81)|0,35007)|0,35075)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);h=XF(d,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(d);QE(i,h)|0;ME(i)|0;ua()}else{zb=f;return +(b-e)}return +(0.0)}function Aq(a){a=a|0;return +(+zq(a)*1.0e3)}function Bq(a,b){a=a|0;b=b|0;var d=0;wq(a);d=a+16|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,b,Yf(b)|0);xq(a);return}function Cq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=zb;zb=zb+48|0;j=k;d=k+24|0;yq(b);f=yk()|0;Zp(d);h=(a[d+11>>0]|0)<0?c[d>>2]|0:d;i=b+16|0;if((a[i+11>>0]|0)<0)e=c[i>>2]|0;else e=i;l=+Aq(b);c[j>>2]=35129;c[j+4>>2]=h;c[j+8>>2]=35137;c[j+12>>2]=e;g[j+16>>3]=l;uq(f,8,35102,j);jO(d);jO(i);zb=k;return}function Dq(){Eq();Fq();Gq();return}function Eq(){c[13871]=0;c[13872]=0;c[13873]=0;c[13874]=0;c[13875]=1065353216;return}function Fq(){c[13876]=0;c[13877]=0;c[13878]=0;c[13879]=0;c[13880]=1065353216;return}function Gq(){Hq(0);return}function Hq(a){a=a|0;var b=0;a=zb;zb=zb+16|0;b=a;Jq(35173,26);Lq(35179,67);Lq(35188,68);Oq(35197,20);Oq(35208,21);Oq(35224,22);Sq(35238,23);Lq(35256,69);Vq(35276,70);Jq(35288,27);Sq(35305,24);Jq(35325,28);Jq(35343,29);Sq(35365,25);Sq(35388,26);Lq(35417,71);Lq(35430,72);Lq(35443,73);Jq(35459,30);Sq(35478,27);Sq(35488,28);Sq(35501,29);Lq(35514,74);Lq(35527,75);kr(35546,114);mr(35558,1);or(35570,1);qr(35593,1);or(35616,2);qr(35638,2);ur(35660,40);Lq(35677,76);ur(35694,41);Lq(35707,77);ur(35720,42);Lq(35744,78);Br(35768,3);qr(35781,3);ur(35794,43);Lq(35812,79);ur(35830,44);Lq(35846,80);ur(35862,45);Lq(35879,81);Jr(35896,15816);Jr(35925,15820);Jr(35953,15824);c[b>>2]=0;Jr(35986,b);c[b>>2]=1;Jr(36003,b);c[b>>2]=0;Jr(36019,b);c[b>>2]=0;Jr(36041,b);c[b>>2]=1;Jr(36066,b);c[b>>2]=1;Jr(36091,b);c[b>>2]=100;Jr(36116,b);c[b>>2]=0;Jr(36143,b);c[b>>2]=1;Jr(36169,b);c[b>>2]=0;Jr(36195,b);c[b>>2]=0;Jr(36222,b);c[b>>2]=1;Jr(36249,b);c[b>>2]=2;Jr(36275,b);c[b>>2]=3;Jr(36300,b);c[b>>2]=4;Jr(36338,b);c[b>>2]=0;Jr(36375,b);c[b>>2]=0;Jr(36409,b);c[b>>2]=1;Jr(36433,b);c[b>>2]=2;Jr(36459,b);c[b>>2]=2;Jr(36486,b);c[b>>2]=5;Jr(36520,b);g[b>>3]=.5;Kr(36538,b);c[b>>2]=0;Jr(36559,b);c[b>>2]=1;Jr(36578,b);c[b>>2]=2;Jr(36596,b);c[b>>2]=3;Jr(36614,b);c[b>>2]=4;Jr(36633,b);c[b>>2]=3;Jr(36655,b);c[b>>2]=515;Jr(36674,b);c[b>>2]=259;Jr(36703,b);c[b>>2]=4;Jr(36731,b);c[b>>2]=772;Jr(36750,b);c[b>>2]=1028;Jr(36780,b);c[b>>2]=0;Jr(36810,b);c[b>>2]=1;Jr(36841,b);c[b>>2]=2;Jr(36877,b);c[b>>2]=3;Jr(36911,b);c[b>>2]=0;Jr(36949,b);c[b>>2]=1;Jr(36982,b);c[b>>2]=2;Jr(37029,b);c[b>>2]=3;Jr(37071,b);c[b>>2]=4;Jr(37114,b);c[b>>2]=5;Jr(37166,b);c[b>>2]=6;Jr(37217,b);c[b>>2]=7;Jr(37262,b);c[b>>2]=8;Jr(37301,b);c[b>>2]=9;Jr(37346,b);zb=a;return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;h=i+8|0;f=i+12|0;g=c[13882]|0;c[13882]=g+1;c[f>>2]=g;g=Ur(55484,f)|0;c[g>>2]=c[f>>2];c[g+208>>2]=a;c[g+212>>2]=b;j=B(a<<2,b)|0;a=g+200|0;c[a>>2]=j;j=FO(j)|0;b=g+196|0;c[b>>2]=j;j=FO((c[a>>2]|0)/4|0)|0;e=g+204|0;c[e>>2]=j;j=hd()|0;c[g+220>>2]=j;if(!j)Ue(0,3,41354,i);yt(c[f>>2]|0,d)|0;c[h>>2]=c[a>>2];Ue(0,1,41391,h);za(0,c[g>>2]|0,c[b>>2]|0,c[a>>2]|0,g+344|0,51360,c[e>>2]|0)|0;zb=i;return c[g>>2]|0}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=tt(d)|0;d=ut(d)|0;ka(a|0,e|0,d|0,vt()|0,8,b|0);zb=c;return}function Kq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;d=g;c[d>>2]=a;if(!(Tr(55484,d)|0))a=-1;else{f=Ur(55484,d)|0;a=f+196|0;b=c[a>>2]|0;if(b|0){GO(b);c[a>>2]=0;c[f+200>>2]=0}pt(f);jd(c[f+220>>2]|0)|0;qt(55484,d)|0;b=f+328|0;d=f+332|0;a=0;while(1){e=c[b>>2]|0;if(a>>>0>=(c[d>>2]|0)-e>>3>>>0)break;Oe(c[e+(a<<3)+4>>2]|0)|0;a=a+1|0}Zr(b);SA(b);Yr(f);SA(f);a=0}zb=g;return a|0}function Lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=lt(d)|0;d=mt(d)|0;ka(a|0,e|0,d|0,Ns()|0,30,b|0);zb=c;return}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;b=g+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{b=Ur(55484,b)|0;e=b+192|0;a=At(c[e>>2]|0,c[b+472>>2]|0)|0;d=b+236|0;c[d>>2]=a;if(!a){Ue(0,3,41323,f);b=b+232|0;Lf(b)|0;a=c[d>>2]|0}else b=b+232|0;Ye(a,5.0)|0;Xe(c[d>>2]|0,.5)|0;_e(c[d>>2]|0,16)|0;Ze(c[d>>2]|0,6)|0;$e(c[d>>2]|0,6)|0;af(c[d>>2]|0,6)|0;a=kt(c[e>>2]|0)|0;c[b>>2]=a;a=0}zb=g;return a|0}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;e=g+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)d=c[d>>2]|0;b=e+340|0;if(!(jt(d,b,e+220|0)|0)){Ue(0,3,41233,f);b=-1;break}else{b=c[b>>2]|0;break}}else b=-1;while(0);zb=g;return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ft(d)|0;d=gt(d)|0;ka(a|0,e|0,d|0,Xs()|0,31,b|0);zb=c;return}function Pq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j+8|0;e=j+12|0;i=j;c[e>>2]=b;do if(!(Tr(55484,e)|0))b=-1;else{h=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)b=c[d>>2]|0;else b=d;f=h+224|0;if(!($s(b,c[h+216>>2]|0,h+220|0,f)|0)){Ue(0,3,41157,g);b=-1;break}b=h+328|0;e=h+332|0;d=c[e>>2]|0;c[i>>2]=d-(c[b>>2]|0)>>3;c[i+4>>2]=c[f>>2];if((c[h+336>>2]|0)==(d|0))at(b,i);else{f=i;g=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=g;c[e>>2]=(c[e>>2]|0)+8}b=c[i>>2]|0}while(0);zb=j;return b|0}function Qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;e=i+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){f=Ur(55484,e)|0;g=f+244|0;b=c[g>>2]|0;if((a[d+11>>0]|0)<0)e=c[d>>2]|0;else e=d;if(!(_s(f,b,e)|0)){Ue(0,3,40842,h);b=-1;break}else{c[g>>2]=(c[g>>2]|0)+1;break}}else b=-1;while(0);zb=i;return b|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;e=g;c[e>>2]=a;if(((Tr(55484,e)|0)!=0?(f=Ur(55484,e)|0,(b|0)>=0):0)?(d=c[f+328>>2]|0,(c[f+332>>2]|0)-d>>3>>>0>b>>>0):0)a=c[(c[d+(b<<3)+4>>2]|0)+4>>2]|0;else a=-1;zb=g;return a|0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Vs(d)|0;d=Ws(d)|0;ka(a|0,e|0,d|0,Xs()|0,32,b|0);zb=c;return}function Tq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=Ur(55484,b)|0;a=(c[a+332>>2]|0)-(c[a+328>>2]|0)>>3}zb=d;return a|0}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+208|0;h=i+192|0;g=i+184|0;d=i;e=b+11|0;if((a[e>>0]|0)<0)f=c[b>>2]|0;else f=b;if((ke(f,1,d,g)|0)<0){if((a[e>>0]|0)<0)b=c[b>>2]|0;c[h>>2]=b;Ue(0,3,40778,h);b=-1}else{b=c[13881]|0;c[13881]=b+1;c[g>>2]=b;_O(Rs(55504,g)|0,d|0,184)|0;b=c[g>>2]|0}zb=i;return b|0}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Ls(d)|0;d=Ms(d)|0;ka(a|0,e|0,d|0,Ns()|0,31,b|0);zb=c;return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=(Ur(55484,e)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){c[((b|0)<0?54536:a+48+(b<<8)|0)+16>>2]=d;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;n=+g[6420];g[a+168>>3]=n;j=+g[6421];g[a+176>>3]=j;m=+g[6422];g[a+184>>3]=m;i=+g[6423];g[a+192>>3]=i;l=+g[6424];g[a+200>>3]=l;h=+g[6425];g[a+208>>3]=h;k=+g[6426];g[a+216>>3]=k;f=+g[6427];g[a+224>>3]=f;g[a+56>>3]=(n+m+l+k)*.25;g[a+64>>3]=(j+i+h+f)*.25;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Uc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Vc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,51360,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function _q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Pe(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function $q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Re(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function ar(a){a=a|0;var b=0,d=0,e=0,f=0;f=zb;zb=zb+48|0;b=f+40|0;e=f;c[b>>2]=a;if(!(Tr(55484,b)|0))a=c[3954]|0;else{a=Ur(55484,b)|0;b=e;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[e>>2]=c[a+196>>2];c[e+16>>2]=1;c[e+12>>2]=c[a+204>>2];a=Mc(c[a+216>>2]|0,e)|0}zb=f;return a|0}function br(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=15816;else{a=(Ur(55484,b)|0)+216|0;a=(c[a>>2]|0)+44|0}zb=d;return c[a>>2]|0}function cr(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(Tr(55484,b)|0)Ur(55484,b)|0;zb=d;return -1}function dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;a=c[e+328>>2]|0;if((b|0)<0?1:(c[e+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}a=c[a+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[a+4>>2]|0)<=(d|0)){a=c[3956]|0;break}else{a=c[a>>2]|0;Ks(a+(d*320|0)+16|0,51360);ya(1,c[a+(d*320|0)+304>>2]|0,c[a+(d*320|0)>>2]|0,c[a+(d*320|0)+4>>2]|0,+(+g[a+(d*320|0)+8>>3]))|0;a=0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function er(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;Aa(2,c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0,+(+g[a+32>>3]),+(+g[a+40>>3]),+(+g[a+48>>3]),+(+g[a+56>>3]),+(+g[a+64>>3]),+(+g[a+72>>3]),+(+g[a+80>>3]),+(+g[a+88>>3]),+(+g[a+96>>3]),+(+g[a+104>>3]),+(+g[a+112>>3]),+(+g[a+120>>3]),+(+g[a+128>>3]),+(+g[a+136>>3]),+(+g[a+144>>3]),+(+g[a+152>>3]),+(+g[a+160>>3]),+(+g[a+168>>3]),+(+g[a+176>>3]),+(+g[a+184>>3]),+(+g[a+192>>3]),+(+g[a+200>>3]),+(+g[a+208>>3]),+(+g[a+216>>3]),+(+g[a+224>>3]),c[a+240>>2]|0)|0;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+80|0;q=r+56|0;p=r+48|0;d=r+72|0;i=r+76|0;e=r+68|0;n=r;o=r+64|0;c[d>>2]=a;do if(!(Tr(55484,d)|0))a=c[3954]|0;else{k=Ur(55484,d)|0;l=k+244|0;if((c[l>>2]|0)<=(b|0)){a=c[3956]|0;break}c[i>>2]=0;c[e>>2]=-1;f[o>>2]=-1.0;m=k+240|0;a=c[m>>2]|0;do if((a|0)==-2){j=k+232|0;yg(c[j>>2]|0,c[k+204>>2]|0)|0;Ag(c[j>>2]|0,i,e)|0;e=c[e>>2]|0;j=c[i>>2]|0;a=-1;d=0;while(1){if((d|0)>=(e|0))break;do if((c[j+(d*68|0)+48>>2]|0)==(b|0)?(c[j+(d*68|0)+60>>2]|0)==0:0){if((a|0)==-1)a=c[j+(d*68|0)+52>>2]|0;else{g=+f[j+(d*68|0)+52>>2];if(!(+f[o>>2]>g))break;a=(f[h>>2]=g,c[h>>2]|0)}c[o>>2]=a;a=d}while(0);d=d+1|0}if((a|0)<=-1){c[m>>2]=-2;d=30;break}i=c[j+48>>2]|0;c[m>>2]=i;e=0;while(1){if((e|0)==3)break;d=0;while(1){if((d|0)==4)break;c[n+(e<<4)+(d<<2)>>2]=c[j+(a*68|0)+(e<<4)+(d<<2)>>2];d=d+1|0}e=e+1|0}vf(c[k+248+(i<<2)>>2]|0,n)|0;a=c[m>>2]|0;d=25}else d=25;while(0);do if((d|0)==25)if((a|0)>-1){a=Ct(c[k+236>>2]|0,c[k+248+(a<<2)>>2]|0,c[k+196>>2]|0,n,o)|0;if((a|0)<0){c[p>>2]=a;Ue(0,1,37701,p);c[m>>2]=-2;d=30;break}p=(c[l>>2]|0)+-1|0;c[q>>2]=c[k+248+(c[m>>2]<<2)>>2];c[q+4>>2]=p;Ue(0,1,37720,q);if((c[m>>2]|0)>-1)xa(3,b|0,+(+f[o>>2]),+(+f[n>>2]),+(+f[n+4>>2]),+(+f[n+8>>2]),+(+f[n+12>>2]),+(+f[n+16>>2]),+(+f[n+20>>2]),+(+f[n+24>>2]),+(+f[n+28>>2]),+(+f[n+32>>2]),+(+f[n+36>>2]),+(+f[n+40>>2]),+(+f[n+44>>2]))|0;else d=30}else d=30;while(0);if((d|0)==30)wa(4,b|0)|0;a=0}while(0);zb=r;return a|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Tr(55484,d)|0))b=0;else{a=(Ur(55484,d)|0)+216|0;d=(b|0)!=0;tc(c[a>>2]|0,d&1)|0;c[e>>2]=d?37670:37674;Ue(0,1,37679,e)}zb=f;return b|0}function hr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;xc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function ir(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;a=c[(c[a>>2]|0)+4834148>>2]|0}zb=d;return a|0}function jr(a){a=a|0;c[3916]=a;return}function kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Fs(d)|0;d=Gs(d)|0;ka(a|0,e|0,d|0,Hs()|0,46,b|0);zb=c;return}function lr(){return c[3916]|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=As(d)|0;d=Bs(d)|0;ka(a|0,e|0,d|0,Cs()|0,82,b|0);zb=c;return}function nr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+312|0;g[d>>3]=b}zb=e;return}function or(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=us(d)|0;d=vs(d)|0;ka(a|0,e|0,d|0,ws()|0,1,b|0);zb=c;return}function pr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+312|0;b=+g[d>>3]}zb=e;return +b}function qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ps(d)|0;d=qs(d)|0;ka(a|0,e|0,d|0,rs()|0,1,b|0);zb=c;return}function rr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+320|0;g[d>>3]=b}zb=e;return}function sr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+320|0;b=+g[d>>3]}zb=e;return +b}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(uc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37628,e)}zb=f;return}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ks(d)|0;d=ls(d)|0;ka(a|0,e|0,d|0,ms()|0,2,b|0);zb=c;return}function vr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Cc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;d=g+4|0;c[d>>2]=a;if((Tr(55484,d)|0?(e=Ur(55484,d)|0,b>>>0<=255):0)?(Ac(c[e+216>>2]|0,b)|0)==0:0){c[f>>2]=b;Ue(0,1,37602,f)}zb=g;return}function xr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Bc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Fc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37567,e)}zb=f;return}function zr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ic(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Ar(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=j+8|0;c[e>>2]=a;if(((Tr(55484,e)|0?(f=Ur(55484,e)|0,!(b<=0.0|b>=1.0)):0)?(h=b,d=c[f+216>>2]|0,d|0):0)?(Jc(d,h)|0)==0:0){g[i>>3]=h;Ue(0,1,37536,i)}zb=j;return}function Br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ds(d)|0;d=es(d)|0;ka(a|0,e|0,d|0,fs()|0,2,b|0);zb=c;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+8|0;e=f;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if(!a)b=-1.0;else{d=(Kc(a,e)|0)==0;b=d?+g[e>>3]:-1.0}}zb=f;return +b}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+216|0;Gc(c[d>>2]|0,b)|0}zb=e;return}function Er(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;Hc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(yc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37506,e)}zb=f;return}function Gr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(zc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Dc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37477,e)}zb=f;return}function Ir(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ec(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Jr(a,b){a=a|0;b=b|0;var c=0;c=Pr()|0;ha(a|0,c|0,+(+Rr(Qr(b)|0)));return}function Kr(a,b){a=a|0;b=b|0;var c=0;c=Lr()|0;ha(a|0,c|0,+(+Nr(+Mr(b))));return}function Lr(){return Or()|0}function Mr(a){a=a|0;return +(+g[a>>3])}function Nr(a){a=+a;return +a}function Or(){return 14120}function Pr(){return Sr()|0}function Qr(a){a=a|0;return c[a>>2]|0}function Rr(a){a=a|0;return +(+(a|0))}function Sr(){return 14080}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Vr(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Wr(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(496)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];g=h+16|0;aP(g|0,0,480)|0;cs(g);a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Wr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)bs(a,b)}}else bs(a,b);return}function Xr(a){a=a|0;Yr(a+8|0);return}function Yr(a){a=a|0;Zr(a+328|0);_r(a+288|0);return}function Zr(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function _r(a){a=a|0;$r(a);return}function $r(a){a=a|0;var b=0;as(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function as(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function cs(a){a=a|0;var b=0;c[a+192>>2]=0;c[a+196>>2]=0;b=a+204|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+240>>2]=-2;c[a+244>>2]=0;b=a+288|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+304>>2]=1065353216;g[a+312>>3]=.0001;g[a+320>>3]=1.0e3;b=a+328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+472>>2]=2;return}function ds(a){a=a|0;return 3}function es(a){a=a|0;return js()|0}function fs(){return 37531}function gs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+is(c);Tb[a&3](b,c);return}function hs(a){a=a|0;return a|0}function is(a){a=+a;return +a}function js(){return 15828}function ks(a){a=a|0;return 3}function ls(a){a=a|0;return os()|0}function ms(){return 37623}function ns(a,b,c){a=a|0;b=b|0;c=c|0;b=hs(b)|0;c=hs(c)|0;Ub[a&63](b,c);return}function os(){return 15840}function ps(a){a=a|0;return 2}function qs(a){a=a|0;return ts()|0}function rs(){return 37654}function ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;c=+Db[a&3](b);g[e>>3]=c;c=+Mr(e);zb=d;return +c}function ts(){return 15852}function us(a){a=a|0;return 3}function vs(a){a=a|0;return zs()|0}function ws(){return 37658}function xs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+ys(c);Tb[a&3](b,c);return}function ys(a){a=+a;return +a}function zs(){return 15860}function As(a){a=a|0;return 1}function Bs(a){a=a|0;return Es()|0}function Cs(){return 37663}function Ds(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;a=Fb[a&1]()|0;c[d>>2]=a;a=Qr(d)|0;zb=b;return a|0}function Es(){return 15872}function Fs(a){a=a|0;return 2}function Gs(a){a=a|0;return Js()|0}function Hs(){return 37666}function Is(a,b){a=a|0;b=b|0;b=hs(b)|0;Sb[a&255](b);return}function Js(){return 15876}function Ks(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((d|0)==3)break;c=0;while(1){if((c|0)==4)break;g[b+(d<<5)+(c<<3)>>3]=+g[a+(d<<5)+(c<<3)>>3];c=c+1|0}d=d+1|0}return}function Ls(a){a=a|0;return 2}function Ms(a){a=a|0;return Qs()|0}function Ns(){return 40673}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zb;zb=zb+16|0;f=d+12|0;e=d;Ps(e,b);b=Gb[a&127](e)|0;c[f>>2]=b;b=Qr(f)|0;jO(e);zb=d;return b|0}function Ps(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,b+4|0,d);return}function Qs(){return 15884}function Rs(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Ss(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ts(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Ss(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(200)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];aP(h+16|0,0,184)|0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Us(a,b)}}else Us(a,b);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Vs(a){a=a|0;return 3}function Ws(a){a=a|0;return Zs()|0}function Xs(){return 40837}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;b=hs(b)|0;d=hs(d)|0;d=Ib[a&63](b,d)|0;c[f>>2]=d;d=Qr(f)|0;zb=e;return d|0}function Zs(){return 15892}function _s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=zb;zb=zb+96|0;n=r+80|0;m=r+72|0;l=r+64|0;k=r+56|0;j=r+48|0;i=r+40|0;q=r+32|0;p=r+24|0;o=r+16|0;h=r+8|0;s=r;e=r+88|0;f=r+84|0;g=c[a+232>>2]|0;c[e>>2]=0;c[s>>2]=d;Ue(0,1,40887,s);do if((Uf(d,40905,f)|0)>=0){c[o>>2]=b;Ue(0,1,40949,o);if((Vf(c[f>>2]|0,-1,b)|0)<0){Ue(0,3,40974,p);a=0;break}if((Sf(e,f)|0)<0){Ue(0,3,41010,q);a=0;break}Ue(0,1,41037,i);c[j>>2]=d;Ue(0,1,41046,j);s=tf(d,41063,0)|0;c[a+248+(b<<2)>>2]=s;if(!s){c[k>>2]=d;Ue(0,3,41068,k)}Ue(0,1,41037,l);if((b|0)==10)Ea(-1);if((fg(g,c[e>>2]|0)|0)<0){Ue(0,3,41101,m);a=0;break}else{Tf(e)|0;Ue(0,1,41126,n);a=1;break}}else{c[h>>2]=d;Ue(0,3,40911,h);a=0}while(0);zb=r;return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=zb;zb=zb+16|0;a=Se(a,c[d>>2]|0)|0;c[e>>2]=a;a:do if(!a){Ue(0,3,41206,f);jd(c[d>>2]|0)|0;a=0}else switch(c[a+108>>2]|0){case 0:{Fc(b,0)|0;a=1;break a}case 1:{Fc(b,2)|0;a=1;break a}default:{Fc(b,3)|0;a=1;break a}}while(0);zb=f;return a|0}function at(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=bt(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;ct(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;dt(a,d);et(d);zb=h;return}}function bt(a){a=a|0;return 536870911}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function et(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ft(a){a=a|0;return 3}function gt(a){a=a|0;return it()|0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;g=e+12|0;f=e;b=hs(b)|0;Ps(f,d);d=Ib[a&63](b,f)|0;c[g>>2]=d;d=Qr(g)|0;jO(f);zb=e;return d|0}function it(){return 15904}function jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;g=sd(c[d>>2]|0,a)|0;c[b>>2]=g;if((g|0)<0){c[e>>2]=a;Ue(0,3,41277,e);jd(c[d>>2]|0)|0;a=0}else a=1;zb=f;return a|0}function kt(a){a=a|0;return Jf(a)|0}function lt(a){a=a|0;return 2}function mt(a){a=a|0;return ot()|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;b=Gb[a&127](b)|0;c[e>>2]=b;b=Qr(e)|0;zb=d;return b|0}function ot(){return 15916}function pt(a){a=a|0;var b=0,d=0;b=a+216|0;d=c[b>>2]|0;if(d|0){gd(d)|0;wc(c[b>>2]|0)|0;c[b>>2]=0}b=a+228|0;if(c[b>>2]|0){rc(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){ne(b)|0;c[b>>2]=0}return}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+4|0;e=f;b=Tr(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];rt(a,d)|0;b=1}zb=f;return b|0}function rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;h=g+16|0;f=g+4|0;i=g;d=c[d>>2]|0;e=c[d>>2]|0;c[i>>2]=d;c[h>>2]=c[i>>2];st(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d|0){if(a[f+8>>0]|0)Xr(d+8|0);Pf(d,496)}zb=g;return e|0}function st(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;i=(m&l|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(l>>>0)|0;else j=m&e;f=(c[d>>2]|0)+(j<<2)|0;n=c[f>>2]|0;while(1){e=c[n>>2]|0;if((e|0)==(o|0))break;else n=e}k=d+8|0;if((n|0)!=(k|0)){e=c[n+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0))g=o;else h=14}else h=14;do if((h|0)==14){e=c[o>>2]|0;if(e|0){e=c[e+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0)){g=o;break}}c[f>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(!i){if(f>>>0>=l>>>0)f=(f>>>0)%(l>>>0)|0}else f=f&m;if((f|0)!=(j|0)){c[(c[d>>2]|0)+(f<<2)>>2]=n;e=c[o>>2]|0}}c[n>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=k;a[b+8>>0]=1;return}function tt(a){a=a|0;return 4}function ut(a){a=a|0;return xt()|0}function vt(){return 41348}function wt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;b=hs(b)|0;d=hs(d)|0;e=hs(e)|0;e=Jb[a&63](b,d,e)|0;c[g>>2]=e;e=Qr(g)|0;zb=f;return e|0}function xt(){return 2048}function yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+48|0;l=m+24|0;k=m+16|0;i=m+8|0;f=m;d=m+32|0;e=m+28|0;c[d>>2]=a;c[e>>2]=b;do if((Tr(55484,d)|0)!=0?(j=Ur(55484,d)|0,(zt(55504,e)|0)!=0):0){h=j+8|0;_O(h|0,Rs(55504,e)|0,184)|0;a=c[h>>2]|0;b=j+208|0;d=c[j+12>>2]|0;e=j+212|0;if(!((a|0)==(c[b>>2]|0)?(d|0)==(c[e>>2]|0):0)){c[f>>2]=a;c[f+4>>2]=d;Ue(0,2,41698,f);be(h,c[b>>2]|0,c[e>>2]|0,h)|0}pt(j);a=me(h,15)|0;d=j+192|0;c[d>>2]=a;if(!a){Ue(0,3,41745,i);a=-1;break}a=sc(a)|0;b=j+216|0;c[b>>2]=a;if(!a){Ue(0,3,41783,k);a=-1;break}Lc(a,c[j+472>>2]|0)|0;k=pc(h)|0;c[j+228>>2]=k;if(!k){Ue(0,3,41820,l);a=-1;break}else{fd(c[b>>2]|0,c[j+220>>2]|0)|0;le(c[d>>2]|0,+g[j+312>>3],+g[j+320>>3],j+344|0);a=kt(c[d>>2]|0)|0;c[j+232>>2]=a;a=0;break}}else a=-1;while(0);zb=m;return a|0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function At(a,b){a=a|0;b=b|0;b=Bt(b,c[a>>2]|0,c[a+4>>2]|0)|0;c[b>>2]=1;c[b+12>>2]=a;a=Ee(a+8|0)|0;c[b+16>>2]=a;Ge(a,0.0)|0;return b|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0;g=zb;zb=zb+16|0;e=FO(13732)|0;if(!e){Ue(0,3,41858,g);Ea(1)}c[e+20>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;c[e+24>>2]=25;c[e+28>>2]=11;c[e+32>>2]=11;c[e+36>>2]=10;f[e+40>>2]=.6000000238418579;f[e+44>>2]=2.0;c[e+13280>>2]=1;d=FO(B(d,b)|0)|0;c[e+13300>>2]=d;if(!d){Ue(0,3,41858,g+8|0);Ea(1)}else{c[e+13304>>2]=0;zb=g;return e|0}return 0}function Ct(a,b,d,e,h){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+48|0;x=D;y=D+40|0;z=D+32|0;a:do if((a|0)!=0&(b|0)!=0&(d|0)!=0&(e|0)!=0&(h|0)!=0){C=b+152|0;if((c[C>>2]|0)<1)i=-2;else{f[h>>2]=0.0;j=b+4|0;B=b+8|0;k=b+56|0;l=b+104|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;wd(B,(c[b>>2]|0)+(i*112|0)+12|0,a+48+(i*48|0)|0)|0;if((c[C>>2]|0)>1?(wd(k,(c[b>>2]|0)+(i*112|0)+12|0,a+528+(i*48|0)|0)|0,(c[C>>2]|0)>2):0)wd(l,(c[b>>2]|0)+(i*112|0)+12|0,a+1008+(i*48|0)|0)|0;i=i+1|0}if((c[a>>2]|0)==1){q=a+12|0;r=a+2672|0;n=a+7496|0;Dt(c[q>>2]|0,a+48|0,b,r,n);o=a+4|0;p=a+8|0}else{o=a+4|0;p=a+8|0;r=a+2672|0;n=a+7496|0;Et(c[o>>2]|0,c[p>>2]|0,a+48|0,b,r,n);q=a+12|0}s=a+36|0;t=a+13280|0;u=b+156|0;v=a+1488|0;w=a+40|0;A=0;i=r;j=0;while(1){if((j|0)>=(c[s>>2]|0))break;m=0;l=A;k=i;while(1){if((m|0)>=(c[t>>2]|0))break;if((j|0)==(c[s>>2]|0))break;i=pf(k,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){if((k|0)!=(r|0))break;i=pf(n,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){k=n;break}else k=n}E=k+(i*24|0)|0;c[x+(m<<2)>>2]=E;c[a+1488+(l<<3)>>2]=c[k+(i*24|0)+16>>2];c[a+1488+(l<<3)+4>>2]=c[k+(i*24|0)+20>>2];c[a+13284+(m*52|0)>>2]=a;c[a+13284+(m*52|0)+4>>2]=b;c[a+13284+(m*52|0)+8>>2]=E;c[a+13284+(m*52|0)+12>>2]=d;i=l+1|0;m=m+1|0;l=(i|0)==5?A:i;j=j+1|0}if(!m)break;l=0;i=A;while(1){if((l|0)==(m|0))break;E=a+13284+(l*52|0)+24|0;A=Lt(c[a+13284+(l*52|0)>>2]|0,c[a+13284+(l*52|0)+4>>2]|0,c[a+13284+(l*52|0)+8>>2]|0,c[a+13284+(l*52|0)+12>>2]|0,c[a+13284+(l*52|0)+16>>2]|0,a+13284+(l*52|0)+20|0,E)|0;c[a+13284+(l*52|0)+48>>2]=A;if((A|0)==0?+f[E>>2]>+f[w>>2]:0){if((c[a>>2]|0)==1){E=c[q>>2]|0;fe(E+104|0,+f[a+13284+(l*52|0)+28>>2],+f[a+13284+(l*52|0)+32>>2],y,z,c[E+176>>2]|0)|0;f[a+1872+(i<<3)>>2]=+g[y>>3];f[a+1872+(i<<3)+4>>2]=+g[z>>3]}else{c[a+1872+(i<<3)>>2]=c[a+13284+(l*52|0)+28>>2];c[a+1872+(i<<3)+4>>2]=c[a+13284+(l*52|0)+32>>2]}c[a+2192+(i*12|0)>>2]=c[a+13284+(l*52|0)+36>>2];c[a+2192+(i*12|0)+4>>2]=c[a+13284+(l*52|0)+40>>2];c[a+2192+(i*12|0)+8>>2]=c[a+13284+(l*52|0)+44>>2];E=c[x+(l<<2)>>2]|0;c[a+1488+(i<<3)>>2]=c[E+16>>2];c[a+1488+(i<<3)+4>>2]=c[E+20>>2];c[a+12320+(i*24|0)>>2]=c[E>>2];c[a+12320+(i*24|0)+4>>2]=c[E+4>>2];c[a+12320+(i*24|0)+8>>2]=c[E+8>>2];c[a+12320+(i*24|0)+12>>2]=0;i=i+1|0}l=l+1|0}A=i;i=k}i=0;while(1){if((i|0)>=(A|0))break;E=b+156+(i*24|0)|0;z=a+12320+(i*24|0)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];c[E+16>>2]=c[z+16>>2];c[E+20>>2]=c[z+20>>2];i=i+1|0}c[b+156+(A*24|0)+12>>2]=-1;i=(A|0)<3;if((c[a>>2]|0)==1){if(i){c[C>>2]=0;i=-3;break}j=a+16|0;k=a+1872|0;l=a+2192|0;F=+Ft(c[j>>2]|0,B,k,l,A,e,0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(Ge(c[j>>2]|0,.800000011920929)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.6000000238418579)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.4000000059604645)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,0.0)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}else{if(i){c[C>>2]=0;i=-3;break}j=a+1872|0;k=a+2192|0;F=+Gt(B,j,k,A,e,0,1.0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(F=+Gt(e,j,k,A,e,1,.800000011920929),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.6000000238418579),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.4000000059604645),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,0.0),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}c[C>>2]=(c[C>>2]|0)+1;i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+104+(i<<4)+(j<<2)>>2]=c[b+56+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+56+(i<<4)+(j<<2)>>2]=c[b+8+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3){i=0;break a}j=0;while(1){if((j|0)==4)break;c[b+8+(i<<4)+(j<<2)>>2]=c[e+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}}}else i=-1;while(0);zb=D;return i|0}function Dt(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;Q=zb;zb=zb+80|0;P=Q+48|0;I=Q;J=Q+76|0;L=Q+72|0;N=Q+64|0;O=Q+56|0;q=d+4|0;r=+(c[a>>2]|0);s=+(c[a+4>>2]|0);t=I+4|0;v=I+12|0;w=I+16|0;x=I+20|0;y=I+28|0;z=I+32|0;A=I+36|0;B=I+44|0;C=I+8|0;D=I+24|0;E=I+40|0;F=N+4|0;G=O+4|0;H=g+4812|0;k=0;l=0;p=0;a:while(1){if((p|0)>=(c[q>>2]|0)){i=29;break}i=0;while(1){if((i|0)==3)break;h=0;while(1){if((h|0)==4)break;c[I+(i<<4)+(h<<2)>>2]=c[b+(p*48|0)+(i<<4)+(h<<2)>>2];h=h+1|0}i=i+1|0}h=k;i=l;o=0;k=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0;while(1){if((o|0)>=(c[k+4>>2]|0))break;n=0;l=k;while(1){k=c[l>>2]|0;if((n|0)>=(c[k+(o*20|0)+4>>2]|0))break;l=c[k+(o*20|0)>>2]|0;l=(Df(a,I,+f[l+(n*20|0)+8>>2],+f[l+(n*20|0)+12>>2],J,L)|0)<0;j=+f[J>>2];do if((!(l|j<0.0)?(m=+f[L>>2],!(m>=s)&(!(j>=r)&!(m<0.0))):0)?(l=c[(c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0)+(o*20|0)>>2]|0,K=+f[l+(n*20|0)+8>>2],M=+f[l+(n*20|0)+12>>2],R=+f[v>>2]+(+f[I>>2]*K+ +f[t>>2]*M),j=+f[y>>2]+(K*+f[w>>2]+M*+f[x>>2]),S=+f[B>>2]+(K*+f[z>>2]+M*+f[A>>2]),m=+u(+(R*R+j*j+S*S)),!(+f[E>>2]*(S/m)+(+f[C>>2]*(R/m)+ +f[D>>2]*(j/m))>-.10000000149011612)):0){f[N>>2]=K;f[F>>2]=M;nf(a,I,N,O)|0;j=+f[G>>2];k=c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0;m=+f[k+(o*20|0)+12>>2];if(j<=m?j>=+f[k+(o*20|0)+16>>2]:0){if((i|0)==200){i=19;break a}c[e+(i*24|0)>>2]=p;c[e+(i*24|0)+4>>2]=o;c[e+(i*24|0)+8>>2]=n;c[e+(i*24|0)+16>>2]=c[J>>2];c[e+(i*24|0)+20>>2]=c[L>>2];c[e+(i*24|0)+12>>2]=0;i=i+1|0;break}if(j<=m*2.0?j>=+f[k+(o*20|0)+16>>2]*.5:0)if((h|0)==200){c[H>>2]=-1;h=200;break}else{c[g+(h*24|0)>>2]=p;c[g+(h*24|0)+4>>2]=o;c[g+(h*24|0)+8>>2]=n;c[g+(h*24|0)+16>>2]=c[J>>2];c[g+(h*24|0)+20>>2]=c[L>>2];c[g+(h*24|0)+12>>2]=0;h=h+1|0;break}}while(0);n=n+1|0;l=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0}o=o+1|0;k=l}k=h;l=i;p=p+1|0}if((i|0)==19){Ue(0,3,41890,P);h=e+4812|0}else if((i|0)==29){c[e+(l*24|0)+12>>2]=-1;h=g+(k*24|0)+12|0}c[h>>2]=-1;zb=Q;return} +function Et(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+80|0;A=B+48|0;w=B;x=B+76|0;y=B+72|0;z=B+64|0;u=B+56|0;v=e+4|0;t=+(a|0);p=+(b|0);q=z+4|0;r=u+4|0;s=h+4812|0;j=0;k=0;o=0;a:while(1){if((o|0)>=(c[v>>2]|0)){b=28;break}b=0;while(1){if((b|0)==3)break;a=0;while(1){if((a|0)==4)break;c[w+(b<<4)+(a<<2)>>2]=c[d+(o*48|0)+(b<<4)+(a<<2)>>2];a=a+1|0}b=b+1|0}a=j;b=k;n=0;j=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0;while(1){if((n|0)>=(c[j+4>>2]|0))break;m=0;k=j;while(1){j=c[k>>2]|0;if((m|0)>=(c[j+(n*20|0)+4>>2]|0))break;k=c[j+(n*20|0)>>2]|0;k=(Df(0,w,+f[k+(m*20|0)+8>>2],+f[k+(m*20|0)+12>>2],x,y)|0)<0;i=+f[x>>2];do if(!(k|i<0.0)?(l=+f[y>>2],!(l>=p)&(!(i>=t)&!(l<0.0))):0){j=c[(c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(n*20|0)>>2]|0;c[z>>2]=c[j+(m*20|0)+8>>2];c[q>>2]=c[j+(m*20|0)+12>>2];nf(0,w,z,u)|0;i=+f[r>>2];j=c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0;l=+f[j+(n*20|0)+12>>2];if(i<=l?i>=+f[j+(n*20|0)+16>>2]:0){if((b|0)==200){b=18;break a}c[g+(b*24|0)>>2]=o;c[g+(b*24|0)+4>>2]=n;c[g+(b*24|0)+8>>2]=m;c[g+(b*24|0)+16>>2]=c[x>>2];c[g+(b*24|0)+20>>2]=c[y>>2];c[g+(b*24|0)+12>>2]=0;b=b+1|0;break}if(i<=l*2.0?i>=+f[j+(n*20|0)+16>>2]*.5:0)if((a|0)==200){c[s>>2]=-1;a=200;break}else{c[h+(a*24|0)>>2]=o;c[h+(a*24|0)+4>>2]=n;c[h+(a*24|0)+8>>2]=m;c[h+(a*24|0)+16>>2]=c[x>>2];c[h+(a*24|0)+20>>2]=c[y>>2];c[h+(a*24|0)+12>>2]=0;a=a+1|0;break}}while(0);m=m+1|0;k=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0}n=n+1|0;j=k}j=a;k=b;o=o+1|0}if((b|0)==18){Ue(0,3,41890,A);a=g+4812|0}else if((b|0)==28){c[g+(k*24|0)+12>>2]=-1;a=h+(j*24|0)+12|0}c[a>>2]=-1;zb=B;return}function Ft(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;w=zb;zb=zb+224|0;s=w+212|0;t=w+96|0;v=w;u=w+192|0;l=FO(h<<4)|0;c[s>>2]=l;if(!l){Ue(0,3,41858,w+200|0);Ea(1)}p=FO(h*24|0)|0;q=s+4|0;c[q>>2]=p;if(!p){Ue(0,3,41858,w+208|0);Ea(1)}k=0;o=0.0;n=0.0;m=0.0;while(1){if((k|0)>=(h|0))break;r=m+ +f[e+(k*12|0)>>2];x=n+ +f[e+(k*12|0)+4>>2];y=o+ +f[e+(k*12|0)+8>>2];k=k+1|0;o=y;n=x;m=r}y=+(h|0);r=m/y;n=n/y;m=o/y;k=0;while(1){if((k|0)>=(h|0))break;g[l+(k<<4)>>3]=+f[d+(k<<3)>>2];g[l+(k<<4)+8>>3]=+f[d+(k<<3)+4>>2];g[p+(k*24|0)>>3]=+f[e+(k*12|0)>>2]-r;g[p+(k*24|0)+8>>3]=+f[e+(k*12|0)+4>>2]-n;g[p+(k*24|0)+16>>3]=+f[e+(k*12|0)+8>>2]-m;k=k+1|0}c[s+8>>2]=h;k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;g[t+(k<<5)+(l<<3)>>3]=+f[b+(k<<4)+(l<<2)>>2];l=l+1|0}k=k+1|0}g[t+24>>3]=+f[b+12>>2]+(r*+f[b>>2]+n*+f[b+4>>2]+m*+f[b+8>>2]);g[t+56>>3]=+f[b+28>>2]+(r*+f[b+16>>2]+n*+f[b+20>>2]+m*+f[b+24>>2]);g[t+88>>3]=+f[b+44>>2]+(r*+f[b+32>>2]+n*+f[b+36>>2]+m*+f[b+40>>2]);if(!j){if((He(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8}else if((Je(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8;GO(c[s>>2]|0);GO(c[q>>2]|0);k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;f[i+(k<<4)+(l<<2)>>2]=+g[v+(k<<5)+(l<<3)>>3];l=l+1|0}k=k+1|0}x=n;y=m;f[i+12>>2]=+g[v+24>>3]-+g[v>>3]*r-+g[v+8>>3]*x-+g[v+16>>3]*y;f[i+28>>2]=+g[v+56>>3]-+g[v+32>>3]*r-+g[v+40>>3]*x-+g[v+48>>3]*y;f[i+44>>2]=+g[v+88>>3]-+g[v+64>>3]*r-+g[v+72>>3]*x-+g[v+80>>3]*y;zb=w;return +(+g[u>>3])}function Gt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;if(!f)g=+Ht(a,b,c,d,e);else g=+It(a,b,c,d,e,g);return +g}function Ht(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0;H=zb;zb=zb+48|0;i=H+40|0;h=H+32|0;F=H;do if((d|0)>=4?(j=a+44|0,!(+f[j>>2]==0.0)):0){G=FO(d<<6)|0;if(!G){Ue(0,3,41875,h);g=-1.0;break}E=FO(d<<3)|0;if(!E){Ue(0,3,41875,i);GO(G);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[j>>2];i=i+1|0}h=h+1|0}a=e+4|0;j=e+12|0;q=e+16|0;r=e+20|0;s=e+28|0;t=e+32|0;u=e+36|0;v=+(d|0);w=d<<1;x=F+4|0;y=F+8|0;z=F+12|0;A=F+16|0;B=F+20|0;C=F+24|0;D=F+28|0;p=0.0;i=0;a:while(1){g=0.0;h=0;while(1){if((h|0)>=(d|0))break;k=+f[c+(h*12|0)>>2];l=+f[c+(h*12|0)+4>>2];m=+f[j>>2]+(+f[e>>2]*k+ +f[a>>2]*l);n=+f[s>>2]+(k*+f[q>>2]+l*+f[r>>2]);o=k*+f[t>>2]+l*+f[u>>2]+1.0;if(o==0.0){h=17;break a}L=o*o;J=+f[b+(h<<3)>>2]-m/o;I=+f[b+(h<<3)+4>>2]-n/o;K=h<<1;f[E+(K<<2)>>2]=J;f[E+((K|1)<<2)>>2]=I;N=k/o;K=h<<4;f[G+(K<<2)>>2]=N;M=l/o;f[G+((K|1)<<2)>>2]=M;o=1.0/o;f[G+((K|2)<<2)>>2]=o;f[G+((K|3)<<2)>>2]=0.0;f[G+((K|4)<<2)>>2]=0.0;f[G+((K|5)<<2)>>2]=0.0;f[G+((K|6)<<2)>>2]=-(k*m)/L;f[G+((K|7)<<2)>>2]=-(l*m)/L;f[G+((K|8)<<2)>>2]=0.0;f[G+((K|9)<<2)>>2]=0.0;f[G+((K|10)<<2)>>2]=0.0;f[G+((K|11)<<2)>>2]=N;f[G+((K|12)<<2)>>2]=M;f[G+((K|13)<<2)>>2]=o;f[G+((K|14)<<2)>>2]=-(k*n)/L;f[G+((K|15)<<2)>>2]=-(l*n)/L;g=g+(J*J+I*I);h=h+1|0}g=g/v;if(g<.10000000149011612){h=26;break}if((i|0)!=0&g<4.0){if((i|0)==10|g/p>.9900000095367432){h=26;break}}else if((i|0)==10){h=26;break}if((Kt(F,E,G,w)|0)<0){h=24;break}f[e>>2]=+f[F>>2]+ +f[e>>2];f[a>>2]=+f[x>>2]+ +f[a>>2];f[j>>2]=+f[y>>2]+ +f[j>>2];f[q>>2]=+f[z>>2]+ +f[q>>2];f[r>>2]=+f[A>>2]+ +f[r>>2];f[s>>2]=+f[B>>2]+ +f[s>>2];f[t>>2]=+f[C>>2]+ +f[t>>2];f[u>>2]=+f[D>>2]+ +f[u>>2];p=g;i=i+1|0}if((h|0)==17){GO(G);GO(E);g=1.0e8;break}else if((h|0)==24){GO(G);GO(E);g=1.0e8;break}else if((h|0)==26){GO(G);GO(E);break}}else g=1.0e8;while(0);zb=H;return +g}function It(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0;J=zb;zb=zb+64|0;k=J+56|0;j=J+48|0;i=J+40|0;h=J+32|0;I=J;do if((d|0)>=4?(l=a+44|0,!(+f[l>>2]==0.0)):0){G=+(d|0);m=~~(G*g)+-1|0;m=(m|0)>4?m:4;H=FO(d<<6)|0;if(!H){Ue(0,3,41875,h);g=-1.0;break}F=FO(d<<3)|0;if(!F){Ue(0,3,41875,i);GO(H);g=-1.0;break}h=d<<2;E=FO(h)|0;if(!E){Ue(0,3,41875,j);GO(H);GO(F);g=-1.0;break}D=FO(h)|0;if(!D){Ue(0,3,41875,k);GO(H);GO(F);GO(E);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[l>>2];i=i+1|0}h=h+1|0}w=e+4|0;x=e+12|0;y=e+16|0;z=e+20|0;A=e+28|0;B=e+32|0;C=e+36|0;k=D+(m<<2)|0;a=I+4|0;l=I+8|0;m=I+12|0;s=I+16|0;t=I+20|0;u=I+24|0;v=I+28|0;r=0.0;j=0;a:while(1){h=0;while(1){if((h|0)>=(d|0))break;g=+f[c+(h*12|0)>>2];n=+f[c+(h*12|0)+4>>2];o=+f[x>>2]+(+f[e>>2]*g+ +f[w>>2]*n);p=+f[A>>2]+(g*+f[y>>2]+n*+f[z>>2]);q=g*+f[B>>2]+n*+f[C>>2]+1.0;if(q==0.0){h=21;break a}K=q*q;L=+f[b+(h<<3)>>2]-o/q;M=+f[b+(h<<3)+4>>2]-p/q;i=h<<1;f[F+(i<<2)>>2]=L;f[F+((i|1)<<2)>>2]=M;M=L*L+M*M;f[D+(h<<2)>>2]=M;f[E+(h<<2)>>2]=M;M=g/q;i=h<<4;f[H+(i<<2)>>2]=M;L=n/q;f[H+((i|1)<<2)>>2]=L;q=1.0/q;f[H+((i|2)<<2)>>2]=q;f[H+((i|3)<<2)>>2]=0.0;f[H+((i|4)<<2)>>2]=0.0;f[H+((i|5)<<2)>>2]=0.0;f[H+((i|6)<<2)>>2]=-(g*o)/K;f[H+((i|7)<<2)>>2]=-(n*o)/K;f[H+((i|8)<<2)>>2]=0.0;f[H+((i|9)<<2)>>2]=0.0;f[H+((i|10)<<2)>>2]=0.0;f[H+((i|11)<<2)>>2]=M;f[H+((i|12)<<2)>>2]=L;f[H+((i|13)<<2)>>2]=q;f[H+((i|14)<<2)>>2]=-(g*p)/K;f[H+((i|15)<<2)>>2]=-(n*p)/K;h=h+1|0}oy(D,d,4,32);p=+f[k>>2]*4.0;p=p<16.0?16.0:p;o=p/6.0;n=0.0;h=0;while(1){if((h|0)==(d|0))break;g=+f[D+(h<<2)>>2];if(g>p)g=o;else{g=1.0-g/p;g=o*(1.0-g*(g*g))}n=n+g;h=h+1|0}g=n/G;if(g<.10000000149011612){h=42;break}if((j|0)!=0&g<4.0){if((j|0)==10|g/r>.9900000095367432){h=42;break}}else if((j|0)==10){h=42;break}h=0;i=0;while(1){if((i|0)==(d|0))break;n=+f[E+(i<<2)>>2];if(n<=p){M=1.0-n/p;M=M*M;O=i<<4;N=h<<3;f[H+(N<<2)>>2]=M*+f[H+(O<<2)>>2];f[H+((N|1)<<2)>>2]=M*+f[H+((O|1)<<2)>>2];f[H+((N|2)<<2)>>2]=M*+f[H+((O|2)<<2)>>2];f[H+((N|3)<<2)>>2]=M*+f[H+((O|3)<<2)>>2];f[H+((N|4)<<2)>>2]=M*+f[H+((O|4)<<2)>>2];f[H+((N|5)<<2)>>2]=M*+f[H+((O|5)<<2)>>2];f[H+((N|6)<<2)>>2]=M*+f[H+((O|6)<<2)>>2];f[H+((N|7)<<2)>>2]=M*+f[H+((O|7)<<2)>>2];f[H+(N+8<<2)>>2]=M*+f[H+((O|8)<<2)>>2];f[H+(N+9<<2)>>2]=M*+f[H+((O|9)<<2)>>2];f[H+(N+10<<2)>>2]=M*+f[H+((O|10)<<2)>>2];f[H+(N+11<<2)>>2]=M*+f[H+((O|11)<<2)>>2];f[H+(N+12<<2)>>2]=M*+f[H+((O|12)<<2)>>2];f[H+(N+13<<2)>>2]=M*+f[H+((O|13)<<2)>>2];f[H+(N+14<<2)>>2]=M*+f[H+((O|14)<<2)>>2];f[H+(N+15<<2)>>2]=M*+f[H+((O|15)<<2)>>2];N=i<<1;f[F+(h<<2)>>2]=M*+f[F+(N<<2)>>2];f[F+(h+1<<2)>>2]=M*+f[F+((N|1)<<2)>>2];h=h+2|0}i=i+1|0}if((h|0)<6){h=38;break}if((Kt(I,F,H,h)|0)<0){h=40;break}f[e>>2]=+f[I>>2]+ +f[e>>2];f[w>>2]=+f[a>>2]+ +f[w>>2];f[x>>2]=+f[l>>2]+ +f[x>>2];f[y>>2]=+f[m>>2]+ +f[y>>2];f[z>>2]=+f[s>>2]+ +f[z>>2];f[A>>2]=+f[t>>2]+ +f[A>>2];f[B>>2]=+f[u>>2]+ +f[B>>2];f[C>>2]=+f[v>>2]+ +f[C>>2];r=g;j=j+1|0}if((h|0)==21){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==38){GO(H);GO(F);GO(E);GO(D);g=-1.0;break}else if((h|0)==40){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==42){GO(H);GO(F);GO(E);GO(D);break}}else g=1.0e8;while(0);zb=J;return +g}function Jt(a,b){a=a|0;b=b|0;var c=0.0;c=+f[a>>2]-+f[b>>2];return (c<0.0?-1:c>0.0&1)|0}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=8;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=8;c[f>>2]=d;e=Jd(f)|0;if(!e)a=-1;else{d=Hd(e,f)|0;if(!d)a=-1;else{b=Hd(e,g)|0;if(!b)a=-1;else{if((Zd(d)|0)<0)a=-1;else{Od(h,d,b)|0;a=0}Md(b)|0}Md(d)|0}Md(e)|0}zb=i;return a|0}function Lt(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+32|0;j=s;q=s+28|0;r=s+24|0;o=c[d>>2]|0;p=c[d+4>>2]|0;n=c[d+8>>2]|0;d=c[h>>2]|0;if(!d){d=Af(c[a+28>>2]|0,c[a+32>>2]|0)|0;c[h>>2]=d}k=a+12|0;m=a+48+(o*48|0)|0;l=c[b>>2]|0;if((Bf(c[k>>2]|0,m,c[l+(o*112|0)>>2]|0,(c[c[l+(o*112|0)+4>>2]>>2]|0)+(p*20|0)|0,n,d)|0)>=0?(l=c[h>>2]|0,d=c[l+28>>2]|0,t=+(B(d,d)|0),!(+(B((c[l+16>>2]|0)+1+(c[l+20>>2]|0)|0,(c[l+8>>2]|0)+1+(c[l+12>>2]|0)|0)|0)*5.0*5.0>t)):0){l=c[b+152>>2]|0;do if((l|0)!=1){d=c[k>>2]|0;k=a+528+(o*48|0)|0;if((l|0)==2){Cf(d,m,k,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}else{Cf(d,m,k,a+1008+(o*48|0)|0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}}else Cf(c[k>>2]|0,m,0,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);while(0);m=c[a+24>>2]|0;if((wf(e,g,c[a+4>>2]|0,c[a+8>>2]|0,c[a+20>>2]|0,c[h>>2]|0,m,m,j,q,r,i)|0)>=0){f[i+4>>2]=+(c[q>>2]|0);f[i+8>>2]=+(c[r>>2]|0);r=c[b>>2]|0;j=c[(c[c[r+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0;q=j+(n*20|0)+8|0;j=j+(n*20|0)+12|0;f[i+12>>2]=+f[r+(o*112|0)+24>>2]+(+f[r+(o*112|0)+12>>2]*+f[q>>2]+ +f[r+(o*112|0)+16>>2]*+f[j>>2]);f[i+16>>2]=+f[r+(o*112|0)+40>>2]+(+f[r+(o*112|0)+28>>2]*+f[q>>2]+ +f[r+(o*112|0)+32>>2]*+f[j>>2]);f[i+20>>2]=+f[r+(o*112|0)+56>>2]+(+f[r+(o*112|0)+44>>2]*+f[q>>2]+ +f[r+(o*112|0)+48>>2]*+f[j>>2]);j=0}else j=-1}else j=-1;zb=s;return j|0}function Mt(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[a+128>>2]=0;return a|0}function Nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+24|0;d=c[e>>2]|0;if(!d){f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,0,40)|0;c[e>>2]=d;a=Jb[c[c[f>>2]>>2]&63](a,0,4096)|0;c[d+32>>2]=a;d=c[e>>2]|0}c[d+8>>2]=115;c[d+12>>2]=83;c[d+16>>2]=47;c[d+20>>2]=33;c[d+24>>2]=116;c[d+28>>2]=b;c[d+4>>2]=0;c[d>>2]=0;return}function Ot(a){a=a|0;c[(c[a+24>>2]|0)+36>>2]=1;return}function Pt(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+24>>2]|0;f=e+32|0;d=gA(c[f>>2]|0,1,4096,c[e+28>>2]|0)|0;g=e+36|0;if(d|0){b=d;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}if(!(c[g>>2]|0))d=b;else{d=c[b>>2]|0;c[d+20>>2]=43;Sb[c[d>>2]&255](b);d=b}b=c[b>>2]|0;c[b+20>>2]=123;Ub[c[b+4>>2]&63](d,-1);a[c[f>>2]>>0]=-1;a[(c[f>>2]|0)+1>>0]=-39;b=2;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+24>>2]|0;if((b|0)<=0)return;g=f+4|0;d=c[g>>2]|0;if((d|0)<(b|0)){e=f+12|0;do{b=b-d|0;Gb[c[e>>2]&127](a)|0;d=c[g>>2]|0}while((b|0)>(d|0))}c[f>>2]=(c[f>>2]|0)+b;c[g>>2]=d-b;return}function Rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+440|0;g=c[k>>2]|0;h=c[a>>2]|0;c[h+20>>2]=124;c[h+24>>2]=g;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;d=b+6&7|208;b=g;a:while(1){e=(b|0)<192;f=(b&-8|0)!=208|(b|0)==(h|0)|(b|0)==(i|0);g=(b|0)==(j|0)|(b|0)==(d|0)?2:1;b:while(1){l=e?2:f?3:g;m=c[a>>2]|0;c[m+20>>2]=99;c[m+24>>2]=b;c[(c[a>>2]|0)+28>>2]=l;Ub[c[(c[a>>2]|0)+4>>2]&63](a,4);switch(l&3){case 1:{d=4;break a}case 3:{b=1;d=7;break a}case 2:break b;default:{}}}if(!(Tt(a)|0)){b=0;d=7;break}b=c[k>>2]|0}if((d|0)==4){c[k>>2]=0;m=1;return m|0}else if((d|0)==7)return b|0;return 0}function St(a){a=a|0;return}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+464|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break}d=c[k>>2]|0;e=c[j>>2]|0}d=d+-1|0;f=e+1|0;if((a[e>>0]|0)==-1)e=f;else{e=f;do{h=(c[l>>2]|0)+24|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1)}do{if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;g=a[f>>0]|0}while(g<<24>>24==-1);f=(c[l>>2]|0)+24|0;h=c[f>>2]|0;if(g<<24>>24){f=18;break}c[f>>2]=h+2;c[j>>2]=e;c[k>>2]=d}if((f|0)==18){f=g&255;if(h|0){i=c[b>>2]|0;c[i+20>>2]=119;c[i+24>>2]=h;c[(c[b>>2]|0)+28>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);c[(c[l>>2]|0)+24>>2]=0}c[b+440>>2]=f;c[j>>2]=e;c[k>>2]=d;l=1;return l|0}else if((f|0)==21)return d|0;return 0}function Ut(a){a=a|0;var b=0,d=0;d=Jb[c[c[a+4>>2]>>2]&63](a,0,172)|0;b=a+464|0;c[b>>2]=d;c[d>>2]=117;c[d+4>>2]=84;c[d+8>>2]=85;c[d+28>>2]=86;c[d+96>>2]=0;c[d+100>>2]=0;c[d+36>>2]=86;c[d+104>>2]=0;c[d+40>>2]=86;c[d+108>>2]=0;c[d+44>>2]=86;c[d+112>>2]=0;c[d+48>>2]=86;c[d+116>>2]=0;c[d+52>>2]=86;c[d+120>>2]=0;c[d+56>>2]=86;c[d+124>>2]=0;c[d+60>>2]=86;c[d+128>>2]=0;c[d+64>>2]=86;c[d+132>>2]=0;c[d+68>>2]=86;c[d+136>>2]=0;c[d+72>>2]=86;c[d+140>>2]=0;c[d+76>>2]=86;c[d+144>>2]=0;c[d+80>>2]=86;c[d+148>>2]=0;c[d+84>>2]=86;c[d+152>>2]=0;c[d+156>>2]=0;c[d+92>>2]=86;c[d+160>>2]=0;c[d+32>>2]=87;c[d+88>>2]=87;b=c[b>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Vt(a){a=a|0;var b=0;b=c[a+464>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Wt(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;Pa=zb;zb=zb+256|0;ga=Pa;Na=f+440|0;Oa=f+464|0;oa=f+24|0;ua=f+232|0;va=f+248|0;wa=f+264|0;pa=f+280|0;qa=f+40|0;ra=f+304|0;sa=f+308|0;ta=f+284|0;ha=f+288|0;ia=f+289|0;ja=f+290|0;ka=f+292|0;la=f+294|0;ma=f+296|0;na=f+300|0;Ja=f+36|0;Ka=f+216|0;g=c[Na>>2]|0;a:while(1){do if(!g){if(c[(c[Oa>>2]|0)+12>>2]|0){if(!(Tt(f)|0)){xa=0;Aa=350;break a}g=c[Na>>2]|0;break}m=c[oa>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0}k=c[m>>2]|0;g=g+-1|0;h=k+1|0;k=a[k>>0]|0;l=k&255;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[n>>2]|0;h=c[m>>2]|0}else j=g;V=a[h>>0]|0;g=V&255;if(k<<24>>24!=-1|V<<24>>24!=-40){V=c[f>>2]|0;c[V+20>>2]=55;c[V+24>>2]=l;c[(c[f>>2]|0)+28>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}c[Na>>2]=g;c[m>>2]=h+1;c[n>>2]=j+-1}while(0);do switch(g|0){case 218:{Aa=25;break a}case 217:{Aa=75;break a}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Ub[c[g+4>>2]&63](f,1);g=(c[Oa>>2]|0)+12|0;if(c[g>>2]|0){g=c[f>>2]|0;c[g+20>>2]=64;Sb[c[g>>2]&255](f);g=(c[Oa>>2]|0)+12|0}h=ua;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));h=va;j=h+16|0;do{a[h>>0]=1;h=h+1|0}while((h|0)<(j|0));h=wa;j=h+16|0;do{a[h>>0]=5;h=h+1|0}while((h|0)<(j|0));c[pa>>2]=0;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;c[ta>>2]=0;a[ha>>0]=1;a[ia>>0]=1;a[ja>>0]=0;b[ka>>1]=1;b[la>>1]=1;c[ma>>2]=0;a[na>>0]=0;c[g>>2]=1;break}case 192:{if(!($t(f,1,0,0)|0)){xa=0;Aa=350;break a}break}case 193:{if(!($t(f,0,0,0)|0)){xa=0;Aa=350;break a}break}case 194:{if(!($t(f,0,1,0)|0)){xa=0;Aa=350;break a}break}case 201:{if(!($t(f,0,0,1)|0)){xa=0;Aa=350;break a}break}case 202:{if(!($t(f,0,1,1)|0)){xa=0;Aa=350;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{V=c[f>>2]|0;c[V+20>>2]=63;c[V+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f);break}case 204:{p=c[oa>>2]|0;q=p+4|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0}j=c[p>>2]|0;g=g+-1|0;h=j+1|0;j=d[j>>0]<<8;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0;h=c[p>>2]|0}V=j|d[h>>0];j=V+-2|0;k=g+-1|0;g=h+1|0;if(V>>>0>2){o=p+12|0;n=j;h=k;while(1){if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;g=c[p>>2]|0}h=h+-1|0;j=g+1|0;l=a[g>>0]|0;m=l&255;if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;k=c[p>>2]|0}else k=j;g=a[k>>0]|0;j=g&255;V=c[f>>2]|0;c[V+20>>2]=81;c[V+24>>2]=m;c[(c[f>>2]|0)+28>>2]=j;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if((l&255)<=31)if((l&255)<=15){U=j&15;a[f+232+m>>0]=U;V=(g&255)>>>4;a[f+248+m>>0]=V;if(U>>>0>(V&255)>>>0){V=c[f>>2]|0;c[V+20>>2]=30;c[V+24>>2]=j;Sb[c[c[f>>2]>>2]&255](f)}}else Aa=93;else{Aa=c[f>>2]|0;c[Aa+20>>2]=29;c[Aa+24>>2]=m;Sb[c[c[f>>2]>>2]&255](f);Aa=93}if((Aa|0)==93){Aa=0;a[m+-16+(f+264)>>0]=g}j=n+-2|0;h=h+-1|0;g=k+1|0;if((n|0)>2)n=j;else break}}else h=k;if(j|0){V=c[f>>2]|0;c[V+20>>2]=12;Sb[c[V>>2]&255](f)}c[p>>2]=g;c[q>>2]=h;break}case 196:{U=c[oa>>2]|0;V=U+4|0;g=c[V>>2]|0;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0}k=c[U>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0;j=c[U>>2]|0}else j=h;h=g+-1|0;g=j+1|0;T=k|d[j>>0];j=T+-2|0;if(T>>>0>18){T=U+12|0;do{if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}S=d[g>>0]|0;R=c[f>>2]|0;c[R+20>>2]=82;c[R+24>>2]=S;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}R=a[g>>0]|0;N=R&255;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}Q=a[g>>0]|0;L=Q&255;k=L+N|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}P=a[g>>0]|0;K=P&255;k=k+K|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}O=a[g>>0]|0;I=O&255;k=k+I|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}M=a[g>>0]|0;G=M&255;k=k+G|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}J=a[g>>0]|0;E=J&255;k=k+E|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}H=a[g>>0]|0;C=H&255;k=k+C|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}F=a[g>>0]|0;A=F&255;k=k+A|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}D=a[g>>0]|0;y=D&255;k=k+y|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}B=a[g>>0]|0;w=B&255;k=k+w|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}z=a[g>>0]|0;u=z&255;k=k+u|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}x=a[g>>0]|0;s=x&255;k=k+s|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}v=a[g>>0]|0;q=v&255;k=k+q|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}t=a[g>>0]|0;o=t&255;k=k+o|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}r=a[g>>0]|0;l=r&255;k=k+l|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}p=a[g>>0]|0;Qa=p&255;n=k+Qa|0;h=h+-1|0;g=g+1|0;m=j+-17|0;k=c[f>>2]|0;c[k+24>>2]=N;c[k+28>>2]=L;c[k+32>>2]=K;c[k+36>>2]=I;c[k+40>>2]=G;c[k+44>>2]=E;c[k+48>>2]=C;c[k+52>>2]=A;c[k+20>>2]=88;Ub[c[k+4>>2]&63](f,2);N=c[f>>2]|0;c[N+24>>2]=y;c[N+28>>2]=w;c[N+32>>2]=u;c[N+36>>2]=s;c[N+40>>2]=q;c[N+44>>2]=o;c[N+48>>2]=l;c[N+52>>2]=Qa;c[N+20>>2]=88;Ub[c[N+4>>2]&63](f,2);if(n>>>0>256|(m|0)<(n|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=9;Sb[c[Qa>>2]&255](f)}aP(ga|0,0,256)|0;if(!n)j=0;else{k=0;while(1){if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}h=h+-1|0;j=g+1|0;a[ga+k>>0]=a[g>>0]|0;k=k+1|0;if(k>>>0>=n>>>0){g=j;j=n;break}else g=j}}j=m-j|0;Qa=(S&16|0)==0;l=S+-16|0;k=Qa?S:l;l=Qa?f+180+(S<<2)|0:f+196+(l<<2)|0;if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=31;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=c[l>>2]|0;if(!k){k=au(f)|0;c[l>>2]=k}a[k>>0]=0;a[k+1>>0]=R;a[k+2>>0]=Q;a[k+3>>0]=P;a[k+4>>0]=O;a[k+5>>0]=M;a[k+6>>0]=J;a[k+7>>0]=H;a[k+8>>0]=F;a[k+9>>0]=D;a[k+10>>0]=B;a[k+11>>0]=z;a[k+12>>0]=x;a[k+13>>0]=v;a[k+14>>0]=t;a[k+15>>0]=r;a[k+16>>0]=p;_O((c[l>>2]|0)+17|0,ga|0,256)|0}while((j|0)>16)}if(j|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[U>>2]=g;c[V>>2]=h;break}case 219:{q=c[oa>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0}l=c[q>>2]|0;g=g+-1|0;h=l+1|0;l=d[l>>0]<<8;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;k=c[q>>2]|0}else k=h;j=g+-1|0;h=k+1|0;Qa=l|d[k>>0];g=Qa+-2|0;if(Qa>>>0>2){p=q+12|0;while(1){o=g+-1|0;if(!j){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[r>>2]|0;h=c[q>>2]|0}k=d[h>>0]|0;m=k>>>4;k=k&15;Qa=c[f>>2]|0;c[Qa+20>>2]=83;c[Qa+24>>2]=k;c[(c[f>>2]|0)+28>>2]=m;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=32;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=f+164+(k<<2)|0;l=c[k>>2]|0;if(!l){l=Mt(f)|0;c[k>>2]=l}n=(m|0)!=0;if(n)if((g|0)<129){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o>>1;Aa=196}else Aa=203;else if((g|0)<65){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o;Aa=196}else Aa=203;b:do if((Aa|0)==196){Aa=0;switch(ba|0){case 4:{g=3280;break}case 9:{g=3168;break}case 16:{g=3040;break}case 25:{g=2864;break}case 36:{g=2656;break}case 49:{g=2384;break}default:{j=j+-1|0;g=h+1|0;if((ba|0)>0){Z=2064;_=ba;$=g;aa=j;Aa=205;break b}else{Y=ba;X=j;W=g;break b}}}Z=g;_=ba;$=h+1|0;aa=j+-1|0;Aa=205}else if((Aa|0)==203){Z=2064;_=64;$=h+1|0;aa=j+-1|0;Aa=205}while(0);c:do if((Aa|0)==205){Aa=0;if(!n){j=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}b[l+(c[Z+(j<<2)>>2]<<1)>>1]=d[h>>0]|0;j=j+1|0;g=g+-1|0;h=h+1|0;if((j|0)>=(_|0)){Y=_;X=g;W=h;break c}}}m=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}else h=j;b[l+(c[Z+(m<<2)>>2]<<1)>>1]=k|d[h>>0];m=m+1|0;g=g+-1|0;h=h+1|0;if((m|0)>=(_|0)){Y=_;X=g;W=h;break}}}while(0);h=c[f>>2]|0;d:do if((c[h+104>>2]|0)>1){g=0;while(1){c[h+24>>2]=e[l+(g<<1)>>1];c[h+28>>2]=e[l+((g|1)<<1)>>1];c[h+32>>2]=e[l+((g|2)<<1)>>1];c[h+36>>2]=e[l+((g|3)<<1)>>1];c[h+40>>2]=e[l+((g|4)<<1)>>1];c[h+44>>2]=e[l+((g|5)<<1)>>1];c[h+48>>2]=e[l+((g|6)<<1)>>1];c[h+52>>2]=e[l+((g|7)<<1)>>1];c[h+20>>2]=95;Ub[c[h+4>>2]&63](f,2);g=g+8|0;if(g>>>0>=64)break d;h=c[f>>2]|0}}while(0);g=o-Y+(n?0-Y|0:0)|0;if((g|0)>0){h=W;j=X}else{j=X;h=W;break}}}if(g|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[q>>2]=h;c[r>>2]=j;break}case 221:{l=c[oa>>2]|0;m=l+4|0;g=c[m>>2]|0;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0}k=c[l>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;j=c[l>>2]|0}else j=h;g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=4){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;h=c[l>>2]|0}j=g+-1|0;g=h+1|0;k=d[h>>0]<<8;if(!j){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[m>>2]|0;g=c[l>>2]|0}else h=j;Qa=k|d[g>>0];V=c[f>>2]|0;c[V+20>>2]=84;c[V+24>>2]=Qa;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[pa>>2]=Qa;c[l>>2]=g+1;c[m>>2]=h+-1;break}case 248:{m=c[oa>>2]|0;h=c[m>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46637,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if((c[Ja>>2]|0)>=3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=24){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)!=13){Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=c[Na>>2];Sb[c[c[f>>2]>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)==255){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)==3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;k=c[Ka>>2]|0;if((c[k+88>>2]|0)==(d[j>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0;l=c[Ka>>2]|0}else l=k;g=g+-1|0;j=h+1|0;if((c[l>>2]|0)==(d[h>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;k=c[m>>2]|0;h=c[Ka>>2]|0}else{k=j;h=l}g=g+-1|0;j=k+1|0;if((c[h+176>>2]|0)!=(d[k>>0]|0)){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((a[j>>0]|0)!=-128){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(!(k|d[j>>0])){ea=g;fa=h}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=h;Aa=335}while(0);if((Aa|0)==335){Aa=0;ea=c[f>>2]|0;c[ea+20>>2]=28;Sb[c[ea>>2]&255](f);ea=ca;fa=da}c[ra>>2]=1;c[m>>2]=fa;c[n>>2]=ea;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(Gb[c[(c[Oa>>2]|0)+32+(g+-224<<2)>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 254:{if(!(Gb[c[(c[Oa>>2]|0)+28>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Qa=c[f>>2]|0;c[Qa+20>>2]=94;c[Qa+24>>2]=g;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);break}case 220:{k=c[oa>>2]|0;l=k+4|0;g=c[l>>2]|0;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0}h=c[k>>2]|0;g=g+-1|0;j=h+1|0;h=d[h>>0]<<8;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0;j=c[k>>2]|0}Qa=h|d[j>>0];h=Qa+-2|0;V=c[f>>2]|0;c[V+20>>2]=93;c[V+24>>2]=c[Na>>2];c[(c[f>>2]|0)+28>>2]=h;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[k>>2]=j+1;c[l>>2]=g+-1;if(Qa>>>0>2)Ub[c[(c[oa>>2]|0)+16>>2]&63](f,h);break}default:{Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}}while(0);c[Na>>2]=0;g=0}if((Aa|0)==25){q=c[oa>>2]|0;h=c[q>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46633,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}while(0);g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}else h=j;while(0);g=g+-1|0;j=h+1|0;l=k|d[h>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;k=c[q>>2]|0;break}else{h=g;k=j}while(0);m=a[k>>0]|0;p=m&255;Qa=c[f>>2]|0;c[Qa+20>>2]=105;c[Qa+24>>2]=p;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);do if(!((m&255)>4|(l|0)!=((p<<1)+6|0))){if(m<<24>>24){c[f+340>>2]=p;i=h+-1|0;ya=k+1|0;za=i;i=(i|0)==0;Aa=42;break}if(c[f+224>>2]|0){c[f+340>>2]=p;g=h+-1|0;if(!g){Ha=1;Aa=64}else{Fa=g;La=k+1|0;Ma=1}}else Aa=41}else Aa=41;while(0);if((Aa|0)==41){j=c[f>>2]|0;c[j+20>>2]=12;Sb[c[j>>2]&255](f);c[f+340>>2]=p;j=h+-1|0;g=k+1|0;h=(j|0)==0;if(!(m<<24>>24)){Da=j;Ea=g;Ga=h;Ia=1;Aa=63}else{ya=g;za=j;i=h;Aa=42}}e:do if((Aa|0)==42){n=q+12|0;o=f+344|0;m=0;g=ya;h=za;while(1){if(i){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}h=c[r>>2]|0;g=c[q>>2]|0}l=h+-1|0;i=g+1|0;h=d[g>>0]|0;f:do if(m){g=0;while(1){if((c[c[f+344+(g<<2)>>2]>>2]|0)==(h|0))break;g=g+1|0;if(g>>>0>=m>>>0)break f}g=c[c[o>>2]>>2]|0;if(m>>>0>1){h=1;do{Qa=c[c[f+344+(h<<2)>>2]>>2]|0;g=(Qa|0)>(g|0)?Qa:g;h=h+1|0}while((h|0)!=(m|0))}h=g+1|0}while(0);g=c[Ka>>2]|0;k=c[Ja>>2]|0;g:do if((k|0)>0){j=0;while(1){if((h|0)==(c[g>>2]|0)){Ca=g;break g}j=j+1|0;g=g+88|0;if((j|0)>=(k|0)){Ba=g;Aa=58;break}}}else{Ba=g;Aa=58}while(0);if((Aa|0)==58){Aa=0;Ca=c[f>>2]|0;c[Ca+20>>2]=4;c[Ca+24>>2]=h;Sb[c[c[f>>2]>>2]&255](f);Ca=Ba}c[f+344+(m<<2)>>2]=Ca;if(!l){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}g=c[r>>2]|0;i=c[q>>2]|0}else g=l;h=d[i>>0]|0;za=Ca+20|0;c[za>>2]=h>>>4;Qa=Ca+24|0;c[Qa>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[Ca>>2];c[h+28>>2]=c[za>>2];c[h+32>>2]=c[Qa>>2];c[h+20>>2]=106;Ub[c[h+4>>2]&63](f,1);m=m+1|0;h=g+-1|0;g=i+1|0;i=(h|0)==0;if(m>>>0>=p>>>0){Da=h;Ea=g;Ga=i;Ia=0;Aa=63;break e}}if((Aa|0)==350){zb=Pa;return xa|0}}while(0);if((Aa|0)==63)if(Ga){Ha=Ia;Aa=64}else{Fa=Da;La=Ea;Ma=Ia}do if((Aa|0)==64)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{Fa=c[r>>2]|0;La=c[q>>2]|0;Ma=Ha;break}while(0);g=Fa+-1|0;h=La+1|0;k=f+412|0;c[k>>2]=d[La>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;i=c[q>>2]|0;break}else i=h;while(0);h=g+-1|0;g=i+1|0;j=f+416|0;c[j>>2]=d[i>>0];do if(!h)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);Qa=d[g>>0]|0;Ka=f+420|0;c[Ka>>2]=Qa>>>4;La=f+424|0;c[La>>2]=Qa&15;Qa=c[f>>2]|0;c[Qa+24>>2]=c[k>>2];c[Qa+28>>2]=c[j>>2];c[Qa+32>>2]=c[Ka>>2];c[Qa+36>>2]=c[La>>2];c[Qa+20>>2]=107;Ub[c[Qa+4>>2]&63](f,1);c[(c[Oa>>2]|0)+20>>2]=0;if(!Ma){Qa=f+144|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[q>>2]=g+1;c[r>>2]=h+-1;c[Na>>2]=0;Qa=1;zb=Pa;return Qa|0}else if((Aa|0)==75){Qa=c[f>>2]|0;c[Qa+20>>2]=87;Ub[c[Qa+4>>2]&63](f,1);c[Na>>2]=0;Qa=2;zb=Pa;return Qa|0}else if((Aa|0)==174){Qa=0;zb=Pa;return Qa|0}else if((Aa|0)==350){zb=Pa;return xa|0}return 0}function Xt(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+440|0;b=c[f>>2]|0;do if(!b)if(!(Tt(a)|0)){f=0;return f|0}else{b=c[f>>2]|0;break}while(0);d=a+464|0;e=c[(c[d>>2]|0)+20>>2]|0;if((b|0)!=(e+208|0)){if(!(Ib[c[(c[a+24>>2]|0)+20>>2]&63](a,e)|0)){f=0;return f|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,3);c[f>>2]=0}f=(c[d>>2]|0)+20|0;c[f>>2]=(c[f>>2]|0)+1&7;f=1;return f|0}function Yt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+24|0;h=c[g>>2]|0;i=h+4|0;b=c[i>>2]|0;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;break}while(0);e=c[h>>2]|0;b=b+-1|0;f=e+1|0;e=(d[e>>0]|0)<<8;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;f=c[h>>2]|0;break}while(0);j=e|(d[f>>0]|0);e=j+-2|0;k=c[a>>2]|0;c[k+20>>2]=93;c[k+24>>2]=c[a+440>>2];c[(c[a>>2]|0)+28>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,1);c[h>>2]=f+1;c[i>>2]=b+-1;if(j>>>0<=2){k=1;return k|0}Ub[c[(c[g>>2]|0)+16>>2]&63](a,e);k=1;return k|0}function Zt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;l=p;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);j=g|d[f>>0];k=j+-2|0;j=j>>>0>15?14:j>>>0>2?k:0;g=e+-1|0;e=f+1|0;a:do if(!j)f=g;else{i=n+12|0;h=0;f=g;while(1){if(!f){if(!(Gb[c[i>>2]&127](b)|0)){e=0;break}f=c[o>>2]|0;e=c[n>>2]|0}a[l+h>>0]=a[e>>0]|0;h=h+1|0;f=f+-1|0;e=e+1|0;if(h>>>0>=j>>>0)break a}zb=p;return e|0}while(0);g=k-j|0;h=c[b+440>>2]|0;b:do switch(h|0){case 224:{_t(b,l,j,g);break}case 238:{if((((j>>>0>11&(a[l>>0]|0)==65?(a[l+1>>0]|0)==100:0)?(a[l+2>>0]|0)==111:0)?(a[l+3>>0]|0)==98:0)?(a[l+4>>0]|0)==101:0){h=d[l+7>>0]<<8|d[l+8>>0];i=d[l+9>>0]<<8|d[l+10>>0];k=a[l+11>>0]|0;j=c[b>>2]|0;c[j+24>>2]=d[l+5>>0]<<8|d[l+6>>0];c[j+28>>2]=h;c[j+32>>2]=i;c[j+36>>2]=k&255;c[j+20>>2]=78;Ub[c[j+4>>2]&63](b,1);c[b+296>>2]=1;a[b+300>>0]=k;break b}l=c[b>>2]|0;c[l+20>>2]=80;c[l+24>>2]=k;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1);break}default:{l=c[b>>2]|0;c[l+20>>2]=70;c[l+24>>2]=h;Sb[c[c[b>>2]>>2]&255](b)}}while(0);c[n>>2]=e;c[o>>2]=f;if((g|0)<=0){o=1;zb=p;return o|0}Ub[c[(c[m>>2]|0)+16>>2]&63](b,g);o=1;zb=p;return o|0}function _t(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(g>>>0>13){if((a[f>>0]|0)==74)if((((a[f+1>>0]|0)==70?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){c[e+284>>2]=1;j=a[f+5>>0]|0;k=e+288|0;a[k>>0]=j;l=a[f+6>>0]|0;m=e+289|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+290|0;a[p>>0]=h;i=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+292|0;b[n>>1]=i;g=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+294|0;b[o>>1]=g;if((j+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=j&255;c[(c[e>>2]|0)+28>>2]=d[m>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](e,-1);q=e;j=a[k>>0]|0;l=a[m>>0]|0;i=b[n>>1]|0;g=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=j&255;c[p+28>>2]=l&255;c[p+32>>2]=i&65535;c[p+36>>2]=g&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Ub[c[p+4>>2]&63](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=d[j>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(B((i&255)*3|0,g&255)|0))return;r=c[e>>2]|0;c[r+20>>2]=90;c[r+24>>2]=h;Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);return}else i=16}else if(g>>>0>5?(a[f>>0]|0)==74:0)i=16;if(((((i|0)==16?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;switch(a[h>>0]|0){case 16:{q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 17:{q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 19:{q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}default:{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}function $t(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+24>>2]|0;h=c[o>>2]|0;p=o+4|0;g=c[p>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;e=(d[h>>0]|0)<<8;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;j=e|(d[h>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;c[a+212>>2]=d[h>>0];do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;i=a+32|0;c[i>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;e=c[i>>2]|0;break}else e=h;while(0);g=g+-1|0;h=b+1|0;c[i>>2]=e+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;f=a+28|0;c[f>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;h=c[f>>2]|0;break}while(0);g=g+-1|0;e=b+1|0;c[f>>2]=h+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{b=c[p>>2]|0;e=c[o>>2]|0;break}else b=g;while(0);m=a+36|0;c[m>>2]=d[e>>0];h=j+-8|0;n=c[a>>2]|0;c[n+24>>2]=c[a+440>>2];c[n+28>>2]=c[f>>2];c[n+32>>2]=c[i>>2];c[n+36>>2]=c[m>>2];c[n+20>>2]=102;Ub[c[n+4>>2]&63](a,1);n=a+464|0;if(c[(c[n>>2]|0)+16>>2]|0){l=c[a>>2]|0;c[l+20>>2]=61;Sb[c[l>>2]&255](a)}if(((c[i>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(k=c[m>>2]|0,(k|0)>=1):0)g=k;else{g=c[a>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](a);g=c[m>>2]|0}if((h|0)!=(g*3|0)){l=c[a>>2]|0;c[l+20>>2]=12;Sb[c[l>>2]&255](a)}l=a+216|0;if(!(c[l>>2]|0)){k=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[m>>2]|0)*88|0)|0;c[l>>2]=k}b=b+-1|0;g=e+1|0;a:do if((c[m>>2]|0)>0){k=o+12|0;j=0;while(1){if(!b){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}b=c[p>>2]|0;g=c[o>>2]|0}f=b+-1|0;h=g+1|0;e=d[g>>0]|0;i=c[l>>2]|0;b:do if(!j)b=e;else{g=i;b=0;while(1){if((c[g>>2]|0)==(e|0))break;b=b+1|0;g=g+88|0;if(b>>>0>=j>>>0){b=e;i=g;break b}}b=c[i>>2]|0;g=i+88|0;if(j>>>0>1){e=1;while(1){q=c[g>>2]|0;b=(q|0)>(b|0)?q:b;e=e+1|0;if((e|0)==(j|0))break;else g=g+88|0}g=i+(j*88|0)|0}b=b+1|0;i=g}while(0);c[i>>2]=b;c[i+4>>2]=j;if(!f){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else g=f;g=g+-1|0;b=h+1|0;q=d[h>>0]|0;e=i+8|0;c[e>>2]=q>>>4;f=i+12|0;c[f>>2]=q&15;if(!g){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else h=b;q=i+16|0;c[q>>2]=d[h>>0];b=c[a>>2]|0;c[b+24>>2]=c[i>>2];c[b+28>>2]=c[e>>2];c[b+32>>2]=c[f>>2];c[b+36>>2]=c[q>>2];c[b+20>>2]=103;Ub[c[b+4>>2]&63](a,1);j=j+1|0;b=g+-1|0;g=h+1|0;if((j|0)>=(c[m>>2]|0))break a}if((h|0)==57)return g|0}while(0);c[(c[n>>2]|0)+16>>2]=1;c[o>>2]=g;c[p>>2]=b;q=1;return q|0}function au(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[a+276>>2]=0;return a|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+20|0;b=c[k>>2]|0;a:do switch(b|0){case 202:{cu(a);if(!(c[a+64>>2]|0)){c[k>>2]=203;d=6;break a}c[k>>2]=207;k=1;return k|0}case 203:{d=6;break}case 204:{b=a+444|0;break}default:{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a);d=17}}while(0);if((d|0)==6){g=a+460|0;b:do if(c[(c[g>>2]|0)+16>>2]|0){e=a+8|0;f=a+332|0;b=c[e>>2]|0;c:while(1){if(b|0)Sb[c[b>>2]&255](a);b=Gb[c[c[g>>2]>>2]&127](a)|0;switch(b|0){case 2:break b;case 0:break c;default:{}}d=c[e>>2]|0;if((b|2|0)==3&(d|0)!=0?(h=d+4|0,j=(c[h>>2]|0)+1|0,c[h>>2]=j,h=d+8|0,i=c[h>>2]|0,(j|0)>=(i|0)):0)c[h>>2]=(c[f>>2]|0)+i;b=d}return b|0}while(0);c[a+152>>2]=c[a+144>>2];d=17}if((d|0)==17){b=a+444|0;if((c[k>>2]|0)!=204){Sb[c[c[b>>2]>>2]&255](a);c[a+140>>2]=0;c[k>>2]=204}}d=c[b>>2]|0;d:do if(c[d+8>>2]|0){g=a+140|0;h=a+116|0;i=a+8|0;j=a+448|0;f=c[g>>2]|0;e:while(1){e=c[h>>2]|0;if(f>>>0>>0){do{d=c[i>>2]|0;if(!d)d=f;else{c[d+4>>2]=f;c[d+8>>2]=e;Sb[c[d>>2]&255](a);d=c[g>>2]|0}Xb[c[(c[j>>2]|0)+4>>2]&31](a,0,g,0);f=c[g>>2]|0;if((f|0)==(d|0)){b=0;break e}e=c[h>>2]|0}while(f>>>0>>0);d=c[b>>2]|0}Sb[c[d+4>>2]&255](a);Sb[c[c[b>>2]>>2]&255](a);c[g>>2]=0;d=c[b>>2]|0;if(!(c[d+8>>2]|0))break d;else f=0}return b|0}while(0);c[k>>2]=(c[a+68>>2]|0)==0?205:206;k=1;return k|0}function cu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Jb[c[c[k>>2]>>2]&63](b,1,28)|0;c[b+444>>2]=i;c[i>>2]=118;c[i+4>>2]=119;c[i+8>>2]=0;d=c[b+212>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}fu(b);e=Jb[c[c[k>>2]>>2]&63](b,1,1280)|0;aP(e|0,0,512)|0;f=e+512|0;c[b+336>>2]=f;d=0;do{a[f+d>>0]=d;d=d+1|0}while((d|0)!=256);aP(e+768|0,-1,512)|0;if(!(((c[b+116>>2]|0)!=0?(c[b+112>>2]|0)!=0:0)?(g=b+120|0,(c[g>>2]|0)>=1):0)){g=c[b>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](b);g=b+120|0}j=i+12|0;c[j>>2]=0;f=gu(b)|0;h=i+16|0;c[h>>2]=f;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(c[b+84>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;e=b+68|0}else{if(!(c[b+64>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}e=b+68|0;if(c[e>>2]|0){i=c[b>>2]|0;c[i+20>>2]=48;Sb[c[i>>2]&255](b)}do if((c[g>>2]|0)==3){if(c[b+136>>2]|0){c[b+104>>2]=1;break}if(!(c[b+92>>2]|0)){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}while(0);if(c[b+100>>2]|0){hu(b);c[f>>2]=c[b+484>>2]}if((c[b+108>>2]|0)==0?(c[b+104>>2]|0)==0:0)break;iu(b);c[d>>2]=c[b+484>>2]}while(0);if(!(c[e>>2]|0)){if(!(c[h>>2]|0)){ku(b);lu(b)}else ju(b);mu(b,c[b+108>>2]|0)}nu(b);if(!(c[b+228>>2]|0))pu(b);else ou(b);f=b+460|0;if(!(c[(c[f>>2]|0)+16>>2]|0))d=(c[b+64>>2]|0)!=0&1;else d=1;qu(b,d);if(!(c[e>>2]|0))ru(b,0);Sb[c[(c[k>>2]|0)+24>>2]&255](b);Sb[c[(c[f>>2]|0)+8>>2]&255](b);d=c[b+8>>2]|0;if(!d)return;if(c[b+64>>2]|0)return;if(!(c[(c[f>>2]|0)+16>>2]|0))return;k=c[b+36>>2]|0;k=(c[b+224>>2]|0)==0?k:(k*3|0)+2|0;c[d+4>>2]=0;k=B(k,c[b+332>>2]|0)|0;c[d+8>>2]=k;c[d+12>>2]=0;c[d+16>>2]=(c[b+108>>2]|0)==0?2:3;c[j>>2]=(c[j>>2]|0)+1;return}function du(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a+444>>2]|0;e=d+8|0;if(!(c[e>>2]|0)){b=a+84|0;do if(c[b>>2]|0?(c[a+136>>2]|0)==0:0){if(c[a+92>>2]|0?c[a+108>>2]|0:0){c[a+484>>2]=c[d+24>>2];c[e>>2]=1;break}if(!(c[a+100>>2]|0)){f=c[a>>2]|0;c[f+20>>2]=47;Sb[c[f>>2]&255](a);break}else{c[a+484>>2]=c[d+20>>2];break}}while(0);Sb[c[c[a+472>>2]>>2]&255](a);Sb[c[(c[a+452>>2]|0)+8>>2]&255](a);if(!(c[a+68>>2]|0)){if(!(c[d+16>>2]|0))Sb[c[c[a+480>>2]>>2]&255](a);Sb[c[c[a+476>>2]>>2]&255](a);if(c[b>>2]|0)Ub[c[c[a+484>>2]>>2]&63](a,c[e>>2]|0);Ub[c[c[a+456>>2]>>2]&63](a,(c[e>>2]|0)==0?0:3);Ub[c[c[a+448>>2]>>2]&63](a,0)}}else{c[e>>2]=0;Ub[c[c[a+484>>2]>>2]&63](a,0);Ub[c[c[a+456>>2]>>2]&63](a,2);Ub[c[c[a+448>>2]>>2]&63](a,2)}b=c[a+8>>2]|0;if(!b)return;d=c[d+12>>2]|0;c[b+12>>2]=d;d=((c[e>>2]|0)==0?1:2)+d|0;b=b+16|0;c[b>>2]=d;if(!(c[a+64>>2]|0))return;if(c[(c[a+460>>2]|0)+20>>2]|0)return;c[b>>2]=((c[a+108>>2]|0)==0?1:2)+d;return}function eu(a){a=a|0;var b=0;b=c[a+444>>2]|0;if(c[a+84>>2]|0)Sb[c[(c[a+484>>2]|0)+8>>2]&255](a);b=b+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=c[a+20>>2]|0;if((b|0)!=202){t=c[a>>2]|0;c[t+20>>2]=21;c[t+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}xw(a);d=c[a+216>>2]|0;t=a+36|0;b=c[t>>2]|0;o=(b|0)>0;if(o){p=c[a+324>>2]|0;q=(c[a+76>>2]|0)==0?4:8;r=a+320|0;s=c[a+328>>2]|0;if((p|0)>(q|0)){k=(s|0)>(q|0);l=p<<1;i=d;j=0;while(1){m=i+36|0;c[m>>2]=p;a:do if(k)e=s;else{h=c[r>>2]|0;g=c[i+12>>2]|0;f=1;e=s;do{f=f<<1;if((h|0)%(B(f,g)|0)|0|0)break a;e=B(s,f)|0}while((e|0)<=(q|0))}while(0);f=i+40|0;c[f>>2]=e;g=e<<1;if((p|0)<=(g|0)){if((e|0)>(l|0))c[f>>2]=l}else c[m>>2]=g;j=j+1|0;if((j|0)>=(b|0))break;else i=i+88|0}}else{m=c[a+316>>2]|0;n=(s|0)>(q|0);k=d;l=0;while(1){g=c[k+8>>2]|0;f=1;e=p;do{f=f<<1;if((m|0)%(B(f,g)|0)|0|0)break;e=B(p,f)|0}while((e|0)<=(q|0));j=k+36|0;c[j>>2]=e;b:do if(n)g=s;else{h=c[r>>2]|0;i=c[k+12>>2]|0;f=1;g=s;do{f=f<<1;if((h|0)%(B(f,i)|0)|0|0)break b;g=B(s,f)|0}while((g|0)<=(q|0))}while(0);h=k+40|0;c[h>>2]=g;f=g<<1;if((e|0)<=(f|0)){e=e<<1;if((g|0)>(e|0))c[h>>2]=e}else c[j>>2]=f;l=l+1|0;if((l|0)>=(b|0))break;else k=k+88|0}}if(o){f=a+28|0;g=a+316|0;h=a+428|0;i=a+32|0;j=a+320|0;e=0;while(1){b=B(B(c[d+8>>2]|0,c[f>>2]|0)|0,c[d+36>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[g>>2]|0)|0)|0;c[d+44>>2]=b;b=B(B(c[d+12>>2]|0,c[i>>2]|0)|0,c[d+40>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[j>>2]|0)|0)|0;c[d+48>>2]=b;e=e+1|0;b=c[t>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}}d=c[a+44>>2]|0;switch(d|0){case 1:{b=d;break}case 6:case 2:{b=3;break}case 7:case 3:{b=3;break}case 5:case 4:{b=4;break}default:{}}c[a+120>>2]=b;c[a+124>>2]=(c[a+84>>2]|0)==0?b:1;if(!(gu(a)|0)){t=1;a=a+128|0;c[a>>2]=t;return}t=c[a+320>>2]|0;a=a+128|0;c[a>>2]=t;return}function gu(a){a=a|0;var b=0,d=0;if(c[a+308>>2]|0)return 0;switch(c[a+40>>2]|0){case 7:case 3:break;default:return 0}if((c[a+36>>2]|0)!=3)return 0;if((c[a+44>>2]|0)!=2)return 0;if((c[a+120>>2]|0)!=3)return 0;if(c[a+304>>2]|0)return 0;d=c[a+216>>2]|0;if((c[d+8>>2]|0)!=2)return 0;if((c[d+96>>2]|0)!=1)return 0;if((c[d+184>>2]|0)!=1)return 0;if((c[d+12>>2]|0)>2)return 0;if((c[d+100>>2]|0)!=1)return 0;if((c[d+188>>2]|0)!=1)return 0;b=c[d+36>>2]|0;if((b|0)!=(c[a+324>>2]|0))return 0;if((c[d+124>>2]|0)!=(b|0))return 0;if((c[d+212>>2]|0)!=(b|0))return 0;b=c[d+40>>2]|0;if((b|0)!=(c[a+328>>2]|0))return 0;if((c[d+128>>2]|0)==(b|0))return (c[d+216>>2]|0)==(b|0)|0;else return 0;return 0}function hu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=b+4|0;t=Jb[c[c[s>>2]>>2]&63](b,1,88)|0;r=b+484|0;c[r>>2]=t;c[t>>2]=48;c[t+8>>2]=120;c[t+12>>2]=121;c[t+68>>2]=0;c[t+52>>2]=0;t=b+120|0;if((c[t>>2]|0)>4){n=c[b>>2]|0;c[n+20>>2]=57;c[n+24>>2]=4;Sb[c[c[b>>2]>>2]&255](b)}d=b+96|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Sb[c[c[b>>2]>>2]&255](b);e=c[d>>2]|0}n=c[r>>2]|0;l=n+32|0;k=c[t>>2]|0;if((k|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=B(d,g)|0;f=f+1|0}while((f|0)!=(k|0));if((d|0)>(e|0)){f=h;break}else h=g}}else{f=(e|0)>1?e:1;d=f+1|0}if(f>>>0<2){j=c[b>>2]|0;c[j+20>>2]=58;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}a:do if((k|0)>0){h=1;d=0;do{c[n+32+(d<<2)>>2]=f;h=B(h,f)|0;d=d+1|0}while((d|0)!=(k|0));if((c[b+44>>2]|0)==2){g=0;d=0;f=h;while(1){h=n+32+(c[15924+(d<<2)>>2]<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=22}}else{d=g;m=22}if((m|0)==22){m=0;if(!d)break a;else{g=0;d=0}}}}else{g=0;d=0;f=h;while(1){h=n+32+(d<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=26}}else{d=g;m=26}if((m|0)==26){m=0;if(!d)break a;else{g=0;d=0}}}}}else f=1;while(0);d=c[b>>2]|0;if((c[t>>2]|0)==3){c[d+24>>2]=f;c[d+28>>2]=c[l>>2];c[d+32>>2]=c[n+36>>2];c[d+36>>2]=c[n+40>>2];c[d+20>>2]=96;Ub[c[d+4>>2]&63](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1)}m=Kb[c[(c[s>>2]|0)+8>>2]&15](b,1,f,c[t>>2]|0)|0;d=c[t>>2]|0;if((d|0)>0){k=0;l=f;do{j=c[n+32+(k<<2)>>2]|0;i=l;l=(l|0)/(j|0)|0;if((j|0)>0?(o=j+-1|0,p=(o|0)/2|0,q=m+(k<<2)|0,(l|0)>0):0){g=0;do{d=B(g,l)|0;if((d|0)<(f|0)){h=(((g*255|0)+p|0)/(o|0)|0)&255;do{e=0;do{a[(c[q>>2]|0)+(e+d)>>0]=h;e=e+1|0}while((e|0)!=(l|0));d=d+i|0}while((d|0)<(f|0))}g=g+1|0}while((g|0)!=(j|0));d=c[t>>2]|0}k=k+1|0}while((k|0)<(d|0))}c[n+16>>2]=m;c[n+20>>2]=f;rw(b);if((c[b+88>>2]|0)!=2)return;e=c[r>>2]|0;f=(c[b+112>>2]<<1)+4|0;if((c[t>>2]|0)<=0)return;d=0;do{r=Jb[c[(c[s>>2]|0)+4>>2]&63](b,1,f)|0;c[e+68+(d<<2)>>2]=r;d=d+1|0}while((d|0)<(c[t>>2]|0));return}function iu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;e=Jb[c[c[f>>2]>>2]&63](a,1,44)|0;c[a+484>>2]=e;c[e>>2]=49;c[e+12>>2]=122;g=e+32|0;c[g>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){d=c[a>>2]|0;c[d+20>>2]=48;Sb[c[d>>2]&255](a)}b=Jb[c[c[f>>2]>>2]&63](a,1,128)|0;d=e+24|0;c[d>>2]=b;b=0;do{h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,4096)|0;c[(c[d>>2]|0)+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=32);c[e+28>>2]=1;if(!(c[a+108>>2]|0))c[e+16>>2]=0;else{b=c[a+96>>2]|0;if((b|0)>=8){if((b|0)>256){h=c[a>>2]|0;c[h+20>>2]=59;c[h+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{h=c[a>>2]|0;c[h+20>>2]=58;c[h+24>>2]=8;Sb[c[c[a>>2]>>2]&255](a)}h=Kb[c[(c[f>>2]|0)+8>>2]&15](a,1,b,3)|0;c[e+16>>2]=h;c[e+20>>2]=b}b=a+88|0;if(!(c[b>>2]|0))return;c[b>>2]=2;h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,((c[a+112>>2]|0)*6|0)+12|0)|0;c[g>>2]=h;gw(a);return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+4|0;b=Jb[c[c[g>>2]>>2]&63](a,1,48)|0;f=a+476|0;c[f>>2]=b;c[b>>2]=123;c[b+8>>2]=0;d=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[b+40>>2]=d;e=b+4|0;if((c[a+320>>2]|0)==2){c[e>>2]=1;c[b+12>>2]=9;e=Jb[c[(c[g>>2]|0)+4>>2]&63](a,1,d)|0;c[b+32>>2]=e;b=c[f>>2]|0}else{c[e>>2]=2;c[b+12>>2]=10;c[b+32>>2]=0}d=(c[a+40>>2]|0)==7;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;e=b+16|0;c[e>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;f=b+20|0;c[f>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;h=b+24|0;c[h>>2]=i;g=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;c[b+28>>2]=g;e=c[e>>2]|0;f=c[f>>2]|0;a=c[h>>2]|0;if(d){b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*183763|0)+32768>>16;c[f+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[a+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}else{b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*91881|0)+32768>>16;c[f+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[a+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}}function ku(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;e=Jb[c[c[b>>2]>>2]&63](a,1,28)|0;g=a+480|0;c[g>>2]=e;c[e>>2]=124;h=a+40|0;switch(c[h>>2]|0){case 1:{if((c[a+36>>2]|0)!=1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 7:case 6:case 3:case 2:{if((c[a+36>>2]|0)!=3){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 5:case 4:{if((c[a+36>>2]|0)!=4){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}default:if((c[a+36>>2]|0)<1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}}d=a+304|0;a:do if(c[d>>2]|0){switch(c[h>>2]|0){case 6:case 2:break a;default:{}}f=c[a>>2]|0;c[f+20>>2]=28;Sb[c[f>>2]&255](a)}while(0);f=c[a+44>>2]|0;b:do switch(f|0){case 1:{c[a+120>>2]=1;switch(c[h>>2]|0){case 7:case 3:case 1:{c[e+4>>2]=4;d=c[a+36>>2]|0;if((d|0)<=1)break b;e=c[a+216>>2]|0;b=1;do{c[e+(b*88|0)+52>>2]=0;b=b+1|0}while((b|0)<(d|0));break}case 2:{switch(c[d>>2]|0){case 0:{c[e+4>>2]=5;break}case 1:{c[e+4>>2]=6;break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a)}}h=c[g>>2]|0;d=Jb[c[c[b>>2]>>2]&63](a,1,3072)|0;c[h+24>>2]=d;b=0;do{c[d+(b<<2)>>2]=b*19595;c[d+(b+256<<2)>>2]=b*38470;c[d+(b+512<<2)>>2]=(b*7471|0)+32768;b=b+1|0}while((b|0)!=256);break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a);break b}}break}case 2:{c[a+120>>2]=3;switch(c[h>>2]|0){case 1:{c[e+4>>2]=7;break b}case 3:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 7:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*183763|0)+32768>>16;c[g+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[h+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 2:switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}case 6:{c[a+120>>2]=3;if((c[h>>2]|0)!=6){i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}}case 4:{c[a+120>>2]=4;switch(c[h>>2]|0){case 5:{c[e+4>>2]=11;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 4:{c[e+4>>2]=12;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}default:if((f|0)==(c[h>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=12;break b}else{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}while(0);if(c[a+84>>2]|0){h=1;i=a+124|0;c[i>>2]=h;return}h=c[a+120>>2]|0;i=a+124|0;c[i>>2]=h;return}function lu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=b+4|0;d=Jb[c[c[m>>2]>>2]&63](b,1,160)|0;c[b+476>>2]=d;c[d>>2]=125;c[d+4>>2]=3;c[d+8>>2]=0;if(c[b+308>>2]|0){w=c[b>>2]|0;c[w+20>>2]=26;Sb[c[w>>2]&255](b)}n=b+36|0;if((c[n>>2]|0)<=0)return;o=b+324|0;p=b+328|0;q=b+316|0;r=b+320|0;s=d+100|0;t=d+52|0;u=b+112|0;v=d+12|0;w=d+140|0;h=d+150|0;f=c[b+216>>2]|0;g=0;while(1){i=B(c[f+36>>2]|0,c[f+8>>2]|0)|0;i=(i|0)/(c[o>>2]|0)|0;j=B(c[f+40>>2]|0,c[f+12>>2]|0)|0;j=(j|0)/(c[p>>2]|0)|0;k=c[q>>2]|0;l=c[r>>2]|0;c[s+(g<<2)>>2]=j;do if(!(c[f+52>>2]|0))c[t+(g<<2)>>2]=11;else{d=(j|0)==(l|0);if((i|0)==(k|0)&d){c[t+(g<<2)>>2]=12;break}e=(i<<1|0)==(k|0);do if(e&d)c[t+(g<<2)>>2]=13;else{if(e&(j<<1|0)==(l|0)){c[t+(g<<2)>>2]=14;break}d=(k|0)/(i|0)|0;if((k-(B(d,i)|0)|0)==0?(x=(l|0)/(j|0)|0,(l-(B(x,j)|0)|0)==0):0){c[t+(g<<2)>>2]=15;a[w+g>>0]=d;a[h+g>>0]=x;break}l=c[b>>2]|0;c[l+20>>2]=39;Sb[c[l>>2]&255](b)}while(0);k=c[(c[m>>2]|0)+8>>2]|0;l=yu(c[u>>2]|0,c[q>>2]|0)|0;l=Kb[k&15](b,1,l,c[r>>2]|0)|0;c[v+(g<<2)>>2]=l}while(0);g=g+1|0;if((g|0)>=(c[n>>2]|0))break;else f=f+88|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,1,28)|0;c[a+456>>2]=d;c[d>>2]=50;h=d+8|0;c[h>>2]=0;i=d+12|0;c[i>>2]=0;if(!(c[a+84>>2]|0))return;g=c[a+320>>2]|0;e=d+16|0;c[e>>2]=g;d=c[f>>2]|0;if(!b){h=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=Kb[c[d+8>>2]&15](a,1,h,g)|0;c[i>>2]=h;return}else{f=c[d+16>>2]|0;b=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;i=yu(c[a+116>>2]|0,g)|0;i=Ob[f&63](a,1,0,b,i,c[e>>2]|0)|0;c[h>>2]=i;return}}function nu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Jb[c[c[f>>2]>>2]&63](a,1,84)|0;c[a+472>>2]=b;c[b>>2]=126;g=a+36|0;if((c[g>>2]|0)<=0)return;e=b+44|0;b=0;d=c[a+216>>2]|0;while(1){h=Jb[c[c[f>>2]>>2]&63](a,1,256)|0;c[d+84>>2]=h;aP(h|0,0,256)|0;c[e+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;else d=d+88|0}return}function ou(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+4|0;e=Jb[c[c[g>>2]>>2]&63](b,1,192)|0;c[b+468>>2]=e;c[e>>2]=127;c[e+8>>2]=128;d=e+188|0;e=e+60|0;f=e+128|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[d>>0]=113;if(!(c[b+224>>2]|0))return;f=b+36|0;e=Jb[c[c[g>>2]>>2]&63](b,1,c[f>>2]<<8)|0;c[b+160>>2]=e;if((c[f>>2]|0)<=0)return;d=0;do{aP(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;f=Jb[c[c[b>>2]>>2]&63](a,1,220)|0;c[a+468>>2]=f;c[f>>2]=129;c[f+8>>2]=130;if(!(c[a+224>>2]|0)){e=f+68|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[f+88>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;return}e=a+36|0;d=Jb[c[c[b>>2]>>2]&63](a,1,c[e>>2]<<8)|0;c[a+160>>2]=d;if((c[e>>2]|0)>0){b=0;do{aP(d+(b<<8)|0,-1,256)|0;b=b+1|0}while((b|0)<(c[e>>2]|0))}f=f+48|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;return}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=a+4|0;i=Jb[c[c[h>>2]>>2]&63](a,1,116)|0;c[a+452>>2]=i;c[i>>2]=131;c[i+8>>2]=132;c[i+112>>2]=0;if(!b){b=Jb[c[(c[h>>2]|0)+4>>2]&63](a,1,1280)|0;c[i+32>>2]=b;c[i+36>>2]=b+128;c[i+40>>2]=b+256;c[i+44>>2]=b+384;c[i+48>>2]=b+512;c[i+52>>2]=b+640;c[i+56>>2]=b+768;c[i+60>>2]=b+896;c[i+64>>2]=b+1024;c[i+68>>2]=b+1152;if(!(c[a+436>>2]|0))aP(b|0,0,1280)|0;c[i+4>>2]=89;c[i+12>>2]=35;c[i+16>>2]=0;return}f=a+36|0;if((c[f>>2]|0)>0){g=a+224|0;b=i+72|0;d=0;e=c[a+216>>2]|0;while(1){k=e+12|0;j=c[k>>2]|0;j=(c[g>>2]|0)==0?j:j*3|0;m=c[(c[h>>2]|0)+20>>2]|0;l=yu(c[e+28>>2]|0,c[e+8>>2]|0)|0;k=yu(c[e+32>>2]|0,c[k>>2]|0)|0;j=Ob[m&63](a,1,1,l,k,j)|0;c[b+(d<<2)>>2]=j;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}}else b=i+72|0;c[i+4>>2]=88;c[i+12>>2]=34;c[i+16>>2]=b;return}function ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;j=Jb[c[c[l>>2]>>2]&63](a,1,80)|0;d=a+448|0;c[d>>2]=j;c[j>>2]=51;if(b|0){k=c[a>>2]|0;c[k+20>>2]=3;Sb[c[k>>2]&255](a)}k=a+328|0;e=c[k>>2]|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[j+52>>2]=e;b=a+36|0;h=e;g=b;b=c[b>>2]|0;d=e}else{if((e|0)<2){e=c[a>>2]|0;c[e+20>>2]=48;Sb[c[e>>2]&255](a);e=c[k>>2]|0}h=c[d>>2]|0;i=a+36|0;f=Jb[c[c[l>>2]>>2]&63](a,1,c[i>>2]<<3)|0;g=h+60|0;c[g>>2]=f;b=c[i>>2]|0;h=h+64|0;c[h>>2]=f+(b<<2);if((b|0)>0){f=e+4|0;d=c[a+216>>2]|0;e=0;while(1){m=B(c[d+40>>2]|0,c[d+12>>2]|0)|0;m=(m|0)/(c[k>>2]|0)|0;b=B(m,f)|0;m=(Jb[c[c[l>>2]>>2]&63](a,1,b<<3)|0)+(m<<2)|0;c[(c[g>>2]|0)+(e<<2)>>2]=m;c[(c[h>>2]|0)+(e<<2)>>2]=m+(b<<2);e=e+1|0;b=c[i>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}d=c[k>>2]|0;h=d+2|0;g=i}if((b|0)<=0)return;f=j+8|0;b=0;e=c[a+216>>2]|0;while(1){m=(B(c[e+40>>2]|0,c[e+12>>2]|0)|0)/(d|0)|0;j=B(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=B(m,h)|0;m=Kb[c[(c[l>>2]|0)+8>>2]&15](a,1,j,m)|0;c[f+(b<<2)>>2]=m;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;e=e+88|0;d=c[k>>2]|0}return}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=c[a+448>>2]|0;switch(b|0){case 0:{b=r+4|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[b>>2]=17;c[r+48>>2]=c[r+52>>2];return}c[b>>2]=16;l=c[a+328>>2]|0;m=c[a+36>>2]|0;if((m|0)>0){n=r+60|0;o=r+64|0;p=l+2|0;q=l+-2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(l|0)|0;k=c[(c[n>>2]|0)+(i<<2)>>2]|0;f=c[(c[o>>2]|0)+(i<<2)>>2]|0;g=c[r+8+(i<<2)>>2]|0;a=B(j,p)|0;if((a|0)>0){b=0;do{e=c[g+(b<<2)>>2]|0;c[f+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(a|0))}a=j<<1;if((j|0)>0){d=B(j,l)|0;e=B(j,q)|0;b=0;do{s=b+d|0;t=b+e|0;c[f+(t<<2)>>2]=c[g+(s<<2)>>2];c[f+(s<<2)>>2]=c[g+(t<<2)>>2];b=b+1|0}while((b|0)<(a|0));b=0;do{c[k+(b-j<<2)>>2]=c[k>>2];b=b+1|0}while((b|0)!=(j|0))}i=i+1|0;if((i|0)==(m|0))break;else h=h+88|0}}c[r+68>>2]=0;c[r+72>>2]=0;c[r+76>>2]=0;c[r+56>>2]=0;return}case 2:{c[r+4>>2]=18;return}default:{t=c[a>>2]|0;c[t+20>>2]=3;Sb[c[t>>2]&255](a);return}}}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=a+448|0;w=c[v>>2]|0;y=w+56|0;do if(!(c[y>>2]|0))if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,c[w+60+(c[w+68>>2]<<2)>>2]|0)|0))return;else{c[y>>2]=1;x=w+76|0;c[x>>2]=(c[x>>2]|0)+1;break}while(0);x=w+72|0;switch(c[x>>2]|0){case 2:{f=w+48|0;g=w+52|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[w+68>>2]<<2)>>2]|0,f,c[g>>2]|0,b,d,e);if((c[f>>2]|0)>>>0<(c[g>>2]|0)>>>0)return;c[x>>2]=0;if((c[d>>2]|0)>>>0>>0)h=9;else return;break}case 0:{f=w+48|0;g=w+52|0;h=9;break}case 1:{u=w+48|0;t=w+52|0;break}default:return}if((h|0)==9){c[f>>2]=0;p=c[a+328>>2]|0;c[g>>2]=p+-1;if((c[w+76>>2]|0)==(c[a+332>>2]|0)?(i=c[v>>2]|0,r=c[a+36>>2]|0,(r|0)>0):0){q=i+52|0;l=i+60+(c[i+68>>2]<<2)|0;j=c[a+216>>2]|0;k=0;while(1){u=B(c[j+40>>2]|0,c[j+12>>2]|0)|0;h=(u|0)/(p|0)|0;o=((c[j+48>>2]|0)>>>0)%(u>>>0)|0;o=(o|0)==0?u:o;if(!k)c[q>>2]=((o+-1|0)/(h|0)|0)+1;m=c[(c[l>>2]|0)+(k<<2)>>2]|0;n=h<<1;if((h|0)>0){i=m+(o+-1<<2)|0;h=0;do{c[m+(h+o<<2)>>2]=c[i>>2];h=h+1|0}while((h|0)<(n|0))}k=k+1|0;if((k|0)==(r|0))break;else j=j+88|0}}c[x>>2]=1;u=f;t=g}s=w+68|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[s>>2]<<2)>>2]|0,u,c[t>>2]|0,b,d,e);if((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)return;if((c[w+76>>2]|0)==1){g=c[v>>2]|0;f=c[a+328>>2]|0;r=c[a+36>>2]|0;if((r|0)>0){b=g+60|0;o=g+64|0;p=f+1|0;q=f+2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(f|0)|0;k=c[(c[b>>2]|0)+(i<<2)>>2]|0;l=c[(c[o>>2]|0)+(i<<2)>>2]|0;if((j|0)>0){m=B(j,p)|0;n=B(j,q)|0;g=0;do{w=g+m|0;a=g-j|0;c[k+(a<<2)>>2]=c[k+(w<<2)>>2];c[l+(a<<2)>>2]=c[l+(w<<2)>>2];a=g+n|0;c[k+(a<<2)>>2]=c[k+(g<<2)>>2];c[l+(a<<2)>>2]=c[l+(g<<2)>>2];g=g+1|0}while((g|0)!=(j|0))}i=i+1|0;if((i|0)==(r|0))break;else h=h+88|0}}}else f=c[a+328>>2]|0;c[s>>2]=c[s>>2]^1;c[y>>2]=0;c[u>>2]=f+1;c[t>>2]=f+2;c[x>>2]=2;return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[a+448>>2]|0;i=f+48|0;h=f+52|0;g=c[h>>2]|0;do if((c[i>>2]|0)>>>0>=g>>>0){f=f+8|0;if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,f)|0))return;else{c[i>>2]=0;g=c[h>>2]|0;break}}else f=f+8|0;while(0);_b[c[(c[a+456>>2]|0)+4>>2]&7](a,f,i,g,b,d,e);return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,0,0,0,b,d,e);return}function wu(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+452>>2]|0;if((c[a+340>>2]|0)>1)a=1;else{d=c[a+344>>2]|0;a=c[((c[a+332>>2]|0)==1?d+76|0:d+12|0)>>2]|0}c[b+28>>2]=a;c[b+20>>2]=0;c[b+24>>2]=0;return}function xu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[a+452>>2]|0;if(!(c[k+16>>2]|0)){l=a+156|0;c[l>>2]=0;return}a:do if(((c[a+80>>2]|0)!=0?(c[a+224>>2]|0)!=0:0)?(j=a+160|0,(c[j>>2]|0)!=0):0){d=k+112|0;e=c[d>>2]|0;if(!e){i=a+36|0;e=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[d>>2]=e}else i=a+36|0;if((c[i>>2]|0)>0){f=0;g=c[a+216>>2]|0;h=0;while(1){d=c[g+80>>2]|0;if(!d){l=20;break a}if(!(b[d>>1]|0)){l=20;break a}if(!(b[d+2>>1]|0)){l=20;break a}if(!(b[d+16>>1]|0)){l=20;break a}if(!(b[d+32>>1]|0)){l=20;break a}if(!(b[d+18>>1]|0)){l=20;break a}if(!(b[d+4>>1]|0)){l=20;break a}d=c[j>>2]|0;if((c[d+(h<<8)>>2]|0)<0){l=20;break a}m=d+(h<<8)+4|0;c[e+4>>2]=c[m>>2];m=c[m>>2]|0;n=d+(h<<8)+8|0;c[e+8>>2]=c[n>>2];m=c[n>>2]|m;n=d+(h<<8)+12|0;c[e+12>>2]=c[n>>2];n=m|c[n>>2];m=d+(h<<8)+16|0;c[e+16>>2]=c[m>>2];m=n|c[m>>2];d=d+(h<<8)+20|0;c[e+20>>2]=c[d>>2];f=(m|c[d>>2]|0)==0?f:1;h=h+1|0;if((h|0)>=(c[i>>2]|0))break;else{g=g+88|0;e=e+24|0}}if(f)d=36;else l=20}else l=20}else l=20;while(0);if((l|0)==20)d=34;c[k+12>>2]=d;n=a+156|0;c[n>>2]=0;return}function yu(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;u=z;x=a+452|0;v=c[x>>2]|0;y=a+340|0;if((c[y>>2]|0)>0){d=a+4|0;e=a+148|0;b=0;do{r=c[a+344+(b<<2)>>2]|0;t=c[r+12>>2]|0;s=B(t,c[e>>2]|0)|0;t=Mb[c[(c[d>>2]|0)+32>>2]&31](a,c[v+72+(c[r+4>>2]<<2)>>2]|0,s,t,1)|0;c[u+(b<<2)>>2]=t;b=b+1|0}while((b|0)<(c[y>>2]|0))}o=v+24|0;b=c[o>>2]|0;p=v+28|0;f=c[p>>2]|0;a:do if((b|0)<(f|0)){q=v+20|0;r=a+360|0;s=a+468|0;t=v+32|0;d=c[q>>2]|0;e=c[r>>2]|0;b:while(1){if(d>>>0>>0){do{n=c[y>>2]|0;if((n|0)>0){e=0;m=0;do{l=c[a+344+(m<<2)>>2]|0;j=c[l+56>>2]|0;k=B(j,d)|0;l=c[l+60>>2]|0;if((l|0)>0?(w=c[u+(m<<2)>>2]|0,(j|0)>0):0){i=0;do{f=0;g=(c[w+(i+b<<2)>>2]|0)+(k<<7)|0;h=e;while(1){c[v+32+(h<<2)>>2]=g;f=f+1|0;if((f|0)==(j|0))break;else{g=g+128|0;h=h+1|0}}e=j+e|0;i=i+1|0}while((i|0)<(l|0))}m=m+1|0}while((m|0)<(n|0))}if(!(Ib[c[(c[s>>2]|0)+4>>2]&63](a,t)|0))break b;d=d+1|0;e=c[r>>2]|0}while(d>>>0>>0);f=c[p>>2]|0}c[q>>2]=0;b=b+1|0;if((b|0)<(f|0))d=0;else break a}c[o>>2]=b;c[q>>2]=d;y=0;zb=z;return y|0}while(0);d=a+148|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;d=c[a+332>>2]|0;if(b>>>0>=d>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);y=4;zb=z;return y|0}e=c[x>>2]|0;if((c[y>>2]|0)>1)b=1;else{y=c[a+344>>2]|0;b=c[(b>>>0<(d+-1|0)>>>0?y+12|0:y+76|0)>>2]|0}c[e+28>>2]=b;c[e+20>>2]=0;c[e+24>>2]=0;y=3;zb=z;return y|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=c[a+452>>2]|0;w=a+332|0;x=(c[w>>2]|0)+-1|0;g=a+144|0;h=a+152|0;i=a+460|0;d=a+148|0;u=a+156|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[d>>2]|0)>>>0>(c[u>>2]|0)>>>0)break}if(!(Gb[c[c[i>>2]>>2]&127](a)|0)){d=0;j=20;break}}if((j|0)==20)return d|0;q=a+36|0;if((c[q>>2]|0)>0){r=a+4|0;s=a+472|0;o=c[a+216>>2]|0;p=0;while(1){if(c[o+52>>2]|0){d=o+12|0;t=c[d>>2]|0;n=B(t,c[u>>2]|0)|0;t=Mb[c[(c[r>>2]|0)+32>>2]&31](a,c[v+72+(p<<2)>>2]|0,n,t,0)|0;if((c[u>>2]|0)>>>0>>0)i=c[d>>2]|0;else{n=c[d>>2]|0;i=((c[o+32>>2]|0)>>>0)%(n>>>0)|0;i=(i|0)==0?n:i}k=c[(c[s>>2]|0)+4+(p<<2)>>2]|0;if((i|0)>0){l=o+28|0;m=o+40|0;n=o+36|0;h=c[b+(p<<2)>>2]|0;j=0;d=c[l>>2]|0;while(1){if(!d)d=0;else{e=0;f=c[t+(j<<2)>>2]|0;g=0;while(1){Yb[k&63](a,o,f,h,e);g=g+1|0;d=c[l>>2]|0;if(g>>>0>=d>>>0)break;else{e=(c[n>>2]|0)+e|0;f=f+128|0}}}j=j+1|0;if((j|0)==(i|0))break;else h=h+(c[m>>2]<<2)|0}}}p=p+1|0;if((p|0)>=(c[q>>2]|0))break;else o=o+88|0}}x=(c[u>>2]|0)+1|0;c[u>>2]=x;x=x>>>0<(c[w>>2]|0)>>>0?3:4;return x|0}function Bu(a){a=a|0;return 0}function Cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+452|0;I=c[N>>2]|0;J=(c[a+360>>2]|0)+-1|0;M=a+332|0;f=c[M>>2]|0;K=f+-1|0;G=I+24|0;d=c[G>>2]|0;H=I+28|0;g=c[H>>2]|0;do if((d|0)<(g|0)){y=I+20|0;z=a+436|0;A=a+468|0;C=I+32|0;D=a+368|0;E=a+340|0;F=a+472|0;e=a+148|0;x=d;f=g;d=c[y>>2]|0;a:while(1){if(d>>>0<=J>>>0){do{if(c[z>>2]|0)aP(c[C>>2]|0,0,c[D>>2]<<7|0)|0;if(!(Ib[c[(c[A>>2]|0)+4>>2]&63](a,C)|0))break a;f=c[E>>2]|0;if((f|0)>0){w=d>>>0>>0;g=0;v=0;do{m=c[a+344+(v<<2)>>2]|0;b:do if(c[m+52>>2]|0){h=c[m+4>>2]|0;n=c[(c[F>>2]|0)+4+(h<<2)>>2]|0;o=m+56|0;p=c[(w?o:m+72|0)>>2]|0;q=m+40|0;i=c[q>>2]|0;r=B(c[m+68>>2]|0,d)|0;s=m+60|0;l=c[s>>2]|0;if((l|0)>0){t=m+76|0;u=m+36|0;if((p|0)<=0){i=c[o>>2]|0;h=0;while(1){g=i+g|0;h=h+1|0;if((h|0)>=(l|0))break b}}j=(c[b+(h<<2)>>2]|0)+((B(i,x)|0)<<2)|0;k=0;h=l;f=i;while(1){if(!((c[e>>2]|0)>>>0>=K>>>0?(k+x|0)>=(c[t>>2]|0):0)){f=r;h=0;while(1){Yb[n&63](a,m,c[I+32+(h+g<<2)>>2]|0,j,f);h=h+1|0;if((h|0)==(p|0))break;else f=(c[u>>2]|0)+f|0}f=c[q>>2]|0;h=c[s>>2]|0}g=(c[o>>2]|0)+g|0;k=k+1|0;if((k|0)>=(h|0))break;else j=j+(f<<2)|0}f=c[E>>2]|0}}else g=(c[m+64>>2]|0)+g|0;while(0);v=v+1|0}while((v|0)<(f|0))}d=d+1|0}while(d>>>0<=J>>>0);f=c[H>>2]|0}c[y>>2]=0;d=x+1|0;if((d|0)<(f|0)){x=d;d=0}else{L=30;break}}if((L|0)==30){f=c[M>>2]|0;break}c[G>>2]=x;c[y>>2]=d;a=0;return a|0}else e=a+148|0;while(0);d=a+156|0;c[d>>2]=(c[d>>2]|0)+1;d=(c[e>>2]|0)+1|0;c[e>>2]=d;if(d>>>0>=f>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);a=4;return a|0}e=c[N>>2]|0;if((c[a+340>>2]|0)>1)d=1;else{a=c[a+344>>2]|0;d=c[(d>>>0<(f+-1|0)>>>0?a+12|0:a+76|0)>>2]|0}c[e+28>>2]=d;c[e+20>>2]=0;c[e+24>>2]=0;a=3;return a|0}function Du(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;oa=zb;zb=zb+128|0;ka=oa;la=c[a+452>>2]|0;na=a+332|0;ma=(c[na>>2]|0)+-1|0;n=a+144|0;f=c[n>>2]|0;i=a+152|0;g=c[i>>2]|0;a:do if((f|0)<=(g|0)){j=a+460|0;k=a+412|0;l=a+148|0;m=a+156|0;while(1){h=c[j>>2]|0;if(c[h+20>>2]|0)break a;if((f|0)==(g|0)?(c[l>>2]|0)>>>0>((c[m>>2]|0)+((c[k>>2]|0)==0&1)|0)>>>0:0)break a;if(!(Gb[c[h>>2]&127](a)|0)){f=0;break}f=c[n>>2]|0;g=c[i>>2]|0;if((f|0)>(g|0))break a}zb=oa;return f|0}while(0);ba=a+36|0;if((c[ba>>2]|0)>0){f=a+156|0;ca=a+4|0;da=la+112|0;ea=a+472|0;fa=ka+2|0;ga=ka+16|0;ha=ka+32|0;ia=ka+18|0;ja=ka+4|0;_=0;$=c[a+216>>2]|0;while(1){if(c[$+52>>2]|0){h=c[f>>2]|0;if(h>>>0>>0){i=c[$+12>>2]|0;g=i<<1;j=0;aa=i}else{i=c[$+12>>2]|0;aa=((c[$+32>>2]|0)>>>0)%(i>>>0)|0;aa=(aa|0)==0?i:aa;g=aa;j=1}if(!h){Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,0,g,0)|0;g=1}else{Y=B(i,h+-1|0)|0;Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,Y,i+g|0,0)|0;Y=Y+(c[$+12>>2]<<2)|0;g=0}i=(c[da>>2]|0)+(_*6<<2)|0;o=c[$+80>>2]|0;l=e[o>>1]|0;h=e[o+2>>1]|0;k=e[o+16>>1]|0;m=e[o+32>>1]|0;n=e[o+18>>1]|0;o=e[o+4>>1]|0;Z=c[(c[ea>>2]|0)+4+(_<<2)>>2]|0;if((aa|0)>0){X=(g|0)!=0;N=(j|0)!=0;O=aa+-1|0;P=$+28|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=l*36|0;U=h<<7;V=i+16|0;W=k<<7;M=h<<8;J=i+20|0;K=l*9|0;L=m<<7;H=k<<8;I=$+36|0;F=l*5|0;G=n<<7;D=m<<8;E=o<<7;C=n<<8;y=o<<8;z=$+40|0;w=0;x=c[d+(_<<2)>>2]|0;while(1){g=c[Y+(w<<2)>>2]|0;if(X&(w|0)==0)h=g;else h=c[Y+(w+-1<<2)>>2]|0;if(N&(w|0)==(O|0))i=g;else i=c[Y+(w+1<<2)>>2]|0;l=b[h>>1]|0;q=b[g>>1]|0;k=b[i>>1]|0;A=(c[P>>2]|0)+-1|0;s=k;t=q;u=l;v=0;r=0;p=i;while(1){Eu(g,ka,1);if(v>>>0>>0){m=b[p+128>>1]|0;n=b[g+128>>1]|0;o=b[h+128>>1]|0}else{m=s;n=t;o=u}i=c[Q>>2]|0;if((i|0)!=0&(b[fa>>1]|0)==0){j=B(T,q-n|0)|0;if((j|0)>-1){j=(j+U|0)/(M|0)|0;pa=1<0?((j|0)<(pa|0)?j:pa+-1|0):j}else{pa=(U-j|0)/(M|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[fa>>1]=i}i=c[R>>2]|0;if((i|0)!=0&(b[ga>>1]|0)==0){j=B(T,u-s|0)|0;if((j|0)>-1){pa=(j+W|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(W-j|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ga>>1]=i}i=c[S>>2]|0;if((i|0)!=0&(b[ha>>1]|0)==0){j=B(K,u-(t<<1)+s|0)|0;if((j|0)>-1){pa=(j+L|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(L-j|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ha>>1]=i}j=c[V>>2]|0;if((j|0)!=0&(b[ia>>1]|0)==0){i=B(F,l-k-o+m|0)|0;if((i|0)>-1){i=(i+G|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(G-i|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ia>>1]=i}j=c[J>>2]|0;if((j|0)!=0&(b[ja>>1]|0)==0){i=B(K,q-(t<<1)+n|0)|0;if((i|0)>-1){i=(i+E|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(E-i|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ja>>1]=i}Yb[Z&63](a,$,ka,x,r);v=v+1|0;if(v>>>0>A>>>0)break;else{l=u;q=t;k=s;s=m;t=n;u=o;g=g+128|0;r=(c[I>>2]|0)+r|0;h=h+128|0;p=p+128|0}}w=w+1|0;if((w|0)==(aa|0))break;else x=x+(c[z>>2]<<2)|0}}}_=_+1|0;if((_|0)>=(c[ba>>2]|0))break;else $=$+88|0}}else f=a+156|0;pa=(c[f>>2]|0)+1|0;c[f>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;zb=oa;return pa|0}function Eu(a,b,c){a=a|0;b=b|0;c=c|0;_O(b|0,a|0,c<<7|0)|0;return}function Fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[a+468>>2]|0;m=a+412|0;f=c[m>>2]|0;d=(f|0)==0;if(!(c[a+224>>2]|0)){if((d?(c[a+420>>2]|0)==0:0)?(c[a+424>>2]|0)==0:0){m=c[a+416>>2]|0;if((c[a+220>>2]|0)!=0|(m|0)<64?(m|0)!=(c[a+436>>2]|0):0)e=38}else e=38;if((e|0)==38){m=c[a>>2]|0;c[m+20>>2]=125;Ub[c[m+4>>2]&63](a,-1)}g=a+436|0;c[n+4>>2]=(c[g>>2]|0)==63?41:42;d=a+340|0;if((c[d>>2]|0)>0){b=0;do{e=c[a+344+(b<<2)>>2]|0;m=c[e+20>>2]|0;Lu(a,1,m,n+68+(m<<2)|0);if(c[g>>2]|0){m=c[e+24>>2]|0;Lu(a,0,m,n+84+(m<<2)|0)}c[n+24+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[d>>2]|0))}f=a+368|0;if((c[f>>2]|0)<=0){m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}e=0;do{b=c[a+344+(c[a+372+(e<<2)>>2]<<2)>>2]|0;c[n+100+(e<<2)>>2]=c[n+68+(c[b+20>>2]<<2)>>2];c[n+140+(e<<2)>>2]=c[n+84+(c[b+24>>2]<<2)>>2];a:do if(!(c[b+52>>2]|0))b=0;else{d=c[b+40>>2]|0;b=c[b+36>>2]|0;switch(c[g>>2]|0){case 0:{b=1;break a}case 3:{b=(c[4336+(((d|0)!=1&1)<<3)+(((b|0)!=1&1)<<2)>>2]|0)+1|0;break a}case 8:{m=d+-1|0;b=b+-1|0;b=(c[4352+((m>>>0<2?m:2)*12|0)+((b>>>0<2?b:2)<<2)>>2]|0)+1|0;break a}case 15:{m=d+-1|0;b=b+-1|0;b=(c[4400+((m>>>0<3?m:3)<<4)+((b>>>0<3?b:3)<<2)>>2]|0)+1|0;break a}case 24:{m=d+-1|0;b=b+-1|0;b=(c[4464+((m>>>0<4?m:4)*20|0)+((b>>>0<4?b:4)<<2)>>2]|0)+1|0;break a}case 35:{m=d+-1|0;b=b+-1|0;b=(c[4576+((m>>>0<5?m:5)*24|0)+((b>>>0<5?b:5)<<2)>>2]|0)+1|0;break a}case 48:{m=d+-1|0;b=b+-1|0;b=(c[4720+((m>>>0<6?m:6)*28|0)+((b>>>0<6?b:6)<<2)>>2]|0)+1|0;break a}default:{m=d+-1|0;b=b+-1|0;b=(c[4928+((m>>>0<7?m:7)<<5)+((b>>>0<7?b:7)<<2)>>2]|0)+1|0;break a}}}while(0);c[n+180+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[f>>2]|0));m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}k=a+416|0;b=c[k>>2]|0;if(d)if(!b)e=7;else e=11;else if(((b|0)>=(f|0)?(b|0)<=(c[a+436>>2]|0):0)?(c[a+340>>2]|0)==1:0)e=7;else e=11;do if((e|0)==7){b=c[a+420>>2]|0;if(b){b=b+-1|0;if((b|0)!=(c[a+424>>2]|0)){e=11;break}}else b=c[a+424>>2]|0;if((b|0)>13)e=11}while(0);if((e|0)==11){l=c[a>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[a>>2]|0)+28>>2]=c[k>>2];c[(c[a>>2]|0)+32>>2]=c[a+420>>2];c[(c[a>>2]|0)+36>>2]=c[a+424>>2];Sb[c[c[a>>2]>>2]&255](a)}l=a+340|0;b=c[l>>2]|0;if((b|0)>0){i=a+160|0;g=a+420|0;j=a+424|0;h=0;do{e=c[(c[a+344+(h<<2)>>2]|0)+4>>2]|0;f=c[i>>2]|0;b=c[m>>2]|0;if(b){if((c[f+(e<<8)>>2]|0)<0){b=c[a>>2]|0;c[b+20>>2]=118;c[b+24>>2]=e;c[(c[a>>2]|0)+28>>2]=0;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);b=c[m>>2]|0}}else b=0;if((b|0)<=(c[k>>2]|0))while(1){d=f+(e<<8)+(b<<2)|0;o=c[d>>2]|0;if((c[g>>2]|0)!=(((o|0)>0?o:0)|0)){o=c[a>>2]|0;c[o+20>>2]=118;c[o+24>>2]=e;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1)}c[d>>2]=c[j>>2];if((b|0)<(c[k>>2]|0))b=b+1|0;else break}h=h+1|0;b=c[l>>2]|0}while((h|0)<(b|0))}else g=a+420|0;e=c[m>>2]|0;o=(e|0)==0;c[n+4>>2]=(c[g>>2]|0)==0?(o?37:38):o?39:40;b:do if((b|0)>0){f=n+64|0;b=0;while(1){d=c[a+344+(b<<2)>>2]|0;if(!e){if(!(c[g>>2]|0)){o=c[d+20>>2]|0;Lu(a,1,o,n+48+(o<<2)|0)}}else{k=c[d+24>>2]|0;o=n+48+(k<<2)|0;Lu(a,0,k,o);c[f>>2]=c[o>>2]}c[n+24+(b<<2)>>2]=0;b=b+1|0;if((b|0)>=(c[l>>2]|0))break b;e=c[m>>2]|0}}while(0);c[n+20>>2]=0;o=n+16|0;c[o>>2]=0;o=n+12|0;c[o>>2]=0;o=n+40|0;c[o>>2]=0;a=a+280|0;a=c[a>>2]|0;o=n+44|0;c[o>>2]=a;return}function Gu(a){a=a|0;var b=0;b=(c[a+468>>2]|0)+16|0;a=(c[a+464>>2]|0)+24|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function Hu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;t=c[a+424>>2]|0;i=a+280|0;if(c[i>>2]|0?(g=z+44|0,(c[g>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}h=a+340|0;if((c[h>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[h>>2]|0))}c[z+20>>2]=0;c[g>>2]=c[i>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;r=a+24|0;h=c[r>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;s=x+4|0;c[s>>2]=f;u=z+12|0;i=c[u>>2]|0;v=z+16|0;j=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];q=a+368|0;do if((c[q>>2]|0)>0){o=x+8|0;p=x+12|0;l=0;while(1){m=c[e+(l<<2)>>2]|0;n=c[a+372+(l<<2)>>2]|0;h=c[z+48+(c[(c[a+344+(n<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((j|0)<8){if(!(Ou(x,i,j,0)|0)){f=0;k=28;break}i=c[o>>2]|0;j=c[p>>2]|0;if((j|0)<8){f=1;k=17}else k=15}else k=15;if((k|0)==15){k=0;f=i>>j+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;k=17}else{f=d[h+1168+f>>0]|0;j=j-g|0}}if((k|0)==17){f=Pu(x,i,j,h,f)|0;if((f|0)<0){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}if(!f)f=0;else{if((j|0)<(f|0)){if(!(Ou(x,i,j,f)|0)){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}j=j-f|0;k=c[5184+(f<<2)>>2]|0;h=i>>j&k;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:k)|0}k=y+4+(n<<2)|0;n=(c[k>>2]|0)+f|0;c[k>>2]=n;b[m>>1]=n<=(c[q>>2]|0)){k=25;break}}if((k|0)==25){h=c[r>>2]|0;g=c[x>>2]|0;f=c[s>>2]|0;break}else if((k|0)==28){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=i;c[v>>2]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;zb=A;return z|0}function Iu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+32|0;w=y;x=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=x+44|0,(c[i>>2]|0)==0):0){u=x+16|0;v=c[a+464>>2]|0;t=v+24|0;c[t>>2]=(c[t>>2]|0)+((c[u>>2]|0)/8|0);c[u>>2]=0;if(!(Gb[c[v+8>>2]&127](a)|0)){x=0;zb=y;return x|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[x+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[x+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[x+40>>2]=0}if(!(c[x+40>>2]|0)){v=x+20|0;f=c[v>>2]|0;if(!f){c[w+16>>2]=a;r=a+24|0;t=c[r>>2]|0;c[w>>2]=c[t>>2];s=w+4|0;c[s>>2]=c[t+4>>2];t=x+12|0;g=c[t>>2]|0;u=x+16|0;h=c[u>>2]|0;n=c[a+416>>2]|0;o=c[a+424>>2]|0;p=c[a+432>>2]|0;k=c[e>>2]|0;l=c[x+64>>2]|0;f=c[a+412>>2]|0;a:do if((f|0)<=(n|0)){q=w+8|0;m=w+12|0;j=f;b:while(1){if((h|0)<8){if(!(Ou(w,g,h,0)|0)){f=0;a=36;break}g=c[q>>2]|0;h=c[m>>2]|0;if((h|0)<8){f=1;a=19}else a=17}else a=17;if((a|0)==17){a=0;f=g>>h+-8&255;i=c[l+144+(f<<2)>>2]|0;if(!i){f=9;a=19}else{f=d[l+1168+f>>0]|0;h=h-i|0}}if((a|0)==19){f=Pu(w,g,h,l,f)|0;if((f|0)<0){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}e=f>>>4;i=f&15;if(!i){switch(e&268435455|0){case 0:{f=0;break a}case 15:break;default:{a=27;break b}}f=j+15|0}else{f=e+j|0;if((h|0)<(i|0)){if(!(Ou(w,g,h,i)|0)){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}h=h-i|0;j=c[5184+(i<<2)>>2]|0;a=g>>h&j;b[k+(c[p+(f<<2)>>2]<<1)>>1]=a-((a|0)>(c[5184+(i+-1<<2)>>2]|0)?0:j)<>2]|0;g=c[q>>2]|0;break}else f=h;while(0);h=f-e|0;f=i+-1+(g>>h&c[5184+(e<<2)>>2])|0;break}else if((a|0)==36){zb=y;return f|0}}else f=0;while(0);r=c[r>>2]|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[s>>2];c[t>>2]=g;c[u>>2]=h}else f=f+-1|0;c[v>>2]=f}x=x+44|0;c[x>>2]=(c[x>>2]|0)+-1;x=1;zb=y;return x|0}function Ju(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;q=s;r=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=r+44|0,(c[i>>2]|0)==0):0){o=r+16|0;p=c[a+464>>2]|0;n=p+24|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)/8|0);c[o>>2]=0;if(!(Gb[c[p+8>>2]&127](a)|0)){r=0;zb=s;return r|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[r+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[r+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[r+40>>2]=0}c[q+16>>2]=a;m=a+24|0;h=c[m>>2]|0;g=c[h>>2]|0;c[q>>2]=g;f=c[h+4>>2]|0;n=q+4|0;c[n>>2]=f;o=r+12|0;i=c[o>>2]|0;p=r+16|0;j=c[p>>2]|0;l=1<>2];k=a+368|0;do if((c[k>>2]|0)>0){h=q+8|0;a=q+12|0;g=0;f=j;while(1){if((f|0)<1){if(!(Ou(q,i,f,1)|0)){f=0;a=19;break}f=c[a>>2]|0;i=c[h>>2]|0}f=f+-1|0;if(1<>2]|0;b[j>>1]=l|(e[j>>1]|0)}g=g+1|0;if((g|0)>=(c[k>>2]|0)){a=17;break}}if((a|0)==17){j=f;h=c[m>>2]|0;g=c[q>>2]|0;f=c[n>>2]|0;break}else if((a|0)==19){zb=s;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[o>>2]=i;c[p>>2]=j;r=r+44|0;c[r>>2]=(c[r>>2]|0)+-1;r=1;zb=s;return r|0}function Ku(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+288|0;E=G+256|0;D=G;F=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=F+44|0,(c[i>>2]|0)==0):0){z=F+16|0;A=c[a+464>>2]|0;y=A+24|0;c[y>>2]=(c[y>>2]|0)+((c[z>>2]|0)/8|0);c[z>>2]=0;if(!(Gb[c[A+8>>2]&127](a)|0)){F=0;zb=G;return F|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[F+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[F+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[F+40>>2]=0}do if(!(c[F+40>>2]|0)){q=c[a+416>>2]|0;s=c[a+424>>2]|0;r=1<>2]|0;c[E+16>>2]=a;w=a+24|0;y=c[w>>2]|0;c[E>>2]=c[y>>2];x=E+4|0;c[x>>2]=c[y+4>>2];y=F+12|0;j=c[y>>2]|0;z=F+16|0;g=c[z>>2]|0;A=F+20|0;h=c[A>>2]|0;u=c[e>>2]|0;l=c[F+64>>2]|0;i=c[a+412>>2]|0;o=E+8|0;p=E+12|0;a:do if(!h){f=0;b:while(1){if((g|0)<8){if(!(Ou(E,j,g,0)|0))break a;j=c[o>>2]|0;g=c[p>>2]|0;if((g|0)<8){h=1;v=17}else v=15}else v=15;if((v|0)==15){v=0;h=j>>g+-8&255;e=c[l+144+(h<<2)>>2]|0;if(!e){h=9;v=17}else{h=d[l+1168+h>>0]|0;g=g-e|0}}if((v|0)==17){v=0;g=Pu(E,j,g,l,h)|0;if((g|0)<0)break a;h=g;g=c[p>>2]|0;j=c[o>>2]|0}e=h>>>4;switch(h&15){case 0:{if((e|0)==15)k=0;else break b;break}case 1:{v=21;break}default:{v=c[a>>2]|0;c[v+20>>2]=121;Ub[c[v+4>>2]&63](a,-1);v=21}}if((v|0)==21){v=0;if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;k=(1<>2]<<1)|0;do if(!(b[e>>1]|0))if((h|0)<1)break c;else h=h+-1|0;else{if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,n=m<<16>>16,(r&n|0)==0):0)if(m<<16>>16>-1){b[e>>1]=r+n;break}else{b[e>>1]=s+n;break}}while(0);e=i+1|0;if((i|0)<(q|0))i=e;else{i=e;break}}if(k){e=c[t+(i<<2)>>2]|0;b[u+(e<<1)>>1]=k;c[D+(f<<2)>>2]=e;f=f+1|0}if((i|0)<(q|0))i=i+1|0;else{h=0;f=j;v=58;break a}}h=1<>2]|0;j=c[o>>2]|0}g=g-e|0;h=(j>>g&c[5184+(e<<2)>>2])+h|0;if(!h){h=0;f=j;v=58}else v=46}else{h=1;v=46}}else{f=0;v=46}while(0);d:do if((v|0)==46){while(1){e=u+(c[t+(i<<2)>>2]<<1)|0;do if(b[e>>1]|0){if((g|0)<1){if(!(Ou(E,j,g,1)|0))break d;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,C=B<<16>>16,(r&C|0)==0):0)if(B<<16>>16>-1){b[e>>1]=r+C;break}else{b[e>>1]=s+C;break}}while(0);if((i|0)<(q|0))i=i+1|0;else break}h=h+-1|0;f=j;v=58}while(0);if((v|0)==58){D=c[w>>2]|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[x>>2];c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;break}if(!f){F=0;zb=G;return F|0}do{f=f+-1|0;b[u+(c[D+(f<<2)>>2]<<1)>>1]=0}while((f|0)!=0);f=0;zb=G;return f|0}while(0);F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;zb=G;return F|0}function Lu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+1312|0;k=q+1040|0;p=q;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}n=(e|0)!=0;o=c[(n?b+180+(f<<2)|0:b+196+(f<<2)|0)>>2]|0;if(!o){m=c[b>>2]|0;c[m+20>>2]=52;c[m+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}e=c[g>>2]|0;if(!e){l=Jb[c[c[b+4>>2]>>2]&63](b,1,1424)|0;c[g>>2]=l;m=b}else{m=b;l=e}c[l+140>>2]=o;j=a[o+1>>0]|0;e=j&255;if(!(j<<24>>24))e=0;else aP(k|0,1,e|0)|0;f=a[o+2>>0]|0;g=f&255;h=e+g|0;if(h>>>0>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,2,g|0)|0;e=h}f=a[o+3>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,3,g|0)|0;e=h}f=a[o+4>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,4,g|0)|0;e=h}f=a[o+5>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,5,g|0)|0;e=h}f=a[o+6>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,6,g|0)|0;e=h}f=a[o+7>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,7,g|0)|0;e=h}f=a[o+8>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,8,g|0)|0;e=h}f=a[o+9>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,9,g|0)|0;e=h}f=a[o+10>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,10,g|0)|0;e=h}f=a[o+11>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,11,g|0)|0;e=h}f=a[o+12>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,12,g|0)|0;e=h}f=a[o+13>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,13,g|0)|0;e=h}f=a[o+14>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,14,g|0)|0;e=h}f=a[o+15>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,15,g|0)|0;e=h}f=a[o+16>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(!(f<<24>>24))h=e;else aP(k+e|0,16,g|0)|0;a[k+h>>0]=0;f=a[k>>0]|0;if(f<<24>>24){g=0;j=f<<24>>24;e=0;while(1){if((j|0)==(f<<24>>24|0)){f=g;while(1){i=e+1|0;c[p+(e<<2)>>2]=f;e=f+1|0;f=a[k+i>>0]|0;if((j|0)==(f<<24>>24|0)){f=e;e=i}else{g=e;e=i;break}}}if((g|0)>=(1<>2]|0;c[i+20>>2]=9;Sb[c[i>>2]&255](m)}if(!(f<<24>>24))break;else{g=g<<1;j=j+1|0}}}e=o+1|0;if(!(a[e>>0]|0)){f=0;e=-1}else{c[l+76>>2]=0-(c[p>>2]|0);e=d[e>>0]|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+4>>2]=e;e=o+2|0;if(!(a[e>>0]|0))e=-1;else{c[l+80>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+8>>2]=e;e=o+3|0;if(!(a[e>>0]|0))e=-1;else{c[l+84>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+12>>2]=e;e=o+4|0;if(!(a[e>>0]|0))e=-1;else{c[l+88>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+16>>2]=e;e=o+5|0;if(!(a[e>>0]|0))e=-1;else{c[l+92>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+20>>2]=e;e=o+6|0;if(!(a[e>>0]|0))e=-1;else{c[l+96>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+24>>2]=e;e=o+7|0;if(!(a[e>>0]|0))e=-1;else{c[l+100>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+28>>2]=e;e=o+8|0;if(!(a[e>>0]|0))e=-1;else{c[l+104>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+32>>2]=e;e=o+9|0;if(!(a[e>>0]|0))e=-1;else{c[l+108>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+36>>2]=e;e=o+10|0;if(!(a[e>>0]|0))e=-1;else{c[l+112>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+40>>2]=e;e=o+11|0;if(!(a[e>>0]|0))e=-1;else{c[l+116>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+44>>2]=e;e=o+12|0;if(!(a[e>>0]|0))e=-1;else{c[l+120>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+48>>2]=e;e=o+13|0;if(!(a[e>>0]|0))e=-1;else{c[l+124>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+52>>2]=e;e=o+14|0;if(!(a[e>>0]|0))e=-1;else{c[l+128>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+56>>2]=e;e=o+15|0;if(!(a[e>>0]|0))e=-1;else{c[l+132>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+60>>2]=e;e=o+16|0;if(!(a[e>>0]|0))e=-1;else{c[l+136>>2]=f-(c[p+(f<<2)>>2]|0);e=c[p+(f+(d[e>>0]|0)+-1<<2)>>2]|0}c[l+64>>2]=e;c[l+68>>2]=1048575;aP(l+144|0,0,1024)|0;k=o+1|0;if(!(a[k>>0]|0))e=0;else{j=1;e=0;while(1){i=o+17+e|0;f=128;g=c[p+(e<<2)>>2]<<7;while(1){c[l+144+(g<<2)>>2]=1;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}k=o+2|0;if(a[k>>0]|0){j=1;while(1){i=o+17+e|0;f=64;g=c[p+(e<<2)>>2]<<6;while(1){c[l+144+(g<<2)>>2]=2;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}g=o+3|0;if(a[g>>0]|0){f=1;while(1){k=c[p+(e<<2)>>2]<<5;j=o+17+e|0;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;i=k|1;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=i+1|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|3;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+3|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|7;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+7|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|15;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+7|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+8|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+9|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+10|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+11|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+12|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+13|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+14|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+15|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;k=k|31;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+4|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<4;k=o+17+e|0;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|7;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+3|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+4|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+5|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+6|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+7|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;r=r|15;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+5|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<3;k=o+17+e|0;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;r=r|7;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+6|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<2;k=o+17+e|0;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;r=r|3;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+7|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<1;k=o+17+e|0;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;r=r|1;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+8|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]|0;c[l+144+(r<<2)>>2]=8;a[l+1168+r>>0]=a[o+17+e>>0]|0;if(f>>>0<(d[g>>0]|0)>>>0){f=f+1|0;e=e+1|0}else break}}if(!(n&(h|0)>0)){zb=q;return}e=0;do{if((d[o+17+e>>0]|0)>15){r=c[b>>2]|0;c[r+20>>2]=9;Sb[c[r>>2]&255](m)}e=e+1|0}while((e|0)!=(h|0));zb=q;return}function Mu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=z+44|0,(c[i>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[z+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;s=a+24|0;h=c[s>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;t=x+4|0;c[t>>2]=f;u=z+12|0;j=c[u>>2]|0;v=z+16|0;i=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];r=a+368|0;do if((c[r>>2]|0)>0){p=x+8|0;q=x+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[z+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(x,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[z+140+(o<<2)>>2]|0;k=c[z+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=48}else{f=1;m=48}else{if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=y+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(x,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;g=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(x,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;h=c[5184+(g<<2)>>2]|0;B=j>>i&h;b[l+(c[2064+(f<<2)>>2]<<1)>>1]=B-((B|0)>(c[5184+(g+-1<<2)>>2]|0)?0:h);g=f}f=g+1|0}while((f|0)<(k|0));if((g|0)<63)m=48}else{f=1;m=48}}while(0);c:do if((m|0)==48){h=f;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(x,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<64)}while(0);o=o+1|0;if((o|0)>=(c[r>>2]|0)){m=64;break}}if((m|0)==64){h=c[s>>2]|0;g=c[x>>2]|0;f=c[t>>2]|0;break}else if((m|0)==67){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=j;c[v>>2]=i;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}B=z+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=A;return B|0}function Nu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+48|0;z=C+20|0;A=C;B=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=B+44|0,(c[i>>2]|0)==0):0){x=B+16|0;y=c[a+464>>2]|0;w=y+24|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!(Gb[c[y+8>>2]&127](a)|0)){B=0;zb=C;return B|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[B+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[B+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[B+40>>2]=0}if(!(c[B+40>>2]|0)){r=c[a+432>>2]|0;s=c[a+436>>2]|0;c[z+16>>2]=a;u=a+24|0;h=c[u>>2]|0;g=c[h>>2]|0;c[z>>2]=g;f=c[h+4>>2]|0;v=z+4|0;c[v>>2]=f;w=B+12|0;j=c[w>>2]|0;x=B+16|0;i=c[x>>2]|0;y=B+20|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];t=a+368|0;do if((c[t>>2]|0)>0){p=z+8|0;q=z+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[B+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(z,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[B+140+(o<<2)>>2]|0;k=c[B+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=47}else{f=1;m=47}else{if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=A+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;while(1){if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(z,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;f=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(z,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;m=c[5184+(g<<2)>>2]|0;h=j>>i&m;b[l+(c[r+(f<<2)>>2]<<1)>>1]=h-((h|0)>(c[5184+(g+-1<<2)>>2]|0)?0:m)}f=f+1|0;if((f|0)>=(k|0)){m=47;break}}}else{f=1;m=47}}while(0);c:do if((m|0)==47)if((f|0)<=(s|0)){h=f;do{if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(z,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<=(s|0))}while(0);o=o+1|0;if((o|0)>=(c[t>>2]|0)){m=64;break}}if((m|0)==64){h=c[u>>2]|0;g=c[z>>2]|0;f=c[v>>2]|0;break}else if((m|0)==67){zb=C;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[w>>2]=j;c[x>>2]=i;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2]}B=B+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=C;return B|0}function Ou(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;l=m+440|0;a:do if(!(c[l>>2]|0)){if((e|0)<25){k=m+24|0;j=e;b:while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break}g=c[k>>2]|0;h=c[g+4>>2]|0;g=c[g>>2]|0}h=h+-1|0;i=g+1|0;e=a[g>>0]|0;g=e&255;c:do if(e<<24>>24==-1){g=i;while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break b}e=c[k>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;switch(e<<24>>24){case 0:{e=255;break c}case -1:break;default:{o=13;break b}}}}else{e=g;g=i}while(0);d=e|d<<8;e=j+8|0;if((j|0)<17)j=e;else break a}if((o|0)==13){c[l>>2]=e&255;e=j;i=h;o=15;break}else if((o|0)==20)return g|0}}else{i=h;o=15}while(0);if((o|0)==15)if((e|0)<(f|0)){h=m+468|0;if(!(c[(c[h>>2]|0)+40>>2]|0)){o=c[m>>2]|0;c[o+20>>2]=120;Ub[c[o+4>>2]&63](m,-1);c[(c[h>>2]|0)+40>>2]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function Pu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!(Ou(a,b,e,g)|0)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[5184+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!(Ou(a,b,e,1)|0)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;a=c[f>>2]|0;c[a+20>>2]=121;Ub[c[a+4>>2]&63](f,-1);f=0;return f|0}else{f=d[(c[f+72+(g<<2)>>2]|0)+h+((c[f+140>>2]|0)+17)>>0]|0;return f|0}return 0}function Qu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+468>>2]|0;p=b+224|0;q=b+412|0;f=c[q>>2]|0;e=(f|0)==0;do if(c[p>>2]|0){m=b+416|0;d=c[m>>2]|0;if(e)if(!d)n=7;else n=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+436>>2]|0):0)?(c[b+340>>2]|0)==1:0)n=7;else n=11;do if((n|0)==7){d=c[b+420>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+424>>2]|0)){n=11;break}}else d=c[b+424>>2]|0;if((d|0)>13)n=11}while(0);if((n|0)==11){l=c[b>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[b>>2]|0)+28>>2]=c[m>>2];c[(c[b>>2]|0)+32>>2]=c[b+420>>2];c[(c[b>>2]|0)+36>>2]=c[b+424>>2];Sb[c[c[b>>2]>>2]&255](b)}l=b+340|0;d=c[l>>2]|0;if((d|0)>0){j=b+160|0;g=b+420|0;k=b+424|0;i=0;do{f=c[(c[b+344+(i<<2)>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[q>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[(c[b>>2]|0)+28>>2]=0;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);d=c[q>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;r=c[e>>2]|0;if((c[g>>2]|0)!=(((r|0)>0?r:0)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=f;c[(c[b>>2]|0)+28>>2]=d;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}i=i+1|0;d=c[l>>2]|0}while((i|0)<(d|0))}else g=b+420|0;e=(c[q>>2]|0)==0;f=o+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=43;k=l;break}else{c[f>>2]=44;k=l;break}else if(e){c[f>>2]=45;k=l;break}else{c[f>>2]=46;k=l;break}}else{if((e?(c[b+420>>2]|0)==0:0)?(c[b+424>>2]|0)==0:0){r=c[b+416>>2]|0;if((r|0)<64?(r|0)!=(c[b+436>>2]|0):0)n=36}else n=36;if((n|0)==36){r=c[b>>2]|0;c[r+20>>2]=125;Ub[c[r+4>>2]&63](b,-1)}c[o+4>>2]=47;d=b+340|0;k=d;d=c[d>>2]|0}while(0);if((d|0)<=0){q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}h=b+436|0;i=b+420|0;j=b+4|0;g=0;do{f=c[b+344+(g<<2)>>2]|0;if(c[p>>2]|0)if(!(c[q>>2]|0)){if(!(c[i>>2]|0))n=43}else n=50;else n=43;do if((n|0)==43){n=0;d=c[f+20>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+60+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,64)|0;c[e>>2]=d}e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[o+24+(g<<2)>>2]=0;c[o+40+(g<<2)>>2]=0;if(!(c[p>>2]|0))if(!(c[h>>2]|0))break;else{n=50;break}else if(!(c[q>>2]|0))break;else{n=50;break}}while(0);if((n|0)==50){n=0;d=c[f+24>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+124+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,256)|0;c[e>>2]=d}aP(d|0,0,256)|0}g=g+1|0}while((g|0)<(c[k>>2]|0));q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}function Ru(a){a=a|0;return}function Su(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){r=c[e>>2]|0;c[r+20>>2]=25;Sb[c[r>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{t=13;break}else if(!(c[j>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}o=s+20|0;if((c[o>>2]|0)==-1)return 1;p=e+368|0;if((c[p>>2]|0)<=0)return 1;q=e+424|0;n=0;a:while(1){r=c[f+(n<<2)>>2]|0;l=c[e+372+(n<<2)>>2]|0;j=c[(c[e+344+(l<<2)>>2]|0)+20>>2]|0;h=s+60+(j<<2)|0;k=s+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[s+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768)break a;h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=s+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[r>>1]=g<>2];n=n+1|0;if((n|0)>=(c[p>>2]|0)){t=37;break}}if((t|0)==37)return 1;t=c[e>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](e,-1);c[o>>2]=-1;return 1}function Tu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){t=c[e>>2]|0;c[t+20>>2]=25;Sb[c[t>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}t=s+20|0;if((c[t>>2]|0)==-1)return 1;r=c[e+432>>2]|0;p=c[f>>2]|0;o=c[(c[e+344>>2]|0)+24>>2]|0;q=s+124+(o<<2)|0;l=s+188|0;m=e+416|0;n=e+424|0;o=e+264+o|0;h=(c[e+412>>2]|0)+-1|0;a:while(1){g=(c[q>>2]|0)+(h*3|0)|0;if(Xu(e,g)|0){r=36;break}j=h+1|0;if(!(Xu(e,g+1|0)|0)){i=g;h=j;while(1){if((h|0)>=(c[m>>2]|0)){r=23;break a}g=i+3|0;j=h+1|0;if(!(Xu(e,i+4|0)|0)){i=g;h=j}else break}}k=Xu(e,l)|0;i=g+2|0;g=Xu(e,i)|0;if(g){if(Xu(e,i)|0){g=g<<1;h=(c[q>>2]|0)+((h|0)<(d[o>>0]|0|0)?189:217)|0;if(Xu(e,h)|0)do{g=g<<1;if((g|0)==32768){r=30;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{s=(Xu(e,i)|0)==0;g=(s?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(j<<2)>>2]<<1)>>1]=((k|0)==0?g+1|0:~g)<>2];if((j|0)<(c[m>>2]|0))h=j;else{r=36;break}}if((r|0)==23){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==30){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==36)return 1;return 0}function Uu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[d+468>>2]|0;p=d+280|0;if(c[p>>2]|0){s=r+56|0;g=c[s>>2]|0;if(!g){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){o=c[d>>2]|0;c[o+20>>2]=25;Sb[c[o>>2]&255](d)}h=d+340|0;if((c[h>>2]|0)>0){i=d+224|0;j=d+412|0;k=d+436|0;l=d+420|0;g=0;do{m=c[d+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))q=10}else q=13;else q=10;do if((q|0)==10){q=0;n=c[r+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[r+24+(g<<2)>>2]=0;c[r+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{q=13;break}else if(!(c[j>>2]|0))break;else{q=13;break}}while(0);if((q|0)==13){q=0;aP(c[r+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=-16;g=c[p>>2]|0;c[s>>2]=g}c[s>>2]=g+-1}h=r+188|0;i=1<>2];j=d+368|0;if((c[j>>2]|0)<=0)return 1;g=0;do{if(Xu(d,h)|0){s=c[f+(g<<2)>>2]|0;b[s>>1]=i|(e[s>>1]|0)}g=g+1|0}while((g|0)<(c[j>>2]|0));return 1}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[d+468>>2]|0;o=d+280|0;if(c[o>>2]|0){p=q+56|0;f=c[p>>2]|0;if(!f){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){s=c[d>>2]|0;c[s+20>>2]=25;Sb[c[s>>2]&255](d)}g=d+340|0;if((c[g>>2]|0)>0){h=d+224|0;i=d+412|0;j=d+436|0;k=d+420|0;f=0;do{l=c[d+344+(f<<2)>>2]|0;if(c[h>>2]|0)if(!(c[i>>2]|0)){if(!(c[k>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;m=c[q+60+(c[l+20>>2]<<2)>>2]|0;n=m+64|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[q+24+(f<<2)>>2]=0;c[q+40+(f<<2)>>2]=0;if(!(c[h>>2]|0))if(!(c[j>>2]|0))break;else{t=13;break}else if(!(c[i>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[q+124+(c[l+24>>2]<<2)>>2]|0,0,256)|0}f=f+1|0}while((f|0)<(c[g>>2]|0))}c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=-16;f=c[o>>2]|0;c[p>>2]=f}c[p>>2]=f+-1}r=q+20|0;if((c[r>>2]|0)==-1)return 1;s=c[d+432>>2]|0;n=c[e>>2]|0;g=c[(c[d+344>>2]|0)+24>>2]|0;p=c[d+424>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(f<<2)>>2]<<1)>>1]|0)break;f=f+-1|0;if(!f){f=0;break}}m=q+124+(g<<2)|0;j=q+188|0;k=o&65535;l=p&65535;g=(c[d+412>>2]|0)+-1|0;a:while(1){h=(c[m>>2]|0)+(g*3|0)|0;if((g|0)>=(f|0)?Xu(d,h)|0:0){t=38;break}g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;b:do if(!(b[i>>1]|0)){while(1){if(Xu(d,h+1|0)|0)break;if((g|0)>=(c[e>>2]|0)){t=35;break a}h=h+3|0;g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;if(b[i>>1]|0){t=26;break b}}if(!(Xu(d,j)|0)){b[i>>1]=k;break}else{b[i>>1]=l;break}}else t=26;while(0);do if((t|0)==26){t=0;if(Xu(d,h+2|0)|0){q=b[i>>1]|0;h=q<<16>>16;if(q<<16>>16<0){b[i>>1]=p+h;break}else{b[i>>1]=o+h;break}}}while(0);if((g|0)>=(c[e>>2]|0)){t=38;break}}if((t|0)==35){t=c[d>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](d,-1);c[r>>2]=-1;return 1}else if((t|0)==38)return 1;return 0} +function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;Jg(a+32|0,b);d=Ah(b)|0;d=Ng(c[d>>2]|0)|0;f=Ah(b)|0;f=Og(c[f>>2]|0)|0;e=Pg(b)|0;uj(a+92|0,d,f,e,Qg(b)|0,36,3.0,1.5,5,.800000011920929);e=Ah(b)|0;e=Ng(c[e>>2]|0)|0;c[a>>2]=e;e=Ah(b)|0;e=Og(c[e>>2]|0)|0;c[a+4>>2]=e;e=a+16|0;Bh(e,c[a+8>>2]|0);f=a+20|0;a=a+12|0;b=0;while(1){d=c[e>>2]|0;if(b>>>0>=(((c[f>>2]|0)-d|0)/12|0)>>>0)break;Ch(d+(b*12|0)|0,c[a>>2]|0);b=b+1|0}return}function Ah(a){a=a|0;return a+4|0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;kh(f);d=f}c[g>>2]=a}}else Kh(a,b-e|0);return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;lh(f);d=f}c[g>>2]=a}}else Dh(a,b-e|0);return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Fh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Gh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Hh(f,b);Ih(a,f);Jh(f);break}}else Eh(a,b);while(0);zb=i;return}function Eh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Fh(a){a=a|0;return 357913941}function Gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Hh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Jh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;lh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Mh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Nh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Oh(f,b);Ph(a,f);Qh(f);break}}else Lh(a,b);while(0);zb=i;return}function Lh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Qh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;kh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=zb;zb=zb+32|0;d=e;if((Pg(b)|0)<=0){f=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,147)|0,35007)|0,22967)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);g=XF(d,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(d);QE(f,g)|0;ME(f)|0;ua()}Bq(d,23866);if(Sh(d)|0)Zg(a+32|0,b);Cq(d);Bq(d,23878);if(Sh(d)|0)Th(a,b,a+32|0);Cq(d);Bq(d,23898);if(Sh(d)|0)Uh(a,b);Cq(d);Bq(d,23907);if(Sh(d)|0)Vh(a);Cq(d);Bq(d,23921);if(Sh(d)|0)Wh(a,b);Cq(d);zb=e;return}function Sh(a){a=a|0;return 1}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0.0;ha=zb;zb=zb+48|0;aa=ha;ca=a+60|0;da=a+64|0;c[da>>2]=c[ca>>2];fa=+ji(+f[a+52>>2]);V=a+32|0;W=aa+12|0;Y=aa+16|0;Z=aa+24|0;_=aa+28|0;$=aa+4|0;F=a+68|0;G=aa+12|0;H=aa+16|0;I=aa+24|0;J=aa+28|0;K=aa+4|0;L=aa+12|0;M=aa+16|0;N=aa+24|0;O=aa+28|0;P=aa+4|0;a=1;a:while(1){if(a>>>0>=((Ki(V)|0)+-1|0)>>>0){ga=3;break}Q=Li(d,a+-1|0)|0;R=Li(d,a)|0;S=a+1|0;T=Li(d,S)|0;U=Mi(d,a)|0;E=Ni(d,a)|0;D=Ng(Q)|0;b:do if((D|0)==(Ng(R)|0)?(D=Ng(Q)|0,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=7;break a}D=Og(Q)|0;if((D|0)!=(Og(T)|0)){ga=9;break a}k=(Ng(R)|0)+-1|0;l=(Og(R)|0)+-1|0;m=+(E|0);a=1;while(1){if(a>>>0>=l>>>0)break b;v=a+-1|0;n=ch(Q,v)|0;o=ch(Q,a)|0;p=a+1|0;q=ch(Q,p)|0;r=ch(R,v)|0;t=ch(R,a)|0;u=ch(R,p)|0;v=ch(T,v)|0;w=ch(T,a)|0;x=ch(T,p)|0;j=+(a>>>0);i=1;while(1){if(i>>>0>=k>>>0)break;a=t+(i<<2)|0;do if(!(+ji(+f[a>>2])>2];h=i+-1|0;e=+f[n+(h<<2)>>2];do if(((((g>e?g>+f[n+(i<<2)>>2]:0)?(X=i+1|0,g>+f[n+(X<<2)>>2]):0)?g>+f[o+(h<<2)>>2]:0)?g>+f[o+(i<<2)>>2]:0)?g>+f[o+(X<<2)>>2]:0){if(!(g>+f[q+(h<<2)>>2])){ga=42;break}if(!(g>+f[q+(i<<2)>>2])){ga=42;break}if(!(g>+f[q+(X<<2)>>2])){ga=42;break}if(!(g>+f[r+(h<<2)>>2])){ga=42;break}if(!(g>+f[r+(i<<2)>>2])){ga=42;break}if(!(g>+f[r+(X<<2)>>2])){ga=42;break}if(!(g>+f[t+(h<<2)>>2])){ga=42;break}if(!(g>+f[t+(X<<2)>>2])){ga=42;break}if(!(g>+f[u+(h<<2)>>2])){ga=42;break}if(!(g>+f[u+(i<<2)>>2])){ga=42;break}if(!(g>+f[u+(X<<2)>>2])){ga=42;break}if(!(g>+f[v+(h<<2)>>2])){ga=42;break}if(!(g>+f[v+(i<<2)>>2])){ga=42;break}if(!(g>+f[v+(X<<2)>>2])){ga=42;break}if(!(g>+f[w+(h<<2)>>2])){ga=42;break}if(!(g>+f[w+(i<<2)>>2])){ga=42;break}if(!(g>+f[w+(X<<2)>>2])){ga=42;break}if(!(g>+f[x+(h<<2)>>2])){ga=42;break}if(!(g>+f[x+(i<<2)>>2])){ga=42;break}if(!(g>+f[x+(X<<2)>>2]))ga=42}else ga=42;while(0);if((ga|0)==42){ga=0;if(!(g>2]))break;a=i+1|0;if(!(g<+f[n+(a<<2)>>2]))break;if(!(g<+f[o+(h<<2)>>2]))break;if(!(g<+f[o+(i<<2)>>2]))break;if(!(g<+f[o+(a<<2)>>2]))break;if(!(g<+f[q+(h<<2)>>2]))break;if(!(g<+f[q+(i<<2)>>2]))break;if(!(g<+f[q+(a<<2)>>2]))break;if(!(g<+f[r+(h<<2)>>2]))break;if(!(g<+f[r+(i<<2)>>2]))break;if(!(g<+f[r+(a<<2)>>2]))break;if(!(g<+f[t+(h<<2)>>2]))break;if(!(g<+f[t+(a<<2)>>2]))break;if(!(g<+f[u+(h<<2)>>2]))break;if(!(g<+f[u+(i<<2)>>2]))break;if(!(g<+f[u+(a<<2)>>2]))break;if(!(g<+f[v+(h<<2)>>2]))break;if(!(g<+f[v+(i<<2)>>2]))break;if(!(g<+f[v+(a<<2)>>2]))break;if(!(g<+f[w+(h<<2)>>2]))break;if(!(g<+f[w+(i<<2)>>2]))break;if(!(g<+f[w+(a<<2)>>2]))break;if(!(g<+f[x+(h<<2)>>2]))break;if(!(g<+f[x+(i<<2)>>2]))break;if(!(g<+f[x+(a<<2)>>2]))break}c[W>>2]=U;c[Y>>2]=E;f[Z>>2]=g;C=+si(b,U,m);f[_>>2]=C;ri(aa,$,+(i>>>0),j,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);i=i+1|0}a=p}}else ga=72;while(0);c:do if((ga|0)==72){ga=0;D=Ng(Q)|0;if((D|0)==(Ng(R)|0)?(D=(Ng(R)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=75;break a}D=(Og(R)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=77;break a}l=~~+s(+((+(((Ng(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;n=~~+s(+((+(((Og(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;C=+(E|0);a=2;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(Q,t)|0;p=ch(Q,a)|0;q=a+1|0;r=ch(Q,q)|0;t=ch(R,t)|0;u=ch(R,a)|0;v=ch(R,q)|0;y=+(a>>>0);z=y*.5+-.25;A=z+-.5;B=z+.5;k=2;while(1){if(k>>>0>=l>>>0)break;i=u+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0);m=j*.5+-.25;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ba=k+1|0,e>+f[o+(ba<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(k<<2)>>2])){ga=110;break}if(!(e>+f[p+(ba<<2)>>2])){ga=110;break}if(!(e>+f[r+(h<<2)>>2])){ga=110;break}if(!(e>+f[r+(k<<2)>>2])){ga=110;break}if(!(e>+f[r+(ba<<2)>>2])){ga=110;break}if(!(e>+f[t+(h<<2)>>2])){ga=110;break}if(!(e>+f[t+(k<<2)>>2])){ga=110;break}if(!(e>+f[t+(ba<<2)>>2])){ga=110;break}if(!(e>+f[u+(h<<2)>>2])){ga=110;break}if(!(e>+f[u+(ba<<2)>>2])){ga=110;break}if(!(e>+f[v+(h<<2)>>2])){ga=110;break}if(!(e>+f[v+(k<<2)>>2])){ga=110;break}if(!(e>+f[v+(ba<<2)>>2])){ga=110;break}g=m+-.5;if(!(e>+Ci(T,g,A))){ga=110;break}e=+f[i>>2];if(!(e>+Ci(T,m,A))){ga=110;break}ia=+f[i>>2];e=m+.5;if(!(ia>+Ci(T,e,A))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,B)))ga=110}else ga=110;while(0);if((ga|0)==110){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(k<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=m+-.5;if(!(e<+Ci(T,g,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,A)))break;ia=+f[i>>2];e=m+.5;if(!(ia<+Ci(T,e,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,B)))break}c[G>>2]=U;c[H>>2]=E;c[I>>2]=c[i>>2];ia=+si(b,U,C);f[J>>2]=ia;ri(aa,K,j,y,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}D=(Ng(Q)|0)>>>1;if((D|0)==(Ng(R)|0)?(D=(Ng(Q)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=(Og(Q)|0)>>>1;if((D|0)!=(Og(R)|0)){ga=144;break a}D=(Og(Q)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=146;break a}l=(Ng(R)|0)+-1|0;n=(Og(R)|0)+-1|0;A=+(E|0);a=1;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(R,t)|0;p=ch(R,a)|0;q=a+1|0;r=ch(R,q)|0;t=ch(T,t)|0;u=ch(T,a)|0;v=ch(T,q)|0;B=+(a<<1>>>0)+.5;m=+(a>>>0);y=B+-2.0;z=B+2.0;k=1;while(1){if(k>>>0>=l>>>0)break;i=p+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0)+.5;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ea=k+1|0,e>+f[o+(ea<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(ea<<2)>>2])){ga=179;break}if(!(e>+f[r+(h<<2)>>2])){ga=179;break}if(!(e>+f[r+(k<<2)>>2])){ga=179;break}if(!(e>+f[r+(ea<<2)>>2])){ga=179;break}if(!(e>+f[t+(h<<2)>>2])){ga=179;break}if(!(e>+f[t+(k<<2)>>2])){ga=179;break}if(!(e>+f[t+(ea<<2)>>2])){ga=179;break}if(!(e>+f[u+(h<<2)>>2])){ga=179;break}if(!(e>+f[u+(k<<2)>>2])){ga=179;break}if(!(e>+f[u+(ea<<2)>>2])){ga=179;break}if(!(e>+f[v+(h<<2)>>2])){ga=179;break}if(!(e>+f[v+(k<<2)>>2])){ga=179;break}if(!(e>+f[v+(ea<<2)>>2])){ga=179;break}g=j+-2.0;if(!(e>+Ci(Q,g,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,y))){ga=179;break}ia=+f[i>>2];e=j+2.0;if(!(ia>+Ci(Q,e,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,z)))ga=179}else ga=179;while(0);if((ga|0)==179){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(k<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=j+-2.0;if(!(e<+Ci(Q,g,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,y)))break;ia=+f[i>>2];e=j+2.0;if(!(ia<+Ci(Q,e,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,z)))break}c[L>>2]=U;c[M>>2]=E;c[N>>2]=c[i>>2];ia=+si(b,U,A);f[O>>2]=ia;ri(aa,P,+(k>>>0),m,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}}while(0);a=S}if((ga|0)==3){zb=ha;return}else if((ga|0)==7){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,192)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==9){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26726)|0,22676)|0,35e3)|0,193)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==75){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,277)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==77){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26778)|0,22676)|0,35e3)|0,278)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==144){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26835)|0,22676)|0,35e3)|0,362)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==146){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26892)|0,22676)|0,35e3)|0,363)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0;J=zb;zb=zb+80|0;I=J+68|0;A=J;C=J+56|0;D=J+44|0;E=J+40|0;F=J+36|0;s=+ji(+f[a+52>>2]);H=a+56|0;w=+ji(+f[H>>2]+1.0);w=w/+f[H>>2];H=a+60|0;x=a+64|0;y=a+32|0;z=D+4|0;o=a+88|0;p=C+4|0;q=C+8|0;r=D+8|0;m=0;n=0;while(1){l=c[H>>2]|0;i=l;if(n>>>0>=(((c[x>>2]|0)-l|0)/36|0)>>>0){a=3;break}d=i+(n*36|0)|0;a=i+(n*36|0)+16|0;l=c[a>>2]|0;if((l|0)>=(li(y)|0)){a=5;break}j=i+(n*36|0)+12|0;l=c[j>>2]|0;l=B(li(y)|0,l)|0;l=l+(c[a>>2]|0)|0;k=i+(n*36|0)+4|0;mi(E,F,+f[d>>2],+f[k>>2],c[j>>2]|0);e=~~(+f[E>>2]+.5);g=~~(+f[F>>2]+.5);L=ni(y)|0;L=(c[L>>2]|0)+(l+-1<<5)|0;h=ni(y)|0;h=(c[h>>2]|0)+(l<<5)|0;K=ni(y)|0;if(((oi(A,C,L,h,(c[K>>2]|0)+(l+1<<5)|0,e,g)|0?pi(D,A,C)|0:0)?(M=+ji(+f[D>>2]),M=M+ +ji(+f[z>>2]),!(M>+f[o>>2])):0)?(G=i+(n*36|0)+32|0,qi(G,A)|0):0){l=i+(n*36|0)+24|0;M=+f[l>>2];L=(ch(h,g)|0)+(e<<2)|0;if(!(M==+f[L>>2])){a=11;break}L=(ch(h,g)|0)+(e<<2)|0;N=+f[D>>2];M=+f[z>>2];f[l>>2]=+f[L>>2]-(+f[C>>2]*N+ +f[p>>2]*M+ +f[q>>2]*+f[r>>2]);ri(d,k,N+ +f[E>>2],M+ +f[F>>2],c[j>>2]|0);M=+f[r>>2]+ +(c[a>>2]|0);a=i+(n*36|0)+20|0;f[a>>2]=M;M=+Zh(M,0.0,+(li(y)|0));f[a>>2]=M;if(((((+t(+(+f[G>>2]))>2])>=s:0)?(u=+f[d>>2],u>=0.0):0)?(L=ni(y)|0,u<+((Ng(c[L>>2]|0)|0)>>>0)):0)?(v=+f[k>>2],v>=0.0):0)?(L=ni(y)|0,v<+((Og(c[L>>2]|0)|0)>>>0)):0){N=+si(b,c[j>>2]|0,+f[a>>2]);f[i+(n*36|0)+28>>2]=N;a=m+1|0;g=(c[H>>2]|0)+(m*36|0)|0;e=g+36|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}else a=m}else a=m;m=a;n=n+1|0}if((a|0)==3){ki(H,m);zb=J;return}else if((a|0)==5){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24248)|0,22676)|0,35e3)|0,489)|0,35007)|0,24320)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}else if((a|0)==11){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24357)|0,22676)|0,35e3)|0,526)|0,35007)|0,24414)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+16|0;d=l+12|0;h=l;i=a+60|0;j=a+64|0;k=a+84|0;e=c[k>>2]|0;do if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>e>>>0){f=a+16|0;b=c[f>>2]|0;g=((c[a+20>>2]|0)-b|0)/12|0;if((g|0)!=(c[a+8>>2]|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,23939)|0,22676)|0,35e3)|0,454)|0,35007)|0,23994)|0;IE(d,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(d,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(d);QE(m,n)|0;ME(m)|0;ua()}b=((c[b+4>>2]|0)-(c[b>>2]|0)|0)/12|0;if((b|0)!=(c[a+12>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24020)|0,22676)|0,35e3)|0,455)|0,35007)|0,23994)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;ai(f,h,i,g,b,c[a>>2]|0,c[a+4>>2]|0,e);Xh(i,h);if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>(c[k>>2]|0)>>>0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24078)|0,22676)|0,35e3)|0,469)|0,35007)|0,24147)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}else{hh(h);break}}while(0);zb=l;return}function Wh(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=zb;zb=zb+64|0;l=w+48|0;s=w+44|0;t=w+40|0;u=w+36|0;v=w;a:do if(!(a[b+28>>0]|0)){g=c[b+60>>2]|0;e=((c[b+64>>2]|0)-g|0)/36|0;b=0;while(1){if((b|0)==(e|0))break a;f[g+(b*36|0)+8>>2]=0.0;b=b+1|0}}else{k=b+72|0;m=b+76|0;c[m>>2]=c[k>>2];n=b+60|0;o=b+64|0;uh(k,(c[o>>2]|0)-(c[n>>2]|0)|0);p=b+92|0;vj(p,d);q=b+144|0;r=v+8|0;j=b+80|0;i=0;while(1){h=c[n>>2]|0;b=h;if(i>>>0>=(((c[o>>2]|0)-h|0)/36|0)>>>0)break;Yh(s,t,u,+f[b+(i*36|0)>>2],+f[b+(i*36|0)+4>>2],+f[b+(i*36|0)+28>>2],c[b+(i*36|0)+12>>2]|0);x=+f[s>>2];x=+Zh(x,0.0,+(((Ng(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[s>>2]=x;x=+f[t>>2];x=+Zh(x,0.0,+(((Og(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[t>>2]=x;h=c[n>>2]|0;yj(p,c[q>>2]|0,l,c[h+(i*36|0)+12>>2]|0,c[h+(i*36|0)+16>>2]|0,+f[s>>2],x,+f[u>>2]);h=0;while(1){if((h|0)>=(c[l>>2]|0))break;b=v;e=(c[n>>2]|0)+(i*36|0)|0;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[r>>2]=c[(c[q>>2]|0)+(h<<2)>>2];b=c[m>>2]|0;if((b|0)==(c[j>>2]|0))_h(k,v);else{e=v;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[m>>2]=(c[m>>2]|0)+36}h=h+1|0}i=i+1|0}Xh(n,k)}while(0);zb=w;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Yh(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=+d;e=+e;g=+g;h=h|0;var i=0.0,j=0.0;i=1.0/+(1<>2]=i*d+j;f[b>>2]=i*e+j;f[c>>2]=i*g;return}function Zh(a,b,c){a=+a;b=+b;c=+c;if(!(ac)a=c}else a=b;return +a}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+32|0;i=j;d=a+4|0;e=(((c[d>>2]|0)-(c[a>>2]|0)|0)/36|0)+1|0;f=$h(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;k=((c[a+8>>2]|0)-g|0)/36|0;h=k<<1;vh(i,k>>>0>>1>>>0?(h>>>0>>0?e:h):f,((c[d>>2]|0)-g|0)/36|0,a+8|0);f=i+8|0;g=c[f>>2]|0;h=g;d=b;e=h+36|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));c[f>>2]=g+36;wh(a,i);xh(i);zb=j;return}}function $h(a){a=a|0;return 119304647}function ai(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0.0;D=zb;zb=zb+48|0;C=D+8|0;v=D+32|0;u=D+28|0;y=D+24|0;z=D+20|0;w=D+16|0;x=D;o=B(g,e)|0;n=+A(+(+(h|0)/+(e|0)));m=+A(+(+(i|0)/+(g|0)));r=b+4|0;c[r>>2]=c[b>>2];uh(b,j);s=a+4|0;g=c[a>>2]|0;i=((c[s>>2]|0)-g|0)/12|0;e=0;while(1){if((e|0)==(i|0))break;l=c[g+(e*12|0)>>2]|0;k=((c[g+(e*12|0)+4>>2]|0)-l|0)/12|0;h=0;while(1){if((h|0)==(k|0))break;c[l+(h*12|0)+4>>2]=c[l+(h*12|0)>>2];h=h+1|0}e=e+1|0}q=(j|0)/(o|0)|0;o=d+4|0;n=+(~~n|0);m=+(~~m|0);g=C+4|0;l=0;while(1){p=c[d>>2]|0;e=p;if(l>>>0>=(((c[o>>2]|0)-p|0)/36|0)>>>0)break;i=~~(+f[e+(l*36|0)+4>>2]/m);k=c[(c[a>>2]|0)+(~~(+f[e+(l*36|0)>>2]/n)*12|0)>>2]|0;E=+t(+(+f[e+(l*36|0)+24>>2]));f[C>>2]=E;c[g>>2]=l;e=k+(i*12|0)+4|0;h=c[e>>2]|0;if(h>>>0<(c[k+(i*12|0)+8>>2]|0)>>>0){k=C;j=c[k+4>>2]|0;p=h;c[p>>2]=c[k>>2];c[p+4>>2]=j;c[e>>2]=(c[e>>2]|0)+8}else bi(k+(i*12|0)|0,C);l=l+1|0}p=b+8|0;e=c[a>>2]|0;g=e;j=0;h=g;a:while(1){if(j>>>0>=(((c[s>>2]|0)-e|0)/12|0)>>>0){e=16;break}o=0;i=g;while(1){l=c[i+(j*12|0)>>2]|0;e=l;if(o>>>0>=(((c[i+(j*12|0)+4>>2]|0)-l|0)/12|0)>>>0)break;l=e+(o*12|0)|0;e=e+(o*12|0)+4|0;g=c[e>>2]|0;i=c[l>>2]|0;k=g-i>>3;k=q>>>0>>0?q:k;if(!k)e=h;else{c[y>>2]=i;c[z>>2]=i+(k<<3);c[w>>2]=g;c[u>>2]=c[y>>2];c[v>>2]=c[z>>2];c[C>>2]=c[w>>2];ci(u,v,C,x);g=c[l>>2]|0;i=g;if(k>>>0>(c[e>>2]|0)-g>>3>>>0?!(+f[i>>2]>=+f[i+(k<<3)>>2]):0){e=23;break a}i=0;while(1){if(i>>>0>=k>>>0)break;h=(c[d>>2]|0)+((c[(c[l>>2]|0)+(i<<3)+4>>2]|0)*36|0)|0;e=c[r>>2]|0;if((e|0)==(c[p>>2]|0))_h(b,h);else{g=e+36|0;do{c[e>>2]=c[h>>2];e=e+4|0;h=h+4|0}while((e|0)<(g|0));c[r>>2]=(c[r>>2]|0)+36}i=i+1|0}e=c[a>>2]|0}o=o+1|0;h=e;i=e}j=j+1|0;g=i;e=i}if((e|0)==16){zb=D;return}else if((e|0)==23){D=Xf(Xf(PE(Xf(Xf(Xf(56032,24171)|0,22676)|0,35e3)|0,661)|0,35007)|0,24229)|0;IE(C,D+(c[(c[D>>2]|0)+-12>>2]|0)|0);z=XF(C,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(C);QE(D,z)|0;ME(D)|0;ua()}}function bi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=fi(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;gi(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;hi(a,d);ii(d);zb=h;return}}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=zb;zb=zb+48|0;y=K+40|0;x=K+36|0;w=K+32|0;C=K+28|0;D=K+24|0;E=K+20|0;G=K+16|0;H=K+12|0;I=K+8|0;z=K+4|0;A=K;v=c[b>>2]|0;a:while(1){u=c[d>>2]|0;n=u;t=u+-8|0;q=t;s=u+-4|0;if((v|0)==(u|0))break;r=c[a>>2]|0;k=r;b:while(1){b=n-k|0;g=b>>3;switch(g|0){case 1:case 0:break a;case 2:{J=5;break a}case 3:{J=10;break a}default:{}}if((b|0)<64){J=12;break a}g=g>>>1;p=r+(g<<3)|0;c[I>>2]=k;c[z>>2]=p;c[A>>2]=q;c[w>>2]=c[I>>2];c[x>>2]=c[z>>2];c[y>>2]=c[A>>2];b=di(w,x,y,e)|0;l=k;j=+f[p>>2];i=+f[l>>2];if(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0:0){J=53;break}g=t;while(1){m=g+-8|0;if((m|0)==(l|0))break;i=+f[m>>2];if(j>2]|0,(c[h>>2]|0)>>>0>>0):0){J=51;break b}g=m}h=l+8|0;b=h;o=+f[t>>2];j=+f[r>>2];do if(!(o>2]|0)>>>0<(c[g>>2]|0)>>>0)break}else g=r+4|0;while(1){if((h|0)==(t|0))break a;i=+f[h>>2];if(i>2]|0,F>>>0<(c[g>>2]|0)>>>0):0){J=28;break}h=h+8|0}if((J|0)==25){J=0;g=h+4|0;b=g;g=c[g>>2]|0}else if((J|0)==28){J=0;b=h+4|0;g=F}f[h>>2]=o;f[t>>2]=i;c[b>>2]=c[s>>2];c[s>>2]=g;b=h+8|0}while(0);if((t|0)==(b|0))break a;l=r+4|0;g=q;while(1){j=+f[r>>2];k=b;while(1){b=k;i=+f[b>>2];if(i>2]|0)>>>0<(c[l>>2]|0)>>>0:0)break;k=b+8|0}h=k;while(1){b=g+-8|0;i=+f[b>>2];if(!(i>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}g=b}if(b>>>0<=h>>>0)break;m=c[k>>2]|0;f[k>>2]=i;c[b>>2]=m;m=h+4|0;g=g+-4|0;p=c[m>>2]|0;c[m>>2]=c[g>>2];c[g>>2]=p;g=b;b=h+8|0}b=k;if(v>>>0>>0)break a;c[a>>2]=k;r=b}if((J|0)==47){h=g+-4|0;g=h;h=c[h>>2]|0;J=52}else if((J|0)==51){g=g+-4|0;h=B;J=52}else if((J|0)==53){J=0;h=t;s=k}if((J|0)==52){J=0;s=k;r=c[k>>2]|0;f[k>>2]=i;c[m>>2]=r;r=s+4|0;t=c[r>>2]|0;c[r>>2]=h;c[g>>2]=t;b=b+1|0;h=m}g=s+8|0;k=g;if(g>>>0>>0){q=p;g=k;while(1){p=q;n=p+4|0;j=+f[p>>2];while(1){k=g;i=+f[k>>2];if(!(j>2]|0)>>>0>=(c[k+4>>2]|0)>>>0)break}g=k+8|0}m=g;while(1){l=h+-8|0;i=+f[l>>2];if(j>2]|0)>>>0<(c[h+-4>>2]|0)>>>0:0)break;h=l}k=l;if(l>>>0<=m>>>0)break;t=c[g>>2]|0;f[g>>2]=i;c[l>>2]=t;t=m+4|0;h=h+-4|0;g=c[t>>2]|0;c[t>>2]=c[h>>2];c[h>>2]=g;b=b+1|0;h=k;q=(p|0)==(m|0)?k:q;g=m+8|0}r=g;p=q;k=g}else r=g;n=k;do if((p|0)!=(r|0)){i=+f[r>>2];j=+f[p>>2];if(!(i>2]|0;g=p+4|0;m=c[g>>2]|0;if(h>>>0>=m>>>0)break}else{h=r+4|0;m=p+4|0;g=m;l=h;m=c[m>>2]|0;h=c[h>>2]|0}t=c[k>>2]|0;f[k>>2]=j;c[p>>2]=t;c[l>>2]=m;c[g>>2]=h;b=b+1|0}while(0);if((v|0)==(r|0))break;c:do if(!b)if(v>>>0>>0){b=s;while(1){g=b+8|0;if((g|0)==(r|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}else{b=n;while(1){g=b+8|0;if((g|0)==(u|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}while(0);if(v>>>0>>0)c[d>>2]=k;else c[a>>2]=r+8}do if((J|0)==5){c[d>>2]=t;i=+f[r>>2];j=+f[t>>2];if(!(i>2]|0;h=c[s>>2]|0;if(g>>>0>=h>>>0)break}else{g=r+4|0;b=g;h=c[s>>2]|0;g=c[g>>2]|0}f[r>>2]=j;f[t>>2]=i;c[b>>2]=h;c[s>>2]=g}else if((J|0)==10){c[C>>2]=k;c[D>>2]=k+8;c[d>>2]=t;c[E>>2]=t;c[w>>2]=c[C>>2];c[x>>2]=c[D>>2];c[y>>2]=c[E>>2];di(w,x,y,e)|0}else if((J|0)==12){c[G>>2]=k;c[H>>2]=u;c[x>>2]=c[G>>2];c[y>>2]=c[H>>2];ei(x,y,e)}while(0);zb=K;return}function di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0.0,h=0.0,i=0,j=0.0,k=0,l=0;l=c[b>>2]|0;k=c[a>>2]|0;j=+f[k>>2];h=+f[l>>2];if(!(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0;else e=1;i=c[d>>2]|0;g=+f[i>>2];if(!(h>2]|0)>>>0<(c[i+4>>2]|0)>>>0;else b=1;do if(!e)if(b){f[l>>2]=g;f[i>>2]=h;d=l+4|0;i=i+4|0;a=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=a;g=+f[k>>2];h=+f[l>>2];if(!(g>2]|0;a=c[d>>2]|0;if(e>>>0>=a>>>0){b=1;break}}else{e=k+4|0;b=e;a=c[d>>2]|0;e=c[e>>2]|0}f[k>>2]=h;f[l>>2]=g;c[b>>2]=a;c[d>>2]=e;b=2}else b=0;else{if(b){f[k>>2]=g;f[i>>2]=j;k=k+4|0;b=i+4|0;l=c[k>>2]|0;c[k>>2]=c[b>>2];c[b>>2]=l;b=1;break}f[k>>2]=h;f[l>>2]=j;k=k+4|0;a=l+4|0;d=c[k>>2]|0;c[k>>2]=c[a>>2];c[a>>2]=d;g=+f[i>>2];if(!(j>2]|0;if(d>>>0>=e>>>0){b=1;break}}else{e=i+4|0;b=e;e=c[e>>2]|0}f[l>>2]=g;f[i>>2]=j;c[a>>2]=e;c[b>>2]=d;b=2}while(0);return b|0}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0,k=0,l=0;j=c[b>>2]|0;k=j+-8|0;l=c[a>>2]|0;while(1){if((l|0)==(k|0))break;a:do if((l|0)==(j|0))b=j;else{b=l;while(1){h=b+4|0;d=b;while(1){i=d+8|0;if((i|0)==(j|0))break a;e=+f[b>>2];g=+f[i>>2];if(e>2]|0)>>>0<(c[d+12>>2]|0)>>>0:0)break;d=i}b=i}}while(0);if((b|0)!=(l|0)){d=c[l>>2]|0;c[l>>2]=c[b>>2];c[b>>2]=d;d=l+4|0;i=b+4|0;h=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=h}i=l+8|0;c[a>>2]=i;l=i}return}function fi(a){a=a|0;return 536870911}function gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ii(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ji(a){a=+a;return +(a*a)}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=((c[d>>2]|0)-f|0)/36|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b*36|0)}else Hi(a,b-e|0);return}function li(a){a=a|0;return c[a+16>>2]|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;h=1.0/+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function ni(a){a=a|0;return a|0}function oi(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;k=Ng(d)|0;k=(k|0)==(Ng(e)|0)&1;do if((Ng(f)|0)==(k|0)){k=Og(d)|0;k=(k|0)==(Og(e)|0)&1;if((Og(f)|0)==(k|0)){yi(a,b,d,e,f,g,h);break}else{k=Xf(Xf(PE(Xf(Xf(Xf(56032,24457)|0,24528)|0,35e3)|0,466)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}}else{k=Ng(d)|0;if((k|0)==(Ng(e)|0)?(k=(Ng(e)|0)>>>1,(k|0)==(Ng(f)|0)):0){k=Og(d)|0;if((k|0)==(Og(e)|0)?(k=(Og(e)|0)>>>1,(k|0)==(Og(f)|0)):0){zi(a,b,d,e,f,g,h);break}k=Xf(Xf(PE(Xf(Xf(Xf(56032,24653)|0,24528)|0,35e3)|0,469)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){Ai(a,b,d,e,f,g,h);break}l=Xf(Xf(PE(Xf(Xf(Xf(56032,24750)|0,24528)|0,35e3)|0,472)|0,35007)|0,24621)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}l=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,24528)|0,35e3)|0,475)|0,35007)|0,24843)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}while(0);zb=j;return 1}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=zb;zb=zb+48|0;d=e;if(ti(d,b,1.1920928955078125e-07)|0){ui(a,d,c);a=1}else a=0;zb=e;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=b+16|0;d=+f[b>>2]*+f[c>>2];d=d-+ji(+f[b+4>>2]);if(d==0.0)a=0;else{d=+ji(+f[b>>2]+ +f[c>>2])/d;f[a>>2]=d;a=1}return a|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;g=+hz(1.0,e+-1|0)+-.5;h=+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function si(a,b,d){a=a|0;b=b|0;d=+d;var e=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;e=g;if(!(d>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,232)|0,35007)|0,34138)|0;IE(e,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(e,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(e);QE(h,i)|0;ME(h)|0;ua()}if(+(c[a+20>>2]|0)>d){d=+v(+(+f[a+24>>2]),+d)*+(1<>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(i,h)|0;ME(i)|0;ua()}return +(0.0)}function ti(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=+vi(b);if(!(+t(+e)<=d)){e=1.0/e;j=b+16|0;g=b+20|0;m=b+32|0;d=e*+wi(+f[j>>2],+f[g>>2],+f[m>>2]);f[a>>2]=d;l=b+8|0;k=b+4|0;d=e*+xi(+f[l>>2],+f[k>>2],+f[m>>2],+f[b+28>>2]);i=a+4|0;f[i>>2]=d;d=e*+xi(+f[k>>2],+f[l>>2],+f[j>>2],+f[g>>2]);h=a+8|0;f[h>>2]=d;d=e*+wi(+f[b>>2],+f[l>>2],+f[m>>2]);f[a+16>>2]=d;d=e*+xi(+f[l>>2],+f[b>>2],+f[g>>2],+f[b+12>>2]);g=a+20|0;f[g>>2]=d;e=e*+wi(+f[b>>2],+f[k>>2],+f[j>>2]);f[a+32>>2]=e;c[a+12>>2]=c[i>>2];c[a+24>>2]=c[h>>2];c[a+28>>2]=c[g>>2];a=1}else a=0;return a|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=c+4|0;d=c+8|0;f[a>>2]=+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[e>>2]+ +f[b+8>>2]*+f[d>>2];f[a+4>>2]=+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]+ +f[b+20>>2]*+f[d>>2];f[a+8>>2]=+f[b+24>>2]*+f[c>>2]+ +f[b+28>>2]*+f[e>>2]+ +f[b+32>>2]*+f[d>>2];return}function vi(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,g=0.0,h=0.0,i=0;b=a+32|0;g=+f[b>>2];c=a+4|0;g=g*+ji(+f[c>>2]);e=+f[a+8>>2];i=a+20|0;h=+f[c>>2]*2.0*e*+f[i>>2];c=a+16|0;d=+f[c>>2];e=d*+ji(e);d=+f[a>>2];d=d*+ji(+f[i>>2]);return +(h-g-e-d+ +f[a>>2]*+f[c>>2]*+f[b>>2])}function wi(a,b,c){a=+a;b=+b;c=+c;return +(a*c-b*b)}function xi(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(a*d-b*c)}function yi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0;r=zb;zb=zb+32|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;k=r+4|0;l=r;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){m=i+-1|0;if((i|0)>0?(n=i+1|0,n>>>0<(Og(e)|0)>>>0):0){s=Ng(d)|0;if((s|0)!=(Ng(e)|0)){s=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,311)|0,35007)|0,25078)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);t=XF(o,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(o);QE(s,t)|0;ME(s)|0;ua()}t=Ng(d)|0;if((t|0)!=(Ng(g)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26545)|0,24528)|0,35e3)|0,312)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)!=(Og(e)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,313)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)==(Og(g)|0)){z=(ch(d,m)|0)+(h<<2)|0;A=(ch(d,i)|0)+(h<<2)|0;o=(ch(d,n)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;t=(ch(g,m)|0)+(h<<2)|0;m=(ch(g,i)|0)+(h<<2)|0;s=(ch(g,n)|0)+(h<<2)|0;Bi(p,q,j,k,l,e,h,i);v=+f[m>>2];u=+f[A>>2];w=v+(u-+f[d>>2]*2.0);y=(+f[A+-4>>2]-+f[A+4>>2]+(+f[m+4>>2]-+f[m+-4>>2]))*.25;x=(+f[z>>2]-+f[o>>2]+(+f[s>>2]-+f[t>>2]))*.25;c[a>>2]=c[j>>2];t=c[l>>2]|0;c[a+4>>2]=t;f[a+8>>2]=y;c[a+12>>2]=t;c[a+16>>2]=c[k>>2];f[a+20>>2]=x;f[a+24>>2]=y;f[a+28>>2]=x;f[a+32>>2]=w;f[b>>2]=-+f[p>>2];f[b+4>>2]=-+f[q>>2];f[b+8>>2]=-((v-u)*.5);zb=r;return}else{A=Xf(Xf(PE(Xf(Xf(Xf(56032,26597)|0,24528)|0,35e3)|0,314)|0,35007)|0,25078)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,310)|0,35007)|0,25005)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,309)|0,35007)|0,24930)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}function zi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;w=zb;zb=zb+32|0;t=w+28|0;u=w+24|0;v=w+20|0;o=w+16|0;p=w+12|0;q=w+8|0;r=w+4|0;s=w;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){j=i+-1|0;if((i|0)>0?(l=i+1|0,l>>>0<(Og(e)|0)>>>0):0){n=Ng(d)|0;if((n|0)!=(Ng(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,415)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Ng(d)|0)>>>1;if((n|0)!=(Ng(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,416)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=Og(d)|0;if((n|0)!=(Og(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,417)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Og(d)|0)>>>1;if((n|0)!=(Og(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,418)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}m=(ch(d,j)|0)+(h<<2)|0;n=(ch(d,i)|0)+(h<<2)|0;j=(ch(d,l)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;mi(u,v,+(h|0),+(i|0),1);k=+f[u>>2];if(!(k+-.5>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,26252)|0,24528)|0,35e3)|0,428)|0,35007)|0,26293)|0;IE(t,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);x=XF(t,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(t);QE(l,x)|0;ME(l)|0;ua()}if(!(+f[v>>2]+-.5>=0.0)){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26347)|0,24528)|0,35e3)|0,429)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}if(!(k+.5<+((Ng(g)|0)>>>0))){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26442)|0,24528)|0,35e3)|0,430)|0,35007)|0,26293)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}k=+f[v>>2]+.5;if(k<+((Og(g)|0)>>>0)){Bi(o,p,q,r,s,e,h,i);y=+Ci(g,+f[u>>2],+f[v>>2]);k=+f[n>>2];z=y+(k-+f[d>>2]*2.0);C=+f[n+-4>>2];C=C+ +Ci(g,+f[u>>2]+.5,+f[v>>2]);B=+f[n+4>>2];B=(C-(B+ +Ci(g,+f[u>>2]+-.5,+f[v>>2])))*.25;C=+f[m>>2];C=C+ +Ci(g,+f[u>>2],+f[v>>2]+.5);A=+f[j>>2];A=(C-(A+ +Ci(g,+f[u>>2],+f[v>>2]+-.5)))*.25;c[a>>2]=c[q>>2];x=c[s>>2]|0;c[a+4>>2]=x;f[a+8>>2]=B;c[a+12>>2]=x;c[a+16>>2]=c[r>>2];f[a+20>>2]=A;f[a+24>>2]=B;f[a+28>>2]=A;f[a+32>>2]=z;f[b>>2]=-+f[o>>2];f[b+4>>2]=-+f[p>>2];f[b+8>>2]=-((y-k)*.5);zb=w;return}else{x=Xf(Xf(PE(Xf(Xf(Xf(56032,26493)|0,24528)|0,35e3)|0,431)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,414)|0,35007)|0,25005)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,413)|0,35007)|0,24930)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}function Ai(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;t=zb;zb=zb+32|0;q=t+28|0;r=t+24|0;s=t+20|0;j=t+16|0;k=t+12|0;l=t+8|0;m=t+4|0;n=t;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){o=i+-1|0;if((i|0)>0?(p=i+1|0,p>>>0<(Og(e)|0)>>>0):0){u=(Ng(d)|0)>>>1;if((u|0)!=(Ng(e)|0)){u=Xf(Xf(PE(Xf(Xf(Xf(56032,25021)|0,24528)|0,35e3)|0,361)|0,35007)|0,25078)|0;IE(q,u+(c[(c[u>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(u,v)|0;ME(u)|0;ua()}v=(Ng(d)|0)>>>1;if((v|0)!=(Ng(g)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,362)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)!=(Og(e)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25165)|0,24528)|0,35e3)|0,363)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)==(Og(g)|0)){C=(ch(e,i)|0)+(h<<2)|0;v=(ch(g,o)|0)+(h<<2)|0;q=(ch(g,i)|0)+(h<<2)|0;u=(ch(g,p)|0)+(h<<2)|0;ri(r,s,+(h|0),+(i|0),1);Bi(j,k,l,m,n,e,h,i);w=+Ci(d,+f[r>>2],+f[s>>2]);x=+f[q>>2];y=x+(w-+f[C>>2]*2.0);B=+Ci(d,+f[r>>2]+-2.0,+f[s>>2]);B=B+ +f[q+4>>2];A=+Ci(d,+f[r>>2]+2.0,+f[s>>2]);A=(B-(A+ +f[q+-4>>2]))*.25;B=+Ci(d,+f[r>>2],+f[s>>2]+-2.0);B=B+ +f[u>>2];z=+Ci(d,+f[r>>2],+f[s>>2]+2.0);z=(B-(z+ +f[v>>2]))*.25;c[a>>2]=c[l>>2];v=c[n>>2]|0;c[a+4>>2]=v;f[a+8>>2]=A;c[a+12>>2]=v;c[a+16>>2]=c[m>>2];f[a+20>>2]=z;f[a+24>>2]=A;f[a+28>>2]=z;f[a+32>>2]=y;f[b>>2]=-+f[j>>2];f[b+4>>2]=-+f[k>>2];f[b+8>>2]=-((x-w)*.5);zb=t;return}else{C=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,364)|0,35007)|0,25078)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,360)|0,35007)|0,25005)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,359)|0,35007)|0,24930)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}function Bi(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;if((i|0)>0?(i+1|0)>>>0<(Ng(h)|0)>>>0:0){k=j+-1|0;if((j|0)>0?(l=j+1|0,l>>>0<(Og(h)|0)>>>0):0){k=(ch(h,k)|0)+(i<<2)|0;j=(ch(h,j)|0)+(i<<2)|0;m=(ch(h,l)|0)+(i<<2)|0;h=j+4|0;i=j+-4|0;f[a>>2]=(+f[h>>2]-+f[i>>2])*.5;f[b>>2]=(+f[m>>2]-+f[k>>2])*.5;f[d>>2]=+f[h>>2]+(+f[i>>2]-+f[j>>2]*2.0);f[e>>2]=+f[m>>2]+(+f[k>>2]-+f[j>>2]*2.0);f[g>>2]=(+f[k+-4>>2]+ +f[m+4>>2]-(+f[k+4>>2]+ +f[m+-4>>2]))*.25;zb=n;return}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26089)|0,24528)|0,35e3)|0,285)|0,35007)|0,25005)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26033)|0,24528)|0,35e3)|0,284)|0,35007)|0,24930)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}function Ci(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;f=Di(a)|0;e=Ng(a)|0;d=Og(a)|0;return +(+Fi(f,e,d,Ei(a)|0,b,c))}function Di(a){a=a|0;return c[a+24>>2]|0}function Ei(a){a=a|0;return c[a+12>>2]|0}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return +(+Gi(a,b,c,d,e,f))}function Gi(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;h=+h;var i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;p=zb;zb=zb+16|0;n=p;o=~~+s(+g);if((o|0)!=(~~g|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25283)|0,25335)|0,35e3)|0,69)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(n,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(n);QE(m,l)|0;ME(m)|0;ua()}l=~~+s(+h);if((l|0)!=(~~h|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25441)|0,25335)|0,35e3)|0,70)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);k=XF(n,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(n);QE(m,k)|0;ME(m)|0;ua()}m=o+1|0;k=l+1|0;if(!((l|0)>-1&l>>>0>>0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,25493)|0,25335)|0,35e3)|0,79)|0,35007)|0,25539)|0;IE(n,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);r=XF(n,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(n);QE(q,r)|0;ME(q)|0;ua()}if(k>>>0>=d>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25556)|0,25335)|0,35e3)|0,80)|0,35007)|0,25616)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!((o|0)>-1&o>>>0>>0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25640)|0,25335)|0,35e3)|0,81)|0,35007)|0,25685)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(m>>>0>=b>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25702)|0,25335)|0,35e3)|0,82)|0,35007)|0,25761)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}b=a+(B(l,e)|0)|0;a=b+e|0;u=+(m|0)-g;i=+(k|0)-h;j=u*i;t=g-+(o|0);i=t*i;h=h-+(l|0);g=u*h;h=t*h;if(!(j>=0.0)|!(j<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25785)|0,25335)|0,35e3)|0,94)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(i>=0.0)|!(i<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25845)|0,25335)|0,35e3)|0,95)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(g>=0.0)|!(g<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25892)|0,25335)|0,35e3)|0,96)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h>=0.0)|!(h<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25939)|0,25335)|0,35e3)|0,97)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h+(g+(j+i))<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25986)|0,25335)|0,35e3)|0,98)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}else{zb=p;return +(j*+f[b+(o<<2)>>2]+i*+f[b+(m<<2)>>2]+g*+f[a+(o<<2)>>2]+h*+f[a+(m<<2)>>2])}return +(0.0)}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/36|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/36|0)+b|0;e=$h(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/36|0;g=k<<1;vh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/36|0,a+8|0);Ji(f,b);wh(a,f);xh(f);break}}else Ii(a,b);while(0);zb=i;return}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+4|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ji(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ki(a){a=a|0;return (c[a+4>>2]|0)-(c[a>>2]|0)>>5|0}function Li(a,b){a=a|0;b=b|0;return (c[a>>2]|0)+(b<<5)|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f;e=c[a>>2]|0;if((c[a+4>>2]|0)-e>>5>>>0>b>>>0){e=Ng(e)|0;e=~~+Pi(+Oi(+(((e>>>0)/((Ng((c[a>>2]|0)+(b<<5)|0)|0)>>>0)|0)>>>0)));zb=f;return e|0}else{f=Xf(Xf(PE(Xf(Xf(Xf(56032,26949)|0,24528)|0,35e3)|0,94)|0,35007)|0,26995)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=XF(d,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(d);QE(f,e)|0;ME(f)|0;ua()}return 0}function Ni(a,b){a=a|0;b=b|0;return (b|0)%(c[a+16>>2]|0)|0|0}function Oi(a){a=+a;return +(+z(+a)/.6931471824645996)}function Pi(a){a=+a;return +(+s(+(a+.5)))}function Qi(a){a=a|0;c[a>>2]=15676;gh(a+56|0);gh(a+44|0);Si(a+32|0);Ti(a);return}function Ri(a){a=a|0;Qi(a);SA(a);return}function Si(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Ti(a){a=a|0;c[a>>2]=15692;mh(a+4|0);return}function Ui(a){a=a|0;Ti(a);SA(a);return}function Vi(a,g,h,i,j){a=a|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=zb;zb=zb+16|0;k=t;if(i>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,55)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}if(j>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,56)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}o=i+-1|0;p=i+-2|0;q=i+-3|0;r=i+-4|0;l=g;m=0;while(1){if((m|0)==(j|0))break;s=h+(B(m,i)|0)|0;k=d[s>>0]|0;u=s+1|0;n=s+2|0;b[l>>1]=(k*7|0)+(d[n>>0]|0)+((d[u>>0]|0)+k<<2);k=d[s>>0]|0;b[l+2>>1]=((d[u>>0]|0)*6|0)+k+(d[s+3>>0]|0)+((d[n>>0]|0)+k<<2);k=2;n=l+4|0;while(1){if((k|0)==(p|0))break;u=k+1|0;b[n>>1]=((d[s+k>>0]|0)*6|0)+(d[s+(k+-2)>>0]|0)+((d[s+u>>0]|0)+(d[s+(k+-1)>>0]|0)<<2)+(d[s+(k+2)>>0]|0);k=u;n=n+2|0}u=l+(p<<1)|0;n=s+p|0;k=s+q|0;v=s+o|0;w=d[v>>0]|0;b[u>>1]=((d[n>>0]|0)*6|0)+w+(d[s+r>>0]|0)+(w+(d[k>>0]|0)<<2);s=d[v>>0]|0;b[u+2>>1]=(s*7|0)+(d[k>>0]|0)+((d[n>>0]|0)+s<<2);l=l+(i<<1)|0;m=m+1|0}s=j+-2|0;k=g+(i<<1)|0;q=k+(i<<1)|0;l=0;m=q;n=k;o=g;p=a;while(1){if((l|0)==(i|0))break;w=e[o>>1]|0;f[p>>2]=+((w*7|0)+((e[n>>1]|0)+w<<2)+(e[m>>1]|0)|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+4|0}o=0;p=q+(i<<1)|0;n=q;l=g;m=a+(i<<2)|0;while(1){if((o|0)==(i|0))break;w=e[l>>1]|0;f[m>>2]=+(((e[k>>1]|0)*6|0)+w+((e[n>>1]|0)+w<<2)+(e[p>>1]|0)|0)*.00390625;o=o+1|0;p=p+2|0;n=n+2|0;k=k+2|0;l=l+2|0;m=m+4|0}l=2;while(1){if((l|0)==(s|0))break;q=g+((B(l+-2|0,i)|0)<<1)|0;p=q+(i<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;k=0;m=n+(i<<1)|0;r=a+((B(l,i)|0)<<2)|0;while(1){if((k|0)==(i|0))break;f[r>>2]=+(((e[o>>1]|0)*6|0)+(e[q>>1]|0)+((e[n>>1]|0)+(e[p>>1]|0)<<2)+(e[m>>1]|0)|0)*.00390625;k=k+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;q=q+2|0;r=r+4|0}l=l+1|0}p=g+((B(j+-4|0,i)|0)<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(s,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+(((e[n>>1]|0)*6|0)+(e[p>>1]|0)+(w+(e[o>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;k=k+4|0}o=g+((B(j+-3|0,i)|0)<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(j+-1|0,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+((w*6|0)+(e[o>>1]|0)+(w+(e[n>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;k=k+4|0}zb=t;return}function Wi(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0;q=zb;zb=zb+16|0;h=q;if(e>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,168)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}if(g>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,169)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}l=e+-1|0;m=e+-2|0;n=e+-3|0;o=e+-4|0;i=b;j=0;while(1){if((j|0)==(g|0))break;p=d+((B(j,e)|0)<<2)|0;r=+f[p>>2];k=p+4|0;h=p+8|0;f[i>>2]=+f[h>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0));r=+f[p>>2];f[i+4>>2]=+f[p+12>>2]+(r+(+f[k>>2]*6.0+(r+ +f[h>>2])*4.0));h=2;k=i+8|0;while(1){if((h|0)==(m|0))break;s=h+1|0;f[k>>2]=+f[p+(h+2<<2)>>2]+(+f[p+(h+-2<<2)>>2]+(+f[p+(h<<2)>>2]*6.0+(+f[p+(h+-1<<2)>>2]+ +f[p+(s<<2)>>2])*4.0));h=s;k=k+4|0}s=i+(m<<2)|0;k=p+(m<<2)|0;h=p+(n<<2)|0;t=p+(l<<2)|0;r=+f[t>>2];f[s>>2]=r+(+f[p+(o<<2)>>2]+(+f[k>>2]*6.0+(+f[h>>2]+r)*4.0));r=+f[t>>2];f[s+4>>2]=r+(+f[h>>2]+(r*6.0+(r+ +f[k>>2])*4.0));i=i+(e<<2)|0;j=j+1|0}p=g+-2|0;h=b+(e<<2)|0;n=h+(e<<2)|0;i=0;j=n;k=h;l=b;m=a;while(1){if((i|0)==(e|0))break;r=+f[l>>2];f[m>>2]=(+f[j>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0}l=0;m=n+(e<<2)|0;k=n;i=b;j=a+(e<<2)|0;while(1){if((l|0)==(e|0))break;r=+f[i>>2];f[j>>2]=(+f[m>>2]+(r+(+f[h>>2]*6.0+(r+ +f[k>>2])*4.0)))*.00390625;l=l+1|0;m=m+4|0;k=k+4|0;h=h+4|0;i=i+4|0;j=j+4|0}i=2;while(1){if((i|0)==(p|0))break;n=b+((B(i+-2|0,e)|0)<<2)|0;m=n+(e<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;h=0;j=k+(e<<2)|0;o=a+((B(i,e)|0)<<2)|0;while(1){if((h|0)==(e|0))break;f[o>>2]=(+f[j>>2]+(+f[n>>2]+(+f[l>>2]*6.0+(+f[m>>2]+ +f[k>>2])*4.0)))*.00390625;h=h+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;n=n+4|0;o=o+4|0}i=i+1|0}m=b+((B(g+-4|0,e)|0)<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(p,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[m>>2]+(+f[k>>2]*6.0+(+f[l>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;h=h+4|0}l=b+((B(g+-3|0,e)|0)<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(g+-1|0,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[l>>2]+(r*6.0+(+f[k>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;h=h+4|0}zb=q;return}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c>>>1;j=d>>>1;k=c<<1;i=0;while(1){if((i|0)==(j|0))break;g=b+((B(k,i)|0)<<2)|0;d=0;e=g+(c<<2)|0;h=a;while(1){if((d|0)==(l|0))break;f[h>>2]=(+f[g>>2]+ +f[g+4>>2]+ +f[e>>2]+ +f[e+4>>2])*.25;d=d+1|0;e=e+8|0;g=g+8|0;h=h+4|0}i=i+1|0;a=a+(l<<2)|0}return}function Yi(a){a=a|0;c[a>>2]=15692;a=a+4|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;c[a+16>>2]=b;c[a+20>>2]=d;e=+La(+(1.0/+(d+-1|0)));f[a+24>>2]=e;e=1.0/+z(+e);f[a+28>>2]=e;return}function _i(a){a=a|0;var b=0;Yi(a);c[a>>2]=15676;a=a+32|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $i(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;Zi(a,e,3);k=a+4|0;l=a+20|0;Rg(k,B(c[l>>2]|0,e)|0);g=0;while(1){if((g|0)>=(e|0))break;h=b>>>g;i=d>>>g;f=0;while(1){j=c[l>>2]|0;if(f>>>0>=j>>>0)break;j=(B(j,g)|0)+f|0;cq((c[k>>2]|0)+(j<<5)|0,2,h,i,-1,1);f=f+1|0}g=g+1|0}l=B(d,b)|0;aj(a+32|0,l);fh(a+44|0,l);fh(a+56|0,l);return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>1;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<1)}else bj(a,b-e|0);return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>1>>>0>>0){d=(d-(c[a>>2]|0)>>1)+b|0;e=dj(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;g=(c[g>>2]|0)-j|0;ej(f,g>>1>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>1,a+8|0);fj(f,b);gj(a,f);hj(f);break}}else cj(a,b);while(0);zb=i;return}function cj(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function dj(a){a=a|0;return 2147483647}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if((b|0)<0){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<1)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<1)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<1);return}function fj(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function gj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>1)<<1)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hj(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-2|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((Mg(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27230)|0,27081)|0,35e3)|0,330)|0,35007)|0,27281)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((ah(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27305)|0,27081)|0,35e3)|0,331)|0,35007)|0,27350)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}e=a+4|0;f=a+16|0;g=a+20|0;if(((c[a+8>>2]|0)-(c[e>>2]|0)>>5|0)!=(B(c[g>>2]|0,c[f>>2]|0)|0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,27376)|0,27081)|0,35e3)|0,333)|0,35007)|0,27450)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(i,j)|0;ME(i)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27485)|0,27081)|0,35e3)|0,334)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27577)|0,27081)|0,35e3)|0,335)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}jj(a,c[e>>2]|0,b);b=c[e>>2]|0;jj(a,b+32|0,b);b=c[e>>2]|0;kj(a,b+64|0,b+32|0);b=1;while(1){if(b>>>0>=(c[f>>2]|0)>>>0)break;k=B(c[g>>2]|0,b)|0;k=lj((c[e>>2]|0)+(k<<5)|0)|0;d=(B(c[g>>2]|0,b)|0)+-1|0;d=lj((c[e>>2]|0)+(d<<5)|0)|0;i=(B(c[g>>2]|0,b)|0)+-1|0;i=Ng((c[e>>2]|0)+(i<<5)|0)|0;j=(B(c[g>>2]|0,b)|0)+-1|0;Xi(k,d,i,Og((c[e>>2]|0)+(j<<5)|0)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;jj(a,i+(j+1<<5)|0,i+(j<<5)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;kj(a,i+(j+2<<5)|0,i+(j+1<<5)|0);b=b+1|0}zb=h;return}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=zb;zb=zb+16|0;e=f;if((Mg(b)|0)!=2){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27639)|0,27081)|0,35e3)|0,357)|0,35007)|0,27686)|0;IE(e,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(g,h)|0;ME(g)|0;ua()}switch(Mg(d)|0){case 1:{e=lj(b)|0;g=c[a+32>>2]|0;h=Di(d)|0;Vi(e,g,h,Ng(d)|0,Og(d)|0);break}case 2:{e=lj(b)|0;g=c[a+44>>2]|0;h=Di(d)|0;Wi(e,g,h,Ng(d)|0,Og(d)|0);break}case 0:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27722,Yf(27722)|0);mj(h,e);Q(h|0,13208,5)}default:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27741,Yf(27741)|0);mj(h,e);Q(h|0,13208,5)}}zb=f;return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=zb;zb=zb+32|0;f=e;j=c[a+56>>2]|0;i=Mg(d)|0;h=Ng(d)|0;g=Og(d)|0;kq(f,j,i,h,g,Ei(d)|0,1);jj(a,f,d);jj(a,b,f);rq(f);zb=e;return}function lj(a){a=a|0;return c[a+24>>2]|0}function mj(a,b){a=a|0;b=b|0;c[a>>2]=15708;fO(a+4|0,b);return}function nj(a){a=a|0;c[a>>2]=15708;jO(a+4|0);return}function oj(a){a=a|0;nj(a);SA(a);return}function pj(b){b=b|0;b=b+4|0;if((a[b+11>>0]|0)<0)b=c[b>>2]|0;return b|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;m=c+-1|0;j=b+(c<<2)|0;h=b+4|0;n=+f[b>>2];o=+f[h>>2]-n;n=+f[j>>2]-n;p=+y(+n,+o)+3.141592653589793;f[a>>2]=p;n=+u(+(o*o+n*n));f[a+4>>2]=n;g=1;e=j;while(1){i=a+8|0;e=e+4|0;if(g>>>0>=m>>>0)break;l=h+4|0;o=+f[l>>2]-+f[h+-4>>2];p=+f[e>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;g=g+1|0;h=l;a=i}l=d+-1|0;p=+f[h>>2];o=p-+f[h+-4>>2];p=+f[e>>2]-p;n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;k=1;g=i;d=j+(c<<2)|0;h=b;a=j;while(1){e=g+8|0;if(k>>>0>=l>>>0)break;j=a+4|0;o=+f[j>>2]-+f[a>>2];p=+f[d>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;i=1;g=g+16|0;while(1){a=d+4|0;e=h+4|0;if(i>>>0>=m>>>0)break;q=j+4|0;o=+f[q>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;i=i+1|0;d=a;h=e;j=q;g=g+8|0}o=+f[j>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;k=k+1|0;d=d+8|0;h=h+8|0;a=j+4|0}h=b+((B(l,c)|0)<<2)|0;a=h+(0-c<<2)|0;q=h+4|0;p=+f[h>>2];o=+f[q>>2]-p;p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;h=1;g=q;while(1){d=e+8|0;a=a+4|0;if(h>>>0>=m>>>0)break;q=g+4|0;o=+f[q>>2]-+f[g+-4>>2];p=+f[g>>2]-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;h=h+1|0;e=d;g=q}p=+f[g>>2];o=p-+f[g+-4>>2];p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;return}function rj(a){a=a|0;return 536870911}function sj(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;a=a+12|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tj(a){a=a|0;mh(a+40|0);gh(a+28|0);return}function uj(a,b,d,e,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=+i;j=+j;k=k|0;l=+l;var m=0,n=0,o=0;c[a>>2]=e;n=a+4|0;c[n>>2]=g;c[a+8>>2]=h;f[a+12>>2]=i;f[a+16>>2]=j;c[a+20>>2]=k;f[a+24>>2]=l;fh(a+28|0,h);o=a+40|0;Rg(o,B(c[n>>2]|0,c[a>>2]|0)|0);k=0;while(1){if((k|0)==(e|0))break;a=B(k,g)|0;m=b>>>k;n=d>>>k;h=0;while(1){if((h|0)==(g|0))break;cq((c[o>>2]|0)+(h+a<<5)|0,2,m,n,-1,2);h=h+1|0}k=k+1|0}return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=zb;zb=zb+16|0;f=g;e=a+40|0;a=0;while(1){d=Ah(b)|0;if(a>>>0>=(c[d+4>>2]|0)-(c[d>>2]|0)>>5>>>0){a=3;break}d=Ah(b)|0;d=(c[d>>2]|0)+(a<<5)|0;h=Ng(d)|0;if((h|0)!=((Ei(d)|0)>>>2|0)){a=5;break}j=wj((c[e>>2]|0)+(a<<5)|0)|0;i=xj(d)|0;h=Ng(d)|0;qj(j,i,h,Og(d)|0);a=a+1|0}if((a|0)==3){zb=g;return}else if((a|0)==5){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27784)|0,27845)|0,35e3)|0,96)|0,35007)|0,27934)|0;IE(f,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(f,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(f);QE(j,i)|0;ME(j)|0;ua()}}function wj(a){a=a|0;return c[a+24>>2]|0}function xj(a){a=a|0;return c[a+24>>2]|0}function yj(a,b,d,e,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;i=+i;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0;F=zb;zb=zb+48|0;D=F+32|0;E=F+24|0;w=F+16|0;x=F+12|0;y=F+8|0;z=F+4|0;C=F;if(!(i>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,27975)|0,27845)|0,35e3)|0,119)|0,35007)|0,28005)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}l=a+4|0;v=(B(c[l>>2]|0,e)|0)+g|0;m=a+40|0;if(!(+((Ng((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>i)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28024)|0,27845)|0,35e3)|0,120)|0,35007)|0,28104)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}if(!(j>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28140)|0,27845)|0,35e3)|0,121)|0,35007)|0,28170)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}v=(B(c[l>>2]|0,e)|0)+g|0;if(!(+((Og((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>j)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28189)|0,27845)|0,35e3)|0,122)|0,35007)|0,28270)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}q=(B(c[l>>2]|0,e)|0)+g|0;q=(c[m>>2]|0)+(q<<5)|0;if((ah(q)|0)!=2){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28307)|0,27845)|0,35e3)|0,126)|0,35007)|0,28348)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}c[d>>2]=0;e=~~(i+.5);l=~~(j+.5);a:do if(((e|0)>=0?!((l|0)<0|(Ng(q)|0)>>>0<=e>>>0):0)?(Og(q)|0)>>>0>l>>>0:0){n=+zj(1.0,+f[a+12>>2]*k);s=-1.0/(+ji(n)*2.0);n=n*+f[a+16>>2];t=+A(+(+ji(n)));m=~~(n+.5);p=Aj(0,e-m|0)|0;o=Bj(m+e|0,(Ng(q)|0)+-1|0)|0;e=Aj(0,l-m|0)|0;m=Bj(m+l|0,(Og(q)|0)+-1|0)|0;u=a+28|0;v=c[u>>2]|0;Cj(v,(c[a+32>>2]|0)-v>>2);v=a+8|0;while(1){if((e|0)>(m|0))break;k=+ji(+(e|0)-j);g=ch(q,e)|0;l=p;while(1){if((l|0)>(o|0))break;n=k+ +ji(+(l|0)-i);if(!(n>t)){G=g+(l<<1<<2)|0;n=+Dj(s*n);r=c[v>>2]|0;Ej(c[u>>2]|0,+f[G>>2]*+(r|0)*.159154943091895,n*+f[G+4>>2],r)}l=l+1|0}e=e+1|0}l=a+20|0;e=0;while(1){if((e|0)>=(c[l>>2]|0))break;G=c[u>>2]|0;Fj(G,G,c[v>>2]|0,15720);e=e+1|0}l=c[v>>2]|0;e=0;s=0.0;while(1){if((e|0)>=(l|0))break;j=+f[(c[u>>2]|0)+(e<<2)>>2];e=e+1|0;s=j>s?j:s}if(!(s==0.0)){if(!(s>0.0)){G=Xf(Xf(PE(Xf(Xf(Xf(56032,28379)|0,27845)|0,35e3)|0,218)|0,35007)|0,28417)|0;IE(D,G+(c[(c[G>>2]|0)+-12>>2]|0)|0);r=XF(D,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(D);QE(G,r)|0;ME(G)|0;ua()}p=D+4|0;q=E+4|0;r=w+4|0;o=a+24|0;m=0;e=l;while(1){if((m|0)>=(e|0))break a;n=+(m|0);f[D>>2]=n;l=c[u>>2]|0;G=l+(m<<2)|0;a=c[G>>2]|0;c[p>>2]=a;g=m+-1|0;f[E>>2]=+(g|0);g=c[l+(((g+e|0)%(e|0)|0)<<2)>>2]|0;c[q>>2]=g;m=m+1|0;f[w>>2]=+(m|0);l=c[l+(((m+e|0)%(e|0)|0)<<2)>>2]|0;c[r>>2]=l;k=(c[h>>2]=a,+f[h>>2]);if(+f[G>>2]>s*+f[o>>2]?(j=(c[h>>2]=l,+f[h>>2]),k>(c[h>>2]=g,+f[h>>2])&k>j):0){f[C>>2]=n;if(Gj(x,y,z,E,D,w)|0)Hj(C,+f[x>>2],+f[y>>2],+f[z>>2])|0;j=+(c[v>>2]|0);e=c[d>>2]|0;f[b+(e<<2)>>2]=(+f[C>>2]+.5+j)/j*6.283185307179586%6.283185307179586;c[d>>2]=e+1;e=c[v>>2]|0}}}}while(0);zb=F;return}function zj(a,b){a=+a;b=+b;return +(a>b?a:b)}function Aj(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function Bj(a,b){a=a|0;b=b|0;return ((a|0)<(b|0)?a:b)|0}function Cj(a,b){a=a|0;b=b|0;aP(a|0,0,b<<2|0)|0;return}function Dj(a){a=+a;return +(((((((a+6.0)*a+30.0)*a+120.0)*a+360.0)*a+720.0)*a+720.0)*.0013888888)}function Ej(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var g=0.0,h=0,i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;if(!a){h=Xf(Xf(PE(Xf(Xf(Xf(56032,28448)|0,28484)|0,35e3)|0,139)|0,35007)|0,28571)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(h,k)|0;ME(h)|0;ua()}if(b+.5>0.0?(g=b+-.5,g<+(e|0)):0){if(!(d>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28702)|0,28484)|0,35e3)|0,141)|0,35007)|0,28740)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}if((e|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28769)|0,28484)|0,35e3)|0,142)|0,35007)|0,28806)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}k=~~+s(+g);b=b-+(k|0)+-.5;g=1.0-b;h=(k+e|0)%(e|0)|0;e=(k+1|0)%(e|0)|0;if(!(g>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28835)|0,28484)|0,35e3)|0,150)|0,35007)|0,28866)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}if(!(b>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28886)|0,28484)|0,35e3)|0,151)|0,35007)|0,28917)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((h|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28937)|0,28484)|0,35e3)|0,152)|0,35007)|0,28985)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((e|0)>-1){l=a+(h<<2)|0;f[l>>2]=g*d+ +f[l>>2];l=a+(e<<2)|0;f[l>>2]=b*d+ +f[l>>2];zb=j;return}else{l=Xf(Xf(PE(Xf(Xf(Xf(56032,29011)|0,28484)|0,35e3)|0,153)|0,35007)|0,29059)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}}l=Xf(Xf(PE(Xf(Xf(Xf(56032,28597)|0,28484)|0,35e3)|0,140)|0,35007)|0,28662)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;k=+f[b>>2];g=c+-1|0;h=b+(g<<2)|0;i=d+4|0;j=d+8|0;e=+f[h>>2];c=0;while(1){if((c|0)==(g|0))break;m=+f[b+(c<<2)>>2];l=c+1|0;f[a+(c<<2)>>2]=e*+f[d>>2]+m*+f[i>>2]+ +f[j>>2]*+f[b+(l<<2)>>2];e=m;c=l}f[a+(g<<2)>>2]=e*+f[d>>2]+ +f[i>>2]*+f[h>>2]+k*+f[j>>2];return}function Gj(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;h=+f[g>>2];k=+f[e>>2];l=+f[d>>2];j=h-l;h=(h-k)*j;i=l-k;j=i*j;if(i==0.0|(h==0.0|j==0.0)){f[a>>2]=0.0;f[b>>2]=0.0;b=0;h=0.0}else{l=l*l;m=e+4|0;n=+f[m>>2];e=d+4|0;h=(+f[g+4>>2]-n)/h-(+f[e>>2]-n)/j;f[a>>2]=h;h=(+f[e>>2]-+f[m>>2]+(k*k-l)*h)/i;f[b>>2]=h;b=1;h=+f[e>>2]-l*+f[a>>2]-h*+f[d>>2]}f[c>>2]=h;return b|0}function Hj(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;if(b==0.0)a=0;else{f[a>>2]=-c/(b*2.0);a=1}return a|0}function Ij(a){a=a|0;var b=0,d=0;c[a>>2]=0;d=tB(24)|0;Jj(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Kj(b);SA(b)}return}function Jj(a){a=a|0;var b=0,d=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=1065353216;d=tB(840)|0;$j(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Mj(b);SA(b)}return}function Kj(a){a=a|0;var b=0;Lj(a+4|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0){Mj(b);SA(b)}return}function Lj(a){a=a|0;Yj(a);return}function Mj(a){a=a|0;Nj(a+788|0);kp(a+652|0);Oj(a+636|0);Pj(a+316|0);yh(a+160|0);Qi(a+92|0);Qj(a+72|0);Rj(a+64|0);Sj(a+12|0);return}function Nj(a){a=a|0;Wj(a+24|0);Xj(a+12|0);gh(a);return}function Oj(a){a=a|0;Sj(a);return}function Pj(a){a=a|0;return}function Qj(a){a=a|0;Tj(a);return}function Rj(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function Sj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Tj(a){a=a|0;var b=0;Uj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Uj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Vj(b+8|0);Pf(b,20);b=a}return}function Vj(a){a=a|0;Rj(a+4|0);return}function Wj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Xj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Yj(a){a=a|0;var b=0;Zj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Zj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;_j(b+8|0);Pf(b,24);b=a}return}function _j(a){a=a|0;lg(a+4|0);return}function $j(b){b=b|0;var d=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+64|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+88>>2]=1065353216;_i(b+92|0);d=b+160|0;dh(d);Gp(b+316|0);ak(b+636|0);jp(b+652|0);bk(b+788|0,.009999999776482582,1024,1064,50);ck(d,3.0);dk(d,4.0);eh(d,500);f[b+4>>2]=3.0;c[b>>2]=8;a[b+8>>0]=1;return}function ak(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;f[a+12>>2]=.699999988079071;return}function bk(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=a;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));ek(a,b,d,e,f);return}function ck(a,b){a=a|0;b=+b;f[a+52>>2]=b;return}function dk(a,b){a=a|0;b=+b;f[a+56>>2]=b;return}function ek(a,b,d,e,g){a=a|0;b=+b;d=d|0;e=e|0;g=g|0;fh(a,d*9|0);fk(a+24|0,d);f[a+36>>2]=b;c[a+40>>2]=d;c[a+44>>2]=e;c[a+48>>2]=g;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>3;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<3)}else gk(a,b-e|0);return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>3>>>0>>0){d=(d-(c[a>>2]|0)>>3)+b|0;e=ik(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>2;jk(f,k>>3>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>3,a+8|0);kk(f,b);lk(a,f);mk(f);break}}else hk(a,b);while(0);zb=i;return}function hk(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function ik(a){a=a|0;return 536870911}function jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function kk(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function nk(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=0;if(b|0){Kj(b);SA(b)}return}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function pk(a){a=a|0;return a+4|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((b|0)<(c|0)|(a|0)<(c|0))break;d=d+1|0;b=b>>1;a=a>>1}return d|0}function rk(a){a=a|0;return c[a>>2]|0}function sk(a){a=a|0;return c[a+4>>2]|0}function tk(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;bm(a+8|0);cm(a+36|0);return}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15740;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;Rl(a,e);zb=d;return}function vk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wk(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xk(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;i=k+20|0;j=k;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,30067)|0,35e3)|0,212)|0,35007)|0,33688)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(h,l)|0;ME(h)|0;ua()}if(!e){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30146)|0,30067)|0,35e3)|0,213)|0,35007)|0,30178)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;if((c[l+4>>2]|0)==(c[l>>2]|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30195)|0,30067)|0,35e3)|0,214)|0,35007)|0,30247)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Ng(c[l>>2]|0)|0;if((l|0)!=(rk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30264)|0,30067)|0,35e3)|0,215)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Og(c[l>>2]|0)|0;if((l|0)!=(sk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30372)|0,30067)|0,35e3)|0,216)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}Rh(e,d);h=Ml(e)|0;Nl(i,((c[h+4>>2]|0)-(c[h>>2]|0)|0)/36|0);h=0;while(1){l=Ml(e)|0;if(h>>>0>=(((c[l+4>>2]|0)-(c[l>>2]|0)|0)/36|0)>>>0)break;l=Ml(e)|0;l=c[l>>2]|0;gg(j,+f[l+(h*36|0)>>2],+f[l+(h*36|0)+4>>2],+f[l+(h*36|0)+8>>2],+f[l+(h*36|0)+28>>2],+f[l+(h*36|0)+24>>2]>0.0);l=(c[i>>2]|0)+(h*20|0)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];a[l+16>>0]=a[j+16>>0]|0;Of(j);h=h+1|0}Hp(g,zk(b)|0,d,i);Nf(i);zb=k;return}function yk(){if((a[54528]|0)==0?nB(54528)|0:0){sq(55464);pB(54528)}return 55464}function zk(a){a=a|0;return a+8|0}function Ak(a){a=a|0;return ((c[a+20>>2]|0)-(c[a+16>>2]|0)|0)/20|0|0}function Bk(a){a=a|0;var b=0,d=0;d=a+36|0;Gk(d,128);Hk(d,8);Ik(d,8);Jk(d,16);a=a+8|0;b=Kk(a)|0;b=c[b>>2]|0;Lk(d,b,Ak(a)|0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Dk(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ek(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Dk(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(20)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Fk(a,b)}}else Fk(a,b);return}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Gk(a,b){a=a|0;b=b|0;Ll(a+12|0,b);return}function Hk(a,b){a=a|0;b=b|0;Kl(a+12|0,b);return}function Ik(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function Jk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function Kk(a){a=a|0;return a+4|0}function Lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;g=i;Mk(g,d);f=c[g>>2]|0;h=(c[g+4>>2]|0)-f>>2;e=0;while(1){if((e|0)==(h|0))break;c[f+(e<<2)>>2]=e;e=e+1|0}Nk(a,b,d,f,h);Xj(g);zb=i;return}function Mk(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Jl(a,b);Fl(a,b)}return}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=tB(128)|0;Pk(g,Ok(a)|0);i=a+8|0;h=c[i>>2]|0;c[i>>2]=g;if(h){Qk(h);SA(h);g=c[i>>2]|0}Rk(g,0);Sk(a,c[i>>2]|0,b,d,e,f);return}function Ok(a){a=a|0;var b=0;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;return a|0}function Pk(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Il(b+4|0,96);return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+104|0;f=a+108|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0){Qk(b);SA(b)}d=d+1|0}Xj(a+116|0);Hl(e);return}function Rk(b,c){b=b|0;c=c|0;a[b+100>>0]=c&1;return}function Sk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+32|0;o=q+20|0;p=q;h=a+12|0;n=Tk(h)|0;if((Aj(n,c[a+108>>2]|0)|0)>=(g|0)){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break;o=c[f+(h<<2)>>2]|0;p=Uk(b)|0;c[(c[p>>2]|0)+(h<<2)>>2]=o;h=h+1|0}zb=q;return}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=1065353216;Wk(h,d,e,f,g);m=Xk(h)|0;n=m+4|0;i=c[n>>2]|0;h=c[m>>2]|0;if((i-h>>2|0)!=(g|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29190)|0,35e3)|0,363)|0,35007)|0,29284)|0;IE(o,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(o,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(o);QE(l,k)|0;ME(l)|0;ua()}l=0;while(1){if(l>>>0>=i-h>>2>>>0){h=10;break}h=c[h+(l<<2)>>2]|0;if((h|0)==-1){h=12;break}if((h|0)>=(g|0)){h=14;break}h=f+(h<<2)|0;if((c[h>>2]|0)>=(e|0)){h=16;break}h=Yk(p,h)|0;i=f+(l<<2)|0;j=h+4|0;k=c[j>>2]|0;if((k|0)==(c[h+8>>2]|0))Zk(h,i);else{c[k>>2]=c[i>>2];c[j>>2]=k+4}l=l+1|0;h=c[m>>2]|0;i=c[n>>2]|0}if((h|0)==10){h=p+12|0;a:do if((c[h>>2]|0)==1){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break a;e=c[f+(h<<2)>>2]|0;o=Uk(b)|0;c[(c[o>>2]|0)+(h<<2)>>2]=e;h=h+1|0}}else{g=_k(b)|0;$k(g,c[h>>2]|0);h=p+8|0;while(1){h=c[h>>2]|0;if(!h)break a;i=h;l=i+12|0;m=i+16|0;if((c[m>>2]|0)==(c[l>>2]|0))break;j=tB(128)|0;k=Ok(a)|0;al(j,k,d+((c[i+8>>2]|0)*96|0)|0);c[o>>2]=j;Rk(j,0);i=_k(b)|0;j=i+4|0;k=c[j>>2]|0;if((k|0)==(c[i+8>>2]|0))bl(i,o);else{c[k>>2]=c[o>>2];c[j>>2]=(c[j>>2]|0)+4}g=c[l>>2]|0;Sk(a,c[o>>2]|0,d,e,g,(c[m>>2]|0)-g>>2)}b=Xf(Xf(PE(Xf(Xf(Xf(56032,29507)|0,29190)|0,35e3)|0,387)|0,35007)|0,29553)|0;IE(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);e=XF(o,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(o);QE(b,e)|0;ME(b)|0;ua()}while(0);cl(p);zb=q;return}else if((h|0)==12){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29306)|0,29190)|0,35e3)|0,365)|0,35007)|0,29349)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==14){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29371)|0,29190)|0,35e3)|0,366)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==16){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29446)|0,29190)|0,35e3)|0,367)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}}function Tk(a){a=a|0;return c[a+4>>2]|0}function Uk(a){a=a|0;return a+116|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else El(a,b-e|0);return}function Wk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+16|0;o=s;p=a+4|0;g=c[p>>2]|0;q=a+12|0;r=a+16|0;if((g|0)!=((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,154)|0,35007)|0,29707)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((d|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,155)|0,35007)|0,29792)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((f|0)>(d|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,156)|0,35007)|0,29879)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(f|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29906)|0,29635)|0,35e3)|0,157)|0,35007)|0,29947)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}j=a+24|0;c[o>>2]=-1;sl(j,f,o);k=a+36|0;c[o>>2]=-1;sl(k,f,o);l=a+48|0;Vk(l,f);n=c[l>>2]|0;m=a+52|0;tl(n,(c[m>>2]|0)-n>>2,0);n=a+8|0;g=-1;i=0;while(1){if((i|0)>=(c[n>>2]|0))break;h=c[l>>2]|0;ul(h,(c[m>>2]|0)-h>>2,c[p>>2]|0,c[a>>2]|0);h=vl(a,k,b,d,e,f,c[l>>2]|0,c[p>>2]|0)|0;if(h>>>0>>0){wl(j,k);xl(c[q>>2]|0,c[l>>2]|0,c[p>>2]|0);g=h}i=i+1|0}if((c[p>>2]|0)==((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){zb=s;return}else{s=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,187)|0,35007)|0,29707)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(o,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(o);QE(s,r)|0;ME(s)|0;ua()}}function Xk(a){a=a|0;return a+24|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){pl(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;ql(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;ml(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[g>>2]=f+4;nl(a,d);ol(d);zb=h;return}}function _k(a){a=a|0;return a+104|0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0>>0){hl(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);il(a,d);jl(d)}zb=f;return}function al(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;kl(b+4|0,e,96);return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=gl(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;hl(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;il(a,d);jl(d);zb=h;return}}function cl(a){a=a|0;dl(a);return}function dl(a){a=a|0;var b=0;el(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function el(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;fl(b+8|0);Pf(b,24);b=a}return}function fl(a){a=a|0;Xj(a+4|0);return}function gl(a){a=a|0;return 1073741823}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function jl(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c|0)|0;return}function ll(a){a=a|0;return 1073741823}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function ql(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)rl(a,b)}}else rl(a,b);return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+(b<<2)}else Cl(a,b-f|0,d);return}function tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a:do if((b|0)>=1){c[a>>2]=d;e=1;while(1){if((e|0)==(b|0))break a;f=d+1|0;c[a+(e<<2)>>2]=f;e=e+1|0;d=f}}while(0);return}function ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){if((f|0)>=(d|0))break;i=a+(f<<2)|0;g=a+(((Bl(e)|0)%(b|0)|0)<<2)|0;h=c[i>>2]|0;c[i>>2]=c[g>>2];c[g>>2]=h;f=f+1|0}return}function vl(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;a=o;if(((c[b+4>>2]|0)-(c[b>>2]|0)>>2|0)!=(g|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29635)|0,35e3)|0,198)|0,35007)|0,29967)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((e|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,199)|0,35007)|0,29792)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(e|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,200)|0,35007)|0,29879)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29996)|0,29635)|0,35e3)|0,201)|0,35007)|0,30035)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}k=0;m=0;while(1){if((m|0)>=(g|0))break;n=f+(m<<2)|0;l=0;a=-1;while(1){if((l|0)==(i|0))break;e=h+(l<<2)|0;j=yl(d+((c[n>>2]|0)*96|0)|0,d+((c[f+(c[e>>2]<<2)>>2]|0)*96|0)|0)|0;if(j>>>0>>0){c[(c[b>>2]|0)+(m<<2)>>2]=c[e>>2];a=j}l=l+1|0}k=a+k|0;m=m+1|0}zb=o;return k|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function xl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function yl(a,b){a=a|0;b=b|0;return zl(a,b)|0}function zl(a,b){a=a|0;b=b|0;var d=0;d=Al(c[a>>2]|0,c[b>>2]|0)|0;d=(Al(c[a+4>>2]|0,c[b+4>>2]|0)|0)+d|0;d=d+(Al(c[a+8>>2]|0,c[b+8>>2]|0)|0)|0;d=d+(Al(c[a+12>>2]|0,c[b+12>>2]|0)|0)|0;d=d+(Al(c[a+16>>2]|0,c[b+16>>2]|0)|0)|0;d=d+(Al(c[a+20>>2]|0,c[b+20>>2]|0)|0)|0;d=d+(Al(c[a+24>>2]|0,c[b+24>>2]|0)|0)|0;d=d+(Al(c[a+28>>2]|0,c[b+28>>2]|0)|0)|0;d=d+(Al(c[a+32>>2]|0,c[b+32>>2]|0)|0)|0;d=d+(Al(c[a+36>>2]|0,c[b+36>>2]|0)|0)|0;d=d+(Al(c[a+40>>2]|0,c[b+40>>2]|0)|0)|0;d=d+(Al(c[a+44>>2]|0,c[b+44>>2]|0)|0)|0;d=d+(Al(c[a+48>>2]|0,c[b+48>>2]|0)|0)|0;d=d+(Al(c[a+52>>2]|0,c[b+52>>2]|0)|0)|0;d=d+(Al(c[a+56>>2]|0,c[b+56>>2]|0)|0)|0;d=d+(Al(c[a+60>>2]|0,c[b+60>>2]|0)|0)|0;d=d+(Al(c[a+64>>2]|0,c[b+64>>2]|0)|0)|0;d=d+(Al(c[a+68>>2]|0,c[b+68>>2]|0)|0)|0;d=d+(Al(c[a+72>>2]|0,c[b+72>>2]|0)|0)|0;d=d+(Al(c[a+76>>2]|0,c[b+76>>2]|0)|0)|0;d=d+(Al(c[a+80>>2]|0,c[b+80>>2]|0)|0)|0;d=d+(Al(c[a+84>>2]|0,c[b+84>>2]|0)|0)|0;d=d+(Al(c[a+88>>2]|0,c[b+88>>2]|0)|0)|0;return d+(Al(c[a+92>>2]|0,c[b+92>>2]|0)|0)|0}function Al(a,b){a=a|0;b=b|0;b=b^a;b=b-(b>>>1&1431655765)|0;b=(b>>>2&858993459)+(b&858993459)|0;return (B((b>>>4)+b&252645135,16843009)|0)>>>24|0}function Bl(a){a=a|0;var b=0;b=((c[a>>2]|0)*214013|0)+2531011|0;c[a>>2]=b;return b>>>16&32767|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;h=k;i=a+8|0;j=a+4|0;e=c[j>>2]|0;g=e;do if((c[i>>2]|0)-e>>2>>>0>>0){e=(e-(c[a>>2]|0)>>2)+b|0;f=ll(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;l=(c[i>>2]|0)-g|0;i=l>>1;ml(h,l>>2>>>0>>1>>>0?(i>>>0>>0?e:i):f,(c[j>>2]|0)-g>>2,a+8|0);Dl(h,b,d);nl(a,h);ol(h);break}}else{e=b;f=g;while(1){c[f>>2]=c[d>>2];e=e+-1|0;if(!e)break;else f=f+4|0}c[j>>2]=g+(b<<2)}while(0);zb=k;return}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+8|0;e=c[f>>2]|0;a=b;g=e;while(1){c[g>>2]=c[d>>2];a=a+-1|0;if(!a)break;else g=g+4|0}c[f>>2]=e+(b<<2);return}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ll(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;ml(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);Gl(f,b);nl(a,f);ol(f);break}}else Fl(a,b);while(0);zb=i;return}function Fl(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Gl(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Hl(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Il(a,b){a=a|0;b=b|0;aP(a|0,0,b|0)|0;return}function Jl(a,b){a=a|0;b=b|0;var d=0;if((ll(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Kl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;Vk(a+12|0,b);return}function Ll(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ml(a){a=a|0;return a+60|0}function Nl(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Ol(a,b);Pl(a,b)}return}function Ol(a,b){a=a|0;b=b|0;var d=0;if((ug(a)|0)>>>0>>0)EO(a);if(b>>>0>214748364){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*20|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*20|0);return}}function Pl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ql(b){b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;return}function Rl(a,b){a=a|0;b=b|0;return}function Sl(a){a=a|0;Tl(a+36|0);Ul(a+8|0);return}function Tl(a){a=a|0;var b=0;Vl(a+84|0);Xj(a+72|0);Wl(a+12|0);b=a+8|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Qk(a);SA(a)}return}function Ul(a){a=a|0;Nf(a+16|0);Mf(a+4|0);return}function Vl(a){a=a|0;Xl(a);return}function Wl(a){a=a|0;Xj(a+48|0);Xj(a+36|0);Xj(a+24|0);Xj(a+12|0);return}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-8|0;Yl(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Yl(a){a=a|0;return}function Zl(a){a=a|0;ZN(a);SA(a);return}function _l(a){a=a|0;a=c[a+12>>2]|0;if(a|0){Sl(a);SA(a)}return}function $l(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==30447?a+12|0:0)|0}function am(a){a=a|0;Pf(a,16);return}function bm(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function cm(a){a=a|0;var b=0,d=0;c[a>>2]=1234;c[a+4>>2]=0;c[a+8>>2]=0;b=a+12|0;dm(b,a);d=a+72|0;c[a+100>>2]=0;c[a+104>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[a+108>>2]=16;Kl(b,8);Ll(b,1);return}function dm(a,b){a=a|0;b=b|0;c[a>>2]=b;a=a+4|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function em(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+32|0;m=l+24|0;j=l+12|0;k=l+16|0;n=l+8|0;i=l;c[j>>2]=h;h=tB(148)|0;tk(h);c[n>>2]=0;c[m>>2]=c[n>>2];uk(k,h,m);vk(c[k>>2]|0,f);wk(c[k>>2]|0,g);fm(zk(c[k>>2]|0)|0,96);g=gm(zk(c[k>>2]|0)|0)|0;f=b+4|0;hm(g,((c[f>>2]|0)-(c[b>>2]|0)|0)/20|0);g=gm(zk(c[k>>2]|0)|0)|0;if((g|0)!=(b|0))im(g,c[b>>2]|0,c[f>>2]|0);g=Kk(zk(c[k>>2]|0)|0)|0;f=d+4|0;jm(g,(c[f>>2]|0)-(c[d>>2]|0)|0);g=Kk(zk(c[k>>2]|0)|0)|0;if((g|0)!=(d|0))km(g,c[d>>2]|0,c[f>>2]|0);Bk(c[k>>2]|0);f=c[c[a>>2]>>2]|0;c[i>>2]=c[k>>2];g=c[k+4>>2]|0;c[i+4>>2]=g;if(g|0){n=g+4|0;c[n>>2]=(c[n>>2]|0)+1}lm(f,i,c[j>>2]|0);Rj(i);f=mm((c[a>>2]|0)+4|0,j)|0;if((f|0)!=(e|0))nm(f,c[e>>2]|0,c[e+4>>2]|0);Rj(k);zb=l;return}function fm(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gm(a){a=a|0;return a+16|0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/20|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*20|0)|0;while(1){if((d|0)==(a|0))break;f=d+-20|0;Of(f);d=f}c[g>>2]=a}}else Cm(a,b-e|0);return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b;l=(d-e|0)/20|0;f=a+8|0;i=c[a>>2]|0;g=i;do if(l>>>0>(((c[f>>2]|0)-i|0)/20|0)>>>0){Bm(a);e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=((c[f>>2]|0)-(c[a>>2]|0)|0)/20|0;k=j<<1;Ol(a,j>>>0>>1>>>0?(k>>>0>>0?l:k):e);Am(a,b,d,l);break}}else{k=a+4|0;j=((c[k>>2]|0)-i|0)/20|0;h=l>>>0>j>>>0;j=h?b+(j*20|0)|0:d;e=j-e|0;if(e|0)$O(i|0,b|0,e|0)|0;f=g+(((e|0)/20|0)*20|0)|0;if(h){Am(a,j,d,l-(((c[k>>2]|0)-(c[a>>2]|0)|0)/20|0)|0);break}e=c[k>>2]|0;while(1){if((e|0)==(f|0))break;l=e+-20|0;Of(l);e=l}c[k>>2]=f}while(0);return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+b}else xm(a,b-e|0);return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b;k=d-i|0;f=a+8|0;e=c[a>>2]|0;j=e;do if(k>>>0>((c[f>>2]|0)-e|0)>>>0){vm(a);e=mg(a)|0;if(e>>>0>>0)EO(a);else{i=(c[f>>2]|0)-(c[a>>2]|0)|0;j=i<<1;wm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);um(a,b,d,k);break}}else{h=a+4|0;g=(c[h>>2]|0)-e|0;f=k>>>0>g>>>0;g=f?b+g|0:d;e=g-i|0;if(e|0)$O(j|0,b|0,e|0)|0;if(f){um(a,g,d,k-(c[h>>2]|0)+(c[a>>2]|0)|0);break}else{c[h>>2]=j+e;break}}while(0);return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+4|0;e=i;c[e>>2]=d;a=a+72|0;if(ok(a,e)|0){i=O(16)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;gO(h,29085,Yf(29085)|0);mj(i,h);Q(i|0,13208,5)}f=Ck(a,e)|0;g=c[b>>2]|0;c[h>>2]=g;e=h+4|0;a=c[b+4>>2]|0;c[e>>2]=a;if(!a){d=e;a=0}else{d=a+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;a=c[e>>2]|0}c[h>>2]=c[f>>2];c[f>>2]=g;b=f+4|0;c[d>>2]=c[b>>2];c[b>>2]=a;Rj(h);zb=i;return}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){rm(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;sm(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b;k=(d-e|0)/12|0;f=a+8|0;j=c[a>>2]|0;i=j;do if(k>>>0>(((c[f>>2]|0)-j|0)/12|0)>>>0){pm(a);e=qg(a)|0;if(e>>>0>>0)EO(a);else{i=((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0;j=i<<1;qm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);om(a,b,d,k);break}}else{f=a+4|0;h=((c[f>>2]|0)-j|0)/12|0;g=k>>>0>h>>>0;h=g?b+(h*12|0)|0:d;e=h-e|0;if(e|0)$O(j|0,b|0,e|0)|0;if(g){om(a,h,d,k-(((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0)|0);break}else{c[f>>2]=i+(((e|0)/12|0)*12|0);break}}while(0);return}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(((a>>>0)/12|0)*12|0)}return}function pm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function qm(a,b){a=a|0;b=b|0;var d=0;if((qg(a)|0)>>>0>>0)EO(a);if(b>>>0>357913941){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*12|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*12|0);return}}function rm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function sm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)tm(a,b)}}else tm(a,b);return}function tm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a}return}function vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function wm(a,b){a=a|0;b=b|0;var d=0;if((mg(a)|0)>>>0>>0)EO(a);else{d=tB(b)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+b;return}}function xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if(((c[g>>2]|0)-d|0)>>>0>>0){d=d-(c[a>>2]|0)+b|0;e=mg(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k<<1;ng(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j|0,a+8|0);zm(f,b);og(a,f);pg(f);break}}else ym(a,b);while(0);zb=i;return}function ym(b,d){b=b|0;d=d|0;var e=0;e=b+4|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function zm(b,d){b=b|0;d=d|0;var e=0;e=b+8|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Am(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=a+4|0;while(1){if((b|0)==(d|0))break;e=c[a>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[a>>2]=(c[a>>2]|0)+20;b=b+20|0}return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;d=c[a>>2]|0;f=a+8|0;Pf(d,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/20|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/20|0)+b|0;e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/20|0;g=k<<1;vg(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/20|0,a+8|0);Dm(f,b);wg(a,f);xg(f);break}}else Pl(a,b);while(0);zb=i;return}function Dm(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Em(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+32|0;g=f;kq(g,b,1,d,e,d,1);e=Fm(c[c[a>>2]>>2]|0,g)|0;rq(g);zb=f;return e|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=zb;zb=zb+32|0;d=f;e=a+92|0;g=pk(e)|0;if(!(((c[g+4>>2]|0)!=(c[g>>2]|0)?(g=pk(e)|0,g=Ng(c[g>>2]|0)|0,(g|0)==(Ng(b)|0)):0)?(g=pk(e)|0,g=Og(c[g>>2]|0)|0,(g|0)==(Og(b)|0)):0)){g=Ng(b)|0;g=qk(g,Og(b)|0,8)|0;h=Ng(b)|0;$i(e,h,Og(b)|0,g)}Bq(d,29103);if(Sh(d)|0)ij(e,b);Cq(d);h=Gm(a,e)|0;zb=f;return h|0}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+64|0;e=k+16|0;j=k;g=k+56|0;h=k+48|0;i=b+160|0;l=rk(i)|0;f=Ah(d)|0;if(!((l|0)==(Ng(c[f>>2]|0)|0)?(f=sk(i)|0,l=Ah(d)|0,(f|0)==(Og(c[l>>2]|0)|0)):0))zh(i,d);f=b+64|0;m=tB(148)|0;tk(m);c[h>>2]=0;c[e>>2]=c[h>>2];uk(g,m,e);m=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=m;m=g+4|0;l=b+68|0;h=c[m>>2]|0;c[m>>2]=c[l>>2];c[l>>2]=h;Rj(g);l=c[f>>2]|0;h=Ah(d)|0;vk(l,Ng(c[h>>2]|0)|0);h=c[f>>2]|0;l=Ah(d)|0;wk(h,Og(c[l>>2]|0)|0);Bq(e,29117);if(Sh(e)|0)xk(c[f>>2]|0,d,i,b+316|0);Cq(e);m=yk()|0;Zp(e);i=(a[e+11>>0]|0)<0?c[e>>2]|0:e;l=Ak(zk(c[f>>2]|0)|0)|0;c[j>>2]=35129;c[j+4>>2]=i;c[j+8>>2]=30646;c[j+12>>2]=l;uq(m,8,30602,j);jO(e);m=Hm(b,c[f>>2]|0)|0;zb=k;return m|0}function Hm(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=zb;zb=zb+144|0;s=D+104|0;w=D;x=D+72|0;y=D+40|0;z=b+12|0;A=b+16|0;c[A>>2]=c[z>>2];B=b+24|0;c[B>>2]=-1;k=Jm(Im(d)|0)|0;l=b+8|0;m=b+636|0;n=b+652|0;o=s+4|0;p=s+8|0;q=b+788|0;r=x+4|0;t=x+8|0;u=b+4|0;v=b+28|0;e=b+80|0;while(1){e=c[e>>2]|0;if(!e)break;Bq(s,30936);do if(Sh(s)|0){E=(a[l>>0]|0)==0;g=Im(d)|0;j=e;h=j+12|0;i=zk(c[h>>2]|0)|0;if(E){E=Mm(m,g,i)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}else{E=Lm(m,g,i,Km(c[h>>2]|0)|0)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}Cq(s)}else{j=e;h=j+12|0;C=9}while(0);do if((C|0)==9){C=0;Cq(s);i=gm(zk(c[h>>2]|0)|0)|0;Bq(s,30953);if(Sh(s)|0){G=Nm(m)|0;F=Om(d)|0;E=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,G,F,E,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(s);break}}else g=-1;Cq(s);c[s>>2]=0;c[o>>2]=0;c[p>>2]=0;Bq(w,30970);if(Sh(w)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(w);Bq(x,30993);if(Sh(x)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0)Cq(x);else{Cq(x);c[x>>2]=0;c[r>>2]=0;c[t>>2]=0;Bq(y,31017);if(Sh(y)|0?(Tm(x,w,k,i,s,+f[u>>2]),(c[r>>2]|0)-(c[x>>2]|0)>>3>>>0<(c[b>>2]|0)>>>0):0)Cq(y);else C=20;do if((C|0)==20){C=0;Cq(y);Bq(y,31034);if(Sh(y)|0?(G=Im(d)|0,G=Um(m,G,zk(c[h>>2]|0)|0,w,10.0)|0,G>>>0<(c[b>>2]|0)>>>0):0){Cq(y);break}Cq(y);Bq(y,31051);if(Sh(y)|0){E=Nm(m)|0;F=Om(d)|0;G=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,E,F,G,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(y);break}}Cq(y);Bq(y,31068);if(Sh(y)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(y);Bq(y,31091);if(Sh(y)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0){Cq(y);break}Cq(y);c[r>>2]=c[x>>2];Bq(y,31115);if(Sh(y)|0)Tm(x,w,k,i,s,+f[u>>2]);Cq(y);G=(c[r>>2]|0)-(c[x>>2]|0)>>3;if(G>>>0>=(c[b>>2]|0)>>>0?G>>>0>(c[A>>2]|0)-(c[z>>2]|0)>>3>>>0:0){Vm(v,w);Wm(z,x);c[B>>2]=c[j+8>>2]}}while(0);Sj(x)}Sj(s)}while(0)}zb=D;return (c[B>>2]|0)>-1|0}function Im(a){a=a|0;return a+8|0}function Jm(a){a=a|0;return a+16|0}function Km(a){a=a|0;return a+36|0} +function Wu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=v+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){u=c[e>>2]|0;c[u+20>>2]=25;Sb[c[u>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[v+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[v+24+(g<<2)>>2]=0;c[v+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[v+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}u=v+20|0;if((c[u>>2]|0)==-1)return 1;p=c[e+432>>2]|0;q=e+368|0;if((c[q>>2]|0)<=0)return 1;r=e+436|0;s=v+188|0;o=0;a:while(1){t=c[f+(o<<2)>>2]|0;l=c[e+372+(o<<2)>>2]|0;n=c[e+344+(l<<2)>>2]|0;j=c[n+20>>2]|0;h=v+60+(j<<2)|0;k=v+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[v+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768){r=26;break a}h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=v+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[t>>1]=g;b:do if(c[r>>2]|0){m=c[n+24>>2]|0;l=v+124+(m<<2)|0;m=e+264+m|0;g=0;while(1){h=(c[l>>2]|0)+(g*3|0)|0;if(Xu(e,h)|0)break b;j=g+1|0;if(!(Xu(e,h+1|0)|0)){i=h;g=j;while(1){if((g|0)>=(c[r>>2]|0)){r=42;break a}h=i+3|0;j=g+1|0;if(!(Xu(e,i+4|0)|0)){i=h;g=j}else break}}k=Xu(e,s)|0;h=h+2|0;i=Xu(e,h)|0;if(i){if(Xu(e,h)|0){i=i<<1;h=(c[l>>2]|0)+((g|0)<(d[m>>0]|0|0)?189:217)|0;if(!(Xu(e,h)|0))g=i;else{g=i;do{g=g<<1;if((g|0)==32768){r=49;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}}else g=i;i=h+14|0;h=g>>1;if(h)do{n=(Xu(e,i)|0)==0;g=(n?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[t+(c[p+(j<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535;if((j|0)<(c[r>>2]|0))g=j;else break}}while(0);o=o+1|0;if((o|0)>=(c[q>>2]|0)){r=56;break}}if((r|0)==26){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==42){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==49){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==56)return 1;return 0}function Xu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b+468>>2]|0;m=g+16|0;f=c[m>>2]|0;k=g+20|0;if((f|0)<32768){h=b+440|0;j=b+24|0;i=g+12|0;f=c[k>>2]|0;while(1){g=f+-1|0;c[k>>2]=g;if((f|0)<1){if(!(c[h>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;l=a[l>>0]|0;f=l&255;a:do if(l<<24>>24==-1){b:while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;f=a[l>>0]|0;switch(f<<24>>24){case 0:{f=255;break a}case -1:break;default:break b}}c[h>>2]=f&255;f=0}while(0);g=c[k>>2]|0}else f=0;c[i>>2]=c[i>>2]<<8|f;f=g+8|0;c[k>>2]=f;if((g|0)<-8){f=g+9|0;c[k>>2]=f;if(!f){c[m>>2]=32768;g=0}else g=f}else g=f}f=c[m>>2]<<1;c[m>>2]=f;if((f|0)<32768)f=g;else break}}else{i=g+12|0;g=c[k>>2]|0}j=d[e>>0]|0;b=c[3360+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;h=f-l|0;c[m>>2]=h;f=h<>2]|0;if((g|0)>=(f|0)){c[i>>2]=g-f;c[m>>2]=l;f=j&128;if((h|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((h|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((h|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function Yu(a){a=a|0;var d=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;n=c[a+472>>2]|0;o=a+36|0;if((c[o>>2]|0)<=0)return;r=a+72|0;l=0;m=c[a+216>>2]|0;i=0;j=0;while(1){d=c[m+36>>2]|0;h=m+40|0;a:do switch((d<<8)+(c[h>>2]|0)|0){case 257:{d=0;k=13;break}case 514:{d=0;k=14;break}case 771:{d=0;k=15;break}case 1028:{d=0;k=16;break}case 1285:{d=0;k=17;break}case 1542:{d=0;k=18;break}case 1799:{d=0;k=19;break}case 2313:{d=0;k=20;break}case 2570:{d=0;k=21;break}case 2827:{d=0;k=22;break}case 3084:{d=0;k=23;break}case 3341:{d=0;k=24;break}case 3598:{d=0;k=25;break}case 3855:{d=0;k=26;break}case 4112:{d=0;k=27;break}case 4104:{d=0;k=28;break}case 3591:{d=0;k=29;break}case 3078:{d=0;k=30;break}case 2565:{d=0;k=31;break}case 2052:{d=0;k=32;break}case 1539:{d=0;k=33;break}case 1026:{d=0;k=34;break}case 513:{d=0;k=35;break}case 2064:{d=0;k=36;break}case 1806:{d=0;k=37;break}case 1548:{d=0;k=38;break}case 1290:{d=0;k=39;break}case 1032:{d=0;k=40;break}case 774:{d=0;k=41;break}case 516:{d=0;k=42;break}case 258:{d=0;k=43;break}case 2056:{d=c[r>>2]|0;switch(d|0){case 0:{k=44;break a}case 1:{k=45;break a}case 2:{k=46;break a}default:{d=c[a>>2]|0;c[d+20>>2]=49;Sb[c[d>>2]&255](a);d=i;k=j;break a}}}default:{k=c[a>>2]|0;c[k+20>>2]=7;c[k+24>>2]=d;c[(c[a>>2]|0)+28>>2]=c[h>>2];Sb[c[c[a>>2]>>2]&255](a);d=i;k=j}}while(0);c[n+4+(l<<2)>>2]=k;b:do if((c[m+52>>2]|0?(p=n+44+(l<<2)|0,(c[p>>2]|0)!=(d|0)):0)?(q=c[m+80>>2]|0,q|0):0){c[p>>2]=d;switch(d|0){case 0:{i=c[m+84>>2]|0;h=0;do{c[i+(h<<2)>>2]=e[q+(h<<1)>>1];h=h+1|0}while((h|0)!=64);break}case 1:{i=c[m+84>>2]|0;h=0;do{j=(B(b[5248+(h<<1)>>1]|0,e[q+(h<<1)>>1]|0)|0)+2048>>12;c[i+(h<<2)>>2]=j;h=h+1|0}while((h|0)!=64);break}case 2:{j=c[m+84>>2]|0;h=0;i=0;while(1){t=+g[5376+(h<<3)>>3];f[j+(i<<2)>>2]=t*+(e[q+(i<<1)>>1]|0)*.125;s=i|1;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.387039845*.125;s=s+1|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.306562965*.125;s=i|3;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.175875602*.125;u=s+1|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.125;u=s+2|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.785694958*.125;s=s+3|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.5411961*.125;s=i|7;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.275899379*.125;h=h+1|0;if((h|0)==8)break;else i=i+8|0}break}default:{u=c[a>>2]|0;c[u+20>>2]=49;Sb[c[u>>2]&255](a);break b}}}while(0);l=l+1|0;if((l|0)>=(c[o>>2]|0))break;else{m=m+88|0;i=d;j=k}}return}function Zu(d,e,g,h,i){d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=zb;zb=zb+256|0;j=q;o=c[d+336>>2]|0;n=j;m=c[e+84>>2]|0;l=8;while(1){e=b[g+16>>1]|0;d=b[g+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[g+48>>1]|0)==0?(b[g+64>>1]|0)==0:0)?(b[g+80>>1]|0)==0:0)?(b[g+96>>1]|0)==0:0)?(b[g+112>>1]|0)==0:0){k=+f[m>>2]*+(b[g>>1]|0);f[n>>2]=k;f[n+32>>2]=k;f[n+64>>2]=k;f[n+96>>2]=k;f[n+128>>2]=k;f[n+160>>2]=k;f[n+192>>2]=k;d=56}else{d=0;p=9}else p=9;if((p|0)==9){p=0;r=+f[m>>2]*+(b[g>>1]|0);x=+f[m+64>>2]*+(d<<16>>16);w=+f[m+128>>2]*+(b[g+64>>1]|0);t=+f[m+192>>2]*+(b[g+96>>1]|0);v=r+w;w=r-w;r=x+t;t=(x-t)*1.4142135381698608-r;x=v+r;r=v-r;v=w+t;t=w-t;w=+f[m+32>>2]*+(e<<16>>16);u=+f[m+96>>2]*+(b[g+48>>1]|0);z=+f[m+160>>2]*+(b[g+80>>1]|0);k=+f[m+224>>2]*+(b[g+112>>1]|0);s=u+z;u=z-u;z=w+k;k=w-k;w=s+z;y=(u+k)*1.8477590084075928;u=y-u*2.613126039505005-w;s=(z-s)*1.4142135381698608-u;k=y-k*1.0823922157287598-s;f[n>>2]=x+w;f[n+224>>2]=x-w;f[n+32>>2]=v+u;f[n+192>>2]=v-u;f[n+64>>2]=t+s;f[n+160>>2]=t-s;f[n+96>>2]=r+k;k=r-k;d=32}f[n+(d<<2)>>2]=k;if(l>>>0>1){n=n+4|0;m=m+4|0;g=g+2|0;l=l+-1|0}else break}e=o+-384|0;d=0;while(1){p=(c[h+(d<<2)>>2]|0)+i|0;s=+f[j>>2]+512.5;t=+f[j+16>>2];u=s+t;t=s-t;s=+f[j+8>>2];w=+f[j+24>>2];y=s+w;w=(s-w)*1.4142135381698608-y;s=u+y;y=u-y;u=t+w;w=t-w;t=+f[j+20>>2];v=+f[j+12>>2];x=t+v;v=t-v;t=+f[j+4>>2];z=+f[j+28>>2];k=t+z;z=t-z;t=x+k;r=(v+z)*1.8477590084075928;v=r-v*2.613126039505005-t;x=(k-x)*1.4142135381698608-v;z=r-z*1.0823922157287598-x;a[p>>0]=a[e+(~~(s+t)&1023)>>0]|0;a[p+7>>0]=a[e+(~~(s-t)&1023)>>0]|0;a[p+1>>0]=a[e+(~~(u+v)&1023)>>0]|0;a[p+6>>0]=a[e+(~~(u-v)&1023)>>0]|0;a[p+2>>0]=a[e+(~~(w+x)&1023)>>0]|0;a[p+5>>0]=a[e+(~~(w-x)&1023)>>0]|0;a[p+3>>0]=a[e+(~~(y+z)&1023)>>0]|0;a[p+4>>0]=a[e+(~~(y-z)&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else j=j+32|0}zb=q;return}function _u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(c[j>>2]|0,b[f>>1]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;p=B(c[j>>2]|0,b[f>>1]|0)|0;u=B(c[j+64>>2]|0,d<<16>>16)|0;t=B(c[j+128>>2]|0,b[f+64>>1]|0)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;s=t+p|0;t=p-t|0;p=q+u|0;q=((u-q|0)*362>>8)-p|0;u=p+s|0;p=s-p|0;s=q+t|0;q=t-q|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;w=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;e=w+r|0;r=w-r|0;w=d+t|0;d=t-d|0;t=w+e|0;v=(d+r|0)*473>>8;r=v-(r*669>>8)-t|0;e=((w-e|0)*362>>8)-r|0;d=v-(d*277>>8)-e|0;c[k>>2]=t+u;c[k+224>>2]=u-t;c[k+32>>2]=r+s;c[k+192>>2]=s-r;c[k+64>>2]=e+q;c[k+160>>2]=q-e;c[k+96>>2]=d+p;d=p-d|0;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){w=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=w;aP(f+1|0,w|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;w=c[e+16>>2]|0;r=w+i|0;w=i-w|0;t=c[e+24>>2]|0;v=t+d|0;t=((d-t|0)*362>>8)-v|0;p=v+r|0;v=r-v|0;r=t+w|0;t=w-t|0;w=c[e+20>>2]|0;s=c[e+12>>2]|0;u=s+w|0;s=w-s|0;w=c[e+28>>2]|0;i=w+j|0;w=j-w|0;q=i+u|0;m=(w+s|0)*473>>8;s=m-(s*669>>8)-q|0;u=((i-u|0)*362>>8)-s|0;w=m-(w*277>>8)-u|0;a[f>>0]=a[l+((q+p|0)>>>5&1023)>>0]|0;a[f+7>>0]=a[l+((p-q|0)>>>5&1023)>>0]|0;a[f+1>>0]=a[l+((s+r|0)>>>5&1023)>>0]|0;a[f+6>>0]=a[l+((r-s|0)>>>5&1023)>>0]|0;a[f+2>>0]=a[l+((u+t|0)>>>5&1023)>>0]|0;a[f+5>>0]=a[l+((t-u|0)>>>5&1023)>>0]|0;a[f+3>>0]=a[l+((w+v|0)>>>5&1023)>>0]|0;a[f+4>>0]=a[l+((v-w|0)>>>5&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function $u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;f=B(c[i+32>>2]|0,b[f+16>>1]|0)|0;a[(c[g>>2]|0)+h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+32|0;j=i;d=c[d+336>>2]|0;k=c[e+84>>2]|0;n=B(c[k>>2]|0,b[f>>1]|0)|0;q=B(c[k+64>>2]|0,b[f+32>>1]|0)|0;e=q+n<<13;q=n-q<<13;n=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;l=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;p=(l+n|0)*4433|0;n=p+(n*6270|0)|0;l=p+(B(l,-15137)|0)|0;p=n+e|0;c[j>>2]=p;c[j+24>>2]=e-n;n=l+q|0;c[j+8>>2]=n;l=q-l|0;c[j+16>>2]=l;q=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[k+68>>2]|0,b[f+34>>1]|0)|0;m=e+q<<13;e=q-e<<13;q=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;k=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;o=(k+q|0)*4433|0;f=o+(q*6270|0)|0;k=o+(B(k,-15137)|0)|0;o=f+m|0;c[j+4>>2]=o;f=m-f|0;c[j+28>>2]=f;m=k+e|0;c[j+12>>2]=m;k=e-k|0;c[j+20>>2]=k;e=d+-384|0;d=(c[g>>2]|0)+h|0;p=p+33587200|0;a[d>>0]=a[e+((p+o|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;n=n+33587200|0;a[d>>0]=a[e+((n+m|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=l+33587200|0;a[d>>0]=a[e+((l+k|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((l-k|0)>>>16&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;g=(c[j+24>>2]|0)+33587200|0;a[h>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g-f|0)>>>16&1023)>>0]|0;zb=i;return}function bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=zb;zb=zb+80|0;j=i;m=c[d+336>>2]|0;k=c[e+84>>2]|0;t=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;q=B((b[f+64>>1]|0)*5793|0,c[k+128>>2]|0)|0;r=q+t|0;t=(B(q,-2)|0)+t>>11;q=B((b[f+32>>1]|0)*10033|0,c[k+64>>2]|0)|0;l=q+r|0;q=r-q|0;r=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;s=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;e=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;n=(e+r|0)*2998|0;d=n+(s+r<<13)|0;n=n+(e-s<<13)|0;e=r-s-e<<2;c[j>>2]=d+l>>11;c[j+60>>2]=l-d>>11;d=j+12|0;c[d>>2]=e+t;c[j+48>>2]=t-e;c[j+24>>2]=n+q>>11;c[j+36>>2]=q-n>>11;n=j+4|0;q=B(b[f+2>>1]<<13,c[k+4>>2]|0)|0|1024;e=B((b[f+66>>1]|0)*5793|0,c[k+132>>2]|0)|0;t=e+q|0;q=(B(e,-2)|0)+q>>11;e=B((b[f+34>>1]|0)*10033|0,c[k+68>>2]|0)|0;l=e+t|0;e=t-e|0;t=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;s=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;r=B(c[k+164>>2]|0,b[f+82>>1]|0)|0;o=(r+t|0)*2998|0;p=o+(s+t<<13)|0;o=o+(r-s<<13)|0;r=t-s-r<<2;c[n>>2]=p+l>>11;c[j+64>>2]=l-p>>11;c[j+16>>2]=r+q;c[j+52>>2]=q-r;c[j+28>>2]=o+e>>11;c[j+40>>2]=e-o>>11;o=B(b[f+4>>1]<<13,c[k+8>>2]|0)|0|1024;e=B((b[f+68>>1]|0)*5793|0,c[k+136>>2]|0)|0;r=e+o|0;o=(B(e,-2)|0)+o>>11;e=B((b[f+36>>1]|0)*10033|0,c[k+72>>2]|0)|0;q=e+r|0;e=r-e|0;r=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;p=B(c[k+104>>2]|0,b[f+52>>1]|0)|0;k=B(c[k+168>>2]|0,b[f+84>>1]|0)|0;f=(k+r|0)*2998|0;l=f+(p+r<<13)|0;f=f+(k-p<<13)|0;k=r-p-k<<2;p=l+q>>11;c[j+8>>2]=p;c[j+68>>2]=q-l>>11;l=k+o|0;c[j+20>>2]=l;c[j+56>>2]=o-k;k=f+e>>11;c[j+32>>2]=k;c[j+44>>2]=e-f>>11;f=m+-384|0;e=(c[g>>2]|0)+h|0;m=(c[j>>2]<<13)+134348800|0;o=m+(p*5793|0)|0;m=(B(p,-11586)|0)+m|0;n=(c[n>>2]|0)*10033|0;a[e>>0]=a[f+((o+n|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(m>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;d=(c[d>>2]<<13)+134348800|0;m=d+(l*5793|0)|0;d=(B(l,-11586)|0)+d|0;l=(c[j+16>>2]|0)*10033|0;a[e>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;d=(c[j+24>>2]<<13)+134348800|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+28>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;d=(c[j+36>>2]<<13)+134348800|0;k=c[j+44>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+40>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+16>>2]|0)+h|0;d=(c[j+48>>2]<<13)+134348800|0;k=c[j+56>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+52>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;h=(c[g+20>>2]|0)+h|0;g=(c[j+60>>2]<<13)+134348800|0;e=c[j+68>>2]|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+64>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+128|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=4;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+16>>2]=d;c[k+32>>2]=d;c[k+48>>2]=d;c[k+64>>2]=d;c[k+80>>2]=d;c[k+96>>2]=d;e=28}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+112>>2]=u-t>>11;c[k+16>>2]=r+s>>11;c[k+96>>2]=s-r>>11;c[k+32>>2]=e+q>>11;c[k+80>>2]=q-e>>11;c[k+48>>2]=d+p>>11;d=p-d>>11;e=16}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}u=l+-384|0;x=(c[g>>2]|0)+h|0;s=(c[m>>2]|0)+16400|0;v=c[m+8>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+4>>2]|0;t=c[m+12>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+4>>2]|0)+h|0;t=(c[m+16>>2]|0)+16400|0;v=c[m+24>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+20>>2]|0;w=c[m+28>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+8>>2]|0)+h|0;w=(c[m+32>>2]|0)+16400|0;v=c[m+40>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+36>>2]|0;s=c[m+44>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+12>>2]|0)+h|0;s=(c[m+48>>2]|0)+16400|0;v=c[m+56>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+52>>2]|0;t=c[m+60>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+16>>2]|0)+h|0;t=(c[m+64>>2]|0)+16400|0;v=c[m+72>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+68>>2]|0;w=c[m+76>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+20>>2]|0)+h|0;w=(c[m+80>>2]|0)+16400|0;v=c[m+88>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+84>>2]|0;s=c[m+92>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+24>>2]|0)+h|0;s=(c[m+96>>2]|0)+16400|0;v=c[m+104>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+100>>2]|0;t=c[m+108>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+28>>2]|0)+h|0;t=(c[m+112>>2]|0)+16400|0;v=c[m+120>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+116>>2]|0;w=c[m+124>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;zb=o;return}function dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+180>>2]=v-u>>11;c[k+20>>2]=s+t>>11;c[k+160>>2]=t-s>>11;c[k+40>>2]=q+r;c[k+140>>2]=r-q;c[k+60>>2]=o+p>>11;c[k+120>>2]=p-o>>11;c[k+80>>2]=f+n>>11;c[k+100>>2]=n-f>>11;e=e+1|0;if((e|0)==5)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;v=c[i+16>>2]|0;w=(v+x|0)*6476|0;v=x-v|0;x=(v*2896|0)+y|0;u=x+w|0;w=x-w|0;y=(B(v,-11584)|0)+y|0;v=c[i+4>>2]|0;x=c[i+12>>2]|0;t=(x+v|0)*6810|0;v=t+(v*4209|0)|0;x=t+(B(x,-17828)|0)|0;a[z>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+(y>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+20|0}zb=m;return}function ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+264>>2]=x-w>>11;c[k+24>>2]=u+v>>11;c[k+240>>2]=v-u>>11;c[k+48>>2]=s+t>>11;c[k+216>>2]=t-s>>11;c[k+72>>2]=q+r>>11;c[k+192>>2]=r-q>>11;c[k+96>>2]=o+p>>11;c[k+168>>2]=p-o>>11;c[k+120>>2]=f+n>>11;c[k+144>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*5793|0;t=z+x|0;x=z-x-x|0;z=(c[i+8>>2]|0)*10033|0;v=t+z|0;z=t-z|0;t=c[i+4>>2]|0;u=c[i+12>>2]|0;y=c[i+20>>2]|0;A=(y+t|0)*2998|0;w=A+(u+t<<13)|0;A=A+(y-u<<13)|0;y=t-u-y<<13;a[C>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+24|0}zb=m;return}function fv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+400|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+364>>2]=z-y>>11;c[k+28>>2]=w+x>>11;c[k+336>>2]=x-w>>11;c[k+56>>2]=u+v>>11;c[k+308>>2]=v-u>>11;c[k+84>>2]=s+t;c[k+280>>2]=t-s;c[k+112>>2]=q+r>>11;c[k+252>>2]=r-q>>11;c[k+140>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+168>>2]=f+n>>11;c[k+196>>2]=n-f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;t=c[i+8>>2]|0;C=c[i+16>>2]|0;v=c[i+24>>2]|0;u=(C-v|0)*7223|0;A=(t-C|0)*2578|0;x=(B(C,-15083)|0)+E+A+u|0;D=v+t|0;z=(D*10438|0)+E|0;v=u+(B(v,-637)|0)+z|0;z=A+(B(t,-20239)|0)+z|0;t=c[i+4>>2]|0;A=c[i+12>>2]|0;u=c[i+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=B(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[F>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((((C-D|0)*11585|0)+E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+28|0}zb=m;return}function gv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;H=(c[i>>2]|0)+16400|0;I=c[i+16>>2]|0;D=H+I<<13;I=H-I<<13;H=c[i+8>>2]|0;F=c[i+24>>2]|0;A=(F+H|0)*4433|0;H=A+(H*6270|0)|0;F=A+(B(F,-15137)|0)|0;A=H+D|0;H=D-H|0;D=F+I|0;F=I-F|0;I=c[i+28>>2]|0;x=c[i+20>>2]|0;z=c[i+12>>2]|0;C=c[i+4>>2]|0;E=z+I|0;G=C+x|0;y=(G+E|0)*9633|0;E=y+(B(E,-16069)|0)|0;G=y+(B(G,-3196)|0)|0;y=B(C+I|0,-7373)|0;I=y+(I*2446|0)+E|0;C=y+(C*12299|0)+G|0;y=B(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;E=y+(z*25172|0)+E|0;a[J>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function hv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;h=(c[g>>2]|0)+h|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;g=B(c[i+4>>2]|0,b[f+2>>1]|0)|0;a[h>>0]=a[d+((g+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-g|0)>>>3&1023)>>0]|0;return}function iv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+32|0;r=i;p=c[d+336>>2]|0;k=c[e+84>>2]|0;d=B(c[k>>2]|0,b[f>>1]|0)|0;e=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;q=e+d|0;c[r>>2]=q;j=r+16|0;c[j>>2]=d-e;e=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;d=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;o=d+e|0;c[r+4>>2]=o;d=e-d|0;c[r+20>>2]=d;e=B(c[k+8>>2]|0,b[f+4>>1]|0)|0;l=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;n=l+e|0;c[r+8>>2]=n;l=e-l|0;c[r+24>>2]=l;e=B(c[k+12>>2]|0,b[f+6>>1]|0)|0;k=B(c[k+44>>2]|0,b[f+22>>1]|0)|0;m=k+e|0;c[r+12>>2]=m;k=e-k|0;c[r+28>>2]=k;e=p+-384|0;f=(c[g>>2]|0)+h|0;q=q+4100|0;p=q+n<<13;n=q-n<<13;q=(m+o|0)*4433|0;o=q+(o*6270|0)|0;m=q+(B(m,-15137)|0)|0;a[f>>0]=a[e+((o+p|0)>>>16&1023)>>0]|0;a[f+3>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;a[f+1>>0]=a[e+((m+n|0)>>>16&1023)>>0]|0;a[f+2>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;f=(c[j>>2]|0)+4100|0;j=f+l<<13;f=f-l<<13;g=(k+d|0)*4433|0;d=g+(d*6270|0)|0;g=g+(B(k,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>16&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>16&1023)>>0]|0;zb=i;return}function jv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=zb;zb=zb+80|0;k=i;q=c[d+336>>2]|0;e=c[e+84>>2]|0;s=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;n=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;l=n+s|0;s=(B(n,-2)|0)+s|0;n=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;c[k>>2]=n+l>>11;c[k+48>>2]=l-n>>11;n=k+24|0;c[n>>2]=s>>11;s=k+4|0;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;r=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;c[s>>2]=r+p>>11;c[k+52>>2]=p-r>>11;c[k+28>>2]=l>>11;l=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;r=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;c[k+8>>2]=r+p>>11;c[k+56>>2]=p-r>>11;c[k+32>>2]=l>>11;l=B(b[f+6>>1]<<13,c[e+12>>2]|0)|0|1024;r=B((b[f+38>>1]|0)*5793|0,c[e+76>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+22>>1]|0)*10033|0,c[e+44>>2]|0)|0;c[k+12>>2]=r+p>>11;c[k+60>>2]=p-r>>11;c[k+36>>2]=l>>11;l=B(b[f+8>>1]<<13,c[e+16>>2]|0)|0|1024;r=B((b[f+40>>1]|0)*5793|0,c[e+80>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+24>>1]|0)*10033|0,c[e+48>>2]|0)|0;c[k+16>>2]=r+p>>11;c[k+64>>2]=p-r>>11;c[k+40>>2]=l>>11;l=B(b[f+10>>1]<<13,c[e+20>>2]|0)|0|1024;r=B((b[f+42>>1]|0)*5793|0,c[e+84>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;e=B((b[f+26>>1]|0)*10033|0,c[e+52>>2]|0)|0;c[k+20>>2]=e+p>>11;c[k+68>>2]=p-e>>11;l=l>>11;c[k+44>>2]=l;e=q+-384|0;f=(c[g>>2]|0)+h|0;q=(c[k>>2]<<13)+134348800|0;p=(c[k+16>>2]|0)*5793|0;r=q+p|0;p=q-p-p|0;q=(c[k+8>>2]|0)*10033|0;d=r+q|0;q=r-q|0;s=c[s>>2]|0;r=c[k+12>>2]|0;o=c[k+20>>2]|0;m=(o+s|0)*2998|0;j=m+(r+s<<13)|0;m=m+(o-r<<13)|0;o=s-r-o<<13;a[f>>0]=a[e+((j+d|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((d-j|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((o+p|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((p-o|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((m+q|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((q-m|0)>>>18&1023)>>0]|0;f=(c[g+4>>2]|0)+h|0;n=(c[n>>2]<<13)+134348800|0;m=(c[k+40>>2]|0)*5793|0;q=n+m|0;m=n-m-m|0;n=(c[k+32>>2]|0)*10033|0;o=q+n|0;n=q-n|0;q=c[k+28>>2]|0;p=c[k+36>>2]|0;j=(l+q|0)*2998|0;d=j+(p+q<<13)|0;j=j+(l-p<<13)|0;l=q-p-l<<13;a[f>>0]=a[e+((d+o|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((o-d|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((j+n|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((n-j|0)>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;f=(c[k+48>>2]<<13)+134348800|0;j=(c[k+64>>2]|0)*5793|0;n=f+j|0;j=f-j-j|0;f=(c[k+56>>2]|0)*10033|0;l=n+f|0;f=n-f|0;n=c[k+52>>2]|0;m=c[k+60>>2]|0;d=c[k+68>>2]|0;g=(d+n|0)*2998|0;k=g+(m+n<<13)|0;g=g+(d-m<<13)|0;d=n-m-d<<13;a[h>>0]=a[e+((k+l|0)>>>18&1023)>>0]|0;a[h+5>>0]=a[e+((l-k|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function kv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=zb;zb=zb+128|0;j=i;d=c[d+336>>2]|0;m=c[e+84>>2]|0;l=B(c[m>>2]|0,b[f>>1]|0)|0;e=B(c[m+64>>2]|0,b[f+32>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+32>>2]|0,b[f+16>>1]|0)|0;k=B(c[m+96>>2]|0,b[f+48>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j>>2]=l+n;c[j+96>>2]=n-l;c[j+32>>2]=k+e;c[j+64>>2]=e-k;k=B(c[m+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[m+68>>2]|0,b[f+34>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+36>>2]|0,b[f+18>>1]|0)|0;n=B(c[m+100>>2]|0,b[f+50>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+4>>2]=k+l;c[j+100>>2]=l-k;c[j+36>>2]=n+e;c[j+68>>2]=e-n;n=B(c[m+8>>2]|0,b[f+4>>1]|0)|0;e=B(c[m+72>>2]|0,b[f+36>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[m+104>>2]|0,b[f+52>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+8>>2]=n+k;c[j+104>>2]=k-n;c[j+40>>2]=l+e;c[j+72>>2]=e-l;l=B(c[m+12>>2]|0,b[f+6>>1]|0)|0;e=B(c[m+76>>2]|0,b[f+38>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+44>>2]|0,b[f+22>>1]|0)|0;k=B(c[m+108>>2]|0,b[f+54>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+12>>2]=l+n;c[j+108>>2]=n-l;c[j+44>>2]=k+e;c[j+76>>2]=e-k;k=B(c[m+16>>2]|0,b[f+8>>1]|0)|0;e=B(c[m+80>>2]|0,b[f+40>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+48>>2]|0,b[f+24>>1]|0)|0;n=B(c[m+112>>2]|0,b[f+56>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+16>>2]=k+l;c[j+112>>2]=l-k;c[j+48>>2]=n+e;c[j+80>>2]=e-n;n=B(c[m+20>>2]|0,b[f+10>>1]|0)|0;e=B(c[m+84>>2]|0,b[f+42>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+52>>2]|0,b[f+26>>1]|0)|0;l=B(c[m+116>>2]|0,b[f+58>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+20>>2]=n+k;c[j+116>>2]=k-n;c[j+52>>2]=l+e;c[j+84>>2]=e-l;l=B(c[m+24>>2]|0,b[f+12>>1]|0)|0;e=B(c[m+88>>2]|0,b[f+44>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+56>>2]|0,b[f+28>>1]|0)|0;k=B(c[m+120>>2]|0,b[f+60>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+24>>2]=l+n;c[j+120>>2]=n-l;c[j+56>>2]=k+e;c[j+88>>2]=e-k;k=B(c[m+28>>2]|0,b[f+14>>1]|0)|0;e=B(c[m+92>>2]|0,b[f+46>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+60>>2]|0,b[f+30>>1]|0)|0;f=B(c[m+124>>2]|0,b[f+62>>1]|0)|0;m=((f+k|0)*4433|0)+1024|0;k=m+(k*6270|0)>>11;f=m+(B(f,-15137)|0)>>11;c[j+28>>2]=k+l;c[j+124>>2]=l-k;c[j+60>>2]=f+e;c[j+92>>2]=e-f;f=d+-384|0;d=j;e=0;while(1){o=(c[g+(e<<2)>>2]|0)+h|0;m=(c[d>>2]|0)+16400|0;n=c[d+16>>2]|0;p=m+n<<13;n=m-n<<13;m=c[d+8>>2]|0;k=c[d+24>>2]|0;r=(k+m|0)*4433|0;m=r+(m*6270|0)|0;k=r+(B(k,-15137)|0)|0;r=m+p|0;m=p-m|0;p=k+n|0;k=n-k|0;n=c[d+28>>2]|0;u=c[d+20>>2]|0;s=c[d+12>>2]|0;q=c[d+4>>2]|0;j=s+n|0;l=q+u|0;t=(l+j|0)*9633|0;j=t+(B(j,-16069)|0)|0;l=t+(B(l,-3196)|0)|0;t=B(q+n|0,-7373)|0;n=t+(n*2446|0)+j|0;q=t+(q*12299|0)+l|0;t=B(s+u|0,-20995)|0;l=t+(u*16819|0)+l|0;j=t+(s*25172|0)+j|0;a[o>>0]=a[f+((q+r|0)>>>18&1023)>>0]|0;a[o+7>>0]=a[f+((r-q|0)>>>18&1023)>>0]|0;a[o+1>>0]=a[f+((j+p|0)>>>18&1023)>>0]|0;a[o+6>>0]=a[f+((p-j|0)>>>18&1023)>>0]|0;a[o+2>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[o+5>>0]=a[f+((k-l|0)>>>18&1023)>>0]|0;a[o+3>>0]=a[f+((n+m|0)>>>18&1023)>>0]|0;a[o+4>>0]=a[f+((m-n|0)>>>18&1023)>>0]|0;e=e+1|0;if((e|0)==4)break;else d=d+32|0}zb=i;return}function lv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=zb;zb=zb+160|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=(p+n|0)*6476|0;p=n-p|0;n=(p*2896|0)+f|0;q=n+o|0;o=n-o|0;f=(B(p,-11584)|0)+f|0;p=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;n=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;r=(n+p|0)*6810|0;p=r+(p*4209|0)|0;n=r+(B(n,-17828)|0)|0;c[k>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+32>>2]=n+o>>11;c[k+96>>2]=o-n>>11;c[k+64>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){r=(c[g+(d<<2)>>2]|0)+h|0;p=(c[i>>2]<<13)+134348800|0;k=c[i+16>>2]|0;j=p+(k*9373|0)|0;u=p+(B(k,-3580)|0)|0;k=p+(B(k,-11586)|0)|0;p=c[i+8>>2]|0;n=c[i+24>>2]|0;t=(n+p|0)*6810|0;p=t+(p*4209|0)|0;n=t+(B(n,-17828)|0)|0;t=p+j|0;p=j-p|0;j=n+u|0;n=u-n|0;u=c[i+4>>2]|0;v=c[i+12>>2]|0;l=c[i+20>>2]<<13;f=c[i+28>>2]|0;o=f+v|0;f=v-f|0;v=f*2531|0;w=o*7791|0;q=v+l|0;s=w+(u*11443|0)+q|0;q=(u*1812|0)-w+q|0;o=o*4815|0;v=l-v-(f<<12)|0;l=(u-f<<13)-l|0;f=(u*10323|0)-o-v|0;o=v+((u*5260|0)-o)|0;a[r>>0]=a[e+((s+t|0)>>>18&1023)>>0]|0;a[r+9>>0]=a[e+((t-s|0)>>>18&1023)>>0]|0;a[r+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[r+8>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[r+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[r+7>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[r+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[r+6>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[r+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[r+5>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==5)break;else i=i+32|0}zb=m;return}function mv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+192|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+160>>2]=r-q>>11;c[k+32>>2]=o+p;c[k+128>>2]=p-o;c[k+64>>2]=f+n>>11;c[k+96>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*10033|0;w=r+x|0;x=r-x|0;k=c[i+8>>2]|0;n=c[i+24>>2]<<13;p=(k<<13)-n|0;j=p+r|0;p=r-p|0;r=n+(k*11190|0)|0;v=r+w|0;r=w-r|0;n=(k*2998|0)-n|0;k=n+x|0;n=x-n|0;x=c[i+4>>2]|0;w=c[i+12>>2]|0;q=c[i+20>>2]|0;f=c[i+28>>2]|0;z=w*10703|0;y=B(w,-4433)|0;l=q+x|0;s=(l+f|0)*7053|0;l=s+(l*2139|0)|0;u=z+(x*2295|0)+l|0;o=B(f+q|0,-8565)|0;l=(B(q,-12112)|0)+y+o+l|0;o=(f*12998|0)-z+s+o|0;s=y+(B(x,-5540)|0)+(B(f,-16244)|0)+s|0;f=x-f|0;q=w-q|0;w=(f+q|0)*4433|0;f=w+(f*6270|0)|0;q=w+(B(q,-15137)|0)|0;a[t>>0]=a[e+((u+v|0)>>>18&1023)>>0]|0;a[t+11>>0]=a[e+((v-u|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[t+10>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[t+9>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+8>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+7>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+6>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+32|0}zb=m;return}function nv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+224|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+192>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+160>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+96>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=c[i+16>>2]|0;k=r+(p*10438|0)|0;n=r+(p*2578|0)|0;w=r+(B(p,-7223)|0)|0;p=r+(B(p,-11586)|0)|0;r=c[i+8>>2]|0;j=c[i+24>>2]|0;t=(j+r|0)*9058|0;v=t+(r*2237|0)|0;t=t+(B(j,-14084)|0)|0;r=(B(j,-11295)|0)+(r*5027|0)|0;j=v+k|0;v=k-v|0;k=t+n|0;t=n-t|0;n=r+w|0;r=w-r|0;w=c[i+4>>2]|0;A=c[i+12>>2]|0;y=c[i+20>>2]|0;q=c[i+28>>2]<<13;s=y+w|0;l=(A+w|0)*10935|0;C=s*9810|0;f=l+(B(w,-9232)|0)+C+q|0;s=s*6164|0;z=w-A|0;u=(z*3826|0)-q|0;w=s+(B(w,-8693)|0)+u|0;o=(B(y+A|0,-1297)|0)-q|0;l=l+(B(A,-3474)|0)+o|0;o=C+(B(y,-19447)|0)+o|0;C=(y-A|0)*11512|0;s=q+(B(y,-13850)|0)+C+s|0;u=C+(A*5529|0)+u|0;q=(z-y<<13)+q|0;a[x>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+32|0}zb=m;return}function ov(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;o=zb;zb=zb+256|0;i=o;m=c[d+336>>2]|0;l=i;k=c[e+84>>2]|0;j=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[k>>2]|0)|0;c[l>>2]=d;c[l+32>>2]=d;c[l+64>>2]=d;c[l+96>>2]=d;c[l+128>>2]=d;c[l+160>>2]=d;c[l+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[k+128>>2]|0)|0;p=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[k+64>>2]|0,d<<16>>16)|0;q=B(c[k+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[k+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[k+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[l>>2]=t+u>>11;c[l+224>>2]=u-t>>11;c[l+32>>2]=r+s>>11;c[l+192>>2]=s-r>>11;c[l+64>>2]=e+q>>11;c[l+160>>2]=q-e>>11;c[l+96>>2]=d+p>>11;d=p-d>>11;e=32}c[l+(e<<2)>>2]=d;if(j>>>0>1){l=l+4|0;k=k+4|0;f=f+2|0;j=j+-1|0}else break}e=m+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;m=c[i+16>>2]|0;w=m*10703|0;m=m*4433|0;f=r+w|0;w=r-w|0;k=r+m|0;m=r-m|0;r=c[i+8>>2]|0;p=c[i+24>>2]|0;u=r-p|0;z=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=z+(r*7373|0)|0;r=u+(B(r,-4926)|0)|0;p=z+(B(p,-4176)|0)|0;z=v+f|0;v=f-v|0;f=t+k|0;t=k-t|0;k=r+m|0;r=m-r|0;m=p+w|0;p=w-p|0;w=c[i+4>>2]|0;u=c[i+12>>2]|0;C=c[i+20>>2]|0;E=c[i+28>>2]|0;A=C+w|0;j=(u+w|0)*11086|0;l=A*10217|0;s=(E+w|0)*8956|0;q=(w-E|0)*7350|0;A=A*5461|0;n=(w-u|0)*3363|0;y=j+(B(w,-18730)|0)+l+s|0;w=n+(B(w,-15038)|0)+A+q|0;H=(C+u|0)*1136|0;D=(C-u|0)*11529|0;F=E+u|0;G=B(F,-5461)|0;j=j+(u*589|0)+H+G|0;F=B(F,-10217)|0;u=n+(u*16154|0)+D+F|0;n=B(E+C|0,-11086)|0;l=H+(B(C,-9222)|0)+l+n|0;n=G+(E*8728|0)+s+n|0;s=(E-C|0)*3363|0;q=F+(E*25733|0)+q+s|0;s=D+(B(C,-6278)|0)+A+s|0;a[x>>0]=a[e+((y+z|0)>>>18&1023)>>0]|0;a[x+15>>0]=a[e+((z-y|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[x+14>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((n+m|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((m-n|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else i=i+32|0}zb=o;return}function pv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;D=(c[i>>2]<<13)+134348800|0;y=c[i+16>>2]|0;I=y*10703|0;y=y*4433|0;u=D+I|0;I=D-I|0;w=D+y|0;y=D-y|0;D=c[i+8>>2]|0;A=c[i+24>>2]|0;G=D-A|0;s=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;F=s+(D*7373|0)|0;D=G+(B(D,-4926)|0)|0;A=s+(B(A,-4176)|0)|0;s=H+u|0;H=u-H|0;u=F+w|0;F=w-F|0;w=D+y|0;D=y-D|0;y=A+I|0;A=I-A|0;I=c[i+4>>2]|0;G=c[i+12>>2]|0;q=c[i+20>>2]|0;o=c[i+28>>2]|0;r=q+I|0;v=(G+I|0)*11086|0;x=r*10217|0;E=(o+I|0)*8956|0;C=(I-o|0)*7350|0;r=r*5461|0;z=(I-G|0)*3363|0;t=v+(B(I,-18730)|0)+x+E|0;I=z+(B(I,-15038)|0)+r+C|0;k=(q+G|0)*1136|0;p=(q-G|0)*11529|0;n=o+G|0;l=B(n,-5461)|0;v=v+(G*589|0)+k+l|0;n=B(n,-10217)|0;G=z+(G*16154|0)+p+n|0;z=B(o+q|0,-11086)|0;x=k+(B(q,-9222)|0)+x+z|0;z=l+(o*8728|0)+E+z|0;E=(o-q|0)*3363|0;C=n+(o*25733|0)+C+E|0;E=p+(B(q,-6278)|0)+r+E|0;a[J>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[J+15>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[J+14>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[J+13>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[J+12>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+11>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+10>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+9>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+8>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function qv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+480|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;s=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;w=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;y=(B(t,-3580)|0)+f|0;D=(t*9373|0)+f|0;f=(B(t,-11586)|0)+f|0;t=s-w|0;w=w+s|0;E=w*10958|0;u=t*374|0;s=s*11795|0;A=u+E+D|0;u=s-E+u+y|0;E=w*4482|0;o=B(t,-3271)|0;q=D-E+o|0;o=E-s+o+y|0;w=w*6476|0;s=t*2896|0;y=s+w+y|0;s=D-w+s|0;w=f+(t*5792|0)|0;f=(B(t,-11584)|0)+f|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B((b[d+80>>1]|0)*10033|0,c[j+160>>2]|0)|0;C=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;r=D-C|0;F=(r+t|0)*6810|0;x=F+(t*4209|0)|0;r=F+(B(r,-17828)|0)|0;F=B(D,-6810)|0;D=B(D,-11018)|0;v=t-C|0;n=(v*11522|0)+E|0;z=(C*20131|0)-D+n|0;n=F+(B(t,-9113)|0)+n|0;v=(v*10033|0)-E|0;p=(C+t|0)*4712|0;t=F+(t*3897|0)-E+p|0;p=E+D+(B(C,-7121)|0)+p|0;c[k>>2]=z+A>>11;c[k+448>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+416>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+384>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+352>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+320>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+288>>2]=q-p>>11;c[k+192>>2]=n+o>>11;c[k+256>>2]=o-n>>11;c[k+224>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;t=c[i+16>>2]|0;w=c[i+24>>2]|0;r=(B(w,-3580)|0)+E|0;n=(w*9373|0)+E|0;E=(B(w,-11586)|0)+E|0;w=x-t|0;t=t+x|0;l=t*10958|0;v=w*374|0;x=x*11795|0;p=v+l+n|0;v=x-l+v+r|0;l=t*4482|0;C=B(w,-3271)|0;z=n-l+C|0;C=l-x+C+r|0;t=t*6476|0;x=w*2896|0;r=x+t+r|0;x=n-t+x|0;t=E+(w*5792|0)|0;E=(B(w,-11584)|0)+E|0;w=c[i+4>>2]|0;n=c[i+12>>2]|0;l=(c[i+20>>2]|0)*10033|0;o=c[i+28>>2]|0;y=n-o|0;k=(y+w|0)*6810|0;s=k+(w*4209|0)|0;y=k+(B(y,-17828)|0)|0;k=B(n,-6810)|0;n=B(n,-11018)|0;u=w-o|0;D=(u*11522|0)+l|0;q=(o*20131|0)-n+D|0;D=k+(B(w,-9113)|0)+D|0;u=(u*10033|0)-l|0;A=(o+w|0)*4712|0;w=k+(w*3897|0)-l+A|0;A=l+n+(B(o,-7121)|0)+A|0;a[F>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[F+14>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+(E>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==15)break;else i=i+32|0}zb=m;return}function rv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+448|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+416>>2]=z-y>>11;c[k+32>>2]=w+x>>11;c[k+384>>2]=x-w>>11;c[k+64>>2]=u+v>>11;c[k+352>>2]=v-u>>11;c[k+96>>2]=s+t;c[k+320>>2]=t-s;c[k+128>>2]=q+r>>11;c[k+288>>2]=r-q>>11;c[k+160>>2]=o+p>>11;c[k+256>>2]=p-o>>11;c[k+192>>2]=f+n>>11;c[k+224>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;w=c[i+16>>2]|0;s=y+(w*10438|0)|0;u=y+(w*2578|0)|0;E=y+(B(w,-7223)|0)|0;w=y+(B(w,-11586)|0)|0;y=c[i+8>>2]|0;q=c[i+24>>2]|0;A=(q+y|0)*9058|0;D=A+(y*2237|0)|0;A=A+(B(q,-14084)|0)|0;y=(B(q,-11295)|0)+(y*5027|0)|0;q=D+s|0;D=s-D|0;s=A+u|0;A=u-A|0;u=y+E|0;y=E-y|0;E=c[i+4>>2]|0;n=c[i+12>>2]|0;p=c[i+20>>2]|0;x=c[i+28>>2]<<13;z=p+E|0;t=(n+E|0)*10935|0;l=z*9810|0;r=t+(B(E,-9232)|0)+l+x|0;z=z*6164|0;o=E-n|0;C=(o*3826|0)-x|0;E=z+(B(E,-8693)|0)+C|0;v=(B(p+n|0,-1297)|0)-x|0;t=t+(B(n,-3474)|0)+v|0;v=l+(B(p,-19447)|0)+v|0;l=(p-n|0)*11512|0;z=x+(B(p,-13850)|0)+l+z|0;C=l+(n*5529|0)+C|0;x=(o-p<<13)+x|0;a[F>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+32|0}zb=m;return}function sv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;m=zb;zb=zb+416|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;s=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;E=o+s|0;o=s-o|0;s=E*9465|0;w=(o*793|0)+f|0;A=s+(n*11249|0)+w|0;w=(n*4108|0)-s+w|0;s=E*2592|0;q=(o*3989|0)+f|0;y=(n*8672|0)-s+q|0;q=s+(B(n,-10258)|0)+q|0;E=E*3570|0;s=f+(B(o,-7678)|0)|0;u=(B(n,-1396)|0)-E+s|0;s=E+(B(n,-6581)|0)+s|0;E=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;r=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;C=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;p=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=(r+E|0)*10832|0;v=(C+E|0)*9534|0;D=p+E|0;F=D*7682|0;z=x+(B(E,-16549)|0)+v+F|0;H=B(C+r|0,-2773)|0;G=B(p+r|0,-9534)|0;x=x+(r*6859|0)+H+G|0;t=B(p+C|0,-5384)|0;v=H+(B(C,-12879)|0)+v+t|0;t=G+(p*18068|0)+F+t|0;D=(D*2773|0)+((C-r|0)*7682|0)|0;r=D+(E*2611|0)+(B(r,-3818)|0)|0;p=D+(C*3150|0)+(B(p,-14273)|0)|0;c[k>>2]=z+A>>11;c[k+384>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+352>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+192>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){H=(c[g+(d<<2)>>2]|0)+h|0;G=(c[i>>2]<<13)+134348800|0;F=c[i+8>>2]|0;z=c[i+16>>2]|0;E=c[i+24>>2]|0;o=E+z|0;E=z-E|0;z=o*9465|0;v=(E*793|0)+G|0;r=z+(F*11249|0)+v|0;v=(F*4108|0)-z+v|0;z=o*2592|0;C=(E*3989|0)+G|0;t=(F*8672|0)-z+C|0;C=z+(B(F,-10258)|0)+C|0;o=o*3570|0;z=G+(B(E,-7678)|0)|0;x=(B(F,-1396)|0)-o+z|0;z=o+(B(F,-6581)|0)+z|0;o=c[i+4>>2]|0;A=c[i+12>>2]|0;q=c[i+20>>2]|0;D=c[i+28>>2]|0;u=(A+o|0)*10832|0;w=(q+o|0)*9534|0;p=D+o|0;n=p*7682|0;s=u+(B(o,-16549)|0)+w+n|0;k=B(q+A|0,-2773)|0;l=B(D+A|0,-9534)|0;u=u+(A*6859|0)+k+l|0;y=B(D+q|0,-5384)|0;w=k+(B(q,-12879)|0)+w+y|0;y=l+(D*18068|0)+n+y|0;p=(p*2773|0)+((q-A|0)*7682|0)|0;A=p+(o*2611|0)+(B(A,-3818)|0)|0;D=p+(q*3150|0)+(B(D,-14273)|0)|0;a[H>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[H+12>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[H+1>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[H+11>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[H+2>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[H+10>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[H+3>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[H+9>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[H+4>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[H+8>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[H+5>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[H+7>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[H+6>>0]=a[e+((((E-F|0)*11585|0)+G|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==13)break;else i=i+32|0}zb=m;return}function tv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+384|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+352>>2]=x-w>>11;c[k+32>>2]=u+v>>11;c[k+320>>2]=v-u>>11;c[k+64>>2]=s+t>>11;c[k+288>>2]=t-s>>11;c[k+96>>2]=q+r>>11;c[k+256>>2]=r-q>>11;c[k+128>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+160>>2]=f+n>>11;c[k+192>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;n=(c[i+16>>2]|0)*10033|0;o=z+n|0;n=z-n|0;t=c[i+8>>2]|0;v=c[i+24>>2]<<13;x=(t<<13)-v|0;r=x+z|0;x=z-x|0;z=v+(t*11190|0)|0;p=z+o|0;z=o-z|0;v=(t*2998|0)-v|0;t=v+n|0;v=n-v|0;n=c[i+4>>2]|0;o=c[i+12>>2]|0;y=c[i+20>>2]|0;s=c[i+28>>2]|0;k=o*10703|0;l=B(o,-4433)|0;u=y+n|0;A=(u+s|0)*7053|0;u=A+(u*2139|0)|0;q=k+(n*2295|0)+u|0;w=B(s+y|0,-8565)|0;u=(B(y,-12112)|0)+l+w+u|0;w=(s*12998|0)-k+A+w|0;A=l+(B(n,-5540)|0)+(B(s,-16244)|0)+A|0;s=n-s|0;y=o-y|0;o=(s+y|0)*4433|0;s=o+(s*6270|0)|0;y=o+(B(y,-15137)|0)|0;a[C>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[C+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+32|0}zb=m;return}function uv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+352|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;y=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;s=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;q=(z-y|0)*3529|0;o=s+y|0;v=o-z|0;x=(v*11116|0)+f|0;w=x+((z-s|0)*20862|0)|0;u=w+(B(z,-14924)|0)+q|0;w=w+(s*17333|0)|0;q=x+q+(B(y,-12399)|0)|0;o=x+(B(o,-9467)|0)|0;s=o+(B(s,-6461)|0)|0;o=(z*15929|0)+(B(y,-11395)|0)+o|0;f=(B(v,-11585)|0)+f|0;v=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;z=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y+v|0;n=(z+C+x|0)*3264|0;C=C*7274|0;r=(z+v|0)*5492|0;p=n+((x+v|0)*3e3|0)|0;v=C+(B(v,-7562)|0)+r+p|0;t=n+(B(z+y|0,-9527)|0)|0;r=r+(B(z,-9766)|0)+t|0;A=B(x+y|0,-14731)|0;t=C+(y*16984|0)+A+t|0;p=A+(x*17223|0)+p|0;n=(z*8203|0)+(B(y,-12019)|0)+(B(x,-13802)|0)+n|0;c[k>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+32>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+64>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+96>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+128>>2]=n+o>>11;c[k+192>>2]=o-n>>11;c[k+160>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;A=(c[i>>2]<<13)+134348800|0;o=c[i+8>>2]|0;n=c[i+16>>2]|0;u=c[i+24>>2]|0;w=(n-o|0)*3529|0;y=u+o|0;r=y-n|0;p=(r*11116|0)+A|0;q=p+((n-u|0)*20862|0)|0;s=q+(B(n,-14924)|0)+w|0;q=q+(u*17333|0)|0;w=p+w+(B(o,-12399)|0)|0;y=p+(B(y,-9467)|0)|0;u=y+(B(u,-6461)|0)|0;y=(n*15929|0)+(B(o,-11395)|0)+y|0;A=(B(r,-11585)|0)+A|0;r=c[i+4>>2]|0;o=c[i+12>>2]|0;n=c[i+20>>2]|0;p=c[i+28>>2]|0;k=o+r|0;z=(k+n+p|0)*3264|0;k=k*7274|0;v=(n+r|0)*5492|0;x=z+((p+r|0)*3e3|0)|0;r=k+(B(r,-7562)|0)+v+x|0;t=z+(B(n+o|0,-9527)|0)|0;v=v+(B(n,-9766)|0)+t|0;l=B(p+o|0,-14731)|0;t=k+(o*16984|0)+l+t|0;x=l+(p*17223|0)+x|0;z=(n*8203|0)+(B(o,-12019)|0)+(B(p,-13802)|0)+z|0;a[C>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+(A>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==11)break;else i=i+32|0}zb=m;return}function vv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+320|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+288>>2]=v-u>>11;c[k+32>>2]=s+t>>11;c[k+256>>2]=t-s>>11;c[k+64>>2]=q+r;c[k+224>>2]=r-q;c[k+96>>2]=o+p>>11;c[k+192>>2]=p-o>>11;c[k+128>>2]=f+n>>11;c[k+160>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;x=(c[i>>2]<<13)+134348800|0;t=c[i+16>>2]|0;r=x+(t*9373|0)|0;o=x+(B(t,-3580)|0)|0;t=x+(B(t,-11586)|0)|0;x=c[i+8>>2]|0;v=c[i+24>>2]|0;p=(v+x|0)*6810|0;x=p+(x*4209|0)|0;v=p+(B(v,-17828)|0)|0;p=x+r|0;x=r-x|0;r=v+o|0;v=o-v|0;o=c[i+4>>2]|0;n=c[i+12>>2]|0;u=c[i+20>>2]<<13;s=c[i+28>>2]|0;w=s+n|0;s=n-s|0;n=s*2531|0;l=w*7791|0;y=n+u|0;q=l+(o*11443|0)+y|0;y=(o*1812|0)-l+y|0;w=w*4815|0;n=u-n-(s<<12)|0;u=(o-s<<13)-u|0;s=(o*10323|0)-w-n|0;w=n+((o*5260|0)-w)|0;a[z>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[z+9>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[z+8>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[z+7>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[z+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[z+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+32|0}zb=m;return}function wv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){q=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=B((b[d+96>>1]|0)*5793|0,c[j+192>>2]|0)|0;v=f+q|0;f=q-f-f|0;q=w-o|0;s=f+(q*5793|0)|0;f=(B(q,-11586)|0)+f|0;q=(o+w|0)*10887|0;w=w*8875|0;o=o*2012|0;u=q-o+v|0;q=v-q+w|0;o=v-w+o|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;r=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=B(B(b[d+48>>1]|0,-10033)|0,c[j+96>>2]|0)|0;p=(v+w|0)*7447|0;n=(r+w|0)*3962|0;t=p-x+n|0;y=(v-r|0)*11409|0;p=x-y+p|0;n=y+x+n|0;r=(w-v-r|0)*10033|0;c[k>>2]=t+u>>11;c[k+256>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+224>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+192>>2]=q-p>>11;c[k+96>>2]=n+o>>11;c[k+160>>2]=o-n>>11;c[k+128>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){y=(c[g+(d<<2)>>2]|0)+h|0;t=(c[i>>2]<<13)+134348800|0;n=c[i+8>>2]|0;v=c[i+16>>2]|0;x=(c[i+24>>2]|0)*5793|0;o=x+t|0;x=t-x-x|0;t=n-v|0;r=x+(t*5793|0)|0;x=(B(t,-11586)|0)+x|0;t=(v+n|0)*10887|0;n=n*8875|0;v=v*2012|0;p=t-v+o|0;t=o-t+n|0;v=o-n+v|0;n=c[i+4>>2]|0;o=c[i+20>>2]|0;s=c[i+28>>2]|0;l=B(c[i+12>>2]|0,-10033)|0;u=(o+n|0)*7447|0;w=(s+n|0)*3962|0;q=u-l+w|0;k=(o-s|0)*11409|0;u=l-k+u|0;w=k+l+w|0;s=(n-o-s|0)*10033|0;a[y>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[y+8>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[y+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[y+7>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[y+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[y+6>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[y+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[y+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[y+4>>0]=a[e+(x>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==9)break;else i=i+32|0}zb=m;return}function xv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+168>>2]=u-t>>11;c[k+28>>2]=r+s>>11;c[k+140>>2]=s-r>>11;c[k+56>>2]=p+q>>11;c[k+112>>2]=q-p>>11;c[k+84>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;w=(c[i>>2]<<13)+134348800|0;l=c[i+8>>2]|0;u=c[i+16>>2]|0;o=c[i+24>>2]|0;n=(u-o|0)*7223|0;t=(l-u|0)*2578|0;q=(B(u,-15083)|0)+w+t+n|0;v=o+l|0;s=(v*10438|0)+w|0;o=n+(B(o,-637)|0)+s|0;s=t+(B(l,-20239)|0)+s|0;l=c[i+4>>2]|0;t=c[i+12>>2]|0;n=c[i+20>>2]|0;k=(t+l|0)*7663|0;p=(l-t|0)*1395|0;t=B(n+t|0,-11295)|0;r=k+p+t|0;l=(n+l|0)*5027|0;p=k-p+l|0;t=l+(n*15326|0)+t|0;a[x>>0]=a[e+((p+o|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((o-p|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((((u-v|0)*11585|0)+w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+28|0}zb=m;return}function yv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=zb;zb=zb+144|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+120>>2]=r-q>>11;c[k+24>>2]=o+p;c[k+96>>2]=p-o;c[k+48>>2]=f+n>>11;c[k+72>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=(c[i+16>>2]|0)*5793|0;k=r+p|0;p=r-p-p|0;r=(c[i+8>>2]|0)*10033|0;n=k+r|0;r=k-r|0;k=c[i+4>>2]|0;l=c[i+12>>2]|0;q=c[i+20>>2]|0;s=(q+k|0)*2998|0;o=s+(l+k<<13)|0;s=s+(q-l<<13)|0;q=k-l-q<<13;a[t>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+24|0}zb=m;return}function zv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+112|0;l=i;d=c[d+336>>2]|0;o=c[e+84>>2]|0;n=B(b[f>>1]<<13,c[o>>2]|0)|0|1024;e=B(c[o+64>>2]|0,b[f+32>>1]|0)|0;j=B(c[o+128>>2]|0,b[f+64>>1]|0)|0;q=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+n|0;p=e+q|0;q=e-q|0;n=(B(j,-11584)|0)+n|0;j=B(c[o+32>>2]|0,b[f+16>>1]|0)|0;e=B(c[o+96>>2]|0,b[f+48>>1]|0)|0;m=(e+j|0)*6810|0;j=m+(j*4209|0)|0;e=m+(B(e,-17828)|0)|0;c[l>>2]=j+p>>11;c[l+80>>2]=p-j>>11;j=l+20|0;c[j>>2]=e+q>>11;c[l+60>>2]=q-e>>11;c[l+40>>2]=n>>11;n=l+4|0;e=B(b[f+2>>1]<<13,c[o+4>>2]|0)|0|1024;q=B(c[o+68>>2]|0,b[f+34>>1]|0)|0;p=B(c[o+132>>2]|0,b[f+66>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[o+100>>2]|0,b[f+50>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[n>>2]=p+k>>11;c[l+84>>2]=k-p>>11;c[l+24>>2]=q+m>>11;c[l+64>>2]=m-q>>11;c[l+44>>2]=e>>11;e=B(b[f+4>>1]<<13,c[o+8>>2]|0)|0|1024;q=B(c[o+72>>2]|0,b[f+36>>1]|0)|0;m=B(c[o+136>>2]|0,b[f+68>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+40>>2]|0,b[f+20>>1]|0)|0;q=B(c[o+104>>2]|0,b[f+52>>1]|0)|0;r=(q+m|0)*6810|0;m=r+(m*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+8>>2]=m+k>>11;c[l+88>>2]=k-m>>11;c[l+28>>2]=q+p>>11;c[l+68>>2]=p-q>>11;c[l+48>>2]=e>>11;e=B(b[f+6>>1]<<13,c[o+12>>2]|0)|0|1024;q=B(c[o+76>>2]|0,b[f+38>>1]|0)|0;p=B(c[o+140>>2]|0,b[f+70>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+44>>2]|0,b[f+22>>1]|0)|0;q=B(c[o+108>>2]|0,b[f+54>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+12>>2]=p+k>>11;c[l+92>>2]=k-p>>11;c[l+32>>2]=q+m>>11;c[l+72>>2]=m-q>>11;c[l+52>>2]=e>>11;e=B(b[f+8>>1]<<13,c[o+16>>2]|0)|0|1024;q=B(c[o+80>>2]|0,b[f+40>>1]|0)|0;m=B(c[o+144>>2]|0,b[f+72>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+48>>2]|0,b[f+24>>1]|0)|0;f=B(c[o+112>>2]|0,b[f+56>>1]|0)|0;o=(f+m|0)*6810|0;m=o+(m*4209|0)|0;f=o+(B(f,-17828)|0)|0;c[l+16>>2]=m+k>>11;c[l+96>>2]=k-m>>11;c[l+36>>2]=f+p>>11;c[l+76>>2]=p-f>>11;c[l+56>>2]=e>>11;f=d+-384|0;e=(c[g>>2]|0)+h|0;d=(c[l>>2]<<13)+134348800|0;p=c[l+8>>2]|0;m=c[l+16>>2]|0;k=(m+p|0)*6476|0;m=p-m|0;p=(m*2896|0)+d|0;o=p+k|0;k=p-k|0;d=(B(m,-11584)|0)+d|0;n=c[n>>2]|0;m=c[l+12>>2]|0;p=(m+n|0)*6810|0;n=p+(n*4209|0)|0;m=p+(B(m,-17828)|0)|0;a[e>>0]=a[f+((n+o|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((m+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-m|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;j=(c[j>>2]<<13)+134348800|0;d=c[l+28>>2]|0;m=c[l+36>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+24>>2]|0;d=c[l+32>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;j=(c[l+40>>2]<<13)+134348800|0;d=c[l+48>>2]|0;k=c[l+56>>2]|0;m=(k+d|0)*6476|0;k=d-k|0;d=(k*2896|0)+j|0;n=d+m|0;m=d-m|0;j=(B(k,-11584)|0)+j|0;k=c[l+44>>2]|0;d=c[l+52>>2]|0;o=(d+k|0)*6810|0;k=o+(k*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((k+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+m|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((m-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;j=(c[l+60>>2]<<13)+134348800|0;d=c[l+68>>2]|0;m=c[l+76>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+64>>2]|0;d=c[l+72>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;h=(c[g+16>>2]|0)+h|0;g=(c[l+80>>2]<<13)+134348800|0;e=c[l+88>>2]|0;j=c[l+96>>2]|0;d=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+g|0;k=e+d|0;d=e-d|0;g=(B(j,-11584)|0)+g|0;j=c[l+84>>2]|0;e=c[l+92>>2]|0;l=(e+j|0)*6810|0;j=l+(j*4209|0)|0;e=l+(B(e,-17828)|0)|0;a[h>>0]=a[f+((j+k|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[f+((k-j|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+((e+d|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+64|0;k=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;m=B(c[e>>2]|0,b[f>>1]|0)|0;j=B(c[e+64>>2]|0,b[f+32>>1]|0)|0;o=j+m<<2;j=m-j<<2;m=B(c[e+32>>2]|0,b[f+16>>1]|0)|0;n=B(c[e+96>>2]|0,b[f+48>>1]|0)|0;l=((n+m|0)*4433|0)+1024|0;m=l+(m*6270|0)>>11;n=l+(B(n,-15137)|0)>>11;c[k>>2]=m+o;c[k+48>>2]=o-m;m=k+16|0;c[m>>2]=n+j;c[k+32>>2]=j-n;n=k+4|0;j=B(c[e+4>>2]|0,b[f+2>>1]|0)|0;o=B(c[e+68>>2]|0,b[f+34>>1]|0)|0;l=o+j<<2;o=j-o<<2;j=B(c[e+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[e+100>>2]|0,b[f+50>>1]|0)|0;p=((q+j|0)*4433|0)+1024|0;j=p+(j*6270|0)>>11;q=p+(B(q,-15137)|0)>>11;c[n>>2]=j+l;c[k+52>>2]=l-j;c[k+20>>2]=q+o;c[k+36>>2]=o-q;q=B(c[e+8>>2]|0,b[f+4>>1]|0)|0;o=B(c[e+72>>2]|0,b[f+36>>1]|0)|0;j=o+q<<2;o=q-o<<2;q=B(c[e+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[e+104>>2]|0,b[f+52>>1]|0)|0;p=((l+q|0)*4433|0)+1024|0;q=p+(q*6270|0)>>11;l=p+(B(l,-15137)|0)>>11;p=q+j|0;c[k+8>>2]=p;c[k+56>>2]=j-q;c[k+24>>2]=l+o;c[k+40>>2]=o-l;l=B(c[e+12>>2]|0,b[f+6>>1]|0)|0;o=B(c[e+76>>2]|0,b[f+38>>1]|0)|0;q=o+l<<2;o=l-o<<2;l=B(c[e+44>>2]|0,b[f+22>>1]|0)|0;e=B(c[e+108>>2]|0,b[f+54>>1]|0)|0;j=((e+l|0)*4433|0)+1024|0;l=j+(l*6270|0)>>11;e=j+(B(e,-15137)|0)>>11;j=l+q|0;c[k+12>>2]=j;c[k+60>>2]=q-l;l=e+o|0;c[k+28>>2]=l;c[k+44>>2]=o-e;e=d+-384|0;d=(c[g>>2]|0)+h|0;f=(c[k>>2]|0)+16400|0;o=f+p<<13;f=f-p<<13;n=c[n>>2]|0;p=(j+n|0)*4433|0;n=p+(n*6270|0)|0;j=p+(B(j,-15137)|0)|0;a[d>>0]=a[e+((n+o|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((o-n|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;m=(c[m>>2]|0)+16400|0;j=c[k+24>>2]|0;f=m+j<<13;j=m-j<<13;m=c[k+20>>2]|0;n=(l+m|0)*4433|0;m=n+(m*6270|0)|0;l=n+(B(l,-15137)|0)|0;a[d>>0]=a[e+((m+f|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((f-m|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((l+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-l|0)>>>18&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=(c[k+32>>2]|0)+16400|0;j=c[k+40>>2]|0;m=l+j<<13;j=l-j<<13;l=c[k+36>>2]|0;f=c[k+44>>2]|0;n=(f+l|0)*4433|0;l=n+(l*6270|0)|0;f=n+(B(f,-15137)|0)|0;a[d>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;d=(c[k+48>>2]|0)+16400|0;f=c[k+56>>2]|0;j=d+f<<13;f=d-f<<13;d=c[k+52>>2]|0;g=c[k+60>>2]|0;k=(g+d|0)*4433|0;d=k+(d*6270|0)|0;g=k+(B(g,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function Bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+48|0;j=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;l=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;k=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;n=k+l|0;l=(B(k,-2)|0)+l|0;k=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;m=k+n>>11;c[j>>2]=m;c[j+24>>2]=n-k>>11;k=j+12|0;c[k>>2]=l>>11;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;n=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;q=n+l|0;l=(B(n,-2)|0)+l|0;n=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;o=n+q>>11;c[j+4>>2]=o;c[j+28>>2]=q-n>>11;l=l>>11;c[j+16>>2]=l;n=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;q=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=q+n|0;n=(B(q,-2)|0)+n|0;e=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;q=e+p>>11;c[j+8>>2]=q;e=p-e>>11;c[j+32>>2]=e;n=n>>11;c[j+20>>2]=n;f=d+-384|0;d=(c[g>>2]|0)+h|0;m=(m<<13)+134348800|0;p=m+(q*5793|0)|0;m=(B(q,-11586)|0)+m|0;o=o*10033|0;a[d>>0]=a[f+((p+o|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((p-o|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(m>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;k=(c[k>>2]<<13)+134348800|0;m=k+(n*5793|0)|0;k=(B(n,-11586)|0)+k|0;l=l*10033|0;a[d>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(k>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;g=(c[j+24>>2]<<13)+134348800|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+28>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;d=(c[d+336>>2]|0)+-384|0;j=c[e+84>>2]|0;i=B(c[j>>2]|0,b[f>>1]|0)|0;e=B(c[j+32>>2]|0,b[f+16>>1]|0)|0;i=i+4100|0;k=e+i|0;e=i-e|0;i=B(c[j+4>>2]|0,b[f+2>>1]|0)|0;f=B(c[j+36>>2]|0,b[f+18>>1]|0)|0;j=f+i|0;f=i-f|0;i=(c[g>>2]|0)+h|0;a[i>>0]=a[d+((j+k|0)>>>3&1023)>>0]|0;a[i+1>>0]=a[d+((k-j|0)>>>3&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;a[h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function Dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=(c[d+336>>2]|0)+-384+(((B(c[c[e+84>>2]>>2]|0,b[f>>1]|0)|0)+4100|0)>>>3&1023)|0;a[(c[g>>2]|0)+h>>0]=a[f>>0]|0;return}function Ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+224>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+192>>2]=s-r>>11;c[k+64>>2]=e+q>>11;c[k+160>>2]=q-e>>11;c[k+96>>2]=d+p>>11;d=p-d>>11;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){x=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=x;aP(f+1|0,x|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;x=c[e+16>>2]|0;s=x+i<<13;x=i-x<<13;u=c[e+24>>2]|0;q=(u+d|0)*4433|0;w=q+(d*6270|0)|0;u=q+(B(u,-15137)|0)|0;q=w+s|0;w=s-w|0;s=u+x|0;u=x-u|0;x=c[e+28>>2]|0;i=c[e+20>>2]|0;p=c[e+12>>2]|0;t=p+x|0;v=i+j|0;r=(t+v|0)*9633|0;t=r+(B(t,-16069)|0)|0;v=r+(B(v,-3196)|0)|0;r=B(x+j|0,-7373)|0;x=r+(x*2446|0)+t|0;r=r+(j*12299|0)+v|0;m=B(p+i|0,-20995)|0;v=m+(i*16819|0)+v|0;t=m+(p*25172|0)+t|0;a[f>>0]=a[l+((r+q|0)>>>18&1023)>>0]|0;a[f+7>>0]=a[l+((q-r|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[l+((t+s|0)>>>18&1023)>>0]|0;a[f+6>>0]=a[l+((s-t|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[l+((v+u|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[l+((u-v|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[l+((x+w|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[l+((w-x|0)>>>18&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function Fv(a,b){a=a|0;b=b|0;var d=0;d=c[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(c[a+84>>2]|0)){c[d+4>>2]=c[(c[a+476>>2]|0)+4>>2];break a}c[d+4>>2]=4;b=d+12|0;if(!(c[b>>2]|0)){a=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0;c[b>>2]=a}break}case 3:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=5;break}case 2:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=6;break}default:{b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function Gv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=zb;zb=zb+16|0;j=i;m=c[a+456>>2]|0;k=h-(c[g>>2]|0)|0;l=c[m+16>>2]|0;c[j>>2]=0;h=m+12|0;_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,c[h>>2]|0,j,k>>>0>l>>>0?l:k);Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0);zb=i;return}function Hv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[a+456>>2]|0;l=k+24|0;f=c[l>>2]|0;if(!f){j=k+16|0;h=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;i=k+12|0;c[i>>2]=h;f=c[l>>2]|0}else{h=k+12|0;j=k+16|0;i=h;h=c[h>>2]|0}_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,h,l,c[j>>2]|0);h=c[l>>2]|0;if(h>>>0>f>>>0){h=h-f|0;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,(c[i>>2]|0)+(f<<2)|0,0,h);c[g>>2]=(c[g>>2]|0)+h;h=c[l>>2]|0}f=c[j>>2]|0;if(h>>>0>>0)return;k=k+20|0;c[k>>2]=(c[k>>2]|0)+f;c[l>>2]=0;return}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;d=c[a+456>>2]|0;j=d+24|0;b=c[j>>2]|0;if(!b){i=d+20|0;e=d+16|0;k=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,c[i>>2]|0,c[e>>2]|0,0)|0;c[d+12>>2]=k;b=c[j>>2]|0;d=k}else{i=d+20|0;e=d+16|0;d=c[d+12>>2]|0}k=(c[e>>2]|0)-b|0;l=c[g>>2]|0;h=h-l|0;k=k>>>0>h>>>0?h:k;h=(c[a+116>>2]|0)-(c[i>>2]|0)|0;k=k>>>0>h>>>0?h:k;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,d+(b<<2)|0,f+(l<<2)|0,k);c[g>>2]=(c[g>>2]|0)+k;k=(c[j>>2]|0)+k|0;c[j>>2]=k;b=c[e>>2]|0;if(k>>>0>>0)return;c[i>>2]=(c[i>>2]|0)+b;c[j>>2]=0;return}function Jv(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+92>>2]=c[a+320>>2];c[b+96>>2]=c[a+116>>2];return}function Kv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[a+476>>2]|0;m=l+92|0;i=c[m>>2]|0;k=a+320|0;e=c[k>>2]|0;if((i|0)>=(e|0)){j=a+36|0;if((c[j>>2]|0)>0){e=c[a+216>>2]|0;i=0;while(1){n=(c[b+(i<<2)>>2]|0)+((B(c[l+100+(i<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Xb[c[l+52+(i<<2)>>2]&31](a,e,n,l+12+(i<<2)|0);i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else e=e+88|0}e=c[k>>2]|0}c[m>>2]=0;i=0}n=e-i|0;b=l+96|0;j=c[b>>2]|0;n=n>>>0>j>>>0?j:n;j=c[g>>2]|0;h=h-j|0;n=n>>>0>h>>>0?h:n;Yb[c[(c[a+480>>2]|0)+4>>2]&63](a,l+12|0,i,f+(j<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;c[b>>2]=(c[b>>2]|0)-n;n=(c[m>>2]|0)+n|0;c[m>>2]=n;if((n|0)<(c[k>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function Mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+320|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+112|0;h=0;do{b=c[j+(h<<2)>>2]|0;f=c[i>>2]|0;g=b+f|0;if((f|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function Ov(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+320|0;if((c[l>>2]|0)<=0)return;j=b+112|0;h=0;i=0;while(1){b=c[k+(i<<2)>>2]|0;d=c[j>>2]|0;g=b+d|0;if((d|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[j>>2]|0}Qv(k,i,k,i|1,1,d);i=i+2|0;if((i|0)>=(c[l>>2]|0))break;else h=h+1|0}return}function Pv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[b+476>>2]|0;q=c[f>>2]|0;d=c[d+4>>2]|0;f=a[r+140+d>>0]|0;o=f&255;d=a[r+150+d>>0]|0;r=d&255;p=b+320|0;g=c[p>>2]|0;if((g|0)<=0)return;n=b+112|0;k=f<<24>>24!=0;l=r+-1|0;if((d&255)>1){j=(f<<24>>24==0?~o:-2)+o+2|0;h=0;i=0;while(1){d=c[q+(i<<2)>>2]|0;f=c[n>>2]|0;g=d+f|0;if((f|0)>0){if(!k)break;b=c[e+(h<<2)>>2]|0;f=d;while(1){aP(f|0,a[b>>0]|0,j|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)b=b+1|0;else break}f=c[n>>2]|0}Qv(q,i,q,i+1|0,l,f);i=i+r|0;if((i|0)>=(c[p>>2]|0)){m=27;break}else h=h+1|0}if((m|0)==27)return;while(1){}}if(!k){d=(c[n>>2]|0)>0;f=0;while(1){if(d)break;f=f+r|0;if((f|0)>=(g|0)){m=27;break}}if((m|0)==27)return;while(1){}}b=0;h=0;while(1){f=c[q+(h<<2)>>2]|0;m=c[n>>2]|0;i=f+m|0;if((m|0)>0){g=c[e+(b<<2)>>2]|0;while(1){aP(f|0,a[g>>0]|0,o|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)g=g+1|0;else break}}h=h+r|0;if((h|0)>=(c[p>>2]|0))break;else b=b+1|0}return}function Qv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;b=a+(b<<2)|0;a=d+(e<<2)|0;while(1){_O(c[a>>2]|0,c[b>>2]|0,g|0)|0;if((f|0)>1){b=b+4|0;a=a+4|0;f=f+-1|0}else break}return}function Rv(a){a=a|0;return}function Sv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Qv(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function Tv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{a[m+b>>0]=((c[q+((d[k+b>>0]|0|256)<<2)>>2]|0)+(c[q+((d[j+b>>0]|0)<<2)>>2]|0)+(c[q+((d[l+b>>0]|0|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Uv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{s=d[k+b>>0]|0;r=s+128|0;a[m+b>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+((r+(d[j+b>>0]|0)&255)<<2)>>2]|0)+(c[q+((r+(d[l+b>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Vv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;b=0;h=c[f>>2]|0;while(1){l=a[j+b>>0]|0;a[h+2>>0]=l;a[h+1>>0]=l;a[h>>0]=l;b=b+1|0;if((b|0)==(k|0))break;else h=h+3|0}if((i|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function Wv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[b+480>>2]|0;u=c[b+112>>2]|0;n=c[b+336>>2]|0;o=c[r+8>>2]|0;p=c[r+12>>2]|0;q=c[r+16>>2]|0;r=c[r+20>>2]|0;if((h|0)<=0)return;s=e+4|0;t=e+8|0;if(!u)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;m=c[(c[t>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){v=d[k+i>>0]|0;w=d[l+i>>0]|0;x=d[m+i>>0]|0;a[b>>0]=a[n+((c[o+(x<<2)>>2]|0)+v)>>0]|0;a[b+1>>0]=a[n+(((c[q+(x<<2)>>2]|0)+(c[r+(w<<2)>>2]|0)>>16)+v)>>0]|0;a[b+2>>0]=a[n+((c[p+(w<<2)>>2]|0)+v)>>0]|0;i=i+1|0;if((i|0)==(u|0))break;else b=b+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Xv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[b+112>>2]|0;if((g|0)<=0)return;n=d+4|0;o=d+8|0;if(!m)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;k=c[(c[n>>2]|0)+(e<<2)>>2]|0;l=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;b=0;h=c[f>>2]|0;while(1){a[h>>0]=a[j+b>>0]|0;a[h+1>>0]=a[k+b>>0]|0;a[h+2>>0]=a[l+b>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else h=h+3|0}if((i|0)<=1)break;else f=f+4|0}return}function Yv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[o>>2]|0)+(f<<2)>>2]|0;m=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=0;i=c[g>>2]|0;while(1){s=a[l+b>>0]|0;q=d[m+b>>0]|0;r=(s&255)+128|0;a[i>>0]=r+(d[k+b>>0]|0);a[i+1>>0]=s;a[i+2>>0]=r+q;b=b+1|0;if((b|0)==(n|0))break;else i=i+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Zv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=c[b+480>>2]|0;w=c[b+112>>2]|0;o=c[b+336>>2]|0;p=c[s+8>>2]|0;q=c[s+12>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;if((h|0)<=0)return;t=e+4|0;u=e+8|0;v=e+12|0;if(!w)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[t>>2]|0)+(f<<2)>>2]|0;m=c[(c[u>>2]|0)+(f<<2)>>2]|0;n=c[(c[v>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){x=d[l+i>>0]|0;z=d[m+i>>0]|0;y=~a[k+i>>0]&255;a[b>>0]=a[o+(y-(c[p+(z<<2)>>2]|0))>>0]|0;a[b+1>>0]=a[o+(y-((c[r+(z<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16))>>0]|0;a[b+2>>0]=a[o+(y-(c[q+(x<<2)>>2]|0))>>0]|0;a[b+3>>0]=a[n+i>>0]|0;i=i+1|0;if((i|0)==(w|0))break;else b=b+4|0}if((j|0)<=1)break;else g=g+4|0}return}function _v(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;m=c[b+112>>2]|0;if((g|0)<=0)return;l=(m|0)==0;if((n|0)<=0)return;while(1){k=g;g=g+-1|0;if(!l){j=0;do{b=0;h=c[(c[d+(j<<2)>>2]|0)+(e<<2)>>2]|0;i=(c[f>>2]|0)+j|0;while(1){a[i>>0]=a[h>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else{h=h+1|0;i=i+n|0}}j=j+1|0}while((j|0)!=(n|0))}if((k|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function $v(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function aw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;l=n;m=c[a+476>>2]|0;i=m+36|0;if(!(c[i>>2]|0)){j=m+44|0;e=c[j>>2]|0;e=e>>>0<2?e:2;k=c[g>>2]|0;h=h-k|0;e=e>>>0>h>>>0?h:e;c[l>>2]=c[f+(k<<2)>>2];if(e>>>0>1)c[l+4>>2]=c[f+(k+1<<2)>>2];else{c[l+4>>2]=c[m+32>>2];c[i>>2]=1}Xb[c[m+12>>2]&31](a,b,c[d>>2]|0,l);f=(c[i>>2]|0)==0;c[g>>2]=(c[g>>2]|0)+e;c[j>>2]=(c[j>>2]|0)-e;if(!f){zb=n;return}}else{Qv(m+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[m+40>>2]|0);c[i>>2]=0;f=m+44|0;c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+-1}c[d>>2]=(c[d>>2]|0)+1;zb=n;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=c[b+476>>2]|0;x=c[b+336>>2]|0;y=c[w+16>>2]|0;u=c[w+20>>2]|0;v=c[w+24>>2]|0;w=c[w+28>>2]|0;i=c[e>>2]|0;h=f<<1;t=c[i+(h<<2)>>2]|0;h=c[i+((h|1)<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=c[g+4>>2]|0;s=b+112|0;e=c[s>>2]|0;m=e>>>1;if(!m){j=p;b=t}else{n=i+m|0;q=e&-2;r=m*6|0;o=h+q|0;l=p;e=t;b=g;j=f;k=m;while(1){A=d[i>>0]|0;B=d[l>>0]|0;C=c[y+(B<<2)>>2]|0;B=(c[v+(B<<2)>>2]|0)+(c[w+(A<<2)>>2]|0)>>16;A=c[u+(A<<2)>>2]|0;z=d[e>>0]|0;a[j>>0]=a[x+(C+z)>>0]|0;a[j+1>>0]=a[x+(B+z)>>0]|0;a[j+2>>0]=a[x+(A+z)>>0]|0;z=d[e+1>>0]|0;a[j+3>>0]=a[x+(C+z)>>0]|0;a[j+4>>0]=a[x+(B+z)>>0]|0;a[j+5>>0]=a[x+(A+z)>>0]|0;z=d[h>>0]|0;a[b>>0]=a[x+(C+z)>>0]|0;a[b+1>>0]=a[x+(B+z)>>0]|0;a[b+2>>0]=a[x+(A+z)>>0]|0;z=d[h+1>>0]|0;a[b+3>>0]=a[x+(C+z)>>0]|0;a[b+4>>0]=a[x+(B+z)>>0]|0;a[b+5>>0]=a[x+(A+z)>>0]|0;k=k+-1|0;if(!k)break;else{l=l+1|0;i=i+1|0;h=h+2|0;e=e+2|0;b=b+6|0;j=j+6|0}}j=p+m|0;i=n;h=o;b=t+q|0;g=g+r|0;f=f+r|0;e=c[s>>2]|0}if(!(e&1))return;B=d[i>>0]|0;A=d[j>>0]|0;z=c[y+(A<<2)>>2]|0;A=(c[v+(A<<2)>>2]|0)+(c[w+(B<<2)>>2]|0)>>16;B=c[u+(B<<2)>>2]|0;C=d[b>>0]|0;a[f>>0]=a[x+(z+C)>>0]|0;a[f+1>>0]=a[x+(A+C)>>0]|0;a[f+2>>0]=a[x+(B+C)>>0]|0;C=d[h>>0]|0;a[g>>0]=a[x+(z+C)>>0]|0;a[g+1>>0]=a[x+(A+C)>>0]|0;a[g+2>>0]=a[x+(B+C)>>0]|0;return}function cw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Xb[c[(c[a+476>>2]|0)+12>>2]&31](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function dw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=c[b+476>>2]|0;t=c[b+336>>2]|0;u=c[s+16>>2]|0;q=c[s+20>>2]|0;r=c[s+24>>2]|0;s=c[s+28>>2]|0;p=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;h=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;o=b+112|0;e=c[o>>2]|0;l=e>>>1;if(!l){b=i;g=p}else{b=i+l|0;m=e&-2;n=l*6|0;k=h;e=i;g=p;i=f;j=l;while(1){w=d[e>>0]|0;x=d[k>>0]|0;y=c[u+(x<<2)>>2]|0;x=(c[r+(x<<2)>>2]|0)+(c[s+(w<<2)>>2]|0)>>16;w=c[q+(w<<2)>>2]|0;v=d[g>>0]|0;a[i>>0]=a[t+(y+v)>>0]|0;a[i+1>>0]=a[t+(x+v)>>0]|0;a[i+2>>0]=a[t+(w+v)>>0]|0;v=d[g+1>>0]|0;a[i+3>>0]=a[t+(y+v)>>0]|0;a[i+4>>0]=a[t+(x+v)>>0]|0;a[i+5>>0]=a[t+(w+v)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+1|0;e=e+1|0;g=g+2|0;i=i+6|0}}h=h+l|0;g=p+m|0;f=f+n|0;e=c[o>>2]|0}if(!(e&1))return;x=d[b>>0]|0;v=d[h>>0]|0;w=(c[r+(v<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16;x=c[q+(x<<2)>>2]|0;y=d[g>>0]|0;a[f>>0]=a[t+((c[u+(v<<2)>>2]|0)+y)>>0]|0;a[f+1>>0]=a[t+(w+y)>>0]|0;a[f+2>>0]=a[t+(x+y)>>0]|0;return}function ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+484>>2]|0;g=c[f+24>>2]|0;e=a+88|0;if(!(c[e>>2]|0))d=0;else{c[e>>2]=2;d=2}if(!b){c[f+4>>2]=(d|0)==2?20:21;c[f+8>>2]=134;b=c[a+132>>2]|0;if((b|0)>=1){if((b|0)>256){d=c[a>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{d=c[a>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}if((c[e>>2]|0)==2){e=((c[a+112>>2]|0)*6|0)+12|0;d=f+32|0;b=c[d>>2]|0;if(!b){b=Jb[c[(c[a+4>>2]|0)+4>>2]&63](a,1,e)|0;c[d>>2]=b}aP(b|0,0,e|0)|0;if(!(c[f+40>>2]|0))gw(a);c[f+36>>2]=0}}else{c[f+4>>2]=19;c[f+8>>2]=133;c[f+28>>2]=1}b=f+28|0;if(!(c[b>>2]|0))return;aP(c[g>>2]|0,0,4096)|0;aP(c[g+4>>2]|0,0,4096)|0;aP(c[g+8>>2]|0,0,4096)|0;aP(c[g+12>>2]|0,0,4096)|0;aP(c[g+16>>2]|0,0,4096)|0;aP(c[g+20>>2]|0,0,4096)|0;aP(c[g+24>>2]|0,0,4096)|0;aP(c[g+28>>2]|0,0,4096)|0;aP(c[g+32>>2]|0,0,4096)|0;aP(c[g+36>>2]|0,0,4096)|0;aP(c[g+40>>2]|0,0,4096)|0;aP(c[g+44>>2]|0,0,4096)|0;aP(c[g+48>>2]|0,0,4096)|0;aP(c[g+52>>2]|0,0,4096)|0;aP(c[g+56>>2]|0,0,4096)|0;aP(c[g+60>>2]|0,0,4096)|0;aP(c[g+64>>2]|0,0,4096)|0;aP(c[g+68>>2]|0,0,4096)|0;aP(c[g+72>>2]|0,0,4096)|0;aP(c[g+76>>2]|0,0,4096)|0;aP(c[g+80>>2]|0,0,4096)|0;aP(c[g+84>>2]|0,0,4096)|0;aP(c[g+88>>2]|0,0,4096)|0;aP(c[g+92>>2]|0,0,4096)|0;aP(c[g+96>>2]|0,0,4096)|0;aP(c[g+100>>2]|0,0,4096)|0;aP(c[g+104>>2]|0,0,4096)|0;aP(c[g+108>>2]|0,0,4096)|0;aP(c[g+112>>2]|0,0,4096)|0;aP(c[g+116>>2]|0,0,4096)|0;aP(c[g+120>>2]|0,0,4096)|0;aP(c[g+124>>2]|0,0,4096)|0;c[b>>2]=0;return}function fw(a){a=a|0;c[(c[a+484>>2]|0)+28>>2]=1;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=c[a+484>>2]|0;a=Jb[c[c[a+4>>2]>>2]&63](a,1,2044)|0;e=a+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;d=16;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=0-d;a=a+1|0;d=(a&1^1)+d|0}while((a|0)!=48);b=0-d|0;a=48;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=b;a=a+1|0}while((a|0)!=256);return}function hw(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+484>>2]|0)+24>>2]|0;i=c[a+112>>2]|0;if((g|0)<1|(i|0)==0)return;a=0;do{f=i;h=c[e+(a<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;f=f+-1|0;if(!f)break;else h=h+3|0}a=a+1|0}while((a|0)!=(g|0));return}function iw(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;y=d+484|0;A=c[y>>2]|0;C=d+136|0;c[C>>2]=c[A+16>>2];s=c[A+20>>2]|0;z=Jb[c[c[d+4>>2]>>2]&63](d,1,s<<5)|0;c[z>>2]=0;c[z+4>>2]=31;c[z+8>>2]=0;c[z+12>>2]=63;c[z+16>>2]=0;c[z+20>>2]=31;nw(d,z);a:do if((s|0)>1){e=1;while(1){if((e<<1|0)>(s|0)){g=0;h=0;i=z;f=0;while(1){j=c[i+24>>2]|0;k=(j|0)>(g|0);f=k?i:f;h=h+1|0;if((h|0)==(e|0)){q=f;break}else{g=k?j:g;i=i+32|0}}}else{f=0;i=0;j=z;g=0;while(1){h=c[j+28>>2]|0;if((h|0)>(f|0)){x=(c[j+24>>2]|0)>0;g=x?j:g;f=x?h:f}i=i+1|0;if((i|0)==(e|0)){q=g;break}else j=j+32|0}}if(!q)break a;r=z+(e<<5)|0;g=q+4|0;c[z+(e<<5)+4>>2]=c[g>>2];h=q+12|0;c[z+(e<<5)+12>>2]=c[h>>2];i=q+20|0;c[z+(e<<5)+20>>2]=c[i>>2];c[r>>2]=c[q>>2];n=q+8|0;f=z+(e<<5)+8|0;c[f>>2]=c[n>>2];p=q+16|0;j=z+(e<<5)+16|0;c[j>>2]=c[p>>2];k=c[g>>2]|0;l=c[q>>2]|0;v=k-l<<4;m=c[h>>2]|0;n=c[n>>2]|0;w=(m-n|0)*12|0;o=c[i>>2]|0;p=c[p>>2]|0;x=(v|0)>(w|0);switch(((o-p<<3|0)>((x?v:w)|0)?2:(x^1)&1)&3){case 0:{t=(l+k|0)/2|0;c[g>>2]=t;f=r;g=t;t=15;break}case 1:{g=(n+m|0)/2|0;c[h>>2]=g;t=15;break}case 2:{g=(p+o|0)/2|0;c[i>>2]=g;f=j;t=15;break}default:{}}if((t|0)==15){t=0;c[f>>2]=g+1}nw(d,q);nw(d,r);e=e+1|0;if((e|0)>=(s|0))break a}}else e=1;while(0);x=0;do{r=c[(c[y>>2]|0)+24>>2]|0;j=c[z+(x<<5)>>2]|0;s=c[z+(x<<5)+4>>2]|0;t=c[z+(x<<5)+8>>2]|0;u=c[z+(x<<5)+12>>2]|0;v=c[z+(x<<5)+16>>2]|0;w=c[z+(x<<5)+20>>2]|0;if((j|0)>(s|0)|(t|0)>(u|0)|(v|0)>(w|0)){i=0;h=0;g=0;f=0}else{i=0;h=0;g=0;f=0;while(1){p=c[r+(j<<2)>>2]|0;q=j<<3|4;o=t;while(1){n=o<<2|2;l=p+(o<<6)+(v<<1)|0;m=v;while(1){D=b[l>>1]|0;k=D&65535;if(D<<16>>16){i=(B(m<<3|4,k)|0)+i|0;h=(B(n,k)|0)+h|0;g=(B(q,k)|0)+g|0;f=f+k|0}if((m|0)<(w|0)){l=l+2|0;m=m+1|0}else break}if((o|0)<(u|0))o=o+1|0;else break}if((j|0)<(s|0))j=j+1|0;else break}}D=f>>1;a[(c[c[C>>2]>>2]|0)+x>>0]=(g+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+x>>0]=(h+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+x>>0]=(i+D|0)/(f|0)|0;x=x+1|0}while((x|0)<(e|0));c[d+132>>2]=e;D=c[d>>2]|0;c[D+20>>2]=98;c[D+24>>2]=e;Ub[c[(c[d>>2]|0)+4>>2]&63](d,1);c[A+28>>2]=1;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;i=c[e+484>>2]|0;U=c[i+24>>2]|0;V=c[e+112>>2]|0;O=c[e+336>>2]|0;P=c[i+40>>2]|0;S=c[e+136>>2]|0;Q=c[S>>2]|0;R=c[S+4>>2]|0;S=c[S+8>>2]|0;if((h|0)<=0)return;T=i+36|0;J=i+32|0;K=(V|0)==0;L=V+-1|0;M=L*3|0;N=(V*3|0)+3|0;I=0;do{k=c[f+(I<<2)>>2]|0;j=c[g+(I<<2)>>2]|0;if(!(c[T>>2]|0)){F=3;G=1;i=c[J>>2]|0;l=1}else{F=-3;G=-1;i=(c[J>>2]|0)+(N<<1)|0;j=j+L|0;k=k+M|0;l=0}c[T>>2]=l;if(K){l=0;k=0;j=0}else{A=F+1|0;C=F+2|0;H=B(V,F)|0;p=0;q=0;w=0;x=0;y=0;l=0;D=0;E=0;z=V;m=0;u=i;while(1){v=u;u=u+(F<<1)|0;r=d[O+((c[P+(m+8+(b[u>>1]|0)>>4<<2)>>2]|0)+(d[k>>0]|0))>>0]|0;s=d[O+((c[P+(p+8+(b[v+(A<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0;t=d[O+((c[P+(q+8+(b[v+(C<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0;n=r>>>3;o=s>>>2;p=t>>>3;q=(c[U+(n<<2)>>2]|0)+(o<<6)+(p<<1)|0;m=b[q>>1]|0;if(!(m<<16>>16)){mw(e,n,o,p);m=b[q>>1]|0}m=(m&65535)+-1|0;a[j>>0]=m;o=r-(d[Q+m>>0]|0)|0;n=s-(d[R+m>>0]|0)|0;m=t-(d[S+m>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+w|0;b[v+2>>1]=(n*3|0)+D;D=(n*5|0)+x|0;b[v+4>>1]=(m*3|0)+E;E=(m*5|0)+y|0;z=z+-1|0;if(!z)break;else{p=n*7|0;q=m*7|0;w=o;x=n;y=m;m=o*7|0;j=j+G|0;k=k+F|0}}k=D;j=E;i=i+(H<<1)|0}b[i>>1]=l;b[i+2>>1]=k;b[i+4>>1]=j;I=I+1|0}while((I|0)!=(h|0));return}function kw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[(c[e+484>>2]|0)+24>>2]|0;s=c[e+112>>2]|0;if((h|0)<1|(s|0)==0)return;o=0;do{n=s;p=c[g+(o<<2)>>2]|0;q=c[f+(o<<2)>>2]|0;while(1){j=(d[q>>0]|0)>>>3;k=(d[q+1>>0]|0)>>>2;l=(d[q+2>>0]|0)>>>3;m=(c[r+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){mw(e,j,k,l);i=b[m>>1]|0}a[p>>0]=(i&65535)+255;n=n+-1|0;if(!n)break;else{p=p+1|0;q=q+3|0}}o=o+1|0}while((o|0)!=(h|0));return}function lw(a){a=a|0;return}function mw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=zb;zb=zb+1408|0;K=N+384|0;L=N+128|0;i=N;M=c[(c[e+484>>2]|0)+24>>2]|0;n=f>>>2<<5;H=n|4;p=g>>>3<<5;I=p|2;r=h>>>2<<5;J=r|4;x=c[e+132>>2]|0;n=n|28;o=n+H>>1;p=p|30;q=p+I>>1;r=r|28;s=r+J>>1;if((x|0)>0){v=c[e+136>>2]|0;t=c[v>>2]|0;u=c[v+4>>2]|0;v=c[v+8>>2]|0;w=2147483647;m=0;do{j=d[t+m>>0]|0;do if((H|0)<=(j|0)){if((n|0)<(j|0)){G=j-n<<1;l=j-H<<1;l=B(l,l)|0;j=B(G,G)|0;break}if((o|0)<(j|0)){l=j-H<<1;l=B(l,l)|0;j=0;break}else{l=j-n<<1;l=B(l,l)|0;j=0;break}}else{G=j-H<<1;l=j-n<<1;l=B(l,l)|0;j=B(G,G)|0}while(0);k=d[u+m>>0]|0;do if((I|0)<=(k|0)){if((p|0)<(k|0)){G=(k-p|0)*3|0;k=(k-I|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((q|0)<(k|0)){k=(k-I|0)*3|0;k=B(k,k)|0;break}else{k=(k-p|0)*3|0;k=B(k,k)|0;break}}else{G=(k-I|0)*3|0;k=(k-p|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);l=k+l|0;k=d[v+m>>0]|0;do if((J|0)<=(k|0)){if((r|0)<(k|0)){G=k-r|0;k=k-J|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((s|0)<(k|0)){k=k-J|0;k=B(k,k)|0;break}else{k=k-r|0;k=B(k,k)|0;break}}else{G=k-J|0;k=k-r|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);G=l+k|0;c[K+(m<<2)>>2]=j;w=(G|0)<(w|0)?G:w;m=m+1|0}while((m|0)!=(x|0));j=0;k=0;do{if((c[K+(k<<2)>>2]|0)<=(w|0)){a[L+j>>0]=k;j=j+1|0}k=k+1|0}while((k|0)!=(x|0))}else j=0;c[K>>2]=2147483647;c[K+4>>2]=2147483647;c[K+8>>2]=2147483647;c[K+12>>2]=2147483647;c[K+16>>2]=2147483647;c[K+20>>2]=2147483647;c[K+24>>2]=2147483647;c[K+28>>2]=2147483647;c[K+32>>2]=2147483647;c[K+36>>2]=2147483647;c[K+40>>2]=2147483647;c[K+44>>2]=2147483647;c[K+48>>2]=2147483647;c[K+52>>2]=2147483647;c[K+56>>2]=2147483647;c[K+60>>2]=2147483647;c[K+64>>2]=2147483647;c[K+68>>2]=2147483647;c[K+72>>2]=2147483647;c[K+76>>2]=2147483647;c[K+80>>2]=2147483647;c[K+84>>2]=2147483647;c[K+88>>2]=2147483647;c[K+92>>2]=2147483647;c[K+96>>2]=2147483647;c[K+100>>2]=2147483647;c[K+104>>2]=2147483647;c[K+108>>2]=2147483647;c[K+112>>2]=2147483647;c[K+116>>2]=2147483647;c[K+120>>2]=2147483647;c[K+124>>2]=2147483647;c[K+128>>2]=2147483647;c[K+132>>2]=2147483647;c[K+136>>2]=2147483647;c[K+140>>2]=2147483647;c[K+144>>2]=2147483647;c[K+148>>2]=2147483647;c[K+152>>2]=2147483647;c[K+156>>2]=2147483647;c[K+160>>2]=2147483647;c[K+164>>2]=2147483647;c[K+168>>2]=2147483647;c[K+172>>2]=2147483647;c[K+176>>2]=2147483647;c[K+180>>2]=2147483647;c[K+184>>2]=2147483647;c[K+188>>2]=2147483647;c[K+192>>2]=2147483647;c[K+196>>2]=2147483647;c[K+200>>2]=2147483647;c[K+204>>2]=2147483647;c[K+208>>2]=2147483647;c[K+212>>2]=2147483647;c[K+216>>2]=2147483647;c[K+220>>2]=2147483647;c[K+224>>2]=2147483647;c[K+228>>2]=2147483647;c[K+232>>2]=2147483647;c[K+236>>2]=2147483647;c[K+240>>2]=2147483647;c[K+244>>2]=2147483647;c[K+248>>2]=2147483647;c[K+252>>2]=2147483647;c[K+256>>2]=2147483647;c[K+260>>2]=2147483647;c[K+264>>2]=2147483647;c[K+268>>2]=2147483647;c[K+272>>2]=2147483647;c[K+276>>2]=2147483647;c[K+280>>2]=2147483647;c[K+284>>2]=2147483647;c[K+288>>2]=2147483647;c[K+292>>2]=2147483647;c[K+296>>2]=2147483647;c[K+300>>2]=2147483647;c[K+304>>2]=2147483647;c[K+308>>2]=2147483647;c[K+312>>2]=2147483647;c[K+316>>2]=2147483647;c[K+320>>2]=2147483647;c[K+324>>2]=2147483647;c[K+328>>2]=2147483647;c[K+332>>2]=2147483647;c[K+336>>2]=2147483647;c[K+340>>2]=2147483647;c[K+344>>2]=2147483647;c[K+348>>2]=2147483647;c[K+352>>2]=2147483647;c[K+356>>2]=2147483647;c[K+360>>2]=2147483647;c[K+364>>2]=2147483647;c[K+368>>2]=2147483647;c[K+372>>2]=2147483647;c[K+376>>2]=2147483647;c[K+380>>2]=2147483647;c[K+384>>2]=2147483647;c[K+388>>2]=2147483647;c[K+392>>2]=2147483647;c[K+396>>2]=2147483647;c[K+400>>2]=2147483647;c[K+404>>2]=2147483647;c[K+408>>2]=2147483647;c[K+412>>2]=2147483647;c[K+416>>2]=2147483647;c[K+420>>2]=2147483647;c[K+424>>2]=2147483647;c[K+428>>2]=2147483647;c[K+432>>2]=2147483647;c[K+436>>2]=2147483647;c[K+440>>2]=2147483647;c[K+444>>2]=2147483647;c[K+448>>2]=2147483647;c[K+452>>2]=2147483647;c[K+456>>2]=2147483647;c[K+460>>2]=2147483647;c[K+464>>2]=2147483647;c[K+468>>2]=2147483647;c[K+472>>2]=2147483647;c[K+476>>2]=2147483647;c[K+480>>2]=2147483647;c[K+484>>2]=2147483647;c[K+488>>2]=2147483647;c[K+492>>2]=2147483647;c[K+496>>2]=2147483647;c[K+500>>2]=2147483647;c[K+504>>2]=2147483647;c[K+508>>2]=2147483647;if((j|0)>0){v=e+136|0;u=0;do{w=a[L+u>>0]|0;r=w&255;x=c[v>>2]|0;q=H-(d[(c[x>>2]|0)+r>>0]|0)|0;s=q<<1;s=B(s,s)|0;G=I-(d[(c[x+4>>2]|0)+r>>0]|0)|0;z=G*3|0;s=(B(z,z)|0)+s|0;r=J-(d[(c[x+8>>2]|0)+r>>0]|0)|0;G=G*72|0;x=G+144|0;z=r<<4;e=z+64|0;y=z+192|0;z=z+320|0;A=G+432|0;C=G+720|0;D=G+1008|0;E=G+1296|0;F=G+1584|0;G=G+1872|0;p=3;q=(q<<6)+256|0;r=s+(B(r,r)|0)|0;s=i;t=K;while(1){n=t+16|0;if((r|0)<(c[t>>2]|0)){c[t>>2]=r;a[s>>0]=w}k=r+e|0;l=t+4|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+1>>0]=w}k=k+y|0;l=t+8|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+2>>0]=w}k=k+z|0;l=t+12|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+3>>0]=w}m=x+r|0;o=t+32|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+4>>0]=w}k=m+e|0;l=t+20|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+5>>0]=w}k=k+y|0;l=t+24|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+6>>0]=w}k=k+z|0;l=t+28|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+7>>0]=w}m=A+m|0;n=t+48|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+8>>0]=w}k=m+e|0;l=t+36|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+9>>0]=w}k=k+y|0;l=t+40|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+10>>0]=w}k=k+z|0;l=t+44|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+11>>0]=w}m=C+m|0;o=t+64|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+12>>0]=w}k=m+e|0;l=t+52|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+13>>0]=w}k=k+y|0;l=t+56|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+14>>0]=w}k=k+z|0;l=t+60|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+15>>0]=w}m=D+m|0;n=t+80|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+16>>0]=w}k=m+e|0;l=t+68|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+17>>0]=w}k=k+y|0;l=t+72|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+18>>0]=w}k=k+z|0;l=t+76|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+19>>0]=w}m=E+m|0;o=t+96|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+20>>0]=w}k=m+e|0;l=t+84|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+21>>0]=w}k=k+y|0;l=t+88|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+22>>0]=w}k=k+z|0;l=t+92|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+23>>0]=w}m=F+m|0;n=t+112|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+24>>0]=w}k=m+e|0;l=t+100|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+25>>0]=w}k=k+y|0;l=t+104|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+26>>0]=w}k=k+z|0;l=t+108|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+27>>0]=w}k=G+m|0;if((k|0)<(c[n>>2]|0)){c[n>>2]=k;a[s+28>>0]=w}k=k+e|0;l=t+116|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+29>>0]=w}k=k+y|0;l=t+120|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+30>>0]=w}k=k+z|0;l=t+124|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+31>>0]=w}r=r+q|0;if(!p)break;else{p=p+-1|0;q=q+512|0;s=s+32|0;t=t+128|0}}u=u+1|0}while((u|0)!=(j|0))}s=f&-4;t=g&-8;l=h&-4;m=t|1;n=t|2;o=t|3;p=t|4;q=t|5;r=t|6;k=g|7;j=0;while(1){g=M+(j+s<<2)|0;h=c[g>>2]|0;L=h+(t<<6)+(l<<1)|0;b[L>>1]=(d[i>>0]|0)+1;b[L+2>>1]=(d[i+1>>0]|0)+1;b[L+4>>1]=(d[i+2>>0]|0)+1;b[L+6>>1]=(d[i+3>>0]|0)+1;L=h+(m<<6)+(l<<1)|0;b[L>>1]=(d[i+4>>0]|0)+1;b[L+2>>1]=(d[i+5>>0]|0)+1;b[L+4>>1]=(d[i+6>>0]|0)+1;b[L+6>>1]=(d[i+7>>0]|0)+1;L=h+(n<<6)+(l<<1)|0;b[L>>1]=(d[i+8>>0]|0)+1;b[L+2>>1]=(d[i+9>>0]|0)+1;b[L+4>>1]=(d[i+10>>0]|0)+1;b[L+6>>1]=(d[i+11>>0]|0)+1;h=h+(o<<6)+(l<<1)|0;b[h>>1]=(d[i+12>>0]|0)+1;b[h+2>>1]=(d[i+13>>0]|0)+1;b[h+4>>1]=(d[i+14>>0]|0)+1;b[h+6>>1]=(d[i+15>>0]|0)+1;g=c[g>>2]|0;h=g+(p<<6)+(l<<1)|0;b[h>>1]=(d[i+16>>0]|0)+1;b[h+2>>1]=(d[i+17>>0]|0)+1;b[h+4>>1]=(d[i+18>>0]|0)+1;b[h+6>>1]=(d[i+19>>0]|0)+1;h=g+(q<<6)+(l<<1)|0;b[h>>1]=(d[i+20>>0]|0)+1;b[h+2>>1]=(d[i+21>>0]|0)+1;b[h+4>>1]=(d[i+22>>0]|0)+1;b[h+6>>1]=(d[i+23>>0]|0)+1;h=g+(r<<6)+(l<<1)|0;b[h>>1]=(d[i+24>>0]|0)+1;b[h+2>>1]=(d[i+25>>0]|0)+1;b[h+4>>1]=(d[i+26>>0]|0)+1;b[h+6>>1]=(d[i+27>>0]|0)+1;g=g+(k<<6)+(l<<1)|0;b[g>>1]=(d[i+28>>0]|0)+1;b[g+2>>1]=(d[i+29>>0]|0)+1;b[g+4>>1]=(d[i+30>>0]|0)+1;b[g+6>>1]=(d[i+31>>0]|0)+1;j=j+1|0;if((j|0)==4)break;else i=i+32|0}zb=N;return} +function mO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=o;if((-18-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)m=c[b>>2]|0;else m=b;if(d>>>0<2147483623){k=e+d|0;l=d<<1;k=k>>>0>>0?l:k;k=k>>>0<11?11:k+16&-16}else k=-17;l=tB(k)|0;if(g|0)VD(l,m,g)|0;if(i|0)VD(l+g|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)VD(l+g+i|0,m+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(m,e);c[b>>2]=l;c[b+8>>2]=k|-2147483648;i=f+i|0;c[b+4>>2]=i;a[n>>0]=0;bg(l+i|0,n);zb=o;return}function nO(a,b){a=a|0;b=b|0;return kO(a,b,Yf(b)|0)|0}function oO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;h=b+11|0;f=a[h>>0]|0;i=f<<24>>24<0;if(i)f=c[b+4>>2]|0;else f=f&255;do if(f>>>0>=d>>>0)if(i){i=(c[b>>2]|0)+d|0;a[g>>0]=0;bg(i,g);c[b+4>>2]=d;break}else{a[g>>0]=0;bg(b+d|0,g);a[h>>0]=d;break}else pO(b,d-f|0,e)|0;while(0);zb=j;return}function pO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;if(d|0){j=b+11|0;f=a[j>>0]|0;if(f<<24>>24<0){h=c[b+4>>2]|0;g=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;g=10}if((g-h|0)>>>0>>0){qO(b,g,h+d-g|0,h,h,0,0);f=a[j>>0]|0}if(f<<24>>24<0)g=c[b>>2]|0;else g=b;iO(g+h|0,d,e)|0;f=h+d|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}zb=k;return b|0}function qO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<2147483623){j=e+d|0;k=d<<1;j=j>>>0>>0?k:j;j=j>>>0<11?11:j+16&-16}else j=-17;k=tB(j)|0;if(g|0)VD(k,l,g)|0;e=f-h-g|0;if(e|0)VD(k+g+i|0,l+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(l,e);c[b>>2]=k;c[b+8>>2]=j|-2147483648;return}function rO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g){h=c[b+4>>2]|0;f=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;f=10}if((f-h|0)>>>0>=e>>>0){if(e|0){if(g)g=c[b>>2]|0;else g=b;VD(g+h|0,d,e)|0;f=h+e|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}}else mO(b,f,h+e-f|0,h,h,0,e,d);zb=k;return b|0}function sO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;h=j;i=j+1|0;a[h>>0]=d;g=b+11|0;d=a[g>>0]|0;e=d<<24>>24<0;if(e){f=c[b+4>>2]|0;d=(c[b+8>>2]&2147483647)+-1|0}else{f=d&255;d=10}if((f|0)==(d|0)){qO(b,d,1,d,d,0,0);if((a[g>>0]|0)<0)e=8;else e=7}else if(e)e=8;else e=7;if((e|0)==7){a[g>>0]=f+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=f+1}b=d+f|0;bg(b,h);a[i>>0]=0;bg(b+1|0,i);zb=j;return}function tO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(e>>>0>1073741807)eO(b);do if(e>>>0>=2){g=e+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=e;break}}else{a[b+8+3>>0]=e;f=b}while(0);kE(f,d,e)|0;c[h>>2]=0;JF(f+(e<<2)|0,h);zb=i;return}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(d>>>0>1073741807)eO(b);do if(d>>>0>=2){g=d+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=d;break}}else{a[b+8+3>>0]=d;f=b}while(0);vO(f,d,e)|0;c[h>>2]=0;JF(f+(d<<2)|0,h);zb=i;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;if(b)uA(a,c,b)|0;return a|0}function wO(b){b=b|0;var d=0;d=b+8|0;if((a[d+3>>0]|0)<0)Pf(c[b>>2]|0,c[d>>2]<<2);return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;f=b+8|0;k=f+3|0;h=a[k>>0]|0;i=h<<24>>24<0;if(i)g=(c[f>>2]&2147483647)+-1|0;else g=1;do if(g>>>0>=e>>>0){if(i)f=c[b>>2]|0;else f=b;yO(f,d,e)|0;c[j>>2]=0;JF(f+(e<<2)|0,j);if((a[k>>0]|0)<0){c[b+4>>2]=e;break}else{a[k>>0]=e;break}}else{if(i)f=c[b+4>>2]|0;else f=h&255;zO(b,g,e-g|0,f,0,f,e,d)}while(0);zb=l;return b|0}function yO(a,b,c){a=a|0;b=b|0;c=c|0;if(c)vA(a,b,c)|0;return a|0}function zO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=p;if((1073741806-d|0)>>>0>>0)eO(b);l=b+8|0;if((a[l+3>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else m=e}else m=1073741807;k=tB(m<<2)|0;if(g|0)kE(k,n,g)|0;if(i|0)kE(k+(g<<2)|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)kE(k+(g<<2)+(i<<2)|0,n+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(n,e<<2);c[b>>2]=k;c[l>>2]=m|-2147483648;i=f+i|0;c[b+4>>2]=i;c[o>>2]=0;JF(k+(i<<2)|0,o);zb=p;return}function AO(a,b){a=a|0;b=b|0;return xO(a,b,JI(b)|0)|0}function BO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((1073741807-d|0)>>>0>>0)eO(b);m=b+8|0;if((a[m+3>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<536870887){e=e+d|0;j=d<<1;e=e>>>0>>0?j:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else k=e}else k=1073741807;j=tB(k<<2)|0;if(g|0)kE(j,l,g)|0;e=f-h-g|0;if(e|0)kE(j+(g<<2)+(i<<2)|0,l+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(l,e<<2);c[b>>2]=j;c[m>>2]=k|-2147483648;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;g=b+8|0;k=g+3|0;f=a[k>>0]|0;i=f<<24>>24<0;if(i){h=c[b+4>>2]|0;f=(c[g>>2]&2147483647)+-1|0}else{h=f&255;f=1}if((f-h|0)>>>0>=e>>>0){if(e|0){if(i)g=c[b>>2]|0;else g=b;kE(g+(h<<2)|0,d,e)|0;f=h+e|0;if((a[k>>0]|0)<0)c[b+4>>2]=f;else a[k>>0]=f;c[j>>2]=0;JF(g+(f<<2)|0,j)}}else zO(b,f,h+e-f|0,h,h,0,e,d);zb=l;return b|0}function DO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=k+4|0;c[i>>2]=d;e=b+8|0;h=e+3|0;d=a[h>>0]|0;f=d<<24>>24<0;if(f){g=c[b+4>>2]|0;d=(c[e>>2]&2147483647)+-1|0}else{g=d&255;d=1}if((g|0)==(d|0)){BO(b,d,1,d,d,0,0);if((a[h>>0]|0)<0)e=8;else e=7}else if(f)e=8;else e=7;if((e|0)==7){a[h>>0]=g+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=g+1}b=d+(g<<2)|0;JF(b,i);c[j>>2]=0;JF(b+4|0,j);zb=k;return}function EO(a){a=a|0;ua()}function FO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14291]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=57204+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14291]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;zb=w;return v|0}l=c[14293]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=57204+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=h;c[14296]=f;v=i;zb=w;return v|0}g=c[14292]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[57468+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14292]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=j;c[14296]=h}v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14292]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[57468+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[57468+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14293]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=57468+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=57468+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14293]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14296]|0;if(b>>>0>15){v=a+m|0;c[14296]=v;c[14293]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14293]=0;c[14296]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;zb=w;return v|0}h=c[14294]|0;if(h>>>0>m>>>0){t=h-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}if(!(c[14409]|0)){c[14411]=4096;c[14410]=4096;c[14412]=-1;c[14413]=-1;c[14414]=0;c[14402]=0;c[14409]=n&-16^1431655768;a=4096}else a=c[14411]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;zb=w;return v|0}a=c[14401]|0;if(a|0?(l=c[14399]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;zb=w;return v|0}d:do if(!(c[14402]&4)){d=c[14297]|0;e:do if(d){e=57612;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=LO(b)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=LO(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14410]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14399]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14401]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=LO(b)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14411]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((LO(a)|0)==(-1|0)){LO(d)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14402]=c[14402]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=LO(k)|0,p=LO(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

      >>0){o=(1<>>x;r=0;t=w;do{B=c[t>>2]|0;c[t>>2]=(B>>>x)+r;r=$(B&o,s)|0;t=t+4|0}while(t>>>0

      >>0);o=(c[w>>2]|0)==0?w+4|0:w;if(!r){r=o;break}c[p>>2]=r;r=o;p=p+4|0}else r=(c[w>>2]|0)==0?w+4|0:w;while(0);o=z?F:r;p=(p-o>>2|0)>(y|0)?o+(y<<2)|0:p;o=(c[ea>>2]|0)+x|0;c[ea>>2]=o;if((o|0)>=0){w=r;break}else w=r}}else w=r;do if(w>>>0

      >>0){o=(E-w>>2)*9|0;s=c[w>>2]|0;if(s>>>0<10)break;else r=10;do{r=r*10|0;o=o+1|0}while(s>>>0>=r>>>0)}else o=0;while(0);A=(C|0)==103;B=(n|0)!=0;r=n-((C|0)!=102?o:0)+((B&A)<<31>>31)|0;if((r|0)<(((p-E>>2)*9|0)+-9|0)){t=r+9216|0;z=(t|0)/9|0;r=F+(z+-1023<<2)|0;t=((t|0)%9|0)+1|0;if((t|0)<9){s=10;do{s=s*10|0;t=t+1|0}while((t|0)!=9)}else s=10;x=c[r>>2]|0;y=(x>>>0)%(s>>>0)|0;if((y|0)==0?(F+(z+-1022<<2)|0)==(p|0):0)s=w;else L=163;do if((L|0)==163){L=0;v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;t=(s|0)/2|0;do if(y>>>0>>0)q=.5;else{if((y|0)==(t|0)?(F+(z+-1022<<2)|0)==(p|0):0){q=1.0;break}q=1.5}while(0);do if(G){if((a[H>>0]|0)!=45)break;v=-v;q=-q}while(0);t=x-y|0;c[r>>2]=t;if(!(v+q!=v)){s=w;break}C=t+s|0;c[r>>2]=C;if(C>>>0>999999999){o=w;while(1){s=r+-4|0;c[r>>2]=0;if(s>>>0>>0){o=o+-4|0;c[o>>2]=0}C=(c[s>>2]|0)+1|0;c[s>>2]=C;if(C>>>0>999999999)r=s;else{w=o;r=s;break}}}o=(E-w>>2)*9|0;t=c[w>>2]|0;if(t>>>0<10){s=w;break}else s=10;do{s=s*10|0;o=o+1|0}while(t>>>0>=s>>>0);s=w}while(0);C=r+4|0;w=s;p=p>>>0>C>>>0?C:p}y=0-o|0;while(1){if(p>>>0<=w>>>0){z=0;C=p;break}r=p+-4|0;if(!(c[r>>2]|0))p=r;else{z=1;C=p;break}}do if(A){n=(B&1^1)+n|0;if((n|0)>(o|0)&(o|0)>-5){u=u+-1|0;n=n+-1-o|0}else{u=u+-2|0;n=n+-1|0}p=I&8;if(p)break;do if(z){p=c[C+-4>>2]|0;if(!p){r=9;break}if(!((p>>>0)%10|0)){s=10;r=0}else{r=0;break}do{s=s*10|0;r=r+1|0}while(((p>>>0)%(s>>>0)|0|0)==0)}else r=9;while(0);p=((C-E>>2)*9|0)+-9|0;if((u|32|0)==102){p=p-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}else{p=p+o-r|0;p=(p|0)<0?0:p;n=(n|0)<(p|0)?n:p;p=0;break}}else p=I&8;while(0);x=n|p;s=(x|0)!=0&1;t=(u|32|0)==102;if(t){o=(o|0)>0?o:0;u=0}else{r=(o|0)<0?y:o;r=Sj(r,((r|0)<0)<<31>>31,X)|0;if((_-r|0)<2)do{r=r+-1|0;a[r>>0]=48}while((_-r|0)<2);a[r+-1>>0]=(o>>31&2)+43;E=r+-2|0;a[E>>0]=u;o=_-E|0;u=E}y=G+1+n+s+o|0;Tj(e,32,K,y,I);if(!(c[e>>2]&32))hj(H,G,e)|0;Tj(e,48,K,y,I^65536);do if(t){r=w>>>0>F>>>0?F:w;o=r;do{p=Sj(c[o>>2]|0,0,R)|0;do if((o|0)==(r|0)){if((p|0)!=(R|0))break;a[T>>0]=48;p=T}else{if(p>>>0<=da>>>0)break;do{p=p+-1|0;a[p>>0]=48}while(p>>>0>da>>>0)}while(0);if(!(c[e>>2]&32))hj(p,S-p|0,e)|0;o=o+4|0}while(o>>>0<=F>>>0);do if(x){if(c[e>>2]&32)break;hj(16485,1,e)|0}while(0);if((n|0)>0&o>>>0>>0){p=o;while(1){o=Sj(c[p>>2]|0,0,R)|0;if(o>>>0>da>>>0)do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0);if(!(c[e>>2]&32))hj(o,(n|0)>9?9:n,e)|0;p=p+4|0;o=n+-9|0;if(!((n|0)>9&p>>>0>>0)){n=o;break}else n=o}}Tj(e,48,n+9|0,9,0)}else{t=z?C:w+4|0;if((n|0)>-1){s=(p|0)==0;r=w;do{o=Sj(c[r>>2]|0,0,R)|0;if((o|0)==(R|0)){a[T>>0]=48;o=T}do if((r|0)==(w|0)){p=o+1|0;if(!(c[e>>2]&32))hj(o,1,e)|0;if(s&(n|0)<1){o=p;break}if(c[e>>2]&32){o=p;break}hj(16485,1,e)|0;o=p}else{if(o>>>0<=da>>>0)break;do{o=o+-1|0;a[o>>0]=48}while(o>>>0>da>>>0)}while(0);p=S-o|0;if(!(c[e>>2]&32))hj(o,(n|0)>(p|0)?p:n,e)|0;n=n-p|0;r=r+4|0}while(r>>>0>>0&(n|0)>-1)}Tj(e,48,n+18|0,18,0);if(c[e>>2]&32)break;hj(u,_-u|0,e)|0}while(0);Tj(e,32,K,y,I^8192);n=(y|0)<(K|0)?K:y}else{t=(u&32|0)!=0;s=q!=q|0.0!=0.0;o=s?0:G;r=o+3|0;Tj(e,32,K,r,p);n=c[e>>2]|0;if(!(n&32)){hj(H,o,e)|0;n=c[e>>2]|0}if(!(n&32))hj(s?(t?16477:16481):t?16469:16473,3,e)|0;Tj(e,32,K,r,I^8192);n=(r|0)<(K|0)?K:r}while(0);w=J;continue a}default:{p=I;o=r;t=0;u=16433;n=N}}while(0);g:do if((L|0)==64){p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;s=u&32;if(!((o|0)==0&(p|0)==0)){n=N;do{n=n+-1|0;a[n>>0]=d[16417+(o&15)>>0]|s;o=hk(o|0,p|0,4)|0;p=D}while(!((o|0)==0&(p|0)==0));L=ba;if((t&8|0)==0|(c[L>>2]|0)==0&(c[L+4>>2]|0)==0){o=t;t=0;s=16433;L=77}else{o=t;t=2;s=16433+(u>>4)|0;L=77}}else{n=N;o=t;t=0;s=16433;L=77}}else if((L|0)==76){n=Sj(n,o,N)|0;o=I;t=p;L=77}else if((L|0)==82){L=0;I=sj(n,0,r)|0;H=(I|0)==0;w=n;o=H?r:I-n|0;t=0;u=16433;n=H?n+r|0:I}else if((L|0)==86){L=0;o=0;n=0;s=c[ba>>2]|0;while(1){p=c[s>>2]|0;if(!p)break;n=Ii(fa,p)|0;if((n|0)<0|n>>>0>(r-o|0)>>>0)break;o=n+o|0;if(r>>>0>o>>>0)s=s+4|0;else break}if((n|0)<0){m=-1;break a}Tj(e,32,K,o,I);if(!o){n=0;L=98}else{p=0;r=c[ba>>2]|0;while(1){n=c[r>>2]|0;if(!n){n=o;L=98;break g}n=Ii(fa,n)|0;p=n+p|0;if((p|0)>(o|0)){n=o;L=98;break g}if(!(c[e>>2]&32))hj(fa,n,e)|0;if(p>>>0>=o>>>0){n=o;L=98;break}else r=r+4|0}}}while(0);if((L|0)==98){L=0;Tj(e,32,K,n,I^8192);w=J;n=(K|0)>(n|0)?K:n;continue}if((L|0)==77){L=0;p=(r|0)>-1?o&-65537:o;o=ba;o=(c[o>>2]|0)!=0|(c[o+4>>2]|0)!=0;if((r|0)!=0|o){o=(o&1^1)+(U-n)|0;w=n;o=(r|0)>(o|0)?r:o;u=s;n=N}else{w=N;o=0;u=s;n=N}}s=n-w|0;o=(o|0)<(s|0)?s:o;r=t+o|0;n=(K|0)<(r|0)?r:K;Tj(e,32,n,r,p);if(!(c[e>>2]&32))hj(u,t,e)|0;Tj(e,48,n,r,p^65536);Tj(e,48,o,s,0);if(!(c[e>>2]&32))hj(w,s,e)|0;Tj(e,32,n,r,p^8192);w=J}h:do if((L|0)==245)if(!e)if(f){m=1;while(1){f=c[l+(m<<2)>>2]|0;if(!f)break;Rj(j+(m<<3)|0,f,g);m=m+1|0;if((m|0)>=10){m=1;break h}}if((m|0)<10)while(1){if(c[l+(m<<2)>>2]|0){m=-1;break h}m=m+1|0;if((m|0)>=10){m=1;break}}else m=1}else m=0;while(0);i=ha;return m|0}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;return Si(a,b,c)|0}function Nj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((cc[d&15](k,j)|0)>-1?(cc[d&15](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((cc[d&15](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1;while(0);Pj(b,o,e);i=p;return}function Oj(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(cc[d&15](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((cc[d&15](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((cc[d&15](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((cc[d&15](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){Pj(b,p,e);Nj(a,b,d,g,h)}i=r;return}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;ik(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;ik(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}while(0);i=h;return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;ik(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function Sj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295)while(1){e=qk(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e|48;e=pk(b|0,c|0,10,0)|0;if(c>>>0>9|(c|0)==9&b>>>0>4294967295){b=e;c=D}else{b=e;break}}if(b)while(1){d=d+-1|0;a[d>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return d|0}function Tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+256|0;h=j;do if((d|0)>(e|0)&(f&73728|0)==0){f=d-e|0;ek(h|0,b|0,(f>>>0>256?256:f)|0)|0;b=c[a>>2]|0;g=(b&32|0)==0;if(f>>>0>255){e=d-e|0;do{if(g){hj(h,256,a)|0;b=c[a>>2]|0}f=f+-256|0;g=(b&32|0)==0}while(f>>>0>255);if(g)f=e&255;else break}else if(!g)break;hj(h,f,a)|0}while(0);i=j;return}function Uj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[756]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[760]|0)>>>0)Da();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Da()}else c[756]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[758]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=3064+(e<<2)|0;e=3064+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[760]|0)>>>0)Da();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[758]|0;break}else Da()}else{c[756]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[761]|0;d=k>>>3;b=d<<1;e=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(b>>>0<(c[760]|0)>>>0)Da();else{l=a;m=b}}else{c[756]=a|d;l=3064+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[758]=h;c[761]=i;M=j;return M|0}a=c[757]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[3328+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[760]|0;if(e>>>0>>0)Da();i=e+o|0;if(e>>>0>=i>>>0)Da();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(e|0))Da();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Da()}while(0);do if(h){b=c[e+28>>2]|0;a=3328+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[760]|0;if(n>>>0>>0)Da();c[n+24>>2]=h;b=c[e+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[758]|0;if(b){g=c[761]|0;d=b>>>3;b=d<<1;f=3064+(b<<2)|0;a=c[756]|0;d=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{p=b;q=a}}else{c[756]=a|d;p=3064+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[758]=j;c[761]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[757]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[3328+(k<<2)>>2]|0;a:do if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v;if(!j){v=86;break}else{h=d;i=i<<1}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[3328+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[758]|0)-m|0)>>>0:0){f=c[760]|0;if(j>>>0>>0)Da();h=j+m|0;if(j>>>0>=h>>>0)Da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Da();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Da();b=e+12|0;if((c[b>>2]|0)!=(j|0))Da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Da()}while(0);do if(g){b=c[j+28>>2]|0;a=3328+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[760]|0;if(o>>>0>>0)Da();c[o+24>>2]=g;b=c[j+16>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[o+16>>2]=b;c[b+24>>2]=o;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}while(0);b:do if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{s=b;t=a}}else{c[756]=d|b;s=3064+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=3328+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b;while(0);b=y+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Da()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);d=c[758]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[761]|0;if(b>>>0>15){c[761]=a+q;c[758]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[758]=0;c[761]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[759]|0;if(a>>>0>q>>>0){L=a-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(c[874]|0)){a=$a(30)|0;if(!(a+-1&a)){c[876]=a;c[875]=a;c[877]=-1;c[878]=-1;c[879]=0;c[867]=0;c[874]=(Db(0)|0)&-16^1431655768;break}else Da()}while(0);j=q+48|0;i=c[876]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[866]|0;if((a|0)!=0?(t=c[864]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(c[867]&4)){a=c[762]|0;e:do if(a){f=3472;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[759]|0)&i;if(d>>>0<2147483647){f=Ua(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){g=Ua(0)|0;if((g|0)!=(-1|0)){a=g;d=c[875]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[864]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[866]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=Ua(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){g=0-d|0;do if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[876]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((Ua(u|0)|0)==(-1|0)){Ua(g|0)|0;break f}else{d=u+d|0;break}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}while(0);c[867]=c[867]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ua(l|0)|0,x=Ua(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[864]|0)+p|0;c[864]=a;if(a>>>0>(c[865]|0)>>>0)c[865]=a;h=c[762]|0;g:do if(h){g=3472;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[759]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[762]=h+L;c[759]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[763]=c[878];break}a=c[760]|0;if(w>>>0>>0){c[760]=w;a=w}d=w+p|0;g=3472;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=3472;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do if((b|0)!=(h|0)){if((b|0)==(c[761]|0)){M=(c[758]|0)+l|0;c[758]=M;c[761]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Da();a=f+12|0;if((c[a>>2]|0)!=(b|0))Da();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Da()}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=3328+(a<<2)|0;do if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[760]|0)>>>0)Da();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[757]=c[757]&~(1<>>0>>0)Da();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Da();else{c[J+16>>2]=a;c[a+24>>2]=J;break}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[760]|0)>>>0)Da();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=3064+(g<<1<<2)|0;do if((e|0)!=(d|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)==(b|0))break;Da()}while(0);if((f|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Da()}while(0);c[e+12>>2]=f;c[F>>2]=e}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0>=(c[760]|0)>>>0){K=b;L=a;break}Da()}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=3328+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[757]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=c[b>>2]|0;L=c[760]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Da()}else{M=(c[759]|0)+l|0;c[759]=M;c[762]=o;c[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else d=3472;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[762]=w+d;c[759]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[763]=c[878];d=a+4|0;c[d>>2]=27;c[b>>2]=c[868];c[b+4>>2]=c[869];c[b+8>>2]=c[870];c[b+12>>2]=c[871];c[868]=w;c[869]=p;c[871]=0;c[870]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=3064+(a<<2)|0;d=c[756]|0;b=1<>2]|0;if(a>>>0<(c[760]|0)>>>0)Da();else{G=b;H=a}}else{c[756]=d|b;G=3064+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=3328+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[757]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[760]|0)>>>0)Da();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b;while(0);b=I+8|0;a=c[b>>2]|0;M=c[760]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Da()}}else{M=c[760]|0;if((M|0)==0|w>>>0>>0)c[760]=w;c[868]=w;c[869]=p;c[871]=0;c[765]=c[874];c[764]=-1;b=0;do{M=b<<1;L=3064+(M<<2)|0;c[3064+(M+3<<2)>>2]=L;c[3064+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[762]=w+M;c[759]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[763]=c[878]}while(0);b=c[759]|0;if(b>>>0>q>>>0){L=b-q|0;c[759]=L;M=c[762]|0;c[762]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(qi()|0)>>2]=12;M=0;return M|0}function Vj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[760]|0;if(b>>>0>>0)Da();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Da();o=d&-8;q=a+(o+-8)|0;do if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Da();if((l|0)==(c[761]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[758]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Da();if((c[e+12>>2]|0)!=(l|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0>>0)Da();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Da()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Da();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();b=f+12|0;if((c[b>>2]|0)!=(l|0))Da();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Da()}while(0);if(h){b=c[a+(j+28)>>2]|0;d=3328+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Da();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Da();if(!(d&2)){if((q|0)==(c[762]|0)){t=(c[759]|0)+g|0;c[759]=t;c[762]=u;c[u+4>>2]=t|1;if((u|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){t=(c[758]|0)+g|0;c[758]=t;c[761]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();e=d+12|0;if((c[e>>2]|0)!=(q|0))Da();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Da()}while(0);if(h){b=c[a+(o+20)>>2]|0;d=3328+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Da();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=3064+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[760]|0)>>>0)Da();if((c[e+12>>2]|0)!=(q|0))Da()}if((d|0)==(e|0)){c[756]=c[756]&~(1<>>0<(c[760]|0)>>>0)Da();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Da()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[761]|0)){c[758]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=3064+(d<<2)|0;e=c[756]|0;b=1<>2]|0;if(d>>>0<(c[760]|0)>>>0)Da();else{r=b;s=d}}else{c[756]=e|b;r=3064+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=3328+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[757]|0;e=1<>2]|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[760]|0)>>>0)Da();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[760]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Da()}else{c[757]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[764]|0)+-1|0;c[764]=u;if(!u)b=3480;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[764]=-1;return}function Wj(a,b){a=a|0;b=b|0;var d=0;if(a){d=$(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Uj(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;ek(b|0,0,d|0)|0;return b|0}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=Uj(b)|0;return a|0}if(b>>>0>4294967231){c[(qi()|0)>>2]=12;a=0;return a|0}d=Yj(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=Uj(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ik(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Vj(a);a=d;return a|0}function Yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[760]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Da();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Da();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[876]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;Zj(a+b|0,d);return a|0}if((l|0)==(c[762]|0)){d=(c[759]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[762]=a+b;c[759]=n;return a|0}if((l|0)==(c[761]|0)){e=(c[758]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[758]=d;c[761]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Da();d=f+12|0;if((c[d>>2]|0)!=(l|0))Da();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Da()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=3328+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[760]|0;if(k>>>0>>0)Da();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(l|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Da()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;Zj(a+b|0,n);return a|0}return 0}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[760]|0;if(n>>>0>>0)Da();if((n|0)==(c[761]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[758]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(n|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Da()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(n|0))Da();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Da()}while(0);if(i){d=c[a+(28-k)>>2]|0;e=3328+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[760]|0;if(l>>>0>>0)Da();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do if(e)if(e>>>0>>0)Da();else{c[l+16>>2]=e;c[e+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[760]|0;if(q>>>0>>0)Da();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[762]|0)){s=(c[759]|0)+h|0;c[759]=s;c[762]=t;c[t+4>>2]=s|1;if((t|0)!=(c[761]|0))return;c[761]=0;c[758]=0;return}if((q|0)==(c[761]|0)){s=(c[758]|0)+h|0;c[758]=s;c[761]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Da();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Da();d=g+12|0;if((c[d>>2]|0)!=(q|0))Da();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Da()}while(0);if(i){d=c[a+(b+28)>>2]|0;e=3328+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[757]=c[757]&~(1<>>0<(c[760]|0)>>>0)Da();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[760]|0;if(p>>>0>>0)Da();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Da();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[760]|0)>>>0)Da();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=3064+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Da();if((c[f+12>>2]|0)!=(q|0))Da()}if((e|0)==(f|0)){c[756]=c[756]&~(1<>>0>>0)Da();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Da()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[761]|0)){c[758]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=3064+(e<<2)|0;f=c[756]|0;d=1<>2]|0;if(e>>>0<(c[760]|0)>>>0)Da();else{r=d;s=e}}else{c[756]=f|d;r=3064+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=3328+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[757]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[760]|0)>>>0)Da();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[760]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Da();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return} +function Ee(b,e,f,j,k,l,m,n,o,p,q,r){b=b|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=+q;r=r|0;var s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;T=i;i=i+240|0;x=T+224|0;w=T+216|0;C=T+208|0;B=T+200|0;s=T+136|0;N=T+72|0;P=T;Q=T+232|0;R=T+228|0;h[s>>3]=100.0;h[s+8>>3]=100.0;h[s+16>>3]=110.0;h[s+24>>3]=100.0;h[s+32>>3]=110.0;h[s+40>>3]=110.0;h[s+48>>3]=100.0;h[s+56>>3]=110.0;h[N>>3]=+h[p>>3];h[N+8>>3]=+h[p+8>>3];h[N+16>>3]=+h[p+16>>3];h[N+24>>3]=+h[p+24>>3];h[N+32>>3]=+h[p+32>>3];h[N+40>>3]=+h[p+40>>3];h[N+48>>3]=+h[p+48>>3];h[N+56>>3]=+h[p+56>>3];He(s,N,P);A=+h[N>>3];V=+h[N+16>>3];y=A-V;J=+h[N+8>>3];U=+h[N+24>>3];u=J-U;s=~~(y*y+u*u);u=+h[N+32>>3];y=+h[N+48>>3];X=u-y;v=+h[N+40>>3];z=+h[N+56>>3];W=v-z;N=~~(X*X+W*W);u=V-u;v=U-v;t=~~(u*u+v*v);A=y-A;J=z-J;O=~~(A*A+J*J);s=~~(+(((N|0)>(s|0)?N:s)|0)*q*q);t=~~(+(((O|0)>(t|0)?O:t)|0)*q*q);if(!b){p=f;while(1)if((p|0)<(j|0)&($(p,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s,s)|0)<(t|0))s=s<<1;else break}else{p=f;while(1)if((p|0)<(j|0)&($(p<<2,p)|0)<(s|0))p=p<<1;else break;s=f;while(1)if((s|0)<(j|0)&($(s<<2,s)|0)<(t|0))s=s<<1;else break}O=(p|0)>(j|0)?j:p;M=(s|0)>(j|0)?j:s;L=(O|0)/(f|0)|0;K=(M|0)/(f|0)|0;u=(1.0-q)*.5*10.0;J=q*10.0;N=$(f,f)|0;a:do if(!e){I=N*3|0;p=Wj(I,4)|0;if(!p){Me(3,5472,B);rb(1)}do switch(n|0){case 0:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 1:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=(($(t,l)|0)+s|0)*3|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t+1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t+2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 2:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+t>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 3:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+t>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|2)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 4:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|1)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|3)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=d[k+(($(t,l)|0)+s)>>0]|0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 6:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=($(t,l)|0)+s<<2;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|3)>>0]|0);s=p+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[k+(t|2)>>0]|0);b=p+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[k+(t|1)>>0]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Z=$(t,l)|0;Y=(s&65534)+Z<<1;V=+((d[k+Y>>0]|0)+-128|0);X=+((d[k+(Y+2)>>0]|0)+-128|0);W=+((d[k+(Z+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;Z=~~(V*516.4110107421875+W)>>8;Y=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;t=~~(W+X*408.5830078125)>>8;Z=(Z|0)>0?Z:0;b=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;s=p+(b<<2)|0;c[s>>2]=((Z|0)<255?Z:255)+(c[s>>2]|0);Y=(Y|0)>0?Y:0;s=p+(b+1<<2)|0;c[s>>2]=((Y|0)<255?Y:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=p+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){t=$(t,l)|0;Y=(s&65534)+t<<1;V=+((d[k+(Y|1)>>0]|0)+-128|0);X=+((d[k+(Y+3)>>0]|0)+-128|0);W=+((d[k+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(W+V*516.4110107421875)>>8;t=~~(W-V*100.29100036621094-X*208.1199951171875)>>8;Y=~~(W+X*408.5830078125)>>8;s=(s|0)>0?s:0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=p+(Z+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);Y=(Y|0)>0?Y:0;Z=p+(Z+2<<2)|0;c[Z>>2]=((Y|0)<255?Y:255)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<3&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&28|2)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;t=d[k+(Y|1)>>0]|0;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(t<<2&248|4)+(c[b>>2]|0);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<5&224|t>>>3&24|4)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&248|4)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;Z=(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)|0)*3|0;b=p+(Z<<2)|0;c[b>>2]=(c[b>>2]|0)+((d[k+(Y|1)>>0]|0)&240|8);Y=d[k+Y>>0]|0;b=p+(Z+1<<2)|0;c[b>>2]=(Y<<4&240|8)+(c[b>>2]|0);Z=p+(Z+2<<2)|0;c[Z>>2]=(Y&240|8)+(c[Z>>2]|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}break}default:{Me(3,4615,C);S=278;break a}}while(0);t=$(K,L)|0;if(N){s=0;do{a[r+s>>0]=((c[p+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}while((s|0)<(I|0))}Vj(p);p=0}else{p=Wj(N,4)|0;if(!p){Me(3,5472,w);rb(1)}b:do if(n>>>0<2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)>0){e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=(($(t,l)|0)+s|0)*3|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y+1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y+2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0))}}else{if((n&-2|0)==2){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|1)>>0]|0)+(d[k+Y>>0]|0)+(d[k+(Y|2)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}if((n&-3|0)==4){y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break;e=(O|0)>0;x=0;while(1){v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<2;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((d[k+(Y|2)>>0]|0)+(d[k+(Y|1)>>0]|0)+(d[k+(Y|3)>>0]|0)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0;if((x|0)>=(M|0))break b}}switch(n|0){case 5:case 12:case 13:case 14:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 7:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 8:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=d[k+(($(t,l)|0)+s<<1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 9:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<3&248|4)+(I&248|4)+(I<<5&224|Y>>>3&28|2)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 10:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Y=d[k+(Y|1)>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((Y<<2&248|4)+(I&248|4)+(I<<5&224|Y>>>3&24|4)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}case 11:{y=u+100.0;z=+(M|0);A=+(O|0);B=P+48|0;C=P+56|0;n=P+64|0;D=P+8|0;E=P+16|0;F=P+24|0;G=P+32|0;H=P+40|0;j=(b|0)==1;if((M|0)<=0)break b;e=(O|0)>0;x=0;do{v=y+J*(+(x|0)+.5)/z;if(e){w=0;do{u=y+J*(+(w|0)+.5)/A;q=+h[n>>3]+(+h[B>>3]*u+v*+h[C>>3]);if(q==0.0){S=278;break a}X=(+h[E>>3]+(u*+h[P>>3]+v*+h[D>>3]))/q;g[Q>>2]=X;u=(+h[H>>3]+(u*+h[F>>3]+v*+h[G>>3]))/q;g[R>>2]=u;lf(o,X,u,Q,R)|0;u=+g[Q>>2];if(j){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+g[R>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+g[R>>2]+.5)}if((s|0)>-1?(t|0)<(m|0)&((t|0)>-1&(s|0)<(l|0)):0){Y=($(t,l)|0)+s<<1;I=d[k+Y>>0]|0;Z=p+(($((x|0)/(K|0)|0,f)|0)+((w|0)/(L|0)|0)<<2)|0;c[Z>>2]=(c[Z>>2]|0)+((((I<<4&240|8)+(I&240|8)+((d[k+(Y|1)>>0]|0)&240|8)|0)>>>0)/3|0)}w=w+1|0}while((w|0)<(O|0))}x=x+1|0}while((x|0)<(M|0));break}default:{Me(3,4615,x);S=278;break a}}}while(0);s=$(K,L)|0;if(N){t=0;do{a[r+t>>0]=((c[p+(t<<2)>>2]|0)>>>0)/(s>>>0)|0;t=t+1|0}while((t|0)<(N|0))}Vj(p);p=0}while(0);if((S|0)==278){Vj(p);p=-1}i=T;return p|0}function Fe(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;p=v+24|0;o=v+8|0;u=v;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-1}else{c[o>>2]=0;t=e+-1|0;c[o+4>>2]=$(t,e)|0;r=$(e,e)|0;c[o+8>>2]=r+-1;c[o+12>>2]=t;n=a[b+(c[o>>2]|0)>>0]|0;m=(n&255)>0?n:0;n=(n&255)<255?n:-1;s=a[b+(c[o+4>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+8>>2]|0)>>0]|0;m=(s&255)>(m&255)?s:m;n=(s&255)<(n&255)?s:n;s=a[b+(c[o+12>>2]|0)>>0]|0;m=((s&255)>(m&255)?s:m)&255;n=((s&255)<(n&255)?s:n)&255;if((m-n|0)<30){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-2;break}q=(m+n|0)>>>1;a[p>>0]=(d[b+(c[o>>2]|0)>>0]|0)>>>0>>0&1;a[p+1>>0]=(d[b+(c[o+4>>2]|0)>>0]|0)>>>0>>0&1;a[p+2>>0]=(d[b+(c[o+8>>2]|0)>>0]|0)>>>0>>0&1;a[p+3>>0]=(d[b+(c[o+12>>2]|0)>>0]|0)>>>0>>0&1;n=0;while(1){m=n+1|0;if(((a[p+n>>0]|0)==1?(a[p+((m|0)%4|0)>>0]|0)==1:0)?(a[p+((n+2|0)%4|0)>>0]|0)==0:0){m=n;n=10;break}if((m|0)<4)n=m;else{n=12;break}}if((n|0)==10)c[g>>2]=m;else if((n|0)==12?(m|0)==4:0){c[f>>2]=-1;c[g>>2]=0;h[j>>3]=-1.0;m=-3;break}if(!r)s=255;else{m=255;n=0;do{s=b+n|0;p=d[s>>0]|0;o=p-q|0;o=(o|0)<0?0-o|0:o;m=(o|0)<(m|0)?o:m;a[s>>0]=p>>>0>>0&1;n=n+1|0}while((n|0)<(r|0));s=m}switch(c[g>>2]|0){case 0:{if((e|0)>0){r=(e|0)==0;n=0;m=0;g=0;do{p=(g|0)==(t|0);q=$(g,e)|0;if(!r){o=0;do{if((o|g|0)!=0?!(p&((o|0)==0|(o|0)==(t|0))):0){n=fk(n|0,m|0,1)|0;n=(a[b+(o+q)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)!=(e|0))}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 1:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=0;do{p=(g|0)==0;q=(g|0)==(t|0);if(r){o=t;while(1){w=(o|0)==(t|0);if(!(p&w)?!(q&(w|(o|0)==0)):0){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}g=g+1|0}while((g|0)<(e|0))}else{n=0;m=0}break}case 2:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){q=(g|0)==(t|0)|(g|0)==0;p=$(g,e)|0;if(r){o=t;while(1){if(!(q&(o|0)==(t|0)|(o|g|0)==0)){n=fk(n|0,m|0,1)|0;n=(a[b+(o+p)>>0]|0)!=0|n;m=D}if((o|0)>0)o=o+-1|0;else break}}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}case 3:{if((e|0)>0){r=(e|0)>0;n=0;m=0;g=t;while(1){p=(g|0)==(t|0);q=(g|0)==0;if(r){o=0;do{if(!(p&(o|0)==0|(o|g|0)==0|q&(o|0)==(t|0))){n=fk(n|0,m|0,1)|0;n=(a[b+(($(o,e)|0)+g)>>0]|0)!=0|n;m=D}o=o+1|0}while((o|0)<(e|0))}if((g|0)>0)g=g+-1|0;else break}}else{n=0;m=0}break}default:{n=0;m=0}}h[j>>3]=(s|0)>30?1.0:+(s|0)/30.0;switch(k|0){case 259:{w=a[4551+n>>0]|0;k=w<<24>>24;l=u;c[l>>2]=k;c[l+4>>2]=((k|0)<0)<<31>>31;if(w<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 515:{m=a[4423+n>>0]|0;k=m<<24>>24;w=u;c[w>>2]=k;c[w+4>>2]=((k|0)<0)<<31>>31;if(l)c[l>>2]=d[4487+n>>0];if(m<<24>>24<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}break}case 772:case 1028:{m=Ie(k,n,m,0,u)|0;if((m|0)<0){c[f>>2]=-1;h[j>>3]=-1.0;m=-4;break a}if((l|0)!=0&(m|0)>0)c[l>>2]=m;break}default:{w=u;c[w>>2]=n;c[w+4>>2]=m}}c[f>>2]=c[u>>2];m=0}while(0);i=v;return m|0}function Ge(a,b,e,f,g,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;l=C+8|0;n=C;a:do if(!a){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;b=-1}else switch(b|0){case 0:{o=$(f,f)|0;z=o*3|0;A=Uj(o*12|0)|0;if(!A){Me(3,5472,n);rb(1)}if(!o)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!o)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/(+(f|0)*1.7320508)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+12|0;x=a+16|0;if((v|0)>0){u=c[a+8>>2]|0;s=(o|0)==0;n=-1;t=0;m=0.0;l=-1;b=-1;do{b:while(1){n=n+1|0;switch(c[u+(n<<2)>>2]|0){case 0:break;case 2:break b;default:{B=17;break b}}}if((B|0)==17){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(s)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}t=t+1|0}while((t|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}case 1:{z=$(f,f)|0;A=Uj(z<<2)|0;if(!A){Me(3,5472,l);rb(1)}if(!z)b=0;else{b=0;l=0;do{b=((d[e+l>>0]|0)^255)+b|0;l=l+1|0}while((l|0)<(z|0))}l=(b|0)/(z|0)|0;if(!z)m=0.0;else{n=0;b=0;do{x=((d[e+n>>0]|0)^255)-l|0;c[A+(n<<2)>>2]=x;b=($(x,x)|0)+b|0;n=n+1|0}while((n|0)<(z|0));m=+(b|0)}y=+P(+m);if(y/+(f|0)<15.0){c[g>>2]=0;c[j>>2]=0;h[k>>3]=-1.0;Vj(A);b=-2;break a}v=c[a>>2]|0;w=a+20|0;x=a+24|0;if((v|0)>0){s=c[a+8>>2]|0;t=(z|0)==0;n=-1;u=0;m=0.0;l=-1;b=-1;do{c:while(1){n=n+1|0;switch(c[s+(n<<2)>>2]|0){case 0:break;case 2:break c;default:{B=37;break c}}}if((B|0)==37){B=0;p=n<<2;q=c[x>>2]|0;r=0;do{a=r+p|0;if(t)o=0;else{e=c[(c[w>>2]|0)+(a<<2)>>2]|0;f=0;o=0;do{o=($(c[e+(f<<2)>>2]|0,c[A+(f<<2)>>2]|0)|0)+o|0;f=f+1|0}while((f|0)<(z|0))}D=+(o|0)/+h[q+(a<<3)>>3]/y;a=D>m;l=a?r:l;b=a?n:b;m=a?D:m;r=r+1|0}while((r|0)!=4)}u=u+1|0}while((u|0)<(v|0))}else{m=0.0;l=-1;b=-1}c[j>>2]=l;c[g>>2]=b;h[k>>3]=m;Vj(A);b=0;break a}default:{b=-1;break a}}while(0);i=C;return b|0}function He(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Re(8,8)|0;f=Re(8,1)|0;g=Re(8,1)|0;i=c[e>>2]|0;j=c[f>>2]|0;k=0;do{p=a+(k<<4)|0;l=k<<4;h[i+(l<<3)>>3]=+h[p>>3];o=a+(k<<4)+8|0;h[i+((l|1)<<3)>>3]=+h[o>>3];h[i+((l|2)<<3)>>3]=1.0;h[i+((l|3)<<3)>>3]=0.0;h[i+((l|4)<<3)>>3]=0.0;h[i+((l|5)<<3)>>3]=0.0;n=b+(k<<4)|0;h[i+((l|6)<<3)>>3]=-(+h[p>>3]*+h[n>>3]);h[i+((l|7)<<3)>>3]=-(+h[o>>3]*+h[n>>3]);h[i+((l|8)<<3)>>3]=0.0;h[i+((l|9)<<3)>>3]=0.0;h[i+((l|10)<<3)>>3]=0.0;h[i+((l|11)<<3)>>3]=+h[p>>3];h[i+((l|12)<<3)>>3]=+h[o>>3];h[i+((l|13)<<3)>>3]=1.0;m=b+(k<<4)+8|0;h[i+((l|14)<<3)>>3]=-(+h[p>>3]*+h[m>>3]);h[i+((l|15)<<3)>>3]=-(+h[o>>3]*+h[m>>3]);l=k<<1;h[j+(l<<3)>>3]=+h[n>>3];h[j+((l|1)<<3)>>3]=+h[m>>3];k=k+1|0}while((k|0)!=4);_e(e)|0;Xe(g,e,f)|0;p=c[g>>2]|0;h[d>>3]=+h[p>>3];h[d+8>>3]=+h[p+8>>3];h[d+16>>3]=+h[p+16>>3];p=c[g>>2]|0;h[d+24>>3]=+h[p+24>>3];h[d+32>>3]=+h[p+32>>3];h[d+40>>3]=+h[p+40>>3];p=c[g>>2]|0;h[d+48>>3]=+h[p+48>>3];h[d+56>>3]=+h[p+56>>3];h[d+64>>3]=1.0;We(e)|0;We(f)|0;We(g)|0;return}function Ie(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+2320|0;k=I+2304|0;y=I+864|0;u=I+784|0;H=I+704|0;w=I+624|0;v=I+548|0;G=I+40|0;E=I;switch(b|0){case 772:{g=9;j=1;l=3;break}case 1028:{g=5;j=2;l=3;break}case 2830:{A=900;s=1472;C=64;F=120;z=127;B=g;j=9;l=6;break}default:f=-1}if((l|0)==3){b=0;while(1){a[k+b>>0]=e&1;e=hk(e|0,f|0,1)|0;b=b+1|0;if((b|0)==13)break;else f=D}A=840;s=1408;C=g;F=13;z=15;B=k;l=6}do if((l|0)==6){r=j<<1;k=1;f=0;while(1){g=v+(k<<2)|0;c[g>>2]=0;b=0;e=0;do{if(a[B+e>>0]|0){b=b^c[A+((($(e,k)|0)%(z|0)|0)<<2)>>2];c[g>>2]=b}e=e+1|0}while((e|0)<(F|0));f=(b|0)==0?f:1;c[g>>2]=c[s+(b<<2)>>2];if((k|0)<(r|0))k=k+1|0;else break}x=(f|0)!=0;if(x){c[u>>2]=0;f=c[v+4>>2]|0;c[u+4>>2]=f;c[y>>2]=0;c[y+72>>2]=1;if((r|0)>1){b=1;do{c[y+(b<<2)>>2]=-1;c[y+72+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(r|0))}c[H>>2]=0;c[H+4>>2]=0;c[w>>2]=-1;c[w+4>>2]=0;p=0;q=0;while(1){g=q;q=q+1|0;o=u+(q<<2)|0;if((f|0)==-1){k=g+2|0;c[H+(k<<2)>>2]=p;if((p|0)<0)n=p;else{f=0;while(1){o=y+(q*72|0)+(f<<2)|0;n=c[o>>2]|0;c[y+(k*72|0)+(f<<2)>>2]=n;c[o>>2]=c[s+(n<<2)>>2];if((f|0)<(p|0))f=f+1|0;else{n=p;break}}}}else{b=g;while(1){f=(b|0)>0;if(f&(c[u+(b<<2)>>2]|0)==-1)b=b+-1|0;else break}if(f){e=b;do{f=e;e=e+-1|0;if((c[u+(e<<2)>>2]|0)!=-1)b=(c[w+(b<<2)>>2]|0)<(c[w+(e<<2)>>2]|0)?e:b}while((f|0)>1)}e=H+(b<<2)|0;m=q-b|0;n=m+(c[e>>2]|0)|0;k=g+2|0;n=(p|0)>(n|0)?p:n;c[H+(k<<2)>>2]=n;f=0;do{c[y+(k*72|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(r|0));f=c[e>>2]|0;e=u+(b<<2)|0;if((f|0)>=0){l=0;while(1){g=c[y+(b*72|0)+(l<<2)>>2]|0;if((g|0)!=-1)c[y+(k*72|0)+(m+l<<2)>>2]=c[A+(((g+z+(c[o>>2]|0)-(c[e>>2]|0)|0)%(z|0)|0)<<2)>>2];if((l|0)<(f|0))l=l+1|0;else break}}if((p|0)>=0){f=0;while(1){o=y+(q*72|0)+(f<<2)|0;m=c[o>>2]|0;l=y+(k*72|0)+(f<<2)|0;c[l>>2]=c[l>>2]^m;c[o>>2]=c[s+(m<<2)>>2];if((f|0)<(p|0))f=f+1|0;else break}}}c[w+(k<<2)>>2]=q-n;if((q|0)>=(r|0))break;f=c[v+(k<<2)>>2]|0;if((f|0)==-1)f=0;else f=c[A+(f<<2)>>2]|0;g=u+(k<<2)|0;c[g>>2]=f;if((n|0)>=1){e=1;while(1){b=c[v+(k-e<<2)>>2]|0;if((b|0)!=-1?(t=c[y+(k*72|0)+(e<<2)>>2]|0,(t|0)!=0):0){f=f^c[A+((((c[s+(t<<2)>>2]|0)+b|0)%(z|0)|0)<<2)>>2];c[g>>2]=f}if((e|0)<(n|0))e=e+1|0;else break}}f=c[s+(f<<2)>>2]|0;c[g>>2]=f;if((n|0)>(j|0))break;else p=n}if((n|0)>(j|0)){f=-1;break}if((n|0)>=0){f=0;while(1){w=y+(k*72|0)+(f<<2)|0;c[w>>2]=c[s+(c[w>>2]<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}if((n|0)>=1){f=1;while(1){c[E+(f<<2)>>2]=c[y+(k*72|0)+(f<<2)>>2];if((f|0)<(n|0))f=f+1|0;else break}}l=(n|0)<1;f=0;m=1;do{if(l)b=1;else{j=1;b=1;while(1){e=E+(j<<2)|0;g=c[e>>2]|0;if((g|0)!=-1){y=(g+j|0)%(z|0)|0;c[e>>2]=y;b=c[A+(y<<2)>>2]^b}if((j|0)<(n|0))j=j+1|0;else break}}if(!b){c[G+(f<<2)>>2]=z-m;f=f+1|0}m=m+1|0}while((z|0)>=(m|0));if((f|0)!=(n|0)){f=-1;break}if((n|0)>0){f=0;do{E=B+(c[G+(f<<2)>>2]|0)|0;a[E>>0]=d[E>>0]^1;f=f+1|0}while((f|0)<(n|0))}}else k=0;b=h;c[b>>2]=0;c[b+4>>2]=0;b=1;e=0;g=0;j=0;f=F-C|0;while(1){G=ok(d[B+f>>0]|0,0,b|0,e|0)|0;g=gk(G|0,D|0,g|0,j|0)|0;j=D;G=h;c[G>>2]=g;c[G+4>>2]=j;b=fk(b|0,e|0,1)|0;f=f+1|0;if((f|0)>=(F|0))break;else e=D}if(x)f=c[H+(k<<2)>>2]|0;else f=0}while(0);i=I;return f|0}function Je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=i;i=i+32|0;z=A+24|0;g=A+16|0;d=A+8|0;do if(a){if(!b){Me(3,4674,d);d=-1;break}y=a+8|0;f=c[a+4>>2]|0;a:do if((f|0)>0){e=c[y>>2]|0;d=0;do{if(!(c[e+(d<<2)>>2]|0))break a;d=d+1|0}while((d|0)<(f|0))}else d=0;while(0);if((d|0)!=(f|0)){x=Aj(b)|0;if(!x){Me(3,4719,g);d=-1;break}r=a+28|0;s=d<<2;t=a+12|0;u=a+20|0;v=a+16|0;w=a+24|0;f=Gj(x,4742)|0;e=0;b:while(1){q=e+s|0;p=0;b=0;do{n=(p|0)==0;o=(p|0)==2;g=c[r>>2]|0;if((g|0)>0){m=0;do{if((g|0)>0){l=0;do{if(!f){e=17;break b}g=qj(f)|0;f=Gj(0,4742)|0;g=255-g|0;k=((($(c[r>>2]|0,m)|0)+l|0)*3|0)+p|0;c[(c[(c[t>>2]|0)+(q<<2)>>2]|0)+(k<<2)>>2]=g;k=($(c[r>>2]|0,m)|0)+l|0;j=c[(c[u>>2]|0)+(q<<2)>>2]|0;k=j+(k<<2)|0;if(!n){c[k>>2]=(c[k>>2]|0)+g;if(o){k=j+(($(c[r>>2]|0,m)|0)+l<<2)|0;c[k>>2]=(c[k>>2]|0)/3|0}}else c[k>>2]=g;b=g+b|0;l=l+1|0;g=c[r>>2]|0}while((l|0)<(g|0))}m=m+1|0}while((m|0)<(g|0))}p=p+1|0}while((p|0)<3);g=c[r>>2]|0;l=(b|0)/($(g*3|0,g)|0)|0;if(($(g*3|0,g)|0)>0){j=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=0;b=0;do{p=j+(k<<2)|0;g=(c[p>>2]|0)-l|0;c[p>>2]=g;b=($(g,g)|0)+b|0;k=k+1|0;g=c[r>>2]|0}while((k|0)<($(g*3|0,g)|0))}else b=0;B=+P(+(+(b|0)));h[(c[v>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;if(!($(g,g)|0))b=0;else{g=c[(c[u>>2]|0)+(q<<2)>>2]|0;j=0;b=0;do{o=g+(j<<2)|0;p=(c[o>>2]|0)-l|0;c[o>>2]=p;b=($(p,p)|0)+b|0;j=j+1|0;p=c[r>>2]|0}while((j|0)<($(p,p)|0))}B=+P(+(+(b|0)));h[(c[w>>2]|0)+(q<<3)>>3]=B==0.0?1.0e-07:B;e=e+1|0;if((e|0)>=4){e=32;break}}if((e|0)==17){Me(3,4747,z);Vj(x);d=-1;break}else if((e|0)==32){Vj(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Me(3,4649,A);d=-1}while(0);i=A;return d|0}function Ke(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;h=k+8|0;e=k;g=_i(d,4854)|0;do if(g){dj(g,0,2)|0;e=gj(g)|0;dj(g,0,0)|0;f=Uj(e+1|0)|0;if(!f){Me(3,5472,h);Wi(g)|0;e=-1;break}h=aj(f,e,1,g)|0;Wi(g)|0;if(!h){c[j>>2]=d;Me(3,4820,j);Vj(f);e=-1;break}else{a[f+e>>0]=0;e=Je(b,f)|0;Vj(f);break}}else{c[e>>2]=d;Me(3,4774,e);e=-1}while(0);i=k;return e|0}function Le(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;f=j;c[h>>2]=0;if(((d|0)!=0&(c[496]|0)<=(b|0)?(a[d>>0]|0)!=0:0)?(c[f>>2]=e,g=lj(h,d,f)|0,(g|0)>-1):0){f=c[497]|0;do if(f){if(!(c[498]|0)){Wb[f&15](c[h>>2]|0);break}e=gb()|0;b=c[500]|0;if((e|0)==(c[499]|0)){if((b|0)>0){Wb[f&15](c[502]|0);c[500]=0;f=c[497]|0}Wb[f&15](c[h>>2]|0);break}f=c[501]|0;if((b|0)<(f|0)){d=(c[502]|0)+b|0;if((g|0)<(-3-b+f|0)){yj(d,c[h>>2]|0)|0;c[500]=(c[500]|0)+g;break}else{a[d>>0]=46;a[d+1>>0]=46;a[d+2>>0]=46;a[d+3>>0]=0;c[500]=c[501];break}}}else $i(c[h>>2]|0,c[659]|0)|0;while(0);Vj(c[h>>2]|0)}i=j;return}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0;i=0;do{d=a+(i<<5)|0;e=a+(i<<5)+8|0;f=a+(i<<5)+16|0;g=0;do{h[c+(i<<5)+(g<<3)>>3]=+h[d>>3]*+h[b+(g<<3)>>3]+ +h[e>>3]*+h[b+32+(g<<3)>>3]+ +h[f>>3]*+h[b+64+(g<<3)>>3];g=g+1|0}while((g|0)!=4);g=c+(i<<5)+24|0;h[g>>3]=+h[a+(i<<5)+24>>3]+ +h[g>>3];i=i+1|0}while((i|0)!=3);return 0}function Oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Re(4,4)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[d+(k<<3)>>3]=+h[a+(i<<5)>>3];h[e+(1+k<<3)>>3]=+h[a+(i<<5)+8>>3];h[f+(2+k<<3)>>3]=+h[a+(i<<5)+16>>3];h[g+(3+k<<3)>>3]=+h[a+(i<<5)+24>>3];i=i+1|0}while((i|0)!=3);d=c[j>>2]|0;e=d+96|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[d+120>>3]=1.0;_e(j)|0;d=c[j>>2]|0;e=c[j>>2]|0;f=c[j>>2]|0;g=c[j>>2]|0;i=0;do{k=i<<2;h[b+(i<<5)>>3]=+h[d+(k<<3)>>3];h[b+(i<<5)+8>>3]=+h[e+(1+k<<3)>>3];h[b+(i<<5)+16>>3]=+h[f+(2+k<<3)>>3];h[b+(i<<5)+24>>3]=+h[g+(3+k<<3)>>3];i=i+1|0}while((i|0)!=3);We(j)|0;return 0}function Pe(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Qe(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Ej(c,47)|0;if(!f){a[b>>0]=0;break}f=f+((e|0)!=0&1)-c|0;if((f+1|0)>>>0<=d>>>0){Dj(b,c,f)|0;a[b+f>>0]=0}else b=0}else b=0;while(0);return b|0}function Re(a,b){a=a|0;b=b|0;var d=0,e=0;d=Uj(12)|0;do if(d){e=Uj($(a<<3,b)|0)|0;c[d>>2]=e;if(!e){Vj(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Se(a){a=a|0;var b=0;b=Re(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Ve(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Te(a,b){a=a|0;b=b|0;var d=0;d=Re(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Xe(d,a,b)|0)<0){We(d)|0;d=0}}else d=0;return d|0}function Ue(a){a=a|0;var b=0;b=Re(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($e(b,a)|0)<0){We(b)|0;b=0}}else b=0;return b|0}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;d=c[a+4>>2]|0;if((d|0)==(c[b+4>>2]|0)?(j=c[a+8>>2]|0,(j|0)==(c[b+8>>2]|0)):0)if((d|0)>0){e=(j|0)>0;l=0;do{f=$(j,l)|0;if(e){g=c[b>>2]|0;i=c[a>>2]|0;k=0;do{m=f+k|0;h[i+(m<<3)>>3]=+h[g+(m<<3)>>3];k=k+1|0}while((k|0)<(j|0))}l=l+1|0}while((l|0)<(d|0));d=0}else d=0;else d=-1;return d|0}function We(a){a=a|0;if(a){Vj(c[a>>2]|0);Vj(a)}return 0}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+8>>2]|0;if(((n|0)==(c[d+4>>2]|0)?(r=c[a+4>>2]|0,(r|0)==(c[b+4>>2]|0)):0)?(o=c[a+8>>2]|0,(o|0)==(c[d+8>>2]|0)):0){s=(o|0)>0?o:0;if((r|0)>0){p=(o|0)>0;q=(n|0)>0;k=c[a>>2]|0;m=0;while(1){a=$(n,m)|0;if(p){f=0;l=k;while(1){h[l>>3]=0.0;if(q){e=0.0;g=0;i=(c[b>>2]|0)+(a<<3)|0;j=(c[d>>2]|0)+(f<<3)|0;while(1){e=e+ +h[i>>3]*+h[j>>3];h[l>>3]=e;g=g+1|0;if((g|0)>=(n|0))break;else{i=i+8|0;j=j+(o<<3)|0}}}f=f+1|0;if((f|0)>=(o|0))break;else l=l+8|0}}m=m+1|0;if((m|0)>=(r|0)){a=0;break}else k=k+(s<<3)|0}}else a=0}else a=-1;return a|0}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0;q=c[a+4>>2]|0;s=c[a+8>>2]|0;f=(q|0)<(s|0)?q:s;a:do if(((((!((q|0)<2|(s|0)<2)?(c[b+8>>2]|0)==(s|0):0)?(c[b+4>>2]|0)==(f|0):0)?(t=d+4|0,(c[t>>2]|0)==(f|0)):0)?(g=e+4|0,(c[g>>2]|0)==(s|0)):0)?(u=Se(a)|0,(u|0)!=0):0){r=+P(+(+(q|0)));o=c[u+4>>2]|0;p=c[u+8>>2]|0;if(!((o|0)<1|(p|0)<1)?(c[g>>2]|0)==(p|0):0){if(p){f=c[e>>2]|0;a=0;do{h[f+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)!=(p|0))}n=c[u>>2]|0;if(o){f=(p|0)==0;a=0;j=n;while(1){if(!f){g=0;k=j;l=c[e>>2]|0;while(1){h[l>>3]=+h[k>>3]+ +h[l>>3];g=g+1|0;if((g|0)==(p|0))break;else{k=k+8|0;l=l+8|0}}}a=a+1|0;if((a|0)==(o|0))break;else j=j+(p<<3)|0}}i=+(o|0);if(p){f=c[e>>2]|0;a=0;do{m=f+(a<<3)|0;h[m>>3]=+h[m>>3]/i;a=a+1|0}while((a|0)!=(p|0))}l=(p|0)>0?p:0;if((o|0)>0){f=(p|0)>0;a=0;j=n;while(1){if(f){g=0;k=j;m=c[e>>2]|0;while(1){h[k>>3]=+h[k>>3]-+h[m>>3];g=g+1|0;if((g|0)>=(p|0))break;else{k=k+8|0;m=m+8|0}}}a=a+1|0;if((a|0)>=(o|0))break;else j=j+(l<<3)|0}}f=$(s,q)|0;if((f|0)>0){a=0;do{e=n+(a<<3)|0;h[e>>3]=+h[e>>3]/r;a=a+1|0}while((a|0)<(f|0))}f=Ze(u,b,d)|0;We(u)|0;j=c[t>>2]|0;if((j|0)>0){a=c[d>>2]|0;g=0;i=0.0;do{i=i+ +h[a+(g<<3)>>3];g=g+1|0}while((g|0)<(j|0))}else i=0.0;if((j|0)<=0)break;a=c[d>>2]|0;g=0;while(1){d=a+(g<<3)|0;h[d>>3]=+h[d>>3]/i;g=g+1|0;if((g|0)>=(j|0))break a}}We(u)|0;f=-1}else f=-1;while(0);return f|0}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0;U=i;i=i+16|0;w=U;F=a+4|0;I=c[F>>2]|0;J=a+8|0;K=c[J>>2]|0;S=(K|0)<(I|0)?K:I;a:do if(((!((I|0)<2|(K|0)<2)?(R=b+8|0,(c[R>>2]|0)==(K|0)):0)?(L=b+4|0,(c[L>>2]|0)==(S|0)):0)?(M=d+4|0,(c[M>>2]|0)==(S|0)):0){T=Re(S,S)|0;N=T+4|0;if((c[N>>2]|0)==(S|0)?(Q=T+8|0,(c[Q>>2]|0)==(S|0)):0){G=(I|0)<(K|0);s=c[F>>2]|0;t=c[J>>2]|0;if(G){if((S|0)!=(s|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){m=(S|0)==0;j=(t|0)>0;n=0;r=g;while(1){l=$(n,t)|0;if(!m){p=0;s=r;while(1){if((p|0)>=(n|0)){e=c[a>>2]|0;h[s>>3]=0.0;if(j){k=0.0;o=e+(l<<3)|0;e=e+(($(p,t)|0)<<3)|0;f=0;while(1){k=k+ +h[o>>3]*+h[e>>3];h[s>>3]=k;f=f+1|0;if((f|0)>=(t|0))break;else{o=o+8|0;e=e+8|0}}}}else h[s>>3]=+h[g+(($(p,S)|0)+n<<3)>>3];p=p+1|0;if((p|0)==(S|0))break;else s=s+8|0}}n=n+1|0;if((n|0)>=(S|0))break;else r=r+(S<<3)|0}}}else{if((S|0)!=(t|0)){We(T)|0;e=-1;break}g=c[T>>2]|0;if((S|0)>0){l=(S|0)==0;j=(s|0)>0;m=0;p=g;while(1){if(!l){o=0;r=p;while(1){if((o|0)>=(m|0)){e=c[a>>2]|0;h[r>>3]=0.0;if(j){k=0.0;n=e+(m<<3)|0;e=e+(o<<3)|0;f=0;while(1){k=k+ +h[n>>3]*+h[e>>3];h[r>>3]=k;f=f+1|0;if((f|0)>=(s|0))break;else{n=n+(S<<3)|0;e=e+(S<<3)|0}}}}else h[r>>3]=+h[g+(($(o,S)|0)+m<<3)>>3];o=o+1|0;if((o|0)==(S|0))break;else r=r+8|0}}m=m+1|0;if((m|0)>=(S|0))break;else p=p+(S<<3)|0}}}do if(((S|0)>=2?(c[M>>2]|0)==(S|0):0)?(H=nf(S)|0,(H|0)!=0):0){E=S+-1|0;c[w+4>>2]=E;c[w>>2]=(c[H>>2]|0)+8;if((rf(T,d,w)|0)<0){of(H)|0;break}B=c[H>>2]|0;h[B>>3]=0.0;if((E|0)>0){C=(S|0)==0;D=E;do{f=D;while(1){if((f|0)<=0)break;v=+O(+(+h[B+(f<<3)>>3]));e=f+-1|0;A=c[d>>2]|0;x=+O(+(+h[A+(e<<3)>>3]));if(v>(x+ +O(+(+h[A+(f<<3)>>3])))*1.0e-06)f=e;else break}y=D;D=D+-1|0;b:do if((f|0)!=(y|0)){o=B+(y<<3)|0;p=B+(f+1<<3)|0;r=(f|0)<(y|0);z=0;do{if((z|0)>99)break b;z=z+1|0;s=c[d>>2]|0;t=s+(D<<3)|0;w=s+(y<<3)|0;k=+h[w>>3];q=(+h[t>>3]-k)*.5;u=+h[o>>3];u=u*u;v=+P(+(u+q*q));if(r){A=f;q=+h[s+(f<<3)>>3]-k+u/(q+(q<0.0?-v:v));u=+h[p>>3];while(1){k=+O(+q);do if(!(k>=+O(+u))){v=-q/u;x=1.0/+P(+(v*v+1.0));v=v*x}else{if(!(k>1.0e-16)){v=1.0;x=0.0;break}k=-u/q;x=1.0/+P(+(k*k+1.0));v=x;x=k*x}while(0);j=s+(A<<3)|0;X=+h[j>>3];n=A;A=A+1|0;l=s+(A<<3)|0;W=+h[l>>3];k=X-W;m=B+(A<<3)|0;V=x*(x*k+v*2.0*+h[m>>3]);h[j>>3]=X-V;h[l>>3]=W+V;if((n|0)>(f|0)){l=B+(n<<3)|0;h[l>>3]=v*+h[l>>3]-u*x}X=+h[m>>3];h[m>>3]=X+x*(v*k-x*2.0*X);j=$(n,S)|0;l=$(A,S)|0;if(C)k=u;else{e=c[T>>2]|0;g=0;do{Z=e+(g+j<<3)|0;q=+h[Z>>3];Y=e+(g+l<<3)|0;k=+h[Y>>3];h[Z>>3]=v*q-x*k;h[Y>>3]=x*q+v*k;g=g+1|0}while((g|0)!=(S|0))}if((n|0)<(D|0)){q=+h[m>>3];Z=B+(n+2<<3)|0;k=+h[Z>>3];h[Z>>3]=v*k;k=-(x*k)}if((A|0)>=(y|0))break;else u=k}}W=+O(+(+h[o>>3]));X=+O(+(+h[t>>3]))}while(W>(X+ +O(+(+h[w>>3])))*1.0e-06)}while(0)}while((y|0)>1)}if(E){l=c[d>>2]|0;m=c[T>>2]|0;n=(S|0)==0;o=0;do{g=l+(o<<3)|0;q=+h[g>>3];j=o;o=o+1|0;if((o|0)<(S|0)){e=j;f=o;k=q;do{X=+h[l+(f<<3)>>3];Z=X>k;k=Z?X:k;e=Z?f:e;f=f+1|0}while((f|0)<(S|0))}else{e=j;k=q}h[l+(e<<3)>>3]=q;h[g>>3]=k;if(!n){g=0;f=m+(($(e,S)|0)<<3)|0;e=m+(($(j,S)|0)<<3)|0;while(1){X=+h[f>>3];h[f>>3]=+h[e>>3];h[e>>3]=X;g=g+1|0;if((g|0)==(S|0))break;else{f=f+8|0;e=e+8|0}}}}while((o|0)!=(E|0))}of(H)|0;c:do if(!G){g=c[b>>2]|0;p=(I|0)>(K|0)?K:I;d:do if((S|0)>0){m=c[d>>2]|0;n=(p|0)==0;e=0;o=c[T>>2]|0;do{if(+h[m+(e<<3)>>3]<1.0e-16)break d;if(!n){f=0;j=o;l=g;while(1){h[l>>3]=+h[j>>3];f=f+1|0;if((f|0)==(p|0))break;else{j=j+8|0;l=l+8|0}}}o=o+(p<<3)|0;g=g+(p<<3)|0;e=e+1|0}while((e|0)<(S|0))}else e=0;while(0);n=(p|0)>0?p:0;if((e|0)<(S|0)){l=c[d>>2]|0;m=(S|0)>0;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(S|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(S|0))break;else g=g+(n<<3)|0}}}else{w=c[F>>2]|0;t=c[J>>2]|0;do if(!((w|0)<1|(t|0)<1)){if((c[N>>2]|0)!=(w|0))break;if((c[Q>>2]|0)!=(w|0))break;if((c[L>>2]|0)!=(w|0))break;if((c[R>>2]|0)!=(t|0))break;if((c[M>>2]|0)!=(w|0))break;f=c[b>>2]|0;e:do if((w|0)>0){p=c[d>>2]|0;s=(t|0)==0;r=(w|0)==0;e=0;do{k=+h[p+(e<<3)>>3];if(k<1.0e-16)break e;q=1.0/+P(+(+O(+k)));m=$(e,w)|0;if(!s){n=0;o=f;while(1){if(r)k=0.0;else{g=0;j=(c[T>>2]|0)+(m<<3)|0;l=(c[a>>2]|0)+(n<<3)|0;k=0.0;while(1){k=k+ +h[j>>3]*+h[l>>3];g=g+1|0;if((g|0)==(w|0))break;else{j=j+8|0;l=l+(t<<3)|0}}}h[o>>3]=q*k;n=n+1|0;if((n|0)==(t|0))break;else o=o+8|0}}f=f+(t<<3)|0;e=e+1|0}while((e|0)<(w|0))}else e=0;while(0);n=(t|0)>0?t:0;if((e|0)>=(w|0))break c;l=c[d>>2]|0;m=(t|0)>0;g=f;while(1){h[l+(e<<3)>>3]=0.0;if(m){f=0;j=g;while(1){h[j>>3]=0.0;f=f+1|0;if((f|0)>=(t|0))break;else j=j+8|0}}e=e+1|0;if((e|0)>=(w|0))break c;else g=g+(n<<3)|0}}while(0);We(T)|0;e=-1;break a}while(0);We(T)|0;e=0;break a}while(0);We(T)|0;e=-1;break}We(T)|0;e=-1}else e=-1;while(0);i=U;return e|0}function _e(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;v=i;i=i+2e3|0;u=v;b=c[a>>2]|0;t=c[a+4>>2]|0;a:do if((t|0)<=500){switch(t|0){case 0:{b=0;break a}case 1:{h[b>>3]=1.0/+h[b>>3];break a}default:{}}if((t|0)>0){a=0;do{c[u+(a<<2)>>2]=a;a=a+1|0}while((a|0)<(t|0))}s=b+(t+-1<<3)|0;if((t|0)>0){m=(t|0)==0;p=(t|0)==1;o=(t|0)==0;n=(t|0)==1;q=s;a=0;r=0;while(1){l=b+(($(r,t)|0)<<3)|0;if((r|0)<(t|0)){e=r;f=0.0;d=l;while(1){w=+O(+(+h[d>>3]));k=f=(t|0))break;else d=d+(t<<3)|0}}else f=0.0;if(f<=1.0e-10){b=0;break a}g=u+(a<<2)|0;j=c[g>>2]|0;k=u+(r<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;if(!m){d=0;e=b+(($(a,t)|0)<<3)|0;g=l;while(1){w=+h[e>>3];h[e>>3]=+h[g>>3];h[g>>3]=w;d=d+1|0;if((d|0)==(t|0))break;else{e=e+8|0;g=g+8|0}}}f=+h[l>>3];if(!p){d=1;e=l;do{k=e;e=e+8|0;h[k>>3]=+h[e>>3]/f;d=d+1|0}while((d|0)!=(t|0))}h[q>>3]=1.0/f;if(!o){g=0;j=s;while(1){if((g|0)!=(r|0)){d=b+(($(g,t)|0)<<3)|0;f=+h[d>>3];if(!n){k=1;e=l;while(1){x=d;d=d+8|0;h[x>>3]=+h[d>>3]-f*+h[e>>3];k=k+1|0;if((k|0)==(t|0))break;else e=e+8|0}}h[j>>3]=-(f*+h[q>>3])}g=g+1|0;if((g|0)==(t|0))break;else j=j+(t<<3)|0}}r=r+1|0;if((r|0)>=(t|0))break;else q=q+(t<<3)|0}}if((t|0)>0){g=(t|0)>0;j=0;do{a=u+(j<<2)|0;b:do if((j|0)<(t|0)){d=j;do{if((c[a>>2]|0)==(j|0))break b;d=d+1|0;a=u+(d<<2)|0}while((d|0)<(t|0))}else d=j;while(0);c[a>>2]=c[u+(j<<2)>>2];if(g){e=0;a=b+(d<<3)|0;d=b+(j<<3)|0;while(1){w=+h[a>>3];h[a>>3]=+h[d>>3];h[d>>3]=w;e=e+1|0;if((e|0)>=(t|0))break;else{a=a+(t<<3)|0;d=d+(t<<3)|0}}}j=j+1|0}while((j|0)<(t|0))}}else b=0;while(0);i=v;return ((b|0)==0)<<31>>31|0}function $e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;if((i|0)==(c[b+8>>2]|0)?(k=c[a+8>>2]|0,(k|0)==(c[b+4>>2]|0)):0){l=(k|0)>0?k:0;if((i|0)>0){j=(k|0)>0;e=c[a>>2]|0;g=0;while(1){if(j){a=0;d=(c[b>>2]|0)+(g<<3)|0;f=e;while(1){h[f>>3]=+h[d>>3];a=a+1|0;if((a|0)>=(k|0))break;else{d=d+(i<<3)|0;f=f+8|0}}}g=g+1|0;if((g|0)>=(i|0)){a=0;break}else e=e+(l<<3)|0}}else a=0}else a=-1;return a|0}function af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0;f=+(b|0)/+(c[a>>2]|0);g=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;do{h[e+8+(b<<3)>>3]=f*+h[a+8+(b<<3)>>3];h[e+40+(b<<3)>>3]=g*+h[a+40+(b<<3)>>3];h[e+72+(b<<3)>>3]=+h[a+72+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=c[a+176>>2]|0;switch(b|0){case 4:{h[e+104>>3]=+h[a+104>>3];h[e+112>>3]=+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=f*+h[a+136>>3];h[e+144>>3]=g*+h[a+144>>3];h[e+152>>3]=f*+h[a+152>>3];h[e+160>>3]=g*+h[a+160>>3];h[e+168>>3]=+h[a+168>>3];i=8;break}case 3:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3];h[e+136>>3]=+h[a+136>>3]/(f*g);h[e+144>>3]=+h[a+144>>3]/(g*(f*f*g));i=8;break}case 2:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);h[e+136>>3]=+h[a+136>>3]/(g*(f*f*g));i=8;break}case 1:{h[e+104>>3]=f*+h[a+104>>3];h[e+112>>3]=g*+h[a+112>>3];h[e+120>>3]=+h[a+120>>3];h[e+128>>3]=+h[a+128>>3]/(f*g);i=8;break}default:b=-1}if((i|0)==8){c[e+176>>2]=b;b=0}return b|0}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0.0;f=i;i=i+96|0;e=f;if(!(+h[a+88>>3]>=0.0)){d=0;do{h[e+(d<<5)>>3]=-+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=-+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=-+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=-+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}else{d=0;do{h[e+(d<<5)>>3]=+h[a+(d<<5)>>3];h[e+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[e+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[e+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3)}h[b>>3]=0.0;h[b+8>>3]=0.0;h[b+16>>3]=0.0;h[b+24>>3]=0.0;h[b+32>>3]=0.0;h[b+40>>3]=0.0;h[b+48>>3]=0.0;h[b+56>>3]=0.0;h[b+64>>3]=0.0;h[b+72>>3]=0.0;h[b+80>>3]=0.0;h[b+88>>3]=0.0;g=+h[e+64>>3];o=+h[e+72>>3];p=+h[e+80>>3];x=+P(+(g*g+o*o+p*p));a=b+80|0;h[a>>3]=x;x=g/x;v=c+64|0;h[v>>3]=x;o=o/+h[a>>3];t=c+72|0;h[t>>3]=o;p=p/+h[a>>3];q=c+80|0;h[q>>3]=p;n=c+88|0;h[n>>3]=+h[e+88>>3]/+h[a>>3];g=+h[e+32>>3];k=+h[e+40>>3];s=+h[e+48>>3];p=x*g+o*k+p*s;m=b+48|0;h[m>>3]=p;g=g-p*+h[v>>3];k=k-p*+h[t>>3];p=s-p*+h[q>>3];s=+P(+(g*g+k*k+p*p));l=b+40|0;h[l>>3]=s;w=c+32|0;h[w>>3]=g/s;u=c+40|0;h[u>>3]=k/+h[l>>3];r=c+48|0;h[r>>3]=p/+h[l>>3];p=+h[e>>3];k=+h[e+8>>3];s=+h[e+16>>3];g=+h[v>>3]*p+ +h[t>>3]*k+ +h[q>>3]*s;d=b+16|0;h[d>>3]=g;o=+h[w>>3]*p+ +h[u>>3]*k+ +h[r>>3]*s;j=b+8|0;h[j>>3]=o;p=p-o*+h[w>>3]-g*+h[v>>3];k=k-o*+h[u>>3]-g*+h[t>>3];g=s-o*+h[r>>3]-g*+h[q>>3];o=+P(+(p*p+k*k+g*g));h[b>>3]=o;h[c>>3]=p/o;h[c+8>>3]=k/+h[b>>3];h[c+16>>3]=g/+h[b>>3];g=+h[n>>3];k=(+h[e+56>>3]-+h[m>>3]*g)/+h[l>>3];h[c+56>>3]=k;h[c+24>>3]=(+h[e+24>>3]-k*+h[j>>3]-+h[d>>3]*g)/+h[b>>3];d=0;do{w=b+(d<<5)|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+8|0;h[w>>3]=+h[w>>3]/+h[a>>3];w=b+(d<<5)+16|0;h[w>>3]=+h[w>>3]/+h[a>>3];d=d+1|0}while((d|0)!=3);i=f;return 0}function cf(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;switch(f|0){case 4:{q=+h[a>>3];r=+h[a+8>>3];s=+h[a+16>>3];t=+h[a+24>>3];y=+h[a+32>>3];v=+h[a+40>>3];w=+h[a+48>>3];x=+h[a+56>>3];u=+h[a+64>>3];p=(b-w)/y;j=(c-x)/v;c=p*p;i=j*j;k=s*2.0;l=t*6.0;m=t*2.0;n=s*6.0;a:do if(i!=0.0|c!=0.0){f=1;g=p;b=j;while(1){C=i+c;B=q*C+1.0+C*(r*C);z=c*3.0;A=i*z;g=g-(t*(C+c*2.0)+(b*(k*g)+g*B)-p)/(l*g+(k*b+(q*(i+z)+1.0+r*(i*i+(c*(c*5.0)+A)))));z=m*g;b=b-(s*(i*2.0+C)+b*B+b*z-j)/(n*b+(q*(c+i*3.0)+1.0+r*(i*(i*5.0)+(c*c+A)))+z);if((f|0)==4)break a;c=g*g;i=b*b;if(!(i!=0.0|c!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);h[d>>3]=w+y*g/u;h[e>>3]=x+v*b/u;f=0;break}case 3:{p=+h[a>>3];g=(b-p)/+h[a+24>>3];o=a+8|0;b=c-+h[o>>3];j=+h[a+32>>3]/1.0e8;k=+h[a+40>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;b:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break b;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 2:{p=+h[a>>3];g=b-p;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;k=+h[a+32>>3]/1.0e8/1.0e5;c=g*g+b*b;l=+P(+c);m=j*3.0;n=k*5.0;c:do if(l!=0.0){f=1;i=l;while(1){C=i-(i*(1.0-j*c-c*(k*c))-l)/(1.0-m*c-c*(n*c));g=g*C/i;b=b*C/i;if((f|0)==3)break c;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+p;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}case 1:{m=+h[a>>3];g=b-m;o=a+8|0;b=c-+h[o>>3];j=+h[a+24>>3]/1.0e8;c=g*g+b*b;k=+P(+c);l=j*3.0;d:do if(k!=0.0){f=1;i=k;while(1){C=i-(i*(1.0-j*c)-k)/(1.0-l*c);g=g*C/i;b=b*C/i;if((f|0)==3)break d;c=g*g+b*b;i=+P(+c);if(!(i!=0.0)){g=0.0;b=0.0;break}else f=f+1|0}}else{g=0.0;b=0.0}while(0);f=a+16|0;h[d>>3]=g/+h[f>>3]+m;h[e>>3]=b/+h[f>>3]+ +h[o>>3];f=0;break}default:f=-1}return f|0}function df(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;switch(f|0){case 4:{j=+h[a+16>>3];k=+h[a+24>>3];n=+h[a+32>>3];l=+h[a+40>>3];o=+h[a+48>>3];m=+h[a+56>>3];i=+h[a+64>>3];b=(b-o)*i/n;i=(c-m)*i/l;g=b*b+i*i;c=+h[a>>3]*g+1.0+g*(+h[a+8>>3]*g);h[d>>3]=o+n*(k*(b*(b*2.0)+g)+(j*2.0*b*i+b*c));h[e>>3]=m+l*(k*2.0*b*i+(j*(g+i*(i*2.0))+i*c));f=0;break}case 3:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+32>>3]/1.0e8)-o*(o*(+h[a+40>>3]/1.0e8/1.0e5));h[d>>3]=i+ +h[a+24>>3]*(g*o);b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 2:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=g*g+b*b;o=1.0-o*(+h[a+24>>3]/1.0e8)-o*(o*(+h[a+32>>3]/1.0e8/1.0e5));h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}case 1:{i=+h[a>>3];o=+h[a+16>>3];g=(b-i)*o;f=a+8|0;b=o*(c-+h[f>>3]);if(g==0.0&b==0.0){h[d>>3]=i;b=+h[f>>3]}else{o=1.0-(g*g+b*b)*(+h[a+24>>3]/1.0e8);h[d>>3]=i+g*o;b=+h[f>>3]+b*o}h[e>>3]=b;f=0;break}default:f=-1}return f|0}function ef(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=i;i=i+256|0;n=s+232|0;m=s+224|0;l=s+216|0;k=s+208|0;j=s+200|0;g=s+192|0;f=s+184|0;p=s+240|0;q=s;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=_i(a,4854)|0;if(!r){r=qi()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Me(3,4857,f);a=ri(c[r>>2]|0)|0;c[g>>2]=5367;c[g+4>>2]=a;Me(3,5361,g);a=-1;break}dj(r,0,2)|0;a:do if(!(Xi(r)|0)){g=gj(r)|0;jj(r);a=0;do{if((a|0)>=4){o=9;break}f=c[2012+(a<<3)+4>>2]|0;a=a+1|0}while(((g|0)%(f|0)|0|0)!=0);do if((o|0)==9)if((a|0)==4){Me(3,4971,l);a=-1;break a}else{f=c[2012+(0<<3)+4>>2]|0;a=0;break}while(0);if((aj(q,f,1,r)|0)!=1){a=qi()|0;c[m>>2]=c[a>>2];Me(3,5051,m);a=ri(c[a>>2]|0)|0;c[n>>2]=5367;c[n+4>>2]=a;Me(3,5361,n);a=-1;break}l=q+176|0;c[l>>2]=a;ff(q);m=(a|0)==1;n=q+120|0;if(m){t=+h[n>>3];k=q+128|0;h[n>>3]=+h[k>>3];h[k>>3]=t}else k=q+128|0;ik(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;if((b|0)>1){j=1;while(1){e=(c[p>>2]|0)+(4-1)&~(4-1);g=c[e>>2]|0;c[p>>2]=e+4;c[g+176>>2]=c[f>>2];if((aj(q,c[2012+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[l>>2]=a;ff(q);if(m){t=+h[n>>3];h[n>>3]=+h[k>>3];h[k>>3]=t}ik(g|0,q|0,184)|0;j=j+1|0;if((j|0)>=(b|0)){a=0;break}}}else a=0}else{a=qi()|0;c[j>>2]=c[a>>2];Me(3,4926,j);a=ri(c[a>>2]|0)|0;c[k>>2]=5367;c[k+4>>2]=a;Me(3,5361,k);a=-1}while(0);Wi(r)|0}else a=-1;while(0);i=s;return a|0}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+192|0;f=g;hf(a,f);hf(a+4|0,f+4|0);b=0;do{gf(a+8+(b<<5)|0,f+8+(b<<5)|0);gf(a+8+(b<<5)+8|0,f+8+(b<<5)+8|0);gf(a+8+(b<<5)+16|0,f+8+(b<<5)+16|0);gf(a+8+(b<<5)+24|0,f+8+(b<<5)+24|0);b=b+1|0}while((b|0)!=3);d=a+176|0;e=0;do{gf(a+104+(e<<3)|0,f+104+(e<<3)|0);e=e+1|0;b=c[d>>2]|0}while((e|0)<(c[2012+(b+-1<<3)>>2]|0));c[f+176>>2]=b;ik(a|0,f|0,184)|0;i=g;return}function gf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+7>>0]|0;a[c+1>>0]=a[b+6>>0]|0;a[c+2>>0]=a[b+5>>0]|0;a[c+3>>0]=a[b+4>>0]|0;a[c+4>>0]=a[b+3>>0]|0;a[c+5>>0]=a[b+2>>0]|0;a[c+6>>0]=a[b+1>>0]|0;a[c+7>>0]=a[b>>0]|0;return}function hf(b,c){b=b|0;c=c|0;a[c>>0]=a[b+3>>0]|0;a[c+1>>0]=a[b+2>>0]|0;a[c+2>>0]=a[b+1>>0]|0;a[c+3>>0]=a[b>>0]|0;return}function jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=i;i=i+64|0;t=x+24|0;u=x+16|0;v=x+8|0;w=x;q=Uj(208)|0;if(!q){Me(3,5472,x+32|0);rb(1)}ik(q|0,a|0,184)|0;s=b<<1;r=(c[a>>2]|0)+s|0;c[q+192>>2]=r;s=(c[a+4>>2]|0)+s|0;c[q+196>>2]=s;c[q+200>>2]=b;c[q+204>>2]=b;d=$(r<<3,s)|0;e=Uj(d)|0;c[q+184>>2]=e;if(!e){Me(3,5472,x+40|0);rb(1)}d=Uj(d)|0;c[q+188>>2]=d;if(!d){Me(3,5472,x+48|0);rb(1)}p=a+104|0;m=c[a+176>>2]|0;n=(r|0)>0?r<<1:0;if((s|0)>0){o=(r|0)>0;l=0;while(1){f=+(l-b|0);if(o){a=0;j=e;k=d;while(1){y=+(a-b|0);df(p,y,f,v,w,m)|0;g[j>>2]=+h[v>>3];g[j+4>>2]=+h[w>>3];cf(p,y,f,t,u,m)|0;g[k>>2]=+h[t>>3];g[k+4>>2]=+h[u>>3];a=a+1|0;if((a|0)>=(r|0))break;else{j=j+8|0;k=k+8|0}}}d=d+(n<<2)|0;l=l+1|0;if((l|0)>=(s|0))break;else e=e+(n<<2)|0}}i=x;return q|0}function kf(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){Vj(c[b+184>>2]|0);Vj(c[(c[a>>2]|0)+188>>2]|0);Vj(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function lf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function mf(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){a=c[a+4>>2]|0;g=($(i,g)|0)+h<<1;c[e>>2]=c[a+(g<<2)>>2];c[f>>2]=c[a+((g|1)<<2)>>2];g=0}else g=-1;return g|0}function nf(a){a=a|0;var b=0,d=0;b=Uj(8)|0;do if(b){d=Uj(a<<3)|0;c[b>>2]=d;if(!d){Vj(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function of(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function pf(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,g=0;b=+P(+(+qf(a,a)));if(b!=0.0){f=c[a>>2]|0;e=+h[f>>3];b=e<0.0?-b:b;e=e+b;h[f>>3]=e;e=1.0/+P(+(e*b));a=c[a+4>>2]|0;if((a|0)>0){d=0;do{g=f+(d<<3)|0;h[g>>3]=e*+h[g>>3];d=d+1|0}while((d|0)<(a|0))}}return +-b}function qf(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))rb(0);if((f|0)>0){e=c[a>>2]|0;a=c[b>>2]|0;b=0;d=0.0;do{d=d+ +h[e+(b<<3)>>3]*+h[a+(b<<3)>>3];b=b+1|0}while((b|0)<(f|0))}else d=0.0;return +d}function rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+8|0;D=E;w=c[a+8>>2]|0;if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){z=w+-2|0;A=C+4|0;B=D+4|0;if((w|0)>2){s=w+-1|0;t=0;do{o=$(t,w)|0;p=c[a>>2]|0;h[(c[b>>2]|0)+(t<<3)>>3]=+h[p+(o+t<<3)>>3];k=w-t+-1|0;c[A>>2]=k;u=t;t=t+1|0;l=p+(o+t<<3)|0;c[C>>2]=l;r=+pf(C);h[(c[d>>2]|0)+(u<<3)>>3]=r;if(!(r==0.0)){if((t|0)<(w|0)){m=c[b>>2]|0;n=t;do{if((t|0)<(n|0)){e=c[a>>2]|0;f=t;j=0.0;do{r=+h[e+(($(f,w)|0)+n<<3)>>3];j=j+r*+h[p+(f+o<<3)>>3];f=f+1|0}while((f|0)<(n|0))}else j=0.0;e=$(n,w)|0;if((n|0)<(w|0)){f=c[a>>2]|0;g=n;do{j=j+ +h[f+(g+e<<3)>>3]*+h[p+(g+o<<3)>>3];g=g+1|0}while((g|0)<(w|0))}h[m+(n<<3)>>3]=j;n=n+1|0}while((n|0)<(w|0))}c[B>>2]=k;c[A>>2]=k;c[C>>2]=l;c[D>>2]=(c[b>>2]|0)+(t<<3);j=+qf(C,D)*.5;if((s|0)>(u|0)){e=c[b>>2]|0;k=s;do{q=+h[p+(k+o<<3)>>3];f=e+(k<<3)|0;r=+h[f>>3]-j*q;h[f>>3]=r;f=$(k,w)|0;if((k|0)<(w|0)){g=c[a>>2]|0;l=k;do{n=g+(l+f<<3)|0;h[n>>3]=+h[n>>3]-(q*+h[e+(l<<3)>>3]+r*+h[p+(l+o<<3)>>3]);l=l+1|0}while((l|0)<(w|0))}k=k+-1|0}while((k|0)>(u|0))}}}while((t|0)<(z|0))}if((w|0)<=1){if((w|0)>0){f=0;g=c[a>>2]|0;e=c[b>>2]|0;v=27}}else{v=$(z,w)|0;g=c[a>>2]|0;e=c[b>>2]|0;h[e+(z<<3)>>3]=+h[g+(v+z<<3)>>3];f=w+-1|0;h[(c[d>>2]|0)+(z<<3)>>3]=+h[g+(f+v<<3)>>3];v=27}if((v|0)==27)h[e+(f<<3)>>3]=+h[g+(($(f,w)|0)+f<<3)>>3];if((w|0)>0){m=(w|0)>0;p=w;do{d=p;p=p+-1|0;n=$(p,w)|0;o=c[a>>2]|0;if((d|0)<=(z|0)?(x=w-p+-1|0,y=o+(n+d<<3)|0,(d|0)<(w|0)):0){e=(d|0)<(w|0);k=d;do{c[B>>2]=x;c[A>>2]=x;c[C>>2]=y;f=$(k,w)|0;c[D>>2]=(c[a>>2]|0)+(f+d<<3);j=+qf(C,D);if(e){g=c[a>>2]|0;l=d;do{v=g+(l+f<<3)|0;h[v>>3]=+h[v>>3]-j*+h[o+(l+n<<3)>>3];l=l+1|0}while((l|0)<(w|0))}k=k+1|0}while((k|0)<(w|0))}if(m){e=0;do{h[o+(e+n<<3)>>3]=0.0;e=e+1|0}while((e|0)<(w|0))}h[o+(n+p<<3)>>3]=1.0}while((d|0)>1);e=0}else e=0}else e=-1;i=E;return e|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[c>>3];g=+h[c+8>>3];e=+h[c+16>>3];d=+h[b+88>>3]+(f*+h[b+64>>3]+g*+h[b+72>>3]+e*+h[b+80>>3]);if(d==0.0)c=-1;else{i=+h[b+56>>3]+(f*+h[b+32>>3]+g*+h[b+40>>3]+e*+h[b+48>>3]);h[a>>3]=(+h[b+24>>3]+(f*+h[b>>3]+g*+h[b+8>>3]+e*+h[b+16>>3]))/d;h[a+8>>3]=i/d;c=0}return c|0}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;B=i;i=i+1072|0;y=B+1056|0;x=B+768|0;w=B+192|0;A=B+48|0;z=B;K=+h[d>>3];F=+h[e>>3];s=K*F;J=+h[d+8>>3];t=e+8|0;E=+h[t>>3];v=J*E;j=+h[d+16>>3];G=+h[e+16>>3];l=j*G;m=+h[d+24>>3];I=+h[d+32>>3];H=+h[d+40>>3];n=E*H;k=+h[d+48>>3];o=G*k;p=+h[d+56>>3];D=+h[d+64>>3];C=+h[d+72>>3];q=E*C;f=+h[d+80>>3];r=G*f;g=+h[d+88>>3];h[x>>3]=s;h[x+8>>3]=K*E;h[x+16>>3]=K*G;h[x+24>>3]=F*J;h[x+32>>3]=v;h[x+40>>3]=G*J;h[x+48>>3]=F*j;h[x+56>>3]=E*j;h[x+64>>3]=l;h[x+72>>3]=K;h[x+80>>3]=J;h[x+88>>3]=j;j=F*I;h[x+96>>3]=j;h[x+104>>3]=E*I;h[x+112>>3]=G*I;h[x+120>>3]=F*H;h[x+128>>3]=n;h[x+136>>3]=G*H;h[x+144>>3]=F*k;h[x+152>>3]=E*k;h[x+160>>3]=o;h[x+168>>3]=I;h[x+176>>3]=H;h[x+184>>3]=k;k=D*F;h[x+192>>3]=k;h[x+200>>3]=E*D;h[x+208>>3]=G*D;h[x+216>>3]=F*C;E=+h[t>>3];h[x+224>>3]=C*E;h[x+232>>3]=G*C;h[x+240>>3]=F*f;h[x+248>>3]=E*f;h[x+256>>3]=r;h[x+264>>3]=D;h[x+272>>3]=C;h[x+280>>3]=f;e=w+64|0;d=w;t=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+72|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+104>>3]=1.0;e=w+160|0;d=w+112|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+240|0;d=w+168|0;t=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+296|0;d=w+248|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=-1.0;e=w+304|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[w+336>>3]=1.0;e=w+456|0;d=w+344|0;t=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+512|0;d=w+464|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;e=w+568|0;d=w+520|0;t=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(t|0));h[e>>3]=1.0;u=0;do{t=0;do{d=A+(u*48|0)+(t<<3)|0;h[d>>3]=0.0;f=0.0;e=0;do{f=f+ +h[x+(u*96|0)+(e<<3)>>3]*+h[w+(e*48|0)+(t<<3)>>3];e=e+1|0}while((e|0)!=12);h[d>>3]=f;t=t+1|0}while((t|0)!=6);u=u+1|0}while((u|0)!=3);J=m+(s+v+l);K=p+(j+n+o);f=g+(k+q+r);g=+h[b>>3];j=+h[b+8>>3];k=+h[b+16>>3];l=+h[b+24>>3]+(J*g+K*j+f*k);m=+h[b+32>>3];n=+h[b+40>>3];o=+h[b+48>>3];p=+h[b+56>>3]+(J*m+K*n+f*o);q=+h[b+64>>3];r=+h[b+72>>3];s=+h[b+80>>3];f=+h[b+88>>3]+(J*q+K*r+f*s);if(f==0.0){Me(3,5089,y);e=-1}else{K=f*f;h[z>>3]=(g*f-l*q)/K;h[z+8>>3]=(f*j-l*r)/K;h[z+16>>3]=(f*k-l*s)/K;h[z+24>>3]=(f*m-p*q)/K;h[z+32>>3]=(f*n-p*r)/K;h[z+40>>3]=(f*o-p*s)/K;d=0;do{f=+h[z+(d*24|0)>>3];g=+h[z+(d*24|0)+8>>3];j=+h[z+(d*24|0)+16>>3];e=0;do{y=a+(d*48|0)+(e<<3)|0;h[y>>3]=0.0;K=f*+h[A+(e<<3)>>3]+0.0;h[y>>3]=K;K=K+g*+h[A+48+(e<<3)>>3];h[y>>3]=K;h[y>>3]=K+j*+h[A+96+(e<<3)>>3];e=e+1|0}while((e|0)!=6);d=d+1|0}while((d|0)!=2);e=0}i=B;return e|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j+24|0;g=j+12|0;f=j;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;b=Ue(f)|0;do if(b){a=Te(b,f)|0;if(!a){We(b)|0;d=-1;break}d=Te(b,g)|0;if(!d){We(b)|0;We(a)|0;d=-1;break}if((_e(a)|0)<0){We(b)|0;We(a)|0;We(d)|0;d=-1;break}else{Xe(h,a,d)|0;We(b)|0;We(a)|0;We(d)|0;d=0;break}}else d=-1;while(0);i=j;return d|0}function vf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;n=i;i=i+192|0;l=n+96|0;m=n;g=+h[b>>3];k=+h[b+8>>3];d=+h[b+16>>3];c=g*g+k*k+d*d;if(c==0.0){j=0.0;e=0.0;d=1.0;c=0.0}else{c=+P(+c);j=c;e=d/c;d=g/c;c=k/c}u=+h[b+24>>3];r=+h[b+32>>3];k=+h[b+40>>3];o=+R(+j);g=1.0-o;j=+S(+j);h[l>>3]=o+d*d*g;t=c*d*g;s=e*j;h[l+8>>3]=t-s;q=d*e*g;p=c*j;h[l+16>>3]=q+p;h[l+24>>3]=u;h[l+32>>3]=t+s;h[l+40>>3]=o+c*c*g;c=c*e*g;j=d*j;h[l+48>>3]=c-j;h[l+56>>3]=r;h[l+64>>3]=q-p;h[l+72>>3]=c+j;h[l+80>>3]=o+e*e*g;h[l+88>>3]=k;f=0;do{c=+h[a+(f<<5)>>3];d=+h[a+(f<<5)+8>>3];e=+h[a+(f<<5)+16>>3];b=0;do{h[m+(f<<5)+(b<<3)>>3]=c*+h[l+(b<<3)>>3]+d*+h[l+32+(b<<3)>>3]+e*+h[l+64+(b<<3)>>3];b=b+1|0}while((b|0)!=4);b=m+(f<<5)+24|0;h[b>>3]=+h[a+(f<<5)+24>>3]+ +h[b>>3];f=f+1|0}while((f|0)!=3);b=0;do{h[a+(b<<5)>>3]=+h[m+(b<<5)>>3];h[a+(b<<5)+8>>3]=+h[m+(b<<5)+8>>3];h[a+(b<<5)+16>>3]=+h[m+(b<<5)+16>>3];h[a+(b<<5)+24>>3]=+h[m+(b<<5)+24>>3];b=b+1|0}while((b|0)!=3);i=n;return 0}function wf(a){a=a|0;var b=0,d=0;b=Uj(136)|0;if(!b)b=0;else{d=0;do{h[b+(d<<5)>>3]=+h[a+(d<<5)>>3];h[b+(d<<5)+8>>3]=+h[a+(d<<5)+8>>3];h[b+(d<<5)+16>>3]=+h[a+(d<<5)+16>>3];h[b+(d<<5)+24>>3]=+h[a+(d<<5)+24>>3];d=d+1|0}while((d|0)!=3);c[b+96>>2]=10;h[b+104>>3]=.10000000149011612;h[b+112>>3]=.9900000095367432;h[b+120>>3]=4.0;h[b+128>>3]=.5}return b|0}function xf(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{Vj(b);c[a>>2]=0;b=0}return b|0}function yf(a,b){a=a|0;b=+b;if(!a)a=-1;else{h[a+128>>3]=b;a=0}return a|0}function zf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=i;i=i+176|0;l=y+168|0;k=y+160|0;u=y+48|0;w=y+64|0;v=y;s=b+8|0;g=c[s>>2]|0;do if((g|0)>=3){x=Uj(g*96|0)|0;if(!x){Me(3,5109,k);g=-1;break}t=Uj(g<<4)|0;if(!t){Me(3,5109,l);Vj(x);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);q=b+4|0;l=u+8|0;d=a+104|0;n=a+120|0;o=a+112|0;p=a+96|0;m=0.0;r=0;a:while(1){Ne(a,e,w)|0;g=c[s>>2]|0;if((g|0)>0){j=0.0;k=0;do{if((sf(u,w,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=10;break a}g=c[b>>2]|0;A=+h[g+(k<<4)>>3]-+h[u>>3];z=+h[g+(k<<4)+8>>3]-+h[l>>3];j=j+(A*A+z*z);g=k<<1;h[t+(g<<3)>>3]=A;h[t+((g|1)<<3)>>3]=z;k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}else j=0.0;j=j/+(g|0);if(j<+h[d>>3]){k=24;break}if(((r|0)>0?j<+h[n>>3]:0)?j/m>+h[o>>3]:0){k=24;break}if((r|0)==(c[p>>2]|0)){k=24;break}if((g|0)>0){k=0;do{if((tf(x+(k*12<<3)|0,a,e,(c[q>>2]|0)+(k*24|0)|0)|0)<0){k=20;break a}k=k+1|0;g=c[s>>2]|0}while((k|0)<(g|0))}if((uf(v,t,x,g<<1)|0)<0){k=22;break}vf(e,v)|0;m=j;r=r+1|0}if((k|0)==10){Af(x,t);g=-1;break}else if((k|0)==20){Af(x,t);g=-1;break}else if((k|0)==22){Af(x,t);g=-1;break}else if((k|0)==24){h[f>>3]=j;Vj(x);Vj(t);g=0;break}}else g=-1;while(0);i=y;return g|0}function Af(a,b){a=a|0;b=b|0;Vj(a);Vj(b);return}function Bf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+192|0;n=G+184|0;m=G+176|0;l=G+168|0;g=G+160|0;B=G+48|0;D=G+64|0;C=G;A=b+8|0;k=c[A>>2]|0;do if((k|0)>=4){o=~~(+(k|0)*+h[a+128>>3])+-1|0;o=(o|0)<3?3:o;F=Uj(k*96|0)|0;if(!F){Me(3,5109,g);g=-1;break}E=Uj(k<<4)|0;if(!E){Me(3,5109,l);Vj(F);g=-1;break}g=k<<3;z=Uj(g)|0;if(!z){Me(3,5109,m);Vj(F);Vj(E);g=-1;break}y=Uj(g)|0;if(!y){Me(3,5109,n);Vj(F);Vj(E);Vj(z);g=-1;break}else g=0;do{h[e+(g<<5)>>3]=+h[d+(g<<5)>>3];h[e+(g<<5)+8>>3]=+h[d+(g<<5)+8>>3];h[e+(g<<5)+16>>3]=+h[d+(g<<5)+16>>3];h[e+(g<<5)+24>>3]=+h[d+(g<<5)+24>>3];g=g+1|0}while((g|0)!=3);w=b+4|0;x=B+8|0;n=y+(o<<3)|0;d=a+104|0;o=a+120|0;t=a+112|0;u=a+96|0;r=0.0;v=0;a:while(1){Ne(a,e,D)|0;g=c[A>>2]|0;if((g|0)>0){k=0;do{if((sf(B,D,(c[w>>2]|0)+(k*24|0)|0)|0)<0){k=14;break a}g=c[b>>2]|0;q=+h[g+(k<<4)>>3]-+h[B>>3];s=+h[g+(k<<4)+8>>3]-+h[x>>3];g=k<<1;h[E+(g<<3)>>3]=q;h[E+((g|1)<<3)>>3]=s;s=q*q+s*s;h[y+(k<<3)>>3]=s;h[z+(k<<3)>>3]=s;k=k+1|0;g=c[A>>2]|0}while((k|0)<(g|0))}rj(y,g,8,1);s=+h[n>>3]*4.0;s=s<16.0?16.0:s;k=c[A>>2]|0;q=s/6.0;if((k|0)>0){j=0.0;g=0;do{p=+h[y+(g<<3)>>3];if(p>s)p=q;else{p=1.0-p/s;p=q*(1.0-p*(p*p))}j=j+p;g=g+1|0}while((g|0)<(k|0))}else j=0.0;j=j/+(k|0);if(j<+h[d>>3]){k=36;break}if(((v|0)>0?j<+h[o>>3]:0)?j/r>+h[t>>3]:0){k=36;break}if((v|0)==(c[u>>2]|0)){k=36;break}if((k|0)>0){m=0;g=0;do{p=+h[z+(m<<3)>>3];if(p<=s){k=g*6|0;l=F+(k<<3)|0;if((tf(l,a,e,(c[w>>2]|0)+(m*24|0)|0)|0)<0){k=28;break a}r=1.0-p/s;r=r*r;h[l>>3]=+h[l>>3]*r;l=F+((k|1)<<3)|0;h[l>>3]=+h[l>>3]*r;l=F+(k+2<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+3<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+4<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+5<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+6<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+7<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+8<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+9<<3)|0;h[l>>3]=r*+h[l>>3];l=F+(k+10<<3)|0;h[l>>3]=r*+h[l>>3];k=F+(k+11<<3)|0;h[k>>3]=r*+h[k>>3];k=m<<1;h[E+(g<<3)>>3]=r*+h[E+(k<<3)>>3];h[E+(g+1<<3)>>3]=r*+h[E+((k|1)<<3)>>3];k=c[A>>2]|0;g=g+2|0}m=m+1|0}while((m|0)<(k|0))}else g=0;if((g|0)<6){k=32;break}if((uf(C,E,F,g)|0)<0){k=34;break}vf(e,C)|0;r=j;v=v+1|0}if((k|0)==14){Cf(F,E,z,y);g=-1;break}else if((k|0)==28){Cf(F,E,z,y);g=-1;break}else if((k|0)==32){Cf(F,E,z,y);g=-1;break}else if((k|0)==34){Cf(F,E,z,y);g=-1;break}else if((k|0)==36){h[f>>3]=j;Vj(F);Vj(E);Vj(z);Vj(y);g=0;break}}else g=-1;while(0);i=G;return g|0}function Cf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vj(a);Vj(b);Vj(c);Vj(d);return}function Df(a,b){a=a|0;b=b|0;var c=0.0;c=+h[a>>3]-+h[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0;U=i;i=i+64|0;D=U+48|0;z=U+40|0;y=U+32|0;x=U+24|0;u=U+16|0;o=U+8|0;l=U;a:do if((e|0)>=4){g=0;while(1){if((g|0)>=(e|0))break;if(+h[d+(g*24|0)+16>>3]!=0.0){g=-1;break a}else g=g+1|0}if((((((((!(+h[a>>3]==0.0)?!(+h[a+32>>3]!=0.0):0)?(B=a+40|0,!(+h[B>>3]==0.0)):0)?!(+h[a+64>>3]!=0.0):0)?!(+h[a+72>>3]!=0.0):0)?!(+h[a+80>>3]!=1.0):0)?!(+h[a+24>>3]!=0.0):0)?!(+h[a+56>>3]!=0.0):0)?!(+h[a+88>>3]!=0.0):0){g=e<<1;C=Re(g,8)|0;if(!C){Me(3,5124,l);g=-1;break}w=Re(g,1)|0;if(!w){We(C)|0;Me(3,5150,o);g=-1;break}if(e){g=c[C>>2]|0;l=c[w>>2]|0;o=0;do{Z=d+(o*24|0)|0;V=o<<4;h[g+(V<<3)>>3]=+h[Z>>3];Y=d+(o*24|0)+8|0;h[g+((V|1)<<3)>>3]=+h[Y>>3];h[g+((V|2)<<3)>>3]=1.0;h[g+((V|3)<<3)>>3]=0.0;h[g+((V|4)<<3)>>3]=0.0;h[g+((V|5)<<3)>>3]=0.0;X=b+(o<<4)|0;h[g+((V|6)<<3)>>3]=-(+h[Z>>3]*+h[X>>3]);h[g+((V|7)<<3)>>3]=-(+h[Y>>3]*+h[X>>3]);h[g+((V|8)<<3)>>3]=0.0;h[g+((V|9)<<3)>>3]=0.0;h[g+((V|10)<<3)>>3]=0.0;h[g+((V|11)<<3)>>3]=+h[Z>>3];h[g+((V|12)<<3)>>3]=+h[Y>>3];h[g+((V|13)<<3)>>3]=1.0;W=b+(o<<4)+8|0;h[g+((V|14)<<3)>>3]=-(+h[Z>>3]*+h[W>>3]);h[g+((V|15)<<3)>>3]=-(+h[Y>>3]*+h[W>>3]);V=o<<1;h[l+(V<<3)>>3]=+h[X>>3];h[l+((V|1)<<3)>>3]=+h[W>>3];o=o+1|0}while((o|0)!=(e|0))}e=Ue(C)|0;if(!e){We(C)|0;We(w)|0;Me(3,5176,u);g=-1;break}o=Te(e,C)|0;if(!o){We(C)|0;We(w)|0;We(e)|0;Me(3,5202,x);g=-1;break}l=Te(e,w)|0;if(!l){We(C)|0;We(w)|0;We(e)|0;We(o)|0;Me(3,5228,y);g=-1;break}if((_e(o)|0)<0){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5254,z);g=-1;break}g=Te(o,l)|0;if(!g){We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;Me(3,5280,D);g=-1;break}Z=c[g>>2]|0;p=+h[Z+48>>3];S=+h[a+48>>3];t=+h[B>>3];j=(+h[Z+24>>3]-p*S)/t;s=+h[a+16>>3];T=+h[a+8>>3];r=+h[a>>3];q=(+h[Z>>3]-p*s-j*T)/r;k=+h[Z+56>>3];m=(+h[Z+32>>3]-S*k)/t;n=(+h[Z+8>>3]-s*k-T*m)/r;t=(+h[Z+40>>3]-S)/t;r=(+h[Z+16>>3]-s-T*t)/r;We(C)|0;We(w)|0;We(e)|0;We(o)|0;We(l)|0;We(g)|0;T=+P(+(p*p+(j*j+q*q)));s=+P(+(k*k+(m*m+n*n)));q=q/T;j=j/T;p=p/T;n=n/s;m=m/s;k=k/s;s=(T+s)*.5;r=r/s;T=1.0/s;if(T<0.0){O=-j;k=-k;m=-m;p=-p;n=-n;Q=-q;S=-r;R=-T}else{O=j;Q=q;S=r;R=t/s}j=k*O-m*p;q=n*p-k*Q;r=m*Q-n*O;s=+P(+(r*r+(j*j+q*q)));do if(!(s==0.0)){t=j/s;q=q/s;j=r/s;N=k*p+(m*O+n*Q);N=N<0.0?-N:N;N=(+P(+(N+1.0))+ +P(+(1.0-N)))*.5;if(Q*q-O*t!=0.0){g=0;E=Q;v=O;F=p;I=t;H=q}else{Z=Q*j-p*t!=0.0;g=Z?1:2;E=Z?Q:p;v=Z?p:O;F=Z?O:Q;I=Z?t:j;H=Z?j:q;j=Z?q:t}r=E*H;s=v*I;q=r-s;if(q==0.0){q=O;j=Q;break}G=(v*j-F*H)/q;A=N*H/q;r=s-r;q=(E*j-F*I)/r;r=N*I/r;s=G*G+q*q+1.0;t=G*A+q*r;v=t*t-s*(A*A+r*r+-1.0);if(v<0.0){q=O;j=Q;break}M=+P(+v);L=(M-t)/s;F=A+G*L;K=r+q*L;M=(-t-M)/s;G=A+G*M;r=r+q*M;Z=(g|0)==1;q=Z?H:j;s=Z?j:H;J=Z?L:K;L=Z?K:L;K=Z?M:r;H=Z?r:M;Z=(g|0)==2&(Z^1);r=Z?I:q;q=Z?q:I;M=Z?L:F;L=Z?F:L;j=Z?H:G;I=Z?G:H;if(n*s-m*q!=0.0){g=0;E=n;v=m;F=k;H=q;A=s}else{Z=n*r-k*q!=0.0;g=Z?1:2;E=Z?n:k;v=Z?k:m;F=Z?m:n;H=Z?q:r;A=Z?r:s;r=Z?s:q}s=E*A;t=v*H;q=s-t;if(q==0.0){q=O;j=Q;break}G=(v*r-F*A)/q;A=N*A/q;q=t-s;v=(E*r-F*H)/q;q=N*H/q;r=G*G+v*v+1.0;s=G*A+v*q;t=s*s-r*(A*A+q*q+-1.0);if(t<0.0){q=O;j=Q;break}t=+P(+t);k=(t-s)/r;Q=A+G*k;O=q+v*k;t=(-s-t)/r;p=A+G*t;n=q+v*t;Z=(g|0)==1;m=Z?k:O;k=Z?O:k;v=Z?t:n;t=Z?n:t;Z=(g|0)==2&(Z^1);n=Z?k:Q;k=Z?Q:k;A=Z?t:p;t=Z?p:t;p=L*k+(J*m+M*n);p=p<0.0?-p:p;q=L*t+(J*v+M*A);q=q<0.0?-q:q;r=I*k+(K*m+j*n);r=r<0.0?-r:r;s=I*t+(K*v+j*A);s=s<0.0?-s:s;if(p>3]=j;h[f+32>>3]=q;h[f+64>>3]=p;h[f+8>>3]=n;h[f+40>>3]=m;h[f+72>>3]=k;h[f+16>>3]=M/Q;h[f+48>>3]=N/Q;h[f+80>>3]=O/Q;h[f+24>>3]=S;h[f+56>>3]=R;h[f+88>>3]=T;g=0}else g=-1}else g=-1;while(0);i=U;return g|0}function Ff(a){a=a|0;Vj(c[a>>2]|0);Vj(a);return 0}function Gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,0))}function Hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+If(a,b,c,d,1))}function If(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+208|0;z=F+200|0;y=F+192|0;A=F+96|0;B=F;C=e+4|0;p=c[C>>2]|0;q=e+112|0;r=e+120|0;if((p|0)>0){u=c[e>>2]|0;v=(d|0)>0;w=(d|0)>0;x=0;do{if(!(c[u+(x*320|0)+4>>2]|0)){if(v){k=c[u+(x*320|0)>>2]|0;l=0;j=-1;do{if((c[b+(l<<8)+8>>2]|0)==(k|0)?(n=+h[b+(l<<8)+40>>3],!(n<+h[q>>3])):0)if(!((j|0)!=-1?!(+h[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{l=u+(x*320|0)+312|0;m=u+(x*320|0)|0;if(w){o=0;j=-1;do{k=c[b+(o<<8)+12>>2]|0;if((k|0)==0?(t=b+(o<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=l;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)E=20}else if((k|0)==(c[m>>2]|0))E=20;if((E|0)==20){E=0;g=+h[b+(o<<8)+48>>3];if(!(g<+h[r>>3]))if(!((j|0)!=-1?!(+h[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}x=x+1|0}while((x|0)<(p|0))}if((p|0)>0){q=0;j=0;p=0;k=0;while(1){l=c[e>>2]|0;m=c[l+(q*320|0)+304>>2]|0;do if((m|0)<0)l=p;else{o=b+(m<<8)|0;if(+ke(a,o,+h[l+(q*320|0)+8>>3],B)>4.0){c[(c[e>>2]|0)+(q*320|0)+304>>2]=-1;l=b+(m<<8)+236|0;if(c[l>>2]|0){l=p;break}c[l>>2]=7;l=p;break}l=c[o>>2]|0;if((k|0)==0|(p|0)<(l|0)){j=0;do{h[A+(j<<5)>>3]=+h[B+(j<<5)>>3];h[A+(j<<5)+8>>3]=+h[B+(j<<5)+8>>3];h[A+(j<<5)+16>>3]=+h[B+(j<<5)+16>>3];h[A+(j<<5)+24>>3]=+h[B+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3);j=q}else l=p;k=k+1|0}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=l}}else{j=0;k=0}do if((k|0)!=0?(k|0)>=(c[e+128>>2]|0):0){Ne(A,(c[e>>2]|0)+(j*320|0)+112|0,B)|0;p=k<<2;r=Uj(k<<6)|0;if(!r){Me(3,5472,y);rb(1)}q=Uj(k*96|0)|0;if(!q){Me(3,5472,z);rb(1)}l=c[C>>2]|0;if((l|0)>0){m=c[e>>2]|0;o=0;j=0;do{k=c[m+(o*320|0)+304>>2]|0;if((k|0)>=0){y=c[b+(k<<8)+16>>2]|0;d=(4-y|0)%4|0;z=j<<3;h[r+(z<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|1)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(5-y|0)%4|0;h[r+((z|2)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|3)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];d=(6-y|0)%4|0;h[r+((z|4)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)>>3];h[r+((z|5)<<3)>>3]=+h[b+(k<<8)+168+(d<<4)+8>>3];y=(7-y|0)%4|0;h[r+((z|6)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)>>3];h[r+((z|7)<<3)>>3]=+h[b+(k<<8)+168+(y<<4)+8>>3];z=j*12|0;h[q+(z<<3)>>3]=+h[m+(o*320|0)+208>>3];h[q+((z|1)<<3)>>3]=+h[m+(o*320|0)+216>>3];h[q+((z|2)<<3)>>3]=+h[m+(o*320|0)+224>>3];h[q+((z|3)<<3)>>3]=+h[m+(o*320|0)+232>>3];h[q+(z+4<<3)>>3]=+h[m+(o*320|0)+240>>3];h[q+(z+5<<3)>>3]=+h[m+(o*320|0)+248>>3];h[q+(z+6<<3)>>3]=+h[m+(o*320|0)+256>>3];h[q+(z+7<<3)>>3]=+h[m+(o*320|0)+264>>3];h[q+(z+8<<3)>>3]=+h[m+(o*320|0)+272>>3];h[q+(z+9<<3)>>3]=+h[m+(o*320|0)+280>>3];y=c[e>>2]|0;h[q+(z+10<<3)>>3]=+h[y+(o*320|0)+288>>3];h[q+(z+11<<3)>>3]=+h[y+(o*320|0)+296>>3];j=j+1|0}o=o+1|0}while((o|0)<(l|0))}m=e+104|0;k=(f|0)!=0;if(!(c[m>>2]|0)){j=e+8|0;g=+me(a,B,r,q,p,j);if(k&g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,j);if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,j)}}}}Vj(q);Vj(r)}else{g=+me(a,B,r,q,p,A);l=e+8|0;n=+me(a,l,r,q,p,l);j=g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.8)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.6)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,.4)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;if(g>=20.0){yf(c[a>>2]|0,0.0)|0;g=+ne(a,B,r,q,p,A);n=+ne(a,l,r,q,p,l);if(g>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}}}}}else if(j){j=0;do{h[e+8+(j<<5)>>3]=+h[A+(j<<5)>>3];h[e+8+(j<<5)+8>>3]=+h[A+(j<<5)+8>>3];h[e+8+(j<<5)+16>>3]=+h[A+(j<<5)+16>>3];h[e+8+(j<<5)+24>>3]=+h[A+(j<<5)+24>>3];j=j+1|0}while((j|0)!=3)}else g=n;while(0);Vj(q);Vj(r)}if(g<20.0){c[m>>2]=1;break}c[m>>2]=0;m=c[C>>2]|0;if((m|0)>0){j=c[e>>2]|0;l=0;do{k=c[j+(l*320|0)+304>>2]|0;if((k|0)>=0?(D=b+(k<<8)+236|0,(c[D>>2]|0)==0):0)c[D>>2]=8;l=l+1|0}while((l|0)<(m|0))}}else E=38;while(0);if((E|0)==38){c[e+104>>2]=0;g=-1.0}i=F;return +g}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0;U=i;i=i+2544|0;S=U+208|0;R=U+200|0;G=U+184|0;Q=U+176|0;F=U+168|0;E=U+152|0;P=U+144|0;D=U+136|0;M=U+128|0;L=U+120|0;K=U+112|0;C=U+104|0;j=U+96|0;g=U+88|0;f=U+80|0;e=U+72|0;d=U+64|0;H=U;I=U+2280|0;J=U+232|0;z=U+224|0;O=U+220|0;A=U+216|0;B=U+212|0;T=_i(a,5306)|0;a:do if(!T){c[d>>2]=a;Me(3,5308,d);d=ri(c[(qi()|0)>>2]|0)|0;c[e>>2]=5367;c[e+4>>2]=d;Me(3,5361,e);d=0}else{Kf(I,T);c[f>>2]=O;if((kj(I,5368,f)|0)!=1){c[g>>2]=a;Me(3,5371,g);Wi(T)|0;d=0;break}d=c[O>>2]|0;N=Uj(d*320|0)|0;if(!N){Me(3,5472,j);rb(1)}r=H+8|0;s=H+16|0;t=H+24|0;u=H+32|0;v=H+40|0;w=H+48|0;x=H+56|0;y=(b|0)==0;b:do if((d|0)>0){d=0;f=0;c:while(1){Kf(I,T);e=N+(d*320|0)|0;g=N+(d*320|0)+312|0;c[C>>2]=g;c[C+4>>2]=z;if((kj(I,5489,C)|0)==1){q=c[g>>2]|0;c[e>>2]=(q&-32768|0)==0&0==0?q&32767:0;c[N+(d*320|0)+4>>2]=1;f=f|2}else{if(y){e=10;break}if(!(Qe(J,a,2048,1)|0)){e=12;break}Cj(J,I,2047-(Bj(J)|0)|0)|0;q=Ke(b,J)|0;c[e>>2]=q;if((q|0)<0){e=14;break}c[N+(d*320|0)+4>>2]=0;f=f|1}Kf(I,T);e=N+(d*320|0)+8|0;c[D>>2]=e;if((kj(I,5785,D)|0)!=1){e=18;break}Kf(I,T);o=N+(d*320|0)+16|0;p=N+(d*320|0)+24|0;q=N+(d*320|0)+40|0;c[E>>2]=o;c[E+4>>2]=p;c[E+8>>2]=N+(d*320|0)+32;c[E+12>>2]=q;if((kj(I,5894,E)|0)!=4){c[F>>2]=A;c[F+4>>2]=B;if((kj(I,5910,F)|0)==2)g=0;else{e=21;break}}else g=1;do{Kf(I,T);c[G>>2]=N+(d*320|0)+16+(g<<5);c[G+4>>2]=N+(d*320|0)+16+(g<<5)+8;c[G+8>>2]=N+(d*320|0)+16+(g<<5)+16;c[G+12>>2]=N+(d*320|0)+16+(g<<5)+24;if((kj(I,5894,G)|0)!=4){e=23;break c}g=g+1|0}while((g|0)<3);Oe(o,N+(d*320|0)+112|0)|0;W=+h[e>>3];V=W*-.5;h[H>>3]=V;W=W*.5;h[r>>3]=W;h[s>>3]=W;h[t>>3]=W;h[u>>3]=W;h[v>>3]=V;h[w>>3]=V;h[x>>3]=V;e=N+(d*320|0)+48|0;g=N+(d*320|0)+56|0;j=N+(d*320|0)+72|0;k=N+(d*320|0)+80|0;l=N+(d*320|0)+88|0;m=N+(d*320|0)+104|0;n=0;do{V=+h[H+(n<<4)>>3];W=+h[H+(n<<4)+8>>3];h[N+(d*320|0)+208+(n*24|0)>>3]=+h[q>>3]+(+h[o>>3]*V+ +h[p>>3]*W);h[N+(d*320|0)+208+(n*24|0)+8>>3]=+h[j>>3]+(+h[e>>3]*V+ +h[g>>3]*W);h[N+(d*320|0)+208+(n*24|0)+16>>3]=+h[m>>3]+(+h[k>>3]*V+ +h[l>>3]*W);n=n+1|0}while((n|0)!=4);d=d+1|0;if((d|0)>=(c[O>>2]|0))break b}if((e|0)==10){c[K>>2]=a;c[K+4>>2]=I;Me(3,5496,K)}else if((e|0)==12){c[L>>2]=a;Me(3,5624,L)}else if((e|0)==14){c[M>>2]=a;c[M+4>>2]=J;Me(3,5708,M)}else if((e|0)==18){c[P>>2]=a;c[P+4>>2]=d+1;Me(3,5789,P)}else if((e|0)==21){c[Q>>2]=a;c[Q+4>>2]=d+1;Me(3,5916,Q)}else if((e|0)==23){c[R>>2]=a;c[R+4>>2]=d+1;Me(3,5916,R)}Wi(T)|0;Vj(N);d=0;break a}else f=0;while(0);Wi(T)|0;d=Uj(136)|0;if(!d){Me(3,5472,S);rb(1)}c[d>>2]=N;c[d+4>>2]=c[O>>2];c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);h[d+112>>3]=.5;h[d+120>>3]=.5}while(0);i=U;return d|0}function Kf(b,c){b=b|0;c=c|0;var d=0,e=0;a:do if(Zi(b,256,c)|0)while(1){d=Bj(b)|0;b:do if(d)while(1){d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0;if(!d)break b}while(0);switch(a[b>>0]|0){case 0:case 35:break;default:break a}if(!(Zi(b,256,c)|0))break a}while(0);return}function Lf(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+400|0;n=r+296|0;q=r+200|0;o=r+128|0;p=r;k=c[a>>2]|0;f=c[a+4>>2]|0;if((bf(a+8|0,n,q)|0)<0)Me(3,6025,r+392|0);else{j=+(f+-1|0);f=n+32|0;h[f>>3]=j*+h[n+64>>3]-+h[f>>3];f=n+40|0;h[f>>3]=j*+h[n+72>>3]-+h[f>>3];f=n+48|0;h[f>>3]=j*+h[n+80>>3]-+h[f>>3];f=n+56|0;h[f>>3]=j*+h[n+88>>3]-+h[f>>3];g=+h[n+80>>3];f=0;do{h[o+(f*24|0)>>3]=+h[n+(f<<5)>>3]/g;h[o+(f*24|0)+8>>3]=+h[n+(f<<5)+8>>3]/g;h[o+(f*24|0)+16>>3]=+h[n+(f<<5)+16>>3]/g;f=f+1|0}while((f|0)!=3);g=+(k+-1|0);h[p>>3]=+h[o>>3]*2.0/g;h[p+8>>3]=+h[o+8>>3]*2.0/g;h[p+16>>3]=+h[o+16>>3]*2.0/g+-1.0;k=p+24|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+40>>3]=+h[o+32>>3]*2.0/j;h[p+48>>3]=+h[o+40>>3]*2.0/j+-1.0;k=p+56|0;g=d-b;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[p+80>>3]=(b+d)/g;h[p+88>>3]=d*-2.0*b/g;k=p+96|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h[p+112>>3]=1.0;h[p+120>>3]=0.0;g=+h[q+24>>3];j=+h[q+56>>3];d=+h[q+88>>3];k=0;do{b=+h[p+(k<<5)>>3];f=p+(k<<5)+8|0;a=p+(k<<5)+16|0;l=+h[f>>3];m=+h[a>>3];n=0;do{h[e+((n<<2)+k<<3)>>3]=b*+h[q+(n<<3)>>3]+l*+h[q+32+(n<<3)>>3]+m*+h[q+64+(n<<3)>>3];n=n+1|0}while((n|0)!=3);h[e+(k+12<<3)>>3]=+h[p+(k<<5)+24>>3]+(b*g+ +h[f>>3]*j+ +h[a>>3]*d);k=k+1|0}while((k|0)!=4)}i=r;return}function Mf(a){a=a|0;c[496]=a;return}function Nf(){return c[496]|0}function Of(a){a=a|0;var b=0,d=0;b=a+212|0;d=c[b>>2]|0;if(d){ze(d)|0;Qd(c[b>>2]|0)|0;c[b>>2]=0}b=a+224|0;if(c[b>>2]|0){Ld(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){kf(b)|0;c[b>>2]=0}return}function Pf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(!(Cg(2044,d)|0))a=-1;else{f=Dg(2044,d)|0;a=f+196|0;b=c[a>>2]|0;if(b){Vj(b);c[a>>2]=0;c[f+200>>2]=0}Of(f);Ce(c[f+216>>2]|0)|0;Eg(2044,d)|0;d=f+248|0;e=f+252|0;a=c[d>>2]|0;if((c[e>>2]|0)!=(a|0)){b=0;do{Ff(c[a+(b<<3)+4>>2]|0)|0;b=b+1|0;a=c[d>>2]|0}while(b>>>0<(c[e>>2]|0)-a>>3>>>0)}Fg(d);Lh(d);Fg(f+248|0);Lh(f);a=0}i=g;return a|0}function Qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+208|0;g=h+192|0;f=h;e=h+196|0;if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;if((ef(d,1,f,h+184|0)|0)<0){if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;c[g>>2]=d;Me(3,6093,g);d=-1}else{d=c[521]|0;c[521]=d+1;c[e>>2]=d;ik(Gg(2064,e)|0,f|0,184)|0}i=h;return d|0}function Rf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;m=n+24|0;l=n+16|0;j=n+8|0;f=n;d=n+32|0;e=n+28|0;c[d>>2]=a;c[e>>2]=b;do if((Cg(2044,d)|0)!=0?(k=Dg(2044,d)|0,(Hg(2064,e)|0)!=0):0){g=k+8|0;ik(g|0,Gg(2064,e)|0,184)|0;e=c[g>>2]|0;d=k+204|0;b=c[k+12>>2]|0;a=k+208|0;if(!((e|0)==(c[d>>2]|0)?(b|0)==(c[a>>2]|0):0)){c[f>>2]=e;c[f+4>>2]=b;Me(2,6152,f);af(g,c[d>>2]|0,c[a>>2]|0,g)|0}Of(k);d=jf(g,15)|0;a=k+192|0;c[a>>2]=d;if(!d){Me(3,6199,j);d=-1;break}d=Md(d)|0;b=k+212|0;c[b>>2]=d;if(!d){Me(3,6237,l);d=-1;break}Nd(d,2)|0;l=Jd(g)|0;c[k+224>>2]=l;if(!l){Me(3,6274,m);d=-1;break}else{ye(c[b>>2]|0,c[k+216>>2]|0)|0;Lf(c[a>>2]|0,+h[k+232>>3],+h[k+240>>3],k+264|0);d=0;break}}else d=-1;while(0);i=n;return d|0}function Sf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;g=j;e=j+12|0;c[e>>2]=b;if(Cg(2044,e)|0){f=Dg(2044,e)|0;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;b=f+216|0;e=Ke(c[b>>2]|0,d)|0;c[f+260>>2]=e;if((e|0)<0){c[g>>2]=d;Me(3,6312,g);Ce(c[b>>2]|0)|0;Me(3,6358,h);e=-1}}else e=-1;i=j;return e|0}function Tf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;f=l+8|0;e=l+20|0;k=l;c[e>>2]=b;do if(Cg(2044,e)|0){j=Dg(2044,e)|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=c[j+212>>2]|0;d=j+216|0;h=j+220|0;e=Jf(e,c[d>>2]|0)|0;c[h>>2]=e;if(!e){Me(3,6402,f);Ce(c[d>>2]|0)|0;Me(3,6429,g);e=-1;break}switch(c[e+108>>2]|0){case 0:{Zd(b,0)|0;break}case 1:{Zd(b,2)|0;break}default:Zd(b,3)|0}b=j+248|0;d=j+252|0;f=c[d>>2]|0;e=f-(c[b>>2]|0)>>3;g=k;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=e;c[k+4>>2]=c[h>>2];if((f|0)==(c[j+256>>2]|0)){Ig(b,k);break}else{j=k;e=c[j>>2]|0;j=c[j+4>>2]|0;k=f;c[k>>2]=e;c[k+4>>2]=j;c[d>>2]=(c[d>>2]|0)+8;break}}else e=-1;while(0);i=l;return e|0}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,(b|0)>=0):0)?(f=c[e+248>>2]|0,(c[e+252>>2]|0)-f>>3>>>0>b>>>0):0)d=c[(c[f+(b<<3)+4>>2]|0)+4>>2]|0;else d=-1;i=g;return d|0}function Vf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{b=Dg(2044,b)|0;b=(c[b+252>>2]|0)-(c[b+248>>2]|0)>>3}i=d;return b|0}function Wf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+232>>3]=b;i=e;return}function Xf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+232>>3];i=e;return +b}function Yf(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)h[(Dg(2044,d)|0)+240>>3]=b;i=e;return}function Zf(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(!(Cg(2044,d)|0))b=-1.0;else b=+h[(Dg(2044,d)|0)+240>>3];i=e;return +b}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Zd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6478,e)}i=f;return}function $f(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(ae(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ag(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,g=0,j=0,k=0;k=i;i=i+16|0;j=k;d=k+8|0;c[d>>2]=a;if((((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,!(b<=0.0|b>=1.0)):0)?(f=b,g=c[e+212>>2]|0,(g|0)!=0):0)?(be(g,f)|0)==0:0){h[j>>3]=f;Me(1,6513,j)}i=k;return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f;c[b>>2]=a;if((Cg(2044,b)|0)!=0?(d=c[(Dg(2044,b)|0)+212>>2]|0,(d|0)!=0):0){a=(ce(d,e)|0)==0;i=f;return +(a?+h[e>>3]:-1.0)}i=f;return -1.0}function cg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;if(Cg(2044,d)|0)_d(c[(Dg(2044,d)|0)+212>>2]|0,b)|0;i=e;return}function dg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=-1;else{$d(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Sd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6544,e)}i=f;return}function fg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Td(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+4|0;c[d>>2]=a;if(((Cg(2044,d)|0)!=0?(e=Dg(2044,d)|0,b>>>0<=255):0)?(Ud(c[e+212>>2]|0,b)|0)==0:0){c[f>>2]=b;Me(1,6569,f)}i=g;return}function hg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Vd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Pd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6590,e)}i=f;return}function jg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Wd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Cg(2044,d)|0))b=0;else{a=(b|0)!=0;Od(c[(Dg(2044,d)|0)+212>>2]|0,a&1)|0;c[e>>2]=a?6616:6620;Me(1,6625,e)}i=f;return b|0}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else b=c[(c[(Dg(2044,b)|0)+212>>2]|0)+4834148>>2]|0;i=d;return b|0}function mg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0))b=0;else{Rd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0;b=c[d>>2]|0}i=e;return b|0}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=f+4|0;c[d>>2]=a;if((Cg(2044,d)|0)!=0?(Xd(c[(Dg(2044,d)|0)+212>>2]|0,b)|0)==0:0){c[e>>2]=b;Me(1,6647,e)}i=f;return}function og(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(Cg(2044,b)|0)){i=e;return -1}else{a=(Yd(c[(Dg(2044,b)|0)+212>>2]|0,d)|0)==0;i=e;return (a?c[d>>2]|0:-1)|0}return 0}function pg(a,b){a=a|0;b=b|0;var c=0;c=0;do{h[b+(c<<5)>>3]=+h[a+(c<<5)>>3];h[b+(c<<5)+8>>3]=+h[a+(c<<5)+8>>3];h[b+(c<<5)+16>>3]=+h[a+(c<<5)+16>>3];h[b+(c<<5)+24>>3]=+h[a+(c<<5)+24>>3];c=c+1|0}while((c|0)!=3);return}function qg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+ke(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function rg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=Dg(2044,e)|0;a=c[e+212>>2]|0;if((c[a+44>>2]|0)>(b|0)){+le(c[e+224>>2]|0,(b|0)<0?8:a+48+(b<<8)|0,264,+(d|0),264);e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function sg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){e=c[(Dg(2044,e)|0)+212>>2]|0;if((c[e+44>>2]|0)>(b|0)){c[((b|0)<0?8:e+48+(b<<8)|0)+16>>2]=d;e=0;break}else{e=c[523]|0;break}}else e=c[522]|0;while(0);i=f;return e|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;o=+h[33];h[d+168>>3]=o;k=+h[34];h[d+176>>3]=k;n=+h[35];h[d+184>>3]=n;j=+h[36];h[d+192>>3]=j;m=+h[37];h[d+200>>3]=m;g=+h[38];h[d+208>>3]=g;l=+h[39];h[d+216>>3]=l;f=+h[40];h[d+224>>3]=f;h[d+56>>3]=(o+n+m+l)*.25;h[d+64>>3]=(k+j+g+f)*.25;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function ug(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Hf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function vg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=Dg(2044,d)|0;a=c[d+248>>2]|0;if((b|0)<0?1:(c[d+252>>2]|0)-a>>3>>>0<=b>>>0){d=c[524]|0;break}else{b=c[a+(b<<3)+4>>2]|0;a=c[d+212>>2]|0;+Gf(c[d+224>>2]|0,a+48|0,c[a+44>>2]|0,b);pg(b+8|0,264);d=0;break}}else d=c[522]|0;while(0);i=e;return d|0}function wg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=c[522]|0;else{b=Dg(2044,b)|0;b=de(c[b+212>>2]|0,c[b+196>>2]|0)|0}i=d;return b|0}function xg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(Cg(2044,b)|0))b=2088;else b=(c[(Dg(2044,b)|0)+212>>2]|0)+44|0;i=d;return c[b>>2]|0}function yg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=a;do if(Cg(2044,e)|0){a=Dg(2044,e)|0;e=c[a+248>>2]|0;if((b|0)<0?1:(c[a+252>>2]|0)-e>>3>>>0<=b>>>0){e=c[524]|0;break}e=c[e+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[e+4>>2]|0)<=(d|0)){e=c[523]|0;break}else{e=c[e>>2]|0;pg(e+(d*320|0)+16|0,264);Lb(0,c[e+(d*320|0)+304>>2]|0,c[e+(d*320|0)>>2]|0,c[e+(d*320|0)+4>>2]|0,+(+h[e+(d*320|0)+8>>3]))|0;e=0;break}}else e=c[522]|0;while(0);i=f;return e|0}function zg(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;do if(Cg(2044,d)|0){d=c[(Dg(2044,d)|0)+212>>2]|0;if((c[d+44>>2]|0)>(b|0)){d=(b|0)<0?8:d+48+(b<<8)|0;Qa(1,c[d>>2]|0,c[d+4>>2]|0,c[d+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[d+20>>2]|0,c[d+24>>2]|0,+(+h[d+32>>3]),+(+h[d+40>>3]),+(+h[d+48>>3]),+(+h[d+56>>3]),+(+h[d+64>>3]),+(+h[d+72>>3]),+(+h[d+80>>3]),+(+h[d+88>>3]),+(+h[d+96>>3]),+(+h[d+104>>3]),+(+h[d+112>>3]),+(+h[d+120>>3]),+(+h[d+128>>3]),+(+h[d+136>>3]),+(+h[d+144>>3]),+(+h[d+152>>3]),+(+h[d+160>>3]),+(+h[d+168>>3]),+(+h[d+176>>3]),+(+h[d+184>>3]),+(+h[d+192>>3]),+(+h[d+200>>3]),+(+h[d+208>>3]),+(+h[d+216>>3]),+(+h[d+224>>3]),c[d+240>>2]|0)|0;d=0;break}else{d=c[523]|0;break}}else d=c[522]|0;while(0);i=e;return d|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+8|0;f=h+12|0;e=c[525]|0;c[525]=e+1;c[f>>2]=e;f=Dg(2044,f)|0;c[f>>2]=e;c[f+204>>2]=a;c[f+208>>2]=b;j=$(a<<2,b)|0;b=f+200|0;c[b>>2]=j;a=f+196|0;c[a>>2]=Uj(j)|0;j=Ae()|0;c[f+216>>2]=j;if(!j)Me(3,8285,h);Rf(e,d)|0;c[g>>2]=c[b>>2];Me(1,8322,g);Kb(2,c[f>>2]|0,c[a>>2]|0,c[b>>2]|0,f+264|0,264)|0;i=h;return c[f>>2]|0}function Bg(a){a=a|0;var b=0;a=i;i=i+16|0;b=a;Jg(8591,7);Kg(8597,3);Lg(8606,2);Lg(8617,3);Mg(8633,4);Kg(8651,4);Ng(8671,5);Jg(8683,8);Mg(8700,5);Jg(8720,9);Jg(8738,10);Mg(8760,6);Mg(8783,7);Kg(8812,6);Kg(8825,7);Jg(8838,11);Mg(8857,8);Mg(8867,9);Kg(8880,8);Kg(8893,9);Og(8912,10);Pg(8924,1);Qg(8936,1);Rg(8959,1);Qg(8982,2);Rg(9004,2);Sg(9026,1);Kg(9043,10);Sg(9060,2);Kg(9073,11);Sg(9086,3);Kg(9110,12);Tg(9134,3);Rg(9147,3);Sg(9160,4);Kg(9178,13);Sg(9196,5);Kg(9212,14);Sg(9228,6);Kg(9245,15);Ug(9262,2088);Ug(9291,2096);Ug(9319,2092);Cb(9352,680,0);Cb(9369,680,1);Cb(9385,680,0);Cb(9407,680,0);Cb(9432,680,1);Cb(9457,680,1);Cb(9482,680,100);Cb(9509,680,0);Cb(9535,680,1);Cb(9561,680,0);Cb(9588,680,0);Cb(9615,680,1);Cb(9641,680,2);Cb(9666,680,3);Cb(9704,680,4);Cb(9741,680,0);Cb(9775,680,0);Cb(9799,680,1);Cb(9825,680,2);Cb(9852,680,2);Cb(9886,680,5);h[b>>3]=.5;Vg(9904,b);Cb(9925,680,0);Cb(9944,680,1);Cb(9962,680,2);Cb(9980,680,3);Cb(9999,680,4);Cb(10021,680,3);Cb(10040,680,515);Cb(10069,680,259);Cb(10097,680,4);Cb(10116,680,772);Cb(10146,680,1028);Cb(10176,680,0);Cb(10207,680,1);Cb(10243,680,2);Cb(10277,680,3);Cb(10315,680,0);Cb(10348,680,1);Cb(10395,680,2);Cb(10437,680,3);Cb(10480,680,4);Cb(10532,680,5);Cb(10583,680,6);Cb(10628,680,7);Cb(10667,680,8);Cb(10712,680,9);i=a;return}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Dg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Cg(a,b)|0;if(!d){wh(f,a,b);xh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;b=Cg(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];uh(a,d)|0;b=1}i=f;return b|0}function Fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=a+4|0;a=c[b>>2]|0;if((a|0)!=(d|0)){do a=a+-8|0;while((a|0)!=(d|0));c[b>>2]=a}Lh(d)}return}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;f=g+8|0;e=g;d=Hg(a,b)|0;if(!d){qh(f,a,b);rh(e,a,c[f>>2]|0);d=c[e>>2]|0;c[f>>2]=0}i=g;return d+16|0}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(h)e=g&d;else e=(d>>>0)%(f>>>0)|0;b=c[(c[a>>2]|0)+(e<<2)>>2]|0;if(b)do{b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if(h)a=a&g;else a=(a>>>0)%(f>>>0)|0;if((a|0)!=(e|0)){b=0;break a}}while((c[b+8>>2]|0)!=(d|0));else b=0}else b=0;while(0);return b|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;g=a+4|0;d=c[a>>2]|0;f=((c[g>>2]|0)-d>>3)+1|0;if(f>>>0>536870911)Jh(a);e=d;d=(c[a+8>>2]|0)-e|0;if(d>>3>>>0<268435455){d=d>>2;d=d>>>0>>0?f:d}else d=536870911;nh(h,d,(c[g>>2]|0)-e>>3,a+8|0);g=h+8|0;f=c[g>>2]|0;d=b;e=c[d+4>>2]|0;b=f;c[b>>2]=c[d>>2];c[b+4>>2]=e;c[g>>2]=f+8;oh(a,h);ph(h);i=j;return}function Jg(a,b){a=a|0;b=b|0;Oa(a|0,4,2200,10911,1,b|0);return}function Kg(a,b){a=a|0;b=b|0;Oa(a|0,2,2192,10801,10,b|0);return}function Lg(a,b){a=a|0;b=b|0;Oa(a|0,3,2180,10906,12,b|0);return}function Mg(a,b){a=a|0;b=b|0;Oa(a|0,3,2168,10906,13,b|0);return}function Ng(a,b){a=a|0;b=b|0;Oa(a|0,2,2160,10801,11,b|0);return}function Og(a,b){a=a|0;b=b|0;Oa(a|0,2,2152,10797,7,b|0);return}function Pg(a,b){a=a|0;b=b|0;Oa(a|0,1,2148,10794,16,b|0);return}function Qg(a,b){a=a|0;b=b|0;Oa(a|0,3,2136,10789,1,b|0);return}function Rg(a,b){a=a|0;b=b|0;Oa(a|0,2,2128,10785,1,b|0);return}function Sg(a,b){a=a|0;b=b|0;Oa(a|0,3,2116,10780,1,b|0);return}function Tg(a,b){a=a|0;b=b|0;Oa(a|0,3,2104,10775,2,b|0);return}function Ug(a,b){a=a|0;b=b|0;Cb(a|0,680,c[b>>2]|0);return}function Vg(a,b){a=a|0;b=b|0;Cb(a|0,720,~~+h[b>>3]>>>0|0);return}function Wg(){c[511]=0;c[512]=0;c[513]=0;c[514]=0;g[515]=1.0;ub(11,2044,n|0)|0;c[516]=0;c[517]=0;c[518]=0;c[519]=0;g[520]=1.0;ub(12,2064,n|0)|0;Bg(0);return}function Xg(a){a=a|0;$g(a);return}function Yg(a){a=a|0;Zg(a);return}function Zg(a){a=a|0;var b=0;_g(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function _g(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Lh(a)}while((b|0)!=0);return}function $g(a){a=a|0;var b=0;ah(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b)Lh(b);return}function ah(a,b){a=a|0;b=b|0;if(b)do{a=b;b=c[b>>2]|0;Fg(a+264|0);Lh(a)}while((b|0)!=0);return}function bh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b,c);return}function dh(a,b){a=a|0;b=b|0;return +(+Ub[a&3](b))}function eh(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b,c);return}function fh(a){a=a|0;return Vb[a&1]()|0}function gh(a,b){a=a|0;b=b|0;Wb[a&15](b);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;i=i+16|0;d=c;ih(d,b);a=Yb[a&31](d)|0;bk(d);i=c;return a|0}function ih(a,b){a=a|0;b=b|0;ak(a,b+4|0,c[b>>2]|0);return}function jh(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b,c)|0}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;e=d;ih(e,c);a=cc[a&15](b,e)|0;bk(e);i=d;return a|0}function lh(a,b){a=a|0;b=b|0;return Yb[a&31](b)|0}function mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b,c,d)|0}function nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+12>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=Kh(b<<3)|0;c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[a+12>>2]=e+(b<<3);return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;g=a+4|0;d=b+4|0;f=(c[g>>2]|0)-e|0;h=(c[d>>2]|0)+(0-(f>>3)<<3)|0;c[d>>2]=h;ik(h|0,e|0,f|0)|0;f=c[a>>2]|0;c[a>>2]=c[d>>2];c[d>>2]=f;f=b+8|0;e=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=e;f=a+8|0;a=b+12|0;e=c[f>>2]|0;c[f>>2]=c[a>>2];c[a>>2]=e;c[b>>2]=c[d>>2];return}function ph(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=a+8|0;b=c[e>>2]|0;if((b|0)!=(d|0)){do b=b+-8|0;while((b|0)!=(d|0));c[e>>2]=b}b=c[a>>2]|0;if(b)Lh(b);return}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(200)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,184)|0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function rh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;sh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return} +function zd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Dd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}else{b[e>>1]=0;a[l>>0]=0;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}else{b[o>>1]=0;a[l>>0]=0;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function Jd(a){a=a|0;return Kd(a+8|0)|0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Uj(4)|0;if(!b){Me(3,5472,d);rb(1)}a=wf(a)|0;c[b>>2]=a;if(!a){Vj(b);b=0}i=d;return b|0}function Ld(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)b=-1;else{xf(b)|0;Vj(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function Md(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=Uj(7062432)|0;if(!b){Me(3,5472,d);rb(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;h[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=Uj($(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Me(3,5472,d+8|0);rb(1)}else{c[b+7062384>>2]=0;Nd(b,2)|0;Od(b,0)|0;c[b+7062388>>2]=-1;Pd(b,0)|0;c[b+7062392>>2]=7;c[b+7062396>>2]=0;i=d;return b|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;a:do if(a){e=a+4|0;if((c[e>>2]|0)!=(b|0)){switch(b|0){case 11:case 10:case 9:case 8:case 7:case 6:case 4:case 3:case 2:case 1:case 0:{f=0;break}case 14:case 13:case 12:case 5:{f=1;break}default:{c[d>>2]=b;Me(3,3936,d);d=-1;break a}}c[e>>2]=b;c[a+8>>2]=Pe(b)|0;d=a+7062408|0;b=c[d>>2]|0;if(b){pe(b);c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[e>>2]|0,0)|0}d=a+24|0;b=c[d>>2]|0;if(!f)switch(b|0){case 1:{c[d>>2]=4;d=0;break a}case 4:{c[d>>2]=3;d=0;break a}default:{d=0;break a}}else switch(b|0){case 0:{c[d>>2]=1;d=0;break a}case 3:{c[d>>2]=4;d=0;break a}default:{d=0;break a}}}else d=0}else d=-1;while(0);i=g;return d|0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;Vj(c[d>>2]|0);c[d>>2]=0;d=0;break}b=Uj($(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Me(3,5472,e);rb(1)}else d=0}else d=0;else d=-1;while(0);i=f;return d|0}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e){pe(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{c[d>>2]=oe(c[a+36>>2]|0,c[a+40>>2]|0,c[a+4>>2]|0,0)|0;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:{b=0;break}default:{Me(3,3985,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[760+(b<<2)>>2];Me(3,4059,h);b=0}else b=0}else b=0}else b=-1;i=j;return b|0}function Qd(a){a=a|0;var b=0,d=0;if(!a)b=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d){pe(d);c[b>>2]=0}Vj(c[a+4834144>>2]|0);Vj(c[a+4834148>>2]|0);Vj(a);b=0}return b|0}function Rd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function Sd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function Td(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ud(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Vd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Wd(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Xd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Yd(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Zd(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function _d(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function $d(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function ae(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function be(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){h[a+7062416>>3]=b;a=0}else a=-1;return a|0}function ce(a,b){a=a|0;b=b|0;if(!a)a=-1;else{h[b>>3]=+h[a+7062416>>3];a=0}return a|0}function de(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0.0,S=0.0;Q=i;i=i+80|0;M=Q+32|0;G=Q+24|0;z=Q;y=Q+52|0;D=Q+40|0;L=Q+64|0;P=a+44|0;c[P>>2]=0;J=a+7062388|0;f=c[J>>2]|0;a:do if((f|0)==4){I=a+7062396|0;e=c[I>>2]|0;do if((e|0)>0){f=4;e=e+-1|0}else{C=a+16|0;F=c[C>>2]|0;E=a+7062400|0;A=(c[E>>2]|0)+F|0;A=(A|0)>255?255:A;c[y>>2]=A;H=a+7062404|0;B=F-(c[H>>2]|0)|0;B=(B|0)<0?0:B;c[y+4>>2]=B;c[y+8>>2]=F;e=a+36|0;f=a+40|0;g=a+4|0;k=a+12|0;l=a+20|0;m=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+7062384|0;s=a+24|0;t=a+32|0;u=a+7062416|0;v=a+48|0;w=a+7062424|0;x=0;do{if((xe(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[a>>2]|0,c[k>>2]|0,c[y+(x<<2)>>2]|0,c[l>>2]|0,m,0)|0)<0){e=-1;break a}if((fe(c[e>>2]|0,c[f>>2]|0,m,c[l>>2]|0,1e6,70,1.0,p,q)|0)<0){e=-1;break a}if((je(b,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,p,c[q>>2]|0,c[r>>2]|0,c[l>>2]|0,c[s>>2]|0,(c[t>>2]|0)+184|0,+h[u>>3],v,P,c[w>>2]|0)|0)<0){e=-1;break a}c[D+(x<<2)>>2]=c[P>>2];x=x+1|0}while((x|0)<3);if((c[a>>2]|0)==1){N=c[D+4>>2]|0;g=c[D+8>>2]|0;f=c[D>>2]|0;c[z>>2]=B;c[z+4>>2]=N;c[z+8>>2]=F;c[z+12>>2]=g;c[z+16>>2]=A;c[z+20>>2]=f;Me(3,4153,z)}else{f=c[D>>2]|0;g=c[D+8>>2]|0}e=c[D+4>>2]|0;if((f|0)>(g|0)|(e|0)>(g|0)){f=(f|0)>=(e|0)?A:B;c[C>>2]=f;e=f-F|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[H>>2]=e;if((c[a>>2]|0)==1){c[G>>2]=f;Me(3,4229,G)}f=c[J>>2]|0;e=c[a+7062392>>2]|0;break}e=c[E>>2]|0;f=c[H>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[H>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+F|0)>254){c[E>>2]=1;e=1}if((F|0)<=(e|0))c[H>>2]=1;c[I>>2]=c[a+7062392>>2];N=47;break a}while(0);c[I>>2]=e;N=30}else N=30;while(0);b:do if((N|0)==30){c:do switch(f|0){case 3:{f=a+7062408|0;e=we(c[f>>2]|0,b,9,-7)|0;if((e|0)<0)break b;e=c[f>>2]|0;f=a+4834144|0;e=xe(c[e>>2]|0,c[e+8>>2]|0,c[e+12>>2]|0,5,c[a>>2]|0,c[a+12>>2]|0,0,0,f,c[e+4>>2]|0)|0;if((e|0)<0)break b;e=a+36|0;g=a+40|0;k=a+20|0;break}case 2:case 1:{g=a+7062396|0;e=c[g>>2]|0;if((e|0)>0){c[g>>2]=e+-1;N=44;break c}e=c[a+7062408>>2]|0;if((f|0)==1)e=ue(e,b,L)|0;else e=ve(e,b,L)|0;if((e|0)<0)break b;e=a+16|0;if((c[a>>2]|0)==1?(K=d[L>>0]|0,(c[e>>2]|0)!=(K|0)):0){c[M>>2]=(c[J>>2]|0)==1?4281:4288;c[M+4>>2]=K;Me(3,4293,M)}c[e>>2]=d[L>>0];c[g>>2]=c[a+7062392>>2];N=44;break}default:N=44}while(0);if((N|0)==44){e=a+36|0;g=a+40|0;k=a+20|0;f=a+4834144|0;if((xe(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[k>>2]|0,f,0)|0)<0){e=-1;break}}l=a+15416|0;m=a+15408|0;if((fe(c[e>>2]|0,c[g>>2]|0,f,c[k>>2]|0,1e6,70,1.0,l,m)|0)>=0?(je(b,c[e>>2]|0,c[g>>2]|0,c[a+4>>2]|0,l,c[m>>2]|0,c[a+7062384>>2]|0,c[k>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+h[a+7062416>>3],a+48|0,P,c[a+7062424>>2]|0)|0)>=0:0)N=47;else e=-1}while(0);d:do if((N|0)==47){t=a+28|0;if((c[t>>2]|0)==1){ee(a);e=0;break}u=a+4818296|0;r=a+24|0;q=c[u>>2]|0;if((q|0)>0){s=0;do{f=c[P>>2]|0;g=a+4818304+(s*264|0)+56|0;k=a+4818304+(s*264|0)+64|0;if((f|0)>0){o=+(c[a+4818304+(s*264|0)>>2]|0);e=-1;l=0;n=.5;while(1){j=+(c[a+48+(l<<8)>>2]|0);R=o/j;if(!(R<.7|R>1.43)?(R=+h[a+48+(l<<8)+56>>3]-+h[g>>3],O=+h[a+48+(l<<8)+64>>3]-+h[k>>3],O=(R*R+O*O)/j,O=(f|0)){p=e;break}else n=j}}else p=-1;e:do if((p|0)>-1){m=c[r>>2]|0;switch(m|0){case 2:case 1:case 0:break;case 4:case 3:{g=a+48+(p<<8)+40|0;j=+h[a+4818304+(s*264|0)+40>>3];if(!(+h[g>>3]>3]<+h[f>>3]))break e}else{f=a+4818304+(s*264|0)+48|0;e=a+48+(p<<8)+48|0}h[g>>3]=j;c[a+48+(p<<8)+8>>2]=c[a+4818304+(s*264|0)+8>>2];h[e>>3]=+h[f>>3];c[a+48+(p<<8)+12>>2]=c[a+4818304+(s*264|0)+12>>2];e=-1;n=1.0e8;g=0;while(1){j=0.0;f=0;do{b=(f+g|0)%4|0;o=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(o*o+R*R);f=f+1|0}while((f|0)!=4);f=j>2]=(b+(c[a+4818304+(s*264|0)+20>>2]|0)|0)%4|0;c[a+48+(p<<8)+24>>2]=(b+(c[a+4818304+(s*264|0)+24>>2]|0)|0)%4|0;break e}default:{e=-1;break d}}e=a+48+(p<<8)+32|0;o=+h[a+4818304+(s*264|0)+32>>3];if(+h[e>>3]>3]=o;l=c[a+4818304+(s*264|0)+4>>2]|0;c[a+48+(p<<8)+4>>2]=l;g=a+4818304+(s*264|0)+16|0;e=-1;n=1.0e8;k=0;while(1){j=0.0;f=0;do{b=(f+k|0)%4|0;S=+h[a+4818304+(s*264|0)+168+(f<<4)>>3]-+h[a+48+(p<<8)+168+(b<<4)>>3];R=+h[a+4818304+(s*264|0)+168+(f<<4)+8>>3]-+h[a+48+(p<<8)+168+(b<<4)+8>>3];j=j+(S*S+R*R);f=f+1|0}while((f|0)!=4);if(j>2]|0)|0)%4|0;else j=n;k=k+1|0;if((k|0)==4)break;else n=j}c[a+48+(p<<8)+16>>2]=e;if(m>>>0<2){c[a+48+(p<<8)+8>>2]=l;h[a+48+(p<<8)+40>>3]=o;c[a+48+(p<<8)+20>>2]=e;break}else{c[a+48+(p<<8)+12>>2]=l;h[a+48+(p<<8)+48>>3]=o;c[a+48+(p<<8)+24>>2]=e;break}}}while(0);s=s+1|0}while((s|0)<(q|0))}ee(a);if((c[u>>2]|0)>0){g=0;e=0;do{f=a+4818304+(g*264|0)|0;N=a+4818304+(g*264|0)+256|0;b=(c[N>>2]|0)+1|0;c[N>>2]=b;if((b|0)<4){if((g|0)!=(e|0))ik(a+4818304+(e*264|0)|0,f|0,264)|0;e=e+1|0}g=g+1|0}while((g|0)<(c[u>>2]|0))}else e=0;c[u>>2]=e;e=c[P>>2]|0;f:do if((e|0)>0){m=0;do{k=a+48+(m<<8)|0;g=c[a+48+(m<<8)+4>>2]|0;if((g|0)>=0){l=c[u>>2]|0;g:do if((l|0)>0){f=0;do{if((c[a+4818304+(f*264|0)+4>>2]|0)==(g|0))break g;f=f+1|0}while((f|0)<(l|0))}else f=0;while(0);if((f|0)==(l|0)){if((l|0)==60)break f;c[u>>2]=l+1}ik(a+4818304+(f*264|0)|0,k|0,256)|0;c[a+4818304+(f*264|0)+256>>2]=1}m=m+1|0;e=c[P>>2]|0}while((m|0)<(e|0))}while(0);if((c[t>>2]|0)!=2?(c[u>>2]|0)>0:0){l=0;while(1){g=a+4818304+(l*264|0)+56|0;k=a+4818304+(l*264|0)+64|0;h:do if((e|0)>0){n=+(c[a+4818304+(l*264|0)>>2]|0);f=0;do{j=+(c[a+48+(f<<8)>>2]|0);S=n/j;if(!(S<.7|S>1.43)?(R=+h[a+48+(f<<8)+56>>3]-+h[g>>3],S=+h[a+48+(f<<8)+64>>3]-+h[k>>3],(R*R+S*S)/j<.5):0)break h;f=f+1|0}while((f|0)<(e|0))}else f=0;while(0);if((f|0)==(e|0)){ik(a+48+(e<<8)|0,a+4818304+(l*264|0)|0,256)|0;e=(c[P>>2]|0)+1|0;c[P>>2]=e}l=l+1|0;if((l|0)>=(c[u>>2]|0)){e=0;break}}}else e=0}while(0);i=Q;return e|0}function ee(a){a=a|0;var b=0,d=0,e=0,f=0;switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+8>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}case 2:{d=c[a+44>>2]|0;if((d|0)>0){e=0;do{b=a+48+(e<<8)+4|0;if((c[b>>2]|0)>-1?+h[a+48+(e<<8)+32>>3]<.5:0){c[a+48+(e<<8)+12>>2]=-1;c[b>>2]=-1;c[a+48+(e<<8)+236>>2]=6}e=e+1|0}while((e|0)<(d|0))}break}default:{e=c[a+44>>2]|0;if((e|0)>0){f=0;do{b=a+48+(f<<8)+8|0;if((c[b>>2]|0)>-1?+h[a+48+(f<<8)+40>>3]<.5:0){c[b>>2]=-1;d=0}else d=1;b=a+48+(f<<8)+12|0;if(((c[b>>2]|0)>-1?+h[a+48+(f<<8)+48>>3]<.5:0)?(c[b>>2]=-1,(d|0)==0):0)c[a+48+(f<<8)+236>>2]=6;f=f+1|0}while((f|0)<(e|0))}}}return}function fe(a,b,d,e,f,g,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;k=k|0;l=l|0;var m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+96|0;F=L+56|0;H=L+48|0;G=L+8|0;I=L;K=(e|0)==1;if(K){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;g=(g|0)/4|0}c[l>>2]=0;C=d+8|0;D=a+-2|0;z=b+-2|0;A=d+1179664|0;a:do if((c[C>>2]|0)>0){B=0;while(1){w=d+12+(B<<2)|0;y=c[w>>2]|0;b:do if(((((!((y|0)<(g|0)|(y|0)>(f|0))?(E=d+131084+(B<<4)|0,(c[E>>2]|0)!=1):0)?(c[d+131084+(B<<4)+4>>2]|0)!=(D|0):0)?(c[d+131084+(B<<4)+8>>2]|0)!=1:0)?(c[d+131084+(B<<4)+12>>2]|0)!=(z|0):0)?(ge(c[d>>2]|0,a,0,A,B+1|0,E,k+((c[l>>2]|0)*80048|0)|0)|0)>=0:0){t=c[w>>2]|0;x=c[l>>2]|0;u=k+(x*80048|0)+28|0;b=c[u>>2]|0;v=k+(x*80048|0)+40028|0;n=c[v>>2]|0;y=k+(x*80048|0)+24|0;o=(c[y>>2]|0)+-1|0;if((o|0)>1){r=0;s=1;e=0;while(1){p=(c[k+(x*80048|0)+28+(s<<2)>>2]|0)-b|0;p=$(p,p)|0;q=(c[k+(x*80048|0)+40028+(s<<2)>>2]|0)-n|0;p=($(q,q)|0)+p|0;q=(p|0)>(r|0);e=q?s:e;s=s+1|0;if((s|0)>=(o|0))break;else r=q?p:r}}else e=0;m=+(t|0)/.75*.01*j;c[H>>2]=0;c[I>>2]=0;c:do if((he(u,v,0,e,m,F,H)|0)>=0?(he(u,v,e,(c[y>>2]|0)+-1|0,m,G,I)|0)>=0:0){b=c[H>>2]|0;n=c[I>>2]|0;do if((b|0)==1&(n|0)==1){b=c[G>>2]|0;n=c[F>>2]|0}else{if((b|0)>1&(n|0)==0){b=(e|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,0,b,m,F,H)|0)<0)break c;if((he(u,v,b,e,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=e;n=c[F>>2]|0;e=c[G>>2]|0;break}if(!((b|0)==0&(n|0)>1))break c;b=(e+-1+(c[y>>2]|0)|0)/2|0;c[I>>2]=0;c[H>>2]=0;if((he(u,v,e,b,m,F,H)|0)<0)break c;if((he(u,v,b,(c[y>>2]|0)+-1|0,m,G,I)|0)<0)break c;if(!((c[H>>2]|0)==1&(c[I>>2]|0)==1))break c;b=c[G>>2]|0;n=e;e=c[F>>2]|0}while(0);c[k+(x*80048|0)+80028>>2]=0;c[k+(x*80048|0)+80032>>2]=n;c[k+(x*80048|0)+80036>>2]=e;c[k+(x*80048|0)+80040>>2]=b;c[k+(x*80048|0)+80044>>2]=(c[y>>2]|0)+-1;c[k+((c[l>>2]|0)*80048|0)>>2]=c[w>>2];y=c[l>>2]|0;h[k+(y*80048|0)+8>>3]=+h[d+655376+(B<<4)>>3];h[k+(y*80048|0)+16>>3]=+h[d+655376+(B<<4)+8>>3];y=y+1|0;c[l>>2]=y;if((y|0)==60){e=60;break a}else break b}while(0)}while(0);B=B+1|0;if((B|0)>=(c[C>>2]|0)){J=4;break}}}else J=4;while(0);if((J|0)==4)e=c[l>>2]|0;if((e|0)>0){o=0;do{a=o;o=o+1|0;g=k+(a*80048|0)+16|0;n=k+(a*80048|0)|0;if((o|0)<(e|0)){j=+h[k+(a*80048|0)+8>>3];f=o;do{M=j-+h[k+(f*80048|0)+8>>3];m=+h[g>>3]-+h[k+(f*80048|0)+16>>3];m=M*M+m*m;e=c[n>>2]|0;a=k+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(m<+((e|0)/4|0|0))c[a>>2]=0}else if(m<+((b|0)/4|0|0))c[n>>2]=0;f=f+1|0;e=c[l>>2]|0}while((f|0)<(e|0))}}while((o|0)<(e|0))}if((e|0)>0){f=0;do{if(!(c[k+(f*80048|0)>>2]|0)){a=f+1|0;if((a|0)<(e|0)){e=f;b=a;while(1){ik(k+(e*80048|0)|0,k+(b*80048|0)|0,80048)|0;e=c[l>>2]|0;a=b+1|0;if((a|0)<(e|0)){e=b;b=a}else break}}e=e+-1|0;c[l>>2]=e}f=f+1|0}while((f|0)<(e|0))}if(K&(e|0)>0){b=0;while(1){c[k>>2]=c[k>>2]<<2;e=k+8|0;h[e>>3]=+h[e>>3]*2.0;e=k+16|0;h[e>>3]=+h[e>>3]*2.0;e=k+24|0;if((c[e>>2]|0)>0){a=0;do{K=k+28+(a<<2)|0;c[K>>2]=c[K>>2]<<1;K=k+40028+(a<<2)|0;c[K>>2]=c[K>>2]<<1;a=a+1|0}while((a|0)<(c[e>>2]|0))}b=b+1|0;if((b|0)>=(c[l>>2]|0))break;else k=k+80048|0}}i=L;return 0}function ge(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+80032|0;p=w+16|0;o=w+8|0;l=w;u=w+40024|0;v=w+24|0;t=c[h+8>>2]|0;e=c[h>>2]|0;h=c[h+4>>2]|0;a:do if((e|0)<=(h|0)){k=e;e=a+(($(t,d)|0)+e<<1)|0;while(1){s=b[e>>1]|0;if(s<<16>>16>0?(c[f+((s<<16>>16)+-1<<2)>>2]|0)==(g|0):0){n=k;break}if((k|0)<(h|0)){k=k+1|0;e=e+2|0}else{x=6;break a}}q=j+24|0;c[q>>2]=1;r=j+28|0;c[r>>2]=n;s=j+40028|0;c[s>>2]=t;f=t;m=n;k=1;e=5;while(1){h=(e+5|0)%8|0;e=0;while(1){g=c[776+(h<<2)>>2]|0;l=c[808+(h<<2)>>2]|0;if((b[a+(l+m+($(g+f|0,d)|0)<<1)>>1]|0)>0){e=g;g=h;break}e=e+1|0;h=(h+1|0)%8|0;if((e|0)>=8){x=11;break}}if((x|0)==11){x=0;if((e|0)==8){x=13;break}l=c[808+(h<<2)>>2]|0;e=c[776+(h<<2)>>2]|0;g=h}c[j+28+(k<<2)>>2]=l+m;h=c[q>>2]|0;c[j+40028+(h<<2)>>2]=e+(c[j+40028+(h+-1<<2)>>2]|0);e=c[q>>2]|0;h=j+28+(e<<2)|0;if((c[h>>2]|0)==(n|0)?(c[j+40028+(e<<2)>>2]|0)==(t|0):0){f=e;x=16;break}k=e+1|0;c[q>>2]=k;if((k|0)==9999){x=19;break}f=c[j+40028+(e<<2)>>2]|0;m=c[h>>2]|0;e=g}if((x|0)==13){Me(3,4347,o);e=-1;break}else if((x|0)==16){if((f|0)>1){l=0;g=1;h=0;while(1){e=(c[j+28+(g<<2)>>2]|0)-n|0;e=$(e,e)|0;k=(c[j+40028+(g<<2)>>2]|0)-t|0;e=($(k,k)|0)+e|0;k=(e|0)>(l|0);h=k?g:h;g=g+1|0;if((g|0)>=(f|0))break;else l=k?e:l}}else h=0;if((h|0)>0){e=0;do{c[u+(e<<2)>>2]=c[j+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}if((h|0)<(f|0)){e=h;do{t=e-h|0;c[j+28+(t<<2)>>2]=c[j+28+(e<<2)>>2];c[j+40028+(t<<2)>>2]=c[j+40028+(e<<2)>>2];e=e+1|0}while((e|0)<(c[q>>2]|0))}if((h|0)>0){e=0;do{t=e-h|0;c[j+28+((c[q>>2]|0)+t<<2)>>2]=c[u+(e<<2)>>2];c[j+40028+((c[q>>2]|0)+t<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}while((e|0)<(h|0))}c[j+28+(c[q>>2]<<2)>>2]=c[r>>2];c[j+40028+(c[q>>2]<<2)>>2]=c[s>>2];c[q>>2]=(c[q>>2]|0)+1;e=0;break}else if((x|0)==19){Me(3,4354,p);e=-1;break}}else x=6;while(0);if((x|0)==6){Me(3,4340,l);e=-1}i=w;return e|0}function he(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0.0;i=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;o=+(i-q|0);l=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(l-r|0);k=+(($(r,q)|0)-($(l,i)|0)|0);i=d+1|0;if((i|0)<(e|0)){j=0.0;l=i;do{s=k+(o*+(c[a+(l<<2)>>2]|0)+m*+(c[b+(l<<2)>>2]|0));s=s*s;r=s>j;j=r?s:j;i=r?l:i;l=l+1|0}while((l|0)<(e|0))}else j=0.0;if(j/(o*o+m*m)>f)if(((he(a,b,d,i,f,g,h)|0)>=0?(n=c[h>>2]|0,(n|0)<=5):0)?(c[g+(n<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(he(a,b,i,e,f,g,h)|0)>=0):0)p=7;else i=-1;else p=7;if((p|0)==7)i=0;return i|0}function ie(a,b,d,e,f,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;var l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+16|0;t=y+4|0;u=y;v=nf(2)|0;w=nf(2)|0;x=Re(2,2)|0;q=0;a:while(1){r=q;q=q+1|0;s=c[e+(q<<2)>>2]|0;l=c[e+(r<<2)>>2]|0;p=+(s+1-l|0)*.05+.5;l=~~(+(l|0)+p);s=~~(+(s|0)-p)-l|0;n=s+1|0;d=Re(n,2)|0;if((s|0)>-1){s=0;do{z=s+l|0;if((mf(f,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),t,u)|0)<0){l=10;break a}z=s<<1;A=c[d>>2]|0;h[A+(z<<3)>>3]=+g[t>>2];h[A+((z|1)<<3)>>3]=+g[u>>2];s=s+1|0}while((s|0)<(n|0))}if((Ye(d,x,v,w)|0)<0){l=10;break}A=c[x>>2]|0;o=+h[A+8>>3];h[j+(r*24|0)>>3]=o;p=-+h[A>>3];h[j+(r*24|0)+8>>3]=p;A=c[w>>2]|0;h[j+(r*24|0)+16>>3]=-(o*+h[A>>3]+ +h[A+8>>3]*p);We(d)|0;if((q|0)>=4){l=7;break}}b:do if((l|0)==7){We(x)|0;of(w)|0;of(v)|0;q=0;while(1){d=(q+3|0)%4|0;l=j+(d*24|0)|0;m=+h[j+(q*24|0)+8>>3];n=j+(q*24|0)|0;o=+h[j+(d*24|0)+8>>3];p=+h[l>>3]*m-+h[n>>3]*o;if(+O(+p)<.0001){d=-1;break b}A=j+(q*24|0)+16|0;z=j+(d*24|0)+16|0;h[k+(q<<4)>>3]=(o*+h[A>>3]-m*+h[z>>3])/p;h[k+(q<<4)+8>>3]=(+h[n>>3]*+h[z>>3]-+h[l>>3]*+h[A>>3])/p;q=q+1|0;if((q|0)>=4){d=0;break}}}else if((l|0)==10){We(d)|0;We(x)|0;of(w)|0;of(v)|0;d=-1}while(0);i=y;return d|0}function je(a,b,d,e,f,j,k,l,m,n,o,p,q,r){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;D=F+4|0;E=F;z=m>>>0<2;A=(m|0)==2;if((j|0)>0){C=0;s=0;do{c[p+(s<<8)>>2]=c[f+(C*80048|0)>>2];if((mf(n,+h[f+(C*80048|0)+8>>3],+h[f+(C*80048|0)+16>>3],D,E)|0)>=0?(h[p+(s<<8)+56>>3]=+g[D>>2],h[p+(s<<8)+64>>3]=+g[E>>2],B=p+(s<<8)+168|0,(ie(f+(C*80048|0)+28|0,f+(C*80048|0)+40028|0,c[f+(C*80048|0)+24>>2]|0,f+(C*80048|0)+80028|0,n,p+(s<<8)+72|0,B)|0)>=0):0){t=p+(s<<8)+8|0;u=p+(s<<8)+20|0;v=p+(s<<8)+40|0;w=p+(s<<8)+12|0;x=p+(s<<8)+24|0;y=p+(s<<8)+48|0;switch(De(k,l,m,a,b,d,e,n,B,o,t,u,v,w,x,y,r,p+(s<<8)+240|0,p+(s<<8)+248|0)|0){case 0:{c[p+(s<<8)+236>>2]=0;break}case -1:{c[p+(s<<8)+236>>2]=2;break}case -2:{c[p+(s<<8)+236>>2]=3;break}case -3:{c[p+(s<<8)+236>>2]=4;break}case -4:{c[p+(s<<8)+236>>2]=5;break}case -5:{c[p+(s<<8)+236>>2]=9;break}case -6:{c[p+(s<<8)+236>>2]=1;break}default:{}}if(!z){if(A){c[p+(s<<8)+4>>2]=c[w>>2];c[p+(s<<8)+16>>2]=c[x>>2];h[p+(s<<8)+32>>3]=+h[y>>3]}}else{c[p+(s<<8)+4>>2]=c[t>>2];c[p+(s<<8)+16>>2]=c[u>>2];h[p+(s<<8)+32>>3]=+h[v>>3]}s=s+1|0}C=C+1|0}while((C|0)<(j|0))}else s=0;c[q>>2]=s;i=F;return 0}function ke(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;k=i;i=i+288|0;m=k+200|0;l=k+104|0;f=k+264|0;j=k+8|0;g=k;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=d*-.5;h[l>>3]=n;d=d*.5;h[l+8>>3]=d;h[l+16>>3]=0.0;h[l+24>>3]=d;h[l+32>>3]=d;h[l+40>>3]=0.0;h[l+48>>3]=d;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=4;if((Ef(c[a>>2]|0,m,l,4,j)|0)<0)d=1.0e8;else{p=(zf(c[a>>2]|0,f,j,e,g)|0)<0;d=p?1.0e8:+h[g>>3]}i=k;return +d}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;j=i;i=i+192|0;m=j+104|0;l=j+8|0;k=j+168|0;g=j;o=c[b+16>>2]|0;p=(4-o|0)%4|0;h[m>>3]=+h[b+168+(p<<4)>>3];h[m+8>>3]=+h[b+168+(p<<4)+8>>3];p=(5-o|0)%4|0;h[m+16>>3]=+h[b+168+(p<<4)>>3];h[m+24>>3]=+h[b+168+(p<<4)+8>>3];p=(6-o|0)%4|0;h[m+32>>3]=+h[b+168+(p<<4)>>3];h[m+40>>3]=+h[b+168+(p<<4)+8>>3];o=(7-o|0)%4|0;h[m+48>>3]=+h[b+168+(o<<4)>>3];h[m+56>>3]=+h[b+168+(o<<4)+8>>3];n=e*-.5;h[l>>3]=n;e=e*.5;h[l+8>>3]=e;h[l+16>>3]=0.0;h[l+24>>3]=e;h[l+32>>3]=e;h[l+40>>3]=0.0;h[l+48>>3]=e;h[l+56>>3]=n;h[l+64>>3]=0.0;h[l+72>>3]=n;h[l+80>>3]=n;h[l+88>>3]=0.0;c[k>>2]=m;c[k+4>>2]=l;c[k+8>>2]=4;b=(zf(c[a>>2]|0,k,d,f,g)|0)<0;i=j;return +(b?1.0e8:+h[g>>3])}function me(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((zf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function ne(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;n=p;j=Uj(f<<4)|0;c[m>>2]=j;if(!j){Me(3,5472,p+8|0);rb(1)}k=Uj(f*24|0)|0;l=m+4|0;c[l>>2]=k;if(!k){Me(3,5472,p+16|0);rb(1)}if((f|0)>0){o=0;do{h[j+(o<<4)>>3]=+h[d+(o<<4)>>3];h[j+(o<<4)+8>>3]=+h[d+(o<<4)+8>>3];h[k+(o*24|0)>>3]=+h[e+(o*24|0)>>3];h[k+(o*24|0)+8>>3]=+h[e+(o*24|0)+8>>3];h[k+(o*24|0)+16>>3]=+h[e+(o*24|0)+16>>3];o=o+1|0}while((o|0)<(f|0))}c[m+8>>2]=f;if((Bf(c[a>>2]|0,m,b,g,n)|0)<0)h[n>>3]=1.0e8;Vj(c[m>>2]|0);Vj(c[l>>2]|0);i=p;return +(+h[n>>3])}function oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Uj(2080)|0;a:do if(f){c[f+2068>>2]=d;b:do if(!e){switch(d|0){case 5:case 12:case 13:case 14:break;default:{g=4;break b}}c[f+2076>>2]=0}else g=4;while(0);do if((g|0)==4){g=Uj($(b,a)|0)|0;c[f>>2]=g;if(!g){Vj(f);f=0;break a}else{c[f+2076>>2]=1;break}}while(0);c[f+2072>>2]=e;c[f+4>>2]=0;c[f+8>>2]=a;c[f+12>>2]=b}while(0);return f|0}function pe(a){a=a|0;if(a){if(c[a+2076>>2]|0)Vj(c[a>>2]|0);Vj(c[a+4>>2]|0);Vj(a)}return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;g=k;f=c[b+2068>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:if(!(c[b+2072>>2]|0)){c[b>>2]=e;f=0;break a}else{ik(c[b>>2]|0,e|0,$(c[b+12>>2]|0,c[b+8>>2]|0)|0)|0;f=0;break a}default:{if((f&-2|0)==2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j|2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if((f&-3|0)==4){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j|2)>>0]|0)+(d[e+(j|1)>>0]|0)+(d[e+(j|3)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+4|0}}if(f>>>0<2){f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=(((d[e+(j+1)>>0]|0)+(d[e+j>>0]|0)+(d[e+(j+2)>>0]|0)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break a}else j=j+3|0}}switch(f|0){case 8:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+j>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 7:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){a[(c[b>>2]|0)+h>>0]=a[e+(j|1)>>0]|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 9:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;l=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&248)+10+(m<<5&224)+(l>>>3&28)+(l<<3&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 10:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){l=d[e+j>>0]|0;m=d[e+(j|1)>>0]|0;a[(c[b>>2]|0)+h>>0]=(((l&248)+12+(l<<5&224)+(m>>>3&24)+(m<<2&248)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}case 11:{f=b+8|0;g=b+12|0;if(!($(c[g>>2]|0,c[f>>2]|0)|0)){f=0;break a}else{h=0;j=0}while(1){m=d[e+j>>0]|0;a[(c[b>>2]|0)+h>>0]=(((m&240)+24+(m<<4&240)+((d[e+(j|1)>>0]|0)&240)|0)>>>0)/3|0;h=h+1|0;if(h>>>0>=($(c[g>>2]|0,c[f>>2]|0)|0)>>>0){f=0;break}else j=j+2|0}break}default:{Me(3,4361,g);f=-1;break a}}}}while(0);i=k;return f|0}function re(a,b){a=a|0;b=b|0;var e=0,f=0;if((a|0)!=0&(b|0)!=0?(qe(a,b)|0)>=0:0){ek(a+16|0,0,1024)|0;b=c[a>>2]|0;f=$(c[a+12>>2]|0,c[a+8>>2]|0)|0;e=b+f|0;if((f|0)>0){do{f=a+16+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}while(b>>>0>>0);b=0}else b=0}else b=-1;return b|0}function se(a,b){a=a|0;b=b|0;var d=0;b=re(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+16+(d<<2)>>2]|0)+b|0;c[a+1040+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function te(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0;if(!(e<0.0|e>1.0)){d=se(b,d)|0;if((d|0)>=0){i=~~(+($(c[b+12>>2]|0,c[b+8>>2]|0)|0)*e)>>>0;d=0;while(1){h=d&255;g=c[b+1040+(h<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}if((g|0)==(i|0))do d=d+1<<24>>24;while((c[b+1040+((d&255)<<2)>>2]|0)==(i|0));a[f>>0]=((d&255)+h|0)>>>1;d=0}}else d=-1;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=c|0;return te(a,b,.5,c)|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0;d=re(b,d)|0;if((d|0)>=0){d=1;f=0.0;do{f=f+ +(($(c[b+16+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+($(c[b+12>>2]|0,c[b+8>>2]|0)|0);l=0;h=0.0;d=0;j=0.0;m=0.0;while(1){g=c[b+16+(l<<2)>>2]|0;m=m+ +(g>>>0);if(m!=0.0){i=k-m;if(i==0.0)break;h=h+ +(($(l,g)|0)>>>0);n=h/m-(f-h)/i;i=n*(m*i*n);if(i>j)d=l&255;else i=j}else i=j;if((l&255)<<24>>24==-1)break;else{l=l+1|0;j=i}}a[e>>0]=d;d=0}return d|0}function we(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=re(b,e)|0;do if((e|0)>=0){t=b+4|0;if(!(c[t>>2]|0)){e=b+8|0;h=b+12|0;s=Uj($(c[h>>2]|0,c[e>>2]|0)|0)|0;c[t>>2]=s;if(!s){e=-1;break}else s=e}else{s=b+8|0;h=b+12|0}q=f>>1;r=0-q|0;e=c[h>>2]|0;if((e|0)>0){n=(q|0)<(r|0);o=(q|0)<(r|0);p=0;do{e=c[s>>2]|0;if((e|0)>0){m=0;do{if(n){i=0;f=0}else{i=0;l=r;f=0;while(1){j=l+p|0;if(((j|0)>=0?(j|0)<(c[h>>2]|0):0)?(u=$(e,j)|0,!o):0){k=r;while(1){j=k+m|0;if((j|0)>-1&(j|0)<(e|0)){i=i+1|0;f=(d[(c[b>>2]|0)+(u+j)>>0]|0)+f|0}if((k|0)<(q|0))k=k+1|0;else break}}if((l|0)<(q|0))l=l+1|0;else break}}l=($(e,p)|0)+m|0;a[(c[t>>2]|0)+l>>0]=(f|0)/(i|0)|0;m=m+1|0;e=c[s>>2]|0}while((m|0)<(e|0))}p=p+1|0;e=c[h>>2]|0}while((p|0)<(e|0))}if((g|0)!=0?($(e,c[s>>2]|0)|0)>0:0){e=0;do{b=(c[t>>2]|0)+e|0;a[b>>0]=(d[b>>0]|0)+g;e=e+1|0}while((e|0)<($(c[h>>2]|0,c[s>>2]|0)|0));e=0}else e=0}while(0);return e|0}function xe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;a:do switch(e|0){case 0:{switch(f|0){case 1:{if(j){k=Fc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=wc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=yc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Bc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Cc(a,b,c,g,i)|0;break a}case 8:{k=Ec(a,b,c,g,i)|0;break a}case 7:{k=Dc(a,b,c,g,i)|0;break a}case 9:{k=xc(a,b,c,g,i)|0;break a}case 10:{k=Ac(a,b,c,g,i)|0;break a}case 11:{k=zc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=nc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=pc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=sc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=tc(a,b,c,g,i)|0;break a}case 8:{k=vc(a,b,c,g,i)|0;break a}case 7:{k=uc(a,b,c,g,i)|0;break a}case 9:{k=oc(a,b,c,g,i)|0;break a}case 10:{k=rc(a,b,c,g,i)|0;break a}case 11:{k=qc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Yc(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=Pc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Rc(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Uc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Vc(a,b,c,g,i)|0;break a}case 8:{k=Xc(a,b,c,g,i)|0;break a}case 7:{k=Wc(a,b,c,g,i)|0;break a}case 9:{k=Qc(a,b,c,g,i)|0;break a}case 10:{k=Tc(a,b,c,g,i)|0;break a}case 11:{k=Sc(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Gc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Ic(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Lc(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Mc(a,b,c,g,i)|0;break a}case 8:{k=Oc(a,b,c,g,i)|0;break a}case 7:{k=Nc(a,b,c,g,i)|0;break a}case 9:{k=Hc(a,b,c,g,i)|0;break a}case 10:{k=Kc(a,b,c,g,i)|0;break a}case 11:{k=Jc(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}case 1:{switch(f|0){case 1:{if(j){k=pd(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=gd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=id(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=ld(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=md(a,b,c,g,i)|0;break a}case 8:{k=od(a,b,c,g,i)|0;break a}case 7:{k=nd(a,b,c,g,i)|0;break a}case 9:{k=hd(a,b,c,g,i)|0;break a}case 10:{k=kd(a,b,c,g,i)|0;break a}case 11:{k=jd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=Zc(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=$c(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=cd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=dd(a,b,c,g,i)|0;break a}case 8:{k=fd(a,b,c,g,i)|0;break a}case 7:{k=ed(a,b,c,g,i)|0;break a}case 9:{k=_c(a,b,c,g,i)|0;break a}case 10:{k=bd(a,b,c,g,i)|0;break a}case 11:{k=ad(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}case 0:{if(j){k=Id(a,b,c,j,i)|0;break a}switch(h|0){case 0:{if(d>>>0<2){k=zd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=Bd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=Ed(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=Fd(a,b,c,g,i)|0;break a}case 8:{k=Hd(a,b,c,g,i)|0;break a}case 7:{k=Gd(a,b,c,g,i)|0;break a}case 9:{k=Ad(a,b,c,g,i)|0;break a}case 10:{k=Dd(a,b,c,g,i)|0;break a}case 11:{k=Cd(a,b,c,g,i)|0;break a}default:rb(0)}break}case 1:{if(d>>>0<2){k=qd(a,b,c,g,i)|0;break a}if((d&-2|0)==2){k=sd(a,b,c,g,i)|0;break a}if((d&-3|0)==4){k=vd(a,b,c,g,i)|0;break a}switch(d|0){case 5:case 12:case 13:case 14:{k=wd(a,b,c,g,i)|0;break a}case 8:{k=yd(a,b,c,g,i)|0;break a}case 7:{k=xd(a,b,c,g,i)|0;break a}case 9:{k=rd(a,b,c,g,i)|0;break a}case 10:{k=ud(a,b,c,g,i)|0;break a}case 11:{k=td(a,b,c,g,i)|0;break a}default:rb(0)}break}default:rb(0)}break}default:rb(0)}break}default:rb(0)}while(0);return k|0}function ye(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;d=0}else d=-1;return d|0}function ze(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;b=0}else b=-1;return b|0}function Ae(){return Be(16,50)|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+56|0;p=r+48|0;j=r+40|0;h=r+32|0;g=r+24|0;f=r+16|0;e=r+8|0;d=r;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){n=Uj(32)|0;if(!n){Me(3,5472,d);rb(1)}c[n>>2]=0;c[n+4>>2]=b;c[n+28>>2]=a;m=Uj(b<<2)|0;c[n+8>>2]=m;if(!m){Me(3,5472,e);rb(1)}d=b<<4;l=Uj(d)|0;c[n+12>>2]=l;if(!l){Me(3,5472,f);rb(1)}f=Uj(d)|0;k=n+20|0;c[k>>2]=f;if(!f){Me(3,5472,g);rb(1)}d=b<<5;g=Uj(d)|0;c[n+16>>2]=g;if(!g){Me(3,5472,h);rb(1)}h=Uj(d)|0;c[n+24>>2]=h;if(!h){Me(3,5472,j);rb(1)}e=$(a,a)|0;d=e*12|0;e=e<<2;if((b|0)>0){a=0;b:while(1){c[m+(a<<2)>>2]=0;f=a<<2;h=0;while(1){if((h|0)>=4)break;j=Uj(d)|0;g=h+f|0;c[l+(g<<2)>>2]=j;if(!j){d=18;break b}j=Uj(e)|0;c[(c[k>>2]|0)+(g<<2)>>2]=j;if(!j){d=20;break b}else h=h+1|0}a=a+1|0;if((a|0)>=(b|0)){o=n;break a}}if((d|0)==18){Me(3,5472,p);rb(1)}else if((d|0)==20){Me(3,5472,q);rb(1)}}else o=n}else o=0;while(0);i=r;return o|0}function Ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)b=-1;else{b=a+4|0;d=a+8|0;e=a+12|0;f=a+20|0;if((c[b>>2]|0)>0){g=0;do{if(c[(c[d>>2]|0)+(g<<2)>>2]|0)Le(a,g)|0;h=g<<2;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);i=1+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);i=2+h|0;Vj(c[(c[e>>2]|0)+(i<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(i<<2)>>2]|0);h=3+h|0;Vj(c[(c[e>>2]|0)+(h<<2)>>2]|0);Vj(c[(c[f>>2]|0)+(h<<2)>>2]|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Vj(a);b=0}return b|0}function De(b,e,f,g,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=+o;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;var y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+12448|0;A=L+12440|0;z=L+8|0;J=L;I=L+12312|0;K=L+24|0;do if((f+-2|0)>>>0<3){if((v|0)!=2830){y=v&255;if((Ee(e,2,y,y*3|0,g,j,k,l,m,n,o,K)|0)<0){c[s>>2]=-1;y=-6;break}y=Fe(K,y,s,t,u,v,w)|0;if(!x)break;c[x>>2]=0;c[x+4>>2]=0;break}if((Ee(e,2,14,42,g,j,k,l,m,n,.875,K)|0)<0){c[s>>2]=-1;y=-6;break}c[z>>2]=0;c[z+4>>2]=182;c[z+8>>2]=195;c[z+12>>2]=13;v=a[K+(c[z>>2]|0)>>0]|0;y=(v&255)>0?v:0;v=(v&255)<255?v:-1;H=a[K+(c[z+4>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+8>>2]|0)>>0]|0;y=(H&255)>(y&255)?H:y;v=(H&255)<(v&255)?H:v;H=a[K+(c[z+12>>2]|0)>>0]|0;y=((H&255)>(y&255)?H:y)&255;v=((H&255)<(v&255)?H:v)&255;a:do if((y-v|0)>=30){H=(y+v|0)>>>1;a[A>>0]=(d[K+(c[z>>2]|0)>>0]|0)>>>0>>0&1;a[A+1>>0]=(d[K+(c[z+4>>2]|0)>>0]|0)>>>0>>0&1;a[A+2>>0]=(d[K+(c[z+8>>2]|0)>>0]|0)>>>0>>0&1;a[A+3>>0]=(d[K+(c[z+12>>2]|0)>>0]|0)>>>0>>0&1;v=0;while(1){y=v+1|0;if(((a[A+v>>0]|0)==1?(a[A+((y|0)%4|0)>>0]|0)==1:0)?(a[A+((v+2|0)%4|0)>>0]|0)==0:0){G=v;break}if((y|0)<4)v=y;else{G=y;break}}switch(G|0){case 4:{c[t>>2]=0;h[u>>3]=-1.0;y=-3;v=0;z=0;break a}case 0:{z=119;y=255;v=0;do{D=v+-3|0;B=(v&-2|0)==12;C=v*14|0;A=0;do{if(((A+-3|D)>>>0>=8?(F=A&-2,(A|v)>>>0>=2):0)?!(B&((F|0)==0|(F|0)==12)):0){E=(d[K+(A+C)>>0]|0)-H|0;a[I+z>>0]=E>>>31;E=(E|0)>-1?E:0-E|0;z=z+-1|0;y=(E|0)<(y|0)?E:y}A=A+1|0}while((A|0)!=14);v=v+1|0}while((v|0)!=14);break}case 1:{z=119;y=255;v=0;do{D=v+-3|0;C=v&-2;B=(C|0)==0;C=(C|0)==12;A=13;while(1){if(((A+-3|D)>>>0>=8?(E=(A&-2|0)==12,!(B&E)):0)?!(C&(A>>>0<2|E)):0){F=(d[K+((A*14|0)+v)>>0]|0)-H|0;a[I+z>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;z=z+-1|0;y=(F|0)<(y|0)?F:y}if((A|0)>0)A=A+-1|0;else break}v=v+1|0}while((v|0)!=14);break}case 2:{v=119;y=255;D=13;while(1){B=D+-3|0;C=D>>>0<2|(D&-2|0)==12;A=D*14|0;z=13;while(1){if((z+-3|B)>>>0>=8?!((z|D)>>>0<2|C&(z&-2|0)==12):0){F=(d[K+(z+A)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}if((z|0)>0)z=z+-1|0;else break}if((D|0)>0)D=D+-1|0;else break}break}case 3:{v=119;y=255;D=13;while(1){C=D+-3|0;B=D&-2;A=(B|0)==12;B=(B|0)==0;z=0;do{if(((z+-3|C)>>>0>=8?!(A&z>>>0<2|(z|D)>>>0<2):0)?!(B&(z&-2|0)==12):0){F=(d[K+((z*14|0)+D)>>0]|0)-H|0;a[I+v>>0]=F>>>31;F=(F|0)>-1?F:0-F|0;v=v+-1|0;y=(F|0)<(y|0)?F:y}z=z+1|0}while((z|0)!=14);if((D|0)>0)D=D+-1|0;else break}break}default:y=255}c[t>>2]=G;h[u>>3]=(y|0)>30?1.0:+(y|0)/30.0;y=Ie(2830,0,0,I,J)|0;if((y|0)<0){y=-4;v=0;z=0}else{if(w)c[w>>2]=y;z=J;y=0;v=c[z>>2]|0;z=c[z+4>>2]|0}}else{c[t>>2]=0;h[u>>3]=-1.0;y=-2;v=0;z=0}while(0);if((y|0)<0){c[s>>2]=-1;break}if((v|0)==-1&(z|0)==-1){c[s>>2]=-1;y=-5;break}c[s>>2]=(v&-32768|0)==0&0==0?v&32767:0;if(!x)y=0;else{y=x;c[y>>2]=v;c[y+4>>2]=z;y=0}}else y=1;while(0);b:do switch(f|0){case 0:case 1:case 3:case 4:{if(!b){c[p>>2]=-1;v=-1;break b}v=b+28|0;z=c[v>>2]|0;A=z<<2;switch(f|0){case 0:case 3:if((Ee(e,0,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,0,K,c[v>>2]|0,p,q,r)|0;break b}default:if((Ee(e,1,z,A,g,j,k,l,m,n,o,K)|0)<0){c[p>>2]=-1;v=-6;break b}else{v=Ge(b,1,K,c[v>>2]|0,p,q,r)|0;break b}}}default:v=1}while(0);if((y|0)!=1){if((v|0)!=1)y=(v&y|0)<0?v:0}else y=v;i=L;return y|0} +function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;b=k+8|0;h=k+4|0;d=k;c[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;c[d>>2]=a-e;b=($j(3712,3904,d,b)|0)-3712>>2;f=b;b=(c[3712+(b<<2)>>2]|0)+e|0;a:while(1){e=5;while(1){if(e>>>0>=47){e=211;j=8;break}d=c[3520+(e<<2)>>2]|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=106;break a}if((b|0)==($(a,d)|0))break;else e=e+1|0}b:do if((j|0)==8)while(1){j=0;d=(b>>>0)/(e>>>0)|0;if(d>>>0>>0){j=105;break a}if((b|0)==($(d,e)|0))break b;d=e+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break b;d=e+208|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){j=105;break a}if((b|0)==($(a,d)|0))break;else{e=e+210|0;j=8}}while(0);e=f+1|0;b=(e|0)==48;e=b?0:e;b=(b&1)+g|0;f=e;g=b;b=(c[3712+(e<<2)>>2]|0)+(b*210|0)|0}if((j|0)==105){c[h>>2]=b;break}else if((j|0)==106){c[h>>2]=b;break}}else b=c[($j(3520,3712,h,b)|0)>>2]|0;while(0);i=k;return b|0}function $j(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a;d=b-a>>2;a:while(1){while(1){if(!d)break a;a=(d|0)/2|0;if((c[e+(a<<2)>>2]|0)>>>0>>0)break;else d=a}e=e+(a+1<<2)|0;d=d+-1-a|0}return e|0}function ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>4294967279)oi(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{g=e+16&-16;f=Kh(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}ik(b|0,d|0,e|0)|0;a[b+e>>0]=0;return}function bk(b){b=b|0;if(a[b>>0]&1)Lh(c[b+8>>2]|0);return}function ck(){}function dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (D=d,a-c>>>0|0)|0}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<>>0;return (D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function ik(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Xa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function kk(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (D=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function mk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=dk(j^a,i^b,j,i)|0;g=D;a=f^j;b=e^i;return dk((rk(h,g,dk(f^c,e^d,f,e)|0,D,0)|0)^a,D^b,a,b)|0}function nk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=dk(h^a,g^b,h,g)|0;b=D;rk(a,b,dk(l^d,k^e,l,k)|0,D,j)|0;e=dk(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=D;i=f;return (D=d,e)|0}function ok(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=lk(e,f)|0;a=D;return (D=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rk(a,b,c,d,0)|0}function qk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;rk(a,b,d,e,f)|0;i=g;return (D=c[f+4>>2]|0,c[f>>2]|0)|0}function rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (D=n,f)|0}else{if(!g){n=0;f=0;return (D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (D=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (D=n,f)|0}g=h-1|0;if(g&h){i=(ba(h|0)|0)+33-(ba(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (D=o,p)|0}else{p=kk(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (D=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (D=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (D=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((kk(i|0)|0)>>>0);return (D=o,p)|0}g=(ba(i|0)|0)-(ba(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (D=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gk(m|0,l|0,-1,-1)|0;d=D;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;dk(k,d,e,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=dk(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=D;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (D=o,p)|0}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&15](b|0,c|0,d|0)|0}function tk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Rb[a&3](b|0,c|0,d|0,e|0,f|0)}function uk(a,b,c){a=a|0;b=b|0;c=c|0;return +Sb[a&1](b|0,c|0)}function vk(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function wk(a,b){a=a|0;b=b|0;return +Ub[a&3](b|0)}function xk(a){a=a|0;return Vb[a&1]()|0}function yk(a,b){a=a|0;b=b|0;Wb[a&15](b|0)}function zk(a,b,c){a=a|0;b=b|0;c=c|0;Xb[a&7](b|0,c|0)}function Ak(a,b){a=a|0;b=b|0;return Yb[a&31](b|0)|0}function Bk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zb[a&1](b|0,c|0,d|0)}function Ck(a){a=a|0;_b[a&0]()}function Dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;$b[a&3](b|0,c|0,+d)}function Ek(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ac[a&1](b|0,c|0,d|0,e|0)|0}function Fk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;return cc[a&15](b|0,c|0)|0}function Hk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dc[a&3](b|0,c|0,d|0,e|0)}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;ca(0);return 0}function Jk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ca(1)}function Kk(a,b){a=a|0;b=b|0;ca(2);return 0.0}function Lk(a,b){a=a|0;b=+b;ca(3)}function Mk(a){a=a|0;ca(4);return 0.0}function Nk(){ca(5);return 0}function Ok(a){a=a|0;ca(6)}function Pk(a,b){a=a|0;b=b|0;ca(7)}function Qk(a){a=a|0;ca(8);return 0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;ca(9)}function Sk(){ca(10)}function Tk(a,b,c){a=a|0;b=b|0;c=+c;ca(11)}function Uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(12);return 0}function Vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ca(13)}function Wk(a,b){a=a|0;b=b|0;ca(14);return 0}function Xk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ca(15)} + +// EMSCRIPTEN_END_FUNCS +var Qb=[Ik,Zh,_h,Qj,Qi,Pi,Ri,Ag,sg,qg,rg,yg,kh,jh,Oi,Mj];var Rb=[Jk,ki,ji,gi];var Sb=[Kk,dh];var Tb=[Lk,Wf,Yf,ag];var Ub=[Mk,Xf,Zf,bg];var Vb=[Nk,Nf];var Wb=[Ok,Mh,Nh,Sh,Vh,Th,Uh,Wh,Xh,Yh,Mf,Xg,Yg,Ij,Jj,Ok];var Xb=[Pk,ig,gg,_f,cg,eg,ng,gh];var Yb=[Qk,Oh,Ni,Pf,Vf,Qf,wg,xg,mg,lg,jg,hg,$f,dg,fg,og,fh,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk,Qk];var Zb=[Rk,ch];var _b=[Sk];var $b=[Tk,eh,bh,Tk];var ac=[Uk,mh];var bc=[Vk,ni,mi,li];var cc=[Wk,Df,Sf,Tf,Uf,tg,vg,ug,zg,kg,lh,hh,Wk,Wk,Wk,Wk];var dc=[Xk,ai,bi,di];return{_i64Subtract:dk,_fflush:Yi,_i64Add:gk,_memset:ek,_malloc:Uj,_memcpy:ik,___getTypeName:Ah,_bitshift64Lshr:hk,_free:Vj,___errno_location:qi,_bitshift64Shl:fk,__GLOBAL__sub_I_ARToolKitJS_cpp:Wg,__GLOBAL__sub_I_bind_cpp:Ch,runPostSets:ck,stackAlloc:ec,stackSave:fc,stackRestore:gc,establishStackSpace:hc,setThrew:ic,setTempRet0:lc,getTempRet0:mc,dynCall_iiii:sk,dynCall_viiiii:tk,dynCall_dii:uk,dynCall_vid:vk,dynCall_di:wk,dynCall_i:xk,dynCall_vi:yk,dynCall_vii:zk,dynCall_ii:Ak,dynCall_viii:Bk,dynCall_v:Ck,dynCall_viid:Dk,dynCall_iiiii:Ek,dynCall_viiiiii:Fk,dynCall_iii:Gk,dynCall_viiii:Hk}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var _fflush=Module["_fflush"]=asm["_fflush"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memset=Module["_memset"]=asm["_memset"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _free=Module["_free"]=asm["_free"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() diff --git a/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.api.js b/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.api.js new file mode 100644 index 0000000..cd2495a --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.api.js @@ -0,0 +1,1632 @@ +;(function() { + 'use strict' + + /** + The ARController is the main object for doing AR marker detection with JSARToolKit. + + To use an ARController, you need to tell it the dimensions to use for the AR processing canvas and + pass it an ARCameraParam to define the camera parameters to use when processing images. + The ARCameraParam defines the lens distortion and aspect ratio of the camera used. + See https://www.artoolworks.com/support/library/Calibrating_your_camera for more information about AR camera parameteters and how to make and use them. + + If you pass an image as the first argument, the ARController uses that as the image to process, + using the dimensions of the image as AR processing canvas width and height. If the first argument + to ARController is an image, the second argument is used as the camera param. + + The camera parameters argument can be either an ARCameraParam or an URL to a camera definition file. + If the camera argument is an URL, it is loaded into a new ARCameraParam, and the ARController dispatches + a 'load' event and calls the onload method if it is defined. + + @exports ARController + @constructor + + @param {number} width The width of the images to process. + @param {number} height The height of the images to process. + @param {ARCameraParam | string} camera The ARCameraParam to use for image processing. If this is a string, the ARController treats it as an URL and tries to load it as a ARCameraParam definition file, calling ARController#onload on success. + */ + var ARController = function(width, height, camera) { + var id; + var w = width, h = height; + + this.orientation = 'landscape'; + + this.listeners = {}; + + if (typeof width !== 'number') { + var image = width; + camera = height; + w = image.videoWidth || image.width; + h = image.videoHeight || image.height; + this.image = image; + } + + this.defaultMarkerWidth = 1; + this.patternMarkers = {}; + this.barcodeMarkers = {}; + this.transform_mat = new Float32Array(16); + + this.canvas = document.createElement('canvas'); + this.canvas.width = w; + this.canvas.height = h; + this.ctx = this.canvas.getContext('2d'); + + this.videoWidth = w; + this.videoHeight = h; + + if (typeof camera === 'string') { + + var self = this; + this.cameraParam = new ARCameraParam(camera, function() { + self._initialize(); + }, function(err) { + console.error("ARController: Failed to load ARCameraParam", err); + }); + + } else { + + this.cameraParam = camera; + this._initialize(); + + } + }; + + /** + Destroys the ARController instance and frees all associated resources. + After calling dispose, the ARController can't be used any longer. Make a new one if you need one. + + Calling this avoids leaking Emscripten memory, which may be important if you're using multiple ARControllers. + */ + ARController.prototype.dispose = function() { + artoolkit.teardown(this.id); + + for (var t in this) { + this[t] = null; + } + }; + + /** + Detects markers in the given image. The process method dispatches marker detection events during its run. + + The marker detection process proceeds by first dispatching a markerNum event that tells you how many + markers were found in the image. Next, a getMarker event is dispatched for each found marker square. + Finally, getMultiMarker is dispatched for every found multimarker, followed by getMultiMarkerSub events + dispatched for each of the markers in the multimarker. + + arController.addEventListener('markerNum', function(ev) { + console.log("Detected " + ev.data + " markers.") + }); + arController.addEventListener('getMarker', function(ev) { + console.log("Detected marker with ids:", ev.data.marker.id, ev.data.marker.idPatt, ev.data.marker.idMatrix); + console.log("Marker data", ev.data.marker); + console.log("Marker transform matrix:", [].join.call(ev.data.matrix, ', ')); + }); + arController.addEventListener('getMultiMarker', function(ev) { + console.log("Detected multimarker with id:", ev.data.multiMarkerId); + }); + arController.addEventListener('getMultiMarkerSub', function(ev) { + console.log("Submarker for " + ev.data.multiMarkerId, ev.data.markerIndex, ev.data.marker); + }); + + arController.process(image); + + + If no image is given, defaults to this.image. + + If the debugSetup has been called, draws debug markers on the debug canvas. + + @param {ImageElement | VideoElement} image The image to process [optional]. + */ + ARController.prototype.process = function(image) { + this.detectMarker(image); + + var markerNum = this.getMarkerNum(); + var k,o; + for (k in this.patternMarkers) { + o = this.patternMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + for (k in this.barcodeMarkers) { + o = this.barcodeMarkers[k] + o.inPrevious = o.inCurrent; + o.inCurrent = false; + } + + for (var i=0; i -1 && (markerInfo.id === markerInfo.idPatt || markerInfo.idMatrix === -1)) { + visible = this.trackPatternMarkerId(markerInfo.idPatt); + markerType = artoolkit.PATTERN_MARKER; + + if (markerInfo.dir !== markerInfo.dirPatt) { + this.setMarkerInfoDir(i, markerInfo.dirPatt); + } + + } else if (markerInfo.idMatrix > -1) { + visible = this.trackBarcodeMarkerId(markerInfo.idMatrix); + markerType = artoolkit.BARCODE_MARKER; + + if (markerInfo.dir !== markerInfo.dirMatrix) { + this.setMarkerInfoDir(i, markerInfo.dirMatrix); + } + } + + if (markerType !== artoolkit.UNKNOWN_MARKER && visible.inPrevious) { + this.getTransMatSquareCont(i, visible.markerWidth, visible.matrix, visible.matrix); + } else { + this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + } +// this.getTransMatSquare(i, visible.markerWidth, visible.matrix); + + visible.inCurrent = true; + this.transMatToGLMat(visible.matrix, this.transform_mat); + this.dispatchEvent({ + name: 'getMarker', + target: this, + data: { + index: i, + type: markerType, + marker: markerInfo, + matrix: this.transform_mat + } + }); + } + + var multiMarkerCount = this.getMultiMarkerCount(); + for (var i=0; i= 0) { + visible = true; + this.dispatchEvent({ + name: 'getMultiMarker', + target: this, + data: { + multiMarkerId: i, + matrix: this.transform_mat + } + }); + break; + } + } + if (visible) { + for (var j=0; j -1) { + this.listeners[name].splice(index, 1); + } + } + }; + + /** + Dispatches the given event to all registered listeners on event.name. + + @param {Object} event Event to dispatch. + */ + ARController.prototype.dispatchEvent = function(event) { + var listeners = this.listeners[event.name]; + if (listeners) { + for (var i=0; i= 0) if marker is valid, or -1 if invalid. + @field idPatt If pattern detection mode includes a pattern mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field idMatrix If pattern detection mode includes a matrix mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid. + @field dir If pattern detection mode is either pattern mode OR matrix but not both, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirPatt If pattern detection mode includes a pattern mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field dirMatrix If pattern detection mode includes a matrix mode, and id != -1, will be marker direction (range 0 to 3, inclusive). + @field cf If pattern detection mode is either pattern mode OR matrix but not both, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfPatt If pattern detection mode includes a pattern mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field cfMatrix If pattern detection mode includes a matrix mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid. + @field pos 2D position (in camera image coordinates, origin at top-left) of the centre of the marker. + @field line Line equations for the 4 sides of the marker. + @field vertex 2D positions (in camera image coordinates, origin at top-left) of the corners of the marker. vertex[(4 - dir)%4][] is the top-left corner of the marker. Other vertices proceed clockwise from this. These are idealised coordinates (i.e. the onscreen position aligns correctly with the undistorted camera image.) + + + @param {number} markerIndex The index of the marker to query. + @returns {Object} The markerInfo struct. + */ + ARController.prototype.getMarker = function(markerIndex) { + if (0 === artoolkit.getMarker(this.id, markerIndex)) { + return artoolkit.markerInfo; + } + }; + + /** + Set marker vertices to the given vertexData[4][2] array. + + Sets the marker pos to the center of the vertices. + + Useful for building custom markers for getTransMatSquare. + + A markerIndex of -1 is used to access the global custom marker. + + @param {number} markerIndex The index of the marker to edit. + */ + ARController.prototype.setMarkerInfoVertex = function(markerIndex, vertexData) { + for (var i=0; i image.height ) || + (image.nodeName === 'VIDEO' && image.videoWidth > image.videoHeight) ){ + // if landscape + this.ctx.drawImage(image, 0, 0, this.canvas.width, this.canvas.height); // draw video + }else{ + // if portrait + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + var scale = this.canvas.height / this.canvas.width; + var scaledHeight = this.canvas.width*scale; + var scaledWidth = this.canvas.height*scale; + var marginLeft = ( this.canvas.width - scaledWidth)/2; + this.ctx.drawImage(image, marginLeft, 0, scaledWidth, scaledHeight); // draw video + } + + var imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height); + var data = imageData.data; + + if (this.dataHeap) { + this.dataHeap.set( data ); + return true; + } + return false; + }; + + ARController.prototype._debugMarker = function(marker) { + var vertex, pos; + vertex = marker.vertex; + var ctx = this.ctx; + ctx.strokeStyle = 'red'; + + ctx.beginPath() + ctx.moveTo(vertex[0][0], vertex[0][1]) + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[2][0], vertex[2][1]) + ctx.lineTo(vertex[3][0], vertex[3][1]) + ctx.stroke() + + ctx.strokeStyle = 'green'; + ctx.beginPath() + ctx.lineTo(vertex[1][0], vertex[1][1]) + ctx.lineTo(vertex[2][0], vertex[2][1]) + ctx.stroke(); + + ctx.beginPath() + ctx.moveTo(vertex[3][0], vertex[3][1]) + ctx.lineTo(vertex[0][0], vertex[0][1]) + ctx.stroke(); + + pos = marker.pos + ctx.beginPath() + ctx.arc(pos[0], pos[1], 8, 0, Math.PI * 2) + ctx.fillStyle = 'red' + ctx.fill() + }; + + + // static + + /** + ARController.getUserMedia gets a device camera video feed and calls the given onSuccess callback with it. + + Tries to start playing the video. Playing the video can fail on Chrome for Android, + so ARController.getUserMedia adds user input event listeners to the window + that try to start playing the video. On success, the event listeners are removed. + + To use ARController.getUserMedia, call it with an object with the onSuccess attribute set to a callback function. + + ARController.getUserMedia({ + onSuccess: function(video) { + console.log("Got video", video); + } + }); + + The configuration object supports the following attributes: + + { + onSuccess : function(video), + onError : function(error), + + width : number | {min: number, ideal: number, max: number}, + height : number | {min: number, ideal: number, max: number}, + + facingMode : 'environment' | 'user' | 'left' | 'right' | { exact: 'environment' | ... } + } + + See https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia for more information about the + width, height and facingMode attributes. + + @param {object} configuration The configuration object. + @return {VideoElement} Returns the created video element. + */ + ARController.getUserMedia = function(configuration) { + var facing = configuration.facingMode || 'environment'; + + var onSuccess = configuration.onSuccess; + var onError = configuration.onError || function(err) { console.error("ARController.getUserMedia", err); }; + + var video = document.createElement('video'); + + var initProgress = function() { + if (this.videoWidth !== 0) { + onSuccess(video); + } + }; + + var readyToPlay = false; + var eventNames = [ + 'touchstart', 'touchend', 'touchmove', 'touchcancel', + 'click', 'mousedown', 'mouseup', 'mousemove', + 'keydown', 'keyup', 'keypress', 'scroll' + ]; + var play = function(ev) { + if (readyToPlay) { + video.play(); + if (!video.paused) { + eventNames.forEach(function(eventName) { + window.removeEventListener(eventName, play, true); + }); + } + } + }; + eventNames.forEach(function(eventName) { + window.addEventListener(eventName, play, true); + }); + + var success = function(stream) { + video.addEventListener('loadedmetadata', initProgress, false); + video.src = window.URL.createObjectURL(stream); + readyToPlay = true; + play(); // Try playing without user input, should work on non-Android Chrome + }; + + var constraints = {}; + var mediaDevicesConstraints = {}; + if (configuration.width) { + mediaDevicesConstraints.width = configuration.width; + if (typeof configuration.width === 'object') { + if (configuration.width.max) { + constraints.maxWidth = configuration.width.max; + } + if (configuration.width.min) { + constraints.minWidth = configuration.width.max; + } + } else { + constraints.maxWidth = configuration.width; + } + } + + if (configuration.height) { + mediaDevicesConstraints.height = configuration.height; + if (typeof configuration.height === 'object') { + if (configuration.height.max) { + constraints.maxHeight = configuration.height.max; + } + if (configuration.height.min) { + constraints.minHeight = configuration.height.max; + } + } else { + constraints.maxHeight = configuration.height; + } + } + + mediaDevicesConstraints.facingMode = facing; + + navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; + var hdConstraints = { + audio: false, + video: { + mandatory: constraints + } + }; + + if ( false ) { + // if ( navigator.mediaDevices || window.MediaStreamTrack) { + if (navigator.mediaDevices) { + navigator.mediaDevices.getUserMedia({ + audio: false, + video: mediaDevicesConstraints + }).then(success, onError); + } else { + MediaStreamTrack.getSources(function(sources) { + var facingDir = mediaDevicesConstraints.facingMode; + if (facing && facing.exact) { + facingDir = facing.exact; + } + for (var i=0; i -1) { // Or a string with the camera param + writeStringToFS(filename, url, writeCallback); + } else { + ajax(url, filename, writeCallback); + } + } + + + // transfer image + + function writeStringToFS(target, string, callback) { + var byteArray = new Uint8Array(string.length); + for (var i=0; i= 0); + } + }); + + /** + Index of Three.js pattern markers, maps markerID -> THREE.Object3D. + */ + this.threePatternMarkers = {}; + + /** + Index of Three.js barcode markers, maps markerID -> THREE.Object3D. + */ + this.threeBarcodeMarkers = {}; + + /** + Index of Three.js multimarkers, maps markerID -> THREE.Object3D. + */ + this.threeMultiMarkers = {}; + }; + + }; + + + var tick = function() { + if (window.ARController && window.THREE) { + integrate(); + if (window.ARThreeOnLoad) { + window.ARThreeOnLoad(); + } + } else { + setTimeout(tick, 50); + } + }; + + tick(); + +})(); diff --git a/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.worker.js b/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.worker.js new file mode 100644 index 0000000..81bc195 --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/js/artoolkit.worker.js @@ -0,0 +1,81 @@ +if ('function' === typeof importScripts) { + importScripts('../build/artoolkit-nft.min.js'); + + self.onmessage = function (e) { + var msg = e.data; + switch (msg.type) { + case "init": { + load(msg); + return; + } + case "process": { + next = msg.imagedata; + process(); + return; + } + } + }; + + var next = null; + + var ar = null; + var markerResult = null; + + function load(msg) { + var corsAnyway = 'https://cors-anywhere.herokuapp.com/'; + var markerPath = corsAnyway + msg.marker; + + console.debug('Loading marker at: ', markerPath); + + var onLoad = function () { + ar = new ARController(msg.pw, msg.ph, param); + var cameraMatrix = ar.getCameraMatrix(); + + // after the ARController is set up, we load the NFT Marker + ar.loadNFTMarker(markerPath, function (markerId) { + ar.trackNFTMarkerId(markerId); + postMessage({ type: 'endLoading' }) + }, function (err) { + console.log('Error in loading marker on Worker', err) + }); + + // ...and we listen for event when marker has been found from camera + ar.addEventListener('getNFTMarker', function (ev) { + // let AR.js know that a NFT marker has been found, with its matrix for positioning + markerResult = { + type: 'found', + matrix: JSON.stringify(ev.data.matrix), + }; + }); + + postMessage({type: "loaded", proj: JSON.stringify(cameraMatrix)}); + }; + + var onError = function (error) { + console.error(error); + }; + + console.debug('Loading camera at:', msg.param); + + // we cannot pass the entire ARController, so we re-create one inside the Worker, starting from camera_param + var param = new ARCameraParam(msg.param, onLoad, onError); + } + + function process() { + markerResult = null; + + if (ar && ar.process) { + ar.process(next); + } + + if (markerResult) { + postMessage(markerResult); + } else { + postMessage({ + type: "not found", + }); + } + next = null; + } + +} diff --git a/demo/handpose/assets/articuno/scene.bin b/demo/handpose/assets/articuno/scene.bin new file mode 100644 index 0000000..8920adf Binary files /dev/null and b/demo/handpose/assets/articuno/scene.bin differ diff --git a/demo/handpose/assets/articuno/scene.gltf b/demo/handpose/assets/articuno/scene.gltf new file mode 100644 index 0000000..84e0fb7 --- /dev/null +++ b/demo/handpose/assets/articuno/scene.gltf @@ -0,0 +1,7193 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 61, + "max": [ + 14.302800178527832, + 62.525501251220703, + 20.764200210571289 + ], + "min": [ + -14.302800178527832, + 18.687400817871094, + -9.1736297607421875 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 0.98818618059158325, + 0.68552768230438232, + 0.7422834038734436 + ], + "min": [ + -0.98768073320388794, + -0.90716731548309326, + -0.97106444835662842 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 61, + "max": [ + 0.99862092733383179, + 0.30413773655891418, + 0.99755120277404785, + 1 + ], + "min": [ + -0.48364311456680298, + -0.39675614237785339, + -0.9986121654510498, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 61, + "max": [ + 0.25, + -0.035156000405550003 + ], + "min": [ + -0.036132000386714935, + -0.23144499957561493 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 150, + "max": [ + 60 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 1464, + "componentType": 5126, + "count": 24, + "max": [ + 14.302800178527832, + 54.418201446533203, + 20.111000061035156 + ], + "min": [ + -14.302800178527832, + 23.708200454711914, + -4.598480224609375 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 1752, + "componentType": 5126, + "count": 24, + "max": [ + 0.95142364501953125, + 0.27440321445465088, + 0.99787092208862305 + ], + "min": [ + -0.94005078077316284, + -0.56969559192657471, + 0.30682507157325745 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 976, + "componentType": 5126, + "count": 24, + "max": [ + 0.99971699714660645, + 0.069535739719867706, + 0.94335073232650757, + 1 + ], + "min": [ + 0.30707922577857971, + -0.031763534992933273, + -0.95166093111038208, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 488, + "componentType": 5126, + "count": 24, + "max": [ + 0.86630100011825562, + -0.10128899663686752 + ], + "min": [ + 0.12941299378871918, + -0.86004197597503662 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 600, + "componentType": 5125, + "count": 93, + "max": [ + 23 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 2040, + "componentType": 5126, + "count": 42, + "max": [ + 14.302800178527832, + 41.860698699951172, + 5.1630501747131348 + ], + "min": [ + -14.302800178527832, + 15.417200088500977, + -20.935199737548828 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 2544, + "componentType": 5126, + "count": 42, + "max": [ + 0.92518436908721924, + 0.58620452880859375, + 0.8708910346031189 + ], + "min": [ + -0.89942651987075806, + -0.94796723127365112, + -0.88135278224945068 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 1360, + "componentType": 5126, + "count": 42, + "max": [ + 0.99952316284179688, + 0.7662469744682312, + 0.96626633405685425, + 1 + ], + "min": [ + -0.98590332269668579, + -0.95030891895294189, + -0.76854997873306274, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 680, + "componentType": 5126, + "count": 42, + "max": [ + 0.95778000354766846, + -0.040938999503850937 + ], + "min": [ + -0.072264999151229858, + -0.97638601064682007 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 972, + "componentType": 5125, + "count": 96, + "max": [ + 41 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 3048, + "componentType": 5126, + "count": 25, + "max": [ + 10.510700225830078, + 66.454902648925781, + 16.026599884033203 + ], + "min": [ + -11.078399658203125, + 39.5281982421875, + -12.043100357055664 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 3348, + "componentType": 5126, + "count": 25, + "max": [ + 0.81216740608215332, + 0.99899047613143921, + 0.079700075089931488 + ], + "min": [ + -0.82300573587417603, + 0.35111653804779053, + -0.9100339412689209 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 2032, + "componentType": 5126, + "count": 25, + "max": [ + 0.99972587823867798, + 0.71928495168685913, + 0.41189873218536377, + -1 + ], + "min": [ + 0.56198179721832275, + -0.70296776294708252, + -0.40841841697692871, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1016, + "componentType": 5126, + "count": 25, + "max": [ + 1.219730019569397, + 0.109375 + ], + "min": [ + -0.21972699463367462, + -0.9882810115814209 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 1356, + "componentType": 5125, + "count": 84, + "max": [ + 24 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 3648, + "componentType": 5126, + "count": 76, + "max": [ + 83.466300964355469, + 61.859798431396484, + 10.873499870300293 + ], + "min": [ + -84.455596923828125, + 35.677600860595703, + -9.7298698425292969 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 4560, + "componentType": 5126, + "count": 76, + "max": [ + 0.65870869159698486, + 0.77093046903610229, + 0.92439121007919312 + ], + "min": [ + -0.66814273595809937, + -0.77838796377182007, + -0.6785881519317627 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 2432, + "componentType": 5126, + "count": 76, + "max": [ + 0.99570143222808838, + 0.56459110975265503, + -0.060382664203643799, + 1 + ], + "min": [ + -0.97772401571273804, + -0.038593128323554993, + -0.63362818956375122, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1216, + "componentType": 5126, + "count": 76, + "max": [ + 1.0089199542999268, + -0.0064829997718334198 + ], + "min": [ + 0.015625, + -1.0155700445175171 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 1692, + "componentType": 5125, + "count": 222, + "max": [ + 75 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 5472, + "componentType": 5126, + "count": 205, + "max": [ + 119.04799652099609, + 62.217201232910156, + 10.873499870300293 + ], + "min": [ + -120.27100372314453, + 21.905500411987305, + -24.711299896240234 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 7932, + "componentType": 5126, + "count": 205, + "max": [ + 0.89285051822662354, + 0.94835877418518066, + 0.69135040044784546 + ], + "min": [ + -0.93879842758178711, + -0.97784686088562012, + -0.95134657621383667 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 3648, + "componentType": 5126, + "count": 205, + "max": [ + 0.9800567626953125, + 0.75311911106109619, + 0.99050730466842651, + 1 + ], + "min": [ + -0.99124723672866821, + -0.74883294105529785, + -0.81858396530151367, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 1824, + "componentType": 5126, + "count": 205, + "max": [ + 0.98745900392532349, + -0.082575999200344086 + ], + "min": [ + 0.011574000120162964, + -1.0101000070571899 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 2580, + "componentType": 5125, + "count": 444, + "max": [ + 204 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 10392, + "componentType": 5126, + "count": 48, + "max": [ + 13.600899696350098, + 29.439399719238281, + -14.312199592590332 + ], + "min": [ + -13.932000160217285, + -13.354999542236328, + -161.66200256347656 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 10968, + "componentType": 5126, + "count": 48, + "max": [ + 0.99517762660980225, + 0.92403078079223633, + 0.80673778057098389 + ], + "min": [ + -0.99624568223953247, + -0.87215930223464966, + -0.83554595708847046 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 6928, + "componentType": 5126, + "count": 48, + "max": [ + 0.9995536208152771, + 0.99983823299407959, + 0.99570387601852417, + 1 + ], + "min": [ + -0.16215024888515472, + -0.99636381864547729, + -0.99467170238494873, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 3464, + "componentType": 5126, + "count": 48, + "max": [ + 0.99312597513198853, + -0.03125 + ], + "min": [ + 0.0019529999699443579, + -0.99197399616241455 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 4356, + "componentType": 5125, + "count": 168, + "max": [ + 47 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 11544, + "componentType": 5126, + "count": 208, + "max": [ + 16.230199813842773, + 17.268699645996094, + 8.8436403274536133 + ], + "min": [ + -13.89840030670166, + -0.26944699883460999, + -5.3360099792480469 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 14040, + "componentType": 5126, + "count": 208, + "max": [ + 0.9954187273979187, + 0.99849945306777954, + 0.98791450262069702 + ], + "min": [ + -0.99909764528274536, + -0.97442227602005005, + -0.98475199937820435 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 7696, + "componentType": 5126, + "count": 208, + "max": [ + 0.99974793195724487, + 0.95651400089263916, + 0.99982494115829468, + 1 + ], + "min": [ + -0.99987679719924927, + -0.9261975884437561, + -0.99926519393920898, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 3848, + "componentType": 5126, + "count": 208, + "max": [ + 0.7227330207824707, + -0.00976600032299757 + ], + "min": [ + 0.075092002749443054, + -0.99504399299621582 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 5028, + "componentType": 5125, + "count": 444, + "max": [ + 207 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 16536, + "componentType": 5126, + "count": 56, + "max": [ + 17.086700439453125, + 3.4040000438690186, + 12.037400245666504 + ], + "min": [ + -14.616499900817871, + -0.29703399538993835, + -7.1812701225280762 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 17208, + "componentType": 5126, + "count": 56, + "max": [ + 0.94255602359771729, + 0.93474805355072021, + 0.98665553331375122 + ], + "min": [ + -0.92963248491287231, + -0.91505014896392822, + -0.94594067335128784 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11024, + "componentType": 5126, + "count": 56, + "max": [ + 0.95517003536224365, + 0.89627093076705933, + 0.94724118709564209, + 1 + ], + "min": [ + -0.96374917030334473, + -0.66711539030075073, + -0.99312132596969604, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5512, + "componentType": 5126, + "count": 56, + "max": [ + 0.98497599363327026, + -0.043650999665260315 + ], + "min": [ + 0.034347999840974808, + -0.96719402074813843 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 6804, + "componentType": 5125, + "count": 72, + "max": [ + 55 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 17880, + "componentType": 5126, + "count": 46, + "max": [ + 10.443599700927734, + 50.361400604248047, + 22.38129997253418 + ], + "min": [ + -9.7062397003173828, + 23.771900177001953, + 10.906999588012695 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 18432, + "componentType": 5126, + "count": 46, + "max": [ + 0.99148529767990112, + 0.86223322153091431, + 0.98556339740753174 + ], + "min": [ + -0.99860465526580811, + -0.94229668378829956, + -0.96991622447967529 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11920, + "componentType": 5126, + "count": 46, + "max": [ + 0.99998879432678223, + 0.53751951456069946, + 0.99978011846542358, + 1 + ], + "min": [ + -0.090642355382442474, + -0.51535916328430176, + -0.99931555986404419, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5960, + "componentType": 5126, + "count": 46, + "max": [ + 1.0220500230789185, + -0.0078119998797774315 + ], + "min": [ + 0, + -0.98481297492980957 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7092, + "componentType": 5125, + "count": 171, + "max": [ + 45 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 18984, + "componentType": 5126, + "count": 16, + "max": [ + 6.6895899772644043, + 65.313400268554688, + 21.084499359130859 + ], + "min": [ + -7.3467001914978027, + 56.753299713134766, + 13.001099586486816 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19176, + "componentType": 5126, + "count": 16, + "max": [ + 0.93499952554702759, + 0.38227066397666931, + 0.89772975444793701 + ], + "min": [ + -0.95697623491287231, + -0.048514381051063538, + 0.25880265235900879 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 12656, + "componentType": 5126, + "count": 16, + "max": [ + 0.90836966037750244, + 0.029389245435595512, + -0.41785332560539246, + 1 + ], + "min": [ + -0.8974422812461853, + -0.02254461869597435, + -0.96455240249633789, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6328, + "componentType": 5126, + "count": 16, + "max": [ + 0.95549499988555908, + 0.060387998819351196 + ], + "min": [ + 0.19706800580024719, + -0.81887698173522949 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7776, + "componentType": 5125, + "count": 36, + "max": [ + 15 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19368, + "componentType": 5126, + "count": 13, + "max": [ + 2.2914800643920898, + 60.825298309326172, + 25.42650032043457 + ], + "min": [ + -3.2870500087738037, + 54.057098388671875, + 20.111000061035156 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19524, + "componentType": 5126, + "count": 13, + "max": [ + 0.81312018632888794, + 0.66290289163589478, + 0.99976295232772827 + ], + "min": [ + -0.83556008338928223, + -0.9323762059211731, + -0.36154359579086304 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 12912, + "componentType": 5126, + "count": 13, + "max": [ + 0.99986547231674194, + 0.95806711912155151, + 0.20935823023319244, + 1 + ], + "min": [ + -0.99974167346954346, + -0.96054691076278687, + -0.20537866652011871, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6456, + "componentType": 5126, + "count": 13, + "max": [ + 0.99712800979614258, + -0.0086409999057650566 + ], + "min": [ + 0.012694999575614929, + -1.0104399919509888 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 7920, + "componentType": 5125, + "count": 30, + "max": [ + 12 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19680, + "componentType": 5126, + "count": 8, + "max": [ + 2.2914800643920898, + 56.783500671386719, + 25.42650032043457 + ], + "min": [ + -3.2870500087738037, + 54.057098388671875, + 20.639699935913086 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 19776, + "componentType": 5126, + "count": 8, + "max": [ + 0.0072828452102839947, + 0.40976607799530029, + 0.91207218170166016 + ], + "min": [ + -0.01470462791621685, + -0.76323705911636353, + -0.7005506157875061 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 13120, + "componentType": 5126, + "count": 8, + "max": [ + 0.79418134689331055, + 0.69458264112472534, + -0.23833434283733368, + 1 + ], + "min": [ + 0.13800083100795746, + 0.55899262428283691, + -0.70605289936065674, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6560, + "componentType": 5126, + "count": 8, + "max": [ + 0.49902299046516418, + 0 + ], + "min": [ + 0.035156000405550003, + -0.46875 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 8040, + "componentType": 5125, + "count": 12, + "max": [ + 7 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 19872, + "componentType": 5126, + "count": 31, + "max": [ + 12.323399543762207, + 78.035697937011719, + 21.084499359130859 + ], + "min": [ + -12.95989990234375, + 60.825298309326172, + 6.0402698516845703 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 20244, + "componentType": 5126, + "count": 31, + "max": [ + 0.91775661706924438, + 0.91725820302963257, + 0.99410909414291382 + ], + "min": [ + -0.92493355274200439, + -0.69188672304153442, + -0.94189989566802979 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 13248, + "componentType": 5126, + "count": 31, + "max": [ + 0.99979597330093384, + 0.65767002105712891, + 0.99766832590103149, + 1 + ], + "min": [ + -0.21873074769973755, + -0.64858651161193848, + -0.99263429641723633, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 6624, + "componentType": 5126, + "count": 31, + "max": [ + 1.0016200542449951, + 0.0014329999685287476 + ], + "min": [ + 0.029295999556779861, + -0.99904400110244751 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 8088, + "componentType": 5125, + "count": 66, + "max": [ + 30 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 48, + "max": [ + 1, + 0.27870398759841919, + 0.99973601102828979, + 0, + 0.75459480285644531, + 1, + 0.62894612550735474, + 0, + 0.99961298704147339, + 0.75459498167037964, + 1, + 0, + 50.267101287841797, + 59.130001068115234, + 28.934806823730469, + 1 + ], + "min": [ + -0.99964100122451782, + -0.30577400326728821, + -0.026599016040563583, + 0, + -0.99898397922515869, + -0.99984502792358398, + -0.62884116172790527, + 0, + -0.96119910478591919, + -0.99930095672607422, + -0.77699404954910278, + 0, + -134.23701477050781, + -49.097095489501953, + -28.938409805297852, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 61, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 13744, + "componentType": 5126, + "count": 61, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 488, + "componentType": 5123, + "count": 24, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 14720, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 680, + "componentType": 5123, + "count": 42, + "max": [ + 29, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 15104, + "componentType": 5126, + "count": 42, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1016, + "componentType": 5123, + "count": 25, + "max": [ + 44, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 15776, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1216, + "componentType": 5123, + "count": 76, + "max": [ + 9, + 3, + 3, + 3 + ], + "min": [ + 2, + 3, + 3, + 3 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 16176, + "componentType": 5126, + "count": 76, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 1824, + "componentType": 5123, + "count": 205, + "max": [ + 9, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 17392, + "componentType": 5126, + "count": 205, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 3464, + "componentType": 5123, + "count": 48, + "max": [ + 17, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 20672, + "componentType": 5126, + "count": 48, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 3848, + "componentType": 5123, + "count": 208, + "max": [ + 37, + 20, + 20, + 20 + ], + "min": [ + 20, + 20, + 20, + 20 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 21440, + "componentType": 5126, + "count": 208, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 5512, + "componentType": 5123, + "count": 56, + "max": [ + 37, + 23, + 23, + 23 + ], + "min": [ + 23, + 23, + 23, + 23 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 24768, + "componentType": 5126, + "count": 56, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 5960, + "componentType": 5123, + "count": 46, + "max": [ + 42, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 25664, + "componentType": 5126, + "count": 46, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6328, + "componentType": 5123, + "count": 16, + "max": [ + 44, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26400, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6456, + "componentType": 5123, + "count": 13, + "max": [ + 45, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26656, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6560, + "componentType": 5123, + "count": 8, + "max": [ + 45, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26864, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 6624, + "componentType": 5123, + "count": 31, + "max": [ + 44, + 44, + 44, + 44 + ], + "min": [ + 44, + 44, + 44, + 44 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 26992, + "componentType": 5126, + "count": 31, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 61, + "max": [ + 32.529472351074219, + 0.11135535687208176, + 0.061983104795217514 + ], + "min": [ + 32.163684844970703, + -0.11511866748332977, + -0.11501942574977875 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 61, + "max": [ + 0.054084863513708115, + 0.44333663582801819, + 0.24388386309146881, + 0.9941292405128479 + ], + "min": [ + -0.027626069262623787, + -0.22645242512226105, + -0.3158072829246521, + 0.86084151268005371 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 488, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 18.540006637573242, + 4.5323890844883863e-06, + 4.5698570829699747e-06 + ], + "min": [ + 18.540000915527344, + -2.2439662643591873e-06, + -4.1278663047705777e-06 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 732, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 976, + "componentType": 5126, + "count": 61, + "max": [ + 0.025238573551177979, + 0.41798338294029236, + 0.49993935227394104, + 0.9879148006439209 + ], + "min": [ + -0.01552871335297823, + -0.25717577338218689, + -0.016146751120686531, + 0.75809866189956665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 976, + "componentType": 5126, + "count": 14, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1464, + "componentType": 5126, + "count": 14, + "max": [ + 20.25, + -6.0300002098083496, + -9.7199993133544922 + ], + "min": [ + 20.25, + -6.0300006866455078, + -9.7200002670288086 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 1952, + "componentType": 5126, + "count": 61, + "max": [ + 0.62314623594284058, + 0.71148651838302612, + 0.56656336784362793, + 0.60815805196762085 + ], + "min": [ + -0.47076046466827393, + -0.50176322460174561, + -0.68389338254928589, + -0.49862644076347351 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1276, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1632, + "componentType": 5126, + "count": 61, + "max": [ + 32.326324462890625, + 0.061002317816019058, + 0.082867845892906189 + ], + "min": [ + 32.258800506591797, + -0.064604729413986206, + -0.043950393795967102 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1520, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2928, + "componentType": 5126, + "count": 61, + "max": [ + 0.043149784207344055, + 0.21761536598205566, + 0.35713374614715576, + 0.99420905113220215 + ], + "min": [ + -0.0095480494201183319, + -0.44073829054832458, + -0.31106871366500854, + 0.82353216409683228 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1764, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2364, + "componentType": 5126, + "count": 61, + "max": [ + 21.726171493530273, + 0.029550353065133095, + 0.001560486271046102 + ], + "min": [ + 14.879765510559082, + -1.6700232028961182, + -1.7616674900054932 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2008, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3904, + "componentType": 5126, + "count": 61, + "max": [ + 0.038201406598091125, + 0.28197330236434937, + 0.47177916765213013, + 0.98791193962097168 + ], + "min": [ + -0.050330370664596558, + -0.3714999258518219, + -0.039977651089429855, + 0.79804706573486328 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2252, + "componentType": 5126, + "count": 18, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3096, + "componentType": 5126, + "count": 18, + "max": [ + 20.25, + -6.0300002098083496, + 9.720001220703125 + ], + "min": [ + 20.25, + -6.0300016403198242, + 9.7200002670288086 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2324, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 4880, + "componentType": 5126, + "count": 61, + "max": [ + 0.58856254816055298, + 0.76024621725082397, + 0.57208901643753052, + 0.6088486909866333 + ], + "min": [ + -0.40076512098312378, + -0.47427859902381897, + -0.66860616207122803, + -0.49620476365089417 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2568, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3312, + "componentType": 5126, + "count": 61, + "max": [ + 20.43000602722168, + 1.2502861181928893e-06, + 3.4066380294461851e-07 + ], + "min": [ + 20.429998397827148, + -3.8164544093888253e-06, + 5.1698972214353489e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2812, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5856, + "componentType": 5126, + "count": 61, + "max": [ + 0.00091213133418932557, + 0.0061056297272443771, + 0.31262972950935364, + 0.99996489286422729 + ], + "min": [ + -0.0014676413265988231, + -0.0098241083323955536, + -0.1942976713180542, + 0.94982314109802246 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3056, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4044, + "componentType": 5126, + "count": 61, + "max": [ + 20.610006332397461, + 2.765932549664285e-06, + 3.186845560776419e-07 + ], + "min": [ + 20.60999870300293, + -9.3390087840816705e-07, + 3.9699884268884489e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3300, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6832, + "componentType": 5126, + "count": 61, + "max": [ + 0.00055960274767130613, + 0.0037458715960383415, + 0.20562320947647095, + 0.99999988079071045 + ], + "min": [ + -0.00096529902657493949, + -0.0064615244045853615, + -0.11920378357172012, + 0.97860944271087646 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3544, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4776, + "componentType": 5126, + "count": 61, + "max": [ + 20.160003662109375, + 1.2481599469538196e-06, + 3.1993843663258303e-07 + ], + "min": [ + 20.159997940063477, + -3.0116002562863287e-06, + 1.0646517267787203e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3788, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 7808, + "componentType": 5126, + "count": 61, + "max": [ + 0.00060387683333829045, + 0.0040422338061034679, + 0.14553801715373993, + 0.99999886751174927 + ], + "min": [ + -0.00068322883453220129, + -0.0045734010636806488, + -0.12863484025001526, + 0.9893418550491333 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5508, + "componentType": 5126, + "count": 61, + "max": [ + 20.160003662109375, + 8.866958864928165e-07, + 3.2028208352130605e-07 + ], + "min": [ + 20.159997940063477, + -2.3425193376169773e-06, + 1.3299529655341757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4276, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8784, + "componentType": 5126, + "count": 61, + "max": [ + 0.00032408101833425462, + 0.0021693352609872818, + 0.12207173556089401, + 0.99999755620956421 + ], + "min": [ + -0.00057306635426357388, + -0.0038359942846000195, + -0.069034121930599213, + 0.99251371622085571 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4520, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6240, + "componentType": 5126, + "count": 61, + "max": [ + 20.520002365112305, + 9.0053879375773249e-07, + 9.3676462142866512e-08 + ], + "min": [ + 20.519998550415039, + -1.6427262607976445e-06, + -7.256267053890042e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4764, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9760, + "componentType": 5126, + "count": 61, + "max": [ + 0.00052983075147494674, + 0.0035466051194816828, + 0.091209582984447479, + 0.99999016523361206 + ], + "min": [ + -0.00042818277142941952, + -0.0028661731630563736, + -0.11286241561174393, + 0.99360418319702148 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5008, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6972, + "componentType": 5126, + "count": 61, + "max": [ + 20.250001907348633, + 4.5954416236781981e-06, + 1.0572896513849628e-07 + ], + "min": [ + 20.249998092651367, + 3.1028303055791184e-06, + -7.1907280130290019e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5252, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 10736, + "componentType": 5126, + "count": 61, + "max": [ + -0.014564872719347477, + -0.0059764557518064976, + 0.11178922653198242, + 0.99984019994735718 + ], + "min": [ + -0.017013350501656532, + -0.0091591170057654381, + -0.092392966151237488, + 0.99354410171508789 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5496, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7704, + "componentType": 5126, + "count": 61, + "max": [ + -14.220000267028809, + -8.8199996948242188, + 4.2957308821200968e-09 + ], + "min": [ + -14.220000267028809, + -8.8199996948242188, + -3.8800336277233782e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5740, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11712, + "componentType": 5126, + "count": 61, + "max": [ + 0.0031057561282068491, + 0.00043666857527568936, + 0.98358070850372314, + -0.18043725192546844 + ], + "min": [ + -0.0033459735568612814, + -0.00047044272650964558, + 0.92609715461730957, + -0.37727212905883789 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5984, + "componentType": 5126, + "count": 60, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12688, + "componentType": 5126, + "count": 60, + "max": [ + 0.19226767122745514, + -0.61336934566497803, + 0.23137751221656799, + 0.73025727272033691 + ], + "min": [ + 0.19226767122745514, + -0.61336934566497803, + 0.23137751221656799, + 0.73025727272033691 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6224, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8436, + "componentType": 5126, + "count": 61, + "max": [ + 0.090016849339008331, + 0.99009215831756592, + 8.6178494029809372e-07 + ], + "min": [ + 0.089952379465103149, + 0.98999911546707153, + -3.1348394259111956e-05 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6468, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13648, + "componentType": 5126, + "count": 61, + "max": [ + 9.2473769086609536e-08, + 1.1356482865210182e-08, + 0.95881980657577515, + 0.28402248024940491 + ], + "min": [ + -1.6877195321285399e-06, + -1.4985884035922936e-06, + 0.95881760120391846, + 0.28401508927345276 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6712, + "componentType": 5126, + "count": 51, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9168, + "componentType": 5126, + "count": 51, + "max": [ + 3.7800345420837402, + 2.9696094989776611, + -2.8799891471862793 + ], + "min": [ + 3.7799911499023438, + 2.9695672988891602, + -2.8800017833709717 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6916, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14624, + "componentType": 5126, + "count": 61, + "max": [ + 0.11587017029523849, + 0.26830378174781799, + 0.30492562055587769, + 0.96363276243209839 + ], + "min": [ + -0.13547594845294952, + 0.2492685467004776, + -0.26079723238945007, + 0.90614962577819824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7160, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 15600, + "componentType": 5126, + "count": 61, + "max": [ + 0.64276283979415894, + -0.0066836299374699593, + 0.76601552963256836, + 0.0056082271039485931 + ], + "min": [ + 0.64276283979415894, + -0.0066836299374699593, + 0.76601552963256836, + 0.0056082271039485931 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7404, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9780, + "componentType": 5126, + "count": 58, + "max": [ + 6.75, + 2.9700000286102295, + 3.5527136788005009e-15 + ], + "min": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7636, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16576, + "componentType": 5126, + "count": 61, + "max": [ + 0.039777006953954697, + 0.0056508439593017101, + 0.21216940879821777, + 1 + ], + "min": [ + -0.031368039548397064, + -0.0071664582937955856, + -0.26905322074890137, + 0.9622768759727478 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7880, + "componentType": 5126, + "count": 48, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10476, + "componentType": 5126, + "count": 48, + "max": [ + 4.5000271797180176, + 2.9700303077697754, + 3.2400004863739014 + ], + "min": [ + 4.4999680519104004, + 2.9699993133544922, + 3.2399907112121582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8072, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 17552, + "componentType": 5126, + "count": 61, + "max": [ + 0.015274576842784882, + -0.20603464543819427, + 0.21600854396820068, + 0.976296067237854 + ], + "min": [ + -0.022716604173183441, + -0.2178003340959549, + -0.32125306129455566, + 0.92251044511795044 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8316, + "componentType": 5126, + "count": 57, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11052, + "componentType": 5126, + "count": 57, + "max": [ + 9.3599996566772461, + 7.1054273576010019e-15, + 7.1054273576010019e-15 + ], + "min": [ + 9.3599996566772461, + -7.1054273576010019e-15, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8544, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18528, + "componentType": 5126, + "count": 61, + "max": [ + 0.17416168749332428, + 0.030805230140686035, + -0.33594787120819092, + 0.93395859003067017 + ], + "min": [ + 0.11608531326055527, + 0.0032875398173928261, + -0.71109229326248169, + 0.68392294645309448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8788, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11736, + "componentType": 5126, + "count": 61, + "max": [ + 10.890000343322754, + 1.4210854715202004e-14, + 3.5527136788005009e-15 + ], + "min": [ + 10.890000343322754, + -1.4210854715202004e-14, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9032, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 19504, + "componentType": 5126, + "count": 61, + "max": [ + 2.764733903247635e-17, + 4.8683516428461431e-17, + -0.38160154223442078, + 0.92432695627212524 + ], + "min": [ + -3.6488518389045252e-17, + -5.4215965063012097e-17, + -0.73037058115005493, + 0.68305110931396484 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9276, + "componentType": 5126, + "count": 59, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12468, + "componentType": 5126, + "count": 59, + "max": [ + 9.9999999747524271e-07, + 7.1054273576010019e-15, + 1.7763568394002505e-15 + ], + "min": [ + 9.9999999747524271e-07, + -1.4210854715202004e-14, + -8.8817841970012523e-16 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9512, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20480, + "componentType": 5126, + "count": 61, + "max": [ + 0.011501980014145374, + 0.14699436724185944, + 0.31558594107627869, + 0.96806061267852783 + ], + "min": [ + -0.042574223130941391, + 0.1272723525762558, + 0.21177315711975098, + 0.93737179040908813 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9756, + "componentType": 5126, + "count": 47, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13176, + "componentType": 5126, + "count": 47, + "max": [ + 3.7800073623657227, + 2.9700427055358887, + 2.8800122737884521 + ], + "min": [ + 3.7799835205078125, + 2.9700002670288086, + 2.8799996376037598 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9944, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21456, + "componentType": 5126, + "count": 61, + "max": [ + 0.11249811202287674, + -0.24252432584762573, + 0.22559243440628052, + 0.96373814344406128 + ], + "min": [ + -0.11927369236946106, + -0.27468135952949524, + -0.23917905986309052, + 0.92370182275772095 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10188, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13740, + "componentType": 5126, + "count": 58, + "max": [ + 7.1100001335144043, + 1.2599999904632568, + 3.5527136788005009e-15 + ], + "min": [ + 7.1100001335144043, + 1.2599999904632568, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10420, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 22432, + "componentType": 5126, + "count": 61, + "max": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082294322550297 + ], + "min": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082294322550297 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10664, + "componentType": 5126, + "count": 57, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14436, + "componentType": 5126, + "count": 57, + "max": [ + 6.75, + 2.9700000286102295, + 3.5527136788005009e-15 + ], + "min": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10892, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23408, + "componentType": 5126, + "count": 61, + "max": [ + 0.047128181904554367, + 0.035165563225746155, + 0.24235287308692932, + 1 + ], + "min": [ + -0.033097296953201294, + -0.011452687904238701, + -0.17020003497600555, + 0.96890562772750854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11136, + "componentType": 5126, + "count": 44, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15120, + "componentType": 5126, + "count": 44, + "max": [ + 4.500007152557373, + 2.970017671585083, + -3.2399907112121582 + ], + "min": [ + 4.4999570846557617, + 2.9699985980987549, + -3.2400002479553223 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11312, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24384, + "componentType": 5126, + "count": 61, + "max": [ + 0.0084545686841011047, + 0.22580137848854065, + 0.28238865733146667, + 0.97637456655502319 + ], + "min": [ + -0.0073726247064769268, + 0.18382537364959717, + -0.32383725047111511, + 0.92804425954818726 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11556, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 25360, + "componentType": 5126, + "count": 58, + "max": [ + 0.23315724730491638, + -0.73554593324661255, + 0.19014768302440643, + 0.60700386762619019 + ], + "min": [ + 0.23315724730491638, + -0.73554593324661255, + 0.19014768302440643, + 0.60700386762619019 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11788, + "componentType": 5126, + "count": 58, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15648, + "componentType": 5126, + "count": 58, + "max": [ + 0.090000003576278687, + 0.99000000953674316, + 3.5527136788005009e-15 + ], + "min": [ + 0.090000003576278687, + 0.99000000953674316, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12020, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26288, + "componentType": 5126, + "count": 61, + "max": [ + -0.02178458496928215, + -0.011583932675421238, + 0.95610255002975464, + 0.29200375080108643 + ], + "min": [ + -0.021788809448480606, + -0.011585000902414322, + 0.95609885454177856, + 0.29199126362800598 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12264, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16344, + "componentType": 5126, + "count": 61, + "max": [ + 9.3599996566772461, + 7.1054273576010019e-15, + 7.1054273576010019e-15 + ], + "min": [ + 9.3599996566772461, + -7.1054273576010019e-15, + -3.5527136788005009e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12508, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 27264, + "componentType": 5126, + "count": 61, + "max": [ + -0.12243978679180145, + -0.12896257638931274, + -0.16760142147541046, + 0.9696839451789856 + ], + "min": [ + -0.1563064306974411, + -0.20211496949195862, + -0.71462744474411011, + 0.65834915637969971 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12752, + "componentType": 5126, + "count": 59, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17076, + "componentType": 5126, + "count": 59, + "max": [ + 10.890000343322754, + 1.4210854715202004e-14, + 7.1054273576010019e-15 + ], + "min": [ + 10.890000343322754, + -1.4210854715202004e-14, + -7.1054273576010019e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12988, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28240, + "componentType": 5126, + "count": 61, + "max": [ + 4.4356743093710907e-17, + 4.5286285652706146e-17, + -0.2771066427230835, + 0.96083915233612061 + ], + "min": [ + -5.2573535091061507e-17, + -3.9255861054508757e-17, + -0.70733493566513062, + 0.70687854290008545 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13232, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 29216, + "componentType": 5126, + "count": 61, + "max": [ + 0.18932266533374786, + -0.10656850039958954, + 0.12947645783424377, + 0.98094284534454346 + ], + "min": [ + 0.11069732904434204, + -0.15984846651554108, + -0.010261204093694687, + 0.96990585327148438 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13476, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17784, + "componentType": 5126, + "count": 61, + "max": [ + 5.8500008583068848, + -3.045467167339666e-07, + 1.7720712008895134e-08 + ], + "min": [ + 5.8499994277954102, + -1.4831083490207675e-06, + -1.4041916962526102e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13720, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 30192, + "componentType": 5126, + "count": 61, + "max": [ + 0.0016590817831456661, + 0.006392164621502161, + 0.15436646342277527, + 0.99999004602432251 + ], + "min": [ + -0.0077552469447255135, + -0.0013674773508682847, + -0.23243032395839691, + 0.97256112098693848 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13964, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18516, + "componentType": 5126, + "count": 61, + "max": [ + 6.4800009727478027, + 2.3184878727988689e-07, + 6.0380607180832158e-09 + ], + "min": [ + 6.4799995422363281, + -5.7108331930066925e-07, + -1.3292333456149663e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14208, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31168, + "componentType": 5126, + "count": 61, + "max": [ + 0.0025896786246448755, + 0.005783784668892622, + 0.12320081144571304, + 0.99999016523361206 + ], + "min": [ + -0.0089073926210403442, + -0.0016815403942018747, + -0.30947771668434143, + 0.95084738731384277 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14452, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19248, + "componentType": 5126, + "count": 61, + "max": [ + 5.4000000953674316, + 8.356217051641579e-08, + 2.769531270985226e-09 + ], + "min": [ + 5.4000000953674316, + -2.0001949962988874e-07, + -3.4866776132957966e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14696, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 32144, + "componentType": 5126, + "count": 61, + "max": [ + 0.0014856602065265179, + 0.0023252177052199841, + 0.096965856850147247, + 0.99999839067459106 + ], + "min": [ + -0.0041953814215958118, + -0.00082340143853798509, + -0.10770485550165176, + 0.99417132139205933 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14940, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19980, + "componentType": 5126, + "count": 61, + "max": [ + 28.170000076293945, + 5.6700000762939453, + 1.8207657603852567e-14 + ], + "min": [ + 28.170000076293945, + 5.6700000762939453, + -7.9936057773011271e-15 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15184, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33120, + "componentType": 5126, + "count": 61, + "max": [ + -9.9743529374232611e-16, + -2.4465360835314309e-15, + 0.94264143705368042, + 0.33380699157714844 + ], + "min": [ + -1.4419550080878307e-15, + -3.0363780642638036e-15, + 0.94264143705368042, + 0.33380699157714844 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15428, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20712, + "componentType": 5126, + "count": 61, + "max": [ + 6.660001277923584, + -3.5999884605407715, + 8.6983874325596844e-08 + ], + "min": [ + 6.6599998474121094, + -3.5999898910522461, + -1.3168573786970228e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15672, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 34096, + "componentType": 5126, + "count": 61, + "max": [ + 3.0941096156311687e-06, + 9.418586743858981e-11, + 0.51379328966140747, + 0.99357187747955322 + ], + "min": [ + -0.010306774638593197, + -0.015802923589944839, + 0.11320315301418304, + 0.85785377025604248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15916, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21444, + "componentType": 5126, + "count": 61, + "max": [ + 27, + -1.815060159060522e-06, + 3.9878367275036908e-10 + ], + "min": [ + 27, + -2.0275331280572573e-06, + -3.3826879075604666e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16160, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35072, + "componentType": 5126, + "count": 61, + "max": [ + -0.02282918244600296, + 0.0098998472094535828, + 0.52188771963119507, + 0.92199361324310303 + ], + "min": [ + -0.024024609476327896, + 0.0086471633985638618, + 0.38643482327461243, + 0.85261833667755127 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16404, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22176, + "componentType": 5126, + "count": 61, + "max": [ + 0, + 98.51947021484375, + -4.4099998474121094 + ], + "min": [ + 0, + 78.481842041015625, + -4.4099998474121094 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16648, + "componentType": 5126, + "count": 61, + "max": [ + 2 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 36048, + "componentType": 5126, + "count": 61, + "max": [ + 0.67110466957092285, + 0.30446159839630127, + 0.67364424467086792, + 0.28200331330299377 + ], + "min": [ + 0.6433417797088623, + 0.22975838184356689, + 0.6433417797088623, + 0.20744413137435913 + ], + "type": "VEC4" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 2, + "target": { + "node": 57, + "path": "translation" + } + }, + { + "sampler": 3, + "target": { + "node": 57, + "path": "rotation" + } + }, + { + "sampler": 4, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 5, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 8, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 9, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 10, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 11, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 14, + "target": { + "node": 69, + "path": "translation" + } + }, + { + "sampler": 15, + "target": { + "node": 69, + "path": "rotation" + } + }, + { + "sampler": 16, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 17, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 67, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 67, + "path": "rotation" + } + }, + { + "sampler": 20, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 21, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 22, + "target": { + "node": 65, + "path": "translation" + } + }, + { + "sampler": 23, + "target": { + "node": 65, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 26, + "target": { + "node": 77, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 29, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 30, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 31, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 32, + "target": { + "node": 79, + "path": "translation" + } + }, + { + "sampler": 33, + "target": { + "node": 79, + "path": "rotation" + } + }, + { + "sampler": 34, + "target": { + "node": 81, + "path": "translation" + } + }, + { + "sampler": 35, + "target": { + "node": 81, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 38, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 39, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 40, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 41, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 44, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 45, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 46, + "target": { + "node": 87, + "path": "translation" + } + }, + { + "sampler": 47, + "target": { + "node": 87, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 89, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 89, + "path": "rotation" + } + }, + { + "sampler": 50, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 53, + "target": { + "node": 85, + "path": "translation" + } + }, + { + "sampler": 54, + "target": { + "node": 85, + "path": "rotation" + } + }, + { + "sampler": 55, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 56, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 83, + "path": "rotation" + } + }, + { + "sampler": 58, + "target": { + "node": 95, + "path": "translation" + } + }, + { + "sampler": 59, + "target": { + "node": 95, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 62, + "target": { + "node": 93, + "path": "translation" + } + }, + { + "sampler": 63, + "target": { + "node": 93, + "path": "rotation" + } + }, + { + "sampler": 64, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 65, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 68, + "target": { + "node": 97, + "path": "translation" + } + }, + { + "sampler": 69, + "target": { + "node": 97, + "path": "rotation" + } + }, + { + "sampler": 70, + "target": { + "node": 55, + "path": "translation" + } + }, + { + "sampler": 71, + "target": { + "node": 55, + "path": "rotation" + } + } + ], + "name": "Take 001", + "samplers": [ + { + "input": 99, + "interpolation": "LINEAR", + "output": 100 + }, + { + "input": 101, + "interpolation": "LINEAR", + "output": 102 + }, + { + "input": 103, + "interpolation": "LINEAR", + "output": 104 + }, + { + "input": 105, + "interpolation": "LINEAR", + "output": 106 + }, + { + "input": 107, + "interpolation": "LINEAR", + "output": 108 + }, + { + "input": 109, + "interpolation": "LINEAR", + "output": 110 + }, + { + "input": 111, + "interpolation": "LINEAR", + "output": 112 + }, + { + "input": 113, + "interpolation": "LINEAR", + "output": 114 + }, + { + "input": 115, + "interpolation": "LINEAR", + "output": 116 + }, + { + "input": 117, + "interpolation": "LINEAR", + "output": 118 + }, + { + "input": 119, + "interpolation": "LINEAR", + "output": 120 + }, + { + "input": 121, + "interpolation": "LINEAR", + "output": 122 + }, + { + "input": 123, + "interpolation": "LINEAR", + "output": 124 + }, + { + "input": 125, + "interpolation": "LINEAR", + "output": 126 + }, + { + "input": 127, + "interpolation": "LINEAR", + "output": 128 + }, + { + "input": 129, + "interpolation": "LINEAR", + "output": 130 + }, + { + "input": 131, + "interpolation": "LINEAR", + "output": 132 + }, + { + "input": 133, + "interpolation": "LINEAR", + "output": 134 + }, + { + "input": 135, + "interpolation": "LINEAR", + "output": 136 + }, + { + "input": 137, + "interpolation": "LINEAR", + "output": 138 + }, + { + "input": 139, + "interpolation": "LINEAR", + "output": 140 + }, + { + "input": 141, + "interpolation": "LINEAR", + "output": 142 + }, + { + "input": 143, + "interpolation": "LINEAR", + "output": 144 + }, + { + "input": 145, + "interpolation": "LINEAR", + "output": 146 + }, + { + "input": 147, + "interpolation": "LINEAR", + "output": 148 + }, + { + "input": 149, + "interpolation": "LINEAR", + "output": 150 + }, + { + "input": 151, + "interpolation": "LINEAR", + "output": 152 + }, + { + "input": 153, + "interpolation": "LINEAR", + "output": 154 + }, + { + "input": 155, + "interpolation": "LINEAR", + "output": 156 + }, + { + "input": 157, + "interpolation": "LINEAR", + "output": 158 + }, + { + "input": 159, + "interpolation": "LINEAR", + "output": 160 + }, + { + "input": 161, + "interpolation": "LINEAR", + "output": 162 + }, + { + "input": 163, + "interpolation": "LINEAR", + "output": 164 + }, + { + "input": 165, + "interpolation": "LINEAR", + "output": 166 + }, + { + "input": 167, + "interpolation": "LINEAR", + "output": 168 + }, + { + "input": 169, + "interpolation": "LINEAR", + "output": 170 + }, + { + "input": 171, + "interpolation": "LINEAR", + "output": 172 + }, + { + "input": 173, + "interpolation": "LINEAR", + "output": 174 + }, + { + "input": 175, + "interpolation": "LINEAR", + "output": 176 + }, + { + "input": 177, + "interpolation": "LINEAR", + "output": 178 + }, + { + "input": 179, + "interpolation": "LINEAR", + "output": 180 + }, + { + "input": 181, + "interpolation": "LINEAR", + "output": 182 + }, + { + "input": 183, + "interpolation": "LINEAR", + "output": 184 + }, + { + "input": 185, + "interpolation": "LINEAR", + "output": 186 + }, + { + "input": 187, + "interpolation": "LINEAR", + "output": 188 + }, + { + "input": 189, + "interpolation": "LINEAR", + "output": 190 + }, + { + "input": 191, + "interpolation": "LINEAR", + "output": 192 + }, + { + "input": 193, + "interpolation": "LINEAR", + "output": 194 + }, + { + "input": 195, + "interpolation": "LINEAR", + "output": 196 + }, + { + "input": 197, + "interpolation": "LINEAR", + "output": 198 + }, + { + "input": 199, + "interpolation": "LINEAR", + "output": 200 + }, + { + "input": 201, + "interpolation": "LINEAR", + "output": 202 + }, + { + "input": 203, + "interpolation": "LINEAR", + "output": 204 + }, + { + "input": 205, + "interpolation": "LINEAR", + "output": 206 + }, + { + "input": 207, + "interpolation": "LINEAR", + "output": 208 + }, + { + "input": 209, + "interpolation": "LINEAR", + "output": 210 + }, + { + "input": 211, + "interpolation": "LINEAR", + "output": 212 + }, + { + "input": 213, + "interpolation": "LINEAR", + "output": 214 + }, + { + "input": 215, + "interpolation": "LINEAR", + "output": 216 + }, + { + "input": 217, + "interpolation": "LINEAR", + "output": 218 + }, + { + "input": 219, + "interpolation": "LINEAR", + "output": 220 + }, + { + "input": 221, + "interpolation": "LINEAR", + "output": 222 + }, + { + "input": 223, + "interpolation": "LINEAR", + "output": 224 + }, + { + "input": 225, + "interpolation": "LINEAR", + "output": 226 + }, + { + "input": 227, + "interpolation": "LINEAR", + "output": 228 + }, + { + "input": 229, + "interpolation": "LINEAR", + "output": 230 + }, + { + "input": 231, + "interpolation": "LINEAR", + "output": 232 + }, + { + "input": 233, + "interpolation": "LINEAR", + "output": 234 + }, + { + "input": 235, + "interpolation": "LINEAR", + "output": 236 + }, + { + "input": 237, + "interpolation": "LINEAR", + "output": 238 + }, + { + "input": 239, + "interpolation": "LINEAR", + "output": 240 + }, + { + "input": 241, + "interpolation": "LINEAR", + "output": 242 + } + ] + } + ], + "asset": { + "extras": { + "author": "ShawnD (https://sketchfab.com/ShawnD)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/articuno-maya-rig-free-7331a386cd364a00a632028516f7a456", + "title": "Articuno Maya Rig (Free)" + }, + "generator": "Sketchfab-6.9.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 6872, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 8352, + "byteOffset": 6872, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 6872, + "byteOffset": 15224, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 20616, + "byteOffset": 22096, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 27488, + "byteOffset": 42712, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 3072, + "byteOffset": 70200, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 16892, + "byteOffset": 73272, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 22908, + "byteOffset": 90164, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 37024, + "byteOffset": 113072, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 150096, + "uri": "scene.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "images": [ + { + "uri": "textures/Texture1_baseColor.png" + }, + { + "uri": "textures/surfaceShader10_baseColor.png" + }, + { + "uri": "textures/surfaceShader6_baseColor.png" + }, + { + "uri": "textures/surfaceShader7_baseColor.png" + }, + { + "uri": "textures/surfaceShader8_baseColor.png" + }, + { + "uri": "textures/surfaceShader12_baseColor.png" + }, + { + "uri": "textures/surfaceShader9_baseColor.png" + }, + { + "uri": "textures/surfaceShader3_baseColor.png" + }, + { + "uri": "textures/surfaceShader4_baseColor.png" + }, + { + "uri": "textures/surfaceShader2_baseColor.png" + }, + { + "uri": "textures/surfaceShader14_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "Texture1", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader10", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 1, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader6", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 2, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader7", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 3, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader8", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 4, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader12", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 5, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader9", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 6, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader3", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 7, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader4", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 8, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader2", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 9, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "surfaceShader14", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 10, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + } + ], + "meshes": [ + { + "name": "Texture_0_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 71, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 3, + "WEIGHTS_0": 72 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_1_png_surfaceShader10_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 73, + "NORMAL": 6, + "POSITION": 5, + "TANGENT": 7, + "TEXCOORD_0": 8, + "WEIGHTS_0": 74 + }, + "indices": 9, + "material": 1, + "mode": 4 + } + ] + }, + { + "name": "Texture_2_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 75, + "NORMAL": 11, + "POSITION": 10, + "TANGENT": 12, + "TEXCOORD_0": 13, + "WEIGHTS_0": 76 + }, + "indices": 14, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_3_png_Texture1_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 77, + "NORMAL": 16, + "POSITION": 15, + "TANGENT": 17, + "TEXCOORD_0": 18, + "WEIGHTS_0": 78 + }, + "indices": 19, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Texture_4_png_surfaceShader6_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 79, + "NORMAL": 21, + "POSITION": 20, + "TANGENT": 22, + "TEXCOORD_0": 23, + "WEIGHTS_0": 80 + }, + "indices": 24, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "Texture_5_png_surfaceShader7_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 81, + "NORMAL": 26, + "POSITION": 25, + "TANGENT": 27, + "TEXCOORD_0": 28, + "WEIGHTS_0": 82 + }, + "indices": 29, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Texture_6_png_surfaceShader8_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 83, + "NORMAL": 31, + "POSITION": 30, + "TANGENT": 32, + "TEXCOORD_0": 33, + "WEIGHTS_0": 84 + }, + "indices": 34, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Texture_7_png_surfaceShader12_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 85, + "NORMAL": 36, + "POSITION": 35, + "TANGENT": 37, + "TEXCOORD_0": 38, + "WEIGHTS_0": 86 + }, + "indices": 39, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Texture_8_png_surfaceShader9_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 87, + "NORMAL": 41, + "POSITION": 40, + "TANGENT": 42, + "TEXCOORD_0": 43, + "WEIGHTS_0": 88 + }, + "indices": 44, + "material": 6, + "mode": 4 + } + ] + }, + { + "name": "Texture_9_png_surfaceShader3_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 89, + "NORMAL": 46, + "POSITION": 45, + "TANGENT": 47, + "TEXCOORD_0": 48, + "WEIGHTS_0": 90 + }, + "indices": 49, + "material": 7, + "mode": 4 + } + ] + }, + { + "name": "Texture_10_png_surfaceShader4_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 91, + "NORMAL": 51, + "POSITION": 50, + "TANGENT": 52, + "TEXCOORD_0": 53, + "WEIGHTS_0": 92 + }, + "indices": 54, + "material": 8, + "mode": 4 + } + ] + }, + { + "name": "Texture_11_png_surfaceShader2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 93, + "NORMAL": 56, + "POSITION": 55, + "TANGENT": 57, + "TEXCOORD_0": 58, + "WEIGHTS_0": 94 + }, + "indices": 59, + "material": 9, + "mode": 4 + } + ] + }, + { + "name": "Texture_12_png_surfaceShader14_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 95, + "NORMAL": 61, + "POSITION": 60, + "TANGENT": 62, + "TEXCOORD_0": 63, + "WEIGHTS_0": 96 + }, + "indices": 64, + "material": 10, + "mode": 4 + } + ] + }, + { + "name": "Texture_13_png_surfaceShader2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 97, + "NORMAL": 66, + "POSITION": 65, + "TANGENT": 67, + "TEXCOORD_0": 68, + "WEIGHTS_0": 98 + }, + "indices": 69, + "material": 9, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "b38095e4ddea46e7934bb9623debd839.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5, + 22 + ], + "name": "RootNode" + }, + { + "children": [ + 6 + ], + "name": "Articuno", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 7 + ], + "name": "Mesh" + }, + { + "children": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ], + "name": "Mesh" + }, + { + "name": "Texture_0_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_1_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_2_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_3_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_4_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_5_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_6_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_7_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_8_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_9_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_10_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_11_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_12_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "name": "Texture_13_png", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 23 + ], + "name": "locator1", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ], + "scale": [ + 20.028614044189453, + 20.028614044189453, + 20.028614044189453 + ] + }, + { + "children": [ + 24 + ], + "name": "Joints", + "rotation": [ + -3.8573707532279204e-33, + -0, + 0, + 1 + ], + "scale": [ + 0.049928568303585052, + 0.049928568303585052, + 0.049928568303585052 + ] + }, + { + "children": [ + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52 + ], + "name": "" + }, + { + "children": [ + 54 + ], + "name": "_rootJoint" + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 1, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 2, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 3, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 4, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 5, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 6, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 7, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 8, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 9, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 10, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 11, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 12, + "name": "", + "skin": 0 + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + -6.123233995736766e-17, + 0, + 0, + 6.123233995736766e-17, + 1, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 13, + "name": "", + "skin": 0 + }, + { + "children": [ + 55 + ], + "name": "Bone_46_00", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ] + }, + { + "children": [ + 56, + 60, + 64, + 72, + 82, + 92, + 97, + 100 + ], + "name": "Bone_45_01", + "rotation": [ + 0.64415347576141357, + 0.30260246992111206, + 0.6442183256149292, + 0.28014427423477173 + ], + "scale": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 0, + 82.492820739746094, + -4.4099998474121094 + ] + }, + { + "children": [ + 57 + ], + "name": "Bone_44_02", + "rotation": [ + 0.22572459280490875, + 0.34488260746002197, + -0.68158584833145142, + 0.60460340976715088 + ], + "scale": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "translation": [ + 20.25, + -6.0300006866455078, + -9.7200002670288086 + ] + }, + { + "children": [ + 58 + ], + "name": "Bone_43_03", + "rotation": [ + 0.0045657642185688019, + 0.075614385306835175, + 0.2584720253944397, + 0.96304404735565186 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 18.540004730224609, + -2.1947278128209291e-06, + 4.5698566282226238e-06 + ] + }, + { + "children": [ + 59 + ], + "name": "Bone_42_04", + "rotation": [ + 0.012751496396958828, + 0.10452471673488617, + -0.053532581776380539, + 0.99299871921539307 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 32.273937225341797, + -0.044249974191188812, + 0.035637479275465012 + ] + }, + { + "name": "Bone_41_05", + "rotation": [ + 0.0022298847325146198, + 0.93956583738327026, + 0.34181192517280579, + 0.019383097067475319 + ], + "scale": [ + 1.0000003576278687, + 0.9999997615814209, + 1 + ], + "translation": [ + 58.5, + 0.17999300360679626, + 0.7200009822845459 + ] + }, + { + "children": [ + 61 + ], + "name": "Bone_40_06", + "rotation": [ + -0.24601542949676514, + -0.36061286926269531, + -0.66648352146148682, + 0.60434645414352417 + ], + "scale": [ + 1, + 0.99999958276748657, + 0.9999995231628418 + ], + "translation": [ + 20.25, + -6.0300002098083496, + 9.720001220703125 + ] + }, + { + "children": [ + 62 + ], + "name": "Bone_39_07", + "rotation": [ + -0.015863798558712006, + -0.11709410697221756, + 0.29070103168487549, + 0.94948947429656982 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 17.194869995117188, + -0.25501087307929993, + -0.20484077930450439 + ] + }, + { + "children": [ + 63 + ], + "name": "Bone_38_08", + "rotation": [ + -0.0045040282420814037, + -0.10167516022920609, + -0.052013307809829712, + 0.99344688653945923 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 32.325958251953125, + -0.014638100750744343, + 0.025499481707811356 + ] + }, + { + "name": "Bone_37_09", + "rotation": [ + -0.34200724959373474, + 0.0029845817480236292, + -0.0082000670954585075, + 0.93965679407119751 + ], + "scale": [ + 1.0000002384185791, + 1.0000004768371582, + 0.99999982118606567 + ], + "translation": [ + 58.5, + 0.18000100553035736, + -0.71999901533126831 + ] + }, + { + "children": [ + 65 + ], + "name": "Bone_36_010", + "rotation": [ + -0.0032640839926898479, + -0.00045892922207713127, + 0.9831053614616394, + -0.18301095068454742 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + -14.220000267028809, + -8.8199996948242188, + -3.7954466236556073e-09 + ] + }, + { + "children": [ + 66 + ], + "name": "Bone_35_011", + "rotation": [ + -0.015681527554988861, + -0.0073614711873233318, + -0.0059791542589664459, + 0.9998321533203125 + ], + "translation": [ + 20.249998092651367, + 3.1028303055791184e-06, + 1.0448142973018548e-07 + ] + }, + { + "children": [ + 67 + ], + "name": "Bone_34_012", + "rotation": [ + 0.00037833140231668949, + 0.002532503567636013, + -0.080590948462486267, + 0.99674397706985474 + ], + "translation": [ + 20.519998550415039, + -1.0919071655735024e-06, + 9.3037527904016315e-08 + ] + }, + { + "children": [ + 68 + ], + "name": "Bone_33_013", + "rotation": [ + 0.00025742891011759639, + 0.00172317901160568, + -0.054836224764585495, + 0.99849385023117065 + ], + "translation": [ + 20.159997940063477, + -1.8300855799679994e-06, + 3.0578695486838114e-07 + ] + }, + { + "children": [ + 69 + ], + "name": "Bone_32_014", + "rotation": [ + 0.00031684551504440606, + 0.0021209022961556911, + -0.067492857575416565, + 0.99771755933761597 + ], + "translation": [ + 20.159997940063477, + -2.350629074499011e-06, + 2.9215567565188394e-07 + ] + }, + { + "children": [ + 70 + ], + "name": "Bone_31_015", + "rotation": [ + 0.00012257035996299237, + 0.00082046206807717681, + -0.026109326630830765, + 0.99965876340866089 + ], + "translation": [ + 20.60999870300293, + -4.6506636408594204e-07, + 2.975765482915449e-07 + ] + }, + { + "children": [ + 71 + ], + "name": "Bone_30_016", + "rotation": [ + 5.249154128250666e-05, + 0.00035136815859004855, + -0.011181486770510674, + 0.99993741512298584 + ], + "translation": [ + 20.429998397827148, + -2.2000585886416957e-06, + 3.0291357688838616e-07 + ] + }, + { + "name": "Bone_29_017", + "rotation": [ + 0.086136482656002045, + -0.70798414945602417, + 0.086136490106582642, + 0.69564330577850342 + ], + "scale": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000002384185791 + ], + "translation": [ + 25.559999465942383, + 0, + 0 + ] + }, + { + "children": [ + 73 + ], + "name": "Bone_28_018", + "rotation": [ + 0.035230740904808044, + 0.072218015789985657, + 0.96954447031021118, + 0.23135881125926971 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000003576278687 + ], + "translation": [ + -3.4200000762939453, + 8.2799997329711914, + -7.0199999809265137 + ] + }, + { + "children": [ + 74 + ], + "name": "Bone_27_019", + "rotation": [ + 0.01053299754858017, + 0.14665468037128448, + 0.31511330604553223, + 0.93759536743164062 + ], + "translation": [ + 9.9999999747524271e-07, + 3.5527136788005009e-15, + 0 + ] + }, + { + "children": [ + 75 + ], + "name": "Bone_26_020", + "rotation": [ + -6.5821722647437352e-18, + 1.0341245754834829e-17, + -0.72611016035079956, + 0.68757838010787964 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 10.890000343322754, + -7.1054273576010019e-15, + 3.5527136788005009e-15 + ] + }, + { + "children": [ + 76, + 78, + 79, + 81 + ], + "name": "Bone_25_021", + "rotation": [ + 0.16711172461509705, + 0.024739326909184456, + -0.58617144823074341, + 0.79237914085388184 + ], + "scale": [ + 0.99999982118606567, + 0.99999982118606567, + 1 + ], + "translation": [ + 9.3599996566772461, + 0, + 3.5527136788005009e-15 + ] + }, + { + "children": [ + 77 + ], + "name": "Bone_24_022", + "rotation": [ + 7.8863855890176637e-08, + -6.1857114985741646e-09, + 0.95881974697113037, + 0.28401535749435425 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + 0.090000823140144348, + 0.98999959230422974, + 5.5895424111440661e-07 + ] + }, + { + "name": "Bone_23_023", + "rotation": [ + 0.19226768612861633, + -0.61336934566497803, + 0.2313774973154068, + 0.73025721311569214 + ], + "scale": [ + 1.0000003576278687, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + 6.929999828338623, + 0.89999997615814209, + 0.18000000715255737 + ] + }, + { + "name": "Bone_22_024", + "rotation": [ + -0.011375770904123783, + 0.26780596375465393, + 0.025604421272873878, + 0.963065505027771 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.99999970197677612 + ], + "translation": [ + 3.7799973487854004, + 2.9695675373077393, + -2.8799891471862793 + ] + }, + { + "children": [ + 80 + ], + "name": "Bone_21_025", + "rotation": [ + -0.0064297504723072052, + 0.0011581191793084145, + 0.043487466871738434, + 0.99903261661529541 + ], + "translation": [ + 6.75, + 2.9700000286102295, + -8.8817841970012523e-16 + ] + }, + { + "name": "Bone_20_026", + "rotation": [ + 0.64276283979415894, + -0.006683629471808672, + 0.76601552963256836, + 0.0056082266382873058 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000002384185791 + ], + "translation": [ + 5.940000057220459, + 1.1699999570846558, + 6.6599998474121094 + ] + }, + { + "name": "Bone_19_027", + "rotation": [ + 0.0038926075212657452, + -0.2147674560546875, + 0.055047404021024704, + 0.9751049280166626 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 4.5, + 2.9699995517730713, + 3.2400002479553223 + ] + }, + { + "children": [ + 83 + ], + "name": "Bone_18_028", + "rotation": [ + -0.035230740904808044, + -0.072218015789985657, + 0.96954447031021118, + 0.23135881125926971 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000003576278687 + ], + "translation": [ + -3.4200000762939453, + 8.2799997329711914, + 7.0199999809265137 + ] + }, + { + "children": [ + 84 + ], + "name": "Bone_17_029", + "rotation": [ + 0.18679575622081757, + -0.10916697233915329, + 0.091452822089195251, + 0.97202175855636597 + ] + }, + { + "children": [ + 85 + ], + "name": "Bone_16_030", + "rotation": [ + 4.0748147819113622e-17, + -9.2175068306111273e-18, + -0.30086925625801086, + 0.95366549491882324 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation": [ + 10.890000343322754, + 7.1054273576010019e-15, + 0 + ] + }, + { + "children": [ + 86, + 87, + 89, + 90 + ], + "name": "Bone_15_031", + "rotation": [ + -0.1563064306974411, + -0.14413434267044067, + -0.54203248023986816, + 0.81301575899124146 + ], + "scale": [ + 1.0000003576278687, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 9.3599996566772461, + 2.2204460492503131e-15, + 3.5527136788005009e-15 + ] + }, + { + "name": "Bone_14_032", + "rotation": [ + -0.027924126014113426, + -0.27069512009620667, + -0.055996187031269073, + 0.96062940359115601 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.99999970197677612 + ], + "translation": [ + 3.780003547668457, + 2.9700055122375488, + 2.880000114440918 + ] + }, + { + "children": [ + 88 + ], + "name": "Bone_13_033", + "rotation": [ + -0.012649025768041611, + -0.0043769204057753086, + -0.065046742558479309, + 0.99779254198074341 + ], + "translation": [ + 6.75, + 2.9700000286102295, + -3.5527136788005009e-15 + ] + }, + { + "name": "Bone_12_034", + "rotation": [ + 0.76601535081863403, + 0.00668362807482481, + 0.64276307821273804, + -0.0056082289665937424 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 7.1100001335144043, + 1.2599999904632568, + 0 + ] + }, + { + "name": "Bone_11_035", + "rotation": [ + 0.0024537669960409403, + 0.20941370725631714, + -0.093986280262470245, + 0.97329670190811157 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 4.5000033378601074, + 2.9700033664703369, + -3.2400000095367432 + ] + }, + { + "children": [ + 91 + ], + "name": "Bone_10_036", + "rotation": [ + -0.021788707002997398, + -0.011584978550672531, + 0.95610219240188599, + 0.29199245572090149 + ], + "scale": [ + 0.99999940395355225, + 1.0000005960464478, + 0.99999994039535522 + ], + "translation": [ + 0.090000003576278687, + 0.99000000953674316, + -3.5527136788005009e-15 + ] + }, + { + "name": "Bone_9_037", + "rotation": [ + 0.23315724730491638, + -0.73554599285125732, + 0.19014766812324524, + 0.60700386762619019 + ], + "scale": [ + 0.99999988079071045, + 1.0000004768371582, + 0.99999982118606567 + ], + "translation": [ + 6.929999828338623, + 0.89999997615814209, + -0.18000000715255737 + ] + }, + { + "children": [ + 93 + ], + "name": "Bone_8_038", + "rotation": [ + -1.220125549531402e-15, + -2.8951541667922255e-15, + 0.94264143705368042, + 0.3338070809841156 + ], + "scale": [ + 1.0000003576278687, + 1.0000003576278687, + 1 + ], + "translation": [ + 28.170000076293945, + 5.6700000762939453, + 5.773159728050814e-15 + ] + }, + { + "children": [ + 94 + ], + "name": "Bone_7_039", + "rotation": [ + -0.00078434892930090427, + 0.00043471180833876133, + 0.015404367819428444, + 0.99988096952438354 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 5.4000000953674316, + -4.1645130011147558e-08, + 3.187881070232379e-10 + ] + }, + { + "children": [ + 95 + ], + "name": "Bone_6_040", + "rotation": [ + -0.0029703727923333645, + 0.0019287343602627516, + -0.085415385663509369, + 0.99633914232254028 + ], + "scale": [ + 1.0000004768371582, + 1.0000004768371582, + 1 + ], + "translation": [ + 6.4800000190734863, + -1.9121898731100373e-07, + -5.3334159311191343e-09 + ] + }, + { + "children": [ + 96 + ], + "name": "Bone_5_041", + "rotation": [ + -0.0016414264682680368, + 0.0013529252028092742, + 0.020266471430659294, + 0.99979233741760254 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "translation": [ + 5.8500003814697266, + -1.3254933719508699e-06, + -1.2018183781492553e-08 + ] + }, + { + "name": "Bone_4_042", + "rotation": [ + 0.39538115262985229, + -0.59237509965896606, + 0.39538115262985229, + 0.58003383874893188 + ], + "scale": [ + 1.0000003576278687, + 0.99999970197677612, + 0.99999982118606567 + ], + "translation": [ + 10.260000228881836, + 0, + 0 + ] + }, + { + "children": [ + 98, + 99 + ], + "name": "Bone_3_043", + "rotation": [ + -0.023863209411501884, + 0.0097060194239020348, + 0.50004208087921143, + 0.86561781167984009 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "translation": [ + 27, + -1.8541612689659814e-06, + -2.5852311402729811e-09 + ] + }, + { + "name": "Bone_2_044", + "rotation": [ + -0.0053491545841097832, + -0.00075647555058822036, + 0.3437042236328125, + 0.93906241655349731 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "translation": [ + 6.660001277923584, + -3.5999891757965088, + 8.0677239111537347e-08 + ] + }, + { + "name": "Bone_1_045", + "rotation": [ + 0.70697259902954102, + 0.0061456393450498581, + 0.70697259902954102, + -0.01848699152469635 + ], + "scale": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000001192092896 + ], + "translation": [ + 9, + -3.1499900817871094, + 0 + ] + }, + { + "name": "Bone_0_046", + "rotation": [ + 0.64596056938171387, + 0.29374143481254578, + 0.64596056938171387, + -0.28140014410018921 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "translation": [ + 29.340000152587891, + 11.340000152587891, + 0 + ] + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 70, + "joints": [ + 25, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "skeleton": 25 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + }, + { + "sampler": 0, + "source": 1 + }, + { + "sampler": 0, + "source": 2 + }, + { + "sampler": 0, + "source": 3 + }, + { + "sampler": 0, + "source": 4 + }, + { + "sampler": 0, + "source": 5 + }, + { + "sampler": 0, + "source": 6 + }, + { + "sampler": 0, + "source": 7 + }, + { + "sampler": 0, + "source": 8 + }, + { + "sampler": 0, + "source": 9 + }, + { + "sampler": 0, + "source": 10 + } + ] +} + diff --git a/demo/handpose/assets/articuno/textures/Texture1_baseColor.png b/demo/handpose/assets/articuno/textures/Texture1_baseColor.png new file mode 100644 index 0000000..1e00ad5 Binary files /dev/null and b/demo/handpose/assets/articuno/textures/Texture1_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader10_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader10_baseColor.png new file mode 100644 index 0000000..7efd76c Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader10_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader12_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader12_baseColor.png new file mode 100644 index 0000000..d7e7fb3 Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader12_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader14_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader14_baseColor.png new file mode 100644 index 0000000..24a201e Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader14_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader2_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader2_baseColor.png new file mode 100644 index 0000000..a0710a4 Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader2_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader3_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader3_baseColor.png new file mode 100644 index 0000000..ac5d3ce Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader3_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader4_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader4_baseColor.png new file mode 100644 index 0000000..97b851b Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader4_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader6_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader6_baseColor.png new file mode 100644 index 0000000..0519d54 Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader6_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader7_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader7_baseColor.png new file mode 100644 index 0000000..b120e2e Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader7_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader8_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader8_baseColor.png new file mode 100644 index 0000000..26746e5 Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader8_baseColor.png differ diff --git a/demo/handpose/assets/articuno/textures/surfaceShader9_baseColor.png b/demo/handpose/assets/articuno/textures/surfaceShader9_baseColor.png new file mode 100644 index 0000000..f6cfb0c Binary files /dev/null and b/demo/handpose/assets/articuno/textures/surfaceShader9_baseColor.png differ diff --git a/demo/handpose/assets/dragonite/scene.bin b/demo/handpose/assets/dragonite/scene.bin new file mode 100644 index 0000000..51d03c7 Binary files /dev/null and b/demo/handpose/assets/dragonite/scene.bin differ diff --git a/demo/handpose/assets/dragonite/scene.gltf b/demo/handpose/assets/dragonite/scene.gltf new file mode 100644 index 0000000..cee1300 --- /dev/null +++ b/demo/handpose/assets/dragonite/scene.gltf @@ -0,0 +1,137487 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 2076, + "max": [ + 113.44450378417969, + 265.78970336914062, + 41.509597778320312 + ], + "min": [ + -113.44450378417969, + 0.69111895561218262, + -252.966064453125 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 24912, + "componentType": 5126, + "count": 2076, + "max": [ + 0.99988013505935669, + 0.99988257884979248, + 0.999869704246521 + ], + "min": [ + -0.99988013505935669, + -0.9999699592590332, + -0.99999576807022095 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 2076, + "max": [ + 0.99971789121627808, + 0.99988150596618652, + 0.9977838397026062, + 1 + ], + "min": [ + -0.99971789121627808, + -0.99999576807022095, + -0.99988263845443726, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 33216, + "componentType": 5126, + "count": 2076, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 2076, + "max": [ + 0.9490504264831543, + 0.99979835748672485 + ], + "min": [ + 0.00020156223035883158, + 0.00020156223035883158 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 10158, + "max": [ + 2075 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 257, + "max": [ + 1, + 0.0086189005523920059, + 0.009893219918012619, + 0, + 0.0097591066733002663, + 1, + 0.010000000707805157, + 0, + 0.0097264861688017845, + 0.0099550094455480576, + 1, + 0, + 1.4894206523895264, + 2.1688945293426514, + 1.0819377899169922, + 1 + ], + "min": [ + -0.0099999997764825821, + -0.0086189014837145805, + -0.0098932189866900444, + 0, + -0.0097591066733002663, + -0.0098789669573307037, + -0.0094473613426089287, + 0, + -0.0097264852374792099, + -0.009999861940741539, + -0.009901897981762886, + 0, + -1.4894211292266846, + -1.7437095642089844, + -1.8796355724334717, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 2076, + "max": [ + 255, + 255, + 255, + 255 + ], + "min": [ + 6, + 6, + 6, + 6 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 66432, + "componentType": 5126, + "count": 2076, + "max": [ + 1, + 0.49899938702583313, + 0.28922280669212341, + 0.22815541923046112 + ], + "min": [ + 0.26090842485427856, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-09, + 0.1913716197013855, + 4.3073669075965881e-08 + ], + "min": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 780, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 65, + "max": [ + 0.0089846951887011528, + 0.034154176712036133, + 0.063492096960544586, + 0.99985557794570923 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 616, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1068, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 876, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 1848, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 948, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 1040, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2064, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + 1.862645149230957e-08, + 1.4156103134155273e-07, + 1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2520, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2080, + "componentType": 5126, + "count": 38, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 1.9092109226903631e-08, + 1 + ], + "min": [ + 1.1641530406336642e-08, + -4.6566178690810034e-10, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 2568, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.028223391622304916, + 4.0978193283081055e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1680, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3024, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 2688, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363913536072, + -0.058250229805707932, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.112343430519104, + -0.05825023353099823, + -0.038226868957281113, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 1928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3312, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.862645149230957e-08, + -1.2898817658424377e-07 + ], + "min": [ + -3.2596290111541748e-08, + -5.5879354476928711e-09, + -1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2080, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3768, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3296, + "componentType": 5126, + "count": 38, + "max": [ + -1.8277201974115087e-08, + -6.0652368460978323e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2240, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3792, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + 0.045039981603622437, + -3.8184225559234619e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2392, + "componentType": 5126, + "count": 29, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4248, + "componentType": 5126, + "count": 29, + "max": [ + 1, + 1.0000008344650269, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2508, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3904, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882647514343262, + -0.038419146090745926, + -9.6831150585785508e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882386744022369, + -0.038419149816036224, + -9.6853240393102169e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 4596, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + 0.022519826889038086, + 8.2887709140777588e-08 + ], + "min": [ + -3.5390257835388184e-08, + 0.022519733756780624, + 7.8231096267700195e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2812, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5052, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 2844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 4512, + "componentType": 5126, + "count": 38, + "max": [ + 5.1781546517304378e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.0599925316419103e-07, + -9.3644507614953909e-07, + 2.3003670435173262e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5148, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3148, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5604, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5120, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803959548473358, + -0.038298316299915314, + -0.044083759188652039, + 0.98228931427001953 + ], + "min": [ + 0.17803825438022614, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 5820, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-08, + -8.5681676864624023e-08, + 2.0954757928848267e-09 + ], + "min": [ + -1.601874828338623e-07, + -1.2293457984924316e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3524, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6276, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 5728, + "componentType": 5126, + "count": 38, + "max": [ + 3.9581204980265738e-09, + 2.2351741790771484e-08, + 5.9430025345363902e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.7345882952213287e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 3692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6324, + "componentType": 5126, + "count": 38, + "max": [ + -5.9604644775390625e-08, + 0.033446535468101501, + -3.3527612686157227e-08 + ], + "min": [ + -7.1711838245391846e-08, + 0.033446453511714935, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3844, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6780, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6336, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510172635316849, + 0.01642073318362236, + -0.038739234209060669, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7044, + "componentType": 5126, + "count": 38, + "max": [ + -1.0430812835693359e-07, + 1.0523945093154907e-07, + 3.8184225559234619e-08 + ], + "min": [ + -1.1315569281578064e-07, + 3.7252902984619141e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4236, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7500, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 6944, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132224154857113e-10, + -2.607702676016288e-08, + 2.8347127312144949e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -2.7939670133036998e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 7548, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -5.9604644775390625e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744627058506012, + -6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4556, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8004, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 7552, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518191993236542, + 0.0088785169646143913, + -0.057382568717002869, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382576167583466, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 4740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8100, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 0.020872212946414948, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4892, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8556, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8160, + "componentType": 5126, + "count": 38, + "max": [ + 1.2572852980952121e-08, + -9.4994888399924093e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + 4.6566119848989729e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 8604, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5212, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9060, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8768, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063956449739634991, + 0.6579899787902832, + 0.26252901554107666, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9252, + "componentType": 5126, + "count": 38, + "max": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.1874362826347351e-07 + ], + "min": [ + -1.203734427690506e-07, + 4.0978193283081055e-08, + -1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5580, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9708, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9376, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.1641543284923728e-10, + -7.2875991463661194e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5780, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9852, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 5956, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10380, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6056, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 9984, + "componentType": 5126, + "count": 44, + "max": [ + 0.17804411053657532, + -0.038269970566034317, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 10680, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6384, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11136, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 10688, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6600, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11328, + "componentType": 5126, + "count": 22, + "max": [ + 0.0073303328827023506, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303282260894775, + 0.34354427456855774, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6688, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11592, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 6696, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11296, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6848, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 11616, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + -1.4621764421463013e-07, + -1.1175870895385742e-08 + ], + "min": [ + -2.1886080503463745e-08, + -1.7136335372924805e-07, + -1.1041993275284767e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7000, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 11904, + "componentType": 5126, + "count": 38, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.3061951398849487e-08, + 1 + ], + "min": [ + -4.71482053399086e-09, + 3.119930624961853e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12120, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + -2.2351741790771484e-08 + ], + "min": [ + -1.0384246706962585e-07, + 0.032196007668972015, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7320, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12576, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000004768371582, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12512, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476891040802002, + -0.045752901583909988, + -0.025043418630957603, + 0.99704056978225708 + ], + "min": [ + 0.056476559489965439, + -0.045752905309200287, + -0.025043440982699394, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12744, + "componentType": 5126, + "count": 38, + "max": [ + -6.9849193096160889e-08, + 1.7927959561347961e-07, + -3.166496753692627e-08 + ], + "min": [ + -8.3819031715393066e-08, + 1.5366822481155396e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7680, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13200, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13120, + "componentType": 5126, + "count": 38, + "max": [ + -9.6479206845856424e-09, + -2.3166652596273707e-08, + -1.4173568096964573e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.3527619791584584e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13296, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 3.7252902984619141e-08 + ], + "min": [ + 5.9371814131736755e-09, + 0.049540437757968903, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8016, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13752, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8080, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 13728, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846226453781128, + -0.085242278873920441, + -0.013570735231041908, + 0.98919987678527832 + ], + "min": [ + 0.11846192181110382, + -0.085242293775081635, + -0.013570744544267654, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 13944, + "componentType": 5126, + "count": 38, + "max": [ + 8.2887709140777588e-08, + 0.024770038202404976, + 7.4505805969238281e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.024770006537437439, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8384, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14400, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14336, + "componentType": 5126, + "count": 38, + "max": [ + -5.8754807241712115e-07, + 9.4032299102764227e-07, + -1.4674151316285133e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14448, + "componentType": 5126, + "count": 38, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8704, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14904, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 8800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14944, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257198959589005, + 0.97361528873443604 + ], + "min": [ + 0.21749080717563629, + -0.069006666541099548, + -0.0030257296748459339, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8952, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15192, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -1.5133991837501526e-07, + 2.9802322387695312e-08, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9104, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15648, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 15552, + "componentType": 5126, + "count": 38, + "max": [ + 4.6740737502659613e-08, + -6.7520886659622192e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.6542688047470619e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9288, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 15744, + "componentType": 5126, + "count": 52, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9496, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16368, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 0.9999997615814209, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9592, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16160, + "componentType": 5126, + "count": 52, + "max": [ + 0.21750432252883911, + -0.068965867161750793, + -0.0028431480750441551, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575764831155539, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 9800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 16656, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326391905546188 + ], + "min": [ + 0.023247208446264267, + 0.34059685468673706, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9952, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17112, + "componentType": 5126, + "count": 26, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.9999995231628418, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 16992, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811855673789978, + -0.13169907033443451, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811857163906097, + -0.13169918954372406, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17424, + "componentType": 5126, + "count": 38, + "max": [ + -6.4377672970294952e-08, + 2.2351741790771484e-08, + 7.4505805969238281e-08 + ], + "min": [ + -2.0116567611694336e-07, + -3.3120159059762955e-08, + 7.6106516644358635e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10360, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17880, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 17600, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505801528346183e-09, + -9.3132266343332049e-09, + -7.4505805969238281e-09, + 1 + ], + "min": [ + 6.9849184214376692e-09, + -1.862645326866641e-08, + -1.3969838619232178e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10520, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 17904, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-07, + 0.031801007688045502, + -3.9115548133850098e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800948083400726, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10672, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18360, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 10764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18208, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024177730083466, + -0.10080224275588989, + -0.057818155735731125, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080226510763168, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 10916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 18636, + "componentType": 5126, + "count": 38, + "max": [ + 1.6391277313232422e-07, + 2.7706846594810486e-08, + -2.9243528842926025e-07 + ], + "min": [ + 5.3085386753082275e-08, + -2.2351741790771484e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19092, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 18816, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + -3.3178371161568521e-09, + -3.3993273973464966e-08, + 1 + ], + "min": [ + -8.8475644588470459e-09, + -2.0489096641540527e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19116, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.5832483768463135e-08, + 0.044816639274358749, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11380, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19572, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 19424, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152609169483185, + -0.052601058036088943, + -0.024043351411819458, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601061761379242, + -0.024043373763561249, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 19848, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-07, + 0.022408418357372284, + 1.1033262126147747e-07 + ], + "min": [ + -1.5669502317905426e-07, + 0.022408399730920792, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20304, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 11792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20032, + "componentType": 5126, + "count": 38, + "max": [ + -6.2002783351999824e-07, + 9.6263806881324854e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.2852556109428406e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 11944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20352, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12096, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20808, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 20640, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130188584327698, + -0.10888328403234482, + 0.021744716912508011, + 0.9531741738319397 + ], + "min": [ + 0.2813015878200531, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12288, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 20928, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + -1.6763806343078613e-08, + 1.6763806343078613e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-08, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12440, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21384, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21248, + "componentType": 5126, + "count": 38, + "max": [ + 5.9750178138529009e-08, + -4.8428788090859598e-08, + -3.3527616238870905e-08, + 1 + ], + "min": [ + 3.2130639482375045e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 12624, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21480, + "componentType": 5126, + "count": 43, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12796, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 21996, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 12852, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 21856, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13024, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22164, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954514354467392, + 0.33536890149116516, + -0.0064071603119373322 + ], + "min": [ + 0.034954499453306198, + 0.33536884188652039, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13176, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 22620, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999922513961792, + 0.99999934434890747, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13312, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 22544, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214220762252808, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701881587505341, + -0.22579626739025116, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13464, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23028, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 2.0116567611694336e-07 + ], + "min": [ + 2.9802322387695312e-08, + 1.4901161193847656e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23484, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23152, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505814851022478e-09, + 2.0489100194254206e-08, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.6542700481968495e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 13800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 23580, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + 5.9604644775390625e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.022592496126890182, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 13952, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24036, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 23760, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399157166481018, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591923415660858, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24180, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + -1.1175870895385742e-08, + 2.9802322387695312e-08 + ], + "min": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14304, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24636, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14320, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24368, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + 4.6566133171666024e-09, + -1.0244549208948683e-08, + 1 + ], + "min": [ + -1.4901161193847656e-08, + -2.0023437130589627e-08, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 24684, + "componentType": 5126, + "count": 38, + "max": [ + 1.0803341865539551e-07, + 0.027876397594809532, + 3.9581209421157837e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876261621713638, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14624, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25140, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 14712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 24976, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988000005483627, + -0.020971952006220818, + 0.99849694967269897 + ], + "min": [ + 0.041517928242683411, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 14864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25404, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.013938168063759804, + -4.8428773880004883e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938087970018387, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15016, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25860, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 25584, + "componentType": 5126, + "count": 38, + "max": [ + 5.2968971431255341e-08, + -1.3364477524646645e-07, + 4.5634802603444768e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.4482063193099748e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 25956, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15352, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 26412, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26192, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057187080383301, + -0.17872533202171326, + 0.015338578261435032, + 0.91919606924057007 + ], + "min": [ + 0.35057181119918823, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 26604, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + -5.9604644775390625e-08, + -8.1956386566162109e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15720, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27060, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 15736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 26800, + "componentType": 5126, + "count": 38, + "max": [ + -4.3510230085530566e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "min": [ + -5.9604644775390625e-08, + -3.5390257835388184e-08, + -3.9115551686563776e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 15888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27108, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16040, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27564, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 27408, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + -0.17872501909732819, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + -0.17872503399848938, + 0.015338657423853874, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 27804, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579222798347473, + 0.32914415001869202, + 0.0039985515177249908 + ], + "min": [ + 0.044579200446605682, + 0.32914406061172485, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16424, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28260, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28016, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570001721382141, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749421834945679, + -0.27479112148284912, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28404, + "componentType": 5126, + "count": 38, + "max": [ + 1.0756775736808777e-07, + 4.4330954551696777e-07, + 1.4994293451309204e-07 + ], + "min": [ + 7.4505805969238281e-09, + 4.246830940246582e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 16792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 28624, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489093088826849e-08, + 1.1362133278680631e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.1175870184843006e-07, + -1.303851338008144e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 16944, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 28908, + "componentType": 5126, + "count": 56, + "max": [ + 1.862645149230957e-08, + 0.25792211294174194, + 2.0279549062252045e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.25792208313941956, + -6.9849193096160889e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17168, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 29580, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17224, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 29232, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319517910480499, + 0.787913978099823, + 0.084729395806789398, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 17448, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 29748, + "componentType": 5126, + "count": 62, + "max": [ + 1.1920928955078125e-07, + 0.12896108627319336, + -2.8870999813079834e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896065413951874, + -3.6787241697311401e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17696, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 30492, + "componentType": 5126, + "count": 47, + "max": [ + 0.99999982118606567, + 1.0000044107437134, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 17884, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 30128, + "componentType": 5126, + "count": 62, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31056, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.1392713338136673, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18284, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31512, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000008344650269, + 1.0000020265579224, + 1.0000020265579224 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31120, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531652569770813, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401045978069305, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18572, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 31920, + "componentType": 5126, + "count": 20, + "max": [ + 0.044326618313789368, + -0.11071401834487915, + 0.071930147707462311 + ], + "min": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18652, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32160, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.99999672174453735, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 18716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 31728, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531584024429321, + -0.090401113033294678, + 0.19322757422924042, + 0.94302952289581299 + ], + "min": [ + -0.25531637668609619, + -0.090401455760002136, + 0.19322720170021057, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 18868, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32352, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-07, + -3.3527612686157227e-08, + 4.3958425521850586e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19036, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 32856, + "componentType": 5126, + "count": 42, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999690055847168, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19204, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 32336, + "componentType": 5126, + "count": 42, + "max": [ + 3.6647594470196054e-07, + -6.0908479326826637e-07, + 5.8510431699687615e-07, + 1 + ], + "min": [ + -1.7876758420243277e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 19372, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33360, + "componentType": 5126, + "count": 46, + "max": [ + 7.0780515670776367e-08, + 0.27854281663894653, + 2.0815059542655945e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.27854278683662415, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19556, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33912, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19572, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33008, + "componentType": 5126, + "count": 46, + "max": [ + 0.25531500577926636, + 0.12245099991559982, + -0.17468461394309998, + 0.97297227382659912 + ], + "min": [ + 0.088408268988132477, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 19756, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 33960, + "componentType": 5126, + "count": 42, + "max": [ + 6.7055225372314453e-08, + 0.13927170634269714, + 3.2037496566772461e-07 + ], + "min": [ + -1.1102230246251565e-16, + 0.13927145302295685, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19924, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 34464, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000003576278687, + 0.99999874830245972, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 19976, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 33744, + "componentType": 5126, + "count": 42, + "max": [ + -1.5273697329121205e-07, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.116192947847594e-06, + -8.257104127551429e-06, + -1.1362142231519101e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20144, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 34620, + "componentType": 5126, + "count": 38, + "max": [ + -0.027315661311149597, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975754089653492 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20296, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35076, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000008344650269 + ], + "min": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20344, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 34416, + "componentType": 5126, + "count": 56, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35220, + "componentType": 5126, + "count": 38, + "max": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 5.0632388592930511e-07 + ], + "min": [ + -6.4464984461665154e-08, + 1.7578713595867157e-08, + 4.8081545855893637e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20720, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35676, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 20736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35312, + "componentType": 5126, + "count": 38, + "max": [ + -1.6952979020601333e-09, + 8.3324273703055951e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -7.004929081233513e-09, + 8.2272904933233804e-08, + 5.2154064178466797e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 20888, + "componentType": 5126, + "count": 35, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 35724, + "componentType": 5126, + "count": 35, + "max": [ + 0.023130057379603386, + 0.26697862148284912, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21028, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36144, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21116, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 35920, + "componentType": 5126, + "count": 37, + "max": [ + -0.69586646556854248, + -0.39777597784996033, + -0.29703006148338318, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36408, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + 3.3527612686157227e-08, + 1.4901161193847656e-08, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21416, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36864, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21432, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 36512, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-08, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.2456439435482025e-08, + 9.3132257461547852e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 36912, + "componentType": 5126, + "count": 38, + "max": [ + 7.1013346314430237e-08, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223380446434021, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21736, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 37368, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1, + 1.0000004768371582 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 21804, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 37120, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234384030103683, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234383285045624, + 0.058250226080417633, + 0.038226824253797531, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 21956, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 37572, + "componentType": 5126, + "count": 38, + "max": [ + 1.6088597476482391e-07, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + -2.2351741790771484e-08, + -4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22108, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38028, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 37728, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7869751900434494e-08, + -1.8102582544088364e-08, + -6.8685039877891541e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38124, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.045039966702461243, + 4.8894435167312622e-08 + ], + "min": [ + -9.0338289737701416e-08, + 0.045039962977170944, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22444, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38580, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 38336, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882900834083557, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882878482341766, + 0.038419175893068314, + 9.6838331955950707e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 38676, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "min": [ + -1.6717240214347839e-07, + 0.022520110011100769, + 1.2293457984924316e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22780, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39132, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 22796, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 38944, + "componentType": 5126, + "count": 38, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0628793606647378e-07, + 1 + ], + "min": [ + 6.3786865212023258e-07, + 9.4692217089686892e-07, + -2.0675361156463623e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 22948, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39180, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23100, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39636, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000004768371582, + 1, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 39552, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803941667079926, + 0.038298342376947403, + 0.044083788990974426, + 0.98228937387466431 + ], + "min": [ + 0.17803771793842316, + 0.038298297673463821, + 0.044083651155233383, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 23356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 39948, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + -7.0780515670776367e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.1175870895385742e-08, + -1.3411045074462891e-07, + 2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40404, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 40160, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252896323280993e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -4.0745353757642988e-09, + -2.8638160287641767e-08, + -7.6950513516749197e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 23676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40452, + "componentType": 5126, + "count": 38, + "max": [ + 8.5681676864624023e-08, + 0.033446446061134338, + -7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.033446401357650757, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23828, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 40908, + "componentType": 5126, + "count": 19, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 23904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 40768, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510617807507515, + -0.016420755535364151, + 0.038739204406738281, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.03873918205499649, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41136, + "componentType": 5126, + "count": 38, + "max": [ + 9.9651515483856201e-08, + -2.9802322387695312e-08, + -8.6612999439239502e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3317912817001343e-07, + -2.3283064365386963e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41592, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 41376, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 2.514570951461792e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -6.7520899982298488e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 41640, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.041744641959667206, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24528, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42096, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 41984, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518230736255646, + -0.0088785076513886452, + 0.057382617145776749, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785141706466675, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 24740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42276, + "componentType": 5126, + "count": 38, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872443914413452, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24892, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42732, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 42592, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.0244548320770264e-08, + 1 + ], + "min": [ + -5.7742006731587026e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 42828, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25228, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43284, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25268, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 43200, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43404, + "componentType": 5126, + "count": 38, + "max": [ + 6.4261257648468018e-08, + -2.3283064365386963e-08, + -3.5762786865234375e-07 + ], + "min": [ + -3.166496753692627e-08, + -6.7055225372314453e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25568, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 43792, + "componentType": 5126, + "count": 38, + "max": [ + 1.6705596905808306e-08, + 1.5599653124809265e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2596290111541748e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 25736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 43908, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25888, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 44364, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 25996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 44400, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803849279880524, + 0.038296066224575043, + 0.044083882123231888, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 44688, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26300, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45144, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26352, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 45008, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063958112150430679, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.2625291645526886, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45300, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303841054439545, + 0.34354394674301147, + -0.021197730675339699 + ], + "min": [ + -0.0073304995894432068, + 0.34354394674301147, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26652, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45756, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 45600, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725982069969177, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 26820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 45804, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 2.1792948246002197e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26972, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46260, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 26988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 46208, + "componentType": 5126, + "count": 38, + "max": [ + 3.0850066945475874e-09, + 2.5611370801925659e-09, + 1.6181733286657618e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46308, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 7.0780515670776367e-08 + ], + "min": [ + -1.7858110368251801e-07, + 0.032196007668972015, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27292, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 46764, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000005960464478, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 46816, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043465197086334, + 0.99704056978225708 + ], + "min": [ + 0.056476563215255737, + 0.045752868056297302, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47052, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 8.5681676864624023e-08 + ], + "min": [ + -8.6147338151931763e-08, + -8.1956386566162109e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27692, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47508, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 27724, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 47424, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969840839678227e-09, + 4.526009789174168e-08, + -2.9453081751285026e-08, + 1 + ], + "min": [ + -1.5133994057947575e-09, + 3.5390264940815541e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 27876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 47604, + "componentType": 5126, + "count": 38, + "max": [ + 8.149072527885437e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540486186742783, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28028, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48060, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 48032, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570722192525864, + 0.98919987678527832 + ], + "min": [ + 0.11846189945936203, + 0.08524225652217865, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48228, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-08, + 0.024770209565758705, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770196527242661, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28388, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48684, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 48640, + "componentType": 5126, + "count": 38, + "max": [ + -5.8393925428390503e-07, + -9.3656132094110944e-07, + 1.9185243615993386e-07, + 1 + ], + "min": [ + -5.9235026128590107e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 48732, + "componentType": 5126, + "count": 38, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28708, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49188, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 28764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 49248, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749170124530792, + 0.069006718695163727, + 0.0030257171019911766, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006636738777161, + 0.0030257017351686954, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 28916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49356, + "componentType": 5126, + "count": 38, + "max": [ + 7.7299773693084717e-08, + 1.601874828338623e-07, + 5.005858838558197e-08 + ], + "min": [ + 5.4948031902313232e-08, + 4.8428773880004883e-08, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29068, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49812, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 49856, + "componentType": 5126, + "count": 38, + "max": [ + -1.0710210496256423e-08, + 1.4435499906539917e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -1.2470992238888812e-08, + 3.7252898543727042e-09, + -6.4319469750273583e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 29236, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 49860, + "componentType": 5126, + "count": 65, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29496, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 50640, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29548, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 50464, + "componentType": 5126, + "count": 65, + "max": [ + 0.21750125288963318, + 0.069091320037841797, + 0.003196188248693943, + 0.97362369298934937 + ], + "min": [ + 0.2174590677022934, + 0.068967774510383606, + 0.002856898820027709, + 0.973613440990448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 29808, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 50796, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247243836522102, + 0.34059679508209229, + -0.015326134860515594 + ], + "min": [ + -0.023247748613357544, + 0.34059673547744751, + -0.015326384454965591 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 29960, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 51252, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999958276748657, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999922513961792, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 51504, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811858654022217, + 0.13169935345649719, + 0.16719585657119751, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169923424720764, + 0.16719573736190796, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 51552, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-08, + 2.2069434635341167e-07, + 1.3411045074462891e-07 + ], + "min": [ + -1.9371509552001953e-07, + 1.5646219253540039e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52008, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 52112, + "componentType": 5126, + "count": 38, + "max": [ + -8.8475626824902065e-09, + 2.5145704185547402e-08, + 3.7252894102834944e-09, + 1 + ], + "min": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52056, + "componentType": 5126, + "count": 38, + "max": [ + 6.8685039877891541e-09, + 0.031801000237464905, + 5.7741999626159668e-08 + ], + "min": [ + -2.7939679458910405e-09, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30684, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52512, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 30740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 52720, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228000879288, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080226510763168, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 30892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 52680, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-08, + 3.5390257835388184e-08, + 5.029141902923584e-08 + ], + "min": [ + -8.754432201385498e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31044, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53136, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 53328, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -1.4784747648377561e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53232, + "componentType": 5126, + "count": 38, + "max": [ + -2.514570951461792e-08, + 0.044816732406616211, + 6.3329935073852539e-08 + ], + "min": [ + -2.3096799850463867e-07, + 0.04481661319732666, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31380, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53688, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 53936, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151916265487671, + 0.052601084113121033, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151901364326477, + 0.05260106548666954, + 0.024043364450335503, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 53928, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02240833081305027, + 2.4400651454925537e-07 + ], + "min": [ + -2.360902726650238e-07, + 0.022408241406083107, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31764, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54384, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 31780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 54544, + "componentType": 5126, + "count": 38, + "max": [ + -6.493646651506424e-07, + -9.4700953923165798e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 31932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54432, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32084, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 54888, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 55152, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130200505256653, + 0.10888329893350601, + -0.021744724363088608, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + 0.10888323932886124, + -0.021744729951024055, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 32300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55080, + "componentType": 5126, + "count": 38, + "max": [ + 7.6368451118469238e-08, + -7.4505805969238281e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32452, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55536, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32468, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 55760, + "componentType": 5126, + "count": 38, + "max": [ + 1.164161822497789e-10, + 3.1199313355045888e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.4028048944680904e-08, + 2.1012969142475413e-08, + -1.8626455045023249e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 32620, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 55584, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32828, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56208, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 32884, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 56368, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130325675010681, + 0.10890431702136993, + -0.021636079996824265, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.1088700145483017, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33092, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56376, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954965114593506, + 0.33536875247955322, + -0.0064073465764522552 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33244, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 56832, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 57200, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214213311672211, + 0.16701884567737579, + 0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + 0.16701869666576385, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57084, + "componentType": 5126, + "count": 38, + "max": [ + 3.9115548133850098e-08, + 1.6391277313232422e-07, + 1.5646219253540039e-07 + ], + "min": [ + -6.7055225372314453e-08, + 1.0803341865539551e-07, + 1.4062970876693726e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 57808, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566217548615896e-10, + -7.4505814851022478e-09, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + -3.7252907425511239e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 33800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 57588, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-08, + 0.022592537105083466, + -1.3504177331924438e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592434659600258, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 33952, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58044, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 58416, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399183243513107, + 0.028591984882950783, + 0.99515920877456665 + ], + "min": [ + 0.082881681621074677, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58272, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 6.3329935073852539e-08, + -6.28642737865448e-08 + ], + "min": [ + -4.4703483581542969e-08, + -2.7939677238464355e-08, + -1.9744038581848145e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58728, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 59024, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244550097127103e-08, + 1.1175871783564162e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -1.4901164746561335e-08, + -4.1909529180372829e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 58776, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876298874616623, + 5.4016709327697754e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34652, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59232, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 34704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 59632, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518155485391617, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + 0.028988013043999672, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 34856, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59388, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.013938102871179581, + 9.5926225185394287e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.013938065618276596, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35008, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59844, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 60240, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -4.0745366192140864e-08, + 5.8091245591640472e-08, + -4.0046870708465576e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 59868, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35320, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 60324, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 60848, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + 0.17872521281242371, + -0.015338596887886524, + 0.91919606924057007 + ], + "min": [ + 0.35057175159454346, + 0.17872513830661774, + -0.01533864438533783, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35568, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 60612, + "componentType": 5126, + "count": 38, + "max": [ + 1.3783574104309082e-07, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + -2.9802322387695312e-08, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35720, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61068, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 35752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 61456, + "componentType": 5126, + "count": 38, + "max": [ + 4.4819907785154101e-09, + -1.7695132470407771e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + -1.187436549088261e-08, + -2.4214388716359281e-08, + -1.862645149230957e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 35904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61164, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36056, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61620, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 62064, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338590368628502, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872487008571625, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 36288, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 61860, + "componentType": 5126, + "count": 38, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579751789569855, + 0.32914397120475769, + 0.00399823859333992 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36440, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 62316, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000008344650269 + ], + "min": [ + 0.99999970197677612, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 62672, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + 0.18749427795410156, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570015132427216, + 0.18749421834945679, + 0.27479088306427002, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 36688, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 62604, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 2.7194619178771973e-07, + 1.7136335372924805e-07 + ], + "min": [ + -2.3189932107925415e-07, + 1.4156103134155273e-07, + 1.0873191058635712e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36840, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63060, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 36872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 63280, + "componentType": 5126, + "count": 38, + "max": [ + 3.5390254282674505e-08, + -1.1175874448099421e-08, + -6.3329935073852539e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 37024, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63156, + "componentType": 5126, + "count": 56, + "max": [ + -1.0244548320770264e-08, + 0.25792214274406433, + 1.3271346688270569e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37248, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 63828, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999922513961792, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37396, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 63888, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 37620, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 64272, + "componentType": 5126, + "count": 64, + "max": [ + 1.2479722499847412e-07, + 0.12896072864532471, + 6.7800283432006836e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 37876, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 65040, + "componentType": 5126, + "count": 56, + "max": [ + 0.99999940395355225, + 1.0000060796737671, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 1.0000026226043701, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38100, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 64784, + "componentType": 5126, + "count": 64, + "max": [ + 2.9940034096398449e-07, + 0.88032650947570801, + 2.0891943677270319e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 38356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 65712, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.13927134871482849, + -1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38508, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66168, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999773502349854, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 65808, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401254594326019, + 0.19322672486305237, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 38732, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66384, + "componentType": 5126, + "count": 38, + "max": [ + -0.044326536357402802, + -0.11071467399597168, + 0.071930289268493652 + ], + "min": [ + -0.044326610863208771, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38884, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66840, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 38908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 66416, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531512498855591, + 0.090401232242584229, + -0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + -0.25531548261642456, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39060, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 66912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + -1.4901161193847656e-08, + 4.9173831939697266e-07 + ], + "min": [ + -3.7252902984619141e-08, + -2.9802322387695312e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39236, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 67440, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999690055847168, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39316, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 67024, + "componentType": 5126, + "count": 44, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631596620121854e-07, + -2.9895460329498746e-07, + -7.9954185139285983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39492, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 67680, + "componentType": 5126, + "count": 56, + "max": [ + 3.7252902984619141e-08, + 0.27854272723197937, + 6.9383531808853149e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39716, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68352, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 39736, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 67728, + "componentType": 5126, + "count": 56, + "max": [ + 0.25531500577926636, + -0.090401507914066315, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571906089782715, + -0.12242159992456436, + 0.17470520734786987, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 39960, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68412, + "componentType": 5126, + "count": 42, + "max": [ + -6.3329935073852539e-08, + 0.13927134871482849, + 4.7869980335235596e-07 + ], + "min": [ + -2.6822090148925781e-07, + 0.1392713338136673, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40128, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 68916, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999910593032837, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40224, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 68624, + "componentType": 5126, + "count": 42, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0628018571878783e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 40392, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69204, + "componentType": 5126, + "count": 56, + "max": [ + 0.027315612882375717, + 0.33446061611175537, + 0.019757704809308052 + ], + "min": [ + 0.027315452694892883, + 0.33446058630943298, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69876, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 40648, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 69296, + "componentType": 5126, + "count": 56, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 40872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 69972, + "componentType": 5126, + "count": 38, + "max": [ + 6.3060724642127752e-08, + 8.3819031715393066e-09, + 2.997039700858295e-07 + ], + "min": [ + 1.6763806343078613e-08, + -7.4505805969238281e-09, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41024, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70428, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 70192, + "componentType": 5126, + "count": 38, + "max": [ + -3.8926355472312935e-09, + -3.2074240152724087e-08, + 6.7055211161459738e-08, + 1 + ], + "min": [ + -6.9740049291056039e-09, + -5.3645635489374399e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 41208, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70524, + "componentType": 5126, + "count": 21, + "max": [ + -0.023130089044570923, + 0.26697880029678345, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41292, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 70776, + "componentType": 5126, + "count": 20, + "max": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 70800, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703021049499512, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 41524, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 71016, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41784, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 71796, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 41856, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 71408, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 42116, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 72012, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42376, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 72792, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42460, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 72448, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 42720, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 73044, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 42980, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 73824, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43064, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 73488, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 43324, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 74076, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43584, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 74856, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 43660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 74528, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 43920, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75084, + "componentType": 5126, + "count": 38, + "max": [ + -2.3865140974521637e-09, + -1.3605159665530664e-08, + -2.8113703365306719e-08 + ], + "min": [ + -2.0985442716892067e-08, + -3.5390257835388184e-08, + -3.0733644962310791e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44072, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 75568, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.885928213596344e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.5691402782967998e-08, + 1.8663602219248787e-08, + 8.7311442797943783e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 44240, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 75588, + "componentType": 5126, + "count": 56, + "max": [ + 7.6397549397810849e-10, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.8160790205001831e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44464, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76260, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44512, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 76176, + "componentType": 5126, + "count": 56, + "max": [ + 0.0025766722392290831, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896294593811035, + -0.37012138962745667, + -0.0056022708304226398 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 44736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76404, + "componentType": 5126, + "count": 38, + "max": [ + -5.50062395632267e-09, + 2.1420419216156006e-08, + -2.6542693376541138e-08 + ], + "min": [ + -5.8207660913467407e-09, + -6.5192580223083496e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76860, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 44904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 77072, + "componentType": 5126, + "count": 38, + "max": [ + -5.2322903343338112e-08, + 7.1711816929109773e-08, + 1.5425025701176764e-09, + 1 + ], + "min": [ + -5.8847923867233476e-08, + 7.1333474238599592e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 76908, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.47875440120697021, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875437140464783, + -9.406358003616333e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77364, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 77680, + "componentType": 5126, + "count": 38, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115009218454361, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77412, + "componentType": 5126, + "count": 38, + "max": [ + 1.2526288628578186e-07, + 0.23937708139419556, + 4.5634806156158447e-08 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937705159187317, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45528, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77868, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 78288, + "componentType": 5126, + "count": 38, + "max": [ + 1.6479643250022491e-07, + 0.039239592850208282, + 3.1983549320102611e-07, + 0.99922984838485718 + ], + "min": [ + 1.1330482152516197e-07, + 0.039239473640918732, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 45704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 77940, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278387308120728, + 3.5390257835388184e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.21278376877307892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45856, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78396, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 45872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 78896, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + 0.18448330461978912, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897864580154419, + 0.18448325991630554, + 0.78801393508911133, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46024, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78444, + "componentType": 5126, + "count": 32, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323383241891861 + ], + "min": [ + -0.15143668651580811, + 0.084600687026977539, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46152, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78828, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 79504, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + -0.18448324501514435, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.27897855639457703, + -0.1844833642244339, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46320, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 78876, + "componentType": 5126, + "count": 40, + "max": [ + 1.4156103134155273e-07, + -8.9406967163085938e-08, + 8.2072801887989044e-09 + ], + "min": [ + 2.2584572434425354e-08, + -1.4156103134155273e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46480, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 79356, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46512, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 80112, + "componentType": 5126, + "count": 40, + "max": [ + 2.5826739147305489e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.210719435817964e-08, + -2.0448352699986572e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 46672, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 79452, + "componentType": 5126, + "count": 56, + "max": [ + 4.0978193283081055e-08, + 0.42556756734848022, + 6.1467289924621582e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.42556756734848022, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80124, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 46928, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 80752, + "componentType": 5126, + "count": 56, + "max": [ + -0.20713318884372711, + 0.28850477933883667, + 0.78801411390304565, + 0.54963225126266479 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47152, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80220, + "componentType": 5126, + "count": 45, + "max": [ + 7.0780515670776367e-08, + 0.21278397738933563, + 1.862645149230957e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.21278393268585205, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47332, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 80760, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47440, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 81648, + "componentType": 5126, + "count": 45, + "max": [ + -2.2351743567128324e-08, + 1.0408691650809487e-06, + -1.415610881849716e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47620, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81084, + "componentType": 5126, + "count": 5, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957687139511108, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47640, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81144, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 47676, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 82368, + "componentType": 5126, + "count": 55, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53590929508209229, + 0.75361925363540649, + -0.15842762589454651, + -0.34606358408927917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 47896, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81252, + "componentType": 5126, + "count": 38, + "max": [ + -1.2259971526873414e-07, + -3.3978210467466852e-08, + -4.0508190579657821e-08 + ], + "min": [ + -1.2464650467336469e-07, + -7.3088671115328907e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48048, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81708, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 83248, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038521373687217e-08, + -9.4372563097522288e-09, + -3.5529088004970788e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372634151795864e-09, + -3.5531616537909372e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 48208, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 81732, + "componentType": 5126, + "count": 56, + "max": [ + 1.8873834051191807e-08, + 0.31343457102775574, + -1.2994860298931599e-08 + ], + "min": [ + 1.6647391021251678e-08, + 0.31343454122543335, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48432, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 82404, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48480, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 83856, + "componentType": 5126, + "count": 56, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210078943520784, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195724790915847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 48704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 82548, + "componentType": 5126, + "count": 38, + "max": [ + 1.0256189852952957e-07, + 1.1175870895385742e-07, + 3.2043317332863808e-08 + ], + "min": [ + 8.1534381024539471e-08, + 1.0547228157520294e-07, + -1.8699211068451405e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48856, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 48872, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 84752, + "componentType": 5126, + "count": 38, + "max": [ + -1.8806686763461755e-10, + -6.7208020482212305e-08, + -2.9103830456733704e-09, + 1 + ], + "min": [ + -7.6639707913273014e-09, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 49024, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83052, + "componentType": 5126, + "count": 56, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + -1.0011717677116394e-08, + 0.47875422239303589, + -6.8859662860631943e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49248, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83724, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49296, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 85360, + "componentType": 5126, + "count": 56, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 49520, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 83868, + "componentType": 5126, + "count": 56, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 1.9234721548855305e-07 + ], + "min": [ + 3.4924596548080444e-09, + 0.23937715590000153, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49744, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 84540, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 49840, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 86256, + "componentType": 5126, + "count": 56, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -4.9444201977166813e-07, + -0.039239216595888138, + 1.7011343800277245e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50064, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 84828, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.21278372406959534, + 4.4703483581542969e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50216, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 87152, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448299169540405, + -0.78801417350769043, + 0.51688551902770996 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801423311233521, + 0.51688545942306519 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50384, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85332, + "componentType": 5126, + "count": 27, + "max": [ + 0.15143662691116333, + 0.084600932896137238, + -0.12323376536369324 + ], + "min": [ + 0.15143661201000214, + 0.084600836038589478, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50492, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85656, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 87760, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.2789786159992218, + 0.18448303639888763, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 50676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 85752, + "componentType": 5126, + "count": 38, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 4.2899046093225479e-08 + ], + "min": [ + 3.4226104617118835e-08, + -6.5192580223083496e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50828, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86208, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 50892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 88368, + "componentType": 5126, + "count": 38, + "max": [ + 2.4866312742233276e-07, + 1.0515211101846944e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.3559543649298575e-07, + 9.3830728076227388e-08, + 7.6863202025378996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86400, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556744813919067, + 4.4703483581542969e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86856, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 88976, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688563823699951 + ], + "min": [ + -0.2789786159992218, + -0.18448293209075928, + -0.78801417350769043, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 86904, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 0.21278370916843414, + 3.166496753692627e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.2127835750579834, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51516, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87360, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 89584, + "componentType": 5126, + "count": 38, + "max": [ + 2.3003666171916848e-07, + 5.58793855631734e-09, + -7.450577932388569e-09, + 1 + ], + "min": [ + 1.0640362546610049e-07, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 51764, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87648, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51796, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87744, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 51836, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 90192, + "componentType": 5126, + "count": 55, + "max": [ + -0.53533452749252319, + 0.76489174365997314, + -0.089343994855880737, + 0.34695103764533997 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 87864, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52316, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 88644, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52392, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 91072, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 88872, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52804, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 89328, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 52860, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 92112, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 52892, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 89496, + "componentType": 5126, + "count": 56, + "max": [ + 4.1058228816837072e-08, + 1.4901161193847656e-08, + 3.457535058259964e-07 + ], + "min": [ + -7.4505805969238281e-08, + -6.5600033849477768e-08, + 6.6924258135259151e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53116, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 90168, + "componentType": 5126, + "count": 47, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53304, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 92240, + "componentType": 5126, + "count": 56, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 53528, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 90732, + "componentType": 5126, + "count": 65, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53788, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 91512, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 53804, + "componentType": 5126, + "count": 53, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 93136, + "componentType": 5126, + "count": 53, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229209542274475, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 54016, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 91560, + "componentType": 5126, + "count": 56, + "max": [ + 2.384185791015625e-07, + 5.9604644775390625e-08, + 1.544831320643425e-07 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54240, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 92232, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54304, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 93984, + "componentType": 5126, + "count": 56, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 54528, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 92424, + "componentType": 5126, + "count": 65, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54788, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93204, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 54808, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 94880, + "componentType": 5126, + "count": 56, + "max": [ + 0.26693448424339294, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601040601730347 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93264, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55184, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93720, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55240, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 95776, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55272, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 93888, + "componentType": 5126, + "count": 59, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55508, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 94596, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 55572, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 95904, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482410460710526, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294223144650459, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 55808, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 94788, + "componentType": 5126, + "count": 55, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56028, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 95448, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56052, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 96848, + "componentType": 5126, + "count": 55, + "max": [ + 0.10101210325956345, + 0.79780721664428711, + -0.48497864603996277, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 56272, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 95520, + "componentType": 5126, + "count": 59, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56508, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96228, + "componentType": 5126, + "count": 15, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56568, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 97728, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007465839385986, + 0.39800706505775452, + 0.12996619939804077, + 0.71552282571792603 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 56804, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96408, + "componentType": 5126, + "count": 42, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 56972, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 96912, + "componentType": 5126, + "count": 21, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57056, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 98672, + "componentType": 5126, + "count": 42, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516590654850006, + -0.3081190288066864 + ], + "min": [ + 0.92842525243759155, + -0.11126617342233658, + -0.17523984611034393, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 57224, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 97164, + "componentType": 5126, + "count": 59, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57460, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 97872, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57524, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 99344, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 57760, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98064, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57912, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98520, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 57960, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 100288, + "componentType": 5126, + "count": 37, + "max": [ + 0.81515997648239136, + -0.2049533873796463, + -0.34477153420448303, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790059208869934 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 58108, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 98664, + "componentType": 5126, + "count": 60, + "max": [ + 4.0978193283081055e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -3.5390257835388184e-08, + 0.25762265920639038, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58348, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 99384, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58440, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 100880, + "componentType": 5126, + "count": 60, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026337862014771, + -0.19707523286342621, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 58680, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 99660, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58936, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 100428, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 58984, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 101840, + "componentType": 5126, + "count": 64, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076332747936249, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 59240, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 100572, + "componentType": 5126, + "count": 59, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101280, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59492, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 102864, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 59728, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101328, + "componentType": 5126, + "count": 55, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59948, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 101988, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 59984, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 103808, + "componentType": 5126, + "count": 55, + "max": [ + -0.098626755177974701, + 0.79780721664428711, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101212561130524, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 60204, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102096, + "componentType": 5126, + "count": 59, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60440, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102804, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60448, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 104688, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35181999206542969, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 60684, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 102828, + "componentType": 5126, + "count": 41, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60848, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 103320, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 60880, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 105632, + "componentType": 5126, + "count": 41, + "max": [ + 0.92845195531845093, + 0.11125475168228149, + 0.17524003982543945, + -0.30811873078346252 + ], + "min": [ + 0.92842668294906616, + 0.11104374378919601, + 0.17517001926898956, + -0.30815866589546204 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61044, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 103416, + "componentType": 5126, + "count": 59, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61280, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104124, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61300, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 106288, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104184, + "componentType": 5126, + "count": 38, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61688, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104640, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 61736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 107232, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477174282073975, + -0.41790032386779785 + ], + "min": [ + 0.81515991687774658, + 0.20495337247848511, + 0.34477171301841736, + -0.41790050268173218 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 61888, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 104784, + "componentType": 5126, + "count": 59, + "max": [ + 2.9802322387695312e-08, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + 7.4505805969238281e-09, + 0.25762245059013367, + 5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62124, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 105492, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62220, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 107840, + "componentType": 5126, + "count": 59, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 62456, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 105780, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62712, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 106548, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 62800, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 108784, + "componentType": 5126, + "count": 64, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 63056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 106812, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 6.7055225372314453e-08, + 5.9604644775390625e-08 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63316, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 107592, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63332, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 109808, + "componentType": 5126, + "count": 65, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 63592, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 107640, + "componentType": 5126, + "count": 56, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -1.1379786002407855e-14, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63816, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 108312, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 63872, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 110848, + "componentType": 5126, + "count": 46, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 64056, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 108480, + "componentType": 5126, + "count": 65, + "max": [ + -3.4638958368304884e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -2.2351734685344127e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64316, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 109260, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64364, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 111584, + "componentType": 5126, + "count": 65, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698620909401143e-08, + -2.1549524831243616e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 64624, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 109404, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.36641579866409302, + 6.3282712403633923e-15 + ], + "min": [ + -6.2172489379008766e-15, + 0.36641570925712585, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64884, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 110184, + "componentType": 5126, + "count": 17, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 64952, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 112624, + "componentType": 5126, + "count": 65, + "max": [ + 0.36187875270843506, + 1.7365229254551195e-08, + 8.7073068755216809e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65212, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 110388, + "componentType": 5126, + "count": 65, + "max": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "min": [ + -4.253541963095131e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65472, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111168, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65536, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 113664, + "componentType": 5126, + "count": 65, + "max": [ + 0.096756108105182648, + 1.6857502060929619e-08, + 9.8583271324059751e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -6.90242885070802e-09, + 9.7077325733607722e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65796, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111360, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65804, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111384, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 65812, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 114704, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 65820, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 111408, + "componentType": 5126, + "count": 55, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 3.5179624546799459e-08 + ], + "min": [ + -7.9711917067015747e-08, + -5.0918995242454912e-08, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66040, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112068, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000011920928955, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000007152557373, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66088, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 114736, + "componentType": 5126, + "count": 55, + "max": [ + 0.56482315063476562, + 0.78602421283721924, + -0.12704811990261078, + -0.29326313734054565 + ], + "min": [ + 0.52877569198608398, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66308, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112212, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66316, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112236, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66324, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 115616, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66340, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112260, + "componentType": 5126, + "count": 55, + "max": [ + 1.5542553910563583e-09, + -8.6856246639399615e-09, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810762978595449e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66560, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 112920, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66640, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 115680, + "componentType": 5126, + "count": 55, + "max": [ + -0.52772623300552368, + 0.78695201873779297, + -0.12602680921554565, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307946562767029 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66860, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113160, + "componentType": 5126, + "count": 2, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66868, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113184, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 66876, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116560, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 66892, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113208, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113712, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116624, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67076, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113736, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67084, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113760, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67092, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116656, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67100, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113784, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67108, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113808, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67116, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116688, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67124, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 113832, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-09, + 0.1913716197013855, + 4.3073669075965881e-08 + ], + "min": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67384, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 114612, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 67480, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 116720, + "componentType": 5126, + "count": 65, + "max": [ + 0.0089846951887011528, + 0.034154176712036133, + 0.063492096960544586, + 0.99985557794570923 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 67740, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 114900, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68000, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 115680, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68072, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 117760, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 68332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 115896, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + 1.862645149230957e-08, + 1.4156103134155273e-07, + 1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116352, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 118800, + "componentType": 5126, + "count": 38, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 1.9092109226903631e-08, + 1 + ], + "min": [ + 1.1641530406336642e-08, + -4.6566178690810034e-10, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 68652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116400, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.028223391622304916, + 4.0978193283081055e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68804, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 116856, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 68900, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 119408, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363913536072, + -0.058250229805707932, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.112343430519104, + -0.05825023353099823, + -0.038226868957281113, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117144, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.862645149230957e-08, + -1.2898817658424377e-07 + ], + "min": [ + -3.2596290111541748e-08, + -5.5879354476928711e-09, + -1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69204, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117600, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 120016, + "componentType": 5126, + "count": 38, + "max": [ + -1.8277201974115087e-08, + -6.0652368460978323e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 117624, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + 0.045039981603622437, + -3.8184225559234619e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69516, + "componentType": 5126, + "count": 29, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118080, + "componentType": 5126, + "count": 29, + "max": [ + 1, + 1.0000008344650269, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69632, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 120624, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882647514343262, + -0.038419146090745926, + -9.6831150585785508e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882386744022369, + -0.038419149816036224, + -9.6853240393102169e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 69784, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118428, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + 0.022519826889038086, + 8.2887709140777588e-08 + ], + "min": [ + -3.5390257835388184e-08, + 0.022519733756780624, + 7.8231096267700195e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69936, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118884, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 69968, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 121232, + "componentType": 5126, + "count": 38, + "max": [ + 5.1781546517304378e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.0599925316419103e-07, + -9.3644507614953909e-07, + 2.3003670435173262e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 118980, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70272, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 119436, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70344, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 121840, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803959548473358, + -0.038298316299915314, + -0.044083759188652039, + 0.98228931427001953 + ], + "min": [ + 0.17803825438022614, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70496, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 119652, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-08, + -8.5681676864624023e-08, + 2.0954757928848267e-09 + ], + "min": [ + -1.601874828338623e-07, + -1.2293457984924316e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70648, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120108, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 122448, + "componentType": 5126, + "count": 38, + "max": [ + 3.9581204980265738e-09, + 2.2351741790771484e-08, + 5.9430025345363902e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.7345882952213287e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 70816, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120156, + "componentType": 5126, + "count": 38, + "max": [ + -5.9604644775390625e-08, + 0.033446535468101501, + -3.3527612686157227e-08 + ], + "min": [ + -7.1711838245391846e-08, + 0.033446453511714935, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 70968, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120612, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 123056, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510172635316849, + 0.01642073318362236, + -0.038739234209060669, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 120876, + "componentType": 5126, + "count": 38, + "max": [ + -1.0430812835693359e-07, + 1.0523945093154907e-07, + 3.8184225559234619e-08 + ], + "min": [ + -1.1315569281578064e-07, + 3.7252902984619141e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121332, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 123664, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132224154857113e-10, + -2.607702676016288e-08, + 2.8347127312144949e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -2.7939670133036998e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121380, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -5.9604644775390625e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744627058506012, + -6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71680, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121836, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 71712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 124272, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518191993236542, + 0.0088785169646143913, + -0.057382568717002869, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382576167583466, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 71864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 121932, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 0.020872212946414948, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72016, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122388, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 124880, + "componentType": 5126, + "count": 38, + "max": [ + 1.2572852980952121e-08, + -9.4994888399924093e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + 4.6566119848989729e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122436, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72336, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 122892, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 125488, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063956449739634991, + 0.6579899787902832, + 0.26252901554107666, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123084, + "componentType": 5126, + "count": 38, + "max": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.1874362826347351e-07 + ], + "min": [ + -1.203734427690506e-07, + 4.0978193283081055e-08, + -1.3783574104309082e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72704, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123540, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 72752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 126096, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 1.1641543284923728e-10, + -7.2875991463661194e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 72904, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 123684, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252902984619141e-09, + 0.069626078009605408, + 2.2351741790771484e-08 + ], + "min": [ + -1.598382368683815e-07, + 0.069625988602638245, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73080, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124212, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73180, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 126704, + "componentType": 5126, + "count": 44, + "max": [ + 0.17804411053657532, + -0.038269970566034317, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124512, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898654699325562, + -0.0083237458020448685, + 0.023024309426546097 + ], + "min": [ + -0.0086900452151894569, + -0.0083239376544952393, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73508, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 124968, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 127408, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73724, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125160, + "componentType": 5126, + "count": 22, + "max": [ + 0.0073303328827023506, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303282260894775, + 0.34354427456855774, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73812, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125424, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 73820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 128016, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 73972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125448, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + -1.4621764421463013e-07, + -1.1175870895385742e-08 + ], + "min": [ + -2.1886080503463745e-08, + -1.7136335372924805e-07, + -1.1041993275284767e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74124, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125904, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 128624, + "componentType": 5126, + "count": 38, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.3061951398849487e-08, + 1 + ], + "min": [ + -4.71482053399086e-09, + 3.119930624961853e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 125952, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + -2.2351741790771484e-08 + ], + "min": [ + -1.0384246706962585e-07, + 0.032196007668972015, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74444, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 126408, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000004768371582, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 129232, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476891040802002, + -0.045752901583909988, + -0.025043418630957603, + 0.99704056978225708 + ], + "min": [ + 0.056476559489965439, + -0.045752905309200287, + -0.025043440982699394, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 126576, + "componentType": 5126, + "count": 38, + "max": [ + -6.9849193096160889e-08, + 1.7927959561347961e-07, + -3.166496753692627e-08 + ], + "min": [ + -8.3819031715393066e-08, + 1.5366822481155396e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74804, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127032, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 74836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 129840, + "componentType": 5126, + "count": 38, + "max": [ + -9.6479206845856424e-09, + -2.3166652596273707e-08, + -1.4173568096964573e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.3527619791584584e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 74988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127128, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 3.7252902984619141e-08 + ], + "min": [ + 5.9371814131736755e-09, + 0.049540437757968903, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75140, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127584, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 130448, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846226453781128, + -0.085242278873920441, + -0.013570735231041908, + 0.98919987678527832 + ], + "min": [ + 0.11846192181110382, + -0.085242293775081635, + -0.013570744544267654, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 75356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 127776, + "componentType": 5126, + "count": 38, + "max": [ + 8.2887709140777588e-08, + 0.024770038202404976, + 7.4505805969238281e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.024770006537437439, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128232, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 131056, + "componentType": 5126, + "count": 38, + "max": [ + -5.8754807241712115e-07, + 9.4032299102764227e-07, + -1.4674151316285133e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 75676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128280, + "componentType": 5126, + "count": 38, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75828, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 128736, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 75924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 131664, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257198959589005, + 0.97361528873443604 + ], + "min": [ + 0.21749080717563629, + -0.069006666541099548, + -0.0030257296748459339, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129024, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -1.5133991837501526e-07, + 2.9802322387695312e-08, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76228, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129480, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 132272, + "componentType": 5126, + "count": 38, + "max": [ + 4.6740737502659613e-08, + -6.7520886659622192e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.6542688047470619e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76412, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 129576, + "componentType": 5126, + "count": 52, + "max": [ + 3.3993273973464966e-08, + 0.068187102675437927, + 1.3463431969285011e-07 + ], + "min": [ + -1.3364478945732117e-07, + 0.06818707287311554, + 2.4214386940002441e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76620, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130200, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 0.9999997615814209, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 76716, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 132880, + "componentType": 5126, + "count": 52, + "max": [ + 0.21750432252883911, + -0.068965867161750793, + -0.0028431480750441551, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575764831155539, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 76924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130488, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326391905546188 + ], + "min": [ + 0.023247208446264267, + 0.34059685468673706, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77076, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 130944, + "componentType": 5126, + "count": 26, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "min": [ + 0.9999995231628418, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 133712, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811855673789978, + -0.13169907033443451, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811857163906097, + -0.13169918954372406, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 77332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131256, + "componentType": 5126, + "count": 38, + "max": [ + -6.4377672970294952e-08, + 2.2351741790771484e-08, + 7.4505805969238281e-08 + ], + "min": [ + -2.0116567611694336e-07, + -3.3120159059762955e-08, + 7.6106516644358635e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77484, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131712, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 134320, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505801528346183e-09, + -9.3132266343332049e-09, + -7.4505805969238281e-09, + 1 + ], + "min": [ + 6.9849184214376692e-09, + -1.862645326866641e-08, + -1.3969838619232178e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 77644, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 131736, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-07, + 0.031801007688045502, + -3.9115548133850098e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800948083400726, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77796, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132192, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 77888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 134928, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024177730083466, + -0.10080224275588989, + -0.057818155735731125, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080226510763168, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132468, + "componentType": 5126, + "count": 38, + "max": [ + 1.6391277313232422e-07, + 2.7706846594810486e-08, + -2.9243528842926025e-07 + ], + "min": [ + 5.3085386753082275e-08, + -2.2351741790771484e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132924, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 135536, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + -3.3178371161568521e-09, + -3.3993273973464966e-08, + 1 + ], + "min": [ + -8.8475644588470459e-09, + -2.0489096641540527e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 132948, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.5832483768463135e-08, + 0.044816639274358749, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78504, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 133404, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 136144, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152609169483185, + -0.052601058036088943, + -0.024043351411819458, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601061761379242, + -0.024043373763561249, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 78748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 133680, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-07, + 0.022408418357372284, + 1.1033262126147747e-07 + ], + "min": [ + -1.5669502317905426e-07, + 0.022408399730920792, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78900, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134136, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 78916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 136752, + "componentType": 5126, + "count": 38, + "max": [ + -6.2002783351999824e-07, + 9.6263806881324854e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.2852556109428406e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79068, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134184, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79220, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134640, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 137360, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130188584327698, + -0.10888328403234482, + 0.021744716912508011, + 0.9531741738319397 + ], + "min": [ + 0.2813015878200531, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79412, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 134760, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + -1.6763806343078613e-08, + 1.6763806343078613e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-08, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79564, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135216, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 137968, + "componentType": 5126, + "count": 38, + "max": [ + 5.9750178138529009e-08, + -4.8428788090859598e-08, + -3.3527616238870905e-08, + 1 + ], + "min": [ + 3.2130639482375045e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 79748, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135312, + "componentType": 5126, + "count": 43, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 2.2351741790771484e-08 + ], + "min": [ + -5.5879354476928711e-08, + 0.069797396659851074, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79920, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 79976, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 138576, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 135996, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954514354467392, + 0.33536890149116516, + -0.0064071603119373322 + ], + "min": [ + 0.034954499453306198, + 0.33536884188652039, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80300, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 136452, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999922513961792, + 0.99999934434890747, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 139264, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214220762252808, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701881587505341, + -0.22579626739025116, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 136860, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 2.0116567611694336e-07 + ], + "min": [ + 2.9802322387695312e-08, + 1.4901161193847656e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80740, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137316, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 80772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 139872, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505814851022478e-09, + 2.0489100194254206e-08, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.6542700481968495e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 80924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137412, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + 5.9604644775390625e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.022592496126890182, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81076, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 137868, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81124, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 140480, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399157166481018, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591923415660858, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138012, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + -1.1175870895385742e-08, + 2.9802322387695312e-08 + ], + "min": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138468, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 141088, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + 4.6566133171666024e-09, + -1.0244549208948683e-08, + 1 + ], + "min": [ + -1.4901161193847656e-08, + -2.0023437130589627e-08, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138516, + "componentType": 5126, + "count": 38, + "max": [ + 1.0803341865539551e-07, + 0.027876397594809532, + 3.9581209421157837e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876261621713638, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81748, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 138972, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 81836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 141696, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988000005483627, + -0.020971952006220818, + 0.99849694967269897 + ], + "min": [ + 0.041517928242683411, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 81988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139236, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.013938168063759804, + -4.8428773880004883e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938087970018387, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139692, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 142304, + "componentType": 5126, + "count": 38, + "max": [ + 5.2968971431255341e-08, + -1.3364477524646645e-07, + 4.5634802603444768e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.4482063193099748e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 82324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 139788, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82476, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140244, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 142912, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057187080383301, + -0.17872533202171326, + 0.015338578261435032, + 0.91919606924057007 + ], + "min": [ + 0.35057181119918823, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 82692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140436, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + -5.9604644775390625e-08, + -8.1956386566162109e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140892, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 82860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 143520, + "componentType": 5126, + "count": 38, + "max": [ + -4.3510230085530566e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "min": [ + -5.9604644775390625e-08, + -3.5390257835388184e-08, + -3.9115551686563776e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 140940, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.074802316725254059, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802309274673462, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83164, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 141396, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 144128, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + -0.17872501909732819, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + -0.17872503399848938, + 0.015338657423853874, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 141636, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579222798347473, + 0.32914415001869202, + 0.0039985515177249908 + ], + "min": [ + 0.044579200446605682, + 0.32914406061172485, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83548, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142092, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 144736, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570001721382141, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749421834945679, + -0.27479112148284912, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 83748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142236, + "componentType": 5126, + "count": 38, + "max": [ + 1.0756775736808777e-07, + 4.4330954551696777e-07, + 1.4994293451309204e-07 + ], + "min": [ + 7.4505805969238281e-09, + 4.246830940246582e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83900, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 83916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 145344, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489093088826849e-08, + 1.1362133278680631e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.1175870184843006e-07, + -1.303851338008144e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 84068, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 142740, + "componentType": 5126, + "count": 56, + "max": [ + 1.862645149230957e-08, + 0.25792211294174194, + 2.0279549062252045e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.25792208313941956, + -6.9849193096160889e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84292, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 143412, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84348, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 145952, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319517910480499, + 0.787913978099823, + 0.084729395806789398, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 84572, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 143580, + "componentType": 5126, + "count": 62, + "max": [ + 1.1920928955078125e-07, + 0.12896108627319336, + -2.8870999813079834e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896065413951874, + -3.6787241697311401e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 84820, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 144324, + "componentType": 5126, + "count": 47, + "max": [ + 0.99999982118606567, + 1.0000044107437134, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85008, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 146848, + "componentType": 5126, + "count": 62, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85256, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 144888, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.1392713338136673, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85408, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145344, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000008344650269, + 1.0000020265579224, + 1.0000020265579224 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85544, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 147840, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531652569770813, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401045978069305, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85696, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145752, + "componentType": 5126, + "count": 20, + "max": [ + 0.044326618313789368, + -0.11071401834487915, + 0.071930147707462311 + ], + "min": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85776, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 145992, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.99999672174453735, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 85840, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 148448, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531584024429321, + -0.090401113033294678, + 0.19322757422924042, + 0.94302952289581299 + ], + "min": [ + -0.25531637668609619, + -0.090401455760002136, + 0.19322720170021057, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 85992, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 146184, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-07, + -3.3527612686157227e-08, + 4.3958425521850586e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86160, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 146688, + "componentType": 5126, + "count": 42, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999690055847168, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86328, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 149056, + "componentType": 5126, + "count": 42, + "max": [ + 3.6647594470196054e-07, + -6.0908479326826637e-07, + 5.8510431699687615e-07, + 1 + ], + "min": [ + -1.7876758420243277e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 86496, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147192, + "componentType": 5126, + "count": 46, + "max": [ + 7.0780515670776367e-08, + 0.27854281663894653, + 2.0815059542655945e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.27854278683662415, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86680, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147744, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 86696, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 149728, + "componentType": 5126, + "count": 46, + "max": [ + 0.25531500577926636, + 0.12245099991559982, + -0.17468461394309998, + 0.97297227382659912 + ], + "min": [ + 0.088408268988132477, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 86880, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 147792, + "componentType": 5126, + "count": 42, + "max": [ + 6.7055225372314453e-08, + 0.13927170634269714, + 3.2037496566772461e-07 + ], + "min": [ + -1.1102230246251565e-16, + 0.13927145302295685, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87048, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148296, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000003576278687, + 0.99999874830245972, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87100, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 150464, + "componentType": 5126, + "count": 42, + "max": [ + -1.5273697329121205e-07, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.116192947847594e-06, + -8.257104127551429e-06, + -1.1362142231519101e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 87268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148452, + "componentType": 5126, + "count": 38, + "max": [ + -0.027315661311149597, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975754089653492 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87420, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 148908, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000005960464478, + 1.0000008344650269 + ], + "min": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87468, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 151136, + "componentType": 5126, + "count": 56, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 87692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149052, + "componentType": 5126, + "count": 38, + "max": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 5.0632388592930511e-07 + ], + "min": [ + -6.4464984461665154e-08, + 1.7578713595867157e-08, + 4.8081545855893637e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149508, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 87860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 152032, + "componentType": 5126, + "count": 38, + "max": [ + -1.6952979020601333e-09, + 8.3324273703055951e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -7.004929081233513e-09, + 8.2272904933233804e-08, + 5.2154064178466797e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88012, + "componentType": 5126, + "count": 35, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149556, + "componentType": 5126, + "count": 35, + "max": [ + 0.023130057379603386, + 0.26697862148284912, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88152, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 149976, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88240, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 152640, + "componentType": 5126, + "count": 37, + "max": [ + -0.69586646556854248, + -0.39777597784996033, + -0.29703006148338318, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150240, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + 3.3527612686157227e-08, + 1.4901161193847656e-08, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150696, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 153232, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-08, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.2456439435482025e-08, + 9.3132257461547852e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 88708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 150744, + "componentType": 5126, + "count": 38, + "max": [ + 7.1013346314430237e-08, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223380446434021, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88860, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151200, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1, + 1.0000004768371582 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 88928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 153840, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234384030103683, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234383285045624, + 0.058250226080417633, + 0.038226824253797531, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89080, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151404, + "componentType": 5126, + "count": 38, + "max": [ + 1.6088597476482391e-07, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + -2.2351741790771484e-08, + -4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89232, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151860, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 154448, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7869751900434494e-08, + -1.8102582544088364e-08, + -6.8685039877891541e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 151956, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.045039966702461243, + 4.8894435167312622e-08 + ], + "min": [ + -9.0338289737701416e-08, + 0.045039962977170944, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89568, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152412, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89600, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 155056, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882900834083557, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882878482341766, + 0.038419175893068314, + 9.6838331955950707e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 89752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152508, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "min": [ + -1.6717240214347839e-07, + 0.022520110011100769, + 1.2293457984924316e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89904, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 152964, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 89920, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 155664, + "componentType": 5126, + "count": 38, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0628793606647378e-07, + 1 + ], + "min": [ + 6.3786865212023258e-07, + 9.4692217089686892e-07, + -2.0675361156463623e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90072, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153012, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90224, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153468, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000004768371582, + 1, + 1.0000004768371582 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 156272, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803941667079926, + 0.038298342376947403, + 0.044083788990974426, + 0.98228937387466431 + ], + "min": [ + 0.17803771793842316, + 0.038298297673463821, + 0.044083651155233383, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 153780, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + -7.0780515670776367e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.1175870895385742e-08, + -1.3411045074462891e-07, + 2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154236, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 156880, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252896323280993e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -4.0745353757642988e-09, + -2.8638160287641767e-08, + -7.6950513516749197e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 90800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154284, + "componentType": 5126, + "count": 38, + "max": [ + 8.5681676864624023e-08, + 0.033446446061134338, + -7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.033446401357650757, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 90952, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154740, + "componentType": 5126, + "count": 19, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 157488, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510617807507515, + -0.016420755535364151, + 0.038739204406738281, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.03873918205499649, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 154968, + "componentType": 5126, + "count": 38, + "max": [ + 9.9651515483856201e-08, + -2.9802322387695312e-08, + -8.6612999439239502e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3317912817001343e-07, + -2.3283064365386963e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155424, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 158096, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 2.514570951461792e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -6.7520899982298488e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155472, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.041744641959667206, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91652, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 155928, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 91712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 158704, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518230736255646, + -0.0088785076513886452, + 0.057382617145776749, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785141706466675, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 91864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156108, + "componentType": 5126, + "count": 38, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872443914413452, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92016, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156564, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 159312, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.0244548320770264e-08, + 1 + ], + "min": [ + -5.7742006731587026e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 156660, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92352, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157116, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92392, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 159920, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157236, + "componentType": 5126, + "count": 38, + "max": [ + 6.4261257648468018e-08, + -2.3283064365386963e-08, + -3.5762786865234375e-07 + ], + "min": [ + -3.166496753692627e-08, + -6.7055225372314453e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92692, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 92708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 160512, + "componentType": 5126, + "count": 38, + "max": [ + 1.6705596905808306e-08, + 1.5599653124809265e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2596290111541748e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 92860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 157740, + "componentType": 5126, + "count": 38, + "max": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "min": [ + -4.1909515857696533e-08, + 0.069626092910766602, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93012, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158196, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 161120, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803849279880524, + 0.038296066224575043, + 0.044083882123231888, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158520, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899055168032646, + -0.0083238556981086731, + 0.023024283349514008 + ], + "min": [ + 0.0086898356676101685, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93424, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 158976, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93476, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 161728, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063958112150430679, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.2625291645526886, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159132, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303841054439545, + 0.34354394674301147, + -0.021197730675339699 + ], + "min": [ + -0.0073304995894432068, + 0.34354394674301147, + -0.02119787409901619 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159588, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 93792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 162320, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725982069969177, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 93944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 159636, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 2.1792948246002197e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94096, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160092, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94112, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 162928, + "componentType": 5126, + "count": 38, + "max": [ + 3.0850066945475874e-09, + 2.5611370801925659e-09, + 1.6181733286657618e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 94264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160140, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 7.0780515670776367e-08 + ], + "min": [ + -1.7858110368251801e-07, + 0.032196007668972015, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94416, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160596, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000005960464478, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94512, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 163536, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043465197086334, + 0.99704056978225708 + ], + "min": [ + 0.056476563215255737, + 0.045752868056297302, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 94664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 160884, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 8.5681676864624023e-08 + ], + "min": [ + -8.6147338151931763e-08, + -8.1956386566162109e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94816, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161340, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 94848, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 164144, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969840839678227e-09, + 4.526009789174168e-08, + -2.9453081751285026e-08, + 1 + ], + "min": [ + -1.5133994057947575e-09, + 3.5390264940815541e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161436, + "componentType": 5126, + "count": 38, + "max": [ + 8.149072527885437e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540486186742783, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95152, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 161892, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 164752, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570722192525864, + 0.98919987678527832 + ], + "min": [ + 0.11846189945936203, + 0.08524225652217865, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95360, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162060, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-08, + 0.024770209565758705, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770196527242661, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95512, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162516, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95528, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 165360, + "componentType": 5126, + "count": 38, + "max": [ + -5.8393925428390503e-07, + -9.3656132094110944e-07, + 1.9185243615993386e-07, + 1 + ], + "min": [ + -5.9235026128590107e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 95680, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 162564, + "componentType": 5126, + "count": 38, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95832, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163020, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 95888, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 165968, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749170124530792, + 0.069006718695163727, + 0.0030257171019911766, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006636738777161, + 0.0030257017351686954, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163188, + "componentType": 5126, + "count": 38, + "max": [ + 7.7299773693084717e-08, + 1.601874828338623e-07, + 5.005858838558197e-08 + ], + "min": [ + 5.4948031902313232e-08, + 4.8428773880004883e-08, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96192, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163644, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 166576, + "componentType": 5126, + "count": 38, + "max": [ + -1.0710210496256423e-08, + 1.4435499906539917e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -1.2470992238888812e-08, + 3.7252898543727042e-09, + -6.4319469750273583e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96360, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 163692, + "componentType": 5126, + "count": 65, + "max": [ + 1.6554258763790131e-07, + 0.068187132477760315, + 2.7939677238464355e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + 1.9717845134437084e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96620, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 164472, + "componentType": 5126, + "count": 13, + "max": [ + 1, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 96672, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 167184, + "componentType": 5126, + "count": 65, + "max": [ + 0.21750125288963318, + 0.069091320037841797, + 0.003196188248693943, + 0.97362369298934937 + ], + "min": [ + 0.2174590677022934, + 0.068967774510383606, + 0.002856898820027709, + 0.973613440990448 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 96932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 164628, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247243836522102, + 0.34059679508209229, + -0.015326134860515594 + ], + "min": [ + -0.023247748613357544, + 0.34059673547744751, + -0.015326384454965591 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97084, + "componentType": 5126, + "count": 25, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165084, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999958276748657, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999922513961792, + 0.99999964237213135, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 168224, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811858654022217, + 0.13169935345649719, + 0.16719585657119751, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169923424720764, + 0.16719573736190796, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 97336, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165384, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-08, + 2.2069434635341167e-07, + 1.3411045074462891e-07 + ], + "min": [ + -1.9371509552001953e-07, + 1.5646219253540039e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97488, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165840, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 168832, + "componentType": 5126, + "count": 38, + "max": [ + -8.8475626824902065e-09, + 2.5145704185547402e-08, + 3.7252894102834944e-09, + 1 + ], + "min": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 97656, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 165888, + "componentType": 5126, + "count": 38, + "max": [ + 6.8685039877891541e-09, + 0.031801000237464905, + 5.7741999626159668e-08 + ], + "min": [ + -2.7939679458910405e-09, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97808, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166344, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 97864, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 169440, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228000879288, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080226510763168, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166512, + "componentType": 5126, + "count": 38, + "max": [ + 2.1420419216156006e-08, + 3.5390257835388184e-08, + 5.029141902923584e-08 + ], + "min": [ + -8.754432201385498e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98168, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 166968, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 170048, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -1.4784747648377561e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -1.0477378964424133e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167064, + "componentType": 5126, + "count": 38, + "max": [ + -2.514570951461792e-08, + 0.044816732406616211, + 6.3329935073852539e-08 + ], + "min": [ + -2.3096799850463867e-07, + 0.04481661319732666, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98504, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167520, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 170656, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151916265487671, + 0.052601084113121033, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151901364326477, + 0.05260106548666954, + 0.024043364450335503, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 98736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 167760, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02240833081305027, + 2.4400651454925537e-07 + ], + "min": [ + -2.360902726650238e-07, + 0.022408241406083107, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168216, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 98904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 171264, + "componentType": 5126, + "count": 38, + "max": [ + -6.493646651506424e-07, + -9.4700953923165798e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168264, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99208, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168720, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 171872, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130200505256653, + 0.10888329893350601, + -0.021744724363088608, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + 0.10888323932886124, + -0.021744729951024055, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99424, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 168912, + "componentType": 5126, + "count": 38, + "max": [ + 7.6368451118469238e-08, + -7.4505805969238281e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -8.1956386566162109e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99576, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 169368, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99592, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 172480, + "componentType": 5126, + "count": 38, + "max": [ + 1.164161822497789e-10, + 3.1199313355045888e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.4028048944680904e-08, + 2.1012969142475413e-08, + -1.8626455045023249e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 99744, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 169416, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.069797366857528687, + 2.0758307073265314e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 99952, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170040, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100008, + "componentType": 5126, + "count": 52, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 173088, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130325675010681, + 0.10890431702136993, + -0.021636079996824265, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.1088700145483017, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100216, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170208, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954965114593506, + 0.33536875247955322, + -0.0064073465764522552 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100368, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170664, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 173920, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214213311672211, + 0.16701884567737579, + 0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + 0.16701869666576385, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100604, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 170916, + "componentType": 5126, + "count": 38, + "max": [ + 3.9115548133850098e-08, + 1.6391277313232422e-07, + 1.5646219253540039e-07 + ], + "min": [ + -6.7055225372314453e-08, + 1.0803341865539551e-07, + 1.4062970876693726e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100756, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 100772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 174528, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566217548615896e-10, + -7.4505814851022478e-09, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + -3.7252907425511239e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 100924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171420, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-08, + 0.022592537105083466, + -1.3504177331924438e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592434659600258, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101076, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 171876, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 175136, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399183243513107, + 0.028591984882950783, + 0.99515920877456665 + ], + "min": [ + 0.082881681621074677, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172104, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 6.3329935073852539e-08, + -6.28642737865448e-08 + ], + "min": [ + -4.4703483581542969e-08, + -2.7939677238464355e-08, + -1.9744038581848145e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101456, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172560, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101472, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 175744, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244550097127103e-08, + 1.1175871783564162e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -1.4901164746561335e-08, + -4.1909529180372829e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 172608, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876298874616623, + 5.4016709327697754e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101776, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173064, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 101828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 176352, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518155485391617, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + 0.028988013043999672, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 101980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173220, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.013938102871179581, + 9.5926225185394287e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.013938065618276596, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102132, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173676, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 176960, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -4.0745366192140864e-08, + 5.8091245591640472e-08, + -4.0046870708465576e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 102292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 173700, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102444, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174156, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 177568, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057204961776733, + 0.17872521281242371, + -0.015338596887886524, + 0.91919606924057007 + ], + "min": [ + 0.35057175159454346, + 0.17872513830661774, + -0.01533864438533783, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 102692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174444, + "componentType": 5126, + "count": 38, + "max": [ + 1.3783574104309082e-07, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + -2.9802322387695312e-08, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102844, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174900, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 102876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 178176, + "componentType": 5126, + "count": 38, + "max": [ + 4.4819907785154101e-09, + -1.7695132470407771e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + -1.187436549088261e-08, + -2.4214388716359281e-08, + -1.862645149230957e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 174996, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802249670028687, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103180, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 175452, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999940395355225, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103260, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 178784, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338590368628502, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872487008571625, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103412, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 175692, + "componentType": 5126, + "count": 38, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579751789569855, + 0.32914397120475769, + 0.00399823859333992 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103564, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176148, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000008344650269 + ], + "min": [ + 0.99999970197677612, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 179392, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + 0.18749427795410156, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570015132427216, + 0.18749421834945679, + 0.27479088306427002, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 103812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176436, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 2.7194619178771973e-07, + 1.7136335372924805e-07 + ], + "min": [ + -2.3189932107925415e-07, + 1.4156103134155273e-07, + 1.0873191058635712e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103964, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176892, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 103996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 180000, + "componentType": 5126, + "count": 38, + "max": [ + 3.5390254282674505e-08, + -1.1175874448099421e-08, + -6.3329935073852539e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 104148, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 176988, + "componentType": 5126, + "count": 56, + "max": [ + -1.0244548320770264e-08, + 0.25792214274406433, + 1.3271346688270569e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 104372, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 177660, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999922513961792, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 104520, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 180608, + "componentType": 5126, + "count": 56, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 104744, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 178104, + "componentType": 5126, + "count": 64, + "max": [ + 1.2479722499847412e-07, + 0.12896072864532471, + 6.7800283432006836e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105000, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 178872, + "componentType": 5126, + "count": 56, + "max": [ + 0.99999940395355225, + 1.0000060796737671, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 1.0000026226043701, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105224, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 181504, + "componentType": 5126, + "count": 64, + "max": [ + 2.9940034096398449e-07, + 0.88032650947570801, + 2.0891943677270319e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 105480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 179544, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.13927134871482849, + -1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105632, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180000, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999773502349854, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 105704, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 182528, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401254594326019, + 0.19322672486305237, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 105856, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180216, + "componentType": 5126, + "count": 38, + "max": [ + -0.044326536357402802, + -0.11071467399597168, + 0.071930289268493652 + ], + "min": [ + -0.044326610863208771, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106008, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180672, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 183136, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531512498855591, + 0.090401232242584229, + -0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + -0.25531548261642456, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 106184, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 180744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + -1.4901161193847656e-08, + 4.9173831939697266e-07 + ], + "min": [ + -3.7252902984619141e-08, + -2.9802322387695312e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106360, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 181272, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999690055847168, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106440, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 183744, + "componentType": 5126, + "count": 44, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631596620121854e-07, + -2.9895460329498746e-07, + -7.9954185139285983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 106616, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 181512, + "componentType": 5126, + "count": 56, + "max": [ + 3.7252902984619141e-08, + 0.27854272723197937, + 6.9383531808853149e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106840, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182184, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 106860, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 184448, + "componentType": 5126, + "count": 56, + "max": [ + 0.25531500577926636, + -0.090401507914066315, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571906089782715, + -0.12242159992456436, + 0.17470520734786987, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107084, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182244, + "componentType": 5126, + "count": 42, + "max": [ + -6.3329935073852539e-08, + 0.13927134871482849, + 4.7869980335235596e-07 + ], + "min": [ + -2.6822090148925781e-07, + 0.1392713338136673, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107252, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 182748, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999910593032837, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107348, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 185344, + "componentType": 5126, + "count": 42, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0628018571878783e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107516, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183036, + "componentType": 5126, + "count": 56, + "max": [ + 0.027315612882375717, + 0.33446061611175537, + 0.019757704809308052 + ], + "min": [ + 0.027315452694892883, + 0.33446058630943298, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107740, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183708, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 107772, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 186016, + "componentType": 5126, + "count": 56, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 107996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 183804, + "componentType": 5126, + "count": 38, + "max": [ + 6.3060724642127752e-08, + 8.3819031715393066e-09, + 2.997039700858295e-07 + ], + "min": [ + 1.6763806343078613e-08, + -7.4505805969238281e-09, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108148, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184260, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 186912, + "componentType": 5126, + "count": 38, + "max": [ + -3.8926355472312935e-09, + -3.2074240152724087e-08, + 6.7055211161459738e-08, + 1 + ], + "min": [ + -6.9740049291056039e-09, + -5.3645635489374399e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 108332, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184356, + "componentType": 5126, + "count": 21, + "max": [ + -0.023130089044570923, + 0.26697880029678345, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108416, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184608, + "componentType": 5126, + "count": 20, + "max": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108496, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 187520, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703021049499512, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 108648, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 184848, + "componentType": 5126, + "count": 65, + "max": [ + 1.0658141036401503e-14, + 0.30786654353141785, + -1.4651480739757972e-07 + ], + "min": [ + -9.3344709739540122e-09, + 0.30786627531051636, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108908, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 185628, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 108980, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 188128, + "componentType": 5126, + "count": 65, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 109240, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 185844, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 109500, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 186624, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 109584, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 189168, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 109844, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 186876, + "componentType": 5126, + "count": 65, + "max": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "min": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -4.6857167035341263e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110104, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 187656, + "componentType": 5126, + "count": 21, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110188, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 190208, + "componentType": 5126, + "count": 65, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 110448, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 187908, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110708, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 188688, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 110784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 191248, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 188916, + "componentType": 5126, + "count": 38, + "max": [ + -2.3865140974521637e-09, + -1.3605159665530664e-08, + -2.8113703365306719e-08 + ], + "min": [ + -2.0985442716892067e-08, + -3.5390257835388184e-08, + -3.0733644962310791e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 189372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 192288, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.885928213596344e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.5691402782967998e-08, + 1.8663602219248787e-08, + 8.7311442797943783e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111364, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 189420, + "componentType": 5126, + "count": 56, + "max": [ + 7.6397549397810849e-10, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.8160790205001831e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111588, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190092, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 111636, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 192896, + "componentType": 5126, + "count": 56, + "max": [ + 0.0025766722392290831, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896294593811035, + -0.37012138962745667, + -0.0056022708304226398 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 111860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190236, + "componentType": 5126, + "count": 38, + "max": [ + -5.50062395632267e-09, + 2.1420419216156006e-08, + -2.6542693376541138e-08 + ], + "min": [ + -5.8207660913467407e-09, + -6.5192580223083496e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112012, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190692, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 193792, + "componentType": 5126, + "count": 38, + "max": [ + -5.2322903343338112e-08, + 7.1711816929109773e-08, + 1.5425025701176764e-09, + 1 + ], + "min": [ + -5.8847923867233476e-08, + 7.1333474238599592e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 190740, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.47875440120697021, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875437140464783, + -9.406358003616333e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112332, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191196, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 194400, + "componentType": 5126, + "count": 38, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115009218454361, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191244, + "componentType": 5126, + "count": 38, + "max": [ + 1.2526288628578186e-07, + 0.23937708139419556, + 4.5634806156158447e-08 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937705159187317, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112652, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191700, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 195008, + "componentType": 5126, + "count": 38, + "max": [ + 1.6479643250022491e-07, + 0.039239592850208282, + 3.1983549320102611e-07, + 0.99922984838485718 + ], + "min": [ + 1.1330482152516197e-07, + 0.039239473640918732, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 112828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 191772, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278387308120728, + 3.5390257835388184e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.21278376877307892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112980, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192228, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 112996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 195616, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + 0.18448330461978912, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897864580154419, + 0.18448325991630554, + 0.78801393508911133, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113148, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192276, + "componentType": 5126, + "count": 32, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323383241891861 + ], + "min": [ + -0.15143668651580811, + 0.084600687026977539, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113276, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192660, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 196224, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + -0.18448324501514435, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.27897855639457703, + -0.1844833642244339, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113444, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 192708, + "componentType": 5126, + "count": 40, + "max": [ + 1.4156103134155273e-07, + -8.9406967163085938e-08, + 8.2072801887989044e-09 + ], + "min": [ + 2.2584572434425354e-08, + -1.4156103134155273e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113604, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193188, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 113636, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 196832, + "componentType": 5126, + "count": 40, + "max": [ + 2.5826739147305489e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.210719435817964e-08, + -2.0448352699986572e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 113796, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193284, + "componentType": 5126, + "count": 56, + "max": [ + 4.0978193283081055e-08, + 0.42556756734848022, + 6.1467289924621582e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.42556756734848022, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114020, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 193956, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114052, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 197472, + "componentType": 5126, + "count": 56, + "max": [ + -0.20713318884372711, + 0.28850477933883667, + 0.78801411390304565, + 0.54963225126266479 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 114276, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194052, + "componentType": 5126, + "count": 45, + "max": [ + 7.0780515670776367e-08, + 0.21278397738933563, + 1.862645149230957e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.21278393268585205, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114456, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194592, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114564, + "componentType": 5126, + "count": 45, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 198368, + "componentType": 5126, + "count": 45, + "max": [ + -2.2351743567128324e-08, + 1.0408691650809487e-06, + -1.415610881849716e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 114744, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194916, + "componentType": 5126, + "count": 5, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957687139511108, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114764, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 194976, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 114800, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 199088, + "componentType": 5126, + "count": 55, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53590929508209229, + 0.75361925363540649, + -0.15842762589454651, + -0.34606358408927917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195084, + "componentType": 5126, + "count": 38, + "max": [ + -1.2259971526873414e-07, + -3.3978210467466852e-08, + -4.0508190579657821e-08 + ], + "min": [ + -1.2464650467336469e-07, + -7.3088671115328907e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115172, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195540, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 199968, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038521373687217e-08, + -9.4372563097522288e-09, + -3.5529088004970788e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372634151795864e-09, + -3.5531616537909372e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115332, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 195564, + "componentType": 5126, + "count": 56, + "max": [ + 1.8873834051191807e-08, + 0.31343457102775574, + -1.2994860298931599e-08 + ], + "min": [ + 1.6647391021251678e-08, + 0.31343454122543335, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115556, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196236, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115604, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 200576, + "componentType": 5126, + "count": 56, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210078943520784, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195724790915847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 115828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196380, + "componentType": 5126, + "count": 38, + "max": [ + 1.0256189852952957e-07, + 1.1175870895385742e-07, + 3.2043317332863808e-08 + ], + "min": [ + 8.1534381024539471e-08, + 1.0547228157520294e-07, + -1.8699211068451405e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115980, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196836, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 115996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 201472, + "componentType": 5126, + "count": 38, + "max": [ + -1.8806686763461755e-10, + -6.7208020482212305e-08, + -2.9103830456733704e-09, + 1 + ], + "min": [ + -7.6639707913273014e-09, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 116148, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 196884, + "componentType": 5126, + "count": 56, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + -1.0011717677116394e-08, + 0.47875422239303589, + -6.8859662860631943e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116372, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 197556, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116420, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 202080, + "componentType": 5126, + "count": 56, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 116644, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 197700, + "componentType": 5126, + "count": 56, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 1.9234721548855305e-07 + ], + "min": [ + 3.4924596548080444e-09, + 0.23937715590000153, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116868, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 198372, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 116964, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 202976, + "componentType": 5126, + "count": 56, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -4.9444201977166813e-07, + -0.039239216595888138, + 1.7011343800277245e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 198660, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.21278372406959534, + 4.4703483581542969e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117340, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199116, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 203872, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448299169540405, + -0.78801417350769043, + 0.51688551902770996 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801423311233521, + 0.51688545942306519 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117508, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199164, + "componentType": 5126, + "count": 27, + "max": [ + 0.15143662691116333, + 0.084600932896137238, + -0.12323376536369324 + ], + "min": [ + 0.15143661201000214, + 0.084600836038589478, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117616, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199488, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 204480, + "componentType": 5126, + "count": 38, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.2789786159992218, + 0.18448303639888763, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 117800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 199584, + "componentType": 5126, + "count": 38, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 4.2899046093225479e-08 + ], + "min": [ + 3.4226104617118835e-08, + -6.5192580223083496e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 117952, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200040, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 205088, + "componentType": 5126, + "count": 38, + "max": [ + 2.4866312742233276e-07, + 1.0515211101846944e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.3559543649298575e-07, + 9.3830728076227388e-08, + 7.6863202025378996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200232, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556744813919067, + 4.4703483581542969e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118320, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200688, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118336, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 205696, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688563823699951 + ], + "min": [ + -0.2789786159992218, + -0.18448293209075928, + -0.78801417350769043, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118488, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 200736, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 0.21278370916843414, + 3.166496753692627e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.2127835750579834, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118640, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201192, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 206304, + "componentType": 5126, + "count": 38, + "max": [ + 2.3003666171916848e-07, + 5.58793855631734e-09, + -7.450577932388569e-09, + 1 + ], + "min": [ + 1.0640362546610049e-07, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 118888, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201480, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118920, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201576, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 118960, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 206912, + "componentType": 5126, + "count": 55, + "max": [ + -0.53533452749252319, + 0.76489174365997314, + -0.089343994855880737, + 0.34695103764533997 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 119180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 201696, + "componentType": 5126, + "count": 65, + "max": [ + -3.5527136788005009e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -4.4408920985006262e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119440, + "componentType": 5126, + "count": 19, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 202476, + "componentType": 5126, + "count": 19, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119516, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 207792, + "componentType": 5126, + "count": 65, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 119776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 202704, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119928, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 203160, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 119984, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 208832, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 120016, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 203328, + "componentType": 5126, + "count": 56, + "max": [ + 4.1058228816837072e-08, + 1.4901161193847656e-08, + 3.457535058259964e-07 + ], + "min": [ + -7.4505805969238281e-08, + -6.5600033849477768e-08, + 6.6924258135259151e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120240, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 204000, + "componentType": 5126, + "count": 47, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999845027923584, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120428, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 208960, + "componentType": 5126, + "count": 56, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 120652, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 204564, + "componentType": 5126, + "count": 65, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120912, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 205344, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 120928, + "componentType": 5126, + "count": 53, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 209856, + "componentType": 5126, + "count": 53, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229209542274475, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 121140, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 205392, + "componentType": 5126, + "count": 56, + "max": [ + 2.384185791015625e-07, + 5.9604644775390625e-08, + 1.544831320643425e-07 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121364, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 206064, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121428, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 210704, + "componentType": 5126, + "count": 56, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 121652, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 206256, + "componentType": 5126, + "count": 65, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121912, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207036, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 121932, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 211600, + "componentType": 5126, + "count": 56, + "max": [ + 0.26693448424339294, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601040601730347 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207096, + "componentType": 5126, + "count": 38, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749563932418823 + ], + "min": [ + -2.8421709430404007e-14, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122308, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207552, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 212496, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261105786801636e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261102234087957e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122396, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 207720, + "componentType": 5126, + "count": 59, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122632, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 208428, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 122696, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 212624, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482410460710526, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294223144650459, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 122932, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 208620, + "componentType": 5126, + "count": 55, + "max": [ + 6.7055225372314453e-08, + 0.40159717202186584, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159711241722107, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123152, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 209280, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123176, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 213568, + "componentType": 5126, + "count": 55, + "max": [ + 0.10101210325956345, + 0.79780721664428711, + -0.48497864603996277, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 123396, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 209352, + "componentType": 5126, + "count": 59, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123632, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210060, + "componentType": 5126, + "count": 15, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 123692, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 214448, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007465839385986, + 0.39800706505775452, + 0.12996619939804077, + 0.71552282571792603 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 123928, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210240, + "componentType": 5126, + "count": 42, + "max": [ + -8.1956386566162109e-08, + 0.57860535383224487, + 8.9406967163085938e-08 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860517501831055, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124096, + "componentType": 5126, + "count": 21, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210744, + "componentType": 5126, + "count": 21, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124180, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 215392, + "componentType": 5126, + "count": 42, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516590654850006, + -0.3081190288066864 + ], + "min": [ + 0.92842525243759155, + -0.11126617342233658, + -0.17523984611034393, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 124348, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 210996, + "componentType": 5126, + "count": 59, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124584, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 211704, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 124648, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 216064, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 124884, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 211896, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799066424369812, + -8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125036, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 212352, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125084, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 217008, + "componentType": 5126, + "count": 37, + "max": [ + 0.81515997648239136, + -0.2049533873796463, + -0.34477153420448303, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790059208869934 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 125232, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 212496, + "componentType": 5126, + "count": 60, + "max": [ + 4.0978193283081055e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -3.5390257835388184e-08, + 0.25762265920639038, + 3.5390257835388184e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125472, + "componentType": 5126, + "count": 23, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 213216, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 125564, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 217600, + "componentType": 5126, + "count": 60, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026337862014771, + -0.19707523286342621, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 125804, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 213492, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126060, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 214260, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126108, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 218560, + "componentType": 5126, + "count": 64, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076332747936249, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 126364, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 214404, + "componentType": 5126, + "count": 59, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126600, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215112, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 126616, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 219584, + "componentType": 5126, + "count": 59, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 126852, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215160, + "componentType": 5126, + "count": 55, + "max": [ + -4.4408920985006262e-16, + 0.40159735083580017, + 8.9406967163085938e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.40159717202186584, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127072, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215820, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127108, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 220528, + "componentType": 5126, + "count": 55, + "max": [ + -0.098626755177974701, + 0.79780721664428711, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101212561130524, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 127328, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 215928, + "componentType": 5126, + "count": 59, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127564, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 216636, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127572, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 221408, + "componentType": 5126, + "count": 59, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35181999206542969, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 127808, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 216660, + "componentType": 5126, + "count": 41, + "max": [ + -3.7252902984619141e-08, + 0.57860565185546875, + -1.6653345369377348e-16 + ], + "min": [ + -4.0978193283081055e-08, + 0.5786055326461792, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 127972, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217152, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128004, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 222352, + "componentType": 5126, + "count": 41, + "max": [ + 0.92845195531845093, + 0.11125475168228149, + 0.17524003982543945, + -0.30811873078346252 + ], + "min": [ + 0.92842668294906616, + 0.11104374378919601, + 0.17517001926898956, + -0.30815866589546204 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 128168, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217248, + "componentType": 5126, + "count": 59, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128404, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 217956, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128424, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 223008, + "componentType": 5126, + "count": 59, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 128660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218016, + "componentType": 5126, + "count": 38, + "max": [ + -2.6077032089233398e-08, + 0.40799111127853394, + 1.1920928955078125e-07 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799093246459961, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128812, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218472, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 128860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 223952, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477174282073975, + -0.41790032386779785 + ], + "min": [ + 0.81515991687774658, + 0.20495337247848511, + 0.34477171301841736, + -0.41790050268173218 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 129012, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 218616, + "componentType": 5126, + "count": 59, + "max": [ + 2.9802322387695312e-08, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + 7.4505805969238281e-09, + 0.25762245059013367, + 5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129248, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 219324, + "componentType": 5126, + "count": 24, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129344, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 224560, + "componentType": 5126, + "count": 59, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 129580, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 219612, + "componentType": 5126, + "count": 64, + "max": [ + 1.862645149230957e-09, + 0.7767413854598999, + 4.2637111619114876e-08 + ], + "min": [ + -7.1054273576010019e-15, + 0.77674132585525513, + 2.0489082430685812e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129836, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 220380, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 129924, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 225504, + "componentType": 5126, + "count": 64, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 130180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 220644, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 6.7055225372314453e-08, + 5.9604644775390625e-08 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130440, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 221424, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130456, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 226528, + "componentType": 5126, + "count": 65, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 130716, + "componentType": 5126, + "count": 56, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 221472, + "componentType": 5126, + "count": 56, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -1.1379786002407855e-14, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130940, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 222144, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 130996, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 227568, + "componentType": 5126, + "count": 46, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 131180, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 222312, + "componentType": 5126, + "count": 65, + "max": [ + -3.4638958368304884e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -2.2351734685344127e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 131440, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 223092, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 131488, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 228304, + "componentType": 5126, + "count": 65, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698620909401143e-08, + -2.1549524831243616e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 131748, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 223236, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.36641579866409302, + 6.3282712403633923e-15 + ], + "min": [ + -6.2172489379008766e-15, + 0.36641570925712585, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132008, + "componentType": 5126, + "count": 17, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 224016, + "componentType": 5126, + "count": 17, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132076, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 229344, + "componentType": 5126, + "count": 65, + "max": [ + 0.36187875270843506, + 1.7365229254551195e-08, + 8.7073068755216809e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132336, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 224220, + "componentType": 5126, + "count": 65, + "max": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "min": [ + -4.253541963095131e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132596, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225000, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 230384, + "componentType": 5126, + "count": 65, + "max": [ + 0.096756108105182648, + 1.6857502060929619e-08, + 9.8583271324059751e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -6.90242885070802e-09, + 9.7077325733607722e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132920, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225192, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132928, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225216, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 132936, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 231424, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -5.0425338561660015e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 132944, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225240, + "componentType": 5126, + "count": 55, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 3.5179624546799459e-08 + ], + "min": [ + -7.9711917067015747e-08, + -5.0918995242454912e-08, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133164, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 225900, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000011920928955, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000007152557373, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133212, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 231456, + "componentType": 5126, + "count": 55, + "max": [ + 0.56482315063476562, + 0.78602421283721924, + -0.12704811990261078, + -0.29326313734054565 + ], + "min": [ + 0.52877569198608398, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133432, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226044, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133440, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226068, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133448, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 232336, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133464, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226092, + "componentType": 5126, + "count": 55, + "max": [ + 1.5542553910563583e-09, + -8.6856246639399615e-09, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810762978595449e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133684, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226752, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133764, + "componentType": 5126, + "count": 55, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 232400, + "componentType": 5126, + "count": 55, + "max": [ + -0.52772623300552368, + 0.78695201873779297, + -0.12602680921554565, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307946562767029 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 133984, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 226992, + "componentType": 5126, + "count": 2, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 133992, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227016, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134000, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233280, + "componentType": 5126, + "count": 4, + "max": [ + 0.64831173419952393, + -9.7136407362086175e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834154454036252e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134016, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227040, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134184, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227544, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233344, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134200, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227568, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134208, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227592, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134216, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233376, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134224, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227616, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134232, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227640, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134240, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233408, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134248, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 227664, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 6.9776433520019054e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134552, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 228576, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 134640, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 233440, + "componentType": 5126, + "count": 76, + "max": [ + 0.0089847194030880928, + 0.034154176712036133, + 0.063492096960544586, + 0.99994874000549316 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 134944, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 228840, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135248, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 229752, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135296, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 234656, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 135600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 229896, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + -1.2293457984924316e-07, + 1.4156103134155273e-07, + 9.3132257461547852e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135776, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 230424, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 135824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 235872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 2.0023431801519109e-08, + 1 + ], + "min": [ + 1.0710211384434842e-08, + -1.3969839729455202e-09, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 230568, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 0.028223443776369095, + 3.3527612686157227e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136176, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231096, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 236576, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234387755393982, + -0.05825023353099823, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.03822682797908783, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231312, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 5.5879354476928711e-08, + -1.0058283805847168e-07 + ], + "min": [ + 1.6763806343078613e-08, + -5.5879354476928711e-09, + -1.2898817658424377e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136600, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231840, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 237280, + "componentType": 5126, + "count": 44, + "max": [ + -1.7811542463164187e-08, + -6.1467275713766867e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477377188067294e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 136792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 231888, + "componentType": 5126, + "count": 44, + "max": [ + 2.0489096641540527e-08, + 0.04503997415304184, + 1.4901161193847656e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -3.8184225559234619e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 136968, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 232416, + "componentType": 5126, + "count": 32, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.9999995231628418, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137096, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 237984, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882885932922363, + -0.038419146090745926, + -9.681028313934803e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419157266616821, + -9.6831150585785508e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 137272, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 232800, + "componentType": 5126, + "count": 44, + "max": [ + -3.5390257835388184e-08, + 0.022519789636135101, + 1.2293457984924316e-07 + ], + "min": [ + -1.8253922462463379e-07, + 0.022519733756780624, + 8.2887709140777588e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137448, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233328, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137464, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 238688, + "componentType": 5126, + "count": 44, + "max": [ + 5.2095867886237102e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.1781546517304378e-07, + -9.3621224550588522e-07, + 2.3120085757000197e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 137640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233376, + "componentType": 5126, + "count": 44, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137816, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 233904, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 137900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 239392, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + -0.038298282772302628, + -0.044083669781684875, + 0.98228913545608521 + ], + "min": [ + 0.17803920805454254, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234156, + "componentType": 5126, + "count": 44, + "max": [ + -8.1956386566162109e-08, + -1.2293457984924316e-07, + 1.0849907994270325e-07 + ], + "min": [ + -1.601874828338623e-07, + -1.3411045074462891e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138252, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234684, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 240096, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252900764173091e-09, + 2.2351741790771484e-08, + 5.4482374167719172e-08, + 1 + ], + "min": [ + -3.6082248300317588e-15, + 1.862645326866641e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 234732, + "componentType": 5126, + "count": 44, + "max": [ + -7.1711838245391846e-08, + 0.033446535468101501, + 1.2665987014770508e-07 + ], + "min": [ + -1.0430812835693359e-07, + 0.033446431159973145, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138620, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 235260, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 138720, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 240800, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151016891002655, + 0.016420740634202957, + -0.038739249110221863, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 138896, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 235560, + "componentType": 5126, + "count": 44, + "max": [ + -1.1315569281578064e-07, + 1.0523945093154907e-07, + 7.7299773693084717e-08 + ], + "min": [ + -1.3411045074462891e-07, + 1.4901161193847656e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139072, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236088, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 241504, + "componentType": 5126, + "count": 44, + "max": [ + -1.3969834178340079e-09, + -2.607702676016288e-08, + 5.2328687161207199e-08, + 1 + ], + "min": [ + -3.7252885221050747e-09, + -3.0733637856883433e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 139280, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236184, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -6.9383531808853149e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744612157344818, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139456, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139488, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 242208, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518191993236542, + 0.0088785151019692421, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382568717002869, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 139664, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 236808, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + 0.020872168242931366, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139840, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237336, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 139872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 242912, + "componentType": 5126, + "count": 44, + "max": [ + 4.6566119848989729e-09, + -9.6857540654582408e-08, + -1.4482064614185219e-07, + 1 + ], + "min": [ + 4.1909515857696533e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140048, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237432, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140224, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 237960, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140256, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 243616, + "componentType": 5126, + "count": 43, + "max": [ + 0.0063957390375435352, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063955946825444698, + 0.6579899787902832, + 0.2625289261341095, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140428, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238056, + "componentType": 5126, + "count": 44, + "max": [ + 3.6321580410003662e-08, + 1.2293457984924316e-07, + -1.1874362826347351e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140604, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238584, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 140636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 244304, + "componentType": 5126, + "count": 44, + "max": [ + 1.5832481992106295e-08, + -4.0745362639427185e-10, + -7.2177506638126943e-08, + 1 + ], + "min": [ + 2.4447204260980016e-09, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 140812, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 238680, + "componentType": 5126, + "count": 50, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141012, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 239280, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141112, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 245008, + "componentType": 5126, + "count": 50, + "max": [ + 0.17804408073425293, + -0.038269974291324615, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803846299648285, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 141312, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 239580, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141488, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240108, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 245808, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958177343010902, + 0.65798979997634888, + 0.2625291645526886, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 141696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240204, + "componentType": 5126, + "count": 44, + "max": [ + 0.0073303692042827606, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303328827023506, + 0.34354424476623535, + -0.02119797095656395 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141872, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240732, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 141888, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 246512, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320602178573608, + -0.11237325519323349, + -0.12725991010665894, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 240780, + "componentType": 5126, + "count": 44, + "max": [ + 2.3469328880310059e-07, + -1.4621764421463013e-07, + -1.1041993275284767e-07 + ], + "min": [ + -2.1886080503463745e-08, + -2.0954757928848267e-07, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142240, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241308, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 247216, + "componentType": 5126, + "count": 44, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.189779462786646e-08, + 1 + ], + "min": [ + -4.5401971071612479e-09, + 2.2584572434425354e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241332, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + 1.0989606380462646e-07 + ], + "min": [ + -1.5227124094963074e-07, + 0.032196022570133209, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142600, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 241860, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 142680, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 247920, + "componentType": 5126, + "count": 44, + "max": [ + 0.0564768947660923, + -0.045752894133329391, + -0.025043413043022156, + 0.99704056978225708 + ], + "min": [ + 0.056476891040802002, + -0.045752905309200287, + -0.025043418630957603, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 142856, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242100, + "componentType": 5126, + "count": 44, + "max": [ + -6.9849193096160889e-08, + 1.939479261636734e-07, + 5.9604644775390625e-08 + ], + "min": [ + -1.5832483768463135e-07, + 1.7927959561347961e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143032, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242628, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 248624, + "componentType": 5126, + "count": 44, + "max": [ + -1.0724762411484789e-08, + -3.3527619791584584e-08, + -1.3737011528291987e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.8256988688090132e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 143240, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 242724, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 1.1920928955078125e-07 + ], + "min": [ + -1.9255094230175018e-07, + 0.049540434032678604, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143416, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 243252, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 249328, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846227198839188, + -0.085242286324501038, + -0.013570735231041908, + 0.98919981718063354 + ], + "min": [ + 0.11846226453781128, + -0.085242293775081635, + -0.013570768758654594, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 143696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 243564, + "componentType": 5126, + "count": 44, + "max": [ + -1.0943040251731873e-08, + 0.024770038202404976, + 1.1175870895385742e-07 + ], + "min": [ + -4.0978193283081055e-08, + 0.024769995361566544, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143872, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244092, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 143888, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 250032, + "componentType": 5126, + "count": 44, + "max": [ + -5.8347353615317843e-07, + 9.4409921302940347e-07, + -1.466250978410244e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144064, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244140, + "componentType": 5126, + "count": 44, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144240, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 244668, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144356, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 250736, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749170124530792, + -0.069006532430648804, + -0.0030257198959589005, + 0.97361516952514648 + ], + "min": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257310718297958, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144532, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245016, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -5.9138983488082886e-08, + -3.7252902984619141e-08, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144708, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245544, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 144724, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 251440, + "componentType": 5126, + "count": 44, + "max": [ + 5.8920690548802668e-08, + -6.2864269345652701e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.7008351111135198e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 144900, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 245592, + "componentType": 5126, + "count": 58, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145132, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 246288, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145248, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 252144, + "componentType": 5126, + "count": 58, + "max": [ + 0.21750433743000031, + -0.06896587461233139, + -0.0028431459795683622, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.003057574387639761, + 0.97361499071121216 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 145480, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 246636, + "componentType": 5126, + "count": 44, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326384454965591 + ], + "min": [ + 0.023247197270393372, + 0.34059673547744751, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145656, + "componentType": 5126, + "count": 34, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 247164, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 145792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 253072, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811857163906097, + -0.13169915974140167, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811858654022217, + -0.13169918954372406, + -0.16719600558280945, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 145968, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 247572, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 3.7252902984619141e-08, + 7.6106516644358635e-09 + ], + "min": [ + -6.4377672970294952e-08, + -3.3120159059762955e-08, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146144, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248100, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146160, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 253776, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505801528346183e-09, + -1.1175870895385742e-08, + -1.3969838619232178e-08, + 1 + ], + "min": [ + 2.7939679458910405e-09, + -1.862645326866641e-08, + -1.909211277961731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 146336, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248148, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-07, + 0.031801007688045502, + 9.4994902610778809e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800933182239532, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146512, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248676, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000004768371582, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 254480, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024204552173615, + -0.10080225765705109, + -0.057818159461021423, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080230236053467, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 146784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 248964, + "componentType": 5126, + "count": 44, + "max": [ + 1.2852251529693604e-07, + 2.7706846594810486e-08, + -1.8253922462463379e-07 + ], + "min": [ + 5.3085386753082275e-08, + -3.7252902984619141e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146960, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 249492, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 146976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 255184, + "componentType": 5126, + "count": 44, + "max": [ + -8.6147338151931763e-09, + -2.0489096641540527e-08, + -3.166496753692627e-08, + 1 + ], + "min": [ + -8.6147338151931763e-09, + -2.6426281607427882e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 249540, + "componentType": 5126, + "count": 44, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.3969838619232178e-09, + 0.04481661319732666, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147328, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250068, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 255888, + "componentType": 5126, + "count": 44, + "max": [ + 0.073152825236320496, + -0.052601058036088943, + -0.024043358862400055, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601080387830734, + -0.024043375626206398, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147596, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250344, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-07, + 0.022408399730920792, + 1.1033262126147747e-07 + ], + "min": [ + -1.4994293451309204e-07, + 0.022408396005630493, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147772, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250872, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 147788, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 256592, + "componentType": 5126, + "count": 44, + "max": [ + -6.1932928474561777e-07, + 9.4789692184349406e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 147964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 250920, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148140, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 251448, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148156, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 257296, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130188584327698, + -0.10888320952653885, + 0.021744720637798309, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 148332, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 251496, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -1.6763806343078613e-08, + 1.7508864402770996e-07 + ], + "min": [ + -1.1175870895385742e-08, + -1.1920928955078125e-07, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148508, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252024, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148540, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 258000, + "componentType": 5126, + "count": 44, + "max": [ + 5.9750178138529009e-08, + -4.6100481654320902e-08, + -2.2351745343485163e-08, + 1 + ], + "min": [ + 2.5378547263699147e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 148716, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252120, + "componentType": 5126, + "count": 52, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148924, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252744, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 148956, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 258704, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 149164, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 252840, + "componentType": 5126, + "count": 44, + "max": [ + 0.034954506903886795, + 0.33536890149116516, + -0.0064071454107761383 + ], + "min": [ + 0.034954499453306198, + 0.33536878228187561, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149340, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 253368, + "componentType": 5126, + "count": 38, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999910593032837, + 0.99999922513961792, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149492, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 259536, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214219272136688, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701875627040863, + -0.22579611837863922, + 0.94418638944625854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 149668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 253824, + "componentType": 5126, + "count": 44, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 1.3411045074462891e-07 + ], + "min": [ + -2.9802322387695312e-08, + 1.2293457984924316e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149844, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254352, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 149868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 260240, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626458597736928e-08, + -1.862645371275562e-09, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.3132279666008344e-10, + -5.5879363358712908e-09, + 2.8871006918507192e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254424, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + -3.7252902984619141e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592421621084213, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150220, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 254952, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 260944, + "componentType": 5126, + "count": 44, + "max": [ + 0.082881756126880646, + -0.044399119913578033, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591940179467201, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255096, + "componentType": 5126, + "count": 44, + "max": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "min": [ + -5.2154064178466797e-08, + -8.5681676864624023e-08, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150620, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255624, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 261648, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 4.6566133171666024e-09, + -9.7788879216409441e-09, + 1 + ], + "min": [ + -1.5832485544819974e-08, + -6.5192589104867693e-09, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 150812, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 255672, + "componentType": 5126, + "count": 44, + "max": [ + 1.0058283805847168e-07, + 0.027876397594809532, + 9.6857547760009766e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876339852809906, + 3.9581209421157837e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 150988, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256200, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 262352, + "componentType": 5126, + "count": 44, + "max": [ + 0.04151814803481102, + -0.028988013043999672, + -0.020971916615962982, + 0.99849694967269897 + ], + "min": [ + 0.041517924517393112, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 151252, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256464, + "componentType": 5126, + "count": 44, + "max": [ + -5.2154064178466797e-08, + 0.013938168063759804, + 9.3132257461547852e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938132673501968, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151428, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 256992, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151460, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 263056, + "componentType": 5126, + "count": 44, + "max": [ + 5.2968971431255341e-08, + -1.3015230138080369e-07, + 4.563479905073109e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.3364477524646645e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 151636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257088, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151812, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257616, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 151896, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 263760, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057201981544495, + -0.17872512340545654, + 0.015338565222918987, + 0.91919600963592529 + ], + "min": [ + 0.35057187080383301, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152072, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 257868, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + -2.9802322387695312e-08, + -9.6857547760009766e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152248, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258396, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152264, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 264464, + "componentType": 5126, + "count": 44, + "max": [ + -4.3510230085530566e-08, + -2.0489096641540527e-08, + -2.7939679014821195e-08, + 1 + ], + "min": [ + -5.6112192226009938e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152440, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258444, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152616, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 258972, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152688, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 265168, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057204961776733, + -0.1787249892950058, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057193040847778, + -0.17872503399848938, + 0.015338667668402195, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 152864, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259188, + "componentType": 5126, + "count": 24, + "max": [ + 0.044579226523637772, + 0.32914415001869202, + 0.0039985440671443939 + ], + "min": [ + 0.044579222798347473, + 0.32914400100708008, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 152960, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259476, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000004768371582 + ], + "min": [ + 0.9999995231628418, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 265872, + "componentType": 5126, + "count": 44, + "max": [ + -0.13569998741149902, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749423325061798, + -0.27479103207588196, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 153228, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 259752, + "componentType": 5126, + "count": 44, + "max": [ + 2.150190994143486e-07, + 4.246830940246582e-07, + 1.0477378964424133e-07 + ], + "min": [ + 7.4505805969238281e-09, + 3.8929283618927002e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153404, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 260280, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153436, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 266576, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626447939595892e-08, + 1.1175870184843006e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 8.7544307803000265e-08, + -1.6763802790364934e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 153612, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 260376, + "componentType": 5126, + "count": 62, + "max": [ + 6.5338099375367165e-08, + 0.25792214274406433, + -6.9849193096160889e-09 + ], + "min": [ + 1.862645149230957e-08, + 0.25792211294174194, + -2.0023435354232788e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153860, + "componentType": 5126, + "count": 27, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 261120, + "componentType": 5126, + "count": 27, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 153968, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 267280, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319510459899902, + 0.787913978099823, + 0.08472936600446701, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 154216, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 261444, + "componentType": 5126, + "count": 71, + "max": [ + 2.2910535335540771e-07, + 0.12896108627319336, + -3.6787241697311401e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896072864532471, + -2.3003667593002319e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 154500, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 262296, + "componentType": 5126, + "count": 38, + "max": [ + 0.99999982118606567, + 1.0000035762786865, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 154652, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 268272, + "componentType": 5126, + "count": 71, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 154936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 262752, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.13927146792411804, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155112, + "componentType": 5126, + "count": 36, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 263280, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000009536743164, + 1.0000020265579224, + 1.0000022649765015 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 269408, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531655550003052, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401016175746918, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 155432, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 263712, + "componentType": 5126, + "count": 26, + "max": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930147707462311 + ], + "min": [ + 0.044326584786176682, + -0.11071404814720154, + 0.071930117905139923 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155536, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264024, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155584, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 270112, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531584024429321, + -0.090401075780391693, + 0.19322755932807922, + 0.94302952289581299 + ], + "min": [ + -0.25531643629074097, + -0.090401455760002136, + 0.19322720170021057, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 155760, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264168, + "componentType": 5126, + "count": 48, + "max": [ + 3.5017728805541992e-07, + 6.7055225372314453e-08, + 2.6635825634002686e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 155952, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 264744, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999654293060303, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156144, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 270816, + "componentType": 5126, + "count": 48, + "max": [ + 3.6647588785854168e-07, + -6.2165759118215647e-07, + 5.7462693803245202e-07, + 1 + ], + "min": [ + -1.8994351194123738e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 156336, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265320, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.27854281663894653, + 1.9557774066925049e-07 + ], + "min": [ + 7.0780515670776367e-08, + 0.27854272723197937, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156544, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265944, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156560, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 271584, + "componentType": 5126, + "count": 52, + "max": [ + 0.25531500577926636, + 0.12245099246501923, + -0.17468459904193878, + 0.97297227382659912 + ], + "min": [ + 0.088408313691616058, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 156768, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 265992, + "componentType": 5126, + "count": 49, + "max": [ + 2.8312206268310547e-07, + 0.13927170634269714, + 3.380700945854187e-07 + ], + "min": [ + 6.7055225372314453e-08, + 0.13927128911018372, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 156964, + "componentType": 5126, + "count": 31, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 266580, + "componentType": 5126, + "count": 31, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999874830245972, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157088, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 272416, + "componentType": 5126, + "count": 49, + "max": [ + -5.0757080316543579e-08, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.1161922657265677e-06, + -8.257104127551429e-06, + -1.0617110319799394e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 157284, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 266952, + "componentType": 5126, + "count": 62, + "max": [ + -0.027315571904182434, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975727267563343 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157532, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 267696, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 157596, + "componentType": 5126, + "count": 59, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 273200, + "componentType": 5126, + "count": 59, + "max": [ + -0.24058763682842255, + 0.89068752527236938, + -0.051517702639102936, + 0.5384858250617981 + ], + "min": [ + -0.31360739469528198, + 0.70802509784698486, + -0.3883955180644989, + 0.3367779552936554 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 157832, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 267888, + "componentType": 5126, + "count": 44, + "max": [ + 1.9557774066925049e-08, + 3.166496753692627e-08, + 5.0632388592930511e-07 + ], + "min": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 2.5607096176827326e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158008, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268416, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158024, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 274144, + "componentType": 5126, + "count": 44, + "max": [ + -7.004929081233513e-09, + 9.1364206866728637e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -1.3918908692289733e-08, + 8.2272904933233804e-08, + 4.4703490686970326e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 158200, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268464, + "componentType": 5126, + "count": 43, + "max": [ + 0.023130057379603386, + 0.26697874069213867, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158372, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 268980, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158472, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 274848, + "componentType": 5126, + "count": 43, + "max": [ + -0.69586646556854248, + -0.39777600765228271, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 158644, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269280, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527612686157227e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + -4.0978193283081055e-08, + 2.9802322387695312e-08, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158820, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269808, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 158836, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 275536, + "componentType": 5126, + "count": 44, + "max": [ + 9.7788870334625244e-09, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.4901161193847656e-08, + 1.862645371275562e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 269856, + "componentType": 5126, + "count": 44, + "max": [ + -7.2177499532699585e-09, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223417699337006, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159188, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 270384, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159248, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 276240, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234383285045624, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234370619058609, + 0.058250203728675842, + 0.038226813077926636, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159424, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 270564, + "componentType": 5126, + "count": 44, + "max": [ + -3.5623088479042053e-08, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1175870895385742e-08, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159600, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271092, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 276944, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7927959561347961e-08, + -2.1434974684098052e-08, + -6.7520891100514291e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 159808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271188, + "componentType": 5126, + "count": 44, + "max": [ + 5.029141902923584e-08, + 0.045040033757686615, + 4.8894435167312622e-08 + ], + "min": [ + 1.6763806343078613e-08, + 0.045039962977170944, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 159984, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271716, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 277648, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882878482341766, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882774174213409, + 0.038419175893068314, + 9.6848831162787974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160192, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 271812, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-07, + 0.022520191967487335, + 1.7881393432617188e-07 + ], + "min": [ + -1.4156103134155273e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160368, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272340, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 278352, + "componentType": 5126, + "count": 44, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0675361156463623e-07, + 1 + ], + "min": [ + 6.3012709006216028e-07, + 9.4727141686234972e-07, + -2.0721925864108925e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272364, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160728, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 272892, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 160808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 279056, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + 0.038298372179269791, + 0.044083651155233383, + 0.98228907585144043 + ], + "min": [ + 0.17803941667079926, + 0.038298297673463821, + 0.044083595275878906, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 160984, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273132, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-08, + -5.9604644775390625e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3411045074462891e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161160, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273660, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 279760, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252894102834944e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -3.7252900764173091e-09, + -2.6426270949286845e-08, + -7.1362585174483684e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 161360, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 273732, + "componentType": 5126, + "count": 44, + "max": [ + 8.5681676864624023e-08, + 0.033446438610553741, + 1.0617077350616455e-07 + ], + "min": [ + 3.7252902984619141e-08, + 0.033446401357650757, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161536, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 274260, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 280464, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151072584092617, + -0.016420751810073853, + 0.038739185780286789, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.038739174604415894, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 161816, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 274572, + "componentType": 5126, + "count": 44, + "max": [ + 9.9651515483856201e-08, + -3.7252902984619141e-08, + 4.4408920985006262e-16 + ], + "min": [ + 2.9802322387695312e-08, + -1.3317912817001343e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 161992, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275100, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 281168, + "componentType": 5126, + "count": 44, + "max": [ + 1.8160790205001831e-08, + 2.6077030312876559e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.862645149230957e-08, + -7.2177508414483782e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275148, + "componentType": 5126, + "count": 44, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.041744619607925415, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162360, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275676, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 281872, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518239676952362, + -0.0088784974068403244, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785132393240929, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 275724, + "componentType": 5126, + "count": 44, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872429013252258, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162728, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276252, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 162744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 282576, + "componentType": 5126, + "count": 44, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.210719435817964e-08, + 1 + ], + "min": [ + -4.5634813261585805e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 162920, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276300, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163096, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 283280, + "componentType": 5126, + "count": 44, + "max": [ + 0.006395676638931036, + -0.65799015760421753, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 163328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 276996, + "componentType": 5126, + "count": 44, + "max": [ + 2.491287887096405e-07, + -2.3283064365386963e-08, + -3.0174851417541504e-07 + ], + "min": [ + 6.4261257648468018e-08, + -5.9604644775390625e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163504, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 277524, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163520, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 283984, + "componentType": 5126, + "count": 44, + "max": [ + -5.2386767146472835e-10, + 1.280568362460599e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2130628824234009e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 163696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 277572, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163872, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278100, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 163964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 284688, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + 0.038296066224575043, + 0.044083878397941589, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278376, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164316, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 278904, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164356, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 285392, + "componentType": 5126, + "count": 43, + "max": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279024, + "componentType": 5126, + "count": 44, + "max": [ + -0.0073303841054439545, + 0.34354403614997864, + -0.021197730675339699 + ], + "min": [ + -0.0073305927217006683, + 0.34354394674301147, + -0.021197784692049026 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164704, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279552, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 164736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 286080, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320606648921967, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725979089736938, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 164912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 279648, + "componentType": 5126, + "count": 44, + "max": [ + -1.3038516044616699e-08, + 1.8812716007232666e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165088, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280176, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 286784, + "componentType": 5126, + "count": 44, + "max": [ + -7.5669981391968122e-10, + 3.9581227184726231e-09, + 1.5832487321176814e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 165280, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280224, + "componentType": 5126, + "count": 44, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 9.8720192909240723e-08 + ], + "min": [ + -5.657784640789032e-08, + 0.032196052372455597, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165456, + "componentType": 5126, + "count": 30, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 280752, + "componentType": 5126, + "count": 30, + "max": [ + 1.0000005960464478, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165576, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 287488, + "componentType": 5126, + "count": 44, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043454021215439, + 0.99704056978225708 + ], + "min": [ + 0.056476566940546036, + 0.045752864331007004, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 165752, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281112, + "componentType": 5126, + "count": 44, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 3.166496753692627e-08 + ], + "min": [ + -1.1152587831020355e-07, + -6.3329935073852539e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165928, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281640, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 165960, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 288192, + "componentType": 5126, + "count": 44, + "max": [ + -1.0477378964424133e-09, + 3.5390264940815541e-08, + -2.9336666429458091e-08, + 1 + ], + "min": [ + -1.3969840839678227e-09, + 2.2926544218648814e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166136, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 281736, + "componentType": 5126, + "count": 44, + "max": [ + 4.2840838432312012e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540400505065918, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166312, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282264, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 288896, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570736162364483, + 0.98919987678527832 + ], + "min": [ + 0.11846192926168442, + 0.085242249071598053, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282384, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-08, + 0.024770196527242661, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770122021436691, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166704, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 282912, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 166736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 289600, + "componentType": 5126, + "count": 44, + "max": [ + -5.8393925428390503e-07, + -9.4092695235303836e-07, + 1.9185246458164329e-07, + 1 + ], + "min": [ + -5.9232110061202548e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 166912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283008, + "componentType": 5126, + "count": 44, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167088, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283536, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167144, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 290304, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749138832092285, + 0.069006636738777161, + 0.0030257357284426689, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006584584712982, + 0.003025716170668602, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 167320, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 283704, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 2.0489096641540527e-07, + 5.005858838558197e-08 + ], + "min": [ + 4.6566128730773926e-08, + 4.8428773880004883e-08, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167496, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 284232, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167512, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 291008, + "componentType": 5126, + "count": 44, + "max": [ + -1.0710210496256423e-08, + 1.5774276107549667e-08, + -8.7603524948916918e-16, + 1 + ], + "min": [ + -2.3515896785397672e-08, + 3.7252898543727042e-09, + -5.7625584304332733e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 167688, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 284280, + "componentType": 5126, + "count": 75, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 167988, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285180, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168044, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 291712, + "componentType": 5126, + "count": 75, + "max": [ + 0.2174726277589798, + 0.069102182984352112, + 0.003196704899892211, + 0.9736253023147583 + ], + "min": [ + 0.21745379269123077, + 0.068967744708061218, + 0.0028579330537468195, + 0.97361642122268677 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 168344, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285348, + "componentType": 5126, + "count": 44, + "max": [ + -0.023247243836522102, + 0.34059673547744751, + -0.015326134860515594 + ], + "min": [ + -0.023247666656970978, + 0.34059673547744751, + -0.015326227992773056 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168520, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 285876, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999958276748657, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999910593032837, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 292912, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811861634254456, + 0.13169923424720764, + 0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169918954372406, + 0.16719575226306915, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 168784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + 2.2069434635341167e-07, + 4.4703483581542969e-08 + ], + "min": [ + -6.0535967350006104e-08, + 1.6763806343078613e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168960, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286668, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 168976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 293616, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244546544413424e-08, + 5.2041671192079711e-18, + 6.5192566900407201e-09, + 1 + ], + "min": [ + -1.0710206943542744e-08, + -1.4901157641133977e-08, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169152, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 286716, + "componentType": 5126, + "count": 44, + "max": [ + 6.8685039877891541e-09, + 0.031800966709852219, + 8.5681676864624023e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169328, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287244, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 294320, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024107694625854, + 0.10080229490995407, + 0.057818260043859482, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080228000879288, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169568, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287436, + "componentType": 5126, + "count": 44, + "max": [ + 3.8184225559234619e-08, + 2.7008354663848877e-08, + 9.8720192909240723e-08 + ], + "min": [ + 2.1420419216156006e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169744, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287964, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 169752, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 295024, + "componentType": 5126, + "count": 44, + "max": [ + 7.9162418842315674e-09, + -1.4668330550193787e-08, + 6.7666355851869753e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 169928, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 287988, + "componentType": 5126, + "count": 44, + "max": [ + 1.4202669262886047e-07, + 0.044816732406616211, + -1.1175870895385742e-08 + ], + "min": [ + -2.514570951461792e-08, + 0.044816642999649048, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170104, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 288516, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 295728, + "componentType": 5126, + "count": 44, + "max": [ + 0.073151916265487671, + 0.052601087838411331, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043351411819458, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 170360, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 288756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4482066035270691e-07, + 0.02240833081305027, + 1.8253922462463379e-07 + ], + "min": [ + -3.7252902984619141e-09, + 0.022408243268728256, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170536, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289284, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170568, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 296432, + "componentType": 5126, + "count": 44, + "max": [ + -6.4913183450698853e-07, + -9.6193980425596237e-07, + 1.9557775843281888e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 170744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289380, + "componentType": 5126, + "count": 44, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170920, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 289908, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 170960, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 297136, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130239248275757, + 0.10888323932886124, + -0.021744664758443832, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320952653885, + -0.021744726225733757, + 0.9531739354133606 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 171136, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290028, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -4.4703483581542969e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171312, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290556, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 297840, + "componentType": 5126, + "count": 44, + "max": [ + -1.4028048944680904e-08, + 3.2130635929661366e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.5250410712042139e-08, + 2.1012969142475413e-08, + -2.2351743567128324e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 171504, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 290604, + "componentType": 5126, + "count": 58, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171736, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 291300, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 171804, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 298544, + "componentType": 5126, + "count": 58, + "max": [ + 0.28130322694778442, + 0.10890334844589233, + -0.021634636446833611, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.10886994004249573, + -0.021744493395090103, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172036, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 291504, + "componentType": 5126, + "count": 44, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954793751239777, + 0.33536875247955322, + -0.0064072869718074799 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172212, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 292032, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "min": [ + 0.9999995231628418, + 0.99999934434890747, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 299472, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214225232601166, + 0.16701884567737579, + 0.2257961630821228, + 0.94418632984161377 + ], + "min": [ + -0.17214229702949524, + 0.16701878607273102, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 292500, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 1.7136335372924805e-07, + 1.4062970876693726e-07 + ], + "min": [ + -1.0430812835693359e-07, + 1.6391277313232422e-07, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293028, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 172736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 300176, + "componentType": 5126, + "count": 44, + "max": [ + 5.1222746044743417e-09, + -2.0489096641540527e-08, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + 3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 172912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293076, + "componentType": 5126, + "count": 44, + "max": [ + -4.0978193283081055e-08, + 0.022592537105083466, + 1.862645149230957e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.022592464461922646, + -1.3504177331924438e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173088, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293604, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173176, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 300880, + "componentType": 5126, + "count": 44, + "max": [ + 0.08288169652223587, + 0.044399194419384003, + 0.02859199233353138, + 0.99515920877456665 + ], + "min": [ + 0.082881465554237366, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 173352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 293868, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 6.3329935073852539e-08, + 1.1548399925231934e-07 + ], + "min": [ + -4.4703483581542969e-08, + -7.4505805969238281e-09, + -6.28642737865448e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173528, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294396, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173552, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 301584, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244550097127103e-08, + 3.8184232664661977e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.8277209079542445e-08, + 1.1175871783564162e-08, + -1.0477383405316232e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 173728, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294468, + "componentType": 5126, + "count": 44, + "max": [ + 2.2165477275848389e-07, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876321226358414, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173904, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 294996, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 173956, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 302288, + "componentType": 5126, + "count": 44, + "max": [ + 0.041518151760101318, + 0.028988037258386612, + 0.020971935242414474, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174132, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295152, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.013938121497631073, + 9.5926225185394287e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.013938065618276596, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174308, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295680, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 302992, + "componentType": 5126, + "count": 44, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -3.771856427192688e-08, + 6.5425410866737366e-08, + -3.771856427192688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 295728, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174676, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 296256, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 174764, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 303696, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057234764099121, + 0.17872513830661774, + -0.015338524244725704, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872510850429535, + -0.01533864438533783, + 0.91919589042663574 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 174940, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 296520, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + 2.9802322387695312e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175116, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297048, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175148, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 304400, + "componentType": 5126, + "count": 44, + "max": [ + 4.4819907785154101e-09, + -1.9557775843281888e-08, + -1.862645149230957e-09, + 1 + ], + "min": [ + 3.9581213862049935e-09, + -2.4214388716359281e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 175324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297144, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175500, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297672, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 305104, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338567085564137, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + 0.17872488498687744, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 175776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 297972, + "componentType": 5126, + "count": 44, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579681009054184, + 0.32914391160011292, + 0.0039983503520488739 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 175952, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 298500, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999970197677612, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176020, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 305808, + "componentType": 5126, + "count": 44, + "max": [ + -0.13570015132427216, + 0.18749435245990753, + 0.27479097247123718, + 0.9332316517829895 + ], + "min": [ + -0.13570018112659454, + 0.18749421834945679, + 0.27479088306427002, + 0.93323159217834473 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 176196, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 298704, + "componentType": 5126, + "count": 44, + "max": [ + -2.9802322387695312e-08, + 2.5657936930656433e-07, + 2.2293534129858017e-07 + ], + "min": [ + -3.5911216400563717e-07, + 1.4156103134155273e-07, + 1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176372, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 299232, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 306512, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527609133443548e-08, + -1.1175874448099421e-08, + -6.7055218266887096e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 176596, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 299376, + "componentType": 5126, + "count": 62, + "max": [ + 2.9453076422214508e-08, + 0.25792214274406433, + 1.10274413600564e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176844, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 300120, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 176924, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 307216, + "componentType": 5126, + "count": 61, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 177168, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 300360, + "componentType": 5126, + "count": 73, + "max": [ + 3.6135315895080566e-07, + 0.12896072864532471, + 6.6868960857391357e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 177460, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 301236, + "componentType": 5126, + "count": 66, + "max": [ + 0.99999946355819702, + 1.0000060796737671, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 1.0000019073486328, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 177724, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 308192, + "componentType": 5126, + "count": 73, + "max": [ + 5.5228764495041105e-07, + 0.88032650947570801, + 2.0877798760920996e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302028, + "componentType": 5126, + "count": 44, + "max": [ + 1.0430812835693359e-07, + 0.13927136361598969, + 3.7252902984619141e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178192, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302556, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000004768371582, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999785423278809, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 309360, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531542301177979, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401247143745422, + 0.19322679936885834, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178432, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 302748, + "componentType": 5126, + "count": 42, + "max": [ + -0.044326536357402802, + -0.1107146143913269, + 0.071930199861526489 + ], + "min": [ + -0.044326584786176682, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178600, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303252, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 178632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 310064, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531512498855591, + 0.090401209890842438, + -0.19322690367698669, + 0.94302976131439209 + ], + "min": [ + -0.25531551241874695, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 178808, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303348, + "componentType": 5126, + "count": 51, + "max": [ + 6.7055225372314453e-08, + -1.4901161193847656e-08, + 4.5821070671081543e-07 + ], + "min": [ + 1.4901161193847656e-08, + -6.7055225372314453e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179012, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 303960, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999713897705078, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179060, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 310768, + "componentType": 5126, + "count": 51, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631590935779968e-07, + -2.9895460329498746e-07, + -1.1252719787080423e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 179264, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304104, + "componentType": 5126, + "count": 62, + "max": [ + 3.7252902984619141e-08, + 0.27854269742965698, + 6.1700120568275452e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179512, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304848, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179544, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 311584, + "componentType": 5126, + "count": 62, + "max": [ + 0.25531500577926636, + -0.090401500463485718, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571898639202118, + -0.12242159247398376, + 0.17470519244670868, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 179792, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 304944, + "componentType": 5126, + "count": 49, + "max": [ + -6.3329935073852539e-08, + 0.1392713338136673, + 4.6752393245697021e-07 + ], + "min": [ + -3.8743019104003906e-07, + 0.13927125930786133, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 179988, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 305532, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180036, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 312576, + "componentType": 5126, + "count": 49, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0624992683005985e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 180232, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 305676, + "componentType": 5126, + "count": 62, + "max": [ + 0.027315612882375717, + 0.33446058630943298, + 0.019757712259888649 + ], + "min": [ + 0.027315512299537659, + 0.3344605565071106, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180480, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306420, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180496, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 313360, + "componentType": 5126, + "count": 61, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839560747146606, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668548703193665, + -0.48917773365974426 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 180740, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306468, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 8.3819031715393066e-09, + 3.7709014577558264e-07 + ], + "min": [ + 6.3060724642127752e-08, + -4.2840838432312012e-08, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180916, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 306996, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 180932, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 314336, + "componentType": 5126, + "count": 44, + "max": [ + -6.9740049291056039e-09, + -3.2074240152724087e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -8.3091427072190527e-09, + -3.2596290111541748e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 181108, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307044, + "componentType": 5126, + "count": 32, + "max": [ + -0.023130090907216072, + 0.26697903871536255, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965265989303589 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181236, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307428, + "componentType": 5126, + "count": 26, + "max": [ + 0.9999997615814209, + 0.99999970197677612, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181340, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 315040, + "componentType": 5126, + "count": 44, + "max": [ + -0.69586670398712158, + 0.39777567982673645, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 181516, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 307740, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181820, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 308652, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 181868, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 315744, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 182172, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 308796, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 182476, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 309708, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 182540, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 316960, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 182844, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 309900, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183148, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 310812, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183212, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 318176, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 183516, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 311004, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183820, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 311916, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 183876, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 319392, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 184180, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312084, + "componentType": 5126, + "count": 44, + "max": [ + -8.3527993410825729e-09, + -1.3605159665530664e-08, + -2.5611370801925659e-08 + ], + "min": [ + -2.0985442716892067e-08, + -2.0023435354232788e-08, + -2.8113703365306719e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184356, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312612, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184372, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 320608, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077033865590238e-08, + 1.8684659153223038e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.3908793167493059e-08, + 1.8663602219248787e-08, + -1.0186340659856796e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 184548, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 312660, + "componentType": 5126, + "count": 62, + "max": [ + 6.3351762946695089e-08, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184796, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 313404, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 184860, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 321312, + "componentType": 5126, + "count": 62, + "max": [ + 0.0025871710386127234, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896300554275513, + -0.37012156844139099, + -0.0055759232491254807 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 313596, + "componentType": 5126, + "count": 44, + "max": [ + 2.6804627850651741e-08, + 2.1420419216156006e-08, + -2.7474015951156616e-08 + ], + "min": [ + -5.50062395632267e-09, + -7.6368451118469238e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185284, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314124, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185300, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 322304, + "componentType": 5126, + "count": 44, + "max": [ + -5.2322903343338112e-08, + 7.1333474238599592e-08, + 2.0081638574254157e-09, + 1 + ], + "min": [ + -5.8862475782461843e-08, + 7.1071532659061631e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185476, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314172, + "componentType": 5126, + "count": 44, + "max": [ + 2.1187588572502136e-08, + 0.4787544310092926, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875440120697021, + -4.377216100692749e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185652, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314700, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 185692, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 323008, + "componentType": 5126, + "count": 44, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115001767873764, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 185868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 314820, + "componentType": 5126, + "count": 44, + "max": [ + 6.5425410866737366e-08, + 0.23937709629535675, + 2.0582228899002075e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937708139419556, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186044, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315348, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 323712, + "componentType": 5126, + "count": 44, + "max": [ + 1.1330482152516197e-07, + 0.039239484816789627, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "min": [ + -6.5417602002071362e-08, + 0.039239473640918732, + 1.197672219177548e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186252, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315444, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505805969238281e-09, + 0.2127838134765625, + 3.5390257835388184e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.21278376877307892, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186428, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 315972, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 324416, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897858619689941, + 0.18448328971862793, + 0.7880139946937561, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448323011398315, + 0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186620, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316020, + "componentType": 5126, + "count": 29, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323382496833801 + ], + "min": [ + -0.15143668651580811, + 0.084600701928138733, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186736, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316368, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 186768, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 325120, + "componentType": 5126, + "count": 43, + "max": [ + 0.27897855639457703, + -0.18448324501514435, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448333442211151, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 186940, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 316464, + "componentType": 5126, + "count": 46, + "max": [ + 1.4156103134155273e-07, + -1.1102230246251565e-16, + 8.2072801887989044e-09 + ], + "min": [ + 2.8638169169425964e-08, + -1.4156103134155273e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187124, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317016, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187180, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 325808, + "componentType": 5126, + "count": 46, + "max": [ + 6.8091333105257945e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.1525117749044966e-08, + -5.9022578824396987e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 187364, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317184, + "componentType": 5126, + "count": 62, + "max": [ + 4.0978193283081055e-08, + 0.425567626953125, + 6.1467289924621582e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.42556756734848022, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187612, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 317928, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 187644, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 326544, + "componentType": 5126, + "count": 62, + "max": [ + -0.20713317394256592, + 0.28850480914115906, + 0.78801411390304565, + 0.54963231086730957 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 187892, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 318024, + "componentType": 5126, + "count": 51, + "max": [ + 1.1920928955078125e-07, + 0.2127840518951416, + 1.862645149230957e-08 + ], + "min": [ + 7.0780515670776367e-08, + 0.21278393268585205, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188096, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 318636, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188252, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 327536, + "componentType": 5126, + "count": 51, + "max": [ + 7.8231160216546414e-08, + 1.0408691650809487e-06, + 2.4959456368378596e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 188456, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319104, + "componentType": 5126, + "count": 8, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957681179046631, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188488, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319200, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188548, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 328352, + "componentType": 5126, + "count": 61, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53586781024932861, + 0.75361925363540649, + -0.15842762589454651, + -0.34612774848937988 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 188792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319380, + "componentType": 5126, + "count": 44, + "max": [ + -1.2259971526873414e-07, + -7.3088671115328907e-08, + -4.0905604237195803e-08 + ], + "min": [ + -1.3599580483969476e-07, + -8.517139349351055e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188968, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319908, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 188976, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 329328, + "componentType": 5126, + "count": 44, + "max": [ + 1.1175901093452012e-08, + -9.4372563097522288e-09, + -3.5528871511480986e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372580861090682e-09, + -3.5529088004970788e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 189152, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 319932, + "componentType": 5126, + "count": 62, + "max": [ + 1.6647391021251678e-08, + 0.31343457102775574, + 2.0343577489256859e-08 + ], + "min": [ + -8.512869853483096e-10, + 0.31343457102775574, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189400, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 320676, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189452, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 330032, + "componentType": 5126, + "count": 62, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210074286907911, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195707328617573 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 189700, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 320832, + "componentType": 5126, + "count": 44, + "max": [ + 8.1534381024539471e-08, + 1.1175870895385742e-07, + 5.4686097428202629e-08 + ], + "min": [ + 7.0023816078901291e-08, + 7.543712854385376e-08, + 3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189876, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 321360, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 189884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 331024, + "componentType": 5126, + "count": 44, + "max": [ + -1.8806686763461755e-10, + -6.7157088778913021e-08, + -2.9685904845422328e-09, + 1 + ], + "min": [ + -1.520882619843178e-08, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 190060, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 321384, + "componentType": 5126, + "count": 62, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + 2.3283064365386963e-09, + 0.47875422239303589, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190308, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 322128, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190372, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 331728, + "componentType": 5126, + "count": 62, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 190620, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 322320, + "componentType": 5126, + "count": 62, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 2.7127680368721485e-07 + ], + "min": [ + -9.0803951025009155e-09, + 0.23937720060348511, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190868, + "componentType": 5126, + "count": 28, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323064, + "componentType": 5126, + "count": 28, + "max": [ + 0.99999970197677612, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 190980, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 332720, + "componentType": 5126, + "count": 62, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -5.78927199512691e-07, + -0.039239216595888138, + 2.451136253966979e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191228, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323400, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 0.21278379857540131, + 2.2351741790771484e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191404, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323928, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191420, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 333712, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897849678993225, + -0.18448299169540405, + -0.78801417350769043, + 0.51688557863235474 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801417350769043, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191596, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 323976, + "componentType": 5126, + "count": 23, + "max": [ + 0.15143664181232452, + 0.084600932896137238, + -0.12323371320962906 + ], + "min": [ + 0.15143662691116333, + 0.084600888192653656, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191688, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324252, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 191760, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 334416, + "componentType": 5126, + "count": 44, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448290228843689, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 191936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324468, + "componentType": 5126, + "count": 44, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 1.5931436792016029e-07 + ], + "min": [ + 3.4458935260772705e-08, + -5.7741999626159668e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192112, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 324996, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192168, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 335120, + "componentType": 5126, + "count": 44, + "max": [ + 2.7602067120824358e-07, + 1.0858637722321873e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.4866312742233276e-07, + 9.3830728076227388e-08, + 1.3275710841753607e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 192344, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325164, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 0.42556747794151306, + -1.1175870895385742e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192520, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325692, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192536, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 335824, + "componentType": 5126, + "count": 44, + "max": [ + -0.2789786159992218, + -0.18448291718959808, + -0.7880139946937561, + 0.51688581705093384 + ], + "min": [ + -0.27897864580154419, + -0.18448294699192047, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 192712, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 325740, + "componentType": 5126, + "count": 44, + "max": [ + 1.2665987014770508e-07, + 0.21278375387191772, + 8.1956386566162109e-08 + ], + "min": [ + 0, + 0.2127835750579834, + 3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192888, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326268, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 192992, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 336528, + "componentType": 5126, + "count": 44, + "max": [ + 1.0640362546610049e-07, + -1.8626433728741176e-09, + -1.3411043653377419e-07, + 1 + ], + "min": [ + 2.1420424545226524e-08, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 193168, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326580, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957693099975586, + -0.15007568895816803 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193200, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326676, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193280, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 337232, + "componentType": 5126, + "count": 61, + "max": [ + -0.5353204607963562, + 0.76489150524139404, + -0.089343681931495667, + 0.34697279334068298 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 193524, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 326916, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193828, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 327828, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 193884, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 338208, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 194188, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 327996, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194316, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 328380, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194396, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 339424, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 194460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 328620, + "componentType": 5126, + "count": 62, + "max": [ + 2.5331974029541016e-07, + -6.5600033849477768e-08, + 3.457535058259964e-07 + ], + "min": [ + 4.1058228816837072e-08, + -7.4505805969238281e-08, + -1.2380769476294518e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194708, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 329364, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999856948852539, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 194900, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 339680, + "componentType": 5126, + "count": 62, + "max": [ + 0.31813400983810425, + 0.83380436897277832, + 0.38848564028739929, + 0.5382201075553894 + ], + "min": [ + -0.29336035251617432, + -0.78853172063827515, + -0.17826144397258759, + -0.49746587872505188 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 195148, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 329940, + "componentType": 5126, + "count": 76, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195452, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 330852, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195468, + "componentType": 5126, + "count": 57, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 340672, + "componentType": 5126, + "count": 57, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229203581809998, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 195696, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 330900, + "componentType": 5126, + "count": 62, + "max": [ + 2.2351741790771484e-07, + 1.6391277313232422e-07, + 6.7229848355054855e-08 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 195944, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 331644, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196036, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 341584, + "componentType": 5126, + "count": 62, + "max": [ + -0.23966485261917114, + 0.83562910556793213, + -0.010252265259623528, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902315497398376, + 0.45567798614501953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 196284, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 331920, + "componentType": 5126, + "count": 76, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196588, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 332832, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196604, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 342576, + "componentType": 5126, + "count": 61, + "max": [ + 0.26693445444107056, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601046562194824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 196848, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 332880, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 196976, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 333264, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197056, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 343552, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 197120, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 333504, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197380, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 334284, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197436, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 343808, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482402078807354, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294226869940758, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 197696, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 334452, + "componentType": 5126, + "count": 61, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197940, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 335184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 197972, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 344848, + "componentType": 5126, + "count": 61, + "max": [ + 0.10101209580898285, + 0.79781532287597656, + -0.48497870564460754, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 198216, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 335280, + "componentType": 5126, + "count": 65, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 198476, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336060, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 198564, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 345824, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + 0.39800706505775452, + 0.12996619939804077, + 0.71552276611328125 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 198824, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336324, + "componentType": 5126, + "count": 48, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199016, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 336900, + "componentType": 5126, + "count": 17, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999964237213135 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199084, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 346864, + "componentType": 5126, + "count": 48, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516587674617767, + -0.3081190288066864 + ], + "min": [ + 0.92842531204223633, + -0.11126615852117538, + -0.17523978650569916, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 199276, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 337104, + "componentType": 5126, + "count": 65, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199536, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 337884, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 199600, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 347632, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 199860, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338076, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200036, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338604, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200060, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 348672, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477138519287109, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790062189102173 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 200236, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 338676, + "componentType": 5126, + "count": 66, + "max": [ + -3.5390257835388184e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.25762289762496948, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200500, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 339468, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 200548, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 349376, + "componentType": 5126, + "count": 66, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026340842247009, + -0.19707934558391571, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 200812, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 339612, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201092, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 340452, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201164, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 350432, + "componentType": 5126, + "count": 70, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076334238052368, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 201444, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 340668, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201704, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 341448, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 201720, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 351552, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 201980, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 341496, + "componentType": 5126, + "count": 61, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202224, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 342228, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202316, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 352592, + "componentType": 5126, + "count": 61, + "max": [ + -0.098626755177974701, + 0.79781526327133179, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101209580898285, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 202560, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 342504, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202820, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 343284, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 202900, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 353568, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35182005167007446, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 203160, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 343524, + "componentType": 5126, + "count": 47, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203348, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344088, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203372, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 354608, + "componentType": 5126, + "count": 47, + "max": [ + 0.92845195531845093, + 0.11125477403402328, + 0.17524003982543945, + -0.30811884999275208 + ], + "min": [ + 0.92842662334442139, + 0.11104369908571243, + 0.17516998946666718, + -0.30815878510475159 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 203560, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344160, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203820, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 344940, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 203852, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 355360, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 204112, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345036, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204288, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345564, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204352, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 356400, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477177262306213, + -0.41790032386779785 + ], + "min": [ + 0.81515997648239136, + 0.2049533873796463, + 0.34477171301841736, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 204528, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 345756, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-09, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.25762262940406799, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204788, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 346536, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999946355819702, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 204880, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 357104, + "componentType": 5126, + "count": 65, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 205140, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 346812, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 205420, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 347652, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 205476, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 358144, + "componentType": 5126, + "count": 70, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 205756, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 347820, + "componentType": 5126, + "count": 76, + "max": [ + 4.6566128730773926e-10, + 3.7252902984619141e-08, + 3.7252902984619141e-09 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206060, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 348732, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206076, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 359264, + "componentType": 5126, + "count": 76, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 206380, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 348780, + "componentType": 5126, + "count": 62, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -4.2778280917588063e-15, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206628, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 349524, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 206668, + "componentType": 5126, + "count": 53, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 360480, + "componentType": 5126, + "count": 53, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 206880, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 349644, + "componentType": 5126, + "count": 71, + "max": [ + -2.7533531010703882e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -1.4901154088420299e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207164, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 350496, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207196, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 361328, + "componentType": 5126, + "count": 71, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698613803973785e-08, + -1.8470409202109295e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 207480, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 350592, + "componentType": 5126, + "count": 71, + "max": [ + -6.2172489379008766e-15, + 0.36641570925712585, + 6.2172489379008766e-15 + ], + "min": [ + -3.3750779948604759e-14, + 0.36641567945480347, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207764, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 351444, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 207852, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 362464, + "componentType": 5126, + "count": 71, + "max": [ + 0.36187875270843506, + 1.7365225701837517e-08, + 8.7073104282353597e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208136, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 351708, + "componentType": 5126, + "count": 71, + "max": [ + 2.7929047963226594e-15, + 0.74672240018844604, + -1.1102230246251565e-16 + ], + "min": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208420, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352560, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208484, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 363600, + "componentType": 5126, + "count": 71, + "max": [ + 0.096756108105182648, + 1.6351776821466046e-08, + 9.8581814711451443e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -7.8859665464392492e-09, + 9.7168474155751028e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208768, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352752, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208776, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352776, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 208792, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 364736, + "componentType": 5126, + "count": 12, + "max": [ + -0.061978887766599655, + 3.3637053523236636e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -2.6537087288140325e-18, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 208840, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 352824, + "componentType": 5126, + "count": 61, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 1.1713601111296157e-07 + ], + "min": [ + -4.990958046846572e-08, + -1.3287539957218542e-07, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209084, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353556, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000017881393433, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000007152557373, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209164, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 364928, + "componentType": 5126, + "count": 61, + "max": [ + 0.56482315063476562, + 0.78602433204650879, + -0.12704809010028839, + -0.29326319694519043 + ], + "min": [ + 0.52875351905822754, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 209408, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353796, + "componentType": 5126, + "count": 6, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209432, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353868, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209440, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 365904, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 209472, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 353892, + "componentType": 5126, + "count": 61, + "max": [ + 1.5542553910563583e-09, + -1.9861484901184667e-08, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810734556886018e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209716, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 354624, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 209832, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 366032, + "componentType": 5126, + "count": 61, + "max": [ + -0.52770334482192993, + 0.78695201873779297, + -0.12602679431438446, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307970404624939 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210076, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 354972, + "componentType": 5126, + "count": 6, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210100, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355044, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210108, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367008, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210140, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355068, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210308, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355572, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210316, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367136, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210324, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355596, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210332, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355620, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210340, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367168, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210348, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355644, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210356, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355668, + "componentType": 5126, + "count": 2, + "max": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "min": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210364, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367200, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 355692, + "componentType": 5126, + "count": 38, + "max": [ + 1.9608137336035725e-10, + 0.19137150049209595, + 5.3722779114195873e-08 + ], + "min": [ + -7.6690298556059133e-10, + 0.1913713812828064, + -6.5486290168337291e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210524, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356148, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000004768371582, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367232, + "componentType": 5126, + "count": 38, + "max": [ + -0.13921885192394257, + 5.1049107696599094e-07, + -2.5442389528507192e-08, + 0.99026161432266235 + ], + "min": [ + -0.13921895623207092, + 5.1047686611127574e-07, + -2.5445675788660083e-08, + 0.99026161432266235 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 210740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356340, + "componentType": 5126, + "count": 38, + "max": [ + 1.7389822914992692e-10, + 0.30786654353141785, + -1.3369925966344454e-07 + ], + "min": [ + -4.0167478232433496e-09, + 0.30786648392677307, + -3.572166917820141e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210892, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 356796, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 210980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 367840, + "componentType": 5126, + "count": 38, + "max": [ + -0.058453772217035294, + -4.1669062511573429e-07, + 2.4425312972198299e-07, + 0.99829012155532837 + ], + "min": [ + -0.058453813195228577, + -4.1670494965728722e-07, + 2.4424954858659476e-07, + 0.99829012155532837 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357060, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 2.9383227229118347e-07, + 2.0395964384078979e-07 + ], + "min": [ + 1.1175870895385742e-08, + 1.8905848264694214e-07, + 1.9697472453117371e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211284, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357516, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 368448, + "componentType": 5126, + "count": 38, + "max": [ + 1.0943040251731873e-08, + 6.0535971790898202e-09, + 2.6193443858346654e-08, + 1 + ], + "min": [ + 9.7788870334625244e-09, + 2.7939672797572257e-09, + 1.932494164691434e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 357564, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.028223449364304543, + 4.8428773880004883e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223354369401932, + 1.8626450382086546e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211604, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358020, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000004768371582, + 1.0000003576278687, + 1.0000007152557373 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000007152557373 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211620, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 369056, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234389245510101, + -0.058250237256288528, + -0.038226820528507233, + 0.99122375249862671 + ], + "min": [ + 0.11234388500452042, + -0.058250244706869125, + -0.038226842880249023, + 0.99122369289398193 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 211772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358068, + "componentType": 5126, + "count": 38, + "max": [ + 8.1956386566162109e-08, + 1.2852251529693604e-07, + -1.5646219253540039e-07 + ], + "min": [ + -7.4505805969238281e-09, + 3.3527612686157227e-08, + -1.8998980522155762e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211924, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358524, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 211940, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 369664, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132248579763655e-09, + -4.5634791945303732e-08, + -1.9557774066925049e-08, + 1 + ], + "min": [ + -1.8626449715952731e-08, + -5.215405352032576e-08, + -2.0489094865183688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212092, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 358572, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.045040123164653778, + -4.2840838432312012e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.045039854943752289, + -4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212244, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359028, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 370272, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882871031761169, + -0.038419146090745926, + -9.6820382168516517e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882863581180573, + -0.038419149816036224, + -9.6826464869081974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359124, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.022519811987876892, + 5.029141902923584e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.02251964807510376, + 4.6566128730773926e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212580, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359580, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 370880, + "componentType": 5126, + "count": 38, + "max": [ + 5.2992254495620728e-07, + -9.3691062375000911e-07, + 2.4959442157523881e-07, + 1 + ], + "min": [ + 5.1688402891159058e-07, + -9.4249861604112084e-07, + 2.4586915969848633e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 212748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 359628, + "componentType": 5126, + "count": 38, + "max": [ + -3.3527612686157227e-08, + 0.069626115262508392, + 2.6077032089233398e-08 + ], + "min": [ + -1.0803341865539551e-07, + 0.069626078009605408, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212900, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360084, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 212924, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 371488, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803956568241119, + -0.038298234343528748, + -0.044083669781684875, + 0.98228907585144043 + ], + "min": [ + 0.17803953588008881, + -0.038298241794109344, + -0.044083710759878159, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360156, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-07, + -1.3032695278525352e-07, + -1.1548399925231934e-07 + ], + "min": [ + -2.5704503059387207e-07, + -1.3821409083902836e-07, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213228, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360612, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 372096, + "componentType": 5126, + "count": 38, + "max": [ + 1.3387760899874479e-09, + 5.5879350036036612e-09, + 7.3923736465530965e-08, + 1 + ], + "min": [ + -5.2386911475466036e-10, + 3.7252956275324323e-09, + 6.61821175640398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 360636, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.033446658402681351, + -2.2351741790771484e-08 + ], + "min": [ + -6.5192580223083496e-08, + 0.033446494489908218, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213540, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361092, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 372704, + "componentType": 5126, + "count": 38, + "max": [ + 0.021509945392608643, + 0.016420753672719002, + -0.03873918205499649, + 0.99888283014297485 + ], + "min": [ + 0.021509720012545586, + 0.016420742496848106, + -0.038739196956157684, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 213732, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361212, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 2.1266168914735317e-07, + -4.0978193283081055e-08 + ], + "min": [ + -9.4994902610778809e-08, + 1.6755075193941593e-07, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213884, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361668, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 213916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 373312, + "componentType": 5126, + "count": 38, + "max": [ + -3.4924460545759928e-10, + 6.7278821148784211e-16, + 4.2316962378663447e-08, + 1 + ], + "min": [ + -1.1641513308902063e-09, + -1.8626444386882213e-08, + 4.1967719965896322e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214068, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 361764, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.041744876652956009, + 2.9802322387695312e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.041744541376829147, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214220, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362220, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 1.0000003576278687, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 373920, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518168151378632, + 0.0088785281404852867, + -0.057382617145776749, + 0.98455244302749634 + ], + "min": [ + 0.16518144309520721, + 0.0088785169646143913, + -0.057382632046937943, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362268, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.02087247371673584, + 5.2154064178466797e-08 + ], + "min": [ + 1.3038516044616699e-08, + 0.02087213471531868, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362724, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 374528, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566119848989729e-09, + -1.0384243864791642e-07, + -1.4342366227992898e-07, + 1 + ], + "min": [ + 1.8626448161640496e-09, + -1.1548398504146462e-07, + -1.5087421445514337e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 214708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 362772, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898095905780792, + -0.0083237793296575546, + 0.023024274036288261 + ], + "min": [ + -0.0086899511516094208, + -0.0083238938823342323, + 0.023024184629321098 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214860, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363228, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 214876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 375136, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063957325182855129, + 0.6579899787902832, + 0.2625289261341095, + 0.7057526707649231 + ], + "min": [ + 0.0063956384547054768, + 0.6579899787902832, + 0.2625289261341095, + 0.7057526707649231 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363276, + "componentType": 5126, + "count": 38, + "max": [ + -6.7055225372314453e-08, + 1.1734664440155029e-07, + -8.3819031715393066e-08 + ], + "min": [ + -1.4528632164001465e-07, + 7.9628080129623413e-08, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215180, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363732, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 375744, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695130694050931e-08, + 1.4901161193847656e-08, + -6.8917884732400125e-08, + 1 + ], + "min": [ + 9.3132324074929329e-10, + 1.4901160305669237e-08, + -7.4505820180092996e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 363828, + "componentType": 5126, + "count": 38, + "max": [ + -3.3527612686157227e-08, + 0.069626115262508392, + 2.6077032089233398e-08 + ], + "min": [ + -1.0803341865539551e-07, + 0.069626078009605408, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215516, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364284, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 376352, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + -0.038296099752187729, + -0.044083870947360992, + 0.98228931427001953 + ], + "min": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 215716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364428, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086898095905780792, + -0.0083237793296575546, + 0.023024274036288261 + ], + "min": [ + -0.0086899511516094208, + -0.0083238938823342323, + 0.023024184629321098 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215868, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 364884, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 215916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 376960, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958712853491306, + 0.65798985958099365, + 0.26252922415733337, + 0.7057526707649231 + ], + "min": [ + 0.0063958242535591125, + 0.65798985958099365, + 0.26252919435501099, + 0.7057526707649231 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216068, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365028, + "componentType": 5126, + "count": 26, + "max": [ + 0.0073303133249282837, + 0.34354427456855774, + -0.021197903901338577 + ], + "min": [ + 0.0073303133249282837, + 0.34354415535926819, + -0.021197918802499771 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216172, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365340, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 377568, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320602178573608, + -0.1123732328414917, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320603668689728, + -0.11237326264381409, + -0.12725988030433655, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365388, + "componentType": 5126, + "count": 38, + "max": [ + -2.4214386940002441e-08, + -3.2130628824234009e-08, + -3.4167896956205368e-08 + ], + "min": [ + -2.9569491744041443e-08, + -1.1548399925231934e-07, + -8.5768988355994225e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216492, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365844, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216508, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 378176, + "componentType": 5126, + "count": 38, + "max": [ + 7.916240107874728e-09, + 3.2596290111541748e-08, + 3.359308919925752e-08, + 1 + ], + "min": [ + 6.2864264904760603e-09, + 3.1781382858753204e-08, + 1.5192197722058154e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 365892, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763806343078613e-08, + 0.032196149230003357, + 3.0966475605964661e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.032196048647165298, + 2.7706846594810486e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216812, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366348, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 216844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 378784, + "componentType": 5126, + "count": 38, + "max": [ + 0.056477118283510208, + -0.045752909034490585, + -0.025043394416570663, + 0.99704056978225708 + ], + "min": [ + 0.056476995348930359, + -0.045752916485071182, + -0.02504340186715126, + 0.9970405101776123 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 216996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366444, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 2.9429793357849121e-07, + 3.1897798180580139e-08 + ], + "min": [ + -4.8428773880004883e-08, + 1.9744038581848145e-07, + 2.8172507882118225e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217148, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 366900, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217196, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 379392, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + -3.294554318244991e-08, + -1.4901164746561335e-08, + 1 + ], + "min": [ + -1.1641534847228741e-08, + -3.7485740733700368e-08, + -1.6298146832127713e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367044, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 0.049540463835000992, + 7.1711838245391846e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.049540374428033829, + -2.8870999813079834e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217500, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367500, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999946355819702, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 380000, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846247315406799, + -0.085242301225662231, + -0.013570677489042282, + 0.98919981718063354 + ], + "min": [ + 0.11846235394477844, + -0.085242308676242828, + -0.013570706360042095, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 367548, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.024769939482212067, + 1.4528632164001465e-07 + ], + "min": [ + 1.1102230246251565e-16, + 0.024769911542534828, + 1.5832483768463135e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217820, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368004, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 217836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 380608, + "componentType": 5126, + "count": 38, + "max": [ + -5.7276332654510043e-07, + 9.443612611903518e-07, + -1.4528632164001465e-07, + 1 + ], + "min": [ + -5.7835137567963102e-07, + 9.4063597089188988e-07, + -1.5646219253540039e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 217988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368052, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.068187065422534943, + 2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.068187050521373749, + -2.4214386940002441e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368508, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000004768371582, + 1, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 381216, + "componentType": 5126, + "count": 38, + "max": [ + 0.2174915075302124, + -0.069006450474262238, + -0.0030256684403866529, + 0.97361516952514648 + ], + "min": [ + 0.2174912691116333, + -0.069006644189357758, + -0.0030258155893534422, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 218324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 368604, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 7.2177499532699585e-08, + -2.2351741790771484e-08 + ], + "min": [ + -1.1175870895385742e-08, + 5.4889824241399765e-08, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369060, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 381824, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566118072632889e-08, + 1.1175871783564162e-08, + -2.0023435354232788e-08, + 1 + ], + "min": [ + 3.4924582337225729e-08, + 7.8843224334793245e-16, + -2.0954757928848267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 218644, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369108, + "componentType": 5126, + "count": 43, + "max": [ + 5.2154064178466797e-08, + 0.068187065422534943, + 2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.068187050521373749, + -2.4214386940002441e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218816, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369624, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 218848, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 382432, + "componentType": 5126, + "count": 43, + "max": [ + 0.21749988198280334, + -0.06897987425327301, + -0.0029058454092592001, + 0.97361552715301514 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.0030575799755752087, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 369720, + "componentType": 5126, + "count": 38, + "max": [ + 0.023247243836522102, + 0.34059709310531616, + -0.015326393768191338 + ], + "min": [ + 0.023247215896844864, + 0.3405967652797699, + -0.015326423570513725 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219172, + "componentType": 5126, + "count": 34, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 370176, + "componentType": 5126, + "count": 34, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.99999940395355225, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219308, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 383120, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811863124370575, + -0.1316990852355957, + -0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811867594718933, + -0.13169914484024048, + -0.16719603538513184, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 370584, + "componentType": 5126, + "count": 38, + "max": [ + 4.71482053399086e-08, + 7.4767740443348885e-08, + 9.8283635452389717e-08 + ], + "min": [ + -1.1484371498227119e-07, + -6.5308995544910431e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219612, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371040, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 383728, + "componentType": 5126, + "count": 38, + "max": [ + 1.6763804566721774e-08, + -5.5879358917820809e-09, + 1.4901161193847656e-08, + 1 + ], + "min": [ + -7.4505805969238281e-09, + -7.4505814851022478e-09, + -6.5192580223083496e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 219780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371088, + "componentType": 5126, + "count": 38, + "max": [ + 4.691537469625473e-08, + 0.031801041215658188, + 1.6631020116619766e-08 + ], + "min": [ + -1.3387762010097504e-09, + 0.031800851225852966, + -1.4128181646810845e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219932, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371544, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 219956, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 384336, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024156868457794, + -0.10080225765705109, + -0.057818204164505005, + 0.9817960262298584 + ], + "min": [ + 0.15024153888225555, + -0.10080227255821228, + -0.057818204164505005, + 0.9817960262298584 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220108, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 371616, + "componentType": 5126, + "count": 38, + "max": [ + 4.2840838432312012e-08, + 1.2083910405635834e-07, + -1.9850267563015223e-07 + ], + "min": [ + -4.6566128730773926e-09, + -1.8719583749771118e-07, + -3.5912671592086554e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220260, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 384944, + "componentType": 5126, + "count": 38, + "max": [ + -8.2654878497123718e-09, + -2.0256267774243497e-08, + -1.6058038454502821e-08, + 1 + ], + "min": [ + -8.6729423642850634e-09, + -2.0721927285194397e-08, + -1.6138072211901999e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220428, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372120, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.044816639274358749, + 4.71482053399086e-08 + ], + "min": [ + -2.3283064365386963e-09, + 0.044816464185714722, + -5.7392753660678864e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220580, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372576, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 385552, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152385652065277, + -0.05260106548666954, + -0.024043366312980652, + 0.99564236402511597 + ], + "min": [ + 0.073152370750904083, + -0.052601072937250137, + -0.024043368175625801, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 220764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 372672, + "componentType": 5126, + "count": 38, + "max": [ + -1.0058283805847168e-07, + 0.022408422082662582, + 3.4691765904426575e-08 + ], + "min": [ + -1.0244548320770264e-07, + 0.022408256307244301, + -1.0710209608078003e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220916, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373128, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 220932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 386160, + "componentType": 5126, + "count": 38, + "max": [ + -6.2072638229437871e-07, + 9.5181150072676246e-07, + -5.2154057073039439e-08, + 1 + ], + "min": [ + -6.2258897060019081e-07, + 9.4901747615949716e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373176, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069797426462173462, + -1.1082738637924194e-07 + ], + "min": [ + -1.6763806343078613e-08, + 0.069797202944755554, + -2.5285407900810242e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221236, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373632, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 1.0000004768371582 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 386768, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130194544792175, + -0.10888326913118362, + 0.021744642406702042, + 0.95317405462265015 + ], + "min": [ + 0.28130194544792175, + -0.10888326913118362, + 0.021744638681411743, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 373728, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-08, + 1.1641533292916506e-09, + 5.5879354476928711e-08 + ], + "min": [ + 5.5879354476928711e-08, + -1.8812716007232666e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221572, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221604, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 387376, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566139388914962e-08, + -4.842878098543224e-08, + -2.4214388716359281e-08, + 1 + ], + "min": [ + 4.1909530068551248e-08, + -5.2154078389321512e-08, + -3.9115555239277455e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 221756, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374280, + "componentType": 5126, + "count": 42, + "max": [ + 1.862645149230957e-08, + 0.069797426462173462, + -1.1082738637924194e-07 + ], + "min": [ + -1.6763806343078613e-08, + 0.069797202944755554, + -2.5285407900810242e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221924, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374784, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 221972, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 387984, + "componentType": 5126, + "count": 42, + "max": [ + 0.28130325675010681, + -0.10888498276472092, + 0.02174454927444458, + 0.95317399501800537 + ], + "min": [ + 0.28130078315734863, + -0.1088913306593895, + 0.02172304131090641, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 374928, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954458475112915, + 0.33536893129348755, + -0.0064071808010339737 + ], + "min": [ + 0.034954432398080826, + 0.335368812084198, + -0.0064071919769048691 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222292, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375384, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1, + 1.0000003576278687 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 388656, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + -0.16701884567737579, + -0.22579605877399445, + 0.94418638944625854 + ], + "min": [ + -0.17214229702949524, + -0.16701890528202057, + -0.22579607367515564, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375480, + "componentType": 5126, + "count": 38, + "max": [ + 1.2665987014770508e-07, + 1.3224780559539795e-07, + 8.5681676864624023e-08 + ], + "min": [ + 4.6566128730773926e-08, + 9.6391886472702026e-08, + 6.1467289924621582e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222628, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 375936, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 389264, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901164746561335e-08, + -1.8626455933201669e-09, + 4.097820749393577e-08, + 1 + ], + "min": [ + 7.4505841496375069e-09, + -6.5192589104867693e-09, + 2.2351748896198842e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 222812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376032, + "componentType": 5126, + "count": 38, + "max": [ + 6.1467289924621582e-08, + 0.022592440247535706, + 4.5634806156158447e-08 + ], + "min": [ + -1.6763806343078613e-08, + 0.022592190653085709, + 1.2107193470001221e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222964, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376488, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1.0000004768371582, + 1 + ], + "min": [ + 0.99999988079071045, + 1.0000004768371582, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 222996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 389872, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399168342351913, + -0.028591925278306007, + 0.99515920877456665 + ], + "min": [ + 0.082881748676300049, + -0.044399172067642212, + -0.028591945767402649, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 376584, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 9.9651515483856201e-08, + 1.7927959561347961e-08 + ], + "min": [ + -1.2107193470001221e-08, + -1.4901161193847656e-07, + -9.7788870334625244e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223300, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377040, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223316, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 390480, + "componentType": 5126, + "count": 38, + "max": [ + -9.7788870334625244e-09, + 6.6356737882244943e-09, + 1.8626450382086546e-09, + 1 + ], + "min": [ + -9.7788888098193638e-09, + -8.149072527885437e-10, + -2.0954757928848267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223468, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377088, + "componentType": 5126, + "count": 38, + "max": [ + 4.0046870708465576e-08, + 0.027876328676939011, + 1.8393620848655701e-08 + ], + "min": [ + 3.166496753692627e-08, + 0.027876287698745728, + -7.0314854383468628e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223620, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377544, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999982118606567, + 0.99999946355819702, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999934434890747, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 391088, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518151760101318, + -0.028988027945160866, + -0.020971927791833878, + 0.99849694967269897 + ], + "min": [ + 0.041518151760101318, + -0.028988031670451164, + -0.020971933379769325, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 223820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 377688, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351741790771484e-08, + 0.013938155956566334, + -1.287553459405899e-07 + ], + "min": [ + -2.3283064365386963e-08, + 0.013938115909695625, + -2.1001324057579041e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223972, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378144, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 223988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 391696, + "componentType": 5126, + "count": 38, + "max": [ + 5.5995769798755646e-08, + -1.3387762010097504e-07, + 5.6446882723548697e-08, + 1 + ], + "min": [ + 5.4889820688686086e-08, + -1.4319083163627511e-07, + 5.6243152357637882e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378192, + "componentType": 5126, + "count": 38, + "max": [ + 1.8160790205001831e-08, + 0.074802502989768982, + 7.2410330176353455e-08 + ], + "min": [ + -8.7078660726547241e-08, + 0.074802331626415253, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224292, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378648, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 392304, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + -0.17872515320777893, + 0.015338514000177383, + 0.91919606924057007 + ], + "min": [ + 0.3505719006061554, + -0.17872516810894012, + 0.015338463708758354, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224452, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 378672, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + -2.0954757928848267e-08, + 1.6763806343078613e-08 + ], + "min": [ + -4.7497451305389404e-08, + -1.9348226487636566e-07, + -2.1420419216156006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224604, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379128, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224620, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 392912, + "componentType": 5126, + "count": 38, + "max": [ + -3.9115551686563776e-08, + -2.2351740014414645e-08, + -2.2351741790771484e-08, + 1 + ], + "min": [ + -5.5879354476928711e-08, + -3.3527609133443548e-08, + -2.6077032089233398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 224772, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379176, + "componentType": 5126, + "count": 43, + "max": [ + 1.8160790205001831e-08, + 0.074802502989768982, + 7.2410330176353455e-08 + ], + "min": [ + -8.7078660726547241e-08, + 0.074802331626415253, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224944, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379692, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 0.99999958276748657, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 224960, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 393520, + "componentType": 5126, + "count": 43, + "max": [ + 0.35057201981544495, + -0.1787249892950058, + 0.015338686294853687, + 0.91919809579849243 + ], + "min": [ + 0.3505479097366333, + -0.17877218127250671, + 0.015214980579912663, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 379740, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579196721315384, + 0.32914412021636963, + 0.0039985207840800285 + ], + "min": [ + 0.044579189270734787, + 0.32914403080940247, + 0.0039984970353543758 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225284, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380196, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 394208, + "componentType": 5126, + "count": 38, + "max": [ + -0.13569992780685425, + -0.18749420344829559, + -0.27479094266891479, + 0.93323171138763428 + ], + "min": [ + -0.13569995760917664, + -0.18749421834945679, + -0.27479094266891479, + 0.93323171138763428 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380484, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-08, + 3.9709266275167465e-07, + 1.2200325727462769e-07 + ], + "min": [ + 4.6566128730773926e-09, + 2.9383227229118347e-07, + 1.0337680578231812e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225684, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380940, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 225700, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 394816, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 8.5914507508277893e-08, + -2.4214383387288763e-08, + 1 + ], + "min": [ + 1.5832483768463135e-08, + 7.8463926911354065e-08, + -2.6077030312876559e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 225852, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 380988, + "componentType": 5126, + "count": 38, + "max": [ + 2.2817403078079224e-08, + 0.25792235136032104, + -5.7741999626159668e-08 + ], + "min": [ + 4.6566128730773926e-10, + 0.25792220234870911, + -6.3329935073852539e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226004, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381444, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 395424, + "componentType": 5126, + "count": 38, + "max": [ + 0.068233758211135864, + 0.862018883228302, + 0.19106140732765198, + 0.46450307965278625 + ], + "min": [ + 0.068233713507652283, + 0.862018883228302, + 0.19106137752532959, + 0.46450307965278625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226172, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381492, + "componentType": 5126, + "count": 40, + "max": [ + 1.0244548320770264e-07, + 0.12896154820919037, + -1.1548399925231934e-07 + ], + "min": [ + 8.4750354290008545e-08, + 0.12896141409873962, + -1.601874828338623e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226332, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 381972, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 1.0000007152557373, + 1 + ], + "min": [ + 0.9999997615814209, + 1.0000004768371582, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226356, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 396032, + "componentType": 5126, + "count": 40, + "max": [ + -6.2189855043470743e-07, + 0.88032644987106323, + 1.1622662441368448e-06, + 0.47436851263046265 + ], + "min": [ + -1.418846863998624e-06, + 0.88032639026641846, + 5.295203209243482e-07, + 0.4743683934211731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382044, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.13927125930786133, + 1.5646219253540039e-07 + ], + "min": [ + -5.029141902923584e-08, + 0.13927124440670013, + 5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226668, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382500, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000025033950806, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000025033950806, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 396672, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531551241874695, + 0.090401411056518555, + -0.19322693347930908, + 0.94302970170974731 + ], + "min": [ + 0.25531527400016785, + 0.090401403605937958, + -0.19322702288627625, + 0.94302964210510254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 226844, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 382572, + "componentType": 5126, + "count": 37, + "max": [ + 0.044326554983854294, + -0.11071427166461945, + 0.071930237114429474 + ], + "min": [ + 0.044326547533273697, + -0.1107143834233284, + 0.071930132806301117 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 226992, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383016, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999994039535522, + 0.99999696016311646, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.9999966025352478, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227048, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 397280, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531521439552307, + -0.090401507914066315, + 0.19322693347930908, + 0.94302976131439209 + ], + "min": [ + -0.25531545281410217, + -0.090401515364646912, + 0.19322682917118073, + 0.94302964210510254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 227200, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383184, + "componentType": 5126, + "count": 39, + "max": [ + 1.1175870895385742e-07, + 4.0233135223388672e-07, + -2.3096799850463867e-07 + ], + "min": [ + 4.6566128730773926e-08, + 1.1175870895385742e-07, + -2.5331974029541016e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227356, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383652, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000013113021851, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000008344650269, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227404, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 397888, + "componentType": 5126, + "count": 39, + "max": [ + 5.858014446857851e-07, + 3.1013033208182605e-07, + -9.3132017653374533e-09, + 1 + ], + "min": [ + 3.5529927799871075e-07, + -6.7520858237912762e-07, + -1.8067647999941983e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 227560, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 383796, + "componentType": 5126, + "count": 65, + "max": [ + 5.5879354476928711e-08, + 0.27854284644126892, + 1.4901161193847656e-08 + ], + "min": [ + -9.1269612312316895e-08, + 0.27854281663894653, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227820, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 384576, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 227860, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 398512, + "componentType": 5126, + "count": 65, + "max": [ + 0.43454089760780334, + 0.090401515364646912, + -0.19322660565376282, + 0.94302982091903687 + ], + "min": [ + 0.25531500577926636, + 0.050930976867675781, + -0.20715935528278351, + 0.8750230073928833 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 228120, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 384696, + "componentType": 5126, + "count": 42, + "max": [ + 7.0780515670776367e-08, + 0.13927155733108521, + -1.1920928955078125e-07 + ], + "min": [ + -1.3038516044616699e-07, + 0.13927146792411804, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228288, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 385200, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228320, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 399552, + "componentType": 5126, + "count": 42, + "max": [ + 3.5390252151046298e-07, + -4.8540514399064705e-06, + 5.4389272463595262e-07, + 1 + ], + "min": [ + -6.4447777958775987e-07, + -4.8652277655492071e-06, + -5.2899105185133521e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 228488, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 385296, + "componentType": 5126, + "count": 64, + "max": [ + -0.027315571904182434, + 0.3344607949256897, + 0.019757352769374847 + ], + "min": [ + -0.027315765619277954, + 0.33446058630943298, + 0.019757268950343132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228744, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386064, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000007152557373 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 228776, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 400224, + "componentType": 5126, + "count": 64, + "max": [ + -0.23410739004611969, + 0.70804411172866821, + -0.34092059731483459, + 0.58119267225265503 + ], + "min": [ + -0.2405877411365509, + 0.70021218061447144, + -0.38839545845985413, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386160, + "componentType": 5126, + "count": 38, + "max": [ + 1.126900315284729e-07, + 7.2643160820007324e-08, + 3.5253106034360826e-07 + ], + "min": [ + -4.6566128730773926e-08, + -4.0978193283081055e-08, + 1.1504744179546833e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229184, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386616, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229208, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 401248, + "componentType": 5126, + "count": 38, + "max": [ + 1.7826088383188221e-09, + 8.7609812737809989e-08, + 5.9604651880817983e-08, + 1 + ], + "min": [ + 1.4551704459464521e-11, + 8.2211052188085887e-08, + 5.5879354476928711e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229360, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 386688, + "componentType": 5126, + "count": 38, + "max": [ + 0.023130053654313087, + 0.26697880029678345, + 0.14965307712554932 + ], + "min": [ + 0.023130031302571297, + 0.26697814464569092, + 0.1496528685092926 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229512, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387144, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999940395355225, + 0.9999995231628418, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 401856, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586658477783203, + -0.39777597784996033, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777597784996033, + -0.29703003168106079, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 229688, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387216, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -2.6542693376541138e-08, + 5.0757080316543579e-08 + ], + "min": [ + -4.0978193283081055e-08, + -4.3306499719619751e-08, + 1.7229467630386353e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229840, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387672, + "componentType": 5126, + "count": 13, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 229892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 402464, + "componentType": 5126, + "count": 38, + "max": [ + 1.0477380740780973e-08, + 1.0477380740780973e-08, + 3.7834999022656746e-10, + 1 + ], + "min": [ + 1.0244547432591844e-08, + 8.8475653470254656e-09, + -3.4633558243513107e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 387828, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.028223361819982529, + 5.7741999626159668e-08 + ], + "min": [ + -4.8428773880004883e-08, + 0.028223231434822083, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230196, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 403072, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234394460916519, + 0.058250237256288528, + 0.03822680190205574, + 0.99122375249862671 + ], + "min": [ + 0.11234384775161743, + 0.058250222355127335, + 0.038226794451475143, + 0.99122369289398193 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388332, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + -9.406358003616333e-08, + 5.5879354476928711e-08 + ], + "min": [ + -5.5879354476928711e-08, + -1.0617077350616455e-07, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230516, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388788, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 403680, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + -5.5879358917820809e-09, + -2.7939681679356454e-09, + 1 + ], + "min": [ + -1.3038516932795119e-08, + -1.1175871783564162e-08, + -1.0244549208948683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 230684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 388836, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.045039951801300049, + 6.5192580223083496e-08 + ], + "min": [ + -4.0978193283081055e-08, + 0.045039821416139603, + 5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230836, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389292, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 230868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 404288, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882982790470123, + 0.038419175893068314, + 9.6834897703956813e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882885932922363, + 0.03841916099190712, + 9.6816547738853842e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231020, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389388, + "componentType": 5126, + "count": 38, + "max": [ + -1.5646219253540039e-07, + 0.022520085796713829, + 1.2852251529693604e-07 + ], + "min": [ + -2.123415470123291e-07, + 0.022519957274198532, + 1.2107193470001221e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231172, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389844, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231196, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 404896, + "componentType": 5126, + "count": 38, + "max": [ + 6.370246410369873e-07, + 9.5181161441360018e-07, + -1.899897910107029e-07, + 1 + ], + "min": [ + 6.3609331846237183e-07, + 9.3877309836898348e-07, + -2.0116567611694336e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 389916, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626159965991974, + 8.1956386566162109e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.069626130163669586, + -5.029141902923584e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231500, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390372, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999958276748657, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 405504, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803962528705597, + 0.038298372179269791, + 0.044083680957555771, + 0.98228907585144043 + ], + "min": [ + 0.17803952097892761, + 0.038298349827528, + 0.044083677232265472, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390468, + "componentType": 5126, + "count": 38, + "max": [ + 1.8998980522155762e-07, + -3.1141100809151112e-09, + 9.6857547760009766e-08 + ], + "min": [ + -7.4505805969238281e-09, + -2.8300564736127853e-07, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231836, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390924, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 231844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 406112, + "componentType": 5126, + "count": 38, + "max": [ + 4.1909506975912336e-09, + -3.1664960431498912e-08, + -7.1129747425402456e-08, + 1 + ], + "min": [ + -3.841705176199639e-09, + -4.8428759669150168e-08, + -7.3574469183768088e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 231996, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 390948, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.033446475863456726, + 7.4505805969238281e-08 + ], + "min": [ + -4.8428773880004883e-08, + 0.033446416258811951, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232148, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391404, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 406720, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510293707251549, + -0.016420742496848106, + 0.038739167153835297, + 0.99888283014297485 + ], + "min": [ + 0.021510280668735504, + -0.016420777887105942, + 0.0387391597032547, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 232332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391500, + "componentType": 5126, + "count": 38, + "max": [ + 5.4016709327697754e-08, + -1.2252712622284889e-08, + 3.7252902984619141e-09 + ], + "min": [ + -1.3038516044616699e-08, + -1.9383151084184647e-07, + -7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 391956, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 407328, + "componentType": 5126, + "count": 38, + "max": [ + 2.3632310330867767e-08, + 2.4214385163645602e-08, + -5.2968980313039538e-09, + 1 + ], + "min": [ + 1.8393620848655701e-08, + 1.8626438169633275e-09, + -1.501757829203143e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 232652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392004, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.041744723916053772, + 7.4505805969238281e-09 + ], + "min": [ + -4.6566128730773926e-08, + 0.041744433343410492, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232804, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392460, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 232860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 407936, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518194973468781, + -0.0088785011321306229, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518193483352661, + -0.0088785188272595406, + 0.057382576167583466, + 0.98455232381820679 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 392628, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695128917694092e-07, + 0.02087240107357502, + 9.3132257461547852e-08 + ], + "min": [ + 1.4528632164001465e-07, + 0.020872339606285095, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233164, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393084, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 408544, + "componentType": 5126, + "count": 38, + "max": [ + -4.5634813261585805e-08, + -1.3038517820973539e-08, + 1.1175872671742582e-08, + 1 + ], + "min": [ + -4.7497461963530441e-08, + -1.4435502571075176e-08, + 1.1175872671742582e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393156, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899958550930023, + -0.0083237998187541962, + 0.023024166002869606 + ], + "min": [ + 0.0086899064481258392, + -0.0083241984248161316, + 0.023024147376418114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233492, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393612, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 409152, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956673257052898, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063956673257052898, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 233692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 393756, + "componentType": 5126, + "count": 38, + "max": [ + 1.1175870895385742e-07, + 5.9138983488082886e-08, + -3.2782554626464844e-07 + ], + "min": [ + 8.9406967163085938e-08, + -7.4505805969238281e-09, + -4.6566128730773926e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233844, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394212, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 233876, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 409760, + "componentType": 5126, + "count": 38, + "max": [ + 1.8626445941194447e-09, + 3.7252902984619141e-09, + 3.9115551686563776e-08, + 1 + ], + "min": [ + -1.3038516044616699e-08, + 3.4694456284646341e-17, + 3.3527609133443548e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394308, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.069626159965991974, + 8.1956386566162109e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.069626130163669586, + -5.029141902923584e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234180, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394764, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999970197677612, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999964237213135, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 410368, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083885848522186, + 0.98228931427001953 + ], + "min": [ + 0.17803847789764404, + 0.038296077400445938, + 0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 394908, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086899958550930023, + -0.0083237998187541962, + 0.023024166002869606 + ], + "min": [ + 0.0086899064481258392, + -0.0083241984248161316, + 0.023024147376418114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234532, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395364, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999964237213135, + 1, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 410976, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958549872040749, + -0.65798979997634888, + -0.26252904534339905, + 0.70575278997421265 + ], + "min": [ + 0.0063958517275750637, + -0.65798979997634888, + -0.26252913475036621, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 234716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395460, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073303505778312683, + 0.34354403614997864, + -0.021197754889726639 + ], + "min": [ + -0.0073303952813148499, + 0.34354394674301147, + -0.021197829395532608 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234868, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395916, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 234884, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 411584, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237329989671707, + 0.12725980579853058, + 0.96830403804779053 + ], + "min": [ + -0.18320611119270325, + 0.11237329989671707, + 0.12725980579853058, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 395964, + "componentType": 5126, + "count": 38, + "max": [ + -5.5879354476928711e-09, + 1.8300488591194153e-07, + 6.679329089820385e-08 + ], + "min": [ + -6.1001628637313843e-08, + 8.6612999439239502e-08, + 3.3061951398849487e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235188, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396420, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 412192, + "componentType": 5126, + "count": 38, + "max": [ + -5.8207649811237161e-10, + -9.5460581661654942e-09, + 1.053558751351602e-08, + 1 + ], + "min": [ + -1.2223611012274205e-09, + -9.7788888098193638e-09, + 1.6007108971649586e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396468, + "componentType": 5126, + "count": 38, + "max": [ + 6.891787052154541e-08, + 0.032196070998907089, + 5.2852556109428406e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.032196000218391418, + -4.4237822294235229e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396924, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 412800, + "componentType": 5126, + "count": 38, + "max": [ + 0.05647701770067215, + 0.045752882957458496, + 0.025043483823537827, + 0.99704056978225708 + ], + "min": [ + 0.056476905941963196, + 0.045752879232168198, + 0.025043481960892677, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 396972, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + -1.9557774066925049e-08, + 9.1269612312316895e-08 + ], + "min": [ + -1.4901161193847656e-08, + -8.754432201385498e-08, + 2.5844201445579529e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235828, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397428, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 235836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 413408, + "componentType": 5126, + "count": 38, + "max": [ + 4.6566139833004172e-10, + 3.6554411053657532e-08, + -2.0372683096070432e-08, + 1 + ], + "min": [ + 1.0810849588907106e-16, + 3.4342523491659449e-08, + -2.8288928533015678e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 235988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397452, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489096641540527e-08, + 0.04954046756029129, + 6.7055225372314453e-08 + ], + "min": [ + -1.3038516044616699e-08, + 0.049540463835000992, + -8.4750354290008545e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236140, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 397908, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000007152557373, + 0.99999988079071045, + 0.99999946355819702 + ], + "min": [ + 1.0000004768371582, + 0.99999988079071045, + 0.99999940395355225 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236172, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 414016, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846236884593964, + 0.085242271423339844, + 0.013570730574429035, + 0.98919981718063354 + ], + "min": [ + 0.11846225708723068, + 0.08524225652217865, + 0.013570702634751797, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398004, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175870895385742e-08, + 0.024770235642790794, + -4.9360096454620361e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.024770103394985199, + -1.4249235391616821e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236476, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398460, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 414624, + "componentType": 5126, + "count": 38, + "max": [ + -5.7928264141082764e-07, + -9.5833092927932739e-07, + 1.8626450071224099e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + -9.6578150987625122e-07, + 1.8440185556301003e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236644, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398508, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.068187199532985687, + 2.2351741790771484e-08 + ], + "min": [ + 4.8428773880004883e-08, + 0.068187020719051361, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236796, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 398964, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 236828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 415232, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749137341976166, + 0.06900671124458313, + 0.003025800222530961, + 0.97361516952514648 + ], + "min": [ + 0.21749132871627808, + 0.069006681442260742, + 0.0030257555190473795, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 236980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399060, + "componentType": 5126, + "count": 38, + "max": [ + 1.0058283805847168e-07, + 1.4936085790395737e-07, + 7.6368451118469238e-08 + ], + "min": [ + 9.3132257461547852e-08, + -2.9918737709522247e-08, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237132, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 415840, + "componentType": 5126, + "count": 38, + "max": [ + -6.2864291550113194e-09, + 2.2351743567128324e-08, + 1.5366824257512235e-08, + 1 + ], + "min": [ + -1.6996638763089322e-08, + 1.862645326866641e-08, + -7.9162436605884068e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 237316, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 399612, + "componentType": 5126, + "count": 59, + "max": [ + 5.9604644775390625e-08, + 0.068187199532985687, + 2.2351741790771484e-08 + ], + "min": [ + 4.8428773880004883e-08, + 0.068187020719051361, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237552, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400320, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999982118606567, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999958276748657, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 237616, + "componentType": 5126, + "count": 59, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 416448, + "componentType": 5126, + "count": 59, + "max": [ + 0.21750231087207794, + 0.069030478596687317, + 0.0031375305261462927, + 0.97361564636230469 + ], + "min": [ + 0.21748349070549011, + 0.068971209228038788, + 0.0028722158167511225, + 0.97361487150192261 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 237852, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400512, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247269913554192, + 0.34059673547744751, + -0.015326129272580147 + ], + "min": [ + -0.023247310891747475, + 0.3405965268611908, + -0.015326287597417831 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238004, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 400968, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999964237213135, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 417392, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811869084835052, + 0.13169917464256287, + 0.1671958714723587, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169915974140167, + 0.16719581186771393, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401112, + "componentType": 5126, + "count": 38, + "max": [ + -2.2060703486204147e-08, + 3.0675437301397324e-07, + -1.6996636986732483e-08 + ], + "min": [ + -8.8766682893037796e-08, + 1.3812677934765816e-07, + -6.9005182012915611e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401568, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 418000, + "componentType": 5126, + "count": 38, + "max": [ + -1.6763801014008095e-08, + 1.8626444830971423e-09, + -3.7252889661942845e-09, + 1 + ], + "min": [ + -2.4214379834575084e-08, + -5.5879341154252415e-09, + -6.5192566900407201e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 401616, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.031801052391529083, + 1.7423190001863986e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.0318010114133358, + 8.9912646217271686e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238676, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402072, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 418608, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024083852767944, + 0.10080226510763168, + 0.057818274945020676, + 0.98179614543914795 + ], + "min": [ + 0.15024082362651825, + 0.10080224275588989, + 0.05781826376914978, + 0.98179614543914795 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 238844, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402120, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-09, + 1.2107193470001221e-07, + -1.7505954019725323e-08 + ], + "min": [ + -3.4924596548080444e-08, + 8.0093741416931152e-08, + -6.9710949901491404e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 238996, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402576, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 419216, + "componentType": 5126, + "count": 38, + "max": [ + 5.8207656472575309e-09, + -1.4319084584712982e-08, + -6.8393992691540006e-09, + 1 + ], + "min": [ + 5.7043494372521764e-09, + -1.4784744095663882e-08, + -1.4646501789172817e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 402624, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 0.044816792011260986, + 5.7043507695198059e-08 + ], + "min": [ + 2.6542693376541138e-08, + 0.044816747307777405, + -8.754432201385498e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403080, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 419824, + "componentType": 5126, + "count": 38, + "max": [ + 0.07315170019865036, + 0.05260106548666954, + 0.024043399840593338, + 0.99564242362976074 + ], + "min": [ + 0.07315170019865036, + 0.052601061761379242, + 0.024043397977948189, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403176, + "componentType": 5126, + "count": 38, + "max": [ + 6.2398612499237061e-08, + 0.02240845188498497, + 2.1362211555242538e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.022408410906791687, + 6.8335793912410736e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239652, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403632, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 420432, + "componentType": 5126, + "count": 38, + "max": [ + -6.4913183450698853e-07, + -9.5460563898086548e-07, + 1.9790608263292597e-08, + 1 + ], + "min": [ + -6.5099447965621948e-07, + -9.6205621957778931e-07, + 1.862645326866641e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 239836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 403728, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.069797471165657043, + 1.1362135410308838e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.069797337055206299, + -4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 239988, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404184, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.9999995231628418, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240004, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 421040, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130212426185608, + 0.10888323932886124, + -0.021744627505540848, + 0.95317405462265015 + ], + "min": [ + 0.28130203485488892, + 0.10888321697711945, + -0.021744720637798309, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404232, + "componentType": 5126, + "count": 38, + "max": [ + 2.2204460492503131e-16, + 5.8207660913467407e-09, + 1.0244548320770264e-08 + ], + "min": [ + -6.891787052154541e-08, + -1.3317912817001343e-07, + -1.2852251529693604e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240308, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404688, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 421648, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132301870468837e-10, + 3.3527616238870905e-08, + -1.3038516932795119e-08, + 1 + ], + "min": [ + -9.3132163092590758e-10, + 2.2351745343485163e-08, + -1.3038518709151958e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240476, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 404736, + "componentType": 5126, + "count": 41, + "max": [ + 3.7252902984619141e-09, + 0.069797471165657043, + 1.1362135410308838e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.069797337055206299, + -4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240640, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405228, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240656, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 422256, + "componentType": 5126, + "count": 41, + "max": [ + 0.28130322694778442, + 0.10890328139066696, + -0.021682480350136757, + 0.95317494869232178 + ], + "min": [ + 0.28129613399505615, + 0.10888496786355972, + -0.021744497120380402, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 240820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405276, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954480826854706, + 0.33536887168884277, + -0.0064070913940668106 + ], + "min": [ + -0.034954562783241272, + 0.33536869287490845, + -0.0064071714878082275 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 240972, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405732, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241004, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 422912, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + 0.16701881587505341, + 0.2257961630821228, + 0.94418638944625854 + ], + "min": [ + -0.17214243113994598, + 0.16701869666576385, + 0.22579601407051086, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 405828, + "componentType": 5126, + "count": 38, + "max": [ + 1.0617077350616455e-07, + 2.905726432800293e-07, + 1.7229467630386353e-07 + ], + "min": [ + 2.4214386940002441e-08, + 2.8498470783233643e-07, + 5.7741999626159668e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241308, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406284, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241324, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 423520, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + -6.5192580223083496e-09, + 9.3132257461547852e-09, + 1 + ], + "min": [ + -1.1175871783564162e-08, + -2.514570951461792e-08, + 7.4505805969238281e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406332, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.022592460736632347, + -5.1222741603851318e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.022592291235923767, + -7.2643160820007324e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241628, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406788, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 424128, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881815731525421, + 0.044399186968803406, + 0.028591971844434738, + 0.99515920877456665 + ], + "min": [ + 0.08288179337978363, + 0.044399172067642212, + 0.02859196625649929, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 241828, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 406932, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + -1.3969836398786128e-09, + -1.2759119272232056e-07 + ], + "min": [ + -2.9802322387695312e-08, + -1.6530975699424744e-07, + -1.6042031347751617e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 241980, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407388, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 424736, + "componentType": 5126, + "count": 38, + "max": [ + -1.1641534847228741e-08, + 1.7113055861273097e-08, + -2.79396927815867e-09, + 1 + ], + "min": [ + -1.5366827810225914e-08, + 1.5366826033869074e-08, + -8.8475653470254656e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242164, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407484, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-09, + 0.027876481413841248, + 7.8696757555007935e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.027876369655132294, + 5.1222741603851318e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 407940, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242348, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 425344, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518259793519974, + 0.028988035395741463, + 0.020971888676285744, + 0.99849694967269897 + ], + "min": [ + 0.041518256068229675, + 0.028988024219870567, + 0.020971884950995445, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408036, + "componentType": 5126, + "count": 38, + "max": [ + -1.0244548320770264e-08, + 0.013938326388597488, + 1.0244548320770264e-07 + ], + "min": [ + -3.166496753692627e-08, + 0.013938215561211109, + 2.8754584491252899e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242652, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408492, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242668, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 425952, + "componentType": 5126, + "count": 38, + "max": [ + -3.7136491215505885e-08, + 7.2177499532699585e-08, + -2.565502654761076e-08, + 1 + ], + "min": [ + -3.8009606129207896e-08, + 6.7753717303276062e-08, + -3.2858221032938673e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 242820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408540, + "componentType": 5126, + "count": 38, + "max": [ + 2.0954757928848267e-08, + 0.074802428483963013, + 8.5448846220970154e-08 + ], + "min": [ + -1.1734664440155029e-07, + 0.074802227318286896, + -3.9348378777503967e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 242972, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 408996, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 426560, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057207942008972, + 0.17872513830661774, + -0.015338522382080555, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872509360313416, + -0.01533855777233839, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409188, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077032089233398e-08, + 3.5157427191734314e-08, + 5.7276338338851929e-08 + ], + "min": [ + -9.2200934886932373e-08, + -1.3154931366443634e-07, + -1.0244548320770264e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243340, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409644, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 427168, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645371275562e-09, + -1.4901162970204496e-08, + -1.862645371275562e-09, + 1 + ], + "min": [ + -5.5879363358712908e-09, + -1.862645326866641e-08, + -1.8626460374093767e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243508, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 409692, + "componentType": 5126, + "count": 44, + "max": [ + 2.0954757928848267e-08, + 0.074802428483963013, + 8.5448846220970154e-08 + ], + "min": [ + -1.1734664440155029e-07, + 0.074802227318286896, + -3.9348378777503967e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243684, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410220, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1 + ], + "min": [ + 1, + 1.0000002384185791, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 243736, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 427776, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17877109348773956, + -0.015217456966638565, + 0.91919809579849243 + ], + "min": [ + 0.35054841637611389, + 0.17872488498687744, + -0.015338591299951077, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 243912, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410376, + "componentType": 5126, + "count": 38, + "max": [ + -0.044579215347766876, + 0.32914406061172485, + 0.0039986670017242432 + ], + "min": [ + -0.044579315930604935, + 0.32914403080940247, + 0.0039984923787415028 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244064, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410832, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244116, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 428480, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570015132427216, + 0.18749429285526276, + 0.27479094266891479, + 0.9332316517829895 + ], + "min": [ + -0.13570016622543335, + 0.1874941885471344, + 0.27479094266891479, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244268, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 410988, + "componentType": 5126, + "count": 38, + "max": [ + -4.9360096454620361e-08, + 1.491280272603035e-07, + 2.0395964384078979e-07 + ], + "min": [ + -1.0710209608078003e-07, + 7.1129761636257172e-08, + 1.3317912817001343e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244420, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411444, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 429088, + "componentType": 5126, + "count": 38, + "max": [ + 2.4214386940002441e-08, + -3.8417063308315846e-08, + -5.8673318648061468e-08, + 1 + ], + "min": [ + 1.5832481992106295e-08, + -4.0512539101200673e-08, + -7.3574483394622803e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411492, + "componentType": 5126, + "count": 38, + "max": [ + 7.7765434980392456e-08, + 0.25792229175567627, + -3.7252902984619141e-09 + ], + "min": [ + 1.1641532182693481e-08, + 0.25792190432548523, + -1.2479722499847412e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244740, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411948, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999988079071045 + ], + "min": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 244748, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 429696, + "componentType": 5126, + "count": 38, + "max": [ + -0.068233758211135864, + 0.86201894283294678, + 0.19106145203113556, + -0.46450299024581909 + ], + "min": [ + -0.068233810365200043, + 0.862018883228302, + 0.19106140732765198, + -0.46450310945510864 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 244900, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 411972, + "componentType": 5126, + "count": 40, + "max": [ + 1.5087425708770752e-07, + 0.12896019220352173, + -1.8998980522155762e-07 + ], + "min": [ + 7.2643160820007324e-08, + 0.12896011769771576, + -1.9371509552001953e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245060, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 412452, + "componentType": 5126, + "count": 37, + "max": [ + 0.99999964237213135, + 1.0000110864639282, + 0.99999958276748657 + ], + "min": [ + 0.99999946355819702, + 1.0000090599060059, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245208, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 430304, + "componentType": 5126, + "count": 40, + "max": [ + -3.4749834298963833e-07, + 0.88032656908035278, + 4.7119507939896721e-07, + -0.47436809539794922 + ], + "min": [ + -7.2640835924175917e-07, + 0.88032656908035278, + -1.8654705513654335e-07, + -0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 412896, + "componentType": 5126, + "count": 38, + "max": [ + 2.3283064365386963e-07, + 0.13927160203456879, + 1.7136335372924805e-07 + ], + "min": [ + 1.6391277313232422e-07, + 0.13927140831947327, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245520, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413352, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999761581420898, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 0.99999761581420898, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 430944, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531494617462158, + -0.090401239693164825, + 0.19322668015956879, + 0.94302994012832642 + ], + "min": [ + 0.25531488656997681, + -0.09040127694606781, + 0.19322650134563446, + 0.94302988052368164 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245688, + "componentType": 5126, + "count": 30, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413400, + "componentType": 5126, + "count": 30, + "max": [ + -0.044326562434434891, + -0.11071485280990601, + 0.071930155158042908 + ], + "min": [ + -0.044326595962047577, + -0.1107148677110672, + 0.071930095553398132 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245808, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413760, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000011920928955, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.000001072883606, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 245824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 431552, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531491637229919, + 0.090401239693164825, + -0.19322660565376282, + 0.94302988052368164 + ], + "min": [ + -0.25531494617462158, + 0.090401194989681244, + -0.19322676956653595, + 0.94302988052368164 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 245976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 413808, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-07, + -5.0663948059082031e-07, + -2.4586915969848633e-07 + ], + "min": [ + 2.1792948246002197e-07, + -5.7369470596313477e-07, + -2.8684735298156738e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246128, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 414264, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999719858169556, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999701976776123, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246160, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 432160, + "componentType": 5126, + "count": 38, + "max": [ + 3.9953800978764775e-07, + 2.2258610954395408e-07, + 7.3388338250879315e-07, + 1 + ], + "min": [ + 2.7753455356105405e-07, + -3.6694112282020797e-07, + 4.6566194100705616e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 246312, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 414360, + "componentType": 5126, + "count": 65, + "max": [ + -2.7939677238464355e-08, + 0.27854296565055847, + 1.0430812835693359e-07 + ], + "min": [ + -1.8998980522155762e-07, + 0.27854284644126892, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246572, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415140, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 246604, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 432768, + "componentType": 5126, + "count": 65, + "max": [ + 0.43454083800315857, + -0.050930984318256378, + 0.20715934038162231, + 0.94302982091903687 + ], + "min": [ + 0.25531506538391113, + -0.090401493012905121, + 0.19322662055492401, + 0.8750230073928833 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 246864, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415236, + "componentType": 5126, + "count": 40, + "max": [ + 2.4959444999694824e-07, + 0.13927124440670013, + -2.9802322387695312e-08 + ], + "min": [ + 1.0803341865539551e-07, + 0.13927115499973297, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247024, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 415716, + "componentType": 5126, + "count": 32, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1, + 0.9999992847442627, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247152, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 433808, + "componentType": 5126, + "count": 40, + "max": [ + 3.7253329310260597e-07, + 1.067295488610398e-05, + -7.2270603368451702e-07, + 1 + ], + "min": [ + -9.164216407953063e-07, + 9.4324341262108646e-06, + -8.4564123881136766e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 247312, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416100, + "componentType": 5126, + "count": 64, + "max": [ + 0.027315765619277954, + 0.33446067571640015, + 0.019757963716983795 + ], + "min": [ + 0.027315422892570496, + 0.33446061611175537, + 0.019757714122533798 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247568, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416868, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247576, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 434448, + "componentType": 5126, + "count": 64, + "max": [ + -0.23410725593566895, + -0.70021235942840576, + 0.38839539885520935, + 0.58119255304336548 + ], + "min": [ + -0.24058759212493896, + -0.70804405212402344, + 0.34092062711715698, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 247832, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 416892, + "componentType": 5126, + "count": 38, + "max": [ + 1.3969838619232178e-08, + 5.7741999626159668e-08, + 3.3896321838255972e-07 + ], + "min": [ + -6.7986547946929932e-08, + 2.6077032089233398e-08, + 3.3874039218062535e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 247984, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417348, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 435472, + "componentType": 5126, + "count": 38, + "max": [ + 2.6193440749722186e-09, + -3.9224687498062849e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -9.1749816633068804e-09, + -4.4834454371311949e-08, + 5.9604641222676946e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248152, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417396, + "componentType": 5126, + "count": 37, + "max": [ + -0.023130092769861221, + 0.26697894930839539, + 0.14965295791625977 + ], + "min": [ + -0.023130100220441818, + 0.2669786810874939, + 0.14965271949768066 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248300, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417840, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.9999995231628418, + 0.9999997615814209 + ], + "min": [ + 0.99999958276748657, + 0.9999995231628418, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 436080, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586670398712158, + 0.39777570962905884, + 0.29703018069267273, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777570962905884, + 0.29703018069267273, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248484, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 417936, + "componentType": 5126, + "count": 38, + "max": [ + 1.7389822914992692e-10, + 0.30786654353141785, + -1.3369925966344454e-07 + ], + "min": [ + -4.0167478232433496e-09, + 0.30786648392677307, + -3.572166917820141e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248636, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 418392, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 248724, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 436688, + "componentType": 5126, + "count": 38, + "max": [ + -0.058453772217035294, + -4.1669062511573429e-07, + 2.4425312972198299e-07, + 0.99829012155532837 + ], + "min": [ + -0.058453813195228577, + -4.1670494965728722e-07, + 2.4424954858659476e-07, + 0.99829012155532837 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 248876, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 418656, + "componentType": 5126, + "count": 65, + "max": [ + -6.9849193096160889e-10, + 0.77674126625061035, + -2.9947841539978981e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674102783203125, + -5.9386366046965122e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249136, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 419436, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249200, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 437296, + "componentType": 5126, + "count": 65, + "max": [ + 0.30256438255310059, + 0.013952740468084812, + 0.00075332552660256624, + 0.96677535772323608 + ], + "min": [ + 0.25562748312950134, + -4.2335560834771968e-08, + -5.1168099162168801e-06, + 0.95302653312683105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 249460, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 419628, + "componentType": 5126, + "count": 65, + "max": [ + -6.9849193096160889e-10, + 0.77674126625061035, + -2.9947841539978981e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674102783203125, + -5.9386366046965122e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249720, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 420408, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 249784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 438336, + "componentType": 5126, + "count": 65, + "max": [ + 0.30256438255310059, + 0.013952740468084812, + 0.00075332552660256624, + 0.96677535772323608 + ], + "min": [ + 0.25562748312950134, + -4.2335560834771968e-08, + -5.1168099162168801e-06, + 0.95302653312683105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250044, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 420600, + "componentType": 5126, + "count": 65, + "max": [ + 5.3290705182007514e-15, + 0.4050619900226593, + 4.4703490686970326e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.40506196022033691, + 2.2351748896198842e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250304, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 421380, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250376, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 439376, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627878874540329, + 1.8112152133653581e-07, + -5.9790863815578632e-08, + 0.99943441152572632 + ], + "min": [ + -0.20865336060523987, + -0.013813632540404797, + -0.0021039647981524467, + 0.97788983583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250636, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 421596, + "componentType": 5126, + "count": 38, + "max": [ + 2.0360914732009405e-08, + 9.2646558869091677e-08, + -5.2843375897282385e-08 + ], + "min": [ + 1.0157151564271771e-08, + 8.6520259401368094e-08, + -6.5642211666272487e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250788, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422052, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 250796, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 440416, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527619791584584e-08, + 1.8663630640958218e-08, + 9.8426156114328478e-11, + 1 + ], + "min": [ + 2.9802322387695312e-08, + 1.8663619982817181e-08, + 9.8424379757489078e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 250948, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422076, + "componentType": 5126, + "count": 38, + "max": [ + 1.7185811884701252e-08, + 0.31343469023704529, + -2.3952452465891838e-08 + ], + "min": [ + -2.1682353690266609e-09, + 0.31343454122543335, + -5.3827534429728985e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251100, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422532, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251132, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 441024, + "componentType": 5126, + "count": 38, + "max": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465383042581379 + ], + "min": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.1192685142159462, + 0.00012465371401049197 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251284, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 422628, + "componentType": 5126, + "count": 38, + "max": [ + 2.8740032576024532e-08, + 1.280568540096283e-08, + -5.2823452278971672e-08 + ], + "min": [ + 7.4724084697663784e-09, + -1.3038516044616699e-07, + -8.2742189988493919e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251436, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423084, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 441632, + "componentType": 5126, + "count": 38, + "max": [ + -5.0456076650107207e-08, + 7.1329829154365143e-08, + 1.5272685338629799e-09, + 1 + ], + "min": [ + -5.2301267317034217e-08, + 7.1315277239136776e-08, + 1.4165375539221259e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423108, + "componentType": 5126, + "count": 38, + "max": [ + 2.9802322387695312e-08, + 0.4787544310092926, + 1.3917451724410057e-07 + ], + "min": [ + -3.7252902984619141e-08, + 0.47875425219535828, + 1.023290678858757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251748, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423564, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 251764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 442240, + "componentType": 5126, + "count": 38, + "max": [ + -0.32932701706886292, + 0.02128932997584343, + -0.064436882734298706, + 0.94177407026290894 + ], + "min": [ + -0.32932701706886292, + 0.021289320662617683, + -0.064436890184879303, + 0.94177407026290894 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 251916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 423612, + "componentType": 5126, + "count": 38, + "max": [ + 1.0430812835693359e-07, + 0.23937705159187317, + 3.3987453207373619e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.23937678337097168, + 3.1763920560479164e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252068, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424068, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 442848, + "componentType": 5126, + "count": 38, + "max": [ + -4.3532273252822051e-07, + 0.022599978372454643, + 2.6083705506607657e-07, + 0.99974459409713745 + ], + "min": [ + -5.6582490515211248e-07, + 0.02259993739426136, + 1.2669224247474631e-07, + 0.99974459409713745 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424164, + "componentType": 5126, + "count": 38, + "max": [ + 9.6857547760009766e-08, + 0.21278376877307892, + 1.4901161193847656e-08 + ], + "min": [ + 5.9604644775390625e-08, + 0.21278360486030579, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252404, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424620, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252436, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 443456, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897867560386658, + 0.18448342382907867, + 0.7880139946937561, + 0.51688575744628906 + ], + "min": [ + -0.27897873520851135, + 0.18448334932327271, + 0.78801387548446655, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252588, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 424716, + "componentType": 5126, + "count": 38, + "max": [ + -0.15143656730651855, + 0.084600932896137238, + -0.12323399633169174 + ], + "min": [ + -0.15143664181232452, + 0.084600746631622314, + -0.12323404103517532 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252740, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425172, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 252812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 444064, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897867560386658, + -0.18448333442211151, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448354303836823, + -0.7880139946937561, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 252964, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425388, + "componentType": 5126, + "count": 47, + "max": [ + 2.4214386940002441e-07, + -1.5646219253540039e-07, + 3.7689460441470146e-07 + ], + "min": [ + 5.2154064178466797e-08, + -4.246830940246582e-07, + 3.5390257835388184e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253152, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 425952, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253184, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 444672, + "componentType": 5126, + "count": 47, + "max": [ + -7.0649539551936869e-09, + 2.1549642497120658e-06, + 2.6449555434737704e-07, + 1 + ], + "min": [ + -3.7180150513904664e-08, + -1.7452839529141784e-06, + 1.5832483768463135e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 253372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426048, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.42556768655776978, + 1.0430812835693359e-07 + ], + "min": [ + -4.4703483581542969e-08, + 0.42556750774383545, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253524, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426504, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 445424, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897855639457703, + 0.18448294699192047, + 0.78801411390304565, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 253692, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 426552, + "componentType": 5126, + "count": 47, + "max": [ + 9.6857547760009766e-08, + 0.21278421580791473, + 1.6391277313232422e-07 + ], + "min": [ + 7.4505805969238281e-08, + 0.21278402209281921, + 1.1102230246251565e-16 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253880, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427116, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 253944, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 446032, + "componentType": 5126, + "count": 47, + "max": [ + -1.5087425708770752e-07, + 2.2053718566894531e-06, + -4.0978196835794733e-08, + 1 + ], + "min": [ + -1.6205009956138383e-07, + -4.8950314521789551e-06, + -2.8312197741797718e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254132, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427308, + "componentType": 5126, + "count": 12, + "max": [ + 0.21592013537883759, + 0.36957696080207825, + -0.15007568895816803 + ], + "min": [ + 0.21592012047767639, + 0.36957690119743347, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254180, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427452, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254196, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 446784, + "componentType": 5126, + "count": 37, + "max": [ + 0.56482309103012085, + 0.75361937284469604, + -0.15842741727828979, + -0.2965356707572937 + ], + "min": [ + 0.56482309103012085, + 0.75361931324005127, + -0.15842749178409576, + -0.29653578996658325 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254344, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427500, + "componentType": 5126, + "count": 38, + "max": [ + -5.6102493317666813e-08, + 7.4201338406965078e-08, + 2.5654003366071265e-08 + ], + "min": [ + -6.5870665366674075e-08, + 4.5453020902641583e-08, + -2.1839838382220478e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254496, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427956, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 447376, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901171851988693e-08, + -9.4372563097522288e-09, + -3.5531397268862008e-10, + 1 + ], + "min": [ + 1.4901166522918174e-08, + -9.4372722969637834e-09, + -3.5531397268862008e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254656, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 427980, + "componentType": 5126, + "count": 38, + "max": [ + 7.9598976299166679e-09, + 0.31343460083007812, + 2.7386704459786415e-08 + ], + "min": [ + -4.0854502003639936e-08, + 0.31343448162078857, + 9.7352312877774239e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254808, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428436, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 254824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 447984, + "componentType": 5126, + "count": 38, + "max": [ + 0.0024187495000660419, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465371401049197 + ], + "min": [ + 0.0024187483359128237, + 0.9928591251373291, + -0.11926832795143127, + -0.00012465381587389857 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 254976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428484, + "componentType": 5126, + "count": 38, + "max": [ + 8.5412466432899237e-08, + 6.0303136706352234e-08, + 1.2513191904872656e-07 + ], + "min": [ + 4.3670297600328922e-08, + 6.0303136706352234e-08, + 1.0748044587671757e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255128, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428940, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255144, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 448592, + "componentType": 5126, + "count": 38, + "max": [ + -2.0641749642891227e-08, + -6.7200744524598122e-08, + -3.0881890378253729e-09, + 1 + ], + "min": [ + -2.2520055154018337e-08, + -6.7215296439826488e-08, + -3.1570834835292771e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 255296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 428988, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.47875434160232544, + -6.0943420976400375e-08 + ], + "min": [ + 7.4505805969238281e-09, + 0.47875434160232544, + -9.4238203018903732e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255448, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 429444, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 449200, + "componentType": 5126, + "count": 38, + "max": [ + -0.32932689785957336, + -0.021289337426424026, + 0.0644368976354599, + 0.94177407026290894 + ], + "min": [ + -0.32932698726654053, + -0.021289343014359474, + 0.064436890184879303, + 0.94177407026290894 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 255632, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 429540, + "componentType": 5126, + "count": 39, + "max": [ + 2.384185791015625e-07, + 0.23937755823135376, + -2.1141022443771362e-07 + ], + "min": [ + 1.3038516044616699e-07, + 0.23937751352787018, + -2.15193722397089e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255788, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430008, + "componentType": 5126, + "count": 24, + "max": [ + 0.99999982118606567, + 0.99999886751174927, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999827146530151, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 255884, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 449808, + "componentType": 5126, + "count": 39, + "max": [ + 6.0158851056257845e-07, + -0.022599635645747185, + 5.5521059039165266e-07, + 0.99974459409713745 + ], + "min": [ + -1.3745217302130186e-06, + -0.022599702700972557, + 4.0616063756715448e-07, + 0.99974459409713745 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256040, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430296, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.21278369426727295, + -2.9802322387695312e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.2127835750579834, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256192, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430752, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256200, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 450432, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897846698760986, + -0.1844828724861145, + -0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.27897849678993225, + -0.18448308110237122, + -0.78801417350769043, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 430776, + "componentType": 5126, + "count": 38, + "max": [ + 0.15143664181232452, + 0.084600925445556641, + -0.12323371320962906 + ], + "min": [ + 0.15143661201000214, + 0.084600754082202911, + -0.12323372066020966 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256504, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431232, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000003576278687, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 451040, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897849678993225, + 0.18448334932327271, + 0.78801423311233521, + 0.51688539981842041 + ], + "min": [ + 0.27897846698760986, + 0.18448328971862793, + 0.78801423311233521, + 0.51688539981842041 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 256704, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431376, + "componentType": 5126, + "count": 42, + "max": [ + 2.905726432800293e-07, + 6.4820051193237305e-07, + -2.0203879103064537e-07 + ], + "min": [ + 2.384185791015625e-07, + 6.4820051193237305e-07, + -3.1728995963931084e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256872, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 431880, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000002384185791, + 0.99999910593032837, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.99999880790710449, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 256920, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 451648, + "componentType": 5126, + "count": 42, + "max": [ + 1.0376390946476022e-06, + 9.8414602689445019e-08, + 2.3841869278840022e-07, + 1 + ], + "min": [ + 5.3620247797425691e-08, + -1.468768232371076e-06, + 9.3132300094111997e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432024, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.42556750774383545, + 2.9802322387695312e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.42556744813919067, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257240, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432480, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257272, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 452320, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897858619689941, + -0.18448284268379211, + -0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.2789786159992218, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257424, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 432576, + "componentType": 5126, + "count": 41, + "max": [ + 1.0430812835693359e-07, + 0.21278354525566101, + 1.1920928955078125e-07 + ], + "min": [ + 1.0430812835693359e-07, + 0.21278353035449982, + 1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257588, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433068, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999821186065674, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999797344207764, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257636, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 452928, + "componentType": 5126, + "count": 41, + "max": [ + -2.6263327868036868e-07, + 1.406297315043048e-06, + -5.6624469380039955e-07, + 1 + ], + "min": [ + -4.5821118987987575e-07, + -1.8626456821380089e-08, + -7.7486123473136104e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 257800, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433212, + "componentType": 5126, + "count": 12, + "max": [ + -0.21592001616954803, + 0.36957702040672302, + -0.15007562935352325 + ], + "min": [ + -0.21592004597187042, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257848, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433356, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 257864, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 453584, + "componentType": 5126, + "count": 37, + "max": [ + -0.56482309103012085, + 0.75361937284469604, + -0.15842759609222412, + 0.29653573036193848 + ], + "min": [ + -0.56482315063476562, + 0.75361931324005127, + -0.15842770040035248, + 0.29653564095497131 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 258012, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 433404, + "componentType": 5126, + "count": 65, + "max": [ + 5.3290705182007514e-15, + 0.4050619900226593, + 4.4703490686970326e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.40506196022033691, + 2.2351748896198842e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258272, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 434184, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258344, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 454176, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627878874540329, + 1.8112152133653581e-07, + -5.9790863815578632e-08, + 0.99943441152572632 + ], + "min": [ + -0.20865336060523987, + -0.013813632540404797, + -0.0021039647981524467, + 0.97788983583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 258604, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 434400, + "componentType": 5126, + "count": 65, + "max": [ + -1.3711403568095193e-08, + 0.39511561393737793, + 1.1449785232543945 + ], + "min": [ + -1.3711414226236229e-08, + 0.31150096654891968, + 1.0871889591217041 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258864, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435180, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 258872, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 455216, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645658016204834, + -7.6506921686814167e-08, + -1.4764148126289456e-08, + 0.5120772123336792 + ], + "min": [ + 0.85893940925598145, + -7.8986950313719717e-08, + -2.4568432621663305e-08, + 0.40013411641120911 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259124, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435204, + "componentType": 5126, + "count": 62, + "max": [ + 1.0430812835693359e-07, + -3.2782554626464844e-07, + 3.5908306017518044e-07 + ], + "min": [ + -1.1920928955078125e-07, + -3.6507844924926758e-07, + -1.4273973647505045e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259372, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435948, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999725818634033, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999719858169556, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259388, + "componentType": 5126, + "count": 62, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 456224, + "componentType": 5126, + "count": 62, + "max": [ + -0.21753227710723877, + -0.70822852849960327, + 0.38848337531089783, + 0.54919475317001343 + ], + "min": [ + -0.24044083058834076, + -0.72605991363525391, + 0.35199704766273499, + 0.53822046518325806 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259636, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 435996, + "componentType": 5126, + "count": 65, + "max": [ + -0.28988337516784668, + -0.29226911067962646, + 2.3465237617492676 + ], + "min": [ + -0.29706376791000366, + -0.36284142732620239, + 2.3183920383453369 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259896, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 436776, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 259904, + "componentType": 5126, + "count": 20, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 457216, + "componentType": 5126, + "count": 20, + "max": [ + 0.27826851606369019, + -0.15942732989788055, + 0.47014418244361877, + 0.82226157188415527 + ], + "min": [ + 0.2782684862613678, + -0.1594274491071701, + 0.470144122838974, + 0.8222615122795105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 259984, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 436800, + "componentType": 5126, + "count": 60, + "max": [ + 1.3411045074462891e-07, + -7.4505805969238281e-09, + -8.7107764557003975e-08 + ], + "min": [ + 1.4901161193847656e-08, + -7.4505805969238281e-08, + -1.6612466424703598e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260224, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 437520, + "componentType": 5126, + "count": 49, + "max": [ + 1.0000002384185791, + 0.99999880790710449, + 1 + ], + "min": [ + 1.0000002384185791, + 0.99999731779098511, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260420, + "componentType": 5126, + "count": 60, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 457536, + "componentType": 5126, + "count": 60, + "max": [ + -0.21725064516067505, + 0.72690004110336304, + -0.35213533043861389, + 0.54810506105422974 + ], + "min": [ + -0.24007570743560791, + 0.70873421430587769, + -0.38871067762374878, + 0.53755325078964233 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 260660, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438108, + "componentType": 5126, + "count": 65, + "max": [ + 0.30523082613945007, + -0.29226887226104736, + 2.3465235233306885 + ], + "min": [ + 0.29805037379264832, + -0.36284130811691284, + 2.3183920383453369 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438888, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 260936, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 458496, + "componentType": 5126, + "count": 12, + "max": [ + 0.27826845645904541, + 0.15942741930484772, + -0.47014418244361877, + 0.8222615122795105 + ], + "min": [ + 0.27826842665672302, + 0.15942735970020294, + -0.47014421224594116, + 0.8222615122795105 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 260984, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 438936, + "componentType": 5126, + "count": 65, + "max": [ + -1.3711403568095193e-08, + 0.39511561393737793, + 1.1449785232543945 + ], + "min": [ + -1.3711414226236229e-08, + 0.31150096654891968, + 1.0871889591217041 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261244, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 439716, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261252, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 458688, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645658016204834, + -7.6506921686814167e-08, + -1.4764148126289456e-08, + 0.5120772123336792 + ], + "min": [ + 0.85893940925598145, + -7.8986950313719717e-08, + -2.4568432621663305e-08, + 0.40013411641120911 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 261504, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 439740, + "componentType": 5126, + "count": 65, + "max": [ + 1.2107193470001221e-08, + 0.40159738063812256, + 1.2293457984924316e-07 + ], + "min": [ + -9.6857547760009766e-08, + 0.40159702301025391, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261764, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 440520, + "componentType": 5126, + "count": 5, + "max": [ + 0.99999964237213135, + 0.99999988079071045, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 261784, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 459696, + "componentType": 5126, + "count": 65, + "max": [ + 0.066354788839817047, + 0.17664662003517151, + 0.012732873670756817, + 0.99723094701766968 + ], + "min": [ + 0.050562739372253418, + -0.12863974273204803, + -0.14373962581157684, + 0.97145867347717285 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 440580, + "componentType": 5126, + "count": 38, + "max": [ + 1.2107193470001221e-08, + 0.40159738063812256, + 1.2293457984924316e-07 + ], + "min": [ + -9.6857547760009766e-08, + 0.40159702301025391, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262196, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441036, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 460736, + "componentType": 5126, + "count": 38, + "max": [ + 0.10101219266653061, + 0.797660231590271, + -0.48497861623764038, + 0.3439919650554657 + ], + "min": [ + 0.10101208090782166, + 0.797660231590271, + -0.48497870564460754, + 0.34399184584617615 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262380, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441132, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-08, + 0.57860571146011353, + -7.4505805969238281e-09 + ], + "min": [ + 7.4505805969238281e-09, + 0.5786052942276001, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262640, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 441912, + "componentType": 5126, + "count": 9, + "max": [ + 0.9999997615814209, + 0.99999958276748657, + 1.0000002384185791 + ], + "min": [ + 0.99999958276748657, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 262676, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 461344, + "componentType": 5126, + "count": 65, + "max": [ + -0.47829297184944153, + 0.40625259280204773, + 0.31101590394973755, + 0.74823623895645142 + ], + "min": [ + -0.54922395944595337, + 0.35103729367256165, + -0.019192501902580261, + 0.7302626371383667 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 262936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442020, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 0.57860571146011353, + -7.4505805969238281e-09 + ], + "min": [ + 7.4505805969238281e-09, + 0.5786052942276001, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263088, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442476, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999958276748657, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263120, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 462384, + "componentType": 5126, + "count": 38, + "max": [ + 0.92845195531845093, + -0.11104359477758408, + -0.17523975670337677, + -0.30811905860900879 + ], + "min": [ + 0.92845195531845093, + -0.11104359477758408, + -0.17523975670337677, + -0.30811905860900879 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 263272, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 442572, + "componentType": 5126, + "count": 65, + "max": [ + 2.2351741790771484e-08, + 0.40799090266227722, + 1.9185245037078857e-07 + ], + "min": [ + -8.1956386566162109e-08, + 0.40799087285995483, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263532, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443352, + "componentType": 5126, + "count": 5, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263552, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 462992, + "componentType": 5126, + "count": 65, + "max": [ + 0.29819843173027039, + 0.0707283616065979, + -0.076414808630943298, + 0.96359741687774658 + ], + "min": [ + 0.086982414126396179, + -0.10209451615810394, + -0.28176599740982056, + 0.94880765676498413 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 263812, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443412, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.40799090266227722, + 1.9185245037078857e-07 + ], + "min": [ + -8.1956386566162109e-08, + 0.40799087285995483, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263964, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443868, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 263980, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 464032, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + -0.20495329797267914, + -0.34477135539054871, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.20495332777500153, + -0.34477144479751587, + -0.41790080070495605 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 264132, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 443916, + "componentType": 5126, + "count": 65, + "max": [ + -7.4505805969238281e-09, + 0.25762280821800232, + 1.1175870895385742e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.25762253999710083, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264392, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 444696, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264440, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 464640, + "componentType": 5126, + "count": 65, + "max": [ + -0.037458539009094238, + -0.34045052528381348, + -0.11428229510784149, + 0.92450565099716187 + ], + "min": [ + -0.20733168721199036, + -0.36177641153335571, + -0.25526982545852661, + 0.88087701797485352 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 264700, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 444840, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.77674150466918945, + -2.2584572434425354e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674144506454468, + -1.1161318980157375e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264852, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 445296, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999970197677612, + 0.99999964237213135, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 264868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 465680, + "componentType": 5126, + "count": 38, + "max": [ + -0.29018476605415344, + -0.26665157079696655, + -0.15815925598144531, + 0.90535926818847656 + ], + "min": [ + -0.29018476605415344, + -0.26665157079696655, + -0.15815925598144531, + 0.90535926818847656 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 445344, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-08, + 0.40159741044044495, + -7.4505805969238281e-09 + ], + "min": [ + 5.5879354476928711e-09, + 0.40159690380096436, + -2.644956111907959e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265280, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446124, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999958276748657, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265312, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 466288, + "componentType": 5126, + "count": 65, + "max": [ + 0.066354766488075256, + 0.12863965332508087, + 0.14373964071273804, + 0.99723094701766968 + ], + "min": [ + 0.050562616437673569, + -0.17664678394794464, + -0.012732855975627899, + 0.97145861387252808 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446220, + "componentType": 5126, + "count": 38, + "max": [ + 2.0489096641540527e-08, + 0.40159741044044495, + -7.4505805969238281e-09 + ], + "min": [ + 5.5879354476928711e-09, + 0.40159690380096436, + -2.644956111907959e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265724, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446676, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 265772, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 467328, + "componentType": 5126, + "count": 38, + "max": [ + -0.10101203620433807, + 0.79766017198562622, + -0.48497867584228516, + -0.34399187564849854 + ], + "min": [ + -0.10101218521595001, + 0.79766017198562622, + -0.48497870564460754, + -0.34399199485778809 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 265924, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 446820, + "componentType": 5126, + "count": 65, + "max": [ + -1.4901161193847656e-08, + 0.57860565185546875, + 1.1175870895385742e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.57860499620437622, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266184, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 447600, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999946355819702, + 0.99999940395355225, + 0.99999988079071045 + ], + "min": [ + 0.99999946355819702, + 0.99999934434890747, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266232, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 467936, + "componentType": 5126, + "count": 65, + "max": [ + -0.47829300165176392, + -0.35103735327720642, + 0.019192364066839218, + 0.74823617935180664 + ], + "min": [ + -0.54922389984130859, + -0.40625253319740295, + -0.3110160231590271, + 0.73026275634765625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 266492, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 447744, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 0.57860565185546875, + 1.1175870895385742e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.57860499620437622, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266644, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 448200, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 266660, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 468976, + "componentType": 5126, + "count": 38, + "max": [ + 0.92845195531845093, + 0.11104367673397064, + 0.17524001002311707, + -0.30811882019042969 + ], + "min": [ + 0.92845189571380615, + 0.11104363203048706, + 0.17523999512195587, + -0.30811893939971924 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 266812, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 448248, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40799123048782349, + 1.3969838619232178e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.40799087285995483, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267072, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449028, + "componentType": 5126, + "count": 9, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267108, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 469584, + "componentType": 5126, + "count": 65, + "max": [ + 0.29819849133491516, + 0.10209456831216812, + 0.28176605701446533, + 0.96359741687774658 + ], + "min": [ + 0.086982458829879761, + -0.070728346705436707, + 0.076414681971073151, + 0.94880765676498413 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 267368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449136, + "componentType": 5126, + "count": 38, + "max": [ + -2.9802322387695312e-08, + 0.40799123048782349, + 1.3969838619232178e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.40799087285995483, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267520, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449592, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "min": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 470624, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495341718196869, + 0.34477177262306213, + -0.41790029406547546 + ], + "min": [ + 0.81515997648239136, + 0.20495337247848511, + 0.34477174282073975, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 267688, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 449640, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-08, + 0.25762268900871277, + 1.4901161193847656e-08 + ], + "min": [ + -1.1175870895385742e-08, + 0.25762248039245605, + -8.5681676864624023e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267948, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450420, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 267972, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 471232, + "componentType": 5126, + "count": 65, + "max": [ + -0.037458699196577072, + 0.36177566647529602, + 0.25527015328407288, + 0.92450582981109619 + ], + "min": [ + -0.20733180642127991, + 0.34045043587684631, + 0.11428260803222656, + 0.88087695837020874 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 268232, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450492, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-10, + 0.77674150466918945, + -2.2584572434425354e-08 + ], + "min": [ + -2.7939677238464355e-09, + 0.77674144506454468, + -1.1161318980157375e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268384, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450948, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999964237213135, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268400, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 472272, + "componentType": 5126, + "count": 37, + "max": [ + -0.29018479585647583, + 0.2666512131690979, + 0.15815901756286621, + 0.90535938739776611 + ], + "min": [ + -0.29018482565879822, + 0.2666512131690979, + 0.15815901756286621, + 0.90535938739776611 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 268548, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 450996, + "componentType": 5126, + "count": 65, + "max": [ + 4.6566128730773926e-10, + 1.1175870895385742e-07, + -2.2351741790771484e-08 + ], + "min": [ + -7.1054273576010019e-15, + -2.9802322387695312e-08, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268808, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 451776, + "componentType": 5126, + "count": 5, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 268828, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 472864, + "componentType": 5126, + "count": 65, + "max": [ + 0.62147444486618042, + 9.3231790287973126e-08, + 7.1226040176952665e-08, + 0.84784221649169922 + ], + "min": [ + 0.53006440401077271, + -0.0084639964625239372, + -0.011117789894342422, + 0.78343445062637329 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 269088, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 451836, + "componentType": 5126, + "count": 65, + "max": [ + 2.2204460492503131e-16, + 1.7881393432617188e-07, + -2.123415470123291e-07 + ], + "min": [ + -2.2204460492503131e-15, + 2.2351741790771484e-08, + -3.3527612686157227e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269348, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 452616, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000005960464478, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269396, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 473904, + "componentType": 5126, + "count": 65, + "max": [ + 0.12528058886528015, + -1.6243319578279625e-08, + -4.079960813641037e-09, + 0.99807745218276978 + ], + "min": [ + 0.061979014426469803, + -1.653602232920548e-08, + -5.1225637065499541e-09, + 0.99212133884429932 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 269656, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 452760, + "componentType": 5126, + "count": 65, + "max": [ + 2.8421709430404007e-14, + 0.52352416515350342, + 5.9604627011822231e-08 + ], + "min": [ + -5.6843418860808015e-14, + 0.52352404594421387, + -5.9604666091672698e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269916, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 453540, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 269932, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 474944, + "componentType": 5126, + "count": 65, + "max": [ + 0.001496979733929038, + 1.1743012118259344e-09, + -3.8409222469226734e-09, + 1 + ], + "min": [ + -0.053219232708215714, + 9.6238683688909532e-10, + -3.8994292239635797e-09, + 0.99858283996582031 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 270192, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 453588, + "componentType": 5126, + "count": 65, + "max": [ + 2.1316282072803006e-14, + 0.36641585826873779, + 5.9604641222676946e-08 + ], + "min": [ + 1.4210854715202004e-14, + 0.36641579866409302, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270452, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 454368, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270468, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 475984, + "componentType": 5126, + "count": 65, + "max": [ + 0.19080400466918945, + -1.4486924548862135e-08, + -1.8329655571136527e-09, + 0.99249422550201416 + ], + "min": [ + 0.1222916767001152, + -1.4649267576771763e-08, + -2.8441577981652699e-09, + 0.9816281795501709 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 270728, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 454416, + "componentType": 5126, + "count": 65, + "max": [ + 1.7763568394002505e-15, + 0.74672245979309082, + -5.9604644775390625e-08 + ], + "min": [ + -5.3290705182007514e-15, + 0.74672234058380127, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 270988, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455196, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 477024, + "componentType": 5126, + "count": 65, + "max": [ + -0.052202891558408737, + 4.4864765236241055e-09, + 9.6888818745810568e-08, + 0.99863648414611816 + ], + "min": [ + -0.15020589530467987, + -5.0580237775932346e-09, + 9.6756700429523335e-08, + 0.9886547327041626 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271280, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455292, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976043879985809, + 1.4420554637908936 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976043879985809, + 1.4420554637908936 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271288, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455316, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271296, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478064, + "componentType": 5126, + "count": 8, + "max": [ + 0.26149037480354309, + 1.3741384030652171e-08, + 1.0062825239742779e-08, + 0.9652060866355896 + ], + "min": [ + 0.2614903450012207, + 1.3741383142473751e-08, + 1.0062823463385939e-08, + 0.9652060866355896 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455340, + "componentType": 5126, + "count": 38, + "max": [ + 2.451747604936827e-08, + -1.3807744281280065e-08, + 3.6498178701549477e-08 + ], + "min": [ + -6.488948400829031e-08, + -1.0321472387886388e-07, + -8.2711110849231773e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271480, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455796, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000017881393433, + 1.0000001192092896 + ], + "min": [ + 1, + 1.000001072883606, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271544, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478192, + "componentType": 5126, + "count": 38, + "max": [ + 0.56482315063476562, + 0.75361925363540649, + -0.15842780470848083, + -0.29653573036193848 + ], + "min": [ + 0.56482309103012085, + 0.75361925363540649, + -0.15842786431312561, + -0.29653578996658325 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 271696, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 455988, + "componentType": 5126, + "count": 64, + "max": [ + 0.21592006087303162, + 0.26865509152412415, + 1.5180497169494629 + ], + "min": [ + 0.21592006087303162, + 0.2539498507976532, + 1.4833292961120605 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271952, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 456756, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 271960, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 478800, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645663976669312, + -7.8866264630050864e-08, + -2.2435733271208846e-08, + 0.51207709312438965 + ], + "min": [ + 0.85893946886062622, + -8.2336406137528684e-08, + -3.2599960064771949e-08, + 0.40013399720191956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 272212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 456780, + "componentType": 5126, + "count": 38, + "max": [ + -1.2449413588910829e-07, + -4.5796873848757969e-08, + 6.7809970971666189e-08 + ], + "min": [ + -1.8409879487535363e-07, + -1.7990731748795952e-07, + -5.1399318579115061e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 457236, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999940395355225, + 1 + ], + "min": [ + 1, + 0.99999922513961792, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272396, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 479808, + "componentType": 5126, + "count": 37, + "max": [ + -0.56482303142547607, + 0.75361925363540649, + -0.1584283858537674, + 0.29653581976890564 + ], + "min": [ + -0.56482309103012085, + 0.75361913442611694, + -0.15842847526073456, + 0.29653570055961609 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 272544, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 457332, + "componentType": 5126, + "count": 64, + "max": [ + -0.21592006087303162, + 0.26865512132644653, + 1.5180497169494629 + ], + "min": [ + -0.21592006087303162, + 0.25394982099533081, + 1.4833292961120605 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272800, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458100, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 272808, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 480400, + "componentType": 5126, + "count": 63, + "max": [ + 0.91645663976669312, + -7.8866264630050864e-08, + -2.2435733271208846e-08, + 0.51207709312438965 + ], + "min": [ + 0.85893946886062622, + -8.2336406137528684e-08, + -3.2599960064771949e-08, + 0.40013399720191956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458124, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458148, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273076, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481408, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273084, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458172, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273092, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458196, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273100, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481440, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273108, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 458220, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.19137147068977356, + 6.9776433520019054e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.19137147068977356, + 1.4901154976598718e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273412, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 459132, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000004768371582, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 273500, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 481472, + "componentType": 5126, + "count": 76, + "max": [ + 0.0089847194030880928, + 0.034154176712036133, + 0.063492096960544586, + 0.99994874000549316 + ], + "min": [ + -0.061300333589315414, + -0.052858620882034302, + -0.05839875340461731, + 0.99582582712173462 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 273804, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 459396, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274108, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460308, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274156, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 482688, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 274460, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460452, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-08, + 1.4668330550193787e-07, + 1.9511207938194275e-07 + ], + "min": [ + -1.2293457984924316e-07, + 1.4156103134155273e-07, + 9.3132257461547852e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274636, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 460980, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 274684, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 483904, + "componentType": 5126, + "count": 44, + "max": [ + 1.4668328773836947e-08, + 7.916240107874728e-09, + 2.0023431801519109e-08, + 1 + ], + "min": [ + 1.0710211384434842e-08, + -1.3969838619232178e-09, + 1.1670632460436536e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 274860, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461124, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 0.028223443776369095, + 3.3527612686157227e-08 + ], + "min": [ + 1.862645149230957e-08, + 0.028223354369401932, + 2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275036, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461652, + "componentType": 5126, + "count": 18, + "max": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 484608, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234387755393982, + -0.05825023353099823, + -0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.03822682797908783, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 275284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 461868, + "componentType": 5126, + "count": 44, + "max": [ + 7.1711838245391846e-08, + 5.5879354476928711e-08, + -1.0058283805847168e-07 + ], + "min": [ + 1.6763806343078613e-08, + -5.5879354476928711e-09, + -1.2898817658424377e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275460, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462396, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275476, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 485312, + "componentType": 5126, + "count": 44, + "max": [ + -1.7811542463164187e-08, + -6.1467275713766867e-08, + -2.7939677238464355e-09, + 1 + ], + "min": [ + -2.9802315282267955e-08, + -6.3329920862997824e-08, + -1.0477377188067294e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 275652, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462444, + "componentType": 5126, + "count": 44, + "max": [ + 2.0489096641540527e-08, + 0.04503997415304184, + 1.4901161193847656e-08 + ], + "min": [ + -2.0489096641540527e-08, + 0.045039869844913483, + -3.8184225559234619e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275828, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 462972, + "componentType": 5126, + "count": 32, + "max": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.9999995231628418, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 275956, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 486016, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882885932922363, + -0.038419146090745926, + -9.681028313934803e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419157266616821, + -9.6831150585785508e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276132, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463356, + "componentType": 5126, + "count": 44, + "max": [ + -3.5390257835388184e-08, + 0.022519789636135101, + 1.2293457984924316e-07 + ], + "min": [ + -1.8253922462463379e-07, + 0.022519733756780624, + 8.2887709140777588e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276308, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463884, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276324, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 486720, + "componentType": 5126, + "count": 44, + "max": [ + 5.2095867886237102e-07, + -9.2387227823564899e-07, + 2.4400657139267423e-07, + 1 + ], + "min": [ + 5.1781546517304378e-07, + -9.3621224550588522e-07, + 2.3120085757000197e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 463932, + "componentType": 5126, + "count": 44, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276676, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 464460, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 276760, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 487424, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + -0.038298282772302628, + -0.044083669781684875, + 0.98228913545608521 + ], + "min": [ + 0.17803920805454254, + -0.038298364728689194, + -0.044083781540393829, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 276936, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 464712, + "componentType": 5126, + "count": 44, + "max": [ + -8.1956386566162109e-08, + -1.2293457984924316e-07, + 1.0849907994270325e-07 + ], + "min": [ + -1.601874828338623e-07, + -1.3411045074462891e-07, + -9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277112, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465240, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277128, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 488128, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252900764173091e-09, + 2.2351741790771484e-08, + 5.4482374167719172e-08, + 1 + ], + "min": [ + -3.524958103184872e-15, + 1.862645326866641e-08, + 4.8428773880004883e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 277304, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465288, + "componentType": 5126, + "count": 44, + "max": [ + -7.1711838245391846e-08, + 0.033446535468101501, + 1.2665987014770508e-07 + ], + "min": [ + -1.0430812835693359e-07, + 0.033446431159973145, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277480, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 465816, + "componentType": 5126, + "count": 25, + "max": [ + 1, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277580, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 488832, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151016891002655, + 0.016420740634202957, + -0.038739249110221863, + 0.99888283014297485 + ], + "min": [ + 0.021510154008865356, + 0.016420731320977211, + -0.038739275187253952, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 277756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466116, + "componentType": 5126, + "count": 44, + "max": [ + -1.1315569281578064e-07, + 1.0523945093154907e-07, + 7.7299773693084717e-08 + ], + "min": [ + -1.3411045074462891e-07, + 1.4901161193847656e-08, + -6.9849193096160889e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277932, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466644, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 277964, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 489536, + "componentType": 5126, + "count": 44, + "max": [ + -1.3969834178340079e-09, + -2.607702676016288e-08, + 5.2328687161207199e-08, + 1 + ], + "min": [ + -3.7252883000604697e-09, + -3.0733637856883433e-08, + 1.8626447939595892e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278140, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 466740, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505805969238281e-09, + 0.041744694113731384, + -6.9383531808853149e-08 + ], + "min": [ + -1.234002411365509e-08, + 0.041744612157344818, + -2.1606683731079102e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278316, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467268, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278348, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 490240, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518191993236542, + 0.0088785151019692421, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518190503120422, + 0.0088785123080015182, + -0.057382568717002869, + 0.98455238342285156 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278524, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467364, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + 0.020872168242931366, + -9.3132257461547852e-09 + ], + "min": [ + -3.771856427192688e-08, + 0.020872164517641068, + -2.4586915969848633e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278700, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467892, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 278732, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 490944, + "componentType": 5126, + "count": 44, + "max": [ + 4.6566119848989729e-09, + -9.6857540654582408e-08, + -1.4482064614185219e-07, + 1 + ], + "min": [ + 4.1909515857696533e-09, + -1.0058281674218961e-07, + -1.6391273049976007e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 278908, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 467988, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279084, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 468516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279116, + "componentType": 5126, + "count": 40, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 491648, + "componentType": 5126, + "count": 40, + "max": [ + 0.0063957390375435352, + 0.6579899787902832, + 0.26252907514572144, + 0.7057526707649231 + ], + "min": [ + 0.0063955946825444698, + 0.6579899787902832, + 0.2625289261341095, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 279276, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 468612, + "componentType": 5126, + "count": 44, + "max": [ + 3.6321580410003662e-08, + 1.2293457984924316e-07, + -1.1874362826347351e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1641532182693481e-07, + -1.4901161193847656e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279452, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469140, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 492288, + "componentType": 5126, + "count": 44, + "max": [ + 1.5832481992106295e-08, + -4.0745362639427185e-10, + -7.2177506638126943e-08, + 1 + ], + "min": [ + 2.4447202040533966e-09, + -1.8626460374093767e-09, + -8.5681691075478739e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 279660, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469236, + "componentType": 5126, + "count": 50, + "max": [ + 1.1408701539039612e-07, + 0.069626085460186005, + -2.648448571562767e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.069626078009605408, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279860, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 469836, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 279960, + "componentType": 5126, + "count": 50, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 492992, + "componentType": 5126, + "count": 50, + "max": [ + 0.17804408073425293, + -0.038269974291324615, + -0.043939705938100815, + 0.98229581117630005 + ], + "min": [ + 0.17803846299648285, + -0.038296110928058624, + -0.044083885848522186, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280160, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470136, + "componentType": 5126, + "count": 44, + "max": [ + -0.0086897583678364754, + -0.0083237458020448685, + 0.023024305701255798 + ], + "min": [ + -0.0086898654699325562, + -0.0083238519728183746, + 0.02302425354719162 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280336, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470664, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 493792, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958177343010902, + 0.65798979997634888, + 0.2625291645526886, + 0.70581871271133423 + ], + "min": [ + 0.0061948508955538273, + 0.65796887874603271, + 0.26240906119346619, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 470760, + "componentType": 5126, + "count": 44, + "max": [ + 0.0073303692042827606, + 0.34354427456855774, + -0.02119787409901619 + ], + "min": [ + 0.0073303328827023506, + 0.34354424476623535, + -0.02119797095656395 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471288, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 280736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 494496, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320600688457489, + -0.11237321794033051, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320602178573608, + -0.11237325519323349, + -0.12725991010665894, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 280912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471336, + "componentType": 5126, + "count": 44, + "max": [ + 2.3469328880310059e-07, + -1.4621764421463013e-07, + -1.1041993275284767e-07 + ], + "min": [ + -2.1886080503463745e-08, + -2.0954757928848267e-07, + -1.7881393432617188e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281088, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471864, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281096, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 495200, + "componentType": 5126, + "count": 44, + "max": [ + 7.6834103523992781e-09, + 3.2247044146060944e-08, + 3.189779462786646e-08, + 1 + ], + "min": [ + -4.5401971071612479e-09, + 2.2584570658068515e-08, + 2.3879689337036325e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 281272, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 471888, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.032196033746004105, + 1.0989606380462646e-07 + ], + "min": [ + -1.5227124094963074e-07, + 0.032196022570133209, + -5.4249539971351624e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281448, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 472416, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281528, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 495904, + "componentType": 5126, + "count": 44, + "max": [ + 0.0564768947660923, + -0.045752894133329391, + -0.025043413043022156, + 0.99704056978225708 + ], + "min": [ + 0.056476891040802002, + -0.045752905309200287, + -0.025043418630957603, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 281704, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 472656, + "componentType": 5126, + "count": 44, + "max": [ + -6.9849193096160889e-08, + 1.939479261636734e-07, + 5.9604644775390625e-08 + ], + "min": [ + -1.5832483768463135e-07, + 1.7927959561347961e-07, + -4.9010850489139557e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281880, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473184, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 281912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 496608, + "componentType": 5126, + "count": 44, + "max": [ + -1.0724762411484789e-08, + -3.3527619791584584e-08, + -1.3737011528291987e-08, + 1 + ], + "min": [ + -1.4435502571075176e-08, + -3.8256988688090132e-08, + -1.8510039723196314e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282088, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473280, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-08, + 0.049540482461452484, + 1.1920928955078125e-07 + ], + "min": [ + -1.9255094230175018e-07, + 0.049540434032678604, + -7.4272975325584412e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282264, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 473808, + "componentType": 5126, + "count": 26, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282368, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 497312, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846227198839188, + -0.085242286324501038, + -0.013570735231041908, + 0.98919981718063354 + ], + "min": [ + 0.11846226453781128, + -0.085242293775081635, + -0.013570768758654594, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474120, + "componentType": 5126, + "count": 44, + "max": [ + -1.0943040251731873e-08, + 0.024770038202404976, + 1.1175870895385742e-07 + ], + "min": [ + -4.0978193283081055e-08, + 0.024769995361566544, + 1.5657860785722733e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282720, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474648, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 282736, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 498016, + "componentType": 5126, + "count": 44, + "max": [ + -5.8347353615317843e-07, + 9.4409921302940347e-07, + -1.466250978410244e-07, + 1 + ], + "min": [ + -5.895271897315979e-07, + 9.387732120558212e-07, + -1.5459953317531472e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 282912, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 474696, + "componentType": 5126, + "count": 44, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283088, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 475224, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283204, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 498720, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749170124530792, + -0.069006532430648804, + -0.0030257198959589005, + 0.97361516952514648 + ], + "min": [ + 0.21749135851860046, + -0.069006577134132385, + -0.0030257310718297958, + 0.97361505031585693 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 283380, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 475572, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 5.9604644775390625e-08, + 3.2014213502407074e-08 + ], + "min": [ + -5.9138983488082886e-08, + -3.7252902984619141e-08, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283556, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476100, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283572, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 499424, + "componentType": 5126, + "count": 44, + "max": [ + 5.8920690548802668e-08, + -6.2864269345652701e-09, + -2.6077032089233398e-08, + 1 + ], + "min": [ + 3.6321573304576305e-08, + -2.2351745343485163e-08, + -2.7008351111135198e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 283748, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476148, + "componentType": 5126, + "count": 58, + "max": [ + 3.3993273973464966e-08, + 0.06818707287311554, + 1.3463431969285011e-07 + ], + "min": [ + -1.4901161193847656e-07, + 0.068187013268470764, + 1.3038516044616699e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 283980, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 476844, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 0.9999995231628418, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284096, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 500128, + "componentType": 5126, + "count": 58, + "max": [ + 0.21750433743000031, + -0.06896587461233139, + -0.0028431459795683622, + 0.97361570596694946 + ], + "min": [ + 0.21748912334442139, + -0.069013774394989014, + -0.003057574387639761, + 0.97361499071121216 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 284328, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 477192, + "componentType": 5126, + "count": 44, + "max": [ + 0.023247240111231804, + 0.34059691429138184, + -0.015326384454965591 + ], + "min": [ + 0.023247197270393372, + 0.34059673547744751, + -0.015326451510190964 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284504, + "componentType": 5126, + "count": 34, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 477720, + "componentType": 5126, + "count": 34, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 0.9999992847442627, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 501056, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811857163906097, + -0.13169915974140167, + -0.16719585657119751, + 0.96071571111679077 + ], + "min": [ + -0.17811858654022217, + -0.13169918954372406, + -0.16719600558280945, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 284816, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478128, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 3.7252902984619141e-08, + 7.6106516644358635e-09 + ], + "min": [ + -6.4377672970294952e-08, + -3.3120159059762955e-08, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 284992, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478656, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 501760, + "componentType": 5126, + "count": 44, + "max": [ + 7.4505801528346183e-09, + -1.1175870895385742e-08, + -1.3969838619232178e-08, + 1 + ], + "min": [ + 2.7939679458910405e-09, + -1.862645326866641e-08, + -1.909211277961731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 285184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 478704, + "componentType": 5126, + "count": 44, + "max": [ + 1.862645149230957e-07, + 0.031801007688045502, + 9.4994902610778809e-08 + ], + "min": [ + 3.5273842513561249e-08, + 0.031800933182239532, + -5.2590621635317802e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285360, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 479232, + "componentType": 5126, + "count": 24, + "max": [ + 1.0000004768371582, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285456, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 502464, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024204552173615, + -0.10080225765705109, + -0.057818159461021423, + 0.98179608583450317 + ], + "min": [ + 0.15024122595787048, + -0.10080230236053467, + -0.057818219065666199, + 0.98179596662521362 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 285632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 479520, + "componentType": 5126, + "count": 44, + "max": [ + 1.2852251529693604e-07, + 2.7706846594810486e-08, + -1.8253922462463379e-07 + ], + "min": [ + 5.3085386753082275e-08, + -3.7252902984619141e-08, + -3.0206865631043911e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285808, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480048, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 285824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 503168, + "componentType": 5126, + "count": 44, + "max": [ + -8.6147338151931763e-09, + -2.0489096641540527e-08, + -3.166496753692627e-08, + 1 + ], + "min": [ + -8.6147338151931763e-09, + -2.6426281607427882e-08, + -3.7143767173120068e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480096, + "componentType": 5126, + "count": 44, + "max": [ + 1.6763806343078613e-08, + 0.044816657900810242, + 7.6033757068216801e-08 + ], + "min": [ + -1.3969840839678227e-09, + 0.04481661319732666, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286176, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480624, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000008344650269, + 0.99999994039535522, + 1 + ], + "min": [ + 1.0000001192092896, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286268, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 503872, + "componentType": 5126, + "count": 44, + "max": [ + 0.073152825236320496, + -0.052601058036088943, + -0.024043358862400055, + 0.99564242362976074 + ], + "min": [ + 0.073152035474777222, + -0.052601080387830734, + -0.024043375626206398, + 0.99564236402511597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286444, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 480900, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-07, + 0.022408399730920792, + 1.1033262126147747e-07 + ], + "min": [ + -1.4994293451309204e-07, + 0.022408396005630493, + 7.0780515670776367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286620, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 481428, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286636, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 504576, + "componentType": 5126, + "count": 44, + "max": [ + -6.1932928474561777e-07, + 9.4789692184349406e-07, + -3.0733641409597112e-08, + 1 + ], + "min": [ + -6.2712922499486012e-07, + 9.464563390793046e-07, + -5.3783875131330205e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 286812, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 481476, + "componentType": 5126, + "count": 44, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 286988, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287004, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 505280, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130188584327698, + -0.10888320952653885, + 0.021744720637798309, + 0.95317411422729492 + ], + "min": [ + 0.28130188584327698, + -0.10888329148292542, + 0.021744601428508759, + 0.95317411422729492 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 287180, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482052, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -1.6763806343078613e-08, + 1.7508864402770996e-07 + ], + "min": [ + -1.1175870895385742e-08, + -1.1920928955078125e-07, + 1.1496013030409813e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287356, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482580, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287388, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 505984, + "componentType": 5126, + "count": 44, + "max": [ + 5.9750178138529009e-08, + -4.6100481654320902e-08, + -2.2351745343485163e-08, + 1 + ], + "min": [ + 2.5378549040055987e-08, + -5.5239080865021606e-08, + -3.3527619791584584e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 287564, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 482676, + "componentType": 5126, + "count": 52, + "max": [ + 5.5879354476928711e-09, + 0.069797404110431671, + 1.4901161193847656e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.069797337055206299, + -8.2145561464130878e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287772, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483300, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 287804, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 506688, + "componentType": 5126, + "count": 52, + "max": [ + 0.28130331635475159, + -0.10888499021530151, + 0.021744558587670326, + 0.95317494869232178 + ], + "min": [ + 0.28129583597183228, + -0.10890422761440277, + 0.02167937345802784, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483396, + "componentType": 5126, + "count": 44, + "max": [ + 0.034954506903886795, + 0.33536890149116516, + -0.0064071454107761383 + ], + "min": [ + 0.034954499453306198, + 0.33536878228187561, + -0.0064072981476783752 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288188, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 483924, + "componentType": 5126, + "count": 38, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1.0000003576278687 + ], + "min": [ + 0.99999910593032837, + 0.99999922513961792, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288340, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 507520, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214219272136688, + -0.16701860725879669, + -0.22579608857631683, + 0.94418638944625854 + ], + "min": [ + -0.17214223742485046, + -0.16701875627040863, + -0.22579611837863922, + 0.94418638944625854 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288516, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484380, + "componentType": 5126, + "count": 44, + "max": [ + 8.1956386566162109e-08, + 1.8347054719924927e-07, + 1.3411045074462891e-07 + ], + "min": [ + -2.9802322387695312e-08, + 1.2293457984924316e-07, + 4.3306499719619751e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288692, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484908, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.9999997615814209, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 288716, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 508224, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626458597736928e-08, + -1.862645371275562e-09, + 3.1664971089639948e-08, + 1 + ], + "min": [ + -9.313229076823859e-10, + -5.5879363358712908e-09, + 2.8871006918507192e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 288892, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 484980, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077032089233398e-08, + 0.022592509165406227, + -3.7252902984619141e-08 + ], + "min": [ + -8.9406967163085938e-08, + 0.022592421621084213, + -4.8428773880004883e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289068, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 485508, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289116, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 508928, + "componentType": 5126, + "count": 44, + "max": [ + 0.082881756126880646, + -0.044399119913578033, + -0.028591921553015709, + 0.99515920877456665 + ], + "min": [ + 0.082881517708301544, + -0.044399164617061615, + -0.028591940179467201, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 289292, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 485652, + "componentType": 5126, + "count": 44, + "max": [ + 4.8428773880004883e-08, + -1.862645149230957e-08, + 1.4435499906539917e-08 + ], + "min": [ + -5.2154064178466797e-08, + -8.5681676864624023e-08, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289468, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486180, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 509632, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 4.6566133171666024e-09, + -9.7788879216409441e-09, + 1 + ], + "min": [ + -1.5832485544819974e-08, + -6.5192589104867693e-09, + -1.7229467630386353e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 289660, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486228, + "componentType": 5126, + "count": 44, + "max": [ + 1.0058283805847168e-07, + 0.027876397594809532, + 9.6857547760009766e-08 + ], + "min": [ + 3.7252902984619141e-09, + 0.027876339852809906, + 3.9581209421157837e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289836, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 486756, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 1.0000003576278687, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 289924, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 510336, + "componentType": 5126, + "count": 44, + "max": [ + 0.04151814803481102, + -0.028988013043999672, + -0.020971916615962982, + 0.99849694967269897 + ], + "min": [ + 0.041517924517393112, + -0.028988031670451164, + -0.020971957594156265, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290100, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487020, + "componentType": 5126, + "count": 44, + "max": [ + -5.2154064178466797e-08, + 0.013938168063759804, + 9.3132257461547852e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.013938132673501968, + -1.0943040251731873e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290276, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487548, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290308, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 511040, + "componentType": 5126, + "count": 44, + "max": [ + 5.2968971431255341e-08, + -1.3015230138080369e-07, + 4.563479905073109e-08, + 1 + ], + "min": [ + 5.0757069658402543e-08, + -1.3364477524646645e-07, + 3.4138793125748634e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290484, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 487644, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290660, + "componentType": 5126, + "count": 21, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488172, + "componentType": 5126, + "count": 21, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 290744, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 511744, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057201981544495, + -0.17872512340545654, + 0.015338565222918987, + 0.91919600963592529 + ], + "min": [ + 0.35057187080383301, + -0.17872534692287445, + 0.015338476747274399, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 290920, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488424, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + -2.9802322387695312e-08, + -9.6857547760009766e-08 + ], + "min": [ + -3.7252902984619141e-08, + -1.2479722499847412e-07, + -1.2974487617611885e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291096, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 488952, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291112, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 512448, + "componentType": 5126, + "count": 44, + "max": [ + -4.3510230085530566e-08, + -2.0489096641540527e-08, + -2.7939679014821195e-08, + 1 + ], + "min": [ + -5.6112192226009938e-08, + -2.4214388716359281e-08, + -2.7939680791178034e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 291288, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489000, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.074802398681640625, + -5.2154064178466797e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.074802316725254059, + -1.0625808499753475e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291464, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489528, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291536, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 513152, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057204961776733, + -0.1787249892950058, + 0.015338688157498837, + 0.91919606924057007 + ], + "min": [ + 0.35057193040847778, + -0.17872503399848938, + 0.015338667668402195, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 291712, + "componentType": 5126, + "count": 24, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 489744, + "componentType": 5126, + "count": 24, + "max": [ + 0.044579226523637772, + 0.32914415001869202, + 0.0039985440671443939 + ], + "min": [ + 0.044579222798347473, + 0.32914400100708008, + 0.0039985403418540955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291808, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490032, + "componentType": 5126, + "count": 23, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000004768371582 + ], + "min": [ + 0.9999995231628418, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 291900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 513856, + "componentType": 5126, + "count": 44, + "max": [ + -0.13569998741149902, + -0.18749409914016724, + -0.27479100227355957, + 0.9332316517829895 + ], + "min": [ + -0.1357000321149826, + -0.18749423325061798, + -0.27479103207588196, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 292076, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490308, + "componentType": 5126, + "count": 44, + "max": [ + 2.150190994143486e-07, + 4.246830940246582e-07, + 1.0477378964424133e-07 + ], + "min": [ + 7.4505805969238281e-09, + 3.8929283618927002e-07, + 6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292252, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490836, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 514560, + "componentType": 5126, + "count": 44, + "max": [ + 1.8626447939595892e-08, + 1.1175870184843006e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 8.7544307803000265e-08, + -1.6763802790364934e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 292460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 490932, + "componentType": 5126, + "count": 62, + "max": [ + 6.5338099375367165e-08, + 0.25792214274406433, + -6.9849193096160889e-09 + ], + "min": [ + 1.862645149230957e-08, + 0.25792211294174194, + -2.0023435354232788e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292708, + "componentType": 5126, + "count": 27, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 491676, + "componentType": 5126, + "count": 27, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 292816, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 515264, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.86233049631118774, + 0.25757125020027161, + 0.54869121313095093 + ], + "min": [ + 0.044319510459899902, + 0.787913978099823, + 0.08472936600446701, + 0.4637322723865509 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 293064, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 492000, + "componentType": 5126, + "count": 71, + "max": [ + 2.2910535335540771e-07, + 0.12896108627319336, + -3.6787241697311401e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.12896072864532471, + -2.3003667593002319e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293348, + "componentType": 5126, + "count": 38, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 492852, + "componentType": 5126, + "count": 38, + "max": [ + 0.99999982118606567, + 1.0000035762786865, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 1.0000016689300537, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293500, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 516256, + "componentType": 5126, + "count": 71, + "max": [ + 7.1590513073260809e-08, + 0.88032650947570801, + 2.8259978535061236e-06, + 0.57146978378295898 + ], + "min": [ + -1.8255738041261793e-06, + 0.82062309980392456, + 1.8187151340498531e-07, + 0.47436821460723877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 293784, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 493308, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.1392715722322464, + -2.2351741790771484e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.13927146792411804, + -1.862645149230957e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 293960, + "componentType": 5126, + "count": 36, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 493836, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000009536743164, + 1.0000020265579224, + 1.0000022649765015 + ], + "min": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000011920928955 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294104, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 517392, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531655550003052, + 0.090401314198970795, + -0.19322721660137177, + 0.94302952289581299 + ], + "min": [ + 0.25531584024429321, + 0.090401016175746918, + -0.19322751462459564, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 294280, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494268, + "componentType": 5126, + "count": 26, + "max": [ + 0.044326618313789368, + -0.11071404069662094, + 0.071930147707462311 + ], + "min": [ + 0.044326584786176682, + -0.11071404814720154, + 0.071930117905139923 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294384, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494580, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999642372131348, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 518096, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531584024429321, + -0.090401075780391693, + 0.19322755932807922, + 0.94302952289581299 + ], + "min": [ + -0.25531643629074097, + -0.090401455760002136, + 0.19322720170021057, + 0.94302928447723389 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 294608, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 494724, + "componentType": 5126, + "count": 48, + "max": [ + 3.5017728805541992e-07, + 6.7055225372314453e-08, + 2.6635825634002686e-07 + ], + "min": [ + -6.891787052154541e-08, + -5.2154064178466797e-08, + -5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294800, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 495300, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 0.99999654293060303, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 294992, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 518800, + "componentType": 5126, + "count": 48, + "max": [ + 3.6647588785854168e-07, + -6.2165759118215647e-07, + 5.7462693803245202e-07, + 1 + ], + "min": [ + -1.8994351194123738e-06, + -6.3143647821561899e-07, + -1.4062968034522783e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 295184, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 495876, + "componentType": 5126, + "count": 52, + "max": [ + 9.6857547760009766e-08, + 0.27854281663894653, + 1.9557774066925049e-07 + ], + "min": [ + 7.0780515670776367e-08, + 0.27854272723197937, + -3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295392, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 496500, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295408, + "componentType": 5126, + "count": 52, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 519568, + "componentType": 5126, + "count": 52, + "max": [ + 0.25531500577926636, + 0.12245099246501923, + -0.17468459904193878, + 0.97297227382659912 + ], + "min": [ + 0.088408313691616058, + 0.090401522815227509, + -0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 295616, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 496548, + "componentType": 5126, + "count": 49, + "max": [ + 2.8312206268310547e-07, + 0.13927170634269714, + 3.380700945854187e-07 + ], + "min": [ + 6.7055225372314453e-08, + 0.13927128911018372, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295812, + "componentType": 5126, + "count": 31, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 497136, + "componentType": 5126, + "count": 31, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999874830245972, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 295936, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 520400, + "componentType": 5126, + "count": 49, + "max": [ + -5.0757080316543579e-08, + -4.827974862564588e-06, + 1.0570517616770303e-07, + 1 + ], + "min": [ + -1.1161922657265677e-06, + -8.257104127551429e-06, + -1.0617110319799394e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 296132, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 497508, + "componentType": 5126, + "count": 62, + "max": [ + -0.027315571904182434, + 0.33446067571640015, + 0.019757572561502457 + ], + "min": [ + -0.027315668761730194, + 0.33446061611175537, + 0.01975727267563343 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296380, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498252, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000008344650269 + ], + "min": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296444, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 521184, + "componentType": 5126, + "count": 62, + "max": [ + -0.24058769643306732, + 0.89095818996429443, + -0.052338108420372009, + 0.5384858250617981 + ], + "min": [ + -0.31360730528831482, + 0.70802509784698486, + -0.38839548826217651, + 0.33584675192832947 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 296692, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498444, + "componentType": 5126, + "count": 44, + "max": [ + 1.9557774066925049e-08, + 3.166496753692627e-08, + 5.0632388592930511e-07 + ], + "min": [ + -1.1423253454267979e-08, + 1.7869751900434494e-08, + 2.5607096176827326e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296868, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 498972, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 296884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 522176, + "componentType": 5126, + "count": 44, + "max": [ + -7.004929081233513e-09, + 9.1364206866728637e-08, + 6.7059403363600723e-08, + 1 + ], + "min": [ + -1.3918908692289733e-08, + 8.2272904933233804e-08, + 4.4703490686970326e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297060, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499020, + "componentType": 5126, + "count": 43, + "max": [ + 0.023130057379603386, + 0.26697874069213867, + 0.14965295791625977 + ], + "min": [ + 0.023130033165216446, + 0.26697829365730286, + 0.14965283870697021 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297232, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499536, + "componentType": 5126, + "count": 25, + "max": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297332, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 522880, + "componentType": 5126, + "count": 43, + "max": [ + -0.69586646556854248, + -0.39777600765228271, + -0.29703003168106079, + 0.51895773410797119 + ], + "min": [ + -0.69586658477783203, + -0.39777609705924988, + -0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297504, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 499836, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527612686157227e-08, + 7.9162418842315674e-08, + 1.1129304766654968e-07 + ], + "min": [ + -4.0978193283081055e-08, + 2.9802322387695312e-08, + 5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297680, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500364, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 297696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 523568, + "componentType": 5126, + "count": 44, + "max": [ + 9.7788870334625244e-09, + 1.9557775843281888e-08, + 7.5378929764724489e-09, + 1 + ], + "min": [ + 6.7520891100514291e-09, + 1.4901161193847656e-08, + 1.862645371275562e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 297872, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500412, + "componentType": 5126, + "count": 44, + "max": [ + -7.2177499532699585e-09, + 0.028223467990756035, + 1.2200325727462769e-07 + ], + "min": [ + -1.4901161193847656e-08, + 0.028223417699337006, + 2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298048, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 500940, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1, + 1.0000005960464478 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298108, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 524272, + "componentType": 5126, + "count": 44, + "max": [ + 0.11234383285045624, + 0.058250237256288528, + 0.038226824253797531, + 0.99122375249862671 + ], + "min": [ + 0.11234370619058609, + 0.058250203728675842, + 0.038226813077926636, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 298284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501120, + "componentType": 5126, + "count": 44, + "max": [ + -3.5623088479042053e-08, + 3.7252902984619141e-08, + 1.103617250919342e-07 + ], + "min": [ + -5.029141902923584e-08, + 1.1175870895385742e-08, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298460, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501648, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298492, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 524976, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505814851022478e-09, + -1.1175870895385742e-08, + 8.3819022833608869e-09, + 1 + ], + "min": [ + -1.7927959561347961e-08, + -2.1434974684098052e-08, + -6.7520891100514291e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 298668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 501744, + "componentType": 5126, + "count": 44, + "max": [ + 5.029141902923584e-08, + 0.045040033757686615, + 4.8894435167312622e-08 + ], + "min": [ + 1.6763806343078613e-08, + 0.045039962977170944, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298844, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502272, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 298876, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 525680, + "componentType": 5126, + "count": 44, + "max": [ + 0.077882878482341766, + 0.038419183343648911, + 9.6860152552835643e-05, + 0.99622195959091187 + ], + "min": [ + 0.077882774174213409, + 0.038419175893068314, + 9.6848831162787974e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502368, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-07, + 0.022520191967487335, + 1.7881393432617188e-07 + ], + "min": [ + -1.4156103134155273e-07, + 0.022520173341035843, + 1.3969838619232178e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299228, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502896, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299236, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 526384, + "componentType": 5126, + "count": 44, + "max": [ + 6.4633792362656095e-07, + 9.4994896926436923e-07, + -2.0675361156463623e-07, + 1 + ], + "min": [ + 6.3012709006216028e-07, + 9.4727141686234972e-07, + -2.0721925864108925e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299412, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 502920, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299588, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 503448, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 299668, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 527088, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803959548473358, + 0.038298372179269791, + 0.044083651155233383, + 0.98228907585144043 + ], + "min": [ + 0.17803941667079926, + 0.038298297673463821, + 0.044083595275878906, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 299844, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 503688, + "componentType": 5126, + "count": 44, + "max": [ + -1.1175870895385742e-08, + -5.9604644775390625e-08, + 2.8870999813079834e-08 + ], + "min": [ + -1.4901161193847656e-08, + -1.3411045074462891e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300020, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504216, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 527792, + "componentType": 5126, + "count": 44, + "max": [ + -3.7252894102834944e-09, + -2.6077024983806041e-08, + -5.215405352032576e-08, + 1 + ], + "min": [ + -3.7252900764173091e-09, + -2.6426270949286845e-08, + -7.1362585174483684e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 300220, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504288, + "componentType": 5126, + "count": 44, + "max": [ + 8.5681676864624023e-08, + 0.033446438610553741, + 1.0617077350616455e-07 + ], + "min": [ + 3.7252902984619141e-08, + 0.033446401357650757, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300396, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 504816, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000003576278687, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 528496, + "componentType": 5126, + "count": 44, + "max": [ + 0.02151072584092617, + -0.016420751810073853, + 0.038739185780286789, + 0.99888283014297485 + ], + "min": [ + 0.021510183811187744, + -0.016420777887105942, + 0.038739174604415894, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 300676, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505128, + "componentType": 5126, + "count": 44, + "max": [ + 9.9651515483856201e-08, + -3.7252902984619141e-08, + 0 + ], + "min": [ + 2.9802322387695312e-08, + -1.3317912817001343e-07, + -8.6612999439239502e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300852, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505656, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 300868, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 529200, + "componentType": 5126, + "count": 44, + "max": [ + 1.8160790205001831e-08, + 2.6077030312876559e-08, + 5.5879358917820809e-09, + 1 + ], + "min": [ + 1.4901159417490817e-08, + 1.8626449715952731e-08, + -7.2177508414483782e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301044, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 505704, + "componentType": 5126, + "count": 44, + "max": [ + -4.6566128730773926e-10, + 0.04174477607011795, + 4.7497451305389404e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.041744619607925415, + -1.4156103134155273e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301220, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506232, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301236, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 529904, + "componentType": 5126, + "count": 44, + "max": [ + 0.16518239676952362, + -0.0088784974068403244, + 0.057382594794034958, + 0.98455238342285156 + ], + "min": [ + 0.16518184542655945, + -0.0088785132393240929, + 0.057382572442293167, + 0.98455226421356201 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301412, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506280, + "componentType": 5126, + "count": 44, + "max": [ + 1.5646219253540039e-07, + 0.020872481167316437, + 1.2759119272232056e-07 + ], + "min": [ + 1.5506520867347717e-07, + 0.020872429013252258, + -1.5646219253540039e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301588, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506808, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301604, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 530608, + "componentType": 5126, + "count": 44, + "max": [ + -3.4458938813486384e-08, + -1.862645149230957e-08, + 1.210719435817964e-08, + 1 + ], + "min": [ + -4.5634813261585805e-08, + -2.5145713067331599e-08, + -5.5879367799605006e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 301780, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 506856, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 301956, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 507384, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 531312, + "componentType": 5126, + "count": 44, + "max": [ + 0.006395676638931036, + -0.65799015760421753, + -0.26252904534339905, + 0.70575249195098877 + ], + "min": [ + 0.0063955890946090221, + -0.65799015760421753, + -0.26252913475036621, + 0.70575243234634399 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 302188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 507552, + "componentType": 5126, + "count": 44, + "max": [ + 2.491287887096405e-07, + -2.3283064365386963e-08, + -3.0174851417541504e-07 + ], + "min": [ + 6.4261257648468018e-08, + -5.9604644775390625e-08, + -3.7031713873147964e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302364, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508080, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302380, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 532016, + "componentType": 5126, + "count": 44, + "max": [ + -5.2386767146472835e-10, + 1.280568362460599e-08, + 4.470348002882929e-08, + 1 + ], + "min": [ + -1.3969839507410597e-08, + 5.5879354476928711e-09, + 3.2130628824234009e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 302556, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508128, + "componentType": 5126, + "count": 44, + "max": [ + 1.3131648302078247e-07, + 0.069626100361347198, + 4.0978193283081055e-08 + ], + "min": [ + -3.4458935260772705e-08, + 0.069626100361347198, + 2.4272594600915909e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302732, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508656, + "componentType": 5126, + "count": 23, + "max": [ + 1.0000005960464478, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 302824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 532720, + "componentType": 5126, + "count": 44, + "max": [ + 0.17803850769996643, + 0.038296077400445938, + 0.044083882123231888, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + 0.038296066224575043, + 0.044083878397941589, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 508932, + "componentType": 5126, + "count": 44, + "max": [ + 0.0086901094764471054, + -0.0083238258957862854, + 0.023024339228868484 + ], + "min": [ + 0.0086899055168032646, + -0.0083242375403642654, + 0.023024160414934158 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303176, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 509460, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 533424, + "componentType": 5126, + "count": 44, + "max": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "min": [ + 0.0063958079554140568, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 509580, + "componentType": 5126, + "count": 44, + "max": [ + -0.0073303841054439545, + 0.34354403614997864, + -0.021197730675339699 + ], + "min": [ + -0.0073305927217006683, + 0.34354394674301147, + -0.021197784692049026 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303568, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510108, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 534128, + "componentType": 5126, + "count": 44, + "max": [ + -0.18320606648921967, + 0.11237331479787827, + 0.12725982069969177, + 0.96830403804779053 + ], + "min": [ + -0.18320609629154205, + 0.11237329989671707, + 0.12725979089736938, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 303776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510204, + "componentType": 5126, + "count": 44, + "max": [ + -1.3038516044616699e-08, + 1.8812716007232666e-07, + -5.9022568166255951e-08 + ], + "min": [ + -4.0978193283081055e-08, + 1.3411045074462891e-07, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303952, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510732, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 303968, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 534832, + "componentType": 5126, + "count": 44, + "max": [ + -7.5669981391968122e-10, + 3.9581227184726231e-09, + 1.5832487321176814e-08, + 1 + ], + "min": [ + -2.5611373022371708e-09, + -9.1968130888631094e-09, + 5.6970757000840422e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 304144, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 510780, + "componentType": 5126, + "count": 44, + "max": [ + -9.3132257461547852e-09, + 0.032196063548326492, + 9.8720192909240723e-08 + ], + "min": [ + -5.657784640789032e-08, + 0.032196052372455597, + -3.4924596548080444e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304320, + "componentType": 5126, + "count": 30, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 511308, + "componentType": 5126, + "count": 30, + "max": [ + 1.0000005960464478, + 1, + 1.0000003576278687 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304440, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 535536, + "componentType": 5126, + "count": 44, + "max": [ + 0.05647679790854454, + 0.045752879232168198, + 0.025043454021215439, + 0.99704056978225708 + ], + "min": [ + 0.056476566940546036, + 0.045752864331007004, + 0.02504345029592514, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 304616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 511668, + "componentType": 5126, + "count": 44, + "max": [ + -4.5634806156158447e-08, + -5.0757080316543579e-08, + 3.166496753692627e-08 + ], + "min": [ + -1.1152587831020355e-07, + -6.3329935073852539e-08, + 1.3154931366443634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304792, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512196, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 304824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 536240, + "componentType": 5126, + "count": 44, + "max": [ + -1.0477378964424133e-09, + 3.5390264940815541e-08, + -2.9336666429458091e-08, + 1 + ], + "min": [ + -1.3969840839678227e-09, + 2.2926544218648814e-08, + -3.4458942366200063e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512292, + "componentType": 5126, + "count": 44, + "max": [ + 4.2840838432312012e-08, + 0.049540530890226364, + 7.1479007601737976e-08 + ], + "min": [ + -5.3085386753082275e-08, + 0.049540400505065918, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305176, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512820, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000004768371582, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000003576278687, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 536944, + "componentType": 5126, + "count": 44, + "max": [ + 0.11846214532852173, + 0.08524225652217865, + 0.013570736162364483, + 0.98919987678527832 + ], + "min": [ + 0.11846192926168442, + 0.085242249071598053, + 0.013570685870945454, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305392, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 512940, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244548320770264e-08, + 0.024770196527242661, + 3.14321368932724e-09 + ], + "min": [ + -5.6810677051544189e-08, + 0.024770122021436691, + -1.2665987014770508e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305568, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 513468, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 537648, + "componentType": 5126, + "count": 44, + "max": [ + -5.8393925428390503e-07, + -9.4092695235303836e-07, + 1.9185246458164329e-07, + 1 + ], + "min": [ + -5.9232110061202548e-07, + -9.4622384949616389e-07, + 1.8253922462463379e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 305776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 513564, + "componentType": 5126, + "count": 44, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 305952, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514092, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306008, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 538352, + "componentType": 5126, + "count": 44, + "max": [ + 0.21749138832092285, + 0.069006636738777161, + 0.0030257357284426689, + 0.97361516952514648 + ], + "min": [ + 0.21749110519886017, + 0.069006584584712982, + 0.003025716170668602, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 306184, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514260, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 2.0489096641540527e-07, + 5.005858838558197e-08 + ], + "min": [ + 4.6566128730773926e-08, + 4.8428773880004883e-08, + -1.6763806343078613e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306360, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514788, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306376, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 539056, + "componentType": 5126, + "count": 44, + "max": [ + -1.0710209608078003e-08, + 1.5774276107549667e-08, + -8.4827967387354026e-16, + 1 + ], + "min": [ + -2.3515896785397672e-08, + 3.7252898543727042e-09, + -5.7625584304332733e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 306552, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 514836, + "componentType": 5126, + "count": 75, + "max": [ + 6.7404471337795258e-08, + 0.068187162280082703, + 1.9717845134437084e-08 + ], + "min": [ + 9.7788870334625244e-09, + 0.068187043070793152, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306852, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 515736, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000004768371582, + 1.0000002384185791 + ], + "min": [ + 0.99999964237213135, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 306908, + "componentType": 5126, + "count": 75, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 539760, + "componentType": 5126, + "count": 75, + "max": [ + 0.2174726277589798, + 0.069102182984352112, + 0.003196704899892211, + 0.9736253023147583 + ], + "min": [ + 0.21745379269123077, + 0.068967744708061218, + 0.0028579330537468195, + 0.97361642122268677 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 307208, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 515904, + "componentType": 5126, + "count": 44, + "max": [ + -0.023247243836522102, + 0.34059673547744751, + -0.015326134860515594 + ], + "min": [ + -0.023247666656970978, + 0.34059673547744751, + -0.015326227992773056 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307384, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 516432, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999958276748657, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999910593032837, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307472, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 540960, + "componentType": 5126, + "count": 44, + "max": [ + -0.17811861634254456, + 0.13169923424720764, + 0.16719597578048706, + 0.960715651512146 + ], + "min": [ + -0.17811885476112366, + 0.13169918954372406, + 0.16719575226306915, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 307648, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 516696, + "componentType": 5126, + "count": 44, + "max": [ + 1.4901161193847656e-08, + 2.2069434635341167e-07, + 4.4703483581542969e-08 + ], + "min": [ + -6.0535967350006104e-08, + 1.6763806343078613e-07, + -1.155422069132328e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307824, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517224, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 307840, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 541664, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244546544413424e-08, + -2.2551405187698492e-17, + 6.5192566900407201e-09, + 1 + ], + "min": [ + -1.0710206943542744e-08, + -1.4901157641133977e-08, + -1.8626449271863521e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308016, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517272, + "componentType": 5126, + "count": 44, + "max": [ + 6.8685039877891541e-09, + 0.031800966709852219, + 8.5681676864624023e-08 + ], + "min": [ + -2.9802322387695312e-08, + 0.031800895929336548, + -5.7389115681871772e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308192, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517800, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308256, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 542368, + "componentType": 5126, + "count": 44, + "max": [ + 0.15024107694625854, + 0.10080229490995407, + 0.057818260043859482, + 0.98179608583450317 + ], + "min": [ + 0.15024106204509735, + 0.10080228000879288, + 0.057818230241537094, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 517992, + "componentType": 5126, + "count": 44, + "max": [ + 3.8184225559234619e-08, + 2.7008354663848877e-08, + 9.8720192909240723e-08 + ], + "min": [ + 2.1420419216156006e-08, + -3.3061951398849487e-08, + -6.1612809076905251e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308608, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 518520, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308616, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 543072, + "componentType": 5126, + "count": 44, + "max": [ + 7.9162418842315674e-09, + -1.4668330550193787e-08, + 6.7666361402984876e-10, + 1 + ], + "min": [ + 5.5879354476928711e-09, + -1.5599653124809265e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 308792, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 518544, + "componentType": 5126, + "count": 44, + "max": [ + 1.4202669262886047e-07, + 0.044816732406616211, + -1.1175870895385742e-08 + ], + "min": [ + -2.514570951461792e-08, + 0.044816642999649048, + -5.8731529861688614e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 308968, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519072, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000003576278687, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309048, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 543776, + "componentType": 5126, + "count": 44, + "max": [ + 0.073151916265487671, + 0.052601087838411331, + 0.0240433719009161, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043351411819458, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 309224, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519312, + "componentType": 5126, + "count": 44, + "max": [ + 1.4482066035270691e-07, + 0.02240833081305027, + 1.8253922462463379e-07 + ], + "min": [ + -3.7252902984619141e-09, + 0.022408243268728256, + 9.4791175797581673e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309400, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519840, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309432, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 544480, + "componentType": 5126, + "count": 44, + "max": [ + -6.4913183450698853e-07, + -9.6193980425596237e-07, + 1.9557775843281888e-08, + 1 + ], + "min": [ + -6.5483607158967061e-07, + -9.6461735665798187e-07, + 1.8859285688677119e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 309608, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 519936, + "componentType": 5126, + "count": 44, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309784, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 520464, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 309824, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 545184, + "componentType": 5126, + "count": 44, + "max": [ + 0.28130239248275757, + 0.10888323932886124, + -0.021744664758443832, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320952653885, + -0.021744726225733757, + 0.9531739354133606 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310000, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 520584, + "componentType": 5126, + "count": 44, + "max": [ + 8.9406967163085938e-08, + -4.4703483581542969e-08, + -4.9330992624163628e-09 + ], + "min": [ + 2.6077032089233398e-08, + -1.2665987014770508e-07, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310176, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521112, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310192, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 545888, + "componentType": 5126, + "count": 44, + "max": [ + -1.4028048944680904e-08, + 3.2130635929661366e-08, + -1.862645149230957e-08, + 1 + ], + "min": [ + -1.5250410712042139e-08, + 2.1012969142475413e-08, + -2.2351743567128324e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310368, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521160, + "componentType": 5126, + "count": 58, + "max": [ + 1.1920928955078125e-07, + 0.069797366857528687, + 2.9802322387695312e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.06979726254940033, + 2.0758307073265314e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310600, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 521856, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000002384185791, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 310668, + "componentType": 5126, + "count": 58, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 546592, + "componentType": 5126, + "count": 58, + "max": [ + 0.28130322694778442, + 0.10890334844589233, + -0.021634636446833611, + 0.95322173833847046 + ], + "min": [ + 0.28114649653434753, + 0.10886994004249573, + -0.021744493395090103, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 310900, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 522060, + "componentType": 5126, + "count": 44, + "max": [ + -0.034954406321048737, + 0.33536878228187561, + -0.0064069442451000214 + ], + "min": [ + -0.034954793751239777, + 0.33536875247955322, + -0.0064072869718074799 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311076, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 522588, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "min": [ + 0.9999995231628418, + 0.99999934434890747, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311232, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 547520, + "componentType": 5126, + "count": 44, + "max": [ + -0.17214225232601166, + 0.16701884567737579, + 0.2257961630821228, + 0.94418632984161377 + ], + "min": [ + -0.17214229702949524, + 0.16701878607273102, + 0.22579605877399445, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 311408, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523056, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 1.7136335372924805e-07, + 1.4062970876693726e-07 + ], + "min": [ + -1.0430812835693359e-07, + 1.6391277313232422e-07, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311584, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523584, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311600, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 548224, + "componentType": 5126, + "count": 44, + "max": [ + 5.1222746044743417e-09, + -2.0489098417897367e-08, + 9.3132248579763655e-09, + 1 + ], + "min": [ + -3.7252907425511239e-09, + -2.6077032089233398e-08, + 3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 311776, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 523632, + "componentType": 5126, + "count": 44, + "max": [ + -4.0978193283081055e-08, + 0.022592537105083466, + 1.862645149230957e-07 + ], + "min": [ + -5.5879354476928711e-08, + 0.022592464461922646, + -1.3504177331924438e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 311952, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524160, + "componentType": 5126, + "count": 22, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999997615814209, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312040, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 548928, + "componentType": 5126, + "count": 44, + "max": [ + 0.08288169652223587, + 0.044399194419384003, + 0.02859199233353138, + 0.99515920877456665 + ], + "min": [ + 0.082881465554237366, + 0.044399183243513107, + 0.028591975569725037, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524424, + "componentType": 5126, + "count": 44, + "max": [ + -1.4901161193847656e-08, + 6.3329935073852539e-08, + 1.1548399925231934e-07 + ], + "min": [ + -4.4703483581542969e-08, + -7.4505805969238281e-09, + -6.28642737865448e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312392, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 524952, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999964237213135, + 1 + ], + "min": [ + 0.9999997615814209, + 0.9999995231628418, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312416, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 549632, + "componentType": 5126, + "count": 44, + "max": [ + -1.0244550097127103e-08, + 3.8184232664661977e-08, + 1.3969841949901252e-09, + 1 + ], + "min": [ + -1.8277209079542445e-08, + 1.1175872671742582e-08, + -1.0477383405316232e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312592, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525024, + "componentType": 5126, + "count": 44, + "max": [ + 2.2165477275848389e-07, + 0.027876321226358414, + 6.9849193096160889e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.027876321226358414, + -3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312768, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525552, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 312820, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 550336, + "componentType": 5126, + "count": 44, + "max": [ + 0.041518151760101318, + 0.028988037258386612, + 0.020971935242414474, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.028988027945160866, + 0.020971909165382385, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 312996, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 525708, + "componentType": 5126, + "count": 44, + "max": [ + 3.7252902984619141e-08, + 0.013938121497631073, + 9.5926225185394287e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.013938065618276596, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313172, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526236, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 551040, + "componentType": 5126, + "count": 44, + "max": [ + -3.7136487662792206e-08, + 7.3574483394622803e-08, + -1.8015271052718163e-08, + 1 + ], + "min": [ + -3.771856427192688e-08, + 6.5425410866737366e-08, + -3.771856427192688e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 313364, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526284, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313540, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 526812, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999940395355225, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313628, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 551744, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057234764099121, + 0.17872513830661774, + -0.015338524244725704, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + 0.17872510850429535, + -0.01533864438533783, + 0.91919589042663574 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 313804, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527076, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 5.5879354476928711e-08, + 5.0582457333803177e-08 + ], + "min": [ + 1.9557774066925049e-08, + 2.9802322387695312e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 313980, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527604, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314012, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 552448, + "componentType": 5126, + "count": 44, + "max": [ + 4.4819907785154101e-09, + -1.9557775843281888e-08, + -1.8626450382086546e-09, + 1 + ], + "min": [ + 3.9581213862049935e-09, + -2.4214388716359281e-08, + -9.3132257461547852e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 314188, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 527700, + "componentType": 5126, + "count": 44, + "max": [ + 5.2154064178466797e-08, + 0.074802383780479431, + 8.2189217209815979e-08 + ], + "min": [ + 9.3132257461547852e-10, + 0.074802309274673462, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314364, + "componentType": 5126, + "count": 25, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 528228, + "componentType": 5126, + "count": 25, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999946355819702, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314464, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 553152, + "componentType": 5126, + "count": 44, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338567085564137, + 0.91919606924057007 + ], + "min": [ + 0.35057196021080017, + 0.17872488498687744, + -0.015338595025241375, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 314640, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 528528, + "componentType": 5126, + "count": 44, + "max": [ + -0.04457908496260643, + 0.32914415001869202, + 0.003998802974820137 + ], + "min": [ + -0.044579681009054184, + 0.32914391160011292, + 0.0039983503520488739 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314816, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529056, + "componentType": 5126, + "count": 17, + "max": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 0.99999970197677612, + 1.0000002384185791, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 314884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 553856, + "componentType": 5126, + "count": 44, + "max": [ + -0.13570015132427216, + 0.18749435245990753, + 0.27479097247123718, + 0.9332316517829895 + ], + "min": [ + -0.13570018112659454, + 0.18749421834945679, + 0.27479088306427002, + 0.93323159217834473 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 315060, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529260, + "componentType": 5126, + "count": 44, + "max": [ + -2.9802322387695312e-08, + 2.5657936930656433e-07, + 2.2293534129858017e-07 + ], + "min": [ + -3.5911216400563717e-07, + 1.4156103134155273e-07, + 1.7136335372924805e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315236, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529788, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315284, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 554560, + "componentType": 5126, + "count": 44, + "max": [ + 3.3527609133443548e-08, + -1.1175873559921001e-08, + -6.7055218266887096e-08, + 1 + ], + "min": [ + 2.6077035641947077e-08, + -1.9557777619638728e-08, + -6.7055232477741811e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 315460, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 529932, + "componentType": 5126, + "count": 62, + "max": [ + 2.9453076422214508e-08, + 0.25792214274406433, + 1.10274413600564e-07 + ], + "min": [ + -2.6077032089233398e-08, + 0.25792214274406433, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315708, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 530676, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999988079071045, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 315788, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 555264, + "componentType": 5126, + "count": 62, + "max": [ + 0.18952548503875732, + 0.862018883228302, + 0.25933584570884705, + 0.54869121313095093 + ], + "min": [ + -0.12748821079730988, + -0.83302551507949829, + -0.25432384014129639, + -0.49989840388298035 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 316036, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 530916, + "componentType": 5126, + "count": 73, + "max": [ + 3.6135315895080566e-07, + 0.12896072864532471, + 6.6868960857391357e-07 + ], + "min": [ + -2.4214386940002441e-08, + 0.12896066904067993, + 4.0978193283081055e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 316328, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 531792, + "componentType": 5126, + "count": 66, + "max": [ + 0.99999946355819702, + 1.0000060796737671, + 0.99999970197677612 + ], + "min": [ + 0.99999940395355225, + 1.0000019073486328, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 316592, + "componentType": 5126, + "count": 73, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 556256, + "componentType": 5126, + "count": 73, + "max": [ + 5.5228764495041105e-07, + 0.88032650947570801, + 2.0877798760920996e-06, + 0.57146942615509033 + ], + "min": [ + -1.6583379647272523e-06, + -0.86505520343780518, + -3.6067189057575888e-07, + -0.49276342988014221 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 316884, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 532584, + "componentType": 5126, + "count": 44, + "max": [ + 1.0430812835693359e-07, + 0.13927136361598969, + 3.7252902984619141e-08 + ], + "min": [ + 2.6077032089233398e-08, + 0.13927134871482849, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317060, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533112, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000004768371582, + 0.99999815225601196, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999785423278809, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317124, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 557424, + "componentType": 5126, + "count": 44, + "max": [ + 0.25531542301177979, + -0.090401209890842438, + 0.19322685897350311, + 0.94302976131439209 + ], + "min": [ + 0.25531518459320068, + -0.090401247143745422, + 0.19322679936885834, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 317300, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533304, + "componentType": 5126, + "count": 42, + "max": [ + -0.044326536357402802, + -0.1107146143913269, + 0.071930199861526489 + ], + "min": [ + -0.044326584786176682, + -0.11071475595235825, + 0.071930162608623505 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317468, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533808, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000007152557373, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317500, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 558128, + "componentType": 5126, + "count": 44, + "max": [ + -0.25531512498855591, + 0.090401209890842438, + -0.19322690367698669, + 0.94302976131439209 + ], + "min": [ + -0.25531551241874695, + 0.090401172637939453, + -0.19322693347930908, + 0.94302970170974731 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 317676, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 533904, + "componentType": 5126, + "count": 51, + "max": [ + 6.7055225372314453e-08, + -1.4901161193847656e-08, + 4.5821070671081543e-07 + ], + "min": [ + 1.4901161193847656e-08, + -6.7055225372314453e-08, + -5.5879354476928711e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317880, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 534516, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000001192092896, + 0.99999737739562988, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 0.99999713897705078, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 317928, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 558832, + "componentType": 5126, + "count": 51, + "max": [ + 1.5986180414984119e-06, + 6.5378839053664706e-07, + 1.0989626275659248e-07, + 1 + ], + "min": [ + -6.2631590935779968e-07, + -2.9895460329498746e-07, + -1.1252719787080423e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 318132, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 534660, + "componentType": 5126, + "count": 62, + "max": [ + 3.7252902984619141e-08, + 0.27854269742965698, + 6.1700120568275452e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.27854260802268982, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318380, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 535404, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318412, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 559648, + "componentType": 5126, + "count": 62, + "max": [ + 0.25531500577926636, + -0.090401500463485718, + 0.19322660565376282, + 0.97295737266540527 + ], + "min": [ + 0.088571898639202118, + -0.12242159247398376, + 0.17470519244670868, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 318660, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 535500, + "componentType": 5126, + "count": 49, + "max": [ + -6.3329935073852539e-08, + 0.1392713338136673, + 4.6752393245697021e-07 + ], + "min": [ + -3.8743019104003906e-07, + 0.13927125930786133, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318856, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536088, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 318904, + "componentType": 5126, + "count": 49, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 560640, + "componentType": 5126, + "count": 49, + "max": [ + 8.0838265148486244e-07, + 1.0641290828061756e-05, + -5.9930619045189815e-07, + 1 + ], + "min": [ + -2.5704500217216264e-07, + 1.0624992683005985e-05, + -1.5478608474950306e-06, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319100, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536232, + "componentType": 5126, + "count": 62, + "max": [ + 0.027315612882375717, + 0.33446058630943298, + 0.019757712259888649 + ], + "min": [ + 0.027315512299537659, + 0.3344605565071106, + 0.019757680594921112 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319348, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 536976, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319364, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 561424, + "componentType": 5126, + "count": 62, + "max": [ + 0.31360745429992676, + 0.89108163118362427, + 0.38839563727378845, + 0.53848600387573242 + ], + "min": [ + -0.2558843195438385, + -0.75346994400024414, + -0.29668533802032471, + -0.48917782306671143 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319612, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537024, + "componentType": 5126, + "count": 44, + "max": [ + 7.7299773693084717e-08, + 8.3819031715393066e-09, + 3.7709014577558264e-07 + ], + "min": [ + 6.3060724642127752e-08, + -4.2840838432312012e-08, + 1.4155102689983323e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319788, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537552, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 0.99999988079071045 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 319804, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 562416, + "componentType": 5126, + "count": 44, + "max": [ + -6.9740049291056039e-09, + -3.2074240152724087e-08, + 6.7055218266887096e-08, + 1 + ], + "min": [ + -8.3091427072190527e-09, + -3.2596290111541748e-08, + 4.4711793378837683e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 319980, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537600, + "componentType": 5126, + "count": 32, + "max": [ + -0.023130090907216072, + 0.26697903871536255, + 0.14965285360813141 + ], + "min": [ + -0.023130100220441818, + 0.26697865128517151, + 0.14965265989303589 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320108, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 537984, + "componentType": 5126, + "count": 26, + "max": [ + 0.9999997615814209, + 0.99999970197677612, + 0.99999988079071045 + ], + "min": [ + 0.9999992847442627, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320212, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 563120, + "componentType": 5126, + "count": 44, + "max": [ + -0.69586670398712158, + 0.39777567982673645, + 0.2970302402973175, + 0.51895773410797119 + ], + "min": [ + -0.69586670398712158, + 0.39777567982673645, + 0.29703012108802795, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 320388, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 538296, + "componentType": 5126, + "count": 76, + "max": [ + 1.0931486826848413e-09, + 0.30786654353141785, + -5.9604641222676946e-08 + ], + "min": [ + 1.0658141036401503e-14, + 0.30786639451980591, + -1.6391277313232422e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320692, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 539208, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 320740, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 563824, + "componentType": 5126, + "count": 76, + "max": [ + 0.02813417837023735, + 0.04692772775888443, + 0.064789041876792908, + 0.99997901916503906 + ], + "min": [ + -0.32651358842849731, + -0.051261916756629944, + -0.045433927327394485, + 0.94519251585006714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 321044, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 539352, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 321348, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 540264, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 321412, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 565040, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 321716, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 540456, + "componentType": 5126, + "count": 76, + "max": [ + -3.5527136788005009e-15, + 0.7767413854598999, + 5.9604612800967516e-08 + ], + "min": [ + -1.4210854715202004e-14, + 0.7767413854598999, + 1.3038500945583564e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322020, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 541368, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322084, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 566256, + "componentType": 5126, + "count": 76, + "max": [ + 0.34417185187339783, + 0.021968081593513489, + 0.02796647883951664, + 0.99766755104064941 + ], + "min": [ + 0.061210200190544128, + -0.0024226277600973845, + -0.029155401512980461, + 0.93856674432754517 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 322388, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 541560, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322692, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 542472, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 322748, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 567472, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323052, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 542640, + "componentType": 5126, + "count": 44, + "max": [ + -8.3527993410825729e-09, + -1.3605159665530664e-08, + -2.5611370801925659e-08 + ], + "min": [ + -2.0985442716892067e-08, + -2.0023435354232788e-08, + -2.8113703365306719e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323228, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543168, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323244, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 568688, + "componentType": 5126, + "count": 44, + "max": [ + 2.6077033865590238e-08, + 1.8684659153223038e-08, + 9.8415497973292076e-11, + 1 + ], + "min": [ + 2.3908793167493059e-08, + 1.8663602219248787e-08, + -1.0186340659856796e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323420, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543216, + "componentType": 5126, + "count": 62, + "max": [ + 6.3351762946695089e-08, + 0.3134346604347229, + -1.3707904145121574e-08 + ], + "min": [ + -2.070737536996603e-08, + 0.31343457102775574, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323668, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 543960, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 1.0000005960464478, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 323732, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 569392, + "componentType": 5126, + "count": 62, + "max": [ + 0.0025871710386127234, + 0.99285906553268433, + -0.11926846206188202, + 0.00012465365580283105 + ], + "min": [ + -0.0024580515455454588, + 0.92896300554275513, + -0.37012156844139099, + -0.0055759232491254807 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 323980, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544152, + "componentType": 5126, + "count": 44, + "max": [ + 2.6804627850651741e-08, + 2.1420419216156006e-08, + -2.7474015951156616e-08 + ], + "min": [ + -5.50062395632267e-09, + -7.6368451118469238e-08, + -4.2608007788658142e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324156, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544680, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324172, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 570384, + "componentType": 5126, + "count": 44, + "max": [ + -5.2322903343338112e-08, + 7.1333474238599592e-08, + 2.0081638574254157e-09, + 1 + ], + "min": [ + -5.8862475782461843e-08, + 7.1071532659061631e-08, + 1.4624671473839612e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 324348, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 544728, + "componentType": 5126, + "count": 44, + "max": [ + 2.1187588572502136e-08, + 0.4787544310092926, + -8.5856299847364426e-09 + ], + "min": [ + 2.0489096641540527e-08, + 0.47875440120697021, + -4.377216100692749e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324524, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545256, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324564, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 571088, + "componentType": 5126, + "count": 44, + "max": [ + -0.52016502618789673, + 0.033435296267271042, + -0.058115001767873764, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + 0.033435288816690445, + -0.058115016669034958, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 324740, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545376, + "componentType": 5126, + "count": 44, + "max": [ + 6.5425410866737366e-08, + 0.23937709629535675, + 2.0582228899002075e-07 + ], + "min": [ + 5.7741999626159668e-08, + 0.23937708139419556, + 2.1245796233415604e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324916, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 545904, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 324948, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 571792, + "componentType": 5126, + "count": 44, + "max": [ + 1.1330482152516197e-07, + 0.039239484816789627, + 1.3776725893421826e-07, + 0.99922984838485718 + ], + "min": [ + -6.5417602002071362e-08, + 0.039239473640918732, + 1.197672219177548e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325124, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546000, + "componentType": 5126, + "count": 44, + "max": [ + -7.4505805969238281e-09, + 0.2127838134765625, + 3.5390257835388184e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.21278376877307892, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325300, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546528, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325316, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 572496, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897858619689941, + 0.18448328971862793, + 0.7880139946937561, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448323011398315, + 0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325492, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546576, + "componentType": 5126, + "count": 29, + "max": [ + -0.15143665671348572, + 0.084600716829299927, + -0.12323382496833801 + ], + "min": [ + -0.15143668651580811, + 0.084600701928138733, + -0.12323392927646637 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325608, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 546924, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000003576278687, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325640, + "componentType": 5126, + "count": 43, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 573200, + "componentType": 5126, + "count": 43, + "max": [ + 0.27897855639457703, + -0.18448324501514435, + -0.78801393508911133, + 0.51688575744628906 + ], + "min": [ + 0.27897855639457703, + -0.18448333442211151, + -0.7880139946937561, + 0.51688575744628906 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 325812, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547020, + "componentType": 5126, + "count": 46, + "max": [ + 1.4156103134155273e-07, + -1.1102230246251565e-16, + 8.2072801887989044e-09 + ], + "min": [ + 2.8638169169425964e-08, + -1.4156103134155273e-07, + -9.8720192909240723e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 325996, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547572, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326052, + "componentType": 5126, + "count": 46, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 573888, + "componentType": 5126, + "count": 46, + "max": [ + 6.8091333105257945e-07, + 2.3933393094921485e-05, + 1.6187550500035286e-07, + 1 + ], + "min": [ + 1.8324499251320958e-08, + 1.1525117749044966e-08, + -5.9022578824396987e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 326236, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 547740, + "componentType": 5126, + "count": 62, + "max": [ + 4.0978193283081055e-08, + 0.425567626953125, + 6.1467289924621582e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.42556756734848022, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326484, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 548484, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326516, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 574624, + "componentType": 5126, + "count": 62, + "max": [ + -0.20713317394256592, + 0.28850480914115906, + 0.78801411390304565, + 0.54963231086730957 + ], + "min": [ + -0.2789786159992218, + 0.1844828724861145, + 0.75615155696868896, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 326764, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 548580, + "componentType": 5126, + "count": 51, + "max": [ + 1.1920928955078125e-07, + 0.2127840518951416, + 1.862645149230957e-08 + ], + "min": [ + 7.0780515670776367e-08, + 0.21278393268585205, + -9.6857547760009766e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 326968, + "componentType": 5126, + "count": 39, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549192, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327124, + "componentType": 5126, + "count": 51, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 575616, + "componentType": 5126, + "count": 51, + "max": [ + 7.8231160216546414e-08, + 1.0408691650809487e-06, + 2.4959456368378596e-07, + 1 + ], + "min": [ + -4.0396113121232702e-08, + -8.2217147792107426e-06, + -1.9371503867660067e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 327328, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549660, + "componentType": 5126, + "count": 8, + "max": [ + 0.21592013537883759, + 0.36957690119743347, + -0.15007573366165161 + ], + "min": [ + 0.21592012047767639, + 0.36957681179046631, + -0.15007573366165161 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327360, + "componentType": 5126, + "count": 15, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549756, + "componentType": 5126, + "count": 15, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327420, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 576432, + "componentType": 5126, + "count": 61, + "max": [ + 0.5648232102394104, + 0.76465153694152832, + -0.091373778879642487, + -0.29628229141235352 + ], + "min": [ + 0.53586781024932861, + 0.75361925363540649, + -0.15842762589454651, + -0.34612774848937988 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 327664, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 549936, + "componentType": 5126, + "count": 44, + "max": [ + -1.2259971526873414e-07, + -7.3088671115328907e-08, + -4.0905604237195803e-08 + ], + "min": [ + -1.3599580483969476e-07, + -8.517139349351055e-08, + -4.5681133542530006e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327840, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 550464, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 327848, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 577408, + "componentType": 5126, + "count": 44, + "max": [ + 1.1175901093452012e-08, + -9.4372563097522288e-09, + -3.5528871511480986e-10, + 1 + ], + "min": [ + 9.313238180652661e-09, + -9.4372580861090682e-09, + -3.5529088004970788e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328024, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 550488, + "componentType": 5126, + "count": 62, + "max": [ + 1.6647391021251678e-08, + 0.31343457102775574, + 2.0343577489256859e-08 + ], + "min": [ + -8.512869853483096e-10, + 0.31343457102775574, + -1.3722456060349941e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328272, + "componentType": 5126, + "count": 13, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551232, + "componentType": 5126, + "count": 13, + "max": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328324, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 578112, + "componentType": 5126, + "count": 62, + "max": [ + 0.0024187478702515364, + 0.9928591251373291, + -0.11926830559968948, + -0.00012465358304325491 + ], + "min": [ + 0.0023210074286907911, + 0.93666654825210571, + -0.35021412372589111, + -0.00069195707328617573 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328572, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551388, + "componentType": 5126, + "count": 44, + "max": [ + 8.1534381024539471e-08, + 1.1175870895385742e-07, + 5.4686097428202629e-08 + ], + "min": [ + 7.0023816078901291e-08, + 7.543712854385376e-08, + 3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328748, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551916, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 328756, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 579104, + "componentType": 5126, + "count": 44, + "max": [ + -1.8806686763461755e-10, + -6.7157088778913021e-08, + -2.9685904845422328e-09, + 1 + ], + "min": [ + -1.520882619843178e-08, + -6.7266228143125772e-08, + -3.2378011383116245e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 328932, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 551940, + "componentType": 5126, + "count": 62, + "max": [ + 5.029141902923584e-08, + 0.47875425219535828, + 4.0221493691205978e-08 + ], + "min": [ + 2.3283064365386963e-09, + 0.47875422239303589, + -2.648448571562767e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329180, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 552684, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329244, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 579808, + "componentType": 5126, + "count": 62, + "max": [ + -0.41608899831771851, + -0.026813115924596786, + 0.061982251703739166, + 0.90681266784667969 + ], + "min": [ + -0.5201650857925415, + -0.033445984125137329, + 0.058115005493164062, + 0.8514288067817688 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 329492, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 552876, + "componentType": 5126, + "count": 62, + "max": [ + 1.1362135410308838e-07, + 0.23937729001045227, + 2.7127680368721485e-07 + ], + "min": [ + -9.0803951025009155e-09, + 0.23937720060348511, + 1.1638621799647808e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329740, + "componentType": 5126, + "count": 28, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 553620, + "componentType": 5126, + "count": 28, + "max": [ + 0.99999970197677612, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999910593032837, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 329852, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 580800, + "componentType": 5126, + "count": 62, + "max": [ + -1.6684623460605508e-07, + -0.029555587098002434, + 2.9842786375411379e-07, + 0.99956315755844116 + ], + "min": [ + -5.78927199512691e-07, + -0.039239216595888138, + 2.451136253966979e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330100, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 553956, + "componentType": 5126, + "count": 44, + "max": [ + 4.4703483581542969e-08, + 0.21278379857540131, + 2.2351741790771484e-08 + ], + "min": [ + -3.7252902984619141e-09, + 0.21278361976146698, + -1.862645149230957e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330276, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554484, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330292, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 581792, + "componentType": 5126, + "count": 44, + "max": [ + -0.27897849678993225, + -0.18448299169540405, + -0.78801417350769043, + 0.51688557863235474 + ], + "min": [ + -0.2789786159992218, + -0.18448303639888763, + -0.78801417350769043, + 0.51688551902770996 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330468, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554532, + "componentType": 5126, + "count": 23, + "max": [ + 0.15143664181232452, + 0.084600932896137238, + -0.12323371320962906 + ], + "min": [ + 0.15143662691116333, + 0.084600888192653656, + -0.12323376536369324 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330560, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 554808, + "componentType": 5126, + "count": 18, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999970197677612, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330632, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 582496, + "componentType": 5126, + "count": 44, + "max": [ + 0.2789786159992218, + 0.18448309600353241, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448290228843689, + 0.78801429271697998, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 330808, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555024, + "componentType": 5126, + "count": 44, + "max": [ + 2.0768493413925171e-07, + 1.7881393432617188e-07, + 1.5931436792016029e-07 + ], + "min": [ + 3.4458935260772705e-08, + -5.7741999626159668e-08, + 1.7462298274040222e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 330984, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555552, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999982118606567, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331040, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 583200, + "componentType": 5126, + "count": 44, + "max": [ + 2.7602067120824358e-07, + 1.0858637722321873e-07, + 2.1432063590509642e-07, + 1 + ], + "min": [ + 2.4866312742233276e-07, + 9.3830728076227388e-08, + 1.3275710841753607e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 331216, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 555720, + "componentType": 5126, + "count": 44, + "max": [ + 2.9802322387695312e-08, + 0.42556747794151306, + -1.1175870895385742e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331392, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556248, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331408, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 583904, + "componentType": 5126, + "count": 44, + "max": [ + -0.2789786159992218, + -0.18448291718959808, + -0.7880139946937561, + 0.51688581705093384 + ], + "min": [ + -0.27897864580154419, + -0.18448294699192047, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 331584, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556296, + "componentType": 5126, + "count": 44, + "max": [ + 1.2665987014770508e-07, + 0.21278375387191772, + 8.1956386566162109e-08 + ], + "min": [ + 0, + 0.2127835750579834, + 3.166496753692627e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331760, + "componentType": 5126, + "count": 26, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 556824, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 1, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 331864, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 584608, + "componentType": 5126, + "count": 44, + "max": [ + 1.0640362546610049e-07, + -1.8626433728741176e-09, + -1.3411043653377419e-07, + 1 + ], + "min": [ + 2.1420424545226524e-08, + -1.4435499906539917e-08, + -1.7322605572189786e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 332040, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557136, + "componentType": 5126, + "count": 8, + "max": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007565915584564 + ], + "min": [ + -0.21592004597187042, + 0.36957693099975586, + -0.15007568895816803 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332072, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557232, + "componentType": 5126, + "count": 20, + "max": [ + 1.0000002384185791, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332152, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 585312, + "componentType": 5126, + "count": 61, + "max": [ + -0.5353204607963562, + 0.76489150524139404, + -0.089343681931495667, + 0.34697279334068298 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842773020267487, + 0.29627442359924316 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 332396, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 557472, + "componentType": 5126, + "count": 76, + "max": [ + 3.5527136788005009e-15, + 0.40506207942962646, + -3.7252838591683712e-09 + ], + "min": [ + -3.5527136788005009e-15, + 0.4050619900226593, + -3.7252838591683712e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332700, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558384, + "componentType": 5126, + "count": 14, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 332756, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 586288, + "componentType": 5126, + "count": 76, + "max": [ + 0.45795947313308716, + 0.00012342953414190561, + 0.020993957296013832, + 0.99943441152572632 + ], + "min": [ + -0.12670668959617615, + -0.021726660430431366, + -0.024585725739598274, + 0.88845950365066528 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 333060, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558552, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333188, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 558936, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333268, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 587504, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 333332, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 559176, + "componentType": 5126, + "count": 62, + "max": [ + 2.5331974029541016e-07, + -6.5600033849477768e-08, + 3.457535058259964e-07 + ], + "min": [ + 4.1058228816837072e-08, + -7.4505805969238281e-08, + -1.2380769476294518e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333580, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 559920, + "componentType": 5126, + "count": 48, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999856948852539, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 333772, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 587760, + "componentType": 5126, + "count": 62, + "max": [ + 0.31903618574142456, + 0.83380436897277832, + 0.38887384533882141, + 0.53821998834609985 + ], + "min": [ + -0.29336035251617432, + -0.78853166103363037, + -0.178261399269104, + -0.49746593832969666 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 334020, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 560496, + "componentType": 5126, + "count": 76, + "max": [ + -0.26036855578422546, + 0.40595054626464844, + 1.5910658836364746 + ], + "min": [ + -0.34199029207229614, + -0.58949857950210571, + 1.3158692121505737 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334324, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 561408, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334340, + "componentType": 5126, + "count": 57, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 588752, + "componentType": 5126, + "count": 57, + "max": [ + 0.26693454384803772, + 0.0066416580229997635, + 0.49643996357917786, + 0.86823564767837524 + ], + "min": [ + -0.0041304193437099457, + -0.15294694900512695, + 0.47229203581809998, + 0.82601052522659302 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 334568, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 561456, + "componentType": 5126, + "count": 62, + "max": [ + 2.2351741790771484e-07, + 1.6391277313232422e-07, + 6.7229848355054855e-08 + ], + "min": [ + -1.2143573258072138e-07, + -2.0314473658800125e-08, + -1.2830423656851053e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334816, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 562200, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999946355819702, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 334908, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 589664, + "componentType": 5126, + "count": 62, + "max": [ + -0.23966479301452637, + 0.83489787578582764, + -0.010105871595442295, + 0.53755342960357666 + ], + "min": [ + -0.31892061233520508, + 0.70873379707336426, + -0.38902318477630615, + 0.45567795634269714 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335156, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 562476, + "componentType": 5126, + "count": 76, + "max": [ + 0.33467236161231995, + 0.40596455335617065, + 1.5970340967178345 + ], + "min": [ + 0.25312399864196777, + -0.58949851989746094, + 1.3158689737319946 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335460, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563388, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335476, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 590656, + "componentType": 5126, + "count": 61, + "max": [ + 0.26693445444107056, + 0.15294697880744934, + -0.47229218482971191, + 0.86833691596984863 + ], + "min": [ + -0.0041304901242256165, + -0.0066405138932168484, + -0.49643999338150024, + 0.82601046562194824 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335720, + "componentType": 5126, + "count": 32, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563436, + "componentType": 5126, + "count": 32, + "max": [ + -7.1054273576010019e-15, + 0.055200070142745972, + 0.19749566912651062 + ], + "min": [ + -7.1054273576010019e-15, + 0.055200040340423584, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335848, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 563820, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 335928, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 591632, + "componentType": 5126, + "count": 16, + "max": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261127103083709e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 335992, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 564060, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336252, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 564840, + "componentType": 5126, + "count": 14, + "max": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336308, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 591888, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482402078807354, + 0.050301726907491684, + -0.13049675524234772, + 0.99035394191741943 + ], + "min": [ + -0.10657285898923874, + 0.021294226869940758, + -0.19060800969600677, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 336568, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565008, + "componentType": 5126, + "count": 61, + "max": [ + 1.4901161193847656e-07, + 0.40159711241722107, + 1.1362135410308838e-07 + ], + "min": [ + -8.9406967163085938e-08, + 0.40159705281257629, + 8.9406967163085938e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336812, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565740, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 336844, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 592928, + "componentType": 5126, + "count": 61, + "max": [ + 0.10101209580898285, + 0.79781532287597656, + -0.48497870564460754, + 0.34399190545082092 + ], + "min": [ + 0.098647758364677429, + 0.79416829347610474, + -0.49210125207901001, + 0.34075361490249634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 337088, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 565836, + "componentType": 5126, + "count": 65, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337348, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 566616, + "componentType": 5126, + "count": 22, + "max": [ + 0.99999988079071045, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999940395355225, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337436, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 593904, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + 0.39800706505775452, + 0.12996619939804077, + 0.71552276611328125 + ], + "min": [ + -0.71051287651062012, + 0.32775342464447021, + 0.11965014040470123, + 0.60228627920150757 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 337696, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 566880, + "componentType": 5126, + "count": 48, + "max": [ + 6.3329935073852539e-08, + 0.57860541343688965, + 1.1920928955078125e-07 + ], + "min": [ + -1.1175870895385742e-07, + 0.57860535383224487, + -1.4621764421463013e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337888, + "componentType": 5126, + "count": 17, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 567456, + "componentType": 5126, + "count": 17, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999964237213135 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 337956, + "componentType": 5126, + "count": 48, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 594944, + "componentType": 5126, + "count": 48, + "max": [ + 0.92845195531845093, + -0.11104342341423035, + -0.17516587674617767, + -0.3081190288066864 + ], + "min": [ + 0.92842531204223633, + -0.11126615852117538, + -0.17523978650569916, + -0.30816107988357544 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 338148, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 567660, + "componentType": 5126, + "count": 65, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338408, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 568440, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338472, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 595712, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283455908298492, + 0.032020483165979385, + -0.13898766040802002, + 0.98970133066177368 + ], + "min": [ + 0.028427693992853165, + -0.0079914368689060211, + -0.18251502513885498, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 338732, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 568632, + "componentType": 5126, + "count": 44, + "max": [ + -2.2351741790771484e-08, + 0.40799102187156677, + 8.9406967163085938e-08 + ], + "min": [ + -2.2351741790771484e-08, + 0.40799081325531006, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338908, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 569160, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 338932, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 596752, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477138519287109, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.2049534022808075, + -0.34477156400680542, + -0.41790062189102173 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 339108, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 569232, + "componentType": 5126, + "count": 66, + "max": [ + -3.5390257835388184e-08, + 0.25762295722961426, + 1.0430812835693359e-07 + ], + "min": [ + -5.9604644775390625e-08, + 0.25762289762496948, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339372, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 570024, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999988079071045, + 1, + 1 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339420, + "componentType": 5126, + "count": 66, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 597456, + "componentType": 5126, + "count": 66, + "max": [ + 0.039370987564325333, + -0.35136982798576355, + -0.10439129918813705, + 0.92913961410522461 + ], + "min": [ + -0.069767095148563385, + -0.39026340842247009, + -0.19707934558391571, + 0.8974766731262207 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 339684, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 570168, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 339964, + "componentType": 5126, + "count": 18, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 571008, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999970197677612, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340036, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 598512, + "componentType": 5126, + "count": 70, + "max": [ + -0.20383869111537933, + -0.24999281764030457, + -0.10704649239778519, + 0.92756563425064087 + ], + "min": [ + -0.28683879971504211, + -0.29430055618286133, + -0.14076334238052368, + 0.91400915384292603 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 340316, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 571224, + "componentType": 5126, + "count": 65, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340576, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572004, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 340592, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 599632, + "componentType": 5126, + "count": 65, + "max": [ + 0.013482395559549332, + -0.021294243633747101, + 0.19060802459716797, + 0.98735207319259644 + ], + "min": [ + -0.10657297074794769, + -0.050301786512136459, + 0.15652680397033691, + 0.97570103406906128 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 340852, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572052, + "componentType": 5126, + "count": 61, + "max": [ + -2.9802322387695312e-08, + 0.40159735083580017, + 2.9802322387695312e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159720182418823, + -1.8719583749771118e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341096, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 572784, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999995231628418, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341188, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 600672, + "componentType": 5126, + "count": 61, + "max": [ + -0.098626755177974701, + 0.79781526327133179, + -0.48497873544692993, + -0.34072357416152954 + ], + "min": [ + -0.10101209580898285, + 0.79433190822601318, + -0.49176180362701416, + -0.34399190545082092 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 341432, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 573060, + "componentType": 5126, + "count": 65, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341692, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 573840, + "componentType": 5126, + "count": 20, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999964237213135, + 0.99999958276748657, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 341772, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 601648, + "componentType": 5126, + "count": 65, + "max": [ + -0.59007471799850464, + -0.32775342464447021, + -0.11965020000934601, + 0.71552276611328125 + ], + "min": [ + -0.71051293611526489, + -0.35182005167007446, + -0.12673491239547729, + 0.60228615999221802 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342032, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574080, + "componentType": 5126, + "count": 47, + "max": [ + 2.0489096641540527e-07, + 0.57860565185546875, + -2.6077032089233398e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.5786055326461792, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342220, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574644, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1.0000003576278687, + 1.0000004768371582 + ], + "min": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342244, + "componentType": 5126, + "count": 47, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 602688, + "componentType": 5126, + "count": 47, + "max": [ + 0.92845195531845093, + 0.11125477403402328, + 0.17524003982543945, + -0.30811884999275208 + ], + "min": [ + 0.92842662334442139, + 0.11104369908571243, + 0.17516998946666718, + -0.30815878510475159 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342432, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 574716, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342692, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 575496, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 342724, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 603440, + "componentType": 5126, + "count": 65, + "max": [ + 0.14283470809459686, + 0.0088066589087247849, + 0.16933223605155945, + 0.98970133066177368 + ], + "min": [ + 0.028427686542272568, + -0.019136985763907433, + 0.13898757100105286, + 0.97512298822402954 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 342984, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 575592, + "componentType": 5126, + "count": 44, + "max": [ + 5.9604644775390625e-08, + 0.40799111127853394, + -2.9802322387695312e-08 + ], + "min": [ + -5.2154064178466797e-08, + 0.40799090266227722, + -9.4994902610778809e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343160, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 576120, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000005960464478 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343224, + "componentType": 5126, + "count": 44, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 604480, + "componentType": 5126, + "count": 44, + "max": [ + 0.81516003608703613, + 0.20495344698429108, + 0.34477177262306213, + -0.41790032386779785 + ], + "min": [ + 0.81515997648239136, + 0.2049533873796463, + 0.34477171301841736, + -0.41790041327476501 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 343400, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 576312, + "componentType": 5126, + "count": 65, + "max": [ + 7.4505805969238281e-09, + 0.25762268900871277, + 1.1920928955078125e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.25762262940406799, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343660, + "componentType": 5126, + "count": 23, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 577092, + "componentType": 5126, + "count": 23, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999946355819702, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 343752, + "componentType": 5126, + "count": 65, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 605184, + "componentType": 5126, + "count": 65, + "max": [ + 0.0066518010571599007, + 0.39026358723640442, + 0.19700069725513458, + 0.9289700984954834 + ], + "min": [ + -0.058489475399255753, + 0.35156607627868652, + 0.10443667322397232, + 0.89747649431228638 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 344012, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 577368, + "componentType": 5126, + "count": 70, + "max": [ + -7.1054273576010019e-15, + 0.7767413854598999, + 2.0489082430685812e-08 + ], + "min": [ + -2.1316282072803006e-14, + 0.77674132585525513, + -3.3362201889985954e-14 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344292, + "componentType": 5126, + "count": 14, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 578208, + "componentType": 5126, + "count": 14, + "max": [ + 1, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344348, + "componentType": 5126, + "count": 70, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 606224, + "componentType": 5126, + "count": 70, + "max": [ + -0.24710692465305328, + 0.27446892857551575, + 0.14082302153110504, + 0.92143428325653076 + ], + "min": [ + -0.2868388295173645, + 0.24999246001243591, + 0.12068088352680206, + 0.9139406681060791 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 344628, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 578376, + "componentType": 5126, + "count": 76, + "max": [ + 4.6566128730773926e-10, + 3.7252902984619141e-08, + 3.7252902984619141e-09 + ], + "min": [ + -7.1054273576010019e-15, + 3.5411304111221398e-08, + -6.4958356915667537e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344932, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 579288, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 344948, + "componentType": 5126, + "count": 76, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 607344, + "componentType": 5126, + "count": 76, + "max": [ + 0.85426288843154907, + 0.0066217477433383465, + 0.014461612328886986, + 0.837211012840271 + ], + "min": [ + 0.54646176099777222, + -0.029488945379853249, + -0.032124951481819153, + 0.51896250247955322 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 345252, + "componentType": 5126, + "count": 62, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 579336, + "componentType": 5126, + "count": 62, + "max": [ + 4.2327252813834093e-15, + 9.3132257461547852e-08, + -2.3189932107925415e-07 + ], + "min": [ + -4.2778280917588063e-15, + 7.0780515670776367e-08, + -2.3376196622848511e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 345500, + "componentType": 5126, + "count": 10, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 580080, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 345540, + "componentType": 5126, + "count": 53, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 608560, + "componentType": 5126, + "count": 53, + "max": [ + 0.21670196950435638, + 0.0039182133041322231, + 0.00029498696676455438, + 0.99807745218276978 + ], + "min": [ + 0.06197773665189743, + -0.0039182114414870739, + -0.00024921467411331832, + 0.97623783349990845 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 345752, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 580200, + "componentType": 5126, + "count": 71, + "max": [ + -2.7533531010703882e-14, + 0.52352428436279297, + 3.7252902984619141e-08 + ], + "min": [ + -4.9349413444588208e-14, + 0.52352416515350342, + -1.4901154088420299e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346036, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 581052, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346068, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 609408, + "componentType": 5126, + "count": 71, + "max": [ + 0.24100178480148315, + 6.4545502276303068e-10, + 6.4659388954169117e-13, + 0.99999648332595825 + ], + "min": [ + -0.012038532644510269, + -5.6698613803973785e-08, + -1.8470409202109295e-08, + 0.97052466869354248 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 346352, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 581148, + "componentType": 5126, + "count": 71, + "max": [ + -6.2172489379008766e-15, + 0.36641570925712585, + 6.2172489379008766e-15 + ], + "min": [ + -3.3750779948604759e-14, + 0.36641567945480347, + -2.9802318834981634e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346636, + "componentType": 5126, + "count": 22, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 582000, + "componentType": 5126, + "count": 22, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999964237213135, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 346724, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 610544, + "componentType": 5126, + "count": 71, + "max": [ + 0.36187875270843506, + 1.7365225701837517e-08, + 8.7073104282353597e-09, + 0.99980729818344116 + ], + "min": [ + -0.041218847036361694, + -1.7254103923391995e-08, + 2.8265980667185886e-09, + 0.93222516775131226 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347008, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 582264, + "componentType": 5126, + "count": 71, + "max": [ + 2.7929047963226594e-15, + 0.74672240018844604, + -1.1102230246251565e-16 + ], + "min": [ + -2.8657631823136853e-15, + 0.74672240018844604, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347292, + "componentType": 5126, + "count": 16, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583116, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 0.99999958276748657, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347356, + "componentType": 5126, + "count": 71, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 611680, + "componentType": 5126, + "count": 71, + "max": [ + 0.096756108105182648, + 1.6351776821466046e-08, + 9.8581814711451443e-08, + 0.99999988079071045 + ], + "min": [ + -0.18053267896175385, + -7.8859665464392492e-09, + 9.7168474155751028e-08, + 0.98356896638870239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347640, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583308, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347648, + "componentType": 5126, + "count": 4, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583332, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347664, + "componentType": 5126, + "count": 12, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 612816, + "componentType": 5126, + "count": 12, + "max": [ + -0.061978887766599655, + 3.3637053523236636e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978891491889954, + -2.6537087288140325e-18, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 347712, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 583380, + "componentType": 5126, + "count": 61, + "max": [ + -2.8248077654779991e-08, + -4.346842530367212e-08, + 1.1713601111296157e-07 + ], + "min": [ + -4.990958046846572e-08, + -1.3287539957218542e-07, + -2.0732819905333599e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 347956, + "componentType": 5126, + "count": 20, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584112, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1.0000017881393433, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000007152557373, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348036, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 613008, + "componentType": 5126, + "count": 61, + "max": [ + 0.56482315063476562, + 0.78602433204650879, + -0.12704809010028839, + -0.29326319694519043 + ], + "min": [ + 0.52875351905822754, + 0.75361937284469604, + -0.15842771530151367, + -0.29676505923271179 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348280, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584352, + "componentType": 5126, + "count": 6, + "max": [ + 0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348304, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584424, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348312, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 613984, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348344, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 584448, + "componentType": 5126, + "count": 61, + "max": [ + 1.5542553910563583e-09, + -1.9861484901184667e-08, + -2.7729036844448274e-08 + ], + "min": [ + -6.4810734556886018e-08, + -2.3586796515928654e-08, + -1.1713599690210685e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348588, + "componentType": 5126, + "count": 29, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585180, + "componentType": 5126, + "count": 29, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999940395355225, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348704, + "componentType": 5126, + "count": 61, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 614112, + "componentType": 5126, + "count": 61, + "max": [ + -0.52770334482192993, + 0.78695201873779297, + -0.12602679431438446, + 0.29677030444145203 + ], + "min": [ + -0.56482309103012085, + 0.75361984968185425, + -0.15842896699905396, + 0.29307970404624939 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 348948, + "componentType": 5126, + "count": 6, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585528, + "componentType": 5126, + "count": 6, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226192712783813, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348972, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585600, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 348980, + "componentType": 5126, + "count": 8, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615088, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.7136414467513532e-08, + 2.6834172217604646e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.713642157294089e-08, + 2.6834158006749931e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349012, + "componentType": 5126, + "count": 42, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 585624, + "componentType": 5126, + "count": 42, + "max": [ + 0, + 3.8518598887744717e-34, + 0.052600905299186707 + ], + "min": [ + 0, + -3.8518598887744717e-34, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349180, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586128, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349188, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615216, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349196, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586152, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349204, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586176, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349212, + "componentType": 5126, + "count": 2, + "max": [ + 1.4583333730697632 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615248, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349220, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586200, + "componentType": 5126, + "count": 65, + "max": [ + -8.8817841970012523e-15, + 0.19137144088745117, + 4.4703476476115611e-08 + ], + "min": [ + -2.6645352591003757e-14, + 0.1913713663816452, + -2.980232949312267e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349480, + "componentType": 5126, + "count": 15, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 586980, + "componentType": 5126, + "count": 15, + "max": [ + 1, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 1, + 0.9999995231628418, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 349540, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 615280, + "componentType": 5126, + "count": 65, + "max": [ + 0.052249874919652939, + 0.038816019892692566, + 0.056205734610557556, + 0.99958056211471558 + ], + "min": [ + -0.053022608160972595, + 5.1139215884177247e-07, + -4.7714451056890539e-08, + 0.99629521369934082 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 349800, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 587160, + "componentType": 5126, + "count": 65, + "max": [ + 1.1723955140041653e-13, + 0.30786654353141785, + -7.4505805969238281e-08 + ], + "min": [ + 8.8817841970012523e-15, + 0.30786627531051636, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350060, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 587940, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350096, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 616320, + "componentType": 5126, + "count": 65, + "max": [ + 0.028134267777204514, + -4.0643462284606358e-07, + 2.1426093610443786e-07, + 0.99988174438476562 + ], + "min": [ + -0.077048309147357941, + -0.040203806012868881, + -0.055221345275640488, + 0.99468475580215454 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350356, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588048, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + 1.7695128917694092e-07, + 2.0954757928848267e-07 + ], + "min": [ + 2.6077032089233398e-08, + 1.4994293451309204e-07, + 1.5320256352424622e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350508, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588504, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 617360, + "componentType": 5126, + "count": 38, + "max": [ + 1.257285475730896e-08, + 5.5879358917820809e-09, + -3.7834960164850884e-10, + 1 + ], + "min": [ + 1.257285475730896e-08, + -3.2596281229757551e-09, + -1.3678795873772742e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350676, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 588552, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.02822350338101387, + 7.1711838245391846e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.028223389759659767, + -1.1175870895385742e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350828, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589008, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 350836, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 617968, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234388500452042, + -0.058250218629837036, + -0.038226820528507233, + 0.99122375249862671 + ], + "min": [ + 0.11234363913536072, + -0.058250237256288528, + -0.038226854056119919, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 350988, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589032, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 8.8475644588470459e-08, + -1.4016404747962952e-07 + ], + "min": [ + -3.5390257835388184e-08, + -3.2596290111541748e-08, + -2.6496127247810364e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351140, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589488, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351148, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 618576, + "componentType": 5126, + "count": 38, + "max": [ + -1.8626449715952731e-08, + -5.2154049967612082e-08, + -1.303851426825986e-08, + 1 + ], + "min": [ + -3.3527609133443548e-08, + -5.5879340266073996e-08, + -1.5832481992106295e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589512, + "componentType": 5126, + "count": 38, + "max": [ + 5.5511151231257827e-17, + 0.045039918273687363, + -1.4435499906539917e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.045039862394332886, + -5.2619725465774536e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351452, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 589968, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999970197677612 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351484, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 619184, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882833778858185, + -0.038419142365455627, + -9.6807285444810987e-05, + 0.99622201919555664 + ], + "min": [ + 0.077882647514343262, + -0.038419153541326523, + -9.6816773293539882e-05, + 0.99622195959091187 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351636, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590064, + "componentType": 5126, + "count": 38, + "max": [ + -3.5390257835388184e-08, + 0.022519780322909355, + 7.7765434980392456e-08 + ], + "min": [ + -4.4703483581542969e-08, + 0.022519718855619431, + 6.9383531808853149e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351788, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590520, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.9999997615814209 + ], + "min": [ + 0.9999997615814209, + 1, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 351820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 619792, + "componentType": 5126, + "count": 38, + "max": [ + 5.1595282002381282e-07, + -9.3504809228761587e-07, + 2.4028125267250289e-07, + 1 + ], + "min": [ + 5.1595276318039396e-07, + -9.3504814913103473e-07, + 2.4028125267250289e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 351972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 590616, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069626122713088989, + 5.8615114539861679e-08 + ], + "min": [ + -4.5102810375396984e-17, + 0.069626010954380035, + -4.7788489609956741e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352124, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591072, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 620400, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803965508937836, + -0.038298320025205612, + -0.04408370703458786, + 0.98228901624679565 + ], + "min": [ + 0.17803964018821716, + -0.038298387080430984, + -0.04408375546336174, + 0.98228901624679565 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591120, + "componentType": 5126, + "count": 38, + "max": [ + -3.8184225559234619e-08, + -1.2107193470001221e-08, + -2.2351741790771484e-08 + ], + "min": [ + -4.9825757741928101e-08, + -9.7788870334625244e-08, + -4.2840838432312012e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352444, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591576, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352460, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 621008, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175871783564162e-08, + 2.9802318834981634e-08, + 4.4703490686970326e-08, + 1 + ], + "min": [ + -2.2351740014414645e-08, + 2.6077032089233398e-08, + 4.2840841985025691e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352612, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 591624, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 0.033446528017520905, + 9.3132257461547852e-09 + ], + "min": [ + -1.103617250919342e-07, + 0.033446501940488815, + 1.862645149230957e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352764, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592080, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 352780, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 621616, + "componentType": 5126, + "count": 38, + "max": [ + 0.021510392427444458, + 0.016420735046267509, + -0.038739223033189774, + 0.99888283014297485 + ], + "min": [ + 0.021510157734155655, + 0.016420731320977211, + -0.038739226758480072, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 352932, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592128, + "componentType": 5126, + "count": 38, + "max": [ + -2.4680048227310181e-08, + 7.0314854383468628e-08, + -2.9802322387695312e-08 + ], + "min": [ + -1.8230639398097992e-07, + 6.1932951211929321e-08, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353084, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592584, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 622224, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252907425511239e-09, + -1.8626444386882213e-08, + 3.5390250729960826e-08, + 1 + ], + "min": [ + 3.7252883000604697e-09, + -1.8626447939595892e-08, + 2.607702853651972e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 592632, + "componentType": 5126, + "count": 38, + "max": [ + 7.3341652750968933e-08, + 0.041744742542505264, + 2.4214386940002441e-08 + ], + "min": [ + -3.1897798180580139e-08, + 0.041744612157344818, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353404, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593088, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353444, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 622832, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518209874629974, + 0.0088784964755177498, + -0.057382546365261078, + 0.98455238342285156 + ], + "min": [ + 0.16518191993236542, + 0.0088784927502274513, + -0.057382550090551376, + 0.98455232381820679 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353596, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593208, + "componentType": 5126, + "count": 38, + "max": [ + 4.7963112592697144e-08, + 0.020872283726930618, + 5.8207660913467407e-08 + ], + "min": [ + 4.4237822294235229e-09, + 0.020872151479125023, + 5.3085386753082275e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353748, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593664, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 353764, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 623440, + "componentType": 5126, + "count": 38, + "max": [ + -1.303851426825986e-08, + -9.6857540654582408e-08, + -1.5087422866599809e-07, + 1 + ], + "min": [ + -1.8626449715952731e-08, + -1.1175869474300271e-07, + -1.639127589214695e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 353916, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 593712, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086899455636739731, + -0.0083239180967211723, + 0.023024428635835648 + ], + "min": [ + -0.0086899837478995323, + -0.008324100635945797, + 0.023024152964353561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354068, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594168, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999982118606567, + 0.99999982118606567 + ], + "min": [ + 0.99999994039535522, + 0.99999970197677612, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354100, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 624048, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956952653825283, + 0.6579899787902832, + 0.26252907514572144, + 0.70575261116027832 + ], + "min": [ + 0.0063956012018024921, + 0.6579899787902832, + 0.26252907514572144, + 0.70575261116027832 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354252, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594264, + "componentType": 5126, + "count": 38, + "max": [ + -5.3085386753082275e-08, + 1.1175870895385742e-07, + -9.1618858277797699e-08 + ], + "min": [ + -7.0780515670776367e-08, + 4.5634806156158447e-08, + -1.993030309677124e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354404, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594720, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354420, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 624656, + "componentType": 5126, + "count": 38, + "max": [ + 1.3969837731053758e-08, + -2.7939686120248552e-09, + -5.2154067731180476e-08, + 1 + ], + "min": [ + -5.5879336713360317e-09, + -1.3038518709151958e-08, + -6.3329942179279897e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 594768, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.069626122713088989, + 5.8615114539861679e-08 + ], + "min": [ + -4.5102810375396984e-17, + 0.069626010954380035, + -4.7788489609956741e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354724, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595224, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 354740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 625264, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + -0.038296114653348923, + -0.044083848595619202, + 0.98228931427001953 + ], + "min": [ + 0.17803846299648285, + -0.038296118378639221, + -0.0440838523209095, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 354892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595272, + "componentType": 5126, + "count": 38, + "max": [ + -0.0086899455636739731, + -0.0083239180967211723, + 0.023024428635835648 + ], + "min": [ + -0.0086899837478995323, + -0.008324100635945797, + 0.023024152964353561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355044, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595728, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355076, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 625872, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063958647660911083, + 0.65798979997634888, + 0.26252922415733337, + 0.70575273036956787 + ], + "min": [ + 0.0063958144746720791, + 0.65798979997634888, + 0.2625291645526886, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 595824, + "componentType": 5126, + "count": 38, + "max": [ + 0.0073303310200572014, + 0.34354430437088013, + -0.021197834983468056 + ], + "min": [ + 0.0073303282260894775, + 0.34354424476623535, + -0.021197959780693054 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355380, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596280, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 626480, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320605158805847, + -0.1123732402920723, + -0.12725988030433655, + 0.96830403804779053 + ], + "min": [ + -0.18320605158805847, + -0.11237327009439468, + -0.12725989520549774, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596304, + "componentType": 5126, + "count": 38, + "max": [ + -1.3737007975578308e-08, + -5.8673322200775146e-08, + 2.2060703486204147e-08 + ], + "min": [ + -3.119930624961853e-08, + -2.3469328880310059e-07, + -5.3318217396736145e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355692, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596760, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 355708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 627088, + "componentType": 5126, + "count": 38, + "max": [ + 6.7520877777837995e-09, + 3.213062527152033e-08, + 2.9394861655873683e-08, + 1 + ], + "min": [ + 5.8207647590791112e-09, + 3.14321368932724e-08, + 2.1864249077907516e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 355860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 596808, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.032195962965488434, + 3.0500814318656921e-08 + ], + "min": [ + 1.862645149230957e-09, + 0.032195955514907837, + -2.3283075467617209e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356012, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597264, + "componentType": 5126, + "count": 12, + "max": [ + 0.99999994039535522, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 627696, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476783007383347, + -0.045752901583909988, + -0.0250434260815382, + 0.99704056978225708 + ], + "min": [ + 0.056476779282093048, + -0.045752901583909988, + -0.025043429806828499, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597408, + "componentType": 5126, + "count": 38, + "max": [ + 6.5192580223083496e-09, + 1.2107193470001221e-07, + 6.9267116487026215e-08 + ], + "min": [ + -4.0046870708465576e-08, + 4.4703483581542969e-08, + -5.4715201258659363e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597864, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 628304, + "componentType": 5126, + "count": 38, + "max": [ + -1.3504179996459698e-08, + -3.0733652067738149e-08, + -8.1490680869933385e-10, + 1 + ], + "min": [ + -1.3504180884638117e-08, + -3.5390264940815541e-08, + -7.5669968069291826e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 597912, + "componentType": 5126, + "count": 38, + "max": [ + 0, + 0.049540426582098007, + 3.119930624961853e-08 + ], + "min": [ + -2.1420419216156006e-08, + 0.049540422856807709, + -2.5611370801925659e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356684, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598368, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 356716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 628912, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846214532852173, + -0.085242278873920441, + -0.013570736162364483, + 0.98919981718063354 + ], + "min": [ + 0.11846211552619934, + -0.085242286324501038, + -0.013570741750299931, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 356868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598464, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.024769982323050499, + 1.2223608791828156e-07 + ], + "min": [ + -5.8207660913467407e-08, + 0.024769926443696022, + 6.4785126596689224e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357020, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598920, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "min": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357036, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 629520, + "componentType": 5126, + "count": 38, + "max": [ + -5.8580184258971713e-07, + 9.4063602773530874e-07, + -1.4528633585086936e-07, + 1 + ], + "min": [ + -5.8580195627655485e-07, + 9.3318550398180378e-07, + -1.5087425708770752e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357188, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 598968, + "componentType": 5126, + "count": 38, + "max": [ + -6.0535967350006104e-09, + 0.068187125027179718, + 1.02460035122931e-07 + ], + "min": [ + -2.8405338525772095e-08, + 0.068187057971954346, + -6.7462678998708725e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357340, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599424, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 630128, + "componentType": 5126, + "count": 38, + "max": [ + 0.21749138832092285, + -0.069006554782390594, + -0.0030256574973464012, + 0.97361516952514648 + ], + "min": [ + 0.21749132871627808, + -0.069006621837615967, + -0.0030257571488618851, + 0.97361510992050171 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599496, + "componentType": 5126, + "count": 38, + "max": [ + -1.3969838619232178e-09, + 7.0780515670776367e-08, + 3.5972334444522858e-08 + ], + "min": [ + -6.5192580223083496e-09, + 5.4016709327697754e-08, + -1.0558869689702988e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357668, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 599952, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 357684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 630736, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252892326478104e-08, + -3.7252898543727042e-09, + -2.6077024983806041e-08, + 1 + ], + "min": [ + 3.1664960431498912e-08, + -1.3969839507410597e-08, + -2.6077032089233398e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 357836, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600000, + "componentType": 5126, + "count": 43, + "max": [ + -6.0535967350006104e-09, + 0.068187125027179718, + 1.02460035122931e-07 + ], + "min": [ + -2.8405338525772095e-08, + 0.068187057971954346, + -6.7462678998708725e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358008, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600516, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358040, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 631344, + "componentType": 5126, + "count": 43, + "max": [ + 0.2175012081861496, + -0.069013789296150208, + -0.0028895104769617319, + 0.97361505031585693 + ], + "min": [ + 0.21748912334442139, + -0.069082513451576233, + -0.0030575778800994158, + 0.97360992431640625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 600612, + "componentType": 5126, + "count": 38, + "max": [ + 0.02324727363884449, + 0.34059691429138184, + -0.015326406806707382 + ], + "min": [ + 0.023247214034199715, + 0.34059679508209229, + -0.015326503664255142 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358364, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601068, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000002384185791, + 1.0000001192092896 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 632032, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811843752861023, + -0.13169907033443451, + -0.16719593107700348, + 0.96071571111679077 + ], + "min": [ + -0.17811861634254456, + -0.13169917464256287, + -0.16719599068164825, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358548, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601164, + "componentType": 5126, + "count": 38, + "max": [ + -8.6147338151931763e-09, + 7.8580342233181e-09, + -1.3213139027357101e-08 + ], + "min": [ + -2.514570951461792e-08, + -5.3842086344957352e-09, + -1.8655555322766304e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358700, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601620, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 358716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 632640, + "componentType": 5126, + "count": 38, + "max": [ + 6.5192580223083496e-09, + -1.303851426825986e-08, + -2.7939668356680158e-09, + 1 + ], + "min": [ + 3.7252907425511239e-09, + -1.303851515643828e-08, + -3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 358868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 601668, + "componentType": 5126, + "count": 38, + "max": [ + 2.3748725652694702e-08, + 0.031801082193851471, + 3.0122464522719383e-08 + ], + "min": [ + 2.0372681319713593e-08, + 0.031800955533981323, + -6.8030203692615032e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359020, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602124, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 633248, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024125576019287, + -0.10080225020647049, + -0.057818219065666199, + 0.98179608583450317 + ], + "min": [ + 0.15024115145206451, + -0.10080227255821228, + -0.057818248867988586, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602220, + "componentType": 5126, + "count": 38, + "max": [ + 3.8184225559234619e-08, + 1.4575198292732239e-07, + -2.3050233721733093e-07 + ], + "min": [ + 1.862645149230957e-09, + 3.3760443329811096e-08, + -2.3783650249242783e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602676, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 633856, + "componentType": 5126, + "count": 38, + "max": [ + -8.149072527885437e-09, + -2.0139852452416562e-08, + -3.5754055716097355e-08, + 1 + ], + "min": [ + -8.3819031715393066e-09, + -2.0372681319713593e-08, + -3.6619894672185183e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 602724, + "componentType": 5126, + "count": 38, + "max": [ + 1.7695128917694092e-08, + 0.044816765934228897, + -1.8480932340025902e-08 + ], + "min": [ + 1.3969838619232178e-08, + 0.044816732406616211, + -2.3108441382646561e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359676, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603180, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 359708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 634464, + "componentType": 5126, + "count": 38, + "max": [ + 0.073152057826519012, + -0.052601058036088943, + -0.024043349549174309, + 0.99564242362976074 + ], + "min": [ + 0.073151923716068268, + -0.052601061761379242, + -0.024043366312980652, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 359860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603276, + "componentType": 5126, + "count": 38, + "max": [ + -6.1467289924621582e-08, + 0.02240850031375885, + 4.3539330363273621e-08 + ], + "min": [ + -7.4505805969238281e-08, + 0.02240847609937191, + 2.7823261916637421e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360012, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603732, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000004768371582 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 635072, + "componentType": 5126, + "count": 38, + "max": [ + -6.0920126543351216e-07, + 9.5111300879580085e-07, + -2.3748725652694702e-08, + 1 + ], + "min": [ + -6.1676820450884406e-07, + 9.4925030680315103e-07, + -4.8661604523658752e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 603780, + "componentType": 5126, + "count": 38, + "max": [ + -2.7939677238464355e-08, + 0.069797426462173462, + 1.0897201718762517e-07 + ], + "min": [ + -3.9115548133850098e-08, + 0.069797426462173462, + 6.4195774029940367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360332, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604236, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 635680, + "componentType": 5126, + "count": 38, + "max": [ + 0.28130212426185608, + -0.10888312757015228, + 0.021744726225733757, + 0.95317405462265015 + ], + "min": [ + 0.28130194544792175, + -0.108883336186409, + 0.021744661033153534, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360516, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604332, + "componentType": 5126, + "count": 38, + "max": [ + 7.0780515670776367e-08, + 3.7252902984619141e-09, + 2.8961221687495708e-07 + ], + "min": [ + 4.8428773880004883e-08, + -4.0978193283081055e-08, + 2.595770638436079e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360668, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604788, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 360684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 636288, + "componentType": 5126, + "count": 38, + "max": [ + 5.8964378268910878e-08, + -3.7427536625500579e-08, + -2.2351748896198842e-08, + 1 + ], + "min": [ + 3.3993284631606002e-08, + -5.0000398488236897e-08, + -2.9802325940408991e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 360836, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 604836, + "componentType": 5126, + "count": 43, + "max": [ + -2.7939677238464355e-08, + 0.069797426462173462, + 1.0897201718762517e-07 + ], + "min": [ + -3.9115548133850098e-08, + 0.069797426462173462, + 6.4195774029940367e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361008, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605352, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361048, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 636896, + "componentType": 5126, + "count": 43, + "max": [ + 0.28130331635475159, + -0.10888498276472092, + 0.021744545549154282, + 0.95317471027374268 + ], + "min": [ + 0.28129714727401733, + -0.10890084505081177, + 0.021690791472792625, + 0.95317345857620239 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605472, + "componentType": 5126, + "count": 38, + "max": [ + 0.034954547882080078, + 0.3353690505027771, + -0.006407150998711586 + ], + "min": [ + 0.034954499453306198, + 0.33536896109580994, + -0.0064071658998727798 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361372, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 605928, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000007152557373, + 1.0000003576278687, + 1.0000002384185791 + ], + "min": [ + 1.0000003576278687, + 1.0000003576278687, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361404, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 637584, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214225232601166, + -0.16701863706111908, + -0.22579604387283325, + 0.94418638944625854 + ], + "min": [ + -0.17214243113994598, + -0.16701880097389221, + -0.22579619288444519, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606024, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-08, + 1.0989606380462646e-07, + 1.2759119272232056e-07 + ], + "min": [ + 6.1467289924621582e-08, + 2.2351741790771484e-08, + 8.3819031715393066e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361708, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606480, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.9999997615814209, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 361740, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 638192, + "componentType": 5126, + "count": 38, + "max": [ + 9.313229076823859e-10, + 7.4505805969238281e-09, + 3.3527619791584584e-08, + 1 + ], + "min": [ + -8.3819058360745657e-09, + -3.7252916307295436e-09, + 2.980232949312267e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 361892, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 606576, + "componentType": 5126, + "count": 38, + "max": [ + 4.4703483581542969e-08, + 0.022592527791857719, + 7.6834112405776978e-08 + ], + "min": [ + -2.6077032089233398e-08, + 0.022592457011342049, + 2.6542693376541138e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362044, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607032, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 638800, + "componentType": 5126, + "count": 38, + "max": [ + 0.082881756126880646, + -0.044399168342351913, + -0.02859191782772541, + 0.99515920877456665 + ], + "min": [ + 0.082881741225719452, + -0.044399168342351913, + -0.028591921553015709, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362212, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607080, + "componentType": 5126, + "count": 38, + "max": [ + 4.8428773880004883e-08, + -6.5192580223083496e-09, + 2.9802322387695312e-08 + ], + "min": [ + -1.1102230246251565e-16, + -7.543712854385376e-08, + -1.6298145055770874e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362364, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607536, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 639408, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901162970204496e-08, + 2.7939681679356454e-09, + -1.0710211384434842e-08, + 1 + ], + "min": [ + -1.7695130694050931e-08, + -3.7252907425511239e-09, + -1.210719435817964e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362532, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 607584, + "componentType": 5126, + "count": 38, + "max": [ + 5.2154064178466797e-08, + 0.027876298874616623, + 2.7939677238464355e-08 + ], + "min": [ + 2.2351741790771484e-08, + 0.027876269072294235, + -3.4458935260772705e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362684, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608040, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 362716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 640016, + "componentType": 5126, + "count": 38, + "max": [ + 0.04151814803481102, + -0.028988022357225418, + -0.020971918478608131, + 0.99849694967269897 + ], + "min": [ + 0.04151814803481102, + -0.028988024219870567, + -0.020971944555640221, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 362868, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608136, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-08, + 0.013938127085566521, + -1.1641532182693481e-07 + ], + "min": [ + -3.7252902984619141e-08, + 0.013938039541244507, + -1.8021091818809509e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363020, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608592, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363028, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 640624, + "componentType": 5126, + "count": 38, + "max": [ + 5.7567365985278229e-08, + -1.2991947073714982e-07, + 4.8938087360284044e-08, + 1 + ], + "min": [ + 5.5180851887826066e-08, + -1.3178211588638078e-07, + 2.6717312806567861e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 608616, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-09, + 0.074802413582801819, + -8.4110070019960403e-09 + ], + "min": [ + -2.7755575615628914e-17, + 0.074802353978157043, + -8.9232344180345535e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363332, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609072, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 641232, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057210922241211, + -0.17872518301010132, + 0.015338432975113392, + 0.91919600963592529 + ], + "min": [ + 0.35057204961776733, + -0.17872521281242371, + 0.015338417142629623, + 0.91919595003128052 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609192, + "componentType": 5126, + "count": 38, + "max": [ + -3.5390257835388184e-08, + -8.754432201385498e-08, + -1.0026269592344761e-07 + ], + "min": [ + -3.7252902984619141e-08, + -8.9406967163085938e-08, + -1.1755037121474743e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363676, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609648, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 363684, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 641840, + "componentType": 5126, + "count": 38, + "max": [ + -2.6746420189738274e-08, + -2.0372683096070432e-08, + -3.3527612686157227e-08, + 1 + ], + "min": [ + -4.4063202864208506e-08, + -2.3166650819916867e-08, + -3.5390257835388184e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 363836, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 609672, + "componentType": 5126, + "count": 41, + "max": [ + 1.862645149230957e-09, + 0.074802413582801819, + -8.4110070019960403e-09 + ], + "min": [ + -2.7755575615628914e-17, + 0.074802353978157043, + -8.9232344180345535e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364000, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610164, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364040, + "componentType": 5126, + "count": 41, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 642448, + "componentType": 5126, + "count": 41, + "max": [ + 0.35057199001312256, + -0.17872500419616699, + 0.015338690020143986, + 0.91919887065887451 + ], + "min": [ + 0.35053929686546326, + -0.17878907918930054, + 0.015170705504715443, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364204, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610284, + "componentType": 5126, + "count": 38, + "max": [ + 0.044579274952411652, + 0.32914423942565918, + 0.0039985403418540955 + ], + "min": [ + 0.044579233974218369, + 0.3291441798210144, + 0.0039985310286283493 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364356, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610740, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 0.99999970197677612, + 1 + ], + "min": [ + 1.0000001192092896, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 643104, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570000231266022, + -0.1874941885471344, + -0.27479091286659241, + 0.9332316517829895 + ], + "min": [ + -0.13570016622543335, + -0.18749438226222992, + -0.27479094266891479, + 0.9332316517829895 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364524, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 610788, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 5.289912223815918e-07, + 1.1175870895385742e-07 + ], + "min": [ + 0, + 4.1723251342773438e-07, + 1.0430812835693359e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364676, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 611244, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 364692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 643712, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901159417490817e-08, + 1.0058283095304432e-07, + -1.1175870895385742e-08, + 1 + ], + "min": [ + 1.4901158529312397e-08, + 9.3132243250693136e-08, + -1.8626449715952731e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 364844, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 611292, + "componentType": 5126, + "count": 65, + "max": [ + -1.1175870895385742e-08, + 0.25792214274406433, + 3.7252902984619141e-08 + ], + "min": [ + -2.4214386940002441e-08, + 0.25792208313941956, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365104, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612072, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365136, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 644320, + "componentType": 5126, + "count": 65, + "max": [ + 0.11253763735294342, + 0.862018883228302, + 0.19106139242649078, + 0.53805023431777954 + ], + "min": [ + 0.06823372095823288, + 0.83393681049346924, + 0.04970516636967659, + 0.46450307965278625 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 365396, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612168, + "componentType": 5126, + "count": 63, + "max": [ + -6.891787052154541e-08, + 0.1289609968662262, + 5.9604644775390625e-08 + ], + "min": [ + -8.754432201385498e-08, + 0.12896081805229187, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365648, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 612924, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999982118606567, + 1.0000019073486328, + 1.0000002384185791 + ], + "min": [ + 0.9999997615814209, + 1.0000019073486328, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 365688, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 645360, + "componentType": 5126, + "count": 63, + "max": [ + 4.5155672978580697e-07, + 0.88032656908035278, + 7.2773516990309872e-08, + 0.54215627908706665 + ], + "min": [ + -2.7663776336339652e-07, + 0.84027767181396484, + -3.8382276557058503e-07, + 0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 365940, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613044, + "componentType": 5126, + "count": 38, + "max": [ + -7.8231096267700195e-08, + 0.13927145302295685, + 2.9802322387695312e-08 + ], + "min": [ + -1.0430812835693359e-07, + 0.13927140831947327, + 2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366092, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613500, + "componentType": 5126, + "count": 12, + "max": [ + 1.0000005960464478, + 1.0000015497207642, + 1.0000017881393433 + ], + "min": [ + 1.0000004768371582, + 1.0000013113021851, + 1.0000014305114746 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366140, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 646368, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531628727912903, + 0.090401187539100647, + -0.19322745501995087, + 0.94302940368652344 + ], + "min": [ + 0.2553161084651947, + 0.090401150286197662, + -0.19322752952575684, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 366292, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 613644, + "componentType": 5126, + "count": 38, + "max": [ + 0.044326677918434143, + -0.11071391403675079, + 0.071930155158042908 + ], + "min": [ + 0.044326595962047577, + -0.11071401089429855, + 0.071930132806301117 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366444, + "componentType": 5126, + "count": 26, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614100, + "componentType": 5126, + "count": 26, + "max": [ + 1, + 0.99999654293060303, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.9999958872795105, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366548, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 646976, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531598925590515, + -0.090401239693164825, + 0.19322757422924042, + 0.94302940368652344 + ], + "min": [ + -0.25531616806983948, + -0.090401269495487213, + 0.19322746992111206, + 0.94302934408187866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 366700, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614412, + "componentType": 5126, + "count": 43, + "max": [ + 2.0489096641540527e-08, + 8.9406967163085938e-08, + -1.4901161193847656e-08 + ], + "min": [ + -3.166496753692627e-08, + -1.1175870895385742e-07, + -6.7055225372314453e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366872, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 614928, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999862909317017, + 1.0000007152557373 + ], + "min": [ + 1, + 0.99999845027923584, + 1.0000005960464478 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 366904, + "componentType": 5126, + "count": 43, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 647584, + "componentType": 5126, + "count": 43, + "max": [ + 2.3841869278840022e-07, + 8.8326596596743912e-06, + 3.8230814425332937e-07, + 1 + ], + "min": [ + 1.7788269701668469e-07, + -2.4875621420505922e-06, + 2.4307533408318704e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 367076, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615024, + "componentType": 5126, + "count": 65, + "max": [ + -7.8231096267700195e-08, + 0.2785429060459137, + 1.4901161193847656e-08 + ], + "min": [ + -9.3132257461547852e-08, + 0.27854257822036743, + 7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367336, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615804, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367352, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 648272, + "componentType": 5126, + "count": 65, + "max": [ + 0.37624797224998474, + 0.090401507914066315, + -0.19322660565376282, + 0.94302982091903687 + ], + "min": [ + 0.25531506538391113, + 0.064400866627693176, + -0.20337523519992828, + 0.90162545442581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 367612, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 615852, + "componentType": 5126, + "count": 42, + "max": [ + 3.7252902984619141e-09, + 0.13927173614501953, + -7.4505805969238281e-09 + ], + "min": [ + -1.8253922462463379e-07, + 0.13927128911018372, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367780, + "componentType": 5126, + "count": 39, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 616356, + "componentType": 5126, + "count": 39, + "max": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000001192092896, + 0.99999880790710449, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 367936, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 649312, + "componentType": 5126, + "count": 42, + "max": [ + 7.4505774882993592e-09, + -2.0544971448543947e-06, + 5.1967754188808613e-07, + 1 + ], + "min": [ + -3.3527630449725621e-08, + -7.0240321292658336e-06, + -3.7951383546896977e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368104, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 616824, + "componentType": 5126, + "count": 64, + "max": [ + -0.027315694838762283, + 0.33446067571640015, + 0.019757580012083054 + ], + "min": [ + -0.027315715327858925, + 0.33446043729782104, + 0.019757453352212906 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368360, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 617592, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000007152557373 + ], + "min": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000007152557373 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368376, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 649984, + "componentType": 5126, + "count": 64, + "max": [ + -0.24058763682842255, + 0.70802509784698486, + -0.31539642810821533, + 0.55572360754013062 + ], + "min": [ + -0.34603971242904663, + 0.68740224838256836, + -0.3883955180644989, + 0.53827023506164551 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368632, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 617640, + "componentType": 5126, + "count": 38, + "max": [ + -1.1037627700716257e-08, + 2.066371962428093e-08, + 3.8957750803092495e-07 + ], + "min": [ + -1.490843715146184e-08, + 1.8975697457790375e-08, + 2.6790985430125147e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368784, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618096, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 368792, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 651008, + "componentType": 5126, + "count": 38, + "max": [ + -6.990377610094356e-09, + 8.2283818869655079e-08, + 6.7050933694190462e-08, + 1 + ], + "min": [ + -6.994014700723028e-09, + 8.2269266954426712e-08, + 5.215035159267245e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 368944, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618120, + "componentType": 5126, + "count": 22, + "max": [ + 0.023130046203732491, + 0.26697841286659241, + 0.14965295791625977 + ], + "min": [ + 0.023130035027861595, + 0.26697829365730286, + 0.14965294301509857 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369032, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618384, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999958276748657, + 0.9999997615814209, + 0.99999970197677612 + ], + "min": [ + 0.9999995231628418, + 0.99999970197677612, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369048, + "componentType": 5126, + "count": 36, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 651616, + "componentType": 5126, + "count": 36, + "max": [ + -0.69586658477783203, + -0.39777594804763794, + -0.2970300018787384, + 0.51895767450332642 + ], + "min": [ + -0.69586664438247681, + -0.39777600765228271, + -0.29703009128570557, + 0.51895767450332642 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369192, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618432, + "componentType": 5126, + "count": 38, + "max": [ + 6.7055225372314453e-08, + -2.1420419216156006e-08, + 5.8207660913467407e-08 + ], + "min": [ + 2.6077032089233398e-08, + -1.4202669262886047e-07, + -8.3819031715393066e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369344, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618888, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369352, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 652192, + "componentType": 5126, + "count": 38, + "max": [ + 1.0943037587196613e-08, + 1.8160790205001831e-08, + 1.2892996004154611e-08, + 1 + ], + "min": [ + 1.0710208719899583e-08, + 1.257285475730896e-08, + 5.238688594033647e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 618912, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252902984619141e-09, + 0.02822345495223999, + 1.0244548320770264e-08 + ], + "min": [ + -1.862645149230957e-08, + 0.028223427012562752, + -1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369656, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619368, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "min": [ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369672, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 652800, + "componentType": 5126, + "count": 38, + "max": [ + 0.11234363168478012, + 0.058250226080417633, + 0.03822685033082962, + 0.99122375249862671 + ], + "min": [ + 0.11234340816736221, + 0.058250196278095245, + 0.038226831704378128, + 0.99122375249862671 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 369824, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619416, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901161193847656e-08, + 1.7695128917694092e-08, + 4.2375177145004272e-08 + ], + "min": [ + -2.4214386940002441e-08, + -6.5192580223083496e-09, + -3.771856427192688e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369976, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619872, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 369984, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 653408, + "componentType": 5126, + "count": 38, + "max": [ + -1.8626455933201669e-09, + -9.3132248579763655e-09, + -9.3132257461547852e-10, + 1 + ], + "min": [ + -7.4505805969238281e-09, + -1.3038516932795119e-08, + -5.5879354476928711e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 619896, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.045039929449558258, + -4.656611762854368e-10 + ], + "min": [ + -1.862645149230957e-09, + 0.045039907097816467, + -6.0070306062698364e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370288, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620352, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370328, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 654016, + "componentType": 5126, + "count": 38, + "max": [ + 0.077882632613182068, + 0.038419164717197418, + 9.6882380603346974e-05, + 0.99622201919555664 + ], + "min": [ + 0.07788240909576416, + 0.03841916099190712, + 9.6863936050795019e-05, + 0.99622201919555664 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620472, + "componentType": 5126, + "count": 38, + "max": [ + -1.4528632164001465e-07, + 0.022520141676068306, + 1.5087425708770752e-07 + ], + "min": [ + -1.6205012798309326e-07, + 0.022520113736391068, + 3.2130628824234009e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370632, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620928, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370648, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 654624, + "componentType": 5126, + "count": 38, + "max": [ + 6.3516193904433749e-07, + 9.4994902610778809e-07, + -2.1047888765224343e-07, + 1 + ], + "min": [ + 6.3329940758194425e-07, + 9.3877298468214576e-07, + -2.1606685152164573e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 370800, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 620976, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.069626130163669586, + 8.7951775640249252e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.069626055657863617, + 2.828892320394516e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370952, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621432, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999970197677612, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 370984, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 655232, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803950607776642, + 0.038298312574625015, + 0.044083617627620697, + 0.98228907585144043 + ], + "min": [ + 0.17803947627544403, + 0.038298293948173523, + 0.044083587825298309, + 0.98228907585144043 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371136, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621528, + "componentType": 5126, + "count": 38, + "max": [ + 1.1967495083808899e-07, + -3.166496753692627e-08, + 2.6077032089233398e-08 + ], + "min": [ + 2.7939677238464355e-08, + -7.6368451118469238e-08, + 9.3132257461547852e-10 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371288, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 621984, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 655840, + "componentType": 5126, + "count": 38, + "max": [ + -3.7252894102834944e-09, + -2.607702676016288e-08, + -4.6566118072632889e-08, + 1 + ], + "min": [ + -1.1175868230850483e-08, + -3.352760202801619e-08, + -6.8917856310690695e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371456, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622032, + "componentType": 5126, + "count": 38, + "max": [ + 3.2596290111541748e-09, + 0.033446528017520905, + 1.0408340855860843e-16 + ], + "min": [ + -8.7078660726547241e-08, + 0.033446472138166428, + -2.2351741790771484e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371608, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622488, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 656448, + "componentType": 5126, + "count": 38, + "max": [ + 0.021509725600481033, + -0.016420768573880196, + 0.038739215582609177, + 0.99888283014297485 + ], + "min": [ + 0.02150970883667469, + -0.01642078161239624, + 0.038739178329706192, + 0.99888283014297485 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 371776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622536, + "componentType": 5126, + "count": 38, + "max": [ + 7.8231096267700195e-08, + 4.4703483581542969e-08, + -1.0337680578231812e-07 + ], + "min": [ + -1.1175870895385742e-08, + -8.8475644588470459e-09, + -1.2852251529693604e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371928, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 622992, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 371944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 657056, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 3.3527609133443548e-08, + 1.1175870895385742e-08, + 1 + ], + "min": [ + -3.7252898543727042e-09, + 1.862645326866641e-08, + 5.5879354476928711e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623040, + "componentType": 5126, + "count": 38, + "max": [ + 3.14321368932724e-08, + 0.041744664311408997, + 4.377216100692749e-08 + ], + "min": [ + 1.0710209608078003e-08, + 0.041744627058506012, + -1.9557774066925049e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372248, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623496, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372264, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 657664, + "componentType": 5126, + "count": 38, + "max": [ + 0.16518144309520721, + -0.0088785318657755852, + 0.05738256499171257, + 0.98455244302749634 + ], + "min": [ + 0.16518139839172363, + -0.0088785504922270775, + 0.057382542639970779, + 0.98455244302749634 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 623544, + "componentType": 5126, + "count": 38, + "max": [ + 1.832377165555954e-07, + 0.020872432738542557, + 1.2107193470001221e-07 + ], + "min": [ + 1.6391277313232422e-07, + 0.020872386172413826, + 5.9138983488082886e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372568, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624000, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372584, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 658272, + "componentType": 5126, + "count": 38, + "max": [ + -4.3772171665068527e-08, + -2.6077037418303917e-08, + 3.7252911866403338e-09, + 1 + ], + "min": [ + -5.494803900774059e-08, + -2.9802325940408991e-08, + -4.4408963336653624e-16, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 372736, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624048, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086900116875767708, + -0.0083240848034620285, + 0.023024333640933037 + ], + "min": [ + 0.0086899157613515854, + -0.0083241211250424385, + 0.023024162277579308 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372888, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624504, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999982118606567 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 372904, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 658880, + "componentType": 5126, + "count": 38, + "max": [ + 0.0063956673257052898, + -0.65799003839492798, + -0.26252901554107666, + 0.70575255155563354 + ], + "min": [ + 0.0063956575468182564, + -0.65799009799957275, + -0.26252904534339905, + 0.70575249195098877 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373056, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 624552, + "componentType": 5126, + "count": 38, + "max": [ + 9.8720192909240723e-08, + -2.0489096641540527e-08, + -2.7590431272983551e-07 + ], + "min": [ + 7.1711838245391846e-08, + -9.7788870334625244e-08, + -3.9488077163696289e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373208, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625008, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373224, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 659488, + "componentType": 5126, + "count": 38, + "max": [ + -1.210719613453648e-08, + 1.4901159417490817e-08, + 7.078050856534901e-08, + 1 + ], + "min": [ + -2.0489098417897367e-08, + 1.0244547432591844e-08, + 3.7252899431905462e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373376, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625056, + "componentType": 5126, + "count": 38, + "max": [ + -9.3132257461547852e-09, + 0.069626130163669586, + 8.7951775640249252e-08 + ], + "min": [ + -3.3527612686157227e-08, + 0.069626055657863617, + 2.828892320394516e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373528, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625512, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373576, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 660096, + "componentType": 5126, + "count": 38, + "max": [ + 0.17803849279880524, + 0.038296084851026535, + 0.04408390074968338, + 0.98228931427001953 + ], + "min": [ + 0.17803844809532166, + 0.038296081125736237, + 0.044083889573812485, + 0.98228931427001953 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 373728, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 625656, + "componentType": 5126, + "count": 38, + "max": [ + 0.0086900116875767708, + -0.0083240848034620285, + 0.023024333640933037 + ], + "min": [ + 0.0086899157613515854, + -0.0083241211250424385, + 0.023024162277579308 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373880, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626112, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 373896, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 660704, + "componentType": 5126, + "count": 37, + "max": [ + 0.0063957739621400833, + -0.65798985958099365, + -0.26252910494804382, + 0.70575273036956787 + ], + "min": [ + 0.0063957264646887779, + -0.65798985958099365, + -0.26252913475036621, + 0.70575273036956787 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374044, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626160, + "componentType": 5126, + "count": 38, + "max": [ + -0.0073304055258631706, + 0.34354397654533386, + -0.021197786554694176 + ], + "min": [ + -0.0073304139077663422, + 0.34354394674301147, + -0.021197935566306114 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374196, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626616, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374236, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 661296, + "componentType": 5126, + "count": 38, + "max": [ + -0.18320608139038086, + 0.11237333714962006, + 0.12725983560085297, + 0.96830403804779053 + ], + "min": [ + -0.18320611119270325, + 0.11237328499555588, + 0.12725980579853058, + 0.96830403804779053 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374388, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 626736, + "componentType": 5126, + "count": 38, + "max": [ + -2.3283064365386963e-09, + 2.0954757928848267e-07, + 4.0163286030292511e-08 + ], + "min": [ + -1.0477378964424133e-08, + 1.6205012798309326e-07, + 1.4260876923799515e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374540, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627192, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 661904, + "componentType": 5126, + "count": 38, + "max": [ + 9.1480540580441843e-19, + -8.381904947896146e-09, + 1.9434082787483931e-08, + 1 + ], + "min": [ + -1.862645371275562e-09, + -9.42964106798172e-09, + 1.1285011147776913e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 374708, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627240, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527612686157227e-08, + 0.03219609335064888, + 6.9849181993930642e-10 + ], + "min": [ + 3.7252902984619141e-09, + 0.032195977866649628, + -2.8638169169425964e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374860, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627696, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 0.99999970197677612, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 374908, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 662512, + "componentType": 5126, + "count": 38, + "max": [ + 0.056476809084415436, + 0.045752875506877899, + 0.02504347451031208, + 0.99704056978225708 + ], + "min": [ + 0.056476801633834839, + 0.045752875506877899, + 0.025043448433279991, + 0.99704056978225708 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375060, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 627840, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132257461547852e-09, + -7.4971467256546021e-08, + 1.3620592653751373e-08 + ], + "min": [ + 4.6566128730773926e-09, + -1.1827796697616577e-07, + -3.1315721571445465e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375212, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628296, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.99999970197677612, + 1 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375228, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 663120, + "componentType": 5126, + "count": 38, + "max": [ + 9.3132268563778098e-10, + 3.3527619791584584e-08, + -1.5832489097533653e-08, + 1 + ], + "min": [ + -9.3132257461547852e-10, + 3.2596297216969106e-08, + -2.0838349712448689e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375380, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628344, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-09, + 0.0495404452085495, + 7.520429790019989e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.049540434032678604, + -4.3073669075965881e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375532, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628800, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375564, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 663728, + "componentType": 5126, + "count": 38, + "max": [ + 0.11846213787794113, + 0.085242271423339844, + 0.013570732437074184, + 0.98919981718063354 + ], + "min": [ + 0.11846213787794113, + 0.085242263972759247, + 0.013570724986493587, + 0.98919981718063354 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 375716, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 628896, + "componentType": 5126, + "count": 38, + "max": [ + -2.1420419216156006e-08, + 0.024770131334662437, + 1.1059455573558807e-08 + ], + "min": [ + -2.9336661100387573e-08, + 0.024770110845565796, + -1.680455170571804e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375868, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629352, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 1, + 1.0000001192092896, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 375900, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 664336, + "componentType": 5126, + "count": 38, + "max": [ + -5.8114528656005859e-07, + -9.4063585720505216e-07, + 1.9371509552001953e-07, + 1 + ], + "min": [ + -5.8859581031356356e-07, + -9.4994913979462581e-07, + 1.8626450071224099e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376052, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629448, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + 0.068187057971954346, + 8.518691174685955e-08 + ], + "min": [ + -1.909211277961731e-08, + 0.068187043070793152, + 2.3923348635435104e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376204, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629904, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376220, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 664944, + "componentType": 5126, + "count": 38, + "max": [ + 0.2174912691116333, + 0.069006599485874176, + 0.0030256749596446753, + 0.97361516952514648 + ], + "min": [ + 0.21749123930931091, + 0.069006577134132385, + 0.0030256400350481272, + 0.97361516952514648 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376372, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 629952, + "componentType": 5126, + "count": 38, + "max": [ + 5.3551048040390015e-08, + 6.891787052154541e-08, + 1.0139774531126022e-07 + ], + "min": [ + 4.7963112592697144e-08, + 6.891787052154541e-08, + 6.2049366533756256e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376524, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 630408, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376556, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 665552, + "componentType": 5126, + "count": 38, + "max": [ + 2.4806551000424262e-16, + 1.6763804566721774e-08, + 7.4505805969238281e-09, + 1 + ], + "min": [ + -7.4505805969238281e-09, + 9.3132248579763655e-09, + -3.7252902984619141e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 376708, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 630504, + "componentType": 5126, + "count": 63, + "max": [ + 1.0244548320770264e-08, + 0.068187057971954346, + 8.518691174685955e-08 + ], + "min": [ + -1.909211277961731e-08, + 0.068187043070793152, + 2.3923348635435104e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376960, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631260, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 376992, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 666160, + "componentType": 5126, + "count": 63, + "max": [ + 0.21749910712242126, + 0.069074742496013641, + 0.0030864626169204712, + 0.97361725568771362 + ], + "min": [ + 0.21746279299259186, + 0.068978361785411835, + 0.0028579616919159889, + 0.97361528873443604 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 377244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631356, + "componentType": 5126, + "count": 38, + "max": [ + -0.023247275501489639, + 0.34059673547744751, + -0.015326322987675667 + ], + "min": [ + -0.023247366771101952, + 0.34059670567512512, + -0.015326365828514099 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377396, + "componentType": 5126, + "count": 36, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 631812, + "componentType": 5126, + "count": 36, + "max": [ + 1.0000004768371582, + 1.0000014305114746, + 1.0000011920928955 + ], + "min": [ + 0.99999940395355225, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377540, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 667168, + "componentType": 5126, + "count": 38, + "max": [ + -0.17811863124370575, + 0.13169920444488525, + 0.16719597578048706, + 0.96071571111679077 + ], + "min": [ + -0.17811869084835052, + 0.13169904053211212, + 0.16719576716423035, + 0.960715651512146 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 377692, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632244, + "componentType": 5126, + "count": 38, + "max": [ + -2.3515895009040833e-08, + 1.8026912584900856e-07, + -2.4025212042033672e-08 + ], + "min": [ + -6.7870132625102997e-08, + 1.4828401617705822e-07, + -6.129266694188118e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377844, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632700, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "min": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 377860, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 667776, + "componentType": 5126, + "count": 38, + "max": [ + -2.2351736461700966e-08, + -1.8626449271863521e-09, + 7.4505797087454084e-09, + 1 + ], + "min": [ + -3.0733637856883433e-08, + -3.7252891882388894e-09, + 6.5192562459515102e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378012, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 632748, + "componentType": 5126, + "count": 38, + "max": [ + 1.2223608791828156e-08, + 0.031800944358110428, + 8.7311491370201111e-09 + ], + "min": [ + -1.3969838619232178e-08, + 0.031800892204046249, + -1.1179508874192834e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378164, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633204, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378180, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 668384, + "componentType": 5126, + "count": 38, + "max": [ + 0.15024107694625854, + 0.10080228745937347, + 0.057818237692117691, + 0.98179608583450317 + ], + "min": [ + 0.15024107694625854, + 0.10080226510763168, + 0.057818237692117691, + 0.98179608583450317 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378332, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633252, + "componentType": 5126, + "count": 38, + "max": [ + 2.7008354663848877e-08, + 1.234002411365509e-08, + -1.2223607681605131e-09 + ], + "min": [ + -7.4505805969238281e-09, + -3.4691765904426575e-08, + -6.2456820160150528e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378484, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633708, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378500, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 668992, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + -1.4784745872020721e-08, + -1.391163095831871e-08, + 1 + ], + "min": [ + 5.3551039158605818e-09, + -1.5133991837501526e-08, + -2.2344464056800462e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378652, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 633756, + "componentType": 5126, + "count": 38, + "max": [ + -4.6566128730773926e-09, + 0.044816698879003525, + 4.7555658966302872e-08 + ], + "min": [ + -3.8184225559234619e-08, + 0.044816639274358749, + -8.671486284583807e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378804, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634212, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 378820, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 669600, + "componentType": 5126, + "count": 38, + "max": [ + 0.073151923716068268, + 0.052601069211959839, + 0.024043366312980652, + 0.99564242362976074 + ], + "min": [ + 0.073151916265487671, + 0.05260106548666954, + 0.024043353274464607, + 0.99564242362976074 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 378972, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634260, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.022408299148082733, + 1.4193938113749027e-07 + ], + "min": [ + -1.3038516044616699e-08, + 0.022408235818147659, + 8.2858605310320854e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379124, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634716, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "min": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 670208, + "componentType": 5126, + "count": 38, + "max": [ + -6.429619361369987e-07, + -9.5879670425347285e-07, + 1.6530979252138422e-08, + 1 + ], + "min": [ + -6.4889900386333466e-07, + -9.6345320343971252e-07, + 1.2805687177319669e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379308, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 634812, + "componentType": 5126, + "count": 38, + "max": [ + 3.166496753692627e-08, + 0.06979745626449585, + 1.4081160770729184e-07 + ], + "min": [ + -1.862645149230957e-08, + 0.069797366857528687, + 2.2519088815897703e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379460, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635268, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379476, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 670816, + "componentType": 5126, + "count": 38, + "max": [ + 0.2813020646572113, + 0.10888322442770004, + -0.021744759753346443, + 0.95317405462265015 + ], + "min": [ + 0.28130200505256653, + 0.10888320207595825, + -0.021744780242443085, + 0.95317405462265015 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379628, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635316, + "componentType": 5126, + "count": 38, + "max": [ + 1.3038516044616699e-08, + -1.862645149230957e-09, + 1.1634256225079298e-07 + ], + "min": [ + -1.3038516044616699e-08, + -5.029141902923584e-08, + -6.0928869061172009e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379780, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635772, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 379804, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 671424, + "componentType": 5126, + "count": 38, + "max": [ + 4.6275094867098687e-09, + 2.2700991308965968e-08, + -1.4901161193847656e-08, + 1 + ], + "min": [ + -4.3364725144101612e-09, + 1.8393626177726219e-08, + -2.2351745343485163e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 379956, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 635844, + "componentType": 5126, + "count": 47, + "max": [ + 3.166496753692627e-08, + 0.06979745626449585, + 1.4081160770729184e-07 + ], + "min": [ + -1.862645149230957e-08, + 0.069797366857528687, + 2.2519088815897703e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380144, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636408, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 1.0000002384185791 + ], + "min": [ + 0.99999994039535522, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380176, + "componentType": 5126, + "count": 47, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 672032, + "componentType": 5126, + "count": 47, + "max": [ + 0.28130322694778442, + 0.10891053080558777, + -0.021657936275005341, + 0.95317548513412476 + ], + "min": [ + 0.28129333257675171, + 0.10888498276472092, + -0.021744512021541595, + 0.95317351818084717 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 380364, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636504, + "componentType": 5126, + "count": 38, + "max": [ + -0.034954514354467392, + 0.335368812084198, + -0.0064072813838720322 + ], + "min": [ + -0.034954525530338287, + 0.33536872267723083, + -0.0064073428511619568 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380516, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 636960, + "componentType": 5126, + "count": 27, + "max": [ + 1.0000004768371582, + 1.0000004768371582, + 1.0000007152557373 + ], + "min": [ + 0.99999970197677612, + 1.0000001192092896, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 672784, + "componentType": 5126, + "count": 38, + "max": [ + -0.17214222252368927, + 0.16701889038085938, + 0.22579611837863922, + 0.94418638944625854 + ], + "min": [ + -0.17214234173297882, + 0.16701880097389221, + 0.22579598426818848, + 0.94418632984161377 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 380776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637284, + "componentType": 5126, + "count": 38, + "max": [ + 4.0978193283081055e-08, + 8.754432201385498e-08, + 1.4808028936386108e-07 + ], + "min": [ + 2.4214386940002441e-08, + 6.4261257648468018e-08, + 1.4342367649078369e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380928, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637740, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 380944, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 673392, + "componentType": 5126, + "count": 38, + "max": [ + -1.1175872671742582e-08, + -9.3132266343332049e-09, + 7.4505814851022478e-09, + 1 + ], + "min": [ + -1.3969839507410597e-08, + -1.6763804566721774e-08, + -3.7252900764173091e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 637788, + "componentType": 5126, + "count": 38, + "max": [ + -1.3038516044616699e-08, + 0.022592576220631599, + 7.2177499532699585e-08 + ], + "min": [ + -4.2840838432312012e-08, + 0.022592568770051003, + -2.9802322387695312e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381248, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638244, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 0.99999964237213135, + 0.99999970197677612, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 674000, + "componentType": 5126, + "count": 38, + "max": [ + 0.08288169652223587, + 0.044399186968803406, + 0.028591975569725037, + 0.99515920877456665 + ], + "min": [ + 0.082881473004817963, + 0.04439917579293251, + 0.028591956943273544, + 0.99515920877456665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638388, + "componentType": 5126, + "count": 38, + "max": [ + 5.5511151231257827e-17, + 1.0058283805847168e-07, + -3.6321580410003662e-08 + ], + "min": [ + -2.2351741790771484e-08, + 9.6857547760009766e-08, + -8.800998330116272e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381600, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638844, + "componentType": 5126, + "count": 6, + "max": [ + 0.9999997615814209, + 0.99999958276748657, + 1 + ], + "min": [ + 0.99999964237213135, + 0.99999946355819702, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381624, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 674608, + "componentType": 5126, + "count": 38, + "max": [ + -1.4901164746561335e-08, + 1.8626455045023249e-08, + 6.9849224182405578e-09, + 1 + ], + "min": [ + -1.7695132470407771e-08, + 1.3969840395589017e-08, + 3.7252916307295436e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 381776, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 638916, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.027876399457454681, + -1.9557774066925049e-08 + ], + "min": [ + -2.6077032089233398e-08, + 0.027876392006874084, + -5.4948031902313232e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381928, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639372, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 0.99999982118606567, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999964237213135 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 381976, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 675216, + "componentType": 5126, + "count": 38, + "max": [ + 0.041518151760101318, + 0.028988027945160866, + 0.020971927791833878, + 0.99849694967269897 + ], + "min": [ + 0.041517935693264008, + 0.02898801863193512, + 0.020971901714801788, + 0.99849694967269897 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382128, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639516, + "componentType": 5126, + "count": 38, + "max": [ + 1.862645149230957e-08, + 0.013938194140791893, + 7.4505805969238281e-09 + ], + "min": [ + -2.2351741790771484e-08, + 0.013938145712018013, + -2.9336661100387573e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382280, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 639972, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382296, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 675824, + "componentType": 5126, + "count": 38, + "max": [ + -3.6437995731830597e-08, + 7.6368458223896596e-08, + -1.0637450920114588e-08, + 1 + ], + "min": [ + -3.8417059755602168e-08, + 7.4505813074665639e-08, + -3.2800016924738884e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382448, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640020, + "componentType": 5126, + "count": 38, + "max": [ + 2.7939677238464355e-09, + 0.07480233907699585, + -7.2119291871786118e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.074802331626415253, + -1.0308576747775078e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382600, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640476, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000002384185791 + ], + "min": [ + 1, + 0.99999988079071045, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382616, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 676432, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057207942008972, + 0.17872516810894012, + -0.015338553115725517, + 0.91919600963592529 + ], + "min": [ + 0.35057201981544495, + 0.17872515320777893, + -0.015338643454015255, + 0.91919600963592529 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 382768, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640524, + "componentType": 5126, + "count": 38, + "max": [ + 1.0244548320770264e-08, + 7.0780515670776367e-08, + -1.0587973520159721e-07 + ], + "min": [ + -1.3038516044616699e-08, + 1.862645371275562e-09, + -1.3722456060349941e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 640980, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 382936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 677040, + "componentType": 5126, + "count": 38, + "max": [ + 4.3364707380533218e-09, + -2.1071173250675201e-08, + 9.0982519370015613e-16, + 1 + ], + "min": [ + -5.5588320613253472e-09, + -2.3632310330867767e-08, + 5.3363063269311733e-18, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383088, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641028, + "componentType": 5126, + "count": 38, + "max": [ + 2.7939677238464355e-09, + 0.07480233907699585, + -7.2119291871786118e-08 + ], + "min": [ + -9.3132257461547852e-09, + 0.074802331626415253, + -1.0308576747775078e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383240, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641484, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383256, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 677648, + "componentType": 5126, + "count": 38, + "max": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338595025241375, + 0.91919606924057007 + ], + "min": [ + 0.35057199001312256, + 0.17872489988803864, + -0.015338609926402569, + 0.91919606924057007 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383408, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641532, + "componentType": 5126, + "count": 38, + "max": [ + -0.044579215347766876, + 0.32914406061172485, + 0.0039983857423067093 + ], + "min": [ + -0.044579241424798965, + 0.3291439414024353, + 0.0039983224123716354 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383560, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 641988, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 0.99999982118606567, + 1.0000002384185791, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383600, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 678256, + "componentType": 5126, + "count": 38, + "max": [ + -0.13570018112659454, + 0.18749426305294037, + 0.27479076385498047, + 0.93323171138763428 + ], + "min": [ + -0.13570019602775574, + 0.18749424815177917, + 0.27479076385498047, + 0.93323171138763428 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 383752, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642108, + "componentType": 5126, + "count": 38, + "max": [ + -5.2154064178466797e-08, + 1.7881393432617188e-07, + 8.1956386566162109e-08 + ], + "min": [ + -7.4505805969238281e-08, + 1.1920928955078125e-07, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383904, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642564, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 383936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 678864, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + -2.2351745343485163e-08, + -7.078050856534901e-08, + 1 + ], + "min": [ + 1.4901162970204496e-08, + -4.0978196835794733e-08, + -8.1956386566162109e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 384088, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 642660, + "componentType": 5126, + "count": 65, + "max": [ + -1.8626450382086546e-09, + 0.25792211294174194, + 3.7252902984619141e-09 + ], + "min": [ + -1.862645371275562e-09, + 0.25792211294174194, + -3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384348, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643440, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 679472, + "componentType": 5126, + "count": 65, + "max": [ + -0.021843180060386658, + 0.88061058521270752, + 0.19106145203113556, + -0.45820611715316772 + ], + "min": [ + -0.068233758211135864, + 0.86200660467147827, + 0.11793126910924911, + -0.46508944034576416 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 384616, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643464, + "componentType": 5126, + "count": 44, + "max": [ + 3.9115548133850098e-08, + 0.12896113097667694, + 1.1175870895385742e-08 + ], + "min": [ + 3.5390257835388184e-08, + 0.12896111607551575, + 1.1175870895385742e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384792, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 643992, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999995231628418, + 1, + 0.99999964237213135 + ], + "min": [ + 0.99999940395355225, + 0.99999994039535522, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 384824, + "componentType": 5126, + "count": 44, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 680512, + "componentType": 5126, + "count": 44, + "max": [ + -2.25778027385104e-08, + 0.88548815250396729, + -1.1485237649822011e-07, + -0.46466189622879028 + ], + "min": [ + -1.2074235655745724e-07, + 0.88032656908035278, + -2.6209929160359025e-07, + -0.47436809539794922 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385000, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644088, + "componentType": 5126, + "count": 38, + "max": [ + 3.3527612686157227e-08, + 0.13927140831947327, + 2.2351741790771484e-08 + ], + "min": [ + -7.4505805969238281e-09, + 0.13927136361598969, + -1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385152, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644544, + "componentType": 5126, + "count": 4, + "max": [ + 0.9999995231628418, + 1.0000001192092896, + 0.99999898672103882 + ], + "min": [ + 0.99999946355819702, + 1.0000001192092896, + 0.99999892711639404 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385168, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 681216, + "componentType": 5126, + "count": 38, + "max": [ + 0.2553144097328186, + -0.090401604771614075, + 0.19322627782821655, + 0.94303005933761597 + ], + "min": [ + 0.25531435012817383, + -0.090401627123355865, + 0.19322626292705536, + 0.94303005933761597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385320, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644592, + "componentType": 5126, + "count": 32, + "max": [ + -0.044326622039079666, + -0.11071473360061646, + 0.071930252015590668 + ], + "min": [ + -0.04432663694024086, + -0.11071483045816422, + 0.071930237114429474 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385448, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 644976, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 1.0000008344650269, + 1.0000005960464478 + ], + "min": [ + 1, + 1.0000007152557373, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385480, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 681824, + "componentType": 5126, + "count": 38, + "max": [ + -0.25531437993049622, + 0.090401656925678253, + -0.19322623312473297, + 0.94303005933761597 + ], + "min": [ + -0.2553144097328186, + 0.090401642024517059, + -0.19322623312473297, + 0.94303005933761597 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 385632, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645072, + "componentType": 5126, + "count": 46, + "max": [ + -1.862645149230957e-08, + -1.7136335372924805e-07, + 3.3527612686157227e-08 + ], + "min": [ + -4.8428773880004883e-08, + -1.7136335372924805e-07, + 3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385816, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645624, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000011920928955, + 1 + ], + "min": [ + 1, + 1.000001072883606, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 385832, + "componentType": 5126, + "count": 46, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 682432, + "componentType": 5126, + "count": 46, + "max": [ + -1.4901154088420299e-07, + 1.6402919982283493e-06, + -2.8777856186934514e-07, + 1 + ], + "min": [ + -2.1699804619856877e-07, + -2.8815125006076414e-06, + -3.6600960129362647e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386016, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 645672, + "componentType": 5126, + "count": 38, + "max": [ + 1.4901161193847656e-08, + 0.27854257822036743, + 1.4901161193847656e-08 + ], + "min": [ + 1.1175870895385742e-08, + 0.27854251861572266, + -7.4505805969238281e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386168, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646128, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "min": [ + 0.99999982118606567, + 0.99999994039535522, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 683168, + "componentType": 5126, + "count": 38, + "max": [ + 0.25531506538391113, + -0.090401478111743927, + 0.1932266503572464, + 0.94302982091903687 + ], + "min": [ + 0.25531500577926636, + -0.090401478111743927, + 0.19322660565376282, + 0.94302982091903687 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386336, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646176, + "componentType": 5126, + "count": 40, + "max": [ + 1.6763806343078613e-07, + 0.13927125930786133, + 5.5511151231257827e-17 + ], + "min": [ + 9.6857547760009766e-08, + 0.13927114009857178, + -4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386496, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646656, + "componentType": 5126, + "count": 18, + "max": [ + 0.99999994039535522, + 0.99999940395355225, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999892711639404, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386568, + "componentType": 5126, + "count": 40, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 683776, + "componentType": 5126, + "count": 40, + "max": [ + 7.8231124689409626e-08, + 1.0641291737556458e-05, + 4.6007363607714069e-07, + 1 + ], + "min": [ + -5.5879372240497105e-08, + 1.0639429092407227e-05, + -7.0221568648776156e-07, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 386728, + "componentType": 5126, + "count": 28, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 646872, + "componentType": 5126, + "count": 28, + "max": [ + 0.027315620332956314, + 0.33446064591407776, + 0.019757568836212158 + ], + "min": [ + 0.027315597981214523, + 0.33446061611175537, + 0.019757561385631561 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386840, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647208, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000004768371582 + ], + "min": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 386856, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 684416, + "componentType": 5126, + "count": 65, + "max": [ + -0.24058754742145538, + -0.63463574647903442, + 0.38865479826927185, + 0.59767657518386841 + ], + "min": [ + -0.349519282579422, + -0.70802515745162964, + 0.34330227971076965, + 0.5384858250617981 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387116, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647256, + "componentType": 5126, + "count": 38, + "max": [ + 5.7589204516261816e-08, + 8.0326572060585022e-09, + 2.6076577341882512e-07 + ], + "min": [ + 5.477340891957283e-08, + 7.7416189014911652e-09, + 1.4316901797428727e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387268, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387300, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 685456, + "componentType": 5126, + "count": 38, + "max": [ + -6.9685484049841762e-09, + -3.2068786737227128e-08, + 6.7069890974380542e-08, + 1 + ], + "min": [ + -6.9794614532270316e-09, + -3.2074240152724087e-08, + 4.4715747549162188e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387452, + "componentType": 5126, + "count": 22, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 647808, + "componentType": 5126, + "count": 22, + "max": [ + -0.02313009649515152, + 0.26697865128517151, + 0.14965291321277618 + ], + "min": [ + -0.023130105808377266, + 0.26697853207588196, + 0.1496528834104538 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648072, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 0.99999982118606567, + 0.99999970197677612 + ], + "min": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387572, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 686064, + "componentType": 5126, + "count": 38, + "max": [ + -0.69586664438247681, + 0.39777576923370361, + 0.29703018069267273, + 0.51895773410797119 + ], + "min": [ + -0.69586664438247681, + 0.39777573943138123, + 0.29703015089035034, + 0.51895773410797119 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 387724, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648168, + "componentType": 5126, + "count": 65, + "max": [ + 1.1723955140041653e-13, + 0.30786654353141785, + -7.4505805969238281e-08 + ], + "min": [ + 8.8817841970012523e-15, + 0.30786627531051636, + -1.1920928955078125e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 387984, + "componentType": 5126, + "count": 9, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 648948, + "componentType": 5126, + "count": 9, + "max": [ + 1, + 1.0000002384185791, + 1.0000003576278687 + ], + "min": [ + 1, + 1.0000001192092896, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388020, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 686672, + "componentType": 5126, + "count": 65, + "max": [ + 0.028134267777204514, + -4.0643462284606358e-07, + 2.1426093610443786e-07, + 0.99988174438476562 + ], + "min": [ + -0.077048309147357941, + -0.040203806012868881, + -0.055221345275640488, + 0.99468475580215454 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 388280, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649056, + "componentType": 5126, + "count": 65, + "max": [ + 1.4212155757808986e-14, + 0.77674132585525513, + -2.4214401150857157e-08 + ], + "min": [ + 1.4209553672595021e-14, + 0.77674120664596558, + -2.9802336598550028e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649836, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 388572, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 687712, + "componentType": 5126, + "count": 65, + "max": [ + 0.36392518877983093, + 0.00023905043781269342, + 0.0057167969644069672, + 0.96689903736114502 + ], + "min": [ + 0.2551591694355011, + -4.639584005872166e-08, + -1.1333078475672664e-07, + 0.93141061067581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 388832, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 649932, + "componentType": 5126, + "count": 65, + "max": [ + 1.4212155757808986e-14, + 0.77674132585525513, + -2.4214401150857157e-08 + ], + "min": [ + 1.4209553672595021e-14, + 0.77674120664596558, + -2.9802336598550028e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389092, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 650712, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999994039535522, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389124, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 688752, + "componentType": 5126, + "count": 65, + "max": [ + 0.36392518877983093, + 0.00023905043781269342, + 0.0057167969644069672, + 0.96689903736114502 + ], + "min": [ + 0.2551591694355011, + -4.639584005872166e-08, + -1.1333078475672664e-07, + 0.93141061067581177 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 389384, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 650808, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -6.2172489379008766e-15, + 0.4050619900226593, + -1.8626385989151117e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389644, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 651588, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 389676, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 689792, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627923578023911, + 1.6812103353913699e-07, + 0.0019892251584678888, + 0.99943441152572632 + ], + "min": [ + -0.14756020903587341, + -0.0013591519091278315, + -8.8081016258456657e-08, + 0.98905014991760254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 389936, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 651684, + "componentType": 5126, + "count": 38, + "max": [ + 8.8152205535152461e-09, + -4.1117331761597598e-08, + -1.7590025436220458e-08 + ], + "min": [ + 8.1391746675762988e-09, + -4.2088771579074091e-08, + -1.9232203385399771e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390088, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652140, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390096, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 690832, + "componentType": 5126, + "count": 38, + "max": [ + 2.6077033865590238e-08, + 1.866362353553086e-08, + 9.8432373363266379e-11, + 1 + ], + "min": [ + 2.6077030312876559e-08, + 1.8663609324676145e-08, + 9.8420827043810277e-11, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390248, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652164, + "componentType": 5126, + "count": 38, + "max": [ + 9.4660208560526371e-09, + 0.3134346604347229, + -2.0809238776564598e-09 + ], + "min": [ + 8.3600752986967564e-09, + 0.31343463063240051, + -2.1391315385699272e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390400, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652620, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1.0000002384185791, + 1 + ], + "min": [ + 0.99999994039535522, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390408, + "componentType": 5126, + "count": 24, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 691440, + "componentType": 5126, + "count": 24, + "max": [ + -0.0024187450762838125, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465371401049197 + ], + "min": [ + -0.0024187455419450998, + 0.99285906553268433, + -0.11926846951246262, + 0.00012465364125091583 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390504, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 652644, + "componentType": 5126, + "count": 38, + "max": [ + 2.6368070393800735e-08, + -5.8207660913467407e-09, + -2.722663339227438e-08 + ], + "min": [ + 2.3486791178584099e-08, + -2.0489096641540527e-08, + -2.7284841053187847e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390656, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653100, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "min": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000003576278687 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390664, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 691824, + "componentType": 5126, + "count": 38, + "max": [ + -5.2344585554919831e-08, + 7.1362570963628968e-08, + 1.4333632059049251e-09, + 1 + ], + "min": [ + -5.2353282598005535e-08, + 7.1333460027744877e-08, + 1.2150844774794223e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 390816, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653124, + "componentType": 5126, + "count": 38, + "max": [ + 5.5879354476928711e-09, + 0.47875437140464783, + 1.3213139027357101e-08 + ], + "min": [ + 9.3132251910432728e-10, + 0.47875437140464783, + 7.3050614446401596e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390968, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653580, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 390976, + "componentType": 5126, + "count": 27, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 692432, + "componentType": 5126, + "count": 27, + "max": [ + -0.52016496658325195, + 0.033435288816690445, + -0.058115012943744659, + 0.85143005847930908 + ], + "min": [ + -0.52016496658325195, + 0.033435288816690445, + -0.058115012943744659, + 0.85143005847930908 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391084, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 653604, + "componentType": 5126, + "count": 38, + "max": [ + -7.4505805969238281e-09, + 0.23937711119651794, + 5.5733835324645042e-08 + ], + "min": [ + -1.4901161193847656e-08, + 0.23937708139419556, + 2.4854671210050583e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391236, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654060, + "componentType": 5126, + "count": 2, + "max": [ + 0.9999995231628418, + 0.99999958276748657, + 0.99999946355819702 + ], + "min": [ + 0.9999995231628418, + 0.99999958276748657, + 0.99999946355819702 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391244, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 692864, + "componentType": 5126, + "count": 38, + "max": [ + -1.0771260861019982e-07, + 0.039239384233951569, + -3.052433683592426e-08, + 0.99922984838485718 + ], + "min": [ + -1.1879880190690528e-07, + 0.039239384233951569, + -3.7456395318713476e-08, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391396, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654084, + "componentType": 5126, + "count": 38, + "max": [ + 7.4505805969238281e-09, + 0.21278384327888489, + 2.4214386940002441e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.21278378367424011, + -5.2154064178466797e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391548, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654540, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000002384185791, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391580, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 693472, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897873520851135, + 0.18448330461978912, + 0.7880139946937561, + 0.51688563823699951 + ], + "min": [ + -0.27897873520851135, + 0.18448328971862793, + 0.7880139946937561, + 0.51688557863235474 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391732, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654636, + "componentType": 5126, + "count": 16, + "max": [ + -0.15143655240535736, + 0.084600701928138733, + -0.12323389947414398 + ], + "min": [ + -0.15143658220767975, + 0.084600694477558136, + -0.12323394417762756 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391796, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654828, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000003576278687, + 0.99999964237213135, + 1 + ], + "min": [ + 1.0000002384185791, + 0.99999958276748657, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 391812, + "componentType": 5126, + "count": 37, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 694080, + "componentType": 5126, + "count": 37, + "max": [ + 0.2789786159992218, + -0.18448323011398315, + -0.78801387548446655, + 0.51688581705093384 + ], + "min": [ + 0.2789786159992218, + -0.18448328971862793, + -0.7880139946937561, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 391960, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 654876, + "componentType": 5126, + "count": 42, + "max": [ + 2.6077032089233398e-08, + -2.9802322387695312e-08, + 2.5611370801925659e-08 + ], + "min": [ + 7.4505805969238281e-09, + -4.4703483581542969e-08, + 1.6298145055770874e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392128, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655380, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392152, + "componentType": 5126, + "count": 42, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 694672, + "componentType": 5126, + "count": 42, + "max": [ + 7.5924617704004049e-09, + 0.00016944277740549296, + 4.6798959374427795e-08, + 1 + ], + "min": [ + -6.7579101425963017e-08, + -9.7497849793626301e-09, + 4.4470656490602778e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392320, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655452, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.42556747794151306, + -2.2351741790771484e-08 + ], + "min": [ + 2.9802322387695312e-08, + 0.42556744813919067, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392472, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655908, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999982118606567, + 1, + 1 + ], + "min": [ + 0.99999982118606567, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392480, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 695344, + "componentType": 5126, + "count": 14, + "max": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688569784164429 + ], + "min": [ + -0.27897864580154419, + 0.18448293209075928, + 0.78801405429840088, + 0.51688569784164429 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392536, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 655932, + "componentType": 5126, + "count": 38, + "max": [ + 2.2351741790771484e-08, + 0.21278370916843414, + 1.3038516044616699e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.21278366446495056, + -5.5879354476928711e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392688, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656388, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000004768371582, + 1.0000001192092896 + ], + "min": [ + 1, + 1.0000002384185791, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392720, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 695568, + "componentType": 5126, + "count": 38, + "max": [ + 4.5634788392590053e-08, + -5.5879354476928711e-09, + -5.2154042862184724e-08, + 1 + ], + "min": [ + 2.2468150007171062e-08, + -8.3819031715393066e-09, + -6.5192566012228781e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392872, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656484, + "componentType": 5126, + "count": 4, + "max": [ + 0.21592012047767639, + 0.36957693099975586, + -0.15007570385932922 + ], + "min": [ + 0.21592012047767639, + 0.36957690119743347, + -0.15007571876049042 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392888, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656532, + "componentType": 5126, + "count": 6, + "max": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "min": [ + 0.99999982118606567, + 1, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392912, + "componentType": 5126, + "count": 14, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696176, + "componentType": 5126, + "count": 14, + "max": [ + 0.56482326984405518, + 0.75361925363540649, + -0.1584276407957077, + -0.29653573036193848 + ], + "min": [ + 0.5648232102394104, + 0.75361919403076172, + -0.15842767059803009, + -0.29653576016426086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 392968, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656604, + "componentType": 5126, + "count": 2, + "max": [ + -9.4132239780719829e-08, + -8.6940062260509876e-08, + -3.9640326576773077e-08 + ], + "min": [ + -9.4132239780719829e-08, + -8.6940062260509876e-08, + -3.9640326576773077e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392976, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656628, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1.0000001192092896, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 392984, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696400, + "componentType": 5126, + "count": 8, + "max": [ + 1.1175891323489395e-08, + -9.437243875254353e-09, + -3.5529976183390488e-10, + 1 + ], + "min": [ + 1.1175891323489395e-08, + -9.437243875254353e-09, + -3.5529976183390488e-10, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393016, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656652, + "componentType": 5126, + "count": 2, + "max": [ + -1.2179953046143055e-08, + 0.31343457102775574, + 1.4115357771515846e-09 + ], + "min": [ + -1.2179953046143055e-08, + 0.31343457102775574, + 1.4115357771515846e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393024, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656676, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393032, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696528, + "componentType": 5126, + "count": 6, + "max": [ + 0.0024187492672353983, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465378677006811 + ], + "min": [ + 0.0024187492672353983, + 0.9928591251373291, + -0.11926832050085068, + -0.00012465378677006811 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393056, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656700, + "componentType": 5126, + "count": 2, + "max": [ + 5.4860720410943031e-08, + 1.257285475730896e-07, + 3.2319803722202778e-08 + ], + "min": [ + 5.4860720410943031e-08, + 1.257285475730896e-07, + 3.2319803722202778e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393064, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656724, + "componentType": 5126, + "count": 2, + "max": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "min": [ + 1.0000001192092896, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393072, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696624, + "componentType": 5126, + "count": 8, + "max": [ + -1.5118388319024234e-08, + -6.7288056015968323e-08, + -2.9758662201118113e-09, + 1 + ], + "min": [ + -1.5118388319024234e-08, + -6.7288056015968323e-08, + -2.9758662201118113e-09, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393104, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656748, + "componentType": 5126, + "count": 2, + "max": [ + 6.5192580223083496e-09, + 0.47875428199768066, + -7.5378920882940292e-09 + ], + "min": [ + 6.5192580223083496e-09, + 0.47875428199768066, + -7.5378920882940292e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393112, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656772, + "componentType": 5126, + "count": 2, + "max": [ + 0.99999994039535522, + 1, + 1 + ], + "min": [ + 0.99999994039535522, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393120, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696752, + "componentType": 5126, + "count": 8, + "max": [ + -0.5201650857925415, + -0.033435288816690445, + 0.058115020394325256, + 0.85142999887466431 + ], + "min": [ + -0.5201650857925415, + -0.033435288816690445, + 0.058115020394325256, + 0.85142999887466431 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393152, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 656796, + "componentType": 5126, + "count": 38, + "max": [ + 3.7252902984619141e-08, + 0.2393772155046463, + 1.2470991350710392e-07 + ], + "min": [ + 3.3527612686157227e-08, + 0.23937718570232391, + 1.2098462320864201e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393304, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657252, + "componentType": 5126, + "count": 16, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 1 + ], + "min": [ + 0.99999970197677612, + 0.9999995231628418, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393368, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 696880, + "componentType": 5126, + "count": 38, + "max": [ + -3.3736594673428044e-07, + -0.039239343255758286, + 1.1528177168429465e-07, + 0.99922984838485718 + ], + "min": [ + -3.4412687455187552e-07, + -0.039239354431629181, + 1.091652706008972e-07, + 0.99922984838485718 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393520, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657444, + "componentType": 5126, + "count": 38, + "max": [ + -1.862645149230957e-08, + 0.21278372406959534, + 9.8720192909240723e-08 + ], + "min": [ + -3.7252902984619141e-08, + 0.21278370916843414, + 9.3132257461547852e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393672, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 657900, + "componentType": 5126, + "count": 10, + "max": [ + 1.0000001192092896, + 0.99999994039535522, + 1.0000003576278687 + ], + "min": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393712, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 697488, + "componentType": 5126, + "count": 38, + "max": [ + -0.27897852659225464, + -0.1844828724861145, + -0.78801423311233521, + 0.51688545942306519 + ], + "min": [ + -0.27897855639457703, + -0.18448297679424286, + -0.78801429271697998, + 0.51688539981842041 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 393864, + "componentType": 5126, + "count": 32, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658020, + "componentType": 5126, + "count": 32, + "max": [ + 0.15143665671348572, + 0.084600925445556641, + -0.12323378771543503 + ], + "min": [ + 0.15143659710884094, + 0.084600836038589478, + -0.12323383986949921 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 393992, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658404, + "componentType": 5126, + "count": 10, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394032, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 698096, + "componentType": 5126, + "count": 38, + "max": [ + 0.27897858619689941, + 0.18448314070701599, + 0.78801429271697998, + 0.51688534021377563 + ], + "min": [ + 0.27897858619689941, + 0.18448305130004883, + 0.78801423311233521, + 0.51688528060913086 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394184, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658524, + "componentType": 5126, + "count": 38, + "max": [ + 6.891787052154541e-08, + 1.0430812835693359e-07, + 7.4505805969238281e-09 + ], + "min": [ + 6.1467289924621582e-08, + 1.0430812835693359e-07, + 5.5511151231257827e-17 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394336, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 658980, + "componentType": 5126, + "count": 16, + "max": [ + 1, + 1, + 1.0000003576278687 + ], + "min": [ + 1, + 0.99999964237213135, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394400, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 698704, + "componentType": 5126, + "count": 38, + "max": [ + 2.337510238703544e-07, + 9.0527457530242827e-08, + 1.1612428352236748e-07, + 1 + ], + "min": [ + 2.0363950170576572e-07, + 9.0047237222279364e-08, + 8.6030937040959543e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394552, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659172, + "componentType": 5126, + "count": 38, + "max": [ + -4.8428773880004883e-08, + 0.42556750774383545, + 5.7741999626159668e-08 + ], + "min": [ + -7.8231096267700195e-08, + 0.42556744813919067, + 2.7939677238464355e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394704, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659628, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394712, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 699312, + "componentType": 5126, + "count": 8, + "max": [ + -0.27897858619689941, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "min": [ + -0.27897858619689941, + -0.18448290228843689, + -0.78801411390304565, + 0.51688563823699951 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 394744, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 659652, + "componentType": 5126, + "count": 38, + "max": [ + 5.9604644775390625e-08, + 0.21278370916843414, + 7.0780515670776367e-08 + ], + "min": [ + 1.4901161193847656e-08, + 0.21278364956378937, + 1.4901161193847656e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660108, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999994039535522, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 394928, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 699440, + "componentType": 5126, + "count": 38, + "max": [ + 1.3806860010845412e-07, + -1.6298146832127713e-08, + 1.2107196312172164e-07, + 1 + ], + "min": [ + 7.1479014707165334e-08, + -1.862645149230957e-08, + -4.0978193283081055e-08, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395080, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660204, + "componentType": 5126, + "count": 12, + "max": [ + -0.21592000126838684, + 0.36957699060440063, + -0.15007559955120087 + ], + "min": [ + -0.21592001616954803, + 0.36957696080207825, + -0.15007567405700684 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395128, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660348, + "componentType": 5126, + "count": 6, + "max": [ + 1, + 0.99999988079071045, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 0.99999988079071045, + 0.99999982118606567 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395152, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 700048, + "componentType": 5126, + "count": 6, + "max": [ + -0.5648232102394104, + 0.75361925363540649, + -0.15842773020267487, + 0.2965356707572937 + ], + "min": [ + -0.56482326984405518, + 0.75361919403076172, + -0.15842774510383606, + 0.2965356707572937 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395176, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 660420, + "componentType": 5126, + "count": 65, + "max": [ + -1.7763568394002505e-15, + 0.40506207942962646, + -1.8626385989151117e-09 + ], + "min": [ + -6.2172489379008766e-15, + 0.4050619900226593, + -1.8626385989151117e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395436, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661200, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "min": [ + 1, + 0.99999982118606567, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395468, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 700144, + "componentType": 5126, + "count": 65, + "max": [ + -0.033627923578023911, + 1.6812103353913699e-07, + 0.0019892251584678888, + 0.99943441152572632 + ], + "min": [ + -0.14756020903587341, + -0.0013591519091278315, + -8.8081016258456657e-08, + 0.98905014991760254 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395728, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661296, + "componentType": 5126, + "count": 38, + "max": [ + 7.1054273576010019e-15, + 0.055200062692165375, + 0.19749552011489868 + ], + "min": [ + 0, + 0.055200055241584778, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395880, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661752, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 395896, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 701184, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261119997656351e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 395928, + "componentType": 5126, + "count": 61, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 661800, + "componentType": 5126, + "count": 61, + "max": [ + 1.1533120414242148e-07, + -1.2479722499847412e-07, + -1.1888914741575718e-08 + ], + "min": [ + 1.0660733096301556e-07, + -2.959277480840683e-07, + -1.2443342711776495e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396172, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 662532, + "componentType": 5126, + "count": 16, + "max": [ + 1.0000001192092896, + 0.99999845027923584, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999803304672241, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396236, + "componentType": 5126, + "count": 61, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 701312, + "componentType": 5126, + "count": 61, + "max": [ + -0.24044017493724823, + -0.70790696144104004, + 0.38848459720611572, + 0.53822076320648193 + ], + "min": [ + -0.29893168807029724, + -0.70948749780654907, + 0.38610917329788208, + 0.50931328535079956 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 396480, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 662724, + "componentType": 5126, + "count": 65, + "max": [ + -0.29755711555480957, + 0.43568578362464905, + 1.587028980255127 + ], + "min": [ + -0.30338579416275024, + 0.2685072124004364, + 1.5227658748626709 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396740, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 663504, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 396748, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 702288, + "componentType": 5126, + "count": 65, + "max": [ + -0.00022956474276725203, + -0.00017368381668347865, + 0.49643996357917786, + 0.86807101964950562 + ], + "min": [ + -0.0041950764134526253, + -0.0071074403822422028, + 0.49639764428138733, + 0.86805605888366699 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 397008, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 663528, + "componentType": 5126, + "count": 64, + "max": [ + -3.2159732654690742e-08, + 9.5460563898086548e-09, + -1.2826058082282543e-07 + ], + "min": [ + -1.1748488759621978e-07, + -1.4668330550193787e-07, + -3.5878474591299891e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 397264, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 664296, + "componentType": 5126, + "count": 64, + "max": [ + 1.0000001192092896, + 0.99999886751174927, + 1 + ], + "min": [ + 0.99999994039535522, + 0.99999672174453735, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 397520, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 703328, + "componentType": 5126, + "count": 64, + "max": [ + -0.24007512629032135, + 0.72988981008529663, + -0.34160372614860535, + 0.53755348920822144 + ], + "min": [ + -0.31985971331596375, + 0.70873403549194336, + -0.38871106505393982, + 0.49855107069015503 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 397776, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665064, + "componentType": 5126, + "count": 65, + "max": [ + 0.29755717515945435, + 0.43567347526550293, + 1.5870287418365479 + ], + "min": [ + 0.29132479429244995, + 0.26850727200508118, + 1.5322726964950562 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398036, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665844, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398044, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 704352, + "componentType": 5126, + "count": 65, + "max": [ + 0.0037360589485615492, + 0.00017367221880704165, + -0.49640217423439026, + 0.86807101964950562 + ], + "min": [ + -0.00022958675981499255, + -0.0067600342445075512, + -0.49644002318382263, + 0.86805832386016846 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 398304, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 665868, + "componentType": 5126, + "count": 38, + "max": [ + 7.1054273576010019e-15, + 0.055200062692165375, + 0.19749552011489868 + ], + "min": [ + 0, + 0.055200055241584778, + 0.19749549031257629 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398456, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 666324, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 0.99999994039535522, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398472, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 705392, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831173419952393, + -9.0763023763429374e-08, + 3.2261119997656351e-08, + 0.76137501001358032 + ], + "min": [ + 0.64831173419952393, + -9.0763030868856731e-08, + 3.2261105786801636e-08, + 0.76137501001358032 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 398504, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 666372, + "componentType": 5126, + "count": 65, + "max": [ + 1.4901161193847656e-07, + 0.40159717202186584, + 4.4703483581542969e-08 + ], + "min": [ + -1.4901161193847656e-07, + 0.40159702301025391, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398764, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 667152, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "min": [ + 0.99999970197677612, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 398804, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 705520, + "componentType": 5126, + "count": 65, + "max": [ + -0.13171301782131195, + 0.062768273055553436, + -0.18888546526432037, + 0.9707719087600708 + ], + "min": [ + -0.16629819571971893, + 0.053908690810203552, + -0.19325479865074158, + 0.96577060222625732 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 399064, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 667272, + "componentType": 5126, + "count": 64, + "max": [ + 1.4901161193847656e-07, + 0.40159717202186584, + 4.4703483581542969e-08 + ], + "min": [ + -1.4901161193847656e-07, + 0.40159702301025391, + -7.4505805969238281e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399320, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668040, + "componentType": 5126, + "count": 12, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399368, + "componentType": 5126, + "count": 64, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 706560, + "componentType": 5126, + "count": 64, + "max": [ + 0.098836854100227356, + 0.79495817422866821, + -0.49223843216896057, + 0.34057825803756714 + ], + "min": [ + 0.079696699976921082, + 0.78801423311233521, + -0.5100523829460144, + 0.33519932627677917 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 399624, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668184, + "componentType": 5126, + "count": 49, + "max": [ + 2.9802322387695312e-08, + 0.57860559225082397, + 1.0989606380462646e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.5786052942276001, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399820, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668772, + "componentType": 5126, + "count": 8, + "max": [ + 1.0000001192092896, + 0.99999958276748657, + 1 + ], + "min": [ + 1, + 0.99999958276748657, + 0.99999988079071045 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 399852, + "componentType": 5126, + "count": 49, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 707584, + "componentType": 5126, + "count": 49, + "max": [ + -0.74522751569747925, + 0.33472940325737, + 0.12194520980119705, + 0.56379020214080811 + ], + "min": [ + -0.75402969121932983, + 0.33112069964408875, + 0.1213233470916748, + 0.55401057004928589 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 400048, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 668868, + "componentType": 5126, + "count": 65, + "max": [ + 2.9802322387695312e-08, + 0.57860559225082397, + 1.0989606380462646e-07 + ], + "min": [ + -2.9802322387695312e-08, + 0.5786052942276001, + -2.6077032089233398e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400308, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 669648, + "componentType": 5126, + "count": 12, + "max": [ + 0.9999997615814209, + 0.99999994039535522, + 0.99999970197677612 + ], + "min": [ + 0.99999958276748657, + 0.99999982118606567, + 0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400356, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 708368, + "componentType": 5126, + "count": 65, + "max": [ + 0.93964815139770508, + -0.11104348301887512, + -0.17523977160453796, + -0.25260570645332336 + ], + "min": [ + 0.92845195531845093, + -0.1261516660451889, + -0.19324110448360443, + -0.30811905860900879 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 400616, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 669792, + "componentType": 5126, + "count": 65, + "max": [ + -4.4703483581542969e-08, + 0.40799087285995483, + 1.0244548320770264e-07 + ], + "min": [ + -7.4505805969238281e-08, + 0.40799087285995483, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400876, + "componentType": 5126, + "count": 5, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 670572, + "componentType": 5126, + "count": 5, + "max": [ + 1.0000001192092896, + 1, + 1 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 400896, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 709408, + "componentType": 5126, + "count": 65, + "max": [ + 0.0015482029411941767, + 0.072496086359024048, + -0.10752381384372711, + 0.99218547344207764 + ], + "min": [ + -0.083540335297584534, + 0.027068598195910454, + -0.12193745374679565, + 0.98803031444549561 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 401156, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 670632, + "componentType": 5126, + "count": 38, + "max": [ + -4.4703483581542969e-08, + 0.40799087285995483, + 1.0244548320770264e-07 + ], + "min": [ + -7.4505805969238281e-08, + 0.40799087285995483, + 3.7252902984619141e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401308, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671088, + "componentType": 5126, + "count": 8, + "max": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "min": [ + 0.9999997615814209, + 0.99999988079071045, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401340, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 710448, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + -0.20495331287384033, + -0.34477144479751587, + -0.41790059208869934 + ], + "min": [ + 0.81515997648239136, + -0.20495334267616272, + -0.34477150440216064, + -0.4179006814956665 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 401492, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671184, + "componentType": 5126, + "count": 65, + "max": [ + 1.1990778148174286e-08, + 0.25762280821800232, + 7.4505805969238281e-09 + ], + "min": [ + -4.1909515857696533e-09, + 0.25762271881103516, + -3.3527612686157227e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401752, + "componentType": 5126, + "count": 13, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 671964, + "componentType": 5126, + "count": 13, + "max": [ + 0.99999970197677612, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999964237213135, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 401804, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 711056, + "componentType": 5126, + "count": 65, + "max": [ + -0.066908173263072968, + -0.33346197009086609, + -0.087721027433872223, + 0.93490731716156006 + ], + "min": [ + -0.084554530680179596, + -0.3389325737953186, + -0.093727022409439087, + 0.93373620510101318 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 402064, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672120, + "componentType": 5126, + "count": 63, + "max": [ + 7.1054273576010019e-15, + 0.7767413854598999, + 1.4901146094814521e-08 + ], + "min": [ + 3.9704669402545328e-23, + 0.7767413854598999, + -2.7939691449319071e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402316, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672876, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 0.99999988079071045, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402348, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 712096, + "componentType": 5126, + "count": 63, + "max": [ + -0.29753664135932922, + -0.22071808576583862, + -0.13816541433334351, + 0.91603350639343262 + ], + "min": [ + -0.31449571251869202, + -0.2307918518781662, + -0.14404478669166565, + 0.91190767288208008 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 402600, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 672972, + "componentType": 5126, + "count": 65, + "max": [ + 0, + 0.40159696340560913, + 7.4505805969238281e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159696340560913, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402860, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 673752, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999994039535522, + 1, + 0.9999997615814209 + ], + "min": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 402876, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 713104, + "componentType": 5126, + "count": 65, + "max": [ + -0.089770093560218811, + -0.041112378239631653, + 0.19444805383682251, + 0.97593086957931519 + ], + "min": [ + -0.17015597224235535, + -0.060118988156318665, + 0.17943507432937622, + 0.96707582473754883 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 403136, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 673800, + "componentType": 5126, + "count": 65, + "max": [ + 0, + 0.40159696340560913, + 7.4505805969238281e-08 + ], + "min": [ + -5.9604644775390625e-08, + 0.40159696340560913, + 4.4703483581542969e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403396, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 674580, + "componentType": 5126, + "count": 8, + "max": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "min": [ + 0.99999988079071045, + 1, + 0.99999970197677612 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403428, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 714144, + "componentType": 5126, + "count": 65, + "max": [ + -0.067910879850387573, + 0.79317039251327515, + -0.49738273024559021, + -0.33136811852455139 + ], + "min": [ + -0.096698299050331116, + 0.78076905012130737, + -0.52448934316635132, + -0.33785355091094971 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 403688, + "componentType": 5126, + "count": 58, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 674676, + "componentType": 5126, + "count": 58, + "max": [ + 5.9604644775390625e-08, + 0.57860547304153442, + 1.6856938600540161e-07 + ], + "min": [ + 5.2154064178466797e-08, + 0.5786052942276001, + -2.9709190130233765e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403920, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 675372, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999970197677612, + 1 + ], + "min": [ + 1, + 0.99999964237213135, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 403936, + "componentType": 5126, + "count": 58, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 715184, + "componentType": 5126, + "count": 58, + "max": [ + -0.72673016786575317, + -0.32338002324104309, + -0.12020719796419144, + 0.59248679876327515 + ], + "min": [ + -0.73873990774154663, + -0.32610028982162476, + -0.12132387608289719, + 0.5787624716758728 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 404168, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 675420, + "componentType": 5126, + "count": 65, + "max": [ + 5.9604644775390625e-08, + 0.57860547304153442, + 1.6856938600540161e-07 + ], + "min": [ + 5.2154064178466797e-08, + 0.5786052942276001, + -2.9709190130233765e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 676200, + "componentType": 5126, + "count": 4, + "max": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999964237213135, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404444, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 716112, + "componentType": 5126, + "count": 65, + "max": [ + 0.93674725294113159, + 0.12231875956058502, + 0.19104196131229401, + -0.26720094680786133 + ], + "min": [ + 0.92845189571380615, + 0.11104367673397064, + 0.17524008452892303, + -0.30811882019042969 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 404704, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 676248, + "componentType": 5126, + "count": 65, + "max": [ + 1.1920928955078125e-07, + 0.407990962266922, + -6.7055225372314453e-08 + ], + "min": [ + 4.4703483581542969e-08, + 0.40799081325531006, + -1.0058283805847168e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404964, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677028, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000002384185791 + ], + "min": [ + 0.99999982118606567, + 0.9999997615814209, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 404980, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 717152, + "componentType": 5126, + "count": 65, + "max": [ + 0.023634778335690498, + -0.0095152808353304863, + 0.12299711257219315, + 0.99295288324356079 + ], + "min": [ + -0.029420711100101471, + -0.03783048689365387, + 0.11021184176206589, + 0.99207991361618042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 405240, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677076, + "componentType": 5126, + "count": 38, + "max": [ + 1.1920928955078125e-07, + 0.407990962266922, + -6.7055225372314453e-08 + ], + "min": [ + 4.4703483581542969e-08, + 0.40799081325531006, + -1.0058283805847168e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405392, + "componentType": 5126, + "count": 6, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677532, + "componentType": 5126, + "count": 6, + "max": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "min": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405416, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 718192, + "componentType": 5126, + "count": 38, + "max": [ + 0.81516003608703613, + 0.20495341718196869, + 0.34477171301841736, + -0.41790038347244263 + ], + "min": [ + 0.81515997648239136, + 0.20495332777500153, + 0.34477165341377258, + -0.4179004430770874 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 405568, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 677604, + "componentType": 5126, + "count": 65, + "max": [ + 8.3266726846886741e-17, + 0.25762259960174561, + 1.0430812835693359e-07 + ], + "min": [ + -5.5511151231257827e-17, + 0.25762256979942322, + 3.7252902984619141e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405828, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 678384, + "componentType": 5126, + "count": 8, + "max": [ + 0.9999997615814209, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999970197677612, + 0.99999970197677612, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 405860, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 718800, + "componentType": 5126, + "count": 65, + "max": [ + -0.085882976651191711, + 0.33348196744918823, + 0.091767109930515289, + 0.93566155433654785 + ], + "min": [ + -0.10285140573978424, + 0.32634490728378296, + 0.086359716951847076, + 0.93434077501296997 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 406120, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 678480, + "componentType": 5126, + "count": 63, + "max": [ + 7.1054273576010019e-15, + 0.7767413854598999, + 1.4901146094814521e-08 + ], + "min": [ + 3.9704669402545328e-23, + 0.7767413854598999, + -2.7939691449319071e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406372, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 679236, + "componentType": 5126, + "count": 4, + "max": [ + 0.99999982118606567, + 0.9999997615814209, + 0.99999964237213135 + ], + "min": [ + 0.99999982118606567, + 0.99999970197677612, + 0.99999958276748657 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406388, + "componentType": 5126, + "count": 63, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 719840, + "componentType": 5126, + "count": 63, + "max": [ + -0.31534239649772644, + 0.22202306985855103, + 0.15540601313114166, + 0.91039520502090454 + ], + "min": [ + -0.32983064651489258, + 0.21087196469306946, + 0.14981824159622192, + 0.90694987773895264 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 406640, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 679284, + "componentType": 5126, + "count": 65, + "max": [ + 8.6736173798840355e-19, + 4.5959286154584333e-08, + -7.1382841859701784e-09 + ], + "min": [ + -8.6736173798840355e-19, + 4.4312955083114502e-08, + -7.1382846300593883e-09 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406900, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680064, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + 1, + 1, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 406908, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 720848, + "componentType": 5126, + "count": 65, + "max": [ + 0.6223413348197937, + 0.0010677532991394401, + 7.1122784106592007e-08, + 0.84870576858520508 + ], + "min": [ + 0.52886223793029785, + 9.3310575266514206e-08, + -0.0014743458013981581, + 0.78274601697921753 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 407168, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680088, + "componentType": 5126, + "count": 65, + "max": [ + 4.2292558344314557e-15, + 7.8231096267700195e-08, + -2.9243528842926025e-07 + ], + "min": [ + -9.9954766685783625e-15, + 7.0780515670776367e-08, + -2.9336661100387573e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407428, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680868, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 0.99999994039535522 + ], + "min": [ + 1, + 1, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407436, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 721888, + "componentType": 5126, + "count": 65, + "max": [ + 0.061978947371244431, + 3.1953030842135348e-17, + 5.2849769005547387e-10, + 0.99807745218276978 + ], + "min": [ + 0.061976466327905655, + -0.0039857844822108746, + -0.00025273297796957195, + 0.9980696439743042 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 407696, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 680892, + "componentType": 5126, + "count": 65, + "max": [ + 7.1050635597202927e-08, + 0.52352428436279297, + 7.8871380537748337e-09 + ], + "min": [ + 1.8910441212938167e-08, + 0.52352428436279297, + -3.2043317332863808e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407956, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 681672, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1.0000001192092896, + 1.0000002384185791 + ], + "min": [ + 1, + 1, + 1.0000002384185791 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 407972, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 722928, + "componentType": 5126, + "count": 65, + "max": [ + -0.0062190722674131393, + 0.00019194693595636636, + 0.16726690530776978, + 0.99997550249099731 + ], + "min": [ + -0.0063056931830942631, + -0.00012805432197637856, + -0.13653723895549774, + 0.98589199781417847 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 408232, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 681720, + "componentType": 5126, + "count": 65, + "max": [ + 1.6875389974302379e-14, + 0.36641576886177063, + 2.9802325940408991e-08 + ], + "min": [ + 1.5099033134902129e-14, + 0.36641573905944824, + 2.9802325940408991e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408492, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682500, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999970197677612, + 1 + ], + "min": [ + 1, + 0.99999964237213135, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408508, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 723968, + "componentType": 5126, + "count": 65, + "max": [ + 0.16870377957820892, + 0.022055592387914658, + 0.16507269442081451, + 0.98567092418670654 + ], + "min": [ + 0.16634693741798401, + -0.027006056159734726, + -0.13474376499652863, + 0.97177690267562866 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 408768, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682548, + "componentType": 5126, + "count": 2, + "max": [ + -2.9247437804968968e-15, + 0.74672240018844604, + -5.9604644775390625e-08 + ], + "min": [ + -2.9247437804968968e-15, + 0.74672240018844604, + -5.9604644775390625e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408776, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682572, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 1, + 1.0000005960464478 + ], + "min": [ + 1, + 1, + 1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 408792, + "componentType": 5126, + "count": 65, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 725008, + "componentType": 5126, + "count": 65, + "max": [ + -0.10365330427885056, + -6.1669513939932585e-09, + 9.8425722683259664e-08, + 0.99461346864700317 + ], + "min": [ + -0.14394813776016235, + -1.0157851448866495e-08, + 9.8094204759036074e-08, + 0.98958522081375122 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409052, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682620, + "componentType": 5126, + "count": 2, + "max": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "min": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409060, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682644, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999988079071045, + 1 + ], + "min": [ + 1, + 0.99999988079071045, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409068, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726048, + "componentType": 5126, + "count": 2, + "max": [ + -0.061978887766599655, + 1.2142499574274429e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "min": [ + -0.061978887766599655, + 1.2142499574274429e-18, + -5.2849752352202017e-10, + 0.99807745218276978 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409076, + "componentType": 5126, + "count": 12, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682668, + "componentType": 5126, + "count": 12, + "max": [ + 1.6455425466688212e-08, + 4.5938538306700138e-08, + -3.9326192080579858e-08 + ], + "min": [ + 1.6455416584904015e-08, + 4.593853475398646e-08, + -3.9326192080579858e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409124, + "componentType": 5126, + "count": 10, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682812, + "componentType": 5126, + "count": 10, + "max": [ + 0.99999994039535522, + 0.99999958276748657, + 1.0000001192092896 + ], + "min": [ + 0.99999994039535522, + 0.99999934434890747, + 1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409164, + "componentType": 5126, + "count": 16, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726080, + "componentType": 5126, + "count": 16, + "max": [ + 0.56482332944869995, + 0.75361925363540649, + -0.15842773020267487, + -0.29653549194335938 + ], + "min": [ + 0.5648232102394104, + 0.75361925363540649, + -0.1584278792142868, + -0.29653552174568176 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409228, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682932, + "componentType": 5126, + "count": 2, + "max": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "min": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409236, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682956, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409244, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726336, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834163335820449e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.713642157294089e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409276, + "componentType": 5126, + "count": 38, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 682980, + "componentType": 5126, + "count": 38, + "max": [ + 1.5542642728405553e-09, + 2.4902320205910655e-09, + -2.0278454471167606e-08 + ], + "min": [ + 1.5542536146995189e-09, + -1.2350547251571697e-09, + -2.0278454471167606e-08 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409428, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683436, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0.99999982118606567, + 1 + ], + "min": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409444, + "componentType": 5126, + "count": 18, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726464, + "componentType": 5126, + "count": 18, + "max": [ + -0.56482332944869995, + 0.75361925363540649, + -0.15842783451080322, + 0.29653534293174744 + ], + "min": [ + -0.56482350826263428, + 0.75361913442611694, + -0.158427894115448, + 0.29653531312942505 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409516, + "componentType": 5126, + "count": 4, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683484, + "componentType": 5126, + "count": 4, + "max": [ + -0.21592006087303162, + 0.26226198673248291, + 0.53842830657958984 + ], + "min": [ + -0.21592006087303162, + 0.26226195693016052, + 0.53842830657958984 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409532, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683532, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "min": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409540, + "componentType": 5126, + "count": 8, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726752, + "componentType": 5126, + "count": 8, + "max": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834163335820449e-08, + 0.7613750696182251 + ], + "min": [ + 0.64831167459487915, + -9.713642157294089e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409572, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683556, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409580, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683580, + "componentType": 5126, + "count": 2, + "max": [ + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409588, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726880, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 409596, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683604, + "componentType": 5126, + "count": 2, + "max": [ + 0, + 0, + 0 + ], + "min": [ + 0, + 0, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409604, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 683628, + "componentType": 5126, + "count": 2, + "max": [ + 100, + 100, + 100 + ], + "min": [ + 100, + 100, + 100 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 409612, + "componentType": 5126, + "count": 2, + "max": [ + 1.25 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 726912, + "componentType": 5126, + "count": 2, + "max": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "min": [ + -0.70710676908493042, + -0, + 0, + 0.70710676908493042 + ], + "type": "VEC4" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Idle", + "samplers": [ + { + "input": 9, + "interpolation": "LINEAR", + "output": 10 + }, + { + "input": 11, + "interpolation": "LINEAR", + "output": 12 + }, + { + "input": 13, + "interpolation": "LINEAR", + "output": 14 + }, + { + "input": 15, + "interpolation": "LINEAR", + "output": 16 + }, + { + "input": 17, + "interpolation": "LINEAR", + "output": 18 + }, + { + "input": 19, + "interpolation": "LINEAR", + "output": 20 + }, + { + "input": 21, + "interpolation": "LINEAR", + "output": 22 + }, + { + "input": 23, + "interpolation": "LINEAR", + "output": 24 + }, + { + "input": 25, + "interpolation": "LINEAR", + "output": 26 + }, + { + "input": 27, + "interpolation": "LINEAR", + "output": 28 + }, + { + "input": 29, + "interpolation": "LINEAR", + "output": 30 + }, + { + "input": 31, + "interpolation": "LINEAR", + "output": 32 + }, + { + "input": 33, + "interpolation": "LINEAR", + "output": 34 + }, + { + "input": 35, + "interpolation": "LINEAR", + "output": 36 + }, + { + "input": 37, + "interpolation": "LINEAR", + "output": 38 + }, + { + "input": 39, + "interpolation": "LINEAR", + "output": 40 + }, + { + "input": 41, + "interpolation": "LINEAR", + "output": 42 + }, + { + "input": 43, + "interpolation": "LINEAR", + "output": 44 + }, + { + "input": 45, + "interpolation": "LINEAR", + "output": 46 + }, + { + "input": 47, + "interpolation": "LINEAR", + "output": 48 + }, + { + "input": 49, + "interpolation": "LINEAR", + "output": 50 + }, + { + "input": 51, + "interpolation": "LINEAR", + "output": 52 + }, + { + "input": 53, + "interpolation": "LINEAR", + "output": 54 + }, + { + "input": 55, + "interpolation": "LINEAR", + "output": 56 + }, + { + "input": 57, + "interpolation": "LINEAR", + "output": 58 + }, + { + "input": 59, + "interpolation": "LINEAR", + "output": 60 + }, + { + "input": 61, + "interpolation": "LINEAR", + "output": 62 + }, + { + "input": 63, + "interpolation": "LINEAR", + "output": 64 + }, + { + "input": 65, + "interpolation": "LINEAR", + "output": 66 + }, + { + "input": 67, + "interpolation": "LINEAR", + "output": 68 + }, + { + "input": 69, + "interpolation": "LINEAR", + "output": 70 + }, + { + "input": 71, + "interpolation": "LINEAR", + "output": 72 + }, + { + "input": 73, + "interpolation": "LINEAR", + "output": 74 + }, + { + "input": 75, + "interpolation": "LINEAR", + "output": 76 + }, + { + "input": 77, + "interpolation": "LINEAR", + "output": 78 + }, + { + "input": 79, + "interpolation": "LINEAR", + "output": 80 + }, + { + "input": 81, + "interpolation": "LINEAR", + "output": 82 + }, + { + "input": 83, + "interpolation": "LINEAR", + "output": 84 + }, + { + "input": 85, + "interpolation": "LINEAR", + "output": 86 + }, + { + "input": 87, + "interpolation": "LINEAR", + "output": 88 + }, + { + "input": 89, + "interpolation": "LINEAR", + "output": 90 + }, + { + "input": 91, + "interpolation": "LINEAR", + "output": 92 + }, + { + "input": 93, + "interpolation": "LINEAR", + "output": 94 + }, + { + "input": 95, + "interpolation": "LINEAR", + "output": 96 + }, + { + "input": 97, + "interpolation": "LINEAR", + "output": 98 + }, + { + "input": 99, + "interpolation": "LINEAR", + "output": 100 + }, + { + "input": 101, + "interpolation": "LINEAR", + "output": 102 + }, + { + "input": 103, + "interpolation": "LINEAR", + "output": 104 + }, + { + "input": 105, + "interpolation": "LINEAR", + "output": 106 + }, + { + "input": 107, + "interpolation": "LINEAR", + "output": 108 + }, + { + "input": 109, + "interpolation": "LINEAR", + "output": 110 + }, + { + "input": 111, + "interpolation": "LINEAR", + "output": 112 + }, + { + "input": 113, + "interpolation": "LINEAR", + "output": 114 + }, + { + "input": 115, + "interpolation": "LINEAR", + "output": 116 + }, + { + "input": 117, + "interpolation": "LINEAR", + "output": 118 + }, + { + "input": 119, + "interpolation": "LINEAR", + "output": 120 + }, + { + "input": 121, + "interpolation": "LINEAR", + "output": 122 + }, + { + "input": 123, + "interpolation": "LINEAR", + "output": 124 + }, + { + "input": 125, + "interpolation": "LINEAR", + "output": 126 + }, + { + "input": 127, + "interpolation": "LINEAR", + "output": 128 + }, + { + "input": 129, + "interpolation": "LINEAR", + "output": 130 + }, + { + "input": 131, + "interpolation": "LINEAR", + "output": 132 + }, + { + "input": 133, + "interpolation": "LINEAR", + "output": 134 + }, + { + "input": 135, + "interpolation": "LINEAR", + "output": 136 + }, + { + "input": 137, + "interpolation": "LINEAR", + "output": 138 + }, + { + "input": 139, + "interpolation": "LINEAR", + "output": 140 + }, + { + "input": 141, + "interpolation": "LINEAR", + "output": 142 + }, + { + "input": 143, + "interpolation": "LINEAR", + "output": 144 + }, + { + "input": 145, + "interpolation": "LINEAR", + "output": 146 + }, + { + "input": 147, + "interpolation": "LINEAR", + "output": 148 + }, + { + "input": 149, + "interpolation": "LINEAR", + "output": 150 + }, + { + "input": 151, + "interpolation": "LINEAR", + "output": 152 + }, + { + "input": 153, + "interpolation": "LINEAR", + "output": 154 + }, + { + "input": 155, + "interpolation": "LINEAR", + "output": 156 + }, + { + "input": 157, + "interpolation": "LINEAR", + "output": 158 + }, + { + "input": 159, + "interpolation": "LINEAR", + "output": 160 + }, + { + "input": 161, + "interpolation": "LINEAR", + "output": 162 + }, + { + "input": 163, + "interpolation": "LINEAR", + "output": 164 + }, + { + "input": 165, + "interpolation": "LINEAR", + "output": 166 + }, + { + "input": 167, + "interpolation": "LINEAR", + "output": 168 + }, + { + "input": 169, + "interpolation": "LINEAR", + "output": 170 + }, + { + "input": 171, + "interpolation": "LINEAR", + "output": 172 + }, + { + "input": 173, + "interpolation": "LINEAR", + "output": 174 + }, + { + "input": 175, + "interpolation": "LINEAR", + "output": 176 + }, + { + "input": 177, + "interpolation": "LINEAR", + "output": 178 + }, + { + "input": 179, + "interpolation": "LINEAR", + "output": 180 + }, + { + "input": 181, + "interpolation": "LINEAR", + "output": 182 + }, + { + "input": 183, + "interpolation": "LINEAR", + "output": 184 + }, + { + "input": 185, + "interpolation": "LINEAR", + "output": 186 + }, + { + "input": 187, + "interpolation": "LINEAR", + "output": 188 + }, + { + "input": 189, + "interpolation": "LINEAR", + "output": 190 + }, + { + "input": 191, + "interpolation": "LINEAR", + "output": 192 + }, + { + "input": 193, + "interpolation": "LINEAR", + "output": 194 + }, + { + "input": 195, + "interpolation": "LINEAR", + "output": 196 + }, + { + "input": 197, + "interpolation": "LINEAR", + "output": 198 + }, + { + "input": 199, + "interpolation": "LINEAR", + "output": 200 + }, + { + "input": 201, + "interpolation": "LINEAR", + "output": 202 + }, + { + "input": 203, + "interpolation": "LINEAR", + "output": 204 + }, + { + "input": 205, + "interpolation": "LINEAR", + "output": 206 + }, + { + "input": 207, + "interpolation": "LINEAR", + "output": 208 + }, + { + "input": 209, + "interpolation": "LINEAR", + "output": 210 + }, + { + "input": 211, + "interpolation": "LINEAR", + "output": 212 + }, + { + "input": 213, + "interpolation": "LINEAR", + "output": 214 + }, + { + "input": 215, + "interpolation": "LINEAR", + "output": 216 + }, + { + "input": 217, + "interpolation": "LINEAR", + "output": 218 + }, + { + "input": 219, + "interpolation": "LINEAR", + "output": 220 + }, + { + "input": 221, + "interpolation": "LINEAR", + "output": 222 + }, + { + "input": 223, + "interpolation": "LINEAR", + "output": 224 + }, + { + "input": 225, + "interpolation": "LINEAR", + "output": 226 + }, + { + "input": 227, + "interpolation": "LINEAR", + "output": 228 + }, + { + "input": 229, + "interpolation": "LINEAR", + "output": 230 + }, + { + "input": 231, + "interpolation": "LINEAR", + "output": 232 + }, + { + "input": 233, + "interpolation": "LINEAR", + "output": 234 + }, + { + "input": 235, + "interpolation": "LINEAR", + "output": 236 + }, + { + "input": 237, + "interpolation": "LINEAR", + "output": 238 + }, + { + "input": 239, + "interpolation": "LINEAR", + "output": 240 + }, + { + "input": 241, + "interpolation": "LINEAR", + "output": 242 + }, + { + "input": 243, + "interpolation": "LINEAR", + "output": 244 + }, + { + "input": 245, + "interpolation": "LINEAR", + "output": 246 + }, + { + "input": 247, + "interpolation": "LINEAR", + "output": 248 + }, + { + "input": 249, + "interpolation": "LINEAR", + "output": 250 + }, + { + "input": 251, + "interpolation": "LINEAR", + "output": 252 + }, + { + "input": 253, + "interpolation": "LINEAR", + "output": 254 + }, + { + "input": 255, + "interpolation": "LINEAR", + "output": 256 + }, + { + "input": 257, + "interpolation": "LINEAR", + "output": 258 + }, + { + "input": 259, + "interpolation": "LINEAR", + "output": 260 + }, + { + "input": 261, + "interpolation": "LINEAR", + "output": 262 + }, + { + "input": 263, + "interpolation": "LINEAR", + "output": 264 + }, + { + "input": 265, + "interpolation": "LINEAR", + "output": 266 + }, + { + "input": 267, + "interpolation": "LINEAR", + "output": 268 + }, + { + "input": 269, + "interpolation": "LINEAR", + "output": 270 + }, + { + "input": 271, + "interpolation": "LINEAR", + "output": 272 + }, + { + "input": 273, + "interpolation": "LINEAR", + "output": 274 + }, + { + "input": 275, + "interpolation": "LINEAR", + "output": 276 + }, + { + "input": 277, + "interpolation": "LINEAR", + "output": 278 + }, + { + "input": 279, + "interpolation": "LINEAR", + "output": 280 + }, + { + "input": 281, + "interpolation": "LINEAR", + "output": 282 + }, + { + "input": 283, + "interpolation": "LINEAR", + "output": 284 + }, + { + "input": 285, + "interpolation": "LINEAR", + "output": 286 + }, + { + "input": 287, + "interpolation": "LINEAR", + "output": 288 + }, + { + "input": 289, + "interpolation": "LINEAR", + "output": 290 + }, + { + "input": 291, + "interpolation": "LINEAR", + "output": 292 + }, + { + "input": 293, + "interpolation": "LINEAR", + "output": 294 + }, + { + "input": 295, + "interpolation": "LINEAR", + "output": 296 + }, + { + "input": 297, + "interpolation": "LINEAR", + "output": 298 + }, + { + "input": 299, + "interpolation": "LINEAR", + "output": 300 + }, + { + "input": 301, + "interpolation": "LINEAR", + "output": 302 + }, + { + "input": 303, + "interpolation": "LINEAR", + "output": 304 + }, + { + "input": 305, + "interpolation": "LINEAR", + "output": 306 + }, + { + "input": 307, + "interpolation": "LINEAR", + "output": 308 + }, + { + "input": 309, + "interpolation": "LINEAR", + "output": 310 + }, + { + "input": 311, + "interpolation": "LINEAR", + "output": 312 + }, + { + "input": 313, + "interpolation": "LINEAR", + "output": 314 + }, + { + "input": 315, + "interpolation": "LINEAR", + "output": 316 + }, + { + "input": 317, + "interpolation": "LINEAR", + "output": 318 + }, + { + "input": 319, + "interpolation": "LINEAR", + "output": 320 + }, + { + "input": 321, + "interpolation": "LINEAR", + "output": 322 + }, + { + "input": 323, + "interpolation": "LINEAR", + "output": 324 + }, + { + "input": 325, + "interpolation": "LINEAR", + "output": 326 + }, + { + "input": 327, + "interpolation": "LINEAR", + "output": 328 + }, + { + "input": 329, + "interpolation": "LINEAR", + "output": 330 + }, + { + "input": 331, + "interpolation": "LINEAR", + "output": 332 + }, + { + "input": 333, + "interpolation": "LINEAR", + "output": 334 + }, + { + "input": 335, + "interpolation": "LINEAR", + "output": 336 + }, + { + "input": 337, + "interpolation": "LINEAR", + "output": 338 + }, + { + "input": 339, + "interpolation": "LINEAR", + "output": 340 + }, + { + "input": 341, + "interpolation": "LINEAR", + "output": 342 + }, + { + "input": 343, + "interpolation": "LINEAR", + "output": 344 + }, + { + "input": 345, + "interpolation": "LINEAR", + "output": 346 + }, + { + "input": 347, + "interpolation": "LINEAR", + "output": 348 + }, + { + "input": 349, + "interpolation": "LINEAR", + "output": 350 + }, + { + "input": 351, + "interpolation": "LINEAR", + "output": 352 + }, + { + "input": 353, + "interpolation": "LINEAR", + "output": 354 + }, + { + "input": 355, + "interpolation": "LINEAR", + "output": 356 + }, + { + "input": 357, + "interpolation": "LINEAR", + "output": 358 + }, + { + "input": 359, + "interpolation": "LINEAR", + "output": 360 + }, + { + "input": 361, + "interpolation": "LINEAR", + "output": 362 + }, + { + "input": 363, + "interpolation": "LINEAR", + "output": 364 + }, + { + "input": 365, + "interpolation": "LINEAR", + "output": 366 + }, + { + "input": 367, + "interpolation": "LINEAR", + "output": 368 + }, + { + "input": 369, + "interpolation": "LINEAR", + "output": 370 + }, + { + "input": 371, + "interpolation": "LINEAR", + "output": 372 + }, + { + "input": 373, + "interpolation": "LINEAR", + "output": 374 + }, + { + "input": 375, + "interpolation": "LINEAR", + "output": 376 + }, + { + "input": 377, + "interpolation": "LINEAR", + "output": 378 + }, + { + "input": 379, + "interpolation": "LINEAR", + "output": 380 + }, + { + "input": 381, + "interpolation": "LINEAR", + "output": 382 + }, + { + "input": 383, + "interpolation": "LINEAR", + "output": 384 + }, + { + "input": 385, + "interpolation": "LINEAR", + "output": 386 + }, + { + "input": 387, + "interpolation": "LINEAR", + "output": 388 + }, + { + "input": 389, + "interpolation": "LINEAR", + "output": 390 + }, + { + "input": 391, + "interpolation": "LINEAR", + "output": 392 + }, + { + "input": 393, + "interpolation": "LINEAR", + "output": 394 + }, + { + "input": 395, + "interpolation": "LINEAR", + "output": 396 + }, + { + "input": 397, + "interpolation": "LINEAR", + "output": 398 + }, + { + "input": 399, + "interpolation": "LINEAR", + "output": 400 + }, + { + "input": 401, + "interpolation": "LINEAR", + "output": 402 + }, + { + "input": 403, + "interpolation": "LINEAR", + "output": 404 + }, + { + "input": 405, + "interpolation": "LINEAR", + "output": 406 + }, + { + "input": 407, + "interpolation": "LINEAR", + "output": 408 + }, + { + "input": 409, + "interpolation": "LINEAR", + "output": 410 + }, + { + "input": 411, + "interpolation": "LINEAR", + "output": 412 + }, + { + "input": 413, + "interpolation": "LINEAR", + "output": 414 + }, + { + "input": 415, + "interpolation": "LINEAR", + "output": 416 + }, + { + "input": 417, + "interpolation": "LINEAR", + "output": 418 + }, + { + "input": 419, + "interpolation": "LINEAR", + "output": 420 + }, + { + "input": 421, + "interpolation": "LINEAR", + "output": 422 + }, + { + "input": 423, + "interpolation": "LINEAR", + "output": 424 + }, + { + "input": 425, + "interpolation": "LINEAR", + "output": 426 + }, + { + "input": 427, + "interpolation": "LINEAR", + "output": 428 + }, + { + "input": 429, + "interpolation": "LINEAR", + "output": 430 + }, + { + "input": 431, + "interpolation": "LINEAR", + "output": 432 + }, + { + "input": 433, + "interpolation": "LINEAR", + "output": 434 + }, + { + "input": 435, + "interpolation": "LINEAR", + "output": 436 + }, + { + "input": 437, + "interpolation": "LINEAR", + "output": 438 + }, + { + "input": 439, + "interpolation": "LINEAR", + "output": 440 + }, + { + "input": 441, + "interpolation": "LINEAR", + "output": 442 + }, + { + "input": 443, + "interpolation": "LINEAR", + "output": 444 + }, + { + "input": 445, + "interpolation": "LINEAR", + "output": 446 + }, + { + "input": 447, + "interpolation": "LINEAR", + "output": 448 + }, + { + "input": 449, + "interpolation": "LINEAR", + "output": 450 + }, + { + "input": 451, + "interpolation": "LINEAR", + "output": 452 + }, + { + "input": 453, + "interpolation": "LINEAR", + "output": 454 + }, + { + "input": 455, + "interpolation": "LINEAR", + "output": 456 + }, + { + "input": 457, + "interpolation": "LINEAR", + "output": 458 + }, + { + "input": 459, + "interpolation": "LINEAR", + "output": 460 + }, + { + "input": 461, + "interpolation": "LINEAR", + "output": 462 + }, + { + "input": 463, + "interpolation": "LINEAR", + "output": 464 + }, + { + "input": 465, + "interpolation": "LINEAR", + "output": 466 + }, + { + "input": 467, + "interpolation": "LINEAR", + "output": 468 + }, + { + "input": 469, + "interpolation": "LINEAR", + "output": 470 + }, + { + "input": 471, + "interpolation": "LINEAR", + "output": 472 + }, + { + "input": 473, + "interpolation": "LINEAR", + "output": 474 + }, + { + "input": 475, + "interpolation": "LINEAR", + "output": 476 + }, + { + "input": 477, + "interpolation": "LINEAR", + "output": 478 + }, + { + "input": 479, + "interpolation": "LINEAR", + "output": 480 + }, + { + "input": 481, + "interpolation": "LINEAR", + "output": 482 + }, + { + "input": 483, + "interpolation": "LINEAR", + "output": 484 + }, + { + "input": 485, + "interpolation": "LINEAR", + "output": 486 + }, + { + "input": 487, + "interpolation": "LINEAR", + "output": 488 + }, + { + "input": 489, + "interpolation": "LINEAR", + "output": 490 + }, + { + "input": 491, + "interpolation": "LINEAR", + "output": 492 + }, + { + "input": 493, + "interpolation": "LINEAR", + "output": 494 + }, + { + "input": 495, + "interpolation": "LINEAR", + "output": 496 + }, + { + "input": 497, + "interpolation": "LINEAR", + "output": 498 + }, + { + "input": 499, + "interpolation": "LINEAR", + "output": 500 + }, + { + "input": 501, + "interpolation": "LINEAR", + "output": 502 + }, + { + "input": 503, + "interpolation": "LINEAR", + "output": 504 + }, + { + "input": 505, + "interpolation": "LINEAR", + "output": 506 + }, + { + "input": 507, + "interpolation": "LINEAR", + "output": 508 + }, + { + "input": 509, + "interpolation": "LINEAR", + "output": 510 + }, + { + "input": 511, + "interpolation": "LINEAR", + "output": 512 + }, + { + "input": 513, + "interpolation": "LINEAR", + "output": 514 + }, + { + "input": 515, + "interpolation": "LINEAR", + "output": 516 + }, + { + "input": 517, + "interpolation": "LINEAR", + "output": 518 + }, + { + "input": 519, + "interpolation": "LINEAR", + "output": 520 + }, + { + "input": 521, + "interpolation": "LINEAR", + "output": 522 + }, + { + "input": 523, + "interpolation": "LINEAR", + "output": 524 + }, + { + "input": 525, + "interpolation": "LINEAR", + "output": 526 + }, + { + "input": 527, + "interpolation": "LINEAR", + "output": 528 + }, + { + "input": 529, + "interpolation": "LINEAR", + "output": 530 + }, + { + "input": 531, + "interpolation": "LINEAR", + "output": 532 + }, + { + "input": 533, + "interpolation": "LINEAR", + "output": 534 + }, + { + "input": 535, + "interpolation": "LINEAR", + "output": 536 + }, + { + "input": 537, + "interpolation": "LINEAR", + "output": 538 + }, + { + "input": 539, + "interpolation": "LINEAR", + "output": 540 + }, + { + "input": 541, + "interpolation": "LINEAR", + "output": 542 + }, + { + "input": 543, + "interpolation": "LINEAR", + "output": 544 + }, + { + "input": 545, + "interpolation": "LINEAR", + "output": 546 + }, + { + "input": 547, + "interpolation": "LINEAR", + "output": 548 + }, + { + "input": 549, + "interpolation": "LINEAR", + "output": 550 + }, + { + "input": 551, + "interpolation": "LINEAR", + "output": 552 + }, + { + "input": 553, + "interpolation": "LINEAR", + "output": 554 + }, + { + "input": 555, + "interpolation": "LINEAR", + "output": 556 + }, + { + "input": 557, + "interpolation": "LINEAR", + "output": 558 + }, + { + "input": 559, + "interpolation": "LINEAR", + "output": 560 + }, + { + "input": 561, + "interpolation": "LINEAR", + "output": 562 + }, + { + "input": 563, + "interpolation": "LINEAR", + "output": 564 + }, + { + "input": 565, + "interpolation": "LINEAR", + "output": 566 + }, + { + "input": 567, + "interpolation": "LINEAR", + "output": 568 + }, + { + "input": 569, + "interpolation": "LINEAR", + "output": 570 + }, + { + "input": 571, + "interpolation": "LINEAR", + "output": 572 + }, + { + "input": 573, + "interpolation": "LINEAR", + "output": 574 + }, + { + "input": 575, + "interpolation": "LINEAR", + "output": 576 + }, + { + "input": 577, + "interpolation": "LINEAR", + "output": 578 + }, + { + "input": 579, + "interpolation": "LINEAR", + "output": 580 + }, + { + "input": 581, + "interpolation": "LINEAR", + "output": 582 + }, + { + "input": 583, + "interpolation": "LINEAR", + "output": 584 + }, + { + "input": 585, + "interpolation": "LINEAR", + "output": 586 + }, + { + "input": 587, + "interpolation": "LINEAR", + "output": 588 + }, + { + "input": 589, + "interpolation": "LINEAR", + "output": 590 + }, + { + "input": 591, + "interpolation": "LINEAR", + "output": 592 + }, + { + "input": 593, + "interpolation": "LINEAR", + "output": 594 + }, + { + "input": 595, + "interpolation": "LINEAR", + "output": 596 + }, + { + "input": 597, + "interpolation": "LINEAR", + "output": 598 + }, + { + "input": 599, + "interpolation": "LINEAR", + "output": 600 + }, + { + "input": 601, + "interpolation": "LINEAR", + "output": 602 + }, + { + "input": 603, + "interpolation": "LINEAR", + "output": 604 + }, + { + "input": 605, + "interpolation": "LINEAR", + "output": 606 + }, + { + "input": 607, + "interpolation": "LINEAR", + "output": 608 + }, + { + "input": 609, + "interpolation": "LINEAR", + "output": 610 + }, + { + "input": 611, + "interpolation": "LINEAR", + "output": 612 + }, + { + "input": 613, + "interpolation": "LINEAR", + "output": 614 + }, + { + "input": 615, + "interpolation": "LINEAR", + "output": 616 + }, + { + "input": 617, + "interpolation": "LINEAR", + "output": 618 + }, + { + "input": 619, + "interpolation": "LINEAR", + "output": 620 + }, + { + "input": 621, + "interpolation": "LINEAR", + "output": 622 + }, + { + "input": 623, + "interpolation": "LINEAR", + "output": 624 + }, + { + "input": 625, + "interpolation": "LINEAR", + "output": 626 + }, + { + "input": 627, + "interpolation": "LINEAR", + "output": 628 + }, + { + "input": 629, + "interpolation": "LINEAR", + "output": 630 + }, + { + "input": 631, + "interpolation": "LINEAR", + "output": 632 + }, + { + "input": 633, + "interpolation": "LINEAR", + "output": 634 + }, + { + "input": 635, + "interpolation": "LINEAR", + "output": 636 + }, + { + "input": 637, + "interpolation": "LINEAR", + "output": 638 + }, + { + "input": 639, + "interpolation": "LINEAR", + "output": 640 + }, + { + "input": 641, + "interpolation": "LINEAR", + "output": 642 + }, + { + "input": 643, + "interpolation": "LINEAR", + "output": 644 + }, + { + "input": 645, + "interpolation": "LINEAR", + "output": 646 + }, + { + "input": 647, + "interpolation": "LINEAR", + "output": 648 + }, + { + "input": 649, + "interpolation": "LINEAR", + "output": 650 + }, + { + "input": 651, + "interpolation": "LINEAR", + "output": 652 + }, + { + "input": 653, + "interpolation": "LINEAR", + "output": 654 + }, + { + "input": 655, + "interpolation": "LINEAR", + "output": 656 + }, + { + "input": 657, + "interpolation": "LINEAR", + "output": 658 + }, + { + "input": 659, + "interpolation": "LINEAR", + "output": 660 + }, + { + "input": 661, + "interpolation": "LINEAR", + "output": 662 + }, + { + "input": 663, + "interpolation": "LINEAR", + "output": 664 + }, + { + "input": 665, + "interpolation": "LINEAR", + "output": 666 + }, + { + "input": 667, + "interpolation": "LINEAR", + "output": 668 + }, + { + "input": 669, + "interpolation": "LINEAR", + "output": 670 + }, + { + "input": 671, + "interpolation": "LINEAR", + "output": 672 + }, + { + "input": 673, + "interpolation": "LINEAR", + "output": 674 + }, + { + "input": 675, + "interpolation": "LINEAR", + "output": 676 + }, + { + "input": 677, + "interpolation": "LINEAR", + "output": 678 + }, + { + "input": 679, + "interpolation": "LINEAR", + "output": 680 + }, + { + "input": 681, + "interpolation": "LINEAR", + "output": 682 + }, + { + "input": 683, + "interpolation": "LINEAR", + "output": 684 + }, + { + "input": 685, + "interpolation": "LINEAR", + "output": 686 + }, + { + "input": 687, + "interpolation": "LINEAR", + "output": 688 + }, + { + "input": 689, + "interpolation": "LINEAR", + "output": 690 + }, + { + "input": 691, + "interpolation": "LINEAR", + "output": 692 + }, + { + "input": 693, + "interpolation": "LINEAR", + "output": 694 + }, + { + "input": 695, + "interpolation": "LINEAR", + "output": 696 + }, + { + "input": 697, + "interpolation": "LINEAR", + "output": 698 + }, + { + "input": 699, + "interpolation": "LINEAR", + "output": 700 + }, + { + "input": 701, + "interpolation": "LINEAR", + "output": 702 + }, + { + "input": 703, + "interpolation": "LINEAR", + "output": 704 + }, + { + "input": 705, + "interpolation": "LINEAR", + "output": 706 + }, + { + "input": 707, + "interpolation": "LINEAR", + "output": 708 + }, + { + "input": 709, + "interpolation": "LINEAR", + "output": 710 + }, + { + "input": 711, + "interpolation": "LINEAR", + "output": 712 + }, + { + "input": 713, + "interpolation": "LINEAR", + "output": 714 + }, + { + "input": 715, + "interpolation": "LINEAR", + "output": 716 + }, + { + "input": 717, + "interpolation": "LINEAR", + "output": 718 + }, + { + "input": 719, + "interpolation": "LINEAR", + "output": 720 + }, + { + "input": 721, + "interpolation": "LINEAR", + "output": 722 + }, + { + "input": 723, + "interpolation": "LINEAR", + "output": 724 + }, + { + "input": 725, + "interpolation": "LINEAR", + "output": 726 + }, + { + "input": 727, + "interpolation": "LINEAR", + "output": 728 + }, + { + "input": 729, + "interpolation": "LINEAR", + "output": 730 + }, + { + "input": 731, + "interpolation": "LINEAR", + "output": 732 + }, + { + "input": 733, + "interpolation": "LINEAR", + "output": 734 + }, + { + "input": 735, + "interpolation": "LINEAR", + "output": 736 + }, + { + "input": 737, + "interpolation": "LINEAR", + "output": 738 + }, + { + "input": 739, + "interpolation": "LINEAR", + "output": 740 + }, + { + "input": 741, + "interpolation": "LINEAR", + "output": 742 + }, + { + "input": 743, + "interpolation": "LINEAR", + "output": 744 + }, + { + "input": 745, + "interpolation": "LINEAR", + "output": 746 + }, + { + "input": 747, + "interpolation": "LINEAR", + "output": 748 + }, + { + "input": 749, + "interpolation": "LINEAR", + "output": 750 + }, + { + "input": 751, + "interpolation": "LINEAR", + "output": 752 + }, + { + "input": 753, + "interpolation": "LINEAR", + "output": 754 + }, + { + "input": 755, + "interpolation": "LINEAR", + "output": 756 + }, + { + "input": 757, + "interpolation": "LINEAR", + "output": 758 + }, + { + "input": 759, + "interpolation": "LINEAR", + "output": 760 + }, + { + "input": 761, + "interpolation": "LINEAR", + "output": 762 + }, + { + "input": 763, + "interpolation": "LINEAR", + "output": 764 + }, + { + "input": 765, + "interpolation": "LINEAR", + "output": 766 + }, + { + "input": 767, + "interpolation": "LINEAR", + "output": 768 + }, + { + "input": 769, + "interpolation": "LINEAR", + "output": 770 + }, + { + "input": 771, + "interpolation": "LINEAR", + "output": 772 + }, + { + "input": 773, + "interpolation": "LINEAR", + "output": 774 + }, + { + "input": 775, + "interpolation": "LINEAR", + "output": 776 + }, + { + "input": 777, + "interpolation": "LINEAR", + "output": 778 + }, + { + "input": 779, + "interpolation": "LINEAR", + "output": 780 + }, + { + "input": 781, + "interpolation": "LINEAR", + "output": 782 + }, + { + "input": 783, + "interpolation": "LINEAR", + "output": 784 + }, + { + "input": 785, + "interpolation": "LINEAR", + "output": 786 + }, + { + "input": 787, + "interpolation": "LINEAR", + "output": 788 + }, + { + "input": 789, + "interpolation": "LINEAR", + "output": 790 + }, + { + "input": 791, + "interpolation": "LINEAR", + "output": 792 + }, + { + "input": 793, + "interpolation": "LINEAR", + "output": 794 + }, + { + "input": 795, + "interpolation": "LINEAR", + "output": 796 + }, + { + "input": 797, + "interpolation": "LINEAR", + "output": 798 + }, + { + "input": 799, + "interpolation": "LINEAR", + "output": 800 + }, + { + "input": 801, + "interpolation": "LINEAR", + "output": 802 + }, + { + "input": 803, + "interpolation": "LINEAR", + "output": 804 + }, + { + "input": 805, + "interpolation": "LINEAR", + "output": 806 + }, + { + "input": 807, + "interpolation": "LINEAR", + "output": 808 + }, + { + "input": 809, + "interpolation": "LINEAR", + "output": 810 + }, + { + "input": 811, + "interpolation": "LINEAR", + "output": 812 + }, + { + "input": 813, + "interpolation": "LINEAR", + "output": 814 + }, + { + "input": 815, + "interpolation": "LINEAR", + "output": 816 + }, + { + "input": 817, + "interpolation": "LINEAR", + "output": 818 + }, + { + "input": 819, + "interpolation": "LINEAR", + "output": 820 + }, + { + "input": 821, + "interpolation": "LINEAR", + "output": 822 + }, + { + "input": 823, + "interpolation": "LINEAR", + "output": 824 + }, + { + "input": 825, + "interpolation": "LINEAR", + "output": 826 + }, + { + "input": 827, + "interpolation": "LINEAR", + "output": 828 + }, + { + "input": 829, + "interpolation": "LINEAR", + "output": 830 + }, + { + "input": 831, + "interpolation": "LINEAR", + "output": 832 + }, + { + "input": 833, + "interpolation": "LINEAR", + "output": 834 + }, + { + "input": 835, + "interpolation": "LINEAR", + "output": 836 + }, + { + "input": 837, + "interpolation": "LINEAR", + "output": 838 + }, + { + "input": 839, + "interpolation": "LINEAR", + "output": 840 + }, + { + "input": 841, + "interpolation": "LINEAR", + "output": 842 + }, + { + "input": 843, + "interpolation": "LINEAR", + "output": 844 + }, + { + "input": 845, + "interpolation": "LINEAR", + "output": 846 + }, + { + "input": 847, + "interpolation": "LINEAR", + "output": 848 + }, + { + "input": 849, + "interpolation": "LINEAR", + "output": 850 + }, + { + "input": 851, + "interpolation": "LINEAR", + "output": 852 + }, + { + "input": 853, + "interpolation": "LINEAR", + "output": 854 + }, + { + "input": 855, + "interpolation": "LINEAR", + "output": 856 + }, + { + "input": 857, + "interpolation": "LINEAR", + "output": 858 + }, + { + "input": 859, + "interpolation": "LINEAR", + "output": 860 + }, + { + "input": 861, + "interpolation": "LINEAR", + "output": 862 + }, + { + "input": 863, + "interpolation": "LINEAR", + "output": 864 + }, + { + "input": 865, + "interpolation": "LINEAR", + "output": 866 + }, + { + "input": 867, + "interpolation": "LINEAR", + "output": 868 + }, + { + "input": 869, + "interpolation": "LINEAR", + "output": 870 + }, + { + "input": 871, + "interpolation": "LINEAR", + "output": 872 + }, + { + "input": 873, + "interpolation": "LINEAR", + "output": 874 + }, + { + "input": 875, + "interpolation": "LINEAR", + "output": 876 + }, + { + "input": 877, + "interpolation": "LINEAR", + "output": 878 + }, + { + "input": 879, + "interpolation": "LINEAR", + "output": 880 + }, + { + "input": 881, + "interpolation": "LINEAR", + "output": 882 + }, + { + "input": 883, + "interpolation": "LINEAR", + "output": 884 + }, + { + "input": 885, + "interpolation": "LINEAR", + "output": 886 + }, + { + "input": 887, + "interpolation": "LINEAR", + "output": 888 + }, + { + "input": 889, + "interpolation": "LINEAR", + "output": 890 + }, + { + "input": 891, + "interpolation": "LINEAR", + "output": 892 + }, + { + "input": 893, + "interpolation": "LINEAR", + "output": 894 + }, + { + "input": 895, + "interpolation": "LINEAR", + "output": 896 + }, + { + "input": 897, + "interpolation": "LINEAR", + "output": 898 + }, + { + "input": 899, + "interpolation": "LINEAR", + "output": 900 + }, + { + "input": 901, + "interpolation": "LINEAR", + "output": 902 + }, + { + "input": 903, + "interpolation": "LINEAR", + "output": 904 + }, + { + "input": 905, + "interpolation": "LINEAR", + "output": 906 + }, + { + "input": 907, + "interpolation": "LINEAR", + "output": 908 + }, + { + "input": 909, + "interpolation": "LINEAR", + "output": 910 + }, + { + "input": 911, + "interpolation": "LINEAR", + "output": 912 + }, + { + "input": 913, + "interpolation": "LINEAR", + "output": 914 + }, + { + "input": 915, + "interpolation": "LINEAR", + "output": 916 + }, + { + "input": 917, + "interpolation": "LINEAR", + "output": 918 + }, + { + "input": 919, + "interpolation": "LINEAR", + "output": 920 + }, + { + "input": 921, + "interpolation": "LINEAR", + "output": 922 + }, + { + "input": 923, + "interpolation": "LINEAR", + "output": 924 + }, + { + "input": 925, + "interpolation": "LINEAR", + "output": 926 + }, + { + "input": 927, + "interpolation": "LINEAR", + "output": 928 + }, + { + "input": 929, + "interpolation": "LINEAR", + "output": 930 + }, + { + "input": 931, + "interpolation": "LINEAR", + "output": 932 + }, + { + "input": 933, + "interpolation": "LINEAR", + "output": 934 + }, + { + "input": 935, + "interpolation": "LINEAR", + "output": 936 + }, + { + "input": 937, + "interpolation": "LINEAR", + "output": 938 + }, + { + "input": 939, + "interpolation": "LINEAR", + "output": 940 + }, + { + "input": 941, + "interpolation": "LINEAR", + "output": 942 + }, + { + "input": 943, + "interpolation": "LINEAR", + "output": 944 + }, + { + "input": 945, + "interpolation": "LINEAR", + "output": 946 + }, + { + "input": 947, + "interpolation": "LINEAR", + "output": 948 + }, + { + "input": 949, + "interpolation": "LINEAR", + "output": 950 + }, + { + "input": 951, + "interpolation": "LINEAR", + "output": 952 + }, + { + "input": 953, + "interpolation": "LINEAR", + "output": 954 + }, + { + "input": 955, + "interpolation": "LINEAR", + "output": 956 + }, + { + "input": 957, + "interpolation": "LINEAR", + "output": 958 + }, + { + "input": 959, + "interpolation": "LINEAR", + "output": 960 + }, + { + "input": 961, + "interpolation": "LINEAR", + "output": 962 + }, + { + "input": 963, + "interpolation": "LINEAR", + "output": 964 + }, + { + "input": 965, + "interpolation": "LINEAR", + "output": 966 + }, + { + "input": 967, + "interpolation": "LINEAR", + "output": 968 + }, + { + "input": 969, + "interpolation": "LINEAR", + "output": 970 + }, + { + "input": 971, + "interpolation": "LINEAR", + "output": 972 + }, + { + "input": 973, + "interpolation": "LINEAR", + "output": 974 + }, + { + "input": 975, + "interpolation": "LINEAR", + "output": 976 + }, + { + "input": 977, + "interpolation": "LINEAR", + "output": 978 + }, + { + "input": 979, + "interpolation": "LINEAR", + "output": 980 + }, + { + "input": 981, + "interpolation": "LINEAR", + "output": 982 + }, + { + "input": 983, + "interpolation": "LINEAR", + "output": 984 + }, + { + "input": 985, + "interpolation": "LINEAR", + "output": 986 + }, + { + "input": 987, + "interpolation": "LINEAR", + "output": 988 + }, + { + "input": 989, + "interpolation": "LINEAR", + "output": 990 + }, + { + "input": 991, + "interpolation": "LINEAR", + "output": 992 + }, + { + "input": 993, + "interpolation": "LINEAR", + "output": 994 + }, + { + "input": 995, + "interpolation": "LINEAR", + "output": 996 + }, + { + "input": 997, + "interpolation": "LINEAR", + "output": 998 + }, + { + "input": 999, + "interpolation": "LINEAR", + "output": 1000 + }, + { + "input": 1001, + "interpolation": "LINEAR", + "output": 1002 + }, + { + "input": 1003, + "interpolation": "LINEAR", + "output": 1004 + }, + { + "input": 1005, + "interpolation": "LINEAR", + "output": 1006 + }, + { + "input": 1007, + "interpolation": "LINEAR", + "output": 1008 + }, + { + "input": 1009, + "interpolation": "LINEAR", + "output": 1010 + }, + { + "input": 1011, + "interpolation": "LINEAR", + "output": 1012 + }, + { + "input": 1013, + "interpolation": "LINEAR", + "output": 1014 + }, + { + "input": 1015, + "interpolation": "LINEAR", + "output": 1016 + }, + { + "input": 1017, + "interpolation": "LINEAR", + "output": 1018 + }, + { + "input": 1019, + "interpolation": "LINEAR", + "output": 1020 + }, + { + "input": 1021, + "interpolation": "LINEAR", + "output": 1022 + }, + { + "input": 1023, + "interpolation": "LINEAR", + "output": 1024 + }, + { + "input": 1025, + "interpolation": "LINEAR", + "output": 1026 + }, + { + "input": 1027, + "interpolation": "LINEAR", + "output": 1028 + }, + { + "input": 1029, + "interpolation": "LINEAR", + "output": 1030 + }, + { + "input": 1031, + "interpolation": "LINEAR", + "output": 1032 + }, + { + "input": 1033, + "interpolation": "LINEAR", + "output": 1034 + }, + { + "input": 1035, + "interpolation": "LINEAR", + "output": 1036 + }, + { + "input": 1037, + "interpolation": "LINEAR", + "output": 1038 + }, + { + "input": 1039, + "interpolation": "LINEAR", + "output": 1040 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Flying", + "samplers": [ + { + "input": 1041, + "interpolation": "LINEAR", + "output": 1042 + }, + { + "input": 1043, + "interpolation": "LINEAR", + "output": 1044 + }, + { + "input": 1045, + "interpolation": "LINEAR", + "output": 1046 + }, + { + "input": 1047, + "interpolation": "LINEAR", + "output": 1048 + }, + { + "input": 1049, + "interpolation": "LINEAR", + "output": 1050 + }, + { + "input": 1051, + "interpolation": "LINEAR", + "output": 1052 + }, + { + "input": 1053, + "interpolation": "LINEAR", + "output": 1054 + }, + { + "input": 1055, + "interpolation": "LINEAR", + "output": 1056 + }, + { + "input": 1057, + "interpolation": "LINEAR", + "output": 1058 + }, + { + "input": 1059, + "interpolation": "LINEAR", + "output": 1060 + }, + { + "input": 1061, + "interpolation": "LINEAR", + "output": 1062 + }, + { + "input": 1063, + "interpolation": "LINEAR", + "output": 1064 + }, + { + "input": 1065, + "interpolation": "LINEAR", + "output": 1066 + }, + { + "input": 1067, + "interpolation": "LINEAR", + "output": 1068 + }, + { + "input": 1069, + "interpolation": "LINEAR", + "output": 1070 + }, + { + "input": 1071, + "interpolation": "LINEAR", + "output": 1072 + }, + { + "input": 1073, + "interpolation": "LINEAR", + "output": 1074 + }, + { + "input": 1075, + "interpolation": "LINEAR", + "output": 1076 + }, + { + "input": 1077, + "interpolation": "LINEAR", + "output": 1078 + }, + { + "input": 1079, + "interpolation": "LINEAR", + "output": 1080 + }, + { + "input": 1081, + "interpolation": "LINEAR", + "output": 1082 + }, + { + "input": 1083, + "interpolation": "LINEAR", + "output": 1084 + }, + { + "input": 1085, + "interpolation": "LINEAR", + "output": 1086 + }, + { + "input": 1087, + "interpolation": "LINEAR", + "output": 1088 + }, + { + "input": 1089, + "interpolation": "LINEAR", + "output": 1090 + }, + { + "input": 1091, + "interpolation": "LINEAR", + "output": 1092 + }, + { + "input": 1093, + "interpolation": "LINEAR", + "output": 1094 + }, + { + "input": 1095, + "interpolation": "LINEAR", + "output": 1096 + }, + { + "input": 1097, + "interpolation": "LINEAR", + "output": 1098 + }, + { + "input": 1099, + "interpolation": "LINEAR", + "output": 1100 + }, + { + "input": 1101, + "interpolation": "LINEAR", + "output": 1102 + }, + { + "input": 1103, + "interpolation": "LINEAR", + "output": 1104 + }, + { + "input": 1105, + "interpolation": "LINEAR", + "output": 1106 + }, + { + "input": 1107, + "interpolation": "LINEAR", + "output": 1108 + }, + { + "input": 1109, + "interpolation": "LINEAR", + "output": 1110 + }, + { + "input": 1111, + "interpolation": "LINEAR", + "output": 1112 + }, + { + "input": 1113, + "interpolation": "LINEAR", + "output": 1114 + }, + { + "input": 1115, + "interpolation": "LINEAR", + "output": 1116 + }, + { + "input": 1117, + "interpolation": "LINEAR", + "output": 1118 + }, + { + "input": 1119, + "interpolation": "LINEAR", + "output": 1120 + }, + { + "input": 1121, + "interpolation": "LINEAR", + "output": 1122 + }, + { + "input": 1123, + "interpolation": "LINEAR", + "output": 1124 + }, + { + "input": 1125, + "interpolation": "LINEAR", + "output": 1126 + }, + { + "input": 1127, + "interpolation": "LINEAR", + "output": 1128 + }, + { + "input": 1129, + "interpolation": "LINEAR", + "output": 1130 + }, + { + "input": 1131, + "interpolation": "LINEAR", + "output": 1132 + }, + { + "input": 1133, + "interpolation": "LINEAR", + "output": 1134 + }, + { + "input": 1135, + "interpolation": "LINEAR", + "output": 1136 + }, + { + "input": 1137, + "interpolation": "LINEAR", + "output": 1138 + }, + { + "input": 1139, + "interpolation": "LINEAR", + "output": 1140 + }, + { + "input": 1141, + "interpolation": "LINEAR", + "output": 1142 + }, + { + "input": 1143, + "interpolation": "LINEAR", + "output": 1144 + }, + { + "input": 1145, + "interpolation": "LINEAR", + "output": 1146 + }, + { + "input": 1147, + "interpolation": "LINEAR", + "output": 1148 + }, + { + "input": 1149, + "interpolation": "LINEAR", + "output": 1150 + }, + { + "input": 1151, + "interpolation": "LINEAR", + "output": 1152 + }, + { + "input": 1153, + "interpolation": "LINEAR", + "output": 1154 + }, + { + "input": 1155, + "interpolation": "LINEAR", + "output": 1156 + }, + { + "input": 1157, + "interpolation": "LINEAR", + "output": 1158 + }, + { + "input": 1159, + "interpolation": "LINEAR", + "output": 1160 + }, + { + "input": 1161, + "interpolation": "LINEAR", + "output": 1162 + }, + { + "input": 1163, + "interpolation": "LINEAR", + "output": 1164 + }, + { + "input": 1165, + "interpolation": "LINEAR", + "output": 1166 + }, + { + "input": 1167, + "interpolation": "LINEAR", + "output": 1168 + }, + { + "input": 1169, + "interpolation": "LINEAR", + "output": 1170 + }, + { + "input": 1171, + "interpolation": "LINEAR", + "output": 1172 + }, + { + "input": 1173, + "interpolation": "LINEAR", + "output": 1174 + }, + { + "input": 1175, + "interpolation": "LINEAR", + "output": 1176 + }, + { + "input": 1177, + "interpolation": "LINEAR", + "output": 1178 + }, + { + "input": 1179, + "interpolation": "LINEAR", + "output": 1180 + }, + { + "input": 1181, + "interpolation": "LINEAR", + "output": 1182 + }, + { + "input": 1183, + "interpolation": "LINEAR", + "output": 1184 + }, + { + "input": 1185, + "interpolation": "LINEAR", + "output": 1186 + }, + { + "input": 1187, + "interpolation": "LINEAR", + "output": 1188 + }, + { + "input": 1189, + "interpolation": "LINEAR", + "output": 1190 + }, + { + "input": 1191, + "interpolation": "LINEAR", + "output": 1192 + }, + { + "input": 1193, + "interpolation": "LINEAR", + "output": 1194 + }, + { + "input": 1195, + "interpolation": "LINEAR", + "output": 1196 + }, + { + "input": 1197, + "interpolation": "LINEAR", + "output": 1198 + }, + { + "input": 1199, + "interpolation": "LINEAR", + "output": 1200 + }, + { + "input": 1201, + "interpolation": "LINEAR", + "output": 1202 + }, + { + "input": 1203, + "interpolation": "LINEAR", + "output": 1204 + }, + { + "input": 1205, + "interpolation": "LINEAR", + "output": 1206 + }, + { + "input": 1207, + "interpolation": "LINEAR", + "output": 1208 + }, + { + "input": 1209, + "interpolation": "LINEAR", + "output": 1210 + }, + { + "input": 1211, + "interpolation": "LINEAR", + "output": 1212 + }, + { + "input": 1213, + "interpolation": "LINEAR", + "output": 1214 + }, + { + "input": 1215, + "interpolation": "LINEAR", + "output": 1216 + }, + { + "input": 1217, + "interpolation": "LINEAR", + "output": 1218 + }, + { + "input": 1219, + "interpolation": "LINEAR", + "output": 1220 + }, + { + "input": 1221, + "interpolation": "LINEAR", + "output": 1222 + }, + { + "input": 1223, + "interpolation": "LINEAR", + "output": 1224 + }, + { + "input": 1225, + "interpolation": "LINEAR", + "output": 1226 + }, + { + "input": 1227, + "interpolation": "LINEAR", + "output": 1228 + }, + { + "input": 1229, + "interpolation": "LINEAR", + "output": 1230 + }, + { + "input": 1231, + "interpolation": "LINEAR", + "output": 1232 + }, + { + "input": 1233, + "interpolation": "LINEAR", + "output": 1234 + }, + { + "input": 1235, + "interpolation": "LINEAR", + "output": 1236 + }, + { + "input": 1237, + "interpolation": "LINEAR", + "output": 1238 + }, + { + "input": 1239, + "interpolation": "LINEAR", + "output": 1240 + }, + { + "input": 1241, + "interpolation": "LINEAR", + "output": 1242 + }, + { + "input": 1243, + "interpolation": "LINEAR", + "output": 1244 + }, + { + "input": 1245, + "interpolation": "LINEAR", + "output": 1246 + }, + { + "input": 1247, + "interpolation": "LINEAR", + "output": 1248 + }, + { + "input": 1249, + "interpolation": "LINEAR", + "output": 1250 + }, + { + "input": 1251, + "interpolation": "LINEAR", + "output": 1252 + }, + { + "input": 1253, + "interpolation": "LINEAR", + "output": 1254 + }, + { + "input": 1255, + "interpolation": "LINEAR", + "output": 1256 + }, + { + "input": 1257, + "interpolation": "LINEAR", + "output": 1258 + }, + { + "input": 1259, + "interpolation": "LINEAR", + "output": 1260 + }, + { + "input": 1261, + "interpolation": "LINEAR", + "output": 1262 + }, + { + "input": 1263, + "interpolation": "LINEAR", + "output": 1264 + }, + { + "input": 1265, + "interpolation": "LINEAR", + "output": 1266 + }, + { + "input": 1267, + "interpolation": "LINEAR", + "output": 1268 + }, + { + "input": 1269, + "interpolation": "LINEAR", + "output": 1270 + }, + { + "input": 1271, + "interpolation": "LINEAR", + "output": 1272 + }, + { + "input": 1273, + "interpolation": "LINEAR", + "output": 1274 + }, + { + "input": 1275, + "interpolation": "LINEAR", + "output": 1276 + }, + { + "input": 1277, + "interpolation": "LINEAR", + "output": 1278 + }, + { + "input": 1279, + "interpolation": "LINEAR", + "output": 1280 + }, + { + "input": 1281, + "interpolation": "LINEAR", + "output": 1282 + }, + { + "input": 1283, + "interpolation": "LINEAR", + "output": 1284 + }, + { + "input": 1285, + "interpolation": "LINEAR", + "output": 1286 + }, + { + "input": 1287, + "interpolation": "LINEAR", + "output": 1288 + }, + { + "input": 1289, + "interpolation": "LINEAR", + "output": 1290 + }, + { + "input": 1291, + "interpolation": "LINEAR", + "output": 1292 + }, + { + "input": 1293, + "interpolation": "LINEAR", + "output": 1294 + }, + { + "input": 1295, + "interpolation": "LINEAR", + "output": 1296 + }, + { + "input": 1297, + "interpolation": "LINEAR", + "output": 1298 + }, + { + "input": 1299, + "interpolation": "LINEAR", + "output": 1300 + }, + { + "input": 1301, + "interpolation": "LINEAR", + "output": 1302 + }, + { + "input": 1303, + "interpolation": "LINEAR", + "output": 1304 + }, + { + "input": 1305, + "interpolation": "LINEAR", + "output": 1306 + }, + { + "input": 1307, + "interpolation": "LINEAR", + "output": 1308 + }, + { + "input": 1309, + "interpolation": "LINEAR", + "output": 1310 + }, + { + "input": 1311, + "interpolation": "LINEAR", + "output": 1312 + }, + { + "input": 1313, + "interpolation": "LINEAR", + "output": 1314 + }, + { + "input": 1315, + "interpolation": "LINEAR", + "output": 1316 + }, + { + "input": 1317, + "interpolation": "LINEAR", + "output": 1318 + }, + { + "input": 1319, + "interpolation": "LINEAR", + "output": 1320 + }, + { + "input": 1321, + "interpolation": "LINEAR", + "output": 1322 + }, + { + "input": 1323, + "interpolation": "LINEAR", + "output": 1324 + }, + { + "input": 1325, + "interpolation": "LINEAR", + "output": 1326 + }, + { + "input": 1327, + "interpolation": "LINEAR", + "output": 1328 + }, + { + "input": 1329, + "interpolation": "LINEAR", + "output": 1330 + }, + { + "input": 1331, + "interpolation": "LINEAR", + "output": 1332 + }, + { + "input": 1333, + "interpolation": "LINEAR", + "output": 1334 + }, + { + "input": 1335, + "interpolation": "LINEAR", + "output": 1336 + }, + { + "input": 1337, + "interpolation": "LINEAR", + "output": 1338 + }, + { + "input": 1339, + "interpolation": "LINEAR", + "output": 1340 + }, + { + "input": 1341, + "interpolation": "LINEAR", + "output": 1342 + }, + { + "input": 1343, + "interpolation": "LINEAR", + "output": 1344 + }, + { + "input": 1345, + "interpolation": "LINEAR", + "output": 1346 + }, + { + "input": 1347, + "interpolation": "LINEAR", + "output": 1348 + }, + { + "input": 1349, + "interpolation": "LINEAR", + "output": 1350 + }, + { + "input": 1351, + "interpolation": "LINEAR", + "output": 1352 + }, + { + "input": 1353, + "interpolation": "LINEAR", + "output": 1354 + }, + { + "input": 1355, + "interpolation": "LINEAR", + "output": 1356 + }, + { + "input": 1357, + "interpolation": "LINEAR", + "output": 1358 + }, + { + "input": 1359, + "interpolation": "LINEAR", + "output": 1360 + }, + { + "input": 1361, + "interpolation": "LINEAR", + "output": 1362 + }, + { + "input": 1363, + "interpolation": "LINEAR", + "output": 1364 + }, + { + "input": 1365, + "interpolation": "LINEAR", + "output": 1366 + }, + { + "input": 1367, + "interpolation": "LINEAR", + "output": 1368 + }, + { + "input": 1369, + "interpolation": "LINEAR", + "output": 1370 + }, + { + "input": 1371, + "interpolation": "LINEAR", + "output": 1372 + }, + { + "input": 1373, + "interpolation": "LINEAR", + "output": 1374 + }, + { + "input": 1375, + "interpolation": "LINEAR", + "output": 1376 + }, + { + "input": 1377, + "interpolation": "LINEAR", + "output": 1378 + }, + { + "input": 1379, + "interpolation": "LINEAR", + "output": 1380 + }, + { + "input": 1381, + "interpolation": "LINEAR", + "output": 1382 + }, + { + "input": 1383, + "interpolation": "LINEAR", + "output": 1384 + }, + { + "input": 1385, + "interpolation": "LINEAR", + "output": 1386 + }, + { + "input": 1387, + "interpolation": "LINEAR", + "output": 1388 + }, + { + "input": 1389, + "interpolation": "LINEAR", + "output": 1390 + }, + { + "input": 1391, + "interpolation": "LINEAR", + "output": 1392 + }, + { + "input": 1393, + "interpolation": "LINEAR", + "output": 1394 + }, + { + "input": 1395, + "interpolation": "LINEAR", + "output": 1396 + }, + { + "input": 1397, + "interpolation": "LINEAR", + "output": 1398 + }, + { + "input": 1399, + "interpolation": "LINEAR", + "output": 1400 + }, + { + "input": 1401, + "interpolation": "LINEAR", + "output": 1402 + }, + { + "input": 1403, + "interpolation": "LINEAR", + "output": 1404 + }, + { + "input": 1405, + "interpolation": "LINEAR", + "output": 1406 + }, + { + "input": 1407, + "interpolation": "LINEAR", + "output": 1408 + }, + { + "input": 1409, + "interpolation": "LINEAR", + "output": 1410 + }, + { + "input": 1411, + "interpolation": "LINEAR", + "output": 1412 + }, + { + "input": 1413, + "interpolation": "LINEAR", + "output": 1414 + }, + { + "input": 1415, + "interpolation": "LINEAR", + "output": 1416 + }, + { + "input": 1417, + "interpolation": "LINEAR", + "output": 1418 + }, + { + "input": 1419, + "interpolation": "LINEAR", + "output": 1420 + }, + { + "input": 1421, + "interpolation": "LINEAR", + "output": 1422 + }, + { + "input": 1423, + "interpolation": "LINEAR", + "output": 1424 + }, + { + "input": 1425, + "interpolation": "LINEAR", + "output": 1426 + }, + { + "input": 1427, + "interpolation": "LINEAR", + "output": 1428 + }, + { + "input": 1429, + "interpolation": "LINEAR", + "output": 1430 + }, + { + "input": 1431, + "interpolation": "LINEAR", + "output": 1432 + }, + { + "input": 1433, + "interpolation": "LINEAR", + "output": 1434 + }, + { + "input": 1435, + "interpolation": "LINEAR", + "output": 1436 + }, + { + "input": 1437, + "interpolation": "LINEAR", + "output": 1438 + }, + { + "input": 1439, + "interpolation": "LINEAR", + "output": 1440 + }, + { + "input": 1441, + "interpolation": "LINEAR", + "output": 1442 + }, + { + "input": 1443, + "interpolation": "LINEAR", + "output": 1444 + }, + { + "input": 1445, + "interpolation": "LINEAR", + "output": 1446 + }, + { + "input": 1447, + "interpolation": "LINEAR", + "output": 1448 + }, + { + "input": 1449, + "interpolation": "LINEAR", + "output": 1450 + }, + { + "input": 1451, + "interpolation": "LINEAR", + "output": 1452 + }, + { + "input": 1453, + "interpolation": "LINEAR", + "output": 1454 + }, + { + "input": 1455, + "interpolation": "LINEAR", + "output": 1456 + }, + { + "input": 1457, + "interpolation": "LINEAR", + "output": 1458 + }, + { + "input": 1459, + "interpolation": "LINEAR", + "output": 1460 + }, + { + "input": 1461, + "interpolation": "LINEAR", + "output": 1462 + }, + { + "input": 1463, + "interpolation": "LINEAR", + "output": 1464 + }, + { + "input": 1465, + "interpolation": "LINEAR", + "output": 1466 + }, + { + "input": 1467, + "interpolation": "LINEAR", + "output": 1468 + }, + { + "input": 1469, + "interpolation": "LINEAR", + "output": 1470 + }, + { + "input": 1471, + "interpolation": "LINEAR", + "output": 1472 + }, + { + "input": 1473, + "interpolation": "LINEAR", + "output": 1474 + }, + { + "input": 1475, + "interpolation": "LINEAR", + "output": 1476 + }, + { + "input": 1477, + "interpolation": "LINEAR", + "output": 1478 + }, + { + "input": 1479, + "interpolation": "LINEAR", + "output": 1480 + }, + { + "input": 1481, + "interpolation": "LINEAR", + "output": 1482 + }, + { + "input": 1483, + "interpolation": "LINEAR", + "output": 1484 + }, + { + "input": 1485, + "interpolation": "LINEAR", + "output": 1486 + }, + { + "input": 1487, + "interpolation": "LINEAR", + "output": 1488 + }, + { + "input": 1489, + "interpolation": "LINEAR", + "output": 1490 + }, + { + "input": 1491, + "interpolation": "LINEAR", + "output": 1492 + }, + { + "input": 1493, + "interpolation": "LINEAR", + "output": 1494 + }, + { + "input": 1495, + "interpolation": "LINEAR", + "output": 1496 + }, + { + "input": 1497, + "interpolation": "LINEAR", + "output": 1498 + }, + { + "input": 1499, + "interpolation": "LINEAR", + "output": 1500 + }, + { + "input": 1501, + "interpolation": "LINEAR", + "output": 1502 + }, + { + "input": 1503, + "interpolation": "LINEAR", + "output": 1504 + }, + { + "input": 1505, + "interpolation": "LINEAR", + "output": 1506 + }, + { + "input": 1507, + "interpolation": "LINEAR", + "output": 1508 + }, + { + "input": 1509, + "interpolation": "LINEAR", + "output": 1510 + }, + { + "input": 1511, + "interpolation": "LINEAR", + "output": 1512 + }, + { + "input": 1513, + "interpolation": "LINEAR", + "output": 1514 + }, + { + "input": 1515, + "interpolation": "LINEAR", + "output": 1516 + }, + { + "input": 1517, + "interpolation": "LINEAR", + "output": 1518 + }, + { + "input": 1519, + "interpolation": "LINEAR", + "output": 1520 + }, + { + "input": 1521, + "interpolation": "LINEAR", + "output": 1522 + }, + { + "input": 1523, + "interpolation": "LINEAR", + "output": 1524 + }, + { + "input": 1525, + "interpolation": "LINEAR", + "output": 1526 + }, + { + "input": 1527, + "interpolation": "LINEAR", + "output": 1528 + }, + { + "input": 1529, + "interpolation": "LINEAR", + "output": 1530 + }, + { + "input": 1531, + "interpolation": "LINEAR", + "output": 1532 + }, + { + "input": 1533, + "interpolation": "LINEAR", + "output": 1534 + }, + { + "input": 1535, + "interpolation": "LINEAR", + "output": 1536 + }, + { + "input": 1537, + "interpolation": "LINEAR", + "output": 1538 + }, + { + "input": 1539, + "interpolation": "LINEAR", + "output": 1540 + }, + { + "input": 1541, + "interpolation": "LINEAR", + "output": 1542 + }, + { + "input": 1543, + "interpolation": "LINEAR", + "output": 1544 + }, + { + "input": 1545, + "interpolation": "LINEAR", + "output": 1546 + }, + { + "input": 1547, + "interpolation": "LINEAR", + "output": 1548 + }, + { + "input": 1549, + "interpolation": "LINEAR", + "output": 1550 + }, + { + "input": 1551, + "interpolation": "LINEAR", + "output": 1552 + }, + { + "input": 1553, + "interpolation": "LINEAR", + "output": 1554 + }, + { + "input": 1555, + "interpolation": "LINEAR", + "output": 1556 + }, + { + "input": 1557, + "interpolation": "LINEAR", + "output": 1558 + }, + { + "input": 1559, + "interpolation": "LINEAR", + "output": 1560 + }, + { + "input": 1561, + "interpolation": "LINEAR", + "output": 1562 + }, + { + "input": 1563, + "interpolation": "LINEAR", + "output": 1564 + }, + { + "input": 1565, + "interpolation": "LINEAR", + "output": 1566 + }, + { + "input": 1567, + "interpolation": "LINEAR", + "output": 1568 + }, + { + "input": 1569, + "interpolation": "LINEAR", + "output": 1570 + }, + { + "input": 1571, + "interpolation": "LINEAR", + "output": 1572 + }, + { + "input": 1573, + "interpolation": "LINEAR", + "output": 1574 + }, + { + "input": 1575, + "interpolation": "LINEAR", + "output": 1576 + }, + { + "input": 1577, + "interpolation": "LINEAR", + "output": 1578 + }, + { + "input": 1579, + "interpolation": "LINEAR", + "output": 1580 + }, + { + "input": 1581, + "interpolation": "LINEAR", + "output": 1582 + }, + { + "input": 1583, + "interpolation": "LINEAR", + "output": 1584 + }, + { + "input": 1585, + "interpolation": "LINEAR", + "output": 1586 + }, + { + "input": 1587, + "interpolation": "LINEAR", + "output": 1588 + }, + { + "input": 1589, + "interpolation": "LINEAR", + "output": 1590 + }, + { + "input": 1591, + "interpolation": "LINEAR", + "output": 1592 + }, + { + "input": 1593, + "interpolation": "LINEAR", + "output": 1594 + }, + { + "input": 1595, + "interpolation": "LINEAR", + "output": 1596 + }, + { + "input": 1597, + "interpolation": "LINEAR", + "output": 1598 + }, + { + "input": 1599, + "interpolation": "LINEAR", + "output": 1600 + }, + { + "input": 1601, + "interpolation": "LINEAR", + "output": 1602 + }, + { + "input": 1603, + "interpolation": "LINEAR", + "output": 1604 + }, + { + "input": 1605, + "interpolation": "LINEAR", + "output": 1606 + }, + { + "input": 1607, + "interpolation": "LINEAR", + "output": 1608 + }, + { + "input": 1609, + "interpolation": "LINEAR", + "output": 1610 + }, + { + "input": 1611, + "interpolation": "LINEAR", + "output": 1612 + }, + { + "input": 1613, + "interpolation": "LINEAR", + "output": 1614 + }, + { + "input": 1615, + "interpolation": "LINEAR", + "output": 1616 + }, + { + "input": 1617, + "interpolation": "LINEAR", + "output": 1618 + }, + { + "input": 1619, + "interpolation": "LINEAR", + "output": 1620 + }, + { + "input": 1621, + "interpolation": "LINEAR", + "output": 1622 + }, + { + "input": 1623, + "interpolation": "LINEAR", + "output": 1624 + }, + { + "input": 1625, + "interpolation": "LINEAR", + "output": 1626 + }, + { + "input": 1627, + "interpolation": "LINEAR", + "output": 1628 + }, + { + "input": 1629, + "interpolation": "LINEAR", + "output": 1630 + }, + { + "input": 1631, + "interpolation": "LINEAR", + "output": 1632 + }, + { + "input": 1633, + "interpolation": "LINEAR", + "output": 1634 + }, + { + "input": 1635, + "interpolation": "LINEAR", + "output": 1636 + }, + { + "input": 1637, + "interpolation": "LINEAR", + "output": 1638 + }, + { + "input": 1639, + "interpolation": "LINEAR", + "output": 1640 + }, + { + "input": 1641, + "interpolation": "LINEAR", + "output": 1642 + }, + { + "input": 1643, + "interpolation": "LINEAR", + "output": 1644 + }, + { + "input": 1645, + "interpolation": "LINEAR", + "output": 1646 + }, + { + "input": 1647, + "interpolation": "LINEAR", + "output": 1648 + }, + { + "input": 1649, + "interpolation": "LINEAR", + "output": 1650 + }, + { + "input": 1651, + "interpolation": "LINEAR", + "output": 1652 + }, + { + "input": 1653, + "interpolation": "LINEAR", + "output": 1654 + }, + { + "input": 1655, + "interpolation": "LINEAR", + "output": 1656 + }, + { + "input": 1657, + "interpolation": "LINEAR", + "output": 1658 + }, + { + "input": 1659, + "interpolation": "LINEAR", + "output": 1660 + }, + { + "input": 1661, + "interpolation": "LINEAR", + "output": 1662 + }, + { + "input": 1663, + "interpolation": "LINEAR", + "output": 1664 + }, + { + "input": 1665, + "interpolation": "LINEAR", + "output": 1666 + }, + { + "input": 1667, + "interpolation": "LINEAR", + "output": 1668 + }, + { + "input": 1669, + "interpolation": "LINEAR", + "output": 1670 + }, + { + "input": 1671, + "interpolation": "LINEAR", + "output": 1672 + }, + { + "input": 1673, + "interpolation": "LINEAR", + "output": 1674 + }, + { + "input": 1675, + "interpolation": "LINEAR", + "output": 1676 + }, + { + "input": 1677, + "interpolation": "LINEAR", + "output": 1678 + }, + { + "input": 1679, + "interpolation": "LINEAR", + "output": 1680 + }, + { + "input": 1681, + "interpolation": "LINEAR", + "output": 1682 + }, + { + "input": 1683, + "interpolation": "LINEAR", + "output": 1684 + }, + { + "input": 1685, + "interpolation": "LINEAR", + "output": 1686 + }, + { + "input": 1687, + "interpolation": "LINEAR", + "output": 1688 + }, + { + "input": 1689, + "interpolation": "LINEAR", + "output": 1690 + }, + { + "input": 1691, + "interpolation": "LINEAR", + "output": 1692 + }, + { + "input": 1693, + "interpolation": "LINEAR", + "output": 1694 + }, + { + "input": 1695, + "interpolation": "LINEAR", + "output": 1696 + }, + { + "input": 1697, + "interpolation": "LINEAR", + "output": 1698 + }, + { + "input": 1699, + "interpolation": "LINEAR", + "output": 1700 + }, + { + "input": 1701, + "interpolation": "LINEAR", + "output": 1702 + }, + { + "input": 1703, + "interpolation": "LINEAR", + "output": 1704 + }, + { + "input": 1705, + "interpolation": "LINEAR", + "output": 1706 + }, + { + "input": 1707, + "interpolation": "LINEAR", + "output": 1708 + }, + { + "input": 1709, + "interpolation": "LINEAR", + "output": 1710 + }, + { + "input": 1711, + "interpolation": "LINEAR", + "output": 1712 + }, + { + "input": 1713, + "interpolation": "LINEAR", + "output": 1714 + }, + { + "input": 1715, + "interpolation": "LINEAR", + "output": 1716 + }, + { + "input": 1717, + "interpolation": "LINEAR", + "output": 1718 + }, + { + "input": 1719, + "interpolation": "LINEAR", + "output": 1720 + }, + { + "input": 1721, + "interpolation": "LINEAR", + "output": 1722 + }, + { + "input": 1723, + "interpolation": "LINEAR", + "output": 1724 + }, + { + "input": 1725, + "interpolation": "LINEAR", + "output": 1726 + }, + { + "input": 1727, + "interpolation": "LINEAR", + "output": 1728 + }, + { + "input": 1729, + "interpolation": "LINEAR", + "output": 1730 + }, + { + "input": 1731, + "interpolation": "LINEAR", + "output": 1732 + }, + { + "input": 1733, + "interpolation": "LINEAR", + "output": 1734 + }, + { + "input": 1735, + "interpolation": "LINEAR", + "output": 1736 + }, + { + "input": 1737, + "interpolation": "LINEAR", + "output": 1738 + }, + { + "input": 1739, + "interpolation": "LINEAR", + "output": 1740 + }, + { + "input": 1741, + "interpolation": "LINEAR", + "output": 1742 + }, + { + "input": 1743, + "interpolation": "LINEAR", + "output": 1744 + }, + { + "input": 1745, + "interpolation": "LINEAR", + "output": 1746 + }, + { + "input": 1747, + "interpolation": "LINEAR", + "output": 1748 + }, + { + "input": 1749, + "interpolation": "LINEAR", + "output": 1750 + }, + { + "input": 1751, + "interpolation": "LINEAR", + "output": 1752 + }, + { + "input": 1753, + "interpolation": "LINEAR", + "output": 1754 + }, + { + "input": 1755, + "interpolation": "LINEAR", + "output": 1756 + }, + { + "input": 1757, + "interpolation": "LINEAR", + "output": 1758 + }, + { + "input": 1759, + "interpolation": "LINEAR", + "output": 1760 + }, + { + "input": 1761, + "interpolation": "LINEAR", + "output": 1762 + }, + { + "input": 1763, + "interpolation": "LINEAR", + "output": 1764 + }, + { + "input": 1765, + "interpolation": "LINEAR", + "output": 1766 + }, + { + "input": 1767, + "interpolation": "LINEAR", + "output": 1768 + }, + { + "input": 1769, + "interpolation": "LINEAR", + "output": 1770 + }, + { + "input": 1771, + "interpolation": "LINEAR", + "output": 1772 + }, + { + "input": 1773, + "interpolation": "LINEAR", + "output": 1774 + }, + { + "input": 1775, + "interpolation": "LINEAR", + "output": 1776 + }, + { + "input": 1777, + "interpolation": "LINEAR", + "output": 1778 + }, + { + "input": 1779, + "interpolation": "LINEAR", + "output": 1780 + }, + { + "input": 1781, + "interpolation": "LINEAR", + "output": 1782 + }, + { + "input": 1783, + "interpolation": "LINEAR", + "output": 1784 + }, + { + "input": 1785, + "interpolation": "LINEAR", + "output": 1786 + }, + { + "input": 1787, + "interpolation": "LINEAR", + "output": 1788 + }, + { + "input": 1789, + "interpolation": "LINEAR", + "output": 1790 + }, + { + "input": 1791, + "interpolation": "LINEAR", + "output": 1792 + }, + { + "input": 1793, + "interpolation": "LINEAR", + "output": 1794 + }, + { + "input": 1795, + "interpolation": "LINEAR", + "output": 1796 + }, + { + "input": 1797, + "interpolation": "LINEAR", + "output": 1798 + }, + { + "input": 1799, + "interpolation": "LINEAR", + "output": 1800 + }, + { + "input": 1801, + "interpolation": "LINEAR", + "output": 1802 + }, + { + "input": 1803, + "interpolation": "LINEAR", + "output": 1804 + }, + { + "input": 1805, + "interpolation": "LINEAR", + "output": 1806 + }, + { + "input": 1807, + "interpolation": "LINEAR", + "output": 1808 + }, + { + "input": 1809, + "interpolation": "LINEAR", + "output": 1810 + }, + { + "input": 1811, + "interpolation": "LINEAR", + "output": 1812 + }, + { + "input": 1813, + "interpolation": "LINEAR", + "output": 1814 + }, + { + "input": 1815, + "interpolation": "LINEAR", + "output": 1816 + }, + { + "input": 1817, + "interpolation": "LINEAR", + "output": 1818 + }, + { + "input": 1819, + "interpolation": "LINEAR", + "output": 1820 + }, + { + "input": 1821, + "interpolation": "LINEAR", + "output": 1822 + }, + { + "input": 1823, + "interpolation": "LINEAR", + "output": 1824 + }, + { + "input": 1825, + "interpolation": "LINEAR", + "output": 1826 + }, + { + "input": 1827, + "interpolation": "LINEAR", + "output": 1828 + }, + { + "input": 1829, + "interpolation": "LINEAR", + "output": 1830 + }, + { + "input": 1831, + "interpolation": "LINEAR", + "output": 1832 + }, + { + "input": 1833, + "interpolation": "LINEAR", + "output": 1834 + }, + { + "input": 1835, + "interpolation": "LINEAR", + "output": 1836 + }, + { + "input": 1837, + "interpolation": "LINEAR", + "output": 1838 + }, + { + "input": 1839, + "interpolation": "LINEAR", + "output": 1840 + }, + { + "input": 1841, + "interpolation": "LINEAR", + "output": 1842 + }, + { + "input": 1843, + "interpolation": "LINEAR", + "output": 1844 + }, + { + "input": 1845, + "interpolation": "LINEAR", + "output": 1846 + }, + { + "input": 1847, + "interpolation": "LINEAR", + "output": 1848 + }, + { + "input": 1849, + "interpolation": "LINEAR", + "output": 1850 + }, + { + "input": 1851, + "interpolation": "LINEAR", + "output": 1852 + }, + { + "input": 1853, + "interpolation": "LINEAR", + "output": 1854 + }, + { + "input": 1855, + "interpolation": "LINEAR", + "output": 1856 + }, + { + "input": 1857, + "interpolation": "LINEAR", + "output": 1858 + }, + { + "input": 1859, + "interpolation": "LINEAR", + "output": 1860 + }, + { + "input": 1861, + "interpolation": "LINEAR", + "output": 1862 + }, + { + "input": 1863, + "interpolation": "LINEAR", + "output": 1864 + }, + { + "input": 1865, + "interpolation": "LINEAR", + "output": 1866 + }, + { + "input": 1867, + "interpolation": "LINEAR", + "output": 1868 + }, + { + "input": 1869, + "interpolation": "LINEAR", + "output": 1870 + }, + { + "input": 1871, + "interpolation": "LINEAR", + "output": 1872 + }, + { + "input": 1873, + "interpolation": "LINEAR", + "output": 1874 + }, + { + "input": 1875, + "interpolation": "LINEAR", + "output": 1876 + }, + { + "input": 1877, + "interpolation": "LINEAR", + "output": 1878 + }, + { + "input": 1879, + "interpolation": "LINEAR", + "output": 1880 + }, + { + "input": 1881, + "interpolation": "LINEAR", + "output": 1882 + }, + { + "input": 1883, + "interpolation": "LINEAR", + "output": 1884 + }, + { + "input": 1885, + "interpolation": "LINEAR", + "output": 1886 + }, + { + "input": 1887, + "interpolation": "LINEAR", + "output": 1888 + }, + { + "input": 1889, + "interpolation": "LINEAR", + "output": 1890 + }, + { + "input": 1891, + "interpolation": "LINEAR", + "output": 1892 + }, + { + "input": 1893, + "interpolation": "LINEAR", + "output": 1894 + }, + { + "input": 1895, + "interpolation": "LINEAR", + "output": 1896 + }, + { + "input": 1897, + "interpolation": "LINEAR", + "output": 1898 + }, + { + "input": 1899, + "interpolation": "LINEAR", + "output": 1900 + }, + { + "input": 1901, + "interpolation": "LINEAR", + "output": 1902 + }, + { + "input": 1903, + "interpolation": "LINEAR", + "output": 1904 + }, + { + "input": 1905, + "interpolation": "LINEAR", + "output": 1906 + }, + { + "input": 1907, + "interpolation": "LINEAR", + "output": 1908 + }, + { + "input": 1909, + "interpolation": "LINEAR", + "output": 1910 + }, + { + "input": 1911, + "interpolation": "LINEAR", + "output": 1912 + }, + { + "input": 1913, + "interpolation": "LINEAR", + "output": 1914 + }, + { + "input": 1915, + "interpolation": "LINEAR", + "output": 1916 + }, + { + "input": 1917, + "interpolation": "LINEAR", + "output": 1918 + }, + { + "input": 1919, + "interpolation": "LINEAR", + "output": 1920 + }, + { + "input": 1921, + "interpolation": "LINEAR", + "output": 1922 + }, + { + "input": 1923, + "interpolation": "LINEAR", + "output": 1924 + }, + { + "input": 1925, + "interpolation": "LINEAR", + "output": 1926 + }, + { + "input": 1927, + "interpolation": "LINEAR", + "output": 1928 + }, + { + "input": 1929, + "interpolation": "LINEAR", + "output": 1930 + }, + { + "input": 1931, + "interpolation": "LINEAR", + "output": 1932 + }, + { + "input": 1933, + "interpolation": "LINEAR", + "output": 1934 + }, + { + "input": 1935, + "interpolation": "LINEAR", + "output": 1936 + }, + { + "input": 1937, + "interpolation": "LINEAR", + "output": 1938 + }, + { + "input": 1939, + "interpolation": "LINEAR", + "output": 1940 + }, + { + "input": 1941, + "interpolation": "LINEAR", + "output": 1942 + }, + { + "input": 1943, + "interpolation": "LINEAR", + "output": 1944 + }, + { + "input": 1945, + "interpolation": "LINEAR", + "output": 1946 + }, + { + "input": 1947, + "interpolation": "LINEAR", + "output": 1948 + }, + { + "input": 1949, + "interpolation": "LINEAR", + "output": 1950 + }, + { + "input": 1951, + "interpolation": "LINEAR", + "output": 1952 + }, + { + "input": 1953, + "interpolation": "LINEAR", + "output": 1954 + }, + { + "input": 1955, + "interpolation": "LINEAR", + "output": 1956 + }, + { + "input": 1957, + "interpolation": "LINEAR", + "output": 1958 + }, + { + "input": 1959, + "interpolation": "LINEAR", + "output": 1960 + }, + { + "input": 1961, + "interpolation": "LINEAR", + "output": 1962 + }, + { + "input": 1963, + "interpolation": "LINEAR", + "output": 1964 + }, + { + "input": 1965, + "interpolation": "LINEAR", + "output": 1966 + }, + { + "input": 1967, + "interpolation": "LINEAR", + "output": 1968 + }, + { + "input": 1969, + "interpolation": "LINEAR", + "output": 1970 + }, + { + "input": 1971, + "interpolation": "LINEAR", + "output": 1972 + }, + { + "input": 1973, + "interpolation": "LINEAR", + "output": 1974 + }, + { + "input": 1975, + "interpolation": "LINEAR", + "output": 1976 + }, + { + "input": 1977, + "interpolation": "LINEAR", + "output": 1978 + }, + { + "input": 1979, + "interpolation": "LINEAR", + "output": 1980 + }, + { + "input": 1981, + "interpolation": "LINEAR", + "output": 1982 + }, + { + "input": 1983, + "interpolation": "LINEAR", + "output": 1984 + }, + { + "input": 1985, + "interpolation": "LINEAR", + "output": 1986 + }, + { + "input": 1987, + "interpolation": "LINEAR", + "output": 1988 + }, + { + "input": 1989, + "interpolation": "LINEAR", + "output": 1990 + }, + { + "input": 1991, + "interpolation": "LINEAR", + "output": 1992 + }, + { + "input": 1993, + "interpolation": "LINEAR", + "output": 1994 + }, + { + "input": 1995, + "interpolation": "LINEAR", + "output": 1996 + }, + { + "input": 1997, + "interpolation": "LINEAR", + "output": 1998 + }, + { + "input": 1999, + "interpolation": "LINEAR", + "output": 2000 + }, + { + "input": 2001, + "interpolation": "LINEAR", + "output": 2002 + }, + { + "input": 2003, + "interpolation": "LINEAR", + "output": 2004 + }, + { + "input": 2005, + "interpolation": "LINEAR", + "output": 2006 + }, + { + "input": 2007, + "interpolation": "LINEAR", + "output": 2008 + }, + { + "input": 2009, + "interpolation": "LINEAR", + "output": 2010 + }, + { + "input": 2011, + "interpolation": "LINEAR", + "output": 2012 + }, + { + "input": 2013, + "interpolation": "LINEAR", + "output": 2014 + }, + { + "input": 2015, + "interpolation": "LINEAR", + "output": 2016 + }, + { + "input": 2017, + "interpolation": "LINEAR", + "output": 2018 + }, + { + "input": 2019, + "interpolation": "LINEAR", + "output": 2020 + }, + { + "input": 2021, + "interpolation": "LINEAR", + "output": 2022 + }, + { + "input": 2023, + "interpolation": "LINEAR", + "output": 2024 + }, + { + "input": 2025, + "interpolation": "LINEAR", + "output": 2026 + }, + { + "input": 2027, + "interpolation": "LINEAR", + "output": 2028 + }, + { + "input": 2029, + "interpolation": "LINEAR", + "output": 2030 + }, + { + "input": 2031, + "interpolation": "LINEAR", + "output": 2032 + }, + { + "input": 2033, + "interpolation": "LINEAR", + "output": 2034 + }, + { + "input": 2035, + "interpolation": "LINEAR", + "output": 2036 + }, + { + "input": 2037, + "interpolation": "LINEAR", + "output": 2038 + }, + { + "input": 2039, + "interpolation": "LINEAR", + "output": 2040 + }, + { + "input": 2041, + "interpolation": "LINEAR", + "output": 2042 + }, + { + "input": 2043, + "interpolation": "LINEAR", + "output": 2044 + }, + { + "input": 2045, + "interpolation": "LINEAR", + "output": 2046 + }, + { + "input": 2047, + "interpolation": "LINEAR", + "output": 2048 + }, + { + "input": 2049, + "interpolation": "LINEAR", + "output": 2050 + }, + { + "input": 2051, + "interpolation": "LINEAR", + "output": 2052 + }, + { + "input": 2053, + "interpolation": "LINEAR", + "output": 2054 + }, + { + "input": 2055, + "interpolation": "LINEAR", + "output": 2056 + }, + { + "input": 2057, + "interpolation": "LINEAR", + "output": 2058 + }, + { + "input": 2059, + "interpolation": "LINEAR", + "output": 2060 + }, + { + "input": 2061, + "interpolation": "LINEAR", + "output": 2062 + }, + { + "input": 2063, + "interpolation": "LINEAR", + "output": 2064 + }, + { + "input": 2065, + "interpolation": "LINEAR", + "output": 2066 + }, + { + "input": 2067, + "interpolation": "LINEAR", + "output": 2068 + }, + { + "input": 2069, + "interpolation": "LINEAR", + "output": 2070 + }, + { + "input": 2071, + "interpolation": "LINEAR", + "output": 2072 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + }, + { + "sampler": 513, + "target": { + "node": 266, + "path": "translation" + } + }, + { + "sampler": 514, + "target": { + "node": 266, + "path": "scale" + } + }, + { + "sampler": 515, + "target": { + "node": 266, + "path": "rotation" + } + } + ], + "name": "Hyper beam", + "samplers": [ + { + "input": 2073, + "interpolation": "LINEAR", + "output": 2074 + }, + { + "input": 2075, + "interpolation": "LINEAR", + "output": 2076 + }, + { + "input": 2077, + "interpolation": "LINEAR", + "output": 2078 + }, + { + "input": 2079, + "interpolation": "LINEAR", + "output": 2080 + }, + { + "input": 2081, + "interpolation": "LINEAR", + "output": 2082 + }, + { + "input": 2083, + "interpolation": "LINEAR", + "output": 2084 + }, + { + "input": 2085, + "interpolation": "LINEAR", + "output": 2086 + }, + { + "input": 2087, + "interpolation": "LINEAR", + "output": 2088 + }, + { + "input": 2089, + "interpolation": "LINEAR", + "output": 2090 + }, + { + "input": 2091, + "interpolation": "LINEAR", + "output": 2092 + }, + { + "input": 2093, + "interpolation": "LINEAR", + "output": 2094 + }, + { + "input": 2095, + "interpolation": "LINEAR", + "output": 2096 + }, + { + "input": 2097, + "interpolation": "LINEAR", + "output": 2098 + }, + { + "input": 2099, + "interpolation": "LINEAR", + "output": 2100 + }, + { + "input": 2101, + "interpolation": "LINEAR", + "output": 2102 + }, + { + "input": 2103, + "interpolation": "LINEAR", + "output": 2104 + }, + { + "input": 2105, + "interpolation": "LINEAR", + "output": 2106 + }, + { + "input": 2107, + "interpolation": "LINEAR", + "output": 2108 + }, + { + "input": 2109, + "interpolation": "LINEAR", + "output": 2110 + }, + { + "input": 2111, + "interpolation": "LINEAR", + "output": 2112 + }, + { + "input": 2113, + "interpolation": "LINEAR", + "output": 2114 + }, + { + "input": 2115, + "interpolation": "LINEAR", + "output": 2116 + }, + { + "input": 2117, + "interpolation": "LINEAR", + "output": 2118 + }, + { + "input": 2119, + "interpolation": "LINEAR", + "output": 2120 + }, + { + "input": 2121, + "interpolation": "LINEAR", + "output": 2122 + }, + { + "input": 2123, + "interpolation": "LINEAR", + "output": 2124 + }, + { + "input": 2125, + "interpolation": "LINEAR", + "output": 2126 + }, + { + "input": 2127, + "interpolation": "LINEAR", + "output": 2128 + }, + { + "input": 2129, + "interpolation": "LINEAR", + "output": 2130 + }, + { + "input": 2131, + "interpolation": "LINEAR", + "output": 2132 + }, + { + "input": 2133, + "interpolation": "LINEAR", + "output": 2134 + }, + { + "input": 2135, + "interpolation": "LINEAR", + "output": 2136 + }, + { + "input": 2137, + "interpolation": "LINEAR", + "output": 2138 + }, + { + "input": 2139, + "interpolation": "LINEAR", + "output": 2140 + }, + { + "input": 2141, + "interpolation": "LINEAR", + "output": 2142 + }, + { + "input": 2143, + "interpolation": "LINEAR", + "output": 2144 + }, + { + "input": 2145, + "interpolation": "LINEAR", + "output": 2146 + }, + { + "input": 2147, + "interpolation": "LINEAR", + "output": 2148 + }, + { + "input": 2149, + "interpolation": "LINEAR", + "output": 2150 + }, + { + "input": 2151, + "interpolation": "LINEAR", + "output": 2152 + }, + { + "input": 2153, + "interpolation": "LINEAR", + "output": 2154 + }, + { + "input": 2155, + "interpolation": "LINEAR", + "output": 2156 + }, + { + "input": 2157, + "interpolation": "LINEAR", + "output": 2158 + }, + { + "input": 2159, + "interpolation": "LINEAR", + "output": 2160 + }, + { + "input": 2161, + "interpolation": "LINEAR", + "output": 2162 + }, + { + "input": 2163, + "interpolation": "LINEAR", + "output": 2164 + }, + { + "input": 2165, + "interpolation": "LINEAR", + "output": 2166 + }, + { + "input": 2167, + "interpolation": "LINEAR", + "output": 2168 + }, + { + "input": 2169, + "interpolation": "LINEAR", + "output": 2170 + }, + { + "input": 2171, + "interpolation": "LINEAR", + "output": 2172 + }, + { + "input": 2173, + "interpolation": "LINEAR", + "output": 2174 + }, + { + "input": 2175, + "interpolation": "LINEAR", + "output": 2176 + }, + { + "input": 2177, + "interpolation": "LINEAR", + "output": 2178 + }, + { + "input": 2179, + "interpolation": "LINEAR", + "output": 2180 + }, + { + "input": 2181, + "interpolation": "LINEAR", + "output": 2182 + }, + { + "input": 2183, + "interpolation": "LINEAR", + "output": 2184 + }, + { + "input": 2185, + "interpolation": "LINEAR", + "output": 2186 + }, + { + "input": 2187, + "interpolation": "LINEAR", + "output": 2188 + }, + { + "input": 2189, + "interpolation": "LINEAR", + "output": 2190 + }, + { + "input": 2191, + "interpolation": "LINEAR", + "output": 2192 + }, + { + "input": 2193, + "interpolation": "LINEAR", + "output": 2194 + }, + { + "input": 2195, + "interpolation": "LINEAR", + "output": 2196 + }, + { + "input": 2197, + "interpolation": "LINEAR", + "output": 2198 + }, + { + "input": 2199, + "interpolation": "LINEAR", + "output": 2200 + }, + { + "input": 2201, + "interpolation": "LINEAR", + "output": 2202 + }, + { + "input": 2203, + "interpolation": "LINEAR", + "output": 2204 + }, + { + "input": 2205, + "interpolation": "LINEAR", + "output": 2206 + }, + { + "input": 2207, + "interpolation": "LINEAR", + "output": 2208 + }, + { + "input": 2209, + "interpolation": "LINEAR", + "output": 2210 + }, + { + "input": 2211, + "interpolation": "LINEAR", + "output": 2212 + }, + { + "input": 2213, + "interpolation": "LINEAR", + "output": 2214 + }, + { + "input": 2215, + "interpolation": "LINEAR", + "output": 2216 + }, + { + "input": 2217, + "interpolation": "LINEAR", + "output": 2218 + }, + { + "input": 2219, + "interpolation": "LINEAR", + "output": 2220 + }, + { + "input": 2221, + "interpolation": "LINEAR", + "output": 2222 + }, + { + "input": 2223, + "interpolation": "LINEAR", + "output": 2224 + }, + { + "input": 2225, + "interpolation": "LINEAR", + "output": 2226 + }, + { + "input": 2227, + "interpolation": "LINEAR", + "output": 2228 + }, + { + "input": 2229, + "interpolation": "LINEAR", + "output": 2230 + }, + { + "input": 2231, + "interpolation": "LINEAR", + "output": 2232 + }, + { + "input": 2233, + "interpolation": "LINEAR", + "output": 2234 + }, + { + "input": 2235, + "interpolation": "LINEAR", + "output": 2236 + }, + { + "input": 2237, + "interpolation": "LINEAR", + "output": 2238 + }, + { + "input": 2239, + "interpolation": "LINEAR", + "output": 2240 + }, + { + "input": 2241, + "interpolation": "LINEAR", + "output": 2242 + }, + { + "input": 2243, + "interpolation": "LINEAR", + "output": 2244 + }, + { + "input": 2245, + "interpolation": "LINEAR", + "output": 2246 + }, + { + "input": 2247, + "interpolation": "LINEAR", + "output": 2248 + }, + { + "input": 2249, + "interpolation": "LINEAR", + "output": 2250 + }, + { + "input": 2251, + "interpolation": "LINEAR", + "output": 2252 + }, + { + "input": 2253, + "interpolation": "LINEAR", + "output": 2254 + }, + { + "input": 2255, + "interpolation": "LINEAR", + "output": 2256 + }, + { + "input": 2257, + "interpolation": "LINEAR", + "output": 2258 + }, + { + "input": 2259, + "interpolation": "LINEAR", + "output": 2260 + }, + { + "input": 2261, + "interpolation": "LINEAR", + "output": 2262 + }, + { + "input": 2263, + "interpolation": "LINEAR", + "output": 2264 + }, + { + "input": 2265, + "interpolation": "LINEAR", + "output": 2266 + }, + { + "input": 2267, + "interpolation": "LINEAR", + "output": 2268 + }, + { + "input": 2269, + "interpolation": "LINEAR", + "output": 2270 + }, + { + "input": 2271, + "interpolation": "LINEAR", + "output": 2272 + }, + { + "input": 2273, + "interpolation": "LINEAR", + "output": 2274 + }, + { + "input": 2275, + "interpolation": "LINEAR", + "output": 2276 + }, + { + "input": 2277, + "interpolation": "LINEAR", + "output": 2278 + }, + { + "input": 2279, + "interpolation": "LINEAR", + "output": 2280 + }, + { + "input": 2281, + "interpolation": "LINEAR", + "output": 2282 + }, + { + "input": 2283, + "interpolation": "LINEAR", + "output": 2284 + }, + { + "input": 2285, + "interpolation": "LINEAR", + "output": 2286 + }, + { + "input": 2287, + "interpolation": "LINEAR", + "output": 2288 + }, + { + "input": 2289, + "interpolation": "LINEAR", + "output": 2290 + }, + { + "input": 2291, + "interpolation": "LINEAR", + "output": 2292 + }, + { + "input": 2293, + "interpolation": "LINEAR", + "output": 2294 + }, + { + "input": 2295, + "interpolation": "LINEAR", + "output": 2296 + }, + { + "input": 2297, + "interpolation": "LINEAR", + "output": 2298 + }, + { + "input": 2299, + "interpolation": "LINEAR", + "output": 2300 + }, + { + "input": 2301, + "interpolation": "LINEAR", + "output": 2302 + }, + { + "input": 2303, + "interpolation": "LINEAR", + "output": 2304 + }, + { + "input": 2305, + "interpolation": "LINEAR", + "output": 2306 + }, + { + "input": 2307, + "interpolation": "LINEAR", + "output": 2308 + }, + { + "input": 2309, + "interpolation": "LINEAR", + "output": 2310 + }, + { + "input": 2311, + "interpolation": "LINEAR", + "output": 2312 + }, + { + "input": 2313, + "interpolation": "LINEAR", + "output": 2314 + }, + { + "input": 2315, + "interpolation": "LINEAR", + "output": 2316 + }, + { + "input": 2317, + "interpolation": "LINEAR", + "output": 2318 + }, + { + "input": 2319, + "interpolation": "LINEAR", + "output": 2320 + }, + { + "input": 2321, + "interpolation": "LINEAR", + "output": 2322 + }, + { + "input": 2323, + "interpolation": "LINEAR", + "output": 2324 + }, + { + "input": 2325, + "interpolation": "LINEAR", + "output": 2326 + }, + { + "input": 2327, + "interpolation": "LINEAR", + "output": 2328 + }, + { + "input": 2329, + "interpolation": "LINEAR", + "output": 2330 + }, + { + "input": 2331, + "interpolation": "LINEAR", + "output": 2332 + }, + { + "input": 2333, + "interpolation": "LINEAR", + "output": 2334 + }, + { + "input": 2335, + "interpolation": "LINEAR", + "output": 2336 + }, + { + "input": 2337, + "interpolation": "LINEAR", + "output": 2338 + }, + { + "input": 2339, + "interpolation": "LINEAR", + "output": 2340 + }, + { + "input": 2341, + "interpolation": "LINEAR", + "output": 2342 + }, + { + "input": 2343, + "interpolation": "LINEAR", + "output": 2344 + }, + { + "input": 2345, + "interpolation": "LINEAR", + "output": 2346 + }, + { + "input": 2347, + "interpolation": "LINEAR", + "output": 2348 + }, + { + "input": 2349, + "interpolation": "LINEAR", + "output": 2350 + }, + { + "input": 2351, + "interpolation": "LINEAR", + "output": 2352 + }, + { + "input": 2353, + "interpolation": "LINEAR", + "output": 2354 + }, + { + "input": 2355, + "interpolation": "LINEAR", + "output": 2356 + }, + { + "input": 2357, + "interpolation": "LINEAR", + "output": 2358 + }, + { + "input": 2359, + "interpolation": "LINEAR", + "output": 2360 + }, + { + "input": 2361, + "interpolation": "LINEAR", + "output": 2362 + }, + { + "input": 2363, + "interpolation": "LINEAR", + "output": 2364 + }, + { + "input": 2365, + "interpolation": "LINEAR", + "output": 2366 + }, + { + "input": 2367, + "interpolation": "LINEAR", + "output": 2368 + }, + { + "input": 2369, + "interpolation": "LINEAR", + "output": 2370 + }, + { + "input": 2371, + "interpolation": "LINEAR", + "output": 2372 + }, + { + "input": 2373, + "interpolation": "LINEAR", + "output": 2374 + }, + { + "input": 2375, + "interpolation": "LINEAR", + "output": 2376 + }, + { + "input": 2377, + "interpolation": "LINEAR", + "output": 2378 + }, + { + "input": 2379, + "interpolation": "LINEAR", + "output": 2380 + }, + { + "input": 2381, + "interpolation": "LINEAR", + "output": 2382 + }, + { + "input": 2383, + "interpolation": "LINEAR", + "output": 2384 + }, + { + "input": 2385, + "interpolation": "LINEAR", + "output": 2386 + }, + { + "input": 2387, + "interpolation": "LINEAR", + "output": 2388 + }, + { + "input": 2389, + "interpolation": "LINEAR", + "output": 2390 + }, + { + "input": 2391, + "interpolation": "LINEAR", + "output": 2392 + }, + { + "input": 2393, + "interpolation": "LINEAR", + "output": 2394 + }, + { + "input": 2395, + "interpolation": "LINEAR", + "output": 2396 + }, + { + "input": 2397, + "interpolation": "LINEAR", + "output": 2398 + }, + { + "input": 2399, + "interpolation": "LINEAR", + "output": 2400 + }, + { + "input": 2401, + "interpolation": "LINEAR", + "output": 2402 + }, + { + "input": 2403, + "interpolation": "LINEAR", + "output": 2404 + }, + { + "input": 2405, + "interpolation": "LINEAR", + "output": 2406 + }, + { + "input": 2407, + "interpolation": "LINEAR", + "output": 2408 + }, + { + "input": 2409, + "interpolation": "LINEAR", + "output": 2410 + }, + { + "input": 2411, + "interpolation": "LINEAR", + "output": 2412 + }, + { + "input": 2413, + "interpolation": "LINEAR", + "output": 2414 + }, + { + "input": 2415, + "interpolation": "LINEAR", + "output": 2416 + }, + { + "input": 2417, + "interpolation": "LINEAR", + "output": 2418 + }, + { + "input": 2419, + "interpolation": "LINEAR", + "output": 2420 + }, + { + "input": 2421, + "interpolation": "LINEAR", + "output": 2422 + }, + { + "input": 2423, + "interpolation": "LINEAR", + "output": 2424 + }, + { + "input": 2425, + "interpolation": "LINEAR", + "output": 2426 + }, + { + "input": 2427, + "interpolation": "LINEAR", + "output": 2428 + }, + { + "input": 2429, + "interpolation": "LINEAR", + "output": 2430 + }, + { + "input": 2431, + "interpolation": "LINEAR", + "output": 2432 + }, + { + "input": 2433, + "interpolation": "LINEAR", + "output": 2434 + }, + { + "input": 2435, + "interpolation": "LINEAR", + "output": 2436 + }, + { + "input": 2437, + "interpolation": "LINEAR", + "output": 2438 + }, + { + "input": 2439, + "interpolation": "LINEAR", + "output": 2440 + }, + { + "input": 2441, + "interpolation": "LINEAR", + "output": 2442 + }, + { + "input": 2443, + "interpolation": "LINEAR", + "output": 2444 + }, + { + "input": 2445, + "interpolation": "LINEAR", + "output": 2446 + }, + { + "input": 2447, + "interpolation": "LINEAR", + "output": 2448 + }, + { + "input": 2449, + "interpolation": "LINEAR", + "output": 2450 + }, + { + "input": 2451, + "interpolation": "LINEAR", + "output": 2452 + }, + { + "input": 2453, + "interpolation": "LINEAR", + "output": 2454 + }, + { + "input": 2455, + "interpolation": "LINEAR", + "output": 2456 + }, + { + "input": 2457, + "interpolation": "LINEAR", + "output": 2458 + }, + { + "input": 2459, + "interpolation": "LINEAR", + "output": 2460 + }, + { + "input": 2461, + "interpolation": "LINEAR", + "output": 2462 + }, + { + "input": 2463, + "interpolation": "LINEAR", + "output": 2464 + }, + { + "input": 2465, + "interpolation": "LINEAR", + "output": 2466 + }, + { + "input": 2467, + "interpolation": "LINEAR", + "output": 2468 + }, + { + "input": 2469, + "interpolation": "LINEAR", + "output": 2470 + }, + { + "input": 2471, + "interpolation": "LINEAR", + "output": 2472 + }, + { + "input": 2473, + "interpolation": "LINEAR", + "output": 2474 + }, + { + "input": 2475, + "interpolation": "LINEAR", + "output": 2476 + }, + { + "input": 2477, + "interpolation": "LINEAR", + "output": 2478 + }, + { + "input": 2479, + "interpolation": "LINEAR", + "output": 2480 + }, + { + "input": 2481, + "interpolation": "LINEAR", + "output": 2482 + }, + { + "input": 2483, + "interpolation": "LINEAR", + "output": 2484 + }, + { + "input": 2485, + "interpolation": "LINEAR", + "output": 2486 + }, + { + "input": 2487, + "interpolation": "LINEAR", + "output": 2488 + }, + { + "input": 2489, + "interpolation": "LINEAR", + "output": 2490 + }, + { + "input": 2491, + "interpolation": "LINEAR", + "output": 2492 + }, + { + "input": 2493, + "interpolation": "LINEAR", + "output": 2494 + }, + { + "input": 2495, + "interpolation": "LINEAR", + "output": 2496 + }, + { + "input": 2497, + "interpolation": "LINEAR", + "output": 2498 + }, + { + "input": 2499, + "interpolation": "LINEAR", + "output": 2500 + }, + { + "input": 2501, + "interpolation": "LINEAR", + "output": 2502 + }, + { + "input": 2503, + "interpolation": "LINEAR", + "output": 2504 + }, + { + "input": 2505, + "interpolation": "LINEAR", + "output": 2506 + }, + { + "input": 2507, + "interpolation": "LINEAR", + "output": 2508 + }, + { + "input": 2509, + "interpolation": "LINEAR", + "output": 2510 + }, + { + "input": 2511, + "interpolation": "LINEAR", + "output": 2512 + }, + { + "input": 2513, + "interpolation": "LINEAR", + "output": 2514 + }, + { + "input": 2515, + "interpolation": "LINEAR", + "output": 2516 + }, + { + "input": 2517, + "interpolation": "LINEAR", + "output": 2518 + }, + { + "input": 2519, + "interpolation": "LINEAR", + "output": 2520 + }, + { + "input": 2521, + "interpolation": "LINEAR", + "output": 2522 + }, + { + "input": 2523, + "interpolation": "LINEAR", + "output": 2524 + }, + { + "input": 2525, + "interpolation": "LINEAR", + "output": 2526 + }, + { + "input": 2527, + "interpolation": "LINEAR", + "output": 2528 + }, + { + "input": 2529, + "interpolation": "LINEAR", + "output": 2530 + }, + { + "input": 2531, + "interpolation": "LINEAR", + "output": 2532 + }, + { + "input": 2533, + "interpolation": "LINEAR", + "output": 2534 + }, + { + "input": 2535, + "interpolation": "LINEAR", + "output": 2536 + }, + { + "input": 2537, + "interpolation": "LINEAR", + "output": 2538 + }, + { + "input": 2539, + "interpolation": "LINEAR", + "output": 2540 + }, + { + "input": 2541, + "interpolation": "LINEAR", + "output": 2542 + }, + { + "input": 2543, + "interpolation": "LINEAR", + "output": 2544 + }, + { + "input": 2545, + "interpolation": "LINEAR", + "output": 2546 + }, + { + "input": 2547, + "interpolation": "LINEAR", + "output": 2548 + }, + { + "input": 2549, + "interpolation": "LINEAR", + "output": 2550 + }, + { + "input": 2551, + "interpolation": "LINEAR", + "output": 2552 + }, + { + "input": 2553, + "interpolation": "LINEAR", + "output": 2554 + }, + { + "input": 2555, + "interpolation": "LINEAR", + "output": 2556 + }, + { + "input": 2557, + "interpolation": "LINEAR", + "output": 2558 + }, + { + "input": 2559, + "interpolation": "LINEAR", + "output": 2560 + }, + { + "input": 2561, + "interpolation": "LINEAR", + "output": 2562 + }, + { + "input": 2563, + "interpolation": "LINEAR", + "output": 2564 + }, + { + "input": 2565, + "interpolation": "LINEAR", + "output": 2566 + }, + { + "input": 2567, + "interpolation": "LINEAR", + "output": 2568 + }, + { + "input": 2569, + "interpolation": "LINEAR", + "output": 2570 + }, + { + "input": 2571, + "interpolation": "LINEAR", + "output": 2572 + }, + { + "input": 2573, + "interpolation": "LINEAR", + "output": 2574 + }, + { + "input": 2575, + "interpolation": "LINEAR", + "output": 2576 + }, + { + "input": 2577, + "interpolation": "LINEAR", + "output": 2578 + }, + { + "input": 2579, + "interpolation": "LINEAR", + "output": 2580 + }, + { + "input": 2581, + "interpolation": "LINEAR", + "output": 2582 + }, + { + "input": 2583, + "interpolation": "LINEAR", + "output": 2584 + }, + { + "input": 2585, + "interpolation": "LINEAR", + "output": 2586 + }, + { + "input": 2587, + "interpolation": "LINEAR", + "output": 2588 + }, + { + "input": 2589, + "interpolation": "LINEAR", + "output": 2590 + }, + { + "input": 2591, + "interpolation": "LINEAR", + "output": 2592 + }, + { + "input": 2593, + "interpolation": "LINEAR", + "output": 2594 + }, + { + "input": 2595, + "interpolation": "LINEAR", + "output": 2596 + }, + { + "input": 2597, + "interpolation": "LINEAR", + "output": 2598 + }, + { + "input": 2599, + "interpolation": "LINEAR", + "output": 2600 + }, + { + "input": 2601, + "interpolation": "LINEAR", + "output": 2602 + }, + { + "input": 2603, + "interpolation": "LINEAR", + "output": 2604 + }, + { + "input": 2605, + "interpolation": "LINEAR", + "output": 2606 + }, + { + "input": 2607, + "interpolation": "LINEAR", + "output": 2608 + }, + { + "input": 2609, + "interpolation": "LINEAR", + "output": 2610 + }, + { + "input": 2611, + "interpolation": "LINEAR", + "output": 2612 + }, + { + "input": 2613, + "interpolation": "LINEAR", + "output": 2614 + }, + { + "input": 2615, + "interpolation": "LINEAR", + "output": 2616 + }, + { + "input": 2617, + "interpolation": "LINEAR", + "output": 2618 + }, + { + "input": 2619, + "interpolation": "LINEAR", + "output": 2620 + }, + { + "input": 2621, + "interpolation": "LINEAR", + "output": 2622 + }, + { + "input": 2623, + "interpolation": "LINEAR", + "output": 2624 + }, + { + "input": 2625, + "interpolation": "LINEAR", + "output": 2626 + }, + { + "input": 2627, + "interpolation": "LINEAR", + "output": 2628 + }, + { + "input": 2629, + "interpolation": "LINEAR", + "output": 2630 + }, + { + "input": 2631, + "interpolation": "LINEAR", + "output": 2632 + }, + { + "input": 2633, + "interpolation": "LINEAR", + "output": 2634 + }, + { + "input": 2635, + "interpolation": "LINEAR", + "output": 2636 + }, + { + "input": 2637, + "interpolation": "LINEAR", + "output": 2638 + }, + { + "input": 2639, + "interpolation": "LINEAR", + "output": 2640 + }, + { + "input": 2641, + "interpolation": "LINEAR", + "output": 2642 + }, + { + "input": 2643, + "interpolation": "LINEAR", + "output": 2644 + }, + { + "input": 2645, + "interpolation": "LINEAR", + "output": 2646 + }, + { + "input": 2647, + "interpolation": "LINEAR", + "output": 2648 + }, + { + "input": 2649, + "interpolation": "LINEAR", + "output": 2650 + }, + { + "input": 2651, + "interpolation": "LINEAR", + "output": 2652 + }, + { + "input": 2653, + "interpolation": "LINEAR", + "output": 2654 + }, + { + "input": 2655, + "interpolation": "LINEAR", + "output": 2656 + }, + { + "input": 2657, + "interpolation": "LINEAR", + "output": 2658 + }, + { + "input": 2659, + "interpolation": "LINEAR", + "output": 2660 + }, + { + "input": 2661, + "interpolation": "LINEAR", + "output": 2662 + }, + { + "input": 2663, + "interpolation": "LINEAR", + "output": 2664 + }, + { + "input": 2665, + "interpolation": "LINEAR", + "output": 2666 + }, + { + "input": 2667, + "interpolation": "LINEAR", + "output": 2668 + }, + { + "input": 2669, + "interpolation": "LINEAR", + "output": 2670 + }, + { + "input": 2671, + "interpolation": "LINEAR", + "output": 2672 + }, + { + "input": 2673, + "interpolation": "LINEAR", + "output": 2674 + }, + { + "input": 2675, + "interpolation": "LINEAR", + "output": 2676 + }, + { + "input": 2677, + "interpolation": "LINEAR", + "output": 2678 + }, + { + "input": 2679, + "interpolation": "LINEAR", + "output": 2680 + }, + { + "input": 2681, + "interpolation": "LINEAR", + "output": 2682 + }, + { + "input": 2683, + "interpolation": "LINEAR", + "output": 2684 + }, + { + "input": 2685, + "interpolation": "LINEAR", + "output": 2686 + }, + { + "input": 2687, + "interpolation": "LINEAR", + "output": 2688 + }, + { + "input": 2689, + "interpolation": "LINEAR", + "output": 2690 + }, + { + "input": 2691, + "interpolation": "LINEAR", + "output": 2692 + }, + { + "input": 2693, + "interpolation": "LINEAR", + "output": 2694 + }, + { + "input": 2695, + "interpolation": "LINEAR", + "output": 2696 + }, + { + "input": 2697, + "interpolation": "LINEAR", + "output": 2698 + }, + { + "input": 2699, + "interpolation": "LINEAR", + "output": 2700 + }, + { + "input": 2701, + "interpolation": "LINEAR", + "output": 2702 + }, + { + "input": 2703, + "interpolation": "LINEAR", + "output": 2704 + }, + { + "input": 2705, + "interpolation": "LINEAR", + "output": 2706 + }, + { + "input": 2707, + "interpolation": "LINEAR", + "output": 2708 + }, + { + "input": 2709, + "interpolation": "LINEAR", + "output": 2710 + }, + { + "input": 2711, + "interpolation": "LINEAR", + "output": 2712 + }, + { + "input": 2713, + "interpolation": "LINEAR", + "output": 2714 + }, + { + "input": 2715, + "interpolation": "LINEAR", + "output": 2716 + }, + { + "input": 2717, + "interpolation": "LINEAR", + "output": 2718 + }, + { + "input": 2719, + "interpolation": "LINEAR", + "output": 2720 + }, + { + "input": 2721, + "interpolation": "LINEAR", + "output": 2722 + }, + { + "input": 2723, + "interpolation": "LINEAR", + "output": 2724 + }, + { + "input": 2725, + "interpolation": "LINEAR", + "output": 2726 + }, + { + "input": 2727, + "interpolation": "LINEAR", + "output": 2728 + }, + { + "input": 2729, + "interpolation": "LINEAR", + "output": 2730 + }, + { + "input": 2731, + "interpolation": "LINEAR", + "output": 2732 + }, + { + "input": 2733, + "interpolation": "LINEAR", + "output": 2734 + }, + { + "input": 2735, + "interpolation": "LINEAR", + "output": 2736 + }, + { + "input": 2737, + "interpolation": "LINEAR", + "output": 2738 + }, + { + "input": 2739, + "interpolation": "LINEAR", + "output": 2740 + }, + { + "input": 2741, + "interpolation": "LINEAR", + "output": 2742 + }, + { + "input": 2743, + "interpolation": "LINEAR", + "output": 2744 + }, + { + "input": 2745, + "interpolation": "LINEAR", + "output": 2746 + }, + { + "input": 2747, + "interpolation": "LINEAR", + "output": 2748 + }, + { + "input": 2749, + "interpolation": "LINEAR", + "output": 2750 + }, + { + "input": 2751, + "interpolation": "LINEAR", + "output": 2752 + }, + { + "input": 2753, + "interpolation": "LINEAR", + "output": 2754 + }, + { + "input": 2755, + "interpolation": "LINEAR", + "output": 2756 + }, + { + "input": 2757, + "interpolation": "LINEAR", + "output": 2758 + }, + { + "input": 2759, + "interpolation": "LINEAR", + "output": 2760 + }, + { + "input": 2761, + "interpolation": "LINEAR", + "output": 2762 + }, + { + "input": 2763, + "interpolation": "LINEAR", + "output": 2764 + }, + { + "input": 2765, + "interpolation": "LINEAR", + "output": 2766 + }, + { + "input": 2767, + "interpolation": "LINEAR", + "output": 2768 + }, + { + "input": 2769, + "interpolation": "LINEAR", + "output": 2770 + }, + { + "input": 2771, + "interpolation": "LINEAR", + "output": 2772 + }, + { + "input": 2773, + "interpolation": "LINEAR", + "output": 2774 + }, + { + "input": 2775, + "interpolation": "LINEAR", + "output": 2776 + }, + { + "input": 2777, + "interpolation": "LINEAR", + "output": 2778 + }, + { + "input": 2779, + "interpolation": "LINEAR", + "output": 2780 + }, + { + "input": 2781, + "interpolation": "LINEAR", + "output": 2782 + }, + { + "input": 2783, + "interpolation": "LINEAR", + "output": 2784 + }, + { + "input": 2785, + "interpolation": "LINEAR", + "output": 2786 + }, + { + "input": 2787, + "interpolation": "LINEAR", + "output": 2788 + }, + { + "input": 2789, + "interpolation": "LINEAR", + "output": 2790 + }, + { + "input": 2791, + "interpolation": "LINEAR", + "output": 2792 + }, + { + "input": 2793, + "interpolation": "LINEAR", + "output": 2794 + }, + { + "input": 2795, + "interpolation": "LINEAR", + "output": 2796 + }, + { + "input": 2797, + "interpolation": "LINEAR", + "output": 2798 + }, + { + "input": 2799, + "interpolation": "LINEAR", + "output": 2800 + }, + { + "input": 2801, + "interpolation": "LINEAR", + "output": 2802 + }, + { + "input": 2803, + "interpolation": "LINEAR", + "output": 2804 + }, + { + "input": 2805, + "interpolation": "LINEAR", + "output": 2806 + }, + { + "input": 2807, + "interpolation": "LINEAR", + "output": 2808 + }, + { + "input": 2809, + "interpolation": "LINEAR", + "output": 2810 + }, + { + "input": 2811, + "interpolation": "LINEAR", + "output": 2812 + }, + { + "input": 2813, + "interpolation": "LINEAR", + "output": 2814 + }, + { + "input": 2815, + "interpolation": "LINEAR", + "output": 2816 + }, + { + "input": 2817, + "interpolation": "LINEAR", + "output": 2818 + }, + { + "input": 2819, + "interpolation": "LINEAR", + "output": 2820 + }, + { + "input": 2821, + "interpolation": "LINEAR", + "output": 2822 + }, + { + "input": 2823, + "interpolation": "LINEAR", + "output": 2824 + }, + { + "input": 2825, + "interpolation": "LINEAR", + "output": 2826 + }, + { + "input": 2827, + "interpolation": "LINEAR", + "output": 2828 + }, + { + "input": 2829, + "interpolation": "LINEAR", + "output": 2830 + }, + { + "input": 2831, + "interpolation": "LINEAR", + "output": 2832 + }, + { + "input": 2833, + "interpolation": "LINEAR", + "output": 2834 + }, + { + "input": 2835, + "interpolation": "LINEAR", + "output": 2836 + }, + { + "input": 2837, + "interpolation": "LINEAR", + "output": 2838 + }, + { + "input": 2839, + "interpolation": "LINEAR", + "output": 2840 + }, + { + "input": 2841, + "interpolation": "LINEAR", + "output": 2842 + }, + { + "input": 2843, + "interpolation": "LINEAR", + "output": 2844 + }, + { + "input": 2845, + "interpolation": "LINEAR", + "output": 2846 + }, + { + "input": 2847, + "interpolation": "LINEAR", + "output": 2848 + }, + { + "input": 2849, + "interpolation": "LINEAR", + "output": 2850 + }, + { + "input": 2851, + "interpolation": "LINEAR", + "output": 2852 + }, + { + "input": 2853, + "interpolation": "LINEAR", + "output": 2854 + }, + { + "input": 2855, + "interpolation": "LINEAR", + "output": 2856 + }, + { + "input": 2857, + "interpolation": "LINEAR", + "output": 2858 + }, + { + "input": 2859, + "interpolation": "LINEAR", + "output": 2860 + }, + { + "input": 2861, + "interpolation": "LINEAR", + "output": 2862 + }, + { + "input": 2863, + "interpolation": "LINEAR", + "output": 2864 + }, + { + "input": 2865, + "interpolation": "LINEAR", + "output": 2866 + }, + { + "input": 2867, + "interpolation": "LINEAR", + "output": 2868 + }, + { + "input": 2869, + "interpolation": "LINEAR", + "output": 2870 + }, + { + "input": 2871, + "interpolation": "LINEAR", + "output": 2872 + }, + { + "input": 2873, + "interpolation": "LINEAR", + "output": 2874 + }, + { + "input": 2875, + "interpolation": "LINEAR", + "output": 2876 + }, + { + "input": 2877, + "interpolation": "LINEAR", + "output": 2878 + }, + { + "input": 2879, + "interpolation": "LINEAR", + "output": 2880 + }, + { + "input": 2881, + "interpolation": "LINEAR", + "output": 2882 + }, + { + "input": 2883, + "interpolation": "LINEAR", + "output": 2884 + }, + { + "input": 2885, + "interpolation": "LINEAR", + "output": 2886 + }, + { + "input": 2887, + "interpolation": "LINEAR", + "output": 2888 + }, + { + "input": 2889, + "interpolation": "LINEAR", + "output": 2890 + }, + { + "input": 2891, + "interpolation": "LINEAR", + "output": 2892 + }, + { + "input": 2893, + "interpolation": "LINEAR", + "output": 2894 + }, + { + "input": 2895, + "interpolation": "LINEAR", + "output": 2896 + }, + { + "input": 2897, + "interpolation": "LINEAR", + "output": 2898 + }, + { + "input": 2899, + "interpolation": "LINEAR", + "output": 2900 + }, + { + "input": 2901, + "interpolation": "LINEAR", + "output": 2902 + }, + { + "input": 2903, + "interpolation": "LINEAR", + "output": 2904 + }, + { + "input": 2905, + "interpolation": "LINEAR", + "output": 2906 + }, + { + "input": 2907, + "interpolation": "LINEAR", + "output": 2908 + }, + { + "input": 2909, + "interpolation": "LINEAR", + "output": 2910 + }, + { + "input": 2911, + "interpolation": "LINEAR", + "output": 2912 + }, + { + "input": 2913, + "interpolation": "LINEAR", + "output": 2914 + }, + { + "input": 2915, + "interpolation": "LINEAR", + "output": 2916 + }, + { + "input": 2917, + "interpolation": "LINEAR", + "output": 2918 + }, + { + "input": 2919, + "interpolation": "LINEAR", + "output": 2920 + }, + { + "input": 2921, + "interpolation": "LINEAR", + "output": 2922 + }, + { + "input": 2923, + "interpolation": "LINEAR", + "output": 2924 + }, + { + "input": 2925, + "interpolation": "LINEAR", + "output": 2926 + }, + { + "input": 2927, + "interpolation": "LINEAR", + "output": 2928 + }, + { + "input": 2929, + "interpolation": "LINEAR", + "output": 2930 + }, + { + "input": 2931, + "interpolation": "LINEAR", + "output": 2932 + }, + { + "input": 2933, + "interpolation": "LINEAR", + "output": 2934 + }, + { + "input": 2935, + "interpolation": "LINEAR", + "output": 2936 + }, + { + "input": 2937, + "interpolation": "LINEAR", + "output": 2938 + }, + { + "input": 2939, + "interpolation": "LINEAR", + "output": 2940 + }, + { + "input": 2941, + "interpolation": "LINEAR", + "output": 2942 + }, + { + "input": 2943, + "interpolation": "LINEAR", + "output": 2944 + }, + { + "input": 2945, + "interpolation": "LINEAR", + "output": 2946 + }, + { + "input": 2947, + "interpolation": "LINEAR", + "output": 2948 + }, + { + "input": 2949, + "interpolation": "LINEAR", + "output": 2950 + }, + { + "input": 2951, + "interpolation": "LINEAR", + "output": 2952 + }, + { + "input": 2953, + "interpolation": "LINEAR", + "output": 2954 + }, + { + "input": 2955, + "interpolation": "LINEAR", + "output": 2956 + }, + { + "input": 2957, + "interpolation": "LINEAR", + "output": 2958 + }, + { + "input": 2959, + "interpolation": "LINEAR", + "output": 2960 + }, + { + "input": 2961, + "interpolation": "LINEAR", + "output": 2962 + }, + { + "input": 2963, + "interpolation": "LINEAR", + "output": 2964 + }, + { + "input": 2965, + "interpolation": "LINEAR", + "output": 2966 + }, + { + "input": 2967, + "interpolation": "LINEAR", + "output": 2968 + }, + { + "input": 2969, + "interpolation": "LINEAR", + "output": 2970 + }, + { + "input": 2971, + "interpolation": "LINEAR", + "output": 2972 + }, + { + "input": 2973, + "interpolation": "LINEAR", + "output": 2974 + }, + { + "input": 2975, + "interpolation": "LINEAR", + "output": 2976 + }, + { + "input": 2977, + "interpolation": "LINEAR", + "output": 2978 + }, + { + "input": 2979, + "interpolation": "LINEAR", + "output": 2980 + }, + { + "input": 2981, + "interpolation": "LINEAR", + "output": 2982 + }, + { + "input": 2983, + "interpolation": "LINEAR", + "output": 2984 + }, + { + "input": 2985, + "interpolation": "LINEAR", + "output": 2986 + }, + { + "input": 2987, + "interpolation": "LINEAR", + "output": 2988 + }, + { + "input": 2989, + "interpolation": "LINEAR", + "output": 2990 + }, + { + "input": 2991, + "interpolation": "LINEAR", + "output": 2992 + }, + { + "input": 2993, + "interpolation": "LINEAR", + "output": 2994 + }, + { + "input": 2995, + "interpolation": "LINEAR", + "output": 2996 + }, + { + "input": 2997, + "interpolation": "LINEAR", + "output": 2998 + }, + { + "input": 2999, + "interpolation": "LINEAR", + "output": 3000 + }, + { + "input": 3001, + "interpolation": "LINEAR", + "output": 3002 + }, + { + "input": 3003, + "interpolation": "LINEAR", + "output": 3004 + }, + { + "input": 3005, + "interpolation": "LINEAR", + "output": 3006 + }, + { + "input": 3007, + "interpolation": "LINEAR", + "output": 3008 + }, + { + "input": 3009, + "interpolation": "LINEAR", + "output": 3010 + }, + { + "input": 3011, + "interpolation": "LINEAR", + "output": 3012 + }, + { + "input": 3013, + "interpolation": "LINEAR", + "output": 3014 + }, + { + "input": 3015, + "interpolation": "LINEAR", + "output": 3016 + }, + { + "input": 3017, + "interpolation": "LINEAR", + "output": 3018 + }, + { + "input": 3019, + "interpolation": "LINEAR", + "output": 3020 + }, + { + "input": 3021, + "interpolation": "LINEAR", + "output": 3022 + }, + { + "input": 3023, + "interpolation": "LINEAR", + "output": 3024 + }, + { + "input": 3025, + "interpolation": "LINEAR", + "output": 3026 + }, + { + "input": 3027, + "interpolation": "LINEAR", + "output": 3028 + }, + { + "input": 3029, + "interpolation": "LINEAR", + "output": 3030 + }, + { + "input": 3031, + "interpolation": "LINEAR", + "output": 3032 + }, + { + "input": 3033, + "interpolation": "LINEAR", + "output": 3034 + }, + { + "input": 3035, + "interpolation": "LINEAR", + "output": 3036 + }, + { + "input": 3037, + "interpolation": "LINEAR", + "output": 3038 + }, + { + "input": 3039, + "interpolation": "LINEAR", + "output": 3040 + }, + { + "input": 3041, + "interpolation": "LINEAR", + "output": 3042 + }, + { + "input": 3043, + "interpolation": "LINEAR", + "output": 3044 + }, + { + "input": 3045, + "interpolation": "LINEAR", + "output": 3046 + }, + { + "input": 3047, + "interpolation": "LINEAR", + "output": 3048 + }, + { + "input": 3049, + "interpolation": "LINEAR", + "output": 3050 + }, + { + "input": 3051, + "interpolation": "LINEAR", + "output": 3052 + }, + { + "input": 3053, + "interpolation": "LINEAR", + "output": 3054 + }, + { + "input": 3055, + "interpolation": "LINEAR", + "output": 3056 + }, + { + "input": 3057, + "interpolation": "LINEAR", + "output": 3058 + }, + { + "input": 3059, + "interpolation": "LINEAR", + "output": 3060 + }, + { + "input": 3061, + "interpolation": "LINEAR", + "output": 3062 + }, + { + "input": 3063, + "interpolation": "LINEAR", + "output": 3064 + }, + { + "input": 3065, + "interpolation": "LINEAR", + "output": 3066 + }, + { + "input": 3067, + "interpolation": "LINEAR", + "output": 3068 + }, + { + "input": 3069, + "interpolation": "LINEAR", + "output": 3070 + }, + { + "input": 3071, + "interpolation": "LINEAR", + "output": 3072 + }, + { + "input": 3073, + "interpolation": "LINEAR", + "output": 3074 + }, + { + "input": 3075, + "interpolation": "LINEAR", + "output": 3076 + }, + { + "input": 3077, + "interpolation": "LINEAR", + "output": 3078 + }, + { + "input": 3079, + "interpolation": "LINEAR", + "output": 3080 + }, + { + "input": 3081, + "interpolation": "LINEAR", + "output": 3082 + }, + { + "input": 3083, + "interpolation": "LINEAR", + "output": 3084 + }, + { + "input": 3085, + "interpolation": "LINEAR", + "output": 3086 + }, + { + "input": 3087, + "interpolation": "LINEAR", + "output": 3088 + }, + { + "input": 3089, + "interpolation": "LINEAR", + "output": 3090 + }, + { + "input": 3091, + "interpolation": "LINEAR", + "output": 3092 + }, + { + "input": 3093, + "interpolation": "LINEAR", + "output": 3094 + }, + { + "input": 3095, + "interpolation": "LINEAR", + "output": 3096 + }, + { + "input": 3097, + "interpolation": "LINEAR", + "output": 3098 + }, + { + "input": 3099, + "interpolation": "LINEAR", + "output": 3100 + }, + { + "input": 3101, + "interpolation": "LINEAR", + "output": 3102 + }, + { + "input": 3103, + "interpolation": "LINEAR", + "output": 3104 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Flying", + "samplers": [ + { + "input": 3105, + "interpolation": "LINEAR", + "output": 3106 + }, + { + "input": 3107, + "interpolation": "LINEAR", + "output": 3108 + }, + { + "input": 3109, + "interpolation": "LINEAR", + "output": 3110 + }, + { + "input": 3111, + "interpolation": "LINEAR", + "output": 3112 + }, + { + "input": 3113, + "interpolation": "LINEAR", + "output": 3114 + }, + { + "input": 3115, + "interpolation": "LINEAR", + "output": 3116 + }, + { + "input": 3117, + "interpolation": "LINEAR", + "output": 3118 + }, + { + "input": 3119, + "interpolation": "LINEAR", + "output": 3120 + }, + { + "input": 3121, + "interpolation": "LINEAR", + "output": 3122 + }, + { + "input": 3123, + "interpolation": "LINEAR", + "output": 3124 + }, + { + "input": 3125, + "interpolation": "LINEAR", + "output": 3126 + }, + { + "input": 3127, + "interpolation": "LINEAR", + "output": 3128 + }, + { + "input": 3129, + "interpolation": "LINEAR", + "output": 3130 + }, + { + "input": 3131, + "interpolation": "LINEAR", + "output": 3132 + }, + { + "input": 3133, + "interpolation": "LINEAR", + "output": 3134 + }, + { + "input": 3135, + "interpolation": "LINEAR", + "output": 3136 + }, + { + "input": 3137, + "interpolation": "LINEAR", + "output": 3138 + }, + { + "input": 3139, + "interpolation": "LINEAR", + "output": 3140 + }, + { + "input": 3141, + "interpolation": "LINEAR", + "output": 3142 + }, + { + "input": 3143, + "interpolation": "LINEAR", + "output": 3144 + }, + { + "input": 3145, + "interpolation": "LINEAR", + "output": 3146 + }, + { + "input": 3147, + "interpolation": "LINEAR", + "output": 3148 + }, + { + "input": 3149, + "interpolation": "LINEAR", + "output": 3150 + }, + { + "input": 3151, + "interpolation": "LINEAR", + "output": 3152 + }, + { + "input": 3153, + "interpolation": "LINEAR", + "output": 3154 + }, + { + "input": 3155, + "interpolation": "LINEAR", + "output": 3156 + }, + { + "input": 3157, + "interpolation": "LINEAR", + "output": 3158 + }, + { + "input": 3159, + "interpolation": "LINEAR", + "output": 3160 + }, + { + "input": 3161, + "interpolation": "LINEAR", + "output": 3162 + }, + { + "input": 3163, + "interpolation": "LINEAR", + "output": 3164 + }, + { + "input": 3165, + "interpolation": "LINEAR", + "output": 3166 + }, + { + "input": 3167, + "interpolation": "LINEAR", + "output": 3168 + }, + { + "input": 3169, + "interpolation": "LINEAR", + "output": 3170 + }, + { + "input": 3171, + "interpolation": "LINEAR", + "output": 3172 + }, + { + "input": 3173, + "interpolation": "LINEAR", + "output": 3174 + }, + { + "input": 3175, + "interpolation": "LINEAR", + "output": 3176 + }, + { + "input": 3177, + "interpolation": "LINEAR", + "output": 3178 + }, + { + "input": 3179, + "interpolation": "LINEAR", + "output": 3180 + }, + { + "input": 3181, + "interpolation": "LINEAR", + "output": 3182 + }, + { + "input": 3183, + "interpolation": "LINEAR", + "output": 3184 + }, + { + "input": 3185, + "interpolation": "LINEAR", + "output": 3186 + }, + { + "input": 3187, + "interpolation": "LINEAR", + "output": 3188 + }, + { + "input": 3189, + "interpolation": "LINEAR", + "output": 3190 + }, + { + "input": 3191, + "interpolation": "LINEAR", + "output": 3192 + }, + { + "input": 3193, + "interpolation": "LINEAR", + "output": 3194 + }, + { + "input": 3195, + "interpolation": "LINEAR", + "output": 3196 + }, + { + "input": 3197, + "interpolation": "LINEAR", + "output": 3198 + }, + { + "input": 3199, + "interpolation": "LINEAR", + "output": 3200 + }, + { + "input": 3201, + "interpolation": "LINEAR", + "output": 3202 + }, + { + "input": 3203, + "interpolation": "LINEAR", + "output": 3204 + }, + { + "input": 3205, + "interpolation": "LINEAR", + "output": 3206 + }, + { + "input": 3207, + "interpolation": "LINEAR", + "output": 3208 + }, + { + "input": 3209, + "interpolation": "LINEAR", + "output": 3210 + }, + { + "input": 3211, + "interpolation": "LINEAR", + "output": 3212 + }, + { + "input": 3213, + "interpolation": "LINEAR", + "output": 3214 + }, + { + "input": 3215, + "interpolation": "LINEAR", + "output": 3216 + }, + { + "input": 3217, + "interpolation": "LINEAR", + "output": 3218 + }, + { + "input": 3219, + "interpolation": "LINEAR", + "output": 3220 + }, + { + "input": 3221, + "interpolation": "LINEAR", + "output": 3222 + }, + { + "input": 3223, + "interpolation": "LINEAR", + "output": 3224 + }, + { + "input": 3225, + "interpolation": "LINEAR", + "output": 3226 + }, + { + "input": 3227, + "interpolation": "LINEAR", + "output": 3228 + }, + { + "input": 3229, + "interpolation": "LINEAR", + "output": 3230 + }, + { + "input": 3231, + "interpolation": "LINEAR", + "output": 3232 + }, + { + "input": 3233, + "interpolation": "LINEAR", + "output": 3234 + }, + { + "input": 3235, + "interpolation": "LINEAR", + "output": 3236 + }, + { + "input": 3237, + "interpolation": "LINEAR", + "output": 3238 + }, + { + "input": 3239, + "interpolation": "LINEAR", + "output": 3240 + }, + { + "input": 3241, + "interpolation": "LINEAR", + "output": 3242 + }, + { + "input": 3243, + "interpolation": "LINEAR", + "output": 3244 + }, + { + "input": 3245, + "interpolation": "LINEAR", + "output": 3246 + }, + { + "input": 3247, + "interpolation": "LINEAR", + "output": 3248 + }, + { + "input": 3249, + "interpolation": "LINEAR", + "output": 3250 + }, + { + "input": 3251, + "interpolation": "LINEAR", + "output": 3252 + }, + { + "input": 3253, + "interpolation": "LINEAR", + "output": 3254 + }, + { + "input": 3255, + "interpolation": "LINEAR", + "output": 3256 + }, + { + "input": 3257, + "interpolation": "LINEAR", + "output": 3258 + }, + { + "input": 3259, + "interpolation": "LINEAR", + "output": 3260 + }, + { + "input": 3261, + "interpolation": "LINEAR", + "output": 3262 + }, + { + "input": 3263, + "interpolation": "LINEAR", + "output": 3264 + }, + { + "input": 3265, + "interpolation": "LINEAR", + "output": 3266 + }, + { + "input": 3267, + "interpolation": "LINEAR", + "output": 3268 + }, + { + "input": 3269, + "interpolation": "LINEAR", + "output": 3270 + }, + { + "input": 3271, + "interpolation": "LINEAR", + "output": 3272 + }, + { + "input": 3273, + "interpolation": "LINEAR", + "output": 3274 + }, + { + "input": 3275, + "interpolation": "LINEAR", + "output": 3276 + }, + { + "input": 3277, + "interpolation": "LINEAR", + "output": 3278 + }, + { + "input": 3279, + "interpolation": "LINEAR", + "output": 3280 + }, + { + "input": 3281, + "interpolation": "LINEAR", + "output": 3282 + }, + { + "input": 3283, + "interpolation": "LINEAR", + "output": 3284 + }, + { + "input": 3285, + "interpolation": "LINEAR", + "output": 3286 + }, + { + "input": 3287, + "interpolation": "LINEAR", + "output": 3288 + }, + { + "input": 3289, + "interpolation": "LINEAR", + "output": 3290 + }, + { + "input": 3291, + "interpolation": "LINEAR", + "output": 3292 + }, + { + "input": 3293, + "interpolation": "LINEAR", + "output": 3294 + }, + { + "input": 3295, + "interpolation": "LINEAR", + "output": 3296 + }, + { + "input": 3297, + "interpolation": "LINEAR", + "output": 3298 + }, + { + "input": 3299, + "interpolation": "LINEAR", + "output": 3300 + }, + { + "input": 3301, + "interpolation": "LINEAR", + "output": 3302 + }, + { + "input": 3303, + "interpolation": "LINEAR", + "output": 3304 + }, + { + "input": 3305, + "interpolation": "LINEAR", + "output": 3306 + }, + { + "input": 3307, + "interpolation": "LINEAR", + "output": 3308 + }, + { + "input": 3309, + "interpolation": "LINEAR", + "output": 3310 + }, + { + "input": 3311, + "interpolation": "LINEAR", + "output": 3312 + }, + { + "input": 3313, + "interpolation": "LINEAR", + "output": 3314 + }, + { + "input": 3315, + "interpolation": "LINEAR", + "output": 3316 + }, + { + "input": 3317, + "interpolation": "LINEAR", + "output": 3318 + }, + { + "input": 3319, + "interpolation": "LINEAR", + "output": 3320 + }, + { + "input": 3321, + "interpolation": "LINEAR", + "output": 3322 + }, + { + "input": 3323, + "interpolation": "LINEAR", + "output": 3324 + }, + { + "input": 3325, + "interpolation": "LINEAR", + "output": 3326 + }, + { + "input": 3327, + "interpolation": "LINEAR", + "output": 3328 + }, + { + "input": 3329, + "interpolation": "LINEAR", + "output": 3330 + }, + { + "input": 3331, + "interpolation": "LINEAR", + "output": 3332 + }, + { + "input": 3333, + "interpolation": "LINEAR", + "output": 3334 + }, + { + "input": 3335, + "interpolation": "LINEAR", + "output": 3336 + }, + { + "input": 3337, + "interpolation": "LINEAR", + "output": 3338 + }, + { + "input": 3339, + "interpolation": "LINEAR", + "output": 3340 + }, + { + "input": 3341, + "interpolation": "LINEAR", + "output": 3342 + }, + { + "input": 3343, + "interpolation": "LINEAR", + "output": 3344 + }, + { + "input": 3345, + "interpolation": "LINEAR", + "output": 3346 + }, + { + "input": 3347, + "interpolation": "LINEAR", + "output": 3348 + }, + { + "input": 3349, + "interpolation": "LINEAR", + "output": 3350 + }, + { + "input": 3351, + "interpolation": "LINEAR", + "output": 3352 + }, + { + "input": 3353, + "interpolation": "LINEAR", + "output": 3354 + }, + { + "input": 3355, + "interpolation": "LINEAR", + "output": 3356 + }, + { + "input": 3357, + "interpolation": "LINEAR", + "output": 3358 + }, + { + "input": 3359, + "interpolation": "LINEAR", + "output": 3360 + }, + { + "input": 3361, + "interpolation": "LINEAR", + "output": 3362 + }, + { + "input": 3363, + "interpolation": "LINEAR", + "output": 3364 + }, + { + "input": 3365, + "interpolation": "LINEAR", + "output": 3366 + }, + { + "input": 3367, + "interpolation": "LINEAR", + "output": 3368 + }, + { + "input": 3369, + "interpolation": "LINEAR", + "output": 3370 + }, + { + "input": 3371, + "interpolation": "LINEAR", + "output": 3372 + }, + { + "input": 3373, + "interpolation": "LINEAR", + "output": 3374 + }, + { + "input": 3375, + "interpolation": "LINEAR", + "output": 3376 + }, + { + "input": 3377, + "interpolation": "LINEAR", + "output": 3378 + }, + { + "input": 3379, + "interpolation": "LINEAR", + "output": 3380 + }, + { + "input": 3381, + "interpolation": "LINEAR", + "output": 3382 + }, + { + "input": 3383, + "interpolation": "LINEAR", + "output": 3384 + }, + { + "input": 3385, + "interpolation": "LINEAR", + "output": 3386 + }, + { + "input": 3387, + "interpolation": "LINEAR", + "output": 3388 + }, + { + "input": 3389, + "interpolation": "LINEAR", + "output": 3390 + }, + { + "input": 3391, + "interpolation": "LINEAR", + "output": 3392 + }, + { + "input": 3393, + "interpolation": "LINEAR", + "output": 3394 + }, + { + "input": 3395, + "interpolation": "LINEAR", + "output": 3396 + }, + { + "input": 3397, + "interpolation": "LINEAR", + "output": 3398 + }, + { + "input": 3399, + "interpolation": "LINEAR", + "output": 3400 + }, + { + "input": 3401, + "interpolation": "LINEAR", + "output": 3402 + }, + { + "input": 3403, + "interpolation": "LINEAR", + "output": 3404 + }, + { + "input": 3405, + "interpolation": "LINEAR", + "output": 3406 + }, + { + "input": 3407, + "interpolation": "LINEAR", + "output": 3408 + }, + { + "input": 3409, + "interpolation": "LINEAR", + "output": 3410 + }, + { + "input": 3411, + "interpolation": "LINEAR", + "output": 3412 + }, + { + "input": 3413, + "interpolation": "LINEAR", + "output": 3414 + }, + { + "input": 3415, + "interpolation": "LINEAR", + "output": 3416 + }, + { + "input": 3417, + "interpolation": "LINEAR", + "output": 3418 + }, + { + "input": 3419, + "interpolation": "LINEAR", + "output": 3420 + }, + { + "input": 3421, + "interpolation": "LINEAR", + "output": 3422 + }, + { + "input": 3423, + "interpolation": "LINEAR", + "output": 3424 + }, + { + "input": 3425, + "interpolation": "LINEAR", + "output": 3426 + }, + { + "input": 3427, + "interpolation": "LINEAR", + "output": 3428 + }, + { + "input": 3429, + "interpolation": "LINEAR", + "output": 3430 + }, + { + "input": 3431, + "interpolation": "LINEAR", + "output": 3432 + }, + { + "input": 3433, + "interpolation": "LINEAR", + "output": 3434 + }, + { + "input": 3435, + "interpolation": "LINEAR", + "output": 3436 + }, + { + "input": 3437, + "interpolation": "LINEAR", + "output": 3438 + }, + { + "input": 3439, + "interpolation": "LINEAR", + "output": 3440 + }, + { + "input": 3441, + "interpolation": "LINEAR", + "output": 3442 + }, + { + "input": 3443, + "interpolation": "LINEAR", + "output": 3444 + }, + { + "input": 3445, + "interpolation": "LINEAR", + "output": 3446 + }, + { + "input": 3447, + "interpolation": "LINEAR", + "output": 3448 + }, + { + "input": 3449, + "interpolation": "LINEAR", + "output": 3450 + }, + { + "input": 3451, + "interpolation": "LINEAR", + "output": 3452 + }, + { + "input": 3453, + "interpolation": "LINEAR", + "output": 3454 + }, + { + "input": 3455, + "interpolation": "LINEAR", + "output": 3456 + }, + { + "input": 3457, + "interpolation": "LINEAR", + "output": 3458 + }, + { + "input": 3459, + "interpolation": "LINEAR", + "output": 3460 + }, + { + "input": 3461, + "interpolation": "LINEAR", + "output": 3462 + }, + { + "input": 3463, + "interpolation": "LINEAR", + "output": 3464 + }, + { + "input": 3465, + "interpolation": "LINEAR", + "output": 3466 + }, + { + "input": 3467, + "interpolation": "LINEAR", + "output": 3468 + }, + { + "input": 3469, + "interpolation": "LINEAR", + "output": 3470 + }, + { + "input": 3471, + "interpolation": "LINEAR", + "output": 3472 + }, + { + "input": 3473, + "interpolation": "LINEAR", + "output": 3474 + }, + { + "input": 3475, + "interpolation": "LINEAR", + "output": 3476 + }, + { + "input": 3477, + "interpolation": "LINEAR", + "output": 3478 + }, + { + "input": 3479, + "interpolation": "LINEAR", + "output": 3480 + }, + { + "input": 3481, + "interpolation": "LINEAR", + "output": 3482 + }, + { + "input": 3483, + "interpolation": "LINEAR", + "output": 3484 + }, + { + "input": 3485, + "interpolation": "LINEAR", + "output": 3486 + }, + { + "input": 3487, + "interpolation": "LINEAR", + "output": 3488 + }, + { + "input": 3489, + "interpolation": "LINEAR", + "output": 3490 + }, + { + "input": 3491, + "interpolation": "LINEAR", + "output": 3492 + }, + { + "input": 3493, + "interpolation": "LINEAR", + "output": 3494 + }, + { + "input": 3495, + "interpolation": "LINEAR", + "output": 3496 + }, + { + "input": 3497, + "interpolation": "LINEAR", + "output": 3498 + }, + { + "input": 3499, + "interpolation": "LINEAR", + "output": 3500 + }, + { + "input": 3501, + "interpolation": "LINEAR", + "output": 3502 + }, + { + "input": 3503, + "interpolation": "LINEAR", + "output": 3504 + }, + { + "input": 3505, + "interpolation": "LINEAR", + "output": 3506 + }, + { + "input": 3507, + "interpolation": "LINEAR", + "output": 3508 + }, + { + "input": 3509, + "interpolation": "LINEAR", + "output": 3510 + }, + { + "input": 3511, + "interpolation": "LINEAR", + "output": 3512 + }, + { + "input": 3513, + "interpolation": "LINEAR", + "output": 3514 + }, + { + "input": 3515, + "interpolation": "LINEAR", + "output": 3516 + }, + { + "input": 3517, + "interpolation": "LINEAR", + "output": 3518 + }, + { + "input": 3519, + "interpolation": "LINEAR", + "output": 3520 + }, + { + "input": 3521, + "interpolation": "LINEAR", + "output": 3522 + }, + { + "input": 3523, + "interpolation": "LINEAR", + "output": 3524 + }, + { + "input": 3525, + "interpolation": "LINEAR", + "output": 3526 + }, + { + "input": 3527, + "interpolation": "LINEAR", + "output": 3528 + }, + { + "input": 3529, + "interpolation": "LINEAR", + "output": 3530 + }, + { + "input": 3531, + "interpolation": "LINEAR", + "output": 3532 + }, + { + "input": 3533, + "interpolation": "LINEAR", + "output": 3534 + }, + { + "input": 3535, + "interpolation": "LINEAR", + "output": 3536 + }, + { + "input": 3537, + "interpolation": "LINEAR", + "output": 3538 + }, + { + "input": 3539, + "interpolation": "LINEAR", + "output": 3540 + }, + { + "input": 3541, + "interpolation": "LINEAR", + "output": 3542 + }, + { + "input": 3543, + "interpolation": "LINEAR", + "output": 3544 + }, + { + "input": 3545, + "interpolation": "LINEAR", + "output": 3546 + }, + { + "input": 3547, + "interpolation": "LINEAR", + "output": 3548 + }, + { + "input": 3549, + "interpolation": "LINEAR", + "output": 3550 + }, + { + "input": 3551, + "interpolation": "LINEAR", + "output": 3552 + }, + { + "input": 3553, + "interpolation": "LINEAR", + "output": 3554 + }, + { + "input": 3555, + "interpolation": "LINEAR", + "output": 3556 + }, + { + "input": 3557, + "interpolation": "LINEAR", + "output": 3558 + }, + { + "input": 3559, + "interpolation": "LINEAR", + "output": 3560 + }, + { + "input": 3561, + "interpolation": "LINEAR", + "output": 3562 + }, + { + "input": 3563, + "interpolation": "LINEAR", + "output": 3564 + }, + { + "input": 3565, + "interpolation": "LINEAR", + "output": 3566 + }, + { + "input": 3567, + "interpolation": "LINEAR", + "output": 3568 + }, + { + "input": 3569, + "interpolation": "LINEAR", + "output": 3570 + }, + { + "input": 3571, + "interpolation": "LINEAR", + "output": 3572 + }, + { + "input": 3573, + "interpolation": "LINEAR", + "output": 3574 + }, + { + "input": 3575, + "interpolation": "LINEAR", + "output": 3576 + }, + { + "input": 3577, + "interpolation": "LINEAR", + "output": 3578 + }, + { + "input": 3579, + "interpolation": "LINEAR", + "output": 3580 + }, + { + "input": 3581, + "interpolation": "LINEAR", + "output": 3582 + }, + { + "input": 3583, + "interpolation": "LINEAR", + "output": 3584 + }, + { + "input": 3585, + "interpolation": "LINEAR", + "output": 3586 + }, + { + "input": 3587, + "interpolation": "LINEAR", + "output": 3588 + }, + { + "input": 3589, + "interpolation": "LINEAR", + "output": 3590 + }, + { + "input": 3591, + "interpolation": "LINEAR", + "output": 3592 + }, + { + "input": 3593, + "interpolation": "LINEAR", + "output": 3594 + }, + { + "input": 3595, + "interpolation": "LINEAR", + "output": 3596 + }, + { + "input": 3597, + "interpolation": "LINEAR", + "output": 3598 + }, + { + "input": 3599, + "interpolation": "LINEAR", + "output": 3600 + }, + { + "input": 3601, + "interpolation": "LINEAR", + "output": 3602 + }, + { + "input": 3603, + "interpolation": "LINEAR", + "output": 3604 + }, + { + "input": 3605, + "interpolation": "LINEAR", + "output": 3606 + }, + { + "input": 3607, + "interpolation": "LINEAR", + "output": 3608 + }, + { + "input": 3609, + "interpolation": "LINEAR", + "output": 3610 + }, + { + "input": 3611, + "interpolation": "LINEAR", + "output": 3612 + }, + { + "input": 3613, + "interpolation": "LINEAR", + "output": 3614 + }, + { + "input": 3615, + "interpolation": "LINEAR", + "output": 3616 + }, + { + "input": 3617, + "interpolation": "LINEAR", + "output": 3618 + }, + { + "input": 3619, + "interpolation": "LINEAR", + "output": 3620 + }, + { + "input": 3621, + "interpolation": "LINEAR", + "output": 3622 + }, + { + "input": 3623, + "interpolation": "LINEAR", + "output": 3624 + }, + { + "input": 3625, + "interpolation": "LINEAR", + "output": 3626 + }, + { + "input": 3627, + "interpolation": "LINEAR", + "output": 3628 + }, + { + "input": 3629, + "interpolation": "LINEAR", + "output": 3630 + }, + { + "input": 3631, + "interpolation": "LINEAR", + "output": 3632 + }, + { + "input": 3633, + "interpolation": "LINEAR", + "output": 3634 + }, + { + "input": 3635, + "interpolation": "LINEAR", + "output": 3636 + }, + { + "input": 3637, + "interpolation": "LINEAR", + "output": 3638 + }, + { + "input": 3639, + "interpolation": "LINEAR", + "output": 3640 + }, + { + "input": 3641, + "interpolation": "LINEAR", + "output": 3642 + }, + { + "input": 3643, + "interpolation": "LINEAR", + "output": 3644 + }, + { + "input": 3645, + "interpolation": "LINEAR", + "output": 3646 + }, + { + "input": 3647, + "interpolation": "LINEAR", + "output": 3648 + }, + { + "input": 3649, + "interpolation": "LINEAR", + "output": 3650 + }, + { + "input": 3651, + "interpolation": "LINEAR", + "output": 3652 + }, + { + "input": 3653, + "interpolation": "LINEAR", + "output": 3654 + }, + { + "input": 3655, + "interpolation": "LINEAR", + "output": 3656 + }, + { + "input": 3657, + "interpolation": "LINEAR", + "output": 3658 + }, + { + "input": 3659, + "interpolation": "LINEAR", + "output": 3660 + }, + { + "input": 3661, + "interpolation": "LINEAR", + "output": 3662 + }, + { + "input": 3663, + "interpolation": "LINEAR", + "output": 3664 + }, + { + "input": 3665, + "interpolation": "LINEAR", + "output": 3666 + }, + { + "input": 3667, + "interpolation": "LINEAR", + "output": 3668 + }, + { + "input": 3669, + "interpolation": "LINEAR", + "output": 3670 + }, + { + "input": 3671, + "interpolation": "LINEAR", + "output": 3672 + }, + { + "input": 3673, + "interpolation": "LINEAR", + "output": 3674 + }, + { + "input": 3675, + "interpolation": "LINEAR", + "output": 3676 + }, + { + "input": 3677, + "interpolation": "LINEAR", + "output": 3678 + }, + { + "input": 3679, + "interpolation": "LINEAR", + "output": 3680 + }, + { + "input": 3681, + "interpolation": "LINEAR", + "output": 3682 + }, + { + "input": 3683, + "interpolation": "LINEAR", + "output": 3684 + }, + { + "input": 3685, + "interpolation": "LINEAR", + "output": 3686 + }, + { + "input": 3687, + "interpolation": "LINEAR", + "output": 3688 + }, + { + "input": 3689, + "interpolation": "LINEAR", + "output": 3690 + }, + { + "input": 3691, + "interpolation": "LINEAR", + "output": 3692 + }, + { + "input": 3693, + "interpolation": "LINEAR", + "output": 3694 + }, + { + "input": 3695, + "interpolation": "LINEAR", + "output": 3696 + }, + { + "input": 3697, + "interpolation": "LINEAR", + "output": 3698 + }, + { + "input": 3699, + "interpolation": "LINEAR", + "output": 3700 + }, + { + "input": 3701, + "interpolation": "LINEAR", + "output": 3702 + }, + { + "input": 3703, + "interpolation": "LINEAR", + "output": 3704 + }, + { + "input": 3705, + "interpolation": "LINEAR", + "output": 3706 + }, + { + "input": 3707, + "interpolation": "LINEAR", + "output": 3708 + }, + { + "input": 3709, + "interpolation": "LINEAR", + "output": 3710 + }, + { + "input": 3711, + "interpolation": "LINEAR", + "output": 3712 + }, + { + "input": 3713, + "interpolation": "LINEAR", + "output": 3714 + }, + { + "input": 3715, + "interpolation": "LINEAR", + "output": 3716 + }, + { + "input": 3717, + "interpolation": "LINEAR", + "output": 3718 + }, + { + "input": 3719, + "interpolation": "LINEAR", + "output": 3720 + }, + { + "input": 3721, + "interpolation": "LINEAR", + "output": 3722 + }, + { + "input": 3723, + "interpolation": "LINEAR", + "output": 3724 + }, + { + "input": 3725, + "interpolation": "LINEAR", + "output": 3726 + }, + { + "input": 3727, + "interpolation": "LINEAR", + "output": 3728 + }, + { + "input": 3729, + "interpolation": "LINEAR", + "output": 3730 + }, + { + "input": 3731, + "interpolation": "LINEAR", + "output": 3732 + }, + { + "input": 3733, + "interpolation": "LINEAR", + "output": 3734 + }, + { + "input": 3735, + "interpolation": "LINEAR", + "output": 3736 + }, + { + "input": 3737, + "interpolation": "LINEAR", + "output": 3738 + }, + { + "input": 3739, + "interpolation": "LINEAR", + "output": 3740 + }, + { + "input": 3741, + "interpolation": "LINEAR", + "output": 3742 + }, + { + "input": 3743, + "interpolation": "LINEAR", + "output": 3744 + }, + { + "input": 3745, + "interpolation": "LINEAR", + "output": 3746 + }, + { + "input": 3747, + "interpolation": "LINEAR", + "output": 3748 + }, + { + "input": 3749, + "interpolation": "LINEAR", + "output": 3750 + }, + { + "input": 3751, + "interpolation": "LINEAR", + "output": 3752 + }, + { + "input": 3753, + "interpolation": "LINEAR", + "output": 3754 + }, + { + "input": 3755, + "interpolation": "LINEAR", + "output": 3756 + }, + { + "input": 3757, + "interpolation": "LINEAR", + "output": 3758 + }, + { + "input": 3759, + "interpolation": "LINEAR", + "output": 3760 + }, + { + "input": 3761, + "interpolation": "LINEAR", + "output": 3762 + }, + { + "input": 3763, + "interpolation": "LINEAR", + "output": 3764 + }, + { + "input": 3765, + "interpolation": "LINEAR", + "output": 3766 + }, + { + "input": 3767, + "interpolation": "LINEAR", + "output": 3768 + }, + { + "input": 3769, + "interpolation": "LINEAR", + "output": 3770 + }, + { + "input": 3771, + "interpolation": "LINEAR", + "output": 3772 + }, + { + "input": 3773, + "interpolation": "LINEAR", + "output": 3774 + }, + { + "input": 3775, + "interpolation": "LINEAR", + "output": 3776 + }, + { + "input": 3777, + "interpolation": "LINEAR", + "output": 3778 + }, + { + "input": 3779, + "interpolation": "LINEAR", + "output": 3780 + }, + { + "input": 3781, + "interpolation": "LINEAR", + "output": 3782 + }, + { + "input": 3783, + "interpolation": "LINEAR", + "output": 3784 + }, + { + "input": 3785, + "interpolation": "LINEAR", + "output": 3786 + }, + { + "input": 3787, + "interpolation": "LINEAR", + "output": 3788 + }, + { + "input": 3789, + "interpolation": "LINEAR", + "output": 3790 + }, + { + "input": 3791, + "interpolation": "LINEAR", + "output": 3792 + }, + { + "input": 3793, + "interpolation": "LINEAR", + "output": 3794 + }, + { + "input": 3795, + "interpolation": "LINEAR", + "output": 3796 + }, + { + "input": 3797, + "interpolation": "LINEAR", + "output": 3798 + }, + { + "input": 3799, + "interpolation": "LINEAR", + "output": 3800 + }, + { + "input": 3801, + "interpolation": "LINEAR", + "output": 3802 + }, + { + "input": 3803, + "interpolation": "LINEAR", + "output": 3804 + }, + { + "input": 3805, + "interpolation": "LINEAR", + "output": 3806 + }, + { + "input": 3807, + "interpolation": "LINEAR", + "output": 3808 + }, + { + "input": 3809, + "interpolation": "LINEAR", + "output": 3810 + }, + { + "input": 3811, + "interpolation": "LINEAR", + "output": 3812 + }, + { + "input": 3813, + "interpolation": "LINEAR", + "output": 3814 + }, + { + "input": 3815, + "interpolation": "LINEAR", + "output": 3816 + }, + { + "input": 3817, + "interpolation": "LINEAR", + "output": 3818 + }, + { + "input": 3819, + "interpolation": "LINEAR", + "output": 3820 + }, + { + "input": 3821, + "interpolation": "LINEAR", + "output": 3822 + }, + { + "input": 3823, + "interpolation": "LINEAR", + "output": 3824 + }, + { + "input": 3825, + "interpolation": "LINEAR", + "output": 3826 + }, + { + "input": 3827, + "interpolation": "LINEAR", + "output": 3828 + }, + { + "input": 3829, + "interpolation": "LINEAR", + "output": 3830 + }, + { + "input": 3831, + "interpolation": "LINEAR", + "output": 3832 + }, + { + "input": 3833, + "interpolation": "LINEAR", + "output": 3834 + }, + { + "input": 3835, + "interpolation": "LINEAR", + "output": 3836 + }, + { + "input": 3837, + "interpolation": "LINEAR", + "output": 3838 + }, + { + "input": 3839, + "interpolation": "LINEAR", + "output": 3840 + }, + { + "input": 3841, + "interpolation": "LINEAR", + "output": 3842 + }, + { + "input": 3843, + "interpolation": "LINEAR", + "output": 3844 + }, + { + "input": 3845, + "interpolation": "LINEAR", + "output": 3846 + }, + { + "input": 3847, + "interpolation": "LINEAR", + "output": 3848 + }, + { + "input": 3849, + "interpolation": "LINEAR", + "output": 3850 + }, + { + "input": 3851, + "interpolation": "LINEAR", + "output": 3852 + }, + { + "input": 3853, + "interpolation": "LINEAR", + "output": 3854 + }, + { + "input": 3855, + "interpolation": "LINEAR", + "output": 3856 + }, + { + "input": 3857, + "interpolation": "LINEAR", + "output": 3858 + }, + { + "input": 3859, + "interpolation": "LINEAR", + "output": 3860 + }, + { + "input": 3861, + "interpolation": "LINEAR", + "output": 3862 + }, + { + "input": 3863, + "interpolation": "LINEAR", + "output": 3864 + }, + { + "input": 3865, + "interpolation": "LINEAR", + "output": 3866 + }, + { + "input": 3867, + "interpolation": "LINEAR", + "output": 3868 + }, + { + "input": 3869, + "interpolation": "LINEAR", + "output": 3870 + }, + { + "input": 3871, + "interpolation": "LINEAR", + "output": 3872 + }, + { + "input": 3873, + "interpolation": "LINEAR", + "output": 3874 + }, + { + "input": 3875, + "interpolation": "LINEAR", + "output": 3876 + }, + { + "input": 3877, + "interpolation": "LINEAR", + "output": 3878 + }, + { + "input": 3879, + "interpolation": "LINEAR", + "output": 3880 + }, + { + "input": 3881, + "interpolation": "LINEAR", + "output": 3882 + }, + { + "input": 3883, + "interpolation": "LINEAR", + "output": 3884 + }, + { + "input": 3885, + "interpolation": "LINEAR", + "output": 3886 + }, + { + "input": 3887, + "interpolation": "LINEAR", + "output": 3888 + }, + { + "input": 3889, + "interpolation": "LINEAR", + "output": 3890 + }, + { + "input": 3891, + "interpolation": "LINEAR", + "output": 3892 + }, + { + "input": 3893, + "interpolation": "LINEAR", + "output": 3894 + }, + { + "input": 3895, + "interpolation": "LINEAR", + "output": 3896 + }, + { + "input": 3897, + "interpolation": "LINEAR", + "output": 3898 + }, + { + "input": 3899, + "interpolation": "LINEAR", + "output": 3900 + }, + { + "input": 3901, + "interpolation": "LINEAR", + "output": 3902 + }, + { + "input": 3903, + "interpolation": "LINEAR", + "output": 3904 + }, + { + "input": 3905, + "interpolation": "LINEAR", + "output": 3906 + }, + { + "input": 3907, + "interpolation": "LINEAR", + "output": 3908 + }, + { + "input": 3909, + "interpolation": "LINEAR", + "output": 3910 + }, + { + "input": 3911, + "interpolation": "LINEAR", + "output": 3912 + }, + { + "input": 3913, + "interpolation": "LINEAR", + "output": 3914 + }, + { + "input": 3915, + "interpolation": "LINEAR", + "output": 3916 + }, + { + "input": 3917, + "interpolation": "LINEAR", + "output": 3918 + }, + { + "input": 3919, + "interpolation": "LINEAR", + "output": 3920 + }, + { + "input": 3921, + "interpolation": "LINEAR", + "output": 3922 + }, + { + "input": 3923, + "interpolation": "LINEAR", + "output": 3924 + }, + { + "input": 3925, + "interpolation": "LINEAR", + "output": 3926 + }, + { + "input": 3927, + "interpolation": "LINEAR", + "output": 3928 + }, + { + "input": 3929, + "interpolation": "LINEAR", + "output": 3930 + }, + { + "input": 3931, + "interpolation": "LINEAR", + "output": 3932 + }, + { + "input": 3933, + "interpolation": "LINEAR", + "output": 3934 + }, + { + "input": 3935, + "interpolation": "LINEAR", + "output": 3936 + }, + { + "input": 3937, + "interpolation": "LINEAR", + "output": 3938 + }, + { + "input": 3939, + "interpolation": "LINEAR", + "output": 3940 + }, + { + "input": 3941, + "interpolation": "LINEAR", + "output": 3942 + }, + { + "input": 3943, + "interpolation": "LINEAR", + "output": 3944 + }, + { + "input": 3945, + "interpolation": "LINEAR", + "output": 3946 + }, + { + "input": 3947, + "interpolation": "LINEAR", + "output": 3948 + }, + { + "input": 3949, + "interpolation": "LINEAR", + "output": 3950 + }, + { + "input": 3951, + "interpolation": "LINEAR", + "output": 3952 + }, + { + "input": 3953, + "interpolation": "LINEAR", + "output": 3954 + }, + { + "input": 3955, + "interpolation": "LINEAR", + "output": 3956 + }, + { + "input": 3957, + "interpolation": "LINEAR", + "output": 3958 + }, + { + "input": 3959, + "interpolation": "LINEAR", + "output": 3960 + }, + { + "input": 3961, + "interpolation": "LINEAR", + "output": 3962 + }, + { + "input": 3963, + "interpolation": "LINEAR", + "output": 3964 + }, + { + "input": 3965, + "interpolation": "LINEAR", + "output": 3966 + }, + { + "input": 3967, + "interpolation": "LINEAR", + "output": 3968 + }, + { + "input": 3969, + "interpolation": "LINEAR", + "output": 3970 + }, + { + "input": 3971, + "interpolation": "LINEAR", + "output": 3972 + }, + { + "input": 3973, + "interpolation": "LINEAR", + "output": 3974 + }, + { + "input": 3975, + "interpolation": "LINEAR", + "output": 3976 + }, + { + "input": 3977, + "interpolation": "LINEAR", + "output": 3978 + }, + { + "input": 3979, + "interpolation": "LINEAR", + "output": 3980 + }, + { + "input": 3981, + "interpolation": "LINEAR", + "output": 3982 + }, + { + "input": 3983, + "interpolation": "LINEAR", + "output": 3984 + }, + { + "input": 3985, + "interpolation": "LINEAR", + "output": 3986 + }, + { + "input": 3987, + "interpolation": "LINEAR", + "output": 3988 + }, + { + "input": 3989, + "interpolation": "LINEAR", + "output": 3990 + }, + { + "input": 3991, + "interpolation": "LINEAR", + "output": 3992 + }, + { + "input": 3993, + "interpolation": "LINEAR", + "output": 3994 + }, + { + "input": 3995, + "interpolation": "LINEAR", + "output": 3996 + }, + { + "input": 3997, + "interpolation": "LINEAR", + "output": 3998 + }, + { + "input": 3999, + "interpolation": "LINEAR", + "output": 4000 + }, + { + "input": 4001, + "interpolation": "LINEAR", + "output": 4002 + }, + { + "input": 4003, + "interpolation": "LINEAR", + "output": 4004 + }, + { + "input": 4005, + "interpolation": "LINEAR", + "output": 4006 + }, + { + "input": 4007, + "interpolation": "LINEAR", + "output": 4008 + }, + { + "input": 4009, + "interpolation": "LINEAR", + "output": 4010 + }, + { + "input": 4011, + "interpolation": "LINEAR", + "output": 4012 + }, + { + "input": 4013, + "interpolation": "LINEAR", + "output": 4014 + }, + { + "input": 4015, + "interpolation": "LINEAR", + "output": 4016 + }, + { + "input": 4017, + "interpolation": "LINEAR", + "output": 4018 + }, + { + "input": 4019, + "interpolation": "LINEAR", + "output": 4020 + }, + { + "input": 4021, + "interpolation": "LINEAR", + "output": 4022 + }, + { + "input": 4023, + "interpolation": "LINEAR", + "output": 4024 + }, + { + "input": 4025, + "interpolation": "LINEAR", + "output": 4026 + }, + { + "input": 4027, + "interpolation": "LINEAR", + "output": 4028 + }, + { + "input": 4029, + "interpolation": "LINEAR", + "output": 4030 + }, + { + "input": 4031, + "interpolation": "LINEAR", + "output": 4032 + }, + { + "input": 4033, + "interpolation": "LINEAR", + "output": 4034 + }, + { + "input": 4035, + "interpolation": "LINEAR", + "output": 4036 + }, + { + "input": 4037, + "interpolation": "LINEAR", + "output": 4038 + }, + { + "input": 4039, + "interpolation": "LINEAR", + "output": 4040 + }, + { + "input": 4041, + "interpolation": "LINEAR", + "output": 4042 + }, + { + "input": 4043, + "interpolation": "LINEAR", + "output": 4044 + }, + { + "input": 4045, + "interpolation": "LINEAR", + "output": 4046 + }, + { + "input": 4047, + "interpolation": "LINEAR", + "output": 4048 + }, + { + "input": 4049, + "interpolation": "LINEAR", + "output": 4050 + }, + { + "input": 4051, + "interpolation": "LINEAR", + "output": 4052 + }, + { + "input": 4053, + "interpolation": "LINEAR", + "output": 4054 + }, + { + "input": 4055, + "interpolation": "LINEAR", + "output": 4056 + }, + { + "input": 4057, + "interpolation": "LINEAR", + "output": 4058 + }, + { + "input": 4059, + "interpolation": "LINEAR", + "output": 4060 + }, + { + "input": 4061, + "interpolation": "LINEAR", + "output": 4062 + }, + { + "input": 4063, + "interpolation": "LINEAR", + "output": 4064 + }, + { + "input": 4065, + "interpolation": "LINEAR", + "output": 4066 + }, + { + "input": 4067, + "interpolation": "LINEAR", + "output": 4068 + }, + { + "input": 4069, + "interpolation": "LINEAR", + "output": 4070 + }, + { + "input": 4071, + "interpolation": "LINEAR", + "output": 4072 + }, + { + "input": 4073, + "interpolation": "LINEAR", + "output": 4074 + }, + { + "input": 4075, + "interpolation": "LINEAR", + "output": 4076 + }, + { + "input": 4077, + "interpolation": "LINEAR", + "output": 4078 + }, + { + "input": 4079, + "interpolation": "LINEAR", + "output": 4080 + }, + { + "input": 4081, + "interpolation": "LINEAR", + "output": 4082 + }, + { + "input": 4083, + "interpolation": "LINEAR", + "output": 4084 + }, + { + "input": 4085, + "interpolation": "LINEAR", + "output": 4086 + }, + { + "input": 4087, + "interpolation": "LINEAR", + "output": 4088 + }, + { + "input": 4089, + "interpolation": "LINEAR", + "output": 4090 + }, + { + "input": 4091, + "interpolation": "LINEAR", + "output": 4092 + }, + { + "input": 4093, + "interpolation": "LINEAR", + "output": 4094 + }, + { + "input": 4095, + "interpolation": "LINEAR", + "output": 4096 + }, + { + "input": 4097, + "interpolation": "LINEAR", + "output": 4098 + }, + { + "input": 4099, + "interpolation": "LINEAR", + "output": 4100 + }, + { + "input": 4101, + "interpolation": "LINEAR", + "output": 4102 + }, + { + "input": 4103, + "interpolation": "LINEAR", + "output": 4104 + }, + { + "input": 4105, + "interpolation": "LINEAR", + "output": 4106 + }, + { + "input": 4107, + "interpolation": "LINEAR", + "output": 4108 + }, + { + "input": 4109, + "interpolation": "LINEAR", + "output": 4110 + }, + { + "input": 4111, + "interpolation": "LINEAR", + "output": 4112 + }, + { + "input": 4113, + "interpolation": "LINEAR", + "output": 4114 + }, + { + "input": 4115, + "interpolation": "LINEAR", + "output": 4116 + }, + { + "input": 4117, + "interpolation": "LINEAR", + "output": 4118 + }, + { + "input": 4119, + "interpolation": "LINEAR", + "output": 4120 + }, + { + "input": 4121, + "interpolation": "LINEAR", + "output": 4122 + }, + { + "input": 4123, + "interpolation": "LINEAR", + "output": 4124 + }, + { + "input": 4125, + "interpolation": "LINEAR", + "output": 4126 + }, + { + "input": 4127, + "interpolation": "LINEAR", + "output": 4128 + }, + { + "input": 4129, + "interpolation": "LINEAR", + "output": 4130 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Hyper beam", + "samplers": [ + { + "input": 4131, + "interpolation": "LINEAR", + "output": 4132 + }, + { + "input": 4133, + "interpolation": "LINEAR", + "output": 4134 + }, + { + "input": 4135, + "interpolation": "LINEAR", + "output": 4136 + }, + { + "input": 4137, + "interpolation": "LINEAR", + "output": 4138 + }, + { + "input": 4139, + "interpolation": "LINEAR", + "output": 4140 + }, + { + "input": 4141, + "interpolation": "LINEAR", + "output": 4142 + }, + { + "input": 4143, + "interpolation": "LINEAR", + "output": 4144 + }, + { + "input": 4145, + "interpolation": "LINEAR", + "output": 4146 + }, + { + "input": 4147, + "interpolation": "LINEAR", + "output": 4148 + }, + { + "input": 4149, + "interpolation": "LINEAR", + "output": 4150 + }, + { + "input": 4151, + "interpolation": "LINEAR", + "output": 4152 + }, + { + "input": 4153, + "interpolation": "LINEAR", + "output": 4154 + }, + { + "input": 4155, + "interpolation": "LINEAR", + "output": 4156 + }, + { + "input": 4157, + "interpolation": "LINEAR", + "output": 4158 + }, + { + "input": 4159, + "interpolation": "LINEAR", + "output": 4160 + }, + { + "input": 4161, + "interpolation": "LINEAR", + "output": 4162 + }, + { + "input": 4163, + "interpolation": "LINEAR", + "output": 4164 + }, + { + "input": 4165, + "interpolation": "LINEAR", + "output": 4166 + }, + { + "input": 4167, + "interpolation": "LINEAR", + "output": 4168 + }, + { + "input": 4169, + "interpolation": "LINEAR", + "output": 4170 + }, + { + "input": 4171, + "interpolation": "LINEAR", + "output": 4172 + }, + { + "input": 4173, + "interpolation": "LINEAR", + "output": 4174 + }, + { + "input": 4175, + "interpolation": "LINEAR", + "output": 4176 + }, + { + "input": 4177, + "interpolation": "LINEAR", + "output": 4178 + }, + { + "input": 4179, + "interpolation": "LINEAR", + "output": 4180 + }, + { + "input": 4181, + "interpolation": "LINEAR", + "output": 4182 + }, + { + "input": 4183, + "interpolation": "LINEAR", + "output": 4184 + }, + { + "input": 4185, + "interpolation": "LINEAR", + "output": 4186 + }, + { + "input": 4187, + "interpolation": "LINEAR", + "output": 4188 + }, + { + "input": 4189, + "interpolation": "LINEAR", + "output": 4190 + }, + { + "input": 4191, + "interpolation": "LINEAR", + "output": 4192 + }, + { + "input": 4193, + "interpolation": "LINEAR", + "output": 4194 + }, + { + "input": 4195, + "interpolation": "LINEAR", + "output": 4196 + }, + { + "input": 4197, + "interpolation": "LINEAR", + "output": 4198 + }, + { + "input": 4199, + "interpolation": "LINEAR", + "output": 4200 + }, + { + "input": 4201, + "interpolation": "LINEAR", + "output": 4202 + }, + { + "input": 4203, + "interpolation": "LINEAR", + "output": 4204 + }, + { + "input": 4205, + "interpolation": "LINEAR", + "output": 4206 + }, + { + "input": 4207, + "interpolation": "LINEAR", + "output": 4208 + }, + { + "input": 4209, + "interpolation": "LINEAR", + "output": 4210 + }, + { + "input": 4211, + "interpolation": "LINEAR", + "output": 4212 + }, + { + "input": 4213, + "interpolation": "LINEAR", + "output": 4214 + }, + { + "input": 4215, + "interpolation": "LINEAR", + "output": 4216 + }, + { + "input": 4217, + "interpolation": "LINEAR", + "output": 4218 + }, + { + "input": 4219, + "interpolation": "LINEAR", + "output": 4220 + }, + { + "input": 4221, + "interpolation": "LINEAR", + "output": 4222 + }, + { + "input": 4223, + "interpolation": "LINEAR", + "output": 4224 + }, + { + "input": 4225, + "interpolation": "LINEAR", + "output": 4226 + }, + { + "input": 4227, + "interpolation": "LINEAR", + "output": 4228 + }, + { + "input": 4229, + "interpolation": "LINEAR", + "output": 4230 + }, + { + "input": 4231, + "interpolation": "LINEAR", + "output": 4232 + }, + { + "input": 4233, + "interpolation": "LINEAR", + "output": 4234 + }, + { + "input": 4235, + "interpolation": "LINEAR", + "output": 4236 + }, + { + "input": 4237, + "interpolation": "LINEAR", + "output": 4238 + }, + { + "input": 4239, + "interpolation": "LINEAR", + "output": 4240 + }, + { + "input": 4241, + "interpolation": "LINEAR", + "output": 4242 + }, + { + "input": 4243, + "interpolation": "LINEAR", + "output": 4244 + }, + { + "input": 4245, + "interpolation": "LINEAR", + "output": 4246 + }, + { + "input": 4247, + "interpolation": "LINEAR", + "output": 4248 + }, + { + "input": 4249, + "interpolation": "LINEAR", + "output": 4250 + }, + { + "input": 4251, + "interpolation": "LINEAR", + "output": 4252 + }, + { + "input": 4253, + "interpolation": "LINEAR", + "output": 4254 + }, + { + "input": 4255, + "interpolation": "LINEAR", + "output": 4256 + }, + { + "input": 4257, + "interpolation": "LINEAR", + "output": 4258 + }, + { + "input": 4259, + "interpolation": "LINEAR", + "output": 4260 + }, + { + "input": 4261, + "interpolation": "LINEAR", + "output": 4262 + }, + { + "input": 4263, + "interpolation": "LINEAR", + "output": 4264 + }, + { + "input": 4265, + "interpolation": "LINEAR", + "output": 4266 + }, + { + "input": 4267, + "interpolation": "LINEAR", + "output": 4268 + }, + { + "input": 4269, + "interpolation": "LINEAR", + "output": 4270 + }, + { + "input": 4271, + "interpolation": "LINEAR", + "output": 4272 + }, + { + "input": 4273, + "interpolation": "LINEAR", + "output": 4274 + }, + { + "input": 4275, + "interpolation": "LINEAR", + "output": 4276 + }, + { + "input": 4277, + "interpolation": "LINEAR", + "output": 4278 + }, + { + "input": 4279, + "interpolation": "LINEAR", + "output": 4280 + }, + { + "input": 4281, + "interpolation": "LINEAR", + "output": 4282 + }, + { + "input": 4283, + "interpolation": "LINEAR", + "output": 4284 + }, + { + "input": 4285, + "interpolation": "LINEAR", + "output": 4286 + }, + { + "input": 4287, + "interpolation": "LINEAR", + "output": 4288 + }, + { + "input": 4289, + "interpolation": "LINEAR", + "output": 4290 + }, + { + "input": 4291, + "interpolation": "LINEAR", + "output": 4292 + }, + { + "input": 4293, + "interpolation": "LINEAR", + "output": 4294 + }, + { + "input": 4295, + "interpolation": "LINEAR", + "output": 4296 + }, + { + "input": 4297, + "interpolation": "LINEAR", + "output": 4298 + }, + { + "input": 4299, + "interpolation": "LINEAR", + "output": 4300 + }, + { + "input": 4301, + "interpolation": "LINEAR", + "output": 4302 + }, + { + "input": 4303, + "interpolation": "LINEAR", + "output": 4304 + }, + { + "input": 4305, + "interpolation": "LINEAR", + "output": 4306 + }, + { + "input": 4307, + "interpolation": "LINEAR", + "output": 4308 + }, + { + "input": 4309, + "interpolation": "LINEAR", + "output": 4310 + }, + { + "input": 4311, + "interpolation": "LINEAR", + "output": 4312 + }, + { + "input": 4313, + "interpolation": "LINEAR", + "output": 4314 + }, + { + "input": 4315, + "interpolation": "LINEAR", + "output": 4316 + }, + { + "input": 4317, + "interpolation": "LINEAR", + "output": 4318 + }, + { + "input": 4319, + "interpolation": "LINEAR", + "output": 4320 + }, + { + "input": 4321, + "interpolation": "LINEAR", + "output": 4322 + }, + { + "input": 4323, + "interpolation": "LINEAR", + "output": 4324 + }, + { + "input": 4325, + "interpolation": "LINEAR", + "output": 4326 + }, + { + "input": 4327, + "interpolation": "LINEAR", + "output": 4328 + }, + { + "input": 4329, + "interpolation": "LINEAR", + "output": 4330 + }, + { + "input": 4331, + "interpolation": "LINEAR", + "output": 4332 + }, + { + "input": 4333, + "interpolation": "LINEAR", + "output": 4334 + }, + { + "input": 4335, + "interpolation": "LINEAR", + "output": 4336 + }, + { + "input": 4337, + "interpolation": "LINEAR", + "output": 4338 + }, + { + "input": 4339, + "interpolation": "LINEAR", + "output": 4340 + }, + { + "input": 4341, + "interpolation": "LINEAR", + "output": 4342 + }, + { + "input": 4343, + "interpolation": "LINEAR", + "output": 4344 + }, + { + "input": 4345, + "interpolation": "LINEAR", + "output": 4346 + }, + { + "input": 4347, + "interpolation": "LINEAR", + "output": 4348 + }, + { + "input": 4349, + "interpolation": "LINEAR", + "output": 4350 + }, + { + "input": 4351, + "interpolation": "LINEAR", + "output": 4352 + }, + { + "input": 4353, + "interpolation": "LINEAR", + "output": 4354 + }, + { + "input": 4355, + "interpolation": "LINEAR", + "output": 4356 + }, + { + "input": 4357, + "interpolation": "LINEAR", + "output": 4358 + }, + { + "input": 4359, + "interpolation": "LINEAR", + "output": 4360 + }, + { + "input": 4361, + "interpolation": "LINEAR", + "output": 4362 + }, + { + "input": 4363, + "interpolation": "LINEAR", + "output": 4364 + }, + { + "input": 4365, + "interpolation": "LINEAR", + "output": 4366 + }, + { + "input": 4367, + "interpolation": "LINEAR", + "output": 4368 + }, + { + "input": 4369, + "interpolation": "LINEAR", + "output": 4370 + }, + { + "input": 4371, + "interpolation": "LINEAR", + "output": 4372 + }, + { + "input": 4373, + "interpolation": "LINEAR", + "output": 4374 + }, + { + "input": 4375, + "interpolation": "LINEAR", + "output": 4376 + }, + { + "input": 4377, + "interpolation": "LINEAR", + "output": 4378 + }, + { + "input": 4379, + "interpolation": "LINEAR", + "output": 4380 + }, + { + "input": 4381, + "interpolation": "LINEAR", + "output": 4382 + }, + { + "input": 4383, + "interpolation": "LINEAR", + "output": 4384 + }, + { + "input": 4385, + "interpolation": "LINEAR", + "output": 4386 + }, + { + "input": 4387, + "interpolation": "LINEAR", + "output": 4388 + }, + { + "input": 4389, + "interpolation": "LINEAR", + "output": 4390 + }, + { + "input": 4391, + "interpolation": "LINEAR", + "output": 4392 + }, + { + "input": 4393, + "interpolation": "LINEAR", + "output": 4394 + }, + { + "input": 4395, + "interpolation": "LINEAR", + "output": 4396 + }, + { + "input": 4397, + "interpolation": "LINEAR", + "output": 4398 + }, + { + "input": 4399, + "interpolation": "LINEAR", + "output": 4400 + }, + { + "input": 4401, + "interpolation": "LINEAR", + "output": 4402 + }, + { + "input": 4403, + "interpolation": "LINEAR", + "output": 4404 + }, + { + "input": 4405, + "interpolation": "LINEAR", + "output": 4406 + }, + { + "input": 4407, + "interpolation": "LINEAR", + "output": 4408 + }, + { + "input": 4409, + "interpolation": "LINEAR", + "output": 4410 + }, + { + "input": 4411, + "interpolation": "LINEAR", + "output": 4412 + }, + { + "input": 4413, + "interpolation": "LINEAR", + "output": 4414 + }, + { + "input": 4415, + "interpolation": "LINEAR", + "output": 4416 + }, + { + "input": 4417, + "interpolation": "LINEAR", + "output": 4418 + }, + { + "input": 4419, + "interpolation": "LINEAR", + "output": 4420 + }, + { + "input": 4421, + "interpolation": "LINEAR", + "output": 4422 + }, + { + "input": 4423, + "interpolation": "LINEAR", + "output": 4424 + }, + { + "input": 4425, + "interpolation": "LINEAR", + "output": 4426 + }, + { + "input": 4427, + "interpolation": "LINEAR", + "output": 4428 + }, + { + "input": 4429, + "interpolation": "LINEAR", + "output": 4430 + }, + { + "input": 4431, + "interpolation": "LINEAR", + "output": 4432 + }, + { + "input": 4433, + "interpolation": "LINEAR", + "output": 4434 + }, + { + "input": 4435, + "interpolation": "LINEAR", + "output": 4436 + }, + { + "input": 4437, + "interpolation": "LINEAR", + "output": 4438 + }, + { + "input": 4439, + "interpolation": "LINEAR", + "output": 4440 + }, + { + "input": 4441, + "interpolation": "LINEAR", + "output": 4442 + }, + { + "input": 4443, + "interpolation": "LINEAR", + "output": 4444 + }, + { + "input": 4445, + "interpolation": "LINEAR", + "output": 4446 + }, + { + "input": 4447, + "interpolation": "LINEAR", + "output": 4448 + }, + { + "input": 4449, + "interpolation": "LINEAR", + "output": 4450 + }, + { + "input": 4451, + "interpolation": "LINEAR", + "output": 4452 + }, + { + "input": 4453, + "interpolation": "LINEAR", + "output": 4454 + }, + { + "input": 4455, + "interpolation": "LINEAR", + "output": 4456 + }, + { + "input": 4457, + "interpolation": "LINEAR", + "output": 4458 + }, + { + "input": 4459, + "interpolation": "LINEAR", + "output": 4460 + }, + { + "input": 4461, + "interpolation": "LINEAR", + "output": 4462 + }, + { + "input": 4463, + "interpolation": "LINEAR", + "output": 4464 + }, + { + "input": 4465, + "interpolation": "LINEAR", + "output": 4466 + }, + { + "input": 4467, + "interpolation": "LINEAR", + "output": 4468 + }, + { + "input": 4469, + "interpolation": "LINEAR", + "output": 4470 + }, + { + "input": 4471, + "interpolation": "LINEAR", + "output": 4472 + }, + { + "input": 4473, + "interpolation": "LINEAR", + "output": 4474 + }, + { + "input": 4475, + "interpolation": "LINEAR", + "output": 4476 + }, + { + "input": 4477, + "interpolation": "LINEAR", + "output": 4478 + }, + { + "input": 4479, + "interpolation": "LINEAR", + "output": 4480 + }, + { + "input": 4481, + "interpolation": "LINEAR", + "output": 4482 + }, + { + "input": 4483, + "interpolation": "LINEAR", + "output": 4484 + }, + { + "input": 4485, + "interpolation": "LINEAR", + "output": 4486 + }, + { + "input": 4487, + "interpolation": "LINEAR", + "output": 4488 + }, + { + "input": 4489, + "interpolation": "LINEAR", + "output": 4490 + }, + { + "input": 4491, + "interpolation": "LINEAR", + "output": 4492 + }, + { + "input": 4493, + "interpolation": "LINEAR", + "output": 4494 + }, + { + "input": 4495, + "interpolation": "LINEAR", + "output": 4496 + }, + { + "input": 4497, + "interpolation": "LINEAR", + "output": 4498 + }, + { + "input": 4499, + "interpolation": "LINEAR", + "output": 4500 + }, + { + "input": 4501, + "interpolation": "LINEAR", + "output": 4502 + }, + { + "input": 4503, + "interpolation": "LINEAR", + "output": 4504 + }, + { + "input": 4505, + "interpolation": "LINEAR", + "output": 4506 + }, + { + "input": 4507, + "interpolation": "LINEAR", + "output": 4508 + }, + { + "input": 4509, + "interpolation": "LINEAR", + "output": 4510 + }, + { + "input": 4511, + "interpolation": "LINEAR", + "output": 4512 + }, + { + "input": 4513, + "interpolation": "LINEAR", + "output": 4514 + }, + { + "input": 4515, + "interpolation": "LINEAR", + "output": 4516 + }, + { + "input": 4517, + "interpolation": "LINEAR", + "output": 4518 + }, + { + "input": 4519, + "interpolation": "LINEAR", + "output": 4520 + }, + { + "input": 4521, + "interpolation": "LINEAR", + "output": 4522 + }, + { + "input": 4523, + "interpolation": "LINEAR", + "output": 4524 + }, + { + "input": 4525, + "interpolation": "LINEAR", + "output": 4526 + }, + { + "input": 4527, + "interpolation": "LINEAR", + "output": 4528 + }, + { + "input": 4529, + "interpolation": "LINEAR", + "output": 4530 + }, + { + "input": 4531, + "interpolation": "LINEAR", + "output": 4532 + }, + { + "input": 4533, + "interpolation": "LINEAR", + "output": 4534 + }, + { + "input": 4535, + "interpolation": "LINEAR", + "output": 4536 + }, + { + "input": 4537, + "interpolation": "LINEAR", + "output": 4538 + }, + { + "input": 4539, + "interpolation": "LINEAR", + "output": 4540 + }, + { + "input": 4541, + "interpolation": "LINEAR", + "output": 4542 + }, + { + "input": 4543, + "interpolation": "LINEAR", + "output": 4544 + }, + { + "input": 4545, + "interpolation": "LINEAR", + "output": 4546 + }, + { + "input": 4547, + "interpolation": "LINEAR", + "output": 4548 + }, + { + "input": 4549, + "interpolation": "LINEAR", + "output": 4550 + }, + { + "input": 4551, + "interpolation": "LINEAR", + "output": 4552 + }, + { + "input": 4553, + "interpolation": "LINEAR", + "output": 4554 + }, + { + "input": 4555, + "interpolation": "LINEAR", + "output": 4556 + }, + { + "input": 4557, + "interpolation": "LINEAR", + "output": 4558 + }, + { + "input": 4559, + "interpolation": "LINEAR", + "output": 4560 + }, + { + "input": 4561, + "interpolation": "LINEAR", + "output": 4562 + }, + { + "input": 4563, + "interpolation": "LINEAR", + "output": 4564 + }, + { + "input": 4565, + "interpolation": "LINEAR", + "output": 4566 + }, + { + "input": 4567, + "interpolation": "LINEAR", + "output": 4568 + }, + { + "input": 4569, + "interpolation": "LINEAR", + "output": 4570 + }, + { + "input": 4571, + "interpolation": "LINEAR", + "output": 4572 + }, + { + "input": 4573, + "interpolation": "LINEAR", + "output": 4574 + }, + { + "input": 4575, + "interpolation": "LINEAR", + "output": 4576 + }, + { + "input": 4577, + "interpolation": "LINEAR", + "output": 4578 + }, + { + "input": 4579, + "interpolation": "LINEAR", + "output": 4580 + }, + { + "input": 4581, + "interpolation": "LINEAR", + "output": 4582 + }, + { + "input": 4583, + "interpolation": "LINEAR", + "output": 4584 + }, + { + "input": 4585, + "interpolation": "LINEAR", + "output": 4586 + }, + { + "input": 4587, + "interpolation": "LINEAR", + "output": 4588 + }, + { + "input": 4589, + "interpolation": "LINEAR", + "output": 4590 + }, + { + "input": 4591, + "interpolation": "LINEAR", + "output": 4592 + }, + { + "input": 4593, + "interpolation": "LINEAR", + "output": 4594 + }, + { + "input": 4595, + "interpolation": "LINEAR", + "output": 4596 + }, + { + "input": 4597, + "interpolation": "LINEAR", + "output": 4598 + }, + { + "input": 4599, + "interpolation": "LINEAR", + "output": 4600 + }, + { + "input": 4601, + "interpolation": "LINEAR", + "output": 4602 + }, + { + "input": 4603, + "interpolation": "LINEAR", + "output": 4604 + }, + { + "input": 4605, + "interpolation": "LINEAR", + "output": 4606 + }, + { + "input": 4607, + "interpolation": "LINEAR", + "output": 4608 + }, + { + "input": 4609, + "interpolation": "LINEAR", + "output": 4610 + }, + { + "input": 4611, + "interpolation": "LINEAR", + "output": 4612 + }, + { + "input": 4613, + "interpolation": "LINEAR", + "output": 4614 + }, + { + "input": 4615, + "interpolation": "LINEAR", + "output": 4616 + }, + { + "input": 4617, + "interpolation": "LINEAR", + "output": 4618 + }, + { + "input": 4619, + "interpolation": "LINEAR", + "output": 4620 + }, + { + "input": 4621, + "interpolation": "LINEAR", + "output": 4622 + }, + { + "input": 4623, + "interpolation": "LINEAR", + "output": 4624 + }, + { + "input": 4625, + "interpolation": "LINEAR", + "output": 4626 + }, + { + "input": 4627, + "interpolation": "LINEAR", + "output": 4628 + }, + { + "input": 4629, + "interpolation": "LINEAR", + "output": 4630 + }, + { + "input": 4631, + "interpolation": "LINEAR", + "output": 4632 + }, + { + "input": 4633, + "interpolation": "LINEAR", + "output": 4634 + }, + { + "input": 4635, + "interpolation": "LINEAR", + "output": 4636 + }, + { + "input": 4637, + "interpolation": "LINEAR", + "output": 4638 + }, + { + "input": 4639, + "interpolation": "LINEAR", + "output": 4640 + }, + { + "input": 4641, + "interpolation": "LINEAR", + "output": 4642 + }, + { + "input": 4643, + "interpolation": "LINEAR", + "output": 4644 + }, + { + "input": 4645, + "interpolation": "LINEAR", + "output": 4646 + }, + { + "input": 4647, + "interpolation": "LINEAR", + "output": 4648 + }, + { + "input": 4649, + "interpolation": "LINEAR", + "output": 4650 + }, + { + "input": 4651, + "interpolation": "LINEAR", + "output": 4652 + }, + { + "input": 4653, + "interpolation": "LINEAR", + "output": 4654 + }, + { + "input": 4655, + "interpolation": "LINEAR", + "output": 4656 + }, + { + "input": 4657, + "interpolation": "LINEAR", + "output": 4658 + }, + { + "input": 4659, + "interpolation": "LINEAR", + "output": 4660 + }, + { + "input": 4661, + "interpolation": "LINEAR", + "output": 4662 + }, + { + "input": 4663, + "interpolation": "LINEAR", + "output": 4664 + }, + { + "input": 4665, + "interpolation": "LINEAR", + "output": 4666 + }, + { + "input": 4667, + "interpolation": "LINEAR", + "output": 4668 + }, + { + "input": 4669, + "interpolation": "LINEAR", + "output": 4670 + }, + { + "input": 4671, + "interpolation": "LINEAR", + "output": 4672 + }, + { + "input": 4673, + "interpolation": "LINEAR", + "output": 4674 + }, + { + "input": 4675, + "interpolation": "LINEAR", + "output": 4676 + }, + { + "input": 4677, + "interpolation": "LINEAR", + "output": 4678 + }, + { + "input": 4679, + "interpolation": "LINEAR", + "output": 4680 + }, + { + "input": 4681, + "interpolation": "LINEAR", + "output": 4682 + }, + { + "input": 4683, + "interpolation": "LINEAR", + "output": 4684 + }, + { + "input": 4685, + "interpolation": "LINEAR", + "output": 4686 + }, + { + "input": 4687, + "interpolation": "LINEAR", + "output": 4688 + }, + { + "input": 4689, + "interpolation": "LINEAR", + "output": 4690 + }, + { + "input": 4691, + "interpolation": "LINEAR", + "output": 4692 + }, + { + "input": 4693, + "interpolation": "LINEAR", + "output": 4694 + }, + { + "input": 4695, + "interpolation": "LINEAR", + "output": 4696 + }, + { + "input": 4697, + "interpolation": "LINEAR", + "output": 4698 + }, + { + "input": 4699, + "interpolation": "LINEAR", + "output": 4700 + }, + { + "input": 4701, + "interpolation": "LINEAR", + "output": 4702 + }, + { + "input": 4703, + "interpolation": "LINEAR", + "output": 4704 + }, + { + "input": 4705, + "interpolation": "LINEAR", + "output": 4706 + }, + { + "input": 4707, + "interpolation": "LINEAR", + "output": 4708 + }, + { + "input": 4709, + "interpolation": "LINEAR", + "output": 4710 + }, + { + "input": 4711, + "interpolation": "LINEAR", + "output": 4712 + }, + { + "input": 4713, + "interpolation": "LINEAR", + "output": 4714 + }, + { + "input": 4715, + "interpolation": "LINEAR", + "output": 4716 + }, + { + "input": 4717, + "interpolation": "LINEAR", + "output": 4718 + }, + { + "input": 4719, + "interpolation": "LINEAR", + "output": 4720 + }, + { + "input": 4721, + "interpolation": "LINEAR", + "output": 4722 + }, + { + "input": 4723, + "interpolation": "LINEAR", + "output": 4724 + }, + { + "input": 4725, + "interpolation": "LINEAR", + "output": 4726 + }, + { + "input": 4727, + "interpolation": "LINEAR", + "output": 4728 + }, + { + "input": 4729, + "interpolation": "LINEAR", + "output": 4730 + }, + { + "input": 4731, + "interpolation": "LINEAR", + "output": 4732 + }, + { + "input": 4733, + "interpolation": "LINEAR", + "output": 4734 + }, + { + "input": 4735, + "interpolation": "LINEAR", + "output": 4736 + }, + { + "input": 4737, + "interpolation": "LINEAR", + "output": 4738 + }, + { + "input": 4739, + "interpolation": "LINEAR", + "output": 4740 + }, + { + "input": 4741, + "interpolation": "LINEAR", + "output": 4742 + }, + { + "input": 4743, + "interpolation": "LINEAR", + "output": 4744 + }, + { + "input": 4745, + "interpolation": "LINEAR", + "output": 4746 + }, + { + "input": 4747, + "interpolation": "LINEAR", + "output": 4748 + }, + { + "input": 4749, + "interpolation": "LINEAR", + "output": 4750 + }, + { + "input": 4751, + "interpolation": "LINEAR", + "output": 4752 + }, + { + "input": 4753, + "interpolation": "LINEAR", + "output": 4754 + }, + { + "input": 4755, + "interpolation": "LINEAR", + "output": 4756 + }, + { + "input": 4757, + "interpolation": "LINEAR", + "output": 4758 + }, + { + "input": 4759, + "interpolation": "LINEAR", + "output": 4760 + }, + { + "input": 4761, + "interpolation": "LINEAR", + "output": 4762 + }, + { + "input": 4763, + "interpolation": "LINEAR", + "output": 4764 + }, + { + "input": 4765, + "interpolation": "LINEAR", + "output": 4766 + }, + { + "input": 4767, + "interpolation": "LINEAR", + "output": 4768 + }, + { + "input": 4769, + "interpolation": "LINEAR", + "output": 4770 + }, + { + "input": 4771, + "interpolation": "LINEAR", + "output": 4772 + }, + { + "input": 4773, + "interpolation": "LINEAR", + "output": 4774 + }, + { + "input": 4775, + "interpolation": "LINEAR", + "output": 4776 + }, + { + "input": 4777, + "interpolation": "LINEAR", + "output": 4778 + }, + { + "input": 4779, + "interpolation": "LINEAR", + "output": 4780 + }, + { + "input": 4781, + "interpolation": "LINEAR", + "output": 4782 + }, + { + "input": 4783, + "interpolation": "LINEAR", + "output": 4784 + }, + { + "input": 4785, + "interpolation": "LINEAR", + "output": 4786 + }, + { + "input": 4787, + "interpolation": "LINEAR", + "output": 4788 + }, + { + "input": 4789, + "interpolation": "LINEAR", + "output": 4790 + }, + { + "input": 4791, + "interpolation": "LINEAR", + "output": 4792 + }, + { + "input": 4793, + "interpolation": "LINEAR", + "output": 4794 + }, + { + "input": 4795, + "interpolation": "LINEAR", + "output": 4796 + }, + { + "input": 4797, + "interpolation": "LINEAR", + "output": 4798 + }, + { + "input": 4799, + "interpolation": "LINEAR", + "output": 4800 + }, + { + "input": 4801, + "interpolation": "LINEAR", + "output": 4802 + }, + { + "input": 4803, + "interpolation": "LINEAR", + "output": 4804 + }, + { + "input": 4805, + "interpolation": "LINEAR", + "output": 4806 + }, + { + "input": 4807, + "interpolation": "LINEAR", + "output": 4808 + }, + { + "input": 4809, + "interpolation": "LINEAR", + "output": 4810 + }, + { + "input": 4811, + "interpolation": "LINEAR", + "output": 4812 + }, + { + "input": 4813, + "interpolation": "LINEAR", + "output": 4814 + }, + { + "input": 4815, + "interpolation": "LINEAR", + "output": 4816 + }, + { + "input": 4817, + "interpolation": "LINEAR", + "output": 4818 + }, + { + "input": 4819, + "interpolation": "LINEAR", + "output": 4820 + }, + { + "input": 4821, + "interpolation": "LINEAR", + "output": 4822 + }, + { + "input": 4823, + "interpolation": "LINEAR", + "output": 4824 + }, + { + "input": 4825, + "interpolation": "LINEAR", + "output": 4826 + }, + { + "input": 4827, + "interpolation": "LINEAR", + "output": 4828 + }, + { + "input": 4829, + "interpolation": "LINEAR", + "output": 4830 + }, + { + "input": 4831, + "interpolation": "LINEAR", + "output": 4832 + }, + { + "input": 4833, + "interpolation": "LINEAR", + "output": 4834 + }, + { + "input": 4835, + "interpolation": "LINEAR", + "output": 4836 + }, + { + "input": 4837, + "interpolation": "LINEAR", + "output": 4838 + }, + { + "input": 4839, + "interpolation": "LINEAR", + "output": 4840 + }, + { + "input": 4841, + "interpolation": "LINEAR", + "output": 4842 + }, + { + "input": 4843, + "interpolation": "LINEAR", + "output": 4844 + }, + { + "input": 4845, + "interpolation": "LINEAR", + "output": 4846 + }, + { + "input": 4847, + "interpolation": "LINEAR", + "output": 4848 + }, + { + "input": 4849, + "interpolation": "LINEAR", + "output": 4850 + }, + { + "input": 4851, + "interpolation": "LINEAR", + "output": 4852 + }, + { + "input": 4853, + "interpolation": "LINEAR", + "output": 4854 + }, + { + "input": 4855, + "interpolation": "LINEAR", + "output": 4856 + }, + { + "input": 4857, + "interpolation": "LINEAR", + "output": 4858 + }, + { + "input": 4859, + "interpolation": "LINEAR", + "output": 4860 + }, + { + "input": 4861, + "interpolation": "LINEAR", + "output": 4862 + }, + { + "input": 4863, + "interpolation": "LINEAR", + "output": 4864 + }, + { + "input": 4865, + "interpolation": "LINEAR", + "output": 4866 + }, + { + "input": 4867, + "interpolation": "LINEAR", + "output": 4868 + }, + { + "input": 4869, + "interpolation": "LINEAR", + "output": 4870 + }, + { + "input": 4871, + "interpolation": "LINEAR", + "output": 4872 + }, + { + "input": 4873, + "interpolation": "LINEAR", + "output": 4874 + }, + { + "input": 4875, + "interpolation": "LINEAR", + "output": 4876 + }, + { + "input": 4877, + "interpolation": "LINEAR", + "output": 4878 + }, + { + "input": 4879, + "interpolation": "LINEAR", + "output": 4880 + }, + { + "input": 4881, + "interpolation": "LINEAR", + "output": 4882 + }, + { + "input": 4883, + "interpolation": "LINEAR", + "output": 4884 + }, + { + "input": 4885, + "interpolation": "LINEAR", + "output": 4886 + }, + { + "input": 4887, + "interpolation": "LINEAR", + "output": 4888 + }, + { + "input": 4889, + "interpolation": "LINEAR", + "output": 4890 + }, + { + "input": 4891, + "interpolation": "LINEAR", + "output": 4892 + }, + { + "input": 4893, + "interpolation": "LINEAR", + "output": 4894 + }, + { + "input": 4895, + "interpolation": "LINEAR", + "output": 4896 + }, + { + "input": 4897, + "interpolation": "LINEAR", + "output": 4898 + }, + { + "input": 4899, + "interpolation": "LINEAR", + "output": 4900 + }, + { + "input": 4901, + "interpolation": "LINEAR", + "output": 4902 + }, + { + "input": 4903, + "interpolation": "LINEAR", + "output": 4904 + }, + { + "input": 4905, + "interpolation": "LINEAR", + "output": 4906 + }, + { + "input": 4907, + "interpolation": "LINEAR", + "output": 4908 + }, + { + "input": 4909, + "interpolation": "LINEAR", + "output": 4910 + }, + { + "input": 4911, + "interpolation": "LINEAR", + "output": 4912 + }, + { + "input": 4913, + "interpolation": "LINEAR", + "output": 4914 + }, + { + "input": 4915, + "interpolation": "LINEAR", + "output": 4916 + }, + { + "input": 4917, + "interpolation": "LINEAR", + "output": 4918 + }, + { + "input": 4919, + "interpolation": "LINEAR", + "output": 4920 + }, + { + "input": 4921, + "interpolation": "LINEAR", + "output": 4922 + }, + { + "input": 4923, + "interpolation": "LINEAR", + "output": 4924 + }, + { + "input": 4925, + "interpolation": "LINEAR", + "output": 4926 + }, + { + "input": 4927, + "interpolation": "LINEAR", + "output": 4928 + }, + { + "input": 4929, + "interpolation": "LINEAR", + "output": 4930 + }, + { + "input": 4931, + "interpolation": "LINEAR", + "output": 4932 + }, + { + "input": 4933, + "interpolation": "LINEAR", + "output": 4934 + }, + { + "input": 4935, + "interpolation": "LINEAR", + "output": 4936 + }, + { + "input": 4937, + "interpolation": "LINEAR", + "output": 4938 + }, + { + "input": 4939, + "interpolation": "LINEAR", + "output": 4940 + }, + { + "input": 4941, + "interpolation": "LINEAR", + "output": 4942 + }, + { + "input": 4943, + "interpolation": "LINEAR", + "output": 4944 + }, + { + "input": 4945, + "interpolation": "LINEAR", + "output": 4946 + }, + { + "input": 4947, + "interpolation": "LINEAR", + "output": 4948 + }, + { + "input": 4949, + "interpolation": "LINEAR", + "output": 4950 + }, + { + "input": 4951, + "interpolation": "LINEAR", + "output": 4952 + }, + { + "input": 4953, + "interpolation": "LINEAR", + "output": 4954 + }, + { + "input": 4955, + "interpolation": "LINEAR", + "output": 4956 + }, + { + "input": 4957, + "interpolation": "LINEAR", + "output": 4958 + }, + { + "input": 4959, + "interpolation": "LINEAR", + "output": 4960 + }, + { + "input": 4961, + "interpolation": "LINEAR", + "output": 4962 + }, + { + "input": 4963, + "interpolation": "LINEAR", + "output": 4964 + }, + { + "input": 4965, + "interpolation": "LINEAR", + "output": 4966 + }, + { + "input": 4967, + "interpolation": "LINEAR", + "output": 4968 + }, + { + "input": 4969, + "interpolation": "LINEAR", + "output": 4970 + }, + { + "input": 4971, + "interpolation": "LINEAR", + "output": 4972 + }, + { + "input": 4973, + "interpolation": "LINEAR", + "output": 4974 + }, + { + "input": 4975, + "interpolation": "LINEAR", + "output": 4976 + }, + { + "input": 4977, + "interpolation": "LINEAR", + "output": 4978 + }, + { + "input": 4979, + "interpolation": "LINEAR", + "output": 4980 + }, + { + "input": 4981, + "interpolation": "LINEAR", + "output": 4982 + }, + { + "input": 4983, + "interpolation": "LINEAR", + "output": 4984 + }, + { + "input": 4985, + "interpolation": "LINEAR", + "output": 4986 + }, + { + "input": 4987, + "interpolation": "LINEAR", + "output": 4988 + }, + { + "input": 4989, + "interpolation": "LINEAR", + "output": 4990 + }, + { + "input": 4991, + "interpolation": "LINEAR", + "output": 4992 + }, + { + "input": 4993, + "interpolation": "LINEAR", + "output": 4994 + }, + { + "input": 4995, + "interpolation": "LINEAR", + "output": 4996 + }, + { + "input": 4997, + "interpolation": "LINEAR", + "output": 4998 + }, + { + "input": 4999, + "interpolation": "LINEAR", + "output": 5000 + }, + { + "input": 5001, + "interpolation": "LINEAR", + "output": 5002 + }, + { + "input": 5003, + "interpolation": "LINEAR", + "output": 5004 + }, + { + "input": 5005, + "interpolation": "LINEAR", + "output": 5006 + }, + { + "input": 5007, + "interpolation": "LINEAR", + "output": 5008 + }, + { + "input": 5009, + "interpolation": "LINEAR", + "output": 5010 + }, + { + "input": 5011, + "interpolation": "LINEAR", + "output": 5012 + }, + { + "input": 5013, + "interpolation": "LINEAR", + "output": 5014 + }, + { + "input": 5015, + "interpolation": "LINEAR", + "output": 5016 + }, + { + "input": 5017, + "interpolation": "LINEAR", + "output": 5018 + }, + { + "input": 5019, + "interpolation": "LINEAR", + "output": 5020 + }, + { + "input": 5021, + "interpolation": "LINEAR", + "output": 5022 + }, + { + "input": 5023, + "interpolation": "LINEAR", + "output": 5024 + }, + { + "input": 5025, + "interpolation": "LINEAR", + "output": 5026 + }, + { + "input": 5027, + "interpolation": "LINEAR", + "output": 5028 + }, + { + "input": 5029, + "interpolation": "LINEAR", + "output": 5030 + }, + { + "input": 5031, + "interpolation": "LINEAR", + "output": 5032 + }, + { + "input": 5033, + "interpolation": "LINEAR", + "output": 5034 + }, + { + "input": 5035, + "interpolation": "LINEAR", + "output": 5036 + }, + { + "input": 5037, + "interpolation": "LINEAR", + "output": 5038 + }, + { + "input": 5039, + "interpolation": "LINEAR", + "output": 5040 + }, + { + "input": 5041, + "interpolation": "LINEAR", + "output": 5042 + }, + { + "input": 5043, + "interpolation": "LINEAR", + "output": 5044 + }, + { + "input": 5045, + "interpolation": "LINEAR", + "output": 5046 + }, + { + "input": 5047, + "interpolation": "LINEAR", + "output": 5048 + }, + { + "input": 5049, + "interpolation": "LINEAR", + "output": 5050 + }, + { + "input": 5051, + "interpolation": "LINEAR", + "output": 5052 + }, + { + "input": 5053, + "interpolation": "LINEAR", + "output": 5054 + }, + { + "input": 5055, + "interpolation": "LINEAR", + "output": 5056 + }, + { + "input": 5057, + "interpolation": "LINEAR", + "output": 5058 + }, + { + "input": 5059, + "interpolation": "LINEAR", + "output": 5060 + }, + { + "input": 5061, + "interpolation": "LINEAR", + "output": 5062 + }, + { + "input": 5063, + "interpolation": "LINEAR", + "output": 5064 + }, + { + "input": 5065, + "interpolation": "LINEAR", + "output": 5066 + }, + { + "input": 5067, + "interpolation": "LINEAR", + "output": 5068 + }, + { + "input": 5069, + "interpolation": "LINEAR", + "output": 5070 + }, + { + "input": 5071, + "interpolation": "LINEAR", + "output": 5072 + }, + { + "input": 5073, + "interpolation": "LINEAR", + "output": 5074 + }, + { + "input": 5075, + "interpolation": "LINEAR", + "output": 5076 + }, + { + "input": 5077, + "interpolation": "LINEAR", + "output": 5078 + }, + { + "input": 5079, + "interpolation": "LINEAR", + "output": 5080 + }, + { + "input": 5081, + "interpolation": "LINEAR", + "output": 5082 + }, + { + "input": 5083, + "interpolation": "LINEAR", + "output": 5084 + }, + { + "input": 5085, + "interpolation": "LINEAR", + "output": 5086 + }, + { + "input": 5087, + "interpolation": "LINEAR", + "output": 5088 + }, + { + "input": 5089, + "interpolation": "LINEAR", + "output": 5090 + }, + { + "input": 5091, + "interpolation": "LINEAR", + "output": 5092 + }, + { + "input": 5093, + "interpolation": "LINEAR", + "output": 5094 + }, + { + "input": 5095, + "interpolation": "LINEAR", + "output": 5096 + }, + { + "input": 5097, + "interpolation": "LINEAR", + "output": 5098 + }, + { + "input": 5099, + "interpolation": "LINEAR", + "output": 5100 + }, + { + "input": 5101, + "interpolation": "LINEAR", + "output": 5102 + }, + { + "input": 5103, + "interpolation": "LINEAR", + "output": 5104 + }, + { + "input": 5105, + "interpolation": "LINEAR", + "output": 5106 + }, + { + "input": 5107, + "interpolation": "LINEAR", + "output": 5108 + }, + { + "input": 5109, + "interpolation": "LINEAR", + "output": 5110 + }, + { + "input": 5111, + "interpolation": "LINEAR", + "output": 5112 + }, + { + "input": 5113, + "interpolation": "LINEAR", + "output": 5114 + }, + { + "input": 5115, + "interpolation": "LINEAR", + "output": 5116 + }, + { + "input": 5117, + "interpolation": "LINEAR", + "output": 5118 + }, + { + "input": 5119, + "interpolation": "LINEAR", + "output": 5120 + }, + { + "input": 5121, + "interpolation": "LINEAR", + "output": 5122 + }, + { + "input": 5123, + "interpolation": "LINEAR", + "output": 5124 + }, + { + "input": 5125, + "interpolation": "LINEAR", + "output": 5126 + }, + { + "input": 5127, + "interpolation": "LINEAR", + "output": 5128 + }, + { + "input": 5129, + "interpolation": "LINEAR", + "output": 5130 + }, + { + "input": 5131, + "interpolation": "LINEAR", + "output": 5132 + }, + { + "input": 5133, + "interpolation": "LINEAR", + "output": 5134 + }, + { + "input": 5135, + "interpolation": "LINEAR", + "output": 5136 + }, + { + "input": 5137, + "interpolation": "LINEAR", + "output": 5138 + }, + { + "input": 5139, + "interpolation": "LINEAR", + "output": 5140 + }, + { + "input": 5141, + "interpolation": "LINEAR", + "output": 5142 + }, + { + "input": 5143, + "interpolation": "LINEAR", + "output": 5144 + }, + { + "input": 5145, + "interpolation": "LINEAR", + "output": 5146 + }, + { + "input": 5147, + "interpolation": "LINEAR", + "output": 5148 + }, + { + "input": 5149, + "interpolation": "LINEAR", + "output": 5150 + }, + { + "input": 5151, + "interpolation": "LINEAR", + "output": 5152 + }, + { + "input": 5153, + "interpolation": "LINEAR", + "output": 5154 + }, + { + "input": 5155, + "interpolation": "LINEAR", + "output": 5156 + } + ] + }, + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 13, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 13, + "path": "scale" + } + }, + { + "sampler": 2, + "target": { + "node": 13, + "path": "rotation" + } + }, + { + "sampler": 3, + "target": { + "node": 12, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 12, + "path": "scale" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 23, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 23, + "path": "scale" + } + }, + { + "sampler": 8, + "target": { + "node": 23, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 22, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 22, + "path": "scale" + } + }, + { + "sampler": 11, + "target": { + "node": 22, + "path": "rotation" + } + }, + { + "sampler": 12, + "target": { + "node": 25, + "path": "translation" + } + }, + { + "sampler": 13, + "target": { + "node": 25, + "path": "scale" + } + }, + { + "sampler": 14, + "target": { + "node": 25, + "path": "rotation" + } + }, + { + "sampler": 15, + "target": { + "node": 21, + "path": "translation" + } + }, + { + "sampler": 16, + "target": { + "node": 21, + "path": "scale" + } + }, + { + "sampler": 17, + "target": { + "node": 21, + "path": "rotation" + } + }, + { + "sampler": 18, + "target": { + "node": 27, + "path": "translation" + } + }, + { + "sampler": 19, + "target": { + "node": 27, + "path": "scale" + } + }, + { + "sampler": 20, + "target": { + "node": 27, + "path": "rotation" + } + }, + { + "sampler": 21, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 22, + "target": { + "node": 20, + "path": "scale" + } + }, + { + "sampler": 23, + "target": { + "node": 20, + "path": "rotation" + } + }, + { + "sampler": 24, + "target": { + "node": 32, + "path": "translation" + } + }, + { + "sampler": 25, + "target": { + "node": 32, + "path": "scale" + } + }, + { + "sampler": 26, + "target": { + "node": 32, + "path": "rotation" + } + }, + { + "sampler": 27, + "target": { + "node": 31, + "path": "translation" + } + }, + { + "sampler": 28, + "target": { + "node": 31, + "path": "scale" + } + }, + { + "sampler": 29, + "target": { + "node": 31, + "path": "rotation" + } + }, + { + "sampler": 30, + "target": { + "node": 34, + "path": "translation" + } + }, + { + "sampler": 31, + "target": { + "node": 34, + "path": "scale" + } + }, + { + "sampler": 32, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 33, + "target": { + "node": 30, + "path": "translation" + } + }, + { + "sampler": 34, + "target": { + "node": 30, + "path": "scale" + } + }, + { + "sampler": 35, + "target": { + "node": 30, + "path": "rotation" + } + }, + { + "sampler": 36, + "target": { + "node": 36, + "path": "translation" + } + }, + { + "sampler": 37, + "target": { + "node": 36, + "path": "scale" + } + }, + { + "sampler": 38, + "target": { + "node": 36, + "path": "rotation" + } + }, + { + "sampler": 39, + "target": { + "node": 29, + "path": "translation" + } + }, + { + "sampler": 40, + "target": { + "node": 29, + "path": "scale" + } + }, + { + "sampler": 41, + "target": { + "node": 29, + "path": "rotation" + } + }, + { + "sampler": 42, + "target": { + "node": 38, + "path": "translation" + } + }, + { + "sampler": 43, + "target": { + "node": 38, + "path": "scale" + } + }, + { + "sampler": 44, + "target": { + "node": 38, + "path": "rotation" + } + }, + { + "sampler": 45, + "target": { + "node": 40, + "path": "translation" + } + }, + { + "sampler": 46, + "target": { + "node": 40, + "path": "scale" + } + }, + { + "sampler": 47, + "target": { + "node": 40, + "path": "rotation" + } + }, + { + "sampler": 48, + "target": { + "node": 42, + "path": "translation" + } + }, + { + "sampler": 49, + "target": { + "node": 42, + "path": "scale" + } + }, + { + "sampler": 50, + "target": { + "node": 42, + "path": "rotation" + } + }, + { + "sampler": 51, + "target": { + "node": 19, + "path": "translation" + } + }, + { + "sampler": 52, + "target": { + "node": 19, + "path": "scale" + } + }, + { + "sampler": 53, + "target": { + "node": 19, + "path": "rotation" + } + }, + { + "sampler": 54, + "target": { + "node": 48, + "path": "translation" + } + }, + { + "sampler": 55, + "target": { + "node": 48, + "path": "scale" + } + }, + { + "sampler": 56, + "target": { + "node": 48, + "path": "rotation" + } + }, + { + "sampler": 57, + "target": { + "node": 47, + "path": "translation" + } + }, + { + "sampler": 58, + "target": { + "node": 47, + "path": "scale" + } + }, + { + "sampler": 59, + "target": { + "node": 47, + "path": "rotation" + } + }, + { + "sampler": 60, + "target": { + "node": 50, + "path": "translation" + } + }, + { + "sampler": 61, + "target": { + "node": 50, + "path": "scale" + } + }, + { + "sampler": 62, + "target": { + "node": 50, + "path": "rotation" + } + }, + { + "sampler": 63, + "target": { + "node": 46, + "path": "translation" + } + }, + { + "sampler": 64, + "target": { + "node": 46, + "path": "scale" + } + }, + { + "sampler": 65, + "target": { + "node": 46, + "path": "rotation" + } + }, + { + "sampler": 66, + "target": { + "node": 52, + "path": "translation" + } + }, + { + "sampler": 67, + "target": { + "node": 52, + "path": "scale" + } + }, + { + "sampler": 68, + "target": { + "node": 52, + "path": "rotation" + } + }, + { + "sampler": 69, + "target": { + "node": 45, + "path": "translation" + } + }, + { + "sampler": 70, + "target": { + "node": 45, + "path": "scale" + } + }, + { + "sampler": 71, + "target": { + "node": 45, + "path": "rotation" + } + }, + { + "sampler": 72, + "target": { + "node": 54, + "path": "translation" + } + }, + { + "sampler": 73, + "target": { + "node": 54, + "path": "scale" + } + }, + { + "sampler": 74, + "target": { + "node": 54, + "path": "rotation" + } + }, + { + "sampler": 75, + "target": { + "node": 56, + "path": "translation" + } + }, + { + "sampler": 76, + "target": { + "node": 56, + "path": "scale" + } + }, + { + "sampler": 77, + "target": { + "node": 56, + "path": "rotation" + } + }, + { + "sampler": 78, + "target": { + "node": 44, + "path": "translation" + } + }, + { + "sampler": 79, + "target": { + "node": 44, + "path": "scale" + } + }, + { + "sampler": 80, + "target": { + "node": 44, + "path": "rotation" + } + }, + { + "sampler": 81, + "target": { + "node": 62, + "path": "translation" + } + }, + { + "sampler": 82, + "target": { + "node": 62, + "path": "scale" + } + }, + { + "sampler": 83, + "target": { + "node": 62, + "path": "rotation" + } + }, + { + "sampler": 84, + "target": { + "node": 61, + "path": "translation" + } + }, + { + "sampler": 85, + "target": { + "node": 61, + "path": "scale" + } + }, + { + "sampler": 86, + "target": { + "node": 61, + "path": "rotation" + } + }, + { + "sampler": 87, + "target": { + "node": 64, + "path": "translation" + } + }, + { + "sampler": 88, + "target": { + "node": 64, + "path": "scale" + } + }, + { + "sampler": 89, + "target": { + "node": 64, + "path": "rotation" + } + }, + { + "sampler": 90, + "target": { + "node": 60, + "path": "translation" + } + }, + { + "sampler": 91, + "target": { + "node": 60, + "path": "scale" + } + }, + { + "sampler": 92, + "target": { + "node": 60, + "path": "rotation" + } + }, + { + "sampler": 93, + "target": { + "node": 66, + "path": "translation" + } + }, + { + "sampler": 94, + "target": { + "node": 66, + "path": "scale" + } + }, + { + "sampler": 95, + "target": { + "node": 66, + "path": "rotation" + } + }, + { + "sampler": 96, + "target": { + "node": 59, + "path": "translation" + } + }, + { + "sampler": 97, + "target": { + "node": 59, + "path": "scale" + } + }, + { + "sampler": 98, + "target": { + "node": 59, + "path": "rotation" + } + }, + { + "sampler": 99, + "target": { + "node": 68, + "path": "translation" + } + }, + { + "sampler": 100, + "target": { + "node": 68, + "path": "scale" + } + }, + { + "sampler": 101, + "target": { + "node": 68, + "path": "rotation" + } + }, + { + "sampler": 102, + "target": { + "node": 70, + "path": "translation" + } + }, + { + "sampler": 103, + "target": { + "node": 70, + "path": "scale" + } + }, + { + "sampler": 104, + "target": { + "node": 70, + "path": "rotation" + } + }, + { + "sampler": 105, + "target": { + "node": 58, + "path": "translation" + } + }, + { + "sampler": 106, + "target": { + "node": 58, + "path": "scale" + } + }, + { + "sampler": 107, + "target": { + "node": 58, + "path": "rotation" + } + }, + { + "sampler": 108, + "target": { + "node": 76, + "path": "translation" + } + }, + { + "sampler": 109, + "target": { + "node": 76, + "path": "scale" + } + }, + { + "sampler": 110, + "target": { + "node": 76, + "path": "rotation" + } + }, + { + "sampler": 111, + "target": { + "node": 75, + "path": "translation" + } + }, + { + "sampler": 112, + "target": { + "node": 75, + "path": "scale" + } + }, + { + "sampler": 113, + "target": { + "node": 75, + "path": "rotation" + } + }, + { + "sampler": 114, + "target": { + "node": 78, + "path": "translation" + } + }, + { + "sampler": 115, + "target": { + "node": 78, + "path": "scale" + } + }, + { + "sampler": 116, + "target": { + "node": 78, + "path": "rotation" + } + }, + { + "sampler": 117, + "target": { + "node": 74, + "path": "translation" + } + }, + { + "sampler": 118, + "target": { + "node": 74, + "path": "scale" + } + }, + { + "sampler": 119, + "target": { + "node": 74, + "path": "rotation" + } + }, + { + "sampler": 120, + "target": { + "node": 80, + "path": "translation" + } + }, + { + "sampler": 121, + "target": { + "node": 80, + "path": "scale" + } + }, + { + "sampler": 122, + "target": { + "node": 80, + "path": "rotation" + } + }, + { + "sampler": 123, + "target": { + "node": 73, + "path": "translation" + } + }, + { + "sampler": 124, + "target": { + "node": 73, + "path": "scale" + } + }, + { + "sampler": 125, + "target": { + "node": 73, + "path": "rotation" + } + }, + { + "sampler": 126, + "target": { + "node": 82, + "path": "translation" + } + }, + { + "sampler": 127, + "target": { + "node": 82, + "path": "scale" + } + }, + { + "sampler": 128, + "target": { + "node": 82, + "path": "rotation" + } + }, + { + "sampler": 129, + "target": { + "node": 84, + "path": "translation" + } + }, + { + "sampler": 130, + "target": { + "node": 84, + "path": "scale" + } + }, + { + "sampler": 131, + "target": { + "node": 84, + "path": "rotation" + } + }, + { + "sampler": 132, + "target": { + "node": 72, + "path": "translation" + } + }, + { + "sampler": 133, + "target": { + "node": 72, + "path": "scale" + } + }, + { + "sampler": 134, + "target": { + "node": 72, + "path": "rotation" + } + }, + { + "sampler": 135, + "target": { + "node": 86, + "path": "translation" + } + }, + { + "sampler": 136, + "target": { + "node": 86, + "path": "scale" + } + }, + { + "sampler": 137, + "target": { + "node": 86, + "path": "rotation" + } + }, + { + "sampler": 138, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 139, + "target": { + "node": 18, + "path": "scale" + } + }, + { + "sampler": 140, + "target": { + "node": 18, + "path": "rotation" + } + }, + { + "sampler": 141, + "target": { + "node": 88, + "path": "translation" + } + }, + { + "sampler": 142, + "target": { + "node": 88, + "path": "scale" + } + }, + { + "sampler": 143, + "target": { + "node": 88, + "path": "rotation" + } + }, + { + "sampler": 144, + "target": { + "node": 92, + "path": "translation" + } + }, + { + "sampler": 145, + "target": { + "node": 92, + "path": "scale" + } + }, + { + "sampler": 146, + "target": { + "node": 92, + "path": "rotation" + } + }, + { + "sampler": 147, + "target": { + "node": 91, + "path": "translation" + } + }, + { + "sampler": 148, + "target": { + "node": 91, + "path": "scale" + } + }, + { + "sampler": 149, + "target": { + "node": 91, + "path": "rotation" + } + }, + { + "sampler": 150, + "target": { + "node": 90, + "path": "translation" + } + }, + { + "sampler": 151, + "target": { + "node": 90, + "path": "scale" + } + }, + { + "sampler": 152, + "target": { + "node": 90, + "path": "rotation" + } + }, + { + "sampler": 153, + "target": { + "node": 17, + "path": "translation" + } + }, + { + "sampler": 154, + "target": { + "node": 17, + "path": "scale" + } + }, + { + "sampler": 155, + "target": { + "node": 17, + "path": "rotation" + } + }, + { + "sampler": 156, + "target": { + "node": 94, + "path": "translation" + } + }, + { + "sampler": 157, + "target": { + "node": 94, + "path": "scale" + } + }, + { + "sampler": 158, + "target": { + "node": 94, + "path": "rotation" + } + }, + { + "sampler": 159, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 160, + "target": { + "node": 16, + "path": "scale" + } + }, + { + "sampler": 161, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 162, + "target": { + "node": 96, + "path": "translation" + } + }, + { + "sampler": 163, + "target": { + "node": 96, + "path": "scale" + } + }, + { + "sampler": 164, + "target": { + "node": 96, + "path": "rotation" + } + }, + { + "sampler": 165, + "target": { + "node": 15, + "path": "translation" + } + }, + { + "sampler": 166, + "target": { + "node": 15, + "path": "scale" + } + }, + { + "sampler": 167, + "target": { + "node": 15, + "path": "rotation" + } + }, + { + "sampler": 168, + "target": { + "node": 106, + "path": "translation" + } + }, + { + "sampler": 169, + "target": { + "node": 106, + "path": "scale" + } + }, + { + "sampler": 170, + "target": { + "node": 106, + "path": "rotation" + } + }, + { + "sampler": 171, + "target": { + "node": 105, + "path": "translation" + } + }, + { + "sampler": 172, + "target": { + "node": 105, + "path": "scale" + } + }, + { + "sampler": 173, + "target": { + "node": 105, + "path": "rotation" + } + }, + { + "sampler": 174, + "target": { + "node": 108, + "path": "translation" + } + }, + { + "sampler": 175, + "target": { + "node": 108, + "path": "scale" + } + }, + { + "sampler": 176, + "target": { + "node": 108, + "path": "rotation" + } + }, + { + "sampler": 177, + "target": { + "node": 104, + "path": "translation" + } + }, + { + "sampler": 178, + "target": { + "node": 104, + "path": "scale" + } + }, + { + "sampler": 179, + "target": { + "node": 104, + "path": "rotation" + } + }, + { + "sampler": 180, + "target": { + "node": 110, + "path": "translation" + } + }, + { + "sampler": 181, + "target": { + "node": 110, + "path": "scale" + } + }, + { + "sampler": 182, + "target": { + "node": 110, + "path": "rotation" + } + }, + { + "sampler": 183, + "target": { + "node": 103, + "path": "translation" + } + }, + { + "sampler": 184, + "target": { + "node": 103, + "path": "scale" + } + }, + { + "sampler": 185, + "target": { + "node": 103, + "path": "rotation" + } + }, + { + "sampler": 186, + "target": { + "node": 115, + "path": "translation" + } + }, + { + "sampler": 187, + "target": { + "node": 115, + "path": "scale" + } + }, + { + "sampler": 188, + "target": { + "node": 115, + "path": "rotation" + } + }, + { + "sampler": 189, + "target": { + "node": 114, + "path": "translation" + } + }, + { + "sampler": 190, + "target": { + "node": 114, + "path": "scale" + } + }, + { + "sampler": 191, + "target": { + "node": 114, + "path": "rotation" + } + }, + { + "sampler": 192, + "target": { + "node": 117, + "path": "translation" + } + }, + { + "sampler": 193, + "target": { + "node": 117, + "path": "scale" + } + }, + { + "sampler": 194, + "target": { + "node": 117, + "path": "rotation" + } + }, + { + "sampler": 195, + "target": { + "node": 113, + "path": "translation" + } + }, + { + "sampler": 196, + "target": { + "node": 113, + "path": "scale" + } + }, + { + "sampler": 197, + "target": { + "node": 113, + "path": "rotation" + } + }, + { + "sampler": 198, + "target": { + "node": 119, + "path": "translation" + } + }, + { + "sampler": 199, + "target": { + "node": 119, + "path": "scale" + } + }, + { + "sampler": 200, + "target": { + "node": 119, + "path": "rotation" + } + }, + { + "sampler": 201, + "target": { + "node": 112, + "path": "translation" + } + }, + { + "sampler": 202, + "target": { + "node": 112, + "path": "scale" + } + }, + { + "sampler": 203, + "target": { + "node": 112, + "path": "rotation" + } + }, + { + "sampler": 204, + "target": { + "node": 121, + "path": "translation" + } + }, + { + "sampler": 205, + "target": { + "node": 121, + "path": "scale" + } + }, + { + "sampler": 206, + "target": { + "node": 121, + "path": "rotation" + } + }, + { + "sampler": 207, + "target": { + "node": 123, + "path": "translation" + } + }, + { + "sampler": 208, + "target": { + "node": 123, + "path": "scale" + } + }, + { + "sampler": 209, + "target": { + "node": 123, + "path": "rotation" + } + }, + { + "sampler": 210, + "target": { + "node": 125, + "path": "translation" + } + }, + { + "sampler": 211, + "target": { + "node": 125, + "path": "scale" + } + }, + { + "sampler": 212, + "target": { + "node": 125, + "path": "rotation" + } + }, + { + "sampler": 213, + "target": { + "node": 102, + "path": "translation" + } + }, + { + "sampler": 214, + "target": { + "node": 102, + "path": "scale" + } + }, + { + "sampler": 215, + "target": { + "node": 102, + "path": "rotation" + } + }, + { + "sampler": 216, + "target": { + "node": 131, + "path": "translation" + } + }, + { + "sampler": 217, + "target": { + "node": 131, + "path": "scale" + } + }, + { + "sampler": 218, + "target": { + "node": 131, + "path": "rotation" + } + }, + { + "sampler": 219, + "target": { + "node": 130, + "path": "translation" + } + }, + { + "sampler": 220, + "target": { + "node": 130, + "path": "scale" + } + }, + { + "sampler": 221, + "target": { + "node": 130, + "path": "rotation" + } + }, + { + "sampler": 222, + "target": { + "node": 133, + "path": "translation" + } + }, + { + "sampler": 223, + "target": { + "node": 133, + "path": "scale" + } + }, + { + "sampler": 224, + "target": { + "node": 133, + "path": "rotation" + } + }, + { + "sampler": 225, + "target": { + "node": 129, + "path": "translation" + } + }, + { + "sampler": 226, + "target": { + "node": 129, + "path": "scale" + } + }, + { + "sampler": 227, + "target": { + "node": 129, + "path": "rotation" + } + }, + { + "sampler": 228, + "target": { + "node": 135, + "path": "translation" + } + }, + { + "sampler": 229, + "target": { + "node": 135, + "path": "scale" + } + }, + { + "sampler": 230, + "target": { + "node": 135, + "path": "rotation" + } + }, + { + "sampler": 231, + "target": { + "node": 128, + "path": "translation" + } + }, + { + "sampler": 232, + "target": { + "node": 128, + "path": "scale" + } + }, + { + "sampler": 233, + "target": { + "node": 128, + "path": "rotation" + } + }, + { + "sampler": 234, + "target": { + "node": 137, + "path": "translation" + } + }, + { + "sampler": 235, + "target": { + "node": 137, + "path": "scale" + } + }, + { + "sampler": 236, + "target": { + "node": 137, + "path": "rotation" + } + }, + { + "sampler": 237, + "target": { + "node": 139, + "path": "translation" + } + }, + { + "sampler": 238, + "target": { + "node": 139, + "path": "scale" + } + }, + { + "sampler": 239, + "target": { + "node": 139, + "path": "rotation" + } + }, + { + "sampler": 240, + "target": { + "node": 127, + "path": "translation" + } + }, + { + "sampler": 241, + "target": { + "node": 127, + "path": "scale" + } + }, + { + "sampler": 242, + "target": { + "node": 127, + "path": "rotation" + } + }, + { + "sampler": 243, + "target": { + "node": 145, + "path": "translation" + } + }, + { + "sampler": 244, + "target": { + "node": 145, + "path": "scale" + } + }, + { + "sampler": 245, + "target": { + "node": 145, + "path": "rotation" + } + }, + { + "sampler": 246, + "target": { + "node": 144, + "path": "translation" + } + }, + { + "sampler": 247, + "target": { + "node": 144, + "path": "scale" + } + }, + { + "sampler": 248, + "target": { + "node": 144, + "path": "rotation" + } + }, + { + "sampler": 249, + "target": { + "node": 147, + "path": "translation" + } + }, + { + "sampler": 250, + "target": { + "node": 147, + "path": "scale" + } + }, + { + "sampler": 251, + "target": { + "node": 147, + "path": "rotation" + } + }, + { + "sampler": 252, + "target": { + "node": 143, + "path": "translation" + } + }, + { + "sampler": 253, + "target": { + "node": 143, + "path": "scale" + } + }, + { + "sampler": 254, + "target": { + "node": 143, + "path": "rotation" + } + }, + { + "sampler": 255, + "target": { + "node": 149, + "path": "translation" + } + }, + { + "sampler": 256, + "target": { + "node": 149, + "path": "scale" + } + }, + { + "sampler": 257, + "target": { + "node": 149, + "path": "rotation" + } + }, + { + "sampler": 258, + "target": { + "node": 142, + "path": "translation" + } + }, + { + "sampler": 259, + "target": { + "node": 142, + "path": "scale" + } + }, + { + "sampler": 260, + "target": { + "node": 142, + "path": "rotation" + } + }, + { + "sampler": 261, + "target": { + "node": 151, + "path": "translation" + } + }, + { + "sampler": 262, + "target": { + "node": 151, + "path": "scale" + } + }, + { + "sampler": 263, + "target": { + "node": 151, + "path": "rotation" + } + }, + { + "sampler": 264, + "target": { + "node": 153, + "path": "translation" + } + }, + { + "sampler": 265, + "target": { + "node": 153, + "path": "scale" + } + }, + { + "sampler": 266, + "target": { + "node": 153, + "path": "rotation" + } + }, + { + "sampler": 267, + "target": { + "node": 141, + "path": "translation" + } + }, + { + "sampler": 268, + "target": { + "node": 141, + "path": "scale" + } + }, + { + "sampler": 269, + "target": { + "node": 141, + "path": "rotation" + } + }, + { + "sampler": 270, + "target": { + "node": 159, + "path": "translation" + } + }, + { + "sampler": 271, + "target": { + "node": 159, + "path": "scale" + } + }, + { + "sampler": 272, + "target": { + "node": 159, + "path": "rotation" + } + }, + { + "sampler": 273, + "target": { + "node": 158, + "path": "translation" + } + }, + { + "sampler": 274, + "target": { + "node": 158, + "path": "scale" + } + }, + { + "sampler": 275, + "target": { + "node": 158, + "path": "rotation" + } + }, + { + "sampler": 276, + "target": { + "node": 161, + "path": "translation" + } + }, + { + "sampler": 277, + "target": { + "node": 161, + "path": "scale" + } + }, + { + "sampler": 278, + "target": { + "node": 161, + "path": "rotation" + } + }, + { + "sampler": 279, + "target": { + "node": 157, + "path": "translation" + } + }, + { + "sampler": 280, + "target": { + "node": 157, + "path": "scale" + } + }, + { + "sampler": 281, + "target": { + "node": 157, + "path": "rotation" + } + }, + { + "sampler": 282, + "target": { + "node": 163, + "path": "translation" + } + }, + { + "sampler": 283, + "target": { + "node": 163, + "path": "scale" + } + }, + { + "sampler": 284, + "target": { + "node": 163, + "path": "rotation" + } + }, + { + "sampler": 285, + "target": { + "node": 156, + "path": "translation" + } + }, + { + "sampler": 286, + "target": { + "node": 156, + "path": "scale" + } + }, + { + "sampler": 287, + "target": { + "node": 156, + "path": "rotation" + } + }, + { + "sampler": 288, + "target": { + "node": 165, + "path": "translation" + } + }, + { + "sampler": 289, + "target": { + "node": 165, + "path": "scale" + } + }, + { + "sampler": 290, + "target": { + "node": 165, + "path": "rotation" + } + }, + { + "sampler": 291, + "target": { + "node": 167, + "path": "translation" + } + }, + { + "sampler": 292, + "target": { + "node": 167, + "path": "scale" + } + }, + { + "sampler": 293, + "target": { + "node": 167, + "path": "rotation" + } + }, + { + "sampler": 294, + "target": { + "node": 155, + "path": "translation" + } + }, + { + "sampler": 295, + "target": { + "node": 155, + "path": "scale" + } + }, + { + "sampler": 296, + "target": { + "node": 155, + "path": "rotation" + } + }, + { + "sampler": 297, + "target": { + "node": 169, + "path": "translation" + } + }, + { + "sampler": 298, + "target": { + "node": 169, + "path": "scale" + } + }, + { + "sampler": 299, + "target": { + "node": 169, + "path": "rotation" + } + }, + { + "sampler": 300, + "target": { + "node": 101, + "path": "translation" + } + }, + { + "sampler": 301, + "target": { + "node": 101, + "path": "scale" + } + }, + { + "sampler": 302, + "target": { + "node": 101, + "path": "rotation" + } + }, + { + "sampler": 303, + "target": { + "node": 171, + "path": "translation" + } + }, + { + "sampler": 304, + "target": { + "node": 171, + "path": "scale" + } + }, + { + "sampler": 305, + "target": { + "node": 171, + "path": "rotation" + } + }, + { + "sampler": 306, + "target": { + "node": 175, + "path": "translation" + } + }, + { + "sampler": 307, + "target": { + "node": 175, + "path": "scale" + } + }, + { + "sampler": 308, + "target": { + "node": 175, + "path": "rotation" + } + }, + { + "sampler": 309, + "target": { + "node": 174, + "path": "translation" + } + }, + { + "sampler": 310, + "target": { + "node": 174, + "path": "scale" + } + }, + { + "sampler": 311, + "target": { + "node": 174, + "path": "rotation" + } + }, + { + "sampler": 312, + "target": { + "node": 173, + "path": "translation" + } + }, + { + "sampler": 313, + "target": { + "node": 173, + "path": "scale" + } + }, + { + "sampler": 314, + "target": { + "node": 173, + "path": "rotation" + } + }, + { + "sampler": 315, + "target": { + "node": 100, + "path": "translation" + } + }, + { + "sampler": 316, + "target": { + "node": 100, + "path": "scale" + } + }, + { + "sampler": 317, + "target": { + "node": 100, + "path": "rotation" + } + }, + { + "sampler": 318, + "target": { + "node": 177, + "path": "translation" + } + }, + { + "sampler": 319, + "target": { + "node": 177, + "path": "scale" + } + }, + { + "sampler": 320, + "target": { + "node": 177, + "path": "rotation" + } + }, + { + "sampler": 321, + "target": { + "node": 99, + "path": "translation" + } + }, + { + "sampler": 322, + "target": { + "node": 99, + "path": "scale" + } + }, + { + "sampler": 323, + "target": { + "node": 99, + "path": "rotation" + } + }, + { + "sampler": 324, + "target": { + "node": 179, + "path": "translation" + } + }, + { + "sampler": 325, + "target": { + "node": 179, + "path": "scale" + } + }, + { + "sampler": 326, + "target": { + "node": 179, + "path": "rotation" + } + }, + { + "sampler": 327, + "target": { + "node": 98, + "path": "translation" + } + }, + { + "sampler": 328, + "target": { + "node": 98, + "path": "scale" + } + }, + { + "sampler": 329, + "target": { + "node": 98, + "path": "rotation" + } + }, + { + "sampler": 330, + "target": { + "node": 181, + "path": "translation" + } + }, + { + "sampler": 331, + "target": { + "node": 181, + "path": "scale" + } + }, + { + "sampler": 332, + "target": { + "node": 181, + "path": "rotation" + } + }, + { + "sampler": 333, + "target": { + "node": 11, + "path": "translation" + } + }, + { + "sampler": 334, + "target": { + "node": 11, + "path": "scale" + } + }, + { + "sampler": 335, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 336, + "target": { + "node": 183, + "path": "translation" + } + }, + { + "sampler": 337, + "target": { + "node": 183, + "path": "scale" + } + }, + { + "sampler": 338, + "target": { + "node": 183, + "path": "rotation" + } + }, + { + "sampler": 339, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 340, + "target": { + "node": 10, + "path": "scale" + } + }, + { + "sampler": 341, + "target": { + "node": 10, + "path": "rotation" + } + }, + { + "sampler": 342, + "target": { + "node": 189, + "path": "translation" + } + }, + { + "sampler": 343, + "target": { + "node": 189, + "path": "scale" + } + }, + { + "sampler": 344, + "target": { + "node": 189, + "path": "rotation" + } + }, + { + "sampler": 345, + "target": { + "node": 188, + "path": "translation" + } + }, + { + "sampler": 346, + "target": { + "node": 188, + "path": "scale" + } + }, + { + "sampler": 347, + "target": { + "node": 188, + "path": "rotation" + } + }, + { + "sampler": 348, + "target": { + "node": 191, + "path": "translation" + } + }, + { + "sampler": 349, + "target": { + "node": 191, + "path": "scale" + } + }, + { + "sampler": 350, + "target": { + "node": 191, + "path": "rotation" + } + }, + { + "sampler": 351, + "target": { + "node": 187, + "path": "translation" + } + }, + { + "sampler": 352, + "target": { + "node": 187, + "path": "scale" + } + }, + { + "sampler": 353, + "target": { + "node": 187, + "path": "rotation" + } + }, + { + "sampler": 354, + "target": { + "node": 193, + "path": "translation" + } + }, + { + "sampler": 355, + "target": { + "node": 193, + "path": "scale" + } + }, + { + "sampler": 356, + "target": { + "node": 193, + "path": "rotation" + } + }, + { + "sampler": 357, + "target": { + "node": 197, + "path": "translation" + } + }, + { + "sampler": 358, + "target": { + "node": 197, + "path": "scale" + } + }, + { + "sampler": 359, + "target": { + "node": 197, + "path": "rotation" + } + }, + { + "sampler": 360, + "target": { + "node": 196, + "path": "translation" + } + }, + { + "sampler": 361, + "target": { + "node": 196, + "path": "scale" + } + }, + { + "sampler": 362, + "target": { + "node": 196, + "path": "rotation" + } + }, + { + "sampler": 363, + "target": { + "node": 195, + "path": "translation" + } + }, + { + "sampler": 364, + "target": { + "node": 195, + "path": "scale" + } + }, + { + "sampler": 365, + "target": { + "node": 195, + "path": "rotation" + } + }, + { + "sampler": 366, + "target": { + "node": 186, + "path": "translation" + } + }, + { + "sampler": 367, + "target": { + "node": 186, + "path": "scale" + } + }, + { + "sampler": 368, + "target": { + "node": 186, + "path": "rotation" + } + }, + { + "sampler": 369, + "target": { + "node": 199, + "path": "translation" + } + }, + { + "sampler": 370, + "target": { + "node": 199, + "path": "scale" + } + }, + { + "sampler": 371, + "target": { + "node": 199, + "path": "rotation" + } + }, + { + "sampler": 372, + "target": { + "node": 185, + "path": "translation" + } + }, + { + "sampler": 373, + "target": { + "node": 185, + "path": "scale" + } + }, + { + "sampler": 374, + "target": { + "node": 185, + "path": "rotation" + } + }, + { + "sampler": 375, + "target": { + "node": 205, + "path": "translation" + } + }, + { + "sampler": 376, + "target": { + "node": 205, + "path": "scale" + } + }, + { + "sampler": 377, + "target": { + "node": 205, + "path": "rotation" + } + }, + { + "sampler": 378, + "target": { + "node": 204, + "path": "translation" + } + }, + { + "sampler": 379, + "target": { + "node": 204, + "path": "scale" + } + }, + { + "sampler": 380, + "target": { + "node": 204, + "path": "rotation" + } + }, + { + "sampler": 381, + "target": { + "node": 207, + "path": "translation" + } + }, + { + "sampler": 382, + "target": { + "node": 207, + "path": "scale" + } + }, + { + "sampler": 383, + "target": { + "node": 207, + "path": "rotation" + } + }, + { + "sampler": 384, + "target": { + "node": 203, + "path": "translation" + } + }, + { + "sampler": 385, + "target": { + "node": 203, + "path": "scale" + } + }, + { + "sampler": 386, + "target": { + "node": 203, + "path": "rotation" + } + }, + { + "sampler": 387, + "target": { + "node": 209, + "path": "translation" + } + }, + { + "sampler": 388, + "target": { + "node": 209, + "path": "scale" + } + }, + { + "sampler": 389, + "target": { + "node": 209, + "path": "rotation" + } + }, + { + "sampler": 390, + "target": { + "node": 213, + "path": "translation" + } + }, + { + "sampler": 391, + "target": { + "node": 213, + "path": "scale" + } + }, + { + "sampler": 392, + "target": { + "node": 213, + "path": "rotation" + } + }, + { + "sampler": 393, + "target": { + "node": 212, + "path": "translation" + } + }, + { + "sampler": 394, + "target": { + "node": 212, + "path": "scale" + } + }, + { + "sampler": 395, + "target": { + "node": 212, + "path": "rotation" + } + }, + { + "sampler": 396, + "target": { + "node": 211, + "path": "translation" + } + }, + { + "sampler": 397, + "target": { + "node": 211, + "path": "scale" + } + }, + { + "sampler": 398, + "target": { + "node": 211, + "path": "rotation" + } + }, + { + "sampler": 399, + "target": { + "node": 202, + "path": "translation" + } + }, + { + "sampler": 400, + "target": { + "node": 202, + "path": "scale" + } + }, + { + "sampler": 401, + "target": { + "node": 202, + "path": "rotation" + } + }, + { + "sampler": 402, + "target": { + "node": 215, + "path": "translation" + } + }, + { + "sampler": 403, + "target": { + "node": 215, + "path": "scale" + } + }, + { + "sampler": 404, + "target": { + "node": 215, + "path": "rotation" + } + }, + { + "sampler": 405, + "target": { + "node": 201, + "path": "translation" + } + }, + { + "sampler": 406, + "target": { + "node": 201, + "path": "scale" + } + }, + { + "sampler": 407, + "target": { + "node": 201, + "path": "rotation" + } + }, + { + "sampler": 408, + "target": { + "node": 217, + "path": "translation" + } + }, + { + "sampler": 409, + "target": { + "node": 217, + "path": "scale" + } + }, + { + "sampler": 410, + "target": { + "node": 217, + "path": "rotation" + } + }, + { + "sampler": 411, + "target": { + "node": 9, + "path": "translation" + } + }, + { + "sampler": 412, + "target": { + "node": 9, + "path": "scale" + } + }, + { + "sampler": 413, + "target": { + "node": 9, + "path": "rotation" + } + }, + { + "sampler": 414, + "target": { + "node": 220, + "path": "translation" + } + }, + { + "sampler": 415, + "target": { + "node": 220, + "path": "scale" + } + }, + { + "sampler": 416, + "target": { + "node": 220, + "path": "rotation" + } + }, + { + "sampler": 417, + "target": { + "node": 219, + "path": "translation" + } + }, + { + "sampler": 418, + "target": { + "node": 219, + "path": "scale" + } + }, + { + "sampler": 419, + "target": { + "node": 219, + "path": "rotation" + } + }, + { + "sampler": 420, + "target": { + "node": 223, + "path": "translation" + } + }, + { + "sampler": 421, + "target": { + "node": 223, + "path": "scale" + } + }, + { + "sampler": 422, + "target": { + "node": 223, + "path": "rotation" + } + }, + { + "sampler": 423, + "target": { + "node": 222, + "path": "translation" + } + }, + { + "sampler": 424, + "target": { + "node": 222, + "path": "scale" + } + }, + { + "sampler": 425, + "target": { + "node": 222, + "path": "rotation" + } + }, + { + "sampler": 426, + "target": { + "node": 225, + "path": "translation" + } + }, + { + "sampler": 427, + "target": { + "node": 225, + "path": "scale" + } + }, + { + "sampler": 428, + "target": { + "node": 225, + "path": "rotation" + } + }, + { + "sampler": 429, + "target": { + "node": 234, + "path": "translation" + } + }, + { + "sampler": 430, + "target": { + "node": 234, + "path": "scale" + } + }, + { + "sampler": 431, + "target": { + "node": 234, + "path": "rotation" + } + }, + { + "sampler": 432, + "target": { + "node": 236, + "path": "translation" + } + }, + { + "sampler": 433, + "target": { + "node": 236, + "path": "scale" + } + }, + { + "sampler": 434, + "target": { + "node": 236, + "path": "rotation" + } + }, + { + "sampler": 435, + "target": { + "node": 233, + "path": "translation" + } + }, + { + "sampler": 436, + "target": { + "node": 233, + "path": "scale" + } + }, + { + "sampler": 437, + "target": { + "node": 233, + "path": "rotation" + } + }, + { + "sampler": 438, + "target": { + "node": 238, + "path": "translation" + } + }, + { + "sampler": 439, + "target": { + "node": 238, + "path": "scale" + } + }, + { + "sampler": 440, + "target": { + "node": 238, + "path": "rotation" + } + }, + { + "sampler": 441, + "target": { + "node": 232, + "path": "translation" + } + }, + { + "sampler": 442, + "target": { + "node": 232, + "path": "scale" + } + }, + { + "sampler": 443, + "target": { + "node": 232, + "path": "rotation" + } + }, + { + "sampler": 444, + "target": { + "node": 240, + "path": "translation" + } + }, + { + "sampler": 445, + "target": { + "node": 240, + "path": "scale" + } + }, + { + "sampler": 446, + "target": { + "node": 240, + "path": "rotation" + } + }, + { + "sampler": 447, + "target": { + "node": 231, + "path": "translation" + } + }, + { + "sampler": 448, + "target": { + "node": 231, + "path": "scale" + } + }, + { + "sampler": 449, + "target": { + "node": 231, + "path": "rotation" + } + }, + { + "sampler": 450, + "target": { + "node": 230, + "path": "translation" + } + }, + { + "sampler": 451, + "target": { + "node": 230, + "path": "scale" + } + }, + { + "sampler": 452, + "target": { + "node": 230, + "path": "rotation" + } + }, + { + "sampler": 453, + "target": { + "node": 246, + "path": "translation" + } + }, + { + "sampler": 454, + "target": { + "node": 246, + "path": "scale" + } + }, + { + "sampler": 455, + "target": { + "node": 246, + "path": "rotation" + } + }, + { + "sampler": 456, + "target": { + "node": 248, + "path": "translation" + } + }, + { + "sampler": 457, + "target": { + "node": 248, + "path": "scale" + } + }, + { + "sampler": 458, + "target": { + "node": 248, + "path": "rotation" + } + }, + { + "sampler": 459, + "target": { + "node": 245, + "path": "translation" + } + }, + { + "sampler": 460, + "target": { + "node": 245, + "path": "scale" + } + }, + { + "sampler": 461, + "target": { + "node": 245, + "path": "rotation" + } + }, + { + "sampler": 462, + "target": { + "node": 250, + "path": "translation" + } + }, + { + "sampler": 463, + "target": { + "node": 250, + "path": "scale" + } + }, + { + "sampler": 464, + "target": { + "node": 250, + "path": "rotation" + } + }, + { + "sampler": 465, + "target": { + "node": 244, + "path": "translation" + } + }, + { + "sampler": 466, + "target": { + "node": 244, + "path": "scale" + } + }, + { + "sampler": 467, + "target": { + "node": 244, + "path": "rotation" + } + }, + { + "sampler": 468, + "target": { + "node": 252, + "path": "translation" + } + }, + { + "sampler": 469, + "target": { + "node": 252, + "path": "scale" + } + }, + { + "sampler": 470, + "target": { + "node": 252, + "path": "rotation" + } + }, + { + "sampler": 471, + "target": { + "node": 243, + "path": "translation" + } + }, + { + "sampler": 472, + "target": { + "node": 243, + "path": "scale" + } + }, + { + "sampler": 473, + "target": { + "node": 243, + "path": "rotation" + } + }, + { + "sampler": 474, + "target": { + "node": 242, + "path": "translation" + } + }, + { + "sampler": 475, + "target": { + "node": 242, + "path": "scale" + } + }, + { + "sampler": 476, + "target": { + "node": 242, + "path": "rotation" + } + }, + { + "sampler": 477, + "target": { + "node": 229, + "path": "translation" + } + }, + { + "sampler": 478, + "target": { + "node": 229, + "path": "scale" + } + }, + { + "sampler": 479, + "target": { + "node": 229, + "path": "rotation" + } + }, + { + "sampler": 480, + "target": { + "node": 228, + "path": "translation" + } + }, + { + "sampler": 481, + "target": { + "node": 228, + "path": "scale" + } + }, + { + "sampler": 482, + "target": { + "node": 228, + "path": "rotation" + } + }, + { + "sampler": 483, + "target": { + "node": 256, + "path": "translation" + } + }, + { + "sampler": 484, + "target": { + "node": 256, + "path": "scale" + } + }, + { + "sampler": 485, + "target": { + "node": 256, + "path": "rotation" + } + }, + { + "sampler": 486, + "target": { + "node": 255, + "path": "translation" + } + }, + { + "sampler": 487, + "target": { + "node": 255, + "path": "scale" + } + }, + { + "sampler": 488, + "target": { + "node": 255, + "path": "rotation" + } + }, + { + "sampler": 489, + "target": { + "node": 254, + "path": "translation" + } + }, + { + "sampler": 490, + "target": { + "node": 254, + "path": "scale" + } + }, + { + "sampler": 491, + "target": { + "node": 254, + "path": "rotation" + } + }, + { + "sampler": 492, + "target": { + "node": 227, + "path": "translation" + } + }, + { + "sampler": 493, + "target": { + "node": 227, + "path": "scale" + } + }, + { + "sampler": 494, + "target": { + "node": 227, + "path": "rotation" + } + }, + { + "sampler": 495, + "target": { + "node": 259, + "path": "translation" + } + }, + { + "sampler": 496, + "target": { + "node": 259, + "path": "scale" + } + }, + { + "sampler": 497, + "target": { + "node": 259, + "path": "rotation" + } + }, + { + "sampler": 498, + "target": { + "node": 258, + "path": "translation" + } + }, + { + "sampler": 499, + "target": { + "node": 258, + "path": "scale" + } + }, + { + "sampler": 500, + "target": { + "node": 258, + "path": "rotation" + } + }, + { + "sampler": 501, + "target": { + "node": 262, + "path": "translation" + } + }, + { + "sampler": 502, + "target": { + "node": 262, + "path": "scale" + } + }, + { + "sampler": 503, + "target": { + "node": 262, + "path": "rotation" + } + }, + { + "sampler": 504, + "target": { + "node": 261, + "path": "translation" + } + }, + { + "sampler": 505, + "target": { + "node": 261, + "path": "scale" + } + }, + { + "sampler": 506, + "target": { + "node": 261, + "path": "rotation" + } + }, + { + "sampler": 507, + "target": { + "node": 8, + "path": "translation" + } + }, + { + "sampler": 508, + "target": { + "node": 8, + "path": "scale" + } + }, + { + "sampler": 509, + "target": { + "node": 8, + "path": "rotation" + } + }, + { + "sampler": 510, + "target": { + "node": 5, + "path": "translation" + } + }, + { + "sampler": 511, + "target": { + "node": 5, + "path": "scale" + } + }, + { + "sampler": 512, + "target": { + "node": 5, + "path": "rotation" + } + } + ], + "name": "rig_dragon|Idle", + "samplers": [ + { + "input": 5157, + "interpolation": "LINEAR", + "output": 5158 + }, + { + "input": 5159, + "interpolation": "LINEAR", + "output": 5160 + }, + { + "input": 5161, + "interpolation": "LINEAR", + "output": 5162 + }, + { + "input": 5163, + "interpolation": "LINEAR", + "output": 5164 + }, + { + "input": 5165, + "interpolation": "LINEAR", + "output": 5166 + }, + { + "input": 5167, + "interpolation": "LINEAR", + "output": 5168 + }, + { + "input": 5169, + "interpolation": "LINEAR", + "output": 5170 + }, + { + "input": 5171, + "interpolation": "LINEAR", + "output": 5172 + }, + { + "input": 5173, + "interpolation": "LINEAR", + "output": 5174 + }, + { + "input": 5175, + "interpolation": "LINEAR", + "output": 5176 + }, + { + "input": 5177, + "interpolation": "LINEAR", + "output": 5178 + }, + { + "input": 5179, + "interpolation": "LINEAR", + "output": 5180 + }, + { + "input": 5181, + "interpolation": "LINEAR", + "output": 5182 + }, + { + "input": 5183, + "interpolation": "LINEAR", + "output": 5184 + }, + { + "input": 5185, + "interpolation": "LINEAR", + "output": 5186 + }, + { + "input": 5187, + "interpolation": "LINEAR", + "output": 5188 + }, + { + "input": 5189, + "interpolation": "LINEAR", + "output": 5190 + }, + { + "input": 5191, + "interpolation": "LINEAR", + "output": 5192 + }, + { + "input": 5193, + "interpolation": "LINEAR", + "output": 5194 + }, + { + "input": 5195, + "interpolation": "LINEAR", + "output": 5196 + }, + { + "input": 5197, + "interpolation": "LINEAR", + "output": 5198 + }, + { + "input": 5199, + "interpolation": "LINEAR", + "output": 5200 + }, + { + "input": 5201, + "interpolation": "LINEAR", + "output": 5202 + }, + { + "input": 5203, + "interpolation": "LINEAR", + "output": 5204 + }, + { + "input": 5205, + "interpolation": "LINEAR", + "output": 5206 + }, + { + "input": 5207, + "interpolation": "LINEAR", + "output": 5208 + }, + { + "input": 5209, + "interpolation": "LINEAR", + "output": 5210 + }, + { + "input": 5211, + "interpolation": "LINEAR", + "output": 5212 + }, + { + "input": 5213, + "interpolation": "LINEAR", + "output": 5214 + }, + { + "input": 5215, + "interpolation": "LINEAR", + "output": 5216 + }, + { + "input": 5217, + "interpolation": "LINEAR", + "output": 5218 + }, + { + "input": 5219, + "interpolation": "LINEAR", + "output": 5220 + }, + { + "input": 5221, + "interpolation": "LINEAR", + "output": 5222 + }, + { + "input": 5223, + "interpolation": "LINEAR", + "output": 5224 + }, + { + "input": 5225, + "interpolation": "LINEAR", + "output": 5226 + }, + { + "input": 5227, + "interpolation": "LINEAR", + "output": 5228 + }, + { + "input": 5229, + "interpolation": "LINEAR", + "output": 5230 + }, + { + "input": 5231, + "interpolation": "LINEAR", + "output": 5232 + }, + { + "input": 5233, + "interpolation": "LINEAR", + "output": 5234 + }, + { + "input": 5235, + "interpolation": "LINEAR", + "output": 5236 + }, + { + "input": 5237, + "interpolation": "LINEAR", + "output": 5238 + }, + { + "input": 5239, + "interpolation": "LINEAR", + "output": 5240 + }, + { + "input": 5241, + "interpolation": "LINEAR", + "output": 5242 + }, + { + "input": 5243, + "interpolation": "LINEAR", + "output": 5244 + }, + { + "input": 5245, + "interpolation": "LINEAR", + "output": 5246 + }, + { + "input": 5247, + "interpolation": "LINEAR", + "output": 5248 + }, + { + "input": 5249, + "interpolation": "LINEAR", + "output": 5250 + }, + { + "input": 5251, + "interpolation": "LINEAR", + "output": 5252 + }, + { + "input": 5253, + "interpolation": "LINEAR", + "output": 5254 + }, + { + "input": 5255, + "interpolation": "LINEAR", + "output": 5256 + }, + { + "input": 5257, + "interpolation": "LINEAR", + "output": 5258 + }, + { + "input": 5259, + "interpolation": "LINEAR", + "output": 5260 + }, + { + "input": 5261, + "interpolation": "LINEAR", + "output": 5262 + }, + { + "input": 5263, + "interpolation": "LINEAR", + "output": 5264 + }, + { + "input": 5265, + "interpolation": "LINEAR", + "output": 5266 + }, + { + "input": 5267, + "interpolation": "LINEAR", + "output": 5268 + }, + { + "input": 5269, + "interpolation": "LINEAR", + "output": 5270 + }, + { + "input": 5271, + "interpolation": "LINEAR", + "output": 5272 + }, + { + "input": 5273, + "interpolation": "LINEAR", + "output": 5274 + }, + { + "input": 5275, + "interpolation": "LINEAR", + "output": 5276 + }, + { + "input": 5277, + "interpolation": "LINEAR", + "output": 5278 + }, + { + "input": 5279, + "interpolation": "LINEAR", + "output": 5280 + }, + { + "input": 5281, + "interpolation": "LINEAR", + "output": 5282 + }, + { + "input": 5283, + "interpolation": "LINEAR", + "output": 5284 + }, + { + "input": 5285, + "interpolation": "LINEAR", + "output": 5286 + }, + { + "input": 5287, + "interpolation": "LINEAR", + "output": 5288 + }, + { + "input": 5289, + "interpolation": "LINEAR", + "output": 5290 + }, + { + "input": 5291, + "interpolation": "LINEAR", + "output": 5292 + }, + { + "input": 5293, + "interpolation": "LINEAR", + "output": 5294 + }, + { + "input": 5295, + "interpolation": "LINEAR", + "output": 5296 + }, + { + "input": 5297, + "interpolation": "LINEAR", + "output": 5298 + }, + { + "input": 5299, + "interpolation": "LINEAR", + "output": 5300 + }, + { + "input": 5301, + "interpolation": "LINEAR", + "output": 5302 + }, + { + "input": 5303, + "interpolation": "LINEAR", + "output": 5304 + }, + { + "input": 5305, + "interpolation": "LINEAR", + "output": 5306 + }, + { + "input": 5307, + "interpolation": "LINEAR", + "output": 5308 + }, + { + "input": 5309, + "interpolation": "LINEAR", + "output": 5310 + }, + { + "input": 5311, + "interpolation": "LINEAR", + "output": 5312 + }, + { + "input": 5313, + "interpolation": "LINEAR", + "output": 5314 + }, + { + "input": 5315, + "interpolation": "LINEAR", + "output": 5316 + }, + { + "input": 5317, + "interpolation": "LINEAR", + "output": 5318 + }, + { + "input": 5319, + "interpolation": "LINEAR", + "output": 5320 + }, + { + "input": 5321, + "interpolation": "LINEAR", + "output": 5322 + }, + { + "input": 5323, + "interpolation": "LINEAR", + "output": 5324 + }, + { + "input": 5325, + "interpolation": "LINEAR", + "output": 5326 + }, + { + "input": 5327, + "interpolation": "LINEAR", + "output": 5328 + }, + { + "input": 5329, + "interpolation": "LINEAR", + "output": 5330 + }, + { + "input": 5331, + "interpolation": "LINEAR", + "output": 5332 + }, + { + "input": 5333, + "interpolation": "LINEAR", + "output": 5334 + }, + { + "input": 5335, + "interpolation": "LINEAR", + "output": 5336 + }, + { + "input": 5337, + "interpolation": "LINEAR", + "output": 5338 + }, + { + "input": 5339, + "interpolation": "LINEAR", + "output": 5340 + }, + { + "input": 5341, + "interpolation": "LINEAR", + "output": 5342 + }, + { + "input": 5343, + "interpolation": "LINEAR", + "output": 5344 + }, + { + "input": 5345, + "interpolation": "LINEAR", + "output": 5346 + }, + { + "input": 5347, + "interpolation": "LINEAR", + "output": 5348 + }, + { + "input": 5349, + "interpolation": "LINEAR", + "output": 5350 + }, + { + "input": 5351, + "interpolation": "LINEAR", + "output": 5352 + }, + { + "input": 5353, + "interpolation": "LINEAR", + "output": 5354 + }, + { + "input": 5355, + "interpolation": "LINEAR", + "output": 5356 + }, + { + "input": 5357, + "interpolation": "LINEAR", + "output": 5358 + }, + { + "input": 5359, + "interpolation": "LINEAR", + "output": 5360 + }, + { + "input": 5361, + "interpolation": "LINEAR", + "output": 5362 + }, + { + "input": 5363, + "interpolation": "LINEAR", + "output": 5364 + }, + { + "input": 5365, + "interpolation": "LINEAR", + "output": 5366 + }, + { + "input": 5367, + "interpolation": "LINEAR", + "output": 5368 + }, + { + "input": 5369, + "interpolation": "LINEAR", + "output": 5370 + }, + { + "input": 5371, + "interpolation": "LINEAR", + "output": 5372 + }, + { + "input": 5373, + "interpolation": "LINEAR", + "output": 5374 + }, + { + "input": 5375, + "interpolation": "LINEAR", + "output": 5376 + }, + { + "input": 5377, + "interpolation": "LINEAR", + "output": 5378 + }, + { + "input": 5379, + "interpolation": "LINEAR", + "output": 5380 + }, + { + "input": 5381, + "interpolation": "LINEAR", + "output": 5382 + }, + { + "input": 5383, + "interpolation": "LINEAR", + "output": 5384 + }, + { + "input": 5385, + "interpolation": "LINEAR", + "output": 5386 + }, + { + "input": 5387, + "interpolation": "LINEAR", + "output": 5388 + }, + { + "input": 5389, + "interpolation": "LINEAR", + "output": 5390 + }, + { + "input": 5391, + "interpolation": "LINEAR", + "output": 5392 + }, + { + "input": 5393, + "interpolation": "LINEAR", + "output": 5394 + }, + { + "input": 5395, + "interpolation": "LINEAR", + "output": 5396 + }, + { + "input": 5397, + "interpolation": "LINEAR", + "output": 5398 + }, + { + "input": 5399, + "interpolation": "LINEAR", + "output": 5400 + }, + { + "input": 5401, + "interpolation": "LINEAR", + "output": 5402 + }, + { + "input": 5403, + "interpolation": "LINEAR", + "output": 5404 + }, + { + "input": 5405, + "interpolation": "LINEAR", + "output": 5406 + }, + { + "input": 5407, + "interpolation": "LINEAR", + "output": 5408 + }, + { + "input": 5409, + "interpolation": "LINEAR", + "output": 5410 + }, + { + "input": 5411, + "interpolation": "LINEAR", + "output": 5412 + }, + { + "input": 5413, + "interpolation": "LINEAR", + "output": 5414 + }, + { + "input": 5415, + "interpolation": "LINEAR", + "output": 5416 + }, + { + "input": 5417, + "interpolation": "LINEAR", + "output": 5418 + }, + { + "input": 5419, + "interpolation": "LINEAR", + "output": 5420 + }, + { + "input": 5421, + "interpolation": "LINEAR", + "output": 5422 + }, + { + "input": 5423, + "interpolation": "LINEAR", + "output": 5424 + }, + { + "input": 5425, + "interpolation": "LINEAR", + "output": 5426 + }, + { + "input": 5427, + "interpolation": "LINEAR", + "output": 5428 + }, + { + "input": 5429, + "interpolation": "LINEAR", + "output": 5430 + }, + { + "input": 5431, + "interpolation": "LINEAR", + "output": 5432 + }, + { + "input": 5433, + "interpolation": "LINEAR", + "output": 5434 + }, + { + "input": 5435, + "interpolation": "LINEAR", + "output": 5436 + }, + { + "input": 5437, + "interpolation": "LINEAR", + "output": 5438 + }, + { + "input": 5439, + "interpolation": "LINEAR", + "output": 5440 + }, + { + "input": 5441, + "interpolation": "LINEAR", + "output": 5442 + }, + { + "input": 5443, + "interpolation": "LINEAR", + "output": 5444 + }, + { + "input": 5445, + "interpolation": "LINEAR", + "output": 5446 + }, + { + "input": 5447, + "interpolation": "LINEAR", + "output": 5448 + }, + { + "input": 5449, + "interpolation": "LINEAR", + "output": 5450 + }, + { + "input": 5451, + "interpolation": "LINEAR", + "output": 5452 + }, + { + "input": 5453, + "interpolation": "LINEAR", + "output": 5454 + }, + { + "input": 5455, + "interpolation": "LINEAR", + "output": 5456 + }, + { + "input": 5457, + "interpolation": "LINEAR", + "output": 5458 + }, + { + "input": 5459, + "interpolation": "LINEAR", + "output": 5460 + }, + { + "input": 5461, + "interpolation": "LINEAR", + "output": 5462 + }, + { + "input": 5463, + "interpolation": "LINEAR", + "output": 5464 + }, + { + "input": 5465, + "interpolation": "LINEAR", + "output": 5466 + }, + { + "input": 5467, + "interpolation": "LINEAR", + "output": 5468 + }, + { + "input": 5469, + "interpolation": "LINEAR", + "output": 5470 + }, + { + "input": 5471, + "interpolation": "LINEAR", + "output": 5472 + }, + { + "input": 5473, + "interpolation": "LINEAR", + "output": 5474 + }, + { + "input": 5475, + "interpolation": "LINEAR", + "output": 5476 + }, + { + "input": 5477, + "interpolation": "LINEAR", + "output": 5478 + }, + { + "input": 5479, + "interpolation": "LINEAR", + "output": 5480 + }, + { + "input": 5481, + "interpolation": "LINEAR", + "output": 5482 + }, + { + "input": 5483, + "interpolation": "LINEAR", + "output": 5484 + }, + { + "input": 5485, + "interpolation": "LINEAR", + "output": 5486 + }, + { + "input": 5487, + "interpolation": "LINEAR", + "output": 5488 + }, + { + "input": 5489, + "interpolation": "LINEAR", + "output": 5490 + }, + { + "input": 5491, + "interpolation": "LINEAR", + "output": 5492 + }, + { + "input": 5493, + "interpolation": "LINEAR", + "output": 5494 + }, + { + "input": 5495, + "interpolation": "LINEAR", + "output": 5496 + }, + { + "input": 5497, + "interpolation": "LINEAR", + "output": 5498 + }, + { + "input": 5499, + "interpolation": "LINEAR", + "output": 5500 + }, + { + "input": 5501, + "interpolation": "LINEAR", + "output": 5502 + }, + { + "input": 5503, + "interpolation": "LINEAR", + "output": 5504 + }, + { + "input": 5505, + "interpolation": "LINEAR", + "output": 5506 + }, + { + "input": 5507, + "interpolation": "LINEAR", + "output": 5508 + }, + { + "input": 5509, + "interpolation": "LINEAR", + "output": 5510 + }, + { + "input": 5511, + "interpolation": "LINEAR", + "output": 5512 + }, + { + "input": 5513, + "interpolation": "LINEAR", + "output": 5514 + }, + { + "input": 5515, + "interpolation": "LINEAR", + "output": 5516 + }, + { + "input": 5517, + "interpolation": "LINEAR", + "output": 5518 + }, + { + "input": 5519, + "interpolation": "LINEAR", + "output": 5520 + }, + { + "input": 5521, + "interpolation": "LINEAR", + "output": 5522 + }, + { + "input": 5523, + "interpolation": "LINEAR", + "output": 5524 + }, + { + "input": 5525, + "interpolation": "LINEAR", + "output": 5526 + }, + { + "input": 5527, + "interpolation": "LINEAR", + "output": 5528 + }, + { + "input": 5529, + "interpolation": "LINEAR", + "output": 5530 + }, + { + "input": 5531, + "interpolation": "LINEAR", + "output": 5532 + }, + { + "input": 5533, + "interpolation": "LINEAR", + "output": 5534 + }, + { + "input": 5535, + "interpolation": "LINEAR", + "output": 5536 + }, + { + "input": 5537, + "interpolation": "LINEAR", + "output": 5538 + }, + { + "input": 5539, + "interpolation": "LINEAR", + "output": 5540 + }, + { + "input": 5541, + "interpolation": "LINEAR", + "output": 5542 + }, + { + "input": 5543, + "interpolation": "LINEAR", + "output": 5544 + }, + { + "input": 5545, + "interpolation": "LINEAR", + "output": 5546 + }, + { + "input": 5547, + "interpolation": "LINEAR", + "output": 5548 + }, + { + "input": 5549, + "interpolation": "LINEAR", + "output": 5550 + }, + { + "input": 5551, + "interpolation": "LINEAR", + "output": 5552 + }, + { + "input": 5553, + "interpolation": "LINEAR", + "output": 5554 + }, + { + "input": 5555, + "interpolation": "LINEAR", + "output": 5556 + }, + { + "input": 5557, + "interpolation": "LINEAR", + "output": 5558 + }, + { + "input": 5559, + "interpolation": "LINEAR", + "output": 5560 + }, + { + "input": 5561, + "interpolation": "LINEAR", + "output": 5562 + }, + { + "input": 5563, + "interpolation": "LINEAR", + "output": 5564 + }, + { + "input": 5565, + "interpolation": "LINEAR", + "output": 5566 + }, + { + "input": 5567, + "interpolation": "LINEAR", + "output": 5568 + }, + { + "input": 5569, + "interpolation": "LINEAR", + "output": 5570 + }, + { + "input": 5571, + "interpolation": "LINEAR", + "output": 5572 + }, + { + "input": 5573, + "interpolation": "LINEAR", + "output": 5574 + }, + { + "input": 5575, + "interpolation": "LINEAR", + "output": 5576 + }, + { + "input": 5577, + "interpolation": "LINEAR", + "output": 5578 + }, + { + "input": 5579, + "interpolation": "LINEAR", + "output": 5580 + }, + { + "input": 5581, + "interpolation": "LINEAR", + "output": 5582 + }, + { + "input": 5583, + "interpolation": "LINEAR", + "output": 5584 + }, + { + "input": 5585, + "interpolation": "LINEAR", + "output": 5586 + }, + { + "input": 5587, + "interpolation": "LINEAR", + "output": 5588 + }, + { + "input": 5589, + "interpolation": "LINEAR", + "output": 5590 + }, + { + "input": 5591, + "interpolation": "LINEAR", + "output": 5592 + }, + { + "input": 5593, + "interpolation": "LINEAR", + "output": 5594 + }, + { + "input": 5595, + "interpolation": "LINEAR", + "output": 5596 + }, + { + "input": 5597, + "interpolation": "LINEAR", + "output": 5598 + }, + { + "input": 5599, + "interpolation": "LINEAR", + "output": 5600 + }, + { + "input": 5601, + "interpolation": "LINEAR", + "output": 5602 + }, + { + "input": 5603, + "interpolation": "LINEAR", + "output": 5604 + }, + { + "input": 5605, + "interpolation": "LINEAR", + "output": 5606 + }, + { + "input": 5607, + "interpolation": "LINEAR", + "output": 5608 + }, + { + "input": 5609, + "interpolation": "LINEAR", + "output": 5610 + }, + { + "input": 5611, + "interpolation": "LINEAR", + "output": 5612 + }, + { + "input": 5613, + "interpolation": "LINEAR", + "output": 5614 + }, + { + "input": 5615, + "interpolation": "LINEAR", + "output": 5616 + }, + { + "input": 5617, + "interpolation": "LINEAR", + "output": 5618 + }, + { + "input": 5619, + "interpolation": "LINEAR", + "output": 5620 + }, + { + "input": 5621, + "interpolation": "LINEAR", + "output": 5622 + }, + { + "input": 5623, + "interpolation": "LINEAR", + "output": 5624 + }, + { + "input": 5625, + "interpolation": "LINEAR", + "output": 5626 + }, + { + "input": 5627, + "interpolation": "LINEAR", + "output": 5628 + }, + { + "input": 5629, + "interpolation": "LINEAR", + "output": 5630 + }, + { + "input": 5631, + "interpolation": "LINEAR", + "output": 5632 + }, + { + "input": 5633, + "interpolation": "LINEAR", + "output": 5634 + }, + { + "input": 5635, + "interpolation": "LINEAR", + "output": 5636 + }, + { + "input": 5637, + "interpolation": "LINEAR", + "output": 5638 + }, + { + "input": 5639, + "interpolation": "LINEAR", + "output": 5640 + }, + { + "input": 5641, + "interpolation": "LINEAR", + "output": 5642 + }, + { + "input": 5643, + "interpolation": "LINEAR", + "output": 5644 + }, + { + "input": 5645, + "interpolation": "LINEAR", + "output": 5646 + }, + { + "input": 5647, + "interpolation": "LINEAR", + "output": 5648 + }, + { + "input": 5649, + "interpolation": "LINEAR", + "output": 5650 + }, + { + "input": 5651, + "interpolation": "LINEAR", + "output": 5652 + }, + { + "input": 5653, + "interpolation": "LINEAR", + "output": 5654 + }, + { + "input": 5655, + "interpolation": "LINEAR", + "output": 5656 + }, + { + "input": 5657, + "interpolation": "LINEAR", + "output": 5658 + }, + { + "input": 5659, + "interpolation": "LINEAR", + "output": 5660 + }, + { + "input": 5661, + "interpolation": "LINEAR", + "output": 5662 + }, + { + "input": 5663, + "interpolation": "LINEAR", + "output": 5664 + }, + { + "input": 5665, + "interpolation": "LINEAR", + "output": 5666 + }, + { + "input": 5667, + "interpolation": "LINEAR", + "output": 5668 + }, + { + "input": 5669, + "interpolation": "LINEAR", + "output": 5670 + }, + { + "input": 5671, + "interpolation": "LINEAR", + "output": 5672 + }, + { + "input": 5673, + "interpolation": "LINEAR", + "output": 5674 + }, + { + "input": 5675, + "interpolation": "LINEAR", + "output": 5676 + }, + { + "input": 5677, + "interpolation": "LINEAR", + "output": 5678 + }, + { + "input": 5679, + "interpolation": "LINEAR", + "output": 5680 + }, + { + "input": 5681, + "interpolation": "LINEAR", + "output": 5682 + }, + { + "input": 5683, + "interpolation": "LINEAR", + "output": 5684 + }, + { + "input": 5685, + "interpolation": "LINEAR", + "output": 5686 + }, + { + "input": 5687, + "interpolation": "LINEAR", + "output": 5688 + }, + { + "input": 5689, + "interpolation": "LINEAR", + "output": 5690 + }, + { + "input": 5691, + "interpolation": "LINEAR", + "output": 5692 + }, + { + "input": 5693, + "interpolation": "LINEAR", + "output": 5694 + }, + { + "input": 5695, + "interpolation": "LINEAR", + "output": 5696 + }, + { + "input": 5697, + "interpolation": "LINEAR", + "output": 5698 + }, + { + "input": 5699, + "interpolation": "LINEAR", + "output": 5700 + }, + { + "input": 5701, + "interpolation": "LINEAR", + "output": 5702 + }, + { + "input": 5703, + "interpolation": "LINEAR", + "output": 5704 + }, + { + "input": 5705, + "interpolation": "LINEAR", + "output": 5706 + }, + { + "input": 5707, + "interpolation": "LINEAR", + "output": 5708 + }, + { + "input": 5709, + "interpolation": "LINEAR", + "output": 5710 + }, + { + "input": 5711, + "interpolation": "LINEAR", + "output": 5712 + }, + { + "input": 5713, + "interpolation": "LINEAR", + "output": 5714 + }, + { + "input": 5715, + "interpolation": "LINEAR", + "output": 5716 + }, + { + "input": 5717, + "interpolation": "LINEAR", + "output": 5718 + }, + { + "input": 5719, + "interpolation": "LINEAR", + "output": 5720 + }, + { + "input": 5721, + "interpolation": "LINEAR", + "output": 5722 + }, + { + "input": 5723, + "interpolation": "LINEAR", + "output": 5724 + }, + { + "input": 5725, + "interpolation": "LINEAR", + "output": 5726 + }, + { + "input": 5727, + "interpolation": "LINEAR", + "output": 5728 + }, + { + "input": 5729, + "interpolation": "LINEAR", + "output": 5730 + }, + { + "input": 5731, + "interpolation": "LINEAR", + "output": 5732 + }, + { + "input": 5733, + "interpolation": "LINEAR", + "output": 5734 + }, + { + "input": 5735, + "interpolation": "LINEAR", + "output": 5736 + }, + { + "input": 5737, + "interpolation": "LINEAR", + "output": 5738 + }, + { + "input": 5739, + "interpolation": "LINEAR", + "output": 5740 + }, + { + "input": 5741, + "interpolation": "LINEAR", + "output": 5742 + }, + { + "input": 5743, + "interpolation": "LINEAR", + "output": 5744 + }, + { + "input": 5745, + "interpolation": "LINEAR", + "output": 5746 + }, + { + "input": 5747, + "interpolation": "LINEAR", + "output": 5748 + }, + { + "input": 5749, + "interpolation": "LINEAR", + "output": 5750 + }, + { + "input": 5751, + "interpolation": "LINEAR", + "output": 5752 + }, + { + "input": 5753, + "interpolation": "LINEAR", + "output": 5754 + }, + { + "input": 5755, + "interpolation": "LINEAR", + "output": 5756 + }, + { + "input": 5757, + "interpolation": "LINEAR", + "output": 5758 + }, + { + "input": 5759, + "interpolation": "LINEAR", + "output": 5760 + }, + { + "input": 5761, + "interpolation": "LINEAR", + "output": 5762 + }, + { + "input": 5763, + "interpolation": "LINEAR", + "output": 5764 + }, + { + "input": 5765, + "interpolation": "LINEAR", + "output": 5766 + }, + { + "input": 5767, + "interpolation": "LINEAR", + "output": 5768 + }, + { + "input": 5769, + "interpolation": "LINEAR", + "output": 5770 + }, + { + "input": 5771, + "interpolation": "LINEAR", + "output": 5772 + }, + { + "input": 5773, + "interpolation": "LINEAR", + "output": 5774 + }, + { + "input": 5775, + "interpolation": "LINEAR", + "output": 5776 + }, + { + "input": 5777, + "interpolation": "LINEAR", + "output": 5778 + }, + { + "input": 5779, + "interpolation": "LINEAR", + "output": 5780 + }, + { + "input": 5781, + "interpolation": "LINEAR", + "output": 5782 + }, + { + "input": 5783, + "interpolation": "LINEAR", + "output": 5784 + }, + { + "input": 5785, + "interpolation": "LINEAR", + "output": 5786 + }, + { + "input": 5787, + "interpolation": "LINEAR", + "output": 5788 + }, + { + "input": 5789, + "interpolation": "LINEAR", + "output": 5790 + }, + { + "input": 5791, + "interpolation": "LINEAR", + "output": 5792 + }, + { + "input": 5793, + "interpolation": "LINEAR", + "output": 5794 + }, + { + "input": 5795, + "interpolation": "LINEAR", + "output": 5796 + }, + { + "input": 5797, + "interpolation": "LINEAR", + "output": 5798 + }, + { + "input": 5799, + "interpolation": "LINEAR", + "output": 5800 + }, + { + "input": 5801, + "interpolation": "LINEAR", + "output": 5802 + }, + { + "input": 5803, + "interpolation": "LINEAR", + "output": 5804 + }, + { + "input": 5805, + "interpolation": "LINEAR", + "output": 5806 + }, + { + "input": 5807, + "interpolation": "LINEAR", + "output": 5808 + }, + { + "input": 5809, + "interpolation": "LINEAR", + "output": 5810 + }, + { + "input": 5811, + "interpolation": "LINEAR", + "output": 5812 + }, + { + "input": 5813, + "interpolation": "LINEAR", + "output": 5814 + }, + { + "input": 5815, + "interpolation": "LINEAR", + "output": 5816 + }, + { + "input": 5817, + "interpolation": "LINEAR", + "output": 5818 + }, + { + "input": 5819, + "interpolation": "LINEAR", + "output": 5820 + }, + { + "input": 5821, + "interpolation": "LINEAR", + "output": 5822 + }, + { + "input": 5823, + "interpolation": "LINEAR", + "output": 5824 + }, + { + "input": 5825, + "interpolation": "LINEAR", + "output": 5826 + }, + { + "input": 5827, + "interpolation": "LINEAR", + "output": 5828 + }, + { + "input": 5829, + "interpolation": "LINEAR", + "output": 5830 + }, + { + "input": 5831, + "interpolation": "LINEAR", + "output": 5832 + }, + { + "input": 5833, + "interpolation": "LINEAR", + "output": 5834 + }, + { + "input": 5835, + "interpolation": "LINEAR", + "output": 5836 + }, + { + "input": 5837, + "interpolation": "LINEAR", + "output": 5838 + }, + { + "input": 5839, + "interpolation": "LINEAR", + "output": 5840 + }, + { + "input": 5841, + "interpolation": "LINEAR", + "output": 5842 + }, + { + "input": 5843, + "interpolation": "LINEAR", + "output": 5844 + }, + { + "input": 5845, + "interpolation": "LINEAR", + "output": 5846 + }, + { + "input": 5847, + "interpolation": "LINEAR", + "output": 5848 + }, + { + "input": 5849, + "interpolation": "LINEAR", + "output": 5850 + }, + { + "input": 5851, + "interpolation": "LINEAR", + "output": 5852 + }, + { + "input": 5853, + "interpolation": "LINEAR", + "output": 5854 + }, + { + "input": 5855, + "interpolation": "LINEAR", + "output": 5856 + }, + { + "input": 5857, + "interpolation": "LINEAR", + "output": 5858 + }, + { + "input": 5859, + "interpolation": "LINEAR", + "output": 5860 + }, + { + "input": 5861, + "interpolation": "LINEAR", + "output": 5862 + }, + { + "input": 5863, + "interpolation": "LINEAR", + "output": 5864 + }, + { + "input": 5865, + "interpolation": "LINEAR", + "output": 5866 + }, + { + "input": 5867, + "interpolation": "LINEAR", + "output": 5868 + }, + { + "input": 5869, + "interpolation": "LINEAR", + "output": 5870 + }, + { + "input": 5871, + "interpolation": "LINEAR", + "output": 5872 + }, + { + "input": 5873, + "interpolation": "LINEAR", + "output": 5874 + }, + { + "input": 5875, + "interpolation": "LINEAR", + "output": 5876 + }, + { + "input": 5877, + "interpolation": "LINEAR", + "output": 5878 + }, + { + "input": 5879, + "interpolation": "LINEAR", + "output": 5880 + }, + { + "input": 5881, + "interpolation": "LINEAR", + "output": 5882 + }, + { + "input": 5883, + "interpolation": "LINEAR", + "output": 5884 + }, + { + "input": 5885, + "interpolation": "LINEAR", + "output": 5886 + }, + { + "input": 5887, + "interpolation": "LINEAR", + "output": 5888 + }, + { + "input": 5889, + "interpolation": "LINEAR", + "output": 5890 + }, + { + "input": 5891, + "interpolation": "LINEAR", + "output": 5892 + }, + { + "input": 5893, + "interpolation": "LINEAR", + "output": 5894 + }, + { + "input": 5895, + "interpolation": "LINEAR", + "output": 5896 + }, + { + "input": 5897, + "interpolation": "LINEAR", + "output": 5898 + }, + { + "input": 5899, + "interpolation": "LINEAR", + "output": 5900 + }, + { + "input": 5901, + "interpolation": "LINEAR", + "output": 5902 + }, + { + "input": 5903, + "interpolation": "LINEAR", + "output": 5904 + }, + { + "input": 5905, + "interpolation": "LINEAR", + "output": 5906 + }, + { + "input": 5907, + "interpolation": "LINEAR", + "output": 5908 + }, + { + "input": 5909, + "interpolation": "LINEAR", + "output": 5910 + }, + { + "input": 5911, + "interpolation": "LINEAR", + "output": 5912 + }, + { + "input": 5913, + "interpolation": "LINEAR", + "output": 5914 + }, + { + "input": 5915, + "interpolation": "LINEAR", + "output": 5916 + }, + { + "input": 5917, + "interpolation": "LINEAR", + "output": 5918 + }, + { + "input": 5919, + "interpolation": "LINEAR", + "output": 5920 + }, + { + "input": 5921, + "interpolation": "LINEAR", + "output": 5922 + }, + { + "input": 5923, + "interpolation": "LINEAR", + "output": 5924 + }, + { + "input": 5925, + "interpolation": "LINEAR", + "output": 5926 + }, + { + "input": 5927, + "interpolation": "LINEAR", + "output": 5928 + }, + { + "input": 5929, + "interpolation": "LINEAR", + "output": 5930 + }, + { + "input": 5931, + "interpolation": "LINEAR", + "output": 5932 + }, + { + "input": 5933, + "interpolation": "LINEAR", + "output": 5934 + }, + { + "input": 5935, + "interpolation": "LINEAR", + "output": 5936 + }, + { + "input": 5937, + "interpolation": "LINEAR", + "output": 5938 + }, + { + "input": 5939, + "interpolation": "LINEAR", + "output": 5940 + }, + { + "input": 5941, + "interpolation": "LINEAR", + "output": 5942 + }, + { + "input": 5943, + "interpolation": "LINEAR", + "output": 5944 + }, + { + "input": 5945, + "interpolation": "LINEAR", + "output": 5946 + }, + { + "input": 5947, + "interpolation": "LINEAR", + "output": 5948 + }, + { + "input": 5949, + "interpolation": "LINEAR", + "output": 5950 + }, + { + "input": 5951, + "interpolation": "LINEAR", + "output": 5952 + }, + { + "input": 5953, + "interpolation": "LINEAR", + "output": 5954 + }, + { + "input": 5955, + "interpolation": "LINEAR", + "output": 5956 + }, + { + "input": 5957, + "interpolation": "LINEAR", + "output": 5958 + }, + { + "input": 5959, + "interpolation": "LINEAR", + "output": 5960 + }, + { + "input": 5961, + "interpolation": "LINEAR", + "output": 5962 + }, + { + "input": 5963, + "interpolation": "LINEAR", + "output": 5964 + }, + { + "input": 5965, + "interpolation": "LINEAR", + "output": 5966 + }, + { + "input": 5967, + "interpolation": "LINEAR", + "output": 5968 + }, + { + "input": 5969, + "interpolation": "LINEAR", + "output": 5970 + }, + { + "input": 5971, + "interpolation": "LINEAR", + "output": 5972 + }, + { + "input": 5973, + "interpolation": "LINEAR", + "output": 5974 + }, + { + "input": 5975, + "interpolation": "LINEAR", + "output": 5976 + }, + { + "input": 5977, + "interpolation": "LINEAR", + "output": 5978 + }, + { + "input": 5979, + "interpolation": "LINEAR", + "output": 5980 + }, + { + "input": 5981, + "interpolation": "LINEAR", + "output": 5982 + }, + { + "input": 5983, + "interpolation": "LINEAR", + "output": 5984 + }, + { + "input": 5985, + "interpolation": "LINEAR", + "output": 5986 + }, + { + "input": 5987, + "interpolation": "LINEAR", + "output": 5988 + }, + { + "input": 5989, + "interpolation": "LINEAR", + "output": 5990 + }, + { + "input": 5991, + "interpolation": "LINEAR", + "output": 5992 + }, + { + "input": 5993, + "interpolation": "LINEAR", + "output": 5994 + }, + { + "input": 5995, + "interpolation": "LINEAR", + "output": 5996 + }, + { + "input": 5997, + "interpolation": "LINEAR", + "output": 5998 + }, + { + "input": 5999, + "interpolation": "LINEAR", + "output": 6000 + }, + { + "input": 6001, + "interpolation": "LINEAR", + "output": 6002 + }, + { + "input": 6003, + "interpolation": "LINEAR", + "output": 6004 + }, + { + "input": 6005, + "interpolation": "LINEAR", + "output": 6006 + }, + { + "input": 6007, + "interpolation": "LINEAR", + "output": 6008 + }, + { + "input": 6009, + "interpolation": "LINEAR", + "output": 6010 + }, + { + "input": 6011, + "interpolation": "LINEAR", + "output": 6012 + }, + { + "input": 6013, + "interpolation": "LINEAR", + "output": 6014 + }, + { + "input": 6015, + "interpolation": "LINEAR", + "output": 6016 + }, + { + "input": 6017, + "interpolation": "LINEAR", + "output": 6018 + }, + { + "input": 6019, + "interpolation": "LINEAR", + "output": 6020 + }, + { + "input": 6021, + "interpolation": "LINEAR", + "output": 6022 + }, + { + "input": 6023, + "interpolation": "LINEAR", + "output": 6024 + }, + { + "input": 6025, + "interpolation": "LINEAR", + "output": 6026 + }, + { + "input": 6027, + "interpolation": "LINEAR", + "output": 6028 + }, + { + "input": 6029, + "interpolation": "LINEAR", + "output": 6030 + }, + { + "input": 6031, + "interpolation": "LINEAR", + "output": 6032 + }, + { + "input": 6033, + "interpolation": "LINEAR", + "output": 6034 + }, + { + "input": 6035, + "interpolation": "LINEAR", + "output": 6036 + }, + { + "input": 6037, + "interpolation": "LINEAR", + "output": 6038 + }, + { + "input": 6039, + "interpolation": "LINEAR", + "output": 6040 + }, + { + "input": 6041, + "interpolation": "LINEAR", + "output": 6042 + }, + { + "input": 6043, + "interpolation": "LINEAR", + "output": 6044 + }, + { + "input": 6045, + "interpolation": "LINEAR", + "output": 6046 + }, + { + "input": 6047, + "interpolation": "LINEAR", + "output": 6048 + }, + { + "input": 6049, + "interpolation": "LINEAR", + "output": 6050 + }, + { + "input": 6051, + "interpolation": "LINEAR", + "output": 6052 + }, + { + "input": 6053, + "interpolation": "LINEAR", + "output": 6054 + }, + { + "input": 6055, + "interpolation": "LINEAR", + "output": 6056 + }, + { + "input": 6057, + "interpolation": "LINEAR", + "output": 6058 + }, + { + "input": 6059, + "interpolation": "LINEAR", + "output": 6060 + }, + { + "input": 6061, + "interpolation": "LINEAR", + "output": 6062 + }, + { + "input": 6063, + "interpolation": "LINEAR", + "output": 6064 + }, + { + "input": 6065, + "interpolation": "LINEAR", + "output": 6066 + }, + { + "input": 6067, + "interpolation": "LINEAR", + "output": 6068 + }, + { + "input": 6069, + "interpolation": "LINEAR", + "output": 6070 + }, + { + "input": 6071, + "interpolation": "LINEAR", + "output": 6072 + }, + { + "input": 6073, + "interpolation": "LINEAR", + "output": 6074 + }, + { + "input": 6075, + "interpolation": "LINEAR", + "output": 6076 + }, + { + "input": 6077, + "interpolation": "LINEAR", + "output": 6078 + }, + { + "input": 6079, + "interpolation": "LINEAR", + "output": 6080 + }, + { + "input": 6081, + "interpolation": "LINEAR", + "output": 6082 + }, + { + "input": 6083, + "interpolation": "LINEAR", + "output": 6084 + }, + { + "input": 6085, + "interpolation": "LINEAR", + "output": 6086 + }, + { + "input": 6087, + "interpolation": "LINEAR", + "output": 6088 + }, + { + "input": 6089, + "interpolation": "LINEAR", + "output": 6090 + }, + { + "input": 6091, + "interpolation": "LINEAR", + "output": 6092 + }, + { + "input": 6093, + "interpolation": "LINEAR", + "output": 6094 + }, + { + "input": 6095, + "interpolation": "LINEAR", + "output": 6096 + }, + { + "input": 6097, + "interpolation": "LINEAR", + "output": 6098 + }, + { + "input": 6099, + "interpolation": "LINEAR", + "output": 6100 + }, + { + "input": 6101, + "interpolation": "LINEAR", + "output": 6102 + }, + { + "input": 6103, + "interpolation": "LINEAR", + "output": 6104 + }, + { + "input": 6105, + "interpolation": "LINEAR", + "output": 6106 + }, + { + "input": 6107, + "interpolation": "LINEAR", + "output": 6108 + }, + { + "input": 6109, + "interpolation": "LINEAR", + "output": 6110 + }, + { + "input": 6111, + "interpolation": "LINEAR", + "output": 6112 + }, + { + "input": 6113, + "interpolation": "LINEAR", + "output": 6114 + }, + { + "input": 6115, + "interpolation": "LINEAR", + "output": 6116 + }, + { + "input": 6117, + "interpolation": "LINEAR", + "output": 6118 + }, + { + "input": 6119, + "interpolation": "LINEAR", + "output": 6120 + }, + { + "input": 6121, + "interpolation": "LINEAR", + "output": 6122 + }, + { + "input": 6123, + "interpolation": "LINEAR", + "output": 6124 + }, + { + "input": 6125, + "interpolation": "LINEAR", + "output": 6126 + }, + { + "input": 6127, + "interpolation": "LINEAR", + "output": 6128 + }, + { + "input": 6129, + "interpolation": "LINEAR", + "output": 6130 + }, + { + "input": 6131, + "interpolation": "LINEAR", + "output": 6132 + }, + { + "input": 6133, + "interpolation": "LINEAR", + "output": 6134 + }, + { + "input": 6135, + "interpolation": "LINEAR", + "output": 6136 + }, + { + "input": 6137, + "interpolation": "LINEAR", + "output": 6138 + }, + { + "input": 6139, + "interpolation": "LINEAR", + "output": 6140 + }, + { + "input": 6141, + "interpolation": "LINEAR", + "output": 6142 + }, + { + "input": 6143, + "interpolation": "LINEAR", + "output": 6144 + }, + { + "input": 6145, + "interpolation": "LINEAR", + "output": 6146 + }, + { + "input": 6147, + "interpolation": "LINEAR", + "output": 6148 + }, + { + "input": 6149, + "interpolation": "LINEAR", + "output": 6150 + }, + { + "input": 6151, + "interpolation": "LINEAR", + "output": 6152 + }, + { + "input": 6153, + "interpolation": "LINEAR", + "output": 6154 + }, + { + "input": 6155, + "interpolation": "LINEAR", + "output": 6156 + }, + { + "input": 6157, + "interpolation": "LINEAR", + "output": 6158 + }, + { + "input": 6159, + "interpolation": "LINEAR", + "output": 6160 + }, + { + "input": 6161, + "interpolation": "LINEAR", + "output": 6162 + }, + { + "input": 6163, + "interpolation": "LINEAR", + "output": 6164 + }, + { + "input": 6165, + "interpolation": "LINEAR", + "output": 6166 + }, + { + "input": 6167, + "interpolation": "LINEAR", + "output": 6168 + }, + { + "input": 6169, + "interpolation": "LINEAR", + "output": 6170 + }, + { + "input": 6171, + "interpolation": "LINEAR", + "output": 6172 + }, + { + "input": 6173, + "interpolation": "LINEAR", + "output": 6174 + }, + { + "input": 6175, + "interpolation": "LINEAR", + "output": 6176 + }, + { + "input": 6177, + "interpolation": "LINEAR", + "output": 6178 + }, + { + "input": 6179, + "interpolation": "LINEAR", + "output": 6180 + }, + { + "input": 6181, + "interpolation": "LINEAR", + "output": 6182 + } + ] + } + ], + "asset": { + "extras": { + "author": "Jesus Balbastro (https://sketchfab.com/awesomehaircut)", + "license": "CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0/)", + "source": "https://sketchfab.com/models/1bf61378d5344a889812e60c991bfcf7", + "title": "Dragonite" + }, + "generator": "Sketchfab-3.18.7", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 16608, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 40632, + "byteOffset": 16608, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 16608, + "byteOffset": 57240, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 49824, + "byteOffset": 73848, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 99648, + "byteOffset": 123672, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 16448, + "byteOffset": 223320, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 409620, + "byteOffset": 239768, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 683652, + "byteOffset": 649388, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 726944, + "byteOffset": 1333040, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 2059984, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/Dragonite_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Dragonite", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 1 + } + } + ], + "meshes": [ + { + "name": "Dragonite_Dragonite_0", + "primitives": [ + { + "attributes": { + "COLOR_0": 3, + "JOINTS_0": 7, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 4, + "WEIGHTS_0": 8 + }, + "indices": 5, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "Dragonite.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5, + 266 + ], + "name": "RootNode" + }, + { + "children": [ + 6 + ], + "name": "rig_dragon", + "rotation": [ + -0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "scale": [ + 100, + 100, + 100 + ] + }, + { + "children": [ + 7, + 265, + 264 + ], + "name": "" + }, + { + "children": [ + 8 + ], + "name": "_rootJoint" + }, + { + "children": [ + 9, + 219, + 222, + 225, + 227, + 258, + 261 + ], + "name": "root_04", + "rotation": [ + -6.6174449004242214e-24, + -0, + 0, + 1 + ], + "translation": [ + 0, + 0, + 0.048173855990171432 + ] + }, + { + "children": [ + 10, + 185, + 201, + 217 + ], + "name": "ORG-hips_05", + "rotation": [ + 0.64831167459487915, + -9.0763023763429374e-08, + 3.2261102234087957e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.4210854715202004e-14, + 0.055200062692165375, + 0.19749556481838226 + ] + }, + { + "children": [ + 11, + 183 + ], + "name": "ORG-spine_06", + "rotation": [ + -0.12614771723747253, + -0.0073608146049082279, + 0.0043073771521449089, + 0.99197483062744141 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + -7.9936057773011271e-15, + 0.40506201982498169, + -7.4505739355856804e-09 + ] + }, + { + "children": [ + 12, + 15, + 98, + 181 + ], + "name": "ORG-chest_07", + "rotation": [ + 0.34367910027503967, + 0.0062861694023013115, + -0.0083904145285487175, + 0.93902873992919922 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "translation": [ + -4.6566128730773926e-10, + 0.77674132585525513, + -6.2645995058119297e-09 + ] + }, + { + "children": [ + 13 + ], + "name": "ORG-neck_08", + "rotation": [ + -0.27045553922653198, + 0.0173672866076231, + 0.016690928488969803, + 0.96243107318878174 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 4.8021320253610611e-10, + 0.30786621570587158, + -2.310712261532899e-07 + ] + }, + { + "children": [ + 14 + ], + "name": "DEF-head_09", + "rotation": [ + -0.06126849353313446, + -0.012450626119971275, + -0.021492986008524895, + 0.99781221151351929 + ], + "scale": [ + 1.0000003576278687, + 0.99999964237213135, + 0.9999997615814209 + ], + "translation": [ + -9.3132257461547852e-09, + 0.19137133657932281, + -5.6461431086063385e-08 + ] + }, + { + "name": "DEF-head_end_0180", + "rotation": [ + -2.7755575615628914e-17, + -9.0277966143151681e-36, + 3.2526065174565133e-19, + 1 + ], + "translation": [ + 0, + 0.70650225877761841, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 16, + 96 + ], + "name": "ORG-shoulder.L_010", + "rotation": [ + -0.69586646556854248, + -0.3977760374546051, + -0.2970300018787384, + 0.51895785331726074 + ], + "scale": [ + 0.99999958276748657, + 0.99999958276748657, + 0.99999970197677612 + ], + "translation": [ + 0.023130033165216446, + 0.26697859168052673, + 0.14965279400348663 + ] + }, + { + "children": [ + 17, + 94 + ], + "name": "ORG-upper_arm.L_011", + "rotation": [ + -0.31031376123428345, + 0.87789040803909302, + -0.056962184607982635, + 0.36023485660552979 + ], + "scale": [ + 1.0000002384185791, + 1.0000004768371582, + 1.0000003576278687 + ], + "translation": [ + -0.027315685525536537, + 0.3344605565071106, + 0.019757615402340889 + ] + }, + { + "children": [ + 18, + 88, + 90 + ], + "name": "ORG-forearm.L_012", + "rotation": [ + 0.20465438067913055, + 0.10057873278856277, + -0.18812994658946991, + 0.95530498027801514 + ], + "scale": [ + 0.99999982118606567, + 1, + 0.99999994039535522 + ], + "translation": [ + 1.4901161193847656e-08, + 0.27854275703430176, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 19, + 44, + 58, + 72, + 86 + ], + "name": "ORG-hand.L_013", + "rotation": [ + 0.1358959823846817, + 0.80924534797668457, + 0.24829928576946259, + 0.51478314399719238 + ], + "scale": [ + 0.99999964237213135, + 0.99999964237213135, + 0.99999982118606567 + ], + "translation": [ + -1.6763806343078613e-08, + 0.25792214274406433, + 1.1175870895385742e-07 + ] + }, + { + "children": [ + 20, + 29, + 38, + 40, + 42 + ], + "name": "ORG-palm.01.L_014", + "rotation": [ + -0.18320608139038086, + -0.11237327009439468, + -0.12725991010665894, + 0.96830403804779053 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1 + ], + "translation": [ + 0.0073303133249282837, + 0.34354433417320251, + -0.021197959780693054 + ] + }, + { + "children": [ + 21, + 27 + ], + "name": "ORG-f_index.01.L_015", + "rotation": [ + 0.17803961038589478, + -0.038298312574625015, + -0.044083744287490845, + 0.98228901624679565 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1 + ], + "translation": [ + -7.4505805969238281e-08, + 0.069626078009605408, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 22, + 25 + ], + "name": "ORG-f_index.02.L_016", + "rotation": [ + 0.077882632613182068, + -0.038419149816036224, + -9.6844836662057787e-05, + 0.99622201919555664 + ], + "scale": [ + 1, + 1.0000003576278687, + 1 + ], + "translation": [ + -4.1909515857696533e-08, + 0.045039936900138855, + -5.2154064178466797e-08 + ] + }, + { + "children": [ + 23 + ], + "name": "ORG-f_index.03.L_017", + "rotation": [ + 0.11234366148710251, + -0.058250229805707932, + -0.038226854056119919, + 0.99122375249862671 + ], + "scale": [ + 1, + 1, + 1.0000002384185791 + ], + "translation": [ + 8.5681676864624023e-08, + 0.028223410248756409, + -1.5366822481155396e-08 + ] + }, + { + "children": [ + 24 + ], + "name": "DEF-f_index.03.L_018", + "rotation": [ + 1.257285475730896e-08, + -4.1909520298588632e-09, + 2.0954751267510119e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000001192092896, + 1 + ], + "translation": [ + 4.4703483581542969e-08, + 1.3597309589385986e-07, + 2.2351741790771484e-08 + ] + }, + { + "name": "DEF-f_index.03.L_end_0231", + "rotation": [ + -6.9388939039072284e-18, + -3.8518598887744717e-34, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022818643599748611, + 0 + ] + }, + { + "children": [ + 26 + ], + "name": "DEF-f_index.02.L_019", + "rotation": [ + -2.136220800252886e-08, + -6.4377658759440237e-08, + -8.1490716397070173e-09, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + 5.5879354476928711e-08, + 4.4703483581542969e-08, + -2.1141022443771362e-07 + ] + }, + { + "name": "DEF-f_index.02.L_end_0237", + "rotation": [ + -2.5370330836160804e-17, + -6.5052130349130266e-18, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.028223402798175812, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 28 + ], + "name": "DEF-f_index.01.L.02_020", + "rotation": [ + 4.9639493227005005e-07, + -9.3691073743684683e-07, + 2.2927999054900283e-07, + 1 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 0.9999997615814209 + ], + "translation": [ + -6.28642737865448e-08, + 0.022519811987876892, + 9.6857547760009766e-08 + ] + }, + { + "name": "DEF-f_index.01.L.02_end_0234", + "rotation": [ + 2.7755575615628914e-17, + -1.3877787807814457e-17, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519970312714577, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 30, + 36 + ], + "name": "ORG-thumb.01.L_021", + "rotation": [ + 0.0063958284445106983, + 0.65799003839492798, + 0.26252895593643188, + 0.70575261116027832 + ], + "scale": [ + 0.99999982118606567, + 0.99999940395355225, + 0.99999970197677612 + ], + "translation": [ + -0.0086899995803833008, + -0.0083238929510116577, + 0.023024335503578186 + ] + }, + { + "children": [ + 31, + 34 + ], + "name": "ORG-thumb.02.L_022", + "rotation": [ + 0.16518199443817139, + 0.0088785169646143913, + -0.05738256499171257, + 0.98455232381820679 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.9999997615814209 + ], + "translation": [ + 2.9802322387695312e-08, + 0.041744649410247803, + 3.7252902984619141e-08 + ] + }, + { + "children": [ + 32 + ], + "name": "ORG-thumb.03.L_023", + "rotation": [ + 0.021510282531380653, + 0.016420735046267509, + -0.03873925656080246, + 0.99888283014297485 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "translation": [ + 4.4703483581542969e-08, + 0.033446475863456726, + -2.2351741790771484e-08 + ] + }, + { + "children": [ + 33 + ], + "name": "DEF-thumb.03.L_024", + "rotation": [ + 5.5879354476928711e-09, + 1.862645149230957e-08, + 6.891787052154541e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + -1.9371509552001953e-07, + -1.1920928955078125e-07 + ] + }, + { + "name": "DEF-thumb.03.L_end_0191", + "rotation": [ + 1.3877787807814457e-17, + 0, + 0, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.020790537819266319, + 0 + ] + }, + { + "children": [ + 35 + ], + "name": "DEF-thumb.02.L_025", + "rotation": [ + 1.3600226757702247e-15, + -3.3527605580729869e-08, + 4.4703476476115611e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + -5.9604644775390625e-08, + 1.4901161193847656e-08, + -2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thumb.02.L_end_0232", + "rotation": [ + -2.7755575615628914e-17, + -2.7755575615628914e-17, + -3.1225022567582528e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.033446468412876129, + 0 + ] + }, + { + "children": [ + 37 + ], + "name": "DEF-thumb.01.L.02_026", + "rotation": [ + 3.7252900764173091e-09, + -9.3132243250693136e-08, + -1.601874828338623e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.020872138440608978, + 5.9604644775390625e-08 + ] + }, + { + "name": "DEF-thumb.01.L.02_end_0246", + "rotation": [ + 6.9388939039072284e-18, + 2.7755575615628914e-17, + -1.9081958235744878e-17, + 1 + ], + "translation": [ + 0, + 0.0208723284304142, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 39 + ], + "name": "DEF-palm.01.L_027", + "rotation": [ + 5.5879345595144514e-09, + 7.4505805969238281e-09, + -8.0093755627785868e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + 1.0430812835693359e-07, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-palm.01.L_end_0254", + "rotation": [ + 2.0816681711721685e-17, + 2.7755575615628914e-17, + -1.3877787807814457e-17, + 1 + ], + "translation": [ + 0, + 0.069626055657863617, + 0 + ] + }, + { + "children": [ + 41 + ], + "name": "DEF-f_index.01.L.01_028", + "rotation": [ + 0.17803847789764404, + -0.038296110928058624, + -0.044083859771490097, + 0.98228943347930908 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + -7.4505805969238281e-08, + 0.069626078009605408, + 7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_index.01.L.01_end_0230", + "rotation": [ + -1.7347234759768071e-17, + 9.6296497219361793e-34, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519990801811218, + 0 + ] + }, + { + "children": [ + 43 + ], + "name": "DEF-thumb.01.L.01_029", + "rotation": [ + 0.0063958484679460526, + 0.65798979997634888, + 0.26252919435501099, + 0.70575273036956787 + ], + "scale": [ + 0.99999994039535522, + 0.99999940395355225, + 0.99999970197677612 + ], + "translation": [ + -0.0086899995803833008, + -0.0083238929510116577, + 0.023024335503578186 + ] + }, + { + "name": "DEF-thumb.01.L.01_end_0243", + "rotation": [ + 0, + 0, + 1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.020872326567769051, + 0 + ] + }, + { + "children": [ + 45, + 54, + 56 + ], + "name": "ORG-palm.02.L_030", + "rotation": [ + -0.17811864614486694, + -0.13169904053211212, + -0.16719590127468109, + 0.96071571111679077 + ], + "scale": [ + 1.0000003576278687, + 1.0000004768371582, + 1.0000005960464478 + ], + "translation": [ + 0.02324715256690979, + 0.34059685468673706, + -0.015326440334320068 + ] + }, + { + "children": [ + 46, + 52 + ], + "name": "ORG-f_middle.01.L_031", + "rotation": [ + 0.21749144792556763, + -0.069006673991680145, + -0.0030258134938776493, + 0.97361510992050171 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.8626449271863521e-09, + 0.06818709522485733, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 47, + 50 + ], + "name": "ORG-f_middle.02.L_032", + "rotation": [ + 0.11846216022968292, + -0.085242293775081635, + -0.013570714741945267, + 0.98919981718063354 + ], + "scale": [ + 1, + 1.0000003576278687, + 1 + ], + "translation": [ + -1.1920928955078125e-07, + 0.0495404452085495, + 1.862645149230957e-08 + ] + }, + { + "children": [ + 48 + ], + "name": "ORG-f_middle.03.L_033", + "rotation": [ + 0.056476779282093048, + -0.04575289785861969, + -0.025043424218893051, + 0.99704056978225708 + ], + "scale": [ + 1.0000004768371582, + 0.99999988079071045, + 1.0000004768371582 + ], + "translation": [ + -1.4901161193847656e-08, + 0.032196026295423508, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 49 + ], + "name": "DEF-f_middle.03.L_034", + "rotation": [ + 1.1175870895385742e-08, + 4.2840838432312012e-08, + 4.1909515857696533e-08, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + -8.9406967163085938e-08, + 3.9115548133850098e-08 + ] + }, + { + "name": "DEF-f_middle.03.L_end_0164", + "rotation": [ + 6.9388939039072284e-18, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022704442963004112, + 0 + ] + }, + { + "children": [ + 51 + ], + "name": "DEF-f_middle.02.L_035", + "rotation": [ + -1.0244549208948683e-08, + -2.3283067918100642e-08, + -1.6763808119435453e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "translation": [ + -7.4505805969238281e-08, + 1.8253922462463379e-07, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_middle.02.L_end_00", + "rotation": [ + 1.3877787807814457e-17, + 2.7755575615628914e-17, + -3.8518598887744717e-34, + 1 + ], + "translation": [ + 0, + 0.032196018844842911, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 53 + ], + "name": "DEF-f_middle.01.L.02_036", + "rotation": [ + -5.7928264141082764e-07, + 9.4575818820885615e-07, + -1.648440957069397e-07, + 1 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + -1.2293457984924316e-07, + 0.024769976735115051, + 1.2293457984924316e-07 + ] + }, + { + "name": "DEF-f_middle.01.L.02_end_0189", + "rotation": [ + -4.4885969940899884e-17, + -6.0715321659188248e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.024770231917500496, + 0 + ] + }, + { + "children": [ + 55 + ], + "name": "DEF-palm.02.L_037", + "rotation": [ + 5.5879347371501353e-08, + -5.5879372240497105e-09, + -3.3527616238870905e-08, + 1 + ], + "scale": [ + 0.9999997615814209, + 1.0000002384185791, + 1 + ], + "translation": [ + -2.9802322387695312e-08, + 2.2351741790771484e-08, + -1.3411045074462891e-07 + ] + }, + { + "name": "DEF-palm.02.L_end_0224", + "rotation": [ + -1.3877787807814457e-17, + 2.7755575615628914e-17, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + 0, + 0.068187080323696136, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 57 + ], + "name": "DEF-f_middle.01.L.01_038", + "rotation": [ + 0.21748913824558258, + -0.069013774394989014, + -0.0030575795099139214, + 0.97361505031585693 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.8626449271863521e-09, + 0.06818709522485733, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_middle.01.L.01_end_0223", + "rotation": [ + 4.3368086899420177e-18, + -4.3368086899420177e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.024770215153694153, + 0 + ] + }, + { + "children": [ + 59, + 68, + 70 + ], + "name": "ORG-palm.03.L_039", + "rotation": [ + -0.17214247584342957, + -0.16701872646808624, + -0.22579607367515564, + 0.94418632984161377 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "translation": [ + 0.034954488277435303, + 0.335368812084198, + -0.0064072161912918091 + ] + }, + { + "children": [ + 60, + 66 + ], + "name": "ORG-f_ring.01.L_040", + "rotation": [ + 0.28130209445953369, + -0.10888336598873138, + 0.021744580939412117, + 0.95317405462265015 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1 + ], + "translation": [ + 1.1548399925231934e-07, + 0.069797366857528687, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 61, + 64 + ], + "name": "ORG-f_ring.02.L_041", + "rotation": [ + 0.073152266442775726, + -0.052601072937250137, + -0.024043384939432144, + 0.99564242362976074 + ], + "scale": [ + 1.0000003576278687, + 0.99999964237213135, + 0.99999970197677612 + ], + "translation": [ + -4.4703483581542969e-08, + 0.044816665351390839, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 62 + ], + "name": "ORG-f_ring.03.L_042", + "rotation": [ + 0.15024147927761078, + -0.10080227255821228, + -0.057818170636892319, + 0.9817960262298584 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -1.4901161193847656e-08, + 0.031800970435142517, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 63 + ], + "name": "DEF-f_ring.03.L_043", + "rotation": [ + 9.3132239697979458e-09, + 5.5879358917820809e-09, + -2.4286122046230399e-17, + 1 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -8.9406967163085938e-08, + -2.9802322387695312e-08, + 9.6857547760009766e-08 + ] + }, + { + "name": "DEF-f_ring.03.L_end_0240", + "rotation": [ + -4.163336342344337e-17, + 2.7755575615628914e-17, + 1.1555579666323415e-33, + 1 + ], + "translation": [ + 0, + 0.01855008490383625, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 65 + ], + "name": "DEF-f_ring.02.L_044", + "rotation": [ + -3.1723177418285786e-09, + -2.7939679014821195e-08, + -7.312337402254343e-09, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999994039535522 + ], + "translation": [ + -7.4505805969238281e-08, + 2.9802322387695312e-08, + -3.2037496566772461e-07 + ] + }, + { + "name": "DEF-f_ring.02.L_end_0210", + "rotation": [ + 2.0816681711721685e-17, + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.031800936907529831, + 0 + ] + }, + { + "children": [ + 67 + ], + "name": "DEF-f_ring.01.L.02_045", + "rotation": [ + -6.0535955981322331e-07, + 9.6112466962949838e-07, + -3.8184225559234619e-08, + 1 + ], + "scale": [ + 1, + 0.99999994039535522, + 1.0000003576278687 + ], + "translation": [ + -4.4703483581542969e-08, + 0.022408448159694672, + 1.4901161193847656e-07 + ] + }, + { + "name": "DEF-f_ring.01.L.02_end_0222", + "rotation": [ + -6.9388939039072284e-18, + -1.3877787807814457e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022408328950405121, + 0 + ] + }, + { + "children": [ + 69 + ], + "name": "DEF-palm.03.L_046", + "rotation": [ + 3.3527619791584584e-08, + -5.3085400963936991e-08, + -2.5145713067331599e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.99999964237213135 + ], + "translation": [ + 2.6077032089233398e-07, + -5.9604644775390625e-08, + 4.4703483581542969e-08 + ] + }, + { + "name": "DEF-palm.03.L_end_0176", + "rotation": [ + -4.163336342344337e-17, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.069797389209270477, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 71 + ], + "name": "DEF-f_ring.01.L.01_047", + "rotation": [ + 0.28130325675010681, + -0.10888498276472092, + 0.02174454927444458, + 0.95317351818084717 + ], + "scale": [ + 1, + 1.0000002384185791, + 1 + ], + "translation": [ + 1.1548399925231934e-07, + 0.069797366857528687, + -7.4505805969238281e-08 + ] + }, + { + "name": "DEF-f_ring.01.L.01_end_0217", + "rotation": [ + 6.9388939039072284e-18, + -1.9259299443872359e-34, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.022408317774534225, + 0 + ] + }, + { + "children": [ + 73, + 82, + 84 + ], + "name": "ORG-palm.04.L_048", + "rotation": [ + -0.13570015132427216, + -0.18749415874481201, + -0.27479109168052673, + 0.9332316517829895 + ], + "scale": [ + 0.99999988079071045, + 0.99999988079071045, + 1.0000003576278687 + ], + "translation": [ + 0.044579252600669861, + 0.32914406061172485, + 0.0039984434843063354 + ] + }, + { + "children": [ + 74, + 80 + ], + "name": "ORG-f_pinky.01.L_049", + "rotation": [ + 0.35057204961776733, + -0.17872533202171326, + 0.01533847488462925, + 0.91919606924057007 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.074802346527576447, + 4.4703483581542969e-08 + ] + }, + { + "children": [ + 75, + 78 + ], + "name": "ORG-f_pinky.02.L_050", + "rotation": [ + 0.04151814803481102, + -0.02898799441754818, + -0.020971952006220818, + 0.99849694967269897 + ], + "scale": [ + 1.0000002384185791, + 1, + 0.9999997615814209 + ], + "translation": [ + 8.9406967163085938e-08, + 0.027876280248165131, + 2.9802322387695312e-08 + ] + }, + { + "children": [ + 76 + ], + "name": "ORG-f_pinky.03.L_051", + "rotation": [ + 0.082881756126880646, + -0.044399142265319824, + -0.02859189547598362, + 0.99515920877456665 + ], + "scale": [ + 1.0000001192092896, + 1.0000003576278687, + 1.0000001192092896 + ], + "translation": [ + -2.9802322387695312e-08, + 0.022592402994632721, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 77 + ], + "name": "DEF-f_pinky.03.L_052", + "rotation": [ + 1.2572860974557898e-08, + -6.5192575782191398e-09, + 2.6077037418303917e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999958276748657, + 0.99999970197677612 + ], + "translation": [ + 1.1920928955078125e-07, + 4.4703483581542969e-08, + 1.1548399925231934e-07 + ] + }, + { + "name": "DEF-f_pinky.03.L_end_0226", + "rotation": [ + 2.7755575615628914e-17, + -1.1555579666323415e-33, + -4.163336342344337e-17, + 1 + ], + "translation": [ + 0, + 0.015017727389931679, + 0 + ] + }, + { + "children": [ + 79 + ], + "name": "DEF-f_pinky.02.L_053", + "rotation": [ + -1.4901161193847656e-08, + -4.190952473948073e-09, + -5.5879354476928711e-09, + 1 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + 0, + -1.0430812835693359e-07, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_pinky.02.L_end_0188", + "rotation": [ + 0, + -0, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022592443972826004, + 0 + ] + }, + { + "children": [ + 81 + ], + "name": "DEF-f_pinky.01.L.02_054", + "rotation": [ + 5.5413686084193614e-08, + -1.3876703519599687e-07, + 4.3306499719619751e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000002384185791 + ], + "translation": [ + -1.1102230246251565e-16, + 0.013938196003437042, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_pinky.01.L.02_end_0196", + "rotation": [ + -1.3877787807814457e-17, + -0, + 0, + 1 + ], + "translation": [ + 0, + 0.013938155025243759, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 83 + ], + "name": "DEF-palm.04.L_055", + "rotation": [ + -5.4016716433125112e-08, + -7.4505814851022478e-09, + -3.5390264940815541e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 1 + ], + "translation": [ + 7.4505805969238281e-09, + -5.2154064178466797e-08, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-palm.04.L_end_0199", + "rotation": [ + 3.4694469519536142e-17, + 9.6296497219361793e-34, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.07480233907699585, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 85 + ], + "name": "DEF-f_pinky.01.L.01_056", + "rotation": [ + 0.35057196021080017, + -0.1787249892950058, + 0.01533868070691824, + 0.91919606924057007 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + 5.9604644775390625e-08, + 0.074802346527576447, + 4.4703483581542969e-08 + ] + }, + { + "name": "DEF-f_pinky.01.L.01_end_0175", + "rotation": [ + -1.3877787807814457e-17, + -0, + 0, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 87 + ], + "name": "DEF-hand.L_057", + "rotation": [ + 1.5832480215749456e-08, + 1.071020676590706e-07, + -1.7695125364980413e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + 2.9802322387695312e-08, + 3.2037496566772461e-07, + 8.9406967163085938e-08 + ] + }, + { + "name": "DEF-hand.L_end_0216", + "rotation": [ + -4.163336342344337e-17, + -5.5511151231257827e-17, + -2.311115933264683e-33, + 1 + ], + "translation": [ + 0, + 0.33694693446159363, + 0 + ] + }, + { + "children": [ + 89 + ], + "name": "DEF-forearm.02.L_058", + "rotation": [ + -1.2172192782600177e-06, + 0.84375160932540894, + 8.0771354760145186e-07, + 0.53673380613327026 + ], + "scale": [ + 1, + 1.0000050067901611, + 1 + ], + "translation": [ + 7.4505805969238281e-08, + 0.12896060943603516, + 6.7055225372314453e-08 + ] + }, + { + "name": "DEF-forearm.02.L_end_0252", + "rotation": [ + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 7.7037197775489434e-34, + 1 + ], + "translation": [ + 0, + 0.128960981965065, + 0 + ] + }, + { + "children": [ + 91 + ], + "name": "MCH-forearm.01.L_059", + "rotation": [ + 7.0780487249066937e-08, + -6.1560399444715586e-07, + 4.353940425971814e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999630451202393, + 1.0000007152557373 + ], + "translation": [ + 1.8440186977386475e-07, + 3.7252902984619141e-08, + 9.6857547760009766e-08 + ] + }, + { + "children": [ + 92 + ], + "name": "MCH-forearm_smth.01.L_060", + "rotation": [ + -0.25531646609306335, + -0.090401075780391693, + 0.19322767853736877, + 0.94302928447723389 + ], + "scale": [ + 0.99999994039535522, + 0.99999648332595825, + 1 + ], + "translation": [ + 0.04432658851146698, + -0.11071411520242691, + 0.071930333971977234 + ] + }, + { + "children": [ + 93 + ], + "name": "DEF-forearm.01.L_061", + "rotation": [ + 0.25531658530235291, + 0.090401031076908112, + -0.19322755932807922, + 0.94302928447723389 + ], + "scale": [ + 1.0000011920928955, + 1, + 1.0000022649765015 + ], + "translation": [ + 2.2204460492503131e-16, + 0.13927145302295685, + 2.9802322387695312e-08 + ] + }, + { + "name": "DEF-forearm.01.L_end_0225", + "rotation": [ + -2.7755575615628914e-17, + 8.6736173798840355e-18, + 2.4074124304840448e-34, + 1 + ], + "translation": [ + 0, + 0.12896108627319336, + 0 + ] + }, + { + "children": [ + 95 + ], + "name": "DEF-upper_arm.02.L_062", + "rotation": [ + -2.1606697941933817e-07, + -4.827974862564588e-06, + -3.7252840812129762e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 0.99999886751174927, + 1.0000002384185791 + ], + "translation": [ + 2.384185791015625e-07, + 0.13927152752876282, + 2.9802322387695312e-08 + ] + }, + { + "name": "DEF-upper_arm.02.L_end_0219", + "rotation": [ + -2.7755575615628914e-17, + 4.8572257327350599e-17, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + -2.2204460492503131e-16, + 0.13927137851715088, + 0 + ] + }, + { + "children": [ + 97 + ], + "name": "DEF-shoulder.L_063", + "rotation": [ + -7.0340329116902467e-09, + 8.2403872170289105e-08, + 3.7182417145231739e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.9999997615814209 + ], + "translation": [ + -1.5832483768463135e-08, + 3.119930624961853e-08, + 5.5312193580903113e-07 + ] + }, + { + "name": "DEF-shoulder.L_end_03", + "rotation": [ + 3.1848438816761693e-19, + -8.4025668367626594e-19, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.17531237006187439, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 99, + 179 + ], + "name": "ORG-shoulder.R_064", + "rotation": [ + -0.69586676359176636, + 0.39777570962905884, + 0.29703021049499512, + 0.51895761489868164 + ], + "scale": [ + 0.99999964237213135, + 0.9999997615814209, + 1 + ], + "translation": [ + -0.023130098357796669, + 0.26697859168052673, + 0.14965280890464783 + ] + }, + { + "children": [ + 100, + 177 + ], + "name": "ORG-upper_arm.R_065", + "rotation": [ + 0.30548635125160217, + 0.88275980949401855, + -0.059704620391130447, + -0.35192129015922546 + ], + "scale": [ + 1, + 1.0000003576278687, + 1.0000003576278687 + ], + "translation": [ + 0.027315555140376091, + 0.33446064591407776, + 0.019757639616727829 + ] + }, + { + "children": [ + 101, + 171, + 173 + ], + "name": "ORG-forearm.R_066", + "rotation": [ + 0.15077365934848785, + -0.1109679788351059, + 0.18219514191150665, + 0.96527630090713501 + ], + "scale": [ + 0.9999997615814209, + 1, + 1 + ], + "translation": [ + 2.9802322387695312e-08, + 0.27854278683662415, + -4.4703483581542969e-08 + ] + }, + { + "children": [ + 102, + 127, + 141, + 155, + 169 + ], + "name": "ORG-hand.R_067", + "rotation": [ + 0.17278601229190826, + -0.79830765724182129, + -0.22684118151664734, + 0.53046482801437378 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + -4.0978193283081055e-08, + 0.25792205333709717, + -2.0861625671386719e-07 + ] + }, + { + "children": [ + 103, + 112, + 121, + 123, + 125 + ], + "name": "ORG-palm.01.R_068", + "rotation": [ + -0.18320606648921967, + 0.11237333714962006, + 0.12725980579853058, + 0.96830403804779053 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + -0.0073304623365402222, + 0.34354400634765625, + -0.021197803318500519 + ] + }, + { + "children": [ + 104, + 110 + ], + "name": "ORG-f_index.01.R_069", + "rotation": [ + 0.17803950607776642, + 0.038298286497592926, + 0.044083643704652786, + 0.98228907585144043 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + 7.0780515670776367e-08, + 0.069626003503799438, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 105, + 108 + ], + "name": "ORG-f_index.02.R_070", + "rotation": [ + 0.077882900834083557, + 0.038419179618358612, + 9.6835348813328892e-05, + 0.99622207880020142 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + 1.1362135410308838e-07, + 0.045040056109428406, + -8.1956386566162109e-08 + ] + }, + { + "children": [ + 106 + ], + "name": "ORG-f_index.03.R_071", + "rotation": [ + 0.11234383285045624, + 0.058250222355127335, + 0.038226824253797531, + 0.99122375249862671 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-08, + 0.028223462402820587, + -1.4901161193847656e-08 + ] + }, + { + "children": [ + 107 + ], + "name": "DEF-f_index.03.R_072", + "rotation": [ + 1.0710209608078003e-08, + 1.6880221664905548e-08, + -7.4505805969238281e-09, + 1 + ], + "translation": [ + 1.4901161193847656e-08, + -5.2154064178466797e-08, + 7.7299773693084717e-08 + ] + }, + { + "name": "DEF-f_index.03.R_end_0239", + "rotation": [ + -6.9388939039072284e-18, + -2.7755575615628914e-17, + -1.9259299443872359e-34, + 1 + ], + "translation": [ + 0, + 0.022818643599748611, + 0 + ] + }, + { + "children": [ + 109 + ], + "name": "DEF-f_index.02.R_073", + "rotation": [ + -1.3504178220102858e-08, + -1.4901161193847656e-08, + -1.0244548320770264e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.99999994039535522 + ], + "translation": [ + 6.7055225372314453e-08, + 5.2154064178466797e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_index.02.R_end_0183", + "rotation": [ + -1.214306433183765e-17, + -3.4694469519536142e-18, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.028223402798175812, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 111 + ], + "name": "DEF-f_index.01.R.02_074", + "rotation": [ + 6.3609331846237183e-07, + 9.4436103381667635e-07, + -1.9883735546954995e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1 + ], + "translation": [ + -3.7252902984619141e-08, + 0.022520154714584351, + 5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_index.01.R.02_end_0205", + "rotation": [ + 4.5102810375396984e-17, + -6.9388939039072284e-18, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.022519970312714577, + 0 + ] + }, + { + "children": [ + 113, + 119 + ], + "name": "ORG-thumb.01.R_075", + "rotation": [ + 0.0063957162201404572, + -0.65799009799957275, + -0.26252901554107666, + 0.70575255155563354 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + 0.0086900033056735992, + -0.0083239078521728516, + 0.02302435040473938 + ] + }, + { + "children": [ + 114, + 117 + ], + "name": "ORG-thumb.02.R_076", + "rotation": [ + 0.16518232226371765, + -0.0088785029947757721, + 0.057382598519325256, + 0.98455238342285156 + ], + "scale": [ + 1, + 0.9999997615814209, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-08, + 0.041744723916053772, + -5.2154064178466797e-08 + ] + }, + { + "children": [ + 115 + ], + "name": "ORG-thumb.03.R_077", + "rotation": [ + 0.021510619670152664, + -0.016420742496848106, + 0.038739204406738281, + 0.99888283014297485 + ], + "scale": [ + 0.99999958276748657, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 0, + 0.033446311950683594, + -1.9371509552001953e-07 + ] + }, + { + "children": [ + 116 + ], + "name": "DEF-thumb.03.R_078", + "rotation": [ + -2.2351734685344127e-08, + -2.4214381610931923e-08, + -8.3819017504538351e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000001192092896, + 1.0000003576278687 + ], + "translation": [ + 2.9802322387695312e-08, + 2.9802322387695312e-08, + 4.0978193283081055e-08 + ] + }, + { + "name": "DEF-thumb.03.R_end_0247", + "rotation": [ + 5.5511151231257827e-17, + -4.163336342344337e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + 0, + 0.020790537819266319, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 118 + ], + "name": "DEF-thumb.02.R_079", + "rotation": [ + 1.8160788428644992e-08, + 3.166496753692627e-08, + 5.5879363358712908e-09, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 1.0000001192092896 + ], + "translation": [ + -1.1102230246251565e-16, + -1.4901161193847656e-07, + -2.644956111907959e-07 + ] + }, + { + "name": "DEF-thumb.02.R_end_0190", + "rotation": [ + -5.5511151231257827e-17, + 1.3877787807814457e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.033446468412876129, + 0 + ] + }, + { + "children": [ + 120 + ], + "name": "DEF-thumb.01.R.02_080", + "rotation": [ + -4.8894438720026301e-08, + -2.6775524020195007e-08, + 7.8580351114965197e-09, + 1 + ], + "scale": [ + 1, + 0.99999994039535522, + 1 + ], + "translation": [ + 2.9802322387695312e-07, + 0.020872399210929871, + 2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thumb.01.R.02_end_0215", + "rotation": [ + -6.9388939039072284e-18, + 2.7755575615628914e-17, + -3.1225022567582528e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.0208723284304142, + 0 + ] + }, + { + "children": [ + 122 + ], + "name": "DEF-palm.01.R_081", + "rotation": [ + 1.4901160305669237e-08, + 1.6763804566721774e-08, + 3.2596290111541748e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1, + 1.0000001192092896 + ], + "translation": [ + 1.9744038581848145e-07, + -1.4901161193847656e-07, + -4.1723251342773438e-07 + ] + }, + { + "name": "DEF-palm.01.R_end_0184", + "rotation": [ + -3.4694469519536142e-17, + 1.9259299443872359e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.069626055657863617, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 124 + ], + "name": "DEF-f_index.01.R.01_082", + "rotation": [ + 0.17803849279880524, + 0.038296058773994446, + 0.04408390074968338, + 0.98228943347930908 + ], + "scale": [ + 1.0000002384185791, + 0.99999982118606567, + 0.9999997615814209 + ], + "translation": [ + 7.0780515670776367e-08, + 0.069626003503799438, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_index.01.R.01_end_0229", + "rotation": [ + 5.8980598183211441e-17, + -6.9388939039072284e-18, + 4.0926011318228762e-34, + 1 + ], + "translation": [ + 0, + 0.022519990801811218, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 126 + ], + "name": "DEF-thumb.01.R.01_083", + "rotation": [ + 0.0063957972452044487, + -0.65798979997634888, + -0.26252907514572144, + 0.70575278997421265 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + 0.0086900033056735992, + -0.0083239078521728516, + 0.02302435040473938 + ] + }, + { + "name": "DEF-thumb.01.R.01_end_0179", + "rotation": [ + 8.6736173798840355e-18, + 2.0876779670603826e-34, + 2.4069288229178198e-17, + 1 + ], + "translation": [ + 0, + 0.020872326567769051, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 128, + 137, + 139 + ], + "name": "ORG-palm.02.R_084", + "rotation": [ + -0.17811873555183411, + 0.13169914484024048, + 0.16719585657119751, + 0.960715651512146 + ], + "scale": [ + 0.99999988079071045, + 1.0000003576278687, + 1.0000004768371582 + ], + "translation": [ + -0.023247450590133667, + 0.34059670567512512, + -0.015326261520385742 + ] + }, + { + "children": [ + 129, + 135 + ], + "name": "ORG-f_middle.01.R_085", + "rotation": [ + 0.21749134361743927, + 0.069006524980068207, + 0.003025722922757268, + 0.97361516952514648 + ], + "scale": [ + 0.99999970197677612, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + 8.5914507508277893e-08, + 0.068187147378921509, + -1.0430812835693359e-07 + ] + }, + { + "children": [ + 130, + 133 + ], + "name": "ORG-f_middle.02.R_086", + "rotation": [ + 0.11846215277910233, + 0.085242263972759247, + 0.013570684939622879, + 0.9891999363899231 + ], + "scale": [ + 1.0000002384185791, + 0.99999994039535522, + 0.99999988079071045 + ], + "translation": [ + -7.4505805969238281e-09, + 0.049540482461452484, + -2.6077032089233398e-08 + ] + }, + { + "children": [ + 131 + ], + "name": "ORG-f_middle.03.R_087", + "rotation": [ + 0.056476786732673645, + 0.045752864331007004, + 0.025043459609150887, + 0.99704056978225708 + ], + "scale": [ + 1.0000002384185791, + 1, + 1.0000003576278687 + ], + "translation": [ + -5.9604644775390625e-08, + 0.032196070998907089, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 132 + ], + "name": "DEF-f_middle.03.R_088", + "rotation": [ + 3.9581213862049935e-09, + 1.0128132998943329e-08, + 2.7939679014821195e-08, + 1 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999988079071045 + ], + "translation": [ + -1.4901161193847656e-08, + 1.5646219253540039e-07, + 2.7939677238464355e-09 + ] + }, + { + "name": "DEF-f_middle.03.R_end_0233", + "rotation": [ + -2.7755575615628914e-17, + -5.5511151231257827e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022704442963004112, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 134 + ], + "name": "DEF-f_middle.02.R_089", + "rotation": [ + -1.862645149230957e-09, + 3.5390257835388184e-08, + -2.2584575987139033e-08, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.9999997615814209, + 1.0000001192092896 + ], + "translation": [ + -5.9604644775390625e-08, + 2.0489096641540527e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_middle.02.R_end_0202", + "rotation": [ + -6.9388939039072284e-18, + 3.8518598887744717e-34, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.032196018844842911, + 0 + ] + }, + { + "children": [ + 136 + ], + "name": "DEF-f_middle.01.R.02_090", + "rotation": [ + -5.871988832950592e-07, + -9.4156717977966764e-07, + 1.8207354912647133e-07, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + -7.4505805969238281e-08, + 0.02477022260427475, + -1.7881393432617188e-07 + ] + }, + { + "name": "DEF-f_middle.01.R.02_end_0209", + "rotation": [ + -2.4286128663675299e-17, + -1.0408340855860843e-17, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.024770231917500496, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 138 + ], + "name": "DEF-palm.02.R_091", + "rotation": [ + 5.5879354476928711e-09, + 8.119969585607123e-09, + -3.1723177418285786e-09, + 1 + ], + "scale": [ + 0.99999988079071045, + 0.99999982118606567, + 0.99999994039535522 + ], + "translation": [ + 1.5937257558107376e-07, + 9.3132257461547852e-08, + -1.4901161193847656e-08 + ] + }, + { + "name": "DEF-palm.02.R_end_0228", + "rotation": [ + -2.7755575615628914e-17, + 7.7037197775489434e-34, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.068187080323696136, + 0 + ] + }, + { + "children": [ + 140 + ], + "name": "DEF-f_middle.01.R.01_092", + "rotation": [ + 0.2174726128578186, + 0.06904292106628418, + 0.0028579561039805412, + 0.97361725568771362 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + 8.5914507508277893e-08, + 0.068187147378921509, + -1.0430812835693359e-07 + ] + }, + { + "name": "DEF-f_middle.01.R.01_end_0227", + "rotation": [ + 2.8888949165808538e-34, + -1.0408340855860843e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.024770215153694153, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 142, + 151, + 153 + ], + "name": "ORG-palm.03.R_093", + "rotation": [ + -0.17214220762252808, + 0.16701871156692505, + 0.22579613327980042, + 0.94418638944625854 + ], + "scale": [ + 0.99999922513961792, + 0.99999946355819702, + 0.99999970197677612 + ], + "translation": [ + -0.03495490550994873, + 0.33536878228187561, + -0.0064072161912918091 + ] + }, + { + "children": [ + 143, + 149 + ], + "name": "ORG-f_ring.01.R_094", + "rotation": [ + 0.28130209445953369, + 0.10888320952653885, + -0.021744726225733757, + 0.95317405462265015 + ], + "scale": [ + 0.99999994039535522, + 0.99999988079071045, + 1 + ], + "translation": [ + 8.1956386566162109e-08, + 0.069797351956367493, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 144, + 147 + ], + "name": "ORG-f_ring.02.R_095", + "rotation": [ + 0.073152028024196625, + 0.052601080387830734, + 0.024043356999754906, + 0.99564242362976074 + ], + "scale": [ + 1.0000001192092896, + 0.9999997615814209, + 0.9999997615814209 + ], + "translation": [ + -8.9406967163085938e-08, + 0.044816721230745316, + 8.9406967163085938e-08 + ] + }, + { + "children": [ + 145 + ], + "name": "ORG-f_ring.03.R_096", + "rotation": [ + 0.1502411812543869, + 0.10080226510763168, + 0.057818211615085602, + 0.98179608583450317 + ], + "scale": [ + 1.0000003576278687, + 1.0000002384185791, + 1.0000001192092896 + ], + "translation": [ + 1.4901161193847656e-08, + 0.031801030039787292, + -7.4505805969238281e-09 + ] + }, + { + "children": [ + 146 + ], + "name": "DEF-f_ring.03.R_097", + "rotation": [ + -1.6763802790364934e-08, + -3.7252891882388894e-09, + -1.8626447939595892e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + -1.1920928955078125e-07, + 2.8312206268310547e-07, + 1.7508864402770996e-07 + ] + }, + { + "name": "DEF-f_ring.03.R_end_0220", + "rotation": [ + -2.7755575615628914e-17, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.01855008490383625, + 0 + ] + }, + { + "children": [ + 148 + ], + "name": "DEF-f_ring.02.R_098", + "rotation": [ + 1.1175870007207322e-08, + -9.3132257461547852e-09, + -1.4901161193847656e-08, + 1 + ], + "scale": [ + 1, + 1.0000001192092896, + 1 + ], + "translation": [ + 5.9604644775390625e-08, + 4.0978193283081055e-08, + -5.2154064178466797e-08 + ] + }, + { + "name": "DEF-f_ring.02.R_end_0208", + "rotation": [ + 2.7755575615628914e-17, + -1.5407439555097887e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.031800936907529831, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 150 + ], + "name": "DEF-f_ring.01.R.02_099", + "rotation": [ + -6.50063157081604e-07, + -9.6298754215240479e-07, + -7.4505823732806675e-09, + 1 + ], + "scale": [ + 0.99999982118606567, + 0.99999988079071045, + 1.0000001192092896 + ], + "translation": [ + -1.0430812835693359e-07, + 0.022408265620470047, + 2.0861625671386719e-07 + ] + }, + { + "name": "DEF-f_ring.01.R.02_end_0200", + "rotation": [ + 2.0816681711721685e-17, + -1.3877787807814457e-17, + 2.8888949165808538e-34, + 1 + ], + "translation": [ + 0, + 0.022408328950405121, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 152 + ], + "name": "DEF-palm.03.R_0100", + "rotation": [ + -2.2351743567128324e-08, + 3.5390261388101862e-08, + -5.5879354476928711e-09, + 1 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999994039535522 + ], + "translation": [ + 2.2351741790771484e-08, + -1.3411045074462891e-07, + -2.9802322387695312e-08 + ] + }, + { + "name": "DEF-palm.03.R_end_0211", + "rotation": [ + 3.4694469519536142e-17, + -2.7755575615628914e-17, + 9.6296497219361793e-34, + 1 + ], + "translation": [ + 0, + 0.069797389209270477, + -1.1102230246251565e-16 + ] + }, + { + "children": [ + 154 + ], + "name": "DEF-f_ring.01.R.01_0101", + "rotation": [ + 0.28114888072013855, + 0.10887622833251953, + -0.021684395149350166, + 0.95322144031524658 + ], + "translation": [ + 8.1956386566162109e-08, + 0.069797351956367493, + 1.1102230246251565e-16 + ] + }, + { + "name": "DEF-f_ring.01.R.01_end_0178", + "rotation": [ + 2.7755575615628914e-17, + 4.163336342344337e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.022408317774534225, + 0 + ] + }, + { + "children": [ + 156, + 165, + 167 + ], + "name": "ORG-palm.04.R_0102", + "rotation": [ + -0.13570001721382141, + 0.18749432265758514, + 0.27479091286659241, + 0.93323177099227905 + ], + "scale": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "translation": [ + -0.044579654932022095, + 0.32914397120475769, + 0.0039984807372093201 + ] + }, + { + "children": [ + 157, + 163 + ], + "name": "ORG-f_pinky.01.R_0103", + "rotation": [ + 0.35057228803634644, + 0.17872516810894012, + -0.015338595025241375, + 0.91919589042663574 + ], + "scale": [ + 0.99999988079071045, + 0.99999970197677612, + 1.0000002384185791 + ], + "translation": [ + -2.9802322387695312e-08, + 0.074802443385124207, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 158, + 161 + ], + "name": "ORG-f_pinky.02.R_0104", + "rotation": [ + 0.041517704725265503, + 0.028988009318709373, + 0.020971883088350296, + 0.99849694967269897 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 0.9999995231628418 + ], + "translation": [ + -5.9604644775390625e-08, + 0.027876414358615875, + -1.4901161193847656e-08 + ] + }, + { + "children": [ + 159 + ], + "name": "ORG-f_pinky.03.R_0105", + "rotation": [ + 0.082881249487400055, + 0.04439912736415863, + 0.028591996058821678, + 0.99515926837921143 + ], + "scale": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + -2.9802322387695312e-08, + 0.02259238064289093, + -5.9604644775390625e-08 + ] + }, + { + "children": [ + 160 + ], + "name": "DEF-f_pinky.03.R_0106", + "rotation": [ + 2.3283064365386963e-09, + -1.8742866814136505e-08, + -1.862645149230957e-08, + 1 + ], + "translation": [ + -2.9802322387695312e-08, + 4.4703483581542969e-08, + -3.8184225559234619e-08 + ] + }, + { + "name": "DEF-f_pinky.03.R_end_0242", + "rotation": [ + 2.7755575615628914e-17, + 2.7755575615628914e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.015017727389931679, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 162 + ], + "name": "DEF-f_pinky.02.R_0107", + "rotation": [ + -5.5879345595144514e-09, + 6.5192580223083496e-09, + -1.8626458597736928e-08, + 1 + ], + "scale": [ + 0.9999997615814209, + 0.99999958276748657, + 1.0000001192092896 + ], + "translation": [ + -1.1102230246251565e-16, + -2.9802322387695312e-08, + -1.2665987014770508e-07 + ] + }, + { + "name": "DEF-f_pinky.02.R_end_01", + "rotation": [ + -2.7755575615628914e-17, + -5.5511151231257827e-17, + -1.5407439555097887e-33, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.022592443972826004, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 164 + ], + "name": "DEF-f_pinky.01.R.02_0108", + "rotation": [ + -3.7252902984619141e-08, + 6.3329935073852539e-08, + -3.7252902984619141e-08, + 1 + ], + "scale": [ + 1, + 1, + 0.99999988079071045 + ], + "translation": [ + -5.9604644775390625e-08, + 0.013938106596469879, + 1.4901161193847656e-08 + ] + }, + { + "name": "DEF-f_pinky.01.R.02_end_0198", + "translation": [ + 2.2204460492503131e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 166 + ], + "name": "DEF-palm.04.R_0109", + "rotation": [ + -3.7252902984619141e-09, + -7.4505805969238281e-09, + -3.166496753692627e-08, + 1 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + -4.4703483581542969e-08, + 1.0430812835693359e-07, + -1.1920928955078125e-07 + ] + }, + { + "name": "DEF-palm.04.R_end_0235", + "rotation": [ + 4.163336342344337e-17, + -2.311115933264683e-33, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.07480233907699585, + 1.1102230246251565e-16 + ] + }, + { + "children": [ + 168 + ], + "name": "DEF-f_pinky.01.R.01_0110", + "rotation": [ + 0.35071709752082825, + 0.17868633568286896, + -0.015267206355929375, + 0.91914939880371094 + ], + "scale": [ + 0.99999982118606567, + 0.9999997615814209, + 1.0000002384185791 + ], + "translation": [ + -2.9802322387695312e-08, + 0.074802443385124207, + -5.9604644775390625e-08 + ] + }, + { + "name": "DEF-f_pinky.01.R.01_end_0181", + "rotation": [ + -4.163336342344337e-17, + 5.5511151231257827e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.013938155025243759, + 0 + ] + }, + { + "children": [ + 170 + ], + "name": "DEF-hand.R_0111", + "rotation": [ + 2.7939677238464355e-08, + -2.3283067918100642e-08, + -7.4505805969238281e-08, + 1 + ], + "scale": [ + 0.99999982118606567, + 1.0000001192092896, + 0.99999994039535522 + ], + "translation": [ + -1.9371509552001953e-07, + 2.0116567611694336e-07, + 1.9371509552001953e-07 + ] + }, + { + "name": "DEF-hand.R_end_0177", + "rotation": [ + 6.9388939039072284e-18, + 2.7755575615628914e-17, + -1.9259299443872359e-34, + 1 + ], + "translation": [ + 0, + 0.33694693446159363, + -5.5511151231257827e-17 + ] + }, + { + "children": [ + 172 + ], + "name": "DEF-forearm.02.R_0112", + "rotation": [ + -6.8993875856904197e-07, + -0.83288723230361938, + 1.0098485603293739e-08, + 0.55344271659851074 + ], + "scale": [ + 0.99999934434890747, + 1.0000036954879761, + 0.9999997615814209 + ], + "translation": [ + -7.4505805969238281e-08, + 0.12896047532558441, + -2.9802322387695312e-08 + ] + }, + { + "name": "DEF-forearm.02.R_end_0203", + "rotation": [ + -2.7755575615628914e-17, + -1.3877787807814457e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.128960981965065, + 2.7755575615628914e-17 + ] + }, + { + "children": [ + 174 + ], + "name": "MCH-forearm.01.R_0113", + "rotation": [ + 1.0896486912770342e-07, + -1.862645149230957e-08, + -1.4994313346505805e-07, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999624490737915, + 1 + ], + "translation": [ + -1.1548399925231934e-07, + -1.5646219253540039e-07, + -3.7252902984619141e-09 + ] + }, + { + "children": [ + 175 + ], + "name": "MCH-forearm_smth.01.R_0114", + "rotation": [ + -0.25531548261642456, + 0.090401165187358856, + -0.19322697818279266, + 0.94302970170974731 + ], + "scale": [ + 1.0000002384185791, + 1.0000007152557373, + 1.0000003576278687 + ], + "translation": [ + -0.044326566159725189, + -0.11071465164422989, + 0.071930363774299622 + ] + }, + { + "children": [ + 176 + ], + "name": "DEF-forearm.01.R_0115", + "rotation": [ + 0.25531551241874695, + -0.090401187539100647, + 0.19322685897350311, + 0.94302970170974731 + ], + "scale": [ + 1.0000004768371582, + 0.99999749660491943, + 1.0000007152557373 + ], + "translation": [ + -2.9802322387695312e-08, + 0.13927140831947327, + -1.7881393432617188e-07 + ] + }, + { + "name": "DEF-forearm.01.R_end_0207", + "rotation": [ + -2.7755575615628914e-17, + -1.0408340855860843e-17, + 1.0408340855860843e-17, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.12896108627319336, + 0 + ] + }, + { + "children": [ + 178 + ], + "name": "DEF-upper_arm.02.R_0116", + "rotation": [ + -2.0861637040070491e-07, + 1.0663641660357825e-05, + -5.5879390004065499e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999898672103882, + 1.0000002384185791 + ], + "translation": [ + -8.1956386566162109e-08, + 0.13927140831947327, + 8.9406967163085938e-08 + ] + }, + { + "name": "DEF-upper_arm.02.R_end_0201", + "rotation": [ + 2.7755575615628914e-17, + 4.163336342344337e-17, + -5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.13927137851715088, + 0 + ] + }, + { + "children": [ + 180 + ], + "name": "DEF-shoulder.R_0117", + "rotation": [ + -6.8685035436999442e-09, + -3.1981471693143249e-08, + 6.6938348197709274e-08, + 1 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 6.0535967350006104e-08, + 6.0535967350006104e-09, + 1.9711660570465028e-07 + ] + }, + { + "name": "DEF-shoulder.R_end_0187", + "rotation": [ + -2.439454888092385e-19, + -2.0328790734103208e-19, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.17531237006187439, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 182 + ], + "name": "DEF-neck_0118", + "rotation": [ + -0.27045553922653198, + 0.0173672866076231, + 0.016690928488969803, + 0.96243107318878174 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000003576278687 + ], + "translation": [ + 4.8021320253610611e-10, + 0.30786621570587158, + -2.310712261532899e-07 + ] + }, + { + "name": "DEF-neck_end_0192", + "rotation": [ + -4.163336342344337e-17, + 3.4694469519536142e-18, + 8.6736173798840355e-19, + 1 + ], + "translation": [ + -6.9388939039072284e-18, + 0.19137141108512878, + 5.5511151231257827e-17 + ] + }, + { + "children": [ + 184 + ], + "name": "DEF-chest_0119", + "rotation": [ + 0.34367910027503967, + 0.0062861694023013115, + -0.0083904145285487175, + 0.93902873992919922 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 1 + ], + "translation": [ + -4.6566128730773926e-10, + 0.77674132585525513, + -6.2645995058119297e-09 + ] + }, + { + "name": "DEF-chest_end_0204", + "rotation": [ + -1.5612034346858506e-38, + 2.3039296165316969e-19, + 6.7762635780344027e-20, + 1 + ], + "translation": [ + 0, + 0.30786621570587158, + 0 + ] + }, + { + "children": [ + 186, + 199 + ], + "name": "ORG-thigh.L_0120", + "rotation": [ + 0.55087316036224365, + 0.76001483201980591, + -0.12418584525585175, + -0.32170495390892029 + ], + "scale": [ + 0.99999994039535522, + 1, + 0.99999988079071045 + ], + "translation": [ + 0.21592012047767639, + 0.36957693099975586, + -0.15007570385932922 + ] + }, + { + "children": [ + 187, + 193, + 195 + ], + "name": "ORG-shin.L_0121", + "rotation": [ + -0.21334272623062134, + 0.27992528676986694, + 0.75936949253082275, + 0.54725193977355957 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -8.1956386566162109e-08, + 0.42556756734848022, + 7.4505805969238281e-08 + ] + }, + { + "children": [ + 188, + 191 + ], + "name": "ORG-foot.L_0122", + "rotation": [ + -0.5201650857925415, + 0.03343529999256134, + -0.058115024119615555, + 0.85143011808395386 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + 1.6763806343078613e-08, + 0.4787544310092926, + -2.7939677238464355e-08 + ] + }, + { + "children": [ + 189 + ], + "name": "ORG-toe.L_0124", + "rotation": [ + 0.00023341859923675656, + 0.95152968168258667, + -0.30752530694007874, + -0.0044053308665752411 + ], + "scale": [ + 0.99999994039535522, + 1.0000003576278687, + 1.0000001192092896 + ], + "translation": [ + 7.2736838774289936e-09, + 0.3134346604347229, + -2.1420419216156006e-08 + ] + }, + { + "children": [ + 190 + ], + "name": "DEF-toe.L_0125", + "rotation": [ + 2.423621836555867e-08, + 1.8335414964099073e-08, + -4.2928155474797336e-10, + 1 + ], + "scale": [ + 0.99999994039535522, + 0.99999994039535522, + 0.99999988079071045 + ], + "translation": [ + 4.1240127757191658e-08, + -2.4214386940002441e-08, + -2.1420419216156006e-08 + ] + }, + { + "name": "DEF-toe.L_end_0206", + "rotation": [ + -3.4694469519536142e-18, + -8.6736173798840355e-19, + -1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.3084145188331604, + -6.9388939039072284e-18 + ] + }, + { + "children": [ + 192 + ], + "name": "DEF-foot.L_0126", + "rotation": [ + -6.6152992417300993e-08, + 7.1422604719373339e-08, + 1.7025736376297118e-09, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + 1.6934791347011924e-08, + 3.166496753692627e-08, + -1.862645149230957e-08 + ] + }, + { + "name": "DEF-foot.L_end_0213", + "rotation": [ + 8.3266726846886741e-17, + 1.4444474582904269e-34, + 1.7347234759768071e-18, + 1 + ], + "translation": [ + 0, + 0.31343463063240051, + 0 + ] + }, + { + "children": [ + 194 + ], + "name": "DEF-shin.02.L_0127", + "rotation": [ + -1.0089339497199035e-07, + 0.039239507168531418, + 2.4005871068766282e-07, + 0.99922984838485718 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.9999995231628418 + ], + "translation": [ + 1.1548399925231934e-07, + 0.23937708139419556, + 1.601874828338623e-07 + ] + }, + { + "name": "DEF-shin.02.L_end_0241", + "rotation": [ + 1.3877787807814457e-17, + -2.0816681711721685e-17, + -1.0408340855860843e-17, + 1 + ], + "translation": [ + 0, + 0.2393772304058075, + 0 + ] + }, + { + "children": [ + 196 + ], + "name": "MCH-shin.01.L_0128", + "rotation": [ + 3.5227276384830475e-07, + -3.8766305721082972e-08, + 3.9028236642479897e-08, + 1 + ], + "scale": [ + 0.99999994039535522, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + 1.2270174920558929e-07, + -8.9406967163085938e-08, + 7.4505805969238281e-09 + ] + }, + { + "children": [ + 197 + ], + "name": "MCH-shin_smth.01.L_0129", + "rotation": [ + 0.2789786159992218, + -0.18448325991630554, + -0.78801393508911133, + 0.51688575744628906 + ], + "scale": [ + 1.0000002384185791, + 0.99999958276748657, + 0.99999994039535522 + ], + "translation": [ + -0.15143658220767975, + 0.084600672125816345, + -0.12323391437530518 + ] + }, + { + "children": [ + 198 + ], + "name": "DEF-shin.01.L_0130", + "rotation": [ + -0.27897858619689941, + 0.18448331952095032, + 0.78801393508911133, + 0.51688575744628906 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + 2.2351741790771484e-08, + 0.21278375387191772, + 8.3266726846886741e-17 + ] + }, + { + "name": "DEF-shin.01.L_end_0218", + "rotation": [ + 1.3877787807814457e-17, + 6.5052130349130266e-18, + 4.4452289071905682e-18, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.23937712609767914, + 0 + ] + }, + { + "children": [ + 200 + ], + "name": "DEF-thigh.02.L_0131", + "rotation": [ + -5.1688388680304342e-08, + 5.5879345595144514e-09, + -7.8231067845990765e-08, + 1 + ], + "scale": [ + 1.0000002384185791, + 1.0000003576278687, + 1.0000002384185791 + ], + "translation": [ + -1.4901161193847656e-08, + 0.21278385818004608, + -2.2351741790771484e-08 + ] + }, + { + "name": "DEF-thigh.02.L_end_0214", + "rotation": [ + 5.5511151231257827e-17, + 2.7755575615628914e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + 0, + 0.21278378367424011, + -2.7755575615628914e-17 + ] + }, + { + "children": [ + 202, + 215 + ], + "name": "ORG-thigh.R_0132", + "rotation": [ + -0.55043667554855347, + 0.76018273830413818, + -0.12315189093351364, + 0.32245197892189026 + ], + "scale": [ + 1, + 1, + 0.99999988079071045 + ], + "translation": [ + -0.21592001616954803, + 0.36957699060440063, + -0.15007562935352325 + ] + }, + { + "children": [ + 203, + 209, + 211 + ], + "name": "ORG-shin.R_0133", + "rotation": [ + -0.27897855639457703, + -0.18448290228843689, + -0.78801411390304565, + 0.51688569784164429 + ], + "scale": [ + 1, + 1, + 1.0000001192092896 + ], + "translation": [ + -3.7252902984619141e-08, + 0.42556747794151306, + 2.4214386940002441e-08 + ] + }, + { + "children": [ + 204, + 207 + ], + "name": "ORG-foot.R_0134", + "rotation": [ + -0.44886565208435059, + -0.028899207711219788, + 0.060879826545715332, + 0.89105451107025146 + ], + "scale": [ + 1, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -5.9604644775390625e-08, + 0.47875425219535828, + 3.6088749766349792e-08 + ] + }, + { + "children": [ + 205 + ], + "name": "ORG-toe.R_0135", + "rotation": [ + 0.0023645448964089155, + 0.95931285619735718, + -0.28233495354652405, + -0.00052421912550926208 + ], + "scale": [ + 1.0000001192092896, + 0.99999970197677612, + 1.0000001192092896 + ], + "translation": [ + -2.1085725165903568e-08, + 0.31343460083007812, + 1.9819708541035652e-08 + ] + }, + { + "children": [ + 206 + ], + "name": "DEF-toe.R_0136", + "rotation": [ + 1.3969286172255124e-08, + -9.4369738690147642e-09, + -3.5780090001935605e-10, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + -6.2361664276977535e-08, + -6.0597812989726663e-08, + -3.819059202214703e-08 + ] + }, + { + "name": "DEF-toe.R_end_0250", + "rotation": [ + -1.7347234759768071e-18, + -3.5998900258307764e-21, + -1.3552527156068805e-20, + 1 + ], + "translation": [ + 0, + 0.3084145188331604, + 6.9388939039072284e-18 + ] + }, + { + "children": [ + 208 + ], + "name": "DEF-foot.R_0137", + "rotation": [ + -4.4919353570094245e-08, + -6.7164364736527205e-08, + -2.7357600629329681e-09, + 1 + ], + "scale": [ + 1.0000001192092896, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 9.3423295766115189e-08, + 1.203734427690506e-07, + 7.6761352829635143e-08 + ] + }, + { + "name": "DEF-foot.R_end_0249", + "rotation": [ + 5.5511151231257827e-17, + 4.8148248609680896e-35, + 8.6736173798840355e-19, + 1 + ], + "translation": [ + 0, + 0.31343463063240051, + 2.7755575615628914e-17 + ] + }, + { + "children": [ + 210 + ], + "name": "DEF-shin.02.R_0138", + "rotation": [ + -3.6451157825467817e-07, + -0.032415475696325302, + 2.7714870043382689e-07, + 0.99947446584701538 + ], + "scale": [ + 0.99999964237213135, + 1, + 0.99999970197677612 + ], + "translation": [ + -4.0978193283081055e-08, + 0.23937712609767914, + 1.9316212274134159e-07 + ] + }, + { + "name": "DEF-shin.02.R_end_0236", + "rotation": [ + -1.0408340855860843e-17, + 1.3767389836830631e-34, + -1.3227266504323154e-17, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.2393772304058075, + 0 + ] + }, + { + "children": [ + 212 + ], + "name": "MCH-shin.01.R_0139", + "rotation": [ + 6.2997045802148932e-08, + 1.2815868899451743e-07, + -4.12401206517643e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000002384185791, + 1.0000002384185791 + ], + "translation": [ + -4.0046870708465576e-08, + -6.891787052154541e-08, + 1.704611349850893e-07 + ] + }, + { + "children": [ + 213 + ], + "name": "MCH-shin_smth.01.R_0140", + "rotation": [ + 0.27897858619689941, + 0.18448306620121002, + 0.78801429271697998, + 0.51688528060913086 + ], + "scale": [ + 0.99999970197677612, + 1, + 0.9999997615814209 + ], + "translation": [ + 0.15143664181232452, + 0.084600850939750671, + -0.12323373556137085 + ] + }, + { + "children": [ + 214 + ], + "name": "DEF-shin.01.R_0141", + "rotation": [ + -0.27897855639457703, + -0.18448291718959808, + -0.78801423311233521, + 0.51688545942306519 + ], + "scale": [ + 0.99999994039535522, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + 2.2351741790771484e-08, + 0.21278375387191772, + 1.1175870895385742e-08 + ] + }, + { + "name": "DEF-shin.01.R_end_0194", + "rotation": [ + 3.4694469519536142e-18, + 8.6736173798840355e-19, + 1.2658060363768264e-17, + 1 + ], + "translation": [ + -1.6653345369377348e-16, + 0.23937712609767914, + 0 + ] + }, + { + "children": [ + 216 + ], + "name": "DEF-thigh.02.R_0142", + "rotation": [ + 2.3655590553062211e-07, + -2.7008351111135198e-08, + 7.823108205684548e-08, + 1 + ], + "scale": [ + 1.0000001192092896, + 1.0000002384185791, + 1 + ], + "translation": [ + -7.4505805969238281e-08, + 0.21278373897075653, + 3.3527612686157227e-08 + ] + }, + { + "name": "DEF-thigh.02.R_end_0186", + "rotation": [ + 0, + 0, + 1.3877787807814457e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.21278378367424011, + 0 + ] + }, + { + "children": [ + 218 + ], + "name": "DEF-spine_0143", + "rotation": [ + -0.12614771723747253, + -0.0073608146049082279, + 0.0043073771521449089, + 0.99197483062744141 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1 + ], + "translation": [ + -7.9936057773011271e-15, + 0.40506201982498169, + -7.4505739355856804e-09 + ] + }, + { + "name": "DEF-spine_end_0193", + "rotation": [ + 0, + 0, + 1.3010426069826053e-18, + 1 + ], + "translation": [ + -8.6736173798840355e-19, + 0.77674132585525513, + -2.7755575615628914e-17 + ] + }, + { + "children": [ + 220 + ], + "name": "MCH-shoulder_rh_ns_ch.R_0123", + "rotation": [ + 0.0010375226847827435, + 0.0020420229993760586, + 0.49636015295982361, + 0.86811369657516479 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999994039535522 + ], + "translation": [ + -0.3015645444393158, + 0.40531206130981445, + 1.5431758165359497 + ] + }, + { + "children": [ + 221 + ], + "name": "DEF-upper_arm.01.R_0145", + "rotation": [ + 0.31056672334671021, + 0.83153635263442993, + -0.020840095356106758, + -0.46006664633750916 + ], + "scale": [ + 1, + 0.9999995231628418, + 1.0000002384185791 + ], + "translation": [ + 6.3329935073852539e-08, + -1.3271346688270569e-07, + -8.5383362602442503e-08 + ] + }, + { + "name": "DEF-upper_arm.01.R_end_0251", + "rotation": [ + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.13927130401134491, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 223 + ], + "name": "MCH-shoulder_rh_ns_ch.L_0146", + "rotation": [ + -0.0014966969611123204, + 0.0023893655743449926, + -0.49651646614074707, + 0.86802273988723755 + ], + "scale": [ + 0.99999994039535522, + 0.99999988079071045, + 0.99999988079071045 + ], + "translation": [ + 0.29354196786880493, + 0.405204176902771, + 1.5401378870010376 + ] + }, + { + "children": [ + 224 + ], + "name": "DEF-upper_arm.01.L_0147", + "rotation": [ + -0.31472542881965637, + 0.83235687017440796, + -0.02208041213452816, + 0.45567795634269714 + ], + "scale": [ + 1.0000001192092896, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation": [ + -1.4016404747962952e-07, + 3.6321580410003662e-08, + 1.0423536878079176e-07 + ] + }, + { + "name": "DEF-upper_arm.01.L_end_0248", + "rotation": [ + -2.7755575615628914e-17, + -7.8062556418956319e-17, + 1.7347234759768071e-17, + 1 + ], + "translation": [ + 2.2204460492503131e-16, + 0.13927130401134491, + 0 + ] + }, + { + "children": [ + 226 + ], + "name": "DEF-hips_0148", + "rotation": [ + 0.64831167459487915, + -9.0763023763429374e-08, + 3.2261102234087957e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.4210854715202004e-14, + 0.055200062692165375, + 0.19749556481838226 + ] + }, + { + "name": "DEF-hips_end_0182", + "rotation": [ + -0, + -6.6174449004242214e-24, + -1.9852334701272664e-23, + 1 + ], + "translation": [ + 0, + 0.40506204962730408, + 6.9388939039072284e-18 + ] + }, + { + "children": [ + 228, + 254 + ], + "name": "torso_0149", + "rotation": [ + -0.061978895217180252, + 5.2619378267789808e-19, + -5.2849769005547387e-10, + 0.99807745218276978 + ], + "scale": [ + 1, + 0.99999982118606567, + 1 + ], + "translation": [ + -6.7568784345439781e-08, + 0.11976045370101929, + 0.59737944602966309 + ] + }, + { + "children": [ + 229 + ], + "name": "MCH-par_spine_0150", + "rotation": [ + 0.061978936195373535, + 0.0012765624560415745, + 3.3879881812026724e-05, + 0.99807673692703247 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999982118606567 + ], + "translation": [ + -9.0340152025802922e-11, + 8.5681676864624023e-08, + -2.3376196622848511e-07 + ] + }, + { + "children": [ + 230, + 242 + ], + "name": "spine_0151", + "rotation": [ + 0.54706472158432007, + -0.0094404155388474464, + -0.0007564605912193656, + 0.83703672885894775 + ], + "scale": [ + 1.0000001192092896, + 0.99999988079071045, + 1.0000002384185791 + ], + "translation": [ + -2.5522695068502799e-11, + 5.6362441824830967e-08, + 9.1991402939584077e-08 + ] + }, + { + "children": [ + 231 + ], + "name": "wing_L_0152", + "rotation": [ + -0.21781767904758453, + -0.28712323307991028, + -0.11274226009845734, + 0.92596161365509033 + ], + "scale": [ + 1.0000001192092896, + 0.99999982118606567, + 0.99999994039535522 + ], + "translation": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -6.5891072154045105e-08 + ] + }, + { + "children": [ + 232, + 240 + ], + "name": "wing_L.001_0153", + "rotation": [ + -0.061176721006631851, + -0.35154440999031067, + -0.1102207824587822, + 0.92764502763748169 + ], + "scale": [ + 0.9999997615814209, + 1, + 1.0000002384185791 + ], + "translation": [ + -2.7755575615628914e-17, + 0.25762274861335754, + -7.4505805969238281e-08 + ] + }, + { + "children": [ + 233, + 238 + ], + "name": "wing_L.003_0154", + "rotation": [ + 0.10357404500246048, + 0.029893208295106888, + -0.17539113759994507, + 0.97857904434204102 + ], + "scale": [ + 0.99999988079071045, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 5.5879354476928711e-08, + 0.407990962266922, + 1.3411045074462891e-07 + ] + }, + { + "children": [ + 234, + 236 + ], + "name": "wing_L.005_0155", + "rotation": [ + -0.62064284086227417, + 0.39226031303405762, + 0.12407290190458298, + 0.6674879789352417 + ], + "scale": [ + 0.99999970197677612, + 0.99999946355819702, + 0.99999994039535522 + ], + "translation": [ + 7.4505805969238281e-09, + 0.57860493659973145, + 4.9010850489139557e-08 + ] + }, + { + "children": [ + 235 + ], + "name": "wing_L.007_0156", + "rotation": [ + -0.036368310451507568, + 0.042531803250312805, + -0.13963313400745392, + 0.98862075805664062 + ], + "scale": [ + 0.99999982118606567, + 0.99999988079071045, + 0.99999970197677612 + ], + "translation": [ + -1.7881393432617188e-07, + 0.40159714221954346, + -1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.007_end_0185", + "rotation": [ + -3.8518598887744717e-34, + -1.3877787807814457e-17, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.6613776683807373, + 0 + ] + }, + { + "children": [ + 237 + ], + "name": "wing_L.006_0157", + "rotation": [ + 0.098787307739257812, + 0.79536384344100952, + -0.49130561947822571, + 0.34096366167068481 + ], + "scale": [ + 0.9999997615814209, + 0.99999964237213135, + 0.99999994039535522 + ], + "translation": [ + -1.7881393432617188e-07, + 0.40159714221954346, + -1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.006_end_0244", + "rotation": [ + 3.4694469519536142e-17, + 1.2037062152420224e-34, + 3.4694469519536142e-18, + 1 + ], + "translation": [ + 1.1102230246251565e-16, + 0.71108460426330566, + -2.2204460492503131e-16 + ] + }, + { + "children": [ + 239 + ], + "name": "wing_L.004_0158", + "rotation": [ + 0.92855155467987061, + -0.11121511459350586, + -0.17540611326694489, + -0.30766192078590393 + ], + "scale": [ + 0.99999946355819702, + 0.99999982118606567, + 0.99999946355819702 + ], + "translation": [ + 7.4505805969238281e-09, + 0.57860493659973145, + 4.9010850489139557e-08 + ] + }, + { + "name": "wing_L.004_end_0245", + "rotation": [ + 3.4694469519536142e-18, + 5.5511151231257827e-17, + 2.7755575615628914e-17, + 1 + ], + "translation": [ + 0, + 0.70221841335296631, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 241 + ], + "name": "wing_L.002_0159", + "rotation": [ + 0.81516003608703613, + -0.20495334267616272, + -0.34477147459983826, + -0.41790062189102173 + ], + "scale": [ + 0.99999964237213135, + 1.0000003576278687, + 1 + ], + "translation": [ + 5.5879354476928711e-08, + 0.407990962266922, + 1.3411045074462891e-07 + ] + }, + { + "name": "wing_L.002_end_0253", + "rotation": [ + 1.3877787807814457e-17, + 2.7755575615628914e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + -1.1102230246251565e-16, + 0.37917813658714294, + 0 + ] + }, + { + "children": [ + 243 + ], + "name": "wing_R_0160", + "rotation": [ + -0.25376984477043152, + 0.27044236660003662, + 0.12404783815145493, + 0.92036616802215576 + ], + "scale": [ + 0.99999988079071045, + 1.0000002384185791, + 0.99999994039535522 + ], + "translation": [ + -9.3132257461547852e-10, + 0.77674132585525513, + -6.5891072154045105e-08 + ] + }, + { + "children": [ + 244, + 252 + ], + "name": "wing_R.001_0161", + "rotation": [ + -0.0027954690158367157, + 0.36314886808395386, + 0.10791334509849548, + 0.92545664310455322 + ], + "scale": [ + 0.99999994039535522, + 0.99999982118606567, + 1.0000001192092896 + ], + "translation": [ + -1.862645149230957e-08, + 0.25762271881103516, + 8.9406967163085938e-08 + ] + }, + { + "children": [ + 245, + 250 + ], + "name": "wing_R.003_0162", + "rotation": [ + 0.12453363835811615, + -0.0011828342685475945, + 0.16432477533817291, + 0.97851282358169556 + ], + "scale": [ + 0.99999988079071045, + 1, + 0.99999982118606567 + ], + "translation": [ + -1.1920928955078125e-07, + 0.40799093246459961, + 8.1956386566162109e-08 + ] + }, + { + "children": [ + 246, + 248 + ], + "name": "wing_R.005_0163", + "rotation": [ + -0.61131399869918823, + -0.35110387206077576, + -0.12587124109268188, + 0.69798117876052856 + ], + "scale": [ + 0.9999997615814209, + 0.9999995231628418, + 0.9999997615814209 + ], + "translation": [ + -7.8231096267700195e-08, + 0.57860565185546875, + 1.862645149230957e-08 + ] + }, + { + "children": [ + 247 + ], + "name": "wing_R.007_0144", + "rotation": [ + -0.0065264194272458553, + -0.026156334206461906, + 0.16140437126159668, + 0.98652011156082153 + ], + "scale": [ + 1, + 1.0000001192092896, + 0.99999988079071045 + ], + "translation": [ + 5.9604644775390625e-08, + 0.40159708261489868, + 1.4901161193847656e-07 + ] + }, + { + "name": "wing_R.007_end_0197", + "rotation": [ + 3.8163916471489756e-17, + 2.0816681711721685e-17, + 5.5511151231257827e-17, + 1 + ], + "translation": [ + 0, + 0.6613776683807373, + 0 + ] + }, + { + "children": [ + 249 + ], + "name": "wing_R.006_0165", + "rotation": [ + -0.098806805908679962, + 0.79607915878295898, + -0.48979663848876953, + -0.34145930409431458 + ], + "scale": [ + 0.99999994039535522, + 0.9999997615814209, + 0.99999994039535522 + ], + "translation": [ + 5.9604644775390625e-08, + 0.40159708261489868, + 1.4901161193847656e-07 + ] + }, + { + "name": "wing_R.006_end_0221", + "rotation": [ + -3.3827107781547738e-17, + 5.5511151231257827e-17, + -4.6837533851373792e-17, + 1 + ], + "translation": [ + 0, + 0.71108460426330566, + 0 + ] + }, + { + "children": [ + 251 + ], + "name": "wing_R.004_0166", + "rotation": [ + 0.9284898042678833, + 0.11122464388608932, + 0.17535419762134552, + -0.30787447094917297 + ], + "scale": [ + 0.99999988079071045, + 1.0000001192092896, + 1.0000002384185791 + ], + "translation": [ + -7.8231096267700195e-08, + 0.57860565185546875, + 1.862645149230957e-08 + ] + }, + { + "name": "wing_R.004_end_02", + "rotation": [ + -2.0816681711721685e-17, + 2.7755575615628914e-17, + 6.9388939039072284e-18, + 1 + ], + "translation": [ + 0, + 0.70221841335296631, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 253 + ], + "name": "wing_R.002_0167", + "rotation": [ + 0.81515991687774658, + 0.20495341718196869, + 0.34477174282073975, + -0.41790047287940979 + ], + "scale": [ + 1.0000003576278687, + 1.0000001192092896, + 1 + ], + "translation": [ + -1.1920928955078125e-07, + 0.40799093246459961, + 8.1956386566162109e-08 + ] + }, + { + "name": "wing_R.002_end_0255", + "rotation": [ + 6.9388939039072284e-18, + 5.5511151231257827e-17, + -1.3877787807814457e-17, + 1 + ], + "translation": [ + 5.5511151231257827e-17, + 0.37917813658714294, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 255 + ], + "name": "Tail_0168", + "rotation": [ + 0.09612477570772171, + 1.3521212594014287e-08, + 9.7687419042813417e-08, + 0.9953693151473999 + ], + "scale": [ + 1, + 0.99999994039535522, + 1.0000004768371582 + ], + "translation": [ + -8.8470897274817162e-15, + 0.74672240018844604, + 5.2154064178466797e-08 + ] + }, + { + "children": [ + 256 + ], + "name": "Tail.001_0169", + "rotation": [ + 0.36176523566246033, + -1.6344735342954664e-08, + 6.2083520546707405e-09, + 0.93226921558380127 + ], + "scale": [ + 1, + 0.99999988079071045, + 0.99999982118606567 + ], + "translation": [ + 3.0198066269804258e-14, + 0.36641588807106018, + 5.2154057073039439e-08 + ] + }, + { + "children": [ + 257 + ], + "name": "Tail.002_0170", + "rotation": [ + 0.19072017073631287, + 6.3293686958232342e-10, + -1.2646499125690269e-10, + 0.98164445161819458 + ], + "scale": [ + 1, + 1, + 1.0000002384185791 + ], + "translation": [ + 4.4630965589931293e-14, + 0.52352422475814819, + -2.8199664825478976e-14 + ] + }, + { + "name": "Tail.002_end_0195", + "rotation": [ + -2.7755575615628914e-17, + 1.3234889800848443e-23, + 3.6734198463196485e-40, + 1 + ], + "translation": [ + -5.2939559203393771e-23, + 0.7313845157623291, + 2.2204460492503131e-16 + ] + }, + { + "children": [ + 259 + ], + "name": "MCH-hips_rh_ns_ch_0171", + "rotation": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + 0.21592006087303162, + 0.26226195693016052, + 0.53842836618423462 + ] + }, + { + "children": [ + 260 + ], + "name": "DEF-thigh.01.L_0172", + "rotation": [ + 0.54630142450332642, + 0.77057766914367676, + -0.14296230673789978, + -0.2955111563205719 + ], + "scale": [ + 1, + 1.0000005960464478, + 1 + ], + "translation": [ + -1.9446307675252683e-08, + 8.6856388747946767e-09, + -2.0732837668901993e-09 + ] + }, + { + "name": "DEF-thigh.01.L_end_0238", + "rotation": [ + -2.7755575615628914e-17, + -1.3877787807814457e-17, + -2.0816681711721685e-17, + 1 + ], + "translation": [ + -5.5511151231257827e-17, + 0.21278375387191772, + 0 + ] + }, + { + "children": [ + 262 + ], + "name": "MCH-hips_rh_ns_ch.001_0173", + "rotation": [ + 0.64831167459487915, + -9.7136414467513532e-08, + 2.6834152677679413e-08, + 0.7613750696182251 + ], + "scale": [ + 1, + 0.99999994039535522, + 0.99999994039535522 + ], + "translation": [ + -0.21592006087303162, + 0.26226195693016052, + 0.53842836618423462 + ] + }, + { + "children": [ + 263 + ], + "name": "DEF-thigh.01.R_0174", + "rotation": [ + -0.54575395584106445, + 0.7710757851600647, + -0.14247633516788483, + 0.29545772075653076 + ], + "scale": [ + 1.0000002384185791, + 1, + 1 + ], + "translation": [ + -1.9446302346182165e-08, + 3.601785181217565e-08, + -5.7531355679429907e-08 + ] + }, + { + "name": "DEF-thigh.01.R_end_0212", + "rotation": [ + 0, + -0, + -2.7755575615628914e-17, + 1 + ], + "translation": [ + -1.6653345369377348e-16, + 0.21278375387191772, + 5.5511151231257827e-17 + ] + }, + { + "matrix": [ + 14.506000280380249, + 0, + 0, + 0, + 0, + 8.8823634058991401e-16, + -14.506000280380249, + 0, + 0, + 14.506000280380249, + 8.8823634058991401e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "name": "Dragonite", + "rotation": [ + -0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "scale": [ + 14.506000518798828, + 14.506000518798828, + 14.506000518798828 + ] + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 6, + "joints": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "skeleton": 7 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} + diff --git a/demo/handpose/assets/dragonite/textures/Dragonite_baseColor.png b/demo/handpose/assets/dragonite/textures/Dragonite_baseColor.png new file mode 100644 index 0000000..9c811c2 Binary files /dev/null and b/demo/handpose/assets/dragonite/textures/Dragonite_baseColor.png differ diff --git a/demo/handpose/assets/magnemite/scene.bin b/demo/handpose/assets/magnemite/scene.bin new file mode 100644 index 0000000..71dba49 Binary files /dev/null and b/demo/handpose/assets/magnemite/scene.bin differ diff --git a/demo/handpose/assets/magnemite/scene.gltf b/demo/handpose/assets/magnemite/scene.gltf new file mode 100644 index 0000000..7fcba9b --- /dev/null +++ b/demo/handpose/assets/magnemite/scene.gltf @@ -0,0 +1,1645 @@ +{ + "accessors": [ + { + "bufferView": 3, + "componentType": 5126, + "count": 304, + "max": [ + 6.7710013389587402, + 7.6924300193786621, + 0.5 + ], + "min": [ + -6.7710013389587402, + 4.1924300193786621, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 3648, + "componentType": 5126, + "count": 304, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 304, + "max": [ + 0.98135483264923096, + 0.99999630451202393, + 0.9506257176399231, + 1 + ], + "min": [ + -0.99981784820556641, + -0.999927818775177, + -0.8821672797203064, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 304, + "max": [ + 0.92098718881607056, + 0.84881538152694702 + ], + "min": [ + 0.14504003524780273, + 0.1103326827287674 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "componentType": 5125, + "count": 936, + "max": [ + 303 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 7296, + "componentType": 5126, + "count": 435, + "max": [ + 2.855971097946167, + 8.9244184494018555, + 2.6009621620178223 + ], + "min": [ + -2.8559718132019043, + 3.2124760150909424, + -2.8559725284576416 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 12516, + "componentType": 5126, + "count": 435, + "max": [ + 1, + 1, + 0.9847375750541687 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 4864, + "componentType": 5126, + "count": 435, + "max": [ + 0.99999856948852539, + 0.51998293399810791, + 0.99964404106140137, + 1 + ], + "min": [ + -0.99999028444290161, + -0.53486007452011108, + -0.99830895662307739, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 2432, + "componentType": 5126, + "count": 435, + "max": [ + 0.70053297281265259, + 0.55803161859512329 + ], + "min": [ + 0.29753333330154419, + 0.27553772926330566 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 3744, + "componentType": 5125, + "count": 2220, + "max": [ + 434 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 17736, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 1, + 1.0000001192092896 + ], + "min": [ + -1.0000002384185791, + -1, + -1.0000004768371582 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 23004, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 11824, + "componentType": 5126, + "count": 439, + "max": [ + 1, + 0.078690603375434875, + 1, + 1 + ], + "min": [ + -1, + -0.07869064062833786, + -1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 5912, + "componentType": 5126, + "count": 439, + "max": [ + 0.5829390287399292, + 0.25211232900619507 + ], + "min": [ + 0.40425741672515869, + 0.073430716991424561 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 12624, + "componentType": 5125, + "count": 2280, + "max": [ + 438 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 28272, + "componentType": 5126, + "count": 2226, + "max": [ + 1.2974452972412109, + 1.3974108695983887, + 1.277778148651123 + ], + "min": [ + -1.2974452972412109, + -1.3974108695983887, + -1.277778148651123 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 54984, + "componentType": 5126, + "count": 2226, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 18848, + "componentType": 5126, + "count": 2226, + "max": [ + 0.9999508261680603, + 0.99909776449203491, + 0.99999207258224487, + 1 + ], + "min": [ + -0.99987488985061646, + -0.99887269735336304, + -0.9979282021522522, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 9424, + "componentType": 5126, + "count": 2226, + "max": [ + 0.9841606616973877, + 0.9715430736541748 + ], + "min": [ + 0.40966320037841797, + 0.69751256704330444 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 21744, + "componentType": 5125, + "count": 11520, + "max": [ + 2225 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 81696, + "componentType": 5126, + "count": 4452, + "max": [ + 6.0472793579101562, + 1.2965602874755859, + 1.9254629611968994 + ], + "min": [ + -2.0541346073150635, + -2.6589465141296387, + -0.83721375465393066 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 135120, + "componentType": 5126, + "count": 4452, + "max": [ + 0.9999396800994873, + 0.99840158224105835, + 0.98760849237442017 + ], + "min": [ + -0.99897104501724243, + -0.99977743625640869, + -0.98672795295715332 + ], + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 54464, + "componentType": 5126, + "count": 4452, + "max": [ + 0.99871188402175903, + 0.99978053569793701, + 0.99928379058837891, + 1 + ], + "min": [ + -0.99251633882522583, + -0.99669897556304932, + -0.9972044825553894, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 27232, + "componentType": 5126, + "count": 4452, + "max": [ + 0.98049002885818481, + 0.59510970115661621 + ], + "min": [ + 0.024456273764371872, + 0.060263663530349731 + ], + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 67824, + "componentType": 5125, + "count": 23040, + "max": [ + 4451 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 5, + "componentType": 5126, + "count": 4, + "max": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 3, + 0, + 6, + 1 + ], + "min": [ + 1, + 0, + 0, + 0, + 0, + 2.832769343193999e-16, + -1, + 0, + 0, + 0, + 2.832769343193999e-16, + 0, + -3, + -6, + 0, + 1 + ], + "type": "MAT4" + }, + { + "bufferView": 0, + "componentType": 5123, + "count": 304, + "max": [ + 3, + 2, + 2, + 2 + ], + "min": [ + 2, + 2, + 2, + 2 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 125696, + "componentType": 5126, + "count": 304, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 2432, + "componentType": 5123, + "count": 435, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 1, + 1, + 1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 4, + "byteOffset": 130560, + "componentType": 5126, + "count": 435, + "max": [ + 1, + 0, + 0, + 0 + ], + "min": [ + 1, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 12.23095703125, + 1.5746579170227051 + ], + "min": [ + -8.3917531967163086, + 1.3936433792114258, + 1.5746579170227051 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 1032, + "componentType": 5126, + "count": 245, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 245, + "max": [ + 0.75069552659988403, + 0.14050851762294769, + 0.11918520927429199, + 0.78815227746963501 + ], + "min": [ + 0.59710729122161865, + -0.10189154744148254, + -0.13332097232341766, + 0.64177036285400391 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 2012, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 3096, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 16.215744018554688, + -2.384185791015625e-07 + ], + "min": [ + -8.3917531967163086, + 5.3784317970275879, + -2.384185791015625e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 3044, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 6192, + "componentType": 5126, + "count": 258, + "max": [ + 6.5917596817016602, + 10.504326820373535, + 2.4956674575805664 + ], + "min": [ + -9.5691986083984375, + -0.3329862654209137, + 2.4956674575805664 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 4076, + "componentType": 5126, + "count": 257, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 3920, + "componentType": 5126, + "count": 257, + "max": [ + 0.9397737979888916, + -0, + 0, + 0.9397737979888916 + ], + "min": [ + -0.85895991325378418, + -0, + 0, + -0.49273952841758728 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 5104, + "componentType": 5126, + "count": 257, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 8032, + "componentType": 5126, + "count": 257, + "max": [ + 0.42283338308334351, + 0, + 0, + 1 + ], + "min": [ + -0.42283335328102112, + 0, + 0, + 0.90620744228363037 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 6132, + "componentType": 5126, + "count": 258, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 9288, + "componentType": 5126, + "count": 258, + "max": [ + 7.7692046165466309, + 12.243526458740234, + 0 + ], + "min": [ + -8.3917531967163086, + 1.4062134027481079, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 7164, + "componentType": 5126, + "count": 167, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 12144, + "componentType": 5126, + "count": 167, + "max": [ + 0.42261826992034912, + 0, + 0, + 1 + ], + "min": [ + -0.42261826992034912, + 0, + 0, + 0.90630781650543213 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 7832, + "componentType": 5126, + "count": 167, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 8, + "byteOffset": 14816, + "componentType": 5126, + "count": 167, + "max": [ + 0.42261826992034912, + 0, + 0, + 1 + ], + "min": [ + -0.42261826992034912, + 0, + 0, + 0.90630781650543213 + ], + "type": "VEC4" + }, + { + "bufferView": 6, + "byteOffset": 8500, + "componentType": 5126, + "count": 140, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 12384, + "componentType": 5126, + "count": 140, + "max": [ + 2.5814628601074219, + 1.8419075012207031, + 0 + ], + "min": [ + -2.0465738773345947, + -1.037976861000061, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 9060, + "componentType": 5126, + "count": 156, + "max": [ + 10 + ], + "min": [ + 0.041666667908430099 + ], + "type": "SCALAR" + }, + { + "bufferView": 7, + "byteOffset": 14064, + "componentType": 5126, + "count": 156, + "max": [ + 7.7658348083496094, + 6.2412676811218262, + 0 + ], + "min": [ + -8.3883838653564453, + -4.591526985168457, + 0 + ], + "type": "VEC3" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 16, + "path": "translation" + } + }, + { + "sampler": 1, + "target": { + "node": 16, + "path": "rotation" + } + }, + { + "sampler": 2, + "target": { + "node": 18, + "path": "translation" + } + }, + { + "sampler": 3, + "target": { + "node": 20, + "path": "translation" + } + }, + { + "sampler": 4, + "target": { + "node": 11, + "path": "rotation" + } + }, + { + "sampler": 5, + "target": { + "node": 12, + "path": "rotation" + } + }, + { + "sampler": 6, + "target": { + "node": 10, + "path": "translation" + } + }, + { + "sampler": 7, + "target": { + "node": 33, + "path": "rotation" + } + }, + { + "sampler": 8, + "target": { + "node": 34, + "path": "rotation" + } + }, + { + "sampler": 9, + "target": { + "node": 35, + "path": "translation" + } + }, + { + "sampler": 10, + "target": { + "node": 32, + "path": "translation" + } + } + ], + "name": "Take 001", + "samplers": [ + { + "input": 30, + "interpolation": "LINEAR", + "output": 31 + }, + { + "input": 32, + "interpolation": "LINEAR", + "output": 33 + }, + { + "input": 34, + "interpolation": "LINEAR", + "output": 35 + }, + { + "input": 36, + "interpolation": "LINEAR", + "output": 37 + }, + { + "input": 38, + "interpolation": "LINEAR", + "output": 39 + }, + { + "input": 40, + "interpolation": "LINEAR", + "output": 41 + }, + { + "input": 42, + "interpolation": "LINEAR", + "output": 43 + }, + { + "input": 44, + "interpolation": "LINEAR", + "output": 45 + }, + { + "input": 46, + "interpolation": "LINEAR", + "output": 47 + }, + { + "input": 48, + "interpolation": "LINEAR", + "output": 49 + }, + { + "input": 50, + "interpolation": "LINEAR", + "output": 51 + } + ] + } + ], + "asset": { + "extras": { + "author": "JoseDR (https://sketchfab.com/JoseDR)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/shiny-magnemite-f9cfa3a79455410f9cd7e41512a8b921", + "title": "Shiny Magnemite" + }, + "generator": "Sketchfab-4.90.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 5912, + "byteOffset": 0, + "byteStride": 8, + "name": "shortBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 159984, + "byteOffset": 5912, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 62848, + "byteOffset": 165896, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 188544, + "byteOffset": 228744, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 137520, + "byteOffset": 417288, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 256, + "byteOffset": 554808, + "byteStride": 64, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 9684, + "byteOffset": 555064, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 15936, + "byteOffset": 564748, + "byteStride": 12, + "name": "floatBufferViews" + }, + { + "buffer": 0, + "byteLength": 17488, + "byteOffset": 580684, + "byteStride": 16, + "name": "floatBufferViews" + } + ], + "buffers": [ + { + "byteLength": 598172, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/blinn2_baseColor.png" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "blinn2", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0.27681250569999999, + "roughnessFactor": 0.56693749430000007 + } + } + ], + "meshes": [ + { + "name": "imanes_blinn2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 26, + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 3, + "WEIGHTS_0": 27 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "cuerpo_blinn2_0", + "primitives": [ + { + "attributes": { + "JOINTS_0": 28, + "NORMAL": 6, + "POSITION": 5, + "TANGENT": 7, + "TEXCOORD_0": 8, + "WEIGHTS_0": 29 + }, + "indices": 9, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "ojo_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 11, + "POSITION": 10, + "TANGENT": 12, + "TEXCOORD_0": 13 + }, + "indices": 14, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "torniglio_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 16, + "POSITION": 15, + "TANGENT": 17, + "TEXCOORD_0": 18 + }, + "indices": 19, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "torniglio_team_blinn2_0", + "primitives": [ + { + "attributes": { + "NORMAL": 21, + "POSITION": 20, + "TANGENT": 22, + "TEXCOORD_0": 23 + }, + "indices": 24, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "magnemite animado 2.fbx" + }, + { + "children": [ + 4 + ], + "name": "" + }, + { + "children": [ + 5 + ], + "name": "RootNode" + }, + { + "children": [ + 6, + 8, + 9, + 7, + 13, + 14, + 15, + 23, + 26, + 29, + 32 + ], + "name": "" + }, + { + "children": [ + 10 + ], + "name": "_rootJoint" + }, + { + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 3.3678462234697446, + 5.9424300899304567, + 6.1629758220391547e-33, + 1 + ], + "name": "" + }, + { + "mesh": 0, + "name": "", + "skin": 0 + }, + { + "mesh": 1, + "name": "", + "skin": 0 + }, + { + "children": [ + 11, + 12 + ], + "name": "root_00", + "rotation": [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation": [ + 0, + 6, + 0 + ] + }, + { + "name": "iman_l_01", + "rotation": [ + -0.7071068286895752, + -0, + 0, + 0.7071068286895752 + ], + "translation": [ + 3, + 0, + 0 + ] + }, + { + "name": "iman_r_02", + "translation": [ + -3, + 0, + 0 + ] + }, + { + "name": "imagePlane1", + "scale": [ + 2.4016404151916504, + 2.4016404151916504, + 2.4016404151916504 + ], + "translation": [ + 7.9415349960327148, + 7.0980281829833984, + -13.97634220123291 + ] + }, + { + "name": "imagePlane2", + "rotation": [ + -0, + 0.7071068286895752, + 0, + 0.7071068286895752 + ], + "scale": [ + 2.4016404151916504, + 2.4016404151916504, + 2.4016404151916504 + ], + "translation": [ + -14.280845642089844, + 6.8380646705627441, + 15.431127548217773 + ] + }, + { + "children": [ + 16, + 18, + 20, + 22 + ], + "name": "cuerpo" + }, + { + "children": [ + 17 + ], + "name": "ojo", + "rotation": [ + 0.7071068286895752, + 1.7791760297465088e-16, + 1.7430503180680852e-14, + 0.7071068286895752 + ], + "scale": [ + 1.5072540044784546, + 1.4791148900985718, + 1.5072540044784546 + ], + "translation": [ + 0, + 5.9874300956726074, + 1.5746579170227051 + ] + }, + { + "mesh": 2, + "name": "ojo_blinn2_0" + }, + { + "children": [ + 19 + ], + "name": "torniglio", + "translation": [ + -1.7881393432617188e-07, + 9.9722185134887695, + -2.384185791015625e-07 + ] + }, + { + "mesh": 3, + "name": "torniglio_blinn2_0" + }, + { + "children": [ + 21 + ], + "name": "torniglio_team", + "rotation": [ + 0.83669960498809814, + -0.077820777893066406, + 0.078882642090320587, + 0.53633499145507812 + ], + "scale": [ + 0.56975185871124268, + 0.56975185871124268, + 0.56975185871124268 + ], + "translation": [ + -1.1774451732635498, + 4.2608003616333008, + 2.4956676959991455 + ] + }, + { + "mesh": 4, + "name": "torniglio_team_blinn2_0" + }, + { + "name": "imanes", + "translation": [ + 3.3678462505340576, + 5.9424300193786621, + 0 + ] + }, + { + "children": [ + 24 + ], + "name": "directionalLight1", + "rotation": [ + 0.61303746700286865, + -0.23035401105880737, + 0.19328996539115906, + 0.73058956861495972 + ] + }, + { + "children": [ + 25 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 27 + ], + "name": "directionalLight2", + "rotation": [ + -0.32650557160377502, + 0.62721139192581177, + -0.62721139192581177, + -0.32650557160377502 + ] + }, + { + "children": [ + 28 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 30 + ], + "name": "directionalLight3", + "rotation": [ + -0.35371994972229004, + -0.57015955448150635, + 0.67948973178863525, + -0.29680627584457397 + ] + }, + { + "children": [ + 31 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + }, + { + "children": [ + 33, + 34, + 35 + ], + "name": "ctrl_supermover" + }, + { + "name": "ctrl_iman_l", + "translation": [ + 3, + 6, + 4.4357695579528809 + ] + }, + { + "name": "ctrl_iman_r", + "translation": [ + -3, + 6, + 4.4357695579528809 + ] + }, + { + "name": "ctrl_aim" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "skins": [ + { + "inverseBindMatrices": 25, + "joints": [ + 6, + 10, + 11, + 12 + ], + "skeleton": 6 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} + diff --git a/demo/handpose/assets/magnemite/textures/blinn2_baseColor.png b/demo/handpose/assets/magnemite/textures/blinn2_baseColor.png new file mode 100644 index 0000000..ca67f87 Binary files /dev/null and b/demo/handpose/assets/magnemite/textures/blinn2_baseColor.png differ diff --git a/demo/handpose/detect-with-model.html b/demo/handpose/detect-with-model.html new file mode 100644 index 0000000..d35e7a5 --- /dev/null +++ b/demo/handpose/detect-with-model.html @@ -0,0 +1,175 @@ + + + + + + + Handpose Demo + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/handpose/detect.html b/demo/handpose/detect.html new file mode 100644 index 0000000..aba3659 --- /dev/null +++ b/demo/handpose/detect.html @@ -0,0 +1,78 @@ + + + + + + + Handpose Demo + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/handpose/index.html b/demo/handpose/index.html new file mode 100644 index 0000000..8d5b641 --- /dev/null +++ b/demo/handpose/index.html @@ -0,0 +1,88 @@ + + + + + + + Handpose Demo + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/handpose/model/anchors.json b/demo/handpose/model/anchors.json new file mode 100644 index 0000000..2f3fb66 --- /dev/null +++ b/demo/handpose/model/anchors.json @@ -0,0 +1,17666 @@ +[ + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.015625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.046875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.078125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.109375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.140625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.171875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.203125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.234375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.265625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.296875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.328125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.359375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.390625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.421875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.453125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.484375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.515625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.546875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.578125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.609375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.640625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.671875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.703125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.734375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.765625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.796875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.828125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.859375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.890625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.921875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.953125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.015625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.046875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.078125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.109375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.140625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.171875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.203125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.234375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.265625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.296875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.328125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.359375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.390625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.421875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.453125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.484375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.515625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.546875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.578125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.609375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.640625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.671875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.703125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.734375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.765625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.796875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.828125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.859375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.890625, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.921875, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.953125, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.984375, + "y_center": 0.984375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.03125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.09375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.15625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.21875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.28125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.34375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.40625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.46875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.53125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.59375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.65625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.71875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.78125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.84375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.90625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.03125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.09375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.15625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.21875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.28125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.34375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.40625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.46875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.53125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.59375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.65625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.71875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.78125, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.84375, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.90625, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.96875, + "y_center": 0.96875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.0625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.1875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.3125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.4375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.5625 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.6875 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.8125 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.0625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.1875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.3125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.4375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.5625, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.6875, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.8125, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + }, + { + "w": 1, + "h": 1, + "x_center": 0.9375, + "y_center": 0.9375 + } +] diff --git a/demo/handpose/model/handdetector/group1-shard1of2.bin b/demo/handpose/model/handdetector/group1-shard1of2.bin new file mode 100644 index 0000000..0e68dcf Binary files /dev/null and b/demo/handpose/model/handdetector/group1-shard1of2.bin differ diff --git a/demo/handpose/model/handdetector/group1-shard2of2.bin b/demo/handpose/model/handdetector/group1-shard2of2.bin new file mode 100644 index 0000000..c7eeae0 Binary files /dev/null and b/demo/handpose/model/handdetector/group1-shard2of2.bin differ diff --git a/demo/handpose/model/handdetector/model.json b/demo/handpose/model/handdetector/model.json new file mode 100644 index 0000000..d0aac03 --- /dev/null +++ b/demo/handpose/model/handdetector/model.json @@ -0,0 +1,11712 @@ +{ + "format": "graph-model", + "generatedBy": "1.15.0", + "convertedBy": "TensorFlow.js Converter v1.3.2", + "userDefinedMetadata": { + "signature": { + "inputs": { + "input:0": { + "name": "input:0", + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + }, + { + "size": "3" + } + ] + } + } + }, + "outputs": { + "Identity:0": { + "name": "Identity:0", + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "2944" + }, + { + "size": "19" + } + ] + } + } + } + } + }, + "modelTopology": { + "node": [ + { + "name": "input", + "op": "Placeholder", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "shape": { + "shape": { + "dim": [ + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + }, + { + "size": "3" + } + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_8/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_8/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape/Reshape/shape", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_INT32" + }, + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "3" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_16/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_16/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_32/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "6" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_32/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "6" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificators/concat/axis", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_INT32" + }, + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": {} + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_8/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "36" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_8/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "36" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_1/Reshape/shape", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "3" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_16/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "36" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_16/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "36" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_32/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "108" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_32/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "108" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/objects/concat/axis", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_INT32" + }, + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": {} + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose_1/stack", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose_1/conv2d_transpose/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + }, + { + "size": "2" + }, + { + "size": "128" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose/stack", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose/conv2d_transpose/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + }, + { + "size": "2" + }, + { + "size": "256" + }, + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad/paddings", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_INT32" + }, + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + }, + { + "size": "2" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_2/Pad/paddings", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "256" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Scaled", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Offset", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "256" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Scaled", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Offset", + "op": "Const", + "input": [ + "^input" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation/Relu", + "op": "_FusedConv2D", + "input": [ + "input", + "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==", + "UmVsdQ==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_1/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d/depthwise", + "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + } + } + }, + { + "name": "StatefulPartitionedCall/model/add/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation/Relu", + "StatefulPartitionedCall/model/batch_normalization_1/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_1/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_1/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_2/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise", + "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_1/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_1/Relu", + "StatefulPartitionedCall/model/batch_normalization_2/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_2/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_1/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_2/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_3/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise", + "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_2/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_2/Relu", + "StatefulPartitionedCall/model/batch_normalization_3/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_3/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_2/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_3/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_4/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise", + "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_3/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_3/Relu", + "StatefulPartitionedCall/model/batch_normalization_4/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_4/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_3/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_4/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_5/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise", + "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_4/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_4/Relu", + "StatefulPartitionedCall/model/batch_normalization_5/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_5/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_4/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_5/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_6/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise", + "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_5/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_5/Relu", + "StatefulPartitionedCall/model/batch_normalization_6/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_6/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_5/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_6/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_7/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise", + "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_6/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_6/Relu", + "StatefulPartitionedCall/model/batch_normalization_7/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_7/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_6/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_7/Relu" + ], + "attr": { + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_7/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d/MaxPool", + "StatefulPartitionedCall/model/channel_padding/Pad/paddings" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tpaddings": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_8/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise", + "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_7/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_8/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_8/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_7/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_8/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_9/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise", + "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_8/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_8/Relu", + "StatefulPartitionedCall/model/batch_normalization_9/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_9/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_8/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_9/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_10/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise", + "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_9/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_9/Relu", + "StatefulPartitionedCall/model/batch_normalization_10/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_10/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_9/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_10/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_11/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise", + "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_10/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_10/Relu", + "StatefulPartitionedCall/model/batch_normalization_11/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_11/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_10/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_11/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_12/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise", + "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_11/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_11/Relu", + "StatefulPartitionedCall/model/batch_normalization_12/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_12/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_11/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_12/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_13/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise", + "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_12/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_12/Relu", + "StatefulPartitionedCall/model/batch_normalization_13/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_13/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_12/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_13/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_14/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise", + "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_13/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_13/Relu", + "StatefulPartitionedCall/model/batch_normalization_14/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_14/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_13/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_14/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_15/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise", + "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_14/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_14/Relu", + "StatefulPartitionedCall/model/batch_normalization_15/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_15/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_14/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_1/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_15/Relu" + ], + "attr": { + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_15/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d_1/MaxPool", + "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tpaddings": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_16/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise", + "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_15/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_16/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding_1/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_16/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_15/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_16/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_17/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise", + "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_16/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_16/Relu", + "StatefulPartitionedCall/model/batch_normalization_17/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_17/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_16/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_17/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_18/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise", + "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_17/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_17/Relu", + "StatefulPartitionedCall/model/batch_normalization_18/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_18/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_17/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_18/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_19/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise", + "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_18/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_18/Relu", + "StatefulPartitionedCall/model/batch_normalization_19/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_19/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_18/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_19/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_20/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise", + "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_19/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_19/Relu", + "StatefulPartitionedCall/model/batch_normalization_20/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_20/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_19/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_20/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_21/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise", + "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_20/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_20/Relu", + "StatefulPartitionedCall/model/batch_normalization_21/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_21/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_20/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_21/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_22/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise", + "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_21/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_21/Relu", + "StatefulPartitionedCall/model/batch_normalization_22/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_22/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_21/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_22/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_23/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise", + "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_22/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_22/Relu", + "StatefulPartitionedCall/model/batch_normalization_23/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_23/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_22/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_2/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_23/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_23/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_2/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d_2/MaxPool", + "StatefulPartitionedCall/model/channel_padding_2/Pad/paddings" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tpaddings": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_24/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise", + "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_23/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_24/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding_2/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_24/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_23/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_24/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_25/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise", + "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_24/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_24/Relu", + "StatefulPartitionedCall/model/batch_normalization_25/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_25/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_24/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_25/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_26/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise", + "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_25/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_25/Relu", + "StatefulPartitionedCall/model/batch_normalization_26/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_26/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_25/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_26/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_27/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise", + "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_26/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_26/Relu", + "StatefulPartitionedCall/model/batch_normalization_27/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_27/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_26/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_27/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_28/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise", + "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_27/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_27/Relu", + "StatefulPartitionedCall/model/batch_normalization_28/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_28/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_27/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_28/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_29/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise", + "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_28/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_28/Relu", + "StatefulPartitionedCall/model/batch_normalization_29/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_29/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_28/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_29/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_30/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise", + "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_29/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_29/Relu", + "StatefulPartitionedCall/model/batch_normalization_30/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_30/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_29/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_30/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_31/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise", + "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_30/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_30/Relu", + "StatefulPartitionedCall/model/batch_normalization_31/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_31/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_30/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_3/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_31/Relu" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_31/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_32/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise", + "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_31/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_32/FusedBatchNormV3", + "StatefulPartitionedCall/model/max_pooling2d_3/MaxPool" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_32/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_31/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_32/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_33/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise", + "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_32/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_32/Relu", + "StatefulPartitionedCall/model/batch_normalization_33/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_33/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_32/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_33/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_34/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise", + "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_33/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_33/Relu", + "StatefulPartitionedCall/model/batch_normalization_34/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_34/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_33/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_34/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_35/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise", + "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_34/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_34/Relu", + "StatefulPartitionedCall/model/batch_normalization_35/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_35/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_34/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_35/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_36/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise", + "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_35/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_35/Relu", + "StatefulPartitionedCall/model/batch_normalization_36/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_36/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_35/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_36/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_37/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise", + "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_36/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_36/Relu", + "StatefulPartitionedCall/model/batch_normalization_37/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_37/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_36/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_37/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_38/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise", + "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_37/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_37/Relu", + "StatefulPartitionedCall/model/batch_normalization_38/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_38/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_37/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_38/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_39/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise", + "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_38/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_38/Relu", + "StatefulPartitionedCall/model/batch_normalization_39/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_39/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_38/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_32/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_39/Relu", + "StatefulPartitionedCall/model/regressor_32/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/regressor_32/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose/conv2d_transpose", + "op": "Conv2DBackpropInput", + "input": [ + "StatefulPartitionedCall/model/conv2d_transpose/stack", + "StatefulPartitionedCall/model/conv2d_transpose/conv2d_transpose/ReadVariableOp", + "StatefulPartitionedCall/model/activation_39/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_32/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_39/Relu", + "StatefulPartitionedCall/model/classificator_32/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/classificator_32/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_5/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/regressor_32/BiasAdd", + "StatefulPartitionedCall/model/reshape_1/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Mul", + "op": "Mul", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Scaled", + "StatefulPartitionedCall/model/conv2d_transpose/conv2d_transpose" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_4/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/classificator_32/BiasAdd", + "StatefulPartitionedCall/model/reshape/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3", + "op": "Add", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Mul", + "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Offset" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_40/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_39/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_31/Relu", + "StatefulPartitionedCall/model/activation_40/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/add_39/add", + "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_41/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise", + "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_40/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/add_39/add", + "StatefulPartitionedCall/model/batch_normalization_41/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_41/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_40/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose_1/conv2d_transpose", + "op": "Conv2DBackpropInput", + "input": [ + "StatefulPartitionedCall/model/conv2d_transpose_1/stack", + "StatefulPartitionedCall/model/conv2d_transpose_1/conv2d_transpose/ReadVariableOp", + "StatefulPartitionedCall/model/activation_41/Relu" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_16/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_41/Relu", + "StatefulPartitionedCall/model/classificator_16/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/classificator_16/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_16/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_41/Relu", + "StatefulPartitionedCall/model/regressor_16/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/regressor_16/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Mul", + "op": "Mul", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Scaled", + "StatefulPartitionedCall/model/conv2d_transpose_1/conv2d_transpose" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_2/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/classificator_16/BiasAdd", + "StatefulPartitionedCall/model/reshape/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_3/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/regressor_16/BiasAdd", + "StatefulPartitionedCall/model/reshape_1/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3", + "op": "Add", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Mul", + "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Offset" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_42/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_41/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_23/Relu", + "StatefulPartitionedCall/model/activation_42/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/add_41/add", + "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_43/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise", + "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_42/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/add_41/add", + "StatefulPartitionedCall/model/batch_normalization_43/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_43/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_42/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificator_8/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_43/Relu", + "StatefulPartitionedCall/model/classificator_8/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/classificator_8/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressor_8/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_43/Relu", + "StatefulPartitionedCall/model/regressor_8/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/regressor_8/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/classificator_8/BiasAdd", + "StatefulPartitionedCall/model/reshape/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/reshape_1/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/regressor_8/BiasAdd", + "StatefulPartitionedCall/model/reshape_1/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/classificators/concat", + "op": "ConcatV2", + "input": [ + "StatefulPartitionedCall/model/reshape/Reshape", + "StatefulPartitionedCall/model/reshape_2/Reshape", + "StatefulPartitionedCall/model/reshape_4/Reshape", + "StatefulPartitionedCall/model/classificators/concat/axis" + ], + "attr": { + "Tidx": { + "type": "DT_INT32" + }, + "T": { + "type": "DT_FLOAT" + }, + "N": { + "i": "3" + } + } + }, + { + "name": "StatefulPartitionedCall/model/regressors/concat", + "op": "ConcatV2", + "input": [ + "StatefulPartitionedCall/model/reshape_1/Reshape", + "StatefulPartitionedCall/model/reshape_3/Reshape", + "StatefulPartitionedCall/model/reshape_5/Reshape", + "StatefulPartitionedCall/model/classificators/concat/axis" + ], + "attr": { + "N": { + "i": "3" + }, + "Tidx": { + "type": "DT_INT32" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/objects/concat", + "op": "ConcatV2", + "input": [ + "StatefulPartitionedCall/model/classificators/concat", + "StatefulPartitionedCall/model/regressors/concat", + "StatefulPartitionedCall/model/objects/concat/axis" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "N": { + "i": "2" + }, + "Tidx": { + "type": "DT_INT32" + } + } + }, + { + "name": "Identity", + "op": "Identity", + "input": [ + "StatefulPartitionedCall/model/objects/concat" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + } + ], + "versions": { + "producer": 134, + "minConsumer": 12 + } + }, + "weightsManifest": [ + { + "paths": [ + "group1-shard1of2.bin", + "group1-shard2of2.bin" + ], + "weights": [ + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "shape": [ + 3, + 3, + 3, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "shape": [ + 1, + 1, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_8/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 128, + 2 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_8/BiasAdd/ReadVariableOp", + "shape": [ + 2 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/reshape/Reshape/shape", + "shape": [ + 3 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_16/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 256, + 2 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_16/BiasAdd/ReadVariableOp", + "shape": [ + 2 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_32/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 256, + 6 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificator_32/BiasAdd/ReadVariableOp", + "shape": [ + 6 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/classificators/concat/axis", + "shape": [], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_8/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 128, + 36 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_8/BiasAdd/ReadVariableOp", + "shape": [ + 36 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/reshape_1/Reshape/shape", + "shape": [ + 3 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_16/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 256, + 36 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_16/BiasAdd/ReadVariableOp", + "shape": [ + 36 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_32/Conv2D/ReadVariableOp", + "shape": [ + 1, + 1, + 256, + 108 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/regressor_32/BiasAdd/ReadVariableOp", + "shape": [ + 108 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/objects/concat/axis", + "shape": [], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose_1/stack", + "shape": [ + 4 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose_1/conv2d_transpose/ReadVariableOp", + "shape": [ + 2, + 2, + 128, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose/stack", + "shape": [ + 4 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_transpose/conv2d_transpose/ReadVariableOp", + "shape": [ + 2, + 2, + 256, + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad/paddings", + "shape": [ + 4, + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings", + "shape": [ + 4, + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_2/Pad/paddings", + "shape": [ + 4, + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp", + "shape": [ + 3, + 3, + 256, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Scaled", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3/Offset", + "shape": [ + 256 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Scaled", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3/Offset", + "shape": [ + 128 + ], + "dtype": "float32" + } + ] + } + ] +} diff --git a/demo/handpose/model/handskeleton/group1-shard1of2.bin b/demo/handpose/model/handskeleton/group1-shard1of2.bin new file mode 100644 index 0000000..bc381a2 Binary files /dev/null and b/demo/handpose/model/handskeleton/group1-shard1of2.bin differ diff --git a/demo/handpose/model/handskeleton/group1-shard2of2.bin b/demo/handpose/model/handskeleton/group1-shard2of2.bin new file mode 100644 index 0000000..bb6147d Binary files /dev/null and b/demo/handpose/model/handskeleton/group1-shard2of2.bin differ diff --git a/demo/handpose/model/handskeleton/model.json b/demo/handpose/model/handskeleton/model.json new file mode 100644 index 0000000..2fd8f6d --- /dev/null +++ b/demo/handpose/model/handskeleton/model.json @@ -0,0 +1,11619 @@ +{ + "format": "graph-model", + "generatedBy": "1.15.0", + "convertedBy": "TensorFlow.js Converter v1.4.0", + "userDefinedMetadata": { + "signature": { + "inputs": { + "input_1:0": { + "name": "input_1:0", + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + }, + { + "size": "3" + } + ] + } + } + }, + "outputs": { + "Identity_1:0": { + "name": "Identity_1:0", + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + } + ] + } + }, + "Identity:0": { + "name": "Identity:0", + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "63" + } + ] + } + } + } + } + }, + "modelTopology": { + "node": [ + { + "name": "input_1", + "op": "Placeholder", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "shape": { + "shape": { + "dim": [ + { + "size": "1" + }, + { + "size": "256" + }, + { + "size": "256" + }, + { + "size": "3" + } + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "3" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "32" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "64" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "64" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_42/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_42/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "128" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "128" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_43/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_43/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_44/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_44/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_45/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_45/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "op": "Const", + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "op": "Const", + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "192" + }, + { + "size": "192" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/convld_21_3d/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + }, + { + "size": "2" + }, + { + "size": "192" + }, + { + "size": "63" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/convld_21_3d/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "63" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/ld_21_3d/Reshape/shape", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv_handflag/BiasAdd/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv_handflag/Conv2D/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "2" + }, + { + "size": "2" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/p_re_lu/Neg", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "1" + }, + { + "size": "1" + }, + { + "size": "32" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad/paddings", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "32" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_INT32", + "tensorShape": { + "dim": [ + { + "size": "4" + }, + { + "size": "2" + } + ] + } + } + }, + "dtype": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "64" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "128" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "dtype": { + "type": "DT_FLOAT" + }, + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp", + "op": "Const", + "input": [ + "^input_1" + ], + "attr": { + "value": { + "tensor": { + "dtype": "DT_FLOAT", + "tensorShape": { + "dim": [ + { + "size": "5" + }, + { + "size": "5" + }, + { + "size": "192" + }, + { + "size": "1" + } + ] + } + } + }, + "dtype": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "input_1", + "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset", + "StatefulPartitionedCall/model/p_re_lu/Neg" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "2" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "U0FNRQ==" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==", + "UHJlbHU=" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "Func/StatefulPartitionedCall/output_control_node/_285", + "op": "NoOp", + "input": [ + "^StatefulPartitionedCall/model/conv_handflag/BiasAdd/ReadVariableOp", + "^StatefulPartitionedCall/model/conv_handflag/Conv2D/ReadVariableOp", + "^StatefulPartitionedCall/model/convld_21_3d/BiasAdd/ReadVariableOp", + "^StatefulPartitionedCall/model/convld_21_3d/Conv2D/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp", + "^StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp" + ] + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/batch_normalization/FusedBatchNormV3", + "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_1/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d/depthwise", + "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_1/FusedBatchNormV3", + "StatefulPartitionedCall/model/batch_normalization/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_2/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise", + "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_1/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation/Relu", + "StatefulPartitionedCall/model/batch_normalization_2/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_1/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_1/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_1/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_3/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise", + "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_2/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_1/Relu", + "StatefulPartitionedCall/model/batch_normalization_3/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_2/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_2/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_2/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_4/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise", + "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_3/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_2/Relu", + "StatefulPartitionedCall/model/batch_normalization_4/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_3/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_3/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_3/Relu" + ], + "attr": { + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_3/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d/MaxPool", + "StatefulPartitionedCall/model/channel_padding/Pad/paddings" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tpaddings": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_5/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise", + "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_4/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_5/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_4/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_4/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_4/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_6/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise", + "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_5/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_4/Relu", + "StatefulPartitionedCall/model/batch_normalization_6/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_5/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_5/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_5/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_7/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise", + "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_6/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_5/Relu", + "StatefulPartitionedCall/model/batch_normalization_7/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_6/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_6/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_6/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_8/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise", + "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_7/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_6/Relu", + "StatefulPartitionedCall/model/batch_normalization_8/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_7/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_7/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_7/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_9/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise", + "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_8/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_7/Relu", + "StatefulPartitionedCall/model/batch_normalization_9/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_8/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_8/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_8/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_10/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise", + "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_9/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_8/Relu", + "StatefulPartitionedCall/model/batch_normalization_10/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_9/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_9/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_1/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_9/Relu" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_9/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d_1/MaxPool", + "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tpaddings": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_11/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise", + "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_10/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_11/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding_1/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_10/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_10/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_10/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_12/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise", + "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_11/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_10/Relu", + "StatefulPartitionedCall/model/batch_normalization_12/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_11/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_11/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_11/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_13/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise", + "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_12/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_11/Relu", + "StatefulPartitionedCall/model/batch_normalization_13/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_12/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_12/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_12/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_14/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise", + "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_13/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_12/Relu", + "StatefulPartitionedCall/model/batch_normalization_14/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_13/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_13/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_13/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_15/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise", + "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_14/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_13/Relu", + "StatefulPartitionedCall/model/batch_normalization_15/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_14/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_14/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_14/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_16/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise", + "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_15/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_14/Relu", + "StatefulPartitionedCall/model/batch_normalization_16/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_15/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_15/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_15/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_17/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise", + "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_16/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_15/Relu", + "StatefulPartitionedCall/model/batch_normalization_17/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_16/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_16/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_2/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_16/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_16/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_2/Pad", + "op": "Pad", + "input": [ + "StatefulPartitionedCall/model/max_pooling2d_2/MaxPool", + "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings" + ], + "attr": { + "Tpaddings": { + "type": "DT_INT32" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_18/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise", + "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_17/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_18/FusedBatchNormV3", + "StatefulPartitionedCall/model/channel_padding_2/Pad" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_17/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_17/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_17/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_19/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise", + "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_18/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_17/Relu", + "StatefulPartitionedCall/model/batch_normalization_19/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_18/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_18/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_18/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_20/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise", + "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_19/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_18/Relu", + "StatefulPartitionedCall/model/batch_normalization_20/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_19/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_19/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_19/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_21/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise", + "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_20/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_19/Relu", + "StatefulPartitionedCall/model/batch_normalization_21/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_20/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_20/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_20/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_22/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise", + "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_21/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_20/Relu", + "StatefulPartitionedCall/model/batch_normalization_22/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_21/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_21/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_21/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_23/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise", + "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_22/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_21/Relu", + "StatefulPartitionedCall/model/batch_normalization_23/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_22/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_22/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_22/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_24/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise", + "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_23/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_22/Relu", + "StatefulPartitionedCall/model/batch_normalization_24/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_23/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_23/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_3/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_23/Relu" + ], + "attr": { + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_23/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_25/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise", + "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_24/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_25/FusedBatchNormV3", + "StatefulPartitionedCall/model/max_pooling2d_3/MaxPool" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_24/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_24/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_24/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_26/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise", + "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_25/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_24/Relu", + "StatefulPartitionedCall/model/batch_normalization_26/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_25/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_25/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_25/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_27/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise", + "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_26/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_25/Relu", + "StatefulPartitionedCall/model/batch_normalization_27/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_26/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_26/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_26/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_28/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise", + "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_27/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_26/Relu", + "StatefulPartitionedCall/model/batch_normalization_28/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_27/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_27/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_27/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_29/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise", + "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_28/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_27/Relu", + "StatefulPartitionedCall/model/batch_normalization_29/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_28/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_28/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_28/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_30/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise", + "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_29/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_28/Relu", + "StatefulPartitionedCall/model/batch_normalization_30/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_29/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_29/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_29/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_31/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise", + "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_30/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_29/Relu", + "StatefulPartitionedCall/model/batch_normalization_31/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_30/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_30/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_4/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_30/Relu" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_30/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_32/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise", + "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_31/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_32/FusedBatchNormV3", + "StatefulPartitionedCall/model/max_pooling2d_4/MaxPool" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_31/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_31/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_31/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_33/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise", + "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_32/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_31/Relu", + "StatefulPartitionedCall/model/batch_normalization_33/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_32/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_32/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_32/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp" + ], + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_34/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise", + "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_33/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_32/Relu", + "StatefulPartitionedCall/model/batch_normalization_34/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_33/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_33/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_33/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_35/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise", + "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_34/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_33/Relu", + "StatefulPartitionedCall/model/batch_normalization_35/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_34/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_34/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_34/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_36/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise", + "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_35/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_34/Relu", + "StatefulPartitionedCall/model/batch_normalization_36/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_35/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_35/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_35/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_37/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise", + "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_36/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_35/Relu", + "StatefulPartitionedCall/model/batch_normalization_37/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_36/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_36/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_36/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_38/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise", + "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_37/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_36/Relu", + "StatefulPartitionedCall/model/batch_normalization_38/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_37/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_37/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/max_pooling2d_5/MaxPool", + "op": "MaxPool", + "input": [ + "StatefulPartitionedCall/model/activation_37/Relu" + ], + "attr": { + "ksize": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "padding": { + "s": "VkFMSUQ=" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_37/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp" + ], + "attr": { + "strides": { + "list": { + "i": [ + "1", + "2", + "2", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_39/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise", + "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_38/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/batch_normalization_39/FusedBatchNormV3", + "StatefulPartitionedCall/model/max_pooling2d_5/MaxPool" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_38/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_38/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_38/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise", + "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_39/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_38/Relu", + "StatefulPartitionedCall/model/batch_normalization_40/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_39/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_39/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_39/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_41/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise", + "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_40/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_39/Relu", + "StatefulPartitionedCall/model/batch_normalization_41/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_40/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_40/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_40/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise", + "StatefulPartitionedCall/model/conv2d_42/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_42/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_41/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_40/Relu", + "StatefulPartitionedCall/model/batch_normalization_42/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_41/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_41/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_41/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_43/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise", + "StatefulPartitionedCall/model/conv2d_43/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_43/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_42/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_41/Relu", + "StatefulPartitionedCall/model/batch_normalization_43/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_42/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_42/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_42/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise/ReadVariableOp" + ], + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "padding": { + "s": "U0FNRQ==" + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_44/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise", + "StatefulPartitionedCall/model/conv2d_44/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_44/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_43/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_42/Relu", + "StatefulPartitionedCall/model/batch_normalization_44/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_43/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_43/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise", + "op": "DepthwiseConv2dNative", + "input": [ + "StatefulPartitionedCall/model/activation_43/Relu", + "StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise/ReadVariableOp" + ], + "attr": { + "padding": { + "s": "U0FNRQ==" + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + } + } + }, + { + "name": "StatefulPartitionedCall/model/batch_normalization_45/FusedBatchNormV3", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise", + "StatefulPartitionedCall/model/conv2d_45/Conv2D_weights", + "StatefulPartitionedCall/model/conv2d_45/Conv2D_bn_offset" + ], + "device": "/device:CPU:0", + "attr": { + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/add_44/add", + "op": "AddV2", + "input": [ + "StatefulPartitionedCall/model/activation_43/Relu", + "StatefulPartitionedCall/model/batch_normalization_45/FusedBatchNormV3" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_44/Relu", + "op": "Relu", + "input": [ + "StatefulPartitionedCall/model/add_44/add" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/conv_handflag/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_44/Relu", + "StatefulPartitionedCall/model/conv_handflag/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/conv_handflag/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + }, + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "data_format": { + "s": "TkhXQw==" + }, + "use_cudnn_on_gpu": { + "b": true + }, + "explicit_paddings": { + "list": {} + } + } + }, + { + "name": "StatefulPartitionedCall/model/convld_21_3d/BiasAdd", + "op": "_FusedConv2D", + "input": [ + "StatefulPartitionedCall/model/activation_44/Relu", + "StatefulPartitionedCall/model/convld_21_3d/Conv2D/ReadVariableOp", + "StatefulPartitionedCall/model/convld_21_3d/BiasAdd/ReadVariableOp" + ], + "device": "/device:CPU:0", + "attr": { + "dilations": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "T": { + "type": "DT_FLOAT" + }, + "data_format": { + "s": "TkhXQw==" + }, + "strides": { + "list": { + "i": [ + "1", + "1", + "1", + "1" + ] + } + }, + "explicit_paddings": { + "list": {} + }, + "use_cudnn_on_gpu": { + "b": true + }, + "num_args": { + "i": "1" + }, + "epsilon": { + "f": 0.0 + }, + "padding": { + "s": "VkFMSUQ=" + }, + "fused_ops": { + "list": { + "s": [ + "Qmlhc0FkZA==" + ] + } + } + } + }, + { + "name": "StatefulPartitionedCall/model/activation_handflag/Sigmoid", + "op": "Sigmoid", + "input": [ + "StatefulPartitionedCall/model/conv_handflag/BiasAdd" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "StatefulPartitionedCall/model/ld_21_3d/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/convld_21_3d/BiasAdd", + "StatefulPartitionedCall/model/ld_21_3d/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "StatefulPartitionedCall/model/output_handflag/Reshape", + "op": "Reshape", + "input": [ + "StatefulPartitionedCall/model/activation_handflag/Sigmoid", + "StatefulPartitionedCall/model/ld_21_3d/Reshape/shape" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + }, + "Tshape": { + "type": "DT_INT32" + } + } + }, + { + "name": "Identity", + "op": "Identity", + "input": [ + "StatefulPartitionedCall/model/ld_21_3d/Reshape", + "^Func/StatefulPartitionedCall/output_control_node/_285" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + }, + { + "name": "Identity_1", + "op": "Identity", + "input": [ + "StatefulPartitionedCall/model/output_handflag/Reshape", + "^Func/StatefulPartitionedCall/output_control_node/_285" + ], + "attr": { + "T": { + "type": "DT_FLOAT" + } + } + } + ], + "versions": { + "producer": 134 + } + }, + "weightsManifest": [ + { + "paths": [ + "group1-shard1of2.bin", + "group1-shard2of2.bin" + ], + "weights": [ + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_weights", + "shape": [ + 3, + 3, + 3, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_1/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_2/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_3/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_4/Conv2D_bn_offset", + "shape": [ + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_weights", + "shape": [ + 1, + 1, + 32, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_5/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_6/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_41/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_7/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_8/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_9/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_10/Conv2D_bn_offset", + "shape": [ + 64 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_weights", + "shape": [ + 1, + 1, + 64, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_11/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_42/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_12/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_13/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_42/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_14/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_15/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_16/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_17/Conv2D_bn_offset", + "shape": [ + 128 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_weights", + "shape": [ + 1, + 1, + 128, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_18/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_43/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_19/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_20/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_43/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_21/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_22/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_23/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_24/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_25/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_44/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_26/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_27/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_44/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_28/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_29/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_30/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_31/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_32/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_45/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_33/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_34/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_45/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_35/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_36/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_37/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_38/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_39/Conv2D_bn_offset", + "shape": [ + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv2d_40/Conv2D_weights", + "shape": [ + 1, + 1, + 192, + 192 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_41/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_42/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_43/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_44/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/convld_21_3d/Conv2D/ReadVariableOp", + "shape": [ + 2, + 2, + 192, + 63 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/convld_21_3d/BiasAdd/ReadVariableOp", + "shape": [ + 63 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/ld_21_3d/Reshape/shape", + "shape": [ + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/conv_handflag/BiasAdd/ReadVariableOp", + "shape": [ + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/conv_handflag/Conv2D/ReadVariableOp", + "shape": [ + 2, + 2, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/p_re_lu/Neg", + "shape": [ + 1, + 1, + 32 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_1/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_2/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_3/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/channel_padding/Pad/paddings", + "shape": [ + 4, + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_4/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 32, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_5/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_6/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_7/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_8/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_9/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/channel_padding_1/Pad/paddings", + "shape": [ + 4, + 2 + ], + "dtype": "int32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_10/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 64, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_11/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_12/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_13/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_14/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_15/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_16/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_17/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 128, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_18/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_19/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_20/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_21/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_22/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_23/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_24/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_25/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_26/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_27/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_28/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_29/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_30/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_31/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_32/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_33/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_34/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_35/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_36/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_37/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_38/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_39/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + }, + { + "name": "StatefulPartitionedCall/model/depthwise_conv2d_40/depthwise/ReadVariableOp", + "shape": [ + 5, + 5, + 192, + 1 + ], + "dtype": "float32" + } + ] + } + ] +} diff --git a/demo/handpose/threejs.html b/demo/handpose/threejs.html new file mode 100644 index 0000000..cdc3633 --- /dev/null +++ b/demo/handpose/threejs.html @@ -0,0 +1,87 @@ + + + + + + + + + diff --git a/demo/handpose/vendor/GLTFLoader.js b/demo/handpose/vendor/GLTFLoader.js new file mode 100644 index 0000000..d011eb7 --- /dev/null +++ b/demo/handpose/vendor/GLTFLoader.js @@ -0,0 +1,3394 @@ +/** + * @author Rich Tibbett / https://github.com/richtr + * @author mrdoob / http://mrdoob.com/ + * @author Tony Parisi / http://www.tonyparisi.com/ + * @author Takahiro / https://github.com/takahirox + * @author Don McCurdy / https://www.donmccurdy.com + */ + +THREE.GLTFLoader = ( function () { + + function GLTFLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.dracoLoader = null; + + } + + GLTFLoader.prototype = { + + constructor: GLTFLoader, + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var resourcePath; + + if ( this.resourcePath !== undefined ) { + + resourcePath = this.resourcePath; + + } else if ( this.path !== undefined ) { + + resourcePath = this.path; + + } else { + + resourcePath = THREE.LoaderUtils.extractUrlBase( url ); + + } + + // Tells the LoadingManager to track an extra item, which resolves after + // the model is fully loaded. This means the count of items loaded will + // be incorrect, but ensures manager.onLoad() does not fire early. + scope.manager.itemStart( url ); + + var _onError = function ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }; + + var loader = new THREE.FileLoader( scope.manager ); + + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + try { + + scope.parse( data, resourcePath, function ( gltf ) { + + onLoad( gltf ); + + scope.manager.itemEnd( url ); + + }, _onError ); + + } catch ( e ) { + + _onError( e ); + + } + + }, onProgress, _onError ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResourcePath: function ( value ) { + + this.resourcePath = value; + return this; + + }, + + setDRACOLoader: function ( dracoLoader ) { + + this.dracoLoader = dracoLoader; + return this; + + }, + + parse: function ( data, path, onLoad, onError ) { + + var content; + var extensions = {}; + + if ( typeof data === 'string' ) { + + content = data; + + } else { + + var magic = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { + + try { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + + } catch ( error ) { + + if ( onError ) onError( error ); + return; + + } + + content = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content; + + } else { + + content = THREE.LoaderUtils.decodeText( new Uint8Array( data ) ); + + } + + } + + var json = JSON.parse( content ); + + if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { + + if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.' ) ); + return; + + } + + if ( json.extensionsUsed ) { + + for ( var i = 0; i < json.extensionsUsed.length; ++ i ) { + + var extensionName = json.extensionsUsed[ i ]; + var extensionsRequired = json.extensionsRequired || []; + + switch ( extensionName ) { + + case EXTENSIONS.KHR_LIGHTS_PUNCTUAL: + extensions[ extensionName ] = new GLTFLightsExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[ extensionName ] = new GLTFMaterialsUnlitExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: + extensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension( json ); + break; + + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); + break; + + case EXTENSIONS.MSFT_TEXTURE_DDS: + extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension( json ); + break; + + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] = new GLTFTextureTransformExtension( json ); + break; + + default: + + if ( extensionsRequired.indexOf( extensionName ) >= 0 ) { + + console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); + + } + + } + + } + + } + + var parser = new GLTFParser( json, extensions, { + + path: path || this.resourcePath || '', + crossOrigin: this.crossOrigin, + manager: this.manager + + } ); + + parser.parse( function ( scene, scenes, cameras, animations, json ) { + + var glTF = { + scene: scene, + scenes: scenes, + cameras: cameras, + animations: animations, + asset: json.asset, + parser: parser, + userData: {} + }; + + addUnknownExtensionsToUserData( extensions, glTF, json ); + + onLoad( glTF ); + + }, onError ); + + } + + }; + + /* GLTFREGISTRY */ + + function GLTFRegistry() { + + var objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + } + + }; + + } + + /*********************************/ + /********** EXTENSIONS ***********/ + /*********************************/ + + var EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + MSFT_TEXTURE_DDS: 'MSFT_texture_dds' + }; + + /** + * DDS Texture Extension + * + * Specification: + * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds + * + */ + function GLTFTextureDDSExtension() { + + if ( ! THREE.DDSLoader ) { + + throw new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader' ); + + } + + this.name = EXTENSIONS.MSFT_TEXTURE_DDS; + this.ddsLoader = new THREE.DDSLoader(); + + } + + /** + * Lights Extension + * + * Specification: PENDING + */ + function GLTFLightsExtension( json ) { + + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {}; + this.lightDefs = extension.lights || []; + + } + + GLTFLightsExtension.prototype.loadLight = function ( lightIndex ) { + + var lightDef = this.lightDefs[ lightIndex ]; + var lightNode; + + var color = new THREE.Color( 0xffffff ); + if ( lightDef.color !== undefined ) color.fromArray( lightDef.color ); + + var range = lightDef.range !== undefined ? lightDef.range : 0; + + switch ( lightDef.type ) { + + case 'directional': + lightNode = new THREE.DirectionalLight( color ); + lightNode.target.position.set( 0, 0, -1 ); + lightNode.add( lightNode.target ); + break; + + case 'point': + lightNode = new THREE.PointLight( color ); + lightNode.distance = range; + break; + + case 'spot': + lightNode = new THREE.SpotLight( color ); + lightNode.distance = range; + // Handle spotlight properties. + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set( 0, 0, -1 ); + lightNode.add( lightNode.target ); + break; + + default: + throw new Error( 'THREE.GLTFLoader: Unexpected light type, "' + lightDef.type + '".' ); + + } + + lightNode.decay = 2; + + if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; + + lightNode.name = lightDef.name || ( 'light_' + lightIndex ); + + return Promise.resolve( lightNode ); + + }; + + /** + * Unlit Materials Extension (pending) + * + * PR: https://github.com/KhronosGroup/glTF/pull/1163 + */ + function GLTFMaterialsUnlitExtension( json ) { + + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + + } + + GLTFMaterialsUnlitExtension.prototype.getMaterialType = function ( material ) { + + return THREE.MeshBasicMaterial; + + }; + + GLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, material, parser ) { + + var pending = []; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + var metallicRoughness = material.pbrMetallicRoughness; + + if ( metallicRoughness ) { + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + } + + return Promise.all( pending ); + + }; + + /* BINARY EXTENSION */ + + var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; + var BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; + var BINARY_EXTENSION_HEADER_LENGTH = 12; + var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + + function GLTFBinaryExtension( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + + this.header = { + magic: THREE.LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.' ); + + } + + var chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + var chunkIndex = 0; + + while ( chunkIndex < chunkView.byteLength ) { + + var chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + var chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = THREE.LoaderUtils.decodeText( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); + + } + + } + + /** + * DRACO Mesh Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/pull/874 + */ + function GLTFDracoMeshCompressionExtension( json, dracoLoader ) { + + if ( ! dracoLoader ) { + + throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); + + } + + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + THREE.DRACOLoader.getDecoderModule(); + + } + + GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) { + + var json = this.json; + var dracoLoader = this.dracoLoader; + var bufferViewIndex = primitive.extensions[ this.name ].bufferView; + var gltfAttributeMap = primitive.extensions[ this.name ].attributes; + var threeAttributeMap = {}; + var attributeNormalizedMap = {}; + var attributeTypeMap = {}; + + for ( var attributeName in gltfAttributeMap ) { + + if ( ! ( attributeName in ATTRIBUTES ) ) continue; + + threeAttributeMap[ ATTRIBUTES[ attributeName ] ] = gltfAttributeMap[ attributeName ]; + + } + + for ( attributeName in primitive.attributes ) { + + if ( ATTRIBUTES[ attributeName ] !== undefined && gltfAttributeMap[ attributeName ] !== undefined ) { + + var accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; + var componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + attributeTypeMap[ ATTRIBUTES[ attributeName ] ] = componentType; + attributeNormalizedMap[ ATTRIBUTES[ attributeName ] ] = accessorDef.normalized === true; + + } + + } + + return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { + + return new Promise( function ( resolve ) { + + dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { + + for ( var attributeName in geometry.attributes ) { + + var attribute = geometry.attributes[ attributeName ]; + var normalized = attributeNormalizedMap[ attributeName ]; + + if ( normalized !== undefined ) attribute.normalized = normalized; + + } + + resolve( geometry ); + + }, threeAttributeMap, attributeTypeMap ); + + } ); + + } ); + + }; + + /** + * Texture Transform Extension + * + * Specification: + */ + function GLTFTextureTransformExtension( json ) { + + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + + } + + GLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) { + + texture = texture.clone(); + + if ( transform.offset !== undefined ) { + + texture.offset.fromArray( transform.offset ); + + } + + if ( transform.rotation !== undefined ) { + + texture.rotation = transform.rotation; + + } + + if ( transform.scale !== undefined ) { + + texture.repeat.fromArray( transform.scale ); + + } + + if ( transform.texCoord !== undefined ) { + + console.warn( 'THREE.GLTFLoader: Custom UV sets in "' + this.name + '" extension not yet supported.' ); + + } + + texture.needsUpdate = true; + + return texture; + + }; + + /** + * Specular-Glossiness Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness + */ + function GLTFMaterialsPbrSpecularGlossinessExtension() { + + return { + + name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, + + specularGlossinessParams: [ + 'color', + 'map', + 'lightMap', + 'lightMapIntensity', + 'aoMap', + 'aoMapIntensity', + 'emissive', + 'emissiveIntensity', + 'emissiveMap', + 'bumpMap', + 'bumpScale', + 'normalMap', + 'displacementMap', + 'displacementScale', + 'displacementBias', + 'specularMap', + 'specular', + 'glossinessMap', + 'glossiness', + 'alphaMap', + 'envMap', + 'envMapIntensity', + 'refractionRatio', + ], + + getMaterialType: function () { + + return THREE.ShaderMaterial; + + }, + + extendParams: function ( params, material, parser ) { + + var pbrSpecularGlossiness = material.extensions[ this.name ]; + + var shader = THREE.ShaderLib[ 'standard' ]; + + var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); + + var specularMapParsFragmentChunk = [ + '#ifdef USE_SPECULARMAP', + ' uniform sampler2D specularMap;', + '#endif' + ].join( '\n' ); + + var glossinessMapParsFragmentChunk = [ + '#ifdef USE_GLOSSINESSMAP', + ' uniform sampler2D glossinessMap;', + '#endif' + ].join( '\n' ); + + var specularMapFragmentChunk = [ + 'vec3 specularFactor = specular;', + '#ifdef USE_SPECULARMAP', + ' vec4 texelSpecular = texture2D( specularMap, vUv );', + ' texelSpecular = sRGBToLinear( texelSpecular );', + ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' specularFactor *= texelSpecular.rgb;', + '#endif' + ].join( '\n' ); + + var glossinessMapFragmentChunk = [ + 'float glossinessFactor = glossiness;', + '#ifdef USE_GLOSSINESSMAP', + ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', + ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' glossinessFactor *= texelGlossiness.a;', + '#endif' + ].join( '\n' ); + + var lightPhysicalFragmentChunk = [ + 'PhysicalMaterial material;', + 'material.diffuseColor = diffuseColor.rgb;', + 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', + 'material.specularColor = specularFactor.rgb;', + ].join( '\n' ); + + var fragmentShader = shader.fragmentShader + .replace( 'uniform float roughness;', 'uniform vec3 specular;' ) + .replace( 'uniform float metalness;', 'uniform float glossiness;' ) + .replace( '#include ', specularMapParsFragmentChunk ) + .replace( '#include ', glossinessMapParsFragmentChunk ) + .replace( '#include ', specularMapFragmentChunk ) + .replace( '#include ', glossinessMapFragmentChunk ) + .replace( '#include ', lightPhysicalFragmentChunk ); + + delete uniforms.roughness; + delete uniforms.metalness; + delete uniforms.roughnessMap; + delete uniforms.metalnessMap; + + uniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) }; + uniforms.glossiness = { value: 0.5 }; + uniforms.specularMap = { value: null }; + uniforms.glossinessMap = { value: null }; + + params.vertexShader = shader.vertexShader; + params.fragmentShader = fragmentShader; + params.uniforms = uniforms; + params.defines = { 'STANDARD': '' }; + + params.color = new THREE.Color( 1.0, 1.0, 1.0 ); + params.opacity = 1.0; + + var pending = []; + + if ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) { + + var array = pbrSpecularGlossiness.diffuseFactor; + + params.color.fromArray( array ); + params.opacity = array[ 3 ]; + + } + + if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) { + + pending.push( parser.assignTexture( params, 'map', pbrSpecularGlossiness.diffuseTexture ) ); + + } + + params.emissive = new THREE.Color( 0.0, 0.0, 0.0 ); + params.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0; + params.specular = new THREE.Color( 1.0, 1.0, 1.0 ); + + if ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) { + + params.specular.fromArray( pbrSpecularGlossiness.specularFactor ); + + } + + if ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) { + + var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture; + pending.push( parser.assignTexture( params, 'glossinessMap', specGlossMapDef ) ); + pending.push( parser.assignTexture( params, 'specularMap', specGlossMapDef ) ); + + } + + return Promise.all( pending ); + + }, + + createMaterial: function ( params ) { + + // setup material properties based on MeshStandardMaterial for Specular-Glossiness + + var material = new THREE.ShaderMaterial( { + defines: params.defines, + vertexShader: params.vertexShader, + fragmentShader: params.fragmentShader, + uniforms: params.uniforms, + fog: true, + lights: true, + opacity: params.opacity, + transparent: params.transparent + } ); + + material.isGLTFSpecularGlossinessMaterial = true; + + material.color = params.color; + + material.map = params.map === undefined ? null : params.map; + + material.lightMap = null; + material.lightMapIntensity = 1.0; + + material.aoMap = params.aoMap === undefined ? null : params.aoMap; + material.aoMapIntensity = 1.0; + + material.emissive = params.emissive; + material.emissiveIntensity = 1.0; + material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap; + + material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap; + material.bumpScale = 1; + + material.normalMap = params.normalMap === undefined ? null : params.normalMap; + if ( params.normalScale ) material.normalScale = params.normalScale; + + material.displacementMap = null; + material.displacementScale = 1; + material.displacementBias = 0; + + material.specularMap = params.specularMap === undefined ? null : params.specularMap; + material.specular = params.specular; + + material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap; + material.glossiness = params.glossiness; + + material.alphaMap = null; + + material.envMap = params.envMap === undefined ? null : params.envMap; + material.envMapIntensity = 1.0; + + material.refractionRatio = 0.98; + + material.extensions.derivatives = true; + + return material; + + }, + + /** + * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can + * copy only properties it knows about or inherits, and misses many properties that would + * normally be defined by MeshStandardMaterial. + * + * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of + * loading a glTF model, but cloning later (e.g. by the user) would require these changes + * AND also updating `.onBeforeRender` on the parent mesh. + * + * @param {THREE.ShaderMaterial} source + * @return {THREE.ShaderMaterial} + */ + cloneMaterial: function ( source ) { + + var target = source.clone(); + + target.isGLTFSpecularGlossinessMaterial = true; + + var params = this.specularGlossinessParams; + + for ( var i = 0, il = params.length; i < il; i ++ ) { + + target[ params[ i ] ] = source[ params[ i ] ]; + + } + + return target; + + }, + + // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer. + refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) { + + if ( material.isGLTFSpecularGlossinessMaterial !== true ) { + + return; + + } + + var uniforms = material.uniforms; + var defines = material.defines; + + uniforms.opacity.value = material.opacity; + + uniforms.diffuse.value.copy( material.color ); + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + uniforms.map.value = material.map; + uniforms.specularMap.value = material.specularMap; + uniforms.alphaMap.value = material.alphaMap; + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.glossinessMap ) { + + uvScaleMap = material.glossinessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + uniforms.envMapIntensity.value = material.envMapIntensity; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = renderer.properties.get( material.envMap ).__maxMipLevel; + } + + uniforms.specular.value.copy( material.specular ); + uniforms.glossiness.value = material.glossiness; + + uniforms.glossinessMap.value = material.glossinessMap; + + uniforms.emissiveMap.value = material.emissiveMap; + uniforms.bumpMap.value = material.bumpMap; + uniforms.normalMap.value = material.normalMap; + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + if ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) { + + defines.USE_GLOSSINESSMAP = ''; + // set USE_ROUGHNESSMAP to enable vUv + defines.USE_ROUGHNESSMAP = ''; + + } + + if ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) { + + delete defines.USE_GLOSSINESSMAP; + delete defines.USE_ROUGHNESSMAP; + + } + + } + + }; + + } + + /*********************************/ + /********** INTERPOLATION ********/ + /*********************************/ + + // Spline Interpolation + // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation + function GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + THREE.Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + GLTFCubicSplineInterpolant.prototype = Object.create( THREE.Interpolant.prototype ); + GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant; + + GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) { + + // Copies a sample value to the result buffer. See description of glTF + // CUBICSPLINE values layout in interpolate_() function below. + + var result = this.resultBuffer, + values = this.sampleValues, + valueSize = this.valueSize, + offset = index * valueSize * 3 + valueSize; + + for ( var i = 0; i !== valueSize; i ++ ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }; + + GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer; + var values = this.sampleValues; + var stride = this.valueSize; + + var stride2 = stride * 2; + var stride3 = stride * 3; + + var td = t1 - t0; + + var p = ( t - t0 ) / td; + var pp = p * p; + var ppp = pp * p; + + var offset1 = i1 * stride3; + var offset0 = offset1 - stride3; + + var s2 = - 2 * ppp + 3 * pp; + var s3 = ppp - pp; + var s0 = 1 - s2; + var s1 = s3 - pp + p; + + // Layout of keyframe output values for CUBICSPLINE animations: + // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] + for ( var i = 0; i !== stride; i ++ ) { + + var p0 = values[ offset0 + i + stride ]; // splineVertex_k + var m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) + var p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 + var m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) + + result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + + } + + return result; + + }; + + /*********************************/ + /********** INTERNALS ************/ + /*********************************/ + + /* CONSTANTS */ + + var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 + }; + + var WEBGL_TYPE = { + 5126: Number, + //35674: THREE.Matrix2, + 35675: THREE.Matrix3, + 35676: THREE.Matrix4, + 35664: THREE.Vector2, + 35665: THREE.Vector3, + 35666: THREE.Vector4, + 35678: THREE.Texture + }; + + var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array + }; + + var WEBGL_FILTERS = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipMapNearestFilter, + 9985: THREE.LinearMipMapNearestFilter, + 9986: THREE.NearestMipMapLinearFilter, + 9987: THREE.LinearMipMapLinearFilter + }; + + var WEBGL_WRAPPINGS = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping + }; + + var WEBGL_SIDES = { + 1028: THREE.BackSide, // Culling front + 1029: THREE.FrontSide // Culling back + //1032: THREE.NoSide // Culling front and back, what to do? + }; + + var WEBGL_DEPTH_FUNCS = { + 512: THREE.NeverDepth, + 513: THREE.LessDepth, + 514: THREE.EqualDepth, + 515: THREE.LessEqualDepth, + 516: THREE.GreaterEqualDepth, + 517: THREE.NotEqualDepth, + 518: THREE.GreaterEqualDepth, + 519: THREE.AlwaysDepth + }; + + var WEBGL_BLEND_EQUATIONS = { + 32774: THREE.AddEquation, + 32778: THREE.SubtractEquation, + 32779: THREE.ReverseSubtractEquation + }; + + var WEBGL_BLEND_FUNCS = { + 0: THREE.ZeroFactor, + 1: THREE.OneFactor, + 768: THREE.SrcColorFactor, + 769: THREE.OneMinusSrcColorFactor, + 770: THREE.SrcAlphaFactor, + 771: THREE.OneMinusSrcAlphaFactor, + 772: THREE.DstAlphaFactor, + 773: THREE.OneMinusDstAlphaFactor, + 774: THREE.DstColorFactor, + 775: THREE.OneMinusDstColorFactor, + 776: THREE.SrcAlphaSaturateFactor + // The followings are not supported by Three.js yet + //32769: CONSTANT_COLOR, + //32770: ONE_MINUS_CONSTANT_COLOR, + //32771: CONSTANT_ALPHA, + //32772: ONE_MINUS_CONSTANT_COLOR + }; + + var WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 + }; + + var ATTRIBUTES = { + POSITION: 'position', + NORMAL: 'normal', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv2', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', + }; + + var PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' + }; + + var INTERPOLATION = { + CUBICSPLINE: THREE.InterpolateSmooth, // We use custom interpolation GLTFCubicSplineInterpolation for CUBICSPLINE. + // KeyframeTrack.optimize() can't handle glTF Cubic Spline output values layout, + // using THREE.InterpolateSmooth for KeyframeTrack instantiation to prevent optimization. + // See KeyframeTrack.optimize() for the detail. + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete + }; + + var STATES_ENABLES = { + 2884: 'CULL_FACE', + 2929: 'DEPTH_TEST', + 3042: 'BLEND', + 3089: 'SCISSOR_TEST', + 32823: 'POLYGON_OFFSET_FILL', + 32926: 'SAMPLE_ALPHA_TO_COVERAGE' + }; + + var ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' + }; + + var MIME_TYPE_FORMATS = { + 'image/png': THREE.RGBAFormat, + 'image/jpeg': THREE.RGBFormat + }; + + /* UTILITY FUNCTIONS */ + + function resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) return ''; + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) return url; + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) return url; + + // Blob URL + if ( /^blob:.*$/i.test( url ) ) return url; + + // Relative URL + return path + url; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material + */ + function createDefaultMaterial() { + + return new THREE.MeshStandardMaterial( { + color: 0xFFFFFF, + emissive: 0x000000, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: THREE.FrontSide + } ); + + } + + function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { + + // Add unknown glTF extensions to an object's userData. + + for ( var name in objectDef.extensions ) { + + if ( knownExtensions[ name ] === undefined ) { + + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; + + } + + } + + } + + /** + * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object + * @param {GLTF.definition} gltfDef + */ + function assignExtrasToUserData( object, gltfDef ) { + + if ( gltfDef.extras !== undefined ) { + + if ( typeof gltfDef.extras === 'object' ) { + + object.userData = gltfDef.extras; + + } else { + + console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); + + } + + } + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets + * + * @param {THREE.BufferGeometry} geometry + * @param {Array} targets + * @param {GLTFParser} parser + * @return {Promise} + */ + function addMorphTargets( geometry, targets, parser ) { + + var hasMorphPosition = false; + var hasMorphNormal = false; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( target.POSITION !== undefined ) hasMorphPosition = true; + if ( target.NORMAL !== undefined ) hasMorphNormal = true; + + if ( hasMorphPosition && hasMorphNormal ) break; + + } + + if ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry ); + + var pendingPositionAccessors = []; + var pendingNormalAccessors = []; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( hasMorphPosition ) { + + // TODO: Error-prone use of a callback inside a loop. + var accessor = target.POSITION !== undefined + ? parser.getDependency( 'accessor', target.POSITION ) + .then( function ( accessor ) { + // Cloning not to pollute original accessor below + return cloneBufferAttribute( accessor ); + } ) + : geometry.attributes.position; + + pendingPositionAccessors.push( accessor ); + + } + + if ( hasMorphNormal ) { + + // TODO: Error-prone use of a callback inside a loop. + var accessor = target.NORMAL !== undefined + ? parser.getDependency( 'accessor', target.NORMAL ) + .then( function ( accessor ) { + return cloneBufferAttribute( accessor ); + } ) + : geometry.attributes.normal; + + pendingNormalAccessors.push( accessor ); + + } + + } + + return Promise.all( [ + Promise.all( pendingPositionAccessors ), + Promise.all( pendingNormalAccessors ) + ] ).then( function ( accessors ) { + + var morphPositions = accessors[ 0 ]; + var morphNormals = accessors[ 1 ]; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + var attributeName = 'morphTarget' + i; + + if ( hasMorphPosition ) { + + // Three.js morph position is absolute value. The formula is + // basePosition + // + weight0 * ( morphPosition0 - basePosition ) + // + weight1 * ( morphPosition1 - basePosition ) + // ... + // while the glTF one is relative + // basePosition + // + weight0 * glTFmorphPosition0 + // + weight1 * glTFmorphPosition1 + // ... + // then we need to convert from relative to absolute here. + + if ( target.POSITION !== undefined ) { + + var positionAttribute = morphPositions[ i ]; + positionAttribute.name = attributeName; + + var position = geometry.attributes.position; + + for ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) { + + positionAttribute.setXYZ( + j, + positionAttribute.getX( j ) + position.getX( j ), + positionAttribute.getY( j ) + position.getY( j ), + positionAttribute.getZ( j ) + position.getZ( j ) + ); + + } + + } + + } + + if ( hasMorphNormal ) { + + // see target.POSITION's comment + + if ( target.NORMAL !== undefined ) { + + var normalAttribute = morphNormals[ i ]; + normalAttribute.name = attributeName; + + var normal = geometry.attributes.normal; + + for ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) { + + normalAttribute.setXYZ( + j, + normalAttribute.getX( j ) + normal.getX( j ), + normalAttribute.getY( j ) + normal.getY( j ), + normalAttribute.getZ( j ) + normal.getZ( j ) + ); + + } + + } + + } + + } + + if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; + if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; + + return geometry; + + } ); + + } + + /** + * @param {THREE.Mesh} mesh + * @param {GLTF.Mesh} meshDef + */ + function updateMorphTargets( mesh, meshDef ) { + + mesh.updateMorphTargets(); + + if ( meshDef.weights !== undefined ) { + + for ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) { + + mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; + + } + + } + + // .extras has user-defined data, so check that .extras.targetNames is an array. + if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { + + var targetNames = meshDef.extras.targetNames; + + if ( mesh.morphTargetInfluences.length === targetNames.length ) { + + mesh.morphTargetDictionary = {}; + + for ( var i = 0, il = targetNames.length; i < il; i ++ ) { + + mesh.morphTargetDictionary[ targetNames[ i ] ] = i; + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); + + } + + } + + } + + function isPrimitiveEqual( a, b ) { + + var dracoExtA = a.extensions ? a.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] : undefined; + var dracoExtB = b.extensions ? b.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] : undefined; + + if ( dracoExtA && dracoExtB ) { + + if ( dracoExtA.bufferView !== dracoExtB.bufferView ) return false; + + return isObjectEqual( dracoExtA.attributes, dracoExtB.attributes ); + + } + + if ( a.indices !== b.indices ) { + + return false; + + } + + return isObjectEqual( a.attributes, b.attributes ); + + } + + function isObjectEqual( a, b ) { + + if ( Object.keys( a ).length !== Object.keys( b ).length ) return false; + + for ( var key in a ) { + + if ( a[ key ] !== b[ key ] ) return false; + + } + + return true; + + } + + function isArrayEqual( a, b ) { + + if ( a.length !== b.length ) return false; + + for ( var i = 0, il = a.length; i < il; i ++ ) { + + if ( a[ i ] !== b[ i ] ) return false; + + } + + return true; + + } + + function getCachedGeometry( cache, newPrimitive ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( isPrimitiveEqual( cached.primitive, newPrimitive ) ) return cached.promise; + + } + + return null; + + } + + function getCachedCombinedGeometry( cache, geometries ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( isArrayEqual( geometries, cached.baseGeometries ) ) return cached.geometry; + + } + + return null; + + } + + function getCachedMultiPassGeometry( cache, geometry, primitives ) { + + for ( var i = 0, il = cache.length; i < il; i ++ ) { + + var cached = cache[ i ]; + + if ( geometry === cached.baseGeometry && isArrayEqual( primitives, cached.primitives ) ) return cached.geometry; + + } + + return null; + + } + + function cloneBufferAttribute( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) { + + var count = attribute.count; + var itemSize = attribute.itemSize; + var array = attribute.array.slice( 0, count * itemSize ); + + for ( var i = 0, j = 0; i < count; ++ i ) { + + array[ j ++ ] = attribute.getX( i ); + if ( itemSize >= 2 ) array[ j ++ ] = attribute.getY( i ); + if ( itemSize >= 3 ) array[ j ++ ] = attribute.getZ( i ); + if ( itemSize >= 4 ) array[ j ++ ] = attribute.getW( i ); + + } + + return new THREE.BufferAttribute( array, itemSize, attribute.normalized ); + + } + + return attribute.clone(); + + } + + /** + * Checks if we can build a single Mesh with MultiMaterial from multiple primitives. + * Returns true if all primitives use the same attributes/morphAttributes/mode + * and also have index. Otherwise returns false. + * + * @param {Array} primitives + * @return {Boolean} + */ + function isMultiPassGeometry( primitives ) { + + if ( primitives.length < 2 ) return false; + + var primitive0 = primitives[ 0 ]; + var targets0 = primitive0.targets || []; + + if ( primitive0.indices === undefined ) return false; + + for ( var i = 1, il = primitives.length; i < il; i ++ ) { + + var primitive = primitives[ i ]; + + if ( primitive0.mode !== primitive.mode ) return false; + if ( primitive.indices === undefined ) return false; + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) return false; + if ( ! isObjectEqual( primitive0.attributes, primitive.attributes ) ) return false; + + var targets = primitive.targets || []; + + if ( targets0.length !== targets.length ) return false; + + for ( var j = 0, jl = targets0.length; j < jl; j ++ ) { + + if ( ! isObjectEqual( targets0[ j ], targets[ j ] ) ) return false; + + } + + } + + return true; + + } + + /* GLTF PARSER */ + + function GLTFParser( json, extensions, options ) { + + this.json = json || {}; + this.extensions = extensions || {}; + this.options = options || {}; + + // loader object cache + this.cache = new GLTFRegistry(); + + // BufferGeometry caching + this.primitiveCache = []; + this.multiplePrimitivesCache = []; + this.multiPassGeometryCache = []; + + this.textureLoader = new THREE.TextureLoader( this.options.manager ); + this.textureLoader.setCrossOrigin( this.options.crossOrigin ); + + this.fileLoader = new THREE.FileLoader( this.options.manager ); + this.fileLoader.setResponseType( 'arraybuffer' ); + + } + + GLTFParser.prototype.parse = function ( onLoad, onError ) { + + var json = this.json; + + // Clear the loader cache + this.cache.removeAll(); + + // Mark the special nodes/meshes in json for efficient parse + this.markDefs(); + + // Fire the callback on complete + this.getMultiDependencies( [ + + 'scene', + 'animation', + 'camera' + + ] ).then( function ( dependencies ) { + + var scenes = dependencies.scenes || []; + var scene = scenes[ json.scene || 0 ]; + var animations = dependencies.animations || []; + var cameras = dependencies.cameras || []; + + onLoad( scene, scenes, cameras, animations, json ); + + } ).catch( onError ); + + }; + + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + GLTFParser.prototype.markDefs = function () { + + var nodeDefs = this.json.nodes || []; + var skinDefs = this.json.skins || []; + var meshDefs = this.json.meshes || []; + + var meshReferences = {}; + var meshUses = {}; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + for ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { + + var joints = skinDefs[ skinIndex ].joints; + + for ( var i = 0, il = joints.length; i < il; i ++ ) { + + nodeDefs[ joints[ i ] ].isBone = true; + + } + + } + + // Meshes can (and should) be reused by multiple nodes in a glTF asset. To + // avoid having more than one THREE.Mesh with the same name, count + // references and rename instances below. + // + // Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + for ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + var nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.mesh !== undefined ) { + + if ( meshReferences[ nodeDef.mesh ] === undefined ) { + + meshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0; + + } + + meshReferences[ nodeDef.mesh ] ++; + + // Nothing in the mesh definition indicates whether it is + // a SkinnedMesh or Mesh. Use the node's mesh reference + // to mark SkinnedMesh if node has skin. + if ( nodeDef.skin !== undefined ) { + + meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; + + } + + } + + } + + this.json.meshReferences = meshReferences; + this.json.meshUses = meshUses; + + }; + + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + GLTFParser.prototype.getDependency = function ( type, index ) { + + var cacheKey = type + ':' + index; + var dependency = this.cache.get( cacheKey ); + + if ( ! dependency ) { + + switch ( type ) { + + case 'scene': + dependency = this.loadScene( index ); + break; + + case 'node': + dependency = this.loadNode( index ); + break; + + case 'mesh': + dependency = this.loadMesh( index ); + break; + + case 'accessor': + dependency = this.loadAccessor( index ); + break; + + case 'bufferView': + dependency = this.loadBufferView( index ); + break; + + case 'buffer': + dependency = this.loadBuffer( index ); + break; + + case 'material': + dependency = this.loadMaterial( index ); + break; + + case 'texture': + dependency = this.loadTexture( index ); + break; + + case 'skin': + dependency = this.loadSkin( index ); + break; + + case 'animation': + dependency = this.loadAnimation( index ); + break; + + case 'camera': + dependency = this.loadCamera( index ); + break; + + case 'light': + dependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index ); + break + + default: + throw new Error( 'Unknown type: ' + type ); + + } + + this.cache.add( cacheKey, dependency ); + + } + + return dependency; + + }; + + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + GLTFParser.prototype.getDependencies = function ( type ) { + + var dependencies = this.cache.get( type ); + + if ( ! dependencies ) { + + var parser = this; + var defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; + + dependencies = Promise.all( defs.map( function ( def, index ) { + + return parser.getDependency( type, index ); + + } ) ); + + this.cache.add( type, dependencies ); + + } + + return dependencies; + + }; + + /** + * Requests all multiple dependencies of the specified types asynchronously, with caching. + * @param {Array} types + * @return {Promise>>} + */ + GLTFParser.prototype.getMultiDependencies = function ( types ) { + + var results = {}; + var pending = []; + + for ( var i = 0, il = types.length; i < il; i ++ ) { + + var type = types[ i ]; + var value = this.getDependencies( type ); + + // TODO: Error-prone use of a callback inside a loop. + value = value.then( function ( key, value ) { + + results[ key ] = value; + + }.bind( this, type + ( type === 'mesh' ? 'es' : 's' ) ) ); + + pending.push( value ); + + } + + return Promise.all( pending ).then( function () { + + return results; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBuffer = function ( bufferIndex ) { + + var bufferDef = this.json.buffers[ bufferIndex ]; + var loader = this.fileLoader; + + if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { + + throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); + + } + + // If present, GLB container is required to be the first buffer. + if ( bufferDef.uri === undefined && bufferIndex === 0 ) { + + return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); + + } + + var options = this.options; + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { + + reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) { + + var bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; + + return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { + + var byteLength = bufferViewDef.byteLength || 0; + var byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAccessor = function ( accessorIndex ) { + + var parser = this; + var json = this.json; + + var accessorDef = this.json.accessors[ accessorIndex ]; + + if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { + + // Ignore empty accessors, which may be used to declare runtime + // information about attributes coming from another source (e.g. Draco + // compression extension). + return Promise.resolve( null ); + + } + + var pendingBufferViews = []; + + if ( accessorDef.bufferView !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); + + } else { + + pendingBufferViews.push( null ); + + } + + if ( accessorDef.sparse !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); + + } + + return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { + + var bufferView = bufferViews[ 0 ]; + + var itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + var TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + var elementBytes = TypedArray.BYTES_PER_ELEMENT; + var itemBytes = elementBytes * itemSize; + var byteOffset = accessorDef.byteOffset || 0; + var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; + var normalized = accessorDef.normalized === true; + var array, bufferAttribute; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( byteStride && byteStride !== itemBytes ) { + + var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType; + var ib = parser.cache.get( ibCacheKey ); + + if ( ! ib ) { + + // Use the full buffer if it's interleaved. + array = new TypedArray( bufferView ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes ); + + parser.cache.add( ibCacheKey, ib ); + + } + + bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized ); + + } else { + + if ( bufferView === null ) { + + array = new TypedArray( accessorDef.count * itemSize ); + + } else { + + array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); + + } + + bufferAttribute = new THREE.BufferAttribute( array, itemSize, normalized ); + + } + + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors + if ( accessorDef.sparse !== undefined ) { + + var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + var TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; + + var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + + var sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); + var sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); + + if ( bufferView !== null ) { + + // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. + bufferAttribute.setArray( bufferAttribute.array.slice() ); + + } + + for ( var i = 0, il = sparseIndices.length; i < il; i ++ ) { + + var index = sparseIndices[ i ]; + + bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); + if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); + if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); + if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); + if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); + + } + + } + + return bufferAttribute; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + GLTFParser.prototype.loadTexture = function ( textureIndex ) { + + var parser = this; + var json = this.json; + var options = this.options; + var textureLoader = this.textureLoader; + + var URL = window.URL || window.webkitURL; + + var textureDef = json.textures[ textureIndex ]; + + var textureExtensions = textureDef.extensions || {}; + + var source; + + if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) { + + source = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ]; + + } else { + + source = json.images[ textureDef.source ]; + + } + + var sourceURI = source.uri; + var isObjectURL = false; + + if ( source.bufferView !== undefined ) { + + // Load binary image data from bufferView, if provided. + + sourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) { + + isObjectURL = true; + var blob = new Blob( [ bufferView ], { type: source.mimeType } ); + sourceURI = URL.createObjectURL( blob ); + return sourceURI; + + } ); + + } + + return Promise.resolve( sourceURI ).then( function ( sourceURI ) { + + // Load Texture resource. + + var loader = THREE.Loader.Handlers.get( sourceURI ); + + if ( ! loader ) { + + loader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] + ? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader + : textureLoader; + + } + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject ); + + } ); + + } ).then( function ( texture ) { + + // Clean up resources and configure Texture. + + if ( isObjectURL === true ) { + + URL.revokeObjectURL( sourceURI ); + + } + + texture.flipY = false; + + if ( textureDef.name !== undefined ) texture.name = textureDef.name; + + // Ignore unknown mime types, like DDS files. + if ( source.mimeType in MIME_TYPE_FORMATS ) { + + texture.format = MIME_TYPE_FORMATS[ source.mimeType ]; + + } + + var samplers = json.samplers || {}; + var sampler = samplers[ textureDef.sampler ] || {}; + + texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; + texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; + + return texture; + + } ); + + }; + + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + GLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) { + + var parser = this; + + return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { + + if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { + + var transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; + + if ( transform ) { + + texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); + + } + + } + + materialParams[ mapName ] = texture; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMaterial = function ( materialIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + var materialDef = json.materials[ materialIndex ]; + + var materialType; + var materialParams = {}; + var materialExtensions = materialDef.extensions || {}; + + var pending = []; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) { + + var sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ]; + materialType = sgExtension.getMaterialType( materialDef ); + pending.push( sgExtension.extendParams( materialParams, materialDef, parser ) ); + + } else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { + + var kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; + materialType = kmuExtension.getMaterialType( materialDef ); + pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); + + } else { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + materialType = THREE.MeshStandardMaterial; + + var metallicRoughness = materialDef.pbrMetallicRoughness || {}; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); + pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); + + } + + } + + if ( materialDef.doubleSided === true ) { + + materialParams.side = THREE.DoubleSide; + + } + + var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode === ALPHA_MODES.BLEND ) { + + materialParams.transparent = true; + + } else { + + materialParams.transparent = false; + + if ( alphaMode === ALPHA_MODES.MASK ) { + + materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; + + } + + } + + if ( materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); + + materialParams.normalScale = new THREE.Vector2( 1, 1 ); + + if ( materialDef.normalTexture.scale !== undefined ) { + + materialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale ); + + } + + } + + if ( materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); + + if ( materialDef.occlusionTexture.strength !== undefined ) { + + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + + } + + } + + if ( materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + materialParams.emissive = new THREE.Color().fromArray( materialDef.emissiveFactor ); + + } + + if ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) ); + + } + + return Promise.all( pending ).then( function () { + + var material; + + if ( materialType === THREE.ShaderMaterial ) { + + material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams ); + + } else { + + material = new materialType( materialParams ); + + } + + if ( materialDef.name !== undefined ) material.name = materialDef.name; + + // Normal map textures use OpenGL conventions: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture + if ( material.normalScale ) { + + material.normalScale.y = - material.normalScale.y; + + } + + // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding. + if ( material.map ) material.map.encoding = THREE.sRGBEncoding; + if ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding; + if ( material.specularMap ) material.specularMap.encoding = THREE.sRGBEncoding; + + assignExtrasToUserData( material, materialDef ); + + if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); + + return material; + + } ); + + }; + + /** + * @param {THREE.BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + * @return {Promise} + */ + function addPrimitiveAttributes( geometry, primitiveDef, parser ) { + + var attributes = primitiveDef.attributes; + + var pending = []; + + function assignAttributeAccessor( accessorIndex, attributeName ) { + + return parser.getDependency( 'accessor', accessorIndex ) + .then( function ( accessor ) { + + geometry.addAttribute( attributeName, accessor ); + + } ); + + } + + for ( var gltfAttributeName in attributes ) { + + var threeAttributeName = ATTRIBUTES[ gltfAttributeName ]; + + if ( ! threeAttributeName ) continue; + + // Skip attributes already provided by e.g. Draco extension. + if ( threeAttributeName in geometry.attributes ) continue; + + pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); + + } + + if ( primitiveDef.indices !== undefined && ! geometry.index ) { + + var accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { + + geometry.setIndex( accessor ); + + } ); + + pending.push( accessor ); + + } + + assignExtrasToUserData( geometry, primitiveDef ); + + return Promise.all( pending ).then( function () { + + return primitiveDef.targets !== undefined + ? addMorphTargets( geometry, primitiveDef.targets, parser ) + : geometry; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * If we can build a single BufferGeometry with .groups from multiple primitives, returns one BufferGeometry. + * Otherwise, returns BufferGeometries without .groups as many as primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + GLTFParser.prototype.loadGeometries = function ( primitives ) { + + var parser = this; + var extensions = this.extensions; + var cache = this.primitiveCache; + + var isMultiPass = isMultiPassGeometry( primitives ); + var originalPrimitives; + + if ( isMultiPass ) { + + originalPrimitives = primitives; // save original primitives and use later + + // We build a single BufferGeometry with .groups from multiple primitives + // because all primitives share the same attributes/morph/mode and have indices. + + primitives = [ primitives[ 0 ] ]; + + // Sets .groups and combined indices to a geometry later in this method. + + } + + function createDracoPrimitive( primitive ) { + + return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] + .decodePrimitive( primitive, parser ) + .then( function ( geometry ) { + + return addPrimitiveAttributes( geometry, primitive, parser ); + + } ); + + } + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var primitive = primitives[ i ]; + + // See if we've already created this geometry + var cached = getCachedGeometry( cache, primitive ); + + if ( cached ) { + + // Use the cached geometry if it exists + pending.push( cached ); + + } else { + + var geometryPromise; + + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { + + // Use DRACO geometry if available + geometryPromise = createDracoPrimitive( primitive ); + + } else { + + // Otherwise create a new geometry + geometryPromise = addPrimitiveAttributes( new THREE.BufferGeometry(), primitive, parser ); + + } + + // Cache this geometry + cache.push( { primitive: primitive, promise: geometryPromise } ); + + pending.push( geometryPromise ); + + } + + } + + return Promise.all( pending ).then( function ( geometries ) { + + if ( isMultiPass ) { + + var baseGeometry = geometries[ 0 ]; + + // See if we've already created this combined geometry + var cache = parser.multiPassGeometryCache; + var cached = getCachedMultiPassGeometry( cache, baseGeometry, originalPrimitives ); + + if ( cached !== null ) return [ cached.geometry ]; + + // Cloning geometry because of index override. + // Attributes can be reused so cloning by myself here. + var geometry = new THREE.BufferGeometry(); + + geometry.name = baseGeometry.name; + geometry.userData = baseGeometry.userData; + + for ( var key in baseGeometry.attributes ) geometry.addAttribute( key, baseGeometry.attributes[ key ] ); + for ( var key in baseGeometry.morphAttributes ) geometry.morphAttributes[ key ] = baseGeometry.morphAttributes[ key ]; + + var pendingIndices = []; + + for ( var i = 0, il = originalPrimitives.length; i < il; i ++ ) { + + pendingIndices.push( parser.getDependency( 'accessor', originalPrimitives[ i ].indices ) ); + + } + + return Promise.all( pendingIndices ).then( function ( accessors ) { + + var indices = []; + var offset = 0; + + for ( var i = 0, il = originalPrimitives.length; i < il; i ++ ) { + + var accessor = accessors[ i ]; + + for ( var j = 0, jl = accessor.count; j < jl; j ++ ) indices.push( accessor.array[ j ] ); + + geometry.addGroup( offset, accessor.count, i ); + + offset += accessor.count; + + } + + geometry.setIndex( indices ); + + cache.push( { geometry: geometry, baseGeometry: baseGeometry, primitives: originalPrimitives } ); + + return [ geometry ]; + + } ); + + } else if ( geometries.length > 1 && THREE.BufferGeometryUtils !== undefined ) { + + // Tries to merge geometries with BufferGeometryUtils if possible + + for ( var i = 1, il = primitives.length; i < il; i ++ ) { + + // can't merge if draw mode is different + if ( primitives[ 0 ].mode !== primitives[ i ].mode ) return geometries; + + } + + // See if we've already created this combined geometry + var cache = parser.multiplePrimitivesCache; + var cached = getCachedCombinedGeometry( cache, geometries ); + + if ( cached ) { + + if ( cached.geometry !== null ) return [ cached.geometry ]; + + } else { + + var geometry = THREE.BufferGeometryUtils.mergeBufferGeometries( geometries, true ); + + cache.push( { geometry: geometry, baseGeometries: geometries } ); + + if ( geometry !== null ) return [ geometry ]; + + } + + } + + return geometries; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMesh = function ( meshIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + + var meshDef = json.meshes[ meshIndex ]; + var primitives = meshDef.primitives; + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var material = primitives[ i ].material === undefined + ? createDefaultMaterial() + : this.getDependency( 'material', primitives[ i ].material ); + + pending.push( material ); + + } + + return Promise.all( pending ).then( function ( originalMaterials ) { + + return parser.loadGeometries( primitives ).then( function ( geometries ) { + + var isMultiMaterial = geometries.length === 1 && geometries[ 0 ].groups.length > 0; + + var meshes = []; + + for ( var i = 0, il = geometries.length; i < il; i ++ ) { + + var geometry = geometries[ i ]; + var primitive = primitives[ i ]; + + // 1. create Mesh + + var mesh; + + var material = isMultiMaterial ? originalMaterials : originalMaterials[ i ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || + primitive.mode === undefined ) { + + // .isSkinnedMesh isn't in glTF spec. See .markDefs() + mesh = meshDef.isSkinnedMesh === true + ? new THREE.SkinnedMesh( geometry, material ) + : new THREE.Mesh( geometry, material ); + + if ( mesh.isSkinnedMesh === true ) mesh.normalizeSkinWeights(); // #15319 + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { + + mesh.drawMode = THREE.TriangleStripDrawMode; + + } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { + + mesh.drawMode = THREE.TriangleFanDrawMode; + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + mesh = new THREE.LineSegments( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { + + mesh = new THREE.Line( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { + + mesh = new THREE.LineLoop( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { + + mesh = new THREE.Points( geometry, material ); + + } else { + + throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); + + } + + if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { + + updateMorphTargets( mesh, meshDef ); + + } + + mesh.name = meshDef.name || ( 'mesh_' + meshIndex ); + + if ( geometries.length > 1 ) mesh.name += '_' + i; + + assignExtrasToUserData( mesh, meshDef ); + + meshes.push( mesh ); + + // 2. update Material depending on Mesh and BufferGeometry + + var materials = isMultiMaterial ? mesh.material : [ mesh.material ]; + + var useVertexColors = geometry.attributes.color !== undefined; + var useFlatShading = geometry.attributes.normal === undefined; + var useSkinning = mesh.isSkinnedMesh === true; + var useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0; + var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined; + + for ( var j = 0, jl = materials.length; j < jl; j ++ ) { + + var material = materials[ j ]; + + if ( mesh.isPoints ) { + + var cacheKey = 'PointsMaterial:' + material.uuid; + + var pointsMaterial = parser.cache.get( cacheKey ); + + if ( ! pointsMaterial ) { + + pointsMaterial = new THREE.PointsMaterial(); + THREE.Material.prototype.copy.call( pointsMaterial, material ); + pointsMaterial.color.copy( material.color ); + pointsMaterial.map = material.map; + pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet + + parser.cache.add( cacheKey, pointsMaterial ); + + } + + material = pointsMaterial; + + } else if ( mesh.isLine ) { + + var cacheKey = 'LineBasicMaterial:' + material.uuid; + + var lineMaterial = parser.cache.get( cacheKey ); + + if ( ! lineMaterial ) { + + lineMaterial = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call( lineMaterial, material ); + lineMaterial.color.copy( material.color ); + lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet + + parser.cache.add( cacheKey, lineMaterial ); + + } + + material = lineMaterial; + + } + + // Clone the material if it will be modified + if ( useVertexColors || useFlatShading || useSkinning || useMorphTargets ) { + + var cacheKey = 'ClonedMaterial:' + material.uuid + ':'; + + if ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:'; + if ( useSkinning ) cacheKey += 'skinning:'; + if ( useVertexColors ) cacheKey += 'vertex-colors:'; + if ( useFlatShading ) cacheKey += 'flat-shading:'; + if ( useMorphTargets ) cacheKey += 'morph-targets:'; + if ( useMorphNormals ) cacheKey += 'morph-normals:'; + + var cachedMaterial = parser.cache.get( cacheKey ); + + if ( ! cachedMaterial ) { + + cachedMaterial = material.isGLTFSpecularGlossinessMaterial + ? extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].cloneMaterial( material ) + : material.clone(); + + if ( useSkinning ) cachedMaterial.skinning = true; + if ( useVertexColors ) cachedMaterial.vertexColors = THREE.VertexColors; + if ( useFlatShading ) cachedMaterial.flatShading = true; + if ( useMorphTargets ) cachedMaterial.morphTargets = true; + if ( useMorphNormals ) cachedMaterial.morphNormals = true; + + parser.cache.add( cacheKey, cachedMaterial ); + + } + + material = cachedMaterial; + + } + + materials[ j ] = material; + + // workarounds for mesh and geometry + + if ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) { + + console.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' ); + geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) ); + + } + + if ( material.isGLTFSpecularGlossinessMaterial ) { + + // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update + mesh.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms; + + } + + } + + mesh.material = isMultiMaterial ? materials : materials[ 0 ]; + + } + + if ( meshes.length === 1 ) { + + return meshes[ 0 ]; + + } + + var group = new THREE.Group(); + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + group.add( meshes[ i ] ); + + } + + return group; + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + GLTFParser.prototype.loadCamera = function ( cameraIndex ) { + + var camera; + var cameraDef = this.json.cameras[ cameraIndex ]; + var params = cameraDef[ cameraDef.type ]; + + if ( ! params ) { + + console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); + return; + + } + + if ( cameraDef.type === 'perspective' ) { + + camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); + + } else if ( cameraDef.type === 'orthographic' ) { + + camera = new THREE.OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar ); + + } + + if ( cameraDef.name !== undefined ) camera.name = cameraDef.name; + + assignExtrasToUserData( camera, cameraDef ); + + return Promise.resolve( camera ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + GLTFParser.prototype.loadSkin = function ( skinIndex ) { + + var skinDef = this.json.skins[ skinIndex ]; + + var skinEntry = { joints: skinDef.joints }; + + if ( skinDef.inverseBindMatrices === undefined ) { + + return Promise.resolve( skinEntry ); + + } + + return this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) { + + skinEntry.inverseBindMatrices = accessor; + + return skinEntry; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAnimation = function ( animationIndex ) { + + var json = this.json; + + var animationDef = json.animations[ animationIndex ]; + + var pendingNodes = []; + var pendingInputAccessors = []; + var pendingOutputAccessors = []; + var pendingSamplers = []; + var pendingTargets = []; + + for ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) { + + var channel = animationDef.channels[ i ]; + var sampler = animationDef.samplers[ channel.sampler ]; + var target = channel.target; + var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated. + var input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; + var output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; + + pendingNodes.push( this.getDependency( 'node', name ) ); + pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); + pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); + pendingSamplers.push( sampler ); + pendingTargets.push( target ); + + } + + return Promise.all( [ + + Promise.all( pendingNodes ), + Promise.all( pendingInputAccessors ), + Promise.all( pendingOutputAccessors ), + Promise.all( pendingSamplers ), + Promise.all( pendingTargets ) + + ] ).then( function ( dependencies ) { + + var nodes = dependencies[ 0 ]; + var inputAccessors = dependencies[ 1 ]; + var outputAccessors = dependencies[ 2 ]; + var samplers = dependencies[ 3 ]; + var targets = dependencies[ 4 ]; + + var tracks = []; + + for ( var i = 0, il = nodes.length; i < il; i ++ ) { + + var node = nodes[ i ]; + var inputAccessor = inputAccessors[ i ]; + var outputAccessor = outputAccessors[ i ]; + var sampler = samplers[ i ]; + var target = targets[ i ]; + + if ( node === undefined ) continue; + + node.updateMatrix(); + node.matrixAutoUpdate = true; + + var TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = THREE.NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = THREE.QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + default: + + TypedKeyframeTrack = THREE.VectorKeyframeTrack; + break; + + } + + var targetName = node.name ? node.name : node.uuid; + + var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; + + var targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + // node can be THREE.Group here but + // PATH_PROPERTIES.weights(morphTargetInfluences) should be + // the property of a mesh object under group. + + node.traverse( function ( object ) { + + if ( object.isMesh === true && object.morphTargetInfluences ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + // KeyframeTrack.optimize() will modify given 'times' and 'values' + // buffers before creating a truncated copy to keep. Because buffers may + // be reused by other tracks, make copies here. + for ( var j = 0, jl = targetNames.length; j < jl; j ++ ) { + + var track = new TypedKeyframeTrack( + targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], + THREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ), + THREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ), + interpolation + ); + + // Here is the trick to enable custom interpolation. + // Overrides .createInterpolant in a factory method which creates custom interpolation. + if ( sampler.interpolation === 'CUBICSPLINE' ) { + + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { + + // A CUBICSPLINE keyframe in glTF has three output values for each input value, + // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() + // must be divided by three to get the interpolant's sampleSize argument. + + return new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result ); + + }; + + // Workaround, provide an alternate way to know if the interpolant type is cubis spline to track. + // track.getInterpolation() doesn't return valid value for custom interpolant. + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + + } + + tracks.push( track ); + + } + + } + + var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex; + + return new THREE.AnimationClip( name, undefined, tracks ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + GLTFParser.prototype.loadNode = function ( nodeIndex ) { + + var json = this.json; + var extensions = this.extensions; + var parser = this; + + var meshReferences = json.meshReferences; + var meshUses = json.meshUses; + + var nodeDef = json.nodes[ nodeIndex ]; + + return ( function() { + + // .isBone isn't in glTF spec. See .markDefs + if ( nodeDef.isBone === true ) { + + return Promise.resolve( new THREE.Bone() ); + + } else if ( nodeDef.mesh !== undefined ) { + + return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { + + var node; + + if ( meshReferences[ nodeDef.mesh ] > 1 ) { + + var instanceNum = meshUses[ nodeDef.mesh ] ++; + + node = mesh.clone(); + node.name += '_instance_' + instanceNum; + + // onBeforeRender copy for Specular-Glossiness + node.onBeforeRender = mesh.onBeforeRender; + + for ( var i = 0, il = node.children.length; i < il; i ++ ) { + + node.children[ i ].name += '_instance_' + instanceNum; + node.children[ i ].onBeforeRender = mesh.children[ i ].onBeforeRender; + + } + + } else { + + node = mesh; + + } + + // if weights are provided on the node, override weights on the mesh. + if ( nodeDef.weights !== undefined ) { + + node.traverse( function ( o ) { + + if ( ! o.isMesh ) return; + + for ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) { + + o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; + + } + + } ); + + } + + return node; + + } ); + + } else if ( nodeDef.camera !== undefined ) { + + return parser.getDependency( 'camera', nodeDef.camera ); + + } else if ( nodeDef.extensions + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) { + + return parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ); + + } else { + + return Promise.resolve( new THREE.Object3D() ); + + } + + }() ).then( function ( node ) { + + if ( nodeDef.name !== undefined ) { + + node.name = THREE.PropertyBinding.sanitizeNodeName( nodeDef.name ); + + } + + assignExtrasToUserData( node, nodeDef ); + + if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); + + if ( nodeDef.matrix !== undefined ) { + + var matrix = new THREE.Matrix4(); + matrix.fromArray( nodeDef.matrix ); + node.applyMatrix( matrix ); + + } else { + + if ( nodeDef.translation !== undefined ) { + + node.position.fromArray( nodeDef.translation ); + + } + + if ( nodeDef.rotation !== undefined ) { + + node.quaternion.fromArray( nodeDef.rotation ); + + } + + if ( nodeDef.scale !== undefined ) { + + node.scale.fromArray( nodeDef.scale ); + + } + + } + + return node; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + GLTFParser.prototype.loadScene = function () { + + // scene node hierachy builder + + function buildNodeHierachy( nodeId, parentObject, json, parser ) { + + var nodeDef = json.nodes[ nodeId ]; + + return parser.getDependency( 'node', nodeId ).then( function ( node ) { + + if ( nodeDef.skin === undefined ) return node; + + // build skeleton here as well + + var skinEntry; + + return parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) { + + skinEntry = skin; + + var pendingJoints = []; + + for ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) { + + pendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) ); + + } + + return Promise.all( pendingJoints ); + + } ).then( function ( jointNodes ) { + + var meshes = node.isGroup === true ? node.children : [ node ]; + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + var mesh = meshes[ i ]; + + var bones = []; + var boneInverses = []; + + for ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) { + + var jointNode = jointNodes[ j ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + var mat = new THREE.Matrix4(); + + if ( skinEntry.inverseBindMatrices !== undefined ) { + + mat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 ); + + } + + boneInverses.push( mat ); + + } else { + + console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinEntry.joints[ j ] ); + + } + + } + + mesh.bind( new THREE.Skeleton( bones, boneInverses ), mesh.matrixWorld ); + + }; + + return node; + + } ); + + } ).then( function ( node ) { + + // build node hierachy + + parentObject.add( node ); + + var pending = []; + + if ( nodeDef.children ) { + + var children = nodeDef.children; + + for ( var i = 0, il = children.length; i < il; i ++ ) { + + var child = children[ i ]; + pending.push( buildNodeHierachy( child, node, json, parser ) ); + + } + + } + + return Promise.all( pending ); + + } ); + + } + + return function loadScene( sceneIndex ) { + + var json = this.json; + var extensions = this.extensions; + var sceneDef = this.json.scenes[ sceneIndex ]; + var parser = this; + + var scene = new THREE.Scene(); + if ( sceneDef.name !== undefined ) scene.name = sceneDef.name; + + assignExtrasToUserData( scene, sceneDef ); + + if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); + + var nodeIds = sceneDef.nodes || []; + + var pending = []; + + for ( var i = 0, il = nodeIds.length; i < il; i ++ ) { + + pending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) ); + + } + + return Promise.all( pending ).then( function () { + + return scene; + + } ); + + }; + + }(); + + return GLTFLoader; + +} )(); diff --git a/demo/handpose/vendor/handpose.js b/demo/handpose/vendor/handpose.js new file mode 100644 index 0000000..b68c30f --- /dev/null +++ b/demo/handpose/vendor/handpose.js @@ -0,0 +1,778 @@ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tensorflow/tfjs-converter'), require('@tensorflow/tfjs-core')) : + typeof define === 'function' && define.amd ? define(['exports', '@tensorflow/tfjs-converter', '@tensorflow/tfjs-core'], factory) : + (global = global || self, factory(global.handpose = {}, global.tf, global.tf)); +}(this, (function (exports, tfconv, tf) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function getBoxSize(box) { + return [ + Math.abs(box.endPoint[0] - box.startPoint[0]), + Math.abs(box.endPoint[1] - box.startPoint[1]) + ]; + } + function getBoxCenter(box) { + return [ + box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2, + box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2 + ]; + } + function cutBoxFromImageAndResize(box, image, cropSize) { + var h = image.shape[1]; + var w = image.shape[2]; + var boxes = [[ + box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h, + box.endPoint[0] / w + ]]; + return tf.image.cropAndResize(image, boxes, [0], cropSize); + } + function scaleBoxCoordinates(box, factor) { + var startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]]; + var endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]]; + var palmLandmarks = box.palmLandmarks.map(function (coord) { + var scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]]; + return scaledCoord; + }); + return { startPoint: startPoint, endPoint: endPoint, palmLandmarks: palmLandmarks }; + } + function enlargeBox(box, factor) { + if (factor === void 0) { factor = 1.5; } + var center = getBoxCenter(box); + var size = getBoxSize(box); + var newHalfSize = [factor * size[0] / 2, factor * size[1] / 2]; + var startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]]; + var endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]]; + return { startPoint: startPoint, endPoint: endPoint, palmLandmarks: box.palmLandmarks }; + } + function squarifyBox(box) { + var centers = getBoxCenter(box); + var size = getBoxSize(box); + var maxEdge = Math.max.apply(Math, size); + var halfSize = maxEdge / 2; + var startPoint = [centers[0] - halfSize, centers[1] - halfSize]; + var endPoint = [centers[0] + halfSize, centers[1] + halfSize]; + return { startPoint: startPoint, endPoint: endPoint, palmLandmarks: box.palmLandmarks }; + } + function shiftBox(box, shiftFactor) { + var boxSize = [ + box.endPoint[0] - box.startPoint[0], box.endPoint[1] - box.startPoint[1] + ]; + var shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]]; + var startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]]; + var endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]]; + return { startPoint: startPoint, endPoint: endPoint, palmLandmarks: box.palmLandmarks }; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var HandDetector = /** @class */ (function () { + function HandDetector(model, width, height, anchors, iouThreshold, scoreThreshold) { + this.model = model; + this.width = width; + this.height = height; + this.iouThreshold = iouThreshold; + this.scoreThreshold = scoreThreshold; + this.anchors = anchors.map(function (anchor) { return [anchor.x_center, anchor.y_center]; }); + this.anchorsTensor = tf.tensor2d(this.anchors); + this.inputSizeTensor = tf.tensor1d([width, height]); + this.doubleInputSizeTensor = tf.tensor1d([width * 2, height * 2]); + } + HandDetector.prototype.normalizeBoxes = function (boxes) { + var _this = this; + return tf.tidy(function () { + var boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]); + var boxSizes = tf.slice(boxes, [0, 2], [-1, 2]); + var boxCenterPoints = tf.add(tf.div(boxOffsets, _this.inputSizeTensor), _this.anchorsTensor); + var halfBoxSizes = tf.div(boxSizes, _this.doubleInputSizeTensor); + var startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), _this.inputSizeTensor); + var endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), _this.inputSizeTensor); + return tf.concat2d([startPoints, endPoints], 1); + }); + }; + HandDetector.prototype.normalizeLandmarks = function (rawPalmLandmarks, index) { + var _this = this; + return tf.tidy(function () { + var landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), _this.inputSizeTensor), _this.anchors[index]); + return tf.mul(landmarks, _this.inputSizeTensor); + }); + }; + HandDetector.prototype.getBoundingBoxes = function (input) { + return __awaiter(this, void 0, void 0, function () { + var normalizedInput, batchedPrediction, savedWebglPackDepthwiseConvFlag, prediction, scores, rawBoxes, boxes, savedConsoleWarnFn, boxesWithHandsTensor, boxesWithHands, toDispose, boxIndex, matchingBox, rawPalmLandmarks, palmLandmarks; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + normalizedInput = tf.tidy(function () { return tf.mul(tf.sub(input, 0.5), 2); }); + if (tf.getBackend() === 'webgl') { + savedWebglPackDepthwiseConvFlag = tf.env().get('WEBGL_PACK_DEPTHWISECONV'); + tf.env().set('WEBGL_PACK_DEPTHWISECONV', true); + // The model returns a tensor with the following shape: + // [1 (batch), 2944 (anchor points), 19 (data for each anchor)] + batchedPrediction = this.model.predict(normalizedInput); + tf.env().set('WEBGL_PACK_DEPTHWISECONV', savedWebglPackDepthwiseConvFlag); + } + else { + batchedPrediction = this.model.predict(normalizedInput); + } + prediction = batchedPrediction.squeeze(); + scores = tf.tidy(function () { return tf.sigmoid(tf.slice(prediction, [0, 0], [-1, 1])).squeeze(); }); + rawBoxes = tf.slice(prediction, [0, 1], [-1, 4]); + boxes = this.normalizeBoxes(rawBoxes); + savedConsoleWarnFn = console.warn; + console.warn = function () { }; + boxesWithHandsTensor = tf.image.nonMaxSuppression(boxes, scores, 1, this.iouThreshold, this.scoreThreshold); + console.warn = savedConsoleWarnFn; + return [4 /*yield*/, boxesWithHandsTensor.array()]; + case 1: + boxesWithHands = _a.sent(); + toDispose = [ + normalizedInput, batchedPrediction, boxesWithHandsTensor, prediction, + boxes, rawBoxes, scores + ]; + if (boxesWithHands.length === 0) { + toDispose.forEach(function (tensor) { return tensor.dispose(); }); + return [2 /*return*/, null]; + } + boxIndex = boxesWithHands[0]; + matchingBox = tf.slice(boxes, [boxIndex, 0], [1, -1]); + rawPalmLandmarks = tf.slice(prediction, [boxIndex, 5], [1, 14]); + palmLandmarks = tf.tidy(function () { return _this.normalizeLandmarks(rawPalmLandmarks, boxIndex).reshape([ + -1, 2 + ]); }); + toDispose.push(rawPalmLandmarks); + toDispose.forEach(function (tensor) { return tensor.dispose(); }); + return [2 /*return*/, { boxes: matchingBox, palmLandmarks: palmLandmarks }]; + } + }); + }); + }; + /** + * Returns a Box identifying the bounding box of a hand within the image. + * Returns null if there is no hand in the image. + * + * @param input The image to classify. + */ + HandDetector.prototype.estimateHandBounds = function (input) { + return __awaiter(this, void 0, void 0, function () { + var inputHeight, inputWidth, image, prediction, boundingBoxes, startPoint, endPoint, palmLandmarks; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + inputHeight = input.shape[1]; + inputWidth = input.shape[2]; + image = tf.tidy(function () { return input.resizeBilinear([_this.width, _this.height]).div(255); }); + return [4 /*yield*/, this.getBoundingBoxes(image)]; + case 1: + prediction = _a.sent(); + if (prediction === null) { + image.dispose(); + return [2 /*return*/, null]; + } + boundingBoxes = prediction.boxes.arraySync(); + startPoint = boundingBoxes[0].slice(0, 2); + endPoint = boundingBoxes[0].slice(2, 4); + palmLandmarks = prediction.palmLandmarks.arraySync(); + image.dispose(); + prediction.boxes.dispose(); + prediction.palmLandmarks.dispose(); + return [2 /*return*/, scaleBoxCoordinates({ startPoint: startPoint, endPoint: endPoint, palmLandmarks: palmLandmarks }, [inputWidth / this.width, inputHeight / this.height])]; + } + }); + }); + }; + return HandDetector; + }()); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var MESH_ANNOTATIONS = { + thumb: [1, 2, 3, 4], + indexFinger: [5, 6, 7, 8], + middleFinger: [9, 10, 11, 12], + ringFinger: [13, 14, 15, 16], + pinky: [17, 18, 19, 20], + palmBase: [0] + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function normalizeRadians(angle) { + return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI)); + } + function computeRotation(point1, point2) { + var radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]); + return normalizeRadians(radians); + } + var buildTranslationMatrix = function (x, y) { + return ([[1, 0, x], [0, 1, y], [0, 0, 1]]); + }; + function dot(v1, v2) { + var product = 0; + for (var i = 0; i < v1.length; i++) { + product += v1[i] * v2[i]; + } + return product; + } + function getColumnFrom2DArr(arr, columnIndex) { + var column = []; + for (var i = 0; i < arr.length; i++) { + column.push(arr[i][columnIndex]); + } + return column; + } + function multiplyTransformMatrices(mat1, mat2) { + var product = []; + var size = mat1.length; + for (var row = 0; row < size; row++) { + product.push([]); + for (var col = 0; col < size; col++) { + product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col))); + } + } + return product; + } + function buildRotationMatrix(rotation, center) { + var cosA = Math.cos(rotation); + var sinA = Math.sin(rotation); + var rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]]; + var translationMatrix = buildTranslationMatrix(center[0], center[1]); + var translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix); + var negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]); + return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix); + } + function invertTransformMatrix(matrix) { + var rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]]; + var translationComponent = [matrix[0][2], matrix[1][2]]; + var invertedTranslation = [ + -dot(rotationComponent[0], translationComponent), + -dot(rotationComponent[1], translationComponent) + ]; + return [ + rotationComponent[0].concat(invertedTranslation[0]), + rotationComponent[1].concat(invertedTranslation[1]), + [0, 0, 1] + ]; + } + function rotatePoint(homogeneousCoordinate, rotationMatrix) { + return [ + dot(homogeneousCoordinate, rotationMatrix[0]), + dot(homogeneousCoordinate, rotationMatrix[1]) + ]; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD = 0.8; + var PALM_BOX_SHIFT_VECTOR = [0, -0.4]; + var PALM_BOX_ENLARGE_FACTOR = 3; + var HAND_BOX_SHIFT_VECTOR = [0, -0.1]; + var HAND_BOX_ENLARGE_FACTOR = 1.65; + var PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2]; + var PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0; + var PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2; + // The Pipeline coordinates between the bounding box and skeleton models. + var HandPipeline = /** @class */ (function () { + function HandPipeline(boundingBoxDetector, meshDetector, meshWidth, meshHeight, maxContinuousChecks, detectionConfidence) { + // An array of hand bounding boxes. + this.regionsOfInterest = []; + this.runsWithoutHandDetector = 0; + this.boundingBoxDetector = boundingBoxDetector; + this.meshDetector = meshDetector; + this.maxContinuousChecks = maxContinuousChecks; + this.detectionConfidence = detectionConfidence; + this.meshWidth = meshWidth; + this.meshHeight = meshHeight; + this.maxHandsNumber = 1; // TODO(annxingyuan): Add multi-hand support. + } + // Get the bounding box surrounding the hand, given palm landmarks. + HandPipeline.prototype.getBoxForPalmLandmarks = function (palmLandmarks, rotationMatrix) { + var rotatedPalmLandmarks = palmLandmarks.map(function (coord) { + var homogeneousCoordinate = coord.concat([1]); + return rotatePoint(homogeneousCoordinate, rotationMatrix); + }); + var boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks); + // boxAroundPalm only surrounds the palm - therefore we shift it + // upwards so it will capture fingers once enlarged + squarified. + return enlargeBox(squarifyBox(shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR); + }; + // Get the bounding box surrounding the hand, given all hand landmarks. + HandPipeline.prototype.getBoxForHandLandmarks = function (landmarks) { + // The MediaPipe hand mesh model is trained on hands with empty space + // around them, so we still need to shift / enlarge boxAroundHand even + // though it surrounds the entire hand. + var boundingBox = this.calculateLandmarksBoundingBox(landmarks); + var boxAroundHand = enlargeBox(squarifyBox(shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR); + var palmLandmarks = []; + for (var i = 0; i < PALM_LANDMARK_IDS.length; i++) { + palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2)); + } + boxAroundHand.palmLandmarks = palmLandmarks; + return boxAroundHand; + }; + // Scale, rotate, and translate raw keypoints from the model so they map to + // the input coordinates. + HandPipeline.prototype.transformRawCoords = function (rawCoords, box, angle, rotationMatrix) { + var _this = this; + var boxSize = getBoxSize(box); + var scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight]; + var coordsScaled = rawCoords.map(function (coord) { + return [ + scaleFactor[0] * (coord[0] - _this.meshWidth / 2), + scaleFactor[1] * (coord[1] - _this.meshHeight / 2), coord[2] + ]; + }); + var coordsRotationMatrix = buildRotationMatrix(angle, [0, 0]); + var coordsRotated = coordsScaled.map(function (coord) { + var rotated = rotatePoint(coord, coordsRotationMatrix); + return rotated.concat([coord[2]]); + }); + var inverseRotationMatrix = invertTransformMatrix(rotationMatrix); + var boxCenter = getBoxCenter(box).concat([1]); + var originalBoxCenter = [ + dot(boxCenter, inverseRotationMatrix[0]), + dot(boxCenter, inverseRotationMatrix[1]) + ]; + return coordsRotated.map(function (coord) { + return [ + coord[0] + originalBoxCenter[0], coord[1] + originalBoxCenter[1], + coord[2] + ]; + }); + }; + HandPipeline.prototype.estimateHand = function (image) { + return __awaiter(this, void 0, void 0, function () { + var useFreshBox, boundingBoxPrediction, currentBox, angle, palmCenter, palmCenterNormalized, rotatedImage, rotationMatrix, box, croppedInput, handImage, prediction, savedWebglPackDepthwiseConvFlag, flag, keypoints, flagValue, keypointsReshaped, rawCoords, coords, nextBoundingBox, result; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + useFreshBox = this.shouldUpdateRegionsOfInterest(); + if (!(useFreshBox === true)) return [3 /*break*/, 2]; + return [4 /*yield*/, this.boundingBoxDetector.estimateHandBounds(image)]; + case 1: + boundingBoxPrediction = _a.sent(); + if (boundingBoxPrediction === null) { + image.dispose(); + this.regionsOfInterest = []; + return [2 /*return*/, null]; + } + this.updateRegionsOfInterest(boundingBoxPrediction, true /*force update*/); + this.runsWithoutHandDetector = 0; + return [3 /*break*/, 3]; + case 2: + this.runsWithoutHandDetector++; + _a.label = 3; + case 3: + currentBox = this.regionsOfInterest[0]; + angle = computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]); + palmCenter = getBoxCenter(currentBox); + palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]]; + rotatedImage = tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized); + rotationMatrix = buildRotationMatrix(-angle, palmCenter); + // The bounding box detector only detects palms, so if we're using a fresh + // bounding box prediction, we have to construct the hand bounding box from + // the palm keypoints. + if (useFreshBox === true) { + box = + this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix); + } + else { + box = currentBox; + } + croppedInput = cutBoxFromImageAndResize(box, rotatedImage, [this.meshWidth, this.meshHeight]); + handImage = croppedInput.div(255); + croppedInput.dispose(); + rotatedImage.dispose(); + if (tf.getBackend() === 'webgl') { + savedWebglPackDepthwiseConvFlag = tf.env().get('WEBGL_PACK_DEPTHWISECONV'); + tf.env().set('WEBGL_PACK_DEPTHWISECONV', true); + prediction = + this.meshDetector.predict(handImage); + tf.env().set('WEBGL_PACK_DEPTHWISECONV', savedWebglPackDepthwiseConvFlag); + } + else { + prediction = + this.meshDetector.predict(handImage); + } + flag = prediction[0], keypoints = prediction[1]; + handImage.dispose(); + flagValue = flag.dataSync()[0]; + flag.dispose(); + if (flagValue < this.detectionConfidence) { + keypoints.dispose(); + this.regionsOfInterest = []; + return [2 /*return*/, null]; + } + keypointsReshaped = tf.reshape(keypoints, [-1, 3]); + rawCoords = keypointsReshaped.arraySync(); + keypoints.dispose(); + keypointsReshaped.dispose(); + coords = this.transformRawCoords(rawCoords, box, angle, rotationMatrix); + nextBoundingBox = this.getBoxForHandLandmarks(coords); + this.updateRegionsOfInterest(nextBoundingBox, false /* force replace */); + result = { + landmarks: coords, + handInViewConfidence: flagValue, + boundingBox: { + topLeft: nextBoundingBox.startPoint, + bottomRight: nextBoundingBox.endPoint + } + }; + return [2 /*return*/, result]; + } + }); + }); + }; + HandPipeline.prototype.calculateLandmarksBoundingBox = function (landmarks) { + var xs = landmarks.map(function (d) { return d[0]; }); + var ys = landmarks.map(function (d) { return d[1]; }); + var startPoint = [Math.min.apply(Math, xs), Math.min.apply(Math, ys)]; + var endPoint = [Math.max.apply(Math, xs), Math.max.apply(Math, ys)]; + return { startPoint: startPoint, endPoint: endPoint }; + }; + // Updates regions of interest if the intersection over union between + // the incoming and previous regions falls below a threshold. + HandPipeline.prototype.updateRegionsOfInterest = function (box, forceUpdate) { + if (forceUpdate) { + this.regionsOfInterest = [box]; + } + else { + var previousBox = this.regionsOfInterest[0]; + var iou = 0; + if (previousBox != null && previousBox.startPoint != null) { + var _a = box.startPoint, boxStartX = _a[0], boxStartY = _a[1]; + var _b = box.endPoint, boxEndX = _b[0], boxEndY = _b[1]; + var _c = previousBox.startPoint, previousBoxStartX = _c[0], previousBoxStartY = _c[1]; + var _d = previousBox.endPoint, previousBoxEndX = _d[0], previousBoxEndY = _d[1]; + var xStartMax = Math.max(boxStartX, previousBoxStartX); + var yStartMax = Math.max(boxStartY, previousBoxStartY); + var xEndMin = Math.min(boxEndX, previousBoxEndX); + var yEndMin = Math.min(boxEndY, previousBoxEndY); + var intersection = (xEndMin - xStartMax) * (yEndMin - yStartMax); + var boxArea = (boxEndX - boxStartX) * (boxEndY - boxStartY); + var previousBoxArea = (previousBoxEndX - previousBoxStartX) * + (previousBoxEndY - boxStartY); + iou = intersection / (boxArea + previousBoxArea - intersection); + } + this.regionsOfInterest[0] = + iou > UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD ? previousBox : box; + } + }; + HandPipeline.prototype.shouldUpdateRegionsOfInterest = function () { + var roisCount = this.regionsOfInterest.length; + return roisCount !== this.maxHandsNumber || + this.runsWithoutHandDetector >= this.maxContinuousChecks; + }; + return HandPipeline; + }()); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // Load the bounding box detector model. + function loadHandDetectorModel() { + return __awaiter(this, void 0, void 0, function () { + var HANDDETECT_MODEL_PATH; + return __generator(this, function (_a) { + HANDDETECT_MODEL_PATH = './model/handdetector'; + // HANDDETECT_MODEL_PATH = 'https://tfhub.dev/mediapipe/tfjs-model/handdetector/1/default/1'; + return [2 /*return*/, tfconv.loadGraphModel(HANDDETECT_MODEL_PATH, { fromTFHub: true })]; + }); + }); + } + var MESH_MODEL_INPUT_WIDTH = 256; + var MESH_MODEL_INPUT_HEIGHT = 256; + // Load the mesh detector model. + function loadHandPoseModel() { + return __awaiter(this, void 0, void 0, function () { + var HANDPOSE_MODEL_PATH; + return __generator(this, function (_a) { + HANDPOSE_MODEL_PATH = './model/handskeleton'; + // HANDPOSE_MODEL_PATH = 'https://tfhub.dev/mediapipe/tfjs-model/handskeleton/1/default/1'; + return [2 /*return*/, tfconv.loadGraphModel(HANDPOSE_MODEL_PATH, { fromTFHub: true })]; + }); + }); + } + // In single shot detector pipelines, the output space is discretized into a set + // of bounding boxes, each of which is assigned a score during prediction. The + // anchors define the coordinates of these boxes. + function loadAnchors() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, tf.util + .fetch('./model/anchors.json?tfjs-format=file') + // .fetch('https://tfhub.dev/mediapipe/tfjs-model/handskeleton/1/default/1/anchors.json?tfjs-format=file') + .then(function (d) { return d.json(); })]; + }); + }); + } + /** + * Load handpose. + * + * @param config A configuration object with the following properties: + * - `maxContinuousChecks` How many frames to go without running the bounding + * box detector. Defaults to infinity. Set to a lower value if you want a safety + * net in case the mesh detector produces consistently flawed predictions. + * - `detectionConfidence` Threshold for discarding a prediction. Defaults to + * 0.8. + * - `iouThreshold` A float representing the threshold for deciding whether + * boxes overlap too much in non-maximum suppression. Must be between [0, 1]. + * Defaults to 0.3. + * - `scoreThreshold` A threshold for deciding when to remove boxes based + * on score in non-maximum suppression. Defaults to 0.75. + */ + function load(_a) { + var _b = _a === void 0 ? {} : _a, _c = _b.maxContinuousChecks, maxContinuousChecks = _c === void 0 ? Infinity : _c, _d = _b.detectionConfidence, detectionConfidence = _d === void 0 ? 0.8 : _d, _e = _b.iouThreshold, iouThreshold = _e === void 0 ? 0.3 : _e, _f = _b.scoreThreshold, scoreThreshold = _f === void 0 ? 0.5 : _f; + return __awaiter(this, void 0, void 0, function () { + var _g, ANCHORS, handDetectorModel, handPoseModel, detector, pipeline, handpose; + return __generator(this, function (_h) { + switch (_h.label) { + case 0: return [4 /*yield*/, Promise.all([loadAnchors(), loadHandDetectorModel(), loadHandPoseModel()])]; + case 1: + _g = _h.sent(), ANCHORS = _g[0], handDetectorModel = _g[1], handPoseModel = _g[2]; + detector = new HandDetector(handDetectorModel, MESH_MODEL_INPUT_WIDTH, MESH_MODEL_INPUT_HEIGHT, ANCHORS, iouThreshold, scoreThreshold); + pipeline = new HandPipeline(detector, handPoseModel, MESH_MODEL_INPUT_WIDTH, MESH_MODEL_INPUT_HEIGHT, maxContinuousChecks, detectionConfidence); + handpose = new HandPose(pipeline); + return [2 /*return*/, handpose]; + } + }); + }); + } + function getInputTensorDimensions(input) { + return input instanceof tf.Tensor ? [input.shape[0], input.shape[1]] : + [input.height, input.width]; + } + function flipHandHorizontal(prediction, width) { + var handInViewConfidence = prediction.handInViewConfidence, landmarks = prediction.landmarks, boundingBox = prediction.boundingBox; + return { + handInViewConfidence: handInViewConfidence, + landmarks: landmarks.map(function (coord) { + return [width - 1 - coord[0], coord[1], coord[2]]; + }), + boundingBox: { + topLeft: [width - 1 - boundingBox.topLeft[0], boundingBox.topLeft[1]], + bottomRight: [ + width - 1 - boundingBox.bottomRight[0], boundingBox.bottomRight[1] + ] + } + }; + } + var HandPose = /** @class */ (function () { + function HandPose(pipeline) { + this.pipeline = pipeline; + } + HandPose.getAnnotations = function () { + return MESH_ANNOTATIONS; + }; + /** + * Finds hands in the input image. + * + * @param input The image to classify. Can be a tensor, DOM element image, + * video, or canvas. + * @param flipHorizontal Whether to flip the hand keypoints horizontally. + * Should be true for videos that are flipped by default (e.g. webcams). + */ + HandPose.prototype.estimateHands = function (input, flipHorizontal) { + if (flipHorizontal === void 0) { flipHorizontal = false; } + return __awaiter(this, void 0, void 0, function () { + var _a, width, image, result, prediction, annotations, _i, _b, key; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _a = getInputTensorDimensions(input), width = _a[1]; + image = tf.tidy(function () { + if (!(input instanceof tf.Tensor)) { + input = tf.browser.fromPixels(input); + } + return input.toFloat().expandDims(0); + }); + return [4 /*yield*/, this.pipeline.estimateHand(image)]; + case 1: + result = _c.sent(); + image.dispose(); + if (result === null) { + return [2 /*return*/, []]; + } + prediction = result; + if (flipHorizontal === true) { + prediction = flipHandHorizontal(result, width); + } + annotations = {}; + for (_i = 0, _b = Object.keys(MESH_ANNOTATIONS); _i < _b.length; _i++) { + key = _b[_i]; + annotations[key] = + MESH_ANNOTATIONS[key].map(function (index) { return prediction.landmarks[index]; }); + } + return [2 /*return*/, [{ + handInViewConfidence: prediction.handInViewConfidence, + boundingBox: prediction.boundingBox, + landmarks: prediction.landmarks, + annotations: annotations + }]]; + } + }); + }); + }; + return HandPose; + }()); + + exports.HandPose = HandPose; + exports.load = load; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/demo/handpose/vendor/tf-backend-webgl.js b/demo/handpose/vendor/tf-backend-webgl.js new file mode 100644 index 0000000..ad6fff5 --- /dev/null +++ b/demo/handpose/vendor/tf-backend-webgl.js @@ -0,0 +1,9261 @@ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tensorflow/tfjs-core'), require('seedrandom')) : + typeof define === 'function' && define.amd ? define(['exports', '@tensorflow/tfjs-core', 'seedrandom'], factory) : + (global = global || self, factory(global.tf = global.tf || {}, global.tf, global.seedrandom)); +}(this, (function (exports, tf, seedrandom) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var contexts = {}; + var WEBGL_ATTRIBUTES = { + alpha: false, + antialias: false, + premultipliedAlpha: false, + preserveDrawingBuffer: false, + depth: false, + stencil: false, + failIfMajorPerformanceCaveat: true + }; + function setWebGLContext(webGLVersion, gl) { + contexts[webGLVersion] = gl; + } + function getWebGLContext(webGLVersion) { + if (!(webGLVersion in contexts)) { + contexts[webGLVersion] = getWebGLRenderingContext(webGLVersion); + } + var gl = contexts[webGLVersion]; + if (gl.isContextLost()) { + delete contexts[webGLVersion]; + return getWebGLContext(webGLVersion); + } + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.BLEND); + gl.disable(gl.DITHER); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.disable(gl.SAMPLE_COVERAGE); + gl.enable(gl.SCISSOR_TEST); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + return contexts[webGLVersion]; + } + function createCanvas(webGLVersion) { + if (typeof OffscreenCanvas !== 'undefined' && webGLVersion === 2) { + return new OffscreenCanvas(300, 150); + } + else if (typeof document !== 'undefined') { + return document.createElement('canvas'); + } + else { + throw new Error('Cannot create a canvas in this context'); + } + } + function getWebGLRenderingContext(webGLVersion) { + if (webGLVersion !== 1 && webGLVersion !== 2) { + throw new Error('Cannot get WebGL rendering context, WebGL is disabled.'); + } + var canvas = createCanvas(webGLVersion); + canvas.addEventListener('webglcontextlost', function (ev) { + ev.preventDefault(); + delete contexts[webGLVersion]; + }, false); + if (webGLVersion === 1) { + return (canvas.getContext('webgl', WEBGL_ATTRIBUTES) || + canvas.getContext('experimental-webgl', WEBGL_ATTRIBUTES)); + } + return canvas.getContext('webgl2', WEBGL_ATTRIBUTES); + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PackingScheme; + (function (PackingScheme) { + /** + * All values in a single texel are densely packed without any constraints. + * + * This is how the shader encodes a tensor with shape = [2, 3, 4] + * (indices are [batch, row, col]). + * + * 000|001 010|011 020|021 + * ------- ------- ------- + * 002|003 012|013 022|023 + * + * 100|101 110|111 120|121 + * ------- ------- ------- + * 102|103 112|113 122|123 + * + */ + PackingScheme[PackingScheme["DENSE"] = 0] = "DENSE"; + /** + * Single texels contain only values from the same batch, and from adjacent + * rows and columns. + * + * This is how the shader encodes a tensor with shape = [2, 3, 5] + * (indices are [batch, row, col]). + * + * 000|001 002|003 004|xxx 020|021 022|023 024|xxx + * ------- ------- ------- ------- ------- ------- + * 010|011 012|013 014|xxx xxx|xxx xxx|xxx xxx|xxx + * + * 100|101 102|103 104|xxx 120|121 122|123 124|xxx + * ------- ------- ------- ------- ------- ------- + * 110|111 112|113 114|xxx xxx|xxx xxx|xxx xxx|xxx + * + */ + PackingScheme[PackingScheme["SHARED_BATCH"] = 1] = "SHARED_BATCH"; + })(PackingScheme || (PackingScheme = {})); + var TextureUsage; + (function (TextureUsage) { + TextureUsage[TextureUsage["RENDER"] = 0] = "RENDER"; + TextureUsage[TextureUsage["UPLOAD"] = 1] = "UPLOAD"; + TextureUsage[TextureUsage["PIXELS"] = 2] = "PIXELS"; + TextureUsage[TextureUsage["DOWNLOAD"] = 3] = "DOWNLOAD"; + })(TextureUsage || (TextureUsage = {})); + var PhysicalTextureType; + (function (PhysicalTextureType) { + PhysicalTextureType[PhysicalTextureType["UNPACKED_FLOAT16"] = 0] = "UNPACKED_FLOAT16"; + PhysicalTextureType[PhysicalTextureType["UNPACKED_FLOAT32"] = 1] = "UNPACKED_FLOAT32"; + PhysicalTextureType[PhysicalTextureType["PACKED_4X1_UNSIGNED_BYTE"] = 2] = "PACKED_4X1_UNSIGNED_BYTE"; + PhysicalTextureType[PhysicalTextureType["PACKED_2X2_FLOAT32"] = 3] = "PACKED_2X2_FLOAT32"; + PhysicalTextureType[PhysicalTextureType["PACKED_2X2_FLOAT16"] = 4] = "PACKED_2X2_FLOAT16"; + })(PhysicalTextureType || (PhysicalTextureType = {})); + function getUnpackedMatrixTextureShapeWidthHeight(rows, columns) { + return [columns, rows]; + } + function getUnpackedArraySizeFromMatrixSize(matrixSize, channelsPerTexture) { + return matrixSize * channelsPerTexture; + } + /** + * Get shape for densely packed RGBA texture. + */ + function getDenseTexShape(shape) { + var size = tf.util.sizeFromShape(shape); + var texelsNeeded = Math.ceil(size / 4); + return tf.util.sizeToSquarishShape(texelsNeeded); + } + function getPackedMatrixTextureShapeWidthHeight(rows, columns) { + return [ + Math.max(1, Math.ceil(columns / 2)), Math.max(1, Math.ceil(rows / 2)) + ]; + } + function getPackedRGBAArraySizeFromMatrixShape(rows, columns) { + var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1]; + return w * h * 4; + } + function getTextureConfig( + // tslint:disable-next-line:no-any + gl, textureHalfFloatExtension) { + // tslint:disable-next-line:no-any + var glany = gl; + var internalFormatFloat; + var internalFormatHalfFloat; + var internalFormatPackedHalfFloat; + var internalFormatPackedFloat; + var textureFormatFloat; + var downloadTextureFormat; + var downloadUnpackNumChannels; + var defaultNumChannels; + var textureTypeHalfFloat; + var textureTypeFloat; + if (tf.env().getNumber('WEBGL_VERSION') === 2) { + internalFormatFloat = glany.R32F; + internalFormatHalfFloat = glany.R16F; + internalFormatPackedHalfFloat = glany.RGBA16F; + internalFormatPackedFloat = glany.RGBA32F; + textureFormatFloat = glany.RED; + downloadUnpackNumChannels = 4; + defaultNumChannels = 1; + textureTypeHalfFloat = glany.HALF_FLOAT; + textureTypeFloat = glany.FLOAT; + } + else { + internalFormatFloat = gl.RGBA; + internalFormatHalfFloat = gl.RGBA; + internalFormatPackedHalfFloat = gl.RGBA; + internalFormatPackedFloat = glany.RGBA; + textureFormatFloat = gl.RGBA; + downloadUnpackNumChannels = 4; + defaultNumChannels = 4; + textureTypeHalfFloat = textureHalfFloatExtension != null ? + textureHalfFloatExtension.HALF_FLOAT_OES : + null; + textureTypeFloat = gl.FLOAT; + } + downloadTextureFormat = gl.RGBA; + return { + internalFormatFloat: internalFormatFloat, + internalFormatHalfFloat: internalFormatHalfFloat, + internalFormatPackedHalfFloat: internalFormatPackedHalfFloat, + internalFormatPackedFloat: internalFormatPackedFloat, + textureFormatFloat: textureFormatFloat, + downloadTextureFormat: downloadTextureFormat, + downloadUnpackNumChannels: downloadUnpackNumChannels, + defaultNumChannels: defaultNumChannels, + textureTypeHalfFloat: textureTypeHalfFloat, + textureTypeFloat: textureTypeFloat + }; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function callAndCheck(gl, func) { + var returnValue = func(); + if (tf.env().getBool('DEBUG')) { + checkWebGLError(gl); + } + return returnValue; + } + function checkWebGLError(gl) { + var error = gl.getError(); + if (error !== gl.NO_ERROR) { + throw new Error('WebGL Error: ' + getWebGLErrorMessage(gl, error)); + } + } + // https://en.wikipedia.org/wiki/Half-precision_floating-point_format + var MIN_FLOAT16 = 5.96e-8; + var MAX_FLOAT16 = 65504; + function canBeRepresented(num) { + if (tf.env().getBool('WEBGL_RENDER_FLOAT32_ENABLED') || num === 0 || + (MIN_FLOAT16 < Math.abs(num) && Math.abs(num) < MAX_FLOAT16)) { + return true; + } + return false; + } + function getWebGLErrorMessage(gl, status) { + switch (status) { + case gl.NO_ERROR: + return 'NO_ERROR'; + case gl.INVALID_ENUM: + return 'INVALID_ENUM'; + case gl.INVALID_VALUE: + return 'INVALID_VALUE'; + case gl.INVALID_OPERATION: + return 'INVALID_OPERATION'; + case gl.INVALID_FRAMEBUFFER_OPERATION: + return 'INVALID_FRAMEBUFFER_OPERATION'; + case gl.OUT_OF_MEMORY: + return 'OUT_OF_MEMORY'; + case gl.CONTEXT_LOST_WEBGL: + return 'CONTEXT_LOST_WEBGL'; + default: + return "Unknown error code " + status; + } + } + function getExtensionOrThrow(gl, extensionName) { + return throwIfNull(gl, function () { return gl.getExtension(extensionName); }, 'Extension "' + extensionName + '" not supported on this browser.'); + } + function createVertexShader(gl, vertexShaderSource) { + var vertexShader = throwIfNull(gl, function () { return gl.createShader(gl.VERTEX_SHADER); }, 'Unable to create vertex WebGLShader.'); + callAndCheck(gl, function () { return gl.shaderSource(vertexShader, vertexShaderSource); }); + callAndCheck(gl, function () { return gl.compileShader(vertexShader); }); + if (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) === false) { + console.log(gl.getShaderInfoLog(vertexShader)); + throw new Error('Failed to compile vertex shader.'); + } + return vertexShader; + } + function createFragmentShader(gl, fragmentShaderSource) { + var fragmentShader = throwIfNull(gl, function () { return gl.createShader(gl.FRAGMENT_SHADER); }, 'Unable to create fragment WebGLShader.'); + callAndCheck(gl, function () { return gl.shaderSource(fragmentShader, fragmentShaderSource); }); + callAndCheck(gl, function () { return gl.compileShader(fragmentShader); }); + if (gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) === false) { + logShaderSourceAndInfoLog(fragmentShaderSource, gl.getShaderInfoLog(fragmentShader)); + throw new Error('Failed to compile fragment shader.'); + } + return fragmentShader; + } + var lineNumberRegex = /ERROR: [0-9]+:([0-9]+):/g; + function logShaderSourceAndInfoLog(shaderSource, shaderInfoLog) { + var lineNumberRegexResult = lineNumberRegex.exec(shaderInfoLog); + if (lineNumberRegexResult == null) { + console.log("Couldn't parse line number in error: " + shaderInfoLog); + console.log(shaderSource); + return; + } + var lineNumber = +lineNumberRegexResult[1]; + var shaderLines = shaderSource.split('\n'); + var pad = shaderLines.length.toString().length + 2; + var linesWithLineNumbers = shaderLines.map(function (line, lineNumber) { + return tf.util.rightPad((lineNumber + 1).toString(), pad) + line; + }); + var maxLineLength = 0; + for (var i = 0; i < linesWithLineNumbers.length; i++) { + maxLineLength = Math.max(linesWithLineNumbers[i].length, maxLineLength); + } + var beforeErrorLines = linesWithLineNumbers.slice(0, lineNumber - 1); + var errorLine = linesWithLineNumbers.slice(lineNumber - 1, lineNumber); + var afterErrorLines = linesWithLineNumbers.slice(lineNumber); + console.log(beforeErrorLines.join('\n')); + console.log(shaderInfoLog.split('\n')[0]); + console.log("%c " + tf.util.rightPad(errorLine[0], maxLineLength), 'border:1px solid red; background-color:#e3d2d2; color:#a61717'); + console.log(afterErrorLines.join('\n')); + } + function createProgram(gl) { + return throwIfNull(gl, function () { return gl.createProgram(); }, 'Unable to create WebGLProgram.'); + } + function linkProgram(gl, program) { + callAndCheck(gl, function () { return gl.linkProgram(program); }); + if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) { + console.log(gl.getProgramInfoLog(program)); + throw new Error('Failed to link vertex and fragment shaders.'); + } + } + function validateProgram(gl, program) { + callAndCheck(gl, function () { return gl.validateProgram(program); }); + if (gl.getProgramParameter(program, gl.VALIDATE_STATUS) === false) { + console.log(gl.getProgramInfoLog(program)); + throw new Error('Shader program validation failed.'); + } + } + function createStaticVertexBuffer(gl, data) { + var buffer = throwIfNull(gl, function () { return gl.createBuffer(); }, 'Unable to create WebGLBuffer'); + callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, buffer); }); + callAndCheck(gl, function () { return gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); }); + return buffer; + } + function createStaticIndexBuffer(gl, data) { + var buffer = throwIfNull(gl, function () { return gl.createBuffer(); }, 'Unable to create WebGLBuffer'); + callAndCheck(gl, function () { return gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); }); + callAndCheck(gl, function () { return gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.STATIC_DRAW); }); + return buffer; + } + function getNumChannels() { + if (tf.env().getNumber('WEBGL_VERSION') === 2) { + return 1; + } + return 4; + } + function createTexture(gl) { + return throwIfNull(gl, function () { return gl.createTexture(); }, 'Unable to create WebGLTexture.'); + } + function validateTextureSize(width, height) { + var maxTextureSize = tf.env().getNumber('WEBGL_MAX_TEXTURE_SIZE'); + if ((width <= 0) || (height <= 0)) { + var requested = "[" + width + "x" + height + "]"; + throw new Error('Requested texture size ' + requested + ' is invalid.'); + } + if ((width > maxTextureSize) || (height > maxTextureSize)) { + var requested = "[" + width + "x" + height + "]"; + var max = "[" + maxTextureSize + "x" + maxTextureSize + "]"; + throw new Error('Requested texture size ' + requested + + ' greater than WebGL maximum on this browser / GPU ' + max + '.'); + } + } + function createFramebuffer(gl) { + return throwIfNull(gl, function () { return gl.createFramebuffer(); }, 'Unable to create WebGLFramebuffer.'); + } + function bindVertexBufferToProgramAttribute(gl, program, attribute, buffer, arrayEntriesPerItem, itemStrideInBytes, itemOffsetInBytes) { + var loc = gl.getAttribLocation(program, attribute); + if (loc === -1) { + // The GPU compiler decided to strip out this attribute because it's unused, + // thus no need to bind. + return false; + } + callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, buffer); }); + callAndCheck(gl, function () { return gl.vertexAttribPointer(loc, arrayEntriesPerItem, gl.FLOAT, false, itemStrideInBytes, itemOffsetInBytes); }); + callAndCheck(gl, function () { return gl.enableVertexAttribArray(loc); }); + return true; + } + function bindTextureUnit(gl, texture, textureUnit) { + validateTextureUnit(gl, textureUnit); + callAndCheck(gl, function () { return gl.activeTexture(gl.TEXTURE0 + textureUnit); }); + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); }); + } + function unbindTextureUnit(gl, textureUnit) { + validateTextureUnit(gl, textureUnit); + callAndCheck(gl, function () { return gl.activeTexture(gl.TEXTURE0 + textureUnit); }); + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); }); + } + function getProgramUniformLocationOrThrow(gl, program, uniformName) { + return throwIfNull(gl, function () { return gl.getUniformLocation(program, uniformName); }, 'uniform "' + uniformName + '" not present in program.'); + } + function getProgramUniformLocation(gl, program, uniformName) { + return gl.getUniformLocation(program, uniformName); + } + function bindTextureToProgramUniformSampler(gl, texture, uniformSamplerLocation, textureUnit) { + callAndCheck(gl, function () { return bindTextureUnit(gl, texture, textureUnit); }); + callAndCheck(gl, function () { return gl.uniform1i(uniformSamplerLocation, textureUnit); }); + } + function bindCanvasToFramebuffer(gl) { + callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, null); }); + callAndCheck(gl, function () { return gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); }); + callAndCheck(gl, function () { return gl.scissor(0, 0, gl.canvas.width, gl.canvas.height); }); + } + function bindColorTextureToFramebuffer(gl, texture, framebuffer) { + callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); }); + callAndCheck(gl, function () { return gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); }); + } + function unbindColorTextureFromFramebuffer(gl, framebuffer) { + callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); }); + callAndCheck(gl, function () { return gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0); }); + } + function validateFramebuffer(gl) { + var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); + if (status !== gl.FRAMEBUFFER_COMPLETE) { + throw new Error('Error binding framebuffer: ' + getFramebufferErrorMessage(gl, status)); + } + } + function getFramebufferErrorMessage(gl, status) { + switch (status) { + case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + return 'FRAMEBUFFER_INCOMPLETE_ATTACHMENT'; + case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + return 'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT'; + case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: + return 'FRAMEBUFFER_INCOMPLETE_DIMENSIONS'; + case gl.FRAMEBUFFER_UNSUPPORTED: + return 'FRAMEBUFFER_UNSUPPORTED'; + default: + return "unknown error " + status; + } + } + function throwIfNull(gl, returnTOrNull, failureMessage) { + var tOrNull = callAndCheck(gl, function () { return returnTOrNull(); }); + if (tOrNull == null) { + throw new Error(failureMessage); + } + return tOrNull; + } + function validateTextureUnit(gl, textureUnit) { + var maxTextureUnit = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1; + var glTextureUnit = textureUnit + gl.TEXTURE0; + if (glTextureUnit < gl.TEXTURE0 || glTextureUnit > maxTextureUnit) { + var textureUnitRange = "[gl.TEXTURE0, gl.TEXTURE" + maxTextureUnit + "]"; + throw new Error("textureUnit must be in " + textureUnitRange + "."); + } + } + function getBatchDim(shape, dimsToSkip) { + if (dimsToSkip === void 0) { dimsToSkip = 2; } + return tf.util.sizeFromShape(shape.slice(0, shape.length - dimsToSkip)); + } + function getRowsCols(shape) { + if (shape.length === 0) { + throw Error('Cannot get rows and columns of an empty shape array.'); + } + return [ + shape.length > 1 ? shape[shape.length - 2] : 1, shape[shape.length - 1] + ]; + } + function getShapeAs3D(shape) { + var shapeAs3D = [1, 1, 1]; + var isScalar = shape.length === 0 || (shape.length === 1 && shape[0] === 1); + if (!isScalar) { + shapeAs3D = + [getBatchDim(shape)].concat(getRowsCols(shape)); + } + return shapeAs3D; + } + function getTextureShapeFromLogicalShape(logShape, isPacked) { + var _a; + if (isPacked === void 0) { isPacked = false; } + var maxTexSize = tf.env().getNumber('WEBGL_MAX_TEXTURE_SIZE'); + if (isPacked) { + maxTexSize = maxTexSize * 2; + // This logic ensures we accurately count the number of packed texels needed + // to accommodate the tensor. We can only pack values in the same texel if + // they are from adjacent pairs of rows/cols within the same batch. So if a + // tensor has 3 rows, we pretend it has 4 rows in order to account for the + // fact that the texels containing the third row are half empty. + logShape = logShape.map(function (d, i) { return i >= logShape.length - 2 ? + tf.util.nearestLargerEven(logShape[i]) : + logShape[i]; }); + // Packed texture height is at least 2 (the channel height of a single + // texel). + if (logShape.length === 1) { + logShape = [2, logShape[0]]; + } + } + // If logical shape is 2, we don't squeeze, since we want to match physical. + if (logShape.length !== 2) { + var squeezeResult = tf.util.squeezeShape(logShape); + logShape = squeezeResult.newShape; + } + var size = tf.util.sizeFromShape(logShape); + if (logShape.length <= 1 && size <= maxTexSize) { + return [1, size]; + } + else if (logShape.length === 2 && logShape[0] <= maxTexSize && + logShape[1] <= maxTexSize) { + return logShape; + } + else if (logShape.length === 3 && logShape[0] * logShape[1] <= maxTexSize && + logShape[2] <= maxTexSize) { + return [logShape[0] * logShape[1], logShape[2]]; + } + else if (logShape.length === 3 && logShape[0] <= maxTexSize && + logShape[1] * logShape[2] <= maxTexSize) { + return [logShape[0], logShape[1] * logShape[2]]; + } + else if (logShape.length === 4 && + logShape[0] * logShape[1] * logShape[2] <= maxTexSize && + logShape[3] <= maxTexSize) { + return [logShape[0] * logShape[1] * logShape[2], logShape[3]]; + } + else if (logShape.length === 4 && logShape[0] <= maxTexSize && + logShape[1] * logShape[2] * logShape[3] <= maxTexSize) { + return [logShape[0], logShape[1] * logShape[2] * logShape[3]]; + } + else { + if (isPacked) { + // For packed textures size equals the number of channels required to + // accommodate the texture data. However in order to squarify such that + // inner dimensions stay even, we rewrite size to equal the number of + // texels. Then in the return statement we rehydrate the squarified + // dimensions to channel units. + var batchDim = getBatchDim(logShape); + var rows = 2, cols = 2; + if (logShape.length) { + _a = getRowsCols(logShape), rows = _a[0], cols = _a[1]; + } + size = batchDim * (rows / 2) * (cols / 2); + return tf.util.sizeToSquarishShape(size).map(function (d) { return d * 2; }); + } + return tf.util.sizeToSquarishShape(size); + } + } + function isEven(n) { + return n % 2 === 0; + } + /** + * This determines whether reshaping a packed texture requires rearranging + * the data within the texture, assuming 2x2 packing. + */ + function isReshapeFree(shape1, shape2) { + shape1 = shape1.slice(-2); + shape2 = shape2.slice(-2); + if (tf.util.arraysEqual(shape1, shape2)) { + return true; + } + if (!shape1.length || !shape2.length) { // One of the shapes is a scalar. + return true; + } + if (shape1[0] === 0 || shape1[1] === 0 || shape2[0] === 0 || + shape2[1] === 0) { + return true; + } + if (shape1.length !== shape2.length) { // One of the shapes is a vector. + var shape1Cols = shape1.slice(-1)[0]; + var shape2Cols = shape2.slice(-1)[0]; + if (shape1Cols === shape2Cols) { + return true; + } + if (isEven(shape1Cols) && isEven(shape2Cols) && + (shape1[0] === 1 || shape2[0] === 1)) { + return true; + } + } + return shape1[1] === shape2[1] && isEven(shape1[0]) && isEven(shape2[0]); + } + // We cache webgl params because the environment gets reset between + // unit tests and we don't want to constantly query the WebGLContext for + // MAX_TEXTURE_SIZE. + var MAX_TEXTURE_SIZE; + var MAX_TEXTURES_IN_SHADER; + function getWebGLMaxTextureSize(webGLVersion) { + if (MAX_TEXTURE_SIZE == null) { + var gl = getWebGLContext(webGLVersion); + MAX_TEXTURE_SIZE = gl.getParameter(gl.MAX_TEXTURE_SIZE); + } + return MAX_TEXTURE_SIZE; + } + function resetMaxTextureSize() { + MAX_TEXTURE_SIZE = null; + } + function resetMaxTexturesInShader() { + MAX_TEXTURES_IN_SHADER = null; + } + function getMaxTexturesInShader(webGLVersion) { + if (MAX_TEXTURES_IN_SHADER == null) { + var gl = getWebGLContext(webGLVersion); + MAX_TEXTURES_IN_SHADER = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + } + // We cap at 16 to avoid spurious runtime "memory exhausted" error. + return Math.min(16, MAX_TEXTURES_IN_SHADER); + } + function getWebGLDisjointQueryTimerVersion(webGLVersion) { + if (webGLVersion === 0) { + return 0; + } + var queryTimerVersion; + var gl = getWebGLContext(webGLVersion); + if (hasExtension(gl, 'EXT_disjoint_timer_query_webgl2') && + webGLVersion === 2) { + queryTimerVersion = 2; + } + else if (hasExtension(gl, 'EXT_disjoint_timer_query')) { + queryTimerVersion = 1; + } + else { + queryTimerVersion = 0; + } + return queryTimerVersion; + } + function hasExtension(gl, extensionName) { + var ext = gl.getExtension(extensionName); + return ext != null; + } + function isWebGLVersionEnabled(webGLVersion) { + try { + var gl = getWebGLContext(webGLVersion); + if (gl != null) { + return true; + } + } + catch (e) { + return false; + } + return false; + } + function isCapableOfRenderingToFloatTexture(webGLVersion) { + if (webGLVersion === 0) { + return false; + } + var gl = getWebGLContext(webGLVersion); + if (webGLVersion === 1) { + if (!hasExtension(gl, 'OES_texture_float')) { + return false; + } + } + else { + if (!hasExtension(gl, 'EXT_color_buffer_float')) { + return false; + } + } + var isFrameBufferComplete = createFloatTextureAndBindToFramebuffer(gl); + return isFrameBufferComplete; + } + /** + * Check if we can download values from a float/half-float texture. + * + * Note that for performance reasons we use binding a texture to a framebuffer + * as a proxy for ability to download float values later using readPixels. The + * texture params of this texture will not match those in readPixels exactly + * but if we are unable to bind some kind of float texture to the frameBuffer + * then we definitely will not be able to read float values from it. + */ + function isDownloadFloatTextureEnabled(webGLVersion) { + if (webGLVersion === 0) { + return false; + } + var gl = getWebGLContext(webGLVersion); + if (webGLVersion === 1) { + if (!hasExtension(gl, 'OES_texture_float')) { + return false; + } + if (!hasExtension(gl, 'WEBGL_color_buffer_float')) { + return false; + } + } + else { + if (hasExtension(gl, 'EXT_color_buffer_float')) { + return createFloatTextureAndBindToFramebuffer(gl); + } + var COLOR_BUFFER_HALF_FLOAT = 'EXT_color_buffer_half_float'; + if (hasExtension(gl, COLOR_BUFFER_HALF_FLOAT)) { + var textureHalfFloatExtension = gl.getExtension(COLOR_BUFFER_HALF_FLOAT); + return createHalfFloatTextureAndBindToFramebuffer(gl, textureHalfFloatExtension); + } + return false; + } + var isFrameBufferComplete = createFloatTextureAndBindToFramebuffer(gl); + return isFrameBufferComplete; + } + function createFloatTextureAndBindToFramebuffer(gl) { + var texConfig = getTextureConfig(gl); + var texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + var width = 1; + var height = 1; + gl.texImage2D(gl.TEXTURE_2D, 0, texConfig.internalFormatFloat, width, height, 0, texConfig.textureFormatFloat, texConfig.textureTypeFloat, null); + var frameBuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + var isFrameBufferComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE; + gl.bindTexture(gl.TEXTURE_2D, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteTexture(texture); + gl.deleteFramebuffer(frameBuffer); + return isFrameBufferComplete; + } + function createHalfFloatTextureAndBindToFramebuffer( + // tslint:disable-next-line:no-any + gl, textureHalfFloatExtension) { + var texConfig = getTextureConfig(gl, textureHalfFloatExtension); + var texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + var width = 1; + var height = 1; + gl.texImage2D(gl.TEXTURE_2D, 0, texConfig.internalFormatHalfFloat, width, height, 0, texConfig.textureFormatFloat, texConfig.textureTypeHalfFloat, null); + var frameBuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + var isFrameBufferComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE; + gl.bindTexture(gl.TEXTURE_2D, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteTexture(texture); + gl.deleteFramebuffer(frameBuffer); + return isFrameBufferComplete; + } + function isWebGLFenceEnabled(webGLVersion) { + if (webGLVersion !== 2) { + return false; + } + var gl = getWebGLContext(webGLVersion); + // tslint:disable-next-line:no-any + var isEnabled = gl.fenceSync != null; + return isEnabled; + } + + var webgl_util = { + __proto__: null, + callAndCheck: callAndCheck, + canBeRepresented: canBeRepresented, + getWebGLErrorMessage: getWebGLErrorMessage, + getExtensionOrThrow: getExtensionOrThrow, + createVertexShader: createVertexShader, + createFragmentShader: createFragmentShader, + createProgram: createProgram, + linkProgram: linkProgram, + validateProgram: validateProgram, + createStaticVertexBuffer: createStaticVertexBuffer, + createStaticIndexBuffer: createStaticIndexBuffer, + getNumChannels: getNumChannels, + createTexture: createTexture, + validateTextureSize: validateTextureSize, + createFramebuffer: createFramebuffer, + bindVertexBufferToProgramAttribute: bindVertexBufferToProgramAttribute, + bindTextureUnit: bindTextureUnit, + unbindTextureUnit: unbindTextureUnit, + getProgramUniformLocationOrThrow: getProgramUniformLocationOrThrow, + getProgramUniformLocation: getProgramUniformLocation, + bindTextureToProgramUniformSampler: bindTextureToProgramUniformSampler, + bindCanvasToFramebuffer: bindCanvasToFramebuffer, + bindColorTextureToFramebuffer: bindColorTextureToFramebuffer, + unbindColorTextureFromFramebuffer: unbindColorTextureFromFramebuffer, + validateFramebuffer: validateFramebuffer, + getFramebufferErrorMessage: getFramebufferErrorMessage, + getBatchDim: getBatchDim, + getRowsCols: getRowsCols, + getShapeAs3D: getShapeAs3D, + getTextureShapeFromLogicalShape: getTextureShapeFromLogicalShape, + isReshapeFree: isReshapeFree, + getWebGLMaxTextureSize: getWebGLMaxTextureSize, + resetMaxTextureSize: resetMaxTextureSize, + resetMaxTexturesInShader: resetMaxTexturesInShader, + getMaxTexturesInShader: getMaxTexturesInShader, + getWebGLDisjointQueryTimerVersion: getWebGLDisjointQueryTimerVersion, + hasExtension: hasExtension, + isWebGLVersionEnabled: isWebGLVersionEnabled, + isCapableOfRenderingToFloatTexture: isCapableOfRenderingToFloatTexture, + isDownloadFloatTextureEnabled: isDownloadFloatTextureEnabled, + isWebGLFenceEnabled: isWebGLFenceEnabled + }; + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ENV = tf.env(); + /** + * This file contains WebGL-specific flag registrations. + */ + /** + * True if WebGL is supported. + */ + ENV.registerFlag('HAS_WEBGL', function () { return ENV.getNumber('WEBGL_VERSION') > 0; }); + /** 0: No WebGL, 1: WebGL 1.0, 2: WebGL 2.0. */ + ENV.registerFlag('WEBGL_VERSION', function () { + if (isWebGLVersionEnabled(2)) { + return 2; + } + else if (isWebGLVersionEnabled(1)) { + return 1; + } + return 0; + }); + /** Whether to check for numerical representation problems. */ + ENV.registerFlag('WEBGL_CHECK_NUMERICAL_PROBLEMS', function () { return false; }); + ENV.registerFlag('WEBGL_BUFFER_SUPPORTED', function () { return ENV.get('WEBGL_VERSION') === 2; }); + /** Whether the WebGL backend will sometimes forward ops to the CPU. */ + ENV.registerFlag('WEBGL_CPU_FORWARD', function () { return true; }); + /** Whether the WebGL backend will always use f16 textures for rendering. */ + ENV.registerFlag('WEBGL_FORCE_F16_TEXTURES', function () { return false; }); + /** Whether to turn all packing related flags on. */ + ENV.registerFlag('WEBGL_PACK', function () { return ENV.getBool('HAS_WEBGL'); }); + /** Whether we will pack the batchnormalization op. */ + ENV.registerFlag('WEBGL_PACK_NORMALIZATION', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack the clip op. */ + ENV.registerFlag('WEBGL_PACK_CLIP', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack the depthwise conv op. */ + // TODO: https://github.com/tensorflow/tfjs/issues/1679 + ENV.registerFlag('WEBGL_PACK_DEPTHWISECONV', function () { return false; }); + /** Whether we will pack binary ops. */ + ENV.registerFlag('WEBGL_PACK_BINARY_OPERATIONS', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack unary ops. */ + ENV.registerFlag('WEBGL_PACK_UNARY_OPERATIONS', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack array ops. */ + ENV.registerFlag('WEBGL_PACK_ARRAY_OPERATIONS', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack image ops. */ + ENV.registerFlag('WEBGL_PACK_IMAGE_OPERATIONS', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will pack reduce ops. */ + ENV.registerFlag('WEBGL_PACK_REDUCE', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether packed WebGL kernels lazily unpack their outputs. */ + ENV.registerFlag('WEBGL_LAZILY_UNPACK', function () { return ENV.getBool('WEBGL_PACK'); }); + /** Whether we will use the im2col algorithm to speed up convolutions. */ + ENV.registerFlag('WEBGL_CONV_IM2COL', function () { return ENV.getBool('WEBGL_PACK'); }); + /** The maximum texture dimension. */ + ENV.registerFlag('WEBGL_MAX_TEXTURE_SIZE', function () { return getWebGLMaxTextureSize(ENV.getNumber('WEBGL_VERSION')); }); + /** The maximum texture dimension. */ + ENV.registerFlag('WEBGL_MAX_TEXTURES_IN_SHADER', function () { return getMaxTexturesInShader(ENV.getNumber('WEBGL_VERSION')); }); + /** + * The disjoint_query_timer extension version. + * 0: disabled, 1: EXT_disjoint_timer_query, 2: + * EXT_disjoint_timer_query_webgl2. + * In Firefox with WebGL 2.0, + * EXT_disjoint_timer_query_webgl2 is not available, so we must use the + * WebGL 1.0 extension. + */ + ENV.registerFlag('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION', function () { + var webGLVersion = ENV.getNumber('WEBGL_VERSION'); + if (webGLVersion === 0) { + return 0; + } + return getWebGLDisjointQueryTimerVersion(webGLVersion); + }); + /** + * Whether the timer object from the disjoint_query_timer extension gives + * timing information that is reliable. + */ + ENV.registerFlag('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE', function () { return ENV.getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0 && + !tf.device_util.isMobile(); }); + /** + * Whether the device is physically capable of rendering to float32 textures. + */ + ENV.registerFlag('WEBGL_RENDER_FLOAT32_CAPABLE', function () { return isCapableOfRenderingToFloatTexture(ENV.getNumber('WEBGL_VERSION')); }); + /** + * Whether rendering to float32 textures is enabled. If disabled, renders to + * float16 textures. + */ + ENV.registerFlag('WEBGL_RENDER_FLOAT32_ENABLED', function () { + return ENV.getBool('WEBGL_FORCE_F16_TEXTURES') ? + false : + ENV.getBool('WEBGL_RENDER_FLOAT32_CAPABLE'); + }); + /** + * Whether downloading float textures is enabled (16 or 32 bit). If disabled, + * uses IEEE 754 encoding of the float32 values to 4 uint8 when downloading. + */ + ENV.registerFlag('WEBGL_DOWNLOAD_FLOAT_ENABLED', function () { return isDownloadFloatTextureEnabled(ENV.getNumber('WEBGL_VERSION')); }); + /** Whether the fence API is available. */ + ENV.registerFlag('WEBGL_FENCE_API_ENABLED', function () { return isWebGLFenceEnabled(ENV.getNumber('WEBGL_VERSION')); }); + /** + * Tensors with size <= than this will be uploaded as uniforms, not textures. + */ + ENV.registerFlag('WEBGL_SIZE_UPLOAD_UNIFORM', function () { + // Use uniform uploads only when 32bit floats are supported. In + // 16bit + // environments there are problems with comparing a 16bit texture value + // with a 32bit uniform value. + var useUniforms = ENV.getBool('WEBGL_RENDER_FLOAT32_ENABLED'); + return useUniforms ? 4 : 0; + }); + /** + * If the total number of bytes allocated on the GPU is greater than this + * number, we will aggressively delete textures upon disposal with + * gl.deleteMatrixTexture, rather than making them available for reuse. + * + * Default value -1 indicates that we will never aggressively delete textures. + */ + ENV.registerFlag('WEBGL_DELETE_TEXTURE_THRESHOLD', function () { + return -1; + }, function (threshold) { + if (threshold < 0 && threshold !== -1) { + throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never " + + ("delete) or at least 0, but got " + threshold + ".")); + } + }); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var AddNProgram = /** @class */ (function () { + function AddNProgram(outputShape, shapes) { + this.outputShape = []; + this.outputShape = outputShape; + this.variableNames = shapes.map(function (_, i) { return "T" + i; }); + var snippets = []; + // Get target elements from every input tensor. + this.variableNames.forEach(function (variable) { + snippets.push("float v" + variable + " = get" + variable + "AtOutCoords();"); + }); + // Calculate the sum of all elements. + var operation = this.variableNames + .map(function (variable) { + return "v" + variable; + }) + .join(' + '); + this.userCode = "\n void main() {\n " + snippets.join('\n ') + "\n\n float result = " + operation + ";\n setOutput(result);\n }\n "; + } + return AddNProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var AddNPackedProgram = /** @class */ (function () { + function AddNPackedProgram(outputShape, shapes) { + this.outputShape = []; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = outputShape; + this.variableNames = shapes.map(function (_, i) { return "T" + i; }); + var snippets = []; + // Get target elements from every input tensor. + this.variableNames.forEach(function (variable) { + snippets.push("vec4 v" + variable + " = get" + variable + "AtOutCoords();"); + }); + // Calculate the sum of all elements. + var operation = this.variableNames + .map(function (variable) { + return "v" + variable; + }) + .join(' + '); + this.userCode = "\n void main() {\n " + snippets.join('\n ') + "\n\n vec4 result = " + operation + ";\n setOutput(result);\n }\n "; + } + return AddNPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ArgMinMaxProgram = /** @class */ (function () { + function ArgMinMaxProgram(reduceInfo, op, firstPass) { + this.variableNames = ['A']; + var windowSize = reduceInfo.windowSize; + var batchSize = reduceInfo.batchSize; + var inSize = reduceInfo.inSize; + var outSize = Math.ceil(inSize / windowSize); + if (!firstPass) { + this.variableNames.push('bestIndicesA'); + } + this.outputShape = [batchSize, outSize]; + var compOp = (op === 'max') ? '>' : '<'; + var indexSnippet = firstPass ? + 'inOffset + i;' : + 'round(getBestIndicesA(batch, inOffset + i));'; + this.userCode = "\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * " + windowSize + ";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < " + windowSize + "; i++) {\n int inIdx = " + indexSnippet + ";\n float candidate = getA(batch, inIdx);\n if (candidate " + compOp + " bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "; + } + return ArgMinMaxProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function getVecChannels(name, rank) { + return ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, rank).map(function (d) { return name + "." + d; }); + } + function getChannels(name, rank) { + if (rank === 1) { + return [name]; + } + return getVecChannels(name, rank); + } + function getSourceCoords(rank, dims) { + if (rank === 1) { + return 'rc'; + } + var coords = ''; + for (var i = 0; i < rank; i++) { + coords += dims[i]; + if (i < rank - 1) { + coords += ','; + } + } + return coords; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function getGlslDifferences() { + var version; + var attribute; + var varyingVs; + var varyingFs; + var texture2D; + var output; + var defineOutput; + var defineSpecialNaN; + var defineSpecialInf; + var defineRound; + if (tf.env().getNumber('WEBGL_VERSION') === 2) { + version = '#version 300 es'; + attribute = 'in'; + varyingVs = 'out'; + varyingFs = 'in'; + texture2D = 'texture'; + output = 'outputColor'; + defineOutput = 'out vec4 outputColor;'; + // Use custom isnan definition to work across differences between + // implementations on various platforms. While this should happen in ANGLE + // we still see differences between android and windows (on chrome) when + // using isnan directly. + defineSpecialNaN = "\n bool isnan_custom(float val) {\n return (val > 0.0 || val < 0.0) ? false : val != 0.0;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n "; + // In webgl 2 we do not need to specify a custom isinf so there is no + // need for a special INFINITY constant. + defineSpecialInf = ""; + defineRound = "\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "; + } + else { + version = ''; + attribute = 'attribute'; + varyingVs = 'varying'; + varyingFs = 'varying'; + texture2D = 'texture2D'; + output = 'gl_FragColor'; + defineOutput = ''; + // WebGL1 has no built in isnan so we define one here. + defineSpecialNaN = "\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n "; + defineSpecialInf = "\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n "; + defineRound = "\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "; + } + return { + version: version, + attribute: attribute, + varyingVs: varyingVs, + varyingFs: varyingFs, + texture2D: texture2D, + output: output, + defineOutput: defineOutput, + defineSpecialNaN: defineSpecialNaN, + defineSpecialInf: defineSpecialInf, + defineRound: defineRound + }; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Produces GLSL code that derives logical coordinates from a flat + * index. The code performs integer division with each stride and decrements + * the index until the index equals the final dimension coordinate. + */ + function getLogicalCoordinatesFromFlatIndex(coords, shape, index) { + if (index === void 0) { index = 'index'; } + var strides = tf.util.computeStrides(shape); + return strides + .map(function (stride, i) { + var line1 = "int " + coords[i] + " = " + index + " / " + stride; + var line2 = i === strides.length - 1 ? + "int " + coords[i + 1] + " = " + index + " - " + coords[i] + " * " + stride : + "index -= " + coords[i] + " * " + stride; + return line1 + "; " + line2 + ";"; + }) + .join(''); + } + /** + * Produces GLSL that computes the flat index from 3D coordinates. + */ + function getFlatIndexFrom3D(shape) { + var strides = tf.util.computeStrides(shape).map(function (d) { return d.toString(); }); + return "\n int getFlatIndex(ivec3 coords) {\n return coords.x * " + strides[0] + " + coords.y * " + strides[1] + " + coords.z;\n }\n"; + } + var ENCODE_FLOAT_SNIPPET = "\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n"; + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var getBroadcastDims = tf.backend_util.getBroadcastDims; + function makeShader(inputsInfo, outputShape, userCode, usesPackedTextures) { + var prefixSnippets = []; + inputsInfo.forEach(function (x) { + var size = tf.util.sizeFromShape(x.shapeInfo.logicalShape); + // Snippet when we decided to upload the values as uniform. + if (x.shapeInfo.isUniform) { + prefixSnippets.push("uniform float " + x.name + (size > 1 ? "[" + size + "]" : '') + ";"); + } + else { + prefixSnippets.push("uniform sampler2D " + x.name + ";"); + prefixSnippets.push("uniform int offset" + x.name + ";"); + } + }); + var inputPrefixSnippet = prefixSnippets.join('\n'); + var inputSamplingSnippet = inputsInfo + .map(function (x) { return getInputSamplingSnippet(x, outputShape, usesPackedTextures); }) + .join('\n'); + var outTexShape = outputShape.texShape; + var glsl = getGlslDifferences(); + var floatTextureSampleSnippet = getFloatTextureSampleSnippet(glsl); + var outputSamplingSnippet; + var floatTextureSetOutputSnippet; + var shaderPrefix = getShaderPrefix(glsl); + if (outputShape.isPacked) { + outputSamplingSnippet = + getPackedOutputSamplingSnippet(outputShape.logicalShape, outTexShape); + floatTextureSetOutputSnippet = getFloatTextureSetRGBASnippet(glsl); + } + else { + outputSamplingSnippet = + getOutputSamplingSnippet(outputShape.logicalShape, outTexShape); + floatTextureSetOutputSnippet = getFloatTextureSetRSnippet(glsl); + } + if (usesPackedTextures) { + shaderPrefix += SHADER_PACKED_PREFIX; + } + var source = [ + shaderPrefix, floatTextureSampleSnippet, floatTextureSetOutputSnippet, + inputPrefixSnippet, outputSamplingSnippet, inputSamplingSnippet, userCode + ].join('\n'); + return source; + } + function getSamplerFromInInfo(inInfo) { + var shape = inInfo.shapeInfo.logicalShape; + switch (shape.length) { + case 0: + return getSamplerScalar(inInfo); + case 1: + return getSampler1D(inInfo); + case 2: + return getSampler2D(inInfo); + case 3: + return getSampler3D(inInfo); + case 4: + return getSampler4D(inInfo); + case 5: + return getSampler5D(inInfo); + case 6: + return getSampler6D(inInfo); + default: + throw new Error(shape.length + "-D input sampling" + + " is not yet supported"); + } + } + function getPackedSamplerFromInInfo(inInfo) { + var shape = inInfo.shapeInfo.logicalShape; + switch (shape.length) { + case 0: + return getPackedSamplerScalar(inInfo); + case 1: + return getPackedSampler1D(inInfo); + case 2: + return getPackedSampler2D(inInfo); + case 3: + return getPackedSampler3D(inInfo); + default: + return getPackedSamplerND(inInfo); + } + } + function getInputSamplingSnippet(inInfo, outShapeInfo, usesPackedTextures) { + if (usesPackedTextures === void 0) { usesPackedTextures = false; } + var res = ''; + if (usesPackedTextures) { + res += getPackedSamplerFromInInfo(inInfo); + } + else { + res += getSamplerFromInInfo(inInfo); + } + var inShape = inInfo.shapeInfo.logicalShape; + var outShape = outShapeInfo.logicalShape; + if (inShape.length <= outShape.length) { + if (usesPackedTextures) { + res += getPackedSamplerAtOutputCoords(inInfo, outShapeInfo); + } + else { + res += getSamplerAtOutputCoords(inInfo, outShapeInfo); + } + } + return res; + } + function getPackedOutputSamplingSnippet(outShape, outTexShape) { + switch (outShape.length) { + case 0: + return getOutputScalarCoords(); + case 1: + return getOutputPacked1DCoords(outShape, outTexShape); + case 2: + return getOutputPacked2DCoords(outShape, outTexShape); + case 3: + return getOutputPacked3DCoords(outShape, outTexShape); + default: + return getOutputPackedNDCoords(outShape, outTexShape); + } + } + function getOutputSamplingSnippet(outShape, outTexShape) { + switch (outShape.length) { + case 0: + return getOutputScalarCoords(); + case 1: + return getOutput1DCoords(outShape, outTexShape); + case 2: + return getOutput2DCoords(outShape, outTexShape); + case 3: + return getOutput3DCoords(outShape, outTexShape); + case 4: + return getOutput4DCoords(outShape, outTexShape); + case 5: + return getOutput5DCoords(outShape, outTexShape); + case 6: + return getOutput6DCoords(outShape, outTexShape); + default: + throw new Error(outShape.length + "-D output sampling is not yet supported"); + } + } + function getFloatTextureSampleSnippet(glsl) { + return "\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return " + glsl.texture2D + "(textureSampler, uv).r;\n }\n "; + } + function getFloatTextureSetRSnippet(glsl) { + return "\n void setOutput(float val) {\n " + glsl.output + " = vec4(val, 0, 0, 0);\n }\n "; + } + function getFloatTextureSetRGBASnippet(glsl) { + return "\n void setOutput(vec4 val) {\n " + glsl.output + " = val;\n }\n "; + } + function getShaderPrefix(glsl) { + var SHADER_PREFIX = glsl.version + "\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n " + glsl.varyingFs + " vec2 resultUV;\n " + glsl.defineOutput + "\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n " + glsl.defineSpecialNaN + "\n " + glsl.defineSpecialInf + "\n " + glsl.defineRound + "\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n " + SAMPLE_1D_SNIPPET + "\n " + SAMPLE_2D_SNIPPET + "\n " + SAMPLE_3D_SNIPPET + "\n "; + return SHADER_PREFIX; + } + var SAMPLE_1D_SNIPPET = "\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n"; + var SAMPLE_2D_SNIPPET = "\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n"; + var SAMPLE_3D_SNIPPET = "\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n"; + var SHADER_PACKED_PREFIX = "\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n"; + function getOutputScalarCoords() { + return "\n int getOutputCoords() {\n return 0;\n }\n "; + } + function getOutputPacked1DCoords(shape, texShape) { + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + if (packedTexShape[0] === 1) { + return "\n int getOutputCoords() {\n return 2 * int(resultUV.x * " + packedTexShape[1] + ".0);\n }\n "; + } + if (packedTexShape[1] === 1) { + return "\n int getOutputCoords() {\n return 2 * int(resultUV.y * " + packedTexShape[0] + ".0);\n }\n "; + } + return "\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + packedTexShape[0] + ", " + packedTexShape[1] + "));\n return 2 * (resTexRC.x * " + packedTexShape[1] + " + resTexRC.y);\n }\n "; + } + function getOutput1DCoords(shape, texShape) { + if (texShape[0] === 1) { + return "\n int getOutputCoords() {\n return int(resultUV.x * " + texShape[1] + ".0);\n }\n "; + } + if (texShape[1] === 1) { + return "\n int getOutputCoords() {\n return int(resultUV.y * " + texShape[0] + ".0);\n }\n "; + } + return "\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n return resTexRC.x * " + texShape[1] + " + resTexRC.y;\n }\n "; + } + function getOutputPacked3DCoords(shape, texShape) { + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + var texelsInLogicalRow = Math.ceil(shape[2] / 2); + var texelsInBatch = texelsInLogicalRow * Math.ceil(shape[1] / 2); + return "\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + packedTexShape[0] + ", " + packedTexShape[1] + "));\n int index = resTexRC.x * " + packedTexShape[1] + " + resTexRC.y;\n\n int b = index / " + texelsInBatch + ";\n index -= b * " + texelsInBatch + ";\n\n int r = 2 * (index / " + texelsInLogicalRow + ");\n int c = imod(index, " + texelsInLogicalRow + ") * 2;\n\n return ivec3(b, r, c);\n }\n "; + } + function getOutput3DCoords(shape, texShape) { + var coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd'], shape); + return "\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n " + coordsFromIndexSnippet + "\n return ivec3(r, c, d);\n }\n "; + } + function getOutputPackedNDCoords(shape, texShape) { + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + var texelsInLogicalRow = Math.ceil(shape[shape.length - 1] / 2); + var texelsInBatch = texelsInLogicalRow * Math.ceil(shape[shape.length - 2] / 2); + var texelsInBatchN = texelsInBatch; + var batches = ""; + var coords = 'b, r, c'; + for (var b = 2; b < shape.length - 1; b++) { + texelsInBatchN *= shape[shape.length - b - 1]; + batches = "\n int b" + b + " = index / " + texelsInBatchN + ";\n index -= b" + b + " * " + texelsInBatchN + ";\n " + batches; + coords = "b" + b + ", " + coords; + } + return "\n ivec" + shape.length + " getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + packedTexShape[0] + ", " + packedTexShape[1] + "));\n int index = resTexRC.x * " + packedTexShape[1] + " + resTexRC.y;\n\n " + batches + "\n\n int b = index / " + texelsInBatch + ";\n index -= b * " + texelsInBatch + ";\n\n int r = 2 * (index / " + texelsInLogicalRow + ");\n int c = imod(index, " + texelsInLogicalRow + ") * 2;\n\n return ivec" + shape.length + "(" + coords + ");\n }\n "; + } + function getOutput4DCoords(shape, texShape) { + var coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2'], shape); + return "\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n " + coordsFromIndexSnippet + "\n return ivec4(r, c, d, d2);\n }\n "; + } + function getOutput5DCoords(shape, texShape) { + var coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2', 'd3'], shape); + return "\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(" + texShape[0] + ",\n " + texShape[1] + "));\n\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n\n " + coordsFromIndexSnippet + "\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "; + } + function getOutput6DCoords(shape, texShape) { + var coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2', 'd3', 'd4'], shape); + return "\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n\n " + coordsFromIndexSnippet + "\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "; + } + function getOutputPacked2DCoords(shape, texShape) { + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + if (tf.util.arraysEqual(shape, texShape)) { + return "\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(" + packedTexShape[0] + ", " + packedTexShape[1] + "));\n }\n "; + } + // texels needed to accommodate a logical row + var texelsInLogicalRow = Math.ceil(shape[1] / 2); + /** + * getOutputCoords + * + * resTexRC: The rows and columns of the texels. If you move over one + * texel to the right in the packed texture, you are moving over one column + * (not two). + * + * index: The texel index + */ + return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + packedTexShape[0] + ", " + packedTexShape[1] + "));\n\n int index = resTexRC.x * " + packedTexShape[1] + " + resTexRC.y;\n int r = 2 * (index / " + texelsInLogicalRow + ");\n int c = imod(index, " + texelsInLogicalRow + ") * 2;\n\n return ivec2(r, c);\n }\n "; + } + function getOutput2DCoords(shape, texShape) { + if (tf.util.arraysEqual(shape, texShape)) { + return "\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(" + texShape[0] + ", " + texShape[1] + "));\n }\n "; + } + if (shape[1] === 1) { + return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n return ivec2(index, 0);\n }\n "; + } + if (shape[0] === 1) { + return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n return ivec2(0, index);\n }\n "; + } + return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = resTexRC.x * " + texShape[1] + " + resTexRC.y;\n int r = index / " + shape[1] + ";\n int c = index - r * " + shape[1] + ";\n return ivec2(r, c);\n }\n "; + } + function getFlatOffsetUniformName(texName) { + return "offset" + texName; + } + function getPackedSamplerScalar(inputInfo) { + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var glsl = getGlslDifferences(); + return "\n vec4 " + funcName + "() {\n return " + glsl.texture2D + "(" + texName + ", halfCR);\n }\n "; + } + function getSamplerScalar(inputInfo) { + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + if (inputInfo.shapeInfo.isUniform) { + return "float " + funcName + "() {return " + texName + ";}"; + } + var _a = inputInfo.shapeInfo.texShape, texNumR = _a[0], texNumC = _a[1]; + if (texNumR === 1 && texNumC === 1) { + return "\n float " + funcName + "() {\n return sampleTexture(" + texName + ", halfCR);\n }\n "; + } + var _b = inputInfo.shapeInfo.texShape, tNumR = _b[0], tNumC = _b[1]; + var offset = getFlatOffsetUniformName(texName); + return "\n float " + funcName + "() {\n vec2 uv = uvFromFlat(" + tNumR + ", " + tNumC + ", " + offset + ");\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getPackedSampler1D(inputInfo) { + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var texShape = inputInfo.shapeInfo.texShape; + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + var glsl = getGlslDifferences(); + return "\n vec4 " + funcName + "(int index) {\n vec2 uv = packedUVfrom1D(\n " + packedTexShape[0] + ", " + packedTexShape[1] + ", index);\n return " + glsl.texture2D + "(" + texName + ", uv);\n }\n "; + } + function getSampler1D(inputInfo) { + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int index) {\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var texShape = inputInfo.shapeInfo.texShape; + var tNumR = texShape[0]; + var tNumC = texShape[1]; + if (tNumC === 1 && tNumR === 1) { + return "\n float " + funcName + "(int index) {\n return sampleTexture(" + texName + ", halfCR);\n }\n "; + } + var offset = getFlatOffsetUniformName(texName); + if (tNumC === 1) { + return "\n float " + funcName + "(int index) {\n vec2 uv = vec2(0.5, (float(index + " + offset + ") + 0.5) / " + tNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (tNumR === 1) { + return "\n float " + funcName + "(int index) {\n vec2 uv = vec2((float(index + " + offset + ") + 0.5) / " + tNumC + ".0, 0.5);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + return "\n float " + funcName + "(int index) {\n vec2 uv = uvFromFlat(" + tNumR + ", " + tNumC + ", index + " + offset + ");\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getPackedSampler2D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var texShape = inputInfo.shapeInfo.texShape; + var texNumR = texShape[0]; + var texNumC = texShape[1]; + var glsl = getGlslDifferences(); + if (texShape != null && tf.util.arraysEqual(shape, texShape)) { + return "\n vec4 " + funcName + "(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(" + texNumC + ".0, " + texNumR + ".0);\n\n return " + glsl.texture2D + "(" + texName + ", uv);\n }\n "; + } + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + var valuesPerRow = Math.ceil(shape[1] / 2); + return "\n vec4 " + funcName + "(int row, int col) {\n vec2 uv = packedUVfrom2D(" + valuesPerRow + ", " + packedTexShape[0] + ", " + packedTexShape[1] + ", row, col);\n return " + glsl.texture2D + "(" + texName + ", uv);\n }\n "; + } + function getSampler2D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var texShape = inputInfo.shapeInfo.texShape; + if (texShape != null && tf.util.arraysEqual(shape, texShape)) { + var texNumR_1 = texShape[0]; + var texNumC_1 = texShape[1]; + return "\n float " + funcName + "(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(" + texNumC_1 + ".0, " + texNumR_1 + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + var _a = tf.util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims; + var squeezedShape = newShape; + if (squeezedShape.length < shape.length) { + var newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); + var params = ['row', 'col']; + return "\n " + getSamplerFromInInfo(newInputInfo) + "\n float " + funcName + "(int row, int col) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col) {\n int index = round(dot(vec2(row, col), vec2(" + shape[1] + ", 1)));\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var texNumR = texShape[0]; + var texNumC = texShape[1]; + var offset = getFlatOffsetUniformName(texName); + if (texNumC === 1) { + // index is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col) {\n float index = dot(vec3(row, col, " + offset + "), vec3(" + shape[1] + ", 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (texNumR === 1) { + // index is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col) {\n float index = dot(vec3(row, col, " + offset + "), vec3(" + shape[1] + ", 1, 1));\n vec2 uv = vec2((index + 0.5) / " + texNumC + ".0, 0.5);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + return "\n float " + funcName + "(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * " + shape[1] + " + col + " + offset + ";\n vec2 uv = uvFromFlat(" + texNumR + ", " + texNumC + ", index);\n return sampleTexture(" + texName + ", uv);\n }\n"; + } + function getPackedSampler3D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var texShape = inputInfo.shapeInfo.texShape; + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + if (shape[0] === 1) { + var squeezedShape = shape.slice(1); + var keptDims = [1, 2]; + var newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); + var params = ['b', 'row', 'col']; + return "\n " + getPackedSamplerFromInInfo(newInputInfo) + "\n vec4 " + funcName + "(int b, int row, int col) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + var texNumR = packedTexShape[0]; + var texNumC = packedTexShape[1]; + var valuesPerRow = Math.ceil(shape[2] / 2); + var texelsInBatch = valuesPerRow * Math.ceil(shape[1] / 2); + var glsl = getGlslDifferences(); + return "\n vec4 " + funcName + "(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n " + texNumR + ", " + texNumC + ", " + texelsInBatch + ", " + valuesPerRow + ", b, row, col);\n return " + glsl.texture2D + "(" + texName + ", uv);\n }\n "; + } + function getSampler3D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var stride0 = shape[1] * shape[2]; + var stride1 = shape[2]; + var _a = tf.util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims; + var squeezedShape = newShape; + if (squeezedShape.length < shape.length) { + var newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); + var params = ['row', 'col', 'depth']; + return "\n " + getSamplerFromInInfo(newInputInfo) + "\n float " + funcName + "(int row, int col, int depth) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3(" + stride0 + ", " + stride1 + ", 1)));\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var texShape = inputInfo.shapeInfo.texShape; + var texNumR = texShape[0]; + var texNumC = texShape[1]; + var flatOffset = inputInfo.shapeInfo.flatOffset; + if (texNumC === stride0 && flatOffset == null) { + // texC is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(" + stride1 + ", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (texNumC === stride1 && flatOffset == null) { + // texR is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(" + shape[1] + ", 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + var offset = getFlatOffsetUniformName(texName); + return "\n float " + funcName + "(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * " + stride0 + " + col * " + stride1 + " + depth + " + offset + ";\n vec2 uv = uvFromFlat(" + texNumR + ", " + texNumC + ", index);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getPackedSamplerND(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var rank = shape.length; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var texShape = inputInfo.shapeInfo.texShape; + var packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; + var texNumR = packedTexShape[0]; + var texNumC = packedTexShape[1]; + var valuesPerRow = Math.ceil(shape[rank - 1] / 2); + var texelsInBatch = valuesPerRow * Math.ceil(shape[rank - 2] / 2); + var params = "int b, int row, int col"; + var index = "b * " + texelsInBatch + " + (row / 2) * " + valuesPerRow + " + (col / 2)"; + for (var b = 2; b < rank - 1; b++) { + params = "int b" + b + ", " + params; + texelsInBatch *= shape[rank - b - 1]; + index = "b" + b + " * " + texelsInBatch + " + " + index; + } + var glsl = getGlslDifferences(); + return "\n vec4 " + funcName + "(" + params + ") {\n int index = " + index + ";\n int texR = index / " + texNumC + ";\n int texC = index - texR * " + texNumC + ";\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(" + texNumC + ", " + texNumR + ");\n return " + glsl.texture2D + "(" + texName + ", uv);\n }\n "; + } + function getSampler4D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var stride2 = shape[3]; + var stride1 = shape[2] * stride2; + var stride0 = shape[1] * stride1; + var _a = tf.util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims; + if (newShape.length < shape.length) { + var newInputInfo = squeezeInputInfo(inputInfo, newShape); + var params = ['row', 'col', 'depth', 'depth2']; + return "\n " + getSamplerFromInInfo(newInputInfo) + "\n float " + funcName + "(int row, int col, int depth, int depth2) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4(" + stride0 + ", " + stride1 + ", " + stride2 + ", 1)));\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var flatOffset = inputInfo.shapeInfo.flatOffset; + var texShape = inputInfo.shapeInfo.texShape; + var texNumR = texShape[0]; + var texNumC = texShape[1]; + if (texNumC === stride0 && flatOffset == null) { + // texC is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3(" + stride1 + ", " + stride2 + ", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (texNumC === stride2 && flatOffset == null) { + // texR is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3(" + shape[1] * shape[2] + ", " + shape[2] + ", 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + var offset = getFlatOffsetUniformName(texName); + return "\n float " + funcName + "(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * " + stride0 + " + col * " + stride1 + " +\n depth * " + stride2 + " + depth2;\n vec2 uv = uvFromFlat(" + texNumR + ", " + texNumC + ", index + " + offset + ");\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getSampler5D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var stride3 = shape[4]; + var stride2 = shape[3] * stride3; + var stride1 = shape[2] * stride2; + var stride0 = shape[1] * stride1; + var _a = tf.util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims; + if (newShape.length < shape.length) { + var newInputInfo = squeezeInputInfo(inputInfo, newShape); + var params = ['row', 'col', 'depth', 'depth2', 'depth3']; + return "\n " + getSamplerFromInInfo(newInputInfo) + "\n float " + funcName + "(int row, int col, int depth, int depth2, int depth3) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4(" + stride0 + ", " + stride1 + ", " + stride2 + ", " + stride3 + ")) +\n depth3;\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var flatOffset = inputInfo.shapeInfo.flatOffset; + var texShape = inputInfo.shapeInfo.texShape; + var texNumR = texShape[0]; + var texNumC = texShape[1]; + if (texNumC === stride0 && flatOffset == null) { + // texC is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(" + stride1 + ", " + stride2 + ", " + stride3 + ", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (texNumC === stride3 && flatOffset == null) { + // texR is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4(" + shape[1] * shape[2] * shape[3] + ",\n " + shape[2] * shape[3] + ", " + shape[3] + ", 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + var offset = getFlatOffsetUniformName(texName); + return "\n float " + funcName + "(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * " + stride0 + " + col * " + stride1 + " + depth * " + stride2 + " +\n depth2 * " + stride3 + " + depth3 + " + offset + ";\n vec2 uv = uvFromFlat(" + texNumR + ", " + texNumC + ", index);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getSampler6D(inputInfo) { + var shape = inputInfo.shapeInfo.logicalShape; + var texName = inputInfo.name; + var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1); + var _a = tf.util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims; + if (newShape.length < shape.length) { + var newInputInfo = squeezeInputInfo(inputInfo, newShape); + var params = ['row', 'col', 'depth', 'depth2', 'depth3', 'depth4']; + return "\n " + getSamplerFromInInfo(newInputInfo) + "\n float " + funcName + "(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return " + funcName + "(" + getSqueezedParams(params, keptDims) + ");\n }\n "; + } + var stride4 = shape[5]; + var stride3 = shape[4] * stride4; + var stride2 = shape[3] * stride3; + var stride1 = shape[2] * stride2; + var stride0 = shape[1] * stride1; + if (inputInfo.shapeInfo.isUniform) { + // Uniform arrays will be less than 65505 (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4(" + stride0 + ", " + stride1 + ", " + stride2 + ", " + stride3 + ")) +\n dot(\n vec2(depth3, depth4),\n vec2(" + stride4 + ", 1)));\n " + getUniformSampler(inputInfo) + "\n }\n "; + } + var flatOffset = inputInfo.shapeInfo.flatOffset; + var texShape = inputInfo.shapeInfo.texShape; + var texNumR = texShape[0]; + var texNumC = texShape[1]; + if (texNumC === stride0 && flatOffset == null) { + // texC is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(" + stride1 + ", " + stride2 + ", " + stride3 + ", " + stride4 + ")) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + if (texNumC === stride4 && flatOffset == null) { + // texR is used directly as physical (no risk of float16 overflow). + return "\n float " + funcName + "(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4(" + shape[1] * shape[2] * shape[3] * shape[4] + ",\n " + shape[2] * shape[3] * shape[4] + ",\n " + shape[3] * shape[4] + ",\n " + shape[4] + ")) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + texNumC + ".0, " + texNumR + ".0);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + var offset = getFlatOffsetUniformName(texName); + return "\n float " + funcName + "(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * " + stride0 + " + col * " + stride1 + " + depth * " + stride2 + " +\n depth2 * " + stride3 + " + depth3 * " + stride4 + " + depth4 + " + offset + ";\n vec2 uv = uvFromFlat(" + texNumR + ", " + texNumC + ", index);\n return sampleTexture(" + texName + ", uv);\n }\n "; + } + function getUniformSampler(inputInfo) { + var texName = inputInfo.name; + var inSize = tf.util.sizeFromShape(inputInfo.shapeInfo.logicalShape); + if (inSize < 2) { + return "return " + texName + ";"; + } + return "\n for (int i = 0; i < " + inSize + "; i++) {\n if (i == index) {\n return " + texName + "[i];\n }\n }\n "; + } + function getPackedSamplerAtOutputCoords(inputInfo, outShapeInfo) { + var texName = inputInfo.name; + var texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1); + var funcName = 'get' + texFuncSnippet + 'AtOutCoords'; + var inRank = inputInfo.shapeInfo.logicalShape.length; + var outRank = outShapeInfo.logicalShape.length; + var broadcastDims = getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape); + var type = getCoordsDataType(outRank); + var rankDiff = outRank - inRank; + var coordsSnippet; + var fields = ['x', 'y', 'z', 'w', 'u', 'v']; + if (inRank === 0) { + coordsSnippet = ''; + } + else if (outRank < 2 && broadcastDims.length >= 1) { + coordsSnippet = 'coords = 0;'; + } + else { + coordsSnippet = + broadcastDims.map(function (d) { return "coords." + fields[d + rankDiff] + " = 0;"; }) + .join('\n'); + } + var unpackedCoordsSnippet = ''; + if (outRank < 2 && inRank > 0) { + unpackedCoordsSnippet = 'coords'; + } + else { + unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape + .map(function (s, i) { return "coords." + fields[i + rankDiff]; }) + .join(', '); + } + var output = "return outputValue;"; + var inSize = tf.util.sizeFromShape(inputInfo.shapeInfo.logicalShape); + var isInputScalar = inSize === 1; + var outSize = tf.util.sizeFromShape(outShapeInfo.logicalShape); + var isOutputScalar = outSize === 1; + if (inRank === 1 && !isInputScalar && !isOutputScalar) { + output = "\n return vec4(outputValue.xy, outputValue.xy);\n "; + } + else if (isInputScalar && !isOutputScalar) { + if (outRank === 1) { + output = "\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n "; + } + else { + output = "\n return vec4(outputValue.x);\n "; + } + } + else if (broadcastDims.length) { + var rows = inRank - 2; + var cols = inRank - 1; + if (broadcastDims.indexOf(rows) > -1 && broadcastDims.indexOf(cols) > -1) { + output = "return vec4(outputValue.x);"; + } + else if (broadcastDims.indexOf(rows) > -1) { + output = "return vec4(outputValue.x, outputValue.y, " + + "outputValue.x, outputValue.y);"; + } + else if (broadcastDims.indexOf(cols) > -1) { + output = "return vec4(outputValue.xx, outputValue.zz);"; + } + } + return "\n vec4 " + funcName + "() {\n " + type + " coords = getOutputCoords();\n " + coordsSnippet + "\n vec4 outputValue = get" + texFuncSnippet + "(" + unpackedCoordsSnippet + ");\n " + output + "\n }\n "; + } + function getSamplerAtOutputCoords(inputInfo, outShapeInfo) { + var texName = inputInfo.name; + var texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1); + var funcName = 'get' + texFuncSnippet + 'AtOutCoords'; + var outTexShape = outShapeInfo.texShape; + var inTexShape = inputInfo.shapeInfo.texShape; + var inRank = inputInfo.shapeInfo.logicalShape.length; + var outRank = outShapeInfo.logicalShape.length; + if (!inputInfo.shapeInfo.isUniform && inRank === outRank && + inputInfo.shapeInfo.flatOffset == null && + tf.util.arraysEqual(inTexShape, outTexShape)) { + return "\n float " + funcName + "() {\n return sampleTexture(" + texName + ", resultUV);\n }\n "; + } + var type = getCoordsDataType(outRank); + var broadcastDims = getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape); + var rankDiff = outRank - inRank; + var coordsSnippet; + var fields = ['x', 'y', 'z', 'w', 'u', 'v']; + if (inRank === 0) { + coordsSnippet = ''; + } + else if (outRank < 2 && broadcastDims.length >= 1) { + coordsSnippet = 'coords = 0;'; + } + else { + coordsSnippet = + broadcastDims.map(function (d) { return "coords." + fields[d + rankDiff] + " = 0;"; }) + .join('\n'); + } + var unpackedCoordsSnippet = ''; + if (outRank < 2 && inRank > 0) { + unpackedCoordsSnippet = 'coords'; + } + else { + unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape + .map(function (s, i) { return "coords." + fields[i + rankDiff]; }) + .join(', '); + } + return "\n float " + funcName + "() {\n " + type + " coords = getOutputCoords();\n " + coordsSnippet + "\n return get" + texFuncSnippet + "(" + unpackedCoordsSnippet + ");\n }\n "; + } + function getCoordsDataType(rank) { + if (rank <= 1) { + return 'int'; + } + else if (rank === 2) { + return 'ivec2'; + } + else if (rank === 3) { + return 'ivec3'; + } + else if (rank === 4) { + return 'ivec4'; + } + else if (rank === 5) { + return 'ivec5'; + } + else if (rank === 6) { + return 'ivec6'; + } + else { + throw Error("GPU for rank " + rank + " is not yet supported"); + } + } + /** Returns a new input info (a copy) that has a squeezed logical shape. */ + function squeezeInputInfo(inInfo, squeezedShape) { + // Deep copy. + var newInputInfo = JSON.parse(JSON.stringify(inInfo)); + newInputInfo.shapeInfo.logicalShape = squeezedShape; + return newInputInfo; + } + function getSqueezedParams(params, keptDims) { + return keptDims.map(function (d) { return params[d]; }).join(', '); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ArgMinMaxPackedProgram = /** @class */ (function () { + function ArgMinMaxPackedProgram(shape, windowSize, op, firstPass) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + tf.util.assert(shape.length > 2, function () { return "Packed arg" + (op.charAt(0).toUpperCase() + + op.slice(1)) + " supports only inputs with rank above 2."; }); + var inSize = shape[shape.length - 1]; + var outSize = Math.ceil(inSize / windowSize); + this.outputShape = shape.slice(0, -1); + if (outSize > 1) { + this.outputShape.push(outSize); + } + if (!firstPass) { + this.variableNames.push('bestIndicesA'); + } + var outShape = this.outputShape; + var rank = outShape.length; + var dtype = getCoordsDataType(rank); + var coords = getChannels('coords', rank); + var sourceLocSetup; + var sourceRank; + if (outSize === 1) { + sourceRank = rank + 1; + var sourceLocDType = getCoordsDataType(sourceRank); + sourceLocSetup = "\n " + sourceLocDType + " sourceLocR = " + sourceLocDType + "(" + coords.join() + ", 0);\n ++" + coords[rank - 1] + ";\n " + sourceLocDType + " sourceLocG = " + sourceLocDType + "(" + coords.join() + ", 0);\n ++" + coords[rank - 2] + ";\n " + sourceLocDType + " sourceLocA = " + sourceLocDType + "(" + coords.join() + ", 0);\n --" + coords[rank - 1] + ";\n " + sourceLocDType + " sourceLocB = " + sourceLocDType + "(" + coords.join() + ", 0);\n --" + coords[rank - 2] + ";"; + } + else { + sourceRank = rank; + sourceLocSetup = "\n " + dtype + " sourceLocR = coords;\n ++" + coords[rank - 1] + ";\n " + dtype + " sourceLocG = coords;\n ++" + coords[rank - 2] + ";\n " + dtype + " sourceLocA = coords;\n --" + coords[rank - 1] + ";\n " + dtype + " sourceLocB = coords;\n --" + coords[rank - 2] + ";"; + } + var channels = ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, sourceRank); + var inChannel = '.' + channels[sourceRank - 1]; // e.g. ".b" for rank 3. + var intChannels = channels.map(function (x) { return 'int ' + x; }); + var srcRCoords = getChannels('sourceLocR', sourceRank - 1).concat('inIdx.r'); + var srcGCoords = getChannels('sourceLocG', sourceRank - 1).concat('inIdx.g'); + var srcBCoords = getChannels('sourceLocB', sourceRank - 1).concat('inIdx.b'); + var srcACoords = getChannels('sourceLocA', sourceRank - 1).concat('inIdx.a'); + var compOp = (op === 'max') ? 'greaterThan' : 'lessThan'; + var fetchCandidateIdx = firstPass ? '' : "\n inIdx = round(vec4(getBestIndicesAChannel(" + srcRCoords.join() + "),\n getBestIndicesAChannel(" + srcGCoords.join() + "),\n getBestIndicesAChannel(" + srcBCoords.join() + "),\n getBestIndicesAChannel(" + srcACoords.join() + ")));"; + var fetchValue = "vec4(\n getAChannel(" + srcRCoords.join() + "),\n hasNextCol ? getAChannel(" + srcGCoords.join() + ") : 0.,\n hasNextRow ? getAChannel(" + srcBCoords.join() + ") : 0.,\n hasNextRow && hasNextCol ? getAChannel(" + srcACoords.join() + ") : 0.)"; + var getBestIndicesAChannelSnippet = firstPass ? '' : "\n float getBestIndicesAChannel(" + intChannels.join() + ") {\n return getChannel(getBestIndicesA(" + channels.join() + "),\n vec2(" + channels.slice(-2).join() + "));\n }"; + this.userCode = "\n float getAChannel(" + intChannels.join() + ") {\n return getChannel(getA(" + channels.join() + "),\n vec2(" + channels.slice(-2).join() + "));\n }\n " + getBestIndicesAChannelSnippet + "\n void main() {\n " + dtype + " coords = getOutputCoords();\n bool hasNextCol = " + coords[rank - 1] + " < " + (outShape[rank - 1] - 1) + ";\n bool hasNextRow = " + coords[rank - 2] + " < " + (outShape[rank - 2] - 1) + ";\n " + sourceLocSetup + "\n ivec4 srcIdx = ivec4(sourceLocR" + inChannel + ", sourceLocG" + inChannel + ",\n sourceLocB" + inChannel + ", sourceLocA" + inChannel + ") * " + windowSize + ";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = " + fetchValue + ";\n\n for (int i = 0; i < " + windowSize + "; i++) {\n inIdx = srcIdx;\n " + fetchCandidateIdx + "\n vec4 candidate = " + fetchValue + ";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4(" + compOp + "(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n "; + } + return ArgMinMaxPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var AvgPool2DBackpropProgram = /** @class */ (function () { + function AvgPool2DBackpropProgram(convInfo) { + this.variableNames = ['dy']; + this.outputShape = convInfo.inShape; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; + var padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; + var avgMultiplier = 1 / (filterHeight * filterWidth); + this.userCode = "\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n const float avgMultiplier = float(" + avgMultiplier + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < " + effectiveFilterWidth + ";\n wC+= " + dilationWidth + ") {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "; + } + return AvgPool2DBackpropProgram; + }()); + var AvgPool3DBackpropProgram = /** @class */ (function () { + function AvgPool3DBackpropProgram(convInfo) { + this.variableNames = ['dy']; + this.outputShape = convInfo.inShape; + var filterDepth = convInfo.filterDepth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationDepth = convInfo.dilationDepth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var effectiveFilterDepth = convInfo.effectiveFilterDepth; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; + var padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; + var padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; + var avgMultiplier = 1 / (filterDepth * filterHeight * filterWidth); + this.userCode = "\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n const float avgMultiplier = float(" + avgMultiplier + ");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < " + effectiveFilterDepth + ";\n wD += " + dilationDepth + ") {\n float dyD = float(dyDCorner + wD) / " + strideDepth + ".0;\n\n if (dyD < 0.0 || dyD >= " + convInfo.outDepth + ".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < " + effectiveFilterWidth + ";\n wC += " + dilationWidth + ") {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return AvgPool3DBackpropProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var BatchNormProgram = /** @class */ (function () { + function BatchNormProgram(xShape, meanShape, varianceShape, offsetShape, scaleShape, varianceEpsilon) { + this.outputShape = []; + this.variableNames = ['x', 'mean', 'variance']; + tf.backend_util.assertAndGetBroadcastShape(xShape, meanShape); + tf.backend_util.assertAndGetBroadcastShape(xShape, varianceShape); + var offsetSnippet = '0.0'; + if (offsetShape != null) { + tf.backend_util.assertAndGetBroadcastShape(xShape, offsetShape); + this.variableNames.push('offset'); + offsetSnippet = 'getOffsetAtOutCoords()'; + } + var scaleSnippet = '1.0'; + if (scaleShape != null) { + tf.backend_util.assertAndGetBroadcastShape(xShape, scaleShape); + this.variableNames.push('scale'); + scaleSnippet = 'getScaleAtOutCoords()'; + } + this.outputShape = xShape; + this.userCode = "\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = " + offsetSnippet + ";\n float scale = " + scaleSnippet + ";\n float inv = scale * inversesqrt(variance + float(" + varianceEpsilon + "));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n "; + } + return BatchNormProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var BatchNormPackedProgram = /** @class */ (function () { + function BatchNormPackedProgram(xShape, meanShape, varianceShape, offsetShape, scaleShape, varianceEpsilon) { + this.packedInputs = true; + this.packedOutput = true; + this.variableNames = ['x', 'mean', 'variance']; + tf.backend_util.assertAndGetBroadcastShape(xShape, meanShape); + tf.backend_util.assertAndGetBroadcastShape(xShape, varianceShape); + var offsetSnippet = 'vec4(0.0)'; + if (offsetShape != null) { + tf.backend_util.assertAndGetBroadcastShape(xShape, offsetShape); + this.variableNames.push('offset'); + offsetSnippet = 'getOffsetAtOutCoords()'; + } + var scaleSnippet = 'vec4(1.0)'; + if (scaleShape != null) { + tf.backend_util.assertAndGetBroadcastShape(xShape, scaleShape); + this.variableNames.push('scale'); + scaleSnippet = 'getScaleAtOutCoords()'; + } + this.outputShape = xShape; + this.userCode = "\n void main() {\n vec4 offset = " + offsetSnippet + ";\n vec4 scale = " + scaleSnippet + ";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4(" + varianceEpsilon + "));\n\n setOutput((x - mean) * inv + offset);\n }\n "; + } + return BatchNormPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // (Ar + Ai)(Br + Bi) = + // ArBr + ArBi + AiBr + AiBi = ArBr - AB + ArBi + AiBr + // Yr = ArBr - AB + // Yi = ArBi + AiBr + var COMPLEX_MULTIPLY = { + REAL: 'return areal * breal - aimag * bimag;', + IMAG: 'return areal * bimag + aimag * breal;' + }; + var BinaryOpComplexProgram = /** @class */ (function () { + function BinaryOpComplexProgram(op, aShape, bShape) { + this.variableNames = ['AReal', 'AImag', 'BReal', 'BImag']; + this.outputShape = tf.backend_util.assertAndGetBroadcastShape(aShape, bShape); + this.userCode = "\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n " + op + "\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n "; + } + return BinaryOpComplexProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var CHECK_NAN_SNIPPET = "\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n"; + var ADD = 'return a + b;'; + var SUB = 'return a - b;'; + var MUL = 'return a * b;'; + // Without the equality check div produces 0.9999 for a = b, which when + // floored can cause errors. + var DIV = "\nif (a == b) {\n return 1.0;\n};\nreturn a / b;"; + // We use native integer division to deal with floating point imprecision. Since + // we implement floor division and glsl implements truncated division, we + // correct for this by subtracting 1 from result when the result is negative and + // there is a remainder. + var INT_DIV = "\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n"; + var POW = "\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nif (b == 0.0) {\n return 1.0;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n"; + var EQUAL = "return float(a == b);"; + var NOT_EQUAL = "return float(a != b);"; + var LESS = "return float(a < b);"; + var LESS_EQUAL = "return float(a <= b);"; + var GREATER = "return float(a > b);"; + var GREATER_EQUAL = "return float(a >= b);"; + var LOGICAL_AND = "return float(a >= 1.0 && b >= 1.0);"; + var LOGICAL_OR = "return float(a >= 1.0 || b >= 1.0);"; + var MAX = CHECK_NAN_SNIPPET + "\n return max(a, b);\n"; + var MIN = CHECK_NAN_SNIPPET + "\n return min(a, b);\n"; + var MOD = "if (b == 0.0) return NAN;\n return mod(a, b);"; + var ATAN2 = CHECK_NAN_SNIPPET + "\n return atan(a, b);\n"; + var ELU_DER = "return (b >= 1.0) ? a : a * (b + 1.0);"; + var PRELU = "return (a < 0.) ? b * a : a;"; + var BinaryOpProgram = /** @class */ (function () { + function BinaryOpProgram(op, aShape, bShape) { + this.variableNames = ['A', 'B']; + this.outputShape = tf.backend_util.assertAndGetBroadcastShape(aShape, bShape); + this.userCode = "\n float binaryOperation(float a, float b) {\n " + op + "\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n "; + } + return BinaryOpProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var CHECK_NAN_SNIPPET$1 = "\n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n"; + // We do the same as in ./binaryop_gpu, with vec4 and ivec4. + // On Linux, the vectorized implementation produces NaNs when a and b are 0. + var DIV$1 = "\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n"; + var INT_DIV$1 = "\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n"; + var POW$1 = "\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n " + + CHECK_NAN_SNIPPET$1 + "\n return result;\n"; + var PRELU$1 = "\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n"; + var ELU_DER$1 = "\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n"; + var ATAN2$1 = "\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n " + + CHECK_NAN_SNIPPET$1 + "\n return result;\n"; + var EQUAL$1 = "\n return vec4(equal(a, b));\n"; + var NOT_EQUAL$1 = "\n return vec4(notEqual(a, b));\n"; + var LESS$1 = "\n return vec4(lessThan(a, b));\n"; + var LESS_EQUAL$1 = "\n return vec4(lessThanEqual(a, b));\n"; + var GREATER$1 = "\n return vec4(greaterThan(a, b));\n"; + var GREATER_EQUAL$1 = "\n return vec4(greaterThanEqual(a, b));\n"; + var LOGICAL_AND$1 = "\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n"; + var LOGICAL_OR$1 = "\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n"; + var MAX$1 = "\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n " + + CHECK_NAN_SNIPPET$1 + "\n return result;\n"; + var MIN$1 = "\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n " + + CHECK_NAN_SNIPPET$1 + "\n return result;\n"; + var MOD$1 = "\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n " + + CHECK_NAN_SNIPPET$1 + "\n return result;\n"; + var BinaryOpPackedProgram = /** @class */ (function () { + function BinaryOpPackedProgram(op, aShape, bShape, checkOutOfBounds) { + if (checkOutOfBounds === void 0) { checkOutOfBounds = false; } + this.variableNames = ['A', 'B']; + this.supportsBroadcasting = true; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = tf.backend_util.assertAndGetBroadcastShape(aShape, bShape); + var rank = this.outputShape.length; + var checkOutOfBoundsString = ''; + if (checkOutOfBounds) { + if (rank === 0 || tf.util.sizeFromShape(this.outputShape) === 1) { + checkOutOfBoundsString = "\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n "; + } + else { + var dtype = getCoordsDataType(rank); + checkOutOfBoundsString = "\n " + dtype + " coords = getOutputCoords();\n "; + if (rank === 1) { + checkOutOfBoundsString += "\n result.y = (coords + 1) >= " + this.outputShape[0] + " ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n "; + } + else { + var channels = getChannels('coords', rank); + checkOutOfBoundsString += "\n bool nextRowOutOfBounds =\n (" + channels[rank - 2] + " + 1) >= " + this.outputShape[rank - 2] + ";\n bool nextColOutOfBounds =\n (" + channels[rank - 1] + " + 1) >= " + this.outputShape[rank - 1] + ";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n "; + } + } + } + this.userCode = "\n vec4 binaryOperation(vec4 a, vec4 b) {\n " + op + "\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n " + checkOutOfBoundsString + "\n\n setOutput(result);\n }\n "; + } + return BinaryOpPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ClipProgram = /** @class */ (function () { + function ClipProgram(aShape) { + this.variableNames = ['A']; + this.outputShape = aShape; + this.userCode = "\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "; + } + ClipProgram.prototype.getCustomSetupFunc = function (min, max) { + var _this = this; + return function (gpgpu, webGLProgram) { + if (_this.minLoc == null) { + _this.minLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'minVal'); + _this.maxLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'maxVal'); + } + gpgpu.gl.uniform1f(_this.minLoc, min); + gpgpu.gl.uniform1f(_this.maxLoc, max); + }; + }; + return ClipProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ClipPackedProgram = /** @class */ (function () { + function ClipPackedProgram(aShape) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = aShape; + this.userCode = "\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "; + } + ClipPackedProgram.prototype.getCustomSetupFunc = function (min, max) { + var _this = this; + return function (gpgpu, webGLProgram) { + if (_this.minLoc == null) { + _this.minLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'minVal'); + _this.maxLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'maxVal'); + } + gpgpu.gl.uniform1f(_this.minLoc, min); + gpgpu.gl.uniform1f(_this.maxLoc, max); + }; + }; + return ClipPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ComplexAbsProgram = /** @class */ (function () { + function ComplexAbsProgram(shape) { + this.variableNames = ['real', 'imag']; + this.outputShape = shape; + this.userCode = "\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "; + } + return ComplexAbsProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ConcatProgram = /** @class */ (function () { + // Concats 2d tensors along axis=1. See comments in MathBackendWebGL.concat(). + function ConcatProgram(shapes) { + this.outputShape = []; + this.outputShape = tf.backend_util.computeOutShape(shapes, 1 /* axis */); + this.variableNames = shapes.map(function (_, i) { return "T" + i; }); + var offsets = new Array(shapes.length - 1); + offsets[0] = shapes[0][1]; + for (var i = 1; i < offsets.length; i++) { + offsets[i] = offsets[i - 1] + shapes[i][1]; + } + var snippets = ["if (yC < " + offsets[0] + ") setOutput(getT0(yR, yC));"]; + for (var i = 1; i < offsets.length; i++) { + var shift = offsets[i - 1]; + snippets.push("else if (yC < " + offsets[i] + ") " + + ("setOutput(getT" + i + "(yR, yC-" + shift + "));")); + } + var lastIndex = offsets.length; + var lastShift = offsets[offsets.length - 1]; + snippets.push("else setOutput(getT" + lastIndex + "(yR, yC-" + lastShift + "));"); + this.userCode = "\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n " + snippets.join('\n ') + "\n }\n "; + } + return ConcatProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ConcatPackedProgram = /** @class */ (function () { + function ConcatPackedProgram(shapes, axis) { + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = []; + this.outputShape = tf.backend_util.computeOutShape(shapes, axis); + var shape = this.outputShape; + var rank = shape.length; + var dtype = getCoordsDataType(rank); + var coords = getChannels('coords', rank); + var channels = ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, rank); + this.variableNames = shapes.map(function (_, i) { return "T" + i; }); + var offsets = new Array(shapes.length - 1); + offsets[0] = shapes[0][axis]; + for (var i = 1; i < offsets.length; i++) { + offsets[i] = offsets[i - 1] + shapes[i][axis]; + } + var channel = channels[axis]; + var lastChannels = channels.slice(-2); + var allChannels = channels.join(); + var getValueSnippet = "if (" + channel + " < " + offsets[0] + ") {\n return getChannel(\n getT0(" + allChannels + "), vec2(" + lastChannels.join() + "));\n }"; + for (var i = 1; i < offsets.length; i++) { + var shift_1 = offsets[i - 1]; + // Note: the >= comparison below may seem unnecessary given the check + // above but is needed to workaround branch execution issues on some + // devices. It makes all the conditions exclusive without relying on + // execution order. + getValueSnippet += "\n if (" + channel + " < " + offsets[i] + " && " + channel + " >= " + offsets[i - 1] + ") {\n return getChannel(\n getT" + i + "(" + shiftedChannels(channels, channel, shift_1) + "),\n vec2(" + shiftedChannels(lastChannels, channel, shift_1) + "));\n }"; + } + var lastIndex = offsets.length; + var shift = offsets[offsets.length - 1]; + getValueSnippet += "\n return getChannel(\n getT" + lastIndex + "(" + shiftedChannels(channels, channel, shift) + "),\n vec2(" + shiftedChannels(lastChannels, channel, shift) + "));"; + this.userCode = "\n float getValue(" + channels.map(function (x) { return 'int ' + x; }) + ") {\n " + getValueSnippet + "\n }\n\n void main() {\n " + dtype + " coords = getOutputCoords();\n vec4 result = vec4(getValue(" + coords + "), 0., 0., 0.);\n\n " + coords[rank - 1] + " = " + coords[rank - 1] + " + 1;\n if (" + coords[rank - 1] + " < " + shape[rank - 1] + ") {\n result.g = getValue(" + coords + ");\n }\n\n " + coords[rank - 2] + " = " + coords[rank - 2] + " + 1;\n if (" + coords[rank - 2] + " < " + shape[rank - 2] + ") {\n result.a = getValue(" + coords + ");\n }\n\n " + coords[rank - 1] + " = " + coords[rank - 1] + " - 1;\n if (" + coords[rank - 2] + " < " + shape[rank - 2] + " &&\n " + coords[rank - 1] + " < " + shape[rank - 1] + ") {\n result.b = getValue(" + coords + ");\n }\n setOutput(result);\n }\n "; + } + return ConcatPackedProgram; + }()); + /** + * Return an expression for coordinates into a vector where a given channel + * will be offset by [shift]. + * + * @param channels the channels to consider + * @param channel the channel we want shifted + * @param shift the amount to subtract from the channel. + * + * @returns a string of the form 'x, y-[shift], z' where any one channel can + * have the shift applied. + */ + function shiftedChannels(channels, channel, shift) { + var channelIdx = channels.indexOf(channel); + var res = channels.map(function (c, idx) { + if (idx === channelIdx) { + return c + " - " + shift; + } + else { + return c; + } + }); + return res.join(); + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Conv2DDerFilterProgram = /** @class */ (function () { + function Conv2DDerFilterProgram(convInfo) { + this.variableNames = ['x', 'dy']; + this.outputShape = convInfo.filterShape; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var isChannelsLast = convInfo.dataFormat === 'channelsLast'; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < " + convInfo.batchSize + "; b++) {\n for (int yR = 0; yR < " + convInfo.outHeight + "; yR++) {\n int xR = wR + yR * " + strideHeight + " - " + padTop + ";\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int yC = 0; yC < " + convInfo.outWidth + "; yC++) {\n int xC = wC + yC * " + strideWidth + " - " + padLeft + ";\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n if (" + isChannelsLast + ") {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return Conv2DDerFilterProgram; + }()); + var Conv2DDerInputProgram = /** @class */ (function () { + function Conv2DDerInputProgram(convInfo) { + this.variableNames = ['dy', 'W']; + this.outputShape = convInfo.inShape; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var isChannelsLast = convInfo.dataFormat === 'channelsLast'; + var padTop = filterHeight - 1 - convInfo.padInfo.top; + var padLeft = filterWidth - 1 - convInfo.padInfo.left; + var rowDim = isChannelsLast ? 1 : 2; + var colDim = isChannelsLast ? 2 : 3; + var channelDim = isChannelsLast ? 3 : 1; + this.userCode = "\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[" + channelDim + "];\n\n ivec2 dyCorner = ivec2(coords[" + rowDim + "], coords[" + colDim + "]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = " + filterHeight + " - 1 - wR;\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = " + filterWidth + " - 1 - wC;\n\n for (int d2 = 0; d2 < " + convInfo.outChannels + "; d2++) {\n\n if (" + isChannelsLast + ") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return Conv2DDerInputProgram; + }()); + var Conv3DDerFilterProgram = /** @class */ (function () { + function Conv3DDerFilterProgram(convInfo) { + this.variableNames = ['x', 'dy']; + this.outputShape = convInfo.filterShape; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var padFront = convInfo.padInfo.front; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + this.userCode = "\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < " + convInfo.batchSize + "; b++) {\n for (int yF = 0; yF < " + convInfo.outDepth + "; yF++) {\n int xF = wF + yF * " + strideDepth + " - " + padFront + ";\n\n if (xF < 0 || xF >= " + convInfo.inDepth + ") {\n continue;\n }\n\n for (int yR = 0; yR < " + convInfo.outHeight + "; yR++) {\n int xR = wR + yR * " + strideHeight + " - " + padTop + ";\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int yC = 0; yC < " + convInfo.outWidth + "; yC++) {\n int xC = wC + yC * " + strideWidth + " - " + padLeft + ";\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return Conv3DDerFilterProgram; + }()); + var Conv3DDerInputProgram = /** @class */ (function () { + function Conv3DDerInputProgram(convInfo) { + this.variableNames = ['dy', 'W']; + this.outputShape = convInfo.inShape; + var filterDepth = convInfo.filterDepth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var padFront = filterDepth - 1 - convInfo.padInfo.front; + var padTop = filterHeight - 1 - convInfo.padInfo.top; + var padLeft = filterWidth - 1 - convInfo.padInfo.left; + this.userCode = "\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < " + filterDepth + "; wF++) {\n float dyF = float(dyFCorner + wF) / " + strideDepth + ".0;\n\n if (dyF < 0.0 || dyF >= " + convInfo.outDepth + ".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = " + filterDepth + " - 1 - wF;\n\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = " + filterHeight + " - 1 - wR;\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = " + filterWidth + " - 1 - wC;\n\n for (int d2 = 0; d2 < " + convInfo.outChannels + "; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return Conv3DDerInputProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DepthwiseConv2DDerFilterProgram = /** @class */ (function () { + function DepthwiseConv2DDerFilterProgram(convInfo) { + this.variableNames = ['x', 'dy']; + this.outputShape = convInfo.filterShape; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var channelMul = convInfo.outChannels / convInfo.inChannels; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * " + channelMul + " + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < " + convInfo.batchSize + "; b++) {\n for (int yR = 0; yR < " + convInfo.outHeight + "; yR++) {\n int xR = wR + yR * " + strideHeight + " - " + padTop + ";\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int yC = 0; yC < " + convInfo.outWidth + "; yC++) {\n int xC = wC + yC * " + strideWidth + " - " + padLeft + ";\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return DepthwiseConv2DDerFilterProgram; + }()); + var DepthwiseConv2DDerInputProgram = /** @class */ (function () { + function DepthwiseConv2DDerInputProgram(convInfo) { + this.variableNames = ['dy', 'W']; + this.outputShape = convInfo.inShape; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var padTop = filterHeight - 1 - convInfo.padInfo.top; + var padLeft = filterWidth - 1 - convInfo.padInfo.left; + var channelMul = convInfo.outChannels / convInfo.inChannels; + this.userCode = "\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = " + filterHeight + " - 1 - wR;\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = " + filterWidth + " - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < " + channelMul + "; dm++) {\n int d2 = d1 * " + channelMul + " + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return DepthwiseConv2DDerInputProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Conv2DProgram = /** @class */ (function () { + function Conv2DProgram(convInfo, addBias, activation, hasPreluActivationWeights) { + if (addBias === void 0) { addBias = false; } + if (activation === void 0) { activation = null; } + if (hasPreluActivationWeights === void 0) { hasPreluActivationWeights = false; } + this.variableNames = ['x', 'W']; + this.outputShape = convInfo.outShape; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var inputDepthNearestVec4 = Math.floor(convInfo.inChannels / 4) * 4; + var inputDepthVec4Remainder = convInfo.inChannels % 4; + var isChannelsLast = convInfo.dataFormat === 'channelsLast'; + var rowDim = isChannelsLast ? 1 : 2; + var colDim = isChannelsLast ? 2 : 3; + var channelDim = isChannelsLast ? 3 : 1; + var activationSnippet = '', applyActivationSnippet = ''; + if (activation) { + if (hasPreluActivationWeights) { + activationSnippet = "float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n " + activation + "\n }"; + } + else { + activationSnippet = "\n float activation(float x) {\n " + activation + "\n }\n "; + } + applyActivationSnippet = "result = activation(result);"; + } + var addBiasSnippet = addBias ? 'result += getBiasAtOutCoords();' : ''; + if (addBias) { + this.variableNames.push('bias'); + } + if (hasPreluActivationWeights) { + this.variableNames.push('preluActivationWeights'); + } + this.userCode = "\n " + activationSnippet + "\n\n const ivec2 strides = ivec2(" + strideHeight + ", " + strideWidth + ");\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[" + channelDim + "];\n\n ivec2 xRCCorner =\n ivec2(coords[" + rowDim + "], coords[" + colDim + "]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n int xR = xRCorner + wR * " + dilationHeight + ";\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n int xC = xCCorner + wC * " + dilationWidth + ";\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n for (int d1 = 0; d1 < " + inputDepthNearestVec4 + "; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if (" + isChannelsLast + ") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if (" + (inputDepthVec4Remainder === 1) + ") {\n\n if (" + isChannelsLast + ") {\n dotProd +=\n getX(batch, xR, xC, " + inputDepthNearestVec4 + ") *\n getW(wR, wC, " + inputDepthNearestVec4 + ", d2);\n } else {\n dotProd +=\n getX(batch, " + inputDepthNearestVec4 + ", xR, xC) *\n getW(wR, wC, " + inputDepthNearestVec4 + ", d2);\n }\n\n } else if (" + (inputDepthVec4Remainder === 2) + ") {\n vec2 wValues = vec2(\n getW(wR, wC, " + inputDepthNearestVec4 + ", d2),\n getW(wR, wC, " + inputDepthNearestVec4 + " + 1, d2)\n );\n\n if (" + isChannelsLast + ") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, " + inputDepthNearestVec4 + "),\n getX(batch, xR, xC, " + inputDepthNearestVec4 + " + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, " + inputDepthNearestVec4 + ", xR, xC),\n getX(batch, " + inputDepthNearestVec4 + " + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if (" + (inputDepthVec4Remainder === 3) + ") {\n vec3 wValues = vec3(\n getW(wR, wC, " + inputDepthNearestVec4 + ", d2),\n getW(wR, wC, " + inputDepthNearestVec4 + " + 1, d2),\n getW(wR, wC, " + inputDepthNearestVec4 + " + 2, d2)\n );\n\n if (" + isChannelsLast + ") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, " + inputDepthNearestVec4 + "),\n getX(batch, xR, xC, " + inputDepthNearestVec4 + " + 1),\n getX(batch, xR, xC, " + inputDepthNearestVec4 + " + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, " + inputDepthNearestVec4 + ", xR, xC),\n getX(batch, " + inputDepthNearestVec4 + " + 1, xR, xC),\n getX(batch, " + inputDepthNearestVec4 + " + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n " + addBiasSnippet + "\n " + applyActivationSnippet + "\n setOutput(result);\n }\n "; + } + return Conv2DProgram; + }()); + var Conv3DProgram = /** @class */ (function () { + function Conv3DProgram(convInfo) { + this.variableNames = ['x', 'W']; + this.outputShape = convInfo.outShape; + var padFront = convInfo.padInfo.front; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationDepth = convInfo.dilationDepth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var filterDepth = convInfo.filterDepth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var inputDepthNearestVec4 = Math.floor(convInfo.inChannels / 4) * 4; + var inputDepthVec4Remainder = convInfo.inChannels % 4; + this.userCode = "\n const ivec3 strides = ivec3(" + strideDepth + ", " + strideHeight + ", " + strideWidth + ");\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < " + filterDepth + "; wF++) {\n int xF = xFCorner + wF * " + dilationDepth + ";\n\n if (xF < 0 || xF >= " + convInfo.inDepth + ") {\n continue;\n }\n\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n int xR = xRCorner + wR * " + dilationHeight + ";\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n int xC = xCCorner + wC * " + dilationWidth + ";\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n for (int d1 = 0; d1 < " + inputDepthNearestVec4 + "; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if (" + (inputDepthVec4Remainder === 1) + ") {\n dotProd +=\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + ") *\n getW(wF, wR, wC, " + inputDepthNearestVec4 + ", d2);\n } else if (" + (inputDepthVec4Remainder === 2) + ") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + "),\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + " + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, " + inputDepthNearestVec4 + ", d2),\n getW(wF, wR, wC, " + inputDepthNearestVec4 + " + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if (" + (inputDepthVec4Remainder === 3) + ") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + "),\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + " + 1),\n getX(batch, xF, xR, xC, " + inputDepthNearestVec4 + " + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, " + inputDepthNearestVec4 + ", d2),\n getW(wF, wR, wC, " + inputDepthNearestVec4 + " + 1, d2),\n getW(wF, wR, wC, " + inputDepthNearestVec4 + " + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return Conv3DProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DepthwiseConv2DProgram = /** @class */ (function () { + function DepthwiseConv2DProgram(convInfo, addBias, activation, hasPreluActivation) { + if (addBias === void 0) { addBias = false; } + if (activation === void 0) { activation = null; } + if (hasPreluActivation === void 0) { hasPreluActivation = false; } + this.variableNames = ['x', 'W']; + this.outputShape = convInfo.outShape; + var xNumRows = convInfo.inHeight; + var xNumCols = convInfo.inWidth; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var channelMul = convInfo.outChannels / convInfo.inChannels; + var activationSnippet = '', applyActivationSnippet = ''; + if (activation) { + if (hasPreluActivation) { + activationSnippet = "float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n " + activation + "\n }"; + } + else { + activationSnippet = "\n float activation(float x) {\n " + activation + "\n }\n "; + } + applyActivationSnippet = "result = activation(result);"; + } + var addBiasSnippet = addBias ? 'result += getBiasAtOutCoords();' : ''; + if (addBias) { + this.variableNames.push('bias'); + } + if (hasPreluActivation) { + this.variableNames.push('preluActivationWeights'); + } + this.userCode = "\n " + activationSnippet + "\n\n const ivec2 strides = ivec2(" + strideHeight + ", " + strideWidth + ");\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / " + channelMul + ";\n int q = d2 - d1 * " + channelMul + ";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < " + filterHeight + "; wR++) {\n int xR = xRCorner + wR * " + dilationHeight + ";\n\n if (xR < 0 || xR >= " + xNumRows + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + filterWidth + "; wC++) {\n int xC = xCCorner + wC * " + dilationWidth + ";\n\n if (xC < 0 || xC >= " + xNumCols + ") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n " + addBiasSnippet + "\n " + applyActivationSnippet + "\n setOutput(result);\n }\n "; + } + return DepthwiseConv2DProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DepthwiseConvPacked2DProgram = /** @class */ (function () { + function DepthwiseConvPacked2DProgram(convInfo, addBias, activation, hasPreluActivation) { + if (addBias === void 0) { addBias = false; } + if (activation === void 0) { activation = null; } + if (hasPreluActivation === void 0) { hasPreluActivation = false; } + this.variableNames = ['x', 'W']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = convInfo.outShape; + var xNumRows = convInfo.inHeight; + var xNumCols = convInfo.inWidth; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var filterHeight = convInfo.filterHeight; + var filterWidth = convInfo.filterWidth; + var texelsAcross = filterWidth; + var mainLoop = "int xR; int xC; int xCOffset;"; + for (var r = 0; r < filterHeight; r++) { + for (var c = 0; c < filterWidth; c++) { + mainLoop += "\n vec4 xTexelR" + r + "C" + c * 2 + " = vec4(0.);\n vec4 wR" + r + "C" + c + " = vec4(0.);\n vec4 xR" + r + "C" + c + " = vec4(0.);"; + } + } + /** + * This vectorized implementation works by gathering the values needed for + * each output channel's dot product into vec4's and then multiplying them + * all together (this happens in the final double for-loop below). Most of + * the main loop consists of constructing these vec4's with the minimum + * number of texture2D calls, which means making use of all four returned + * values from a texture2D call at once. + */ + for (var r = 0; r < filterHeight; r++) { + for (var texelC = 0; texelC < texelsAcross; texelC++) { + var c = texelC * 2; + mainLoop += "\n xR = xRCorner + " + r * dilationHeight + ";\n xC = xCCorner + " + c * dilationWidth + ";\n "; + if (strideWidth === 1) { + if (c < filterWidth) { + // If padding is odd, the outer texels have to be composed. + if (padLeft % 2 === 1) { + // TODO: Ensure vec4 previous does not result in redundant sample, + // and avoid setting xTexelRC's that exceed the boundary in the + // first place rather than resetting them to vec4(0)). + // To compute xCOffset: + // - If padding is odd, we must add 1 to ensure we ask for an + // even-numbered row. + // - We subtract 2 to access the previous texel. + mainLoop += "\n xCOffset = xC + 1;\n if(xR >= 0 && xR < " + xNumRows + " && xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + c + " = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if(xCOffset + 1 >= " + xNumCols + ") {\n xTexelR" + r + "C" + c + ".zw = vec2(0.);\n }\n } else {\n xTexelR" + r + "C" + c + " = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < " + xNumRows + " && xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n vec4 previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if(xCOffset + 1 >= " + xNumCols + ") {\n previous.zw = vec2(0.);\n }\n\n xR" + r + "C" + c + " = vec4(previous.zw, xTexelR" + r + "C" + c + ".xy);\n } else {\n xR" + r + "C" + c + " = vec4(0, 0, xTexelR" + r + "C" + c + ".xy);\n }\n "; + } + else { + // Padding is even, so xRC corresponds to a single texel. + mainLoop += "\n if(xR >= 0 && xR < " + xNumRows + " && xC >= 0 && xC < " + xNumCols + ") {\n xTexelR" + r + "C" + c + " = getX(batch, xR, xC, d1);\n } else {\n xTexelR" + r + "C" + c + " = vec4(0.);\n }\n\n xR" + r + "C" + c + " = xTexelR" + r + "C" + c + ";\n "; + } + if (c + 1 < filterWidth) { + // If dilation is even, the second entry should match the first + // (either both are composed or both are single samples). But if + // dilation is odd, then the second entry should be the opposite + // of the first (if the first is composed, the second is a single + // sample, and vice versa.) + var nextTexelOffset = padLeft % 2 === 0 ? + tf.util.nearestLargerEven(dilationWidth) : + dilationWidth; + if ((dilationWidth % 2 === 0 && padLeft % 2 === 1) || + (dilationWidth % 2 !== 0 && padLeft % 2 !== 1)) { + mainLoop += "\n xCOffset = xC + " + padLeft % 2 + " + " + nextTexelOffset + ";\n\n if(xR >= 0 && xR < " + xNumRows + " &&\n xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + (c + 2) + " = getX(batch, xR, xCOffset, d1);\n }\n "; + // If dilation > 1 then the xRC's will not be able to share any + // values, so each xRC will require two unique calls to getX. + if (dilationWidth > 1) { + mainLoop += "\n xCOffset -= 2;\n if(xR >= 0 && xR < " + xNumRows + " &&\n xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + c + " = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR" + r + "C" + c + " = vec4(0.);\n }\n "; + } + mainLoop += "\n xR" + r + "C" + (c + 1) + " = vec4(\n xTexelR" + r + "C" + c + ".zw, xTexelR" + r + "C" + (c + 2) + ".xy);\n "; + } + else { + mainLoop += "\n xCOffset = xC + " + nextTexelOffset + ";\n\n if(xR >= 0 && xR < " + xNumRows + " &&\n xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + (c + 2) + " = getX(batch, xR, xCOffset, d1);\n }\n\n xR" + r + "C" + (c + 1) + " = xTexelR" + r + "C" + (c + 2) + ";\n "; + } + } + } + } + else { // stride > 1 + if (c < filterWidth) { + mainLoop += "\n if(xR >= 0 && xR < " + xNumRows + ") {\n "; + // Depending on whether padLeft is even or odd, we want either the + // xy or zw channels from X texels for xR${r}C${c}. If padLeft is + // even, xR${r}C${c + 1} is simply the zw channels of texels we've + // already sampled. But if padLeft is odd, xR${r}C{$c + 1}.zw will + // need to come from the xy channels of a new texel, hence the `vec4 + // final` initialized below. + if (padLeft % 2 === 1) { + mainLoop += "\n xCOffset = xC + 1 - " + strideWidth + ";\n if(xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + c + " = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR" + r + "C" + c + " = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < " + xNumCols + ") {\n xTexelR" + r + "C" + (c + 2) + " = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR" + r + "C" + (c + 2) + " = vec4(0.);\n }\n\n xR" + r + "C" + c + " = vec4(\n xTexelR" + r + "C" + c + ".zw, xTexelR" + r + "C" + (c + 2) + ".zw);\n "; + if (c + 1 < filterWidth) { + mainLoop += "\n vec4 final = vec4(0.);\n xCOffset = xC + 1 + " + strideWidth + ";\n if(xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR" + r + "C" + (c + 1) + " = vec4(xTexelR" + r + "C" + (c + 2) + ".xy, final.xy);\n "; + } + } + else { + mainLoop += "\n if(xC >= 0 && xC < " + xNumCols + ") {\n xTexelR" + r + "C" + c + " = getX(batch, xR, xC, d1);\n } else {\n xTexelR" + r + "C" + c + " = vec4(0.);\n }\n\n xCOffset = xC + " + strideWidth + ";\n if(xCOffset >= 0 && xCOffset < " + xNumCols + ") {\n xTexelR" + r + "C" + (c + 2) + " = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR" + r + "C" + (c + 2) + " = vec4(0.);\n }\n\n xR" + r + "C" + c + " = vec4(\n xTexelR" + r + "C" + c + ".xy, xTexelR" + r + "C" + (c + 2) + ".xy);\n "; + if (c + 1 < filterWidth) { + mainLoop += "\n xR" + r + "C" + (c + 1) + " = vec4(\n xTexelR" + r + "C" + c + ".zw, xTexelR" + r + "C" + (c + 2) + ".zw);\n "; + } + } + mainLoop += "}"; + } + } + if (c < filterWidth) { + mainLoop += "\n vec4 wTexelR" + r + "C" + c + " = getW(" + r + ", " + c + ", d1, q);\n wR" + r + "C" + c + " = vec4(wTexelR" + r + "C" + c + ".xz, wTexelR" + r + "C" + c + ".xz);\n "; + if (c + 1 < filterWidth) { + mainLoop += "\n vec4 wTexelR" + r + "C" + (c + 1) + " = getW(" + r + ", " + (c + 1) + ", d1, q);\n wR" + r + "C" + (c + 1) + " =\n vec4(wTexelR" + r + "C" + (c + 1) + ".xz, wTexelR" + r + "C" + (c + 1) + ".xz);"; + } + } + } + } + for (var r = 0; r < filterHeight; r++) { + for (var c = 0; c < filterWidth; c++) { + mainLoop += "dotProd += xR" + r + "C" + c + " * wR" + r + "C" + c + ";"; + } + } + var activationSnippet = '', applyActivationSnippet = ''; + if (activation) { + if (hasPreluActivation) { + activationSnippet = "vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n " + activation + "\n }"; + } + else { + activationSnippet = "vec4 activation(vec4 x) {\n " + activation + "\n }"; + } + applyActivationSnippet = "result = activation(result);"; + } + var addBiasSnippet = addBias ? 'result += getBiasAtOutCoords();' : ''; + if (addBias) { + this.variableNames.push('bias'); + } + if (hasPreluActivation) { + this.variableNames.push('preluActivationWeights'); + } + this.userCode = "\n " + activationSnippet + "\n\n const ivec2 strides = ivec2(" + strideHeight + ", " + strideWidth + ");\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2;\n int q = 0;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n vec4 dotProd = vec4(0.);\n\n " + mainLoop + "\n\n vec4 result = dotProd;\n " + addBiasSnippet + "\n " + applyActivationSnippet + "\n setOutput(result);\n }\n "; + } + return DepthwiseConvPacked2DProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var CropAndResizeProgram = /** @class */ (function () { + function CropAndResizeProgram(imageShape, boxShape, cropSize, method, extrapolationValue) { + this.variableNames = ['Image', 'Boxes', 'BoxInd']; + this.outputShape = []; + var batch = imageShape[0], imageHeight = imageShape[1], imageWidth = imageShape[2], depth = imageShape[3]; + var numBoxes = boxShape[0]; + var cropHeight = cropSize[0], cropWidth = cropSize[1]; + this.outputShape = [numBoxes, cropHeight, cropWidth, depth]; + var methodId = method === 'bilinear' ? 1 : 0; + var _a = [imageHeight - 1 + ".0", imageWidth - 1 + ".0"], inputHeightFloat = _a[0], inputWidthFloat = _a[1]; + var _b = cropHeight > 1 ? + [ + "" + (imageHeight - 1) / (cropHeight - 1), + '(y2-y1) * height_ratio', + "y1*" + inputHeightFloat + " + float(y)*(height_scale)", + ] : + [ + '0.0', + '0.0', + "0.5 * (y1+y2) * " + inputHeightFloat, + ], heightRatio = _b[0], heightScale = _b[1], inY = _b[2]; + var _c = cropWidth > 1 ? + [ + "" + (imageWidth - 1) / (cropWidth - 1), + '(x2-x1) * width_ratio', + "x1*" + inputWidthFloat + " + float(x)*(width_scale)", + ] : + [ + '0.0', + '0.0', + "0.5 * (x1+x2) * " + inputWidthFloat, + ], widthRatio = _c[0], widthScale = _c[1], inX = _c[2]; + // Reference implementation + // tslint:disable-next-line:max-line-length + // https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/crop_and_resize_op_gpu.cu.cc + this.userCode = "\n const float height_ratio = float(" + heightRatio + ");\n const float width_ratio = float(" + widthRatio + ");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= " + batch + ") {\n return;\n }\n\n float height_scale = " + heightScale + ";\n float width_scale = " + widthScale + ";\n\n float in_y = " + inY + ";\n if( in_y < 0.0 || in_y > " + inputHeightFloat + " ) {\n setOutput(float(" + extrapolationValue + "));\n return;\n }\n float in_x = " + inX + ";\n if( in_x < 0.0 || in_x > " + inputWidthFloat + " ) {\n setOutput(float(" + extrapolationValue + "));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if(" + methodId + " == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n "; + } + return CropAndResizeProgram; + }()); + + var CumSumProgram = /** @class */ (function () { + function CumSumProgram(shape, exclusive, reverse) { + this.variableNames = ['x']; + this.outputShape = shape; + var rank = shape.length; + var val = exclusive ? '0.0' : "getX(" + getCoords(rank, 'coords') + ")"; + var length = shape[shape.length - 1]; + var condition = ''; + var idxString = ''; + // When exclusive is set, the cumsum op becomes roll op that copies the + // value from the previous index based on the direction specified by the + // reverse flag. + if (exclusive) { + condition = reverse ? "end != " + (length - 1) : 'end != 0'; + idxString = reverse ? 'end + 1' : 'end - 1'; + } + else { + condition = reverse ? "end + pow2 < " + length : 'end >= pow2'; + idxString = (reverse ? 'end + pow2' : 'end - pow2'); + } + this.userCode = "\n uniform float index;\n void main() {\n " + getCoordsDataType(rank) + " coords = getOutputCoords();\n int end = " + getFinalCoord(rank, 'coords') + ";\n float val = " + val + ";\n int pow2 = int(pow(2.0, index));\n if (" + condition + ") {\n int idx = " + idxString + ";\n " + getFinalCoord(rank, 'coords') + " = idx;\n val += getX(" + getCoords(rank, 'coords') + ");\n }\n setOutput(val);\n }\n "; + } + CumSumProgram.prototype.getCustomSetupFunc = function (index) { + var _this = this; + return function (gpgpu, webGLProgram) { + if (_this.index == null) { + _this.index = gpgpu.getUniformLocation(webGLProgram, 'index'); + } + gpgpu.gl.uniform1f(_this.index, index); + }; + }; + return CumSumProgram; + }()); + function getCoords(rank, name) { + if (rank === 1) { + return "" + name; + } + else if (rank === 2) { + return name + ".x, " + name + ".y"; + } + else if (rank === 3) { + return name + ".x, " + name + ".y, " + name + ".z"; + } + else if (rank === 4) { + return name + ".x, " + name + ".y, " + name + ".z, " + name + ".w"; + } + else { + throw Error("Cumulative sum for rank " + rank + " is not yet supported"); + } + } + function getFinalCoord(rank, name) { + if (rank === 1) { + return "" + name; + } + else if (rank === 2) { + return name + ".y"; + } + else if (rank === 3) { + return name + ".z"; + } + else if (rank === 4) { + return name + ".w"; + } + else { + throw Error("Cumulative sum for rank " + rank + " is not yet supported"); + } + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DecodeMatrixProgram = /** @class */ (function () { + function DecodeMatrixProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = false; + this.packedOutput = true; + this.outPackingScheme = PackingScheme.DENSE; + var texShape = getDenseTexShape(outputShape); + var glsl = getGlslDifferences(); + this.outputShape = outputShape; + this.userCode = "\n ivec3 outCoordsFromFlatIndex(int index) {\n " + getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd'], outputShape) + "\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = 4 * (resTexRC.x * " + texShape[1] + " + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n " + glsl.output + " = result;\n }\n "; + } + return DecodeMatrixProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DecodeMatrixPackedProgram = /** @class */ (function () { + function DecodeMatrixPackedProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outPackingScheme = PackingScheme.DENSE; + var texShape = getDenseTexShape(outputShape); + var glsl = getGlslDifferences(); + this.outputShape = outputShape; + this.userCode = "\n ivec3 outCoordsFromFlatIndex(int index) {\n " + getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd'], outputShape) + "\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(" + texShape[0] + ", " + texShape[1] + "));\n int index = 4 * (resTexRC.x * " + texShape[1] + " + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n " + glsl.output + " = result;\n }\n "; + } + return DecodeMatrixPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DepthToSpaceProgram = /** @class */ (function () { + function DepthToSpaceProgram(outputShape, blockSize, dataFormat) { + this.variableNames = ['x']; + this.outputShape = []; + this.outputShape = outputShape; + this.blockSize = blockSize; + this.dataFormat = dataFormat; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = " + this.getHeightCoordString() + ";\n int w = " + this.getWidthCoordString() + ";\n int d = " + this.getDepthCoordString() + ";\n\n int in_h = h / " + blockSize + ";\n int offset_h = imod(h, " + blockSize + ");\n int in_w = w / " + blockSize + ";\n int offset_w = imod(w, " + blockSize + ");\n int offset_d = (offset_h * " + blockSize + " + offset_w) *\n " + this.getOutputDepthSize() + ";\n int in_d = d + offset_d;\n\n float result = " + this.getInputSamplingString() + ";\n setOutput(result);\n }\n "; + } + DepthToSpaceProgram.prototype.getHeightCoordString = function () { + if (this.dataFormat === 'NHWC') { + return "coords[1]"; + } + else { + return "coords[2]"; + } + }; + DepthToSpaceProgram.prototype.getWidthCoordString = function () { + if (this.dataFormat === 'NHWC') { + return "coords[2]"; + } + else { + return "coords[3]"; + } + }; + DepthToSpaceProgram.prototype.getDepthCoordString = function () { + if (this.dataFormat === 'NHWC') { + return "coords[3]"; + } + else { + return "coords[1]"; + } + }; + DepthToSpaceProgram.prototype.getOutputDepthSize = function () { + if (this.dataFormat === 'NHWC') { + return this.outputShape[3]; + } + else { + return this.outputShape[1]; + } + }; + DepthToSpaceProgram.prototype.getInputSamplingString = function () { + if (this.dataFormat === 'NHWC') { + return "getX(b, in_h, in_w, in_d)"; + } + else { + return "getX(b, in_d, in_h, in_w)"; + } + }; + return DepthToSpaceProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DiagProgram = /** @class */ (function () { + function DiagProgram(size) { + this.variableNames = ['X']; + this.outputShape = [size, size]; + this.userCode = "\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "; + } + return DiagProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var EncodeFloatProgram = /** @class */ (function () { + function EncodeFloatProgram(outputShape) { + this.variableNames = ['A']; + this.outTexUsage = TextureUsage.DOWNLOAD; + var glsl = getGlslDifferences(); + this.outputShape = outputShape; + this.userCode = "\n " + ENCODE_FLOAT_SNIPPET + "\n\n void main() {\n float x = getAAtOutCoords();\n " + glsl.output + " = encode_float(x);\n }\n "; + } + return EncodeFloatProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var EncodeFloatPackedProgram = /** @class */ (function () { + function EncodeFloatPackedProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = false; + this.outTexUsage = TextureUsage.DOWNLOAD; + var glsl = getGlslDifferences(); + this.outputShape = outputShape; + this.userCode = "\n " + ENCODE_FLOAT_SNIPPET + "\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n " + glsl.output + " = encode_float(x);\n }\n "; + } + return EncodeFloatPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var EncodeMatrixProgram = /** @class */ (function () { + function EncodeMatrixProgram(outputShape, texShape, inputIsUnsignedByte) { + if (inputIsUnsignedByte === void 0) { inputIsUnsignedByte = false; } + this.variableNames = ['A']; + var glsl = getGlslDifferences(); + var height = texShape[0], width = texShape[1]; + this.outputShape = outputShape; + var output = "result"; + if (inputIsUnsignedByte) { + output = "floor(result * 255. + 0.5)"; + } + this.userCode = "\n " + getFlatIndexFrom3D(outputShape) + "\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n int flatIndex = getFlatIndex(coords);\n int offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n int r = flatIndex / " + width + ";\n int c = imod(flatIndex, " + width + ");\n vec2 uv = (vec2(c, r) + halfCR) / vec2(" + width + ".0, " + height + ".0);\n vec4 values = " + glsl.texture2D + "(A, uv);\n\n float result;\n\n if(offset == 0) {\n result = values[0];\n } else if(offset == 1) {\n result = values[1];\n } else if(offset == 2) {\n result = values[2];\n } else {\n result = values[3];\n }\n\n " + glsl.output + " = vec4(" + output + ", 0., 0., 0.);\n }\n "; + } + return EncodeMatrixProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /* + This is how the shader encodes a tensor with shape = [2, 3, 5] + (indices are [batch, row, col]). + + 000|001 002|003 004|xxx 020|021 022|023 024|xxx + ------- ------- ------- ------- ------- ------- + 010|011 012|013 014|xxx xxx|xxx xxx|xxx xxx|xxx + + 100|101 102|103 104|xxx 120|121 122|123 124|xxx + ------- ------- ------- ------- ------- ------- + 110|111 112|113 114|xxx xxx|xxx xxx|xxx xxx|xxx + + Single texels contain only values from the same batch, and from adjacent rows + and columns. + */ + var EncodeMatrixPackedProgram = /** @class */ (function () { + function EncodeMatrixPackedProgram(outputShape, texShape, inputIsUnsignedByte) { + if (inputIsUnsignedByte === void 0) { inputIsUnsignedByte = false; } + this.variableNames = ['A']; + this.packedInputs = false; + this.packedOutput = true; + var glsl = getGlslDifferences(); + var height = texShape[0], width = texShape[1]; + this.outputShape = outputShape; + var mainLoop = ''; + var output = 'result'; + if (inputIsUnsignedByte) { + output = 'floor(result * 255. + 0.5)'; + } + for (var row = 0; row <= 1; row++) { + for (var col = 0; col <= 1; col++) { + var channel = row * 2 + col; + mainLoop += "\n localCoords = coords;\n if(localCoords[2] + " + col + " < " + outputShape[2] + ") {\n localCoords[2] += " + col + ";\n if(localCoords[1] + " + row + " < " + outputShape[1] + ") {\n localCoords[1] += " + row + ";\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n r = flatIndex / " + width + ";\n c = imod(flatIndex, " + width + ");\n uv = (vec2(c, r) + halfCR) / vec2(" + width + ".0, " + height + ".0);\n values = " + glsl.texture2D + "(A, uv);\n\n if(offset == 0) {\n result[" + channel + "] = values[0];\n } else if(offset == 1) {\n result[" + channel + "] = values[1];\n } else if(offset == 2) {\n result[" + channel + "] = values[2];\n } else {\n result[" + channel + "] = values[3];\n }\n }\n }\n "; + } + } + this.userCode = "\n " + getFlatIndexFrom3D(outputShape) + "\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n\n " + mainLoop + "\n\n " + glsl.output + " = " + output + ";\n }\n "; + } + return EncodeMatrixPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var COMPLEX_FFT = { + REAL: 'return real * expR - imag * expI;', + IMAG: 'return real * expI + imag * expR;' + }; + var FFTProgram = /** @class */ (function () { + function FFTProgram(op, inputShape, inverse) { + this.variableNames = ['real', 'imag']; + var innerDim = inputShape[1]; + this.outputShape = inputShape; + var exponentMultiplierSnippet = inverse ? "2.0 * " + Math.PI : "-2.0 * " + Math.PI; + var resultDenominator = inverse ? innerDim + ".0" : '1.0'; + this.userCode = "\n const float exponentMultiplier = " + exponentMultiplierSnippet + ";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n " + op + "\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float(" + innerDim + ");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < " + innerDim + "; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / " + resultDenominator + ";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "; + } + return FFTProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var FillProgram = /** @class */ (function () { + function FillProgram(shape, value) { + this.outputShape = []; + this.variableNames = ['x']; + this.outputShape = shape; + this.userCode = "\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "; + } + FillProgram.prototype.getCustomSetupFunc = function (value) { + var _this = this; + return function (gpgpu, webGLProgram) { + if (_this.valueLoc == null) { + _this.valueLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'value'); + } + gpgpu.gl.uniform1f(_this.valueLoc, value); + }; + }; + return FillProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var GatherProgram = /** @class */ (function () { + function GatherProgram(aShape, indicesLength, axis) { + this.variableNames = ['A', 'indices']; + var outputShape = aShape.slice(); + outputShape[axis] = indicesLength; + this.outputShape = outputShape; + this.rank = outputShape.length; + var dtype = getCoordsDataType(this.rank); + var sourceCoords = getSourceCoords$1(aShape, axis); + this.userCode = "\n void main() {\n " + dtype + " resRC = getOutputCoords();\n setOutput(getA(" + sourceCoords + "));\n }\n "; + } + return GatherProgram; + }()); + function getSourceCoords$1(aShape, axis) { + var rank = aShape.length; + if (rank > 4) { + throw Error("Gather for rank " + rank + " is not yet supported"); + } + if (rank === 1) { + return "int(getIndices(resRC))"; + } + var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w']; + var sourceCoords = []; + for (var i = 0; i < aShape.length; i++) { + if (i === axis) { + sourceCoords.push("int(getIndices(" + currentCoords[i] + "))"); + } + else { + sourceCoords.push("" + currentCoords[i]); + } + } + return sourceCoords.join(); + } + + var GatherNDProgram = /** @class */ (function () { + function GatherNDProgram(sliceDim, strides, shape) { + this.sliceDim = sliceDim; + this.strides = strides; + this.variableNames = ['x', 'indices']; + this.outputShape = shape; + var stridesType = getCoordsDataType(strides.length); + var dtype = getCoordsDataType(shape.length); + var strideString = this.sliceDim > 1 ? 'strides[j]' : 'strides'; + this.userCode = "\n " + stridesType + " strides = " + stridesType + "(" + this.strides + ");\n void main() {\n " + dtype + " coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < " + this.sliceDim + "; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * " + strideString + ";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "; + } + return GatherNDProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function createVertexShader$1(gl) { + var glsl = getGlslDifferences(); + var vertexShaderSource = glsl.version + "\n precision highp float;\n " + glsl.attribute + " vec3 clipSpacePos;\n " + glsl.attribute + " vec2 uv;\n " + glsl.varyingVs + " vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }"; + return createVertexShader(gl, vertexShaderSource); + } + function createVertexBuffer(gl) { + // [x y z u v] * [upper-left, lower-left, upper-right, lower-right] + var vertexArray = new Float32Array([-1, 1, 0, 0, 1, -1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, -1, 0, 1, 0]); + return createStaticVertexBuffer(gl, vertexArray); + } + function createIndexBuffer(gl) { + // OpenGL (and WebGL) have "CCW == front" winding + var triangleVertexIndices = new Uint16Array([0, 1, 2, 2, 1, 3]); + return createStaticIndexBuffer(gl, triangleVertexIndices); + } + function createAndConfigureTexture(gl, width, height, internalFormat, textureFormat, textureType) { + validateTextureSize(width, height); + var texture = createTexture(gl); + var tex2d = gl.TEXTURE_2D; + callAndCheck(gl, function () { return gl.bindTexture(tex2d, texture); }); + callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); }); + callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); }); + callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_MIN_FILTER, gl.NEAREST); }); + callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_MAG_FILTER, gl.NEAREST); }); + callAndCheck(gl, function () { return gl.texImage2D(tex2d, 0, internalFormat, width, height, 0, textureFormat, textureType, null); }); + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); }); + return texture; + } + function getInternalFormatForFloat32MatrixTexture(textureConfig) { + return textureConfig.internalFormatFloat; + } + function createFloat32MatrixTexture(gl, rows, columns, textureConfig) { + var _a = getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat32MatrixTexture(textureConfig), textureConfig.textureFormatFloat, gl.FLOAT); + } + function getInternalFormatForFloat16MatrixTexture(textureConfig) { + return textureConfig.internalFormatHalfFloat; + } + function createFloat16MatrixTexture(gl, rows, columns, textureConfig) { + var _a = getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat16MatrixTexture(textureConfig), textureConfig.textureFormatFloat, textureConfig.textureTypeHalfFloat); + } + function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig) { + return textureConfig.downloadTextureFormat; + } + function createUnsignedBytesMatrixTexture(gl, rows, columns, textureConfig) { + var _a = getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + return createAndConfigureTexture(gl, width, height, getInternalFormatForUnsignedBytesMatrixTexture(textureConfig), gl.RGBA, gl.UNSIGNED_BYTE); + } + function getInternalFormatForPackedMatrixTexture(textureConfig) { + return textureConfig.internalFormatPackedFloat; + } + function createPackedMatrixTexture(gl, rows, columns, textureConfig) { + var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + return createAndConfigureTexture(gl, width, height, getInternalFormatForPackedMatrixTexture(textureConfig), gl.RGBA, gl.FLOAT); + } + function getInternalFormatForFloat16PackedMatrixTexture(textureConfig) { + return textureConfig.internalFormatPackedHalfFloat; + } + function createFloat16PackedMatrixTexture(gl, rows, columns, textureConfig) { + var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat16PackedMatrixTexture(textureConfig), gl.RGBA, textureConfig.textureTypeHalfFloat); + } + function bindVertexProgramAttributeStreams(gl, program, vertexBuffer) { + var posOffset = 0; // x is the first buffer element + var uvOffset = 3 * 4; // uv comes after [x y z] + var stride = (3 * 4) + (2 * 4); // xyz + uv, each entry is 4-byte float. + callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); }); + var success = bindVertexBufferToProgramAttribute(gl, program, 'clipSpacePos', vertexBuffer, 3, stride, posOffset); + return success && + bindVertexBufferToProgramAttribute(gl, program, 'uv', vertexBuffer, 2, stride, uvOffset); + } + function uploadDenseMatrixToTexture(gl, texture, width, height, data, textureConfig) { + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); }); + var dataForUpload, texelDataType, internalFormat; + if (data instanceof Uint8Array) { + dataForUpload = new Uint8Array(width * height * 4); + texelDataType = gl.UNSIGNED_BYTE; + internalFormat = gl.RGBA; + } + else { + dataForUpload = new Float32Array(width * height * 4); + texelDataType = gl.FLOAT; + internalFormat = textureConfig.internalFormatPackedFloat; + } + dataForUpload.set(data); + callAndCheck(gl, function () { return gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, width, height, 0, gl.RGBA, texelDataType, dataForUpload); }); + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); }); + } + function uploadPixelDataToTexture(gl, texture, pixels) { + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); }); + if (pixels.data instanceof Uint8Array) { + callAndCheck(gl, function () { return gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, pixels.width, pixels.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, pixels.data); }); + } + else { + callAndCheck(gl, function () { return gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, pixels); }); + } + callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); }); + } + function createBufferFromOutputTexture(gl2, rows, columns, textureConfig) { + // Create and bind the buffer. + var buffer = gl2.createBuffer(); + callAndCheck(gl2, function () { return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer); }); + // Initialize the buffer to the size of the texture in bytes. + var bytesPerFloat = 4; + var valuesPerTexel = 4; + var bufferSizeBytes = bytesPerFloat * valuesPerTexel * rows * columns; + callAndCheck(gl2, function () { return gl2.bufferData(gl2.PIXEL_PACK_BUFFER, bufferSizeBytes, gl2.STREAM_READ); }); + // Enqueue a command on the GPU command queue to copy of texture into the + // buffer. + callAndCheck(gl2, function () { return gl2.readPixels(0, 0, columns, rows, gl2.RGBA, gl2.FLOAT, 0); }); + callAndCheck(gl2, function () { return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null); }); + return buffer; + } + function downloadFloat32MatrixFromBuffer(gl, buffer, size) { + var gl2 = gl; + var downloadTarget = new Float32Array(size); + gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer); + gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER, 0, downloadTarget); + gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null); + return downloadTarget; + } + function downloadByteEncodedFloatMatrixFromOutputTexture(gl, rows, columns, textureConfig) { + var _a = getUnpackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1]; + var numChannels = 4; + var downloadTarget = new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows * columns, numChannels)); + callAndCheck(gl, function () { return gl.readPixels(0, 0, w, h, textureConfig.downloadTextureFormat, gl.UNSIGNED_BYTE, downloadTarget); }); + // By wrapping the buffer in a Float32Array, we use native browser IEEE 754 + // decoding of the 4 bytes that back each 32 bit float. + return new Float32Array(downloadTarget.buffer); + } + function downloadPackedMatrixFromBuffer(gl, buffer, batch, rows, cols, physicalRows, physicalCols, textureConfig) { + var gl2 = gl; + var downloadTarget = new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows, physicalCols)); + gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer); + gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER, 0, downloadTarget); + gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null); + return downloadTarget; + } + function downloadMatrixFromPackedOutputTexture(gl, physicalRows, physicalCols) { + var packedRGBA = new Float32Array(physicalRows * physicalCols * 4); + callAndCheck(gl, function () { return gl.readPixels(0, 0, physicalCols, physicalRows, gl.RGBA, gl.FLOAT, packedRGBA); }); + return packedRGBA; + } + + var gpgpu_util = { + __proto__: null, + createVertexShader: createVertexShader$1, + createVertexBuffer: createVertexBuffer, + createIndexBuffer: createIndexBuffer, + getInternalFormatForFloat32MatrixTexture: getInternalFormatForFloat32MatrixTexture, + createFloat32MatrixTexture: createFloat32MatrixTexture, + getInternalFormatForFloat16MatrixTexture: getInternalFormatForFloat16MatrixTexture, + createFloat16MatrixTexture: createFloat16MatrixTexture, + getInternalFormatForUnsignedBytesMatrixTexture: getInternalFormatForUnsignedBytesMatrixTexture, + createUnsignedBytesMatrixTexture: createUnsignedBytesMatrixTexture, + getInternalFormatForPackedMatrixTexture: getInternalFormatForPackedMatrixTexture, + createPackedMatrixTexture: createPackedMatrixTexture, + getInternalFormatForFloat16PackedMatrixTexture: getInternalFormatForFloat16PackedMatrixTexture, + createFloat16PackedMatrixTexture: createFloat16PackedMatrixTexture, + bindVertexProgramAttributeStreams: bindVertexProgramAttributeStreams, + uploadDenseMatrixToTexture: uploadDenseMatrixToTexture, + uploadPixelDataToTexture: uploadPixelDataToTexture, + createBufferFromOutputTexture: createBufferFromOutputTexture, + downloadFloat32MatrixFromBuffer: downloadFloat32MatrixFromBuffer, + downloadByteEncodedFloatMatrixFromOutputTexture: downloadByteEncodedFloatMatrixFromOutputTexture, + downloadPackedMatrixFromBuffer: downloadPackedMatrixFromBuffer, + downloadMatrixFromPackedOutputTexture: downloadMatrixFromPackedOutputTexture + }; + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var GPGPUContext = /** @class */ (function () { + function GPGPUContext(gl) { + this.outputTexture = null; + this.program = null; + this.disposed = false; + this.vertexAttrsAreBound = false; + this.itemsToPoll = []; + var glVersion = tf.env().getNumber('WEBGL_VERSION'); + if (gl != null) { + this.gl = gl; + setWebGLContext(glVersion, gl); + } + else { + this.gl = getWebGLContext(glVersion); + } + // WebGL 2.0 enables texture floats without an extension. + var COLOR_BUFFER_FLOAT = 'WEBGL_color_buffer_float'; + var COLOR_BUFFER_HALF_FLOAT = 'EXT_color_buffer_half_float'; + if (tf.env().getNumber('WEBGL_VERSION') === 1) { + var TEXTURE_FLOAT = 'OES_texture_float'; + var TEXTURE_HALF_FLOAT = 'OES_texture_half_float'; + this.textureFloatExtension = + getExtensionOrThrow(this.gl, TEXTURE_FLOAT); + if (hasExtension(this.gl, TEXTURE_HALF_FLOAT)) { + this.textureHalfFloatExtension = + getExtensionOrThrow(this.gl, TEXTURE_HALF_FLOAT); + } + else if (tf.env().get('WEBGL_FORCE_F16_TEXTURES')) { + throw new Error('GL context does not support half float textures, yet the ' + + 'environment flag WEBGL_FORCE_F16_TEXTURES is set to true.'); + } + this.colorBufferFloatExtension = this.gl.getExtension(COLOR_BUFFER_FLOAT); + if (hasExtension(this.gl, COLOR_BUFFER_HALF_FLOAT)) { + this.colorBufferHalfFloatExtension = + getExtensionOrThrow(this.gl, COLOR_BUFFER_HALF_FLOAT); + } + else if (tf.env().get('WEBGL_FORCE_F16_TEXTURES')) { + throw new Error('GL context does not support color renderable half floats, yet ' + + 'the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.'); + } + } + else { + COLOR_BUFFER_FLOAT = 'EXT_color_buffer_float'; + if (hasExtension(this.gl, COLOR_BUFFER_FLOAT)) { + this.colorBufferFloatExtension = + this.gl.getExtension(COLOR_BUFFER_FLOAT); + } + else if (hasExtension(this.gl, COLOR_BUFFER_HALF_FLOAT)) { + this.colorBufferHalfFloatExtension = + this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT); + } + else { + throw new Error('GL context does not support color renderable floats'); + } + } + this.vertexBuffer = createVertexBuffer(this.gl); + this.indexBuffer = createIndexBuffer(this.gl); + this.framebuffer = createFramebuffer(this.gl); + this.textureConfig = + getTextureConfig(this.gl, this.textureHalfFloatExtension); + } + Object.defineProperty(GPGPUContext.prototype, "debug", { + get: function () { + return tf.env().getBool('DEBUG'); + }, + enumerable: true, + configurable: true + }); + GPGPUContext.prototype.dispose = function () { + var _this = this; + if (this.disposed) { + return; + } + if (this.program != null) { + console.warn('Disposing a GPGPUContext that still has a bound WebGLProgram.' + + ' This is probably a resource leak, delete the program with ' + + 'GPGPUContext.deleteProgram before disposing.'); + } + if (this.outputTexture != null) { + console.warn('Disposing a GPGPUContext that still has a bound output matrix ' + + 'texture. This is probably a resource leak, delete the output ' + + 'matrix texture with GPGPUContext.deleteMatrixTexture before ' + + 'disposing.'); + } + var gl = this.gl; + callAndCheck(gl, function () { return gl.finish(); }); + callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, null); }); + callAndCheck(gl, function () { return gl.deleteFramebuffer(_this.framebuffer); }); + callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, null); }); + callAndCheck(gl, function () { return gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); }); + callAndCheck(gl, function () { return gl.deleteBuffer(_this.indexBuffer); }); + this.disposed = true; + }; + GPGPUContext.prototype.createFloat32MatrixTexture = function (rows, columns) { + this.throwIfDisposed(); + return createFloat32MatrixTexture(this.gl, rows, columns, this.textureConfig); + }; + GPGPUContext.prototype.createFloat16MatrixTexture = function (rows, columns) { + this.throwIfDisposed(); + return createFloat16MatrixTexture(this.gl, rows, columns, this.textureConfig); + }; + GPGPUContext.prototype.createUnsignedBytesMatrixTexture = function (rows, columns) { + this.throwIfDisposed(); + return createUnsignedBytesMatrixTexture(this.gl, rows, columns, this.textureConfig); + }; + GPGPUContext.prototype.uploadPixelDataToTexture = function (texture, pixels) { + this.throwIfDisposed(); + uploadPixelDataToTexture(this.gl, texture, pixels); + }; + GPGPUContext.prototype.uploadDenseMatrixToTexture = function (texture, width, height, data) { + this.throwIfDisposed(); + uploadDenseMatrixToTexture(this.gl, texture, width, height, data, this.textureConfig); + }; + GPGPUContext.prototype.createFloat16PackedMatrixTexture = function (rows, columns) { + this.throwIfDisposed(); + return createFloat16PackedMatrixTexture(this.gl, rows, columns, this.textureConfig); + }; + GPGPUContext.prototype.createPackedMatrixTexture = function (rows, columns) { + this.throwIfDisposed(); + return createPackedMatrixTexture(this.gl, rows, columns, this.textureConfig); + }; + GPGPUContext.prototype.deleteMatrixTexture = function (texture) { + var _this = this; + this.throwIfDisposed(); + if (this.outputTexture === texture) { + unbindColorTextureFromFramebuffer(this.gl, this.framebuffer); + this.outputTexture = null; + } + callAndCheck(this.gl, function () { return _this.gl.deleteTexture(texture); }); + }; + GPGPUContext.prototype.downloadByteEncodedFloatMatrixFromOutputTexture = function (texture, rows, columns) { + var _this = this; + return this.downloadMatrixDriver(texture, function () { return downloadByteEncodedFloatMatrixFromOutputTexture(_this.gl, rows, columns, _this.textureConfig); }); + }; + GPGPUContext.prototype.downloadPackedMatrixFromBuffer = function (buffer, batch, rows, columns, physicalRows, physicalCols) { + return downloadPackedMatrixFromBuffer(this.gl, buffer, batch, rows, columns, physicalRows, physicalCols, this.textureConfig); + }; + GPGPUContext.prototype.downloadFloat32MatrixFromBuffer = function (buffer, size) { + return downloadFloat32MatrixFromBuffer(this.gl, buffer, size); + }; + GPGPUContext.prototype.createBufferFromTexture = function (texture, rows, columns) { + this.bindTextureToFrameBuffer(texture); + var result = createBufferFromOutputTexture(this.gl, rows, columns, this.textureConfig); + this.unbindTextureToFrameBuffer(); + return result; + }; + GPGPUContext.prototype.createAndWaitForFence = function () { + var fenceContext = this.createFence(this.gl); + return this.pollFence(fenceContext); + }; + GPGPUContext.prototype.createFence = function (gl) { + var _this = this; + var query; + var isFencePassed; + if (tf.env().getBool('WEBGL_FENCE_API_ENABLED')) { + var gl2_1 = gl; + var sync_1 = gl2_1.fenceSync(gl2_1.SYNC_GPU_COMMANDS_COMPLETE, 0); + gl.flush(); + isFencePassed = function () { + var status = gl2_1.clientWaitSync(sync_1, 0, 0); + return status === gl2_1.ALREADY_SIGNALED || + status === gl2_1.CONDITION_SATISFIED; + }; + query = sync_1; + } + else if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0) { + query = this.beginQuery(); + this.endQuery(); + isFencePassed = function () { return _this.isQueryAvailable(query, tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION')); }; + } + else { + // If we have no way to fence, return true immediately. This will fire in + // WebGL 1.0 when there is no disjoint query timer. In this case, because + // the fence passes immediately, we'll immediately ask for a download of + // the texture, which will cause the UI thread to hang. + isFencePassed = function () { return true; }; + } + return { query: query, isFencePassed: isFencePassed }; + }; + GPGPUContext.prototype.downloadMatrixFromPackedTexture = function (texture, physicalRows, physicalCols) { + var _this = this; + return this.downloadMatrixDriver(texture, function () { return downloadMatrixFromPackedOutputTexture(_this.gl, physicalRows, physicalCols); }); + }; + GPGPUContext.prototype.createProgram = function (fragmentShaderSource) { + this.throwIfDisposed(); + var gl = this.gl; + var fragmentShader = createFragmentShader(gl, fragmentShaderSource); + var vertexShader = createVertexShader$1(gl); + var program = createProgram(gl); + callAndCheck(gl, function () { return gl.attachShader(program, vertexShader); }); + callAndCheck(gl, function () { return gl.attachShader(program, fragmentShader); }); + linkProgram(gl, program); + if (this.debug) { + validateProgram(gl, program); + } + if (!this.vertexAttrsAreBound) { + this.setProgram(program); + this.vertexAttrsAreBound = bindVertexProgramAttributeStreams(gl, this.program, this.vertexBuffer); + } + return program; + }; + GPGPUContext.prototype.deleteProgram = function (program) { + var _this = this; + this.throwIfDisposed(); + if (program === this.program) { + this.program = null; + } + if (program != null) { + callAndCheck(this.gl, function () { return _this.gl.deleteProgram(program); }); + } + }; + GPGPUContext.prototype.setProgram = function (program) { + var _this = this; + this.throwIfDisposed(); + this.program = program; + if ((this.program != null) && this.debug) { + validateProgram(this.gl, this.program); + } + callAndCheck(this.gl, function () { return _this.gl.useProgram(program); }); + }; + GPGPUContext.prototype.getUniformLocation = function (program, uniformName, shouldThrow) { + if (shouldThrow === void 0) { shouldThrow = true; } + this.throwIfDisposed(); + if (shouldThrow) { + return getProgramUniformLocationOrThrow(this.gl, program, uniformName); + } + else { + return getProgramUniformLocation(this.gl, program, uniformName); + } + }; + GPGPUContext.prototype.getAttributeLocation = function (program, attribute) { + var _this = this; + this.throwIfDisposed(); + return callAndCheck(this.gl, function () { return _this.gl.getAttribLocation(program, attribute); }); + }; + GPGPUContext.prototype.getUniformLocationNoThrow = function (program, uniformName) { + this.throwIfDisposed(); + return this.gl.getUniformLocation(program, uniformName); + }; + GPGPUContext.prototype.setInputMatrixTexture = function (inputMatrixTexture, uniformLocation, textureUnit) { + this.throwIfDisposed(); + this.throwIfNoProgram(); + bindTextureToProgramUniformSampler(this.gl, inputMatrixTexture, uniformLocation, textureUnit); + }; + GPGPUContext.prototype.setOutputMatrixTexture = function (outputMatrixTexture, rows, columns) { + this.setOutputMatrixTextureDriver(outputMatrixTexture, columns, rows); + }; + GPGPUContext.prototype.setOutputPackedMatrixTexture = function (outputPackedMatrixTexture, rows, columns) { + this.throwIfDisposed(); + var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1]; + this.setOutputMatrixTextureDriver(outputPackedMatrixTexture, width, height); + }; + GPGPUContext.prototype.setOutputMatrixWriteRegion = function (startRow, numRows, startColumn, numColumns) { + this.setOutputMatrixWriteRegionDriver(startColumn, startRow, numColumns, numRows); + }; + GPGPUContext.prototype.setOutputPackedMatrixWriteRegion = function (startRow, numRows, startColumn, numColumns) { + throw new Error('setOutputPackedMatrixWriteRegion not implemented.'); + }; + GPGPUContext.prototype.debugValidate = function () { + if (this.program != null) { + validateProgram(this.gl, this.program); + } + validateFramebuffer(this.gl); + }; + GPGPUContext.prototype.executeProgram = function () { + this.throwIfDisposed(); + this.throwIfNoProgram(); + var gl = this.gl; + if (this.debug) { + this.debugValidate(); + } + callAndCheck(gl, function () { return gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0); }); + }; + GPGPUContext.prototype.blockUntilAllProgramsCompleted = function () { + var _this = this; + this.throwIfDisposed(); + callAndCheck(this.gl, function () { return _this.gl.finish(); }); + }; + GPGPUContext.prototype.getQueryTimerExtension = function () { + if (this.disjointQueryTimerExtension == null) { + this.disjointQueryTimerExtension = + getExtensionOrThrow(this.gl, tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2 ? + 'EXT_disjoint_timer_query_webgl2' : + 'EXT_disjoint_timer_query'); + } + return this.disjointQueryTimerExtension; + }; + GPGPUContext.prototype.getQueryTimerExtensionWebGL2 = function () { + return this.getQueryTimerExtension(); + }; + GPGPUContext.prototype.getQueryTimerExtensionWebGL1 = function () { + return this.getQueryTimerExtension(); + }; + GPGPUContext.prototype.beginQuery = function () { + if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2) { + var gl2 = this.gl; + var ext_1 = this.getQueryTimerExtensionWebGL2(); + var query_1 = gl2.createQuery(); + gl2.beginQuery(ext_1.TIME_ELAPSED_EXT, query_1); + return query_1; + } + var ext = this.getQueryTimerExtensionWebGL1(); + var query = ext.createQueryEXT(); + ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, query); + return query; + }; + GPGPUContext.prototype.endQuery = function () { + if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2) { + var gl2 = this.gl; + var ext_2 = this.getQueryTimerExtensionWebGL2(); + gl2.endQuery(ext_2.TIME_ELAPSED_EXT); + return; + } + var ext = this.getQueryTimerExtensionWebGL1(); + ext.endQueryEXT(ext.TIME_ELAPSED_EXT); + }; + GPGPUContext.prototype.waitForQueryAndGetTime = function (query) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, tf.util.repeatedTry(function () { return _this.disposed || // while testing contexts are created / disposed + // in rapid succession, so without this check we + // may poll for the query timer indefinitely + _this.isQueryAvailable(query, tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION')); })]; + case 1: + _a.sent(); + return [2 /*return*/, this.getQueryTime(query, tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION'))]; + } + }); + }); + }; + GPGPUContext.prototype.getQueryTime = function (query, queryTimerVersion) { + if (queryTimerVersion === 0) { + return null; + } + if (queryTimerVersion === 2) { + var gl2 = this.gl; + var timeElapsedNanos = gl2.getQueryParameter(query, gl2.QUERY_RESULT); + // Return milliseconds. + return timeElapsedNanos / 1000000; + } + else { + var ext = this.getQueryTimerExtensionWebGL1(); + var timeElapsedNanos = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_EXT); + // Return milliseconds. + return timeElapsedNanos / 1000000; + } + }; + GPGPUContext.prototype.isQueryAvailable = function (query, queryTimerVersion) { + if (queryTimerVersion === 0) { + return true; + } + if (queryTimerVersion === 2) { + var gl2 = this.gl; + var ext = this.getQueryTimerExtensionWebGL2(); + var available = gl2.getQueryParameter(query, gl2.QUERY_RESULT_AVAILABLE); + if (this.disjoint == null) { + this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT); + } + return available && !this.disjoint; + } + else { + var ext = this.getQueryTimerExtensionWebGL1(); + var available = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_AVAILABLE_EXT); + if (this.disjoint == null) { + this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT); + } + return available && !this.disjoint; + } + }; + GPGPUContext.prototype.pollFence = function (fenceContext) { + var _this = this; + return new Promise(function (resolve) { + _this.addItemToPoll(function () { return fenceContext.isFencePassed(); }, function () { return resolve(); }); + }); + }; + GPGPUContext.prototype.pollItems = function () { + // Find the last query that has finished. + var index = linearSearchLastTrue(this.itemsToPoll.map(function (x) { return x.isDoneFn; })); + for (var i = 0; i <= index; ++i) { + var resolveFn = this.itemsToPoll[i].resolveFn; + resolveFn(); + } + this.itemsToPoll = this.itemsToPoll.slice(index + 1); + }; + GPGPUContext.prototype.addItemToPoll = function (isDoneFn, resolveFn) { + var _this = this; + this.itemsToPoll.push({ isDoneFn: isDoneFn, resolveFn: resolveFn }); + if (this.itemsToPoll.length > 1) { + // We already have a running loop that polls. + return; + } + // Start a new loop that polls. + tf.util.repeatedTry(function () { + _this.pollItems(); + // End the loop if no more items to poll. + return _this.itemsToPoll.length === 0; + }); + }; + GPGPUContext.prototype.bindTextureToFrameBuffer = function (texture) { + this.throwIfDisposed(); + bindColorTextureToFramebuffer(this.gl, texture, this.framebuffer); + if (this.debug) { + validateFramebuffer(this.gl); + } + }; + GPGPUContext.prototype.unbindTextureToFrameBuffer = function () { + if (this.outputTexture != null) { + bindColorTextureToFramebuffer(this.gl, this.outputTexture, this.framebuffer); + if (this.debug) { + validateFramebuffer(this.gl); + } + } + else { + unbindColorTextureFromFramebuffer(this.gl, this.framebuffer); + } + }; + GPGPUContext.prototype.downloadMatrixDriver = function (texture, downloadAndDecode) { + this.bindTextureToFrameBuffer(texture); + var result = downloadAndDecode(); + this.unbindTextureToFrameBuffer(); + return result; + }; + GPGPUContext.prototype.setOutputMatrixTextureDriver = function (outputMatrixTextureMaybePacked, width, height) { + this.throwIfDisposed(); + var gl = this.gl; + bindColorTextureToFramebuffer(gl, outputMatrixTextureMaybePacked, this.framebuffer); + if (this.debug) { + validateFramebuffer(gl); + } + this.outputTexture = outputMatrixTextureMaybePacked; + callAndCheck(gl, function () { return gl.viewport(0, 0, width, height); }); + callAndCheck(gl, function () { return gl.scissor(0, 0, width, height); }); + }; + GPGPUContext.prototype.setOutputMatrixWriteRegionDriver = function (x, y, width, height) { + var _this = this; + this.throwIfDisposed(); + callAndCheck(this.gl, function () { return _this.gl.scissor(x, y, width, height); }); + }; + GPGPUContext.prototype.throwIfDisposed = function () { + if (this.disposed) { + throw new Error('Attempted to use disposed GPGPUContext.'); + } + }; + GPGPUContext.prototype.throwIfNoProgram = function () { + if (this.program == null) { + throw new Error('No GPU program is currently set.'); + } + }; + return GPGPUContext; + }()); + /** + * Finds the index of the last true element using linear search. + * Note: We can't do binary search because Chrome expects us to explicitly + * test all fences before download: + * https://github.com/tensorflow/tfjs/issues/1145 + */ + function linearSearchLastTrue(arr) { + var i = 0; + for (; i < arr.length; ++i) { + var isDone = arr[i](); + if (!isDone) { + break; + } + } + return i - 1; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function compileProgram(gpgpu, program, inputs, output) { + var userCode = program.userCode; + var inputInfos = inputs.map(function (input, i) { + var shapeInfo = { + logicalShape: input.shape, + texShape: input.isUniform ? null : input.texData.texShape, + isUniform: input.isUniform, + isPacked: input.isUniform ? false : input.texData.isPacked, + flatOffset: null + }; + if (input.texData != null && input.texData.slice != null && + input.texData.slice.flatOffset > 0) { + shapeInfo.flatOffset = input.texData.slice.flatOffset; + } + return { name: program.variableNames[i], shapeInfo: shapeInfo }; + }); + var inShapeInfos = inputInfos.map(function (x) { return x.shapeInfo; }); + var outShapeInfo = { + logicalShape: output.shape, + texShape: output.texData.texShape, + isUniform: false, + isPacked: output.texData.isPacked, + flatOffset: null + }; + var source = makeShader(inputInfos, outShapeInfo, userCode, program.packedInputs); + var webGLProgram = gpgpu.createProgram(source); + // Add special uniforms (NAN, INFINITY) + var infLoc = null; + var nanLoc = gpgpu.getUniformLocation(webGLProgram, 'NAN', false); + if (tf.env().getNumber('WEBGL_VERSION') === 1) { + infLoc = gpgpu.getUniformLocation(webGLProgram, 'INFINITY', false); + } + // Add user-defined uniforms + var uniformLocations = {}; + for (var i = 0; i < program.variableNames.length; i++) { + var varName = program.variableNames[i]; + var shouldThrow = false; + uniformLocations[varName] = + gpgpu.getUniformLocation(webGLProgram, varName, shouldThrow); + uniformLocations["offset" + varName] = + gpgpu.getUniformLocation(webGLProgram, "offset" + varName, shouldThrow); + } + return { + program: program, + source: source, + webGLProgram: webGLProgram, + uniformLocations: uniformLocations, + inShapeInfos: inShapeInfos, + outShapeInfo: outShapeInfo, + infLoc: infLoc, + nanLoc: nanLoc, + }; + } + function validateBinaryAndProgram(shapeInfos, inputs) { + if (shapeInfos.length !== inputs.length) { + throw Error("Binary was compiled with " + shapeInfos.length + " inputs, but " + + ("was executed with " + inputs.length + " inputs")); + } + shapeInfos.forEach(function (s, i) { + var shapeA = s.logicalShape; + var input = inputs[i]; + var shapeB = input.shape; + if (!tf.util.arraysEqual(shapeA, shapeB)) { + throw Error("Binary was compiled with different shapes than " + + ("the current args. Shapes " + shapeA + " and " + shapeB + " must match")); + } + // The input is uploaded as uniform. + if (s.isUniform && input.isUniform) { + return; + } + var texShapeA = s.texShape; + var texShapeB = input.isUniform ? null : input.texData.texShape; + if (!tf.util.arraysEqual(texShapeA, texShapeB)) { + throw Error("Binary was compiled with different texture shapes than the" + + (" current args. Shape " + texShapeA + " and " + texShapeB + " must match")); + } + }); + } + function runProgram(gpgpu, binary, inputs, output, customSetup) { + validateBinaryAndProgram(binary.inShapeInfos, inputs); + validateBinaryAndProgram([binary.outShapeInfo], [output]); + var outTex = output.texData.texture; + var outTexShape = output.texData.texShape; + if (output.texData.isPacked) { + gpgpu.setOutputPackedMatrixTexture(outTex, outTexShape[0], outTexShape[1]); + } + else { + gpgpu.setOutputMatrixTexture(outTex, outTexShape[0], outTexShape[1]); + } + gpgpu.setProgram(binary.webGLProgram); + // Set special uniforms (NAN, INFINITY) + if (tf.env().getNumber('WEBGL_VERSION') === 1) { + if (binary.infLoc !== null) { + gpgpu.gl.uniform1f(binary.infLoc, Infinity); + } + } + if (binary.nanLoc !== null) { + gpgpu.gl.uniform1f(binary.nanLoc, NaN); + } + // Set user-defined inputs + inputs.forEach(function (input, i) { + var varName = binary.program.variableNames[i]; + var varLoc = binary.uniformLocations[varName]; + var varOffsetLoc = binary.uniformLocations["offset" + varName]; + if (varLoc == null) { + // The compiler inferred that this variable is not used in this shader. + return; + } + if (input.isUniform) { + // Upload the values of the tensor as uniform. + if (tf.util.sizeFromShape(input.shape) < 2) { + gpgpu.gl.uniform1f(varLoc, input.uniformValues[0]); + } + else { + var vals = input.uniformValues; + if (!(vals instanceof Float32Array)) { + vals = new Float32Array(vals); + } + gpgpu.gl.uniform1fv(varLoc, vals); + } + return; + } + // If the input was sliced, upload the flat offset index. + if (input.texData.slice != null && varOffsetLoc != null) { + gpgpu.gl.uniform1i(varOffsetLoc, input.texData.slice.flatOffset); + } + gpgpu.setInputMatrixTexture(input.texData.texture, varLoc, i); + }); + if (customSetup != null) { + customSetup(gpgpu, binary.webGLProgram); + } + gpgpu.executeProgram(); + } + function makeShaderKey(program, inputs, output) { + var keyInputs = ''; + inputs.concat(output).forEach(function (x) { + var hasOffset = x.texData != null && x.texData.slice != null && + x.texData.slice.flatOffset > 0; + var texShape = x.isUniform ? 'uniform' : x.texData.texShape; + keyInputs += x.shape + "_" + texShape + "_" + hasOffset; + }); + var keyUserCode = program.userCode; + var key = program.constructor.name; + // Fast string concat. See https://jsperf.com/string-concatenation/14. + key += '_' + keyInputs + '_' + keyUserCode; + return key; + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Im2ColPackedProgram = /** @class */ (function () { + function Im2ColPackedProgram(outputShape, inputShape, convInfo) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = outputShape; + var filterWidth = convInfo.filterWidth, inChannels = convInfo.inChannels, strideWidth = convInfo.strideWidth, strideHeight = convInfo.strideHeight, padInfo = convInfo.padInfo, outWidth = convInfo.outWidth, dilationWidth = convInfo.dilationWidth, dilationHeight = convInfo.dilationHeight, dataFormat = convInfo.dataFormat; + var left = padInfo.left, top = padInfo.top; + var itemsPerBlockRow = inChannels * filterWidth; + var glsl = getGlslDifferences(); + var isChannelsLast = dataFormat === 'channelsLast'; + var rowDim = isChannelsLast ? 0 : 1; + var colDim = isChannelsLast ? 1 : 2; + var unrolled = ""; + for (var row = 0; row <= 1; row++) { + for (var col = 0; col <= 1; col++) { + unrolled += "\n blockIndex = rc.y + " + col + ";\n pos = rc.x + " + row + ";\n\n if(blockIndex < " + outputShape[1] + " && pos < " + outputShape[0] + ") {\n offsetY = int(blockIndex / (" + outWidth + ")) * " + strideHeight + " - " + top + ";\n d0 = offsetY + " + dilationHeight + " * (pos / " + itemsPerBlockRow + ");\n\n if(d0 < " + inputShape[rowDim] + " && d0 >= 0) {\n\n offsetX = int(mod(float(blockIndex), " + outWidth + ".) * " + strideWidth + ". - " + left + ".);\n d1 = offsetX + " + dilationWidth + " * (int(mod(float(pos), " + itemsPerBlockRow + ".) / " + inChannels + ".));\n\n if(d1 < " + inputShape[colDim] + " && d1 >= 0) {\n\n ch = int(mod(float(pos), " + inChannels + ".));\n\n if (" + isChannelsLast + ") {\n innerDims = vec2(d1, ch);\n result[" + (row * 2 + col) + "] = getChannel(\n getA(d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result[" + (row * 2 + col) + "] = getChannel(\n getA(ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n "; + } + } + this.userCode = "\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n " + unrolled + "\n\n " + glsl.output + " = result;\n }\n "; + } + return Im2ColPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var LRNProgram = /** @class */ (function () { + function LRNProgram(xShape, radius, bias, alpha, beta) { + this.variableNames = ['x']; + this.outputShape = []; + var rad = radius; + var maxD = xShape[3] - 1; + this.outputShape = xShape; + // optimize pow(bias + alpha * sum, -beta) + // src: https://github.com/tensorflow/tensorflow/.. + // blob/26033a1644a9c4a5fbe3170ab2e864b6a4ccd4ca/.. + // tensorflow/core/kernels/mkl_lrn_op.cc#L320 + var powOperator; + var basis = "float(" + bias + ") + float(" + alpha + ") * sum"; + if (beta === 0.5) { + powOperator = "inversesqrt(" + basis + ")"; + } + else if (beta === 1.0) { + powOperator = "1.0/(" + basis + ")"; + } + else { + powOperator = "exp(log(" + basis + ") * float(-" + beta + "));"; + } + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -" + rad + "; j <= " + rad + "; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= " + maxD + ") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * " + powOperator + ";\n setOutput(val);\n }\n "; + } + return LRNProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var LRNGradProgram = /** @class */ (function () { + function LRNGradProgram(inputShape, depthRadius, bias, alpha, beta) { + this.variableNames = ['inputImage', 'outputImage', 'dy']; + this.outputShape = []; + this.outputShape = inputShape; + this.depth = inputShape[3]; + this.depthRadius = depthRadius; + this.bias = bias; + this.alpha = alpha; + this.beta = beta; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < " + this.depth + "; ++d) {\n int depthBegin = int(max(0.0, float(d - " + depthRadius + ")));\n int depthEnd = int(min(float(" + this.depth + "),\n float(d + " + depthRadius + " + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = " + this.depth + ";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float(" + alpha + ") * norm + float(" + bias + ");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float(" + alpha + ")\n * float(" + beta + ")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * " + beta + ");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "; + } + return LRNGradProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var LRNPackedProgram = /** @class */ (function () { + function LRNPackedProgram(xShape, radius, bias, alpha, beta) { + this.variableNames = ['x']; + this.outputShape = []; + this.packedInputs = true; + this.packedOutput = true; + var rad = radius; + var maxD = xShape[3] - 1; + this.outputShape = xShape; + // optimize pow(bias + alpha * sum, -beta) + // src: https://github.com/tensorflow/tensorflow/.. + // blob/26033a1644a9c4a5fbe3170ab2e864b6a4ccd4ca/.. + // tensorflow/core/kernels/mkl_lrn_op.cc#L320 + var powOperator; + var basis = "float(" + bias + ") + float(" + alpha + ") * sum"; + if (beta === 0.5) { + powOperator = "inversesqrt(" + basis + ")"; + } + else if (beta === 1.0) { + powOperator = "1.0/(" + basis + ")"; + } + else { + powOperator = "exp(log(" + basis + ") * float(-" + beta + "));"; + } + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < " + this.outputShape[3] + ";\n bool hasNextRow = c < " + this.outputShape[2] + ";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - " + rad + ";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - " + rad + "; j <= " + rad + "; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2(" + maxD + "));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * " + powOperator + ";\n setOutput(result);\n }\n "; + } + return LRNPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var MaxPool2DBackpropProgram = /** @class */ (function () { + function MaxPool2DBackpropProgram(convInfo) { + this.variableNames = ['dy', 'maxPos']; + this.outputShape = convInfo.inShape; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; + var padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; + var lastIndex = effectiveFilterHeight * effectiveFilterWidth - 1; + this.userCode = "\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < " + effectiveFilterWidth + "; wC++) {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = " + lastIndex + " - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * " + effectiveFilterWidth + " + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "; + } + return MaxPool2DBackpropProgram; + }()); + var MaxPool3DBackpropProgram = /** @class */ (function () { + function MaxPool3DBackpropProgram(convInfo) { + this.variableNames = ['dy', 'maxPos']; + this.outputShape = convInfo.inShape; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationDepth = convInfo.dilationDepth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var effectiveFilterDepth = convInfo.effectiveFilterDepth; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; + var padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; + var padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; + var lastIndex = effectiveFilterDepth * effectiveFilterHeight * effectiveFilterWidth - 1; + this.userCode = "\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < " + effectiveFilterDepth + ";\n wD += " + dilationDepth + ") {\n float dyD = float(dyDCorner + wD) / " + strideDepth + ".0;\n\n if (dyD < 0.0 || dyD >= " + convInfo.outDepth + ".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n float dyR = float(dyRCorner + wR) / " + strideHeight + ".0;\n\n if (dyR < 0.0 || dyR >= " + convInfo.outHeight + ".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < " + effectiveFilterWidth + ";\n wC += " + dilationWidth + ") {\n float dyC = float(dyCCorner + wC) / " + strideWidth + ".0;\n\n if (dyC < 0.0 || dyC >= " + convInfo.outWidth + ".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = " + lastIndex + " -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * " + effectiveFilterHeight + " * " + effectiveFilterWidth + " +\n wR * " + effectiveFilterWidth + " + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n "; + } + return MaxPool3DBackpropProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var MatMulPackedProgram = /** @class */ (function () { + function MatMulPackedProgram(aShape, outputShape, transposeA, transposeB, addBias, activation, hasPreluActivation) { + if (transposeA === void 0) { transposeA = false; } + if (transposeB === void 0) { transposeB = false; } + if (addBias === void 0) { addBias = false; } + if (activation === void 0) { activation = null; } + if (hasPreluActivation === void 0) { hasPreluActivation = false; } + this.variableNames = ['matrixA', 'matrixB']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = outputShape; + var sharedDim = transposeA ? aShape[1] : aShape[2]; + var sharedDimensionPacked = Math.ceil(sharedDim / 2); + var aSample = transposeA ? 'i * 2, rc.y' : 'rc.y, i * 2'; + var bSample = transposeB ? 'rc.z, i * 2' : 'i * 2, rc.z'; + var aSwizzle = transposeA ? ['a.xxyy', 'a.zzww'] : ['a.xxzz', 'a.yyww']; + var bSwizzle = transposeB ? ['b.xzxz', 'b.ywyw'] : ['b.xyxy', 'b.zwzw']; + var activationSnippet = '', applyActivationSnippet = ''; + if (activation) { + if (hasPreluActivation) { + activationSnippet = "vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n " + activation + "\n }"; + } + else { + activationSnippet = "vec4 activation(vec4 x) {\n " + activation + "\n }"; + } + applyActivationSnippet = "result = activation(result);"; + } + var addBiasSnippet = addBias ? 'result += getBiasAtOutCoords();' : ''; + if (addBias) { + this.variableNames.push('bias'); + } + if (hasPreluActivation) { + this.variableNames.push('preluActivationWeights'); + } + this.userCode = "\n " + activationSnippet + "\n\n const float sharedDimension = " + sharedDimensionPacked + ".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < " + sharedDimensionPacked + "; i++) {\n vec4 a = getMatrixA(rc.x, " + aSample + ");\n vec4 b = getMatrixB(rc.x, " + bSample + ");\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += (" + aSwizzle[0] + " * " + bSwizzle[0] + ");\n result += (" + aSwizzle[1] + " * " + bSwizzle[1] + ");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n " + addBiasSnippet + "\n\n " + applyActivationSnippet + "\n\n setOutput(result);\n }\n "; + } + return MatMulPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var MultinomialProgram = /** @class */ (function () { + function MultinomialProgram(batchSize, numOutcomes, numSamples) { + this.variableNames = ['probs']; + this.outputShape = [batchSize, numSamples]; + this.userCode = "\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < " + (numOutcomes - 1) + "; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float(" + (numOutcomes - 1) + "));\n }\n "; + } + MultinomialProgram.prototype.getCustomSetupFunc = function (seed) { + var _this = this; + return function (gpgpu, webGLProgram) { + if (_this.seedLoc == null) { + _this.seedLoc = gpgpu.getUniformLocation(webGLProgram, 'seed'); + } + gpgpu.gl.uniform1f(_this.seedLoc, seed); + }; + }; + return MultinomialProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var OneHotProgram = /** @class */ (function () { + function OneHotProgram(numIndices, depth, onValue, offValue) { + this.variableNames = ['indices']; + this.outputShape = [numIndices, depth]; + this.userCode = "\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float(" + offValue + "), float(" + onValue + "),\n float(index == coords.y)));\n }\n "; + } + return OneHotProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PackProgram = /** @class */ (function () { + function PackProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = false; + this.packedOutput = true; + // Only input / output 3D tensors. + this.outputShape = outputShape; + var rank = outputShape.length; + if (rank === 0) { + this.userCode = "\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n "; + } + else { + var channels = getChannels('rc', rank); + var dtype = getCoordsDataType(rank); + var outOfBoundsCondition = getOutOfBoundsCondition(rank, outputShape, channels); + var setup = getSetup(rank, outputShape[outputShape.length - 1], outputShape[outputShape.length - 2], channels); + var output = getOutput(outputShape, channels); + this.userCode = "\n void main() {\n " + dtype + " rc = getOutputCoords();\n\n if(" + outOfBoundsCondition + ") {\n setOutput(vec4(0));\n } else {\n " + setup + "\n\n setOutput(vec4(" + output + "));\n }\n }\n "; + } + } + return PackProgram; + }()); + function getSourceCoordsArr(rank, dims) { + var coords = []; + for (var row = 0; row <= 1; row++) { + for (var col = 0; col <= 1; col++) { + var coord = (row === 0 ? 'r' : 'rp1') + ", " + (col === 0 ? 'c' : 'cp1'); + for (var d = 2; d < rank; d++) { + coord = dims[dims.length - 1 - d] + "," + coord; + } + coords.push(coord); + } + } + return coords; + } + function getOutOfBoundsCondition(rank, shape, dims) { + if (rank === 1) { + return "rc > " + shape[0]; + } + var cond = ''; + for (var i = rank - 2; i < rank; i++) { + cond += dims[i] + " >= " + shape[i]; + if (i < rank - 1) { + cond += '||'; + } + } + return cond; + } + function getSetup(rank, cols, rows, dims) { + if (rank === 1) { + return ''; + } + var innerDims = dims.slice(-2); + return "\n int r = " + innerDims[0] + ";\n int c = " + innerDims[1] + ";\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= " + cols + ";\n bool rEdge = rp1 >= " + rows + ";\n "; + } + function getOutput(shape, dims) { + var rank = shape.length; + var sourceCoords = getSourceCoordsArr(rank, dims); + if (rank === 1) { + return "getA(rc),\n rc + 1 >= " + shape[0] + " ? 0. : getA(rc + 1),\n 0, 0"; + } + return "getA(" + sourceCoords[0] + "),\n cEdge ? 0. : getA(" + sourceCoords[1] + "),\n rEdge ? 0. : getA(" + sourceCoords[2] + "),\n rEdge || cEdge ? 0. : getA(" + sourceCoords[3] + ")"; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PadProgram = /** @class */ (function () { + function PadProgram(xShape, paddings, constantValue) { + this.variableNames = ['x']; + this.outputShape = paddings.map(function (p, i) { return p[0] /* beforePad */ + xShape[i] + p[1]; } /* afterPad */); + var rank = xShape.length; + var type = getCoordsDataType(rank); + var start = paddings.map(function (p) { return p[0]; }).join(','); + var end = paddings.map(function (p, i) { return p[0] + xShape[i]; }).join(','); + var unpackedCoords = ['coords[0]', 'coords[1]', 'coords[2]', 'coords[3]'].slice(0, rank); + if (rank === 1) { + this.userCode = "\n int start = " + start + ";\n int end = " + end + ";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float(" + constantValue + "));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "; + return; + } + this.userCode = "\n " + type + " start = " + type + "(" + start + ");\n " + type + " end = " + type + "(" + end + ");\n\n void main() {\n " + type + " outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float(" + constantValue + "));\n } else {\n " + type + " coords = outC - start;\n setOutput(getX(" + unpackedCoords + "));\n }\n }\n "; + } + return PadProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PadPackedProgram = /** @class */ (function () { + function PadPackedProgram(xShape, paddings, constantValue) { + this.variableNames = ['x']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = paddings.map(function (p, i) { return p[0] /* beforePad */ + xShape[i] + p[1]; } /* afterPad */); + var rank = xShape.length; + var dtype = getCoordsDataType(rank); + var start = paddings.map(function (p) { return p[0]; }).join(','); + var end = paddings.map(function (p, i) { return p[0] + xShape[i]; }).join(','); + var coords = getChannels('rc', rank); + var source = getChannels('source', rank); + var cLimit = coords[rank - 1] + " < " + this.outputShape[rank - 1]; + var innerDims = rank === 1 ? 'source' : "vec2(" + source.slice(-2).join() + ")"; + var componentSetup = [ + dtype + " rc = outputLoc;", coords[rank - 1] + " += 1;\n if(" + cLimit + ") {\n ", + rank === 1 ? '' : "}\n rc = outputLoc;\n " + coords[rank - 2] + " += 1;\n if(" + coords[rank - 2] + " < " + this.outputShape[rank - 2] + ") {", + rank === 1 ? '' : " " + coords[rank - 1] + " += 1;\n if(" + cLimit + ") {" + ]; + var paddingArea = rank === 1 ? + 'rc < start || rc >= end' : + 'any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))'; + var mainLoop = ''; + for (var i = 0, j = rank === 1 ? 2 : 4; i < j; i++) { + mainLoop += "\n " + componentSetup[i] + "\n if (" + paddingArea + ") {\n result[" + i + "] = float(" + constantValue + ");\n } else {\n " + dtype + " source = rc - start;\n result[" + i + "] = getChannel(getX(" + source.join() + "), " + innerDims + ");\n }\n "; + } + mainLoop += (rank === 1 ? "} " : "}}"); + this.userCode = "\n const " + dtype + " start = " + dtype + "(" + start + ");\n const " + dtype + " end = " + dtype + "(" + end + ");\n\n void main() {\n " + dtype + " outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n " + mainLoop + "\n setOutput(result);\n }\n "; + } + return PadPackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Pool2DProgram = /** @class */ (function () { + function Pool2DProgram(convInfo, poolType, computePositions, flattenPositions, includeBatchInIndex) { + if (flattenPositions === void 0) { flattenPositions = false; } + if (includeBatchInIndex === void 0) { includeBatchInIndex = false; } + this.variableNames = ['x']; + if (poolType === 'avg' && computePositions) { + throw new Error('Cannot compute positions for average pool.'); + } + var filterWidth = convInfo.filterWidth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + this.outputShape = convInfo.outShape; + var isAvgPool = poolType === 'avg'; + var batchFlattenPositionStr = "((batch * " + convInfo.inHeight + " + xR) * " + convInfo.inWidth + " + xC) * " + convInfo.inChannels + " + d"; + var flattenPositionStr = "(xR * " + convInfo.inWidth + " + xC) * " + convInfo.inChannels + " + d"; + var initializationValue = '0.0'; + if (!isAvgPool) { + // WebGL on Firefox Linux can't compile 1/0 so we do 1/eps. + initializationValue = '-1.0 / 1e-20'; + } + if (computePositions) { + var compareOp_1 = '>='; + this.userCode = "\n const ivec2 strides = ivec2(" + strideHeight + ", " + strideWidth + ");\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + effectiveFilterWidth + ";\n wC += " + dilationWidth + ") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value " + compareOp_1 + " currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = " + (flattenPositions ? (includeBatchInIndex ? batchFlattenPositionStr : + flattenPositionStr) : + "wR * " + effectiveFilterWidth + " + wC") + ";\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n "; + return; + } + var compareOp = 'max'; + var returnValue = poolType + "(" + poolType + "(" + poolType + "(" + + 'minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])'; + if (poolType === 'avg') { + returnValue = "avgValue / count"; + } + var filterWidthNearestVec4 = Math.floor(filterWidth / 4) * 4; + var filterWidthVec4Remainder = filterWidth % 4; + var updateSnippet = "\n if (" + isAvgPool + ") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = " + compareOp + "(values, minMaxValue);\n }\n "; + this.userCode = "\n const ivec2 strides = ivec2(" + strideHeight + ", " + strideWidth + ");\n const ivec2 pads = ivec2(" + padTop + ", " + padLeft + ");\n const float initializationValue = " + initializationValue + ";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4(" + initializationValue + ");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + filterWidthNearestVec4 + "; wC += 4) {\n int xC = xCCorner + wC * " + dilationWidth + ";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + " + dilationWidth + ", d),\n getValue(batch, xR, xC + 2 * " + dilationWidth + ", d),\n getValue(batch, xR, xC + 3 * " + dilationWidth + ", d)\n );\n\n " + updateSnippet + "\n }\n\n int xC = xCCorner + " + filterWidthNearestVec4 + ";\n if (" + (filterWidthVec4Remainder === 1) + ") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (filterWidthVec4Remainder === 2) + ") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + " + dilationWidth + ", d),\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (filterWidthVec4Remainder === 3) + ") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + " + dilationWidth + ", d),\n getValue(batch, xR, xC + 2 * " + dilationWidth + ", d),\n initializationValue\n );\n\n " + updateSnippet + "\n }\n }\n setOutput(" + returnValue + ");\n }\n "; + } + return Pool2DProgram; + }()); + var Pool3DProgram = /** @class */ (function () { + function Pool3DProgram(convInfo, poolType, computePositions, flattenPositions, includeBatchInIndex) { + if (flattenPositions === void 0) { flattenPositions = false; } + if (includeBatchInIndex === void 0) { includeBatchInIndex = false; } + this.variableNames = ['x']; + if (poolType === 'avg' && computePositions) { + throw new Error('Cannot compute positions for average pool.'); + } + var filterWidth = convInfo.filterWidth; + var strideDepth = convInfo.strideDepth; + var strideHeight = convInfo.strideHeight; + var strideWidth = convInfo.strideWidth; + var dilationDepth = convInfo.dilationDepth; + var dilationHeight = convInfo.dilationHeight; + var dilationWidth = convInfo.dilationWidth; + var effectiveFilterDepth = convInfo.effectiveFilterDepth; + var effectiveFilterHeight = convInfo.effectiveFilterHeight; + var effectiveFilterWidth = convInfo.effectiveFilterWidth; + var padFront = convInfo.padInfo.front; + var padTop = convInfo.padInfo.top; + var padLeft = convInfo.padInfo.left; + this.outputShape = convInfo.outShape; + var isAvgPool = poolType === 'avg'; + var initializationValue = '0.0'; + if (!isAvgPool) { + // WebGL on Firefox Linux can't compile 1/0 so we do 1/eps. + initializationValue = '-1.0 / 1e-20'; + } + if (computePositions) { + var compareOp_2 = '>='; + this.userCode = "\n const ivec3 strides =\n ivec3(" + strideDepth + ", " + strideHeight + ", " + strideWidth + ");\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < " + effectiveFilterDepth + ";\n wD += " + dilationDepth + ") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= " + convInfo.inDepth + ") {\n continue;\n }\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + effectiveFilterWidth + ";\n wC += " + dilationWidth + ") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value " + compareOp_2 + " currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = " + (flattenPositions ? + (includeBatchInIndex ? + "(((batch * " + convInfo.inDepth + " + xD) * " + convInfo.inHeight + " + xR) * " + convInfo.inWidth + " + xC) * " + convInfo.inChannels + " + ch" : + "((xD * " + convInfo.inHeight + " + xR) * " + convInfo.inWidth + " + xC) * " + convInfo.inChannels + " + ch") : + "wD * " + effectiveFilterHeight + " * " + effectiveFilterWidth + " +\n wR * " + effectiveFilterWidth + " + wC") + ";\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n "; + return; + } + var compareOp = 'max'; + var returnValue = poolType + "(" + poolType + "(" + poolType + "(" + + 'minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])'; + if (poolType === 'avg') { + returnValue = "avgValue / count"; + } + var filterWidthNearestVec4 = Math.floor(filterWidth / 4) * 4; + var filterWidthVec4Remainder = filterWidth % 4; + var updateSnippet = "\n if (" + isAvgPool + ") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = " + compareOp + "(values, minMaxValue);\n }\n "; + this.userCode = "\n const ivec3 strides =\n ivec3(" + strideDepth + ", " + strideHeight + ", " + strideWidth + ");\n const ivec3 pads = ivec3(" + padFront + ", " + padTop + ", " + padLeft + ");\n const float initializationValue = " + initializationValue + ";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= " + convInfo.inWidth + ") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4(" + initializationValue + ");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < " + effectiveFilterDepth + ";\n wD += " + dilationDepth + ") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= " + convInfo.inDepth + ") {\n continue;\n }\n\n for (int wR = 0; wR < " + effectiveFilterHeight + ";\n wR += " + dilationHeight + ") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= " + convInfo.inHeight + ") {\n continue;\n }\n\n for (int wC = 0; wC < " + filterWidthNearestVec4 + "; wC += 4) {\n int xC = xCCorner + wC * " + dilationWidth + ";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + " + dilationWidth + ", ch),\n getValue(batch, xD, xR, xC + 2 * " + dilationWidth + ", ch),\n getValue(batch, xD, xR, xC + 3 * " + dilationWidth + ", ch)\n );\n\n " + updateSnippet + "\n }\n\n int xC = xCCorner + " + filterWidthNearestVec4 + ";\n if (" + (filterWidthVec4Remainder === 1) + ") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (filterWidthVec4Remainder === 2) + ") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + " + dilationWidth + ", ch),\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (filterWidthVec4Remainder === 3) + ") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + " + dilationWidth + ", ch),\n getValue(batch, xD, xR, xC + 2 * " + dilationWidth + ", ch),\n initializationValue\n );\n\n " + updateSnippet + "\n }\n }\n setOutput(" + returnValue + ");\n }\n }\n "; + } + return Pool3DProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ReduceProgram = /** @class */ (function () { + function ReduceProgram(reduceInfo, reduceType) { + this.variableNames = ['x']; + var windowSize = reduceInfo.windowSize; + var batchSize = reduceInfo.batchSize; + var inSize = reduceInfo.inSize; + var outSize = Math.ceil(inSize / windowSize); + this.outputShape = [batchSize, outSize]; + var initializationValue = '0.0'; + var compareOp = ""; + if (reduceType === 'prod') { + initializationValue = '1.0'; + } + else if (reduceType === 'min') { + // WebGL on Firefox Linux can't compile 1/0 so we do 1/eps. + initializationValue = '1.0 / 1e-20'; + compareOp = "min"; + } + else if (reduceType === 'max') { + // WebGL on Firefox Linux can't compile 1/0 so we do 1/eps. + initializationValue = '-1.0 / 1e-20'; + compareOp = "max"; + } + var returnValue = reduceType + "(" + reduceType + "(" + reduceType + "(" + + 'minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])'; + if (reduceType === 'sum') { + returnValue = "sumValue"; + } + else if (reduceType === 'prod') { + returnValue = "prodValue"; + } + else if (reduceType === 'all') { + returnValue = "allValue"; + } + else if (reduceType === 'any') { + returnValue = "anyValue"; + } + var windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4; + var windowSizeVec4Remainder = windowSize % 4; + var updateSnippet = "\n if (" + (reduceType === 'sum') + ") {\n sumValue += dot(values, ones);\n } else if (" + (reduceType === 'prod') + ") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = " + compareOp + "(values, minMaxValue);\n }\n "; + var vecType = "vec4"; + if (reduceType === 'all') { + initializationValue = '1.0'; + updateSnippet = "\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n "; + vecType = "bvec4"; + } + else if (reduceType === 'any') { + initializationValue = '0.0'; + updateSnippet = "\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n "; + vecType = "bvec4"; + } + var checkOutOfBounds = ''; + if (inSize % windowSize > 0) { + checkOutOfBounds = "\n if (inIdx < 0 || inIdx >= " + inSize + ") {\n return initializationValue;\n }\n "; + } + this.userCode = "\n const float initializationValue = " + initializationValue + ";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n " + checkOutOfBounds + "\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * " + windowSize + ";\n\n vec4 minMaxValue = vec4(" + initializationValue + ");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < " + windowSizeNearestVec4 + "; i += 4) {\n int inIdx = inOffset + i;\n " + vecType + " values = " + vecType + "(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n " + updateSnippet + "\n }\n\n int inIdx = inOffset + " + windowSizeNearestVec4 + ";\n if (" + (windowSizeVec4Remainder === 1) + ") {\n " + vecType + " values = " + vecType + "(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (windowSizeVec4Remainder === 2) + ") {\n " + vecType + " values = " + vecType + "(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n " + updateSnippet + "\n } else if (" + (windowSizeVec4Remainder === 3) + ") {\n " + vecType + " values = " + vecType + "(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n " + updateSnippet + "\n }\n setOutput(" + returnValue + ");\n }\n "; + } + return ReduceProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ReshapePackedProgram = /** @class */ (function () { + function ReshapePackedProgram(outputShape, inputShape) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = outputShape; + var mainLoop = ""; + for (var i = 0; i < 4; i++) { + var thisRC = "thisRC = rc;"; + if (i % 2 === 1) { + thisRC += "thisRC.z += 1;"; + } + if (i > 1) { + thisRC += "thisRC.y += 1;"; + } + mainLoop += "\n " + thisRC + "\n " + (i > 0 ? "if(thisRC.y < rows && thisRC.z < cols){" : '') + "\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[" + i + "] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n " + (i > 0 ? '}' : '') + "\n "; + } + this.userCode = "\n " + getReshapedInputCoords(inputShape) + "\n " + getFlatIndexFrom3D(outputShape) + "\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = " + outputShape[1] + ";\n int cols = " + outputShape[2] + ";\n\n " + mainLoop + "\n\n setOutput(result);\n }\n "; + } + return ReshapePackedProgram; + }()); + function getReshapedInputCoords(shape) { + var coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd'], shape); + return "\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n " + coordsFromIndexSnippet + "\n return ivec3(r, c, d);\n }\n "; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ResizeBilinearBackpropProgram = /** @class */ (function () { + function ResizeBilinearBackpropProgram(dy, x, alignCorners) { + this.variableNames = ['dy']; + this.outputShape = []; + this.outputShape = x.shape; + var _a = x.shape, xHeight = _a[1], xWidth = _a[2]; + var _b = dy.shape, yHeight = _b[1], yWidth = _b[2]; + // In the backwards pass, we want to find the pixels that were generated for + // each pixel in the input image the forward pass and add the corresponding + // coefficient from dy to the gradient (with some interpolation). + var effectiveXSize = [ + (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight, + (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth + ]; + var effectiveYSize = [ + (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight, + (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth + ]; + var heightScale = effectiveXSize[0] / effectiveYSize[0]; + var widthScale = effectiveXSize[1] / effectiveYSize[1]; + var invHeightScale = 1 / heightScale; + var invWidthScale = 1 / widthScale; + // This defines the size of the window of values around a particular + // index in dy that we want to search for contributions to dx. + var winHeight = (Math.ceil(invHeightScale) * 2) + 2; + var winWidth = (Math.ceil(invWidthScale) * 2) + 2; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(" + heightScale + ");\n const float widthScale = float(" + widthScale + ");\n\n const float invHeightScale = float(" + invHeightScale + ");\n const float invWidthScale = float(" + invWidthScale + ");\n\n const int winHeight = int(" + winHeight + ");\n const int winWidth = int(" + winWidth + ");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= " + yHeight + ") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= " + yWidth + ") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), " + (xHeight - 1) + ".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), " + (xWidth - 1) + ".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "; + } + return ResizeBilinearBackpropProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ResizeBilinearProgram = /** @class */ (function () { + function ResizeBilinearProgram(inputShape, newHeight, newWidth, alignCorners) { + this.variableNames = ['A']; + this.outputShape = []; + var batch = inputShape[0], oldHeight = inputShape[1], oldWidth = inputShape[2], depth = inputShape[3]; + this.outputShape = [batch, newHeight, newWidth, depth]; + var effectiveInSize = [ + (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight, + (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth + ]; + var effectiveOutSize = [ + (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight, + (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth + ]; + this.userCode = "\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n " + effectiveInSize[0] / effectiveOutSize[0] + ",\n " + effectiveInSize[1] / effectiveOutSize[1] + ");\n const vec2 inputShapeRC = vec2(" + oldHeight + ".0, " + oldWidth + ".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "; + } + return ResizeBilinearProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ResizeBilinearPackedProgram = /** @class */ (function () { + function ResizeBilinearPackedProgram(inputShape, newHeight, newWidth, alignCorners) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = []; + var batch = inputShape[0], oldHeight = inputShape[1], oldWidth = inputShape[2], depth = inputShape[3]; + this.outputShape = [batch, newHeight, newWidth, depth]; + var effectiveInSize = [ + (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight, + (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth + ]; + var effectiveOutSize = [ + (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight, + (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth + ]; + this.userCode = "\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n " + effectiveInSize[0] / effectiveOutSize[0] + ",\n " + effectiveInSize[1] / effectiveOutSize[1] + ",\n " + effectiveInSize[1] / effectiveOutSize[1] + ");\n const vec3 inputShapeRC = vec3(" + oldHeight + ".0, " + oldWidth + ".0,\n " + oldWidth + ".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < " + (depth - 1) + ";\n bool hasNextRow = coords.z < " + (newWidth - 1) + ";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n "; + } + return ResizeBilinearPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ResizeNearestNeigborBackpropProgram = /** @class */ (function () { + function ResizeNearestNeigborBackpropProgram(dy, x, alignCorners) { + this.variableNames = ['dy']; + this.outputShape = []; + this.outputShape = x.shape; + var _a = x.shape, xHeight = _a[1], xWidth = _a[2]; + var _b = dy.shape, yHeight = _b[1], yWidth = _b[2]; + // In the backwards pass, we want to find the pixels that were generated for + // each pixel in the input image the forward pass and add the corresponding + // coefficient from dy to the gradient (with some interpolation). + var effectiveXSize = [ + (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight, + (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth + ]; + var effectiveYSize = [ + (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight, + (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth + ]; + var heightScale = effectiveXSize[0] / effectiveYSize[0]; + var widthScale = effectiveXSize[1] / effectiveYSize[1]; + var invHeightScale = 1 / heightScale; + var invWidthScale = 1 / widthScale; + // This defines the size of the window of values around a particular + // index in dy that we want to search for contributions to dx. + var winHeight = (Math.ceil(invHeightScale) * 2) + 2; + var winWidth = (Math.ceil(invWidthScale) * 2) + 2; + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(" + heightScale + ");\n const float widthScale = float(" + widthScale + ");\n\n const float invHeightScale = float(" + invHeightScale + ");\n const float invWidthScale = float(" + invWidthScale + ");\n\n const int winHeight = int(" + winHeight + ");\n const int winWidth = int(" + winWidth + ");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= " + yHeight + ") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= " + yWidth + ") {\n continue;\n }\n\n float sourceFracRow =\n float(" + effectiveXSize[0] + ") *\n (float(dyR) / float(" + effectiveYSize[0] + "));\n\n float sourceFracCol =\n float(" + effectiveXSize[1] + ") *\n (float(dyC) / float(" + effectiveYSize[1] + "));\n\n int sourceNearestRow = int(min(\n float(int(" + xHeight + ") - 1),\n " + alignCorners + " ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int(" + xWidth + ") - 1),\n " + alignCorners + " ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "; + } + return ResizeNearestNeigborBackpropProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ResizeNearestNeighborProgram = /** @class */ (function () { + function ResizeNearestNeighborProgram(inputShape, newHeight, newWidth, alignCorners) { + this.variableNames = ['A']; + this.outputShape = []; + var batch = inputShape[0], oldHeight = inputShape[1], oldWidth = inputShape[2], depth = inputShape[3]; + this.outputShape = [batch, newHeight, newWidth, depth]; + var effectiveInSize = [ + (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight, + (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth + ]; + var effectiveOutSize = [ + (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight, + (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth + ]; + // When align corners is false, we rounds the value with floor. + var roundBase = alignCorners ? '0.5' : '0.0'; + this.userCode = "\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n " + effectiveInSize[0] / effectiveOutSize[0] + ",\n " + effectiveInSize[1] / effectiveOutSize[1] + ");\n const vec2 inputShapeRC = vec2(" + oldHeight + ".0, " + oldWidth + ".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + " + roundBase + ")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "; + } + return ResizeNearestNeighborProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ReverseProgram = /** @class */ (function () { + function ReverseProgram(xShape, axis) { + this.variableNames = ['x']; + var rank = xShape.length; + if (rank > 4) { + throw new Error("WebGL backend: Reverse of rank-" + rank + " tensor is not yet supported"); + } + this.outputShape = xShape; + if (rank === 1) { + this.userCode = "\n void main() {\n int coord = getOutputCoords();\n setOutput(getX(" + xShape[0] + " - coord - 1));\n }\n "; + return; + } + var getInCoord = function (i) { + if (axis.indexOf(i) !== -1 && xShape[i] !== 1) { + return xShape[i] + " - coords[" + i + "] - 1"; + } + return "coords[" + i + "]"; + }; + var inCoords = xShape.map(function (_, i) { return getInCoord(i); }).join(','); + var type = getCoordsDataType(rank); + this.userCode = "\n void main() {\n " + type + " coords = getOutputCoords();\n setOutput(getX(" + inCoords + "));\n }\n "; + } + return ReverseProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ReversePackedProgram = /** @class */ (function () { + function ReversePackedProgram(xShape, axis) { + this.variableNames = ['x']; + this.packedInputs = true; + this.packedOutput = true; + var rank = xShape.length; + if (rank > 4) { + throw new Error("WebGL backend: Reverse of rank-" + rank + " tensor is not yet supported"); + } + this.outputShape = xShape; + var channels = getChannels('rc', rank); + var nextColumn = channels[rank - 1] + " + 1 < " + this.outputShape[rank - 1]; + var nextRow = channels[rank - 2] + " + 1 < " + this.outputShape[rank - 2]; + var type = getCoordsDataType(rank); + if (rank === 1) { + this.userCode = "\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX(" + xShape[0] + " - rc - 1),\n " + xShape[0] + " - rc - 1);\n if(" + nextColumn + "){\n result.g = getChannel(getX(" + xShape[0] + " - (rc + 1) - 1),\n " + xShape[0] + " - (rc + 1) - 1);\n }\n setOutput(result);\n }\n "; + } + else { + this.userCode = "\n void main() {\n " + type + " rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = " + getR(channels.slice()) + ";\n if(" + nextColumn + "){\n result.g = " + getG(channels.slice()) + ";\n }\n if(" + nextRow + ") {\n result.b = " + getB(channels.slice()) + ";\n if(" + nextColumn + ") {\n result.a = " + getA(channels.slice()) + ";\n }\n }\n setOutput(result);\n }\n "; + } + function getR(channels) { + return getChannel(channels); + } + function getG(channels) { + channels[rank - 1] = '(' + channels[rank - 1] + " + 1)"; + return getChannel(channels); + } + function getB(channels) { + channels[rank - 2] = '(' + channels[rank - 2] + " + 1)"; + return getChannel(channels); + } + function getA(channels) { + channels[rank - 1] = '(' + channels[rank - 1] + " + 1)"; + channels[rank - 2] = '(' + channels[rank - 2] + " + 1)"; + return getChannel(channels); + } + function getChannel(channels) { + var inCoordsArray = xShape.map(function (_, i) { return getInCoord(i, channels); }); + var inCoords = inCoordsArray.join(','); + var innerDims = inCoordsArray.slice(-2).join(','); + return "getChannel(getX(" + inCoords + "), vec2(" + innerDims + "))"; + } + function getInCoord(i, channels1) { + if (axis.indexOf(i) !== -1 && xShape[i] !== 1) { + return xShape[i] + " - " + channels1[i] + " - 1"; + } + else { + return "" + channels1[i]; + } + } + } + return ReversePackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ScatterProgram = /** @class */ (function () { + function ScatterProgram(updateSize, sliceDim, indicesRank, updatesRank, strides, shape, summingDupeIndex) { + this.variableNames = ['updates', 'indices', 'defaultValue']; + this.outputShape = shape; + var stridesType = getCoordsDataType(strides.length); + var dtype = getCoordsDataType(shape.length); + var indicesString = ''; + if (indicesRank === 1) { + indicesString = 'i'; + } + else if (indicesRank === 2) { + indicesString = 'i, j'; + } + var indicesSnippet = "getIndices(" + indicesString + ")"; + var updatesString = ''; + if (updatesRank === 1) { + updatesString = 'i'; + } + else if (updatesRank === 2) { + updatesString = 'i, coords[1]'; + } + var updatesSnippet = "getUpdates(" + updatesString + ")"; + var strideString = sliceDim > 1 ? 'strides[j]' : 'strides'; + this.userCode = "\n " + stridesType + " strides = " + stridesType + "(" + strides + ");\n\n void main() {\n " + dtype + " coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < " + updateSize + "; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < " + sliceDim + "; j++) {\n int index = round(" + indicesSnippet + ");\n flattenedIndex += index * " + strideString + ";\n }\n if (flattenedIndex == coords[0]) {\n sum += " + updatesSnippet + ";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "; + } + return ScatterProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var SegmentOpProgram = /** @class */ (function () { + function SegmentOpProgram(segOpInfo, segOpType) { + this.variableNames = ['x', 'segmentIds']; + var windowSize = segOpInfo.windowSize; + var batchSize = segOpInfo.batchSize; + var inSize = segOpInfo.inSize; + var numSegments = segOpInfo.numSegments; + var outSize = numSegments * Math.ceil(inSize / windowSize); + this.outputShape = [batchSize, outSize]; + var initializationValue = '0.0'; + var returnValue = "sumValue"; + var windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4; + var windowSizeVec4Remainder = windowSize % 4; + var updateSnippet = "\n sumValue += dot(values, segFilter);\n "; + var checkValueOutOfBounds = ''; + if (inSize % windowSize > 0) { + checkValueOutOfBounds = "\n if (inIdx < 0 || inIdx >= " + inSize + ") {\n return initializationValue;\n }\n "; + } + var checkSegmentIdOutOfBounds = ''; + if (inSize % windowSize > 0) { + checkSegmentIdOutOfBounds = "\n if (inIdx < 0 || inIdx >= " + inSize + ") {\n return -1.0;\n }\n "; + } + this.userCode = "\n const float initializationValue = " + initializationValue + ";\n\n float getValue(int batch, int inIdx) {\n " + checkValueOutOfBounds + "\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n " + checkSegmentIdOutOfBounds + "\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n " + numSegments + ")) * float(" + windowSize + "));\n int currentSeg = int(mod(float(outIdx), float(" + numSegments + ")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < " + windowSizeNearestVec4 + "; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n " + updateSnippet + "\n }\n\n int inIdx = inOffset + " + windowSizeNearestVec4 + ";\n if (" + (windowSizeVec4Remainder === 1) + ") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n " + updateSnippet + "\n } else if (" + (windowSizeVec4Remainder === 2) + ") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n " + updateSnippet + "\n } else if (" + (windowSizeVec4Remainder === 3) + ") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n " + updateSnippet + "\n }\n setOutput(" + returnValue + ");\n }\n "; + } + return SegmentOpProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var SelectProgram = /** @class */ (function () { + function SelectProgram(cRank, shape, rank) { + this.variableNames = ['c', 'a', 'b']; + this.outputShape = shape; + var cCoords; + var abCoords; + if (rank > 4) { + throw Error("Where for rank " + rank + " is not yet supported"); + } + if (rank === 1) { + abCoords = "resRC"; + cCoords = "resRC"; + } + else { + var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w']; + var cCoordVars = []; + var abCoordVars = []; + for (var i = 0; i < shape.length; i++) { + abCoordVars.push("" + currentCoords[i]); + if (i < cRank) { + cCoordVars.push("" + currentCoords[i]); + } + } + cCoords = cCoordVars.join(); + abCoords = abCoordVars.join(); + } + var dtype = getCoordsDataType(rank); + this.userCode = "\n void main() {\n " + dtype + " resRC = getOutputCoords();\n float cVal = getC(" + cCoords + ");\n if (cVal >= 1.0) {\n setOutput(getA(" + abCoords + "));\n } else {\n setOutput(getB(" + abCoords + "));\n }\n }\n "; + } + return SelectProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var SliceProgram = /** @class */ (function () { + function SliceProgram(destSize) { + this.variableNames = ['source']; + this.outputShape = destSize; + this.rank = destSize.length; + var dtype = getCoordsDataType(this.rank); + var uniformPart = "uniform int start[" + this.rank + "];"; + var sourceCoords = getCoords$1(this.rank); + var body; + var coordSum = destSize.map(function (_, i) { + return "sourceLoc." + coords[i] + " = start[" + i + "] + coords." + coords[i] + ";"; + }); + body = "\n " + dtype + " sourceLoc;\n " + dtype + " coords = getOutputCoords();\n " + coordSum.join('\n') + "\n "; + this.userCode = "\n " + uniformPart + "\n void main() {\n " + body + "\n setOutput(getSource(" + sourceCoords + "));\n }\n "; + } + SliceProgram.prototype.getCustomSetupFunc = function (start) { + var _this = this; + if (start.length !== this.rank) { + throw Error("The rank (" + this.rank + ") of the program must match the " + + ("length of start (" + start.length + ")")); + } + return function (gpgpu, webGLProgram) { + if (_this.startLoc == null) { + _this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'start'); + if (_this.startLoc == null) { + // This means the compiler has optimized and realized it doesn't need + // the uniform. + return; + } + } + gpgpu.gl.uniform1iv(_this.startLoc, start); + }; + }; + return SliceProgram; + }()); + var coords = ['x', 'y', 'z', 'w', 'u', 'v']; + function getCoords$1(rank) { + if (rank === 1) { + return 'sourceLoc'; + } + else if (rank <= 6) { + return coords.slice(0, rank).map(function (x) { return 'sourceLoc.' + x; }).join(','); + } + else { + throw Error("Slicing for rank " + rank + " is not yet supported"); + } + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var SlicePackedProgram = /** @class */ (function () { + function SlicePackedProgram(destSize) { + this.variableNames = ['source']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = destSize; + this.rank = destSize.length; + var dtype = getCoordsDataType(this.rank); + var coords = getChannels('coords', this.rank); + var sourceLoc = getChannels('sourceLoc', this.rank); + var innerDims = this.rank === 1 ? 'sourceLoc' : "vec2(" + sourceLoc.slice(-2).join() + ")"; + var getChannel = "getChannel(getSource(" + sourceLoc.join() + "), " + innerDims + ")"; + var upperRow = "\n result.x = " + getChannel + ";\n if (++" + coords[this.rank - 1] + " < " + destSize[this.rank - 1] + ") {\n ++" + sourceLoc[this.rank - 1] + ";\n result.y = " + getChannel + ";\n --" + sourceLoc[this.rank - 1] + ";\n }\n "; + var lowerRow = this.rank === 1 ? '' : "\n --" + coords[this.rank - 1] + ";\n if (++" + coords[this.rank - 2] + " < " + destSize[this.rank - 2] + ") {\n ++" + sourceLoc[this.rank - 2] + ";\n result.z = " + getChannel + ";\n if (++" + coords[this.rank - 1] + " < " + destSize[this.rank - 1] + ") {\n ++" + sourceLoc[this.rank - 1] + ";\n result.w = " + getChannel + ";\n }\n }\n "; + var sourceLocSetup = this.rank <= 4 ? + "sourceLoc = coords +\n " + dtype + "(" + destSize.map(function (_, i) { return "start[" + i + "]"; }).join() + ");" : + destSize.map(function (_, i) { return sourceLoc[i] + " = " + coords[i] + " + start[" + i + "];"; }) + .join('\n'); + this.userCode = "\n uniform int start[" + this.rank + "];\n void main() {\n " + dtype + " coords = getOutputCoords();\n " + dtype + " sourceLoc;\n " + sourceLocSetup + "\n vec4 result = vec4(0.);\n " + upperRow + "\n " + lowerRow + "\n setOutput(result);\n }\n "; + } + SlicePackedProgram.prototype.getCustomSetupFunc = function (start) { + var _this = this; + if (start.length !== this.rank) { + throw Error("The rank (" + this.rank + ") of the program must match the " + + ("length of start (" + start.length + ")")); + } + return function (gpgpu, webGLProgram) { + if (_this.startLoc == null) { + _this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'start'); + if (_this.startLoc == null) { + // This means the compiler has optimized and realized it doesn't need + // the uniform. + return; + } + } + gpgpu.gl.uniform1iv(_this.startLoc, start); + }; + }; + return SlicePackedProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var StridedSliceProgram = /** @class */ (function () { + function StridedSliceProgram(begin, strides, size) { + this.variableNames = ['x']; + this.outputShape = size; + var rank = size.length; + var inputDtype = getCoordsDataType(size.length); + var dtype = getCoordsDataType(size.length); + var newCoords = ''; + if (rank === 1) { + newCoords = 'coords * strides + begin'; + } + else { + var outputAxis_1 = 0; + newCoords = + size.map(function (_, i) { + outputAxis_1++; + return size.length === 1 ? + "coords * strides[" + i + "] + begin[" + i + "]" : + "coords[" + (outputAxis_1 - 1) + "] * strides[" + i + "] + begin[" + i + "]"; + }) + .join(','); + } + this.userCode = "\n " + inputDtype + " begin = " + inputDtype + "(" + begin + ");\n " + inputDtype + " strides = " + inputDtype + "(" + strides + ");\n\n void main() {\n " + dtype + " coords = getOutputCoords();\n setOutput(getX(" + newCoords + "));\n }\n "; + } + return StridedSliceProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TextureManager = /** @class */ (function () { + function TextureManager(gpgpu) { + this.gpgpu = gpgpu; + this.numUsedTextures = 0; + this.numFreeTextures = 0; + this._numBytesAllocated = 0; + this._numBytesFree = 0; // How many bytes that have been allocated + // are available for reuse. + this.freeTextures = {}; + this.logEnabled = false; + this.usedTextures = {}; + } + TextureManager.prototype.acquireTexture = function (shapeRC, usage, isPacked) { + var physicalTexType = getPhysicalFromLogicalTextureType(usage, isPacked); + var shapeKey = getKeyFromTextureShape(shapeRC, physicalTexType, isPacked); + if (!(shapeKey in this.freeTextures)) { + this.freeTextures[shapeKey] = []; + } + if (!(shapeKey in this.usedTextures)) { + this.usedTextures[shapeKey] = []; + } + var texBytes = computeBytes(shapeRC, physicalTexType, this.gpgpu.gl, this.gpgpu.textureConfig, isPacked); + if (this.freeTextures[shapeKey].length > 0) { + this.numFreeTextures--; + this.numUsedTextures++; + this._numBytesFree -= texBytes; + this.log(); + var newTexture_1 = this.freeTextures[shapeKey].shift(); + this.usedTextures[shapeKey].push(newTexture_1); + return newTexture_1; + } + var newTexture; + if (physicalTexType === PhysicalTextureType.PACKED_2X2_FLOAT32) { + newTexture = this.gpgpu.createPackedMatrixTexture(shapeRC[0], shapeRC[1]); + } + else if (physicalTexType === PhysicalTextureType.PACKED_2X2_FLOAT16) { + newTexture = + this.gpgpu.createFloat16PackedMatrixTexture(shapeRC[0], shapeRC[1]); + } + else if (physicalTexType === PhysicalTextureType.UNPACKED_FLOAT32) { + newTexture = + this.gpgpu.createFloat32MatrixTexture(shapeRC[0], shapeRC[1]); + } + else if (physicalTexType === PhysicalTextureType.UNPACKED_FLOAT16) { + newTexture = + this.gpgpu.createFloat16MatrixTexture(shapeRC[0], shapeRC[1]); + } + else if (physicalTexType === PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE) { + newTexture = + this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0], shapeRC[1]); + } + this.usedTextures[shapeKey].push(newTexture); + this.numUsedTextures++; + this._numBytesAllocated += texBytes; + this.log(); + return newTexture; + }; + TextureManager.prototype.releaseTexture = function (texture, shape, logicalTexType, isPacked) { + if (this.freeTextures == null) { + // Already disposed. + return; + } + var physicalTexType = getPhysicalFromLogicalTextureType(logicalTexType, isPacked); + var shapeKey = getKeyFromTextureShape(shape, physicalTexType, isPacked); + if (!(shapeKey in this.freeTextures)) { + this.freeTextures[shapeKey] = []; + } + var texBytes = computeBytes(shape, physicalTexType, this.gpgpu.gl, this.gpgpu.textureConfig, isPacked); + var deleteTexThreshold = tf.env().get('WEBGL_DELETE_TEXTURE_THRESHOLD'); + if (deleteTexThreshold !== -1 && + this._numBytesAllocated > deleteTexThreshold) { + this.gpgpu.deleteMatrixTexture(texture); + this._numBytesAllocated -= texBytes; + } + else { + this.freeTextures[shapeKey].push(texture); + this.numFreeTextures++; + this._numBytesFree += texBytes; + } + this.numUsedTextures--; + var texList = this.usedTextures[shapeKey]; + var texIndex = texList.indexOf(texture); + if (texIndex < 0) { + throw new Error('Cannot release a texture that was never provided by this ' + + 'texture manager'); + } + texList.splice(texIndex, 1); + this.log(); + }; + TextureManager.prototype.log = function () { + if (!this.logEnabled) { + return; + } + var total = this.numFreeTextures + this.numUsedTextures; + console.log('Free/Used', this.numFreeTextures + " / " + this.numUsedTextures, "(" + total + ")"); + var freeRatio = this._numBytesFree / this._numBytesAllocated; + console.log("Bytes allocated: " + this._numBytesAllocated); + console.log("Bytes unused: " + this._numBytesFree + " (" + Math.round(100 * freeRatio) + "%)"); + }; + Object.defineProperty(TextureManager.prototype, "numBytesAllocated", { + get: function () { + return this._numBytesAllocated; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TextureManager.prototype, "numBytesFree", { + get: function () { + return this._numBytesFree; + }, + enumerable: true, + configurable: true + }); + TextureManager.prototype.getNumUsedTextures = function () { + return this.numUsedTextures; + }; + TextureManager.prototype.getNumFreeTextures = function () { + return this.numFreeTextures; + }; + TextureManager.prototype.dispose = function () { + var _this = this; + if (this.freeTextures == null) { + // Already disposed. + return; + } + for (var texShape in this.freeTextures) { + this.freeTextures[texShape].forEach(function (tex) { + _this.gpgpu.deleteMatrixTexture(tex); + }); + } + for (var texShape in this.usedTextures) { + this.usedTextures[texShape].forEach(function (tex) { + _this.gpgpu.deleteMatrixTexture(tex); + }); + } + this.freeTextures = null; + this.usedTextures = null; + this.numUsedTextures = 0; + this.numFreeTextures = 0; + this._numBytesAllocated = 0; + this._numBytesFree = 0; + }; + return TextureManager; + }()); + function numBytesForInternalFormat(gl, internalFormat) { + // tslint:disable-next-line:no-any + var glany = gl; + if (internalFormat === glany.R32F) { + return 4; + } + else if (internalFormat === glany.R16F) { + return 2; + } + else if (internalFormat === glany.RGBA32F) { + return 16; + } + else if (internalFormat === gl.RGBA) { + return 16; + } + else if (internalFormat === glany.RGBA16F) { + return 8; + } + throw new Error("Unknown internal format " + internalFormat); + } + function computeBytes(shape, physicalTexType, gl, textureConfig, isPacked) { + // It is not possible to infer packed status from the texture type because + // depending on the textureConfig, different texture types may resolve to the + // same internal format (e.g. in WebGL1, the internal format for + // UNPACKED_FLOAT16 textures is gl.RGBA). Therefore we pass in `isPacked` + // explicitly. + var internalFormat = internalFormatForPhysicalTexType(physicalTexType, textureConfig); + var numElements; + if (isPacked) { + var _a = getPackedMatrixTextureShapeWidthHeight(shape[0], shape[1]), packedWidth = _a[0], packedHeight = _a[1]; + numElements = packedWidth * packedHeight; + } + else { + var _b = getUnpackedMatrixTextureShapeWidthHeight(shape[0], shape[1]), width = _b[0], height = _b[1]; + numElements = width * height; + } + var bytesPerElement = numBytesForInternalFormat(gl, internalFormat); + return numElements * bytesPerElement; + } + function internalFormatForPhysicalTexType(physicalTexType, textureConfig) { + switch (physicalTexType) { + case PhysicalTextureType.PACKED_2X2_FLOAT32: + return getInternalFormatForPackedMatrixTexture(textureConfig); + case PhysicalTextureType.PACKED_2X2_FLOAT16: + return getInternalFormatForFloat16PackedMatrixTexture(textureConfig); + case PhysicalTextureType.UNPACKED_FLOAT32: + return getInternalFormatForFloat32MatrixTexture(textureConfig); + case PhysicalTextureType.UNPACKED_FLOAT16: + return getInternalFormatForFloat16MatrixTexture(textureConfig); + case PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE: + return getInternalFormatForUnsignedBytesMatrixTexture(textureConfig); + default: + throw new Error("Unknown physical texture type " + physicalTexType); + } + } + function getPhysicalTextureForRendering(isPacked) { + if (tf.env().getBool('WEBGL_RENDER_FLOAT32_ENABLED')) { + if (isPacked) { + return PhysicalTextureType.PACKED_2X2_FLOAT32; + } + return PhysicalTextureType.UNPACKED_FLOAT32; + } + if (isPacked) { + return PhysicalTextureType.PACKED_2X2_FLOAT16; + } + return PhysicalTextureType.UNPACKED_FLOAT16; + } + function getPhysicalFromLogicalTextureType(logicalTexType, isPacked) { + if (logicalTexType === TextureUsage.UPLOAD) { + return PhysicalTextureType.PACKED_2X2_FLOAT32; + } + else if (logicalTexType === TextureUsage.RENDER || logicalTexType == null) { + return getPhysicalTextureForRendering(isPacked); + } + else if (logicalTexType === TextureUsage.DOWNLOAD || + logicalTexType === TextureUsage.PIXELS) { + return PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE; + } + throw new Error("Unknown logical texture type " + logicalTexType); + } + function getKeyFromTextureShape(shapeRowsCol, physicalTexType, isPacked) { + return shapeRowsCol[0] + "_" + shapeRowsCol[1] + "_" + physicalTexType + "_" + isPacked; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TileProgram = /** @class */ (function () { + function TileProgram(aShape, reps) { + this.variableNames = ['A']; + var outputShape = new Array(aShape.length); + for (var i = 0; i < outputShape.length; i++) { + outputShape[i] = aShape[i] * reps[i]; + } + this.outputShape = outputShape; + this.rank = outputShape.length; + var dtype = getCoordsDataType(this.rank); + var sourceCoords = getSourceCoords$2(aShape); + this.userCode = "\n void main() {\n " + dtype + " resRC = getOutputCoords();\n setOutput(getA(" + sourceCoords + "));\n }\n "; + } + return TileProgram; + }()); + function getSourceCoords$2(aShape) { + var rank = aShape.length; + if (rank > 5) { + throw Error("Tile for rank " + rank + " is not yet supported"); + } + if (rank === 1) { + return "imod(resRC, " + aShape[0] + ")"; + } + var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w', 'resRC.u']; + var sourceCoords = []; + for (var i = 0; i < aShape.length; i++) { + sourceCoords.push("imod(" + currentCoords[i] + ", " + aShape[i] + ")"); + } + return sourceCoords.join(); + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var UnaryOpProgram = /** @class */ (function () { + function UnaryOpProgram(aShape, opSnippet) { + this.variableNames = ['A']; + this.outputShape = aShape; + this.userCode = "\n float unaryOperation(float x) {\n " + opSnippet + "\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "; + } + return UnaryOpProgram; + }()); + var CHECK_NAN_SNIPPET$2 = "if (isnan(x)) return x;"; + var LINEAR = "return x;"; + var ABS = "return abs(x);"; + var RELU = CHECK_NAN_SNIPPET$2 + "\n return (x < 0.0) ? 0.0 : x;\n"; + var RELU6 = CHECK_NAN_SNIPPET$2 + "\n return (x < 0.0) ? 0.0 : min(6.0, x);\n"; + var ELU = "return (x >= 0.0) ? x : (exp(x) - 1.0);"; + var SELU = "\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = " + tf.backend_util.SELU_SCALEALPHA + ";\n float scale = " + tf.backend_util.SELU_SCALE + ";\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n"; + function STEP(alpha) { + if (alpha === void 0) { alpha = 0.0; } + return CHECK_NAN_SNIPPET$2 + ("\n return x > 0.0 ? 1.0 : float(" + alpha + ");\n "); + } + var NEG = "return -x;"; + var CEIL = "return ceil(x);"; + var FLOOR = "return floor(x);"; + var SIGN = "\n if (isnan(x)) { return 0.0; }\n return sign(x);\n"; + var IS_NAN = "return float(isnan(x));"; + var IS_INF = "return float(isinf(x));"; + var IS_FINITE = "return float(!isnan(x) && !isinf(x));"; + var ROUND = "\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n"; + var EXP = "return exp(x);"; + var EXPM1 = "return exp(x) - 1.0;"; + var LOG = "if (x < 0.0) return NAN;\n return log(x);"; + var LOG1P = "return log(1.0 + x);"; + var SQRT = "return sqrt(x);"; + var RSQRT = "return inversesqrt(x);"; + var SIGMOID = "return 1.0 / (1.0 + exp(-1.0 * x));"; + /** + * mirrors the implementation of tf.nn.softplus: https://goo.gl/vkcvwX + * + * epsilon is the difference between 1.0 and the next representable + * float. For a single precision 32 bit float this should be 2^-23, see: + * https://math.byu.edu/~schow/work/IEEEFloatingPoint.htm + * + * too_large = (x > -threshold) is value above which exp(x) may overflow + * but softplus(x) == x is within machine epsilon + * + * too_small = (x < threshold) is value below which exp(x) may underflow, + * but softplus(x) == exp(x) is within machine epsilon. + */ + var SOFTPLUS = "\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n"; + var SIN = CHECK_NAN_SNIPPET$2 + "\n return sin(x);\n"; + var COS = CHECK_NAN_SNIPPET$2 + "\n return cos(x);\n"; + var TAN = "return tan(x);"; + var ASIN = CHECK_NAN_SNIPPET$2 + "\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n"; + var ACOS = CHECK_NAN_SNIPPET$2 + "\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n"; + var ATAN = CHECK_NAN_SNIPPET$2 + "\n return atan(x);\n"; + var SINH = "\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n"; + var COSH = "\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n"; + var TANH = "\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n"; + var ASINH = CHECK_NAN_SNIPPET$2 + "return log(x + sqrt(x * x + 1.0));"; + var ACOSH = CHECK_NAN_SNIPPET$2 + "\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));"; + var ATANH = CHECK_NAN_SNIPPET$2 + "\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;"; + var ERF = "\n // Error function is calculated approximately with elementary function.\n // See \"Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables\", Abramowitz and Stegun.\n float p = " + tf.backend_util.ERF_P + ";\n float a1 = " + tf.backend_util.ERF_A1 + ";\n float a2 = " + tf.backend_util.ERF_A2 + ";\n float a3 = " + tf.backend_util.ERF_A3 + ";\n float a4 = " + tf.backend_util.ERF_A4 + ";\n float a5 = " + tf.backend_util.ERF_A5 + ";\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n"; + var SQUARE = "return x * x;"; + var RECIPROCAL = "return 1.0 / x;"; + var LOGICAL_NOT = "return float(!(x >= 1.0));"; + var TO_INT = "return float(int(x));"; + var CLONE = 'return x;'; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var LINEAR$1 = "return x;"; + var LOG$1 = "\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n"; + var RELU$1 = "\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"; + var RELU6$1 = "\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"; + var ELU$1 = "\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n"; + var UnaryOpPackedProgram = /** @class */ (function () { + function UnaryOpPackedProgram(aShape, opSnippet) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + this.outputShape = aShape; + this.userCode = "\n vec4 unaryOperation(vec4 x) {\n " + opSnippet + "\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n "; + } + return UnaryOpPackedProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var UnpackProgram = /** @class */ (function () { + function UnpackProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = false; + this.outputShape = outputShape; + var rank = outputShape.length; + var channels = getChannels('rc', rank); + var dtype = getCoordsDataType(rank); + var sourceCoords = getSourceCoords(rank, channels); + var innerDims = channels.slice(-2); + var coords = rank <= 1 ? 'rc' : "vec2(" + innerDims.join(',') + ")"; + this.userCode = "\n void main() {\n " + dtype + " rc = getOutputCoords();\n vec4 packedInput = getA(" + sourceCoords + ");\n\n setOutput(getChannel(packedInput, " + coords + "));\n }\n "; + } + return UnpackProgram; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var segment_util = tf.backend_util.segment_util; + var split = tf.kernel_impls.split; + var tile = tf.kernel_impls.tile; + var topkImpl = tf.kernel_impls.topkImpl; + var whereImpl = tf.kernel_impls.whereImpl; + var EPSILON_FLOAT32 = 1e-7; + var EPSILON_FLOAT16 = 1e-4; + var binaryCaches = {}; + function getBinaryCache(webGLVersion) { + if (webGLVersion in binaryCaches) { + return binaryCaches[webGLVersion]; + } + binaryCaches[webGLVersion] = {}; + return binaryCaches[webGLVersion]; + } + function mapActivationToShaderProgram(activation, packed) { + if (packed === void 0) { packed = false; } + if (activation === 'linear') { + if (packed) { + return LINEAR$1; + } + return LINEAR; + } + else if (activation === 'relu') { + if (packed) { + return RELU$1; + } + return RELU; + } + else if (activation === 'elu') { + if (packed) { + return ELU$1; + } + return ELU; + } + else if (activation === 'relu6') { + if (packed) { + return RELU6$1; + } + return RELU6; + } + else if (activation === 'prelu') { + if (packed) { + return PRELU$1; + } + return PRELU; + } + throw new Error("Activation " + activation + " has not been implemented for the WebGL backend."); + } + // Empirically determined constant used to determine size threshold for handing + // off execution to the CPU. + var CPU_HANDOFF_SIZE_THRESHOLD = 128; + // Empirically determined constant used to decide the number of MB on GPU + // before we warn about high memory use. The MB are this constant * screen area + // * dpi / 1024 / 1024. + var BEFORE_PAGING_CONSTANT = 600; + function numMBBeforeWarning() { + if (tf.env().global.screen == null) { + return 1024; // 1 GB. + } + return (tf.env().global.screen.height * tf.env().global.screen.width * + window.devicePixelRatio) * + BEFORE_PAGING_CONSTANT / 1024 / 1024; + } + // Empirically determined minimal shared dimension in matmul before we forward + // to a.mul(b).sum() in order to take advantage of GPU parallelism. See + // https://github.com/tensorflow/tfjs-core/pull/1379 for benchmarks. + var MATMUL_SHARED_DIM_THRESHOLD = 1000; + var MathBackendWebGL = /** @class */ (function (_super) { + __extends(MathBackendWebGL, _super); + function MathBackendWebGL(gpgpu) { + var _this = _super.call(this) || this; + // Maps data ids that have a pending read operation, to list of subscribers. + _this.pendingRead = new WeakMap(); + // List of data ids that are scheduled for disposal, but are waiting on a + // pending read operation. + _this.pendingDisposal = new WeakSet(); + // Used to count the number of 'shallow' sliced tensors that point to the + // same data id. + _this.dataRefCount = new WeakMap(); + _this.numBytesInGPU = 0; + // Accumulated time spent (including blocking) in uploading data to webgl. + _this.uploadWaitMs = 0; + // Accumulated time spent (including blocking in downloading data from webgl. + _this.downloadWaitMs = 0; + _this.warnedAboutMemory = false; + _this.warnedAboutCPUBackend = false; + _this.pendingDeletes = 0; + _this.disposed = false; + if (!tf.env().getBool('HAS_WEBGL')) { + throw new Error('WebGL is not supported on this device'); + } + if (gpgpu == null) { + var gl = getWebGLContext(tf.env().getNumber('WEBGL_VERSION')); + _this.binaryCache = getBinaryCache(tf.env().getNumber('WEBGL_VERSION')); + _this.gpgpu = new GPGPUContext(gl); + _this.canvas = gl.canvas; + _this.gpgpuCreatedLocally = true; + } + else { + _this.gpgpu = gpgpu; + _this.binaryCache = {}; + _this.gpgpuCreatedLocally = false; + _this.canvas = gpgpu.gl.canvas; + } + _this.textureManager = new TextureManager(_this.gpgpu); + _this.numMBBeforeWarning = numMBBeforeWarning(); + _this.texData = new tf.DataStorage(_this, tf.engine()); + return _this; + } + MathBackendWebGL.prototype.numDataIds = function () { + return this.texData.numDataIds() + + (this.cpuBackend ? this.cpuBackend.numDataIds() : 0) - + this.pendingDeletes; + }; + MathBackendWebGL.prototype.write = function (values, shape, dtype) { + if (tf.env().getBool('WEBGL_CHECK_NUMERICAL_PROBLEMS') || + tf.env().getBool('DEBUG')) { + this.checkNumericalProblems(values); + } + if (dtype === 'complex64' && values != null) { + throw new Error("Cannot write to a complex64 dtype. " + + "Please use tf.complex(real, imag)."); + } + var dataId = {}; + this.texData.set(dataId, { shape: shape, dtype: dtype, values: values, usage: TextureUsage.UPLOAD }); + return dataId; + }; + MathBackendWebGL.prototype.move = function (dataId, values, shape, dtype) { + if (tf.env().getBool('DEBUG')) { + this.checkNumericalProblems(values); + } + if (dtype === 'complex64') { + throw new Error("Cannot write to a complex64 dtype. " + + "Please use tf.complex(real, imag)."); + } + this.texData.set(dataId, { shape: shape, dtype: dtype, values: values, usage: TextureUsage.UPLOAD }); + }; + MathBackendWebGL.prototype.readSync = function (dataId) { + var texData = this.texData.get(dataId); + var values = texData.values, dtype = texData.dtype, complexTensors = texData.complexTensors, slice = texData.slice, shape = texData.shape, isPacked = texData.isPacked; + if (slice != null) { + var program = void 0; + if (isPacked) { + program = new UnaryOpPackedProgram(shape, CLONE); + } + else { + program = new UnaryOpProgram(shape, CLONE); + } + var res = this.runWebGLProgram(program, [{ dataId: dataId, shape: shape, dtype: dtype }], dtype); + var data = this.readSync(res.dataId); + this.disposeData(res.dataId); + return data; + } + if (values != null) { + return this.convertAndCacheOnCPU(dataId); + } + if (dtype === 'string') { + return values; + } + var shouldTimeProgram = this.activeTimers != null; + var start; + if (shouldTimeProgram) { + start = tf.util.now(); + } + var result; + if (dtype === 'complex64') { + var realValues = complexTensors.real.dataSync(); + var imagValues = complexTensors.imag.dataSync(); + result = tf.backend_util.mergeRealAndImagArrays(realValues, imagValues); + } + else { + result = this.getValuesFromTexture(dataId); + } + if (shouldTimeProgram) { + this.downloadWaitMs += tf.util.now() - start; + } + return this.convertAndCacheOnCPU(dataId, result); + }; + MathBackendWebGL.prototype.read = function (dataId) { + return __awaiter(this, void 0, void 0, function () { + var subscribers_1, texData, values, shape, slice, dtype, complexTensors, isPacked, program, res, data, buffer, tmpDownloadTarget, tmpData, vals, ps, realValues, imagValues, size, dTypeVals, subscribers; + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (this.pendingRead.has(dataId)) { + subscribers_1 = this.pendingRead.get(dataId); + return [2 /*return*/, new Promise(function (resolve) { return subscribers_1.push(resolve); })]; + } + texData = this.texData.get(dataId); + values = texData.values, shape = texData.shape, slice = texData.slice, dtype = texData.dtype, complexTensors = texData.complexTensors, isPacked = texData.isPacked; + if (slice != null) { + program = void 0; + if (isPacked) { + program = new UnaryOpPackedProgram(shape, CLONE); + } + else { + program = new UnaryOpProgram(shape, CLONE); + } + res = this.runWebGLProgram(program, [{ dataId: dataId, shape: shape, dtype: dtype }], dtype); + data = this.read(res.dataId); + this.disposeData(res.dataId); + return [2 /*return*/, data]; + } + if (values != null) { + return [2 /*return*/, this.convertAndCacheOnCPU(dataId)]; + } + if (!tf.env().getBool('WEBGL_DOWNLOAD_FLOAT_ENABLED') && + tf.env().getNumber('WEBGL_VERSION') === 2) { + throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and " + + "WEBGL_VERSION=2 not yet supported."); + } + buffer = null; + if (dtype !== 'complex64' && tf.env().get('WEBGL_BUFFER_SUPPORTED')) { + // Possibly copy the texture into a buffer before inserting a fence. + tmpDownloadTarget = this.decode(dataId); + tmpData = this.texData.get(tmpDownloadTarget.dataId); + buffer = (_a = this.gpgpu).createBufferFromTexture.apply(_a, [tmpData.texture].concat(getDenseTexShape(shape))); + } + this.pendingRead.set(dataId, []); + if (!(dtype !== 'complex64')) return [3 /*break*/, 2]; + // Create a fence and wait for it to resolve. + return [4 /*yield*/, this.gpgpu.createAndWaitForFence()]; + case 1: + // Create a fence and wait for it to resolve. + _b.sent(); + _b.label = 2; + case 2: + if (!(dtype === 'complex64')) return [3 /*break*/, 4]; + return [4 /*yield*/, Promise.all([complexTensors.real.data(), complexTensors.imag.data()])]; + case 3: + ps = _b.sent(); + realValues = ps[0]; + imagValues = ps[1]; + vals = tf.backend_util.mergeRealAndImagArrays(realValues, imagValues); + return [3 /*break*/, 5]; + case 4: + if (buffer == null) { + vals = this.getValuesFromTexture(dataId); + } + else { + size = tf.util.sizeFromShape(shape); + vals = this.gpgpu.downloadFloat32MatrixFromBuffer(buffer, size); + } + _b.label = 5; + case 5: + if (tmpDownloadTarget != null) { + this.disposeData(tmpDownloadTarget.dataId); + } + dTypeVals = this.convertAndCacheOnCPU(dataId, vals); + subscribers = this.pendingRead.get(dataId); + this.pendingRead.delete(dataId); + // Notify all pending reads. + subscribers.forEach(function (resolve) { return resolve(dTypeVals); }); + if (this.pendingDisposal.has(dataId)) { + this.pendingDisposal.delete(dataId); + this.disposeData(dataId); + this.pendingDeletes--; + } + return [2 /*return*/, dTypeVals]; + } + }); + }); + }; + MathBackendWebGL.prototype.checkNumericalProblems = function (values) { + if (values == null) { + return; + } + for (var i = 0; i < values.length; i++) { + var num = values[i]; + if (!canBeRepresented(num)) { + if (tf.env().getBool('WEBGL_RENDER_FLOAT32_CAPABLE')) { + throw Error("The value " + num + " cannot be represented with your " + + "current settings. Consider enabling float32 rendering: " + + "'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'"); + } + throw Error("The value " + num + " cannot be represented on this device."); + } + } + }; + MathBackendWebGL.prototype.getValuesFromTexture = function (dataId) { + var _a; + var _b = this.texData.get(dataId), shape = _b.shape, dtype = _b.dtype, isPacked = _b.isPacked; + var size = tf.util.sizeFromShape(shape); + if (tf.env().getBool('WEBGL_DOWNLOAD_FLOAT_ENABLED')) { + var tmpTarget = this.decode(dataId); + var tmpData_1 = this.texData.get(tmpTarget.dataId); + var vals_1 = (_a = this.gpgpu).downloadMatrixFromPackedTexture.apply(_a, [tmpData_1.texture].concat(getDenseTexShape(shape))).subarray(0, size); + this.disposeData(tmpTarget.dataId); + return vals_1; + } + var shouldUsePackedProgram = tf.env().getBool('WEBGL_PACK') && isPacked === true; + var outputShape = shouldUsePackedProgram ? getShapeAs3D(shape) : shape; + var program = shouldUsePackedProgram ? + new EncodeFloatPackedProgram(outputShape) : + new EncodeFloatProgram(outputShape); + var output = this.runWebGLProgram(program, [{ shape: outputShape, dtype: dtype, dataId: dataId }], 'float32'); + var tmpData = this.texData.get(output.dataId); + var vals = this.gpgpu + .downloadByteEncodedFloatMatrixFromOutputTexture(tmpData.texture, tmpData.texShape[0], tmpData.texShape[1]) + .subarray(0, size); + this.disposeData(output.dataId); + return vals; + }; + MathBackendWebGL.prototype.time = function (f) { + return __awaiter(this, void 0, void 0, function () { + var oldActiveTimers, newActiveTimers, outerMostTime, flattenedActiveTimerQueries, flattenedActiveTimerNames, res, kernelMs_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + oldActiveTimers = this.activeTimers; + newActiveTimers = []; + outerMostTime = false; + if (this.programTimersStack == null) { + this.programTimersStack = newActiveTimers; + outerMostTime = true; + } + else { + this.activeTimers.push(newActiveTimers); + } + this.activeTimers = newActiveTimers; + f(); + flattenedActiveTimerQueries = tf.util.flatten(this.activeTimers.map(function (d) { return d.query; })) + .filter(function (d) { return d != null; }); + flattenedActiveTimerNames = tf.util.flatten(this.activeTimers.map(function (d) { return d.name; })) + .filter(function (d) { return d != null; }); + this.activeTimers = oldActiveTimers; + if (outerMostTime) { + this.programTimersStack = null; + } + res = { + uploadWaitMs: this.uploadWaitMs, + downloadWaitMs: this.downloadWaitMs, + kernelMs: null, + wallMs: null // will be filled by the engine + }; + if (!(tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE') > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(flattenedActiveTimerQueries)]; + case 1: + kernelMs_1 = _a.sent(); + res['kernelMs'] = tf.util.sum(kernelMs_1); + res['getExtraProfileInfo'] = function () { + return kernelMs_1.map(function (d, i) { return ({ name: flattenedActiveTimerNames[i], ms: d }); }) + .map(function (d) { return d.name + ": " + d.ms; }) + .join(', '); + }; + return [3 /*break*/, 3]; + case 2: + res['kernelMs'] = { + error: 'WebGL query timers are not supported in this environment.' + }; + _a.label = 3; + case 3: + this.uploadWaitMs = 0; + this.downloadWaitMs = 0; + return [2 /*return*/, res]; + } + }); + }); + }; + MathBackendWebGL.prototype.memory = function () { + return { + unreliable: false, + numBytesInGPU: this.numBytesInGPU, + numBytesInGPUAllocated: this.textureManager.numBytesAllocated, + numBytesInGPUFree: this.textureManager.numBytesFree + }; + }; + MathBackendWebGL.prototype.startTimer = function () { + if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE') > 0) { + return this.gpgpu.beginQuery(); + } + return { startMs: tf.util.now(), endMs: null }; + }; + MathBackendWebGL.prototype.endTimer = function (query) { + if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE') > 0) { + this.gpgpu.endQuery(); + return query; + } + query.endMs = tf.util.now(); + return query; + }; + MathBackendWebGL.prototype.getQueryTime = function (query) { + return __awaiter(this, void 0, void 0, function () { + var timerQuery; + return __generator(this, function (_a) { + if (tf.env().getNumber('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE') > 0) { + return [2 /*return*/, this.gpgpu.waitForQueryAndGetTime(query)]; + } + timerQuery = query; + return [2 /*return*/, timerQuery.endMs - timerQuery.startMs]; + }); + }); + }; + MathBackendWebGL.prototype.disposeData = function (dataId) { + if (this.pendingDisposal.has(dataId)) { + return; + } + if (this.pendingRead.has(dataId)) { + this.pendingDisposal.add(dataId); + this.pendingDeletes++; + return; + } + // No-op if already disposed. + if (!this.texData.has(dataId)) { + return; + } + this.releaseGPUData(dataId); + var complexTensors = this.texData.get(dataId).complexTensors; + if (complexTensors != null) { + complexTensors.real.dispose(); + complexTensors.imag.dispose(); + } + this.texData.delete(dataId); + }; + MathBackendWebGL.prototype.releaseGPUData = function (dataId) { + var _a = this.texData.get(dataId), texture = _a.texture, dtype = _a.dtype, texShape = _a.texShape, usage = _a.usage, isPacked = _a.isPacked, slice = _a.slice; + var key = slice && slice.origDataId || dataId; + var refCount = this.dataRefCount.get(key); + if (refCount > 1) { + this.dataRefCount.set(key, refCount - 1); + } + else { + this.dataRefCount.delete(key); + if (texture != null) { + this.numBytesInGPU -= this.computeBytes(texShape, dtype); + this.textureManager.releaseTexture(texture, texShape, usage, isPacked); + } + } + var texData = this.texData.get(dataId); + texData.texture = null; + texData.texShape = null; + texData.isPacked = false; + texData.slice = null; + }; + MathBackendWebGL.prototype.getTexture = function (dataId) { + this.uploadToGPU(dataId); + return this.texData.get(dataId).texture; + }; + /** + * Returns internal information for the specific data bucket. Used in unit + * tests. + */ + MathBackendWebGL.prototype.getDataInfo = function (dataId) { + return this.texData.get(dataId); + }; + MathBackendWebGL.prototype.getCPUBackend = function () { + if (!tf.env().getBool('WEBGL_CPU_FORWARD')) { + return null; + } + if (this.cpuBackend == null) { + this.cpuBackend = tf.engine().findBackend('cpu'); + } + return this.cpuBackend; + }; + /* + Tests whether all the inputs to an op are small and on the CPU. This heuristic + determines when it would be faster to execute a kernel on the CPU. WebGL + kernels opt into running this check and forwarding when appropriate. + TODO(https://github.com/tensorflow/tfjs/issues/872): Develop a more + sustainable strategy for optimizing backend execution of ops. + */ + MathBackendWebGL.prototype.shouldExecuteOnCPU = function (inputs, sizeThreshold) { + var _this = this; + if (sizeThreshold === void 0) { sizeThreshold = CPU_HANDOFF_SIZE_THRESHOLD; } + var cpuBackend = this.getCPUBackend(); + if (!this.warnedAboutCPUBackend && cpuBackend == null && + !tf.env().getBool('IS_TEST')) { + console.warn('Your application contains ops that are small enough to be ' + + 'executed on the CPU backend, however the CPU backend cannot ' + + 'be found. Consider importing the CPU backend ' + + '(@tensorflow/tfjs-backend-cpu) for better performance.'); + this.warnedAboutCPUBackend = true; + } + return cpuBackend != null && + inputs.every(function (input) { return _this.texData.get(input.dataId).texture == null && + tf.util.sizeFromShape(input.shape) < sizeThreshold; }); + }; + MathBackendWebGL.prototype.getGPGPUContext = function () { + return this.gpgpu; + }; + MathBackendWebGL.prototype.complex = function (real, imag) { + var result = this.makeOutput(real.shape, 'complex64'); + var resultData = this.texData.get(result.dataId); + // The backend owns the reference to the underlying real and imaginary + // clones. These will explicitly get disposed when the complex tensor is + // disposed. + resultData.complexTensors = { + real: tf.engine().keep(real.clone()), + imag: tf.engine().keep(imag.clone()) + }; + return result; + }; + MathBackendWebGL.prototype.real = function (input) { + var resultData = this.texData.get(input.dataId); + return resultData.complexTensors.real.clone(); + }; + MathBackendWebGL.prototype.imag = function (input) { + var resultData = this.texData.get(input.dataId); + return resultData.complexTensors.imag.clone(); + }; + MathBackendWebGL.prototype.slice = function (x, begin, size) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.slice(x, begin, size); + } + // Short-circuit computation if the slice is zero-sized. + if (tf.util.sizeFromShape(size) === 0) { + return tf.tensor([], size, x.dtype); + } + var isPacked = this.texData.get(x.dataId).isPacked; + var isContinous = tf.slice_util.isSliceContinous(x.shape, begin, size); + if (isPacked || !isContinous) { + var program = tf.env().getBool('WEBGL_PACK_ARRAY_OPERATIONS') ? + new SlicePackedProgram(size) : + new SliceProgram(size); + var customSetup = program.getCustomSetupFunc(begin); + return this.compileAndRun(program, [x], null, customSetup); + } + this.uploadToGPU(x.dataId); + return this.shallowSlice(x, begin, size); + }; + MathBackendWebGL.prototype.shallowSlice = function (x, begin, size) { + var xTexData = this.texData.get(x.dataId); + var t = this.makeOutput(size, x.dtype); + var newTexData = this.texData.get(t.dataId); + // Copy texture data from the original tensor. + Object.assign(newTexData, xTexData); + newTexData.shape = size; + newTexData.dtype = x.dtype; + var flatOffset = tf.slice_util.computeFlatOffset(begin, x.strides); + if (xTexData.slice) { + // We are slicing an already sliced tensor, so we have to accumulate + // the offset. + flatOffset += xTexData.slice.flatOffset; + } + newTexData.slice = { + flatOffset: flatOffset, + // Point to the original dataId, which is used to do ref counting. + origDataId: xTexData.slice && xTexData.slice.origDataId || x.dataId + }; + // Increase the ref count for that data bucket. + var refCount = this.dataRefCount.get(newTexData.slice.origDataId) || 1; + this.dataRefCount.set(newTexData.slice.origDataId, refCount + 1); + return t; + }; + MathBackendWebGL.prototype.stridedSlice = function (x, begin, end, strides) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.stridedSlice(x, begin, end, strides); + } + var outShape = tf.slice_util.computeOutShape(begin, end, strides); + if (outShape.some(function (axis) { return axis === 0; })) { + return tf.tensor([], outShape); + } + var program = new StridedSliceProgram(begin, strides, outShape); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.reverse = function (x, axis) { + var program = tf.env().getBool('WEBGL_PACK_ARRAY_OPERATIONS') ? + new ReversePackedProgram(x.shape, axis) : + new ReverseProgram(x.shape, axis); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.concat = function (tensors, axis) { + if (tensors[0].dtype === 'complex64') { + var reals = tensors.map(function (t) { return tf.real(t); }); + var imags = tensors.map(function (t) { return tf.imag(t); }); + return tf.complex(this.concat(reals, axis), this.concat(imags, axis)); + } + if (this.shouldExecuteOnCPU(tensors)) { + return this.cpuBackend.concat(tensors, axis); + } + if (tensors.length === 1) { + return tensors[0]; + } + if (tensors.length > tf.env().getNumber('WEBGL_MAX_TEXTURES_IN_SHADER')) { + var midIndex = Math.floor(tensors.length / 2); + var leftSide = this.concat(tensors.slice(0, midIndex), axis); + var rightSide = this.concat(tensors.slice(midIndex), axis); + return this.concat([leftSide, rightSide], axis); + } + if (tf.env().getBool('WEBGL_PACK_ARRAY_OPERATIONS') && tensors[0].rank > 1) { + var program_1 = new ConcatPackedProgram(tensors.map(function (t) { return t.shape; }), axis); + return this.compileAndRun(program_1, tensors); + } + // Any concat of n-dimensional tensors across any axis can be reduced to + // a concatenation of two-dimensional tensors across the axis 1 by first + // partitioning the axes of the original tensors into those less than the + // axis to be concatenated and the rest. Then reshape the tensors + // into a two-dimensional tensor by collapsing these two sets of axes and + // concatenate the resulting matrices across the axis 1, finally reshaping + // the result to have the proper shape. + var outShape = tf.backend_util.computeOutShape(tensors.map(function (t) { return t.shape; }), axis); + var tensors2D = tensors.map(function (t) { return t.as2D(-1, tf.util.sizeFromShape(t.shape.slice(axis))); }); + var program = new ConcatProgram(tensors2D.map(function (t) { return t.shape; })); + var res = this.compileAndRun(program, tensors2D); + return res.reshape(outShape); + }; + MathBackendWebGL.prototype.neg = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.neg(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, NEG, x.dtype); + } + var program = new UnaryOpProgram(x.shape, NEG); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.batchMatMul = function (a, b, transposeA, transposeB) { + var outerShapeA = transposeA ? a.shape[2] : a.shape[1]; + var outerShapeB = transposeB ? b.shape[1] : b.shape[2]; + var sharedDim = transposeA ? a.shape[1] : a.shape[2]; + var _a = a.shape, batch = _a[0]; + // Since the matrices are vectors, it is faster to call mul().sum() + // because sum() is O(sqrt(N)) due to divide-and-conquer. + if ((outerShapeA === 1 || outerShapeB === 1) && + sharedDim > MATMUL_SHARED_DIM_THRESHOLD) { + if (transposeA) { + a = tf.transpose(a, [0, 2, 1]); + } + if (transposeB) { + b = tf.transpose(b, [0, 2, 1]); + } + var a3D = outerShapeB === 1 ? a : a.as3D(batch, sharedDim, 1); + var axis = outerShapeB === 1 ? 2 : 1; + var b3D = outerShapeB === 1 ? b.as3D(batch, 1, sharedDim) : b; + return this.multiply(a3D, b3D).sum(axis, true /* keepDims */); + } + var dtype = tf.upcastType(a.dtype, b.dtype); + var program = new MatMulPackedProgram(a.shape, [batch, outerShapeA, outerShapeB], transposeA, transposeB); + return this.compileAndRun(program, [a, b], dtype); + }; + MathBackendWebGL.prototype.fusedBatchMatMul = function (_a) { + var a = _a.a, b = _a.b, transposeA = _a.transposeA, transposeB = _a.transposeB, bias = _a.bias, activation = _a.activation, preluActivationWeights = _a.preluActivationWeights; + var outerShapeA = transposeA ? a.shape[2] : a.shape[1]; + var outerShapeB = transposeB ? b.shape[1] : b.shape[2]; + var _b = a.shape, batch = _b[0]; + var dtype = tf.upcastType(a.dtype, b.dtype); + var hasBias = bias != null; + var hasPreluActivationWeights = preluActivationWeights != null; + var fusedActivation = activation ? mapActivationToShaderProgram(activation, true) : null; + var program = new MatMulPackedProgram(a.shape, [batch, outerShapeA, outerShapeB], transposeA, transposeB, hasBias, fusedActivation, hasPreluActivationWeights); + var inputs = [a, b]; + if (bias) { + inputs.push(bias); + } + if (preluActivationWeights) { + inputs.push(preluActivationWeights); + } + return this.compileAndRun(program, inputs, dtype); + }; + MathBackendWebGL.prototype.multiply = function (a, b) { + if (a.dtype === 'complex64') { + var aData = this.texData.get(a.dataId); + var bData = this.texData.get(b.dataId); + var realProgram = new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL, a.shape, b.shape); + var imagProgram = new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG, a.shape, b.shape); + var inputs = [ + this.makeComplexComponentTensorInfo(a, aData.complexTensors.real), + this.makeComplexComponentTensorInfo(a, aData.complexTensors.imag), + this.makeComplexComponentTensorInfo(b, bData.complexTensors.real), + this.makeComplexComponentTensorInfo(b, bData.complexTensors.imag) + ]; + var real_1 = this.compileAndRun(realProgram, inputs); + var imag_1 = this.compileAndRun(imagProgram, inputs); + var complex_1 = this.complex(real_1, imag_1); + real_1.dispose(); + imag_1.dispose(); + return complex_1; + } + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.multiply(a, b); + } + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, MUL, a.dtype); + } + var program = new BinaryOpProgram(MUL, a.shape, b.shape); + return this.compileAndRun(program, [a, b], a.dtype); + }; + MathBackendWebGL.prototype.batchNorm = function (x, mean, variance, offset, scale, varianceEpsilon) { + var inputs = [x, mean, variance]; + var offsetShape = null; + if (offset != null) { + offsetShape = offset.shape; + inputs.push(offset); + } + var scaleShape = null; + if (scale != null) { + scaleShape = scale.shape; + inputs.push(scale); + } + if (tf.env().getBool('WEBGL_PACK_NORMALIZATION')) { + var batchNormPackedProgram = new BatchNormPackedProgram(x.shape, mean.shape, variance.shape, offsetShape, scaleShape, varianceEpsilon); + return this.compileAndRun(batchNormPackedProgram, inputs); + } + var batchNormProgram = new BatchNormProgram(x.shape, mean.shape, variance.shape, offsetShape, scaleShape, varianceEpsilon); + return this.compileAndRun(batchNormProgram, inputs); + }; + MathBackendWebGL.prototype.localResponseNormalization4D = function (x, radius, bias, alpha, beta) { + var program = tf.env().getBool('WEBGL_PACK_NORMALIZATION') ? + new LRNPackedProgram(x.shape, radius, bias, alpha, beta) : + new LRNProgram(x.shape, radius, bias, alpha, beta); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.LRNGrad = function (dy, inputImage, outputImage, depthRadius, bias, alpha, beta) { + var program = new LRNGradProgram(inputImage.shape, depthRadius, bias, alpha, beta); + return this.compileAndRun(program, [inputImage, outputImage, dy]); + }; + MathBackendWebGL.prototype.tile = function (x, reps) { + if (x.dtype === 'string') { + var data = this.readSync(x.dataId); + var decodedData = data.map(function (d) { return tf.util.decodeString(d); }); + var buf = tf.buffer(x.shape, x.dtype, decodedData); + return tile(buf, reps); + } + var program = new TileProgram(x.shape, reps); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.pad = function (x, paddings, constantValue) { + var program = tf.env().getBool('WEBGL_PACK_ARRAY_OPERATIONS') ? + new PadPackedProgram(x.shape, paddings, constantValue) : + new PadProgram(x.shape, paddings, constantValue); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.gather = function (x, indices, axis) { + if (this.shouldExecuteOnCPU([x, indices])) { + return this.cpuBackend.gather(x, indices, axis); + } + var program = new GatherProgram(x.shape, indices.size, axis); + return this.compileAndRun(program, [x, indices]); + }; + MathBackendWebGL.prototype.batchToSpaceND = function (x, blockShape, crops) { + tf.util.assert(x.rank <= 4, function () { return 'batchToSpaceND for rank > 4 with a WebGL backend not ' + + 'implemented yet'; }); + var prod = blockShape.reduce(function (a, b) { return a * b; }); + var reshaped = tf.backend_util.getReshaped(x.shape, blockShape, prod); + var permuted = tf.backend_util.getPermuted(reshaped.length, blockShape.length); + var reshapedPermuted = tf.backend_util.getReshapedPermuted(x.shape, blockShape, prod); + var sliceBeginCoords = tf.backend_util.getSliceBeginCoords(crops, blockShape.length); + var sliceSize = tf.backend_util.getSliceSize(reshapedPermuted, crops, blockShape.length); + return tf.transpose(x.reshape(reshaped), permuted) + .reshape(reshapedPermuted) + .slice(sliceBeginCoords, sliceSize); + }; + MathBackendWebGL.prototype.spaceToBatchND = function (x, blockShape, paddings) { + tf.util.assert(x.rank <= 4, function () { return 'spaceToBatchND for rank > 4 with a WebGL backend not ' + + 'implemented yet'; }); + var prod = blockShape.reduce(function (a, b) { return a * b; }); + var completePaddings = [[0, 0]]; + completePaddings.push.apply(completePaddings, paddings); + for (var i = 1 + blockShape.length; i < x.shape.length; ++i) { + completePaddings.push([0, 0]); + } + var paddedX = x.pad(completePaddings); + var reshapedPaddedShape = tf.backend_util.getReshaped(paddedX.shape, blockShape, prod, false); + var permutedReshapedPaddedPermutation = tf.backend_util.getPermuted(reshapedPaddedShape.length, blockShape.length, false); + var flattenShape = tf.backend_util.getReshapedPermuted(paddedX.shape, blockShape, prod, false); + var paddedXT = tf.transpose(paddedX.reshape(reshapedPaddedShape), permutedReshapedPaddedPermutation); + return tf.reshape(paddedXT, flattenShape); + }; + MathBackendWebGL.prototype.reduce = function (x, reduceType, dtype) { + var batchSize = x.shape[0]; + var inSize = x.shape[1]; + var windowSize = tf.backend_util.computeOptimalWindowSize(inSize); + var reduceInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize }; + var program = new ReduceProgram(reduceInfo, reduceType); + var output = this.compileAndRun(program, [x], dtype); + // No need to run another GPGPU program. + if (output.shape[1] === 1) { + return output; + } + return this.reduce(output, reduceType, dtype); + }; + MathBackendWebGL.prototype.argReduce = function (x, reduceType, bestIndicesA) { + if (bestIndicesA === void 0) { bestIndicesA = null; } + var batchSize = x.shape[0]; + var inSize = x.shape[1]; + if (bestIndicesA != null) { + batchSize = bestIndicesA.shape[0]; + inSize = bestIndicesA.shape[1]; + } + var windowSize = tf.backend_util.computeOptimalWindowSize(inSize); + var reduceInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize }; + var program = new ArgMinMaxProgram(reduceInfo, reduceType, bestIndicesA == null); + var inputs = [x]; + if (bestIndicesA != null) { + inputs.push(bestIndicesA); + } + var output = this.compileAndRun(program, inputs, 'int32'); + // No need to run another GPGPU program. + if (output.shape[1] === 1) { + return output; + } + return this.argReduce(x, reduceType, output); + }; + MathBackendWebGL.prototype.argReducePacked = function (x, reduceType, bestIndicesA) { + if (bestIndicesA === void 0) { bestIndicesA = null; } + var inShape = bestIndicesA != null ? bestIndicesA.shape : x.shape; + var inSize = inShape[inShape.length - 1]; + var windowSize = tf.backend_util.computeOptimalWindowSize(inSize); + var program = new ArgMinMaxPackedProgram(inShape, windowSize, reduceType, bestIndicesA == null); + var inputs = bestIndicesA == null ? [x] : [x, bestIndicesA]; + var output = this.compileAndRun(program, inputs, 'int32'); + if (output.rank === x.rank) { + return this.argReducePacked(x, reduceType, output); + } + return output; + }; + MathBackendWebGL.prototype.sum = function (x, axes) { + tf.backend_util.assertAxesAreInnerMostDims('sum', axes, x.rank); + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + var outputDType = tf.sumOutType(x.dtype); + return this.reduce(a2D, 'sum', outputDType).reshape(outShape); + }; + MathBackendWebGL.prototype.prod = function (x, axes) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.prod(x, axes); + } + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + var outputDType = tf.sumOutType(x.dtype); + return this.reduce(a2D, 'prod', outputDType).reshape(outShape); + }; + MathBackendWebGL.prototype.unsortedSegmentSum = function (x, segmentIds, numSegments) { + var axis = 0; + var permutation = tf.backend_util.getAxesPermutation([axis], x.rank); + var permutedX = x; + if (permutation != null) { + permutedX = tf.transpose(x, permutation); + axis = tf.backend_util.getInnerMostAxes(1, x.rank)[0]; + } + var outShape = segment_util.computeOutShape(permutedX.shape, axis, numSegments); + var inSize = tf.util.sizeFromShape([permutedX.shape[axis]]); + var a2D = permutedX.as2D(-1, inSize); + var outputDType = tf.sumOutType(x.dtype); + var result = this.segOpCompute(a2D, 'unsortedSegmentSum', segmentIds, outputDType, numSegments) + .reshape(outShape); + if (permutation != null) { + result = + tf.transpose(result, tf.backend_util.getUndoAxesPermutation(permutation)); + } + return result; + }; + MathBackendWebGL.prototype.segOpCompute = function (x, segOpType, segmentIds, dtype, numSegments) { + var batchSize = x.shape[0]; + var inSize = x.shape[1]; + var windowSize = segment_util.segOpComputeOptimalWindowSize(inSize, numSegments); + var segOpInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize, numSegments: numSegments }; + var program = new SegmentOpProgram(segOpInfo, segOpType); + var output = this.compileAndRun(program, [x, segmentIds], dtype); + // No need to run another GPGPU program. + if (output.shape[1] === numSegments) { + return output; + } + segmentIds = tf.range(0, numSegments).tile([inSize / windowSize]); + return this.segOpCompute(output, segOpType, segmentIds, dtype, numSegments); + }; + MathBackendWebGL.prototype.argMinMaxReduce = function (x, axis, reduceType) { + var axes = [axis]; + tf.backend_util.assertAxesAreInnerMostDims('arg' + reduceType.charAt(0).toUpperCase() + reduceType.slice(1), axes, x.rank); + if (!tf.env().getBool('WEBGL_PACK_REDUCE') || x.rank <= 2) { + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + return this.argReduce(a2D, reduceType).reshape(outShape); + } + return this.argReducePacked(x, reduceType); + }; + MathBackendWebGL.prototype.argMin = function (x, axis) { + return this.argMinMaxReduce(x, axis, 'min'); + }; + MathBackendWebGL.prototype.argMax = function (x, axis) { + return this.argMinMaxReduce(x, axis, 'max'); + }; + MathBackendWebGL.prototype.cumsum = function (x, axis, exclusive, reverse) { + if (axis !== x.rank - 1) { + throw new Error("WebGL cumsum shader expects an inner-most axis=" + (x.rank - 1) + " " + + ("but got axis=" + axis)); + } + var size = x.shape[axis]; + var result = x; + // Use cumsum parallel algorithm, ref: + // https://developer.nvidia.com/gpugems/gpugems3/part-vi-gpu-computing/chapter-39-parallel-prefix-sum-scan-cuda + for (var i = 0; i <= Math.ceil(Math.log2(size)) - 1; i++) { + var program = new CumSumProgram(x.shape, false, reverse); + var customSetup = program.getCustomSetupFunc(i); + var prevResult = result; + result = this.compileAndRun(program, [result], result.dtype, customSetup); + prevResult.dispose(); + } + // For exclusive cumsum, shift the end result in the direction of sum and + // add 0 to the front index. + if (exclusive) { + var program = new CumSumProgram(x.shape, exclusive, reverse); + var prevResult = result; + result = this.compileAndRun(program, [result]); + prevResult.dispose(); + } + return result; + }; + MathBackendWebGL.prototype.equal = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, EQUAL$1, 'bool'); + } + var program = new BinaryOpProgram(EQUAL, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.notEqual = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, NOT_EQUAL$1, 'bool'); + } + var program = new BinaryOpProgram(NOT_EQUAL, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.less = function (a, b) { + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.less(a, b); + } + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, LESS$1, 'bool'); + } + var program = new BinaryOpProgram(LESS, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.lessEqual = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, LESS_EQUAL$1, 'bool'); + } + var program = new BinaryOpProgram(LESS_EQUAL, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.greater = function (a, b) { + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.greater(a, b); + } + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, GREATER$1, 'bool'); + } + var program = new BinaryOpProgram(GREATER, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.greaterEqual = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, GREATER_EQUAL$1, 'bool'); + } + var program = new BinaryOpProgram(GREATER_EQUAL, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.logicalNot = function (x) { + var program = new UnaryOpProgram(x.shape, LOGICAL_NOT); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.logicalAnd = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, LOGICAL_AND$1, 'bool'); + } + var program = new BinaryOpProgram(LOGICAL_AND, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.logicalOr = function (a, b) { + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, LOGICAL_OR$1, 'bool'); + } + var program = new BinaryOpProgram(LOGICAL_OR, a.shape, b.shape); + return this.compileAndRun(program, [a, b], 'bool'); + }; + MathBackendWebGL.prototype.select = function (condition, a, b) { + var program = new SelectProgram(condition.rank, a.shape, a.rank); + return this.compileAndRun(program, [condition, a, b], tf.upcastType(a.dtype, b.dtype)); + }; + MathBackendWebGL.prototype.where = function (condition) { + tf.backend_util.warn('tf.where() in webgl locks the UI thread. ' + + 'Call tf.whereAsync() instead'); + var condVals = condition.dataSync(); + return whereImpl(condition.shape, condVals); + }; + MathBackendWebGL.prototype.topk = function (x, k, sorted) { + var xVals = x.dataSync(); + return topkImpl(xVals, x.shape, x.dtype, k, sorted); + }; + MathBackendWebGL.prototype.min = function (x, axes) { + tf.backend_util.assertAxesAreInnerMostDims('min', axes, x.rank); + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + return this.reduce(a2D, 'min', a2D.dtype).reshape(outShape); + }; + MathBackendWebGL.prototype.minimum = function (a, b) { + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.minimum(a, b); + } + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(MIN$1, a.shape, b.shape) : + new BinaryOpProgram(MIN, a.shape, b.shape); + return this.compileAndRun(program, [a, b]); + }; + MathBackendWebGL.prototype.mod = function (a, b) { + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(MOD$1, a.shape, b.shape) : + new BinaryOpProgram(MOD, a.shape, b.shape); + return this.compileAndRun(program, [a, b]); + }; + MathBackendWebGL.prototype.maximum = function (a, b) { + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.maximum(a, b); + } + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(MAX$1, a.shape, b.shape) : + new BinaryOpProgram(MAX, a.shape, b.shape); + return this.compileAndRun(program, [a, b]); + }; + MathBackendWebGL.prototype.all = function (x, axes) { + tf.backend_util.assertAxesAreInnerMostDims('all', axes, x.rank); + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + return this.reduce(a2D, 'all', a2D.dtype).reshape(outShape); + }; + MathBackendWebGL.prototype.any = function (x, axes) { + tf.backend_util.assertAxesAreInnerMostDims('any', axes, x.rank); + var _a = tf.backend_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1]; + var inSize = tf.util.sizeFromShape(reduceShape); + var a2D = x.as2D(-1, inSize); + return this.reduce(a2D, 'any', a2D.dtype).reshape(outShape); + }; + MathBackendWebGL.prototype.floorDiv = function (a, b) { + var op = INT_DIV; + var outputDtype = 'int32'; + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, INT_DIV$1, outputDtype); + } + var program = new BinaryOpProgram(op, a.shape, b.shape); + return this.compileAndRun(program, [a, b], outputDtype); + }; + MathBackendWebGL.prototype.add = function (a, b) { + if (a.dtype === 'complex64' && b.dtype === 'complex64') { + return this.complexSeparableBinaryOp(a, b, ADD); + } + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.add(a, b); + } + var dtype = tf.upcastType(a.dtype, b.dtype); + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, ADD, dtype); + } + var program = new BinaryOpProgram(ADD, a.shape, b.shape); + return this.compileAndRun(program, [a, b], dtype); + }; + MathBackendWebGL.prototype.packedUnaryOp = function (x, op, dtype) { + var program = new UnaryOpPackedProgram(x.shape, op); + return this.compileAndRun(program, [x], dtype); + }; + MathBackendWebGL.prototype.packedBinaryOp = function (a, b, op, dtype, checkOutOfBounds) { + if (checkOutOfBounds === void 0) { checkOutOfBounds = false; } + var program = new BinaryOpPackedProgram(op, a.shape, b.shape, checkOutOfBounds); + return this.compileAndRun(program, [a, b], dtype); + }; + /** + * Computes a complex binary operation that can be decomposed into a simple + * binary operation on both the real and imagary parts. + */ + MathBackendWebGL.prototype.complexSeparableBinaryOp = function (a, b, op) { + var _this = this; + var aData = this.texData.get(a.dataId); + var bData = this.texData.get(b.dataId); + var _a = [ + [aData.complexTensors.real, bData.complexTensors.real], + [aData.complexTensors.imag, bData.complexTensors.imag] + ].map(function (complexParts) { + var aPart = complexParts[0], bPart = complexParts[1]; + var aHandle = _this.makeComplexComponentTensorInfo(a, aPart); + var bHandle = _this.makeComplexComponentTensorInfo(b, bPart); + var program = new BinaryOpProgram(op, a.shape, b.shape); + return _this.compileAndRun(program, [aHandle, bHandle], tf.upcastType(aPart.dtype, bPart.dtype)); + }), real = _a[0], imag = _a[1]; + var complex = this.complex(real, imag); + real.dispose(); + imag.dispose(); + return complex; + }; + // Returns a TensorInfo with the complex shape and the dataId of the + // underlying part. We need to do this because a reshaped complex tensor is + // not reflected in its parts. + MathBackendWebGL.prototype.makeComplexComponentTensorInfo = function (complexTensor, complexPart) { + return { + dataId: complexPart.dataId, + dtype: complexPart.dtype, + shape: complexTensor.shape + }; + }; + MathBackendWebGL.prototype.addN = function (tensors) { + if (tensors.length === 1) { + return tensors[0]; + } + // Limit the number of uploaded textures for optimization. + if (tensors.length > tf.env().get('WEBGL_MAX_TEXTURES_IN_SHADER')) { + var midIndex = Math.floor(tensors.length / 2); + var leftSide = this.addN(tensors.slice(0, midIndex)); + var rightSide = this.addN(tensors.slice(midIndex)); + return this.addN([leftSide, rightSide]); + } + var dtype = tensors.map(function (t) { return t.dtype; }).reduce(function (d1, d2) { return tf.upcastType(d1, d2); }); + var shapes = tensors.map(function (t) { return t.shape; }); + // We can make sure shapes are identical in op level. + var usePackedOp = tf.env().getBool('WEBGL_PACK'); + var program = usePackedOp ? + new AddNPackedProgram(tensors[0].shape, shapes) : + new AddNProgram(tensors[0].shape, shapes); + return this.compileAndRun(program, tensors, dtype); + }; + MathBackendWebGL.prototype.subtract = function (a, b) { + if (a.dtype === 'complex64' && b.dtype === 'complex64') { + return this.complexSeparableBinaryOp(a, b, SUB); + } + if (this.shouldExecuteOnCPU([a, b])) { + return this.cpuBackend.subtract(a, b); + } + var dtype = tf.upcastType(a.dtype, b.dtype); + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + return this.packedBinaryOp(a, b, SUB, a.dtype); + } + var program = new BinaryOpProgram(SUB, a.shape, b.shape); + return this.compileAndRun(program, [a, b], dtype); + }; + MathBackendWebGL.prototype.pow = function (a, b) { + var usePackedOp = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS'); + var program = usePackedOp ? + new BinaryOpPackedProgram(POW$1, a.shape, b.shape) : + new BinaryOpProgram(POW, a.shape, b.shape); + var dtype = tf.upcastType(a.dtype, b.dtype); + return this.compileAndRun(program, [a, b], dtype); + }; + MathBackendWebGL.prototype.ceil = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.ceil(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, CEIL, x.dtype); + } + var program = new UnaryOpProgram(x.shape, CEIL); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.floor = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.floor(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, FLOOR, x.dtype); + } + var program = new UnaryOpProgram(x.shape, FLOOR); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.sign = function (x) { + var program = new UnaryOpProgram(x.shape, SIGN); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.isNaN = function (x) { + var program = new UnaryOpProgram(x.shape, IS_NAN); + return this.compileAndRun(program, [x], 'bool'); + }; + MathBackendWebGL.prototype.isInf = function (x) { + var program = new UnaryOpProgram(x.shape, IS_INF); + return this.compileAndRun(program, [x], 'bool'); + }; + MathBackendWebGL.prototype.isFinite = function (x) { + var program = new UnaryOpProgram(x.shape, IS_FINITE); + return this.compileAndRun(program, [x], 'bool'); + }; + MathBackendWebGL.prototype.round = function (x) { + var program = new UnaryOpProgram(x.shape, ROUND); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.exp = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.exp(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, EXP, x.dtype); + } + var program = new UnaryOpProgram(x.shape, EXP); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.expm1 = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.expm1(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, EXPM1, x.dtype); + } + var program = new UnaryOpProgram(x.shape, EXPM1); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.softmax = function (logits, dim) { + var axes = tf.util.parseAxisParam([dim], logits.shape); + // TODO(annxingyuan): Call maxImpl rather than op as part of softmax kernel + // modularization. + var maxLogit = tf.max(logits, axes); + var expandedShape = tf.backend_util.expandShapeToKeepDim(maxLogit.shape, axes); + var a = this.subtract(logits, maxLogit.reshape(expandedShape)); + var b = this.exp(a); + var sumExp = this.sum(b, axes).reshape(expandedShape); + // TODO(annxingyuan): Call divImpl rather than op as part of softmax kernel + // modularization. + return tf.div(b, sumExp); + }; + MathBackendWebGL.prototype.log = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.log(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, LOG$1, x.dtype); + } + var program = new UnaryOpProgram(x.shape, LOG); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.log1p = function (x) { + var program = new UnaryOpProgram(x.shape, LOG1P); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.sqrt = function (x) { + var program = new UnaryOpProgram(x.shape, SQRT); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.rsqrt = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.rsqrt(x); + } + var program = new UnaryOpProgram(x.shape, RSQRT); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.reciprocal = function (x) { + var program = new UnaryOpProgram(x.shape, RECIPROCAL); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.relu = function (x) { + var program; + if (tf.env().getBool('WEBGL_PACK')) { + program = new UnaryOpPackedProgram(x.shape, RELU$1); + } + else { + program = new UnaryOpProgram(x.shape, RELU); + } + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.relu6 = function (x) { + var program; + if (tf.env().getBool('WEBGL_PACK')) { + program = new UnaryOpPackedProgram(x.shape, RELU6$1); + } + else { + program = new UnaryOpProgram(x.shape, RELU6); + } + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.prelu = function (x, alpha) { + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(PRELU$1, x.shape, alpha.shape) : + new BinaryOpProgram(PRELU, x.shape, alpha.shape); + return this.compileAndRun(program, [x, alpha]); + }; + MathBackendWebGL.prototype.elu = function (x) { + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, ELU$1, x.dtype); + } + var program = new UnaryOpProgram(x.shape, ELU); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.eluDer = function (dy, y) { + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(ELU_DER$1, dy.shape, y.shape) : + new BinaryOpProgram(ELU_DER, dy.shape, y.shape); + return this.compileAndRun(program, [dy, y]); + }; + MathBackendWebGL.prototype.selu = function (x) { + var program = new UnaryOpProgram(x.shape, SELU); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.int = function (x) { + var program = new UnaryOpProgram(x.shape, TO_INT); + return this.compileAndRun(program, [x], 'int32'); + }; + MathBackendWebGL.prototype.clip = function (x, min, max) { + var program; + if (tf.env().getBool('WEBGL_PACK_CLIP')) { + program = new ClipPackedProgram(x.shape); + } + else { + program = new ClipProgram(x.shape); + } + var customSetup = program.getCustomSetupFunc(min, max); + return this.compileAndRun(program, [x], null, customSetup); + }; + MathBackendWebGL.prototype.abs = function (x) { + if (this.shouldExecuteOnCPU([x])) { + return this.cpuBackend.abs(x); + } + if (tf.env().getBool('WEBGL_PACK_UNARY_OPERATIONS')) { + return this.packedUnaryOp(x, ABS, x.dtype); + } + var program = new UnaryOpProgram(x.shape, ABS); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.complexAbs = function (x) { + var xData = this.texData.get(x.dataId); + var program = new ComplexAbsProgram(x.shape); + var inputs = [ + this.makeComplexComponentTensorInfo(x, xData.complexTensors.real), + this.makeComplexComponentTensorInfo(x, xData.complexTensors.imag), + ]; + return this.compileAndRun(program, inputs); + }; + MathBackendWebGL.prototype.sigmoid = function (x) { + var program = new UnaryOpProgram(x.shape, SIGMOID); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.softplus = function (x) { + var program = new UnaryOpProgram(x.shape, SOFTPLUS); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.sin = function (x) { + var program = new UnaryOpProgram(x.shape, SIN); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.cos = function (x) { + var program = new UnaryOpProgram(x.shape, COS); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.tan = function (x) { + var program = new UnaryOpProgram(x.shape, TAN); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.asin = function (x) { + var program = new UnaryOpProgram(x.shape, ASIN); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.acos = function (x) { + var program = new UnaryOpProgram(x.shape, ACOS); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.atan = function (x) { + var program = new UnaryOpProgram(x.shape, ATAN); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.atan2 = function (a, b) { + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(ATAN2$1, a.shape, b.shape) : + new BinaryOpProgram(ATAN2, a.shape, b.shape); + return this.compileAndRun(program, [a, b]); + }; + MathBackendWebGL.prototype.sinh = function (x) { + var program = new UnaryOpProgram(x.shape, SINH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.cosh = function (x) { + var program = new UnaryOpProgram(x.shape, COSH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.tanh = function (x) { + var program = new UnaryOpProgram(x.shape, TANH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.asinh = function (x) { + var program = new UnaryOpProgram(x.shape, ASINH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.acosh = function (x) { + var program = new UnaryOpProgram(x.shape, ACOSH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.atanh = function (x) { + var program = new UnaryOpProgram(x.shape, ATANH); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.erf = function (x) { + var program = new UnaryOpProgram(x.shape, ERF); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.step = function (x, alpha) { + var program = new UnaryOpProgram(x.shape, STEP(alpha)); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.conv2dByMatMul = function (x, filter, convInfo, bias, activation, preluActivationWeights) { + // Reshapes conv2D input to 2D tensors, uses matMul and then reshape the + // result from 2D to 4D. + var xShape = x.shape; + var xTexData = this.texData.get(x.dataId); + var sharedMatMulDim = convInfo.inChannels; + var outerShapeX = xShape[0] * xShape[1] * xShape[2]; + var outerShapeFilter = convInfo.outChannels; + var isChannelsLast = convInfo.dataFormat === 'channelsLast'; + var transposeA = false; + var transposeB = false; + // TODO: Once reduction ops are packed, batchMatMul will always be packed + // and we can remove this condition. + var batchMatMulWillBeUnpacked = (outerShapeX === 1 || outerShapeFilter === 1) && + sharedMatMulDim > MATMUL_SHARED_DIM_THRESHOLD; + var reshapeWillBeExpensive = xShape[2] % 2 !== 0 && !!xTexData.isPacked; + if (batchMatMulWillBeUnpacked || !tf.env().getBool('WEBGL_LAZILY_UNPACK') || + !tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') || + !reshapeWillBeExpensive) { + var targetShape_1 = isChannelsLast ? xShape[0] * xShape[1] * xShape[2] : + xShape[0] * xShape[2] * xShape[3]; + var xReshaped_1 = this.reshape(x, [1, targetShape_1, convInfo.inChannels]); + var filterReshaped_1 = this.reshape(filter, [1, convInfo.inChannels, convInfo.outChannels]); + return this.reshape(this.fusedBatchMatMul({ + a: xReshaped_1, + b: filterReshaped_1, + transposeA: transposeA, + transposeB: transposeB, + bias: bias, + activation: activation, + preluActivationWeights: preluActivationWeights + }), convInfo.outShape); + } + // Following optimization is specific to packed |x| with odd row count + // (For example, in channelLast mode, 'row count' refers to x.shape[2]): + // we avoid expensive packed 2x2 reshape by padding row count to next, + // even number. When x.shape[2] is odd, the result of packed batchMatMul is + // the same (has the same texture layout and and values in the texture) as + // it is for even x.shape[2] + 1. We make the odd-rows tensor to look like + // even-rows tensor before the operation and, after the batchMatMul, + // fix the even-rows result to have odd number of rows. + var targetShape = isChannelsLast ? + xShape[0] * xShape[1] * (xShape[2] + 1) : + xShape[0] * xShape[2] * (xShape[3] + 1); + var xReshaped = { + dataId: x.dataId, + shape: [1, targetShape, convInfo.inChannels], + dtype: x.dtype + }; + // xTexData.shape gets referenced from GPGPUBinary.inShapeInfos. + // Decrementing row count, after batchMatMul->...->compileProgram leads to + // invalid row count within the reference in GPGPUBinary.inShapeInfos. + // Alternative fix would be to provide a copy to GPGPUBinary.inShapeInfos + // in compileProgram method, but that would affect compilation of all + // programs - instead, provide a copy here, with even row count, before + // calling batchMatMul->...->compileProgram and after that, the original + // xTexData.shape is restored. + var originalXTexDataShape = xTexData.shape; + xTexData.shape = xTexData.shape.slice(); + xTexData.shape[xTexData.shape.length - 2]++; + tf.util.assert(isReshapeFree(xTexData.shape, xReshaped.shape), function () { return "packed reshape " + xTexData.shape + " to " + xReshaped.shape + " isn't free"; }); + var filterReshaped = this.reshape(filter, [1, convInfo.inChannels, convInfo.outChannels]); + var pointwiseConv = this.fusedBatchMatMul({ + a: xReshaped, + b: filterReshaped, + transposeA: transposeA, + transposeB: transposeB, + bias: bias, + activation: activation, + preluActivationWeights: preluActivationWeights + }); + var pointwiseConvTexData = this.texData.get(pointwiseConv.dataId); + tf.util.assert(pointwiseConvTexData.isPacked, function () { return 'batchMatMul result is expected to be packed'; }); + // Restore the input shape to original. + xTexData.shape = originalXTexDataShape; + // Set the output shape - there is no need for expensive reshape as data + // layout is already correct. + pointwiseConvTexData.shape = convInfo.outShape; + return tf.engine().makeTensorFromDataId(pointwiseConv.dataId, convInfo.outShape, pointwiseConv.dtype); + }; + MathBackendWebGL.prototype.conv2dWithIm2Row = function (x, filter, convInfo, bias, activation, preluActivationWeights) { + // Rearranges conv2d input so each block to be convolved over forms the + // column of a new matrix with shape [filterWidth * filterHeight * + // inChannels, outHeight * outWidth]. The filter is also rearranged so each + // output channel forms a row of a new matrix with shape [outChannels, + // filterWidth * filterHeight * inChannels]. The convolution is then + // computed by multiplying these matrices and reshaping the result. + var filterWidth = convInfo.filterWidth, filterHeight = convInfo.filterHeight, inChannels = convInfo.inChannels, outWidth = convInfo.outWidth, outHeight = convInfo.outHeight, dataFormat = convInfo.dataFormat; + var isChannelsLast = dataFormat === 'channelsLast'; + var sharedDim = filterWidth * filterHeight * inChannels; + var numCols = outHeight * outWidth; + var x2ColShape = [sharedDim, numCols]; + var transposeA = true; + var transposeB = false; + var xSqueezed = x.squeeze([0]); + var w2Row = filter.reshape([1, sharedDim, -1]); + var im2ColProgram = new Im2ColPackedProgram(x2ColShape, xSqueezed.shape, convInfo); + var im2Col = this.compileAndRun(im2ColProgram, [xSqueezed]).reshape([ + 1, x2ColShape[0], x2ColShape[1] + ]); + var hasBias = bias != null; + var hasPreluActivationWeights = preluActivationWeights != null; + var fusedActivation = activation ? mapActivationToShaderProgram(activation, true) : null; + var matmulProgram = new MatMulPackedProgram(im2Col.shape, [1, numCols, convInfo.outChannels], transposeA, transposeB, hasBias, fusedActivation, hasPreluActivationWeights); + var inputs = [im2Col, w2Row]; + if (bias) { + inputs.push(bias); + } + if (hasPreluActivationWeights) { + inputs.push(preluActivationWeights); + } + var product = this.compileAndRun(matmulProgram, inputs); + if (isChannelsLast) { + return product.reshape([1, outHeight, outWidth, convInfo.outChannels]); + } + else { + return product.reshape([1, convInfo.outChannels, outHeight, outWidth]); + } + }; + MathBackendWebGL.prototype.fusedConv2d = function (_a) { + var input = _a.input, filter = _a.filter, convInfo = _a.convInfo, bias = _a.bias, activation = _a.activation, preluActivationWeights = _a.preluActivationWeights; + if (convInfo.filterHeight === 1 && convInfo.filterWidth === 1 && + convInfo.dilationHeight === 1 && convInfo.dilationWidth === 1 && + convInfo.strideHeight === 1 && convInfo.strideWidth === 1 && + (convInfo.padInfo.type === 'SAME' || + convInfo.padInfo.type === 'VALID')) { + return this.conv2dByMatMul(input, filter, convInfo, bias, activation, preluActivationWeights); + } + if (tf.env().getBool('WEBGL_CONV_IM2COL') && input.shape[0] === 1) { + return this.conv2dWithIm2Row(input, filter, convInfo, bias, activation, preluActivationWeights); + } + var hasBias = bias != null; + var hasPreluActivationWeights = preluActivationWeights != null; + var fusedActivation = activation ? mapActivationToShaderProgram(activation, false) : null; + var program = new Conv2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); + var inputs = [input, filter]; + if (bias) { + inputs.push(bias); + } + if (preluActivationWeights) { + inputs.push(preluActivationWeights); + } + return this.compileAndRun(program, inputs); + }; + MathBackendWebGL.prototype.conv2d = function (x, filter, convInfo) { + if (convInfo.filterHeight === 1 && convInfo.filterWidth === 1 && + convInfo.dilationHeight === 1 && convInfo.dilationWidth === 1 && + convInfo.strideHeight === 1 && convInfo.strideWidth === 1 && + (convInfo.padInfo.type === 'SAME' || + convInfo.padInfo.type === 'VALID')) { + return this.conv2dByMatMul(x, filter, convInfo); + } + if (tf.env().getBool('WEBGL_CONV_IM2COL') && x.shape[0] === 1) { + return this.conv2dWithIm2Row(x, filter, convInfo); + } + var program = new Conv2DProgram(convInfo); + return this.compileAndRun(program, [x, filter]); + }; + MathBackendWebGL.prototype.conv2dDerInput = function (dy, filter, convInfo) { + var program = new Conv2DDerInputProgram(convInfo); + return this.compileAndRun(program, [dy, filter]); + }; + MathBackendWebGL.prototype.conv2dDerFilter = function (x, dy, convInfo) { + var program = new Conv2DDerFilterProgram(convInfo); + return this.compileAndRun(program, [x, dy]); + }; + MathBackendWebGL.prototype.fusedDepthwiseConv2D = function (_a) { + var input = _a.input, filter = _a.filter, convInfo = _a.convInfo, bias = _a.bias, activation = _a.activation, preluActivationWeights = _a.preluActivationWeights; + var shouldPackDepthwiseConv = tf.env().getBool('WEBGL_PACK_DEPTHWISECONV') && + convInfo.strideWidth <= 2 && + convInfo.outChannels / convInfo.inChannels === 1; + var fusedActivation = activation ? + mapActivationToShaderProgram(activation, shouldPackDepthwiseConv) : + null; + var inputs = [input, filter]; + var hasBias = bias != null; + var hasPreluActivationWeights = preluActivationWeights != null; + if (hasBias) { + inputs.push(bias); + } + if (hasPreluActivationWeights) { + inputs.push(preluActivationWeights); + } + var program; + if (shouldPackDepthwiseConv) { + program = new DepthwiseConvPacked2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); + return this.compileAndRun(program, inputs); + } + program = new DepthwiseConv2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); + return this.compileAndRun(program, inputs); + }; + MathBackendWebGL.prototype.depthwiseConv2D = function (x, filter, convInfo) { + var program; + if (tf.env().getBool('WEBGL_PACK_DEPTHWISECONV') && + convInfo.strideWidth <= 2 && + convInfo.outChannels / convInfo.inChannels === 1) { + program = new DepthwiseConvPacked2DProgram(convInfo); + return this.compileAndRun(program, [x, filter]); + } + program = new DepthwiseConv2DProgram(convInfo); + return this.compileAndRun(program, [x, filter]); + }; + MathBackendWebGL.prototype.depthwiseConv2DDerInput = function (dy, filter, convInfo) { + var program = new DepthwiseConv2DDerInputProgram(convInfo); + return this.compileAndRun(program, [dy, filter]); + }; + MathBackendWebGL.prototype.depthwiseConv2DDerFilter = function (x, dy, convInfo) { + var program = new DepthwiseConv2DDerFilterProgram(convInfo); + return this.compileAndRun(program, [x, dy]); + }; + MathBackendWebGL.prototype.conv3d = function (x, filter, convInfo) { + var program = new Conv3DProgram(convInfo); + return this.compileAndRun(program, [x, filter]); + }; + MathBackendWebGL.prototype.conv3dDerInput = function (dy, filter, convInfo) { + var program = new Conv3DDerInputProgram(convInfo); + return this.compileAndRun(program, [dy, filter]); + }; + MathBackendWebGL.prototype.conv3dDerFilter = function (x, dy, convInfo) { + var program = new Conv3DDerFilterProgram(convInfo); + return this.compileAndRun(program, [x, dy]); + }; + MathBackendWebGL.prototype.maxPool = function (x, convInfo) { + var program = new Pool2DProgram(convInfo, 'max', false); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.avgPool = function (x, convInfo) { + var program = new Pool2DProgram(convInfo, 'avg', false); + return this.compileAndRun(program, [x], 'float32'); + }; + MathBackendWebGL.prototype.maxPoolBackprop = function (dy, x, y, convInfo) { + var getPositions = true; + var maxPoolPositionsProgram = new Pool2DProgram(convInfo, 'max', getPositions); + var maxPoolPositions = this.compileAndRun(maxPoolPositionsProgram, [x]); + var maxPoolBackPropProgram = new MaxPool2DBackpropProgram(convInfo); + var result = this.compileAndRun(maxPoolBackPropProgram, [dy, maxPoolPositions], x.dtype); + maxPoolPositions.dispose(); + return result; + }; + MathBackendWebGL.prototype.avgPoolBackprop = function (dy, x, convInfo) { + var avgPoolBackpropProgram = new AvgPool2DBackpropProgram(convInfo); + return this.compileAndRun(avgPoolBackpropProgram, [dy], x.dtype); + }; + MathBackendWebGL.prototype.cast = function (x, dtype) { + return tf.backend_util.castTensor(x, dtype, this); + }; + MathBackendWebGL.prototype.unstack = function (x, axis) { + var num = x.shape[axis]; + var outShape = new Array(x.rank - 1); + var outIndex = 0; + for (var i = 0; i < x.rank; i++) { + if (i !== axis) { + outShape[outIndex++] = x.shape[i]; + } + } + var begin = new Array(x.rank).fill(0); + var size = x.shape.slice(); + size[axis] = 1; + var res = new Array(num); + for (var i = 0; i < res.length; i++) { + begin[axis] = i; + res[i] = this.slice(x, begin, size).reshape(outShape); + } + return res; + }; + MathBackendWebGL.prototype.avgPool3d = function (x, convInfo) { + var program = new Pool3DProgram(convInfo, 'avg', false); + return this.compileAndRun(program, [x], 'float32'); + }; + MathBackendWebGL.prototype.avgPool3dBackprop = function (dy, x, convInfo) { + var avgPool3dBackpropProgram = new AvgPool3DBackpropProgram(convInfo); + return this.compileAndRun(avgPool3dBackpropProgram, [dy], x.dtype); + }; + MathBackendWebGL.prototype.maxPool3d = function (x, convInfo) { + var program = new Pool3DProgram(convInfo, 'max', false); + return this.compileAndRun(program, [x], 'float32'); + }; + MathBackendWebGL.prototype.maxPool3dBackprop = function (dy, x, y, convInfo) { + var getPositions = true; + var maxPool3dPositionsProgram = new Pool3DProgram(convInfo, 'max', getPositions); + var maxPool3dPositions = this.compileAndRun(maxPool3dPositionsProgram, [x]); + var maxPool3dBackPropProgram = new MaxPool3DBackpropProgram(convInfo); + var result = this.compileAndRun(maxPool3dBackPropProgram, [dy, maxPool3dPositions], x.dtype); + maxPool3dPositions.dispose(); + return result; + }; + MathBackendWebGL.prototype.reshape = function (x, shape) { + var texData = this.texData.get(x.dataId); + if (texData.isPacked && !isReshapeFree(x.shape, shape) && + !(texData.texture !== null && + isReshapeFree(texData.shape, shape))) { + var info = this.packedReshape(x, shape); + return tf.engine().makeTensorFromDataId(info.dataId, info.shape, info.dtype); + } + return tf.backend_util.reshapeTensor(x, shape); + }; + MathBackendWebGL.prototype.resizeBilinear = function (x, newHeight, newWidth, alignCorners) { + var program = tf.env().getBool('WEBGL_PACK_IMAGE_OPERATIONS') ? + new ResizeBilinearPackedProgram(x.shape, newHeight, newWidth, alignCorners) : + new ResizeBilinearProgram(x.shape, newHeight, newWidth, alignCorners); + return this.compileAndRun(program, [x], 'float32'); + }; + MathBackendWebGL.prototype.resizeBilinearBackprop = function (dy, x, alignCorners) { + var program = new ResizeBilinearBackpropProgram(dy, x, alignCorners); + return this.compileAndRun(program, [dy]); + }; + MathBackendWebGL.prototype.resizeNearestNeighbor = function (x, newHeight, newWidth, alignCorners) { + var program = new ResizeNearestNeighborProgram(x.shape, newHeight, newWidth, alignCorners); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.resizeNearestNeighborBackprop = function (dy, x, alignCorners) { + var program = new ResizeNearestNeigborBackpropProgram(dy, x, alignCorners); + return this.compileAndRun(program, [dy]); + }; + MathBackendWebGL.prototype.multinomial = function (logits, normalized, numSamples, seed) { + var probs = normalized ? logits : tf.softmax(logits); + var batchSize = probs.shape[0]; + var numOutcomes = probs.shape[1]; + var program = new MultinomialProgram(batchSize, numOutcomes, numSamples); + var customSetup = program.getCustomSetupFunc(seed); + return this.compileAndRun(program, [probs], 'int32', customSetup); + }; + MathBackendWebGL.prototype.oneHot = function (indices, depth, onValue, offValue) { + var program = new OneHotProgram(indices.size, depth, onValue, offValue); + return this.compileAndRun(program, [indices]); + }; + MathBackendWebGL.prototype.diag = function (x) { + var program = new DiagProgram(x.size); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.cropAndResize = function (image, boxes, boxIndex, cropSize, method, extrapolationValue) { + var program = new CropAndResizeProgram(image.shape, boxes.shape, cropSize, method, extrapolationValue); + return this.compileAndRun(program, [image, boxes, boxIndex], 'float32'); + }; + MathBackendWebGL.prototype.depthToSpace = function (x, blockSize, dataFormat) { + tf.util.assert(blockSize > 1, function () { + return "blockSize should be > 1 for depthToSpace, but was: " + blockSize; + }); + var batchSize = x.shape[0]; + var inputHeight = (dataFormat === 'NHWC') ? x.shape[1] : x.shape[2]; + var inputWidth = (dataFormat === 'NHWC') ? x.shape[2] : x.shape[3]; + var inputDepth = (dataFormat === 'NHWC') ? x.shape[3] : x.shape[1]; + var outputHeight = inputHeight * blockSize; + var outputWidth = inputWidth * blockSize; + var outputDepth = inputDepth / (blockSize * blockSize); + var outputShape = (dataFormat === 'NHWC') ? + [batchSize, outputHeight, outputWidth, outputDepth] : + [batchSize, outputDepth, outputHeight, outputWidth]; + var program = new DepthToSpaceProgram(outputShape, blockSize, dataFormat); + return this.compileAndRun(program, [x]); + }; + MathBackendWebGL.prototype.split = function (x, sizeSplits, axis) { + return split(x, sizeSplits, axis); + }; + MathBackendWebGL.prototype.scatterND = function (indices, updates, shape) { + var _a = tf.backend_util.calculateShapes(updates, indices, shape), sliceRank = _a.sliceRank, numUpdates = _a.numUpdates, sliceSize = _a.sliceSize, strides = _a.strides, outputSize = _a.outputSize; + var flattenShape = [outputSize / sliceSize, sliceSize]; + var flattenIndices = indices.reshape([numUpdates, sliceRank]); + var flattenX = updates.reshape([numUpdates, sliceSize]); + if (outputSize === 0) { + return tf.backend_util.reshapeTensor(tf.tensor([]), shape); + } + var defaultValue = tf.scalar(0); + var program = new ScatterProgram(numUpdates, sliceRank, flattenIndices.rank, flattenX.rank, strides, flattenShape); + var res = this.compileAndRun(program, [flattenX, flattenIndices, defaultValue]); + return res.reshape(shape); + }; + MathBackendWebGL.prototype.sparseToDense = function (sparseIndices, sparseValues, outputShape, defaultValue) { + var _a = tf.backend_util.calculateShapes(sparseValues, sparseIndices, outputShape), sliceRank = _a.sliceRank, numUpdates = _a.numUpdates, strides = _a.strides, outputSize = _a.outputSize; + var sumDupeIndices = false; + var program = new ScatterProgram(numUpdates, sliceRank, sparseIndices.rank, sparseValues.rank, strides, [outputSize, 1], sumDupeIndices); + var res = this.compileAndRun(program, [sparseValues, sparseIndices, defaultValue]); + return res.reshape(outputShape); + }; + MathBackendWebGL.prototype.fft = function (x) { + var inverse = false; + return this.fftImpl(x, inverse); + }; + MathBackendWebGL.prototype.ifft = function (x) { + var inverse = true; + return this.fftImpl(x, inverse); + }; + MathBackendWebGL.prototype.fftImpl = function (x, inverse) { + var xData = this.texData.get(x.dataId); + var realProgram = new FFTProgram(COMPLEX_FFT.REAL, x.shape, inverse); + var imagProgram = new FFTProgram(COMPLEX_FFT.IMAG, x.shape, inverse); + var inputs = [ + this.makeComplexComponentTensorInfo(x, xData.complexTensors.real), + this.makeComplexComponentTensorInfo(x, xData.complexTensors.imag), + ]; + var real = this.compileAndRun(realProgram, inputs); + var imag = this.compileAndRun(imagProgram, inputs); + var complex = this.complex(real, imag).as2D(x.shape[0], x.shape[1]); + real.dispose(); + imag.dispose(); + return complex; + }; + MathBackendWebGL.prototype.gatherND = function (x, indices) { + var indicesShape = indices.shape; + var sliceRank = indicesShape[indicesShape.length - 1]; + var _a = tf.backend_util.prepareAndValidate(x, indices), resultShape = _a[0], numSlices = _a[1], sliceSize = _a[2], strides = _a[3]; + var flattenIndices = indices.reshape([numSlices, sliceRank]); + var flattenX = x.reshape([x.size / sliceSize, sliceSize]); + var program = new GatherNDProgram(sliceRank, strides, [numSlices, sliceSize]); + var res = this.compileAndRun(program, [flattenX, flattenIndices]); + return res.reshape(resultShape); + }; + MathBackendWebGL.prototype.fill = function (shape, value, dtype) { + dtype = dtype || tf.util.inferDtype(value); + if (dtype === 'string') { + // String type should be handled in CPU memory. + var values = tf.util.getArrayFromDType(dtype, tf.util.sizeFromShape(shape)); + values.fill(value); + return tf.engine().makeTensor(values, shape, dtype, this); + } + else { + var program = new FillProgram(shape, value); + var customSetup = program.getCustomSetupFunc(value); + return this.compileAndRun(program, [], dtype, customSetup); + } + }; + MathBackendWebGL.prototype.onesLike = function (x) { + if (x.dtype === 'string') { + throw new Error('onesLike is not supported under string dtype'); + } + else { + // TODO(cais, smilkov): Add WebGL shader for onesLike: + // https://github.com/tensorflow/tfjs/issues/1293 + return this.fill(x.shape, 1, x.dtype); + } + }; + MathBackendWebGL.prototype.zerosLike = function (x) { + return this.fill(x.shape, x.dtype === 'string' ? '' : 0, x.dtype); + }; + MathBackendWebGL.prototype.linspace = function (start, stop, num) { + // TODO: Use CPU implementation due to the precision problem in Safari. + return tf.backend_util.linspaceImpl(start, stop, num); + }; + MathBackendWebGL.prototype.makeTensorInfo = function (shape, dtype) { + var dataId = this.write(null /* values */, shape, dtype); + this.texData.get(dataId).usage = null; + return { dataId: dataId, shape: shape, dtype: dtype }; + }; + MathBackendWebGL.prototype.makeOutput = function (shape, dtype) { + var dataId = this.makeTensorInfo(shape, dtype).dataId; + return tf.engine().makeTensorFromDataId(dataId, shape, dtype, this); + }; + MathBackendWebGL.prototype.unpackTensor = function (input) { + var program = new UnpackProgram(input.shape); + return this.runWebGLProgram(program, [input], input.dtype); + }; + MathBackendWebGL.prototype.packTensor = function (input) { + var program = new PackProgram(input.shape); + var preventEagerUnpackingOutput = true; + return this.runWebGLProgram(program, [input], input.dtype, null /* customSetup */, preventEagerUnpackingOutput); + }; + MathBackendWebGL.prototype.packedReshape = function (input, afterShape) { + var input3DShape = [ + getBatchDim(input.shape) + ].concat(getRowsCols(input.shape)); + var input3D = { + dtype: input.dtype, + shape: input3DShape, + dataId: input.dataId + }; + var afterShapeAs3D = [ + getBatchDim(afterShape) + ].concat(getRowsCols(afterShape)); + var program = new ReshapePackedProgram(afterShapeAs3D, input3DShape); + var preventEagerUnpackingOfOutput = true; + var output = this.runWebGLProgram(program, [input3D], input.dtype, null /* customSetup */, preventEagerUnpackingOfOutput); + return { dataId: output.dataId, shape: afterShape, dtype: output.dtype }; + }; + MathBackendWebGL.prototype.decode = function (dataId) { + var texData = this.texData.get(dataId); + var isPacked = texData.isPacked, shape = texData.shape, dtype = texData.dtype; + var shapeAs3D = getShapeAs3D(shape); + var program; + if (isPacked) { + program = new DecodeMatrixPackedProgram(shapeAs3D); + } + else { + program = new DecodeMatrixProgram(shapeAs3D); + } + var preventEagerUnpackingOfOutput = true; + var out = this.runWebGLProgram(program, [{ shape: shapeAs3D, dtype: dtype, dataId: dataId }], dtype, null /* customSetup */, preventEagerUnpackingOfOutput); + return { dtype: dtype, shape: shape, dataId: out.dataId }; + }; + MathBackendWebGL.prototype.runWebGLProgram = function (program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput) { + var _this = this; + if (preventEagerUnpackingOfOutput === void 0) { preventEagerUnpackingOfOutput = false; } + var output = this.makeTensorInfo(program.outputShape, outputDtype); + var outData = this.texData.get(output.dataId); + if (program.packedOutput) { + outData.isPacked = true; + } + if (program.outPackingScheme === PackingScheme.DENSE) { + var texelShape = getDenseTexShape(program.outputShape); + // For a densely packed output, we explicitly set texShape + // so it doesn't get assigned later according to our typical packing + // scheme wherein a single texel can only contain values from adjacent + // rows/cols. + outData.texShape = texelShape.map(function (d) { return d * 2; }); + } + if (program.outTexUsage != null) { + outData.usage = program.outTexUsage; + } + if (tf.util.sizeFromShape(output.shape) === 0) { + // Short-circuit the computation since the result is empty (has 0 in its + // shape). + outData.values = + tf.util.getTypedArrayFromDType(output.dtype, 0); + return output; + } + var dataToDispose = []; + var inputsData = inputs.map(function (input) { + if (input.dtype === 'complex64') { + throw new Error("GPGPUProgram does not support complex64 input. For complex64 " + + "dtypes, please separate the program into real and imaginary " + + "parts."); + } + var texData = _this.texData.get(input.dataId); + if (texData.texture == null) { + if (!program.packedInputs && + tf.util.sizeFromShape(input.shape) <= + tf.env().getNumber('WEBGL_SIZE_UPLOAD_UNIFORM')) { + // Upload small tensors that live on the CPU as uniforms, not as + // textures. Do this only when the environment supports 32bit floats + // due to problems when comparing 16bit floats with 32bit floats. + // TODO(https://github.com/tensorflow/tfjs/issues/821): Make it + // possible for packed shaders to sample from uniforms. + return { + shape: input.shape, + texData: null, + isUniform: true, + uniformValues: texData.values + }; + } + // This ensures that if a packed program's inputs have not yet been + // uploaded to the GPU, they get uploaded as packed right off the bat. + if (program.packedInputs) { + texData.isPacked = true; + texData.shape = input.shape; + } + } + else if (!!texData.isPacked !== !!program.packedInputs) { + input = texData.isPacked ? _this.unpackTensor(input) : + _this.packTensor(input); + dataToDispose.push(input); + texData = _this.texData.get(input.dataId); + } + else if (texData.isPacked && + !isReshapeFree(texData.shape, input.shape)) { + // This is a special case where a texture exists for a tensor + // but the shapes are incompatible (due to packing constraints) because + // the tensor did not have a chance to go through the packed reshape + // shader. This only happens when we reshape the *same* tensor to form + // *distinct* inputs to an op, e.g. dotting a vector with itself. This + // case will disappear once packed uploading is the default. + var savedInput = input; + var targetShape = input.shape; + input.shape = texData.shape; + input = _this.packedReshape(input, targetShape); + dataToDispose.push(input); + texData = _this.texData.get(input.dataId); + savedInput.shape = targetShape; + } + _this.uploadToGPU(input.dataId); + return { shape: input.shape, texData: texData, isUniform: false }; + }); + this.uploadToGPU(output.dataId); + var outputData = { shape: output.shape, texData: outData, isUniform: false }; + var key = makeShaderKey(program, inputsData, outputData); + var binary = this.getAndSaveBinary(key, function () { + return compileProgram(_this.gpgpu, program, inputsData, outputData); + }); + var shouldTimeProgram = this.activeTimers != null; + var query; + if (shouldTimeProgram) { + query = this.startTimer(); + } + runProgram(this.gpgpu, binary, inputsData, outputData, customSetup); + dataToDispose.forEach(function (info) { return _this.disposeData(info.dataId); }); + if (shouldTimeProgram) { + query = this.endTimer(query); + this.activeTimers.push({ name: program.constructor.name, query: this.getQueryTime(query) }); + } + if (!tf.env().getBool('WEBGL_LAZILY_UNPACK') && outData.isPacked && + preventEagerUnpackingOfOutput === false) { + var unpacked = this.unpackTensor(output); + this.disposeData(output.dataId); + return unpacked; + } + return output; + }; + MathBackendWebGL.prototype.compileAndRun = function (program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput) { + if (preventEagerUnpackingOfOutput === void 0) { preventEagerUnpackingOfOutput = false; } + outputDtype = outputDtype || inputs[0].dtype; + var outInfo = this.runWebGLProgram(program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput); + return tf.engine().makeTensorFromDataId(outInfo.dataId, outInfo.shape, outInfo.dtype); + }; + MathBackendWebGL.prototype.getAndSaveBinary = function (key, getBinary) { + if (!(key in this.binaryCache)) { + this.binaryCache[key] = getBinary(); + } + return this.binaryCache[key]; + }; + MathBackendWebGL.prototype.getTextureManager = function () { + return this.textureManager; + }; + MathBackendWebGL.prototype.dispose = function () { + var _this = this; + if (this.disposed) { + return; + } + // Avoid disposing the compiled webgl programs during unit testing because + // it slows down test execution. + if (!tf.env().getBool('IS_TEST')) { + var allKeys = Object.keys(this.binaryCache); + allKeys.forEach(function (key) { + _this.gpgpu.deleteProgram(_this.binaryCache[key].webGLProgram); + delete _this.binaryCache[key]; + }); + } + this.textureManager.dispose(); + if (this.canvas != null && + (typeof (HTMLCanvasElement) !== 'undefined' && + this.canvas instanceof HTMLCanvasElement)) { + this.canvas.remove(); + } + else { + this.canvas = null; + } + if (this.gpgpuCreatedLocally) { + this.gpgpu.program = null; + this.gpgpu.dispose(); + } + this.disposed = true; + }; + MathBackendWebGL.prototype.floatPrecision = function () { + var _this = this; + if (this.floatPrecisionValue == null) { + this.floatPrecisionValue = tf.tidy(function () { + if (!tf.env().get('WEBGL_RENDER_FLOAT32_ENABLED')) { + // Momentarily switching DEBUG flag to false so we don't throw an + // error trying to upload a small value. + var debugFlag = tf.env().getBool('DEBUG'); + tf.env().set('DEBUG', false); + var underflowCheckValue = _this.abs(tf.scalar(1e-8)).dataSync()[0]; + tf.env().set('DEBUG', debugFlag); + if (underflowCheckValue > 0) { + return 32; + } + } + return 16; + }); + } + return this.floatPrecisionValue; + }; + /** Returns the smallest representable number. */ + MathBackendWebGL.prototype.epsilon = function () { + return this.floatPrecision() === 32 ? EPSILON_FLOAT32 : EPSILON_FLOAT16; + }; + MathBackendWebGL.prototype.uploadToGPU = function (dataId) { + var _a; + var texData = this.texData.get(dataId); + var shape = texData.shape, dtype = texData.dtype, values = texData.values, texture = texData.texture, usage = texData.usage, isPacked = texData.isPacked; + if (texture != null) { + // Array is already on GPU. No-op. + return; + } + var shouldTimeProgram = this.activeTimers != null; + var start; + if (shouldTimeProgram) { + start = tf.util.now(); + } + var texShape = texData.texShape; + if (texShape == null) { + texShape = getTextureShapeFromLogicalShape(shape, isPacked); + texData.texShape = texShape; + } + if (values != null) { + var shapeAs3D = getShapeAs3D(shape); + var program = void 0; + var width = texShape[1], height = texShape[0]; + var isByteArray = values instanceof Uint8Array; + if (isPacked) { + _a = getPackedMatrixTextureShapeWidthHeight(texShape[0], texShape[1]), width = _a[0], height = _a[1]; + program = new EncodeMatrixPackedProgram(shapeAs3D, [height, width], isByteArray); + } + else { + program = + new EncodeMatrixProgram(shapeAs3D, [height, width], isByteArray); + } + var tempDenseInputHandle = this.makeTensorInfo([height, width], dtype); + if (isByteArray) { + this.texData.get(tempDenseInputHandle.dataId).usage = + TextureUsage.PIXELS; + } + else { + this.texData.get(tempDenseInputHandle.dataId).usage = + TextureUsage.UPLOAD; + } + this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId), width, height, values); + // We want the output to remain packed regardless of the value of + // WEBGL_PACK. + var preventEagerUnpacking = true; + var encodedOutputTarget = this.runWebGLProgram(program, [tempDenseInputHandle], dtype, null, preventEagerUnpacking); + // Have the original texture assume the identity of the encoded output. + var outputTexData = this.texData.get(encodedOutputTarget.dataId); + texData.texture = outputTexData.texture; + texData.texShape = outputTexData.texShape; + texData.isPacked = outputTexData.isPacked; + texData.usage = outputTexData.usage; + this.disposeData(tempDenseInputHandle.dataId); + this.texData.delete(encodedOutputTarget.dataId); + // Once uploaded, don't store the values on cpu. + texData.values = null; + if (shouldTimeProgram) { + this.uploadWaitMs += tf.util.now() - start; + } + } + else { + var newTexture = this.acquireTexture(texShape, usage, dtype, isPacked); + texData.texture = newTexture; + } + }; + MathBackendWebGL.prototype.convertAndCacheOnCPU = function (dataId, float32Values) { + var texData = this.texData.get(dataId); + var dtype = texData.dtype; + this.releaseGPUData(dataId); + if (float32Values != null) { + texData.values = float32ToTypedArray(float32Values, dtype); + } + return texData.values; + }; + MathBackendWebGL.prototype.acquireTexture = function (texShape, texType, dtype, isPacked) { + this.numBytesInGPU += this.computeBytes(texShape, dtype); + if (!this.warnedAboutMemory && + this.numBytesInGPU > this.numMBBeforeWarning * 1024 * 1024) { + var mb = (this.numBytesInGPU / 1024 / 1024).toFixed(2); + this.warnedAboutMemory = true; + console.warn("High memory usage in GPU: " + mb + " MB, " + + "most likely due to a memory leak"); + } + return this.textureManager.acquireTexture(texShape, texType, isPacked); + }; + MathBackendWebGL.prototype.computeBytes = function (shape, dtype) { + return shape[0] * shape[1] * tf.util.bytesPerElement(dtype); + }; + return MathBackendWebGL; + }(tf.KernelBackend)); + function float32ToTypedArray(a, dtype) { + if (dtype === 'float32' || dtype === 'complex64') { + return a; + } + else if (dtype === 'int32' || dtype === 'bool') { + var result = (dtype === 'int32') ? new Int32Array(a.length) : + new Uint8Array(a.length); + for (var i = 0; i < result.length; ++i) { + result[i] = Math.round(a[i]); + } + return result; + } + else { + throw new Error("Unknown dtype " + dtype); + } + } + + /** @license See the LICENSE file. */ + // This code is auto-generated, do not modify this file! + var version = '2.1.0'; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function divImpl(a, b, backend) { + var program = new BinaryOpProgram(DIV, a.shape, b.shape); + if (tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS')) { + program = new BinaryOpPackedProgram(DIV$1, a.shape, b.shape, true); + } + var output = backend.runWebGLProgram(program, [a, b], 'float32'); + return output; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var divConfig = { + kernelName: tf.Div, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend; + var _b = inputs, a = _b.a, b = _b.b; + var webglBackend = backend; + return divImpl(a, b, webglBackend); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var FromPixelsProgram = /** @class */ (function () { + function FromPixelsProgram(outputShape) { + this.variableNames = ['A']; + var glsl = getGlslDifferences(); + var height = outputShape[0], width = outputShape[1]; + this.outputShape = outputShape; + this.userCode = "\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(" + width + ".0, " + height + ".0);\n\n vec4 values = " + glsl.texture2D + "(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n "; + } + return FromPixelsProgram; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var FromPixelsPackedProgram = /** @class */ (function () { + function FromPixelsPackedProgram(outputShape) { + this.variableNames = ['A']; + this.packedInputs = false; + this.packedOutput = true; + var glsl = getGlslDifferences(); + var height = outputShape[0], width = outputShape[1]; + this.outputShape = outputShape; + this.userCode = "\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(" + width + ".0, " + height + ".0);\n vec4 values = " + glsl.texture2D + "(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n " + glsl.output + " = result;\n }\n "; + } + return FromPixelsPackedProgram; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var fromPixelsConfig = { + kernelName: tf.FromPixels, + backendName: 'webgl', + kernelFunc: fromPixels, + }; + var fromPixels2DContext; + function fromPixels(args) { + var inputs = args.inputs, backend = args.backend, attrs = args.attrs; + var pixels = inputs.pixels; + var numChannels = attrs.numChannels; + var isVideo = typeof (HTMLVideoElement) !== 'undefined' && + pixels instanceof HTMLVideoElement; + var isImage = typeof (HTMLImageElement) !== 'undefined' && + pixels instanceof HTMLImageElement; + var _a = isVideo ? + [ + pixels.videoWidth, + pixels.videoHeight + ] : + [pixels.width, pixels.height], width = _a[0], height = _a[1]; + var texShape = [height, width]; + var outShape = [height, width, numChannels]; + if (isImage || isVideo) { + if (fromPixels2DContext == null) { + fromPixels2DContext = document.createElement('canvas').getContext('2d'); + } + fromPixels2DContext.canvas.width = width; + fromPixels2DContext.canvas.height = height; + fromPixels2DContext.drawImage(pixels, 0, 0, width, height); + pixels = fromPixels2DContext.canvas; + } + var tempPixelHandle = backend.makeTensorInfo(texShape, 'int32'); + // This is a byte texture with pixels. + backend.texData.get(tempPixelHandle.dataId).usage = TextureUsage.PIXELS; + backend.gpgpu.uploadPixelDataToTexture(backend.getTexture(tempPixelHandle.dataId), pixels); + var program = tf.env().getBool('WEBGL_PACK') ? + new FromPixelsPackedProgram(outShape) : + new FromPixelsProgram(outShape); + var res = backend.runWebGLProgram(program, [tempPixelHandle], 'int32'); + backend.disposeData(tempPixelHandle.dataId); + return res; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function maxImpl(aVals, reduceSize, outShape, dtype) { + const vals = tf.util.getTypedArrayFromDType(dtype, tf.util.sizeFromShape(outShape)); + for (let i = 0; i < vals.length; ++i) { + const offset = i * reduceSize; + let max = aVals[offset]; + for (let j = 0; j < reduceSize; ++j) { + const value = aVals[offset + j]; + if (value > max) { + max = value; + } + } + vals[i] = max; + } + return vals; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function transposeImpl(xVals, xShape, dtype, perm, newShape) { + const xRank = xShape.length; + const xSize = tf.util.sizeFromShape(xShape); + const xStrides = tf.util.computeStrides(xShape); + const newStrides = tf.util.computeStrides(newShape); + const result = tf.util.getTypedArrayFromDType(dtype, tf.util.sizeFromShape(newShape)); + for (let i = 0; i < xSize; ++i) { + const loc = tf.util.indexToLoc(i, xRank, xStrides); + // Permute location. + const newLoc = new Array(loc.length); + for (let i = 0; i < newLoc.length; i++) { + newLoc[i] = loc[perm[i]]; + } + const newIndex = tf.util.locToIndex(newLoc, xRank, newStrides); + result[newIndex] = xVals[i]; + } + return result; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + const nonMaxSuppressionV3Impl = tf.kernel_impls.nonMaxSuppressionV3Impl; + const split$1 = tf.kernel_impls.split; + const tile$1 = tf.kernel_impls.tile; + const topkImpl$1 = tf.kernel_impls.topkImpl; + const whereImpl$1 = tf.kernel_impls.whereImpl; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxImplCPU = maxImpl, transposeImplCPU = transposeImpl; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function reduce(x, dtype, reductionType, backend) { + var _a = x.shape, batchSize = _a[0], inSize = _a[1]; + var windowSize = tf.backend_util.computeOptimalWindowSize(inSize); + var reduceInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize }; + var program = new ReduceProgram(reduceInfo, reductionType); + var output = backend.runWebGLProgram(program, [x], dtype); + if (output.shape[1] === 1) { + return output; + } + return reduce(output, dtype, reductionType, backend); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function packedReshape(input, afterShape, backend) { + var input3DShape = [getBatchDim(input.shape)].concat(getRowsCols(input.shape)); + var input3D = { + dtype: input.dtype, + shape: input3DShape, + dataId: input.dataId + }; + var afterShapeAs3D = [getBatchDim(afterShape)].concat(getRowsCols(afterShape)); + var program = new ReshapePackedProgram(afterShapeAs3D, input3DShape); + var preventEagerUnpackingOfOutput = true; + var output = backend.runWebGLProgram(program, [input3D], input.dtype, null /* customSetup */, preventEagerUnpackingOfOutput); + return { dataId: output.dataId, shape: afterShape, dtype: output.dtype }; + } + function reshape(x, afterShape, backend) { + var xTexData = backend.texData.get(x.dataId); + if (xTexData.isPacked && !isReshapeFree(x.shape, afterShape) && + !(xTexData.texture !== null && + isReshapeFree(xTexData.shape, afterShape))) { + return packedReshape(x, afterShape, backend); + } + return { dataId: x.dataId, shape: afterShape, dtype: x.dtype }; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function maxImpl$1(x, reduceShape, outShape, backend) { + var inSize = tf.util.sizeFromShape(reduceShape); + var xSize = tf.util.sizeFromShape(x.shape); + var batchSize = xSize / inSize; + var reshapedInput = reshape(x, [batchSize, inSize], backend); + var reduced = reduce(reshapedInput, x.dtype, 'max', backend); + if (reshapedInput.dataId !== x.dataId) { + // dispose the output of the packed reshape. + backend.disposeData(reshapedInput.dataId); + } + return reshape(reduced, outShape, backend); + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TransposeProgram = /** @class */ (function () { + function TransposeProgram(aShape, newDim) { + this.variableNames = ['A']; + var outputShape = new Array(aShape.length); + for (var i = 0; i < outputShape.length; i++) { + outputShape[i] = aShape[newDim[i]]; + } + this.outputShape = outputShape; + this.rank = outputShape.length; + var dtype = getCoordsDataType(this.rank); + var switched = getSwitchedCoords(newDim); + this.userCode = "\n void main() {\n " + dtype + " resRC = getOutputCoords();\n setOutput(getA(" + switched + "));\n }\n "; + } + return TransposeProgram; + }()); + function getSwitchedCoords(newDim) { + var rank = newDim.length; + if (rank > 6) { + throw Error("Transpose for rank " + rank + " is not yet supported"); + } + var originalOrder = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w', 'resRC.u', 'resRC.v']; + var switchedCoords = new Array(rank); + for (var i = 0; i < newDim.length; i++) { + switchedCoords[newDim[i]] = originalOrder[i]; + } + return switchedCoords.join(); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TransposePackedProgram = /** @class */ (function () { + function TransposePackedProgram(aShape, newDim) { + this.variableNames = ['A']; + this.packedInputs = true; + this.packedOutput = true; + var outputShape = new Array(aShape.length); + for (var i = 0; i < outputShape.length; i++) { + outputShape[i] = aShape[newDim[i]]; + } + this.outputShape = outputShape; + this.rank = outputShape.length; + if (this.rank > 6) { + throw Error("Packed transpose for rank " + this.rank + " is not yet supported."); + } + var dtype = getCoordsDataType(this.rank); + var outputOrder = getVecChannels('rc', this.rank); + var switchedOrder = new Array(this.rank); + for (var i = 0; i < newDim.length; i++) { + switchedOrder[newDim[i]] = outputOrder[i]; + } + var innerDims = "vec2(" + switchedOrder.slice(-2).join() + ")"; + var nextColumn = "++" + outputOrder[this.rank - 1] + " < " + outputShape[this.rank - 1]; + var getc = "getChannel(getA(" + switchedOrder.join() + "), " + innerDims + ")"; + this.userCode = "\n void main() {\n " + dtype + " rc = getOutputCoords();\n vec4 result = vec4(0.);\n result[0] = " + getc + ";\n if(" + nextColumn + ") {\n result[1] = " + getc + ";\n }\n --" + outputOrder[this.rank - 1] + ";\n if(++" + outputOrder[this.rank - 2] + " < " + outputShape[this.rank - 2] + ") {\n result[2] = " + getc + ";\n if(" + nextColumn + ") {\n result[3] = " + getc + ";\n }\n }\n setOutput(result);\n }\n "; + } + return TransposePackedProgram; + }()); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function transposeImpl$1(x, perm, backend) { + var program = tf.env().getBool('WEBGL_PACK_ARRAY_OPERATIONS') ? + new TransposePackedProgram(x.shape, perm) : + new TransposeProgram(x.shape, perm); + return backend.runWebGLProgram(program, [x], x.dtype); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxConfig = { + kernelName: tf.Max, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, attrs = _a.attrs, backend = _a.backend; + var x = inputs.x; + var _b = attrs, reductionIndices = _b.reductionIndices, keepDims = _b.keepDims; + var webglBackend = backend; + var xRank = x.shape.length; + var origAxes = tf.util.parseAxisParam(reductionIndices, x.shape); + var axes = origAxes; + var permutedAxes = tf.backend_util.getAxesPermutation(axes, xRank); + var maxInputIsTransposed = permutedAxes != null; + var shouldExecuteOnCPU = webglBackend.shouldExecuteOnCPU([x]); + var maxInput = x; + if (maxInputIsTransposed) { + if (shouldExecuteOnCPU) { + var xTexData = webglBackend.texData.get(maxInput.dataId); + var values = xTexData.values; + var newShape = new Array(xRank); + for (var i = 0; i < newShape.length; i++) { + newShape[i] = x.shape[permutedAxes[i]]; + } + var maxInputValues = transposeImplCPU(values, x.shape, x.dtype, permutedAxes, newShape); + maxInput = webglBackend.makeTensorInfo(newShape, x.dtype); + var maxInputData = webglBackend.texData.get(maxInput.dataId); + maxInputData.values = maxInputValues; + } + else { + maxInput = transposeImpl$1(x, permutedAxes, webglBackend); + } + axes = tf.backend_util.getInnerMostAxes(axes.length, xRank); + } + tf.backend_util.assertAxesAreInnerMostDims('max', axes, xRank); + var _c = tf.backend_util.computeOutAndReduceShapes(maxInput.shape, axes), maxOutShape = _c[0], reduceShape = _c[1]; + var outShape = maxOutShape; + if (keepDims) { + // rather than reshape at the end, set the target shape here. + outShape = tf.backend_util.expandShapeToKeepDim(maxOutShape, origAxes); + } + var out; + if (shouldExecuteOnCPU) { + var xTexData = webglBackend.texData.get(maxInput.dataId); + var values = xTexData.values; + var outValues = maxImplCPU(values, tf.util.sizeFromShape(reduceShape), outShape, x.dtype); + out = webglBackend.makeTensorInfo(outShape, x.dtype); + var outData = webglBackend.texData.get(out.dataId); + outData.values = outValues; + } + else { + out = maxImpl$1(maxInput, reduceShape, outShape, webglBackend); + } + if (maxInputIsTransposed) { + webglBackend.disposeData(maxInput.dataId); + } + return out; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function maxPoolWithArgmaxImpl(x, includeBatchInIndex, convInfo, backend) { + var program = new Pool2DProgram(convInfo, 'max', false); + var poolOutput = backend.runWebGLProgram(program, [x], 'float32'); + program = new Pool2DProgram(convInfo, 'max', true, true, includeBatchInIndex); + var indexOutput = backend.runWebGLProgram(program, [x], 'float32'); + return [poolOutput, indexOutput]; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxPoolWithArgmaxConfig = { + kernelName: tf.MaxPoolWithArgmax, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, attrs = _a.attrs, backend = _a.backend; + var x = inputs.x; + var _b = attrs, filterSize = _b.filterSize, strides = _b.strides, pad = _b.pad, includeBatchInIndex = _b.includeBatchInIndex; + var webglBackend = backend; + tf.util.assert(x.shape.length === 4, function () { return "Error in maxPool: input must be rank 4 but got rank " + x.shape.length + "."; }); + var dilations = [1, 1]; + tf.util.assert(tf.backend_util.eitherStridesOrDilationsAreOne(strides, dilations), function () { return 'Error in maxPool: Either strides or dilations must be 1. ' + + ("Got strides " + strides + " and dilations '" + dilations + "'"); }); + var convInfo = tf.backend_util.computePool2DInfo(x.shape, filterSize, strides, dilations, pad); + var _c = maxPoolWithArgmaxImpl(x, includeBatchInIndex, convInfo, webglBackend), result = _c[0], indexes = _c[1]; + return [result, indexes]; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var nonMaxSuppressionV3Config = { + kernelName: tf.NonMaxSuppressionV3, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend, attrs = _a.attrs; + tf.backend_util.warn('tf.nonMaxSuppression() in webgl locks the UI thread. ' + + 'Call tf.nonMaxSuppressionAsync() instead'); + var _b = inputs, boxes = _b.boxes, scores = _b.scores; + var _c = attrs, maxOutputSize = _c.maxOutputSize, iouThreshold = _c.iouThreshold, scoreThreshold = _c.scoreThreshold; + var gpuBackend = backend; + var boxesVals = gpuBackend.readSync(boxes.dataId); + var scoresVals = gpuBackend.readSync(scores.dataId); + var maxOutputSizeVal = maxOutputSize; + var iouThresholdVal = iouThreshold; + var scoreThresholdVal = scoreThreshold; + return tf.kernel_impls.nonMaxSuppressionV3Impl(boxesVals, scoresVals, maxOutputSizeVal, iouThresholdVal, scoreThresholdVal); + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var nonMaxSuppressionV4Impl = tf.kernel_impls.nonMaxSuppressionV4Impl; + var nonMaxSuppressionV4Config = { + kernelName: tf.NonMaxSuppressionV4, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend, attrs = _a.attrs; + tf.backend_util.warn('tf.nonMaxSuppression() in webgl locks the UI thread. ' + + 'Call tf.nonMaxSuppressionAsync() instead'); + var _b = inputs, boxes = _b.boxes, scores = _b.scores; + var _c = attrs, maxOutputSize = _c.maxOutputSize, iouThreshold = _c.iouThreshold, scoreThreshold = _c.scoreThreshold, padToMaxOutputSize = _c.padToMaxOutputSize; + var gpuBackend = backend; + var boxesVals = gpuBackend.readSync(boxes.dataId); + var scoresVals = gpuBackend.readSync(scores.dataId); + var _d = nonMaxSuppressionV4Impl(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize), selectedIndices = _d.selectedIndices, validOutputs = _d.validOutputs; + return [selectedIndices, validOutputs]; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var nonMaxSuppressionV5Impl = tf.kernel_impls.nonMaxSuppressionV5Impl; + var nonMaxSuppressionV5Config = { + kernelName: tf.NonMaxSuppressionV5, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend, attrs = _a.attrs; + tf.backend_util.warn('tf.nonMaxSuppression() in webgl locks the UI thread. ' + + 'Call tf.nonMaxSuppressionAsync() instead'); + var _b = inputs, boxes = _b.boxes, scores = _b.scores; + var _c = attrs, maxOutputSize = _c.maxOutputSize, iouThreshold = _c.iouThreshold, scoreThreshold = _c.scoreThreshold, softNmsSigma = _c.softNmsSigma; + var gpuBackend = backend; + var boxesVals = gpuBackend.readSync(boxes.dataId); + var scoresVals = gpuBackend.readSync(scores.dataId); + var maxOutputSizeVal = maxOutputSize; + var iouThresholdVal = iouThreshold; + var scoreThresholdVal = scoreThreshold; + var softNmsSigmaVal = softNmsSigma; + var _d = nonMaxSuppressionV5Impl(boxesVals, scoresVals, maxOutputSizeVal, iouThresholdVal, scoreThresholdVal, softNmsSigmaVal), selectedIndices = _d.selectedIndices, selectedScores = _d.selectedScores; + return [selectedIndices, selectedScores]; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var RotateProgram = /** @class */ (function () { + function RotateProgram(imageShape, radians, fillValue, center) { + this.variableNames = ['Image']; + this.outputShape = []; + var imageHeight = imageShape[1]; + var imageWidth = imageShape[2]; + var sinFactor = Math.sin(radians).toFixed(3); + var cosFactor = Math.cos(radians).toFixed(3); + this.outputShape = imageShape; + var _a = tf.backend_util.getImageCenter(center, imageHeight, imageWidth), centerX = _a[0], centerY = _a[1]; + var centerXString = centerX.toFixed(3); + var centerYString = centerY.toFixed(3); + var fillSnippet = ''; + if (typeof fillValue === 'number') { + fillSnippet = "float outputValue = " + fillValue.toFixed(2) + ";"; + } + else { + fillSnippet = "\n vec3 fill = vec3(" + fillValue.join(',') + ");\n float outputValue = fill[coords[3]];"; + } + this.userCode = "\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n int y = coords[1];\n float coordXFloat = (float(x) - " + centerXString + ") * " + cosFactor + " - (float(y) - " + centerYString + ") * " + sinFactor + ";\n float coordYFloat = (float(x) - " + centerXString + ") * " + sinFactor + " + (float(y) - " + centerYString + ") * " + cosFactor + ";\n int coordX = int(round(coordXFloat + " + centerXString + "));\n int coordY = int(round(coordYFloat + " + centerYString + "));\n " + fillSnippet + "\n if(coordX >= 0 && coordX < " + imageWidth + " && coordY >= 0 && coordY < " + imageHeight + ") {\n outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n }\n setOutput(outputValue);\n }\n "; + } + return RotateProgram; + }()); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var rotateWithOffsetConfig = { + kernelName: tf.RotateWithOffset, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, attrs = _a.attrs, backend = _a.backend; + var image = inputs.image; + var _b = attrs, radians = _b.radians, fillValue = _b.fillValue, center = _b.center; + var webglBackend = backend; + var program = new RotateProgram(image.shape, radians, fillValue, center); + var output = webglBackend.runWebGLProgram(program, [image], image.dtype); + return output; + } + }; + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var squareConfig = { + kernelName: tf.Square, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend; + var x = inputs.x; + var webglBackend = backend; + var program = new UnaryOpProgram(x.shape, SQUARE); + return webglBackend.runWebGLProgram(program, [x], x.dtype); + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var squaredDifferenceConfig = { + kernelName: tf.SquaredDifference, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, backend = _a.backend; + var _b = inputs, a = _b.a, b = _b.b; + var SQUARED_DIFFERENCE = 'return (a - b) * (a - b);'; + var webGLBackend = backend; + var program = tf.env().getBool('WEBGL_PACK_BINARY_OPERATIONS') ? + new BinaryOpPackedProgram(SQUARED_DIFFERENCE, a.shape, b.shape) : + new BinaryOpProgram(SQUARED_DIFFERENCE, a.shape, b.shape); + return webGLBackend.compileAndRun(program, [a, b]); + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var transposeConfig = { + kernelName: tf.Transpose, + backendName: 'webgl', + kernelFunc: function (_a) { + var inputs = _a.inputs, attrs = _a.attrs, backend = _a.backend; + var x = inputs.x; + var perm = attrs.perm; + var webglBackend = backend; + var xRank = x.shape.length; + var newShape = new Array(xRank); + for (var i = 0; i < newShape.length; i++) { + newShape[i] = x.shape[perm[i]]; + } + var out; + if (webglBackend.shouldExecuteOnCPU([x])) { + var xTexData = webglBackend.texData.get(x.dataId); + var values = xTexData.values; + var outValues = transposeImplCPU(values, x.shape, x.dtype, perm, newShape); + out = webglBackend.makeTensorInfo(newShape, x.dtype); + var outData = webglBackend.texData.get(out.dataId); + outData.values = outValues; + } + else { + out = transposeImpl$1(x, perm, webglBackend); + } + return out; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // List all kernel configs here + var kernelConfigs = [ + maxConfig, fromPixelsConfig, divConfig, maxPoolWithArgmaxConfig, + nonMaxSuppressionV3Config, nonMaxSuppressionV4Config, + nonMaxSuppressionV5Config, rotateWithOffsetConfig, squareConfig, + squaredDifferenceConfig, transposeConfig + ]; + for (var _i = 0, kernelConfigs_1 = kernelConfigs; _i < kernelConfigs_1.length; _i++) { + var kernelConfig = kernelConfigs_1[_i]; + tf.registerKernel(kernelConfig); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Enforce use of half precision textures if available on the platform. + */ + /** @doc {heading: 'Environment', namespace: 'webgl'} */ + function forceHalfFloat() { + tf.env().set('WEBGL_FORCE_F16_TEXTURES', true); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + if (tf.device_util.isBrowser()) { + tf.registerBackend('webgl', function () { return new MathBackendWebGL(); }, 2 /* priority */); + } + var webgl = { forceHalfFloat: forceHalfFloat }; + + exports.GPGPUContext = GPGPUContext; + exports.MathBackendWebGL = MathBackendWebGL; + exports.forceHalfFloat = forceHalfFloat; + exports.gpgpu_util = gpgpu_util; + exports.setWebGLContext = setWebGLContext; + exports.version_webgl = version; + exports.webgl = webgl; + exports.webgl_util = webgl_util; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=tf-backend-webgl.js.map diff --git a/demo/handpose/vendor/tf-converter.js b/demo/handpose/vendor/tf-converter.js new file mode 100644 index 0000000..3cff923 --- /dev/null +++ b/demo/handpose/vendor/tf-converter.js @@ -0,0 +1,7031 @@ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tensorflow/tfjs-core')) : + typeof define === 'function' && define.amd ? define(['exports', '@tensorflow/tfjs-core'], factory) : + (global = global || self, factory(global.tf = global.tf || {}, global.tf)); +}(this, (function (exports, tfc) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + + function __awaiter(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============================================================================= + */ + /** DataType enum. */ + var DataType; + (function (DataType) { + DataType[DataType["DT_INVALID"] = 0] = "DT_INVALID"; + DataType[DataType["DT_FLOAT"] = 1] = "DT_FLOAT"; + DataType[DataType["DT_DOUBLE"] = 2] = "DT_DOUBLE"; + DataType[DataType["DT_INT32"] = 3] = "DT_INT32"; + DataType[DataType["DT_UINT8"] = 4] = "DT_UINT8"; + DataType[DataType["DT_INT16"] = 5] = "DT_INT16"; + DataType[DataType["DT_INT8"] = 6] = "DT_INT8"; + DataType[DataType["DT_STRING"] = 7] = "DT_STRING"; + DataType[DataType["DT_COMPLEX64"] = 8] = "DT_COMPLEX64"; + DataType[DataType["DT_INT64"] = 9] = "DT_INT64"; + DataType[DataType["DT_BOOL"] = 10] = "DT_BOOL"; + DataType[DataType["DT_QINT8"] = 11] = "DT_QINT8"; + DataType[DataType["DT_QUINT8"] = 12] = "DT_QUINT8"; + DataType[DataType["DT_QINT32"] = 13] = "DT_QINT32"; + DataType[DataType["DT_BFLOAT16"] = 14] = "DT_BFLOAT16"; + DataType[DataType["DT_FLOAT_REF"] = 101] = "DT_FLOAT_REF"; + DataType[DataType["DT_DOUBLE_REF"] = 102] = "DT_DOUBLE_REF"; + DataType[DataType["DT_INT32_REF"] = 103] = "DT_INT32_REF"; + DataType[DataType["DT_UINT8_REF"] = 104] = "DT_UINT8_REF"; + DataType[DataType["DT_INT16_REF"] = 105] = "DT_INT16_REF"; + DataType[DataType["DT_INT8_REF"] = 106] = "DT_INT8_REF"; + DataType[DataType["DT_STRING_REF"] = 107] = "DT_STRING_REF"; + DataType[DataType["DT_COMPLEX64_REF"] = 108] = "DT_COMPLEX64_REF"; + DataType[DataType["DT_INT64_REF"] = 109] = "DT_INT64_REF"; + DataType[DataType["DT_BOOL_REF"] = 110] = "DT_BOOL_REF"; + DataType[DataType["DT_QINT8_REF"] = 111] = "DT_QINT8_REF"; + DataType[DataType["DT_QUINT8_REF"] = 112] = "DT_QUINT8_REF"; + DataType[DataType["DT_QINT32_REF"] = 113] = "DT_QINT32_REF"; + DataType[DataType["DT_BFLOAT16_REF"] = 114] = "DT_BFLOAT16_REF"; + })(DataType || (DataType = {})); + var SaverDef; + (function (SaverDef) { + /** CheckpointFormatVersion enum. */ + var CheckpointFormatVersion; + (function (CheckpointFormatVersion) { + CheckpointFormatVersion[CheckpointFormatVersion["LEGACY"] = 0] = "LEGACY"; + CheckpointFormatVersion[CheckpointFormatVersion["V1"] = 1] = "V1"; + CheckpointFormatVersion[CheckpointFormatVersion["V2"] = 2] = "V2"; + })(CheckpointFormatVersion = SaverDef.CheckpointFormatVersion || (SaverDef.CheckpointFormatVersion = {})); + })(SaverDef || (SaverDef = {})); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var CUSTOM_OPS = {}; + /** + * Register an Op for graph model executor. This allow you to register + * TensorFlow custom op or override existing op. + * + * Here is an example of registering a new MatMul Op. + * ```js + * const customMatmul = (node) => + * tf.matMul( + * node.inputs[0], node.inputs[1], + * node.attrs['transpose_a'], node.attrs['transpose_b']); + * + * tf.registerOp('MatMul', customMatmul); + * ``` + * The inputs and attrs of the node object is based on the TensorFlow op + * registry. + * + * @param name The Tensorflow Op name. + * @param opFunc An op function which is called with the current graph node + * during execution and needs to return a tensor or a list of tensors. The node + * has the following attributes: + * - attr: A map from attribute name to its value + * - inputs: A list of input tensors + */ + /** @doc {heading: 'Models', subheading: 'Op Registry'} */ + function registerOp(name, opFunc) { + var opMapper = { + tfOpName: name, + category: 'custom', + inputs: [], + attrs: [], + customExecutor: opFunc + }; + CUSTOM_OPS[name] = opMapper; + } + /** + * Retrieve the OpMapper object for the registered op. + * + * @param name The Tensorflow Op name. + */ + /** @doc {heading: 'Models', subheading: 'Op Registry'} */ + function getRegisteredOp(name) { + return CUSTOM_OPS[name]; + } + /** + * Deregister the Op for graph model executor. + * + * @param name The Tensorflow Op name. + */ + /** @doc {heading: 'Models', subheading: 'Op Registry'} */ + function deregisterOp(name) { + delete CUSTOM_OPS[name]; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function getParamValue(paramName, node, tensorMap, context) { + var inputParam = node.inputParams[paramName]; + if (inputParam && inputParam.inputIndexStart !== undefined) { + var start = inputParam.inputIndexStart; + var end = inputParam.inputIndexEnd === 0 ? + undefined : + (inputParam.inputIndexEnd === undefined ? start + 1 : + inputParam.inputIndexEnd); + if (inputParam.type === 'tensor') { + return getTensor(node.inputNames[inputParam.inputIndexStart], tensorMap, context); + } + if (inputParam.type === 'tensors') { + var inputs = node.inputNames.slice(start, end); + return inputs.map(function (name) { return getTensor(name, tensorMap, context); }); + } + var tensor = getTensor(node.inputNames.slice(start)[0], tensorMap, context); + var data = tensor.dataSync(); + return inputParam.type === 'number' ? + data[0] : + tfc.util.toNestedArray(tensor.shape, data); + } + var attrParam = node.attrParams[paramName]; + return attrParam && attrParam.value; + } + /** + * Retrieve the tensor based on input name by extracting the node name and + * output index information. + * @param name Node input name + * @param tensorsMap Tensors map keyed by the node + */ + function getTensor(name, tensorsMap, context) { + var _a = parseNodeName(name), nodeName = _a[0], index = _a[1]; + var contextId = context.currentContextIds.find(function (contextId) { + return !!tensorsMap[getNodeNameWithContextId(nodeName, contextId)]; + }); + return contextId !== undefined ? + tensorsMap[getNodeNameWithContextId(nodeName, contextId)][index] : + undefined; + } + /** + * Retrieve the tensors based on input name for current context. + * @param name Node input name + * @param tensorsMap Tensors map keyed by the node + */ + function getTensorsForCurrentContenxt(name, tensorsMap, context) { + return tensorsMap[getNodeNameWithContextId(name, context.currentContextId)]; + } + /** + * Returns the node name and index from the Node input name. + * @param inputName The input name of the node, in format of + * node_name:output_index, i.e. MatMul:0, if the output_index is not set, it is + * default to 0. + */ + function getNodeNameAndIndex(inputName, context) { + var _a = parseNodeName(inputName), nodeName = _a[0], index = _a[1]; + return [ + getNodeNameWithContextId(nodeName, context && context.currentContextId), + index + ]; + } + function getNodeNameWithContextId(name, contextId) { + return !!contextId ? name + "-" + contextId : name; + } + function parseNodeName(name) { + var parts = name.split(':'); + if (parts.length === 1) { + return [name, 0]; + } + var nodeName = parts[0]; + return [nodeName, Number(parts[parts.length - 1])]; + } + function getPadding(node, tensorMap, context) { + var pad = getParamValue('pad', node, tensorMap, context); + if (pad === 'explicit') { + // This is 1d array, we need to convert it to 2d array + pad = getParamValue('explicitPaddings', node, tensorMap, context); + var explicitPadding = [[0, 0], [0, 0], [0, 0], [0, 0]]; + for (var i = 0; i < 4; i++) { + explicitPadding[i][0] = pad[i * 2]; + explicitPadding[i][1] = pad[i * 2 + 1]; + } + return explicitPadding; + } + return pad; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json = [ + { + 'tfOpName': 'Add', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'AddV2', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'AddN', + 'category': 'arithmetic', + 'inputs': [{ 'start': 0, 'end': 0, 'name': 'tensors', 'type': 'tensors' }] + }, + { + 'tfOpName': 'BiasAdd', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sub', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'RealDiv', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Div', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'DivNoNan', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'FloorDiv', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Mul', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Maximum', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' } + ] + }, + { + 'tfOpName': 'Minimum', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' } + ] + }, + { + 'tfOpName': 'Pow', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'SquaredDifference', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Mod', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'FloorMod', + 'category': 'arithmetic', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + } + ]; + + var arithmetic = { + __proto__: null, + json: json + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$1 = [ + { + 'tfOpName': 'Abs', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Acos', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Asin', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Atan', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Atan2', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'y', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Ceil', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'ClipByValue', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'clip_value_min', 'name': 'clipValueMin', 'type': 'number' }, + { 'tfName': 'clip_value_max', 'name': 'clipValueMax', 'type': 'number' } + ] + }, + { + 'tfOpName': 'Complex', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'real', 'type': 'tensor' }, + { 'start': 1, 'name': 'imag', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'ComplexAbs', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Cos', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Cosh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Elu', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Exp', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Floor', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Log', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Imag', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, { + 'tfName': 'Tout', + 'name': 'outputType', + 'type': 'dtype', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'Neg', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Real', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, { + 'tfName': 'Tout', + 'name': 'outputType', + 'type': 'dtype', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'Prelu', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'alpha', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Relu', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Relu6', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, { + 'tfName': 'clipValueMin', + 'name': 'clipValueMin', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'clipValueMax', + 'name': 'clipValueMax', + 'type': 'number', + 'defaultValue': 6 + } + ] + }, + { + 'tfOpName': 'Selu', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sigmoid', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sin', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sinh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sqrt', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Rsqrt', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Square', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Tan', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Tanh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Sign', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Round', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Expm1', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Log1p', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Reciprocal', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Softplus', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Asinh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Acosh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Atanh', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Erf', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Prod', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axes', 'type': 'number[]' }, + ], + 'attrs': [ + { + 'tfName': 'keep_dims', + 'name': 'keepDims', + 'type': 'bool', + 'notSupported': true + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'LeakyRelu', + 'category': 'basic_math', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'alpha', + 'name': 'alpha', + 'type': 'number', + 'defaultValue': 0.2 + }, + { + 'tfName': 'T', + 'name': 'dtype', + 'type': 'dtype', + 'notSupported': true + } + ] + } + ]; + + var basicMath = { + __proto__: null, + json: json$1 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$2 = [ + { + 'tfOpName': 'LoopCond', + 'category': 'control', + 'inputs': [{ 'start': 0, 'name': 'pred', 'type': 'tensor' }] + }, + { + 'tfOpName': 'Switch', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'data', 'type': 'tensor' }, + { 'start': 1, 'name': 'pred', 'type': 'tensor' } + ] + }, + { + 'tfOpName': 'Merge', + 'category': 'control', + 'inputs': [{ 'start': 0, 'end': 0, 'name': 'tensors', 'type': 'tensors' }] + }, + { + 'tfOpName': 'Enter', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, + { 'tfName': 'frame_name', 'name': 'frameName', 'type': 'string' }, + { 'tfName': 'is_constant', 'name': 'isConstant', 'type': 'bool' } + ] + }, + { + 'tfOpName': 'Exit', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'NextIteration', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'TensorArrayV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'size', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }, + { 'tfName': 'element_shape', 'name': 'elementShape', 'type': 'shape' }, + { 'tfName': 'dynamic_size', 'name': 'dynamicSize', 'type': 'bool' }, + { 'tfName': 'clear_after_read', 'name': 'clearAfterRead', 'type': 'bool' }, + { + 'tfName': 'identical_element_shapes', + 'name': 'identicalElementShapes', + 'type': 'bool' + }, + { 'tfName': 'tensor_array_name', 'name': 'name', 'type': 'string' } + ] + }, + { + 'tfOpName': 'TensorArrayWriteV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'index', 'type': 'number' }, + { 'start': 2, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 3, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'TensorArrayReadV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'index', 'type': 'number' }, + { 'start': 2, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [{ + 'tfName': 'dtype', + 'name': 'dtype', + 'type': 'dtype', + 'notSupported': true + }] + }, + { + 'tfOpName': 'TensorArrayGatherV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'number[]' }, + { 'start': 2, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }, + { 'tfName': 'element_shape', 'name': 'elementShape', 'type': 'shape' } + ] + }, + { + 'tfOpName': 'TensorArrayScatterV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'number[]' }, + { 'start': 2, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 3, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorArrayConcatV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }, { + 'tfName': 'element_shape_except0', + 'name': 'elementShapeExcept0', + 'type': 'shape', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'TensorArraySplitV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 2, 'name': 'lengths', 'type': 'number[]' }, + { 'start': 3, 'name': 'flowIn', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorArraySizeV3', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }, + { 'start': 1, 'name': 'flowIn', 'type': 'number' } + ] + }, + { + 'tfOpName': 'TensorArrayCloseV3', + 'category': 'control', + 'inputs': [{ 'start': 0, 'name': 'tensorArrayId', 'type': 'tensor' }] + }, + { + 'tfOpName': 'StatelessIf', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'cond', 'type': 'tensor' }, + { 'start': 1, 'end': 0, 'name': 'args', 'type': 'tensors' } + ], + 'attrs': [ + { 'tfName': 'then_branch', 'name': 'thenBranch', 'type': 'func' }, + { 'tfName': 'else_branch', 'name': 'elseBranch', 'type': 'func' } + ] + }, + { + 'tfOpName': 'If', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'cond', 'type': 'tensor' }, + { 'start': 1, 'end': 0, 'name': 'args', 'type': 'tensors' } + ], + 'attrs': [ + { 'tfName': 'then_branch', 'name': 'thenBranch', 'type': 'func' }, + { 'tfName': 'else_branch', 'name': 'elseBranch', 'type': 'func' } + ] + }, + { + 'tfOpName': 'StatelessWhile', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'end': 0, 'name': 'args', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'cond', 'name': 'cond', 'type': 'func' }, + { 'tfName': 'body', 'name': 'body', 'type': 'func' } + ] + }, + { + 'tfOpName': 'While', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'end': 0, 'name': 'args', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'cond', 'name': 'cond', 'type': 'func' }, + { 'tfName': 'body', 'name': 'body', 'type': 'func' } + ] + }, + { + 'tfOpName': 'TensorListScatter', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'number[]' }, + { 'start': 2, 'name': 'elementShape', 'type': 'shape' } + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListScatterV2', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'number[]' }, + { 'start': 2, 'name': 'elementShape', 'type': 'shape' }, + { 'start': 3, 'name': 'numElements', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListGather', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'number[]' }, + { 'start': 2, 'name': 'elementShape', 'type': 'shape' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListGetItem', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'index', 'type': 'number' }, + { 'start': 2, 'name': 'elementShape', 'type': 'shape' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListSetItem', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'index', 'type': 'number' }, + { 'start': 2, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListReserve', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'elementShape', 'type': 'shape' }, + { 'start': 1, 'name': 'numElements', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListFromTensor', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 1, 'name': 'elementShape', 'type': 'shape' } + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListStack', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'elementShape', 'type': 'shape' }, + ], + 'attrs': [ + { 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }, + { 'tfName': 'num_elements', 'name': 'numElements', 'type': 'dtype' } + ] + }, + { + 'tfOpName': 'TensorListSplit', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + { 'start': 1, 'name': 'elementShape', 'type': 'shape' }, + { 'start': 2, 'name': 'lengths', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListConcat', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'element_shape', 'name': 'elementShape', 'type': 'shape' }, + { 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' } + ] + }, + { + 'tfOpName': 'TensorListPopBack', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'elementShape', 'type': 'shape' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TensorListPushBack', + 'category': 'control', + 'inputs': [ + { 'start': 0, 'name': 'tensorListId', 'type': 'tensor' }, + { 'start': 1, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [{ 'tfName': 'element_dtype', 'name': 'elementDType', 'type': 'dtype' }] + }, + ]; + + var control = { + __proto__: null, + json: json$2 + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$3 = [ + { + 'tfOpName': 'AvgPool', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + }, + { 'tfName': 'ksize', 'name': 'kernelSize', 'type': 'number[]' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'MaxPool', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + }, + { 'tfName': 'ksize', 'name': 'kernelSize', 'type': 'number[]' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'MaxPoolWithArgmax', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, + { 'tfName': 'ksize', 'name': 'kernelSize', 'type': 'number[]' }, { + 'tfName': 'include_batch_in_index', + 'name': 'includeBatchInIndex', + 'type': 'bool' + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'AvgPool3D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + }, + { 'tfName': 'ksize', 'name': 'kernelSize', 'type': 'number[]' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'MaxPool3D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + }, + { 'tfName': 'ksize', 'name': 'kernelSize', 'type': 'number[]' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Conv1D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'stride', 'name': 'stride', 'type': 'number' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NWC' + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, { + 'tfName': 'dilation', + 'name': 'dilation', + 'type': 'number', + 'defaultValue': 1 + } + ] + }, + { + 'tfOpName': 'Conv2D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, + { 'tfName': 'useCudnnOnGpu', 'name': 'useCudnnOnGpu', 'type': 'bool' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { + 'tfName': 'explicit_paddings', + 'name': 'explicitPaddings', + 'type': 'number[]', + 'defaultValue': [] + }, + { 'tfName': 'dilations', 'name': 'dilations', 'type': 'number[]' } + ] + }, + { + 'tfOpName': '_FusedConv2D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + { 'start': 2, end: 0, 'name': 'args', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'num_args', 'name': 'numArgs', 'type': 'number' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, + { + 'tfName': 'explicit_paddings', + 'name': 'explicitPaddings', + 'type': 'number[]', + 'defaultValue': [] + }, + { + 'tfName': 'use_cudnn_on_gpu', + 'name': 'useCudnnOnGpu', + 'type': 'bool', + 'defaultValue': true + }, + { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { + 'tfName': 'dilations', + 'name': 'dilations', + 'type': 'number[]', + 'defaultValue': [1, 1, 1, 1] + }, + { + 'tfName': 'fused_ops', + 'name': 'fusedOps', + 'type': 'string[]', + 'defaultValue': [] + }, + { + 'tfName': 'epsilon', + 'name': 'epsilon', + 'type': 'number', + 'defaultValue': 0.0001 + }, + ] + }, + { + 'tfOpName': 'Conv2DBackpropInput', + 'category': 'convolution', + 'inputs': [ + { 'start': 2, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + { 'start': 0, 'name': 'outputShape', 'type': 'number[]' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, + { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + }, + { + 'tfName': 'explicit_paddings', + 'name': 'explicitPaddings', + 'type': 'number[]', + 'defaultValue': [] + }, + ] + }, + { + 'tfOpName': 'DepthwiseConv2d', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'input', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { + 'tfName': 'explicit_paddings', + 'name': 'explicitPaddings', + 'type': 'number[]', + 'defaultValue': [] + }, + { 'tfName': 'dilations', 'name': 'dilations', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'DepthwiseConv2dNative', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'input', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { + 'tfName': 'explicit_paddings', + 'name': 'explicitPaddings', + 'type': 'number[]', + 'defaultValue': [] + }, + { 'tfName': 'dilations', 'name': 'dilations', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'FusedDepthwiseConv2dNative', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + { 'start': 2, end: 0, 'name': 'args', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'num_args', 'name': 'numArgs', 'type': 'number' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { + 'tfName': 'dilations', + 'name': 'dilations', + 'type': 'number[]', + 'defaultValue': [1, 1, 1, 1] + }, + { + 'tfName': 'fused_ops', + 'name': 'fusedOps', + 'type': 'string[]', + 'defaultValue': [] + } + ] + }, + { + 'tfOpName': 'Conv3D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' }, { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'defaultValue': 'NHWC' + }, + { 'tfName': 'dilations', 'name': 'dilations', 'type': 'number[]' } + ], + }, + { + 'tfOpName': 'Dilation2D', + 'category': 'convolution', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'filter', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'strides', 'name': 'strides', 'type': 'number[]' }, + { 'tfName': 'rates', 'name': 'dilations', 'type': 'number[]' }, + { 'tfName': 'padding', 'name': 'pad', 'type': 'string' } + ] + } + ]; + + var convolution = { + __proto__: null, + json: json$3 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$4 = [ + { + 'tfOpName': 'Fill', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'shape', 'type': 'number[]' }, + { 'start': 1, 'name': 'value', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'LinSpace', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'start', 'type': 'number' }, + { 'start': 1, 'name': 'stop', 'type': 'number' }, + { 'start': 2, 'name': 'num', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'OneHot', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'indices', 'type': 'tensor' }, + { 'start': 1, 'name': 'depth', 'type': 'number' }, + { 'start': 2, 'name': 'onValue', 'type': 'number', 'defaultValue': 1 }, + { 'start': 3, 'name': 'offValue', 'type': 'number', 'defaultValue': 0 }, + ], + 'attrs': [ + { + 'tfName': 'axis', + 'name': 'axis', + 'type': 'number', + 'notSupported': true + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Ones', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'shape', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'OnesLike', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [{ 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'RandomUniform', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'shape', 'type': 'number[]' }, + ], + 'attrs': [ + { + 'tfName': 'minval', + 'name': 'minval', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'maxval', + 'name': 'maxval', + 'type': 'number', + 'defaultValue': 1 + }, + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }, + { 'tfName': 'seed', 'name': 'seed', 'type': 'number', 'defaultValue': 0 }, { + 'tfName': 'seed2', + 'name': 'seed2', + 'type': 'number', + 'defaultValue': 0, + 'notSupported': true + }, + { 'tfName': 'T', 'name': 'T', 'type': 'number', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Range', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'start', 'type': 'number' }, + { 'start': 1, 'name': 'stop', 'type': 'number' }, + { 'start': 2, 'name': 'step', 'type': 'number', 'defaultValue': 0 }, + ], + 'attrs': [{ 'tfName': 'Tidx', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'TruncatedNormal', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'shape', 'type': 'number[]' }, + ], + 'attrs': [ + { + 'tfName': 'means', + 'name': 'mean', + 'type': 'number', + 'defaultValue': 0.0 + }, + { + 'tfName': 'stddev', + 'name': 'stdDev', + 'type': 'number', + 'defaultValue': 1.0 + }, + { 'tfName': 'seed', 'name': 'seed', 'type': 'number' }, { + 'tfName': 'seed2', + 'name': 'seed2', + 'type': 'number', + 'defaultValue': 0, + 'notSupported': true + }, + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' }, + { 'tfName': 'T', 'name': 'T', 'type': 'number', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Zeros', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'shape', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'ZerosLike', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [{ 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }] + }, + { + 'tfOpName': 'Multinomial', + 'category': 'creation', + 'inputs': [ + { 'start': 0, 'name': 'logits', 'type': 'tensor' }, + { 'start': 1, 'name': 'numSamples', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'seed', 'name': 'seed', 'type': 'number' }, + { 'tfName': 'seed2', 'name': 'seed2', 'type': 'number' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype' }, + { 'tfName': 'output_dtype', 'name': 'output_dtype', 'type': 'dtype' } + ] + } + ]; + + var creation = { + __proto__: null, + json: json$4 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$5 = [ + { + 'tfOpName': 'NonMaxSuppressionV2', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'boxes', 'type': 'tensor' }, + { 'start': 1, 'name': 'scores', 'type': 'tensor' }, + { 'start': 2, 'name': 'maxOutputSize', 'type': 'number' }, + { 'start': 3, 'name': 'iouThreshold', 'type': 'number' } + ] + }, + { + 'tfOpName': 'NonMaxSuppressionV3', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'boxes', 'type': 'tensor' }, + { 'start': 1, 'name': 'scores', 'type': 'tensor' }, + { 'start': 2, 'name': 'maxOutputSize', 'type': 'number' }, + { 'start': 3, 'name': 'iouThreshold', 'type': 'number' }, + { 'start': 4, 'name': 'scoreThreshold', 'type': 'number' } + ] + }, + { + 'tfOpName': 'NonMaxSuppressionV4', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'boxes', 'type': 'tensor' }, + { 'start': 1, 'name': 'scores', 'type': 'tensor' }, + { 'start': 2, 'name': 'maxOutputSize', 'type': 'number' }, + { 'start': 3, 'name': 'iouThreshold', 'type': 'number' }, + { 'start': 4, 'name': 'scoreThreshold', 'type': 'number' } + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true }, { + 'tfName': 'T_threshold', + 'name': 'threshold', + 'type': 'dtype', + 'notSupported': true + }, + { + 'tfName': 'pad_to_max_output_size', + 'name': 'padToMaxOutputSize', + 'type': 'bool' + } + ] + }, + { + 'tfOpName': 'NonMaxSuppressionV5', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'boxes', 'type': 'tensor' }, + { 'start': 1, 'name': 'scores', 'type': 'tensor' }, + { 'start': 2, 'name': 'maxOutputSize', 'type': 'number' }, + { 'start': 3, 'name': 'iouThreshold', 'type': 'number' }, + { 'start': 4, 'name': 'scoreThreshold', 'type': 'number' }, + { 'start': 5, 'name': 'softNmsSigma', 'type': 'number' } + ] + }, + { + 'tfOpName': 'Where', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'condition', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'ListDiff', + 'category': 'dynamic', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'y', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'T', + 'name': 'dtype', + 'type': 'dtype', + 'notSupported': true + }] + } + ]; + + var dynamic = { + __proto__: null, + json: json$5 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$6 = [{ + 'tfOpName': 'TopKV2', + 'category': 'evaluation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'k', 'type': 'number' }, + ], + 'attrs': [{ 'tfName': 'sorted', 'name': 'sorted', 'type': 'bool' }] + }]; + + var evaluation = { + __proto__: null, + json: json$6 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$7 = [ + { + 'tfOpName': 'PlaceholderWithDefault', + 'category': 'graph', + 'inputs': [ + { 'start': 0, 'name': 'default', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'shape', 'name': 'shape', 'type': 'shape' }, + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' } + ] + }, + { + 'tfOpName': 'Placeholder', + 'category': 'graph', + 'attrs': [ + { 'tfName': 'shape', 'name': 'shape', 'type': 'shape' }, + { 'tfName': 'dtype', 'name': 'dtype', 'type': 'dtype' } + ] + }, + { 'tfOpName': 'Const', 'category': 'graph' }, { + 'tfOpName': 'Identity', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'IdentityN', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'end': 0, 'name': 'x', 'type': 'tensors' }] + }, + { + 'tfOpName': 'Snapshot', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'Rank', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'Size', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'Shape', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'ShapeN', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'end': 0, 'name': 'x', 'type': 'tensors' }] + }, + { + 'tfOpName': 'Print', + 'category': 'graph', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'data', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'message', 'name': 'message', 'type': 'string' }, { + 'tfName': 'first_n', + 'name': 'firstN', + 'type': 'number', + 'notSupported': true + }, + { + 'tfName': 'summarize', + 'name': 'summarize', + 'type': 'number', + 'defaultValue': 3 + } + ] + }, + { 'tfOpName': 'NoOp', 'category': 'graph', 'inputs': [] }, { + 'tfOpName': 'StopGradient', + 'category': 'graph', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'FakeQuantWithMinMaxVars', + 'category': 'graph', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'min', 'name': 'min', 'type': 'number' }, + { 'tfName': 'max', 'name': 'max', 'type': 'number' } + ] + } + ]; + + var graph = { + __proto__: null, + json: json$7 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$8 = [ + { + 'tfOpName': 'ResizeBilinear', + 'category': 'image', + 'inputs': [ + { 'start': 0, 'name': 'images', 'type': 'tensor' }, + { 'start': 1, 'name': 'size', 'type': 'number[]' }, + ], + 'attrs': [ + { 'tfName': 'align_corners', 'name': 'alignCorners', 'type': 'bool' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'ResizeNearestNeighbor', + 'category': 'image', + 'inputs': [ + { 'start': 0, 'name': 'images', 'type': 'tensor' }, + { 'start': 1, 'name': 'size', 'type': 'number[]' }, + ], + 'attrs': [ + { 'tfName': 'align_corners', 'name': 'alignCorners', 'type': 'bool' }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'CropAndResize', + 'category': 'image', + 'inputs': [ + { 'start': 0, 'name': 'image', 'type': 'tensor' }, + { 'start': 1, 'name': 'boxes', 'type': 'tensor' }, + { 'start': 2, 'name': 'boxInd', 'type': 'tensor' }, + { 'start': 3, 'name': 'cropSize', 'type': 'number[]' }, + ], + 'attrs': [ + { 'tfName': 'method', 'name': 'method', 'type': 'string' }, { + 'tfName': 'extrapolation_value', + 'name': 'extrapolationValue', + 'type': 'number' + } + ] + } + ]; + + var image = { + __proto__: null, + json: json$8 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$9 = [ + { + 'tfOpName': 'Equal', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'NotEqual', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Greater', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'GreaterEqual', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Less', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'LessEqual', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'LogicalAnd', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'LogicalNot', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'LogicalOr', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Select', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'condition', 'type': 'tensor' }, + { 'start': 1, 'name': 'a', 'type': 'tensor' }, + { 'start': 2, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'SelectV2', + 'category': 'logical', + 'inputs': [ + { 'start': 0, 'name': 'condition', 'type': 'tensor' }, + { 'start': 1, 'name': 'a', 'type': 'tensor' }, + { 'start': 2, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'T', + 'name': 'dtype', + 'type': 'dtype', + 'notSupported': true + }] + } + ]; + + var logical = { + __proto__: null, + json: json$9 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$a = [ + { + 'tfOpName': '_FusedMatMul', + 'category': 'matrices', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + { 'start': 2, end: 0, 'name': 'args', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'num_args', 'name': 'numArgs', 'type': 'number' }, { + 'tfName': 'fused_ops', + 'name': 'fusedOps', + 'type': 'string[]', + 'defaultValue': [] + }, + { + 'tfName': 'epsilon', + 'name': 'epsilon', + 'type': 'number', + 'defaultValue': 0.0001 + }, + { + 'tfName': 'transpose_a', + 'name': 'transposeA', + 'type': 'bool', + 'defaultValue': false + }, + { + 'tfName': 'transpose_b', + 'name': 'transposeB', + 'type': 'bool', + 'defaultValue': false + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'MatMul', + 'category': 'matrices', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'transpose_a', + 'name': 'transposeA', + 'type': 'bool', + 'defaultValue': false + }, + { + 'tfName': 'transpose_b', + 'name': 'transposeB', + 'type': 'bool', + 'defaultValue': false + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'BatchMatMul', + 'category': 'matrices', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'adj_x', + 'name': 'transposeA', + 'type': 'bool', + 'defaultValue': false + }, + { + 'tfName': 'adj_y', + 'name': 'transposeB', + 'type': 'bool', + 'defaultValue': false + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'BatchMatMulV2', + 'category': 'matrices', + 'inputs': [ + { 'start': 0, 'name': 'a', 'type': 'tensor' }, + { 'start': 1, 'name': 'b', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'adj_x', + 'name': 'transposeA', + 'type': 'bool', + 'defaultValue': false + }, + { + 'tfName': 'adj_y', + 'name': 'transposeB', + 'type': 'bool', + 'defaultValue': false + }, + { 'tfName': 'T', 'name': 'dtype', 'type': 'dtype', 'notSupported': true } + ] + }, + { + 'tfOpName': 'Transpose', + 'category': 'matrices', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'perm', 'type': 'number[]' }, + ], + 'attrs': [{ + 'tfName': 'T', + 'name': 'dtype', + 'type': 'dtype', + 'notSupported': true + }] + } + ]; + + var matrices = { + __proto__: null, + json: json$a + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$b = [ + { + 'tfOpName': 'FusedBatchNorm', + 'category': 'normalization', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'scale', 'type': 'tensor' }, + { 'start': 2, 'name': 'offset', 'type': 'tensor' }, + { 'start': 3, 'name': 'mean', 'type': 'tensor' }, + { 'start': 4, 'name': 'variance', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'epsilon', + 'name': 'epsilon', + 'type': 'number', + 'defaultValue': 0.001 + }, + { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'FusedBatchNormV2', + 'category': 'normalization', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'scale', 'type': 'tensor' }, + { 'start': 2, 'name': 'offset', 'type': 'tensor' }, + { 'start': 3, 'name': 'mean', 'type': 'tensor' }, + { 'start': 4, 'name': 'variance', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'epsilon', + 'name': 'epsilon', + 'type': 'number', + 'defaultValue': 0.001 + }, + { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'FusedBatchNormV3', + 'category': 'normalization', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'scale', 'type': 'tensor' }, + { 'start': 2, 'name': 'offset', 'type': 'tensor' }, + { 'start': 3, 'name': 'mean', 'type': 'tensor' }, + { 'start': 4, 'name': 'variance', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'epsilon', + 'name': 'epsilon', + 'type': 'number', + 'defaultValue': 0.001 + }, + { + 'tfName': 'data_format', + 'name': 'dataFormat', + 'type': 'string', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'LRN', + 'category': 'normalization', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'depth_radius', + 'name': 'radius', + 'type': 'number', + 'defaultValue': 5 + }, + { 'tfName': 'bias', 'name': 'bias', 'type': 'number', 'defaultValue': 1.0 }, + { + 'tfName': 'alpha', + 'name': 'alpha', + 'type': 'number', + 'defaultValue': 1.0 + }, + { + 'tfName': 'beta', + 'name': 'beta', + 'type': 'number', + 'defaultValue': 0.5 + } + ] + }, + { + 'tfOpName': 'Softmax', + 'category': 'normalization', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'LogSoftmax', + 'category': 'normalization', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'SparseToDense', + 'category': 'normalization', + 'inputs': [ + { 'start': 0, 'name': 'sparseIndices', 'type': 'tensor' }, + { 'start': 1, 'name': 'outputShape', 'type': 'number[]' }, + { 'start': 2, 'name': 'sparseValues', 'type': 'tensor' }, + { 'start': 3, 'name': 'defaultValue', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'validate_indices', + 'name': 'validateIndices', + 'type': 'bool', + 'defaultValue': true, + 'notSupported': true + }] + } + ]; + + var normalization = { + __proto__: null, + json: json$b + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$c = [ + { + 'tfOpName': 'Max', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'Mean', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'Min', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'Sum', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'All', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'Any', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'ArgMax', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number' } + ] + }, + { + 'tfOpName': 'ArgMin', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number' } + ] + }, + { + 'tfOpName': 'Prod', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' }, + ], + 'attrs': [{ 'tfName': 'keep_dims', 'name': 'keepDims', 'type': 'bool' }] + }, + { + 'tfOpName': 'Cumsum', + 'category': 'reduction', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number' }, + ], + 'attrs': [ + { 'tfName': 'exclusive', 'name': 'exclusive', 'type': 'bool' }, + { 'tfName': 'reverse', 'name': 'reverse', 'type': 'bool' } + ] + } + ]; + + var reduction = { + __proto__: null, + json: json$c + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$d = [ + { + 'tfOpName': 'ConcatV2', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'end': -1, 'name': 'tensors', 'type': 'tensors' }, + { 'start': -1, 'name': 'axis', 'type': 'number' } + ], + 'attrs': [{ 'tfName': 'N', 'name': 'n', 'type': 'number', 'defaultValue': 2 }] + }, + { + 'tfOpName': 'Concat', + 'category': 'slice_join', + 'inputs': [ + { 'start': 1, 'end': 0, 'name': 'tensors', 'type': 'tensors' }, + { 'start': 0, 'name': 'axis', 'type': 'number' } + ], + 'attrs': [{ 'tfName': 'N', 'name': 'n', 'type': 'number', 'defaultValue': 2 }] + }, + { + 'tfOpName': 'GatherV2', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'tensor' }, + { 'start': 2, 'name': 'axis', 'type': 'number', 'defaultValue': 0 } + ] + }, + { + 'tfOpName': 'Gather', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'axis', 'name': 'axis', 'type': 'number', 'defaultValue': 0 }, { + 'tfName': 'validate_indices', + 'name': 'validateIndices', + 'type': 'bool', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'Reverse', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'dims', 'type': 'bool', 'notSupported': true } + ] + }, + { + 'tfOpName': 'ReverseV2', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'Slice', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'begin', 'type': 'number[]' }, + { 'start': 2, 'name': 'size', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'StridedSlice', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'begin', 'type': 'number[]' }, + { 'start': 2, 'name': 'end', 'type': 'number[]' }, + { 'start': 3, 'name': 'strides', 'type': 'number[]' }, + ], + 'attrs': [ + { + 'tfName': 'begin_mask', + 'name': 'beginMask', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'end_mask', + 'name': 'endMask', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'new_axis_mask', + 'name': 'newAxisMask', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'ellipsis_mask', + 'name': 'ellipsisMask', + 'type': 'number', + 'defaultValue': 0 + }, + { + 'tfName': 'shrink_axis_mask', + 'name': 'shrinkAxisMask', + 'type': 'number', + 'defaultValue': 0 + } + ] + }, + { + 'tfOpName': 'Pack', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'end': 0, 'name': 'tensors', 'type': 'tensors' }, + ], + 'attrs': [ + { 'tfName': 'axis', 'name': 'axis', 'type': 'number', 'defaultValue': 0 } + ] + }, + { + 'tfOpName': 'Unpack', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'tensor', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'axis', 'name': 'axis', 'type': 'number', 'defaultValue': 0 }, { + 'tfName': 'num', + 'name': 'num', + 'type': 'number', + 'defaultValue': 0, + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'Tile', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'reps', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'Split', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'axis', 'type': 'number', 'defaultValue': 0 }, + { 'start': 1, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'num_split', + 'name': 'numOrSizeSplits', + 'type': 'number', + 'defaultValue': 1 + }] + }, + { + 'tfOpName': 'SplitV', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'numOrSizeSplits', 'type': 'number[]' }, + { 'start': 2, 'name': 'axis', 'type': 'number', 'defaultValue': 0 } + ] + }, + { + 'tfOpName': 'ScatterNd', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'indices', 'type': 'tensor' }, + { 'start': 1, 'name': 'values', 'type': 'tensor' }, + { 'start': 2, 'name': 'shape', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'GatherNd', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'indices', 'type': 'tensor' } + ] + }, + { + 'tfOpName': 'SparseToDense', + 'category': 'slice_join', + 'inputs': [ + { 'start': 0, 'name': 'sparseIndices', 'type': 'tensor' }, + { 'start': 1, 'name': 'outputShape', 'type': 'number[]' }, + { 'start': 2, 'name': 'sparseValues', 'type': 'tensor' }, + { 'start': 3, 'name': 'defaultValue', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'validate_indices', + 'name': 'validateIndices', + 'type': 'bool', + 'defaultValue': false, + 'notSupported': true + }] + } + ]; + + var sliceJoin = { + __proto__: null, + json: json$d + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$e = [ + { + 'tfOpName': 'FFT', + 'category': 'spectral', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'IFFT', + 'category': 'spectral', + 'inputs': [{ 'start': 0, 'name': 'x', 'type': 'tensor' }] + }, + { + 'tfOpName': 'RFFT', + 'category': 'spectral', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, { + 'start': 1, + 'name': 'fft_length', + 'type': 'number', + 'notSupported': true + } + ] + }, + { + 'tfOpName': 'IRFFT', + 'category': 'spectral', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, { + 'start': 1, + 'name': 'fft_length', + 'type': 'number', + 'notSupported': true + } + ] + } + ]; + + var spectral = { + __proto__: null, + json: json$e + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var json$f = [ + { + 'tfOpName': 'Cast', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { + 'tfName': 'SrcT', + 'name': 'sdtype', + 'type': 'dtype', + 'notSupported': true + }, + { 'tfName': 'DstT', 'name': 'dtype', 'type': 'dtype' } + ] + }, + { + 'tfOpName': 'ExpandDims', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'axis', 'type': 'number' } + ] + }, + { + 'tfOpName': 'Pad', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'padding', 'type': 'number[]' }, + ], + 'attrs': [{ + 'tfName': 'constant_value', + 'name': 'constantValue', + 'type': 'number', + 'defaultValue': 0 + }] + }, + { + 'tfOpName': 'PadV2', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'padding', 'type': 'number[]' }, { + 'start': 2, + 'name': 'constantValue', + 'type': 'number', + 'defaultValue': 0 + } + ] + }, + { + 'tfOpName': 'Reshape', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'shape', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'Squeeze', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [{ + 'tfName': 'axis', + 'tfDeprecatedName': 'squeeze_dims', + 'name': 'axis', + 'type': 'number[]' + }] + }, + { + 'tfOpName': 'SpaceToBatchND', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'blockShape', 'type': 'number[]' }, + { 'start': 2, 'name': 'paddings', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'BatchToSpaceND', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'blockShape', 'type': 'number[]' }, + { 'start': 2, 'name': 'crops', 'type': 'number[]' } + ] + }, + { + 'tfOpName': 'DepthToSpace', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + ], + 'attrs': [ + { 'tfName': 'block_size', 'name': 'blockSize', 'type': 'number' }, + { 'tfName': 'data_format', 'name': 'dataFormat', 'type': 'string' } + ] + }, + { + 'tfOpName': 'BroadcastTo', + 'category': 'transformation', + 'inputs': [ + { 'start': 0, 'name': 'x', 'type': 'tensor' }, + { 'start': 1, 'name': 'shape', 'type': 'number[]' }, + ], + 'attrs': [] + } + ]; + + var transformation = { + __proto__: null, + json: json$f + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var OperationMapper = /** @class */ (function () { + // Loads the op mapping from the JSON file. + function OperationMapper() { + var ops = [ + arithmetic, basicMath, control, convolution, creation, dynamic, + evaluation, logical, image, graph, matrices, normalization, reduction, + sliceJoin, spectral, transformation + ]; + var mappersJson = [].concat.apply([], ops.map(function (op) { return op.json; })); + this.opMappers = mappersJson.reduce(function (map, mapper) { + map[mapper.tfOpName] = mapper; + return map; + }, {}); + } + Object.defineProperty(OperationMapper, "Instance", { + // Singleton instance for the mapper + get: function () { + return this._instance || (this._instance = new this()); + }, + enumerable: true, + configurable: true + }); + // Converts the model from Tensorflow GraphDef to local representation for + // TensorFlow.js API + OperationMapper.prototype.transformGraph = function (graph, signature) { + var _this = this; + if (signature === void 0) { signature = {}; } + var tfNodes = graph.node; + var placeholders = []; + var weights = []; + var nodes = tfNodes.reduce(function (map, node) { + map[node.name] = _this.mapNode(node); + if (node.op.startsWith('Placeholder')) { + placeholders.push(map[node.name]); + } + if (node.op === 'Const') { + weights.push(map[node.name]); + } + return map; + }, {}); + var inputs = []; + var outputs = []; + var inputNodeNameToKey = {}; + var outputNodeNameToKey = {}; + if (signature != null) { + inputNodeNameToKey = this.mapSignatureEntries(signature.inputs); + outputNodeNameToKey = this.mapSignatureEntries(signature.outputs); + } + var allNodes = Object.keys(nodes); + allNodes.forEach(function (key) { + var node = nodes[key]; + node.inputNames.forEach(function (name) { + var nodeName = getNodeNameAndIndex(name)[0]; + node.inputs.push(nodes[nodeName]); + nodes[nodeName].children.push(node); + }); + }); + // if signature has not outputs set, add any node that does not have + // outputs. + if (Object.keys(outputNodeNameToKey).length === 0) { + allNodes.forEach(function (key) { + var node = nodes[key]; + if (node.children.length === 0) { + outputs.push(node); + } + }); + } + else { + Object.keys(outputNodeNameToKey).forEach(function (name) { + var nodeName = getNodeNameAndIndex(name)[0]; + var node = nodes[nodeName]; + if (node != null) { + node.signatureKey = outputNodeNameToKey[name]; + outputs.push(node); + } + }); + } + if (Object.keys(inputNodeNameToKey).length > 0) { + Object.keys(inputNodeNameToKey).forEach(function (name) { + var nodeName = getNodeNameAndIndex(name)[0]; + var node = nodes[nodeName]; + if (node) { + node.signatureKey = inputNodeNameToKey[name]; + inputs.push(node); + } + }); + } + else { + inputs = placeholders; + } + var functions = {}; + if (graph.library != null && graph.library.function != null) { + functions = graph.library.function.reduce(function (functions, func) { + functions[func.signature.name] = _this.mapFunction(func); + return functions; + }, {}); + } + return { + nodes: nodes, + inputs: inputs, + outputs: outputs, + weights: weights, + placeholders: placeholders, + signature: signature, + functions: functions + }; + }; + OperationMapper.prototype.mapSignatureEntries = function (entries) { + return Object.keys(entries || {}) + .reduce(function (prev, curr) { + prev[entries[curr].name] = curr; + return prev; + }, {}); + }; + OperationMapper.prototype.mapNode = function (node) { + // Unsupported ops will cause an error at run-time (not parse time), since + // they may not be used by the actual execution subgraph. + var mapper = getRegisteredOp(node.op) || this.opMappers[node.op] || {}; + if (node.attr == null) { + node.attr = {}; + } + var newNode = { + name: node.name, + op: node.op, + category: mapper.category, + inputNames: (node.input || + []).map(function (input) { return input.startsWith('^') ? input.substr(1) : input; }), + inputs: [], + children: [], + inputParams: {}, + attrParams: {}, + rawAttrs: node.attr + }; + if (mapper.inputs != null) { + newNode.inputParams = + mapper.inputs.reduce(function (map, param) { + map[param.name] = { + type: param.type, + inputIndexStart: param.start, + inputIndexEnd: param.end + }; + return map; + }, {}); + } + if (mapper.attrs != null) { + newNode.attrParams = + mapper.attrs.reduce(function (map, param) { + var type = param.type; + var value = undefined; + switch (param.type) { + case 'string': + value = getStringParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getStringParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'string[]': + value = getStringArrayParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getStringArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'number': + value = getNumberParam(node.attr, param.tfName, (param.defaultValue || 0)); + if (value === undefined && !!param.tfDeprecatedName) { + value = getNumberParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'number[]': + value = getNumericArrayParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getNumericArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'bool': + value = getBoolParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getBoolParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'bool[]': + value = getBoolArrayParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getBoolArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'shape': + value = getTensorShapeParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getTensorShapeParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'shape[]': + value = getTensorShapeArrayParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getTensorShapeArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'dtype': + value = getDtypeParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getDtypeParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'dtype[]': + value = getDtypeArrayParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getDtypeArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'func': + value = getFuncParam(node.attr, param.tfName, param.defaultValue); + if (value === undefined && !!param.tfDeprecatedName) { + value = getFuncParam(node.attr, param.tfDeprecatedName, param.defaultValue); + } + break; + case 'tensor': + case 'tensors': + break; + default: + throw new Error("Unsupported param type: " + param.type + " for op: " + node.op); + } + map[param.name] = { value: value, type: type }; + return map; + }, {}); + } + return newNode; + }; + // map the TFunctionDef to TFJS graph object + OperationMapper.prototype.mapFunction = function (functionDef) { + var _this = this; + var tfNodes = functionDef.nodeDef; + var placeholders = []; + var weights = []; + var nodes = {}; + if (tfNodes != null) { + nodes = tfNodes.reduce(function (map, node) { + map[node.name] = _this.mapNode(node); + if (node.op === 'Const') { + weights.push(map[node.name]); + } + return map; + }, {}); + } + var inputs = []; + var outputs = []; + functionDef.signature.inputArg.forEach(function (arg) { + var nodeName = getNodeNameAndIndex(arg.name)[0]; + var node = { + name: nodeName, + op: 'Placeholder', + inputs: [], + inputNames: [], + category: 'graph', + inputParams: {}, + attrParams: { dtype: { value: parseDtypeParam(arg.type), type: 'dtype' } }, + children: [] + }; + node.signatureKey = arg.name; + inputs.push(node); + nodes[nodeName] = node; + }); + var allNodes = Object.keys(nodes); + allNodes.forEach(function (key) { + var node = nodes[key]; + node.inputNames.forEach(function (name) { + var nodeName = getNodeNameAndIndex(name)[0]; + node.inputs.push(nodes[nodeName]); + nodes[nodeName].children.push(node); + }); + }); + var returnNodeMap = functionDef.ret; + functionDef.signature.outputArg.forEach(function (output) { + var _a = getNodeNameAndIndex(returnNodeMap[output.name]), nodeName = _a[0], index = _a[1]; + var node = nodes[nodeName]; + if (node != null) { + node.defaultOutput = index; + outputs.push(node); + } + }); + var signature = this.mapArgsToSignature(functionDef); + return { nodes: nodes, inputs: inputs, outputs: outputs, weights: weights, placeholders: placeholders, signature: signature }; + }; + OperationMapper.prototype.mapArgsToSignature = function (functionDef) { + var _this = this; + return { + methodName: functionDef.signature.name, + inputs: functionDef.signature.inputArg.reduce(function (map, arg) { + map[arg.name] = _this.mapArgToTensorInfo(arg); + return map; + }, {}), + outputs: functionDef.signature.outputArg.reduce(function (map, arg) { + map[arg.name] = _this.mapArgToTensorInfo(arg, functionDef.ret); + return map; + }, {}), + }; + }; + OperationMapper.prototype.mapArgToTensorInfo = function (arg, nameMap) { + var name = arg.name; + if (nameMap != null) { + name = nameMap[name]; + } + return { name: name, dtype: arg.type }; + }; + return OperationMapper; + }()); + function decodeBase64(text) { + var global = tfc.env().global; + if (typeof global.atob !== 'undefined') { + return global.atob(text); + } + else if (typeof Buffer !== 'undefined') { + return new Buffer(text, 'base64').toString(); + } + else { + throw new Error('Unable to decode base64 in this environment. ' + + 'Missing built-in atob() or Buffer()'); + } + } + function parseStringParam(s, keepCase) { + var value = Array.isArray(s) ? String.fromCharCode.apply(null, s) : decodeBase64(s); + return keepCase ? value : value.toLowerCase(); + } + function getStringParam(attrs, name, def, keepCase) { + if (keepCase === void 0) { keepCase = false; } + var param = attrs[name]; + if (param != null) { + return parseStringParam(param.s, keepCase); + } + return def; + } + function getBoolParam(attrs, name, def) { + var param = attrs[name]; + return param ? param.b : def; + } + function getNumberParam(attrs, name, def) { + var param = attrs[name] || {}; + var value = param['i'] != null ? param['i'] : (param['f'] != null ? param['f'] : def); + return (typeof value === 'number') ? value : parseInt(value, 10); + } + function parseDtypeParam(value) { + if (typeof (value) === 'string') { + // tslint:disable-next-line:no-any + value = DataType[value]; + } + switch (value) { + case DataType.DT_FLOAT: + return 'float32'; + case DataType.DT_INT32: + case DataType.DT_INT64: + case DataType.DT_INT8: + case DataType.DT_UINT8: + return 'int32'; + case DataType.DT_BOOL: + return 'bool'; + case DataType.DT_DOUBLE: + return 'float32'; + case DataType.DT_STRING: + return 'string'; + default: + // Unknown dtype error will happen at runtime (instead of parse time), + // since these nodes might not be used by the actual subgraph execution. + return null; + } + } + function getFuncParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.func) { + return param.func.name; + } + return def; + } + function getDtypeParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.type) { + return parseDtypeParam(param.type); + } + return def; + } + function getDtypeArrayParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.list && param.list.type) { + return param.list.type.map(function (v) { return parseDtypeParam(v); }); + } + return def; + } + function parseTensorShapeParam(shape) { + if (shape.unknownRank) { + return undefined; + } + if (shape.dim != null) { + return shape.dim.map(function (dim) { + return (typeof dim.size === 'number') ? dim.size : parseInt(dim.size, 10); + }); + } + return []; + } + function getTensorShapeParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.shape) { + return parseTensorShapeParam(param.shape); + } + return def; + } + function getNumericArrayParam(attrs, name, def) { + var param = attrs[name]; + if (param) { + return ((param.list.f && param.list.f.length ? param.list.f : + param.list.i) || + []) + .map(function (v) { return (typeof v === 'number') ? v : parseInt(v, 10); }); + } + return def; + } + function getStringArrayParam(attrs, name, def, keepCase) { + if (keepCase === void 0) { keepCase = false; } + var param = attrs[name]; + if (param && param.list && param.list.s) { + return param.list.s.map(function (v) { + return parseStringParam(v, keepCase); + }); + } + return def; + } + function getTensorShapeArrayParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.list && param.list.shape) { + return param.list.shape.map(function (v) { + return parseTensorShapeParam(v); + }); + } + return def; + } + function getBoolArrayParam(attrs, name, def) { + var param = attrs[name]; + if (param && param.list && param.list.b) { + return param.list.b; + } + return def; + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Helper class for lookup inputs and params for nodes in the model graph. + */ + var NodeValueImpl = /** @class */ (function () { + function NodeValueImpl(node, tensorMap, context) { + var _this = this; + this.node = node; + this.tensorMap = tensorMap; + this.context = context; + this.inputs = []; + this.attrs = {}; + this.inputs = node.inputNames.map(function (name) { return _this.getInput(name); }); + if (node.rawAttrs != null) { + this.attrs = Object.keys(node.rawAttrs) + .reduce(function (attrs, key) { + attrs[key] = _this.getAttr(key); + return attrs; + }, {}); + } + } + /** + * Return the value of the attribute or input param. + * @param name String: name of attribute or input param. + */ + NodeValueImpl.prototype.getInput = function (name) { + return getTensor(name, this.tensorMap, this.context); + }; + /** + * Return the value of the attribute or input param. + * @param name String: name of attribute or input param. + */ + NodeValueImpl.prototype.getAttr = function (name, defaultValue) { + var value = this.node.rawAttrs[name]; + if (value.tensor != null) { + return getTensor(name, this.tensorMap, this.context); + } + if (value.i != null || value.f != null) { + return getNumberParam(this.node.rawAttrs, name, defaultValue); + } + if (value.s != null) { + return getStringParam(this.node.rawAttrs, name, defaultValue); + } + if (value.b != null) { + return getBoolParam(this.node.rawAttrs, name, defaultValue); + } + if (value.shape != null) { + return getTensorShapeParam(this.node.rawAttrs, name, defaultValue); + } + if (value.type != null) { + return getDtypeParam(this.node.rawAttrs, name, defaultValue); + } + if (value.list != null) { + if (value.list.i != null || value.list.f != null) { + return getNumericArrayParam(this.node.rawAttrs, name, defaultValue); + } + if (value.list.s != null) { + return getStringArrayParam(this.node.rawAttrs, name, defaultValue); + } + if (value.list.shape != null) { + return getTensorShapeArrayParam(this.node.rawAttrs, name, defaultValue); + } + if (value.list.b != null) { + return getBoolArrayParam(this.node.rawAttrs, name, defaultValue); + } + if (value.list.type != null) { + return getDtypeArrayParam(this.node.rawAttrs, name, defaultValue); + } + } + return defaultValue; + }; + return NodeValueImpl; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp = function (node, tensorMap, context) { + switch (node.op) { + case 'BiasAdd': + case 'AddV2': + case 'Add': { + return [tfc.add(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'AddN': { + return [tfc.addN(getParamValue('tensors', node, tensorMap, context))]; + } + case 'FloorMod': + case 'Mod': + return [tfc.mod(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + case 'Mul': + return [tfc.mul(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + case 'RealDiv': + case 'Div': { + return [tfc.div(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'DivNoNan': { + return [tfc.divNoNan(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'FloorDiv': { + return [tfc.floorDiv(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Sub': { + return [tfc.sub(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Minimum': { + return [tfc.minimum(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Maximum': { + return [tfc.maximum(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Pow': { + return [tfc.pow(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'SquaredDifference': { + return [tfc.squaredDifference(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$1 = function (node, tensorMap, context) { + switch (node.op) { + case 'Abs': + case 'ComplexAbs': + return [tfc.abs(getParamValue('x', node, tensorMap, context))]; + case 'Acos': + return [tfc.acos(getParamValue('x', node, tensorMap, context))]; + case 'Acosh': + return [tfc.acosh(getParamValue('x', node, tensorMap, context))]; + case 'Asin': + return [tfc.asin(getParamValue('x', node, tensorMap, context))]; + case 'Asinh': + return [tfc.asinh(getParamValue('x', node, tensorMap, context))]; + case 'Atan': + return [tfc.atan(getParamValue('x', node, tensorMap, context))]; + case 'Atan2': + return [tfc.atan2(getParamValue('x', node, tensorMap, context), getParamValue('y', node, tensorMap, context))]; + case 'Atanh': + return [tfc.atanh(getParamValue('x', node, tensorMap, context))]; + case 'Ceil': + return [tfc.ceil(getParamValue('x', node, tensorMap, context))]; + case 'Complex': + return [tfc.complex(getParamValue('real', node, tensorMap, context), getParamValue('imag', node, tensorMap, context))]; + case 'Cos': + return [tfc.cos(getParamValue('x', node, tensorMap, context))]; + case 'Cosh': + return [tfc.cosh(getParamValue('x', node, tensorMap, context))]; + case 'Elu': + return [tfc.elu(getParamValue('x', node, tensorMap, context))]; + case 'Erf': + return [tfc.erf(getParamValue('x', node, tensorMap, context))]; + case 'Exp': + return [tfc.exp(getParamValue('x', node, tensorMap, context))]; + case 'Expm1': { + return [tfc.expm1(getParamValue('x', node, tensorMap, context))]; + } + case 'Floor': + return [tfc.floor(getParamValue('x', node, tensorMap, context))]; + case 'Log': + return [tfc.log(getParamValue('x', node, tensorMap, context))]; + case 'Log1p': { + return [tfc.log1p(getParamValue('x', node, tensorMap, context))]; + } + case 'Imag': + return [tfc.imag(getParamValue('x', node, tensorMap, context))]; + case 'Neg': + return [tfc.neg(getParamValue('x', node, tensorMap, context))]; + case 'Reciprocal': { + return [tfc.reciprocal(getParamValue('x', node, tensorMap, context))]; + } + case 'Real': + return [tfc.real(getParamValue('x', node, tensorMap, context))]; + case 'Relu': + return [tfc.relu(getParamValue('x', node, tensorMap, context))]; + case 'Round': { + return [tfc.round(getParamValue('x', node, tensorMap, context))]; + } + case 'Selu': + return [tfc.selu(getParamValue('x', node, tensorMap, context))]; + case 'Sigmoid': + return [tfc.sigmoid(getParamValue('x', node, tensorMap, context))]; + case 'Sin': + return [tfc.sin(getParamValue('x', node, tensorMap, context))]; + case 'Sign': { + return [tfc.sign(getParamValue('x', node, tensorMap, context))]; + } + case 'Sinh': { + return [tfc.sinh(getParamValue('x', node, tensorMap, context))]; + } + case 'Softplus': { + return [tfc.softplus(getParamValue('x', node, tensorMap, context))]; + } + case 'Sqrt': { + return [tfc.sqrt(getParamValue('x', node, tensorMap, context))]; + } + case 'Square': { + return [tfc.square(getParamValue('x', node, tensorMap, context))]; + } + case 'Tanh': { + return [tfc.tanh(getParamValue('x', node, tensorMap, context))]; + } + case 'Tan': + return [tfc.tan(getParamValue('x', node, tensorMap, context))]; + case 'Relu6': + case 'ClipByValue': + return [tfc.clipByValue(getParamValue('x', node, tensorMap, context), getParamValue('clipValueMin', node, tensorMap, context), getParamValue('clipValueMax', node, tensorMap, context))]; + case 'Rsqrt': + return [tfc.rsqrt(getTensor(node.inputNames[0], tensorMap, context))]; + case 'Prod': + return [tfc.prod(getParamValue('x', node, tensorMap, context), getParamValue('axes', node, tensorMap, context))]; + case 'LeakyRelu': + return [tfc.leakyRelu(getParamValue('x', node, tensorMap, context), getParamValue('alpha', node, tensorMap, context))]; + case 'Prelu': + return [tfc.prelu(getParamValue('x', node, tensorMap, context), getParamValue('alpha', node, tensorMap, context))]; + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function assertShapesMatchAllowUndefinedSize(shapeA, shapeB, errorMessagePrefix) { + if (errorMessagePrefix === void 0) { errorMessagePrefix = ''; } + tfc.util.assert(shapesEqualAllowUndefinedSize(shapeA, shapeB), function () { return errorMessagePrefix + (" Shapes " + shapeA + " and " + shapeB + " must match"); }); + } + function shapesEqualAllowUndefinedSize(n1, n2) { + if (n1.length !== n2.length) { + return false; + } + for (var i = 0; i < n1.length; i++) { + if (n1[i] !== -1 && n2[i] !== -1 && n1[i] !== n2[i]) { + return false; + } + } + return true; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * The TensorArray object keeps an array of Tensors. It + * allows reading from the array and writing to the array. + */ + var TensorArray = /** @class */ (function () { + function TensorArray(name, dtype, maxSize, elementShape, identicalElementShapes, dynamicSize, clearAfterRead) { + this.name = name; + this.dtype = dtype; + this.maxSize = maxSize; + this.elementShape = elementShape; + this.identicalElementShapes = identicalElementShapes; + this.dynamicSize = dynamicSize; + this.clearAfterRead = clearAfterRead; + this.tensors = []; + this.closed_ = false; + this.idTensor = tfc.scalar(0); + tfc.keep(this.idTensor); + } + Object.defineProperty(TensorArray.prototype, "id", { + get: function () { + return this.idTensor.id; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TensorArray.prototype, "closed", { + get: function () { + return this.closed_; + }, + enumerable: true, + configurable: true + }); + /** + * Dispose the tensors and idTensor and mark the TensoryArray as closed. + */ + TensorArray.prototype.clearAndClose = function () { + this.tensors.forEach(function (tensor) { return tensor.tensor.dispose(); }); + this.tensors = []; + this.closed_ = true; + this.idTensor.dispose(); + }; + TensorArray.prototype.size = function () { + return this.tensors.length; + }; + /** + * Read the value at location index in the TensorArray. + * @param index Number the index to read from. + */ + TensorArray.prototype.read = function (index) { + if (this.closed_) { + throw new Error("TensorArray " + this.name + " has already been closed."); + } + if (index < 0 || index >= this.size()) { + throw new Error("Tried to read from index " + index + ", but array size is: " + this.size()); + } + var tensorWithState = this.tensors[index]; + if (tensorWithState.cleared) { + throw new Error("TensorArray " + this.name + ": Could not read index " + index + " twice because it was cleared after a previous read " + + "(perhaps try setting clear_after_read = false?)."); + } + if (this.clearAfterRead) { + tensorWithState.cleared = true; + } + tensorWithState.read = true; + return tensorWithState.tensor; + }; + /** + * Helper method to read multiple tensors from the specified indices. + */ + TensorArray.prototype.readMany = function (indices) { + var _this = this; + return indices.map(function (index) { return _this.read(index); }); + }; + /** + * Write value into the index of the TensorArray. + * @param index number the index to write to. + * @param tensor + */ + TensorArray.prototype.write = function (index, tensor) { + if (this.closed_) { + throw new Error("TensorArray " + this.name + " has already been closed."); + } + if (index < 0 || !this.dynamicSize && index >= this.maxSize) { + throw new Error("Tried to write to index " + index + ", but array is not resizeable and size is: " + this.maxSize); + } + var t = this.tensors[index] || {}; + if (tensor.dtype !== this.dtype) { + throw new Error("TensorArray " + this.name + ": Could not write to TensorArray index " + index + ",\n because the value dtype is " + tensor.dtype + ", but TensorArray dtype is " + this.dtype + "."); + } + // Set the shape for the first time write to unknow shape tensor array + if (this.size() === 0 && + (this.elementShape == null || this.elementShape.length === 0)) { + this.elementShape = tensor.shape; + } + assertShapesMatchAllowUndefinedSize(this.elementShape, tensor.shape, "TensorArray " + this.name + ": Could not write to TensorArray index " + index + "."); + if (t.read) { + throw new Error("TensorArray " + this.name + ": Could not write to TensorArray index " + index + ", because it has already been read."); + } + if (t.written) { + throw new Error("TensorArray " + this.name + ": Could not write to TensorArray index " + index + ", because it has already been written."); + } + t.tensor = tensor; + tfc.keep(tensor); + t.written = true; + this.tensors[index] = t; + }; + /** + * Helper method to write multiple tensors to the specified indices. + */ + TensorArray.prototype.writeMany = function (indices, tensors) { + var _this = this; + if (indices.length !== tensors.length) { + throw new Error("TensorArray " + this.name + ": could not write multiple tensors," + + ("because the index size: " + indices.length + " is not the same as tensors size: " + tensors.length + ".")); + } + indices.forEach(function (i, index) { return _this.write(i, tensors[index]); }); + }; + /** + * Return selected values in the TensorArray as a packed Tensor. All of + * selected values must have been written and their shapes must all match. + * @param [indices] number[] Optional. Taking values in [0, max_value). If the + * TensorArray is not dynamic, max_value=size(). If not specified returns + * all tensors in the original order. + * @param [dtype] + */ + TensorArray.prototype.gather = function (indices, dtype) { + if (!!dtype && dtype !== this.dtype) { + throw new Error("TensorArray dtype is " + this.dtype + " but gather requested dtype " + dtype); + } + if (!indices) { + indices = []; + for (var i = 0; i < this.size(); i++) { + indices.push(i); + } + } + else { + indices = indices.slice(0, this.size()); + } + if (indices.length === 0) { + return tfc.tensor([], [0].concat(this.elementShape)); + } + // Read all the PersistentTensors into a vector to keep track of + // their memory. + var tensors = this.readMany(indices); + assertShapesMatchAllowUndefinedSize(this.elementShape, tensors[0].shape, 'TensorArray shape mismatch: '); + return tfc.stack(tensors, 0); + }; + /** + * Return the values in the TensorArray as a concatenated Tensor. + */ + TensorArray.prototype.concat = function (dtype) { + if (!!dtype && dtype !== this.dtype) { + throw new Error("TensorArray dtype is " + this.dtype + " but concat requested dtype " + dtype); + } + if (this.size() === 0) { + return tfc.tensor([], [0].concat(this.elementShape)); + } + var indices = []; + for (var i = 0; i < this.size(); i++) { + indices.push(i); + } + // Collect all the tensors from the tensors array. + var tensors = this.readMany(indices); + assertShapesMatchAllowUndefinedSize(this.elementShape, tensors[0].shape, "TensorArray shape mismatch: tensor array shape (" + this.elementShape + ") vs first tensor shape (" + tensors[0].shape + ")"); + return tfc.concat(tensors, 0); + }; + /** + * Scatter the values of a Tensor in specific indices of a TensorArray. + * @param indices nummber[] values in [0, max_value). If the + * TensorArray is not dynamic, max_value=size(). + * @param tensor Tensor input tensor. + */ + TensorArray.prototype.scatter = function (indices, tensor) { + if (tensor.dtype !== this.dtype) { + throw new Error("TensorArray dtype is " + this.dtype + " but tensor has dtype " + tensor.dtype); + } + if (indices.length !== tensor.shape[0]) { + throw new Error("Expected len(indices) == tensor.shape[0], but saw: " + indices.length + " vs. " + tensor.shape[0]); + } + var maxIndex = Math.max.apply(Math, indices); + if (!this.dynamicSize && maxIndex >= this.maxSize) { + throw new Error("Max index must be < array size (" + maxIndex + " vs. " + this.maxSize + ")"); + } + this.writeMany(indices, tfc.unstack(tensor, 0)); + }; + /** + * Split the values of a Tensor into the TensorArray. + * @param length number[] with the lengths to use when splitting value along + * its first dimension. + * @param tensor Tensor, the tensor to split. + */ + TensorArray.prototype.split = function (length, tensor) { + var _this = this; + if (tensor.dtype !== this.dtype) { + throw new Error("TensorArray dtype is " + this.dtype + " but tensor has dtype " + tensor.dtype); + } + var totalLength = 0; + var cumulativeLengths = length.map(function (len) { + totalLength += len; + return totalLength; + }); + if (totalLength !== tensor.shape[0]) { + throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n " + totalLength + ", and tensor's shape is: " + tensor.shape); + } + if (!this.dynamicSize && length.length !== this.maxSize) { + throw new Error("TensorArray's size is not equal to the size of lengths (" + this.maxSize + " vs. " + length.length + "), " + + 'and the TensorArray is not marked as dynamically resizeable'); + } + var elementPerRow = totalLength === 0 ? 0 : tensor.size / totalLength; + var tensors = []; + tfc.tidy(function () { + tensor = tensor.reshape([1, totalLength, elementPerRow]); + for (var i = 0; i < length.length; ++i) { + var previousLength = (i === 0) ? 0 : cumulativeLengths[i - 1]; + var indices_1 = [0, previousLength, 0]; + var sizes = [1, length[i], elementPerRow]; + tensors[i] = tfc.slice(tensor, indices_1, sizes).reshape(_this.elementShape); + } + return tensors; + }); + var indices = []; + for (var i = 0; i < length.length; i++) { + indices[i] = i; + } + this.writeMany(indices, tensors); + }; + return TensorArray; + }()); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * TensorList stores a container of `tf.Tensor` objects, which are accessible + * via tensors field. + * + * In order to get a copy of the underlying list, use the copy method: + * ``` + * TensorList b = a.copy(); + * b.tensors().pushBack(t); // This does not modify a.tensors(). + * ``` + * + * Note that this is not a deep copy: the memory locations of the underlying + * tensors will still point to the same locations of the corresponding tensors + * in the original. + */ + var TensorList = /** @class */ (function () { + /** + * + * @param tensors list of tensors + * @param elementShape shape of each tensor + * @param elementDtype data type of each tensor + * @param maxNumElements The maximum allowed size of `tensors`. Defaults to -1 + * meaning that the size of `tensors` is unbounded. + */ + function TensorList(tensors, elementShape, elementDtype, maxNumElements) { + if (maxNumElements === void 0) { maxNumElements = -1; } + this.tensors = tensors; + this.elementShape = elementShape; + this.elementDtype = elementDtype; + if (tensors != null) { + tensors.forEach(function (tensor) { + if (elementDtype !== tensor.dtype) { + throw new Error("Invalid data types; op elements " + elementDtype + ", but list elements " + tensor.dtype); + } + assertShapesMatchAllowUndefinedSize(elementShape, tensor.shape, 'TensorList shape mismatch: '); + tfc.keep(tensor); + }); + } + this.idTensor = tfc.scalar(0); + this.maxNumElements = maxNumElements; + tfc.keep(this.idTensor); + } + Object.defineProperty(TensorList.prototype, "id", { + get: function () { + return this.idTensor.id; + }, + enumerable: true, + configurable: true + }); + /** + * Get a new TensorList containing a copy of the underlying tensor container. + */ + TensorList.prototype.copy = function () { + return new TensorList(this.tensors.slice(), this.elementShape, this.elementDtype); + }; + /** + * Dispose the tensors and idTensor and clear the tensor list. + */ + TensorList.prototype.clearAndClose = function () { + this.tensors.forEach(function (tensor) { return tensor.dispose(); }); + this.tensors.length = 0; + this.idTensor.dispose(); + }; + /** + * The size of the tensors in the tensor list. + */ + TensorList.prototype.size = function () { + return this.tensors.length; + }; + /** + * Return a tensor that stacks a list of rank-R tf.Tensors into one rank-(R+1) + * tf.Tensor. + * @param elementShape shape of each tensor + * @param elementDtype data type of each tensor + * @param numElements the number of elements to stack + */ + TensorList.prototype.stack = function (elementShape, elementDtype, numElements) { + var _this = this; + if (numElements === void 0) { numElements = -1; } + if (elementDtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + elementDtype + ", but list elements " + this.elementDtype); + } + if (numElements !== -1 && this.tensors.length !== numElements) { + throw new Error("Operation expected a list with " + numElements + " elements but got a list with " + this.tensors.length + " elements."); + } + assertShapesMatchAllowUndefinedSize(elementShape, this.elementShape, 'TensorList shape mismatch: '); + return tfc.tidy(function () { + var reshapedTensors = _this.tensors.map(function (tensor) { return tensor.reshape(elementShape); }); + return tfc.stack(reshapedTensors, 0); + }); + }; + /** + * Pop a tensor from the end of the list. + * @param elementShape shape of the tensor + * @param elementDtype data type of the tensor + */ + TensorList.prototype.popBack = function (elementShape, elementDtype) { + if (elementDtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + elementDtype + ", but list elements " + this.elementDtype); + } + if (this.size() === 0) { + throw new Error('Trying to pop from an empty list.'); + } + var tensor = this.tensors.pop(); + assertShapesMatchAllowUndefinedSize(tensor.shape, elementShape, 'TensorList shape mismatch: '); + return tensor.reshape(elementShape); + }; + /** + * Push a tensor to the end of the list. + * @param tensor Tensor to be pushed. + */ + TensorList.prototype.pushBack = function (tensor) { + if (tensor.dtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + tensor.dtype + ", but list elements " + this.elementDtype); + } + assertShapesMatchAllowUndefinedSize(tensor.shape, this.elementShape, 'TensorList shape mismatch: '); + if (this.maxNumElements === this.size()) { + throw new Error("Trying to push element into a full list."); + } + tfc.keep(tensor); + this.tensors.push(tensor); + }; + /** + * Update the size of the list. + * @param size the new size of the list. + */ + TensorList.prototype.resize = function (size) { + if (size < 0) { + throw new Error("TensorListResize expects size to be non-negative. Got: " + size); + } + if (this.maxNumElements !== -1 && size > this.maxNumElements) { + throw new Error("TensorListResize input size " + size + " is greater maxNumElement " + this.maxNumElements + "."); + } + this.tensors.length = size; + }; + /** + * Retrieve the element at the provided index + * @param elementShape shape of the tensor + * @param elementDtype dtype of the tensor + * @param elementIndex index of the tensor + */ + TensorList.prototype.getItem = function (elementIndex, elementShape, elementDtype) { + if (elementDtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + elementDtype + ", but list elements " + this.elementDtype); + } + if (elementIndex < 0 || elementIndex > this.tensors.length) { + throw new Error("Trying to access element " + elementIndex + " in a list with " + this.tensors.length + " elements."); + } + if (this.tensors[elementIndex] == null) { + throw new Error("element at index " + elementIndex + " is null."); + } + assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape, elementShape, 'TensorList shape mismatch: '); + return this.tensors[elementIndex]; + }; + /** + * Set the tensor at the index + * @param elementIndex index of the tensor + * @param tensor the tensor to be inserted into the list + */ + TensorList.prototype.setItem = function (elementIndex, tensor) { + if (tensor.dtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + tensor.dtype + ", but list elements " + this.elementDtype); + } + if (elementIndex < 0 || + this.maxNumElements !== -1 && elementIndex >= this.maxNumElements) { + throw new Error("Trying to set element " + elementIndex + " in a list with max " + this.maxNumElements + " elements."); + } + assertShapesMatchAllowUndefinedSize(this.elementShape, tensor.shape, 'TensorList shape mismatch: '); + tfc.keep(tensor); + this.tensors[elementIndex] = tensor; + }; + /** + * Return selected values in the TensorList as a stacked Tensor. All of + * selected values must have been written and their shapes must all match. + * @param indices indices of tensors to gather + * @param elementDtype output tensor dtype + * @param elementShape output tensor element shape + */ + TensorList.prototype.gather = function (indices, elementDtype, elementShape) { + var _this = this; + if (elementDtype !== this.elementDtype) { + throw new Error("Invalid data types; op elements " + elementDtype + ", but list elements " + this.elementDtype); + } + assertShapesMatchAllowUndefinedSize(this.elementShape, elementShape, 'TensorList shape mismatch: '); + // When indices is greater than the size of the list, indices beyond the + // size of the list are ignored. + indices = indices.slice(0, this.size()); + if (indices.length === 0) { + return tfc.tensor([], [0].concat(this.elementShape)); + } + return tfc.tidy(function () { + var tensors = indices.map(function (i) { return _this.tensors[i].reshape(elementShape); }); + return tfc.stack(tensors, 0); + }); + }; + /** + * Return the values in the TensorList as a concatenated Tensor. + * @param elementDtype output tensor dtype + * @param elementShape output tensor element shape + */ + TensorList.prototype.concat = function (elementDtype, elementShape) { + var _this = this; + if (!!elementDtype && elementDtype !== this.elementDtype) { + throw new Error("TensorList dtype is " + this.elementDtype + " but concat requested dtype " + elementDtype); + } + assertShapesMatchAllowUndefinedSize(this.elementShape, elementShape, 'TensorList shape mismatch: '); + if (this.size() === 0) { + return tfc.tensor([], [0].concat(this.elementShape)); + } + return tfc.tidy(function () { + var tensors = _this.tensors.map(function (t) { return t.reshape(elementShape); }); + return tfc.concat(tensors, 0); + }); + }; + return TensorList; + }()); + /** + * Creates a TensorList which, when stacked, has the value of tensor. + * @param tensor from tensor + * @param elementShape output tensor element shape + */ + function fromTensor(tensor, elementShape, elementDtype) { + var dtype = tensor.dtype; + if (tensor.shape.length < 1) { + throw new Error("Tensor must be at least a vector, but saw shape: " + tensor.shape); + } + if (tensor.dtype !== elementDtype) { + throw new Error("Invalid data types; op elements " + tensor.dtype + ", but list elements " + elementDtype); + } + var outputShape = tensor.shape.slice(1); + assertShapesMatchAllowUndefinedSize(outputShape, elementShape, 'TensorList shape mismatch: '); + var tensorList = tensor.unstack(); + return new TensorList(tensorList, elementShape, dtype); + } + /** + * Return a TensorList of the given size with empty elements. + * @param elementShape the shape of the future elements of the list + * @param elementDtype the desired type of elements in the list + * @param numElements the number of elements to reserve + */ + function reserve(elementShape, elementDtype, numElements) { + return new TensorList([], elementShape, elementDtype, numElements); + } + /** + * Put tensors at specific indices of a stacked tensor into a TensorList. + * @param indices list of indices on how to scatter the tensor. + * @param tensor input tensor. + * @param elementShape the shape of the future elements of the list + * @param numElements the number of elements to scatter + */ + function scatter(tensor, indices, elementShape, numElements) { + if (indices.length !== tensor.shape[0]) { + throw new Error("Expected len(indices) == tensor.shape[0], but saw: " + indices.length + " vs. " + tensor.shape[0]); + } + var maxIndex = Math.max.apply(Math, indices); + if (numElements != null && numElements !== -1 && maxIndex >= numElements) { + throw new Error("Max index must be < array size (" + maxIndex + " vs. " + numElements + ")"); + } + var list = new TensorList([], elementShape, tensor.dtype, numElements); + var tensors = tfc.unstack(tensor, 0); + indices.forEach(function (value, index) { + list.setItem(value, tensors[index]); + }); + return list; + } + /** + * Split the values of a Tensor into a TensorList. + * @param length the lengths to use when splitting value along + * its first dimension. + * @param tensor the tensor to split. + * @param elementShape the shape of the future elements of the list + */ + function split(tensor, length, elementShape) { + var totalLength = 0; + var cumulativeLengths = length.map(function (len) { + totalLength += len; + return totalLength; + }); + if (totalLength !== tensor.shape[0]) { + throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n " + totalLength + ", and tensor's shape is: " + tensor.shape); + } + var elementPerRow = totalLength === 0 ? 0 : tensor.size / totalLength; + var tensors = tfc.tidy(function () { + var tensors = []; + tensor = tensor.reshape([1, totalLength, elementPerRow]); + for (var i = 0; i < length.length; ++i) { + var previousLength = (i === 0) ? 0 : cumulativeLengths[i - 1]; + var indices = [0, previousLength, 0]; + var sizes = [1, length[i], elementPerRow]; + tensors[i] = tfc.slice(tensor, indices, sizes).reshape(elementShape); + } + tensor.dispose(); + return tensors; + }); + var list = new TensorList([], elementShape, tensor.dtype, length.length); + for (var i = 0; i < tensors.length; i++) { + list.setItem(i, tensors[i]); + } + return list; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var _this = undefined; + var executeOp$2 = function (node, tensorMap, context) { return __awaiter(_this, void 0, void 0, function () { + var _a, thenFunc, elseFunc, cond, args, condValue, bodyFunc, condFunc, args, condResult, argIds_1, condValue, result, _loop_1, pred, data, inputName, frameId, data, tensor, input, size, dtype, elementShape, dynamicSize, clearAfterRead, identicalElementShapes, name_1, tensorArray, id, index, writeTensor, writeTensorArray, readId, readIndex, readTensorArray, gatherId, gatherIndices, gatherDtype, gatherTensorArray, scatterId, scatterIndices, scatterTensor, scatterTensorArray, concatId, concatTensorArray, concatDtype, splitId, splitTensor, lengths, splitTensorArray, sizeId, sizeTensorArray, closeId, closeTensorArray, idTensor, index, writeTensor, tensorList, idTensor, readIndex, elementShape, elementDType, tensorList, scatterIndices, scatterTensor, elementShape, numElements, tensorList, elementShape, elementDtype, numElements, tensorList, gatherId, gatherIndices, elementShape, elementDtype, tensorList, idTensor, elementShape, elementDtype, numElements, tensorList, tensor, elementShape, elementDtype, tensorList, concatId, tensorList, concatDtype, elementShape, idTensor, writeTensor, tensorList, idTensor, elementShape, elementDType, tensorList, splitTensor, elementShape, lengths, tensorList; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = node.op; + switch (_a) { + case 'If': return [3 /*break*/, 1]; + case 'StatelessIf': return [3 /*break*/, 1]; + case 'While': return [3 /*break*/, 3]; + case 'StatelessWhile': return [3 /*break*/, 3]; + case 'LoopCond': return [3 /*break*/, 9]; + case 'Switch': return [3 /*break*/, 10]; + case 'Merge': return [3 /*break*/, 12]; + case 'Enter': return [3 /*break*/, 13]; + case 'Exit': return [3 /*break*/, 14]; + case 'NextIteration': return [3 /*break*/, 15]; + case 'TensorArrayV3': return [3 /*break*/, 16]; + case 'TensorArrayWriteV3': return [3 /*break*/, 17]; + case 'TensorArrayReadV3': return [3 /*break*/, 18]; + case 'TensorArrayGatherV3': return [3 /*break*/, 19]; + case 'TensorArrayScatterV3': return [3 /*break*/, 20]; + case 'TensorArrayConcatV3': return [3 /*break*/, 21]; + case 'TensorArraySplitV3': return [3 /*break*/, 22]; + case 'TensorArraySizeV3': return [3 /*break*/, 23]; + case 'TensorArrayCloseV3': return [3 /*break*/, 24]; + case 'TensorListSetItem': return [3 /*break*/, 25]; + case 'TensorListGetItem': return [3 /*break*/, 26]; + case 'TensorListScatterV2': return [3 /*break*/, 27]; + case 'TensorListScatter': return [3 /*break*/, 27]; + case 'TensorListReserve': return [3 /*break*/, 28]; + case 'TensorListGather': return [3 /*break*/, 29]; + case 'TensorListStack': return [3 /*break*/, 30]; + case 'TensorListFromTensor': return [3 /*break*/, 31]; + case 'TensorListConcat': return [3 /*break*/, 32]; + case 'TensorListPushBack': return [3 /*break*/, 33]; + case 'TensorListPopBack': return [3 /*break*/, 34]; + case 'TensorListSplit': return [3 /*break*/, 35]; + } + return [3 /*break*/, 36]; + case 1: + thenFunc = getParamValue('thenBranch', node, tensorMap, context); + elseFunc = getParamValue('elseBranch', node, tensorMap, context); + cond = getParamValue('cond', node, tensorMap, context); + args = getParamValue('args', node, tensorMap, context); + return [4 /*yield*/, cond.data()]; + case 2: + condValue = _b.sent(); + if (condValue[0]) { + return [2 /*return*/, context.functionMap[thenFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap)]; + } + else { + return [2 /*return*/, context.functionMap[elseFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap)]; + } + case 3: + bodyFunc = getParamValue('body', node, tensorMap, context); + condFunc = getParamValue('cond', node, tensorMap, context); + args = getParamValue('args', node, tensorMap, context); + return [4 /*yield*/, context.functionMap[condFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap)]; + case 4: + condResult = (_b.sent()); + argIds_1 = args.map(function (tensor) { return tensor.id; }); + return [4 /*yield*/, condResult[0].data()]; + case 5: + condValue = _b.sent(); + // Dispose the intermediate tensors for condition function + condResult.forEach(function (tensor) { + if (!tensor.kept && argIds_1.indexOf(tensor.id) === -1) { + tensor.dispose(); + } + }); + result = args; + _loop_1 = function () { + var origResult, resultIds, condResult_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + origResult = result; + return [4 /*yield*/, context.functionMap[bodyFunc].executeFunctionAsync(result, context.tensorArrayMap, context.tensorListMap)]; + case 1: + // Execution the body of the loop + result = _a.sent(); + resultIds = result.map(function (tensor) { return tensor.id; }); + // Dispose the intermediate tensor for body function that is not global + // kept, not input/output of the body function + origResult.forEach(function (tensor) { + if (!tensor.kept && argIds_1.indexOf(tensor.id) === -1 && + resultIds.indexOf(tensor.id) === -1) { + tensor.dispose(); + } + }); + return [4 /*yield*/, context.functionMap[condFunc].executeFunctionAsync(result, context.tensorArrayMap, context.tensorListMap)]; + case 2: + condResult_1 = (_a.sent()); + return [4 /*yield*/, condResult_1[0].data()]; + case 3: + condValue = _a.sent(); + // Dispose the intermediate tensors for condition function + condResult_1.forEach(function (tensor) { + if (!tensor.kept && argIds_1.indexOf(tensor.id) === -1 && + resultIds.indexOf(tensor.id) === -1) { + tensor.dispose(); + } + }); + return [2 /*return*/]; + } + }); + }; + _b.label = 6; + case 6: + if (!condValue[0]) return [3 /*break*/, 8]; + return [5 /*yield**/, _loop_1()]; + case 7: + _b.sent(); + return [3 /*break*/, 6]; + case 8: return [2 /*return*/, result]; + case 9: + { + return [2 /*return*/, [ + getParamValue('pred', node, tensorMap, context).clone() + ]]; + } + case 10: + pred = getParamValue('pred', node, tensorMap, context); + data = getParamValue('data', node, tensorMap, context); + return [4 /*yield*/, pred.data()]; + case 11: + // Outputs nodes :0 => false, :1 => true + return [2 /*return*/, (_b.sent())[0] ? [undefined, data.clone()] : + [data.clone(), undefined]]; + case 12: + { + inputName = node.inputNames.find(function (name) { return getTensor(name, tensorMap, context) !== undefined; }); + return [2 /*return*/, inputName ? [getTensor(inputName, tensorMap, context).clone()] : + undefined]; + } + case 13: + { + frameId = getParamValue('frameName', node, tensorMap, context); + data = getParamValue('tensor', node, tensorMap, context); + context.enterFrame(frameId); + return [2 /*return*/, [data.clone()]]; + } + case 14: + { + tensor = getParamValue('tensor', node, tensorMap, context); + context.exitFrame(); + return [2 /*return*/, [tensor.clone()]]; + } + case 15: + { + input = getParamValue('tensor', node, tensorMap, context); + context.nextIteration(); + return [2 /*return*/, [input.clone()]]; + } + case 16: + { + size = getParamValue('size', node, tensorMap, context); + dtype = getParamValue('dtype', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + dynamicSize = getParamValue('dynamicSize', node, tensorMap, context); + clearAfterRead = getParamValue('clearAfterRead', node, tensorMap, context); + identicalElementShapes = getParamValue('identicalElementShapes', node, tensorMap, context); + name_1 = getParamValue('name', node, tensorMap, context); + tensorArray = new TensorArray(name_1, dtype, size, elementShape, identicalElementShapes, dynamicSize, clearAfterRead); + context.addTensorArray(tensorArray); + return [2 /*return*/, [tensorArray.idTensor, tfc.scalar(1.0)]]; + } + case 17: + { + id = getParamValue('tensorArrayId', node, tensorMap, context); + index = getParamValue('index', node, tensorMap, context); + writeTensor = getParamValue('tensor', node, tensorMap, context); + writeTensorArray = context.getTensorArray(id.id); + writeTensorArray.write(index, writeTensor); + return [2 /*return*/, [writeTensorArray.idTensor]]; + } + case 18: + { + readId = getParamValue('tensorArrayId', node, tensorMap, context); + readIndex = getParamValue('index', node, tensorMap, context); + readTensorArray = context.getTensorArray(readId.id); + return [2 /*return*/, [readTensorArray.read(readIndex)]]; + } + case 19: + { + gatherId = getParamValue('tensorArrayId', node, tensorMap, context); + gatherIndices = getParamValue('indices', node, tensorMap, context); + gatherDtype = getParamValue('dtype', node, tensorMap, context); + gatherTensorArray = context.getTensorArray(gatherId.id); + return [2 /*return*/, [gatherTensorArray.gather(gatherIndices, gatherDtype)]]; + } + case 20: + { + scatterId = getParamValue('tensorArrayId', node, tensorMap, context); + scatterIndices = getParamValue('indices', node, tensorMap, context); + scatterTensor = getParamValue('tensor', node, tensorMap, context); + scatterTensorArray = context.getTensorArray(scatterId.id); + scatterTensorArray.scatter(scatterIndices, scatterTensor); + return [2 /*return*/, [scatterTensorArray.idTensor]]; + } + case 21: + { + concatId = getParamValue('tensorArrayId', node, tensorMap, context); + concatTensorArray = context.getTensorArray(concatId.id); + concatDtype = getParamValue('dtype', node, tensorMap, context); + return [2 /*return*/, [concatTensorArray.concat(concatDtype)]]; + } + case 22: + { + splitId = getParamValue('tensorArrayId', node, tensorMap, context); + splitTensor = getParamValue('tensor', node, tensorMap, context); + lengths = getParamValue('lengths', node, tensorMap, context); + splitTensorArray = context.getTensorArray(splitId.id); + splitTensorArray.split(lengths, splitTensor); + return [2 /*return*/, [splitTensorArray.idTensor]]; + } + case 23: + { + sizeId = getParamValue('tensorArrayId', node, tensorMap, context); + sizeTensorArray = context.getTensorArray(sizeId.id); + return [2 /*return*/, [tfc.scalar(sizeTensorArray.size(), 'int32')]]; + } + case 24: + { + closeId = getParamValue('tensorArrayId', node, tensorMap, context); + closeTensorArray = context.getTensorArray(closeId.id); + closeTensorArray.clearAndClose(); + return [2 /*return*/, [closeTensorArray.idTensor]]; + } + case 25: + { + idTensor = getParamValue('tensorListId', node, tensorMap, context); + index = getParamValue('index', node, tensorMap, context); + writeTensor = getParamValue('tensor', node, tensorMap, context); + tensorList = context.getTensorList(idTensor.id); + tensorList.setItem(index, writeTensor); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 26: + { + idTensor = getParamValue('tensorListId', node, tensorMap, context); + readIndex = getParamValue('index', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDType = getParamValue('elementDType', node, tensorMap, context); + tensorList = context.getTensorList(idTensor.id); + return [2 /*return*/, [tensorList.getItem(readIndex, elementShape, elementDType)]]; + } + case 27: + { + scatterIndices = getParamValue('indices', node, tensorMap, context); + scatterTensor = getParamValue('tensor', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + numElements = getParamValue('numElements', node, tensorMap, context); + tensorList = scatter(scatterTensor, scatterIndices, elementShape, numElements); + context.addTensorList(tensorList); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 28: + { + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDtype = getParamValue('elementDType', node, tensorMap, context); + numElements = getParamValue('numElements', node, tensorMap, context); + tensorList = reserve(elementShape, elementDtype, numElements); + context.addTensorList(tensorList); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 29: + { + gatherId = getParamValue('tensorListId', node, tensorMap, context); + gatherIndices = getParamValue('indices', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDtype = getParamValue('elementDType', node, tensorMap, context); + tensorList = context.getTensorList(gatherId.id); + return [2 /*return*/, [tensorList.gather(gatherIndices, elementDtype, elementShape)]]; + } + case 30: + { + idTensor = getParamValue('tensorListId', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDtype = getParamValue('elementDType', node, tensorMap, context); + numElements = getParamValue('numElements', node, tensorMap, context); + tensorList = context.getTensorList(idTensor.id); + return [2 /*return*/, [tensorList.stack(elementShape, elementDtype, numElements)]]; + } + case 31: + { + tensor = getParamValue('tensor', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDtype = getParamValue('elementDType', node, tensorMap, context); + tensorList = fromTensor(tensor, elementShape, elementDtype); + context.addTensorList(tensorList); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 32: + { + concatId = getParamValue('tensorListId', node, tensorMap, context); + tensorList = context.getTensorList(concatId.id); + concatDtype = getParamValue('dtype', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + return [2 /*return*/, [tensorList.concat(concatDtype, elementShape)]]; + } + case 33: + { + idTensor = getParamValue('tensorListId', node, tensorMap, context); + writeTensor = getParamValue('tensor', node, tensorMap, context); + tensorList = context.getTensorList(idTensor.id); + tensorList.pushBack(writeTensor); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 34: + { + idTensor = getParamValue('tensorListId', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + elementDType = getParamValue('elementDType', node, tensorMap, context); + tensorList = context.getTensorList(idTensor.id); + return [2 /*return*/, [tensorList.popBack(elementShape, elementDType)]]; + } + case 35: + { + splitTensor = getParamValue('tensor', node, tensorMap, context); + elementShape = getParamValue('elementShape', node, tensorMap, context); + lengths = getParamValue('lengths', node, tensorMap, context); + tensorList = split(splitTensor, lengths, elementShape); + context.addTensorList(tensorList); + return [2 /*return*/, [tensorList.idTensor]]; + } + case 36: throw TypeError("Node type " + node.op + " is not implemented"); + } + }); + }); }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$3 = function (node, tensorMap, context) { + switch (node.op) { + case 'Conv1D': { + var stride = getParamValue('stride', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context) + .toUpperCase(); + var dilation = getParamValue('dilation', node, tensorMap, context); + return [tfc.conv1d(getParamValue('x', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), stride, pad, dataFormat, dilation)]; + } + case 'Conv2D': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getPadding(node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context) + .toUpperCase(); + var dilations = getParamValue('dilations', node, tensorMap, context); + return [tfc.conv2d(getParamValue('x', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), [stride[1], stride[2]], pad, dataFormat, [dilations[1], dilations[2]])]; + } + case '_FusedConv2D': + case 'FusedDepthwiseConv2dNative': { + var _a = getParamValue('fusedOps', node, tensorMap, context), extraOp = _a[0], activationFunc = _a[1]; + var isBiasAdd = extraOp === 'biasadd'; + var isPrelu = activationFunc === 'prelu'; + var isBatchNorm = extraOp === 'fusedbatchnorm'; + var numArgs = getParamValue('numArgs', node, tensorMap, context); + if (isBiasAdd) { + if (isPrelu && numArgs !== 2) { + throw new Error('FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu ' + + 'must have two extra arguments: bias and alpha.'); + } + if (!isPrelu && numArgs !== 1) { + throw new Error('FusedConv2d and DepthwiseConv2d with BiasAdd must have ' + + 'one extra argument: bias.'); + } + } + if (isBatchNorm) { + throw new Error('FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.'); + } + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getPadding(node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context) + .toUpperCase(); + var dilations = getParamValue('dilations', node, tensorMap, context); + var _b = getParamValue('args', node, tensorMap, context), biasArg = _b[0], preluArg = _b[1]; + var kernelMethod = node.op === '_FusedConv2D' ? + tfc.fused.conv2d : + tfc.fused.depthwiseConv2d; + return [kernelMethod({ + x: getParamValue('x', node, tensorMap, context), + filter: getParamValue('filter', node, tensorMap, context), + strides: [stride[1], stride[2]], + pad: pad, + dataFormat: dataFormat, + dilations: [dilations[1], dilations[2]], + bias: biasArg, + activation: activationFunc, + preluActivationWeights: preluArg + })]; + } + case 'Conv2DBackpropInput': + case 'Conv2dTranspose': { + var shape = getParamValue('outputShape', node, tensorMap, context); + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getPadding(node, tensorMap, context); + return [tfc.conv2dTranspose(getParamValue('x', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), shape, [stride[1], stride[2]], pad)]; + } + case 'DepthwiseConv2dNative': + case 'DepthwiseConv2d': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getPadding(node, tensorMap, context); + var dilations = getParamValue('dilations', node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context) + .toUpperCase(); + return [tfc.depthwiseConv2d(getParamValue('input', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), [stride[1], stride[2]], pad, dataFormat, [dilations[1], dilations[2]])]; + } + case 'Conv3D': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context) + .toUpperCase(); + var dilations = getParamValue('dilations', node, tensorMap, context); + return [tfc.conv3d(getParamValue('x', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), [stride[1], stride[2], stride[3]], pad, dataFormat, [dilations[1], dilations[2], dilations[3]])]; + } + case 'AvgPool': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var kernelSize = getParamValue('kernelSize', node, tensorMap, context); + return [tfc.avgPool(getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad)]; + } + case 'MaxPool': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var kernelSize = getParamValue('kernelSize', node, tensorMap, context); + return [tfc.maxPool(getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad)]; + } + case 'MaxPoolWithArgmax': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var kernelSize = getParamValue('kernelSize', node, tensorMap, context); + var includeBatchInIndex = getParamValue('includeBatchInIndex', node, tensorMap, context); + var _c = tfc.maxPoolWithArgmax(getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad, includeBatchInIndex), result = _c.result, indexes = _c.indexes; + return [result, indexes]; + } + case 'AvgPool3D': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var kernelSize = getParamValue('kernelSize', node, tensorMap, context); + return [tfc.avgPool3d(getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2], kernelSize[3]], [stride[1], stride[2], stride[3]], pad)]; + } + case 'MaxPool3D': { + var stride = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var kernelSize = getParamValue('kernelSize', node, tensorMap, context); + return [tfc.maxPool3d(getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2], kernelSize[3]], [stride[1], stride[2], stride[3]], pad)]; + } + case 'Dilation2D': { + var strides = getParamValue('strides', node, tensorMap, context); + var pad = getParamValue('pad', node, tensorMap, context); + var dilations = getParamValue('dilations', node, tensorMap, context); + // strides: [1, stride_height, stride_width, 1]. + var strideHeight = strides[1]; + var strideWidth = strides[2]; + // dilations: [1, dilation_height, dilation_width, 1]. + var dilationHeight = dilations[1]; + var dilationWidth = dilations[2]; + return [tfc.dilation2d(getParamValue('x', node, tensorMap, context), getParamValue('filter', node, tensorMap, context), [strideHeight, strideWidth], pad, [dilationHeight, dilationWidth], 'NHWC' /* dataFormat */)]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$4 = function (node, tensorMap, context) { + switch (node.op) { + case 'Fill': { + var shape = getParamValue('shape', node, tensorMap, context); + var dtype = getParamValue('dtype', node, tensorMap, context); + var value = getParamValue('value', node, tensorMap, context); + return [tfc.fill(shape, value, dtype)]; + } + case 'LinSpace': { + var start = getParamValue('start', node, tensorMap, context); + var stop_1 = getParamValue('stop', node, tensorMap, context); + var num = getParamValue('num', node, tensorMap, context); + return [tfc.linspace(start, stop_1, num)]; + } + case 'Multinomial': { + var logits = getParamValue('logits', node, tensorMap, context); + var numSamples = getParamValue('numSamples', node, tensorMap, context); + var seed = getParamValue('seed', node, tensorMap, context); + return [tfc.multinomial(logits, numSamples, seed)]; + } + case 'OneHot': { + var indices = getParamValue('indices', node, tensorMap, context); + var depth = getParamValue('depth', node, tensorMap, context); + var onValue = getParamValue('onValue', node, tensorMap, context); + var offValue = getParamValue('offValue', node, tensorMap, context); + return [tfc.oneHot(indices, depth, onValue, offValue)]; + } + case 'Ones': { + return [tfc.ones(getParamValue('shape', node, tensorMap, context), getParamValue('dtype', node, tensorMap, context))]; + } + case 'OnesLike': { + return [tfc.onesLike(getParamValue('x', node, tensorMap, context))]; + } + case 'RandomUniform': { + return [tfc.randomUniform( + // tslint:disable-next-line:no-any + getParamValue('shape', node, tensorMap, context), getParamValue('minval', node, tensorMap, context), getParamValue('maxval', node, tensorMap, context), getParamValue('dtype', node, tensorMap, context))]; + } + case 'Range': { + var start = getParamValue('start', node, tensorMap, context); + var stop_2 = getParamValue('stop', node, tensorMap, context); + var step = getParamValue('step', node, tensorMap, context); + return [tfc.range(start, stop_2, step, getParamValue('dtype', node, tensorMap, context))]; + } + case 'TruncatedNormal': { + var shape = getParamValue('shape', node, tensorMap, context); + var mean = getParamValue('mean', node, tensorMap, context); + var stdDev = getParamValue('stdDev', node, tensorMap, context); + var seed = getParamValue('seed', node, tensorMap, context); + return [tfc.truncatedNormal(shape, mean, stdDev, getParamValue('dtype', node, tensorMap, context), seed)]; + } + case 'Zeros': { + return [tfc.zeros(getParamValue('shape', node, tensorMap, context), getParamValue('dtype', node, tensorMap, context))]; + } + case 'ZerosLike': { + return [tfc.zerosLike(getParamValue('x', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var _this$1 = undefined; + var executeOp$5 = function (node, tensorMap, context) { return __awaiter(_this$1, void 0, void 0, function () { + var _a, boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma, result, padToMaxOutputSize, result, condition, result; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = node.op; + switch (_a) { + case 'NonMaxSuppressionV5': return [3 /*break*/, 1]; + case 'NonMaxSuppressionV4': return [3 /*break*/, 1]; + case 'NonMaxSuppressionV3': return [3 /*break*/, 1]; + case 'NonMaxSuppressionV2': return [3 /*break*/, 1]; + case 'Where': return [3 /*break*/, 7]; + case 'ListDiff': return [3 /*break*/, 9]; + } + return [3 /*break*/, 10]; + case 1: + boxes = getParamValue('boxes', node, tensorMap, context); + scores = getParamValue('scores', node, tensorMap, context); + maxOutputSize = getParamValue('maxOutputSize', node, tensorMap, context); + iouThreshold = getParamValue('iouThreshold', node, tensorMap, context); + scoreThreshold = getParamValue('scoreThreshold', node, tensorMap, context); + if (!(node.op === 'NonMaxSuppressionV5')) return [3 /*break*/, 3]; + softNmsSigma = getParamValue('softNmsSigma', node, tensorMap, context); + return [4 /*yield*/, tfc.image.nonMaxSuppressionWithScoreAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma)]; + case 2: + result = _b.sent(); + return [2 /*return*/, [result.selectedIndices, result.selectedScores]]; + case 3: + if (!(node.op === 'NonMaxSuppressionV4')) return [3 /*break*/, 5]; + padToMaxOutputSize = getParamValue('padToMaxOutputSize', node, tensorMap, context); + return [4 /*yield*/, tfc.image.nonMaxSuppressionPaddedAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize)]; + case 4: + result = _b.sent(); + return [2 /*return*/, [result.selectedIndices, result.validOutputs]]; + case 5: return [4 /*yield*/, tfc.image.nonMaxSuppressionAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold)]; + case 6: return [2 /*return*/, [_b.sent()]]; + case 7: + condition = getParamValue('condition', node, tensorMap, context) + .asType('bool'); + return [4 /*yield*/, tfc.whereAsync(condition)]; + case 8: + result = [_b.sent()]; + condition.dispose(); + return [2 /*return*/, result]; + case 9: + { + return [2 /*return*/, tfc.setdiff1dAsync(getParamValue('x', node, tensorMap, context), getParamValue('y', node, tensorMap, context))]; + } + case 10: throw TypeError("Node type " + node.op + " is not implemented"); + } + }); + }); }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$6 = function (node, tensorMap, context) { + switch (node.op) { + case 'TopKV2': { + var x = getParamValue('x', node, tensorMap, context); + var k = getParamValue('k', node, tensorMap, context); + var sorted = getParamValue('sorted', node, tensorMap, context); + var result = tfc.topk(x, k, sorted); + return [result.values, result.indices]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$7 = function (node, tensorMap, context) { + switch (node.op) { + case 'Const': { + return tensorMap[node.name]; + } + case 'PlaceholderWithDefault': + var def = getParamValue('default', node, tensorMap, context); + return [getTensor(node.name, tensorMap, context) || def]; + case 'Placeholder': + return [getTensor(node.name, tensorMap, context)]; + case 'Identity': + case 'StopGradient': + case 'FakeQuantWithMinMaxVars': // This op is currently ignored. + return [ + getParamValue('x', node, tensorMap, context).clone() + ]; + case 'IdentityN': + return getParamValue('x', node, tensorMap, context) + .map(function (t) { return t.clone(); }); + case 'Snapshot': + var snapshot = getParamValue('x', node, tensorMap, context); + return [snapshot.clone()]; + case 'Shape': + return [tfc.tensor1d(getParamValue('x', node, tensorMap, context).shape, 'int32')]; + case 'ShapeN': + return getParamValue('x', node, tensorMap, context) + .map(function (t) { return tfc.tensor1d(t.shape); }); + case 'Size': + return [tfc.scalar(getParamValue('x', node, tensorMap, context).size, 'int32')]; + case 'Rank': + return [tfc.scalar(getParamValue('x', node, tensorMap, context).rank, 'int32')]; + case 'NoOp': + return [tfc.scalar(1)]; + case 'Print': + var input = getParamValue('x', node, tensorMap, context); + var data = getParamValue('data', node, tensorMap, context); + var message = getParamValue('message', node, tensorMap, context); + var summarize = getParamValue('summarize', node, tensorMap, context); + console.warn('The graph has a tf.print() operation,' + + 'usually used for debugging, which slows down performance.'); + console.log(message); + for (var i = 0; i < data.length; i++) { + console.log(Array.prototype.slice.call(data[i].dataSync()).slice(0, summarize)); + } + return [input]; + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$8 = function (node, tensorMap, context) { + switch (node.op) { + case 'ResizeBilinear': { + var images = getParamValue('images', node, tensorMap, context); + var size = getParamValue('size', node, tensorMap, context); + var alignCorners = getParamValue('alignCorners', node, tensorMap, context); + return [tfc.image.resizeBilinear(images, [size[0], size[1]], alignCorners)]; + } + case 'ResizeNearestNeighbor': { + var images = getParamValue('images', node, tensorMap, context); + var size = getParamValue('size', node, tensorMap, context); + var alignCorners = getParamValue('alignCorners', node, tensorMap, context); + return [tfc.image.resizeNearestNeighbor(images, [size[0], size[1]], alignCorners)]; + } + case 'CropAndResize': { + var image = getParamValue('image', node, tensorMap, context); + var boxes = getParamValue('boxes', node, tensorMap, context); + var boxInd = getParamValue('boxInd', node, tensorMap, context); + var cropSize = getParamValue('cropSize', node, tensorMap, context); + var method = getParamValue('method', node, tensorMap, context); + var extrapolationValue = getParamValue('extrapolationValue', node, tensorMap, context); + return [tfc.image.cropAndResize(image, boxes, boxInd, cropSize, method, extrapolationValue)]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$9 = function (node, tensorMap, context) { + switch (node.op) { + case 'Equal': { + return [tfc.equal(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'NotEqual': { + return [tfc.notEqual(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Greater': { + return [tfc.greater(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'GreaterEqual': { + return [tfc.greaterEqual(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Less': { + return [tfc.less(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'LessEqual': { + return [tfc.lessEqual(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'LogicalAnd': { + return [tfc.logicalAnd(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'LogicalNot': { + return [tfc.logicalNot(getParamValue('a', node, tensorMap, context))]; + } + case 'LogicalOr': { + return [tfc.logicalOr(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + case 'Select': + case 'SelectV2': { + return [tfc.where(getParamValue('condition', node, tensorMap, context), getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$a = function (node, tensorMap, context) { + switch (node.op) { + case 'BatchMatMul': + case 'BatchMatMulV2': + case 'MatMul': + return [tfc.matMul(getParamValue('a', node, tensorMap, context), getParamValue('b', node, tensorMap, context), getParamValue('transposeA', node, tensorMap, context), getParamValue('transposeB', node, tensorMap, context))]; + case 'Transpose': + return [tfc.transpose(getParamValue('x', node, tensorMap, context), getParamValue('perm', node, tensorMap, context))]; + case '_FusedMatMul': + var _a = getParamValue('fusedOps', node, tensorMap, context), extraOp = _a[0], activationFunc = _a[1]; + var isBiasAdd = extraOp === 'biasadd'; + var isPrelu = activationFunc === 'prelu'; + var numArgs = getParamValue('numArgs', node, tensorMap, context); + if (isBiasAdd) { + if (isPrelu && numArgs !== 2) { + throw new Error('Fused MatMul with BiasAdd and Prelu must have two ' + + 'extra arguments: bias and alpha.'); + } + if (!isPrelu && numArgs !== 1) { + throw new Error('Fused MatMul with BiasAdd must have one extra argument: bias.'); + } + } + var _b = getParamValue('args', node, tensorMap, context), biasArg = _b[0], preluArg = _b[1]; + return [tfc.fused.matMul({ + a: getParamValue('a', node, tensorMap, context), + b: getParamValue('b', node, tensorMap, context), + transposeA: getParamValue('transposeA', node, tensorMap, context), + transposeB: getParamValue('transposeB', node, tensorMap, context), + bias: biasArg, + activation: activationFunc, + preluActivationWeights: preluArg + })]; + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$b = function (node, tensorMap, context) { + switch (node.op) { + case 'FusedBatchNorm': + case 'FusedBatchNormV2': { + return [tfc.batchNorm(getParamValue('x', node, tensorMap, context), getParamValue('mean', node, tensorMap, context), getParamValue('variance', node, tensorMap, context), getParamValue('offset', node, tensorMap, context), getParamValue('scale', node, tensorMap, context), getParamValue('epsilon', node, tensorMap, context))]; + } + case 'FusedBatchNormV3': { + return [tfc.batchNorm(getParamValue('x', node, tensorMap, context), getParamValue('mean', node, tensorMap, context), getParamValue('variance', node, tensorMap, context), getParamValue('offset', node, tensorMap, context), getParamValue('scale', node, tensorMap, context), getParamValue('epsilon', node, tensorMap, context))]; + } + case 'LRN': { + return [tfc.localResponseNormalization(getParamValue('x', node, tensorMap, context), getParamValue('radius', node, tensorMap, context), getParamValue('bias', node, tensorMap, context), getParamValue('alpha', node, tensorMap, context), getParamValue('beta', node, tensorMap, context))]; + } + case 'Softmax': { + return [tfc.softmax(getParamValue('x', node, tensorMap, context))]; + } + case 'LogSoftmax': { + return [tfc.logSoftmax(getParamValue('x', node, tensorMap, context))]; + } + case 'SparseToDense': { + return [tfc.sparseToDense(getParamValue('sparseIndices', node, tensorMap, context), getParamValue('outputShape', node, tensorMap, context), getParamValue('sparseValues', node, tensorMap, context), getParamValue('defaultValue', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$c = function (node, tensorMap, context) { + switch (node.op) { + case 'Max': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.max(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'Mean': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.mean(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'Min': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.min(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'Sum': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.sum(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'All': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.all(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'Any': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.any(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'ArgMax': { + var axis = getParamValue('axis', node, tensorMap, context); + return [tfc.argMax(getParamValue('x', node, tensorMap, context), axis)]; + } + case 'ArgMin': { + var axis = getParamValue('axis', node, tensorMap, context); + return [tfc.argMin(getParamValue('x', node, tensorMap, context), axis)]; + } + case 'Prod': { + var axis = getParamValue('axis', node, tensorMap, context); + var keepDims = getParamValue('keepDims', node, tensorMap, context); + return [tfc.prod(getParamValue('x', node, tensorMap, context), axis, keepDims)]; + } + case 'Cumsum': { + var axis = getParamValue('axis', node, tensorMap, context); + var exclusive = getParamValue('exclusive', node, tensorMap, context); + var reverse = getParamValue('reverse', node, tensorMap, context); + return [tfc.cumsum(getParamValue('x', node, tensorMap, context), axis, exclusive, reverse)]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$d = function (node, tensorMap, context) { + switch (node.op) { + case 'ConcatV2': + case 'Concat': { + var n = getParamValue('n', node, tensorMap, context); + var axis = getParamValue('axis', node, tensorMap, context); + var inputs = getParamValue('tensors', node, tensorMap, context); + inputs = inputs.slice(0, n); + return [tfc.concat(inputs, axis)]; + } + case 'GatherV2': + case 'Gather': { + var axis = getParamValue('axis', node, tensorMap, context); + var input = getParamValue('x', node, tensorMap, context); + var indices = getParamValue('indices', node, tensorMap, context); + return [tfc.gather(input, indices.asType('int32'), axis)]; + } + case 'ReverseV2': + case 'Reverse': { + var axis = getParamValue('axis', node, tensorMap, context); + var input = getParamValue('x', node, tensorMap, context); + return [tfc.reverse(input, axis)]; + } + case 'Slice': { + // tslint:disable-next-line:no-any + var begin = getParamValue('begin', node, tensorMap, context); + // tslint:disable-next-line:no-any + var size = getParamValue('size', node, tensorMap, context); + return [tfc.slice(getParamValue('x', node, tensorMap, context), begin, size)]; + } + case 'StridedSlice': { + var begin = getParamValue('begin', node, tensorMap, context); + var end = getParamValue('end', node, tensorMap, context); + var strides = getParamValue('strides', node, tensorMap, context); + var beginMask = getParamValue('beginMask', node, tensorMap, context); + var endMask = getParamValue('endMask', node, tensorMap, context); + var ellipsisMask = getParamValue('ellipsisMask', node, tensorMap, context); + var newAxisMask = getParamValue('newAxisMask', node, tensorMap, context); + var shrinkAxisMask = getParamValue('shrinkAxisMask', node, tensorMap, context); + var tensor = getParamValue('x', node, tensorMap, context); + return [tfc.stridedSlice(tensor, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask)]; + } + case 'Pack': { + return tfc.tidy(function () { + var axis = getParamValue('axis', node, tensorMap, context); + var tensors = getParamValue('tensors', node, tensorMap, context); + // Reshape the tensors to the first tensor's shape if they don't match. + var shape = tensors[0].shape; + var squeezedShape = tensors[0].squeeze().shape; + var mapped = tensors.map(function (tensor) { + var sameShape = tfc.util.arraysEqual(tensor.shape, shape); + if (!sameShape && + !tfc.util.arraysEqual(tensor.squeeze().shape, squeezedShape)) { + throw new Error('the input tensors shape does not match'); + } + return sameShape ? tensor : tensor.reshape(shape); + }); + return [tfc.stack(mapped, axis)]; + }); + } + case 'Unpack': { + return tfc.tidy(function () { + var axis = getParamValue('axis', node, tensorMap, context); + var tensor = getParamValue('tensor', node, tensorMap, context); + return tfc.unstack(tensor, axis); + }); + } + case 'Tile': { + var reps = getParamValue('reps', node, tensorMap, context); + return [tfc.tile(getParamValue('x', node, tensorMap, context), reps)]; + } + case 'Split': + case 'SplitV': { + var axis = getParamValue('axis', node, tensorMap, context); + var numOrSizeSplits = getParamValue('numOrSizeSplits', node, tensorMap, context); + var tensor = getParamValue('x', node, tensorMap, context); + return tfc.split(tensor, numOrSizeSplits, axis); + } + case 'ScatterNd': { + var indices = getParamValue('indices', node, tensorMap, context); + var values = getParamValue('values', node, tensorMap, context); + var shape = getParamValue('shape', node, tensorMap, context); + return [tfc.scatterND(indices, values, shape)]; + } + case 'GatherNd': { + var x = getParamValue('x', node, tensorMap, context); + var indices = getParamValue('indices', node, tensorMap, context); + return [tfc.gatherND(x, indices)]; + } + case 'SparseToDense': { + var indices = getParamValue('sparseIndices', node, tensorMap, context); + var shape = getParamValue('outputShape', node, tensorMap, context); + var sparseValues = getParamValue('sparseValues', node, tensorMap, context); + var defaultValue = getParamValue('defaultValue', node, tensorMap, context); + return [tfc.sparseToDense(indices, sparseValues, shape, sparseValues.dtype === defaultValue.dtype ? + defaultValue : + defaultValue.asType(sparseValues.dtype))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$e = function (node, tensorMap, context) { + switch (node.op) { + case 'FFT': { + return [tfc.fft(getParamValue('x', node, tensorMap, context))]; + } + case 'IFFT': { + return [tfc.ifft(getParamValue('x', node, tensorMap, context))]; + } + case 'RFFT': { + return [tfc.rfft(getParamValue('x', node, tensorMap, context))]; + } + case 'IRFFT': { + return [tfc.irfft(getParamValue('x', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var executeOp$f = function (node, tensorMap, context) { + switch (node.op) { + case 'Cast': { + return [tfc.cast(getParamValue('x', node, tensorMap, context), getParamValue('dtype', node, tensorMap, context))]; + } + case 'ExpandDims': { + var axis = getParamValue('axis', node, tensorMap, context); + return [tfc.expandDims(getParamValue('x', node, tensorMap, context), axis)]; + } + case 'Squeeze': { + var axis = getParamValue('axis', node, tensorMap, context); + return [tfc.squeeze(getParamValue('x', node, tensorMap, context), axis)]; + } + case 'Reshape': { + return [tfc.reshape(getParamValue('x', node, tensorMap, context), getParamValue('shape', node, tensorMap, context))]; + } + case 'PadV2': + case 'Pad': { + return [tfc.pad(getParamValue('x', node, tensorMap, context), getParamValue('padding', node, tensorMap, context), getParamValue('constantValue', node, tensorMap, context))]; + } + case 'SpaceToBatchND': { + var blockShape = getParamValue('blockShape', node, tensorMap, context); + var paddings = getParamValue('paddings', node, tensorMap, context); + return [tfc.spaceToBatchND(getParamValue('x', node, tensorMap, context), blockShape, paddings)]; + } + case 'BatchToSpaceND': { + var blockShape = getParamValue('blockShape', node, tensorMap, context); + var crops = getParamValue('crops', node, tensorMap, context); + return [tfc.batchToSpaceND(getParamValue('x', node, tensorMap, context), blockShape, crops)]; + } + case 'DepthToSpace': { + var blockSize = getParamValue('blockSize', node, tensorMap, context); + var dataFormat = getParamValue('dataFormat', node, tensorMap, context).toUpperCase(); + return [tfc.depthToSpace(getParamValue('x', node, tensorMap, context), blockSize, dataFormat)]; + } + case 'BroadcastTo': { + return [tfc.broadcastTo(getParamValue('x', node, tensorMap, context), getParamValue('shape', node, tensorMap, context))]; + } + default: + throw TypeError("Node type " + node.op + " is not implemented"); + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Executes the op defined by the node object. + * @param node + * @param tensorMap contains tensors for executed nodes and weights + */ + function executeOp$g(node, tensorMap, context) { + var value = (function (node, tensorMap, context) { + switch (node.category) { + case 'arithmetic': + return tfc.tidy(function () { return executeOp(node, tensorMap, context); }); + case 'basic_math': + return tfc.tidy(function () { return executeOp$1(node, tensorMap, context); }); + case 'control': + return executeOp$2(node, tensorMap, context); + case 'convolution': + return tfc.tidy(function () { return executeOp$3(node, tensorMap, context); }); + case 'creation': + return tfc.tidy(function () { return executeOp$4(node, tensorMap, context); }); + case 'dynamic': + return executeOp$5(node, tensorMap, context); + case 'evaluation': + return tfc.tidy(function () { return executeOp$6(node, tensorMap, context); }); + case 'image': + return tfc.tidy(function () { return executeOp$8(node, tensorMap, context); }); + case 'graph': + return tfc.tidy(function () { return executeOp$7(node, tensorMap, context); }); + case 'logical': + return tfc.tidy(function () { return executeOp$9(node, tensorMap, context); }); + case 'matrices': + return tfc.tidy(function () { return executeOp$a(node, tensorMap, context); }); + case 'normalization': + return tfc.tidy(function () { return executeOp$b(node, tensorMap, context); }); + case 'reduction': + return tfc.tidy(function () { return executeOp$c(node, tensorMap, context); }); + case 'slice_join': + return tfc.tidy(function () { return executeOp$d(node, tensorMap, context); }); + case 'spectral': + return tfc.tidy(function () { return executeOp$e(node, tensorMap, context); }); + case 'transformation': + return tfc.tidy(function () { return executeOp$f(node, tensorMap, context); }); + case 'custom': + var opMapper = getRegisteredOp(node.op); + if (opMapper && opMapper.customExecutor) { + return opMapper.customExecutor(new NodeValueImpl(node, tensorMap, context)); + } + else { + throw TypeError("Custom op " + node.op + " is not registered."); + } + default: + throw TypeError("Unknown op '" + node.op + "'. File an issue at " + + "https://github.com/tensorflow/tfjs/issues so we can add it" + + ", or register a custom execution with tf.registerOp()"); + } + })(node, tensorMap, context); + if (value instanceof Promise) { + return value.then(function (data) { return [].concat(data); }); + } + return [].concat(value); + } + + /** + * ExecutionContext captures the runtime environment of the node. It keeps + * track of the current frame and iteration for the control flow ops. + * + * For example, typical Dynamic RNN model may contain loops, for which + * TensorFlow will generate graphs with Enter/Exit nodes to control the + * current execution frame, and NextIteration Nodes for iteration id increment. + * For model with branch logic, TensorFLow will generate Switch/Merge ops. + */ + var ExecutionContext = /** @class */ (function () { + function ExecutionContext(weightMap, tensorArrayMap, tensorListMap, functionMap) { + if (weightMap === void 0) { weightMap = {}; } + if (tensorArrayMap === void 0) { tensorArrayMap = {}; } + if (tensorListMap === void 0) { tensorListMap = {}; } + if (functionMap === void 0) { functionMap = {}; } + this.weightMap = weightMap; + this.tensorArrayMap = tensorArrayMap; + this.tensorListMap = tensorListMap; + this.functionMap = functionMap; + this.rootContext = { id: 0, frameName: '', iterationId: 0 }; + this.contexts = [this.rootContext]; + this.lastId = 0; + this.generateCurrentContextIds(); + } + ExecutionContext.prototype.newFrame = function (id, frameName) { + return { id: id, frameName: frameName, iterationId: 0 }; + }; + Object.defineProperty(ExecutionContext.prototype, "currentContext", { + get: function () { + return this.contexts; + }, + /** + * Set the current context + * @param contexts: ExecutionContextInfo[] the current path of execution + * frames + */ + set: function (contexts) { + if (this.contexts !== contexts) { + this.contexts = contexts; + this.generateCurrentContextIds(); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ExecutionContext.prototype, "currentContextId", { + /** + * Returns the current context in string format. + */ + get: function () { + return this._currentContextIds[0]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ExecutionContext.prototype, "currentContextIds", { + /** + * Returns the current context and all parent contexts in string format. + * This allow access to the nodes in the current and parent frames. + */ + get: function () { + return this._currentContextIds; + }, + enumerable: true, + configurable: true + }); + ExecutionContext.prototype.generateCurrentContextIds = function () { + var names = []; + for (var i = 0; i < this.contexts.length - 1; i++) { + var contexts = this.contexts.slice(0, this.contexts.length - i); + names.push(this.contextIdforContexts(contexts)); + } + names.push(''); + this._currentContextIds = names; + }; + ExecutionContext.prototype.contextIdforContexts = function (contexts) { + return contexts ? + contexts + .map(function (context) { return (context.id === 0 && context.iterationId === 0) ? + '' : + context.frameName + "-" + context.iterationId; }) + .join('/') : + ''; + }; + /** + * Enter a new frame, a new context is pushed on the current context list. + * @param frameId new frame id + */ + ExecutionContext.prototype.enterFrame = function (frameId) { + if (this.contexts) { + this.lastId++; + this.contexts = this.contexts.slice(); + this.contexts.push(this.newFrame(this.lastId, frameId)); + this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)); + } + }; + /** + * Exit the current frame, the last context is removed from the current + * context list. + */ + ExecutionContext.prototype.exitFrame = function () { + if (this.contexts && this.contexts.length > 1) { + this.contexts = this.contexts.slice(); + this.contexts.splice(-1); + this.currentContextIds.shift(); + } + else { + throw new Error('Cannot exit frame, the context is empty'); + } + }; + /** + * Enter the next iteration of a loop, the iteration id of last context is + * increased. + */ + ExecutionContext.prototype.nextIteration = function () { + if (this.contexts && this.contexts.length > 0) { + this.contexts = this.contexts.slice(); + this.lastId++; + var context = Object.assign({}, this.contexts[this.contexts.length - 1]); + context.iterationId += 1; + context.id = this.lastId; + this.contexts.splice(-1, 1, context); + this._currentContextIds.splice(0, 1, this.contextIdforContexts(this.contexts)); + } + else { + throw new Error('Cannot increase frame iteration, the context is empty'); + } + }; + ExecutionContext.prototype.getWeight = function (name) { + return this.weightMap[name]; + }; + ExecutionContext.prototype.addTensorArray = function (tensorArray) { + this.tensorArrayMap[tensorArray.id] = tensorArray; + }; + ExecutionContext.prototype.getTensorArray = function (id) { + return this.tensorArrayMap[id]; + }; + ExecutionContext.prototype.addTensorList = function (tensorList) { + this.tensorListMap[tensorList.id] = tensorList; + }; + ExecutionContext.prototype.getTensorList = function (id) { + return this.tensorListMap[id]; + }; + ExecutionContext.prototype.dispose = function () { + for (var key in this.tensorArrayMap) { + this.tensorArrayMap[key].clearAndClose(); + } + for (var key in this.tensorListMap) { + this.tensorListMap[key].clearAndClose(); + } + }; + return ExecutionContext; + }()); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Given graph inputs and desired outputs, find the minimal set of nodes + * to execute in order to compute the outputs. In addition return other useful + * info such: + * - Missing inputs needed to compute the output. + * - Whether the subgraph contains dynamic ops (control flow, dynamic shape). + * - Alternative inputs in order to avoid async (dynamic op) execution. + */ + function getExecutionSubgraph(inputs, outputs, weightMap) { + var usedNodes = new Set(); + var missingInputs = []; + var dynamicNode = null; + var syncInputs = null; + // Start with the outputs, going backwards and find all the nodes that are + // needed to compute those outputs. + var seen = new Set(); + var inputNodeNames = Object.keys(inputs).map(function (name) { return parseNodeName(name)[0]; }); + var frontier = outputs.slice(); + while (frontier.length > 0) { + var node = frontier.pop(); + if (isControlFlow(node) || isDynamicShape(node)) { + if (dynamicNode == null) { + dynamicNode = node; + syncInputs = dynamicNode.children.map(function (child) { return child.name; }) + .filter(function (name) { return usedNodes.has(name); }); + } + } + usedNodes.add(node.name); + // Weights are dead end since we already have their values. + if (weightMap[node.name] != null) { + continue; + } + // This node is a dead end since it's one of the user-provided inputs. + if (inputNodeNames.indexOf(node.name) !== -1) { + continue; + } + if (node.inputs.length === 0) { + missingInputs.push(node.name); + continue; + } + node.inputs.forEach(function (input) { + // Don't add to the frontier if it is already there. + if (seen.has(input.name)) { + return; + } + seen.add(input.name); + frontier.push(input); + }); + } + return { inputs: inputs, outputs: outputs, usedNodes: usedNodes, missingInputs: missingInputs, dynamicNode: dynamicNode, syncInputs: syncInputs }; + } + /** + * Given the execution info, return a list of nodes in topological order that + * need to be executed to compute the output. + */ + function getNodesInTopologicalOrder(graph, weightMap, executionInfo) { + var usedNodes = executionInfo.usedNodes, inputs = executionInfo.inputs; + var frontier = []; + var inputNodes = Object.keys(inputs) + .map(function (name) { return parseNodeName(name)[0]; }) + .map(function (name) { return graph.nodes[name]; }); + inputNodes.forEach(function (input) { + if (usedNodes.has(input.name)) { + frontier.push(input); + } + }); + graph.weights.forEach(function (weight) { + if (usedNodes.has(weight.name)) { + frontier.push(weight); + } + }); + var seen = new Set(); + var orderedNodes = []; + while (frontier.length > 0) { + var node = frontier.pop(); + seen.add(node.name); + if (!weightMap[node.name]) { + orderedNodes.push(node); + } + node.children.forEach(function (child) { + if (!seen.has(child.name) && usedNodes.has(child.name) && + child.inputs.every(function (input) { return seen.has(input.name); })) { + frontier.push(child); + } + }); + } + return orderedNodes; + } + var CONTROL_FLOW_OPS = [ + 'Switch', 'Merge', 'Enter', 'Exit', 'NextIteration', 'StatelessIf', + 'StatelessWhile', 'if', 'While' + ]; + var DYNAMIC_SHAPE_OPS = [ + 'NonMaxSuppressionV2', 'NonMaxSuppressionV3', 'NonMaxSuppressionV5', 'Where' + ]; + function isControlFlow(node) { + return CONTROL_FLOW_OPS.indexOf(node.op) >= 0; + } + function isDynamicShape(node) { + return DYNAMIC_SHAPE_OPS.indexOf(node.op) >= 0; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var GraphExecutor = /** @class */ (function () { + /** + * + * @param graph Graph the model or function graph to be executed. + * @param parent When building function exector you need to set the parent + * executor. Since the weights and function executor maps are set at parant + * level, that function executor can access the function maps and weight maps + * through the parent. + */ + function GraphExecutor(graph, parent) { + var _this = this; + this.graph = graph; + this.parent = parent; + this.compiledMap = new Map(); + this._weightMap = {}; + this.SEPERATOR = ','; + this._functions = {}; + this._functionExecutorMap = {}; + this._outputs = graph.outputs; + this._inputs = graph.inputs; + this._signature = graph.signature; + this._functions = graph.functions; + // create sub-graph executors + if (graph.functions != null) { + Object.keys(graph.functions).forEach(function (name) { + _this._functionExecutorMap[name] = + new GraphExecutor(graph.functions[name], _this); + }); + } + } + Object.defineProperty(GraphExecutor.prototype, "weightIds", { + get: function () { + return this.parent ? this.parent.weightIds : this._weightIds; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "functionExecutorMap", { + get: function () { + return this.parent ? this.parent.functionExecutorMap : + this._functionExecutorMap; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "weightMap", { + get: function () { + return this.parent ? this.parent.weightMap : this._weightMap; + }, + set: function (weightMap) { + var weightIds = Object.keys(weightMap).map(function (key) { return weightMap[key].map(function (tensor) { return tensor.id; }); }); + this._weightIds = [].concat.apply([], weightIds); + this._weightMap = weightMap; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "inputs", { + get: function () { + return this._inputs.map(function (node) { + return { + name: node.name, + shape: node.attrParams['shape'] ? + node.attrParams['shape'].value : + undefined, + dtype: node.attrParams['dtype'] ? + node.attrParams['dtype'].value : + undefined + }; + }); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "outputs", { + get: function () { + return this._outputs.map(function (node) { + return { + name: node.name, + shape: node.attrParams['shape'] ? + node.attrParams['shape'].value : + undefined, + dtype: node.attrParams['dtype'] ? + node.attrParams['dtype'].value : + undefined + }; + }); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "inputNodes", { + get: function () { + return this._inputs.map(function (node) { return node.signatureKey || node.name; }); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "outputNodes", { + get: function () { + return this._outputs.map(function (node) { + var name = node.signatureKey || node.name; + return node.defaultOutput ? (name + ":" + node.defaultOutput) : name; + }); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphExecutor.prototype, "functions", { + get: function () { + var _this = this; + return Object.keys(this._functions).reduce(function (map, key) { + map[key] = _this._functions[key].signature; + return map; + }, {}); + }, + enumerable: true, + configurable: true + }); + GraphExecutor.prototype.getCompilationKey = function (inputs, outputs) { + var sortedInputs = inputs.map(function (node) { return node.name; }).sort(); + var sortedOutputs = outputs.map(function (node) { return node.name; }).sort(); + return sortedInputs.join(this.SEPERATOR) + '--' + + sortedOutputs.join(this.SEPERATOR); + }; + /** + * Compiles the inference graph and returns the minimal set of nodes that are + * required for execution, in the correct execution order. + */ + GraphExecutor.prototype.compile = function (inputs, outputs) { + var executionInfo = getExecutionSubgraph(inputs, outputs, this.weightMap); + var missingInputs = executionInfo.missingInputs, dynamicNode = executionInfo.dynamicNode, syncInputs = executionInfo.syncInputs; + if (dynamicNode != null) { + throw new Error("This execution contains the node '" + dynamicNode.name + "', which has " + + ("the dynamic op '" + dynamicNode.op + "'. Please use ") + + "model.executeAsync() instead. Alternatively, to avoid the " + + ("dynamic ops, specify the inputs [" + syncInputs + "]")); + } + if (missingInputs.length > 0) { + var outNames = outputs.map(function (n) { return n.name; }); + var inNames = Object.keys(inputs); + throw new Error("Cannot compute the outputs [" + outNames + "] from the provided inputs " + + ("[" + inNames + "]. Missing the following inputs: [" + missingInputs + "]")); + } + return getNodesInTopologicalOrder(this.graph, this.weightMap, executionInfo); + }; + /** + * Executes the inference for given input tensors. + * @param inputs Tensor map for the model inputs, keyed by the input node + * names. + * @param outputs output node name from the Tensorflow model, if no outputs + * are specified, the default outputs of the model would be used. You can + * inspect intermediate nodes of the model by adding them to the outputs + * array. + */ + GraphExecutor.prototype.execute = function (inputs, outputs) { + var _this = this; + inputs = this.mapInputs(inputs); + var names = Object.keys(inputs).sort(); + this.checkInputs(inputs); + this.checkInputShapeAndType(inputs); + outputs = this.mapOutputs(outputs); + this.checkOutputs(outputs); + var inputNodes = names.map(function (name) { return _this.graph.nodes[parseNodeName(name)[0]]; }); + var outputNodes = outputs.map(function (name) { return _this.graph.nodes[parseNodeName(name)[0]]; }); + var compilationKey = this.getCompilationKey(inputNodes, outputNodes); + // Do nothing if the compiled graph cache contains the input. + var orderedNodes = this.compiledMap.get(compilationKey); + if (orderedNodes == null) { + orderedNodes = this.compile(inputs, outputNodes); + this.compiledMap.set(compilationKey, orderedNodes); + } + var tensorArrayMap = {}; + var tensorListMap = {}; + return tfc.tidy(function () { + var context = new ExecutionContext(_this.weightMap, tensorArrayMap, tensorListMap, _this.functionExecutorMap); + var tensorsMap = __assign({}, _this.weightMap); + Object.keys(inputs).forEach(function (name) { + var _a = parseNodeName(name), nodeName = _a[0], index = _a[1]; + var tensors = []; + tensors[index] = inputs[name]; + tensorsMap[nodeName] = tensors; + }); + var tensorsToKeep = _this.getFrozenTensorIds(tensorsMap); + var intermediateTensorConsumerCount = {}; + for (var i = 0; i < orderedNodes.length; i++) { + var node = orderedNodes[i]; + if (!tensorsMap[node.name]) { + var tensors = executeOp$g(node, tensorsMap, context); + if (tensors instanceof Promise) { + throw new Error("The execution of the op '" + node.op + "' returned a promise. " + + "Please use model.executeAsync() instead."); + } + tensorsMap[node.name] = tensors; + _this.checkTensorForDisposal(node.name, node, tensorsMap, context, tensorsToKeep, outputs, intermediateTensorConsumerCount); + } + } + // dispose the context for the root executor + if (_this.parent == null) { + context.dispose(); + } + return outputs.map(function (name) { return getTensor(name, tensorsMap, context); }); + }); + }; + GraphExecutor.prototype.getFrozenTensorIds = function (tensorMap) { + var ids = [].concat.apply([], Object.keys(tensorMap) + .map(function (key) { return tensorMap[key]; }) + .map(function (tensors) { return tensors.map(function (tensor) { return tensor.id; }); })); + return new Set(ids); + }; + GraphExecutor.prototype.checkTensorForDisposal = function (nodeName, node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount) { + // Skip output nodes and any control flow nodes, since its dependency is + // tricky to track correctly. + if (node.category === 'control' || outputNames.indexOf(nodeName) !== -1) { + return; + } + tensorMap[nodeName].forEach(function (tensor) { + if (tensor != null) { + intermediateTensorConsumerCount[tensor.id] = + (intermediateTensorConsumerCount[tensor.id] || 0) + + node.children.length; + } + }); + node.inputs.forEach(function (input) { + // Skip any control flow nodes, since its dependency is tricky to track + // correctly. + if (input.category !== 'control') { + var tensors = getTensorsForCurrentContenxt(input.name, tensorMap, context); + if (tensors != null) { + tensors.forEach(function (tensor) { + if (tensor && !tensorsToKeep.has(tensor.id)) { + var count = intermediateTensorConsumerCount[tensor.id]; + if (count === 1) { + tensor.dispose(); + delete intermediateTensorConsumerCount[tensor.id]; + } + else if (count != null) { + // only intermediate nodes has count set, inputs and weights are + // not. + intermediateTensorConsumerCount[tensor.id]--; + } + } + }); + } + } + }); + }; + /** + * Executes the inference for given input tensors in Async fashion. + * @param inputs Tensor map for the model inputs, keyed by the input node + * names. + * @param outputs output node name from the Tensorflow model, if no outputs + * are specified, the default outputs of the model would be used. You can + * inspect intermediate nodes of the model by adding them to the outputs + * array. + */ + GraphExecutor.prototype.executeAsync = function (inputs, outputs) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this._executeAsync(inputs, outputs)]; + }); + }); + }; + /** + * Executes the inference for given input tensors in Async fashion. + * @param inputs Tensor map for the model inputs, keyed by the input node + * names. + * @param outputs output node name from the Tensorflow model, if no outputs + * are specified, the default outputs of the model would be used. You can + * inspect intermediate nodes of the model by adding them to the outputs + * array. + * @param isFunctionExecution Flag for executing a function. + * @param tensorArrayMap Optional, global TensorArray map by id. Used for + * function execution. + * @param tensorArrayMap Optinal global TensorList map by id. Used for + * function execution. + */ + GraphExecutor.prototype._executeAsync = function (inputs, outputs, isFunctionExecution, tensorArrayMap, tensorListMap) { + if (isFunctionExecution === void 0) { isFunctionExecution = false; } + if (tensorArrayMap === void 0) { tensorArrayMap = {}; } + if (tensorListMap === void 0) { tensorListMap = {}; } + return __awaiter(this, void 0, void 0, function () { + var context, tensorMap, results, outputIds, inputIds; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!isFunctionExecution) { + inputs = this.mapInputs(inputs); + this.checkInputs(inputs); + this.checkInputShapeAndType(inputs); + outputs = this.mapOutputs(outputs); + this.checkOutputs(outputs); + } + context = new ExecutionContext(this.weightMap, tensorArrayMap, tensorListMap, this.functionExecutorMap); + return [4 /*yield*/, this.executeWithControlFlow(inputs, context, outputs, isFunctionExecution)]; + case 1: + tensorMap = _a.sent(); + results = outputs.map(function (name) { return getTensor(name, tensorMap, context); }); + outputIds = new Set(results.map(function (t) { return t.id; })); + inputIds = new Set(Object.keys(inputs).map(function (name) { return inputs[name].id; })); + Object.keys(tensorMap).forEach(function (key) { + var tensorArray = tensorMap[key]; + tensorArray.forEach(function (tensor) { + if (tensor && !tensor.isDisposed && !outputIds.has(tensor.id) && + !inputIds.has(tensor.id) && + _this.weightIds.indexOf(tensor.id) === -1) { + tensor.dispose(); + } + }); + }); + // dispose the context for the root executor + if (this.parent == null) { + context.dispose(); + } + return [2 /*return*/, results]; + } + }); + }); + }; + GraphExecutor.prototype.executeFunctionAsync = function (inputs, tensorArrayMap, tensorListMap) { + return __awaiter(this, void 0, void 0, function () { + var mappedInputs; + var _this = this; + return __generator(this, function (_a) { + mappedInputs = inputs.reduce(function (map, tensor, index) { + map[_this.inputs[index].name] = tensor; + return map; + }, {}); + return [2 /*return*/, this._executeAsync(mappedInputs, this.outputNodes, true, tensorArrayMap, tensorListMap)]; + }); + }); + }; + /** + * When there are control flow nodes in the graph, the graph execution use + * ExecutionContext to keep track of the frames and loop iterators. + * @param inputs placeholder tensors for the graph. + * @param context the execution context object for current execution. + * @param isFunctionExecution Flag for executing a function. + */ + GraphExecutor.prototype.executeWithControlFlow = function (inputs, context, outputNames, isFunctionExecution) { + return __awaiter(this, void 0, void 0, function () { + var names, inputNodes, outputNodes, _a, usedNodes, missingInputs, dynamicNode, syncInputs, stack, tensorsMap, intermediateTensorConsumerCount, tensorsToKeep, added, promises, missingOutputs, alternativeMsg; + var _this = this; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + names = Object.keys(inputs); + inputNodes = names.map(function (name) { return _this.graph.nodes[parseNodeName(name)[0]]; }); + outputNodes = outputNames.map(function (name) { return _this.graph.nodes[parseNodeName(name)[0]]; }); + _a = getExecutionSubgraph(inputs, outputNodes, this.weightMap), usedNodes = _a.usedNodes, missingInputs = _a.missingInputs, dynamicNode = _a.dynamicNode, syncInputs = _a.syncInputs; + stack = inputNodes.concat(this.graph.weights).map(function (node) { + return { node: node, contexts: context.currentContext }; + }); + tensorsMap = __assign({}, this.weightMap); + Object.keys(inputs).forEach(function (name) { + var _a = parseNodeName(name), nodeName = _a[0], index = _a[1]; + var tensors = []; + tensors[index] = inputs[name]; + tensorsMap[nodeName] = tensors; + }); + intermediateTensorConsumerCount = {}; + tensorsToKeep = this.getFrozenTensorIds(tensorsMap); + added = {}; + _b.label = 1; + case 1: + if (!(stack.length > 0)) return [3 /*break*/, 3]; + promises = this.processStack(inputNodes, stack, context, tensorsMap, added, tensorsToKeep, outputNames, intermediateTensorConsumerCount, usedNodes); + return [4 /*yield*/, Promise.all(promises)]; + case 2: + _b.sent(); + return [3 /*break*/, 1]; + case 3: + if (dynamicNode == null && !isFunctionExecution) { + console.warn("This model execution did not contain any nodes with control flow " + + "or dynamic output shapes. You can use model.execute() instead."); + } + missingOutputs = outputNodes + .filter(function (node) { return !isControlFlow(node) && + !getTensor(node.name, tensorsMap, context); }) + .map(function (node) { return node.name; }); + if (missingOutputs.length > 0) { + alternativeMsg = ''; + if (dynamicNode != null) { + alternativeMsg = + "Alternatively, to avoid the dynamic ops, use model.execute() " + + ("and specify the inputs [" + syncInputs + "]"); + } + throw new Error("Cannot compute the outputs [" + missingOutputs + "] from the provided " + + ("inputs [" + names + "]. Consider providing the following inputs: ") + + ("[" + missingInputs + "]. " + alternativeMsg)); + } + return [2 /*return*/, tensorsMap]; + } + }); + }); + }; + GraphExecutor.prototype.processStack = function (inputNodes, stack, context, tensorMap, added, tensorsToKeep, outputNames, intermediateTensorConsumerCount, usedNodes) { + var _this = this; + var promises = []; + var _loop_1 = function () { + var item = stack.pop(); + context.currentContext = item.contexts; + var nodeName = ''; + // The tensor of the Enter op with isConstant set should be set + // in the parent scope, so it will be available as constant for the + // whole loop. + if (item.node.op === 'Enter' && + getParamValue('isConstant', item.node, tensorMap, context)) { + nodeName = getNodeNameAndIndex(item.node.name, context)[0]; + } + // only process nodes that are not provided as input nodes. + if (inputNodes.indexOf(item.node) === -1) { + var tensors = executeOp$g(item.node, tensorMap, context); + if (!nodeName) { + nodeName = getNodeNameAndIndex(item.node.name, context)[0]; + } + var currentContext_1 = context.currentContext; + if (tensors instanceof Promise) { + promises.push(tensors.then(function (t) { + tensorMap[nodeName] = t; + context.currentContext = currentContext_1; + _this.checkTensorForDisposal(nodeName, item.node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount); + _this.processChildNodes(item.node, stack, context, tensorMap, added, usedNodes); + return t; + })); + } + else { + tensorMap[nodeName] = tensors; + this_1.checkTensorForDisposal(nodeName, item.node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount); + this_1.processChildNodes(item.node, stack, context, tensorMap, added, usedNodes); + } + } + else { + this_1.processChildNodes(item.node, stack, context, tensorMap, added, usedNodes); + } + }; + var this_1 = this; + while (stack.length > 0) { + _loop_1(); + } + return promises; + }; + GraphExecutor.prototype.processChildNodes = function (node, stack, context, tensorMap, added, usedNodes) { + node.children.forEach(function (childNode) { + var nodeName = getNodeNameAndIndex(childNode.name, context)[0]; + if (added[nodeName] || !usedNodes.has(childNode.name)) { + return; + } + // Merge op can be pushed if any of its inputs has value. + if (childNode.op === 'Merge') { + if (childNode.inputNames.some(function (name) { + return !!getTensor(name, tensorMap, context); + })) { + added[nodeName] = true; + stack.push({ contexts: context.currentContext, node: childNode }); + } + } + else // Otherwise all inputs must to have value. + if (childNode.inputNames.every(function (name) { + return !!getTensor(name, tensorMap, context); + })) { + added[nodeName] = true; + stack.push({ contexts: context.currentContext, node: childNode }); + } + }); + }; + /** + * Releases the memory used by the weight tensors. + */ + GraphExecutor.prototype.dispose = function () { + var _this = this; + Object.keys(this.weightMap) + .forEach(function (key) { return _this.weightMap[key].forEach(function (tensor) { return tensor.dispose(); }); }); + }; + GraphExecutor.prototype.checkInputShapeAndType = function (inputs) { + var _this = this; + Object.keys(inputs).forEach(function (name) { + var input = inputs[name]; + var nodeName = parseNodeName(name)[0]; + var node = _this.graph.nodes[nodeName]; + if (node.attrParams['shape'] && node.attrParams['shape'].value) { + var shape_1 = node.attrParams['shape'].value; + var match = shape_1.length === input.shape.length && + input.shape.every(function (dim, index) { return shape_1[index] === -1 || shape_1[index] === dim; }); + tfc.util.assert(match, function () { return "The shape of dict['" + node.name + "'] provided in " + + ("model.execute(dict) must be [" + shape_1 + "], but was ") + + ("[" + input.shape + "]"); }); + } + if (node.attrParams['dtype'] && node.attrParams['dtype'].value) { + tfc.util.assert(input.dtype === node.attrParams['dtype'].value, function () { return "The dtype of dict['" + node.name + "'] provided in " + + "model.execute(dict) must be " + + (node.attrParams['dtype'].value + ", but was " + input.dtype); }); + } + }); + }; + GraphExecutor.prototype.mapInputs = function (inputs) { + var result = {}; + for (var inputName in inputs) { + if (this._signature != null && this._signature.inputs != null && + this._signature.inputs[inputName] != null) { + var tensor = this._signature.inputs[inputName]; + result[tensor.name] = inputs[inputName]; + } + else { + result[inputName] = inputs[inputName]; + } + } + return result; + }; + GraphExecutor.prototype.checkInputs = function (inputs) { + var _this = this; + var notInGraph = Object.keys(inputs).filter(function (name) { + var nodeName = parseNodeName(name)[0]; + return _this.graph.nodes[nodeName] == null; + }); + if (notInGraph.length > 0) { + throw new Error("The dict provided in model.execute(dict) has " + + ("keys: [" + notInGraph + "] that are not part of graph")); + } + }; + GraphExecutor.prototype.mapOutputs = function (outputs) { + var _this = this; + return outputs.map(function (name) { + if (_this._signature != null && _this._signature.outputs != null && + _this._signature.outputs[name] != null) { + var tensor = _this._signature.outputs[name]; + return tensor.name; + } + return name; + }, {}); + }; + GraphExecutor.prototype.checkOutputs = function (outputs) { + var _this = this; + outputs.forEach(function (name) { + var normalizedName = parseNodeName(name)[0]; + if (!_this.graph.nodes[normalizedName]) { + throw new Error("The output '" + name + "' is not found in the graph"); + } + }); + }; + return GraphExecutor; + }()); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TFHUB_SEARCH_PARAM = '?tfjs-format=file'; + var DEFAULT_MODEL_NAME = 'model.json'; + /** + * A `tf.GraphModel` is a directed, acyclic graph built from a + * SavedModel GraphDef and allows inference execution. + * + * A `tf.GraphModel` can only be created by loading from a model converted from + * a [TensorFlow SavedModel](https://www.tensorflow.org/guide/saved_model) using + * the command line converter tool and loaded via `tf.loadGraphModel`. + */ + /** @doc {heading: 'Models', subheading: 'Classes'} */ + var GraphModel = /** @class */ (function () { + /** + * @param modelUrl url for the model, or an `io.IOHandler`. + * @param weightManifestUrl url for the weight file generated by + * scripts/convert.py script. + * @param requestOption options for Request, which allows to send credentials + * and custom headers. + * @param onProgress Optional, progress callback function, fired periodically + * before the load is completed. + */ + function GraphModel(modelUrl, loadOptions) { + if (loadOptions === void 0) { loadOptions = {}; } + this.modelUrl = modelUrl; + this.loadOptions = loadOptions; + this.version = 'n/a'; + if (loadOptions == null) { + this.loadOptions = {}; + } + } + Object.defineProperty(GraphModel.prototype, "modelVersion", { + // Returns the version information for the tensorflow model GraphDef. + get: function () { + return this.version; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphModel.prototype, "inputNodes", { + get: function () { + return this.executor.inputNodes; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphModel.prototype, "outputNodes", { + get: function () { + return this.executor.outputNodes; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphModel.prototype, "inputs", { + get: function () { + return this.executor.inputs; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphModel.prototype, "outputs", { + get: function () { + return this.executor.outputs; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GraphModel.prototype, "weights", { + get: function () { + return this.executor.weightMap; + }, + enumerable: true, + configurable: true + }); + GraphModel.prototype.findIOHandler = function () { + var path = this.modelUrl; + if (path.load != null) { + // Path is an IO Handler. + this.handler = path; + } + else if (this.loadOptions.requestInit != null) { + this.handler = tfc.io.browserHTTPRequest(path, this.loadOptions); + } + else { + var handlers = tfc.io.getLoadHandlers(path, this.loadOptions); + if (handlers.length === 0) { + // For backward compatibility: if no load handler can be found, + // assume it is a relative http path. + handlers.push(tfc.io.browserHTTPRequest(path, this.loadOptions)); + } + else if (handlers.length > 1) { + throw new Error("Found more than one (" + handlers.length + ") load handlers for " + + ("URL '" + [path] + "'")); + } + this.handler = handlers[0]; + } + }; + /** + * Loads the model and weight files, construct the in memory weight map and + * compile the inference graph. + */ + GraphModel.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + var artifacts; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.findIOHandler(); + if (this.handler.load == null) { + throw new Error('Cannot proceed with model loading because the IOHandler provided ' + + 'does not have the `load` method implemented.'); + } + return [4 /*yield*/, this.handler.load()]; + case 1: + artifacts = _a.sent(); + return [2 /*return*/, this.loadSync(artifacts)]; + } + }); + }); + }; + /** + * Synchronously construct the in memory weight map and + * compile the inference graph. + */ + /** @doc {heading: 'Models', subheading: 'Classes', ignoreCI: true} */ + GraphModel.prototype.loadSync = function (artifacts) { + this.artifacts = artifacts; + var graph = this.artifacts.modelTopology; + var signature = {}; + if (this.artifacts.userDefinedMetadata != null) { + signature = // tslint:disable-next-line:no-any + this.artifacts.userDefinedMetadata.signature; + } + this.version = graph.versions.producer + "." + graph.versions.minConsumer; + var weightMap = tfc.io.decodeWeights(this.artifacts.weightData, this.artifacts.weightSpecs); + this.executor = new GraphExecutor(OperationMapper.Instance.transformGraph(graph, signature)); + this.executor.weightMap = this.convertTensorMapToTensorsMap(weightMap); + return true; + }; + /** + * Save the configuration and/or weights of the GraphModel. + * + * An `IOHandler` is an object that has a `save` method of the proper + * signature defined. The `save` method manages the storing or + * transmission of serialized data ("artifacts") that represent the + * model's topology and weights onto or via a specific medium, such as + * file downloads, local storage, IndexedDB in the web browser and HTTP + * requests to a server. TensorFlow.js provides `IOHandler` + * implementations for a number of frequently used saving mediums, such as + * `tf.io.browserDownloads` and `tf.io.browserLocalStorage`. See `tf.io` + * for more details. + * + * This method also allows you to refer to certain types of `IOHandler`s + * as URL-like string shortcuts, such as 'localstorage://' and + * 'indexeddb://'. + * + * Example 1: Save `model`'s topology and weights to browser [local + * storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage); + * then load it back. + * + * ```js + * const modelUrl = + * 'https://storage.googleapis.com/tfjs-models/savedmodel/mobilenet_v2_1.0_224/model.json'; + * const model = await tf.loadGraphModel(modelUrl); + * const zeros = tf.zeros([1, 224, 224, 3]); + * model.predict(zeros).print(); + * + * const saveResults = await model.save('localstorage://my-model-1'); + * + * const loadedModel = await tf.loadGraphModel('localstorage://my-model-1'); + * console.log('Prediction from loaded model:'); + * model.predict(zeros).print(); + * ``` + * + * @param handlerOrURL An instance of `IOHandler` or a URL-like, + * scheme-based string shortcut for `IOHandler`. + * @param config Options for saving the model. + * @returns A `Promise` of `SaveResult`, which summarizes the result of + * the saving, such as byte sizes of the saved artifacts for the model's + * topology and weight values. + */ + /** + * @doc {heading: 'Models', subheading: 'Classes', ignoreCI: true} + */ + GraphModel.prototype.save = function (handlerOrURL, config) { + return __awaiter(this, void 0, void 0, function () { + var handlers; + return __generator(this, function (_a) { + if (typeof handlerOrURL === 'string') { + handlers = tfc.io.getSaveHandlers(handlerOrURL); + if (handlers.length === 0) { + throw new Error("Cannot find any save handlers for URL '" + handlerOrURL + "'"); + } + else if (handlers.length > 1) { + throw new Error("Found more than one (" + handlers.length + ") save handlers for " + + ("URL '" + handlerOrURL + "'")); + } + handlerOrURL = handlers[0]; + } + if (handlerOrURL.save == null) { + throw new Error('GraphModel.save() cannot proceed because the IOHandler ' + + 'provided does not have the `save` attribute defined.'); + } + return [2 /*return*/, handlerOrURL.save(this.artifacts)]; + }); + }); + }; + /** + * Execute the inference for the input tensors. + * + * @param input The input tensors, when there is single input for the model, + * inputs param should be a `tf.Tensor`. For models with mutliple inputs, + * inputs params should be in either `tf.Tensor`[] if the input order is + * fixed, or otherwise NamedTensorMap format. + * + * For model with multiple inputs, we recommend you use NamedTensorMap as the + * input type, if you use `tf.Tensor`[], the order of the array needs to + * follow the + * order of inputNodes array. @see {@link GraphModel.inputNodes} + * + * You can also feed any intermediate nodes using the NamedTensorMap as the + * input type. For example, given the graph + * InputNode => Intermediate => OutputNode, + * you can execute the subgraph Intermediate => OutputNode by calling + * model.execute('IntermediateNode' : tf.tensor(...)); + * + * This is useful for models that uses tf.dynamic_rnn, where the intermediate + * state needs to be fed manually. + * + * For batch inference execution, the tensors for each input need to be + * concatenated together. For example with mobilenet, the required input shape + * is [1, 244, 244, 3], which represents the [batch, height, width, channel]. + * If we are provide a batched data of 100 images, the input tensor should be + * in the shape of [100, 244, 244, 3]. + * + * @param config Prediction configuration for specifying the batch size and + * output node names. Currently the batch size option is ignored for graph + * model. + * + * @returns Inference result tensors. The output would be single `tf.Tensor` + * if model has single output node, otherwise Tensor[] or NamedTensorMap[] + * will be returned for model with multiple outputs. + */ + /** @doc {heading: 'Models', subheading: 'Classes'} */ + GraphModel.prototype.predict = function (inputs, config) { + return this.execute(inputs, this.outputNodes); + }; + GraphModel.prototype.normalizeInputs = function (inputs) { + if (!(inputs instanceof tfc.Tensor) && !Array.isArray(inputs)) { + // The input is already a NamedTensorMap. + return inputs; + } + inputs = Array.isArray(inputs) ? inputs : [inputs]; + if (inputs.length !== this.inputNodes.length) { + throw new Error('Input tensor count mismatch,' + + ("the graph model has " + this.inputNodes.length + " placeholders, ") + + ("while there are " + inputs.length + " input tensors.")); + } + return this.inputNodes.reduce(function (map, inputName, i) { + map[inputName] = inputs[i]; + return map; + }, {}); + }; + GraphModel.prototype.normalizeOutputs = function (outputs) { + outputs = outputs || this.outputNodes; + return !Array.isArray(outputs) ? [outputs] : outputs; + }; + /** + * Executes inference for the model for given input tensors. + * @param inputs tensor, tensor array or tensor map of the inputs for the + * model, keyed by the input node names. + * @param outputs output node name from the Tensorflow model, if no + * outputs are specified, the default outputs of the model would be used. + * You can inspect intermediate nodes of the model by adding them to the + * outputs array. + * + * @returns A single tensor if provided with a single output or no outputs + * are provided and there is only one default output, otherwise return a + * tensor array. The order of the tensor array is the same as the outputs + * if provided, otherwise the order of outputNodes attribute of the model. + */ + /** @doc {heading: 'Models', subheading: 'Classes'} */ + GraphModel.prototype.execute = function (inputs, outputs) { + inputs = this.normalizeInputs(inputs); + outputs = this.normalizeOutputs(outputs); + var result = this.executor.execute(inputs, outputs); + return result.length > 1 ? result : result[0]; + }; + /** + * Executes inference for the model for given input tensors in async + * fashion, use this method when your model contains control flow ops. + * @param inputs tensor, tensor array or tensor map of the inputs for the + * model, keyed by the input node names. + * @param outputs output node name from the Tensorflow model, if no outputs + * are specified, the default outputs of the model would be used. You can + * inspect intermediate nodes of the model by adding them to the outputs + * array. + * + * @returns A Promise of single tensor if provided with a single output or + * no outputs are provided and there is only one default output, otherwise + * return a tensor map. + */ + /** @doc {heading: 'Models', subheading: 'Classes'} */ + GraphModel.prototype.executeAsync = function (inputs, outputs) { + return __awaiter(this, void 0, void 0, function () { + var result; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + inputs = this.normalizeInputs(inputs); + outputs = this.normalizeOutputs(outputs); + return [4 /*yield*/, this.executor.executeAsync(inputs, outputs)]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length > 1 ? result : result[0]]; + } + }); + }); + }; + GraphModel.prototype.convertTensorMapToTensorsMap = function (map) { + return Object.keys(map).reduce(function (newMap, key) { + newMap[key] = [map[key]]; + return newMap; + }, {}); + }; + /** + * Releases the memory used by the weight tensors. + */ + /** @doc {heading: 'Models', subheading: 'Classes'} */ + GraphModel.prototype.dispose = function () { + this.executor.dispose(); + }; + return GraphModel; + }()); + /** + * Load a graph model given a URL to the model definition. + * + * Example of loading MobileNetV2 from a URL and making a prediction with a + * zeros input: + * + * ```js + * const modelUrl = + * 'https://storage.googleapis.com/tfjs-models/savedmodel/mobilenet_v2_1.0_224/model.json'; + * const model = await tf.loadGraphModel(modelUrl); + * const zeros = tf.zeros([1, 224, 224, 3]); + * model.predict(zeros).print(); + * ``` + * + * Example of loading MobileNetV2 from a TF Hub URL and making a prediction with + * a zeros input: + * + * ```js + * const modelUrl = + * 'https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/classification/2'; + * const model = await tf.loadGraphModel(modelUrl, {fromTFHub: true}); + * const zeros = tf.zeros([1, 224, 224, 3]); + * model.predict(zeros).print(); + * ``` + * @param modelUrl The url or an `io.IOHandler` that loads the model. + * @param options Options for the HTTP request, which allows to send credentials + * and custom headers. + */ + /** @doc {heading: 'Models', subheading: 'Loading'} */ + function loadGraphModel(modelUrl, options) { + if (options === void 0) { options = {}; } + return __awaiter(this, void 0, void 0, function () { + var model; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (modelUrl == null) { + throw new Error('modelUrl in loadGraphModel() cannot be null. Please provide a url ' + + 'or an IOHandler that loads the model'); + } + if (options == null) { + options = {}; + } + if (options.fromTFHub) { + if (modelUrl.load == null) { + if (!modelUrl.endsWith('/')) { + modelUrl = modelUrl + '/'; + } + modelUrl = "" + modelUrl + DEFAULT_MODEL_NAME + TFHUB_SEARCH_PARAM; + } + } + model = new GraphModel(modelUrl, options); + return [4 /*yield*/, model.load()]; + case 1: + _a.sent(); + return [2 /*return*/, model]; + } + }); + }); + } + + /** @license See the LICENSE file. */ + // This code is auto-generated, do not modify this file! + var version = '2.1.0'; + + exports.GraphModel = GraphModel; + exports.deregisterOp = deregisterOp; + exports.loadGraphModel = loadGraphModel; + exports.registerOp = registerOp; + exports.version_converter = version; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=tf-converter.js.map diff --git a/demo/handpose/vendor/tf-core.js b/demo/handpose/vendor/tf-core.js new file mode 100644 index 0000000..699d0ba --- /dev/null +++ b/demo/handpose/vendor/tf-core.js @@ -0,0 +1,32484 @@ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.tf = global.tf || {})); +}(this, (function (exports) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + function __awaiter(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // Expects flags from URL in the format ?tfjsflags=FLAG1:1,FLAG2:true. + var TENSORFLOWJS_FLAGS_PREFIX = 'tfjsflags'; + /** + * The environment contains evaluated flags as well as the registered platform. + * This is always used as a global singleton and can be retrieved with + * `tf.env()`. + */ + /** @doc {heading: 'Environment'} */ + var Environment = /** @class */ (function () { + // tslint:disable-next-line: no-any + function Environment(global) { + this.global = global; + this.flags = {}; + this.flagRegistry = {}; + this.urlFlags = {}; + this.populateURLFlags(); + } + Environment.prototype.setPlatform = function (platformName, platform) { + if (this.platform != null) { + console.warn("Platform " + this.platformName + " has already been set. " + + ("Overwriting the platform with " + platform + ".")); + } + this.platformName = platformName; + this.platform = platform; + }; + Environment.prototype.registerFlag = function (flagName, evaluationFn, setHook) { + this.flagRegistry[flagName] = { evaluationFn: evaluationFn, setHook: setHook }; + // Override the flag value from the URL. This has to happen here because the + // environment is initialized before flags get registered. + if (this.urlFlags[flagName] != null) { + var flagValue = this.urlFlags[flagName]; + console.warn("Setting feature override from URL " + flagName + ": " + flagValue + "."); + this.set(flagName, flagValue); + } + }; + Environment.prototype.getAsync = function (flagName) { + return __awaiter(this, void 0, void 0, function () { + var _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (flagName in this.flags) { + return [2 /*return*/, this.flags[flagName]]; + } + _a = this.flags; + _b = flagName; + return [4 /*yield*/, this.evaluateFlag(flagName)]; + case 1: + _a[_b] = _c.sent(); + return [2 /*return*/, this.flags[flagName]]; + } + }); + }); + }; + Environment.prototype.get = function (flagName) { + if (flagName in this.flags) { + return this.flags[flagName]; + } + var flagValue = this.evaluateFlag(flagName); + if (flagValue instanceof Promise) { + throw new Error("Flag " + flagName + " cannot be synchronously evaluated. " + + "Please use getAsync() instead."); + } + this.flags[flagName] = flagValue; + return this.flags[flagName]; + }; + Environment.prototype.getNumber = function (flagName) { + return this.get(flagName); + }; + Environment.prototype.getBool = function (flagName) { + return this.get(flagName); + }; + Environment.prototype.getFlags = function () { + return this.flags; + }; + Object.defineProperty(Environment.prototype, "features", { + // For backwards compatibility. + get: function () { + return this.flags; + }, + enumerable: true, + configurable: true + }); + Environment.prototype.set = function (flagName, value) { + if (this.flagRegistry[flagName] == null) { + throw new Error("Cannot set flag " + flagName + " as it has not been registered."); + } + this.flags[flagName] = value; + if (this.flagRegistry[flagName].setHook != null) { + this.flagRegistry[flagName].setHook(value); + } + }; + Environment.prototype.evaluateFlag = function (flagName) { + if (this.flagRegistry[flagName] == null) { + throw new Error("Cannot evaluate flag '" + flagName + "': no evaluation function found."); + } + return this.flagRegistry[flagName].evaluationFn(); + }; + Environment.prototype.setFlags = function (flags) { + this.flags = Object.assign({}, flags); + }; + Environment.prototype.reset = function () { + this.flags = {}; + this.urlFlags = {}; + this.populateURLFlags(); + }; + Environment.prototype.populateURLFlags = function () { + var _this = this; + if (typeof this.global === 'undefined' || + typeof this.global.location === 'undefined' || + typeof this.global.location.search === 'undefined') { + return; + } + var urlParams = getQueryParams(this.global.location.search); + if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) { + var keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(','); + keyValues.forEach(function (keyValue) { + var _a = keyValue.split(':'), key = _a[0], value = _a[1]; + _this.urlFlags[key] = parseValue(key, value); + }); + } + }; + return Environment; + }()); + function getQueryParams(queryString) { + var params = {}; + queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, function (s) { + var t = []; + for (var _i = 1; _i < arguments.length; _i++) { + t[_i - 1] = arguments[_i]; + } + decodeParam(params, t[0], t[1]); + return t.join('='); + }); + return params; + } + function decodeParam(params, name, value) { + params[decodeURIComponent(name)] = decodeURIComponent(value || ''); + } + function parseValue(flagName, value) { + value = value.toLowerCase(); + if (value === 'true' || value === 'false') { + return value === 'true'; + } + else if ("" + +value === value) { + return +value; + } + throw new Error("Could not parse value flag value " + value + " for flag " + flagName + "."); + } + /** + * Returns the current environment (a global singleton). + * + * The environment object contains the evaluated feature values as well as the + * active platform. + */ + /** @doc {heading: 'Environment'} */ + function env() { + return exports.ENV; + } + exports.ENV = null; + function setEnvironmentGlobal(environment) { + exports.ENV = environment; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // Note that the identifier globalNameSpace is scoped to this module, but will + // always resolve to the same global object regardless of how the module is + // resolved. + // tslint:disable-next-line:no-any + var globalNameSpace; + // tslint:disable-next-line:no-any + function getGlobalNamespace() { + if (globalNameSpace == null) { + // tslint:disable-next-line:no-any + var ns = void 0; + if (typeof (window) !== 'undefined') { + ns = window; + } + else if (typeof (global) !== 'undefined') { + ns = global; + } + else if (typeof (process) !== 'undefined') { + ns = process; + } + else if (typeof (self) !== 'undefined') { + ns = self; + } + else { + throw new Error('Could not find a global object'); + } + globalNameSpace = ns; + } + return globalNameSpace; + } + // tslint:disable-next-line:no-any + function getGlobalMap() { + var ns = getGlobalNamespace(); + if (ns._tfGlobals == null) { + ns._tfGlobals = new Map(); + } + return ns._tfGlobals; + } + /** + * Returns a globally accessible 'singleton' object. + * + * @param key the name of the object + * @param init a function to initialize to initialize this object + * the first time it is fetched. + */ + function getGlobal(key, init) { + var globalMap = getGlobalMap(); + if (globalMap.has(key)) { + return globalMap.get(key); + } + else { + var singleton = init(); + globalMap.set(key, singleton); + return globalMap.get(key); + } + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var kernelRegistry = getGlobal('kernelRegistry', function () { return new Map(); }); + var gradRegistry = getGlobal('gradRegistry', function () { return new Map(); }); + /** + * Returns the kernel function (code) associated with the provided names. + * + * @param kernelName The official name of the kernel. + * @param backendName The official name of the backend. + */ + function getKernel(kernelName, backendName) { + var key = makeKey(kernelName, backendName); + return kernelRegistry.get(key); + } + /** + * Returns the registered gradient info associated with the provided kernel. + * @param kernelName The official TF kernel name. + */ + function getGradient(kernelName) { + return gradRegistry.get(kernelName); + } + function getKernelsForBackend(backendName) { + var it = kernelRegistry.entries(); + var result = []; + while (true) { + var _a = it.next(), done = _a.done, value = _a.value; + if (done) { + break; + } + var key = value[0], config = value[1]; + var backend = key.split('_')[0]; + if (backend === backendName) { + result.push(config); + } + } + return result; + } + /** + * Registers the function (forward pass) for the kernel in a global registry. + * + * @param config A config object with the following properties: + * - `kernelName` The official name of the kernel. + * - `backendName` The official name of the backend. + * - `kernelFunc` The function to run during the forward pass of the kernel. + * - `setupFunc` Optional. Gets called once, after the backend initializes. + * - `disposeFunc` Optional. Gets called once, right before the backend is + * disposed. + */ + function registerKernel(config) { + var kernelName = config.kernelName, backendName = config.backendName; + var key = makeKey(kernelName, backendName); + if (kernelRegistry.has(key)) { + console.warn("The kernel '" + kernelName + "' for backend " + + ("'" + backendName + "' is already registered")); + } + kernelRegistry.set(key, config); + } + /** + * Registers a gradient function for a given kernel in the global registry, + * to be used during the back-propagation of that kernel. + * + * @param config An object with the following properties: + * - `kernelName` The name of the kernel that the gradient function is for. + * - `gradFunc` The function to run during back-propagation. + */ + function registerGradient(config) { + var kernelName = config.kernelName; + if (gradRegistry.has(kernelName)) { + // TODO (yassogba) after 3.0 assess whether we need to keep this gated + // to debug mode. + if (env().getBool('DEBUG')) { + console.warn("Overriding the gradient for '" + kernelName + "'"); + } + } + gradRegistry.set(kernelName, config); + } + /** + * Removes the kernel function from the registry. + * + * @param kernelName The official name of the kernel. + * @param backendName The official name of the backend. + * + */ + function unregisterKernel(kernelName, backendName) { + var key = makeKey(kernelName, backendName); + if (!kernelRegistry.has(key)) { + throw new Error("The kernel '" + kernelName + "' for backend " + + ("'" + backendName + "' is not registered")); + } + kernelRegistry.delete(key); + } + /** Removes the registered gradient from the global registry. */ + function unregisterGradient(kernelName) { + if (!gradRegistry.has(kernelName)) { + throw new Error("The gradient '" + kernelName + "' for backend is not registered"); + } + gradRegistry.delete(kernelName); + } + function makeKey(kernelName, backendName) { + return backendName + "_" + kernelName; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Shuffles the array in-place using Fisher-Yates algorithm. + * + * ```js + * const a = [1, 2, 3, 4, 5]; + * tf.util.shuffle(a); + * console.log(a); + * ``` + * + * @param array The array to shuffle in-place. + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + // tslint:disable-next-line:no-any + function shuffle(array) { + var counter = array.length; + var temp = 0; + var index = 0; + // While there are elements in the array + while (counter > 0) { + // Pick a random index + index = (Math.random() * counter) | 0; + // Decrease counter by 1 + counter--; + // And swap the last element with it + temp = array[counter]; + array[counter] = array[index]; + array[index] = temp; + } + } + /** Clamps a value to a specified range. */ + function clamp(min, x, max) { + return Math.max(min, Math.min(x, max)); + } + function nearestLargerEven(val) { + return val % 2 === 0 ? val : val + 1; + } + function sum(arr) { + var sum = 0; + for (var i = 0; i < arr.length; i++) { + sum += arr[i]; + } + return sum; + } + /** + * Returns a sample from a uniform [a, b) distribution. + * + * @param a The minimum support (inclusive). + * @param b The maximum support (exclusive). + * @return A pseudorandom number on the half-open interval [a,b). + */ + function randUniform(a, b) { + var r = Math.random(); + return (b * r) + (1 - r) * a; + } + /** Returns the squared Euclidean distance between two vectors. */ + function distSquared(a, b) { + var result = 0; + for (var i = 0; i < a.length; i++) { + var diff = Number(a[i]) - Number(b[i]); + result += diff * diff; + } + return result; + } + /** + * Asserts that the expression is true. Otherwise throws an error with the + * provided message. + * + * ```js + * const x = 2; + * tf.util.assert(x === 2, 'x is not 2'); + * ``` + * + * @param expr The expression to assert (as a boolean). + * @param msg A function that returns the message to report when throwing an + * error. We use a function for performance reasons. + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + function assert(expr, msg) { + if (!expr) { + throw new Error(typeof msg === 'string' ? msg : msg()); + } + } + function assertShapesMatch(shapeA, shapeB, errorMessagePrefix) { + if (errorMessagePrefix === void 0) { errorMessagePrefix = ''; } + assert(arraysEqual(shapeA, shapeB), function () { return errorMessagePrefix + (" Shapes " + shapeA + " and " + shapeB + " must match"); }); + } + function assertNonNull(a) { + assert(a != null, function () { return "The input to the tensor constructor must be a non-null value."; }); + } + // NOTE: We explicitly type out what T extends instead of any so that + // util.flatten on a nested array of number doesn't try to infer T as a + // number[][], causing us to explicitly type util.flatten(). + /** + * Flattens an arbitrarily nested array. + * + * ```js + * const a = [[1, 2], [3, 4], [5, [6, [7]]]]; + * const flat = tf.util.flatten(a); + * console.log(flat); + * ``` + * + * @param arr The nested array to flatten. + * @param result The destination array which holds the elements. + * @param skipTypedArray If true, avoids flattening the typed arrays. Defaults + * to false. + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + function flatten(arr, result, skipTypedArray) { + if (result === void 0) { result = []; } + if (skipTypedArray === void 0) { skipTypedArray = false; } + if (result == null) { + result = []; + } + if (Array.isArray(arr) || isTypedArray(arr) && !skipTypedArray) { + for (var i = 0; i < arr.length; ++i) { + flatten(arr[i], result, skipTypedArray); + } + } + else { + result.push(arr); + } + return result; + } + /** + * Returns the size (number of elements) of the tensor given its shape. + * + * ```js + * const shape = [3, 4, 2]; + * const size = tf.util.sizeFromShape(shape); + * console.log(size); + * ``` + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + function sizeFromShape(shape) { + if (shape.length === 0) { + // Scalar. + return 1; + } + var size = shape[0]; + for (var i = 1; i < shape.length; i++) { + size *= shape[i]; + } + return size; + } + function isScalarShape(shape) { + return shape.length === 0; + } + function arraysEqual(n1, n2) { + if (n1 === n2) { + return true; + } + if (n1 == null || n2 == null) { + return false; + } + if (n1.length !== n2.length) { + return false; + } + for (var i = 0; i < n1.length; i++) { + if (n1[i] !== n2[i]) { + return false; + } + } + return true; + } + function isInt(a) { + return a % 1 === 0; + } + function tanh(x) { + // tslint:disable-next-line:no-any + if (Math.tanh != null) { + // tslint:disable-next-line:no-any + return Math.tanh(x); + } + if (x === Infinity) { + return 1; + } + else if (x === -Infinity) { + return -1; + } + else { + var e2x = Math.exp(2 * x); + return (e2x - 1) / (e2x + 1); + } + } + function sizeToSquarishShape(size) { + var width = Math.ceil(Math.sqrt(size)); + return [width, Math.ceil(size / width)]; + } + /** + * Creates a new array with randomized indicies to a given quantity. + * + * ```js + * const randomTen = tf.util.createShuffledIndices(10); + * console.log(randomTen); + * ``` + * + * @param number Quantity of how many shuffled indicies to create. + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + function createShuffledIndices(n) { + var shuffledIndices = new Uint32Array(n); + for (var i = 0; i < n; ++i) { + shuffledIndices[i] = i; + } + shuffle(shuffledIndices); + return shuffledIndices; + } + function rightPad(a, size) { + if (size <= a.length) { + return a; + } + return a + ' '.repeat(size - a.length); + } + function repeatedTry(checkFn, delayFn, maxCounter) { + if (delayFn === void 0) { delayFn = function (counter) { return 0; }; } + return new Promise(function (resolve, reject) { + var tryCount = 0; + var tryFn = function () { + if (checkFn()) { + resolve(); + return; + } + tryCount++; + var nextBackoff = delayFn(tryCount); + if (maxCounter != null && tryCount >= maxCounter) { + reject(); + return; + } + setTimeout(tryFn, nextBackoff); + }; + tryFn(); + }); + } + /** + * Given the full size of the array and a shape that may contain -1 as the + * implicit dimension, returns the inferred shape where -1 is replaced. + * E.g. For shape=[2, -1, 3] and size=24, it will return [2, 4, 3]. + * + * @param shape The shape, which may contain -1 in some dimension. + * @param size The full size (number of elements) of the array. + * @return The inferred shape where -1 is replaced with the inferred size. + */ + function inferFromImplicitShape(shape, size) { + var shapeProd = 1; + var implicitIdx = -1; + for (var i = 0; i < shape.length; ++i) { + if (shape[i] >= 0) { + shapeProd *= shape[i]; + } + else if (shape[i] === -1) { + if (implicitIdx !== -1) { + throw Error("Shapes can only have 1 implicit size. " + + ("Found -1 at dim " + implicitIdx + " and dim " + i)); + } + implicitIdx = i; + } + else if (shape[i] < 0) { + throw Error("Shapes can not be < 0. Found " + shape[i] + " at dim " + i); + } + } + if (implicitIdx === -1) { + if (size > 0 && size !== shapeProd) { + throw Error("Size(" + size + ") must match the product of shape " + shape); + } + return shape; + } + if (shapeProd === 0) { + throw Error("Cannot infer the missing size in [" + shape + "] when " + + "there are 0 elements"); + } + if (size % shapeProd !== 0) { + throw Error("The implicit shape can't be a fractional number. " + + ("Got " + size + " / " + shapeProd)); + } + var newShape = shape.slice(); + newShape[implicitIdx] = size / shapeProd; + return newShape; + } + function parseAxisParam(axis, shape) { + var rank = shape.length; + // Normalize input + axis = axis == null ? shape.map(function (s, i) { return i; }) : [].concat(axis); + // Check for valid range + assert(axis.every(function (ax) { return ax >= -rank && ax < rank; }), function () { + return "All values in axis param must be in range [-" + rank + ", " + rank + ") but " + + ("got axis " + axis); + }); + // Check for only integers + assert(axis.every(function (ax) { return isInt(ax); }), function () { return "All values in axis param must be integers but " + + ("got axis " + axis); }); + // Handle negative axis. + return axis.map(function (a) { return a < 0 ? rank + a : a; }); + } + /** Reduces the shape by removing all dimensions of shape 1. */ + function squeezeShape(shape, axis) { + var newShape = []; + var keptDims = []; + var isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0; + var axes = (axis == null || isEmptyArray) ? + null : + parseAxisParam(axis, shape).sort(); + var j = 0; + for (var i = 0; i < shape.length; ++i) { + if (axes != null) { + if (axes[j] === i && shape[i] !== 1) { + throw new Error("Can't squeeze axis " + i + " since its dim '" + shape[i] + "' is not 1"); + } + if ((axes[j] == null || axes[j] > i) && shape[i] === 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + if (axes[j] <= i) { + j++; + } + } + if (shape[i] !== 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + } + return { newShape: newShape, keptDims: keptDims }; + } + function getTypedArrayFromDType(dtype, size) { + var values = null; + if (dtype == null || dtype === 'float32') { + values = new Float32Array(size); + } + else if (dtype === 'int32') { + values = new Int32Array(size); + } + else if (dtype === 'bool') { + values = new Uint8Array(size); + } + else { + throw new Error("Unknown data type " + dtype); + } + return values; + } + function getArrayFromDType(dtype, size) { + var values = null; + if (dtype == null || dtype === 'float32') { + values = new Float32Array(size); + } + else if (dtype === 'int32') { + values = new Int32Array(size); + } + else if (dtype === 'bool') { + values = new Uint8Array(size); + } + else if (dtype === 'string') { + values = new Array(size); + } + else { + throw new Error("Unknown data type " + dtype); + } + return values; + } + function checkConversionForErrors(vals, dtype) { + for (var i = 0; i < vals.length; i++) { + var num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + throw Error("A tensor of type " + dtype + " being uploaded contains " + num + "."); + } + } + } + /** Returns true if the dtype is valid. */ + function isValidDtype(dtype) { + return dtype === 'bool' || dtype === 'complex64' || dtype === 'float32' || + dtype === 'int32' || dtype === 'string'; + } + /** + * Returns true if the new type can't encode the old type without loss of + * precision. + */ + function hasEncodingLoss(oldType, newType) { + if (newType === 'complex64') { + return false; + } + if (newType === 'float32' && oldType !== 'complex64') { + return false; + } + if (newType === 'int32' && oldType !== 'float32' && oldType !== 'complex64') { + return false; + } + if (newType === 'bool' && oldType === 'bool') { + return false; + } + return true; + } + function isTypedArray(a) { + return a instanceof Float32Array || a instanceof Int32Array || + a instanceof Uint8Array; + } + function bytesPerElement(dtype) { + if (dtype === 'float32' || dtype === 'int32') { + return 4; + } + else if (dtype === 'complex64') { + return 8; + } + else if (dtype === 'bool') { + return 1; + } + else { + throw new Error("Unknown dtype " + dtype); + } + } + /** + * Returns the approximate number of bytes allocated in the string array - 2 + * bytes per character. Computing the exact bytes for a native string in JS is + * not possible since it depends on the encoding of the html page that serves + * the website. + */ + function bytesFromStringArray(arr) { + if (arr == null) { + return 0; + } + var bytes = 0; + arr.forEach(function (x) { return bytes += x.length; }); + return bytes; + } + /** Returns true if the value is a string. */ + function isString(value) { + return typeof value === 'string' || value instanceof String; + } + function isBoolean(value) { + return typeof value === 'boolean'; + } + function isNumber(value) { + return typeof value === 'number'; + } + function inferDtype(values) { + if (Array.isArray(values)) { + return inferDtype(values[0]); + } + if (values instanceof Float32Array) { + return 'float32'; + } + else if (values instanceof Int32Array || values instanceof Uint8Array) { + return 'int32'; + } + else if (isNumber(values)) { + return 'float32'; + } + else if (isString(values)) { + return 'string'; + } + else if (isBoolean(values)) { + return 'bool'; + } + return 'float32'; + } + function isFunction(f) { + return !!(f && f.constructor && f.call && f.apply); + } + function nearestDivisor(size, start) { + for (var i = start; i < size; ++i) { + if (size % i === 0) { + return i; + } + } + return size; + } + function computeStrides(shape) { + var rank = shape.length; + if (rank < 2) { + return []; + } + // Last dimension has implicit stride of 1, thus having D-1 (instead of D) + // strides. + var strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (var i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + return strides; + } + function toTypedArray(a, dtype) { + if (dtype === 'string') { + throw new Error('Cannot convert a string[] to a TypedArray'); + } + if (Array.isArray(a)) { + a = flatten(a); + } + if (env().getBool('DEBUG')) { + checkConversionForErrors(a, dtype); + } + if (noConversionNeeded(a, dtype)) { + return a; + } + if (dtype == null || dtype === 'float32' || dtype === 'complex64') { + return new Float32Array(a); + } + else if (dtype === 'int32') { + return new Int32Array(a); + } + else if (dtype === 'bool') { + var bool = new Uint8Array(a.length); + for (var i = 0; i < bool.length; ++i) { + if (Math.round(a[i]) !== 0) { + bool[i] = 1; + } + } + return bool; + } + else { + throw new Error("Unknown data type " + dtype); + } + } + function createNestedArray(offset, shape, a) { + var ret = new Array(); + if (shape.length === 1) { + var d = shape[0]; + for (var i = 0; i < d; i++) { + ret[i] = a[offset + i]; + } + } + else { + var d = shape[0]; + var rest = shape.slice(1); + var len = rest.reduce(function (acc, c) { return acc * c; }); + for (var i = 0; i < d; i++) { + ret[i] = createNestedArray(offset + i * len, rest, a); + } + } + return ret; + } + // Provide a nested array of TypedArray in given shape. + function toNestedArray(shape, a) { + if (shape.length === 0) { + // Scalar type should return a single number. + return a[0]; + } + var size = shape.reduce(function (acc, c) { return acc * c; }); + if (size === 0) { + // A tensor with shape zero should be turned into empty list. + return []; + } + if (size !== a.length) { + throw new Error("[" + shape + "] does not match the input size " + a.length + "."); + } + return createNestedArray(0, shape, a); + } + function noConversionNeeded(a, dtype) { + return (a instanceof Float32Array && dtype === 'float32') || + (a instanceof Int32Array && dtype === 'int32') || + (a instanceof Uint8Array && dtype === 'bool'); + } + function makeOnesTypedArray(size, dtype) { + var array = makeZerosTypedArray(size, dtype); + for (var i = 0; i < array.length; i++) { + array[i] = 1; + } + return array; + } + function makeZerosTypedArray(size, dtype) { + if (dtype == null || dtype === 'float32' || dtype === 'complex64') { + return new Float32Array(size); + } + else if (dtype === 'int32') { + return new Int32Array(size); + } + else if (dtype === 'bool') { + return new Uint8Array(size); + } + else { + throw new Error("Unknown data type " + dtype); + } + } + /** + * Make nested `TypedArray` filled with zeros. + * @param shape The shape information for the nested array. + * @param dtype dtype of the array element. + */ + function makeZerosNestedTypedArray(shape, dtype) { + var size = shape.reduce(function (prev, curr) { return prev * curr; }, 1); + if (dtype == null || dtype === 'float32') { + return toNestedArray(shape, new Float32Array(size)); + } + else if (dtype === 'int32') { + return toNestedArray(shape, new Int32Array(size)); + } + else if (dtype === 'bool') { + return toNestedArray(shape, new Uint8Array(size)); + } + else { + throw new Error("Unknown data type " + dtype); + } + } + /** + * Returns the current high-resolution time in milliseconds relative to an + * arbitrary time in the past. It works across different platforms (node.js, + * browsers). + * + * ```js + * console.log(tf.util.now()); + * ``` + */ + /** @doc {heading: 'Util', namespace: 'util'} */ + function now() { + return env().platform.now(); + } + function assertNonNegativeIntegerDimensions(shape) { + shape.forEach(function (dimSize) { + assert(Number.isInteger(dimSize) && dimSize >= 0, function () { + return "Tensor must have a shape comprised of positive integers but got " + + ("shape [" + shape + "]."); + }); + }); + } + /** + * Returns a platform-specific implementation of + * [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). + * + * If `fetch` is defined on the global object (`window`, `process`, etc.), + * `tf.util.fetch` returns that function. + * + * If not, `tf.util.fetch` returns a platform-specific solution. + * + * ```js + * const resource = await tf.util.fetch('https://unpkg.com/@tensorflow/tfjs'); + * // handle response + * ``` + */ + /** @doc {heading: 'Util'} */ + function fetch$1(path, requestInits) { + return env().platform.fetch(path, requestInits); + } + /** + * Encodes the provided string into bytes using the provided encoding scheme. + * + * @param s The string to encode. + * @param encoding The encoding scheme. Defaults to utf-8. + * + */ + /** @doc {heading: 'Util'} */ + function encodeString(s, encoding) { + if (encoding === void 0) { encoding = 'utf-8'; } + encoding = encoding || 'utf-8'; + return env().platform.encode(s, encoding); + } + /** + * Decodes the provided bytes into a string using the provided encoding scheme. + * @param bytes The bytes to decode. + * + * @param encoding The encoding scheme. Defaults to utf-8. + */ + /** @doc {heading: 'Util'} */ + function decodeString(bytes, encoding) { + if (encoding === void 0) { encoding = 'utf-8'; } + encoding = encoding || 'utf-8'; + return env().platform.decode(bytes, encoding); + } + /** + * Computes flat index for a given location (multidimentionsal index) in a + * Tensor/multidimensional array. + * + * @param locs Location in the tensor. + * @param rank Rank of the tensor. + * @param strides Tensor strides. + */ + function locToIndex(locs, rank, strides) { + if (rank === 0) { + return 0; + } + else if (rank === 1) { + return locs[0]; + } + var index = locs[locs.length - 1]; + for (var i = 0; i < locs.length - 1; ++i) { + index += strides[i] * locs[i]; + } + return index; + } + /** + * Computes the location (multidimensional index) in a tensor/multidimentional + * array for a given flat index. + * + * @param index Index in flat array. + * @param rank Rank of tensor. + * @param strides Strides of tensor. + */ + function indexToLoc(index, rank, strides) { + if (rank === 0) { + return []; + } + else if (rank === 1) { + return [index]; + } + var locs = new Array(rank); + for (var i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / strides[i]); + index -= locs[i] * strides[i]; + } + locs[locs.length - 1] = index; + return locs; + } + + var util = { + __proto__: null, + shuffle: shuffle, + clamp: clamp, + nearestLargerEven: nearestLargerEven, + sum: sum, + randUniform: randUniform, + distSquared: distSquared, + assert: assert, + assertShapesMatch: assertShapesMatch, + assertNonNull: assertNonNull, + flatten: flatten, + sizeFromShape: sizeFromShape, + isScalarShape: isScalarShape, + arraysEqual: arraysEqual, + isInt: isInt, + tanh: tanh, + sizeToSquarishShape: sizeToSquarishShape, + createShuffledIndices: createShuffledIndices, + rightPad: rightPad, + repeatedTry: repeatedTry, + inferFromImplicitShape: inferFromImplicitShape, + parseAxisParam: parseAxisParam, + squeezeShape: squeezeShape, + getTypedArrayFromDType: getTypedArrayFromDType, + getArrayFromDType: getArrayFromDType, + checkConversionForErrors: checkConversionForErrors, + isValidDtype: isValidDtype, + hasEncodingLoss: hasEncodingLoss, + isTypedArray: isTypedArray, + bytesPerElement: bytesPerElement, + bytesFromStringArray: bytesFromStringArray, + isString: isString, + isBoolean: isBoolean, + isNumber: isNumber, + inferDtype: inferDtype, + isFunction: isFunction, + nearestDivisor: nearestDivisor, + computeStrides: computeStrides, + toTypedArray: toTypedArray, + toNestedArray: toNestedArray, + makeOnesTypedArray: makeOnesTypedArray, + makeZerosTypedArray: makeZerosTypedArray, + makeZerosNestedTypedArray: makeZerosNestedTypedArray, + now: now, + assertNonNegativeIntegerDimensions: assertNonNegativeIntegerDimensions, + fetch: fetch$1, + encodeString: encodeString, + decodeString: decodeString, + locToIndex: locToIndex, + indexToLoc: indexToLoc + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Profiler = /** @class */ (function () { + function Profiler(backendTimer, logger) { + this.backendTimer = backendTimer; + this.logger = logger; + if (logger == null) { + this.logger = new Logger(); + } + } + Profiler.prototype.profileKernel = function (kernelName, inputs, f) { + var outputs; + var holdResultWrapperFn = function () { + outputs = f(); + }; + var timer = this.backendTimer.time(holdResultWrapperFn); + outputs.map(function (r) { + // Dangling promise here because we don't want to propagate up + // asynchronicity. + r.data().then(function (tensorVals) { + checkComputationForErrors(tensorVals, r.dtype, kernelName); + }); + }); + var kernelProfile = { + kernelName: kernelName, + outputs: outputs, + inputs: inputs, + timeMs: timer.then(function (timing) { return timing.kernelMs; }), + extraInfo: timer.then(function (timing) { return timing.getExtraProfileInfo != null ? + timing.getExtraProfileInfo() : + ''; }) + }; + return kernelProfile; + }; + Profiler.prototype.logKernelProfile = function (kernelProfile) { + var _this = this; + var kernelName = kernelProfile.kernelName, outputs = kernelProfile.outputs, timeMs = kernelProfile.timeMs, inputs = kernelProfile.inputs, extraInfo = kernelProfile.extraInfo; + outputs.forEach(function (result) { + Promise.all([result.data(), timeMs, extraInfo]).then(function (valueContainer) { + _this.logger.logKernelProfile(kernelName, result, valueContainer[0], valueContainer[1], inputs, valueContainer[2]); + }); + }); + }; + return Profiler; + }()); + function checkComputationForErrors(vals, dtype, kernelName) { + if (dtype !== 'float32') { + // Only floating point computations will generate NaN values + return false; + } + for (var i = 0; i < vals.length; i++) { + var num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + // Throwing custom exception so behavior is testable. + console.warn("Found " + num + " in the result of '" + kernelName + "'"); + return true; + } + } + return false; + } + var Logger = /** @class */ (function () { + function Logger() { + } + Logger.prototype.logKernelProfile = function (name, result, vals, timeMs, inputs, extraInfo) { + var time = typeof timeMs === 'number' ? rightPad(timeMs + "ms", 9) : + timeMs['error']; + var paddedName = rightPad(name, 25); + var rank = result.rank; + var size = result.size; + var shape = rightPad(result.shape.toString(), 14); + var inputShapesDescription = ''; + for (var name_1 in inputs) { + var input = inputs[name_1]; + // The input might be a non-tensor (e.g HTMLImageElement), in which case + // we claim the output shape as input shape. + var inputShape = input.shape || result.shape; + var inputRank = inputShape.length; + inputShapesDescription += + name_1 + ": " + inputRank + "D " + (inputRank > 0 ? inputShape : '') + " "; + } + console.log("%c" + paddedName + "\t%c" + time + "\t%c" + rank + "D " + shape + "\t%c" + size + "\t%c" + inputShapesDescription + "\t%c" + extraInfo, 'font-weight:bold', 'color:red', 'color:blue', 'color: orange', 'color: green', 'color: steelblue'); + }; + return Logger; + }()); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes a list of TapeNodes that connect x to y, filtering everything else + * out and preserving the order of the original tape elements. + * + * @param tape The tape elements to filter. + * @param xs The input Tensors. + * @param y The output Tensor. + */ + function getFilteredNodesXToY(tape, xs, y) { + // Forward pass to compute all the nodes and Tensors that are transitively a + // function of x. + var tensorsFromX = {}; + var nodesFromX = {}; + for (var i = 0; i < xs.length; i++) { + tensorsFromX[xs[i].id] = true; + } + for (var i = 0; i < tape.length; i++) { + var node = tape[i]; + var nodeInputs = node.inputs; + for (var inputName in nodeInputs) { + var input = nodeInputs[inputName]; + var anyInputFromX = false; + for (var j = 0; j < xs.length; j++) { + if (tensorsFromX[input.id]) { + node.outputs.forEach(function (output) { return tensorsFromX[output.id] = true; }); + anyInputFromX = true; + nodesFromX[node.id] = true; + break; + } + } + if (anyInputFromX) { + break; + } + } + } + // Backward pass to find all of the nodes and Tensors that lead to y. + var tensorsLeadToY = {}; + tensorsLeadToY[y.id] = true; + var nodesToY = {}; + for (var i = tape.length - 1; i >= 0; i--) { + var node = tape[i]; + var nodeInputs = node.inputs; + // If any of the outputs lead to y, mark all of the inputs as leading to y. + for (var j = 0; j < node.outputs.length; j++) { + if (tensorsLeadToY[node.outputs[j].id]) { + for (var inputName in nodeInputs) { + tensorsLeadToY[nodeInputs[inputName].id] = true; + nodesToY[node.id] = true; + } + break; + } + } + } + // Return the paths that come from x and lead to y. + var filteredTape = []; + for (var i = 0; i < tape.length; i++) { + var node = tape[i]; + if (nodesFromX[node.id] && nodesToY[node.id]) { + // Prune the inputs from the node that aren't a function of x. + var prunedInputs = {}; + for (var inputName in node.inputs) { + var nodeInput = node.inputs[inputName]; + if (tensorsFromX[nodeInput.id]) { + prunedInputs[inputName] = nodeInput; + } + } + // Copy the node and overwrite inputsAndArgs to the pruned version. + var prunedNode = Object.assign({}, node); + prunedNode.inputs = prunedInputs; + prunedNode.outputs = node.outputs; + filteredTape.push(prunedNode); + } + } + return filteredTape; + } + /** + * Backpropagate gradients through the filtered TapeNodes. + * + * @param tensorAccumulatedGradientMap A map of Tensor to its gradient. This map + * is mutated by this method. + * @param filteredTape The filtered TapeNodes to backprop through. + */ + function backpropagateGradients(tensorAccumulatedGradientMap, filteredTape, tidy) { + var _loop_1 = function (i) { + var node = filteredTape[i]; + var dys = []; + node.outputs.forEach(function (o) { + var gradTensor = tensorAccumulatedGradientMap[o.id]; + if (gradTensor != null) { + dys.push(gradTensor); + } + else { + // This particular output is not in the back-propagation subgraph, so it + // does not affect the final output, thus we put null for its dy. + dys.push(null); + } + }); + if (node.gradient == null) { + throw new Error("Cannot compute gradient: gradient function not found " + + ("for " + node.kernelName + ".")); + } + // Backprop dy through this node and accumulate gradients over the inputs. + var inputGradients = node.gradient(dys); + var _loop_2 = function (inputName) { + if (!(inputName in inputGradients)) { + throw new Error("Cannot backprop through input " + inputName + ". " + + ("Available gradients found: " + Object.keys(inputGradients) + ".")); + } + // Call the gradient function. + var dx = tidy(function () { return inputGradients[inputName](); }); + if (dx.dtype !== 'float32') { + throw new Error("Error in gradient for op " + node.kernelName + ". The gradient of input " + + (inputName + " must have 'float32' dtype, but has '" + dx.dtype + "'")); + } + var x = node.inputs[inputName]; + if (!arraysEqual(dx.shape, x.shape)) { + throw new Error("Error in gradient for op " + node.kernelName + ". The gradient of input " + + ("'" + inputName + "' has shape '" + dx.shape + "', which does not match ") + + ("the shape of the input '" + x.shape + "'")); + } + if (tensorAccumulatedGradientMap[x.id] == null) { + tensorAccumulatedGradientMap[x.id] = dx; + } + else { + var curGradient = tensorAccumulatedGradientMap[x.id]; + tensorAccumulatedGradientMap[x.id] = curGradient.add(dx); + curGradient.dispose(); + } + }; + for (var inputName in node.inputs) { + _loop_2(inputName); + } + }; + // Walk the tape backward and keep a map of Tensor to its gradient. + for (var i = filteredTape.length - 1; i >= 0; i--) { + _loop_1(i); + } + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // Maximum number of values before we decide to show ellipsis. + var FORMAT_LIMIT_NUM_VALS = 20; + // Number of first and last values to show when displaying a, b,...,y, z. + var FORMAT_NUM_FIRST_LAST_VALS = 3; + // Number of significant digits to show. + var FORMAT_NUM_SIG_DIGITS = 7; + function tensorToString(vals, shape, dtype, verbose) { + var strides = computeStrides(shape); + var padPerCol = computeMaxSizePerColumn(vals, shape, dtype, strides); + var rank = shape.length; + var valsLines = subTensorToString(vals, shape, dtype, strides, padPerCol); + var lines = ['Tensor']; + if (verbose) { + lines.push(" dtype: " + dtype); + lines.push(" rank: " + rank); + lines.push(" shape: [" + shape + "]"); + lines.push(" values:"); + } + lines.push(valsLines.map(function (l) { return ' ' + l; }).join('\n')); + return lines.join('\n'); + } + function computeMaxSizePerColumn(vals, shape, dtype, strides) { + var n = sizeFromShape(shape); + var numCols = strides[strides.length - 1]; + var padPerCol = new Array(numCols).fill(0); + var rank = shape.length; + var valuesOrTuples = dtype === 'complex64' ? createComplexTuples(vals) : vals; + if (rank > 1) { + for (var row = 0; row < n / numCols; row++) { + var offset = row * numCols; + for (var j = 0; j < numCols; j++) { + padPerCol[j] = Math.max(padPerCol[j], valToString(valuesOrTuples[offset + j], 0, dtype).length); + } + } + } + return padPerCol; + } + function valToString(val, pad, dtype) { + var valStr; + if (Array.isArray(val)) { + valStr = parseFloat(val[0].toFixed(FORMAT_NUM_SIG_DIGITS)) + " + " + + (parseFloat(val[1].toFixed(FORMAT_NUM_SIG_DIGITS)) + "j"); + } + else if (isString(val)) { + valStr = "'" + val + "'"; + } + else if (dtype === 'bool') { + valStr = boolNumToString(val); + } + else { + valStr = parseFloat(val.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(); + } + return rightPad(valStr, pad); + } + function boolNumToString(v) { + return v === 0 ? 'false' : 'true'; + } + function subTensorToString(vals, shape, dtype, strides, padPerCol, isLast) { + if (isLast === void 0) { isLast = true; } + var storagePerElement = dtype === 'complex64' ? 2 : 1; + var size = shape[0]; + var rank = shape.length; + if (rank === 0) { + if (dtype === 'complex64') { + var complexTuple = createComplexTuples(vals); + return [valToString(complexTuple[0], 0, dtype)]; + } + if (dtype === 'bool') { + return [boolNumToString(vals[0])]; + } + return [vals[0].toString()]; + } + if (rank === 1) { + if (size > FORMAT_LIMIT_NUM_VALS) { + var firstValsSize = FORMAT_NUM_FIRST_LAST_VALS * storagePerElement; + var firstVals = Array.from(vals.slice(0, firstValsSize)); + var lastVals = Array.from(vals.slice((size - FORMAT_NUM_FIRST_LAST_VALS) * storagePerElement, size * storagePerElement)); + if (dtype === 'complex64') { + firstVals = createComplexTuples(firstVals); + lastVals = createComplexTuples(lastVals); + } + return [ + '[' + + firstVals.map(function (x, i) { return valToString(x, padPerCol[i], dtype); }) + .join(', ') + + ', ..., ' + + lastVals + .map(function (x, i) { return valToString(x, padPerCol[size - FORMAT_NUM_FIRST_LAST_VALS + i], dtype); }) + .join(', ') + + ']' + ]; + } + var displayVals = dtype === 'complex64' ? createComplexTuples(vals) : + Array.from(vals); + return [ + '[' + + displayVals.map(function (x, i) { return valToString(x, padPerCol[i], dtype); }) + .join(', ') + + ']' + ]; + } + // The array is rank 2 or more. + var subshape = shape.slice(1); + var substrides = strides.slice(1); + var stride = strides[0] * storagePerElement; + var lines = []; + if (size > FORMAT_LIMIT_NUM_VALS) { + for (var i = 0; i < FORMAT_NUM_FIRST_LAST_VALS; i++) { + var start = i * stride; + var end = start + stride; + lines.push.apply(lines, subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, false /* isLast */)); + } + lines.push('...'); + for (var i = size - FORMAT_NUM_FIRST_LAST_VALS; i < size; i++) { + var start = i * stride; + var end = start + stride; + lines.push.apply(lines, subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1 /* isLast */)); + } + } + else { + for (var i = 0; i < size; i++) { + var start = i * stride; + var end = start + stride; + lines.push.apply(lines, subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1 /* isLast */)); + } + } + var sep = rank === 2 ? ',' : ''; + lines[0] = '[' + lines[0] + sep; + for (var i = 1; i < lines.length - 1; i++) { + lines[i] = ' ' + lines[i] + sep; + } + var newLineSep = ',\n'; + for (var i = 2; i < rank; i++) { + newLineSep += '\n'; + } + lines[lines.length - 1] = + ' ' + lines[lines.length - 1] + ']' + (isLast ? '' : newLineSep); + return lines; + } + function createComplexTuples(vals) { + var complexTuples = []; + for (var i = 0; i < vals.length; i += 2) { + complexTuples.push([vals[i], vals[i + 1]]); + } + return complexTuples; + } + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * A mutable object, similar to `tf.Tensor`, that allows users to set values + * at locations before converting to an immutable `tf.Tensor`. + * + * See `tf.buffer` for creating a tensor buffer. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + var TensorBuffer = /** @class */ (function () { + function TensorBuffer(shape, dtype, values) { + var _this = this; + this.dtype = dtype; + this.shape = shape.slice(); + this.size = sizeFromShape(shape); + if (values != null) { + var n_1 = values.length; + assert(n_1 === this.size, function () { return "Length of values '" + n_1 + "' does not match the size " + + ("inferred by the shape '" + _this.size + "'."); }); + } + if (dtype === 'complex64') { + throw new Error("complex64 dtype TensorBuffers are not supported. Please create " + + "a TensorBuffer for the real and imaginary parts separately and " + + "call tf.complex(real, imag)."); + } + this.values = values || getArrayFromDType(dtype, this.size); + this.strides = computeStrides(shape); + } + /** + * Sets a value in the buffer at a given location. + * + * @param value The value to set. + * @param locs The location indices. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + TensorBuffer.prototype.set = function (value) { + var _this = this; + var locs = []; + for (var _i = 1; _i < arguments.length; _i++) { + locs[_i - 1] = arguments[_i]; + } + if (locs.length === 0) { + locs = [0]; + } + assert(locs.length === this.rank, function () { return "The number of provided coordinates (" + locs.length + ") must " + + ("match the rank (" + _this.rank + ")"); }); + var index = this.locToIndex(locs); + this.values[index] = value; + }; + /** + * Returns the value in the buffer at the provided location. + * + * @param locs The location indices. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + TensorBuffer.prototype.get = function () { + var locs = []; + for (var _i = 0; _i < arguments.length; _i++) { + locs[_i] = arguments[_i]; + } + if (locs.length === 0) { + locs = [0]; + } + var i = 0; + for (var _a = 0, locs_1 = locs; _a < locs_1.length; _a++) { + var loc = locs_1[_a]; + if (loc < 0 || loc >= this.shape[i]) { + var msg = "Requested out of range element at " + locs + ". " + + (" Buffer shape=" + this.shape); + throw new Error(msg); + } + i++; + } + var index = locs[locs.length - 1]; + for (var i_1 = 0; i_1 < locs.length - 1; ++i_1) { + index += this.strides[i_1] * locs[i_1]; + } + return this.values[index]; + }; + TensorBuffer.prototype.locToIndex = function (locs) { + if (this.rank === 0) { + return 0; + } + else if (this.rank === 1) { + return locs[0]; + } + var index = locs[locs.length - 1]; + for (var i = 0; i < locs.length - 1; ++i) { + index += this.strides[i] * locs[i]; + } + return index; + }; + TensorBuffer.prototype.indexToLoc = function (index) { + if (this.rank === 0) { + return []; + } + else if (this.rank === 1) { + return [index]; + } + var locs = new Array(this.shape.length); + for (var i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / this.strides[i]); + index -= locs[i] * this.strides[i]; + } + locs[locs.length - 1] = index; + return locs; + }; + Object.defineProperty(TensorBuffer.prototype, "rank", { + get: function () { + return this.shape.length; + }, + enumerable: true, + configurable: true + }); + /** + * Creates an immutable `tf.Tensor` object from the buffer. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + TensorBuffer.prototype.toTensor = function () { + return trackerFn().makeTensor(this.values, this.shape, this.dtype); + }; + return TensorBuffer; + }()); + // For tracking tensor creation and disposal. + var trackerFn = null; + // Used by chaining methods to call into ops. + var opHandler = null; + /** + * An external consumer can register itself as the tensor tracker. This way + * the Tensor class can notify the tracker for every tensor created and + * disposed. + */ + function setTensorTracker(fn) { + trackerFn = fn; + } + /** + * An external consumer can register itself as the op handler. This way the + * Tensor class can have chaining methods that call into ops via the op + * handler. + */ + function setOpHandler(handler) { + opHandler = handler; + } + /** + * A `tf.Tensor` object represents an immutable, multidimensional array of + * numbers that has a shape and a data type. + * + * See `tf.tensor` for details on how to create a `tf.Tensor`. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + var Tensor = /** @class */ (function () { + function Tensor(shape, dtype, dataId, id) { + /** Whether this tensor has been globally kept. */ + this.kept = false; + this.isDisposedInternal = false; + this.shape = shape.slice(); + this.dtype = dtype || 'float32'; + this.size = sizeFromShape(shape); + this.strides = computeStrides(shape); + this.dataId = dataId; + this.id = id; + this.rankType = (this.rank < 5 ? this.rank.toString() : 'higher'); + } + Object.defineProperty(Tensor.prototype, "rank", { + get: function () { + return this.shape.length; + }, + enumerable: true, + configurable: true + }); + /** + * Returns a promise of `tf.TensorBuffer` that holds the underlying data. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.buffer = function () { + return __awaiter(this, void 0, void 0, function () { + var vals; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.data()]; + case 1: + vals = _a.sent(); + return [2 /*return*/, opHandler.buffer(this.shape, this.dtype, vals)]; + } + }); + }); + }; + /** Returns a `tf.TensorBuffer` that holds the underlying data. */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.bufferSync = function () { + return opHandler.buffer(this.shape, this.dtype, this.dataSync()); + }; + /** + * Returns the tensor data as a nested array. The transfer of data is done + * asynchronously. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.array = function () { + return __awaiter(this, void 0, void 0, function () { + var vals; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.data()]; + case 1: + vals = _a.sent(); + return [2 /*return*/, toNestedArray(this.shape, vals)]; + } + }); + }); + }; + /** + * Returns the tensor data as a nested array. The transfer of data is done + * synchronously. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.arraySync = function () { + return toNestedArray(this.shape, this.dataSync()); + }; + /** + * Asynchronously downloads the values from the `tf.Tensor`. Returns a + * promise of `TypedArray` that resolves when the computation has finished. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.data = function () { + return __awaiter(this, void 0, void 0, function () { + var data, bytes; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.throwIfDisposed(); + data = trackerFn().read(this.dataId); + if (!(this.dtype === 'string')) return [3 /*break*/, 2]; + return [4 /*yield*/, data]; + case 1: + bytes = _a.sent(); + try { + return [2 /*return*/, bytes.map(function (b) { return decodeString(b); })]; + } + catch (_b) { + throw new Error('Failed to decode the string bytes into utf-8. ' + + 'To get the original bytes, call tensor.bytes().'); + } + _a.label = 2; + case 2: return [2 /*return*/, data]; + } + }); + }); + }; + /** + * Synchronously downloads the values from the `tf.Tensor`. This blocks the + * UI thread until the values are ready, which can cause performance issues. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.dataSync = function () { + this.throwIfDisposed(); + var data = trackerFn().readSync(this.dataId); + if (this.dtype === 'string') { + try { + return data.map(function (b) { return decodeString(b); }); + } + catch (_a) { + throw new Error('Failed to decode the string bytes into utf-8. ' + + 'To get the original bytes, call tensor.bytes().'); + } + } + return data; + }; + /** Returns the underlying bytes of the tensor's data. */ + Tensor.prototype.bytes = function () { + return __awaiter(this, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.throwIfDisposed(); + return [4 /*yield*/, trackerFn().read(this.dataId)]; + case 1: + data = _a.sent(); + if (this.dtype === 'string') { + return [2 /*return*/, data]; + } + else { + return [2 /*return*/, new Uint8Array(data.buffer)]; + } + } + }); + }); + }; + /** + * Disposes `tf.Tensor` from memory. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.dispose = function () { + if (this.isDisposed) { + return; + } + trackerFn().disposeTensor(this); + this.isDisposedInternal = true; + }; + Object.defineProperty(Tensor.prototype, "isDisposed", { + get: function () { + return this.isDisposedInternal; + }, + enumerable: true, + configurable: true + }); + Tensor.prototype.throwIfDisposed = function () { + if (this.isDisposed) { + throw new Error("Tensor is disposed."); + } + }; + /** + * Prints the `tf.Tensor`. See `tf.print` for details. + * + * @param verbose Whether to print verbose information about the tensor, + * including dtype and size. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.print = function (verbose) { + if (verbose === void 0) { verbose = false; } + return opHandler.print(this, verbose); + }; + /** Returns a copy of the tensor. See `tf.clone` for details. */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.clone = function () { + this.throwIfDisposed(); + return opHandler.clone(this); + }; + /** + * Returns a human-readable description of the tensor. Useful for logging. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Tensor.prototype.toString = function (verbose) { + if (verbose === void 0) { verbose = false; } + var vals = this.dataSync(); + return tensorToString(vals, this.shape, this.dtype, verbose); + }; + Tensor.prototype.cast = function (dtype) { + this.throwIfDisposed(); + return opHandler.cast(this, dtype); + }; + Tensor.prototype.variable = function (trainable, name, dtype) { + if (trainable === void 0) { trainable = true; } + this.throwIfDisposed(); + return trackerFn().makeVariable(this, trainable, name, dtype); + }; + return Tensor; + }()); + Object.defineProperty(Tensor, Symbol.hasInstance, { + value: function (instance) { + return !!instance && instance.dataId != null && instance.shape != null && + instance.dtype != null; + } + }); + /** + * A mutable `tf.Tensor`, useful for persisting state, e.g. for training. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + var Variable = /** @class */ (function (_super) { + __extends(Variable, _super); + function Variable(initialValue, trainable, name, tensorId) { + var _this = _super.call(this, initialValue.shape, initialValue.dtype, initialValue.dataId, tensorId) || this; + _this.trainable = trainable; + _this.name = name; + return _this; + } + /** + * Assign a new `tf.Tensor` to this variable. The new `tf.Tensor` must have + * the same shape and dtype as the old `tf.Tensor`. + * + * @param newValue New tensor to be assigned to this variable. + */ + /** @doc {heading: 'Tensors', subheading: 'Classes'} */ + Variable.prototype.assign = function (newValue) { + if (newValue.dtype !== this.dtype) { + throw new Error("dtype of the new value (" + newValue.dtype + ") and " + + ("previous value (" + this.dtype + ") must match")); + } + if (!arraysEqual(newValue.shape, this.shape)) { + throw new Error("shape of the new value (" + newValue.shape + ") and " + + ("previous value (" + this.shape + ") must match")); + } + trackerFn().disposeTensor(this); + this.dataId = newValue.dataId; + trackerFn().incRef(this, null /* backend */); + }; + Variable.prototype.dispose = function () { + trackerFn().disposeVariable(this); + this.isDisposedInternal = true; + }; + return Variable; + }(Tensor)); + Object.defineProperty(Variable, Symbol.hasInstance, { + value: function (instance) { + return instance instanceof Tensor && instance.assign != null && + instance.assign instanceof Function; + } + }); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + (function (Rank) { + Rank["R0"] = "R0"; + Rank["R1"] = "R1"; + Rank["R2"] = "R2"; + Rank["R3"] = "R3"; + Rank["R4"] = "R4"; + Rank["R5"] = "R5"; + Rank["R6"] = "R6"; + })(exports.Rank || (exports.Rank = {})); + // Looks for upcasting types. Used, for example, in operations with mixed dtype + // inputs. + var UpcastInt32AndMap; + (function (UpcastInt32AndMap) { + UpcastInt32AndMap["float32"] = "float32"; + UpcastInt32AndMap["int32"] = "int32"; + UpcastInt32AndMap["bool"] = "int32"; + UpcastInt32AndMap["complex64"] = "complex64"; + })(UpcastInt32AndMap || (UpcastInt32AndMap = {})); + var UpcastBoolAndMap; + (function (UpcastBoolAndMap) { + UpcastBoolAndMap["float32"] = "float32"; + UpcastBoolAndMap["int32"] = "int32"; + UpcastBoolAndMap["bool"] = "bool"; + UpcastBoolAndMap["complex64"] = "complex64"; + })(UpcastBoolAndMap || (UpcastBoolAndMap = {})); + var UpcastFloat32AndMap; + (function (UpcastFloat32AndMap) { + UpcastFloat32AndMap["float32"] = "float32"; + UpcastFloat32AndMap["int32"] = "float32"; + UpcastFloat32AndMap["bool"] = "float32"; + UpcastFloat32AndMap["complex64"] = "complex64"; + })(UpcastFloat32AndMap || (UpcastFloat32AndMap = {})); + var UpcastComplex64AndMap; + (function (UpcastComplex64AndMap) { + UpcastComplex64AndMap["float32"] = "complex64"; + UpcastComplex64AndMap["int32"] = "complex64"; + UpcastComplex64AndMap["bool"] = "complex64"; + UpcastComplex64AndMap["complex64"] = "complex64"; + })(UpcastComplex64AndMap || (UpcastComplex64AndMap = {})); + var upcastTypeMap = { + 'float32': UpcastFloat32AndMap, + 'int32': UpcastInt32AndMap, + 'bool': UpcastBoolAndMap, + 'complex64': UpcastComplex64AndMap + }; + function upcastType(typeA, typeB) { + if (typeA === 'string' || typeB === 'string') { + if (typeA === 'string' && typeB === 'string') { + return 'string'; + } + throw new Error("Can not upcast " + typeA + " with " + typeB); + } + return upcastTypeMap[typeA][typeB]; + } + /** Returns the output type after summation. */ + function sumOutType(type) { + return upcastType(type, 'int32'); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function makeTypesMatch(a, b) { + if (a.dtype === b.dtype) { + return [a, b]; + } + var dtype = upcastType(a.dtype, b.dtype); + return [a.cast(dtype), b.cast(dtype)]; + } + function assertTypesMatch(a, b) { + assert(a.dtype === b.dtype, function () { return "The dtypes of the first(" + a.dtype + ") and" + + (" second(" + b.dtype + ") input must match"); }); + } + function isTensorInList(tensor, tensorList) { + return tensorList.some(function (x) { return x.id === tensor.id; }); + } + /** + * Extracts any `Tensor`s found within the provided object. + * + * @param container an object that may be a `Tensor` or may directly contain + * `Tensor`s, such as a `Tensor[]` or `{key: Tensor, ...}`. In general it + * is safe to pass any object here, except that `Promise`s are not + * supported. + * @returns An array of `Tensors` found within the passed object. If the + * argument is simply a `Tensor', a list containing that `Tensor` is + * returned. If the object is not a `Tensor` or does not + * contain `Tensors`, an empty list is returned. + */ + function getTensorsInContainer(result) { + var list = []; + var seen = new Set(); + walkTensorContainer(result, list, seen); + return list; + } + function walkTensorContainer(container, list, seen) { + if (container == null) { + return; + } + if (container instanceof Tensor) { + list.push(container); + return; + } + if (!isIterable(container)) { + return; + } + // Iteration over keys works also for arrays. + var iterable = container; + for (var k in iterable) { + var val = iterable[k]; + if (!seen.has(val)) { + seen.add(val); + walkTensorContainer(val, list, seen); + } + } + } + // tslint:disable-next-line:no-any + function isIterable(obj) { + return Array.isArray(obj) || typeof obj === 'object'; + } + + var tensor_util = { + __proto__: null, + makeTypesMatch: makeTypesMatch, + assertTypesMatch: assertTypesMatch, + isTensorInList: isTensorInList, + getTensorsInContainer: getTensorsInContainer + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var EngineState = /** @class */ (function () { + function EngineState() { + // Public since optimizers will use it. + this.registeredVariables = {}; + this.nextTapeNodeId = 0; + this.numBytes = 0; + this.numTensors = 0; + this.numStringTensors = 0; + this.numDataBuffers = 0; + // Number of nested tf.grad() statements when computing higher-order + // gradients. E.g. `1` for first-order gradients and `2` for second-order + // gradients. Used to track if the tape should be removed after a backprop. + this.gradientDepth = 0; + // Number of nested kernel calls. When kernel depth is greater than 1, we turn + // off the tape. + this.kernelDepth = 0; + this.scopeStack = []; + /** + * Keeps track of the number of data moves during a kernel execution. We + * maintain a stack since kernels can call other kernels, recursively. + */ + this.numDataMovesStack = []; + this.nextScopeId = 0; + this.tensorInfo = new WeakMap(); + this.profiling = false; + this.activeProfile = { newBytes: 0, newTensors: 0, peakBytes: 0, kernels: [], result: null }; + } + EngineState.prototype.dispose = function () { + for (var variableName in this.registeredVariables) { + this.registeredVariables[variableName].dispose(); + } + }; + return EngineState; + }()); + var Engine = /** @class */ (function () { + function Engine(ENV) { + this.ENV = ENV; + this.registry = {}; + this.registryFactory = {}; + this.pendingBackendInitId = 0; + this.state = new EngineState(); + } + Engine.prototype.ready = function () { + return __awaiter(this, void 0, void 0, function () { + var sortedBackends, i, backendName, success; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (this.pendingBackendInit != null) { + return [2 /*return*/, this.pendingBackendInit.then(function () { })]; + } + if (this.backendInstance != null) { + return [2 /*return*/]; + } + sortedBackends = this.getSortedBackends(); + i = 0; + _a.label = 1; + case 1: + if (!(i < sortedBackends.length)) return [3 /*break*/, 5]; + backendName = sortedBackends[i]; + return [4 /*yield*/, this.initializeBackend(backendName).success]; + case 2: + success = _a.sent(); + if (!success) return [3 /*break*/, 4]; + return [4 /*yield*/, this.setBackend(backendName)]; + case 3: + _a.sent(); + return [2 /*return*/]; + case 4: + i++; + return [3 /*break*/, 1]; + case 5: throw new Error("Could not initialize any backends, all backend initializations " + + "failed."); + } + }); + }); + }; + Object.defineProperty(Engine.prototype, "backend", { + get: function () { + if (this.pendingBackendInit != null) { + throw new Error("Backend '" + this.backendName + "' has not yet been initialized. Make " + + "sure to await tf.ready() or await tf.setBackend() before calling " + + "other methods"); + } + if (this.backendInstance == null) { + var _a = this.initializeBackendsAndReturnBest(), name_1 = _a.name, asyncInit = _a.asyncInit; + if (asyncInit) { + throw new Error("The highest priority backend '" + name_1 + "' has not yet been " + + "initialized. Make sure to await tf.ready() or " + + "await tf.setBackend() before calling other methods"); + } + this.setBackend(name_1); + } + return this.backendInstance; + }, + enumerable: true, + configurable: true + }); + Engine.prototype.backendNames = function () { + return Object.keys(this.registryFactory); + }; + Engine.prototype.findBackend = function (backendName) { + if (!(backendName in this.registry)) { + // If the backend hasn't been initialized but we have a registry entry for + // it, initialize it and return it. + if (backendName in this.registryFactory) { + var asyncInit = this.initializeBackend(backendName).asyncInit; + if (asyncInit) { + // Backend is not ready yet. + return null; + } + } + else { + return null; + } + } + return this.registry[backendName]; + }; + Engine.prototype.findBackendFactory = function (backendName) { + if (!(backendName in this.registryFactory)) { + return null; + } + return this.registryFactory[backendName].factory; + }; + Engine.prototype.registerBackend = function (backendName, factory, priority) { + if (priority === void 0) { priority = 1; } + if (backendName in this.registryFactory) { + console.warn(backendName + " backend was already registered. " + + "Reusing existing backend factory."); + return false; + } + this.registryFactory[backendName] = { factory: factory, priority: priority }; + return true; + }; + Engine.prototype.setBackend = function (backendName) { + return __awaiter(this, void 0, void 0, function () { + var _a, success, asyncInit, result, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (this.registryFactory[backendName] == null) { + throw new Error("Backend name '" + backendName + "' not found in registry"); + } + this.backendName = backendName; + if (!(this.registry[backendName] == null)) return [3 /*break*/, 4]; + this.backendInstance = null; + _a = this.initializeBackend(backendName), success = _a.success, asyncInit = _a.asyncInit; + if (!asyncInit) return [3 /*break*/, 2]; + return [4 /*yield*/, success]; + case 1: + _b = _c.sent(); + return [3 /*break*/, 3]; + case 2: + _b = success; + _c.label = 3; + case 3: + result = _b; + if (!result) { + return [2 /*return*/, false]; + } + _c.label = 4; + case 4: + this.backendInstance = this.registry[backendName]; + this.setupRegisteredKernels(); + // Reset the profiler. + this.profiler = new Profiler(this.backendInstance); + return [2 /*return*/, true]; + } + }); + }); + }; + Engine.prototype.setupRegisteredKernels = function () { + var _this = this; + var kernels = getKernelsForBackend(this.backendName); + kernels.forEach(function (kernel) { + if (kernel.setupFunc != null) { + kernel.setupFunc(_this.backendInstance); + } + }); + }; + Engine.prototype.disposeRegisteredKernels = function (backendName) { + var _this = this; + var kernels = getKernelsForBackend(backendName); + kernels.forEach(function (kernel) { + if (kernel.disposeFunc != null) { + kernel.disposeFunc(_this.registry[backendName]); + } + }); + }; + /** + * Initializes a backend by looking up the backend name in the factory + * registry and calling the factory method. Returns a boolean representing + * whether the initialization of the backend suceeded. Throws an error if + * there is no backend in the factory registry. + */ + Engine.prototype.initializeBackend = function (backendName) { + var _this = this; + var registryFactoryEntry = this.registryFactory[backendName]; + if (registryFactoryEntry == null) { + throw new Error("Cannot initialize backend " + backendName + ", no registration found."); + } + try { + var backend = registryFactoryEntry.factory(); + // Test if the factory returns a promise. + if (Promise.resolve(backend) === backend) { + var promiseId_1 = ++this.pendingBackendInitId; + var success = backend + .then(function (backendInstance) { + // Outdated promise. Another backend was set in the meantime. + if (promiseId_1 < _this.pendingBackendInitId) { + return false; + } + _this.registry[backendName] = backendInstance; + _this.pendingBackendInit = null; + return true; + }) + .catch(function (err) { + // Outdated promise. Another backend was set in the meantime. + if (promiseId_1 < _this.pendingBackendInitId) { + return false; + } + _this.pendingBackendInit = null; + console.warn("Initialization of backend " + backendName + " failed"); + console.warn(err.stack || err.message); + return false; + }); + this.pendingBackendInit = success; + return { success: success, asyncInit: true }; + } + else { + this.registry[backendName] = backend; + return { success: true, asyncInit: false }; + } + } + catch (err) { + console.warn("Initialization of backend " + backendName + " failed"); + console.warn(err.stack || err.message); + return { success: false, asyncInit: false }; + } + }; + Engine.prototype.removeBackend = function (backendName) { + if (!(backendName in this.registryFactory)) { + throw new Error(backendName + " backend not found in registry"); + } + if (this.backendName === backendName && this.pendingBackendInit != null) { + // There is a pending promise of the backend we want to remove. Make it + // obsolete. + this.pendingBackendInitId++; + } + if (backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + delete this.registryFactory[backendName]; + // Unset the backend if it is active. + if (this.backendName === backendName) { + this.pendingBackendInit = null; + this.backendName = null; + this.backendInstance = null; + } + }; + Engine.prototype.getSortedBackends = function () { + var _this = this; + if (Object.keys(this.registryFactory).length === 0) { + throw new Error('No backend found in registry.'); + } + return Object.keys(this.registryFactory).sort(function (a, b) { + // Highest priority comes first. + return _this.registryFactory[b].priority - + _this.registryFactory[a].priority; + }); + }; + Engine.prototype.initializeBackendsAndReturnBest = function () { + var sortedBackends = this.getSortedBackends(); + for (var i = 0; i < sortedBackends.length; i++) { + var backendName = sortedBackends[i]; + var _a = this.initializeBackend(backendName), success = _a.success, asyncInit = _a.asyncInit; + if (asyncInit || success) { + return { name: backendName, asyncInit: asyncInit }; + } + } + throw new Error("Could not initialize any backends, all backend initializations " + + "failed."); + }; + Engine.prototype.moveData = function (backend, dataId) { + var info = this.state.tensorInfo.get(dataId); + var srcBackend = info.backend; + var values = this.readSync(dataId); + // Delete the tensor from the old backend and move it to the new + // backend. + srcBackend.disposeData(dataId); + info.backend = backend; + backend.move(dataId, values, info.shape, info.dtype); + if (this.shouldCheckForMemLeaks()) { + // Track the number of moves during a kernel execution to correctly + // detect memory leaks. + this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++; + } + }; + Engine.prototype.tidy = function (nameOrFn, fn) { + var _this = this; + var name = null; + if (fn == null) { + // Called with only 1 argument. + if (typeof nameOrFn !== 'function') { + throw new Error('Please provide a function to tidy()'); + } + fn = nameOrFn; + } + else { + // Called with 2 arguments. + if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) { + throw new Error('When calling with two arguments, the first argument ' + + 'to tidy() must be a string'); + } + if (typeof fn !== 'function') { + throw new Error('When calling with two arguments, the 2nd argument ' + + 'to tidy() must be a function'); + } + name = nameOrFn; + // TODO(nsthorat,smilkov): Do operation logging and performance + // profiling. + } + var result; + return this.scopedRun(function () { return _this.startScope(name); }, function () { return _this.endScope(result); }, function () { + result = fn(); + if (result instanceof Promise) { + console.error('Cannot return a Promise inside of tidy.'); + } + return result; + }); + }; + Engine.prototype.scopedRun = function (start, end, f) { + start(); + try { + var res = f(); + end(); + return res; + } + catch (ex) { + end(); + throw ex; + } + }; + Engine.prototype.nextTensorId = function () { + return Engine.nextTensorId++; + }; + Engine.prototype.nextVariableId = function () { + return Engine.nextVariableId++; + }; + /** + * This method is called instead of the public-facing tensor.clone() when + * saving a tensor for backwards pass. It makes sure to add the clone + * operation to the tape regardless of being called inside a kernel + * execution. + * + * This method will go away once all kernels are modularized since we won't + * need to turn off the tape inside runKernel(). + */ + Engine.prototype.clone = function (x) { + var y = this.makeTensorFromDataId(x.dataId, x.shape, x.dtype); + var inputs = { x: x }; + var grad = function (dy) { return ({ x: function () { return dy.toFloat(); } }); }; + var saved = []; + this.addTapeNode(this.state.activeScope.name, inputs, [y], grad, saved, {}); + return y; + }; + /** + * Execute a kernel with the given name and return the output tensor. + * + * @param kernelName The name of the kernel to execute. + * @param inputs A map of input names to tensors. + * @param attrs A map of attribute names to their values. An attribute is a + * primitive (non-tensor) input to the kernel. + * @param inputsToSave A list of tensors, inputs to save for the backprop + * computation. + * @param outputsToSave A list of booleans, specifying which output to save + * for the backprop computation. These are booleans since the output + * tensors are not visible to the user. + */ + Engine.prototype.runKernel = function (kernelName, inputs, attrs, inputsToSave, outputsToSave) { + var forwardFunc = null; + var backwardsFunc = null; + // Call runKernel as a stop-gap until we modularize all kernels. + // Once we modularize all kernels, we will remove the existing + // `runKernelFunc`. + return this.runKernelFunc(forwardFunc, inputs, backwardsFunc, kernelName, attrs, inputsToSave, outputsToSave); + }; + Engine.prototype.shouldCheckForMemLeaks = function () { + return this.ENV.getBool('IS_TEST'); + }; + Engine.prototype.checkKernelForMemLeak = function (kernelName, numDataIdsBefore, outInfos) { + var numDataIdsAfter = this.backend.numDataIds(); + // Count the number of data ids associated with the result of the kernel. + var numOutputDataIds = 0; + outInfos.forEach(function (info) { + // Complex numbers allocate 3 data ids, one for 'real', one for + // 'imaginary', and one for the container that holds the former two. + numOutputDataIds += (info.dtype === 'complex64' ? 3 : 1); + }); + // Account for the number of moves during kernel execution. A "data move" + // can happen in the middle of a kernel execution, placing a new (key,value) + // pair in the data storage. Since data moves have net zero effect (we + // always remove the data from the old backend), we have to cancel them out + // when detecting memory leaks. + var numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]; + var dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves; + if (dataIdsLeaked > 0) { + throw new Error("Backend '" + this.backendName + "' has an internal memory leak " + + ("(" + dataIdsLeaked + " data ids) after running '" + kernelName + "'")); + } + }; + /** + * @deprecated Use `runKernel` for newly added kernels. Keep using this method + * only for kernels that are not yet fully modularized. + */ + Engine.prototype.runKernelFunc = function (forwardFunc, inputs, backwardsFunc, kernelName, attrs, inputsToSave, outputsToSave) { + var _this = this; + var outputs; + var saved = []; + var isTapeOn = this.isTapeOn(); + if (kernelName == null) { + kernelName = + this.state.activeScope != null ? this.state.activeScope.name : ''; + } + var startingBytecount = this.state.numBytes; + var startingNumTensors = this.state.numTensors; + if (this.shouldCheckForMemLeaks()) { + this.state.numDataMovesStack.push(0); + } + var kernelFunc; + var kernel = getKernel(kernelName, this.backendName); + var out; + if (kernel != null) { + kernelFunc = function () { + var numDataIdsBefore = _this.backend.numDataIds(); + out = kernel.kernelFunc({ inputs: inputs, attrs: attrs, backend: _this.backend }); + var outInfos = Array.isArray(out) ? out : [out]; + if (_this.shouldCheckForMemLeaks()) { + _this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos); + } + var outTensors = outInfos.map(function (_a) { + var dataId = _a.dataId, shape = _a.shape, dtype = _a.dtype; + return _this.makeTensorFromDataId(dataId, shape, dtype); + }); + // Save the inputs and outputs. + // Do not save unless we are recording to the tape. Otherwise it would + // cause a mem leak since we would never run backprop, which disposes + // the kept tensors. + if (isTapeOn) { + var tensorsToSave = _this.getTensorsForGradient(kernelName, inputs, outTensors); + if (tensorsToSave == null) { + // Fallback for ops that call runKernelFunc and pass in + // inputsToSave and outputsToSave. Currently this is the set of ops + // with kernel support in the WASM backend. Once those ops and + // respective gradients are modularised we can remove this path. + if (outputsToSave == null) { + outputsToSave = []; + } + var outsToSave = outTensors.filter(function (_, i) { return outputsToSave[i]; }); + tensorsToSave = (inputsToSave || []).slice().concat(outsToSave); + } + saved = _this.saveTensorsForBackwardMode(tensorsToSave); + } + return outTensors; + }; + } + else { + var saveFunc_1 = function (tensors) { + // Do not save unless we are recording to the tape. Otherwise it would + // cause a mem leak since we would never run backprop, which disposes + // the kept tensors. + if (!isTapeOn) { + return; + } + saved = tensors.map(function (tensor) { return _this.keep(_this.clone(tensor)); }); + }; + kernelFunc = function () { + var numDataIdsBefore = _this.backend.numDataIds(); + out = _this.tidy(function () { return forwardFunc(_this.backend, saveFunc_1); }); + var outs = (Array.isArray(out) ? out : [out]); + if (_this.shouldCheckForMemLeaks()) { + _this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outs); + } + return outs; + }; + } + // Stop recording to a tape when running a kernel. + this.scopedRun(function () { return _this.state.kernelDepth++; }, function () { return _this.state.kernelDepth--; }, function () { + if (!_this.ENV.getBool('DEBUG')) { + outputs = kernelFunc(); + } + else { + var kernelProfile = void 0; + kernelProfile = _this.profiler.profileKernel(kernelName, inputs, function () { return kernelFunc(); }); + _this.profiler.logKernelProfile(kernelProfile); + outputs = kernelProfile.outputs; + } + }); + if (isTapeOn) { + this.addTapeNode(kernelName, inputs, outputs, backwardsFunc, saved, attrs); + } + if (this.state.profiling) { + this.state.activeProfile.kernels.push({ + name: kernelName, + bytesAdded: this.state.numBytes - startingBytecount, + totalBytesSnapshot: this.state.numBytes, + tensorsAdded: this.state.numTensors - startingNumTensors, + totalTensorsSnapshot: this.state.numTensors, + inputShapes: Object.keys(inputs).map(function (key) { return inputs[key] != null ? inputs[key].shape : null; }), + outputShapes: outputs.map(function (item) { return item.shape; }) + }); + } + return (Array.isArray(out) ? outputs : outputs[0]); + }; + /** + * Saves tensors used in forward mode for use in backward mode. + * + * @param tensors the list of tensors to save. + */ + Engine.prototype.saveTensorsForBackwardMode = function (tensors) { + var _this = this; + var saved = tensors.map(function (tensor) { return _this.keep(_this.clone(tensor)); }); + return saved; + }; + /** + * Returns a list of tensors to save for a given gradient calculation. + * + * Returns undefined if their is no registered gradient for this kernel in the + * gradient registry. + * + * @param kernelName name of kernel to look up gradient for. + * @param inputs a map of input tensors. + * @param outputs an array of output tensors from forward mode of kernel. + */ + Engine.prototype.getTensorsForGradient = function (kernelName, inputs, outputs) { + var gradConfig = getGradient(kernelName); + if (gradConfig != null) { + var inputsToSave = gradConfig.inputsToSave || []; + var outputsToSave_1 = gradConfig.outputsToSave || []; + // If saveAllInputs is true, all inputs will be saved. Otherwise, inputs + // specified in inputsToSave will be saved. + var inputTensorsToSave = void 0; + if (gradConfig.saveAllInputs) { + assert(Array.isArray(inputs), function () { return 'saveAllInputs is true, expected inputs to be an array.'; }); + inputTensorsToSave = Object.keys(inputs).map(function (key) { return inputs[key]; }); + } + else { + inputTensorsToSave = inputsToSave.map(function (inputName) { return inputs[inputName]; }); + } + var outputTensorsToSave = outputs.filter(function (_, i) { return outputsToSave_1[i]; }); + return inputTensorsToSave.concat(outputTensorsToSave); + } + // TODO(yassogba) throw exception here once all runkernelFunc calls with + // inputsToSave/outputsToSave are removed + return null; + }; + /** + * Internal method used by public APIs for tensor creation. Makes a new + * tensor with the provided shape, dtype and values. It always + * creates a new data id and writes the values to the underlying backend. + */ + Engine.prototype.makeTensor = function (values, shape, dtype, backend) { + if (values == null) { + throw new Error('Values passed to engine.makeTensor() are null'); + } + dtype = dtype || 'float32'; + backend = backend || this.backend; + var backendVals = values; + if (dtype === 'string' && isString(values[0])) { + backendVals = values.map(function (d) { return encodeString(d); }); + } + var dataId = backend.write(backendVals, shape, dtype); + var t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.incRef(t, backend); + // Count bytes for string tensors. + if (dtype === 'string') { + var info = this.state.tensorInfo.get(dataId); + var newBytes = bytesFromStringArray(backendVals); + this.state.numBytes += newBytes - info.bytes; + info.bytes = newBytes; + } + return t; + }; + /** + * Internal method used by backends. Makes a new tensor + * that is a wrapper around an existing data id. It doesn't create + * a new data id, only increments the ref count used in memory tracking. + */ + Engine.prototype.makeTensorFromDataId = function (dataId, shape, dtype, backend) { + dtype = dtype || 'float32'; + var t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.incRef(t, backend); + return t; + }; + Engine.prototype.makeVariable = function (initialValue, trainable, name, dtype) { + if (trainable === void 0) { trainable = true; } + name = name || this.nextVariableId().toString(); + if (dtype != null && dtype !== initialValue.dtype) { + initialValue = initialValue.cast(dtype); + } + var v = new Variable(initialValue, trainable, name, this.nextTensorId()); + if (this.state.registeredVariables[v.name] != null) { + throw new Error("Variable with name " + v.name + " was already registered"); + } + this.state.registeredVariables[v.name] = v; + this.incRef(v, this.backend); + return v; + }; + Engine.prototype.incRef = function (a, backend) { + var refCount = this.state.tensorInfo.has(a.dataId) ? + this.state.tensorInfo.get(a.dataId).refCount : + 0; + this.state.numTensors++; + if (a.dtype === 'string') { + this.state.numStringTensors++; + } + if (refCount === 0) { + this.state.numDataBuffers++; + // Bytes for complex numbers are counted by their components. Bytes for + // string tensors are counted when writing values. + var bytes = 0; + if (a.dtype !== 'complex64' && a.dtype !== 'string') { + bytes = a.size * bytesPerElement(a.dtype); + } + this.state.tensorInfo.set(a.dataId, { + backend: backend || this.backend, + dtype: a.dtype, + shape: a.shape, + bytes: bytes, + refCount: 0 + }); + this.state.numBytes += bytes; + } + this.state.tensorInfo.get(a.dataId).refCount++; + if (!(a instanceof Variable)) { + this.track(a); + } + }; + Engine.prototype.disposeTensor = function (a) { + if (!this.state.tensorInfo.has(a.dataId)) { + return; + } + this.state.numTensors--; + if (a.dtype === 'string') { + this.state.numStringTensors--; + } + var info = this.state.tensorInfo.get(a.dataId); + var refCount = info.refCount; + if (refCount <= 1) { + // Don't count bytes for complex numbers as they are counted by their + // components. + if (a.dtype !== 'complex64') { + this.state.numBytes -= info.bytes; + } + this.state.numDataBuffers--; + info.backend.disposeData(a.dataId); + this.state.tensorInfo.delete(a.dataId); + } + else { + this.state.tensorInfo.get(a.dataId).refCount--; + } + // TODO(nsthorat): Construct an error and save the stack trace for + // debugging when in debug mode. Creating a stack trace is too expensive + // to do unconditionally. + }; + Engine.prototype.disposeVariables = function () { + for (var varName in this.state.registeredVariables) { + var v = this.state.registeredVariables[varName]; + this.disposeVariable(v); + } + }; + Engine.prototype.disposeVariable = function (v) { + this.disposeTensor(v); + if (this.state.registeredVariables[v.name] != null) { + delete this.state.registeredVariables[v.name]; + } + }; + Engine.prototype.memory = function () { + var info = this.backend.memory(); + info.numTensors = this.state.numTensors; + info.numDataBuffers = this.state.numDataBuffers; + info.numBytes = this.state.numBytes; + if (this.state.numStringTensors > 0) { + info.unreliable = true; + if (info.reasons == null) { + info.reasons = []; + } + info.reasons.push('Memory usage by string tensors is approximate ' + + '(2 bytes per character)'); + } + return info; + }; + Engine.prototype.profile = function (query) { + return __awaiter(this, void 0, void 0, function () { + var startBytes, startNumTensors, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + this.state.profiling = true; + startBytes = this.state.numBytes; + startNumTensors = this.state.numTensors; + this.state.activeProfile.kernels = []; + _a = this.state.activeProfile; + return [4 /*yield*/, query()]; + case 1: + _a.result = _b.sent(); + this.state.profiling = false; + this.state.activeProfile.peakBytes = Math.max.apply(Math, this.state.activeProfile.kernels.map(function (d) { return d.totalBytesSnapshot; })); + this.state.activeProfile.newBytes = this.state.numBytes - startBytes; + this.state.activeProfile.newTensors = + this.state.numTensors - startNumTensors; + return [2 /*return*/, this.state.activeProfile]; + } + }); + }); + }; + Engine.prototype.isTapeOn = function () { + return this.state.gradientDepth > 0 && this.state.kernelDepth === 0; + }; + Engine.prototype.addTapeNode = function (kernelName, inputs, outputs, gradientsFunc, saved, attrs) { + var _this = this; + var tapeNode = { id: this.state.nextTapeNodeId++, kernelName: kernelName, inputs: inputs, outputs: outputs, saved: saved }; + var gradConfig = getGradient(kernelName); + if (gradConfig != null) { + gradientsFunc = gradConfig.gradFunc; + } + if (gradientsFunc != null) { + tapeNode.gradient = function (dys) { + // TODO(smilkov): To optimize back-prop, pass dys that are not used in + // the backprop graph to the user as null instead of zeros + dys = dys.map(function (dy, i) { + if (dy == null) { + var output = outputs[i]; + var vals = makeZerosTypedArray(output.size, output.dtype); + return _this.makeTensor(vals, output.shape, output.dtype); + } + return dy; + }); + // Grad functions of ops with single outputs expect a dy, while ops + // with multiple outputs expect dys (array of dy). + return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs); + }; + } + this.state.activeTape.push(tapeNode); + }; + Engine.prototype.keep = function (result) { + result.kept = true; + return result; + }; + Engine.prototype.startTape = function () { + if (this.state.gradientDepth === 0) { + this.state.activeTape = []; + } + this.state.gradientDepth++; + }; + Engine.prototype.endTape = function () { + this.state.gradientDepth--; + }; + /** + * Start a scope. Use this with endScope() to achieve the same functionality + * as scope() without the need for a function closure. + */ + Engine.prototype.startScope = function (name) { + var scopeInfo = { + track: [], + name: 'unnamed scope', + id: this.state.nextScopeId++ + }; + if (name) { + scopeInfo.name = name; + } + this.state.scopeStack.push(scopeInfo); + this.state.activeScope = scopeInfo; + }; + /** + * End a scope. Use this with startScope() to achieve the same functionality + * as scope() without the need for a function closure. + */ + Engine.prototype.endScope = function (result) { + var _this = this; + var tensorsToTrackInParent = getTensorsInContainer(result); + var tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map(function (t) { return t.id; })); + // Dispose the arrays tracked in this scope. + for (var i = 0; i < this.state.activeScope.track.length; i++) { + var tensor = this.state.activeScope.track[i]; + if (!tensor.kept && !tensorsToTrackInParentSet.has(tensor.id)) { + tensor.dispose(); + } + } + var oldScope = this.state.scopeStack.pop(); + this.state.activeScope = this.state.scopeStack.length === 0 ? + null : + this.state.scopeStack[this.state.scopeStack.length - 1]; + // Track the current result in the parent scope. + tensorsToTrackInParent.forEach(function (tensor) { + // Only track the tensor if was allocated in the inner scope and is not + // globally kept. + if (!tensor.kept && tensor.scopeId === oldScope.id) { + _this.track(tensor); + } + }); + }; + /** + * Returns gradients of `f` with respect to each of the `xs`. The gradients + * returned are of the same length as `xs`, but some might be null if `f` + * was not a function of that `x`. It also takes optional dy to multiply the + * gradient, which defaults to `1`. + */ + Engine.prototype.gradients = function (f, xs, dy, allowNoGradients) { + var _this = this; + if (allowNoGradients === void 0) { allowNoGradients = false; } + assert(xs.length > 0, function () { return 'gradients() received an empty list of xs.'; }); + if (dy != null && dy.dtype !== 'float32') { + throw new Error("dy must have 'float32' dtype, but has '" + dy.dtype + "'"); + } + var y = this.scopedRun(function () { return _this.startTape(); }, function () { return _this.endTape(); }, function () { return _this.tidy('forward', f); }); + assert(y instanceof Tensor, function () { return 'The result y returned by f() must be a tensor.'; }); + // Filter out the nodes that don't connect x => y. + var filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y); + if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) { + throw new Error('Cannot compute gradient of y=f(x) with respect to x. Make sure ' + + 'that the f you passed encloses all operations that lead from x ' + + 'to y.'); + } + return this.tidy('backward', function () { + var accumulatedGradientMap = {}; + accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy; + // Backprop gradients through the filtered nodes. + backpropagateGradients(accumulatedGradientMap, filteredTape, + // Pass the tidy function to avoid circular dep with `tape.ts`. + function (f) { return _this.tidy(f); }); + var grads = xs.map(function (x) { return accumulatedGradientMap[x.id]; }); + if (_this.state.gradientDepth === 0) { + // This means that we are not computing higher-order gradients + // and can clean up the tape. + _this.state.activeTape.forEach(function (node) { + for (var _i = 0, _a = node.saved; _i < _a.length; _i++) { + var tensor = _a[_i]; + tensor.dispose(); + } + }); + _this.state.activeTape = null; + } + return { value: y, grads: grads }; + }); + }; + Engine.prototype.customGrad = function (f) { + var _this = this; + assert(isFunction(f), function () { return 'The f passed in customGrad(f) must be a function.'; }); + return function () { + var inputs = []; + for (var _i = 0; _i < arguments.length; _i++) { + inputs[_i] = arguments[_i]; + } + assert(inputs.every(function (t) { return t instanceof Tensor; }), function () { return 'The args passed in customGrad(f)(x1, x2,...) must all be ' + + 'tensors'; }); + var res; + var inputMap = {}; + inputs.forEach(function (input, i) { + inputMap[i] = input; + }); + return _this.runKernelFunc(function (_, save) { + res = f.apply(void 0, inputs.concat([save])); + assert(res.value instanceof Tensor, function () { return 'The function f passed in customGrad(f) must return an ' + + 'object where `obj.value` is a tensor'; }); + assert(isFunction(res.gradFunc), function () { return 'The function f passed in customGrad(f) must return an ' + + 'object where `obj.gradFunc` is a function.'; }); + return res.value; + }, inputMap, function (dy, saved) { + var gradRes = res.gradFunc(dy, saved); + var grads = Array.isArray(gradRes) ? gradRes : [gradRes]; + assert(grads.length === inputs.length, function () { return 'The function f passed in customGrad(f) must return an ' + + 'object where `obj.gradFunc` is a function that returns ' + + 'the same number of tensors as inputs passed to f(...).'; }); + assert(grads.every(function (t) { return t instanceof Tensor; }), function () { return 'The function f passed in customGrad(f) must return an ' + + 'object where `obj.gradFunc` is a function that returns ' + + 'a list of only tensors.'; }); + var gradMap = {}; + grads.forEach(function (grad, i) { + gradMap[i] = function () { return grad; }; + }); + return gradMap; + }); + }; + }; + Engine.prototype.readSync = function (dataId) { + // Route the read to the correct backend. + var info = this.state.tensorInfo.get(dataId); + return info.backend.readSync(dataId); + }; + Engine.prototype.read = function (dataId) { + // Route the read to the correct backend. + var info = this.state.tensorInfo.get(dataId); + return info.backend.read(dataId); + }; + Engine.prototype.time = function (query) { + return __awaiter(this, void 0, void 0, function () { + var start, timingInfo; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + start = now(); + return [4 /*yield*/, this.backend.time(query)]; + case 1: + timingInfo = _a.sent(); + timingInfo.wallMs = now() - start; + return [2 /*return*/, timingInfo]; + } + }); + }); + }; + /** + * Tracks a Tensor in the current scope to be automatically cleaned up + * when the current scope ends, and returns the value. + * + * @param result The Tensor to track in the current scope. + */ + Engine.prototype.track = function (result) { + if (this.state.activeScope != null) { + result.scopeId = this.state.activeScope.id; + this.state.activeScope.track.push(result); + } + return result; + }; + Object.defineProperty(Engine.prototype, "registeredVariables", { + get: function () { + return this.state.registeredVariables; + }, + enumerable: true, + configurable: true + }); + /** + * Resets the engine state. Removes all backends but does not remove + * registered backend factories. + */ + Engine.prototype.reset = function () { + // Make any pending promise obsolete. + this.pendingBackendInitId++; + this.state.dispose(); + this.ENV.reset(); + this.state = new EngineState(); + for (var backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + this.backendName = null; + this.backendInstance = null; + this.pendingBackendInit = null; + }; + Engine.nextTensorId = 0; + Engine.nextVariableId = 0; + return Engine; + }()); + function ones(shape) { + var values = makeOnesTypedArray(sizeFromShape(shape), 'float32'); + return ENGINE.makeTensor(values, shape, 'float32'); + } + function getOrMakeEngine() { + var ns = getGlobalNamespace(); + if (ns._tfengine == null) { + var environment = new Environment(ns); + ns._tfengine = new Engine(environment); + } + setEnvironmentGlobal(ns._tfengine.ENV); + // Tell the current tensor interface that the global engine is responsible + // for tracking. + setTensorTracker(function () { return ns._tfengine; }); + return ns._tfengine; + } + var ENGINE = getOrMakeEngine(); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // tslint:disable-next-line:no-any + function _isNavigatorDefined() { + return typeof navigator !== 'undefined' && navigator != null; + } + function isMobile() { + if (_isNavigatorDefined()) { + // tslint:disable-next-line:no-any + var a = navigator.userAgent || navigator.vendor || window.opera; + // tslint:disable-next-line:max-line-length + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i + .test(a) || + // tslint:disable-next-line:max-line-length + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i + .test(a.substr(0, 4)); + } + return false; + } + function isBrowser() { + return (typeof window !== 'undefined' && window.document != null) || + //@ts-ignore + (typeof WorkerGlobalScope !== 'undefined'); + } + + var device_util = { + __proto__: null, + isMobile: isMobile, + isBrowser: isBrowser + }; + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ENV = env(); + /** + * This file contains environment-related flag registrations. + */ + /** Whether to enable debug mode. */ + ENV.registerFlag('DEBUG', function () { return false; }, function (debugValue) { + if (debugValue) { + console.warn('Debugging mode is ON. The output of every math call will ' + + 'be downloaded to CPU and checked for NaNs. ' + + 'This significantly impacts performance.'); + } + }); + /** Whether we are in a browser (as versus, say, node.js) environment. */ + ENV.registerFlag('IS_BROWSER', function () { return isBrowser(); }); + /** Whether we are in a browser (as versus, say, node.js) environment. */ + ENV.registerFlag('IS_NODE', function () { return (typeof process !== 'undefined') && + (typeof process.versions !== 'undefined') && + (typeof process.versions.node !== 'undefined'); }); + /** Whether this browser is Chrome. */ + ENV.registerFlag('IS_CHROME', function () { return typeof navigator !== 'undefined' && navigator != null && + navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && + /Google Inc/.test(navigator.vendor); }); + /** + * True when the environment is "production" where we disable safety checks + * to gain performance. + */ + ENV.registerFlag('PROD', function () { return false; }); + /** + * Whether to do sanity checks when inferring a shape from user-provided + * values, used when creating a new tensor. + */ + ENV.registerFlag('TENSORLIKE_CHECK_SHAPE_CONSISTENCY', function () { return ENV.getBool('DEBUG'); }); + /** Whether deprecation warnings are enabled. */ + ENV.registerFlag('DEPRECATION_WARNINGS_ENABLED', function () { return true; }); + /** True if running unit tests. */ + ENV.registerFlag('IS_TEST', function () { return false; }); + + var Abs = 'Abs'; + var Acos = 'Acos'; + var Acosh = 'Acosh'; + var Add = 'Add'; + var AddN = 'AddN'; + var All = 'All'; + var Any = 'Any'; + var ArgMax = 'ArgMax'; + var ArgMin = 'ArgMin'; + var Asin = 'Asin'; + var Asinh = 'Asinh'; + var Atan = 'Atan'; + var Atanh = 'Atanh'; + var Atan2 = 'Atan2'; + var AvgPool = 'AvgPool'; + var AvgPoolBackprop = 'AvgPoolBackprop'; + var AvgPool3D = 'AvgPool3D'; + var AvgPool3DBackprop = 'AvgPool3DBackprop'; + var BatchMatMul = 'BatchMatMul'; + var BatchToSpaceND = 'BatchToSpaceND'; + var BroadcastTo = 'BroadcastTo'; + var Cast = 'Cast'; + var Ceil = 'Ceil'; + var ClipByValue = 'ClipByValue'; + var Complex = 'Complex'; + var Concat = 'Concat'; + var Conv2D = 'Conv2D'; + var Conv2DBackpropFilter = 'Conv2DBackpropFilter'; + var Conv2DBackpropInput = 'Conv2DBackpropInput'; + var Conv3D = 'Conv3D'; + var Conv3DBackpropFilterV2 = 'Conv3DBackpropFilterV2'; + var Conv3DBackpropInputV2 = 'Conv3DBackpropInputV2'; + var Cos = 'Cos'; + var Cosh = 'Cosh'; + var Cumsum = 'Cumsum'; + var CropAndResize = 'CropAndResize'; + var DepthToSpace = 'DepthToSpace'; + var DepthwiseConv2dNative = 'DepthwiseConv2dNative'; + var DepthwiseConv2dNativeBackpropFilter = 'DepthwiseConv2dNativeBackpropFilter'; + var DepthwiseConv2dNativeBackpropInput = 'DepthwiseConv2dNativeBackpropInput'; + var Diag = 'Diag'; + var Dilation2D = 'Dilation2D'; + var Dilation2DBackpropInput = 'Dilation2DBackpropInput'; + var Dilation2DBackpropFilter = 'Dilation2DBackpropFilter'; + var Div = 'Div'; + var Elu = 'Elu'; + var EluGrad = 'EluGrad'; + var Erf = 'Erf'; + var Equal = 'Equal'; + var Exp = 'Exp'; + var Expm1 = 'Expm1'; + var FFT = 'FFT'; + var Floor = 'Floor'; + var FloorDiv = 'FloorDiv'; + var Fill = 'Fill'; + var FusedBatchNorm = 'FusedBatchNorm'; + var GatherV2 = 'GatherV2'; + var GatherNd = 'GatherNd'; + var Greater = 'Greater'; + var GreaterEqual = 'GreaterEqual'; + var Identity = 'Identity'; + var IFFT = 'IFFT'; + var Imag = 'Imag'; + var IsFinite = 'IsFinite'; + var IsInf = 'IsInf'; + var IsNan = 'IsNan'; + var Less = 'Less'; + var LessEqual = 'LessEqual'; + var LinSpace = 'LinSpace'; + var Log = 'Log'; + var Log1p = 'Log1p'; + var LogicalAnd = 'LogicalAnd'; + var LogicalNot = 'LogicalNot'; + var LogicalOr = 'LogicalOr'; + var LogSoftmax = 'LogSoftmax'; + var LRN = 'LRN'; + var LRNBackprop = 'LRNBackprop'; + var Max = 'Max'; + var Maximum = 'Maximum'; + var MaxPool = 'MaxPool'; + var MaxPoolBackprop = 'MaxPoolBackprop'; + var MaxPool3D = 'MaxPool3D'; + var MaxPool3DBackprop = 'MaxPool3DBackprop'; + var MaxPoolWithArgmax = 'MaxPoolWithArgmax'; + var Mean = 'Mean'; + var Min = 'Min'; + var Minimum = 'Minimum'; + var Mod = 'Mod'; + var Multiply = 'Multiply'; + var Negate = 'Negate'; + var NotEqual = 'NotEqual'; + var NonMaxSuppressionV3 = 'NonMaxSuppressionV3'; + var NonMaxSuppressionV4 = 'NonMaxSuppressionV4'; + var NonMaxSuppressionV5 = 'NonMaxSuppressionV5'; + var OnesLike = 'OnesLike'; + var OneHot = 'OneHot'; + var PadV2 = 'PadV2'; + var Pool = 'Pool'; + var Pow = 'Pow'; + var Prelu = 'Prelu'; + var Prod = 'Prod'; + var Range = 'Range'; + var Real = 'Real'; + var Reciprocal = 'Reciprocal'; + var Relu = 'Relu'; + var Reshape = 'Reshape'; + var ResizeNearestNeighbor = 'ResizeNearestNeighbor'; + var ResizeNearestNeighborGrad = 'ResizeNearestNeighborGrad'; + var ResizeBilinear = 'ResizeBilinear'; + var ResizeBilinearGrad = 'ResizeBilinearGrad'; + var Relu6 = 'Relu6'; + var Reverse = 'Reverse'; + var Round = 'Round'; + var Rsqrt = 'Rsqrt'; + var ScatterNd = 'ScatterNd'; + var SelectV2 = 'SelectV2'; + var Selu = 'Selu'; + var Slice = 'Slice'; + var Sin = 'Sin'; + var Sinh = 'Sinh'; + var Sign = 'Sign'; + var Sigmoid = 'Sigmoid'; + var Softplus = 'Softplus'; + var Sqrt = 'Sqrt'; + var Sum = 'Sum'; + var SpaceToBatchND = 'SpaceToBatchND'; + var SplitV = 'SplitV'; + var Softmax = 'Softmax'; + var SquaredDifference = 'SquaredDifference'; + var Square = 'Square'; + var Sub = 'Sub'; + var SparseToDense = 'SparseToDense'; + var StridedSlice = 'StridedSlice'; + var Tan = 'Tan'; + var Tanh = 'Tanh'; + var Tile = 'Tile'; + var TopK = 'TopK'; + var Transpose = 'Transpose'; + var Unpack = 'Unpack'; + var UnsortedSegmentSum = 'UnsortedSegmentSum'; + var ZerosLike = 'ZerosLike'; + /** + * TensorFlow.js-only kernels + */ + var Step = 'Step'; + var FromPixels = 'FromPixels'; + var RotateWithOffset = 'RotateWithOffset'; + var _FusedMatMul = '_FusedMatMul'; + var FusedConv2D = 'FusedConv2D'; + var FusedDepthwiseConv2D = 'FusedDepthwiseConv2D'; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function inferShape(val, dtype) { + var firstElem = val; + if (isTypedArray(val)) { + return dtype === 'string' ? [] : [val.length]; + } + if (!Array.isArray(val)) { + return []; // Scalar. + } + var shape = []; + while (Array.isArray(firstElem) || + isTypedArray(firstElem) && dtype !== 'string') { + shape.push(firstElem.length); + firstElem = firstElem[0]; + } + if (Array.isArray(val) && + env().getBool('TENSORLIKE_CHECK_SHAPE_CONSISTENCY')) { + deepAssertShapeConsistency(val, shape, []); + } + return shape; + } + function deepAssertShapeConsistency(val, shape, indices) { + indices = indices || []; + if (!(Array.isArray(val)) && !isTypedArray(val)) { + assert(shape.length === 0, function () { return "Element arr[" + indices.join('][') + "] is a primitive, " + + ("but should be an array/TypedArray of " + shape[0] + " elements"); }); + return; + } + assert(shape.length > 0, function () { return "Element arr[" + indices.join('][') + "] should be a primitive, " + + ("but is an array of " + val.length + " elements"); }); + assert(val.length === shape[0], function () { return "Element arr[" + indices.join('][') + "] should have " + shape[0] + " " + + ("elements, but has " + val.length + " elements"); }); + var subShape = shape.slice(1); + for (var i = 0; i < val.length; ++i) { + deepAssertShapeConsistency(val[i], subShape, indices.concat(i)); + } + } + function assertDtype(expectedDtype, actualDType, argName, functionName) { + if (expectedDtype == null) { + return; + } + if (expectedDtype !== 'numeric' && expectedDtype !== actualDType || + expectedDtype === 'numeric' && actualDType === 'string') { + throw new Error("Argument '" + argName + "' passed to '" + functionName + "' must " + + ("be " + expectedDtype + " tensor, but got " + actualDType + " tensor")); + } + } + function convertToTensor(x, argName, functionName, parseAsDtype) { + if (parseAsDtype === void 0) { parseAsDtype = 'numeric'; } + if (x instanceof Tensor) { + assertDtype(parseAsDtype, x.dtype, argName, functionName); + return x; + } + var inferredDtype = inferDtype(x); + // If the user expects a bool/int/float, use that info to update the + // inferredDtype when it is not a string. + if (inferredDtype !== 'string' && + ['bool', 'int32', 'float32'].indexOf(parseAsDtype) >= 0) { + inferredDtype = parseAsDtype; + } + assertDtype(parseAsDtype, inferredDtype, argName, functionName); + if ((x == null) || + (!isTypedArray(x) && !Array.isArray(x) && typeof x !== 'number' && + typeof x !== 'boolean' && typeof x !== 'string')) { + var type = x == null ? 'null' : x.constructor.name; + throw new Error("Argument '" + argName + "' passed to '" + functionName + "' must be a " + + ("Tensor or TensorLike, but got '" + type + "'")); + } + var inferredShape = inferShape(x, inferredDtype); + if (!isTypedArray(x) && !Array.isArray(x)) { + x = [x]; + } + var skipTypedArray = true; + var values = inferredDtype !== 'string' ? + toTypedArray(x, inferredDtype) : + flatten(x, [], skipTypedArray); + return ENGINE.makeTensor(values, inferredShape, inferredDtype); + } + function convertToTensorArray(arg, argName, functionName, parseAsDtype) { + if (parseAsDtype === void 0) { parseAsDtype = 'numeric'; } + if (!Array.isArray(arg)) { + throw new Error("Argument " + argName + " passed to " + functionName + " must be a " + + '`Tensor[]` or `TensorLike[]`'); + } + var tensors = arg; + return tensors.map(function (t, i) { return convertToTensor(t, argName + "[" + i + "]", functionName); }, parseAsDtype); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Used for wrapping functions that perform math operations on + * Tensors. The function will be wrapped in a named scope that cleans all + * memory usage after the function is done. + */ + function op(f) { + var keys = Object.keys(f); + if (keys.length !== 1) { + throw new Error("Please provide an object with a single key " + + "(operation name) mapping to a function. Got an object with " + + (keys.length + " keys.")); + } + var opName = keys[0]; + var fn = f[opName]; + // Strip the underscore from the end of the function name. + if (opName.endsWith('_')) { + opName = opName.substring(0, opName.length - 1); + } + // tslint:disable-next-line:no-any + var f2 = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + ENGINE.startScope(opName); + try { + var result = fn.apply(void 0, args); + if (result instanceof Promise) { + console.error('Cannot return a Promise inside of tidy.'); + } + ENGINE.endScope(result); + return result; + } + catch (ex) { + ENGINE.endScope(null); + throw ex; + } + }; + Object.defineProperty(f2, 'name', { value: opName, configurable: true }); + // tslint:disable-next-line:no-any + return f2; + } + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Casts a `tf.Tensor` to a new dtype. + * + * ```js + * const x = tf.tensor1d([1.5, 2.5, 3]); + * tf.cast(x, 'int32').print(); + * ``` + * @param x The input tensor to be casted. + * @param dtype The dtype to cast the input tensor to. + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function cast_(x, dtype) { + var $x = convertToTensor(x, 'x', 'cast'); + // Sanity checks. + if (!isValidDtype(dtype)) { + throw new Error("Failed to cast to unknown dtype " + dtype); + } + if (dtype === 'string' && $x.dtype !== 'string' || + dtype !== 'string' && $x.dtype === 'string') { + throw new Error('Only strings can be casted to strings'); + } + var inputs = { x: $x }; + var attrs = { dtype: dtype }; + return ENGINE.runKernelFunc(function (backend) { return backend.cast($x, dtype); }, inputs, null /* grad */, Cast, attrs); + } + var cast = op({ cast_: cast_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Multiplies two `tf.Tensor`s element-wise, A * B. Supports broadcasting. + * + * We also expose `tf.mulStrict` which has the same signature as this op and + * asserts that `a` and `b` are the same shape (does not broadcast). + * + * ```js + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.tensor1d([2, 3, 4, 5]); + * + * a.mul(b).print(); // or tf.mul(a, b) + * ``` + * + * ```js + * // Broadcast mul a with b. + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.scalar(5); + * + * a.mul(b).print(); // or tf.mul(a, b) + * ``` + * @param a The first tensor to multiply. + * @param b The second tensor to multiply. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function mul_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'mul'); + var $b = convertToTensor(b, 'b', 'mul'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + var forward = function (backend, save) { + var res = backend.multiply($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Multiply); + } + var mul = op({ mul_: mul_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes step of the input `tf.Tensor` element-wise: `x > 0 ? 1 : alpha * x` + * + * ```js + * const x = tf.tensor1d([0, 2, -1, -3]); + * + * x.step(.5).print(); // or tf.step(x, .5) + * ``` + * @param x The input tensor. + * @param alpha The gradient when input is negative. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function step_(x, alpha) { + if (alpha === void 0) { alpha = 0.0; } + var $x = convertToTensor(x, 'x', 'step'); + var inputs = { x: $x }; + var attrs = { alpha: alpha }; + return ENGINE.runKernelFunc(function (backend) { return backend.step($x, alpha); }, inputs, null /* grad */, Step, attrs); + } + var step = op({ step_: step_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var absGradConfig = { + kernelName: Abs, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(dy, step(cast(x, 'float32'), -1)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Divides two `tf.Tensor`s element-wise, A / B. Supports broadcasting. + * The result is rounded with floor function. + * + * + * ```js + * const a = tf.tensor1d([1, 4, 9, 16]); + * const b = tf.tensor1d([1, 2, 3, 4]); + * + * a.floorDiv(b).print(); // or tf.div(a, b) + * ``` + * + * ```js + * // Broadcast div a with b. + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(2); + * + * a.floorDiv(b).print(); // or tf.floorDiv(a, b) + * ``` + * + * @param a The first tensor as the numerator. + * @param b The second tensor as the denominator. Must have the same dtype as + * `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function floorDiv_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'floorDiv'); + var $b = convertToTensor(b, 'b', 'floorDiv'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + var forward = function (backend, save) { + var res = backend.floorDiv($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, FloorDiv); + } + var floorDiv = op({ floorDiv_: floorDiv_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Divides two `tf.Tensor`s element-wise, A / B. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 4, 9, 16]); + * const b = tf.tensor1d([1, 2, 3, 4]); + * + * a.div(b).print(); // or tf.div(a, b) + * ``` + * + * ```js + * // Broadcast div a with b. + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(2); + * + * a.div(b).print(); // or tf.div(a, b) + * ``` + * + * @param a The first tensor as the numerator. + * @param b The second tensor as the denominator. Must have the same dtype as + * `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function div_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'div'); + var $b = convertToTensor(b, 'b', 'div'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + if ($a.dtype === 'int32' && $b.dtype === 'int32') { + return floorDiv($a, $b); + } + var forward = function (backend, save) { + var res = backend.realDivide($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + var attrs = {}; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Div, attrs); + } + var div = op({ div_: div_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes `-1 * x` element-wise. + * + * ```js + * const x = tf.tensor2d([1, 2, -2, 0], [2, 2]); + * + * x.neg().print(); // or tf.neg(x) + * ``` + * + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function neg_(x) { + var $x = convertToTensor(x, 'x', 'neg'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend) { return backend.neg($x); }, inputs, null /* grad */, Negate); + } + var neg = op({ neg_: neg_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** This is shared code across all tensor creation methods. */ + function makeTensor(values, shape, inferredShape, dtype) { + if (dtype == null) { + dtype = inferDtype(values); + } + if (dtype === 'complex64') { + throw new Error("Cannot construct a complex64 tensor directly. " + + "Please use tf.complex(real, imag)."); + } + if (!isTypedArray(values) && !Array.isArray(values) && + typeof values !== 'number' && typeof values !== 'boolean' && + typeof values !== 'string') { + throw new Error('values passed to tensor(values) must be a number/boolean/string or ' + + 'an array of numbers/booleans/strings, or a TypedArray'); + } + if (shape != null) { + assertNonNegativeIntegerDimensions(shape); + var providedSize_1 = sizeFromShape(shape); + var inferredSize_1 = sizeFromShape(inferredShape); + assert(providedSize_1 === inferredSize_1, function () { + return "Based on the provided shape, [" + shape + "], the tensor should have " + + (providedSize_1 + " values but has " + inferredSize_1); + }); + for (var i = 0; i < inferredShape.length; ++i) { + var inferred = inferredShape[i]; + var flatDimsDontMatch = i === inferredShape.length - 1 ? + inferred !== sizeFromShape(shape.slice(i)) : + true; + assert(inferredShape[i] === shape[i] || !flatDimsDontMatch, function () { return "Error creating a new Tensor. Inferred shape " + + ("(" + inferredShape + ") does not match the provided ") + + ("shape (" + shape + "). "); }); + } + } + if (!isTypedArray(values) && !Array.isArray(values)) { + values = [values]; + } + shape = shape || inferredShape; + values = dtype !== 'string' ? + toTypedArray(values, dtype) : + flatten(values, [], true); + return ENGINE.makeTensor(values, shape, dtype); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates rank-0 `tf.Tensor` (scalar) with the provided value and dtype. + * + * The same functionality can be achieved with `tf.tensor`, but in general + * we recommend using `tf.scalar` as it makes the code more readable. + * + * ```js + * tf.scalar(3.14).print(); + * ``` + * + * @param value The value of the scalar. + * @param dtype The data type. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function scalar(value, dtype) { + if (((isTypedArray(value) && dtype !== 'string') || Array.isArray(value)) && + dtype !== 'complex64') { + throw new Error('Error creating a new Scalar: value must be a primitive ' + + '(number|boolean|string)'); + } + if (dtype === 'string' && isTypedArray(value) && + !(value instanceof Uint8Array)) { + throw new Error('When making a scalar from encoded string, ' + + 'the value must be `Uint8Array`.'); + } + var shape = []; + var inferredShape = []; + return makeTensor(value, shape, inferredShape, dtype); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes square root of the input `tf.Tensor` element-wise: `y = sqrt(x)` + * + * ```js + * const x = tf.tensor1d([1, 2, 4, -1]); + * + * x.sqrt().print(); // or tf.sqrt(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function sqrt_(x) { + var $x = convertToTensor(x, 'x', 'sqrt'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.sqrt($x); + save([$x]); + return res; + }, inputs, null /* grad */, Sqrt); + } + var sqrt = op({ sqrt_: sqrt_ }); + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes square of `x` element-wise: `x ^ 2` + * + * ```js + * const x = tf.tensor1d([1, 2, Math.sqrt(2), -1]); + * + * x.square().print(); // or tf.square(x) + * ``` + * @param x The input Tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function square_(x) { + var $x = convertToTensor(x, 'x', 'square'); + var attrs = {}; + var inputsToSave = [$x]; + var outputsToSave = []; + return ENGINE.runKernelFunc(function (backend, save) { + save([$x]); + return backend.square($x); + }, { x: $x }, null /* grad */, 'Square', attrs, inputsToSave, outputsToSave); + } + var square = op({ square_: square_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Subtracts two `tf.Tensor`s element-wise, A - B. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([10, 20, 30, 40]); + * const b = tf.tensor1d([1, 2, 3, 4]); + * + * a.sub(b).print(); // or tf.sub(a, b) + * ``` + * + * ```js + * // Broadcast subtract a with b. + * const a = tf.tensor1d([10, 20, 30, 40]); + * const b = tf.scalar(5); + * + * a.sub(b).print(); // or tf.sub(a, b) + * ``` + * @param a The first `tf.Tensor` to subtract from. + * @param b The second `tf.Tensor` to be subtracted. Must have the same dtype as + * `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function sub_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'sub'); + var $b = convertToTensor(b, 'b', 'sub'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + var forward = function (backend, save) { + var res = backend.subtract($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Sub); + } + var sub = op({ sub_: sub_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var acosGradConfig = { + kernelName: Acos, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { + x: function () { + var a = square(cast(x, 'float32')); + var b = sqrt(sub(scalar(1), a)); + return neg(div(dy, b)); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var acoshGradConfig = { + kernelName: Acosh, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { + x: function () { + var a = sqrt(sub(square(cast(x, 'float32')), 1)); + return div(dy, a); + } + }; + } + }; + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the dimensions in the input shape that are broadcasted to + * produce the provided output shape. + * + * The returned dimensions are 0-indexed and sorted. An example: + * inShape = [4, 1, 3] + * outShape = [5, 4, 3, 3] + * result = [1]. Dimension 1 (2nd dimension of input) gets broadcasted 1 => 3. + */ + function getBroadcastDims(inShape, outShape) { + var inRank = inShape.length; + var dims = []; + for (var i = 0; i < inRank; i++) { + var dim = inRank - 1 - i; + var a = inShape[dim] || 1; + var b = outShape[outShape.length - 1 - i] || 1; + if (b > 1 && a === 1) { + dims.unshift(dim); + } + } + return dims; + } + /** + * Returns the axes in the output space that should be reduced to produce + * the input space. + */ + function getReductionAxes(inShape, outShape) { + var result = []; + for (var i = 0; i < outShape.length; i++) { + var inDim = inShape[inShape.length - i - 1]; + var outAxis = outShape.length - i - 1; + var outDim = outShape[outAxis]; + if (inDim == null || (inDim === 1 && outDim > 1)) { + result.unshift(outAxis); + } + } + return result; + } + function assertAndGetBroadcastShape(shapeA, shapeB) { + var result = []; + var l = Math.max(shapeA.length, shapeB.length); + for (var i = 0; i < l; i++) { + var a = shapeA[shapeA.length - i - 1]; + if (a == null) { + a = 1; + } + var b = shapeB[shapeB.length - i - 1]; + if (b == null) { + b = 1; + } + if (a === 1) { + result.unshift(b); + } + else if (b === 1) { + result.unshift(a); + } + else if (a !== b) { + var errMsg = "Operands could not be broadcast together with shapes " + + (shapeA + " and " + shapeB + "."); + throw Error(errMsg); + } + else { + result.unshift(a); + } + } + return result; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var addGradConfig = { + kernelName: Add, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var res = dy; + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + res = res.sum(reduceAxes); + } + return res.reshape(a.shape); + }; + var derB = function () { + var res = dy; + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + res = res.sum(reduceAxes); + } + return res.reshape(b.shape); + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var addNGradConfig = { + kernelName: AddN, + saveAllInputs: true, + gradFunc: function (dy, saved) { + var ders = {}; + saved.forEach(function (_, i) { + ders[i] = function () { return dy.clone(); }; + }); + return ders; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a `tf.Tensor` with all elements set to 0 with the same shape as the + * given tensor. + * + * ```js + * const x = tf.tensor([1, 2]); + * tf.zerosLike(x).print(); + * ``` + * + * @param x The tensor of required shape. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function zerosLike_(x) { + var $x = convertToTensor(x, 'x', 'zerosLike'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend) { return backend.zerosLike($x); }, inputs, null /* grad */, ZerosLike); + } + var zerosLike = op({ zerosLike_: zerosLike_ }); + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var argMaxGradConfig = { + kernelName: ArgMax, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return zerosLike(x); } }; + } + }; + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var argMinGradConfig = { + kernelName: ArgMin, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return zerosLike(x); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var asinGradConfig = { + kernelName: Asin, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, sqrt(sub(scalar(1), square(cast(x, 'float32'))))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Adds two `tf.Tensor`s element-wise, A + B. Supports broadcasting. + * + * + * ```js + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.tensor1d([10, 20, 30, 40]); + * + * a.add(b).print(); // or tf.add(a, b) + * ``` + * + * ```js + * // Broadcast add a with b. + * const a = tf.scalar(5); + * const b = tf.tensor1d([10, 20, 30, 40]); + * + * a.add(b).print(); // or tf.add(a, b) + * ``` + * @param a The first `tf.Tensor` to add. + * @param b The second `tf.Tensor` to add. Must have the same type as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function add_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'add'); + var $b = convertToTensor(b, 'b', 'add'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + var forward = function (backend, save) { + var res = backend.add($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Add); + } + var add = op({ add_: add_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var asinhGradConfig = { + kernelName: Asinh, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { + x: function () { + var a = sqrt(add(scalar(1), square(cast(x, 'float32')))); + return div(dy, a); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Reshapes a `tf.Tensor` to a given shape. + * + * Given an input tensor, returns a new tensor with the same values as the + * input tensor with shape `shape`. + * + * If one component of shape is the special value -1, the size of that + * dimension is computed so that the total size remains constant. In + * particular, a shape of [-1] flattens into 1-D. At most one component of + * shape can be -1. + * + * If shape is 1-D or higher, then the operation returns a tensor with shape + * shape filled with the values of tensor. In this case, the number of + * elements implied by shape must be the same as the number of elements in + * tensor. + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * x.reshape([2, 2]).print(); + * ``` + * + * @param x The input tensor to be reshaped. + * @param shape An array of integers defining the output tensor shape. + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function reshape_(x, shape) { + var $x = convertToTensor(x, 'x', 'reshape', null); + shape = inferFromImplicitShape(shape, $x.size); + assert($x.size === sizeFromShape(shape), function () { return 'new shape and old shape must have the same number of elements.'; }); + var inputs = { x: $x }; + var attrs = { shape: shape }; + var forward = function (backend, save) { + save([$x]); + return backend.reshape($x, shape); + }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Reshape, attrs); + } + var reshape = op({ reshape_: reshape_ }); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns true if the axis specifies the inner most dimensions of the + * array. + */ + function axesAreInnerMostDims(axes, rank) { + for (var i = 0; i < axes.length; ++i) { + if (axes[axes.length - i - 1] !== rank - 1 - i) { + return false; + } + } + return true; + } + function combineLocations(outputLoc, reduceLoc, axes) { + var rank = outputLoc.length + reduceLoc.length; + var loc = []; + var outIdx = 0; + var reduceIdx = 0; + for (var dim = 0; dim < rank; dim++) { + if (axes.indexOf(dim) === -1) { + loc.push(outputLoc[outIdx++]); + } + else { + loc.push(reduceLoc[reduceIdx++]); + } + } + return loc; + } + function computeOutAndReduceShapes(aShape, axes) { + var outShape = []; + var rank = aShape.length; + for (var dim = 0; dim < rank; dim++) { + if (axes.indexOf(dim) === -1) { + outShape.push(aShape[dim]); + } + } + var reduceShape = axes.map(function (dim) { return aShape[dim]; }); + return [outShape, reduceShape]; + } + function expandShapeToKeepDim(shape, axes) { + var reduceSubShape = axes.map(function (x) { return 1; }); + return combineLocations(shape, reduceSubShape, axes); + } + function assertAxesAreInnerMostDims(msg, axes, rank) { + assert(axesAreInnerMostDims(axes, rank), function () { return msg + " supports only inner-most axes for now. " + + ("Got axes " + axes + " and rank-" + rank + " input."); }); + } + /** + * Returns the axes permutation to be used with `tf.transpose`, if such + * permutation is necessary. Otherwise it returns null. This method is used by + * operations that operate only on inner-most axes. + */ + function getAxesPermutation(axes, rank) { + if (axesAreInnerMostDims(axes, rank)) { + return null; + } + var result = []; + for (var i = 0; i < rank; ++i) { + if (axes.indexOf(i) === -1) { + result.push(i); + } + } + axes.forEach(function (axis) { return result.push(axis); }); + return result; + } + /** Returns the axes permutation that undoes the original permutation. */ + function getUndoAxesPermutation(axes) { + return axes.map(function (axis, i) { return [i, axis]; }) + .sort(function (a, b) { return a[1] - b[1]; }) + .map(function (x) { return x[0]; }); + } + function getInnerMostAxes(numAxes, rank) { + var res = []; + for (var i = rank - numAxes; i < rank; ++i) { + res.push(i); + } + return res; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the sum of elements across dimensions of a `tf.Tensor`. + * + * Reduces the input along the dimensions given in `axes`. Unless `keepDims` + * is true, the rank of the `tf.Tensor` is reduced by 1 for each entry in + * `axes`. If `keepDims` is true, the reduced dimensions are retained with + * length 1. If axes has no entries, all dimensions are reduced, and a + * `tf.Tensor` with a single element is returned. + * + * ```js + * const x = tf.tensor1d([1, 2, 3]); + * + * x.sum().print(); // or tf.sum(x) + * ``` + * + * ```js + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * + * const axis = 1; + * x.sum(axis).print(); // or tf.sum(x, axis) + * ``` + * + * @param x The input tensor to compute the sum over. If the dtype is `bool` + * it will be converted to `int32` and the output dtype will be `int32`. + * @param axis The dimension(s) to reduce. By default it reduces + * all dimensions. + * @param keepDims If true, retains reduced dimensions with size 1. + */ + /** @doc {heading: 'Operations', subheading: 'Reduction'} */ + function sum_(x, axis, keepDims) { + if (axis === void 0) { axis = null; } + if (keepDims === void 0) { keepDims = false; } + var $x = convertToTensor(x, 'x', 'sum'); + if ($x.dtype === 'bool') { + $x = $x.toInt(); + } + var forward = function (backend, save) { + save([$x]); + var axes = parseAxisParam(axis, $x.shape); + var permutation = getAxesPermutation(axes, $x.rank); + var reductionAxes = axes; + var permutedX = $x; + if (permutation != null) { + permutedX = $x.transpose(permutation); + reductionAxes = getInnerMostAxes(reductionAxes.length, $x.rank); + } + var value = backend.sum(permutedX, reductionAxes); + if (keepDims) { + var newShape = expandShapeToKeepDim(value.shape, axes); + value = value.reshape(newShape); + } + return value; + }; + var inputs = { x: $x }; + var attrs = { axis: axis, keepDims: keepDims }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Sum, attrs); + } + var sum$1 = op({ sum_: sum_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var atan2GradConfig = { + kernelName: Atan2, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var d = add(square(a), square(b)); + var res = mul(dy, div(b, d)); + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, a.shape); + }; + var derB = function () { + var d = add(square(a), square(b)); + var res = neg(mul(dy, div(a, d))); + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, b.shape); + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var atanGradConfig = { + kernelName: Atan, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, add(square(cast(x, 'float32')), 1)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var atanhGradConfig = { + kernelName: Atanh, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, sub(scalar(1), square(cast(x, 'float32')))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * + * @param inputShape Input tensor shape is of the following dimensions: + * `[batch, height, width, inChannels]`. + * @param filterShape The filter shape is of the following dimensions: + * `[filterHeight, filterWidth, depth]`. + * @param strides The strides of the sliding window for each dimension of the + * input tensor: `[strideHeight, strideWidth]`. + * If `strides` is a single number, + * then `strideHeight == strideWidth`. + * @param pad The type of padding algorithm. + * - `same` and stride 1: output will be of same size as input, + * regardless of filter size. + * - `valid`: output will be smaller than input if filter is larger + * than 1*1x1. + * - For more info, see this guide: + * [https://www.tensorflow.org/api_guides/python/nn#Convolution]( + * https://www.tensorflow.org/api_guides/python/nn#Convolution) + * @param dataFormat The data format of the input and output data. + * Defaults to 'NHWC'. + * @param dilations The dilation rates: `[dilationHeight, dilationWidth]`. + * Defaults to `[1, 1]`. If `dilations` is a single number, then + * `dilationHeight == dilationWidth`. + */ + function computeDilation2DInfo(inputShape, filterShape, strides, pad, dataFormat, dilations) { + if (dataFormat === void 0) { dataFormat = 'NHWC'; } + // `computerConv2DInfo` require filterShape to be in the dimension of: + // `[filterHeight, filterWidth, depth, outDepth]`, dilation2d doesn't have + // outDepth, it should have the same depth as the input. + // Input shape: [batch, height, width, inChannels] + var inputChannels = inputShape[3]; + var $filterShape = filterShape.concat([inputChannels]); + var $dataFormat = convertConv2DDataFormat(dataFormat); + return computeConv2DInfo(inputShape, $filterShape, strides, dilations, pad, null /* roundingMode */, null /* depthWise */, $dataFormat); + } + function computePool2DInfo(inShape, filterSize, strides, dilations, pad, roundingMode, dataFormat) { + if (dataFormat === void 0) { dataFormat = 'channelsLast'; } + var _a = parseTupleParam(filterSize), filterHeight = _a[0], filterWidth = _a[1]; + var filterShape; + if (dataFormat === 'channelsLast') { + filterShape = [filterHeight, filterWidth, inShape[3], inShape[3]]; + } + else if (dataFormat === 'channelsFirst') { + filterShape = [filterHeight, filterWidth, inShape[1], inShape[1]]; + } + else { + throw new Error("Unknown dataFormat " + dataFormat); + } + return computeConv2DInfo(inShape, filterShape, strides, dilations, pad, roundingMode, false, dataFormat); + } + /** + * Computes the information for a forward pass of a pooling3D operation. + */ + function computePool3DInfo(inShape, filterSize, strides, dilations, pad, roundingMode, dataFormat) { + if (dataFormat === void 0) { dataFormat = 'NDHWC'; } + var _a = parse3TupleParam(filterSize), filterDepth = _a[0], filterHeight = _a[1], filterWidth = _a[2]; + var filterShape; + var $dataFormat; + if (dataFormat === 'NDHWC') { + $dataFormat = 'channelsLast'; + filterShape = + [filterDepth, filterHeight, filterWidth, inShape[4], inShape[4]]; + } + else if (dataFormat === 'NCDHW') { + $dataFormat = 'channelsFirst'; + filterShape = + [filterDepth, filterHeight, filterWidth, inShape[1], inShape[1]]; + } + else { + throw new Error("Unknown dataFormat " + dataFormat); + } + return computeConv3DInfo(inShape, filterShape, strides, dilations, pad, false, $dataFormat, roundingMode); + } + /** + * Computes the information for a forward pass of a convolution/pooling + * operation. + */ + function computeConv2DInfo(inShape, filterShape, strides, dilations, pad, roundingMode, depthwise, dataFormat) { + if (depthwise === void 0) { depthwise = false; } + if (dataFormat === void 0) { dataFormat = 'channelsLast'; } + var _a = [-1, -1, -1, -1], batchSize = _a[0], inHeight = _a[1], inWidth = _a[2], inChannels = _a[3]; + if (dataFormat === 'channelsLast') { + batchSize = inShape[0], inHeight = inShape[1], inWidth = inShape[2], inChannels = inShape[3]; + } + else if (dataFormat === 'channelsFirst') { + batchSize = inShape[0], inChannels = inShape[1], inHeight = inShape[2], inWidth = inShape[3]; + } + else { + throw new Error("Unknown dataFormat " + dataFormat); + } + var filterHeight = filterShape[0], filterWidth = filterShape[1], filterChannels = filterShape[3]; + var _b = parseTupleParam(strides), strideHeight = _b[0], strideWidth = _b[1]; + var _c = parseTupleParam(dilations), dilationHeight = _c[0], dilationWidth = _c[1]; + var effectiveFilterHeight = getEffectiveFilterSize(filterHeight, dilationHeight); + var effectiveFilterWidth = getEffectiveFilterSize(filterWidth, dilationWidth); + var _d = getPadAndOutInfo(pad, inHeight, inWidth, strideHeight, strideWidth, effectiveFilterHeight, effectiveFilterWidth, roundingMode, dataFormat), padInfo = _d.padInfo, outHeight = _d.outHeight, outWidth = _d.outWidth; + var outChannels = depthwise ? filterChannels * inChannels : filterChannels; + var outShape; + if (dataFormat === 'channelsFirst') { + outShape = [batchSize, outChannels, outHeight, outWidth]; + } + else if (dataFormat === 'channelsLast') { + outShape = [batchSize, outHeight, outWidth, outChannels]; + } + return { + batchSize: batchSize, + dataFormat: dataFormat, + inHeight: inHeight, + inWidth: inWidth, + inChannels: inChannels, + outHeight: outHeight, + outWidth: outWidth, + outChannels: outChannels, + padInfo: padInfo, + strideHeight: strideHeight, + strideWidth: strideWidth, + filterHeight: filterHeight, + filterWidth: filterWidth, + effectiveFilterHeight: effectiveFilterHeight, + effectiveFilterWidth: effectiveFilterWidth, + dilationHeight: dilationHeight, + dilationWidth: dilationWidth, + inShape: inShape, + outShape: outShape, + filterShape: filterShape + }; + } + /** + * Computes the information for a forward pass of a 3D convolution/pooling + * operation. + */ + function computeConv3DInfo(inShape, filterShape, strides, dilations, pad, depthwise, dataFormat, roundingMode) { + if (depthwise === void 0) { depthwise = false; } + if (dataFormat === void 0) { dataFormat = 'channelsLast'; } + var _a = [-1, -1, -1, -1, -1], batchSize = _a[0], inDepth = _a[1], inHeight = _a[2], inWidth = _a[3], inChannels = _a[4]; + if (dataFormat === 'channelsLast') { + batchSize = inShape[0], inDepth = inShape[1], inHeight = inShape[2], inWidth = inShape[3], inChannels = inShape[4]; + } + else if (dataFormat === 'channelsFirst') { + batchSize = inShape[0], inChannels = inShape[1], inDepth = inShape[2], inHeight = inShape[3], inWidth = inShape[4]; + } + else { + throw new Error("Unknown dataFormat " + dataFormat); + } + var filterDepth = filterShape[0], filterHeight = filterShape[1], filterWidth = filterShape[2], filterChannels = filterShape[4]; + var _b = parse3TupleParam(strides), strideDepth = _b[0], strideHeight = _b[1], strideWidth = _b[2]; + var _c = parse3TupleParam(dilations), dilationDepth = _c[0], dilationHeight = _c[1], dilationWidth = _c[2]; + var effectiveFilterDepth = getEffectiveFilterSize(filterDepth, dilationDepth); + var effectiveFilterHeight = getEffectiveFilterSize(filterHeight, dilationHeight); + var effectiveFilterWidth = getEffectiveFilterSize(filterWidth, dilationWidth); + var _d = get3DPadAndOutInfo(pad, inDepth, inHeight, inWidth, strideDepth, strideHeight, strideWidth, effectiveFilterDepth, effectiveFilterHeight, effectiveFilterWidth, roundingMode), padInfo = _d.padInfo, outDepth = _d.outDepth, outHeight = _d.outHeight, outWidth = _d.outWidth; + var outChannels = depthwise ? filterChannels * inChannels : filterChannels; + var outShape; + if (dataFormat === 'channelsFirst') { + outShape = [batchSize, outChannels, outDepth, outHeight, outWidth]; + } + else if (dataFormat === 'channelsLast') { + outShape = [batchSize, outDepth, outHeight, outWidth, outChannels]; + } + return { + batchSize: batchSize, + dataFormat: dataFormat, + inDepth: inDepth, + inHeight: inHeight, + inWidth: inWidth, + inChannels: inChannels, + outDepth: outDepth, + outHeight: outHeight, + outWidth: outWidth, + outChannels: outChannels, + padInfo: padInfo, + strideDepth: strideDepth, + strideHeight: strideHeight, + strideWidth: strideWidth, + filterDepth: filterDepth, + filterHeight: filterHeight, + filterWidth: filterWidth, + effectiveFilterDepth: effectiveFilterDepth, + effectiveFilterHeight: effectiveFilterHeight, + effectiveFilterWidth: effectiveFilterWidth, + dilationDepth: dilationDepth, + dilationHeight: dilationHeight, + dilationWidth: dilationWidth, + inShape: inShape, + outShape: outShape, + filterShape: filterShape + }; + } + function computeOutputShape2D(inShape, fieldSize, stride, zeroPad, roundingMode) { + if (zeroPad == null) { + zeroPad = computeDefaultPad(inShape, fieldSize, stride); + } + var inputRows = inShape[0]; + var inputCols = inShape[1]; + var outputRows = conditionalRound((inputRows - fieldSize + 2 * zeroPad) / stride + 1, roundingMode); + assert(isInt(outputRows), function () { return "The output # of rows (" + outputRows + ") must be an integer. " + + "Change the stride and/or zero pad parameters"; }); + var outputCols = conditionalRound((inputCols - fieldSize + 2 * zeroPad) / stride + 1, roundingMode); + assert(isInt(outputCols), function () { return "The output # of columns (" + outputCols + ") must be an integer. " + + "Change the stride and/or zero pad parameters"; }); + return [outputRows, outputCols]; + } + function computeOutputShape4D(inShape, fieldSize, outChannels, stride, zeroPad, roundingMode) { + if (zeroPad == null) { + zeroPad = computeDefaultPad(inShape, fieldSize, stride); + } + var inputDepth = inShape[0]; + var inputRows = inShape[1]; + var inputCols = inShape[2]; + var outputDepths = conditionalRound((inputDepth - fieldSize + 2 * zeroPad) / stride + 1, roundingMode); + assert(isInt(outputDepths), function () { return "The output # of depths (" + outputDepths + ") must be an integer. " + + "Change the stride and/or zero pad parameters"; }); + var outputRows = conditionalRound((inputRows - fieldSize + 2 * zeroPad) / stride + 1, roundingMode); + assert(isInt(outputRows), function () { return "The output # of rows (" + outputRows + ") must be an integer. " + + "Change the stride and/or zero pad parameters"; }); + var outputCols = conditionalRound((inputCols - fieldSize + 2 * zeroPad) / stride + 1, roundingMode); + assert(isInt(outputCols), function () { return "The output # of columns (" + outputCols + ") must be an integer. " + + "Change the stride and/or zero pad parameters"; }); + return [outputDepths, outputRows, outputCols, outChannels]; + } + function computeDefaultPad(inputShape, fieldSize, stride, dilation) { + if (dilation === void 0) { dilation = 1; } + var effectiveFieldSize = getEffectiveFilterSize(fieldSize, dilation); + return Math.floor((inputShape[0] * (stride - 1) - stride + effectiveFieldSize) / 2); + } + function parseTupleParam(param) { + if (typeof param === 'number') { + return [param, param, param]; + } + if (param.length === 2) { + return [param[0], param[1], 1]; + } + return param; + } + function parse3TupleParam(param) { + return typeof param === 'number' ? [param, param, param] : param; + } + /* See https://www.tensorflow.org/api_docs/python/tf/nn/atrous_conv2d + * Atrous convolution is equivalent to standard convolution with upsampled + * filters with effective_filter_height = + * filter_height + (filter_height - 1) * (dilation - 1) + * and effective_filter_width = + * filter_width + (filter_width - 1) * (dilation - 1), + * produced by inserting dilation - 1 zeros along consecutive elements across + * the filters' spatial dimensions. + * When there is a dilation, this converts a filter dimension to the + * effective filter dimension, so it can be used in a standard convolution. + */ + function getEffectiveFilterSize(filterSize, dilation) { + if (dilation <= 1) { + return filterSize; + } + return filterSize + (filterSize - 1) * (dilation - 1); + } + function getPadAndOutInfo(pad, inHeight, inWidth, strideHeight, strideWidth, filterHeight, filterWidth, roundingMode, dataFormat) { + var padInfo; + var outHeight; + var outWidth; + if (typeof pad === 'number') { + var padType = (pad === 0) ? 'VALID' : 'NUMBER'; + padInfo = { top: pad, bottom: pad, left: pad, right: pad, type: padType }; + var outShape = computeOutputShape2D([inHeight, inWidth], filterHeight, strideHeight, pad, roundingMode); + outHeight = outShape[0]; + outWidth = outShape[1]; + } + else if (pad === 'same') { + outHeight = Math.ceil(inHeight / strideHeight); + outWidth = Math.ceil(inWidth / strideWidth); + var padAlongHeight = Math.max(0, (outHeight - 1) * strideHeight + filterHeight - inHeight); + var padAlongWidth = Math.max(0, (outWidth - 1) * strideWidth + filterWidth - inWidth); + var top_1 = Math.floor(padAlongHeight / 2); + var bottom = padAlongHeight - top_1; + var left = Math.floor(padAlongWidth / 2); + var right = padAlongWidth - left; + padInfo = { top: top_1, bottom: bottom, left: left, right: right, type: 'SAME' }; + } + else if (pad === 'valid') { + padInfo = { top: 0, bottom: 0, left: 0, right: 0, type: 'VALID' }; + outHeight = Math.ceil((inHeight - filterHeight + 1) / strideHeight); + outWidth = Math.ceil((inWidth - filterWidth + 1) / strideWidth); + } + else if (typeof pad === 'object') { + var top_2 = dataFormat === 'channelsLast' ? pad[1][0] : pad[2][0]; + var bottom = dataFormat === 'channelsLast' ? pad[1][1] : pad[2][1]; + var left = dataFormat === 'channelsLast' ? pad[2][0] : pad[3][0]; + var right = dataFormat === 'channelsLast' ? pad[2][1] : pad[3][1]; + var padType = (top_2 === 0 && bottom === 0 && left === 0 && right === 0) ? + 'VALID' : + 'EXPLICIT'; + padInfo = { top: top_2, bottom: bottom, left: left, right: right, type: padType }; + outHeight = conditionalRound((inHeight - filterHeight + top_2 + bottom) / strideHeight + 1, roundingMode); + outWidth = conditionalRound((inWidth - filterWidth + left + right) / strideWidth + 1, roundingMode); + } + else { + throw Error("Unknown padding parameter: " + pad); + } + return { padInfo: padInfo, outHeight: outHeight, outWidth: outWidth }; + } + function get3DPadAndOutInfo(pad, inDepth, inHeight, inWidth, strideDepth, strideHeight, strideWidth, filterDepth, filterHeight, filterWidth, roundingMode) { + var padInfo; + var outDepth; + var outHeight; + var outWidth; + if (typeof pad === 'number') { + var padType = (pad === 0) ? 'VALID' : 'NUMBER'; + padInfo = { + top: pad, + bottom: pad, + left: pad, + right: pad, + front: pad, + back: pad, + type: padType + }; + var outShape = computeOutputShape4D([inDepth, inHeight, inWidth, 1], filterDepth, 1, strideDepth, pad, roundingMode); + outDepth = outShape[0]; + outHeight = outShape[1]; + outWidth = outShape[2]; + } + else if (pad === 'same') { + outDepth = Math.ceil(inDepth / strideDepth); + outHeight = Math.ceil(inHeight / strideHeight); + outWidth = Math.ceil(inWidth / strideWidth); + var padAlongDepth = (outDepth - 1) * strideDepth + filterDepth - inDepth; + var padAlongHeight = (outHeight - 1) * strideHeight + filterHeight - inHeight; + var padAlongWidth = (outWidth - 1) * strideWidth + filterWidth - inWidth; + var front = Math.floor(padAlongDepth / 2); + var back = padAlongDepth - front; + var top_3 = Math.floor(padAlongHeight / 2); + var bottom = padAlongHeight - top_3; + var left = Math.floor(padAlongWidth / 2); + var right = padAlongWidth - left; + padInfo = { top: top_3, bottom: bottom, left: left, right: right, front: front, back: back, type: 'SAME' }; + } + else if (pad === 'valid') { + padInfo = { + top: 0, + bottom: 0, + left: 0, + right: 0, + front: 0, + back: 0, + type: 'VALID' + }; + outDepth = Math.ceil((inDepth - filterDepth + 1) / strideDepth); + outHeight = Math.ceil((inHeight - filterHeight + 1) / strideHeight); + outWidth = Math.ceil((inWidth - filterWidth + 1) / strideWidth); + } + else { + throw Error("Unknown padding parameter: " + pad); + } + return { padInfo: padInfo, outDepth: outDepth, outHeight: outHeight, outWidth: outWidth }; + } + /** + * Rounds a value depending on the rounding mode + * @param value + * @param roundingMode + */ + function conditionalRound(value, roundingMode) { + if (!roundingMode) { + return value; + } + switch (roundingMode) { + case 'round': + // used for Caffe Conv + return Math.round(value); + case 'ceil': + // used for Caffe Pool + return Math.ceil(value); + case 'floor': + return Math.floor(value); + default: + throw new Error("Unknown roundingMode " + roundingMode); + } + } + function tupleValuesAreOne(param) { + var _a = parseTupleParam(param), dimA = _a[0], dimB = _a[1], dimC = _a[2]; + return dimA === 1 && dimB === 1 && dimC === 1; + } + function eitherStridesOrDilationsAreOne(strides, dilations) { + return tupleValuesAreOne(strides) || tupleValuesAreOne(dilations); + } + /** + * Convert Conv2D dataFormat from 'NHWC'|'NCHW' to + * 'channelsLast'|'channelsFirst' + * @param dataFormat in 'NHWC'|'NCHW' mode + * @return dataFormat in 'channelsLast'|'channelsFirst' mode + * @throws unknown dataFormat + */ + function convertConv2DDataFormat(dataFormat) { + if (dataFormat === 'NHWC') { + return 'channelsLast'; + } + else if (dataFormat === 'NCHW') { + return 'channelsFirst'; + } + else { + throw new Error("Unknown dataFormat " + dataFormat); + } + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the backprop of a 3d avg pool. + * + * @param dy The dy error, of rank 5 of shape + * [batchSize, depth, height, width, channels]. + * assumed. + * @param input The original input image, of rank 5 or rank4 of shape + * [batchSize, depth, height, width, channels]. + * @param filterSize The filter size: + * `[filterDepth, filterHeight, filterWidth]`. + * `filterSize` is a single number, + * then `filterDepth == filterHeight == filterWidth`. + * @param strides The strides of the pooling: + * `[strideDepth, strideHeight, strideWidth]`. If + * `strides` is a single number, then `strideHeight == strideWidth`. + * @param dilations Deprecated, this field will be gone in v3.0.0. The dilation + * rates: `[dilationDepth, dilationHeight, dilationWidth]` + * in which we sample input values across the depth, height and width + * dimensions in dilated pooling. + * Defaults to `[1, 1, 1]`. If `dilations` is a single number, + * then `dilationDepth == dilationHeight == dilationWidth`. + * If it is greater than 1, then all values of `strides` must be 1. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + * @param dimRoundingMode A string from: 'ceil', 'round', 'floor'. The + * rounding mode used when computing output dimensions if pad is a + * number. If none is provided, it will not round and error if the output + * is of fractional size. + */ + function avgPool3dBackprop_(dy, input, filterSize, strides, dilations, pad, dimRoundingMode) { + if (dilations === void 0) { dilations = [1, 1, 1]; } + var $dy = convertToTensor(dy, 'dy', 'avgPool3dBackprop'); + var $input = convertToTensor(input, 'input', 'avgPool3dBackprop'); + var dy5D = $dy; + var input5D = $input; + var reshapedTo5D = false; + if ($input.rank === 4) { + reshapedTo5D = true; + dy5D = reshape($dy, [1, $dy.shape[0], $dy.shape[1], $dy.shape[2], $dy.shape[3]]); + input5D = reshape($input, [ + 1, $input.shape[0], $input.shape[1], $input.shape[2], $input.shape[3] + ]); + } + assert(dy5D.rank === 5, function () { return "Error in avgPool3dBackprop: dy must be rank 5 but got rank " + + (dy5D.rank + "."); }); + assert(input5D.rank === 5, function () { return "Error in avgPool3dBackprop: input must be rank 5 but got rank " + + (input5D.rank + "."); }); + assert(eitherStridesOrDilationsAreOne(strides, dilations), function () { return 'Error in avgPool3dBackprop: Either strides or dilations ' + + ("must be 1. Got strides " + strides + " and dilations '" + dilations + "'"); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in maxPool3dBackprop: pad must be an integer when " + + ("using, dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var forward = function (backend) { + var convInfo = computePool3DInfo(input5D.shape, filterSize, strides, dilations, pad, dimRoundingMode); + return backend.avgPool3dBackprop(dy5D, input5D, convInfo); + }; + var inputs = { dy: dy5D, input: input5D }; + var attrs = { filterSize: filterSize, strides: strides, dilations: dilations, pad: pad, dimRoundingMode: dimRoundingMode }; + var res = ENGINE.runKernelFunc(forward, inputs, null /* grad */, AvgPool3DBackprop, attrs); + if (reshapedTo5D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3], res.shape[4]]); + } + return res; + } + var avgPool3dBackprop = op({ avgPool3dBackprop_: avgPool3dBackprop_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var avgPool3DGradConfig = { + kernelName: AvgPool3D, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var _a = attrs, filterSize = _a.filterSize, strides = _a.strides, dilations = _a.dilations, pad = _a.pad, dimRoundingMode = _a.dimRoundingMode; + var $dilations = dilations == null ? [1, 1, 1] : dilations; + return { + x: function () { return avgPool3dBackprop(dy, x, filterSize, strides, $dilations, pad, dimRoundingMode); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the backprop of an 2D avg pool. + * + * @param dy The dy error, of rank 4 or rank 3 of shape + * [batchSize, height, width, channels]. If rank 3, batch of 1 is + * assumed. + * @param input The input image, of rank 4 or rank 3 of shape + * [batchSize, height, width, channels]. If rank 3, batch of 1 is + * assumed. + * @param filterSize The filter size: `[filterHeight, filterWidth]`. If + * `filterSize` is a single number, then `filterHeight == filterWidth`. + * @param strides The strides of the pooling: `[strideHeight, strideWidth]`. If + * `strides` is a single number, then `strideHeight == strideWidth`. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + */ + function avgPoolBackprop_(dy, input, filterSize, strides, pad) { + var $dy = convertToTensor(dy, 'dy', 'avgPoolBackprop'); + var $input = convertToTensor(input, 'input', 'avgPoolBackprop'); + assert($input.rank === $dy.rank, function () { return "Rank of input (" + $input.rank + ") does not match rank of dy (" + $dy.rank + ")"; }); + var input4D = $input; + var dy4D = $dy; + var reshapedTo4D = false; + if ($input.rank === 3) { + reshapedTo4D = true; + input4D = + reshape($input, [1, $input.shape[0], $input.shape[1], $input.shape[2]]); + dy4D = reshape($dy, [1, $dy.shape[0], $dy.shape[1], $dy.shape[2]]); + } + assert(dy4D.rank === 4, function () { return "Error in avgPoolBackprop: dy must be rank 4 but got rank " + + (dy4D.rank + "."); }); + assert(input4D.rank === 4, function () { return "Error in avgPoolBackprop: input must be rank 4 but got rank " + + (input4D.rank + "."); }); + var forward = function (backend) { + var convInfo = computePool2DInfo(input4D.shape, filterSize, strides, 1 /* dilations */, pad); + return backend.avgPoolBackprop(dy4D, input4D, convInfo); + }; + var inputs = { dy: dy4D, input: input4D }; + var attrs = { filterSize: filterSize, strides: strides, pad: pad }; + var res = ENGINE.runKernelFunc(forward, inputs, null, AvgPoolBackprop, attrs); + if (reshapedTo4D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3]]); + } + return res; + } + var avgPoolBackprop = op({ avgPoolBackprop_: avgPoolBackprop_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var avgPoolGradConfig = { + kernelName: AvgPool, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var _a = attrs, filterSize = _a.filterSize, strides = _a.strides, pad = _a.pad; + return { + x: function () { return avgPoolBackprop(dy, x, filterSize, strides, pad); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the dot product of two matrices, A * B. These must be matrices. + * + * ```js + * const a = tf.tensor2d([1, 2], [1, 2]); + * const b = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * + * a.matMul(b).print(); // or tf.matMul(a, b) + * ``` + * @param a First matrix in dot product operation. + * @param b Second matrix in dot product operation. + * @param transposeA If true, `a` is transposed before multiplication. + * @param transposeB If true, `b` is transposed before multiplication. + */ + /** @doc {heading: 'Operations', subheading: 'Matrices'} */ + function matMul_(a, b, transposeA, transposeB) { + var _a; + if (transposeA === void 0) { transposeA = false; } + if (transposeB === void 0) { transposeB = false; } + var $a = convertToTensor(a, 'a', 'matMul'); + var $b = convertToTensor(b, 'b', 'matMul'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assert($a.rank >= 2 && $b.rank >= 2 && $a.rank === $b.rank, function () { return "Error in matMul: inputs must have the same rank of at least 2, " + + ("got ranks " + $a.rank + " and " + $b.rank + "."); }); + var innerShapeA = transposeA ? $a.shape[$a.rank - 2] : $a.shape[$a.rank - 1]; + var innerShapeB = transposeB ? $b.shape[$b.rank - 1] : $b.shape[$b.rank - 2]; + var outerShapeA = transposeA ? $a.shape[$a.rank - 1] : $a.shape[$a.rank - 2]; + var outerShapeB = transposeB ? $b.shape[$b.rank - 2] : $b.shape[$b.rank - 1]; + var outerDimsA = $a.shape.slice(0, -2); + var outerDimsB = $b.shape.slice(0, -2); + var batchDimA = sizeFromShape(outerDimsA); + var batchDimB = sizeFromShape(outerDimsB); + assert(arraysEqual(outerDimsA, outerDimsB), function () { return "Error in matMul: outer dimensions (" + outerDimsA + ") and (" + + (outerDimsB + ") of Tensors with shapes " + $a.shape + " and ") + + ($b.shape + " must match."); }); + assert(innerShapeA === innerShapeB, function () { return "Error in matMul: inner shapes (" + innerShapeA + ") and (" + + (innerShapeB + ") of Tensors with shapes " + $a.shape + " and ") + + ($b.shape + " and transposeA=" + transposeA) + + (" and transposeB=" + transposeB + " must match."); }); + var outShape = $a.shape.slice(0, -2).concat([outerShapeA, outerShapeB]); + var a3D = transposeA ? reshape($a, [batchDimA, innerShapeA, outerShapeA]) : + reshape($a, [batchDimA, outerShapeA, innerShapeA]); + var b3D = transposeB ? reshape($b, [batchDimB, outerShapeB, innerShapeB]) : + reshape($b, [batchDimB, innerShapeB, outerShapeB]); + var forward = function (backend, save) { + save([a3D, b3D]); + return backend.batchMatMul(a3D, b3D, transposeA, transposeB); + }; + var inputs = { a: a3D, b: b3D }; + var attrs = { transposeA: transposeA, transposeB: transposeB }; + var res = ENGINE.runKernelFunc(forward, inputs, null /* grad */, BatchMatMul, attrs); + return reshape(res, outShape); + } + var matMul = op({ matMul_: matMul_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var batchMatMulGradConfig = { + kernelName: BatchMatMul, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved, attrs) { + var _a = saved, a = _a[0], b = _a[1]; + var _b = attrs, transposeA = _b.transposeA, transposeB = _b.transposeB; + if (!transposeA && !transposeB) { + return { + a: function () { return matMul(dy, b, false, true); }, + b: function () { return matMul(a, dy, true, false); } + }; + } + else if (!transposeA && transposeB) { + return { + a: function () { return matMul(dy, b, false, false); }, + b: function () { return matMul(dy, a, true, false); } + }; + } + else if (transposeA && !transposeB) { + return { + a: function () { return matMul(b, dy, false, true); }, + b: function () { return matMul(a, dy, false, false); } + }; + } + else { + return { + a: function () { return matMul(b, dy, true, true); }, + b: function () { return matMul(dy, a, true, true); } + }; + } + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * This operation divides "spatial" dimensions `[1, ..., M]` of the input into + * a grid of blocks of shape `blockShape`, and interleaves these blocks with + * the "batch" dimension (0) such that in the output, the spatial + * dimensions `[1, ..., M]` correspond to the position within the grid, + * and the batch dimension combines both the position within a spatial block + * and the original batch position. Prior to division into blocks, + * the spatial dimensions of the input are optionally zero padded + * according to `paddings`. See below for a precise description. + * + * ```js + * const x = tf.tensor4d([1, 2, 3, 4], [1, 2, 2, 1]); + * const blockShape = [2, 2]; + * const paddings = [[0, 0], [0, 0]]; + * + * x.spaceToBatchND(blockShape, paddings).print(); + * ``` + * + * @param x A `tf.Tensor`. N-D with `x.shape` = `[batch] + spatialShape + + * remainingShape`, where spatialShape has `M` dimensions. + * @param blockShape A 1-D array. Must have shape `[M]`, all values must + * be >= 1. + * @param paddings A 2-D array. Must have shape `[M, 2]`, all values must be >= + * 0. `paddings[i] = [padStart, padEnd]` specifies the amount to zero-pad + * from input dimension `i + 1`, which corresponds to spatial dimension `i`. It + * is required that + * `(inputShape[i + 1] + padStart + padEnd) % blockShape[i] === 0` + * + * This operation is equivalent to the following steps: + * + * 1. Zero-pad the start and end of dimensions `[1, ..., M]` of the input + * according to `paddings` to produce `padded` of shape paddedShape. + * + * 2. Reshape `padded` to `reshapedPadded` of shape: + * `[batch] + [paddedShape[1] / blockShape[0], blockShape[0], ..., + * paddedShape[M] / blockShape[M-1], blockShape[M-1]] + remainingShape` + * + * 3. Permute dimensions of `reshapedPadded` to produce `permutedReshapedPadded` + * of shape: `blockShape + [batch] + [paddedShape[1] / blockShape[0], ..., + * paddedShape[M] / blockShape[M-1]] + remainingShape` + * + * 4. Reshape `permutedReshapedPadded` to flatten `blockShape` into the + * batch dimension, producing an output tensor of shape: + * `[batch * prod(blockShape)] + [paddedShape[1] / blockShape[0], ..., + * paddedShape[M] / blockShape[M-1]] + remainingShape` + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function spaceToBatchND_(x, blockShape, paddings) { + var $x = convertToTensor(x, 'x', 'spaceToBatchND'); + assert($x.rank >= 1 + blockShape.length, function () { return "input rank " + $x.rank + " should be > than [blockShape] " + blockShape.length; }); + assert(paddings.length === blockShape.length, function () { return "paddings.shape[0] " + paddings.length + " must be equal to [blockShape] " + blockShape.length; }); + assert($x.shape.reduce(function (a, b, i) { + if (i > 0 && i <= blockShape.length) { + return a && + ((b + paddings[i - 1][0] + paddings[i - 1][1]) % + blockShape[i - 1] === + 0); + } + return a; + }, true), function () { return "input spatial dimensions " + $x.shape.slice(1) + " with paddings " + paddings.toString() + " must be divisible by blockShapes " + blockShape.toString(); }); + var forward = function (backend) { + return backend.spaceToBatchND($x, blockShape, paddings); + }; + var inputs = { x: $x }; + var attrs = { blockShape: blockShape, paddings: paddings }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, SpaceToBatchND, attrs); + } + var spaceToBatchND = op({ spaceToBatchND_: spaceToBatchND_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var batchToSpaceNDGradConfig = { + kernelName: BatchToSpaceND, + gradFunc: function (dy, saved, attrs) { + var _a = attrs, blockShape = _a.blockShape, crops = _a.crops; + return { x: function () { return spaceToBatchND(dy, blockShape, crops); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var broadcastToGradConfig = { + kernelName: BroadcastTo, + gradFunc: function (dy, saved, attrs) { + var broadCastToAttrs = attrs; + var inputShape = broadCastToAttrs.inputShape; + var outputShape = broadCastToAttrs.shape; + var reps = Array.from(outputShape); + for (var i = inputShape.length - 1; i >= 0; i--) { + if (inputShape[i] === outputShape[i]) { + reps[i] = 1; + } + else if (inputShape[i] !== 1) { + throw new Error("broadcastTo(): [" + inputShape + "] cannot be broadcast to [" + outputShape + "]."); + } + } + var axes = []; + for (var i = 0; i < reps.length; i++) { + if (reps[i] > 1) { + axes.push(i); + } + } + return { x: function () { return sum$1(dy, axes, true /* keepDims */); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var castGradConfig = { + kernelName: Cast, + gradFunc: function (dy) { + return { x: function () { return dy.clone(); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ceilGradConfig = { + kernelName: Ceil, + gradFunc: function (dy) { + // TODO(manrajgrover): Return null for gradients when backprop supports it. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of (a >= b) element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([2, 2, 2]); + * + * a.greaterEqual(b).print(); + * ``` + * + * @param a The first input tensor. + * @param b The second input tensor. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function greaterEqual_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'greaterEqual'); + var $b = convertToTensor(b, 'b', 'greaterEqual'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend, save) { + var res = backend.greaterEqual($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, GreaterEqual); + } + var greaterEqual = op({ greaterEqual_: greaterEqual_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of (a <= b) element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([2, 2, 2]); + * + * a.lessEqual(b).print(); + * ``` + * + * @param a The first input tensor. + * @param b The second input tensor. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function lessEqual_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'lessEqual'); + var $b = convertToTensor(b, 'b', 'lessEqual'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend, save) { + var res = backend.lessEqual($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, LessEqual); + } + var lessEqual = op({ lessEqual_: lessEqual_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of `a AND b` element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([false, false, true, true], 'bool'); + * const b = tf.tensor1d([false, true, false, true], 'bool'); + * + * a.logicalAnd(b).print(); + * ``` + * + * @param a The first input tensor. Must be of dtype bool. + * @param b The second input tensor. Must be of dtype bool. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function logicalAnd_(a, b) { + var $a = convertToTensor(a, 'a', 'logicalAnd', 'bool'); + var $b = convertToTensor(b, 'b', 'logicalAnd', 'bool'); + assertAndGetBroadcastShape($a.shape, $b.shape); + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(function (backend) { return backend.logicalAnd($a, $b); }, inputs, null /* grad */, LogicalAnd); + } + var logicalAnd = op({ logicalAnd_: logicalAnd_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the elements, either `a` or `b` depending on the `condition`. + * + * If the condition is true, select from `a`, otherwise select from `b`. + * + * ```js + * const cond = tf.tensor1d([false, false, true], 'bool'); + * const a = tf.tensor1d([1 , 2, 3]); + * const b = tf.tensor1d([-1, -2, -3]); + * + * a.where(cond, b).print(); + * ``` + * + * @param condition The input condition. Must be of dtype bool. + * @param a If `condition` is rank 1, `a` may have a higher rank but + * its first dimension must match the size of `condition`. + * @param b A tensor with the same dtype as `a` and with shape that is + * compatible with `a`. + * @return A tensor with same dtype as `a` and `b`, and shape that is + * broadcastable from `a` and `b`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function where_(condition, a, b) { + var $a = convertToTensor(a, 'a', 'where'); + var $b = convertToTensor(b, 'b', 'where'); + var $condition = convertToTensor(condition, 'condition', 'where', 'bool'); + // TODO: move this logic to forward function when the broadcastTo op is + // implemented in WASM. + // Find the broadcastable shape for $a and $b. + var broadcastShape = assertAndGetBroadcastShape($a.shape, $b.shape); + var $broadcastedA = $a.broadcastTo(broadcastShape); + var $broadcastedB = $b.broadcastTo(broadcastShape); + if ($condition.rank === 1) { + // If condition rank is 1, then the first dimension must match the size of + // condition. + assert($condition.shape[0] === $a.shape[0], function () { return 'The first dimension of `a` must match the size of `condition`.'; }); + } + if ($condition.rank !== 1) { + // A must have the same shape as condition. + assertShapesMatch($condition.shape, $broadcastedB.shape, 'Error in where: '); + } + var forward = function (backend, save) { + var res = backend.select($condition, $broadcastedA, $broadcastedB); + save([$condition]); + return res; + }; + var inputs = { + condition: $condition, + t: $broadcastedA, + e: $broadcastedB + }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, SelectV2); + } + var where = op({ where_: where_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var clipByValueGradConfig = { + kernelName: ClipByValue, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var _a = attrs, clipValueMin = _a.clipValueMin, clipValueMax = _a.clipValueMax; + return { + x: function () { return where(logicalAnd(greaterEqual(x, clipValueMin), lessEqual(x, clipValueMax)), dy, zerosLike(dy)); }, + }; + } + }; + + /** + * Prepare the split size array. When the input is a number, the axis is evenly + * divided among the split size. When the input contains the negative value, the + * rest of the axis is allocated toward that. + */ + function prepareSplitSize(x, numOrSizeSplits, axis) { + if (axis === void 0) { axis = 0; } + var splitSizes = []; + if (typeof (numOrSizeSplits) === 'number') { + assert(x.shape[axis] % numOrSizeSplits === 0, function () { return 'Number of splits must evenly divide the axis.'; }); + splitSizes = + new Array(numOrSizeSplits).fill(x.shape[axis] / numOrSizeSplits); + } + else { + var numOfNegs = numOrSizeSplits.reduce(function (count, value) { + if (value === -1) { + count += 1; + } + return count; + }, 0); + assert(numOfNegs <= 1, function () { return 'There should be only one negative value in split array.'; }); + var negIndex = numOrSizeSplits.indexOf(-1); + // Allow the number of split array to be -1, which indicates the rest + // of dimension is allocated to that split. + if (negIndex !== -1) { + var total = numOrSizeSplits.reduce(function (a, b) { return b > 0 ? a + b : a; }); + numOrSizeSplits[negIndex] = x.shape[axis] - total; + } + assert(x.shape[axis] === numOrSizeSplits.reduce(function (a, b) { return a + b; }), function () { return 'The sum of sizes must match the size of the axis dimension.'; }); + splitSizes = numOrSizeSplits; + } + return splitSizes; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Splits a `tf.Tensor` into sub tensors. + * + * If `numOrSizeSplits` is a number, splits `x` along dimension `axis` + * into `numOrSizeSplits` smaller tensors. + * Requires that `numOrSizeSplits` evenly divides `x.shape[axis]`. + * + * If `numOrSizeSplits` is a number array, splits `x` into + * `numOrSizeSplits.length` pieces. The shape of the `i`-th piece has the + * same size as `x` except along dimension `axis` where the size is + * `numOrSizeSplits[i]`. + * + * ```js + * const x = tf.tensor2d([1, 2, 3, 4, 5, 6, 7, 8], [2, 4]); + * const [a, b] = tf.split(x, 2, 1); + * a.print(); + * b.print(); + * + * const [c, d, e] = tf.split(x, [1, 2, 1], 1); + * c.print(); + * d.print(); + * e.print(); + * ``` + * + * @param x The input tensor to split. + * @param numOrSizeSplits Either an integer indicating the number of + * splits along the axis or an array of integers containing the sizes of + * each output tensor along the axis. If a number then it must evenly divide + * `x.shape[axis]`; otherwise the sum of sizes must match `x.shape[axis]`. + * Can contain one -1 indicating that dimension is to be inferred. + * @param axis The dimension along which to split. Defaults to 0 (the first + * dim). + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function split_(x, numOrSizeSplits, axis) { + if (axis === void 0) { axis = 0; } + var $x = convertToTensor(x, 'x', 'split'); + var forward = function (backend, _) { + var $axis = parseAxisParam(axis, $x.shape)[0]; + var splitSizes = prepareSplitSize($x, numOrSizeSplits, $axis); + return backend.split($x, splitSizes, $axis); + }; + var inputs = { x: $x }; + var attr = { numOrSizeSplits: numOrSizeSplits, axis: axis }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, SplitV, attr); + } + var split = op({ split_: split_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var concatGradConfig = { + kernelName: Concat, + saveAllInputs: true, + gradFunc: function (dy, saved, attrs) { + var shapes = saved.map(function (t) { return t.shape; }); + var axis = attrs.axis; + var $axis = parseAxisParam(axis, saved[0].shape)[0]; + var sizeSplits = shapes.map(function (s) { return s[$axis]; }); + var derTensors = split(dy, sizeSplits, $axis); + return derTensors.map(function (t) { return function () { return t; }; }); + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the derivative of the filter of a 2D convolution. + * + * @param x The input tensor, of rank 4 or rank 3 of shape + * [batch, height, width, inChannels]. If rank 3, batch of 1 is assumed. + * @param dy The dy image, of rank 4 or rank 3, of shape + * [batch, height, width, outDepth]. If rank 3, batch of 1 is assumed. + * @param filterShape The shape of the filter, length 4, + * [filterHeight, filterWidth, inDepth, outDepth]. + * @param strides The strides of the convolution: [strideHeight, + * strideWidth]. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + * @param dataFormat: An optional string from: "NHWC", "NCHW". Defaults to + * "NHWC". Specify the data format of the input and output data. With the + * default format "NHWC", the data is stored in the order of: [batch, + * height, width, channels]. + * @param dimRoundingMode A string from: 'ceil', 'round', 'floor'. The + * rounding mode used when computing output dimensions if pad is a + * number. If none is provided, it will not round and error if the output + * is of fractional size. + */ + function conv2DBackpropFilter_(x, dy, filterShape, strides, pad, dataFormat, dimRoundingMode) { + if (dataFormat === void 0) { dataFormat = 'NHWC'; } + var x4D = x; + if (x.rank === 3) { + x4D = reshape(x, [1, x.shape[0], x.shape[1], x.shape[2]]); + } + var dy4D = dy; + if (dy4D.rank === 3) { + dy4D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2]]); + } + assert(x4D.rank === 4, function () { return "Error in conv2dDerFilter: input must be rank 4, but got shape " + + (x4D.shape + "."); }); + assert(dy4D.rank === 4, function () { return "Error in conv2dDerFilter: dy must be rank 4, but got shape " + + (dy4D.shape + "."); }); + assert(filterShape.length === 4, function () { return "Error in conv2dDerFilter: filterShape must be length 4, but got " + + (filterShape + "."); }); + var inDepth = dataFormat === 'NHWC' ? x4D.shape[3] : x4D.shape[1]; + var outDepth = dataFormat === 'NHWC' ? dy4D.shape[3] : dy4D.shape[1]; + assert(inDepth === filterShape[2], function () { return "Error in conv2dDerFilter: depth of input " + inDepth + ") must " + + ("match input depth in filter (" + filterShape[2] + "."); }); + assert(outDepth === filterShape[3], function () { return "Error in conv2dDerFilter: depth of dy (" + outDepth + ") must " + + ("match output depth for filter (" + filterShape[3] + ")."); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in conv2dDerFilter: pad must be an integer when using, " + + ("dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var forward = function (backend) { + var dilations = 1; + var $dataFormat = convertConv2DDataFormat(dataFormat); + var convInfo = computeConv2DInfo(x4D.shape, filterShape, strides, dilations, pad, dimRoundingMode, false, $dataFormat); + return backend.conv2dDerFilter(x4D, dy4D, convInfo); + }; + var inputs = { x: x4D, dy: dy4D }; + var attrs = { strides: strides, pad: pad, dataFormat: dataFormat, dimRoundingMode: dimRoundingMode }; + return ENGINE.runKernelFunc(forward, inputs, null, Conv2DBackpropFilter, attrs); + } + var conv2DBackpropFilter = op({ conv2DBackpropFilter_: conv2DBackpropFilter_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the derivative of the input of a 2D convolution. + * + * @param xShape The shape of the input: [batch, height, width, inDepth]. + * If length of 3, batch of 1 is assumed. + * @param dy The derivative of the output, of rank 4 or rank 3 of shape + * `[batch, outHeight, outWidth, outDepth]`. If rank 3, batch of 1 is + * assumed. + * @param filter The filter, rank 4, of shape + * `[filterHeight, filterWidth, inDepth, outDepth]`. + * @param strides The strides of the convolution: `[strideHeight, + * strideWidth]`. + * @param pad The type of padding algorithm used: + * - `same` and stride 1: output will be of same size as input, + * regardless of filter size. + * - `valid`: output will be smaller than input if filter is larger + * than 1x1. + * @param dataFormat: An optional string from: "NHWC", "NCHW". Defaults to + * "NHWC". Specify the data format of the input and output data. With the + * default format "NHWC", the data is stored in the order of: [batch, + * height, width, channels]. + * @param dimRoundingMode The rounding mode used when computing output + * dimensions if pad is a number. If none is provided, it will not round + * and error if the output is of fractional size. + */ + function conv2DBackpropInput_(xShape, dy, filter, strides, pad, dataFormat, dimRoundingMode) { + if (dataFormat === void 0) { dataFormat = 'NHWC'; } + assert(xShape.length === dy.rank, function () { return "Length of inShape " + + ("(" + xShape.length + ") and rank of dy (" + dy.rank + ") must match"); }); + var xShape4D = xShape; + var dy4D = dy; + var reshapedTo4D = false; + if (dy.rank === 3) { + reshapedTo4D = true; + dy4D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2]]); + xShape4D = [1, xShape[0], xShape[1], xShape[2]]; + } + assert(xShape4D.length === 4, function () { + return "Error in conv2dDerInput: inShape must be length 4, but got length " + + (xShape4D.length + "."); + }); + assert(dy4D.rank === 4, function () { return "Error in conv2dDerInput: dy must be rank 4, but got " + + ("rank " + dy4D.rank); }); + assert(filter.rank === 4, function () { return "Error in conv2dDerInput: filter must be rank 4, but got " + + ("rank " + filter.rank); }); + var inDepth = dataFormat === 'NHWC' ? xShape4D[3] : xShape4D[1]; + var outDepth = dataFormat === 'NHWC' ? dy4D.shape[3] : dy4D.shape[1]; + assert(inDepth === filter.shape[2], function () { return "Error in conv2dDerInput: depth of input (" + inDepth + ") must " + + ("match input depth for filter " + filter.shape[2] + "."); }); + assert(outDepth === filter.shape[3], function () { return "Error in conv2dDerInput: depth of output (" + outDepth + ") must " + + ("match output depth for filter " + filter.shape[3] + "."); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in conv2dDerInput: pad must be an integer when using, " + + ("dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var forward = function (backend, save) { + var dilations = 1; + var $dataFormat = convertConv2DDataFormat(dataFormat); + var convInfo = computeConv2DInfo(xShape4D, filter.shape, strides, dilations, pad, dimRoundingMode, false, $dataFormat); + var res = backend.conv2dDerInput(dy4D, filter, convInfo); + save([dy4D, filter]); + return res; + }; + var inputs = { dy: dy4D, filter: filter }; + var attrs = { strides: strides, pad: pad, dataFormat: dataFormat, dimRoundingMode: dimRoundingMode, inputShape: xShape4D }; + var res = ENGINE.runKernelFunc(forward, inputs, null /* grad */, Conv2DBackpropInput, attrs); + if (reshapedTo4D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3]]); + } + return res; + } + var conv2DBackpropInput = op({ conv2DBackpropInput_: conv2DBackpropInput_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var conv2DGradConfig = { + kernelName: Conv2D, + inputsToSave: ['x', 'filter'], + gradFunc: function (dy, saved, attrs) { + var _a = saved, x4D = _a[0], $filter = _a[1]; + var _b = attrs, dilations = _b.dilations, strides = _b.strides, pad = _b.pad, dataFormat = _b.dataFormat; + assert(tupleValuesAreOne(dilations), function () { return 'Error in gradient of conv2D: dilation rates greater than 1 ' + + ("are not yet supported in gradients. Got dilations '" + dilations + "'"); }); + return { + x: function () { + return conv2DBackpropInput(x4D.shape, dy, $filter, strides, pad, dataFormat); + }, + filter: function () { + return conv2DBackpropFilter(x4D, dy, $filter.shape, strides, pad, dataFormat); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes a 2D convolution over the input x. + * + * @param x The input tensor, of rank 4 or rank 3, of shape + * `[batch, height, width, inChannels]`. If rank 3, batch of 1 is + * assumed. + * @param filter The filter, rank 4, of shape + * `[filterHeight, filterWidth, inDepth, outDepth]`. + * @param strides The strides of the convolution: `[strideHeight, + * strideWidth]`. + * @param pad The type of padding algorithm. + * - `same` and stride 1: output will be of same size as input, + * regardless of filter size. + * - `valid`: output will be smaller than input if filter is larger + * than 1x1. + * - For more info, see this guide: + * [https://www.tensorflow.org/api_guides/python/nn#Convolution]( + * https://www.tensorflow.org/api_guides/python/nn#Convolution) + * @param dataFormat: An optional string from: "NHWC", "NCHW". Defaults to + * "NHWC". Specify the data format of the input and output data. With the + * default format "NHWC", the data is stored in the order of: [batch, + * height, width, channels]. + * @param dilations The dilation rates: `[dilationHeight, dilationWidth]` + * in which we sample input values across the height and width dimensions + * in atrous convolution. Defaults to `[1, 1]`. If `dilations` is a single + * number, then `dilationHeight == dilationWidth`. If it is greater than + * 1, then all values of `strides` must be 1. + * @param dimRoundingMode The rounding mode used when computing output + * dimensions if pad is a number. If none is provided, it will not round + * and error if the output is of fractional size. + */ + /** @doc {heading: 'Operations', subheading: 'Convolution'} */ + function conv2d_(x, filter, strides, pad, dataFormat, dilations, dimRoundingMode) { + if (dataFormat === void 0) { dataFormat = 'NHWC'; } + if (dilations === void 0) { dilations = [1, 1]; } + var $x = convertToTensor(x, 'x', 'conv2d'); + var $filter = convertToTensor(filter, 'filter', 'conv2d'); + var x4D = $x; + var reshapedTo4D = false; + if ($x.rank === 3) { + reshapedTo4D = true; + x4D = reshape($x, [1, $x.shape[0], $x.shape[1], $x.shape[2]]); + } + assert(x4D.rank === 4, function () { return "Error in conv2d: input must be rank 4, but got rank " + x4D.rank + "."; }); + assert($filter.rank === 4, function () { return "Error in conv2d: filter must be rank 4, but got rank " + + ($filter.rank + "."); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in conv2d: pad must be an integer when using, " + + ("dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var inDepth = dataFormat === 'NHWC' ? x4D.shape[3] : x4D.shape[1]; + assert(inDepth === $filter.shape[2], function () { return "Error in conv2d: depth of input (" + inDepth + ") must match " + + ("input depth for filter " + $filter.shape[2] + "."); }); + assert(eitherStridesOrDilationsAreOne(strides, dilations), function () { return 'Error in conv2D: Either strides or dilations must be 1. ' + + ("Got strides " + strides + " and dilations '" + dilations + "'"); }); + var forward = function (backend, save) { + var $dataFormat = convertConv2DDataFormat(dataFormat); + var convInfo = computeConv2DInfo(x4D.shape, $filter.shape, strides, dilations, pad, dimRoundingMode, false, $dataFormat); + var res = backend.conv2d(x4D, $filter, convInfo); + save([x4D, $filter]); + return res; + }; + var inputs = { x: x4D, filter: $filter }; + var attrs = { strides: strides, pad: pad, dataFormat: dataFormat, dilations: dilations, dimRoundingMode: dimRoundingMode }; + var res = ENGINE.runKernelFunc(forward, inputs, null /* grad */, Conv2D, attrs); + if (reshapedTo4D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3]]); + } + return res; + } + var conv2d = op({ conv2d_: conv2d_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var conv2DBackpropInputGradConfig = { + kernelName: Conv2DBackpropInput, + inputsToSave: ['dy', 'filter'], + gradFunc: function (ddx, saved, attrs) { + var _a = saved, dy = _a[0], filter = _a[1]; + var _b = attrs, strides = _b.strides, pad = _b.pad, dataFormat = _b.dataFormat, dimRoundingMode = _b.dimRoundingMode; + return { + dy: function () { return conv2d(ddx, filter, strides, pad, dataFormat, 1 /* dilations */, dimRoundingMode); }, + filter: function () { return conv2DBackpropFilter(ddx, dy, filter.shape, strides, pad, dataFormat, dimRoundingMode); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the derivative of the filter of a 3D convolution. + * + * @param x The input tensor, of rank 5 or rank 4 of shape + * [batch, depth, height, width, inChannels]. If rank 4, batch of 1 is + * assumed. + * @param dy The dy image, of rank 5 or rank 4, of shape + * [batch, depth, height, width, outDepth]. If rank 4, batch of 1 is + * assumed. + * @param filterShape The shape of the filter, length 5, + * [filterDepth, filterHeight, filterWidth, inDepth, outDepth]. + * @param strides The strides of the convolution: [strideDepth, strideHeight, + * strideWidth]. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + */ + function conv3DBackpropFilter_(x, dy, filterShape, strides, pad) { + var x5D = x; + if (x.rank === 4) { + x5D = reshape(x, [1, x.shape[0], x.shape[1], x.shape[2], x.shape[3]]); + } + var dy5D = dy; + if (dy5D.rank === 4) { + dy5D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2], dy.shape[3]]); + } + assert(x5D.rank === 5, function () { return "Error in conv3dDerFilter: input must be rank 5, but got shape " + + (x5D.shape + "."); }); + assert(dy5D.rank === 5, function () { return "Error in conv3dDerFilter: dy must be rank 5, but got shape " + + (dy5D.shape + "."); }); + assert(filterShape.length === 5, function () { return "Error in conv3dDerFilter: filterShape must be length 5, but got " + + (filterShape + "."); }); + assert(x5D.shape[4] === filterShape[3], function () { return "Error in conv3dDerFilter: depth of input " + x5D.shape[4] + ") must " + + ("match input depth in filter (" + filterShape[3] + "."); }); + assert(dy5D.shape[4] === filterShape[4], function () { return "Error in conv3dDerFilter: depth of dy (" + dy5D.shape[4] + ") must " + + ("match output depth for filter (" + filterShape[4] + ")."); }); + var forward = function (backend) { + var dilations = 1; + var convInfo = computeConv3DInfo(x5D.shape, filterShape, strides, dilations, pad); + return backend.conv3dDerFilter(x5D, dy5D, convInfo); + }; + var inputs = { x: x5D, y: dy5D }; + var attrs = { strides: strides, pad: pad }; + return ENGINE.runKernelFunc(forward, inputs, null, Conv3DBackpropFilterV2, attrs); + } + var conv3DBackpropFilter = op({ conv3DBackpropFilter_: conv3DBackpropFilter_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the derivative of the input of a 3D convolution. + * + * @param xShape The shape of the input: [batch, depth, height, width, + * in_channels]. If length of 4, batch of 1 is assumed. + * @param dy The derivative of the output, of rank 5 or rank 4 of shape + * `[batch, outDepth, outHeight, outWidth, in_channels]`. + * If rank 4, batch of 1 is assumed. + * @param filter The filter, rank 5, of shape + * `[filterDepth, filterHeight, filterWidth, inDepth, outDepth]`. + * @param strides The strides of the convolution: `[strideDepth, strideHeight, + * strideWidth]`. + * @param pad The type of padding algorithm used: + * - `same` and stride 1: output will be of same size as input, + * regardless of filter size. + * - `valid`: output will be smaller than input if filter is larger + * than 1x1. + */ + function conv3DBackpropInput_(xShape, dy, filter, strides, pad) { + assert(xShape.length === dy.rank, function () { return "Length of inShape " + + ("(" + xShape.length + ") and rank of dy (" + dy.rank + ") must match"); }); + var xShape5D = xShape; + var dy5D = dy; + var reshapedTo5D = false; + if (dy.rank === 4) { + reshapedTo5D = true; + dy5D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2], dy.shape[3]]); + xShape5D = [1, xShape[0], xShape[1], xShape[2], xShape[3]]; + } + var inDepth = xShape5D[4]; + var outDepth = dy5D.shape[4]; + assert(xShape5D.length === 5, function () { + return "Error in conv3dDerInput: inShape must be length 5, but got length " + + (xShape5D.length + "."); + }); + assert(dy5D.rank === 5, function () { return "Error in conv3dDerInput: dy must be rank 5, but got " + + ("rank " + dy5D.rank); }); + assert(filter.rank === 5, function () { return "Error in conv3dDerInput: filter must be rank 5, but got " + + ("rank " + filter.rank); }); + assert(inDepth === filter.shape[3], function () { return "Error in conv3dDerInput: depth of input (" + inDepth + ") must " + + ("match input depth for filter " + filter.shape[3] + "."); }); + assert(outDepth === filter.shape[4], function () { return "Error in conv3dDerInput: depth of output (" + outDepth + ") must " + + ("match output depth for filter " + filter.shape[4] + "."); }); + var forward = function (backend) { + var dilations = 1; + var convInfo = computeConv3DInfo(xShape5D, filter.shape, strides, dilations, pad); + return backend.conv3dDerInput(dy5D, filter, convInfo); + }; + var inputs = { dy: dy5D }; + var attrs = { pad: pad }; + var res = ENGINE.runKernelFunc(forward, inputs, null, Conv3DBackpropInputV2, attrs); + if (reshapedTo5D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3], res.shape[4]]); + } + return res; + } + var conv3DBackpropInput = op({ conv3DBackpropInput_: conv3DBackpropInput_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var conv3DGradConfig = { + kernelName: Conv3D, + inputsToSave: ['x', 'filter'], + gradFunc: function (dy, saved, attrs) { + var _a = attrs, dilations = _a.dilations, strides = _a.strides, pad = _a.pad; + assert(tupleValuesAreOne(dilations), function () { + return 'Error in gradient of conv3D: dilation rates greater than 1 are ' + + ("not yet supported in gradients. Got dilations '" + dilations + "'"); + }); + var x5D = saved[0], $filter = saved[1]; + return { + x: function () { return conv3DBackpropInput(x5D.shape, dy, $filter, strides, pad); }, + filter: function () { return conv3DBackpropFilter(x5D, dy, $filter.shape, strides, pad); } + }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes sin of the input Tensor element-wise: `sin(x)` + * + * ```js + * const x = tf.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); + * + * x.sin().print(); // or tf.sin(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function sin_(x) { + var $x = convertToTensor(x, 'x', 'sin'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.sin($x); + save([$x]); + return res; + }, inputs, null /* grad */, Sin); + } + var sin = op({ sin_: sin_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var cosGradConfig = { + kernelName: Cos, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(neg(sin(cast(x, 'float32'))), dy); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes hyperbolic sin of the input `tf.Tensor` element-wise: `sinh(x)` + * + * ```js + * const x = tf.tensor1d([0, 1, -1, .7]); + * + * x.sinh().print(); // or tf.sinh(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function sinh_(x) { + var $x = convertToTensor(x, 'x', 'sinh'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.sinh($x); + save([$x]); + return res; + }, inputs, null /* grad */, Sinh); + } + var sinh = op({ sinh_: sinh_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var coshGradConfig = { + kernelName: Cosh, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(sinh(cast(x, 'float32')), dy); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Transposes the `tf.Tensor`. Permutes the dimensions according to `perm`. + * + * The returned `tf.Tensor`'s dimension `i` will correspond to the input + * dimension `perm[i]`. If `perm` is not given, it is set to `[n-1...0]`, + * where `n` is the rank of the input `tf.Tensor`. Hence by default, this + * operation performs a regular matrix transpose on 2-D input `tf.Tensor`s. + * + * ```js + * const a = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); + * + * a.transpose().print(); // or tf.transpose(a) + * ``` + * + * @param x The tensor to transpose. + * @param perm The permutation of the dimensions of a. + */ + /** @doc {heading: 'Operations', subheading: 'Matrices'} */ + function transpose_(x, perm) { + var $x = convertToTensor(x, 'x', 'transpose'); + if (perm == null) { + perm = $x.shape.map(function (s, i) { return i; }).reverse(); + } + assert($x.rank === perm.length, function () { return "Error in transpose: rank of input " + $x.rank + " " + + ("must match length of perm " + perm + "."); }); + perm.forEach(function (axis) { + assert(axis >= 0 && axis < $x.rank, function () { return "All entries in 'perm' must be between 0 and " + ($x.rank - 1) + + (" but got " + perm); }); + }); + if ($x.rank <= 1) { + return $x.clone(); + } + var inputs = { x: $x }; + var attrs = { perm: perm }; + return ENGINE.runKernelFunc(function (backend) { return backend.transpose($x, perm); }, inputs, null /* gradient */, Transpose, attrs); + } + var transpose = op({ transpose_: transpose_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the cumulative sum of a `tf.Tensor` along `axis`. + * + * ```js + * const x = tf.tensor([1, 2, 3, 4]); + * x.cumsum().print(); + * ``` + * ```js + * const x = tf.tensor([[1, 2], [3, 4]]); + * x.cumsum().print(); + * ``` + * + * @param x The input tensor to be summed. + * @param axis The axis along which to sum. Optional. Defaults to 0. + * @param exclusive Whether to perform exclusive cumulative sum. Optional. + * Defaults to false. If set to true then the sum of each tensor entry + * does not include its own value, but only the values previous to it + * along the specified axis. + * @param reverse Whether to sum in the opposite direction. Optional. + * Defaults to false. + */ + /** @doc {heading: 'Operations', subheading: 'Scan'} */ + function cumsum_(x, axis, exclusive, reverse) { + if (axis === void 0) { axis = 0; } + if (exclusive === void 0) { exclusive = false; } + if (reverse === void 0) { reverse = false; } + var $x = convertToTensor(x, 'x', 'cumsum'); + var forward = function (backend, save) { + var permutation = getAxesPermutation([axis], $x.rank); + var permutedX = $x; + if (permutation != null) { + permutedX = transpose($x, permutation); + } + var permutedAxis = getInnerMostAxes(1, $x.rank)[0]; + var value = backend.cumsum(permutedX, permutedAxis, exclusive, reverse); + save([$x]); + if (permutation != null) { + var reversePermutation = getUndoAxesPermutation(permutation); + value = transpose(value, reversePermutation); + } + return value; + }; + var inputs = { x: $x }; + var attrs = { axis: axis, exclusive: exclusive, reverse: reverse }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Cumsum, attrs); + } + var cumsum = op({ cumsum_: cumsum_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var cumsumGradConfig = { + kernelName: Cumsum, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var _a = attrs, axis = _a.axis, exclusive = _a.exclusive, reverse = _a.reverse; + return { + x: function () { + var permutation = getAxesPermutation([axis], x.rank); + var out = cumsum(dy, axis, exclusive, !reverse); + if (permutation != null) { + out = transpose(out, permutation); + } + return out; + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function depthwiseConv2dNativeBackpropFilter_(x, dy, filterShape, convInfo) { + var x4D = x; + if (x.rank === 3) { + x4D = reshape(x, [1, x.shape[0], x.shape[1], x.shape[2]]); + } + var dy4D = dy; + if (dy4D.rank === 3) { + dy4D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2]]); + } + var forward = function (backend) { + return backend.depthwiseConv2DDerFilter(x4D, dy4D, convInfo); + }; + var inputs = { x: x4D, dy: dy4D }; + return ENGINE.runKernelFunc(forward, inputs, null, DepthwiseConv2dNativeBackpropFilter); + } + var depthwiseConv2dNativeBackpropFilter = op({ depthwiseConv2dNativeBackpropFilter_: depthwiseConv2dNativeBackpropFilter_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function depthwiseConv2dNativeBackpropInput_(xShape, dy, filter, convInfo) { + var dy4D = dy; + var reshapedTo4D = false; + if (dy.rank === 3) { + reshapedTo4D = true; + dy4D = reshape(dy, [1, dy.shape[0], dy.shape[1], dy.shape[2]]); + } + var forward = function (backend) { + return backend.depthwiseConv2DDerInput(dy4D, filter, convInfo); + }; + var inputs = { dy: dy4D }; + var res = ENGINE.runKernelFunc(forward, inputs, null, DepthwiseConv2dNativeBackpropInput); + if (reshapedTo4D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3]]); + } + return res; + } + var depthwiseConv2dNativeBackpropInput = op({ depthwiseConv2dNativeBackpropInput_: depthwiseConv2dNativeBackpropInput_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var depthwiseConv2dNativeGradConfig = { + kernelName: DepthwiseConv2dNative, + inputsToSave: ['x', 'filter'], + gradFunc: function (dy, saved, attrs) { + var _a = attrs, dilations = _a.dilations, strides = _a.strides, pad = _a.pad, dimRoundingMode = _a.dimRoundingMode; + var $dilations = dilations == null ? [1, 1] : dilations; + assert(tupleValuesAreOne($dilations), function () { return 'Error in gradient of depthwiseConv2dNative: dilation rates ' + + "greater than 1 are not yet supported. Got dilations " + + ("'" + $dilations + "'"); }); + var _b = saved, x = _b[0], filter = _b[1]; + assert(x.rank === 4, function () { return "Error in gradient of depthwiseConv2dNative: input must be " + + ("rank 4, but got rank " + x.rank + "."); }); + assert(filter.rank === 4, function () { return "Error in gradient of depthwiseConv2dNative: filter must be " + + ("rank 4, but got rank " + filter.rank + "."); }); + assert(x.shape[3] === filter.shape[2], function () { return "Error in gradient of depthwiseConv2d: number of input " + + ("channels (" + x.shape[3] + ") must match the inChannels dimension ") + + ("in filter " + filter.shape[2] + "."); }); + assert(eitherStridesOrDilationsAreOne(strides, $dilations), function () { return 'Error in gradient of depthwiseConv2d: Either strides or ' + + ("dilations must be 1. Got strides " + strides + " and dilations ") + + ("'" + $dilations + "'."); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { + return "Error in depthwiseConv2d: pad must be an integer when using, " + + ("dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); + }); + } + var convInfo = computeConv2DInfo(x.shape, filter.shape, strides, $dilations, pad, dimRoundingMode, true /* depthwise */); + return { + x: function () { + return depthwiseConv2dNativeBackpropInput(x.shape, dy, filter, convInfo); + }, + filter: function () { + return depthwiseConv2dNativeBackpropFilter(x, dy, filter.shape, convInfo); + }, + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var dilation2dGradConfig = { + kernelName: Dilation2D, + inputsToSave: ['x', 'filter'], + gradFunc: function (dy, saved, attrs) { + var _a = saved, x = _a[0], filter = _a[1]; + var inputInputs = { x: x, filter: filter, dy: dy }; + var filterInputs = { x: x, filter: filter, dy: dy }; + return { + x: function () { return ENGINE.runKernel(Dilation2DBackpropInput, inputInputs, attrs); }, + filter: function () { return ENGINE.runKernel(Dilation2DBackpropFilter, filterInputs, attrs); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var divGradConfig = { + kernelName: Div, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var res = div(dy, b.toFloat()); + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + return sum$1(res, reduceAxes).reshape(a.shape); + } + return res; + }; + var derB = function () { + var res = mul(dy, a.toFloat()); + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + res = reshape(sum$1(res, reduceAxes), b.shape); + } + var tmp = square(b); + return neg(div(res, tmp.toFloat())); + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var eluGradConfig = { + kernelName: Elu, + outputsToSave: [true], + gradFunc: function (dy, saved) { + var y = saved[0]; + var backPropKernelFunc = function (backend) { + return backend.eluDer(dy, y); + }; + var inputs = { dy: dy, y: y }; + return { + x: function () { return ENGINE.runKernelFunc(backPropKernelFunc, inputs, null /* grad */, EluGrad); } + }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes exponential of the input `tf.Tensor` element-wise. `e ^ x` + * + * ```js + * const x = tf.tensor1d([1, 2, -3]); + * + * x.exp().print(); // or tf.exp(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function exp_(x) { + var $x = convertToTensor(x, 'x', 'exp'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.exp($x); + save([res]); + return res; + }, inputs, null /* grad */, Exp); + } + var exp = op({ exp_: exp_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var erfGradConfig = { + kernelName: Erf, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + var a = mul(exp(neg(square(x))), 2 / Math.sqrt(Math.PI)); + return { x: function () { return mul(dy, a); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var expGradConfig = { + kernelName: Exp, + outputsToSave: [true], + gradFunc: function (dy, saved) { + var y = saved[0]; + return { x: function () { return mul(dy, y); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var expm1GradConfig = { + kernelName: Expm1, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(dy, exp(x)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var floorGradConfig = { + kernelName: Floor, + gradFunc: function (dy) { + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var floorDivGradConfig = { + kernelName: FloorDiv, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var res = dy.div(b.toFloat()); + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + return res.sum(reduceAxes).reshape(a.shape); + } + return res; + }; + var derB = function () { + var res = dy.mul(a.toFloat()); + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + res = res.sum(reduceAxes).reshape(b.shape); + } + var tmp = b.square(); + return res.div(tmp.toFloat()).neg(); + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes reciprocal of square root of the input `tf.Tensor` element-wise: + * `y = 1 / sqrt(x)` + * + * ```js + * const x = tf.tensor1d([1, 2, 4, -1]); + * + * x.rsqrt().print(); // or tf.rsqrt(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function rsqrt_(x) { + var $x = convertToTensor(x, 'x', 'rsqrt'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.rsqrt($x); + save([$x]); + return res; + }, inputs, null /* grad */, Rsqrt); + } + var rsqrt = op({ rsqrt_: rsqrt_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Construct a tensor by repeating it the number of times given by reps. + * + * This operation creates a new tensor by replicating `input` `reps` + * times. The output tensor's i'th dimension has `input.shape[i] * + * reps[i]` elements, and the values of `input` are replicated + * `reps[i]` times along the i'th dimension. For example, tiling + * `[a, b, c, d]` by `[2]` produces `[a, b, c, d, a, b, c, d]`. + * + * ```js + * const a = tf.tensor1d([1, 2]); + * + * a.tile([2]).print(); // or a.tile([2]) + * ``` + * + * ```js + * const a = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * + * a.tile([1, 2]).print(); // or a.tile([1, 2]) + * ``` + * @param x The tensor to tile. + * @param reps Determines the number of replications per dimension. + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function tile_(x, reps) { + var parseAs = null; + var $x = convertToTensor(x, 'x', 'tile', parseAs); + assert($x.rank === reps.length, function () { return "Error in transpose: rank of input " + $x.rank + " " + + ("must match length of reps " + reps + "."); }); + var forward = function (backend, save) { + var res = backend.tile($x, reps); + save([$x]); + return res; + }; + var inputsToSave = [$x]; + var inputs = { x: $x }; + var attrs = { reps: reps }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Tile, attrs, inputsToSave); + } + var tile = op({ tile_: tile_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var fusedBatchNormGradConfig = { + kernelName: FusedBatchNorm, + inputsToSave: ['x', 'mean', 'variance', 'scale'], + gradFunc: function (dy, saved, attrs) { + var varianceEpsilon = attrs.varianceEpsilon; + var x = saved[0], mean = saved[1], variance = saved[2], scale = saved[3]; + var scaleValue = scale == null ? scalar(1) : scale; + var reductionAxes = getReductionAxes(mean.shape, x.shape); + var tileShape = []; + if (mean.rank === 1) { + for (var i = 0; i < x.shape.length - 1; ++i) { + tileShape.push(x.shape[i]); + } + tileShape.push(1); + } + var xMinusMean = sub(x, mean); + var dyTimesScaleValue = mul(dy, scaleValue); + var oneOverSqrtVariance = rsqrt(add(variance, scalar(varianceEpsilon))); + var minusHalfRCube = mul(mul(mul(oneOverSqrtVariance, oneOverSqrtVariance), oneOverSqrtVariance), scalar(-0.5)); + var derX = function () { + if (mean.rank === 1) { + return reshape(mul(mul(dy, tile(oneOverSqrtVariance.as4D(1, 1, 1, mean.shape[0]), tileShape)), scaleValue), x.shape); + } + else { + return reshape(mul(mul(dy, oneOverSqrtVariance), scaleValue), x.shape); + } + }; + var derMean = function () { + var meanDer = mul(mul(oneOverSqrtVariance, scalar(-1)), dyTimesScaleValue); + if (mean.rank === 1) { + meanDer = sum$1(meanDer, reductionAxes); + } + return reshape(meanDer, mean.shape); + }; + var derVariance = function () { + var varianceDer = mul(mul(minusHalfRCube, xMinusMean), dyTimesScaleValue); + if (mean.rank === 1) { + varianceDer = sum$1(varianceDer, reductionAxes); + } + return reshape(varianceDer, mean.shape); + }; + var derScale = function () { + var xMinusMean2TimesRsqrt = mul(xMinusMean, oneOverSqrtVariance); + var scaleDer = mul(dy, xMinusMean2TimesRsqrt); + if (mean.rank === 1) { + scaleDer = sum$1(scaleDer, reductionAxes); + } + return reshape(scaleDer, mean.shape); + }; + var derOffset = function () { + var offsetDer = dy; + if (mean.rank === 1) { + offsetDer = sum$1(offsetDer, reductionAxes); + } + return reshape(offsetDer, mean.shape); + }; + return { + x: derX, + mean: derMean, + variance: derVariance, + scale: derScale, + offset: derOffset + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the sum along segments of a `tf.Tensor`. + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * const segmentIds = tf.tensor1d([1, 2, 0, 1], 'int32'); + * const numSegments = 3; + * + * x.unsortedSegmentSum(segmentIds, numSegments).print() + * //or tf.unsortedSegmentSum(x, segmentIds, numSegments) + * ``` + * @param x The `tf.Tensor` that will be summed along its segments. + * @param segmentIds A `tf.Tensor1D` whose rank is equal to the rank of `x`'s + * dimension along the `axis`. Maps each element of `x` to a segment. + * @param numSegments The number of distinct `segmentIds`. + */ + /** @doc {heading: 'Operations', subheading: 'Segment'} */ + function unsortedSegmentSum_(x, segmentIds, numSegments) { + var $x = convertToTensor(x, 'x', 'unsortedSegmentSum'); + var $segmentIds = convertToTensor(segmentIds, 'segmentIds', 'unsortedSegmentSum', 'int32'); + assert(isInt(numSegments), function () { return 'numSegments must be of dtype int'; }); + var inputs = { x: $x, segmentIds: $segmentIds }; + var attrs = { numSegments: numSegments }; + var forward = function (backend, save) { + var res = backend.unsortedSegmentSum($x, $segmentIds, numSegments); + save([$segmentIds]); + return res; + }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, UnsortedSegmentSum, attrs); + } + var unsortedSegmentSum = op({ unsortedSegmentSum_: unsortedSegmentSum_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var gatherGradConfig = { + kernelName: GatherV2, + inputsToSave: ['x', 'indices'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0], indices = saved[1]; + var axis = attrs.axis; + var parsedAxis = parseAxisParam(axis, x.shape)[0]; + var derX = function () { + var paramsShape = x.shape; + var indicesSize = indices.size; + var outerShape = paramsShape.slice(0, parsedAxis); + var outerDims = outerShape.length; + var innerShape = paramsShape.slice(axis, paramsShape.length).slice(1); + var innerDims = innerShape.length; + var outerAxesIndices = arrayRange(0, outerDims); + var innerAxesIndices = arrayRange(outerDims + 1, outerDims + 1 + innerDims); + var valuesShape = arrayConcat([outerShape, [indicesSize], innerShape]); + var values = reshape(dy, valuesShape); + var reshapedIndices = reshape(indices, [indicesSize]); + var transposeDims = arrayConcat([[outerDims], outerAxesIndices, innerAxesIndices]); + var valuesTranspose = transpose(values, transposeDims); + var paramsGrad = unsortedSegmentSum(valuesTranspose, reshapedIndices, x.shape[parsedAxis]); + var invertTransposeDims = getUndoAxesPermutation(transposeDims); + paramsGrad = transpose(paramsGrad, invertTransposeDims); + return paramsGrad; + }; + return { x: derX, indices: function () { return indices; } }; + } + }; + function arrayRange(start, stop) { + var result = []; + for (var i = start; i < stop; ++i) { + result.push(i); + } + return result; + } + function arrayConcat(arrays) { + var result = []; + for (var i = 0; i < arrays.length; ++i) { + for (var j = 0; j < arrays[i].length; ++j) { + result.push(arrays[i][j]); + } + } + return result; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var greaterEqualGradConfig = { + kernelName: GreaterEqual, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + return { a: function () { return zerosLike(a); }, b: function () { return zerosLike(b); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var identityGradConfig = { + kernelName: Identity, + gradFunc: function (dy) { + return { x: function () { return dy.toFloat(); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var isFiniteGradConfig = { + kernelName: IsFinite, + gradFunc: function (dy) { + // TODO(nsthorat): Let gradients be null for cases where we want to stop + // backpropgation. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var isInfGradConfig = { + kernelName: IsInf, + gradFunc: function (dy) { + // TODO(nsthorat): Let gradients be null for cases where we want to stop + // backpropgation. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var isNanGradConfig = { + kernelName: IsNan, + gradFunc: function (dy) { + // TODO(nsthorat): Let gradients be null for cases where we want to stop + // backpropgation. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var log1pGradConfig = { + kernelName: Log1p, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, add(x, 1)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var logGradConfig = { + kernelName: Log, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, cast(x, 'float32')); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var logSoftmaxGradConfig = { + kernelName: LogSoftmax, + inputsToSave: [], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var value = saved[0]; + var axis = attrs.axis; + return { + logits: function () { + var keepDims = true; + var softmax = value.exp(); + return dy.sub(dy.sum(axis, keepDims).mul(softmax)); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function localResponseNormalizationBackprop_(x, y, dy, depthRadius, bias, alpha, beta) { + if (depthRadius === void 0) { depthRadius = 5; } + if (bias === void 0) { bias = 1; } + if (alpha === void 0) { alpha = 1; } + if (beta === void 0) { beta = 0.5; } + var forward = function (backend) { + return backend.LRNGrad(dy, x, y, depthRadius, bias, alpha, beta); + }; + var inputs = { x: x, y: y, dy: dy }; + var attrs = { depthRadius: depthRadius, bias: bias, alpha: alpha, beta: beta }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, LRNBackprop, attrs); + } + var localResponseNormalizationBackprop = op({ localResponseNormalizationBackprop_: localResponseNormalizationBackprop_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var lrnGradConfig = { + kernelName: LRN, + inputsToSave: ['x'], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var _a = saved, x = _a[0], y = _a[1]; + var _b = attrs, depthRadius = _b.depthRadius, bias = _b.bias, alpha = _b.alpha, beta = _b.beta; + return { + x: function () { return localResponseNormalizationBackprop(x, y, dy, depthRadius, bias, alpha, beta); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of (a == b) element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([2, 2, 2]); + * + * a.equal(b).print(); + * ``` + * + * @param a The first input tensor. + * @param b The second input tensor. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function equal_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'equal'); + var $b = convertToTensor(b, 'b', 'equal'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend) { return backend.equal($a, $b); }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null, Equal); + } + var equal = op({ equal_: equal_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Gradient helper function for the min and max operations. + */ + function gradForMinAndMax(dy, y, xOrig, origAxes, permutedAxes) { + if (y.rank < xOrig.rank) { + y = reshape(y, expandShapeToKeepDim(y.shape, origAxes)); + } + if (dy.rank < xOrig.rank) { + dy = reshape(dy, expandShapeToKeepDim(dy.shape, origAxes)); + } + return { + x: function () { + var dx = mul(dy, cast(equal(xOrig, y), dy.dtype)); + return permutedAxes == null ? dx : transpose(dx, permutedAxes); + } + }; + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxGradConfig = { + kernelName: Max, + inputsToSave: ['x'], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var maxAttrs = attrs; + var reductionIndices = maxAttrs.reductionIndices; + var x = saved[0], y = saved[1]; + var origAxes = parseAxisParam(reductionIndices, x.shape); + var permutedAxes = getAxesPermutation(origAxes, x.rank); + var maxGrad = gradForMinAndMax(dy, y, x, origAxes, permutedAxes); + return { + x: function () { + var out = maxGrad['x'](); + if (permutedAxes != null) { + out = transpose(out); + } + return out; + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of (a < b) element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([2, 2, 2]); + * + * a.less(b).print(); + * ``` + * @param a The first input tensor. + * @param b The second input tensor. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function less_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'less'); + var $b = convertToTensor(b, 'b', 'less'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend) { return backend.less($a, $b); }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Less); + } + var less = op({ less_: less_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maximumGradConfig = { + kernelName: Maximum, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var derA = function () { return mul(dy, cast(greaterEqual(a, b), 'float32')); }; + var derB = function () { return mul(dy, cast(less(a, b), 'float32')); }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the backprop of a 3d max pool. + * + * @param dy The dy error, of rank 5 of shape + * [batchSize, depth, height, width, channels]. + * assumed. + * @param input The original input image, of rank 5 or rank 4 of shape + * [batchSize, depth, height, width, channels]. + * @param output The original output image, of rank 5 of shape + * [batchSize, outDepth, outHeight, outWidth, channels]. + * @param filterSize The filter size: + * `[filterDepth, filterHeight, filterWidth]`. + * `filterSize` is a single number, + * then `filterDepth == filterHeight == filterWidth`. + * @param strides The strides of the pooling: + * `[strideDepth, strideHeight, strideWidth]`. If + * `strides` is a single number, then `strideHeight == strideWidth`. + * @param dilations Deprecated, this field will be gone in v3.0.0. + * The dilation rates: `[dilationDepth, dilationHeight, dilationWidth]` + * in which we sample input values across the depth, height and width + * dimensions in dilated pooling. + * Defaults to `[1, 1, 1]`. If `dilations` is a single number, + * then `dilationDepth == dilationHeight == dilationWidth`. + * If it is greater than 1, then all values of `strides` must be 1. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + * @param dimRoundingMode A string from: 'ceil', 'round', 'floor'. The + * rounding mode used when computing output dimensions if pad is a + * number. If none is provided, it will not round and error if the output + * is of fractional size. + */ + function maxPool3dBackprop_(dy, input, output, filterSize, strides, dilations, pad, dimRoundingMode) { + if (dilations === void 0) { dilations = [1, 1, 1]; } + var $dy = convertToTensor(dy, 'dy', 'maxPool3dBackprop'); + var $input = convertToTensor(input, 'input', 'maxPool3dBackprop'); + var $output = convertToTensor(output, 'output', 'maxPool3dBackprop'); + var dy5D = $dy; + var input5D = $input; + var output5D = $output; + var reshapedTo5D = false; + if ($input.rank === 4) { + reshapedTo5D = true; + dy5D = reshape($dy, [1, $dy.shape[0], $dy.shape[1], $dy.shape[2], $dy.shape[3]]); + input5D = reshape($input, [ + 1, $input.shape[0], $input.shape[1], $input.shape[2], $input.shape[3] + ]); + output5D = reshape($output, [ + 1, $output.shape[0], $output.shape[1], $output.shape[2], $output.shape[3] + ]); + } + assert(dy5D.rank === 5, function () { return "Error in maxPool3dBackprop: dy must be rank 5 but got rank " + + (dy5D.rank + "."); }); + assert(input5D.rank === 5, function () { return "Error in maxPool3dBackprop: input must be rank 5 but got rank " + + (input5D.rank + "."); }); + assert(output5D.rank === 5, function () { return "Error in maxPool3dBackprop: output must be rank 5 but got rank " + + (output5D.rank + "."); }); + assert(eitherStridesOrDilationsAreOne(strides, dilations), function () { return 'Error in maxPool3dBackprop: Either strides or dilations ' + + ("must be 1. Got strides " + strides + " and dilations '" + dilations + "'"); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in maxPool3dBackprop: pad must be an integer when " + + ("using, dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var forward = function (backend) { + var convInfo = computePool3DInfo(input5D.shape, filterSize, strides, dilations, pad, dimRoundingMode); + return backend.maxPool3dBackprop(dy5D, input5D, output5D, convInfo); + }; + var inputs = { dy: dy5D, input: input5D, output: output5D }; + var attrs = { filterSize: filterSize, strides: strides, dilations: dilations, pad: pad, dimRoundingMode: dimRoundingMode }; + var res = ENGINE.runKernelFunc(forward, inputs, null /* grad */, MaxPool3DBackprop, attrs); + if (reshapedTo5D) { + return reshape(res, [res.shape[1], res.shape[2], res.shape[3], res.shape[4]]); + } + return res; + } + var maxPool3dBackprop = op({ maxPool3dBackprop_: maxPool3dBackprop_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxPool3DGradConfig = { + kernelName: MaxPool3D, + inputsToSave: ['x'], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var _a = saved, x = _a[0], y = _a[1]; + var _b = attrs, filterSize = _b.filterSize, strides = _b.strides, dilations = _b.dilations, pad = _b.pad, dimRoundingMode = _b.dimRoundingMode; + var $dilations = dilations == null ? [1, 1, 1] : dilations; + return { + x: function () { return maxPool3dBackprop(dy, x, y, filterSize, strides, $dilations, pad, dimRoundingMode); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the backprop of a 2D max pool. + * + * @param dy The dy error, of rank 4 or rank 3 of shape + * [batchSize, height, width, channels]. If rank 3, batch of 1 is + * assumed. + * @param input The original input image, of rank 4, of shape + * [batchSize, height, width, channels]. + * @param output The original output image, of rank 4, of shape + * [batchSize, outHeight, outWidth, channels]. + * @param filterSize The filter size: `[filterHeight, filterWidth]`. If + * `filterSize` is a single number, then `filterHeight == filterWidth`. + * @param strides The strides of the pooling: `[strideHeight, strideWidth]`. If + * `strides` is a single number, then `strideHeight == strideWidth`. + * @param pad A string from: 'same', 'valid'. The type of padding algorithm + * used in the forward prop of the op. + * @param dimRoundingMode A string from: 'ceil', 'round', 'floor'. The + * rounding mode used when computing output dimensions if pad is a + * number. If none is provided, it will not round and error if the output + * is of fractional size. + */ + function maxPoolBackprop_(dy, input, output, filterSize, strides, pad, dimRoundingMode) { + var $dy = convertToTensor(dy, 'dy', 'maxPoolBackprop'); + var $input = convertToTensor(input, 'input', 'maxPoolBackprop'); + var $output = convertToTensor(output, 'output', 'maxPoolBackprop'); + assert($input.rank === $dy.rank, function () { return "Rank of input (" + $input.rank + ") does not match rank of dy " + + ("(" + $dy.rank + ")"); }); + assert($dy.rank === 4, function () { return "Error in maxPoolBackprop: dy must be rank 4 but got rank " + + ($dy.rank + "."); }); + assert($input.rank === 4, function () { return "Error in maxPoolBackprop: input must be rank 4 but got rank " + + ($input.rank + "."); }); + if (dimRoundingMode != null) { + assert(isInt(pad), function () { return "Error in maxPoolBackprop: pad must be an integer when using, " + + ("dimRoundingMode " + dimRoundingMode + " but got pad " + pad + "."); }); + } + var forward = function (backend) { + var convInfo = computePool2DInfo($input.shape, filterSize, strides, 1 /* dilations */, pad, dimRoundingMode); + return backend.maxPoolBackprop($dy, $input, $output, convInfo); + }; + var inputs = { dy: $dy, input: $input, output: $output }; + var attrs = { filterSize: filterSize, strides: strides, pad: pad, dimRoundingMode: dimRoundingMode }; + return ENGINE.runKernelFunc(forward, inputs, null, MaxPoolBackprop, attrs); + } + var maxPoolBackprop = op({ maxPoolBackprop_: maxPoolBackprop_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var maxPoolGradConfig = { + kernelName: MaxPool, + inputsToSave: ['x'], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var _a = saved, x = _a[0], y = _a[1]; + var _b = attrs, filterSize = _b.filterSize, strides = _b.strides, pad = _b.pad; + return { + x: function () { return maxPoolBackprop(dy, x, y, filterSize, strides, pad); } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var minGradConfig = { + kernelName: Min, + inputsToSave: ['x'], + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var minAttrs = attrs; + var axis = minAttrs.axis; + var x = saved[0], y = saved[1]; + var origAxes = parseAxisParam(axis, x.shape); + var permutedAxes = getAxesPermutation(origAxes, x.rank); + var minGrad = gradForMinAndMax(dy, y, x, origAxes, permutedAxes); + return { + x: function () { + var out = minGrad['x'](); + if (permutedAxes != null) { + out = transpose(out); + } + return out; + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of (a > b) element-wise. Supports broadcasting. + * + * ```js + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([2, 2, 2]); + * + * a.greater(b).print(); + * ``` + * + * @param a The first input tensor. + * @param b The second input tensor. Must have the same dtype as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function greater_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'greater'); + var $b = convertToTensor(b, 'b', 'greater'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend) { return backend.greater($a, $b); }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Greater); + } + var greater = op({ greater_: greater_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var minimumGradConfig = { + kernelName: Minimum, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var derA = function () { return mul(dy, cast(lessEqual(a, b), 'float32')); }; + var derB = function () { return mul(dy, cast(greater(a, b), 'float32')); }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes floor of input `tf.Tensor` element-wise: `floor(x)`. + * + * ```js + * const x = tf.tensor1d([.6, 1.1, -3.3]); + * + * x.floor().print(); // or tf.floor(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function floor_(x) { + var $x = convertToTensor(x, 'x', 'floor'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend) { return backend.floor($x); }, inputs, null /* grad */, Floor); + } + var floor = op({ floor_: floor_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var modGradConfig = { + kernelName: Mod, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + return reshape(sum$1(dy, reduceAxes), a.shape); + } + return dy; + }; + var derB = function () { + var res = mul(dy, neg(floor(div(a, b)))); + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + return reshape(sum$1(res, reduceAxes), b.shape); + } + return res; + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var multiplyGradConfig = { + kernelName: Multiply, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var res = mul(dy, cast(b, 'float32')); + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + return reshape(sum$1(res, reduceAxes), a.shape); + } + return res; + }; + var derB = function () { + var res = mul(dy, cast(a, 'float32')); + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + return reshape(sum$1(res, reduceAxes), b.shape); + } + return res; + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var negateGradConfig = { + kernelName: Negate, + gradFunc: function (dy) { + return { x: function () { return neg(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Converts two real numbers to a complex number. + * + * Given a tensor `real` representing the real part of a complex number, and a + * tensor `imag` representing the imaginary part of a complex number, this + * operation returns complex numbers elementwise of the form [r0, i0, r1, i1], + * where r represents the real part and i represents the imag part. + * + * The input tensors real and imag must have the same shape. + * + * ```js + * const real = tf.tensor1d([2.25, 3.25]); + * const imag = tf.tensor1d([4.75, 5.75]); + * const complex = tf.complex(real, imag); + * + * complex.print(); + * ``` + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function complex_(real, imag) { + var $real = convertToTensor(real, 'real', 'complex'); + var $imag = convertToTensor(imag, 'imag', 'complex'); + assertShapesMatch($real.shape, $imag.shape, "real and imag shapes, " + $real.shape + " and " + $imag.shape + ", " + + "must match in call to tf.complex()."); + var forward = function (backend) { + return backend.complex($real, $imag); + }; + var inputs = { real: $real, imag: $imag }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Complex); + } + var complex = op({ complex_: complex_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a `tf.Tensor` with all elements set to 0. + * + * ```js + * tf.zeros([2, 2]).print(); + * ``` + * + * @param shape An array of integers defining the output tensor shape. + * @param dtype The type of an element in the resulting tensor. Can + * be 'float32', 'int32' or 'bool'. Defaults to 'float'. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function zeros(shape, dtype) { + if (dtype === void 0) { dtype = 'float32'; } + if (dtype === 'complex64') { + var real = zeros(shape, 'float32'); + var imag = zeros(shape, 'float32'); + return complex(real, imag); + } + var values = makeZerosTypedArray(sizeFromShape(shape), dtype); + return ENGINE.makeTensor(values, shape, dtype); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var oneHotGradConfig = { + kernelName: OneHot, + inputsToSave: ['indices'], + gradFunc: function (dy, saved) { + var indices = saved[0]; + return { indices: function () { return zeros(indices.shape, 'float32'); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var onesLikeGradConfig = { + kernelName: OnesLike, + gradFunc: function (dy) { + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var padV2GradConfig = { + kernelName: PadV2, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + // Pad introduces values around the original tensor, so the gradient + // slices the original shape out of the gradient. + var x = saved[0]; + var paddings = attrs.paddings; + var begin = paddings.map(function (p) { return p[0]; }); + return { x: function () { return dy.slice(begin, x.shape); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes natural logarithm of the input `tf.Tensor` element-wise: `ln(x)` + * + * ```js + * const x = tf.tensor1d([1, 2, Math.E]); + * + * x.log().print(); // or tf.log(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function log_(x) { + var $x = convertToTensor(x, 'x', 'log'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.log($x); + save([$x]); + return res; + }, inputs, null /* grad */, Log); + } + var log = op({ log_: log_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the power of one `tf.Tensor` to another. Supports broadcasting. + * + * Given a `tf.Tensor` x and a `tf.Tensor` y, this operation computes x^y for + * corresponding elements in x and y. The result's dtype will be the upcasted + * type of the `base` and `exp` dtypes. + * + * ```js + * const a = tf.tensor([[2, 3], [4, 5]]) + * const b = tf.tensor([[1, 2], [3, 0]]).toInt(); + * + * a.pow(b).print(); // or tf.pow(a, b) + * ``` + * + * ```js + * const a = tf.tensor([[1, 2], [3, 4]]) + * const b = tf.tensor(2).toInt(); + * + * a.pow(b).print(); // or tf.pow(a, b) + * ``` + * We also expose `powStrict` which has the same signature as this op and + * asserts that `base` and `exp` are the same shape (does not broadcast). + * + * @param base The base `tf.Tensor` to pow element-wise. + * @param exp The exponent `tf.Tensor` to pow element-wise. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function pow_(base, exp) { + var _a; + var $base = convertToTensor(base, 'base', 'pow'); + var $exp = convertToTensor(exp, 'exp', 'pow'); + _a = makeTypesMatch($base, $exp), $base = _a[0], $exp = _a[1]; + var inputs = { a: $base, b: $exp }; + var forward = function (backend, save) { + var y = backend.pow($base, $exp); + save([$base, $exp, y]); + return y; + }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Pow); + } + var pow = op({ pow_: pow_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var powGradConfig = { + kernelName: Pow, + inputsToSave: ['a', 'b'], + outputsToSave: [true], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1], y = saved[2]; + var base = a; + var exp = b; + var outShape = assertAndGetBroadcastShape(base.shape, exp.shape); + var derBase = function () { + var expFloat = cast(exp, 'float32'); + var res = mul(dy, mul(expFloat, pow(base, sub(expFloat, scalar(1))))); + var reduceAxes = getReductionAxes(base.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, base.shape); + }; + var derExp = function () { + var condition = greater(base, 0); + var logBase = where(condition, log(base), zerosLike(base)); + var res = mul(dy, mul(y, logBase)); + var reduceAxes = getReductionAxes(exp.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, exp.shape); + }; + return { a: derBase, b: derExp }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var preluGradConfig = { + kernelName: Prelu, + inputsToSave: ['x', 'alpha'], + gradFunc: function (dy, saved) { + var x = saved[0], alpha = saved[1]; + var mask = greater(x, 0); + return { + x: function () { return where(mask, dy, mul(dy, alpha)); }, + alpha: function () { + var res = where(mask, zerosLike(dy), mul(dy, x)); + var reduceAxes = getReductionAxes(alpha.shape, dy.shape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, alpha.shape); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var reciprocalGradConfig = { + kernelName: Reciprocal, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, neg(square(x))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var relu6GradConfig = { + kernelName: Relu6, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + var mask = mul(lessEqual(x, 6), step(x)); + return { x: function () { return mul(dy, cast(mask, 'float32')); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var reluGradConfig = { + kernelName: Relu, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(dy, cast(step(x), 'float32')); } }; + } + }; + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var reshapeGradConfig = { + kernelName: Reshape, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return reshape(dy, x.shape); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var resizeBilinearGradConfig = { + kernelName: ResizeBilinear, + inputsToSave: ['images'], + gradFunc: function (dy, saved, attrs) { + var images = saved[0]; + var backPropKernelFunc = function (backend) { + var alignCorners = attrs.alignCorners; + return backend.resizeBilinearBackprop(dy, images, alignCorners); + }; + var inputs = { images: images }; + var imagesDer = function () { return ENGINE.runKernelFunc(backPropKernelFunc, inputs, null /* gradient */, ResizeBilinearGrad, attrs); }; + return { images: imagesDer }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var resizeNearestNeighborGradConfig = { + kernelName: ResizeNearestNeighbor, + inputsToSave: ['images'], + gradFunc: function (dy, saved, attrs) { + var images = saved[0]; + var backPropKernelFunc = function (backend) { + var alignCorners = attrs.alignCorners; + return backend.resizeNearestNeighborBackprop(dy, images, alignCorners); + }; + var inputs = { images: images }; + var imagesDer = function () { return ENGINE.runKernelFunc(backPropKernelFunc, inputs, null /* gradient */, ResizeNearestNeighborGrad, attrs); }; + return { images: imagesDer }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a new tensor with the same values and shape as the specified + * tensor. + * + * ```js + * const x = tf.tensor([1, 2]); + * + * x.clone().print(); + * ``` + * + * @param x The tensor to clone. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function clone_(x) { + var $x = convertToTensor(x, 'x', 'clone', null); + var forward = function () { + return ENGINE.makeTensorFromDataId($x.dataId, $x.shape, $x.dtype); + }; + var inputs = { x: $x }; + // Note this op is called tf.identity in python. Hence the kernel name used + // here. + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Identity); + } + var clone = op({ clone_: clone_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Reverses a `tf.Tensor` along a specified axis. + * + * Also available are stricter rank-specific methods that assert that `x` is + * of the given rank: + * - `tf.reverse1d` + * - `tf.reverse2d` + * - `tf.reverse3d` + * - `tf.reverse4d` + * + * Except `tf.reverse1d` (which does not have axis param), all methods have + * same signature as this method. + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * + * x.reverse().print(); + * ``` + * + * ```js + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * + * const axis = 1; + * x.reverse(axis).print(); + * ``` + * @param x The input tensor to be reversed. + * @param axis The set of dimensions to reverse. Must be in the + * range [-rank(x), rank(x)). Defaults to all axes. + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function reverse_(x, axis) { + var $x = convertToTensor(x, 'x', 'reverse'); + var forward = function (backend) { + var axes = parseAxisParam(axis, $x.shape); + if ($x.rank === 0) { + return clone($x); + } + var res = backend.reverse($x, axes); + return reshape(res, $x.shape); + }; + var inputs = { x: $x }; + var attrs = { dims: axis }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Reverse, attrs); + } + var reverse = op({ reverse_: reverse_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var reverseGradConfig = { + kernelName: Reverse, + gradFunc: function (dy, saved, attrs) { + var dims = attrs.dims; + var axes = parseAxisParam(dims, dy.shape); + return { x: function () { return reverse(dy, axes); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var roundGradConfig = { + kernelName: Round, + gradFunc: function (dy) { + // TODO(nsthorat): Let gradients be null for cases where we want to stop + // backpropgation. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var rsqrtGradConfig = { + kernelName: Rsqrt, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return neg(div(dy, mul(pow(x, 1.5), 2))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the truth value of `NOT x` element-wise. + * + * ```js + * const a = tf.tensor1d([false, true], 'bool'); + * + * a.logicalNot().print(); + * ``` + * + * @param x The input tensor. Must be of dtype 'bool'. + */ + /** @doc {heading: 'Operations', subheading: 'Logical'} */ + function logicalNot_(x) { + var $x = convertToTensor(x, 'x', 'logicalNot', 'bool'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend) { return backend.logicalNot($x); }, inputs, null /* grad */, LogicalNot); + } + var logicalNot = op({ logicalNot_: logicalNot_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var selectV2PoolGradConfig = { + kernelName: SelectV2, + inputsToSave: ['condition'], + gradFunc: function (dy, saved) { + var condition = saved[0]; + return { + // TODO(julianoks): Return null for condition gradient + // when backprop supports it. + condition: function () { return cast(zerosLike(condition), 'float32'); }, + t: function () { return mul(dy, cast(condition, dy.dtype)); }, + e: function () { return mul(dy, cast(logicalNot(condition), dy.dtype)); } + }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var SELU_SCALEALPHA = 1.7580993408473768599402175208123; + var SELU_SCALE = 1.0507009873554804934193349852946; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var seluGradConfig = { + kernelName: Selu, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { + x: function () { + var mask = greater(x, scalar(0)); + var scaleAlpha = scalar(SELU_SCALEALPHA); + var scale = scalar(SELU_SCALE); + var greaterThanZeroDer = mul(dy, scale); + var lessEqualZeroDer = mul(mul(dy, scaleAlpha), exp(cast(x, 'float32'))); + return where(mask, greaterThanZeroDer, lessEqualZeroDer); + } + }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sigmoidGradConfig = { + kernelName: Sigmoid, + outputsToSave: [true], + gradFunc: function (dy, saved) { + var y = saved[0]; + return { x: function () { return mul(dy, mul(y, sub(scalar(1), y))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var signGradConfig = { + kernelName: Sign, + gradFunc: function (dy) { + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes cos of the input `tf.Tensor` element-wise: `cos(x)` + * + * ```js + * const x = tf.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); + * + * x.cos().print(); // or tf.cos(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function cos_(x) { + var $x = convertToTensor(x, 'x', 'cos'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.cos($x); + save([$x]); + return res; + }, inputs, null /* grad */, Cos); + } + var cos = op({ cos_: cos_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sinGradConfig = { + kernelName: Sin, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(cos(cast(x, 'float32')), dy); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes hyperbolic cos of the input `tf.Tensor` element-wise: `cosh(x)` + * + * ```js + * const x = tf.tensor1d([0, 1, -1, .7]); + * + * x.cosh().print(); // or tf.cosh(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function cosh_(x) { + var $x = convertToTensor(x, 'x', 'cosh'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.cosh($x); + save([$x]); + return res; + }, inputs, null /* grad */, Cosh); + } + var cosh = op({ cosh_: cosh_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sinhGradConfig = { + kernelName: Sinh, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(cosh(cast(x, 'float32')), dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Pads a `tf.Tensor` with a given value and paddings. + * + * This operation currently only implements the `CONSTANT` mode. + * + * Also available are stricter rank-specific methods with the same signature + * as this method that assert that `paddings` is of given length. + * - `tf.pad1d` + * - `tf.pad2d` + * - `tf.pad3d` + * - `tf.pad4d` + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * x.pad([[1, 2]]).print(); + * ``` + * @param x The tensor to pad. + * @param paddings An array of length `R` (the rank of the tensor), where + * each element is a length-2 tuple of ints `[padBefore, padAfter]`, + * specifying how much to pad along each dimension of the tensor. + * @param constantValue The pad value to use. Defaults to 0. + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function pad_(x, paddings, constantValue) { + if (constantValue === void 0) { constantValue = 0; } + var $x = convertToTensor(x, 'x', 'pad'); + if ($x.rank === 0) { + throw new Error('pad(scalar) is not defined. Pass non-scalar to pad'); + } + var forward = function (backend, save) { + save([$x]); + return backend.pad($x, paddings, constantValue); + }; + var attrs = { paddings: paddings, constantValue: constantValue }; + var inputs = { x: $x }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, PadV2, attrs); + } + var pad = op({ pad_: pad_ }); + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function assertParamsValid(input, begin, size) { + assert(input.rank === begin.length, function () { return "Error in slice" + input.rank + "D: Length of begin " + begin + " must " + + ("match the rank of the array (" + input.rank + ")."); }); + assert(input.rank === size.length, function () { return "Error in slice" + input.rank + "D: Length of size " + size + " must " + + ("match the rank of the array (" + input.rank + ")."); }); + var _loop_1 = function (i) { + assert(begin[i] + size[i] <= input.shape[i], function () { return "Error in slice" + input.rank + "D: begin[" + i + "] + size[" + i + "] " + + ("(" + (begin[i] + size[i]) + ") would overflow input.shape[" + i + "] (" + input.shape[i] + ")"); }); + }; + for (var i = 0; i < input.rank; ++i) { + _loop_1(i); + } + } + /** Converts a binary mask to an array of axes. Used in stridedSlice(). */ + function maskToAxes(mask) { + var axes = []; + var axis = 0; + while (mask > 0) { + if (mask & 1) { + axes.push(axis); + } + mask /= 2; + axis++; + } + return axes; + } + /** Computes the output shape given the strided slice params. */ + function computeOutShape(begin, end, strides) { + var size = []; + for (var axis = 0; axis < begin.length; axis++) { + size[axis] = Math.ceil((end[axis] - begin[axis]) / strides[axis]); + } + return size; + } + // Creates full selection at the elided dimensions. If the dimension matches + // the ellipsis mask, override the current stride value. Otherwise, insert. + function stridesWithElidedDims(strides, ellipsisInsertionIndex, numElidedAxes, inputShape) { + var newStrides = strides.slice(); + for (var i = newStrides.length; i < inputShape.length; i++) { + newStrides.push(1); + } + for (var i = 0; i < numElidedAxes; i++) { + if (i === 0) { + newStrides[ellipsisInsertionIndex] = 1; + } + else { + newStrides.splice(ellipsisInsertionIndex, 0 /* num elements to delete */, 1 /* element to add */); + newStrides.pop(); + } + } + return newStrides; + } + function unnormalizeAxis(ellipsisInsertionIndex, numElidedAxes, normalizedAxis) { + if (normalizedAxis <= ellipsisInsertionIndex) { + return normalizedAxis; + } + return normalizedAxis - (numElidedAxes - 1); + } + function getElidedAxes(numElidedAxes, ellipsisInsertionIndex) { + var elidedAxes = []; + for (var i = 0; i < numElidedAxes; i++) { + elidedAxes.push(ellipsisInsertionIndex + i); + } + return elidedAxes; + } + // Creates full selection at the elided dimensions. If the dimension matches + // the ellipsis mask, override the current start value. Otherwise, insert. + function startIndicesWithElidedDims(beginMask, ellipsisInsertionIndex, numElidedAxes, originalBegin, inputShape) { + var newIndices = inputShape.slice(); + var elidedAxes = getElidedAxes(numElidedAxes, ellipsisInsertionIndex); + for (var axis = 0; axis < newIndices.length; axis++) { + if (elidedAxes.indexOf(axis) > -1) { + newIndices[axis] = 0; + } + else { + var originalAxis = unnormalizeAxis(ellipsisInsertionIndex, numElidedAxes, axis); + var originalValue = originalBegin[originalAxis]; + if (beginMask & 1 << originalAxis) { + originalValue = 0; + } + newIndices[axis] = originalValue; + } + } + return newIndices; + } + // Creates full selection at the elided dimensions. If the dimension matches + // the ellipsis mask, override the current stop value. Otherwise, insert. + function stopIndicesWithElidedDims(endMask, ellipsisInsertionIndex, numElidedAxes, originalEnd, inputShape) { + var newIndices = inputShape.slice(); + var elidedAxes = getElidedAxes(numElidedAxes, ellipsisInsertionIndex); + for (var axis = 0; axis < newIndices.length; axis++) { + if (elidedAxes.indexOf(axis) > -1) { + newIndices[axis] = Number.MAX_SAFE_INTEGER; + } + else { + var originalAxis = unnormalizeAxis(ellipsisInsertionIndex, numElidedAxes, axis); + var originalValue = originalEnd[originalAxis]; + if (endMask & 1 << originalAxis) { + originalValue = Number.MAX_SAFE_INTEGER; + } + newIndices[axis] = originalValue; + } + } + for (var i = 0; i < newIndices.length; i++) { + // Handle negative indices + var axisSize = inputShape[i]; + if (newIndices[i] < 0) { + newIndices[i] += axisSize; + } + newIndices[i] = clamp(0, newIndices[i], inputShape[i]); + } + return newIndices; + } + function stridesForAxis(strides, axis, ellipsisMask) { + var stride = strides[axis]; + if (ellipsisMask & (1 << axis) || stride == null) { + stride = 1; + } + return stride; + } + function startForAxis(beginMask, startIndices, strides, inputShape, axis, ellipsisMask) { + // Begin with the specified index + var start = startIndices[axis]; + var stride = strides[axis] || 1; + // Check the axis bit from right of masked axes, or the begin index is not set + // for the axis. + if (beginMask & 1 << axis || ellipsisMask & 1 << axis || start == null) { + if (stride > 0) { + // Forward iteration - use the first element. These values will get + // clamped below (Note: We could have set them to 0 and axis_size-1, but + // use lowest() and max() to maintain symmetry with StopForAxis()) + start = Number.MIN_SAFE_INTEGER; + } + else { + // Backward iteration - use the last element. + start = Number.MAX_SAFE_INTEGER; + } + } + // Handle negative indices + var axisSize = inputShape[axis]; + if (start < 0) { + start += axisSize; + } + // Clamping + start = clamp(0, start, axisSize - 1); + return start; + } + function stopForAxis(endMask, stopIndices, strides, inputShape, axis, ellipsisMask) { + // Begin with the specified index + var stop = stopIndices[axis]; + var stride = strides[axis] || 1; + // Check the axis bit from right of masked axes, or if the stop index is not + // set for this axis. + if (endMask & (1 << axis) || ellipsisMask & (1 << axis) || stop == null) { + if (stride > 0) { + // Forward iteration - use the last element. These values will get + // clamped below + stop = Number.MAX_SAFE_INTEGER; + } + else { + // Backward iteration - use the first element. + stop = Number.MIN_SAFE_INTEGER; + } + } + // Handle negative indices + var axisSize = inputShape[axis]; + if (stop < 0) { + stop += axisSize; + } + // Clamping + // Because the end index points one past the last element, we need slightly + // different clamping ranges depending on the direction. + if (stride > 0) { + // Forward iteration + stop = clamp(0, stop, axisSize); + } + else { + // Backward iteration + stop = clamp(-1, stop, axisSize - 1); + } + return stop; + } + /** + * Returns true if the slice occupies a continous set of elements in the + * 'flat' space. + */ + function isSliceContinous(shape, begin, size) { + // Index of the first axis that has size > 1. + var firstNonOneAxis = size.length; + for (var i = 0; i < size.length; i++) { + if (size[i] > 1) { + firstNonOneAxis = i; + break; + } + } + for (var i = firstNonOneAxis + 1; i < size.length; i++) { + if (begin[i] > 0 || size[i] !== shape[i]) { + return false; + } + } + return true; + } + function computeFlatOffset(begin, strides) { + var flatOffset = begin.length > 0 ? begin[begin.length - 1] : 1; + for (var i = 0; i < begin.length - 1; i++) { + flatOffset += begin[i] * strides[i]; + } + return flatOffset; + } + function parseSliceParams(x, begin, size) { + // The following logic allows for more ergonomic calls. + var begin_; + if (typeof begin === 'number') { + begin_ = [begin].concat(new Array(x.rank - 1).fill(0)); + } + else if (begin.length < x.rank) { + begin_ = begin.concat(new Array(x.rank - begin.length).fill(0)); + } + else { + begin_ = begin.slice(); + } + begin_.forEach(function (d) { + assert(d !== -1, function () { return 'slice() does not support negative begin indexing.'; }); + }); + var size_; + if (size == null) { + size_ = new Array(x.rank).fill(-1); + } + else if (typeof size === 'number') { + size_ = [size].concat(new Array(x.rank - 1).fill(-1)); + } + else if (size.length < x.rank) { + size_ = size.concat(new Array(x.rank - size.length).fill(-1)); + } + else { + size_ = size; + } + size_ = size_.map(function (d, i) { + if (d >= 0) { + return d; + } + else { + assert(d === -1, function () { return "Negative size values should be exactly -1 but got " + + (d + " for the slice() size at index " + i + "."); }); + return x.shape[i] - begin_[i]; + } + }); + return [begin_, size_]; + } + + var slice_util = { + __proto__: null, + assertParamsValid: assertParamsValid, + maskToAxes: maskToAxes, + computeOutShape: computeOutShape, + stridesWithElidedDims: stridesWithElidedDims, + startIndicesWithElidedDims: startIndicesWithElidedDims, + stopIndicesWithElidedDims: stopIndicesWithElidedDims, + stridesForAxis: stridesForAxis, + startForAxis: startForAxis, + stopForAxis: stopForAxis, + isSliceContinous: isSliceContinous, + computeFlatOffset: computeFlatOffset, + parseSliceParams: parseSliceParams + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sliceGradConfig = { + kernelName: Slice, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var _a = attrs, begin = _a.begin, size = _a.size; + var inputShape = x.shape; + var _b = parseSliceParams(x, begin, size), begin_ = _b[0], size_ = _b[1]; + // Create an Nx2 padding where the first column represents how many + // zeros are prepended (at start) for each dimension, and the second + // column indicates how many zeros are appended (at end). + // The number of zeros to append is the shape of the input + // elementwise-subtracted by both the begin vector and sizes vector. + var paddings = []; + for (var i = 0; i < dy.rank; i++) { + paddings.push([begin_[i], inputShape[i] - begin_[i] - size_[i]]); + } + return { x: function () { return pad(dy, paddings); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var softmaxGradConfig = { + kernelName: Softmax, + outputsToSave: [true], + gradFunc: function (dy, saved, attrs) { + var y = saved[0]; + var dim = attrs.dim; + var keepDims = true; + var dyTimesY = mul(dy, y); + return { + logits: function () { return sub(dyTimesY, mul(sum$1(dyTimesY, [dim], keepDims), y)); } + }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes sigmoid element-wise, `1 / (1 + exp(-x))` + * + * ```js + * const x = tf.tensor1d([0, -1, 2, -3]); + * + * x.sigmoid().print(); // or tf.sigmoid(x) + * ``` + * @param x The input tensor. + */ + /** @doc {heading: 'Operations', subheading: 'Basic math'} */ + function sigmoid_(x) { + var $x = convertToTensor(x, 'x', 'sigmoid'); + var inputs = { x: $x }; + return ENGINE.runKernelFunc(function (backend, save) { + var res = backend.sigmoid($x); + save([res]); + return res; + }, inputs, null /* grad */, Sigmoid); + } + var sigmoid = op({ sigmoid_: sigmoid_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var softplusGradConfig = { + kernelName: Softplus, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(dy, sigmoid(x)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * This operation reshapes the "batch" dimension 0 into `M + 1` dimensions of + * shape `blockShape + [batch]`, interleaves these blocks back into the grid + * defined by the spatial dimensions `[1, ..., M]`, to obtain a result with + * the same rank as the input. The spatial dimensions of this intermediate + * result are then optionally cropped according to `crops` to produce the + * output. This is the reverse of `tf.spaceToBatchND`. See below for a precise + * description. + * + * ```js + * const x = tf.tensor4d([1, 2, 3, 4], [4, 1, 1, 1]); + * const blockShape = [2, 2]; + * const crops = [[0, 0], [0, 0]]; + * + * x.batchToSpaceND(blockShape, crops).print(); + * ``` + * + * @param x A `tf.Tensor`. N-D with `x.shape` = `[batch] + spatialShape + + * remainingShape`, where spatialShape has `M` dimensions. + * @param blockShape A 1-D array. Must have shape `[M]`, all values must + * be >= 1. + * @param crops A 2-D array. Must have shape `[M, 2]`, all values must be >= 0. + * `crops[i] = [cropStart, cropEnd]` specifies the amount to crop from input + * dimension `i + 1`, which corresponds to spatial dimension `i`. It is required + * that `cropStart[i] + cropEnd[i] <= blockShape[i] * inputShape[i + 1]` + * + * This operation is equivalent to the following steps: + * + * 1. Reshape `x` to `reshaped` of shape: `[blockShape[0], ..., + * blockShape[M-1], batch / prod(blockShape), x.shape[1], ..., + * x.shape[N-1]]` + * + * 2. Permute dimensions of `reshaped`to produce `permuted` of shape `[batch / + * prod(blockShape),x.shape[1], blockShape[0], ..., x.shape[M], + * blockShape[M-1],x.shape[M+1], ..., x.shape[N-1]]` + * + * 3. Reshape `permuted` to produce `reshapedPermuted` of shape `[batch / + * prod(blockShape),x.shape[1] * blockShape[0], ..., x.shape[M] * + * blockShape[M-1],x.shape[M+1], ..., x.shape[N-1]]` + * + * 4. Crop the start and end of dimensions `[1, ..., M]` of `reshapedPermuted` + * according to `crops` to produce the output of shape: `[batch / + * prod(blockShape),x.shape[1] * blockShape[0] - crops[0,0] - crops[0,1], + * ..., x.shape[M] * blockShape[M-1] - crops[M-1,0] - + * crops[M-1,1],x.shape[M+1], ..., x.shape[N-1]]` + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function batchToSpaceND_(x, blockShape, crops) { + var $x = convertToTensor(x, 'x', 'batchToSpaceND'); + var prod = blockShape.reduce(function (a, b) { return a * b; }); + assert($x.rank >= 1 + blockShape.length, function () { return "input rank is " + $x.rank + " but should be > than blockShape.length " + blockShape.length; }); + assert(crops.length === blockShape.length, function () { return "crops.length is " + crops.length + " but should be equal to blockShape.length " + blockShape.length; }); + assert($x.shape[0] % prod === 0, function () { return "input tensor batch is " + $x.shape[0] + " but is not divisible by the product of " + + ("the elements of blockShape " + blockShape.join(' * ') + " === " + prod); }); + var forward = function (backend) { + return backend.batchToSpaceND($x, blockShape, crops); + }; + var inputs = { x: $x }; + var attrs = { blockShape: blockShape, crops: crops }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, BatchToSpaceND, attrs); + } + var batchToSpaceND = op({ batchToSpaceND_: batchToSpaceND_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var spaceToBatchNDGradConfig = { + kernelName: SpaceToBatchND, + gradFunc: function (dy, saved, attrs) { + var _a = attrs, blockShape = _a.blockShape, paddings = _a.paddings; + return { x: function () { return batchToSpaceND(dy, blockShape, paddings); } }; + } + }; + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function assertParamsConsistent(shapes, axis) { + var rank = shapes[0].length; + shapes.forEach(function (shape, i) { + assert(shape.length === rank, function () { + return "Error in concat" + rank + "D: rank of tensors[" + i + "] must be the same " + + ("as the rank of the rest (" + rank + ")"); + }); + }); + assert(axis >= 0 && axis < rank, function () { return "Error in concat" + rank + "D: axis must be between 0 and " + (rank - 1) + "."; }); + var firstShape = shapes[0]; + shapes.forEach(function (shape, i) { + for (var r = 0; r < rank; r++) { + assert((r === axis) || (shape[r] === firstShape[r]), function () { return "Error in concat" + rank + "D: Shape of tensors[" + i + "] (" + shape + ") " + + ("does not match the shape of the rest (" + firstShape + ") ") + + ("along the non-concatenated axis " + i + "."); }); + } + }); + } + function computeOutShape$1(shapes, axis) { + var outputShape = shapes[0].slice(); + for (var i = 1; i < shapes.length; i++) { + outputShape[axis] += shapes[i][axis]; + } + return outputShape; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a `tf.Tensor` with the provided values, shape and dtype. + * + * ```js + * // Pass an array of values to create a vector. + * tf.tensor([1, 2, 3, 4]).print(); + * ``` + * + * ```js + * // Pass a nested array of values to make a matrix or a higher + * // dimensional tensor. + * tf.tensor([[1, 2], [3, 4]]).print(); + * ``` + * + * ```js + * // Pass a flat array and specify a shape yourself. + * tf.tensor([1, 2, 3, 4], [2, 2]).print(); + * ``` + * + * @param values The values of the tensor. Can be nested array of numbers, + * or a flat array, or a `TypedArray`. If the values are strings, + * they will be encoded as utf-8 and kept as `Uint8Array[]`. + * @param shape The shape of the tensor. Optional. If not provided, + * it is inferred from `values`. + * @param dtype The data type. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function tensor(values, shape, dtype) { + var inferredShape = inferShape(values, dtype); + return makeTensor(values, shape, inferredShape, dtype); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Concatenates a list of `tf.Tensor`s along a given axis. + * + * The tensors ranks and types must match, and their sizes must match in all + * dimensions except `axis`. + * + * Also available are stricter rank-specific methods that assert that + * `tensors` are of the given rank: + * - `tf.concat1d` + * - `tf.concat2d` + * - `tf.concat3d` + * - `tf.concat4d` + * + * Except `tf.concat1d` (which does not have axis param), all methods have + * same signature as this method. + * + * ```js + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); + * a.concat(b).print(); // or a.concat(b) + * ``` + * + * ```js + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); + * const c = tf.tensor1d([5, 6]); + * tf.concat([a, b, c]).print(); + * ``` + * + * ```js + * const a = tf.tensor2d([[1, 2], [10, 20]]); + * const b = tf.tensor2d([[3, 4], [30, 40]]); + * const axis = 1; + * tf.concat([a, b], axis).print(); + * ``` + * @param tensors A list of tensors to concatenate. + * @param axis The axis to concate along. Defaults to 0 (the first dim). + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function concat_(tensors, axis) { + if (axis === void 0) { axis = 0; } + assert(tensors.length >= 1, function () { return 'Pass at least one tensor to concat'; }); + var $tensors = convertToTensorArray(tensors, 'tensors', 'concat'); + if ($tensors[0].dtype === 'complex64') { + $tensors.forEach(function (tensor) { + if (tensor.dtype !== 'complex64') { + throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype " + tensor.dtype + ". "); + } + }); + } + var $axis = parseAxisParam(axis, $tensors[0].shape)[0]; + var outShape = computeOutShape$1($tensors.map(function (t) { return t.shape; }), $axis); + if (sizeFromShape(outShape) === 0) { + return tensor([], outShape); + } + // Keep only non-empty tensors (ignore tensors with 0 in their shape). + $tensors = $tensors.filter(function (t) { return t.size > 0; }); + if ($tensors.length === 1) { + return $tensors[0]; + } + var shapes = $tensors.map(function (t) { return t.shape; }); + assertParamsConsistent(shapes, $axis); + var forward = function (backend, save) { + var res = backend.concat($tensors, $axis); + save($tensors); + return res; + }; + var inputs = $tensors; + var attr = { axis: axis }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Concat, attr); + } + var concat = op({ concat_: concat_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var splitVGradConfig = { + kernelName: SplitV, + gradFunc: function (dy, saved, attrs) { + var axis = attrs.axis; + return { x: function () { return concat(dy, axis); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sqrtGradConfig = { + kernelName: Sqrt, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, mul(sqrt(cast(x, 'float32')), 2)); } }; + } + }; + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var squareGradConfig = { + kernelName: Square, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return mul(dy, mul(x.toFloat(), 2)); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var squaredDifferenceGradConfig = { + kernelName: SquaredDifference, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var two = scalar(2); + var derA = function () { return mul(dy, mul(two, sub(a, b))); }; + var derB = function () { return mul(dy, mul(two, sub(b, a))); }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var stepGradConfig = { + kernelName: Step, + gradFunc: function (dy) { + // TODO(manrajgrover): Return null for gradients when backprop supports + // it. + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var subGradConfig = { + kernelName: Sub, + inputsToSave: ['a', 'b'], + gradFunc: function (dy, saved) { + var a = saved[0], b = saved[1]; + var outShape = assertAndGetBroadcastShape(a.shape, b.shape); + var derA = function () { + var res = dy; + var reduceAxes = getReductionAxes(a.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(res, a.shape); + }; + var derB = function () { + var res = dy; + var reduceAxes = getReductionAxes(b.shape, outShape); + if (reduceAxes.length > 0) { + res = sum$1(res, reduceAxes); + } + return reshape(neg(res), b.shape); + }; + return { a: derA, b: derB }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a `tf.Tensor` with all elements set to 1. + * + * ```js + * tf.ones([2, 2]).print(); + * ``` + * + * @param shape An array of integers defining the output tensor shape. + * @param dtype The type of an element in the resulting tensor. Defaults to + * 'float'. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function ones$1(shape, dtype) { + if (dtype === void 0) { dtype = 'float32'; } + if (dtype === 'complex64') { + var real = ones$1(shape, 'float32'); + var imag = zeros(shape, 'float32'); + return complex(real, imag); + } + var values = makeOnesTypedArray(sizeFromShape(shape), dtype); + return ENGINE.makeTensor(values, shape, dtype); + } + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var sumGradConfig = { + kernelName: Sum, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var expandedDyShape = x.shape.slice(); + var axis = attrs.axis; + var axes = parseAxisParam(axis, x.shape); + axes.forEach(function (axis) { + expandedDyShape[axis] = 1; + }); + var expandedDy = reshape(dy, expandedDyShape); + var derX = mul(expandedDy, ones$1(x.shape, 'float32')); + return { x: function () { return derX; } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var tanGradConfig = { + kernelName: Tan, + inputsToSave: ['x'], + gradFunc: function (dy, saved) { + var x = saved[0]; + return { x: function () { return div(dy, square(cos(x))); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var tanhGradConfig = { + kernelName: Tanh, + outputsToSave: [true], + gradFunc: function (dy, saved) { + var y = saved[0]; + return { x: function () { return mul(sub(scalar(1), square(y)), dy); } }; + } + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Extracts a slice from a `tf.Tensor` starting at coordinates `begin` + * and is of size `size`. + * + * Also available are stricter rank-specific methods with the same signature + * as this method that assert that `x` is of the given rank: + * - `tf.slice1d` + * - `tf.slice2d` + * - `tf.slice3d` + * - `tf.slice4d` + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * + * x.slice([1], [2]).print(); + * ``` + * + * ```js + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * + * x.slice([1, 0], [1, 2]).print(); + * ``` + * @param x The input `tf.Tensor` to slice from. + * @param begin The coordinates to start the slice from. The length can be + * less than the rank of x - the rest of the axes will have implicit 0 as + * start. Can also be a single number, in which case it specifies the + * first axis. + * @param size The size of the slice. The length can be less than the rank of + * x - the rest of the axes will have implicit -1. A value of -1 requests + * the rest of the dimensions in the axis. Can also be a single number, + * in which case it specifies the size of the first axis. + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function slice_(x, begin, size) { + var $x = convertToTensor(x, 'x', 'slice'); + if ($x.rank === 0) { + throw new Error('Slicing scalar is not possible'); + } + var _a = parseSliceParams($x, begin, size), begin_ = _a[0], size_ = _a[1]; + assertParamsValid($x, begin_, size_); + var forward = function (backend, save) { + save([$x]); + return backend.slice($x, begin_, size_); + }; + var inputs = { x: $x }; + var attrs = { begin: begin, size: size }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, Slice, attrs); + } + var slice = op({ slice_: slice_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var tileGradConfig = { + kernelName: Tile, + inputsToSave: ['x'], + gradFunc: function (dy, saved, attrs) { + var x = saved[0]; + var reps = attrs.reps; + var derX = function () { + var xGrad = zerosLike(x); + // TODO(cais): Maybe reduce memory footprint by avoiding repeated + // slicing. + if (x.rank === 1) { + for (var i = 0; i < reps[0]; ++i) { + xGrad = add(xGrad, slice(dy, [i * x.shape[0]], [x.shape[0]])); + } + } + else if (x.rank === 2) { + for (var i = 0; i < reps[0]; ++i) { + for (var j = 0; j < reps[1]; ++j) { + xGrad = add(xGrad, slice(dy, [i * x.shape[0], j * x.shape[1]], [ + x.shape[0], x.shape[1] + ])); + } + } + } + else if (x.rank === 3) { + for (var i = 0; i < reps[0]; ++i) { + for (var j = 0; j < reps[1]; ++j) { + for (var k = 0; k < reps[2]; ++k) { + xGrad = + add(xGrad, slice(dy, [i * x.shape[0], j * x.shape[1], k * x.shape[2]], [x.shape[0], x.shape[1], x.shape[2]])); + } + } + } + } + else if (x.rank === 4) { + for (var i = 0; i < reps[0]; ++i) { + for (var j = 0; j < reps[1]; ++j) { + for (var k = 0; k < reps[2]; ++k) { + for (var l = 0; l < reps[3]; ++l) { + xGrad = + add(xGrad, slice(dy, [ + i * x.shape[0], j * x.shape[1], k * x.shape[2], + l * x.shape[3] + ], [x.shape[0], x.shape[1], x.shape[2], x.shape[3]])); + } + } + } + } + } + else { + throw new Error("Gradient for tile operation is not implemented for rank-" + + (x.rank + " tensors yet.")); + } + return xGrad; + }; + return { x: derX }; + }, + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var transposeGradConfig = { + kernelName: Transpose, + gradFunc: function (dy, saved, attrs) { + var transposeAttrs = attrs; + var perm = transposeAttrs.perm; + var undoPerm = getUndoAxesPermutation(perm); + return { x: function () { return transpose(dy, undoPerm); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns a `tf.Tensor` that has expanded rank, by inserting a dimension + * into the tensor's shape. + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * const axis = 1; + * x.expandDims(axis).print(); + * ``` + * + * @param x The input tensor whose dimensions to be expanded. + * @param axis The dimension index at which to insert shape of `1`. Defaults + * to 0 (the first dimension). + */ + /** @doc {heading: 'Tensors', subheading: 'Transformations'} */ + function expandDims_(x, axis) { + if (axis === void 0) { axis = 0; } + var parseAs = null; + var $x = convertToTensor(x, 'x', 'expandDims', parseAs); + assert(axis <= $x.rank, function () { return 'Axis must be <= rank of the tensor'; }); + var newShape = $x.shape.slice(); + if (axis < 0) { + // Negative value is counted from the tail of rank. + assert(-($x.rank + 1) <= axis, function () { return "Axis must be in the interval [" + -($x.rank + 1) + ", " + $x.rank + "]"; }); + axis = $x.rank + axis + 1; + } + newShape.splice(axis, 0, 1); + return reshape($x, newShape); + } + var expandDims = op({ expandDims_: expandDims_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Stacks a list of rank-`R` `tf.Tensor`s into one rank-`(R+1)` `tf.Tensor`. + * + * ```js + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); + * const c = tf.tensor1d([5, 6]); + * tf.stack([a, b, c]).print(); + * ``` + * + * @param tensors A list of tensor objects with the same shape and dtype. + * @param axis The axis to stack along. Defaults to 0 (the first dim). + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function stack_(tensors, axis) { + if (axis === void 0) { axis = 0; } + var $tensors = convertToTensorArray(tensors, 'tensors', 'stack'); + assert($tensors.length >= 1, function () { return 'Pass at least one tensor to tf.stack'; }); + if ($tensors.length === 1) { + return expandDims($tensors[0], axis); + } + var rank = $tensors[0].rank; + var shape = $tensors[0].shape; + var dtype = $tensors[0].dtype; + assert(axis <= rank, function () { return 'Axis must be <= rank of the tensor'; }); + $tensors.forEach(function (t) { + assertShapesMatch(shape, t.shape, 'All tensors passed to stack must have matching shapes'); + assert(dtype === t.dtype, function () { return 'All tensors passed to stack must have matching dtypes'; }); + }); + var expandedTensors = $tensors.map(function (t) { return expandDims(t, axis); }); + // Stack exists in the TensorFlow C++ API + // (https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/stack) but not + // in + // https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/core/ops/ops.pbtxt. + // Therefore we are treating it like a high-level op rather than + // creating a dedicated stack kernel. + return concat(expandedTensors, axis); + } + var stack = op({ stack_: stack_ }); + + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var unpackGradConfig = { + kernelName: Unpack, + gradFunc: function (dy, saved, attrs) { + var unpackAttrs = attrs; + var axis = unpackAttrs.axis; + return { value: function () { return stack(dy, axis); } }; + } + }; + + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PARALLELIZE_THRESHOLD = 30; + function computeOptimalWindowSize(inSize) { + if (inSize <= PARALLELIZE_THRESHOLD) { + return inSize; + } + return nearestDivisor(inSize, Math.floor(Math.sqrt(inSize))); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function segOpComputeOptimalWindowSize(inSize, numSegments) { + var done = false; + var res; + if (inSize <= PARALLELIZE_THRESHOLD) { + res = inSize; + done = true; + } + else { + res = nearestDivisor(inSize, Math.floor(Math.sqrt(inSize))); + } + while (!done) { + if (res > numSegments || res === inSize) { + done = true; + } + else { + res = nearestDivisor(inSize, res + 1); + } + } + return res; + } + function computeOutShape$2(aShape, axis, numSegments) { + var outShape = []; + var rank = aShape.length; + for (var dim = 0; dim < rank; dim++) { + if (dim !== axis) { + outShape.push(aShape[dim]); + } + else { + outShape.push(numSegments); + } + } + return outShape; + } + function collectGatherOpShapeInfo(x, indices, axis) { + var dimSize = x.shape[axis]; + var outputShape = []; + var batchSize = 1; + var sliceSize = 1; + for (var i = 0; i < axis; i++) { + outputShape.push(x.shape[i]); + batchSize *= x.shape[i]; + } + for (var i = 0; i < indices.rank; i++) { + outputShape.push(indices.shape[i]); + } + for (var i = axis + 1; i < x.rank; i++) { + outputShape.push(x.shape[i]); + sliceSize *= x.shape[i]; + } + return { batchSize: batchSize, sliceSize: sliceSize, dimSize: dimSize, outputShape: outputShape }; + } + + var segment_util = { + __proto__: null, + segOpComputeOptimalWindowSize: segOpComputeOptimalWindowSize, + computeOutShape: computeOutShape$2, + collectGatherOpShapeInfo: collectGatherOpShapeInfo + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Gather slices from tensor `x`'s axis `axis` according to `indices`. + * + * ```js + * const x = tf.tensor1d([1, 2, 3, 4]); + * const indices = tf.tensor1d([1, 3, 3], 'int32'); + * + * x.gather(indices).print(); + * ``` + * + * ```js + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * const indices = tf.tensor1d([1, 1, 0], 'int32'); + * + * x.gather(indices).print(); + * ``` + * @param x The input tensor whose slices to be gathered. + * @param indices The indices of the values to extract. + * @param axis The axis over which to select values. Defaults to 0. + */ + /** @doc {heading: 'Tensors', subheading: 'Slicing and Joining'} */ + function gather_(x, indices, axis) { + if (axis === void 0) { axis = 0; } + var $x = convertToTensor(x, 'x', 'gather'); + var $indices = convertToTensor(indices, 'indices', 'gather', 'int32'); + var inputs = { x: $x, indices: $indices }; + var attrs = { axis: axis }; + var forward = function (backend, save) { + var parsedAxis = parseAxisParam(axis, $x.shape)[0]; + var shapeInfo = collectGatherOpShapeInfo($x, $indices, parsedAxis); + var res = backend.gather($x, $indices.flatten(), parsedAxis); + save([$x, $indices]); + return res.reshape(shapeInfo.outputShape); + }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, GatherV2, attrs); + } + var gather = op({ gather_: gather_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Returns the max of a and b (`a > b ? a : b`) element-wise. + * Supports broadcasting. + * + * We also expose `tf.maximumStrict` which has the same signature as this op and + * asserts that `a` and `b` are the same shape (does not broadcast). + * + * ```js + * const a = tf.tensor1d([1, 4, 3, 16]); + * const b = tf.tensor1d([1, 2, 9, 4]); + * + * a.maximum(b).print(); // or tf.maximum(a, b) + * ``` + * + * ```js + * // Broadcast maximum a with b. + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(5); + * + * a.maximum(b).print(); // or tf.maximum(a, b) + * ``` + * + * @param a The first tensor. + * @param b The second tensor. Must have the same type as `a`. + */ + /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */ + function maximum_(a, b) { + var _a; + var $a = convertToTensor(a, 'a', 'maximum'); + var $b = convertToTensor(b, 'b', 'maximum'); + _a = makeTypesMatch($a, $b), $a = _a[0], $b = _a[1]; + if ($a.dtype === 'bool') { + $a = cast($a, 'int32'); + $b = cast($b, 'int32'); + } + assertAndGetBroadcastShape($a.shape, $b.shape); + var forward = function (backend, save) { + var res = backend.maximum($a, $b); + save([$a, $b]); + return res; + }; + var inputs = { a: $a, b: $b }; + return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Maximum); + } + var maximum = op({ maximum_: maximum_ }); + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var unsortedSegmentSumGradConfig = { + kernelName: UnsortedSegmentSum, + inputsToSave: ['segmentIds'], + gradFunc: function (dy, saved) { + var segmentIds = saved[0]; + var derX = function () { + return gatherDropNegatives(dy, segmentIds); + }; + return { x: derX }; + } + }; + function gatherDropNegatives(x, indices) { + // Helper function for unsorted segment ops. Gathers params for + // positive segment ids and gathers 0 for inputs with negative segment id. + // Mirrors _GatherDropNegatives from tensorflow/python/ops/math_grad.py + var zeroClippedIndices = maximum(indices, zerosLike(indices)); + var gathered = gather(x, zeroClippedIndices); + var isPositive = greaterEqual(indices, scalar(0, 'int32')); + var numIters = gathered.rank - isPositive.rank; + for (var i = 0; i < numIters; ++i) { + isPositive = expandDims(isPositive, i + 1); + } + isPositive = logicalAnd(isPositive, ones$1(gathered.shape, 'bool')); + var zeroSlice = zerosLike(gathered); + return where(isPositive, gathered, zeroSlice); + } + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var zerosLikeGradConfig = { + kernelName: ZerosLike, + gradFunc: function (dy) { + return { x: function () { return zerosLike(dy); } }; + } + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // Export all kernel configs here so that the package can auto register them + var gradConfigs = [ + absGradConfig, + acosGradConfig, + acoshGradConfig, + addGradConfig, + addNGradConfig, + argMaxGradConfig, + argMinGradConfig, + asinGradConfig, + asinhGradConfig, + atan2GradConfig, + atanGradConfig, + atanhGradConfig, + avgPool3DGradConfig, + avgPoolGradConfig, + batchMatMulGradConfig, + batchToSpaceNDGradConfig, + broadcastToGradConfig, + castGradConfig, + ceilGradConfig, + clipByValueGradConfig, + concatGradConfig, + conv2DBackpropInputGradConfig, + conv2DGradConfig, + conv3DGradConfig, + cosGradConfig, + coshGradConfig, + cumsumGradConfig, + depthwiseConv2dNativeGradConfig, + dilation2dGradConfig, + divGradConfig, + eluGradConfig, + erfGradConfig, + expGradConfig, + expm1GradConfig, + floorDivGradConfig, + floorGradConfig, + fusedBatchNormGradConfig, + gatherGradConfig, + greaterEqualGradConfig, + identityGradConfig, + isFiniteGradConfig, + isInfGradConfig, + isNanGradConfig, + log1pGradConfig, + logGradConfig, + logSoftmaxGradConfig, + lrnGradConfig, + maxGradConfig, + maxGradConfig, + maximumGradConfig, + maxPool3DGradConfig, + maxPoolGradConfig, + minGradConfig, + minimumGradConfig, + modGradConfig, + multiplyGradConfig, + negateGradConfig, + oneHotGradConfig, + onesLikeGradConfig, + padV2GradConfig, + padV2GradConfig, + powGradConfig, + preluGradConfig, + reciprocalGradConfig, + relu6GradConfig, + reluGradConfig, + reshapeGradConfig, + resizeBilinearGradConfig, + resizeNearestNeighborGradConfig, + reverseGradConfig, + roundGradConfig, + rsqrtGradConfig, + selectV2PoolGradConfig, + seluGradConfig, + sigmoidGradConfig, + signGradConfig, + sinGradConfig, + sinhGradConfig, + sliceGradConfig, + softmaxGradConfig, + softplusGradConfig, + spaceToBatchNDGradConfig, + spaceToBatchNDGradConfig, + splitVGradConfig, + splitVGradConfig, + sqrtGradConfig, + squaredDifferenceGradConfig, + squareGradConfig, + stepGradConfig, + subGradConfig, + sumGradConfig, + tanGradConfig, + tanhGradConfig, + tileGradConfig, + transposeGradConfig, + unpackGradConfig, + unsortedSegmentSumGradConfig, + zerosLikeGradConfig + ]; + for (var _i = 0, gradConfigs_1 = gradConfigs; _i < gradConfigs_1.length; _i++) { + var gradientConfig = gradConfigs_1[_i]; + registerGradient(gradientConfig); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PlatformBrowser = /** @class */ (function () { + function PlatformBrowser() { + } + PlatformBrowser.prototype.fetch = function (path, init) { + return fetch(path, init); + }; + PlatformBrowser.prototype.now = function () { + return performance.now(); + }; + PlatformBrowser.prototype.encode = function (text, encoding) { + if (encoding !== 'utf-8' && encoding !== 'utf8') { + throw new Error("Browser's encoder only supports utf-8, but got " + encoding); + } + if (this.textEncoder == null) { + this.textEncoder = new TextEncoder(); + } + return this.textEncoder.encode(text); + }; + PlatformBrowser.prototype.decode = function (bytes, encoding) { + return new TextDecoder(encoding).decode(bytes); + }; + return PlatformBrowser; + }()); + if (env().get('IS_BROWSER')) { + env().setPlatform('browser', new PlatformBrowser()); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + // We are wrapping this within an object so it can be stubbed by Jasmine. + var getNodeFetch = { + // tslint:disable-next-line:no-require-imports + importFetch: function () { return require('node-fetch'); } + }; + var systemFetch; + var PlatformNode = /** @class */ (function () { + function PlatformNode() { + // tslint:disable-next-line:no-require-imports + this.util = require('util'); + // According to the spec, the built-in encoder can do only UTF-8 encoding. + // https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextEncoder + this.textEncoder = new this.util.TextEncoder(); + } + PlatformNode.prototype.fetch = function (path, requestInits) { + if (env().global.fetch != null) { + return env().global.fetch(path, requestInits); + } + if (systemFetch == null) { + systemFetch = getNodeFetch.importFetch(); + } + return systemFetch(path, requestInits); + }; + PlatformNode.prototype.now = function () { + var time = process.hrtime(); + return time[0] * 1000 + time[1] / 1000000; + }; + PlatformNode.prototype.encode = function (text, encoding) { + if (encoding !== 'utf-8' && encoding !== 'utf8') { + throw new Error("Node built-in encoder only supports utf-8, but got " + encoding); + } + return this.textEncoder.encode(text); + }; + PlatformNode.prototype.decode = function (bytes, encoding) { + if (bytes.length === 0) { + return ''; + } + return new this.util.TextDecoder(encoding).decode(bytes); + }; + return PlatformNode; + }()); + if (env().get('IS_NODE')) { + env().setPlatform('node', new PlatformNode()); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /* Type definitions for exporting and importing of models. */ + /** + * A map from Tensor dtype to number of bytes per element of the Tensor. + */ + var DTYPE_VALUE_SIZE_MAP = { + 'float32': 4, + 'float16': 2, + 'int32': 4, + 'uint16': 2, + 'uint8': 1, + 'bool': 1, + 'complex64': 8 + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** Number of bytes reserved for the length of the string. (32bit integer). */ + var NUM_BYTES_STRING_LENGTH = 4; + /** + * Encode a map from names to weight values as an ArrayBuffer, along with an + * `Array` of `WeightsManifestEntry` as specification of the encoded weights. + * + * This function does not perform sharding. + * + * This function is the reverse of `decodeWeights`. + * + * @param tensors A map ("dict") from names to tensors. + * @param group Group to which the weights belong (optional). + * @returns A `Promise` of + * - A flat `ArrayBuffer` with all the binary values of the `Tensor`s + * concatenated. + * - An `Array` of `WeightManifestEntry`s, carrying information including + * tensor names, `dtype`s and shapes. + * @throws Error: on unsupported tensor `dtype`. + */ + function encodeWeights(tensors, group) { + return __awaiter(this, void 0, void 0, function () { + var specs, dataPromises, names, _loop_1, i, tensorValues; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + specs = []; + dataPromises = []; + names = Array.isArray(tensors) ? + tensors.map(function (tensor) { return tensor.name; }) : + Object.keys(tensors); + _loop_1 = function (i) { + var name_1 = names[i]; + var t = Array.isArray(tensors) ? tensors[i].tensor : tensors[name_1]; + if (t.dtype !== 'float32' && t.dtype !== 'int32' && t.dtype !== 'bool' && + t.dtype !== 'string' && t.dtype !== 'complex64') { + throw new Error("Unsupported dtype in weight '" + name_1 + "': " + t.dtype); + } + var spec = { name: name_1, shape: t.shape, dtype: t.dtype }; + if (t.dtype === 'string') { + var utf8bytes = new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { + var vals, totalNumBytes, bytes, offset, i_1, val, bytesOfLength; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, t.bytes()]; + case 1: + vals = _a.sent(); + totalNumBytes = vals.reduce(function (p, c) { return p + c.length; }, 0) + + NUM_BYTES_STRING_LENGTH * vals.length; + bytes = new Uint8Array(totalNumBytes); + offset = 0; + for (i_1 = 0; i_1 < vals.length; i_1++) { + val = vals[i_1]; + bytesOfLength = new Uint8Array(new Uint32Array([val.length]).buffer); + bytes.set(bytesOfLength, offset); + offset += NUM_BYTES_STRING_LENGTH; + bytes.set(val, offset); + offset += val.length; + } + resolve(bytes); + return [2 /*return*/]; + } + }); + }); }); + dataPromises.push(utf8bytes); + } + else { + dataPromises.push(t.data()); + } + if (group != null) { + spec.group = group; + } + specs.push(spec); + }; + for (i = 0; i < names.length; ++i) { + _loop_1(i); + } + return [4 /*yield*/, Promise.all(dataPromises)]; + case 1: + tensorValues = _a.sent(); + return [2 /*return*/, { data: concatenateTypedArrays(tensorValues), specs: specs }]; + } + }); + }); + } + /** + * Decode flat ArrayBuffer as weights. + * + * This function does not handle sharding. + * + * This function is the reverse of `encodeWeights`. + * + * @param buffer A flat ArrayBuffer carrying the binary values of the tensors + * concatenated in the order specified in `specs`. + * @param specs Specifications of the names, dtypes and shapes of the tensors + * whose value are encoded by `buffer`. + * @return A map from tensor name to tensor value, with the names corresponding + * to names in `specs`. + * @throws Error, if any of the tensors has unsupported dtype. + */ + function decodeWeights(buffer, specs) { + // TODO(adarob, cais): Support quantization. + var out = {}; + var float16Decode; + var offset = 0; + for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) { + var spec = specs_1[_i]; + var name_2 = spec.name; + var dtype = spec.dtype; + var shape = spec.shape; + var size = sizeFromShape(shape); + var values = void 0; + if ('quantization' in spec) { + var quantization = spec.quantization; + if (quantization.dtype === 'uint8' || quantization.dtype === 'uint16') { + if (!('min' in quantization && 'scale' in quantization)) { + throw new Error("Weight " + spec.name + " with quantization " + quantization.dtype + " " + + "doesn't have corresponding metadata min and scale."); + } + } + else if (quantization.dtype === 'float16') { + if (dtype !== 'float32') { + throw new Error("Weight " + spec.name + " is quantized with " + quantization.dtype + " " + + ("which only supports weights of type float32 not " + dtype + ".")); + } + } + else { + throw new Error("Weight " + spec.name + " has unknown " + + ("quantization dtype " + quantization.dtype + ". ") + + "Supported quantization dtypes are: " + + "'uint8', 'uint16', and 'float16'."); + } + var quantizationSizeFactor = DTYPE_VALUE_SIZE_MAP[quantization.dtype]; + var byteBuffer = buffer.slice(offset, offset + size * quantizationSizeFactor); + var quantizedArray = (quantization.dtype === 'uint8') ? + new Uint8Array(byteBuffer) : + new Uint16Array(byteBuffer); + if (dtype === 'float32') { + if (quantization.dtype === 'uint8' || quantization.dtype === 'uint16') { + values = new Float32Array(quantizedArray.length); + for (var i = 0; i < quantizedArray.length; i++) { + var v = quantizedArray[i]; + values[i] = v * quantization.scale + quantization.min; + } + } + else if (quantization.dtype === 'float16') { + if (float16Decode === undefined) { + float16Decode = getFloat16Decoder(); + } + values = float16Decode(quantizedArray); + } + else { + throw new Error("Unsupported quantization type " + quantization.dtype + " " + + "for weight type float32."); + } + } + else if (dtype === 'int32') { + if (quantization.dtype !== 'uint8' && quantization.dtype !== 'uint16') { + throw new Error("Unsupported quantization type " + quantization.dtype + " " + + "for weight type int32."); + } + values = new Int32Array(quantizedArray.length); + for (var i = 0; i < quantizedArray.length; i++) { + var v = quantizedArray[i]; + values[i] = Math.round(v * quantization.scale + quantization.min); + } + } + else { + throw new Error("Unsupported dtype in weight '" + name_2 + "': " + dtype); + } + offset += size * quantizationSizeFactor; + } + else if (dtype === 'string') { + var size_1 = sizeFromShape(spec.shape); + values = []; + for (var i = 0; i < size_1; i++) { + var byteLength = new Uint32Array(buffer.slice(offset, offset + NUM_BYTES_STRING_LENGTH))[0]; + offset += NUM_BYTES_STRING_LENGTH; + var bytes = new Uint8Array(buffer.slice(offset, offset + byteLength)); + values.push(bytes); + offset += byteLength; + } + } + else { + var dtypeFactor = DTYPE_VALUE_SIZE_MAP[dtype]; + var byteBuffer = buffer.slice(offset, offset + size * dtypeFactor); + if (dtype === 'float32') { + values = new Float32Array(byteBuffer); + } + else if (dtype === 'int32') { + values = new Int32Array(byteBuffer); + } + else if (dtype === 'bool') { + values = new Uint8Array(byteBuffer); + } + else if (dtype === 'complex64') { + values = new Float32Array(byteBuffer); + var real = new Float32Array(values.length / 2); + var image = new Float32Array(values.length / 2); + for (var i = 0; i < real.length; i++) { + real[i] = values[i * 2]; + image[i] = values[i * 2 + 1]; + } + var realTensor = tensor(real, shape, 'float32'); + var imageTensor = tensor(image, shape, 'float32'); + out[name_2] = complex(realTensor, imageTensor); + } + else { + throw new Error("Unsupported dtype in weight '" + name_2 + "': " + dtype); + } + offset += size * dtypeFactor; + } + if (dtype !== 'complex64') { + out[name_2] = tensor(values, shape, dtype); + } + } + return out; + } + /** + * Concatenate TypedArrays into an ArrayBuffer. + */ + function concatenateTypedArrays(xs) { + // TODO(adarob, cais): Support quantization. + if (xs === null) { + throw new Error("Invalid input value: " + JSON.stringify(xs)); + } + var totalByteLength = 0; + // `normalizedXs` is here for this reason: a `TypedArray`'s `buffer' + // can have a different byte length from that of the `TypedArray` itself, + // for example, when the `TypedArray` is created from an offset in an + // `ArrayBuffer`. `normliazedXs` holds `TypedArray`s whose `buffer`s match + // the `TypedArray` in byte length. If an element of `xs` does not show + // this property, a new `TypedArray` that satisfy this property will be + // constructed and pushed into `normalizedXs`. + var normalizedXs = []; + xs.forEach(function (x) { + totalByteLength += x.byteLength; + // tslint:disable:no-any + normalizedXs.push(x.byteLength === x.buffer.byteLength ? x : + new x.constructor(x)); + if (!(x instanceof Float32Array || x instanceof Int32Array || + x instanceof Uint8Array)) { + throw new Error("Unsupported TypedArray subtype: " + x.constructor.name); + } + // tslint:enable:no-any + }); + var y = new Uint8Array(totalByteLength); + var offset = 0; + normalizedXs.forEach(function (x) { + y.set(new Uint8Array(x.buffer), offset); + offset += x.byteLength; + }); + return y.buffer; + } + // Use Buffer on Node.js instead of Blob/atob/btoa + var useNodeBuffer = typeof Buffer !== 'undefined' && + (typeof Blob === 'undefined' || typeof atob === 'undefined' || + typeof btoa === 'undefined'); + /** + * Calculate the byte length of a JavaScript string. + * + * Note that a JavaScript string can contain wide characters, therefore the + * length of the string is not necessarily equal to the byte length. + * + * @param str Input string. + * @returns Byte length. + */ + function stringByteLength(str) { + if (useNodeBuffer) { + return Buffer.byteLength(str); + } + return new Blob([str]).size; + } + /** + * Encode an ArrayBuffer as a base64 encoded string. + * + * @param buffer `ArrayBuffer` to be converted. + * @returns A string that base64-encodes `buffer`. + */ + function arrayBufferToBase64String(buffer) { + if (useNodeBuffer) { + return Buffer.from(buffer).toString('base64'); + } + var buf = new Uint8Array(buffer); + var s = ''; + for (var i = 0, l = buf.length; i < l; i++) { + s += String.fromCharCode(buf[i]); + } + return btoa(s); + } + /** + * Decode a base64 string as an ArrayBuffer. + * + * @param str Base64 string. + * @returns Decoded `ArrayBuffer`. + */ + function base64StringToArrayBuffer(str) { + if (useNodeBuffer) { + var buf = Buffer.from(str, 'base64'); + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + } + var s = atob(str); + var buffer = new Uint8Array(s.length); + for (var i = 0; i < s.length; ++i) { + buffer.set([s.charCodeAt(i)], i); + } + return buffer.buffer; + } + /** + * Concatenate a number of ArrayBuffers into one. + * + * @param buffers A number of array buffers to concatenate. + * @returns Result of concatenating `buffers` in order. + */ + function concatenateArrayBuffers(buffers) { + if (buffers.length === 1) { + return buffers[0]; + } + var totalByteLength = 0; + buffers.forEach(function (buffer) { + totalByteLength += buffer.byteLength; + }); + var temp = new Uint8Array(totalByteLength); + var offset = 0; + buffers.forEach(function (buffer) { + temp.set(new Uint8Array(buffer), offset); + offset += buffer.byteLength; + }); + return temp.buffer; + } + /** + * Get the basename of a path. + * + * Behaves in a way analogous to Linux's basename command. + * + * @param path + */ + function basename(path) { + var SEPARATOR = '/'; + path = path.trim(); + while (path.endsWith(SEPARATOR)) { + path = path.slice(0, path.length - 1); + } + var items = path.split(SEPARATOR); + return items[items.length - 1]; + } + /** + * Populate ModelArtifactsInfo fields for a model with JSON topology. + * @param modelArtifacts + * @returns A ModelArtifactsInfo object. + */ + function getModelArtifactsInfoForJSON(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error('Expected JSON model topology, received ArrayBuffer.'); + } + return { + dateSaved: new Date(), + modelTopologyType: 'JSON', + modelTopologyBytes: modelArtifacts.modelTopology == null ? + 0 : + stringByteLength(JSON.stringify(modelArtifacts.modelTopology)), + weightSpecsBytes: modelArtifacts.weightSpecs == null ? + 0 : + stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)), + weightDataBytes: modelArtifacts.weightData == null ? + 0 : + modelArtifacts.weightData.byteLength, + }; + } + /** + * Computes mantisa table for casting Float16 to Float32 + * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf + * + * @returns Uint32Array, 2048 mantissa lookup values. + */ + function computeFloat16MantisaTable() { + var convertMantissa = function (i) { + var m = i << 13; + var e = 0; + while ((m & 0x00800000) === 0) { + e -= 0x00800000; + m <<= 1; + } + m &= ~0x00800000; + e += 0x38800000; + return m | e; + }; + var mantisaTable = new Uint32Array(2048); + mantisaTable[0] = 0; + for (var i = 1; i < 1024; i++) { + mantisaTable[i] = convertMantissa(i); + } + for (var i = 1024; i < 2048; i++) { + mantisaTable[i] = 0x38000000 + ((i - 1024) << 13); + } + return mantisaTable; + } + /** + * Computes exponent table for casting Float16 to Float32 + * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf + * + * @returns Uint32Array, 64 exponent lookup values. + */ + function computeFloat16ExponentTable() { + var exponentTable = new Uint32Array(64); + exponentTable[0] = 0; + exponentTable[31] = 0x47800000; + exponentTable[32] = 0x80000000; + exponentTable[63] = 0xc7800000; + for (var i = 1; i < 31; i++) { + exponentTable[i] = i << 23; + } + for (var i = 33; i < 63; i++) { + exponentTable[i] = 0x80000000 + ((i - 32) << 23); + } + return exponentTable; + } + /** + * Computes offset table for casting Float16 to Float32 + * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf + * + * @returns Uint32Array, 6d offset values. + */ + function computeFloat16OffsetTable() { + var offsetTable = new Uint32Array(64); + for (var i = 0; i < 64; i++) { + offsetTable[i] = 1024; + } + offsetTable[0] = offsetTable[32] = 0; + return offsetTable; + } + /** + * Retrieve a Float16 decoder which will decode a ByteArray of Float16 values + * to a Float32Array. + * + * @returns Function (buffer: Uint16Array) => Float32Array which decodes + * the Uint16Array of Float16 bytes to a Float32Array. + */ + function getFloat16Decoder() { + // Algorithm is based off of + // http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf + // Cache lookup tables + var mantisaTable = computeFloat16MantisaTable(); + var exponentTable = computeFloat16ExponentTable(); + var offsetTable = computeFloat16OffsetTable(); + return function (quantizedArray) { + var buffer = new ArrayBuffer(4 * quantizedArray.length); + var bufferUint32View = new Uint32Array(buffer); + for (var index = 0; index < quantizedArray.length; index++) { + var float16Bits = quantizedArray[index]; + var float32Bits = mantisaTable[offsetTable[float16Bits >> 10] + (float16Bits & 0x3ff)] + + exponentTable[float16Bits >> 10]; + bufferUint32View[index] = float32Bits; + } + return new Float32Array(buffer); + }; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var IORouterRegistry = /** @class */ (function () { + function IORouterRegistry() { + this.saveRouters = []; + this.loadRouters = []; + } + IORouterRegistry.getInstance = function () { + if (IORouterRegistry.instance == null) { + IORouterRegistry.instance = new IORouterRegistry(); + } + return IORouterRegistry.instance; + }; + /** + * Register a save-handler router. + * + * @param saveRouter A function that maps a URL-like string onto an instance + * of `IOHandler` with the `save` method defined or `null`. + */ + IORouterRegistry.registerSaveRouter = function (saveRouter) { + IORouterRegistry.getInstance().saveRouters.push(saveRouter); + }; + /** + * Register a load-handler router. + * + * @param loadRouter A function that maps a URL-like string onto an instance + * of `IOHandler` with the `load` method defined or `null`. + */ + IORouterRegistry.registerLoadRouter = function (loadRouter) { + IORouterRegistry.getInstance().loadRouters.push(loadRouter); + }; + /** + * Look up IOHandler for saving, given a URL-like string. + * + * @param url + * @returns If only one match is found, an instance of IOHandler with the + * `save` method defined. If no match is found, `null`. + * @throws Error, if more than one match is found. + */ + IORouterRegistry.getSaveHandlers = function (url) { + return IORouterRegistry.getHandlers(url, 'save'); + }; + /** + * Look up IOHandler for loading, given a URL-like string. + * + * @param url + * @param loadOptions Optional, custom load options. + * @returns All valid handlers for `url`, given the currently registered + * handler routers. + */ + IORouterRegistry.getLoadHandlers = function (url, loadOptions) { + return IORouterRegistry.getHandlers(url, 'load', loadOptions); + }; + IORouterRegistry.getHandlers = function (url, handlerType, loadOptions) { + var validHandlers = []; + var routers = handlerType === 'load' ? + IORouterRegistry.getInstance().loadRouters : + IORouterRegistry.getInstance().saveRouters; + routers.forEach(function (router) { + var handler = router(url, loadOptions); + if (handler !== null) { + validHandlers.push(handler); + } + }); + return validHandlers; + }; + return IORouterRegistry; + }()); + var registerSaveRouter = function (loudRouter) { + return IORouterRegistry.registerSaveRouter(loudRouter); + }; + var registerLoadRouter = function (loudRouter) { + return IORouterRegistry.registerLoadRouter(loudRouter); + }; + var getSaveHandlers = function (url) { + return IORouterRegistry.getSaveHandlers(url); + }; + var getLoadHandlers = function (url, loadOptions) { + return IORouterRegistry.getLoadHandlers(url, loadOptions); + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var URL_SCHEME_SUFFIX = '://'; + var ModelStoreManagerRegistry = /** @class */ (function () { + function ModelStoreManagerRegistry() { + this.managers = {}; + } + ModelStoreManagerRegistry.getInstance = function () { + if (ModelStoreManagerRegistry.instance == null) { + ModelStoreManagerRegistry.instance = new ModelStoreManagerRegistry(); + } + return ModelStoreManagerRegistry.instance; + }; + /** + * Register a save-handler router. + * + * @param saveRouter A function that maps a URL-like string onto an instance + * of `IOHandler` with the `save` method defined or `null`. + */ + ModelStoreManagerRegistry.registerManager = function (scheme, manager) { + assert(scheme != null, function () { return 'scheme must not be undefined or null.'; }); + if (scheme.endsWith(URL_SCHEME_SUFFIX)) { + scheme = scheme.slice(0, scheme.indexOf(URL_SCHEME_SUFFIX)); + } + assert(scheme.length > 0, function () { return 'scheme must not be an empty string.'; }); + var registry = ModelStoreManagerRegistry.getInstance(); + assert(registry.managers[scheme] == null, function () { return "A model store manager is already registered for scheme '" + scheme + "'."; }); + registry.managers[scheme] = manager; + }; + ModelStoreManagerRegistry.getManager = function (scheme) { + var manager = this.getInstance().managers[scheme]; + if (manager == null) { + throw new Error("Cannot find model manager for scheme '" + scheme + "'"); + } + return manager; + }; + ModelStoreManagerRegistry.getSchemes = function () { + return Object.keys(this.getInstance().managers); + }; + return ModelStoreManagerRegistry; + }()); + /** + * Helper method for parsing a URL string into a scheme and a path. + * + * @param url E.g., 'localstorage://my-model' + * @returns A dictionary with two fields: scheme and path. + * Scheme: e.g., 'localstorage' in the example above. + * Path: e.g., 'my-model' in the example above. + */ + function parseURL(url) { + if (url.indexOf(URL_SCHEME_SUFFIX) === -1) { + throw new Error("The url string provided does not contain a scheme. " + + "Supported schemes are: " + + ("" + ModelStoreManagerRegistry.getSchemes().join(','))); + } + return { + scheme: url.split(URL_SCHEME_SUFFIX)[0], + path: url.split(URL_SCHEME_SUFFIX)[1], + }; + } + function cloneModelInternal(sourceURL, destURL, deleteSource) { + if (deleteSource === void 0) { deleteSource = false; } + return __awaiter(this, void 0, void 0, function () { + var loadHandlers, loadHandler, saveHandlers, saveHandler, sourceScheme, sourcePath, sameMedium, modelArtifacts, saveResult; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assert(sourceURL !== destURL, function () { return "Old path and new path are the same: '" + sourceURL + "'"; }); + loadHandlers = IORouterRegistry.getLoadHandlers(sourceURL); + assert(loadHandlers.length > 0, function () { return "Copying failed because no load handler is found for source URL " + sourceURL + "."; }); + assert(loadHandlers.length < 2, function () { return "Copying failed because more than one (" + loadHandlers.length + ") " + + ("load handlers for source URL " + sourceURL + "."); }); + loadHandler = loadHandlers[0]; + saveHandlers = IORouterRegistry.getSaveHandlers(destURL); + assert(saveHandlers.length > 0, function () { return "Copying failed because no save handler is found for destination " + + ("URL " + destURL + "."); }); + assert(saveHandlers.length < 2, function () { return "Copying failed because more than one (" + loadHandlers.length + ") " + + ("save handlers for destination URL " + destURL + "."); }); + saveHandler = saveHandlers[0]; + sourceScheme = parseURL(sourceURL).scheme; + sourcePath = parseURL(sourceURL).path; + sameMedium = sourceScheme === parseURL(sourceURL).scheme; + return [4 /*yield*/, loadHandler.load()]; + case 1: + modelArtifacts = _a.sent(); + if (!(deleteSource && sameMedium)) return [3 /*break*/, 3]; + return [4 /*yield*/, ModelStoreManagerRegistry.getManager(sourceScheme) + .removeModel(sourcePath)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [4 /*yield*/, saveHandler.save(modelArtifacts)]; + case 4: + saveResult = _a.sent(); + if (!(deleteSource && !sameMedium)) return [3 /*break*/, 6]; + return [4 /*yield*/, ModelStoreManagerRegistry.getManager(sourceScheme) + .removeModel(sourcePath)]; + case 5: + _a.sent(); + _a.label = 6; + case 6: return [2 /*return*/, saveResult.modelArtifactsInfo]; + } + }); + }); + } + /** + * List all models stored in registered storage mediums. + * + * For a web browser environment, the registered mediums are Local Storage and + * IndexedDB. + * + * ```js + * // First create and save a model. + * const model = tf.sequential(); + * model.add(tf.layers.dense( + * {units: 1, inputShape: [10], activation: 'sigmoid'})); + * await model.save('localstorage://demo/management/model1'); + * + * // Then list existing models. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Delete the model. + * await tf.io.removeModel('localstorage://demo/management/model1'); + * + * // List models again. + * console.log(JSON.stringify(await tf.io.listModels())); + * ``` + * + * @returns A `Promise` of a dictionary mapping URLs of existing models to + * their model artifacts info. URLs include medium-specific schemes, e.g., + * 'indexeddb://my/model/1'. Model artifacts info include type of the + * model's topology, byte sizes of the topology, weights, etc. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Management', + * namespace: 'io', + * ignoreCI: true + * } + */ + function listModels() { + return __awaiter(this, void 0, void 0, function () { + var schemes, out, _i, schemes_1, scheme, schemeOut, path, url; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + schemes = ModelStoreManagerRegistry.getSchemes(); + out = {}; + _i = 0, schemes_1 = schemes; + _a.label = 1; + case 1: + if (!(_i < schemes_1.length)) return [3 /*break*/, 4]; + scheme = schemes_1[_i]; + return [4 /*yield*/, ModelStoreManagerRegistry.getManager(scheme).listModels()]; + case 2: + schemeOut = _a.sent(); + for (path in schemeOut) { + url = scheme + URL_SCHEME_SUFFIX + path; + out[url] = schemeOut[path]; + } + _a.label = 3; + case 3: + _i++; + return [3 /*break*/, 1]; + case 4: return [2 /*return*/, out]; + } + }); + }); + } + /** + * Remove a model specified by URL from a reigstered storage medium. + * + * ```js + * // First create and save a model. + * const model = tf.sequential(); + * model.add(tf.layers.dense( + * {units: 1, inputShape: [10], activation: 'sigmoid'})); + * await model.save('localstorage://demo/management/model1'); + * + * // Then list existing models. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Delete the model. + * await tf.io.removeModel('localstorage://demo/management/model1'); + * + * // List models again. + * console.log(JSON.stringify(await tf.io.listModels())); + * ``` + * + * @param url A URL to a stored model, with a scheme prefix, e.g., + * 'localstorage://my-model-1', 'indexeddb://my/model/2'. + * @returns ModelArtifactsInfo of the deleted model (if and only if deletion + * is successful). + * @throws Error if deletion fails, e.g., if no model exists at `path`. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Management', + * namespace: 'io', + * ignoreCI: true + * } + */ + function removeModel(url) { + return __awaiter(this, void 0, void 0, function () { + var schemeAndPath, manager; + return __generator(this, function (_a) { + schemeAndPath = parseURL(url); + manager = ModelStoreManagerRegistry.getManager(schemeAndPath.scheme); + return [2 /*return*/, manager.removeModel(schemeAndPath.path)]; + }); + }); + } + /** + * Copy a model from one URL to another. + * + * This function supports: + * + * 1. Copying within a storage medium, e.g., + * `tf.io.copyModel('localstorage://model-1', 'localstorage://model-2')` + * 2. Copying between two storage mediums, e.g., + * `tf.io.copyModel('localstorage://model-1', 'indexeddb://model-1')` + * + * ```js + * // First create and save a model. + * const model = tf.sequential(); + * model.add(tf.layers.dense( + * {units: 1, inputShape: [10], activation: 'sigmoid'})); + * await model.save('localstorage://demo/management/model1'); + * + * // Then list existing models. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Copy the model, from Local Storage to IndexedDB. + * await tf.io.copyModel( + * 'localstorage://demo/management/model1', + * 'indexeddb://demo/management/model1'); + * + * // List models again. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Remove both models. + * await tf.io.removeModel('localstorage://demo/management/model1'); + * await tf.io.removeModel('indexeddb://demo/management/model1'); + * ``` + * + * @param sourceURL Source URL of copying. + * @param destURL Destination URL of copying. + * @returns ModelArtifactsInfo of the copied model (if and only if copying + * is successful). + * @throws Error if copying fails, e.g., if no model exists at `sourceURL`, or + * if `oldPath` and `newPath` are identical. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Management', + * namespace: 'io', + * ignoreCI: true + * } + */ + function copyModel(sourceURL, destURL) { + return __awaiter(this, void 0, void 0, function () { + var deleteSource; + return __generator(this, function (_a) { + deleteSource = false; + return [2 /*return*/, cloneModelInternal(sourceURL, destURL, deleteSource)]; + }); + }); + } + /** + * Move a model from one URL to another. + * + * This function supports: + * + * 1. Moving within a storage medium, e.g., + * `tf.io.moveModel('localstorage://model-1', 'localstorage://model-2')` + * 2. Moving between two storage mediums, e.g., + * `tf.io.moveModel('localstorage://model-1', 'indexeddb://model-1')` + * + * ```js + * // First create and save a model. + * const model = tf.sequential(); + * model.add(tf.layers.dense( + * {units: 1, inputShape: [10], activation: 'sigmoid'})); + * await model.save('localstorage://demo/management/model1'); + * + * // Then list existing models. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Move the model, from Local Storage to IndexedDB. + * await tf.io.moveModel( + * 'localstorage://demo/management/model1', + * 'indexeddb://demo/management/model1'); + * + * // List models again. + * console.log(JSON.stringify(await tf.io.listModels())); + * + * // Remove the moved model. + * await tf.io.removeModel('indexeddb://demo/management/model1'); + * ``` + * + * @param sourceURL Source URL of moving. + * @param destURL Destination URL of moving. + * @returns ModelArtifactsInfo of the copied model (if and only if copying + * is successful). + * @throws Error if moving fails, e.g., if no model exists at `sourceURL`, or + * if `oldPath` and `newPath` are identical. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Management', + * namespace: 'io', + * ignoreCI: true + * } + */ + function moveModel(sourceURL, destURL) { + return __awaiter(this, void 0, void 0, function () { + var deleteSource; + return __generator(this, function (_a) { + deleteSource = true; + return [2 /*return*/, cloneModelInternal(sourceURL, destURL, deleteSource)]; + }); + }); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DATABASE_NAME = 'tensorflowjs'; + var DATABASE_VERSION = 1; + // Model data and ModelArtifactsInfo (metadata) are stored in two separate + // stores for efficient access of the list of stored models and their metadata. + // 1. The object store for model data: topology, weights and weight manifests. + var MODEL_STORE_NAME = 'models_store'; + // 2. The object store for ModelArtifactsInfo, including meta-information such + // as the type of topology (JSON vs binary), byte size of the topology, byte + // size of the weights, etc. + var INFO_STORE_NAME = 'model_info_store'; + function getIndexedDBFactory() { + if (!env().getBool('IS_BROWSER')) { + // TODO(cais): Add more info about what IOHandler subtypes are available. + // Maybe point to a doc page on the web and/or automatically determine + // the available IOHandlers and print them in the error message. + throw new Error('Failed to obtain IndexedDB factory because the current environment' + + 'is not a web browser.'); + } + // tslint:disable-next-line:no-any + var theWindow = typeof window === 'undefined' ? self : window; + var factory = theWindow.indexedDB || theWindow.mozIndexedDB || + theWindow.webkitIndexedDB || theWindow.msIndexedDB || + theWindow.shimIndexedDB; + if (factory == null) { + throw new Error('The current browser does not appear to support IndexedDB.'); + } + return factory; + } + function setUpDatabase(openRequest) { + var db = openRequest.result; + db.createObjectStore(MODEL_STORE_NAME, { keyPath: 'modelPath' }); + db.createObjectStore(INFO_STORE_NAME, { keyPath: 'modelPath' }); + } + /** + * IOHandler subclass: Browser IndexedDB. + * + * See the doc string of `browserIndexedDB` for more details. + */ + var BrowserIndexedDB = /** @class */ (function () { + function BrowserIndexedDB(modelPath) { + this.indexedDB = getIndexedDBFactory(); + if (modelPath == null || !modelPath) { + throw new Error('For IndexedDB, modelPath must not be null, undefined or empty.'); + } + this.modelPath = modelPath; + } + BrowserIndexedDB.prototype.save = function (modelArtifacts) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + // TODO(cais): Support saving GraphDef models. + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error('BrowserLocalStorage.save() does not support saving model topology ' + + 'in binary formats yet.'); + } + return [2 /*return*/, this.databaseAction(this.modelPath, modelArtifacts)]; + }); + }); + }; + BrowserIndexedDB.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this.databaseAction(this.modelPath)]; + }); + }); + }; + /** + * Perform database action to put model artifacts into or read model artifacts + * from IndexedDB object store. + * + * Whether the action is put or get depends on whether `modelArtifacts` is + * specified. If it is specified, the action will be put; otherwise the action + * will be get. + * + * @param modelPath A unique string path for the model. + * @param modelArtifacts If specified, it will be the model artifacts to be + * stored in IndexedDB. + * @returns A `Promise` of `SaveResult`, if the action is put, or a `Promise` + * of `ModelArtifacts`, if the action is get. + */ + BrowserIndexedDB.prototype.databaseAction = function (modelPath, modelArtifacts) { + var _this = this; + return new Promise(function (resolve, reject) { + var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); }; + openRequest.onsuccess = function () { + var db = openRequest.result; + if (modelArtifacts == null) { + // Read model out from object store. + var modelTx = db.transaction(MODEL_STORE_NAME, 'readonly'); + var modelStore = modelTx.objectStore(MODEL_STORE_NAME); + var getRequest_1 = modelStore.get(_this.modelPath); + getRequest_1.onsuccess = function () { + if (getRequest_1.result == null) { + db.close(); + return reject(new Error("Cannot find model with path '" + _this.modelPath + "' " + + "in IndexedDB.")); + } + else { + resolve(getRequest_1.result.modelArtifacts); + } + }; + getRequest_1.onerror = function (error) { + db.close(); + return reject(getRequest_1.error); + }; + modelTx.oncomplete = function () { return db.close(); }; + } + else { + // Put model into object store. + var modelArtifactsInfo_1 = getModelArtifactsInfoForJSON(modelArtifacts); + // First, put ModelArtifactsInfo into info store. + var infoTx_1 = db.transaction(INFO_STORE_NAME, 'readwrite'); + var infoStore_1 = infoTx_1.objectStore(INFO_STORE_NAME); + var putInfoRequest_1 = infoStore_1.put({ modelPath: _this.modelPath, modelArtifactsInfo: modelArtifactsInfo_1 }); + var modelTx_1; + putInfoRequest_1.onsuccess = function () { + // Second, put model data into model store. + modelTx_1 = db.transaction(MODEL_STORE_NAME, 'readwrite'); + var modelStore = modelTx_1.objectStore(MODEL_STORE_NAME); + var putModelRequest = modelStore.put({ + modelPath: _this.modelPath, + modelArtifacts: modelArtifacts, + modelArtifactsInfo: modelArtifactsInfo_1 + }); + putModelRequest.onsuccess = function () { return resolve({ modelArtifactsInfo: modelArtifactsInfo_1 }); }; + putModelRequest.onerror = function (error) { + // If the put-model request fails, roll back the info entry as + // well. + infoStore_1 = infoTx_1.objectStore(INFO_STORE_NAME); + var deleteInfoRequest = infoStore_1.delete(_this.modelPath); + deleteInfoRequest.onsuccess = function () { + db.close(); + return reject(putModelRequest.error); + }; + deleteInfoRequest.onerror = function (error) { + db.close(); + return reject(putModelRequest.error); + }; + }; + }; + putInfoRequest_1.onerror = function (error) { + db.close(); + return reject(putInfoRequest_1.error); + }; + infoTx_1.oncomplete = function () { + if (modelTx_1 == null) { + db.close(); + } + else { + modelTx_1.oncomplete = function () { return db.close(); }; + } + }; + } + }; + openRequest.onerror = function (error) { return reject(openRequest.error); }; + }); + }; + BrowserIndexedDB.URL_SCHEME = 'indexeddb://'; + return BrowserIndexedDB; + }()); + var indexedDBRouter = function (url) { + if (!env().getBool('IS_BROWSER')) { + return null; + } + else { + if (!Array.isArray(url) && url.startsWith(BrowserIndexedDB.URL_SCHEME)) { + return browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)); + } + else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(indexedDBRouter); + IORouterRegistry.registerLoadRouter(indexedDBRouter); + /** + * Creates a browser IndexedDB IOHandler for saving and loading models. + * + * ```js + * const model = tf.sequential(); + * model.add( + * tf.layers.dense({units: 1, inputShape: [100], activation: 'sigmoid'})); + * + * const saveResult = await model.save('indexeddb://MyModel')); + * console.log(saveResult); + * ``` + * + * @param modelPath A unique identifier for the model to be saved. Must be a + * non-empty string. + * @returns An instance of `BrowserIndexedDB` (sublcass of `IOHandler`), + * which can be used with, e.g., `tf.Model.save`. + */ + function browserIndexedDB(modelPath) { + return new BrowserIndexedDB(modelPath); + } + function maybeStripScheme(key) { + return key.startsWith(BrowserIndexedDB.URL_SCHEME) ? + key.slice(BrowserIndexedDB.URL_SCHEME.length) : + key; + } + var BrowserIndexedDBManager = /** @class */ (function () { + function BrowserIndexedDBManager() { + this.indexedDB = getIndexedDBFactory(); + } + BrowserIndexedDBManager.prototype.listModels = function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [2 /*return*/, new Promise(function (resolve, reject) { + var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); }; + openRequest.onsuccess = function () { + var db = openRequest.result; + var tx = db.transaction(INFO_STORE_NAME, 'readonly'); + var store = tx.objectStore(INFO_STORE_NAME); + // tslint:disable:max-line-length + // Need to cast `store` as `any` here because TypeScript's DOM + // library does not have the `getAll()` method even though the + // method is supported in the latest version of most mainstream + // browsers: + // https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getAll + // tslint:enable:max-line-length + // tslint:disable-next-line:no-any + var getAllInfoRequest = store.getAll(); + getAllInfoRequest.onsuccess = function () { + var out = {}; + for (var _i = 0, _a = getAllInfoRequest.result; _i < _a.length; _i++) { + var item = _a[_i]; + out[item.modelPath] = item.modelArtifactsInfo; + } + resolve(out); + }; + getAllInfoRequest.onerror = function (error) { + db.close(); + return reject(getAllInfoRequest.error); + }; + tx.oncomplete = function () { return db.close(); }; + }; + openRequest.onerror = function (error) { return reject(openRequest.error); }; + })]; + }); + }); + }; + BrowserIndexedDBManager.prototype.removeModel = function (path) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + path = maybeStripScheme(path); + return [2 /*return*/, new Promise(function (resolve, reject) { + var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); }; + openRequest.onsuccess = function () { + var db = openRequest.result; + var infoTx = db.transaction(INFO_STORE_NAME, 'readwrite'); + var infoStore = infoTx.objectStore(INFO_STORE_NAME); + var getInfoRequest = infoStore.get(path); + var modelTx; + getInfoRequest.onsuccess = function () { + if (getInfoRequest.result == null) { + db.close(); + return reject(new Error("Cannot find model with path '" + path + "' " + + "in IndexedDB.")); + } + else { + // First, delete the entry in the info store. + var deleteInfoRequest = infoStore.delete(path); + var deleteModelData_1 = function () { + // Second, delete the entry in the model store. + modelTx = db.transaction(MODEL_STORE_NAME, 'readwrite'); + var modelStore = modelTx.objectStore(MODEL_STORE_NAME); + var deleteModelRequest = modelStore.delete(path); + deleteModelRequest.onsuccess = function () { + return resolve(getInfoRequest.result.modelArtifactsInfo); + }; + deleteModelRequest.onerror = function (error) { + return reject(getInfoRequest.error); + }; + }; + // Proceed with deleting model data regardless of whether deletion + // of info data succeeds or not. + deleteInfoRequest.onsuccess = deleteModelData_1; + deleteInfoRequest.onerror = function (error) { + deleteModelData_1(); + db.close(); + return reject(getInfoRequest.error); + }; + } + }; + getInfoRequest.onerror = function (error) { + db.close(); + return reject(getInfoRequest.error); + }; + infoTx.oncomplete = function () { + if (modelTx == null) { + db.close(); + } + else { + modelTx.oncomplete = function () { return db.close(); }; + } + }; + }; + openRequest.onerror = function (error) { return reject(openRequest.error); }; + })]; + }); + }); + }; + return BrowserIndexedDBManager; + }()); + if (env().getBool('IS_BROWSER')) { + // Wrap the construction and registration, to guard against browsers that + // don't support Local Storage. + try { + ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME, new BrowserIndexedDBManager()); + } + catch (err) { + } + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PATH_SEPARATOR = '/'; + var PATH_PREFIX = 'tensorflowjs_models'; + var INFO_SUFFIX = 'info'; + var MODEL_TOPOLOGY_SUFFIX = 'model_topology'; + var WEIGHT_SPECS_SUFFIX = 'weight_specs'; + var WEIGHT_DATA_SUFFIX = 'weight_data'; + var MODEL_METADATA_SUFFIX = 'model_metadata'; + function getModelKeys(path) { + return { + info: [PATH_PREFIX, path, INFO_SUFFIX].join(PATH_SEPARATOR), + topology: [PATH_PREFIX, path, MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR), + weightSpecs: [PATH_PREFIX, path, WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR), + weightData: [PATH_PREFIX, path, WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR), + modelMetadata: [PATH_PREFIX, path, MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR) + }; + } + /** + * Get model path from a local-storage key. + * + * E.g., 'tensorflowjs_models/my/model/1/info' --> 'my/model/1' + * + * @param key + */ + function getModelPathFromKey(key) { + var items = key.split(PATH_SEPARATOR); + if (items.length < 3) { + throw new Error("Invalid key format: " + key); + } + return items.slice(1, items.length - 1).join(PATH_SEPARATOR); + } + function maybeStripScheme$1(key) { + return key.startsWith(BrowserLocalStorage.URL_SCHEME) ? + key.slice(BrowserLocalStorage.URL_SCHEME.length) : + key; + } + /** + * IOHandler subclass: Browser Local Storage. + * + * See the doc string to `browserLocalStorage` for more details. + */ + var BrowserLocalStorage = /** @class */ (function () { + function BrowserLocalStorage(modelPath) { + if (!env().getBool('IS_BROWSER') || + typeof window === 'undefined' || + typeof window.localStorage === 'undefined') { + // TODO(cais): Add more info about what IOHandler subtypes are + // available. + // Maybe point to a doc page on the web and/or automatically determine + // the available IOHandlers and print them in the error message. + throw new Error('The current environment does not support local storage.'); + } + this.LS = window.localStorage; + if (modelPath == null || !modelPath) { + throw new Error('For local storage, modelPath must not be null, undefined or empty.'); + } + this.modelPath = modelPath; + this.keys = getModelKeys(this.modelPath); + } + /** + * Save model artifacts to browser local storage. + * + * See the documentation to `browserLocalStorage` for details on the saved + * artifacts. + * + * @param modelArtifacts The model artifacts to be stored. + * @returns An instance of SaveResult. + */ + BrowserLocalStorage.prototype.save = function (modelArtifacts) { + return __awaiter(this, void 0, void 0, function () { + var topology, weightSpecs, modelArtifactsInfo; + return __generator(this, function (_a) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error('BrowserLocalStorage.save() does not support saving model topology ' + + 'in binary formats yet.'); + } + else { + topology = JSON.stringify(modelArtifacts.modelTopology); + weightSpecs = JSON.stringify(modelArtifacts.weightSpecs); + modelArtifactsInfo = getModelArtifactsInfoForJSON(modelArtifacts); + try { + this.LS.setItem(this.keys.info, JSON.stringify(modelArtifactsInfo)); + this.LS.setItem(this.keys.topology, topology); + this.LS.setItem(this.keys.weightSpecs, weightSpecs); + this.LS.setItem(this.keys.weightData, arrayBufferToBase64String(modelArtifacts.weightData)); + this.LS.setItem(this.keys.modelMetadata, JSON.stringify({ + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + userDefinedMetadata: modelArtifacts.userDefinedMetadata + })); + return [2 /*return*/, { modelArtifactsInfo: modelArtifactsInfo }]; + } + catch (err) { + // If saving failed, clean up all items saved so far. + this.LS.removeItem(this.keys.info); + this.LS.removeItem(this.keys.topology); + this.LS.removeItem(this.keys.weightSpecs); + this.LS.removeItem(this.keys.weightData); + this.LS.removeItem(this.keys.modelMetadata); + throw new Error("Failed to save model '" + this.modelPath + "' to local storage: " + + "size quota being exceeded is a possible cause of this failure: " + + ("modelTopologyBytes=" + modelArtifactsInfo.modelTopologyBytes + ", ") + + ("weightSpecsBytes=" + modelArtifactsInfo.weightSpecsBytes + ", ") + + ("weightDataBytes=" + modelArtifactsInfo.weightDataBytes + ".")); + } + } + return [2 /*return*/]; + }); + }); + }; + /** + * Load a model from local storage. + * + * See the documentation to `browserLocalStorage` for details on the saved + * artifacts. + * + * @returns The loaded model (if loading succeeds). + */ + BrowserLocalStorage.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + var info, out, topology, weightSpecs, metadataString, metadata, weightDataBase64; + return __generator(this, function (_a) { + info = JSON.parse(this.LS.getItem(this.keys.info)); + if (info == null) { + throw new Error("In local storage, there is no model with name '" + this.modelPath + "'"); + } + if (info.modelTopologyType !== 'JSON') { + throw new Error('BrowserLocalStorage does not support loading non-JSON model ' + + 'topology yet.'); + } + out = {}; + topology = JSON.parse(this.LS.getItem(this.keys.topology)); + if (topology == null) { + throw new Error("In local storage, the topology of model '" + this.modelPath + "' " + + "is missing."); + } + out.modelTopology = topology; + weightSpecs = JSON.parse(this.LS.getItem(this.keys.weightSpecs)); + if (weightSpecs == null) { + throw new Error("In local storage, the weight specs of model '" + this.modelPath + "' " + + "are missing."); + } + out.weightSpecs = weightSpecs; + metadataString = this.LS.getItem(this.keys.modelMetadata); + if (metadataString != null) { + metadata = JSON.parse(metadataString); + out.format = metadata['format']; + out.generatedBy = metadata['generatedBy']; + out.convertedBy = metadata['convertedBy']; + out.userDefinedMetadata = metadata['userDefinedMetadata']; + } + weightDataBase64 = this.LS.getItem(this.keys.weightData); + if (weightDataBase64 == null) { + throw new Error("In local storage, the binary weight values of model " + + ("'" + this.modelPath + "' are missing.")); + } + out.weightData = base64StringToArrayBuffer(weightDataBase64); + return [2 /*return*/, out]; + }); + }); + }; + BrowserLocalStorage.URL_SCHEME = 'localstorage://'; + return BrowserLocalStorage; + }()); + var localStorageRouter = function (url) { + if (!env().getBool('IS_BROWSER')) { + return null; + } + else { + if (!Array.isArray(url) && url.startsWith(BrowserLocalStorage.URL_SCHEME)) { + return browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)); + } + else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(localStorageRouter); + IORouterRegistry.registerLoadRouter(localStorageRouter); + /** + * Factory function for local storage IOHandler. + * + * This `IOHandler` supports both `save` and `load`. + * + * For each model's saved artifacts, four items are saved to local storage. + * - `${PATH_SEPARATOR}/${modelPath}/info`: Contains meta-info about the + * model, such as date saved, type of the topology, size in bytes, etc. + * - `${PATH_SEPARATOR}/${modelPath}/topology`: Model topology. For Keras- + * style models, this is a stringized JSON. + * - `${PATH_SEPARATOR}/${modelPath}/weight_specs`: Weight specs of the + * model, can be used to decode the saved binary weight values (see + * item below). + * - `${PATH_SEPARATOR}/${modelPath}/weight_data`: Concatenated binary + * weight values, stored as a base64-encoded string. + * + * Saving may throw an `Error` if the total size of the artifacts exceed the + * browser-specific quota. + * + * @param modelPath A unique identifier for the model to be saved. Must be a + * non-empty string. + * @returns An instance of `IOHandler`, which can be used with, e.g., + * `tf.Model.save`. + */ + function browserLocalStorage(modelPath) { + return new BrowserLocalStorage(modelPath); + } + var BrowserLocalStorageManager = /** @class */ (function () { + function BrowserLocalStorageManager() { + assert(env().getBool('IS_BROWSER'), function () { return 'Current environment is not a web browser'; }); + assert(typeof window === 'undefined' || + typeof window.localStorage !== 'undefined', function () { return 'Current browser does not appear to support localStorage'; }); + this.LS = window.localStorage; + } + BrowserLocalStorageManager.prototype.listModels = function () { + return __awaiter(this, void 0, void 0, function () { + var out, prefix, suffix, i, key, modelPath; + return __generator(this, function (_a) { + out = {}; + prefix = PATH_PREFIX + PATH_SEPARATOR; + suffix = PATH_SEPARATOR + INFO_SUFFIX; + for (i = 0; i < this.LS.length; ++i) { + key = this.LS.key(i); + if (key.startsWith(prefix) && key.endsWith(suffix)) { + modelPath = getModelPathFromKey(key); + out[modelPath] = JSON.parse(this.LS.getItem(key)); + } + } + return [2 /*return*/, out]; + }); + }); + }; + BrowserLocalStorageManager.prototype.removeModel = function (path) { + return __awaiter(this, void 0, void 0, function () { + var keys, info; + return __generator(this, function (_a) { + path = maybeStripScheme$1(path); + keys = getModelKeys(path); + if (this.LS.getItem(keys.info) == null) { + throw new Error("Cannot find model at path '" + path + "'"); + } + info = JSON.parse(this.LS.getItem(keys.info)); + this.LS.removeItem(keys.info); + this.LS.removeItem(keys.topology); + this.LS.removeItem(keys.weightSpecs); + this.LS.removeItem(keys.weightData); + return [2 /*return*/, info]; + }); + }); + }; + return BrowserLocalStorageManager; + }()); + if (env().getBool('IS_BROWSER')) { + // Wrap the construction and registration, to guard against browsers that + // don't support Local Storage. + try { + ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME, new BrowserLocalStorageManager()); + } + catch (err) { + } + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DEFAULT_FILE_NAME_PREFIX = 'model'; + var DEFAULT_JSON_EXTENSION_NAME = '.json'; + var DEFAULT_WEIGHT_DATA_EXTENSION_NAME = '.weights.bin'; + function defer(f) { + return new Promise(function (resolve) { return setTimeout(resolve); }).then(f); + } + var BrowserDownloads = /** @class */ (function () { + function BrowserDownloads(fileNamePrefix) { + if (!env().getBool('IS_BROWSER')) { + // TODO(cais): Provide info on what IOHandlers are available under the + // current environment. + throw new Error('browserDownloads() cannot proceed because the current environment ' + + 'is not a browser.'); + } + if (fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)) { + fileNamePrefix = fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length); + } + if (fileNamePrefix == null || fileNamePrefix.length === 0) { + fileNamePrefix = DEFAULT_FILE_NAME_PREFIX; + } + this.modelTopologyFileName = fileNamePrefix + DEFAULT_JSON_EXTENSION_NAME; + this.weightDataFileName = + fileNamePrefix + DEFAULT_WEIGHT_DATA_EXTENSION_NAME; + } + BrowserDownloads.prototype.save = function (modelArtifacts) { + return __awaiter(this, void 0, void 0, function () { + var weightsURL, weightsManifest, modelTopologyAndWeightManifest, modelTopologyAndWeightManifestURL, jsonAnchor_1, weightDataAnchor_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (typeof (document) === 'undefined') { + throw new Error('Browser downloads are not supported in ' + + 'this environment since `document` is not present'); + } + weightsURL = window.URL.createObjectURL(new Blob([modelArtifacts.weightData], { type: 'application/octet-stream' })); + if (!(modelArtifacts.modelTopology instanceof ArrayBuffer)) return [3 /*break*/, 1]; + throw new Error('BrowserDownloads.save() does not support saving model topology ' + + 'in binary formats yet.'); + case 1: + weightsManifest = [{ + paths: ['./' + this.weightDataFileName], + weights: modelArtifacts.weightSpecs + }]; + modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + weightsManifest: weightsManifest + }; + modelTopologyAndWeightManifestURL = window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: 'application/json' })); + jsonAnchor_1 = this.jsonAnchor == null ? document.createElement('a') : + this.jsonAnchor; + jsonAnchor_1.download = this.modelTopologyFileName; + jsonAnchor_1.href = modelTopologyAndWeightManifestURL; + // Trigger downloads by evoking a click event on the download anchors. + // When multiple downloads are started synchronously, Firefox will only + // save the last one. + return [4 /*yield*/, defer(function () { return jsonAnchor_1.dispatchEvent(new MouseEvent('click')); })]; + case 2: + // Trigger downloads by evoking a click event on the download anchors. + // When multiple downloads are started synchronously, Firefox will only + // save the last one. + _a.sent(); + if (!(modelArtifacts.weightData != null)) return [3 /*break*/, 4]; + weightDataAnchor_1 = this.weightDataAnchor == null ? + document.createElement('a') : + this.weightDataAnchor; + weightDataAnchor_1.download = this.weightDataFileName; + weightDataAnchor_1.href = weightsURL; + return [4 /*yield*/, defer(function () { return weightDataAnchor_1.dispatchEvent(new MouseEvent('click')); })]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/, { modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts) }]; + } + }); + }); + }; + BrowserDownloads.URL_SCHEME = 'downloads://'; + return BrowserDownloads; + }()); + var BrowserFiles = /** @class */ (function () { + function BrowserFiles(files) { + if (files == null || files.length < 1) { + throw new Error("When calling browserFiles, at least 1 file is required, " + + ("but received " + files)); + } + this.files = files; + } + BrowserFiles.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + var jsonFile, weightFiles; + var _this = this; + return __generator(this, function (_a) { + jsonFile = this.files[0]; + weightFiles = this.files.slice(1); + return [2 /*return*/, new Promise(function (resolve, reject) { + var jsonReader = new FileReader(); + jsonReader.onload = function (event) { + // tslint:disable-next-line:no-any + var modelJSON = JSON.parse(event.target.result); + var modelTopology = modelJSON.modelTopology; + if (modelTopology == null) { + reject(new Error("modelTopology field is missing from file " + jsonFile.name)); + return; + } + if (weightFiles.length === 0) { + resolve({ modelTopology: modelTopology }); + } + var weightsManifest = modelJSON.weightsManifest; + if (weightsManifest == null) { + reject(new Error("weightManifest field is missing from file " + jsonFile.name)); + return; + } + var pathToFile; + try { + pathToFile = + _this.checkManifestAndWeightFiles(weightsManifest, weightFiles); + } + catch (err) { + reject(err); + return; + } + var weightSpecs = []; + var paths = []; + var perFileBuffers = []; + weightsManifest.forEach(function (weightsGroup) { + weightsGroup.paths.forEach(function (path) { + paths.push(path); + perFileBuffers.push(null); + }); + weightSpecs.push.apply(weightSpecs, weightsGroup.weights); + }); + weightsManifest.forEach(function (weightsGroup) { + weightsGroup.paths.forEach(function (path) { + var weightFileReader = new FileReader(); + weightFileReader.onload = function (event) { + // tslint:disable-next-line:no-any + var weightData = event.target.result; + var index = paths.indexOf(path); + perFileBuffers[index] = weightData; + if (perFileBuffers.indexOf(null) === -1) { + resolve({ + modelTopology: modelTopology, + weightSpecs: weightSpecs, + weightData: concatenateArrayBuffers(perFileBuffers), + format: modelJSON.format, + generatedBy: modelJSON.generatedBy, + convertedBy: modelJSON.convertedBy, + userDefinedMetadata: modelJSON.userDefinedMetadata + }); + } + }; + weightFileReader.onerror = function (error) { + return reject("Failed to weights data from file of path '" + path + "'."); + }; + weightFileReader.readAsArrayBuffer(pathToFile[path]); + }); + }); + }; + jsonReader.onerror = function (error) { return reject("Failed to read model topology and weights manifest JSON " + + ("from file '" + jsonFile.name + "'. BrowserFiles supports loading ") + + "Keras-style tf.Model artifacts only."); }; + jsonReader.readAsText(jsonFile); + })]; + }); + }); + }; + /** + * Check the compatibility between weights manifest and weight files. + */ + BrowserFiles.prototype.checkManifestAndWeightFiles = function (manifest, files) { + var basenames = []; + var fileNames = files.map(function (file) { return basename(file.name); }); + var pathToFile = {}; + for (var _i = 0, manifest_1 = manifest; _i < manifest_1.length; _i++) { + var group = manifest_1[_i]; + group.paths.forEach(function (path) { + var pathBasename = basename(path); + if (basenames.indexOf(pathBasename) !== -1) { + throw new Error("Duplicate file basename found in weights manifest: " + + ("'" + pathBasename + "'")); + } + basenames.push(pathBasename); + if (fileNames.indexOf(pathBasename) === -1) { + throw new Error("Weight file with basename '" + pathBasename + "' is not provided."); + } + else { + pathToFile[path] = files[fileNames.indexOf(pathBasename)]; + } + }); + } + if (basenames.length !== files.length) { + throw new Error("Mismatch in the number of files in weights manifest " + + ("(" + basenames.length + ") and the number of weight files provided ") + + ("(" + files.length + ").")); + } + return pathToFile; + }; + return BrowserFiles; + }()); + var browserDownloadsRouter = function (url) { + if (!env().getBool('IS_BROWSER')) { + return null; + } + else { + if (!Array.isArray(url) && url.startsWith(BrowserDownloads.URL_SCHEME)) { + return browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)); + } + else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(browserDownloadsRouter); + /** + * Creates an IOHandler that triggers file downloads from the browser. + * + * The returned `IOHandler` instance can be used as model exporting methods such + * as `tf.Model.save` and supports only saving. + * + * ```js + * const model = tf.sequential(); + * model.add(tf.layers.dense( + * {units: 1, inputShape: [10], activation: 'sigmoid'})); + * const saveResult = await model.save('downloads://mymodel'); + * // This will trigger downloading of two files: + * // 'mymodel.json' and 'mymodel.weights.bin'. + * console.log(saveResult); + * ``` + * + * @param fileNamePrefix Prefix name of the files to be downloaded. For use with + * `tf.Model`, `fileNamePrefix` should follow either of the following two + * formats: + * 1. `null` or `undefined`, in which case the default file + * names will be used: + * - 'model.json' for the JSON file containing the model topology and + * weights manifest. + * - 'model.weights.bin' for the binary file containing the binary weight + * values. + * 2. A single string or an Array of a single string, as the file name prefix. + * For example, if `'foo'` is provided, the downloaded JSON + * file and binary weights file will be named 'foo.json' and + * 'foo.weights.bin', respectively. + * @param config Additional configuration for triggering downloads. + * @returns An instance of `BrowserDownloads` `IOHandler`. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Loading', + * namespace: 'io', + * ignoreCI: true + * } + */ + function browserDownloads(fileNamePrefix) { + if (fileNamePrefix === void 0) { fileNamePrefix = 'model'; } + return new BrowserDownloads(fileNamePrefix); + } + /** + * Creates an IOHandler that loads model artifacts from user-selected files. + * + * This method can be used for loading from files such as user-selected files + * in the browser. + * When used in conjunction with `tf.loadLayersModel`, an instance of + * `tf.LayersModel` (Keras-style) can be constructed from the loaded artifacts. + * + * ```js + * // Note: This code snippet won't run properly without the actual file input + * // elements in the HTML DOM. + * + * // Suppose there are two HTML file input (``) + * // elements. + * const uploadJSONInput = document.getElementById('upload-json'); + * const uploadWeightsInput = document.getElementById('upload-weights'); + * const model = await tf.loadLayersModel(tf.io.browserFiles( + * [uploadJSONInput.files[0], uploadWeightsInput.files[0]])); + * ``` + * + * @param files `File`s to load from. Currently, this function supports only + * loading from files that contain Keras-style models (i.e., `tf.Model`s), for + * which an `Array` of `File`s is expected (in that order): + * - A JSON file containing the model topology and weight manifest. + * - Optionally, One or more binary files containing the binary weights. + * These files must have names that match the paths in the `weightsManifest` + * contained by the aforementioned JSON file, or errors will be thrown + * during loading. These weights files have the same format as the ones + * generated by `tensorflowjs_converter` that comes with the `tensorflowjs` + * Python PIP package. If no weights files are provided, only the model + * topology will be loaded from the JSON file above. + * @returns An instance of `Files` `IOHandler`. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Loading', + * namespace: 'io', + * ignoreCI: true + * } + */ + function browserFiles(files) { + return new BrowserFiles(files); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Monitor Promise.all progress, fire onProgress callback function. + * + * @param promises Promise list going to be monitored + * @param onProgress Callback function. Fired when a promise resolved. + * @param startFraction Optional fraction start. Default to 0. + * @param endFraction Optional fraction end. Default to 1. + */ + function monitorPromisesProgress(promises, onProgress, startFraction, endFraction) { + checkPromises(promises); + startFraction = startFraction == null ? 0 : startFraction; + endFraction = endFraction == null ? 1 : endFraction; + checkFraction(startFraction, endFraction); + var resolvedPromise = 0; + var registerMonitor = function (promise) { + promise.then(function (value) { + var fraction = startFraction + + ++resolvedPromise / promises.length * (endFraction - startFraction); + // pass fraction as parameter to callback function. + onProgress(fraction); + return value; + }); + return promise; + }; + function checkPromises(promises) { + assert(promises != null && Array.isArray(promises) && promises.length > 0, function () { return 'promises must be a none empty array'; }); + } + function checkFraction(startFraction, endFraction) { + assert(startFraction >= 0 && startFraction <= 1, function () { return "Progress fraction must be in range [0, 1], but " + + ("got startFraction " + startFraction); }); + assert(endFraction >= 0 && endFraction <= 1, function () { return "Progress fraction must be in range [0, 1], but " + + ("got endFraction " + endFraction); }); + assert(endFraction >= startFraction, function () { return "startFraction must be no more than endFraction, but " + + ("got startFraction " + startFraction + " and endFraction ") + + ("" + endFraction); }); + } + return Promise.all(promises.map(registerMonitor)); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Reads binary weights data from a number of URLs. + * + * @param fetchURLs URLs to send the HTTP requests at, using `fetch` calls. + * @param requestOptions RequestInit (options) for the HTTP requests. + * @param fetchFunc Optional overriding value for the `window.fetch` function. + * @param onProgress Optional, progress callback function, fired periodically + * before the load is completed. + * @returns A `Promise` of an Array of `ArrayBuffer`. The Array has the same + * length as `fetchURLs`. + */ + function loadWeightsAsArrayBuffer(fetchURLs, loadOptions) { + return __awaiter(this, void 0, void 0, function () { + var fetchFunc, requests, fetchStartFraction, fetchEndFraction, responses, _a, bufferPromises, bufferStartFraction, bufferEndFraction, buffers, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (loadOptions == null) { + loadOptions = {}; + } + fetchFunc = loadOptions.fetchFunc == null ? env().platform.fetch : + loadOptions.fetchFunc; + requests = fetchURLs.map(function (fetchURL) { + return fetchFunc(fetchURL, loadOptions.requestInit, { isBinary: true }); + }); + fetchStartFraction = 0; + fetchEndFraction = 0.5; + if (!(loadOptions.onProgress == null)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(requests)]; + case 1: + _a = _c.sent(); + return [3 /*break*/, 4]; + case 2: return [4 /*yield*/, monitorPromisesProgress(requests, loadOptions.onProgress, fetchStartFraction, fetchEndFraction)]; + case 3: + _a = _c.sent(); + _c.label = 4; + case 4: + responses = _a; + bufferPromises = responses.map(function (response) { return response.arrayBuffer(); }); + bufferStartFraction = 0.5; + bufferEndFraction = 1; + if (!(loadOptions.onProgress == null)) return [3 /*break*/, 6]; + return [4 /*yield*/, Promise.all(bufferPromises)]; + case 5: + _b = _c.sent(); + return [3 /*break*/, 8]; + case 6: return [4 /*yield*/, monitorPromisesProgress(bufferPromises, loadOptions.onProgress, bufferStartFraction, bufferEndFraction)]; + case 7: + _b = _c.sent(); + _c.label = 8; + case 8: + buffers = _b; + return [2 /*return*/, buffers]; + } + }); + }); + } + /** + * Reads a weights manifest JSON configuration, fetches the weights and + * returns them as `Tensor`s. + * + * @param manifest The weights manifest JSON. + * @param filePathPrefix The path prefix for filenames given in the manifest. + * Defaults to the empty string. + * @param weightNames The names of the weights to be fetched. + */ + function loadWeights(manifest, filePathPrefix, weightNames, requestInit) { + if (filePathPrefix === void 0) { filePathPrefix = ''; } + return __awaiter(this, void 0, void 0, function () { + var fetchWeights, loadWeights; + return __generator(this, function (_a) { + fetchWeights = function (fetchUrls) { + return loadWeightsAsArrayBuffer(fetchUrls, { requestInit: requestInit }); + }; + loadWeights = weightsLoaderFactory(fetchWeights); + return [2 /*return*/, loadWeights(manifest, filePathPrefix, weightNames)]; + }); + }); + } + /** + * Creates a function, which reads a weights manifest JSON configuration, + * fetches the weight files using the specified function and returns them as + * `Tensor`s. + * + * ```js + * // example for creating a nodejs weight loader, which reads the weight files + * // from disk using fs.readFileSync + * + * import * as fs from 'fs' + * + * const fetchWeightsFromDisk = (filePaths: string[]) => + * filePaths.map(filePath => fs.readFileSync(filePath).buffer) + * + * const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk) + * + * const manifest = JSON.parse( + * fs.readFileSync('./my_model-weights_manifest').toString() + * ) + * const weightMap = await loadWeights(manifest, './') + * ``` + * @param fetchWeightsFunction The function used for fetching the weight files. + * @returns Weight loading function. + */ + function weightsLoaderFactory(fetchWeightsFunction) { + var _this = this; + return function (manifest, filePathPrefix, weightNames) { + if (filePathPrefix === void 0) { filePathPrefix = ''; } + return __awaiter(_this, void 0, void 0, function () { + var groupIndicesToFetchMap, groupWeightsToFetch, weightsFound, allManifestWeightNames, weightsNotFound, groupIndicesToFetch, fetchUrls, buffers, weightsTensorMap, bufferIndexOffset; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + groupIndicesToFetchMap = manifest.map(function () { return false; }); + groupWeightsToFetch = {}; + weightsFound = weightNames != null ? weightNames.map(function () { return false; }) : []; + allManifestWeightNames = []; + manifest.forEach(function (manifestGroupConfig, groupIndex) { + var groupOffset = 0; + manifestGroupConfig.weights.forEach(function (weightsEntry) { + var rawDtype = ('quantization' in weightsEntry) ? + weightsEntry.quantization.dtype : + weightsEntry.dtype; + var weightsBytes = DTYPE_VALUE_SIZE_MAP[rawDtype] * + sizeFromShape(weightsEntry.shape); + var enqueueWeightsForFetchingFn = function () { + groupIndicesToFetchMap[groupIndex] = true; + if (groupWeightsToFetch[groupIndex] == null) { + groupWeightsToFetch[groupIndex] = []; + } + groupWeightsToFetch[groupIndex].push({ + manifestEntry: weightsEntry, + groupOffset: groupOffset, + sizeBytes: weightsBytes + }); + }; + if (weightNames != null) { + weightNames.forEach(function (weightName, weightIndex) { + if (weightName === weightsEntry.name) { + enqueueWeightsForFetchingFn(); + weightsFound[weightIndex] = true; + } + }); + } + else { + enqueueWeightsForFetchingFn(); + } + allManifestWeightNames.push(weightsEntry.name); + groupOffset += weightsBytes; + }); + }); + if (!weightsFound.every(function (found) { return found; })) { + weightsNotFound = weightNames.filter(function (_, i) { return !weightsFound[i]; }); + throw new Error("Could not find weights in manifest with names: " + + (weightsNotFound.join(', ') + ". \n") + + "Manifest JSON has weights with names: " + + (allManifestWeightNames.join(', ') + ".")); + } + groupIndicesToFetch = groupIndicesToFetchMap.reduce(function (accumulator, shouldFetch, i) { + if (shouldFetch) { + accumulator.push(i); + } + return accumulator; + }, []); + fetchUrls = []; + groupIndicesToFetch.forEach(function (i) { + manifest[i].paths.forEach(function (filepath) { + var fetchUrl = filePathPrefix + + (!filePathPrefix.endsWith('/') ? '/' : '') + filepath; + fetchUrls.push(fetchUrl); + }); + }); + return [4 /*yield*/, fetchWeightsFunction(fetchUrls)]; + case 1: + buffers = _a.sent(); + weightsTensorMap = {}; + bufferIndexOffset = 0; + groupIndicesToFetch.forEach(function (i) { + var numBuffers = manifest[i].paths.length; + var groupBytes = 0; + for (var i_1 = 0; i_1 < numBuffers; i_1++) { + groupBytes += buffers[bufferIndexOffset + i_1].byteLength; + } + // Create a buffer for the whole group. + var groupBuffer = new ArrayBuffer(groupBytes); + var groupByteBuffer = new Uint8Array(groupBuffer); + var groupBufferOffset = 0; + for (var i_2 = 0; i_2 < numBuffers; i_2++) { + var buffer = new Uint8Array(buffers[bufferIndexOffset + i_2]); + groupByteBuffer.set(buffer, groupBufferOffset); + groupBufferOffset += buffer.byteLength; + } + var weightsEntries = groupWeightsToFetch[i]; + weightsEntries.forEach(function (weightsEntry) { + var byteBuffer = groupBuffer.slice(weightsEntry.groupOffset, weightsEntry.groupOffset + weightsEntry.sizeBytes); + var nameToTensorMap = decodeWeights(byteBuffer, [weightsEntry.manifestEntry]); + for (var name_1 in nameToTensorMap) { + weightsTensorMap[name_1] = nameToTensorMap[name_1]; + } + }); + bufferIndexOffset += numBuffers; + }); + return [2 /*return*/, weightsTensorMap]; + } + }); + }); + }; + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var OCTET_STREAM_MIME_TYPE = 'application/octet-stream'; + var JSON_TYPE = 'application/json'; + var HTTPRequest = /** @class */ (function () { + function HTTPRequest(path, loadOptions) { + this.DEFAULT_METHOD = 'POST'; + if (loadOptions == null) { + loadOptions = {}; + } + this.weightPathPrefix = loadOptions.weightPathPrefix; + this.onProgress = loadOptions.onProgress; + if (loadOptions.fetchFunc != null) { + assert(typeof loadOptions.fetchFunc === 'function', function () { return 'Must pass a function that matches the signature of ' + + '`fetch` (see ' + + 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)'; }); + this.fetch = loadOptions.fetchFunc; + } + else { + this.fetch = env().platform.fetch; + } + assert(path != null && path.length > 0, function () { return 'URL path for http must not be null, undefined or ' + + 'empty.'; }); + if (Array.isArray(path)) { + assert(path.length === 2, function () { return 'URL paths for http must have a length of 2, ' + + ("(actual length is " + path.length + ")."); }); + } + this.path = path; + if (loadOptions.requestInit != null && + loadOptions.requestInit.body != null) { + throw new Error('requestInit is expected to have no pre-existing body, but has one.'); + } + this.requestInit = loadOptions.requestInit || {}; + } + HTTPRequest.prototype.save = function (modelArtifacts) { + return __awaiter(this, void 0, void 0, function () { + var init, weightsManifest, modelTopologyAndWeightManifest, response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error('BrowserHTTPRequest.save() does not support saving model topology ' + + 'in binary formats yet.'); + } + init = Object.assign({ method: this.DEFAULT_METHOD }, this.requestInit); + init.body = new FormData(); + weightsManifest = [{ + paths: ['./model.weights.bin'], + weights: modelArtifacts.weightSpecs, + }]; + modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + userDefinedMetadata: modelArtifacts.userDefinedMetadata, + weightsManifest: weightsManifest + }; + init.body.append('model.json', new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: JSON_TYPE }), 'model.json'); + if (modelArtifacts.weightData != null) { + init.body.append('model.weights.bin', new Blob([modelArtifacts.weightData], { type: OCTET_STREAM_MIME_TYPE }), 'model.weights.bin'); + } + return [4 /*yield*/, this.fetch(this.path, init)]; + case 1: + response = _a.sent(); + if (response.ok) { + return [2 /*return*/, { + modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts), + responses: [response], + }]; + } + else { + throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status " + + (response.status + ".")); + } + } + }); + }); + }; + /** + * Load model artifacts via HTTP request(s). + * + * See the documentation to `tf.io.http` for details on the saved + * artifacts. + * + * @returns The loaded model artifacts (if loading succeeds). + */ + HTTPRequest.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + var modelConfigRequest, modelConfig, e_1, message, modelTopology, weightsManifest, generatedBy, convertedBy, format, userDefinedMetadata, weightSpecs, weightData, results; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.fetch(this.path, this.requestInit)]; + case 1: + modelConfigRequest = _a.sent(); + if (!modelConfigRequest.ok) { + throw new Error("Request to " + this.path + " failed with status code " + + (modelConfigRequest.status + ". Please verify this URL points to ") + + "the model JSON of the model to load."); + } + _a.label = 2; + case 2: + _a.trys.push([2, 4, , 5]); + return [4 /*yield*/, modelConfigRequest.json()]; + case 3: + modelConfig = _a.sent(); + return [3 /*break*/, 5]; + case 4: + e_1 = _a.sent(); + message = "Failed to parse model JSON of response from " + this.path + "."; + // TODO(nsthorat): Remove this after some time when we're comfortable that + // .pb files are mostly gone. + if (this.path.endsWith('.pb')) { + message += ' Your path contains a .pb file extension. ' + + 'Support for .pb models have been removed in TensorFlow.js 1.0 ' + + 'in favor of .json models. You can re-convert your Python ' + + 'TensorFlow model using the TensorFlow.js 1.0 conversion scripts ' + + 'or you can convert your.pb models with the \'pb2json\'' + + 'NPM script in the tensorflow/tfjs-converter repository.'; + } + else { + message += ' Please make sure the server is serving valid ' + + 'JSON for this request.'; + } + throw new Error(message); + case 5: + modelTopology = modelConfig.modelTopology; + weightsManifest = modelConfig.weightsManifest; + generatedBy = modelConfig.generatedBy; + convertedBy = modelConfig.convertedBy; + format = modelConfig.format; + userDefinedMetadata = modelConfig.userDefinedMetadata; + // We do not allow both modelTopology and weightsManifest to be missing. + if (modelTopology == null && weightsManifest == null) { + throw new Error("The JSON from HTTP path " + this.path + " contains neither model " + + "topology or manifest for weights."); + } + if (!(weightsManifest != null)) return [3 /*break*/, 7]; + return [4 /*yield*/, this.loadWeights(weightsManifest)]; + case 6: + results = _a.sent(); + weightSpecs = results[0], weightData = results[1]; + _a.label = 7; + case 7: return [2 /*return*/, { + modelTopology: modelTopology, + weightSpecs: weightSpecs, + weightData: weightData, + userDefinedMetadata: userDefinedMetadata, + generatedBy: generatedBy, + convertedBy: convertedBy, + format: format + }]; + } + }); + }); + }; + HTTPRequest.prototype.loadWeights = function (weightsManifest) { + return __awaiter(this, void 0, void 0, function () { + var weightPath, _a, prefix, suffix, pathPrefix, weightSpecs, _i, weightsManifest_1, entry, fetchURLs, buffers; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + weightPath = Array.isArray(this.path) ? this.path[1] : this.path; + _a = parseUrl(weightPath), prefix = _a[0], suffix = _a[1]; + pathPrefix = this.weightPathPrefix || prefix; + weightSpecs = []; + for (_i = 0, weightsManifest_1 = weightsManifest; _i < weightsManifest_1.length; _i++) { + entry = weightsManifest_1[_i]; + weightSpecs.push.apply(weightSpecs, entry.weights); + } + fetchURLs = []; + weightsManifest.forEach(function (weightsGroup) { + weightsGroup.paths.forEach(function (path) { + fetchURLs.push(pathPrefix + path + suffix); + }); + }); + return [4 /*yield*/, loadWeightsAsArrayBuffer(fetchURLs, { + requestInit: this.requestInit, + fetchFunc: this.fetch, + onProgress: this.onProgress + })]; + case 1: + buffers = _b.sent(); + return [2 /*return*/, [weightSpecs, concatenateArrayBuffers(buffers)]]; + } + }); + }); + }; + HTTPRequest.URL_SCHEME_REGEX = /^https?:\/\//; + return HTTPRequest; + }()); + /** + * Extract the prefix and suffix of the url, where the prefix is the path before + * the last file, and suffix is the search params after the last file. + * ``` + * const url = 'http://tfhub.dev/model/1/tensorflowjs_model.pb?tfjs-format=file' + * [prefix, suffix] = parseUrl(url) + * // prefix = 'http://tfhub.dev/model/1/' + * // suffix = '?tfjs-format=file' + * ``` + * @param url the model url to be parsed. + */ + function parseUrl(url) { + var lastSlash = url.lastIndexOf('/'); + var lastSearchParam = url.lastIndexOf('?'); + var prefix = url.substring(0, lastSlash); + var suffix = lastSearchParam > lastSlash ? url.substring(lastSearchParam) : ''; + return [prefix + '/', suffix]; + } + function isHTTPScheme(url) { + return url.match(HTTPRequest.URL_SCHEME_REGEX) != null; + } + var httpRouter = function (url, loadOptions) { + if (typeof fetch === 'undefined' && + (loadOptions == null || loadOptions.fetchFunc == null)) { + // `http` uses `fetch` or `node-fetch`, if one wants to use it in + // an environment that is not the browser or node they have to setup a + // global fetch polyfill. + return null; + } + else { + var isHTTP = true; + if (Array.isArray(url)) { + isHTTP = url.every(function (urlItem) { return isHTTPScheme(urlItem); }); + } + else { + isHTTP = isHTTPScheme(url); + } + if (isHTTP) { + return http(url, loadOptions); + } + } + return null; + }; + IORouterRegistry.registerSaveRouter(httpRouter); + IORouterRegistry.registerLoadRouter(httpRouter); + /** + * Creates an IOHandler subtype that sends model artifacts to HTTP server. + * + * An HTTP request of the `multipart/form-data` mime type will be sent to the + * `path` URL. The form data includes artifacts that represent the topology + * and/or weights of the model. In the case of Keras-style `tf.Model`, two + * blobs (files) exist in form-data: + * - A JSON file consisting of `modelTopology` and `weightsManifest`. + * - A binary weights file consisting of the concatenated weight values. + * These files are in the same format as the one generated by + * [tfjs_converter](https://js.tensorflow.org/tutorials/import-keras.html). + * + * The following code snippet exemplifies the client-side code that uses this + * function: + * + * ```js + * const model = tf.sequential(); + * model.add( + * tf.layers.dense({units: 1, inputShape: [100], activation: 'sigmoid'})); + * + * const saveResult = await model.save(tf.io.http( + * 'http://model-server:5000/upload', {requestInit: {method: 'PUT'}})); + * console.log(saveResult); + * ``` + * + * If the default `POST` method is to be used, without any custom parameters + * such as headers, you can simply pass an HTTP or HTTPS URL to `model.save`: + * + * ```js + * const saveResult = await model.save('http://model-server:5000/upload'); + * ``` + * + * The following GitHub Gist + * https://gist.github.com/dsmilkov/1b6046fd6132d7408d5257b0976f7864 + * implements a server based on [flask](https://github.com/pallets/flask) that + * can receive the request. Upon receiving the model artifacts via the requst, + * this particular server reconsistutes instances of [Keras + * Models](https://keras.io/models/model/) in memory. + * + * + * @param path A URL path to the model. + * Can be an absolute HTTP path (e.g., + * 'http://localhost:8000/model-upload)') or a relative path (e.g., + * './model-upload'). + * @param requestInit Request configurations to be used when sending + * HTTP request to server using `fetch`. It can contain fields such as + * `method`, `credentials`, `headers`, `mode`, etc. See + * https://developer.mozilla.org/en-US/docs/Web/API/Request/Request + * for more information. `requestInit` must not have a body, because the + * body will be set by TensorFlow.js. File blobs representing the model + * topology (filename: 'model.json') and the weights of the model (filename: + * 'model.weights.bin') will be appended to the body. If `requestInit` has a + * `body`, an Error will be thrown. + * @param loadOptions Optional configuration for the loading. It includes the + * following fields: + * - weightPathPrefix Optional, this specifies the path prefix for weight + * files, by default this is calculated from the path param. + * - fetchFunc Optional, custom `fetch` function. E.g., in Node.js, + * the `fetch` from node-fetch can be used here. + * - onProgress Optional, progress callback function, fired periodically + * before the load is completed. + * @returns An instance of `IOHandler`. + */ + /** + * @doc { + * heading: 'Models', + * subheading: 'Loading', + * namespace: 'io', + * ignoreCI: true + * } + */ + function http(path, loadOptions) { + return new HTTPRequest(path, loadOptions); + } + /** + * Deprecated. Use `tf.io.http`. + * @param path + * @param loadOptions + */ + function browserHTTPRequest(path, loadOptions) { + return http(path, loadOptions); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PassthroughLoader = /** @class */ (function () { + function PassthroughLoader(modelArtifacts) { + this.modelArtifacts = modelArtifacts; + } + PassthroughLoader.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this.modelArtifacts]; + }); + }); + }; + return PassthroughLoader; + }()); + var PassthroughSaver = /** @class */ (function () { + function PassthroughSaver(saveHandler) { + this.saveHandler = saveHandler; + } + PassthroughSaver.prototype.save = function (modelArtifacts) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this.saveHandler(modelArtifacts)]; + }); + }); + }; + return PassthroughSaver; + }()); + /** + * Creates an IOHandler that loads model artifacts from memory. + * + * When used in conjunction with `tf.loadLayersModel`, an instance of + * `tf.LayersModel` (Keras-style) can be constructed from the loaded artifacts. + * + * ```js + * const model = await tf.loadLayersModel(tf.io.fromMemory( + * modelTopology, weightSpecs, weightData)); + * ``` + * + * @param modelArtifacts a object containing model topology (i.e., parsed from + * the JSON format). + * @param weightSpecs An array of `WeightsManifestEntry` objects describing the + * names, shapes, types, and quantization of the weight data. + * @param weightData A single `ArrayBuffer` containing the weight data, + * concatenated in the order described by the weightSpecs. + * @param trainingConfig Model training configuration. Optional. + * + * @returns A passthrough `IOHandler` that simply loads the provided data. + */ + function fromMemory(modelArtifacts, weightSpecs, weightData, trainingConfig) { + if (arguments.length === 1) { + var isModelArtifacts = modelArtifacts.modelTopology != null || + modelArtifacts.weightSpecs != null; + if (isModelArtifacts) { + return new PassthroughLoader(modelArtifacts); + } + else { + // Legacy support: with only modelTopology. + // TODO(cais): Remove this deprecated API. + console.warn('Please call tf.io.fromMemory() with only one argument. ' + + 'The argument should be of type ModelArtifacts. ' + + 'The multi-argument signature of tf.io.fromMemory() has been ' + + 'deprecated and will be removed in a future release.'); + return new PassthroughLoader({ modelTopology: modelArtifacts }); + } + } + else { + // Legacy support. + // TODO(cais): Remove this deprecated API. + console.warn('Please call tf.io.fromMemory() with only one argument. ' + + 'The argument should be of type ModelArtifacts. ' + + 'The multi-argument signature of tf.io.fromMemory() has been ' + + 'deprecated and will be removed in a future release.'); + return new PassthroughLoader({ + modelTopology: modelArtifacts, + weightSpecs: weightSpecs, + weightData: weightData, + trainingConfig: trainingConfig + }); + } + } + /** + * Creates an IOHandler that passes saved model artifacts to a callback. + * + * ```js + * function handleSave(artifacts) { + * // ... do something with the artifacts ... + * return {modelArtifactsInfo: {...}, ...}; + * } + * + * const saveResult = model.save(tf.io.withSaveHandler(handleSave)); + * ``` + * + * @param saveHandler A function that accepts a `ModelArtifacts` and returns a + * `SaveResult`. + */ + function withSaveHandler(saveHandler) { + return new PassthroughSaver(saveHandler); + } + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + + var io = { + __proto__: null, + browserFiles: browserFiles, + browserHTTPRequest: browserHTTPRequest, + concatenateArrayBuffers: concatenateArrayBuffers, + decodeWeights: decodeWeights, + encodeWeights: encodeWeights, + fromMemory: fromMemory, + getLoadHandlers: getLoadHandlers, + getModelArtifactsInfoForJSON: getModelArtifactsInfoForJSON, + getSaveHandlers: getSaveHandlers, + http: http, + isHTTPScheme: isHTTPScheme, + loadWeights: loadWeights, + registerLoadRouter: registerLoadRouter, + registerSaveRouter: registerSaveRouter, + weightsLoaderFactory: weightsLoaderFactory, + withSaveHandler: withSaveHandler, + copyModel: copyModel, + listModels: listModels, + moveModel: moveModel, + removeModel: removeModel + }; + + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates a one-hot `tf.Tensor`. The locations represented by `indices` take + * value `onValue` (defaults to 1), while all other locations take value + * `offValue` (defaults to 0). If `indices` is rank `R`, the output has rank + * `R+1` with the last axis of size `depth`. + * + * ```js + * tf.oneHot(tf.tensor1d([0, 1], 'int32'), 3).print(); + * ``` + * + * @param indices `tf.Tensor` of indices with dtype `int32`. + * @param depth The depth of the one hot dimension. + * @param onValue A number used to fill in the output when the index matches + * the location. + * @param offValue A number used to fill in the output when the index does + * not match the location. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function oneHot_(indices, depth, onValue, offValue) { + if (onValue === void 0) { onValue = 1; } + if (offValue === void 0) { offValue = 0; } + if (depth < 2) { + throw new Error("Error in oneHot: depth must be >=2, but it is " + depth); + } + var $indices = convertToTensor(indices, 'indices', 'oneHot', 'int32'); + var outShape = $indices.shape.concat([depth]); + var forward = function (backend, save) { + save([$indices]); + return reshape(backend.oneHot($indices.flatten(), depth, onValue, offValue), outShape); + }; + var inputs = { indices: $indices }; + var attrs = { depth: depth, onValue: onValue, offValue: offValue }; + return ENGINE.runKernelFunc(forward, inputs, null /* grad */, OneHot, attrs); + } + var oneHot = op({ oneHot_: oneHot_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Computes the confusion matrix from true labels and predicted labels. + * + * ```js + * const labels = tf.tensor1d([0, 1, 2, 1, 0], 'int32'); + * const predictions = tf.tensor1d([0, 2, 2, 1, 0], 'int32'); + * const numClasses = 3; + * const out = tf.math.confusionMatrix(labels, predictions, numClasses); + * out.print(); + * // Expected output matrix: + * // [[2, 0, 0], + * // [0, 1, 1], + * // [0, 0, 1]] + * ``` + * + * @param labels The target labels, assumed to be 0-based integers + * for the classes. The shape is `[numExamples]`, where + * `numExamples` is the number of examples included. + * @param predictions The predicted classes, assumed to be + * 0-based integers for the classes. Must have the same shape as `labels`. + * @param numClasses Number of all classes, as an integer. + * Its value must be larger than the largest element in `labels` and + * `predictions`. + * @returns The confusion matrix as a int32-type 2D tensor. The value at + * row `r` and column `c` is the number of times examples of actual class + * `r` were predicted as class `c`. + */ + /** @doc {heading: 'Operations', subheading: 'Evaluation'} */ + function confusionMatrix_(labels, predictions, numClasses) { + var $labels = convertToTensor(labels, 'labels', 'confusionMatrix'); + var $predictions = convertToTensor(predictions, 'predictions', 'confusionMatrix'); + assert(numClasses == null || numClasses > 0 && Number.isInteger(numClasses), function () { return "If provided, numClasses must be a positive integer, " + + ("but got " + numClasses); }); + assert($labels.rank === 1, function () { return "Expected the rank of labels to be 1, but got " + $labels.rank; }); + assert($predictions.rank === 1, function () { return "Expected the rank of predictions to be 1, " + + ("but got " + $predictions.rank); }); + assert($labels.shape[0] === $predictions.shape[0], function () { return "Mismatch in the number of examples: " + + ($labels.shape[0] + " vs. " + $predictions.shape[0] + ". ") + + "Labels and predictions should have the same number of elements."; }); + assert(numClasses > 0 && Number.isInteger(numClasses), function () { return "numClasses is required to be a positive integer, but got " + + ("" + numClasses); }); + // TODO(cais): In the future, if oneHot supports tensors inputs for + // `numClasses`, `confusionMatrix` can make `numClasses` optional. + var oneHotLabels = oneHot($labels.asType('int32'), numClasses); + var oneHotPredictions = oneHot($predictions.asType('int32'), numClasses); + var oneHotLabelsT = oneHotLabels.transpose(); + return oneHotLabelsT.matMul(oneHotPredictions).asType('int32'); + } + var confusionMatrix = op({ confusionMatrix_: confusionMatrix_ }); + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + + var math = { + __proto__: null, + confusionMatrix: confusionMatrix + }; + + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + /** + * Creates rank-3 `tf.Tensor` with the provided values, shape and dtype. + * + * The same functionality can be achieved with `tf.tensor`, but in general + * we recommend using `tf.tensor3d` as it makes the code more readable. + * + * ```js + * // Pass a nested array. + * tf.tensor3d([[[1], [2]], [[3], [4]]]).print(); + * ``` + * ```js + * // Pass a flat array and specify a shape. + * tf.tensor3d([1, 2, 3, 4], [2, 2, 1]).print(); + * ``` + * + * @param values The values of the tensor. Can be nested array of numbers, + * or a flat array, or a `TypedArray`. + * @param shape The shape of the tensor. If not provided, it is inferred from + * `values`. + * @param dtype The data type. + */ + /** @doc {heading: 'Tensors', subheading: 'Creation'} */ + function tensor3d(values, shape, dtype) { + assertNonNull(values); + if (shape != null && shape.length !== 3) { + throw new Error('tensor3d() requires shape to have three numbers'); + } + var inferredShape = inferShape(values, dtype); + if (inferredShape.length !== 3 && inferredShape.length !== 1) { + throw new Error('tensor3d() requires values to be number[][][] or flat/TypedArray'); + } + if (inferredShape.length === 1 && shape == null) { + throw new Error('tensor3d() requires shape to be provided when `values` ' + + 'are a flat array'); + } + return makeTensor(values, shape, inferredShape, dtype); + } + + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var fromPixels2DContext; + /** + * Creates a `tf.Tensor` from an image. + * + * ```js + * const image = new ImageData(1, 1); + * image.data[0] = 100; + * image.data[1] = 150; + * image.data[2] = 200; + * image.data[3] = 255; + * + * tf.browser.fromPixels(image).print(); + * ``` + * + * @param pixels The input image to construct the tensor from. The + * supported image types are all 4-channel. You can also pass in an image + * object with following attributes: + * `{data: Uint8Array; width: number; height: number}` + * @param numChannels The number of channels of the output tensor. A + * numChannels value less than 4 allows you to ignore channels. Defaults to + * 3 (ignores alpha channel of input image). + */ + /** @doc {heading: 'Browser', namespace: 'browser', ignoreCI: true} */ + function fromPixels_(pixels, numChannels) { + if (numChannels === void 0) { numChannels = 3; } + // Sanity checks. + if (numChannels > 4) { + throw new Error('Cannot construct Tensor with more than 4 channels from pixels.'); + } + if (pixels == null) { + throw new Error('pixels passed to tf.browser.fromPixels() can not be null'); + } + var isPixelData = false; + var isImageData = false; + var isVideo = false; + var isImage = false; + var isCanvasLike = false; + if (pixels.data instanceof Uint8Array) { + isPixelData = true; + } + else if (typeof (ImageData) !== 'undefined' && pixels instanceof ImageData) { + isImageData = true; + } + else if (typeof (HTMLVideoElement) !== 'undefined' && + pixels instanceof HTMLVideoElement) { + isVideo = true; + } + else if (typeof (HTMLImageElement) !== 'undefined' && + pixels instanceof HTMLImageElement) { + isImage = true; + // tslint:disable-next-line: no-any + } + else if (pixels.getContext != null) { + isCanvasLike = true; + } + else { + throw new Error('pixels passed to tf.browser.fromPixels() must be either an ' + + "HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData " + + "in browser, or OffscreenCanvas, ImageData in webworker" + + " or {data: Uint32Array, width: number, height: number}, " + + ("but was " + pixels.constructor.name)); + } + if (isVideo) { + var HAVE_CURRENT_DATA_READY_STATE = 2; + if (isVideo && + pixels.readyState < + HAVE_CURRENT_DATA_READY_STATE) { + throw new Error('The video element has not loaded data yet. Please wait for ' + + '`loadeddata` event on the

      >>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14399]|0)+h|0;c[14399]=b;if(b>>>0>(c[14400]|0)>>>0)c[14400]=b;j=c[14297]|0;f:do if(j){b=57612;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14294]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14298]=c[14413];break}if(g>>>0<(c[14295]|0)>>>0)c[14295]=g;d=g+h|0;b=57612;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14294]|0)+i|0;c[14294]=v;c[14297]=k;c[k+4>>2]=v|1}else{if((c[14296]|0)==(b|0)){v=(c[14293]|0)+i|0;c[14293]=v;c[14296]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=57468+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14292]=c[14292]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=57468+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14292]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;zb=w;return v|0}b=57612;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14298]=c[14413];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14403];c[b+4>>2]=c[14404];c[b+8>>2]=c[14405];c[b+12>>2]=c[14406];c[14403]=g;c[14404]=h;c[14406]=0;c[14405]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=57468+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14292]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14295]|0;if((v|0)==0|g>>>0>>0)c[14295]=g;c[14403]=g;c[14404]=h;c[14406]=0;c[14300]=c[14409];c[14299]=-1;c[14304]=57204;c[14303]=57204;c[14306]=57212;c[14305]=57212;c[14308]=57220;c[14307]=57220;c[14310]=57228;c[14309]=57228;c[14312]=57236;c[14311]=57236;c[14314]=57244;c[14313]=57244;c[14316]=57252;c[14315]=57252;c[14318]=57260;c[14317]=57260;c[14320]=57268;c[14319]=57268;c[14322]=57276;c[14321]=57276;c[14324]=57284;c[14323]=57284;c[14326]=57292;c[14325]=57292;c[14328]=57300;c[14327]=57300;c[14330]=57308;c[14329]=57308;c[14332]=57316;c[14331]=57316;c[14334]=57324;c[14333]=57324;c[14336]=57332;c[14335]=57332;c[14338]=57340;c[14337]=57340;c[14340]=57348;c[14339]=57348;c[14342]=57356;c[14341]=57356;c[14344]=57364;c[14343]=57364;c[14346]=57372;c[14345]=57372;c[14348]=57380;c[14347]=57380;c[14350]=57388;c[14349]=57388;c[14352]=57396;c[14351]=57396;c[14354]=57404;c[14353]=57404;c[14356]=57412;c[14355]=57412;c[14358]=57420;c[14357]=57420;c[14360]=57428;c[14359]=57428;c[14362]=57436;c[14361]=57436;c[14364]=57444;c[14363]=57444;c[14366]=57452;c[14365]=57452;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14298]=c[14413]}while(0);b=c[14294]|0;if(b>>>0>m>>>0){t=b-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}}v=ox()|0;c[v>>2]=48;v=0;zb=w;return v|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14295]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14296]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14293]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=57468+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14297]|0)==(j|0)){j=(c[14294]|0)+b|0;c[14294]=j;c[14297]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(j|0)){j=(c[14293]|0)+b|0;c[14293]=j;c[14296]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14291]=c[14291]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=57468+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=57204+(a<<1<<2)|0;b=c[14291]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=57468+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14292]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14299]|0)+-1|0;c[14299]=j;if(j|0)return;a=57620;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14299]=-1;return}function HO(a,b){a=a|0;b=b|0;var d=0;if(a){d=B(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=FO(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;aP(a|0,0,d|0)|0;return a|0}function IO(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=FO(b)|0;return b|0}if(b>>>0>4294967231){b=ox()|0;c[b>>2]=48;b=0;return b|0}d=JO(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=FO(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;_O(d|0,a|0,(e>>>0>>0?e:b)|0)|0;GO(a);b=d;return b|0}function JO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14411]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;KO(k,d);return a|0}if((c[14297]|0)==(i|0)){k=(c[14294]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14297]=e;c[14294]=d;return a|0}if((c[14296]|0)==(i|0)){e=(c[14293]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14293]=d;c[14296]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;KO(i,k);return a|0}return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14296]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14293]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14297]|0)==(i|0)){i=(c[14294]|0)+b|0;c[14294]=i;c[14297]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(i|0)){i=(c[14293]|0)+b|0;c[14293]=i;c[14296]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=57468+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14292]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function LO(a){a=a|0;var b=0,d=0;b=VO()|0;d=c[b>>2]|0;a=d+a|0;if((a|0)<0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}if(a>>>0>(Ba()|0)>>>0?(Da(a|0)|0)==0:0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}c[b>>2]=a;return d|0}function MO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=B(e,f)|0;d=a>>>16;a=(c>>>16)+(B(e,d)|0)|0;e=b>>>16;b=B(e,f)|0;return (E((a>>>16)+(B(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=MO(e,f)|0;a=F()|0;return (E((B(b,f)|0)+(B(d,e)|0)+a|a&0|0),c|0|0)|0}function OO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (E(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function PO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (E(d|0),a-c>>>0|0)|0}function QO(a){a=a|0;return (a?31-(C(a^a-1)|0)|0:32)|0}function RO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (E(n|0),f)|0}else{if(!g){n=0;f=0;return (E(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (E(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (E(n|0),f)|0}g=h-1|0;if(g&h|0){i=(C(h|0)|0)+33-(C(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (E(o|0),p)|0}else{p=QO(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (E(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (E(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (E(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((QO(i|0)|0)>>>0);return (E(o|0),p)|0}g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (E(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=OO(m|0,l|0,-1,-1)|0;d=F()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;PO(k|0,d|0,e|0,n|0)|0;p=F()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=PO(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=F()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (E(o|0),p)|0}function SO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return RO(a,b,c,d,0)|0}function TO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function UO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;k=k+1|0;c[a>>2]=k;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=k;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;E(e|0);return d|0}f=f+1|0}e=e*2|0;d=IO(d|0,8*(e+1|0)|0)|0;d=XO(a|0,b|0,d|0,e|0)|0;E(e|0);return d|0}function YO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function ZO(a,b){a=a|0;b=b|0;if(!i){i=a;j=b}}function _O(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Ca(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function $O(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else _O(b,c,d)|0;return b|0}function aP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function bP(a){a=+a;return a>=0.0?+s(a+.5):+A(a-.5)}function cP(a,b){a=a|0;b=b|0;return +Db[a&3](b|0)}function dP(a,b,c){a=a|0;b=b|0;c=c|0;return +Eb[a&1](b|0,c|0)}function eP(a){a=a|0;return Fb[a&1]()|0}function fP(a,b){a=a|0;b=b|0;return Gb[a&127](b|0)|0}function gP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;return Hb[a&1](b|0,+c,d|0,e|0,f|0,g|0)|0}function hP(a,b,c){a=a|0;b=b|0;c=c|0;return Ib[a&63](b|0,c|0)|0}function iP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jb[a&63](b|0,c|0,d|0)|0}function jP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kb[a&15](b|0,c|0,d|0,e|0)|0}function kP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return Lb[a&7](b|0,c|0,d|0,e|0,+f)|0}function lP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Mb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function mP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Nb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function nP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ob[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function oP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Pb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function pP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Qb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function qP(a){a=a|0;Rb[a&1]()}function rP(a,b){a=a|0;b=b|0;Sb[a&255](b|0)}function sP(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function tP(a,b,c){a=a|0;b=b|0;c=c|0;Ub[a&63](b|0,c|0)}function uP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Vb[a&3](b|0,c|0,+d)}function vP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wb[a&3](b|0,c|0,d|0)}function wP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xb[a&31](b|0,c|0,d|0,e|0)}function xP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Yb[a&63](b|0,c|0,d|0,e|0,f|0)}function yP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Zb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function zP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;_b[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function AP(a){a=a|0;D(0);return 0.0}function BP(a,b){a=a|0;b=b|0;D(1);return 0.0}function CP(){D(2);return 0}function DP(a){a=a|0;D(3);return 0}function EP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;D(4);return 0}function FP(a,b){a=a|0;b=b|0;D(5);return 0}function GP(a,b,c){a=a|0;b=b|0;c=c|0;D(6);return 0}function HP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(7);return 0}function IP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;D(8);return 0}function JP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(9);return 0}function KP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;D(10);return 0}function LP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(11);return 0}function MP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(12);return 0}function NP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;D(13);return 0}function OP(){D(14)}function PP(a){a=a|0;D(15)}function QP(a,b){a=a|0;b=+b;D(16)}function RP(a,b){a=a|0;b=b|0;D(17)}function SP(a,b,c){a=a|0;b=b|0;c=+c;D(18)}function TP(a,b,c){a=a|0;b=b|0;c=c|0;D(19)}function UP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(20)}function VP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(21)}function WP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(22)}function XP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(23)} + +// EMSCRIPTEN_END_FUNCS +var Db=[AP,pr,sr,Cr];var Eb=[BP,ss];var Fb=[CP,lr];var Gb=[DP,pj,kx,rx,_A,ND,OD,QD,RD,aE,bE,dE,eE,aF,gF,lF,mF,rF,sF,NH,UH,VH,WH,XH,YH,ZH,_H,vI,CI,DI,EI,FI,GI,HI,II,qJ,rJ,wJ,BJ,CJ,HJ,MJ,NJ,SJ,XJ,YJ,bK,ZK,_K,aL,pL,qL,sL,XL,YL,cM,dM,iL,jL,lL,yL,zL,BL,ex,bu,FO,dx,Kq,Mq,Tq,Uq,ar,br,cr,hr,ir,vr,xr,zr,Er,Gr,Ir,Ds,Pt,Wt,Xt,Yt,Zt,zu,Bu,Yw,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP];var Hb=[EP,Lx];var Ib=[FP,$l,iq,pq,SD,UD,fE,hE,cF,iF,nF,tF,KL,ML,OL,nM,pM,rM,Le,bx,Nq,Pq,Qq,Rq,Xq,_q,$q,er,fr,gr,nt,Os,Jt,Rt,Au,Cu,Du,Hu,Iu,Ju,Ku,Mu,Nu,Su,Tu,Uu,Vu,Wu,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP];var Jb=[GP,lx,qx,fy,FA,fB,KD,PD,TD,ZD,cE,gE,bF,hF,AF,HF,NK,SK,LL,NL,QL,jM,oM,qM,tM,zw,Iq,Wq,Yq,Zq,dr,ht,Ys,Ew,Fw,Ez,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP];var Kb=[HP,mx,sx,PL,kM,lM,mM,sM,wt,Gw,Hw,HP,HP,HP,HP,HP];var Lb=[IP,oH,pH,FH,GH,IP,IP,IP];var Mb=[JP,yF,FF,jH,kH,mH,qH,AH,BH,DH,HH,YK,$K,oL,rL,RL,uM,hL,kL,xL,AL,Lw,Mw,JP,JP,JP,JP,JP,JP,JP,JP,JP];var Nb=[KP,BK,HK,KP];var Ob=[LP,MF,NF,OF,PF,QF,RF,SF,TF,UF,VF,WF,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,lH,nH,CH,EH,OH,PH,QH,RH,SH,wI,xI,yI,zI,AI,CK,IK,Iw,Jw,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP];var Pb=[MP,eJ,kJ,gK,hK,rK,sK,MP];var Qb=[NP,TH,BI,WK,XK,mL,nL,fL,gL,vL,wL,NP,NP,NP,NP,NP];var Rb=[OP,wA];var Sb=[PP,Qi,Ri,Ti,Ui,nj,oj,ZN,Zl,_l,am,gq,hq,jq,nq,oq,qq,BA,CA,DA,EA,OA,YA,ZA,dB,eB,gB,DD,FD,HD,ID,WD,XD,mE,nE,oE,pE,rE,sE,tE,uE,wE,xE,yE,zE,BE,CE,DE,EE,_E,eF,jF,pF,vF,wF,xF,DF,EF,KF,LF,GG,HG,hH,iH,yH,zH,LH,MH,tI,uI,cJ,dJ,iJ,jJ,oJ,pJ,zJ,AJ,KJ,LJ,VJ,WJ,eK,fK,pK,qK,zK,AK,FK,GK,LK,MK,QK,RK,CF,eL,VK,tL,uL,FL,GL,IL,JL,VL,WL,aM,bM,hM,iM,vM,wM,xM,hf,ax,jr,Ot,St,Vt,du,eu,pw,qw,fw,$v,Rv,Jv,Yu,Qu,Ru,Fu,Gu,wu,xu,iw,lw,Kw,Ow,Zw,_w,$w,fx,hx,jx,cG,eG,iK,GO,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP];var Tb=[QP,nr,rr,Ar];var Ub=[RP,JD,YD,$E,fF,kF,qF,sJ,tJ,uJ,vJ,xJ,yJ,DJ,EJ,FJ,GJ,IJ,JJ,OJ,PJ,QJ,RJ,TJ,UJ,ZJ,_J,$J,aK,cK,dK,PK,UK,ZL,_L,$L,eM,fM,gM,Nt,tr,wr,yr,Dr,Fr,Hr,Is,Qt,ow,ew,Fv,su,Nw,gx,ix,Mx,RP,RP,RP,RP,RP,RP,RP,RP];var Vb=[SP,xs,gs,SP];var Wb=[TP,Ww,ns,TP];var Xb=[UP,IA,RA,jB,MD,$D,zF,GF,Ue,bw,dw,Lv,Mv,Nv,Ov,Pv,tu,uu,vu,hw,jw,kw,sw,tw,uw,vw,ww,UP,UP,UP,UP,UP];var Yb=[VP,HA,QA,iB,Sv,Tv,Uv,Vv,Wv,Xv,Yv,Zv,_v,Dv,Cv,Bv,Av,zv,yv,xv,wv,vv,uv,tv,sv,rv,qv,pv,ov,nv,mv,lv,kv,jv,iv,hv,gv,fv,ev,dv,cv,bv,av,$u,Ev,_u,Zu,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP];var Zb=[WP,GA,PA,hB,LD,_D,OK,TK];var _b=[XP,aw,cw,Kv,Gv,Hv,Iv,XP];return{__GLOBAL__I_000101:SE,__GLOBAL__sub_I_ARToolKitJS_cpp:Dq,__GLOBAL__sub_I_bind_cpp:EB,__GLOBAL__sub_I_iostream_cpp:TE,__ZSt18uncaught_exceptionv:yD,___cxa_can_catch:wB,___cxa_is_pointer_type:xB,___embind_register_native_and_builtin_types:HB,___emscripten_environ_constructor:zB,___errno_location:ox,___getTypeName:tD,___muldi3:NO,___udivdi3:SO,__get_daylight:BB,__get_environ:DB,__get_timezone:CB,__get_tzname:AB,_bitshift64Lshr:TO,_bitshift64Shl:UO,_emscripten_get_sbrk_ptr:VO,_emscripten_replace_memory:Cb,_free:GO,_i64Add:OO,_i64Subtract:PO,_llvm_bswap_i32:WO,_malloc:FO,_memcpy:_O,_memmove:$O,_memset:aP,_realloc:IO,_roundf:bP,_saveSetjmp:XO,_setThrew:ZO,_testSetjmp:YO,dynCall_di:cP,dynCall_dii:dP,dynCall_i:eP,dynCall_ii:fP,dynCall_iidiiii:gP,dynCall_iii:hP,dynCall_iiii:iP,dynCall_iiiii:jP,dynCall_iiiiid:kP,dynCall_iiiiii:lP,dynCall_iiiiiid:mP,dynCall_iiiiiii:nP,dynCall_iiiiiiii:oP,dynCall_iiiiiiiii:pP,dynCall_v:qP,dynCall_vi:rP,dynCall_vid:sP,dynCall_vii:tP,dynCall_viid:uP,dynCall_viii:vP,dynCall_viiii:wP,dynCall_viiiii:xP,dynCall_viiiiii:yP,dynCall_viiiiiii:zP,establishStackSpace:cc,stackAlloc:$b,stackRestore:bc,stackSave:ac}}) + + +// EMSCRIPTEN_END_ASM +(asmGlobalArg,asmLibraryArg,buffer);var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var __ZSt18uncaught_exceptionv=Module["__ZSt18uncaught_exceptionv"]=asm["__ZSt18uncaught_exceptionv"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=asm["___embind_register_native_and_builtin_types"];var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=asm["___emscripten_environ_constructor"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var __get_daylight=Module["__get_daylight"]=asm["__get_daylight"];var __get_environ=Module["__get_environ"]=asm["__get_environ"];var __get_timezone=Module["__get_timezone"]=asm["__get_timezone"];var __get_tzname=Module["__get_tzname"]=asm["__get_tzname"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_get_sbrk_ptr=Module["_emscripten_get_sbrk_ptr"]=asm["_emscripten_get_sbrk_ptr"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _roundf=Module["_roundf"]=asm["_roundf"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _setThrew=Module["_setThrew"]=asm["_setThrew"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidiiii=Module["dynCall_iidiiii"]=asm["dynCall_iidiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status)}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); + diff --git a/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.debug.js b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.debug.js new file mode 100644 index 0000000..5b94e83 --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.debug.js @@ -0,0 +1,74365 @@ +// The Module object: Our interface to the outside world. We import +// and export values on it, and do the work to get that through +// closure compiler if necessary. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to do an eval in order to handle the closure compiler +// case, where this code here is minified but Module was defined +// elsewhere (e.g. case 4 above). We also need to check if Module +// already exists (e.g. case 3 above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module; +if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +for (var key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +// The environment setup code below is customized to use Module. +// *** Environment setup code *** +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +// Three configurations we can be running in: +// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false) +// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false) +// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true) +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (ENVIRONMENT_IS_NODE) { + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + if (!Module['print']) Module['print'] = function print(x) { + process['stdout'].write(x + '\n'); + }; + if (!Module['printErr']) Module['printErr'] = function printErr(x) { + process['stderr'].write(x + '\n'); + }; + + var nodeFS = require('fs'); + var nodePath = require('path'); + + Module['read'] = function read(filename, binary) { + filename = nodePath['normalize'](filename); + var ret = nodeFS['readFileSync'](filename); + // The path is absolute if the normalized version is the same as the resolved. + if (!ret && filename != nodePath['resolve'](filename)) { + filename = path.join(__dirname, '..', 'src', filename); + ret = nodeFS['readFileSync'](filename); + } + if (ret && !binary) ret = ret.toString(); + return ret; + }; + + Module['readBinary'] = function readBinary(filename) { + var ret = Module['read'](filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + + Module['load'] = function load(f) { + globalEval(read(f)); + }; + + if (!Module['thisProgram']) { + if (process['argv'].length > 1) { + Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/'); + } else { + Module['thisProgram'] = 'unknown-program'; + } + } + + Module['arguments'] = process['argv'].slice(2); + + if (typeof module !== 'undefined') { + module['exports'] = Module; + } + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; +} +else if (ENVIRONMENT_IS_SHELL) { + if (!Module['print']) Module['print'] = print; + if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm + + if (typeof read != 'undefined') { + Module['read'] = read; + } else { + Module['read'] = function read() { throw 'no read() available (jsc?)' }; + } + + Module['readBinary'] = function readBinary(f) { + if (typeof readbuffer === 'function') { + return new Uint8Array(readbuffer(f)); + } + var data = read(f, 'binary'); + assert(typeof data === 'object'); + return data; + }; + + if (typeof scriptArgs != 'undefined') { + Module['arguments'] = scriptArgs; + } else if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + +} +else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + Module['read'] = function read(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + + if (typeof console !== 'undefined') { + if (!Module['print']) Module['print'] = function print(x) { + console.log(x); + }; + if (!Module['printErr']) Module['printErr'] = function printErr(x) { + console.log(x); + }; + } else { + // Probably a worker, and without console.log. We can do very little here... + var TRY_USE_DUMP = false; + if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { + dump(x); + }) : (function(x) { + // self.postMessage(x); // enable this if you want stdout to be sent as messages + })); + } + + if (ENVIRONMENT_IS_WORKER) { + Module['load'] = importScripts; + } + + if (typeof Module['setWindowTitle'] === 'undefined') { + Module['setWindowTitle'] = function(title) { document.title = title }; + } +} +else { + // Unreachable because SHELL is dependant on the others + throw 'Unknown runtime environment. Where are we?'; +} + +function globalEval(x) { + eval.call(null, x); +} +if (!Module['load'] && Module['read']) { + Module['load'] = function load(f) { + globalEval(Module['read'](f)); + }; +} +if (!Module['print']) { + Module['print'] = function(){}; +} +if (!Module['printErr']) { + Module['printErr'] = Module['print']; +} +if (!Module['arguments']) { + Module['arguments'] = []; +} +if (!Module['thisProgram']) { + Module['thisProgram'] = './this.program'; +} + +// *** Environment setup code *** + +// Closure helpers +Module.print = Module['print']; +Module.printErr = Module['printErr']; + +// Callbacks +Module['preRun'] = []; +Module['postRun'] = []; + +// Merge back in the overrides +for (var key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + +//======================================== +// Runtime code shared with compiler +//======================================== + +var Runtime = { + setTempRet0: function (value) { + tempRet0 = value; + }, + getTempRet0: function () { + return tempRet0; + }, + stackSave: function () { + return STACKTOP; + }, + stackRestore: function (stackTop) { + STACKTOP = stackTop; + }, + getNativeTypeSize: function (type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length-1] === '*') { + return Runtime.QUANTUM_SIZE; // A pointer + } else if (type[0] === 'i') { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0); + return bits/8; + } else { + return 0; + } + } + } + }, + getNativeFieldSize: function (type) { + return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE); + }, + STACK_ALIGN: 16, + prepVararg: function (ptr, type) { + if (type === 'double' || type === 'i64') { + // move so the load is aligned + if (ptr & 7) { + assert((ptr & 7) === 4); + ptr += 4; + } + } else { + assert((ptr & 3) === 0); + } + return ptr; + }, + getAlignSize: function (type, size, vararg) { + // we align i64s and doubles on 64-bit boundaries, unlike x86 + if (!vararg && (type == 'i64' || type == 'double')) return 8; + if (!type) return Math.min(size, 8); // align structures internally to 64 bits + return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); + }, + dynCall: function (sig, ptr, args) { + if (args && args.length) { + assert(args.length == sig.length-1); + if (!args.splice) args = Array.prototype.slice.call(args); + args.splice(0, 0, ptr); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].apply(null, args); + } else { + assert(sig.length == 1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].call(null, ptr); + } + }, + functionPointers: [], + addFunction: function (func) { + for (var i = 0; i < Runtime.functionPointers.length; i++) { + if (!Runtime.functionPointers[i]) { + Runtime.functionPointers[i] = func; + return 2*(1 + i); + } + } + throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; + }, + removeFunction: function (index) { + Runtime.functionPointers[(index-2)/2] = null; + }, + warnOnce: function (text) { + if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; + if (!Runtime.warnOnce.shown[text]) { + Runtime.warnOnce.shown[text] = 1; + Module.printErr(text); + } + }, + funcWrappers: {}, + getFuncWrapper: function (func, sig) { + assert(sig); + if (!Runtime.funcWrappers[sig]) { + Runtime.funcWrappers[sig] = {}; + } + var sigCache = Runtime.funcWrappers[sig]; + if (!sigCache[func]) { + sigCache[func] = function dynCall_wrapper() { + return Runtime.dynCall(sig, func, arguments); + }; + } + return sigCache[func]; + }, + getCompilerSetting: function (name) { + throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; + }, + stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+15)&-16);(assert((((STACKTOP|0) < (STACK_MAX|0))|0))|0); return ret; }, + staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+15)&-16); return ret; }, + dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+15)&-16); if (DYNAMICTOP >= TOTAL_MEMORY) { var success = enlargeMemory(); if (!success) { DYNAMICTOP = ret; return 0; } }; return ret; }, + alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 16))*(quantum ? quantum : 16); return ret; }, + makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*(+4294967296))) : ((+((low>>>0)))+((+((high|0)))*(+4294967296)))); return ret; }, + GLOBAL_BASE: 8, + QUANTUM_SIZE: 4, + __dummy__: 0 +} + + + +Module["Runtime"] = Runtime; + + + +//======================================== +// Runtime essentials +//======================================== + +var __THREW__ = 0; // Used in checking for thrown exceptions. + +var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() +var EXITSTATUS = 0; + +var undef = 0; +// tempInt is used for 32-bit signed values or smaller. tempBigInt is used +// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt +var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; +var tempI64, tempI64b; +var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; + +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} + +var globalScope = this; + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + if (!func) { + try { + func = eval('_' + ident); // explicit lookup + } catch(e) {} + } + assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); + return func; +} + +var cwrap, ccall; +(function(){ + var JSfuncs = { + // Helpers for cwrap -- it can't refer to Runtime directly because it might + // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find + // out what the minified function name is. + 'stackSave': function() { + Runtime.stackSave() + }, + 'stackRestore': function() { + Runtime.stackRestore() + }, + // type conversion from js to c + 'arrayToC' : function(arr) { + var ret = Runtime.stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + }, + 'stringToC' : function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + ret = Runtime.stackAlloc((str.length << 2) + 1); + writeStringToMemory(str, ret); + } + return ret; + } + }; + // For fast lookup of conversion functions + var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']}; + + // C calling interface. + ccall = function ccallFunc(ident, returnType, argTypes, args, opts) { + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = Runtime.stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + if ((!opts || !opts.async) && typeof EmterpreterAsync === 'object') { + assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling ccall'); + } + if (opts && opts.async) assert(!returnType, 'async ccalls cannot return values'); + if (returnType === 'string') ret = Pointer_stringify(ret); + if (stack !== 0) { + if (opts && opts.async) { + EmterpreterAsync.asyncFinalizers.push(function() { + Runtime.stackRestore(stack); + }); + return; + } + Runtime.stackRestore(stack); + } + return ret; + } + + var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/; + function parseJSFunc(jsfunc) { + // Match the body and the return value of a javascript function source + var parsed = jsfunc.toString().match(sourceRegex).slice(1); + return {arguments : parsed[0], body : parsed[1], returnValue: parsed[2]} + } + var JSsource = {}; + for (var fun in JSfuncs) { + if (JSfuncs.hasOwnProperty(fun)) { + // Elements of toCsource are arrays of three items: + // the code, and the return value + JSsource[fun] = parseJSFunc(JSfuncs[fun]); + } + } + + + cwrap = function cwrap(ident, returnType, argTypes) { + argTypes = argTypes || []; + var cfunc = getCFunc(ident); + // When the function takes numbers and returns a number, we can just return + // the original function + var numericArgs = argTypes.every(function(type){ return type === 'number'}); + var numericRet = (returnType !== 'string'); + if ( numericRet && numericArgs) { + return cfunc; + } + // Creation of the arguments list (["$1","$2",...,"$nargs"]) + var argNames = argTypes.map(function(x,i){return '$'+i}); + var funcstr = "(function(" + argNames.join(',') + ") {"; + var nargs = argTypes.length; + if (!numericArgs) { + // Generate the code needed to convert the arguments from javascript + // values to pointers + funcstr += 'var stack = ' + JSsource['stackSave'].body + ';'; + for (var i = 0; i < nargs; i++) { + var arg = argNames[i], type = argTypes[i]; + if (type === 'number') continue; + var convertCode = JSsource[type + 'ToC']; // [code, return] + funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';'; + funcstr += convertCode.body + ';'; + funcstr += arg + '=' + convertCode.returnValue + ';'; + } + } + + // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore + var cfuncname = parseJSFunc(function(){return cfunc}).returnValue; + // Call the function + funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');'; + if (!numericRet) { // Return type can only by 'string' or 'number' + // Convert the result to a string + var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue; + funcstr += 'ret = ' + strgfy + '(ret);'; + } + funcstr += "if (typeof EmterpreterAsync === 'object') { assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling cwrap') }"; + if (!numericArgs) { + // If we had a stack, restore it + funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';'; + } + funcstr += 'return ret})'; + return eval(funcstr); + }; +})(); +Module["ccall"] = ccall; +Module["cwrap"] = cwrap; + +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': HEAP8[((ptr)>>0)]=value; break; + case 'i8': HEAP8[((ptr)>>0)]=value; break; + case 'i16': HEAP16[((ptr)>>1)]=value; break; + case 'i32': HEAP32[((ptr)>>2)]=value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} +Module["setValue"] = setValue; + + +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for setValue: ' + type); + } + return null; +} +Module["getValue"] = getValue; + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_STATIC = 2; // Cannot be freed +var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk +var ALLOC_NONE = 4; // Do not allocate +Module["ALLOC_NORMAL"] = ALLOC_NORMAL; +Module["ALLOC_STACK"] = ALLOC_STACK; +Module["ALLOC_STATIC"] = ALLOC_STATIC; +Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC; +Module["ALLOC_NONE"] = ALLOC_NONE; + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + + var singleType = typeof types === 'string' ? types : null; + + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)); + } + + if (zeroinit) { + var ptr = ret, stop; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)>>0)]=0; + } + return ret; + } + + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + + if (typeof curr === 'function') { + curr = Runtime.getFunctionIndex(curr); + } + + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, 'Must know what type to store in allocate!'); + + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = Runtime.getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} +Module["allocate"] = allocate; + +// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready +function getMemory(size) { + if (!staticSealed) return Runtime.staticAlloc(size); + if ((typeof _sbrk !== 'undefined' && !_sbrk.called) || !runtimeInitialized) return Runtime.dynamicAlloc(size); + return _malloc(size); +} +Module["getMemory"] = getMemory; + +function Pointer_stringify(ptr, /* optional */ length) { + if (length === 0 || !ptr) return ''; + // TODO: use TextDecoder + // Find the length, and check for UTF while doing so + var hasUtf = 0; + var t; + var i = 0; + while (1) { + assert(ptr + i < TOTAL_MEMORY); + t = HEAPU8[(((ptr)+(i))>>0)]; + hasUtf |= t; + if (t == 0 && !length) break; + i++; + if (length && i == length) break; + } + if (!length) length = i; + + var ret = ''; + + if (hasUtf < 128) { + var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack + var curr; + while (length > 0) { + curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK))); + ret = ret ? ret + curr : curr; + ptr += MAX_CHUNK; + length -= MAX_CHUNK; + } + return ret; + } + return Module['UTF8ToString'](ptr); +} +Module["Pointer_stringify"] = Pointer_stringify; + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAP8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} +Module["AsciiToString"] = AsciiToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} +Module["stringToAscii"] = stringToAscii; + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +function UTF8ArrayToString(u8Array, idx) { + var u0, u1, u2, u3, u4, u5; + + var str = ''; + while (1) { + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + u0 = u8Array[idx++]; + if (!u0) return str; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + u1 = u8Array[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + u2 = u8Array[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + u3 = u8Array[idx++] & 63; + if ((u0 & 0xF8) == 0xF0) { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3; + } else { + u4 = u8Array[idx++] & 63; + if ((u0 & 0xFC) == 0xF8) { + u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4; + } else { + u5 = u8Array[idx++] & 63; + u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5; + } + } + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } +} +Module["UTF8ArrayToString"] = UTF8ArrayToString; + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function UTF8ToString(ptr) { + return UTF8ArrayToString(HEAPU8,ptr); +} +Module["UTF8ToString"] = UTF8ToString; + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 0xC0 | (u >> 6); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 0xE0 | (u >> 12); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0x1FFFFF) { + if (outIdx + 3 >= endIdx) break; + outU8Array[outIdx++] = 0xF0 | (u >> 18); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0x3FFFFFF) { + if (outIdx + 4 >= endIdx) break; + outU8Array[outIdx++] = 0xF8 | (u >> 24); + outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 5 >= endIdx) break; + outU8Array[outIdx++] = 0xFC | (u >> 30); + outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + outU8Array[outIdx] = 0; + return outIdx - startIdx; +} +Module["stringToUTF8Array"] = stringToUTF8Array; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} +Module["stringToUTF8"] = stringToUTF8; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) { + ++len; + } else if (u <= 0x7FF) { + len += 2; + } else if (u <= 0xFFFF) { + len += 3; + } else if (u <= 0x1FFFFF) { + len += 4; + } else if (u <= 0x3FFFFFF) { + len += 5; + } else { + len += 6; + } + } + return len; +} +Module["lengthBytesUTF8"] = lengthBytesUTF8; + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function UTF16ToString(ptr) { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) + return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } +} +Module["UTF16ToString"] = UTF16ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)]=codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)]=0; + return outPtr - startPtr; +} +Module["stringToUTF16"] = stringToUTF16; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} +Module["lengthBytesUTF16"] = lengthBytesUTF16; + +function UTF32ToString(ptr) { + var i = 0; + + var str = ''; + while (1) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) + return str; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } +} +Module["UTF32ToString"] = UTF32ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)]=codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)]=0; + return outPtr - startPtr; +} +Module["stringToUTF32"] = stringToUTF32; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} +Module["lengthBytesUTF32"] = lengthBytesUTF32; + +function demangle(func) { + var hasLibcxxabi = !!Module['___cxa_demangle']; + if (hasLibcxxabi) { + try { + var buf = _malloc(func.length); + writeStringToMemory(func.substr(1), buf); + var status = _malloc(4); + var ret = Module['___cxa_demangle'](buf, 0, 0, status); + if (getValue(status, 'i32') === 0 && ret) { + return Pointer_stringify(ret); + } + // otherwise, libcxxabi failed, we can try ours which may return a partial result + } catch(e) { + // failure when using libcxxabi, we can try ours which may return a partial result + } finally { + if (buf) _free(buf); + if (status) _free(status); + if (ret) _free(ret); + } + } + var i = 3; + // params, etc. + var basicTypes = { + 'v': 'void', + 'b': 'bool', + 'c': 'char', + 's': 'short', + 'i': 'int', + 'l': 'long', + 'f': 'float', + 'd': 'double', + 'w': 'wchar_t', + 'a': 'signed char', + 'h': 'unsigned char', + 't': 'unsigned short', + 'j': 'unsigned int', + 'm': 'unsigned long', + 'x': 'long long', + 'y': 'unsigned long long', + 'z': '...' + }; + var subs = []; + var first = true; + function dump(x) { + //return; + if (x) Module.print(x); + Module.print(func); + var pre = ''; + for (var a = 0; a < i; a++) pre += ' '; + Module.print (pre + '^'); + } + function parseNested() { + i++; + if (func[i] === 'K') i++; // ignore const + var parts = []; + while (func[i] !== 'E') { + if (func[i] === 'S') { // substitution + i++; + var next = func.indexOf('_', i); + var num = func.substring(i, next) || 0; + parts.push(subs[num] || '?'); + i = next+1; + continue; + } + if (func[i] === 'C') { // constructor + parts.push(parts[parts.length-1]); + i += 2; + continue; + } + var size = parseInt(func.substr(i)); + var pre = size.toString().length; + if (!size || !pre) { i--; break; } // counter i++ below us + var curr = func.substr(i + pre, size); + parts.push(curr); + subs.push(curr); + i += pre + size; + } + i++; // skip E + return parts; + } + function parse(rawList, limit, allowVoid) { // main parser + limit = limit || Infinity; + var ret = '', list = []; + function flushList() { + return '(' + list.join(', ') + ')'; + } + var name; + if (func[i] === 'N') { + // namespaced N-E + name = parseNested().join('::'); + limit--; + if (limit === 0) return rawList ? [name] : name; + } else { + // not namespaced + if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' + var size = parseInt(func.substr(i)); + if (size) { + var pre = size.toString().length; + name = func.substr(i + pre, size); + i += pre + size; + } + } + first = false; + if (func[i] === 'I') { + i++; + var iList = parse(true); + var iRet = parse(true, 1, true); + ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; + } else { + ret = name; + } + paramLoop: while (i < func.length && limit-- > 0) { + //dump('paramLoop'); + var c = func[i++]; + if (c in basicTypes) { + list.push(basicTypes[c]); + } else { + switch (c) { + case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer + case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference + case 'L': { // literal + i++; // skip basic type + var end = func.indexOf('E', i); + var size = end - i; + list.push(func.substr(i, size)); + i += size + 2; // size + 'EE' + break; + } + case 'A': { // array + var size = parseInt(func.substr(i)); + i += size.toString().length; + if (func[i] !== '_') throw '?'; + i++; // skip _ + list.push(parse(true, 1, true)[0] + ' [' + size + ']'); + break; + } + case 'E': break paramLoop; + default: ret += '?' + c; break paramLoop; + } + } + } + if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) + if (rawList) { + if (ret) { + list.push(ret + '?'); + } + return list; + } else { + return ret + flushList(); + } + } + var parsed = func; + try { + // Special-case the entry point, since its name differs from other name mangling. + if (func == 'Object._main' || func == '_main') { + return 'main()'; + } + if (typeof func === 'number') func = Pointer_stringify(func); + if (func[0] !== '_') return func; + if (func[1] !== '_') return func; // C function + if (func[2] !== 'Z') return func; + switch (func[3]) { + case 'n': return 'operator new()'; + case 'd': return 'operator delete()'; + } + parsed = parse(); + } catch(e) { + parsed += '?'; + } + if (parsed.indexOf('?') >= 0 && !hasLibcxxabi) { + Runtime.warnOnce('warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + } + return parsed; +} + +function demangleAll(text) { + return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') }); +} + +function jsStackTrace() { + var err = new Error(); + if (!err.stack) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + try { + throw new Error(0); + } catch(e) { + err = e; + } + if (!err.stack) { + return '(no stack trace available)'; + } + } + return err.stack.toString(); +} + +function stackTrace() { + return demangleAll(jsStackTrace()); +} +Module["stackTrace"] = stackTrace; + +// Memory management + +var PAGE_SIZE = 4096; + +function alignMemoryPage(x) { + if (x % 4096 > 0) { + x += (4096 - (x % 4096)); + } + return x; +} + +var HEAP; +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area +var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area +var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk + + + +function enlargeMemory() { + // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top. + assert(DYNAMICTOP >= TOTAL_MEMORY); + assert(TOTAL_MEMORY > 4); // So the loop below will not be infinite + + var OLD_TOTAL_MEMORY = TOTAL_MEMORY; + + + var LIMIT = Math.pow(2, 31); // 2GB is a practical maximum, as we use signed ints as pointers + // and JS engines seem unhappy to give us 2GB arrays currently + if (DYNAMICTOP >= LIMIT) return false; + + while (TOTAL_MEMORY <= DYNAMICTOP) { // Simple heuristic. + if (TOTAL_MEMORY < LIMIT/2) { + TOTAL_MEMORY = alignMemoryPage(2*TOTAL_MEMORY); // double until 1GB + } else { + var last = TOTAL_MEMORY; + TOTAL_MEMORY = alignMemoryPage((3*TOTAL_MEMORY + LIMIT)/4); // add smaller increments towards 2GB, which we cannot reach + if (TOTAL_MEMORY <= last) return false; + } + } + + TOTAL_MEMORY = Math.max(TOTAL_MEMORY, 16*1024*1024); + + if (TOTAL_MEMORY >= LIMIT) return false; + + Module.printErr('Warning: Enlarging memory arrays, this is not fast! ' + [OLD_TOTAL_MEMORY, TOTAL_MEMORY]); + + + var start = Date.now(); + + try { + if (ArrayBuffer.transfer) { + buffer = ArrayBuffer.transfer(buffer, TOTAL_MEMORY); + } else { + var oldHEAP8 = HEAP8; + buffer = new ArrayBuffer(TOTAL_MEMORY); + } + } catch(e) { + return false; + } + + var success = _emscripten_replace_memory(buffer); + if (!success) return false; + + // everything worked + + Module['buffer'] = buffer; + Module['HEAP8'] = HEAP8 = new Int8Array(buffer); + Module['HEAP16'] = HEAP16 = new Int16Array(buffer); + Module['HEAP32'] = HEAP32 = new Int32Array(buffer); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer); + if (!ArrayBuffer.transfer) { + HEAP8.set(oldHEAP8); + } + + Module.printErr('enlarged memory arrays from ' + OLD_TOTAL_MEMORY + ' to ' + TOTAL_MEMORY + ', took ' + (Date.now() - start) + ' ms (has ArrayBuffer.transfer? ' + (!!ArrayBuffer.transfer) + ')'); + + return true; +} + +var byteLength; +try { + byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get); + byteLength(new ArrayBuffer(4)); // can fail on older ie +} catch(e) { // can fail on older node/v8 + byteLength = function(buffer) { return buffer.byteLength; }; +} + +var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; +var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 268435456; + +var totalMemory = 64*1024; +while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { + if (totalMemory < 16*1024*1024) { + totalMemory *= 2; + } else { + totalMemory += 16*1024*1024 + } +} +totalMemory = Math.max(totalMemory, 16*1024*1024); +if (totalMemory !== TOTAL_MEMORY) { + Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec (and given that TOTAL_STACK=' + TOTAL_STACK + ')'); + TOTAL_MEMORY = totalMemory; +} + +// Initialize the runtime's memory +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), + 'JS engine does not provide full typed array support'); + +var buffer; + + + +buffer = new ArrayBuffer(TOTAL_MEMORY); +HEAP8 = new Int8Array(buffer); +HEAP16 = new Int16Array(buffer); +HEAP32 = new Int32Array(buffer); +HEAPU8 = new Uint8Array(buffer); +HEAPU16 = new Uint16Array(buffer); +HEAPU32 = new Uint32Array(buffer); +HEAPF32 = new Float32Array(buffer); +HEAPF64 = new Float64Array(buffer); + + +// Endianness check (note: assumes compiler arch was little-endian) +HEAP32[0] = 255; +assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); + +Module['HEAP'] = HEAP; +Module['buffer'] = buffer; +Module['HEAP8'] = HEAP8; +Module['HEAP16'] = HEAP16; +Module['HEAP32'] = HEAP32; +Module['HEAPU8'] = HEAPU8; +Module['HEAPU16'] = HEAPU16; +Module['HEAPU32'] = HEAPU32; +Module['HEAPF32'] = HEAPF32; +Module['HEAPF64'] = HEAPF64; + +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(); + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Runtime.dynCall('v', func); + } else { + Runtime.dynCall('vi', func, [callback.arg]); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} + +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the runtime has exited + +var runtimeInitialized = false; +var runtimeExited = false; + + +function preRun() { + // compatibility - merge in anything from Module['preRun'] at this time + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function ensureInitRuntime() { + if (runtimeInitialized) return; + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + callRuntimeCallbacks(__ATEXIT__); + runtimeExited = true; +} + +function postRun() { + // compatibility - merge in anything from Module['postRun'] at this time + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} +Module["addOnPreRun"] = addOnPreRun; + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} +Module["addOnInit"] = addOnInit; + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} +Module["addOnPreMain"] = addOnPreMain; + +function addOnExit(cb) { + __ATEXIT__.unshift(cb); +} +Module["addOnExit"] = addOnExit; + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} +Module["addOnPostRun"] = addOnPostRun; + +// Tools + + +function intArrayFromString(stringy, dontAddNull, length /* optional */) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} +Module["intArrayFromString"] = intArrayFromString; + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} +Module["intArrayToString"] = intArrayToString; + +function writeStringToMemory(string, buffer, dontAddNull) { + var array = intArrayFromString(string, dontAddNull); + var i = 0; + while (i < array.length) { + var chr = array[i]; + HEAP8[(((buffer)+(i))>>0)]=chr; + i = i + 1; + } +} +Module["writeStringToMemory"] = writeStringToMemory; + +function writeArrayToMemory(array, buffer) { + for (var i = 0; i < array.length; i++) { + HEAP8[((buffer++)>>0)]=array[i]; + } +} +Module["writeArrayToMemory"] = writeArrayToMemory; + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); + HEAP8[((buffer++)>>0)]=str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)]=0; +} +Module["writeAsciiToMemory"] = writeAsciiToMemory; + +function unSign(value, bits, ignore) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + + +// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) +if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { + var ah = a >>> 16; + var al = a & 0xffff; + var bh = b >>> 16; + var bl = b & 0xffff; + return (al*bl + ((ah*bl + al*bh) << 16))|0; +}; +Math.imul = Math['imul']; + + +if (!Math['clz32']) Math['clz32'] = function(x) { + x = x >>> 0; + for (var i = 0; i < 32; i++) { + if (x & (1 << (31 - i))) return i; + } + return 32; +}; +Math.clz32 = Math['clz32'] + +var Math_abs = Math.abs; +var Math_cos = Math.cos; +var Math_sin = Math.sin; +var Math_tan = Math.tan; +var Math_acos = Math.acos; +var Math_asin = Math.asin; +var Math_atan = Math.atan; +var Math_atan2 = Math.atan2; +var Math_exp = Math.exp; +var Math_log = Math.log; +var Math_sqrt = Math.sqrt; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_pow = Math.pow; +var Math_imul = Math.imul; +var Math_fround = Math.fround; +var Math_min = Math.min; +var Math_clz32 = Math.clz32; + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// PRE_RUN_ADDITIONS (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + Module.printErr('still waiting on run dependencies:'); + } + Module.printErr('dependency: ' + dep); + } + if (shown) { + Module.printErr('(end of list)'); + } + }, 10000); + } + } else { + Module.printErr('warning: run dependency added without ID'); + } +} +Module["addRunDependency"] = addRunDependency; + +function removeRunDependency(id) { + runDependencies--; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + Module.printErr('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} +Module["removeRunDependency"] = removeRunDependency; + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + + + +var memoryInitializer = null; + + + +// === Body === + +var ASM_CONSTS = [function($0, $1, $2, $3) { { if (!artoolkit["multiEachMarkerInfo"]) { artoolkit["multiEachMarkerInfo"] = ({}); } var multiEachMarker = artoolkit["multiEachMarkerInfo"]; multiEachMarker['visible'] = $0; multiEachMarker['pattId'] = $1; multiEachMarker['pattType'] = $2; multiEachMarker['width'] = $3; } }, + function($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32) { { var $a = arguments; var i = 12; if (!artoolkit["markerInfo"]) { artoolkit["markerInfo"] = ({ pos: [0,0], line: [[0,0,0], [0,0,0], [0,0,0], [0,0,0]], vertex: [[0,0], [0,0], [0,0], [0,0]] }); } var markerInfo = artoolkit["markerInfo"]; markerInfo["area"] = $0; markerInfo["id"] = $1; markerInfo["idPatt"] = $2; markerInfo["idMatrix"] = $3; markerInfo["dir"] = $4; markerInfo["dirPatt"] = $5; markerInfo["dirMatrix"] = $6; markerInfo["cf"] = $7; markerInfo["cfPatt"] = $8; markerInfo["cfMatrix"] = $9; markerInfo["pos"][0] = $10; markerInfo["pos"][1] = $11; markerInfo["line"][0][0] = $a[i++]; markerInfo["line"][0][1] = $a[i++]; markerInfo["line"][0][2] = $a[i++]; markerInfo["line"][1][0] = $a[i++]; markerInfo["line"][1][1] = $a[i++]; markerInfo["line"][1][2] = $a[i++]; markerInfo["line"][2][0] = $a[i++]; markerInfo["line"][2][1] = $a[i++]; markerInfo["line"][2][2] = $a[i++]; markerInfo["line"][3][0] = $a[i++]; markerInfo["line"][3][1] = $a[i++]; markerInfo["line"][3][2] = $a[i++]; markerInfo["vertex"][0][0] = $a[i++]; markerInfo["vertex"][0][1] = $a[i++]; markerInfo["vertex"][1][0] = $a[i++]; markerInfo["vertex"][1][1] = $a[i++]; markerInfo["vertex"][2][0] = $a[i++]; markerInfo["vertex"][2][1] = $a[i++]; markerInfo["vertex"][3][0] = $a[i++]; markerInfo["vertex"][3][1] = $a[i++]; markerInfo["errorCorrected"] = $a[i++]; } }, + function($0, $1, $2, $3, $4) { { if (!artoolkit["frameMalloc"]) { artoolkit["frameMalloc"] = ({}); } var frameMalloc = artoolkit["frameMalloc"]; frameMalloc["framepointer"] = $1; frameMalloc["framesize"] = $2; frameMalloc["camera"] = $3; frameMalloc["transform"] = $4; } }]; + +function _emscripten_asm_const_33(code, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) { + return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32); +} + +function _emscripten_asm_const_4(code, a0, a1, a2, a3) { + return ASM_CONSTS[code](a0, a1, a2, a3); +} + +function _emscripten_asm_const_5(code, a0, a1, a2, a3, a4) { + return ASM_CONSTS[code](a0, a1, a2, a3, a4); +} + + + +STATIC_BASE = 8; + +STATICTOP = STATIC_BASE + 18336; + /* global initializers */ __ATINIT__.push({ func: function() { __GLOBAL__sub_I_ARToolKitJS_cpp() } }, { func: function() { __GLOBAL__sub_I_bind_cpp() } }); + + +/* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,52,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,115,42,0,0,52,9,0,0,12,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,205,46,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,186,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,194,45,0,0,228,8,0,0,163,45,0,0,228,8,0,0,132,45,0,0,228,8,0,0,101,45,0,0,228,8,0,0,70,45,0,0,228,8,0,0,225,45,0,0,228,8,0,0,0,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,62,46,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,12,9,0,0,75,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,88,47,0,0,228,8,0,0,101,47,0,0,12,9,0,0,114,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,147,47,0,0,64,2,0,0,0,0,0,0,12,9,0,0,181,47,0,0,64,2,0,0,0,0,0,0,200,8,0,0,221,47,0,0,200,8,0,0,223,47,0,0,200,8,0,0,225,47,0,0,200,8,0,0,227,47,0,0,200,8,0,0,229,47,0,0,200,8,0,0,231,47,0,0,200,8,0,0,233,47,0,0,200,8,0,0,235,47,0,0,200,8,0,0,237,47,0,0,200,8,0,0,14,54,0,0,200,8,0,0,239,47,0,0,200,8,0,0,241,47,0,0,200,8,0,0,243,47,0,0,12,9,0,0,245,47,0,0,80,2,0,0,0,0,0,0,12,9,0,0,26,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,139,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,131,65,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65,66], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); +/* memory initializer */ allocate([69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,32,40,0,41,0,95,98,108,111,99,107,95,105,110,118,111,107,101,0,105,110,118,111,99,97,116,105,111,110,32,102,117,110,99,116,105,111,110,32,102,111,114,32,98,108,111,99,107,32,105,110,32,0,32,99,111,110,115,116,0,32,118,111,108,97,116,105,108,101,0,32,114,101,115,116,114,105,99,116,0,32,91,0,32,91,93,0,93,0,32,99,111,109,112,108,101,120,0,40,0,44,32,0,32,38,0,32,38,38,0,32,0,32,105,109,97,103,105,110,97,114,121,0,58,58,42,0,38,38,0,111,98,106,99,95,111,98,106,101,99,116,60,0,42,0,105,100,0,38,0,111,98,106,99,112,114,111,116,111,0,60,0,62,0,32,118,101,99,116,111,114,91,0,112,105,120,101,108,32,118,101,99,116,111,114,91,0,100,101,99,108,116,121,112,101,40,0,115,116,100,58,58,97,108,108,111,99,97,116,111,114,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,105,115,116,114,101,97,109,0,115,116,100,58,58,111,115,116,114,101,97,109,0,115,116,100,58,58,105,111,115,116,114,101,97,109,0,115,116,100,0,58,58,0,58,58,115,116,114,105,110,103,32,108,105,116,101,114,97,108,0,115,116,100,58,58,0,126,0,39,117,110,110,97,109,101,100,0,39,108,97,109,98,100,97,39,40,0,111,112,101,114,97,116,111,114,38,38,0,111,112,101,114,97,116,111,114,38,0,111,112,101,114,97,116,111,114,38,61,0,111,112,101,114,97,116,111,114,61,0,111,112,101,114,97,116,111,114,40,41,0,111,112,101,114,97,116,111,114,44,0,111,112,101,114,97,116,111,114,126,0,111,112,101,114,97,116,111,114,32,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0,111,112,101,114,97,116,111,114,42,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0,111,112,101,114,97,116,111,114,47,0,111,112,101,114,97,116,111,114,47,61,0,111,112,101,114,97,116,111,114,94,0,111,112,101,114,97,116,111,114,94,61,0,111,112,101,114,97,116,111,114,61,61,0,111,112,101,114,97,116,111,114,62,61,0,111,112,101,114,97,116,111,114,62,0,111,112,101,114,97,116,111,114,91,93,0,111,112,101,114,97,116,111,114,60,61,0,111,112,101,114,97,116,111,114,34,34,32,0,111,112,101,114,97,116,111,114,60,60,0,111,112,101,114,97,116,111,114,60,60,61,0,111,112,101,114,97,116,111,114,60,0,111,112,101,114,97,116,111,114,45,0,111,112,101,114,97,116,111,114,45,61,0,111,112,101,114,97,116,111,114,42,61,0,111,112,101,114,97,116,111,114,45,45,0,111,112,101,114,97,116,111,114,32,110,101,119,91,93,0,111,112,101,114,97,116,111,114,33,61,0,111,112,101,114,97,116,111,114,33,0,111,112,101,114,97,116,111,114,32,110,101,119,0,111,112,101,114,97,116,111,114,124,124,0,111,112,101,114,97,116,111,114,124,0,111,112,101,114,97,116,111,114,124,61,0,111,112,101,114,97,116,111,114,45,62,42,0,111,112,101,114,97,116,111,114,43,0,111,112,101,114,97,116,111,114,43,61,0,111,112,101,114,97,116,111,114,43,43,0,111,112,101,114,97,116,111,114,45,62,0,111,112,101,114,97,116,111,114,63,0,111,112,101,114,97,116,111,114,37,0,111,112,101,114,97,116,111,114,37,61,0,111,112,101,114,97,116,111,114,62,62,0,111,112,101,114,97,116,111,114,62,62,61,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,111,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,111,115,116,114,101,97,109,0,95,71,76,79,66,65,76,95,95,78,0,40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0,32,62,0,119,99,104,97,114,95,116,0,102,97,108,115,101,0,116,114,117,101,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,117,0,108,0,117,108,0,108,108,0,117,108,108,0,95,95,105,110,116,49,50,56,0,117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0,37,97,102,0,37,97,0,37,76,97,76,0,38,61,0,61,0,97,108,105,103,110,111,102,32,40,0,99,111,110,115,116,95,99,97,115,116,60,0,62,40,0,44,0,41,40,0,100,101,108,101,116,101,91,93,32,0,100,121,110,97,109,105,99,95,99,97,115,116,60,0,100,101,108,101,116,101,32,0,46,42,0,47,0,47,61,0,94,0,94,61,0,61,61,0,62,61,0,41,91,0,60,61,0,60,60,0,60,60,61,0,45,0,45,61,0,42,61,0,45,45,0,41,45,45,0,91,93,32,0,41,32,0,33,61,0,33,0,110,111,101,120,99,101,112,116,32,40,0,124,124,0,124,0,124,61,0,45,62,42,0,43,0,43,61,0,43,43,0,41,43,43,0,45,62,0,41,32,63,32,40,0,41,32,58,32,40,0,114,101,105,110,116,101,114,112,114,101,116,95,99,97,115,116,60,0,37,0,37,61,0,62,62,0,62,62,61,0,115,116,97,116,105,99,95,99,97,115,116,60,0,115,105,122,101,111,102,32,40,0,115,105,122,101,111,102,46,46,46,40,0,116,121,112,101,105,100,40,0,116,104,114,111,119,0,116,104,114,111,119,32,0,102,112,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,118,111,105,100,0,98,111,111,108,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,108,111,110,103,32,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,108,111,110,103,32,100,111,117,98,108,101,0,95,95,102,108,111,97,116,49,50,56,0,46,46,46,0,100,101,99,105,109,97,108,54,52,0,100,101,99,105,109,97,108,49,50,56,0,100,101,99,105,109,97,108,51,50,0,100,101,99,105,109,97,108,49,54,0,99,104,97,114,51,50,95,116,0,99,104,97,114,49,54,95,116,0,97,117,116,111,0,115,116,100,58,58,110,117,108,108,112,116,114,95,116,0,118,116,97,98,108,101,32,102,111,114,32,0,86,84,84,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0,99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0,99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0,45,105,110,45,0,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0,114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); +/* memory initializer */ allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+17795); + + + + + +/* no memory initializer */ +var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); + +assert(tempDoublePtr % 8 == 0); + +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + + HEAP8[tempDoublePtr] = HEAP8[ptr]; + + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + +} + +function copyTempDouble(ptr) { + + HEAP8[tempDoublePtr] = HEAP8[ptr]; + + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + + HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + + HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + + HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; + + HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; + +} + +// {{PRE_LIBRARY}} + + + + function _atexit(func, arg) { + __ATEXIT__.unshift({ func: func, arg: arg }); + }function ___cxa_atexit() { + return _atexit.apply(null, arguments) + } + + + Module["_i64Subtract"] = _i64Subtract; + + function ___assert_fail(condition, filename, line, func) { + ABORT = true; + throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace(); + } + + + + + function embind_init_charCodes() { + var codes = new Array(256); + for (var i = 0; i < 256; ++i) { + codes[i] = String.fromCharCode(i); + } + embind_charCodes = codes; + }var embind_charCodes=undefined;function readLatin1String(ptr) { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]]; + } + return ret; + } + + + var awaitingDependencies={}; + + var registeredTypes={}; + + var typeDependencies={}; + + + + + + + var char_0=48; + + var char_9=57;function makeLegalFunctionName(name) { + if (undefined === name) { + return '_unknown'; + } + name = name.replace(/[^a-zA-Z0-9_]/g, '$'); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return '_' + name; + } else { + return name; + } + }function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + /*jshint evil:true*/ + return new Function( + "body", + "return function " + name + "() {\n" + + " \"use strict\";" + + " return body.apply(this, arguments);\n" + + "};\n" + )(body); + }function extendError(baseErrorType, errorName) { + var errorClass = createNamedFunction(errorName, function(message) { + this.name = errorName; + this.message = message; + + var stack = (new Error(message)).stack; + if (stack !== undefined) { + this.stack = this.toString() + '\n' + + stack.replace(/^Error(:[^\n]*)?\n/, ''); + } + }); + errorClass.prototype = Object.create(baseErrorType.prototype); + errorClass.prototype.constructor = errorClass; + errorClass.prototype.toString = function() { + if (this.message === undefined) { + return this.name; + } else { + return this.name + ': ' + this.message; + } + }; + + return errorClass; + }var BindingError=undefined;function throwBindingError(message) { + throw new BindingError(message); + } + + + + var InternalError=undefined;function throwInternalError(message) { + throw new InternalError(message); + }function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { + myTypes.forEach(function(type) { + typeDependencies[type] = dependentTypes; + }); + + function onComplete(typeConverters) { + var myTypeConverters = getTypeConverters(typeConverters); + if (myTypeConverters.length !== myTypes.length) { + throwInternalError('Mismatched type converter count'); + } + for (var i = 0; i < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]); + } + } + + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach(function(dt, i) { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt]; + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = []; + } + awaitingDependencies[dt].push(function() { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters); + } + }); + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters); + } + }function registerType(rawType, registeredInstance, options) { + options = options || {}; + + if (!('argPackAdvance' in registeredInstance)) { + throw new TypeError('registerType registeredInstance requires argPackAdvance'); + } + + var name = registeredInstance.name; + if (!rawType) { + throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return; + } else { + throwBindingError("Cannot register type '" + name + "' twice"); + } + } + + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(function(cb) { + cb(); + }); + } + }function __embind_register_void(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, // void return values can be optimized out sometimes + name: name, + 'argPackAdvance': 0, + 'fromWireType': function() { + return undefined; + }, + 'toWireType': function(destructors, o) { + // TODO: assert if anything else is given? + return undefined; + }, + }); + } + + + function __ZSt18uncaught_exceptionv() { // std::uncaught_exception() + return !!__ZSt18uncaught_exceptionv.uncaught_exception; + } + + + + var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) { + if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted; + for (var ptr in EXCEPTIONS.infos) { + var info = EXCEPTIONS.infos[ptr]; + if (info.adjusted === adjusted) { + return ptr; + } + } + return adjusted; + },addRef:function (ptr) { + if (!ptr) return; + var info = EXCEPTIONS.infos[ptr]; + info.refcount++; + },decRef:function (ptr) { + if (!ptr) return; + var info = EXCEPTIONS.infos[ptr]; + assert(info.refcount > 0); + info.refcount--; + if (info.refcount === 0) { + if (info.destructor) { + Runtime.dynCall('vi', info.destructor, [ptr]); + } + delete EXCEPTIONS.infos[ptr]; + ___cxa_free_exception(ptr); + } + },clearRef:function (ptr) { + if (!ptr) return; + var info = EXCEPTIONS.infos[ptr]; + info.refcount = 0; + }}; + function ___resumeException(ptr) { + if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; } + EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr)); // exception refcount should be cleared, but don't free it + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + }function ___cxa_find_matching_catch() { + var thrown = EXCEPTIONS.last; + if (!thrown) { + // just pass through the null ptr + return ((asm["setTempRet0"](0),0)|0); + } + var info = EXCEPTIONS.infos[thrown]; + var throwntype = info.type; + if (!throwntype) { + // just pass through the thrown ptr + return ((asm["setTempRet0"](0),thrown)|0); + } + var typeArray = Array.prototype.slice.call(arguments); + + var pointer = Module['___cxa_is_pointer_type'](throwntype); + // can_catch receives a **, add indirection + if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4); + HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown; + thrown = ___cxa_find_matching_catch.buffer; + // The different catch blocks are denoted by different types. + // Due to inheritance, those types may not precisely match the + // type of the thrown object. Find one which matches, and + // return the type of the catch block which should be called. + for (var i = 0; i < typeArray.length; i++) { + if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) { + thrown = HEAP32[((thrown)>>2)]; // undo indirection + info.adjusted = thrown; + return ((asm["setTempRet0"](typeArray[i]),thrown)|0); + } + } + // Shouldn't happen unless we have bogus data in typeArray + // or encounter a type for which emscripten doesn't have suitable + // typeinfo defined. Best-efforts match just in case. + thrown = HEAP32[((thrown)>>2)]; // undo indirection + return ((asm["setTempRet0"](throwntype),thrown)|0); + }function ___cxa_throw(ptr, type, destructor) { + EXCEPTIONS.infos[ptr] = { + ptr: ptr, + adjusted: ptr, + type: type, + destructor: destructor, + refcount: 0 + }; + EXCEPTIONS.last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exception = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exception++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + } + + + Module["_memset"] = _memset; + + var _BDtoILow=true; + + + function getShiftFromSize(size) { + switch (size) { + case 1: return 0; + case 2: return 1; + case 4: return 2; + case 8: return 3; + default: + throw new TypeError('Unknown type size: ' + size); + } + }function __embind_register_bool(rawType, name, size, trueValue, falseValue) { + var shift = getShiftFromSize(size); + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(wt) { + // ambiguous emscripten ABI: sometimes return values are + // true or false, and sometimes integers (0 or 1) + return !!wt; + }, + 'toWireType': function(destructors, o) { + return o ? trueValue : falseValue; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': function(pointer) { + // TODO: if heap is fixed (like in asm.js) this could be executed outside + var heap; + if (size === 1) { + heap = HEAP8; + } else if (size === 2) { + heap = HEAP16; + } else if (size === 4) { + heap = HEAP32; + } else { + throw new TypeError("Unknown boolean type size: " + name); + } + return this['fromWireType'](heap[pointer >> shift]); + }, + destructorFunction: null, // This type does not need a destructor + }); + } + + + Module["_bitshift64Shl"] = _bitshift64Shl; + + function _abort() { + Module['abort'](); + } + + + function _free() { + } + Module["_free"] = _free; + + function _malloc(bytes) { + /* Over-allocate to make sure it is byte-aligned by 8. + * This will leak memory, but this is only the dummy + * implementation (replaced by dlmalloc normally) so + * not an issue. + */ + var ptr = Runtime.dynamicAlloc(bytes + 8); + return (ptr+8) & 0xFFFFFFF8; + } + Module["_malloc"] = _malloc; + + function simpleReadValueFromPointer(pointer) { + return this['fromWireType'](HEAPU32[pointer >> 2]); + }function __embind_register_std_string(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var length = HEAPU32[value >> 2]; + var a = new Array(length); + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[value + 4 + i]); + } + _free(value); + return a.join(''); + }, + 'toWireType': function(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value); + } + + function getTAElement(ta, index) { + return ta[index]; + } + function getStringElement(string, index) { + return string.charCodeAt(index); + } + var getElement; + if (value instanceof Uint8Array) { + getElement = getTAElement; + } else if (value instanceof Int8Array) { + getElement = getTAElement; + } else if (typeof value === 'string') { + getElement = getStringElement; + } else { + throwBindingError('Cannot pass non-string to std::string'); + } + + // assumes 4-byte alignment + var length = value.length; + var ptr = _malloc(4 + length); + HEAPU32[ptr >> 2] = length; + for (var i = 0; i < length; ++i) { + var charCode = getElement(value, i); + if (charCode > 255) { + _free(ptr); + throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); + } + HEAPU8[ptr + 4 + i] = charCode; + } + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function __embind_register_std_wstring(rawType, charSize, name) { + // nb. do not cache HEAPU16 and HEAPU32, they may be destroyed by enlargeMemory(). + name = readLatin1String(name); + var getHeap, shift; + if (charSize === 2) { + getHeap = function() { return HEAPU16; }; + shift = 1; + } else if (charSize === 4) { + getHeap = function() { return HEAPU32; }; + shift = 2; + } + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var HEAP = getHeap(); + var length = HEAPU32[value >> 2]; + var a = new Array(length); + var start = (value + 4) >> shift; + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAP[start + i]); + } + _free(value); + return a.join(''); + }, + 'toWireType': function(destructors, value) { + // assumes 4-byte alignment + var HEAP = getHeap(); + var length = value.length; + var ptr = _malloc(4 + length * charSize); + HEAPU32[ptr >> 2] = length; + var start = (ptr + 4) >> shift; + for (var i = 0; i < length; ++i) { + HEAP[start + i] = value.charCodeAt(i); + } + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function ___lock() {} + + function ___unlock() {} + + var _emscripten_asm_const_int=true; + + + Module["_i64Add"] = _i64Add; + + var _fabs=Math_abs; + + var _sqrt=Math_sqrt; + + + function _embind_repr(v) { + if (v === null) { + return 'null'; + } + var t = typeof v; + if (t === 'object' || t === 'array' || t === 'function') { + return v.toString(); + } else { + return '' + v; + } + } + + function integerReadValueFromPointer(name, shift, signed) { + // integers are quite common, so generate very specialized functions + switch (shift) { + case 0: return signed ? + function readS8FromPointer(pointer) { return HEAP8[pointer]; } : + function readU8FromPointer(pointer) { return HEAPU8[pointer]; }; + case 1: return signed ? + function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } : + function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; }; + case 2: return signed ? + function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } : + function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; }; + default: + throw new TypeError("Unknown integer type: " + name); + } + }function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { + name = readLatin1String(name); + if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32. + maxRange = 4294967295; + } + + var shift = getShiftFromSize(size); + + var fromWireType = function(value) { + return value; + }; + + if (minRange === 0) { + var bitshift = 32 - 8*size; + fromWireType = function(value) { + return (value << bitshift) >>> bitshift; + }; + } + + registerType(primitiveType, { + name: name, + 'fromWireType': fromWireType, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following two if()s and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + if (value < minRange || value > maxRange) { + throw new TypeError('Passing a number "' + _embind_repr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!'); + } + return value | 0; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0), + destructorFunction: null, // This type does not need a destructor + }); + } + + + + var emval_free_list=[]; + + var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle) { + if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { + emval_handle_array[handle] = undefined; + emval_free_list.push(handle); + } + } + + + + function count_emval_handles() { + var count = 0; + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + ++count; + } + } + return count; + } + + function get_first_emval() { + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + return emval_handle_array[i]; + } + } + return null; + }function init_emval() { + Module['count_emval_handles'] = count_emval_handles; + Module['get_first_emval'] = get_first_emval; + }function __emval_register(value) { + + switch(value){ + case undefined :{ return 1; } + case null :{ return 2; } + case true :{ return 3; } + case false :{ return 4; } + default:{ + var handle = emval_free_list.length ? + emval_free_list.pop() : + emval_handle_array.length; + + emval_handle_array[handle] = {refcount: 1, value: value}; + return handle; + } + } + }function __embind_register_emval(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(handle) { + var rv = emval_handle_array[handle].value; + __emval_decref(handle); + return rv; + }, + 'toWireType': function(destructors, value) { + return __emval_register(value); + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: null, // This type does not need a destructor + + // TODO: do we need a deleteObject here? write a test where + // emval is passed into JS via an interface + }); + } + + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + + var _sin=Math_sin; + + + function ___setErrNo(value) { + if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value; + else Module.printErr('failed to set errno from JS'); + return value; + } + + var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) { + // long sysconf(int name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html + switch(name) { + case 30: return PAGE_SIZE; + case 85: return totalMemory / PAGE_SIZE; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 79: + return 0; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: return 2097152; + case 3: return 65536; + case 28: return 32768; + case 44: return 32767; + case 75: return 16384; + case 39: return 1000; + case 89: return 700; + case 71: return 256; + case 40: return 255; + case 2: return 100; + case 180: return 64; + case 25: return 20; + case 5: return 16; + case 6: return 6; + case 73: return 4; + case 84: { + if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1; + return 1; + } + } + ___setErrNo(ERRNO_CODES.EINVAL); + return -1; + } + + + Module["_bitshift64Lshr"] = _bitshift64Lshr; + + + function __exit(status) { + // void _exit(int status); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html + Module['exit'](status); + }function _exit(status) { + __exit(status); + } + + var _llvm_ctlz_i32=true; + + + function floatReadValueFromPointer(name, shift) { + switch (shift) { + case 2: return function(pointer) { + return this['fromWireType'](HEAPF32[pointer >> 2]); + }; + case 3: return function(pointer) { + return this['fromWireType'](HEAPF64[pointer >> 3]); + }; + default: + throw new TypeError("Unknown float type: " + name); + } + }function __embind_register_float(rawType, name, size) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + return value; + }, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following if() and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + return value; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': floatReadValueFromPointer(name, shift), + destructorFunction: null, // This type does not need a destructor + }); + } + + var _BDtoIHigh=true; + + function _pthread_cleanup_push(routine, arg) { + __ATEXIT__.push(function() { Runtime.dynCall('vi', routine, [arg]) }) + _pthread_cleanup_push.level = __ATEXIT__.length; + } + + + + function new_(constructor, argumentList) { + if (!(constructor instanceof Function)) { + throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); + } + + /* + * Previously, the following line was just: + + function dummy() {}; + + * Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the + * correct constructor name. Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which + * isn't very helpful. Using IMVU.createNamedFunction addresses the issue. Doublely-unfortunately, there's no way + * to write a test for this behavior. -NRD 2013.02.22 + */ + var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); + dummy.prototype = constructor.prototype; + var obj = new dummy; + + var r = constructor.apply(obj, argumentList); + return (r instanceof Object) ? r : obj; + } + + function runDestructors(destructors) { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr); + } + }function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { + // humanName: a human-readable string name for the function to be generated. + // argTypes: An array that contains the embind type objects for all types in the function signature. + // argTypes[0] is the type object for the function return value. + // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. + // argTypes[2...] are the actual function parameters. + // classType: The embind type object for the class to be bound, or null if this is not a method of a class. + // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. + // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. + var argCount = argTypes.length; + + if (argCount < 2) { + throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); + } + + var isClassMethodFunc = (argTypes[1] !== null && classType !== null); + + // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. + // TODO: This omits argument count check - enable only at -O3 or similar. + // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { + // return FUNCTION_TABLE[fn]; + // } + + var argsList = ""; + var argsListWired = ""; + for(var i = 0; i < argCount - 2; ++i) { + argsList += (i!==0?", ":"")+"arg"+i; + argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; + } + + var invokerFnBody = + "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" + + "if (arguments.length !== "+(argCount - 2)+") {\n" + + "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" + + "}\n"; + + + // Determine if we need to use a dynamic stack to store the destructors for the function parameters. + // TODO: Remove this completely once all function invokers are being dynamically generated. + var needsDestructorStack = false; + + for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack + needsDestructorStack = true; + break; + } + } + + if (needsDestructorStack) { + invokerFnBody += + "var destructors = [];\n"; + } + + var dtorStack = needsDestructorStack ? "destructors" : "null"; + var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; + var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; + + + if (isClassMethodFunc) { + invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n"; + } + + for(var i = 0; i < argCount - 2; ++i) { + invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; + args1.push("argType"+i); + args2.push(argTypes[i+2]); + } + + if (isClassMethodFunc) { + argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; + } + + var returns = (argTypes[0].name !== "void"); + + invokerFnBody += + (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; + + if (needsDestructorStack) { + invokerFnBody += "runDestructors(destructors);\n"; + } else { + for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. + var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); + if (argTypes[i].destructorFunction !== null) { + invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; + args1.push(paramName+"_dtor"); + args2.push(argTypes[i].destructorFunction); + } + } + } + + if (returns) { + invokerFnBody += "var ret = retType.fromWireType(rv);\n" + + "return ret;\n"; + } else { + } + invokerFnBody += "}\n"; + + args1.push(invokerFnBody); + + var invokerFunction = new_(Function, args1).apply(null, args2); + return invokerFunction; + } + + + function ensureOverloadTable(proto, methodName, humanName) { + if (undefined === proto[methodName].overloadTable) { + var prevFunc = proto[methodName]; + // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. + proto[methodName] = function() { + // TODO This check can be removed in -O3 level "unsafe" optimizations. + if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { + throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); + } + return proto[methodName].overloadTable[arguments.length].apply(this, arguments); + }; + // Move the previous function into the overload table. + proto[methodName].overloadTable = []; + proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; + } + }function exposePublicSymbol(name, value, numArguments) { + if (Module.hasOwnProperty(name)) { + if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { + throwBindingError("Cannot register public name '" + name + "' twice"); + } + + // We are exposing a function with the same name as an existing function. Create an overload table and a function selector + // that routes between the two. + ensureOverloadTable(Module, name, name); + if (Module.hasOwnProperty(numArguments)) { + throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); + } + // Add the new function into the overload table. + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + if (undefined !== numArguments) { + Module[name].numArguments = numArguments; + } + } + } + + function heap32VectorToArray(count, firstElement) { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAP32[(firstElement >> 2) + i]); + } + return array; + } + + function replacePublicSymbol(name, value, numArguments) { + if (!Module.hasOwnProperty(name)) { + throwInternalError('Replacing nonexistant public symbol'); + } + // If there's an overload table for this symbol, replace the symbol in the overload table instead. + if (undefined !== Module[name].overloadTable && undefined !== numArguments) { + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + } + } + + function requireFunction(signature, rawFunction) { + signature = readLatin1String(signature); + + function makeDynCaller(dynCall) { + var args = []; + for (var i = 1; i < signature.length; ++i) { + args.push('a' + i); + } + + var name = 'dynCall_' + signature + '_' + rawFunction; + var body = 'return function ' + name + '(' + args.join(', ') + ') {\n'; + body += ' return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\n'; + body += '};\n'; + + return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction); + } + + var fp; + if (Module['FUNCTION_TABLE_' + signature] !== undefined) { + fp = Module['FUNCTION_TABLE_' + signature][rawFunction]; + } else if (typeof FUNCTION_TABLE !== "undefined") { + fp = FUNCTION_TABLE[rawFunction]; + } else { + // asm.js does not give direct access to the function tables, + // and thus we must go through the dynCall interface which allows + // calling into a signature's function table by pointer value. + // + // https://github.com/dherman/asm.js/issues/83 + // + // This has three main penalties: + // - dynCall is another function call in the path from JavaScript to C++. + // - JITs may not predict through the function table indirection at runtime. + var dc = asm['dynCall_' + signature]; + if (dc === undefined) { + // We will always enter this branch if the signature + // contains 'f' and PRECISE_F32 is not enabled. + // + // Try again, replacing 'f' with 'd'. + dc = asm['dynCall_' + signature.replace(/f/g, 'd')]; + if (dc === undefined) { + throwBindingError("No dynCall invoker for signature: " + signature); + } + } + fp = makeDynCaller(dc); + } + + if (typeof fp !== "function") { + throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); + } + return fp; + } + + + var UnboundTypeError=undefined; + + function getTypeName(type) { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv; + }function throwUnboundTypeError(message, types) { + var unboundTypes = []; + var seen = {}; + function visit(type) { + if (seen[type]) { + return; + } + if (registeredTypes[type]) { + return; + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return; + } + unboundTypes.push(type); + seen[type] = true; + } + types.forEach(visit); + + throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', '])); + }function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn) { + var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + name = readLatin1String(name); + + rawInvoker = requireFunction(signature, rawInvoker); + + exposePublicSymbol(name, function() { + throwUnboundTypeError('Cannot call ' + name + ' due to unbound types', argTypes); + }, argCount - 1); + + whenDependentTypesAreResolved([], argTypes, function(argTypes) { + var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); + replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn), argCount - 1); + return []; + }); + } + + function __embind_register_constant(name, type, value) { + name = readLatin1String(name); + whenDependentTypesAreResolved([], [type], function(type) { + type = type[0]; + Module[name] = type['fromWireType'](value); + return []; + }); + } + + function _pthread_cleanup_pop() { + assert(_pthread_cleanup_push.level == __ATEXIT__.length, 'cannot pop if something else added meanwhile!'); + __ATEXIT__.pop(); + _pthread_cleanup_push.level = __ATEXIT__.length; + } + + + + + var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; + + var PATH={splitPath:function (filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function (parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + return parts; + },normalize:function (path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function (path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function (path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function (path) { + return PATH.splitPath(path)[3]; + },join:function () { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function (l, r) { + return PATH.normalize(l + '/' + r); + },resolve:function () { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function (from, to) { + from = PATH.resolve(from).substr(1); + to = PATH.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + var TTY={ttys:[],init:function () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function (dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function (stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + stream.tty = tty; + stream.seekable = false; + },close:function (stream) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + },flush:function (stream) { + stream.tty.ops.flush(stream.tty); + },read:function (stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + for (var i = 0; i < length; i++) { + try { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function (tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = new Buffer(BUFSIZE); + var bytesRead = 0; + + var fd = process.stdin.fd; + // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync) + var usingDevice = false; + try { + fd = fs.openSync('/dev/stdin', 'r'); + usingDevice = true; + } catch (e) {} + + bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null); + + if (usingDevice) { fs.closeSync(fd); } + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString('utf-8'); + } else { + result = null; + } + + } else if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function (tty, val) { + if (val === null || val === 10) { + Module['print'](UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. + } + },flush:function (tty) { + if (tty.output && tty.output.length > 0) { + Module['print'](UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }},default_tty1_ops:{put_char:function (tty, val) { + if (val === null || val === 10) { + Module['printErr'](UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + },flush:function (tty) { + if (tty.output && tty.output.length > 0) { + Module['printErr'](UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }}}; + + var MEMFS={ops_table:null,mount:function (mount) { + return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); + },createNode:function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },getFileDataAsRegularArray:function (node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr; // Returns a copy of the original data. + } + return node.contents; // No-op, the file contents are already in a JS array. Return as-is. + },getFileDataAsTypedArray:function (node) { + if (!node.contents) return new Uint8Array; + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function (node, newCapacity) { + // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file + // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to + // increase the size. + if (node.contents && node.contents.subarray && newCapacity > node.contents.length) { + node.contents = MEMFS.getFileDataAsRegularArray(node); + node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it. + } + + if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well. + var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + return; + } + // Not using a typed array to back the file storage. Use a standard JS array instead. + if (!node.contents && newCapacity > 0) node.contents = []; + while (node.contents.length < newCapacity) node.contents.push(0); + },resizeFileStorage:function (node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + return; + } + // Backing with a JS array. + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else while (node.contents.length < newSize) node.contents.push(0); + node.usedBytes = newSize; + },node_ops:{getattr:function (node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + },lookup:function (parent, name) { + throw FS.genericErrors[ERRNO_CODES.ENOENT]; + },mknod:function (parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function (old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + },unlink:function (parent, name) { + delete parent.contents[name]; + },rmdir:function (parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + delete parent.contents[name]; + },readdir:function (node) { + var entries = ['.', '..'] + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function (parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); + node.link = oldpath; + return node; + },readlink:function (node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return node.link; + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + + if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? + if (canOwn) { // Can we just reuse the buffer we are given? + assert(position === 0, 'canOwn must imply no weird position inside the file'); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position+length); + return length; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return position; + },allocate:function (stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 2) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < stream.node.usedBytes) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); + } + buffer.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + },msync:function (stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + if (mmapFlags & 2) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + return 0; + }}}; + + var IDBFS={dbs:{},indexedDB:function () { + if (typeof indexedDB !== 'undefined') return indexedDB; + var ret = null; + if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + assert(ret, 'IDBFS used, but indexedDB not supported'); + return ret; + },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { + // reuse all of the core MEMFS functionality + return MEMFS.mount.apply(null, arguments); + },syncfs:function (mount, populate, callback) { + IDBFS.getLocalSet(mount, function(err, local) { + if (err) return callback(err); + + IDBFS.getRemoteSet(mount, function(err, remote) { + if (err) return callback(err); + + var src = populate ? remote : local; + var dst = populate ? local : remote; + + IDBFS.reconcile(src, dst, callback); + }); + }); + },getDB:function (name, callback) { + // check the cache first + var db = IDBFS.dbs[name]; + if (db) { + return callback(null, db); + } + + var req; + try { + req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); + } catch (e) { + return callback(e); + } + req.onupgradeneeded = function(e) { + var db = e.target.result; + var transaction = e.target.transaction; + + var fileStore; + + if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { + fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); + } else { + fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); + } + + if (!fileStore.indexNames.contains('timestamp')) { + fileStore.createIndex('timestamp', 'timestamp', { unique: false }); + } + }; + req.onsuccess = function() { + db = req.result; + + // add to the cache + IDBFS.dbs[name] = db; + callback(null, db); + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },getLocalSet:function (mount, callback) { + var entries = {}; + + function isRealDir(p) { + return p !== '.' && p !== '..'; + }; + function toAbsolute(root) { + return function(p) { + return PATH.join2(root, p); + } + }; + + var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); + + while (check.length) { + var path = check.pop(); + var stat; + + try { + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); + } + + entries[path] = { timestamp: stat.mtime }; + } + + return callback(null, { type: 'local', entries: entries }); + },getRemoteSet:function (mount, callback) { + var entries = {}; + + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); + transaction.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + var index = store.index('timestamp'); + + index.openKeyCursor().onsuccess = function(event) { + var cursor = event.target.result; + + if (!cursor) { + return callback(null, { type: 'remote', db: db, entries: entries }); + } + + entries[cursor.primaryKey] = { timestamp: cursor.key }; + + cursor.continue(); + }; + }); + },loadLocalEntry:function (path, callback) { + var stat, node; + + try { + var lookup = FS.lookupPath(path); + node = lookup.node; + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + return callback(null, { timestamp: stat.mtime, mode: stat.mode }); + } else if (FS.isFile(stat.mode)) { + // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array. + // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB. + node.contents = MEMFS.getFileDataAsTypedArray(node); + return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); + } else { + return callback(new Error('node type not supported')); + } + },storeLocalEntry:function (path, entry, callback) { + try { + if (FS.isDir(entry.mode)) { + FS.mkdir(path, entry.mode); + } else if (FS.isFile(entry.mode)) { + FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); + } else { + return callback(new Error('node type not supported')); + } + + FS.chmod(path, entry.mode); + FS.utime(path, entry.timestamp, entry.timestamp); + } catch (e) { + return callback(e); + } + + callback(null); + },removeLocalEntry:function (path, callback) { + try { + var lookup = FS.lookupPath(path); + var stat = FS.stat(path); + + if (FS.isDir(stat.mode)) { + FS.rmdir(path); + } else if (FS.isFile(stat.mode)) { + FS.unlink(path); + } + } catch (e) { + return callback(e); + } + + callback(null); + },loadRemoteEntry:function (store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { callback(null, event.target.result); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },storeRemoteEntry:function (store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },removeRemoteEntry:function (store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },reconcile:function (src, dst, callback) { + var total = 0; + + var create = []; + Object.keys(src.entries).forEach(function (key) { + var e = src.entries[key]; + var e2 = dst.entries[key]; + if (!e2 || e.timestamp > e2.timestamp) { + create.push(key); + total++; + } + }); + + var remove = []; + Object.keys(dst.entries).forEach(function (key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++; + } + }); + + if (!total) { + return callback(null); + } + + var errored = false; + var completed = 0; + var db = src.type === 'remote' ? src.db : dst.db; + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= total) { + return callback(null); + } + }; + + transaction.onerror = function(e) { + done(this.error); + e.preventDefault(); + }; + + // sort paths in ascending order so directory entries are created + // before the files inside them + create.sort().forEach(function (path) { + if (dst.type === 'local') { + IDBFS.loadRemoteEntry(store, path, function (err, entry) { + if (err) return done(err); + IDBFS.storeLocalEntry(path, entry, done); + }); + } else { + IDBFS.loadLocalEntry(path, function (err, entry) { + if (err) return done(err); + IDBFS.storeRemoteEntry(store, path, entry, done); + }); + } + }); + + // sort paths in descending order so files are deleted before their + // parent directories + remove.sort().reverse().forEach(function(path) { + if (dst.type === 'local') { + IDBFS.removeLocalEntry(path, done); + } else { + IDBFS.removeRemoteEntry(store, path, done); + } + }); + }}; + + var NODEFS={isWindows:false,staticInit:function () { + NODEFS.isWindows = !!process.platform.match(/^win/); + },mount:function (mount) { + assert(ENVIRONMENT_IS_NODE); + return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); + },createNode:function (parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + },getMode:function (path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so + // propagate write bits to execute bits. + stat.mode = stat.mode | ((stat.mode & 146) >> 1); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return stat.mode; + },realPath:function (node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { + flags &= ~0100000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + if (flags in NODEFS.flagsToPermissionStringMap) { + return NODEFS.flagsToPermissionStringMap[flags]; + } else { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + },node_ops:{getattr:function (node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. + // See http://support.microsoft.com/kb/140365 + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + },setattr:function (node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + // update the common node structure mode as well + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },lookup:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + },mknod:function (parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + // create the backing node for this in the fs root as well + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, '', { mode: node.mode }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return node; + },rename:function (oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },unlink:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },rmdir:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readdir:function (node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },symlink:function (parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readlink:function (node) { + var path = NODEFS.realPath(node); + try { + path = fs.readlinkSync(path); + path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); + return path; + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + }},stream_ops:{open:function (stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },close:function (stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },read:function (stream, buffer, offset, length, position) { + if (length === 0) return 0; // node errors on 0 length reads + // FIXME this is terrible. + var nbuffer = new Buffer(length); + var res; + try { + res = fs.readSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + if (res > 0) { + for (var i = 0; i < res; i++) { + buffer[offset + i] = nbuffer[i]; + } + } + return res; + },write:function (stream, buffer, offset, length, position) { + // FIXME this is terrible. + var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); + var res; + try { + res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return res; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + } + } + + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + return position; + }}}; + + var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) { + assert(ENVIRONMENT_IS_WORKER); + if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync(); + var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0); + var createdParents = {}; + function ensureParent(path) { + // return the parent node, creating subdirs as necessary + var parts = path.split('/'); + var parent = root; + for (var i = 0; i < parts.length-1; i++) { + var curr = parts.slice(0, i+1).join('/'); + if (!createdParents[curr]) { + createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0); + } + parent = createdParents[curr]; + } + return parent; + } + function base(path) { + var parts = path.split('/'); + return parts[parts.length-1]; + } + // We also accept FileList here, by using Array.prototype + Array.prototype.forEach.call(mount.opts["files"] || [], function(file) { + WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate); + }); + (mount.opts["blobs"] || []).forEach(function(obj) { + WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]); + }); + (mount.opts["packages"] || []).forEach(function(pack) { + pack['metadata'].files.forEach(function(file) { + var name = file.filename.substr(1); // remove initial slash + WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end)); + }); + }); + return root; + },createNode:function (parent, name, mode, dev, contents, mtime) { + var node = FS.createNode(parent, name, mode); + node.mode = mode; + node.node_ops = WORKERFS.node_ops; + node.stream_ops = WORKERFS.stream_ops; + node.timestamp = (mtime || new Date).getTime(); + assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); + if (mode === WORKERFS.FILE_MODE) { + node.size = contents.size; + node.contents = contents; + } else { + node.size = 4096; + node.contents = {}; + } + if (parent) { + parent.contents[name] = node; + } + return node; + },node_ops:{getattr:function (node) { + return { + dev: 1, + ino: undefined, + mode: node.mode, + nlink: 1, + uid: 0, + gid: 0, + rdev: undefined, + size: node.size, + atime: new Date(node.timestamp), + mtime: new Date(node.timestamp), + ctime: new Date(node.timestamp), + blksize: 4096, + blocks: Math.ceil(node.size / 4096), + }; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + },lookup:function (parent, name) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + },mknod:function (parent, name, mode, dev) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },rename:function (oldNode, newDir, newName) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },unlink:function (parent, name) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },rmdir:function (parent, name) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },readdir:function (node) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },symlink:function (parent, newName, oldPath) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + },readlink:function (node) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + if (position >= stream.node.size) return 0; + var chunk = stream.node.contents.slice(position, position + length); + var ab = WORKERFS.reader.readAsArrayBuffer(chunk); + buffer.set(new Uint8Array(ab), offset); + return chunk.size; + },write:function (stream, buffer, offset, length, position) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.size; + } + } + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return position; + }}}; + + var _stdin=allocate(1, "i32*", ALLOC_STATIC); + + var _stdout=allocate(1, "i32*", ALLOC_STATIC); + + var _stderr=allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:function (e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return ___setErrNo(e.errno); + },lookupPath:function (path, opts) { + path = PATH.resolve(FS.cwd(), path); + opts = opts || {}; + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function (node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function (parentid, name) { + var hash = 0; + + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function (parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function (parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + + FS.FSNode.prototype = {}; + + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function() { return (this.mode & readMode) === readMode; }, + set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } + }, + write: { + get: function() { return (this.mode & writeMode) === writeMode; }, + set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(this.mode); } + }, + isDevice: { + get: function() { return FS.isChrdev(this.mode); } + } + }); + } + + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function (node) { + FS.hashRemoveNode(node); + },isRoot:function (node) { + return node === node.parent; + },isMountpoint:function (node) { + return !!node.mounted; + },isFile:function (mode) { + return (mode & 61440) === 32768; + },isDir:function (mode) { + return (mode & 61440) === 16384; + },isLink:function (mode) { + return (mode & 61440) === 40960; + },isChrdev:function (mode) { + return (mode & 61440) === 8192; + },isBlkdev:function (mode) { + return (mode & 61440) === 24576; + },isFIFO:function (mode) { + return (mode & 61440) === 4096; + },isSocket:function (mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function (flag) { + var perms = ['r', 'w', 'rw'][flag & 3]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function (node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return ERRNO_CODES.EACCES; + } + return 0; + },mayLookup:function (dir) { + var err = FS.nodePermissions(dir, 'x'); + if (err) return err; + if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES; + return 0; + },mayCreate:function (dir, name) { + try { + var node = FS.lookupNode(dir, name); + return ERRNO_CODES.EEXIST; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function (dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return ERRNO_CODES.ENOTDIR; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return ERRNO_CODES.EBUSY; + } + } else { + if (FS.isDir(node.mode)) { + return ERRNO_CODES.EISDIR; + } + } + return 0; + },mayOpen:function (node, flags) { + if (!node) { + return ERRNO_CODES.ENOENT; + } + if (FS.isLink(node.mode)) { + return ERRNO_CODES.ELOOP; + } else if (FS.isDir(node.mode)) { + if ((flags & 2097155) !== 0 || // opening for write + (flags & 512)) { + return ERRNO_CODES.EISDIR; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(ERRNO_CODES.EMFILE); + },getStream:function (fd) { + return FS.streams[fd]; + },createStream:function (stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function(){}; + FS.FSStream.prototype = {}; + // compatibility + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }); + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function (fd) { + FS.streams[fd] = null; + },chrdev_stream_ops:{open:function (stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function () { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + }},major:function (dev) { + return ((dev) >> 8); + },minor:function (dev) { + return ((dev) & 0xff); + },makedev:function (ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function (dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function (dev) { + return FS.devices[dev]; + },getMounts:function (mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function (populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= mounts.length) { + callback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function (type, opts, mountpoint) { + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function (parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function (path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function (path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function (path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdev:function (path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function (oldpath, newpath) { + if (!PATH.resolve(oldpath)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function (old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(ERRNO_CODES.EXDEV); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + // new path should not be an ancestor of the old path + relative = PATH.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate['willMovePath']) { + FS.trackingDelegate['willMovePath'](old_path, new_path); + } + } catch(e) { + console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); + } catch(e) { + console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + },rmdir:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + return node.node_ops.readdir(node); + },unlink:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // POSIX says unlink should set EPERM, not EISDIR + if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readlink:function (path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + },stat:function (path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return node.node_ops.getattr(node); + },lstat:function (path) { + return FS.stat(path, true); + },chmod:function (path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function (path, mode) { + FS.chmod(path, mode, true); + },fchmod:function (fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chmod(stream.node, mode); + },chown:function (path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function (path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function (fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chown(stream.node, uid, gid); + },truncate:function (path, len) { + if (len < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function (fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + FS.truncate(stream.node, len); + },utime:function (path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function (path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(ERRNO_CODES.EEXIST); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // if asked only for a directory, then this must be one + if ((flags & 65536) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + Module['printErr']('read file: ' + path); + } + } + try { + if (FS.trackingDelegate['onOpenFile']) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate['onOpenFile'](path, trackingFlags); + } + } catch(e) { + console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); + } + return stream; + },close:function (stream) { + if (stream.getdents) stream.getdents = null; // free readdir state + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + },llseek:function (stream, offset, whence) { + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function (stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if (stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); + } catch(e) { + console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message); + } + return bytesWritten; + },allocate:function (stream, offset, length) { + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + // TODO if PROT is PROT_WRITE, make sure we have write access + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EACCES); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + },msync:function (stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function (stream) { + return 0; + },ioctl:function (stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function (path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function (path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + opts.encoding = opts.encoding || 'utf8'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var stream = FS.open(path, opts.flags, opts.mode); + if (opts.encoding === 'utf8') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn); + } else if (opts.encoding === 'binary') { + FS.write(stream, data, 0, data.length, 0, opts.canOwn); + } + FS.close(stream); + },cwd:function () { + return FS.currentPath; + },chdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + var err = FS.nodePermissions(lookup.node, 'x'); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function () { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function () { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device; + if (typeof crypto !== 'undefined') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else if (ENVIRONMENT_IS_NODE) { + // for nodejs + random_device = function() { return require('crypto').randomBytes(1)[0]; }; + } else { + // default for ES5 platforms + random_device = function() { return (Math.random()*256)|0; }; + } + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createSpecialDirectories:function () { + // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname) + FS.mkdir('/proc'); + FS.mkdir('/proc/self'); + FS.mkdir('/proc/self/fd'); + FS.mount({ + mount: function() { + var node = FS.createNode('/proc/self', 'fd', 16384 | 0777, 73); + node.node_ops = { + lookup: function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); + var ret = { + parent: null, + mount: { mountpoint: 'fake' }, + node_ops: { readlink: function() { return stream.path } } + }; + ret.parent = ret; // make it look like a simple root node + return ret; + } + }; + return node; + } + }, {}, '/proc/self/fd'); + },createStandardStreams:function () { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + + var stdout = FS.open('/dev/stdout', 'w'); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + + var stderr = FS.open('/dev/stderr', 'w'); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function () { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + //Module.printErr(stackTrace()); // useful for debugging + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + if (this.stack) this.stack = demangleAll(this.stack); + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [ERRNO_CODES.ENOENT].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ''; + }); + },staticInit:function () { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + + FS.filesystems = { + 'MEMFS': MEMFS, + 'IDBFS': IDBFS, + 'NODEFS': NODEFS, + 'WORKERFS': WORKERFS, + }; + },init:function (input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function () { + FS.init.initialized = false; + // force-flush all streams, so we get musl std streams printed out + var fflush = Module['_fflush']; + if (fflush) fflush(0); + // close all of our streams + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function (canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function (parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function (relative, base) { + return PATH.resolve(base, relative); + },standardizePath:function (path) { + return PATH.normalize(path); + },findObject:function (path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function (path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function (parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function (parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function (parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function (parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function (parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function (obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (Module['read']) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(Module['read'](obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(ERRNO_CODES.EIO); + return success; + },createLazyFile:function (parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + } + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + } + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + } + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperty(lazyArray, "length", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }); + Object.defineProperty(lazyArray, "chunkSize", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperty(node, "usedBytes", { + get: function() { return this.contents.length; } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function () { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function () { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) { + if (path[0] !== '/') { + // relative path + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + },doStat:function (func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + // an error occurred while trying to look up the path; we should just report ENOTDIR + return -ERRNO_CODES.ENOTDIR; + } + throw e; + } + HEAP32[((buf)>>2)]=stat.dev; + HEAP32[(((buf)+(4))>>2)]=0; + HEAP32[(((buf)+(8))>>2)]=stat.ino; + HEAP32[(((buf)+(12))>>2)]=stat.mode; + HEAP32[(((buf)+(16))>>2)]=stat.nlink; + HEAP32[(((buf)+(20))>>2)]=stat.uid; + HEAP32[(((buf)+(24))>>2)]=stat.gid; + HEAP32[(((buf)+(28))>>2)]=stat.rdev; + HEAP32[(((buf)+(32))>>2)]=0; + HEAP32[(((buf)+(36))>>2)]=stat.size; + HEAP32[(((buf)+(40))>>2)]=4096; + HEAP32[(((buf)+(44))>>2)]=stat.blocks; + HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0; + HEAP32[(((buf)+(52))>>2)]=0; + HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0; + HEAP32[(((buf)+(60))>>2)]=0; + HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0; + HEAP32[(((buf)+(68))>>2)]=0; + HEAP32[(((buf)+(72))>>2)]=stat.ino; + return 0; + },doMsync:function (addr, stream, len, flags) { + var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); + FS.msync(stream, buffer, 0, len, flags); + },doMkdir:function (path, mode) { + // remove a trailing slash, if one - /a/b/ has basename of '', but + // we want to create b in the context of this function + path = PATH.normalize(path); + if (path[path.length-1] === '/') path = path.substr(0, path.length-1); + FS.mkdir(path, mode, 0); + return 0; + },doMknod:function (path, mode, dev) { + // we don't want this in the JS API as it uses mknod to create all nodes. + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: return -ERRNO_CODES.EINVAL; + } + FS.mknod(path, mode, dev); + return 0; + },doReadlink:function (path, buf, bufsize) { + if (bufsize <= 0) return -ERRNO_CODES.EINVAL; + var ret = FS.readlink(path); + ret = ret.slice(0, Math.max(0, bufsize)); + writeStringToMemory(ret, buf, true); + return ret.length; + },doAccess:function (path, amode) { + if (amode & ~7) { + // need a valid mode + return -ERRNO_CODES.EINVAL; + } + var node; + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + var perms = ''; + if (amode & 4) perms += 'r'; + if (amode & 2) perms += 'w'; + if (amode & 1) perms += 'x'; + if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { + return -ERRNO_CODES.EACCES; + } + return 0; + },doDup:function (path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + },doReadv:function (stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.read(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; // nothing more to read + } + return ret; + },doWritev:function (stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.write(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + },varargs:0,get:function (varargs) { + SYSCALLS.varargs += 4; + var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; + return ret; + },getStr:function () { + var ret = Pointer_stringify(SYSCALLS.get()); + return ret; + },getStreamFromFD:function () { + var stream = FS.getStream(SYSCALLS.get()); + if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); + return stream; + },getSocketFromFD:function () { + var socket = SOCKFS.getSocket(SYSCALLS.get()); + if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF); + return socket; + },getSocketAddress:function (allowNull) { + var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get(); + if (allowNull && addrp === 0) return null; + var info = __read_sockaddr(addrp, addrlen); + if (info.errno) throw new FS.ErrnoError(info.errno); + info.addr = DNS.lookup_addr(info.addr) || info.addr; + return info; + },get64:function () { + var low = SYSCALLS.get(), high = SYSCALLS.get(); + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + },getZero:function () { + assert(SYSCALLS.get() === 0); + }};function ___syscall5(which, varargs) {SYSCALLS.varargs = varargs; + try { + // open + var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get() // optional TODO + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src+num), dest); + return dest; + } + Module["_memcpy"] = _memcpy; + + function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs; + try { + // close + var stream = SYSCALLS.getStreamFromFD(); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + var _cos=Math_cos; + + function _sbrk(bytes) { + // Implement a Linux-like 'memory area' for our 'process'. + // Changes the size of the memory area by |bytes|; returns the + // address of the previous top ('break') of the memory area + // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP + var self = _sbrk; + if (!self.called) { + DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned + self.called = true; + assert(Runtime.dynamicAlloc); + self.alloc = Runtime.dynamicAlloc; + Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; + } + var ret = DYNAMICTOP; + if (bytes != 0) { + var success = self.alloc(bytes); + if (!success) return -1 >>> 0; // sbrk failure code + } + return ret; // Previous break location. + } + + + Module["_memmove"] = _memmove; + + var _BItoD=true; + + function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs; + try { + // ioctl + var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); + switch (op) { + case 21505: { + if (!stream.tty) return -ERRNO_CODES.ENOTTY; + return 0; + } + case 21506: { + if (!stream.tty) return -ERRNO_CODES.ENOTTY; + return 0; // no-op, not actually adjusting terminal settings + } + case 21519: { + if (!stream.tty) return -ERRNO_CODES.ENOTTY; + var argp = SYSCALLS.get(); + HEAP32[((argp)>>2)]=0; + return 0; + } + case 21520: { + if (!stream.tty) return -ERRNO_CODES.ENOTTY; + return -ERRNO_CODES.EINVAL; // not supported + } + case 21531: { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + default: abort('bad ioctl syscall ' + op); + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + var _ceilf=Math_ceil; + + function __embind_register_memory_view(rawType, dataTypeIndex, name) { + var typeMapping = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ]; + + var TA = typeMapping[dataTypeIndex]; + + function decodeMemoryView(handle) { + handle = handle >> 2; + var heap = HEAPU32; + var size = heap[handle]; // in elements + var data = heap[handle + 1]; // byte offset into emscripten heap + return new TA(heap['buffer'], data, size); + } + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': decodeMemoryView, + 'argPackAdvance': 8, + 'readValueFromPointer': decodeMemoryView, + }, { + ignoreDuplicateRegistrations: true, + }); + } + + function _time(ptr) { + var ret = (Date.now()/1000)|0; + if (ptr) { + HEAP32[((ptr)>>2)]=ret; + } + return ret; + } + + function _pthread_self() { + //FIXME: assumes only a single thread + return 0; + } + + function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs; + try { + // llseek + var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get(); + var offset = offset_low; + assert(offset_high === 0); + FS.llseek(stream, offset, whence); + HEAP32[((result)>>2)]=stream.position; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs; + try { + // writev + var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); + return SYSCALLS.doWritev(stream, iov, iovcnt); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall221(which, varargs) {SYSCALLS.varargs = varargs; + try { + // fcntl64 + var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); + switch (cmd) { + case 0: { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -ERRNO_CODES.EINVAL; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; // FD_CLOEXEC makes no sense for a single process. + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + case 12: { + var arg = SYSCALLS.get(); + var offset = 0; + // We're always unlocked. + HEAP16[(((arg)+(offset))>>1)]=2; + return 0; + } + case 13: + case 14: + case 13: + case 14: + return 0; // Pretend that the locking is successful. + case 16: + case 8: + return -ERRNO_CODES.EINVAL; // These are for sockets. We don't have them fully implemented yet. + case 9: + // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves. + ___setErrNo(ERRNO_CODES.EINVAL); + return -1; + default: { + return -ERRNO_CODES.EINVAL; + } + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall145(which, varargs) {SYSCALLS.varargs = varargs; + try { + // readv + var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); + return SYSCALLS.doReadv(stream, iov, iovcnt); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + var ___dso_handle=allocate(1, "i32*", ALLOC_STATIC); +embind_init_charCodes() +BindingError = Module['BindingError'] = extendError(Error, 'BindingError'); +InternalError = Module['InternalError'] = extendError(Error, 'InternalError'); +init_emval(); +UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError'); +FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink; +__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() }); +if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); } +STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); + +staticSealed = true; // seal the static portion of memory + +STACK_MAX = STACK_BASE + TOTAL_STACK; + +DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); + +assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); + + var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_DYNAMIC); + + +function nullFunc_iiii(x) { Module["printErr"]("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_dii(x) { Module["printErr"]("Invalid function pointer called with signature 'dii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_vid(x) { Module["printErr"]("Invalid function pointer called with signature 'vid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_di(x) { Module["printErr"]("Invalid function pointer called with signature 'di'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_i(x) { Module["printErr"]("Invalid function pointer called with signature 'i'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_vi(x) { Module["printErr"]("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_vii(x) { Module["printErr"]("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_ii(x) { Module["printErr"]("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_viii(x) { Module["printErr"]("Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_v(x) { Module["printErr"]("Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_viid(x) { Module["printErr"]("Invalid function pointer called with signature 'viid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_iiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_viiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_iii(x) { Module["printErr"]("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function nullFunc_viiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) } + +function invoke_iiii(index,a1,a2,a3) { + try { + return Module["dynCall_iiii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viiiii(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_dii(index,a1,a2) { + try { + return Module["dynCall_dii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_vid(index,a1,a2) { + try { + Module["dynCall_vid"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_di(index,a1) { + try { + return Module["dynCall_di"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_i(index) { + try { + return Module["dynCall_i"](index); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_vi(index,a1) { + try { + Module["dynCall_vi"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_vii(index,a1,a2) { + try { + Module["dynCall_vii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_ii(index,a1) { + try { + return Module["dynCall_ii"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viii(index,a1,a2,a3) { + try { + Module["dynCall_viii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_v(index) { + try { + Module["dynCall_v"](index); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viid(index,a1,a2,a3) { + try { + Module["dynCall_viid"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_iiiii(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iiiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_iii(index,a1,a2) { + try { + return Module["dynCall_iii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viiii(index,a1,a2,a3,a4) { + try { + Module["dynCall_viiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity, "byteLength": byteLength }; + +Module.asmLibraryArg = { "abort": abort, "assert": assert, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_dii": nullFunc_dii, "nullFunc_vid": nullFunc_vid, "nullFunc_di": nullFunc_di, "nullFunc_i": nullFunc_i, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viii": nullFunc_viii, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_iiiii": nullFunc_iiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_viiii": nullFunc_viiii, "invoke_iiii": invoke_iiii, "invoke_viiiii": invoke_viiiii, "invoke_dii": invoke_dii, "invoke_vid": invoke_vid, "invoke_di": invoke_di, "invoke_i": invoke_i, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viii": invoke_viii, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_iiiii": invoke_iiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_iii": invoke_iii, "invoke_viiii": invoke_viiii, "_fabs": _fabs, "___syscall221": ___syscall221, "_sin": _sin, "floatReadValueFromPointer": floatReadValueFromPointer, "simpleReadValueFromPointer": simpleReadValueFromPointer, "___syscall54": ___syscall54, "__embind_register_memory_view": __embind_register_memory_view, "throwInternalError": throwInternalError, "get_first_emval": get_first_emval, "_abort": _abort, "_pthread_cleanup_push": _pthread_cleanup_push, "extendError": extendError, "__embind_register_integer": __embind_register_integer, "___assert_fail": ___assert_fail, "init_emval": init_emval, "___cxa_allocate_exception": ___cxa_allocate_exception, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_ceilf": _ceilf, "getShiftFromSize": getShiftFromSize, "__embind_register_function": __embind_register_function, "__embind_register_emval": __embind_register_emval, "_emscripten_asm_const_33": _emscripten_asm_const_33, "__embind_register_constant": __embind_register_constant, "___setErrNo": ___setErrNo, "__emval_register": __emval_register, "_sbrk": _sbrk, "readLatin1String": readLatin1String, "__embind_register_void": __embind_register_void, "_emscripten_memcpy_big": _emscripten_memcpy_big, "__embind_register_bool": __embind_register_bool, "___resumeException": ___resumeException, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_sysconf": _sysconf, "_embind_repr": _embind_repr, "__embind_register_std_wstring": __embind_register_std_wstring, "createNamedFunction": createNamedFunction, "embind_init_charCodes": embind_init_charCodes, "_cos": _cos, "getTypeName": getTypeName, "throwUnboundTypeError": throwUnboundTypeError, "_pthread_self": _pthread_self, "craftInvokerFunction": craftInvokerFunction, "__emval_decref": __emval_decref, "_sqrt": _sqrt, "__embind_register_float": __embind_register_float, "makeLegalFunctionName": makeLegalFunctionName, "integerReadValueFromPointer": integerReadValueFromPointer, "___unlock": ___unlock, "heap32VectorToArray": heap32VectorToArray, "_pthread_cleanup_pop": _pthread_cleanup_pop, "whenDependentTypesAreResolved": whenDependentTypesAreResolved, "_exit": _exit, "___syscall5": ___syscall5, "_emscripten_asm_const_4": _emscripten_asm_const_4, "___cxa_atexit": ___cxa_atexit, "registerType": registerType, "___cxa_throw": ___cxa_throw, "__exit": __exit, "___lock": ___lock, "___syscall6": ___syscall6, "throwBindingError": throwBindingError, "ensureOverloadTable": ensureOverloadTable, "count_emval_handles": count_emval_handles, "_time": _time, "requireFunction": requireFunction, "runDestructors": runDestructors, "new_": new_, "_atexit": _atexit, "___syscall140": ___syscall140, "exposePublicSymbol": exposePublicSymbol, "_emscripten_asm_const_5": _emscripten_asm_const_5, "__embind_register_std_string": __embind_register_std_string, "replacePublicSymbol": replacePublicSymbol, "___syscall145": ___syscall145, "___syscall146": ___syscall146, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "___dso_handle": ___dso_handle }; +// EMSCRIPTEN_START_ASM +var asm = (function(global, env, buffer) { + 'use asm'; + + + var Int8View = global.Int8Array; + var Int16View = global.Int16Array; + var Int32View = global.Int32Array; + var Uint8View = global.Uint8Array; + var Uint16View = global.Uint16Array; + var Uint32View = global.Uint32Array; + var Float32View = global.Float32Array; + var Float64View = global.Float64Array; + var HEAP8 = new Int8View(buffer); + var HEAP16 = new Int16View(buffer); + var HEAP32 = new Int32View(buffer); + var HEAPU8 = new Uint8View(buffer); + var HEAPU16 = new Uint16View(buffer); + var HEAPU32 = new Uint32View(buffer); + var HEAPF32 = new Float32View(buffer); + var HEAPF64 = new Float64View(buffer); + var byteLength = global.byteLength; + + + var STACKTOP=env.STACKTOP|0; + var STACK_MAX=env.STACK_MAX|0; + var tempDoublePtr=env.tempDoublePtr|0; + var ABORT=env.ABORT|0; + var cttz_i8=env.cttz_i8|0; + var ___dso_handle=env.___dso_handle|0; + + var __THREW__ = 0; + var threwValue = 0; + var setjmpId = 0; + var undef = 0; + var nan = global.NaN, inf = global.Infinity; + var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; + + var tempRet0 = 0; + var tempRet1 = 0; + var tempRet2 = 0; + var tempRet3 = 0; + var tempRet4 = 0; + var tempRet5 = 0; + var tempRet6 = 0; + var tempRet7 = 0; + var tempRet8 = 0; + var tempRet9 = 0; + var Math_floor=global.Math.floor; + var Math_abs=global.Math.abs; + var Math_sqrt=global.Math.sqrt; + var Math_pow=global.Math.pow; + var Math_cos=global.Math.cos; + var Math_sin=global.Math.sin; + var Math_tan=global.Math.tan; + var Math_acos=global.Math.acos; + var Math_asin=global.Math.asin; + var Math_atan=global.Math.atan; + var Math_atan2=global.Math.atan2; + var Math_exp=global.Math.exp; + var Math_log=global.Math.log; + var Math_ceil=global.Math.ceil; + var Math_imul=global.Math.imul; + var Math_min=global.Math.min; + var Math_clz32=global.Math.clz32; + var abort=env.abort; + var assert=env.assert; + var nullFunc_iiii=env.nullFunc_iiii; + var nullFunc_viiiii=env.nullFunc_viiiii; + var nullFunc_dii=env.nullFunc_dii; + var nullFunc_vid=env.nullFunc_vid; + var nullFunc_di=env.nullFunc_di; + var nullFunc_i=env.nullFunc_i; + var nullFunc_vi=env.nullFunc_vi; + var nullFunc_vii=env.nullFunc_vii; + var nullFunc_ii=env.nullFunc_ii; + var nullFunc_viii=env.nullFunc_viii; + var nullFunc_v=env.nullFunc_v; + var nullFunc_viid=env.nullFunc_viid; + var nullFunc_iiiii=env.nullFunc_iiiii; + var nullFunc_viiiiii=env.nullFunc_viiiiii; + var nullFunc_iii=env.nullFunc_iii; + var nullFunc_viiii=env.nullFunc_viiii; + var invoke_iiii=env.invoke_iiii; + var invoke_viiiii=env.invoke_viiiii; + var invoke_dii=env.invoke_dii; + var invoke_vid=env.invoke_vid; + var invoke_di=env.invoke_di; + var invoke_i=env.invoke_i; + var invoke_vi=env.invoke_vi; + var invoke_vii=env.invoke_vii; + var invoke_ii=env.invoke_ii; + var invoke_viii=env.invoke_viii; + var invoke_v=env.invoke_v; + var invoke_viid=env.invoke_viid; + var invoke_iiiii=env.invoke_iiiii; + var invoke_viiiiii=env.invoke_viiiiii; + var invoke_iii=env.invoke_iii; + var invoke_viiii=env.invoke_viiii; + var _fabs=env._fabs; + var ___syscall221=env.___syscall221; + var _sin=env._sin; + var floatReadValueFromPointer=env.floatReadValueFromPointer; + var simpleReadValueFromPointer=env.simpleReadValueFromPointer; + var ___syscall54=env.___syscall54; + var __embind_register_memory_view=env.__embind_register_memory_view; + var throwInternalError=env.throwInternalError; + var get_first_emval=env.get_first_emval; + var _abort=env._abort; + var _pthread_cleanup_push=env._pthread_cleanup_push; + var extendError=env.extendError; + var __embind_register_integer=env.__embind_register_integer; + var ___assert_fail=env.___assert_fail; + var init_emval=env.init_emval; + var ___cxa_allocate_exception=env.___cxa_allocate_exception; + var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv; + var _ceilf=env._ceilf; + var getShiftFromSize=env.getShiftFromSize; + var __embind_register_function=env.__embind_register_function; + var __embind_register_emval=env.__embind_register_emval; + var _emscripten_asm_const_33=env._emscripten_asm_const_33; + var __embind_register_constant=env.__embind_register_constant; + var ___setErrNo=env.___setErrNo; + var __emval_register=env.__emval_register; + var _sbrk=env._sbrk; + var readLatin1String=env.readLatin1String; + var __embind_register_void=env.__embind_register_void; + var _emscripten_memcpy_big=env._emscripten_memcpy_big; + var __embind_register_bool=env.__embind_register_bool; + var ___resumeException=env.___resumeException; + var ___cxa_find_matching_catch=env.___cxa_find_matching_catch; + var _sysconf=env._sysconf; + var _embind_repr=env._embind_repr; + var __embind_register_std_wstring=env.__embind_register_std_wstring; + var createNamedFunction=env.createNamedFunction; + var embind_init_charCodes=env.embind_init_charCodes; + var _cos=env._cos; + var getTypeName=env.getTypeName; + var throwUnboundTypeError=env.throwUnboundTypeError; + var _pthread_self=env._pthread_self; + var craftInvokerFunction=env.craftInvokerFunction; + var __emval_decref=env.__emval_decref; + var _sqrt=env._sqrt; + var __embind_register_float=env.__embind_register_float; + var makeLegalFunctionName=env.makeLegalFunctionName; + var integerReadValueFromPointer=env.integerReadValueFromPointer; + var ___unlock=env.___unlock; + var heap32VectorToArray=env.heap32VectorToArray; + var _pthread_cleanup_pop=env._pthread_cleanup_pop; + var whenDependentTypesAreResolved=env.whenDependentTypesAreResolved; + var _exit=env._exit; + var ___syscall5=env.___syscall5; + var _emscripten_asm_const_4=env._emscripten_asm_const_4; + var ___cxa_atexit=env.___cxa_atexit; + var registerType=env.registerType; + var ___cxa_throw=env.___cxa_throw; + var __exit=env.__exit; + var ___lock=env.___lock; + var ___syscall6=env.___syscall6; + var throwBindingError=env.throwBindingError; + var ensureOverloadTable=env.ensureOverloadTable; + var count_emval_handles=env.count_emval_handles; + var _time=env._time; + var requireFunction=env.requireFunction; + var runDestructors=env.runDestructors; + var new_=env.new_; + var _atexit=env._atexit; + var ___syscall140=env.___syscall140; + var exposePublicSymbol=env.exposePublicSymbol; + var _emscripten_asm_const_5=env._emscripten_asm_const_5; + var __embind_register_std_string=env.__embind_register_std_string; + var replacePublicSymbol=env.replacePublicSymbol; + var ___syscall145=env.___syscall145; + var ___syscall146=env.___syscall146; + var tempFloat = 0.0; + +function _emscripten_replace_memory(newBuffer) { + if ((byteLength(newBuffer) & 0xffffff || byteLength(newBuffer) <= 0xffffff) || byteLength(newBuffer) > 0x80000000) return false; + HEAP8 = new Int8View(newBuffer); + HEAP16 = new Int16View(newBuffer); + HEAP32 = new Int32View(newBuffer); + HEAPU8 = new Uint8View(newBuffer); + HEAPU16 = new Uint16View(newBuffer); + HEAPU32 = new Uint32View(newBuffer); + HEAPF32 = new Float32View(newBuffer); + HEAPF64 = new Float64View(newBuffer); + buffer = newBuffer; + return true; +} + +// EMSCRIPTEN_START_FUNCS + +function __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i105 = 0, $$0$i$i$i113 = 0, $$0$i$i$i123 = 0, $$0$i$i$i131 = 0, $$0$i$i$i136 = 0, $$0$i$i$i148 = 0, $$0$i$i$i153 = 0, $$0$i$i$i17 = 0, $$0$i$i$i181 = 0, $$0$i$i$i191509 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i29 = 0, $$0$i$i$i31 = 0, $$0$i$i$i38 = 0, $$0$i$i$i43 = 0, $$0$i$i$i51 = 0, $$0$i$i$i56 = 0, $$0$i$i$i61 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i87 = 0, $$0$i$i$i95 = 0, $$01$i$i = 0, $$03$i$i = 0, $$08$i = 0, $$1$i$i = 0, $$1$i263 = 0, $$12$i$i = 0, $$13$i259$ph = 0, $$14$i$i = 0, $$2$i$i = 0, $$in = 0, $$lcssa667 = 0, $$lcssa674 = 0, $$lcssa682 = 0, $$lcssa690 = 0, $$lcssa698 = 0, $$lcssa706 = 0, $$ph390 = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i203 = 0, $$pre$i$i$i21$i = 0, $$pre$i$i$i36$i = 0, $$pre$i$i$i52$i = 0, $$pre$i$i$i71$i = 0, $0 = 0, $1 = 0, $10 = 0, $1001 = 0, $1003 = 0, $1006 = 0, $101 = 0, $1010 = 0, $1013 = 0, $1018 = 0, $1019 = 0, $1022 = 0, $1023 = 0, $1025 = 0, $1026 = 0, $1035 = 0, $1038 = 0, $104 = 0, $1043 = 0, $1044 = 0, $1049 = 0, $1051 = 0, $1054 = 0, $1058 = 0, $1061 = 0, $1066 = 0, $1067 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1073 = 0, $1074 = 0, $108 = 0, $1083 = 0, $1086 = 0, $1094 = 0, $1096 = 0, $11 = 0, $1100 = 0, $1101 = 0, $1103 = 0, $1110 = 0, $1112 = 0, $1120 = 0, $1121 = 0, $1122 = 0, $1123 = 0, $1126 = 0, $1129 = 0, $113 = 0, $1132 = 0, $1133 = 0, $1139 = 0, $1141 = 0, $1145 = 0, $115 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1159 = 0, $1161 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1168 = 0, $117 = 0, $1178 = 0, $1179 = 0, $1180 = 0, $1181 = 0, $1184 = 0, $1187 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1205 = 0, $1210 = 0, $1217 = 0, $1219 = 0, $122 = 0, $1223 = 0, $1226 = 0, $1228 = 0, $123 = 0, $1233 = 0, $1237 = 0, $124 = 0, $1245 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $126 = 0, $1269 = 0, $1270 = 0, $1271 = 0, $1274 = 0, $1277 = 0, $1283 = 0, $1289 = 0, $1290 = 0, $1291 = 0, $1297 = 0, $1299 = 0, $13 = 0, $1302 = 0, $1303 = 0, $1304 = 0, $1306 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $1322 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0, $134 = 0, $1340 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1346 = 0, $1351 = 0, $1358 = 0, $136 = 0, $1360 = 0, $1364 = 0, $1367 = 0, $1369 = 0, $1374 = 0, $1378 = 0, $1386 = 0, $1393 = 0, $1394 = 0, $1395 = 0, $1397 = 0, $14 = 0, $1402 = 0, $1409 = 0, $1411 = 0, $1415 = 0, $1418 = 0, $1420 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1432 = 0, $1436 = 0, $1439 = 0, $1443 = 0, $1444 = 0, $1446 = 0, $1449 = 0, $1455 = 0, $1458 = 0, $147 = 0, $1470 = 0, $1474 = 0, $1475 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $15 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1508 = 0, $1511 = 0, $1517 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1531 = 0, $1533 = 0, $1536 = 0, $1537 = 0, $1538 = 0, $1540 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1556 = 0, $1559 = 0, $1562 = 0, $1563 = 0, $1568 = 0, $1569 = 0, $1570 = 0, $1571 = 0, $1573 = 0, $1574 = 0, $1575 = 0, $1577 = 0, $1582 = 0, $1589 = 0, $1591 = 0, $1595 = 0, $1598 = 0, $16 = 0, $1600 = 0, $1605 = 0, $1609 = 0, $1617 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0, $1628 = 0, $1629 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1646 = 0, $1649 = 0, $165 = 0, $1655 = 0, $166 = 0, $1661 = 0, $1662 = 0, $1668 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $168 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1693 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1700 = 0, $1705 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1729 = 0, $1732 = 0, $1743 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1753 = 0, $1755 = 0, $1766 = 0, $1768 = 0, $1769 = 0, $1776 = 0, $1778 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $1792 = 0, $1795 = 0, $1798 = 0, $1799 = 0, $18 = 0, $1805 = 0, $1807 = 0, $181 = 0, $1811 = 0, $1813 = 0, $1815 = 0, $1817 = 0, $1818 = 0, $182 = 0, $1826 = 0, $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1831 = 0, $1832 = 0, $1834 = 0, $1839 = 0, $1846 = 0, $1848 = 0, $1853 = 0, $1858 = 0, $186 = 0, $1860 = 0, $1866 = 0, $1869 = 0, $1871 = 0, $1881 = 0, $1884 = 0, $1885 = 0, $1886 = 0, $1887 = 0, $1889 = 0, $189 = 0, $1891 = 0, $1892 = 0, $1894 = 0, $1895 = 0, $1897 = 0, $19 = 0, $1903 = 0, $1912 = 0, $1915 = 0, $1917 = 0, $1927 = 0, $1930 = 0, $1933 = 0, $1935 = 0, $1942 = 0, $1945 = 0, $1947 = 0, $195 = 0, $1954 = 0, $1955 = 0, $1956 = 0, $1957 = 0, $1961 = 0, $1963 = 0, $1966 = 0, $1967 = 0, $197 = 0, $1970 = 0, $1973 = 0, $1974 = 0, $1975 = 0, $1977 = 0, $1984 = 0, $1986 = 0, $1994 = 0, $1995 = 0, $1996 = 0, $1997 = 0, $2 = 0, $20 = 0, $200 = 0, $2000 = 0, $2003 = 0, $2006 = 0, $2007 = 0, $2013 = 0, $2015 = 0, $2019 = 0, $202 = 0, $2023 = 0, $2027 = 0, $2029 = 0, $2033 = 0, $2034 = 0, $2036 = 0, $204 = 0, $2043 = 0, $2045 = 0, $205 = 0, $2053 = 0, $2054 = 0, $2055 = 0, $2056 = 0, $2059 = 0, $2062 = 0, $2065 = 0, $2066 = 0, $2072 = 0, $2074 = 0, $2078 = 0, $208 = 0, $2080 = 0, $2082 = 0, $2083 = 0, $209 = 0, $2091 = 0, $2092 = 0, $2093 = 0, $2094 = 0, $2097 = 0, $2099 = 0, $21 = 0, $211 = 0, $2110 = 0, $2113 = 0, $2114 = 0, $2115 = 0, $2117 = 0, $212 = 0, $2124 = 0, $2126 = 0, $2134 = 0, $2135 = 0, $2136 = 0, $2137 = 0, $214 = 0, $2140 = 0, $2143 = 0, $2146 = 0, $2147 = 0, $2153 = 0, $2155 = 0, $2159 = 0, $2161 = 0, $2163 = 0, $2169 = 0, $2170 = 0, $2171 = 0, $2177 = 0, $2179 = 0, $2182 = 0, $2183 = 0, $2184 = 0, $2186 = 0, $219 = 0, $2196 = 0, $2197 = 0, $2198 = 0, $2199 = 0, $22 = 0, $2202 = 0, $2205 = 0, $2208 = 0, $2209 = 0, $2214 = 0, $2216 = 0, $2217 = 0, $2218 = 0, $2219 = 0, $2220 = 0, $2221 = 0, $2233 = 0, $2234 = 0, $2235 = 0, $2238 = 0, $2241 = 0, $2247 = 0, $2251 = 0, $2253 = 0, $2257 = 0, $2258 = 0, $226 = 0, $2260 = 0, $2267 = 0, $2269 = 0, $2277 = 0, $2278 = 0, $2279 = 0, $228 = 0, $2280 = 0, $2283 = 0, $2286 = 0, $2289 = 0, $2290 = 0, $2296 = 0, $2298 = 0, $23 = 0, $2308 = 0, $2309 = 0, $2311 = 0, $2317 = 0, $2318 = 0, $2322 = 0, $2326 = 0, $2329 = 0, $233 = 0, $2332 = 0, $2335 = 0, $2337 = 0, $2347 = 0, $2348 = 0, $2351 = 0, $2354 = 0, $2355 = 0, $2357 = 0, $2364 = 0, $2365 = 0, $2366 = 0, $2367 = 0, $2371 = 0, $2373 = 0, $2376 = 0, $2377 = 0, $238 = 0, $2382 = 0, $2385 = 0, $2386 = 0, $2393 = 0, $2394 = 0, $2395 = 0, $2396 = 0, $2398 = 0, $24 = 0, $240 = 0, $2402 = 0, $2405 = 0, $2408 = 0, $2424 = 0, $2425 = 0, $2426 = 0, $2427 = 0, $2432 = 0, $2434 = 0, $2438 = 0, $2441 = 0, $2444 = 0, $2446 = 0, $2459 = 0, $2461 = 0, $2465 = 0, $2466 = 0, $2468 = 0, $2475 = 0, $2477 = 0, $2485 = 0, $2486 = 0, $2487 = 0, $2488 = 0, $2491 = 0, $2494 = 0, $2497 = 0, $2498 = 0, $25 = 0, $250 = 0, $2504 = 0, $2506 = 0, $2510 = 0, $2512 = 0, $2516 = 0, $2518 = 0, $2522 = 0, $2523 = 0, $2525 = 0, $2532 = 0, $2534 = 0, $254 = 0, $2542 = 0, $2543 = 0, $2544 = 0, $2545 = 0, $2548 = 0, $255 = 0, $2551 = 0, $2554 = 0, $2555 = 0, $2561 = 0, $2563 = 0, $2567 = 0, $2568 = 0, $2569 = 0, $2570 = 0, $2571 = 0, $2572 = 0, $2573 = 0, $258 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $264 = 0, $269 = 0, $27 = 0, $276 = 0, $278 = 0, $28 = 0, $283 = 0, $288 = 0, $29 = 0, $290 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $308 = 0, $309 = 0, $31 = 0, $318 = 0, $32 = 0, $321 = 0, $324 = 0, $326 = 0, $33 = 0, $336 = 0, $34 = 0, $341 = 0, $342 = 0, $344 = 0, $345 = 0, $35 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $359 = 0, $36 = 0, $360 = 0, $365 = 0, $367 = 0, $37 = 0, $370 = 0, $374 = 0, $377 = 0, $38 = 0, $382 = 0, $383 = 0, $386 = 0, $387 = 0, $389 = 0, $39 = 0, $390 = 0, $399 = 0, $4 = 0, $40 = 0, $402 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $415 = 0, $416 = 0, $418 = 0, $42 = 0, $422 = 0, $424 = 0, $429 = 0, $43 = 0, $434 = 0, $436 = 0, $44 = 0, $441 = 0, $442 = 0, $443 = 0, $446 = 0, $449 = 0, $45 = 0, $451 = 0, $458 = 0, $46 = 0, $465 = 0, $467 = 0, $47 = 0, $470 = 0, $474 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $486 = 0, $487 = 0, $489 = 0, $49 = 0, $490 = 0, $499 = 0, $5 = 0, $50 = 0, $502 = 0, $510 = 0, $512 = 0, $516 = 0, $517 = 0, $519 = 0, $526 = 0, $528 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $542 = 0, $545 = 0, $548 = 0, $549 = 0, $555 = 0, $557 = 0, $56 = 0, $561 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $57 = 0, $571 = 0, $574 = 0, $575 = 0, $577 = 0, $584 = 0, $586 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $6 = 0, $600 = 0, $603 = 0, $606 = 0, $607 = 0, $613 = 0, $615 = 0, $620 = 0, $624 = 0, $626 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $64 = 0, $641 = 0, $644 = 0, $648 = 0, $657 = 0, $658 = 0, $664 = 0, $669 = 0, $679 = 0, $681 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $698 = 0, $7 = 0, $70 = 0, $703 = 0, $705 = 0, $716 = 0, $718 = 0, $72 = 0, $722 = 0, $723 = 0, $725 = 0, $73 = 0, $732 = 0, $734 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $748 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $76 = 0, $761 = 0, $763 = 0, $767 = 0, $768 = 0, $77 = 0, $771 = 0, $772 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $783 = 0, $79 = 0, $790 = 0, $792 = 0, $8 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $806 = 0, $809 = 0, $812 = 0, $813 = 0, $819 = 0, $82 = 0, $821 = 0, $826 = 0, $827 = 0, $829 = 0, $831 = 0, $832 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $846 = 0, $856 = 0, $857 = 0, $858 = 0, $86 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $883 = 0, $885 = 0, $888 = 0, $892 = 0, $895 = 0, $9 = 0, $900 = 0, $901 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $917 = 0, $920 = 0, $925 = 0, $926 = 0, $929 = 0, $934 = 0, $936 = 0, $939 = 0, $943 = 0, $946 = 0, $95 = 0, $951 = 0, $952 = 0, $955 = 0, $956 = 0, $958 = 0, $959 = 0, $96 = 0, $968 = 0, $97 = 0, $971 = 0, $976 = 0, $979 = 0, $98 = 0, $981 = 0, $991 = 0, $994 = 0, $__p$0$i$i$i508 = 0, $__p$0$ph$i$i$i = 0, $__v$i$i$i = 0, $args = 0, $cv = 0, $k$0$i515 = 0, $k$0560 = 0, $k11$0540 = 0, $k15$0543 = 0, $k2$0$i516 = 0, $k20$0550 = 0, $k5$0533 = 0, $k8$0536 = 0, $num1$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $phitmp$i$i$i$i$i$i$i240 = 0, $phitmp$i2$i$i$i$i$i$i243 = 0, $proto = 0, $ref_qual$0$i$ph$ph = 0, $ref_qual$0$i$ph521 = 0, $ref_qual$0$i$ph521$lcssa = 0, $t$0$i = 0, $t$1$i$be = 0, $t$1$i$ph$ph = 0, $t$1$i$ph520 = 0, $t$1$i518 = 0, $t$1$i518$lcssa = 0, $t12$0$i = 0, $template_args = 0, $type = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 784 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i$i = sp + 752 | 0; + $0 = sp + 728 | 0; + $1 = sp + 716 | 0; + $2 = sp + 704 | 0; + $3 = sp + 680 | 0; + $4 = sp + 656 | 0; + $5 = sp + 632 | 0; + $6 = sp + 620 | 0; + $num1$i = sp + 608 | 0; + $7 = sp + 596 | 0; + $8 = sp + 584 | 0; + $9 = sp + 572 | 0; + $cv = sp + 568 | 0; + $10 = sp + 552 | 0; + $11 = sp + 544 | 0; + $12 = sp + 528 | 0; + $13 = sp + 520 | 0; + $14 = sp + 504 | 0; + $15 = sp + 496 | 0; + $16 = sp + 480 | 0; + $17 = sp + 472 | 0; + $18 = sp + 456 | 0; + $19 = sp + 452 | 0; + $20 = sp + 440 | 0; + $21 = sp + 428 | 0; + $22 = sp + 416 | 0; + $23 = sp + 404 | 0; + $args = sp + 392 | 0; + $24 = sp + 376 | 0; + $25 = sp + 368 | 0; + $type = sp + 356 | 0; + $26 = sp + 344 | 0; + $27 = sp + 320 | 0; + $28 = sp + 308 | 0; + $29 = sp + 296 | 0; + $30 = sp + 284 | 0; + $proto = sp + 272 | 0; + $31 = sp + 248 | 0; + $32 = sp + 236 | 0; + $33 = sp + 224 | 0; + $34 = sp + 212 | 0; + $35 = sp + 200 | 0; + $36 = sp + 176 | 0; + $37 = sp + 164 | 0; + $38 = sp + 152 | 0; + $39 = sp + 136 | 0; + $40 = sp + 128 | 0; + $41 = sp + 112 | 0; + $42 = sp + 108 | 0; + $template_args = sp + 96 | 0; + $43 = sp + 80 | 0; + $44 = sp + 72 | 0; + $45 = sp + 56 | 0; + $46 = sp + 48 | 0; + $47 = sp + 32 | 0; + $48 = sp + 24 | 0; + $49 = sp + 8 | 0; + $50 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else { + switch (HEAP8[$first >> 0] | 0) { + case 75: + case 86: + case 114: + { + HEAP32[$cv >> 2] = 0; + $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) | 0; + if (($54 | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $56 = HEAP8[$54 >> 0] | 0; + $57 = $db + 4 | 0; + $63 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $64 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0; + $70 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($64 | 0) == ($54 | 0)) { + $$0 = $first; + break L1; + } + $72 = $56 << 24 >> 24 == 70; + $73 = $db + 20 | 0; + $74 = HEAP32[$73 >> 2] | 0; + if ($72) { + $75 = $74 + -16 | 0; + $77 = $74; + do { + $76 = $77 + -16 | 0; + HEAP32[$73 >> 2] = $76; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($76); + $77 = HEAP32[$73 >> 2] | 0; + } while (($77 | 0) != ($75 | 0)); + $86 = $75; + } else $86 = $74; + $79 = $db + 16 | 0; + $82 = HEAP32[$db + 12 >> 2] | 0; + $84 = HEAP32[$db + 24 >> 2] | 0; + if ($86 >>> 0 < $84 >>> 0) { + HEAP32[$86 >> 2] = 0; + HEAP32[$86 + 4 >> 2] = 0; + HEAP32[$86 + 8 >> 2] = 0; + HEAP32[$86 + 12 >> 2] = $82; + HEAP32[$73 >> 2] = (HEAP32[$73 >> 2] | 0) + 16; + } else { + $95 = HEAP32[$79 >> 2] | 0; + $96 = $86 - $95 | 0; + $97 = $96 >> 4; + $98 = $97 + 1 | 0; + if (($96 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($79); + $101 = $84 - $95 | 0; + if ($101 >> 4 >>> 0 < 1073741823) { + $104 = $101 >> 3; + $$0$i$i$i38 = $104 >>> 0 < $98 >>> 0 ? $98 : $104; + } else $$0$i$i$i38 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i38, $97, $db + 28 | 0); + $107 = $__v$i$i$i + 8 | 0; + $108 = HEAP32[$107 >> 2] | 0; + HEAP32[$108 >> 2] = 0; + HEAP32[$108 + 4 >> 2] = 0; + HEAP32[$108 + 8 >> 2] = 0; + HEAP32[$108 + 12 >> 2] = $82; + HEAP32[$107 >> 2] = $108 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($79, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $113 = HEAP32[$cv >> 2] | 0; + $115 = ($113 & 1 | 0) == 0; + $117 = ($113 & 2 | 0) == 0; + $119 = ($113 & 4 | 0) == 0; + $120 = $__v$i$i$i + 8 | 0; + if ($63 >>> 0 < $70 >>> 0) $k$0560 = $63; else { + $$0 = $64; + break L1; + } + while (1) { + if ($72) { + $122 = HEAP32[$db >> 2] | 0; + $123 = $122 + ($k$0560 * 24 | 0) + 12 | 0; + $124 = HEAP8[$123 >> 0] | 0; + $126 = ($124 & 1) == 0; + if ($126) { + $$in = ($124 & 255) >>> 1; + $136 = $123 + 1 | 0; + } else { + $$in = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0; + $136 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0; + } + $134 = $$in + -2 | 0; + if ((HEAP8[$136 + $134 >> 0] | 0) == 38) $p$0 = $$in + -3 | 0; else { + if ($126) { + $147 = ($124 & 255) >>> 1; + $149 = $123 + 1 | 0; + } else { + $147 = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0; + $149 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0; + } + $p$0 = (HEAP8[$149 + ($147 + -1) >> 0] | 0) == 38 ? $134 : $$in; + } + if ($115) $p$1 = $p$0; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($123, $p$0, 12669) | 0; + $p$1 = $p$0 + 6 | 0; + } + if ($117) $p$2 = $p$1; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$1, 12676) | 0; + $p$2 = $p$1 + 9 | 0; + } + if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$2, 12686) | 0; + } else { + if (!$115) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12669) | 0; + if (!$117) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12676) | 0; + if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12686) | 0; + } + $164 = HEAP32[$73 >> 2] | 0; + $165 = $164 + -16 | 0; + $166 = HEAP32[$db >> 2] | 0; + $167 = $166 + ($k$0560 * 24 | 0) | 0; + $168 = $164 + -12 | 0; + $169 = HEAP32[$168 >> 2] | 0; + if (($169 | 0) == (HEAP32[$164 + -8 >> 2] | 0)) { + $181 = $169 - (HEAP32[$165 >> 2] | 0) | 0; + $182 = ($181 | 0) / 24 | 0; + $183 = $182 + 1 | 0; + if (($181 | 0) < -24) { + $$lcssa706 = $165; + break; + } + if ($182 >>> 0 < 1073741823) { + $186 = $182 << 1; + $$0$i$i$i43 = $186 >>> 0 < $183 >>> 0 ? $183 : $186; + } else $$0$i$i$i43 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i43, $182, $164 + -4 | 0); + $189 = HEAP32[$120 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189, $167); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0); + HEAP32[$120 >> 2] = $189 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($165, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169, $167); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0); + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 24; + } + $k$0560 = $k$0560 + 1 | 0; + if ($k$0560 >>> 0 >= $70 >>> 0) { + $$0 = $64; + break L1; + } + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa706); + break; + } + default: + {} + } + $195 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($195 | 0) == ($first | 0)) { + $197 = HEAP8[$first >> 0] | 0; + L65 : do switch ($197 << 24 >> 24 | 0) { + case 65: + { + do if ($197 << 24 >> 24 == 65) { + $200 = $first + 1 | 0; + if (($200 | 0) == ($last | 0)) $$0$i = $first; else { + $202 = HEAP8[$200 >> 0] | 0; + if ($202 << 24 >> 24 == 95) { + $204 = $first + 2 | 0; + $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($204, $last, $db) | 0; + if (($205 | 0) == ($204 | 0)) { + $$0$i = $first; + break; + } + $208 = $db + 4 | 0; + $209 = HEAP32[$208 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($209 | 0)) { + $$0$i = $first; + break; + } + $211 = $209 + -12 | 0; + $212 = HEAP8[$211 >> 0] | 0; + $214 = ($212 & 1) == 0; + $219 = $214 ? ($212 & 255) >>> 1 : HEAP32[$209 + -8 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, $214 ? $211 + 1 | 0 : HEAP32[$209 + -4 >> 2] | 0, $219 >>> 0 < 2 ? $219 : 2); + $226 = HEAP8[$__v$i$i$i >> 0] | 0; + $228 = ($226 & 1) == 0; + $233 = $228 ? ($226 & 255) >>> 1 : HEAP32[$__v$i$i$i + 4 >> 2] | 0; + $238 = $233 >>> 0 > 2; + $240 = _memcmp($228 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, 12696, $238 ? 2 : $233) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i); + if (!((($240 | 0) == 0 ? ($233 >>> 0 < 2 ? -1 : $238 & 1) : $240) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$208 >> 2] | 0) + -12 | 0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$208 >> 2] | 0) + -12 | 0, 0, 12699) | 0; + $$0$i = $205; + break; + } + if (($202 + -49 & 255) < 9) { + $250 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($200, $last) | 0; + if (($250 | 0) == ($last | 0)) { + $$0$i = $first; + break; + } + if ((HEAP8[$250 >> 0] | 0) != 95) { + $$0$i = $first; + break; + } + $254 = $250 + 1 | 0; + $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($254, $last, $db) | 0; + if (($255 | 0) == ($254 | 0)) { + $$0$i = $first; + break; + } + $258 = $db + 4 | 0; + $259 = HEAP32[$258 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($259 | 0)) { + $$0$i = $first; + break; + } + $261 = $259 + -12 | 0; + $262 = HEAP8[$261 >> 0] | 0; + $264 = ($262 & 1) == 0; + $269 = $264 ? ($262 & 255) >>> 1 : HEAP32[$259 + -8 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $264 ? $261 + 1 | 0 : HEAP32[$259 + -4 >> 2] | 0, $269 >>> 0 < 2 ? $269 : 2); + $276 = HEAP8[$0 >> 0] | 0; + $278 = ($276 & 1) == 0; + $283 = $278 ? ($276 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0; + $288 = $283 >>> 0 > 2; + $290 = _memcmp($278 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 12696, $288 ? 2 : $283) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + if (!((($290 | 0) == 0 ? ($283 >>> 0 < 2 ? -1 : $288 & 1) : $290) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$258 >> 2] | 0) + -12 | 0); + $298 = (HEAP32[$258 >> 2] | 0) + -12 | 0; + $301 = $250 - $200 | 0; + if ($301 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($3); + if ($301 >>> 0 < 11) { + HEAP8[$3 >> 0] = $301 << 1; + $__p$0$ph$i$i$i = $3 + 1 | 0; + } else { + $308 = $301 + 16 & -16; + $309 = _malloc($308) | 0; + HEAP32[$3 + 8 >> 2] = $309; + HEAP32[$3 >> 2] = $308 | 1; + HEAP32[$3 + 4 >> 2] = $301; + $__p$0$ph$i$i$i = $309; + } + if (($200 | 0) != ($250 | 0)) { + $$0$i$i$i191509 = $200; + $__p$0$i$i$i508 = $__p$0$ph$i$i$i; + while (1) { + HEAP8[$__p$0$i$i$i508 >> 0] = HEAP8[$$0$i$i$i191509 >> 0] | 0; + $$0$i$i$i191509 = $$0$i$i$i191509 + 1 | 0; + if (($$0$i$i$i191509 | 0) == ($250 | 0)) break; else $__p$0$i$i$i508 = $__p$0$i$i$i508 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i$i + $301 >> 0] = 0; + $318 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12696) | 0; + HEAP32[$2 >> 2] = HEAP32[$318 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$318 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$318 + 8 >> 2]; + HEAP32[$318 >> 2] = 0; + HEAP32[$318 + 4 >> 2] = 0; + HEAP32[$318 + 8 >> 2] = 0; + $321 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12703) | 0; + HEAP32[$1 >> 2] = HEAP32[$321 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$321 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$321 + 8 >> 2]; + HEAP32[$321 >> 2] = 0; + HEAP32[$321 + 4 >> 2] = 0; + HEAP32[$321 + 8 >> 2] = 0; + $324 = HEAP8[$1 >> 0] | 0; + $326 = ($324 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($298, 0, $326 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $326 ? ($324 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$0$i = $255; + break; + } + $336 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($200, $last, $db) | 0; + if (($336 | 0) == ($200 | 0) | ($336 | 0) == ($last | 0)) $$0$i = $first; else if ((HEAP8[$336 >> 0] | 0) == 95) { + $341 = $336 + 1 | 0; + $342 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($341, $last, $db) | 0; + if (($342 | 0) == ($341 | 0)) $$0$i = $first; else { + $344 = $db + 4 | 0; + $345 = HEAP32[$344 >> 2] | 0; + if ((($345 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($4, $345 + -24 | 0); + $353 = HEAP32[$344 >> 2] | 0; + $354 = $353 + -24 | 0; + $356 = $353; + do { + $355 = $356 + -24 | 0; + HEAP32[$344 >> 2] = $355; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($355); + $356 = HEAP32[$344 >> 2] | 0; + } while (($356 | 0) != ($354 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($5, $353 + -48 | 0); + $359 = HEAP32[$344 >> 2] | 0; + $360 = $359 + -24 | 0; + do if (!(HEAP8[$360 >> 0] & 1)) { + HEAP8[$360 + 1 >> 0] = 0; + HEAP8[$360 >> 0] = 0; + } else { + $365 = $359 + -16 | 0; + HEAP8[HEAP32[$365 >> 2] >> 0] = 0; + $367 = $359 + -20 | 0; + HEAP32[$367 >> 2] = 0; + $$pre$i$i$i$i203 = HEAP8[$360 >> 0] | 0; + if (!($$pre$i$i$i$i203 & 1)) { + $374 = $$pre$i$i$i$i203; + $383 = 10; + } else { + $370 = HEAP32[$360 >> 2] | 0; + $374 = $370 & 255; + $383 = ($370 & -2) + -1 | 0; + } + if (!($374 & 1)) { + $377 = ($374 & 255) >>> 1; + if (($374 & 255) < 22) { + $2567 = 1; + $382 = 10; + $402 = $377; + } else { + $2567 = 1; + $382 = ($377 + 16 & 240) + -1 | 0; + $402 = $377; + } + } else { + $2567 = 0; + $382 = 10; + $402 = 0; + } + if (($382 | 0) != ($383 | 0)) { + if (($382 | 0) == 10) { + $389 = $360 + 1 | 0; + $390 = HEAP32[$365 >> 2] | 0; + if ($2567) { + _memcpy($389 | 0, $390 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0; + _free($390); + } else { + HEAP8[$389 >> 0] = HEAP8[$390 >> 0] | 0; + _free($390); + } + HEAP8[$360 >> 0] = $402 << 1; + break; + } + $386 = $382 + 1 | 0; + $387 = _malloc($386) | 0; + if (!($382 >>> 0 <= $383 >>> 0 & ($387 | 0) == 0)) { + if ($2567) _memcpy($387 | 0, $360 + 1 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0; else { + $399 = HEAP32[$365 >> 2] | 0; + HEAP8[$387 >> 0] = HEAP8[$399 >> 0] | 0; + _free($399); + } + HEAP32[$360 >> 2] = $386 | 1; + HEAP32[$367 >> 2] = $402; + HEAP32[$365 >> 2] = $387; + } + } + } while (0); + HEAP32[$360 >> 2] = HEAP32[$4 >> 2]; + HEAP32[$360 + 4 >> 2] = HEAP32[$4 + 4 >> 2]; + HEAP32[$360 + 8 >> 2] = HEAP32[$4 + 8 >> 2]; + HEAP32[$4 >> 2] = 0; + HEAP32[$4 + 4 >> 2] = 0; + HEAP32[$4 + 8 >> 2] = 0; + $407 = $4 + 12 | 0; + $408 = HEAP8[$407 >> 0] | 0; + $410 = ($408 & 1) == 0; + $411 = $4 + 16 | 0; + $415 = $410 ? ($408 & 255) >>> 1 : HEAP32[$411 >> 2] | 0; + $416 = $4 + 20 | 0; + $418 = $407 + 1 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $410 ? $418 : HEAP32[$416 >> 2] | 0, $415 >>> 0 < 2 ? $415 : 2); + $422 = HEAP8[$6 >> 0] | 0; + $424 = ($422 & 1) == 0; + $429 = $424 ? ($422 & 255) >>> 1 : HEAP32[$6 + 4 >> 2] | 0; + $434 = $429 >>> 0 > 2; + $436 = _memcmp($424 ? $6 + 1 | 0 : HEAP32[$6 + 8 >> 2] | 0, 12696, $434 ? 2 : $429) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + if (!((($436 | 0) == 0 ? ($429 >>> 0 < 2 ? -1 : $434 & 1) : $436) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($407); + $441 = HEAP32[$344 >> 2] | 0; + $442 = $441 + -12 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($9, $5); + $443 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($9, 0, 12696) | 0; + HEAP32[$8 >> 2] = HEAP32[$443 >> 2]; + HEAP32[$8 + 4 >> 2] = HEAP32[$443 + 4 >> 2]; + HEAP32[$8 + 8 >> 2] = HEAP32[$443 + 8 >> 2]; + HEAP32[$443 >> 2] = 0; + HEAP32[$443 + 4 >> 2] = 0; + HEAP32[$443 + 8 >> 2] = 0; + $446 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 12703) | 0; + HEAP32[$7 >> 2] = HEAP32[$446 >> 2]; + HEAP32[$7 + 4 >> 2] = HEAP32[$446 + 4 >> 2]; + HEAP32[$7 + 8 >> 2] = HEAP32[$446 + 8 >> 2]; + HEAP32[$446 >> 2] = 0; + HEAP32[$446 + 4 >> 2] = 0; + HEAP32[$446 + 8 >> 2] = 0; + $449 = HEAP8[$407 >> 0] | 0; + $451 = ($449 & 1) == 0; + $458 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $451 ? $418 : HEAP32[$416 >> 2] | 0, $451 ? ($449 & 255) >>> 1 : HEAP32[$411 >> 2] | 0) | 0; + HEAP32[$num1$i >> 2] = HEAP32[$458 >> 2]; + HEAP32[$num1$i + 4 >> 2] = HEAP32[$458 + 4 >> 2]; + HEAP32[$num1$i + 8 >> 2] = HEAP32[$458 + 8 >> 2]; + HEAP32[$458 >> 2] = 0; + HEAP32[$458 + 4 >> 2] = 0; + HEAP32[$458 + 8 >> 2] = 0; + do if (!(HEAP8[$442 >> 0] & 1)) { + HEAP8[$442 + 1 >> 0] = 0; + HEAP8[$442 >> 0] = 0; + } else { + $465 = $441 + -4 | 0; + HEAP8[HEAP32[$465 >> 2] >> 0] = 0; + $467 = $441 + -8 | 0; + HEAP32[$467 >> 2] = 0; + $$pre$i$i$i36$i = HEAP8[$442 >> 0] | 0; + if (!($$pre$i$i$i36$i & 1)) { + $474 = $$pre$i$i$i36$i; + $483 = 10; + } else { + $470 = HEAP32[$442 >> 2] | 0; + $474 = $470 & 255; + $483 = ($470 & -2) + -1 | 0; + } + do if (!($474 & 1)) { + $477 = ($474 & 255) >>> 1; + if (($474 & 255) < 22) { + $2568 = 1; + $482 = 10; + $502 = $477; + break; + } + $2568 = 1; + $482 = ($477 + 16 & 240) + -1 | 0; + $502 = $477; + } else { + $2568 = 0; + $482 = 10; + $502 = 0; + } while (0); + if (($482 | 0) != ($483 | 0)) { + if (($482 | 0) == 10) { + $489 = $442 + 1 | 0; + $490 = HEAP32[$465 >> 2] | 0; + if ($2568) { + _memcpy($489 | 0, $490 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0; + _free($490); + } else { + HEAP8[$489 >> 0] = HEAP8[$490 >> 0] | 0; + _free($490); + } + HEAP8[$442 >> 0] = $502 << 1; + break; + } + $486 = $482 + 1 | 0; + $487 = _malloc($486) | 0; + if ($482 >>> 0 <= $483 >>> 0 & ($487 | 0) == 0) break; + if ($2568) _memcpy($487 | 0, $442 + 1 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0; else { + $499 = HEAP32[$465 >> 2] | 0; + HEAP8[$487 >> 0] = HEAP8[$499 >> 0] | 0; + _free($499); + } + HEAP32[$442 >> 2] = $486 | 1; + HEAP32[$467 >> 2] = $502; + HEAP32[$465 >> 2] = $487; + } + } while (0); + HEAP32[$442 >> 2] = HEAP32[$num1$i >> 2]; + HEAP32[$442 + 4 >> 2] = HEAP32[$num1$i + 4 >> 2]; + HEAP32[$442 + 8 >> 2] = HEAP32[$num1$i + 8 >> 2]; + HEAP32[$num1$i >> 2] = 0; + HEAP32[$num1$i + 4 >> 2] = 0; + HEAP32[$num1$i + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4); + $$0$i = $342; + } + } + } else $$0$i = $first; + } + } else $$0$i = $first; while (0); + if (($$0$i | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $510 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($510 | 0)) { + $$0 = $first; + break L1; + } + $512 = $db + 16 | 0; + HEAP32[$11 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($10, $510 + -24 | 0, $11); + $516 = $db + 20 | 0; + $517 = HEAP32[$516 >> 2] | 0; + $519 = HEAP32[$db + 24 >> 2] | 0; + if ($517 >>> 0 < $519 >>> 0) { + HEAP32[$517 + 12 >> 2] = HEAP32[$10 + 12 >> 2]; + HEAP32[$517 >> 2] = HEAP32[$10 >> 2]; + $526 = $10 + 4 | 0; + HEAP32[$517 + 4 >> 2] = HEAP32[$526 >> 2]; + $528 = $10 + 8 | 0; + HEAP32[$517 + 8 >> 2] = HEAP32[$528 >> 2]; + HEAP32[$528 >> 2] = 0; + HEAP32[$526 >> 2] = 0; + HEAP32[$10 >> 2] = 0; + HEAP32[$516 >> 2] = (HEAP32[$516 >> 2] | 0) + 16; + } else { + $536 = HEAP32[$512 >> 2] | 0; + $537 = $517 - $536 | 0; + $538 = $537 >> 4; + $539 = $538 + 1 | 0; + if (($537 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($512); + $542 = $519 - $536 | 0; + if ($542 >> 4 >>> 0 < 1073741823) { + $545 = $542 >> 3; + $$0$i$i$i56 = $545 >>> 0 < $539 >>> 0 ? $539 : $545; + } else $$0$i$i$i56 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i56, $538, $db + 28 | 0); + $548 = $__v$i$i$i + 8 | 0; + $549 = HEAP32[$548 >> 2] | 0; + HEAP32[$549 + 12 >> 2] = HEAP32[$10 + 12 >> 2]; + HEAP32[$549 >> 2] = HEAP32[$10 >> 2]; + $555 = $10 + 4 | 0; + HEAP32[$549 + 4 >> 2] = HEAP32[$555 >> 2]; + $557 = $10 + 8 | 0; + HEAP32[$549 + 8 >> 2] = HEAP32[$557 >> 2]; + HEAP32[$557 >> 2] = 0; + HEAP32[$555 >> 2] = 0; + HEAP32[$10 >> 2] = 0; + HEAP32[$548 >> 2] = $549 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($512, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($10); + $$0 = $$0$i; + break L1; + break; + } + case 67: + { + $561 = $first + 1 | 0; + $562 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($561, $last, $db) | 0; + if (($562 | 0) == ($561 | 0)) { + $$0 = $first; + break L1; + } + $565 = $db + 4 | 0; + $566 = HEAP32[$565 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($566 | 0)) { + $$0 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($566 + -24 | 0, 12705) | 0; + $569 = $db + 16 | 0; + $571 = (HEAP32[$565 >> 2] | 0) + -24 | 0; + HEAP32[$13 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $571, $13); + $574 = $db + 20 | 0; + $575 = HEAP32[$574 >> 2] | 0; + $577 = HEAP32[$db + 24 >> 2] | 0; + if ($575 >>> 0 < $577 >>> 0) { + HEAP32[$575 + 12 >> 2] = HEAP32[$12 + 12 >> 2]; + HEAP32[$575 >> 2] = HEAP32[$12 >> 2]; + $584 = $12 + 4 | 0; + HEAP32[$575 + 4 >> 2] = HEAP32[$584 >> 2]; + $586 = $12 + 8 | 0; + HEAP32[$575 + 8 >> 2] = HEAP32[$586 >> 2]; + HEAP32[$586 >> 2] = 0; + HEAP32[$584 >> 2] = 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$574 >> 2] = (HEAP32[$574 >> 2] | 0) + 16; + } else { + $594 = HEAP32[$569 >> 2] | 0; + $595 = $575 - $594 | 0; + $596 = $595 >> 4; + $597 = $596 + 1 | 0; + if (($595 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($569); + $600 = $577 - $594 | 0; + if ($600 >> 4 >>> 0 < 1073741823) { + $603 = $600 >> 3; + $$0$i$i$i61 = $603 >>> 0 < $597 >>> 0 ? $597 : $603; + } else $$0$i$i$i61 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i61, $596, $db + 28 | 0); + $606 = $__v$i$i$i + 8 | 0; + $607 = HEAP32[$606 >> 2] | 0; + HEAP32[$607 + 12 >> 2] = HEAP32[$12 + 12 >> 2]; + HEAP32[$607 >> 2] = HEAP32[$12 >> 2]; + $613 = $12 + 4 | 0; + HEAP32[$607 + 4 >> 2] = HEAP32[$613 >> 2]; + $615 = $12 + 8 | 0; + HEAP32[$607 + 8 >> 2] = HEAP32[$615 >> 2]; + HEAP32[$615 >> 2] = 0; + HEAP32[$613 >> 2] = 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$606 >> 2] = $607 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($569, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12); + $$0 = $562; + break L1; + break; + } + case 70: + { + do if ($197 << 24 >> 24 == 70) { + $620 = $first + 1 | 0; + if (($620 | 0) != ($last | 0)) { + if ((HEAP8[$620 >> 0] | 0) == 89) { + $624 = $first + 2 | 0; + if (($624 | 0) == ($last | 0)) break; else $t$0$i = $624; + } else $t$0$i = $620; + $626 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$0$i, $last, $db) | 0; + if (($626 | 0) != ($t$0$i | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, 12714, 1); + $628 = $db + 4 | 0; + $629 = $__v$i$i$i + 4 | 0; + $630 = $0 + 8 | 0; + $631 = $0 + 1 | 0; + $632 = $0 + 4 | 0; + L191 : do if (($626 | 0) == ($last | 0)) label = 144; else { + $ref_qual$0$i$ph521 = 0; + $t$1$i$ph520 = $626; + L192 : while (1) { + $t$1$i518 = $t$1$i$ph520; + L194 : while (1) { + switch (HEAP8[$t$1$i518 >> 0] | 0) { + case 69: + { + $ref_qual$0$i$ph521$lcssa = $ref_qual$0$i$ph521; + $t$1$i518$lcssa = $t$1$i518; + break L192; + break; + } + case 118: + { + $t$1$i$be = $t$1$i518 + 1 | 0; + break; + } + case 82: + { + $644 = $t$1$i518 + 1 | 0; + if (($644 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$644 >> 0] | 0) == 69) { + $ref_qual$0$i$ph$ph = 1; + $t$1$i$ph$ph = $644; + break L194; + } else label = 154; + break; + } + case 79: + { + $648 = $t$1$i518 + 1 | 0; + if (($648 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$648 >> 0] | 0) == 69) { + $ref_qual$0$i$ph$ph = 2; + $t$1$i$ph$ph = $648; + break L194; + } else label = 154; + break; + } + default: + label = 154; + } + if ((label | 0) == 154) { + label = 0; + $657 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $658 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1$i518, $last, $db) | 0; + $664 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($658 | 0) == ($t$1$i518 | 0) | ($658 | 0) == ($last | 0)) break L191; + if ($657 >>> 0 < $664 >>> 0) { + $k$0$i515 = $657; + do { + $669 = HEAP8[$__v$i$i$i >> 0] | 0; + if ((($669 & 1) == 0 ? ($669 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12716) | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k$0$i515 * 24 | 0) | 0); + $679 = HEAP8[$0 >> 0] | 0; + $681 = ($679 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($__v$i$i$i, $681 ? $631 : HEAP32[$630 >> 2] | 0, $681 ? ($679 & 255) >>> 1 : HEAP32[$632 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $k$0$i515 = $k$0$i515 + 1 | 0; + } while ($k$0$i515 >>> 0 < $664 >>> 0); + } + if ($657 >>> 0 < $664 >>> 0) { + $k2$0$i516 = $657; + do { + $690 = HEAP32[$628 >> 2] | 0; + $691 = $690 + -24 | 0; + $693 = $690; + do { + $692 = $693 + -24 | 0; + HEAP32[$628 >> 2] = $692; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($692); + $693 = HEAP32[$628 >> 2] | 0; + } while (($693 | 0) != ($691 | 0)); + $k2$0$i516 = $k2$0$i516 + 1 | 0; + } while ($k2$0$i516 >>> 0 < $664 >>> 0); + $t$1$i$be = $658; + } else $t$1$i$be = $658; + } + if (($t$1$i$be | 0) == ($last | 0)) { + label = 144; + break L191; + } else $t$1$i518 = $t$1$i$be; + } + if (($t$1$i$ph$ph | 0) == ($last | 0)) { + label = 144; + break L191; + } else { + $ref_qual$0$i$ph521 = $ref_qual$0$i$ph$ph; + $t$1$i$ph520 = $t$1$i$ph$ph; + } + } + $641 = $t$1$i518$lcssa + 1 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12619) | 0; + switch ($ref_qual$0$i$ph521$lcssa | 0) { + case 1: + { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12719) | 0; + break; + } + case 2: + { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12722) | 0; + break; + } + default: + {} + } + $698 = HEAP32[$628 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) != ($698 | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($698 + -24 | 0, 12726) | 0; + $703 = HEAP8[$__v$i$i$i >> 0] | 0; + $705 = ($703 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj((HEAP32[$628 >> 2] | 0) + -12 | 0, 0, $705 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, $705 ? ($703 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i); + if (($641 | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $716 = HEAP32[$628 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($716 | 0)) { + $$0 = $first; + break L1; + } + $718 = $db + 16 | 0; + HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $716 + -24 | 0, $15); + $722 = $db + 20 | 0; + $723 = HEAP32[$722 >> 2] | 0; + $725 = HEAP32[$db + 24 >> 2] | 0; + if ($723 >>> 0 < $725 >>> 0) { + HEAP32[$723 + 12 >> 2] = HEAP32[$14 + 12 >> 2]; + HEAP32[$723 >> 2] = HEAP32[$14 >> 2]; + $732 = $14 + 4 | 0; + HEAP32[$723 + 4 >> 2] = HEAP32[$732 >> 2]; + $734 = $14 + 8 | 0; + HEAP32[$723 + 8 >> 2] = HEAP32[$734 >> 2]; + HEAP32[$734 >> 2] = 0; + HEAP32[$732 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$722 >> 2] = (HEAP32[$722 >> 2] | 0) + 16; + } else { + $742 = HEAP32[$718 >> 2] | 0; + $743 = $723 - $742 | 0; + $744 = $743 >> 4; + $745 = $744 + 1 | 0; + if (($743 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($718); + $748 = $725 - $742 | 0; + if ($748 >> 4 >>> 0 < 1073741823) { + $751 = $748 >> 3; + $$0$i$i$i66 = $751 >>> 0 < $745 >>> 0 ? $745 : $751; + } else $$0$i$i$i66 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i66, $744, $db + 28 | 0); + $754 = $__v$i$i$i + 8 | 0; + $755 = HEAP32[$754 >> 2] | 0; + HEAP32[$755 + 12 >> 2] = HEAP32[$14 + 12 >> 2]; + HEAP32[$755 >> 2] = HEAP32[$14 >> 2]; + $761 = $14 + 4 | 0; + HEAP32[$755 + 4 >> 2] = HEAP32[$761 >> 2]; + $763 = $14 + 8 | 0; + HEAP32[$755 + 8 >> 2] = HEAP32[$763 >> 2]; + HEAP32[$763 >> 2] = 0; + HEAP32[$761 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$754 >> 2] = $755 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($718, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14); + $$0 = $641; + break L1; + } + } while (0); + if ((label | 0) == 144) { + $635 = HEAP32[$628 >> 2] | 0; + $636 = $635 + -24 | 0; + $638 = $635; + do { + $637 = $638 + -24 | 0; + HEAP32[$628 >> 2] = $637; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($637); + $638 = HEAP32[$628 >> 2] | 0; + } while (($638 | 0) != ($636 | 0)); + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i); + } + } + } while (0); + $$0 = $first; + break L1; + break; + } + case 71: + { + $767 = $first + 1 | 0; + $768 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($767, $last, $db) | 0; + if (($768 | 0) == ($767 | 0)) { + $$0 = $first; + break L1; + } + $771 = $db + 4 | 0; + $772 = HEAP32[$771 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($772 | 0)) { + $$0 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($772 + -24 | 0, 12728) | 0; + $775 = $db + 16 | 0; + $777 = (HEAP32[$771 >> 2] | 0) + -24 | 0; + HEAP32[$17 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($16, $777, $17); + $780 = $db + 20 | 0; + $781 = HEAP32[$780 >> 2] | 0; + $783 = HEAP32[$db + 24 >> 2] | 0; + if ($781 >>> 0 < $783 >>> 0) { + HEAP32[$781 + 12 >> 2] = HEAP32[$16 + 12 >> 2]; + HEAP32[$781 >> 2] = HEAP32[$16 >> 2]; + $790 = $16 + 4 | 0; + HEAP32[$781 + 4 >> 2] = HEAP32[$790 >> 2]; + $792 = $16 + 8 | 0; + HEAP32[$781 + 8 >> 2] = HEAP32[$792 >> 2]; + HEAP32[$792 >> 2] = 0; + HEAP32[$790 >> 2] = 0; + HEAP32[$16 >> 2] = 0; + HEAP32[$780 >> 2] = (HEAP32[$780 >> 2] | 0) + 16; + } else { + $800 = HEAP32[$775 >> 2] | 0; + $801 = $781 - $800 | 0; + $802 = $801 >> 4; + $803 = $802 + 1 | 0; + if (($801 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($775); + $806 = $783 - $800 | 0; + if ($806 >> 4 >>> 0 < 1073741823) { + $809 = $806 >> 3; + $$0$i$i$i71 = $809 >>> 0 < $803 >>> 0 ? $803 : $809; + } else $$0$i$i$i71 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i71, $802, $db + 28 | 0); + $812 = $__v$i$i$i + 8 | 0; + $813 = HEAP32[$812 >> 2] | 0; + HEAP32[$813 + 12 >> 2] = HEAP32[$16 + 12 >> 2]; + HEAP32[$813 >> 2] = HEAP32[$16 >> 2]; + $819 = $16 + 4 | 0; + HEAP32[$813 + 4 >> 2] = HEAP32[$819 >> 2]; + $821 = $16 + 8 | 0; + HEAP32[$813 + 8 >> 2] = HEAP32[$821 >> 2]; + HEAP32[$821 >> 2] = 0; + HEAP32[$819 >> 2] = 0; + HEAP32[$16 >> 2] = 0; + HEAP32[$812 >> 2] = $813 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($775, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($16); + $$0 = $768; + break L1; + break; + } + case 77: + { + if ($197 << 24 >> 24 == 77) { + $826 = $first + 1 | 0; + $827 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($826, $last, $db) | 0; + if (($827 | 0) == ($826 | 0)) $$08$i = $first; else { + $829 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($827, $last, $db) | 0; + if (($829 | 0) == ($827 | 0)) $$08$i = $first; else { + $831 = $db + 4 | 0; + $832 = HEAP32[$831 >> 2] | 0; + if ((($832 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$08$i = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($__v$i$i$i, $832 + -24 | 0); + $840 = HEAP32[$831 >> 2] | 0; + $841 = $840 + -24 | 0; + $843 = $840; + do { + $842 = $843 + -24 | 0; + HEAP32[$831 >> 2] = $842; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($842); + $843 = HEAP32[$831 >> 2] | 0; + } while (($843 | 0) != ($841 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($0, $840 + -48 | 0); + $846 = $__v$i$i$i + 12 | 0; + $856 = HEAP32[$831 >> 2] | 0; + $857 = $856 + -24 | 0; + if ((HEAP8[((HEAP8[$846 >> 0] & 1) == 0 ? $846 + 1 | 0 : HEAP32[$__v$i$i$i + 20 >> 2] | 0) >> 0] | 0) == 40) { + $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12714) | 0; + HEAP32[$3 >> 2] = HEAP32[$858 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$858 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$858 + 8 >> 2]; + HEAP32[$858 >> 2] = 0; + HEAP32[$858 + 4 >> 2] = 0; + HEAP32[$858 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $0); + $861 = HEAP8[$4 >> 0] | 0; + $863 = ($861 & 1) == 0; + $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($3, $863 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0; + HEAP32[$2 >> 2] = HEAP32[$873 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$873 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$873 + 8 >> 2]; + HEAP32[$873 >> 2] = 0; + HEAP32[$873 + 4 >> 2] = 0; + HEAP32[$873 + 8 >> 2] = 0; + $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12739) | 0; + HEAP32[$1 >> 2] = HEAP32[$876 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$876 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$876 + 8 >> 2]; + HEAP32[$876 >> 2] = 0; + HEAP32[$876 + 4 >> 2] = 0; + HEAP32[$876 + 8 >> 2] = 0; + do if (!(HEAP8[$857 >> 0] & 1)) { + HEAP8[$857 + 1 >> 0] = 0; + HEAP8[$857 >> 0] = 0; + } else { + $883 = $856 + -16 | 0; + HEAP8[HEAP32[$883 >> 2] >> 0] = 0; + $885 = $856 + -20 | 0; + HEAP32[$885 >> 2] = 0; + $$pre$i$i$i$i = HEAP8[$857 >> 0] | 0; + if (!($$pre$i$i$i$i & 1)) { + $892 = $$pre$i$i$i$i; + $901 = 10; + } else { + $888 = HEAP32[$857 >> 2] | 0; + $892 = $888 & 255; + $901 = ($888 & -2) + -1 | 0; + } + if (!($892 & 1)) { + $895 = ($892 & 255) >>> 1; + if (($892 & 255) < 22) { + $2569 = 1; + $900 = 10; + $920 = $895; + } else { + $2569 = 1; + $900 = ($895 + 16 & 240) + -1 | 0; + $920 = $895; + } + } else { + $2569 = 0; + $900 = 10; + $920 = 0; + } + if (($900 | 0) != ($901 | 0)) { + if (($900 | 0) == 10) { + $907 = $857 + 1 | 0; + $908 = HEAP32[$883 >> 2] | 0; + if ($2569) { + _memcpy($907 | 0, $908 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0; + _free($908); + } else { + HEAP8[$907 >> 0] = HEAP8[$908 >> 0] | 0; + _free($908); + } + HEAP8[$857 >> 0] = $920 << 1; + break; + } + $904 = $900 + 1 | 0; + $905 = _malloc($904) | 0; + if (!($900 >>> 0 <= $901 >>> 0 & ($905 | 0) == 0)) { + if ($2569) _memcpy($905 | 0, $857 + 1 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0; else { + $917 = HEAP32[$883 >> 2] | 0; + HEAP8[$905 >> 0] = HEAP8[$917 >> 0] | 0; + _free($917); + } + HEAP32[$857 >> 2] = $904 | 1; + HEAP32[$885 >> 2] = $920; + HEAP32[$883 >> 2] = $905; + } + } + } while (0); + HEAP32[$857 >> 2] = HEAP32[$1 >> 2]; + HEAP32[$857 + 4 >> 2] = HEAP32[$1 + 4 >> 2]; + HEAP32[$857 + 8 >> 2] = HEAP32[$1 + 8 >> 2]; + HEAP32[$1 >> 2] = 0; + HEAP32[$1 + 4 >> 2] = 0; + HEAP32[$1 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $925 = HEAP32[$831 >> 2] | 0; + $926 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($846, 0, 12619) | 0; + HEAP32[$5 >> 2] = HEAP32[$926 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$926 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$926 + 8 >> 2]; + HEAP32[$926 >> 2] = 0; + HEAP32[$926 + 4 >> 2] = 0; + HEAP32[$926 + 8 >> 2] = 0; + $929 = $925 + -12 | 0; + do if (!(HEAP8[$929 >> 0] & 1)) { + HEAP8[$929 + 1 >> 0] = 0; + HEAP8[$929 >> 0] = 0; + } else { + $934 = $925 + -4 | 0; + HEAP8[HEAP32[$934 >> 2] >> 0] = 0; + $936 = $925 + -8 | 0; + HEAP32[$936 >> 2] = 0; + $$pre$i$i$i21$i = HEAP8[$929 >> 0] | 0; + if (!($$pre$i$i$i21$i & 1)) { + $943 = $$pre$i$i$i21$i; + $952 = 10; + } else { + $939 = HEAP32[$929 >> 2] | 0; + $943 = $939 & 255; + $952 = ($939 & -2) + -1 | 0; + } + if (!($943 & 1)) { + $946 = ($943 & 255) >>> 1; + if (($943 & 255) < 22) { + $2570 = 1; + $951 = 10; + $971 = $946; + } else { + $2570 = 1; + $951 = ($946 + 16 & 240) + -1 | 0; + $971 = $946; + } + } else { + $2570 = 0; + $951 = 10; + $971 = 0; + } + if (($951 | 0) != ($952 | 0)) { + if (($951 | 0) == 10) { + $958 = $929 + 1 | 0; + $959 = HEAP32[$934 >> 2] | 0; + if ($2570) { + _memcpy($958 | 0, $959 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0; + _free($959); + } else { + HEAP8[$958 >> 0] = HEAP8[$959 >> 0] | 0; + _free($959); + } + HEAP8[$929 >> 0] = $971 << 1; + break; + } + $955 = $951 + 1 | 0; + $956 = _malloc($955) | 0; + if (!($951 >>> 0 <= $952 >>> 0 & ($956 | 0) == 0)) { + if ($2570) _memcpy($956 | 0, $929 + 1 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0; else { + $968 = HEAP32[$934 >> 2] | 0; + HEAP8[$956 >> 0] = HEAP8[$968 >> 0] | 0; + _free($968); + } + HEAP32[$929 >> 2] = $955 | 1; + HEAP32[$936 >> 2] = $971; + HEAP32[$934 >> 2] = $956; + } + } + } while (0); + HEAP32[$929 >> 2] = HEAP32[$5 >> 2]; + HEAP32[$929 + 4 >> 2] = HEAP32[$5 + 4 >> 2]; + HEAP32[$929 + 8 >> 2] = HEAP32[$5 + 8 >> 2]; + HEAP32[$5 >> 2] = 0; + HEAP32[$5 + 4 >> 2] = 0; + HEAP32[$5 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + } else { + $976 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12726) | 0; + HEAP32[$7 >> 2] = HEAP32[$976 >> 2]; + HEAP32[$7 + 4 >> 2] = HEAP32[$976 + 4 >> 2]; + HEAP32[$7 + 8 >> 2] = HEAP32[$976 + 8 >> 2]; + HEAP32[$976 >> 2] = 0; + HEAP32[$976 + 4 >> 2] = 0; + HEAP32[$976 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($8, $0); + $979 = HEAP8[$8 >> 0] | 0; + $981 = ($979 & 1) == 0; + $991 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $981 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $981 ? ($979 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0; + HEAP32[$num1$i >> 2] = HEAP32[$991 >> 2]; + HEAP32[$num1$i + 4 >> 2] = HEAP32[$991 + 4 >> 2]; + HEAP32[$num1$i + 8 >> 2] = HEAP32[$991 + 8 >> 2]; + HEAP32[$991 >> 2] = 0; + HEAP32[$991 + 4 >> 2] = 0; + HEAP32[$991 + 8 >> 2] = 0; + $994 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($num1$i, 12739) | 0; + HEAP32[$6 >> 2] = HEAP32[$994 >> 2]; + HEAP32[$6 + 4 >> 2] = HEAP32[$994 + 4 >> 2]; + HEAP32[$6 + 8 >> 2] = HEAP32[$994 + 8 >> 2]; + HEAP32[$994 >> 2] = 0; + HEAP32[$994 + 4 >> 2] = 0; + HEAP32[$994 + 8 >> 2] = 0; + do if (!(HEAP8[$857 >> 0] & 1)) { + HEAP8[$857 + 1 >> 0] = 0; + HEAP8[$857 >> 0] = 0; + } else { + $1001 = $856 + -16 | 0; + HEAP8[HEAP32[$1001 >> 2] >> 0] = 0; + $1003 = $856 + -20 | 0; + HEAP32[$1003 >> 2] = 0; + $$pre$i$i$i52$i = HEAP8[$857 >> 0] | 0; + if (!($$pre$i$i$i52$i & 1)) { + $1010 = $$pre$i$i$i52$i; + $1019 = 10; + } else { + $1006 = HEAP32[$857 >> 2] | 0; + $1010 = $1006 & 255; + $1019 = ($1006 & -2) + -1 | 0; + } + if (!($1010 & 1)) { + $1013 = ($1010 & 255) >>> 1; + if (($1010 & 255) < 22) { + $1018 = 10; + $1038 = $1013; + $2571 = 1; + } else { + $1018 = ($1013 + 16 & 240) + -1 | 0; + $1038 = $1013; + $2571 = 1; + } + } else { + $1018 = 10; + $1038 = 0; + $2571 = 0; + } + if (($1018 | 0) != ($1019 | 0)) { + if (($1018 | 0) == 10) { + $1025 = $857 + 1 | 0; + $1026 = HEAP32[$1001 >> 2] | 0; + if ($2571) { + _memcpy($1025 | 0, $1026 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0; + _free($1026); + } else { + HEAP8[$1025 >> 0] = HEAP8[$1026 >> 0] | 0; + _free($1026); + } + HEAP8[$857 >> 0] = $1038 << 1; + break; + } + $1022 = $1018 + 1 | 0; + $1023 = _malloc($1022) | 0; + if (!($1018 >>> 0 <= $1019 >>> 0 & ($1023 | 0) == 0)) { + if ($2571) _memcpy($1023 | 0, $857 + 1 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0; else { + $1035 = HEAP32[$1001 >> 2] | 0; + HEAP8[$1023 >> 0] = HEAP8[$1035 >> 0] | 0; + _free($1035); + } + HEAP32[$857 >> 2] = $1022 | 1; + HEAP32[$1003 >> 2] = $1038; + HEAP32[$1001 >> 2] = $1023; + } + } + } while (0); + HEAP32[$857 >> 2] = HEAP32[$6 >> 2]; + HEAP32[$857 + 4 >> 2] = HEAP32[$6 + 4 >> 2]; + HEAP32[$857 + 8 >> 2] = HEAP32[$6 + 8 >> 2]; + HEAP32[$6 >> 2] = 0; + HEAP32[$6 + 4 >> 2] = 0; + HEAP32[$6 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + $1043 = HEAP32[$831 >> 2] | 0; + $1044 = $1043 + -12 | 0; + do if (!(HEAP8[$1044 >> 0] & 1)) { + HEAP8[$1044 + 1 >> 0] = 0; + HEAP8[$1044 >> 0] = 0; + } else { + $1049 = $1043 + -4 | 0; + HEAP8[HEAP32[$1049 >> 2] >> 0] = 0; + $1051 = $1043 + -8 | 0; + HEAP32[$1051 >> 2] = 0; + $$pre$i$i$i71$i = HEAP8[$1044 >> 0] | 0; + if (!($$pre$i$i$i71$i & 1)) { + $1058 = $$pre$i$i$i71$i; + $1067 = 10; + } else { + $1054 = HEAP32[$1044 >> 2] | 0; + $1058 = $1054 & 255; + $1067 = ($1054 & -2) + -1 | 0; + } + if (!($1058 & 1)) { + $1061 = ($1058 & 255) >>> 1; + if (($1058 & 255) < 22) { + $1066 = 10; + $1086 = $1061; + $2572 = 1; + } else { + $1066 = ($1061 + 16 & 240) + -1 | 0; + $1086 = $1061; + $2572 = 1; + } + } else { + $1066 = 10; + $1086 = 0; + $2572 = 0; + } + if (($1066 | 0) != ($1067 | 0)) { + if (($1066 | 0) == 10) { + $1073 = $1044 + 1 | 0; + $1074 = HEAP32[$1049 >> 2] | 0; + if ($2572) { + _memcpy($1073 | 0, $1074 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0; + _free($1074); + } else { + HEAP8[$1073 >> 0] = HEAP8[$1074 >> 0] | 0; + _free($1074); + } + HEAP8[$1044 >> 0] = $1086 << 1; + break; + } + $1070 = $1066 + 1 | 0; + $1071 = _malloc($1070) | 0; + if (!($1066 >>> 0 <= $1067 >>> 0 & ($1071 | 0) == 0)) { + if ($2572) _memcpy($1071 | 0, $1044 + 1 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0; else { + $1083 = HEAP32[$1049 >> 2] | 0; + HEAP8[$1071 >> 0] = HEAP8[$1083 >> 0] | 0; + _free($1083); + } + HEAP32[$1044 >> 2] = $1070 | 1; + HEAP32[$1051 >> 2] = $1086; + HEAP32[$1049 >> 2] = $1071; + } + } + } while (0); + HEAP32[$1044 >> 2] = HEAP32[$846 >> 2]; + HEAP32[$1044 + 4 >> 2] = HEAP32[$846 + 4 >> 2]; + HEAP32[$1044 + 8 >> 2] = HEAP32[$846 + 8 >> 2]; + HEAP32[$846 >> 2] = 0; + HEAP32[$846 + 4 >> 2] = 0; + HEAP32[$846 + 8 >> 2] = 0; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($__v$i$i$i); + $$08$i = $829; + } + } + } + } else $$08$i = $first; + if (($$08$i | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $1094 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1094 | 0)) { + $$0 = $first; + break L1; + } + $1096 = $db + 16 | 0; + HEAP32[$19 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($18, $1094 + -24 | 0, $19); + $1100 = $db + 20 | 0; + $1101 = HEAP32[$1100 >> 2] | 0; + $1103 = HEAP32[$db + 24 >> 2] | 0; + if ($1101 >>> 0 < $1103 >>> 0) { + HEAP32[$1101 + 12 >> 2] = HEAP32[$18 + 12 >> 2]; + HEAP32[$1101 >> 2] = HEAP32[$18 >> 2]; + $1110 = $18 + 4 | 0; + HEAP32[$1101 + 4 >> 2] = HEAP32[$1110 >> 2]; + $1112 = $18 + 8 | 0; + HEAP32[$1101 + 8 >> 2] = HEAP32[$1112 >> 2]; + HEAP32[$1112 >> 2] = 0; + HEAP32[$1110 >> 2] = 0; + HEAP32[$18 >> 2] = 0; + HEAP32[$1100 >> 2] = (HEAP32[$1100 >> 2] | 0) + 16; + } else { + $1120 = HEAP32[$1096 >> 2] | 0; + $1121 = $1101 - $1120 | 0; + $1122 = $1121 >> 4; + $1123 = $1122 + 1 | 0; + if (($1121 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1096); + $1126 = $1103 - $1120 | 0; + if ($1126 >> 4 >>> 0 < 1073741823) { + $1129 = $1126 >> 3; + $$0$i$i$i76 = $1129 >>> 0 < $1123 >>> 0 ? $1123 : $1129; + } else $$0$i$i$i76 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i76, $1122, $db + 28 | 0); + $1132 = $__v$i$i$i + 8 | 0; + $1133 = HEAP32[$1132 >> 2] | 0; + HEAP32[$1133 + 12 >> 2] = HEAP32[$18 + 12 >> 2]; + HEAP32[$1133 >> 2] = HEAP32[$18 >> 2]; + $1139 = $18 + 4 | 0; + HEAP32[$1133 + 4 >> 2] = HEAP32[$1139 >> 2]; + $1141 = $18 + 8 | 0; + HEAP32[$1133 + 8 >> 2] = HEAP32[$1141 >> 2]; + HEAP32[$1141 >> 2] = 0; + HEAP32[$1139 >> 2] = 0; + HEAP32[$18 >> 2] = 0; + HEAP32[$1132 >> 2] = $1133 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1096, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18); + $$0 = $$08$i; + break L1; + break; + } + case 79: + { + $1145 = $db + 4 | 0; + $1151 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $1152 = $first + 1 | 0; + $1153 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1152, $last, $db) | 0; + $1159 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($1153 | 0) == ($1152 | 0)) { + $$0 = $first; + break L1; + } + $1161 = $db + 16 | 0; + $1164 = HEAP32[$db + 12 >> 2] | 0; + $1165 = $db + 20 | 0; + $1166 = HEAP32[$1165 >> 2] | 0; + $1168 = HEAP32[$db + 24 >> 2] | 0; + if ($1166 >>> 0 < $1168 >>> 0) { + HEAP32[$1166 >> 2] = 0; + HEAP32[$1166 + 4 >> 2] = 0; + HEAP32[$1166 + 8 >> 2] = 0; + HEAP32[$1166 + 12 >> 2] = $1164; + HEAP32[$1165 >> 2] = (HEAP32[$1165 >> 2] | 0) + 16; + } else { + $1178 = HEAP32[$1161 >> 2] | 0; + $1179 = $1166 - $1178 | 0; + $1180 = $1179 >> 4; + $1181 = $1180 + 1 | 0; + if (($1179 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1161); + $1184 = $1168 - $1178 | 0; + if ($1184 >> 4 >>> 0 < 1073741823) { + $1187 = $1184 >> 3; + $$0$i$i$i81 = $1187 >>> 0 < $1181 >>> 0 ? $1181 : $1187; + } else $$0$i$i$i81 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i81, $1180, $db + 28 | 0); + $1190 = $__v$i$i$i + 8 | 0; + $1191 = HEAP32[$1190 >> 2] | 0; + HEAP32[$1191 >> 2] = 0; + HEAP32[$1191 + 4 >> 2] = 0; + HEAP32[$1191 + 8 >> 2] = 0; + HEAP32[$1191 + 12 >> 2] = $1164; + HEAP32[$1190 >> 2] = $1191 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1161, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $1196 = $20 + 4 | 0; + $1197 = $20 + 8 | 0; + $1198 = $20 + 1 | 0; + $1199 = $__v$i$i$i + 8 | 0; + if ($1151 >>> 0 < $1159 >>> 0) $k5$0533 = $1151; else { + $$0 = $1153; + break L1; + } + while (1) { + $1201 = HEAP32[$db >> 2] | 0; + $1202 = $1201 + ($k5$0533 * 24 | 0) + 12 | 0; + $1203 = HEAP8[$1202 >> 0] | 0; + $1205 = ($1203 & 1) == 0; + $1210 = $1205 ? ($1203 & 255) >>> 1 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 16 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($20, $1205 ? $1202 + 1 | 0 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0, $1210 >>> 0 < 2 ? $1210 : 2); + $1217 = HEAP8[$20 >> 0] | 0; + $1219 = ($1217 & 1) == 0; + $1223 = $1219 ? ($1217 & 255) >>> 1 : HEAP32[$1196 >> 2] | 0; + $1226 = $1223 >>> 0 > 2; + $1228 = _memcmp($1219 ? $1198 : HEAP32[$1197 >> 2] | 0, 12696, $1226 ? 2 : $1223) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20); + $1233 = HEAP32[$db >> 2] | 0; + if (!((($1228 | 0) == 0 ? ($1223 >>> 0 < 2 ? -1 : $1226 & 1) : $1228) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12616) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } else { + $1237 = $1233 + ($k5$0533 * 24 | 0) + 12 | 0; + if (!(HEAP8[$1237 >> 0] & 1)) $1245 = $1237 + 1 | 0; else $1245 = HEAP32[$1233 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0; + if ((HEAP8[$1245 >> 0] | 0) == 40) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12714) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) | 0, 12743) | 0; + $1252 = HEAP32[$1165 >> 2] | 0; + $1253 = $1252 + -16 | 0; + $1254 = HEAP32[$db >> 2] | 0; + $1255 = $1254 + ($k5$0533 * 24 | 0) | 0; + $1256 = $1252 + -12 | 0; + $1257 = HEAP32[$1256 >> 2] | 0; + if (($1257 | 0) == (HEAP32[$1252 + -8 >> 2] | 0)) { + $1269 = $1257 - (HEAP32[$1253 >> 2] | 0) | 0; + $1270 = ($1269 | 0) / 24 | 0; + $1271 = $1270 + 1 | 0; + if (($1269 | 0) < -24) { + $$lcssa667 = $1253; + break; + } + if ($1270 >>> 0 < 1073741823) { + $1274 = $1270 << 1; + $$0$i$i$i87 = $1274 >>> 0 < $1271 >>> 0 ? $1271 : $1274; + } else $$0$i$i$i87 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i87, $1270, $1252 + -4 | 0); + $1277 = HEAP32[$1199 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277, $1255); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0); + HEAP32[$1199 >> 2] = $1277 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1253, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257, $1255); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0); + HEAP32[$1256 >> 2] = (HEAP32[$1256 >> 2] | 0) + 24; + } + $k5$0533 = $k5$0533 + 1 | 0; + if ($k5$0533 >>> 0 >= $1159 >>> 0) { + $$0 = $1153; + break L1; + } + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa667); + break; + } + case 80: + { + $1283 = $db + 4 | 0; + $1289 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $1290 = $first + 1 | 0; + $1291 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1290, $last, $db) | 0; + $1297 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($1291 | 0) == ($1290 | 0)) { + $$0 = $first; + break L1; + } + $1299 = $db + 16 | 0; + $1302 = HEAP32[$db + 12 >> 2] | 0; + $1303 = $db + 20 | 0; + $1304 = HEAP32[$1303 >> 2] | 0; + $1306 = HEAP32[$db + 24 >> 2] | 0; + if ($1304 >>> 0 < $1306 >>> 0) { + HEAP32[$1304 >> 2] = 0; + HEAP32[$1304 + 4 >> 2] = 0; + HEAP32[$1304 + 8 >> 2] = 0; + HEAP32[$1304 + 12 >> 2] = $1302; + HEAP32[$1303 >> 2] = (HEAP32[$1303 >> 2] | 0) + 16; + } else { + $1316 = HEAP32[$1299 >> 2] | 0; + $1317 = $1304 - $1316 | 0; + $1318 = $1317 >> 4; + $1319 = $1318 + 1 | 0; + if (($1317 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1299); + $1322 = $1306 - $1316 | 0; + if ($1322 >> 4 >>> 0 < 1073741823) { + $1325 = $1322 >> 3; + $$0$i$i$i95 = $1325 >>> 0 < $1319 >>> 0 ? $1319 : $1325; + } else $$0$i$i$i95 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i95, $1318, $db + 28 | 0); + $1328 = $__v$i$i$i + 8 | 0; + $1329 = HEAP32[$1328 >> 2] | 0; + HEAP32[$1329 >> 2] = 0; + HEAP32[$1329 + 4 >> 2] = 0; + HEAP32[$1329 + 8 >> 2] = 0; + HEAP32[$1329 + 12 >> 2] = $1302; + HEAP32[$1328 >> 2] = $1329 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1299, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $1334 = $21 + 4 | 0; + $1335 = $21 + 8 | 0; + $1336 = $21 + 1 | 0; + $1337 = $22 + 4 | 0; + $1338 = $22 + 8 | 0; + $1339 = $22 + 1 | 0; + $1340 = $__v$i$i$i + 8 | 0; + if ($1289 >>> 0 < $1297 >>> 0) $k8$0536 = $1289; else { + $$0 = $1291; + break L1; + } + while (1) { + $1342 = HEAP32[$db >> 2] | 0; + $1343 = $1342 + ($k8$0536 * 24 | 0) + 12 | 0; + $1344 = HEAP8[$1343 >> 0] | 0; + $1346 = ($1344 & 1) == 0; + $1351 = $1346 ? ($1344 & 255) >>> 1 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 16 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($21, $1346 ? $1343 + 1 | 0 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0, $1351 >>> 0 < 2 ? $1351 : 2); + $1358 = HEAP8[$21 >> 0] | 0; + $1360 = ($1358 & 1) == 0; + $1364 = $1360 ? ($1358 & 255) >>> 1 : HEAP32[$1334 >> 2] | 0; + $1367 = $1364 >>> 0 > 2; + $1369 = _memcmp($1360 ? $1336 : HEAP32[$1335 >> 2] | 0, 12696, $1367 ? 2 : $1364) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21); + $1374 = HEAP32[$db >> 2] | 0; + if (!((($1369 | 0) == 0 ? ($1364 >>> 0 < 2 ? -1 : $1367 & 1) : $1369) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12616) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } else { + $1378 = $1374 + ($k8$0536 * 24 | 0) + 12 | 0; + if (!(HEAP8[$1378 >> 0] & 1)) $1386 = $1378 + 1 | 0; else $1386 = HEAP32[$1374 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0; + if ((HEAP8[$1386 >> 0] | 0) == 40) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12714) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } + } + $1393 = HEAP32[$db >> 2] | 0; + $1394 = $1393 + ($k8$0536 * 24 | 0) | 0; + do if ((HEAP8[$1290 >> 0] | 0) == 85) { + $1395 = HEAP8[$1394 >> 0] | 0; + $1397 = ($1395 & 1) == 0; + $1402 = $1397 ? ($1395 & 255) >>> 1 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, $1397 ? $1394 + 1 | 0 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0, $1402 >>> 0 < 12 ? $1402 : 12); + $1409 = HEAP8[$22 >> 0] | 0; + $1411 = ($1409 & 1) == 0; + $1415 = $1411 ? ($1409 & 255) >>> 1 : HEAP32[$1337 >> 2] | 0; + $1418 = $1415 >>> 0 > 12; + $1420 = _memcmp($1411 ? $1339 : HEAP32[$1338 >> 2] | 0, 12746, $1418 ? 12 : $1415) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22); + $1425 = HEAP32[$db >> 2] | 0; + $1426 = $1425 + ($k8$0536 * 24 | 0) | 0; + if (!((($1420 | 0) == 0 ? ($1415 >>> 0 < 12 ? -1 : $1418 & 1) : $1420) | 0)) { + $1428 = HEAP8[$1426 >> 0] | 0; + if (!($1428 & 1)) { + $1432 = ($1428 & 255) >>> 1; + $1443 = $1432 >>> 0 < 11 ? $1432 : 11; + $1444 = $1432; + $1446 = 10; + $1449 = $1428; + } else { + $1436 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0; + $1439 = HEAP32[$1426 >> 2] | 0; + $1443 = $1436 >>> 0 < 11 ? $1436 : 11; + $1444 = $1436; + $1446 = ($1439 & -2) + -1 | 0; + $1449 = $1439 & 255; + } + if (($1443 - $1444 + $1446 | 0) >>> 0 < 2) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($1426, $1446, 2 - $1443 + $1444 - $1446 | 0, $1444, 0, $1443, 2, 12761); + break; + } + if (!($1449 & 1)) $1458 = $1426 + 1 | 0; else $1458 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0; + do if (($1443 | 0) == 2) { + $$1$i$i = 0; + $$12$i$i = 12761; + $$14$i$i = 2; + $2573 = 2; + label = 339; + } else { + $1455 = $1444 - $1443 | 0; + if (($1444 | 0) == ($1443 | 0)) { + $$1$i$i = 0; + $$12$i$i = 12761; + $$14$i$i = 2; + $2573 = $1443; + label = 339; + } else { + if ($1443 >>> 0 > 2) { + HEAP8[$1458 >> 0] = 105; + HEAP8[$1458 + 1 >> 0] = 100; + _memmove($1458 + 2 | 0, $1458 + $1443 | 0, $1455 | 0) | 0; + $$2$i$i = 2; + $1474 = $1443; + break; + } + do if ($1458 >>> 0 < 12761 >>> 0 & ($1458 + $1444 | 0) >>> 0 > 12761 >>> 0) if (($1458 + $1443 | 0) >>> 0 > 12761 >>> 0) { + _memcpy($1458 | 0, 12761, $1443 | 0) | 0; + $$0$i$i = $1443; + $$01$i$i = 12763; + $$03$i$i = 2 - $1443 | 0; + $1470 = 0; + break; + } else { + $$0$i$i = 0; + $$01$i$i = 12761 + (2 - $1443) | 0; + $$03$i$i = 2; + $1470 = $1443; + break; + } else { + $$0$i$i = 0; + $$01$i$i = 12761; + $$03$i$i = 2; + $1470 = $1443; + } while (0); + _memmove($1458 + ($$0$i$i + $$03$i$i) | 0, $1458 + ($$0$i$i + $1470) | 0, $1455 | 0) | 0; + $$1$i$i = $$0$i$i; + $$12$i$i = $$01$i$i; + $$14$i$i = $$03$i$i; + $2573 = $1470; + label = 339; + } + } while (0); + if ((label | 0) == 339) { + label = 0; + _memmove($1458 + $$1$i$i | 0, $$12$i$i | 0, $$14$i$i | 0) | 0; + $$2$i$i = $$14$i$i; + $1474 = $2573; + } + $1475 = $$2$i$i - $1474 + $1444 | 0; + if (!(HEAP8[$1426 >> 0] & 1)) HEAP8[$1426 >> 0] = $1475 << 1; else HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] = $1475; + HEAP8[$1458 + $1475 >> 0] = 0; + } else { + $1427 = $1426; + label = 322; + } + } else { + $1427 = $1394; + label = 322; + } while (0); + if ((label | 0) == 322) { + label = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1427, 12759) | 0; + } + $1486 = HEAP32[$1303 >> 2] | 0; + $1487 = $1486 + -16 | 0; + $1488 = HEAP32[$db >> 2] | 0; + $1489 = $1488 + ($k8$0536 * 24 | 0) | 0; + $1490 = $1486 + -12 | 0; + $1491 = HEAP32[$1490 >> 2] | 0; + if (($1491 | 0) == (HEAP32[$1486 + -8 >> 2] | 0)) { + $1503 = $1491 - (HEAP32[$1487 >> 2] | 0) | 0; + $1504 = ($1503 | 0) / 24 | 0; + $1505 = $1504 + 1 | 0; + if (($1503 | 0) < -24) { + $$lcssa674 = $1487; + break; + } + if ($1504 >>> 0 < 1073741823) { + $1508 = $1504 << 1; + $$0$i$i$i105 = $1508 >>> 0 < $1505 >>> 0 ? $1505 : $1508; + } else $$0$i$i$i105 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i105, $1504, $1486 + -4 | 0); + $1511 = HEAP32[$1340 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511, $1489); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0); + HEAP32[$1340 >> 2] = $1511 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1487, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491, $1489); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0); + HEAP32[$1490 >> 2] = (HEAP32[$1490 >> 2] | 0) + 24; + } + $k8$0536 = $k8$0536 + 1 | 0; + if ($k8$0536 >>> 0 >= $1297 >>> 0) { + $$0 = $1291; + break L1; + } + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa674); + break; + } + case 82: + { + $1517 = $db + 4 | 0; + $1523 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $1524 = $first + 1 | 0; + $1525 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1524, $last, $db) | 0; + $1531 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($1525 | 0) == ($1524 | 0)) { + $$0 = $first; + break L1; + } + $1533 = $db + 16 | 0; + $1536 = HEAP32[$db + 12 >> 2] | 0; + $1537 = $db + 20 | 0; + $1538 = HEAP32[$1537 >> 2] | 0; + $1540 = HEAP32[$db + 24 >> 2] | 0; + if ($1538 >>> 0 < $1540 >>> 0) { + HEAP32[$1538 >> 2] = 0; + HEAP32[$1538 + 4 >> 2] = 0; + HEAP32[$1538 + 8 >> 2] = 0; + HEAP32[$1538 + 12 >> 2] = $1536; + HEAP32[$1537 >> 2] = (HEAP32[$1537 >> 2] | 0) + 16; + } else { + $1550 = HEAP32[$1533 >> 2] | 0; + $1551 = $1538 - $1550 | 0; + $1552 = $1551 >> 4; + $1553 = $1552 + 1 | 0; + if (($1551 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1533); + $1556 = $1540 - $1550 | 0; + if ($1556 >> 4 >>> 0 < 1073741823) { + $1559 = $1556 >> 3; + $$0$i$i$i113 = $1559 >>> 0 < $1553 >>> 0 ? $1553 : $1559; + } else $$0$i$i$i113 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i113, $1552, $db + 28 | 0); + $1562 = $__v$i$i$i + 8 | 0; + $1563 = HEAP32[$1562 >> 2] | 0; + HEAP32[$1563 >> 2] = 0; + HEAP32[$1563 + 4 >> 2] = 0; + HEAP32[$1563 + 8 >> 2] = 0; + HEAP32[$1563 + 12 >> 2] = $1536; + HEAP32[$1562 >> 2] = $1563 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1533, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $1568 = $23 + 4 | 0; + $1569 = $23 + 8 | 0; + $1570 = $23 + 1 | 0; + $1571 = $__v$i$i$i + 8 | 0; + if ($1523 >>> 0 < $1531 >>> 0) $k11$0540 = $1523; else { + $$0 = $1525; + break L1; + } + while (1) { + $1573 = HEAP32[$db >> 2] | 0; + $1574 = $1573 + ($k11$0540 * 24 | 0) + 12 | 0; + $1575 = HEAP8[$1574 >> 0] | 0; + $1577 = ($1575 & 1) == 0; + $1582 = $1577 ? ($1575 & 255) >>> 1 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 16 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($23, $1577 ? $1574 + 1 | 0 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0, $1582 >>> 0 < 2 ? $1582 : 2); + $1589 = HEAP8[$23 >> 0] | 0; + $1591 = ($1589 & 1) == 0; + $1595 = $1591 ? ($1589 & 255) >>> 1 : HEAP32[$1568 >> 2] | 0; + $1598 = $1595 >>> 0 > 2; + $1600 = _memcmp($1591 ? $1570 : HEAP32[$1569 >> 2] | 0, 12696, $1598 ? 2 : $1595) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23); + $1605 = HEAP32[$db >> 2] | 0; + if (!((($1600 | 0) == 0 ? ($1595 >>> 0 < 2 ? -1 : $1598 & 1) : $1600) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12616) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } else { + $1609 = $1605 + ($k11$0540 * 24 | 0) + 12 | 0; + if (!(HEAP8[$1609 >> 0] & 1)) $1617 = $1609 + 1 | 0; else $1617 = HEAP32[$1605 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0; + if ((HEAP8[$1617 >> 0] | 0) == 40) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12714) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12619) | 0; + } + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) | 0, 12764) | 0; + $1624 = HEAP32[$1537 >> 2] | 0; + $1625 = $1624 + -16 | 0; + $1626 = HEAP32[$db >> 2] | 0; + $1627 = $1626 + ($k11$0540 * 24 | 0) | 0; + $1628 = $1624 + -12 | 0; + $1629 = HEAP32[$1628 >> 2] | 0; + if (($1629 | 0) == (HEAP32[$1624 + -8 >> 2] | 0)) { + $1641 = $1629 - (HEAP32[$1625 >> 2] | 0) | 0; + $1642 = ($1641 | 0) / 24 | 0; + $1643 = $1642 + 1 | 0; + if (($1641 | 0) < -24) { + $$lcssa682 = $1625; + break; + } + if ($1642 >>> 0 < 1073741823) { + $1646 = $1642 << 1; + $$0$i$i$i123 = $1646 >>> 0 < $1643 >>> 0 ? $1643 : $1646; + } else $$0$i$i$i123 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i123, $1642, $1624 + -4 | 0); + $1649 = HEAP32[$1571 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649, $1627); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0); + HEAP32[$1571 >> 2] = $1649 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1625, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629, $1627); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0); + HEAP32[$1628 >> 2] = (HEAP32[$1628 >> 2] | 0) + 24; + } + $k11$0540 = $k11$0540 + 1 | 0; + if ($k11$0540 >>> 0 >= $1531 >>> 0) { + $$0 = $1525; + break L1; + } + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa682); + break; + } + case 84: + { + $1655 = $db + 4 | 0; + $1661 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $1662 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + $1668 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($1662 | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $1670 = $db + 16 | 0; + $1671 = $db + 12 | 0; + $1673 = HEAP32[$1671 >> 2] | 0; + $1674 = $db + 20 | 0; + $1675 = HEAP32[$1674 >> 2] | 0; + $1676 = $db + 24 | 0; + $1677 = HEAP32[$1676 >> 2] | 0; + if ($1675 >>> 0 < $1677 >>> 0) { + HEAP32[$1675 >> 2] = 0; + HEAP32[$1675 + 4 >> 2] = 0; + HEAP32[$1675 + 8 >> 2] = 0; + HEAP32[$1675 + 12 >> 2] = $1673; + HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16; + } else { + $1687 = HEAP32[$1670 >> 2] | 0; + $1688 = $1675 - $1687 | 0; + $1689 = $1688 >> 4; + $1690 = $1689 + 1 | 0; + if (($1688 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670); + $1693 = $1677 - $1687 | 0; + if ($1693 >> 4 >>> 0 < 1073741823) { + $1696 = $1693 >> 3; + $$0$i$i$i131 = $1696 >>> 0 < $1690 >>> 0 ? $1690 : $1696; + } else $$0$i$i$i131 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i131, $1689, $db + 28 | 0); + $1699 = $__v$i$i$i + 8 | 0; + $1700 = HEAP32[$1699 >> 2] | 0; + HEAP32[$1700 >> 2] = 0; + HEAP32[$1700 + 4 >> 2] = 0; + HEAP32[$1700 + 8 >> 2] = 0; + HEAP32[$1700 + 12 >> 2] = $1673; + HEAP32[$1699 >> 2] = $1700 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $1705 = $__v$i$i$i + 8 | 0; + L522 : do if ($1661 >>> 0 < $1668 >>> 0) { + $k15$0543 = $1661; + while (1) { + $1707 = HEAP32[$1674 >> 2] | 0; + $1708 = $1707 + -16 | 0; + $1709 = HEAP32[$db >> 2] | 0; + $1710 = $1709 + ($k15$0543 * 24 | 0) | 0; + $1711 = $1707 + -12 | 0; + $1712 = HEAP32[$1711 >> 2] | 0; + if (($1712 | 0) == (HEAP32[$1707 + -8 >> 2] | 0)) { + $1724 = $1712 - (HEAP32[$1708 >> 2] | 0) | 0; + $1725 = ($1724 | 0) / 24 | 0; + $1726 = $1725 + 1 | 0; + if (($1724 | 0) < -24) { + $$lcssa690 = $1708; + break; + } + if ($1725 >>> 0 < 1073741823) { + $1729 = $1725 << 1; + $$0$i$i$i136 = $1729 >>> 0 < $1726 >>> 0 ? $1726 : $1729; + } else $$0$i$i$i136 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i136, $1725, $1707 + -4 | 0); + $1732 = HEAP32[$1705 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732, $1710); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0); + HEAP32[$1705 >> 2] = $1732 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1708, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712, $1710); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0); + HEAP32[$1711 >> 2] = (HEAP32[$1711 >> 2] | 0) + 24; + } + $k15$0543 = $k15$0543 + 1 | 0; + if ($k15$0543 >>> 0 >= $1668 >>> 0) break L522; + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa690); + } while (0); + if (!(($1668 | 0) == ($1661 + 1 | 0) & (HEAP8[$db + 63 >> 0] | 0) != 0)) { + $$0 = $1662; + break L1; + } + $1743 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0; + if (($1743 | 0) == ($1662 | 0)) { + $$0 = $1662; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, (HEAP32[$1655 >> 2] | 0) + -24 | 0); + $1747 = HEAP32[$1655 >> 2] | 0; + $1748 = $1747 + -24 | 0; + $1750 = $1747; + do { + $1749 = $1750 + -24 | 0; + HEAP32[$1655 >> 2] = $1749; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1749); + $1750 = HEAP32[$1655 >> 2] | 0; + } while (($1750 | 0) != ($1748 | 0)); + $1753 = HEAP8[$args >> 0] | 0; + $1755 = ($1753 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1747 + -48 | 0, $1755 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $1755 ? ($1753 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0; + $1766 = (HEAP32[$1655 >> 2] | 0) + -24 | 0; + HEAP32[$25 >> 2] = HEAP32[$1671 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($24, $1766, $25); + $1768 = HEAP32[$1674 >> 2] | 0; + $1769 = HEAP32[$1676 >> 2] | 0; + if ($1768 >>> 0 < $1769 >>> 0) { + HEAP32[$1768 + 12 >> 2] = HEAP32[$24 + 12 >> 2]; + HEAP32[$1768 >> 2] = HEAP32[$24 >> 2]; + $1776 = $24 + 4 | 0; + HEAP32[$1768 + 4 >> 2] = HEAP32[$1776 >> 2]; + $1778 = $24 + 8 | 0; + HEAP32[$1768 + 8 >> 2] = HEAP32[$1778 >> 2]; + HEAP32[$1778 >> 2] = 0; + HEAP32[$1776 >> 2] = 0; + HEAP32[$24 >> 2] = 0; + HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16; + } else { + $1786 = HEAP32[$1670 >> 2] | 0; + $1787 = $1768 - $1786 | 0; + $1788 = $1787 >> 4; + $1789 = $1788 + 1 | 0; + if (($1787 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670); + $1792 = $1769 - $1786 | 0; + if ($1792 >> 4 >>> 0 < 1073741823) { + $1795 = $1792 >> 3; + $$0$i$i$i148 = $1795 >>> 0 < $1789 >>> 0 ? $1789 : $1795; + } else $$0$i$i$i148 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i148, $1788, $db + 28 | 0); + $1798 = $__v$i$i$i + 8 | 0; + $1799 = HEAP32[$1798 >> 2] | 0; + HEAP32[$1799 + 12 >> 2] = HEAP32[$24 + 12 >> 2]; + HEAP32[$1799 >> 2] = HEAP32[$24 >> 2]; + $1805 = $24 + 4 | 0; + HEAP32[$1799 + 4 >> 2] = HEAP32[$1805 >> 2]; + $1807 = $24 + 8 | 0; + HEAP32[$1799 + 8 >> 2] = HEAP32[$1807 >> 2]; + HEAP32[$1807 >> 2] = 0; + HEAP32[$1805 >> 2] = 0; + HEAP32[$24 >> 2] = 0; + HEAP32[$1798 >> 2] = $1799 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($24); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$0 = $1743; + break L1; + break; + } + case 85: + { + $1811 = $first + 1 | 0; + if (($1811 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + $1813 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1811, $last, $db) | 0; + if (($1813 | 0) == ($1811 | 0)) { + $$0 = $first; + break L1; + } + $1815 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1813, $last, $db) | 0; + if (($1815 | 0) == ($1813 | 0)) { + $$0 = $first; + break L1; + } + $1817 = $db + 4 | 0; + $1818 = HEAP32[$1817 >> 2] | 0; + if ((($1818 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($type, $1818 + -24 | 0); + $1826 = HEAP32[$1817 >> 2] | 0; + $1827 = $1826 + -24 | 0; + $1829 = $1826; + do { + $1828 = $1829 + -24 | 0; + HEAP32[$1817 >> 2] = $1828; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1828); + $1829 = HEAP32[$1817 >> 2] | 0; + } while (($1829 | 0) != ($1827 | 0)); + $1831 = $1826 + -48 | 0; + $1832 = HEAP8[$1831 >> 0] | 0; + $1834 = ($1832 & 1) == 0; + $1839 = $1834 ? ($1832 & 255) >>> 1 : HEAP32[$1826 + -44 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($26, $1834 ? $1831 + 1 | 0 : HEAP32[$1826 + -40 >> 2] | 0, $1839 >>> 0 < 9 ? $1839 : 9); + $1846 = HEAP8[$26 >> 0] | 0; + $1848 = ($1846 & 1) == 0; + $1853 = $1848 ? ($1846 & 255) >>> 1 : HEAP32[$26 + 4 >> 2] | 0; + $1858 = $1853 >>> 0 > 9; + $1860 = _memcmp($1848 ? $26 + 1 | 0 : HEAP32[$26 + 8 >> 2] | 0, 12766, $1858 ? 9 : $1853) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26); + $1866 = (HEAP32[$1817 >> 2] | 0) + -24 | 0; + if (!((($1860 | 0) == 0 ? ($1853 >>> 0 < 9 ? -1 : $1858 & 1) : $1860) | 0)) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($proto, $1866); + $1884 = HEAP32[$1817 >> 2] | 0; + $1885 = $1884 + -24 | 0; + $1887 = $1884; + do { + $1886 = $1887 + -24 | 0; + HEAP32[$1817 >> 2] = $1886; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1886); + $1887 = HEAP32[$1817 >> 2] | 0; + } while (($1887 | 0) != ($1885 | 0)); + $1889 = HEAP8[$proto >> 0] | 0; + $1891 = ($1889 & 1) == 0; + $1892 = $proto + 8 | 0; + $1894 = $proto + 1 | 0; + $1895 = $1891 ? $1894 : HEAP32[$1892 >> 2] | 0; + $1897 = $proto + 4 | 0; + $1903 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1895 + 9 | 0, $1895 + ($1891 ? ($1889 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0, $db) | 0; + if (($1903 | 0) == (((HEAP8[$proto >> 0] & 1) == 0 ? $1894 : HEAP32[$1892 >> 2] | 0) + 9 | 0)) { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($38, $type, 12726); + $1933 = HEAP8[$proto >> 0] | 0; + $1935 = ($1933 & 1) == 0; + $1942 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($38, $1935 ? $1894 : HEAP32[$1892 >> 2] | 0, $1935 ? ($1933 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0; + HEAP32[$37 >> 2] = HEAP32[$1942 >> 2]; + HEAP32[$37 + 4 >> 2] = HEAP32[$1942 + 4 >> 2]; + HEAP32[$37 + 8 >> 2] = HEAP32[$1942 + 8 >> 2]; + HEAP32[$1942 >> 2] = 0; + HEAP32[$1942 + 4 >> 2] = 0; + HEAP32[$1942 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37); + $1945 = HEAP32[$1817 >> 2] | 0; + $1947 = HEAP32[$db + 8 >> 2] | 0; + if ($1945 >>> 0 < $1947 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1945, $36); + HEAP32[$1817 >> 2] = (HEAP32[$1817 >> 2] | 0) + 24; + } else { + $1954 = HEAP32[$db >> 2] | 0; + $1955 = $1945 - $1954 | 0; + $1956 = ($1955 | 0) / 24 | 0; + $1957 = $1956 + 1 | 0; + if (($1955 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1961 = ($1947 - $1954 | 0) / 24 | 0; + if ($1961 >>> 0 < 1073741823) { + $1963 = $1961 << 1; + $$0$i$i$i181 = $1963 >>> 0 < $1957 >>> 0 ? $1957 : $1963; + } else $$0$i$i$i181 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i181, $1956, $db + 12 | 0); + $1966 = $__v$i$i$i + 8 | 0; + $1967 = HEAP32[$1966 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1967, $36); + HEAP32[$1966 >> 2] = $1967 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38); + } else { + $1912 = (HEAP32[$1817 >> 2] | 0) + -24 | 0; + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($34, $type, 12776); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($35, (HEAP32[$1817 >> 2] | 0) + -24 | 0); + $1915 = HEAP8[$35 >> 0] | 0; + $1917 = ($1915 & 1) == 0; + $1927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($34, $1917 ? $35 + 1 | 0 : HEAP32[$35 + 8 >> 2] | 0, $1917 ? ($1915 & 255) >>> 1 : HEAP32[$35 + 4 >> 2] | 0) | 0; + HEAP32[$33 >> 2] = HEAP32[$1927 >> 2]; + HEAP32[$33 + 4 >> 2] = HEAP32[$1927 + 4 >> 2]; + HEAP32[$33 + 8 >> 2] = HEAP32[$1927 + 8 >> 2]; + HEAP32[$1927 >> 2] = 0; + HEAP32[$1927 + 4 >> 2] = 0; + HEAP32[$1927 + 8 >> 2] = 0; + $1930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($33, 12778) | 0; + HEAP32[$32 >> 2] = HEAP32[$1930 >> 2]; + HEAP32[$32 + 4 >> 2] = HEAP32[$1930 + 4 >> 2]; + HEAP32[$32 + 8 >> 2] = HEAP32[$1930 + 8 >> 2]; + HEAP32[$1930 >> 2] = 0; + HEAP32[$1930 + 4 >> 2] = 0; + HEAP32[$1930 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($31, $32); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1912, $31); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34); + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($proto); + } else { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($29, $type, 12726); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($30, (HEAP32[$1817 >> 2] | 0) + -24 | 0); + $1869 = HEAP8[$30 >> 0] | 0; + $1871 = ($1869 & 1) == 0; + $1881 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($29, $1871 ? $30 + 1 | 0 : HEAP32[$30 + 8 >> 2] | 0, $1871 ? ($1869 & 255) >>> 1 : HEAP32[$30 + 4 >> 2] | 0) | 0; + HEAP32[$28 >> 2] = HEAP32[$1881 >> 2]; + HEAP32[$28 + 4 >> 2] = HEAP32[$1881 + 4 >> 2]; + HEAP32[$28 + 8 >> 2] = HEAP32[$1881 + 8 >> 2]; + HEAP32[$1881 >> 2] = 0; + HEAP32[$1881 + 4 >> 2] = 0; + HEAP32[$1881 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($27, $28); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1866, $27); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29); + } + $1970 = (HEAP32[$1817 >> 2] | 0) + -24 | 0; + HEAP32[$40 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($39, $1970, $40); + $1973 = $db + 16 | 0; + $1974 = $db + 20 | 0; + $1975 = HEAP32[$1974 >> 2] | 0; + $1977 = HEAP32[$db + 24 >> 2] | 0; + if ($1975 >>> 0 < $1977 >>> 0) { + HEAP32[$1975 + 12 >> 2] = HEAP32[$39 + 12 >> 2]; + HEAP32[$1975 >> 2] = HEAP32[$39 >> 2]; + $1984 = $39 + 4 | 0; + HEAP32[$1975 + 4 >> 2] = HEAP32[$1984 >> 2]; + $1986 = $39 + 8 | 0; + HEAP32[$1975 + 8 >> 2] = HEAP32[$1986 >> 2]; + HEAP32[$1986 >> 2] = 0; + HEAP32[$1984 >> 2] = 0; + HEAP32[$39 >> 2] = 0; + HEAP32[$1974 >> 2] = (HEAP32[$1974 >> 2] | 0) + 16; + } else { + $1994 = HEAP32[$1973 >> 2] | 0; + $1995 = $1975 - $1994 | 0; + $1996 = $1995 >> 4; + $1997 = $1996 + 1 | 0; + if (($1995 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1973); + $2000 = $1977 - $1994 | 0; + if ($2000 >> 4 >>> 0 < 1073741823) { + $2003 = $2000 >> 3; + $$0$i$i$i153 = $2003 >>> 0 < $1997 >>> 0 ? $1997 : $2003; + } else $$0$i$i$i153 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i153, $1996, $db + 28 | 0); + $2006 = $__v$i$i$i + 8 | 0; + $2007 = HEAP32[$2006 >> 2] | 0; + HEAP32[$2007 + 12 >> 2] = HEAP32[$39 + 12 >> 2]; + HEAP32[$2007 >> 2] = HEAP32[$39 >> 2]; + $2013 = $39 + 4 | 0; + HEAP32[$2007 + 4 >> 2] = HEAP32[$2013 >> 2]; + $2015 = $39 + 8 | 0; + HEAP32[$2007 + 8 >> 2] = HEAP32[$2015 >> 2]; + HEAP32[$2015 >> 2] = 0; + HEAP32[$2013 >> 2] = 0; + HEAP32[$39 >> 2] = 0; + HEAP32[$2006 >> 2] = $2007 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1973, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($39); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($type); + $$0 = $1815; + break L1; + break; + } + case 83: + { + $2019 = $first + 1 | 0; + if (($2019 | 0) != ($last | 0)) if ((HEAP8[$2019 >> 0] | 0) == 116) { + $2023 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($2023 | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $2027 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2027 | 0)) { + $$0 = $first; + break L1; + } + $2029 = $db + 16 | 0; + HEAP32[$42 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($41, $2027 + -24 | 0, $42); + $2033 = $db + 20 | 0; + $2034 = HEAP32[$2033 >> 2] | 0; + $2036 = HEAP32[$db + 24 >> 2] | 0; + if ($2034 >>> 0 < $2036 >>> 0) { + HEAP32[$2034 + 12 >> 2] = HEAP32[$41 + 12 >> 2]; + HEAP32[$2034 >> 2] = HEAP32[$41 >> 2]; + $2043 = $41 + 4 | 0; + HEAP32[$2034 + 4 >> 2] = HEAP32[$2043 >> 2]; + $2045 = $41 + 8 | 0; + HEAP32[$2034 + 8 >> 2] = HEAP32[$2045 >> 2]; + HEAP32[$2045 >> 2] = 0; + HEAP32[$2043 >> 2] = 0; + HEAP32[$41 >> 2] = 0; + HEAP32[$2033 >> 2] = (HEAP32[$2033 >> 2] | 0) + 16; + } else { + $2053 = HEAP32[$2029 >> 2] | 0; + $2054 = $2034 - $2053 | 0; + $2055 = $2054 >> 4; + $2056 = $2055 + 1 | 0; + if (($2054 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2029); + $2059 = $2036 - $2053 | 0; + if ($2059 >> 4 >>> 0 < 1073741823) { + $2062 = $2059 >> 3; + $$0$i$i$i51 = $2062 >>> 0 < $2056 >>> 0 ? $2056 : $2062; + } else $$0$i$i$i51 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i51, $2055, $db + 28 | 0); + $2065 = $__v$i$i$i + 8 | 0; + $2066 = HEAP32[$2065 >> 2] | 0; + HEAP32[$2066 + 12 >> 2] = HEAP32[$41 + 12 >> 2]; + HEAP32[$2066 >> 2] = HEAP32[$41 >> 2]; + $2072 = $41 + 4 | 0; + HEAP32[$2066 + 4 >> 2] = HEAP32[$2072 >> 2]; + $2074 = $41 + 8 | 0; + HEAP32[$2066 + 8 >> 2] = HEAP32[$2074 >> 2]; + HEAP32[$2074 >> 2] = 0; + HEAP32[$2072 >> 2] = 0; + HEAP32[$41 >> 2] = 0; + HEAP32[$2065 >> 2] = $2066 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2029, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($41); + $$0 = $2023; + break L1; + } + $2078 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($2078 | 0) == ($first | 0)) { + $$0 = $first; + break L1; + } + $2080 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($2078, $last, $db) | 0; + if (($2080 | 0) == ($2078 | 0)) { + $$0 = $2078; + break L1; + } + $2082 = $db + 4 | 0; + $2083 = HEAP32[$2082 >> 2] | 0; + if ((($2083 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0 = $2078; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($template_args, $2083 + -24 | 0); + $2091 = HEAP32[$2082 >> 2] | 0; + $2092 = $2091 + -24 | 0; + $2094 = $2091; + do { + $2093 = $2094 + -24 | 0; + HEAP32[$2082 >> 2] = $2093; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2093); + $2094 = HEAP32[$2082 >> 2] | 0; + } while (($2094 | 0) != ($2092 | 0)); + $2097 = HEAP8[$template_args >> 0] | 0; + $2099 = ($2097 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2091 + -48 | 0, $2099 ? $template_args + 1 | 0 : HEAP32[$template_args + 8 >> 2] | 0, $2099 ? ($2097 & 255) >>> 1 : HEAP32[$template_args + 4 >> 2] | 0) | 0; + $2110 = (HEAP32[$2082 >> 2] | 0) + -24 | 0; + HEAP32[$44 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($43, $2110, $44); + $2113 = $db + 16 | 0; + $2114 = $db + 20 | 0; + $2115 = HEAP32[$2114 >> 2] | 0; + $2117 = HEAP32[$db + 24 >> 2] | 0; + if ($2115 >>> 0 < $2117 >>> 0) { + HEAP32[$2115 + 12 >> 2] = HEAP32[$43 + 12 >> 2]; + HEAP32[$2115 >> 2] = HEAP32[$43 >> 2]; + $2124 = $43 + 4 | 0; + HEAP32[$2115 + 4 >> 2] = HEAP32[$2124 >> 2]; + $2126 = $43 + 8 | 0; + HEAP32[$2115 + 8 >> 2] = HEAP32[$2126 >> 2]; + HEAP32[$2126 >> 2] = 0; + HEAP32[$2124 >> 2] = 0; + HEAP32[$43 >> 2] = 0; + HEAP32[$2114 >> 2] = (HEAP32[$2114 >> 2] | 0) + 16; + } else { + $2134 = HEAP32[$2113 >> 2] | 0; + $2135 = $2115 - $2134 | 0; + $2136 = $2135 >> 4; + $2137 = $2136 + 1 | 0; + if (($2135 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2113); + $2140 = $2117 - $2134 | 0; + if ($2140 >> 4 >>> 0 < 1073741823) { + $2143 = $2140 >> 3; + $$0$i$i$i31 = $2143 >>> 0 < $2137 >>> 0 ? $2137 : $2143; + } else $$0$i$i$i31 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i31, $2136, $db + 28 | 0); + $2146 = $__v$i$i$i + 8 | 0; + $2147 = HEAP32[$2146 >> 2] | 0; + HEAP32[$2147 + 12 >> 2] = HEAP32[$43 + 12 >> 2]; + HEAP32[$2147 >> 2] = HEAP32[$43 >> 2]; + $2153 = $43 + 4 | 0; + HEAP32[$2147 + 4 >> 2] = HEAP32[$2153 >> 2]; + $2155 = $43 + 8 | 0; + HEAP32[$2147 + 8 >> 2] = HEAP32[$2155 >> 2]; + HEAP32[$2155 >> 2] = 0; + HEAP32[$2153 >> 2] = 0; + HEAP32[$43 >> 2] = 0; + HEAP32[$2146 >> 2] = $2147 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2113, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($43); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($template_args); + $$0 = $2080; + break L1; + break; + } + case 68: + { + $2159 = $first + 1 | 0; + if (($2159 | 0) != ($last | 0)) { + $2161 = HEAP8[$2159 >> 0] | 0; + switch ($2161 << 24 >> 24 | 0) { + case 112: + { + $2163 = $db + 4 | 0; + $2169 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $2170 = $first + 2 | 0; + $2171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2170, $last, $db) | 0; + $2177 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (($2171 | 0) == ($2170 | 0)) break L65; + $2179 = $db + 16 | 0; + $2182 = HEAP32[$db + 12 >> 2] | 0; + $2183 = $db + 20 | 0; + $2184 = HEAP32[$2183 >> 2] | 0; + $2186 = HEAP32[$db + 24 >> 2] | 0; + if ($2184 >>> 0 < $2186 >>> 0) { + HEAP32[$2184 >> 2] = 0; + HEAP32[$2184 + 4 >> 2] = 0; + HEAP32[$2184 + 8 >> 2] = 0; + HEAP32[$2184 + 12 >> 2] = $2182; + HEAP32[$2183 >> 2] = (HEAP32[$2183 >> 2] | 0) + 16; + } else { + $2196 = HEAP32[$2179 >> 2] | 0; + $2197 = $2184 - $2196 | 0; + $2198 = $2197 >> 4; + $2199 = $2198 + 1 | 0; + if (($2197 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2179); + $2202 = $2186 - $2196 | 0; + if ($2202 >> 4 >>> 0 < 1073741823) { + $2205 = $2202 >> 3; + $$0$i$i$i29 = $2205 >>> 0 < $2199 >>> 0 ? $2199 : $2205; + } else $$0$i$i$i29 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i29, $2198, $db + 28 | 0); + $2208 = $__v$i$i$i + 8 | 0; + $2209 = HEAP32[$2208 >> 2] | 0; + HEAP32[$2209 >> 2] = 0; + HEAP32[$2209 + 4 >> 2] = 0; + HEAP32[$2209 + 8 >> 2] = 0; + HEAP32[$2209 + 12 >> 2] = $2182; + HEAP32[$2208 >> 2] = $2209 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2179, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + $2214 = $__v$i$i$i + 8 | 0; + if ($2169 >>> 0 < $2177 >>> 0) $k20$0550 = $2169; else { + $$0 = $2171; + break L1; + } + while (1) { + $2216 = HEAP32[$2183 >> 2] | 0; + $2217 = $2216 + -16 | 0; + $2218 = HEAP32[$db >> 2] | 0; + $2219 = $2218 + ($k20$0550 * 24 | 0) | 0; + $2220 = $2216 + -12 | 0; + $2221 = HEAP32[$2220 >> 2] | 0; + if (($2221 | 0) == (HEAP32[$2216 + -8 >> 2] | 0)) { + $2233 = $2221 - (HEAP32[$2217 >> 2] | 0) | 0; + $2234 = ($2233 | 0) / 24 | 0; + $2235 = $2234 + 1 | 0; + if (($2233 | 0) < -24) { + $$lcssa698 = $2217; + break; + } + if ($2234 >>> 0 < 1073741823) { + $2238 = $2234 << 1; + $$0$i$i$i27 = $2238 >>> 0 < $2235 >>> 0 ? $2235 : $2238; + } else $$0$i$i$i27 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i27, $2234, $2216 + -4 | 0); + $2241 = HEAP32[$2214 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241, $2219); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0); + HEAP32[$2214 >> 2] = $2241 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($2217, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221, $2219); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0); + HEAP32[$2220 >> 2] = (HEAP32[$2220 >> 2] | 0) + 24; + } + $k20$0550 = $k20$0550 + 1 | 0; + if ($k20$0550 >>> 0 >= $2177 >>> 0) { + $$0 = $2171; + break L1; + } + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa698); + break; + } + case 84: + case 116: + { + $2247 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($2247 | 0) == ($first | 0)) break L65; + $2251 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2251 | 0)) { + $$0 = $first; + break L1; + } + $2253 = $db + 16 | 0; + HEAP32[$46 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($45, $2251 + -24 | 0, $46); + $2257 = $db + 20 | 0; + $2258 = HEAP32[$2257 >> 2] | 0; + $2260 = HEAP32[$db + 24 >> 2] | 0; + if ($2258 >>> 0 < $2260 >>> 0) { + HEAP32[$2258 + 12 >> 2] = HEAP32[$45 + 12 >> 2]; + HEAP32[$2258 >> 2] = HEAP32[$45 >> 2]; + $2267 = $45 + 4 | 0; + HEAP32[$2258 + 4 >> 2] = HEAP32[$2267 >> 2]; + $2269 = $45 + 8 | 0; + HEAP32[$2258 + 8 >> 2] = HEAP32[$2269 >> 2]; + HEAP32[$2269 >> 2] = 0; + HEAP32[$2267 >> 2] = 0; + HEAP32[$45 >> 2] = 0; + HEAP32[$2257 >> 2] = (HEAP32[$2257 >> 2] | 0) + 16; + } else { + $2277 = HEAP32[$2253 >> 2] | 0; + $2278 = $2258 - $2277 | 0; + $2279 = $2278 >> 4; + $2280 = $2279 + 1 | 0; + if (($2278 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2253); + $2283 = $2260 - $2277 | 0; + if ($2283 >> 4 >>> 0 < 1073741823) { + $2286 = $2283 >> 3; + $$0$i$i$i22 = $2286 >>> 0 < $2280 >>> 0 ? $2280 : $2286; + } else $$0$i$i$i22 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i22, $2279, $db + 28 | 0); + $2289 = $__v$i$i$i + 8 | 0; + $2290 = HEAP32[$2289 >> 2] | 0; + HEAP32[$2290 + 12 >> 2] = HEAP32[$45 + 12 >> 2]; + HEAP32[$2290 >> 2] = HEAP32[$45 >> 2]; + $2296 = $45 + 4 | 0; + HEAP32[$2290 + 4 >> 2] = HEAP32[$2296 >> 2]; + $2298 = $45 + 8 | 0; + HEAP32[$2290 + 8 >> 2] = HEAP32[$2298 >> 2]; + HEAP32[$2298 >> 2] = 0; + HEAP32[$2296 >> 2] = 0; + HEAP32[$45 >> 2] = 0; + HEAP32[$2289 >> 2] = $2290 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2253, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($45); + $$0 = $2247; + break L1; + break; + } + case 118: + { + L662 : do if (($last - $first | 0) > 3 & $197 << 24 >> 24 == 68 & $2161 << 24 >> 24 == 118) { + $2308 = $first + 2 | 0; + $2309 = HEAP8[$2308 >> 0] | 0; + if (($2309 + -49 & 255) < 9) { + $2311 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($2308, $last) | 0; + if (($2311 | 0) == ($last | 0)) { + $$1$i263 = $first; + break; + } + if ((HEAP8[$2311 >> 0] | 0) != 95) { + $$1$i263 = $first; + break; + } + $2317 = $2311 - $2308 | 0; + $2318 = $2311 + 1 | 0; + if (($2318 | 0) == ($last | 0)) { + $$1$i263 = $first; + break; + } + if ((HEAP8[$2318 >> 0] | 0) != 112) { + $2322 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2318, $last, $db) | 0; + if (($2322 | 0) == ($2318 | 0)) { + $$1$i263 = $first; + break; + } + $2326 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2326 | 0)) { + $$1$i263 = $first; + break; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $2308, $2317); + $2329 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12780) | 0; + HEAP32[$1 >> 2] = HEAP32[$2329 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$2329 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$2329 + 8 >> 2]; + HEAP32[$2329 >> 2] = 0; + HEAP32[$2329 + 4 >> 2] = 0; + HEAP32[$2329 + 8 >> 2] = 0; + $2332 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12703) | 0; + HEAP32[$0 >> 2] = HEAP32[$2332 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$2332 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$2332 + 8 >> 2]; + HEAP32[$2332 >> 2] = 0; + HEAP32[$2332 + 4 >> 2] = 0; + HEAP32[$2332 + 8 >> 2] = 0; + $2335 = HEAP8[$0 >> 0] | 0; + $2337 = ($2335 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2326 + -24 | 0, $2337 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $2337 ? ($2335 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$1$i263 = $2322; + break; + } + $2347 = $2311 + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $2308, $2317); + $2348 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 12789) | 0; + HEAP32[$5 >> 2] = HEAP32[$2348 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$2348 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$2348 + 8 >> 2]; + HEAP32[$2348 >> 2] = 0; + HEAP32[$2348 + 4 >> 2] = 0; + HEAP32[$2348 + 8 >> 2] = 0; + $2351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 12703) | 0; + HEAP32[$4 >> 2] = HEAP32[$2351 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$2351 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$2351 + 8 >> 2]; + HEAP32[$2351 >> 2] = 0; + HEAP32[$2351 + 4 >> 2] = 0; + HEAP32[$2351 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4); + $2354 = $db + 4 | 0; + $2355 = HEAP32[$2354 >> 2] | 0; + $2357 = HEAP32[$db + 8 >> 2] | 0; + if ($2355 >>> 0 < $2357 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2355, $3); + HEAP32[$2354 >> 2] = (HEAP32[$2354 >> 2] | 0) + 24; + } else { + $2364 = HEAP32[$db >> 2] | 0; + $2365 = $2355 - $2364 | 0; + $2366 = ($2365 | 0) / 24 | 0; + $2367 = $2366 + 1 | 0; + if (($2365 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $2371 = ($2357 - $2364 | 0) / 24 | 0; + if ($2371 >>> 0 < 1073741823) { + $2373 = $2371 << 1; + $$0$i$i$i$i = $2373 >>> 0 < $2367 >>> 0 ? $2367 : $2373; + } else $$0$i$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i$i, $2366, $db + 12 | 0); + $2376 = $__v$i$i$i + 8 | 0; + $2377 = HEAP32[$2376 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2377, $3); + HEAP32[$2376 >> 2] = $2377 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + $$1$i263 = $2347; + break; + } + HEAP32[$num1$i >> 2] = 0; + HEAP32[$num1$i + 4 >> 2] = 0; + HEAP32[$num1$i + 8 >> 2] = 0; + if ($2309 << 24 >> 24 == 95) { + $t12$0$i = $2308; + label = 521; + } else { + $2382 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($2308, $last, $db) | 0; + if (($2382 | 0) == ($2308 | 0)) { + $t12$0$i = $2308; + label = 521; + } else { + $2385 = $db + 4 | 0; + $2386 = HEAP32[$2385 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) != ($2386 | 0)) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $2386 + -24 | 0); + L689 : do if (!(HEAP8[$num1$i >> 0] & 1)) { + HEAP8[$num1$i + 1 >> 0] = 0; + HEAP8[$num1$i >> 0] = 0; + } else { + $2393 = $num1$i + 8 | 0; + $2394 = HEAP32[$2393 >> 2] | 0; + HEAP8[$2394 >> 0] = 0; + $2395 = $num1$i + 4 | 0; + HEAP32[$2395 >> 2] = 0; + $2396 = HEAP32[$num1$i >> 2] | 0; + $phitmp$i$i$i$i$i$i$i240 = ($2396 & -2) + -1 | 0; + $2398 = $2396 & 255; + do if (!($2398 & 1)) { + $2402 = $2396 >>> 1 & 127; + if (($2398 & 255) < 22) { + _memcpy($num1$i + 1 | 0, $2394 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0; + _free($2394); + $$ph390 = $2402; + break; + } + $2405 = $2402 + 16 & 240; + $phitmp$i2$i$i$i$i$i$i243 = $2405 + -1 | 0; + if (($phitmp$i2$i$i$i$i$i$i243 | 0) == ($phitmp$i$i$i$i$i$i$i240 | 0)) break L689; + $2408 = _malloc($2405) | 0; + if ($phitmp$i2$i$i$i$i$i$i243 >>> 0 <= $phitmp$i$i$i$i$i$i$i240 >>> 0 & ($2408 | 0) == 0) break L689; + _memcpy($2408 | 0, $num1$i + 1 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0; + HEAP32[$num1$i >> 2] = $2405 | 1; + HEAP32[$2395 >> 2] = $2402; + HEAP32[$2393 >> 2] = $2408; + break L689; + } else { + HEAP8[$num1$i + 1 >> 0] = 0; + _free($2394); + $$ph390 = 0; + } while (0); + HEAP8[$num1$i >> 0] = $$ph390 << 1; + } while (0); + HEAP32[$num1$i >> 2] = HEAP32[$7 >> 2]; + HEAP32[$num1$i + 4 >> 2] = HEAP32[$7 + 4 >> 2]; + HEAP32[$num1$i + 8 >> 2] = HEAP32[$7 + 8 >> 2]; + HEAP32[$7 >> 2] = 0; + HEAP32[$7 + 4 >> 2] = 0; + HEAP32[$7 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + $2424 = HEAP32[$2385 >> 2] | 0; + $2425 = $2424 + -24 | 0; + $2427 = $2424; + do { + $2426 = $2427 + -24 | 0; + HEAP32[$2385 >> 2] = $2426; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2426); + $2427 = HEAP32[$2385 >> 2] | 0; + } while (($2427 | 0) != ($2425 | 0)); + $t12$0$i = $2382; + label = 521; + } + } + } + do if ((label | 0) == 521) { + if (($t12$0$i | 0) == ($last | 0)) $$13$i259$ph = $first; else if ((HEAP8[$t12$0$i >> 0] | 0) == 95) { + $2432 = $t12$0$i + 1 | 0; + if (($2432 | 0) == ($last | 0)) $$13$i259$ph = $first; else { + $2434 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2432, $last, $db) | 0; + if (($2434 | 0) == ($2432 | 0)) $$13$i259$ph = $first; else { + $2438 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2438 | 0)) break; + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($9, 12780, $num1$i); + $2441 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($9, 12703) | 0; + HEAP32[$8 >> 2] = HEAP32[$2441 >> 2]; + HEAP32[$8 + 4 >> 2] = HEAP32[$2441 + 4 >> 2]; + HEAP32[$8 + 8 >> 2] = HEAP32[$2441 + 8 >> 2]; + HEAP32[$2441 >> 2] = 0; + HEAP32[$2441 + 4 >> 2] = 0; + HEAP32[$2441 + 8 >> 2] = 0; + $2444 = HEAP8[$8 >> 0] | 0; + $2446 = ($2444 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2438 + -24 | 0, $2446 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $2446 ? ($2444 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9); + $$13$i259$ph = $2434; + } + } + } else $$13$i259$ph = $first; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i); + $$1$i263 = $$13$i259$ph; + break L662; + } while (0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i); + $$1$i263 = $first; + } else $$1$i263 = $first; while (0); + if (($$1$i263 | 0) == ($first | 0)) break L65; + $2459 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2459 | 0)) { + $$0 = $first; + break L1; + } + $2461 = $db + 16 | 0; + HEAP32[$48 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($47, $2459 + -24 | 0, $48); + $2465 = $db + 20 | 0; + $2466 = HEAP32[$2465 >> 2] | 0; + $2468 = HEAP32[$db + 24 >> 2] | 0; + if ($2466 >>> 0 < $2468 >>> 0) { + HEAP32[$2466 + 12 >> 2] = HEAP32[$47 + 12 >> 2]; + HEAP32[$2466 >> 2] = HEAP32[$47 >> 2]; + $2475 = $47 + 4 | 0; + HEAP32[$2466 + 4 >> 2] = HEAP32[$2475 >> 2]; + $2477 = $47 + 8 | 0; + HEAP32[$2466 + 8 >> 2] = HEAP32[$2477 >> 2]; + HEAP32[$2477 >> 2] = 0; + HEAP32[$2475 >> 2] = 0; + HEAP32[$47 >> 2] = 0; + HEAP32[$2465 >> 2] = (HEAP32[$2465 >> 2] | 0) + 16; + } else { + $2485 = HEAP32[$2461 >> 2] | 0; + $2486 = $2466 - $2485 | 0; + $2487 = $2486 >> 4; + $2488 = $2487 + 1 | 0; + if (($2486 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2461); + $2491 = $2468 - $2485 | 0; + if ($2491 >> 4 >>> 0 < 1073741823) { + $2494 = $2491 >> 3; + $$0$i$i$i17 = $2494 >>> 0 < $2488 >>> 0 ? $2488 : $2494; + } else $$0$i$i$i17 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i17, $2487, $db + 28 | 0); + $2497 = $__v$i$i$i + 8 | 0; + $2498 = HEAP32[$2497 >> 2] | 0; + HEAP32[$2498 + 12 >> 2] = HEAP32[$47 + 12 >> 2]; + HEAP32[$2498 >> 2] = HEAP32[$47 >> 2]; + $2504 = $47 + 4 | 0; + HEAP32[$2498 + 4 >> 2] = HEAP32[$2504 >> 2]; + $2506 = $47 + 8 | 0; + HEAP32[$2498 + 8 >> 2] = HEAP32[$2506 >> 2]; + HEAP32[$2506 >> 2] = 0; + HEAP32[$2504 >> 2] = 0; + HEAP32[$47 >> 2] = 0; + HEAP32[$2497 >> 2] = $2498 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2461, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($47); + $$0 = $$1$i263; + break L1; + break; + } + default: + break L65; + } + } + break; + } + default: + {} + } while (0); + $2510 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($2510 | 0) == ($first | 0)) { + $2512 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($2512 | 0) == ($first | 0)) $$0 = $first; else { + $2516 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($2516 | 0)) $$0 = $first; else { + $2518 = $db + 16 | 0; + HEAP32[$50 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($49, $2516 + -24 | 0, $50); + $2522 = $db + 20 | 0; + $2523 = HEAP32[$2522 >> 2] | 0; + $2525 = HEAP32[$db + 24 >> 2] | 0; + if ($2523 >>> 0 < $2525 >>> 0) { + HEAP32[$2523 + 12 >> 2] = HEAP32[$49 + 12 >> 2]; + HEAP32[$2523 >> 2] = HEAP32[$49 >> 2]; + $2532 = $49 + 4 | 0; + HEAP32[$2523 + 4 >> 2] = HEAP32[$2532 >> 2]; + $2534 = $49 + 8 | 0; + HEAP32[$2523 + 8 >> 2] = HEAP32[$2534 >> 2]; + HEAP32[$2534 >> 2] = 0; + HEAP32[$2532 >> 2] = 0; + HEAP32[$49 >> 2] = 0; + HEAP32[$2522 >> 2] = (HEAP32[$2522 >> 2] | 0) + 16; + } else { + $2542 = HEAP32[$2518 >> 2] | 0; + $2543 = $2523 - $2542 | 0; + $2544 = $2543 >> 4; + $2545 = $2544 + 1 | 0; + if (($2543 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2518); + $2548 = $2525 - $2542 | 0; + if ($2548 >> 4 >>> 0 < 1073741823) { + $2551 = $2548 >> 3; + $$0$i$i$i = $2551 >>> 0 < $2545 >>> 0 ? $2545 : $2551; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i, $2544, $db + 28 | 0); + $2554 = $__v$i$i$i + 8 | 0; + $2555 = HEAP32[$2554 >> 2] | 0; + HEAP32[$2555 + 12 >> 2] = HEAP32[$49 + 12 >> 2]; + HEAP32[$2555 >> 2] = HEAP32[$49 >> 2]; + $2561 = $49 + 4 | 0; + HEAP32[$2555 + 4 >> 2] = HEAP32[$2561 >> 2]; + $2563 = $49 + 8 | 0; + HEAP32[$2555 + 8 >> 2] = HEAP32[$2563 >> 2]; + HEAP32[$2563 >> 2] = 0; + HEAP32[$2561 >> 2] = 0; + HEAP32[$49 >> 2] = 0; + HEAP32[$2554 >> 2] = $2555 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2518, $__v$i$i$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($49); + $$0 = $2512; + } + } + } else $$0 = $2510; + } else $$0 = $195; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} +function __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i299 = 0, $$0$i$i$i$i348 = 0, $$0$i254 = 0, $$019$i = 0, $$02$i = 0, $$02$i310 = 0, $$02$i317 = 0, $$03$i = 0, $$03$i174 = 0, $$03$i189 = 0, $$03$i200 = 0, $$03$i211 = 0, $$03$i265 = 0, $$03$i456 = 0, $$03$i486 = 0, $$06$i = 0, $$06$i248 = 0, $$06$i345 = 0, $$06$i426 = 0, $$2$i302 = 0, $$2$i398 = 0, $$221$i = 0, $$311$i = 0, $$9$i = 0, $$first$i = 0, $$ph518 = 0, $$ph520524 = 0, $$phi$trans$insert = 0, $$pre$i$i$i = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i372 = 0, $$pre$i$i$i$i436 = 0, $$pre$i$i$i$i466 = 0, $$pre$i$i$i87 = 0, $$pre$phi511Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1022 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $103 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1043 = 0, $1047 = 0, $1050 = 0, $1053 = 0, $106 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1076 = 0, $1079 = 0, $1081 = 0, $109 = 0, $1091 = 0, $1093 = 0, $11 = 0, $110 = 0, $1103 = 0, $1106 = 0, $1108 = 0, $112 = 0, $1120 = 0, $1122 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1136 = 0, $1138 = 0, $1141 = 0, $1142 = 0, $1145 = 0, $1146 = 0, $1148 = 0, $1149 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1155 = 0, $1159 = 0, $1161 = 0, $1162 = 0, $1165 = 0, $1172 = 0, $1174 = 0, $1177 = 0, $1181 = 0, $1184 = 0, $1189 = 0, $1190 = 0, $1193 = 0, $1194 = 0, $1196 = 0, $1197 = 0, $12 = 0, $1206 = 0, $1209 = 0, $121 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1222 = 0, $1223 = 0, $1225 = 0, $1226 = 0, $1231 = 0, $1232 = 0, $1234 = 0, $1235 = 0, $1237 = 0, $1238 = 0, $1240 = 0, $1244 = 0, $1245 = 0, $1247 = 0, $1251 = 0, $1253 = 0, $1254 = 0, $1257 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1269 = 0, $1270 = 0, $1272 = 0, $1274 = 0, $1275 = 0, $128 = 0, $1283 = 0, $1284 = 0, $1285 = 0, $1286 = 0, $129 = 0, $1291 = 0, $1293 = 0, $13 = 0, $1306 = 0, $1307 = 0, $1309 = 0, $1311 = 0, $1313 = 0, $1314 = 0, $132 = 0, $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1330 = 0, $1331 = 0, $1335 = 0, $1336 = 0, $1339 = 0, $1341 = 0, $1351 = 0, $1354 = 0, $1357 = 0, $1359 = 0, $1369 = 0, $1372 = 0, $1375 = 0, $1376 = 0, $1377 = 0, $1379 = 0, $1380 = 0, $1381 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $139 = 0, $1398 = 0, $1399 = 0, $14 = 0, $1401 = 0, $1403 = 0, $1404 = 0, $141 = 0, $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1417 = 0, $1418 = 0, $1421 = 0, $1424 = 0, $1426 = 0, $1436 = 0, $1439 = 0, $144 = 0, $1442 = 0, $1443 = 0, $1445 = 0, $1446 = 0, $1448 = 0, $1449 = 0, $1451 = 0, $1452 = 0, $1463 = 0, $1464 = 0, $1466 = 0, $1468 = 0, $1469 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1482 = 0, $1483 = 0, $1486 = 0, $1489 = 0, $1491 = 0, $15 = 0, $1501 = 0, $1504 = 0, $151 = 0, $1513 = 0, $1514 = 0, $1523 = 0, $1524 = 0, $1528 = 0, $1530 = 0, $1531 = 0, $1534 = 0, $1543 = 0, $1544 = 0, $1548 = 0, $1550 = 0, $1551 = 0, $1554 = 0, $156 = 0, $1569 = 0, $157 = 0, $1572 = 0, $1578 = 0, $1579 = 0, $1581 = 0, $1585 = 0, $1591 = 0, $1593 = 0, $16 = 0, $160 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1609 = 0, $161 = 0, $1612 = 0, $1614 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $163 = 0, $1632 = 0, $1634 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1648 = 0, $1650 = 0, $1653 = 0, $1654 = 0, $1662 = 0, $1665 = 0, $1669 = 0, $1671 = 0, $1672 = 0, $1675 = 0, $1685 = 0, $1687 = 0, $1693 = 0, $1695 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1702 = 0, $1703 = 0, $1705 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1719 = 0, $1721 = 0, $1724 = 0, $1725 = 0, $173 = 0, $1734 = 0, $1735 = 0, $1739 = 0, $1741 = 0, $1742 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1751 = 0, $176 = 0, $18 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $214 = 0, $217 = 0, $22 = 0, $222 = 0, $223 = 0, $226 = 0, $227 = 0, $229 = 0, $23 = 0, $230 = 0, $239 = 0, $24 = 0, $242 = 0, $25 = 0, $256 = 0, $257 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $275 = 0, $276 = 0, $279 = 0, $28 = 0, $282 = 0, $284 = 0, $29 = 0, $294 = 0, $297 = 0, $3 = 0, $30 = 0, $305 = 0, $306 = 0, $31 = 0, $310 = 0, $311 = 0, $314 = 0, $315 = 0, $317 = 0, $32 = 0, $327 = 0, $33 = 0, $330 = 0, $335 = 0, $337 = 0, $34 = 0, $340 = 0, $344 = 0, $347 = 0, $35 = 0, $352 = 0, $353 = 0, $356 = 0, $357 = 0, $359 = 0, $36 = 0, $360 = 0, $369 = 0, $37 = 0, $372 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $384 = 0, $388 = 0, $39 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $402 = 0, $41 = 0, $412 = 0, $416 = 0, $417 = 0, $419 = 0, $42 = 0, $420 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $436 = 0, $438 = 0, $44 = 0, $442 = 0, $443 = 0, $445 = 0, $449 = 0, $45 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $464 = 0, $466 = 0, $469 = 0, $47 = 0, $470 = 0, $473 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $49 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $496 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $503 = 0, $505 = 0, $51 = 0, $515 = 0, $518 = 0, $52 = 0, $524 = 0, $525 = 0, $528 = 0, $529 = 0, $53 = 0, $531 = 0, $534 = 0, $539 = 0, $54 = 0, $541 = 0, $55 = 0, $551 = 0, $558 = 0, $56 = 0, $560 = 0, $563 = 0, $567 = 0, $57 = 0, $570 = 0, $575 = 0, $576 = 0, $579 = 0, $58 = 0, $580 = 0, $582 = 0, $583 = 0, $59 = 0, $592 = 0, $595 = 0, $6 = 0, $60 = 0, $606 = 0, $607 = 0, $609 = 0, $61 = 0, $611 = 0, $612 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $625 = 0, $626 = 0, $629 = 0, $63 = 0, $632 = 0, $634 = 0, $64 = 0, $644 = 0, $647 = 0, $65 = 0, $650 = 0, $651 = 0, $653 = 0, $654 = 0, $657 = 0, $658 = 0, $66 = 0, $660 = 0, $663 = 0, $668 = 0, $67 = 0, $670 = 0, $68 = 0, $680 = 0, $687 = 0, $689 = 0, $69 = 0, $692 = 0, $696 = 0, $699 = 0, $7 = 0, $70 = 0, $704 = 0, $705 = 0, $708 = 0, $709 = 0, $71 = 0, $711 = 0, $712 = 0, $72 = 0, $721 = 0, $724 = 0, $73 = 0, $736 = 0, $737 = 0, $739 = 0, $74 = 0, $741 = 0, $742 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $756 = 0, $758 = 0, $76 = 0, $77 = 0, $774 = 0, $775 = 0, $777 = 0, $779 = 0, $78 = 0, $780 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $794 = 0, $796 = 0, $8 = 0, $80 = 0, $806 = 0, $807 = 0, $809 = 0, $81 = 0, $810 = 0, $815 = 0, $816 = 0, $818 = 0, $819 = 0, $821 = 0, $822 = 0, $827 = 0, $828 = 0, $83 = 0, $830 = 0, $831 = 0, $836 = 0, $837 = 0, $839 = 0, $841 = 0, $842 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $857 = 0, $858 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $879 = 0, $880 = 0, $881 = 0, $886 = 0, $887 = 0, $889 = 0, $890 = 0, $892 = 0, $893 = 0, $895 = 0, $896 = 0, $9 = 0, $90 = 0, $901 = 0, $902 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $910 = 0, $911 = 0, $913 = 0, $917 = 0, $918 = 0, $920 = 0, $924 = 0, $926 = 0, $927 = 0, $930 = 0, $936 = 0, $940 = 0, $943 = 0, $945 = 0, $946 = 0, $947 = 0, $954 = 0, $955 = 0, $961 = 0, $976 = 0, $977 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $989 = 0, $993 = 0, $996 = 0, $999 = 0, $has_expr_list$0$off0$i = 0, $has_expr_list$0$off0$i$lcssa = 0, $has_init$0$off0$i513 = 0, $k$0$i621 = 0, $k$0$i622 = 0, $k1$0$i618 = 0, $op1 = 0, $op18 = 0, $op2 = 0, $op27 = 0, $op3 = 0, $parsed_gs$0$off0 = 0, $parsed_gs$0$off0$i = 0, $phitmp$i$i$i$i$i$i$i273 = 0, $phitmp$i$i$i$i$i$i32$i = 0, $phitmp$i2$i$i$i$i$i$i276 = 0, $phitmp$i2$i$i$i$i$i35$i = 0, $t$0 = 0, $t$0$i = 0, $t$0$i267 = 0, $t$0$i349567 = 0, $t$0$i390$lcssa = 0, $t$0$i390556 = 0, $t$1$i = 0, $t$1$i$lcssa = 0, $t$1$i350 = 0, $t$2$i = 0, $t$2$i351 = 0, $t$3$i512 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0, $t$1$i$looptemp = 0, $t$2$i$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 1168 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 1144 | 0; + $1 = sp + 1120 | 0; + $2 = sp + 1096 | 0; + $3 = sp + 1084 | 0; + $4 = sp + 1072 | 0; + $5 = sp + 1048 | 0; + $6 = sp + 1032 | 0; + $7 = sp + 900 | 0; + $8 = sp + 632 | 0; + $9 = sp + 620 | 0; + $10 = sp + 584 | 0; + $11 = sp + 560 | 0; + $12 = sp + 524 | 0; + $13 = sp + 1020 | 0; + $14 = sp + 1008 | 0; + $15 = sp + 996 | 0; + $16 = sp + 984 | 0; + $17 = sp + 972 | 0; + $18 = sp + 960 | 0; + $19 = sp + 948 | 0; + $20 = sp + 936 | 0; + $21 = sp + 924 | 0; + $22 = sp + 912 | 0; + $23 = sp + 888 | 0; + $24 = sp + 876 | 0; + $25 = sp + 864 | 0; + $26 = sp + 852 | 0; + $27 = sp + 840 | 0; + $28 = sp + 828 | 0; + $29 = sp + 816 | 0; + $30 = sp + 804 | 0; + $31 = sp + 792 | 0; + $32 = sp + 780 | 0; + $33 = sp + 768 | 0; + $34 = sp + 756 | 0; + $35 = sp + 744 | 0; + $op2 = sp + 732 | 0; + $op1 = sp + 720 | 0; + $36 = sp + 696 | 0; + $37 = sp + 680 | 0; + $38 = sp + 668 | 0; + $39 = sp + 656 | 0; + $40 = sp + 644 | 0; + $41 = sp + 608 | 0; + $42 = sp + 596 | 0; + $43 = sp + 548 | 0; + $44 = sp + 536 | 0; + $45 = sp + 512 | 0; + $46 = sp + 500 | 0; + $47 = sp + 488 | 0; + $48 = sp + 476 | 0; + $49 = sp + 464 | 0; + $50 = sp + 440 | 0; + $51 = sp + 424 | 0; + $52 = sp + 412 | 0; + $53 = sp + 400 | 0; + $54 = sp + 388 | 0; + $55 = sp + 376 | 0; + $56 = sp + 364 | 0; + $57 = sp + 352 | 0; + $58 = sp + 340 | 0; + $59 = sp + 328 | 0; + $60 = sp + 316 | 0; + $61 = sp + 304 | 0; + $62 = sp + 292 | 0; + $63 = sp + 280 | 0; + $64 = sp + 256 | 0; + $65 = sp + 240 | 0; + $66 = sp + 228 | 0; + $67 = sp + 216 | 0; + $68 = sp + 204 | 0; + $op3 = sp + 192 | 0; + $op27 = sp + 180 | 0; + $op18 = sp + 168 | 0; + $69 = sp + 144 | 0; + $70 = sp + 132 | 0; + $71 = sp + 120 | 0; + $72 = sp + 108 | 0; + $73 = sp + 96 | 0; + $74 = sp + 84 | 0; + $75 = sp + 72 | 0; + $76 = sp + 60 | 0; + $77 = sp + 48 | 0; + $78 = sp + 36 | 0; + $79 = sp + 24 | 0; + $80 = sp; + $81 = $last; + $83 = $81 - $first | 0; + L1 : do if (($83 | 0) > 1) { + $85 = ($83 | 0) > 3; + if ($85) if ((HEAP8[$first >> 0] | 0) == 103) { + $90 = (HEAP8[$first + 1 >> 0] | 0) == 115; + $parsed_gs$0$off0 = $90; + $t$0 = $90 ? $first + 2 | 0 : $first; + } else { + $parsed_gs$0$off0 = 0; + $t$0 = $first; + } else { + $parsed_gs$0$off0 = 0; + $t$0 = $first; + } + do switch (HEAP8[$t$0 >> 0] | 0) { + case 76: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 84: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 102: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 97: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 97: + { + $100 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 12743, 2); + $101 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($100, $last, $13, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13); + $$0 = ($101 | 0) == ($100 | 0) ? $first : $101; + break L1; + break; + } + case 100: + { + $103 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 12764, 1); + $104 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($103, $last, $14, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14); + $$0 = ($104 | 0) == ($103 | 0) ? $first : $104; + break L1; + break; + } + case 110: + { + $106 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 12764, 1); + $107 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($106, $last, $15, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15); + $$0 = ($107 | 0) == ($106 | 0) ? $first : $107; + break L1; + break; + } + case 78: + { + $109 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13889, 2); + $110 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($109, $last, $16, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16); + $$0 = ($110 | 0) == ($109 | 0) ? $first : $110; + break L1; + break; + } + case 83: + { + $112 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13892, 1); + $113 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($112, $last, $17, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17); + $$0 = ($113 | 0) == ($112 | 0) ? $first : $113; + break L1; + break; + } + case 116: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 116) { + $121 = $first + 2 | 0; + $122 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($121, $last, $db) | 0; + if (($122 | 0) == ($121 | 0)) $$03$i486 = $first; else { + $126 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($126 | 0)) $$03$i486 = $first; else { + $128 = $126 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $128); + $129 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13894) | 0; + HEAP32[$1 >> 2] = HEAP32[$129 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$129 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$129 + 8 >> 2]; + HEAP32[$129 >> 2] = 0; + HEAP32[$129 + 4 >> 2] = 0; + HEAP32[$129 + 8 >> 2] = 0; + $132 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$132 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$132 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$132 + 8 >> 2]; + HEAP32[$132 >> 2] = 0; + HEAP32[$132 + 4 >> 2] = 0; + HEAP32[$132 + 8 >> 2] = 0; + do if (!(HEAP8[$128 >> 0] & 1)) { + HEAP8[$128 + 1 >> 0] = 0; + HEAP8[$128 >> 0] = 0; + } else { + $139 = $126 + -16 | 0; + HEAP8[HEAP32[$139 >> 2] >> 0] = 0; + $141 = $126 + -20 | 0; + HEAP32[$141 >> 2] = 0; + $$pre$i$i$i$i466 = HEAP8[$128 >> 0] | 0; + if (!($$pre$i$i$i$i466 & 1)) { + $148 = $$pre$i$i$i$i466; + $157 = 10; + } else { + $144 = HEAP32[$128 >> 2] | 0; + $148 = $144 & 255; + $157 = ($144 & -2) + -1 | 0; + } + if (!($148 & 1)) { + $151 = ($148 & 255) >>> 1; + if (($148 & 255) < 22) { + $156 = 10; + $1746 = 1; + $176 = $151; + } else { + $156 = ($151 + 16 & 240) + -1 | 0; + $1746 = 1; + $176 = $151; + } + } else { + $156 = 10; + $1746 = 0; + $176 = 0; + } + if (($156 | 0) != ($157 | 0)) { + if (($156 | 0) == 10) { + $163 = $128 + 1 | 0; + $164 = HEAP32[$139 >> 2] | 0; + if ($1746) { + _memcpy($163 | 0, $164 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0; + _free($164); + } else { + HEAP8[$163 >> 0] = HEAP8[$164 >> 0] | 0; + _free($164); + } + HEAP8[$128 >> 0] = $176 << 1; + break; + } + $160 = $156 + 1 | 0; + $161 = _malloc($160) | 0; + if (!($156 >>> 0 <= $157 >>> 0 & ($161 | 0) == 0)) { + if ($1746) _memcpy($161 | 0, $128 + 1 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0; else { + $173 = HEAP32[$139 >> 2] | 0; + HEAP8[$161 >> 0] = HEAP8[$173 >> 0] | 0; + _free($173); + } + HEAP32[$128 >> 2] = $160 | 1; + HEAP32[$141 >> 2] = $176; + HEAP32[$139 >> 2] = $161; + } + } + } while (0); + HEAP32[$128 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$128 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$128 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$03$i486 = $122; + } + } + } else $$03$i486 = $first; else $$03$i486 = $first; else $$03$i486 = $first; + $$0 = $$03$i486; + break L1; + break; + } + case 122: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 122) { + $187 = $first + 2 | 0; + $188 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($187, $last, $db) | 0; + if (($188 | 0) == ($187 | 0)) $$03$i456 = $first; else { + $192 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($192 | 0)) $$03$i456 = $first; else { + $194 = $192 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $194); + $195 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13894) | 0; + HEAP32[$1 >> 2] = HEAP32[$195 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$195 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$195 + 8 >> 2]; + HEAP32[$195 >> 2] = 0; + HEAP32[$195 + 4 >> 2] = 0; + HEAP32[$195 + 8 >> 2] = 0; + $198 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$198 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$198 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$198 + 8 >> 2]; + HEAP32[$198 >> 2] = 0; + HEAP32[$198 + 4 >> 2] = 0; + HEAP32[$198 + 8 >> 2] = 0; + do if (!(HEAP8[$194 >> 0] & 1)) { + HEAP8[$194 + 1 >> 0] = 0; + HEAP8[$194 >> 0] = 0; + } else { + $205 = $192 + -16 | 0; + HEAP8[HEAP32[$205 >> 2] >> 0] = 0; + $207 = $192 + -20 | 0; + HEAP32[$207 >> 2] = 0; + $$pre$i$i$i$i436 = HEAP8[$194 >> 0] | 0; + if (!($$pre$i$i$i$i436 & 1)) { + $214 = $$pre$i$i$i$i436; + $223 = 10; + } else { + $210 = HEAP32[$194 >> 2] | 0; + $214 = $210 & 255; + $223 = ($210 & -2) + -1 | 0; + } + if (!($214 & 1)) { + $217 = ($214 & 255) >>> 1; + if (($214 & 255) < 22) { + $1747 = 1; + $222 = 10; + $242 = $217; + } else { + $1747 = 1; + $222 = ($217 + 16 & 240) + -1 | 0; + $242 = $217; + } + } else { + $1747 = 0; + $222 = 10; + $242 = 0; + } + if (($222 | 0) != ($223 | 0)) { + if (($222 | 0) == 10) { + $229 = $194 + 1 | 0; + $230 = HEAP32[$205 >> 2] | 0; + if ($1747) { + _memcpy($229 | 0, $230 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0; + _free($230); + } else { + HEAP8[$229 >> 0] = HEAP8[$230 >> 0] | 0; + _free($230); + } + HEAP8[$194 >> 0] = $242 << 1; + break; + } + $226 = $222 + 1 | 0; + $227 = _malloc($226) | 0; + if (!($222 >>> 0 <= $223 >>> 0 & ($227 | 0) == 0)) { + if ($1747) _memcpy($227 | 0, $194 + 1 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0; else { + $239 = HEAP32[$205 >> 2] | 0; + HEAP8[$227 >> 0] = HEAP8[$239 >> 0] | 0; + _free($239); + } + HEAP32[$194 >> 2] = $226 | 1; + HEAP32[$207 >> 2] = $242; + HEAP32[$205 >> 2] = $227; + } + } + } while (0); + HEAP32[$194 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$194 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$194 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$03$i456 = $188; + } + } + } else $$03$i456 = $first; else $$03$i456 = $first; else $$03$i456 = $first; + $$0 = $$03$i456; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 99: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 99: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 99) { + $256 = $first + 2 | 0; + $257 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($256, $last, $db) | 0; + if (($257 | 0) == ($256 | 0)) $$06$i426 = $first; else { + $259 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($257, $last, $db) | 0; + if (($259 | 0) == ($257 | 0)) $$06$i426 = $first; else { + $261 = $db + 4 | 0; + $262 = HEAP32[$261 >> 2] | 0; + if ((($262 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i426 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $262 + -24 | 0); + $270 = HEAP32[$261 >> 2] | 0; + $271 = $270 + -24 | 0; + $273 = $270; + do { + $272 = $273 + -24 | 0; + HEAP32[$261 >> 2] = $272; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272); + $273 = HEAP32[$261 >> 2] | 0; + } while (($273 | 0) != ($271 | 0)); + $275 = $270 + -48 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $275); + $276 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13904) | 0; + HEAP32[$5 >> 2] = HEAP32[$276 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$276 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$276 + 8 >> 2]; + HEAP32[$276 >> 2] = 0; + HEAP32[$276 + 4 >> 2] = 0; + HEAP32[$276 + 8 >> 2] = 0; + $279 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0; + HEAP32[$4 >> 2] = HEAP32[$279 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$279 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$279 + 8 >> 2]; + HEAP32[$279 >> 2] = 0; + HEAP32[$279 + 4 >> 2] = 0; + HEAP32[$279 + 8 >> 2] = 0; + $282 = HEAP8[$0 >> 0] | 0; + $284 = ($282 & 1) == 0; + $294 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $284 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $284 ? ($282 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + HEAP32[$3 >> 2] = HEAP32[$294 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$294 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$294 + 8 >> 2]; + HEAP32[$294 >> 2] = 0; + HEAP32[$294 + 4 >> 2] = 0; + HEAP32[$294 + 8 >> 2] = 0; + $297 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0; + HEAP32[$2 >> 2] = HEAP32[$297 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$297 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$297 + 8 >> 2]; + HEAP32[$297 >> 2] = 0; + HEAP32[$297 + 4 >> 2] = 0; + HEAP32[$297 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($275, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$06$i426 = $259; + } + } + } + } else $$06$i426 = $first; else $$06$i426 = $first; else $$06$i426 = $first; + $$0 = $$06$i426; + break L1; + break; + } + case 108: + { + L97 : do if ($85) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 108) { + $305 = $first + 2 | 0; + $306 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($305, $last, $db) | 0; + if (($306 | 0) == ($305 | 0) | ($306 | 0) == ($last | 0)) $$2$i398 = $first; else { + $310 = $db + 4 | 0; + $311 = HEAP32[$310 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($311 | 0)) $$2$i398 = $first; else { + $314 = $311 + -12 | 0; + $315 = HEAP8[$314 >> 0] | 0; + $317 = ($315 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($311 + -24 | 0, $317 ? $314 + 1 | 0 : HEAP32[$311 + -4 >> 2] | 0, $317 ? ($315 & 255) >>> 1 : HEAP32[$311 + -8 >> 2] | 0) | 0; + $327 = HEAP32[$310 >> 2] | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + $330 = $327 + -12 | 0; + do if (!(HEAP8[$330 >> 0] & 1)) { + HEAP8[$330 + 1 >> 0] = 0; + HEAP8[$330 >> 0] = 0; + } else { + $335 = $327 + -4 | 0; + HEAP8[HEAP32[$335 >> 2] >> 0] = 0; + $337 = $327 + -8 | 0; + HEAP32[$337 >> 2] = 0; + $$pre$i$i$i$i372 = HEAP8[$330 >> 0] | 0; + if (!($$pre$i$i$i$i372 & 1)) { + $344 = $$pre$i$i$i$i372; + $353 = 10; + } else { + $340 = HEAP32[$330 >> 2] | 0; + $344 = $340 & 255; + $353 = ($340 & -2) + -1 | 0; + } + if (!($344 & 1)) { + $347 = ($344 & 255) >>> 1; + if (($344 & 255) < 22) { + $1748 = 1; + $352 = 10; + $372 = $347; + } else { + $1748 = 1; + $352 = ($347 + 16 & 240) + -1 | 0; + $372 = $347; + } + } else { + $1748 = 0; + $352 = 10; + $372 = 0; + } + if (($352 | 0) != ($353 | 0)) { + if (($352 | 0) == 10) { + $359 = $330 + 1 | 0; + $360 = HEAP32[$335 >> 2] | 0; + if ($1748) { + _memcpy($359 | 0, $360 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0; + _free($360); + } else { + HEAP8[$359 >> 0] = HEAP8[$360 >> 0] | 0; + _free($360); + } + HEAP8[$330 >> 0] = $372 << 1; + break; + } + $356 = $352 + 1 | 0; + $357 = _malloc($356) | 0; + if (!($352 >>> 0 <= $353 >>> 0 & ($357 | 0) == 0)) { + if ($1748) _memcpy($357 | 0, $330 + 1 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0; else { + $369 = HEAP32[$335 >> 2] | 0; + HEAP8[$357 >> 0] = HEAP8[$369 >> 0] | 0; + _free($369); + } + HEAP32[$330 >> 2] = $356 | 1; + HEAP32[$337 >> 2] = $372; + HEAP32[$335 >> 2] = $357; + } + } + } while (0); + HEAP32[$330 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$330 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$330 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$310 >> 2] | 0) + -24 | 0, 12714) | 0; + $379 = $1 + 4 | 0; + $380 = $1 + 8 | 0; + $381 = $1 + 1 | 0; + L127 : do if ((HEAP8[$306 >> 0] | 0) == 69) $t$0$i390$lcssa = $306; else { + $t$0$i390556 = $306; + while (1) { + $384 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i390556, $last, $db) | 0; + if (($384 | 0) == ($t$0$i390556 | 0) | ($384 | 0) == ($last | 0)) { + $$2$i398 = $first; + break L97; + } + $388 = HEAP32[$310 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($388 | 0)) { + $$2$i398 = $first; + break L97; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $388 + -24 | 0); + $391 = HEAP32[$310 >> 2] | 0; + $392 = $391 + -24 | 0; + $394 = $391; + do { + $393 = $394 + -24 | 0; + HEAP32[$310 >> 2] = $393; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($393); + $394 = HEAP32[$310 >> 2] | 0; + } while (($394 | 0) != ($392 | 0)); + $396 = HEAP8[$1 >> 0] | 0; + $398 = ($396 & 1) == 0; + $402 = $398 ? ($396 & 255) >>> 1 : HEAP32[$379 >> 2] | 0; + if ($402) { + if ((HEAP32[$db >> 2] | 0) == ($392 | 0)) break; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($391 + -48 | 0, $398 ? $381 : HEAP32[$380 >> 2] | 0, $402) | 0; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + if ((HEAP8[$384 >> 0] | 0) == 69) { + $t$0$i390$lcssa = $384; + break L127; + } else $t$0$i390556 = $384; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + $$2$i398 = $first; + break L97; + } while (0); + $412 = HEAP32[$310 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($412 | 0)) $$2$i398 = $first; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($412 + -24 | 0, 12619) | 0; + $$2$i398 = $t$0$i390$lcssa + 1 | 0; + } + } + } + } else $$2$i398 = $first; else $$2$i398 = $first; else $$2$i398 = $first; while (0); + $$0 = $$2$i398; + break L1; + break; + } + case 109: + { + $416 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13919, 1); + $417 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($416, $last, $18, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18); + $$0 = ($417 | 0) == ($416 | 0) ? $first : $417; + break L1; + break; + } + case 111: + { + $419 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($19, 12928, 1); + $420 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($419, $last, $19, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($19); + $$0 = ($420 | 0) == ($419 | 0) ? $first : $420; + break L1; + break; + } + case 118: + { + L146 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 118) { + $428 = $db + 63 | 0; + $429 = HEAP8[$428 >> 0] | 0; + HEAP8[$428 >> 0] = 0; + $430 = $first + 2 | 0; + $431 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($430, $last, $db) | 0; + HEAP8[$428 >> 0] = $429; + if (($431 | 0) == ($430 | 0) | ($431 | 0) == ($last | 0)) $$311$i = $first; else { + if ((HEAP8[$431 >> 0] | 0) == 95) { + $438 = $431 + 1 | 0; + if (($438 | 0) == ($last | 0)) { + $$311$i = $first; + break; + } + do if ((HEAP8[$438 >> 0] | 0) == 69) { + $442 = $db + 4 | 0; + $443 = HEAP32[$442 >> 2] | 0; + $445 = HEAP32[$db + 8 >> 2] | 0; + if ($443 >>> 0 < $445 >>> 0) { + HEAP32[$443 >> 2] = 0; + HEAP32[$443 + 4 >> 2] = 0; + HEAP32[$443 + 8 >> 2] = 0; + HEAP32[$443 + 12 >> 2] = 0; + HEAP32[$443 + 16 >> 2] = 0; + HEAP32[$443 + 20 >> 2] = 0; + HEAP32[$443 >> 2] = 0; + HEAP32[$443 + 4 >> 2] = 0; + HEAP32[$443 + 8 >> 2] = 0; + $449 = $443 + 12 | 0; + HEAP32[$449 >> 2] = 0; + HEAP32[$449 + 4 >> 2] = 0; + HEAP32[$449 + 8 >> 2] = 0; + HEAP32[$442 >> 2] = (HEAP32[$442 >> 2] | 0) + 24; + $t$1$i350 = $438; + break; + } + $457 = HEAP32[$db >> 2] | 0; + $458 = $443 - $457 | 0; + $459 = ($458 | 0) / 24 | 0; + $460 = $459 + 1 | 0; + if (($458 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $464 = ($445 - $457 | 0) / 24 | 0; + if ($464 >>> 0 < 1073741823) { + $466 = $464 << 1; + $$0$i$i$i$i348 = $466 >>> 0 < $460 >>> 0 ? $460 : $466; + } else $$0$i$i$i$i348 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i348, $459, $db + 12 | 0); + $469 = $0 + 8 | 0; + $470 = HEAP32[$469 >> 2] | 0; + HEAP32[$470 >> 2] = 0; + HEAP32[$470 + 4 >> 2] = 0; + HEAP32[$470 + 8 >> 2] = 0; + HEAP32[$470 + 12 >> 2] = 0; + HEAP32[$470 + 16 >> 2] = 0; + HEAP32[$470 + 20 >> 2] = 0; + HEAP32[$470 >> 2] = 0; + HEAP32[$470 + 4 >> 2] = 0; + HEAP32[$470 + 8 >> 2] = 0; + $473 = $470 + 12 | 0; + HEAP32[$473 >> 2] = 0; + HEAP32[$473 + 4 >> 2] = 0; + HEAP32[$473 + 8 >> 2] = 0; + HEAP32[$469 >> 2] = $470 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + $t$1$i350 = $438; + } else { + $t$0$i349567 = $438; + while (1) { + $477 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i349567, $last, $db) | 0; + if (($477 | 0) == ($t$0$i349567 | 0) | ($477 | 0) == ($last | 0)) { + $$311$i = $first; + break L146; + } + if ((HEAP8[$477 >> 0] | 0) == 69) { + $t$1$i350 = $477; + break; + } else $t$0$i349567 = $477; + } + } while (0); + $t$2$i351 = $t$1$i350 + 1 | 0; + } else { + $436 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($431, $last, $db) | 0; + if (($436 | 0) == ($431 | 0)) { + $$311$i = $first; + break; + } else $t$2$i351 = $436; + } + $482 = $db + 4 | 0; + $483 = HEAP32[$482 >> 2] | 0; + if ((($483 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$311$i = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $483 + -24 | 0); + $491 = HEAP32[$482 >> 2] | 0; + $492 = $491 + -24 | 0; + $494 = $491; + do { + $493 = $494 + -24 | 0; + HEAP32[$482 >> 2] = $493; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($493); + $494 = HEAP32[$482 >> 2] | 0; + } while (($494 | 0) != ($492 | 0)); + $496 = $491 + -48 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $496); + $497 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($7, 0, 12714) | 0; + HEAP32[$6 >> 2] = HEAP32[$497 >> 2]; + HEAP32[$6 + 4 >> 2] = HEAP32[$497 + 4 >> 2]; + HEAP32[$6 + 8 >> 2] = HEAP32[$497 + 8 >> 2]; + HEAP32[$497 >> 2] = 0; + HEAP32[$497 + 4 >> 2] = 0; + HEAP32[$497 + 8 >> 2] = 0; + $500 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 13921) | 0; + HEAP32[$5 >> 2] = HEAP32[$500 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$500 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$500 + 8 >> 2]; + HEAP32[$500 >> 2] = 0; + HEAP32[$500 + 4 >> 2] = 0; + HEAP32[$500 + 8 >> 2] = 0; + $503 = HEAP8[$1 >> 0] | 0; + $505 = ($503 & 1) == 0; + $515 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($5, $505 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $505 ? ($503 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0; + HEAP32[$4 >> 2] = HEAP32[$515 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$515 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$515 + 8 >> 2]; + HEAP32[$515 >> 2] = 0; + HEAP32[$515 + 4 >> 2] = 0; + HEAP32[$515 + 8 >> 2] = 0; + $518 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($4, 12619) | 0; + HEAP32[$3 >> 2] = HEAP32[$518 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$518 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$518 + 8 >> 2]; + HEAP32[$518 >> 2] = 0; + HEAP32[$518 + 4 >> 2] = 0; + HEAP32[$518 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($496, $2); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + $$311$i = $t$2$i351; + } + } + } else $$311$i = $first; else $$311$i = $first; else $$311$i = $first; while (0); + $$0 = $$311$i; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 100: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 97: + { + $524 = $t$0 + 2 | 0; + $525 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($524, $last, $db) | 0; + if (($525 | 0) == ($524 | 0)) { + $$0 = $first; + break L1; + } + $528 = $db + 4 | 0; + $529 = HEAP32[$528 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($529 | 0)) { + $$0 = $first; + break L1; + } + $531 = $529 + -24 | 0; + if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, 12902, 2); else { + HEAP32[$22 >> 2] = 0; + HEAP32[$22 + 4 >> 2] = 0; + HEAP32[$22 + 8 >> 2] = 0; + } + $534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 13924) | 0; + HEAP32[$21 >> 2] = HEAP32[$534 >> 2]; + HEAP32[$21 + 4 >> 2] = HEAP32[$534 + 4 >> 2]; + HEAP32[$21 + 8 >> 2] = HEAP32[$534 + 8 >> 2]; + HEAP32[$534 >> 2] = 0; + HEAP32[$534 + 4 >> 2] = 0; + HEAP32[$534 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, (HEAP32[$528 >> 2] | 0) + -24 | 0); + $539 = HEAP8[$23 >> 0] | 0; + $541 = ($539 & 1) == 0; + $551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $541 ? $23 + 1 | 0 : HEAP32[$23 + 8 >> 2] | 0, $541 ? ($539 & 255) >>> 1 : HEAP32[$23 + 4 >> 2] | 0) | 0; + HEAP32[$20 >> 2] = HEAP32[$551 >> 2]; + HEAP32[$20 + 4 >> 2] = HEAP32[$551 + 4 >> 2]; + HEAP32[$20 + 8 >> 2] = HEAP32[$551 + 8 >> 2]; + HEAP32[$551 >> 2] = 0; + HEAP32[$551 + 4 >> 2] = 0; + HEAP32[$551 + 8 >> 2] = 0; + do if (!(HEAP8[$531 >> 0] & 1)) { + HEAP8[$531 + 1 >> 0] = 0; + HEAP8[$531 >> 0] = 0; + } else { + $558 = $529 + -16 | 0; + HEAP8[HEAP32[$558 >> 2] >> 0] = 0; + $560 = $529 + -20 | 0; + HEAP32[$560 >> 2] = 0; + $$pre$i$i$i = HEAP8[$531 >> 0] | 0; + if (!($$pre$i$i$i & 1)) { + $567 = $$pre$i$i$i; + $576 = 10; + } else { + $563 = HEAP32[$531 >> 2] | 0; + $567 = $563 & 255; + $576 = ($563 & -2) + -1 | 0; + } + if (!($567 & 1)) { + $570 = ($567 & 255) >>> 1; + if (($567 & 255) < 22) { + $1749 = 1; + $575 = 10; + $595 = $570; + } else { + $1749 = 1; + $575 = ($570 + 16 & 240) + -1 | 0; + $595 = $570; + } + } else { + $1749 = 0; + $575 = 10; + $595 = 0; + } + if (($575 | 0) != ($576 | 0)) { + if (($575 | 0) == 10) { + $582 = $531 + 1 | 0; + $583 = HEAP32[$558 >> 2] | 0; + if ($1749) { + _memcpy($582 | 0, $583 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0; + _free($583); + } else { + HEAP8[$582 >> 0] = HEAP8[$583 >> 0] | 0; + _free($583); + } + HEAP8[$531 >> 0] = $595 << 1; + break; + } + $579 = $575 + 1 | 0; + $580 = _malloc($579) | 0; + if (!($575 >>> 0 <= $576 >>> 0 & ($580 | 0) == 0)) { + if ($1749) _memcpy($580 | 0, $531 + 1 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0; else { + $592 = HEAP32[$558 >> 2] | 0; + HEAP8[$580 >> 0] = HEAP8[$592 >> 0] | 0; + _free($592); + } + HEAP32[$531 >> 2] = $579 | 1; + HEAP32[$560 >> 2] = $595; + HEAP32[$558 >> 2] = $580; + } + } + } while (0); + HEAP32[$531 >> 2] = HEAP32[$20 >> 2]; + HEAP32[$531 + 4 >> 2] = HEAP32[$20 + 4 >> 2]; + HEAP32[$531 + 8 >> 2] = HEAP32[$20 + 8 >> 2]; + HEAP32[$20 >> 2] = 0; + HEAP32[$20 + 4 >> 2] = 0; + HEAP32[$20 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22); + $$0 = $525; + break L1; + break; + } + case 99: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 99) { + $606 = $first + 2 | 0; + $607 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($606, $last, $db) | 0; + if (($607 | 0) == ($606 | 0)) $$06$i345 = $first; else { + $609 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($607, $last, $db) | 0; + if (($609 | 0) == ($607 | 0)) $$06$i345 = $first; else { + $611 = $db + 4 | 0; + $612 = HEAP32[$611 >> 2] | 0; + if ((($612 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i345 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $612 + -24 | 0); + $620 = HEAP32[$611 >> 2] | 0; + $621 = $620 + -24 | 0; + $623 = $620; + do { + $622 = $623 + -24 | 0; + HEAP32[$611 >> 2] = $622; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($622); + $623 = HEAP32[$611 >> 2] | 0; + } while (($623 | 0) != ($621 | 0)); + $625 = $620 + -48 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $625); + $626 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13934) | 0; + HEAP32[$5 >> 2] = HEAP32[$626 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$626 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$626 + 8 >> 2]; + HEAP32[$626 >> 2] = 0; + HEAP32[$626 + 4 >> 2] = 0; + HEAP32[$626 + 8 >> 2] = 0; + $629 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0; + HEAP32[$4 >> 2] = HEAP32[$629 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$629 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$629 + 8 >> 2]; + HEAP32[$629 >> 2] = 0; + HEAP32[$629 + 4 >> 2] = 0; + HEAP32[$629 + 8 >> 2] = 0; + $632 = HEAP8[$0 >> 0] | 0; + $634 = ($632 & 1) == 0; + $644 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $634 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $634 ? ($632 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + HEAP32[$3 >> 2] = HEAP32[$644 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$644 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$644 + 8 >> 2]; + HEAP32[$644 >> 2] = 0; + HEAP32[$644 + 4 >> 2] = 0; + HEAP32[$644 + 8 >> 2] = 0; + $647 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0; + HEAP32[$2 >> 2] = HEAP32[$647 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$647 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$647 + 8 >> 2]; + HEAP32[$647 >> 2] = 0; + HEAP32[$647 + 4 >> 2] = 0; + HEAP32[$647 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($625, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$06$i345 = $609; + } + } + } + } else $$06$i345 = $first; else $$06$i345 = $first; else $$06$i345 = $first; + $$0 = $$06$i345; + break L1; + break; + } + case 101: + { + $650 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($24, 12759, 1); + $651 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($650, $last, $24, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24); + $$0 = ($651 | 0) == ($650 | 0) ? $first : $651; + break L1; + break; + } + case 108: + { + $653 = $t$0 + 2 | 0; + $654 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($653, $last, $db) | 0; + if (($654 | 0) == ($653 | 0)) { + $$0 = $first; + break L1; + } + $657 = $db + 4 | 0; + $658 = HEAP32[$657 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($658 | 0)) { + $$0 = $first; + break L1; + } + $660 = $658 + -24 | 0; + if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($27, 12902, 2); else { + HEAP32[$27 >> 2] = 0; + HEAP32[$27 + 4 >> 2] = 0; + HEAP32[$27 + 8 >> 2] = 0; + } + $663 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($27, 13948) | 0; + HEAP32[$26 >> 2] = HEAP32[$663 >> 2]; + HEAP32[$26 + 4 >> 2] = HEAP32[$663 + 4 >> 2]; + HEAP32[$26 + 8 >> 2] = HEAP32[$663 + 8 >> 2]; + HEAP32[$663 >> 2] = 0; + HEAP32[$663 + 4 >> 2] = 0; + HEAP32[$663 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($28, (HEAP32[$657 >> 2] | 0) + -24 | 0); + $668 = HEAP8[$28 >> 0] | 0; + $670 = ($668 & 1) == 0; + $680 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $670 ? $28 + 1 | 0 : HEAP32[$28 + 8 >> 2] | 0, $670 ? ($668 & 255) >>> 1 : HEAP32[$28 + 4 >> 2] | 0) | 0; + HEAP32[$25 >> 2] = HEAP32[$680 >> 2]; + HEAP32[$25 + 4 >> 2] = HEAP32[$680 + 4 >> 2]; + HEAP32[$25 + 8 >> 2] = HEAP32[$680 + 8 >> 2]; + HEAP32[$680 >> 2] = 0; + HEAP32[$680 + 4 >> 2] = 0; + HEAP32[$680 + 8 >> 2] = 0; + do if (!(HEAP8[$660 >> 0] & 1)) { + HEAP8[$660 + 1 >> 0] = 0; + HEAP8[$660 >> 0] = 0; + } else { + $687 = $658 + -16 | 0; + HEAP8[HEAP32[$687 >> 2] >> 0] = 0; + $689 = $658 + -20 | 0; + HEAP32[$689 >> 2] = 0; + $$pre$i$i$i87 = HEAP8[$660 >> 0] | 0; + if (!($$pre$i$i$i87 & 1)) { + $696 = $$pre$i$i$i87; + $705 = 10; + } else { + $692 = HEAP32[$660 >> 2] | 0; + $696 = $692 & 255; + $705 = ($692 & -2) + -1 | 0; + } + if (!($696 & 1)) { + $699 = ($696 & 255) >>> 1; + if (($696 & 255) < 22) { + $1750 = 1; + $704 = 10; + $724 = $699; + } else { + $1750 = 1; + $704 = ($699 + 16 & 240) + -1 | 0; + $724 = $699; + } + } else { + $1750 = 0; + $704 = 10; + $724 = 0; + } + if (($704 | 0) != ($705 | 0)) { + if (($704 | 0) == 10) { + $711 = $660 + 1 | 0; + $712 = HEAP32[$687 >> 2] | 0; + if ($1750) { + _memcpy($711 | 0, $712 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0; + _free($712); + } else { + HEAP8[$711 >> 0] = HEAP8[$712 >> 0] | 0; + _free($712); + } + HEAP8[$660 >> 0] = $724 << 1; + break; + } + $708 = $704 + 1 | 0; + $709 = _malloc($708) | 0; + if (!($704 >>> 0 <= $705 >>> 0 & ($709 | 0) == 0)) { + if ($1750) _memcpy($709 | 0, $660 + 1 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0; else { + $721 = HEAP32[$687 >> 2] | 0; + HEAP8[$709 >> 0] = HEAP8[$721 >> 0] | 0; + _free($721); + } + HEAP32[$660 >> 2] = $708 | 1; + HEAP32[$689 >> 2] = $724; + HEAP32[$687 >> 2] = $709; + } + } + } while (0); + HEAP32[$660 >> 2] = HEAP32[$25 >> 2]; + HEAP32[$660 + 4 >> 2] = HEAP32[$25 + 4 >> 2]; + HEAP32[$660 + 8 >> 2] = HEAP32[$25 + 8 >> 2]; + HEAP32[$25 >> 2] = 0; + HEAP32[$25 + 4 >> 2] = 0; + HEAP32[$25 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($25); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($27); + $$0 = $654; + break L1; + break; + } + case 110: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 115: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 115) { + $736 = $first + 2 | 0; + $737 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($736, $last, $db) | 0; + if (($737 | 0) == ($736 | 0)) $$02$i317 = $first; else { + $739 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($737, $last, $db) | 0; + if (($739 | 0) == ($737 | 0)) $$02$i317 = $first; else { + $741 = $db + 4 | 0; + $742 = HEAP32[$741 >> 2] | 0; + if ((($742 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i317 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $742 + -24 | 0); + $750 = HEAP32[$741 >> 2] | 0; + $751 = $750 + -24 | 0; + $753 = $750; + do { + $752 = $753 + -24 | 0; + HEAP32[$741 >> 2] = $752; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($752); + $753 = HEAP32[$741 >> 2] | 0; + } while (($753 | 0) != ($751 | 0)); + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 13956, $0); + $756 = HEAP8[$1 >> 0] | 0; + $758 = ($756 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($750 + -48 | 0, $758 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $758 ? ($756 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$02$i317 = $739; + } + } + } + } else $$02$i317 = $first; else $$02$i317 = $first; else $$02$i317 = $first; + $$0 = $$02$i317; + break L1; + break; + } + case 116: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 116) { + $774 = $first + 2 | 0; + $775 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($774, $last, $db) | 0; + if (($775 | 0) == ($774 | 0)) $$02$i310 = $first; else { + $777 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($775, $last, $db) | 0; + if (($777 | 0) == ($775 | 0)) $$02$i310 = $first; else { + $779 = $db + 4 | 0; + $780 = HEAP32[$779 >> 2] | 0; + if ((($780 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i310 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $780 + -24 | 0); + $788 = HEAP32[$779 >> 2] | 0; + $789 = $788 + -24 | 0; + $791 = $788; + do { + $790 = $791 + -24 | 0; + HEAP32[$779 >> 2] = $790; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($790); + $791 = HEAP32[$779 >> 2] | 0; + } while (($791 | 0) != ($789 | 0)); + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 18335, $0); + $794 = HEAP8[$1 >> 0] | 0; + $796 = ($794 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($788 + -48 | 0, $796 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $796 ? ($794 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$02$i310 = $777; + } + } + } + } else $$02$i310 = $first; else $$02$i310 = $first; else $$02$i310 = $first; + $$0 = $$02$i310; + break L1; + break; + } + case 118: + { + $806 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($29, 13959, 1); + $807 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($806, $last, $29, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29); + $$0 = ($807 | 0) == ($806 | 0) ? $first : $807; + break L1; + break; + } + case 86: + { + $809 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($30, 13961, 2); + $810 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($809, $last, $30, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30); + $$0 = ($810 | 0) == ($809 | 0) ? $first : $810; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 101: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 111: + { + $815 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($31, 13964, 1); + $816 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($815, $last, $31, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($31); + $$0 = ($816 | 0) == ($815 | 0) ? $first : $816; + break L1; + break; + } + case 79: + { + $818 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($32, 13966, 2); + $819 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($818, $last, $32, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32); + $$0 = ($819 | 0) == ($818 | 0) ? $first : $819; + break L1; + break; + } + case 113: + { + $821 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($33, 13969, 2); + $822 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($821, $last, $33, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33); + $$0 = ($822 | 0) == ($821 | 0) ? $first : $822; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 103: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 101: + { + $827 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($34, 13972, 2); + $828 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($827, $last, $34, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34); + $$0 = ($828 | 0) == ($827 | 0) ? $first : $828; + break L1; + break; + } + case 116: + { + $830 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($35, 12778, 1); + $831 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($830, $last, $35, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35); + $$0 = ($831 | 0) == ($830 | 0) ? $first : $831; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 105: + { + if ((HEAP8[$t$0 + 1 >> 0] | 0) != 120) { + $$0 = $first; + break L1; + } + $836 = $first + 2 | 0; + $837 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($836, $last, $db) | 0; + if (($837 | 0) == ($836 | 0)) { + $$0 = $first; + break L1; + } + $839 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($837, $last, $db) | 0; + $841 = $db + 4 | 0; + $842 = HEAP32[$841 >> 2] | 0; + if (($839 | 0) == ($837 | 0)) { + $879 = $842 + -24 | 0; + $881 = $842; + while (1) { + $880 = $881 + -24 | 0; + HEAP32[$841 >> 2] = $880; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($880); + $881 = HEAP32[$841 >> 2] | 0; + if (($881 | 0) == ($879 | 0)) { + $$0 = $first; + break L1; + } + } + } + if ((($842 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $842 + -24 | 0); + $850 = HEAP32[$841 >> 2] | 0; + $851 = $850 + -24 | 0; + $853 = $850; + do { + $852 = $853 + -24 | 0; + HEAP32[$841 >> 2] = $852; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($852); + $853 = HEAP32[$841 >> 2] | 0; + } while (($853 | 0) != ($851 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $850 + -48 | 0); + $857 = (HEAP32[$841 >> 2] | 0) + -24 | 0; + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($40, 12714, $op1); + $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($40, 13975) | 0; + HEAP32[$39 >> 2] = HEAP32[$858 >> 2]; + HEAP32[$39 + 4 >> 2] = HEAP32[$858 + 4 >> 2]; + HEAP32[$39 + 8 >> 2] = HEAP32[$858 + 8 >> 2]; + HEAP32[$858 >> 2] = 0; + HEAP32[$858 + 4 >> 2] = 0; + HEAP32[$858 + 8 >> 2] = 0; + $861 = HEAP8[$op2 >> 0] | 0; + $863 = ($861 & 1) == 0; + $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($39, $863 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0; + HEAP32[$38 >> 2] = HEAP32[$873 >> 2]; + HEAP32[$38 + 4 >> 2] = HEAP32[$873 + 4 >> 2]; + HEAP32[$38 + 8 >> 2] = HEAP32[$873 + 8 >> 2]; + HEAP32[$873 >> 2] = 0; + HEAP32[$873 + 4 >> 2] = 0; + HEAP32[$873 + 8 >> 2] = 0; + $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($38, 12703) | 0; + HEAP32[$37 >> 2] = HEAP32[$876 >> 2]; + HEAP32[$37 + 4 >> 2] = HEAP32[$876 + 4 >> 2]; + HEAP32[$37 + 8 >> 2] = HEAP32[$876 + 8 >> 2]; + HEAP32[$876 >> 2] = 0; + HEAP32[$876 + 4 >> 2] = 0; + HEAP32[$876 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($857, $36); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($39); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($40); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2); + $$0 = $839; + break L1; + break; + } + case 108: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 101: + { + $886 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($41, 13978, 2); + $887 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($886, $last, $41, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($41); + $$0 = ($887 | 0) == ($886 | 0) ? $first : $887; + break L1; + break; + } + case 115: + { + $889 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($42, 13981, 2); + $890 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($889, $last, $42, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($42); + $$0 = ($890 | 0) == ($889 | 0) ? $first : $890; + break L1; + break; + } + case 83: + { + $892 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($43, 13984, 3); + $893 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($892, $last, $43, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($43); + $$0 = ($893 | 0) == ($892 | 0) ? $first : $893; + break L1; + break; + } + case 116: + { + $895 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($44, 12776, 1); + $896 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($895, $last, $44, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($44); + $$0 = ($896 | 0) == ($895 | 0) ? $first : $896; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 109: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 105: + { + $901 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($45, 13988, 1); + $902 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($901, $last, $45, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($45); + $$0 = ($902 | 0) == ($901 | 0) ? $first : $902; + break L1; + break; + } + case 73: + { + $904 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($46, 13990, 2); + $905 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($904, $last, $46, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($46); + $$0 = ($905 | 0) == ($904 | 0) ? $first : $905; + break L1; + break; + } + case 108: + { + $907 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($47, 12759, 1); + $908 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($907, $last, $47, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($47); + $$0 = ($908 | 0) == ($907 | 0) ? $first : $908; + break L1; + break; + } + case 76: + { + $910 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($48, 13993, 2); + $911 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($910, $last, $48, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($48); + $$0 = ($911 | 0) == ($910 | 0) ? $first : $911; + break L1; + break; + } + case 109: + { + $913 = $first + 2 | 0; + if (($913 | 0) != ($last | 0)) if ((HEAP8[$913 >> 0] | 0) == 95) { + $917 = $first + 3 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($49, 13996, 2); + $918 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($917, $last, $49, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($49); + $$0 = ($918 | 0) == ($917 | 0) ? $first : $918; + break L1; + } + $920 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($913, $last, $db) | 0; + if (($920 | 0) == ($913 | 0)) { + $$0 = $first; + break L1; + } + $924 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($924 | 0)) { + $$0 = $first; + break L1; + } + $926 = $924 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($53, $926); + $927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($53, 0, 12714) | 0; + HEAP32[$52 >> 2] = HEAP32[$927 >> 2]; + HEAP32[$52 + 4 >> 2] = HEAP32[$927 + 4 >> 2]; + HEAP32[$52 + 8 >> 2] = HEAP32[$927 + 8 >> 2]; + HEAP32[$927 >> 2] = 0; + HEAP32[$927 + 4 >> 2] = 0; + HEAP32[$927 + 8 >> 2] = 0; + $930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($52, 13999) | 0; + HEAP32[$51 >> 2] = HEAP32[$930 >> 2]; + HEAP32[$51 + 4 >> 2] = HEAP32[$930 + 4 >> 2]; + HEAP32[$51 + 8 >> 2] = HEAP32[$930 + 8 >> 2]; + HEAP32[$930 >> 2] = 0; + HEAP32[$930 + 4 >> 2] = 0; + HEAP32[$930 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($50, $51); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($926, $50); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($50); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($51); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($52); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($53); + $$0 = $920; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 110: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 119: + case 97: + { + L323 : do if ($85) { + $936 = HEAP8[$first >> 0] | 0; + if ($936 << 24 >> 24 == 103) { + $940 = (HEAP8[$first + 1 >> 0] | 0) == 115; + $$first$i = $940 ? $first + 2 | 0 : $first; + $943 = HEAP8[$$first$i >> 0] | 0; + $parsed_gs$0$off0$i = $940; + $t$0$i267 = $$first$i; + } else { + $943 = $936; + $parsed_gs$0$off0$i = 0; + $t$0$i267 = $first; + } + if ($943 << 24 >> 24 == 110) { + $945 = HEAP8[$t$0$i267 + 1 >> 0] | 0; + switch ($945 << 24 >> 24) { + case 97: + case 119: + break; + default: + { + $$221$i = $first; + label = 319; + break L323; + } + } + $946 = $945 << 24 >> 24 == 97; + $947 = $t$0$i267 + 2 | 0; + if (($947 | 0) == ($last | 0)) $$9$i = $first; else { + $has_expr_list$0$off0$i = 0; + $t$1$i = $947; + while (1) { + if ((HEAP8[$t$1$i >> 0] | 0) == 95) { + $has_expr_list$0$off0$i$lcssa = $has_expr_list$0$off0$i; + $t$1$i$lcssa = $t$1$i; + break; + } + $t$1$i$looptemp = $t$1$i; + $t$1$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$1$i, $last, $db) | 0; + if (($t$1$i | 0) == ($t$1$i$looptemp | 0) | ($t$1$i | 0) == ($last | 0)) { + $$9$i = $first; + break L323; + } else $has_expr_list$0$off0$i = 1; + } + $954 = $t$1$i$lcssa + 1 | 0; + $955 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($954, $last, $db) | 0; + if (($955 | 0) == ($954 | 0) | ($955 | 0) == ($last | 0)) $$9$i = $first; else { + $961 = HEAP8[$955 >> 0] | 0; + L335 : do if (($81 - $955 | 0) > 2 & $961 << 24 >> 24 == 112) { + if ((HEAP8[$955 + 1 >> 0] | 0) != 105) { + $$9$i = $first; + break L323; + } + $t$2$i = $955 + 2 | 0; + while (1) { + if ((HEAP8[$t$2$i >> 0] | 0) == 69) { + $has_init$0$off0$i513 = 1; + $t$3$i512 = $t$2$i; + break L335; + } + $t$2$i$looptemp = $t$2$i; + $t$2$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$2$i, $last, $db) | 0; + if (($t$2$i | 0) == ($t$2$i$looptemp | 0) | ($t$2$i | 0) == ($last | 0)) { + $$9$i = $first; + break L323; + } + } + } else if ($961 << 24 >> 24 == 69) { + $has_init$0$off0$i513 = 0; + $t$3$i512 = $955; + } else { + $$9$i = $first; + break L323; + } while (0); + HEAP32[$1 >> 2] = 0; + HEAP32[$1 + 4 >> 2] = 0; + HEAP32[$1 + 8 >> 2] = 0; + if ($has_init$0$off0$i513) { + $976 = $db + 4 | 0; + $977 = HEAP32[$976 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) != ($977 | 0)) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $977 + -24 | 0); + L346 : do if (!(HEAP8[$1 >> 0] & 1)) { + HEAP8[$1 + 1 >> 0] = 0; + HEAP8[$1 >> 0] = 0; + } else { + $984 = $1 + 8 | 0; + $985 = HEAP32[$984 >> 2] | 0; + HEAP8[$985 >> 0] = 0; + $986 = $1 + 4 | 0; + HEAP32[$986 >> 2] = 0; + $987 = HEAP32[$1 >> 2] | 0; + $phitmp$i$i$i$i$i$i$i273 = ($987 & -2) + -1 | 0; + $989 = $987 & 255; + do if (!($989 & 1)) { + $993 = $987 >>> 1 & 127; + if (($989 & 255) < 22) { + _memcpy($1 + 1 | 0, $985 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0; + _free($985); + $$ph518 = $993; + break; + } + $996 = $993 + 16 & 240; + $phitmp$i2$i$i$i$i$i$i276 = $996 + -1 | 0; + if (($phitmp$i2$i$i$i$i$i$i276 | 0) == ($phitmp$i$i$i$i$i$i$i273 | 0)) break L346; + $999 = _malloc($996) | 0; + if ($phitmp$i2$i$i$i$i$i$i276 >>> 0 <= $phitmp$i$i$i$i$i$i$i273 >>> 0 & ($999 | 0) == 0) break L346; + _memcpy($999 | 0, $1 + 1 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0; + HEAP32[$1 >> 2] = $996 | 1; + HEAP32[$986 >> 2] = $993; + HEAP32[$984 >> 2] = $999; + break L346; + } else { + HEAP8[$1 + 1 >> 0] = 0; + _free($985); + $$ph518 = 0; + } while (0); + HEAP8[$1 >> 0] = $$ph518 << 1; + } while (0); + HEAP32[$1 >> 2] = HEAP32[$2 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2]; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $1015 = HEAP32[$976 >> 2] | 0; + $1016 = $1015 + -24 | 0; + $1018 = $1015; + do { + $1017 = $1018 + -24 | 0; + HEAP32[$976 >> 2] = $1017; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1017); + $1018 = HEAP32[$976 >> 2] | 0; + } while (($1018 | 0) != ($1016 | 0)); + $$pre$phi511Z2D = $976; + $$pre$phiZ2D = $db; + $1022 = $1016; + label = 283; + } + } else { + $$phi$trans$insert = $db + 4 | 0; + $$pre$phi511Z2D = $$phi$trans$insert; + $$pre$phiZ2D = $db; + $1022 = HEAP32[$$phi$trans$insert >> 2] | 0; + label = 283; + } + if ((label | 0) == 283) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) != ($1022 | 0)) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1022 + -24 | 0); + $1024 = HEAP32[$$pre$phi511Z2D >> 2] | 0; + $1025 = $1024 + -24 | 0; + $1027 = $1024; + do { + $1026 = $1027 + -24 | 0; + HEAP32[$$pre$phi511Z2D >> 2] = $1026; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1026); + $1027 = HEAP32[$$pre$phi511Z2D >> 2] | 0; + } while (($1027 | 0) != ($1025 | 0)); + HEAP32[$4 >> 2] = 0; + HEAP32[$4 + 4 >> 2] = 0; + HEAP32[$4 + 8 >> 2] = 0; + if ($has_expr_list$0$off0$i$lcssa) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) == ($1025 | 0)) { + $$019$i = $first; + $$2$i302 = 0; + } else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($5, $1024 + -48 | 0); + L371 : do if (!(HEAP8[$4 >> 0] & 1)) { + HEAP8[$4 + 1 >> 0] = 0; + HEAP8[$4 >> 0] = 0; + } else { + $1038 = $4 + 8 | 0; + $1039 = HEAP32[$1038 >> 2] | 0; + HEAP8[$1039 >> 0] = 0; + $1040 = $4 + 4 | 0; + HEAP32[$1040 >> 2] = 0; + $1041 = HEAP32[$4 >> 2] | 0; + $phitmp$i$i$i$i$i$i32$i = ($1041 & -2) + -1 | 0; + $1043 = $1041 & 255; + do if (!($1043 & 1)) { + $1047 = $1041 >>> 1 & 127; + if (($1043 & 255) < 22) { + _memcpy($4 + 1 | 0, $1039 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0; + _free($1039); + $$ph520524 = $1047; + break; + } + $1050 = $1047 + 16 & 240; + $phitmp$i2$i$i$i$i$i35$i = $1050 + -1 | 0; + if (($phitmp$i2$i$i$i$i$i35$i | 0) == ($phitmp$i$i$i$i$i$i32$i | 0)) break L371; + $1053 = _malloc($1050) | 0; + if ($phitmp$i2$i$i$i$i$i35$i >>> 0 <= $phitmp$i$i$i$i$i$i32$i >>> 0 & ($1053 | 0) == 0) break L371; + _memcpy($1053 | 0, $4 + 1 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0; + HEAP32[$4 >> 2] = $1050 | 1; + HEAP32[$1040 >> 2] = $1047; + HEAP32[$1038 >> 2] = $1053; + break L371; + } else { + HEAP8[$4 + 1 >> 0] = 0; + _free($1039); + $$ph520524 = 0; + } while (0); + HEAP8[$4 >> 0] = $$ph520524 << 1; + } while (0); + HEAP32[$4 >> 2] = HEAP32[$5 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2]; + HEAP32[$5 >> 2] = 0; + HEAP32[$5 + 4 >> 2] = 0; + HEAP32[$5 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + $1069 = HEAP32[$$pre$phi511Z2D >> 2] | 0; + $1070 = $1069 + -24 | 0; + $1072 = $1069; + do { + $1071 = $1072 + -24 | 0; + HEAP32[$$pre$phi511Z2D >> 2] = $1071; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1071); + $1072 = HEAP32[$$pre$phi511Z2D >> 2] | 0; + } while (($1072 | 0) != ($1070 | 0)); + label = 300; + } else label = 300; + if ((label | 0) == 300) { + HEAP32[$6 >> 2] = 0; + HEAP32[$6 + 4 >> 2] = 0; + HEAP32[$6 + 8 >> 2] = 0; + if ($parsed_gs$0$off0$i) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($6, 12902, 2); + if ($946) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 14003) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 12726) | 0; + if ($has_expr_list$0$off0$i$lcssa) { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($8, 12714, $4); + $1076 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 14007) | 0; + HEAP32[$7 >> 2] = HEAP32[$1076 >> 2]; + HEAP32[$7 + 4 >> 2] = HEAP32[$1076 + 4 >> 2]; + HEAP32[$7 + 8 >> 2] = HEAP32[$1076 + 8 >> 2]; + HEAP32[$1076 >> 2] = 0; + HEAP32[$1076 + 4 >> 2] = 0; + HEAP32[$1076 + 8 >> 2] = 0; + $1079 = HEAP8[$7 >> 0] | 0; + $1081 = ($1079 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1081 ? $7 + 1 | 0 : HEAP32[$7 + 8 >> 2] | 0, $1081 ? ($1079 & 255) >>> 1 : HEAP32[$7 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8); + } + $1091 = HEAP8[$3 >> 0] | 0; + $1093 = ($1091 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1093 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $1093 ? ($1091 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0; + if ($has_init$0$off0$i513) { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($10, 12616, $1); + $1103 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($10, 12619) | 0; + HEAP32[$9 >> 2] = HEAP32[$1103 >> 2]; + HEAP32[$9 + 4 >> 2] = HEAP32[$1103 + 4 >> 2]; + HEAP32[$9 + 8 >> 2] = HEAP32[$1103 + 8 >> 2]; + HEAP32[$1103 >> 2] = 0; + HEAP32[$1103 + 4 >> 2] = 0; + HEAP32[$1103 + 8 >> 2] = 0; + $1106 = HEAP8[$9 >> 0] | 0; + $1108 = ($1106 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1108 ? $9 + 1 | 0 : HEAP32[$9 + 8 >> 2] | 0, $1108 ? ($1106 & 255) >>> 1 : HEAP32[$9 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10); + }; + HEAP32[$12 >> 2] = HEAP32[$6 >> 2]; + HEAP32[$12 + 4 >> 2] = HEAP32[$6 + 4 >> 2]; + HEAP32[$12 + 8 >> 2] = HEAP32[$6 + 8 >> 2]; + HEAP32[$6 >> 2] = 0; + HEAP32[$6 + 4 >> 2] = 0; + HEAP32[$6 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($11, $12); + $1120 = HEAP32[$$pre$phi511Z2D >> 2] | 0; + $1122 = HEAP32[$db + 8 >> 2] | 0; + if ($1120 >>> 0 < $1122 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1120, $11); + HEAP32[$$pre$phi511Z2D >> 2] = (HEAP32[$$pre$phi511Z2D >> 2] | 0) + 24; + } else { + $1129 = HEAP32[$$pre$phiZ2D >> 2] | 0; + $1130 = $1120 - $1129 | 0; + $1131 = ($1130 | 0) / 24 | 0; + $1132 = $1131 + 1 | 0; + if (($1130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1136 = ($1122 - $1129 | 0) / 24 | 0; + if ($1136 >>> 0 < 1073741823) { + $1138 = $1136 << 1; + $$0$i$i$i$i299 = $1138 >>> 0 < $1132 >>> 0 ? $1132 : $1138; + } else $$0$i$i$i$i299 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i299, $1131, $db + 12 | 0); + $1141 = $0 + 8 | 0; + $1142 = HEAP32[$1141 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1142, $11); + HEAP32[$1141 >> 2] = $1142 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + $$019$i = $t$3$i512 + 1 | 0; + $$2$i302 = 1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + if ($$2$i302) { + $$221$i = $$019$i; + label = 319; + break; + } else { + $$9$i = $first; + break; + } + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + $$9$i = $first; + } + } + } else { + $$221$i = $first; + label = 319; + } + } else { + $$221$i = $first; + label = 319; + } while (0); + if ((label | 0) == 319) $$9$i = $$221$i; + $$0 = $$9$i; + break L1; + break; + } + case 101: + { + $1145 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($54, 14010, 2); + $1146 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1145, $last, $54, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($54); + $$0 = ($1146 | 0) == ($1145 | 0) ? $first : $1146; + break L1; + break; + } + case 103: + { + $1148 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($55, 13988, 1); + $1149 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1148, $last, $55, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($55); + $$0 = ($1149 | 0) == ($1148 | 0) ? $first : $1149; + break L1; + break; + } + case 116: + { + $1151 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($56, 14013, 1); + $1152 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1151, $last, $56, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($56); + $$0 = ($1152 | 0) == ($1151 | 0) ? $first : $1152; + break L1; + break; + } + case 120: + { + $1154 = $first + 2 | 0; + $1155 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1154, $last, $db) | 0; + if (($1155 | 0) == ($1154 | 0)) $$03$i265 = $1154; else { + $1159 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1159 | 0)) $$03$i265 = $1154; else { + $1161 = $1159 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1161); + $1162 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14015) | 0; + HEAP32[$1 >> 2] = HEAP32[$1162 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1162 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1162 + 8 >> 2]; + HEAP32[$1162 >> 2] = 0; + HEAP32[$1162 + 4 >> 2] = 0; + HEAP32[$1162 + 8 >> 2] = 0; + $1165 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$1165 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$1165 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$1165 + 8 >> 2]; + HEAP32[$1165 >> 2] = 0; + HEAP32[$1165 + 4 >> 2] = 0; + HEAP32[$1165 + 8 >> 2] = 0; + do if (!(HEAP8[$1161 >> 0] & 1)) { + HEAP8[$1161 + 1 >> 0] = 0; + HEAP8[$1161 >> 0] = 0; + } else { + $1172 = $1159 + -16 | 0; + HEAP8[HEAP32[$1172 >> 2] >> 0] = 0; + $1174 = $1159 + -20 | 0; + HEAP32[$1174 >> 2] = 0; + $$pre$i$i$i$i = HEAP8[$1161 >> 0] | 0; + if (!($$pre$i$i$i$i & 1)) { + $1181 = $$pre$i$i$i$i; + $1190 = 10; + } else { + $1177 = HEAP32[$1161 >> 2] | 0; + $1181 = $1177 & 255; + $1190 = ($1177 & -2) + -1 | 0; + } + if (!($1181 & 1)) { + $1184 = ($1181 & 255) >>> 1; + if (($1181 & 255) < 22) { + $1189 = 10; + $1209 = $1184; + $1751 = 1; + } else { + $1189 = ($1184 + 16 & 240) + -1 | 0; + $1209 = $1184; + $1751 = 1; + } + } else { + $1189 = 10; + $1209 = 0; + $1751 = 0; + } + if (($1189 | 0) != ($1190 | 0)) { + if (($1189 | 0) == 10) { + $1196 = $1161 + 1 | 0; + $1197 = HEAP32[$1172 >> 2] | 0; + if ($1751) { + _memcpy($1196 | 0, $1197 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0; + _free($1197); + } else { + HEAP8[$1196 >> 0] = HEAP8[$1197 >> 0] | 0; + _free($1197); + } + HEAP8[$1161 >> 0] = $1209 << 1; + break; + } + $1193 = $1189 + 1 | 0; + $1194 = _malloc($1193) | 0; + if (!($1189 >>> 0 <= $1190 >>> 0 & ($1194 | 0) == 0)) { + if ($1751) _memcpy($1194 | 0, $1161 + 1 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0; else { + $1206 = HEAP32[$1172 >> 2] | 0; + HEAP8[$1194 >> 0] = HEAP8[$1206 >> 0] | 0; + _free($1206); + } + HEAP32[$1161 >> 2] = $1193 | 1; + HEAP32[$1174 >> 2] = $1209; + HEAP32[$1172 >> 2] = $1194; + } + } + } while (0); + HEAP32[$1161 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$1161 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$1161 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$03$i265 = $1155; + } + } + $$0 = ($$03$i265 | 0) == ($1154 | 0) ? $first : $$03$i265; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 111: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 110: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 111: + { + $1219 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($57, 14026, 2); + $1220 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1219, $last, $57, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($57); + $$0 = ($1220 | 0) == ($1219 | 0) ? $first : $1220; + break L1; + break; + } + case 114: + { + $1222 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($58, 14029, 1); + $1223 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1222, $last, $58, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($58); + $$0 = ($1223 | 0) == ($1222 | 0) ? $first : $1223; + break L1; + break; + } + case 82: + { + $1225 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($59, 14031, 2); + $1226 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1225, $last, $59, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($59); + $$0 = ($1226 | 0) == ($1225 | 0) ? $first : $1226; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 112: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 109: + { + $1231 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($60, 14034, 3); + $1232 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1231, $last, $60, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($60); + $$0 = ($1232 | 0) == ($1231 | 0) ? $first : $1232; + break L1; + break; + } + case 108: + { + $1234 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($61, 14038, 1); + $1235 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1234, $last, $61, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($61); + $$0 = ($1235 | 0) == ($1234 | 0) ? $first : $1235; + break L1; + break; + } + case 76: + { + $1237 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($62, 14040, 2); + $1238 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1237, $last, $62, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($62); + $$0 = ($1238 | 0) == ($1237 | 0) ? $first : $1238; + break L1; + break; + } + case 112: + { + $1240 = $first + 2 | 0; + if (($1240 | 0) != ($last | 0)) if ((HEAP8[$1240 >> 0] | 0) == 95) { + $1244 = $first + 3 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($63, 14043, 2); + $1245 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1244, $last, $63, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($63); + $$0 = ($1245 | 0) == ($1244 | 0) ? $first : $1245; + break L1; + } + $1247 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1240, $last, $db) | 0; + if (($1247 | 0) == ($1240 | 0)) { + $$0 = $first; + break L1; + } + $1251 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1251 | 0)) { + $$0 = $first; + break L1; + } + $1253 = $1251 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($67, $1253); + $1254 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($67, 0, 12714) | 0; + HEAP32[$66 >> 2] = HEAP32[$1254 >> 2]; + HEAP32[$66 + 4 >> 2] = HEAP32[$1254 + 4 >> 2]; + HEAP32[$66 + 8 >> 2] = HEAP32[$1254 + 8 >> 2]; + HEAP32[$1254 >> 2] = 0; + HEAP32[$1254 + 4 >> 2] = 0; + HEAP32[$1254 + 8 >> 2] = 0; + $1257 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($66, 14046) | 0; + HEAP32[$65 >> 2] = HEAP32[$1257 >> 2]; + HEAP32[$65 + 4 >> 2] = HEAP32[$1257 + 4 >> 2]; + HEAP32[$65 + 8 >> 2] = HEAP32[$1257 + 8 >> 2]; + HEAP32[$1257 >> 2] = 0; + HEAP32[$1257 + 4 >> 2] = 0; + HEAP32[$1257 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($64, $65); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1253, $64); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($64); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($65); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($66); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($67); + $$0 = $1247; + break L1; + break; + } + case 115: + { + $1260 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($68, 14038, 1); + $1261 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1260, $last, $68, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($68); + $$0 = ($1261 | 0) == ($1260 | 0) ? $first : $1261; + break L1; + break; + } + case 116: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 112) if ((HEAP8[$first + 1 >> 0] | 0) == 116) { + $1269 = $first + 2 | 0; + $1270 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1269, $last, $db) | 0; + if (($1270 | 0) == ($1269 | 0)) $$0$i254 = $first; else { + $1272 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1270, $last, $db) | 0; + if (($1272 | 0) == ($1270 | 0)) $$0$i254 = $first; else { + $1274 = $db + 4 | 0; + $1275 = HEAP32[$1274 >> 2] | 0; + if ((($1275 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i254 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1275 + -24 | 0); + $1283 = HEAP32[$1274 >> 2] | 0; + $1284 = $1283 + -24 | 0; + $1286 = $1283; + do { + $1285 = $1286 + -24 | 0; + HEAP32[$1274 >> 2] = $1285; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1285); + $1286 = HEAP32[$1274 >> 2] | 0; + } while (($1286 | 0) != ($1284 | 0)); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1283 + -48 | 0, 14050) | 0; + $1291 = HEAP8[$0 >> 0] | 0; + $1293 = ($1291 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$1274 >> 2] | 0) + -24 | 0, $1293 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1293 ? ($1291 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$0$i254 = $1272; + } + } + } + } else $$0$i254 = $first; else $$0$i254 = $first; else $$0$i254 = $first; + $$0 = $$0$i254; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 113: + { + if ((HEAP8[$t$0 + 1 >> 0] | 0) != 117) { + $$0 = $first; + break L1; + } + $1306 = $first + 2 | 0; + $1307 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1306, $last, $db) | 0; + if (($1307 | 0) == ($1306 | 0)) { + $$0 = $first; + break L1; + } + $1309 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1307, $last, $db) | 0; + if (($1309 | 0) == ($1307 | 0)) { + $1383 = $db + 4 | 0; + $1384 = HEAP32[$1383 >> 2] | 0; + $1385 = $1384 + -24 | 0; + $1387 = $1384; + while (1) { + $1386 = $1387 + -24 | 0; + HEAP32[$1383 >> 2] = $1386; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1386); + $1387 = HEAP32[$1383 >> 2] | 0; + if (($1387 | 0) == ($1385 | 0)) { + $$0 = $first; + break L1; + } + } + } + $1311 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1309, $last, $db) | 0; + $1313 = $db + 4 | 0; + $1314 = HEAP32[$1313 >> 2] | 0; + if (($1311 | 0) == ($1309 | 0)) { + $1375 = $1314 + -24 | 0; + $1377 = $1314; + do { + $1376 = $1377 + -24 | 0; + HEAP32[$1313 >> 2] = $1376; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1376); + $1377 = HEAP32[$1313 >> 2] | 0; + } while (($1377 | 0) != ($1375 | 0)); + $1379 = $1314 + -48 | 0; + $1381 = $1375; + while (1) { + $1380 = $1381 + -24 | 0; + HEAP32[$1313 >> 2] = $1380; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1380); + $1381 = HEAP32[$1313 >> 2] | 0; + if (($1381 | 0) == ($1379 | 0)) { + $$0 = $first; + break L1; + } + } + } + if ((($1314 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 3) { + $$0 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op3, $1314 + -24 | 0); + $1322 = HEAP32[$1313 >> 2] | 0; + $1323 = $1322 + -24 | 0; + $1325 = $1322; + do { + $1324 = $1325 + -24 | 0; + HEAP32[$1313 >> 2] = $1324; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1324); + $1325 = HEAP32[$1313 >> 2] | 0; + } while (($1325 | 0) != ($1323 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op27, $1322 + -48 | 0); + $1328 = HEAP32[$1313 >> 2] | 0; + $1329 = $1328 + -24 | 0; + $1331 = $1328; + do { + $1330 = $1331 + -24 | 0; + HEAP32[$1313 >> 2] = $1330; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1330); + $1331 = HEAP32[$1313 >> 2] | 0; + } while (($1331 | 0) != ($1329 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op18, $1328 + -48 | 0); + $1335 = (HEAP32[$1313 >> 2] | 0) + -24 | 0; + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($75, 12714, $op18); + $1336 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($75, 14053) | 0; + HEAP32[$74 >> 2] = HEAP32[$1336 >> 2]; + HEAP32[$74 + 4 >> 2] = HEAP32[$1336 + 4 >> 2]; + HEAP32[$74 + 8 >> 2] = HEAP32[$1336 + 8 >> 2]; + HEAP32[$1336 >> 2] = 0; + HEAP32[$1336 + 4 >> 2] = 0; + HEAP32[$1336 + 8 >> 2] = 0; + $1339 = HEAP8[$op27 >> 0] | 0; + $1341 = ($1339 & 1) == 0; + $1351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($74, $1341 ? $op27 + 1 | 0 : HEAP32[$op27 + 8 >> 2] | 0, $1341 ? ($1339 & 255) >>> 1 : HEAP32[$op27 + 4 >> 2] | 0) | 0; + HEAP32[$73 >> 2] = HEAP32[$1351 >> 2]; + HEAP32[$73 + 4 >> 2] = HEAP32[$1351 + 4 >> 2]; + HEAP32[$73 + 8 >> 2] = HEAP32[$1351 + 8 >> 2]; + HEAP32[$1351 >> 2] = 0; + HEAP32[$1351 + 4 >> 2] = 0; + HEAP32[$1351 + 8 >> 2] = 0; + $1354 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($73, 14059) | 0; + HEAP32[$72 >> 2] = HEAP32[$1354 >> 2]; + HEAP32[$72 + 4 >> 2] = HEAP32[$1354 + 4 >> 2]; + HEAP32[$72 + 8 >> 2] = HEAP32[$1354 + 8 >> 2]; + HEAP32[$1354 >> 2] = 0; + HEAP32[$1354 + 4 >> 2] = 0; + HEAP32[$1354 + 8 >> 2] = 0; + $1357 = HEAP8[$op3 >> 0] | 0; + $1359 = ($1357 & 1) == 0; + $1369 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($72, $1359 ? $op3 + 1 | 0 : HEAP32[$op3 + 8 >> 2] | 0, $1359 ? ($1357 & 255) >>> 1 : HEAP32[$op3 + 4 >> 2] | 0) | 0; + HEAP32[$71 >> 2] = HEAP32[$1369 >> 2]; + HEAP32[$71 + 4 >> 2] = HEAP32[$1369 + 4 >> 2]; + HEAP32[$71 + 8 >> 2] = HEAP32[$1369 + 8 >> 2]; + HEAP32[$1369 >> 2] = 0; + HEAP32[$1369 + 4 >> 2] = 0; + HEAP32[$1369 + 8 >> 2] = 0; + $1372 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($71, 12619) | 0; + HEAP32[$70 >> 2] = HEAP32[$1372 >> 2]; + HEAP32[$70 + 4 >> 2] = HEAP32[$1372 + 4 >> 2]; + HEAP32[$70 + 8 >> 2] = HEAP32[$1372 + 8 >> 2]; + HEAP32[$1372 >> 2] = 0; + HEAP32[$1372 + 4 >> 2] = 0; + HEAP32[$1372 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($69, $70); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1335, $69); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($70); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($71); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($72); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($73); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($74); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($75); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op18); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op27); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op3); + $$0 = $1311; + break L1; + break; + } + case 114: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 99: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 114) if ((HEAP8[$first + 1 >> 0] | 0) == 99) { + $1398 = $first + 2 | 0; + $1399 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1398, $last, $db) | 0; + if (($1399 | 0) == ($1398 | 0)) $$06$i248 = $first; else { + $1401 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1399, $last, $db) | 0; + if (($1401 | 0) == ($1399 | 0)) $$06$i248 = $first; else { + $1403 = $db + 4 | 0; + $1404 = HEAP32[$1403 >> 2] | 0; + if ((($1404 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i248 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1404 + -24 | 0); + $1412 = HEAP32[$1403 >> 2] | 0; + $1413 = $1412 + -24 | 0; + $1415 = $1412; + do { + $1414 = $1415 + -24 | 0; + HEAP32[$1403 >> 2] = $1414; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1414); + $1415 = HEAP32[$1403 >> 2] | 0; + } while (($1415 | 0) != ($1413 | 0)); + $1417 = $1412 + -48 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1417); + $1418 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14065) | 0; + HEAP32[$5 >> 2] = HEAP32[$1418 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$1418 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$1418 + 8 >> 2]; + HEAP32[$1418 >> 2] = 0; + HEAP32[$1418 + 4 >> 2] = 0; + HEAP32[$1418 + 8 >> 2] = 0; + $1421 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0; + HEAP32[$4 >> 2] = HEAP32[$1421 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$1421 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$1421 + 8 >> 2]; + HEAP32[$1421 >> 2] = 0; + HEAP32[$1421 + 4 >> 2] = 0; + HEAP32[$1421 + 8 >> 2] = 0; + $1424 = HEAP8[$0 >> 0] | 0; + $1426 = ($1424 & 1) == 0; + $1436 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1426 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1426 ? ($1424 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + HEAP32[$3 >> 2] = HEAP32[$1436 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$1436 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$1436 + 8 >> 2]; + HEAP32[$1436 >> 2] = 0; + HEAP32[$1436 + 4 >> 2] = 0; + HEAP32[$1436 + 8 >> 2] = 0; + $1439 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0; + HEAP32[$2 >> 2] = HEAP32[$1439 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1439 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1439 + 8 >> 2]; + HEAP32[$1439 >> 2] = 0; + HEAP32[$1439 + 4 >> 2] = 0; + HEAP32[$1439 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1417, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$06$i248 = $1401; + } + } + } + } else $$06$i248 = $first; else $$06$i248 = $first; else $$06$i248 = $first; + $$0 = $$06$i248; + break L1; + break; + } + case 109: + { + $1442 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($76, 14083, 1); + $1443 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1442, $last, $76, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($76); + $$0 = ($1443 | 0) == ($1442 | 0) ? $first : $1443; + break L1; + break; + } + case 77: + { + $1445 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($77, 14085, 2); + $1446 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1445, $last, $77, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($77); + $$0 = ($1446 | 0) == ($1445 | 0) ? $first : $1446; + break L1; + break; + } + case 115: + { + $1448 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($78, 14088, 2); + $1449 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1448, $last, $78, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($78); + $$0 = ($1449 | 0) == ($1448 | 0) ? $first : $1449; + break L1; + break; + } + case 83: + { + $1451 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($79, 14091, 3); + $1452 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1451, $last, $79, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($79); + STACKTOP = sp; + return (($1452 | 0) == ($1451 | 0) ? $first : $1452) | 0; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 115: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 99: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 99) { + $1463 = $first + 2 | 0; + $1464 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1463, $last, $db) | 0; + if (($1464 | 0) == ($1463 | 0)) $$06$i = $first; else { + $1466 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1464, $last, $db) | 0; + if (($1466 | 0) == ($1464 | 0)) $$06$i = $first; else { + $1468 = $db + 4 | 0; + $1469 = HEAP32[$1468 >> 2] | 0; + if ((($1469 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1469 + -24 | 0); + $1477 = HEAP32[$1468 >> 2] | 0; + $1478 = $1477 + -24 | 0; + $1480 = $1477; + do { + $1479 = $1480 + -24 | 0; + HEAP32[$1468 >> 2] = $1479; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1479); + $1480 = HEAP32[$1468 >> 2] | 0; + } while (($1480 | 0) != ($1478 | 0)); + $1482 = $1477 + -48 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1482); + $1483 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14095) | 0; + HEAP32[$5 >> 2] = HEAP32[$1483 >> 2]; + HEAP32[$5 + 4 >> 2] = HEAP32[$1483 + 4 >> 2]; + HEAP32[$5 + 8 >> 2] = HEAP32[$1483 + 8 >> 2]; + HEAP32[$1483 >> 2] = 0; + HEAP32[$1483 + 4 >> 2] = 0; + HEAP32[$1483 + 8 >> 2] = 0; + $1486 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0; + HEAP32[$4 >> 2] = HEAP32[$1486 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$1486 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$1486 + 8 >> 2]; + HEAP32[$1486 >> 2] = 0; + HEAP32[$1486 + 4 >> 2] = 0; + HEAP32[$1486 + 8 >> 2] = 0; + $1489 = HEAP8[$0 >> 0] | 0; + $1491 = ($1489 & 1) == 0; + $1501 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1491 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1491 ? ($1489 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + HEAP32[$3 >> 2] = HEAP32[$1501 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$1501 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$1501 + 8 >> 2]; + HEAP32[$1501 >> 2] = 0; + HEAP32[$1501 + 4 >> 2] = 0; + HEAP32[$1501 + 8 >> 2] = 0; + $1504 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0; + HEAP32[$2 >> 2] = HEAP32[$1504 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1504 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1504 + 8 >> 2]; + HEAP32[$1504 >> 2] = 0; + HEAP32[$1504 + 4 >> 2] = 0; + HEAP32[$1504 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1482, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $$06$i = $1466; + } + } + } + } else $$06$i = $first; else $$06$i = $first; else $$06$i = $first; + $$0 = $$06$i; + break L1; + break; + } + case 112: + { + if (($83 | 0) <= 2) { + $$0 = $first; + break L1; + } + if ((HEAP8[$first >> 0] | 0) != 115) { + $$0 = $first; + break L1; + } + if ((HEAP8[$first + 1 >> 0] | 0) != 112) { + $$0 = $first; + break L1; + } + $1513 = $first + 2 | 0; + $1514 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1513, $last, $db) | 0; + $$0 = ($1514 | 0) == ($1513 | 0) ? $first : $1514; + break L1; + break; + } + case 114: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + case 116: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 116) { + $1523 = $first + 2 | 0; + $1524 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1523, $last, $db) | 0; + if (($1524 | 0) == ($1523 | 0)) $$03$i211 = $first; else { + $1528 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1528 | 0)) $$03$i211 = $first; else { + $1530 = $1528 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1530); + $1531 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14108) | 0; + HEAP32[$2 >> 2] = HEAP32[$1531 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1531 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1531 + 8 >> 2]; + HEAP32[$1531 >> 2] = 0; + HEAP32[$1531 + 4 >> 2] = 0; + HEAP32[$1531 + 8 >> 2] = 0; + $1534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$1534 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1534 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1534 + 8 >> 2]; + HEAP32[$1534 >> 2] = 0; + HEAP32[$1534 + 4 >> 2] = 0; + HEAP32[$1534 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1530, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$03$i211 = $1524; + } + } + } else $$03$i211 = $first; else $$03$i211 = $first; else $$03$i211 = $first; + $$0 = $$03$i211; + break L1; + break; + } + case 122: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 122) { + $1543 = $first + 2 | 0; + $1544 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1543, $last, $db) | 0; + if (($1544 | 0) == ($1543 | 0)) $$03$i200 = $first; else { + $1548 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1548 | 0)) $$03$i200 = $first; else { + $1550 = $1548 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1550); + $1551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14108) | 0; + HEAP32[$2 >> 2] = HEAP32[$1551 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1551 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1551 + 8 >> 2]; + HEAP32[$1551 >> 2] = 0; + HEAP32[$1551 + 4 >> 2] = 0; + HEAP32[$1551 + 8 >> 2] = 0; + $1554 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$1554 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1554 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1554 + 8 >> 2]; + HEAP32[$1554 >> 2] = 0; + HEAP32[$1554 + 4 >> 2] = 0; + HEAP32[$1554 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1550, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$03$i200 = $1544; + } + } + } else $$03$i200 = $first; else $$03$i200 = $first; else $$03$i200 = $first; + $$0 = $$03$i200; + break L1; + break; + } + case 90: + { + if (($81 - $t$0 | 0) <= 2) { + $$0 = $first; + break L1; + } + switch (HEAP8[$t$0 + 2 >> 0] | 0) { + case 84: + break; + case 102: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) { + $1662 = $first + 2 | 0; + if ((HEAP8[$1662 >> 0] | 0) == 102) { + $1665 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0; + if (($1665 | 0) == ($1662 | 0)) $$03$i174 = $first; else { + $1669 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1669 | 0)) $$03$i174 = $first; else { + $1671 = $1669 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1671); + $1672 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14117) | 0; + HEAP32[$2 >> 2] = HEAP32[$1672 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1672 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1672 + 8 >> 2]; + HEAP32[$1672 >> 2] = 0; + HEAP32[$1672 + 4 >> 2] = 0; + HEAP32[$1672 + 8 >> 2] = 0; + $1675 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$1675 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1675 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1675 + 8 >> 2]; + HEAP32[$1675 >> 2] = 0; + HEAP32[$1675 + 4 >> 2] = 0; + HEAP32[$1675 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1671, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$03$i174 = $1665; + } + } + } else $$03$i174 = $first; + } else $$03$i174 = $first; else $$03$i174 = $first; else $$03$i174 = $first; + $$0 = $$03$i174; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) { + $1569 = $first + 2 | 0; + if ((HEAP8[$1569 >> 0] | 0) == 84) { + $1572 = $db + 4 | 0; + $1578 = ((HEAP32[$1572 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $1579 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($1569, $last, $db) | 0; + $1581 = HEAP32[$db >> 2] | 0; + $1585 = ((HEAP32[$1572 >> 2] | 0) - $1581 | 0) / 24 | 0; + if (($1579 | 0) == ($1569 | 0)) $$03$i = $first; else { + HEAP8[$1 >> 0] = 20; + dest = $1 + 1 | 0; + src = 14117; + stop = dest + 10 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$1 + 11 >> 0] = 0; + if (($1578 | 0) != ($1585 | 0)) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1581 + ($1578 * 24 | 0) | 0); + $1591 = HEAP8[$2 >> 0] | 0; + $1593 = ($1591 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1593 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $1593 ? ($1591 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $1603 = $3 + 8 | 0; + $1604 = $3 + 1 | 0; + $1605 = $3 + 4 | 0; + $k$0$i621 = $1578 + 1 | 0; + if (($k$0$i621 | 0) != ($1585 | 0)) { + $k$0$i622 = $k$0$i621; + do { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0$i622 * 24 | 0) | 0); + $1609 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($4, 0, 12716) | 0; + HEAP32[$3 >> 2] = HEAP32[$1609 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$1609 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$1609 + 8 >> 2]; + HEAP32[$1609 >> 2] = 0; + HEAP32[$1609 + 4 >> 2] = 0; + HEAP32[$1609 + 8 >> 2] = 0; + $1612 = HEAP8[$3 >> 0] | 0; + $1614 = ($1612 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1614 ? $1604 : HEAP32[$1603 >> 2] | 0, $1614 ? ($1612 & 255) >>> 1 : HEAP32[$1605 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + $k$0$i622 = $k$0$i622 + 1 | 0; + } while (($k$0$i622 | 0) != ($1585 | 0)); + } + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + if (($1585 | 0) != ($1578 | 0)) { + $k1$0$i618 = $1585; + do { + $1623 = HEAP32[$1572 >> 2] | 0; + $1624 = $1623 + -24 | 0; + $1626 = $1623; + do { + $1625 = $1626 + -24 | 0; + HEAP32[$1572 >> 2] = $1625; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1625); + $1626 = HEAP32[$1572 >> 2] | 0; + } while (($1626 | 0) != ($1624 | 0)); + $k1$0$i618 = $k1$0$i618 + -1 | 0; + } while (($k1$0$i618 | 0) != ($1578 | 0)); + }; + HEAP32[$6 >> 2] = HEAP32[$1 >> 2]; + HEAP32[$6 + 4 >> 2] = HEAP32[$1 + 4 >> 2]; + HEAP32[$6 + 8 >> 2] = HEAP32[$1 + 8 >> 2]; + HEAP32[$1 >> 2] = 0; + HEAP32[$1 + 4 >> 2] = 0; + HEAP32[$1 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($5, $6); + $1632 = HEAP32[$1572 >> 2] | 0; + $1634 = HEAP32[$db + 8 >> 2] | 0; + if ($1632 >>> 0 < $1634 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1632, $5); + HEAP32[$1572 >> 2] = (HEAP32[$1572 >> 2] | 0) + 24; + } else { + $1641 = HEAP32[$db >> 2] | 0; + $1642 = $1632 - $1641 | 0; + $1643 = ($1642 | 0) / 24 | 0; + $1644 = $1643 + 1 | 0; + if (($1642 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1648 = ($1634 - $1641 | 0) / 24 | 0; + if ($1648 >>> 0 < 1073741823) { + $1650 = $1648 << 1; + $$0$i$i$i$i = $1650 >>> 0 < $1644 >>> 0 ? $1644 : $1650; + } else $$0$i$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i, $1643, $db + 12 | 0); + $1653 = $0 + 8 | 0; + $1654 = HEAP32[$1653 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1654, $5); + HEAP32[$1653 >> 2] = $1654 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + $$03$i = $1579; + } + } else $$03$i = $first; + } else $$03$i = $first; else $$03$i = $first; else $$03$i = $first; + $$0 = $$03$i; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 116: + { + switch (HEAP8[$t$0 + 1 >> 0] | 0) { + case 105: + case 101: + { + L600 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) { + $1685 = HEAP8[$first + 1 >> 0] | 0; + switch ($1685 << 24 >> 24) { + case 105: + case 101: + break; + default: + { + $$03$i189 = $first; + break L600; + } + } + $1687 = $first + 2 | 0; + if ($1685 << 24 >> 24 == 101) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0; else $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0; + if (($t$0$i | 0) == ($1687 | 0)) $$03$i189 = $first; else { + $1693 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1693 | 0)) $$03$i189 = $first; else { + $1695 = $1693 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1695); + $1696 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14128) | 0; + HEAP32[$2 >> 2] = HEAP32[$1696 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$1696 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$1696 + 8 >> 2]; + HEAP32[$1696 >> 2] = 0; + HEAP32[$1696 + 4 >> 2] = 0; + HEAP32[$1696 + 8 >> 2] = 0; + $1699 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$1699 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1699 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1699 + 8 >> 2]; + HEAP32[$1699 >> 2] = 0; + HEAP32[$1699 + 4 >> 2] = 0; + HEAP32[$1699 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1695, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$03$i189 = $t$0$i; + } + } + } else $$03$i189 = $first; else $$03$i189 = $first; while (0); + $$0 = $$03$i189; + break L1; + break; + } + case 114: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($80, 14136); + $1702 = $db + 4 | 0; + $1703 = HEAP32[$1702 >> 2] | 0; + $1705 = HEAP32[$db + 8 >> 2] | 0; + if ($1703 >>> 0 < $1705 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1703, $80); + HEAP32[$1702 >> 2] = (HEAP32[$1702 >> 2] | 0) + 24; + } else { + $1712 = HEAP32[$db >> 2] | 0; + $1713 = $1703 - $1712 | 0; + $1714 = ($1713 | 0) / 24 | 0; + $1715 = $1714 + 1 | 0; + if (($1713 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1719 = ($1705 - $1712 | 0) / 24 | 0; + if ($1719 >>> 0 < 1073741823) { + $1721 = $1719 << 1; + $$0$i$i$i = $1721 >>> 0 < $1715 >>> 0 ? $1715 : $1721; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $1714, $db + 12 | 0); + $1724 = $0 + 8 | 0; + $1725 = HEAP32[$1724 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1725, $80); + HEAP32[$1724 >> 2] = $1725 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($80); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 119: + { + if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) if ((HEAP8[$first + 1 >> 0] | 0) == 119) { + $1734 = $first + 2 | 0; + $1735 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1734, $last, $db) | 0; + if (($1735 | 0) == ($1734 | 0)) $$02$i = $first; else { + $1739 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1739 | 0)) $$02$i = $first; else { + $1741 = $1739 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1741); + $1742 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14142) | 0; + HEAP32[$1 >> 2] = HEAP32[$1742 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$1742 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$1742 + 8 >> 2]; + HEAP32[$1742 >> 2] = 0; + HEAP32[$1742 + 4 >> 2] = 0; + HEAP32[$1742 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1741, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$02$i = $1735; + } + } + } else $$02$i = $first; else $$02$i = $first; else $$02$i = $first; + $$0 = $$02$i; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 57: + case 56: + case 55: + case 54: + case 53: + case 52: + case 51: + case 50: + case 49: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } while (0); + } else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i100 = 0, $$0$i$i$i105 = 0, $$0$i$i$i110 = 0, $$0$i$i$i115 = 0, $$0$i$i$i120 = 0, $$0$i$i$i125 = 0, $$0$i$i$i130 = 0, $$0$i$i$i135 = 0, $$0$i$i$i140 = 0, $$0$i$i$i145 = 0, $$0$i$i$i15 = 0, $$0$i$i$i150 = 0, $$0$i$i$i155 = 0, $$0$i$i$i160 = 0, $$0$i$i$i165 = 0, $$0$i$i$i170 = 0, $$0$i$i$i175 = 0, $$0$i$i$i180 = 0, $$0$i$i$i185 = 0, $$0$i$i$i190 = 0, $$0$i$i$i195 = 0, $$0$i$i$i20 = 0, $$0$i$i$i200 = 0, $$0$i$i$i205 = 0, $$0$i$i$i210 = 0, $$0$i$i$i215 = 0, $$0$i$i$i220 = 0, $$0$i$i$i225 = 0, $$0$i$i$i25 = 0, $$0$i$i$i30 = 0, $$0$i$i$i35 = 0, $$0$i$i$i40 = 0, $$0$i$i$i45 = 0, $$0$i$i$i5 = 0, $$0$i$i$i50 = 0, $$0$i$i$i55 = 0, $$0$i$i$i60 = 0, $$0$i$i$i65 = 0, $$0$i$i$i70 = 0, $$0$i$i$i75 = 0, $$0$i$i$i80 = 0, $$0$i$i$i85 = 0, $$0$i$i$i90 = 0, $$0$i$i$i95 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1009 = 0, $1011 = 0, $1014 = 0, $1015 = 0, $1021 = 0, $1022 = 0, $1024 = 0, $103 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1038 = 0, $104 = 0, $1040 = 0, $1043 = 0, $1044 = 0, $1047 = 0, $1048 = 0, $1050 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $1060 = 0, $1064 = 0, $1066 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1073 = 0, $1074 = 0, $1076 = 0, $108 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1090 = 0, $1092 = 0, $1095 = 0, $1096 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1102 = 0, $1109 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1116 = 0, $1118 = 0, $1121 = 0, $1122 = 0, $1125 = 0, $1126 = 0, $1128 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1142 = 0, $1144 = 0, $1147 = 0, $1148 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1168 = 0, $117 = 0, $1170 = 0, $1173 = 0, $1174 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1183 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1197 = 0, $1199 = 0, $12 = 0, $120 = 0, $1202 = 0, $1203 = 0, $1209 = 0, $1210 = 0, $1212 = 0, $1219 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1226 = 0, $1228 = 0, $1231 = 0, $1232 = 0, $1235 = 0, $1236 = 0, $1238 = 0, $124 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1252 = 0, $1254 = 0, $1257 = 0, $1258 = 0, $126 = 0, $1261 = 0, $1262 = 0, $1264 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1278 = 0, $1280 = 0, $1283 = 0, $1284 = 0, $1287 = 0, $1288 = 0, $129 = 0, $1290 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1304 = 0, $1306 = 0, $1309 = 0, $1310 = 0, $1316 = 0, $1317 = 0, $1321 = 0, $133 = 0, $134 = 0, $136 = 0, $14 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $15 = 0, $150 = 0, $152 = 0, $155 = 0, $156 = 0, $16 = 0, $162 = 0, $163 = 0, $165 = 0, $17 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $179 = 0, $18 = 0, $181 = 0, $184 = 0, $185 = 0, $188 = 0, $189 = 0, $19 = 0, $191 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $211 = 0, $214 = 0, $215 = 0, $217 = 0, $22 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $23 = 0, $231 = 0, $233 = 0, $236 = 0, $237 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $247 = 0, $25 = 0, $254 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $27 = 0, $271 = 0, $273 = 0, $276 = 0, $277 = 0, $28 = 0, $280 = 0, $281 = 0, $283 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $297 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $330 = 0, $332 = 0, $335 = 0, $336 = 0, $339 = 0, $34 = 0, $340 = 0, $342 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $356 = 0, $358 = 0, $36 = 0, $361 = 0, $362 = 0, $365 = 0, $366 = 0, $368 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $38 = 0, $382 = 0, $384 = 0, $387 = 0, $388 = 0, $39 = 0, $394 = 0, $395 = 0, $397 = 0, $4 = 0, $40 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $41 = 0, $411 = 0, $413 = 0, $416 = 0, $417 = 0, $42 = 0, $420 = 0, $421 = 0, $423 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $437 = 0, $439 = 0, $44 = 0, $442 = 0, $443 = 0, $446 = 0, $447 = 0, $449 = 0, $45 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $463 = 0, $465 = 0, $468 = 0, $469 = 0, $475 = 0, $476 = 0, $478 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $492 = 0, $494 = 0, $497 = 0, $498 = 0, $5 = 0, $501 = 0, $502 = 0, $504 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $518 = 0, $520 = 0, $523 = 0, $524 = 0, $530 = 0, $531 = 0, $533 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $547 = 0, $549 = 0, $55 = 0, $552 = 0, $553 = 0, $559 = 0, $56 = 0, $560 = 0, $562 = 0, $569 = 0, $570 = 0, $571 = 0, $572 = 0, $576 = 0, $578 = 0, $58 = 0, $581 = 0, $582 = 0, $585 = 0, $586 = 0, $590 = 0, $593 = 0, $594 = 0, $596 = 0, $6 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $610 = 0, $612 = 0, $615 = 0, $616 = 0, $619 = 0, $620 = 0, $622 = 0, $629 = 0, $630 = 0, $631 = 0, $632 = 0, $636 = 0, $638 = 0, $641 = 0, $642 = 0, $645 = 0, $646 = 0, $648 = 0, $65 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $66 = 0, $662 = 0, $664 = 0, $667 = 0, $668 = 0, $67 = 0, $674 = 0, $675 = 0, $677 = 0, $68 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $691 = 0, $693 = 0, $696 = 0, $697 = 0, $7 = 0, $700 = 0, $701 = 0, $703 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $717 = 0, $719 = 0, $72 = 0, $722 = 0, $723 = 0, $726 = 0, $727 = 0, $729 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $743 = 0, $745 = 0, $748 = 0, $749 = 0, $752 = 0, $753 = 0, $755 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $769 = 0, $77 = 0, $771 = 0, $774 = 0, $775 = 0, $778 = 0, $779 = 0, $78 = 0, $781 = 0, $788 = 0, $789 = 0, $790 = 0, $791 = 0, $795 = 0, $797 = 0, $8 = 0, $800 = 0, $801 = 0, $807 = 0, $808 = 0, $81 = 0, $810 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $824 = 0, $826 = 0, $829 = 0, $830 = 0, $833 = 0, $834 = 0, $836 = 0, $84 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $850 = 0, $852 = 0, $855 = 0, $856 = 0, $859 = 0, $860 = 0, $862 = 0, $869 = 0, $870 = 0, $871 = 0, $872 = 0, $876 = 0, $878 = 0, $881 = 0, $882 = 0, $885 = 0, $886 = 0, $888 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $9 = 0, $902 = 0, $904 = 0, $907 = 0, $908 = 0, $91 = 0, $911 = 0, $912 = 0, $914 = 0, $92 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $928 = 0, $93 = 0, $930 = 0, $933 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $957 = 0, $959 = 0, $962 = 0, $963 = 0, $966 = 0, $967 = 0, $969 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $983 = 0, $985 = 0, $988 = 0, $989 = 0, $992 = 0, $993 = 0, $995 = 0, $__v$i$i224 = 0, dest = 0, sp = 0, src = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 1136 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i224 = sp + 1104 | 0; + $0 = sp + 1080 | 0; + $1 = sp + 1056 | 0; + $2 = sp + 1032 | 0; + $3 = sp + 1008 | 0; + $4 = sp + 984 | 0; + $5 = sp + 960 | 0; + $6 = sp + 936 | 0; + $7 = sp + 912 | 0; + $8 = sp + 888 | 0; + $9 = sp + 864 | 0; + $10 = sp + 840 | 0; + $11 = sp + 816 | 0; + $12 = sp + 792 | 0; + $13 = sp + 768 | 0; + $14 = sp + 744 | 0; + $15 = sp + 720 | 0; + $16 = sp + 696 | 0; + $17 = sp + 672 | 0; + $18 = sp + 648 | 0; + $19 = sp + 624 | 0; + $20 = sp + 600 | 0; + $21 = sp + 576 | 0; + $22 = sp + 552 | 0; + $23 = sp + 528 | 0; + $24 = sp + 504 | 0; + $25 = sp + 480 | 0; + $26 = sp + 456 | 0; + $27 = sp + 432 | 0; + $28 = sp + 408 | 0; + $29 = sp + 384 | 0; + $30 = sp + 360 | 0; + $31 = sp + 336 | 0; + $32 = sp + 312 | 0; + $33 = sp + 288 | 0; + $34 = sp + 264 | 0; + $35 = sp + 240 | 0; + $36 = sp + 216 | 0; + $37 = sp + 192 | 0; + $38 = sp + 168 | 0; + $39 = sp + 144 | 0; + $40 = sp + 120 | 0; + $41 = sp + 96 | 0; + $42 = sp + 72 | 0; + $43 = sp + 48 | 0; + $44 = sp + 24 | 0; + $45 = sp; + L1 : do if (($last - $first | 0) > 1) do switch (HEAP8[$first >> 0] | 0) { + case 97: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($0, 12949); + $55 = $db + 4 | 0; + $56 = HEAP32[$55 >> 2] | 0; + $58 = HEAP32[$db + 8 >> 2] | 0; + if ($56 >>> 0 < $58 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($56, $0); + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 24; + } else { + $65 = HEAP32[$db >> 2] | 0; + $66 = $56 - $65 | 0; + $67 = ($66 | 0) / 24 | 0; + $68 = $67 + 1 | 0; + if (($66 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $72 = ($58 - $65 | 0) / 24 | 0; + if ($72 >>> 0 < 1073741823) { + $74 = $72 << 1; + $$0$i$i$i = $74 >>> 0 < $68 >>> 0 ? $68 : $74; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i, $67, $db + 12 | 0); + $77 = $__v$i$i224 + 8 | 0; + $78 = HEAP32[$77 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($78, $0); + HEAP32[$77 >> 2] = $78 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 110: + case 100: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($1, 12960); + $81 = $db + 4 | 0; + $82 = HEAP32[$81 >> 2] | 0; + $84 = HEAP32[$db + 8 >> 2] | 0; + if ($82 >>> 0 < $84 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1); + HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 24; + } else { + $91 = HEAP32[$db >> 2] | 0; + $92 = $82 - $91 | 0; + $93 = ($92 | 0) / 24 | 0; + $94 = $93 + 1 | 0; + if (($92 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $98 = ($84 - $91 | 0) / 24 | 0; + if ($98 >>> 0 < 1073741823) { + $100 = $98 << 1; + $$0$i$i$i5 = $100 >>> 0 < $94 >>> 0 ? $94 : $100; + } else $$0$i$i$i5 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i5, $93, $db + 12 | 0); + $103 = $__v$i$i224 + 8 | 0; + $104 = HEAP32[$103 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($104, $1); + HEAP32[$103 >> 2] = $104 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 78: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($2, 12970); + $107 = $db + 4 | 0; + $108 = HEAP32[$107 >> 2] | 0; + $110 = HEAP32[$db + 8 >> 2] | 0; + if ($108 >>> 0 < $110 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($108, $2); + HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + 24; + } else { + $117 = HEAP32[$db >> 2] | 0; + $118 = $108 - $117 | 0; + $119 = ($118 | 0) / 24 | 0; + $120 = $119 + 1 | 0; + if (($118 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $124 = ($110 - $117 | 0) / 24 | 0; + if ($124 >>> 0 < 1073741823) { + $126 = $124 << 1; + $$0$i$i$i10 = $126 >>> 0 < $120 >>> 0 ? $120 : $126; + } else $$0$i$i$i10 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i10, $119, $db + 12 | 0); + $129 = $__v$i$i224 + 8 | 0; + $130 = HEAP32[$129 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($130, $2); + HEAP32[$129 >> 2] = $130 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 83: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($3, 12981); + $133 = $db + 4 | 0; + $134 = HEAP32[$133 >> 2] | 0; + $136 = HEAP32[$db + 8 >> 2] | 0; + if ($134 >>> 0 < $136 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($134, $3); + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 24; + } else { + $143 = HEAP32[$db >> 2] | 0; + $144 = $134 - $143 | 0; + $145 = ($144 | 0) / 24 | 0; + $146 = $145 + 1 | 0; + if (($144 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $150 = ($136 - $143 | 0) / 24 | 0; + if ($150 >>> 0 < 1073741823) { + $152 = $150 << 1; + $$0$i$i$i15 = $152 >>> 0 < $146 >>> 0 ? $146 : $152; + } else $$0$i$i$i15 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i15, $145, $db + 12 | 0); + $155 = $__v$i$i224 + 8 | 0; + $156 = HEAP32[$155 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($156, $3); + HEAP32[$155 >> 2] = $156 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 99: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 108: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($4, 12991); + $162 = $db + 4 | 0; + $163 = HEAP32[$162 >> 2] | 0; + $165 = HEAP32[$db + 8 >> 2] | 0; + if ($163 >>> 0 < $165 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $4); + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 24; + } else { + $172 = HEAP32[$db >> 2] | 0; + $173 = $163 - $172 | 0; + $174 = ($173 | 0) / 24 | 0; + $175 = $174 + 1 | 0; + if (($173 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $179 = ($165 - $172 | 0) / 24 | 0; + if ($179 >>> 0 < 1073741823) { + $181 = $179 << 1; + $$0$i$i$i20 = $181 >>> 0 < $175 >>> 0 ? $175 : $181; + } else $$0$i$i$i20 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i20, $174, $db + 12 | 0); + $184 = $__v$i$i224 + 8 | 0; + $185 = HEAP32[$184 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($185, $4); + HEAP32[$184 >> 2] = $185 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 109: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($5, 13002); + $188 = $db + 4 | 0; + $189 = HEAP32[$188 >> 2] | 0; + $191 = HEAP32[$db + 8 >> 2] | 0; + if ($189 >>> 0 < $191 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($189, $5); + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 24; + } else { + $198 = HEAP32[$db >> 2] | 0; + $199 = $189 - $198 | 0; + $200 = ($199 | 0) / 24 | 0; + $201 = $200 + 1 | 0; + if (($199 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $205 = ($191 - $198 | 0) / 24 | 0; + if ($205 >>> 0 < 1073741823) { + $207 = $205 << 1; + $$0$i$i$i25 = $207 >>> 0 < $201 >>> 0 ? $201 : $207; + } else $$0$i$i$i25 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i25, $200, $db + 12 | 0); + $210 = $__v$i$i224 + 8 | 0; + $211 = HEAP32[$210 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($211, $5); + HEAP32[$210 >> 2] = $211 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 111: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($6, 13012); + $214 = $db + 4 | 0; + $215 = HEAP32[$214 >> 2] | 0; + $217 = HEAP32[$db + 8 >> 2] | 0; + if ($215 >>> 0 < $217 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($215, $6); + HEAP32[$214 >> 2] = (HEAP32[$214 >> 2] | 0) + 24; + } else { + $224 = HEAP32[$db >> 2] | 0; + $225 = $215 - $224 | 0; + $226 = ($225 | 0) / 24 | 0; + $227 = $226 + 1 | 0; + if (($225 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $231 = ($217 - $224 | 0) / 24 | 0; + if ($231 >>> 0 < 1073741823) { + $233 = $231 << 1; + $$0$i$i$i30 = $233 >>> 0 < $227 >>> 0 ? $227 : $233; + } else $$0$i$i$i30 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i30, $226, $db + 12 | 0); + $236 = $__v$i$i224 + 8 | 0; + $237 = HEAP32[$236 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($237, $6); + HEAP32[$236 >> 2] = $237 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 118: + { + $240 = $db + 63 | 0; + $241 = HEAP8[$240 >> 0] | 0; + HEAP8[$240 >> 0] = 0; + $242 = $first + 2 | 0; + $243 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($242, $last, $db) | 0; + HEAP8[$240 >> 0] = $241; + if (($243 | 0) == ($242 | 0)) { + $$0 = $first; + break L1; + } + $247 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($247 | 0)) { + $$0 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($247 + -24 | 0, 0, 13022) | 0; + HEAP8[$db + 60 >> 0] = 1; + $$0 = $243; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 100: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($7, 13032); + $254 = $db + 4 | 0; + $255 = HEAP32[$254 >> 2] | 0; + $257 = HEAP32[$db + 8 >> 2] | 0; + if ($255 >>> 0 < $257 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($255, $7); + HEAP32[$254 >> 2] = (HEAP32[$254 >> 2] | 0) + 24; + } else { + $264 = HEAP32[$db >> 2] | 0; + $265 = $255 - $264 | 0; + $266 = ($265 | 0) / 24 | 0; + $267 = $266 + 1 | 0; + if (($265 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $271 = ($257 - $264 | 0) / 24 | 0; + if ($271 >>> 0 < 1073741823) { + $273 = $271 << 1; + $$0$i$i$i35 = $273 >>> 0 < $267 >>> 0 ? $267 : $273; + } else $$0$i$i$i35 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i35, $266, $db + 12 | 0); + $276 = $__v$i$i224 + 8 | 0; + $277 = HEAP32[$276 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($277, $7); + HEAP32[$276 >> 2] = $277 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($8, 13050); + $280 = $db + 4 | 0; + $281 = HEAP32[$280 >> 2] | 0; + $283 = HEAP32[$db + 8 >> 2] | 0; + if ($281 >>> 0 < $283 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($281, $8); + HEAP32[$280 >> 2] = (HEAP32[$280 >> 2] | 0) + 24; + } else { + $290 = HEAP32[$db >> 2] | 0; + $291 = $281 - $290 | 0; + $292 = ($291 | 0) / 24 | 0; + $293 = $292 + 1 | 0; + if (($291 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $297 = ($283 - $290 | 0) / 24 | 0; + if ($297 >>> 0 < 1073741823) { + $299 = $297 << 1; + $$0$i$i$i40 = $299 >>> 0 < $293 >>> 0 ? $293 : $299; + } else $$0$i$i$i40 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i40, $292, $db + 12 | 0); + $302 = $__v$i$i224 + 8 | 0; + $303 = HEAP32[$302 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($303, $8); + HEAP32[$302 >> 2] = $303 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 108: + { + $306 = _malloc(16) | 0; + HEAP32[$9 + 8 >> 2] = $306; + HEAP32[$9 >> 2] = 17; + HEAP32[$9 + 4 >> 2] = 15; + dest = $306; + src = 13060; + stop = dest + 15 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$306 + 15 >> 0] = 0; + $310 = $9 + 12 | 0; + HEAP32[$310 >> 2] = 0; + HEAP32[$310 + 4 >> 2] = 0; + HEAP32[$310 + 8 >> 2] = 0; + $313 = $db + 4 | 0; + $314 = HEAP32[$313 >> 2] | 0; + $316 = HEAP32[$db + 8 >> 2] | 0; + if ($314 >>> 0 < $316 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($314, $9); + HEAP32[$313 >> 2] = (HEAP32[$313 >> 2] | 0) + 24; + } else { + $323 = HEAP32[$db >> 2] | 0; + $324 = $314 - $323 | 0; + $325 = ($324 | 0) / 24 | 0; + $326 = $325 + 1 | 0; + if (($324 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $330 = ($316 - $323 | 0) / 24 | 0; + if ($330 >>> 0 < 1073741823) { + $332 = $330 << 1; + $$0$i$i$i45 = $332 >>> 0 < $326 >>> 0 ? $326 : $332; + } else $$0$i$i$i45 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i45, $325, $db + 12 | 0); + $335 = $__v$i$i224 + 8 | 0; + $336 = HEAP32[$335 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($336, $9); + HEAP32[$335 >> 2] = $336 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 118: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($10, 13076); + $339 = $db + 4 | 0; + $340 = HEAP32[$339 >> 2] | 0; + $342 = HEAP32[$db + 8 >> 2] | 0; + if ($340 >>> 0 < $342 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($340, $10); + HEAP32[$339 >> 2] = (HEAP32[$339 >> 2] | 0) + 24; + } else { + $349 = HEAP32[$db >> 2] | 0; + $350 = $340 - $349 | 0; + $351 = ($350 | 0) / 24 | 0; + $352 = $351 + 1 | 0; + if (($350 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $356 = ($342 - $349 | 0) / 24 | 0; + if ($356 >>> 0 < 1073741823) { + $358 = $356 << 1; + $$0$i$i$i50 = $358 >>> 0 < $352 >>> 0 ? $352 : $358; + } else $$0$i$i$i50 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i50, $351, $db + 12 | 0); + $361 = $__v$i$i224 + 8 | 0; + $362 = HEAP32[$361 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($362, $10); + HEAP32[$361 >> 2] = $362 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 86: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($11, 13086); + $365 = $db + 4 | 0; + $366 = HEAP32[$365 >> 2] | 0; + $368 = HEAP32[$db + 8 >> 2] | 0; + if ($366 >>> 0 < $368 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($366, $11); + HEAP32[$365 >> 2] = (HEAP32[$365 >> 2] | 0) + 24; + } else { + $375 = HEAP32[$db >> 2] | 0; + $376 = $366 - $375 | 0; + $377 = ($376 | 0) / 24 | 0; + $378 = $377 + 1 | 0; + if (($376 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $382 = ($368 - $375 | 0) / 24 | 0; + if ($382 >>> 0 < 1073741823) { + $384 = $382 << 1; + $$0$i$i$i55 = $384 >>> 0 < $378 >>> 0 ? $378 : $384; + } else $$0$i$i$i55 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i55, $377, $db + 12 | 0); + $387 = $__v$i$i224 + 8 | 0; + $388 = HEAP32[$387 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($388, $11); + HEAP32[$387 >> 2] = $388 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 101: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 111: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 13097); + $394 = $db + 4 | 0; + $395 = HEAP32[$394 >> 2] | 0; + $397 = HEAP32[$db + 8 >> 2] | 0; + if ($395 >>> 0 < $397 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($395, $12); + HEAP32[$394 >> 2] = (HEAP32[$394 >> 2] | 0) + 24; + } else { + $404 = HEAP32[$db >> 2] | 0; + $405 = $395 - $404 | 0; + $406 = ($405 | 0) / 24 | 0; + $407 = $406 + 1 | 0; + if (($405 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $411 = ($397 - $404 | 0) / 24 | 0; + if ($411 >>> 0 < 1073741823) { + $413 = $411 << 1; + $$0$i$i$i60 = $413 >>> 0 < $407 >>> 0 ? $407 : $413; + } else $$0$i$i$i60 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i60, $406, $db + 12 | 0); + $416 = $__v$i$i224 + 8 | 0; + $417 = HEAP32[$416 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($417, $12); + HEAP32[$416 >> 2] = $417 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 79: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($13, 13107); + $420 = $db + 4 | 0; + $421 = HEAP32[$420 >> 2] | 0; + $423 = HEAP32[$db + 8 >> 2] | 0; + if ($421 >>> 0 < $423 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($421, $13); + HEAP32[$420 >> 2] = (HEAP32[$420 >> 2] | 0) + 24; + } else { + $430 = HEAP32[$db >> 2] | 0; + $431 = $421 - $430 | 0; + $432 = ($431 | 0) / 24 | 0; + $433 = $432 + 1 | 0; + if (($431 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $437 = ($423 - $430 | 0) / 24 | 0; + if ($437 >>> 0 < 1073741823) { + $439 = $437 << 1; + $$0$i$i$i65 = $439 >>> 0 < $433 >>> 0 ? $433 : $439; + } else $$0$i$i$i65 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i65, $432, $db + 12 | 0); + $442 = $__v$i$i224 + 8 | 0; + $443 = HEAP32[$442 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($443, $13); + HEAP32[$442 >> 2] = $443 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 113: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($14, 13118); + $446 = $db + 4 | 0; + $447 = HEAP32[$446 >> 2] | 0; + $449 = HEAP32[$db + 8 >> 2] | 0; + if ($447 >>> 0 < $449 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($447, $14); + HEAP32[$446 >> 2] = (HEAP32[$446 >> 2] | 0) + 24; + } else { + $456 = HEAP32[$db >> 2] | 0; + $457 = $447 - $456 | 0; + $458 = ($457 | 0) / 24 | 0; + $459 = $458 + 1 | 0; + if (($457 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $463 = ($449 - $456 | 0) / 24 | 0; + if ($463 >>> 0 < 1073741823) { + $465 = $463 << 1; + $$0$i$i$i70 = $465 >>> 0 < $459 >>> 0 ? $459 : $465; + } else $$0$i$i$i70 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i70, $458, $db + 12 | 0); + $468 = $__v$i$i224 + 8 | 0; + $469 = HEAP32[$468 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($469, $14); + HEAP32[$468 >> 2] = $469 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 103: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($15, 13129); + $475 = $db + 4 | 0; + $476 = HEAP32[$475 >> 2] | 0; + $478 = HEAP32[$db + 8 >> 2] | 0; + if ($476 >>> 0 < $478 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($476, $15); + HEAP32[$475 >> 2] = (HEAP32[$475 >> 2] | 0) + 24; + } else { + $485 = HEAP32[$db >> 2] | 0; + $486 = $476 - $485 | 0; + $487 = ($486 | 0) / 24 | 0; + $488 = $487 + 1 | 0; + if (($486 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $492 = ($478 - $485 | 0) / 24 | 0; + if ($492 >>> 0 < 1073741823) { + $494 = $492 << 1; + $$0$i$i$i75 = $494 >>> 0 < $488 >>> 0 ? $488 : $494; + } else $$0$i$i$i75 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i75, $487, $db + 12 | 0); + $497 = $__v$i$i224 + 8 | 0; + $498 = HEAP32[$497 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($498, $15); + HEAP32[$497 >> 2] = $498 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 116: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($16, 13140); + $501 = $db + 4 | 0; + $502 = HEAP32[$501 >> 2] | 0; + $504 = HEAP32[$db + 8 >> 2] | 0; + if ($502 >>> 0 < $504 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($502, $16); + HEAP32[$501 >> 2] = (HEAP32[$501 >> 2] | 0) + 24; + } else { + $511 = HEAP32[$db >> 2] | 0; + $512 = $502 - $511 | 0; + $513 = ($512 | 0) / 24 | 0; + $514 = $513 + 1 | 0; + if (($512 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $518 = ($504 - $511 | 0) / 24 | 0; + if ($518 >>> 0 < 1073741823) { + $520 = $518 << 1; + $$0$i$i$i80 = $520 >>> 0 < $514 >>> 0 ? $514 : $520; + } else $$0$i$i$i80 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i80, $513, $db + 12 | 0); + $523 = $__v$i$i224 + 8 | 0; + $524 = HEAP32[$523 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($524, $16); + HEAP32[$523 >> 2] = $524 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 105: + { + if ((HEAP8[$first + 1 >> 0] | 0) != 120) { + $$0 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($17, 13150); + $530 = $db + 4 | 0; + $531 = HEAP32[$530 >> 2] | 0; + $533 = HEAP32[$db + 8 >> 2] | 0; + if ($531 >>> 0 < $533 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($531, $17); + HEAP32[$530 >> 2] = (HEAP32[$530 >> 2] | 0) + 24; + } else { + $540 = HEAP32[$db >> 2] | 0; + $541 = $531 - $540 | 0; + $542 = ($541 | 0) / 24 | 0; + $543 = $542 + 1 | 0; + if (($541 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $547 = ($533 - $540 | 0) / 24 | 0; + if ($547 >>> 0 < 1073741823) { + $549 = $547 << 1; + $$0$i$i$i85 = $549 >>> 0 < $543 >>> 0 ? $543 : $549; + } else $$0$i$i$i85 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i85, $542, $db + 12 | 0); + $552 = $__v$i$i224 + 8 | 0; + $553 = HEAP32[$552 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($553, $17); + HEAP32[$552 >> 2] = $553 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 108: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($18, 13161); + $559 = $db + 4 | 0; + $560 = HEAP32[$559 >> 2] | 0; + $562 = HEAP32[$db + 8 >> 2] | 0; + if ($560 >>> 0 < $562 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($560, $18); + HEAP32[$559 >> 2] = (HEAP32[$559 >> 2] | 0) + 24; + } else { + $569 = HEAP32[$db >> 2] | 0; + $570 = $560 - $569 | 0; + $571 = ($570 | 0) / 24 | 0; + $572 = $571 + 1 | 0; + if (($570 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $576 = ($562 - $569 | 0) / 24 | 0; + if ($576 >>> 0 < 1073741823) { + $578 = $576 << 1; + $$0$i$i$i90 = $578 >>> 0 < $572 >>> 0 ? $572 : $578; + } else $$0$i$i$i90 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i90, $571, $db + 12 | 0); + $581 = $__v$i$i224 + 8 | 0; + $582 = HEAP32[$581 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($582, $18); + HEAP32[$581 >> 2] = $582 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 105: + { + $585 = $first + 2 | 0; + $586 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($585, $last, $db) | 0; + if (($586 | 0) == ($585 | 0)) { + $$0 = $first; + break L1; + } + $590 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($590 | 0)) { + $$0 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($590 + -24 | 0, 0, 13172) | 0; + $$0 = $586; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 13184); + $593 = $db + 4 | 0; + $594 = HEAP32[$593 >> 2] | 0; + $596 = HEAP32[$db + 8 >> 2] | 0; + if ($594 >>> 0 < $596 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($594, $19); + HEAP32[$593 >> 2] = (HEAP32[$593 >> 2] | 0) + 24; + } else { + $603 = HEAP32[$db >> 2] | 0; + $604 = $594 - $603 | 0; + $605 = ($604 | 0) / 24 | 0; + $606 = $605 + 1 | 0; + if (($604 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $610 = ($596 - $603 | 0) / 24 | 0; + if ($610 >>> 0 < 1073741823) { + $612 = $610 << 1; + $$0$i$i$i95 = $612 >>> 0 < $606 >>> 0 ? $606 : $612; + } else $$0$i$i$i95 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i95, $605, $db + 12 | 0); + $615 = $__v$i$i224 + 8 | 0; + $616 = HEAP32[$615 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($616, $19); + HEAP32[$615 >> 2] = $616 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 83: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($20, 13195); + $619 = $db + 4 | 0; + $620 = HEAP32[$619 >> 2] | 0; + $622 = HEAP32[$db + 8 >> 2] | 0; + if ($620 >>> 0 < $622 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($620, $20); + HEAP32[$619 >> 2] = (HEAP32[$619 >> 2] | 0) + 24; + } else { + $629 = HEAP32[$db >> 2] | 0; + $630 = $620 - $629 | 0; + $631 = ($630 | 0) / 24 | 0; + $632 = $631 + 1 | 0; + if (($630 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $636 = ($622 - $629 | 0) / 24 | 0; + if ($636 >>> 0 < 1073741823) { + $638 = $636 << 1; + $$0$i$i$i100 = $638 >>> 0 < $632 >>> 0 ? $632 : $638; + } else $$0$i$i$i100 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i100, $631, $db + 12 | 0); + $641 = $__v$i$i224 + 8 | 0; + $642 = HEAP32[$641 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($642, $20); + HEAP32[$641 >> 2] = $642 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 116: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 13207); + $645 = $db + 4 | 0; + $646 = HEAP32[$645 >> 2] | 0; + $648 = HEAP32[$db + 8 >> 2] | 0; + if ($646 >>> 0 < $648 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($646, $21); + HEAP32[$645 >> 2] = (HEAP32[$645 >> 2] | 0) + 24; + } else { + $655 = HEAP32[$db >> 2] | 0; + $656 = $646 - $655 | 0; + $657 = ($656 | 0) / 24 | 0; + $658 = $657 + 1 | 0; + if (($656 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $662 = ($648 - $655 | 0) / 24 | 0; + if ($662 >>> 0 < 1073741823) { + $664 = $662 << 1; + $$0$i$i$i105 = $664 >>> 0 < $658 >>> 0 ? $658 : $664; + } else $$0$i$i$i105 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i105, $657, $db + 12 | 0); + $667 = $__v$i$i224 + 8 | 0; + $668 = HEAP32[$667 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($668, $21); + HEAP32[$667 >> 2] = $668 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 109: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 105: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($22, 13217); + $674 = $db + 4 | 0; + $675 = HEAP32[$674 >> 2] | 0; + $677 = HEAP32[$db + 8 >> 2] | 0; + if ($675 >>> 0 < $677 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($675, $22); + HEAP32[$674 >> 2] = (HEAP32[$674 >> 2] | 0) + 24; + } else { + $684 = HEAP32[$db >> 2] | 0; + $685 = $675 - $684 | 0; + $686 = ($685 | 0) / 24 | 0; + $687 = $686 + 1 | 0; + if (($685 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $691 = ($677 - $684 | 0) / 24 | 0; + if ($691 >>> 0 < 1073741823) { + $693 = $691 << 1; + $$0$i$i$i110 = $693 >>> 0 < $687 >>> 0 ? $687 : $693; + } else $$0$i$i$i110 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i110, $686, $db + 12 | 0); + $696 = $__v$i$i224 + 8 | 0; + $697 = HEAP32[$696 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($697, $22); + HEAP32[$696 >> 2] = $697 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 73: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($23, 13227); + $700 = $db + 4 | 0; + $701 = HEAP32[$700 >> 2] | 0; + $703 = HEAP32[$db + 8 >> 2] | 0; + if ($701 >>> 0 < $703 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($701, $23); + HEAP32[$700 >> 2] = (HEAP32[$700 >> 2] | 0) + 24; + } else { + $710 = HEAP32[$db >> 2] | 0; + $711 = $701 - $710 | 0; + $712 = ($711 | 0) / 24 | 0; + $713 = $712 + 1 | 0; + if (($711 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $717 = ($703 - $710 | 0) / 24 | 0; + if ($717 >>> 0 < 1073741823) { + $719 = $717 << 1; + $$0$i$i$i115 = $719 >>> 0 < $713 >>> 0 ? $713 : $719; + } else $$0$i$i$i115 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i115, $712, $db + 12 | 0); + $722 = $__v$i$i224 + 8 | 0; + $723 = HEAP32[$722 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($723, $23); + HEAP32[$722 >> 2] = $723 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 108: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 13050); + $726 = $db + 4 | 0; + $727 = HEAP32[$726 >> 2] | 0; + $729 = HEAP32[$db + 8 >> 2] | 0; + if ($727 >>> 0 < $729 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($727, $24); + HEAP32[$726 >> 2] = (HEAP32[$726 >> 2] | 0) + 24; + } else { + $736 = HEAP32[$db >> 2] | 0; + $737 = $727 - $736 | 0; + $738 = ($737 | 0) / 24 | 0; + $739 = $738 + 1 | 0; + if (($737 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $743 = ($729 - $736 | 0) / 24 | 0; + if ($743 >>> 0 < 1073741823) { + $745 = $743 << 1; + $$0$i$i$i120 = $745 >>> 0 < $739 >>> 0 ? $739 : $745; + } else $$0$i$i$i120 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i120, $738, $db + 12 | 0); + $748 = $__v$i$i224 + 8 | 0; + $749 = HEAP32[$748 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($749, $24); + HEAP32[$748 >> 2] = $749 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 76: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($25, 13238); + $752 = $db + 4 | 0; + $753 = HEAP32[$752 >> 2] | 0; + $755 = HEAP32[$db + 8 >> 2] | 0; + if ($753 >>> 0 < $755 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($753, $25); + HEAP32[$752 >> 2] = (HEAP32[$752 >> 2] | 0) + 24; + } else { + $762 = HEAP32[$db >> 2] | 0; + $763 = $753 - $762 | 0; + $764 = ($763 | 0) / 24 | 0; + $765 = $764 + 1 | 0; + if (($763 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $769 = ($755 - $762 | 0) / 24 | 0; + if ($769 >>> 0 < 1073741823) { + $771 = $769 << 1; + $$0$i$i$i125 = $771 >>> 0 < $765 >>> 0 ? $765 : $771; + } else $$0$i$i$i125 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i125, $764, $db + 12 | 0); + $774 = $__v$i$i224 + 8 | 0; + $775 = HEAP32[$774 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($775, $25); + HEAP32[$774 >> 2] = $775 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 109: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($26, 13249); + $778 = $db + 4 | 0; + $779 = HEAP32[$778 >> 2] | 0; + $781 = HEAP32[$db + 8 >> 2] | 0; + if ($779 >>> 0 < $781 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($779, $26); + HEAP32[$778 >> 2] = (HEAP32[$778 >> 2] | 0) + 24; + } else { + $788 = HEAP32[$db >> 2] | 0; + $789 = $779 - $788 | 0; + $790 = ($789 | 0) / 24 | 0; + $791 = $790 + 1 | 0; + if (($789 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $795 = ($781 - $788 | 0) / 24 | 0; + if ($795 >>> 0 < 1073741823) { + $797 = $795 << 1; + $$0$i$i$i130 = $797 >>> 0 < $791 >>> 0 ? $791 : $797; + } else $$0$i$i$i130 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i130, $790, $db + 12 | 0); + $800 = $__v$i$i224 + 8 | 0; + $801 = HEAP32[$800 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($801, $26); + HEAP32[$800 >> 2] = $801 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 110: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($27, 13260); + $807 = $db + 4 | 0; + $808 = HEAP32[$807 >> 2] | 0; + $810 = HEAP32[$db + 8 >> 2] | 0; + if ($808 >>> 0 < $810 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($808, $27); + HEAP32[$807 >> 2] = (HEAP32[$807 >> 2] | 0) + 24; + } else { + $817 = HEAP32[$db >> 2] | 0; + $818 = $808 - $817 | 0; + $819 = ($818 | 0) / 24 | 0; + $820 = $819 + 1 | 0; + if (($818 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $824 = ($810 - $817 | 0) / 24 | 0; + if ($824 >>> 0 < 1073741823) { + $826 = $824 << 1; + $$0$i$i$i135 = $826 >>> 0 < $820 >>> 0 ? $820 : $826; + } else $$0$i$i$i135 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i135, $819, $db + 12 | 0); + $829 = $__v$i$i224 + 8 | 0; + $830 = HEAP32[$829 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($830, $27); + HEAP32[$829 >> 2] = $830 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($28, 13275); + $833 = $db + 4 | 0; + $834 = HEAP32[$833 >> 2] | 0; + $836 = HEAP32[$db + 8 >> 2] | 0; + if ($834 >>> 0 < $836 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($834, $28); + HEAP32[$833 >> 2] = (HEAP32[$833 >> 2] | 0) + 24; + } else { + $843 = HEAP32[$db >> 2] | 0; + $844 = $834 - $843 | 0; + $845 = ($844 | 0) / 24 | 0; + $846 = $845 + 1 | 0; + if (($844 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $850 = ($836 - $843 | 0) / 24 | 0; + if ($850 >>> 0 < 1073741823) { + $852 = $850 << 1; + $$0$i$i$i140 = $852 >>> 0 < $846 >>> 0 ? $846 : $852; + } else $$0$i$i$i140 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i140, $845, $db + 12 | 0); + $855 = $__v$i$i224 + 8 | 0; + $856 = HEAP32[$855 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($856, $28); + HEAP32[$855 >> 2] = $856 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 103: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($29, 13217); + $859 = $db + 4 | 0; + $860 = HEAP32[$859 >> 2] | 0; + $862 = HEAP32[$db + 8 >> 2] | 0; + if ($860 >>> 0 < $862 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($860, $29); + HEAP32[$859 >> 2] = (HEAP32[$859 >> 2] | 0) + 24; + } else { + $869 = HEAP32[$db >> 2] | 0; + $870 = $860 - $869 | 0; + $871 = ($870 | 0) / 24 | 0; + $872 = $871 + 1 | 0; + if (($870 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $876 = ($862 - $869 | 0) / 24 | 0; + if ($876 >>> 0 < 1073741823) { + $878 = $876 << 1; + $$0$i$i$i145 = $878 >>> 0 < $872 >>> 0 ? $872 : $878; + } else $$0$i$i$i145 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i145, $871, $db + 12 | 0); + $881 = $__v$i$i224 + 8 | 0; + $882 = HEAP32[$881 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($882, $29); + HEAP32[$881 >> 2] = $882 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($29); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 116: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($30, 13286); + $885 = $db + 4 | 0; + $886 = HEAP32[$885 >> 2] | 0; + $888 = HEAP32[$db + 8 >> 2] | 0; + if ($886 >>> 0 < $888 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($886, $30); + HEAP32[$885 >> 2] = (HEAP32[$885 >> 2] | 0) + 24; + } else { + $895 = HEAP32[$db >> 2] | 0; + $896 = $886 - $895 | 0; + $897 = ($896 | 0) / 24 | 0; + $898 = $897 + 1 | 0; + if (($896 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $902 = ($888 - $895 | 0) / 24 | 0; + if ($902 >>> 0 < 1073741823) { + $904 = $902 << 1; + $$0$i$i$i150 = $904 >>> 0 < $898 >>> 0 ? $898 : $904; + } else $$0$i$i$i150 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i150, $897, $db + 12 | 0); + $907 = $__v$i$i224 + 8 | 0; + $908 = HEAP32[$907 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($908, $30); + HEAP32[$907 >> 2] = $908 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($30); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 119: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($31, 13296); + $911 = $db + 4 | 0; + $912 = HEAP32[$911 >> 2] | 0; + $914 = HEAP32[$db + 8 >> 2] | 0; + if ($912 >>> 0 < $914 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($912, $31); + HEAP32[$911 >> 2] = (HEAP32[$911 >> 2] | 0) + 24; + } else { + $921 = HEAP32[$db >> 2] | 0; + $922 = $912 - $921 | 0; + $923 = ($922 | 0) / 24 | 0; + $924 = $923 + 1 | 0; + if (($922 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $928 = ($914 - $921 | 0) / 24 | 0; + if ($928 >>> 0 < 1073741823) { + $930 = $928 << 1; + $$0$i$i$i155 = $930 >>> 0 < $924 >>> 0 ? $924 : $930; + } else $$0$i$i$i155 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i155, $923, $db + 12 | 0); + $933 = $__v$i$i224 + 8 | 0; + $934 = HEAP32[$933 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($934, $31); + HEAP32[$933 >> 2] = $934 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 111: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 111: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($32, 13309); + $940 = $db + 4 | 0; + $941 = HEAP32[$940 >> 2] | 0; + $943 = HEAP32[$db + 8 >> 2] | 0; + if ($941 >>> 0 < $943 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($941, $32); + HEAP32[$940 >> 2] = (HEAP32[$940 >> 2] | 0) + 24; + } else { + $950 = HEAP32[$db >> 2] | 0; + $951 = $941 - $950 | 0; + $952 = ($951 | 0) / 24 | 0; + $953 = $952 + 1 | 0; + if (($951 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $957 = ($943 - $950 | 0) / 24 | 0; + if ($957 >>> 0 < 1073741823) { + $959 = $957 << 1; + $$0$i$i$i160 = $959 >>> 0 < $953 >>> 0 ? $953 : $959; + } else $$0$i$i$i160 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i160, $952, $db + 12 | 0); + $962 = $__v$i$i224 + 8 | 0; + $963 = HEAP32[$962 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($963, $32); + HEAP32[$962 >> 2] = $963 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($32); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 114: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($33, 13320); + $966 = $db + 4 | 0; + $967 = HEAP32[$966 >> 2] | 0; + $969 = HEAP32[$db + 8 >> 2] | 0; + if ($967 >>> 0 < $969 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($967, $33); + HEAP32[$966 >> 2] = (HEAP32[$966 >> 2] | 0) + 24; + } else { + $976 = HEAP32[$db >> 2] | 0; + $977 = $967 - $976 | 0; + $978 = ($977 | 0) / 24 | 0; + $979 = $978 + 1 | 0; + if (($977 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $983 = ($969 - $976 | 0) / 24 | 0; + if ($983 >>> 0 < 1073741823) { + $985 = $983 << 1; + $$0$i$i$i165 = $985 >>> 0 < $979 >>> 0 ? $979 : $985; + } else $$0$i$i$i165 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i165, $978, $db + 12 | 0); + $988 = $__v$i$i224 + 8 | 0; + $989 = HEAP32[$988 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($989, $33); + HEAP32[$988 >> 2] = $989 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($33); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 82: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($34, 13330); + $992 = $db + 4 | 0; + $993 = HEAP32[$992 >> 2] | 0; + $995 = HEAP32[$db + 8 >> 2] | 0; + if ($993 >>> 0 < $995 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($993, $34); + HEAP32[$992 >> 2] = (HEAP32[$992 >> 2] | 0) + 24; + } else { + $1002 = HEAP32[$db >> 2] | 0; + $1003 = $993 - $1002 | 0; + $1004 = ($1003 | 0) / 24 | 0; + $1005 = $1004 + 1 | 0; + if (($1003 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1009 = ($995 - $1002 | 0) / 24 | 0; + if ($1009 >>> 0 < 1073741823) { + $1011 = $1009 << 1; + $$0$i$i$i170 = $1011 >>> 0 < $1005 >>> 0 ? $1005 : $1011; + } else $$0$i$i$i170 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i170, $1004, $db + 12 | 0); + $1014 = $__v$i$i224 + 8 | 0; + $1015 = HEAP32[$1014 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1015, $34); + HEAP32[$1014 >> 2] = $1015 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($34); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 112: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 109: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($35, 13341); + $1021 = $db + 4 | 0; + $1022 = HEAP32[$1021 >> 2] | 0; + $1024 = HEAP32[$db + 8 >> 2] | 0; + if ($1022 >>> 0 < $1024 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1022, $35); + HEAP32[$1021 >> 2] = (HEAP32[$1021 >> 2] | 0) + 24; + } else { + $1031 = HEAP32[$db >> 2] | 0; + $1032 = $1022 - $1031 | 0; + $1033 = ($1032 | 0) / 24 | 0; + $1034 = $1033 + 1 | 0; + if (($1032 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1038 = ($1024 - $1031 | 0) / 24 | 0; + if ($1038 >>> 0 < 1073741823) { + $1040 = $1038 << 1; + $$0$i$i$i175 = $1040 >>> 0 < $1034 >>> 0 ? $1034 : $1040; + } else $$0$i$i$i175 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i175, $1033, $db + 12 | 0); + $1043 = $__v$i$i224 + 8 | 0; + $1044 = HEAP32[$1043 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1044, $35); + HEAP32[$1043 >> 2] = $1044 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($35); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 108: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($36, 13353); + $1047 = $db + 4 | 0; + $1048 = HEAP32[$1047 >> 2] | 0; + $1050 = HEAP32[$db + 8 >> 2] | 0; + if ($1048 >>> 0 < $1050 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1048, $36); + HEAP32[$1047 >> 2] = (HEAP32[$1047 >> 2] | 0) + 24; + } else { + $1057 = HEAP32[$db >> 2] | 0; + $1058 = $1048 - $1057 | 0; + $1059 = ($1058 | 0) / 24 | 0; + $1060 = $1059 + 1 | 0; + if (($1058 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1064 = ($1050 - $1057 | 0) / 24 | 0; + if ($1064 >>> 0 < 1073741823) { + $1066 = $1064 << 1; + $$0$i$i$i180 = $1066 >>> 0 < $1060 >>> 0 ? $1060 : $1066; + } else $$0$i$i$i180 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i180, $1059, $db + 12 | 0); + $1069 = $__v$i$i224 + 8 | 0; + $1070 = HEAP32[$1069 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1070, $36); + HEAP32[$1069 >> 2] = $1070 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 76: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($37, 13363); + $1073 = $db + 4 | 0; + $1074 = HEAP32[$1073 >> 2] | 0; + $1076 = HEAP32[$db + 8 >> 2] | 0; + if ($1074 >>> 0 < $1076 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1074, $37); + HEAP32[$1073 >> 2] = (HEAP32[$1073 >> 2] | 0) + 24; + } else { + $1083 = HEAP32[$db >> 2] | 0; + $1084 = $1074 - $1083 | 0; + $1085 = ($1084 | 0) / 24 | 0; + $1086 = $1085 + 1 | 0; + if (($1084 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1090 = ($1076 - $1083 | 0) / 24 | 0; + if ($1090 >>> 0 < 1073741823) { + $1092 = $1090 << 1; + $$0$i$i$i185 = $1092 >>> 0 < $1086 >>> 0 ? $1086 : $1092; + } else $$0$i$i$i185 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i185, $1085, $db + 12 | 0); + $1095 = $__v$i$i224 + 8 | 0; + $1096 = HEAP32[$1095 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1096, $37); + HEAP32[$1095 >> 2] = $1096 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($37); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 112: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($38, 13374); + $1099 = $db + 4 | 0; + $1100 = HEAP32[$1099 >> 2] | 0; + $1102 = HEAP32[$db + 8 >> 2] | 0; + if ($1100 >>> 0 < $1102 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1100, $38); + HEAP32[$1099 >> 2] = (HEAP32[$1099 >> 2] | 0) + 24; + } else { + $1109 = HEAP32[$db >> 2] | 0; + $1110 = $1100 - $1109 | 0; + $1111 = ($1110 | 0) / 24 | 0; + $1112 = $1111 + 1 | 0; + if (($1110 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1116 = ($1102 - $1109 | 0) / 24 | 0; + if ($1116 >>> 0 < 1073741823) { + $1118 = $1116 << 1; + $$0$i$i$i190 = $1118 >>> 0 < $1112 >>> 0 ? $1112 : $1118; + } else $$0$i$i$i190 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i190, $1111, $db + 12 | 0); + $1121 = $__v$i$i224 + 8 | 0; + $1122 = HEAP32[$1121 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1122, $38); + HEAP32[$1121 >> 2] = $1122 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($38); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($39, 13353); + $1125 = $db + 4 | 0; + $1126 = HEAP32[$1125 >> 2] | 0; + $1128 = HEAP32[$db + 8 >> 2] | 0; + if ($1126 >>> 0 < $1128 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1126, $39); + HEAP32[$1125 >> 2] = (HEAP32[$1125 >> 2] | 0) + 24; + } else { + $1135 = HEAP32[$db >> 2] | 0; + $1136 = $1126 - $1135 | 0; + $1137 = ($1136 | 0) / 24 | 0; + $1138 = $1137 + 1 | 0; + if (($1136 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1142 = ($1128 - $1135 | 0) / 24 | 0; + if ($1142 >>> 0 < 1073741823) { + $1144 = $1142 << 1; + $$0$i$i$i195 = $1144 >>> 0 < $1138 >>> 0 ? $1138 : $1144; + } else $$0$i$i$i195 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i195, $1137, $db + 12 | 0); + $1147 = $__v$i$i224 + 8 | 0; + $1148 = HEAP32[$1147 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1148, $39); + HEAP32[$1147 >> 2] = $1148 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($39); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 116: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($40, 13385); + $1151 = $db + 4 | 0; + $1152 = HEAP32[$1151 >> 2] | 0; + $1154 = HEAP32[$db + 8 >> 2] | 0; + if ($1152 >>> 0 < $1154 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1152, $40); + HEAP32[$1151 >> 2] = (HEAP32[$1151 >> 2] | 0) + 24; + } else { + $1161 = HEAP32[$db >> 2] | 0; + $1162 = $1152 - $1161 | 0; + $1163 = ($1162 | 0) / 24 | 0; + $1164 = $1163 + 1 | 0; + if (($1162 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1168 = ($1154 - $1161 | 0) / 24 | 0; + if ($1168 >>> 0 < 1073741823) { + $1170 = $1168 << 1; + $$0$i$i$i200 = $1170 >>> 0 < $1164 >>> 0 ? $1164 : $1170; + } else $$0$i$i$i200 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i200, $1163, $db + 12 | 0); + $1173 = $__v$i$i224 + 8 | 0; + $1174 = HEAP32[$1173 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1174, $40); + HEAP32[$1173 >> 2] = $1174 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($40); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 113: + { + if ((HEAP8[$first + 1 >> 0] | 0) != 117) { + $$0 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($41, 13396); + $1180 = $db + 4 | 0; + $1181 = HEAP32[$1180 >> 2] | 0; + $1183 = HEAP32[$db + 8 >> 2] | 0; + if ($1181 >>> 0 < $1183 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1181, $41); + HEAP32[$1180 >> 2] = (HEAP32[$1180 >> 2] | 0) + 24; + } else { + $1190 = HEAP32[$db >> 2] | 0; + $1191 = $1181 - $1190 | 0; + $1192 = ($1191 | 0) / 24 | 0; + $1193 = $1192 + 1 | 0; + if (($1191 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1197 = ($1183 - $1190 | 0) / 24 | 0; + if ($1197 >>> 0 < 1073741823) { + $1199 = $1197 << 1; + $$0$i$i$i205 = $1199 >>> 0 < $1193 >>> 0 ? $1193 : $1199; + } else $$0$i$i$i205 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i205, $1192, $db + 12 | 0); + $1202 = $__v$i$i224 + 8 | 0; + $1203 = HEAP32[$1202 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1203, $41); + HEAP32[$1202 >> 2] = $1203 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($41); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 114: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 109: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($42, 13406); + $1209 = $db + 4 | 0; + $1210 = HEAP32[$1209 >> 2] | 0; + $1212 = HEAP32[$db + 8 >> 2] | 0; + if ($1210 >>> 0 < $1212 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1210, $42); + HEAP32[$1209 >> 2] = (HEAP32[$1209 >> 2] | 0) + 24; + } else { + $1219 = HEAP32[$db >> 2] | 0; + $1220 = $1210 - $1219 | 0; + $1221 = ($1220 | 0) / 24 | 0; + $1222 = $1221 + 1 | 0; + if (($1220 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1226 = ($1212 - $1219 | 0) / 24 | 0; + if ($1226 >>> 0 < 1073741823) { + $1228 = $1226 << 1; + $$0$i$i$i210 = $1228 >>> 0 < $1222 >>> 0 ? $1222 : $1228; + } else $$0$i$i$i210 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i210, $1221, $db + 12 | 0); + $1231 = $__v$i$i224 + 8 | 0; + $1232 = HEAP32[$1231 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1232, $42); + HEAP32[$1231 >> 2] = $1232 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($42); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 77: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($43, 13416); + $1235 = $db + 4 | 0; + $1236 = HEAP32[$1235 >> 2] | 0; + $1238 = HEAP32[$db + 8 >> 2] | 0; + if ($1236 >>> 0 < $1238 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1236, $43); + HEAP32[$1235 >> 2] = (HEAP32[$1235 >> 2] | 0) + 24; + } else { + $1245 = HEAP32[$db >> 2] | 0; + $1246 = $1236 - $1245 | 0; + $1247 = ($1246 | 0) / 24 | 0; + $1248 = $1247 + 1 | 0; + if (($1246 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1252 = ($1238 - $1245 | 0) / 24 | 0; + if ($1252 >>> 0 < 1073741823) { + $1254 = $1252 << 1; + $$0$i$i$i215 = $1254 >>> 0 < $1248 >>> 0 ? $1248 : $1254; + } else $$0$i$i$i215 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i215, $1247, $db + 12 | 0); + $1257 = $__v$i$i224 + 8 | 0; + $1258 = HEAP32[$1257 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1258, $43); + HEAP32[$1257 >> 2] = $1258 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($43); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($44, 13427); + $1261 = $db + 4 | 0; + $1262 = HEAP32[$1261 >> 2] | 0; + $1264 = HEAP32[$db + 8 >> 2] | 0; + if ($1262 >>> 0 < $1264 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1262, $44); + HEAP32[$1261 >> 2] = (HEAP32[$1261 >> 2] | 0) + 24; + } else { + $1271 = HEAP32[$db >> 2] | 0; + $1272 = $1262 - $1271 | 0; + $1273 = ($1272 | 0) / 24 | 0; + $1274 = $1273 + 1 | 0; + if (($1272 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1278 = ($1264 - $1271 | 0) / 24 | 0; + if ($1278 >>> 0 < 1073741823) { + $1280 = $1278 << 1; + $$0$i$i$i220 = $1280 >>> 0 < $1274 >>> 0 ? $1274 : $1280; + } else $$0$i$i$i220 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i220, $1273, $db + 12 | 0); + $1283 = $__v$i$i224 + 8 | 0; + $1284 = HEAP32[$1283 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1284, $44); + HEAP32[$1283 >> 2] = $1284 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($44); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 83: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($45, 13438); + $1287 = $db + 4 | 0; + $1288 = HEAP32[$1287 >> 2] | 0; + $1290 = HEAP32[$db + 8 >> 2] | 0; + if ($1288 >>> 0 < $1290 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1288, $45); + HEAP32[$1287 >> 2] = (HEAP32[$1287 >> 2] | 0) + 24; + } else { + $1297 = HEAP32[$db >> 2] | 0; + $1298 = $1288 - $1297 | 0; + $1299 = ($1298 | 0) / 24 | 0; + $1300 = $1299 + 1 | 0; + if (($1298 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $1304 = ($1290 - $1297 | 0) / 24 | 0; + if ($1304 >>> 0 < 1073741823) { + $1306 = $1304 << 1; + $$0$i$i$i225 = $1306 >>> 0 < $1300 >>> 0 ? $1300 : $1306; + } else $$0$i$i$i225 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i225, $1299, $db + 12 | 0); + $1309 = $__v$i$i224 + 8 | 0; + $1310 = HEAP32[$1309 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1310, $45); + HEAP32[$1309 >> 2] = $1310 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 118: + { + if (((HEAP8[$first + 1 >> 0] | 0) + -48 | 0) >>> 0 >= 10) { + $$0 = $first; + break L1; + } + $1316 = $first + 2 | 0; + $1317 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1316, $last, $db) | 0; + if (($1317 | 0) == ($1316 | 0)) { + $$0 = $first; + break L1; + } + $1321 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($1321 | 0)) { + $$0 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($1321 + -24 | 0, 0, 13022) | 0; + $$0 = $1317; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } while (0); else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} +function _arPattGetImage2($imageProcMode, $pattDetectMode, $patt_size, $sample_size, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) { + $imageProcMode = $imageProcMode | 0; + $pattDetectMode = $pattDetectMode | 0; + $patt_size = $patt_size | 0; + $sample_size = $sample_size | 0; + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $pixelFormat = $pixelFormat | 0; + $paramLTf = $paramLTf | 0; + $vertex = $vertex | 0; + $pattRatio = +$pattRatio; + $ext_patt = $ext_patt | 0; + var $$0 = 0, $100 = 0, $1001 = 0, $1005 = 0, $1009 = 0, $1012 = 0, $1023 = 0.0, $1028 = 0.0, $103 = 0.0, $1035 = 0.0, $104 = 0.0, $1045 = 0.0, $1054 = 0.0, $1055 = 0.0, $106 = 0, $107 = 0, $1074 = 0, $108 = 0, $1084 = 0, $1090 = 0.0, $1096 = 0.0, $1097 = 0.0, $110 = 0.0, $1101 = 0, $1107 = 0, $111 = 0.0, $1111 = 0, $1113 = 0, $1119 = 0, $112 = 0.0, $1120 = 0, $1124 = 0, $1128 = 0, $113 = 0, $1132 = 0, $1135 = 0, $114 = 0, $1146 = 0.0, $115 = 0, $1151 = 0.0, $1158 = 0.0, $116 = 0, $1168 = 0.0, $117 = 0, $1177 = 0.0, $1178 = 0.0, $118 = 0, $119 = 0, $1199 = 0, $120 = 0, $1203 = 0, $121 = 0, $1211 = 0, $1212 = 0, $1217 = 0, $1225 = 0, $123 = 0, $1231 = 0, $124 = 0.0, $1242 = 0.0, $1247 = 0.0, $125 = 0.0, $1254 = 0.0, $126 = 0.0, $1264 = 0.0, $127 = 0, $1273 = 0.0, $1274 = 0.0, $128 = 0, $129 = 0, $1295 = 0, $1299 = 0, $130 = 0, $1307 = 0, $1308 = 0, $131 = 0, $1313 = 0, $132 = 0, $1321 = 0, $1327 = 0, $133 = 0, $1338 = 0.0, $134 = 0, $1343 = 0.0, $135 = 0, $1350 = 0.0, $1360 = 0.0, $1369 = 0.0, $137 = 0, $1370 = 0.0, $138 = 0.0, $139 = 0.0, $1391 = 0, $140 = 0.0, $1402 = 0, $1403 = 0, $1408 = 0, $141 = 0, $1413 = 0, $1419 = 0, $142 = 0, $143 = 0, $1433 = 0, $1436 = 0.0, $1437 = 0.0, $1438 = 0.0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0, $1449 = 0, $145 = 0, $1450 = 0, $1456 = 0.0, $146 = 0, $1461 = 0.0, $1468 = 0.0, $147 = 0, $1478 = 0.0, $148 = 0, $1487 = 0.0, $1488 = 0.0, $149 = 0, $1509 = 0, $151 = 0, $152 = 0.0, $1528 = 0, $153 = 0.0, $1537 = 0.0, $1538 = 0.0, $1539 = 0.0, $154 = 0.0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $155 = 0, $1550 = 0, $1555 = 0.0, $156 = 0, $1560 = 0.0, $1567 = 0.0, $157 = 0, $1577 = 0.0, $158 = 0, $1586 = 0.0, $1587 = 0.0, $159 = 0, $160 = 0, $1608 = 0, $161 = 0, $162 = 0, $1627 = 0, $163 = 0, $1636 = 0.0, $1637 = 0.0, $1638 = 0.0, $1639 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0, $1646 = 0, $1647 = 0, $1649 = 0, $165 = 0, $1654 = 0.0, $1659 = 0.0, $166 = 0.0, $1666 = 0.0, $167 = 0.0, $1676 = 0.0, $168 = 0.0, $1685 = 0.0, $1686 = 0.0, $169 = 0, $170 = 0, $1707 = 0, $171 = 0, $172 = 0, $1727 = 0, $173 = 0, $1734 = 0.0, $1735 = 0.0, $1736 = 0.0, $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1747 = 0, $1748 = 0.0, $1749 = 0.0, $175 = 0, $1750 = 0.0, $1751 = 0, $1752 = 0, $1753 = 0, $1754 = 0, $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1761 = 0, $1762 = 0.0, $1763 = 0.0, $1764 = 0.0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0, $1772 = 0, $1773 = 0, $1775 = 0, $1776 = 0.0, $1777 = 0.0, $1778 = 0.0, $1779 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1789 = 0, $179 = 0, $1790 = 0.0, $1791 = 0.0, $1792 = 0.0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $180 = 0.0, $1800 = 0, $1801 = 0, $1803 = 0, $1804 = 0.0, $1805 = 0.0, $1806 = 0.0, $1807 = 0, $1808 = 0, $1809 = 0, $181 = 0.0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1817 = 0, $182 = 0.0, $1822 = 0.0, $1827 = 0.0, $183 = 0, $1834 = 0.0, $184 = 0, $1844 = 0.0, $185 = 0, $1853 = 0.0, $1854 = 0.0, $186 = 0, $187 = 0, $1875 = 0, $188 = 0, $1882 = 0, $189 = 0, $1893 = 0.0, $1898 = 0.0, $190 = 0, $1905 = 0.0, $191 = 0, $1915 = 0.0, $1924 = 0.0, $1925 = 0.0, $193 = 0, $194 = 0.0, $1948 = 0, $195 = 0.0, $1955 = 0, $196 = 0.0, $1966 = 0.0, $197 = 0, $1971 = 0.0, $1978 = 0.0, $198 = 0, $1988 = 0.0, $199 = 0, $1997 = 0.0, $1998 = 0.0, $200 = 0, $201 = 0, $202 = 0, $2020 = 0, $2027 = 0, $203 = 0, $2038 = 0.0, $204 = 0, $2043 = 0.0, $205 = 0, $2050 = 0.0, $2060 = 0.0, $2069 = 0.0, $207 = 0, $2070 = 0.0, $208 = 0.0, $209 = 0.0, $2091 = 0, $2094 = 0, $210 = 0.0, $2102 = 0, $211 = 0, $2117 = 0, $212 = 0, $2128 = 0.0, $213 = 0, $2133 = 0.0, $214 = 0, $2140 = 0.0, $215 = 0, $2150 = 0.0, $2159 = 0.0, $216 = 0, $2160 = 0.0, $217 = 0, $218 = 0, $2181 = 0, $2184 = 0, $219 = 0, $2192 = 0, $2207 = 0, $221 = 0, $2218 = 0.0, $222 = 0.0, $2223 = 0.0, $223 = 0.0, $2230 = 0.0, $224 = 0.0, $2240 = 0.0, $2249 = 0.0, $225 = 0, $2250 = 0.0, $226 = 0, $227 = 0, $2271 = 0, $2274 = 0, $228 = 0, $229 = 0, $2293 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $235 = 0, $236 = 0.0, $237 = 0.0, $238 = 0.0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $250 = 0.0, $251 = 0.0, $252 = 0.0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $260 = 0, $261 = 0, $263 = 0, $264 = 0.0, $265 = 0.0, $266 = 0.0, $267 = 0, $268 = 0, $269 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $278 = 0, $284 = 0.0, $289 = 0.0, $29 = 0.0, $296 = 0.0, $306 = 0.0, $31 = 0.0, $315 = 0.0, $316 = 0.0, $32 = 0.0, $337 = 0, $346 = 0, $347 = 0, $35 = 0.0, $355 = 0, $362 = 0, $37 = 0.0, $373 = 0.0, $378 = 0.0, $38 = 0.0, $385 = 0.0, $395 = 0.0, $404 = 0.0, $405 = 0.0, $41 = 0, $426 = 0, $43 = 0.0, $434 = 0, $435 = 0, $443 = 0, $45 = 0.0, $451 = 0, $46 = 0.0, $462 = 0.0, $467 = 0.0, $474 = 0.0, $484 = 0.0, $49 = 0.0, $493 = 0.0, $494 = 0.0, $51 = 0.0, $515 = 0, $52 = 0.0, $524 = 0, $525 = 0, $533 = 0, $540 = 0, $55 = 0, $551 = 0.0, $556 = 0.0, $56 = 0.0, $563 = 0.0, $573 = 0.0, $58 = 0.0, $582 = 0.0, $583 = 0.0, $604 = 0, $61 = 0, $612 = 0, $613 = 0, $62 = 0.0, $621 = 0, $629 = 0, $64 = 0.0, $640 = 0.0, $645 = 0.0, $652 = 0.0, $662 = 0.0, $67 = 0, $671 = 0.0, $672 = 0.0, $693 = 0, $702 = 0, $703 = 0, $711 = 0, $719 = 0, $73 = 0, $730 = 0.0, $735 = 0.0, $742 = 0.0, $752 = 0.0, $761 = 0.0, $762 = 0.0, $77 = 0, $783 = 0, $785 = 0, $790 = 0, $791 = 0, $795 = 0, $799 = 0, $810 = 0.0, $815 = 0.0, $822 = 0.0, $832 = 0.0, $841 = 0.0, $842 = 0.0, $863 = 0, $872 = 0, $873 = 0, $881 = 0, $889 = 0, $900 = 0.0, $905 = 0.0, $912 = 0.0, $922 = 0.0, $931 = 0.0, $932 = 0.0, $951 = 0, $954 = 0, $959 = 0.0, $973 = 0.0, $974 = 0.0, $978 = 0, $984 = 0, $988 = 0, $99 = 0, $990 = 0, $996 = 0, $997 = 0, $ext_patt2$0 = 0, $i$10291 = 0, $i$11297 = 0, $i$12303 = 0, $i$1237 = 0, $i$13236 = 0, $i$14312 = 0, $i$15318 = 0, $i$16324 = 0, $i$17330 = 0, $i$18336 = 0, $i$19342 = 0, $i$20348 = 0, $i$21354 = 0, $i$22360 = 0, $i$2243 = 0, $i$23309 = 0, $i$3249 = 0, $i$4255 = 0, $i$5261 = 0, $i$6267 = 0, $i$7273 = 0, $i$8279 = 0, $i$9285 = 0, $j$0241 = 0, $j$10301 = 0, $j$11307 = 0, $j$12316 = 0, $j$1247 = 0, $j$13322 = 0, $j$14328 = 0, $j$15334 = 0, $j$16340 = 0, $j$17346 = 0, $j$18352 = 0, $j$19358 = 0, $j$20364 = 0, $j$2253 = 0, $j$3259 = 0, $j$4265 = 0, $j$5271 = 0, $j$6277 = 0, $j$7283 = 0, $j$8289 = 0, $j$9295 = 0, $local = 0, $para = 0, $sample_size$xdiv2$2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $world = 0, $xc$0 = 0, $xc$1 = 0, $xc$10 = 0, $xc$11 = 0, $xc$12 = 0, $xc$13 = 0, $xc$14 = 0, $xc$15 = 0, $xc$16 = 0, $xc$17 = 0, $xc$18 = 0, $xc$19 = 0, $xc$2 = 0, $xc$20 = 0, $xc$3 = 0, $xc$4 = 0, $xc$5 = 0, $xc$6 = 0, $xc$7 = 0, $xc$8 = 0, $xc$9 = 0, $xc2 = 0, $xdiv2$0 = 0, $xdiv2$0$lcssa = 0, $xdiv2$1 = 0, $xdiv2$1$lcssa = 0, $xdiv2$2 = 0, $yc$0 = 0, $yc$1 = 0, $yc$10 = 0, $yc$11 = 0, $yc$12 = 0, $yc$13 = 0, $yc$14 = 0, $yc$15 = 0, $yc$16 = 0, $yc$17 = 0, $yc$18 = 0, $yc$19 = 0, $yc$2 = 0, $yc$20 = 0, $yc$3 = 0, $yc$4 = 0, $yc$5 = 0, $yc$6 = 0, $yc$7 = 0, $yc$8 = 0, $yc$9 = 0, $yc2 = 0, $ydiv2$0 = 0, $ydiv2$1 = 0, $ydiv2$2 = 0, $ydiv2$3 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 240 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer5 = sp + 224 | 0; + $vararg_buffer3 = sp + 216 | 0; + $vararg_buffer1 = sp + 208 | 0; + $vararg_buffer = sp + 200 | 0; + $world = sp + 136 | 0; + $local = sp + 72 | 0; + $para = sp; + $xc2 = sp + 232 | 0; + $yc2 = sp + 228 | 0; + HEAPF64[$world >> 3] = 100.0; + HEAPF64[$world + 8 >> 3] = 100.0; + HEAPF64[$world + 16 >> 3] = 110.0; + HEAPF64[$world + 24 >> 3] = 100.0; + HEAPF64[$world + 32 >> 3] = 110.0; + HEAPF64[$world + 40 >> 3] = 110.0; + HEAPF64[$world + 48 >> 3] = 100.0; + HEAPF64[$world + 56 >> 3] = 110.0; + HEAPF64[$local >> 3] = +HEAPF64[$vertex >> 3]; + HEAPF64[$local + 8 >> 3] = +HEAPF64[$vertex + 8 >> 3]; + HEAPF64[$local + 16 >> 3] = +HEAPF64[$vertex + 16 >> 3]; + HEAPF64[$local + 24 >> 3] = +HEAPF64[$vertex + 24 >> 3]; + HEAPF64[$local + 32 >> 3] = +HEAPF64[$vertex + 32 >> 3]; + HEAPF64[$local + 40 >> 3] = +HEAPF64[$vertex + 40 >> 3]; + HEAPF64[$local + 48 >> 3] = +HEAPF64[$vertex + 48 >> 3]; + HEAPF64[$local + 56 >> 3] = +HEAPF64[$vertex + 56 >> 3]; + _get_cpara($world, $local, $para); + $29 = +HEAPF64[$local >> 3]; + $31 = +HEAPF64[$local + 16 >> 3]; + $32 = $29 - $31; + $35 = +HEAPF64[$local + 8 >> 3]; + $37 = +HEAPF64[$local + 24 >> 3]; + $38 = $35 - $37; + $41 = ~~($32 * $32 + $38 * $38); + $43 = +HEAPF64[$local + 32 >> 3]; + $45 = +HEAPF64[$local + 48 >> 3]; + $46 = $43 - $45; + $49 = +HEAPF64[$local + 40 >> 3]; + $51 = +HEAPF64[$local + 56 >> 3]; + $52 = $49 - $51; + $55 = ~~($46 * $46 + $52 * $52); + $56 = $31 - $43; + $58 = $37 - $49; + $61 = ~~($56 * $56 + $58 * $58); + $62 = $45 - $29; + $64 = $51 - $35; + $67 = ~~($62 * $62 + $64 * $64); + $73 = ~~(+((($55 | 0) > ($41 | 0) ? $55 : $41) | 0) * $pattRatio * $pattRatio); + $77 = ~~(+((($67 | 0) > ($61 | 0) ? $67 : $61) | 0) * $pattRatio * $pattRatio); + if (!$imageProcMode) { + $xdiv2$0 = $patt_size; + while (1) if (($xdiv2$0 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$0, $xdiv2$0) | 0) < ($73 | 0)) $xdiv2$0 = $xdiv2$0 << 1; else { + $xdiv2$0$lcssa = $xdiv2$0; + break; + } + $ydiv2$0 = $patt_size; + while (1) if (($ydiv2$0 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$0, $ydiv2$0) | 0) < ($77 | 0)) $ydiv2$0 = $ydiv2$0 << 1; else { + $xdiv2$2 = $xdiv2$0$lcssa; + $ydiv2$2 = $ydiv2$0; + break; + } + } else { + $xdiv2$1 = $patt_size; + while (1) if (($xdiv2$1 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$1 << 2, $xdiv2$1) | 0) < ($73 | 0)) $xdiv2$1 = $xdiv2$1 << 1; else { + $xdiv2$1$lcssa = $xdiv2$1; + break; + } + $ydiv2$1 = $patt_size; + while (1) if (($ydiv2$1 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$1 << 2, $ydiv2$1) | 0) < ($77 | 0)) $ydiv2$1 = $ydiv2$1 << 1; else { + $xdiv2$2 = $xdiv2$1$lcssa; + $ydiv2$2 = $ydiv2$1; + break; + } + } + $sample_size$xdiv2$2 = ($xdiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $xdiv2$2; + $ydiv2$3 = ($ydiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $ydiv2$2; + $99 = ($sample_size$xdiv2$2 | 0) / ($patt_size | 0) | 0; + $100 = ($ydiv2$3 | 0) / ($patt_size | 0) | 0; + $103 = (1.0 - $pattRatio) * .5 * 10.0; + $104 = $pattRatio * 10.0; + $106 = Math_imul($patt_size, $patt_size) | 0; + L13 : do if (!$pattDetectMode) { + $107 = $106 * 3 | 0; + $108 = _calloc($107, 4) | 0; + if (!$108) { + _arLog(3, 5471, $vararg_buffer); + _exit(1); + } + do switch ($pixelFormat | 0) { + case 0: + { + $264 = $103 + 100.0; + $265 = +($ydiv2$3 | 0); + $266 = +($sample_size$xdiv2$2 | 0); + $267 = $para + 48 | 0; + $268 = $para + 56 | 0; + $269 = $para + 64 | 0; + $270 = $para + 8 | 0; + $271 = $para + 16 | 0; + $272 = $para + 24 | 0; + $273 = $para + 32 | 0; + $274 = $para + 40 | 0; + $275 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $277 = ($sample_size$xdiv2$2 | 0) > 0; + $j$0241 = 0; + do { + $284 = $264 + $104 * (+($j$0241 | 0) + .5) / $265; + if ($277) { + $i$1237 = 0; + do { + $289 = $264 + $104 * (+($i$1237 | 0) + .5) / $266; + $296 = +HEAPF64[$269 >> 3] + (+HEAPF64[$267 >> 3] * $289 + $284 * +HEAPF64[$268 >> 3]); + if ($296 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $306 = (+HEAPF64[$271 >> 3] + ($289 * +HEAPF64[$para >> 3] + $284 * +HEAPF64[$270 >> 3])) / $296; + HEAPF32[$xc2 >> 2] = $306; + $315 = (+HEAPF64[$274 >> 3] + ($289 * +HEAPF64[$272 >> 3] + $284 * +HEAPF64[$273 >> 3])) / $296; + HEAPF32[$yc2 >> 2] = $315; + _arParamIdeal2ObservLTf($paramLTf, $306, $315, $xc2, $yc2) | 0; + $316 = +HEAPF32[$xc2 >> 2]; + if ($275) { + $xc$0 = ((~~($316 + 1.0) | 0) / 2 | 0) << 1; + $yc$0 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$0 = ~~($316 + .5); + $yc$0 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$0 | 0) > -1) if (($yc$0 | 0) < ($ysize | 0) & (($yc$0 | 0) > -1 & ($xc$0 | 0) < ($xsize | 0))) { + $337 = ((Math_imul($yc$0, $xsize) | 0) + $xc$0 | 0) * 3 | 0; + $346 = ((Math_imul(($j$0241 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$1237 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $347 = $108 + ($346 << 2) | 0; + HEAP32[$347 >> 2] = (HEAP32[$347 >> 2] | 0) + (HEAPU8[$image + ($337 + 2) >> 0] | 0); + $355 = $108 + ($346 + 1 << 2) | 0; + HEAP32[$355 >> 2] = (HEAP32[$355 >> 2] | 0) + (HEAPU8[$image + ($337 + 1) >> 0] | 0); + $362 = $108 + ($346 + 2 << 2) | 0; + HEAP32[$362 >> 2] = (HEAP32[$362 >> 2] | 0) + (HEAPU8[$image + $337 >> 0] | 0); + } + $i$1237 = $i$1237 + 1 | 0; + } while (($i$1237 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$0241 = $j$0241 + 1 | 0; + } while (($j$0241 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 1: + { + $250 = $103 + 100.0; + $251 = +($ydiv2$3 | 0); + $252 = +($sample_size$xdiv2$2 | 0); + $253 = $para + 48 | 0; + $254 = $para + 56 | 0; + $255 = $para + 64 | 0; + $256 = $para + 8 | 0; + $257 = $para + 16 | 0; + $258 = $para + 24 | 0; + $259 = $para + 32 | 0; + $260 = $para + 40 | 0; + $261 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $263 = ($sample_size$xdiv2$2 | 0) > 0; + $j$1247 = 0; + do { + $373 = $250 + $104 * (+($j$1247 | 0) + .5) / $251; + if ($263) { + $i$2243 = 0; + do { + $378 = $250 + $104 * (+($i$2243 | 0) + .5) / $252; + $385 = +HEAPF64[$255 >> 3] + (+HEAPF64[$253 >> 3] * $378 + $373 * +HEAPF64[$254 >> 3]); + if ($385 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $395 = (+HEAPF64[$257 >> 3] + ($378 * +HEAPF64[$para >> 3] + $373 * +HEAPF64[$256 >> 3])) / $385; + HEAPF32[$xc2 >> 2] = $395; + $404 = (+HEAPF64[$260 >> 3] + ($378 * +HEAPF64[$258 >> 3] + $373 * +HEAPF64[$259 >> 3])) / $385; + HEAPF32[$yc2 >> 2] = $404; + _arParamIdeal2ObservLTf($paramLTf, $395, $404, $xc2, $yc2) | 0; + $405 = +HEAPF32[$xc2 >> 2]; + if ($261) { + $xc$1 = ((~~($405 + 1.0) | 0) / 2 | 0) << 1; + $yc$1 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$1 = ~~($405 + .5); + $yc$1 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$1 | 0) > -1) if (($yc$1 | 0) < ($ysize | 0) & (($yc$1 | 0) > -1 & ($xc$1 | 0) < ($xsize | 0))) { + $426 = ((Math_imul($yc$1, $xsize) | 0) + $xc$1 | 0) * 3 | 0; + $434 = ((Math_imul(($j$1247 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$2243 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $435 = $108 + ($434 << 2) | 0; + HEAP32[$435 >> 2] = (HEAP32[$435 >> 2] | 0) + (HEAPU8[$image + $426 >> 0] | 0); + $443 = $108 + ($434 + 1 << 2) | 0; + HEAP32[$443 >> 2] = (HEAP32[$443 >> 2] | 0) + (HEAPU8[$image + ($426 + 1) >> 0] | 0); + $451 = $108 + ($434 + 2 << 2) | 0; + HEAP32[$451 >> 2] = (HEAP32[$451 >> 2] | 0) + (HEAPU8[$image + ($426 + 2) >> 0] | 0); + } + $i$2243 = $i$2243 + 1 | 0; + } while (($i$2243 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$1247 = $j$1247 + 1 | 0; + } while (($j$1247 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 2: + { + $236 = $103 + 100.0; + $237 = +($ydiv2$3 | 0); + $238 = +($sample_size$xdiv2$2 | 0); + $239 = $para + 48 | 0; + $240 = $para + 56 | 0; + $241 = $para + 64 | 0; + $242 = $para + 8 | 0; + $243 = $para + 16 | 0; + $244 = $para + 24 | 0; + $245 = $para + 32 | 0; + $246 = $para + 40 | 0; + $247 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $249 = ($sample_size$xdiv2$2 | 0) > 0; + $j$2253 = 0; + do { + $462 = $236 + $104 * (+($j$2253 | 0) + .5) / $237; + if ($249) { + $i$3249 = 0; + do { + $467 = $236 + $104 * (+($i$3249 | 0) + .5) / $238; + $474 = +HEAPF64[$241 >> 3] + (+HEAPF64[$239 >> 3] * $467 + $462 * +HEAPF64[$240 >> 3]); + if ($474 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $484 = (+HEAPF64[$243 >> 3] + ($467 * +HEAPF64[$para >> 3] + $462 * +HEAPF64[$242 >> 3])) / $474; + HEAPF32[$xc2 >> 2] = $484; + $493 = (+HEAPF64[$246 >> 3] + ($467 * +HEAPF64[$244 >> 3] + $462 * +HEAPF64[$245 >> 3])) / $474; + HEAPF32[$yc2 >> 2] = $493; + _arParamIdeal2ObservLTf($paramLTf, $484, $493, $xc2, $yc2) | 0; + $494 = +HEAPF32[$xc2 >> 2]; + if ($247) { + $xc$2 = ((~~($494 + 1.0) | 0) / 2 | 0) << 1; + $yc$2 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$2 = ~~($494 + .5); + $yc$2 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$2 | 0) > -1) if (($yc$2 | 0) < ($ysize | 0) & (($yc$2 | 0) > -1 & ($xc$2 | 0) < ($xsize | 0))) { + $515 = (Math_imul($yc$2, $xsize) | 0) + $xc$2 << 2; + $524 = ((Math_imul(($j$2253 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$3249 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $525 = $108 + ($524 << 2) | 0; + HEAP32[$525 >> 2] = (HEAP32[$525 >> 2] | 0) + (HEAPU8[$image + ($515 | 2) >> 0] | 0); + $533 = $108 + ($524 + 1 << 2) | 0; + HEAP32[$533 >> 2] = (HEAP32[$533 >> 2] | 0) + (HEAPU8[$image + ($515 | 1) >> 0] | 0); + $540 = $108 + ($524 + 2 << 2) | 0; + HEAP32[$540 >> 2] = (HEAP32[$540 >> 2] | 0) + (HEAPU8[$image + $515 >> 0] | 0); + } + $i$3249 = $i$3249 + 1 | 0; + } while (($i$3249 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$2253 = $j$2253 + 1 | 0; + } while (($j$2253 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 3: + { + $222 = $103 + 100.0; + $223 = +($ydiv2$3 | 0); + $224 = +($sample_size$xdiv2$2 | 0); + $225 = $para + 48 | 0; + $226 = $para + 56 | 0; + $227 = $para + 64 | 0; + $228 = $para + 8 | 0; + $229 = $para + 16 | 0; + $230 = $para + 24 | 0; + $231 = $para + 32 | 0; + $232 = $para + 40 | 0; + $233 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $235 = ($sample_size$xdiv2$2 | 0) > 0; + $j$3259 = 0; + do { + $551 = $222 + $104 * (+($j$3259 | 0) + .5) / $223; + if ($235) { + $i$4255 = 0; + do { + $556 = $222 + $104 * (+($i$4255 | 0) + .5) / $224; + $563 = +HEAPF64[$227 >> 3] + (+HEAPF64[$225 >> 3] * $556 + $551 * +HEAPF64[$226 >> 3]); + if ($563 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $573 = (+HEAPF64[$229 >> 3] + ($556 * +HEAPF64[$para >> 3] + $551 * +HEAPF64[$228 >> 3])) / $563; + HEAPF32[$xc2 >> 2] = $573; + $582 = (+HEAPF64[$232 >> 3] + ($556 * +HEAPF64[$230 >> 3] + $551 * +HEAPF64[$231 >> 3])) / $563; + HEAPF32[$yc2 >> 2] = $582; + _arParamIdeal2ObservLTf($paramLTf, $573, $582, $xc2, $yc2) | 0; + $583 = +HEAPF32[$xc2 >> 2]; + if ($233) { + $xc$3 = ((~~($583 + 1.0) | 0) / 2 | 0) << 1; + $yc$3 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$3 = ~~($583 + .5); + $yc$3 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$3 | 0) > -1) if (($yc$3 | 0) < ($ysize | 0) & (($yc$3 | 0) > -1 & ($xc$3 | 0) < ($xsize | 0))) { + $604 = (Math_imul($yc$3, $xsize) | 0) + $xc$3 << 2; + $612 = ((Math_imul(($j$3259 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$4255 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $613 = $108 + ($612 << 2) | 0; + HEAP32[$613 >> 2] = (HEAP32[$613 >> 2] | 0) + (HEAPU8[$image + $604 >> 0] | 0); + $621 = $108 + ($612 + 1 << 2) | 0; + HEAP32[$621 >> 2] = (HEAP32[$621 >> 2] | 0) + (HEAPU8[$image + ($604 | 1) >> 0] | 0); + $629 = $108 + ($612 + 2 << 2) | 0; + HEAP32[$629 >> 2] = (HEAP32[$629 >> 2] | 0) + (HEAPU8[$image + ($604 | 2) >> 0] | 0); + } + $i$4255 = $i$4255 + 1 | 0; + } while (($i$4255 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$3259 = $j$3259 + 1 | 0; + } while (($j$3259 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 4: + { + $208 = $103 + 100.0; + $209 = +($ydiv2$3 | 0); + $210 = +($sample_size$xdiv2$2 | 0); + $211 = $para + 48 | 0; + $212 = $para + 56 | 0; + $213 = $para + 64 | 0; + $214 = $para + 8 | 0; + $215 = $para + 16 | 0; + $216 = $para + 24 | 0; + $217 = $para + 32 | 0; + $218 = $para + 40 | 0; + $219 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $221 = ($sample_size$xdiv2$2 | 0) > 0; + $j$4265 = 0; + do { + $640 = $208 + $104 * (+($j$4265 | 0) + .5) / $209; + if ($221) { + $i$5261 = 0; + do { + $645 = $208 + $104 * (+($i$5261 | 0) + .5) / $210; + $652 = +HEAPF64[$213 >> 3] + (+HEAPF64[$211 >> 3] * $645 + $640 * +HEAPF64[$212 >> 3]); + if ($652 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $662 = (+HEAPF64[$215 >> 3] + ($645 * +HEAPF64[$para >> 3] + $640 * +HEAPF64[$214 >> 3])) / $652; + HEAPF32[$xc2 >> 2] = $662; + $671 = (+HEAPF64[$218 >> 3] + ($645 * +HEAPF64[$216 >> 3] + $640 * +HEAPF64[$217 >> 3])) / $652; + HEAPF32[$yc2 >> 2] = $671; + _arParamIdeal2ObservLTf($paramLTf, $662, $671, $xc2, $yc2) | 0; + $672 = +HEAPF32[$xc2 >> 2]; + if ($219) { + $xc$4 = ((~~($672 + 1.0) | 0) / 2 | 0) << 1; + $yc$4 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$4 = ~~($672 + .5); + $yc$4 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$4 | 0) > -1) if (($yc$4 | 0) < ($ysize | 0) & (($yc$4 | 0) > -1 & ($xc$4 | 0) < ($xsize | 0))) { + $693 = (Math_imul($yc$4, $xsize) | 0) + $xc$4 << 2; + $702 = ((Math_imul(($j$4265 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$5261 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $703 = $108 + ($702 << 2) | 0; + HEAP32[$703 >> 2] = (HEAP32[$703 >> 2] | 0) + (HEAPU8[$image + ($693 | 1) >> 0] | 0); + $711 = $108 + ($702 + 1 << 2) | 0; + HEAP32[$711 >> 2] = (HEAP32[$711 >> 2] | 0) + (HEAPU8[$image + ($693 | 2) >> 0] | 0); + $719 = $108 + ($702 + 2 << 2) | 0; + HEAP32[$719 >> 2] = (HEAP32[$719 >> 2] | 0) + (HEAPU8[$image + ($693 | 3) >> 0] | 0); + } + $i$5261 = $i$5261 + 1 | 0; + } while (($i$5261 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$4265 = $j$4265 + 1 | 0; + } while (($j$4265 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 5: + case 12: + case 13: + case 14: + { + $194 = $103 + 100.0; + $195 = +($ydiv2$3 | 0); + $196 = +($sample_size$xdiv2$2 | 0); + $197 = $para + 48 | 0; + $198 = $para + 56 | 0; + $199 = $para + 64 | 0; + $200 = $para + 8 | 0; + $201 = $para + 16 | 0; + $202 = $para + 24 | 0; + $203 = $para + 32 | 0; + $204 = $para + 40 | 0; + $205 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $207 = ($sample_size$xdiv2$2 | 0) > 0; + $j$5271 = 0; + do { + $730 = $194 + $104 * (+($j$5271 | 0) + .5) / $195; + if ($207) { + $i$6267 = 0; + do { + $735 = $194 + $104 * (+($i$6267 | 0) + .5) / $196; + $742 = +HEAPF64[$199 >> 3] + (+HEAPF64[$197 >> 3] * $735 + $730 * +HEAPF64[$198 >> 3]); + if ($742 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $752 = (+HEAPF64[$201 >> 3] + ($735 * +HEAPF64[$para >> 3] + $730 * +HEAPF64[$200 >> 3])) / $742; + HEAPF32[$xc2 >> 2] = $752; + $761 = (+HEAPF64[$204 >> 3] + ($735 * +HEAPF64[$202 >> 3] + $730 * +HEAPF64[$203 >> 3])) / $742; + HEAPF32[$yc2 >> 2] = $761; + _arParamIdeal2ObservLTf($paramLTf, $752, $761, $xc2, $yc2) | 0; + $762 = +HEAPF32[$xc2 >> 2]; + if ($205) { + $xc$5 = ((~~($762 + 1.0) | 0) / 2 | 0) << 1; + $yc$5 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$5 = ~~($762 + .5); + $yc$5 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$5 | 0) > -1) if (($yc$5 | 0) < ($ysize | 0) & (($yc$5 | 0) > -1 & ($xc$5 | 0) < ($xsize | 0))) { + $783 = $image + ((Math_imul($yc$5, $xsize) | 0) + $xc$5) | 0; + $785 = HEAPU8[$783 >> 0] | 0; + $790 = ((Math_imul(($j$5271 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$6267 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $791 = $108 + ($790 << 2) | 0; + HEAP32[$791 >> 2] = (HEAP32[$791 >> 2] | 0) + $785; + $795 = $108 + ($790 + 1 << 2) | 0; + HEAP32[$795 >> 2] = (HEAP32[$795 >> 2] | 0) + $785; + $799 = $108 + ($790 + 2 << 2) | 0; + HEAP32[$799 >> 2] = (HEAP32[$799 >> 2] | 0) + $785; + } + $i$6267 = $i$6267 + 1 | 0; + } while (($i$6267 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$5271 = $j$5271 + 1 | 0; + } while (($j$5271 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 6: + { + $180 = $103 + 100.0; + $181 = +($ydiv2$3 | 0); + $182 = +($sample_size$xdiv2$2 | 0); + $183 = $para + 48 | 0; + $184 = $para + 56 | 0; + $185 = $para + 64 | 0; + $186 = $para + 8 | 0; + $187 = $para + 16 | 0; + $188 = $para + 24 | 0; + $189 = $para + 32 | 0; + $190 = $para + 40 | 0; + $191 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $193 = ($sample_size$xdiv2$2 | 0) > 0; + $j$6277 = 0; + do { + $810 = $180 + $104 * (+($j$6277 | 0) + .5) / $181; + if ($193) { + $i$7273 = 0; + do { + $815 = $180 + $104 * (+($i$7273 | 0) + .5) / $182; + $822 = +HEAPF64[$185 >> 3] + (+HEAPF64[$183 >> 3] * $815 + $810 * +HEAPF64[$184 >> 3]); + if ($822 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $832 = (+HEAPF64[$187 >> 3] + ($815 * +HEAPF64[$para >> 3] + $810 * +HEAPF64[$186 >> 3])) / $822; + HEAPF32[$xc2 >> 2] = $832; + $841 = (+HEAPF64[$190 >> 3] + ($815 * +HEAPF64[$188 >> 3] + $810 * +HEAPF64[$189 >> 3])) / $822; + HEAPF32[$yc2 >> 2] = $841; + _arParamIdeal2ObservLTf($paramLTf, $832, $841, $xc2, $yc2) | 0; + $842 = +HEAPF32[$xc2 >> 2]; + if ($191) { + $xc$6 = ((~~($842 + 1.0) | 0) / 2 | 0) << 1; + $yc$6 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$6 = ~~($842 + .5); + $yc$6 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$6 | 0) > -1) if (($yc$6 | 0) < ($ysize | 0) & (($yc$6 | 0) > -1 & ($xc$6 | 0) < ($xsize | 0))) { + $863 = (Math_imul($yc$6, $xsize) | 0) + $xc$6 << 2; + $872 = ((Math_imul(($j$6277 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$7273 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $873 = $108 + ($872 << 2) | 0; + HEAP32[$873 >> 2] = (HEAP32[$873 >> 2] | 0) + (HEAPU8[$image + ($863 | 3) >> 0] | 0); + $881 = $108 + ($872 + 1 << 2) | 0; + HEAP32[$881 >> 2] = (HEAP32[$881 >> 2] | 0) + (HEAPU8[$image + ($863 | 2) >> 0] | 0); + $889 = $108 + ($872 + 2 << 2) | 0; + HEAP32[$889 >> 2] = (HEAP32[$889 >> 2] | 0) + (HEAPU8[$image + ($863 | 1) >> 0] | 0); + } + $i$7273 = $i$7273 + 1 | 0; + } while (($i$7273 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$6277 = $j$6277 + 1 | 0; + } while (($j$6277 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 7: + { + $166 = $103 + 100.0; + $167 = +($ydiv2$3 | 0); + $168 = +($sample_size$xdiv2$2 | 0); + $169 = $para + 48 | 0; + $170 = $para + 56 | 0; + $171 = $para + 64 | 0; + $172 = $para + 8 | 0; + $173 = $para + 16 | 0; + $174 = $para + 24 | 0; + $175 = $para + 32 | 0; + $176 = $para + 40 | 0; + $177 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $179 = ($sample_size$xdiv2$2 | 0) > 0; + $j$7283 = 0; + do { + $900 = $166 + $104 * (+($j$7283 | 0) + .5) / $167; + if ($179) { + $i$8279 = 0; + do { + $905 = $166 + $104 * (+($i$8279 | 0) + .5) / $168; + $912 = +HEAPF64[$171 >> 3] + (+HEAPF64[$169 >> 3] * $905 + $900 * +HEAPF64[$170 >> 3]); + if ($912 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $922 = (+HEAPF64[$173 >> 3] + ($905 * +HEAPF64[$para >> 3] + $900 * +HEAPF64[$172 >> 3])) / $912; + HEAPF32[$xc2 >> 2] = $922; + $931 = (+HEAPF64[$176 >> 3] + ($905 * +HEAPF64[$174 >> 3] + $900 * +HEAPF64[$175 >> 3])) / $912; + HEAPF32[$yc2 >> 2] = $931; + _arParamIdeal2ObservLTf($paramLTf, $922, $931, $xc2, $yc2) | 0; + $932 = +HEAPF32[$xc2 >> 2]; + if ($177) { + $xc$7 = ((~~($932 + 1.0) | 0) / 2 | 0) << 1; + $yc$7 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$7 = ~~($932 + .5); + $yc$7 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$7 | 0) > -1) if (($yc$7 | 0) < ($ysize | 0) & (($yc$7 | 0) > -1 & ($xc$7 | 0) < ($xsize | 0))) { + $951 = Math_imul($yc$7, $xsize) | 0; + $954 = ($xc$7 & 65534) + $951 << 1; + $959 = +((HEAPU8[$image + $954 >> 0] | 0) + -128 | 0); + $973 = +((HEAPU8[$image + ($954 + 2) >> 0] | 0) + -128 | 0); + $974 = +((HEAPU8[$image + ($951 + $xc$7 << 1 | 1) >> 0] | 0) + -16 | 0) * 298.0820007324219; + $978 = ~~($959 * 516.4110107421875 + $974) >> 8; + $984 = ~~($974 - $959 * 100.29100036621094 - $973 * 208.1199951171875) >> 8; + $988 = ~~($974 + $973 * 408.5830078125) >> 8; + $990 = ($978 | 0) > 0 ? $978 : 0; + $996 = ((Math_imul(($j$7283 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$8279 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $997 = $108 + ($996 << 2) | 0; + HEAP32[$997 >> 2] = (($990 | 0) < 255 ? $990 : 255) + (HEAP32[$997 >> 2] | 0); + $1001 = ($984 | 0) > 0 ? $984 : 0; + $1005 = $108 + ($996 + 1 << 2) | 0; + HEAP32[$1005 >> 2] = (($1001 | 0) < 255 ? $1001 : 255) + (HEAP32[$1005 >> 2] | 0); + $1009 = ($988 | 0) > 0 ? $988 : 0; + $1012 = $108 + ($996 + 2 << 2) | 0; + HEAP32[$1012 >> 2] = (($1009 | 0) < 255 ? $1009 : 255) + (HEAP32[$1012 >> 2] | 0); + } + $i$8279 = $i$8279 + 1 | 0; + } while (($i$8279 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$7283 = $j$7283 + 1 | 0; + } while (($j$7283 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 8: + { + $152 = $103 + 100.0; + $153 = +($ydiv2$3 | 0); + $154 = +($sample_size$xdiv2$2 | 0); + $155 = $para + 48 | 0; + $156 = $para + 56 | 0; + $157 = $para + 64 | 0; + $158 = $para + 8 | 0; + $159 = $para + 16 | 0; + $160 = $para + 24 | 0; + $161 = $para + 32 | 0; + $162 = $para + 40 | 0; + $163 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $165 = ($sample_size$xdiv2$2 | 0) > 0; + $j$8289 = 0; + do { + $1023 = $152 + $104 * (+($j$8289 | 0) + .5) / $153; + if ($165) { + $i$9285 = 0; + do { + $1028 = $152 + $104 * (+($i$9285 | 0) + .5) / $154; + $1035 = +HEAPF64[$157 >> 3] + (+HEAPF64[$155 >> 3] * $1028 + $1023 * +HEAPF64[$156 >> 3]); + if ($1035 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $1045 = (+HEAPF64[$159 >> 3] + ($1028 * +HEAPF64[$para >> 3] + $1023 * +HEAPF64[$158 >> 3])) / $1035; + HEAPF32[$xc2 >> 2] = $1045; + $1054 = (+HEAPF64[$162 >> 3] + ($1028 * +HEAPF64[$160 >> 3] + $1023 * +HEAPF64[$161 >> 3])) / $1035; + HEAPF32[$yc2 >> 2] = $1054; + _arParamIdeal2ObservLTf($paramLTf, $1045, $1054, $xc2, $yc2) | 0; + $1055 = +HEAPF32[$xc2 >> 2]; + if ($163) { + $xc$8 = ((~~($1055 + 1.0) | 0) / 2 | 0) << 1; + $yc$8 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$8 = ~~($1055 + .5); + $yc$8 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$8 | 0) > -1) if (($yc$8 | 0) < ($ysize | 0) & (($yc$8 | 0) > -1 & ($xc$8 | 0) < ($xsize | 0))) { + $1074 = Math_imul($yc$8, $xsize) | 0; + $1084 = ($xc$8 & 65534) + $1074 << 1; + $1090 = +((HEAPU8[$image + ($1084 | 1) >> 0] | 0) + -128 | 0); + $1096 = +((HEAPU8[$image + ($1084 + 3) >> 0] | 0) + -128 | 0); + $1097 = +((HEAPU8[$image + ($1074 + $xc$8 << 1) >> 0] | 0) + -16 | 0) * 298.0820007324219; + $1101 = ~~($1097 + $1090 * 516.4110107421875) >> 8; + $1107 = ~~($1097 - $1090 * 100.29100036621094 - $1096 * 208.1199951171875) >> 8; + $1111 = ~~($1097 + $1096 * 408.5830078125) >> 8; + $1113 = ($1101 | 0) > 0 ? $1101 : 0; + $1119 = ((Math_imul(($j$8289 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$9285 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $1120 = $108 + ($1119 << 2) | 0; + HEAP32[$1120 >> 2] = (($1113 | 0) < 255 ? $1113 : 255) + (HEAP32[$1120 >> 2] | 0); + $1124 = ($1107 | 0) > 0 ? $1107 : 0; + $1128 = $108 + ($1119 + 1 << 2) | 0; + HEAP32[$1128 >> 2] = (($1124 | 0) < 255 ? $1124 : 255) + (HEAP32[$1128 >> 2] | 0); + $1132 = ($1111 | 0) > 0 ? $1111 : 0; + $1135 = $108 + ($1119 + 2 << 2) | 0; + HEAP32[$1135 >> 2] = (($1132 | 0) < 255 ? $1132 : 255) + (HEAP32[$1135 >> 2] | 0); + } + $i$9285 = $i$9285 + 1 | 0; + } while (($i$9285 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$8289 = $j$8289 + 1 | 0; + } while (($j$8289 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 9: + { + $138 = $103 + 100.0; + $139 = +($ydiv2$3 | 0); + $140 = +($sample_size$xdiv2$2 | 0); + $141 = $para + 48 | 0; + $142 = $para + 56 | 0; + $143 = $para + 64 | 0; + $144 = $para + 8 | 0; + $145 = $para + 16 | 0; + $146 = $para + 24 | 0; + $147 = $para + 32 | 0; + $148 = $para + 40 | 0; + $149 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $151 = ($sample_size$xdiv2$2 | 0) > 0; + $j$9295 = 0; + do { + $1146 = $138 + $104 * (+($j$9295 | 0) + .5) / $139; + if ($151) { + $i$10291 = 0; + do { + $1151 = $138 + $104 * (+($i$10291 | 0) + .5) / $140; + $1158 = +HEAPF64[$143 >> 3] + (+HEAPF64[$141 >> 3] * $1151 + $1146 * +HEAPF64[$142 >> 3]); + if ($1158 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $1168 = (+HEAPF64[$145 >> 3] + ($1151 * +HEAPF64[$para >> 3] + $1146 * +HEAPF64[$144 >> 3])) / $1158; + HEAPF32[$xc2 >> 2] = $1168; + $1177 = (+HEAPF64[$148 >> 3] + ($1151 * +HEAPF64[$146 >> 3] + $1146 * +HEAPF64[$147 >> 3])) / $1158; + HEAPF32[$yc2 >> 2] = $1177; + _arParamIdeal2ObservLTf($paramLTf, $1168, $1177, $xc2, $yc2) | 0; + $1178 = +HEAPF32[$xc2 >> 2]; + if ($149) { + $xc$9 = ((~~($1178 + 1.0) | 0) / 2 | 0) << 1; + $yc$9 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$9 = ~~($1178 + .5); + $yc$9 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$9 | 0) > -1) if (($yc$9 | 0) < ($ysize | 0) & (($yc$9 | 0) > -1 & ($xc$9 | 0) < ($xsize | 0))) { + $1199 = (Math_imul($yc$9, $xsize) | 0) + $xc$9 << 1; + $1203 = HEAPU8[$image + ($1199 | 1) >> 0] | 0; + $1211 = ((Math_imul(($j$9295 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$10291 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $1212 = $108 + ($1211 << 2) | 0; + HEAP32[$1212 >> 2] = ($1203 << 3 & 248 | 4) + (HEAP32[$1212 >> 2] | 0); + $1217 = HEAPU8[$image + $1199 >> 0] | 0; + $1225 = $108 + ($1211 + 1 << 2) | 0; + HEAP32[$1225 >> 2] = ($1217 << 5 & 224 | $1203 >>> 3 & 28 | 2) + (HEAP32[$1225 >> 2] | 0); + $1231 = $108 + ($1211 + 2 << 2) | 0; + HEAP32[$1231 >> 2] = ($1217 & 248 | 4) + (HEAP32[$1231 >> 2] | 0); + } + $i$10291 = $i$10291 + 1 | 0; + } while (($i$10291 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$9295 = $j$9295 + 1 | 0; + } while (($j$9295 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 10: + { + $124 = $103 + 100.0; + $125 = +($ydiv2$3 | 0); + $126 = +($sample_size$xdiv2$2 | 0); + $127 = $para + 48 | 0; + $128 = $para + 56 | 0; + $129 = $para + 64 | 0; + $130 = $para + 8 | 0; + $131 = $para + 16 | 0; + $132 = $para + 24 | 0; + $133 = $para + 32 | 0; + $134 = $para + 40 | 0; + $135 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $137 = ($sample_size$xdiv2$2 | 0) > 0; + $j$10301 = 0; + do { + $1242 = $124 + $104 * (+($j$10301 | 0) + .5) / $125; + if ($137) { + $i$11297 = 0; + do { + $1247 = $124 + $104 * (+($i$11297 | 0) + .5) / $126; + $1254 = +HEAPF64[$129 >> 3] + (+HEAPF64[$127 >> 3] * $1247 + $1242 * +HEAPF64[$128 >> 3]); + if ($1254 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $1264 = (+HEAPF64[$131 >> 3] + ($1247 * +HEAPF64[$para >> 3] + $1242 * +HEAPF64[$130 >> 3])) / $1254; + HEAPF32[$xc2 >> 2] = $1264; + $1273 = (+HEAPF64[$134 >> 3] + ($1247 * +HEAPF64[$132 >> 3] + $1242 * +HEAPF64[$133 >> 3])) / $1254; + HEAPF32[$yc2 >> 2] = $1273; + _arParamIdeal2ObservLTf($paramLTf, $1264, $1273, $xc2, $yc2) | 0; + $1274 = +HEAPF32[$xc2 >> 2]; + if ($135) { + $xc$10 = ((~~($1274 + 1.0) | 0) / 2 | 0) << 1; + $yc$10 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$10 = ~~($1274 + .5); + $yc$10 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$10 | 0) > -1) if (($yc$10 | 0) < ($ysize | 0) & (($yc$10 | 0) > -1 & ($xc$10 | 0) < ($xsize | 0))) { + $1295 = (Math_imul($yc$10, $xsize) | 0) + $xc$10 << 1; + $1299 = HEAPU8[$image + ($1295 | 1) >> 0] | 0; + $1307 = ((Math_imul(($j$10301 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$11297 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $1308 = $108 + ($1307 << 2) | 0; + HEAP32[$1308 >> 2] = ($1299 << 2 & 248 | 4) + (HEAP32[$1308 >> 2] | 0); + $1313 = HEAPU8[$image + $1295 >> 0] | 0; + $1321 = $108 + ($1307 + 1 << 2) | 0; + HEAP32[$1321 >> 2] = ($1313 << 5 & 224 | $1299 >>> 3 & 24 | 4) + (HEAP32[$1321 >> 2] | 0); + $1327 = $108 + ($1307 + 2 << 2) | 0; + HEAP32[$1327 >> 2] = ($1313 & 248 | 4) + (HEAP32[$1327 >> 2] | 0); + } + $i$11297 = $i$11297 + 1 | 0; + } while (($i$11297 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$10301 = $j$10301 + 1 | 0; + } while (($j$10301 | 0) < ($ydiv2$3 | 0)); + } + break; + } + case 11: + { + $110 = $103 + 100.0; + $111 = +($ydiv2$3 | 0); + $112 = +($sample_size$xdiv2$2 | 0); + $113 = $para + 48 | 0; + $114 = $para + 56 | 0; + $115 = $para + 64 | 0; + $116 = $para + 8 | 0; + $117 = $para + 16 | 0; + $118 = $para + 24 | 0; + $119 = $para + 32 | 0; + $120 = $para + 40 | 0; + $121 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $123 = ($sample_size$xdiv2$2 | 0) > 0; + $j$11307 = 0; + do { + $1338 = $110 + $104 * (+($j$11307 | 0) + .5) / $111; + if ($123) { + $i$12303 = 0; + do { + $1343 = $110 + $104 * (+($i$12303 | 0) + .5) / $112; + $1350 = +HEAPF64[$115 >> 3] + (+HEAPF64[$113 >> 3] * $1343 + $1338 * +HEAPF64[$114 >> 3]); + if ($1350 == 0.0) { + $ext_patt2$0 = $108; + label = 278; + break L13; + } + $1360 = (+HEAPF64[$117 >> 3] + ($1343 * +HEAPF64[$para >> 3] + $1338 * +HEAPF64[$116 >> 3])) / $1350; + HEAPF32[$xc2 >> 2] = $1360; + $1369 = (+HEAPF64[$120 >> 3] + ($1343 * +HEAPF64[$118 >> 3] + $1338 * +HEAPF64[$119 >> 3])) / $1350; + HEAPF32[$yc2 >> 2] = $1369; + _arParamIdeal2ObservLTf($paramLTf, $1360, $1369, $xc2, $yc2) | 0; + $1370 = +HEAPF32[$xc2 >> 2]; + if ($121) { + $xc$11 = ((~~($1370 + 1.0) | 0) / 2 | 0) << 1; + $yc$11 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$11 = ~~($1370 + .5); + $yc$11 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$11 | 0) > -1) if (($yc$11 | 0) < ($ysize | 0) & (($yc$11 | 0) > -1 & ($xc$11 | 0) < ($xsize | 0))) { + $1391 = (Math_imul($yc$11, $xsize) | 0) + $xc$11 << 1; + $1402 = ((Math_imul(($j$11307 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$12303 | 0) / ($99 | 0) | 0) | 0) * 3 | 0; + $1403 = $108 + ($1402 << 2) | 0; + HEAP32[$1403 >> 2] = (HEAP32[$1403 >> 2] | 0) + ((HEAPU8[$image + ($1391 | 1) >> 0] | 0) & 240 | 8); + $1408 = HEAPU8[$image + $1391 >> 0] | 0; + $1413 = $108 + ($1402 + 1 << 2) | 0; + HEAP32[$1413 >> 2] = ($1408 << 4 & 240 | 8) + (HEAP32[$1413 >> 2] | 0); + $1419 = $108 + ($1402 + 2 << 2) | 0; + HEAP32[$1419 >> 2] = ($1408 & 240 | 8) + (HEAP32[$1419 >> 2] | 0); + } + $i$12303 = $i$12303 + 1 | 0; + } while (($i$12303 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$11307 = $j$11307 + 1 | 0; + } while (($j$11307 | 0) < ($ydiv2$3 | 0)); + } + break; + } + default: + { + _arLog(3, 4615, $vararg_buffer1); + $ext_patt2$0 = $108; + label = 278; + break L13; + } + } while (0); + $278 = Math_imul($100, $99) | 0; + if ($106) { + $i$13236 = 0; + do { + HEAP8[$ext_patt + $i$13236 >> 0] = ((HEAP32[$108 + ($i$13236 << 2) >> 2] | 0) >>> 0) / ($278 >>> 0) | 0; + $i$13236 = $i$13236 + 1 | 0; + } while (($i$13236 | 0) < ($107 | 0)); + } + _free($108); + $$0 = 0; + } else { + $1433 = _calloc($106, 4) | 0; + if (!$1433) { + _arLog(3, 5471, $vararg_buffer3); + _exit(1); + } + L233 : do if ($pixelFormat >>> 0 < 2) { + $1436 = $103 + 100.0; + $1437 = +($ydiv2$3 | 0); + $1438 = +($sample_size$xdiv2$2 | 0); + $1439 = $para + 48 | 0; + $1440 = $para + 56 | 0; + $1441 = $para + 64 | 0; + $1442 = $para + 8 | 0; + $1443 = $para + 16 | 0; + $1444 = $para + 24 | 0; + $1445 = $para + 32 | 0; + $1446 = $para + 40 | 0; + $1447 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) > 0) { + $1449 = ($sample_size$xdiv2$2 | 0) > 0; + $j$12316 = 0; + do { + $1456 = $1436 + $104 * (+($j$12316 | 0) + .5) / $1437; + if ($1449) { + $i$14312 = 0; + do { + $1461 = $1436 + $104 * (+($i$14312 | 0) + .5) / $1438; + $1468 = +HEAPF64[$1441 >> 3] + (+HEAPF64[$1439 >> 3] * $1461 + $1456 * +HEAPF64[$1440 >> 3]); + if ($1468 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1478 = (+HEAPF64[$1443 >> 3] + ($1461 * +HEAPF64[$para >> 3] + $1456 * +HEAPF64[$1442 >> 3])) / $1468; + HEAPF32[$xc2 >> 2] = $1478; + $1487 = (+HEAPF64[$1446 >> 3] + ($1461 * +HEAPF64[$1444 >> 3] + $1456 * +HEAPF64[$1445 >> 3])) / $1468; + HEAPF32[$yc2 >> 2] = $1487; + _arParamIdeal2ObservLTf($paramLTf, $1478, $1487, $xc2, $yc2) | 0; + $1488 = +HEAPF32[$xc2 >> 2]; + if ($1447) { + $xc$12 = ((~~($1488 + 1.0) | 0) / 2 | 0) << 1; + $yc$12 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$12 = ~~($1488 + .5); + $yc$12 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$12 | 0) > -1) if (($yc$12 | 0) < ($ysize | 0) & (($yc$12 | 0) > -1 & ($xc$12 | 0) < ($xsize | 0))) { + $1509 = ((Math_imul($yc$12, $xsize) | 0) + $xc$12 | 0) * 3 | 0; + $1528 = $1433 + ((Math_imul(($j$12316 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$14312 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$1528 >> 2] = (HEAP32[$1528 >> 2] | 0) + ((((HEAPU8[$image + ($1509 + 1) >> 0] | 0) + (HEAPU8[$image + $1509 >> 0] | 0) + (HEAPU8[$image + ($1509 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0); + } + $i$14312 = $i$14312 + 1 | 0; + } while (($i$14312 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$12316 = $j$12316 + 1 | 0; + } while (($j$12316 | 0) < ($ydiv2$3 | 0)); + } + } else { + if (($pixelFormat & -2 | 0) == 2) { + $1537 = $103 + 100.0; + $1538 = +($ydiv2$3 | 0); + $1539 = +($sample_size$xdiv2$2 | 0); + $1540 = $para + 48 | 0; + $1541 = $para + 56 | 0; + $1542 = $para + 64 | 0; + $1543 = $para + 8 | 0; + $1544 = $para + 16 | 0; + $1545 = $para + 24 | 0; + $1546 = $para + 32 | 0; + $1547 = $para + 40 | 0; + $1548 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break; + $1550 = ($sample_size$xdiv2$2 | 0) > 0; + $j$13322 = 0; + while (1) { + $1555 = $1537 + $104 * (+($j$13322 | 0) + .5) / $1538; + if ($1550) { + $i$15318 = 0; + do { + $1560 = $1537 + $104 * (+($i$15318 | 0) + .5) / $1539; + $1567 = +HEAPF64[$1542 >> 3] + (+HEAPF64[$1540 >> 3] * $1560 + $1555 * +HEAPF64[$1541 >> 3]); + if ($1567 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1577 = (+HEAPF64[$1544 >> 3] + ($1560 * +HEAPF64[$para >> 3] + $1555 * +HEAPF64[$1543 >> 3])) / $1567; + HEAPF32[$xc2 >> 2] = $1577; + $1586 = (+HEAPF64[$1547 >> 3] + ($1560 * +HEAPF64[$1545 >> 3] + $1555 * +HEAPF64[$1546 >> 3])) / $1567; + HEAPF32[$yc2 >> 2] = $1586; + _arParamIdeal2ObservLTf($paramLTf, $1577, $1586, $xc2, $yc2) | 0; + $1587 = +HEAPF32[$xc2 >> 2]; + if ($1548) { + $xc$13 = ((~~($1587 + 1.0) | 0) / 2 | 0) << 1; + $yc$13 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$13 = ~~($1587 + .5); + $yc$13 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$13 | 0) > -1) if (($yc$13 | 0) < ($ysize | 0) & (($yc$13 | 0) > -1 & ($xc$13 | 0) < ($xsize | 0))) { + $1608 = (Math_imul($yc$13, $xsize) | 0) + $xc$13 << 2; + $1627 = $1433 + ((Math_imul(($j$13322 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$15318 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$1627 >> 2] = (HEAP32[$1627 >> 2] | 0) + ((((HEAPU8[$image + ($1608 | 1) >> 0] | 0) + (HEAPU8[$image + $1608 >> 0] | 0) + (HEAPU8[$image + ($1608 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0); + } + $i$15318 = $i$15318 + 1 | 0; + } while (($i$15318 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$13322 = $j$13322 + 1 | 0; + if (($j$13322 | 0) >= ($ydiv2$3 | 0)) break L233; + } + } + if (($pixelFormat & -3 | 0) == 4) { + $1636 = $103 + 100.0; + $1637 = +($ydiv2$3 | 0); + $1638 = +($sample_size$xdiv2$2 | 0); + $1639 = $para + 48 | 0; + $1640 = $para + 56 | 0; + $1641 = $para + 64 | 0; + $1642 = $para + 8 | 0; + $1643 = $para + 16 | 0; + $1644 = $para + 24 | 0; + $1645 = $para + 32 | 0; + $1646 = $para + 40 | 0; + $1647 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break; + $1649 = ($sample_size$xdiv2$2 | 0) > 0; + $j$14328 = 0; + while (1) { + $1654 = $1636 + $104 * (+($j$14328 | 0) + .5) / $1637; + if ($1649) { + $i$16324 = 0; + do { + $1659 = $1636 + $104 * (+($i$16324 | 0) + .5) / $1638; + $1666 = +HEAPF64[$1641 >> 3] + (+HEAPF64[$1639 >> 3] * $1659 + $1654 * +HEAPF64[$1640 >> 3]); + if ($1666 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1676 = (+HEAPF64[$1643 >> 3] + ($1659 * +HEAPF64[$para >> 3] + $1654 * +HEAPF64[$1642 >> 3])) / $1666; + HEAPF32[$xc2 >> 2] = $1676; + $1685 = (+HEAPF64[$1646 >> 3] + ($1659 * +HEAPF64[$1644 >> 3] + $1654 * +HEAPF64[$1645 >> 3])) / $1666; + HEAPF32[$yc2 >> 2] = $1685; + _arParamIdeal2ObservLTf($paramLTf, $1676, $1685, $xc2, $yc2) | 0; + $1686 = +HEAPF32[$xc2 >> 2]; + if ($1647) { + $xc$14 = ((~~($1686 + 1.0) | 0) / 2 | 0) << 1; + $yc$14 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$14 = ~~($1686 + .5); + $yc$14 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$14 | 0) > -1) if (($yc$14 | 0) < ($ysize | 0) & (($yc$14 | 0) > -1 & ($xc$14 | 0) < ($xsize | 0))) { + $1707 = (Math_imul($yc$14, $xsize) | 0) + $xc$14 << 2; + $1727 = $1433 + ((Math_imul(($j$14328 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$16324 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$1727 >> 2] = (HEAP32[$1727 >> 2] | 0) + ((((HEAPU8[$image + ($1707 | 2) >> 0] | 0) + (HEAPU8[$image + ($1707 | 1) >> 0] | 0) + (HEAPU8[$image + ($1707 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0); + } + $i$16324 = $i$16324 + 1 | 0; + } while (($i$16324 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$14328 = $j$14328 + 1 | 0; + if (($j$14328 | 0) >= ($ydiv2$3 | 0)) break L233; + } + } + switch ($pixelFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $1804 = $103 + 100.0; + $1805 = +($ydiv2$3 | 0); + $1806 = +($sample_size$xdiv2$2 | 0); + $1807 = $para + 48 | 0; + $1808 = $para + 56 | 0; + $1809 = $para + 64 | 0; + $1810 = $para + 8 | 0; + $1811 = $para + 16 | 0; + $1812 = $para + 24 | 0; + $1813 = $para + 32 | 0; + $1814 = $para + 40 | 0; + $1815 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1817 = ($sample_size$xdiv2$2 | 0) > 0; + $j$15334 = 0; + do { + $1822 = $1804 + $104 * (+($j$15334 | 0) + .5) / $1805; + if ($1817) { + $i$17330 = 0; + do { + $1827 = $1804 + $104 * (+($i$17330 | 0) + .5) / $1806; + $1834 = +HEAPF64[$1809 >> 3] + (+HEAPF64[$1807 >> 3] * $1827 + $1822 * +HEAPF64[$1808 >> 3]); + if ($1834 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1844 = (+HEAPF64[$1811 >> 3] + ($1827 * +HEAPF64[$para >> 3] + $1822 * +HEAPF64[$1810 >> 3])) / $1834; + HEAPF32[$xc2 >> 2] = $1844; + $1853 = (+HEAPF64[$1814 >> 3] + ($1827 * +HEAPF64[$1812 >> 3] + $1822 * +HEAPF64[$1813 >> 3])) / $1834; + HEAPF32[$yc2 >> 2] = $1853; + _arParamIdeal2ObservLTf($paramLTf, $1844, $1853, $xc2, $yc2) | 0; + $1854 = +HEAPF32[$xc2 >> 2]; + if ($1815) { + $xc$15 = ((~~($1854 + 1.0) | 0) / 2 | 0) << 1; + $yc$15 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$15 = ~~($1854 + .5); + $yc$15 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$15 | 0) > -1) if (($yc$15 | 0) < ($ysize | 0) & (($yc$15 | 0) > -1 & ($xc$15 | 0) < ($xsize | 0))) { + $1875 = $image + ((Math_imul($yc$15, $xsize) | 0) + $xc$15) | 0; + $1882 = $1433 + ((Math_imul(($j$15334 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$17330 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$1882 >> 2] = (HEAP32[$1882 >> 2] | 0) + (HEAPU8[$1875 >> 0] | 0); + } + $i$17330 = $i$17330 + 1 | 0; + } while (($i$17330 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$15334 = $j$15334 + 1 | 0; + } while (($j$15334 | 0) < ($ydiv2$3 | 0)); + break; + } + case 7: + { + $1790 = $103 + 100.0; + $1791 = +($ydiv2$3 | 0); + $1792 = +($sample_size$xdiv2$2 | 0); + $1793 = $para + 48 | 0; + $1794 = $para + 56 | 0; + $1795 = $para + 64 | 0; + $1796 = $para + 8 | 0; + $1797 = $para + 16 | 0; + $1798 = $para + 24 | 0; + $1799 = $para + 32 | 0; + $1800 = $para + 40 | 0; + $1801 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1803 = ($sample_size$xdiv2$2 | 0) > 0; + $j$16340 = 0; + do { + $1893 = $1790 + $104 * (+($j$16340 | 0) + .5) / $1791; + if ($1803) { + $i$18336 = 0; + do { + $1898 = $1790 + $104 * (+($i$18336 | 0) + .5) / $1792; + $1905 = +HEAPF64[$1795 >> 3] + (+HEAPF64[$1793 >> 3] * $1898 + $1893 * +HEAPF64[$1794 >> 3]); + if ($1905 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1915 = (+HEAPF64[$1797 >> 3] + ($1898 * +HEAPF64[$para >> 3] + $1893 * +HEAPF64[$1796 >> 3])) / $1905; + HEAPF32[$xc2 >> 2] = $1915; + $1924 = (+HEAPF64[$1800 >> 3] + ($1898 * +HEAPF64[$1798 >> 3] + $1893 * +HEAPF64[$1799 >> 3])) / $1905; + HEAPF32[$yc2 >> 2] = $1924; + _arParamIdeal2ObservLTf($paramLTf, $1915, $1924, $xc2, $yc2) | 0; + $1925 = +HEAPF32[$xc2 >> 2]; + if ($1801) { + $xc$16 = ((~~($1925 + 1.0) | 0) / 2 | 0) << 1; + $yc$16 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$16 = ~~($1925 + .5); + $yc$16 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$16 | 0) > -1) if (($yc$16 | 0) < ($ysize | 0) & (($yc$16 | 0) > -1 & ($xc$16 | 0) < ($xsize | 0))) { + $1948 = $image + ((Math_imul($yc$16, $xsize) | 0) + $xc$16 << 1 | 1) | 0; + $1955 = $1433 + ((Math_imul(($j$16340 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$18336 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$1955 >> 2] = (HEAP32[$1955 >> 2] | 0) + (HEAPU8[$1948 >> 0] | 0); + } + $i$18336 = $i$18336 + 1 | 0; + } while (($i$18336 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$16340 = $j$16340 + 1 | 0; + } while (($j$16340 | 0) < ($ydiv2$3 | 0)); + break; + } + case 8: + { + $1776 = $103 + 100.0; + $1777 = +($ydiv2$3 | 0); + $1778 = +($sample_size$xdiv2$2 | 0); + $1779 = $para + 48 | 0; + $1780 = $para + 56 | 0; + $1781 = $para + 64 | 0; + $1782 = $para + 8 | 0; + $1783 = $para + 16 | 0; + $1784 = $para + 24 | 0; + $1785 = $para + 32 | 0; + $1786 = $para + 40 | 0; + $1787 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1789 = ($sample_size$xdiv2$2 | 0) > 0; + $j$17346 = 0; + do { + $1966 = $1776 + $104 * (+($j$17346 | 0) + .5) / $1777; + if ($1789) { + $i$19342 = 0; + do { + $1971 = $1776 + $104 * (+($i$19342 | 0) + .5) / $1778; + $1978 = +HEAPF64[$1781 >> 3] + (+HEAPF64[$1779 >> 3] * $1971 + $1966 * +HEAPF64[$1780 >> 3]); + if ($1978 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $1988 = (+HEAPF64[$1783 >> 3] + ($1971 * +HEAPF64[$para >> 3] + $1966 * +HEAPF64[$1782 >> 3])) / $1978; + HEAPF32[$xc2 >> 2] = $1988; + $1997 = (+HEAPF64[$1786 >> 3] + ($1971 * +HEAPF64[$1784 >> 3] + $1966 * +HEAPF64[$1785 >> 3])) / $1978; + HEAPF32[$yc2 >> 2] = $1997; + _arParamIdeal2ObservLTf($paramLTf, $1988, $1997, $xc2, $yc2) | 0; + $1998 = +HEAPF32[$xc2 >> 2]; + if ($1787) { + $xc$17 = ((~~($1998 + 1.0) | 0) / 2 | 0) << 1; + $yc$17 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$17 = ~~($1998 + .5); + $yc$17 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$17 | 0) > -1) if (($yc$17 | 0) < ($ysize | 0) & (($yc$17 | 0) > -1 & ($xc$17 | 0) < ($xsize | 0))) { + $2020 = $image + ((Math_imul($yc$17, $xsize) | 0) + $xc$17 << 1) | 0; + $2027 = $1433 + ((Math_imul(($j$17346 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$19342 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$2027 >> 2] = (HEAP32[$2027 >> 2] | 0) + (HEAPU8[$2020 >> 0] | 0); + } + $i$19342 = $i$19342 + 1 | 0; + } while (($i$19342 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$17346 = $j$17346 + 1 | 0; + } while (($j$17346 | 0) < ($ydiv2$3 | 0)); + break; + } + case 9: + { + $1762 = $103 + 100.0; + $1763 = +($ydiv2$3 | 0); + $1764 = +($sample_size$xdiv2$2 | 0); + $1765 = $para + 48 | 0; + $1766 = $para + 56 | 0; + $1767 = $para + 64 | 0; + $1768 = $para + 8 | 0; + $1769 = $para + 16 | 0; + $1770 = $para + 24 | 0; + $1771 = $para + 32 | 0; + $1772 = $para + 40 | 0; + $1773 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1775 = ($sample_size$xdiv2$2 | 0) > 0; + $j$18352 = 0; + do { + $2038 = $1762 + $104 * (+($j$18352 | 0) + .5) / $1763; + if ($1775) { + $i$20348 = 0; + do { + $2043 = $1762 + $104 * (+($i$20348 | 0) + .5) / $1764; + $2050 = +HEAPF64[$1767 >> 3] + (+HEAPF64[$1765 >> 3] * $2043 + $2038 * +HEAPF64[$1766 >> 3]); + if ($2050 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $2060 = (+HEAPF64[$1769 >> 3] + ($2043 * +HEAPF64[$para >> 3] + $2038 * +HEAPF64[$1768 >> 3])) / $2050; + HEAPF32[$xc2 >> 2] = $2060; + $2069 = (+HEAPF64[$1772 >> 3] + ($2043 * +HEAPF64[$1770 >> 3] + $2038 * +HEAPF64[$1771 >> 3])) / $2050; + HEAPF32[$yc2 >> 2] = $2069; + _arParamIdeal2ObservLTf($paramLTf, $2060, $2069, $xc2, $yc2) | 0; + $2070 = +HEAPF32[$xc2 >> 2]; + if ($1773) { + $xc$18 = ((~~($2070 + 1.0) | 0) / 2 | 0) << 1; + $yc$18 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$18 = ~~($2070 + .5); + $yc$18 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$18 | 0) > -1) if (($yc$18 | 0) < ($ysize | 0) & (($yc$18 | 0) > -1 & ($xc$18 | 0) < ($xsize | 0))) { + $2091 = (Math_imul($yc$18, $xsize) | 0) + $xc$18 << 1; + $2094 = HEAPU8[$image + $2091 >> 0] | 0; + $2102 = HEAPU8[$image + ($2091 | 1) >> 0] | 0; + $2117 = $1433 + ((Math_imul(($j$18352 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$20348 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$2117 >> 2] = (HEAP32[$2117 >> 2] | 0) + (((($2102 << 3 & 248 | 4) + ($2094 & 248 | 4) + ($2094 << 5 & 224 | $2102 >>> 3 & 28 | 2) | 0) >>> 0) / 3 | 0); + } + $i$20348 = $i$20348 + 1 | 0; + } while (($i$20348 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$18352 = $j$18352 + 1 | 0; + } while (($j$18352 | 0) < ($ydiv2$3 | 0)); + break; + } + case 10: + { + $1748 = $103 + 100.0; + $1749 = +($ydiv2$3 | 0); + $1750 = +($sample_size$xdiv2$2 | 0); + $1751 = $para + 48 | 0; + $1752 = $para + 56 | 0; + $1753 = $para + 64 | 0; + $1754 = $para + 8 | 0; + $1755 = $para + 16 | 0; + $1756 = $para + 24 | 0; + $1757 = $para + 32 | 0; + $1758 = $para + 40 | 0; + $1759 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1761 = ($sample_size$xdiv2$2 | 0) > 0; + $j$19358 = 0; + do { + $2128 = $1748 + $104 * (+($j$19358 | 0) + .5) / $1749; + if ($1761) { + $i$21354 = 0; + do { + $2133 = $1748 + $104 * (+($i$21354 | 0) + .5) / $1750; + $2140 = +HEAPF64[$1753 >> 3] + (+HEAPF64[$1751 >> 3] * $2133 + $2128 * +HEAPF64[$1752 >> 3]); + if ($2140 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $2150 = (+HEAPF64[$1755 >> 3] + ($2133 * +HEAPF64[$para >> 3] + $2128 * +HEAPF64[$1754 >> 3])) / $2140; + HEAPF32[$xc2 >> 2] = $2150; + $2159 = (+HEAPF64[$1758 >> 3] + ($2133 * +HEAPF64[$1756 >> 3] + $2128 * +HEAPF64[$1757 >> 3])) / $2140; + HEAPF32[$yc2 >> 2] = $2159; + _arParamIdeal2ObservLTf($paramLTf, $2150, $2159, $xc2, $yc2) | 0; + $2160 = +HEAPF32[$xc2 >> 2]; + if ($1759) { + $xc$19 = ((~~($2160 + 1.0) | 0) / 2 | 0) << 1; + $yc$19 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$19 = ~~($2160 + .5); + $yc$19 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$19 | 0) > -1) if (($yc$19 | 0) < ($ysize | 0) & (($yc$19 | 0) > -1 & ($xc$19 | 0) < ($xsize | 0))) { + $2181 = (Math_imul($yc$19, $xsize) | 0) + $xc$19 << 1; + $2184 = HEAPU8[$image + $2181 >> 0] | 0; + $2192 = HEAPU8[$image + ($2181 | 1) >> 0] | 0; + $2207 = $1433 + ((Math_imul(($j$19358 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$21354 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$2207 >> 2] = (HEAP32[$2207 >> 2] | 0) + (((($2192 << 2 & 248 | 4) + ($2184 & 248 | 4) + ($2184 << 5 & 224 | $2192 >>> 3 & 24 | 4) | 0) >>> 0) / 3 | 0); + } + $i$21354 = $i$21354 + 1 | 0; + } while (($i$21354 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$19358 = $j$19358 + 1 | 0; + } while (($j$19358 | 0) < ($ydiv2$3 | 0)); + break; + } + case 11: + { + $1734 = $103 + 100.0; + $1735 = +($ydiv2$3 | 0); + $1736 = +($sample_size$xdiv2$2 | 0); + $1737 = $para + 48 | 0; + $1738 = $para + 56 | 0; + $1739 = $para + 64 | 0; + $1740 = $para + 8 | 0; + $1741 = $para + 16 | 0; + $1742 = $para + 24 | 0; + $1743 = $para + 32 | 0; + $1744 = $para + 40 | 0; + $1745 = ($imageProcMode | 0) == 1; + if (($ydiv2$3 | 0) <= 0) break L233; + $1747 = ($sample_size$xdiv2$2 | 0) > 0; + $j$20364 = 0; + do { + $2218 = $1734 + $104 * (+($j$20364 | 0) + .5) / $1735; + if ($1747) { + $i$22360 = 0; + do { + $2223 = $1734 + $104 * (+($i$22360 | 0) + .5) / $1736; + $2230 = +HEAPF64[$1739 >> 3] + (+HEAPF64[$1737 >> 3] * $2223 + $2218 * +HEAPF64[$1738 >> 3]); + if ($2230 == 0.0) { + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + $2240 = (+HEAPF64[$1741 >> 3] + ($2223 * +HEAPF64[$para >> 3] + $2218 * +HEAPF64[$1740 >> 3])) / $2230; + HEAPF32[$xc2 >> 2] = $2240; + $2249 = (+HEAPF64[$1744 >> 3] + ($2223 * +HEAPF64[$1742 >> 3] + $2218 * +HEAPF64[$1743 >> 3])) / $2230; + HEAPF32[$yc2 >> 2] = $2249; + _arParamIdeal2ObservLTf($paramLTf, $2240, $2249, $xc2, $yc2) | 0; + $2250 = +HEAPF32[$xc2 >> 2]; + if ($1745) { + $xc$20 = ((~~($2250 + 1.0) | 0) / 2 | 0) << 1; + $yc$20 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1; + } else { + $xc$20 = ~~($2250 + .5); + $yc$20 = ~~(+HEAPF32[$yc2 >> 2] + .5); + } + if (($xc$20 | 0) > -1) if (($yc$20 | 0) < ($ysize | 0) & (($yc$20 | 0) > -1 & ($xc$20 | 0) < ($xsize | 0))) { + $2271 = (Math_imul($yc$20, $xsize) | 0) + $xc$20 << 1; + $2274 = HEAPU8[$image + $2271 >> 0] | 0; + $2293 = $1433 + ((Math_imul(($j$20364 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$22360 | 0) / ($99 | 0) | 0) << 2) | 0; + HEAP32[$2293 >> 2] = (HEAP32[$2293 >> 2] | 0) + (((($2274 << 4 & 240 | 8) + ($2274 & 240 | 8) + ((HEAPU8[$image + ($2271 | 1) >> 0] | 0) & 240 | 8) | 0) >>> 0) / 3 | 0); + } + $i$22360 = $i$22360 + 1 | 0; + } while (($i$22360 | 0) < ($sample_size$xdiv2$2 | 0)); + } + $j$20364 = $j$20364 + 1 | 0; + } while (($j$20364 | 0) < ($ydiv2$3 | 0)); + break; + } + default: + { + _arLog(3, 4615, $vararg_buffer5); + $ext_patt2$0 = $1433; + label = 278; + break L13; + } + } + } while (0); + $1450 = Math_imul($100, $99) | 0; + if ($106) { + $i$23309 = 0; + do { + HEAP8[$ext_patt + $i$23309 >> 0] = ((HEAP32[$1433 + ($i$23309 << 2) >> 2] | 0) >>> 0) / ($1450 >>> 0) | 0; + $i$23309 = $i$23309 + 1 | 0; + } while (($i$23309 | 0) < ($106 | 0)); + } + _free($1433); + $$0 = 0; + } while (0); + if ((label | 0) == 278) { + _free($ext_patt2$0); + $$0 = -1; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i103 = 0, $$0$i$i$i108 = 0, $$0$i$i$i113 = 0, $$0$i$i$i118 = 0, $$0$i$i$i123 = 0, $$0$i$i$i128 = 0, $$0$i$i$i133 = 0, $$0$i$i$i138 = 0, $$0$i$i$i14 = 0, $$0$i$i$i143 = 0, $$0$i$i$i19 = 0, $$0$i$i$i24 = 0, $$0$i$i$i29 = 0, $$0$i$i$i34 = 0, $$0$i$i$i39 = 0, $$0$i$i$i4 = 0, $$0$i$i$i44 = 0, $$0$i$i$i49 = 0, $$0$i$i$i54 = 0, $$0$i$i$i59 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i88 = 0, $$0$i$i$i9 = 0, $$0$i$i$i93 = 0, $$0$i$i$i98 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $106 = 0, $108 = 0, $11 = 0, $111 = 0, $112 = 0, $115 = 0, $116 = 0, $118 = 0, $12 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $132 = 0, $134 = 0, $137 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $144 = 0, $15 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $158 = 0, $16 = 0, $160 = 0, $163 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $19 = 0, $190 = 0, $193 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $21 = 0, $210 = 0, $212 = 0, $215 = 0, $216 = 0, $219 = 0, $22 = 0, $220 = 0, $222 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $238 = 0, $24 = 0, $241 = 0, $242 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $26 = 0, $262 = 0, $264 = 0, $267 = 0, $268 = 0, $27 = 0, $271 = 0, $272 = 0, $274 = 0, $28 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $288 = 0, $290 = 0, $293 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $300 = 0, $307 = 0, $308 = 0, $309 = 0, $310 = 0, $314 = 0, $316 = 0, $319 = 0, $32 = 0, $320 = 0, $323 = 0, $324 = 0, $326 = 0, $33 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $340 = 0, $342 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $350 = 0, $352 = 0, $359 = 0, $360 = 0, $361 = 0, $362 = 0, $366 = 0, $368 = 0, $371 = 0, $372 = 0, $375 = 0, $379 = 0, $382 = 0, $383 = 0, $385 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $399 = 0, $4 = 0, $401 = 0, $404 = 0, $405 = 0, $408 = 0, $409 = 0, $411 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $425 = 0, $427 = 0, $43 = 0, $430 = 0, $431 = 0, $434 = 0, $435 = 0, $437 = 0, $44 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $45 = 0, $451 = 0, $453 = 0, $456 = 0, $457 = 0, $460 = 0, $461 = 0, $463 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $477 = 0, $479 = 0, $482 = 0, $483 = 0, $486 = 0, $488 = 0, $49 = 0, $491 = 0, $492 = 0, $494 = 0, $5 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $508 = 0, $51 = 0, $510 = 0, $513 = 0, $514 = 0, $517 = 0, $518 = 0, $520 = 0, $527 = 0, $528 = 0, $529 = 0, $530 = 0, $534 = 0, $536 = 0, $539 = 0, $54 = 0, $540 = 0, $543 = 0, $544 = 0, $546 = 0, $55 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $560 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $570 = 0, $572 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $586 = 0, $588 = 0, $591 = 0, $592 = 0, $595 = 0, $596 = 0, $598 = 0, $6 = 0, $60 = 0, $602 = 0, $603 = 0, $605 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $619 = 0, $621 = 0, $624 = 0, $625 = 0, $628 = 0, $629 = 0, $63 = 0, $631 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $645 = 0, $647 = 0, $650 = 0, $651 = 0, $654 = 0, $655 = 0, $657 = 0, $66 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $671 = 0, $673 = 0, $676 = 0, $677 = 0, $680 = 0, $681 = 0, $683 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $697 = 0, $699 = 0, $7 = 0, $702 = 0, $703 = 0, $706 = 0, $707 = 0, $709 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $723 = 0, $725 = 0, $728 = 0, $729 = 0, $73 = 0, $732 = 0, $733 = 0, $735 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $749 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $758 = 0, $759 = 0, $76 = 0, $761 = 0, $768 = 0, $769 = 0, $770 = 0, $771 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $8 = 0, $80 = 0, $801 = 0, $803 = 0, $806 = 0, $807 = 0, $82 = 0, $85 = 0, $86 = 0, $89 = 0, $9 = 0, $90 = 0, $92 = 0, $99 = 0, $__v$i$i142 = 0, dest = 0, sp = 0, src = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 720 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i142 = sp + 696 | 0; + $0 = sp + 672 | 0; + $1 = sp + 648 | 0; + $2 = sp + 624 | 0; + $3 = sp + 600 | 0; + $4 = sp + 576 | 0; + $5 = sp + 552 | 0; + $6 = sp + 528 | 0; + $7 = sp + 504 | 0; + $8 = sp + 480 | 0; + $9 = sp + 456 | 0; + $10 = sp + 432 | 0; + $11 = sp + 408 | 0; + $12 = sp + 384 | 0; + $13 = sp + 360 | 0; + $14 = sp + 336 | 0; + $15 = sp + 312 | 0; + $16 = sp + 288 | 0; + $17 = sp + 264 | 0; + $18 = sp + 240 | 0; + $19 = sp + 216 | 0; + $20 = sp + 192 | 0; + $21 = sp + 168 | 0; + $22 = sp + 144 | 0; + $23 = sp + 120 | 0; + $24 = sp + 96 | 0; + $25 = sp + 72 | 0; + $26 = sp + 48 | 0; + $27 = sp + 24 | 0; + $28 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else do switch (HEAP8[$first >> 0] | 0) { + case 118: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($0, 14202); + $32 = $db + 4 | 0; + $33 = HEAP32[$32 >> 2] | 0; + $35 = HEAP32[$db + 8 >> 2] | 0; + if ($33 >>> 0 < $35 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($33, $0); + HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 24; + } else { + $42 = HEAP32[$db >> 2] | 0; + $43 = $33 - $42 | 0; + $44 = ($43 | 0) / 24 | 0; + $45 = $44 + 1 | 0; + if (($43 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $49 = ($35 - $42 | 0) / 24 | 0; + if ($49 >>> 0 < 1073741823) { + $51 = $49 << 1; + $$0$i$i$i = $51 >>> 0 < $45 >>> 0 ? $45 : $51; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i, $44, $db + 12 | 0); + $54 = $__v$i$i142 + 8 | 0; + $55 = HEAP32[$54 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($55, $0); + HEAP32[$54 >> 2] = $55 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 119: + { + HEAP8[$1 >> 0] = 14; + $58 = $1 + 1 | 0; + HEAP8[$58 >> 0] = HEAP8[13764] | 0; + HEAP8[$58 + 1 >> 0] = HEAP8[13765] | 0; + HEAP8[$58 + 2 >> 0] = HEAP8[13766] | 0; + HEAP8[$58 + 3 >> 0] = HEAP8[13767] | 0; + HEAP8[$58 + 4 >> 0] = HEAP8[13768] | 0; + HEAP8[$58 + 5 >> 0] = HEAP8[13769] | 0; + HEAP8[$58 + 6 >> 0] = HEAP8[13770] | 0; + HEAP8[$1 + 8 >> 0] = 0; + $60 = $1 + 12 | 0; + HEAP32[$60 >> 2] = 0; + HEAP32[$60 + 4 >> 2] = 0; + HEAP32[$60 + 8 >> 2] = 0; + $63 = $db + 4 | 0; + $64 = HEAP32[$63 >> 2] | 0; + $66 = HEAP32[$db + 8 >> 2] | 0; + if ($64 >>> 0 < $66 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1); + HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + 24; + } else { + $73 = HEAP32[$db >> 2] | 0; + $74 = $64 - $73 | 0; + $75 = ($74 | 0) / 24 | 0; + $76 = $75 + 1 | 0; + if (($74 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $80 = ($66 - $73 | 0) / 24 | 0; + if ($80 >>> 0 < 1073741823) { + $82 = $80 << 1; + $$0$i$i$i4 = $82 >>> 0 < $76 >>> 0 ? $76 : $82; + } else $$0$i$i$i4 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i4, $75, $db + 12 | 0); + $85 = $__v$i$i142 + 8 | 0; + $86 = HEAP32[$85 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($86, $1); + HEAP32[$85 >> 2] = $86 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 98: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($2, 14207); + $89 = $db + 4 | 0; + $90 = HEAP32[$89 >> 2] | 0; + $92 = HEAP32[$db + 8 >> 2] | 0; + if ($90 >>> 0 < $92 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2); + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 24; + } else { + $99 = HEAP32[$db >> 2] | 0; + $100 = $90 - $99 | 0; + $101 = ($100 | 0) / 24 | 0; + $102 = $101 + 1 | 0; + if (($100 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $106 = ($92 - $99 | 0) / 24 | 0; + if ($106 >>> 0 < 1073741823) { + $108 = $106 << 1; + $$0$i$i$i9 = $108 >>> 0 < $102 >>> 0 ? $102 : $108; + } else $$0$i$i$i9 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i9, $101, $db + 12 | 0); + $111 = $__v$i$i142 + 8 | 0; + $112 = HEAP32[$111 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($112, $2); + HEAP32[$111 >> 2] = $112 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 99: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($3, 13783); + $115 = $db + 4 | 0; + $116 = HEAP32[$115 >> 2] | 0; + $118 = HEAP32[$db + 8 >> 2] | 0; + if ($116 >>> 0 < $118 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3); + HEAP32[$115 >> 2] = (HEAP32[$115 >> 2] | 0) + 24; + } else { + $125 = HEAP32[$db >> 2] | 0; + $126 = $116 - $125 | 0; + $127 = ($126 | 0) / 24 | 0; + $128 = $127 + 1 | 0; + if (($126 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $132 = ($118 - $125 | 0) / 24 | 0; + if ($132 >>> 0 < 1073741823) { + $134 = $132 << 1; + $$0$i$i$i14 = $134 >>> 0 < $128 >>> 0 ? $128 : $134; + } else $$0$i$i$i14 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i14, $127, $db + 12 | 0); + $137 = $__v$i$i142 + 8 | 0; + $138 = HEAP32[$137 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($138, $3); + HEAP32[$137 >> 2] = $138 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($4, 13788); + $141 = $db + 4 | 0; + $142 = HEAP32[$141 >> 2] | 0; + $144 = HEAP32[$db + 8 >> 2] | 0; + if ($142 >>> 0 < $144 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4); + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 24; + } else { + $151 = HEAP32[$db >> 2] | 0; + $152 = $142 - $151 | 0; + $153 = ($152 | 0) / 24 | 0; + $154 = $153 + 1 | 0; + if (($152 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $158 = ($144 - $151 | 0) / 24 | 0; + if ($158 >>> 0 < 1073741823) { + $160 = $158 << 1; + $$0$i$i$i19 = $160 >>> 0 < $154 >>> 0 ? $154 : $160; + } else $$0$i$i$i19 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i19, $153, $db + 12 | 0); + $163 = $__v$i$i142 + 8 | 0; + $164 = HEAP32[$163 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($164, $4); + HEAP32[$163 >> 2] = $164 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 104: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 13800); + $167 = $db + 4 | 0; + $168 = HEAP32[$167 >> 2] | 0; + $170 = HEAP32[$db + 8 >> 2] | 0; + if ($168 >>> 0 < $170 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5); + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24; + } else { + $177 = HEAP32[$db >> 2] | 0; + $178 = $168 - $177 | 0; + $179 = ($178 | 0) / 24 | 0; + $180 = $179 + 1 | 0; + if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $184 = ($170 - $177 | 0) / 24 | 0; + if ($184 >>> 0 < 1073741823) { + $186 = $184 << 1; + $$0$i$i$i24 = $186 >>> 0 < $180 >>> 0 ? $180 : $186; + } else $$0$i$i$i24 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i24, $179, $db + 12 | 0); + $189 = $__v$i$i142 + 8 | 0; + $190 = HEAP32[$189 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $5); + HEAP32[$189 >> 2] = $190 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($6, 13814); + $193 = $db + 4 | 0; + $194 = HEAP32[$193 >> 2] | 0; + $196 = HEAP32[$db + 8 >> 2] | 0; + if ($194 >>> 0 < $196 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($194, $6); + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 24; + } else { + $203 = HEAP32[$db >> 2] | 0; + $204 = $194 - $203 | 0; + $205 = ($204 | 0) / 24 | 0; + $206 = $205 + 1 | 0; + if (($204 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $210 = ($196 - $203 | 0) / 24 | 0; + if ($210 >>> 0 < 1073741823) { + $212 = $210 << 1; + $$0$i$i$i29 = $212 >>> 0 < $206 >>> 0 ? $206 : $212; + } else $$0$i$i$i29 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i29, $205, $db + 12 | 0); + $215 = $__v$i$i142 + 8 | 0; + $216 = HEAP32[$215 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($216, $6); + HEAP32[$215 >> 2] = $216 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 116: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($7, 13820); + $219 = $db + 4 | 0; + $220 = HEAP32[$219 >> 2] | 0; + $222 = HEAP32[$db + 8 >> 2] | 0; + if ($220 >>> 0 < $222 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($220, $7); + HEAP32[$219 >> 2] = (HEAP32[$219 >> 2] | 0) + 24; + } else { + $229 = HEAP32[$db >> 2] | 0; + $230 = $220 - $229 | 0; + $231 = ($230 | 0) / 24 | 0; + $232 = $231 + 1 | 0; + if (($230 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $236 = ($222 - $229 | 0) / 24 | 0; + if ($236 >>> 0 < 1073741823) { + $238 = $236 << 1; + $$0$i$i$i34 = $238 >>> 0 < $232 >>> 0 ? $232 : $238; + } else $$0$i$i$i34 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i34, $231, $db + 12 | 0); + $241 = $__v$i$i142 + 8 | 0; + $242 = HEAP32[$241 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($242, $7); + HEAP32[$241 >> 2] = $242 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 105: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($8, 14212); + $245 = $db + 4 | 0; + $246 = HEAP32[$245 >> 2] | 0; + $248 = HEAP32[$db + 8 >> 2] | 0; + if ($246 >>> 0 < $248 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($246, $8); + HEAP32[$245 >> 2] = (HEAP32[$245 >> 2] | 0) + 24; + } else { + $255 = HEAP32[$db >> 2] | 0; + $256 = $246 - $255 | 0; + $257 = ($256 | 0) / 24 | 0; + $258 = $257 + 1 | 0; + if (($256 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $262 = ($248 - $255 | 0) / 24 | 0; + if ($262 >>> 0 < 1073741823) { + $264 = $262 << 1; + $$0$i$i$i39 = $264 >>> 0 < $258 >>> 0 ? $258 : $264; + } else $$0$i$i$i39 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i39, $257, $db + 12 | 0); + $267 = $__v$i$i142 + 8 | 0; + $268 = HEAP32[$267 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($268, $8); + HEAP32[$267 >> 2] = $268 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 106: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($9, 14216); + $271 = $db + 4 | 0; + $272 = HEAP32[$271 >> 2] | 0; + $274 = HEAP32[$db + 8 >> 2] | 0; + if ($272 >>> 0 < $274 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($272, $9); + HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + 24; + } else { + $281 = HEAP32[$db >> 2] | 0; + $282 = $272 - $281 | 0; + $283 = ($282 | 0) / 24 | 0; + $284 = $283 + 1 | 0; + if (($282 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $288 = ($274 - $281 | 0) / 24 | 0; + if ($288 >>> 0 < 1073741823) { + $290 = $288 << 1; + $$0$i$i$i44 = $290 >>> 0 < $284 >>> 0 ? $284 : $290; + } else $$0$i$i$i44 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i44, $283, $db + 12 | 0); + $293 = $__v$i$i142 + 8 | 0; + $294 = HEAP32[$293 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($294, $9); + HEAP32[$293 >> 2] = $294 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 108: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($10, 14229); + $297 = $db + 4 | 0; + $298 = HEAP32[$297 >> 2] | 0; + $300 = HEAP32[$db + 8 >> 2] | 0; + if ($298 >>> 0 < $300 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($298, $10); + HEAP32[$297 >> 2] = (HEAP32[$297 >> 2] | 0) + 24; + } else { + $307 = HEAP32[$db >> 2] | 0; + $308 = $298 - $307 | 0; + $309 = ($308 | 0) / 24 | 0; + $310 = $309 + 1 | 0; + if (($308 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $314 = ($300 - $307 | 0) / 24 | 0; + if ($314 >>> 0 < 1073741823) { + $316 = $314 << 1; + $$0$i$i$i49 = $316 >>> 0 < $310 >>> 0 ? $310 : $316; + } else $$0$i$i$i49 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i49, $309, $db + 12 | 0); + $319 = $__v$i$i142 + 8 | 0; + $320 = HEAP32[$319 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($320, $10); + HEAP32[$319 >> 2] = $320 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 109: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($11, 14234); + $323 = $db + 4 | 0; + $324 = HEAP32[$323 >> 2] | 0; + $326 = HEAP32[$db + 8 >> 2] | 0; + if ($324 >>> 0 < $326 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($324, $11); + HEAP32[$323 >> 2] = (HEAP32[$323 >> 2] | 0) + 24; + } else { + $333 = HEAP32[$db >> 2] | 0; + $334 = $324 - $333 | 0; + $335 = ($334 | 0) / 24 | 0; + $336 = $335 + 1 | 0; + if (($334 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $340 = ($326 - $333 | 0) / 24 | 0; + if ($340 >>> 0 < 1073741823) { + $342 = $340 << 1; + $$0$i$i$i54 = $342 >>> 0 < $336 >>> 0 ? $336 : $342; + } else $$0$i$i$i54 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i54, $335, $db + 12 | 0); + $345 = $__v$i$i142 + 8 | 0; + $346 = HEAP32[$345 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($346, $11); + HEAP32[$345 >> 2] = $346 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 120: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 14248); + $349 = $db + 4 | 0; + $350 = HEAP32[$349 >> 2] | 0; + $352 = HEAP32[$db + 8 >> 2] | 0; + if ($350 >>> 0 < $352 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($350, $12); + HEAP32[$349 >> 2] = (HEAP32[$349 >> 2] | 0) + 24; + } else { + $359 = HEAP32[$db >> 2] | 0; + $360 = $350 - $359 | 0; + $361 = ($360 | 0) / 24 | 0; + $362 = $361 + 1 | 0; + if (($360 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $366 = ($352 - $359 | 0) / 24 | 0; + if ($366 >>> 0 < 1073741823) { + $368 = $366 << 1; + $$0$i$i$i59 = $368 >>> 0 < $362 >>> 0 ? $362 : $368; + } else $$0$i$i$i59 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i59, $361, $db + 12 | 0); + $371 = $__v$i$i142 + 8 | 0; + $372 = HEAP32[$371 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($372, $12); + HEAP32[$371 >> 2] = $372 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 121: + { + $375 = _malloc(32) | 0; + HEAP32[$13 + 8 >> 2] = $375; + HEAP32[$13 >> 2] = 33; + HEAP32[$13 + 4 >> 2] = 18; + dest = $375; + src = 14258; + stop = dest + 18 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$375 + 18 >> 0] = 0; + $379 = $13 + 12 | 0; + HEAP32[$379 >> 2] = 0; + HEAP32[$379 + 4 >> 2] = 0; + HEAP32[$379 + 8 >> 2] = 0; + $382 = $db + 4 | 0; + $383 = HEAP32[$382 >> 2] | 0; + $385 = HEAP32[$db + 8 >> 2] | 0; + if ($383 >>> 0 < $385 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($383, $13); + HEAP32[$382 >> 2] = (HEAP32[$382 >> 2] | 0) + 24; + } else { + $392 = HEAP32[$db >> 2] | 0; + $393 = $383 - $392 | 0; + $394 = ($393 | 0) / 24 | 0; + $395 = $394 + 1 | 0; + if (($393 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $399 = ($385 - $392 | 0) / 24 | 0; + if ($399 >>> 0 < 1073741823) { + $401 = $399 << 1; + $$0$i$i$i66 = $401 >>> 0 < $395 >>> 0 ? $395 : $401; + } else $$0$i$i$i66 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i66, $394, $db + 12 | 0); + $404 = $__v$i$i142 + 8 | 0; + $405 = HEAP32[$404 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($405, $13); + HEAP32[$404 >> 2] = $405 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 110: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($14, 13850); + $408 = $db + 4 | 0; + $409 = HEAP32[$408 >> 2] | 0; + $411 = HEAP32[$db + 8 >> 2] | 0; + if ($409 >>> 0 < $411 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($409, $14); + HEAP32[$408 >> 2] = (HEAP32[$408 >> 2] | 0) + 24; + } else { + $418 = HEAP32[$db >> 2] | 0; + $419 = $409 - $418 | 0; + $420 = ($419 | 0) / 24 | 0; + $421 = $420 + 1 | 0; + if (($419 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $425 = ($411 - $418 | 0) / 24 | 0; + if ($425 >>> 0 < 1073741823) { + $427 = $425 << 1; + $$0$i$i$i71 = $427 >>> 0 < $421 >>> 0 ? $421 : $427; + } else $$0$i$i$i71 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i71, $420, $db + 12 | 0); + $430 = $__v$i$i142 + 8 | 0; + $431 = HEAP32[$430 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($431, $14); + HEAP32[$430 >> 2] = $431 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 111: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($15, 13859); + $434 = $db + 4 | 0; + $435 = HEAP32[$434 >> 2] | 0; + $437 = HEAP32[$db + 8 >> 2] | 0; + if ($435 >>> 0 < $437 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($435, $15); + HEAP32[$434 >> 2] = (HEAP32[$434 >> 2] | 0) + 24; + } else { + $444 = HEAP32[$db >> 2] | 0; + $445 = $435 - $444 | 0; + $446 = ($445 | 0) / 24 | 0; + $447 = $446 + 1 | 0; + if (($445 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $451 = ($437 - $444 | 0) / 24 | 0; + if ($451 >>> 0 < 1073741823) { + $453 = $451 << 1; + $$0$i$i$i76 = $453 >>> 0 < $447 >>> 0 ? $447 : $453; + } else $$0$i$i$i76 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i76, $446, $db + 12 | 0); + $456 = $__v$i$i142 + 8 | 0; + $457 = HEAP32[$456 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($457, $15); + HEAP32[$456 >> 2] = $457 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 102: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($16, 14277); + $460 = $db + 4 | 0; + $461 = HEAP32[$460 >> 2] | 0; + $463 = HEAP32[$db + 8 >> 2] | 0; + if ($461 >>> 0 < $463 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($461, $16); + HEAP32[$460 >> 2] = (HEAP32[$460 >> 2] | 0) + 24; + } else { + $470 = HEAP32[$db >> 2] | 0; + $471 = $461 - $470 | 0; + $472 = ($471 | 0) / 24 | 0; + $473 = $472 + 1 | 0; + if (($471 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $477 = ($463 - $470 | 0) / 24 | 0; + if ($477 >>> 0 < 1073741823) { + $479 = $477 << 1; + $$0$i$i$i81 = $479 >>> 0 < $473 >>> 0 ? $473 : $479; + } else $$0$i$i$i81 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i81, $472, $db + 12 | 0); + $482 = $__v$i$i142 + 8 | 0; + $483 = HEAP32[$482 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($483, $16); + HEAP32[$482 >> 2] = $483 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 100: + { + HEAP8[$17 >> 0] = 12; + $486 = $17 + 1 | 0; + HEAP8[$486 >> 0] = HEAP8[14283] | 0; + HEAP8[$486 + 1 >> 0] = HEAP8[14284] | 0; + HEAP8[$486 + 2 >> 0] = HEAP8[14285] | 0; + HEAP8[$486 + 3 >> 0] = HEAP8[14286] | 0; + HEAP8[$486 + 4 >> 0] = HEAP8[14287] | 0; + HEAP8[$486 + 5 >> 0] = HEAP8[14288] | 0; + HEAP8[$17 + 7 >> 0] = 0; + $488 = $17 + 12 | 0; + HEAP32[$488 >> 2] = 0; + HEAP32[$488 + 4 >> 2] = 0; + HEAP32[$488 + 8 >> 2] = 0; + $491 = $db + 4 | 0; + $492 = HEAP32[$491 >> 2] | 0; + $494 = HEAP32[$db + 8 >> 2] | 0; + if ($492 >>> 0 < $494 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($492, $17); + HEAP32[$491 >> 2] = (HEAP32[$491 >> 2] | 0) + 24; + } else { + $501 = HEAP32[$db >> 2] | 0; + $502 = $492 - $501 | 0; + $503 = ($502 | 0) / 24 | 0; + $504 = $503 + 1 | 0; + if (($502 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $508 = ($494 - $501 | 0) / 24 | 0; + if ($508 >>> 0 < 1073741823) { + $510 = $508 << 1; + $$0$i$i$i88 = $510 >>> 0 < $504 >>> 0 ? $504 : $510; + } else $$0$i$i$i88 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i88, $503, $db + 12 | 0); + $513 = $__v$i$i142 + 8 | 0; + $514 = HEAP32[$513 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($514, $17); + HEAP32[$513 >> 2] = $514 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($18, 14290); + $517 = $db + 4 | 0; + $518 = HEAP32[$517 >> 2] | 0; + $520 = HEAP32[$db + 8 >> 2] | 0; + if ($518 >>> 0 < $520 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($518, $18); + HEAP32[$517 >> 2] = (HEAP32[$517 >> 2] | 0) + 24; + } else { + $527 = HEAP32[$db >> 2] | 0; + $528 = $518 - $527 | 0; + $529 = ($528 | 0) / 24 | 0; + $530 = $529 + 1 | 0; + if (($528 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $534 = ($520 - $527 | 0) / 24 | 0; + if ($534 >>> 0 < 1073741823) { + $536 = $534 << 1; + $$0$i$i$i93 = $536 >>> 0 < $530 >>> 0 ? $530 : $536; + } else $$0$i$i$i93 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i93, $529, $db + 12 | 0); + $539 = $__v$i$i142 + 8 | 0; + $540 = HEAP32[$539 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($540, $18); + HEAP32[$539 >> 2] = $540 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 103: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 14302); + $543 = $db + 4 | 0; + $544 = HEAP32[$543 >> 2] | 0; + $546 = HEAP32[$db + 8 >> 2] | 0; + if ($544 >>> 0 < $546 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($544, $19); + HEAP32[$543 >> 2] = (HEAP32[$543 >> 2] | 0) + 24; + } else { + $553 = HEAP32[$db >> 2] | 0; + $554 = $544 - $553 | 0; + $555 = ($554 | 0) / 24 | 0; + $556 = $555 + 1 | 0; + if (($554 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $560 = ($546 - $553 | 0) / 24 | 0; + if ($560 >>> 0 < 1073741823) { + $562 = $560 << 1; + $$0$i$i$i98 = $562 >>> 0 < $556 >>> 0 ? $556 : $562; + } else $$0$i$i$i98 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i98, $555, $db + 12 | 0); + $565 = $__v$i$i142 + 8 | 0; + $566 = HEAP32[$565 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($566, $19); + HEAP32[$565 >> 2] = $566 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 122: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($20, 14313); + $569 = $db + 4 | 0; + $570 = HEAP32[$569 >> 2] | 0; + $572 = HEAP32[$db + 8 >> 2] | 0; + if ($570 >>> 0 < $572 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($570, $20); + HEAP32[$569 >> 2] = (HEAP32[$569 >> 2] | 0) + 24; + } else { + $579 = HEAP32[$db >> 2] | 0; + $580 = $570 - $579 | 0; + $581 = ($580 | 0) / 24 | 0; + $582 = $581 + 1 | 0; + if (($580 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $586 = ($572 - $579 | 0) / 24 | 0; + if ($586 >>> 0 < 1073741823) { + $588 = $586 << 1; + $$0$i$i$i103 = $588 >>> 0 < $582 >>> 0 ? $582 : $588; + } else $$0$i$i$i103 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i103, $581, $db + 12 | 0); + $591 = $__v$i$i142 + 8 | 0; + $592 = HEAP32[$591 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($592, $20); + HEAP32[$591 >> 2] = $592 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20); + $$0 = $first + 1 | 0; + break L1; + break; + } + case 117: + { + $595 = $first + 1 | 0; + $596 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($595, $last, $db) | 0; + STACKTOP = sp; + return (($596 | 0) == ($595 | 0) ? $first : $596) | 0; + } + case 68: + { + $598 = $first + 1 | 0; + if (($598 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + switch (HEAP8[$598 >> 0] | 0) { + case 100: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 14317); + $602 = $db + 4 | 0; + $603 = HEAP32[$602 >> 2] | 0; + $605 = HEAP32[$db + 8 >> 2] | 0; + if ($603 >>> 0 < $605 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($603, $21); + HEAP32[$602 >> 2] = (HEAP32[$602 >> 2] | 0) + 24; + } else { + $612 = HEAP32[$db >> 2] | 0; + $613 = $603 - $612 | 0; + $614 = ($613 | 0) / 24 | 0; + $615 = $614 + 1 | 0; + if (($613 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $619 = ($605 - $612 | 0) / 24 | 0; + if ($619 >>> 0 < 1073741823) { + $621 = $619 << 1; + $$0$i$i$i108 = $621 >>> 0 < $615 >>> 0 ? $615 : $621; + } else $$0$i$i$i108 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i108, $614, $db + 12 | 0); + $624 = $__v$i$i142 + 8 | 0; + $625 = HEAP32[$624 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($625, $21); + HEAP32[$624 >> 2] = $625 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 101: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($22, 14327); + $628 = $db + 4 | 0; + $629 = HEAP32[$628 >> 2] | 0; + $631 = HEAP32[$db + 8 >> 2] | 0; + if ($629 >>> 0 < $631 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($629, $22); + HEAP32[$628 >> 2] = (HEAP32[$628 >> 2] | 0) + 24; + } else { + $638 = HEAP32[$db >> 2] | 0; + $639 = $629 - $638 | 0; + $640 = ($639 | 0) / 24 | 0; + $641 = $640 + 1 | 0; + if (($639 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $645 = ($631 - $638 | 0) / 24 | 0; + if ($645 >>> 0 < 1073741823) { + $647 = $645 << 1; + $$0$i$i$i113 = $647 >>> 0 < $641 >>> 0 ? $641 : $647; + } else $$0$i$i$i113 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i113, $640, $db + 12 | 0); + $650 = $__v$i$i142 + 8 | 0; + $651 = HEAP32[$650 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($651, $22); + HEAP32[$650 >> 2] = $651 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 102: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($23, 14338); + $654 = $db + 4 | 0; + $655 = HEAP32[$654 >> 2] | 0; + $657 = HEAP32[$db + 8 >> 2] | 0; + if ($655 >>> 0 < $657 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($655, $23); + HEAP32[$654 >> 2] = (HEAP32[$654 >> 2] | 0) + 24; + } else { + $664 = HEAP32[$db >> 2] | 0; + $665 = $655 - $664 | 0; + $666 = ($665 | 0) / 24 | 0; + $667 = $666 + 1 | 0; + if (($665 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $671 = ($657 - $664 | 0) / 24 | 0; + if ($671 >>> 0 < 1073741823) { + $673 = $671 << 1; + $$0$i$i$i118 = $673 >>> 0 < $667 >>> 0 ? $667 : $673; + } else $$0$i$i$i118 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i118, $666, $db + 12 | 0); + $676 = $__v$i$i142 + 8 | 0; + $677 = HEAP32[$676 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($677, $23); + HEAP32[$676 >> 2] = $677 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 104: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 14348); + $680 = $db + 4 | 0; + $681 = HEAP32[$680 >> 2] | 0; + $683 = HEAP32[$db + 8 >> 2] | 0; + if ($681 >>> 0 < $683 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($681, $24); + HEAP32[$680 >> 2] = (HEAP32[$680 >> 2] | 0) + 24; + } else { + $690 = HEAP32[$db >> 2] | 0; + $691 = $681 - $690 | 0; + $692 = ($691 | 0) / 24 | 0; + $693 = $692 + 1 | 0; + if (($691 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $697 = ($683 - $690 | 0) / 24 | 0; + if ($697 >>> 0 < 1073741823) { + $699 = $697 << 1; + $$0$i$i$i123 = $699 >>> 0 < $693 >>> 0 ? $693 : $699; + } else $$0$i$i$i123 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i123, $692, $db + 12 | 0); + $702 = $__v$i$i142 + 8 | 0; + $703 = HEAP32[$702 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($703, $24); + HEAP32[$702 >> 2] = $703 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 105: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($25, 14358); + $706 = $db + 4 | 0; + $707 = HEAP32[$706 >> 2] | 0; + $709 = HEAP32[$db + 8 >> 2] | 0; + if ($707 >>> 0 < $709 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($707, $25); + HEAP32[$706 >> 2] = (HEAP32[$706 >> 2] | 0) + 24; + } else { + $716 = HEAP32[$db >> 2] | 0; + $717 = $707 - $716 | 0; + $718 = ($717 | 0) / 24 | 0; + $719 = $718 + 1 | 0; + if (($717 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $723 = ($709 - $716 | 0) / 24 | 0; + if ($723 >>> 0 < 1073741823) { + $725 = $723 << 1; + $$0$i$i$i128 = $725 >>> 0 < $719 >>> 0 ? $719 : $725; + } else $$0$i$i$i128 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i128, $718, $db + 12 | 0); + $728 = $__v$i$i142 + 8 | 0; + $729 = HEAP32[$728 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($729, $25); + HEAP32[$728 >> 2] = $729 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($26, 14367); + $732 = $db + 4 | 0; + $733 = HEAP32[$732 >> 2] | 0; + $735 = HEAP32[$db + 8 >> 2] | 0; + if ($733 >>> 0 < $735 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($733, $26); + HEAP32[$732 >> 2] = (HEAP32[$732 >> 2] | 0) + 24; + } else { + $742 = HEAP32[$db >> 2] | 0; + $743 = $733 - $742 | 0; + $744 = ($743 | 0) / 24 | 0; + $745 = $744 + 1 | 0; + if (($743 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $749 = ($735 - $742 | 0) / 24 | 0; + if ($749 >>> 0 < 1073741823) { + $751 = $749 << 1; + $$0$i$i$i133 = $751 >>> 0 < $745 >>> 0 ? $745 : $751; + } else $$0$i$i$i133 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i133, $744, $db + 12 | 0); + $754 = $__v$i$i142 + 8 | 0; + $755 = HEAP32[$754 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($755, $26); + HEAP32[$754 >> 2] = $755 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($27, 14376); + $758 = $db + 4 | 0; + $759 = HEAP32[$758 >> 2] | 0; + $761 = HEAP32[$db + 8 >> 2] | 0; + if ($759 >>> 0 < $761 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($759, $27); + HEAP32[$758 >> 2] = (HEAP32[$758 >> 2] | 0) + 24; + } else { + $768 = HEAP32[$db >> 2] | 0; + $769 = $759 - $768 | 0; + $770 = ($769 | 0) / 24 | 0; + $771 = $770 + 1 | 0; + if (($769 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $775 = ($761 - $768 | 0) / 24 | 0; + if ($775 >>> 0 < 1073741823) { + $777 = $775 << 1; + $$0$i$i$i138 = $777 >>> 0 < $771 >>> 0 ? $771 : $777; + } else $$0$i$i$i138 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i138, $770, $db + 12 | 0); + $780 = $__v$i$i142 + 8 | 0; + $781 = HEAP32[$780 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($781, $27); + HEAP32[$780 >> 2] = $781 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 110: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($28, 14381); + $784 = $db + 4 | 0; + $785 = HEAP32[$784 >> 2] | 0; + $787 = HEAP32[$db + 8 >> 2] | 0; + if ($785 >>> 0 < $787 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($785, $28); + HEAP32[$784 >> 2] = (HEAP32[$784 >> 2] | 0) + 24; + } else { + $794 = HEAP32[$db >> 2] | 0; + $795 = $785 - $794 | 0; + $796 = ($795 | 0) / 24 | 0; + $797 = $796 + 1 | 0; + if (($795 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $801 = ($787 - $794 | 0) / 24 | 0; + if ($801 >>> 0 < 1073741823) { + $803 = $801 << 1; + $$0$i$i$i143 = $803 >>> 0 < $797 >>> 0 ? $797 : $803; + } else $$0$i$i$i143 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i143, $796, $db + 12 | 0); + $806 = $__v$i$i142 + 8 | 0; + $807 = HEAP32[$806 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($807, $28); + HEAP32[$806 >> 2] = $807 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + default: + { + $$0 = $first; + break L1; + } + } while (0); while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _malloc($bytes) { + $bytes = $bytes | 0; + var $$3$i = 0, $$lcssa = 0, $$lcssa211 = 0, $$lcssa215 = 0, $$lcssa216 = 0, $$lcssa217 = 0, $$lcssa219 = 0, $$lcssa222 = 0, $$lcssa224 = 0, $$lcssa226 = 0, $$lcssa228 = 0, $$lcssa230 = 0, $$lcssa232 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i23$iZ2D = 0, $$pre$phi$i26Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi58$i$iZ2D = 0, $$pre$phiZ2D = 0, $$rsize$3$i = 0, $$sum$i19$i = 0, $$sum2$i21$i = 0, $$sum3132$i$i = 0, $$sum67$i$i = 0, $100 = 0, $1000 = 0, $1002 = 0, $1005 = 0, $1010 = 0, $1016 = 0, $1019 = 0, $1020 = 0, $1027 = 0, $1039 = 0, $1044 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $106 = 0, $1060 = 0, $1062 = 0, $1063 = 0, $1070 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $117 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $127 = 0, $13 = 0, $132 = 0, $138 = 0, $14 = 0, $141 = 0, $144 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $151 = 0, $154 = 0, $156 = 0, $159 = 0, $16 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $201 = 0, $207 = 0, $214 = 0, $217 = 0, $225 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $237 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $25 = 0, $250 = 0, $255 = 0, $256 = 0, $259 = 0, $261 = 0, $264 = 0, $269 = 0, $276 = 0, $28 = 0, $285 = 0, $286 = 0, $290 = 0, $300 = 0, $303 = 0, $307 = 0, $309 = 0, $31 = 0, $310 = 0, $312 = 0, $314 = 0, $316 = 0, $318 = 0, $320 = 0, $322 = 0, $324 = 0, $334 = 0, $335 = 0, $337 = 0, $34 = 0, $346 = 0, $348 = 0, $351 = 0, $353 = 0, $356 = 0, $358 = 0, $361 = 0, $364 = 0, $365 = 0, $367 = 0, $368 = 0, $370 = 0, $371 = 0, $373 = 0, $374 = 0, $379 = 0, $38 = 0, $380 = 0, $389 = 0, $394 = 0, $398 = 0, $4 = 0, $404 = 0, $41 = 0, $411 = 0, $414 = 0, $422 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $431 = 0, $432 = 0, $438 = 0, $44 = 0, $443 = 0, $444 = 0, $447 = 0, $449 = 0, $452 = 0, $457 = 0, $46 = 0, $463 = 0, $467 = 0, $468 = 0, $47 = 0, $475 = 0, $487 = 0, $49 = 0, $492 = 0, $499 = 0, $5 = 0, $500 = 0, $501 = 0, $509 = 0, $51 = 0, $511 = 0, $512 = 0, $522 = 0, $526 = 0, $528 = 0, $529 = 0, $53 = 0, $538 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $552 = 0, $554 = 0, $555 = 0, $561 = 0, $563 = 0, $565 = 0, $57 = 0, $572 = 0, $574 = 0, $575 = 0, $576 = 0, $584 = 0, $585 = 0, $588 = 0, $59 = 0, $592 = 0, $593 = 0, $596 = 0, $598 = 0, $6 = 0, $602 = 0, $604 = 0, $608 = 0, $61 = 0, $612 = 0, $621 = 0, $622 = 0, $628 = 0, $630 = 0, $632 = 0, $635 = 0, $637 = 0, $64 = 0, $641 = 0, $642 = 0, $648 = 0, $65 = 0, $653 = 0, $655 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $67 = 0, $676 = 0, $678 = 0, $68 = 0, $683 = 0, $685 = 0, $69 = 0, $690 = 0, $692 = 0, $7 = 0, $70 = 0, $702 = 0, $706 = 0, $711 = 0, $714 = 0, $719 = 0, $720 = 0, $724 = 0, $725 = 0, $730 = 0, $736 = 0, $741 = 0, $744 = 0, $745 = 0, $748 = 0, $750 = 0, $752 = 0, $755 = 0, $766 = 0, $77 = 0, $771 = 0, $773 = 0, $776 = 0, $778 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $788 = 0, $790 = 0, $791 = 0, $793 = 0, $794 = 0, $799 = 0, $80 = 0, $800 = 0, $809 = 0, $81 = 0, $814 = 0, $818 = 0, $824 = 0, $832 = 0, $838 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $847 = 0, $848 = 0, $854 = 0, $859 = 0, $860 = 0, $863 = 0, $865 = 0, $868 = 0, $873 = 0, $879 = 0, $883 = 0, $884 = 0, $89 = 0, $891 = 0, $90 = 0, $903 = 0, $908 = 0, $91 = 0, $915 = 0, $916 = 0, $917 = 0, $92 = 0, $925 = 0, $928 = 0, $929 = 0, $93 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $944 = 0, $947 = 0, $95 = 0, $952 = 0, $954 = 0, $959 = 0, $960 = 0, $964 = 0, $970 = 0, $975 = 0, $977 = 0, $978 = 0, $979 = 0, $980 = 0, $984 = 0, $985 = 0, $99 = 0, $991 = 0, $996 = 0, $997 = 0, $F$0$i$i = 0, $F1$0$i = 0, $F4$0 = 0, $F4$0$i$i = 0, $F5$0$i = 0, $I1$0$i$i = 0, $I7$0$i = 0, $I7$0$i$i = 0, $K12$029$i = 0, $K2$07$i$i = 0, $K8$051$i$i = 0, $R$0$i = 0, $R$0$i$i = 0, $R$0$i$i$lcssa = 0, $R$0$i$lcssa = 0, $R$0$i18 = 0, $R$0$i18$lcssa = 0, $R$1$i = 0, $R$1$i$i = 0, $R$1$i20 = 0, $RP$0$i = 0, $RP$0$i$i = 0, $RP$0$i$i$lcssa = 0, $RP$0$i$lcssa = 0, $RP$0$i17 = 0, $RP$0$i17$lcssa = 0, $T$0$lcssa$i = 0, $T$0$lcssa$i$i = 0, $T$0$lcssa$i25$i = 0, $T$028$i = 0, $T$028$i$lcssa = 0, $T$050$i$i = 0, $T$050$i$i$lcssa = 0, $T$06$i$i = 0, $T$06$i$i$lcssa = 0, $br$0$ph$i = 0, $i$02$i$i = 0, $idx$0$i = 0, $mem$0 = 0, $nb$0 = 0, $oldfirst$0$i$i = 0, $qsize$0$i$i = 0, $rsize$0$i = 0, $rsize$0$i$lcssa = 0, $rsize$0$i15 = 0, $rsize$1$i = 0, $rsize$2$i = 0, $rsize$3$lcssa$i = 0, $rsize$331$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sizebits$0$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$084$i = 0, $sp$084$i$lcssa = 0, $sp$183$i = 0, $sp$183$i$lcssa = 0, $ssize$0$$i = 0, $ssize$0$i = 0, $ssize$1$ph$i = 0, $ssize$2$i = 0, $t$0$i = 0, $t$0$i14 = 0, $t$1$i = 0, $t$2$ph$i = 0, $t$2$v$3$i = 0, $t$230$i = 0, $tbase$255$i = 0, $tsize$0$ph$i = 0, $tsize$0323944$i = 0, $tsize$1$i = 0, $tsize$254$i = 0, $v$0$i = 0, $v$0$i$lcssa = 0, $v$0$i16 = 0, $v$1$i = 0, $v$2$i = 0, $v$3$lcssa$i = 0, $v$3$ph$i = 0, $v$332$i = 0, label = 0, $964$looptemp = 0; + do if ($bytes >>> 0 < 245) { + $4 = $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8; + $5 = $4 >>> 3; + $6 = HEAP32[756] | 0; + $7 = $6 >>> $5; + if ($7 & 3) { + $12 = ($7 & 1 ^ 1) + $5 | 0; + $13 = $12 << 1; + $14 = 3064 + ($13 << 2) | 0; + $15 = 3064 + ($13 + 2 << 2) | 0; + $16 = HEAP32[$15 >> 2] | 0; + $17 = $16 + 8 | 0; + $18 = HEAP32[$17 >> 2] | 0; + do if (($14 | 0) == ($18 | 0)) HEAP32[756] = $6 & ~(1 << $12); else { + if ($18 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $25 = $18 + 12 | 0; + if ((HEAP32[$25 >> 2] | 0) == ($16 | 0)) { + HEAP32[$25 >> 2] = $14; + HEAP32[$15 >> 2] = $18; + break; + } else _abort(); + } while (0); + $28 = $12 << 3; + HEAP32[$16 + 4 >> 2] = $28 | 3; + $31 = $16 + ($28 | 4) | 0; + HEAP32[$31 >> 2] = HEAP32[$31 >> 2] | 1; + $mem$0 = $17; + return $mem$0 | 0; + } + $34 = HEAP32[758] | 0; + if ($4 >>> 0 > $34 >>> 0) { + if ($7) { + $38 = 2 << $5; + $41 = $7 << $5 & ($38 | 0 - $38); + $44 = ($41 & 0 - $41) + -1 | 0; + $46 = $44 >>> 12 & 16; + $47 = $44 >>> $46; + $49 = $47 >>> 5 & 8; + $51 = $47 >>> $49; + $53 = $51 >>> 2 & 4; + $55 = $51 >>> $53; + $57 = $55 >>> 1 & 2; + $59 = $55 >>> $57; + $61 = $59 >>> 1 & 1; + $64 = ($49 | $46 | $53 | $57 | $61) + ($59 >>> $61) | 0; + $65 = $64 << 1; + $66 = 3064 + ($65 << 2) | 0; + $67 = 3064 + ($65 + 2 << 2) | 0; + $68 = HEAP32[$67 >> 2] | 0; + $69 = $68 + 8 | 0; + $70 = HEAP32[$69 >> 2] | 0; + do if (($66 | 0) == ($70 | 0)) { + HEAP32[756] = $6 & ~(1 << $64); + $89 = $34; + } else { + if ($70 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $77 = $70 + 12 | 0; + if ((HEAP32[$77 >> 2] | 0) == ($68 | 0)) { + HEAP32[$77 >> 2] = $66; + HEAP32[$67 >> 2] = $70; + $89 = HEAP32[758] | 0; + break; + } else _abort(); + } while (0); + $80 = $64 << 3; + $81 = $80 - $4 | 0; + HEAP32[$68 + 4 >> 2] = $4 | 3; + $84 = $68 + $4 | 0; + HEAP32[$68 + ($4 | 4) >> 2] = $81 | 1; + HEAP32[$68 + $80 >> 2] = $81; + if ($89) { + $90 = HEAP32[761] | 0; + $91 = $89 >>> 3; + $92 = $91 << 1; + $93 = 3064 + ($92 << 2) | 0; + $94 = HEAP32[756] | 0; + $95 = 1 << $91; + if (!($94 & $95)) { + HEAP32[756] = $94 | $95; + $$pre$phiZ2D = 3064 + ($92 + 2 << 2) | 0; + $F4$0 = $93; + } else { + $99 = 3064 + ($92 + 2 << 2) | 0; + $100 = HEAP32[$99 >> 2] | 0; + if ($100 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phiZ2D = $99; + $F4$0 = $100; + } + } + HEAP32[$$pre$phiZ2D >> 2] = $90; + HEAP32[$F4$0 + 12 >> 2] = $90; + HEAP32[$90 + 8 >> 2] = $F4$0; + HEAP32[$90 + 12 >> 2] = $93; + } + HEAP32[758] = $81; + HEAP32[761] = $84; + $mem$0 = $69; + return $mem$0 | 0; + } + $106 = HEAP32[757] | 0; + if (!$106) $nb$0 = $4; else { + $110 = ($106 & 0 - $106) + -1 | 0; + $112 = $110 >>> 12 & 16; + $113 = $110 >>> $112; + $115 = $113 >>> 5 & 8; + $117 = $113 >>> $115; + $119 = $117 >>> 2 & 4; + $121 = $117 >>> $119; + $123 = $121 >>> 1 & 2; + $125 = $121 >>> $123; + $127 = $125 >>> 1 & 1; + $132 = HEAP32[3328 + (($115 | $112 | $119 | $123 | $127) + ($125 >>> $127) << 2) >> 2] | 0; + $rsize$0$i = (HEAP32[$132 + 4 >> 2] & -8) - $4 | 0; + $t$0$i = $132; + $v$0$i = $132; + while (1) { + $138 = HEAP32[$t$0$i + 16 >> 2] | 0; + if (!$138) { + $141 = HEAP32[$t$0$i + 20 >> 2] | 0; + if (!$141) { + $rsize$0$i$lcssa = $rsize$0$i; + $v$0$i$lcssa = $v$0$i; + break; + } else $144 = $141; + } else $144 = $138; + $147 = (HEAP32[$144 + 4 >> 2] & -8) - $4 | 0; + $148 = $147 >>> 0 < $rsize$0$i >>> 0; + $rsize$0$i = $148 ? $147 : $rsize$0$i; + $t$0$i = $144; + $v$0$i = $148 ? $144 : $v$0$i; + } + $149 = HEAP32[760] | 0; + if ($v$0$i$lcssa >>> 0 < $149 >>> 0) _abort(); + $151 = $v$0$i$lcssa + $4 | 0; + if ($v$0$i$lcssa >>> 0 >= $151 >>> 0) _abort(); + $154 = HEAP32[$v$0$i$lcssa + 24 >> 2] | 0; + $156 = HEAP32[$v$0$i$lcssa + 12 >> 2] | 0; + do if (($156 | 0) == ($v$0$i$lcssa | 0)) { + $167 = $v$0$i$lcssa + 20 | 0; + $168 = HEAP32[$167 >> 2] | 0; + if (!$168) { + $170 = $v$0$i$lcssa + 16 | 0; + $171 = HEAP32[$170 >> 2] | 0; + if (!$171) { + $R$1$i = 0; + break; + } else { + $R$0$i = $171; + $RP$0$i = $170; + } + } else { + $R$0$i = $168; + $RP$0$i = $167; + } + while (1) { + $173 = $R$0$i + 20 | 0; + $174 = HEAP32[$173 >> 2] | 0; + if ($174) { + $R$0$i = $174; + $RP$0$i = $173; + continue; + } + $176 = $R$0$i + 16 | 0; + $177 = HEAP32[$176 >> 2] | 0; + if (!$177) { + $R$0$i$lcssa = $R$0$i; + $RP$0$i$lcssa = $RP$0$i; + break; + } else { + $R$0$i = $177; + $RP$0$i = $176; + } + } + if ($RP$0$i$lcssa >>> 0 < $149 >>> 0) _abort(); else { + HEAP32[$RP$0$i$lcssa >> 2] = 0; + $R$1$i = $R$0$i$lcssa; + break; + } + } else { + $159 = HEAP32[$v$0$i$lcssa + 8 >> 2] | 0; + if ($159 >>> 0 < $149 >>> 0) _abort(); + $161 = $159 + 12 | 0; + if ((HEAP32[$161 >> 2] | 0) != ($v$0$i$lcssa | 0)) _abort(); + $164 = $156 + 8 | 0; + if ((HEAP32[$164 >> 2] | 0) == ($v$0$i$lcssa | 0)) { + HEAP32[$161 >> 2] = $156; + HEAP32[$164 >> 2] = $159; + $R$1$i = $156; + break; + } else _abort(); + } while (0); + do if ($154) { + $182 = HEAP32[$v$0$i$lcssa + 28 >> 2] | 0; + $183 = 3328 + ($182 << 2) | 0; + if (($v$0$i$lcssa | 0) == (HEAP32[$183 >> 2] | 0)) { + HEAP32[$183 >> 2] = $R$1$i; + if (!$R$1$i) { + HEAP32[757] = HEAP32[757] & ~(1 << $182); + break; + } + } else { + if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $192 = $154 + 16 | 0; + if ((HEAP32[$192 >> 2] | 0) == ($v$0$i$lcssa | 0)) HEAP32[$192 >> 2] = $R$1$i; else HEAP32[$154 + 20 >> 2] = $R$1$i; + if (!$R$1$i) break; + } + $197 = HEAP32[760] | 0; + if ($R$1$i >>> 0 < $197 >>> 0) _abort(); + HEAP32[$R$1$i + 24 >> 2] = $154; + $201 = HEAP32[$v$0$i$lcssa + 16 >> 2] | 0; + do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else { + HEAP32[$R$1$i + 16 >> 2] = $201; + HEAP32[$201 + 24 >> 2] = $R$1$i; + break; + } while (0); + $207 = HEAP32[$v$0$i$lcssa + 20 >> 2] | 0; + if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1$i + 20 >> 2] = $207; + HEAP32[$207 + 24 >> 2] = $R$1$i; + break; + } + } while (0); + if ($rsize$0$i$lcssa >>> 0 < 16) { + $214 = $rsize$0$i$lcssa + $4 | 0; + HEAP32[$v$0$i$lcssa + 4 >> 2] = $214 | 3; + $217 = $v$0$i$lcssa + ($214 + 4) | 0; + HEAP32[$217 >> 2] = HEAP32[$217 >> 2] | 1; + } else { + HEAP32[$v$0$i$lcssa + 4 >> 2] = $4 | 3; + HEAP32[$v$0$i$lcssa + ($4 | 4) >> 2] = $rsize$0$i$lcssa | 1; + HEAP32[$v$0$i$lcssa + ($rsize$0$i$lcssa + $4) >> 2] = $rsize$0$i$lcssa; + $225 = HEAP32[758] | 0; + if ($225) { + $227 = HEAP32[761] | 0; + $228 = $225 >>> 3; + $229 = $228 << 1; + $230 = 3064 + ($229 << 2) | 0; + $231 = HEAP32[756] | 0; + $232 = 1 << $228; + if (!($231 & $232)) { + HEAP32[756] = $231 | $232; + $$pre$phi$iZ2D = 3064 + ($229 + 2 << 2) | 0; + $F1$0$i = $230; + } else { + $236 = 3064 + ($229 + 2 << 2) | 0; + $237 = HEAP32[$236 >> 2] | 0; + if ($237 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phi$iZ2D = $236; + $F1$0$i = $237; + } + } + HEAP32[$$pre$phi$iZ2D >> 2] = $227; + HEAP32[$F1$0$i + 12 >> 2] = $227; + HEAP32[$227 + 8 >> 2] = $F1$0$i; + HEAP32[$227 + 12 >> 2] = $230; + } + HEAP32[758] = $rsize$0$i$lcssa; + HEAP32[761] = $151; + } + $mem$0 = $v$0$i$lcssa + 8 | 0; + return $mem$0 | 0; + } + } else $nb$0 = $4; + } else if ($bytes >>> 0 > 4294967231) $nb$0 = -1; else { + $245 = $bytes + 11 | 0; + $246 = $245 & -8; + $247 = HEAP32[757] | 0; + if (!$247) $nb$0 = $246; else { + $249 = 0 - $246 | 0; + $250 = $245 >>> 8; + if (!$250) $idx$0$i = 0; else if ($246 >>> 0 > 16777215) $idx$0$i = 31; else { + $255 = ($250 + 1048320 | 0) >>> 16 & 8; + $256 = $250 << $255; + $259 = ($256 + 520192 | 0) >>> 16 & 4; + $261 = $256 << $259; + $264 = ($261 + 245760 | 0) >>> 16 & 2; + $269 = 14 - ($259 | $255 | $264) + ($261 << $264 >>> 15) | 0; + $idx$0$i = $246 >>> ($269 + 7 | 0) & 1 | $269 << 1; + } + $276 = HEAP32[3328 + ($idx$0$i << 2) >> 2] | 0; + L123 : do if (!$276) { + $rsize$2$i = $249; + $t$1$i = 0; + $v$2$i = 0; + label = 86; + } else { + $rsize$0$i15 = $249; + $rst$0$i = 0; + $sizebits$0$i = $246 << (($idx$0$i | 0) == 31 ? 0 : 25 - ($idx$0$i >>> 1) | 0); + $t$0$i14 = $276; + $v$0$i16 = 0; + while (1) { + $285 = HEAP32[$t$0$i14 + 4 >> 2] & -8; + $286 = $285 - $246 | 0; + if ($286 >>> 0 < $rsize$0$i15 >>> 0) if (($285 | 0) == ($246 | 0)) { + $rsize$331$i = $286; + $t$230$i = $t$0$i14; + $v$332$i = $t$0$i14; + label = 90; + break L123; + } else { + $rsize$1$i = $286; + $v$1$i = $t$0$i14; + } else { + $rsize$1$i = $rsize$0$i15; + $v$1$i = $v$0$i16; + } + $290 = HEAP32[$t$0$i14 + 20 >> 2] | 0; + $t$0$i14 = HEAP32[$t$0$i14 + 16 + ($sizebits$0$i >>> 31 << 2) >> 2] | 0; + $rst$1$i = ($290 | 0) == 0 | ($290 | 0) == ($t$0$i14 | 0) ? $rst$0$i : $290; + if (!$t$0$i14) { + $rsize$2$i = $rsize$1$i; + $t$1$i = $rst$1$i; + $v$2$i = $v$1$i; + label = 86; + break; + } else { + $rsize$0$i15 = $rsize$1$i; + $rst$0$i = $rst$1$i; + $sizebits$0$i = $sizebits$0$i << 1; + $v$0$i16 = $v$1$i; + } + } + } while (0); + if ((label | 0) == 86) { + if (($t$1$i | 0) == 0 & ($v$2$i | 0) == 0) { + $300 = 2 << $idx$0$i; + $303 = $247 & ($300 | 0 - $300); + if (!$303) { + $nb$0 = $246; + break; + } + $307 = ($303 & 0 - $303) + -1 | 0; + $309 = $307 >>> 12 & 16; + $310 = $307 >>> $309; + $312 = $310 >>> 5 & 8; + $314 = $310 >>> $312; + $316 = $314 >>> 2 & 4; + $318 = $314 >>> $316; + $320 = $318 >>> 1 & 2; + $322 = $318 >>> $320; + $324 = $322 >>> 1 & 1; + $t$2$ph$i = HEAP32[3328 + (($312 | $309 | $316 | $320 | $324) + ($322 >>> $324) << 2) >> 2] | 0; + $v$3$ph$i = 0; + } else { + $t$2$ph$i = $t$1$i; + $v$3$ph$i = $v$2$i; + } + if (!$t$2$ph$i) { + $rsize$3$lcssa$i = $rsize$2$i; + $v$3$lcssa$i = $v$3$ph$i; + } else { + $rsize$331$i = $rsize$2$i; + $t$230$i = $t$2$ph$i; + $v$332$i = $v$3$ph$i; + label = 90; + } + } + if ((label | 0) == 90) while (1) { + label = 0; + $334 = (HEAP32[$t$230$i + 4 >> 2] & -8) - $246 | 0; + $335 = $334 >>> 0 < $rsize$331$i >>> 0; + $$rsize$3$i = $335 ? $334 : $rsize$331$i; + $t$2$v$3$i = $335 ? $t$230$i : $v$332$i; + $337 = HEAP32[$t$230$i + 16 >> 2] | 0; + if ($337) { + $rsize$331$i = $$rsize$3$i; + $t$230$i = $337; + $v$332$i = $t$2$v$3$i; + label = 90; + continue; + } + $t$230$i = HEAP32[$t$230$i + 20 >> 2] | 0; + if (!$t$230$i) { + $rsize$3$lcssa$i = $$rsize$3$i; + $v$3$lcssa$i = $t$2$v$3$i; + break; + } else { + $rsize$331$i = $$rsize$3$i; + $v$332$i = $t$2$v$3$i; + label = 90; + } + } + if (!$v$3$lcssa$i) $nb$0 = $246; else if ($rsize$3$lcssa$i >>> 0 < ((HEAP32[758] | 0) - $246 | 0) >>> 0) { + $346 = HEAP32[760] | 0; + if ($v$3$lcssa$i >>> 0 < $346 >>> 0) _abort(); + $348 = $v$3$lcssa$i + $246 | 0; + if ($v$3$lcssa$i >>> 0 >= $348 >>> 0) _abort(); + $351 = HEAP32[$v$3$lcssa$i + 24 >> 2] | 0; + $353 = HEAP32[$v$3$lcssa$i + 12 >> 2] | 0; + do if (($353 | 0) == ($v$3$lcssa$i | 0)) { + $364 = $v$3$lcssa$i + 20 | 0; + $365 = HEAP32[$364 >> 2] | 0; + if (!$365) { + $367 = $v$3$lcssa$i + 16 | 0; + $368 = HEAP32[$367 >> 2] | 0; + if (!$368) { + $R$1$i20 = 0; + break; + } else { + $R$0$i18 = $368; + $RP$0$i17 = $367; + } + } else { + $R$0$i18 = $365; + $RP$0$i17 = $364; + } + while (1) { + $370 = $R$0$i18 + 20 | 0; + $371 = HEAP32[$370 >> 2] | 0; + if ($371) { + $R$0$i18 = $371; + $RP$0$i17 = $370; + continue; + } + $373 = $R$0$i18 + 16 | 0; + $374 = HEAP32[$373 >> 2] | 0; + if (!$374) { + $R$0$i18$lcssa = $R$0$i18; + $RP$0$i17$lcssa = $RP$0$i17; + break; + } else { + $R$0$i18 = $374; + $RP$0$i17 = $373; + } + } + if ($RP$0$i17$lcssa >>> 0 < $346 >>> 0) _abort(); else { + HEAP32[$RP$0$i17$lcssa >> 2] = 0; + $R$1$i20 = $R$0$i18$lcssa; + break; + } + } else { + $356 = HEAP32[$v$3$lcssa$i + 8 >> 2] | 0; + if ($356 >>> 0 < $346 >>> 0) _abort(); + $358 = $356 + 12 | 0; + if ((HEAP32[$358 >> 2] | 0) != ($v$3$lcssa$i | 0)) _abort(); + $361 = $353 + 8 | 0; + if ((HEAP32[$361 >> 2] | 0) == ($v$3$lcssa$i | 0)) { + HEAP32[$358 >> 2] = $353; + HEAP32[$361 >> 2] = $356; + $R$1$i20 = $353; + break; + } else _abort(); + } while (0); + do if ($351) { + $379 = HEAP32[$v$3$lcssa$i + 28 >> 2] | 0; + $380 = 3328 + ($379 << 2) | 0; + if (($v$3$lcssa$i | 0) == (HEAP32[$380 >> 2] | 0)) { + HEAP32[$380 >> 2] = $R$1$i20; + if (!$R$1$i20) { + HEAP32[757] = HEAP32[757] & ~(1 << $379); + break; + } + } else { + if ($351 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $389 = $351 + 16 | 0; + if ((HEAP32[$389 >> 2] | 0) == ($v$3$lcssa$i | 0)) HEAP32[$389 >> 2] = $R$1$i20; else HEAP32[$351 + 20 >> 2] = $R$1$i20; + if (!$R$1$i20) break; + } + $394 = HEAP32[760] | 0; + if ($R$1$i20 >>> 0 < $394 >>> 0) _abort(); + HEAP32[$R$1$i20 + 24 >> 2] = $351; + $398 = HEAP32[$v$3$lcssa$i + 16 >> 2] | 0; + do if ($398) if ($398 >>> 0 < $394 >>> 0) _abort(); else { + HEAP32[$R$1$i20 + 16 >> 2] = $398; + HEAP32[$398 + 24 >> 2] = $R$1$i20; + break; + } while (0); + $404 = HEAP32[$v$3$lcssa$i + 20 >> 2] | 0; + if ($404) if ($404 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1$i20 + 20 >> 2] = $404; + HEAP32[$404 + 24 >> 2] = $R$1$i20; + break; + } + } while (0); + L199 : do if ($rsize$3$lcssa$i >>> 0 < 16) { + $411 = $rsize$3$lcssa$i + $246 | 0; + HEAP32[$v$3$lcssa$i + 4 >> 2] = $411 | 3; + $414 = $v$3$lcssa$i + ($411 + 4) | 0; + HEAP32[$414 >> 2] = HEAP32[$414 >> 2] | 1; + } else { + HEAP32[$v$3$lcssa$i + 4 >> 2] = $246 | 3; + HEAP32[$v$3$lcssa$i + ($246 | 4) >> 2] = $rsize$3$lcssa$i | 1; + HEAP32[$v$3$lcssa$i + ($rsize$3$lcssa$i + $246) >> 2] = $rsize$3$lcssa$i; + $422 = $rsize$3$lcssa$i >>> 3; + if ($rsize$3$lcssa$i >>> 0 < 256) { + $424 = $422 << 1; + $425 = 3064 + ($424 << 2) | 0; + $426 = HEAP32[756] | 0; + $427 = 1 << $422; + if (!($426 & $427)) { + HEAP32[756] = $426 | $427; + $$pre$phi$i26Z2D = 3064 + ($424 + 2 << 2) | 0; + $F5$0$i = $425; + } else { + $431 = 3064 + ($424 + 2 << 2) | 0; + $432 = HEAP32[$431 >> 2] | 0; + if ($432 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phi$i26Z2D = $431; + $F5$0$i = $432; + } + } + HEAP32[$$pre$phi$i26Z2D >> 2] = $348; + HEAP32[$F5$0$i + 12 >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $F5$0$i; + HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $425; + break; + } + $438 = $rsize$3$lcssa$i >>> 8; + if (!$438) $I7$0$i = 0; else if ($rsize$3$lcssa$i >>> 0 > 16777215) $I7$0$i = 31; else { + $443 = ($438 + 1048320 | 0) >>> 16 & 8; + $444 = $438 << $443; + $447 = ($444 + 520192 | 0) >>> 16 & 4; + $449 = $444 << $447; + $452 = ($449 + 245760 | 0) >>> 16 & 2; + $457 = 14 - ($447 | $443 | $452) + ($449 << $452 >>> 15) | 0; + $I7$0$i = $rsize$3$lcssa$i >>> ($457 + 7 | 0) & 1 | $457 << 1; + } + $463 = 3328 + ($I7$0$i << 2) | 0; + HEAP32[$v$3$lcssa$i + ($246 + 28) >> 2] = $I7$0$i; + HEAP32[$v$3$lcssa$i + ($246 + 20) >> 2] = 0; + HEAP32[$v$3$lcssa$i + ($246 + 16) >> 2] = 0; + $467 = HEAP32[757] | 0; + $468 = 1 << $I7$0$i; + if (!($467 & $468)) { + HEAP32[757] = $467 | $468; + HEAP32[$463 >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $463; + HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348; + break; + } + $475 = HEAP32[$463 >> 2] | 0; + L217 : do if ((HEAP32[$475 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) $T$0$lcssa$i = $475; else { + $K12$029$i = $rsize$3$lcssa$i << (($I7$0$i | 0) == 31 ? 0 : 25 - ($I7$0$i >>> 1) | 0); + $T$028$i = $475; + while (1) { + $492 = $T$028$i + 16 + ($K12$029$i >>> 31 << 2) | 0; + $487 = HEAP32[$492 >> 2] | 0; + if (!$487) { + $$lcssa232 = $492; + $T$028$i$lcssa = $T$028$i; + break; + } + if ((HEAP32[$487 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) { + $T$0$lcssa$i = $487; + break L217; + } else { + $K12$029$i = $K12$029$i << 1; + $T$028$i = $487; + } + } + if ($$lcssa232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$$lcssa232 >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $T$028$i$lcssa; + HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348; + break L199; + } + } while (0); + $499 = $T$0$lcssa$i + 8 | 0; + $500 = HEAP32[$499 >> 2] | 0; + $501 = HEAP32[760] | 0; + if ($500 >>> 0 >= $501 >>> 0 & $T$0$lcssa$i >>> 0 >= $501 >>> 0) { + HEAP32[$500 + 12 >> 2] = $348; + HEAP32[$499 >> 2] = $348; + HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $500; + HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $T$0$lcssa$i; + HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = 0; + break; + } else _abort(); + } while (0); + $mem$0 = $v$3$lcssa$i + 8 | 0; + return $mem$0 | 0; + } else $nb$0 = $246; + } + } while (0); + $509 = HEAP32[758] | 0; + if ($509 >>> 0 >= $nb$0 >>> 0) { + $511 = $509 - $nb$0 | 0; + $512 = HEAP32[761] | 0; + if ($511 >>> 0 > 15) { + HEAP32[761] = $512 + $nb$0; + HEAP32[758] = $511; + HEAP32[$512 + ($nb$0 + 4) >> 2] = $511 | 1; + HEAP32[$512 + $509 >> 2] = $511; + HEAP32[$512 + 4 >> 2] = $nb$0 | 3; + } else { + HEAP32[758] = 0; + HEAP32[761] = 0; + HEAP32[$512 + 4 >> 2] = $509 | 3; + $522 = $512 + ($509 + 4) | 0; + HEAP32[$522 >> 2] = HEAP32[$522 >> 2] | 1; + } + $mem$0 = $512 + 8 | 0; + return $mem$0 | 0; + } + $526 = HEAP32[759] | 0; + if ($526 >>> 0 > $nb$0 >>> 0) { + $528 = $526 - $nb$0 | 0; + HEAP32[759] = $528; + $529 = HEAP32[762] | 0; + HEAP32[762] = $529 + $nb$0; + HEAP32[$529 + ($nb$0 + 4) >> 2] = $528 | 1; + HEAP32[$529 + 4 >> 2] = $nb$0 | 3; + $mem$0 = $529 + 8 | 0; + return $mem$0 | 0; + } + do if (!(HEAP32[874] | 0)) { + $538 = _sysconf(30) | 0; + if (!($538 + -1 & $538)) { + HEAP32[876] = $538; + HEAP32[875] = $538; + HEAP32[877] = -1; + HEAP32[878] = -1; + HEAP32[879] = 0; + HEAP32[867] = 0; + $544 = (_time(0) | 0) & -16 ^ 1431655768; + HEAP32[874] = $544; + break; + } else _abort(); + } while (0); + $545 = $nb$0 + 48 | 0; + $546 = HEAP32[876] | 0; + $547 = $nb$0 + 47 | 0; + $548 = $546 + $547 | 0; + $549 = 0 - $546 | 0; + $550 = $548 & $549; + if ($550 >>> 0 <= $nb$0 >>> 0) { + $mem$0 = 0; + return $mem$0 | 0; + } + $552 = HEAP32[866] | 0; + if ($552) { + $554 = HEAP32[864] | 0; + $555 = $554 + $550 | 0; + if ($555 >>> 0 <= $554 >>> 0 | $555 >>> 0 > $552 >>> 0) { + $mem$0 = 0; + return $mem$0 | 0; + } + } + L258 : do if (!(HEAP32[867] & 4)) { + $561 = HEAP32[762] | 0; + L260 : do if (!$561) label = 174; else { + $sp$0$i$i = 3472; + while (1) { + $563 = HEAP32[$sp$0$i$i >> 2] | 0; + if ($563 >>> 0 <= $561 >>> 0) { + $565 = $sp$0$i$i + 4 | 0; + if (($563 + (HEAP32[$565 >> 2] | 0) | 0) >>> 0 > $561 >>> 0) { + $$lcssa228 = $sp$0$i$i; + $$lcssa230 = $565; + break; + } + } + $sp$0$i$i = HEAP32[$sp$0$i$i + 8 >> 2] | 0; + if (!$sp$0$i$i) { + label = 174; + break L260; + } + } + $596 = $548 - (HEAP32[759] | 0) & $549; + if ($596 >>> 0 < 2147483647) { + $598 = _sbrk($596 | 0) | 0; + $602 = ($598 | 0) == ((HEAP32[$$lcssa228 >> 2] | 0) + (HEAP32[$$lcssa230 >> 2] | 0) | 0); + $$3$i = $602 ? $596 : 0; + if ($602) if (($598 | 0) == (-1 | 0)) $tsize$0323944$i = $$3$i; else { + $tbase$255$i = $598; + $tsize$254$i = $$3$i; + label = 194; + break L258; + } else { + $br$0$ph$i = $598; + $ssize$1$ph$i = $596; + $tsize$0$ph$i = $$3$i; + label = 184; + } + } else $tsize$0323944$i = 0; + } while (0); + do if ((label | 0) == 174) { + $572 = _sbrk(0) | 0; + if (($572 | 0) == (-1 | 0)) $tsize$0323944$i = 0; else { + $574 = $572; + $575 = HEAP32[875] | 0; + $576 = $575 + -1 | 0; + if (!($576 & $574)) $ssize$0$i = $550; else $ssize$0$i = $550 - $574 + ($576 + $574 & 0 - $575) | 0; + $584 = HEAP32[864] | 0; + $585 = $584 + $ssize$0$i | 0; + if ($ssize$0$i >>> 0 > $nb$0 >>> 0 & $ssize$0$i >>> 0 < 2147483647) { + $588 = HEAP32[866] | 0; + if ($588) if ($585 >>> 0 <= $584 >>> 0 | $585 >>> 0 > $588 >>> 0) { + $tsize$0323944$i = 0; + break; + } + $592 = _sbrk($ssize$0$i | 0) | 0; + $593 = ($592 | 0) == ($572 | 0); + $ssize$0$$i = $593 ? $ssize$0$i : 0; + if ($593) { + $tbase$255$i = $572; + $tsize$254$i = $ssize$0$$i; + label = 194; + break L258; + } else { + $br$0$ph$i = $592; + $ssize$1$ph$i = $ssize$0$i; + $tsize$0$ph$i = $ssize$0$$i; + label = 184; + } + } else $tsize$0323944$i = 0; + } + } while (0); + L280 : do if ((label | 0) == 184) { + $604 = 0 - $ssize$1$ph$i | 0; + do if ($545 >>> 0 > $ssize$1$ph$i >>> 0 & ($ssize$1$ph$i >>> 0 < 2147483647 & ($br$0$ph$i | 0) != (-1 | 0))) { + $608 = HEAP32[876] | 0; + $612 = $547 - $ssize$1$ph$i + $608 & 0 - $608; + if ($612 >>> 0 < 2147483647) if ((_sbrk($612 | 0) | 0) == (-1 | 0)) { + _sbrk($604 | 0) | 0; + $tsize$0323944$i = $tsize$0$ph$i; + break L280; + } else { + $ssize$2$i = $612 + $ssize$1$ph$i | 0; + break; + } else $ssize$2$i = $ssize$1$ph$i; + } else $ssize$2$i = $ssize$1$ph$i; while (0); + if (($br$0$ph$i | 0) == (-1 | 0)) $tsize$0323944$i = $tsize$0$ph$i; else { + $tbase$255$i = $br$0$ph$i; + $tsize$254$i = $ssize$2$i; + label = 194; + break L258; + } + } while (0); + HEAP32[867] = HEAP32[867] | 4; + $tsize$1$i = $tsize$0323944$i; + label = 191; + } else { + $tsize$1$i = 0; + label = 191; + } while (0); + if ((label | 0) == 191) if ($550 >>> 0 < 2147483647) { + $621 = _sbrk($550 | 0) | 0; + $622 = _sbrk(0) | 0; + if ($621 >>> 0 < $622 >>> 0 & (($621 | 0) != (-1 | 0) & ($622 | 0) != (-1 | 0))) { + $628 = $622 - $621 | 0; + $630 = $628 >>> 0 > ($nb$0 + 40 | 0) >>> 0; + if ($630) { + $tbase$255$i = $621; + $tsize$254$i = $630 ? $628 : $tsize$1$i; + label = 194; + } + } + } + if ((label | 0) == 194) { + $632 = (HEAP32[864] | 0) + $tsize$254$i | 0; + HEAP32[864] = $632; + if ($632 >>> 0 > (HEAP32[865] | 0) >>> 0) HEAP32[865] = $632; + $635 = HEAP32[762] | 0; + L299 : do if (!$635) { + $637 = HEAP32[760] | 0; + if (($637 | 0) == 0 | $tbase$255$i >>> 0 < $637 >>> 0) HEAP32[760] = $tbase$255$i; + HEAP32[868] = $tbase$255$i; + HEAP32[869] = $tsize$254$i; + HEAP32[871] = 0; + HEAP32[765] = HEAP32[874]; + HEAP32[764] = -1; + $i$02$i$i = 0; + do { + $641 = $i$02$i$i << 1; + $642 = 3064 + ($641 << 2) | 0; + HEAP32[3064 + ($641 + 3 << 2) >> 2] = $642; + HEAP32[3064 + ($641 + 2 << 2) >> 2] = $642; + $i$02$i$i = $i$02$i$i + 1 | 0; + } while (($i$02$i$i | 0) != 32); + $648 = $tbase$255$i + 8 | 0; + $653 = ($648 & 7 | 0) == 0 ? 0 : 0 - $648 & 7; + $655 = $tsize$254$i + -40 - $653 | 0; + HEAP32[762] = $tbase$255$i + $653; + HEAP32[759] = $655; + HEAP32[$tbase$255$i + ($653 + 4) >> 2] = $655 | 1; + HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40; + HEAP32[763] = HEAP32[878]; + } else { + $sp$084$i = 3472; + do { + $660 = HEAP32[$sp$084$i >> 2] | 0; + $661 = $sp$084$i + 4 | 0; + $662 = HEAP32[$661 >> 2] | 0; + if (($tbase$255$i | 0) == ($660 + $662 | 0)) { + $$lcssa222 = $660; + $$lcssa224 = $661; + $$lcssa226 = $662; + $sp$084$i$lcssa = $sp$084$i; + label = 204; + break; + } + $sp$084$i = HEAP32[$sp$084$i + 8 >> 2] | 0; + } while (($sp$084$i | 0) != 0); + if ((label | 0) == 204) if (!(HEAP32[$sp$084$i$lcssa + 12 >> 2] & 8)) if ($635 >>> 0 < $tbase$255$i >>> 0 & $635 >>> 0 >= $$lcssa222 >>> 0) { + HEAP32[$$lcssa224 >> 2] = $$lcssa226 + $tsize$254$i; + $676 = (HEAP32[759] | 0) + $tsize$254$i | 0; + $678 = $635 + 8 | 0; + $683 = ($678 & 7 | 0) == 0 ? 0 : 0 - $678 & 7; + $685 = $676 - $683 | 0; + HEAP32[762] = $635 + $683; + HEAP32[759] = $685; + HEAP32[$635 + ($683 + 4) >> 2] = $685 | 1; + HEAP32[$635 + ($676 + 4) >> 2] = 40; + HEAP32[763] = HEAP32[878]; + break; + } + $690 = HEAP32[760] | 0; + if ($tbase$255$i >>> 0 < $690 >>> 0) { + HEAP32[760] = $tbase$255$i; + $755 = $tbase$255$i; + } else $755 = $690; + $692 = $tbase$255$i + $tsize$254$i | 0; + $sp$183$i = 3472; + while (1) { + if ((HEAP32[$sp$183$i >> 2] | 0) == ($692 | 0)) { + $$lcssa219 = $sp$183$i; + $sp$183$i$lcssa = $sp$183$i; + label = 212; + break; + } + $sp$183$i = HEAP32[$sp$183$i + 8 >> 2] | 0; + if (!$sp$183$i) { + $sp$0$i$i$i = 3472; + break; + } + } + if ((label | 0) == 212) if (!(HEAP32[$sp$183$i$lcssa + 12 >> 2] & 8)) { + HEAP32[$$lcssa219 >> 2] = $tbase$255$i; + $702 = $sp$183$i$lcssa + 4 | 0; + HEAP32[$702 >> 2] = (HEAP32[$702 >> 2] | 0) + $tsize$254$i; + $706 = $tbase$255$i + 8 | 0; + $711 = ($706 & 7 | 0) == 0 ? 0 : 0 - $706 & 7; + $714 = $tbase$255$i + ($tsize$254$i + 8) | 0; + $719 = ($714 & 7 | 0) == 0 ? 0 : 0 - $714 & 7; + $720 = $tbase$255$i + ($719 + $tsize$254$i) | 0; + $$sum$i19$i = $711 + $nb$0 | 0; + $724 = $tbase$255$i + $$sum$i19$i | 0; + $725 = $720 - ($tbase$255$i + $711) - $nb$0 | 0; + HEAP32[$tbase$255$i + ($711 + 4) >> 2] = $nb$0 | 3; + L324 : do if (($720 | 0) == ($635 | 0)) { + $730 = (HEAP32[759] | 0) + $725 | 0; + HEAP32[759] = $730; + HEAP32[762] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $730 | 1; + } else { + if (($720 | 0) == (HEAP32[761] | 0)) { + $736 = (HEAP32[758] | 0) + $725 | 0; + HEAP32[758] = $736; + HEAP32[761] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $736 | 1; + HEAP32[$tbase$255$i + ($736 + $$sum$i19$i) >> 2] = $736; + break; + } + $$sum2$i21$i = $tsize$254$i + 4 | 0; + $741 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $719) >> 2] | 0; + if (($741 & 3 | 0) == 1) { + $744 = $741 & -8; + $745 = $741 >>> 3; + L332 : do if ($741 >>> 0 < 256) { + $748 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0; + $750 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0; + $752 = 3064 + ($745 << 1 << 2) | 0; + do if (($748 | 0) != ($752 | 0)) { + if ($748 >>> 0 < $755 >>> 0) _abort(); + if ((HEAP32[$748 + 12 >> 2] | 0) == ($720 | 0)) break; + _abort(); + } while (0); + if (($750 | 0) == ($748 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $745); + break; + } + do if (($750 | 0) == ($752 | 0)) $$pre$phi58$i$iZ2D = $750 + 8 | 0; else { + if ($750 >>> 0 < $755 >>> 0) _abort(); + $766 = $750 + 8 | 0; + if ((HEAP32[$766 >> 2] | 0) == ($720 | 0)) { + $$pre$phi58$i$iZ2D = $766; + break; + } + _abort(); + } while (0); + HEAP32[$748 + 12 >> 2] = $750; + HEAP32[$$pre$phi58$i$iZ2D >> 2] = $748; + } else { + $771 = HEAP32[$tbase$255$i + (($719 | 24) + $tsize$254$i) >> 2] | 0; + $773 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0; + do if (($773 | 0) == ($720 | 0)) { + $$sum67$i$i = $719 | 16; + $784 = $tbase$255$i + ($$sum2$i21$i + $$sum67$i$i) | 0; + $785 = HEAP32[$784 >> 2] | 0; + if (!$785) { + $787 = $tbase$255$i + ($$sum67$i$i + $tsize$254$i) | 0; + $788 = HEAP32[$787 >> 2] | 0; + if (!$788) { + $R$1$i$i = 0; + break; + } else { + $R$0$i$i = $788; + $RP$0$i$i = $787; + } + } else { + $R$0$i$i = $785; + $RP$0$i$i = $784; + } + while (1) { + $790 = $R$0$i$i + 20 | 0; + $791 = HEAP32[$790 >> 2] | 0; + if ($791) { + $R$0$i$i = $791; + $RP$0$i$i = $790; + continue; + } + $793 = $R$0$i$i + 16 | 0; + $794 = HEAP32[$793 >> 2] | 0; + if (!$794) { + $R$0$i$i$lcssa = $R$0$i$i; + $RP$0$i$i$lcssa = $RP$0$i$i; + break; + } else { + $R$0$i$i = $794; + $RP$0$i$i = $793; + } + } + if ($RP$0$i$i$lcssa >>> 0 < $755 >>> 0) _abort(); else { + HEAP32[$RP$0$i$i$lcssa >> 2] = 0; + $R$1$i$i = $R$0$i$i$lcssa; + break; + } + } else { + $776 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0; + if ($776 >>> 0 < $755 >>> 0) _abort(); + $778 = $776 + 12 | 0; + if ((HEAP32[$778 >> 2] | 0) != ($720 | 0)) _abort(); + $781 = $773 + 8 | 0; + if ((HEAP32[$781 >> 2] | 0) == ($720 | 0)) { + HEAP32[$778 >> 2] = $773; + HEAP32[$781 >> 2] = $776; + $R$1$i$i = $773; + break; + } else _abort(); + } while (0); + if (!$771) break; + $799 = HEAP32[$tbase$255$i + ($tsize$254$i + 28 + $719) >> 2] | 0; + $800 = 3328 + ($799 << 2) | 0; + do if (($720 | 0) == (HEAP32[$800 >> 2] | 0)) { + HEAP32[$800 >> 2] = $R$1$i$i; + if ($R$1$i$i) break; + HEAP32[757] = HEAP32[757] & ~(1 << $799); + break L332; + } else { + if ($771 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $809 = $771 + 16 | 0; + if ((HEAP32[$809 >> 2] | 0) == ($720 | 0)) HEAP32[$809 >> 2] = $R$1$i$i; else HEAP32[$771 + 20 >> 2] = $R$1$i$i; + if (!$R$1$i$i) break L332; + } while (0); + $814 = HEAP32[760] | 0; + if ($R$1$i$i >>> 0 < $814 >>> 0) _abort(); + HEAP32[$R$1$i$i + 24 >> 2] = $771; + $$sum3132$i$i = $719 | 16; + $818 = HEAP32[$tbase$255$i + ($$sum3132$i$i + $tsize$254$i) >> 2] | 0; + do if ($818) if ($818 >>> 0 < $814 >>> 0) _abort(); else { + HEAP32[$R$1$i$i + 16 >> 2] = $818; + HEAP32[$818 + 24 >> 2] = $R$1$i$i; + break; + } while (0); + $824 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $$sum3132$i$i) >> 2] | 0; + if (!$824) break; + if ($824 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1$i$i + 20 >> 2] = $824; + HEAP32[$824 + 24 >> 2] = $R$1$i$i; + break; + } + } while (0); + $oldfirst$0$i$i = $tbase$255$i + (($744 | $719) + $tsize$254$i) | 0; + $qsize$0$i$i = $744 + $725 | 0; + } else { + $oldfirst$0$i$i = $720; + $qsize$0$i$i = $725; + } + $832 = $oldfirst$0$i$i + 4 | 0; + HEAP32[$832 >> 2] = HEAP32[$832 >> 2] & -2; + HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $qsize$0$i$i | 1; + HEAP32[$tbase$255$i + ($qsize$0$i$i + $$sum$i19$i) >> 2] = $qsize$0$i$i; + $838 = $qsize$0$i$i >>> 3; + if ($qsize$0$i$i >>> 0 < 256) { + $840 = $838 << 1; + $841 = 3064 + ($840 << 2) | 0; + $842 = HEAP32[756] | 0; + $843 = 1 << $838; + do if (!($842 & $843)) { + HEAP32[756] = $842 | $843; + $$pre$phi$i23$iZ2D = 3064 + ($840 + 2 << 2) | 0; + $F4$0$i$i = $841; + } else { + $847 = 3064 + ($840 + 2 << 2) | 0; + $848 = HEAP32[$847 >> 2] | 0; + if ($848 >>> 0 >= (HEAP32[760] | 0) >>> 0) { + $$pre$phi$i23$iZ2D = $847; + $F4$0$i$i = $848; + break; + } + _abort(); + } while (0); + HEAP32[$$pre$phi$i23$iZ2D >> 2] = $724; + HEAP32[$F4$0$i$i + 12 >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $F4$0$i$i; + HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $841; + break; + } + $854 = $qsize$0$i$i >>> 8; + do if (!$854) $I7$0$i$i = 0; else { + if ($qsize$0$i$i >>> 0 > 16777215) { + $I7$0$i$i = 31; + break; + } + $859 = ($854 + 1048320 | 0) >>> 16 & 8; + $860 = $854 << $859; + $863 = ($860 + 520192 | 0) >>> 16 & 4; + $865 = $860 << $863; + $868 = ($865 + 245760 | 0) >>> 16 & 2; + $873 = 14 - ($863 | $859 | $868) + ($865 << $868 >>> 15) | 0; + $I7$0$i$i = $qsize$0$i$i >>> ($873 + 7 | 0) & 1 | $873 << 1; + } while (0); + $879 = 3328 + ($I7$0$i$i << 2) | 0; + HEAP32[$tbase$255$i + ($$sum$i19$i + 28) >> 2] = $I7$0$i$i; + HEAP32[$tbase$255$i + ($$sum$i19$i + 20) >> 2] = 0; + HEAP32[$tbase$255$i + ($$sum$i19$i + 16) >> 2] = 0; + $883 = HEAP32[757] | 0; + $884 = 1 << $I7$0$i$i; + if (!($883 & $884)) { + HEAP32[757] = $883 | $884; + HEAP32[$879 >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $879; + HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724; + break; + } + $891 = HEAP32[$879 >> 2] | 0; + L418 : do if ((HEAP32[$891 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) $T$0$lcssa$i25$i = $891; else { + $K8$051$i$i = $qsize$0$i$i << (($I7$0$i$i | 0) == 31 ? 0 : 25 - ($I7$0$i$i >>> 1) | 0); + $T$050$i$i = $891; + while (1) { + $908 = $T$050$i$i + 16 + ($K8$051$i$i >>> 31 << 2) | 0; + $903 = HEAP32[$908 >> 2] | 0; + if (!$903) { + $$lcssa = $908; + $T$050$i$i$lcssa = $T$050$i$i; + break; + } + if ((HEAP32[$903 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) { + $T$0$lcssa$i25$i = $903; + break L418; + } else { + $K8$051$i$i = $K8$051$i$i << 1; + $T$050$i$i = $903; + } + } + if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$$lcssa >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $T$050$i$i$lcssa; + HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724; + break L324; + } + } while (0); + $915 = $T$0$lcssa$i25$i + 8 | 0; + $916 = HEAP32[$915 >> 2] | 0; + $917 = HEAP32[760] | 0; + if ($916 >>> 0 >= $917 >>> 0 & $T$0$lcssa$i25$i >>> 0 >= $917 >>> 0) { + HEAP32[$916 + 12 >> 2] = $724; + HEAP32[$915 >> 2] = $724; + HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $916; + HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $T$0$lcssa$i25$i; + HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = 0; + break; + } else _abort(); + } while (0); + $mem$0 = $tbase$255$i + ($711 | 8) | 0; + return $mem$0 | 0; + } else $sp$0$i$i$i = 3472; + while (1) { + $925 = HEAP32[$sp$0$i$i$i >> 2] | 0; + if ($925 >>> 0 <= $635 >>> 0) { + $928 = HEAP32[$sp$0$i$i$i + 4 >> 2] | 0; + $929 = $925 + $928 | 0; + if ($929 >>> 0 > $635 >>> 0) { + $$lcssa215 = $925; + $$lcssa216 = $928; + $$lcssa217 = $929; + break; + } + } + $sp$0$i$i$i = HEAP32[$sp$0$i$i$i + 8 >> 2] | 0; + } + $934 = $$lcssa215 + ($$lcssa216 + -39) | 0; + $940 = $$lcssa215 + ($$lcssa216 + -47 + (($934 & 7 | 0) == 0 ? 0 : 0 - $934 & 7)) | 0; + $941 = $635 + 16 | 0; + $943 = $940 >>> 0 < $941 >>> 0 ? $635 : $940; + $944 = $943 + 8 | 0; + $947 = $tbase$255$i + 8 | 0; + $952 = ($947 & 7 | 0) == 0 ? 0 : 0 - $947 & 7; + $954 = $tsize$254$i + -40 - $952 | 0; + HEAP32[762] = $tbase$255$i + $952; + HEAP32[759] = $954; + HEAP32[$tbase$255$i + ($952 + 4) >> 2] = $954 | 1; + HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40; + HEAP32[763] = HEAP32[878]; + $959 = $943 + 4 | 0; + HEAP32[$959 >> 2] = 27; + HEAP32[$944 >> 2] = HEAP32[868]; + HEAP32[$944 + 4 >> 2] = HEAP32[869]; + HEAP32[$944 + 8 >> 2] = HEAP32[870]; + HEAP32[$944 + 12 >> 2] = HEAP32[871]; + HEAP32[868] = $tbase$255$i; + HEAP32[869] = $tsize$254$i; + HEAP32[871] = 0; + HEAP32[870] = $944; + $960 = $943 + 28 | 0; + HEAP32[$960 >> 2] = 7; + if (($943 + 32 | 0) >>> 0 < $$lcssa217 >>> 0) { + $964 = $960; + do { + $964$looptemp = $964; + $964 = $964 + 4 | 0; + HEAP32[$964 >> 2] = 7; + } while (($964$looptemp + 8 | 0) >>> 0 < $$lcssa217 >>> 0); + } + if (($943 | 0) != ($635 | 0)) { + $970 = $943 - $635 | 0; + HEAP32[$959 >> 2] = HEAP32[$959 >> 2] & -2; + HEAP32[$635 + 4 >> 2] = $970 | 1; + HEAP32[$943 >> 2] = $970; + $975 = $970 >>> 3; + if ($970 >>> 0 < 256) { + $977 = $975 << 1; + $978 = 3064 + ($977 << 2) | 0; + $979 = HEAP32[756] | 0; + $980 = 1 << $975; + if (!($979 & $980)) { + HEAP32[756] = $979 | $980; + $$pre$phi$i$iZ2D = 3064 + ($977 + 2 << 2) | 0; + $F$0$i$i = $978; + } else { + $984 = 3064 + ($977 + 2 << 2) | 0; + $985 = HEAP32[$984 >> 2] | 0; + if ($985 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phi$i$iZ2D = $984; + $F$0$i$i = $985; + } + } + HEAP32[$$pre$phi$i$iZ2D >> 2] = $635; + HEAP32[$F$0$i$i + 12 >> 2] = $635; + HEAP32[$635 + 8 >> 2] = $F$0$i$i; + HEAP32[$635 + 12 >> 2] = $978; + break; + } + $991 = $970 >>> 8; + if (!$991) $I1$0$i$i = 0; else if ($970 >>> 0 > 16777215) $I1$0$i$i = 31; else { + $996 = ($991 + 1048320 | 0) >>> 16 & 8; + $997 = $991 << $996; + $1000 = ($997 + 520192 | 0) >>> 16 & 4; + $1002 = $997 << $1000; + $1005 = ($1002 + 245760 | 0) >>> 16 & 2; + $1010 = 14 - ($1000 | $996 | $1005) + ($1002 << $1005 >>> 15) | 0; + $I1$0$i$i = $970 >>> ($1010 + 7 | 0) & 1 | $1010 << 1; + } + $1016 = 3328 + ($I1$0$i$i << 2) | 0; + HEAP32[$635 + 28 >> 2] = $I1$0$i$i; + HEAP32[$635 + 20 >> 2] = 0; + HEAP32[$941 >> 2] = 0; + $1019 = HEAP32[757] | 0; + $1020 = 1 << $I1$0$i$i; + if (!($1019 & $1020)) { + HEAP32[757] = $1019 | $1020; + HEAP32[$1016 >> 2] = $635; + HEAP32[$635 + 24 >> 2] = $1016; + HEAP32[$635 + 12 >> 2] = $635; + HEAP32[$635 + 8 >> 2] = $635; + break; + } + $1027 = HEAP32[$1016 >> 2] | 0; + L459 : do if ((HEAP32[$1027 + 4 >> 2] & -8 | 0) == ($970 | 0)) $T$0$lcssa$i$i = $1027; else { + $K2$07$i$i = $970 << (($I1$0$i$i | 0) == 31 ? 0 : 25 - ($I1$0$i$i >>> 1) | 0); + $T$06$i$i = $1027; + while (1) { + $1044 = $T$06$i$i + 16 + ($K2$07$i$i >>> 31 << 2) | 0; + $1039 = HEAP32[$1044 >> 2] | 0; + if (!$1039) { + $$lcssa211 = $1044; + $T$06$i$i$lcssa = $T$06$i$i; + break; + } + if ((HEAP32[$1039 + 4 >> 2] & -8 | 0) == ($970 | 0)) { + $T$0$lcssa$i$i = $1039; + break L459; + } else { + $K2$07$i$i = $K2$07$i$i << 1; + $T$06$i$i = $1039; + } + } + if ($$lcssa211 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$$lcssa211 >> 2] = $635; + HEAP32[$635 + 24 >> 2] = $T$06$i$i$lcssa; + HEAP32[$635 + 12 >> 2] = $635; + HEAP32[$635 + 8 >> 2] = $635; + break L299; + } + } while (0); + $1051 = $T$0$lcssa$i$i + 8 | 0; + $1052 = HEAP32[$1051 >> 2] | 0; + $1053 = HEAP32[760] | 0; + if ($1052 >>> 0 >= $1053 >>> 0 & $T$0$lcssa$i$i >>> 0 >= $1053 >>> 0) { + HEAP32[$1052 + 12 >> 2] = $635; + HEAP32[$1051 >> 2] = $635; + HEAP32[$635 + 8 >> 2] = $1052; + HEAP32[$635 + 12 >> 2] = $T$0$lcssa$i$i; + HEAP32[$635 + 24 >> 2] = 0; + break; + } else _abort(); + } + } while (0); + $1060 = HEAP32[759] | 0; + if ($1060 >>> 0 > $nb$0 >>> 0) { + $1062 = $1060 - $nb$0 | 0; + HEAP32[759] = $1062; + $1063 = HEAP32[762] | 0; + HEAP32[762] = $1063 + $nb$0; + HEAP32[$1063 + ($nb$0 + 4) >> 2] = $1062 | 1; + HEAP32[$1063 + 4 >> 2] = $nb$0 | 3; + $mem$0 = $1063 + 8 | 0; + return $mem$0 | 0; + } + } + $1070 = ___errno_location() | 0; + HEAP32[$1070 >> 2] = 12; + $mem$0 = 0; + return $mem$0 | 0; +} + +function ___floatscan($f, $prec, $pok) { + $f = $f | 0; + $prec = $prec | 0; + $pok = $pok | 0; + var $$0 = 0.0, $$0$i27 = 0.0, $$010$i = 0, $$07$i = 0, $$0710$i = 0, $$0711$i = 0, $$09$i = 0, $$1$be$i = 0, $$1$ph$i = 0, $$18$i = 0, $$2$i = 0, $$3$be$i = 0, $$3$lcssa$i = 0, $$3105$i = 0, $$in = 0, $$lcssa = 0, $$lcssa256 = 0, $$lcssa256$lcssa = 0, $$lcssa257 = 0, $$lcssa257$lcssa = 0, $$lcssa263 = 0, $$lcssa264 = 0, $$lcssa265 = 0, $$lcssa275 = 0, $$not$i = 0, $$pre$i = 0, $$pre$i17 = 0, $$pre$phi42$iZ2D = 0.0, $$sink$off0$i = 0, $0 = 0, $1 = 0, $103 = 0, $113 = 0, $115 = 0, $123 = 0, $125 = 0, $132 = 0, $139 = 0, $147 = 0, $15 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $183 = 0.0, $190 = 0, $192 = 0, $2 = 0, $201 = 0, $205 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $223 = 0, $224 = 0, $225 = 0, $235 = 0, $236 = 0, $249 = 0, $251 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $266 = 0, $270 = 0, $272 = 0, $279 = 0, $283 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $295 = 0, $297 = 0, $298 = 0, $299 = 0, $300 = 0, $310 = 0.0, $322 = 0.0, $324 = 0, $330 = 0, $331 = 0, $338 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $350 = 0, $358 = 0, $36 = 0, $360 = 0, $362 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $371 = 0, $376 = 0, $377 = 0, $381 = 0, $39 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $402 = 0, $403 = 0, $412 = 0, $413 = 0, $414 = 0, $42 = 0, $421 = 0, $422 = 0, $427 = 0, $428 = 0, $430 = 0, $431 = 0, $444 = 0, $446 = 0, $452 = 0, $456 = 0, $458 = 0, $464 = 0, $470 = 0, $471 = 0, $472 = 0, $494 = 0, $506 = 0, $510 = 0, $513 = 0, $515 = 0, $516 = 0, $517 = 0, $520 = 0, $521 = 0, $533 = 0, $534 = 0, $535 = 0, $539 = 0, $541 = 0, $543 = 0, $544 = 0, $550 = 0, $552 = 0, $557 = 0, $560 = 0, $564 = 0, $567 = 0, $572 = 0, $576 = 0, $577 = 0, $579 = 0, $583 = 0, $585 = 0, $588 = 0, $589 = 0, $590 = 0, $591 = 0, $594 = 0, $595 = 0, $60 = 0, $604 = 0, $609 = 0, $610 = 0, $617 = 0, $619 = 0.0, $621 = 0, $625 = 0.0, $626 = 0.0, $629 = 0.0, $633 = 0, $636 = 0, $643 = 0.0, $661 = 0.0, $663 = 0, $669 = 0, $67 = 0, $670 = 0, $677 = 0, $680 = 0, $69 = 0, $691 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $77 = 0, $82 = 0, $9 = 0, $90 = 0, $99 = 0, $a$0$lcssa151$i = 0, $a$085$i = 0, $a$1$i = 0, $a$1$i$lcssa = 0, $a$2$ph38$i = 0, $a$3$i = 0, $a$3$i$lcssa248 = 0, $a$3$i249 = 0, $a$3$ph$i = 0, $a$3$ph157$i = 0, $a$478$i = 0, $a$5$i = 0, $a$5$i$lcssa = 0, $a$5$i$lcssa$lcssa = 0, $bias$0$i = 0.0, $bias$0$i25 = 0.0, $bits$0$ph = 0, $c$0 = 0, $c$0$i = 0, $c$1$lcssa = 0, $c$1$ph$i = 0, $c$179 = 0, $c$2 = 0, $c$2$i = 0, $c$2$lcssa$i = 0, $c$377 = 0, $c$4 = 0, $c$5 = 0, $c$6 = 0, $carry$087$i = 0, $carry1$0$i = 0, $carry1$1$i = 0, $carry1$1$i$lcssa = 0, $carry1$1$i$lcssa$lcssa = 0, $carry3$081$i = 0, $d$0$i = 0, $denormal$0$i = 0, $denormal$2$i = 0, $e2$0$i19 = 0, $e2$0$ph$i = 0, $e2$1$i = 0, $e2$1$i246 = 0, $e2$1$ph$i = 0, $e2$1$ph156$i = 0, $e2$2$i = 0, $e2$3$i = 0, $emin$0$ph = 0, $frac$0$i = 0.0, $frac$1$i = 0.0, $frac$2$i = 0.0, $gotdig$0$i = 0, $gotdig$0$i$lcssa242 = 0, $gotdig$0$i12 = 0, $gotdig$0$i12$lcssa273 = 0, $gotdig$2$i = 0, $gotdig$2$i$lcssa = 0, $gotdig$2$i13 = 0, $gotdig$3$i = 0, $gotdig$3$lcssa$i = 0, $gotdig$3101$i = 0, $gotdig$3101$i$lcssa = 0, $gotdig$4$i = 0, $gotrad$0$i = 0, $gotrad$0$i$lcssa = 0, $gotrad$0$i14 = 0, $gotrad$1$i = 0, $gotrad$1$lcssa$i = 0, $gotrad$1102$i = 0, $gotrad$2$i = 0, $gottail$0$i = 0, $gottail$1$i = 0, $gottail$2$i = 0, $i$0$lcssa = 0, $i$078 = 0, $i$1 = 0, $i$276 = 0, $i$3 = 0, $i$4 = 0, $i$4$lcssa = 0, $j$0$lcssa$i = 0, $j$0104$i = 0, $j$0104$i$lcssa = 0, $j$067$i = 0, $j$068$i = 0, $j$069$i = 0, $j$2$i = 0, $j$394$i = 0, $k$0$lcssa$i = 0, $k$0103$i = 0, $k$0103$i$lcssa = 0, $k$063$i = 0, $k$064$i = 0, $k$065$i = 0, $k$2$i = 0, $k$3$i = 0, $k$486$i = 0, $k$5$i = 0, $k$5$in$i = 0, $k$679$i = 0, $lnz$0$lcssa$i = 0, $lnz$0100$i = 0, $lnz$0100$i$lcssa = 0, $lnz$057$i = 0, $lnz$058$i = 0, $lnz$059$i = 0, $lnz$2$i = 0, $or$cond16$i = 0, $or$cond19$i = 0, $or$cond9$i = 0, $rp$0$lcssa152$i = 0, $rp$084$i = 0, $rp$1$i18 = 0, $rp$1$i18$lcssa = 0, $rp$2$ph36$i = 0, $rp$3$ph$i = 0, $rp$3$ph34$i = 0, $rp$477$i = 0, $rp$5$i = 0, $rp$5$i$lcssa = 0, $rp$5$i$lcssa$lcssa = 0, $scale$0$i = 0.0, $scale$1$i = 0.0, $scale$2$i = 0.0, $sign$0 = 0, $storemerge$i = 0, $sum$i = 0, $x$0$i = 0, $x$0$i$lcssa = 0, $x$1$i = 0, $x$2$i = 0, $x$3$lcssa$i = 0, $x$324$i = 0, $x$4$lcssa$i = 0, $x$419$i = 0, $x$5$i = 0, $x$i = 0, $y$0$i = 0.0, $y$0$i$lcssa = 0.0, $y$1$i = 0.0, $y$1$i24 = 0.0, $y$2$i = 0.0, $y$2$i26 = 0.0, $y$3$i = 0.0, $y$3$lcssa$i = 0.0, $y$320$i = 0.0, $y$4$i = 0.0, $z$0$i = 0, $z$1$i = 0, $z$1$ph37$i = 0, $z$2$i = 0, $z$3$i = 0, $z$3$i$lcssa = 0, $z$3$i$lcssa$lcssa = 0, $z$4$i = 0, $z$5$ph$i = 0, $z$7$1$i = 0, $z$7$i = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 512 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $x$i = sp; + switch ($prec | 0) { + case 0: + { + $bits$0$ph = 24; + $emin$0$ph = -149; + label = 4; + break; + } + case 1: + { + $bits$0$ph = 53; + $emin$0$ph = -1074; + label = 4; + break; + } + case 2: + { + $bits$0$ph = 53; + $emin$0$ph = -1074; + label = 4; + break; + } + default: + $$0 = 0.0; + } + L4 : do if ((label | 0) == 4) { + $0 = $f + 4 | 0; + $1 = $f + 100 | 0; + do { + $2 = HEAP32[$0 >> 2] | 0; + if ($2 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $2 + 1; + $9 = HEAPU8[$2 >> 0] | 0; + } else $9 = ___shgetc($f) | 0; + } while ((_isspace($9) | 0) != 0); + $$lcssa275 = $9; + L13 : do switch ($$lcssa275 | 0) { + case 43: + case 45: + { + $15 = 1 - ((($$lcssa275 | 0) == 45 & 1) << 1) | 0; + $16 = HEAP32[$0 >> 2] | 0; + if ($16 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $16 + 1; + $c$0 = HEAPU8[$16 >> 0] | 0; + $sign$0 = $15; + break L13; + } else { + $c$0 = ___shgetc($f) | 0; + $sign$0 = $15; + break L13; + } + break; + } + default: + { + $c$0 = $$lcssa275; + $sign$0 = 1; + } + } while (0); + $c$179 = $c$0; + $i$078 = 0; + while (1) { + if (($c$179 | 32 | 0) != (HEAP8[16484 + $i$078 >> 0] | 0)) { + $c$1$lcssa = $c$179; + $i$0$lcssa = $i$078; + break; + } + do if ($i$078 >>> 0 < 7) { + $29 = HEAP32[$0 >> 2] | 0; + if ($29 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $29 + 1; + $c$2 = HEAPU8[$29 >> 0] | 0; + break; + } else { + $c$2 = ___shgetc($f) | 0; + break; + } + } else $c$2 = $c$179; while (0); + $36 = $i$078 + 1 | 0; + if ($36 >>> 0 < 8) { + $c$179 = $c$2; + $i$078 = $36; + } else { + $c$1$lcssa = $c$2; + $i$0$lcssa = $36; + break; + } + } + L29 : do switch ($i$0$lcssa | 0) { + case 8: + break; + case 3: + { + label = 23; + break; + } + default: + { + $39 = ($pok | 0) != 0; + if ($39 & $i$0$lcssa >>> 0 > 3) if (($i$0$lcssa | 0) == 8) break L29; else { + label = 23; + break L29; + } + L34 : do if (!$i$0$lcssa) { + $c$377 = $c$1$lcssa; + $i$276 = 0; + while (1) { + if (($c$377 | 32 | 0) != (HEAP8[18327 + $i$276 >> 0] | 0)) { + $c$5 = $c$377; + $i$3 = $i$276; + break L34; + } + do if ($i$276 >>> 0 < 2) { + $60 = HEAP32[$0 >> 2] | 0; + if ($60 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $60 + 1; + $c$4 = HEAPU8[$60 >> 0] | 0; + break; + } else { + $c$4 = ___shgetc($f) | 0; + break; + } + } else $c$4 = $c$377; while (0); + $67 = $i$276 + 1 | 0; + if ($67 >>> 0 < 3) { + $c$377 = $c$4; + $i$276 = $67; + } else { + $c$5 = $c$4; + $i$3 = $67; + break; + } + } + } else { + $c$5 = $c$1$lcssa; + $i$3 = $i$0$lcssa; + } while (0); + switch ($i$3 | 0) { + case 3: + { + $69 = HEAP32[$0 >> 2] | 0; + if ($69 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $69 + 1; + $77 = HEAPU8[$69 >> 0] | 0; + } else $77 = ___shgetc($f) | 0; + if (($77 | 0) == 40) $i$4 = 1; else { + if (!(HEAP32[$1 >> 2] | 0)) { + $$0 = nan; + break L4; + } + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $$0 = nan; + break L4; + } + while (1) { + $82 = HEAP32[$0 >> 2] | 0; + if ($82 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $82 + 1; + $90 = HEAPU8[$82 >> 0] | 0; + } else $90 = ___shgetc($f) | 0; + if (!(($90 + -48 | 0) >>> 0 < 10 | ($90 + -65 | 0) >>> 0 < 26)) if (!(($90 | 0) == 95 | ($90 + -97 | 0) >>> 0 < 26)) { + $$lcssa = $90; + $i$4$lcssa = $i$4; + break; + } + $i$4 = $i$4 + 1 | 0; + } + if (($$lcssa | 0) == 41) { + $$0 = nan; + break L4; + } + $99 = (HEAP32[$1 >> 2] | 0) == 0; + if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + if (!$39) { + $103 = ___errno_location() | 0; + HEAP32[$103 >> 2] = 22; + ___shlim($f, 0); + $$0 = 0.0; + break L4; + } + if (!$i$4$lcssa) { + $$0 = nan; + break L4; + } else $$in = $i$4$lcssa; + while (1) { + $$in = $$in + -1 | 0; + if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + if (!$$in) { + $$0 = nan; + break L4; + } + } + break; + } + case 0: + { + do if (($c$5 | 0) == 48) { + $115 = HEAP32[$0 >> 2] | 0; + if ($115 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $115 + 1; + $123 = HEAPU8[$115 >> 0] | 0; + } else $123 = ___shgetc($f) | 0; + if (($123 | 32 | 0) != 120) { + if (!(HEAP32[$1 >> 2] | 0)) { + $c$6 = 48; + break; + } + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $c$6 = 48; + break; + } + $125 = HEAP32[$0 >> 2] | 0; + if ($125 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $125 + 1; + $c$0$i = HEAPU8[$125 >> 0] | 0; + $gotdig$0$i = 0; + } else { + $c$0$i = ___shgetc($f) | 0; + $gotdig$0$i = 0; + } + L94 : while (1) { + switch ($c$0$i | 0) { + case 46: + { + $gotdig$0$i$lcssa242 = $gotdig$0$i; + label = 74; + break L94; + break; + } + case 48: + break; + default: + { + $169 = 0; + $171 = 0; + $694 = 0; + $695 = 0; + $c$2$i = $c$0$i; + $gotdig$2$i = $gotdig$0$i; + $gotrad$0$i = 0; + $gottail$0$i = 0; + $scale$0$i = 1.0; + $x$0$i = 0; + $y$0$i = 0.0; + break L94; + } + } + $132 = HEAP32[$0 >> 2] | 0; + if ($132 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $132 + 1; + $c$0$i = HEAPU8[$132 >> 0] | 0; + $gotdig$0$i = 1; + continue; + } else { + $c$0$i = ___shgetc($f) | 0; + $gotdig$0$i = 1; + continue; + } + } + if ((label | 0) == 74) { + $139 = HEAP32[$0 >> 2] | 0; + if ($139 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $139 + 1; + $c$1$ph$i = HEAPU8[$139 >> 0] | 0; + } else $c$1$ph$i = ___shgetc($f) | 0; + if (($c$1$ph$i | 0) == 48) { + $154 = 0; + $155 = 0; + while (1) { + $147 = HEAP32[$0 >> 2] | 0; + if ($147 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $147 + 1; + $159 = HEAPU8[$147 >> 0] | 0; + } else $159 = ___shgetc($f) | 0; + $156 = _i64Add($154 | 0, $155 | 0, -1, -1) | 0; + $157 = tempRet0; + if (($159 | 0) == 48) { + $154 = $156; + $155 = $157; + } else { + $169 = 0; + $171 = 0; + $694 = $156; + $695 = $157; + $c$2$i = $159; + $gotdig$2$i = 1; + $gotrad$0$i = 1; + $gottail$0$i = 0; + $scale$0$i = 1.0; + $x$0$i = 0; + $y$0$i = 0.0; + break; + } + } + } else { + $169 = 0; + $171 = 0; + $694 = 0; + $695 = 0; + $c$2$i = $c$1$ph$i; + $gotdig$2$i = $gotdig$0$i$lcssa242; + $gotrad$0$i = 1; + $gottail$0$i = 0; + $scale$0$i = 1.0; + $x$0$i = 0; + $y$0$i = 0.0; + } + } + while (1) { + $160 = $c$2$i + -48 | 0; + $$pre$i = $c$2$i | 32; + if ($160 >>> 0 < 10) label = 86; else { + $164 = ($c$2$i | 0) == 46; + if (!($164 | ($$pre$i + -97 | 0) >>> 0 < 6)) { + $213 = $171; + $214 = $694; + $216 = $169; + $217 = $695; + $c$2$lcssa$i = $c$2$i; + $gotdig$2$i$lcssa = $gotdig$2$i; + $gotrad$0$i$lcssa = $gotrad$0$i; + $x$0$i$lcssa = $x$0$i; + $y$0$i$lcssa = $y$0$i; + break; + } + if ($164) if (!$gotrad$0$i) { + $696 = $171; + $697 = $169; + $698 = $171; + $699 = $169; + $gotdig$3$i = $gotdig$2$i; + $gotrad$1$i = 1; + $gottail$2$i = $gottail$0$i; + $scale$2$i = $scale$0$i; + $x$2$i = $x$0$i; + $y$2$i = $y$0$i; + } else { + $213 = $171; + $214 = $694; + $216 = $169; + $217 = $695; + $c$2$lcssa$i = 46; + $gotdig$2$i$lcssa = $gotdig$2$i; + $gotrad$0$i$lcssa = $gotrad$0$i; + $x$0$i$lcssa = $x$0$i; + $y$0$i$lcssa = $y$0$i; + break; + } else label = 86; + } + if ((label | 0) == 86) { + label = 0; + $d$0$i = ($c$2$i | 0) > 57 ? $$pre$i + -87 | 0 : $160; + do if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 8) { + $gottail$1$i = $gottail$0$i; + $scale$1$i = $scale$0$i; + $x$1$i = $d$0$i + ($x$0$i << 4) | 0; + $y$1$i = $y$0$i; + } else { + if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 14) { + $183 = $scale$0$i * .0625; + $gottail$1$i = $gottail$0$i; + $scale$1$i = $183; + $x$1$i = $x$0$i; + $y$1$i = $y$0$i + $183 * +($d$0$i | 0); + break; + } + if (($gottail$0$i | 0) != 0 | ($d$0$i | 0) == 0) { + $gottail$1$i = $gottail$0$i; + $scale$1$i = $scale$0$i; + $x$1$i = $x$0$i; + $y$1$i = $y$0$i; + } else { + $gottail$1$i = 1; + $scale$1$i = $scale$0$i; + $x$1$i = $x$0$i; + $y$1$i = $y$0$i + $scale$0$i * .5; + } + } while (0); + $190 = _i64Add($171 | 0, $169 | 0, 1, 0) | 0; + $696 = $694; + $697 = $695; + $698 = $190; + $699 = tempRet0; + $gotdig$3$i = 1; + $gotrad$1$i = $gotrad$0$i; + $gottail$2$i = $gottail$1$i; + $scale$2$i = $scale$1$i; + $x$2$i = $x$1$i; + $y$2$i = $y$1$i; + } + $192 = HEAP32[$0 >> 2] | 0; + if ($192 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $192 + 1; + $169 = $699; + $171 = $698; + $694 = $696; + $695 = $697; + $c$2$i = HEAPU8[$192 >> 0] | 0; + $gotdig$2$i = $gotdig$3$i; + $gotrad$0$i = $gotrad$1$i; + $gottail$0$i = $gottail$2$i; + $scale$0$i = $scale$2$i; + $x$0$i = $x$2$i; + $y$0$i = $y$2$i; + continue; + } else { + $169 = $699; + $171 = $698; + $694 = $696; + $695 = $697; + $c$2$i = ___shgetc($f) | 0; + $gotdig$2$i = $gotdig$3$i; + $gotrad$0$i = $gotrad$1$i; + $gottail$0$i = $gottail$2$i; + $scale$0$i = $scale$2$i; + $x$0$i = $x$2$i; + $y$0$i = $y$2$i; + continue; + } + } + if (!$gotdig$2$i$lcssa) { + $201 = (HEAP32[$1 >> 2] | 0) == 0; + if (!$201) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + if (!$pok) ___shlim($f, 0); else if (!$201) { + $205 = HEAP32[$0 >> 2] | 0; + HEAP32[$0 >> 2] = $205 + -1; + if ($gotrad$0$i$lcssa) HEAP32[$0 >> 2] = $205 + -2; + } + $$0 = +($sign$0 | 0) * 0.0; + break L4; + } + $211 = ($gotrad$0$i$lcssa | 0) == 0; + $212 = $211 ? $213 : $214; + $215 = $211 ? $216 : $217; + if (($216 | 0) < 0 | ($216 | 0) == 0 & $213 >>> 0 < 8) { + $224 = $213; + $225 = $216; + $x$324$i = $x$0$i$lcssa; + while (1) { + $223 = $x$324$i << 4; + $224 = _i64Add($224 | 0, $225 | 0, 1, 0) | 0; + $225 = tempRet0; + if (!(($225 | 0) < 0 | ($225 | 0) == 0 & $224 >>> 0 < 8)) { + $x$3$lcssa$i = $223; + break; + } else $x$324$i = $223; + } + } else $x$3$lcssa$i = $x$0$i$lcssa; + if (($c$2$lcssa$i | 32 | 0) == 112) { + $235 = _scanexp($f, $pok) | 0; + $236 = tempRet0; + if (($235 | 0) == 0 & ($236 | 0) == -2147483648) { + if (!$pok) { + ___shlim($f, 0); + $$0 = 0.0; + break L4; + } + if (!(HEAP32[$1 >> 2] | 0)) { + $253 = 0; + $254 = 0; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $253 = 0; + $254 = 0; + } + } else { + $253 = $235; + $254 = $236; + } + } else if (!(HEAP32[$1 >> 2] | 0)) { + $253 = 0; + $254 = 0; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $253 = 0; + $254 = 0; + } + $249 = _bitshift64Shl($212 | 0, $215 | 0, 2) | 0; + $251 = _i64Add($249 | 0, tempRet0 | 0, -32, -1) | 0; + $255 = _i64Add($251 | 0, tempRet0 | 0, $253 | 0, $254 | 0) | 0; + $256 = tempRet0; + if (!$x$3$lcssa$i) { + $$0 = +($sign$0 | 0) * 0.0; + break L4; + } + if (($256 | 0) > 0 | ($256 | 0) == 0 & $255 >>> 0 > (0 - $emin$0$ph | 0) >>> 0) { + $266 = ___errno_location() | 0; + HEAP32[$266 >> 2] = 34; + $$0 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284; + break L4; + } + $270 = $emin$0$ph + -106 | 0; + $272 = (($270 | 0) < 0) << 31 >> 31; + if (($256 | 0) < ($272 | 0) | ($256 | 0) == ($272 | 0) & $255 >>> 0 < $270 >>> 0) { + $279 = ___errno_location() | 0; + HEAP32[$279 >> 2] = 34; + $$0 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; + break L4; + } + if (($x$3$lcssa$i | 0) > -1) { + $288 = $255; + $289 = $256; + $x$419$i = $x$3$lcssa$i; + $y$320$i = $y$0$i$lcssa; + while (1) { + $283 = !($y$320$i >= .5); + $287 = $283 & 1 | $x$419$i << 1; + $x$5$i = $287 ^ 1; + $y$4$i = $y$320$i + ($283 ? $y$320$i : $y$320$i + -1.0); + $290 = _i64Add($288 | 0, $289 | 0, -1, -1) | 0; + $291 = tempRet0; + if (($287 | 0) > -1) { + $288 = $290; + $289 = $291; + $x$419$i = $x$5$i; + $y$320$i = $y$4$i; + } else { + $297 = $290; + $298 = $291; + $x$4$lcssa$i = $x$5$i; + $y$3$lcssa$i = $y$4$i; + break; + } + } + } else { + $297 = $255; + $298 = $256; + $x$4$lcssa$i = $x$3$lcssa$i; + $y$3$lcssa$i = $y$0$i$lcssa; + } + $295 = _i64Subtract(32, 0, $emin$0$ph | 0, (($emin$0$ph | 0) < 0) << 31 >> 31 | 0) | 0; + $299 = _i64Add($297 | 0, $298 | 0, $295 | 0, tempRet0 | 0) | 0; + $300 = tempRet0; + if (0 > ($300 | 0) | 0 == ($300 | 0) & $bits$0$ph >>> 0 > $299 >>> 0) if (($299 | 0) < 0) { + $$0710$i = 0; + label = 127; + } else { + $$07$i = $299; + label = 125; + } else { + $$07$i = $bits$0$ph; + label = 125; + } + if ((label | 0) == 125) if (($$07$i | 0) < 53) { + $$0710$i = $$07$i; + label = 127; + } else { + $$0711$i = $$07$i; + $$pre$phi42$iZ2D = +($sign$0 | 0); + $bias$0$i = 0.0; + } + if ((label | 0) == 127) { + $310 = +($sign$0 | 0); + $$0711$i = $$0710$i; + $$pre$phi42$iZ2D = $310; + $bias$0$i = +_copysignl(+_scalbn(1.0, 84 - $$0710$i | 0), $310); + } + $or$cond9$i = ($x$4$lcssa$i & 1 | 0) == 0 & ($y$3$lcssa$i != 0.0 & ($$0711$i | 0) < 32); + $322 = $$pre$phi42$iZ2D * ($or$cond9$i ? 0.0 : $y$3$lcssa$i) + ($bias$0$i + $$pre$phi42$iZ2D * +((($or$cond9$i & 1) + $x$4$lcssa$i | 0) >>> 0)) - $bias$0$i; + if (!($322 != 0.0)) { + $324 = ___errno_location() | 0; + HEAP32[$324 >> 2] = 34; + } + $$0 = +_scalbnl($322, $297); + break L4; + } else $c$6 = $c$5; while (0); + $sum$i = $emin$0$ph + $bits$0$ph | 0; + $330 = 0 - $sum$i | 0; + $$09$i = $c$6; + $gotdig$0$i12 = 0; + L184 : while (1) { + switch ($$09$i | 0) { + case 46: + { + $gotdig$0$i12$lcssa273 = $gotdig$0$i12; + label = 138; + break L184; + break; + } + case 48: + break; + default: + { + $$2$i = $$09$i; + $700 = 0; + $701 = 0; + $gotdig$2$i13 = $gotdig$0$i12; + $gotrad$0$i14 = 0; + break L184; + } + } + $331 = HEAP32[$0 >> 2] | 0; + if ($331 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $331 + 1; + $$09$i = HEAPU8[$331 >> 0] | 0; + $gotdig$0$i12 = 1; + continue; + } else { + $$09$i = ___shgetc($f) | 0; + $gotdig$0$i12 = 1; + continue; + } + } + if ((label | 0) == 138) { + $338 = HEAP32[$0 >> 2] | 0; + if ($338 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $338 + 1; + $$1$ph$i = HEAPU8[$338 >> 0] | 0; + } else $$1$ph$i = ___shgetc($f) | 0; + if (($$1$ph$i | 0) == 48) { + $346 = 0; + $347 = 0; + while (1) { + $348 = _i64Add($346 | 0, $347 | 0, -1, -1) | 0; + $349 = tempRet0; + $350 = HEAP32[$0 >> 2] | 0; + if ($350 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $350 + 1; + $$1$be$i = HEAPU8[$350 >> 0] | 0; + } else $$1$be$i = ___shgetc($f) | 0; + if (($$1$be$i | 0) == 48) { + $346 = $348; + $347 = $349; + } else { + $$2$i = $$1$be$i; + $700 = $348; + $701 = $349; + $gotdig$2$i13 = 1; + $gotrad$0$i14 = 1; + break; + } + } + } else { + $$2$i = $$1$ph$i; + $700 = 0; + $701 = 0; + $gotdig$2$i13 = $gotdig$0$i12$lcssa273; + $gotrad$0$i14 = 1; + } + } + HEAP32[$x$i >> 2] = 0; + $358 = $$2$i + -48 | 0; + $360 = ($$2$i | 0) == 46; + L203 : do if ($360 | $358 >>> 0 < 10) { + $362 = $x$i + 496 | 0; + $$3105$i = $$2$i; + $365 = 0; + $366 = 0; + $702 = $360; + $703 = $358; + $704 = $700; + $705 = $701; + $gotdig$3101$i = $gotdig$2$i13; + $gotrad$1102$i = $gotrad$0$i14; + $j$0104$i = 0; + $k$0103$i = 0; + $lnz$0100$i = 0; + L205 : while (1) { + do if ($702) if (!$gotrad$1102$i) { + $706 = $365; + $707 = $366; + $708 = $365; + $709 = $366; + $gotdig$4$i = $gotdig$3101$i; + $gotrad$2$i = 1; + $j$2$i = $j$0104$i; + $k$2$i = $k$0103$i; + $lnz$2$i = $lnz$0100$i; + } else { + $710 = $704; + $711 = $705; + $712 = $365; + $713 = $366; + $gotdig$3101$i$lcssa = $gotdig$3101$i; + $j$0104$i$lcssa = $j$0104$i; + $k$0103$i$lcssa = $k$0103$i; + $lnz$0100$i$lcssa = $lnz$0100$i; + break L205; + } else { + $367 = _i64Add($365 | 0, $366 | 0, 1, 0) | 0; + $368 = tempRet0; + $369 = ($$3105$i | 0) != 48; + if (($k$0103$i | 0) >= 125) { + if (!$369) { + $706 = $704; + $707 = $705; + $708 = $367; + $709 = $368; + $gotdig$4$i = $gotdig$3101$i; + $gotrad$2$i = $gotrad$1102$i; + $j$2$i = $j$0104$i; + $k$2$i = $k$0103$i; + $lnz$2$i = $lnz$0100$i; + break; + } + HEAP32[$362 >> 2] = HEAP32[$362 >> 2] | 1; + $706 = $704; + $707 = $705; + $708 = $367; + $709 = $368; + $gotdig$4$i = $gotdig$3101$i; + $gotrad$2$i = $gotrad$1102$i; + $j$2$i = $j$0104$i; + $k$2$i = $k$0103$i; + $lnz$2$i = $lnz$0100$i; + break; + } + $371 = $x$i + ($k$0103$i << 2) | 0; + if (!$j$0104$i) $storemerge$i = $703; else $storemerge$i = $$3105$i + -48 + ((HEAP32[$371 >> 2] | 0) * 10 | 0) | 0; + HEAP32[$371 >> 2] = $storemerge$i; + $376 = $j$0104$i + 1 | 0; + $377 = ($376 | 0) == 9; + $706 = $704; + $707 = $705; + $708 = $367; + $709 = $368; + $gotdig$4$i = 1; + $gotrad$2$i = $gotrad$1102$i; + $j$2$i = $377 ? 0 : $376; + $k$2$i = ($377 & 1) + $k$0103$i | 0; + $lnz$2$i = $369 ? $367 : $lnz$0100$i; + } while (0); + $381 = HEAP32[$0 >> 2] | 0; + if ($381 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $381 + 1; + $$3$be$i = HEAPU8[$381 >> 0] | 0; + } else $$3$be$i = ___shgetc($f) | 0; + $703 = $$3$be$i + -48 | 0; + $702 = ($$3$be$i | 0) == 46; + if (!($702 | $703 >>> 0 < 10)) { + $$3$lcssa$i = $$3$be$i; + $394 = $708; + $395 = $706; + $397 = $709; + $398 = $707; + $gotdig$3$lcssa$i = $gotdig$4$i; + $gotrad$1$lcssa$i = $gotrad$2$i; + $j$0$lcssa$i = $j$2$i; + $k$0$lcssa$i = $k$2$i; + $lnz$0$lcssa$i = $lnz$2$i; + label = 161; + break L203; + } else { + $$3105$i = $$3$be$i; + $365 = $708; + $366 = $709; + $704 = $706; + $705 = $707; + $gotdig$3101$i = $gotdig$4$i; + $gotrad$1102$i = $gotrad$2$i; + $j$0104$i = $j$2$i; + $k$0103$i = $k$2$i; + $lnz$0100$i = $lnz$2$i; + } + } + $714 = $712; + $715 = $713; + $716 = $710; + $717 = $711; + $718 = ($gotdig$3101$i$lcssa | 0) != 0; + $j$069$i = $j$0104$i$lcssa; + $k$065$i = $k$0103$i$lcssa; + $lnz$059$i = $lnz$0100$i$lcssa; + label = 169; + } else { + $$3$lcssa$i = $$2$i; + $394 = 0; + $395 = $700; + $397 = 0; + $398 = $701; + $gotdig$3$lcssa$i = $gotdig$2$i13; + $gotrad$1$lcssa$i = $gotrad$0$i14; + $j$0$lcssa$i = 0; + $k$0$lcssa$i = 0; + $lnz$0$lcssa$i = 0; + label = 161; + } while (0); + do if ((label | 0) == 161) { + $392 = ($gotrad$1$lcssa$i | 0) == 0; + $393 = $392 ? $394 : $395; + $396 = $392 ? $397 : $398; + $399 = ($gotdig$3$lcssa$i | 0) != 0; + if (!(($$3$lcssa$i | 32 | 0) == 101 & $399)) if (($$3$lcssa$i | 0) > -1) { + $714 = $394; + $715 = $397; + $716 = $393; + $717 = $396; + $718 = $399; + $j$069$i = $j$0$lcssa$i; + $k$065$i = $k$0$lcssa$i; + $lnz$059$i = $lnz$0$lcssa$i; + label = 169; + break; + } else { + $719 = $394; + $720 = $397; + $721 = $399; + $722 = $393; + $723 = $396; + $j$068$i = $j$0$lcssa$i; + $k$064$i = $k$0$lcssa$i; + $lnz$058$i = $lnz$0$lcssa$i; + label = 171; + break; + } + $402 = _scanexp($f, $pok) | 0; + $403 = tempRet0; + if (($402 | 0) == 0 & ($403 | 0) == -2147483648) { + if (!$pok) { + ___shlim($f, 0); + $$0$i27 = 0.0; + break; + } + if (!(HEAP32[$1 >> 2] | 0)) { + $412 = 0; + $413 = 0; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $412 = 0; + $413 = 0; + } + } else { + $412 = $402; + $413 = $403; + } + $414 = _i64Add($412 | 0, $413 | 0, $393 | 0, $396 | 0) | 0; + $427 = $414; + $428 = $394; + $430 = tempRet0; + $431 = $397; + $j$067$i = $j$0$lcssa$i; + $k$063$i = $k$0$lcssa$i; + $lnz$057$i = $lnz$0$lcssa$i; + label = 173; + } while (0); + if ((label | 0) == 169) if (!(HEAP32[$1 >> 2] | 0)) { + $719 = $714; + $720 = $715; + $721 = $718; + $722 = $716; + $723 = $717; + $j$068$i = $j$069$i; + $k$064$i = $k$065$i; + $lnz$058$i = $lnz$059$i; + label = 171; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + if ($718) { + $427 = $716; + $428 = $714; + $430 = $717; + $431 = $715; + $j$067$i = $j$069$i; + $k$063$i = $k$065$i; + $lnz$057$i = $lnz$059$i; + label = 173; + } else label = 172; + } + if ((label | 0) == 171) if ($721) { + $427 = $722; + $428 = $719; + $430 = $723; + $431 = $720; + $j$067$i = $j$068$i; + $k$063$i = $k$064$i; + $lnz$057$i = $lnz$058$i; + label = 173; + } else label = 172; + do if ((label | 0) == 172) { + $421 = ___errno_location() | 0; + HEAP32[$421 >> 2] = 22; + ___shlim($f, 0); + $$0$i27 = 0.0; + } else if ((label | 0) == 173) { + $422 = HEAP32[$x$i >> 2] | 0; + if (!$422) { + $$0$i27 = +($sign$0 | 0) * 0.0; + break; + } + if ((($431 | 0) < 0 | ($431 | 0) == 0 & $428 >>> 0 < 10) & (($427 | 0) == ($428 | 0) & ($430 | 0) == ($431 | 0))) if ($bits$0$ph >>> 0 > 30 | ($422 >>> $bits$0$ph | 0) == 0) { + $$0$i27 = +($sign$0 | 0) * +($422 >>> 0); + break; + } + $444 = ($emin$0$ph | 0) / -2 | 0; + $446 = (($444 | 0) < 0) << 31 >> 31; + if (($430 | 0) > ($446 | 0) | ($430 | 0) == ($446 | 0) & $427 >>> 0 > $444 >>> 0) { + $452 = ___errno_location() | 0; + HEAP32[$452 >> 2] = 34; + $$0$i27 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284; + break; + } + $456 = $emin$0$ph + -106 | 0; + $458 = (($456 | 0) < 0) << 31 >> 31; + if (($430 | 0) < ($458 | 0) | ($430 | 0) == ($458 | 0) & $427 >>> 0 < $456 >>> 0) { + $464 = ___errno_location() | 0; + HEAP32[$464 >> 2] = 34; + $$0$i27 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; + break; + } + if (!$j$067$i) $k$3$i = $k$063$i; else { + if (($j$067$i | 0) < 9) { + $470 = $x$i + ($k$063$i << 2) | 0; + $472 = HEAP32[$470 >> 2] | 0; + $j$394$i = $j$067$i; + while (1) { + $471 = $472 * 10 | 0; + $j$394$i = $j$394$i + 1 | 0; + if (($j$394$i | 0) == 9) { + $$lcssa265 = $471; + break; + } else $472 = $471; + } + HEAP32[$470 >> 2] = $$lcssa265; + } + $k$3$i = $k$063$i + 1 | 0; + } + if (($lnz$057$i | 0) < 9) if (($lnz$057$i | 0) <= ($427 | 0) & ($427 | 0) < 18) { + if (($427 | 0) == 9) { + $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0); + break; + } + if (($427 | 0) < 9) { + $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0) / +(HEAP32[2648 + (8 - $427 << 2) >> 2] | 0); + break; + } + $494 = $bits$0$ph + 27 + (Math_imul($427, -3) | 0) | 0; + $$pre$i17 = HEAP32[$x$i >> 2] | 0; + if (($494 | 0) > 30 | ($$pre$i17 >>> $494 | 0) == 0) { + $$0$i27 = +($sign$0 | 0) * +($$pre$i17 >>> 0) * +(HEAP32[2648 + ($427 + -10 << 2) >> 2] | 0); + break; + } + } + $506 = ($427 | 0) % 9 | 0; + if (!$506) { + $a$2$ph38$i = 0; + $e2$0$ph$i = 0; + $rp$2$ph36$i = $427; + $z$1$ph37$i = $k$3$i; + } else { + $510 = ($427 | 0) > -1 ? $506 : $506 + 9 | 0; + $513 = HEAP32[2648 + (8 - $510 << 2) >> 2] | 0; + if (!$k$3$i) { + $a$0$lcssa151$i = 0; + $rp$0$lcssa152$i = $427; + $z$0$i = 0; + } else { + $515 = 1e9 / ($513 | 0) | 0; + $a$085$i = 0; + $carry$087$i = 0; + $k$486$i = 0; + $rp$084$i = $427; + while (1) { + $516 = $x$i + ($k$486$i << 2) | 0; + $517 = HEAP32[$516 >> 2] | 0; + $520 = (($517 >>> 0) / ($513 >>> 0) | 0) + $carry$087$i | 0; + HEAP32[$516 >> 2] = $520; + $521 = Math_imul(($517 >>> 0) % ($513 >>> 0) | 0, $515) | 0; + $or$cond16$i = ($k$486$i | 0) == ($a$085$i | 0) & ($520 | 0) == 0; + $k$486$i = $k$486$i + 1 | 0; + $rp$1$i18 = $or$cond16$i ? $rp$084$i + -9 | 0 : $rp$084$i; + $a$1$i = $or$cond16$i ? $k$486$i & 127 : $a$085$i; + if (($k$486$i | 0) == ($k$3$i | 0)) { + $$lcssa264 = $521; + $a$1$i$lcssa = $a$1$i; + $rp$1$i18$lcssa = $rp$1$i18; + break; + } else { + $a$085$i = $a$1$i; + $carry$087$i = $521; + $rp$084$i = $rp$1$i18; + } + } + if (!$$lcssa264) { + $a$0$lcssa151$i = $a$1$i$lcssa; + $rp$0$lcssa152$i = $rp$1$i18$lcssa; + $z$0$i = $k$3$i; + } else { + HEAP32[$x$i + ($k$3$i << 2) >> 2] = $$lcssa264; + $a$0$lcssa151$i = $a$1$i$lcssa; + $rp$0$lcssa152$i = $rp$1$i18$lcssa; + $z$0$i = $k$3$i + 1 | 0; + } + } + $a$2$ph38$i = $a$0$lcssa151$i; + $e2$0$ph$i = 0; + $rp$2$ph36$i = 9 - $510 + $rp$0$lcssa152$i | 0; + $z$1$ph37$i = $z$0$i; + } + L284 : while (1) { + $533 = ($rp$2$ph36$i | 0) < 18; + $534 = ($rp$2$ph36$i | 0) == 18; + $535 = $x$i + ($a$2$ph38$i << 2) | 0; + $e2$0$i19 = $e2$0$ph$i; + $z$1$i = $z$1$ph37$i; + while (1) { + if (!$533) { + if (!$534) { + $a$3$ph$i = $a$2$ph38$i; + $e2$1$ph$i = $e2$0$i19; + $rp$3$ph34$i = $rp$2$ph36$i; + $z$5$ph$i = $z$1$i; + break L284; + } + if ((HEAP32[$535 >> 2] | 0) >>> 0 >= 9007199) { + $a$3$ph$i = $a$2$ph38$i; + $e2$1$ph$i = $e2$0$i19; + $rp$3$ph34$i = 18; + $z$5$ph$i = $z$1$i; + break L284; + } + } + $carry1$0$i = 0; + $k$5$in$i = $z$1$i + 127 | 0; + $z$2$i = $z$1$i; + while (1) { + $k$5$i = $k$5$in$i & 127; + $539 = $x$i + ($k$5$i << 2) | 0; + $541 = _bitshift64Shl(HEAP32[$539 >> 2] | 0, 0, 29) | 0; + $543 = _i64Add($541 | 0, tempRet0 | 0, $carry1$0$i | 0, 0) | 0; + $544 = tempRet0; + if ($544 >>> 0 > 0 | ($544 | 0) == 0 & $543 >>> 0 > 1e9) { + $550 = ___udivdi3($543 | 0, $544 | 0, 1e9, 0) | 0; + $552 = ___uremdi3($543 | 0, $544 | 0, 1e9, 0) | 0; + $$sink$off0$i = $552; + $carry1$1$i = $550; + } else { + $$sink$off0$i = $543; + $carry1$1$i = 0; + } + HEAP32[$539 >> 2] = $$sink$off0$i; + $557 = ($k$5$i | 0) == ($a$2$ph38$i | 0); + $z$3$i = ($k$5$i | 0) != ($z$2$i + 127 & 127 | 0) | $557 ? $z$2$i : ($$sink$off0$i | 0) == 0 ? $k$5$i : $z$2$i; + if ($557) { + $carry1$1$i$lcssa = $carry1$1$i; + $z$3$i$lcssa = $z$3$i; + break; + } else { + $carry1$0$i = $carry1$1$i; + $k$5$in$i = $k$5$i + -1 | 0; + $z$2$i = $z$3$i; + } + } + $560 = $e2$0$i19 + -29 | 0; + if (!$carry1$1$i$lcssa) { + $e2$0$i19 = $560; + $z$1$i = $z$3$i$lcssa; + } else { + $$lcssa263 = $560; + $carry1$1$i$lcssa$lcssa = $carry1$1$i$lcssa; + $z$3$i$lcssa$lcssa = $z$3$i$lcssa; + break; + } + } + $564 = $a$2$ph38$i + 127 & 127; + if (($564 | 0) == ($z$3$i$lcssa$lcssa | 0)) { + $567 = $z$3$i$lcssa$lcssa + 127 & 127; + $572 = $x$i + (($z$3$i$lcssa$lcssa + 126 & 127) << 2) | 0; + HEAP32[$572 >> 2] = HEAP32[$572 >> 2] | HEAP32[$x$i + ($567 << 2) >> 2]; + $z$4$i = $567; + } else $z$4$i = $z$3$i$lcssa$lcssa; + HEAP32[$x$i + ($564 << 2) >> 2] = $carry1$1$i$lcssa$lcssa; + $a$2$ph38$i = $564; + $e2$0$ph$i = $$lcssa263; + $rp$2$ph36$i = $rp$2$ph36$i + 9 | 0; + $z$1$ph37$i = $z$4$i; + } + L302 : while (1) { + $604 = $z$5$ph$i + 1 & 127; + $609 = $x$i + (($z$5$ph$i + 127 & 127) << 2) | 0; + $a$3$ph157$i = $a$3$ph$i; + $e2$1$ph156$i = $e2$1$ph$i; + $rp$3$ph$i = $rp$3$ph34$i; + while (1) { + $610 = ($rp$3$ph$i | 0) == 18; + $$18$i = ($rp$3$ph$i | 0) > 27 ? 9 : 1; + $$not$i = $610 ^ 1; + $a$3$i = $a$3$ph157$i; + $e2$1$i = $e2$1$ph156$i; + while (1) { + $576 = $a$3$i & 127; + $577 = ($576 | 0) == ($z$5$ph$i | 0); + do if ($577) label = 219; else { + $579 = HEAP32[$x$i + ($576 << 2) >> 2] | 0; + if ($579 >>> 0 < 9007199) { + label = 219; + break; + } + if ($579 >>> 0 > 9007199) break; + $583 = $a$3$i + 1 & 127; + if (($583 | 0) == ($z$5$ph$i | 0)) { + label = 219; + break; + } + $691 = HEAP32[$x$i + ($583 << 2) >> 2] | 0; + if ($691 >>> 0 < 254740991) { + label = 219; + break; + } + if (!($691 >>> 0 > 254740991 | $$not$i)) { + $617 = $576; + $a$3$i249 = $a$3$i; + $e2$1$i246 = $e2$1$i; + $z$7$i = $z$5$ph$i; + break L302; + } + } while (0); + if ((label | 0) == 219) { + label = 0; + if ($610) { + label = 220; + break L302; + } + } + $585 = $e2$1$i + $$18$i | 0; + if (($a$3$i | 0) == ($z$5$ph$i | 0)) { + $a$3$i = $z$5$ph$i; + $e2$1$i = $585; + } else { + $$lcssa256 = $585; + $a$3$i$lcssa248 = $a$3$i; + break; + } + } + $588 = (1 << $$18$i) + -1 | 0; + $589 = 1e9 >>> $$18$i; + $a$478$i = $a$3$i$lcssa248; + $carry3$081$i = 0; + $k$679$i = $a$3$i$lcssa248; + $rp$477$i = $rp$3$ph$i; + while (1) { + $590 = $x$i + ($k$679$i << 2) | 0; + $591 = HEAP32[$590 >> 2] | 0; + $594 = ($591 >>> $$18$i) + $carry3$081$i | 0; + HEAP32[$590 >> 2] = $594; + $595 = Math_imul($591 & $588, $589) | 0; + $or$cond19$i = ($k$679$i | 0) == ($a$478$i | 0) & ($594 | 0) == 0; + $k$679$i = $k$679$i + 1 & 127; + $rp$5$i = $or$cond19$i ? $rp$477$i + -9 | 0 : $rp$477$i; + $a$5$i = $or$cond19$i ? $k$679$i : $a$478$i; + if (($k$679$i | 0) == ($z$5$ph$i | 0)) { + $$lcssa257 = $595; + $a$5$i$lcssa = $a$5$i; + $rp$5$i$lcssa = $rp$5$i; + break; + } else { + $a$478$i = $a$5$i; + $carry3$081$i = $595; + $rp$477$i = $rp$5$i; + } + } + if (!$$lcssa257) { + $a$3$ph157$i = $a$5$i$lcssa; + $e2$1$ph156$i = $$lcssa256; + $rp$3$ph$i = $rp$5$i$lcssa; + continue; + } + if (($604 | 0) != ($a$5$i$lcssa | 0)) { + $$lcssa256$lcssa = $$lcssa256; + $$lcssa257$lcssa = $$lcssa257; + $a$5$i$lcssa$lcssa = $a$5$i$lcssa; + $rp$5$i$lcssa$lcssa = $rp$5$i$lcssa; + break; + } + HEAP32[$609 >> 2] = HEAP32[$609 >> 2] | 1; + $a$3$ph157$i = $a$5$i$lcssa; + $e2$1$ph156$i = $$lcssa256; + $rp$3$ph$i = $rp$5$i$lcssa; + } + HEAP32[$x$i + ($z$5$ph$i << 2) >> 2] = $$lcssa257$lcssa; + $a$3$ph$i = $a$5$i$lcssa$lcssa; + $e2$1$ph$i = $$lcssa256$lcssa; + $rp$3$ph34$i = $rp$5$i$lcssa$lcssa; + $z$5$ph$i = $604; + } + if ((label | 0) == 220) if ($577) { + HEAP32[$x$i + ($604 + -1 << 2) >> 2] = 0; + $617 = $z$5$ph$i; + $a$3$i249 = $a$3$i; + $e2$1$i246 = $e2$1$i; + $z$7$i = $604; + } else { + $617 = $576; + $a$3$i249 = $a$3$i; + $e2$1$i246 = $e2$1$i; + $z$7$i = $z$5$ph$i; + } + $619 = +((HEAP32[$x$i + ($617 << 2) >> 2] | 0) >>> 0); + $621 = $a$3$i249 + 1 & 127; + if (($621 | 0) == ($z$7$i | 0)) { + $680 = $a$3$i249 + 2 & 127; + HEAP32[$x$i + ($680 + -1 << 2) >> 2] = 0; + $z$7$1$i = $680; + } else $z$7$1$i = $z$7$i; + $643 = +($sign$0 | 0); + $625 = $643 * ($619 * 1.0e9 + +((HEAP32[$x$i + ($621 << 2) >> 2] | 0) >>> 0)); + $663 = $e2$1$i246 + 53 | 0; + $669 = $663 - $emin$0$ph | 0; + $670 = ($669 | 0) < ($bits$0$ph | 0); + $denormal$0$i = $670 & 1; + $$010$i = $670 ? (($669 | 0) < 0 ? 0 : $669) : $bits$0$ph; + if (($$010$i | 0) < 53) { + $626 = +_copysignl(+_scalbn(1.0, 105 - $$010$i | 0), $625); + $629 = +_fmodl($625, +_scalbn(1.0, 53 - $$010$i | 0)); + $bias$0$i25 = $626; + $frac$0$i = $629; + $y$1$i24 = $626 + ($625 - $629); + } else { + $bias$0$i25 = 0.0; + $frac$0$i = 0.0; + $y$1$i24 = $625; + } + $633 = $a$3$i249 + 2 & 127; + do if (($633 | 0) == ($z$7$1$i | 0)) $frac$2$i = $frac$0$i; else { + $636 = HEAP32[$x$i + ($633 << 2) >> 2] | 0; + do if ($636 >>> 0 < 5e8) { + if (!$636) if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) { + $frac$1$i = $frac$0$i; + break; + } + $frac$1$i = $643 * .25 + $frac$0$i; + } else { + if ($636 >>> 0 > 5e8) { + $frac$1$i = $643 * .75 + $frac$0$i; + break; + } + if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) { + $frac$1$i = $643 * .5 + $frac$0$i; + break; + } else { + $frac$1$i = $643 * .75 + $frac$0$i; + break; + } + } while (0); + if ((53 - $$010$i | 0) <= 1) { + $frac$2$i = $frac$1$i; + break; + } + if (+_fmodl($frac$1$i, 1.0) != 0.0) { + $frac$2$i = $frac$1$i; + break; + } + $frac$2$i = $frac$1$i + 1.0; + } while (0); + $661 = $y$1$i24 + $frac$2$i - $bias$0$i25; + do if (($663 & 2147483647 | 0) > (-2 - $sum$i | 0)) { + if (!(+Math_abs(+$661) >= 9007199254740992.0)) { + $denormal$2$i = $denormal$0$i; + $e2$2$i = $e2$1$i246; + $y$2$i26 = $661; + } else { + $denormal$2$i = $670 & ($$010$i | 0) == ($669 | 0) ? 0 : $denormal$0$i; + $e2$2$i = $e2$1$i246 + 1 | 0; + $y$2$i26 = $661 * .5; + } + if (($e2$2$i + 50 | 0) <= ($330 | 0)) if (!($frac$2$i != 0.0 & ($denormal$2$i | 0) != 0)) { + $e2$3$i = $e2$2$i; + $y$3$i = $y$2$i26; + break; + } + $677 = ___errno_location() | 0; + HEAP32[$677 >> 2] = 34; + $e2$3$i = $e2$2$i; + $y$3$i = $y$2$i26; + } else { + $e2$3$i = $e2$1$i246; + $y$3$i = $661; + } while (0); + $$0$i27 = +_scalbnl($y$3$i, $e2$3$i); + } while (0); + $$0 = $$0$i27; + break L4; + break; + } + default: + { + if (HEAP32[$1 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $113 = ___errno_location() | 0; + HEAP32[$113 >> 2] = 22; + ___shlim($f, 0); + $$0 = 0.0; + break L4; + } + } + } + } while (0); + if ((label | 0) == 23) { + $42 = (HEAP32[$1 >> 2] | 0) == 0; + if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + if (($pok | 0) != 0 & $i$0$lcssa >>> 0 > 3) { + $i$1 = $i$0$lcssa; + do { + if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $i$1 = $i$1 + -1 | 0; + } while ($i$1 >>> 0 > 3); + } + } + $$0 = +($sign$0 | 0) * inf; + } while (0); + STACKTOP = sp; + return +$$0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i16$i = 0, $$0$i$i$i23$i = 0, $$0$i$i$i33$i = 0, $$0$i$i$i42$i = 0, $$0$i$i$i52$i = 0, $$0$i10 = 0, $$02 = 0, $$07$i = 0, $$first = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $129 = 0, $13 = 0, $130 = 0, $134 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $144 = 0, $145 = 0, $15 = 0, $153 = 0, $154 = 0, $156 = 0, $16 = 0, $164 = 0, $166 = 0, $167 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $211 = 0, $212 = 0, $220 = 0, $221 = 0, $223 = 0, $23 = 0, $231 = 0, $233 = 0, $234 = 0, $247 = 0, $248 = 0, $249 = 0, $250 = 0, $253 = 0, $256 = 0, $259 = 0, $268 = 0, $271 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $281 = 0, $282 = 0, $290 = 0, $291 = 0, $293 = 0, $3 = 0, $30 = 0, $301 = 0, $303 = 0, $304 = 0, $317 = 0, $318 = 0, $319 = 0, $320 = 0, $323 = 0, $326 = 0, $329 = 0, $338 = 0, $34 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $351 = 0, $359 = 0, $361 = 0, $362 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $381 = 0, $384 = 0, $387 = 0, $398 = 0, $4 = 0, $400 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $419 = 0, $420 = 0, $422 = 0, $430 = 0, $432 = 0, $433 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $452 = 0, $455 = 0, $458 = 0, $469 = 0, $474 = 0, $476 = 0, $477 = 0, $478 = 0, $483 = 0, $484 = 0, $489 = 0, $49 = 0, $494 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $502 = 0, $506 = 0, $507 = 0, $509 = 0, $51 = 0, $510 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $526 = 0, $528 = 0, $538 = 0, $539 = 0, $540 = 0, $542 = 0, $544 = 0, $545 = 0, $546 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $56 = 0, $562 = 0, $564 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $58 = 0, $588 = 0, $593 = 0, $594 = 0, $597 = 0, $6 = 0, $605 = 0, $606 = 0, $608 = 0, $61 = 0, $612 = 0, $613 = 0, $615 = 0, $62 = 0, $622 = 0, $624 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $638 = 0, $641 = 0, $644 = 0, $645 = 0, $65 = 0, $651 = 0, $653 = 0, $657 = 0, $659 = 0, $667 = 0, $668 = 0, $669 = 0, $670 = 0, $673 = 0, $675 = 0, $685 = 0, $690 = 0, $692 = 0, $693 = 0, $7 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $707 = 0, $709 = 0, $719 = 0, $8 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $St$0$off0$i = 0, $__v$i$i51$i = 0, $cv$i = 0, $name$i11 = 0, $name1$i = 0, $name2$i12 = 0, $name3$i = 0, $name4$i = 0, $pop_subs$0$off0$i$ph$lcssa = 0, $pop_subs$0$off0$i$ph136 = 0, $t0$0$i = 0, $t0$0$i13 = 0, $t0$1$i = 0, $t0$2$i$be = 0, $t0$2$i$lcssa = 0, $t0$2$i$ph$be = 0, $t0$2$i$ph135 = 0, $t0$2$i131 = 0, $t0$2$i131$lcssa177 = 0, $t0$2$i131$lcssa178 = 0, $t0$2$i131$lcssa179 = 0, $t0$2$i131184 = 0, $tmp = 0, $tmp3 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 304 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i51$i = sp + 276 | 0; + $cv$i = sp + 264 | 0; + $name$i11 = sp + 252 | 0; + $0 = sp + 240 | 0; + $1 = sp + 224 | 0; + $2 = sp + 216 | 0; + $name1$i = sp + 204 | 0; + $3 = sp + 192 | 0; + $4 = sp + 176 | 0; + $5 = sp + 168 | 0; + $name2$i12 = sp + 156 | 0; + $6 = sp + 144 | 0; + $7 = sp + 128 | 0; + $8 = sp + 124 | 0; + $name3$i = sp + 112 | 0; + $9 = sp + 96 | 0; + $10 = sp + 76 | 0; + $name4$i = sp + 64 | 0; + $11 = sp + 48 | 0; + $12 = sp + 8 | 0; + $13 = sp; + $14 = sp + 80 | 0; + $15 = sp + 60 | 0; + $tmp = sp + 36 | 0; + $tmp3 = sp + 24 | 0; + $16 = $last; + L1 : do if (($16 - $first | 0) > 1) { + $$first = (HEAP8[$first >> 0] | 0) == 76 ? $first + 1 | 0 : $first; + $23 = HEAP8[$$first >> 0] | 0; + switch ($23 << 24 >> 24 | 0) { + case 78: + { + L44 : do if (($$first | 0) == ($last | 0)) $$07$i = $last; else if ($23 << 24 >> 24 == 78) { + $28 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($$first + 1 | 0, $last, $cv$i) | 0; + if (($28 | 0) == ($last | 0)) $$07$i = $$first; else { + $30 = $db + 52 | 0; + HEAP32[$30 >> 2] = 0; + switch (HEAP8[$28 >> 0] | 0) { + case 82: + { + HEAP32[$30 >> 2] = 1; + $t0$0$i13 = $28 + 1 | 0; + break; + } + case 79: + { + HEAP32[$30 >> 2] = 2; + $t0$0$i13 = $28 + 1 | 0; + break; + } + default: + $t0$0$i13 = $28; + } + $34 = $db + 4 | 0; + $35 = HEAP32[$34 >> 2] | 0; + $37 = HEAP32[$db + 8 >> 2] | 0; + if ($35 >>> 0 < $37 >>> 0) { + HEAP32[$35 >> 2] = 0; + HEAP32[$35 + 4 >> 2] = 0; + HEAP32[$35 + 8 >> 2] = 0; + HEAP32[$35 + 12 >> 2] = 0; + HEAP32[$35 + 16 >> 2] = 0; + HEAP32[$35 + 20 >> 2] = 0; + HEAP32[$35 >> 2] = 0; + HEAP32[$35 + 4 >> 2] = 0; + HEAP32[$35 + 8 >> 2] = 0; + $41 = $35 + 12 | 0; + HEAP32[$41 >> 2] = 0; + HEAP32[$41 + 4 >> 2] = 0; + HEAP32[$41 + 8 >> 2] = 0; + HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 24; + } else { + $49 = HEAP32[$db >> 2] | 0; + $50 = $35 - $49 | 0; + $51 = ($50 | 0) / 24 | 0; + $52 = $51 + 1 | 0; + if (($50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $56 = ($37 - $49 | 0) / 24 | 0; + if ($56 >>> 0 < 1073741823) { + $58 = $56 << 1; + $$0$i$i$i$i = $58 >>> 0 < $52 >>> 0 ? $52 : $58; + } else $$0$i$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i51$i, $$0$i$i$i$i, $51, $db + 12 | 0); + $61 = $__v$i$i51$i + 8 | 0; + $62 = HEAP32[$61 >> 2] | 0; + HEAP32[$62 >> 2] = 0; + HEAP32[$62 + 4 >> 2] = 0; + HEAP32[$62 + 8 >> 2] = 0; + HEAP32[$62 + 12 >> 2] = 0; + HEAP32[$62 + 16 >> 2] = 0; + HEAP32[$62 + 20 >> 2] = 0; + HEAP32[$62 >> 2] = 0; + HEAP32[$62 + 4 >> 2] = 0; + HEAP32[$62 + 8 >> 2] = 0; + $65 = $62 + 12 | 0; + HEAP32[$65 >> 2] = 0; + HEAP32[$65 + 4 >> 2] = 0; + HEAP32[$65 + 8 >> 2] = 0; + HEAP32[$61 >> 2] = $62 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i51$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i51$i); + } + if (($16 - $t0$0$i13 | 0) > 1) if ((HEAP8[$t0$0$i13 >> 0] | 0) == 83) if ((HEAP8[$t0$0$i13 + 1 >> 0] | 0) == 116) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj((HEAP32[$34 >> 2] | 0) + -24 | 0, 12898, 3); + $t0$1$i = $t0$0$i13 + 2 | 0; + } else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13; + if (($t0$1$i | 0) == ($last | 0)) { + $123 = HEAP32[$34 >> 2] | 0; + $124 = $123 + -24 | 0; + $126 = $123; + while (1) { + $125 = $126 + -24 | 0; + HEAP32[$34 >> 2] = $125; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($125); + $126 = HEAP32[$34 >> 2] | 0; + if (($126 | 0) == ($124 | 0)) { + $$07$i = $$first; + break L44; + } + } + } + $81 = $name3$i + 8 | 0; + $82 = $name3$i + 1 | 0; + $83 = $name3$i + 4 | 0; + $84 = $db + 12 | 0; + $85 = $db + 16 | 0; + $86 = $db + 20 | 0; + $87 = $db + 24 | 0; + $88 = $9 + 12 | 0; + $89 = $9 + 4 | 0; + $90 = $9 + 8 | 0; + $91 = $db + 28 | 0; + $92 = $__v$i$i51$i + 8 | 0; + $93 = $12 + 12 | 0; + $94 = $12 + 4 | 0; + $95 = $12 + 8 | 0; + $96 = $__v$i$i51$i + 8 | 0; + $97 = $11 + 8 | 0; + $98 = $11 + 1 | 0; + $99 = $11 + 4 | 0; + $100 = $0 + 8 | 0; + $101 = $0 + 1 | 0; + $102 = $0 + 4 | 0; + $103 = $1 + 12 | 0; + $104 = $1 + 4 | 0; + $105 = $1 + 8 | 0; + $106 = $__v$i$i51$i + 8 | 0; + $107 = $4 + 12 | 0; + $108 = $4 + 4 | 0; + $109 = $4 + 8 | 0; + $110 = $__v$i$i51$i + 8 | 0; + $111 = $3 + 8 | 0; + $112 = $3 + 1 | 0; + $113 = $3 + 4 | 0; + $114 = $7 + 12 | 0; + $115 = $7 + 4 | 0; + $116 = $7 + 8 | 0; + $117 = $__v$i$i51$i + 8 | 0; + $118 = $6 + 8 | 0; + $119 = $6 + 1 | 0; + $120 = $6 + 4 | 0; + $121 = HEAP8[$t0$1$i >> 0] | 0; + L72 : do if ($121 << 24 >> 24 == 69) { + $pop_subs$0$off0$i$ph$lcssa = 0; + $t0$2$i$lcssa = $t0$1$i; + } else { + $719 = $121; + $pop_subs$0$off0$i$ph136 = 0; + $t0$2$i$ph135 = $t0$1$i; + L73 : while (1) { + $129 = $719; + $t0$2$i131 = $t0$2$i$ph135; + L75 : while (1) { + switch ($129 << 24 >> 24 | 0) { + case 83: + { + $t0$2$i131$lcssa177 = $t0$2$i131; + label = 25; + break L75; + break; + } + case 84: + { + $t0$2$i131$lcssa178 = $t0$2$i131; + label = 44; + break L75; + break; + } + case 68: + { + $t0$2$i131$lcssa179 = $t0$2$i131; + label = 61; + break L75; + break; + } + case 73: + { + $338 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131, $last, $db) | 0; + if (($338 | 0) == ($t0$2$i131 | 0) | ($338 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name3$i, (HEAP32[$34 >> 2] | 0) + -24 | 0); + $343 = HEAP32[$34 >> 2] | 0; + $344 = $343 + -24 | 0; + $346 = $343; + do { + $345 = $346 + -24 | 0; + HEAP32[$34 >> 2] = $345; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($345); + $346 = HEAP32[$34 >> 2] | 0; + } while (($346 | 0) != ($344 | 0)); + $349 = HEAP8[$name3$i >> 0] | 0; + $351 = ($349 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($343 + -48 | 0, $351 ? $82 : HEAP32[$81 >> 2] | 0, $351 ? ($349 & 255) >>> 1 : HEAP32[$83 >> 2] | 0) | 0; + $359 = (HEAP32[$34 >> 2] | 0) + -24 | 0; + HEAP32[$10 >> 2] = HEAP32[$84 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($9, $359, $10); + $361 = HEAP32[$86 >> 2] | 0; + $362 = HEAP32[$87 >> 2] | 0; + if ($361 >>> 0 < $362 >>> 0) { + HEAP32[$361 + 12 >> 2] = HEAP32[$88 >> 2]; + HEAP32[$361 >> 2] = HEAP32[$9 >> 2]; + HEAP32[$361 + 4 >> 2] = HEAP32[$89 >> 2]; + HEAP32[$361 + 8 >> 2] = HEAP32[$90 >> 2]; + HEAP32[$90 >> 2] = 0; + HEAP32[$89 >> 2] = 0; + HEAP32[$9 >> 2] = 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16; + } else { + $375 = HEAP32[$85 >> 2] | 0; + $376 = $361 - $375 | 0; + $377 = $376 >> 4; + $378 = $377 + 1 | 0; + if (($376 | 0) < -16) { + label = 86; + break L73; + } + $381 = $362 - $375 | 0; + if ($381 >> 4 >>> 0 < 1073741823) { + $384 = $381 >> 3; + $$0$i$i$i42$i = $384 >>> 0 < $378 >>> 0 ? $378 : $384; + } else $$0$i$i$i42$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i42$i, $377, $91); + $387 = HEAP32[$92 >> 2] | 0; + HEAP32[$387 + 12 >> 2] = HEAP32[$88 >> 2]; + HEAP32[$387 >> 2] = HEAP32[$9 >> 2]; + HEAP32[$387 + 4 >> 2] = HEAP32[$89 >> 2]; + HEAP32[$387 + 8 >> 2] = HEAP32[$90 >> 2]; + HEAP32[$90 >> 2] = 0; + HEAP32[$89 >> 2] = 0; + HEAP32[$9 >> 2] = 0; + HEAP32[$92 >> 2] = $387 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($9); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name3$i); + $t0$2$i$be = $338; + break; + } + case 76: + { + $398 = $t0$2$i131 + 1 | 0; + if (($398 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } else $t0$2$i$be = $398; + break; + } + default: + { + $t0$2$i131184 = $t0$2$i131; + label = 93; + break L75; + } + } + $129 = HEAP8[$t0$2$i$be >> 0] | 0; + if ($129 << 24 >> 24 == 69) { + $pop_subs$0$off0$i$ph$lcssa = $pop_subs$0$off0$i$ph136; + $t0$2$i$lcssa = $t0$2$i$be; + break L72; + } else $t0$2$i131 = $t0$2$i$be; + } + L93 : do if ((label | 0) == 25) { + label = 0; + $130 = $t0$2$i131$lcssa177 + 1 | 0; + if (($130 | 0) != ($last | 0)) if ((HEAP8[$130 >> 0] | 0) == 116) { + $t0$2$i131184 = $t0$2$i131$lcssa177; + label = 93; + break; + } + $134 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa177, $last, $db) | 0; + if (($134 | 0) == ($t0$2$i131$lcssa177 | 0) | ($134 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name$i11, (HEAP32[$34 >> 2] | 0) + -24 | 0); + $139 = HEAP32[$34 >> 2] | 0; + $140 = $139 + -24 | 0; + $142 = $139; + do { + $141 = $142 + -24 | 0; + HEAP32[$34 >> 2] = $141; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($141); + $142 = HEAP32[$34 >> 2] | 0; + } while (($142 | 0) != ($140 | 0)); + $144 = $139 + -48 | 0; + $145 = HEAP8[$144 >> 0] | 0; + if (!($145 & 1)) $153 = ($145 & 255) >>> 1; else $153 = HEAP32[$139 + -44 >> 2] | 0; + if (!$153) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($144, $name$i11); else { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($0, 12902, $name$i11); + $154 = HEAP8[$0 >> 0] | 0; + $156 = ($154 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($144, $156 ? $101 : HEAP32[$100 >> 2] | 0, $156 ? ($154 & 255) >>> 1 : HEAP32[$102 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $164 = (HEAP32[$34 >> 2] | 0) + -24 | 0; + HEAP32[$2 >> 2] = HEAP32[$84 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($1, $164, $2); + $166 = HEAP32[$86 >> 2] | 0; + $167 = HEAP32[$87 >> 2] | 0; + if ($166 >>> 0 < $167 >>> 0) { + HEAP32[$166 + 12 >> 2] = HEAP32[$103 >> 2]; + HEAP32[$166 >> 2] = HEAP32[$1 >> 2]; + HEAP32[$166 + 4 >> 2] = HEAP32[$104 >> 2]; + HEAP32[$166 + 8 >> 2] = HEAP32[$105 >> 2]; + HEAP32[$105 >> 2] = 0; + HEAP32[$104 >> 2] = 0; + HEAP32[$1 >> 2] = 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16; + } else { + $180 = HEAP32[$85 >> 2] | 0; + $181 = $166 - $180 | 0; + $182 = $181 >> 4; + $183 = $182 + 1 | 0; + if (($181 | 0) < -16) { + label = 37; + break L73; + } + $186 = $167 - $180 | 0; + if ($186 >> 4 >>> 0 < 1073741823) { + $189 = $186 >> 3; + $$0$i$i$i16$i = $189 >>> 0 < $183 >>> 0 ? $183 : $189; + } else $$0$i$i$i16$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i16$i, $182, $91); + $192 = HEAP32[$106 >> 2] | 0; + HEAP32[$192 + 12 >> 2] = HEAP32[$103 >> 2]; + HEAP32[$192 >> 2] = HEAP32[$1 >> 2]; + HEAP32[$192 + 4 >> 2] = HEAP32[$104 >> 2]; + HEAP32[$192 + 8 >> 2] = HEAP32[$105 >> 2]; + HEAP32[$105 >> 2] = 0; + HEAP32[$104 >> 2] = 0; + HEAP32[$1 >> 2] = 0; + HEAP32[$106 >> 2] = $192 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($1); + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name$i11); + $t0$2$i$ph$be = $134; + } else if ((label | 0) == 44) { + label = 0; + $201 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa178, $last, $db) | 0; + if (($201 | 0) == ($t0$2$i131$lcssa178 | 0) | ($201 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name1$i, (HEAP32[$34 >> 2] | 0) + -24 | 0); + $206 = HEAP32[$34 >> 2] | 0; + $207 = $206 + -24 | 0; + $209 = $206; + do { + $208 = $209 + -24 | 0; + HEAP32[$34 >> 2] = $208; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($208); + $209 = HEAP32[$34 >> 2] | 0; + } while (($209 | 0) != ($207 | 0)); + $211 = $206 + -48 | 0; + $212 = HEAP8[$211 >> 0] | 0; + if (!($212 & 1)) $220 = ($212 & 255) >>> 1; else $220 = HEAP32[$206 + -44 >> 2] | 0; + if (!$220) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($211, $name1$i); else { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($3, 12902, $name1$i); + $221 = HEAP8[$3 >> 0] | 0; + $223 = ($221 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($211, $223 ? $112 : HEAP32[$111 >> 2] | 0, $223 ? ($221 & 255) >>> 1 : HEAP32[$113 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + } + $231 = (HEAP32[$34 >> 2] | 0) + -24 | 0; + HEAP32[$5 >> 2] = HEAP32[$84 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $231, $5); + $233 = HEAP32[$86 >> 2] | 0; + $234 = HEAP32[$87 >> 2] | 0; + if ($233 >>> 0 < $234 >>> 0) { + HEAP32[$233 + 12 >> 2] = HEAP32[$107 >> 2]; + HEAP32[$233 >> 2] = HEAP32[$4 >> 2]; + HEAP32[$233 + 4 >> 2] = HEAP32[$108 >> 2]; + HEAP32[$233 + 8 >> 2] = HEAP32[$109 >> 2]; + HEAP32[$109 >> 2] = 0; + HEAP32[$108 >> 2] = 0; + HEAP32[$4 >> 2] = 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16; + } else { + $247 = HEAP32[$85 >> 2] | 0; + $248 = $233 - $247 | 0; + $249 = $248 >> 4; + $250 = $249 + 1 | 0; + if (($248 | 0) < -16) { + label = 56; + break L73; + } + $253 = $234 - $247 | 0; + if ($253 >> 4 >>> 0 < 1073741823) { + $256 = $253 >> 3; + $$0$i$i$i23$i = $256 >>> 0 < $250 >>> 0 ? $250 : $256; + } else $$0$i$i$i23$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i23$i, $249, $91); + $259 = HEAP32[$110 >> 2] | 0; + HEAP32[$259 + 12 >> 2] = HEAP32[$107 >> 2]; + HEAP32[$259 >> 2] = HEAP32[$4 >> 2]; + HEAP32[$259 + 4 >> 2] = HEAP32[$108 >> 2]; + HEAP32[$259 + 8 >> 2] = HEAP32[$109 >> 2]; + HEAP32[$109 >> 2] = 0; + HEAP32[$108 >> 2] = 0; + HEAP32[$4 >> 2] = 0; + HEAP32[$110 >> 2] = $259 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name1$i); + $t0$2$i$ph$be = $201; + } else if ((label | 0) == 61) { + label = 0; + $268 = $t0$2$i131$lcssa179 + 1 | 0; + if (($268 | 0) != ($last | 0)) switch (HEAP8[$268 >> 0] | 0) { + case 84: + case 116: + break; + default: + { + $t0$2$i131184 = $t0$2$i131$lcssa179; + label = 93; + break L93; + } + } + $271 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa179, $last, $db) | 0; + if (($271 | 0) == ($t0$2$i131$lcssa179 | 0) | ($271 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name2$i12, (HEAP32[$34 >> 2] | 0) + -24 | 0); + $276 = HEAP32[$34 >> 2] | 0; + $277 = $276 + -24 | 0; + $279 = $276; + do { + $278 = $279 + -24 | 0; + HEAP32[$34 >> 2] = $278; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($278); + $279 = HEAP32[$34 >> 2] | 0; + } while (($279 | 0) != ($277 | 0)); + $281 = $276 + -48 | 0; + $282 = HEAP8[$281 >> 0] | 0; + if (!($282 & 1)) $290 = ($282 & 255) >>> 1; else $290 = HEAP32[$276 + -44 >> 2] | 0; + if (!$290) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($281, $name2$i12); else { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($6, 12902, $name2$i12); + $291 = HEAP8[$6 >> 0] | 0; + $293 = ($291 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($281, $293 ? $119 : HEAP32[$118 >> 2] | 0, $293 ? ($291 & 255) >>> 1 : HEAP32[$120 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + } + $301 = (HEAP32[$34 >> 2] | 0) + -24 | 0; + HEAP32[$8 >> 2] = HEAP32[$84 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($7, $301, $8); + $303 = HEAP32[$86 >> 2] | 0; + $304 = HEAP32[$87 >> 2] | 0; + if ($303 >>> 0 < $304 >>> 0) { + HEAP32[$303 + 12 >> 2] = HEAP32[$114 >> 2]; + HEAP32[$303 >> 2] = HEAP32[$7 >> 2]; + HEAP32[$303 + 4 >> 2] = HEAP32[$115 >> 2]; + HEAP32[$303 + 8 >> 2] = HEAP32[$116 >> 2]; + HEAP32[$116 >> 2] = 0; + HEAP32[$115 >> 2] = 0; + HEAP32[$7 >> 2] = 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16; + } else { + $317 = HEAP32[$85 >> 2] | 0; + $318 = $303 - $317 | 0; + $319 = $318 >> 4; + $320 = $319 + 1 | 0; + if (($318 | 0) < -16) { + label = 75; + break L73; + } + $323 = $304 - $317 | 0; + if ($323 >> 4 >>> 0 < 1073741823) { + $326 = $323 >> 3; + $$0$i$i$i33$i = $326 >>> 0 < $320 >>> 0 ? $320 : $326; + } else $$0$i$i$i33$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i33$i, $319, $91); + $329 = HEAP32[$117 >> 2] | 0; + HEAP32[$329 + 12 >> 2] = HEAP32[$114 >> 2]; + HEAP32[$329 >> 2] = HEAP32[$7 >> 2]; + HEAP32[$329 + 4 >> 2] = HEAP32[$115 >> 2]; + HEAP32[$329 + 8 >> 2] = HEAP32[$116 >> 2]; + HEAP32[$116 >> 2] = 0; + HEAP32[$115 >> 2] = 0; + HEAP32[$7 >> 2] = 0; + HEAP32[$117 >> 2] = $329 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($7); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name2$i12); + $t0$2$i$ph$be = $271; + } while (0); + if ((label | 0) == 93) { + label = 0; + $400 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131184, $last, $db) | 0; + if (($400 | 0) == ($t0$2$i131184 | 0) | ($400 | 0) == ($last | 0)) { + $$07$i = $$first; + break L44; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name4$i, (HEAP32[$34 >> 2] | 0) + -24 | 0); + $405 = HEAP32[$34 >> 2] | 0; + $406 = $405 + -24 | 0; + $408 = $405; + do { + $407 = $408 + -24 | 0; + HEAP32[$34 >> 2] = $407; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($407); + $408 = HEAP32[$34 >> 2] | 0; + } while (($408 | 0) != ($406 | 0)); + $410 = $405 + -48 | 0; + $411 = HEAP8[$410 >> 0] | 0; + if (!($411 & 1)) $419 = ($411 & 255) >>> 1; else $419 = HEAP32[$405 + -44 >> 2] | 0; + if (!$419) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($410, $name4$i); else { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($11, 12902, $name4$i); + $420 = HEAP8[$11 >> 0] | 0; + $422 = ($420 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($410, $422 ? $98 : HEAP32[$97 >> 2] | 0, $422 ? ($420 & 255) >>> 1 : HEAP32[$99 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11); + } + $430 = (HEAP32[$34 >> 2] | 0) + -24 | 0; + HEAP32[$13 >> 2] = HEAP32[$84 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $430, $13); + $432 = HEAP32[$86 >> 2] | 0; + $433 = HEAP32[$87 >> 2] | 0; + if ($432 >>> 0 < $433 >>> 0) { + HEAP32[$432 + 12 >> 2] = HEAP32[$93 >> 2]; + HEAP32[$432 >> 2] = HEAP32[$12 >> 2]; + HEAP32[$432 + 4 >> 2] = HEAP32[$94 >> 2]; + HEAP32[$432 + 8 >> 2] = HEAP32[$95 >> 2]; + HEAP32[$95 >> 2] = 0; + HEAP32[$94 >> 2] = 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16; + } else { + $446 = HEAP32[$85 >> 2] | 0; + $447 = $432 - $446 | 0; + $448 = $447 >> 4; + $449 = $448 + 1 | 0; + if (($447 | 0) < -16) { + label = 105; + break; + } + $452 = $433 - $446 | 0; + if ($452 >> 4 >>> 0 < 1073741823) { + $455 = $452 >> 3; + $$0$i$i$i52$i = $455 >>> 0 < $449 >>> 0 ? $449 : $455; + } else $$0$i$i$i52$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i52$i, $448, $91); + $458 = HEAP32[$96 >> 2] | 0; + HEAP32[$458 + 12 >> 2] = HEAP32[$93 >> 2]; + HEAP32[$458 >> 2] = HEAP32[$12 >> 2]; + HEAP32[$458 + 4 >> 2] = HEAP32[$94 >> 2]; + HEAP32[$458 + 8 >> 2] = HEAP32[$95 >> 2]; + HEAP32[$95 >> 2] = 0; + HEAP32[$94 >> 2] = 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$96 >> 2] = $458 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name4$i); + $t0$2$i$ph$be = $400; + } + $719 = HEAP8[$t0$2$i$ph$be >> 0] | 0; + if ($719 << 24 >> 24 == 69) { + $pop_subs$0$off0$i$ph$lcssa = 1; + $t0$2$i$lcssa = $t0$2$i$ph$be; + break L72; + } else { + $pop_subs$0$off0$i$ph136 = 1; + $t0$2$i$ph135 = $t0$2$i$ph$be; + } + } + if ((label | 0) == 37) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 56) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 75) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 86) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 105) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); + } while (0); + $469 = $t0$2$i$lcssa + 1 | 0; + HEAP32[$db + 48 >> 2] = HEAP32[$cv$i >> 2]; + if ($pop_subs$0$off0$i$ph$lcssa) { + $474 = HEAP32[$86 >> 2] | 0; + if ((HEAP32[$db + 16 >> 2] | 0) == ($474 | 0)) $$07$i = $469; else { + $476 = $474 + -16 | 0; + $478 = $474; + do { + $477 = $478 + -16 | 0; + HEAP32[$86 >> 2] = $477; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($477); + $478 = HEAP32[$86 >> 2] | 0; + } while (($478 | 0) != ($476 | 0)); + $$07$i = $469; + } + } else $$07$i = $469; + } + } else $$07$i = $$first; while (0); + $$02 = ($$07$i | 0) == ($$first | 0) ? $first : $$07$i; + break L1; + break; + } + case 90: + { + L199 : do if (($$first | 0) == ($last | 0)) $$0$i10 = $last; else if ($23 << 24 >> 24 == 90) { + $483 = $$first + 1 | 0; + $484 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($483, $last, $db) | 0; + if (($484 | 0) == ($483 | 0) | ($484 | 0) == ($last | 0)) $$0$i10 = $$first; else if ((HEAP8[$484 >> 0] | 0) == 69) { + $489 = $484 + 1 | 0; + if (($489 | 0) == ($last | 0)) $$0$i10 = $$first; else switch (HEAP8[$489 >> 0] | 0) { + case 115: + { + $494 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($484 + 2 | 0, $last) | 0; + $497 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($497 | 0)) { + $$0$i10 = $494; + break L199; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($497 + -24 | 0, 12905) | 0; + $$0$i10 = $494; + break L199; + break; + } + case 100: + { + $500 = $484 + 2 | 0; + if (($500 | 0) == ($last | 0)) { + $$0$i10 = $$first; + break L199; + } + $502 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($500, $last) | 0; + if (($502 | 0) == ($last | 0)) { + $$0$i10 = $$first; + break L199; + } + if ((HEAP8[$502 >> 0] | 0) != 95) { + $$0$i10 = $$first; + break L199; + } + $506 = $502 + 1 | 0; + $507 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($506, $last, $db) | 0; + $509 = $db + 4 | 0; + $510 = HEAP32[$509 >> 2] | 0; + if (($507 | 0) == ($506 | 0)) { + $538 = $510 + -24 | 0; + $540 = $510; + while (1) { + $539 = $540 + -24 | 0; + HEAP32[$509 >> 2] = $539; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($539); + $540 = HEAP32[$509 >> 2] | 0; + if (($540 | 0) == ($538 | 0)) { + $$0$i10 = $$first; + break L199; + } + } + } + if ((($510 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0$i10 = $$first; + break L199; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($__v$i$i51$i, $510 + -24 | 0); + $518 = HEAP32[$509 >> 2] | 0; + $519 = $518 + -24 | 0; + $521 = $518; + do { + $520 = $521 + -24 | 0; + HEAP32[$509 >> 2] = $520; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($520); + $521 = HEAP32[$509 >> 2] | 0; + } while (($521 | 0) != ($519 | 0)); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($518 + -48 | 0, 12902) | 0; + $526 = HEAP8[$__v$i$i51$i >> 0] | 0; + $528 = ($526 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$509 >> 2] | 0) + -24 | 0, $528 ? $__v$i$i51$i + 1 | 0 : HEAP32[$__v$i$i51$i + 8 >> 2] | 0, $528 ? ($526 & 255) >>> 1 : HEAP32[$__v$i$i51$i + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i51$i); + $$0$i10 = $507; + break L199; + break; + } + default: + { + $542 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($489, $last, $db) | 0; + if (($542 | 0) == ($489 | 0)) { + $574 = $db + 4 | 0; + $575 = HEAP32[$574 >> 2] | 0; + $576 = $575 + -24 | 0; + $578 = $575; + while (1) { + $577 = $578 + -24 | 0; + HEAP32[$574 >> 2] = $577; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($577); + $578 = HEAP32[$574 >> 2] | 0; + if (($578 | 0) == ($576 | 0)) { + $$0$i10 = $$first; + break L199; + } + } + } + $544 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($542, $last) | 0; + $545 = $db + 4 | 0; + $546 = HEAP32[$545 >> 2] | 0; + if ((($546 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0$i10 = $544; + break L199; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($cv$i, $546 + -24 | 0); + $554 = HEAP32[$545 >> 2] | 0; + $555 = $554 + -24 | 0; + $557 = $554; + do { + $556 = $557 + -24 | 0; + HEAP32[$545 >> 2] = $556; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($556); + $557 = HEAP32[$545 >> 2] | 0; + } while (($557 | 0) != ($555 | 0)); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($554 + -48 | 0, 12902) | 0; + $562 = HEAP8[$cv$i >> 0] | 0; + $564 = ($562 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$545 >> 2] | 0) + -24 | 0, $564 ? $cv$i + 1 | 0 : HEAP32[$cv$i + 8 >> 2] | 0, $564 ? ($562 & 255) >>> 1 : HEAP32[$cv$i + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($cv$i); + $$0$i10 = $544; + break L199; + } + } + } else $$0$i10 = $$first; + } else $$0$i10 = $$first; while (0); + STACKTOP = sp; + return (($$0$i10 | 0) == ($$first | 0) ? $first : $$0$i10) | 0; + } + default: + { + do if (($16 - $$first | 0) > 1) { + if ($23 << 24 >> 24 == 83) if ((HEAP8[$$first + 1 >> 0] | 0) == 116) { + $588 = $$first + 2 | 0; + if (($588 | 0) == ($last | 0)) { + $St$0$off0$i = 0; + $t0$0$i = $last; + } else { + $St$0$off0$i = 0; + $t0$0$i = (HEAP8[$588 >> 0] | 0) == 76 ? $$first + 3 | 0 : $588; + } + } else { + $St$0$off0$i = 1; + $t0$0$i = $$first; + } else { + $St$0$off0$i = 1; + $t0$0$i = $$first; + } + $593 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$0$i, $last, $db) | 0; + $594 = ($593 | 0) == ($t0$0$i | 0); + if ($St$0$off0$i | $594) $$0$i = $594 ? $$first : $593; else { + $597 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($597 | 0)) break; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($597 + -24 | 0, 0, 12922) | 0; + $$0$i = $593; + } + if (($$0$i | 0) != ($$first | 0)) { + if (($$0$i | 0) == ($last | 0)) { + $$02 = $last; + break L1; + } + if ((HEAP8[$$0$i >> 0] | 0) != 73) { + $$02 = $$0$i; + break L1; + } + $605 = $db + 4 | 0; + $606 = HEAP32[$605 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($606 | 0)) { + $$02 = $first; + break L1; + } + $608 = $db + 16 | 0; + HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $606 + -24 | 0, $15); + $612 = $db + 20 | 0; + $613 = HEAP32[$612 >> 2] | 0; + $615 = HEAP32[$db + 24 >> 2] | 0; + if ($613 >>> 0 < $615 >>> 0) { + HEAP32[$613 + 12 >> 2] = HEAP32[$14 + 12 >> 2]; + HEAP32[$613 >> 2] = HEAP32[$14 >> 2]; + $622 = $14 + 4 | 0; + HEAP32[$613 + 4 >> 2] = HEAP32[$622 >> 2]; + $624 = $14 + 8 | 0; + HEAP32[$613 + 8 >> 2] = HEAP32[$624 >> 2]; + HEAP32[$624 >> 2] = 0; + HEAP32[$622 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$612 >> 2] = (HEAP32[$612 >> 2] | 0) + 16; + } else { + $632 = HEAP32[$608 >> 2] | 0; + $633 = $613 - $632 | 0; + $634 = $633 >> 4; + $635 = $634 + 1 | 0; + if (($633 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($608); + $638 = $615 - $632 | 0; + if ($638 >> 4 >>> 0 < 1073741823) { + $641 = $638 >> 3; + $$0$i$i$i = $641 >>> 0 < $635 >>> 0 ? $635 : $641; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i, $634, $db + 28 | 0); + $644 = $__v$i$i51$i + 8 | 0; + $645 = HEAP32[$644 >> 2] | 0; + HEAP32[$645 + 12 >> 2] = HEAP32[$14 + 12 >> 2]; + HEAP32[$645 >> 2] = HEAP32[$14 >> 2]; + $651 = $14 + 4 | 0; + HEAP32[$645 + 4 >> 2] = HEAP32[$651 >> 2]; + $653 = $14 + 8 | 0; + HEAP32[$645 + 8 >> 2] = HEAP32[$653 >> 2]; + HEAP32[$653 >> 2] = 0; + HEAP32[$651 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$644 >> 2] = $645 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($608, $__v$i$i51$i); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14); + $657 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($$0$i, $last, $db) | 0; + if (($657 | 0) == ($$0$i | 0)) { + $$02 = $first; + break L1; + } + $659 = HEAP32[$605 >> 2] | 0; + if ((($659 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$02 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp, $659 + -24 | 0); + $667 = HEAP32[$605 >> 2] | 0; + $668 = $667 + -24 | 0; + $670 = $667; + do { + $669 = $670 + -24 | 0; + HEAP32[$605 >> 2] = $669; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($669); + $670 = HEAP32[$605 >> 2] | 0; + } while (($670 | 0) != ($668 | 0)); + $673 = HEAP8[$tmp >> 0] | 0; + $675 = ($673 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($667 + -48 | 0, $675 ? $tmp + 1 | 0 : HEAP32[$tmp + 8 >> 2] | 0, $675 ? ($673 & 255) >>> 1 : HEAP32[$tmp + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp); + $$02 = $657; + break L1; + } + } while (0); + $685 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($$first, $last, $db) | 0; + if (($685 | 0) == ($$first | 0) | ($685 | 0) == ($last | 0)) { + $$02 = $first; + break L1; + } + if ((HEAP8[$685 >> 0] | 0) != 73) { + $$02 = $first; + break L1; + } + $690 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($685, $last, $db) | 0; + if (($690 | 0) == ($685 | 0)) { + $$02 = $first; + break L1; + } + $692 = $db + 4 | 0; + $693 = HEAP32[$692 >> 2] | 0; + if ((($693 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$02 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp3, $693 + -24 | 0); + $701 = HEAP32[$692 >> 2] | 0; + $702 = $701 + -24 | 0; + $704 = $701; + do { + $703 = $704 + -24 | 0; + HEAP32[$692 >> 2] = $703; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($703); + $704 = HEAP32[$692 >> 2] | 0; + } while (($704 | 0) != ($702 | 0)); + $707 = HEAP8[$tmp3 >> 0] | 0; + $709 = ($707 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($701 + -48 | 0, $709 ? $tmp3 + 1 | 0 : HEAP32[$tmp3 + 8 >> 2] | 0, $709 ? ($707 & 255) >>> 1 : HEAP32[$tmp3 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp3); + $$02 = $690; + break L1; + } + } + } else $$02 = $first; while (0); + STACKTOP = sp; + return $$02 | 0; +} + +function _printf_core($f, $fmt, $ap, $nl_arg, $nl_type) { + $f = $f | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + $nl_arg = $nl_arg | 0; + $nl_type = $nl_type | 0; + var $$0 = 0, $$0$i = 0, $$0$lcssa$i = 0, $$012$i = 0, $$013$i = 0, $$03$i33 = 0, $$07$i = 0.0, $$1$i = 0.0, $$114$i = 0, $$2$i = 0.0, $$20$i = 0.0, $$21$i = 0, $$210$i = 0, $$23$i = 0, $$3$i = 0.0, $$31$i = 0, $$311$i = 0, $$4$i = 0.0, $$412$lcssa$i = 0, $$41276$i = 0, $$5$lcssa$i = 0, $$51 = 0, $$587$i = 0, $$a$3$i = 0, $$a$3186$i = 0, $$fl$4 = 0, $$lcssa = 0, $$lcssa159$i = 0, $$lcssa318 = 0, $$lcssa323 = 0, $$lcssa324 = 0, $$lcssa325 = 0, $$lcssa326 = 0, $$lcssa327 = 0, $$lcssa329 = 0, $$lcssa339 = 0, $$lcssa342 = 0.0, $$lcssa344 = 0, $$p$$i = 0, $$p$5 = 0, $$p$i = 0, $$pn$i = 0, $$pr$i = 0, $$pr47$i = 0, $$pre$phi184$iZ2D = 0, $$pre182$i = 0, $$z$4$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $107 = 0, $109 = 0, $11 = 0, $12 = 0, $13 = 0, $133 = 0, $134 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $144 = 0, $146 = 0, $148 = 0, $149 = 0, $15 = 0, $154 = 0, $157 = 0, $162 = 0, $163 = 0, $168 = 0, $175 = 0, $176 = 0, $187 = 0, $19 = 0, $199 = 0, $2 = 0, $206 = 0, $208 = 0, $21 = 0, $211 = 0, $212 = 0, $217 = 0, $223 = 0, $224 = 0, $23 = 0, $230 = 0, $24 = 0, $243 = 0, $245 = 0, $248 = 0, $253 = 0, $256 = 0, $257 = 0, $267 = 0, $269 = 0, $271 = 0, $274 = 0, $276 = 0, $277 = 0, $278 = 0, $28 = 0, $284 = 0, $286 = 0, $287 = 0, $29 = 0, $291 = 0, $299 = 0, $3 = 0, $305 = 0, $314 = 0, $317 = 0, $320 = 0, $321 = 0, $334 = 0, $336 = 0, $34 = 0, $341 = 0, $346 = 0, $349 = 0, $359 = 0.0, $366 = 0, $370 = 0, $377 = 0, $379 = 0, $381 = 0, $382 = 0, $386 = 0, $39 = 0, $392 = 0.0, $393 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $401 = 0, $403 = 0, $407 = 0.0, $417 = 0, $420 = 0, $423 = 0, $432 = 0, $434 = 0, $435 = 0, $44 = 0, $441 = 0, $459 = 0, $46 = 0, $464 = 0, $469 = 0, $47 = 0, $479 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $491 = 0, $492 = 0, $495 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $501 = 0, $505 = 0, $507 = 0, $51 = 0, $511 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $521 = 0, $527 = 0, $528 = 0, $529 = 0, $533 = 0, $541 = 0, $555 = 0, $556 = 0, $559 = 0, $56 = 0, $564 = 0, $565 = 0, $567 = 0, $574 = 0, $575 = 0, $576 = 0, $579 = 0, $580 = 0, $581 = 0, $588 = 0, $59 = 0, $598 = 0, $6 = 0, $60 = 0, $601 = 0, $603 = 0, $605 = 0, $607 = 0, $61 = 0, $612 = 0, $613 = 0, $616 = 0, $618 = 0, $620 = 0, $622 = 0, $633 = 0, $636 = 0, $641 = 0, $650 = 0, $651 = 0, $655 = 0, $658 = 0, $66 = 0, $660 = 0, $662 = 0, $666 = 0, $669 = 0, $67 = 0, $673 = 0, $683 = 0, $688 = 0, $695 = 0, $698 = 0, $7 = 0, $706 = 0, $716 = 0, $718 = 0, $726 = 0, $733 = 0, $735 = 0, $739 = 0, $741 = 0, $750 = 0, $756 = 0, $771 = 0, $773 = 0, $786 = 0, $8 = 0, $9 = 0, $91 = 0, $92 = 0, $98 = 0, $99 = 0, $a$0 = 0, $a$1 = 0, $a$1$lcssa$i = 0, $a$1147$i = 0, $a$2 = 0, $a$2$ph$i = 0, $a$3$lcssa$i = 0, $a$3134$i = 0, $a$5$lcssa$i = 0, $a$5109$i = 0, $a$6$i = 0, $a$7$i = 0, $a$8$ph$i = 0, $arg = 0, $argpos$0 = 0, $big$i = 0, $buf = 0, $buf$i = 0, $carry$0140$i = 0, $carry3$0128$i = 0, $cnt$0 = 0, $cnt$1 = 0, $cnt$1$lcssa = 0, $d$0139$i = 0, $d$0141$i = 0, $d$1127$i = 0, $d$2$lcssa$i = 0, $d$2108$i = 0, $d$3$i = 0, $d$482$i = 0, $d$575$i = 0, $d$686$i = 0, $e$0123$i = 0, $e$1$i = 0, $e$2104$i = 0, $e$3$i = 0, $e$4$ph$i = 0, $e2$i = 0, $ebuf0$i = 0, $estr$0$i = 0, $estr$1$lcssa$i = 0, $estr$193$i = 0, $estr$2$i = 0, $fl$0109 = 0, $fl$062 = 0, $fl$1 = 0, $fl$1$ = 0, $fl$3 = 0, $fl$4 = 0, $fl$6 = 0, $fmt39$lcssa = 0, $fmt39101 = 0, $fmt40 = 0, $fmt41 = 0, $fmt42 = 0, $fmt44 = 0, $fmt44$lcssa321 = 0, $fmt45 = 0, $i$0$lcssa = 0, $i$0$lcssa200 = 0, $i$0114 = 0, $i$0122$i = 0, $i$03$i = 0, $i$03$i25 = 0, $i$1$lcssa$i = 0, $i$1116$i = 0, $i$1125 = 0, $i$2100 = 0, $i$2100$lcssa = 0, $i$2103$i = 0, $i$398 = 0, $i$399$i = 0, $isdigittmp = 0, $isdigittmp1$i = 0, $isdigittmp1$i22 = 0, $isdigittmp11 = 0, $isdigittmp4$i = 0, $isdigittmp4$i24 = 0, $isdigittmp9 = 0, $j$0115$i = 0, $j$0117$i = 0, $j$1100$i = 0, $j$2$i = 0, $l$0 = 0, $l$0$i = 0, $l$1113 = 0, $l$2 = 0, $l10n$0 = 0, $l10n$0$lcssa = 0, $l10n$1 = 0, $l10n$2 = 0, $l10n$3 = 0, $mb = 0, $notrhs$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $p$4198 = 0, $p$5 = 0, $pl$0 = 0, $pl$0$i = 0, $pl$1 = 0, $pl$1$i = 0, $pl$2 = 0, $prefix$0 = 0, $prefix$0$$i = 0, $prefix$0$i = 0, $prefix$1 = 0, $prefix$2 = 0, $r$0$a$8$i = 0, $re$169$i = 0, $round$068$i = 0.0, $round6$1$i = 0.0, $s$0$i = 0, $s$1$i = 0, $s$1$i$lcssa = 0, $s7$079$i = 0, $s7$1$i = 0, $s8$0$lcssa$i = 0, $s8$070$i = 0, $s9$0$i = 0, $s9$183$i = 0, $s9$2$i = 0, $small$0$i = 0.0, $small$1$i = 0.0, $st$0 = 0, $st$0$lcssa322 = 0, $storemerge = 0, $storemerge13 = 0, $storemerge8108 = 0, $storemerge860 = 0, $t$0 = 0, $t$1 = 0, $w$0 = 0, $w$1 = 0, $w$2 = 0, $wc = 0, $ws$0115 = 0, $ws$1126 = 0, $z$0$i = 0, $z$0$lcssa = 0, $z$0102 = 0, $z$1$lcssa$i = 0, $z$1146$i = 0, $z$2 = 0, $z$2$i = 0, $z$2$i$lcssa = 0, $z$3$lcssa$i = 0, $z$3133$i = 0, $z$4$i = 0, $z$6$$i = 0, $z$6$i = 0, $z$6$i$lcssa = 0, $z$6$ph$i = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 624 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $big$i = sp + 24 | 0; + $e2$i = sp + 16 | 0; + $buf$i = sp + 588 | 0; + $ebuf0$i = sp + 576 | 0; + $arg = sp; + $buf = sp + 536 | 0; + $wc = sp + 8 | 0; + $mb = sp + 528 | 0; + $0 = ($f | 0) != 0; + $1 = $buf + 40 | 0; + $2 = $1; + $3 = $buf + 39 | 0; + $4 = $wc + 4 | 0; + $5 = $ebuf0$i + 12 | 0; + $6 = $ebuf0$i + 11 | 0; + $7 = $buf$i; + $8 = $5; + $9 = $8 - $7 | 0; + $10 = -2 - $7 | 0; + $11 = $8 + 2 | 0; + $12 = $big$i + 288 | 0; + $13 = $buf$i + 9 | 0; + $14 = $13; + $15 = $buf$i + 8 | 0; + $cnt$0 = 0; + $fmt41 = $fmt; + $l$0 = 0; + $l10n$0 = 0; + L1 : while (1) { + do if (($cnt$0 | 0) > -1) if (($l$0 | 0) > (2147483647 - $cnt$0 | 0)) { + $19 = ___errno_location() | 0; + HEAP32[$19 >> 2] = 75; + $cnt$1 = -1; + break; + } else { + $cnt$1 = $l$0 + $cnt$0 | 0; + break; + } else $cnt$1 = $cnt$0; while (0); + $21 = HEAP8[$fmt41 >> 0] | 0; + if (!($21 << 24 >> 24)) { + $cnt$1$lcssa = $cnt$1; + $l10n$0$lcssa = $l10n$0; + label = 245; + break; + } else { + $23 = $21; + $fmt40 = $fmt41; + } + L9 : while (1) { + switch ($23 << 24 >> 24) { + case 37: + { + $fmt39101 = $fmt40; + $z$0102 = $fmt40; + label = 9; + break L9; + break; + } + case 0: + { + $fmt39$lcssa = $fmt40; + $z$0$lcssa = $fmt40; + break L9; + break; + } + default: + {} + } + $24 = $fmt40 + 1 | 0; + $23 = HEAP8[$24 >> 0] | 0; + $fmt40 = $24; + } + L12 : do if ((label | 0) == 9) while (1) { + label = 0; + if ((HEAP8[$fmt39101 + 1 >> 0] | 0) != 37) { + $fmt39$lcssa = $fmt39101; + $z$0$lcssa = $z$0102; + break L12; + } + $28 = $z$0102 + 1 | 0; + $29 = $fmt39101 + 2 | 0; + if ((HEAP8[$29 >> 0] | 0) == 37) { + $fmt39101 = $29; + $z$0102 = $28; + label = 9; + } else { + $fmt39$lcssa = $29; + $z$0$lcssa = $28; + break; + } + } while (0); + $34 = $z$0$lcssa - $fmt41 | 0; + if ($0) if (!(HEAP32[$f >> 2] & 32)) ___fwritex($fmt41, $34, $f) | 0; + if (($z$0$lcssa | 0) != ($fmt41 | 0)) { + $cnt$0 = $cnt$1; + $fmt41 = $fmt39$lcssa; + $l$0 = $34; + continue; + } + $39 = $fmt39$lcssa + 1 | 0; + $40 = HEAP8[$39 >> 0] | 0; + $isdigittmp = ($40 << 24 >> 24) + -48 | 0; + if ($isdigittmp >>> 0 < 10) { + $44 = (HEAP8[$fmt39$lcssa + 2 >> 0] | 0) == 36; + $$51 = $44 ? $fmt39$lcssa + 3 | 0 : $39; + $47 = HEAP8[$$51 >> 0] | 0; + $argpos$0 = $44 ? $isdigittmp : -1; + $l10n$1 = $44 ? 1 : $l10n$0; + $storemerge = $$51; + } else { + $47 = $40; + $argpos$0 = -1; + $l10n$1 = $l10n$0; + $storemerge = $39; + } + $46 = $47 << 24 >> 24; + L25 : do if (($46 & -32 | 0) == 32) { + $51 = $46; + $56 = $47; + $fl$0109 = 0; + $storemerge8108 = $storemerge; + while (1) { + if (!(1 << $51 + -32 & 75913)) { + $66 = $56; + $fl$062 = $fl$0109; + $storemerge860 = $storemerge8108; + break L25; + } + $59 = 1 << ($56 << 24 >> 24) + -32 | $fl$0109; + $60 = $storemerge8108 + 1 | 0; + $61 = HEAP8[$60 >> 0] | 0; + $51 = $61 << 24 >> 24; + if (($51 & -32 | 0) != 32) { + $66 = $61; + $fl$062 = $59; + $storemerge860 = $60; + break; + } else { + $56 = $61; + $fl$0109 = $59; + $storemerge8108 = $60; + } + } + } else { + $66 = $47; + $fl$062 = 0; + $storemerge860 = $storemerge; + } while (0); + do if ($66 << 24 >> 24 == 42) { + $67 = $storemerge860 + 1 | 0; + $isdigittmp11 = (HEAP8[$67 >> 0] | 0) + -48 | 0; + if ($isdigittmp11 >>> 0 < 10) if ((HEAP8[$storemerge860 + 2 >> 0] | 0) == 36) { + HEAP32[$nl_type + ($isdigittmp11 << 2) >> 2] = 10; + $l10n$2 = 1; + $storemerge13 = $storemerge860 + 3 | 0; + $w$0 = HEAP32[$nl_arg + ((HEAP8[$67 >> 0] | 0) + -48 << 3) >> 2] | 0; + } else label = 24; else label = 24; + if ((label | 0) == 24) { + label = 0; + if ($l10n$1) { + $$0 = -1; + break L1; + } + if (!$0) { + $fl$1 = $fl$062; + $fmt42 = $67; + $l10n$3 = 0; + $w$1 = 0; + break; + } + $91 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $92 = HEAP32[$91 >> 2] | 0; + HEAP32[$ap >> 2] = $91 + 4; + $l10n$2 = 0; + $storemerge13 = $67; + $w$0 = $92; + } + if (($w$0 | 0) < 0) { + $fl$1 = $fl$062 | 8192; + $fmt42 = $storemerge13; + $l10n$3 = $l10n$2; + $w$1 = 0 - $w$0 | 0; + } else { + $fl$1 = $fl$062; + $fmt42 = $storemerge13; + $l10n$3 = $l10n$2; + $w$1 = $w$0; + } + } else { + $isdigittmp1$i = ($66 << 24 >> 24) + -48 | 0; + if ($isdigittmp1$i >>> 0 < 10) { + $100 = $storemerge860; + $i$03$i = 0; + $isdigittmp4$i = $isdigittmp1$i; + while (1) { + $98 = ($i$03$i * 10 | 0) + $isdigittmp4$i | 0; + $99 = $100 + 1 | 0; + $isdigittmp4$i = (HEAP8[$99 >> 0] | 0) + -48 | 0; + if ($isdigittmp4$i >>> 0 >= 10) { + $$lcssa = $98; + $$lcssa318 = $99; + break; + } else { + $100 = $99; + $i$03$i = $98; + } + } + if (($$lcssa | 0) < 0) { + $$0 = -1; + break L1; + } else { + $fl$1 = $fl$062; + $fmt42 = $$lcssa318; + $l10n$3 = $l10n$1; + $w$1 = $$lcssa; + } + } else { + $fl$1 = $fl$062; + $fmt42 = $storemerge860; + $l10n$3 = $l10n$1; + $w$1 = 0; + } + } while (0); + L46 : do if ((HEAP8[$fmt42 >> 0] | 0) == 46) { + $106 = $fmt42 + 1 | 0; + $107 = HEAP8[$106 >> 0] | 0; + if ($107 << 24 >> 24 != 42) { + $isdigittmp1$i22 = ($107 << 24 >> 24) + -48 | 0; + if ($isdigittmp1$i22 >>> 0 < 10) { + $139 = $106; + $i$03$i25 = 0; + $isdigittmp4$i24 = $isdigittmp1$i22; + } else { + $fmt45 = $106; + $p$0 = 0; + break; + } + while (1) { + $137 = ($i$03$i25 * 10 | 0) + $isdigittmp4$i24 | 0; + $138 = $139 + 1 | 0; + $isdigittmp4$i24 = (HEAP8[$138 >> 0] | 0) + -48 | 0; + if ($isdigittmp4$i24 >>> 0 >= 10) { + $fmt45 = $138; + $p$0 = $137; + break L46; + } else { + $139 = $138; + $i$03$i25 = $137; + } + } + } + $109 = $fmt42 + 2 | 0; + $isdigittmp9 = (HEAP8[$109 >> 0] | 0) + -48 | 0; + if ($isdigittmp9 >>> 0 < 10) if ((HEAP8[$fmt42 + 3 >> 0] | 0) == 36) { + HEAP32[$nl_type + ($isdigittmp9 << 2) >> 2] = 10; + $fmt45 = $fmt42 + 4 | 0; + $p$0 = HEAP32[$nl_arg + ((HEAP8[$109 >> 0] | 0) + -48 << 3) >> 2] | 0; + break; + } + if ($l10n$3) { + $$0 = -1; + break L1; + } + if ($0) { + $133 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $134 = HEAP32[$133 >> 2] | 0; + HEAP32[$ap >> 2] = $133 + 4; + $fmt45 = $109; + $p$0 = $134; + } else { + $fmt45 = $109; + $p$0 = 0; + } + } else { + $fmt45 = $fmt42; + $p$0 = -1; + } while (0); + $fmt44 = $fmt45; + $st$0 = 0; + while (1) { + $144 = (HEAP8[$fmt44 >> 0] | 0) + -65 | 0; + if ($144 >>> 0 > 57) { + $$0 = -1; + break L1; + } + $146 = $fmt44 + 1 | 0; + $148 = HEAP8[17803 + ($st$0 * 58 | 0) + $144 >> 0] | 0; + $149 = $148 & 255; + if (($149 + -1 | 0) >>> 0 < 8) { + $fmt44 = $146; + $st$0 = $149; + } else { + $$lcssa323 = $146; + $$lcssa324 = $148; + $$lcssa325 = $149; + $fmt44$lcssa321 = $fmt44; + $st$0$lcssa322 = $st$0; + break; + } + } + if (!($$lcssa324 << 24 >> 24)) { + $$0 = -1; + break; + } + $154 = ($argpos$0 | 0) > -1; + do if ($$lcssa324 << 24 >> 24 == 19) if ($154) { + $$0 = -1; + break L1; + } else label = 52; else { + if ($154) { + HEAP32[$nl_type + ($argpos$0 << 2) >> 2] = $$lcssa325; + $157 = $nl_arg + ($argpos$0 << 3) | 0; + $162 = HEAP32[$157 + 4 >> 2] | 0; + $163 = $arg; + HEAP32[$163 >> 2] = HEAP32[$157 >> 2]; + HEAP32[$163 + 4 >> 2] = $162; + label = 52; + break; + } + if (!$0) { + $$0 = 0; + break L1; + } + _pop_arg($arg, $$lcssa325, $ap); + } while (0); + if ((label | 0) == 52) { + label = 0; + if (!$0) { + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue; + } + } + $168 = HEAP8[$fmt44$lcssa321 >> 0] | 0; + $t$0 = ($st$0$lcssa322 | 0) != 0 & ($168 & 15 | 0) == 3 ? $168 & -33 : $168; + $175 = $fl$1 & -65537; + $fl$1$ = ($fl$1 & 8192 | 0) == 0 ? $fl$1 : $175; + L75 : do switch ($t$0 | 0) { + case 110: + { + switch ($st$0$lcssa322 | 0) { + case 0: + { + HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 1: + { + HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 2: + { + $187 = HEAP32[$arg >> 2] | 0; + HEAP32[$187 >> 2] = $cnt$1; + HEAP32[$187 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 3: + { + HEAP16[HEAP32[$arg >> 2] >> 1] = $cnt$1; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 4: + { + HEAP8[HEAP32[$arg >> 2] >> 0] = $cnt$1; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 6: + { + HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + case 7: + { + $199 = HEAP32[$arg >> 2] | 0; + HEAP32[$199 >> 2] = $cnt$1; + HEAP32[$199 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31; + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + break; + } + default: + { + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $34; + $l10n$0 = $l10n$3; + continue L1; + } + } + break; + } + case 112: + { + $fl$3 = $fl$1$ | 8; + $p$1 = $p$0 >>> 0 > 8 ? $p$0 : 8; + $t$1 = 120; + label = 64; + break; + } + case 88: + case 120: + { + $fl$3 = $fl$1$; + $p$1 = $p$0; + $t$1 = $t$0; + label = 64; + break; + } + case 111: + { + $243 = $arg; + $245 = HEAP32[$243 >> 2] | 0; + $248 = HEAP32[$243 + 4 >> 2] | 0; + if (($245 | 0) == 0 & ($248 | 0) == 0) $$0$lcssa$i = $1; else { + $$03$i33 = $1; + $253 = $245; + $257 = $248; + while (1) { + $256 = $$03$i33 + -1 | 0; + HEAP8[$256 >> 0] = $253 & 7 | 48; + $253 = _bitshift64Lshr($253 | 0, $257 | 0, 3) | 0; + $257 = tempRet0; + if (($253 | 0) == 0 & ($257 | 0) == 0) { + $$0$lcssa$i = $256; + break; + } else $$03$i33 = $256; + } + } + if (!($fl$1$ & 8)) { + $a$0 = $$0$lcssa$i; + $fl$4 = $fl$1$; + $p$2 = $p$0; + $pl$1 = 0; + $prefix$1 = 18283; + label = 77; + } else { + $267 = $2 - $$0$lcssa$i + 1 | 0; + $a$0 = $$0$lcssa$i; + $fl$4 = $fl$1$; + $p$2 = ($p$0 | 0) < ($267 | 0) ? $267 : $p$0; + $pl$1 = 0; + $prefix$1 = 18283; + label = 77; + } + break; + } + case 105: + case 100: + { + $269 = $arg; + $271 = HEAP32[$269 >> 2] | 0; + $274 = HEAP32[$269 + 4 >> 2] | 0; + if (($274 | 0) < 0) { + $276 = _i64Subtract(0, 0, $271 | 0, $274 | 0) | 0; + $277 = tempRet0; + $278 = $arg; + HEAP32[$278 >> 2] = $276; + HEAP32[$278 + 4 >> 2] = $277; + $286 = $276; + $287 = $277; + $pl$0 = 1; + $prefix$0 = 18283; + label = 76; + break L75; + } + if (!($fl$1$ & 2048)) { + $284 = $fl$1$ & 1; + $286 = $271; + $287 = $274; + $pl$0 = $284; + $prefix$0 = ($284 | 0) == 0 ? 18283 : 18285; + label = 76; + } else { + $286 = $271; + $287 = $274; + $pl$0 = 1; + $prefix$0 = 18284; + label = 76; + } + break; + } + case 117: + { + $176 = $arg; + $286 = HEAP32[$176 >> 2] | 0; + $287 = HEAP32[$176 + 4 >> 2] | 0; + $pl$0 = 0; + $prefix$0 = 18283; + label = 76; + break; + } + case 99: + { + HEAP8[$3 >> 0] = HEAP32[$arg >> 2]; + $a$2 = $3; + $fl$6 = $175; + $p$5 = 1; + $pl$2 = 0; + $prefix$2 = 18283; + $z$2 = $1; + break; + } + case 109: + { + $314 = ___errno_location() | 0; + $a$1 = _strerror(HEAP32[$314 >> 2] | 0) | 0; + label = 82; + break; + } + case 115: + { + $317 = HEAP32[$arg >> 2] | 0; + $a$1 = ($317 | 0) != 0 ? $317 : 18293; + label = 82; + break; + } + case 67: + { + HEAP32[$wc >> 2] = HEAP32[$arg >> 2]; + HEAP32[$4 >> 2] = 0; + HEAP32[$arg >> 2] = $wc; + $p$4198 = -1; + label = 86; + break; + } + case 83: + { + if (!$p$0) { + _pad($f, 32, $w$1, 0, $fl$1$); + $i$0$lcssa200 = 0; + label = 98; + } else { + $p$4198 = $p$0; + label = 86; + } + break; + } + case 65: + case 71: + case 70: + case 69: + case 97: + case 103: + case 102: + case 101: + { + $359 = +HEAPF64[$arg >> 3]; + HEAP32[$e2$i >> 2] = 0; + HEAPF64[tempDoublePtr >> 3] = $359; + if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0) { + $$07$i = -$359; + $pl$0$i = 1; + $prefix$0$i = 18300; + } else if (!($fl$1$ & 2048)) { + $366 = $fl$1$ & 1; + $$07$i = $359; + $pl$0$i = $366; + $prefix$0$i = ($366 | 0) == 0 ? 18301 : 18306; + } else { + $$07$i = $359; + $pl$0$i = 1; + $prefix$0$i = 18303; + } + HEAPF64[tempDoublePtr >> 3] = $$07$i; + $370 = HEAP32[tempDoublePtr + 4 >> 2] & 2146435072; + do if ($370 >>> 0 < 2146435072 | ($370 | 0) == 2146435072 & 0 < 0) { + $392 = +_frexpl($$07$i, $e2$i) * 2.0; + $393 = $392 != 0.0; + if ($393) HEAP32[$e2$i >> 2] = (HEAP32[$e2$i >> 2] | 0) + -1; + $396 = $t$0 | 32; + if (($396 | 0) == 97) { + $398 = $t$0 & 32; + $prefix$0$$i = ($398 | 0) == 0 ? $prefix$0$i : $prefix$0$i + 9 | 0; + $401 = $pl$0$i | 2; + $403 = 12 - $p$0 | 0; + do if ($p$0 >>> 0 > 11 | ($403 | 0) == 0) $$1$i = $392; else { + $re$169$i = $403; + $round$068$i = 8.0; + while (1) { + $re$169$i = $re$169$i + -1 | 0; + $407 = $round$068$i * 16.0; + if (!$re$169$i) { + $$lcssa342 = $407; + break; + } else $round$068$i = $407; + } + if ((HEAP8[$prefix$0$$i >> 0] | 0) == 45) { + $$1$i = -($$lcssa342 + (-$392 - $$lcssa342)); + break; + } else { + $$1$i = $392 + $$lcssa342 - $$lcssa342; + break; + } + } while (0); + $417 = HEAP32[$e2$i >> 2] | 0; + $420 = ($417 | 0) < 0 ? 0 - $417 | 0 : $417; + $423 = _fmt_u($420, (($420 | 0) < 0) << 31 >> 31, $5) | 0; + if (($423 | 0) == ($5 | 0)) { + HEAP8[$6 >> 0] = 48; + $estr$0$i = $6; + } else $estr$0$i = $423; + HEAP8[$estr$0$i + -1 >> 0] = ($417 >> 31 & 2) + 43; + $432 = $estr$0$i + -2 | 0; + HEAP8[$432 >> 0] = $t$0 + 15; + $notrhs$i = ($p$0 | 0) < 1; + $434 = ($fl$1$ & 8 | 0) == 0; + $$2$i = $$1$i; + $s$0$i = $buf$i; + while (1) { + $435 = ~~$$2$i; + $441 = $s$0$i + 1 | 0; + HEAP8[$s$0$i >> 0] = HEAPU8[18267 + $435 >> 0] | $398; + $$2$i = ($$2$i - +($435 | 0)) * 16.0; + do if (($441 - $7 | 0) == 1) { + if ($434 & ($notrhs$i & $$2$i == 0.0)) { + $s$1$i = $441; + break; + } + HEAP8[$441 >> 0] = 46; + $s$1$i = $s$0$i + 2 | 0; + } else $s$1$i = $441; while (0); + if (!($$2$i != 0.0)) { + $s$1$i$lcssa = $s$1$i; + break; + } else $s$0$i = $s$1$i; + } + $$pre182$i = $s$1$i$lcssa; + $l$0$i = ($p$0 | 0) != 0 & ($10 + $$pre182$i | 0) < ($p$0 | 0) ? $11 + $p$0 - $432 | 0 : $9 - $432 + $$pre182$i | 0; + $459 = $l$0$i + $401 | 0; + _pad($f, 32, $w$1, $459, $fl$1$); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$$i, $401, $f) | 0; + _pad($f, 48, $w$1, $459, $fl$1$ ^ 65536); + $464 = $$pre182$i - $7 | 0; + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($buf$i, $464, $f) | 0; + $469 = $8 - $432 | 0; + _pad($f, 48, $l$0$i - ($464 + $469) | 0, 0, 0); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($432, $469, $f) | 0; + _pad($f, 32, $w$1, $459, $fl$1$ ^ 8192); + $$0$i = ($459 | 0) < ($w$1 | 0) ? $w$1 : $459; + break; + } + $$p$i = ($p$0 | 0) < 0 ? 6 : $p$0; + if ($393) { + $479 = (HEAP32[$e2$i >> 2] | 0) + -28 | 0; + HEAP32[$e2$i >> 2] = $479; + $$3$i = $392 * 268435456.0; + $481 = $479; + } else { + $$3$i = $392; + $481 = HEAP32[$e2$i >> 2] | 0; + } + $$31$i = ($481 | 0) < 0 ? $big$i : $12; + $482 = $$31$i; + $$4$i = $$3$i; + $z$0$i = $$31$i; + while (1) { + $483 = ~~$$4$i >>> 0; + HEAP32[$z$0$i >> 2] = $483; + $484 = $z$0$i + 4 | 0; + $$4$i = ($$4$i - +($483 >>> 0)) * 1.0e9; + if (!($$4$i != 0.0)) { + $$lcssa326 = $484; + break; + } else $z$0$i = $484; + } + $$pr$i = HEAP32[$e2$i >> 2] | 0; + if (($$pr$i | 0) > 0) { + $491 = $$pr$i; + $a$1147$i = $$31$i; + $z$1146$i = $$lcssa326; + while (1) { + $492 = ($491 | 0) > 29 ? 29 : $491; + $d$0139$i = $z$1146$i + -4 | 0; + do if ($d$0139$i >>> 0 < $a$1147$i >>> 0) $a$2$ph$i = $a$1147$i; else { + $carry$0140$i = 0; + $d$0141$i = $d$0139$i; + while (1) { + $495 = _bitshift64Shl(HEAP32[$d$0141$i >> 2] | 0, 0, $492 | 0) | 0; + $497 = _i64Add($495 | 0, tempRet0 | 0, $carry$0140$i | 0, 0) | 0; + $498 = tempRet0; + $499 = ___uremdi3($497 | 0, $498 | 0, 1e9, 0) | 0; + HEAP32[$d$0141$i >> 2] = $499; + $501 = ___udivdi3($497 | 0, $498 | 0, 1e9, 0) | 0; + $d$0141$i = $d$0141$i + -4 | 0; + if ($d$0141$i >>> 0 < $a$1147$i >>> 0) { + $$lcssa327 = $501; + break; + } else $carry$0140$i = $501; + } + if (!$$lcssa327) { + $a$2$ph$i = $a$1147$i; + break; + } + $505 = $a$1147$i + -4 | 0; + HEAP32[$505 >> 2] = $$lcssa327; + $a$2$ph$i = $505; + } while (0); + $z$2$i = $z$1146$i; + while (1) { + if ($z$2$i >>> 0 <= $a$2$ph$i >>> 0) { + $z$2$i$lcssa = $z$2$i; + break; + } + $507 = $z$2$i + -4 | 0; + if (!(HEAP32[$507 >> 2] | 0)) $z$2$i = $507; else { + $z$2$i$lcssa = $z$2$i; + break; + } + } + $511 = (HEAP32[$e2$i >> 2] | 0) - $492 | 0; + HEAP32[$e2$i >> 2] = $511; + if (($511 | 0) > 0) { + $491 = $511; + $a$1147$i = $a$2$ph$i; + $z$1146$i = $z$2$i$lcssa; + } else { + $$pr47$i = $511; + $a$1$lcssa$i = $a$2$ph$i; + $z$1$lcssa$i = $z$2$i$lcssa; + break; + } + } + } else { + $$pr47$i = $$pr$i; + $a$1$lcssa$i = $$31$i; + $z$1$lcssa$i = $$lcssa326; + } + if (($$pr47$i | 0) < 0) { + $516 = (($$p$i + 25 | 0) / 9 | 0) + 1 | 0; + $517 = ($396 | 0) == 102; + $519 = $$pr47$i; + $a$3134$i = $a$1$lcssa$i; + $z$3133$i = $z$1$lcssa$i; + while (1) { + $518 = 0 - $519 | 0; + $521 = ($518 | 0) > 9 ? 9 : $518; + do if ($a$3134$i >>> 0 < $z$3133$i >>> 0) { + $527 = (1 << $521) + -1 | 0; + $528 = 1e9 >>> $521; + $carry3$0128$i = 0; + $d$1127$i = $a$3134$i; + while (1) { + $529 = HEAP32[$d$1127$i >> 2] | 0; + HEAP32[$d$1127$i >> 2] = ($529 >>> $521) + $carry3$0128$i; + $533 = Math_imul($529 & $527, $528) | 0; + $d$1127$i = $d$1127$i + 4 | 0; + if ($d$1127$i >>> 0 >= $z$3133$i >>> 0) { + $$lcssa329 = $533; + break; + } else $carry3$0128$i = $533; + } + $$a$3$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i; + if (!$$lcssa329) { + $$a$3186$i = $$a$3$i; + $z$4$i = $z$3133$i; + break; + } + HEAP32[$z$3133$i >> 2] = $$lcssa329; + $$a$3186$i = $$a$3$i; + $z$4$i = $z$3133$i + 4 | 0; + } else { + $$a$3186$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i; + $z$4$i = $z$3133$i; + } while (0); + $541 = $517 ? $$31$i : $$a$3186$i; + $$z$4$i = ($z$4$i - $541 >> 2 | 0) > ($516 | 0) ? $541 + ($516 << 2) | 0 : $z$4$i; + $519 = (HEAP32[$e2$i >> 2] | 0) + $521 | 0; + HEAP32[$e2$i >> 2] = $519; + if (($519 | 0) >= 0) { + $a$3$lcssa$i = $$a$3186$i; + $z$3$lcssa$i = $$z$4$i; + break; + } else { + $a$3134$i = $$a$3186$i; + $z$3133$i = $$z$4$i; + } + } + } else { + $a$3$lcssa$i = $a$1$lcssa$i; + $z$3$lcssa$i = $z$1$lcssa$i; + } + do if ($a$3$lcssa$i >>> 0 < $z$3$lcssa$i >>> 0) { + $555 = ($482 - $a$3$lcssa$i >> 2) * 9 | 0; + $556 = HEAP32[$a$3$lcssa$i >> 2] | 0; + if ($556 >>> 0 < 10) { + $e$1$i = $555; + break; + } else { + $e$0123$i = $555; + $i$0122$i = 10; + } + while (1) { + $i$0122$i = $i$0122$i * 10 | 0; + $559 = $e$0123$i + 1 | 0; + if ($556 >>> 0 < $i$0122$i >>> 0) { + $e$1$i = $559; + break; + } else $e$0123$i = $559; + } + } else $e$1$i = 0; while (0); + $564 = ($396 | 0) == 103; + $565 = ($$p$i | 0) != 0; + $567 = $$p$i - (($396 | 0) != 102 ? $e$1$i : 0) + (($565 & $564) << 31 >> 31) | 0; + if (($567 | 0) < ((($z$3$lcssa$i - $482 >> 2) * 9 | 0) + -9 | 0)) { + $574 = $567 + 9216 | 0; + $575 = ($574 | 0) / 9 | 0; + $576 = $$31$i + ($575 + -1023 << 2) | 0; + $j$0115$i = (($574 | 0) % 9 | 0) + 1 | 0; + if (($j$0115$i | 0) < 9) { + $i$1116$i = 10; + $j$0117$i = $j$0115$i; + while (1) { + $579 = $i$1116$i * 10 | 0; + $j$0117$i = $j$0117$i + 1 | 0; + if (($j$0117$i | 0) == 9) { + $i$1$lcssa$i = $579; + break; + } else $i$1116$i = $579; + } + } else $i$1$lcssa$i = 10; + $580 = HEAP32[$576 >> 2] | 0; + $581 = ($580 >>> 0) % ($i$1$lcssa$i >>> 0) | 0; + if (!$581) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) { + $a$7$i = $a$3$lcssa$i; + $d$3$i = $576; + $e$3$i = $e$1$i; + } else label = 163; else label = 163; + do if ((label | 0) == 163) { + label = 0; + $$20$i = ((($580 >>> 0) / ($i$1$lcssa$i >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0; + $588 = ($i$1$lcssa$i | 0) / 2 | 0; + do if ($581 >>> 0 < $588 >>> 0) $small$0$i = .5; else { + if (($581 | 0) == ($588 | 0)) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) { + $small$0$i = 1.0; + break; + } + $small$0$i = 1.5; + } while (0); + do if (!$pl$0$i) { + $round6$1$i = $$20$i; + $small$1$i = $small$0$i; + } else { + if ((HEAP8[$prefix$0$i >> 0] | 0) != 45) { + $round6$1$i = $$20$i; + $small$1$i = $small$0$i; + break; + } + $round6$1$i = -$$20$i; + $small$1$i = -$small$0$i; + } while (0); + $598 = $580 - $581 | 0; + HEAP32[$576 >> 2] = $598; + if (!($round6$1$i + $small$1$i != $round6$1$i)) { + $a$7$i = $a$3$lcssa$i; + $d$3$i = $576; + $e$3$i = $e$1$i; + break; + } + $601 = $598 + $i$1$lcssa$i | 0; + HEAP32[$576 >> 2] = $601; + if ($601 >>> 0 > 999999999) { + $a$5109$i = $a$3$lcssa$i; + $d$2108$i = $576; + while (1) { + $603 = $d$2108$i + -4 | 0; + HEAP32[$d$2108$i >> 2] = 0; + if ($603 >>> 0 < $a$5109$i >>> 0) { + $605 = $a$5109$i + -4 | 0; + HEAP32[$605 >> 2] = 0; + $a$6$i = $605; + } else $a$6$i = $a$5109$i; + $607 = (HEAP32[$603 >> 2] | 0) + 1 | 0; + HEAP32[$603 >> 2] = $607; + if ($607 >>> 0 > 999999999) { + $a$5109$i = $a$6$i; + $d$2108$i = $603; + } else { + $a$5$lcssa$i = $a$6$i; + $d$2$lcssa$i = $603; + break; + } + } + } else { + $a$5$lcssa$i = $a$3$lcssa$i; + $d$2$lcssa$i = $576; + } + $612 = ($482 - $a$5$lcssa$i >> 2) * 9 | 0; + $613 = HEAP32[$a$5$lcssa$i >> 2] | 0; + if ($613 >>> 0 < 10) { + $a$7$i = $a$5$lcssa$i; + $d$3$i = $d$2$lcssa$i; + $e$3$i = $612; + break; + } else { + $e$2104$i = $612; + $i$2103$i = 10; + } + while (1) { + $i$2103$i = $i$2103$i * 10 | 0; + $616 = $e$2104$i + 1 | 0; + if ($613 >>> 0 < $i$2103$i >>> 0) { + $a$7$i = $a$5$lcssa$i; + $d$3$i = $d$2$lcssa$i; + $e$3$i = $616; + break; + } else $e$2104$i = $616; + } + } while (0); + $618 = $d$3$i + 4 | 0; + $a$8$ph$i = $a$7$i; + $e$4$ph$i = $e$3$i; + $z$6$ph$i = $z$3$lcssa$i >>> 0 > $618 >>> 0 ? $618 : $z$3$lcssa$i; + } else { + $a$8$ph$i = $a$3$lcssa$i; + $e$4$ph$i = $e$1$i; + $z$6$ph$i = $z$3$lcssa$i; + } + $620 = 0 - $e$4$ph$i | 0; + $z$6$i = $z$6$ph$i; + while (1) { + if ($z$6$i >>> 0 <= $a$8$ph$i >>> 0) { + $$lcssa159$i = 0; + $z$6$i$lcssa = $z$6$i; + break; + } + $622 = $z$6$i + -4 | 0; + if (!(HEAP32[$622 >> 2] | 0)) $z$6$i = $622; else { + $$lcssa159$i = 1; + $z$6$i$lcssa = $z$6$i; + break; + } + } + do if ($564) { + $$p$$i = ($565 & 1 ^ 1) + $$p$i | 0; + if (($$p$$i | 0) > ($e$4$ph$i | 0) & ($e$4$ph$i | 0) > -5) { + $$013$i = $t$0 + -1 | 0; + $$210$i = $$p$$i + -1 - $e$4$ph$i | 0; + } else { + $$013$i = $t$0 + -2 | 0; + $$210$i = $$p$$i + -1 | 0; + } + $633 = $fl$1$ & 8; + if ($633) { + $$114$i = $$013$i; + $$311$i = $$210$i; + $$pre$phi184$iZ2D = $633; + break; + } + do if ($$lcssa159$i) { + $636 = HEAP32[$z$6$i$lcssa + -4 >> 2] | 0; + if (!$636) { + $j$2$i = 9; + break; + } + if (!(($636 >>> 0) % 10 | 0)) { + $i$399$i = 10; + $j$1100$i = 0; + } else { + $j$2$i = 0; + break; + } + while (1) { + $i$399$i = $i$399$i * 10 | 0; + $641 = $j$1100$i + 1 | 0; + if (($636 >>> 0) % ($i$399$i >>> 0) | 0) { + $j$2$i = $641; + break; + } else $j$1100$i = $641; + } + } else $j$2$i = 9; while (0); + $650 = (($z$6$i$lcssa - $482 >> 2) * 9 | 0) + -9 | 0; + if (($$013$i | 32 | 0) == 102) { + $651 = $650 - $j$2$i | 0; + $$21$i = ($651 | 0) < 0 ? 0 : $651; + $$114$i = $$013$i; + $$311$i = ($$210$i | 0) < ($$21$i | 0) ? $$210$i : $$21$i; + $$pre$phi184$iZ2D = 0; + break; + } else { + $655 = $650 + $e$4$ph$i - $j$2$i | 0; + $$23$i = ($655 | 0) < 0 ? 0 : $655; + $$114$i = $$013$i; + $$311$i = ($$210$i | 0) < ($$23$i | 0) ? $$210$i : $$23$i; + $$pre$phi184$iZ2D = 0; + break; + } + } else { + $$114$i = $t$0; + $$311$i = $$p$i; + $$pre$phi184$iZ2D = $fl$1$ & 8; + } while (0); + $658 = $$311$i | $$pre$phi184$iZ2D; + $660 = ($658 | 0) != 0 & 1; + $662 = ($$114$i | 32 | 0) == 102; + if ($662) { + $$pn$i = ($e$4$ph$i | 0) > 0 ? $e$4$ph$i : 0; + $estr$2$i = 0; + } else { + $666 = ($e$4$ph$i | 0) < 0 ? $620 : $e$4$ph$i; + $669 = _fmt_u($666, (($666 | 0) < 0) << 31 >> 31, $5) | 0; + if (($8 - $669 | 0) < 2) { + $estr$193$i = $669; + while (1) { + $673 = $estr$193$i + -1 | 0; + HEAP8[$673 >> 0] = 48; + if (($8 - $673 | 0) < 2) $estr$193$i = $673; else { + $estr$1$lcssa$i = $673; + break; + } + } + } else $estr$1$lcssa$i = $669; + HEAP8[$estr$1$lcssa$i + -1 >> 0] = ($e$4$ph$i >> 31 & 2) + 43; + $683 = $estr$1$lcssa$i + -2 | 0; + HEAP8[$683 >> 0] = $$114$i; + $$pn$i = $8 - $683 | 0; + $estr$2$i = $683; + } + $688 = $pl$0$i + 1 + $$311$i + $660 + $$pn$i | 0; + _pad($f, 32, $w$1, $688, $fl$1$); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$i, $pl$0$i, $f) | 0; + _pad($f, 48, $w$1, $688, $fl$1$ ^ 65536); + do if ($662) { + $r$0$a$8$i = $a$8$ph$i >>> 0 > $$31$i >>> 0 ? $$31$i : $a$8$ph$i; + $d$482$i = $r$0$a$8$i; + while (1) { + $695 = _fmt_u(HEAP32[$d$482$i >> 2] | 0, 0, $13) | 0; + do if (($d$482$i | 0) == ($r$0$a$8$i | 0)) { + if (($695 | 0) != ($13 | 0)) { + $s7$1$i = $695; + break; + } + HEAP8[$15 >> 0] = 48; + $s7$1$i = $15; + } else { + if ($695 >>> 0 > $buf$i >>> 0) $s7$079$i = $695; else { + $s7$1$i = $695; + break; + } + while (1) { + $698 = $s7$079$i + -1 | 0; + HEAP8[$698 >> 0] = 48; + if ($698 >>> 0 > $buf$i >>> 0) $s7$079$i = $698; else { + $s7$1$i = $698; + break; + } + } + } while (0); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s7$1$i, $14 - $s7$1$i | 0, $f) | 0; + $706 = $d$482$i + 4 | 0; + if ($706 >>> 0 > $$31$i >>> 0) { + $$lcssa339 = $706; + break; + } else $d$482$i = $706; + } + do if ($658) { + if (HEAP32[$f >> 2] & 32) break; + ___fwritex(18335, 1, $f) | 0; + } while (0); + if (($$311$i | 0) > 0 & $$lcssa339 >>> 0 < $z$6$i$lcssa >>> 0) { + $$41276$i = $$311$i; + $d$575$i = $$lcssa339; + while (1) { + $716 = _fmt_u(HEAP32[$d$575$i >> 2] | 0, 0, $13) | 0; + if ($716 >>> 0 > $buf$i >>> 0) { + $s8$070$i = $716; + while (1) { + $718 = $s8$070$i + -1 | 0; + HEAP8[$718 >> 0] = 48; + if ($718 >>> 0 > $buf$i >>> 0) $s8$070$i = $718; else { + $s8$0$lcssa$i = $718; + break; + } + } + } else $s8$0$lcssa$i = $716; + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s8$0$lcssa$i, ($$41276$i | 0) > 9 ? 9 : $$41276$i, $f) | 0; + $d$575$i = $d$575$i + 4 | 0; + $726 = $$41276$i + -9 | 0; + if (!(($$41276$i | 0) > 9 & $d$575$i >>> 0 < $z$6$i$lcssa >>> 0)) { + $$412$lcssa$i = $726; + break; + } else $$41276$i = $726; + } + } else $$412$lcssa$i = $$311$i; + _pad($f, 48, $$412$lcssa$i + 9 | 0, 9, 0); + } else { + $z$6$$i = $$lcssa159$i ? $z$6$i$lcssa : $a$8$ph$i + 4 | 0; + if (($$311$i | 0) > -1) { + $733 = ($$pre$phi184$iZ2D | 0) == 0; + $$587$i = $$311$i; + $d$686$i = $a$8$ph$i; + while (1) { + $735 = _fmt_u(HEAP32[$d$686$i >> 2] | 0, 0, $13) | 0; + if (($735 | 0) == ($13 | 0)) { + HEAP8[$15 >> 0] = 48; + $s9$0$i = $15; + } else $s9$0$i = $735; + do if (($d$686$i | 0) == ($a$8$ph$i | 0)) { + $741 = $s9$0$i + 1 | 0; + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$0$i, 1, $f) | 0; + if ($733 & ($$587$i | 0) < 1) { + $s9$2$i = $741; + break; + } + if (HEAP32[$f >> 2] & 32) { + $s9$2$i = $741; + break; + } + ___fwritex(18335, 1, $f) | 0; + $s9$2$i = $741; + } else { + if ($s9$0$i >>> 0 > $buf$i >>> 0) $s9$183$i = $s9$0$i; else { + $s9$2$i = $s9$0$i; + break; + } + while (1) { + $739 = $s9$183$i + -1 | 0; + HEAP8[$739 >> 0] = 48; + if ($739 >>> 0 > $buf$i >>> 0) $s9$183$i = $739; else { + $s9$2$i = $739; + break; + } + } + } while (0); + $750 = $14 - $s9$2$i | 0; + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$2$i, ($$587$i | 0) > ($750 | 0) ? $750 : $$587$i, $f) | 0; + $756 = $$587$i - $750 | 0; + $d$686$i = $d$686$i + 4 | 0; + if (!($d$686$i >>> 0 < $z$6$$i >>> 0 & ($756 | 0) > -1)) { + $$5$lcssa$i = $756; + break; + } else $$587$i = $756; + } + } else $$5$lcssa$i = $$311$i; + _pad($f, 48, $$5$lcssa$i + 18 | 0, 18, 0); + if (HEAP32[$f >> 2] & 32) break; + ___fwritex($estr$2$i, $8 - $estr$2$i | 0, $f) | 0; + } while (0); + _pad($f, 32, $w$1, $688, $fl$1$ ^ 8192); + $$0$i = ($688 | 0) < ($w$1 | 0) ? $w$1 : $688; + } else { + $377 = ($t$0 & 32 | 0) != 0; + $379 = $$07$i != $$07$i | 0.0 != 0.0; + $pl$1$i = $379 ? 0 : $pl$0$i; + $381 = $pl$1$i + 3 | 0; + _pad($f, 32, $w$1, $381, $175); + $382 = HEAP32[$f >> 2] | 0; + if (!($382 & 32)) { + ___fwritex($prefix$0$i, $pl$1$i, $f) | 0; + $386 = HEAP32[$f >> 2] | 0; + } else $386 = $382; + if (!($386 & 32)) ___fwritex($379 ? ($377 ? 18327 : 18331) : $377 ? 18319 : 18323, 3, $f) | 0; + _pad($f, 32, $w$1, $381, $fl$1$ ^ 8192); + $$0$i = ($381 | 0) < ($w$1 | 0) ? $w$1 : $381; + } while (0); + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $$0$i; + $l10n$0 = $l10n$3; + continue L1; + break; + } + default: + { + $a$2 = $fmt41; + $fl$6 = $fl$1$; + $p$5 = $p$0; + $pl$2 = 0; + $prefix$2 = 18283; + $z$2 = $1; + } + } while (0); + L313 : do if ((label | 0) == 64) { + label = 0; + $206 = $arg; + $208 = HEAP32[$206 >> 2] | 0; + $211 = HEAP32[$206 + 4 >> 2] | 0; + $212 = $t$1 & 32; + if (($208 | 0) == 0 & ($211 | 0) == 0) { + $a$0 = $1; + $fl$4 = $fl$3; + $p$2 = $p$1; + $pl$1 = 0; + $prefix$1 = 18283; + label = 77; + } else { + $$012$i = $1; + $217 = $208; + $224 = $211; + while (1) { + $223 = $$012$i + -1 | 0; + HEAP8[$223 >> 0] = HEAPU8[18267 + ($217 & 15) >> 0] | $212; + $217 = _bitshift64Lshr($217 | 0, $224 | 0, 4) | 0; + $224 = tempRet0; + if (($217 | 0) == 0 & ($224 | 0) == 0) { + $$lcssa344 = $223; + break; + } else $$012$i = $223; + } + $230 = $arg; + if (($fl$3 & 8 | 0) == 0 | (HEAP32[$230 >> 2] | 0) == 0 & (HEAP32[$230 + 4 >> 2] | 0) == 0) { + $a$0 = $$lcssa344; + $fl$4 = $fl$3; + $p$2 = $p$1; + $pl$1 = 0; + $prefix$1 = 18283; + label = 77; + } else { + $a$0 = $$lcssa344; + $fl$4 = $fl$3; + $p$2 = $p$1; + $pl$1 = 2; + $prefix$1 = 18283 + ($t$1 >> 4) | 0; + label = 77; + } + } + } else if ((label | 0) == 76) { + label = 0; + $a$0 = _fmt_u($286, $287, $1) | 0; + $fl$4 = $fl$1$; + $p$2 = $p$0; + $pl$1 = $pl$0; + $prefix$1 = $prefix$0; + label = 77; + } else if ((label | 0) == 82) { + label = 0; + $320 = _memchr($a$1, 0, $p$0) | 0; + $321 = ($320 | 0) == 0; + $a$2 = $a$1; + $fl$6 = $175; + $p$5 = $321 ? $p$0 : $320 - $a$1 | 0; + $pl$2 = 0; + $prefix$2 = 18283; + $z$2 = $321 ? $a$1 + $p$0 | 0 : $320; + } else if ((label | 0) == 86) { + label = 0; + $i$0114 = 0; + $l$1113 = 0; + $ws$0115 = HEAP32[$arg >> 2] | 0; + while (1) { + $334 = HEAP32[$ws$0115 >> 2] | 0; + if (!$334) { + $i$0$lcssa = $i$0114; + $l$2 = $l$1113; + break; + } + $336 = _wctomb($mb, $334) | 0; + if (($336 | 0) < 0 | $336 >>> 0 > ($p$4198 - $i$0114 | 0) >>> 0) { + $i$0$lcssa = $i$0114; + $l$2 = $336; + break; + } + $341 = $336 + $i$0114 | 0; + if ($p$4198 >>> 0 > $341 >>> 0) { + $i$0114 = $341; + $l$1113 = $336; + $ws$0115 = $ws$0115 + 4 | 0; + } else { + $i$0$lcssa = $341; + $l$2 = $336; + break; + } + } + if (($l$2 | 0) < 0) { + $$0 = -1; + break L1; + } + _pad($f, 32, $w$1, $i$0$lcssa, $fl$1$); + if (!$i$0$lcssa) { + $i$0$lcssa200 = 0; + label = 98; + } else { + $i$1125 = 0; + $ws$1126 = HEAP32[$arg >> 2] | 0; + while (1) { + $346 = HEAP32[$ws$1126 >> 2] | 0; + if (!$346) { + $i$0$lcssa200 = $i$0$lcssa; + label = 98; + break L313; + } + $349 = _wctomb($mb, $346) | 0; + $i$1125 = $349 + $i$1125 | 0; + if (($i$1125 | 0) > ($i$0$lcssa | 0)) { + $i$0$lcssa200 = $i$0$lcssa; + label = 98; + break L313; + } + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($mb, $349, $f) | 0; + if ($i$1125 >>> 0 >= $i$0$lcssa >>> 0) { + $i$0$lcssa200 = $i$0$lcssa; + label = 98; + break; + } else $ws$1126 = $ws$1126 + 4 | 0; + } + } + } while (0); + if ((label | 0) == 98) { + label = 0; + _pad($f, 32, $w$1, $i$0$lcssa200, $fl$1$ ^ 8192); + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = ($w$1 | 0) > ($i$0$lcssa200 | 0) ? $w$1 : $i$0$lcssa200; + $l10n$0 = $l10n$3; + continue; + } + if ((label | 0) == 77) { + label = 0; + $$fl$4 = ($p$2 | 0) > -1 ? $fl$4 & -65537 : $fl$4; + $291 = $arg; + $299 = (HEAP32[$291 >> 2] | 0) != 0 | (HEAP32[$291 + 4 >> 2] | 0) != 0; + if (($p$2 | 0) != 0 | $299) { + $305 = ($299 & 1 ^ 1) + ($2 - $a$0) | 0; + $a$2 = $a$0; + $fl$6 = $$fl$4; + $p$5 = ($p$2 | 0) > ($305 | 0) ? $p$2 : $305; + $pl$2 = $pl$1; + $prefix$2 = $prefix$1; + $z$2 = $1; + } else { + $a$2 = $1; + $fl$6 = $$fl$4; + $p$5 = 0; + $pl$2 = $pl$1; + $prefix$2 = $prefix$1; + $z$2 = $1; + } + } + $771 = $z$2 - $a$2 | 0; + $$p$5 = ($p$5 | 0) < ($771 | 0) ? $771 : $p$5; + $773 = $pl$2 + $$p$5 | 0; + $w$2 = ($w$1 | 0) < ($773 | 0) ? $773 : $w$1; + _pad($f, 32, $w$2, $773, $fl$6); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$2, $pl$2, $f) | 0; + _pad($f, 48, $w$2, $773, $fl$6 ^ 65536); + _pad($f, 48, $$p$5, $771, 0); + if (!(HEAP32[$f >> 2] & 32)) ___fwritex($a$2, $771, $f) | 0; + _pad($f, 32, $w$2, $773, $fl$6 ^ 8192); + $cnt$0 = $cnt$1; + $fmt41 = $$lcssa323; + $l$0 = $w$2; + $l10n$0 = $l10n$3; + } + L348 : do if ((label | 0) == 245) if (!$f) if (!$l10n$0$lcssa) $$0 = 0; else { + $i$2100 = 1; + while (1) { + $786 = HEAP32[$nl_type + ($i$2100 << 2) >> 2] | 0; + if (!$786) { + $i$2100$lcssa = $i$2100; + break; + } + _pop_arg($nl_arg + ($i$2100 << 3) | 0, $786, $ap); + $i$2100 = $i$2100 + 1 | 0; + if (($i$2100 | 0) >= 10) { + $$0 = 1; + break L348; + } + } + if (($i$2100$lcssa | 0) < 10) { + $i$398 = $i$2100$lcssa; + while (1) { + if (HEAP32[$nl_type + ($i$398 << 2) >> 2] | 0) { + $$0 = -1; + break L348; + } + $i$398 = $i$398 + 1 | 0; + if (($i$398 | 0) >= 10) { + $$0 = 1; + break; + } + } + } else $$0 = 1; + } else $$0 = $cnt$1$lcssa; while (0); + STACKTOP = sp; + return $$0 | 0; +} +function __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i46 = 0, $$0$i$i$i$i62 = 0, $$0$i$i$i26 = 0, $$0$i$i117 = 0, $$0$i49 = 0, $$01$i$i$i122 = 0, $$01$i$i$i41126 = 0, $$01$i$i$i57130 = 0, $$1$i = 0, $$lcssa = 0, $$lcssa154 = 0, $$lcssa155 = 0, $$lcssa157 = 0, $$lcssa158 = 0, $$lcssa160 = 0, $$lcssa161 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $105 = 0, $107 = 0, $108 = 0, $11 = 0, $110 = 0, $111 = 0, $113 = 0, $114 = 0, $116 = 0, $117 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $123 = 0, $125 = 0, $126 = 0, $128 = 0, $129 = 0, $13 = 0, $131 = 0, $132 = 0, $134 = 0, $138 = 0, $14 = 0, $141 = 0, $145 = 0, $148 = 0, $148$phi = 0, $149 = 0, $15 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $165 = 0, $17 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $18 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $19 = 0, $190 = 0, $192 = 0, $195 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $21 = 0, $211 = 0, $214 = 0, $214$phi = 0, $215 = 0, $22 = 0, $222 = 0, $223 = 0, $225 = 0, $229 = 0, $23 = 0, $231 = 0, $236 = 0, $238 = 0, $239 = 0, $24 = 0, $241 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $255 = 0, $257 = 0, $260 = 0, $261 = 0, $265 = 0, $269 = 0, $272 = 0, $276 = 0, $279 = 0, $279$phi = 0, $280 = 0, $287 = 0, $288 = 0, $290 = 0, $294 = 0, $296 = 0, $3 = 0, $301 = 0, $303 = 0, $304 = 0, $306 = 0, $31 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $320 = 0, $322 = 0, $325 = 0, $326 = 0, $333 = 0, $334 = 0, $34 = 0, $340 = 0, $346 = 0, $35 = 0, $354 = 0, $356 = 0, $357 = 0, $360 = 0, $365 = 0, $372 = 0, $373 = 0, $382 = 0, $384 = 0, $394 = 0, $4 = 0, $43 = 0, $44 = 0, $46 = 0, $5 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $60 = 0, $62 = 0, $65 = 0, $66 = 0, $69 = 0, $7 = 0, $70 = 0, $72 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $86 = 0, $88 = 0, $9 = 0, $91 = 0, $92 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__p$0$i$i116 = 0, $__p$0$ph$i$i = 0, $e$0$i124 = 0, $e$0$i124$lcssa153 = 0, $e$0$i33128 = 0, $e$0$i33128$lcssa156 = 0, $e$0$i52132 = 0, $e$0$i52132$lcssa159 = 0, $n$0120 = 0, $n$0120$lcssa = 0, $num$i51 = 0, $t$0$i125 = 0, $t$0$i34129 = 0, $t$0$i53133 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer4 = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 480 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer4 = sp + 72 | 0; + $vararg_buffer1 = sp + 48 | 0; + $vararg_buffer = sp + 24 | 0; + $0 = sp; + $num$i51 = sp + 432 | 0; + $1 = sp + 408 | 0; + $2 = sp + 396 | 0; + $3 = sp + 384 | 0; + $4 = sp + 360 | 0; + $5 = sp + 336 | 0; + $6 = sp + 320 | 0; + $7 = sp + 308 | 0; + $8 = sp + 296 | 0; + $9 = sp + 284 | 0; + $10 = sp + 272 | 0; + $11 = sp + 260 | 0; + $12 = sp + 248 | 0; + $13 = sp + 236 | 0; + $14 = sp + 224 | 0; + $15 = sp + 212 | 0; + $16 = sp + 200 | 0; + $17 = sp + 188 | 0; + $18 = sp + 176 | 0; + $19 = sp + 152 | 0; + $20 = sp + 140 | 0; + $21 = sp + 128 | 0; + $22 = sp + 116 | 0; + $23 = sp + 104 | 0; + $24 = sp + 92 | 0; + $25 = $last; + L1 : do if (($25 - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 76) { + $31 = $first + 1 | 0; + do switch (HEAP8[$31 >> 0] | 0) { + case 84: + { + $$0 = $first; + break L1; + break; + } + case 119: + { + $34 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 13764, 7); + $35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($34, $last, $3, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$0 = ($35 | 0) == ($34 | 0) ? $first : $35; + break L1; + break; + } + case 98: + { + if ((HEAP8[$first + 3 >> 0] | 0) != 69) { + $$0 = $first; + break L1; + } + switch (HEAP8[$first + 2 >> 0] | 0) { + case 48: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($4, 13772); + $43 = $db + 4 | 0; + $44 = HEAP32[$43 >> 2] | 0; + $46 = HEAP32[$db + 8 >> 2] | 0; + if ($44 >>> 0 < $46 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($44, $4); + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 24; + } else { + $53 = HEAP32[$db >> 2] | 0; + $54 = $44 - $53 | 0; + $55 = ($54 | 0) / 24 | 0; + $56 = $55 + 1 | 0; + if (($54 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $60 = ($46 - $53 | 0) / 24 | 0; + if ($60 >>> 0 < 1073741823) { + $62 = $60 << 1; + $$0$i$i$i = $62 >>> 0 < $56 >>> 0 ? $56 : $62; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $55, $db + 12 | 0); + $65 = $0 + 8 | 0; + $66 = HEAP32[$65 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($66, $4); + HEAP32[$65 >> 2] = $66 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4); + $$0 = $first + 4 | 0; + break L1; + break; + } + case 49: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($5, 13778); + $69 = $db + 4 | 0; + $70 = HEAP32[$69 >> 2] | 0; + $72 = HEAP32[$db + 8 >> 2] | 0; + if ($70 >>> 0 < $72 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($70, $5); + HEAP32[$69 >> 2] = (HEAP32[$69 >> 2] | 0) + 24; + } else { + $79 = HEAP32[$db >> 2] | 0; + $80 = $70 - $79 | 0; + $81 = ($80 | 0) / 24 | 0; + $82 = $81 + 1 | 0; + if (($80 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $86 = ($72 - $79 | 0) / 24 | 0; + if ($86 >>> 0 < 1073741823) { + $88 = $86 << 1; + $$0$i$i$i26 = $88 >>> 0 < $82 >>> 0 ? $82 : $88; + } else $$0$i$i$i26 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i26, $81, $db + 12 | 0); + $91 = $0 + 8 | 0; + $92 = HEAP32[$91 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($92, $5); + HEAP32[$91 >> 2] = $92 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $$0 = $first + 4 | 0; + break L1; + break; + } + default: + { + $$0 = $first; + break L1; + } + } + break; + } + case 99: + { + $95 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, 13783, 4); + $96 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($95, $last, $6, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6); + $$0 = ($96 | 0) == ($95 | 0) ? $first : $96; + break L1; + break; + } + case 97: + { + $98 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($7, 13788, 11); + $99 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($98, $last, $7, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7); + $$0 = ($99 | 0) == ($98 | 0) ? $first : $99; + break L1; + break; + } + case 104: + { + $101 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($8, 13800, 13); + $102 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($101, $last, $8, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8); + $$0 = ($102 | 0) == ($101 | 0) ? $first : $102; + break L1; + break; + } + case 115: + { + $104 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($9, 13814, 5); + $105 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($104, $last, $9, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9); + $$0 = ($105 | 0) == ($104 | 0) ? $first : $105; + break L1; + break; + } + case 116: + { + $107 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($10, 13820, 14); + $108 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($107, $last, $10, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10); + $$0 = ($108 | 0) == ($107 | 0) ? $first : $108; + break L1; + break; + } + case 105: + { + $110 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($11, 13835, 0); + $111 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($110, $last, $11, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11); + $$0 = ($111 | 0) == ($110 | 0) ? $first : $111; + break L1; + break; + } + case 106: + { + $113 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($12, 13836, 1); + $114 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($113, $last, $12, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12); + $$0 = ($114 | 0) == ($113 | 0) ? $first : $114; + break L1; + break; + } + case 108: + { + $116 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 13838, 1); + $117 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($116, $last, $13, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13); + $$0 = ($117 | 0) == ($116 | 0) ? $first : $117; + break L1; + break; + } + case 109: + { + $119 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 13840, 2); + $120 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($119, $last, $14, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14); + $$0 = ($120 | 0) == ($119 | 0) ? $first : $120; + break L1; + break; + } + case 120: + { + $122 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 13843, 2); + $123 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($122, $last, $15, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15); + $$0 = ($123 | 0) == ($122 | 0) ? $first : $123; + break L1; + break; + } + case 121: + { + $125 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13846, 3); + $126 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($125, $last, $16, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16); + $$0 = ($126 | 0) == ($125 | 0) ? $first : $126; + break L1; + break; + } + case 110: + { + $128 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13850, 8); + $129 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($128, $last, $17, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17); + $$0 = ($129 | 0) == ($128 | 0) ? $first : $129; + break L1; + break; + } + case 111: + { + $131 = $first + 2 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13859, 17); + $132 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($131, $last, $18, $db) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18); + $$0 = ($132 | 0) == ($131 | 0) ? $first : $132; + break L1; + break; + } + case 102: + { + $134 = $first + 2 | 0; + L67 : do if (($25 - $134 | 0) >>> 0 > 8) { + $138 = $first + 10 | 0; + $141 = HEAP8[$134 >> 0] | 0; + $148 = $first; + $e$0$i124 = $0; + $t$0$i125 = $134; + while (1) { + if (!(_isxdigit($141 << 24 >> 24) | 0)) { + $$0$i = $134; + break L67; + } + $145 = HEAP8[$t$0$i125 >> 0] | 0; + $149 = HEAP8[$148 + 3 >> 0] | 0; + HEAP8[$e$0$i124 >> 0] = ((($149 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($149 & 255) + ((($145 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $145 << 4); + $156 = $t$0$i125 + 2 | 0; + $157 = $e$0$i124 + 1 | 0; + $159 = HEAP8[$156 >> 0] | 0; + if (($156 | 0) == ($138 | 0)) { + $$lcssa154 = $157; + $$lcssa155 = $159; + $e$0$i124$lcssa153 = $e$0$i124; + break; + } else { + $148$phi = $t$0$i125; + $141 = $159; + $e$0$i124 = $157; + $t$0$i125 = $156; + $148 = $148$phi; + } + } + if ($$lcssa155 << 24 >> 24 == 69) { + if (($0 | 0) != ($$lcssa154 | 0) & $0 >>> 0 < $e$0$i124$lcssa153 >>> 0) { + $$01$i$i$i122 = $0; + $165 = $e$0$i124$lcssa153; + do { + $163 = HEAP8[$$01$i$i$i122 >> 0] | 0; + HEAP8[$$01$i$i$i122 >> 0] = HEAP8[$165 >> 0] | 0; + HEAP8[$165 >> 0] = $163; + $$01$i$i$i122 = $$01$i$i$i122 + 1 | 0; + $165 = $165 + -1 | 0; + } while ($$01$i$i$i122 >>> 0 < $165 >>> 0); + } + dest = $num$i51; + stop = dest + 24 | 0; + do { + HEAP8[dest >> 0] = 0; + dest = dest + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$vararg_buffer >> 3] = +HEAPF32[$0 >> 2]; + $171 = _snprintf($num$i51, 24, 13877, $vararg_buffer) | 0; + if ($171 >>> 0 > 23) $$0$i = $134; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $171); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + $173 = $db + 4 | 0; + $174 = HEAP32[$173 >> 2] | 0; + $176 = HEAP32[$db + 8 >> 2] | 0; + if ($174 >>> 0 < $176 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($174, $1); + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 24; + } else { + $183 = HEAP32[$db >> 2] | 0; + $184 = $174 - $183 | 0; + $185 = ($184 | 0) / 24 | 0; + $186 = $185 + 1 | 0; + if (($184 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $190 = ($176 - $183 | 0) / 24 | 0; + if ($190 >>> 0 < 1073741823) { + $192 = $190 << 1; + $$0$i$i$i$i = $192 >>> 0 < $186 >>> 0 ? $186 : $192; + } else $$0$i$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer, $$0$i$i$i$i, $185, $db + 12 | 0); + $195 = $vararg_buffer + 8 | 0; + $196 = HEAP32[$195 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($196, $1); + HEAP32[$195 >> 2] = $196 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$0$i = $first + 11 | 0; + } + } else $$0$i = $134; + } else $$0$i = $134; while (0); + $$0 = ($$0$i | 0) == ($134 | 0) ? $first : $$0$i; + break L1; + break; + } + case 100: + { + $200 = $first + 2 | 0; + L91 : do if (($25 - $200 | 0) >>> 0 > 16) { + $204 = $first + 18 | 0; + $207 = HEAP8[$200 >> 0] | 0; + $214 = $first; + $e$0$i33128 = $0; + $t$0$i34129 = $200; + while (1) { + if (!(_isxdigit($207 << 24 >> 24) | 0)) { + $$0$i49 = $200; + break L91; + } + $211 = HEAP8[$t$0$i34129 >> 0] | 0; + $215 = HEAP8[$214 + 3 >> 0] | 0; + HEAP8[$e$0$i33128 >> 0] = ((($215 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($215 & 255) + ((($211 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $211 << 4); + $222 = $t$0$i34129 + 2 | 0; + $223 = $e$0$i33128 + 1 | 0; + $225 = HEAP8[$222 >> 0] | 0; + if (($222 | 0) == ($204 | 0)) { + $$lcssa157 = $223; + $$lcssa158 = $225; + $e$0$i33128$lcssa156 = $e$0$i33128; + break; + } else { + $214$phi = $t$0$i34129; + $207 = $225; + $e$0$i33128 = $223; + $t$0$i34129 = $222; + $214 = $214$phi; + } + } + if ($$lcssa158 << 24 >> 24 == 69) { + if (($0 | 0) != ($$lcssa157 | 0) & $0 >>> 0 < $e$0$i33128$lcssa156 >>> 0) { + $$01$i$i$i41126 = $0; + $231 = $e$0$i33128$lcssa156; + do { + $229 = HEAP8[$$01$i$i$i41126 >> 0] | 0; + HEAP8[$$01$i$i$i41126 >> 0] = HEAP8[$231 >> 0] | 0; + HEAP8[$231 >> 0] = $229; + $$01$i$i$i41126 = $$01$i$i$i41126 + 1 | 0; + $231 = $231 + -1 | 0; + } while ($$01$i$i$i41126 >>> 0 < $231 >>> 0); + } + dest = $num$i51; + stop = dest + 32 | 0; + do { + HEAP8[dest >> 0] = 0; + dest = dest + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$vararg_buffer1 >> 3] = +HEAPF64[$0 >> 3]; + $236 = _snprintf($num$i51, 32, 13881, $vararg_buffer1) | 0; + if ($236 >>> 0 > 31) $$0$i49 = $200; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $236); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + $238 = $db + 4 | 0; + $239 = HEAP32[$238 >> 2] | 0; + $241 = HEAP32[$db + 8 >> 2] | 0; + if ($239 >>> 0 < $241 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($239, $1); + HEAP32[$238 >> 2] = (HEAP32[$238 >> 2] | 0) + 24; + } else { + $248 = HEAP32[$db >> 2] | 0; + $249 = $239 - $248 | 0; + $250 = ($249 | 0) / 24 | 0; + $251 = $250 + 1 | 0; + if (($249 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $255 = ($241 - $248 | 0) / 24 | 0; + if ($255 >>> 0 < 1073741823) { + $257 = $255 << 1; + $$0$i$i$i$i46 = $257 >>> 0 < $251 >>> 0 ? $251 : $257; + } else $$0$i$i$i$i46 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer1, $$0$i$i$i$i46, $250, $db + 12 | 0); + $260 = $vararg_buffer1 + 8 | 0; + $261 = HEAP32[$260 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($261, $1); + HEAP32[$260 >> 2] = $261 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer1); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer1); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$0$i49 = $first + 19 | 0; + } + } else $$0$i49 = $200; + } else $$0$i49 = $200; while (0); + $$0 = ($$0$i49 | 0) == ($200 | 0) ? $first : $$0$i49; + break L1; + break; + } + case 101: + { + $265 = $first + 2 | 0; + L115 : do if (($25 - $265 | 0) >>> 0 > 20) { + $269 = $first + 22 | 0; + $272 = HEAP8[$265 >> 0] | 0; + $279 = $first; + $e$0$i52132 = $0; + $t$0$i53133 = $265; + while (1) { + if (!(_isxdigit($272 << 24 >> 24) | 0)) { + $$1$i = $265; + break L115; + } + $276 = HEAP8[$t$0$i53133 >> 0] | 0; + $280 = HEAP8[$279 + 3 >> 0] | 0; + HEAP8[$e$0$i52132 >> 0] = ((($280 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($280 & 255) + ((($276 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $276 << 4); + $287 = $t$0$i53133 + 2 | 0; + $288 = $e$0$i52132 + 1 | 0; + $290 = HEAP8[$287 >> 0] | 0; + if (($287 | 0) == ($269 | 0)) { + $$lcssa160 = $288; + $$lcssa161 = $290; + $e$0$i52132$lcssa159 = $e$0$i52132; + break; + } else { + $279$phi = $t$0$i53133; + $272 = $290; + $e$0$i52132 = $288; + $t$0$i53133 = $287; + $279 = $279$phi; + } + } + if ($$lcssa161 << 24 >> 24 == 69) { + if (($0 | 0) != ($$lcssa160 | 0) & $0 >>> 0 < $e$0$i52132$lcssa159 >>> 0) { + $$01$i$i$i57130 = $0; + $296 = $e$0$i52132$lcssa159; + do { + $294 = HEAP8[$$01$i$i$i57130 >> 0] | 0; + HEAP8[$$01$i$i$i57130 >> 0] = HEAP8[$296 >> 0] | 0; + HEAP8[$296 >> 0] = $294; + $$01$i$i$i57130 = $$01$i$i$i57130 + 1 | 0; + $296 = $296 + -1 | 0; + } while ($$01$i$i$i57130 >>> 0 < $296 >>> 0); + } + dest = $num$i51; + stop = dest + 40 | 0; + do { + HEAP8[dest >> 0] = 0; + dest = dest + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$vararg_buffer4 >> 3] = +HEAPF64[$0 >> 3]; + $301 = _snprintf($num$i51, 40, 13884, $vararg_buffer4) | 0; + if ($301 >>> 0 > 39) { + $$1$i = $265; + break; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $301); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + $303 = $db + 4 | 0; + $304 = HEAP32[$303 >> 2] | 0; + $306 = HEAP32[$db + 8 >> 2] | 0; + if ($304 >>> 0 < $306 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($304, $1); + HEAP32[$303 >> 2] = (HEAP32[$303 >> 2] | 0) + 24; + } else { + $313 = HEAP32[$db >> 2] | 0; + $314 = $304 - $313 | 0; + $315 = ($314 | 0) / 24 | 0; + $316 = $315 + 1 | 0; + if (($314 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $320 = ($306 - $313 | 0) / 24 | 0; + if ($320 >>> 0 < 1073741823) { + $322 = $320 << 1; + $$0$i$i$i$i62 = $322 >>> 0 < $316 >>> 0 ? $316 : $322; + } else $$0$i$i$i$i62 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer4, $$0$i$i$i$i62, $315, $db + 12 | 0); + $325 = $vararg_buffer4 + 8 | 0; + $326 = HEAP32[$325 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($326, $1); + HEAP32[$325 >> 2] = $326 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer4); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer4); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$1$i = $first + 23 | 0; + } else $$1$i = $265; + } else $$1$i = $265; while (0); + $$0 = ($$1$i | 0) == ($265 | 0) ? $first : $$1$i; + break L1; + break; + } + case 95: + { + if ((HEAP8[$first + 2 >> 0] | 0) != 90) { + $$0 = $first; + break L1; + } + $333 = $first + 3 | 0; + $334 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($333, $last, $db) | 0; + if (($334 | 0) == ($333 | 0) | ($334 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + STACKTOP = sp; + return ((HEAP8[$334 >> 0] | 0) == 69 ? $334 + 1 | 0 : $first) | 0; + } + default: + { + $340 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($31, $last, $db) | 0; + if (($340 | 0) == ($31 | 0) | ($340 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + if ((HEAP8[$340 >> 0] | 0) == 69) { + $$0 = $340 + 1 | 0; + break L1; + } + if (($340 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } else $n$0120 = $340; + while (1) { + $346 = HEAP8[$n$0120 >> 0] | 0; + if ((($346 << 24 >> 24) + -48 | 0) >>> 0 >= 10) { + $$lcssa = $346; + $n$0120$lcssa = $n$0120; + break; + } + $n$0120 = $n$0120 + 1 | 0; + if (($n$0120 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + } + if (!(($n$0120$lcssa | 0) != ($340 | 0) & $$lcssa << 24 >> 24 == 69)) { + $$0 = $first; + break L1; + } + $354 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($354 | 0)) { + $$0 = $first; + break L1; + } + $356 = $354 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, $356); + $357 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($23, 0, 12714) | 0; + HEAP32[$22 >> 2] = HEAP32[$357 >> 2]; + HEAP32[$22 + 4 >> 2] = HEAP32[$357 + 4 >> 2]; + HEAP32[$22 + 8 >> 2] = HEAP32[$357 + 8 >> 2]; + HEAP32[$357 >> 2] = 0; + HEAP32[$357 + 4 >> 2] = 0; + HEAP32[$357 + 8 >> 2] = 0; + $360 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 12619) | 0; + HEAP32[$21 >> 2] = HEAP32[$360 >> 2]; + HEAP32[$21 + 4 >> 2] = HEAP32[$360 + 4 >> 2]; + HEAP32[$21 + 8 >> 2] = HEAP32[$360 + 8 >> 2]; + HEAP32[$360 >> 2] = 0; + HEAP32[$360 + 4 >> 2] = 0; + HEAP32[$360 + 8 >> 2] = 0; + $365 = $n$0120$lcssa - $340 | 0; + if ($365 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($24); + if ($365 >>> 0 < 11) { + HEAP8[$24 >> 0] = $365 << 1; + $__p$0$ph$i$i = $24 + 1 | 0; + } else { + $372 = $365 + 16 & -16; + $373 = _malloc($372) | 0; + HEAP32[$24 + 8 >> 2] = $373; + HEAP32[$24 >> 2] = $372 | 1; + HEAP32[$24 + 4 >> 2] = $365; + $__p$0$ph$i$i = $373; + } + if (($340 | 0) != ($n$0120$lcssa | 0)) { + $$0$i$i117 = $340; + $__p$0$i$i116 = $__p$0$ph$i$i; + while (1) { + HEAP8[$__p$0$i$i116 >> 0] = HEAP8[$$0$i$i117 >> 0] | 0; + $$0$i$i117 = $$0$i$i117 + 1 | 0; + if (($$0$i$i117 | 0) == ($n$0120$lcssa | 0)) break; else $__p$0$i$i116 = $__p$0$i$i116 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i + $365 >> 0] = 0; + $382 = HEAP8[$24 >> 0] | 0; + $384 = ($382 & 1) == 0; + $394 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $384 ? $24 + 1 | 0 : HEAP32[$24 + 8 >> 2] | 0, $384 ? ($382 & 255) >>> 1 : HEAP32[$24 + 4 >> 2] | 0) | 0; + HEAP32[$20 >> 2] = HEAP32[$394 >> 2]; + HEAP32[$20 + 4 >> 2] = HEAP32[$394 + 4 >> 2]; + HEAP32[$20 + 8 >> 2] = HEAP32[$394 + 8 >> 2]; + HEAP32[$394 >> 2] = 0; + HEAP32[$394 + 4 >> 2] = 0; + HEAP32[$394 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($19, $20); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($356, $19); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23); + $$0 = $n$0120$lcssa + 1 | 0; + break L1; + } + } while (0); + } else $$0 = $first; else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0$i = 0, $$24$ph = 0, $$7 = 0, $$in = 0, $$in109 = 0, $$lcssa150 = 0, $$lcssa151 = 0, $$lcssa156 = 0, $$ph96 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $111 = 0, $118 = 0, $120 = 0, $123 = 0, $127 = 0, $13 = 0, $130 = 0, $135 = 0, $136 = 0, $139 = 0, $140 = 0, $142 = 0, $143 = 0, $152 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $171 = 0, $175 = 0, $176 = 0, $18 = 0, $180 = 0, $183 = 0, $184 = 0, $188 = 0, $191 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $206 = 0, $207 = 0, $209 = 0, $21 = 0, $215 = 0, $22 = 0, $226 = 0, $228 = 0, $240 = 0, $252 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $267 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $281 = 0, $284 = 0, $287 = 0, $29 = 0, $3 = 0, $30 = 0, $303 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $318 = 0, $320 = 0, $331 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $345 = 0, $347 = 0, $349 = 0, $350 = 0, $356 = 0, $361 = 0, $37 = 0, $371 = 0, $373 = 0, $38 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $389 = 0, $392 = 0, $398 = 0, $4 = 0, $402 = 0, $404 = 0, $405 = 0, $411 = 0, $413 = 0, $414 = 0, $42 = 0, $434 = 0, $436 = 0, $446 = 0, $45 = 0, $46 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $58 = 0, $6 = 0, $62 = 0, $65 = 0, $66 = 0, $68 = 0, $7 = 0, $73 = 0, $74 = 0, $76 = 0, $77 = 0, $8 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $90 = 0, $91 = 0, $94 = 0, $99 = 0, $first_arg$0$off0$ph = 0, $first_arg$3$off0$ph = 0, $k$0121 = 0, $k2$0122 = 0, $left$i = 0, $phitmp$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i = 0, $ret1 = 0, $ret2 = 0, $t$0 = 0, $t$1 = 0, $t$1$ph = 0, $t$2 = 0, $tmp = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 112 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $left$i = sp + 96 | 0; + $0 = sp + 84 | 0; + $1 = sp + 72 | 0; + $2 = sp + 60 | 0; + $3 = sp + 48 | 0; + $ret2 = sp + 36 | 0; + $ret1 = sp + 24 | 0; + $tmp = sp + 12 | 0; + $4 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$7 = $first; else { + $6 = $db + 56 | 0; + $7 = HEAP32[$6 >> 2] | 0; + $8 = $7 + 1 | 0; + HEAP32[$6 >> 2] = $8; + $9 = $db + 61 | 0; + $10 = HEAP8[$9 >> 0] | 0; + if ($8 >>> 0 > 1) HEAP8[$9 >> 0] = 1; + $13 = HEAP8[$first >> 0] | 0; + L6 : do switch ($13 | 0) { + case 84: + case 71: + { + L107 : do if (($last - $first | 0) > 2) { + switch ($13 | 0) { + case 84: + break; + case 71: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 86: + { + $175 = $first + 2 | 0; + $176 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($175, $last, $db) | 0; + if (($176 | 0) == ($175 | 0)) { + $$0$i = $first; + break L107; + } + $180 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($180 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($180 + -24 | 0, 0, 14547) | 0; + $$0$i = $176; + break L107; + break; + } + case 82: + { + $183 = $first + 2 | 0; + $184 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($183, $last, $db) | 0; + if (($184 | 0) == ($183 | 0)) { + $$0$i = $first; + break L107; + } + $188 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($188 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($188 + -24 | 0, 0, 14567) | 0; + $$0$i = $184; + break L107; + break; + } + default: + { + $$0$i = $first; + break L107; + } + } + break; + } + default: + { + $$0$i = $first; + break L107; + } + } + $18 = $first + 1 | 0; + switch (HEAP8[$18 >> 0] | 0) { + case 86: + { + $21 = $first + 2 | 0; + $22 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0; + if (($22 | 0) == ($21 | 0)) { + $$0$i = $first; + break L107; + } + $26 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($26 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($26 + -24 | 0, 0, 14396) | 0; + $$0$i = $22; + break L107; + break; + } + case 84: + { + $29 = $first + 2 | 0; + $30 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($29, $last, $db) | 0; + if (($30 | 0) == ($29 | 0)) { + $$0$i = $first; + break L107; + } + $34 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($34 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($34 + -24 | 0, 0, 14408) | 0; + $$0$i = $30; + break L107; + break; + } + case 73: + { + $37 = $first + 2 | 0; + $38 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($37, $last, $db) | 0; + if (($38 | 0) == ($37 | 0)) { + $$0$i = $first; + break L107; + } + $42 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($42 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($42 + -24 | 0, 0, 14417) | 0; + $$0$i = $38; + break L107; + break; + } + case 83: + { + $45 = $first + 2 | 0; + $46 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($45, $last, $db) | 0; + if (($46 | 0) == ($45 | 0)) { + $$0$i = $first; + break L107; + } + $50 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($50 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($50 + -24 | 0, 0, 14431) | 0; + $$0$i = $46; + break L107; + break; + } + case 99: + { + $53 = $first + 2 | 0; + $54 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($53, $last) | 0; + if (($54 | 0) == ($53 | 0)) { + $$0$i = $first; + break L107; + } + $56 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($54, $last) | 0; + if (($56 | 0) == ($54 | 0)) { + $$0$i = $first; + break L107; + } + $58 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($56, $last, $db) | 0; + if (($58 | 0) == ($56 | 0)) { + $$0$i = $first; + break L107; + } + $62 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($62 | 0)) { + $$0$i = $first; + break L107; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($62 + -24 | 0, 0, 14450) | 0; + $$0$i = $58; + break L107; + break; + } + case 67: + { + $65 = $first + 2 | 0; + $66 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($65, $last, $db) | 0; + if (($66 | 0) == ($65 | 0)) { + $$0$i = $first; + break L107; + } + $68 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($66, $last) | 0; + if (($68 | 0) == ($66 | 0) | ($68 | 0) == ($last | 0)) { + $$0$i = $first; + break L107; + } + if ((HEAP8[$68 >> 0] | 0) != 95) { + $$0$i = $first; + break L107; + } + $73 = $68 + 1 | 0; + $74 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($73, $last, $db) | 0; + if (($74 | 0) == ($73 | 0)) { + $$0$i = $first; + break L107; + } + $76 = $db + 4 | 0; + $77 = HEAP32[$76 >> 2] | 0; + if ((($77 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0$i = $first; + break L107; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($left$i, $77 + -24 | 0); + $85 = HEAP32[$76 >> 2] | 0; + $86 = $85 + -24 | 0; + $88 = $85; + do { + $87 = $88 + -24 | 0; + HEAP32[$76 >> 2] = $87; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($87); + $88 = HEAP32[$76 >> 2] | 0; + } while (($88 | 0) != ($86 | 0)); + $90 = $85 + -48 | 0; + $91 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($left$i, 0, 14477) | 0; + HEAP32[$2 >> 2] = HEAP32[$91 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$91 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$91 + 8 >> 2]; + HEAP32[$91 >> 2] = 0; + HEAP32[$91 + 4 >> 2] = 0; + HEAP32[$91 + 8 >> 2] = 0; + $94 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 14502) | 0; + HEAP32[$1 >> 2] = HEAP32[$94 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$94 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$94 + 8 >> 2]; + HEAP32[$94 >> 2] = 0; + HEAP32[$94 + 4 >> 2] = 0; + HEAP32[$94 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$76 >> 2] | 0) + -24 | 0); + $99 = HEAP8[$3 >> 0] | 0; + $101 = ($99 & 1) == 0; + $111 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $101 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $101 ? ($99 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0; + HEAP32[$0 >> 2] = HEAP32[$111 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$111 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$111 + 8 >> 2]; + HEAP32[$111 >> 2] = 0; + HEAP32[$111 + 4 >> 2] = 0; + HEAP32[$111 + 8 >> 2] = 0; + do if (!(HEAP8[$90 >> 0] & 1)) { + HEAP8[$90 + 1 >> 0] = 0; + HEAP8[$90 >> 0] = 0; + } else { + $118 = $85 + -40 | 0; + HEAP8[HEAP32[$118 >> 2] >> 0] = 0; + $120 = $85 + -44 | 0; + HEAP32[$120 >> 2] = 0; + $$pre$i$i$i$i = HEAP8[$90 >> 0] | 0; + if (!($$pre$i$i$i$i & 1)) { + $127 = $$pre$i$i$i$i; + $136 = 10; + } else { + $123 = HEAP32[$90 >> 2] | 0; + $127 = $123 & 255; + $136 = ($123 & -2) + -1 | 0; + } + if (!($127 & 1)) { + $130 = ($127 & 255) >>> 1; + if (($127 & 255) < 22) { + $135 = 10; + $155 = $130; + $446 = 1; + } else { + $135 = ($130 + 16 & 240) + -1 | 0; + $155 = $130; + $446 = 1; + } + } else { + $135 = 10; + $155 = 0; + $446 = 0; + } + if (($135 | 0) != ($136 | 0)) { + if (($135 | 0) == 10) { + $142 = $90 + 1 | 0; + $143 = HEAP32[$118 >> 2] | 0; + if ($446) { + _memcpy($142 | 0, $143 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0; + _free($143); + } else { + HEAP8[$142 >> 0] = HEAP8[$143 >> 0] | 0; + _free($143); + } + HEAP8[$90 >> 0] = $155 << 1; + break; + } + $139 = $135 + 1 | 0; + $140 = _malloc($139) | 0; + if (!($135 >>> 0 <= $136 >>> 0 & ($140 | 0) == 0)) { + if ($446) _memcpy($140 | 0, $90 + 1 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0; else { + $152 = HEAP32[$118 >> 2] | 0; + HEAP8[$140 >> 0] = HEAP8[$152 >> 0] | 0; + _free($152); + } + HEAP32[$90 >> 2] = $139 | 1; + HEAP32[$120 >> 2] = $155; + HEAP32[$118 >> 2] = $140; + } + } + } while (0); + HEAP32[$90 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$90 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$90 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($left$i); + $$0$i = $74; + break L107; + break; + } + default: + { + $160 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($18, $last) | 0; + if (($160 | 0) == ($18 | 0)) { + $$0$i = $first; + break L107; + } + $162 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($160, $last, $db) | 0; + if (($162 | 0) == ($160 | 0)) { + $$0$i = $first; + break L107; + } + $166 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($166 | 0)) { + $$0$i = $first; + break L107; + } + $171 = $166 + -24 | 0; + if ((HEAP8[$first + 2 >> 0] | 0) == 118) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14507) | 0; + $$0$i = $162; + break L107; + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14525) | 0; + $$0$i = $162; + break L107; + } + } + } + } else $$0$i = $first; while (0); + $$24$ph = $$0$i; + break; + } + default: + { + $191 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + $193 = HEAP32[$db + 48 >> 2] | 0; + $195 = HEAP32[$db + 52 >> 2] | 0; + if (($191 | 0) == ($first | 0)) $$24$ph = $first; else if (($191 | 0) == ($last | 0)) $$24$ph = $last; else { + switch (HEAP8[$191 >> 0] | 0) { + case 46: + case 69: + { + $$24$ph = $191; + break L6; + break; + } + default: + {} + } + $199 = HEAP8[$9 >> 0] | 0; + HEAP8[$9 >> 0] = 0; + HEAP32[$ret2 >> 2] = 0; + HEAP32[$ret2 + 4 >> 2] = 0; + HEAP32[$ret2 + 8 >> 2] = 0; + $203 = $db + 4 | 0; + $204 = HEAP32[$203 >> 2] | 0; + L11 : do if ((HEAP32[$db >> 2] | 0) != ($204 | 0)) { + $206 = $204 + -24 | 0; + $207 = HEAP8[$206 >> 0] | 0; + $209 = ($207 & 1) == 0; + if ($209) $215 = ($207 & 255) >>> 1; else $215 = HEAP32[$204 + -20 >> 2] | 0; + if ($215) { + if (!(HEAP8[$db + 60 >> 0] | 0)) { + if ($209) { + $226 = ($207 & 255) >>> 1; + $228 = $206 + 1 | 0; + } else { + $226 = HEAP32[$204 + -20 >> 2] | 0; + $228 = HEAP32[$204 + -16 >> 2] | 0; + } + if ((HEAP8[$228 + ($226 + -1) >> 0] | 0) == 62) { + if ($209) { + $$in = ($207 & 255) >>> 1; + $240 = $206 + 1 | 0; + } else { + $$in = HEAP32[$204 + -20 >> 2] | 0; + $240 = HEAP32[$204 + -16 >> 2] | 0; + } + if ((HEAP8[$240 + ($$in + -2) >> 0] | 0) == 45) { + $331 = $204; + $t$0 = $191; + } else { + if ($209) { + $$in109 = ($207 & 255) >>> 1; + $252 = $206 + 1 | 0; + } else { + $$in109 = HEAP32[$204 + -20 >> 2] | 0; + $252 = HEAP32[$204 + -16 >> 2] | 0; + } + if ((HEAP8[$252 + ($$in109 + -2) >> 0] | 0) == 62) { + $331 = $204; + $t$0 = $191; + } else { + $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($191, $last, $db) | 0; + if (($255 | 0) == ($191 | 0)) break; + $257 = HEAP32[$203 >> 2] | 0; + if ((($257 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break; + $264 = $257 + -24 | 0; + HEAP32[$ret1 >> 2] = HEAP32[$264 >> 2]; + HEAP32[$ret1 + 4 >> 2] = HEAP32[$264 + 4 >> 2]; + HEAP32[$ret1 + 8 >> 2] = HEAP32[$264 + 8 >> 2]; + HEAP32[$264 >> 2] = 0; + HEAP32[$264 + 4 >> 2] = 0; + HEAP32[$264 + 8 >> 2] = 0; + $267 = $257 + -12 | 0; + L37 : do if (!(HEAP8[$ret2 >> 0] & 1)) { + HEAP8[$ret2 + 1 >> 0] = 0; + HEAP8[$ret2 >> 0] = 0; + } else { + $272 = $ret2 + 8 | 0; + $273 = HEAP32[$272 >> 2] | 0; + HEAP8[$273 >> 0] = 0; + $274 = $ret2 + 4 | 0; + HEAP32[$274 >> 2] = 0; + $275 = HEAP32[$ret2 >> 2] | 0; + $phitmp$i$i$i$i$i$i = ($275 & -2) + -1 | 0; + $277 = $275 & 255; + do if (!($277 & 1)) { + $281 = $275 >>> 1 & 127; + if (($277 & 255) < 22) { + _memcpy($ret2 + 1 | 0, $273 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0; + _free($273); + $$ph96 = $281; + break; + } + $284 = $281 + 16 & 240; + $phitmp$i2$i$i$i$i$i = $284 + -1 | 0; + if (($phitmp$i2$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i | 0)) break L37; + $287 = _malloc($284) | 0; + if ($phitmp$i2$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i >>> 0 & ($287 | 0) == 0) break L37; + _memcpy($287 | 0, $ret2 + 1 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0; + HEAP32[$ret2 >> 2] = $284 | 1; + HEAP32[$274 >> 2] = $281; + HEAP32[$272 >> 2] = $287; + break L37; + } else { + HEAP8[$ret2 + 1 >> 0] = 0; + _free($273); + $$ph96 = 0; + } while (0); + HEAP8[$ret2 >> 0] = $$ph96 << 1; + } while (0); + HEAP32[$ret2 >> 2] = HEAP32[$267 >> 2]; + HEAP32[$ret2 + 4 >> 2] = HEAP32[$267 + 4 >> 2]; + HEAP32[$ret2 + 8 >> 2] = HEAP32[$267 + 8 >> 2]; + HEAP32[$267 >> 2] = 0; + HEAP32[$267 + 4 >> 2] = 0; + HEAP32[$267 + 8 >> 2] = 0; + $303 = HEAP8[$ret2 >> 0] | 0; + if (!((($303 & 1) == 0 ? ($303 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($ret1, 32); + $312 = HEAP32[$203 >> 2] | 0; + $313 = $312 + -24 | 0; + $315 = $312; + do { + $314 = $315 + -24 | 0; + HEAP32[$203 >> 2] = $314; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($314); + $315 = HEAP32[$203 >> 2] | 0; + } while (($315 | 0) != ($313 | 0)); + $318 = HEAP8[$ret1 >> 0] | 0; + $320 = ($318 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($312 + -48 | 0, 0, $320 ? $ret1 + 1 | 0 : HEAP32[$ret1 + 8 >> 2] | 0, $320 ? ($318 & 255) >>> 1 : HEAP32[$ret1 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret1); + $331 = HEAP32[$203 >> 2] | 0; + $t$0 = $255; + } + } + } else { + $331 = $204; + $t$0 = $191; + } + } else { + $331 = $204; + $t$0 = $191; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($331 + -24 | 0, 40); + if (($t$0 | 0) == ($last | 0)) label = 105; else if ((HEAP8[$t$0 >> 0] | 0) == 118) { + $413 = HEAP32[$db >> 2] | 0; + $414 = HEAP32[$203 >> 2] | 0; + $t$2 = $t$0 + 1 | 0; + } else label = 105; + L60 : do if ((label | 0) == 105) { + $335 = $tmp + 4 | 0; + $336 = $4 + 8 | 0; + $337 = $4 + 1 | 0; + $338 = $4 + 4 | 0; + $339 = $tmp + 8 | 0; + $340 = $tmp + 1 | 0; + $341 = $tmp + 4 | 0; + $342 = $tmp + 8 | 0; + $first_arg$0$off0$ph = 1; + $t$1$ph = $t$0; + while (1) { + $345 = HEAP32[$203 >> 2] | 0; + $347 = HEAP32[$db >> 2] | 0; + $t$1 = $t$1$ph; + while (1) { + $349 = ($345 - $347 | 0) / 24 | 0; + $350 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1, $last, $db) | 0; + $345 = HEAP32[$203 >> 2] | 0; + $347 = HEAP32[$db >> 2] | 0; + $356 = ($345 - $347 | 0) / 24 | 0; + if (($350 | 0) == ($t$1 | 0)) { + $413 = $347; + $414 = $345; + $t$2 = $t$1; + break L60; + } + if ($356 >>> 0 > $349 >>> 0) { + $$lcssa150 = $349; + $$lcssa151 = $350; + $$lcssa156 = $356; + break; + } else $t$1 = $350; + } + HEAP32[$tmp >> 2] = 0; + HEAP32[$341 >> 2] = 0; + HEAP32[$342 >> 2] = 0; + if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) { + $k$0121 = $$lcssa150; + do { + $361 = HEAP8[$tmp >> 0] | 0; + if ((($361 & 1) == 0 ? ($361 & 255) >>> 1 : HEAP32[$335 >> 2] | 0) | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($tmp, 12716) | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0121 * 24 | 0) | 0); + $371 = HEAP8[$4 >> 0] | 0; + $373 = ($371 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($tmp, $373 ? $337 : HEAP32[$336 >> 2] | 0, $373 ? ($371 & 255) >>> 1 : HEAP32[$338 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + $k$0121 = $k$0121 + 1 | 0; + } while ($k$0121 >>> 0 < $$lcssa156 >>> 0); + } + if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) { + $k2$0122 = $$lcssa150; + do { + $382 = HEAP32[$203 >> 2] | 0; + $383 = $382 + -24 | 0; + $385 = $382; + do { + $384 = $385 + -24 | 0; + HEAP32[$203 >> 2] = $384; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($384); + $385 = HEAP32[$203 >> 2] | 0; + } while (($385 | 0) != ($383 | 0)); + $k2$0122 = $k2$0122 + 1 | 0; + } while ($k2$0122 >>> 0 < $$lcssa156 >>> 0); + } + $389 = HEAP8[$tmp >> 0] | 0; + $392 = HEAP32[$335 >> 2] | 0; + if (!((($389 & 1) == 0 ? ($389 & 255) >>> 1 : $392) | 0)) $first_arg$3$off0$ph = $first_arg$0$off0$ph; else { + $398 = HEAP32[$203 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($398 | 0)) break; + if ($first_arg$0$off0$ph) { + $402 = $398; + $404 = $389; + $411 = $392; + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($398 + -24 | 0, 12716) | 0; + $402 = HEAP32[$203 >> 2] | 0; + $404 = HEAP8[$tmp >> 0] | 0; + $411 = HEAP32[$335 >> 2] | 0; + } + $405 = ($404 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($402 + -24 | 0, $405 ? $340 : HEAP32[$339 >> 2] | 0, $405 ? ($404 & 255) >>> 1 : $411) | 0; + $first_arg$3$off0$ph = 0; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp); + $first_arg$0$off0$ph = $first_arg$3$off0$ph; + $t$1$ph = $$lcssa151; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp); + break L11; + } while (0); + if (($413 | 0) != ($414 | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($414 + -24 | 0, 41); + if ($193 & 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12669) | 0; + if ($193 & 2) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12676) | 0; + if ($193 & 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12686) | 0; + switch ($195 | 0) { + case 1: + { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12719) | 0; + break; + } + case 2: + { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12722) | 0; + break; + } + default: + {} + } + $434 = HEAP8[$ret2 >> 0] | 0; + $436 = ($434 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$203 >> 2] | 0) + -24 | 0, $436 ? $ret2 + 1 | 0 : HEAP32[$ret2 + 8 >> 2] | 0, $436 ? ($434 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2); + HEAP8[$9 >> 0] = $199; + $$24$ph = $t$2; + break L6; + } + } + } while (0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2); + HEAP8[$9 >> 0] = $10; + HEAP32[$6 >> 2] = $7; + $$7 = $first; + break L1; + } + } + } while (0); + HEAP8[$9 >> 0] = $10; + HEAP32[$6 >> 2] = $7; + $$7 = $$24$ph; + } while (0); + STACKTOP = sp; + return $$7 | 0; +} + +function _vfscanf($f, $fmt, $ap) { + $f = $f | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + var $$ = 0, $$lcssa = 0, $$lcssa38 = 0, $$lcssa384 = 0, $$pre = 0, $$pre$phi182Z2D = 0, $$pre170 = 0, $$pre178 = 0, $$size$0 = 0, $0 = 0, $10 = 0, $104 = 0, $105 = 0, $107 = 0, $109 = 0, $11 = 0, $112 = 0, $115 = 0, $117 = 0, $12 = 0, $125 = 0, $129 = 0, $13 = 0, $136 = 0, $14 = 0, $141 = 0, $145 = 0, $15 = 0, $150 = 0, $151 = 0, $157 = 0, $160 = 0, $164 = 0, $166 = 0, $168 = 0, $17 = 0, $173 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $181 = 0, $186 = 0, $190 = 0, $195 = 0, $196 = 0, $197 = 0, $199 = 0, $20 = 0, $201 = 0, $202 = 0, $210 = 0, $220 = 0, $222 = 0, $226 = 0, $228 = 0, $236 = 0, $244 = 0, $245 = 0, $248 = 0, $25 = 0, $250 = 0, $256 = 0, $263 = 0, $265 = 0, $271 = 0, $277 = 0, $281 = 0, $284 = 0, $291 = 0, $306 = 0, $310 = 0.0, $32 = 0, $334 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $51 = 0, $52 = 0, $62 = 0, $7 = 0, $8 = 0, $81 = 0, $82 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $alloc$0 = 0, $alloc$0400 = 0, $alloc$1 = 0, $alloc$2 = 0, $ap2$i = 0, $base$0 = 0, $c$0100 = 0, $dest$0 = 0, $i$0$i = 0, $i$0$ph = 0, $i$0$ph$phi = 0, $i$0$ph20 = 0, $i$0$ph20$lcssa = 0, $i$1 = 0, $i$2 = 0, $i$2$ph = 0, $i$2$ph$phi = 0, $i$3 = 0, $i$4 = 0, $invert$0 = 0, $isdigittmp = 0, $k$0$ph = 0, $k$1$ph = 0, $matches$0104 = 0, $matches$0104$lcssa = 0, $matches$0104376 = 0, $matches$1 = 0, $matches$2 = 0, $matches$3 = 0, $p$0109 = 0, $p$1 = 0, $p$1$lcssa = 0, $p$10 = 0, $p$11 = 0, $p$2 = 0, $p$3$lcssa = 0, $p$396 = 0, $p$4 = 0, $p$5 = 0, $p$6 = 0, $p$7 = 0, $p$7$ph = 0, $p$8 = 0, $p$9 = 0, $pos$0108 = 0, $pos$1 = 0, $pos$2 = 0, $s$0107 = 0, $s$0107$lcssa = 0, $s$1 = 0, $s$2$ph = 0, $s$3 = 0, $s$4 = 0, $s$5 = 0, $s$6 = 0, $s$7 = 0, $s$8 = 0, $scanset = 0, $size$0 = 0, $st = 0, $wc = 0, $wcs$0103 = 0, $wcs$0103$lcssa = 0, $wcs$1 = 0, $wcs$2 = 0, $wcs$3$ph = 0, $wcs$3$ph$lcssa = 0, $wcs$4 = 0, $wcs$5 = 0, $wcs$6 = 0, $wcs$7 = 0, $wcs$8 = 0, $wcs$9 = 0, $width$0$lcssa = 0, $width$097 = 0, $width$1 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 304 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ap2$i = sp + 16 | 0; + $st = sp + 8 | 0; + $scanset = sp + 33 | 0; + $wc = sp; + $0 = sp + 32 | 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) $334 = ___lockfile($f) | 0; else $334 = 0; + $5 = HEAP8[$fmt >> 0] | 0; + L4 : do if (!($5 << 24 >> 24)) $matches$3 = 0; else { + $7 = $f + 4 | 0; + $8 = $f + 100 | 0; + $9 = $f + 108 | 0; + $10 = $f + 8 | 0; + $11 = $scanset + 10 | 0; + $12 = $scanset + 33 | 0; + $13 = $st + 4 | 0; + $14 = $scanset + 46 | 0; + $15 = $scanset + 94 | 0; + $17 = $5; + $matches$0104 = 0; + $p$0109 = $fmt; + $pos$0108 = 0; + $s$0107 = 0; + $wcs$0103 = 0; + L6 : while (1) { + L8 : do if (!(_isspace($17 & 255) | 0)) { + $47 = (HEAP8[$p$0109 >> 0] | 0) == 37; + L10 : do if ($47) { + $48 = $p$0109 + 1 | 0; + $49 = HEAP8[$48 >> 0] | 0; + L12 : do switch ($49 << 24 >> 24) { + case 37: + { + break L10; + break; + } + case 42: + { + $dest$0 = 0; + $p$2 = $p$0109 + 2 | 0; + break; + } + default: + { + $isdigittmp = ($49 & 255) + -48 | 0; + if ($isdigittmp >>> 0 < 10) if ((HEAP8[$p$0109 + 2 >> 0] | 0) == 36) { + HEAP32[$ap2$i >> 2] = HEAP32[$ap >> 2]; + $i$0$i = $isdigittmp; + while (1) { + $81 = (HEAP32[$ap2$i >> 2] | 0) + (4 - 1) & ~(4 - 1); + $82 = HEAP32[$81 >> 2] | 0; + HEAP32[$ap2$i >> 2] = $81 + 4; + if ($i$0$i >>> 0 > 1) $i$0$i = $i$0$i + -1 | 0; else { + $$lcssa = $82; + break; + } + } + $dest$0 = $$lcssa; + $p$2 = $p$0109 + 3 | 0; + break L12; + } + $90 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $91 = HEAP32[$90 >> 2] | 0; + HEAP32[$ap >> 2] = $90 + 4; + $dest$0 = $91; + $p$2 = $48; + } + } while (0); + $92 = HEAP8[$p$2 >> 0] | 0; + $93 = $92 & 255; + if (($93 + -48 | 0) >>> 0 < 10) { + $97 = $93; + $p$396 = $p$2; + $width$097 = 0; + while (1) { + $96 = ($width$097 * 10 | 0) + -48 + $97 | 0; + $98 = $p$396 + 1 | 0; + $99 = HEAP8[$98 >> 0] | 0; + $97 = $99 & 255; + if (($97 + -48 | 0) >>> 0 >= 10) { + $$lcssa38 = $99; + $p$3$lcssa = $98; + $width$0$lcssa = $96; + break; + } else { + $p$396 = $98; + $width$097 = $96; + } + } + } else { + $$lcssa38 = $92; + $p$3$lcssa = $p$2; + $width$0$lcssa = 0; + } + if ($$lcssa38 << 24 >> 24 == 109) { + $104 = $p$3$lcssa + 1 | 0; + $107 = HEAP8[$104 >> 0] | 0; + $alloc$0 = ($dest$0 | 0) != 0 & 1; + $p$4 = $104; + $s$1 = 0; + $wcs$1 = 0; + } else { + $107 = $$lcssa38; + $alloc$0 = 0; + $p$4 = $p$3$lcssa; + $s$1 = $s$0107; + $wcs$1 = $wcs$0103; + } + $105 = $p$4 + 1 | 0; + switch ($107 & 255 | 0) { + case 104: + { + $109 = (HEAP8[$105 >> 0] | 0) == 104; + $p$5 = $109 ? $p$4 + 2 | 0 : $105; + $size$0 = $109 ? -2 : -1; + break; + } + case 108: + { + $112 = (HEAP8[$105 >> 0] | 0) == 108; + $p$5 = $112 ? $p$4 + 2 | 0 : $105; + $size$0 = $112 ? 3 : 1; + break; + } + case 106: + { + $p$5 = $105; + $size$0 = 3; + break; + } + case 116: + case 122: + { + $p$5 = $105; + $size$0 = 1; + break; + } + case 76: + { + $p$5 = $105; + $size$0 = 2; + break; + } + case 110: + case 112: + case 67: + case 83: + case 91: + case 99: + case 115: + case 88: + case 71: + case 70: + case 69: + case 65: + case 103: + case 102: + case 101: + case 97: + case 120: + case 117: + case 111: + case 105: + case 100: + { + $p$5 = $p$4; + $size$0 = 0; + break; + } + default: + { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = $s$1; + $wcs$7 = $wcs$1; + label = 152; + break L6; + } + } + $115 = HEAPU8[$p$5 >> 0] | 0; + $117 = ($115 & 47 | 0) == 3; + $$ = $117 ? $115 | 32 : $115; + $$size$0 = $117 ? 1 : $size$0; + switch ($$ | 0) { + case 99: + { + $pos$1 = $pos$0108; + $width$1 = ($width$0$lcssa | 0) < 1 ? 1 : $width$0$lcssa; + break; + } + case 91: + { + $pos$1 = $pos$0108; + $width$1 = $width$0$lcssa; + break; + } + case 110: + { + if (!$dest$0) { + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + } + switch ($$size$0 | 0) { + case -2: + { + HEAP8[$dest$0 >> 0] = $pos$0108; + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + break; + } + case -1: + { + HEAP16[$dest$0 >> 1] = $pos$0108; + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + break; + } + case 0: + { + HEAP32[$dest$0 >> 2] = $pos$0108; + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + break; + } + case 1: + { + HEAP32[$dest$0 >> 2] = $pos$0108; + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + break; + } + case 3: + { + $125 = $dest$0; + HEAP32[$125 >> 2] = $pos$0108; + HEAP32[$125 + 4 >> 2] = (($pos$0108 | 0) < 0) << 31 >> 31; + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + break; + } + default: + { + $matches$1 = $matches$0104; + $p$11 = $p$5; + $pos$2 = $pos$0108; + $s$5 = $s$1; + $wcs$6 = $wcs$1; + break L8; + } + } + break; + } + default: + { + ___shlim($f, 0); + do { + $129 = HEAP32[$7 >> 2] | 0; + if ($129 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) { + HEAP32[$7 >> 2] = $129 + 1; + $136 = HEAPU8[$129 >> 0] | 0; + } else $136 = ___shgetc($f) | 0; + } while ((_isspace($136) | 0) != 0); + $$pre170 = HEAP32[$7 >> 2] | 0; + if (!(HEAP32[$8 >> 2] | 0)) $145 = $$pre170; else { + $141 = $$pre170 + -1 | 0; + HEAP32[$7 >> 2] = $141; + $145 = $141; + } + $pos$1 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $145 - (HEAP32[$10 >> 2] | 0) | 0; + $width$1 = $width$0$lcssa; + } + } + ___shlim($f, $width$1); + $150 = HEAP32[$7 >> 2] | 0; + $151 = HEAP32[$8 >> 2] | 0; + if ($150 >>> 0 < $151 >>> 0) { + HEAP32[$7 >> 2] = $150 + 1; + $157 = $151; + } else { + if ((___shgetc($f) | 0) < 0) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = $s$1; + $wcs$7 = $wcs$1; + label = 152; + break L6; + } + $157 = HEAP32[$8 >> 2] | 0; + } + if ($157) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1; + L67 : do switch ($$ | 0) { + case 91: + case 99: + case 115: + { + $160 = ($$ | 0) == 99; + L69 : do if (($$ & 239 | 0) == 99) { + _memset($scanset | 0, -1, 257) | 0; + HEAP8[$scanset >> 0] = 0; + if (($$ | 0) == 115) { + HEAP8[$12 >> 0] = 0; + HEAP8[$11 >> 0] = 0; + HEAP8[$11 + 1 >> 0] = 0; + HEAP8[$11 + 2 >> 0] = 0; + HEAP8[$11 + 3 >> 0] = 0; + HEAP8[$11 + 4 >> 0] = 0; + $p$9 = $p$5; + } else $p$9 = $p$5; + } else { + $164 = $p$5 + 1 | 0; + $166 = (HEAP8[$164 >> 0] | 0) == 94; + $invert$0 = $166 & 1; + $168 = $166 ? $164 : $p$5; + $p$6 = $166 ? $p$5 + 2 | 0 : $164; + _memset($scanset | 0, $166 & 1 | 0, 257) | 0; + HEAP8[$scanset >> 0] = 0; + switch (HEAP8[$p$6 >> 0] | 0) { + case 45: + { + $173 = ($invert$0 ^ 1) & 255; + HEAP8[$14 >> 0] = $173; + $$pre$phi182Z2D = $173; + $p$7$ph = $168 + 2 | 0; + break; + } + case 93: + { + $176 = ($invert$0 ^ 1) & 255; + HEAP8[$15 >> 0] = $176; + $$pre$phi182Z2D = $176; + $p$7$ph = $168 + 2 | 0; + break; + } + default: + { + $$pre$phi182Z2D = ($invert$0 ^ 1) & 255; + $p$7$ph = $p$6; + } + } + $p$7 = $p$7$ph; + while (1) { + $177 = HEAP8[$p$7 >> 0] | 0; + L80 : do switch ($177 << 24 >> 24) { + case 0: + { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = $s$1; + $wcs$7 = $wcs$1; + label = 152; + break L6; + break; + } + case 93: + { + $p$9 = $p$7; + break L69; + break; + } + case 45: + { + $178 = $p$7 + 1 | 0; + $179 = HEAP8[$178 >> 0] | 0; + switch ($179 << 24 >> 24) { + case 93: + case 0: + { + $190 = 45; + $p$8 = $p$7; + break L80; + break; + } + default: + {} + } + $181 = HEAP8[$p$7 + -1 >> 0] | 0; + if (($181 & 255) < ($179 & 255)) { + $c$0100 = $181 & 255; + do { + $c$0100 = $c$0100 + 1 | 0; + HEAP8[$scanset + $c$0100 >> 0] = $$pre$phi182Z2D; + $186 = HEAP8[$178 >> 0] | 0; + } while (($c$0100 | 0) < ($186 & 255 | 0)); + $190 = $186; + $p$8 = $178; + } else { + $190 = $179; + $p$8 = $178; + } + break; + } + default: + { + $190 = $177; + $p$8 = $p$7; + } + } while (0); + HEAP8[$scanset + (($190 & 255) + 1) >> 0] = $$pre$phi182Z2D; + $p$7 = $p$8 + 1 | 0; + } + } while (0); + $195 = $160 ? $width$1 + 1 | 0 : 31; + $196 = ($$size$0 | 0) == 1; + $197 = ($alloc$0 | 0) != 0; + L88 : do if ($196) { + if ($197) { + $199 = _malloc($195 << 2) | 0; + if (!$199) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = 0; + $wcs$7 = $199; + label = 152; + break L6; + } else $wcs$2 = $199; + } else $wcs$2 = $dest$0; + HEAP32[$st >> 2] = 0; + HEAP32[$13 >> 2] = 0; + $i$0$ph = 0; + $k$0$ph = $195; + $wcs$3$ph = $wcs$2; + L94 : while (1) { + $201 = ($wcs$3$ph | 0) == 0; + $i$0$ph20 = $i$0$ph; + while (1) { + L98 : while (1) { + $202 = HEAP32[$7 >> 2] | 0; + if ($202 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) { + HEAP32[$7 >> 2] = $202 + 1; + $210 = HEAPU8[$202 >> 0] | 0; + } else $210 = ___shgetc($f) | 0; + if (!(HEAP8[$scanset + ($210 + 1) >> 0] | 0)) { + $i$0$ph20$lcssa = $i$0$ph20; + $wcs$3$ph$lcssa = $wcs$3$ph; + break L94; + } + HEAP8[$0 >> 0] = $210; + switch (_mbrtowc($wc, $0, 1, $st) | 0) { + case -1: + { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = 0; + $wcs$7 = $wcs$3$ph; + label = 152; + break L6; + break; + } + case -2: + break; + default: + break L98; + } + } + if ($201) $i$1 = $i$0$ph20; else { + HEAP32[$wcs$3$ph + ($i$0$ph20 << 2) >> 2] = HEAP32[$wc >> 2]; + $i$1 = $i$0$ph20 + 1 | 0; + } + if ($197 & ($i$1 | 0) == ($k$0$ph | 0)) break; else $i$0$ph20 = $i$1; + } + $220 = $k$0$ph << 1 | 1; + $222 = _realloc($wcs$3$ph, $220 << 2) | 0; + if (!$222) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = 0; + $wcs$7 = $wcs$3$ph; + label = 152; + break L6; + } + $i$0$ph$phi = $k$0$ph; + $k$0$ph = $220; + $wcs$3$ph = $222; + $i$0$ph = $i$0$ph$phi; + } + if (!(_mbsinit($st) | 0)) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = 0; + $wcs$7 = $wcs$3$ph$lcssa; + label = 152; + break L6; + } else { + $i$4 = $i$0$ph20$lcssa; + $s$3 = 0; + $wcs$4 = $wcs$3$ph$lcssa; + } + } else { + if ($197) { + $226 = _malloc($195) | 0; + if (!$226) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = 0; + $wcs$7 = 0; + label = 152; + break L6; + } else { + $i$2$ph = 0; + $k$1$ph = $195; + $s$2$ph = $226; + } + while (1) { + $i$2 = $i$2$ph; + do { + $228 = HEAP32[$7 >> 2] | 0; + if ($228 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) { + HEAP32[$7 >> 2] = $228 + 1; + $236 = HEAPU8[$228 >> 0] | 0; + } else $236 = ___shgetc($f) | 0; + if (!(HEAP8[$scanset + ($236 + 1) >> 0] | 0)) { + $i$4 = $i$2; + $s$3 = $s$2$ph; + $wcs$4 = 0; + break L88; + } + HEAP8[$s$2$ph + $i$2 >> 0] = $236; + $i$2 = $i$2 + 1 | 0; + } while (($i$2 | 0) != ($k$1$ph | 0)); + $244 = $k$1$ph << 1 | 1; + $245 = _realloc($s$2$ph, $244) | 0; + if (!$245) { + $alloc$0400 = $alloc$0; + $matches$0104376 = $matches$0104; + $s$6 = $s$2$ph; + $wcs$7 = 0; + label = 152; + break L6; + } else { + $i$2$ph$phi = $k$1$ph; + $k$1$ph = $244; + $s$2$ph = $245; + $i$2$ph = $i$2$ph$phi; + } + } + } + if (!$dest$0) { + $265 = $157; + while (1) { + $263 = HEAP32[$7 >> 2] | 0; + if ($263 >>> 0 < $265 >>> 0) { + HEAP32[$7 >> 2] = $263 + 1; + $271 = HEAPU8[$263 >> 0] | 0; + } else $271 = ___shgetc($f) | 0; + if (!(HEAP8[$scanset + ($271 + 1) >> 0] | 0)) { + $i$4 = 0; + $s$3 = 0; + $wcs$4 = 0; + break L88; + } + $265 = HEAP32[$8 >> 2] | 0; + } + } else { + $250 = $157; + $i$3 = 0; + while (1) { + $248 = HEAP32[$7 >> 2] | 0; + if ($248 >>> 0 < $250 >>> 0) { + HEAP32[$7 >> 2] = $248 + 1; + $256 = HEAPU8[$248 >> 0] | 0; + } else $256 = ___shgetc($f) | 0; + if (!(HEAP8[$scanset + ($256 + 1) >> 0] | 0)) { + $i$4 = $i$3; + $s$3 = $dest$0; + $wcs$4 = 0; + break L88; + } + HEAP8[$dest$0 + $i$3 >> 0] = $256; + $250 = HEAP32[$8 >> 2] | 0; + $i$3 = $i$3 + 1 | 0; + } + } + } while (0); + $$pre178 = HEAP32[$7 >> 2] | 0; + if (!(HEAP32[$8 >> 2] | 0)) $281 = $$pre178; else { + $277 = $$pre178 + -1 | 0; + HEAP32[$7 >> 2] = $277; + $281 = $277; + } + $284 = $281 - (HEAP32[$10 >> 2] | 0) + (HEAP32[$9 >> 2] | 0) | 0; + if (!$284) { + $alloc$2 = $alloc$0; + $matches$2 = $matches$0104; + $s$8 = $s$3; + $wcs$9 = $wcs$4; + break L6; + } + if (!(($284 | 0) == ($width$1 | 0) | $160 ^ 1)) { + $alloc$2 = $alloc$0; + $matches$2 = $matches$0104; + $s$8 = $s$3; + $wcs$9 = $wcs$4; + break L6; + } + do if ($197) if ($196) { + HEAP32[$dest$0 >> 2] = $wcs$4; + break; + } else { + HEAP32[$dest$0 >> 2] = $s$3; + break; + } while (0); + if ($160) { + $p$10 = $p$9; + $s$4 = $s$3; + $wcs$5 = $wcs$4; + } else { + if ($wcs$4) HEAP32[$wcs$4 + ($i$4 << 2) >> 2] = 0; + if (!$s$3) { + $p$10 = $p$9; + $s$4 = 0; + $wcs$5 = $wcs$4; + break L67; + } + HEAP8[$s$3 + $i$4 >> 0] = 0; + $p$10 = $p$9; + $s$4 = $s$3; + $wcs$5 = $wcs$4; + } + break; + } + case 120: + case 88: + case 112: + { + $base$0 = 16; + label = 134; + break; + } + case 111: + { + $base$0 = 8; + label = 134; + break; + } + case 117: + case 100: + { + $base$0 = 10; + label = 134; + break; + } + case 105: + { + $base$0 = 0; + label = 134; + break; + } + case 71: + case 103: + case 70: + case 102: + case 69: + case 101: + case 65: + case 97: + { + $310 = +___floatscan($f, $$size$0, 0); + if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) { + $alloc$2 = $alloc$0; + $matches$2 = $matches$0104; + $s$8 = $s$1; + $wcs$9 = $wcs$1; + break L6; + } + if (!$dest$0) { + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + } else switch ($$size$0 | 0) { + case 0: + { + HEAPF32[$dest$0 >> 2] = $310; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L67; + break; + } + case 1: + { + HEAPF64[$dest$0 >> 3] = $310; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L67; + break; + } + case 2: + { + HEAPF64[$dest$0 >> 3] = $310; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L67; + break; + } + default: + { + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L67; + } + } + break; + } + default: + { + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + } + } while (0); + L168 : do if ((label | 0) == 134) { + label = 0; + $291 = ___intscan($f, $base$0, 0, -1, -1) | 0; + if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) { + $alloc$2 = $alloc$0; + $matches$2 = $matches$0104; + $s$8 = $s$1; + $wcs$9 = $wcs$1; + break L6; + } + if (($dest$0 | 0) != 0 & ($$ | 0) == 112) { + HEAP32[$dest$0 >> 2] = $291; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break; + } + if (!$dest$0) { + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + } else switch ($$size$0 | 0) { + case -2: + { + HEAP8[$dest$0 >> 0] = $291; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + break; + } + case -1: + { + HEAP16[$dest$0 >> 1] = $291; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + break; + } + case 0: + { + HEAP32[$dest$0 >> 2] = $291; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + break; + } + case 1: + { + HEAP32[$dest$0 >> 2] = $291; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + break; + } + case 3: + { + $306 = $dest$0; + HEAP32[$306 >> 2] = $291; + HEAP32[$306 + 4 >> 2] = tempRet0; + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + break; + } + default: + { + $p$10 = $p$5; + $s$4 = $s$1; + $wcs$5 = $wcs$1; + break L168; + } + } + } while (0); + $matches$1 = (($dest$0 | 0) != 0 & 1) + $matches$0104 | 0; + $p$11 = $p$10; + $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$1 + (HEAP32[$7 >> 2] | 0) - (HEAP32[$10 >> 2] | 0) | 0; + $s$5 = $s$4; + $wcs$6 = $wcs$5; + break L8; + } while (0); + $51 = $p$0109 + ($47 & 1) | 0; + ___shlim($f, 0); + $52 = HEAP32[$7 >> 2] | 0; + if ($52 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) { + HEAP32[$7 >> 2] = $52 + 1; + $62 = HEAPU8[$52 >> 0] | 0; + } else $62 = ___shgetc($f) | 0; + if (($62 | 0) != (HEAPU8[$51 >> 0] | 0)) { + $$lcssa384 = $62; + $matches$0104$lcssa = $matches$0104; + $s$0107$lcssa = $s$0107; + $wcs$0103$lcssa = $wcs$0103; + label = 21; + break L6; + } + $matches$1 = $matches$0104; + $p$11 = $51; + $pos$2 = $pos$0108 + 1 | 0; + $s$5 = $s$0107; + $wcs$6 = $wcs$0103; + } else { + $p$1 = $p$0109; + while (1) { + $20 = $p$1 + 1 | 0; + if (!(_isspace(HEAPU8[$20 >> 0] | 0) | 0)) { + $p$1$lcssa = $p$1; + break; + } else $p$1 = $20; + } + ___shlim($f, 0); + do { + $25 = HEAP32[$7 >> 2] | 0; + if ($25 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) { + HEAP32[$7 >> 2] = $25 + 1; + $32 = HEAPU8[$25 >> 0] | 0; + } else $32 = ___shgetc($f) | 0; + } while ((_isspace($32) | 0) != 0); + $$pre = HEAP32[$7 >> 2] | 0; + if (!(HEAP32[$8 >> 2] | 0)) $41 = $$pre; else { + $37 = $$pre + -1 | 0; + HEAP32[$7 >> 2] = $37; + $41 = $37; + } + $matches$1 = $matches$0104; + $p$11 = $p$1$lcssa; + $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $41 - (HEAP32[$10 >> 2] | 0) | 0; + $s$5 = $s$0107; + $wcs$6 = $wcs$0103; + } while (0); + $p$0109 = $p$11 + 1 | 0; + $17 = HEAP8[$p$0109 >> 0] | 0; + if (!($17 << 24 >> 24)) { + $matches$3 = $matches$1; + break L4; + } else { + $matches$0104 = $matches$1; + $pos$0108 = $pos$2; + $s$0107 = $s$5; + $wcs$0103 = $wcs$6; + } + } + if ((label | 0) == 21) { + if (HEAP32[$8 >> 2] | 0) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1; + if (($matches$0104$lcssa | 0) != 0 | ($$lcssa384 | 0) > -1) { + $matches$3 = $matches$0104$lcssa; + break; + } else { + $alloc$1 = 0; + $s$7 = $s$0107$lcssa; + $wcs$8 = $wcs$0103$lcssa; + label = 153; + } + } else if ((label | 0) == 152) if (!$matches$0104376) { + $alloc$1 = $alloc$0400; + $s$7 = $s$6; + $wcs$8 = $wcs$7; + label = 153; + } else { + $alloc$2 = $alloc$0400; + $matches$2 = $matches$0104376; + $s$8 = $s$6; + $wcs$9 = $wcs$7; + } + if ((label | 0) == 153) { + $alloc$2 = $alloc$1; + $matches$2 = -1; + $s$8 = $s$7; + $wcs$9 = $wcs$8; + } + if (!$alloc$2) $matches$3 = $matches$2; else { + _free($s$8); + _free($wcs$9); + $matches$3 = $matches$2; + } + } while (0); + if ($334) ___unlockfile($f); + STACKTOP = sp; + return $matches$3 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i6 = 0, $$0$i$i$i18$i = 0, $$0$i$i$i7$i = 0, $$0$i$i49 = 0, $$03$i = 0, $$1$i9 = 0, $$lcssa = 0, $$ph26 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $121 = 0, $13 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $140 = 0, $141 = 0, $143 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $157 = 0, $159 = 0, $162 = 0, $163 = 0, $165 = 0, $171 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $191 = 0, $193 = 0, $194 = 0, $196 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $207 = 0, $217 = 0, $218 = 0, $22 = 0, $220 = 0, $224 = 0, $227 = 0, $230 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $248 = 0, $252 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $268 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $277 = 0, $283 = 0, $284 = 0, $285 = 0, $29 = 0, $292 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $304 = 0, $31 = 0, $312 = 0, $318 = 0, $32 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $341 = 0, $36 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $50 = 0, $53 = 0, $55 = 0, $6 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $69 = 0, $7 = 0, $71 = 0, $74 = 0, $75 = 0, $87 = 0, $88 = 0, $90 = 0, $97 = 0, $98 = 0, $99 = 0, $__p$0$i$i = 0, $__p$1$i$i48 = 0, $__v$i$i17$i = 0, $phitmp$i$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i$i = 0, $t0$0$i = 0, $t01$0$i = 0, $t01$0$i$lcssa67 = 0, $t01$1$i = 0, $t01$2$i = 0, $t1$0$i$lcssa = 0, $t1$0$i45 = 0, $t13$0$i$lcssa = 0, $t13$0$i51 = 0, $tmp$i = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 128 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i17$i = sp + 104 | 0; + $0 = sp + 80 | 0; + $1 = sp + 64 | 0; + $2 = sp + 40 | 0; + $3 = sp + 24 | 0; + $tmp$i = sp + 12 | 0; + $4 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else { + $6 = HEAP8[$first >> 0] | 0; + $7 = $6 << 24 >> 24; + switch ($7 | 0) { + case 68: + case 67: + { + L6 : do if (($last - $first | 0) > 1) { + $13 = $db + 4 | 0; + $14 = HEAP32[$13 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($14 | 0)) $$03$i = $first; else switch ($7 | 0) { + case 67: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 53: + case 51: + case 50: + case 49: + break; + default: + { + $$03$i = $first; + break L6; + } + } + __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($1, $14 + -24 | 0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + $20 = HEAP32[$13 >> 2] | 0; + $22 = HEAP32[$db + 8 >> 2] | 0; + if ($20 >>> 0 < $22 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($20, $0); + HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24; + } else { + $29 = HEAP32[$db >> 2] | 0; + $30 = $20 - $29 | 0; + $31 = ($30 | 0) / 24 | 0; + $32 = $31 + 1 | 0; + if (($30 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $36 = ($22 - $29 | 0) / 24 | 0; + if ($36 >>> 0 < 1073741823) { + $38 = $36 << 1; + $$0$i$i$i$i = $38 >>> 0 < $32 >>> 0 ? $32 : $38; + } else $$0$i$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i, $31, $db + 12 | 0); + $41 = $__v$i$i17$i + 8 | 0; + $42 = HEAP32[$41 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $0); + HEAP32[$41 >> 2] = $42 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + HEAP8[$db + 60 >> 0] = 1; + $$03$i = $first + 2 | 0; + break L6; + break; + } + case 68: + { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 53: + case 50: + case 49: + case 48: + break; + default: + { + $$03$i = $first; + break L6; + } + } + __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($tmp$i, $14 + -24 | 0); + $50 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($tmp$i, 0, 12928) | 0; + HEAP32[$3 >> 2] = HEAP32[$50 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$50 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$50 + 8 >> 2]; + HEAP32[$50 >> 2] = 0; + HEAP32[$50 + 4 >> 2] = 0; + HEAP32[$50 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3); + $53 = HEAP32[$13 >> 2] | 0; + $55 = HEAP32[$db + 8 >> 2] | 0; + if ($53 >>> 0 < $55 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($53, $2); + HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24; + } else { + $62 = HEAP32[$db >> 2] | 0; + $63 = $53 - $62 | 0; + $64 = ($63 | 0) / 24 | 0; + $65 = $64 + 1 | 0; + if (($63 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $69 = ($55 - $62 | 0) / 24 | 0; + if ($69 >>> 0 < 1073741823) { + $71 = $69 << 1; + $$0$i$i$i7$i = $71 >>> 0 < $65 >>> 0 ? $65 : $71; + } else $$0$i$i$i7$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i7$i, $64, $db + 12 | 0); + $74 = $__v$i$i17$i + 8 | 0; + $75 = HEAP32[$74 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($75, $2); + HEAP32[$74 >> 2] = $75 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i); + HEAP8[$db + 60 >> 0] = 1; + $$03$i = $first + 2 | 0; + break L6; + break; + } + default: + { + $$03$i = $first; + break L6; + } + } + } else $$03$i = $first; while (0); + $$0 = $$03$i; + break L1; + break; + } + case 85: + { + L36 : do if (($last - $first | 0) > 2 & $6 << 24 >> 24 == 85) { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 116: + { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($1, 12930, 8); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + $87 = $db + 4 | 0; + $88 = HEAP32[$87 >> 2] | 0; + $90 = HEAP32[$db + 8 >> 2] | 0; + if ($88 >>> 0 < $90 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($88, $0); + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 24; + } else { + $97 = HEAP32[$db >> 2] | 0; + $98 = $88 - $97 | 0; + $99 = ($98 | 0) / 24 | 0; + $100 = $99 + 1 | 0; + if (($98 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $104 = ($90 - $97 | 0) / 24 | 0; + if ($104 >>> 0 < 1073741823) { + $106 = $104 << 1; + $$0$i$i$i$i6 = $106 >>> 0 < $100 >>> 0 ? $100 : $106; + } else $$0$i$i$i$i6 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i6, $99, $db + 12 | 0); + $109 = $__v$i$i17$i + 8 | 0; + $110 = HEAP32[$109 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($110, $0); + HEAP32[$109 >> 2] = $110 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + $112 = $first + 2 | 0; + if (($112 | 0) == ($last | 0)) { + $114 = HEAP32[$87 >> 2] | 0; + $115 = $114 + -24 | 0; + $117 = $114; + while (1) { + $116 = $117 + -24 | 0; + HEAP32[$87 >> 2] = $116; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($116); + $117 = HEAP32[$87 >> 2] | 0; + if (($117 | 0) == ($115 | 0)) { + $$1$i9 = $first; + break L36; + } + } + } + if (((HEAP8[$112 >> 0] | 0) + -48 | 0) >>> 0 < 10) { + $121 = $first + 3 | 0; + L57 : do if (($121 | 0) == ($last | 0)) $t1$0$i$lcssa = $last; else { + $t1$0$i45 = $121; + while (1) { + if (((HEAP8[$t1$0$i45 >> 0] | 0) + -48 | 0) >>> 0 >= 10) { + $t1$0$i$lcssa = $t1$0$i45; + break L57; + } + $t1$0$i45 = $t1$0$i45 + 1 | 0; + if (($t1$0$i45 | 0) == ($last | 0)) { + $t1$0$i$lcssa = $last; + break; + } + } + } while (0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$87 >> 2] | 0) + -24 | 0, $112, $t1$0$i$lcssa); + $t0$0$i = $t1$0$i$lcssa; + } else $t0$0$i = $112; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$87 >> 2] | 0) + -24 | 0, 39); + if (($t0$0$i | 0) != ($last | 0)) if ((HEAP8[$t0$0$i >> 0] | 0) == 95) { + $$1$i9 = $t0$0$i + 1 | 0; + break L36; + } + $134 = HEAP32[$87 >> 2] | 0; + $135 = $134 + -24 | 0; + $137 = $134; + while (1) { + $136 = $137 + -24 | 0; + HEAP32[$87 >> 2] = $136; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($136); + $137 = HEAP32[$87 >> 2] | 0; + if (($137 | 0) == ($135 | 0)) { + $$1$i9 = $first; + break L36; + } + } + break; + } + case 108: + break; + default: + { + $$1$i9 = $first; + break L36; + } + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 12939, 9); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3); + $140 = $db + 4 | 0; + $141 = HEAP32[$140 >> 2] | 0; + $143 = HEAP32[$db + 8 >> 2] | 0; + if ($141 >>> 0 < $143 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($141, $2); + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 24; + } else { + $150 = HEAP32[$db >> 2] | 0; + $151 = $141 - $150 | 0; + $152 = ($151 | 0) / 24 | 0; + $153 = $152 + 1 | 0; + if (($151 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $157 = ($143 - $150 | 0) / 24 | 0; + if ($157 >>> 0 < 1073741823) { + $159 = $157 << 1; + $$0$i$i$i18$i = $159 >>> 0 < $153 >>> 0 ? $153 : $159; + } else $$0$i$i$i18$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i18$i, $152, $db + 12 | 0); + $162 = $__v$i$i17$i + 8 | 0; + $163 = HEAP32[$162 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $2); + HEAP32[$162 >> 2] = $163 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $165 = $first + 2 | 0; + do if ((HEAP8[$165 >> 0] | 0) == 118) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$140 >> 2] | 0) + -24 | 0, 41); + $t01$1$i = $first + 3 | 0; + } else { + $171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($165, $last, $db) | 0; + $173 = HEAP32[$140 >> 2] | 0; + if (($171 | 0) == ($165 | 0)) { + $174 = $173 + -24 | 0; + $176 = $173; + while (1) { + $175 = $176 + -24 | 0; + HEAP32[$140 >> 2] = $175; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($175); + $176 = HEAP32[$140 >> 2] | 0; + if (($176 | 0) == ($174 | 0)) { + $$1$i9 = $first; + break L36; + } + } + } + if ((($173 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$1$i9 = $first; + break L36; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp$i, $173 + -24 | 0); + $185 = HEAP32[$140 >> 2] | 0; + $186 = $185 + -24 | 0; + $188 = $185; + do { + $187 = $188 + -24 | 0; + HEAP32[$140 >> 2] = $187; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187); + $188 = HEAP32[$140 >> 2] | 0; + } while (($188 | 0) != ($186 | 0)); + $191 = HEAP8[$tmp$i >> 0] | 0; + $193 = ($191 & 1) == 0; + $194 = $tmp$i + 8 | 0; + $196 = $tmp$i + 1 | 0; + $198 = $tmp$i + 4 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($185 + -48 | 0, $193 ? $196 : HEAP32[$194 >> 2] | 0, $193 ? ($191 & 255) >>> 1 : HEAP32[$198 >> 2] | 0) | 0; + $203 = $4 + 4 | 0; + $204 = $4 + 8 | 0; + $$pre$i$i$i$i = $191; + $t01$0$i = $171; + while (1) { + $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t01$0$i, $last, $db) | 0; + $207 = HEAP32[$140 >> 2] | 0; + if (($205 | 0) == ($t01$0$i | 0)) { + $$lcssa = $207; + $t01$0$i$lcssa67 = $t01$0$i; + label = 79; + break; + } + if ((($207 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + label = 113; + break; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $207 + -24 | 0); + L96 : do if (!($$pre$i$i$i$i & 1)) { + HEAP8[$196 >> 0] = 0; + HEAP8[$tmp$i >> 0] = 0; + } else { + $217 = HEAP32[$194 >> 2] | 0; + HEAP8[$217 >> 0] = 0; + HEAP32[$198 >> 2] = 0; + $218 = HEAP32[$tmp$i >> 2] | 0; + $phitmp$i$i$i$i$i$i$i = ($218 & -2) + -1 | 0; + $220 = $218 & 255; + do if (!($220 & 1)) { + $224 = $218 >>> 1 & 127; + if (($220 & 255) < 22) { + _memcpy($196 | 0, $217 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0; + _free($217); + $$ph26 = $224; + break; + } + $227 = $224 + 16 & 240; + $phitmp$i2$i$i$i$i$i$i = $227 + -1 | 0; + if (($phitmp$i2$i$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i$i | 0)) break L96; + $230 = _malloc($227) | 0; + if ($phitmp$i2$i$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i$i >>> 0 & ($230 | 0) == 0) break L96; + _memcpy($230 | 0, $196 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0; + HEAP32[$tmp$i >> 2] = $227 | 1; + HEAP32[$198 >> 2] = $224; + HEAP32[$194 >> 2] = $230; + break L96; + } else { + HEAP8[$196 >> 0] = 0; + _free($217); + $$ph26 = 0; + } while (0); + HEAP8[$tmp$i >> 0] = $$ph26 << 1; + } while (0); + HEAP32[$tmp$i >> 2] = HEAP32[$4 >> 2]; + HEAP32[$tmp$i + 4 >> 2] = HEAP32[$4 + 4 >> 2]; + HEAP32[$tmp$i + 8 >> 2] = HEAP32[$4 + 8 >> 2]; + HEAP32[$4 >> 2] = 0; + HEAP32[$203 >> 2] = 0; + HEAP32[$204 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + $241 = HEAP32[$140 >> 2] | 0; + $242 = $241 + -24 | 0; + $244 = $241; + do { + $243 = $244 + -24 | 0; + HEAP32[$140 >> 2] = $243; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243); + $244 = HEAP32[$140 >> 2] | 0; + } while (($244 | 0) != ($242 | 0)); + $246 = HEAP8[$tmp$i >> 0] | 0; + $248 = ($246 & 1) == 0; + $252 = $248 ? ($246 & 255) >>> 1 : HEAP32[$198 >> 2] | 0; + if (!$252) { + $$pre$i$i$i$i = $246; + $t01$0$i = $205; + continue; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($241 + -48 | 0, 12716) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$140 >> 2] | 0) + -24 | 0, $248 ? $196 : HEAP32[$194 >> 2] | 0, $252) | 0; + $$pre$i$i$i$i = $246; + $t01$0$i = $205; + } + if ((label | 0) == 79) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($$lcssa + -24 | 0, 12619) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i); + $t01$1$i = $t01$0$i$lcssa67; + break; + } else if ((label | 0) == 113) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i); + $$1$i9 = $first; + break L36; + } + } while (0); + if (($t01$1$i | 0) != ($last | 0)) if ((HEAP8[$t01$1$i >> 0] | 0) == 69) { + $268 = $t01$1$i + 1 | 0; + if (($268 | 0) == ($last | 0)) { + $270 = HEAP32[$140 >> 2] | 0; + $271 = $270 + -24 | 0; + $273 = $270; + while (1) { + $272 = $273 + -24 | 0; + HEAP32[$140 >> 2] = $272; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272); + $273 = HEAP32[$140 >> 2] | 0; + if (($273 | 0) == ($271 | 0)) { + $$1$i9 = $first; + break L36; + } + } + } + if (((HEAP8[$268 >> 0] | 0) + -48 | 0) >>> 0 < 10) { + $277 = $t01$1$i + 2 | 0; + L127 : do if (($277 | 0) == ($last | 0)) $t13$0$i$lcssa = $last; else { + $t13$0$i51 = $277; + while (1) { + if (((HEAP8[$t13$0$i51 >> 0] | 0) + -48 | 0) >>> 0 >= 10) { + $t13$0$i$lcssa = $t13$0$i51; + break L127; + } + $t13$0$i51 = $t13$0$i51 + 1 | 0; + if (($t13$0$i51 | 0) == ($last | 0)) { + $t13$0$i$lcssa = $last; + break; + } + } + } while (0); + $283 = HEAP32[$140 >> 2] | 0; + $284 = $283 + -24 | 0; + $285 = HEAP8[$284 >> 0] | 0; + if (!($285 & 1)) { + $300 = 10; + $301 = ($285 & 255) >>> 1; + $304 = $285; + } else { + $292 = HEAP32[$284 >> 2] | 0; + $300 = ($292 & -2) + -1 | 0; + $301 = HEAP32[$283 + -20 >> 2] | 0; + $304 = $292 & 255; + } + $297 = $t13$0$i$lcssa - $268 | 0; + if (($t13$0$i$lcssa | 0) == ($268 | 0)) $t01$2$i = $268; else { + if (($300 - $301 | 0) >>> 0 < $297 >>> 0) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($284, $300, $301 + $297 - $300 | 0, $301, 7, $297); + $__p$0$i$i = HEAP32[$283 + -16 >> 2] | 0; + } else { + if (!($304 & 1)) $312 = $284 + 1 | 0; else $312 = HEAP32[$283 + -16 >> 2] | 0; + if (($301 | 0) == 7) $__p$0$i$i = $312; else { + _memmove($312 + ($297 + 7) | 0, $312 + 7 | 0, $301 + -7 | 0) | 0; + $__p$0$i$i = $312; + } + } + $318 = $301 + $297 | 0; + if (!(HEAP8[$284 >> 0] & 1)) HEAP8[$284 >> 0] = $318 << 1; else HEAP32[$283 + -20 >> 2] = $318; + HEAP8[$__p$0$i$i + $318 >> 0] = 0; + if (($268 | 0) == ($t13$0$i$lcssa | 0)) $t01$2$i = $t13$0$i$lcssa; else { + $$0$i$i49 = $268; + $__p$1$i$i48 = $__p$0$i$i + 7 | 0; + while (1) { + HEAP8[$__p$1$i$i48 >> 0] = HEAP8[$$0$i$i49 >> 0] | 0; + $$0$i$i49 = $$0$i$i49 + 1 | 0; + if (($$0$i$i49 | 0) == ($t13$0$i$lcssa | 0)) { + $t01$2$i = $t13$0$i$lcssa; + break; + } else $__p$1$i$i48 = $__p$1$i$i48 + 1 | 0; + } + } + } + } else $t01$2$i = $268; + if (($t01$2$i | 0) != ($last | 0)) if ((HEAP8[$t01$2$i >> 0] | 0) == 95) { + $$1$i9 = $t01$2$i + 1 | 0; + break; + } + $335 = HEAP32[$140 >> 2] | 0; + $336 = $335 + -24 | 0; + $338 = $335; + while (1) { + $337 = $338 + -24 | 0; + HEAP32[$140 >> 2] = $337; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($337); + $338 = HEAP32[$140 >> 2] | 0; + if (($338 | 0) == ($336 | 0)) { + $$1$i9 = $first; + break L36; + } + } + } + $263 = HEAP32[$140 >> 2] | 0; + $264 = $263 + -24 | 0; + $266 = $263; + do { + $265 = $266 + -24 | 0; + HEAP32[$140 >> 2] = $265; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($265); + $266 = HEAP32[$140 >> 2] | 0; + } while (($266 | 0) != ($264 | 0)); + $$1$i9 = $first; + } else $$1$i9 = $first; while (0); + $$0 = $$1$i9; + break L1; + break; + } + case 57: + case 56: + case 55: + case 54: + case 53: + case 52: + case 51: + case 50: + case 49: + { + $341 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + STACKTOP = sp; + return $341 | 0; + } + default: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _PCA($input, $output, $ev) { + $input = $input | 0; + $output = $output | 0; + $ev = $ev | 0; + var $$0 = 0, $0 = 0, $1 = 0, $102 = 0.0, $11 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $120 = 0, $121 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $128 = 0.0, $138 = 0.0, $14 = 0, $143 = 0.0, $147 = 0.0, $150 = 0.0, $154 = 0.0, $156 = 0, $157 = 0.0, $159 = 0, $160 = 0.0, $161 = 0.0, $164 = 0, $168 = 0.0, $17 = 0, $172 = 0, $179 = 0.0, $18 = 0, $184 = 0, $185 = 0, $186 = 0, $188 = 0, $189 = 0.0, $191 = 0, $192 = 0.0, $2 = 0, $202 = 0.0, $204 = 0, $205 = 0.0, $21 = 0, $210 = 0.0, $212 = 0.0, $219 = 0, $220 = 0.0, $223 = 0.0, $224 = 0, $232 = 0.0, $237 = 0, $238 = 0, $24 = 0, $25 = 0, $251 = 0, $253 = 0, $256 = 0, $257 = 0, $259 = 0.0, $26 = 0, $263 = 0.0, $264 = 0, $272 = 0.0, $279 = 0, $28 = 0, $287 = 0, $289 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $30 = 0, $304 = 0, $31 = 0, $35 = 0, $37 = 0, $47 = 0.0, $5 = 0, $55 = 0, $57 = 0, $61 = 0, $63 = 0, $70 = 0.0, $8 = 0, $82 = 0, $84 = 0, $90 = 0, $92 = 0, $93 = 0, $97 = 0.0, $98 = 0, $99 = 0, $c$0$i = 0.0, $ev1$i = 0, $exitcond$i133 = 0, $exitcond$i14148 = 0, $exitcond$i28106 = 0, $exitcond$i651 = 0, $exitcond3$i59 = 0, $exitcond6$i115 = 0, $exitcond82 = 0, $h$0$i127 = 0, $h$1$i$lcssa = 0, $h$1$i100 = 0, $h$2$i = 0, $i$0$i11155 = 0, $i$0$i141 = 0, $i$0$i2$lcssa = 0, $i$0$i25116 = 0, $i$0$i266 = 0, $i$0$lcssa = 0, $i$090 = 0, $i$1$i2799 = 0, $i$1$i49 = 0, $i$180 = 0, $i$2$i109 = 0, $in1$0$i129 = 0, $in1$0$i17144 = 0, $in2$0$i128 = 0, $in2$0$i16143 = 0, $iter$0$i = 0, $j$0$i13152 = 0, $j$0$i137 = 0, $j$0$i23 = 0, $j$0$i23$lcssa = 0, $j$0$i461 = 0, $j$085 = 0, $j$1$i47 = 0, $j$175 = 0, $k$0$i130 = 0, $k$0$i18145 = 0, $k$0$i24124 = 0, $k$0$i555 = 0, $k$1$i113 = 0, $m$0$i$lcssa = 0, $m$0$i65 = 0, $m$1$i60 = 0, $m$2$i48 = 0, $m$3$i46 = 0, $m1$0$i54 = 0, $m1$089 = 0, $m1$184 = 0, $m2$0$i52 = 0, $m2$0$lcssa = 0, $m2$088 = 0, $m2$183 = 0, $m2$279 = 0, $m2$374 = 0, $out$0$i10154 = 0, $out$0$i140 = 0, $out$1$i12149 = 0, $out$1$i134 = 0, $s$1$i = 0.0, $scevgep2$i = 0, $scevgep41 = 0, $smax$i = 0, $smax38 = 0, $sum$0$i$lcssa = 0.0, $sum$0$i53 = 0.0, $t$0$i$lcssa = 0.0, $t$0$i98 = 0.0, $t$1$i = 0.0, $v1$0$i107 = 0, $v2$0$i108 = 0, $x$0$i$be = 0.0, $x$0$i122 = 0.0, $x$1$i$lcssa = 0.0, $y$0$i$be = 0.0, $y$0$i123 = 0.0, $y$1$i$lcssa = 0.0, sp = 0, $k$0$i24124$looptemp = 0, $h$0$i127$looptemp = 0, $k$1$i113$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ev1$i = sp; + $0 = $input + 4 | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = $input + 8 | 0; + $3 = HEAP32[$2 >> 2] | 0; + $5 = ($3 | 0) < ($1 | 0) ? $3 : $1; + L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else { + $8 = $output + 8 | 0; + if ((HEAP32[$8 >> 2] | 0) == ($3 | 0)) { + $11 = $output + 4 | 0; + if ((HEAP32[$11 >> 2] | 0) == ($5 | 0)) { + $14 = $ev + 4 | 0; + if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) { + $17 = _arMatrixAlloc($5, $5) | 0; + $18 = $17 + 4 | 0; + if ((HEAP32[$18 >> 2] | 0) == ($5 | 0)) { + $21 = $17 + 8 | 0; + if ((HEAP32[$21 >> 2] | 0) == ($5 | 0)) { + $24 = ($1 | 0) < ($3 | 0); + $25 = HEAP32[$0 >> 2] | 0; + $26 = HEAP32[$2 >> 2] | 0; + if ($24) { + if (($5 | 0) != ($25 | 0)) { + _arMatrixFree($17) | 0; + $$0 = -1; + break; + } + $28 = HEAP32[$17 >> 2] | 0; + if (($5 | 0) > 0) { + $exitcond$i133 = ($5 | 0) == 0; + $30 = ($26 | 0) > 0; + $i$0$i141 = 0; + $out$0$i140 = $28; + while (1) { + $31 = Math_imul($i$0$i141, $26) | 0; + if (!$exitcond$i133) { + $j$0$i137 = 0; + $out$1$i134 = $out$0$i140; + while (1) { + if (($j$0$i137 | 0) < ($i$0$i141 | 0)) { + $35 = $28 + ((Math_imul($j$0$i137, $5) | 0) + $i$0$i141 << 3) | 0; + HEAPF64[$out$1$i134 >> 3] = +HEAPF64[$35 >> 3]; + } else { + $37 = HEAP32[$input >> 2] | 0; + HEAPF64[$out$1$i134 >> 3] = 0.0; + if ($30) { + $47 = 0.0; + $in1$0$i129 = $37 + ($31 << 3) | 0; + $in2$0$i128 = $37 + ((Math_imul($j$0$i137, $26) | 0) << 3) | 0; + $k$0$i130 = 0; + while (1) { + $47 = $47 + +HEAPF64[$in1$0$i129 >> 3] * +HEAPF64[$in2$0$i128 >> 3]; + HEAPF64[$out$1$i134 >> 3] = $47; + $k$0$i130 = $k$0$i130 + 1 | 0; + if (($k$0$i130 | 0) >= ($26 | 0)) break; else { + $in1$0$i129 = $in1$0$i129 + 8 | 0; + $in2$0$i128 = $in2$0$i128 + 8 | 0; + } + } + } + } + $j$0$i137 = $j$0$i137 + 1 | 0; + if (($j$0$i137 | 0) == ($5 | 0)) break; else $out$1$i134 = $out$1$i134 + 8 | 0; + } + } + $i$0$i141 = $i$0$i141 + 1 | 0; + if (($i$0$i141 | 0) >= ($5 | 0)) break; else $out$0$i140 = $out$0$i140 + ($5 << 3) | 0; + } + } + } else { + if (($5 | 0) != ($26 | 0)) { + _arMatrixFree($17) | 0; + $$0 = -1; + break; + } + $55 = HEAP32[$17 >> 2] | 0; + if (($5 | 0) > 0) { + $exitcond$i14148 = ($5 | 0) == 0; + $57 = ($25 | 0) > 0; + $i$0$i11155 = 0; + $out$0$i10154 = $55; + while (1) { + if (!$exitcond$i14148) { + $j$0$i13152 = 0; + $out$1$i12149 = $out$0$i10154; + while (1) { + if (($j$0$i13152 | 0) < ($i$0$i11155 | 0)) { + $61 = $55 + ((Math_imul($j$0$i13152, $5) | 0) + $i$0$i11155 << 3) | 0; + HEAPF64[$out$1$i12149 >> 3] = +HEAPF64[$61 >> 3]; + } else { + $63 = HEAP32[$input >> 2] | 0; + HEAPF64[$out$1$i12149 >> 3] = 0.0; + if ($57) { + $70 = 0.0; + $in1$0$i17144 = $63 + ($i$0$i11155 << 3) | 0; + $in2$0$i16143 = $63 + ($j$0$i13152 << 3) | 0; + $k$0$i18145 = 0; + while (1) { + $70 = $70 + +HEAPF64[$in1$0$i17144 >> 3] * +HEAPF64[$in2$0$i16143 >> 3]; + HEAPF64[$out$1$i12149 >> 3] = $70; + $k$0$i18145 = $k$0$i18145 + 1 | 0; + if (($k$0$i18145 | 0) >= ($25 | 0)) break; else { + $in1$0$i17144 = $in1$0$i17144 + ($5 << 3) | 0; + $in2$0$i16143 = $in2$0$i16143 + ($5 << 3) | 0; + } + } + } + } + $j$0$i13152 = $j$0$i13152 + 1 | 0; + if (($j$0$i13152 | 0) == ($5 | 0)) break; else $out$1$i12149 = $out$1$i12149 + 8 | 0; + } + } + $i$0$i11155 = $i$0$i11155 + 1 | 0; + if (($i$0$i11155 | 0) >= ($5 | 0)) break; else $out$0$i10154 = $out$0$i10154 + ($5 << 3) | 0; + } + } + } + do if (($5 | 0) >= 2) if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) { + $82 = _arVecAlloc($5) | 0; + if ($82) { + $84 = $5 + -1 | 0; + HEAP32[$ev1$i + 4 >> 2] = $84; + HEAP32[$ev1$i >> 2] = (HEAP32[$82 >> 2] | 0) + 8; + if ((_arVecTridiagonalize($17, $ev, $ev1$i) | 0) < 0) { + _arVecFree($82) | 0; + break; + } + $90 = HEAP32[$82 >> 2] | 0; + HEAPF64[$90 >> 3] = 0.0; + if (($84 | 0) > 0) { + $exitcond6$i115 = ($5 | 0) == 0; + $h$0$i127 = $84; + do { + $j$0$i23 = $h$0$i127; + while (1) { + if (($j$0$i23 | 0) <= 0) { + $j$0$i23$lcssa = $j$0$i23; + break; + } + $97 = +Math_abs(+(+HEAPF64[$90 + ($j$0$i23 << 3) >> 3])); + $98 = $j$0$i23 + -1 | 0; + $99 = HEAP32[$ev >> 2] | 0; + $102 = +Math_abs(+(+HEAPF64[$99 + ($98 << 3) >> 3])); + if ($97 > ($102 + +Math_abs(+(+HEAPF64[$99 + ($j$0$i23 << 3) >> 3]))) * 1.0e-06) $j$0$i23 = $98; else { + $j$0$i23$lcssa = $j$0$i23; + break; + } + } + $h$0$i127$looptemp = $h$0$i127; + $h$0$i127 = $h$0$i127 + -1 | 0; + L62 : do if (($j$0$i23$lcssa | 0) != ($h$0$i127$looptemp | 0)) { + $112 = $90 + ($h$0$i127$looptemp << 3) | 0; + $113 = $90 + ($j$0$i23$lcssa + 1 << 3) | 0; + $114 = ($j$0$i23$lcssa | 0) < ($h$0$i127$looptemp | 0); + $iter$0$i = 0; + do { + if (($iter$0$i | 0) > 99) break L62; + $iter$0$i = $iter$0$i + 1 | 0; + $117 = HEAP32[$ev >> 2] | 0; + $118 = $117 + ($h$0$i127 << 3) | 0; + $120 = $117 + ($h$0$i127$looptemp << 3) | 0; + $121 = +HEAPF64[$120 >> 3]; + $123 = (+HEAPF64[$118 >> 3] - $121) * .5; + $124 = +HEAPF64[$112 >> 3]; + $125 = $124 * $124; + $128 = +Math_sqrt(+($125 + $123 * $123)); + if ($114) { + $k$0$i24124 = $j$0$i23$lcssa; + $x$0$i122 = +HEAPF64[$117 + ($j$0$i23$lcssa << 3) >> 3] - $121 + $125 / ($123 + ($123 < 0.0 ? -$128 : $128)); + $y$0$i123 = +HEAPF64[$113 >> 3]; + while (1) { + $138 = +Math_abs(+$x$0$i122); + do if (!($138 >= +Math_abs(+$y$0$i123))) { + $150 = -$x$0$i122 / $y$0$i123; + $154 = 1.0 / +Math_sqrt(+($150 * $150 + 1.0)); + $c$0$i = $150 * $154; + $s$1$i = $154; + } else { + if (!($138 > 1.0e-16)) { + $c$0$i = 1.0; + $s$1$i = 0.0; + break; + } + $143 = -$y$0$i123 / $x$0$i122; + $147 = 1.0 / +Math_sqrt(+($143 * $143 + 1.0)); + $c$0$i = $147; + $s$1$i = $143 * $147; + } while (0); + $156 = $117 + ($k$0$i24124 << 3) | 0; + $157 = +HEAPF64[$156 >> 3]; + $k$0$i24124$looptemp = $k$0$i24124; + $k$0$i24124 = $k$0$i24124 + 1 | 0; + $159 = $117 + ($k$0$i24124 << 3) | 0; + $160 = +HEAPF64[$159 >> 3]; + $161 = $157 - $160; + $164 = $90 + ($k$0$i24124 << 3) | 0; + $168 = $s$1$i * ($s$1$i * $161 + $c$0$i * 2.0 * +HEAPF64[$164 >> 3]); + HEAPF64[$156 >> 3] = $157 - $168; + HEAPF64[$159 >> 3] = $160 + $168; + if (($k$0$i24124$looptemp | 0) > ($j$0$i23$lcssa | 0)) { + $172 = $90 + ($k$0$i24124$looptemp << 3) | 0; + HEAPF64[$172 >> 3] = $c$0$i * +HEAPF64[$172 >> 3] - $y$0$i123 * $s$1$i; + } + $179 = +HEAPF64[$164 >> 3]; + HEAPF64[$164 >> 3] = $179 + $s$1$i * ($c$0$i * $161 - $s$1$i * 2.0 * $179); + $184 = Math_imul($k$0$i24124$looptemp, $5) | 0; + $185 = Math_imul($k$0$i24124, $5) | 0; + if ($exitcond6$i115) { + $x$1$i$lcssa = $x$0$i122; + $y$1$i$lcssa = $y$0$i123; + } else { + $186 = HEAP32[$17 >> 2] | 0; + $i$0$i25116 = 0; + do { + $188 = $186 + ($i$0$i25116 + $184 << 3) | 0; + $189 = +HEAPF64[$188 >> 3]; + $191 = $186 + ($i$0$i25116 + $185 << 3) | 0; + $192 = +HEAPF64[$191 >> 3]; + HEAPF64[$188 >> 3] = $c$0$i * $189 - $s$1$i * $192; + HEAPF64[$191 >> 3] = $s$1$i * $189 + $c$0$i * $192; + $i$0$i25116 = $i$0$i25116 + 1 | 0; + } while (($i$0$i25116 | 0) != ($5 | 0)); + $x$1$i$lcssa = $189; + $y$1$i$lcssa = $192; + } + if (($k$0$i24124$looptemp | 0) < ($h$0$i127 | 0)) { + $202 = +HEAPF64[$164 >> 3]; + $204 = $90 + ($k$0$i24124$looptemp + 2 << 3) | 0; + $205 = +HEAPF64[$204 >> 3]; + HEAPF64[$204 >> 3] = $c$0$i * $205; + $x$0$i$be = $202; + $y$0$i$be = -($s$1$i * $205); + } else { + $x$0$i$be = $x$1$i$lcssa; + $y$0$i$be = $y$1$i$lcssa; + } + if (($k$0$i24124 | 0) >= ($h$0$i127$looptemp | 0)) break; else { + $x$0$i122 = $x$0$i$be; + $y$0$i123 = $y$0$i$be; + } + } + } + $210 = +Math_abs(+(+HEAPF64[$112 >> 3])); + $212 = +Math_abs(+(+HEAPF64[$118 >> 3])); + } while ($210 > ($212 + +Math_abs(+(+HEAPF64[$120 >> 3]))) * 1.0e-06); + } while (0); + } while (($h$0$i127$looptemp | 0) > 1); + } + if ($84) { + $92 = HEAP32[$ev >> 2] | 0; + $93 = HEAP32[$17 >> 2] | 0; + $exitcond$i28106 = ($5 | 0) == 0; + $k$1$i113 = 0; + do { + $219 = $92 + ($k$1$i113 << 3) | 0; + $220 = +HEAPF64[$219 >> 3]; + $k$1$i113$looptemp = $k$1$i113; + $k$1$i113 = $k$1$i113 + 1 | 0; + if (($k$1$i113 | 0) < ($5 | 0)) { + $h$1$i100 = $k$1$i113$looptemp; + $i$1$i2799 = $k$1$i113; + $t$0$i98 = $220; + while (1) { + $223 = +HEAPF64[$92 + ($i$1$i2799 << 3) >> 3]; + $224 = $223 > $t$0$i98; + $t$1$i = $224 ? $223 : $t$0$i98; + $h$2$i = $224 ? $i$1$i2799 : $h$1$i100; + $i$1$i2799 = $i$1$i2799 + 1 | 0; + if (($i$1$i2799 | 0) >= ($5 | 0)) { + $h$1$i$lcssa = $h$2$i; + $t$0$i$lcssa = $t$1$i; + break; + } else { + $h$1$i100 = $h$2$i; + $t$0$i98 = $t$1$i; + } + } + } else { + $h$1$i$lcssa = $k$1$i113$looptemp; + $t$0$i$lcssa = $220; + } + HEAPF64[$92 + ($h$1$i$lcssa << 3) >> 3] = $220; + HEAPF64[$219 >> 3] = $t$0$i$lcssa; + if (!$exitcond$i28106) { + $i$2$i109 = 0; + $v1$0$i107 = $93 + ((Math_imul($h$1$i$lcssa, $5) | 0) << 3) | 0; + $v2$0$i108 = $93 + ((Math_imul($k$1$i113$looptemp, $5) | 0) << 3) | 0; + while (1) { + $232 = +HEAPF64[$v1$0$i107 >> 3]; + HEAPF64[$v1$0$i107 >> 3] = +HEAPF64[$v2$0$i108 >> 3]; + HEAPF64[$v2$0$i108 >> 3] = $232; + $i$2$i109 = $i$2$i109 + 1 | 0; + if (($i$2$i109 | 0) == ($5 | 0)) break; else { + $v1$0$i107 = $v1$0$i107 + 8 | 0; + $v2$0$i108 = $v2$0$i108 + 8 | 0; + } + } + } + } while (($k$1$i113 | 0) != ($84 | 0)); + } + _arVecFree($82) | 0; + L104 : do if ($24) { + $237 = HEAP32[$0 >> 2] | 0; + $238 = HEAP32[$2 >> 2] | 0; + do if (!(($237 | 0) < 1 | ($238 | 0) < 1)) { + if ((HEAP32[$18 >> 2] | 0) != ($237 | 0)) break; + if ((HEAP32[$21 >> 2] | 0) != ($237 | 0)) break; + if ((HEAP32[$11 >> 2] | 0) != ($237 | 0)) break; + if ((HEAP32[$8 >> 2] | 0) != ($238 | 0)) break; + if ((HEAP32[$14 >> 2] | 0) != ($237 | 0)) break; + $251 = HEAP32[$output >> 2] | 0; + L113 : do if (($237 | 0) > 0) { + $253 = HEAP32[$ev >> 2] | 0; + $exitcond3$i59 = ($238 | 0) == 0; + $exitcond$i651 = ($237 | 0) == 0; + $i$0$i266 = 0; + $m$0$i65 = $251; + while (1) { + $259 = +HEAPF64[$253 + ($i$0$i266 << 3) >> 3]; + if ($259 < 1.0e-16) { + $i$0$i2$lcssa = $i$0$i266; + $m$0$i$lcssa = $m$0$i65; + break L113; + } + $263 = 1.0 / +Math_sqrt(+(+Math_abs(+$259))); + $264 = Math_imul($i$0$i266, $237) | 0; + if (!$exitcond3$i59) { + $j$0$i461 = 0; + $m$1$i60 = $m$0$i65; + while (1) { + if ($exitcond$i651) $sum$0$i$lcssa = 0.0; else { + $k$0$i555 = 0; + $m1$0$i54 = (HEAP32[$17 >> 2] | 0) + ($264 << 3) | 0; + $m2$0$i52 = (HEAP32[$input >> 2] | 0) + ($j$0$i461 << 3) | 0; + $sum$0$i53 = 0.0; + while (1) { + $272 = $sum$0$i53 + +HEAPF64[$m1$0$i54 >> 3] * +HEAPF64[$m2$0$i52 >> 3]; + $k$0$i555 = $k$0$i555 + 1 | 0; + if (($k$0$i555 | 0) == ($237 | 0)) { + $sum$0$i$lcssa = $272; + break; + } else { + $m1$0$i54 = $m1$0$i54 + 8 | 0; + $m2$0$i52 = $m2$0$i52 + ($238 << 3) | 0; + $sum$0$i53 = $272; + } + } + } + HEAPF64[$m$1$i60 >> 3] = $263 * $sum$0$i$lcssa; + $j$0$i461 = $j$0$i461 + 1 | 0; + if (($j$0$i461 | 0) == ($238 | 0)) break; else $m$1$i60 = $m$1$i60 + 8 | 0; + } + } + $scevgep2$i = $m$0$i65 + ($238 << 3) | 0; + $279 = $i$0$i266 + 1 | 0; + if (($279 | 0) < ($237 | 0)) { + $i$0$i266 = $279; + $m$0$i65 = $scevgep2$i; + } else { + $i$0$i2$lcssa = $279; + $m$0$i$lcssa = $scevgep2$i; + break; + } + } + } else { + $i$0$i2$lcssa = 0; + $m$0$i$lcssa = $251; + } while (0); + $smax$i = ($238 | 0) > 0 ? $238 : 0; + if (($i$0$i2$lcssa | 0) >= ($237 | 0)) break L104; + $256 = HEAP32[$ev >> 2] | 0; + $257 = ($238 | 0) > 0; + $i$1$i49 = $i$0$i2$lcssa; + $m$2$i48 = $m$0$i$lcssa; + while (1) { + HEAPF64[$256 + ($i$1$i49 << 3) >> 3] = 0.0; + if ($257) { + $j$1$i47 = 0; + $m$3$i46 = $m$2$i48; + while (1) { + HEAPF64[$m$3$i46 >> 3] = 0.0; + $j$1$i47 = $j$1$i47 + 1 | 0; + if (($j$1$i47 | 0) >= ($238 | 0)) break; else $m$3$i46 = $m$3$i46 + 8 | 0; + } + } + $i$1$i49 = $i$1$i49 + 1 | 0; + if (($i$1$i49 | 0) >= ($237 | 0)) break L104; else $m$2$i48 = $m$2$i48 + ($smax$i << 3) | 0; + } + } while (0); + _arMatrixFree($17) | 0; + $$0 = -1; + break L1; + } else { + $287 = HEAP32[$output >> 2] | 0; + $289 = ($1 | 0) > ($3 | 0) ? $3 : $1; + L137 : do if (($5 | 0) > 0) { + $292 = HEAP32[$ev >> 2] | 0; + $exitcond82 = ($289 | 0) == 0; + $i$090 = 0; + $m1$089 = HEAP32[$17 >> 2] | 0; + $m2$088 = $287; + while (1) { + if (+HEAPF64[$292 + ($i$090 << 3) >> 3] < 1.0e-16) { + $i$0$lcssa = $i$090; + $m2$0$lcssa = $m2$088; + break L137; + } + if (!$exitcond82) { + $j$085 = 0; + $m1$184 = $m1$089; + $m2$183 = $m2$088; + while (1) { + HEAPF64[$m2$183 >> 3] = +HEAPF64[$m1$184 >> 3]; + $j$085 = $j$085 + 1 | 0; + if (($j$085 | 0) == ($289 | 0)) break; else { + $m1$184 = $m1$184 + 8 | 0; + $m2$183 = $m2$183 + 8 | 0; + } + } + } + $m1$089 = $m1$089 + ($289 << 3) | 0; + $scevgep41 = $m2$088 + ($289 << 3) | 0; + $304 = $i$090 + 1 | 0; + if (($304 | 0) >= ($5 | 0)) { + $i$0$lcssa = $304; + $m2$0$lcssa = $scevgep41; + break; + } else { + $i$090 = $304; + $m2$088 = $scevgep41; + } + } + } else { + $i$0$lcssa = 0; + $m2$0$lcssa = $287; + } while (0); + $smax38 = ($289 | 0) > 0 ? $289 : 0; + if (($i$0$lcssa | 0) < ($5 | 0)) { + $295 = HEAP32[$ev >> 2] | 0; + $296 = ($5 | 0) > 0; + $i$180 = $i$0$lcssa; + $m2$279 = $m2$0$lcssa; + while (1) { + HEAPF64[$295 + ($i$180 << 3) >> 3] = 0.0; + if ($296) { + $j$175 = 0; + $m2$374 = $m2$279; + while (1) { + HEAPF64[$m2$374 >> 3] = 0.0; + $j$175 = $j$175 + 1 | 0; + if (($j$175 | 0) >= ($5 | 0)) break; else $m2$374 = $m2$374 + 8 | 0; + } + } + $i$180 = $i$180 + 1 | 0; + if (($i$180 | 0) >= ($5 | 0)) break; else $m2$279 = $m2$279 + ($smax38 << 3) | 0; + } + } + } while (0); + _arMatrixFree($17) | 0; + $$0 = 0; + break L1; + } + } while (0); + _arMatrixFree($17) | 0; + $$0 = -1; + break; + } + } + _arMatrixFree($17) | 0; + $$0 = -1; + } else $$0 = -1; + } else $$0 = -1; + } else $$0 = -1; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arDetectMarker($arHandle, $dataPtr) { + $arHandle = $arHandle | 0; + $dataPtr = $dataPtr | 0; + var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa109 = 0.0, $$lcssa110 = 0.0, $$pr10 = 0, $$pre$phi45Z2D = 0, $$pre$phi47Z2D = 0, $$pre$phi49Z2D = 0, $$pre$phi51Z2D = 0, $$pre$phi53Z2D = 0, $$pre$phiZ2D = 0, $$pre35 = 0, $$pre37 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $106 = 0, $115 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $126 = 0, $132 = 0, $135 = 0, $14 = 0, $144 = 0, $146 = 0, $155 = 0, $157 = 0, $16 = 0, $163 = 0, $164 = 0, $187 = 0, $190 = 0, $191 = 0, $193 = 0, $195 = 0, $196 = 0, $199 = 0.0, $2 = 0, $20 = 0, $202 = 0.0, $203 = 0.0, $209 = 0.0, $21 = 0, $214 = 0.0, $217 = 0.0, $22 = 0, $222 = 0, $223 = 0, $226 = 0.0, $229 = 0, $23 = 0, $231 = 0, $235 = 0, $238 = 0.0, $24 = 0, $244 = 0.0, $247 = 0.0, $25 = 0, $26 = 0, $262 = 0, $265 = 0.0, $267 = 0, $269 = 0, $27 = 0, $28 = 0, $282 = 0, $285 = 0.0, $29 = 0, $291 = 0.0, $294 = 0.0, $296 = 0, $30 = 0, $300 = 0, $31 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $324 = 0, $326 = 0, $328 = 0, $33 = 0, $330 = 0, $335 = 0, $343 = 0, $350 = 0, $351 = 0, $353 = 0, $355 = 0.0, $358 = 0.0, $359 = 0.0, $365 = 0.0, $370 = 0.0, $375 = 0, $381 = 0, $385 = 0, $386 = 0, $387 = 0, $4 = 0, $5 = 0, $69 = 0, $71 = 0, $72 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $8 = 0, $80 = 0, $83 = 0, $86 = 0, $89 = 0, $9 = 0, $91 = 0, $92 = 0, $cdir$1 = 0, $cdir$1$lcssa = 0, $cdir$295 = 0, $cdir$3 = 0, $cdir$3$lcssa = 0, $cid$0$lcssa = 0, $cid$087 = 0, $cid$1 = 0, $diff$097 = 0.0, $diff$192 = 0.0, $diffmin$099 = 0.0, $diffmin$1 = 0.0, $diffmin$294 = 0.0, $i$0104 = 0, $i$1101 = 0, $i$280 = 0, $i$373 = 0, $i$467 = 0, $j$088 = 0, $j$1100 = 0, $j$296 = 0, $j$3$lcssa = 0, $j$381 = 0, $j$4 = 0, $j$5$lcssa = 0, $j$568 = 0, $j$6$lcssa = 0, $j$663 = 0, $k$098 = 0, $k$193 = 0, $marker_nums = 0, $ret1$0 = 0, $rlenmin$086 = 0.0, $rlenmin$1 = 0.0, $storemerge = 0, $storemerge11 = 0, $storemerge4 = 0, $thresholds = 0, $value = 0, $vararg_buffer = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 80 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer9 = sp + 32 | 0; + $vararg_buffer6 = sp + 24 | 0; + $vararg_buffer = sp; + $thresholds = sp + 52 | 0; + $marker_nums = sp + 40 | 0; + $value = sp + 64 | 0; + $0 = $arHandle + 44 | 0; + HEAP32[$0 >> 2] = 0; + $1 = $arHandle + 7062388 | 0; + $2 = HEAP32[$1 >> 2] | 0; + L1 : do if (($2 | 0) == 4) { + $4 = $arHandle + 7062396 | 0; + $5 = HEAP32[$4 >> 2] | 0; + do if (($5 | 0) > 0) { + $$pr10 = 4; + $storemerge11 = $5 + -1 | 0; + } else { + $8 = $arHandle + 16 | 0; + $9 = HEAP32[$8 >> 2] | 0; + $10 = $arHandle + 7062400 | 0; + $12 = (HEAP32[$10 >> 2] | 0) + $9 | 0; + $$ = ($12 | 0) > 255 ? 255 : $12; + HEAP32[$thresholds >> 2] = $$; + $14 = $arHandle + 7062404 | 0; + $16 = $9 - (HEAP32[$14 >> 2] | 0) | 0; + $storemerge4 = ($16 | 0) < 0 ? 0 : $16; + HEAP32[$thresholds + 4 >> 2] = $storemerge4; + HEAP32[$thresholds + 8 >> 2] = $9; + $20 = $arHandle + 36 | 0; + $21 = $arHandle + 40 | 0; + $22 = $arHandle + 4 | 0; + $23 = $arHandle + 12 | 0; + $24 = $arHandle + 20 | 0; + $25 = $arHandle + 4834144 | 0; + $26 = $arHandle + 15416 | 0; + $27 = $arHandle + 15408 | 0; + $28 = $arHandle + 7062384 | 0; + $29 = $arHandle + 24 | 0; + $30 = $arHandle + 32 | 0; + $31 = $arHandle + 7062416 | 0; + $32 = $arHandle + 48 | 0; + $33 = $arHandle + 7062424 | 0; + $i$0104 = 0; + do { + if ((_arLabeling($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$23 >> 2] | 0, HEAP32[$thresholds + ($i$0104 << 2) >> 2] | 0, HEAP32[$24 >> 2] | 0, $25, 0) | 0) < 0) { + $$0 = -1; + break L1; + } + if ((_arDetectMarker2(HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, $25, HEAP32[$24 >> 2] | 0, 1e6, 70, 1.0, $26, $27) | 0) < 0) { + $$0 = -1; + break L1; + } + if ((_arGetMarkerInfo($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, $26, HEAP32[$27 >> 2] | 0, HEAP32[$28 >> 2] | 0, HEAP32[$24 >> 2] | 0, HEAP32[$29 >> 2] | 0, (HEAP32[$30 >> 2] | 0) + 184 | 0, +HEAPF64[$31 >> 3], $32, $0, HEAP32[$33 >> 2] | 0) | 0) < 0) { + $$0 = -1; + break L1; + } + HEAP32[$marker_nums + ($i$0104 << 2) >> 2] = HEAP32[$0 >> 2]; + $i$0104 = $i$0104 + 1 | 0; + } while (($i$0104 | 0) < 3); + if ((HEAP32[$arHandle >> 2] | 0) == 1) { + $69 = HEAP32[$marker_nums + 4 >> 2] | 0; + $71 = HEAP32[$marker_nums + 8 >> 2] | 0; + $72 = HEAP32[$marker_nums >> 2] | 0; + HEAP32[$vararg_buffer >> 2] = $storemerge4; + HEAP32[$vararg_buffer + 4 >> 2] = $69; + HEAP32[$vararg_buffer + 8 >> 2] = $9; + HEAP32[$vararg_buffer + 12 >> 2] = $71; + HEAP32[$vararg_buffer + 16 >> 2] = $$; + HEAP32[$vararg_buffer + 20 >> 2] = $72; + _arLog(3, 4153, $vararg_buffer); + $74 = $72; + $75 = $71; + } else { + $74 = HEAP32[$marker_nums >> 2] | 0; + $75 = HEAP32[$marker_nums + 8 >> 2] | 0; + } + $$pre35 = HEAP32[$marker_nums + 4 >> 2] | 0; + if (($74 | 0) > ($75 | 0) | ($$pre35 | 0) > ($75 | 0)) { + $91 = ($74 | 0) >= ($$pre35 | 0) ? $$ : $storemerge4; + HEAP32[$8 >> 2] = $91; + $92 = $91 - $9 | 0; + if (($92 | 0) > 0) { + HEAP32[$10 >> 2] = $92; + $storemerge = 1; + } else { + HEAP32[$10 >> 2] = 1; + $storemerge = 0 - $92 | 0; + } + HEAP32[$14 >> 2] = $storemerge; + if ((HEAP32[$arHandle >> 2] | 0) == 1) { + HEAP32[$vararg_buffer6 >> 2] = $91; + _arLog(3, 4229, $vararg_buffer6); + } + $$pr10 = HEAP32[$1 >> 2] | 0; + $storemerge11 = HEAP32[$arHandle + 7062392 >> 2] | 0; + break; + } + $77 = HEAP32[$10 >> 2] | 0; + $78 = HEAP32[$14 >> 2] | 0; + do if (($77 | 0) < ($78 | 0)) { + $80 = $77 + 1 | 0; + HEAP32[$10 >> 2] = $80; + $86 = $80; + } else if (($77 | 0) > ($78 | 0)) { + HEAP32[$14 >> 2] = $78 + 1; + $86 = $77; + break; + } else { + $83 = $77 + 1 | 0; + HEAP32[$10 >> 2] = $83; + HEAP32[$14 >> 2] = $78 + 1; + $86 = $83; + break; + } while (0); + if (($86 + $9 | 0) > 254) { + HEAP32[$10 >> 2] = 1; + $89 = 1; + } else $89 = $86; + if (($9 | 0) <= ($89 | 0)) HEAP32[$14 >> 2] = 1; + HEAP32[$4 >> 2] = HEAP32[$arHandle + 7062392 >> 2]; + label = 47; + break L1; + } while (0); + HEAP32[$4 >> 2] = $storemerge11; + $101 = $$pr10; + label = 30; + } else { + $101 = $2; + label = 30; + } while (0); + L40 : do if ((label | 0) == 30) { + L42 : do switch ($101 | 0) { + case 3: + { + $102 = $arHandle + 7062408 | 0; + $104 = _arImageProcLumaHistAndBoxFilterWithBias(HEAP32[$102 >> 2] | 0, $dataPtr, 9, -7) | 0; + if (($104 | 0) < 0) { + $$0 = $104; + break L40; + } + $106 = HEAP32[$102 >> 2] | 0; + $115 = $arHandle + 4834144 | 0; + $118 = _arLabeling(HEAP32[$106 >> 2] | 0, HEAP32[$106 + 8 >> 2] | 0, HEAP32[$106 + 12 >> 2] | 0, 5, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, 0, 0, $115, HEAP32[$106 + 4 >> 2] | 0) | 0; + if (($118 | 0) < 0) { + $$0 = $118; + break L40; + } + $$pre$phi45Z2D = $arHandle + 36 | 0; + $$pre$phi47Z2D = $arHandle + 40 | 0; + $$pre$phi49Z2D = $arHandle + 20 | 0; + $$pre$phiZ2D = $115; + break; + } + case 2: + case 1: + { + $120 = $arHandle + 7062396 | 0; + $121 = HEAP32[$120 >> 2] | 0; + if (($121 | 0) > 0) { + HEAP32[$120 >> 2] = $121 + -1; + label = 44; + break L42; + } + $126 = HEAP32[$arHandle + 7062408 >> 2] | 0; + if (($101 | 0) == 1) $ret1$0 = _arImageProcLumaHistAndCDFAndMedian($126, $dataPtr, $value) | 0; else $ret1$0 = _arImageProcLumaHistAndOtsu($126, $dataPtr, $value) | 0; + if (($ret1$0 | 0) < 0) { + $$0 = $ret1$0; + break L40; + } + $132 = $arHandle + 16 | 0; + if ((HEAP32[$arHandle >> 2] | 0) == 1) { + $135 = HEAPU8[$value >> 0] | 0; + if ((HEAP32[$132 >> 2] | 0) != ($135 | 0)) { + HEAP32[$vararg_buffer9 >> 2] = (HEAP32[$1 >> 2] | 0) == 1 ? 4281 : 4288; + HEAP32[$vararg_buffer9 + 4 >> 2] = $135; + _arLog(3, 4293, $vararg_buffer9); + } + } + HEAP32[$132 >> 2] = HEAPU8[$value >> 0]; + HEAP32[$120 >> 2] = HEAP32[$arHandle + 7062392 >> 2]; + label = 44; + break; + } + default: + label = 44; + } while (0); + if ((label | 0) == 44) { + $144 = $arHandle + 36 | 0; + $146 = $arHandle + 40 | 0; + $155 = $arHandle + 20 | 0; + $157 = $arHandle + 4834144 | 0; + if ((_arLabeling($dataPtr, HEAP32[$144 >> 2] | 0, HEAP32[$146 >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, HEAP32[$arHandle + 16 >> 2] | 0, HEAP32[$155 >> 2] | 0, $157, 0) | 0) < 0) { + $$0 = -1; + break; + } else { + $$pre$phi45Z2D = $144; + $$pre$phi47Z2D = $146; + $$pre$phi49Z2D = $155; + $$pre$phiZ2D = $157; + } + } + $163 = $arHandle + 15416 | 0; + $164 = $arHandle + 15408 | 0; + if ((_arDetectMarker2(HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, $$pre$phiZ2D, HEAP32[$$pre$phi49Z2D >> 2] | 0, 1e6, 70, 1.0, $163, $164) | 0) < 0) $$0 = -1; else if ((_arGetMarkerInfo($dataPtr, HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, $163, HEAP32[$164 >> 2] | 0, HEAP32[$arHandle + 7062384 >> 2] | 0, HEAP32[$$pre$phi49Z2D >> 2] | 0, HEAP32[$arHandle + 24 >> 2] | 0, (HEAP32[$arHandle + 32 >> 2] | 0) + 184 | 0, +HEAPF64[$arHandle + 7062416 >> 3], $arHandle + 48 | 0, $0, HEAP32[$arHandle + 7062424 >> 2] | 0) | 0) < 0) $$0 = -1; else label = 47; + } while (0); + L63 : do if ((label | 0) == 47) { + $187 = $arHandle + 28 | 0; + if ((HEAP32[$187 >> 2] | 0) == 1) { + _confidenceCutoff($arHandle); + $$0 = 0; + break; + } + $190 = $arHandle + 4818296 | 0; + $191 = $arHandle + 24 | 0; + $$pre37 = HEAP32[$190 >> 2] | 0; + if (($$pre37 | 0) > 0) { + $i$1101 = 0; + do { + $193 = HEAP32[$0 >> 2] | 0; + $195 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 56 | 0; + $196 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 64 | 0; + if (($193 | 0) > 0) { + $199 = +(HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) >> 2] | 0); + $cid$087 = -1; + $j$088 = 0; + $rlenmin$086 = .5; + while (1) { + $202 = +(HEAP32[$arHandle + 48 + ($j$088 << 8) >> 2] | 0); + $203 = $199 / $202; + if ($203 < .7 | $203 > 1.43) { + $cid$1 = $cid$087; + $rlenmin$1 = $rlenmin$086; + } else { + $209 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 56 >> 3] - +HEAPF64[$195 >> 3]; + $214 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 64 >> 3] - +HEAPF64[$196 >> 3]; + $217 = ($209 * $209 + $214 * $214) / $202; + if ($217 < $rlenmin$086) { + $cid$1 = $j$088; + $rlenmin$1 = $217; + } else { + $cid$1 = $cid$087; + $rlenmin$1 = $rlenmin$086; + } + } + $j$088 = $j$088 + 1 | 0; + if (($j$088 | 0) >= ($193 | 0)) { + $cid$0$lcssa = $cid$1; + break; + } else { + $cid$087 = $cid$1; + $rlenmin$086 = $rlenmin$1; + } + } + } else $cid$0$lcssa = -1; + L80 : do if (($cid$0$lcssa | 0) > -1) { + $222 = HEAP32[$191 >> 2] | 0; + switch ($222 | 0) { + case 2: + case 1: + case 0: + break; + case 4: + case 3: + { + $262 = $arHandle + 48 + ($cid$0$lcssa << 8) + 40 | 0; + $265 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 40 >> 3]; + if (+HEAPF64[$262 >> 3] < $265) { + $$pre$phi51Z2D = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0; + $$pre$phi53Z2D = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0; + } else { + $267 = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0; + $269 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0; + if (+HEAPF64[$267 >> 3] < +HEAPF64[$269 >> 3]) { + $$pre$phi51Z2D = $269; + $$pre$phi53Z2D = $267; + } else break L80; + } + HEAPF64[$262 >> 3] = $265; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 8 >> 2]; + HEAPF64[$$pre$phi53Z2D >> 3] = +HEAPF64[$$pre$phi51Z2D >> 3]; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 12 >> 2]; + $cdir$295 = -1; + $diffmin$294 = 1.0e8; + $j$296 = 0; + while (1) { + $diff$192 = 0.0; + $k$193 = 0; + while (1) { + $282 = ($k$193 + $j$296 | 0) % 4 | 0; + $285 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) >> 3]; + $291 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) + 8 >> 3]; + $294 = $diff$192 + ($285 * $285 + $291 * $291); + $k$193 = $k$193 + 1 | 0; + if (($k$193 | 0) == 4) { + $$lcssa109 = $294; + break; + } else $diff$192 = $294; + } + $296 = $$lcssa109 < $diffmin$294; + $cdir$3 = $296 ? $j$296 : $cdir$295; + $j$296 = $j$296 + 1 | 0; + if (($j$296 | 0) == 4) { + $cdir$3$lcssa = $cdir$3; + break; + } else { + $cdir$295 = $cdir$3; + $diffmin$294 = $296 ? $$lcssa109 : $diffmin$294; + } + } + $300 = 4 - $cdir$3$lcssa | 0; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 20 >> 2] | 0) | 0) % 4 | 0; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 24 >> 2] | 0) | 0) % 4 | 0; + break L80; + break; + } + default: + { + $$0 = -1; + break L63; + } + } + $223 = $arHandle + 48 + ($cid$0$lcssa << 8) + 32 | 0; + $226 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 32 >> 3]; + if (+HEAPF64[$223 >> 3] < $226) { + HEAPF64[$223 >> 3] = $226; + $229 = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 4 >> 2] | 0; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 4 >> 2] = $229; + $231 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 16 | 0; + $385 = -1; + $diffmin$099 = 1.0e8; + $j$1100 = 0; + while (1) { + $diff$097 = 0.0; + $k$098 = 0; + while (1) { + $235 = ($k$098 + $j$1100 | 0) % 4 | 0; + $238 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) >> 3]; + $244 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) + 8 >> 3]; + $247 = $diff$097 + ($238 * $238 + $244 * $244); + $k$098 = $k$098 + 1 | 0; + if (($k$098 | 0) == 4) { + $$lcssa110 = $247; + break; + } else $diff$097 = $247; + } + if ($$lcssa110 < $diffmin$099) { + $cdir$1 = (4 - $j$1100 + (HEAP32[$231 >> 2] | 0) | 0) % 4 | 0; + $diffmin$1 = $$lcssa110; + } else { + $cdir$1 = $385; + $diffmin$1 = $diffmin$099; + } + $j$1100 = $j$1100 + 1 | 0; + if (($j$1100 | 0) == 4) { + $cdir$1$lcssa = $cdir$1; + break; + } else { + $385 = $cdir$1; + $diffmin$099 = $diffmin$1; + } + } + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 16 >> 2] = $cdir$1$lcssa; + if ($222 >>> 0 < 2) { + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = $229; + HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 40 >> 3] = $226; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = $cdir$1$lcssa; + break; + } else { + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = $229; + HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 48 >> 3] = $226; + HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = $cdir$1$lcssa; + break; + } + } + } while (0); + $i$1101 = $i$1101 + 1 | 0; + } while (($i$1101 | 0) < ($$pre37 | 0)); + } + _confidenceCutoff($arHandle); + if ((HEAP32[$190 >> 2] | 0) > 0) { + $i$280 = 0; + $j$381 = 0; + while (1) { + $313 = $arHandle + 4818304 + ($i$280 * 264 | 0) | 0; + $314 = $arHandle + 4818304 + ($i$280 * 264 | 0) + 256 | 0; + $316 = (HEAP32[$314 >> 2] | 0) + 1 | 0; + HEAP32[$314 >> 2] = $316; + if (($316 | 0) < 4) { + if (($i$280 | 0) != ($j$381 | 0)) _memcpy($arHandle + 4818304 + ($j$381 * 264 | 0) | 0, $313 | 0, 264) | 0; + $j$4 = $j$381 + 1 | 0; + } else $j$4 = $j$381; + $i$280 = $i$280 + 1 | 0; + if (($i$280 | 0) >= (HEAP32[$190 >> 2] | 0)) { + $j$3$lcssa = $j$4; + break; + } else $j$381 = $j$4; + } + } else $j$3$lcssa = 0; + HEAP32[$190 >> 2] = $j$3$lcssa; + $324 = HEAP32[$0 >> 2] | 0; + L120 : do if (($324 | 0) > 0) { + $386 = $324; + $i$373 = 0; + while (1) { + $326 = $arHandle + 48 + ($i$373 << 8) | 0; + $328 = HEAP32[$arHandle + 48 + ($i$373 << 8) + 4 >> 2] | 0; + if (($328 | 0) >= 0) { + $330 = HEAP32[$190 >> 2] | 0; + L125 : do if (($330 | 0) > 0) { + $j$568 = 0; + while (1) { + if ((HEAP32[$arHandle + 4818304 + ($j$568 * 264 | 0) + 4 >> 2] | 0) == ($328 | 0)) { + $j$5$lcssa = $j$568; + break L125; + } + $335 = $j$568 + 1 | 0; + if (($335 | 0) < ($330 | 0)) $j$568 = $335; else { + $j$5$lcssa = $335; + break; + } + } + } else $j$5$lcssa = 0; while (0); + if (($j$5$lcssa | 0) == ($330 | 0)) { + if (($330 | 0) == 60) { + $$lcssa = $386; + break L120; + } + HEAP32[$190 >> 2] = $330 + 1; + } + _memcpy($arHandle + 4818304 + ($j$5$lcssa * 264 | 0) | 0, $326 | 0, 256) | 0; + HEAP32[$arHandle + 4818304 + ($j$5$lcssa * 264 | 0) + 256 >> 2] = 1; + } + $i$373 = $i$373 + 1 | 0; + $343 = HEAP32[$0 >> 2] | 0; + if (($i$373 | 0) >= ($343 | 0)) { + $$lcssa = $343; + break; + } else $386 = $343; + } + } else $$lcssa = $324; while (0); + if ((HEAP32[$187 >> 2] | 0) == 2) $$0 = 0; else if ((HEAP32[$190 >> 2] | 0) > 0) { + $353 = $$lcssa; + $i$467 = 0; + while (1) { + $350 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 56 | 0; + $351 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 64 | 0; + L139 : do if (($353 | 0) > 0) { + $355 = +(HEAP32[$arHandle + 4818304 + ($i$467 * 264 | 0) >> 2] | 0); + $j$663 = 0; + while (1) { + $358 = +(HEAP32[$arHandle + 48 + ($j$663 << 8) >> 2] | 0); + $359 = $355 / $358; + if (!($359 < .7 | $359 > 1.43)) { + $365 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 56 >> 3] - +HEAPF64[$350 >> 3]; + $370 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 64 >> 3] - +HEAPF64[$351 >> 3]; + if (($365 * $365 + $370 * $370) / $358 < .5) { + $j$6$lcssa = $j$663; + break L139; + } + } + $375 = $j$663 + 1 | 0; + if (($375 | 0) < ($353 | 0)) $j$663 = $375; else { + $j$6$lcssa = $375; + break; + } + } + } else $j$6$lcssa = 0; while (0); + if (($j$6$lcssa | 0) == ($353 | 0)) { + _memcpy($arHandle + 48 + ($353 << 8) | 0, $arHandle + 4818304 + ($i$467 * 264 | 0) | 0, 256) | 0; + $381 = (HEAP32[$0 >> 2] | 0) + 1 | 0; + HEAP32[$0 >> 2] = $381; + $387 = $381; + } else $387 = $353; + $i$467 = $i$467 + 1 | 0; + if (($i$467 | 0) >= (HEAP32[$190 >> 2] | 0)) { + $$0 = 0; + break; + } else $353 = $387; + } + } else $$0 = 0; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$19 = 0, $$pre = 0, $$pre$phi80Z2D = 0, $$pre$phi82Z2D = 0, $$pre$phi84Z2D = 0, $0 = 0, $1 = 0, $107 = 0, $108 = 0, $111 = 0, $113 = 0, $114 = 0, $115 = 0, $117 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $130 = 0, $134 = 0, $136 = 0, $146 = 0, $148 = 0, $15 = 0, $150 = 0, $151 = 0, $159 = 0, $160 = 0, $161 = 0, $162 = 0, $165 = 0, $167 = 0, $177 = 0, $180 = 0, $181 = 0, $183 = 0, $184 = 0, $185 = 0, $187 = 0, $188 = 0, $19 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $201 = 0, $205 = 0, $207 = 0, $217 = 0, $221 = 0, $222 = 0, $225 = 0, $226 = 0, $227 = 0, $230 = 0, $233 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $250 = 0, $252 = 0, $261 = 0, $262 = 0, $265 = 0, $267 = 0, $268 = 0, $269 = 0, $271 = 0, $279 = 0, $280 = 0, $281 = 0, $282 = 0, $284 = 0, $288 = 0, $290 = 0, $3 = 0, $30 = 0, $33 = 0, $34 = 0, $37 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $53 = 0, $55 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $71 = 0, $72 = 0, $73 = 0, $76 = 0, $79 = 0, $87 = 0, $88 = 0, $89 = 0, $90 = 0, $92 = 0, $96 = 0, $98 = 0, $args = 0, $args3 = 0, $global$0$off0 = 0, $s = 0, $s1 = 0, $s4 = 0, $s5 = 0, $s6 = 0, $t$0 = 0, $t$1$lcssa = 0, $t$1$ph = 0, $t$1107 = 0, $t$2 = 0, $t$3$lcssa = 0, $t$3110 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 144 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $args = sp + 132 | 0; + $s = sp + 120 | 0; + $0 = sp + 108 | 0; + $s1 = sp + 96 | 0; + $1 = sp + 84 | 0; + $args3 = sp + 72 | 0; + $s4 = sp + 60 | 0; + $2 = sp + 48 | 0; + $s5 = sp + 36 | 0; + $3 = sp + 24 | 0; + $s6 = sp + 12 | 0; + $4 = sp; + $5 = $last; + L1 : do if (($5 - $first | 0) > 2) { + if ((HEAP8[$first >> 0] | 0) == 103) { + $13 = (HEAP8[$first + 1 >> 0] | 0) == 115; + $global$0$off0 = $13; + $t$0 = $13 ? $first + 2 | 0 : $first; + } else { + $global$0$off0 = 0; + $t$0 = $first; + } + $15 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0; + if (($15 | 0) != ($t$0 | 0)) { + if (!$global$0$off0) { + $$19 = $15; + break; + } + $19 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($19 | 0)) { + $$19 = $first; + break; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($19 + -24 | 0, 0, 12902) | 0; + $$19 = $15; + break; + } + if (($5 - $t$0 | 0) > 2) if ((HEAP8[$t$0 >> 0] | 0) == 115) if ((HEAP8[$t$0 + 1 >> 0] | 0) == 114) { + $30 = $t$0 + 2 | 0; + if ((HEAP8[$30 >> 0] | 0) == 78) { + $33 = $t$0 + 3 | 0; + $34 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($33, $last, $db) | 0; + if (($34 | 0) == ($33 | 0) | ($34 | 0) == ($last | 0)) { + $$19 = $first; + break; + } + $37 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($34, $last, $db) | 0; + $$pre = $db + 4 | 0; + do if (($37 | 0) == ($34 | 0)) { + $$pre$phi80Z2D = $db; + $t$1$ph = $34; + } else { + $39 = HEAP32[$$pre >> 2] | 0; + if ((($39 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $39 + -24 | 0); + $47 = HEAP32[$$pre >> 2] | 0; + $48 = $47 + -24 | 0; + $50 = $47; + do { + $49 = $50 + -24 | 0; + HEAP32[$$pre >> 2] = $49; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($49); + $50 = HEAP32[$$pre >> 2] | 0; + } while (($50 | 0) != ($48 | 0)); + $53 = HEAP8[$args >> 0] | 0; + $55 = ($53 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($47 + -48 | 0, $55 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $55 ? ($53 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0; + if (($37 | 0) != ($last | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$pre$phi80Z2D = $db; + $t$1$ph = $37; + break; + } + $66 = HEAP32[$$pre >> 2] | 0; + $67 = $66 + -24 | 0; + $69 = $66; + do { + $68 = $69 + -24 | 0; + HEAP32[$$pre >> 2] = $68; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($68); + $69 = HEAP32[$$pre >> 2] | 0; + } while (($69 | 0) != ($67 | 0)); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$19 = $first; + break L1; + } while (0); + $71 = $0 + 8 | 0; + $72 = $0 + 1 | 0; + $73 = $0 + 4 | 0; + if ((HEAP8[$t$1$ph >> 0] | 0) == 69) $t$1$lcssa = $t$1$ph; else { + $t$1107 = $t$1$ph; + while (1) { + $76 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$1107, $last, $db) | 0; + if (($76 | 0) == ($t$1107 | 0) | ($76 | 0) == ($last | 0)) { + $$19 = $first; + break L1; + } + $79 = HEAP32[$$pre >> 2] | 0; + if ((($79 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s, $79 + -24 | 0); + $87 = HEAP32[$$pre >> 2] | 0; + $88 = $87 + -24 | 0; + $90 = $87; + do { + $89 = $90 + -24 | 0; + HEAP32[$$pre >> 2] = $89; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($89); + $90 = HEAP32[$$pre >> 2] | 0; + } while (($90 | 0) != ($88 | 0)); + $92 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s, 0, 12902) | 0; + HEAP32[$0 >> 2] = HEAP32[$92 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$92 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$92 + 8 >> 2]; + HEAP32[$92 >> 2] = 0; + HEAP32[$92 + 4 >> 2] = 0; + HEAP32[$92 + 8 >> 2] = 0; + $96 = HEAP8[$0 >> 0] | 0; + $98 = ($96 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($87 + -48 | 0, $98 ? $72 : HEAP32[$71 >> 2] | 0, $98 ? ($96 & 255) >>> 1 : HEAP32[$73 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s); + if ((HEAP8[$76 >> 0] | 0) == 69) { + $t$1$lcssa = $76; + break; + } else $t$1107 = $76; + } + } + $107 = $t$1$lcssa + 1 | 0; + $108 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($107, $last, $db) | 0; + if (($108 | 0) == ($107 | 0)) { + $111 = HEAP32[$$pre >> 2] | 0; + if ((HEAP32[$$pre$phi80Z2D >> 2] | 0) == ($111 | 0)) { + $$19 = $first; + break; + } + $113 = $111 + -24 | 0; + $115 = $111; + while (1) { + $114 = $115 + -24 | 0; + HEAP32[$$pre >> 2] = $114; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($114); + $115 = HEAP32[$$pre >> 2] | 0; + if (($115 | 0) == ($113 | 0)) { + $$19 = $first; + break L1; + } + } + } + $117 = HEAP32[$$pre >> 2] | 0; + if ((($117 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s1, $117 + -24 | 0); + $125 = HEAP32[$$pre >> 2] | 0; + $126 = $125 + -24 | 0; + $128 = $125; + do { + $127 = $128 + -24 | 0; + HEAP32[$$pre >> 2] = $127; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($127); + $128 = HEAP32[$$pre >> 2] | 0; + } while (($128 | 0) != ($126 | 0)); + $130 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s1, 0, 12902) | 0; + HEAP32[$1 >> 2] = HEAP32[$130 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$130 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$130 + 8 >> 2]; + HEAP32[$130 >> 2] = 0; + HEAP32[$130 + 4 >> 2] = 0; + HEAP32[$130 + 8 >> 2] = 0; + $134 = HEAP8[$1 >> 0] | 0; + $136 = ($134 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($125 + -48 | 0, $136 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $136 ? ($134 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s1); + $$19 = $108; + break; + } + $146 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0; + if (($146 | 0) != ($30 | 0)) { + $148 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($146, $last, $db) | 0; + if (($148 | 0) == ($146 | 0)) $t$2 = $146; else { + $150 = $db + 4 | 0; + $151 = HEAP32[$150 >> 2] | 0; + if ((($151 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $151 + -24 | 0); + $159 = HEAP32[$150 >> 2] | 0; + $160 = $159 + -24 | 0; + $162 = $159; + do { + $161 = $162 + -24 | 0; + HEAP32[$150 >> 2] = $161; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($161); + $162 = HEAP32[$150 >> 2] | 0; + } while (($162 | 0) != ($160 | 0)); + $165 = HEAP8[$args3 >> 0] | 0; + $167 = ($165 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($159 + -48 | 0, $167 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $167 ? ($165 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3); + $t$2 = $148; + } + $177 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$2, $last, $db) | 0; + if (($177 | 0) == ($t$2 | 0)) { + $180 = $db + 4 | 0; + $181 = HEAP32[$180 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($181 | 0)) { + $$19 = $first; + break; + } + $183 = $181 + -24 | 0; + $185 = $181; + while (1) { + $184 = $185 + -24 | 0; + HEAP32[$180 >> 2] = $184; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($184); + $185 = HEAP32[$180 >> 2] | 0; + if (($185 | 0) == ($183 | 0)) { + $$19 = $first; + break L1; + } + } + } + $187 = $db + 4 | 0; + $188 = HEAP32[$187 >> 2] | 0; + if ((($188 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s4, $188 + -24 | 0); + $196 = HEAP32[$187 >> 2] | 0; + $197 = $196 + -24 | 0; + $199 = $196; + do { + $198 = $199 + -24 | 0; + HEAP32[$187 >> 2] = $198; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($198); + $199 = HEAP32[$187 >> 2] | 0; + } while (($199 | 0) != ($197 | 0)); + $201 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s4, 0, 12902) | 0; + HEAP32[$2 >> 2] = HEAP32[$201 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$201 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$201 + 8 >> 2]; + HEAP32[$201 >> 2] = 0; + HEAP32[$201 + 4 >> 2] = 0; + HEAP32[$201 + 8 >> 2] = 0; + $205 = HEAP8[$2 >> 0] | 0; + $207 = ($205 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($196 + -48 | 0, $207 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $207 ? ($205 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s4); + $$19 = $177; + break; + } + $217 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0; + if (($217 | 0) == ($30 | 0) | ($217 | 0) == ($last | 0)) $$19 = $first; else { + if ($global$0$off0) { + $221 = $db + 4 | 0; + $222 = HEAP32[$221 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($222 | 0)) { + $$19 = $first; + break; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($222 + -24 | 0, 0, 12902) | 0; + $$pre$phi82Z2D = $221; + $$pre$phi84Z2D = $db; + } else { + $$pre$phi82Z2D = $db + 4 | 0; + $$pre$phi84Z2D = $db; + } + $225 = $3 + 8 | 0; + $226 = $3 + 1 | 0; + $227 = $3 + 4 | 0; + if ((HEAP8[$217 >> 0] | 0) == 69) $t$3$lcssa = $217; else { + $t$3110 = $217; + while (1) { + $230 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$3110, $last, $db) | 0; + if (($230 | 0) == ($t$3110 | 0) | ($230 | 0) == ($last | 0)) { + $$19 = $first; + break L1; + } + $233 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + if ((($233 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$19 = $first; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s5, $233 + -24 | 0); + $241 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + $242 = $241 + -24 | 0; + $244 = $241; + do { + $243 = $244 + -24 | 0; + HEAP32[$$pre$phi82Z2D >> 2] = $243; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243); + $244 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + } while (($244 | 0) != ($242 | 0)); + $246 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s5, 0, 12902) | 0; + HEAP32[$3 >> 2] = HEAP32[$246 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$246 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$246 + 8 >> 2]; + HEAP32[$246 >> 2] = 0; + HEAP32[$246 + 4 >> 2] = 0; + HEAP32[$246 + 8 >> 2] = 0; + $250 = HEAP8[$3 >> 0] | 0; + $252 = ($250 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($241 + -48 | 0, $252 ? $226 : HEAP32[$225 >> 2] | 0, $252 ? ($250 & 255) >>> 1 : HEAP32[$227 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s5); + if ((HEAP8[$230 >> 0] | 0) == 69) { + $t$3$lcssa = $230; + break; + } else $t$3110 = $230; + } + } + $261 = $t$3$lcssa + 1 | 0; + $262 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($261, $last, $db) | 0; + if (($262 | 0) == ($261 | 0)) { + $265 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + if ((HEAP32[$$pre$phi84Z2D >> 2] | 0) == ($265 | 0)) { + $$19 = $first; + break; + } + $267 = $265 + -24 | 0; + $269 = $265; + while (1) { + $268 = $269 + -24 | 0; + HEAP32[$$pre$phi82Z2D >> 2] = $268; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($268); + $269 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + if (($269 | 0) == ($267 | 0)) { + $$19 = $first; + break L1; + } + } + } + $271 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + if ((($271 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$19 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s6, $271 + -24 | 0); + $279 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + $280 = $279 + -24 | 0; + $282 = $279; + do { + $281 = $282 + -24 | 0; + HEAP32[$$pre$phi82Z2D >> 2] = $281; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($281); + $282 = HEAP32[$$pre$phi82Z2D >> 2] | 0; + } while (($282 | 0) != ($280 | 0)); + $284 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s6, 0, 12902) | 0; + HEAP32[$4 >> 2] = HEAP32[$284 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$284 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$284 + 8 >> 2]; + HEAP32[$284 >> 2] = 0; + HEAP32[$284 + 4 >> 2] = 0; + HEAP32[$284 + 8 >> 2] = 0; + $288 = HEAP8[$4 >> 0] | 0; + $290 = ($288 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($279 + -48 | 0, $290 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $290 ? ($288 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s6); + $$19 = $262; + } + } + } else $$19 = $first; else $$19 = $first; else $$19 = $first; + } else $$19 = $first; while (0); + STACKTOP = sp; + return $$19 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i12 = 0, $$0$i$i$i17 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i32 = 0, $$0$i$i$i37 = 0, $$0$i$i$i40 = 0, $$lcssa98 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $110 = 0, $112 = 0, $115 = 0, $116 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $136 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $145 = 0, $146 = 0, $148 = 0, $15 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $16 = 0, $162 = 0, $164 = 0, $167 = 0, $168 = 0, $172 = 0, $176 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $184 = 0, $187 = 0, $195 = 0, $196 = 0, $197 = 0, $2 = 0, $200 = 0, $203 = 0, $212 = 0, $213 = 0, $214 = 0, $217 = 0, $218 = 0, $220 = 0, $221 = 0, $223 = 0, $224 = 0, $229 = 0, $233 = 0, $240 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $251 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $267 = 0, $27 = 0, $28 = 0, $3 = 0, $32 = 0, $34 = 0, $37 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $58 = 0, $60 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $84 = 0, $86 = 0, $89 = 0, $90 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i38 = 0, $isdigittmp5 = 0, $isdigittmp9 = 0, $sub$179 = 0, $sub$179$lcssa = 0, $t$080 = 0, $t$080$lcssa = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 176 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i38 = sp + 144 | 0; + $0 = sp + 120 | 0; + $1 = sp + 96 | 0; + $2 = sp + 72 | 0; + $3 = sp + 48 | 0; + $4 = sp + 24 | 0; + $5 = sp; + L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 83) { + $12 = $first + 1 | 0; + $13 = HEAP8[$12 >> 0] | 0; + $14 = $13 << 24 >> 24; + switch ($14 | 0) { + case 97: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($0, 12813); + $15 = $db + 4 | 0; + $16 = HEAP32[$15 >> 2] | 0; + $18 = HEAP32[$db + 8 >> 2] | 0; + if ($16 >>> 0 < $18 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($16, $0); + HEAP32[$15 >> 2] = (HEAP32[$15 >> 2] | 0) + 24; + } else { + $25 = HEAP32[$db >> 2] | 0; + $26 = $16 - $25 | 0; + $27 = ($26 | 0) / 24 | 0; + $28 = $27 + 1 | 0; + if (($26 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $32 = ($18 - $25 | 0) / 24 | 0; + if ($32 >>> 0 < 1073741823) { + $34 = $32 << 1; + $$0$i$i$i = $34 >>> 0 < $28 >>> 0 ? $28 : $34; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i, $27, $db + 12 | 0); + $37 = $__v$i$i38 + 8 | 0; + $38 = HEAP32[$37 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($38, $0); + HEAP32[$37 >> 2] = $38 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 98: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($1, 12828); + $41 = $db + 4 | 0; + $42 = HEAP32[$41 >> 2] | 0; + $44 = HEAP32[$db + 8 >> 2] | 0; + if ($42 >>> 0 < $44 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $1); + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 24; + } else { + $51 = HEAP32[$db >> 2] | 0; + $52 = $42 - $51 | 0; + $53 = ($52 | 0) / 24 | 0; + $54 = $53 + 1 | 0; + if (($52 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $58 = ($44 - $51 | 0) / 24 | 0; + if ($58 >>> 0 < 1073741823) { + $60 = $58 << 1; + $$0$i$i$i12 = $60 >>> 0 < $54 >>> 0 ? $54 : $60; + } else $$0$i$i$i12 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i12, $53, $db + 12 | 0); + $63 = $__v$i$i38 + 8 | 0; + $64 = HEAP32[$63 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1); + HEAP32[$63 >> 2] = $64 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 115: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($2, 12846); + $67 = $db + 4 | 0; + $68 = HEAP32[$67 >> 2] | 0; + $70 = HEAP32[$db + 8 >> 2] | 0; + if ($68 >>> 0 < $70 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($68, $2); + HEAP32[$67 >> 2] = (HEAP32[$67 >> 2] | 0) + 24; + } else { + $77 = HEAP32[$db >> 2] | 0; + $78 = $68 - $77 | 0; + $79 = ($78 | 0) / 24 | 0; + $80 = $79 + 1 | 0; + if (($78 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $84 = ($70 - $77 | 0) / 24 | 0; + if ($84 >>> 0 < 1073741823) { + $86 = $84 << 1; + $$0$i$i$i17 = $86 >>> 0 < $80 >>> 0 ? $80 : $86; + } else $$0$i$i$i17 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i17, $79, $db + 12 | 0); + $89 = $__v$i$i38 + 8 | 0; + $90 = HEAP32[$89 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2); + HEAP32[$89 >> 2] = $90 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 105: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($3, 12858); + $93 = $db + 4 | 0; + $94 = HEAP32[$93 >> 2] | 0; + $96 = HEAP32[$db + 8 >> 2] | 0; + if ($94 >>> 0 < $96 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($94, $3); + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 24; + } else { + $103 = HEAP32[$db >> 2] | 0; + $104 = $94 - $103 | 0; + $105 = ($104 | 0) / 24 | 0; + $106 = $105 + 1 | 0; + if (($104 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $110 = ($96 - $103 | 0) / 24 | 0; + if ($110 >>> 0 < 1073741823) { + $112 = $110 << 1; + $$0$i$i$i22 = $112 >>> 0 < $106 >>> 0 ? $106 : $112; + } else $$0$i$i$i22 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i22, $105, $db + 12 | 0); + $115 = $__v$i$i38 + 8 | 0; + $116 = HEAP32[$115 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3); + HEAP32[$115 >> 2] = $116 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 111: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($4, 12871); + $119 = $db + 4 | 0; + $120 = HEAP32[$119 >> 2] | 0; + $122 = HEAP32[$db + 8 >> 2] | 0; + if ($120 >>> 0 < $122 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($120, $4); + HEAP32[$119 >> 2] = (HEAP32[$119 >> 2] | 0) + 24; + } else { + $129 = HEAP32[$db >> 2] | 0; + $130 = $120 - $129 | 0; + $131 = ($130 | 0) / 24 | 0; + $132 = $131 + 1 | 0; + if (($130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $136 = ($122 - $129 | 0) / 24 | 0; + if ($136 >>> 0 < 1073741823) { + $138 = $136 << 1; + $$0$i$i$i27 = $138 >>> 0 < $132 >>> 0 ? $132 : $138; + } else $$0$i$i$i27 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i27, $131, $db + 12 | 0); + $141 = $__v$i$i38 + 8 | 0; + $142 = HEAP32[$141 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4); + HEAP32[$141 >> 2] = $142 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 100: + { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 12884); + $145 = $db + 4 | 0; + $146 = HEAP32[$145 >> 2] | 0; + $148 = HEAP32[$db + 8 >> 2] | 0; + if ($146 >>> 0 < $148 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($146, $5); + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 24; + } else { + $155 = HEAP32[$db >> 2] | 0; + $156 = $146 - $155 | 0; + $157 = ($156 | 0) / 24 | 0; + $158 = $157 + 1 | 0; + if (($156 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $162 = ($148 - $155 | 0) / 24 | 0; + if ($162 >>> 0 < 1073741823) { + $164 = $162 << 1; + $$0$i$i$i32 = $164 >>> 0 < $158 >>> 0 ? $158 : $164; + } else $$0$i$i$i32 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i32, $157, $db + 12 | 0); + $167 = $__v$i$i38 + 8 | 0; + $168 = HEAP32[$167 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5); + HEAP32[$167 >> 2] = $168 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $$0 = $first + 2 | 0; + break L1; + break; + } + case 95: + { + $172 = HEAP32[$db + 16 >> 2] | 0; + if (($172 | 0) == (HEAP32[$db + 20 >> 2] | 0)) { + $$0 = $first; + break L1; + } + $176 = HEAP32[$172 >> 2] | 0; + $178 = HEAP32[$172 + 4 >> 2] | 0; + $179 = $db + 4 | 0; + $180 = $db + 8 | 0; + $181 = $db + 12 | 0; + $182 = $__v$i$i38 + 8 | 0; + L100 : do if (($176 | 0) != ($178 | 0)) { + $187 = $176; + while (1) { + $184 = HEAP32[$179 >> 2] | 0; + if (($184 | 0) == (HEAP32[$180 >> 2] | 0)) { + $195 = $184 - (HEAP32[$db >> 2] | 0) | 0; + $196 = ($195 | 0) / 24 | 0; + $197 = $196 + 1 | 0; + if (($195 | 0) < -24) break; + if ($196 >>> 0 < 1073741823) { + $200 = $196 << 1; + $$0$i$i$i37 = $200 >>> 0 < $197 >>> 0 ? $197 : $200; + } else $$0$i$i$i37 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i37, $196, $181); + $203 = HEAP32[$182 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203, $187); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203 + 12 | 0, $187 + 12 | 0); + HEAP32[$182 >> 2] = $203 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184, $187); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184 + 12 | 0, $187 + 12 | 0); + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 24; + } + $187 = $187 + 24 | 0; + if (($187 | 0) == ($178 | 0)) break L100; + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + } while (0); + $$0 = $first + 2 | 0; + break L1; + break; + } + default: + { + if (($14 + -48 | 0) >>> 0 < 10) $213 = $13; else { + if (!(_isupper($14) | 0)) { + $$0 = $first; + break L1; + } + $213 = HEAP8[$12 >> 0] | 0; + } + $212 = $213 << 24 >> 24; + $isdigittmp5 = $212 + -48 | 0; + $214 = $first + 2 | 0; + if (($214 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + $sub$179 = $isdigittmp5 >>> 0 < 10 ? $isdigittmp5 : $212 + -55 | 0; + $t$080 = $214; + while (1) { + $217 = HEAP8[$t$080 >> 0] | 0; + $218 = $217 << 24 >> 24; + if (($218 + -48 | 0) >>> 0 < 10) $224 = $217; else { + $220 = (_isupper($218) | 0) == 0; + $221 = HEAP8[$t$080 >> 0] | 0; + if ($220) { + $$lcssa98 = $221; + $sub$179$lcssa = $sub$179; + $t$080$lcssa = $t$080; + break; + } else $224 = $221; + } + $223 = $224 << 24 >> 24; + $isdigittmp9 = $223 + -48 | 0; + $t$080 = $t$080 + 1 | 0; + if (($t$080 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } else $sub$179 = ($isdigittmp9 >>> 0 < 10 ? $isdigittmp9 : $223 + -55 | 0) + ($sub$179 * 36 | 0) | 0; + } + if ($$lcssa98 << 24 >> 24 != 95) { + $$0 = $first; + break L1; + } + $229 = $sub$179$lcssa + 1 | 0; + $233 = HEAP32[$db + 16 >> 2] | 0; + if ($229 >>> 0 >= (HEAP32[$db + 20 >> 2] | 0) - $233 >> 4 >>> 0) { + $$0 = $first; + break L1; + } + $240 = HEAP32[$233 + ($229 << 4) >> 2] | 0; + $242 = HEAP32[$233 + ($229 << 4) + 4 >> 2] | 0; + $243 = $db + 4 | 0; + $244 = $db + 8 | 0; + $245 = $db + 12 | 0; + $246 = $__v$i$i38 + 8 | 0; + L19 : do if (($240 | 0) != ($242 | 0)) { + $251 = $240; + while (1) { + $248 = HEAP32[$243 >> 2] | 0; + if (($248 | 0) == (HEAP32[$244 >> 2] | 0)) { + $259 = $248 - (HEAP32[$db >> 2] | 0) | 0; + $260 = ($259 | 0) / 24 | 0; + $261 = $260 + 1 | 0; + if (($259 | 0) < -24) break; + if ($260 >>> 0 < 1073741823) { + $264 = $260 << 1; + $$0$i$i$i40 = $264 >>> 0 < $261 >>> 0 ? $261 : $264; + } else $$0$i$i$i40 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i40, $260, $245); + $267 = HEAP32[$246 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267, $251); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267 + 12 | 0, $251 + 12 | 0); + HEAP32[$246 >> 2] = $267 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248, $251); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248 + 12 | 0, $251 + 12 | 0); + HEAP32[$243 >> 2] = (HEAP32[$243 >> 2] | 0) + 24; + } + $251 = $251 + 24 | 0; + if (($251 | 0) == ($242 | 0)) break L19; + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + } while (0); + $$0 = $t$080$lcssa + 1 | 0; + break L1; + } + } + } else $$0 = $first; else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _icpGetInitXw2Xc_from_PlanarData($matXc2U, $screenCoord, $worldCoord, $num, $initMatXw2Xc) { + $matXc2U = $matXc2U | 0; + $screenCoord = $screenCoord | 0; + $worldCoord = $worldCoord | 0; + $num = $num | 0; + $initMatXw2Xc = $initMatXw2Xc | 0; + var $$$10$i = 0.0, $$$16$i = 0.0, $$$18$i = 0.0, $$$8$i = 0.0, $$0 = 0, $$10$$i = 0.0, $$10$i = 0.0, $$15$i = 0.0, $$16$$i = 0.0, $$16$i = 0.0, $$17$i = 0.0, $$18$$i = 0.0, $$18$i = 0.0, $$7$i = 0.0, $$7$i1 = 0.0, $$7$i2 = 0.0, $$8$$i = 0.0, $$8$i = 0.0, $$9$i = 0.0, $102 = 0, $104 = 0, $106 = 0, $11 = 0, $110 = 0, $112 = 0, $114 = 0.0, $118 = 0.0, $121 = 0.0, $122 = 0.0, $125 = 0.0, $129 = 0.0, $132 = 0.0, $133 = 0.0, $135 = 0.0, $140 = 0.0, $147 = 0.0, $151 = 0.0, $157 = 0.0, $163 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $175 = 0.0, $177 = 0.0, $178 = 0.0, $180 = 0.0, $191 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0.0, $197 = 0.0, $199 = 0.0, $200 = 0.0, $203 = 0.0, $209 = 0.0, $211 = 0.0, $212 = 0.0, $213 = 0.0, $218 = 0.0, $226 = 0.0, $234 = 0, $235 = 0.0, $236 = 0.0, $237 = 0.0, $242 = 0.0, $244 = 0.0, $248 = 0.0, $249 = 0.0, $251 = 0.0, $255 = 0.0, $258 = 0.0, $265 = 0.0, $268 = 0.0, $270 = 0.0, $272 = 0.0, $274 = 0.0, $276 = 0.0, $278 = 0.0, $280 = 0.0, $281 = 0, $283 = 0, $291 = 0, $292 = 0.0, $293 = 0.0, $294 = 0.0, $299 = 0.0, $301 = 0.0, $305 = 0.0, $306 = 0.0, $308 = 0.0, $312 = 0.0, $315 = 0.0, $32 = 0, $322 = 0.0, $325 = 0.0, $327 = 0.0, $329 = 0.0, $33 = 0, $331 = 0.0, $333 = 0.0, $335 = 0.0, $337 = 0.0, $338 = 0, $340 = 0, $345 = 0.0, $35 = 0, $352 = 0.0, $359 = 0.0, $366 = 0.0, $37 = 0, $377 = 0.0, $379 = 0.0, $38 = 0, $380 = 0.0, $381 = 0.0, $383 = 0.0, $385 = 0.0, $386 = 0.0, $389 = 0.0, $39 = 0, $395 = 0.0, $41 = 0, $43 = 0, $56 = 0, $83 = 0, $96 = 0, $cb$0$i = 0.0, $e1$0$i = 0.0, $e2$0$i = 0.0, $e3$0$i = 0.0, $e4$0$i = 0.0, $f$0$i = 0, $f$2$i = 0, $i$0 = 0, $i$15 = 0, $t$sroa$0$0 = 0.0, $t$sroa$6$0 = 0.0, $v1$sroa$0$0$i = 0.0, $v1$sroa$16$0$i = 0.0, $v1$sroa$31$0$i = 0.0, $v2$sroa$0$0$i = 0.0, $v2$sroa$16$0$i = 0.0, $v2$sroa$31$0$i = 0.0, $v3$sroa$0$0$i = 0.0, $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$0$2$i = 0.0, $v3$sroa$31$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = 0.0, $v3$sroa$31$2$i = 0.0, $v3$sroa$60$0$i = 0.0, $v3$sroa$60$0$v3$sroa$31$0$i = 0.0, $v3$sroa$60$3$i = 0.0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer11 = sp + 48 | 0; + $vararg_buffer9 = sp + 40 | 0; + $vararg_buffer7 = sp + 32 | 0; + $vararg_buffer5 = sp + 24 | 0; + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + L1 : do if (($num | 0) < 4) $$0 = -1; else { + $i$0 = 0; + while (1) { + if (($i$0 | 0) >= ($num | 0)) break; + if (+HEAPF64[$worldCoord + ($i$0 * 24 | 0) + 16 >> 3] != 0.0) { + $$0 = -1; + break L1; + } else $i$0 = $i$0 + 1 | 0; + } + if (+HEAPF64[$matXc2U >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 32 >> 3] != 0.0) $$0 = -1; else { + $11 = $matXc2U + 40 | 0; + if (+HEAPF64[$11 >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 64 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 72 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 80 >> 3] != 1.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 24 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 56 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 88 >> 3] != 0.0) $$0 = -1; else { + $32 = $num << 1; + $33 = _arMatrixAlloc($32, 8) | 0; + if (!$33) { + _arLog(3, 5124, $vararg_buffer); + $$0 = -1; + break; + } + $35 = _arMatrixAlloc($32, 1) | 0; + if (!$35) { + _arMatrixFree($33) | 0; + _arLog(3, 5150, $vararg_buffer1); + $$0 = -1; + break; + } + if ($num) { + $37 = HEAP32[$33 >> 2] | 0; + $38 = HEAP32[$35 >> 2] | 0; + $i$15 = 0; + do { + $39 = $worldCoord + ($i$15 * 24 | 0) | 0; + $41 = $i$15 << 4; + HEAPF64[$37 + ($41 << 3) >> 3] = +HEAPF64[$39 >> 3]; + $43 = $worldCoord + ($i$15 * 24 | 0) + 8 | 0; + HEAPF64[$37 + (($41 | 1) << 3) >> 3] = +HEAPF64[$43 >> 3]; + HEAPF64[$37 + (($41 | 2) << 3) >> 3] = 1.0; + HEAPF64[$37 + (($41 | 3) << 3) >> 3] = 0.0; + HEAPF64[$37 + (($41 | 4) << 3) >> 3] = 0.0; + HEAPF64[$37 + (($41 | 5) << 3) >> 3] = 0.0; + $56 = $screenCoord + ($i$15 << 4) | 0; + HEAPF64[$37 + (($41 | 6) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$56 >> 3]); + HEAPF64[$37 + (($41 | 7) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$56 >> 3]); + HEAPF64[$37 + (($41 | 8) << 3) >> 3] = 0.0; + HEAPF64[$37 + (($41 | 9) << 3) >> 3] = 0.0; + HEAPF64[$37 + (($41 | 10) << 3) >> 3] = 0.0; + HEAPF64[$37 + (($41 | 11) << 3) >> 3] = +HEAPF64[$39 >> 3]; + HEAPF64[$37 + (($41 | 12) << 3) >> 3] = +HEAPF64[$43 >> 3]; + HEAPF64[$37 + (($41 | 13) << 3) >> 3] = 1.0; + $83 = $screenCoord + ($i$15 << 4) + 8 | 0; + HEAPF64[$37 + (($41 | 14) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$83 >> 3]); + HEAPF64[$37 + (($41 | 15) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$83 >> 3]); + $96 = $i$15 << 1; + HEAPF64[$38 + ($96 << 3) >> 3] = +HEAPF64[$56 >> 3]; + HEAPF64[$38 + (($96 | 1) << 3) >> 3] = +HEAPF64[$83 >> 3]; + $i$15 = $i$15 + 1 | 0; + } while (($i$15 | 0) != ($num | 0)); + } + $102 = _arMatrixAllocTrans($33) | 0; + if (!$102) { + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arLog(3, 5176, $vararg_buffer3); + $$0 = -1; + break; + } + $104 = _arMatrixAllocMul($102, $33) | 0; + if (!$104) { + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arMatrixFree($102) | 0; + _arLog(3, 5202, $vararg_buffer5); + $$0 = -1; + break; + } + $106 = _arMatrixAllocMul($102, $35) | 0; + if (!$106) { + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arMatrixFree($102) | 0; + _arMatrixFree($104) | 0; + _arLog(3, 5228, $vararg_buffer7); + $$0 = -1; + break; + } + if ((_arMatrixSelfInv($104) | 0) < 0) { + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arMatrixFree($102) | 0; + _arMatrixFree($104) | 0; + _arMatrixFree($106) | 0; + _arLog(3, 5254, $vararg_buffer9); + $$0 = -1; + break; + } + $110 = _arMatrixAllocMul($104, $106) | 0; + if (!$110) { + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arMatrixFree($102) | 0; + _arMatrixFree($104) | 0; + _arMatrixFree($106) | 0; + _arLog(3, 5280, $vararg_buffer11); + $$0 = -1; + break; + } + $112 = HEAP32[$110 >> 2] | 0; + $114 = +HEAPF64[$112 + 48 >> 3]; + $118 = +HEAPF64[$matXc2U + 48 >> 3]; + $121 = +HEAPF64[$11 >> 3]; + $122 = (+HEAPF64[$112 + 24 >> 3] - $114 * $118) / $121; + $125 = +HEAPF64[$matXc2U + 16 >> 3]; + $129 = +HEAPF64[$matXc2U + 8 >> 3]; + $132 = +HEAPF64[$matXc2U >> 3]; + $133 = (+HEAPF64[$112 >> 3] - $114 * $125 - $122 * $129) / $132; + $135 = +HEAPF64[$112 + 56 >> 3]; + $140 = (+HEAPF64[$112 + 32 >> 3] - $118 * $135) / $121; + $147 = (+HEAPF64[$112 + 8 >> 3] - $125 * $135 - $129 * $140) / $132; + $151 = (+HEAPF64[$112 + 40 >> 3] - $118) / $121; + $157 = (+HEAPF64[$112 + 16 >> 3] - $125 - $129 * $151) / $132; + _arMatrixFree($33) | 0; + _arMatrixFree($35) | 0; + _arMatrixFree($102) | 0; + _arMatrixFree($104) | 0; + _arMatrixFree($106) | 0; + _arMatrixFree($110) | 0; + $163 = +Math_sqrt(+($114 * $114 + ($122 * $122 + $133 * $133))); + $169 = +Math_sqrt(+($135 * $135 + ($140 * $140 + $147 * $147))); + $170 = $133 / $163; + $171 = $122 / $163; + $172 = $114 / $163; + $173 = $147 / $169; + $174 = $140 / $169; + $175 = $135 / $169; + $177 = ($163 + $169) * .5; + $178 = $157 / $177; + $180 = 1.0 / $177; + if ($180 < 0.0) { + $$7$i1 = -$171; + $191 = -$175; + $193 = -$174; + $194 = -$172; + $197 = -$173; + $199 = -$170; + $t$sroa$0$0 = -$178; + $t$sroa$6$0 = -$180; + } else { + $$7$i1 = $171; + $191 = $175; + $193 = $174; + $194 = $172; + $197 = $173; + $199 = $170; + $t$sroa$0$0 = $178; + $t$sroa$6$0 = $151 / $177; + } + $195 = $191 * $$7$i1 - $193 * $194; + $200 = $197 * $194 - $191 * $199; + $203 = $193 * $199 - $197 * $$7$i1; + $209 = +Math_sqrt(+($203 * $203 + ($195 * $195 + $200 * $200))); + do if ($209 == 0.0) { + $$7$i2 = $$7$i1; + $377 = $191; + $379 = $193; + $380 = $194; + $383 = $197; + $385 = $199; + } else { + $211 = $195 / $209; + $212 = $200 / $209; + $213 = $203 / $209; + $218 = $191 * $194 + ($193 * $$7$i1 + $197 * $199); + $cb$0$i = $218 < 0.0 ? -$218 : $218; + $226 = (+Math_sqrt(+($cb$0$i + 1.0)) + +Math_sqrt(+(1.0 - $cb$0$i))) * .5; + if ($199 * $212 - $$7$i1 * $211 != 0.0) { + $f$0$i = 0; + $v1$sroa$0$0$i = $199; + $v1$sroa$16$0$i = $$7$i1; + $v1$sroa$31$0$i = $194; + $v3$sroa$0$0$i = $211; + $v3$sroa$31$0$i = $212; + $v3$sroa$60$0$i = $213; + } else { + $234 = $199 * $213 - $194 * $211 != 0.0; + $f$0$i = $234 ? 1 : 2; + $v1$sroa$0$0$i = $234 ? $199 : $194; + $v1$sroa$16$0$i = $234 ? $194 : $$7$i1; + $v1$sroa$31$0$i = $234 ? $$7$i1 : $199; + $v3$sroa$0$0$i = $234 ? $211 : $213; + $v3$sroa$31$0$i = $234 ? $213 : $212; + $v3$sroa$60$0$i = $234 ? $212 : $211; + } + $235 = $v1$sroa$0$0$i * $v3$sroa$31$0$i; + $236 = $v1$sroa$16$0$i * $v3$sroa$0$0$i; + $237 = $235 - $236; + if ($237 == 0.0) { + $$7$i2 = $$7$i1; + $377 = $191; + $379 = $193; + $380 = $194; + $383 = $197; + $385 = $199; + break; + } + $242 = ($v1$sroa$16$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$31$0$i) / $237; + $244 = $226 * $v3$sroa$31$0$i / $237; + $248 = $236 - $235; + $249 = ($v1$sroa$0$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$0$0$i) / $248; + $251 = $226 * $v3$sroa$0$0$i / $248; + $255 = $242 * $242 + $249 * $249 + 1.0; + $258 = $242 * $244 + $249 * $251; + $265 = $258 * $258 - $255 * ($244 * $244 + $251 * $251 + -1.0); + if ($265 < 0.0) { + $$7$i2 = $$7$i1; + $377 = $191; + $379 = $193; + $380 = $194; + $383 = $197; + $385 = $199; + break; + } + $268 = +Math_sqrt(+$265); + $270 = ($268 - $258) / $255; + $272 = $244 + $242 * $270; + $274 = $251 + $249 * $270; + $276 = (-$258 - $268) / $255; + $278 = $244 + $242 * $276; + $280 = $251 + $249 * $276; + $281 = ($f$0$i | 0) == 1; + $v3$sroa$31$0$v3$sroa$60$0$i = $281 ? $v3$sroa$31$0$i : $v3$sroa$60$0$i; + $v3$sroa$60$0$v3$sroa$31$0$i = $281 ? $v3$sroa$60$0$i : $v3$sroa$31$0$i; + $$7$i = $281 ? $270 : $274; + $$8$i = $281 ? $274 : $270; + $$9$i = $281 ? $276 : $280; + $$10$i = $281 ? $280 : $276; + $283 = ($f$0$i | 0) == 2 & ($281 ^ 1); + $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = $283 ? $v3$sroa$0$0$i : $v3$sroa$31$0$v3$sroa$60$0$i; + $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = $283 ? $v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$0$0$i; + $$8$$i = $283 ? $$8$i : $272; + $$$8$i = $283 ? $272 : $$8$i; + $$10$$i = $283 ? $$10$i : $278; + $$$10$i = $283 ? $278 : $$10$i; + if ($197 * $v3$sroa$60$0$v3$sroa$31$0$i - $193 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0) { + $f$2$i = 0; + $v2$sroa$0$0$i = $197; + $v2$sroa$16$0$i = $193; + $v2$sroa$31$0$i = $191; + $v3$sroa$0$2$i = $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i; + $v3$sroa$31$2$i = $v3$sroa$60$0$v3$sroa$31$0$i; + $v3$sroa$60$3$i = $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i; + } else { + $291 = $197 * $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i - $191 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0; + $f$2$i = $291 ? 1 : 2; + $v2$sroa$0$0$i = $291 ? $197 : $191; + $v2$sroa$16$0$i = $291 ? $191 : $193; + $v2$sroa$31$0$i = $291 ? $193 : $197; + $v3$sroa$0$2$i = $291 ? $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i : $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i; + $v3$sroa$31$2$i = $291 ? $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$60$0$v3$sroa$31$0$i; + $v3$sroa$60$3$i = $291 ? $v3$sroa$60$0$v3$sroa$31$0$i : $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i; + } + $292 = $v2$sroa$0$0$i * $v3$sroa$31$2$i; + $293 = $v2$sroa$16$0$i * $v3$sroa$0$2$i; + $294 = $292 - $293; + if ($294 == 0.0) { + $$7$i2 = $$7$i1; + $377 = $191; + $379 = $193; + $380 = $194; + $383 = $197; + $385 = $199; + break; + } + $299 = ($v2$sroa$16$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$31$2$i) / $294; + $301 = $226 * $v3$sroa$31$2$i / $294; + $305 = $293 - $292; + $306 = ($v2$sroa$0$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$0$2$i) / $305; + $308 = $226 * $v3$sroa$0$2$i / $305; + $312 = $299 * $299 + $306 * $306 + 1.0; + $315 = $299 * $301 + $306 * $308; + $322 = $315 * $315 - $312 * ($301 * $301 + $308 * $308 + -1.0); + if ($322 < 0.0) { + $$7$i2 = $$7$i1; + $377 = $191; + $379 = $193; + $380 = $194; + $383 = $197; + $385 = $199; + break; + } + $325 = +Math_sqrt(+$322); + $327 = ($325 - $315) / $312; + $329 = $301 + $299 * $327; + $331 = $308 + $306 * $327; + $333 = (-$315 - $325) / $312; + $335 = $301 + $299 * $333; + $337 = $308 + $306 * $333; + $338 = ($f$2$i | 0) == 1; + $$15$i = $338 ? $327 : $331; + $$16$i = $338 ? $331 : $327; + $$17$i = $338 ? $333 : $337; + $$18$i = $338 ? $337 : $333; + $340 = ($f$2$i | 0) == 2 & ($338 ^ 1); + $$16$$i = $340 ? $$16$i : $329; + $$$16$i = $340 ? $329 : $$16$i; + $$18$$i = $340 ? $$18$i : $335; + $$$18$i = $340 ? $335 : $$18$i; + $345 = $$$8$i * $$$16$i + ($$7$i * $$15$i + $$8$$i * $$16$$i); + $e1$0$i = $345 < 0.0 ? -$345 : $345; + $352 = $$$8$i * $$$18$i + ($$7$i * $$17$i + $$8$$i * $$18$$i); + $e2$0$i = $352 < 0.0 ? -$352 : $352; + $359 = $$$10$i * $$$16$i + ($$9$i * $$15$i + $$10$$i * $$16$$i); + $e3$0$i = $359 < 0.0 ? -$359 : $359; + $366 = $$$10$i * $$$18$i + ($$9$i * $$17$i + $$10$$i * $$18$$i); + $e4$0$i = $366 < 0.0 ? -$366 : $366; + if ($e1$0$i < $e2$0$i) if ($e1$0$i < $e3$0$i) { + if ($e1$0$i < $e4$0$i) { + $$7$i2 = $$7$i; + $377 = $$$16$i; + $379 = $$15$i; + $380 = $$$8$i; + $383 = $$16$$i; + $385 = $$8$$i; + break; + } + $$7$i2 = $$9$i; + $377 = $$$18$i; + $379 = $$17$i; + $380 = $$$10$i; + $383 = $$18$$i; + $385 = $$10$$i; + break; + } else { + if ($e3$0$i < $e4$0$i) { + $$7$i2 = $$9$i; + $377 = $$$16$i; + $379 = $$15$i; + $380 = $$$10$i; + $383 = $$16$$i; + $385 = $$10$$i; + break; + } + $$7$i2 = $$9$i; + $377 = $$$18$i; + $379 = $$17$i; + $380 = $$$10$i; + $383 = $$18$$i; + $385 = $$10$$i; + break; + } else if ($e2$0$i < $e3$0$i) { + if ($e2$0$i < $e4$0$i) { + $$7$i2 = $$7$i; + $377 = $$$18$i; + $379 = $$17$i; + $380 = $$$8$i; + $383 = $$18$$i; + $385 = $$8$$i; + break; + } + $$7$i2 = $$9$i; + $377 = $$$18$i; + $379 = $$17$i; + $380 = $$$10$i; + $383 = $$18$$i; + $385 = $$10$$i; + break; + } else { + if ($e3$0$i < $e4$0$i) { + $$7$i2 = $$9$i; + $377 = $$$16$i; + $379 = $$15$i; + $380 = $$$10$i; + $383 = $$16$$i; + $385 = $$10$$i; + break; + } + $$7$i2 = $$9$i; + $377 = $$$18$i; + $379 = $$17$i; + $380 = $$$10$i; + $383 = $$18$$i; + $385 = $$10$$i; + break; + } + } while (0); + $381 = $377 * $$7$i2 - $379 * $380; + $386 = $383 * $380 - $377 * $385; + $389 = $379 * $385 - $383 * $$7$i2; + $395 = +Math_sqrt(+($389 * $389 + ($381 * $381 + $386 * $386))); + HEAPF64[$initMatXw2Xc >> 3] = $385; + HEAPF64[$initMatXw2Xc + 32 >> 3] = $$7$i2; + HEAPF64[$initMatXw2Xc + 64 >> 3] = $380; + HEAPF64[$initMatXw2Xc + 8 >> 3] = $383; + HEAPF64[$initMatXw2Xc + 40 >> 3] = $379; + HEAPF64[$initMatXw2Xc + 72 >> 3] = $377; + HEAPF64[$initMatXw2Xc + 16 >> 3] = $381 / $395; + HEAPF64[$initMatXw2Xc + 48 >> 3] = $386 / $395; + HEAPF64[$initMatXw2Xc + 80 >> 3] = $389 / $395; + HEAPF64[$initMatXw2Xc + 24 >> 3] = $t$sroa$0$0; + HEAPF64[$initMatXw2Xc + 56 >> 3] = $t$sroa$6$0; + HEAPF64[$initMatXw2Xc + 88 >> 3] = $180; + $$0 = 0; + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, $robustFlag) { + $handle = $handle | 0; + $marker_info = $marker_info | 0; + $marker_num = $marker_num | 0; + $config = $config | 0; + $robustFlag = $robustFlag | 0; + var $$0 = 0.0, $$pre38 = 0, $0 = 0, $1 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $128 = 0, $13 = 0, $130 = 0, $133 = 0, $140 = 0, $15 = 0, $150 = 0, $160 = 0, $171 = 0, $2 = 0, $20 = 0.0, $209 = 0, $221 = 0, $224 = 0, $225 = 0, $226 = 0.0, $229 = 0.0, $232 = 0.0, $235 = 0.0, $239 = 0.0, $240 = 0, $241 = 0.0, $242 = 0, $258 = 0.0, $259 = 0.0, $276 = 0.0, $277 = 0.0, $294 = 0.0, $295 = 0.0, $3 = 0, $312 = 0.0, $313 = 0.0, $342 = 0, $344 = 0, $346 = 0, $348 = 0, $35 = 0, $38 = 0, $40 = 0, $43 = 0, $47 = 0, $5 = 0, $59 = 0.0, $6 = 0, $7 = 0, $75 = 0, $77 = 0, $79 = 0, $86 = 0, $err$0 = 0.0, $err$1 = 0.0, $err$2 = 0.0, $err$3 = 0.0, $err$4 = 0.0, $err$5 = 0.0, $err$6 = 0.0, $i$081 = 0, $i$165 = 0, $i$256 = 0, $i$942 = 0, $j$077 = 0, $j$1055 = 0, $j$171 = 0, $j$261 = 0, $j$357 = 0, $j$4 = 0, $j$553 = 0, $j$651 = 0, $j$749 = 0, $j$847 = 0, $j$945 = 0, $k$0$lcssa = 0, $k$078 = 0, $k$1 = 0, $k$2$lcssa = 0, $k$273 = 0, $k$3 = 0, $max$0$lcssa = 0, $max$062 = 0, $max$1 = 0, $max$2 = 0, $maxArea$063 = 0, $maxArea$1 = 0, $maxArea$2 = 0, $trans1 = 0, $trans2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vnum$0$lcssa = 0, $vnum$064 = 0, $vnum$1 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 208 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 200 | 0; + $vararg_buffer = sp + 192 | 0; + $trans1 = sp + 96 | 0; + $trans2 = sp; + $0 = $config + 4 | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = $config + 112 | 0; + $3 = $config + 120 | 0; + if (($1 | 0) > 0) { + $5 = HEAP32[$config >> 2] | 0; + $6 = ($marker_num | 0) > 0; + $7 = ($marker_num | 0) > 0; + $i$081 = 0; + do { + if (!(HEAP32[$5 + ($i$081 * 320 | 0) + 4 >> 2] | 0)) { + if ($6) { + $15 = HEAP32[$5 + ($i$081 * 320 | 0) >> 2] | 0; + $j$077 = 0; + $k$078 = -1; + while (1) { + if ((HEAP32[$marker_info + ($j$077 << 8) + 8 >> 2] | 0) == ($15 | 0)) { + $20 = +HEAPF64[$marker_info + ($j$077 << 8) + 40 >> 3]; + if ($20 < +HEAPF64[$2 >> 3]) $k$1 = $k$078; else if (($k$078 | 0) == -1) $k$1 = $j$077; else if (+HEAPF64[$marker_info + ($k$078 << 8) + 40 >> 3] < $20) $k$1 = $j$077; else $k$1 = $k$078; + } else $k$1 = $k$078; + $j$077 = $j$077 + 1 | 0; + if (($j$077 | 0) >= ($marker_num | 0)) { + $k$0$lcssa = $k$1; + break; + } else $k$078 = $k$1; + } + } else $k$0$lcssa = -1; + HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$0$lcssa; + if (($k$0$lcssa | 0) > -1) HEAP32[$marker_info + ($k$0$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$0$lcssa << 8) + 20 >> 2]; + } else { + $12 = $5 + ($i$081 * 320 | 0) + 312 | 0; + $13 = $5 + ($i$081 * 320 | 0) | 0; + if ($7) { + $j$171 = 0; + $k$273 = -1; + while (1) { + $35 = HEAP32[$marker_info + ($j$171 << 8) + 12 >> 2] | 0; + if (!$35) { + $38 = $marker_info + ($j$171 << 8) + 248 | 0; + $40 = HEAP32[$38 >> 2] | 0; + $43 = HEAP32[$38 + 4 >> 2] | 0; + if (($40 | 0) == 0 & ($43 | 0) == 0) label = 19; else { + $47 = $12; + if (($40 | 0) == (HEAP32[$47 >> 2] | 0) ? ($43 | 0) == (HEAP32[$47 + 4 >> 2] | 0) : 0) label = 20; else $k$3 = $k$273; + } + } else label = 19; + if ((label | 0) == 19) { + label = 0; + if (($35 | 0) == (HEAP32[$13 >> 2] | 0)) label = 20; else $k$3 = $k$273; + } + if ((label | 0) == 20) { + label = 0; + $59 = +HEAPF64[$marker_info + ($j$171 << 8) + 48 >> 3]; + if ($59 < +HEAPF64[$3 >> 3]) $k$3 = $k$273; else if (($k$273 | 0) == -1) $k$3 = $j$171; else if (+HEAPF64[$marker_info + ($k$273 << 8) + 48 >> 3] < $59) $k$3 = $j$171; else $k$3 = $k$273; + } + $j$171 = $j$171 + 1 | 0; + if (($j$171 | 0) >= ($marker_num | 0)) { + $k$2$lcssa = $k$3; + break; + } else $k$273 = $k$3; + } + } else $k$2$lcssa = -1; + HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$2$lcssa; + if (($k$2$lcssa | 0) > -1) HEAP32[$marker_info + ($k$2$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$2$lcssa << 8) + 24 >> 2]; + } + $i$081 = $i$081 + 1 | 0; + } while (($i$081 | 0) < ($1 | 0)); + } + if (($1 | 0) > 0) { + $i$165 = 0; + $max$062 = 0; + $maxArea$063 = 0; + $vnum$064 = 0; + while (1) { + $75 = HEAP32[$config >> 2] | 0; + $77 = HEAP32[$75 + ($i$165 * 320 | 0) + 304 >> 2] | 0; + do if (($77 | 0) < 0) { + $max$2 = $max$062; + $maxArea$2 = $maxArea$063; + $vnum$1 = $vnum$064; + } else { + $79 = $marker_info + ($77 << 8) | 0; + if (+_arGetTransMatSquare($handle, $79, +HEAPF64[$75 + ($i$165 * 320 | 0) + 8 >> 3], $trans2) > 4.0) { + HEAP32[(HEAP32[$config >> 2] | 0) + ($i$165 * 320 | 0) + 304 >> 2] = -1; + $86 = $marker_info + ($77 << 8) + 236 | 0; + if (HEAP32[$86 >> 2] | 0) { + $max$2 = $max$062; + $maxArea$2 = $maxArea$063; + $vnum$1 = $vnum$064; + break; + } + HEAP32[$86 >> 2] = 7; + $max$2 = $max$062; + $maxArea$2 = $maxArea$063; + $vnum$1 = $vnum$064; + break; + } + $$pre38 = HEAP32[$79 >> 2] | 0; + if (($vnum$064 | 0) == 0 | ($maxArea$063 | 0) < ($$pre38 | 0)) { + $j$261 = 0; + do { + HEAPF64[$trans1 + ($j$261 << 5) >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) >> 3]; + HEAPF64[$trans1 + ($j$261 << 5) + 8 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 8 >> 3]; + HEAPF64[$trans1 + ($j$261 << 5) + 16 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 16 >> 3]; + HEAPF64[$trans1 + ($j$261 << 5) + 24 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 24 >> 3]; + $j$261 = $j$261 + 1 | 0; + } while (($j$261 | 0) != 3); + $max$1 = $i$165; + $maxArea$1 = $$pre38; + } else { + $max$1 = $max$062; + $maxArea$1 = $maxArea$063; + } + $max$2 = $max$1; + $maxArea$2 = $maxArea$1; + $vnum$1 = $vnum$064 + 1 | 0; + } while (0); + $i$165 = $i$165 + 1 | 0; + if (($i$165 | 0) >= (HEAP32[$0 >> 2] | 0)) { + $max$0$lcssa = $max$2; + $vnum$0$lcssa = $vnum$1; + break; + } else { + $max$062 = $max$2; + $maxArea$063 = $maxArea$2; + $vnum$064 = $vnum$1; + } + } + } else { + $max$0$lcssa = 0; + $vnum$0$lcssa = 0; + } + do if (!$vnum$0$lcssa) label = 38; else if (($vnum$0$lcssa | 0) < (HEAP32[$config + 128 >> 2] | 0)) label = 38; else { + _arUtilMatMul($trans1, (HEAP32[$config >> 2] | 0) + ($max$0$lcssa * 320 | 0) + 112 | 0, $trans2) | 0; + $114 = $vnum$0$lcssa << 2; + $116 = _malloc($vnum$0$lcssa << 6) | 0; + if (!$116) { + _arLog(3, 5471, $vararg_buffer); + _exit(1); + } + $119 = _malloc($vnum$0$lcssa * 96 | 0) | 0; + if (!$119) { + _arLog(3, 5471, $vararg_buffer1); + _exit(1); + } + $121 = HEAP32[$0 >> 2] | 0; + if (($121 | 0) > 0) { + $123 = HEAP32[$config >> 2] | 0; + $i$256 = 0; + $j$357 = 0; + while (1) { + $125 = HEAP32[$123 + ($i$256 * 320 | 0) + 304 >> 2] | 0; + if (($125 | 0) < 0) $j$4 = $j$357; else { + $128 = HEAP32[$marker_info + ($125 << 8) + 16 >> 2] | 0; + $130 = (4 - $128 | 0) % 4 | 0; + $133 = $j$357 << 3; + HEAPF64[$116 + ($133 << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) >> 3]; + HEAPF64[$116 + (($133 | 1) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) + 8 >> 3]; + $140 = (5 - $128 | 0) % 4 | 0; + HEAPF64[$116 + (($133 | 2) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) >> 3]; + HEAPF64[$116 + (($133 | 3) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) + 8 >> 3]; + $150 = (6 - $128 | 0) % 4 | 0; + HEAPF64[$116 + (($133 | 4) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) >> 3]; + HEAPF64[$116 + (($133 | 5) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) + 8 >> 3]; + $160 = (7 - $128 | 0) % 4 | 0; + HEAPF64[$116 + (($133 | 6) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) >> 3]; + HEAPF64[$116 + (($133 | 7) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) + 8 >> 3]; + $171 = $j$357 * 12 | 0; + HEAPF64[$119 + ($171 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 208 >> 3]; + HEAPF64[$119 + (($171 | 1) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 216 >> 3]; + HEAPF64[$119 + (($171 | 2) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 224 >> 3]; + HEAPF64[$119 + (($171 | 3) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 232 >> 3]; + HEAPF64[$119 + ($171 + 4 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 240 >> 3]; + HEAPF64[$119 + ($171 + 5 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 248 >> 3]; + HEAPF64[$119 + ($171 + 6 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 256 >> 3]; + HEAPF64[$119 + ($171 + 7 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 264 >> 3]; + HEAPF64[$119 + ($171 + 8 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 272 >> 3]; + HEAPF64[$119 + ($171 + 9 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 280 >> 3]; + $209 = HEAP32[$config >> 2] | 0; + HEAPF64[$119 + ($171 + 10 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 288 >> 3]; + HEAPF64[$119 + ($171 + 11 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 296 >> 3]; + $j$4 = $j$357 + 1 | 0; + } + $i$256 = $i$256 + 1 | 0; + if (($i$256 | 0) >= ($121 | 0)) break; else $j$357 = $j$4; + } + } + $221 = $config + 104 | 0; + $224 = ($robustFlag | 0) != 0; + if (!(HEAP32[$221 >> 2] | 0)) { + $225 = $config + 8 | 0; + $226 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $225); + if ($224 & $226 >= 20.0) { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0; + $229 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225); + if (!($229 >= 20.0)) $err$0 = $229; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0; + $232 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225); + if (!($232 >= 20.0)) $err$0 = $232; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0; + $235 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225); + if (!($235 >= 20.0)) $err$0 = $235; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0; + $err$0 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225); + } + } + } + } else $err$0 = $226; + _free($119); + _free($116); + $err$6 = $err$0; + } else { + $239 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $trans1); + $240 = $config + 8 | 0; + $241 = +_arGetTransMat($handle, $240, $116, $119, $114, $240); + $242 = $239 < $241; + do if ($224) { + if ($242) { + $j$553 = 0; + do { + HEAPF64[$config + 8 + ($j$553 << 5) >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$553 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$553 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$553 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 24 >> 3]; + $j$553 = $j$553 + 1 | 0; + } while (($j$553 | 0) != 3); + $err$1 = $239; + } else $err$1 = $241; + if (!($err$1 >= 20.0)) $err$5 = $err$1; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0; + $258 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1); + $259 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240); + if ($258 < $259) { + $j$651 = 0; + do { + HEAPF64[$config + 8 + ($j$651 << 5) >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$651 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$651 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$651 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 24 >> 3]; + $j$651 = $j$651 + 1 | 0; + } while (($j$651 | 0) != 3); + $err$2 = $258; + } else $err$2 = $259; + if (!($err$2 >= 20.0)) $err$5 = $err$2; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0; + $276 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1); + $277 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240); + if ($276 < $277) { + $j$749 = 0; + do { + HEAPF64[$config + 8 + ($j$749 << 5) >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$749 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$749 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$749 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 24 >> 3]; + $j$749 = $j$749 + 1 | 0; + } while (($j$749 | 0) != 3); + $err$3 = $276; + } else $err$3 = $277; + if (!($err$3 >= 20.0)) $err$5 = $err$3; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0; + $294 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1); + $295 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240); + if ($294 < $295) { + $j$847 = 0; + do { + HEAPF64[$config + 8 + ($j$847 << 5) >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$847 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$847 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$847 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 24 >> 3]; + $j$847 = $j$847 + 1 | 0; + } while (($j$847 | 0) != 3); + $err$4 = $294; + } else $err$4 = $295; + if (!($err$4 >= 20.0)) $err$5 = $err$4; else { + _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0; + $312 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1); + $313 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240); + if ($312 < $313) $j$945 = 0; else { + $err$5 = $313; + break; + } + do { + HEAPF64[$config + 8 + ($j$945 << 5) >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$945 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$945 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$945 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 24 >> 3]; + $j$945 = $j$945 + 1 | 0; + } while (($j$945 | 0) != 3); + $err$5 = $312; + } + } + } + } + } else if ($242) { + $j$1055 = 0; + do { + HEAPF64[$config + 8 + ($j$1055 << 5) >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) >> 3]; + HEAPF64[$config + 8 + ($j$1055 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 8 >> 3]; + HEAPF64[$config + 8 + ($j$1055 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 16 >> 3]; + HEAPF64[$config + 8 + ($j$1055 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 24 >> 3]; + $j$1055 = $j$1055 + 1 | 0; + } while (($j$1055 | 0) != 3); + $err$5 = $239; + } else $err$5 = $241; while (0); + _free($119); + _free($116); + $err$6 = $err$5; + } + if ($err$6 < 20.0) { + HEAP32[$221 >> 2] = 1; + $$0 = $err$6; + break; + } + HEAP32[$221 >> 2] = 0; + $342 = HEAP32[$0 >> 2] | 0; + if (($342 | 0) > 0) { + $344 = HEAP32[$config >> 2] | 0; + $i$942 = 0; + do { + $346 = HEAP32[$344 + ($i$942 * 320 | 0) + 304 >> 2] | 0; + if (($346 | 0) >= 0) { + $348 = $marker_info + ($346 << 8) + 236 | 0; + if (!(HEAP32[$348 >> 2] | 0)) HEAP32[$348 >> 2] = 8; + } + $i$942 = $i$942 + 1 | 0; + } while (($i$942 | 0) < ($342 | 0)); + $$0 = $err$6; + } else $$0 = $err$6; + } while (0); + if ((label | 0) == 38) { + HEAP32[$config + 104 >> 2] = 0; + $$0 = -1.0; + } + STACKTOP = sp; + return +$$0; +} + +function __ZNSt3__112__next_primeEj($n) { + $n = $n | 0; + var $$ = 0, $$0 = 0, $$k0$0 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $108 = 0, $109 = 0, $113 = 0, $114 = 0, $118 = 0, $119 = 0, $12 = 0, $123 = 0, $124 = 0, $128 = 0, $129 = 0, $133 = 0, $134 = 0, $138 = 0, $139 = 0, $143 = 0, $144 = 0, $148 = 0, $149 = 0, $153 = 0, $154 = 0, $158 = 0, $159 = 0, $163 = 0, $164 = 0, $168 = 0, $169 = 0, $173 = 0, $174 = 0, $178 = 0, $179 = 0, $18 = 0, $183 = 0, $184 = 0, $188 = 0, $189 = 0, $19 = 0, $193 = 0, $194 = 0, $198 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $208 = 0, $209 = 0, $213 = 0, $214 = 0, $218 = 0, $219 = 0, $223 = 0, $224 = 0, $228 = 0, $229 = 0, $233 = 0, $234 = 0, $238 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $248 = 0, $249 = 0, $253 = 0, $254 = 0, $258 = 0, $259 = 0, $264 = 0, $265 = 0, $28 = 0, $29 = 0, $33 = 0, $34 = 0, $38 = 0, $39 = 0, $4 = 0, $43 = 0, $44 = 0, $48 = 0, $49 = 0, $53 = 0, $54 = 0, $58 = 0, $59 = 0, $6 = 0, $63 = 0, $64 = 0, $68 = 0, $69 = 0, $7 = 0, $73 = 0, $74 = 0, $78 = 0, $79 = 0, $83 = 0, $84 = 0, $88 = 0, $89 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $i$0 = 0, $in$0 = 0, $j$0 = 0, $k0$0 = 0, $storemerge = 0, $storemerge$lcssa = 0, $storemerge$lcssa15 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 8 | 0; + $1 = sp + 4 | 0; + $2 = sp; + HEAP32[$1 >> 2] = $n; + do if ($n >>> 0 < 212) { + $4 = __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3520, 3712, $1, $0) | 0; + $$0 = HEAP32[$4 >> 2] | 0; + } else { + $6 = ($n >>> 0) / 210 | 0; + $7 = $6 * 210 | 0; + HEAP32[$2 >> 2] = $n - $7; + $12 = (__ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3712, 3904, $2, $0) | 0) - 3712 >> 2; + $in$0 = $12; + $k0$0 = $6; + $storemerge = (HEAP32[3712 + ($12 << 2) >> 2] | 0) + $7 | 0; + L4 : while (1) { + $j$0 = 5; + while (1) { + if ($j$0 >>> 0 >= 47) { + $i$0 = 211; + label = 8; + break; + } + $18 = HEAP32[3520 + ($j$0 << 2) >> 2] | 0; + $19 = ($storemerge >>> 0) / ($18 >>> 0) | 0; + if ($19 >>> 0 < $18 >>> 0) { + $storemerge$lcssa15 = $storemerge; + label = 106; + break L4; + } + if (($storemerge | 0) == (Math_imul($19, $18) | 0)) break; else $j$0 = $j$0 + 1 | 0; + } + L10 : do if ((label | 0) == 8) while (1) { + label = 0; + $24 = ($storemerge >>> 0) / ($i$0 >>> 0) | 0; + if ($24 >>> 0 < $i$0 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($24, $i$0) | 0)) break L10; + $28 = $i$0 + 10 | 0; + $29 = ($storemerge >>> 0) / ($28 >>> 0) | 0; + if ($29 >>> 0 < $28 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($29, $28) | 0)) break L10; + $33 = $i$0 + 12 | 0; + $34 = ($storemerge >>> 0) / ($33 >>> 0) | 0; + if ($34 >>> 0 < $33 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($34, $33) | 0)) break L10; + $38 = $i$0 + 16 | 0; + $39 = ($storemerge >>> 0) / ($38 >>> 0) | 0; + if ($39 >>> 0 < $38 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($39, $38) | 0)) break L10; + $43 = $i$0 + 18 | 0; + $44 = ($storemerge >>> 0) / ($43 >>> 0) | 0; + if ($44 >>> 0 < $43 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($44, $43) | 0)) break L10; + $48 = $i$0 + 22 | 0; + $49 = ($storemerge >>> 0) / ($48 >>> 0) | 0; + if ($49 >>> 0 < $48 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($49, $48) | 0)) break L10; + $53 = $i$0 + 28 | 0; + $54 = ($storemerge >>> 0) / ($53 >>> 0) | 0; + if ($54 >>> 0 < $53 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($54, $53) | 0)) break L10; + $58 = $i$0 + 30 | 0; + $59 = ($storemerge >>> 0) / ($58 >>> 0) | 0; + if ($59 >>> 0 < $58 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($59, $58) | 0)) break L10; + $63 = $i$0 + 36 | 0; + $64 = ($storemerge >>> 0) / ($63 >>> 0) | 0; + if ($64 >>> 0 < $63 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($64, $63) | 0)) break L10; + $68 = $i$0 + 40 | 0; + $69 = ($storemerge >>> 0) / ($68 >>> 0) | 0; + if ($69 >>> 0 < $68 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($69, $68) | 0)) break L10; + $73 = $i$0 + 42 | 0; + $74 = ($storemerge >>> 0) / ($73 >>> 0) | 0; + if ($74 >>> 0 < $73 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($74, $73) | 0)) break L10; + $78 = $i$0 + 46 | 0; + $79 = ($storemerge >>> 0) / ($78 >>> 0) | 0; + if ($79 >>> 0 < $78 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($79, $78) | 0)) break L10; + $83 = $i$0 + 52 | 0; + $84 = ($storemerge >>> 0) / ($83 >>> 0) | 0; + if ($84 >>> 0 < $83 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($84, $83) | 0)) break L10; + $88 = $i$0 + 58 | 0; + $89 = ($storemerge >>> 0) / ($88 >>> 0) | 0; + if ($89 >>> 0 < $88 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($89, $88) | 0)) break L10; + $93 = $i$0 + 60 | 0; + $94 = ($storemerge >>> 0) / ($93 >>> 0) | 0; + if ($94 >>> 0 < $93 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($94, $93) | 0)) break L10; + $98 = $i$0 + 66 | 0; + $99 = ($storemerge >>> 0) / ($98 >>> 0) | 0; + if ($99 >>> 0 < $98 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($99, $98) | 0)) break L10; + $103 = $i$0 + 70 | 0; + $104 = ($storemerge >>> 0) / ($103 >>> 0) | 0; + if ($104 >>> 0 < $103 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($104, $103) | 0)) break L10; + $108 = $i$0 + 72 | 0; + $109 = ($storemerge >>> 0) / ($108 >>> 0) | 0; + if ($109 >>> 0 < $108 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($109, $108) | 0)) break L10; + $113 = $i$0 + 78 | 0; + $114 = ($storemerge >>> 0) / ($113 >>> 0) | 0; + if ($114 >>> 0 < $113 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($114, $113) | 0)) break L10; + $118 = $i$0 + 82 | 0; + $119 = ($storemerge >>> 0) / ($118 >>> 0) | 0; + if ($119 >>> 0 < $118 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($119, $118) | 0)) break L10; + $123 = $i$0 + 88 | 0; + $124 = ($storemerge >>> 0) / ($123 >>> 0) | 0; + if ($124 >>> 0 < $123 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($124, $123) | 0)) break L10; + $128 = $i$0 + 96 | 0; + $129 = ($storemerge >>> 0) / ($128 >>> 0) | 0; + if ($129 >>> 0 < $128 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($129, $128) | 0)) break L10; + $133 = $i$0 + 100 | 0; + $134 = ($storemerge >>> 0) / ($133 >>> 0) | 0; + if ($134 >>> 0 < $133 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($134, $133) | 0)) break L10; + $138 = $i$0 + 102 | 0; + $139 = ($storemerge >>> 0) / ($138 >>> 0) | 0; + if ($139 >>> 0 < $138 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($139, $138) | 0)) break L10; + $143 = $i$0 + 106 | 0; + $144 = ($storemerge >>> 0) / ($143 >>> 0) | 0; + if ($144 >>> 0 < $143 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($144, $143) | 0)) break L10; + $148 = $i$0 + 108 | 0; + $149 = ($storemerge >>> 0) / ($148 >>> 0) | 0; + if ($149 >>> 0 < $148 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($149, $148) | 0)) break L10; + $153 = $i$0 + 112 | 0; + $154 = ($storemerge >>> 0) / ($153 >>> 0) | 0; + if ($154 >>> 0 < $153 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($154, $153) | 0)) break L10; + $158 = $i$0 + 120 | 0; + $159 = ($storemerge >>> 0) / ($158 >>> 0) | 0; + if ($159 >>> 0 < $158 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($159, $158) | 0)) break L10; + $163 = $i$0 + 126 | 0; + $164 = ($storemerge >>> 0) / ($163 >>> 0) | 0; + if ($164 >>> 0 < $163 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($164, $163) | 0)) break L10; + $168 = $i$0 + 130 | 0; + $169 = ($storemerge >>> 0) / ($168 >>> 0) | 0; + if ($169 >>> 0 < $168 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($169, $168) | 0)) break L10; + $173 = $i$0 + 136 | 0; + $174 = ($storemerge >>> 0) / ($173 >>> 0) | 0; + if ($174 >>> 0 < $173 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($174, $173) | 0)) break L10; + $178 = $i$0 + 138 | 0; + $179 = ($storemerge >>> 0) / ($178 >>> 0) | 0; + if ($179 >>> 0 < $178 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($179, $178) | 0)) break L10; + $183 = $i$0 + 142 | 0; + $184 = ($storemerge >>> 0) / ($183 >>> 0) | 0; + if ($184 >>> 0 < $183 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($184, $183) | 0)) break L10; + $188 = $i$0 + 148 | 0; + $189 = ($storemerge >>> 0) / ($188 >>> 0) | 0; + if ($189 >>> 0 < $188 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($189, $188) | 0)) break L10; + $193 = $i$0 + 150 | 0; + $194 = ($storemerge >>> 0) / ($193 >>> 0) | 0; + if ($194 >>> 0 < $193 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($194, $193) | 0)) break L10; + $198 = $i$0 + 156 | 0; + $199 = ($storemerge >>> 0) / ($198 >>> 0) | 0; + if ($199 >>> 0 < $198 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($199, $198) | 0)) break L10; + $203 = $i$0 + 162 | 0; + $204 = ($storemerge >>> 0) / ($203 >>> 0) | 0; + if ($204 >>> 0 < $203 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($204, $203) | 0)) break L10; + $208 = $i$0 + 166 | 0; + $209 = ($storemerge >>> 0) / ($208 >>> 0) | 0; + if ($209 >>> 0 < $208 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($209, $208) | 0)) break L10; + $213 = $i$0 + 168 | 0; + $214 = ($storemerge >>> 0) / ($213 >>> 0) | 0; + if ($214 >>> 0 < $213 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($214, $213) | 0)) break L10; + $218 = $i$0 + 172 | 0; + $219 = ($storemerge >>> 0) / ($218 >>> 0) | 0; + if ($219 >>> 0 < $218 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($219, $218) | 0)) break L10; + $223 = $i$0 + 178 | 0; + $224 = ($storemerge >>> 0) / ($223 >>> 0) | 0; + if ($224 >>> 0 < $223 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($224, $223) | 0)) break L10; + $228 = $i$0 + 180 | 0; + $229 = ($storemerge >>> 0) / ($228 >>> 0) | 0; + if ($229 >>> 0 < $228 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($229, $228) | 0)) break L10; + $233 = $i$0 + 186 | 0; + $234 = ($storemerge >>> 0) / ($233 >>> 0) | 0; + if ($234 >>> 0 < $233 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($234, $233) | 0)) break L10; + $238 = $i$0 + 190 | 0; + $239 = ($storemerge >>> 0) / ($238 >>> 0) | 0; + if ($239 >>> 0 < $238 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($239, $238) | 0)) break L10; + $243 = $i$0 + 192 | 0; + $244 = ($storemerge >>> 0) / ($243 >>> 0) | 0; + if ($244 >>> 0 < $243 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($244, $243) | 0)) break L10; + $248 = $i$0 + 196 | 0; + $249 = ($storemerge >>> 0) / ($248 >>> 0) | 0; + if ($249 >>> 0 < $248 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($249, $248) | 0)) break L10; + $253 = $i$0 + 198 | 0; + $254 = ($storemerge >>> 0) / ($253 >>> 0) | 0; + if ($254 >>> 0 < $253 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($254, $253) | 0)) break L10; + $258 = $i$0 + 208 | 0; + $259 = ($storemerge >>> 0) / ($258 >>> 0) | 0; + if ($259 >>> 0 < $258 >>> 0) { + $storemerge$lcssa = $storemerge; + label = 105; + break L4; + } + if (($storemerge | 0) == (Math_imul($259, $258) | 0)) break; else { + $i$0 = $i$0 + 210 | 0; + label = 8; + } + } while (0); + $264 = $in$0 + 1 | 0; + $265 = ($264 | 0) == 48; + $$ = $265 ? 0 : $264; + $$k0$0 = ($265 & 1) + $k0$0 | 0; + $in$0 = $$; + $k0$0 = $$k0$0; + $storemerge = (HEAP32[3712 + ($$ << 2) >> 2] | 0) + ($$k0$0 * 210 | 0) | 0; + } + if ((label | 0) == 105) { + HEAP32[$1 >> 2] = $storemerge$lcssa; + $$0 = $storemerge$lcssa; + break; + } else if ((label | 0) == 106) { + HEAP32[$1 >> 2] = $storemerge$lcssa15; + $$0 = $storemerge$lcssa15; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $image_thresh = $image_thresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$096 = 0; + $pnt1$097 = $0; + $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$095 >> 1] = 0; + HEAP16[$pnt1$097 >> 1] = 0; + $i$096 = $i$096 + 1 | 0; + if (($i$096 | 0) >= ($xsize | 0)) break; else { + $pnt1$097 = $pnt1$097 + 2 | 0; + $pnt2$095 = $pnt2$095 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$190 = 0; + $pnt1$191 = $0; + $pnt2$189 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$189 >> 1] = 0; + HEAP16[$pnt1$191 >> 1] = 0; + $i$190 = $i$190 + 1 | 0; + if (($i$190 | 0) >= ($ysize | 0)) break; else { + $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0; + $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$083 = 1; + $pnt$086 = $image + $17 | 0; + $pnt2$281 = $0 + ($17 << 1) | 0; + $pnt_thresh$085 = $image_thresh + $17 | 0; + $wk_max$082 = 0; + L13 : while (1) { + if ($26) { + $dpnt$163 = $dpnt$080; + $i$270 = 1; + $pnt$173 = $pnt$086; + $pnt2$364 = $pnt2$281; + $pnt_thresh$172 = $pnt_thresh$085; + $wk_max$165 = $wk_max$082; + while (1) { + do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) { + HEAP8[$dpnt$163 >> 0] = -1; + $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$364 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$364 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$364 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) { + $wk_max$2 = $wk_max$165; + break; + } + HEAP32[$193 >> 2] = $i$270; + $wk_max$2 = $wk_max$165; + break; + } else { + $196 = $wk_max$165 + 1 | 0; + if (($wk_max$165 | 0) > 32767) break L13; + HEAP16[$pnt2$364 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$165 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$364 >> 1] = $62; + if (($wk_max$165 | 0) > 0) { + $k$059 = 0; + $wk$060 = $16; + while (1) { + if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62; + $k$059 = $k$059 + 1 | 0; + if (($k$059 | 0) >= ($wk_max$165 | 0)) { + $79 = $62; + break; + } else $wk$060 = $wk$060 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$364 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) { + $k$156 = 0; + $wk$157 = $16; + while (1) { + if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59; + $k$156 = $k$156 + 1 | 0; + if (($k$156 | 0) >= ($wk_max$165 | 0)) { + $79 = $59; + break; + } else $wk$157 = $wk$157 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$364 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$364 >> 1] = $105; + if (($wk_max$165 | 0) > 0) { + $k$252 = 0; + $wk$253 = $16; + while (1) { + if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105; + $k$252 = $k$252 + 1 | 0; + if (($k$252 | 0) >= ($wk_max$165 | 0)) { + $122 = $105; + break; + } else $wk$253 = $wk$253 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$364 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) { + $k$349 = 0; + $wk$350 = $16; + while (1) { + if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102; + $k$349 = $k$349 + 1 | 0; + if (($k$349 | 0) >= ($wk_max$165 | 0)) { + $122 = $102; + break; + } else $wk$350 = $wk$350 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083; + $wk_max$2 = $wk_max$165; + } else { + HEAP16[$pnt2$364 >> 1] = 0; + HEAP8[$dpnt$163 >> 0] = 0; + $wk_max$2 = $wk_max$165; + } while (0); + $i$270 = $i$270 + 1 | 0; + $216 = $pnt$173 + 1 | 0; + $217 = $pnt_thresh$172 + 1 | 0; + $218 = $pnt2$364 + 2 | 0; + $219 = $dpnt$163 + 1 | 0; + if (($i$270 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $219; + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $218; + $pnt_thresh$1$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$163 = $219; + $pnt$173 = $216; + $pnt2$364 = $218; + $pnt_thresh$172 = $217; + $wk_max$165 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$080; + $pnt$1$lcssa = $pnt$086; + $pnt2$3$lcssa = $pnt2$281; + $pnt_thresh$1$lcssa = $pnt_thresh$085; + $wk_max$1$lcssa = $wk_max$082; + } + $j$083 = $j$083 + 1 | 0; + if (($j$083 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$080 = $dpnt$1$lcssa + 2 | 0; + $pnt$086 = $pnt$1$lcssa + 2 | 0; + $pnt2$281 = $pnt2$3$lcssa + 4 | 0; + $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0; + $wk_max$082 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $227 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$345 = 1; + $j$146 = 1; + $wk$447 = $16; + while (1) { + $229 = HEAP32[$wk$447 >> 2] | 0; + if (($229 | 0) == ($i$345 | 0)) { + $235 = $j$146; + $j$2 = $j$146 + 1 | 0; + } else { + $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0; + $j$2 = $j$146; + } + HEAP32[$wk$447 >> 2] = $235; + if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) { + $i$345 = $i$345 + 1 | 0; + $j$146 = $j$2; + $wk$447 = $wk$447 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $239 = $labelInfo + 8 | 0; + $240 = $j$1$lcssa + -1 | 0; + HEAP32[$239 >> 2] = $240; + if (!$240) $$0 = 0; else { + _memset($227 | 0, 0, $240 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$443 = 0; + do { + $247 = $i$443 << 2; + HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0; + $i$443 = $i$443 + 1 | 0; + } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$541 = 0; + do { + $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0; + $262 = $i$541 * 7 | 0; + $265 = $labelInfo + 12 + ($261 << 2) | 0; + HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0); + $272 = $261 << 1; + $273 = $labelInfo + 655376 + ($272 << 3) | 0; + HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0); + $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0); + $284 = $261 << 2; + $285 = $labelInfo + 131084 + ($284 << 2) | 0; + $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0; + if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289; + $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310; + $i$541 = $i$541 + 1 | 0; + } while (($i$541 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$239 >> 2] | 0) > 0) { + $i$640 = 0; + do { + $314 = $labelInfo + 12 + ($i$640 << 2) | 0; + $317 = $i$640 << 1; + $318 = $labelInfo + 655376 + ($317 << 3) | 0; + HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0); + $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0); + $i$640 = $i$640 + 1 | 0; + } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $image_thresh = $image_thresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$096 = 0; + $pnt1$097 = $0; + $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$095 >> 1] = 0; + HEAP16[$pnt1$097 >> 1] = 0; + $i$096 = $i$096 + 1 | 0; + if (($i$096 | 0) >= ($xsize | 0)) break; else { + $pnt1$097 = $pnt1$097 + 2 | 0; + $pnt2$095 = $pnt2$095 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$190 = 0; + $pnt1$191 = $0; + $pnt2$189 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$189 >> 1] = 0; + HEAP16[$pnt1$191 >> 1] = 0; + $i$190 = $i$190 + 1 | 0; + if (($i$190 | 0) >= ($ysize | 0)) break; else { + $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0; + $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$083 = 1; + $pnt$086 = $image + $17 | 0; + $pnt2$281 = $0 + ($17 << 1) | 0; + $pnt_thresh$085 = $image_thresh + $17 | 0; + $wk_max$082 = 0; + L13 : while (1) { + if ($26) { + $dpnt$163 = $dpnt$080; + $i$270 = 1; + $pnt$173 = $pnt$086; + $pnt2$364 = $pnt2$281; + $pnt_thresh$172 = $pnt_thresh$085; + $wk_max$165 = $wk_max$082; + while (1) { + do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) { + HEAP16[$pnt2$364 >> 1] = 0; + HEAP8[$dpnt$163 >> 0] = 0; + $wk_max$2 = $wk_max$165; + } else { + HEAP8[$dpnt$163 >> 0] = -1; + $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$364 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$364 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$364 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) { + $wk_max$2 = $wk_max$165; + break; + } + HEAP32[$193 >> 2] = $i$270; + $wk_max$2 = $wk_max$165; + break; + } else { + $196 = $wk_max$165 + 1 | 0; + if (($wk_max$165 | 0) > 32767) break L13; + HEAP16[$pnt2$364 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$165 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$364 >> 1] = $62; + if (($wk_max$165 | 0) > 0) { + $k$059 = 0; + $wk$060 = $16; + while (1) { + if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62; + $k$059 = $k$059 + 1 | 0; + if (($k$059 | 0) >= ($wk_max$165 | 0)) { + $79 = $62; + break; + } else $wk$060 = $wk$060 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$364 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) { + $k$156 = 0; + $wk$157 = $16; + while (1) { + if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59; + $k$156 = $k$156 + 1 | 0; + if (($k$156 | 0) >= ($wk_max$165 | 0)) { + $79 = $59; + break; + } else $wk$157 = $wk$157 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$364 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083; + $wk_max$2 = $wk_max$165; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$364 >> 1] = $105; + if (($wk_max$165 | 0) > 0) { + $k$252 = 0; + $wk$253 = $16; + while (1) { + if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105; + $k$252 = $k$252 + 1 | 0; + if (($k$252 | 0) >= ($wk_max$165 | 0)) { + $122 = $105; + break; + } else $wk$253 = $wk$253 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$364 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) { + $k$349 = 0; + $wk$350 = $16; + while (1) { + if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102; + $k$349 = $k$349 + 1 | 0; + if (($k$349 | 0) >= ($wk_max$165 | 0)) { + $122 = $102; + break; + } else $wk$350 = $wk$350 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083; + $wk_max$2 = $wk_max$165; + } while (0); + $i$270 = $i$270 + 1 | 0; + $216 = $pnt$173 + 1 | 0; + $217 = $pnt_thresh$172 + 1 | 0; + $218 = $pnt2$364 + 2 | 0; + $219 = $dpnt$163 + 1 | 0; + if (($i$270 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $219; + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $218; + $pnt_thresh$1$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$163 = $219; + $pnt$173 = $216; + $pnt2$364 = $218; + $pnt_thresh$172 = $217; + $wk_max$165 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$080; + $pnt$1$lcssa = $pnt$086; + $pnt2$3$lcssa = $pnt2$281; + $pnt_thresh$1$lcssa = $pnt_thresh$085; + $wk_max$1$lcssa = $wk_max$082; + } + $j$083 = $j$083 + 1 | 0; + if (($j$083 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$080 = $dpnt$1$lcssa + 2 | 0; + $pnt$086 = $pnt$1$lcssa + 2 | 0; + $pnt2$281 = $pnt2$3$lcssa + 4 | 0; + $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0; + $wk_max$082 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $227 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$345 = 1; + $j$146 = 1; + $wk$447 = $16; + while (1) { + $229 = HEAP32[$wk$447 >> 2] | 0; + if (($229 | 0) == ($i$345 | 0)) { + $235 = $j$146; + $j$2 = $j$146 + 1 | 0; + } else { + $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0; + $j$2 = $j$146; + } + HEAP32[$wk$447 >> 2] = $235; + if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) { + $i$345 = $i$345 + 1 | 0; + $j$146 = $j$2; + $wk$447 = $wk$447 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $239 = $labelInfo + 8 | 0; + $240 = $j$1$lcssa + -1 | 0; + HEAP32[$239 >> 2] = $240; + if (!$240) $$0 = 0; else { + _memset($227 | 0, 0, $240 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$443 = 0; + do { + $247 = $i$443 << 2; + HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0; + $i$443 = $i$443 + 1 | 0; + } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$541 = 0; + do { + $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0; + $262 = $i$541 * 7 | 0; + $265 = $labelInfo + 12 + ($261 << 2) | 0; + HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0); + $272 = $261 << 1; + $273 = $labelInfo + 655376 + ($272 << 3) | 0; + HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0); + $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0); + $284 = $261 << 2; + $285 = $labelInfo + 131084 + ($284 << 2) | 0; + $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0; + if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289; + $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310; + $i$541 = $i$541 + 1 | 0; + } while (($i$541 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$239 >> 2] | 0) > 0) { + $i$640 = 0; + do { + $314 = $labelInfo + 12 + ($i$640 << 2) | 0; + $317 = $i$640 << 1; + $318 = $labelInfo + 655376 + ($317 << 3) | 0; + HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0); + $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0); + $i$640 = $i$640 + 1 | 0; + } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0; + do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($50 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $50; + $53 = ($50 << 16 >> 16) * 7 | 0; + $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1; + $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265; + $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0; + HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $74 = $73 << 16 >> 16; + $75 = $73 << 16 >> 16 > 0; + if ($69 << 16 >> 16 <= 0) { + if ($75) { + HEAP16[$pnt2$368 >> 1] = $73; + $175 = $74 * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($195 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $195; + $198 = ($195 << 16 >> 16) * 7 | 0; + $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1; + $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265; + $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0; + HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076; + $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0; + if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$212 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $215 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $215; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16; + $220 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $215; + break; + } + } + if ($75) { + $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0; + if (($78 | 0) > ($81 | 0)) { + HEAP16[$pnt2$368 >> 1] = $81; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $98 = $81; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $98 = $81; + } else { + HEAP16[$pnt2$368 >> 1] = $78; + if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $98 = $78; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $98 = $78; + } + $100 = ($98 << 16 >> 16) * 7 | 0; + $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1; + $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265; + $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0; + HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($116 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $69; + $156 = $70 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076; + $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($121 | 0) > ($124 | 0)) { + HEAP16[$pnt2$368 >> 1] = $124; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $141 = $124; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $141 = $124; + } else { + HEAP16[$pnt2$368 >> 1] = $121; + if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $141 = $121; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $141 = $121; + } + $143 = ($141 << 16 >> 16) * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $235 = $pnt$169 + 4 | 0; + $236 = $pnt2$368 + 2 | 0; + $237 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $237; + $pnt$1$lcssa = $235; + $pnt2$3$lcssa = $236; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $237; + $pnt$169 = $235; + $pnt2$368 = $236; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $244 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $246 = HEAP32[$wk$444 >> 2] | 0; + if (($246 | 0) == ($i$342 | 0)) { + $252 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $252; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $256 = $labelInfo + 8 | 0; + $257 = $j$1$lcssa + -1 | 0; + HEAP32[$256 >> 2] = $257; + if (!$257) $$0 = 0; else { + _memset($244 | 0, 0, $257 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $264 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $279 = $i$538 * 7 | 0; + $282 = $labelInfo + 12 + ($278 << 2) | 0; + HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0); + $289 = $278 << 1; + $290 = $labelInfo + 655376 + ($289 << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0); + $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0; + HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0); + $301 = $278 << 2; + $302 = $labelInfo + 131084 + ($301 << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0; + $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0; + if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320; + $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0; + $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0; + if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$256 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $331 = $labelInfo + 12 + ($i$637 << 2) | 0; + $334 = $i$637 << 1; + $335 = $labelInfo + 655376 + ($334 << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0); + $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0; + HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0; + do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($50 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $50; + $53 = ($50 << 16 >> 16) * 7 | 0; + $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1; + $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265; + $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0; + HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $74 = $73 << 16 >> 16; + $75 = $73 << 16 >> 16 > 0; + if ($69 << 16 >> 16 <= 0) { + if ($75) { + HEAP16[$pnt2$368 >> 1] = $73; + $175 = $74 * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($195 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $195; + $198 = ($195 << 16 >> 16) * 7 | 0; + $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1; + $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265; + $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0; + HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076; + $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0; + if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$212 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $215 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $215; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16; + $220 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $215; + break; + } + } + if ($75) { + $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0; + if (($78 | 0) > ($81 | 0)) { + HEAP16[$pnt2$368 >> 1] = $81; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $98 = $81; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $98 = $81; + } else { + HEAP16[$pnt2$368 >> 1] = $78; + if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $98 = $78; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $98 = $78; + } + $100 = ($98 << 16 >> 16) * 7 | 0; + $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1; + $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265; + $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0; + HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($116 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $69; + $156 = $70 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076; + $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($121 | 0) > ($124 | 0)) { + HEAP16[$pnt2$368 >> 1] = $124; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $141 = $124; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $141 = $124; + } else { + HEAP16[$pnt2$368 >> 1] = $121; + if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $141 = $121; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $141 = $121; + } + $143 = ($141 << 16 >> 16) * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $235 = $pnt$169 + 4 | 0; + $236 = $pnt2$368 + 2 | 0; + $237 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $237; + $pnt$1$lcssa = $235; + $pnt2$3$lcssa = $236; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $237; + $pnt$169 = $235; + $pnt2$368 = $236; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $244 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $246 = HEAP32[$wk$444 >> 2] | 0; + if (($246 | 0) == ($i$342 | 0)) { + $252 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $252; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $256 = $labelInfo + 8 | 0; + $257 = $j$1$lcssa + -1 | 0; + HEAP32[$256 >> 2] = $257; + if (!$257) $$0 = 0; else { + _memset($244 | 0, 0, $257 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $264 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $279 = $i$538 * 7 | 0; + $282 = $labelInfo + 12 + ($278 << 2) | 0; + HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0); + $289 = $278 << 1; + $290 = $labelInfo + 655376 + ($289 << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0); + $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0; + HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0); + $301 = $278 << 2; + $302 = $labelInfo + 131084 + ($301 << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0; + $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0; + if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320; + $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0; + $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0; + if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$256 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $331 = $labelInfo + 12 + ($i$637 << 2) | 0; + $334 = $i$637 << 1; + $335 = $labelInfo + 655376 + ($334 << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0); + $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0; + HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0; + do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($50 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $50; + $53 = ($50 << 16 >> 16) * 7 | 0; + $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1; + $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265; + $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0; + HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $74 = $73 << 16 >> 16; + $75 = $73 << 16 >> 16 > 0; + if ($69 << 16 >> 16 <= 0) { + if ($75) { + HEAP16[$pnt2$368 >> 1] = $73; + $175 = $74 * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($195 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $195; + $198 = ($195 << 16 >> 16) * 7 | 0; + $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1; + $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265; + $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0; + HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076; + $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0; + if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$212 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $215 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $215; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16; + $220 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $215; + break; + } + } + if ($75) { + $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0; + if (($78 | 0) > ($81 | 0)) { + HEAP16[$pnt2$368 >> 1] = $81; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $98 = $81; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $98 = $81; + } else { + HEAP16[$pnt2$368 >> 1] = $78; + if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $98 = $78; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $98 = $78; + } + $100 = ($98 << 16 >> 16) * 7 | 0; + $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1; + $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265; + $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0; + HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($116 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $69; + $156 = $70 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076; + $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($121 | 0) > ($124 | 0)) { + HEAP16[$pnt2$368 >> 1] = $124; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $141 = $124; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $141 = $124; + } else { + HEAP16[$pnt2$368 >> 1] = $121; + if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $141 = $121; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $141 = $121; + } + $143 = ($141 << 16 >> 16) * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $235 = $pnt$169 + 4 | 0; + $236 = $pnt2$368 + 2 | 0; + $237 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $237; + $pnt$1$lcssa = $235; + $pnt2$3$lcssa = $236; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $237; + $pnt$169 = $235; + $pnt2$368 = $236; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $244 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $246 = HEAP32[$wk$444 >> 2] | 0; + if (($246 | 0) == ($i$342 | 0)) { + $252 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $252; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $256 = $labelInfo + 8 | 0; + $257 = $j$1$lcssa + -1 | 0; + HEAP32[$256 >> 2] = $257; + if (!$257) $$0 = 0; else { + _memset($244 | 0, 0, $257 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $264 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $279 = $i$538 * 7 | 0; + $282 = $labelInfo + 12 + ($278 << 2) | 0; + HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0); + $289 = $278 << 1; + $290 = $labelInfo + 655376 + ($289 << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0); + $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0; + HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0); + $301 = $278 << 2; + $302 = $labelInfo + 131084 + ($301 << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0; + $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0; + if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320; + $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0; + $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0; + if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$256 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $331 = $labelInfo + 12 + ($i$637 << 2) | 0; + $334 = $i$637 << 1; + $335 = $labelInfo + 655376 + ($334 << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0); + $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0; + HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0; + do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($50 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $50; + $53 = ($50 << 16 >> 16) * 7 | 0; + $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1; + $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265; + $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0; + HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $74 = $73 << 16 >> 16; + $75 = $73 << 16 >> 16 > 0; + if ($69 << 16 >> 16 <= 0) { + if ($75) { + HEAP16[$pnt2$368 >> 1] = $73; + $175 = $74 * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($195 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $195; + $198 = ($195 << 16 >> 16) * 7 | 0; + $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1; + $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265; + $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0; + HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076; + $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0; + if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$212 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $215 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $215; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16; + $220 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $215; + break; + } + } + if ($75) { + $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0; + if (($78 | 0) > ($81 | 0)) { + HEAP16[$pnt2$368 >> 1] = $81; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $98 = $81; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $98 = $81; + } else { + HEAP16[$pnt2$368 >> 1] = $78; + if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $98 = $78; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $98 = $78; + } + $100 = ($98 << 16 >> 16) * 7 | 0; + $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1; + $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265; + $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0; + HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($116 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $69; + $156 = $70 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076; + $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($121 | 0) > ($124 | 0)) { + HEAP16[$pnt2$368 >> 1] = $124; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $141 = $124; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $141 = $124; + } else { + HEAP16[$pnt2$368 >> 1] = $121; + if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $141 = $121; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $141 = $121; + } + $143 = ($141 << 16 >> 16) * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $235 = $pnt$169 + 4 | 0; + $236 = $pnt2$368 + 2 | 0; + $237 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $237; + $pnt$1$lcssa = $235; + $pnt2$3$lcssa = $236; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $237; + $pnt$169 = $235; + $pnt2$368 = $236; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $244 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $246 = HEAP32[$wk$444 >> 2] | 0; + if (($246 | 0) == ($i$342 | 0)) { + $252 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $252; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $256 = $labelInfo + 8 | 0; + $257 = $j$1$lcssa + -1 | 0; + HEAP32[$256 >> 2] = $257; + if (!$257) $$0 = 0; else { + _memset($244 | 0, 0, $257 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $264 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $279 = $i$538 * 7 | 0; + $282 = $labelInfo + 12 + ($278 << 2) | 0; + HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0); + $289 = $278 << 1; + $290 = $labelInfo + 655376 + ($289 << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0); + $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0; + HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0); + $301 = $278 << 2; + $302 = $labelInfo + 131084 + ($301 << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0; + $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0; + if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320; + $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0; + $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0; + if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$256 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $331 = $labelInfo + 12 + ($i$637 << 2) | 0; + $334 = $i$637 << 1; + $335 = $labelInfo + 655376 + ($334 << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0); + $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0; + HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$368 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$208 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $211 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$368 >> 1] = $77; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $94 = $77; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$368 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $94 = $74; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$368 >> 1] = $120; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $137 = $120; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$368 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $137 = $117; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $231 = $pnt$169 + 4 | 0; + $232 = $pnt2$368 + 2 | 0; + $233 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $233; + $pnt$169 = $231; + $pnt2$368 = $232; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $242 = HEAP32[$wk$444 >> 2] | 0; + if (($242 | 0) == ($i$342 | 0)) { + $248 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $248; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $260 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$538 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $327 = $labelInfo + 12 + ($i$637 << 2) | 0; + $330 = $i$637 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $22 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + $33 = HEAPU8[$pnt$169 >> 0] | 0; + do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$368 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$208 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $211 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$368 >> 1] = $77; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $94 = $77; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$368 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $94 = $74; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$368 >> 1] = $120; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $137 = $120; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$368 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $137 = $117; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $231 = $pnt$169 + 4 | 0; + $232 = $pnt2$368 + 2 | 0; + $233 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $233; + $pnt$169 = $231; + $pnt2$368 = $232; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $242 = HEAP32[$wk$444 >> 2] | 0; + if (($242 | 0) == ($i$342 | 0)) { + $248 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $248; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $260 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$538 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $327 = $labelInfo + 12 + ($i$637 << 2) | 0; + $330 = $i$637 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize * 3 | 0) + 12 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($44 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $44; + $47 = ($44 << 16 >> 16) * 7 | 0; + $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1; + $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265; + $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0; + HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $68 = $67 << 16 >> 16; + $69 = $67 << 16 >> 16 > 0; + if ($63 << 16 >> 16 <= 0) { + if ($69) { + HEAP16[$pnt2$368 >> 1] = $67; + $169 = $68 * 7 | 0; + $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1; + $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265; + $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076; + $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0; + if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($189 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $189; + $192 = ($189 << 16 >> 16) * 7 | 0; + $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1; + $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265; + $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0; + HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076; + $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0; + if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$206 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $209 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $209; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16; + $214 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $209; + break; + } + } + if ($69) { + $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0; + if (($72 | 0) > ($75 | 0)) { + HEAP16[$pnt2$368 >> 1] = $75; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $92 = $75; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $92 = $75; + } else { + HEAP16[$pnt2$368 >> 1] = $72; + if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $92 = $72; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $92 = $72; + } + $94 = ($92 << 16 >> 16) * 7 | 0; + $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1; + $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265; + $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0; + HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($110 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $63; + $150 = $64 * 7 | 0; + $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1; + $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265; + $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076; + $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0; + if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($115 | 0) > ($118 | 0)) { + HEAP16[$pnt2$368 >> 1] = $118; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $135 = $118; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $135 = $118; + } else { + HEAP16[$pnt2$368 >> 1] = $115; + if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $135 = $115; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $135 = $115; + } + $137 = ($135 << 16 >> 16) * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $229 = $pnt$169 + 6 | 0; + $230 = $pnt2$368 + 2 | 0; + $231 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $231; + $pnt$1$lcssa = $229; + $pnt2$3$lcssa = $230; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $231; + $pnt$169 = $229; + $pnt2$368 = $230; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $238 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $240 = HEAP32[$wk$444 >> 2] | 0; + if (($240 | 0) == ($i$342 | 0)) { + $246 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $246; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $250 = $labelInfo + 8 | 0; + $251 = $j$1$lcssa + -1 | 0; + HEAP32[$250 >> 2] = $251; + if (!$251) $$0 = 0; else { + _memset($238 | 0, 0, $251 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $258 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $273 = $i$538 * 7 | 0; + $276 = $labelInfo + 12 + ($272 << 2) | 0; + HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0); + $283 = $272 << 1; + $284 = $labelInfo + 655376 + ($283 << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0); + $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0; + HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0); + $295 = $272 << 2; + $296 = $labelInfo + 131084 + ($295 << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314; + $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0; + $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0; + if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$250 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $325 = $labelInfo + 12 + ($i$637 << 2) | 0; + $328 = $i$637 << 1; + $329 = $labelInfo + 655376 + ($328 << 3) | 0; + HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0); + $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize * 3 | 0) + 12 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($44 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $44; + $47 = ($44 << 16 >> 16) * 7 | 0; + $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1; + $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265; + $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0; + HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $68 = $67 << 16 >> 16; + $69 = $67 << 16 >> 16 > 0; + if ($63 << 16 >> 16 <= 0) { + if ($69) { + HEAP16[$pnt2$368 >> 1] = $67; + $169 = $68 * 7 | 0; + $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1; + $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265; + $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076; + $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0; + if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($189 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $189; + $192 = ($189 << 16 >> 16) * 7 | 0; + $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1; + $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265; + $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0; + HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076; + $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0; + if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$206 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $209 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $209; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16; + $214 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $209; + break; + } + } + if ($69) { + $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0; + if (($72 | 0) > ($75 | 0)) { + HEAP16[$pnt2$368 >> 1] = $75; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $92 = $75; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $92 = $75; + } else { + HEAP16[$pnt2$368 >> 1] = $72; + if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $92 = $72; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $92 = $72; + } + $94 = ($92 << 16 >> 16) * 7 | 0; + $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1; + $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265; + $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0; + HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($110 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $63; + $150 = $64 * 7 | 0; + $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1; + $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265; + $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076; + $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0; + if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($115 | 0) > ($118 | 0)) { + HEAP16[$pnt2$368 >> 1] = $118; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $135 = $118; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $135 = $118; + } else { + HEAP16[$pnt2$368 >> 1] = $115; + if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $135 = $115; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $135 = $115; + } + $137 = ($135 << 16 >> 16) * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $229 = $pnt$169 + 6 | 0; + $230 = $pnt2$368 + 2 | 0; + $231 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $231; + $pnt$1$lcssa = $229; + $pnt2$3$lcssa = $230; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $231; + $pnt$169 = $229; + $pnt2$368 = $230; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $238 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $240 = HEAP32[$wk$444 >> 2] | 0; + if (($240 | 0) == ($i$342 | 0)) { + $246 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $246; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $250 = $labelInfo + 8 | 0; + $251 = $j$1$lcssa + -1 | 0; + HEAP32[$250 >> 2] = $251; + if (!$251) $$0 = 0; else { + _memset($238 | 0, 0, $251 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $258 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $273 = $i$538 * 7 | 0; + $276 = $labelInfo + 12 + ($272 << 2) | 0; + HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0); + $283 = $272 << 1; + $284 = $labelInfo + 655376 + ($283 << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0); + $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0; + HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0); + $295 = $272 << 2; + $296 = $labelInfo + 131084 + ($295 << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314; + $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0; + $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0; + if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$250 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $325 = $labelInfo + 12 + ($i$637 << 2) | 0; + $328 = $i$637 << 1; + $329 = $labelInfo + 655376 + ($328 << 3) | 0; + HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0); + $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 3) + 8) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($45 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $45; + $48 = ($45 << 16 >> 16) * 7 | 0; + $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1; + $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265; + $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0; + HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $69 = $68 << 16 >> 16; + $70 = $68 << 16 >> 16 > 0; + if ($64 << 16 >> 16 <= 0) { + if ($70) { + HEAP16[$pnt2$368 >> 1] = $68; + $170 = $69 * 7 | 0; + $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1; + $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265; + $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0; + HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076; + $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0; + if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($190 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $190; + $193 = ($190 << 16 >> 16) * 7 | 0; + $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1; + $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265; + $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0; + HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076; + $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0; + if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$207 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $210 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $210; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16; + $215 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $210; + break; + } + } + if ($70) { + $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0; + if (($73 | 0) > ($76 | 0)) { + HEAP16[$pnt2$368 >> 1] = $76; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $93 = $76; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $93 = $76; + } else { + HEAP16[$pnt2$368 >> 1] = $73; + if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $93 = $73; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $93 = $73; + } + $95 = ($93 << 16 >> 16) * 7 | 0; + $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1; + $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265; + $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0; + HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($111 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $64; + $151 = $65 * 7 | 0; + $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1; + $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265; + $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076; + $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0; + if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($116 | 0) > ($119 | 0)) { + HEAP16[$pnt2$368 >> 1] = $119; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $136 = $119; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $136 = $119; + } else { + HEAP16[$pnt2$368 >> 1] = $116; + if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $136 = $116; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $136 = $116; + } + $138 = ($136 << 16 >> 16) * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $230 = $pnt$169 + 8 | 0; + $231 = $pnt2$368 + 2 | 0; + $232 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $232; + $pnt$1$lcssa = $230; + $pnt2$3$lcssa = $231; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $232; + $pnt$169 = $230; + $pnt2$368 = $231; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $241 = HEAP32[$wk$444 >> 2] | 0; + if (($241 | 0) == ($i$342 | 0)) { + $247 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $247; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $259 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$538 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $326 = $labelInfo + 12 + ($i$637 << 2) | 0; + $329 = $i$637 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 3) + 8) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($45 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $45; + $48 = ($45 << 16 >> 16) * 7 | 0; + $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1; + $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265; + $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0; + HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $69 = $68 << 16 >> 16; + $70 = $68 << 16 >> 16 > 0; + if ($64 << 16 >> 16 <= 0) { + if ($70) { + HEAP16[$pnt2$368 >> 1] = $68; + $170 = $69 * 7 | 0; + $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1; + $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265; + $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0; + HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076; + $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0; + if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($190 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $190; + $193 = ($190 << 16 >> 16) * 7 | 0; + $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1; + $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265; + $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0; + HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076; + $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0; + if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$207 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $210 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $210; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16; + $215 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $210; + break; + } + } + if ($70) { + $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0; + if (($73 | 0) > ($76 | 0)) { + HEAP16[$pnt2$368 >> 1] = $76; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $93 = $76; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $93 = $76; + } else { + HEAP16[$pnt2$368 >> 1] = $73; + if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $93 = $73; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $93 = $73; + } + $95 = ($93 << 16 >> 16) * 7 | 0; + $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1; + $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265; + $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0; + HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($111 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $64; + $151 = $65 * 7 | 0; + $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1; + $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265; + $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076; + $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0; + if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($116 | 0) > ($119 | 0)) { + HEAP16[$pnt2$368 >> 1] = $119; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $136 = $119; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $136 = $119; + } else { + HEAP16[$pnt2$368 >> 1] = $116; + if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $136 = $116; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $136 = $116; + } + $138 = ($136 << 16 >> 16) * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $230 = $pnt$169 + 8 | 0; + $231 = $pnt2$368 + 2 | 0; + $232 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $232; + $pnt$1$lcssa = $230; + $pnt2$3$lcssa = $231; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $232; + $pnt$169 = $230; + $pnt2$368 = $231; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $241 = HEAP32[$wk$444 >> 2] | 0; + if (($241 | 0) == ($i$342 | 0)) { + $247 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $247; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $259 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$538 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $326 = $labelInfo + 12 + ($i$637 << 2) | 0; + $329 = $i$637 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 3) + 8) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($44 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $44; + $47 = ($44 << 16 >> 16) * 7 | 0; + $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1; + $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265; + $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0; + HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $68 = $67 << 16 >> 16; + $69 = $67 << 16 >> 16 > 0; + if ($63 << 16 >> 16 <= 0) { + if ($69) { + HEAP16[$pnt2$368 >> 1] = $67; + $169 = $68 * 7 | 0; + $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1; + $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265; + $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076; + $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0; + if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($189 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $189; + $192 = ($189 << 16 >> 16) * 7 | 0; + $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1; + $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265; + $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0; + HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076; + $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0; + if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$206 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $209 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $209; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16; + $214 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $209; + break; + } + } + if ($69) { + $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0; + if (($72 | 0) > ($75 | 0)) { + HEAP16[$pnt2$368 >> 1] = $75; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $92 = $75; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $92 = $75; + } else { + HEAP16[$pnt2$368 >> 1] = $72; + if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $92 = $72; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $92 = $72; + } + $94 = ($92 << 16 >> 16) * 7 | 0; + $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1; + $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265; + $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0; + HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($110 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $63; + $150 = $64 * 7 | 0; + $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1; + $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265; + $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076; + $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0; + if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($115 | 0) > ($118 | 0)) { + HEAP16[$pnt2$368 >> 1] = $118; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $135 = $118; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $135 = $118; + } else { + HEAP16[$pnt2$368 >> 1] = $115; + if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $135 = $115; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $135 = $115; + } + $137 = ($135 << 16 >> 16) * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $229 = $pnt$169 + 8 | 0; + $230 = $pnt2$368 + 2 | 0; + $231 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $231; + $pnt$1$lcssa = $229; + $pnt2$3$lcssa = $230; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $231; + $pnt$169 = $229; + $pnt2$368 = $230; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $238 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $240 = HEAP32[$wk$444 >> 2] | 0; + if (($240 | 0) == ($i$342 | 0)) { + $246 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $246; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $250 = $labelInfo + 8 | 0; + $251 = $j$1$lcssa + -1 | 0; + HEAP32[$250 >> 2] = $251; + if (!$251) $$0 = 0; else { + _memset($238 | 0, 0, $251 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $258 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $273 = $i$538 * 7 | 0; + $276 = $labelInfo + 12 + ($272 << 2) | 0; + HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0); + $283 = $272 << 1; + $284 = $labelInfo + 655376 + ($283 << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0); + $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0; + HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0); + $295 = $272 << 2; + $296 = $labelInfo + 131084 + ($295 << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314; + $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0; + $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0; + if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$250 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $325 = $labelInfo + 12 + ($i$637 << 2) | 0; + $328 = $i$637 << 1; + $329 = $labelInfo + 655376 + ($328 << 3) | 0; + HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0); + $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $31 = ($12 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 3) + 8) | 0; + $pnt2$279 = $2 + ($20 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($31) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($44 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $44; + $47 = ($44 << 16 >> 16) * 7 | 0; + $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1; + $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265; + $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0; + HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $68 = $67 << 16 >> 16; + $69 = $67 << 16 >> 16 > 0; + if ($63 << 16 >> 16 <= 0) { + if ($69) { + HEAP16[$pnt2$368 >> 1] = $67; + $169 = $68 * 7 | 0; + $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1; + $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265; + $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076; + $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0; + if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($189 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $189; + $192 = ($189 << 16 >> 16) * 7 | 0; + $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1; + $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265; + $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0; + HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076; + $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0; + if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$206 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $209 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $209; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16; + $214 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $209; + break; + } + } + if ($69) { + $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0; + if (($72 | 0) > ($75 | 0)) { + HEAP16[$pnt2$368 >> 1] = $75; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $19; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $92 = $75; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $92 = $75; + } else { + HEAP16[$pnt2$368 >> 1] = $72; + if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $19; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $92 = $72; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $92 = $72; + } + $94 = ($92 << 16 >> 16) * 7 | 0; + $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1; + $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265; + $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0; + HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($110 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $63; + $150 = $64 * 7 | 0; + $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1; + $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265; + $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076; + $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0; + if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($115 | 0) > ($118 | 0)) { + HEAP16[$pnt2$368 >> 1] = $118; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $19; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $135 = $118; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $135 = $118; + } else { + HEAP16[$pnt2$368 >> 1] = $115; + if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $19; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $135 = $115; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $135 = $115; + } + $137 = ($135 << 16 >> 16) * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $229 = $pnt$169 + 8 | 0; + $230 = $pnt2$368 + 2 | 0; + $231 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($12 | 0)) { + $dpnt$1$lcssa = $231; + $pnt$1$lcssa = $229; + $pnt2$3$lcssa = $230; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $231; + $pnt$169 = $229; + $pnt2$368 = $230; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $238 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $19; + while (1) { + $240 = HEAP32[$wk$444 >> 2] | 0; + if (($240 | 0) == ($i$342 | 0)) { + $246 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $246; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $250 = $labelInfo + 8 | 0; + $251 = $j$1$lcssa + -1 | 0; + HEAP32[$250 >> 2] = $251; + if (!$251) $$0 = 0; else { + _memset($238 | 0, 0, $251 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $258 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $273 = $i$538 * 7 | 0; + $276 = $labelInfo + 12 + ($272 << 2) | 0; + HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0); + $283 = $272 << 1; + $284 = $labelInfo + 655376 + ($283 << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0); + $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0; + HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0); + $295 = $272 << 2; + $296 = $labelInfo + 131084 + ($295 << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314; + $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0; + $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0; + if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$250 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $325 = $labelInfo + 12 + ($i$637 << 2) | 0; + $328 = $i$637 << 1; + $329 = $labelInfo + 655376 + ($328 << 3) | 0; + HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0); + $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0; + HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0; + do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$367 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$208 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $211 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$367 >> 1] = $77; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $94 = $77; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$367 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $94 = $74; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$367 >> 1] = $120; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $137 = $120; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$367 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $137 = $117; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $231 = $pnt$168 + 2 | 0; + $232 = $pnt2$367 + 2 | 0; + $233 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $233; + $pnt$168 = $231; + $pnt2$367 = $232; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $242 = HEAP32[$wk$443 >> 2] | 0; + if (($242 | 0) == ($i$341 | 0)) { + $248 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $248; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $260 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$537 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $327 = $labelInfo + 12 + ($i$636 << 2) | 0; + $330 = $i$636 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0; + do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$367 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$208 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $211 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$367 >> 1] = $77; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $94 = $77; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$367 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $94 = $74; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$367 >> 1] = $120; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $137 = $120; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$367 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $137 = $117; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $231 = $pnt$168 + 2 | 0; + $232 = $pnt2$367 + 2 | 0; + $233 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $233; + $pnt$168 = $231; + $pnt2$367 = $232; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $242 = HEAP32[$wk$443 >> 2] | 0; + if (($242 | 0) == ($i$341 | 0)) { + $248 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $248; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $260 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$537 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $327 = $labelInfo + 12 + ($i$636 << 2) | 0; + $330 = $i$636 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0; + do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$367 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$208 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $211 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$367 >> 1] = $77; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $94 = $77; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$367 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $94 = $74; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$367 >> 1] = $120; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $137 = $120; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$367 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $137 = $117; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $231 = $pnt$168 + 2 | 0; + $232 = $pnt2$367 + 2 | 0; + $233 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $233; + $pnt$168 = $231; + $pnt2$367 = $232; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $242 = HEAP32[$wk$443 >> 2] | 0; + if (($242 | 0) == ($i$341 | 0)) { + $248 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $248; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $260 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$537 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $327 = $labelInfo + 12 + ($i$636 << 2) | 0; + $330 = $i$636 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0; + do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($46 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $46; + $49 = ($46 << 16 >> 16) * 7 | 0; + $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1; + $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264; + $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0; + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $70 = $69 << 16 >> 16; + $71 = $69 << 16 >> 16 > 0; + if ($65 << 16 >> 16 <= 0) { + if ($71) { + HEAP16[$pnt2$367 >> 1] = $69; + $171 = $70 * 7 | 0; + $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1; + $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264; + $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075; + $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0; + if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($191 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $191; + $194 = ($191 << 16 >> 16) * 7 | 0; + $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1; + $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264; + $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0; + HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075; + $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0; + if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$208 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $211 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $211; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16; + $216 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $211; + break; + } + } + if ($71) { + $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0; + if (($74 | 0) > ($77 | 0)) { + HEAP16[$pnt2$367 >> 1] = $77; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $94 = $77; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $94 = $77; + } else { + HEAP16[$pnt2$367 >> 1] = $74; + if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $94 = $74; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $94 = $74; + } + $96 = ($94 << 16 >> 16) * 7 | 0; + $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1; + $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264; + $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0; + HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($112 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $65; + $152 = $66 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075; + $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($117 | 0) > ($120 | 0)) { + HEAP16[$pnt2$367 >> 1] = $120; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $137 = $120; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $137 = $120; + } else { + HEAP16[$pnt2$367 >> 1] = $117; + if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $137 = $117; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $137 = $117; + } + $139 = ($137 << 16 >> 16) * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $231 = $pnt$168 + 2 | 0; + $232 = $pnt2$367 + 2 | 0; + $233 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $233; + $pnt$1$lcssa = $231; + $pnt2$3$lcssa = $232; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $233; + $pnt$168 = $231; + $pnt2$367 = $232; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $240 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $242 = HEAP32[$wk$443 >> 2] | 0; + if (($242 | 0) == ($i$341 | 0)) { + $248 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $248; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $252 = $labelInfo + 8 | 0; + $253 = $j$1$lcssa + -1 | 0; + HEAP32[$252 >> 2] = $253; + if (!$253) $$0 = 0; else { + _memset($240 | 0, 0, $253 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $260 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $275 = $i$537 * 7 | 0; + $278 = $labelInfo + 12 + ($274 << 2) | 0; + HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0); + $285 = $274 << 1; + $286 = $labelInfo + 655376 + ($285 << 3) | 0; + HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0); + $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0; + HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0); + $297 = $274 << 2; + $298 = $labelInfo + 131084 + ($297 << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316; + $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0; + $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0; + if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$252 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $327 = $labelInfo + 12 + ($i$636 << 2) | 0; + $330 = $i$636 << 1; + $331 = $labelInfo + 655376 + ($330 << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0); + $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0; + HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $codePatt, $dirPatt, $cfPatt, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected, $codeGlobalID_p) { + $pattHandle = $pattHandle | 0; + $imageProcMode = $imageProcMode | 0; + $pattDetectMode = $pattDetectMode | 0; + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $pixelFormat = $pixelFormat | 0; + $paramLTf = $paramLTf | 0; + $vertex = $vertex | 0; + $pattRatio = +$pattRatio; + $codePatt = $codePatt | 0; + $dirPatt = $dirPatt | 0; + $cfPatt = $cfPatt | 0; + $codeMatrix = $codeMatrix | 0; + $dirMatrix = $dirMatrix | 0; + $cfMatrix = $cfMatrix | 0; + $matrixCodeType = $matrixCodeType | 0; + $errorCorrected = $errorCorrected | 0; + $codeGlobalID_p = $codeGlobalID_p | 0; + var $$0 = 0, $$0$i = 0, $$max$0$i = 0, $$max$0$i$1 = 0, $$max$0$i$2 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $107 = 0, $114 = 0, $118 = 0, $122 = 0, $126 = 0, $137 = 0, $14 = 0, $141 = 0, $147 = 0, $148 = 0, $149 = 0, $162 = 0, $166 = 0, $175 = 0, $178 = 0, $186 = 0, $188 = 0, $196 = 0, $20 = 0, $200 = 0, $204 = 0, $206 = 0, $211 = 0, $212 = 0, $213 = 0, $26 = 0, $29 = 0, $30 = 0, $34 = 0, $68 = 0, $8 = 0, $80 = 0, $81 = 0, $84 = 0, $93 = 0, $97 = 0, $bit$0$i28 = 0, $bit$1$i25 = 0, $bit$10$i43 = 0, $bit$11$i = 0, $bit$11$i$lcssa = 0, $bit$2$i = 0, $bit$2$i$lcssa = 0, $bit$3$i34 = 0, $bit$4$i31 = 0, $bit$5$i = 0, $bit$5$i$lcssa = 0, $bit$6$i40 = 0, $bit$7$i37 = 0, $bit$8$i = 0, $bit$8$i$lcssa = 0, $bit$9$i46 = 0, $code$i = 0, $contrastMin$0$i26 = 0, $contrastMin$1$i23 = 0, $contrastMin$10$i41 = 0, $contrastMin$11$i = 0, $contrastMin$11$i$lcssa = 0, $contrastMin$12$i = 0, $contrastMin$2$i = 0, $contrastMin$2$i$lcssa = 0, $contrastMin$3$i32 = 0, $contrastMin$4$i29 = 0, $contrastMin$5$i = 0, $contrastMin$5$i$lcssa = 0, $contrastMin$6$i38 = 0, $contrastMin$7$i35 = 0, $contrastMin$8$i = 0, $contrastMin$8$i$lcssa = 0, $contrastMin$9$i44 = 0, $corner$i = 0, $dirCode$i = 0, $errorCodeMtx$0 = 0, $errorCodePatt$0 = 0, $ext_patt = 0, $i$2$i$lcssa = 0, $i$2$i47 = 0, $i$3$i24 = 0, $i$4$i33 = 0, $i$4$off$i = 0, $i$5$i36 = 0, $i$6$i45 = 0, $i$6$off$i = 0, $j$0$i27 = 0, $j$0$off$i = 0, $j$1$i30 = 0, $j$2$i39 = 0, $j$2$off$i = 0, $j$3$i42 = 0, $min$1$i = 0, $min$1$i$1 = 0, $min$1$i$2 = 0, $or$cond4454$i = 0, $recd127$i = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 12448 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $dirCode$i = sp + 12440 | 0; + $corner$i = sp + 8 | 0; + $code$i = sp; + $recd127$i = sp + 12312 | 0; + $ext_patt = sp + 24 | 0; + do if (($pattDetectMode + -2 | 0) >>> 0 < 3) { + if (($matrixCodeType | 0) != 2830) { + $200 = $matrixCodeType & 255; + if ((_arPattGetImage2($imageProcMode, 2, $200, $200 * 3 | 0, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) { + HEAP32[$codeMatrix >> 2] = -1; + $errorCodeMtx$0 = -6; + break; + } + $204 = _get_matrix_code($ext_patt, $200, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected) | 0; + if (!$codeGlobalID_p) { + $errorCodeMtx$0 = $204; + break; + } + $206 = $codeGlobalID_p; + HEAP32[$206 >> 2] = 0; + HEAP32[$206 + 4 >> 2] = 0; + $errorCodeMtx$0 = $204; + break; + } + if ((_arPattGetImage2($imageProcMode, 2, 14, 42, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, .875, $ext_patt) | 0) < 0) { + HEAP32[$codeMatrix >> 2] = -1; + $errorCodeMtx$0 = -6; + break; + } + HEAP32[$corner$i >> 2] = 0; + HEAP32[$corner$i + 4 >> 2] = 182; + HEAP32[$corner$i + 8 >> 2] = 195; + HEAP32[$corner$i + 12 >> 2] = 13; + $8 = HEAP8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0; + $$max$0$i = ($8 & 255) > 0 ? $8 : 0; + $min$1$i = ($8 & 255) < 255 ? $8 : -1; + $14 = HEAP8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0; + $$max$0$i$1 = ($14 & 255) > ($$max$0$i & 255) ? $14 : $$max$0$i; + $min$1$i$1 = ($14 & 255) < ($min$1$i & 255) ? $14 : $min$1$i; + $20 = HEAP8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0; + $$max$0$i$2 = ($20 & 255) > ($$max$0$i$1 & 255) ? $20 : $$max$0$i$1; + $min$1$i$2 = ($20 & 255) < ($min$1$i$1 & 255) ? $20 : $min$1$i$1; + $26 = HEAP8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0; + $29 = (($26 & 255) > ($$max$0$i$2 & 255) ? $26 : $$max$0$i$2) & 255; + $30 = (($26 & 255) < ($min$1$i$2 & 255) ? $26 : $min$1$i$2) & 255; + L13 : do if (($29 - $30 | 0) < 30) { + HEAP32[$dirMatrix >> 2] = 0; + HEAPF64[$cfMatrix >> 3] = -1.0; + $$0$i = -2; + $186 = 0; + $188 = 0; + } else { + $34 = ($29 + $30 | 0) >>> 1; + HEAP8[$dirCode$i >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1; + HEAP8[$dirCode$i + 1 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1; + HEAP8[$dirCode$i + 2 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1; + HEAP8[$dirCode$i + 3 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1; + $i$2$i47 = 0; + while (1) { + $68 = $i$2$i47 + 1 | 0; + if ((HEAP8[$dirCode$i + $i$2$i47 >> 0] | 0) == 1) if ((HEAP8[$dirCode$i + (($68 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode$i + (($i$2$i47 + 2 | 0) % 4 | 0) >> 0] | 0)) { + $i$2$i$lcssa = $i$2$i47; + break; + } + if (($68 | 0) < 4) $i$2$i47 = $68; else { + $i$2$i$lcssa = $68; + break; + } + } + switch ($i$2$i$lcssa | 0) { + case 4: + { + HEAP32[$dirMatrix >> 2] = 0; + HEAPF64[$cfMatrix >> 3] = -1.0; + $$0$i = -3; + $186 = 0; + $188 = 0; + break L13; + break; + } + case 0: + { + $bit$0$i28 = 119; + $contrastMin$0$i26 = 255; + $j$0$i27 = 0; + while (1) { + $j$0$off$i = $j$0$i27 + -3 | 0; + $80 = ($j$0$i27 & -2 | 0) == 12; + $81 = $j$0$i27 * 14 | 0; + $bit$1$i25 = $bit$0$i28; + $contrastMin$1$i23 = $contrastMin$0$i26; + $i$3$i24 = 0; + while (1) { + if (($i$3$i24 + -3 | $j$0$off$i) >>> 0 < 8) { + $bit$2$i = $bit$1$i25; + $contrastMin$2$i = $contrastMin$1$i23; + } else { + $84 = $i$3$i24 & -2; + if (($i$3$i24 | $j$0$i27) >>> 0 < 2) { + $bit$2$i = $bit$1$i25; + $contrastMin$2$i = $contrastMin$1$i23; + } else if ($80 & (($84 | 0) == 0 | ($84 | 0) == 12)) { + $bit$2$i = $bit$1$i25; + $contrastMin$2$i = $contrastMin$1$i23; + } else { + $93 = (HEAPU8[$ext_patt + ($i$3$i24 + $81) >> 0] | 0) - $34 | 0; + HEAP8[$recd127$i + $bit$1$i25 >> 0] = $93 >>> 31; + $97 = ($93 | 0) > -1 ? $93 : 0 - $93 | 0; + $bit$2$i = $bit$1$i25 + -1 | 0; + $contrastMin$2$i = ($97 | 0) < ($contrastMin$1$i23 | 0) ? $97 : $contrastMin$1$i23; + } + } + $i$3$i24 = $i$3$i24 + 1 | 0; + if (($i$3$i24 | 0) == 14) { + $bit$2$i$lcssa = $bit$2$i; + $contrastMin$2$i$lcssa = $contrastMin$2$i; + break; + } else { + $bit$1$i25 = $bit$2$i; + $contrastMin$1$i23 = $contrastMin$2$i; + } + } + $100 = $j$0$i27 + 1 | 0; + if (($100 | 0) == 14) { + $contrastMin$12$i = $contrastMin$2$i$lcssa; + break; + } else { + $bit$0$i28 = $bit$2$i$lcssa; + $contrastMin$0$i26 = $contrastMin$2$i$lcssa; + $j$0$i27 = $100; + } + } + break; + } + case 1: + { + $bit$3$i34 = 119; + $contrastMin$3$i32 = 255; + $i$4$i33 = 0; + while (1) { + $i$4$off$i = $i$4$i33 + -3 | 0; + $101 = $i$4$i33 & -2; + $102 = ($101 | 0) == 0; + $103 = ($101 | 0) == 12; + $bit$4$i31 = $bit$3$i34; + $contrastMin$4$i29 = $contrastMin$3$i32; + $j$1$i30 = 13; + while (1) { + if (($j$1$i30 + -3 | $i$4$off$i) >>> 0 < 8) { + $bit$5$i = $bit$4$i31; + $contrastMin$5$i = $contrastMin$4$i29; + } else { + $107 = ($j$1$i30 & -2 | 0) == 12; + if ($102 & $107) { + $bit$5$i = $bit$4$i31; + $contrastMin$5$i = $contrastMin$4$i29; + } else if ($103 & ($j$1$i30 >>> 0 < 2 | $107)) { + $bit$5$i = $bit$4$i31; + $contrastMin$5$i = $contrastMin$4$i29; + } else { + $114 = (HEAPU8[$ext_patt + (($j$1$i30 * 14 | 0) + $i$4$i33) >> 0] | 0) - $34 | 0; + HEAP8[$recd127$i + $bit$4$i31 >> 0] = $114 >>> 31; + $118 = ($114 | 0) > -1 ? $114 : 0 - $114 | 0; + $bit$5$i = $bit$4$i31 + -1 | 0; + $contrastMin$5$i = ($118 | 0) < ($contrastMin$4$i29 | 0) ? $118 : $contrastMin$4$i29; + } + } + if (($j$1$i30 | 0) > 0) { + $bit$4$i31 = $bit$5$i; + $contrastMin$4$i29 = $contrastMin$5$i; + $j$1$i30 = $j$1$i30 + -1 | 0; + } else { + $bit$5$i$lcssa = $bit$5$i; + $contrastMin$5$i$lcssa = $contrastMin$5$i; + break; + } + } + $122 = $i$4$i33 + 1 | 0; + if (($122 | 0) == 14) { + $contrastMin$12$i = $contrastMin$5$i$lcssa; + break; + } else { + $bit$3$i34 = $bit$5$i$lcssa; + $contrastMin$3$i32 = $contrastMin$5$i$lcssa; + $i$4$i33 = $122; + } + } + break; + } + case 2: + { + $bit$6$i40 = 119; + $contrastMin$6$i38 = 255; + $j$2$i39 = 13; + while (1) { + $j$2$off$i = $j$2$i39 + -3 | 0; + $or$cond4454$i = $j$2$i39 >>> 0 < 2 | ($j$2$i39 & -2 | 0) == 12; + $126 = $j$2$i39 * 14 | 0; + $bit$7$i37 = $bit$6$i40; + $contrastMin$7$i35 = $contrastMin$6$i38; + $i$5$i36 = 13; + while (1) { + if (($i$5$i36 + -3 | $j$2$off$i) >>> 0 < 8) { + $bit$8$i = $bit$7$i37; + $contrastMin$8$i = $contrastMin$7$i35; + } else if (($i$5$i36 | $j$2$i39) >>> 0 < 2 | $or$cond4454$i & ($i$5$i36 & -2 | 0) == 12) { + $bit$8$i = $bit$7$i37; + $contrastMin$8$i = $contrastMin$7$i35; + } else { + $137 = (HEAPU8[$ext_patt + ($i$5$i36 + $126) >> 0] | 0) - $34 | 0; + HEAP8[$recd127$i + $bit$7$i37 >> 0] = $137 >>> 31; + $141 = ($137 | 0) > -1 ? $137 : 0 - $137 | 0; + $bit$8$i = $bit$7$i37 + -1 | 0; + $contrastMin$8$i = ($141 | 0) < ($contrastMin$7$i35 | 0) ? $141 : $contrastMin$7$i35; + } + if (($i$5$i36 | 0) > 0) { + $bit$7$i37 = $bit$8$i; + $contrastMin$7$i35 = $contrastMin$8$i; + $i$5$i36 = $i$5$i36 + -1 | 0; + } else { + $bit$8$i$lcssa = $bit$8$i; + $contrastMin$8$i$lcssa = $contrastMin$8$i; + break; + } + } + if (($j$2$i39 | 0) > 0) { + $bit$6$i40 = $bit$8$i$lcssa; + $contrastMin$6$i38 = $contrastMin$8$i$lcssa; + $j$2$i39 = $j$2$i39 + -1 | 0; + } else { + $contrastMin$12$i = $contrastMin$8$i$lcssa; + break; + } + } + break; + } + case 3: + { + $bit$9$i46 = 119; + $contrastMin$9$i44 = 255; + $i$6$i45 = 13; + while (1) { + $i$6$off$i = $i$6$i45 + -3 | 0; + $147 = $i$6$i45 & -2; + $148 = ($147 | 0) == 12; + $149 = ($147 | 0) == 0; + $bit$10$i43 = $bit$9$i46; + $contrastMin$10$i41 = $contrastMin$9$i44; + $j$3$i42 = 0; + while (1) { + if (($j$3$i42 + -3 | $i$6$off$i) >>> 0 < 8) { + $bit$11$i = $bit$10$i43; + $contrastMin$11$i = $contrastMin$10$i41; + } else if ($148 & $j$3$i42 >>> 0 < 2 | ($j$3$i42 | $i$6$i45) >>> 0 < 2) { + $bit$11$i = $bit$10$i43; + $contrastMin$11$i = $contrastMin$10$i41; + } else if ($149 & ($j$3$i42 & -2 | 0) == 12) { + $bit$11$i = $bit$10$i43; + $contrastMin$11$i = $contrastMin$10$i41; + } else { + $162 = (HEAPU8[$ext_patt + (($j$3$i42 * 14 | 0) + $i$6$i45) >> 0] | 0) - $34 | 0; + HEAP8[$recd127$i + $bit$10$i43 >> 0] = $162 >>> 31; + $166 = ($162 | 0) > -1 ? $162 : 0 - $162 | 0; + $bit$11$i = $bit$10$i43 + -1 | 0; + $contrastMin$11$i = ($166 | 0) < ($contrastMin$10$i41 | 0) ? $166 : $contrastMin$10$i41; + } + $j$3$i42 = $j$3$i42 + 1 | 0; + if (($j$3$i42 | 0) == 14) { + $bit$11$i$lcssa = $bit$11$i; + $contrastMin$11$i$lcssa = $contrastMin$11$i; + break; + } else { + $bit$10$i43 = $bit$11$i; + $contrastMin$10$i41 = $contrastMin$11$i; + } + } + if (($i$6$i45 | 0) > 0) { + $bit$9$i46 = $bit$11$i$lcssa; + $contrastMin$9$i44 = $contrastMin$11$i$lcssa; + $i$6$i45 = $i$6$i45 + -1 | 0; + } else { + $contrastMin$12$i = $contrastMin$11$i$lcssa; + break; + } + } + break; + } + default: + $contrastMin$12$i = 255; + } + HEAP32[$dirMatrix >> 2] = $i$2$i$lcssa; + HEAPF64[$cfMatrix >> 3] = ($contrastMin$12$i | 0) > 30 ? 1.0 : +($contrastMin$12$i | 0) / 30.0; + $175 = _decode_bch(2830, 0, 0, $recd127$i, $code$i) | 0; + if (($175 | 0) < 0) { + $$0$i = -4; + $186 = 0; + $188 = 0; + } else { + if ($errorCorrected) HEAP32[$errorCorrected >> 2] = $175; + $178 = $code$i; + $$0$i = 0; + $186 = HEAP32[$178 >> 2] | 0; + $188 = HEAP32[$178 + 4 >> 2] | 0; + } + } while (0); + if (($$0$i | 0) < 0) { + HEAP32[$codeMatrix >> 2] = -1; + $errorCodeMtx$0 = $$0$i; + break; + } + if (($186 | 0) == -1 & ($188 | 0) == -1) { + HEAP32[$codeMatrix >> 2] = -1; + $errorCodeMtx$0 = -5; + break; + } + HEAP32[$codeMatrix >> 2] = ($186 & -32768 | 0) == 0 & 0 == 0 ? $186 & 32767 : 0; + if (!$codeGlobalID_p) $errorCodeMtx$0 = 0; else { + $196 = $codeGlobalID_p; + HEAP32[$196 >> 2] = $186; + HEAP32[$196 + 4 >> 2] = $188; + $errorCodeMtx$0 = 0; + } + } else $errorCodeMtx$0 = 1; while (0); + L78 : do switch ($pattDetectMode | 0) { + case 0: + case 1: + case 3: + case 4: + { + if (!$pattHandle) { + HEAP32[$codePatt >> 2] = -1; + $errorCodePatt$0 = -1; + break L78; + } + $211 = $pattHandle + 28 | 0; + $212 = HEAP32[$211 >> 2] | 0; + $213 = $212 << 2; + switch ($pattDetectMode | 0) { + case 0: + case 3: + { + if ((_arPattGetImage2($imageProcMode, 0, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) { + HEAP32[$codePatt >> 2] = -1; + $errorCodePatt$0 = -6; + break L78; + } else { + $errorCodePatt$0 = _pattern_match($pattHandle, 0, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0; + break L78; + } + break; + } + default: + if ((_arPattGetImage2($imageProcMode, 1, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) { + HEAP32[$codePatt >> 2] = -1; + $errorCodePatt$0 = -6; + break L78; + } else { + $errorCodePatt$0 = _pattern_match($pattHandle, 1, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0; + break L78; + } + } + break; + } + default: + $errorCodePatt$0 = 1; + } while (0); + if (($errorCodeMtx$0 | 0) == 1) $$0 = $errorCodePatt$0; else if (($errorCodePatt$0 | 0) == 1) $$0 = $errorCodeMtx$0; else $$0 = ($errorCodePatt$0 & $errorCodeMtx$0 | 0) < 0 ? $errorCodePatt$0 : 0; + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($42 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $42; + $45 = ($42 << 16 >> 16) * 7 | 0; + $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1; + $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264; + $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $67 = $65 << 16 >> 16 > 0; + if ($61 << 16 >> 16 <= 0) { + if ($67) { + HEAP16[$pnt2$367 >> 1] = $65; + $167 = $66 * 7 | 0; + $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1; + $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264; + $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075; + $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0; + if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($187 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $187; + $190 = ($187 << 16 >> 16) * 7 | 0; + $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1; + $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264; + $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075; + $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0; + if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$204 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $207 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $207; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16; + $212 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $207; + break; + } + } + if ($67) { + $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + if (($70 | 0) > ($73 | 0)) { + HEAP16[$pnt2$367 >> 1] = $73; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $90 = $73; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $90 = $73; + } else { + HEAP16[$pnt2$367 >> 1] = $70; + if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $90 = $70; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $90 = $70; + } + $92 = ($90 << 16 >> 16) * 7 | 0; + $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1; + $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264; + $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($108 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $61; + $148 = $62 * 7 | 0; + $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1; + $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264; + $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075; + $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0; + if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($113 | 0) > ($116 | 0)) { + HEAP16[$pnt2$367 >> 1] = $116; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $133 = $116; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $133 = $116; + } else { + HEAP16[$pnt2$367 >> 1] = $113; + if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $133 = $113; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $133 = $113; + } + $135 = ($133 << 16 >> 16) * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $227 = $pnt$168 + 2 | 0; + $228 = $pnt2$367 + 2 | 0; + $229 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $229; + $pnt$1$lcssa = $227; + $pnt2$3$lcssa = $228; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $229; + $pnt$168 = $227; + $pnt2$367 = $228; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $236 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $238 = HEAP32[$wk$443 >> 2] | 0; + if (($238 | 0) == ($i$341 | 0)) { + $244 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $244; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $248 = $labelInfo + 8 | 0; + $249 = $j$1$lcssa + -1 | 0; + HEAP32[$248 >> 2] = $249; + if (!$249) $$0 = 0; else { + _memset($236 | 0, 0, $249 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $256 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $271 = $i$537 * 7 | 0; + $274 = $labelInfo + 12 + ($270 << 2) | 0; + HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0); + $281 = $270 << 1; + $282 = $labelInfo + 655376 + ($281 << 3) | 0; + HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0); + $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0); + $293 = $270 << 2; + $294 = $labelInfo + 131084 + ($293 << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312; + $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0; + $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0; + if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$248 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $323 = $labelInfo + 12 + ($i$636 << 2) | 0; + $326 = $i$636 << 1; + $327 = $labelInfo + 655376 + ($326 << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0); + $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0; + HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 1) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + $29 = HEAPU8[$pnt$168 >> 0] | 0; + do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($42 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $42; + $45 = ($42 << 16 >> 16) * 7 | 0; + $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1; + $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264; + $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $67 = $65 << 16 >> 16 > 0; + if ($61 << 16 >> 16 <= 0) { + if ($67) { + HEAP16[$pnt2$367 >> 1] = $65; + $167 = $66 * 7 | 0; + $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1; + $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264; + $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075; + $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0; + if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($187 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $187; + $190 = ($187 << 16 >> 16) * 7 | 0; + $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1; + $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264; + $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075; + $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0; + if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$204 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $207 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $207; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16; + $212 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $207; + break; + } + } + if ($67) { + $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + if (($70 | 0) > ($73 | 0)) { + HEAP16[$pnt2$367 >> 1] = $73; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $90 = $73; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $90 = $73; + } else { + HEAP16[$pnt2$367 >> 1] = $70; + if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $90 = $70; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $90 = $70; + } + $92 = ($90 << 16 >> 16) * 7 | 0; + $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1; + $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264; + $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($108 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $61; + $148 = $62 * 7 | 0; + $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1; + $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264; + $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075; + $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0; + if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($113 | 0) > ($116 | 0)) { + HEAP16[$pnt2$367 >> 1] = $116; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $133 = $116; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $133 = $116; + } else { + HEAP16[$pnt2$367 >> 1] = $113; + if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $133 = $113; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $133 = $113; + } + $135 = ($133 << 16 >> 16) * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $227 = $pnt$168 + 2 | 0; + $228 = $pnt2$367 + 2 | 0; + $229 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $229; + $pnt$1$lcssa = $227; + $pnt2$3$lcssa = $228; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $229; + $pnt$168 = $227; + $pnt2$367 = $228; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $236 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $238 = HEAP32[$wk$443 >> 2] | 0; + if (($238 | 0) == ($i$341 | 0)) { + $244 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $244; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $248 = $labelInfo + 8 | 0; + $249 = $j$1$lcssa + -1 | 0; + HEAP32[$248 >> 2] = $249; + if (!$249) $$0 = 0; else { + _memset($236 | 0, 0, $249 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $256 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $271 = $i$537 * 7 | 0; + $274 = $labelInfo + 12 + ($270 << 2) | 0; + HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0); + $281 = $270 << 1; + $282 = $labelInfo + 655376 + ($281 << 3) | 0; + HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0); + $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0; + HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0); + $293 = $270 << 2; + $294 = $labelInfo + 131084 + ($293 << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312; + $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0; + $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0; + if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$248 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $323 = $labelInfo + 12 + ($i$636 << 2) | 0; + $326 = $i$636 << 1; + $327 = $labelInfo + 655376 + ($326 << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0); + $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0; + HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabeling($image, $xsize, $ysize, $pixFormat, $debugMode, $labelingMode, $labelingThresh, $imageProcMode, $labelInfo, $image_thresh) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $pixFormat = $pixFormat | 0; + $debugMode = $debugMode | 0; + $labelingMode = $labelingMode | 0; + $labelingThresh = $labelingThresh | 0; + $imageProcMode = $imageProcMode | 0; + $labelInfo = $labelInfo | 0; + $image_thresh = $image_thresh | 0; + var $$0 = 0; + L1 : do switch ($debugMode | 0) { + case 0: + { + switch ($labelingMode | 0) { + case 1: + { + if ($image_thresh) { + $$0 = _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0; + break L1; + } + switch ($imageProcMode | 0) { + case 0: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + case 1: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + case 0: + { + if ($image_thresh) { + $$0 = _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0; + break L1; + } + switch ($imageProcMode | 0) { + case 0: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + case 1: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + case 1: + { + switch ($labelingMode | 0) { + case 1: + { + if ($image_thresh) { + $$0 = _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0; + break L1; + } + switch ($imageProcMode | 0) { + case 0: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + case 1: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + case 0: + { + if ($image_thresh) { + $$0 = _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0; + break L1; + } + switch ($imageProcMode | 0) { + case 0: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + case 1: + { + if ($pixFormat >>> 0 < 2) { + $$0 = _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -2 | 0) == 2) { + $$0 = _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + if (($pixFormat & -3 | 0) == 4) { + $$0 = _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + } + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + { + $$0 = _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 8: + { + $$0 = _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 7: + { + $$0 = _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 9: + { + $$0 = _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 10: + { + $$0 = _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + case 11: + { + $$0 = _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0; + break L1; + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } + break; + } + default: + _exit(0); + } while (0); + return $$0 | 0; +} + +function _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 2) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$367 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$203 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $206 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$367 >> 1] = $72; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $89 = $72; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$367 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $89 = $69; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$367 >> 1] = $115; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $132 = $115; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$367 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $132 = $112; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $226 = $pnt$168 + 4 | 0; + $227 = $pnt2$367 + 2 | 0; + $228 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $228; + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $228; + $pnt$168 = $226; + $pnt2$367 = $227; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 8 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $237 = HEAP32[$wk$443 >> 2] | 0; + if (($237 | 0) == ($i$341 | 0)) { + $243 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $243; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $255 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$537 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $322 = $labelInfo + 12 + ($i$636 << 2) | 0; + $325 = $i$636 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 2) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$367 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$203 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $206 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$367 >> 1] = $72; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $89 = $72; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$367 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $89 = $69; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$367 >> 1] = $115; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $132 = $115; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$367 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $132 = $112; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $226 = $pnt$168 + 4 | 0; + $227 = $pnt2$367 + 2 | 0; + $228 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $228; + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $228; + $pnt$168 = $226; + $pnt2$367 = $227; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 8 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $237 = HEAP32[$wk$443 >> 2] | 0; + if (($237 | 0) == ($i$341 | 0)) { + $243 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $243; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $255 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$537 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $322 = $labelInfo + 12 + ($i$636 << 2) | 0; + $325 = $i$636 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 * 3 | 0) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($40 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $40; + $43 = ($40 << 16 >> 16) * 7 | 0; + $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1; + $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264; + $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $65 = $63 << 16 >> 16 > 0; + if ($59 << 16 >> 16 <= 0) { + if ($65) { + HEAP16[$pnt2$367 >> 1] = $63; + $165 = $64 * 7 | 0; + $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1; + $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264; + $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075; + $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0; + if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($185 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $185; + $188 = ($185 << 16 >> 16) * 7 | 0; + $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1; + $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264; + $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075; + $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0; + if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$202 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $205 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $205; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16; + $210 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $205; + break; + } + } + if ($65) { + $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + if (($68 | 0) > ($71 | 0)) { + HEAP16[$pnt2$367 >> 1] = $71; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $88 = $71; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $88 = $71; + } else { + HEAP16[$pnt2$367 >> 1] = $68; + if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $88 = $68; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $88 = $68; + } + $90 = ($88 << 16 >> 16) * 7 | 0; + $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1; + $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264; + $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($106 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $59; + $146 = $60 * 7 | 0; + $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1; + $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264; + $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075; + $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0; + if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($111 | 0) > ($114 | 0)) { + HEAP16[$pnt2$367 >> 1] = $114; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $131 = $114; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $131 = $114; + } else { + HEAP16[$pnt2$367 >> 1] = $111; + if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $131 = $111; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $131 = $111; + } + $133 = ($131 << 16 >> 16) * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $225 = $pnt$168 + 3 | 0; + $226 = $pnt2$367 + 2 | 0; + $227 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $227; + $pnt$1$lcssa = $225; + $pnt2$3$lcssa = $226; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $227; + $pnt$168 = $225; + $pnt2$367 = $226; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 6 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $236 = HEAP32[$wk$443 >> 2] | 0; + if (($236 | 0) == ($i$341 | 0)) { + $242 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $242; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $254 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$537 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $321 = $labelInfo + 12 + ($i$636 << 2) | 0; + $324 = $i$636 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 * 3 | 0) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($40 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $40; + $43 = ($40 << 16 >> 16) * 7 | 0; + $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1; + $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264; + $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $65 = $63 << 16 >> 16 > 0; + if ($59 << 16 >> 16 <= 0) { + if ($65) { + HEAP16[$pnt2$367 >> 1] = $63; + $165 = $64 * 7 | 0; + $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1; + $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264; + $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075; + $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0; + if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($185 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $185; + $188 = ($185 << 16 >> 16) * 7 | 0; + $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1; + $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264; + $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075; + $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0; + if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$202 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $205 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $205; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16; + $210 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $205; + break; + } + } + if ($65) { + $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + if (($68 | 0) > ($71 | 0)) { + HEAP16[$pnt2$367 >> 1] = $71; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $88 = $71; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $88 = $71; + } else { + HEAP16[$pnt2$367 >> 1] = $68; + if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $88 = $68; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $88 = $68; + } + $90 = ($88 << 16 >> 16) * 7 | 0; + $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1; + $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264; + $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($106 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $59; + $146 = $60 * 7 | 0; + $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1; + $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264; + $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075; + $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0; + if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($111 | 0) > ($114 | 0)) { + HEAP16[$pnt2$367 >> 1] = $114; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $131 = $114; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $131 = $114; + } else { + HEAP16[$pnt2$367 >> 1] = $111; + if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $131 = $111; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $131 = $111; + } + $133 = ($131 << 16 >> 16) * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $225 = $pnt$168 + 3 | 0; + $226 = $pnt2$367 + 2 | 0; + $227 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $227; + $pnt$1$lcssa = $225; + $pnt2$3$lcssa = $226; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $227; + $pnt$168 = $225; + $pnt2$367 = $226; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 6 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $236 = HEAP32[$wk$443 >> 2] | 0; + if (($236 | 0) == ($i$341 | 0)) { + $242 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $242; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $254 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$537 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $321 = $labelInfo + 12 + ($i$636 << 2) | 0; + $324 = $i$636 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 2) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($40 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $40; + $43 = ($40 << 16 >> 16) * 7 | 0; + $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1; + $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264; + $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $65 = $63 << 16 >> 16 > 0; + if ($59 << 16 >> 16 <= 0) { + if ($65) { + HEAP16[$pnt2$367 >> 1] = $63; + $165 = $64 * 7 | 0; + $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1; + $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264; + $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075; + $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0; + if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($185 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $185; + $188 = ($185 << 16 >> 16) * 7 | 0; + $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1; + $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264; + $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075; + $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0; + if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$202 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $205 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $205; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16; + $210 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $205; + break; + } + } + if ($65) { + $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + if (($68 | 0) > ($71 | 0)) { + HEAP16[$pnt2$367 >> 1] = $71; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $88 = $71; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $88 = $71; + } else { + HEAP16[$pnt2$367 >> 1] = $68; + if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $88 = $68; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $88 = $68; + } + $90 = ($88 << 16 >> 16) * 7 | 0; + $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1; + $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264; + $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($106 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $59; + $146 = $60 * 7 | 0; + $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1; + $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264; + $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075; + $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0; + if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($111 | 0) > ($114 | 0)) { + HEAP16[$pnt2$367 >> 1] = $114; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $131 = $114; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $131 = $114; + } else { + HEAP16[$pnt2$367 >> 1] = $111; + if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $131 = $111; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $131 = $111; + } + $133 = ($131 << 16 >> 16) * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $225 = $pnt$168 + 4 | 0; + $226 = $pnt2$367 + 2 | 0; + $227 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $227; + $pnt$1$lcssa = $225; + $pnt2$3$lcssa = $226; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $227; + $pnt$168 = $225; + $pnt2$367 = $226; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 8 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $236 = HEAP32[$wk$443 >> 2] | 0; + if (($236 | 0) == ($i$341 | 0)) { + $242 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $242; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $254 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$537 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $321 = $labelInfo + 12 + ($i$636 << 2) | 0; + $324 = $i$636 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $27 = ($10 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0; + $j$075 = 1; + $pnt$079 = $image + ($18 << 2) | 0; + $pnt2$278 = $0 + ($18 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($27) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0; + if ($40 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $40; + $43 = ($40 << 16 >> 16) * 7 | 0; + $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1; + $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264; + $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $64 = $63 << 16 >> 16; + $65 = $63 << 16 >> 16 > 0; + if ($59 << 16 >> 16 <= 0) { + if ($65) { + HEAP16[$pnt2$367 >> 1] = $63; + $165 = $64 * 7 | 0; + $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1; + $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264; + $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0; + HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075; + $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0; + if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($185 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $185; + $188 = ($185 << 16 >> 16) * 7 | 0; + $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1; + $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264; + $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0; + HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075; + $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0; + if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$202 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $205 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $205; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16; + $210 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $205; + break; + } + } + if ($65) { + $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0; + if (($68 | 0) > ($71 | 0)) { + HEAP16[$pnt2$367 >> 1] = $71; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $17; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $88 = $71; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $88 = $71; + } else { + HEAP16[$pnt2$367 >> 1] = $68; + if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $17; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $88 = $68; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $88 = $68; + } + $90 = ($88 << 16 >> 16) * 7 | 0; + $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1; + $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264; + $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0; + HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($106 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $59; + $146 = $60 * 7 | 0; + $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1; + $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264; + $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075; + $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0; + if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($111 | 0) > ($114 | 0)) { + HEAP16[$pnt2$367 >> 1] = $114; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $17; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $131 = $114; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $131 = $114; + } else { + HEAP16[$pnt2$367 >> 1] = $111; + if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $17; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $131 = $111; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $131 = $111; + } + $133 = ($131 << 16 >> 16) * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $225 = $pnt$168 + 4 | 0; + $226 = $pnt2$367 + 2 | 0; + $227 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($10 | 0)) { + $dpnt$1$lcssa = $227; + $pnt$1$lcssa = $225; + $pnt2$3$lcssa = $226; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $227; + $pnt$168 = $225; + $pnt2$367 = $226; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 8 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $17; + while (1) { + $236 = HEAP32[$wk$443 >> 2] | 0; + if (($236 | 0) == ($i$341 | 0)) { + $242 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $242; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $254 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$537 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $321 = $labelInfo + 12 + ($i$636 << 2) | 0; + $324 = $i$636 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $30 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($30) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($36 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $36; + $39 = ($36 << 16 >> 16) * 7 | 0; + $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1; + $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265; + $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $61 = $59 << 16 >> 16 > 0; + if ($55 << 16 >> 16 <= 0) { + if ($61) { + HEAP16[$pnt2$368 >> 1] = $59; + $161 = $60 * 7 | 0; + $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1; + $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265; + $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076; + $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0; + if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($181 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $181; + $184 = ($181 << 16 >> 16) * 7 | 0; + $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1; + $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265; + $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076; + $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0; + if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$198 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $201 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $201; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16; + $206 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $201; + break; + } + } + if ($61) { + $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + if (($64 | 0) > ($67 | 0)) { + HEAP16[$pnt2$368 >> 1] = $67; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $84 = $67; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $84 = $67; + } else { + HEAP16[$pnt2$368 >> 1] = $64; + if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $84 = $64; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $84 = $64; + } + $86 = ($84 << 16 >> 16) * 7 | 0; + $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1; + $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265; + $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($102 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $55; + $142 = $56 * 7 | 0; + $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1; + $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265; + $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076; + $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0; + if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($107 | 0) > ($110 | 0)) { + HEAP16[$pnt2$368 >> 1] = $110; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $127 = $110; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $127 = $110; + } else { + HEAP16[$pnt2$368 >> 1] = $107; + if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $127 = $107; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $127 = $107; + } + $129 = ($127 << 16 >> 16) * 7 | 0; + $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1; + $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265; + $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $221 = $pnt$169 + 4 | 0; + $222 = $pnt2$368 + 2 | 0; + $223 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $223; + $pnt$1$lcssa = $221; + $pnt2$3$lcssa = $222; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $223; + $pnt$169 = $221; + $pnt2$368 = $222; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $230 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $232 = HEAP32[$wk$444 >> 2] | 0; + if (($232 | 0) == ($i$342 | 0)) { + $238 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $238; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $242 = $labelInfo + 8 | 0; + $243 = $j$1$lcssa + -1 | 0; + HEAP32[$242 >> 2] = $243; + if (!$243) $$0 = 0; else { + _memset($230 | 0, 0, $243 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $250 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $265 = $i$538 * 7 | 0; + $268 = $labelInfo + 12 + ($264 << 2) | 0; + HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0); + $275 = $264 << 1; + $276 = $labelInfo + 655376 + ($275 << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0); + $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0); + $287 = $264 << 2; + $288 = $labelInfo + 131084 + ($287 << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$242 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $317 = $labelInfo + 12 + ($i$637 << 2) | 0; + $320 = $i$637 << 1; + $321 = $labelInfo + 655376 + ($320 << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0); + $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $30 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($30) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($36 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $36; + $39 = ($36 << 16 >> 16) * 7 | 0; + $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1; + $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265; + $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $60 = $59 << 16 >> 16; + $61 = $59 << 16 >> 16 > 0; + if ($55 << 16 >> 16 <= 0) { + if ($61) { + HEAP16[$pnt2$368 >> 1] = $59; + $161 = $60 * 7 | 0; + $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1; + $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265; + $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0; + HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076; + $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0; + if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($181 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $181; + $184 = ($181 << 16 >> 16) * 7 | 0; + $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1; + $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265; + $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0; + HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076; + $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0; + if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$198 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $201 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $201; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16; + $206 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $201; + break; + } + } + if ($61) { + $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0; + if (($64 | 0) > ($67 | 0)) { + HEAP16[$pnt2$368 >> 1] = $67; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $84 = $67; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $84 = $67; + } else { + HEAP16[$pnt2$368 >> 1] = $64; + if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $84 = $64; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $84 = $64; + } + $86 = ($84 << 16 >> 16) * 7 | 0; + $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1; + $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265; + $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0; + HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($102 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $55; + $142 = $56 * 7 | 0; + $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1; + $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265; + $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0; + HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076; + $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0; + if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($107 | 0) > ($110 | 0)) { + HEAP16[$pnt2$368 >> 1] = $110; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $127 = $110; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $127 = $110; + } else { + HEAP16[$pnt2$368 >> 1] = $107; + if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $127 = $107; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $127 = $107; + } + $129 = ($127 << 16 >> 16) * 7 | 0; + $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1; + $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265; + $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $221 = $pnt$169 + 4 | 0; + $222 = $pnt2$368 + 2 | 0; + $223 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $223; + $pnt$1$lcssa = $221; + $pnt2$3$lcssa = $222; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $223; + $pnt$169 = $221; + $pnt2$368 = $222; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $230 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $232 = HEAP32[$wk$444 >> 2] | 0; + if (($232 | 0) == ($i$342 | 0)) { + $238 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $238; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $242 = $labelInfo + 8 | 0; + $243 = $j$1$lcssa + -1 | 0; + HEAP32[$242 >> 2] = $243; + if (!$243) $$0 = 0; else { + _memset($230 | 0, 0, $243 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $250 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $265 = $i$538 * 7 | 0; + $268 = $labelInfo + 12 + ($264 << 2) | 0; + HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0); + $275 = $264 << 1; + $276 = $labelInfo + 655376 + ($275 << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0); + $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0); + $287 = $264 << 2; + $288 = $labelInfo + 131084 + ($287 << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$242 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $317 = $labelInfo + 12 + ($i$637 << 2) | 0; + $320 = $i$637 << 1; + $321 = $labelInfo + 655376 + ($320 << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0); + $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $30 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($30) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($35 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $35; + $38 = ($35 << 16 >> 16) * 7 | 0; + $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1; + $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265; + $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $59 = $58 << 16 >> 16; + $60 = $58 << 16 >> 16 > 0; + if ($54 << 16 >> 16 <= 0) { + if ($60) { + HEAP16[$pnt2$368 >> 1] = $58; + $160 = $59 * 7 | 0; + $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1; + $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265; + $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076; + $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0; + if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($180 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $180; + $183 = ($180 << 16 >> 16) * 7 | 0; + $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1; + $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265; + $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076; + $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0; + if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$197 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $200 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $200; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16; + $205 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $200; + break; + } + } + if ($60) { + $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + if (($63 | 0) > ($66 | 0)) { + HEAP16[$pnt2$368 >> 1] = $66; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $83 = $66; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $83 = $66; + } else { + HEAP16[$pnt2$368 >> 1] = $63; + if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $83 = $63; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $83 = $63; + } + $85 = ($83 << 16 >> 16) * 7 | 0; + $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1; + $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265; + $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($101 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $54; + $141 = $55 * 7 | 0; + $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1; + $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265; + $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076; + $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0; + if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($106 | 0) > ($109 | 0)) { + HEAP16[$pnt2$368 >> 1] = $109; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $126 = $109; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $126 = $109; + } else { + HEAP16[$pnt2$368 >> 1] = $106; + if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $126 = $106; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $126 = $106; + } + $128 = ($126 << 16 >> 16) * 7 | 0; + $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1; + $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265; + $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $220 = $pnt$169 + 4 | 0; + $221 = $pnt2$368 + 2 | 0; + $222 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $222; + $pnt$1$lcssa = $220; + $pnt2$3$lcssa = $221; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $222; + $pnt$169 = $220; + $pnt2$368 = $221; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $231 = HEAP32[$wk$444 >> 2] | 0; + if (($231 | 0) == ($i$342 | 0)) { + $237 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $237; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $249 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$538 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $316 = $labelInfo + 12 + ($i$637 << 2) | 0; + $319 = $i$637 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} +function _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $30 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 2) + 4) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($30) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0; + if ($35 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $35; + $38 = ($35 << 16 >> 16) * 7 | 0; + $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1; + $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265; + $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $59 = $58 << 16 >> 16; + $60 = $58 << 16 >> 16 > 0; + if ($54 << 16 >> 16 <= 0) { + if ($60) { + HEAP16[$pnt2$368 >> 1] = $58; + $160 = $59 * 7 | 0; + $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1; + $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265; + $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076; + $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0; + if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($180 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $180; + $183 = ($180 << 16 >> 16) * 7 | 0; + $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1; + $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265; + $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076; + $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0; + if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$197 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $200 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $200; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16; + $205 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $200; + break; + } + } + if ($60) { + $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + if (($63 | 0) > ($66 | 0)) { + HEAP16[$pnt2$368 >> 1] = $66; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $83 = $66; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $83 = $66; + } else { + HEAP16[$pnt2$368 >> 1] = $63; + if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $83 = $63; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $83 = $63; + } + $85 = ($83 << 16 >> 16) * 7 | 0; + $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1; + $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265; + $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($101 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $54; + $141 = $55 * 7 | 0; + $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1; + $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265; + $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076; + $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0; + if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($106 | 0) > ($109 | 0)) { + HEAP16[$pnt2$368 >> 1] = $109; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $126 = $109; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $126 = $109; + } else { + HEAP16[$pnt2$368 >> 1] = $106; + if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $126 = $106; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $126 = $106; + } + $128 = ($126 << 16 >> 16) * 7 | 0; + $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1; + $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265; + $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $220 = $pnt$169 + 4 | 0; + $221 = $pnt2$368 + 2 | 0; + $222 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $222; + $pnt$1$lcssa = $220; + $pnt2$3$lcssa = $221; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $222; + $pnt$169 = $220; + $pnt2$368 = $221; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $231 = HEAP32[$wk$444 >> 2] | 0; + if (($231 | 0) == ($i$342 | 0)) { + $237 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $237; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $249 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$538 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $316 = $labelInfo + 12 + ($i$637 << 2) | 0; + $319 = $i$637 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = $xsize + 4 | 0; + L11 : do if (($3 | 0) > 1) { + $29 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 1) + 2) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($29) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$167 >> 0] = -1; + $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0; + if ($34 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $34; + $37 = ($34 << 16 >> 16) * 7 | 0; + $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0; + HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1; + $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265; + $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $54 = $53 << 16 >> 16; + $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $58 = $57 << 16 >> 16; + $59 = $57 << 16 >> 16 > 0; + if ($53 << 16 >> 16 <= 0) { + if ($59) { + HEAP16[$pnt2$368 >> 1] = $57; + $159 = $58 * 7 | 0; + $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1; + $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265; + $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076; + $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0; + if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($179 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $179; + $182 = ($179 << 16 >> 16) * 7 | 0; + $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0; + HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1; + $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265; + $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076; + $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0; + if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$196 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $199 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $199; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16; + $204 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $199; + break; + } + } + if ($59) { + $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + if (($62 | 0) > ($65 | 0)) { + HEAP16[$pnt2$368 >> 1] = $65; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $82 = $65; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $82 = $65; + } else { + HEAP16[$pnt2$368 >> 1] = $62; + if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $82 = $62; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $82 = $62; + } + $84 = ($82 << 16 >> 16) * 7 | 0; + $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1; + $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265; + $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($100 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $53; + $140 = $54 * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076; + $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0; + if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($105 | 0) > ($108 | 0)) { + HEAP16[$pnt2$368 >> 1] = $108; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $125 = $108; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $125 = $108; + } else { + HEAP16[$pnt2$368 >> 1] = $105; + if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $125 = $105; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $125 = $105; + } + $127 = ($125 << 16 >> 16) * 7 | 0; + $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0; + HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1; + $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265; + $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $219 = $pnt$169 + 2 | 0; + $220 = $pnt2$368 + 2 | 0; + $221 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $221; + $pnt$1$lcssa = $219; + $pnt2$3$lcssa = $220; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $221; + $pnt$169 = $219; + $pnt2$368 = $220; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $228 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $230 = HEAP32[$wk$444 >> 2] | 0; + if (($230 | 0) == ($i$342 | 0)) { + $236 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $236; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $240 = $labelInfo + 8 | 0; + $241 = $j$1$lcssa + -1 | 0; + HEAP32[$240 >> 2] = $241; + if (!$241) $$0 = 0; else { + _memset($228 | 0, 0, $241 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $248 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $263 = $i$538 * 7 | 0; + $266 = $labelInfo + 12 + ($262 << 2) | 0; + HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0); + $273 = $262 << 1; + $274 = $labelInfo + 655376 + ($273 << 3) | 0; + HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0); + $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0; + HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0); + $285 = $262 << 2; + $286 = $labelInfo + 131084 + ($285 << 2) | 0; + $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0; + if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290; + $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$240 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $315 = $labelInfo + 12 + ($i$637 << 2) | 0; + $318 = $i$637 << 1; + $319 = $labelInfo + 655376 + ($318 << 3) | 0; + HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0); + $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} +function _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$089 = 0; + $pnt1$091 = $2; + $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$090 >> 1] = 0; + HEAP16[$pnt1$091 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($0 | 0)) break; else { + $pnt1$091 = $pnt1$091 + 2 | 0; + $pnt2$090 = $pnt2$090 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$183 = 0; + $pnt1$185 = $2; + $pnt2$184 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$184 >> 1] = 0; + HEAP16[$pnt1$185 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($1 | 0)) break; else { + $pnt1$185 = $pnt1$185 + ($0 << 1) | 0; + $pnt2$184 = $pnt2$184 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = $0 + 1 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = $xsize + 4 | 0; + L11 : do if (($3 | 0) > 1) { + $29 = ($11 | 0) > 1; + $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0; + $j$076 = 1; + $pnt$080 = $image + (($xsize << 1) + 2) | 0; + $pnt2$279 = $2 + ($19 << 1) | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($29) { + $dpnt$167 = $dpnt$078; + $i$265 = 1; + $pnt$169 = $pnt$080; + $pnt2$368 = $pnt2$279; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$368 >> 1] = 0; + HEAP8[$dpnt$167 >> 0] = 0; + $wk_max$2 = $wk_max$160; + } else { + HEAP8[$dpnt$167 >> 0] = -1; + $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0; + if ($34 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $34; + $37 = ($34 << 16 >> 16) * 7 | 0; + $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0; + HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1; + $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265; + $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0; + $54 = $53 << 16 >> 16; + $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0; + $58 = $57 << 16 >> 16; + $59 = $57 << 16 >> 16 > 0; + if ($53 << 16 >> 16 <= 0) { + if ($59) { + HEAP16[$pnt2$368 >> 1] = $57; + $159 = $58 * 7 | 0; + $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1; + $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265; + $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076; + $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0; + if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($179 << 16 >> 16 > 0) { + HEAP16[$pnt2$368 >> 1] = $179; + $182 = ($179 << 16 >> 16) * 7 | 0; + $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0; + HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1; + $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265; + $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076; + $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0; + if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$196 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $199 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$368 >> 1] = $199; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16; + $204 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $199; + break; + } + } + if ($59) { + $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + if (($62 | 0) > ($65 | 0)) { + HEAP16[$pnt2$368 >> 1] = $65; + if (($wk_max$160 | 0) > 0) { + $k$056 = 0; + $wk$057 = $18; + while (1) { + if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65; + $k$056 = $k$056 + 1 | 0; + if (($k$056 | 0) >= ($wk_max$160 | 0)) { + $82 = $65; + break; + } else $wk$057 = $wk$057 + 4 | 0; + } + } else $82 = $65; + } else { + HEAP16[$pnt2$368 >> 1] = $62; + if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) { + $k$153 = 0; + $wk$154 = $18; + while (1) { + if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62; + $k$153 = $k$153 + 1 | 0; + if (($k$153 | 0) >= ($wk_max$160 | 0)) { + $82 = $62; + break; + } else $wk$154 = $wk$154 + 4 | 0; + } + } else $82 = $62; + } + $84 = ($82 << 16 >> 16) * 7 | 0; + $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1; + $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265; + $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0; + if ($100 << 16 >> 16 <= 0) { + HEAP16[$pnt2$368 >> 1] = $53; + $140 = $54 * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076; + $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0; + if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($105 | 0) > ($108 | 0)) { + HEAP16[$pnt2$368 >> 1] = $108; + if (($wk_max$160 | 0) > 0) { + $k$249 = 0; + $wk$250 = $18; + while (1) { + if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108; + $k$249 = $k$249 + 1 | 0; + if (($k$249 | 0) >= ($wk_max$160 | 0)) { + $125 = $108; + break; + } else $wk$250 = $wk$250 + 4 | 0; + } + } else $125 = $108; + } else { + HEAP16[$pnt2$368 >> 1] = $105; + if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) { + $k$346 = 0; + $wk$347 = $18; + while (1) { + if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105; + $k$346 = $k$346 + 1 | 0; + if (($k$346 | 0) >= ($wk_max$160 | 0)) { + $125 = $105; + break; + } else $wk$347 = $wk$347 + 4 | 0; + } + } else $125 = $105; + } + $127 = ($125 << 16 >> 16) * 7 | 0; + $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0; + HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1; + $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265; + $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $219 = $pnt$169 + 2 | 0; + $220 = $pnt2$368 + 2 | 0; + $221 = $dpnt$167 + 1 | 0; + if (($i$265 | 0) >= ($11 | 0)) { + $dpnt$1$lcssa = $221; + $pnt$1$lcssa = $219; + $pnt2$3$lcssa = $220; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$167 = $221; + $pnt$169 = $219; + $pnt2$368 = $220; + $wk_max$160 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$078; + $pnt$1$lcssa = $pnt$080; + $pnt2$3$lcssa = $pnt2$279; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$078 = $dpnt$1$lcssa + 2 | 0; + $pnt$080 = $pnt$1$lcssa + $$sum | 0; + $pnt2$279 = $pnt2$3$lcssa + 4 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $228 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$342 = 1; + $j$143 = 1; + $wk$444 = $18; + while (1) { + $230 = HEAP32[$wk$444 >> 2] | 0; + if (($230 | 0) == ($i$342 | 0)) { + $236 = $j$143; + $j$2 = $j$143 + 1 | 0; + } else { + $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0; + $j$2 = $j$143; + } + HEAP32[$wk$444 >> 2] = $236; + if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) { + $i$342 = $i$342 + 1 | 0; + $j$143 = $j$2; + $wk$444 = $wk$444 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $240 = $labelInfo + 8 | 0; + $241 = $j$1$lcssa + -1 | 0; + HEAP32[$240 >> 2] = $241; + if (!$241) $$0 = 0; else { + _memset($228 | 0, 0, $241 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$440 = 0; + do { + $248 = $i$440 << 2; + HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0; + $i$440 = $i$440 + 1 | 0; + } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$538 = 0; + do { + $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0; + $263 = $i$538 * 7 | 0; + $266 = $labelInfo + 12 + ($262 << 2) | 0; + HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0); + $273 = $262 << 1; + $274 = $labelInfo + 655376 + ($273 << 3) | 0; + HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0); + $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0; + HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0); + $285 = $262 << 2; + $286 = $labelInfo + 131084 + ($285 << 2) | 0; + $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0; + if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290; + $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311; + $i$538 = $i$538 + 1 | 0; + } while (($i$538 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$240 >> 2] | 0) > 0) { + $i$637 = 0; + do { + $315 = $labelInfo + 12 + ($i$637 << 2) | 0; + $318 = $i$637 << 1; + $319 = $labelInfo + 655376 + ($318 << 3) | 0; + HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0); + $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0); + $i$637 = $i$637 + 1 | 0; + } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + ($17 << 1) | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($26) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($32 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $32; + $35 = ($32 << 16 >> 16) * 7 | 0; + $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1; + $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264; + $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $57 = $55 << 16 >> 16 > 0; + if ($51 << 16 >> 16 <= 0) { + if ($57) { + HEAP16[$pnt2$367 >> 1] = $55; + $157 = $56 * 7 | 0; + $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1; + $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264; + $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075; + $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0; + if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($177 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $177; + $180 = ($177 << 16 >> 16) * 7 | 0; + $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1; + $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264; + $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075; + $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0; + if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$194 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $197 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $197; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16; + $202 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $197; + break; + } + } + if ($57) { + $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + if (($60 | 0) > ($63 | 0)) { + HEAP16[$pnt2$367 >> 1] = $63; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $80 = $63; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $80 = $63; + } else { + HEAP16[$pnt2$367 >> 1] = $60; + if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $80 = $60; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $80 = $60; + } + $82 = ($80 << 16 >> 16) * 7 | 0; + $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1; + $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264; + $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($98 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $51; + $138 = $52 * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075; + $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0; + if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($103 | 0) > ($106 | 0)) { + HEAP16[$pnt2$367 >> 1] = $106; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $123 = $106; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $123 = $106; + } else { + HEAP16[$pnt2$367 >> 1] = $103; + if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $123 = $103; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $123 = $103; + } + $125 = ($123 << 16 >> 16) * 7 | 0; + $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1; + $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264; + $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $217 = $pnt$168 + 2 | 0; + $218 = $pnt2$367 + 2 | 0; + $219 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $219; + $pnt$1$lcssa = $217; + $pnt2$3$lcssa = $218; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $219; + $pnt$168 = $217; + $pnt2$367 = $218; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $226 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $228 = HEAP32[$wk$443 >> 2] | 0; + if (($228 | 0) == ($i$341 | 0)) { + $234 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $234; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $238 = $labelInfo + 8 | 0; + $239 = $j$1$lcssa + -1 | 0; + HEAP32[$238 >> 2] = $239; + if (!$239) $$0 = 0; else { + _memset($226 | 0, 0, $239 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $246 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $261 = $i$537 * 7 | 0; + $264 = $labelInfo + 12 + ($260 << 2) | 0; + HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0); + $271 = $260 << 1; + $272 = $labelInfo + 655376 + ($271 << 3) | 0; + HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0); + $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0); + $283 = $260 << 2; + $284 = $labelInfo + 131084 + ($283 << 2) | 0; + $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0; + if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288; + $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$238 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $313 = $labelInfo + 12 + ($i$636 << 2) | 0; + $316 = $i$636 << 1; + $317 = $labelInfo + 655376 + ($316 << 3) | 0; + HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0); + $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0; + HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + ($17 << 1) | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($26) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($32 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $32; + $35 = ($32 << 16 >> 16) * 7 | 0; + $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1; + $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264; + $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $57 = $55 << 16 >> 16 > 0; + if ($51 << 16 >> 16 <= 0) { + if ($57) { + HEAP16[$pnt2$367 >> 1] = $55; + $157 = $56 * 7 | 0; + $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1; + $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264; + $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075; + $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0; + if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($177 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $177; + $180 = ($177 << 16 >> 16) * 7 | 0; + $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1; + $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264; + $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075; + $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0; + if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$194 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $197 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $197; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16; + $202 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $197; + break; + } + } + if ($57) { + $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + if (($60 | 0) > ($63 | 0)) { + HEAP16[$pnt2$367 >> 1] = $63; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $80 = $63; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $80 = $63; + } else { + HEAP16[$pnt2$367 >> 1] = $60; + if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $80 = $60; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $80 = $60; + } + $82 = ($80 << 16 >> 16) * 7 | 0; + $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1; + $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264; + $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($98 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $51; + $138 = $52 * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075; + $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0; + if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($103 | 0) > ($106 | 0)) { + HEAP16[$pnt2$367 >> 1] = $106; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $123 = $106; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $123 = $106; + } else { + HEAP16[$pnt2$367 >> 1] = $103; + if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $123 = $103; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $123 = $103; + } + $125 = ($123 << 16 >> 16) * 7 | 0; + $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1; + $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264; + $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $217 = $pnt$168 + 2 | 0; + $218 = $pnt2$367 + 2 | 0; + $219 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $219; + $pnt$1$lcssa = $217; + $pnt2$3$lcssa = $218; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $219; + $pnt$168 = $217; + $pnt2$367 = $218; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $226 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $228 = HEAP32[$wk$443 >> 2] | 0; + if (($228 | 0) == ($i$341 | 0)) { + $234 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $234; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $238 = $labelInfo + 8 | 0; + $239 = $j$1$lcssa + -1 | 0; + HEAP32[$238 >> 2] = $239; + if (!$239) $$0 = 0; else { + _memset($226 | 0, 0, $239 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $246 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $261 = $i$537 * 7 | 0; + $264 = $labelInfo + 12 + ($260 << 2) | 0; + HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0); + $271 = $260 << 1; + $272 = $labelInfo + 655376 + ($271 << 3) | 0; + HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0); + $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0); + $283 = $260 << 2; + $284 = $labelInfo + 131084 + ($283 << 2) | 0; + $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0; + if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288; + $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$238 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $313 = $labelInfo + 12 + ($i$636 << 2) | 0; + $316 = $i$636 << 1; + $317 = $labelInfo + 655376 + ($316 << 3) | 0; + HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0); + $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0; + HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + ($17 << 1) | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($26) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$367 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$193 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $196 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$367 >> 1] = $62; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $79 = $62; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$367 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $79 = $59; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$367 >> 1] = $105; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $122 = $105; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$367 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $122 = $102; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $216 = $pnt$168 + 2 | 0; + $217 = $pnt2$367 + 2 | 0; + $218 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $218; + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $218; + $pnt$168 = $216; + $pnt2$367 = $217; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $225 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $227 = HEAP32[$wk$443 >> 2] | 0; + if (($227 | 0) == ($i$341 | 0)) { + $233 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $233; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $237 = $labelInfo + 8 | 0; + $238 = $j$1$lcssa + -1 | 0; + HEAP32[$237 >> 2] = $238; + if (!$238) $$0 = 0; else { + _memset($225 | 0, 0, $238 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $245 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $260 = $i$537 * 7 | 0; + $263 = $labelInfo + 12 + ($259 << 2) | 0; + HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0); + $270 = $259 << 1; + $271 = $labelInfo + 655376 + ($270 << 3) | 0; + HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0); + $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0); + $282 = $259 << 2; + $283 = $labelInfo + 131084 + ($282 << 2) | 0; + $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0; + if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287; + $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0; + $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0; + if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294; + $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$237 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $312 = $labelInfo + 12 + ($i$636 << 2) | 0; + $315 = $i$636 << 1; + $316 = $labelInfo + 655376 + ($315 << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0); + $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $26 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + ($17 << 1) | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($26) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$367 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$193 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $196 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$367 >> 1] = $62; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $79 = $62; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$367 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $79 = $59; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$367 >> 1] = $105; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $122 = $105; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$367 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $122 = $102; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $216 = $pnt$168 + 2 | 0; + $217 = $pnt2$367 + 2 | 0; + $218 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $218; + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $218; + $pnt$168 = $216; + $pnt2$367 = $217; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 4 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $225 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $227 = HEAP32[$wk$443 >> 2] | 0; + if (($227 | 0) == ($i$341 | 0)) { + $233 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $233; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $237 = $labelInfo + 8 | 0; + $238 = $j$1$lcssa + -1 | 0; + HEAP32[$237 >> 2] = $238; + if (!$238) $$0 = 0; else { + _memset($225 | 0, 0, $238 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $245 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $260 = $i$537 * 7 | 0; + $263 = $labelInfo + 12 + ($259 << 2) | 0; + HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0); + $270 = $259 << 1; + $271 = $labelInfo + 655376 + ($270 << 3) | 0; + HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0); + $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0); + $282 = $259 << 2; + $283 = $labelInfo + 131084 + ($282 << 2) | 0; + $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0; + if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287; + $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0; + $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0; + if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294; + $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$237 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $312 = $labelInfo + 12 + ($i$636 << 2) | 0; + $315 = $i$636 << 1; + $316 = $labelInfo + 655376 + ($315 << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0); + $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $25 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + $17 | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($25) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP8[$dpnt$166 >> 0] = -1; + $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($30 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $30; + $33 = ($30 << 16 >> 16) * 7 | 0; + $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0; + HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1; + $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0; + HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264; + $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $50 = $49 << 16 >> 16; + $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $54 = $53 << 16 >> 16; + $55 = $53 << 16 >> 16 > 0; + if ($49 << 16 >> 16 <= 0) { + if ($55) { + HEAP16[$pnt2$367 >> 1] = $53; + $155 = $54 * 7 | 0; + $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1; + $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264; + $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075; + $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0; + if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($175 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $175; + $178 = ($175 << 16 >> 16) * 7 | 0; + $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0; + HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1; + $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0; + HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264; + $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075; + $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0; + if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$192 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $195 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $195; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16; + $200 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $195; + break; + } + } + if ($55) { + $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0; + $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + if (($58 | 0) > ($61 | 0)) { + HEAP16[$pnt2$367 >> 1] = $61; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $78 = $61; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $78 = $61; + } else { + HEAP16[$pnt2$367 >> 1] = $58; + if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $78 = $58; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $78 = $58; + } + $80 = ($78 << 16 >> 16) * 7 | 0; + $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0; + HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1; + $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264; + $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($96 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $49; + $136 = $50 * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075; + $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0; + if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0; + $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($101 | 0) > ($104 | 0)) { + HEAP16[$pnt2$367 >> 1] = $104; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $121 = $104; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $121 = $104; + } else { + HEAP16[$pnt2$367 >> 1] = $101; + if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $121 = $101; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $121 = $101; + } + $123 = ($121 << 16 >> 16) * 7 | 0; + $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0; + HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1; + $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0; + HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264; + $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } else { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $215 = $pnt$168 + 1 | 0; + $216 = $pnt2$367 + 2 | 0; + $217 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $217; + $pnt$1$lcssa = $215; + $pnt2$3$lcssa = $216; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $217; + $pnt$168 = $215; + $pnt2$367 = $216; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 2 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $224 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $226 = HEAP32[$wk$443 >> 2] | 0; + if (($226 | 0) == ($i$341 | 0)) { + $232 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $232; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $236 = $labelInfo + 8 | 0; + $237 = $j$1$lcssa + -1 | 0; + HEAP32[$236 >> 2] = $237; + if (!$237) $$0 = 0; else { + _memset($224 | 0, 0, $237 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $244 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $259 = $i$537 * 7 | 0; + $262 = $labelInfo + 12 + ($258 << 2) | 0; + HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0); + $269 = $258 << 1; + $270 = $labelInfo + 655376 + ($269 << 3) | 0; + HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0); + $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0; + HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0); + $281 = $258 << 2; + $282 = $labelInfo + 131084 + ($281 << 2) | 0; + $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0; + if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286; + $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$236 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $311 = $labelInfo + 12 + ($i$636 << 2) | 0; + $314 = $i$636 << 1; + $315 = $labelInfo + 655376 + ($314 << 3) | 0; + HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0); + $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$088 = 0; + $pnt1$090 = $0; + $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$089 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$088 = $i$088 + 1 | 0; + if (($i$088 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$089 = $pnt2$089 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$182 = 0; + $pnt1$184 = $0; + $pnt2$183 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$183 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$182 = $i$182 + 1 | 0; + if (($i$182 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $25 = ($9 | 0) > 1; + $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0; + $j$075 = 1; + $pnt$079 = $image + $17 | 0; + $pnt2$278 = $0 + ($17 << 1) | 0; + $wk_max$074 = 0; + L13 : while (1) { + if ($25) { + $dpnt$166 = $dpnt$077; + $i$264 = 1; + $pnt$168 = $pnt$079; + $pnt2$367 = $pnt2$278; + $wk_max$159 = $wk_max$074; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$367 >> 1] = 0; + HEAP8[$dpnt$166 >> 0] = 0; + $wk_max$2 = $wk_max$159; + } else { + HEAP8[$dpnt$166 >> 0] = -1; + $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0; + if ($30 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $30; + $33 = ($30 << 16 >> 16) * 7 | 0; + $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0; + HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1; + $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0; + HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264; + $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0; + $50 = $49 << 16 >> 16; + $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0; + $54 = $53 << 16 >> 16; + $55 = $53 << 16 >> 16 > 0; + if ($49 << 16 >> 16 <= 0) { + if ($55) { + HEAP16[$pnt2$367 >> 1] = $53; + $155 = $54 * 7 | 0; + $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1; + $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0; + HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264; + $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075; + $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0; + if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($175 << 16 >> 16 > 0) { + HEAP16[$pnt2$367 >> 1] = $175; + $178 = ($175 << 16 >> 16) * 7 | 0; + $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0; + HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1; + $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0; + HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264; + $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075; + $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0; + if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) { + $wk_max$2 = $wk_max$159; + break; + } + HEAP32[$192 >> 2] = $i$264; + $wk_max$2 = $wk_max$159; + break; + } else { + $195 = $wk_max$159 + 1 | 0; + if (($wk_max$159 | 0) > 32767) break L13; + HEAP16[$pnt2$367 >> 1] = $195; + HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16; + $200 = $wk_max$159 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075; + HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075; + $wk_max$2 = $195; + break; + } + } + if ($55) { + $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0; + $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0; + if (($58 | 0) > ($61 | 0)) { + HEAP16[$pnt2$367 >> 1] = $61; + if (($wk_max$159 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$159 | 0)) { + $78 = $61; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $78 = $61; + } else { + HEAP16[$pnt2$367 >> 1] = $58; + if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$159 | 0)) { + $78 = $58; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $78 = $58; + } + $80 = ($78 << 16 >> 16) * 7 | 0; + $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0; + HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1; + $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0; + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264; + $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075; + HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0; + if ($96 << 16 >> 16 <= 0) { + HEAP16[$pnt2$367 >> 1] = $49; + $136 = $50 * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075; + $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0; + if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264; + HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075; + $wk_max$2 = $wk_max$159; + break; + } + $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0; + $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($101 | 0) > ($104 | 0)) { + HEAP16[$pnt2$367 >> 1] = $104; + if (($wk_max$159 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$159 | 0)) { + $121 = $104; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $121 = $104; + } else { + HEAP16[$pnt2$367 >> 1] = $101; + if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$159 | 0)) { + $121 = $101; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $121 = $101; + } + $123 = ($121 << 16 >> 16) * 7 | 0; + $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0; + HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1; + $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0; + HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264; + $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075; + $wk_max$2 = $wk_max$159; + } while (0); + $i$264 = $i$264 + 1 | 0; + $215 = $pnt$168 + 1 | 0; + $216 = $pnt2$367 + 2 | 0; + $217 = $dpnt$166 + 1 | 0; + if (($i$264 | 0) >= ($9 | 0)) { + $dpnt$1$lcssa = $217; + $pnt$1$lcssa = $215; + $pnt2$3$lcssa = $216; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $dpnt$166 = $217; + $pnt$168 = $215; + $pnt2$367 = $216; + $wk_max$159 = $wk_max$2; + } + } + } else { + $dpnt$1$lcssa = $dpnt$077; + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$278; + $wk_max$1$lcssa = $wk_max$074; + } + $j$075 = $j$075 + 1 | 0; + if (($j$075 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $dpnt$077 = $dpnt$1$lcssa + 2 | 0; + $pnt$079 = $pnt$1$lcssa + 2 | 0; + $pnt2$278 = $pnt2$3$lcssa + 4 | 0; + $wk_max$074 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $224 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $226 = HEAP32[$wk$443 >> 2] | 0; + if (($226 | 0) == ($i$341 | 0)) { + $232 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $232; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $236 = $labelInfo + 8 | 0; + $237 = $j$1$lcssa + -1 | 0; + HEAP32[$236 >> 2] = $237; + if (!$237) $$0 = 0; else { + _memset($224 | 0, 0, $237 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $244 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $259 = $i$537 * 7 | 0; + $262 = $labelInfo + 12 + ($258 << 2) | 0; + HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0); + $269 = $258 << 1; + $270 = $labelInfo + 655376 + ($269 << 3) | 0; + HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0); + $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0; + HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0); + $281 = $258 << 2; + $282 = $labelInfo + 131084 + ($281 << 2) | 0; + $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0; + if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286; + $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$236 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $311 = $labelInfo + 12 + ($i$636 << 2) | 0; + $314 = $i$636 << 1; + $315 = $labelInfo + 655376 + ($314 << 3) | 0; + HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0); + $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $image_thresh = $image_thresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$089 = 0; + $pnt1$090 = $0; + $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$088 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$088 = $pnt2$088 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$183 = 0; + $pnt1$184 = $0; + $pnt2$182 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$182 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$076 = 1; + $pnt$079 = $image + $17 | 0; + $pnt2$274 = $0 + ($17 << 1) | 0; + $pnt_thresh$078 = $image_thresh + $17 | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($23) { + $i$265 = 1; + $pnt$168 = $pnt$079; + $pnt2$359 = $pnt2$274; + $pnt_thresh$167 = $pnt_thresh$078; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) { + $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0; + if ($28 << 16 >> 16 > 0) { + HEAP16[$pnt2$359 >> 1] = $28; + $31 = ($28 << 16 >> 16) * 7 | 0; + $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0; + HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1; + $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265; + $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0; + $48 = $47 << 16 >> 16; + $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $53 = $51 << 16 >> 16 > 0; + if ($47 << 16 >> 16 <= 0) { + if ($53) { + HEAP16[$pnt2$359 >> 1] = $51; + $153 = $52 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076; + $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0; + if ($173 << 16 >> 16 > 0) { + HEAP16[$pnt2$359 >> 1] = $173; + $176 = ($173 << 16 >> 16) * 7 | 0; + $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1; + $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265; + $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076; + $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0; + if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$190 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $193 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$359 >> 1] = $193; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16; + $198 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $193; + break; + } + } + if ($53) { + $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + if (($56 | 0) > ($59 | 0)) { + HEAP16[$pnt2$359 >> 1] = $59; + if (($wk_max$160 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$160 | 0)) { + $76 = $59; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $76 = $59; + } else { + HEAP16[$pnt2$359 >> 1] = $56; + if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$160 | 0)) { + $76 = $56; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $76 = $56; + } + $78 = ($76 << 16 >> 16) * 7 | 0; + $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0; + HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1; + $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265; + $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0; + if ($94 << 16 >> 16 <= 0) { + HEAP16[$pnt2$359 >> 1] = $47; + $134 = $48 * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076; + $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0; + if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($99 | 0) > ($102 | 0)) { + HEAP16[$pnt2$359 >> 1] = $102; + if (($wk_max$160 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$160 | 0)) { + $119 = $102; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $119 = $102; + } else { + HEAP16[$pnt2$359 >> 1] = $99; + if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$160 | 0)) { + $119 = $99; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $119 = $99; + } + $121 = ($119 << 16 >> 16) * 7 | 0; + $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0; + HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1; + $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265; + $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } else { + HEAP16[$pnt2$359 >> 1] = 0; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $213 = $pnt$168 + 1 | 0; + $214 = $pnt_thresh$167 + 1 | 0; + $215 = $pnt2$359 + 2 | 0; + if (($i$265 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $213; + $pnt2$3$lcssa = $215; + $pnt_thresh$1$lcssa = $214; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$168 = $213; + $pnt2$359 = $215; + $pnt_thresh$167 = $214; + $wk_max$160 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$274; + $pnt_thresh$1$lcssa = $pnt_thresh$078; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$079 = $pnt$1$lcssa + 2 | 0; + $pnt2$274 = $pnt2$3$lcssa + 4 | 0; + $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $222 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $224 = HEAP32[$wk$443 >> 2] | 0; + if (($224 | 0) == ($i$341 | 0)) { + $230 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $230; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $234 = $labelInfo + 8 | 0; + $235 = $j$1$lcssa + -1 | 0; + HEAP32[$234 >> 2] = $235; + if (!$235) $$0 = 0; else { + _memset($222 | 0, 0, $235 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $242 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $257 = $i$537 * 7 | 0; + $260 = $labelInfo + 12 + ($256 << 2) | 0; + HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0); + $267 = $256 << 1; + $268 = $labelInfo + 655376 + ($267 << 3) | 0; + HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0); + $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0); + $279 = $256 << 2; + $280 = $labelInfo + 131084 + ($279 << 2) | 0; + $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0; + if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284; + $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$234 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $309 = $labelInfo + 12 + ($i$636 << 2) | 0; + $312 = $i$636 << 1; + $313 = $labelInfo + 655376 + ($312 << 3) | 0; + HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0); + $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0; + HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $image_thresh = $image_thresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$089 = 0; + $pnt1$090 = $0; + $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$088 >> 1] = 0; + HEAP16[$pnt1$090 >> 1] = 0; + $i$089 = $i$089 + 1 | 0; + if (($i$089 | 0) >= ($xsize | 0)) break; else { + $pnt1$090 = $pnt1$090 + 2 | 0; + $pnt2$088 = $pnt2$088 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$183 = 0; + $pnt1$184 = $0; + $pnt2$182 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$182 >> 1] = 0; + HEAP16[$pnt1$184 >> 1] = 0; + $i$183 = $i$183 + 1 | 0; + if (($i$183 | 0) >= ($ysize | 0)) break; else { + $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0; + $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$076 = 1; + $pnt$079 = $image + $17 | 0; + $pnt2$274 = $0 + ($17 << 1) | 0; + $pnt_thresh$078 = $image_thresh + $17 | 0; + $wk_max$075 = 0; + L13 : while (1) { + if ($23) { + $i$265 = 1; + $pnt$168 = $pnt$079; + $pnt2$359 = $pnt2$274; + $pnt_thresh$167 = $pnt_thresh$078; + $wk_max$160 = $wk_max$075; + while (1) { + do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) { + HEAP16[$pnt2$359 >> 1] = 0; + $wk_max$2 = $wk_max$160; + } else { + $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0; + if ($28 << 16 >> 16 > 0) { + HEAP16[$pnt2$359 >> 1] = $28; + $31 = ($28 << 16 >> 16) * 7 | 0; + $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0; + HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1; + $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265; + $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0; + $48 = $47 << 16 >> 16; + $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $53 = $51 << 16 >> 16 > 0; + if ($47 << 16 >> 16 <= 0) { + if ($53) { + HEAP16[$pnt2$359 >> 1] = $51; + $153 = $52 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076; + $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0; + if ($173 << 16 >> 16 > 0) { + HEAP16[$pnt2$359 >> 1] = $173; + $176 = ($173 << 16 >> 16) * 7 | 0; + $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1; + $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265; + $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076; + $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0; + if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) { + $wk_max$2 = $wk_max$160; + break; + } + HEAP32[$190 >> 2] = $i$265; + $wk_max$2 = $wk_max$160; + break; + } else { + $193 = $wk_max$160 + 1 | 0; + if (($wk_max$160 | 0) > 32767) break L13; + HEAP16[$pnt2$359 >> 1] = $193; + HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16; + $198 = $wk_max$160 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076; + HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076; + $wk_max$2 = $193; + break; + } + } + if ($53) { + $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + if (($56 | 0) > ($59 | 0)) { + HEAP16[$pnt2$359 >> 1] = $59; + if (($wk_max$160 | 0) > 0) { + $k$055 = 0; + $wk$056 = $16; + while (1) { + if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59; + $k$055 = $k$055 + 1 | 0; + if (($k$055 | 0) >= ($wk_max$160 | 0)) { + $76 = $59; + break; + } else $wk$056 = $wk$056 + 4 | 0; + } + } else $76 = $59; + } else { + HEAP16[$pnt2$359 >> 1] = $56; + if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) { + $k$152 = 0; + $wk$153 = $16; + while (1) { + if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56; + $k$152 = $k$152 + 1 | 0; + if (($k$152 | 0) >= ($wk_max$160 | 0)) { + $76 = $56; + break; + } else $wk$153 = $wk$153 + 4 | 0; + } + } else $76 = $56; + } + $78 = ($76 << 16 >> 16) * 7 | 0; + $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0; + HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1; + $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265; + $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076; + HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0; + if ($94 << 16 >> 16 <= 0) { + HEAP16[$pnt2$359 >> 1] = $47; + $134 = $48 * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076; + $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0; + if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265; + HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076; + $wk_max$2 = $wk_max$160; + break; + } + $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($99 | 0) > ($102 | 0)) { + HEAP16[$pnt2$359 >> 1] = $102; + if (($wk_max$160 | 0) > 0) { + $k$248 = 0; + $wk$249 = $16; + while (1) { + if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102; + $k$248 = $k$248 + 1 | 0; + if (($k$248 | 0) >= ($wk_max$160 | 0)) { + $119 = $102; + break; + } else $wk$249 = $wk$249 + 4 | 0; + } + } else $119 = $102; + } else { + HEAP16[$pnt2$359 >> 1] = $99; + if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) { + $k$345 = 0; + $wk$346 = $16; + while (1) { + if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99; + $k$345 = $k$345 + 1 | 0; + if (($k$345 | 0) >= ($wk_max$160 | 0)) { + $119 = $99; + break; + } else $wk$346 = $wk$346 + 4 | 0; + } + } else $119 = $99; + } + $121 = ($119 << 16 >> 16) * 7 | 0; + $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0; + HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1; + $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265; + $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076; + $wk_max$2 = $wk_max$160; + } while (0); + $i$265 = $i$265 + 1 | 0; + $213 = $pnt$168 + 1 | 0; + $214 = $pnt_thresh$167 + 1 | 0; + $215 = $pnt2$359 + 2 | 0; + if (($i$265 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $213; + $pnt2$3$lcssa = $215; + $pnt_thresh$1$lcssa = $214; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$168 = $213; + $pnt2$359 = $215; + $pnt_thresh$167 = $214; + $wk_max$160 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$079; + $pnt2$3$lcssa = $pnt2$274; + $pnt_thresh$1$lcssa = $pnt_thresh$078; + $wk_max$1$lcssa = $wk_max$075; + } + $j$076 = $j$076 + 1 | 0; + if (($j$076 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$079 = $pnt$1$lcssa + 2 | 0; + $pnt2$274 = $pnt2$3$lcssa + 4 | 0; + $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0; + $wk_max$075 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $222 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$341 = 1; + $j$142 = 1; + $wk$443 = $16; + while (1) { + $224 = HEAP32[$wk$443 >> 2] | 0; + if (($224 | 0) == ($i$341 | 0)) { + $230 = $j$142; + $j$2 = $j$142 + 1 | 0; + } else { + $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0; + $j$2 = $j$142; + } + HEAP32[$wk$443 >> 2] = $230; + if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) { + $i$341 = $i$341 + 1 | 0; + $j$142 = $j$2; + $wk$443 = $wk$443 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $234 = $labelInfo + 8 | 0; + $235 = $j$1$lcssa + -1 | 0; + HEAP32[$234 >> 2] = $235; + if (!$235) $$0 = 0; else { + _memset($222 | 0, 0, $235 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$439 = 0; + do { + $242 = $i$439 << 2; + HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0; + $i$439 = $i$439 + 1 | 0; + } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$537 = 0; + do { + $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0; + $257 = $i$537 * 7 | 0; + $260 = $labelInfo + 12 + ($256 << 2) | 0; + HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0); + $267 = $256 << 1; + $268 = $labelInfo + 655376 + ($267 << 3) | 0; + HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0); + $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0); + $279 = $256 << 2; + $280 = $labelInfo + 131084 + ($279 << 2) | 0; + $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0; + if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284; + $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305; + $i$537 = $i$537 + 1 | 0; + } while (($i$537 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$234 >> 2] | 0) > 0) { + $i$636 = 0; + do { + $309 = $labelInfo + 12 + ($i$636 << 2) | 0; + $312 = $i$636 << 1; + $313 = $labelInfo + 655376 + ($312 << 3) | 0; + HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0); + $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0; + HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0); + $i$636 = $i$636 + 1 | 0; + } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0; + do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) { + $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($47 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $47; + $50 = ($47 << 16 >> 16) * 7 | 0; + $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1; + $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256; + $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0; + HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $71 = $70 << 16 >> 16; + $72 = $70 << 16 >> 16 > 0; + if ($66 << 16 >> 16 <= 0) { + if ($72) { + HEAP16[$pnt2$363 >> 1] = $70; + $172 = $71 * 7 | 0; + $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1; + $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256; + $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069; + $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0; + if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($192 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $192; + $195 = ($192 << 16 >> 16) * 7 | 0; + $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1; + $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256; + $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0; + HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069; + $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0; + if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$209 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $212 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $212; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16; + $217 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $212; + break; + } + } + if ($72) { + $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0; + if (($75 | 0) > ($78 | 0)) { + HEAP16[$pnt2$363 >> 1] = $78; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $95 = $78; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $95 = $78; + } else { + HEAP16[$pnt2$363 >> 1] = $75; + if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $95 = $75; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $95 = $75; + } + $97 = ($95 << 16 >> 16) * 7 | 0; + $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1; + $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256; + $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0; + HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($113 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $66; + $153 = $67 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069; + $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($118 | 0) > ($121 | 0)) { + HEAP16[$pnt2$363 >> 1] = $121; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $138 = $121; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $138 = $121; + } else { + HEAP16[$pnt2$363 >> 1] = $118; + if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $138 = $118; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $138 = $118; + } + $140 = ($138 << 16 >> 16) * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $232 = $pnt$164 + 4 | 0; + $233 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $232; + $pnt2$3$lcssa = $233; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $232; + $pnt2$363 = $233; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $241 = HEAP32[$wk$440 >> 2] | 0; + if (($241 | 0) == ($i$338 | 0)) { + $247 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $247; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $259 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$534 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $326 = $labelInfo + 12 + ($i$633 << 2) | 0; + $329 = $i$633 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0; + do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($47 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $47; + $50 = ($47 << 16 >> 16) * 7 | 0; + $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1; + $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256; + $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0; + HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $71 = $70 << 16 >> 16; + $72 = $70 << 16 >> 16 > 0; + if ($66 << 16 >> 16 <= 0) { + if ($72) { + HEAP16[$pnt2$363 >> 1] = $70; + $172 = $71 * 7 | 0; + $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1; + $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256; + $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069; + $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0; + if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($192 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $192; + $195 = ($192 << 16 >> 16) * 7 | 0; + $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1; + $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256; + $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0; + HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069; + $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0; + if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$209 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $212 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $212; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16; + $217 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $212; + break; + } + } + if ($72) { + $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0; + if (($75 | 0) > ($78 | 0)) { + HEAP16[$pnt2$363 >> 1] = $78; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $95 = $78; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $95 = $78; + } else { + HEAP16[$pnt2$363 >> 1] = $75; + if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $95 = $75; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $95 = $75; + } + $97 = ($95 << 16 >> 16) * 7 | 0; + $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1; + $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256; + $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0; + HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($113 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $66; + $153 = $67 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069; + $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($118 | 0) > ($121 | 0)) { + HEAP16[$pnt2$363 >> 1] = $121; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $138 = $121; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $138 = $121; + } else { + HEAP16[$pnt2$363 >> 1] = $118; + if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $138 = $118; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $138 = $118; + } + $140 = ($138 << 16 >> 16) * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $232 = $pnt$164 + 4 | 0; + $233 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $232; + $pnt2$3$lcssa = $233; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $232; + $pnt2$363 = $233; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $241 = HEAP32[$wk$440 >> 2] | 0; + if (($241 | 0) == ($i$338 | 0)) { + $247 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $247; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $259 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$534 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $326 = $labelInfo + 12 + ($i$633 << 2) | 0; + $329 = $i$633 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0; + do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) { + $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($47 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $47; + $50 = ($47 << 16 >> 16) * 7 | 0; + $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1; + $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256; + $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0; + HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $71 = $70 << 16 >> 16; + $72 = $70 << 16 >> 16 > 0; + if ($66 << 16 >> 16 <= 0) { + if ($72) { + HEAP16[$pnt2$363 >> 1] = $70; + $172 = $71 * 7 | 0; + $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1; + $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256; + $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069; + $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0; + if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($192 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $192; + $195 = ($192 << 16 >> 16) * 7 | 0; + $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1; + $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256; + $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0; + HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069; + $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0; + if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$209 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $212 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $212; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16; + $217 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $212; + break; + } + } + if ($72) { + $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0; + if (($75 | 0) > ($78 | 0)) { + HEAP16[$pnt2$363 >> 1] = $78; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $95 = $78; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $95 = $78; + } else { + HEAP16[$pnt2$363 >> 1] = $75; + if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $95 = $75; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $95 = $75; + } + $97 = ($95 << 16 >> 16) * 7 | 0; + $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1; + $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256; + $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0; + HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($113 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $66; + $153 = $67 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069; + $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($118 | 0) > ($121 | 0)) { + HEAP16[$pnt2$363 >> 1] = $121; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $138 = $121; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $138 = $121; + } else { + HEAP16[$pnt2$363 >> 1] = $118; + if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $138 = $118; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $138 = $118; + } + $140 = ($138 << 16 >> 16) * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $232 = $pnt$164 + 4 | 0; + $233 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $232; + $pnt2$3$lcssa = $233; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $232; + $pnt2$363 = $233; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $241 = HEAP32[$wk$440 >> 2] | 0; + if (($241 | 0) == ($i$338 | 0)) { + $247 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $247; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $259 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$534 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $326 = $labelInfo + 12 + ($i$633 << 2) | 0; + $329 = $i$633 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0; + do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($47 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $47; + $50 = ($47 << 16 >> 16) * 7 | 0; + $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1; + $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256; + $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0; + HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $71 = $70 << 16 >> 16; + $72 = $70 << 16 >> 16 > 0; + if ($66 << 16 >> 16 <= 0) { + if ($72) { + HEAP16[$pnt2$363 >> 1] = $70; + $172 = $71 * 7 | 0; + $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1; + $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256; + $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069; + $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0; + if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($192 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $192; + $195 = ($192 << 16 >> 16) * 7 | 0; + $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1; + $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256; + $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0; + HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069; + $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0; + if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$209 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $212 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $212; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16; + $217 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $212; + break; + } + } + if ($72) { + $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0; + if (($75 | 0) > ($78 | 0)) { + HEAP16[$pnt2$363 >> 1] = $78; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $95 = $78; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $95 = $78; + } else { + HEAP16[$pnt2$363 >> 1] = $75; + if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $95 = $75; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $95 = $75; + } + $97 = ($95 << 16 >> 16) * 7 | 0; + $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1; + $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256; + $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0; + HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($113 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $66; + $153 = $67 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069; + $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($118 | 0) > ($121 | 0)) { + HEAP16[$pnt2$363 >> 1] = $121; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $138 = $121; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $138 = $121; + } else { + HEAP16[$pnt2$363 >> 1] = $118; + if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $138 = $118; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $138 = $118; + } + $140 = ($138 << 16 >> 16) * 7 | 0; + $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1; + $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256; + $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $232 = $pnt$164 + 4 | 0; + $233 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $232; + $pnt2$3$lcssa = $233; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $232; + $pnt2$363 = $233; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $239 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $241 = HEAP32[$wk$440 >> 2] | 0; + if (($241 | 0) == ($i$338 | 0)) { + $247 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $247; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $251 = $labelInfo + 8 | 0; + $252 = $j$1$lcssa + -1 | 0; + HEAP32[$251 >> 2] = $252; + if (!$252) $$0 = 0; else { + _memset($239 | 0, 0, $252 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $259 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $274 = $i$534 * 7 | 0; + $277 = $labelInfo + 12 + ($273 << 2) | 0; + HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0); + $284 = $273 << 1; + $285 = $labelInfo + 655376 + ($284 << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0); + $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0; + HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0); + $296 = $273 << 2; + $297 = $labelInfo + 131084 + ($296 << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0; + $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0; + if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315; + $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0; + $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0; + if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$251 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $326 = $labelInfo + 12 + ($i$633 << 2) | 0; + $329 = $i$633 << 1; + $330 = $labelInfo + 655376 + ($329 << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0); + $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0; + HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$363 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$205 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $208 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$363 >> 1] = $74; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $91 = $74; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$363 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $91 = $71; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$363 >> 1] = $117; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $134 = $117; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$363 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $134 = $114; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $228 = $pnt$164 + 4 | 0; + $229 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $228; + $pnt2$363 = $229; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $237 = HEAP32[$wk$440 >> 2] | 0; + if (($237 | 0) == ($i$338 | 0)) { + $243 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $243; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $255 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$534 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $322 = $labelInfo + 12 + ($i$633 << 2) | 0; + $325 = $i$633 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} +function _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $21 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + $30 = HEAPU8[$pnt$164 >> 0] | 0; + do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) { + $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$363 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$205 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $208 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$363 >> 1] = $74; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $91 = $74; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$363 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $91 = $71; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$363 >> 1] = $117; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $134 = $117; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$363 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $134 = $114; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $228 = $pnt$164 + 4 | 0; + $229 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $228; + $pnt2$363 = $229; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $237 = HEAP32[$wk$440 >> 2] | 0; + if (($237 | 0) == ($i$338 | 0)) { + $243 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $243; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $255 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$534 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $322 = $labelInfo + 12 + ($i$633 << 2) | 0; + $325 = $i$633 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0; + do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) { + $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$362 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$205 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $208 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$362 >> 1] = $74; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $91 = $74; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$362 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $91 = $71; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$362 >> 1] = $117; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $134 = $117; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$362 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $134 = $114; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $228 = $pnt$163 + 2 | 0; + $229 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $228; + $pnt2$362 = $229; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $237 = HEAP32[$wk$439 >> 2] | 0; + if (($237 | 0) == ($i$337 | 0)) { + $243 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $243; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $255 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$533 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $322 = $labelInfo + 12 + ($i$632 << 2) | 0; + $325 = $i$632 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0; + do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$362 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$205 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $208 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$362 >> 1] = $74; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $91 = $74; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$362 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $91 = $71; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$362 >> 1] = $117; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $134 = $117; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$362 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $134 = $114; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $228 = $pnt$163 + 2 | 0; + $229 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $228; + $pnt2$362 = $229; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $237 = HEAP32[$wk$439 >> 2] | 0; + if (($237 | 0) == ($i$337 | 0)) { + $243 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $243; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $255 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$533 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $322 = $labelInfo + 12 + ($i$632 << 2) | 0; + $325 = $i$632 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0; + do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) { + $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$362 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$205 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $208 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$362 >> 1] = $74; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $91 = $74; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$362 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $91 = $71; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$362 >> 1] = $117; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $134 = $117; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$362 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $134 = $114; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $228 = $pnt$163 + 2 | 0; + $229 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $228; + $pnt2$362 = $229; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $237 = HEAP32[$wk$439 >> 2] | 0; + if (($237 | 0) == ($i$337 | 0)) { + $243 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $243; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $255 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$533 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $322 = $labelInfo + 12 + ($i$632 << 2) | 0; + $325 = $i$632 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0; + do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($43 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $43; + $46 = ($43 << 16 >> 16) * 7 | 0; + $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1; + $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255; + $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0; + HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $67 = $66 << 16 >> 16; + $68 = $66 << 16 >> 16 > 0; + if ($62 << 16 >> 16 <= 0) { + if ($68) { + HEAP16[$pnt2$362 >> 1] = $66; + $168 = $67 * 7 | 0; + $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1; + $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255; + $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068; + $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0; + if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($188 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $188; + $191 = ($188 << 16 >> 16) * 7 | 0; + $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1; + $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255; + $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0; + HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068; + $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0; + if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$205 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $208 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $208; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16; + $213 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $208; + break; + } + } + if ($68) { + $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0; + if (($71 | 0) > ($74 | 0)) { + HEAP16[$pnt2$362 >> 1] = $74; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $91 = $74; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $91 = $74; + } else { + HEAP16[$pnt2$362 >> 1] = $71; + if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $91 = $71; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $91 = $71; + } + $93 = ($91 << 16 >> 16) * 7 | 0; + $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1; + $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255; + $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0; + HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($109 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $62; + $149 = $63 * 7 | 0; + $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1; + $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255; + $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068; + $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0; + if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($114 | 0) > ($117 | 0)) { + HEAP16[$pnt2$362 >> 1] = $117; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $134 = $117; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $134 = $117; + } else { + HEAP16[$pnt2$362 >> 1] = $114; + if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $134 = $114; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $134 = $114; + } + $136 = ($134 << 16 >> 16) * 7 | 0; + $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1; + $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255; + $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $228 = $pnt$163 + 2 | 0; + $229 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $228; + $pnt2$3$lcssa = $229; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $228; + $pnt2$362 = $229; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $235 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $237 = HEAP32[$wk$439 >> 2] | 0; + if (($237 | 0) == ($i$337 | 0)) { + $243 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $243; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $247 = $labelInfo + 8 | 0; + $248 = $j$1$lcssa + -1 | 0; + HEAP32[$247 >> 2] = $248; + if (!$248) $$0 = 0; else { + _memset($235 | 0, 0, $248 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $255 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $270 = $i$533 * 7 | 0; + $273 = $labelInfo + 12 + ($269 << 2) | 0; + HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0); + $280 = $269 << 1; + $281 = $labelInfo + 655376 + ($280 << 3) | 0; + HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0); + $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0; + HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0); + $292 = $269 << 2; + $293 = $labelInfo + 131084 + ($292 << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0; + $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0; + if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311; + $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0; + $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0; + if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$247 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $322 = $labelInfo + 12 + ($i$632 << 2) | 0; + $325 = $i$632 << 1; + $326 = $labelInfo + 655376 + ($325 << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0); + $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0; + HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize * 3 | 0) + 12 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$363 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$203 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $206 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$363 >> 1] = $72; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $89 = $72; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$363 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $89 = $69; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$363 >> 1] = $115; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $132 = $115; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$363 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $132 = $112; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $226 = $pnt$164 + 6 | 0; + $227 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $226; + $pnt2$363 = $227; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $233 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $235 = HEAP32[$wk$440 >> 2] | 0; + if (($235 | 0) == ($i$338 | 0)) { + $241 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $241; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $245 = $labelInfo + 8 | 0; + $246 = $j$1$lcssa + -1 | 0; + HEAP32[$245 >> 2] = $246; + if (!$246) $$0 = 0; else { + _memset($233 | 0, 0, $246 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $253 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $268 = $i$534 * 7 | 0; + $271 = $labelInfo + 12 + ($267 << 2) | 0; + HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0); + $278 = $267 << 1; + $279 = $labelInfo + 655376 + ($278 << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0); + $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0; + HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0); + $290 = $267 << 2; + $291 = $labelInfo + 131084 + ($290 << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$245 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $320 = $labelInfo + 12 + ($i$633 << 2) | 0; + $323 = $i$633 << 1; + $324 = $labelInfo + 655376 + ($323 << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0); + $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize * 3 | 0) + 12 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$363 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$203 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $206 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$363 >> 1] = $72; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $89 = $72; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$363 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $89 = $69; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$363 >> 1] = $115; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $132 = $115; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$363 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $132 = $112; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $226 = $pnt$164 + 6 | 0; + $227 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $226; + $pnt2$363 = $227; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $233 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $235 = HEAP32[$wk$440 >> 2] | 0; + if (($235 | 0) == ($i$338 | 0)) { + $241 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $241; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $245 = $labelInfo + 8 | 0; + $246 = $j$1$lcssa + -1 | 0; + HEAP32[$245 >> 2] = $246; + if (!$246) $$0 = 0; else { + _memset($233 | 0, 0, $246 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $253 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $268 = $i$534 * 7 | 0; + $271 = $labelInfo + 12 + ($267 << 2) | 0; + HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0); + $278 = $267 << 1; + $279 = $labelInfo + 655376 + ($278 << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0); + $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0; + HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0); + $290 = $267 << 2; + $291 = $labelInfo + 131084 + ($290 << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$245 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $320 = $labelInfo + 12 + ($i$633 << 2) | 0; + $323 = $i$633 << 1; + $324 = $labelInfo + 655376 + ($323 << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0); + $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 3) + 8) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) { + $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($42 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $42; + $45 = ($42 << 16 >> 16) * 7 | 0; + $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1; + $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256; + $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $67 = $65 << 16 >> 16 > 0; + if ($61 << 16 >> 16 <= 0) { + if ($67) { + HEAP16[$pnt2$363 >> 1] = $65; + $167 = $66 * 7 | 0; + $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1; + $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256; + $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069; + $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0; + if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($187 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $187; + $190 = ($187 << 16 >> 16) * 7 | 0; + $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1; + $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256; + $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069; + $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0; + if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$204 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $207 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $207; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16; + $212 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $207; + break; + } + } + if ($67) { + $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + if (($70 | 0) > ($73 | 0)) { + HEAP16[$pnt2$363 >> 1] = $73; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $90 = $73; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $90 = $73; + } else { + HEAP16[$pnt2$363 >> 1] = $70; + if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $90 = $70; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $90 = $70; + } + $92 = ($90 << 16 >> 16) * 7 | 0; + $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1; + $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256; + $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($108 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $61; + $148 = $62 * 7 | 0; + $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1; + $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256; + $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069; + $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0; + if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($113 | 0) > ($116 | 0)) { + HEAP16[$pnt2$363 >> 1] = $116; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $133 = $116; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $133 = $116; + } else { + HEAP16[$pnt2$363 >> 1] = $113; + if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $133 = $113; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $133 = $113; + } + $135 = ($133 << 16 >> 16) * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $227 = $pnt$164 + 8 | 0; + $228 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $227; + $pnt2$3$lcssa = $228; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $227; + $pnt2$363 = $228; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $236 = HEAP32[$wk$440 >> 2] | 0; + if (($236 | 0) == ($i$338 | 0)) { + $242 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $242; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $254 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$534 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $321 = $labelInfo + 12 + ($i$633 << 2) | 0; + $324 = $i$633 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 3) + 8) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($42 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $42; + $45 = ($42 << 16 >> 16) * 7 | 0; + $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1; + $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256; + $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0; + HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $66 = $65 << 16 >> 16; + $67 = $65 << 16 >> 16 > 0; + if ($61 << 16 >> 16 <= 0) { + if ($67) { + HEAP16[$pnt2$363 >> 1] = $65; + $167 = $66 * 7 | 0; + $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1; + $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256; + $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069; + $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0; + if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($187 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $187; + $190 = ($187 << 16 >> 16) * 7 | 0; + $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1; + $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256; + $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0; + HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069; + $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0; + if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$204 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $207 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $207; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16; + $212 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $207; + break; + } + } + if ($67) { + $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0; + if (($70 | 0) > ($73 | 0)) { + HEAP16[$pnt2$363 >> 1] = $73; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $90 = $73; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $90 = $73; + } else { + HEAP16[$pnt2$363 >> 1] = $70; + if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $90 = $70; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $90 = $70; + } + $92 = ($90 << 16 >> 16) * 7 | 0; + $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1; + $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256; + $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0; + HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($108 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $61; + $148 = $62 * 7 | 0; + $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1; + $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256; + $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069; + $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0; + if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($113 | 0) > ($116 | 0)) { + HEAP16[$pnt2$363 >> 1] = $116; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $133 = $116; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $133 = $116; + } else { + HEAP16[$pnt2$363 >> 1] = $113; + if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $133 = $113; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $133 = $113; + } + $135 = ($133 << 16 >> 16) * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $227 = $pnt$164 + 8 | 0; + $228 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $227; + $pnt2$3$lcssa = $228; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $227; + $pnt2$363 = $228; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $234 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $236 = HEAP32[$wk$440 >> 2] | 0; + if (($236 | 0) == ($i$338 | 0)) { + $242 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $242; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $246 = $labelInfo + 8 | 0; + $247 = $j$1$lcssa + -1 | 0; + HEAP32[$246 >> 2] = $247; + if (!$247) $$0 = 0; else { + _memset($234 | 0, 0, $247 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $254 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $269 = $i$534 * 7 | 0; + $272 = $labelInfo + 12 + ($268 << 2) | 0; + HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0); + $279 = $268 << 1; + $280 = $labelInfo + 655376 + ($279 << 3) | 0; + HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0); + $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0; + HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0); + $291 = $268 << 2; + $292 = $labelInfo + 131084 + ($291 << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0; + $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0; + if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310; + $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0; + $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0; + if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$246 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $321 = $labelInfo + 12 + ($i$633 << 2) | 0; + $324 = $i$633 << 1; + $325 = $labelInfo + 655376 + ($324 << 3) | 0; + HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0); + $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0; + HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 3) + 8) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$363 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$203 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $206 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$363 >> 1] = $72; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $89 = $72; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$363 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $89 = $69; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$363 >> 1] = $115; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $132 = $115; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$363 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $132 = $112; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $226 = $pnt$164 + 8 | 0; + $227 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $226; + $pnt2$363 = $227; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $233 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $235 = HEAP32[$wk$440 >> 2] | 0; + if (($235 | 0) == ($i$338 | 0)) { + $241 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $241; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $245 = $labelInfo + 8 | 0; + $246 = $j$1$lcssa + -1 | 0; + HEAP32[$245 >> 2] = $246; + if (!$246) $$0 = 0; else { + _memset($233 | 0, 0, $246 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $253 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $268 = $i$534 * 7 | 0; + $271 = $labelInfo + 12 + ($267 << 2) | 0; + HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0); + $278 = $267 << 1; + $279 = $labelInfo + 655376 + ($278 << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0); + $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0; + HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0); + $290 = $267 << 2; + $291 = $labelInfo + 131084 + ($290 << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$245 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $320 = $labelInfo + 12 + ($i$633 << 2) | 0; + $323 = $i$633 << 1; + $324 = $labelInfo + 655376 + ($323 << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0); + $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $labelingThresh * 3 | 0; + $12 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($12 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $19 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 2) + 16 | 0; + L11 : do if (($3 | 0) > 1) { + $28 = ($12 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 3) + 8) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($28) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($41 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $41; + $44 = ($41 << 16 >> 16) * 7 | 0; + $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1; + $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256; + $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0; + HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $65 = $64 << 16 >> 16; + $66 = $64 << 16 >> 16 > 0; + if ($60 << 16 >> 16 <= 0) { + if ($66) { + HEAP16[$pnt2$363 >> 1] = $64; + $166 = $65 * 7 | 0; + $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1; + $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256; + $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0; + HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069; + $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0; + if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($186 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $186; + $189 = ($186 << 16 >> 16) * 7 | 0; + $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1; + $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256; + $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0; + HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069; + $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0; + if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$203 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $206 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $206; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16; + $211 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $206; + break; + } + } + if ($66) { + $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0; + if (($69 | 0) > ($72 | 0)) { + HEAP16[$pnt2$363 >> 1] = $72; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $19; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $89 = $72; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $89 = $72; + } else { + HEAP16[$pnt2$363 >> 1] = $69; + if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $19; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $89 = $69; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $89 = $69; + } + $91 = ($89 << 16 >> 16) * 7 | 0; + $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1; + $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256; + $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0; + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($107 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $60; + $147 = $61 * 7 | 0; + $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1; + $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256; + $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0; + HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069; + $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0; + if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($112 | 0) > ($115 | 0)) { + HEAP16[$pnt2$363 >> 1] = $115; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $19; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $132 = $115; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $132 = $115; + } else { + HEAP16[$pnt2$363 >> 1] = $112; + if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $19; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $132 = $112; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $132 = $112; + } + $134 = ($132 << 16 >> 16) * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $226 = $pnt$164 + 8 | 0; + $227 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($12 | 0)) { + $pnt$1$lcssa = $226; + $pnt2$3$lcssa = $227; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $226; + $pnt2$363 = $227; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $233 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $19; + while (1) { + $235 = HEAP32[$wk$440 >> 2] | 0; + if (($235 | 0) == ($i$338 | 0)) { + $241 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $241; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $245 = $labelInfo + 8 | 0; + $246 = $j$1$lcssa + -1 | 0; + HEAP32[$245 >> 2] = $246; + if (!$246) $$0 = 0; else { + _memset($233 | 0, 0, $246 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $253 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $268 = $i$534 * 7 | 0; + $271 = $labelInfo + 12 + ($267 << 2) | 0; + HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0); + $278 = $267 << 1; + $279 = $labelInfo + 655376 + ($278 << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0); + $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0; + HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0); + $290 = $267 << 2; + $291 = $labelInfo + 131084 + ($290 << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0; + $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0; + if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309; + $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0; + $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0; + if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$245 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $320 = $labelInfo + 12 + ($i$633 << 2) | 0; + $323 = $i$633 << 1; + $324 = $labelInfo + 655376 + ($323 << 3) | 0; + HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0); + $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0; + HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) { + $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($39 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $39; + $42 = ($39 << 16 >> 16) * 7 | 0; + $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1; + $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255; + $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $59 = $58 << 16 >> 16; + $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $64 = $62 << 16 >> 16 > 0; + if ($58 << 16 >> 16 <= 0) { + if ($64) { + HEAP16[$pnt2$362 >> 1] = $62; + $164 = $63 * 7 | 0; + $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1; + $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255; + $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068; + $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0; + if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($184 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $184; + $187 = ($184 << 16 >> 16) * 7 | 0; + $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1; + $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255; + $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068; + $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0; + if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$201 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $204 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $204; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16; + $209 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $204; + break; + } + } + if ($64) { + $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + if (($67 | 0) > ($70 | 0)) { + HEAP16[$pnt2$362 >> 1] = $70; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $87 = $70; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $87 = $70; + } else { + HEAP16[$pnt2$362 >> 1] = $67; + if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $87 = $67; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $87 = $67; + } + $89 = ($87 << 16 >> 16) * 7 | 0; + $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1; + $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255; + $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($105 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $58; + $145 = $59 * 7 | 0; + $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1; + $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255; + $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068; + $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0; + if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($110 | 0) > ($113 | 0)) { + HEAP16[$pnt2$362 >> 1] = $113; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $130 = $113; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $130 = $113; + } else { + HEAP16[$pnt2$362 >> 1] = $110; + if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $130 = $110; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $130 = $110; + } + $132 = ($130 << 16 >> 16) * 7 | 0; + $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1; + $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255; + $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $224 = $pnt$163 + 2 | 0; + $225 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $224; + $pnt2$3$lcssa = $225; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $224; + $pnt2$362 = $225; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $231 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $233 = HEAP32[$wk$439 >> 2] | 0; + if (($233 | 0) == ($i$337 | 0)) { + $239 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $239; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $243 = $labelInfo + 8 | 0; + $244 = $j$1$lcssa + -1 | 0; + HEAP32[$243 >> 2] = $244; + if (!$244) $$0 = 0; else { + _memset($231 | 0, 0, $244 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $251 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $266 = $i$533 * 7 | 0; + $269 = $labelInfo + 12 + ($265 << 2) | 0; + HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0); + $276 = $265 << 1; + $277 = $labelInfo + 655376 + ($276 << 3) | 0; + HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0); + $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0); + $288 = $265 << 2; + $289 = $labelInfo + 131084 + ($288 << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$243 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $318 = $labelInfo + 12 + ($i$632 << 2) | 0; + $321 = $i$632 << 1; + $322 = $labelInfo + 655376 + ($321 << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0); + $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0; + HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 1) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + $26 = HEAPU8[$pnt$163 >> 0] | 0; + do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($39 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $39; + $42 = ($39 << 16 >> 16) * 7 | 0; + $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1; + $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0; + HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255; + $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0; + HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $59 = $58 << 16 >> 16; + $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $63 = $62 << 16 >> 16; + $64 = $62 << 16 >> 16 > 0; + if ($58 << 16 >> 16 <= 0) { + if ($64) { + HEAP16[$pnt2$362 >> 1] = $62; + $164 = $63 * 7 | 0; + $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1; + $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0; + HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255; + $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0; + HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068; + $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0; + if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($184 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $184; + $187 = ($184 << 16 >> 16) * 7 | 0; + $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1; + $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0; + HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255; + $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0; + HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068; + $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0; + if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$201 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $204 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $204; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16; + $209 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $204; + break; + } + } + if ($64) { + $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0; + if (($67 | 0) > ($70 | 0)) { + HEAP16[$pnt2$362 >> 1] = $70; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $87 = $70; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $87 = $70; + } else { + HEAP16[$pnt2$362 >> 1] = $67; + if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $87 = $67; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $87 = $67; + } + $89 = ($87 << 16 >> 16) * 7 | 0; + $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1; + $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0; + HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255; + $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($105 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $58; + $145 = $59 * 7 | 0; + $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1; + $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0; + HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255; + $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068; + $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0; + if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0; + $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($110 | 0) > ($113 | 0)) { + HEAP16[$pnt2$362 >> 1] = $113; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $130 = $113; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $130 = $113; + } else { + HEAP16[$pnt2$362 >> 1] = $110; + if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $130 = $110; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $130 = $110; + } + $132 = ($130 << 16 >> 16) * 7 | 0; + $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1; + $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0; + HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255; + $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0; + HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $224 = $pnt$163 + 2 | 0; + $225 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $224; + $pnt2$3$lcssa = $225; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $224; + $pnt2$362 = $225; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $231 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $233 = HEAP32[$wk$439 >> 2] | 0; + if (($233 | 0) == ($i$337 | 0)) { + $239 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $239; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $243 = $labelInfo + 8 | 0; + $244 = $j$1$lcssa + -1 | 0; + HEAP32[$243 >> 2] = $244; + if (!$244) $$0 = 0; else { + _memset($231 | 0, 0, $244 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $251 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $266 = $i$533 * 7 | 0; + $269 = $labelInfo + 12 + ($265 << 2) | 0; + HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0); + $276 = $265 << 1; + $277 = $labelInfo + 655376 + ($276 << 3) | 0; + HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0); + $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0; + HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0); + $288 = $265 << 2; + $289 = $labelInfo + 131084 + ($288 << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307; + $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0; + $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0; + if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$243 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $318 = $labelInfo + 12 + ($i$632 << 2) | 0; + $321 = $i$632 << 1; + $322 = $labelInfo + 655376 + ($321 << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0); + $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0; + HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 2) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) { + $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($38 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $38; + $41 = ($38 << 16 >> 16) * 7 | 0; + $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1; + $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255; + $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $58 = $57 << 16 >> 16; + $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $63 = $61 << 16 >> 16 > 0; + if ($57 << 16 >> 16 <= 0) { + if ($63) { + HEAP16[$pnt2$362 >> 1] = $61; + $163 = $62 * 7 | 0; + $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1; + $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255; + $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068; + $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0; + if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($183 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $183; + $186 = ($183 << 16 >> 16) * 7 | 0; + $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1; + $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255; + $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068; + $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0; + if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$200 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $203 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $203; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16; + $208 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $203; + break; + } + } + if ($63) { + $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + if (($66 | 0) > ($69 | 0)) { + HEAP16[$pnt2$362 >> 1] = $69; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $86 = $69; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $86 = $69; + } else { + HEAP16[$pnt2$362 >> 1] = $66; + if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $86 = $66; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $86 = $66; + } + $88 = ($86 << 16 >> 16) * 7 | 0; + $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1; + $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255; + $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($104 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $57; + $144 = $58 * 7 | 0; + $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1; + $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255; + $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068; + $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0; + if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($109 | 0) > ($112 | 0)) { + HEAP16[$pnt2$362 >> 1] = $112; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $129 = $112; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $129 = $112; + } else { + HEAP16[$pnt2$362 >> 1] = $109; + if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $129 = $109; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $129 = $109; + } + $131 = ($129 << 16 >> 16) * 7 | 0; + $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1; + $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255; + $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $223 = $pnt$163 + 4 | 0; + $224 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $223; + $pnt2$3$lcssa = $224; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $223; + $pnt2$362 = $224; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 8 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $230 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $232 = HEAP32[$wk$439 >> 2] | 0; + if (($232 | 0) == ($i$337 | 0)) { + $238 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $238; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $242 = $labelInfo + 8 | 0; + $243 = $j$1$lcssa + -1 | 0; + HEAP32[$242 >> 2] = $243; + if (!$243) $$0 = 0; else { + _memset($230 | 0, 0, $243 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $250 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $265 = $i$533 * 7 | 0; + $268 = $labelInfo + 12 + ($264 << 2) | 0; + HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0); + $275 = $264 << 1; + $276 = $labelInfo + 655376 + ($275 << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0); + $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0); + $287 = $264 << 2; + $288 = $labelInfo + 131084 + ($287 << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$242 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $317 = $labelInfo + 12 + ($i$632 << 2) | 0; + $320 = $i$632 << 1; + $321 = $labelInfo + 655376 + ($320 << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0); + $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 2) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($38 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $38; + $41 = ($38 << 16 >> 16) * 7 | 0; + $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0; + HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1; + $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0; + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255; + $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0; + HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $58 = $57 << 16 >> 16; + $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $62 = $61 << 16 >> 16; + $63 = $61 << 16 >> 16 > 0; + if ($57 << 16 >> 16 <= 0) { + if ($63) { + HEAP16[$pnt2$362 >> 1] = $61; + $163 = $62 * 7 | 0; + $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0; + HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1; + $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0; + HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255; + $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0; + HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068; + $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0; + if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($183 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $183; + $186 = ($183 << 16 >> 16) * 7 | 0; + $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0; + HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1; + $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0; + HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255; + $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0; + HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068; + $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0; + if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$200 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $203 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $203; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16; + $208 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $203; + break; + } + } + if ($63) { + $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0; + if (($66 | 0) > ($69 | 0)) { + HEAP16[$pnt2$362 >> 1] = $69; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $86 = $69; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $86 = $69; + } else { + HEAP16[$pnt2$362 >> 1] = $66; + if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $86 = $66; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $86 = $66; + } + $88 = ($86 << 16 >> 16) * 7 | 0; + $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0; + HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1; + $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0; + HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255; + $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0; + HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($104 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $57; + $144 = $58 * 7 | 0; + $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0; + HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1; + $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0; + HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255; + $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068; + $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0; + if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0; + $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($109 | 0) > ($112 | 0)) { + HEAP16[$pnt2$362 >> 1] = $112; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $129 = $112; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $129 = $112; + } else { + HEAP16[$pnt2$362 >> 1] = $109; + if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $129 = $109; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $129 = $109; + } + $131 = ($129 << 16 >> 16) * 7 | 0; + $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0; + HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1; + $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255; + $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $223 = $pnt$163 + 4 | 0; + $224 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $223; + $pnt2$3$lcssa = $224; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $223; + $pnt2$362 = $224; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 8 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $230 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $232 = HEAP32[$wk$439 >> 2] | 0; + if (($232 | 0) == ($i$337 | 0)) { + $238 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $238; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $242 = $labelInfo + 8 | 0; + $243 = $j$1$lcssa + -1 | 0; + HEAP32[$242 >> 2] = $243; + if (!$243) $$0 = 0; else { + _memset($230 | 0, 0, $243 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $250 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $265 = $i$533 * 7 | 0; + $268 = $labelInfo + 12 + ($264 << 2) | 0; + HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0); + $275 = $264 << 1; + $276 = $labelInfo + 655376 + ($275 << 3) | 0; + HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0); + $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0; + HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0); + $287 = $264 << 2; + $288 = $labelInfo + 131084 + ($287 << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306; + $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0; + $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0; + if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$242 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $317 = $labelInfo + 12 + ($i$632 << 2) | 0; + $320 = $i$632 << 1; + $321 = $labelInfo + 655376 + ($320 << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0); + $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0; + HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 * 3 | 0) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($37 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $37; + $40 = ($37 << 16 >> 16) * 7 | 0; + $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1; + $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255; + $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $62 = $60 << 16 >> 16 > 0; + if ($56 << 16 >> 16 <= 0) { + if ($62) { + HEAP16[$pnt2$362 >> 1] = $60; + $162 = $61 * 7 | 0; + $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1; + $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255; + $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068; + $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0; + if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($182 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $182; + $185 = ($182 << 16 >> 16) * 7 | 0; + $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1; + $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255; + $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068; + $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0; + if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$199 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $202 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $202; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16; + $207 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $202; + break; + } + } + if ($62) { + $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + if (($65 | 0) > ($68 | 0)) { + HEAP16[$pnt2$362 >> 1] = $68; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $85 = $68; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $85 = $68; + } else { + HEAP16[$pnt2$362 >> 1] = $65; + if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $85 = $65; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $85 = $65; + } + $87 = ($85 << 16 >> 16) * 7 | 0; + $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1; + $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255; + $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($103 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $56; + $143 = $57 * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068; + $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0; + if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($108 | 0) > ($111 | 0)) { + HEAP16[$pnt2$362 >> 1] = $111; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $128 = $111; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $128 = $111; + } else { + HEAP16[$pnt2$362 >> 1] = $108; + if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $128 = $108; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $128 = $108; + } + $130 = ($128 << 16 >> 16) * 7 | 0; + $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1; + $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255; + $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $222 = $pnt$163 + 3 | 0; + $223 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $222; + $pnt2$3$lcssa = $223; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $222; + $pnt2$362 = $223; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 6 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $231 = HEAP32[$wk$439 >> 2] | 0; + if (($231 | 0) == ($i$337 | 0)) { + $237 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $237; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $249 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$533 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $316 = $labelInfo + 12 + ($i$632 << 2) | 0; + $319 = $i$632 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 * 3 | 0) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($37 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $37; + $40 = ($37 << 16 >> 16) * 7 | 0; + $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1; + $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255; + $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $62 = $60 << 16 >> 16 > 0; + if ($56 << 16 >> 16 <= 0) { + if ($62) { + HEAP16[$pnt2$362 >> 1] = $60; + $162 = $61 * 7 | 0; + $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1; + $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255; + $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068; + $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0; + if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($182 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $182; + $185 = ($182 << 16 >> 16) * 7 | 0; + $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1; + $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255; + $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068; + $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0; + if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$199 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $202 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $202; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16; + $207 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $202; + break; + } + } + if ($62) { + $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + if (($65 | 0) > ($68 | 0)) { + HEAP16[$pnt2$362 >> 1] = $68; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $85 = $68; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $85 = $68; + } else { + HEAP16[$pnt2$362 >> 1] = $65; + if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $85 = $65; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $85 = $65; + } + $87 = ($85 << 16 >> 16) * 7 | 0; + $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1; + $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255; + $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($103 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $56; + $143 = $57 * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068; + $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0; + if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($108 | 0) > ($111 | 0)) { + HEAP16[$pnt2$362 >> 1] = $111; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $128 = $111; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $128 = $111; + } else { + HEAP16[$pnt2$362 >> 1] = $108; + if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $128 = $108; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $128 = $108; + } + $130 = ($128 << 16 >> 16) * 7 | 0; + $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1; + $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255; + $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $222 = $pnt$163 + 3 | 0; + $223 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $222; + $pnt2$3$lcssa = $223; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $222; + $pnt2$362 = $223; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 6 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $231 = HEAP32[$wk$439 >> 2] | 0; + if (($231 | 0) == ($i$337 | 0)) { + $237 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $237; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $249 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$533 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $316 = $labelInfo + 12 + ($i$632 << 2) | 0; + $319 = $i$632 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 2) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($37 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $37; + $40 = ($37 << 16 >> 16) * 7 | 0; + $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1; + $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255; + $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $62 = $60 << 16 >> 16 > 0; + if ($56 << 16 >> 16 <= 0) { + if ($62) { + HEAP16[$pnt2$362 >> 1] = $60; + $162 = $61 * 7 | 0; + $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1; + $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255; + $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068; + $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0; + if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($182 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $182; + $185 = ($182 << 16 >> 16) * 7 | 0; + $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1; + $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255; + $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068; + $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0; + if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$199 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $202 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $202; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16; + $207 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $202; + break; + } + } + if ($62) { + $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + if (($65 | 0) > ($68 | 0)) { + HEAP16[$pnt2$362 >> 1] = $68; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $85 = $68; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $85 = $68; + } else { + HEAP16[$pnt2$362 >> 1] = $65; + if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $85 = $65; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $85 = $65; + } + $87 = ($85 << 16 >> 16) * 7 | 0; + $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1; + $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255; + $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($103 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $56; + $143 = $57 * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068; + $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0; + if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($108 | 0) > ($111 | 0)) { + HEAP16[$pnt2$362 >> 1] = $111; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $128 = $111; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $128 = $111; + } else { + HEAP16[$pnt2$362 >> 1] = $108; + if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $128 = $108; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $128 = $108; + } + $130 = ($128 << 16 >> 16) * 7 | 0; + $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1; + $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255; + $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $222 = $pnt$163 + 4 | 0; + $223 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $222; + $pnt2$3$lcssa = $223; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $222; + $pnt2$362 = $223; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 8 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $231 = HEAP32[$wk$439 >> 2] | 0; + if (($231 | 0) == ($i$337 | 0)) { + $237 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $237; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $249 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$533 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $316 = $labelInfo + 12 + ($i$632 << 2) | 0; + $319 = $i$632 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $labelingThresh * 3 | 0; + $10 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($10 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $17 = $labelInfo + 1179664 | 0; + $18 = $xsize + 1 | 0; + $19 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $24 = ($10 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($18 << 2) | 0; + $pnt2$271 = $0 + ($18 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($24) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0; + if ($37 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $37; + $40 = ($37 << 16 >> 16) * 7 | 0; + $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1; + $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255; + $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0; + HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $61 = $60 << 16 >> 16; + $62 = $60 << 16 >> 16 > 0; + if ($56 << 16 >> 16 <= 0) { + if ($62) { + HEAP16[$pnt2$362 >> 1] = $60; + $162 = $61 * 7 | 0; + $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1; + $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255; + $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0; + HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068; + $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0; + if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($182 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $182; + $185 = ($182 << 16 >> 16) * 7 | 0; + $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1; + $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255; + $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0; + HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068; + $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0; + if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$199 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $202 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $202; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16; + $207 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $202; + break; + } + } + if ($62) { + $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0; + if (($65 | 0) > ($68 | 0)) { + HEAP16[$pnt2$362 >> 1] = $68; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $17; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $85 = $68; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $85 = $68; + } else { + HEAP16[$pnt2$362 >> 1] = $65; + if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $17; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $85 = $65; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $85 = $65; + } + $87 = ($85 << 16 >> 16) * 7 | 0; + $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1; + $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255; + $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0; + HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($103 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $56; + $143 = $57 * 7 | 0; + $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1; + $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255; + $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0; + HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068; + $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0; + if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($108 | 0) > ($111 | 0)) { + HEAP16[$pnt2$362 >> 1] = $111; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $17; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $128 = $111; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $128 = $111; + } else { + HEAP16[$pnt2$362 >> 1] = $108; + if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $17; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $128 = $108; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $128 = $108; + } + $130 = ($128 << 16 >> 16) * 7 | 0; + $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1; + $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255; + $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $222 = $pnt$163 + 4 | 0; + $223 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($10 | 0)) { + $pnt$1$lcssa = $222; + $pnt2$3$lcssa = $223; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $222; + $pnt2$362 = $223; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 8 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $229 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $17; + while (1) { + $231 = HEAP32[$wk$439 >> 2] | 0; + if (($231 | 0) == ($i$337 | 0)) { + $237 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $237; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $241 = $labelInfo + 8 | 0; + $242 = $j$1$lcssa + -1 | 0; + HEAP32[$241 >> 2] = $242; + if (!$242) $$0 = 0; else { + _memset($229 | 0, 0, $242 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $249 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $264 = $i$533 * 7 | 0; + $267 = $labelInfo + 12 + ($263 << 2) | 0; + HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0); + $274 = $263 << 1; + $275 = $labelInfo + 655376 + ($274 << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0); + $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0; + HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0); + $286 = $263 << 2; + $287 = $labelInfo + 131084 + ($286 << 2) | 0; + $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0; + if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291; + $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0; + $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0; + if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298; + $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0; + $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0; + if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305; + $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0; + $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0; + if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$241 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $316 = $labelInfo + 12 + ($i$632 << 2) | 0; + $319 = $i$632 << 1; + $320 = $labelInfo + 655376 + ($319 << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0); + $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0; + HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $27 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($27) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($33 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $33; + $36 = ($33 << 16 >> 16) * 7 | 0; + $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0; + HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1; + $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256; + $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $53 = $52 << 16 >> 16; + $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $58 = $56 << 16 >> 16 > 0; + if ($52 << 16 >> 16 <= 0) { + if ($58) { + HEAP16[$pnt2$363 >> 1] = $56; + $158 = $57 * 7 | 0; + $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1; + $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256; + $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069; + $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0; + if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($178 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $178; + $181 = ($178 << 16 >> 16) * 7 | 0; + $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0; + HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1; + $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256; + $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069; + $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0; + if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$195 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $198 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $198; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16; + $203 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $198; + break; + } + } + if ($58) { + $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + if (($61 | 0) > ($64 | 0)) { + HEAP16[$pnt2$363 >> 1] = $64; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $81 = $64; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $81 = $64; + } else { + HEAP16[$pnt2$363 >> 1] = $61; + if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $81 = $61; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $81 = $61; + } + $83 = ($81 << 16 >> 16) * 7 | 0; + $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0; + HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1; + $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256; + $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($99 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $52; + $139 = $53 * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069; + $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0; + if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($104 | 0) > ($107 | 0)) { + HEAP16[$pnt2$363 >> 1] = $107; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $124 = $107; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $124 = $107; + } else { + HEAP16[$pnt2$363 >> 1] = $104; + if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $124 = $104; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $124 = $104; + } + $126 = ($124 << 16 >> 16) * 7 | 0; + $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0; + HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1; + $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256; + $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $218 = $pnt$164 + 4 | 0; + $219 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $218; + $pnt2$3$lcssa = $219; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $218; + $pnt2$363 = $219; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $225 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $227 = HEAP32[$wk$440 >> 2] | 0; + if (($227 | 0) == ($i$338 | 0)) { + $233 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $233; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $237 = $labelInfo + 8 | 0; + $238 = $j$1$lcssa + -1 | 0; + HEAP32[$237 >> 2] = $238; + if (!$238) $$0 = 0; else { + _memset($225 | 0, 0, $238 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $245 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $260 = $i$534 * 7 | 0; + $263 = $labelInfo + 12 + ($259 << 2) | 0; + HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0); + $270 = $259 << 1; + $271 = $labelInfo + 655376 + ($270 << 3) | 0; + HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0); + $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0); + $282 = $259 << 2; + $283 = $labelInfo + 131084 + ($282 << 2) | 0; + $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0; + if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287; + $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0; + $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0; + if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294; + $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$237 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $312 = $labelInfo + 12 + ($i$633 << 2) | 0; + $315 = $i$633 << 1; + $316 = $labelInfo + 655376 + ($315 << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0); + $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $27 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($27) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($33 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $33; + $36 = ($33 << 16 >> 16) * 7 | 0; + $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0; + HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1; + $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256; + $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0; + HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $53 = $52 << 16 >> 16; + $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $57 = $56 << 16 >> 16; + $58 = $56 << 16 >> 16 > 0; + if ($52 << 16 >> 16 <= 0) { + if ($58) { + HEAP16[$pnt2$363 >> 1] = $56; + $158 = $57 * 7 | 0; + $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1; + $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256; + $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0; + HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069; + $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0; + if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($178 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $178; + $181 = ($178 << 16 >> 16) * 7 | 0; + $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0; + HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1; + $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256; + $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0; + HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069; + $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0; + if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$195 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $198 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $198; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16; + $203 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $198; + break; + } + } + if ($58) { + $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0; + if (($61 | 0) > ($64 | 0)) { + HEAP16[$pnt2$363 >> 1] = $64; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $81 = $64; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $81 = $64; + } else { + HEAP16[$pnt2$363 >> 1] = $61; + if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $81 = $61; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $81 = $61; + } + $83 = ($81 << 16 >> 16) * 7 | 0; + $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0; + HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1; + $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256; + $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($99 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $52; + $139 = $53 * 7 | 0; + $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1; + $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256; + $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0; + HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069; + $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0; + if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($104 | 0) > ($107 | 0)) { + HEAP16[$pnt2$363 >> 1] = $107; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $124 = $107; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $124 = $107; + } else { + HEAP16[$pnt2$363 >> 1] = $104; + if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $124 = $104; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $124 = $104; + } + $126 = ($124 << 16 >> 16) * 7 | 0; + $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0; + HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1; + $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256; + $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $218 = $pnt$164 + 4 | 0; + $219 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $218; + $pnt2$3$lcssa = $219; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $218; + $pnt2$363 = $219; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $225 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $227 = HEAP32[$wk$440 >> 2] | 0; + if (($227 | 0) == ($i$338 | 0)) { + $233 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $233; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $237 = $labelInfo + 8 | 0; + $238 = $j$1$lcssa + -1 | 0; + HEAP32[$237 >> 2] = $238; + if (!$238) $$0 = 0; else { + _memset($225 | 0, 0, $238 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $245 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $260 = $i$534 * 7 | 0; + $263 = $labelInfo + 12 + ($259 << 2) | 0; + HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0); + $270 = $259 << 1; + $271 = $labelInfo + 655376 + ($270 << 3) | 0; + HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0); + $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0; + HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0); + $282 = $259 << 2; + $283 = $labelInfo + 131084 + ($282 << 2) | 0; + $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0; + if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287; + $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0; + $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0; + if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294; + $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0; + $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0; + if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301; + $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0; + $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0; + if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$237 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $312 = $labelInfo + 12 + ($i$633 << 2) | 0; + $315 = $i$633 << 1; + $316 = $labelInfo + 655376 + ($315 << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0); + $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0; + HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $27 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($27) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($32 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $32; + $35 = ($32 << 16 >> 16) * 7 | 0; + $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1; + $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256; + $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $57 = $55 << 16 >> 16 > 0; + if ($51 << 16 >> 16 <= 0) { + if ($57) { + HEAP16[$pnt2$363 >> 1] = $55; + $157 = $56 * 7 | 0; + $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1; + $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256; + $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069; + $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0; + if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($177 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $177; + $180 = ($177 << 16 >> 16) * 7 | 0; + $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1; + $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256; + $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069; + $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0; + if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$194 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $197 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $197; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16; + $202 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $197; + break; + } + } + if ($57) { + $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + if (($60 | 0) > ($63 | 0)) { + HEAP16[$pnt2$363 >> 1] = $63; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $80 = $63; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $80 = $63; + } else { + HEAP16[$pnt2$363 >> 1] = $60; + if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $80 = $60; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $80 = $60; + } + $82 = ($80 << 16 >> 16) * 7 | 0; + $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1; + $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256; + $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($98 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $51; + $138 = $52 * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069; + $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0; + if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($103 | 0) > ($106 | 0)) { + HEAP16[$pnt2$363 >> 1] = $106; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $123 = $106; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $123 = $106; + } else { + HEAP16[$pnt2$363 >> 1] = $103; + if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $123 = $103; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $123 = $103; + } + $125 = ($123 << 16 >> 16) * 7 | 0; + $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1; + $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256; + $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $217 = $pnt$164 + 4 | 0; + $218 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $217; + $pnt2$3$lcssa = $218; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $217; + $pnt2$363 = $218; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $224 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $226 = HEAP32[$wk$440 >> 2] | 0; + if (($226 | 0) == ($i$338 | 0)) { + $232 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $232; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $236 = $labelInfo + 8 | 0; + $237 = $j$1$lcssa + -1 | 0; + HEAP32[$236 >> 2] = $237; + if (!$237) $$0 = 0; else { + _memset($224 | 0, 0, $237 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $244 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $259 = $i$534 * 7 | 0; + $262 = $labelInfo + 12 + ($258 << 2) | 0; + HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0); + $269 = $258 << 1; + $270 = $labelInfo + 655376 + ($269 << 3) | 0; + HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0); + $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0; + HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0); + $281 = $258 << 2; + $282 = $labelInfo + 131084 + ($281 << 2) | 0; + $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0; + if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286; + $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$236 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $311 = $labelInfo + 12 + ($i$633 << 2) | 0; + $314 = $i$633 << 1; + $315 = $labelInfo + 655376 + ($314 << 3) | 0; + HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0); + $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $20 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = ($xsize << 1) + 8 | 0; + L11 : do if (($3 | 0) > 1) { + $27 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 2) + 4) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($27) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0; + if ($32 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $32; + $35 = ($32 << 16 >> 16) * 7 | 0; + $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1; + $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256; + $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $56 = $55 << 16 >> 16; + $57 = $55 << 16 >> 16 > 0; + if ($51 << 16 >> 16 <= 0) { + if ($57) { + HEAP16[$pnt2$363 >> 1] = $55; + $157 = $56 * 7 | 0; + $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1; + $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256; + $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0; + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069; + $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0; + if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($177 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $177; + $180 = ($177 << 16 >> 16) * 7 | 0; + $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1; + $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256; + $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0; + HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069; + $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0; + if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$194 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $197 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $197; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16; + $202 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $197; + break; + } + } + if ($57) { + $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0; + if (($60 | 0) > ($63 | 0)) { + HEAP16[$pnt2$363 >> 1] = $63; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $80 = $63; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $80 = $63; + } else { + HEAP16[$pnt2$363 >> 1] = $60; + if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $80 = $60; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $80 = $60; + } + $82 = ($80 << 16 >> 16) * 7 | 0; + $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1; + $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256; + $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0; + HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($98 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $51; + $138 = $52 * 7 | 0; + $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1; + $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256; + $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0; + HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069; + $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0; + if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($103 | 0) > ($106 | 0)) { + HEAP16[$pnt2$363 >> 1] = $106; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $123 = $106; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $123 = $106; + } else { + HEAP16[$pnt2$363 >> 1] = $103; + if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $123 = $103; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $123 = $103; + } + $125 = ($123 << 16 >> 16) * 7 | 0; + $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1; + $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256; + $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $217 = $pnt$164 + 4 | 0; + $218 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $217; + $pnt2$3$lcssa = $218; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $217; + $pnt2$363 = $218; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $224 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $226 = HEAP32[$wk$440 >> 2] | 0; + if (($226 | 0) == ($i$338 | 0)) { + $232 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $232; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $236 = $labelInfo + 8 | 0; + $237 = $j$1$lcssa + -1 | 0; + HEAP32[$236 >> 2] = $237; + if (!$237) $$0 = 0; else { + _memset($224 | 0, 0, $237 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $244 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $259 = $i$534 * 7 | 0; + $262 = $labelInfo + 12 + ($258 << 2) | 0; + HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0); + $269 = $258 << 1; + $270 = $labelInfo + 655376 + ($269 << 3) | 0; + HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0); + $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0; + HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0); + $281 = $258 << 2; + $282 = $labelInfo + 131084 + ($281 << 2) | 0; + $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0; + if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286; + $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0; + $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0; + if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293; + $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0; + $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0; + if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300; + $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0; + $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0; + if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$236 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $311 = $labelInfo + 12 + ($i$633 << 2) | 0; + $314 = $i$633 << 1; + $315 = $labelInfo + 655376 + ($314 << 3) | 0; + HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0); + $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0; + HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = $xsize + 4 | 0; + L11 : do if (($3 | 0) > 1) { + $26 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 1) + 2) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($26) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$363 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$193 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $196 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$363 >> 1] = $62; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $79 = $62; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$363 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $79 = $59; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$363 >> 1] = $105; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $122 = $105; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$363 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $122 = $102; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } else { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $216 = $pnt$164 + 2 | 0; + $217 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $216; + $pnt2$363 = $217; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $223 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $225 = HEAP32[$wk$440 >> 2] | 0; + if (($225 | 0) == ($i$338 | 0)) { + $231 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $231; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $235 = $labelInfo + 8 | 0; + $236 = $j$1$lcssa + -1 | 0; + HEAP32[$235 >> 2] = $236; + if (!$236) $$0 = 0; else { + _memset($223 | 0, 0, $236 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $243 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $258 = $i$534 * 7 | 0; + $261 = $labelInfo + 12 + ($257 << 2) | 0; + HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0); + $268 = $257 << 1; + $269 = $labelInfo + 655376 + ($268 << 3) | 0; + HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0); + $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0; + HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0); + $280 = $257 << 2; + $281 = $labelInfo + 131084 + ($280 << 2) | 0; + $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0; + if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285; + $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$235 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $310 = $labelInfo + 12 + ($i$633 << 2) | 0; + $313 = $i$633 << 1; + $314 = $labelInfo + 655376 + ($313 << 3) | 0; + HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0); + $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = ($xsize | 0) / 2 | 0; + $1 = ($ysize | 0) / 2 | 0; + $2 = HEAP32[$labelInfo >> 2] | 0; + $3 = $1 + -1 | 0; + if (($xsize | 0) > 1) { + $i$082 = 0; + $pnt1$084 = $2; + $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$083 >> 1] = 0; + HEAP16[$pnt1$084 >> 1] = 0; + $i$082 = $i$082 + 1 | 0; + if (($i$082 | 0) >= ($0 | 0)) break; else { + $pnt1$084 = $pnt1$084 + 2 | 0; + $pnt2$083 = $pnt2$083 + 2 | 0; + } + } + } + $11 = $0 + -1 | 0; + if (($ysize | 0) > 1) { + $i$176 = 0; + $pnt1$178 = $2; + $pnt2$177 = $2 + ($11 << 1) | 0; + while (1) { + HEAP16[$pnt2$177 >> 1] = 0; + HEAP16[$pnt1$178 >> 1] = 0; + $i$176 = $i$176 + 1 | 0; + if (($i$176 | 0) >= ($1 | 0)) break; else { + $pnt1$178 = $pnt1$178 + ($0 << 1) | 0; + $pnt2$177 = $pnt2$177 + ($0 << 1) | 0; + } + } + } + $18 = $labelInfo + 1179664 | 0; + $19 = 0 - $0 | 0; + $$sum1 = 1 - $0 | 0; + $$sum2 = ~$0; + $$sum = $xsize + 4 | 0; + L11 : do if (($3 | 0) > 1) { + $26 = ($11 | 0) > 1; + $j$069 = 1; + $pnt$073 = $image + (($xsize << 1) + 2) | 0; + $pnt2$272 = $2 + ($0 + 1 << 1) | 0; + $wk_max$071 = 0; + L13 : while (1) { + if ($26) { + $i$256 = 1; + $pnt$164 = $pnt$073; + $pnt2$363 = $pnt2$272; + $wk_max$158 = $wk_max$071; + while (1) { + do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$363 >> 1] = 0; + $wk_max$2 = $wk_max$158; + } else { + $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0; + if ($31 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $31; + $34 = ($31 << 16 >> 16) * 7 | 0; + $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1; + $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256; + $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0; + $55 = $54 << 16 >> 16; + $56 = $54 << 16 >> 16 > 0; + if ($50 << 16 >> 16 <= 0) { + if ($56) { + HEAP16[$pnt2$363 >> 1] = $54; + $156 = $55 * 7 | 0; + $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1; + $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256; + $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0; + HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069; + $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0; + if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($176 << 16 >> 16 > 0) { + HEAP16[$pnt2$363 >> 1] = $176; + $179 = ($176 << 16 >> 16) * 7 | 0; + $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1; + $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256; + $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0; + HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069; + $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0; + if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) { + $wk_max$2 = $wk_max$158; + break; + } + HEAP32[$193 >> 2] = $i$256; + $wk_max$2 = $wk_max$158; + break; + } else { + $196 = $wk_max$158 + 1 | 0; + if (($wk_max$158 | 0) > 32767) break L13; + HEAP16[$pnt2$363 >> 1] = $196; + HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16; + $201 = $wk_max$158 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069; + HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069; + $wk_max$2 = $196; + break; + } + } + if ($56) { + $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0; + if (($59 | 0) > ($62 | 0)) { + HEAP16[$pnt2$363 >> 1] = $62; + if (($wk_max$158 | 0) > 0) { + $k$052 = 0; + $wk$053 = $18; + while (1) { + if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62; + $k$052 = $k$052 + 1 | 0; + if (($k$052 | 0) >= ($wk_max$158 | 0)) { + $79 = $62; + break; + } else $wk$053 = $wk$053 + 4 | 0; + } + } else $79 = $62; + } else { + HEAP16[$pnt2$363 >> 1] = $59; + if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) { + $k$149 = 0; + $wk$150 = $18; + while (1) { + if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59; + $k$149 = $k$149 + 1 | 0; + if (($k$149 | 0) >= ($wk_max$158 | 0)) { + $79 = $59; + break; + } else $wk$150 = $wk$150 + 4 | 0; + } + } else $79 = $59; + } + $81 = ($79 << 16 >> 16) * 7 | 0; + $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1; + $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256; + $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0; + HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069; + HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0; + if ($97 << 16 >> 16 <= 0) { + HEAP16[$pnt2$363 >> 1] = $50; + $137 = $51 * 7 | 0; + $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1; + $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256; + $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0; + HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069; + $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0; + if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256; + HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069; + $wk_max$2 = $wk_max$158; + break; + } + $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($102 | 0) > ($105 | 0)) { + HEAP16[$pnt2$363 >> 1] = $105; + if (($wk_max$158 | 0) > 0) { + $k$245 = 0; + $wk$246 = $18; + while (1) { + if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105; + $k$245 = $k$245 + 1 | 0; + if (($k$245 | 0) >= ($wk_max$158 | 0)) { + $122 = $105; + break; + } else $wk$246 = $wk$246 + 4 | 0; + } + } else $122 = $105; + } else { + HEAP16[$pnt2$363 >> 1] = $102; + if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) { + $k$342 = 0; + $wk$343 = $18; + while (1) { + if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102; + $k$342 = $k$342 + 1 | 0; + if (($k$342 | 0) >= ($wk_max$158 | 0)) { + $122 = $102; + break; + } else $wk$343 = $wk$343 + 4 | 0; + } + } else $122 = $102; + } + $124 = ($122 << 16 >> 16) * 7 | 0; + $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1; + $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256; + $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0; + HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069; + $wk_max$2 = $wk_max$158; + } while (0); + $i$256 = $i$256 + 1 | 0; + $216 = $pnt$164 + 2 | 0; + $217 = $pnt2$363 + 2 | 0; + if (($i$256 | 0) >= ($11 | 0)) { + $pnt$1$lcssa = $216; + $pnt2$3$lcssa = $217; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$164 = $216; + $pnt2$363 = $217; + $wk_max$158 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$073; + $pnt2$3$lcssa = $pnt2$272; + $wk_max$1$lcssa = $wk_max$071; + } + $j$069 = $j$069 + 1 | 0; + if (($j$069 | 0) >= ($3 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$073 = $pnt$1$lcssa + $$sum | 0; + $pnt2$272 = $pnt2$3$lcssa + 4 | 0; + $wk_max$071 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $223 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$338 = 1; + $j$139 = 1; + $wk$440 = $18; + while (1) { + $225 = HEAP32[$wk$440 >> 2] | 0; + if (($225 | 0) == ($i$338 | 0)) { + $231 = $j$139; + $j$2 = $j$139 + 1 | 0; + } else { + $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0; + $j$2 = $j$139; + } + HEAP32[$wk$440 >> 2] = $231; + if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) { + $i$338 = $i$338 + 1 | 0; + $j$139 = $j$2; + $wk$440 = $wk$440 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $235 = $labelInfo + 8 | 0; + $236 = $j$1$lcssa + -1 | 0; + HEAP32[$235 >> 2] = $236; + if (!$236) $$0 = 0; else { + _memset($223 | 0, 0, $236 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$436 = 0; + do { + $243 = $i$436 << 2; + HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0; + HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1; + HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$534 = 0; + do { + $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0; + $258 = $i$534 * 7 | 0; + $261 = $labelInfo + 12 + ($257 << 2) | 0; + HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0); + $268 = $257 << 1; + $269 = $labelInfo + 655376 + ($268 << 3) | 0; + HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0); + $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0; + HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0); + $280 = $257 << 2; + $281 = $labelInfo + 131084 + ($280 << 2) | 0; + $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0; + if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285; + $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0; + $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0; + if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292; + $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0; + $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0; + if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299; + $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0; + $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0; + if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306; + $i$534 = $i$534 + 1 | 0; + } while (($i$534 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$235 >> 2] | 0) > 0) { + $i$633 = 0; + do { + $310 = $labelInfo + 12 + ($i$633 << 2) | 0; + $313 = $i$633 << 1; + $314 = $labelInfo + 655376 + ($313 << 3) | 0; + HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0); + $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0; + HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0); + $i$633 = $i$633 + 1 | 0; + } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($17 << 1) | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($23) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($29 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $29; + $32 = ($29 << 16 >> 16) * 7 | 0; + $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0; + HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1; + $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0; + HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255; + $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $49 = $48 << 16 >> 16; + $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $53 = $52 << 16 >> 16; + $54 = $52 << 16 >> 16 > 0; + if ($48 << 16 >> 16 <= 0) { + if ($54) { + HEAP16[$pnt2$362 >> 1] = $52; + $154 = $53 * 7 | 0; + $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1; + $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255; + $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068; + $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0; + if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($174 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $174; + $177 = ($174 << 16 >> 16) * 7 | 0; + $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1; + $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0; + HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255; + $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068; + $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0; + if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$191 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $194 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $194; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16; + $199 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $194; + break; + } + } + if ($54) { + $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0; + $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + if (($57 | 0) > ($60 | 0)) { + HEAP16[$pnt2$362 >> 1] = $60; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $77 = $60; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $77 = $60; + } else { + HEAP16[$pnt2$362 >> 1] = $57; + if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $77 = $57; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $77 = $57; + } + $79 = ($77 << 16 >> 16) * 7 | 0; + $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0; + HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1; + $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0; + HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255; + $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($95 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $48; + $135 = $49 * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068; + $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0; + if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0; + $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($100 | 0) > ($103 | 0)) { + HEAP16[$pnt2$362 >> 1] = $103; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $120 = $103; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $120 = $103; + } else { + HEAP16[$pnt2$362 >> 1] = $100; + if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $120 = $100; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $120 = $100; + } + $122 = ($120 << 16 >> 16) * 7 | 0; + $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0; + HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1; + $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0; + HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255; + $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $214 = $pnt$163 + 2 | 0; + $215 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $214; + $pnt2$3$lcssa = $215; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $214; + $pnt2$362 = $215; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $221 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $223 = HEAP32[$wk$439 >> 2] | 0; + if (($223 | 0) == ($i$337 | 0)) { + $229 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $229; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $233 = $labelInfo + 8 | 0; + $234 = $j$1$lcssa + -1 | 0; + HEAP32[$233 >> 2] = $234; + if (!$234) $$0 = 0; else { + _memset($221 | 0, 0, $234 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $241 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $256 = $i$533 * 7 | 0; + $259 = $labelInfo + 12 + ($255 << 2) | 0; + HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0); + $266 = $255 << 1; + $267 = $labelInfo + 655376 + ($266 << 3) | 0; + HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0); + $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0); + $278 = $255 << 2; + $279 = $labelInfo + 131084 + ($278 << 2) | 0; + $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0; + if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283; + $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0; + $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0; + if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290; + $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$233 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $308 = $labelInfo + 12 + ($i$632 << 2) | 0; + $311 = $i$632 << 1; + $312 = $labelInfo + 655376 + ($311 << 3) | 0; + HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0); + $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0; + HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($17 << 1) | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($23) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($29 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $29; + $32 = ($29 << 16 >> 16) * 7 | 0; + $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0; + HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1; + $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0; + HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255; + $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0; + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $49 = $48 << 16 >> 16; + $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $53 = $52 << 16 >> 16; + $54 = $52 << 16 >> 16 > 0; + if ($48 << 16 >> 16 <= 0) { + if ($54) { + HEAP16[$pnt2$362 >> 1] = $52; + $154 = $53 * 7 | 0; + $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0; + HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1; + $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255; + $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0; + HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068; + $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0; + if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($174 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $174; + $177 = ($174 << 16 >> 16) * 7 | 0; + $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0; + HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1; + $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0; + HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255; + $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0; + HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068; + $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0; + if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$191 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $194 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $194; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16; + $199 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $194; + break; + } + } + if ($54) { + $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0; + $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0; + if (($57 | 0) > ($60 | 0)) { + HEAP16[$pnt2$362 >> 1] = $60; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $77 = $60; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $77 = $60; + } else { + HEAP16[$pnt2$362 >> 1] = $57; + if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $77 = $57; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $77 = $57; + } + $79 = ($77 << 16 >> 16) * 7 | 0; + $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0; + HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1; + $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0; + HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255; + $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0; + HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($95 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $48; + $135 = $49 * 7 | 0; + $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0; + HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1; + $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0; + HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255; + $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0; + HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068; + $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0; + if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0; + $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($100 | 0) > ($103 | 0)) { + HEAP16[$pnt2$362 >> 1] = $103; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $120 = $103; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $120 = $103; + } else { + HEAP16[$pnt2$362 >> 1] = $100; + if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $120 = $100; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $120 = $100; + } + $122 = ($120 << 16 >> 16) * 7 | 0; + $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0; + HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1; + $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0; + HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255; + $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0; + HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $214 = $pnt$163 + 2 | 0; + $215 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $214; + $pnt2$3$lcssa = $215; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $214; + $pnt2$362 = $215; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $221 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $223 = HEAP32[$wk$439 >> 2] | 0; + if (($223 | 0) == ($i$337 | 0)) { + $229 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $229; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $233 = $labelInfo + 8 | 0; + $234 = $j$1$lcssa + -1 | 0; + HEAP32[$233 >> 2] = $234; + if (!$234) $$0 = 0; else { + _memset($221 | 0, 0, $234 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $241 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $256 = $i$533 * 7 | 0; + $259 = $labelInfo + 12 + ($255 << 2) | 0; + HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0); + $266 = $255 << 1; + $267 = $labelInfo + 655376 + ($266 << 3) | 0; + HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0); + $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0; + HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0); + $278 = $255 << 2; + $279 = $labelInfo + 131084 + ($278 << 2) | 0; + $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0; + if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283; + $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0; + $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0; + if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290; + $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0; + $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0; + if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297; + $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0; + $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0; + if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$233 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $308 = $labelInfo + 12 + ($i$632 << 2) | 0; + $311 = $i$632 << 1; + $312 = $labelInfo + 655376 + ($311 << 3) | 0; + HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0); + $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0; + HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($17 << 1) | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($23) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($28 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $28; + $31 = ($28 << 16 >> 16) * 7 | 0; + $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0; + HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1; + $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255; + $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $48 = $47 << 16 >> 16; + $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $53 = $51 << 16 >> 16 > 0; + if ($47 << 16 >> 16 <= 0) { + if ($53) { + HEAP16[$pnt2$362 >> 1] = $51; + $153 = $52 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068; + $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($173 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $173; + $176 = ($173 << 16 >> 16) * 7 | 0; + $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1; + $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255; + $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068; + $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0; + if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$190 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $193 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $193; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16; + $198 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $193; + break; + } + } + if ($53) { + $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + if (($56 | 0) > ($59 | 0)) { + HEAP16[$pnt2$362 >> 1] = $59; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $76 = $59; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $76 = $59; + } else { + HEAP16[$pnt2$362 >> 1] = $56; + if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $76 = $56; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $76 = $56; + } + $78 = ($76 << 16 >> 16) * 7 | 0; + $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0; + HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1; + $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255; + $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($94 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $47; + $134 = $48 * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068; + $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0; + if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($99 | 0) > ($102 | 0)) { + HEAP16[$pnt2$362 >> 1] = $102; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $119 = $102; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $119 = $102; + } else { + HEAP16[$pnt2$362 >> 1] = $99; + if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $119 = $99; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $119 = $99; + } + $121 = ($119 << 16 >> 16) * 7 | 0; + $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0; + HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1; + $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255; + $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $213 = $pnt$163 + 2 | 0; + $214 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $213; + $pnt2$3$lcssa = $214; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $213; + $pnt2$362 = $214; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $220 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $222 = HEAP32[$wk$439 >> 2] | 0; + if (($222 | 0) == ($i$337 | 0)) { + $228 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $228; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $232 = $labelInfo + 8 | 0; + $233 = $j$1$lcssa + -1 | 0; + HEAP32[$232 >> 2] = $233; + if (!$233) $$0 = 0; else { + _memset($220 | 0, 0, $233 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $240 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $255 = $i$533 * 7 | 0; + $258 = $labelInfo + 12 + ($254 << 2) | 0; + HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0); + $265 = $254 << 1; + $266 = $labelInfo + 655376 + ($265 << 3) | 0; + HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0); + $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0; + HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0); + $277 = $254 << 2; + $278 = $labelInfo + 131084 + ($277 << 2) | 0; + $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0; + if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282; + $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0; + $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0; + if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289; + $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$232 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $307 = $labelInfo + 12 + ($i$632 << 2) | 0; + $310 = $i$632 << 1; + $311 = $labelInfo + 655376 + ($310 << 3) | 0; + HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0); + $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0; + HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $23 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + ($17 << 1) | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($23) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($28 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $28; + $31 = ($28 << 16 >> 16) * 7 | 0; + $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0; + HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1; + $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0; + HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255; + $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0; + HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $48 = $47 << 16 >> 16; + $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $52 = $51 << 16 >> 16; + $53 = $51 << 16 >> 16 > 0; + if ($47 << 16 >> 16 <= 0) { + if ($53) { + HEAP16[$pnt2$362 >> 1] = $51; + $153 = $52 * 7 | 0; + $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0; + HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1; + $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0; + HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255; + $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0; + HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068; + $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0; + if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($173 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $173; + $176 = ($173 << 16 >> 16) * 7 | 0; + $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0; + HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1; + $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0; + HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255; + $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0; + HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068; + $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0; + if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$190 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $193 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $193; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16; + $198 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $193; + break; + } + } + if ($53) { + $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0; + if (($56 | 0) > ($59 | 0)) { + HEAP16[$pnt2$362 >> 1] = $59; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $76 = $59; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $76 = $59; + } else { + HEAP16[$pnt2$362 >> 1] = $56; + if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $76 = $56; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $76 = $56; + } + $78 = ($76 << 16 >> 16) * 7 | 0; + $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0; + HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1; + $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0; + HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255; + $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0; + HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($94 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $47; + $134 = $48 * 7 | 0; + $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0; + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1; + $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0; + HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255; + $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0; + HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068; + $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0; + if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0; + $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($99 | 0) > ($102 | 0)) { + HEAP16[$pnt2$362 >> 1] = $102; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $119 = $102; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $119 = $102; + } else { + HEAP16[$pnt2$362 >> 1] = $99; + if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $119 = $99; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $119 = $99; + } + $121 = ($119 << 16 >> 16) * 7 | 0; + $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0; + HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1; + $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0; + HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255; + $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0; + HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $213 = $pnt$163 + 2 | 0; + $214 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $213; + $pnt2$3$lcssa = $214; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $213; + $pnt2$362 = $214; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 4 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $220 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $222 = HEAP32[$wk$439 >> 2] | 0; + if (($222 | 0) == ($i$337 | 0)) { + $228 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $228; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $232 = $labelInfo + 8 | 0; + $233 = $j$1$lcssa + -1 | 0; + HEAP32[$232 >> 2] = $233; + if (!$233) $$0 = 0; else { + _memset($220 | 0, 0, $233 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $240 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $255 = $i$533 * 7 | 0; + $258 = $labelInfo + 12 + ($254 << 2) | 0; + HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0); + $265 = $254 << 1; + $266 = $labelInfo + 655376 + ($265 << 3) | 0; + HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0); + $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0; + HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0); + $277 = $254 << 2; + $278 = $labelInfo + 131084 + ($277 << 2) | 0; + $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0; + if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282; + $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0; + $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0; + if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289; + $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0; + $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0; + if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296; + $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0; + $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0; + if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$232 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $307 = $labelInfo + 12 + ($i$632 << 2) | 0; + $310 = $i$632 << 1; + $311 = $labelInfo + 655376 + ($310 << 3) | 0; + HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0); + $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0; + HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $22 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + $17 | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($22) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($27 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $27; + $30 = ($27 << 16 >> 16) * 7 | 0; + $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0; + HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1; + $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255; + $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $47 = $46 << 16 >> 16; + $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $52 = $50 << 16 >> 16 > 0; + if ($46 << 16 >> 16 <= 0) { + if ($52) { + HEAP16[$pnt2$362 >> 1] = $50; + $152 = $51 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068; + $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($172 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $172; + $175 = ($172 << 16 >> 16) * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$189 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $192 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $192; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16; + $197 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $192; + break; + } + } + if ($52) { + $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0; + $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + if (($55 | 0) > ($58 | 0)) { + HEAP16[$pnt2$362 >> 1] = $58; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $75 = $58; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $75 = $58; + } else { + HEAP16[$pnt2$362 >> 1] = $55; + if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $75 = $55; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $75 = $55; + } + $77 = ($75 << 16 >> 16) * 7 | 0; + $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0; + HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1; + $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255; + $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($93 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $46; + $133 = $47 * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068; + $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0; + if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0; + $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($98 | 0) > ($101 | 0)) { + HEAP16[$pnt2$362 >> 1] = $101; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $118 = $101; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $118 = $101; + } else { + HEAP16[$pnt2$362 >> 1] = $98; + if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $118 = $98; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $118 = $98; + } + $120 = ($118 << 16 >> 16) * 7 | 0; + $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0; + HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1; + $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255; + $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } else { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $212 = $pnt$163 + 1 | 0; + $213 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $212; + $pnt2$3$lcssa = $213; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $212; + $pnt2$362 = $213; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 2 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $219 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $221 = HEAP32[$wk$439 >> 2] | 0; + if (($221 | 0) == ($i$337 | 0)) { + $227 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $227; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $231 = $labelInfo + 8 | 0; + $232 = $j$1$lcssa + -1 | 0; + HEAP32[$231 >> 2] = $232; + if (!$232) $$0 = 0; else { + _memset($219 | 0, 0, $232 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $239 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $254 = $i$533 * 7 | 0; + $257 = $labelInfo + 12 + ($253 << 2) | 0; + HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0); + $264 = $253 << 1; + $265 = $labelInfo + 655376 + ($264 << 3) | 0; + HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0); + $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0; + HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0); + $276 = $253 << 2; + $277 = $labelInfo + 131084 + ($276 << 2) | 0; + $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0; + if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281; + $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0; + $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0; + if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288; + $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$231 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $306 = $labelInfo + 12 + ($i$632 << 2) | 0; + $309 = $i$632 << 1; + $310 = $labelInfo + 655376 + ($309 << 3) | 0; + HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0); + $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelingThresh = $labelingThresh | 0; + $labelInfo = $labelInfo | 0; + var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = HEAP32[$labelInfo >> 2] | 0; + $1 = $ysize + -1 | 0; + if (($xsize | 0) > 0) { + $i$081 = 0; + $pnt1$083 = $0; + $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0; + while (1) { + HEAP16[$pnt2$082 >> 1] = 0; + HEAP16[$pnt1$083 >> 1] = 0; + $i$081 = $i$081 + 1 | 0; + if (($i$081 | 0) >= ($xsize | 0)) break; else { + $pnt1$083 = $pnt1$083 + 2 | 0; + $pnt2$082 = $pnt2$082 + 2 | 0; + } + } + } + $9 = $xsize + -1 | 0; + if (($ysize | 0) > 0) { + $i$175 = 0; + $pnt1$177 = $0; + $pnt2$176 = $0 + ($9 << 1) | 0; + while (1) { + HEAP16[$pnt2$176 >> 1] = 0; + HEAP16[$pnt1$177 >> 1] = 0; + $i$175 = $i$175 + 1 | 0; + if (($i$175 | 0) >= ($ysize | 0)) break; else { + $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0; + $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0; + } + } + } + $16 = $labelInfo + 1179664 | 0; + $17 = $xsize + 1 | 0; + $18 = 0 - $xsize | 0; + $$sum = 1 - $xsize | 0; + $$sum1 = ~$xsize; + L11 : do if (($1 | 0) > 1) { + $22 = ($9 | 0) > 1; + $j$068 = 1; + $pnt$072 = $image + $17 | 0; + $pnt2$271 = $0 + ($17 << 1) | 0; + $wk_max$070 = 0; + L13 : while (1) { + if ($22) { + $i$255 = 1; + $pnt$163 = $pnt$072; + $pnt2$362 = $pnt2$271; + $wk_max$157 = $wk_max$070; + while (1) { + do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) { + HEAP16[$pnt2$362 >> 1] = 0; + $wk_max$2 = $wk_max$157; + } else { + $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0; + if ($27 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $27; + $30 = ($27 << 16 >> 16) * 7 | 0; + $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0; + HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1; + $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0; + HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255; + $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0; + HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0; + $47 = $46 << 16 >> 16; + $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0; + $51 = $50 << 16 >> 16; + $52 = $50 << 16 >> 16 > 0; + if ($46 << 16 >> 16 <= 0) { + if ($52) { + HEAP16[$pnt2$362 >> 1] = $50; + $152 = $51 * 7 | 0; + $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0; + HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1; + $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0; + HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255; + $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0; + HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068; + $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0; + if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($172 << 16 >> 16 > 0) { + HEAP16[$pnt2$362 >> 1] = $172; + $175 = ($172 << 16 >> 16) * 7 | 0; + $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0; + HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1; + $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0; + HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255; + $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0; + HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068; + $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0; + if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) { + $wk_max$2 = $wk_max$157; + break; + } + HEAP32[$189 >> 2] = $i$255; + $wk_max$2 = $wk_max$157; + break; + } else { + $192 = $wk_max$157 + 1 | 0; + if (($wk_max$157 | 0) > 32767) break L13; + HEAP16[$pnt2$362 >> 1] = $192; + HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16; + $197 = $wk_max$157 * 7 | 0; + HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1; + HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068; + HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068; + $wk_max$2 = $192; + break; + } + } + if ($52) { + $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0; + $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0; + if (($55 | 0) > ($58 | 0)) { + HEAP16[$pnt2$362 >> 1] = $58; + if (($wk_max$157 | 0) > 0) { + $k$051 = 0; + $wk$052 = $16; + while (1) { + if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58; + $k$051 = $k$051 + 1 | 0; + if (($k$051 | 0) >= ($wk_max$157 | 0)) { + $75 = $58; + break; + } else $wk$052 = $wk$052 + 4 | 0; + } + } else $75 = $58; + } else { + HEAP16[$pnt2$362 >> 1] = $55; + if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) { + $k$148 = 0; + $wk$149 = $16; + while (1) { + if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55; + $k$148 = $k$148 + 1 | 0; + if (($k$148 | 0) >= ($wk_max$157 | 0)) { + $75 = $55; + break; + } else $wk$149 = $wk$149 + 4 | 0; + } + } else $75 = $55; + } + $77 = ($75 << 16 >> 16) * 7 | 0; + $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0; + HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1; + $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0; + HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255; + $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0; + HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068; + HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0; + if ($93 << 16 >> 16 <= 0) { + HEAP16[$pnt2$362 >> 1] = $46; + $133 = $47 * 7 | 0; + $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0; + HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1; + $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0; + HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255; + $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0; + HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068; + $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0; + if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255; + HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068; + $wk_max$2 = $wk_max$157; + break; + } + $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0; + $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0; + if (($98 | 0) > ($101 | 0)) { + HEAP16[$pnt2$362 >> 1] = $101; + if (($wk_max$157 | 0) > 0) { + $k$244 = 0; + $wk$245 = $16; + while (1) { + if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101; + $k$244 = $k$244 + 1 | 0; + if (($k$244 | 0) >= ($wk_max$157 | 0)) { + $118 = $101; + break; + } else $wk$245 = $wk$245 + 4 | 0; + } + } else $118 = $101; + } else { + HEAP16[$pnt2$362 >> 1] = $98; + if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) { + $k$341 = 0; + $wk$342 = $16; + while (1) { + if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98; + $k$341 = $k$341 + 1 | 0; + if (($k$341 | 0) >= ($wk_max$157 | 0)) { + $118 = $98; + break; + } else $wk$342 = $wk$342 + 4 | 0; + } + } else $118 = $98; + } + $120 = ($118 << 16 >> 16) * 7 | 0; + $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0; + HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1; + $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0; + HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255; + $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0; + HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068; + $wk_max$2 = $wk_max$157; + } while (0); + $i$255 = $i$255 + 1 | 0; + $212 = $pnt$163 + 1 | 0; + $213 = $pnt2$362 + 2 | 0; + if (($i$255 | 0) >= ($9 | 0)) { + $pnt$1$lcssa = $212; + $pnt2$3$lcssa = $213; + $wk_max$1$lcssa = $wk_max$2; + break; + } else { + $pnt$163 = $212; + $pnt2$362 = $213; + $wk_max$157 = $wk_max$2; + } + } + } else { + $pnt$1$lcssa = $pnt$072; + $pnt2$3$lcssa = $pnt2$271; + $wk_max$1$lcssa = $wk_max$070; + } + $j$068 = $j$068 + 1 | 0; + if (($j$068 | 0) >= ($1 | 0)) { + $wk_max$0$lcssa = $wk_max$1$lcssa; + label = 52; + break L11; + } else { + $pnt$072 = $pnt$1$lcssa + 2 | 0; + $pnt2$271 = $pnt2$3$lcssa + 4 | 0; + $wk_max$070 = $wk_max$1$lcssa; + } + } + _arLog(3, 3904, $vararg_buffer); + $$0 = -1; + } else { + $wk_max$0$lcssa = 0; + label = 52; + } while (0); + if ((label | 0) == 52) { + $219 = $labelInfo + 12 | 0; + if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else { + $i$337 = 1; + $j$138 = 1; + $wk$439 = $16; + while (1) { + $221 = HEAP32[$wk$439 >> 2] | 0; + if (($221 | 0) == ($i$337 | 0)) { + $227 = $j$138; + $j$2 = $j$138 + 1 | 0; + } else { + $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0; + $j$2 = $j$138; + } + HEAP32[$wk$439 >> 2] = $227; + if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) { + $i$337 = $i$337 + 1 | 0; + $j$138 = $j$2; + $wk$439 = $wk$439 + 4 | 0; + } else { + $j$1$lcssa = $j$2; + break; + } + } + } + $231 = $labelInfo + 8 | 0; + $232 = $j$1$lcssa + -1 | 0; + HEAP32[$231 >> 2] = $232; + if (!$232) $$0 = 0; else { + _memset($219 | 0, 0, $232 << 2 | 0) | 0; + _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0; + if (($j$1$lcssa | 0) > 1) { + $i$435 = 0; + do { + $239 = $i$435 << 2; + HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize; + HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0; + HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize; + HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0; + $i$435 = $i$435 + 1 | 0; + } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0)); + } + if (($wk_max$0$lcssa | 0) > 0) { + $i$533 = 0; + do { + $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0; + $254 = $i$533 * 7 | 0; + $257 = $labelInfo + 12 + ($253 << 2) | 0; + HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0); + $264 = $253 << 1; + $265 = $labelInfo + 655376 + ($264 << 3) | 0; + HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0); + $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0; + HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0); + $276 = $253 << 2; + $277 = $labelInfo + 131084 + ($276 << 2) | 0; + $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0; + if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281; + $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0; + $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0; + if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288; + $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0; + $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0; + if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295; + $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0; + $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0; + if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302; + $i$533 = $i$533 + 1 | 0; + } while (($i$533 | 0) < ($wk_max$0$lcssa | 0)); + } + if ((HEAP32[$231 >> 2] | 0) > 0) { + $i$632 = 0; + do { + $306 = $labelInfo + 12 + ($i$632 << 2) | 0; + $309 = $i$632 << 1; + $310 = $labelInfo + 655376 + ($309 << 3) | 0; + HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0); + $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0; + HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0); + $i$632 = $i$632 + 1 | 0; + } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0)); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i21 = 0, $$0$i$i$i7 = 0, $$1 = 0, $$lcssa = 0, $$lcssa152 = 0, $$pre = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $118 = 0, $12 = 0, $121 = 0, $124 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $154 = 0, $157 = 0, $16 = 0, $164 = 0, $174 = 0, $176 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $193 = 0, $195 = 0, $2 = 0, $209 = 0, $211 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $225 = 0, $227 = 0, $23 = 0, $230 = 0, $231 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $38 = 0, $43 = 0, $44 = 0, $45 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $66 = 0, $76 = 0, $82 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__v$i$i20 = 0, $args = 0, $k$0121 = 0, $k1$0124 = 0, $k2$0123 = 0, $t$0$lcssa = 0, $t$0126 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i20 = sp + 64 | 0; + $args = sp + 52 | 0; + $0 = sp + 40 | 0; + $1 = sp + 16 | 0; + $2 = sp; + L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 73) { + $9 = $db + 61 | 0; + $$pre = $db + 36 | 0; + if (HEAP8[$9 >> 0] | 0) { + $12 = HEAP32[$$pre >> 2] | 0; + $14 = HEAP32[$12 + -16 >> 2] | 0; + $15 = $12 + -12 | 0; + $16 = HEAP32[$15 >> 2] | 0; + if (($16 | 0) != ($14 | 0)) { + $19 = $16; + do { + $18 = $19 + -16 | 0; + HEAP32[$15 >> 2] = $18; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18); + $19 = HEAP32[$15 >> 2] | 0; + } while (($19 | 0) != ($14 | 0)); + } + } + $22 = $first + 1 | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($args, 12776, 1); + $23 = $db + 4 | 0; + $24 = $db + 12 | 0; + $25 = $__v$i$i20 + 8 | 0; + $26 = $__v$i$i20 + 8 | 0; + $27 = $args + 4 | 0; + $28 = $0 + 8 | 0; + $29 = $0 + 1 | 0; + $30 = $0 + 4 | 0; + $31 = $db + 32 | 0; + $32 = $db + 40 | 0; + $33 = $db + 44 | 0; + $34 = $__v$i$i20 + 8 | 0; + L9 : do if ((HEAP8[$22 >> 0] | 0) == 69) $t$0$lcssa = $22; else { + $t$0126 = $22; + L10 : while (1) { + do if (HEAP8[$9 >> 0] | 0) { + $43 = HEAP32[$24 >> 2] | 0; + $44 = HEAP32[$$pre >> 2] | 0; + $45 = HEAP32[$32 >> 2] | 0; + if ($44 >>> 0 < $45 >>> 0) { + HEAP32[$44 >> 2] = 0; + HEAP32[$44 + 4 >> 2] = 0; + HEAP32[$44 + 8 >> 2] = 0; + HEAP32[$44 + 12 >> 2] = $43; + HEAP32[$$pre >> 2] = (HEAP32[$$pre >> 2] | 0) + 16; + break; + } + $54 = HEAP32[$31 >> 2] | 0; + $55 = $44 - $54 | 0; + $56 = $55 >> 4; + $57 = $56 + 1 | 0; + if (($55 | 0) < -16) { + label = 12; + break L10; + } + $60 = $45 - $54 | 0; + if ($60 >> 4 >>> 0 < 1073741823) { + $63 = $60 >> 3; + $$0$i$i$i = $63 >>> 0 < $57 >>> 0 ? $57 : $63; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i20, $$0$i$i$i, $56, $33); + $66 = HEAP32[$34 >> 2] | 0; + HEAP32[$66 >> 2] = 0; + HEAP32[$66 + 4 >> 2] = 0; + HEAP32[$66 + 8 >> 2] = 0; + HEAP32[$66 + 12 >> 2] = $43; + HEAP32[$34 >> 2] = $66 + 16; + __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($31, $__v$i$i20); + __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i20); + } while (0); + $76 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $38 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0126, $last, $db) | 0; + $82 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (HEAP8[$9 >> 0] | 0) { + $85 = HEAP32[$$pre >> 2] | 0; + $86 = $85 + -16 | 0; + $88 = $85; + do { + $87 = $88 + -16 | 0; + HEAP32[$$pre >> 2] = $87; + __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($87); + $88 = HEAP32[$$pre >> 2] | 0; + } while (($88 | 0) != ($86 | 0)); + } + if (($38 | 0) == ($t$0126 | 0) | ($38 | 0) == ($last | 0)) { + label = 56; + break; + } + if (HEAP8[$9 >> 0] | 0) { + $95 = HEAP32[$$pre >> 2] | 0; + $96 = $95 + -16 | 0; + $98 = HEAP32[$24 >> 2] | 0; + $99 = $95 + -12 | 0; + $100 = HEAP32[$99 >> 2] | 0; + $102 = HEAP32[$95 + -8 >> 2] | 0; + if ($100 >>> 0 < $102 >>> 0) { + HEAP32[$100 >> 2] = 0; + HEAP32[$100 + 4 >> 2] = 0; + HEAP32[$100 + 8 >> 2] = 0; + HEAP32[$100 + 12 >> 2] = $98; + HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 16; + } else { + $112 = HEAP32[$96 >> 2] | 0; + $113 = $100 - $112 | 0; + $114 = $113 >> 4; + $115 = $114 + 1 | 0; + if (($113 | 0) < -16) { + $$lcssa = $96; + label = 25; + break; + } + $118 = $102 - $112 | 0; + if ($118 >> 4 >>> 0 < 1073741823) { + $121 = $118 >> 3; + $$0$i$i$i7 = $121 >>> 0 < $115 >>> 0 ? $115 : $121; + } else $$0$i$i$i7 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i20, $$0$i$i$i7, $114, $95 + -4 | 0); + $124 = HEAP32[$25 >> 2] | 0; + HEAP32[$124 >> 2] = 0; + HEAP32[$124 + 4 >> 2] = 0; + HEAP32[$124 + 8 >> 2] = 0; + HEAP32[$124 + 12 >> 2] = $98; + HEAP32[$25 >> 2] = $124 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($96, $__v$i$i20); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i20); + } + if ($76 >>> 0 < $82 >>> 0) { + $k$0121 = $76; + do { + $132 = HEAP32[(HEAP32[$$pre >> 2] | 0) + -12 >> 2] | 0; + $133 = $132 + -16 | 0; + $134 = HEAP32[$db >> 2] | 0; + $135 = $134 + ($k$0121 * 24 | 0) | 0; + $136 = $132 + -12 | 0; + $137 = HEAP32[$136 >> 2] | 0; + if (($137 | 0) == (HEAP32[$132 + -8 >> 2] | 0)) { + $149 = $137 - (HEAP32[$133 >> 2] | 0) | 0; + $150 = ($149 | 0) / 24 | 0; + $151 = $150 + 1 | 0; + if (($149 | 0) < -24) { + $$lcssa152 = $133; + label = 33; + break L10; + } + if ($150 >>> 0 < 1073741823) { + $154 = $150 << 1; + $$0$i$i$i10 = $154 >>> 0 < $151 >>> 0 ? $151 : $154; + } else $$0$i$i$i10 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i10, $150, $132 + -4 | 0); + $157 = HEAP32[$26 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157, $135); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0); + HEAP32[$26 >> 2] = $157 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($133, $__v$i$i20); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137, $135); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0); + HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 24; + } + $k$0121 = $k$0121 + 1 | 0; + } while ($k$0121 >>> 0 < $82 >>> 0); + } + } + if ($76 >>> 0 < $82 >>> 0) { + $k2$0123 = $76; + do { + $164 = HEAP8[$args >> 0] | 0; + if ((($164 & 1) == 0 ? ($164 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12716) | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k2$0123 * 24 | 0) | 0); + $174 = HEAP8[$0 >> 0] | 0; + $176 = ($174 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($args, $176 ? $29 : HEAP32[$28 >> 2] | 0, $176 ? ($174 & 255) >>> 1 : HEAP32[$30 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + $k2$0123 = $k2$0123 + 1 | 0; + } while ($k2$0123 >>> 0 < $82 >>> 0); + } + if (($82 | 0) != ($76 | 0)) { + $k1$0124 = $82; + do { + $185 = HEAP32[$23 >> 2] | 0; + $186 = $185 + -24 | 0; + $188 = $185; + do { + $187 = $188 + -24 | 0; + HEAP32[$23 >> 2] = $187; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187); + $188 = HEAP32[$23 >> 2] | 0; + } while (($188 | 0) != ($186 | 0)); + $k1$0124 = $k1$0124 + -1 | 0; + } while (($k1$0124 | 0) != ($76 | 0)); + } + if ((HEAP8[$38 >> 0] | 0) == 69) { + $t$0$lcssa = $38; + break L9; + } else $t$0126 = $38; + } + if ((label | 0) == 12) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($31); else if ((label | 0) == 25) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa); else if ((label | 0) == 33) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa152); else if ((label | 0) == 56) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$1 = $first; + break L1; + } + } while (0); + $192 = $t$0$lcssa + 1 | 0; + $193 = HEAP8[$args >> 0] | 0; + $195 = ($193 & 1) == 0; + if ((HEAP8[($195 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0) + (($195 ? ($193 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) + -1) >> 0] | 0) == 62) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 13761) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12778) | 0; + HEAP32[$2 >> 2] = HEAP32[$args >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$args + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$args + 8 >> 2]; + HEAP32[$args >> 2] = 0; + HEAP32[$args + 4 >> 2] = 0; + HEAP32[$args + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + $209 = HEAP32[$23 >> 2] | 0; + $211 = HEAP32[$db + 8 >> 2] | 0; + if ($209 >>> 0 < $211 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($209, $1); + HEAP32[$23 >> 2] = (HEAP32[$23 >> 2] | 0) + 24; + } else { + $218 = HEAP32[$db >> 2] | 0; + $219 = $209 - $218 | 0; + $220 = ($219 | 0) / 24 | 0; + $221 = $220 + 1 | 0; + if (($219 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $225 = ($211 - $218 | 0) / 24 | 0; + if ($225 >>> 0 < 1073741823) { + $227 = $225 << 1; + $$0$i$i$i21 = $227 >>> 0 < $221 >>> 0 ? $221 : $227; + } else $$0$i$i$i21 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i21, $220, $db + 12 | 0); + $230 = $__v$i$i20 + 8 | 0; + $231 = HEAP32[$230 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($231, $1); + HEAP32[$230 >> 2] = $231 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i20); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$1 = $192; + } else $$1 = $first; else $$1 = $first; while (0); + STACKTOP = sp; + return $$1 | 0; +} +function _free($mem) { + $mem = $mem | 0; + var $$lcssa = 0, $$pre$phi59Z2D = 0, $$pre$phi61Z2D = 0, $$pre$phiZ2D = 0, $$sum2 = 0, $1 = 0, $103 = 0, $104 = 0, $111 = 0, $112 = 0, $12 = 0, $120 = 0, $128 = 0, $133 = 0, $134 = 0, $137 = 0, $139 = 0, $14 = 0, $141 = 0, $15 = 0, $156 = 0, $161 = 0, $163 = 0, $166 = 0, $169 = 0, $172 = 0, $175 = 0, $176 = 0, $178 = 0, $179 = 0, $181 = 0, $182 = 0, $184 = 0, $185 = 0, $19 = 0, $191 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $210 = 0, $216 = 0, $22 = 0, $231 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $24 = 0, $240 = 0, $241 = 0, $247 = 0, $252 = 0, $253 = 0, $256 = 0, $258 = 0, $26 = 0, $261 = 0, $266 = 0, $272 = 0, $276 = 0, $277 = 0, $284 = 0, $296 = 0, $301 = 0, $308 = 0, $309 = 0, $310 = 0, $318 = 0, $39 = 0, $44 = 0, $46 = 0, $49 = 0, $5 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $6 = 0, $60 = 0, $61 = 0, $63 = 0, $64 = 0, $66 = 0, $67 = 0, $72 = 0, $73 = 0, $8 = 0, $82 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $F16$0 = 0, $I18$0 = 0, $K19$052 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$051 = 0, $T$051$lcssa = 0, $p$0 = 0, $psize$0 = 0, $psize$1 = 0, $sp$0$i = 0, $sp$0$in$i = 0; + if (!$mem) return; + $1 = $mem + -8 | 0; + $2 = HEAP32[760] | 0; + if ($1 >>> 0 < $2 >>> 0) _abort(); + $5 = HEAP32[$mem + -4 >> 2] | 0; + $6 = $5 & 3; + if (($6 | 0) == 1) _abort(); + $8 = $5 & -8; + $9 = $mem + ($8 + -8) | 0; + do if (!($5 & 1)) { + $12 = HEAP32[$1 >> 2] | 0; + if (!$6) return; + $$sum2 = -8 - $12 | 0; + $14 = $mem + $$sum2 | 0; + $15 = $12 + $8 | 0; + if ($14 >>> 0 < $2 >>> 0) _abort(); + if (($14 | 0) == (HEAP32[761] | 0)) { + $103 = $mem + ($8 + -4) | 0; + $104 = HEAP32[$103 >> 2] | 0; + if (($104 & 3 | 0) != 3) { + $p$0 = $14; + $psize$0 = $15; + break; + } + HEAP32[758] = $15; + HEAP32[$103 >> 2] = $104 & -2; + HEAP32[$mem + ($$sum2 + 4) >> 2] = $15 | 1; + HEAP32[$9 >> 2] = $15; + return; + } + $19 = $12 >>> 3; + if ($12 >>> 0 < 256) { + $22 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0; + $24 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0; + $26 = 3064 + ($19 << 1 << 2) | 0; + if (($22 | 0) != ($26 | 0)) { + if ($22 >>> 0 < $2 >>> 0) _abort(); + if ((HEAP32[$22 + 12 >> 2] | 0) != ($14 | 0)) _abort(); + } + if (($24 | 0) == ($22 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $19); + $p$0 = $14; + $psize$0 = $15; + break; + } + if (($24 | 0) == ($26 | 0)) $$pre$phi61Z2D = $24 + 8 | 0; else { + if ($24 >>> 0 < $2 >>> 0) _abort(); + $39 = $24 + 8 | 0; + if ((HEAP32[$39 >> 2] | 0) == ($14 | 0)) $$pre$phi61Z2D = $39; else _abort(); + } + HEAP32[$22 + 12 >> 2] = $24; + HEAP32[$$pre$phi61Z2D >> 2] = $22; + $p$0 = $14; + $psize$0 = $15; + break; + } + $44 = HEAP32[$mem + ($$sum2 + 24) >> 2] | 0; + $46 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0; + do if (($46 | 0) == ($14 | 0)) { + $57 = $mem + ($$sum2 + 20) | 0; + $58 = HEAP32[$57 >> 2] | 0; + if (!$58) { + $60 = $mem + ($$sum2 + 16) | 0; + $61 = HEAP32[$60 >> 2] | 0; + if (!$61) { + $R$1 = 0; + break; + } else { + $R$0 = $61; + $RP$0 = $60; + } + } else { + $R$0 = $58; + $RP$0 = $57; + } + while (1) { + $63 = $R$0 + 20 | 0; + $64 = HEAP32[$63 >> 2] | 0; + if ($64) { + $R$0 = $64; + $RP$0 = $63; + continue; + } + $66 = $R$0 + 16 | 0; + $67 = HEAP32[$66 >> 2] | 0; + if (!$67) { + $R$0$lcssa = $R$0; + $RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $67; + $RP$0 = $66; + } + } + if ($RP$0$lcssa >>> 0 < $2 >>> 0) _abort(); else { + HEAP32[$RP$0$lcssa >> 2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $49 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0; + if ($49 >>> 0 < $2 >>> 0) _abort(); + $51 = $49 + 12 | 0; + if ((HEAP32[$51 >> 2] | 0) != ($14 | 0)) _abort(); + $54 = $46 + 8 | 0; + if ((HEAP32[$54 >> 2] | 0) == ($14 | 0)) { + HEAP32[$51 >> 2] = $46; + HEAP32[$54 >> 2] = $49; + $R$1 = $46; + break; + } else _abort(); + } while (0); + if (!$44) { + $p$0 = $14; + $psize$0 = $15; + } else { + $72 = HEAP32[$mem + ($$sum2 + 28) >> 2] | 0; + $73 = 3328 + ($72 << 2) | 0; + if (($14 | 0) == (HEAP32[$73 >> 2] | 0)) { + HEAP32[$73 >> 2] = $R$1; + if (!$R$1) { + HEAP32[757] = HEAP32[757] & ~(1 << $72); + $p$0 = $14; + $psize$0 = $15; + break; + } + } else { + if ($44 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $82 = $44 + 16 | 0; + if ((HEAP32[$82 >> 2] | 0) == ($14 | 0)) HEAP32[$82 >> 2] = $R$1; else HEAP32[$44 + 20 >> 2] = $R$1; + if (!$R$1) { + $p$0 = $14; + $psize$0 = $15; + break; + } + } + $87 = HEAP32[760] | 0; + if ($R$1 >>> 0 < $87 >>> 0) _abort(); + HEAP32[$R$1 + 24 >> 2] = $44; + $91 = HEAP32[$mem + ($$sum2 + 16) >> 2] | 0; + do if ($91) if ($91 >>> 0 < $87 >>> 0) _abort(); else { + HEAP32[$R$1 + 16 >> 2] = $91; + HEAP32[$91 + 24 >> 2] = $R$1; + break; + } while (0); + $97 = HEAP32[$mem + ($$sum2 + 20) >> 2] | 0; + if (!$97) { + $p$0 = $14; + $psize$0 = $15; + } else if ($97 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1 + 20 >> 2] = $97; + HEAP32[$97 + 24 >> 2] = $R$1; + $p$0 = $14; + $psize$0 = $15; + break; + } + } + } else { + $p$0 = $1; + $psize$0 = $8; + } while (0); + if ($p$0 >>> 0 >= $9 >>> 0) _abort(); + $111 = $mem + ($8 + -4) | 0; + $112 = HEAP32[$111 >> 2] | 0; + if (!($112 & 1)) _abort(); + if (!($112 & 2)) { + if (($9 | 0) == (HEAP32[762] | 0)) { + $120 = (HEAP32[759] | 0) + $psize$0 | 0; + HEAP32[759] = $120; + HEAP32[762] = $p$0; + HEAP32[$p$0 + 4 >> 2] = $120 | 1; + if (($p$0 | 0) != (HEAP32[761] | 0)) return; + HEAP32[761] = 0; + HEAP32[758] = 0; + return; + } + if (($9 | 0) == (HEAP32[761] | 0)) { + $128 = (HEAP32[758] | 0) + $psize$0 | 0; + HEAP32[758] = $128; + HEAP32[761] = $p$0; + HEAP32[$p$0 + 4 >> 2] = $128 | 1; + HEAP32[$p$0 + $128 >> 2] = $128; + return; + } + $133 = ($112 & -8) + $psize$0 | 0; + $134 = $112 >>> 3; + do if ($112 >>> 0 < 256) { + $137 = HEAP32[$mem + $8 >> 2] | 0; + $139 = HEAP32[$mem + ($8 | 4) >> 2] | 0; + $141 = 3064 + ($134 << 1 << 2) | 0; + if (($137 | 0) != ($141 | 0)) { + if ($137 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + if ((HEAP32[$137 + 12 >> 2] | 0) != ($9 | 0)) _abort(); + } + if (($139 | 0) == ($137 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $134); + break; + } + if (($139 | 0) == ($141 | 0)) $$pre$phi59Z2D = $139 + 8 | 0; else { + if ($139 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $156 = $139 + 8 | 0; + if ((HEAP32[$156 >> 2] | 0) == ($9 | 0)) $$pre$phi59Z2D = $156; else _abort(); + } + HEAP32[$137 + 12 >> 2] = $139; + HEAP32[$$pre$phi59Z2D >> 2] = $137; + } else { + $161 = HEAP32[$mem + ($8 + 16) >> 2] | 0; + $163 = HEAP32[$mem + ($8 | 4) >> 2] | 0; + do if (($163 | 0) == ($9 | 0)) { + $175 = $mem + ($8 + 12) | 0; + $176 = HEAP32[$175 >> 2] | 0; + if (!$176) { + $178 = $mem + ($8 + 8) | 0; + $179 = HEAP32[$178 >> 2] | 0; + if (!$179) { + $R7$1 = 0; + break; + } else { + $R7$0 = $179; + $RP9$0 = $178; + } + } else { + $R7$0 = $176; + $RP9$0 = $175; + } + while (1) { + $181 = $R7$0 + 20 | 0; + $182 = HEAP32[$181 >> 2] | 0; + if ($182) { + $R7$0 = $182; + $RP9$0 = $181; + continue; + } + $184 = $R7$0 + 16 | 0; + $185 = HEAP32[$184 >> 2] | 0; + if (!$185) { + $R7$0$lcssa = $R7$0; + $RP9$0$lcssa = $RP9$0; + break; + } else { + $R7$0 = $185; + $RP9$0 = $184; + } + } + if ($RP9$0$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$RP9$0$lcssa >> 2] = 0; + $R7$1 = $R7$0$lcssa; + break; + } + } else { + $166 = HEAP32[$mem + $8 >> 2] | 0; + if ($166 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $169 = $166 + 12 | 0; + if ((HEAP32[$169 >> 2] | 0) != ($9 | 0)) _abort(); + $172 = $163 + 8 | 0; + if ((HEAP32[$172 >> 2] | 0) == ($9 | 0)) { + HEAP32[$169 >> 2] = $163; + HEAP32[$172 >> 2] = $166; + $R7$1 = $163; + break; + } else _abort(); + } while (0); + if ($161) { + $191 = HEAP32[$mem + ($8 + 20) >> 2] | 0; + $192 = 3328 + ($191 << 2) | 0; + if (($9 | 0) == (HEAP32[$192 >> 2] | 0)) { + HEAP32[$192 >> 2] = $R7$1; + if (!$R7$1) { + HEAP32[757] = HEAP32[757] & ~(1 << $191); + break; + } + } else { + if ($161 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $201 = $161 + 16 | 0; + if ((HEAP32[$201 >> 2] | 0) == ($9 | 0)) HEAP32[$201 >> 2] = $R7$1; else HEAP32[$161 + 20 >> 2] = $R7$1; + if (!$R7$1) break; + } + $206 = HEAP32[760] | 0; + if ($R7$1 >>> 0 < $206 >>> 0) _abort(); + HEAP32[$R7$1 + 24 >> 2] = $161; + $210 = HEAP32[$mem + ($8 + 8) >> 2] | 0; + do if ($210) if ($210 >>> 0 < $206 >>> 0) _abort(); else { + HEAP32[$R7$1 + 16 >> 2] = $210; + HEAP32[$210 + 24 >> 2] = $R7$1; + break; + } while (0); + $216 = HEAP32[$mem + ($8 + 12) >> 2] | 0; + if ($216) if ($216 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R7$1 + 20 >> 2] = $216; + HEAP32[$216 + 24 >> 2] = $R7$1; + break; + } + } + } while (0); + HEAP32[$p$0 + 4 >> 2] = $133 | 1; + HEAP32[$p$0 + $133 >> 2] = $133; + if (($p$0 | 0) == (HEAP32[761] | 0)) { + HEAP32[758] = $133; + return; + } else $psize$1 = $133; + } else { + HEAP32[$111 >> 2] = $112 & -2; + HEAP32[$p$0 + 4 >> 2] = $psize$0 | 1; + HEAP32[$p$0 + $psize$0 >> 2] = $psize$0; + $psize$1 = $psize$0; + } + $231 = $psize$1 >>> 3; + if ($psize$1 >>> 0 < 256) { + $233 = $231 << 1; + $234 = 3064 + ($233 << 2) | 0; + $235 = HEAP32[756] | 0; + $236 = 1 << $231; + if (!($235 & $236)) { + HEAP32[756] = $235 | $236; + $$pre$phiZ2D = 3064 + ($233 + 2 << 2) | 0; + $F16$0 = $234; + } else { + $240 = 3064 + ($233 + 2 << 2) | 0; + $241 = HEAP32[$240 >> 2] | 0; + if ($241 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phiZ2D = $240; + $F16$0 = $241; + } + } + HEAP32[$$pre$phiZ2D >> 2] = $p$0; + HEAP32[$F16$0 + 12 >> 2] = $p$0; + HEAP32[$p$0 + 8 >> 2] = $F16$0; + HEAP32[$p$0 + 12 >> 2] = $234; + return; + } + $247 = $psize$1 >>> 8; + if (!$247) $I18$0 = 0; else if ($psize$1 >>> 0 > 16777215) $I18$0 = 31; else { + $252 = ($247 + 1048320 | 0) >>> 16 & 8; + $253 = $247 << $252; + $256 = ($253 + 520192 | 0) >>> 16 & 4; + $258 = $253 << $256; + $261 = ($258 + 245760 | 0) >>> 16 & 2; + $266 = 14 - ($256 | $252 | $261) + ($258 << $261 >>> 15) | 0; + $I18$0 = $psize$1 >>> ($266 + 7 | 0) & 1 | $266 << 1; + } + $272 = 3328 + ($I18$0 << 2) | 0; + HEAP32[$p$0 + 28 >> 2] = $I18$0; + HEAP32[$p$0 + 20 >> 2] = 0; + HEAP32[$p$0 + 16 >> 2] = 0; + $276 = HEAP32[757] | 0; + $277 = 1 << $I18$0; + L199 : do if (!($276 & $277)) { + HEAP32[757] = $276 | $277; + HEAP32[$272 >> 2] = $p$0; + HEAP32[$p$0 + 24 >> 2] = $272; + HEAP32[$p$0 + 12 >> 2] = $p$0; + HEAP32[$p$0 + 8 >> 2] = $p$0; + } else { + $284 = HEAP32[$272 >> 2] | 0; + L202 : do if ((HEAP32[$284 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) $T$0$lcssa = $284; else { + $K19$052 = $psize$1 << (($I18$0 | 0) == 31 ? 0 : 25 - ($I18$0 >>> 1) | 0); + $T$051 = $284; + while (1) { + $301 = $T$051 + 16 + ($K19$052 >>> 31 << 2) | 0; + $296 = HEAP32[$301 >> 2] | 0; + if (!$296) { + $$lcssa = $301; + $T$051$lcssa = $T$051; + break; + } + if ((HEAP32[$296 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) { + $T$0$lcssa = $296; + break L202; + } else { + $K19$052 = $K19$052 << 1; + $T$051 = $296; + } + } + if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$$lcssa >> 2] = $p$0; + HEAP32[$p$0 + 24 >> 2] = $T$051$lcssa; + HEAP32[$p$0 + 12 >> 2] = $p$0; + HEAP32[$p$0 + 8 >> 2] = $p$0; + break L199; + } + } while (0); + $308 = $T$0$lcssa + 8 | 0; + $309 = HEAP32[$308 >> 2] | 0; + $310 = HEAP32[760] | 0; + if ($309 >>> 0 >= $310 >>> 0 & $T$0$lcssa >>> 0 >= $310 >>> 0) { + HEAP32[$309 + 12 >> 2] = $p$0; + HEAP32[$308 >> 2] = $p$0; + HEAP32[$p$0 + 8 >> 2] = $309; + HEAP32[$p$0 + 12 >> 2] = $T$0$lcssa; + HEAP32[$p$0 + 24 >> 2] = 0; + break; + } else _abort(); + } while (0); + $318 = (HEAP32[764] | 0) + -1 | 0; + HEAP32[764] = $318; + if (!$318) $sp$0$in$i = 3480; else return; + while (1) { + $sp$0$i = HEAP32[$sp$0$in$i >> 2] | 0; + if (!$sp$0$i) break; else $sp$0$in$i = $sp$0$i + 8 | 0; + } + HEAP32[764] = -1; + return; +} + +function ___intscan($f, $base, $pok, $0, $1) { + $f = $f | 0; + $base = $base | 0; + $pok = $pok | 0; + $0 = $0 | 0; + $1 = $1 | 0; + var $$1 = 0, $$122 = 0, $$123 = 0, $$base21 = 0, $$lcssa = 0, $$lcssa130 = 0, $$lcssa131 = 0, $$lcssa132 = 0, $$lcssa133 = 0, $$lcssa134 = 0, $$lcssa135 = 0, $100 = 0, $101 = 0, $108 = 0, $120 = 0, $121 = 0, $128 = 0, $13 = 0, $130 = 0, $131 = 0, $134 = 0, $135 = 0, $136 = 0, $144 = 0, $149 = 0, $150 = 0, $152 = 0, $155 = 0, $157 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $166 = 0, $167 = 0, $168 = 0, $17 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $195 = 0, $201 = 0, $203 = 0, $204 = 0, $206 = 0, $208 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $223 = 0, $224 = 0, $239 = 0, $25 = 0, $250 = 0, $260 = 0, $262 = 0, $271 = 0, $272 = 0, $279 = 0, $281 = 0, $284 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $3 = 0, $37 = 0, $39 = 0, $4 = 0, $46 = 0, $5 = 0, $51 = 0, $6 = 0, $65 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $83 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $90 = 0, $91 = 0, $93 = 0, $99 = 0, $c$0 = 0, $c$1 = 0, $c$124 = 0, $c$2$be = 0, $c$2$be$lcssa = 0, $c$2$lcssa = 0, $c$3$be = 0, $c$3$lcssa = 0, $c$371 = 0, $c$4$be = 0, $c$4$be$lcssa = 0, $c$4$lcssa = 0, $c$5$be = 0, $c$6$be = 0, $c$6$be$lcssa = 0, $c$6$lcssa = 0, $c$7$be = 0, $c$753 = 0, $c$8 = 0, $c$9$be = 0, $neg$0 = 0, $neg$1 = 0, $x$082 = 0, $x$146 = 0, $x$266 = 0, label = 0; + L1 : do if ($base >>> 0 > 36) { + $5 = ___errno_location() | 0; + HEAP32[$5 >> 2] = 22; + $286 = 0; + $287 = 0; + } else { + $3 = $f + 4 | 0; + $4 = $f + 100 | 0; + do { + $6 = HEAP32[$3 >> 2] | 0; + if ($6 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $6 + 1; + $13 = HEAPU8[$6 >> 0] | 0; + } else $13 = ___shgetc($f) | 0; + } while ((_isspace($13) | 0) != 0); + $$lcssa135 = $13; + L11 : do switch ($$lcssa135 | 0) { + case 43: + case 45: + { + $17 = (($$lcssa135 | 0) == 45) << 31 >> 31; + $18 = HEAP32[$3 >> 2] | 0; + if ($18 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $18 + 1; + $c$0 = HEAPU8[$18 >> 0] | 0; + $neg$0 = $17; + break L11; + } else { + $c$0 = ___shgetc($f) | 0; + $neg$0 = $17; + break L11; + } + break; + } + default: + { + $c$0 = $$lcssa135; + $neg$0 = 0; + } + } while (0); + $25 = ($base | 0) == 0; + do if (($base & -17 | 0) == 0 & ($c$0 | 0) == 48) { + $29 = HEAP32[$3 >> 2] | 0; + if ($29 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $29 + 1; + $37 = HEAPU8[$29 >> 0] | 0; + } else $37 = ___shgetc($f) | 0; + if (($37 | 32 | 0) != 120) if ($25) { + $$123 = 8; + $c$124 = $37; + label = 46; + break; + } else { + $$1 = $base; + $c$1 = $37; + label = 32; + break; + } + $39 = HEAP32[$3 >> 2] | 0; + if ($39 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $39 + 1; + $46 = HEAPU8[$39 >> 0] | 0; + } else $46 = ___shgetc($f) | 0; + if ((HEAPU8[16493 + ($46 + 1) >> 0] | 0) > 15) { + $51 = (HEAP32[$4 >> 2] | 0) == 0; + if (!$51) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1; + if (!$pok) { + ___shlim($f, 0); + $286 = 0; + $287 = 0; + break L1; + } + if ($51) { + $286 = 0; + $287 = 0; + break L1; + } + HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1; + $286 = 0; + $287 = 0; + break L1; + } else { + $$123 = 16; + $c$124 = $46; + label = 46; + } + } else { + $$base21 = $25 ? 10 : $base; + if ((HEAPU8[16493 + ($c$0 + 1) >> 0] | 0) >>> 0 < $$base21 >>> 0) { + $$1 = $$base21; + $c$1 = $c$0; + label = 32; + } else { + if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1; + ___shlim($f, 0); + $65 = ___errno_location() | 0; + HEAP32[$65 >> 2] = 22; + $286 = 0; + $287 = 0; + break L1; + } + } while (0); + if ((label | 0) == 32) if (($$1 | 0) == 10) { + $67 = $c$1 + -48 | 0; + if ($67 >>> 0 < 10) { + $71 = $67; + $x$082 = 0; + while (1) { + $70 = ($x$082 * 10 | 0) + $71 | 0; + $72 = HEAP32[$3 >> 2] | 0; + if ($72 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $72 + 1; + $c$2$be = HEAPU8[$72 >> 0] | 0; + } else $c$2$be = ___shgetc($f) | 0; + $71 = $c$2$be + -48 | 0; + if (!($71 >>> 0 < 10 & $70 >>> 0 < 429496729)) { + $$lcssa134 = $70; + $c$2$be$lcssa = $c$2$be; + break; + } else $x$082 = $70; + } + $288 = $$lcssa134; + $289 = 0; + $c$2$lcssa = $c$2$be$lcssa; + } else { + $288 = 0; + $289 = 0; + $c$2$lcssa = $c$1; + } + $83 = $c$2$lcssa + -48 | 0; + if ($83 >>> 0 < 10) { + $85 = $288; + $86 = $289; + $90 = $83; + $c$371 = $c$2$lcssa; + while (1) { + $87 = ___muldi3($85 | 0, $86 | 0, 10, 0) | 0; + $88 = tempRet0; + $91 = (($90 | 0) < 0) << 31 >> 31; + $93 = ~$91; + if ($88 >>> 0 > $93 >>> 0 | ($88 | 0) == ($93 | 0) & $87 >>> 0 > ~$90 >>> 0) { + $$lcssa = $90; + $290 = $85; + $291 = $86; + $c$3$lcssa = $c$371; + break; + } + $99 = _i64Add($87 | 0, $88 | 0, $90 | 0, $91 | 0) | 0; + $100 = tempRet0; + $101 = HEAP32[$3 >> 2] | 0; + if ($101 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $101 + 1; + $c$3$be = HEAPU8[$101 >> 0] | 0; + } else $c$3$be = ___shgetc($f) | 0; + $108 = $c$3$be + -48 | 0; + if ($108 >>> 0 < 10 & ($100 >>> 0 < 429496729 | ($100 | 0) == 429496729 & $99 >>> 0 < 2576980378)) { + $85 = $99; + $86 = $100; + $90 = $108; + $c$371 = $c$3$be; + } else { + $$lcssa = $108; + $290 = $99; + $291 = $100; + $c$3$lcssa = $c$3$be; + break; + } + } + if ($$lcssa >>> 0 > 9) { + $260 = $291; + $262 = $290; + $neg$1 = $neg$0; + } else { + $$122 = 10; + $292 = $290; + $293 = $291; + $c$8 = $c$3$lcssa; + label = 72; + } + } else { + $260 = $289; + $262 = $288; + $neg$1 = $neg$0; + } + } else { + $$123 = $$1; + $c$124 = $c$1; + label = 46; + } + L63 : do if ((label | 0) == 46) { + if (!($$123 + -1 & $$123)) { + $128 = HEAP8[16750 + (($$123 * 23 | 0) >>> 5 & 7) >> 0] | 0; + $130 = HEAP8[16493 + ($c$124 + 1) >> 0] | 0; + $131 = $130 & 255; + if ($131 >>> 0 < $$123 >>> 0) { + $135 = $131; + $x$146 = 0; + while (1) { + $134 = $135 | $x$146 << $128; + $136 = HEAP32[$3 >> 2] | 0; + if ($136 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $136 + 1; + $c$4$be = HEAPU8[$136 >> 0] | 0; + } else $c$4$be = ___shgetc($f) | 0; + $144 = HEAP8[16493 + ($c$4$be + 1) >> 0] | 0; + $135 = $144 & 255; + if (!($134 >>> 0 < 134217728 & $135 >>> 0 < $$123 >>> 0)) { + $$lcssa130 = $134; + $$lcssa131 = $144; + $c$4$be$lcssa = $c$4$be; + break; + } else $x$146 = $134; + } + $152 = $$lcssa131; + $155 = 0; + $157 = $$lcssa130; + $c$4$lcssa = $c$4$be$lcssa; + } else { + $152 = $130; + $155 = 0; + $157 = 0; + $c$4$lcssa = $c$124; + } + $149 = _bitshift64Lshr(-1, -1, $128 | 0) | 0; + $150 = tempRet0; + if (($152 & 255) >>> 0 >= $$123 >>> 0 | ($155 >>> 0 > $150 >>> 0 | ($155 | 0) == ($150 | 0) & $157 >>> 0 > $149 >>> 0)) { + $$122 = $$123; + $292 = $157; + $293 = $155; + $c$8 = $c$4$lcssa; + label = 72; + break; + } else { + $161 = $157; + $162 = $155; + $166 = $152; + } + while (1) { + $163 = _bitshift64Shl($161 | 0, $162 | 0, $128 | 0) | 0; + $164 = tempRet0; + $167 = $166 & 255 | $163; + $168 = HEAP32[$3 >> 2] | 0; + if ($168 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $168 + 1; + $c$5$be = HEAPU8[$168 >> 0] | 0; + } else $c$5$be = ___shgetc($f) | 0; + $166 = HEAP8[16493 + ($c$5$be + 1) >> 0] | 0; + if (($166 & 255) >>> 0 >= $$123 >>> 0 | ($164 >>> 0 > $150 >>> 0 | ($164 | 0) == ($150 | 0) & $167 >>> 0 > $149 >>> 0)) { + $$122 = $$123; + $292 = $167; + $293 = $164; + $c$8 = $c$5$be; + label = 72; + break L63; + } else { + $161 = $167; + $162 = $164; + } + } + } + $120 = HEAP8[16493 + ($c$124 + 1) >> 0] | 0; + $121 = $120 & 255; + if ($121 >>> 0 < $$123 >>> 0) { + $186 = $121; + $x$266 = 0; + while (1) { + $185 = $186 + (Math_imul($x$266, $$123) | 0) | 0; + $187 = HEAP32[$3 >> 2] | 0; + if ($187 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $187 + 1; + $c$6$be = HEAPU8[$187 >> 0] | 0; + } else $c$6$be = ___shgetc($f) | 0; + $195 = HEAP8[16493 + ($c$6$be + 1) >> 0] | 0; + $186 = $195 & 255; + if (!($185 >>> 0 < 119304647 & $186 >>> 0 < $$123 >>> 0)) { + $$lcssa132 = $185; + $$lcssa133 = $195; + $c$6$be$lcssa = $c$6$be; + break; + } else $x$266 = $185; + } + $201 = $$lcssa133; + $294 = $$lcssa132; + $295 = 0; + $c$6$lcssa = $c$6$be$lcssa; + } else { + $201 = $120; + $294 = 0; + $295 = 0; + $c$6$lcssa = $c$124; + } + if (($201 & 255) >>> 0 < $$123 >>> 0) { + $203 = ___udivdi3(-1, -1, $$123 | 0, 0) | 0; + $204 = tempRet0; + $206 = $295; + $208 = $294; + $215 = $201; + $c$753 = $c$6$lcssa; + while (1) { + if ($206 >>> 0 > $204 >>> 0 | ($206 | 0) == ($204 | 0) & $208 >>> 0 > $203 >>> 0) { + $$122 = $$123; + $292 = $208; + $293 = $206; + $c$8 = $c$753; + label = 72; + break L63; + } + $212 = ___muldi3($208 | 0, $206 | 0, $$123 | 0, 0) | 0; + $213 = tempRet0; + $214 = $215 & 255; + if ($213 >>> 0 > 4294967295 | ($213 | 0) == -1 & $212 >>> 0 > ~$214 >>> 0) { + $$122 = $$123; + $292 = $208; + $293 = $206; + $c$8 = $c$753; + label = 72; + break L63; + } + $222 = _i64Add($214 | 0, 0, $212 | 0, $213 | 0) | 0; + $223 = tempRet0; + $224 = HEAP32[$3 >> 2] | 0; + if ($224 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $224 + 1; + $c$7$be = HEAPU8[$224 >> 0] | 0; + } else $c$7$be = ___shgetc($f) | 0; + $215 = HEAP8[16493 + ($c$7$be + 1) >> 0] | 0; + if (($215 & 255) >>> 0 >= $$123 >>> 0) { + $$122 = $$123; + $292 = $222; + $293 = $223; + $c$8 = $c$7$be; + label = 72; + break; + } else { + $206 = $223; + $208 = $222; + $c$753 = $c$7$be; + } + } + } else { + $$122 = $$123; + $292 = $294; + $293 = $295; + $c$8 = $c$6$lcssa; + label = 72; + } + } while (0); + if ((label | 0) == 72) if ((HEAPU8[16493 + ($c$8 + 1) >> 0] | 0) >>> 0 < $$122 >>> 0) { + do { + $239 = HEAP32[$3 >> 2] | 0; + if ($239 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) { + HEAP32[$3 >> 2] = $239 + 1; + $c$9$be = HEAPU8[$239 >> 0] | 0; + } else $c$9$be = ___shgetc($f) | 0; + } while ((HEAPU8[16493 + ($c$9$be + 1) >> 0] | 0) >>> 0 < $$122 >>> 0); + $250 = ___errno_location() | 0; + HEAP32[$250 >> 2] = 34; + $260 = $1; + $262 = $0; + $neg$1 = ($0 & 1 | 0) == 0 & 0 == 0 ? $neg$0 : 0; + } else { + $260 = $293; + $262 = $292; + $neg$1 = $neg$0; + } + if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1; + if (!($260 >>> 0 < $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 < $0 >>> 0)) { + if (!(($0 & 1 | 0) != 0 | 0 != 0 | ($neg$1 | 0) != 0)) { + $271 = ___errno_location() | 0; + HEAP32[$271 >> 2] = 34; + $272 = _i64Add($0 | 0, $1 | 0, -1, -1) | 0; + $286 = tempRet0; + $287 = $272; + break; + } + if ($260 >>> 0 > $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 > $0 >>> 0) { + $279 = ___errno_location() | 0; + HEAP32[$279 >> 2] = 34; + $286 = $1; + $287 = $0; + break; + } + } + $281 = (($neg$1 | 0) < 0) << 31 >> 31; + $284 = _i64Subtract($262 ^ $neg$1 | 0, $260 ^ $281 | 0, $neg$1 | 0, $281 | 0) | 0; + $286 = tempRet0; + $287 = $284; + } while (0); + tempRet0 = $286; + return $287 | 0; +} + +function _dispose_chunk($p, $psize) { + $p = $p | 0; + $psize = $psize | 0; + var $$0 = 0, $$02 = 0, $$1 = 0, $$lcssa = 0, $$pre$phi50Z2D = 0, $$pre$phi52Z2D = 0, $$pre$phiZ2D = 0, $$sum18 = 0, $$sum21 = 0, $0 = 0, $10 = 0, $100 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0, $115 = 0, $123 = 0, $128 = 0, $129 = 0, $132 = 0, $134 = 0, $136 = 0, $149 = 0, $15 = 0, $154 = 0, $156 = 0, $159 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $2 = 0, $20 = 0, $201 = 0, $207 = 0, $22 = 0, $222 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $231 = 0, $232 = 0, $238 = 0, $243 = 0, $244 = 0, $247 = 0, $249 = 0, $252 = 0, $257 = 0, $263 = 0, $267 = 0, $268 = 0, $275 = 0, $287 = 0, $292 = 0, $299 = 0, $300 = 0, $301 = 0, $35 = 0, $40 = 0, $42 = 0, $45 = 0, $47 = 0, $5 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $62 = 0, $63 = 0, $68 = 0, $69 = 0, $78 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $99 = 0, $F16$0 = 0, $I19$0 = 0, $K20$043 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$042 = 0, $T$042$lcssa = 0; + $0 = $p + $psize | 0; + $2 = HEAP32[$p + 4 >> 2] | 0; + do if (!($2 & 1)) { + $5 = HEAP32[$p >> 2] | 0; + if (!($2 & 3)) return; + $9 = $p + (0 - $5) | 0; + $10 = $5 + $psize | 0; + $11 = HEAP32[760] | 0; + if ($9 >>> 0 < $11 >>> 0) _abort(); + if (($9 | 0) == (HEAP32[761] | 0)) { + $99 = $p + ($psize + 4) | 0; + $100 = HEAP32[$99 >> 2] | 0; + if (($100 & 3 | 0) != 3) { + $$0 = $9; + $$02 = $10; + break; + } + HEAP32[758] = $10; + HEAP32[$99 >> 2] = $100 & -2; + HEAP32[$p + (4 - $5) >> 2] = $10 | 1; + HEAP32[$0 >> 2] = $10; + return; + } + $15 = $5 >>> 3; + if ($5 >>> 0 < 256) { + $18 = HEAP32[$p + (8 - $5) >> 2] | 0; + $20 = HEAP32[$p + (12 - $5) >> 2] | 0; + $22 = 3064 + ($15 << 1 << 2) | 0; + if (($18 | 0) != ($22 | 0)) { + if ($18 >>> 0 < $11 >>> 0) _abort(); + if ((HEAP32[$18 + 12 >> 2] | 0) != ($9 | 0)) _abort(); + } + if (($20 | 0) == ($18 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $15); + $$0 = $9; + $$02 = $10; + break; + } + if (($20 | 0) == ($22 | 0)) $$pre$phi52Z2D = $20 + 8 | 0; else { + if ($20 >>> 0 < $11 >>> 0) _abort(); + $35 = $20 + 8 | 0; + if ((HEAP32[$35 >> 2] | 0) == ($9 | 0)) $$pre$phi52Z2D = $35; else _abort(); + } + HEAP32[$18 + 12 >> 2] = $20; + HEAP32[$$pre$phi52Z2D >> 2] = $18; + $$0 = $9; + $$02 = $10; + break; + } + $40 = HEAP32[$p + (24 - $5) >> 2] | 0; + $42 = HEAP32[$p + (12 - $5) >> 2] | 0; + do if (($42 | 0) == ($9 | 0)) { + $$sum18 = 16 - $5 | 0; + $53 = $p + ($$sum18 + 4) | 0; + $54 = HEAP32[$53 >> 2] | 0; + if (!$54) { + $56 = $p + $$sum18 | 0; + $57 = HEAP32[$56 >> 2] | 0; + if (!$57) { + $R$1 = 0; + break; + } else { + $R$0 = $57; + $RP$0 = $56; + } + } else { + $R$0 = $54; + $RP$0 = $53; + } + while (1) { + $59 = $R$0 + 20 | 0; + $60 = HEAP32[$59 >> 2] | 0; + if ($60) { + $R$0 = $60; + $RP$0 = $59; + continue; + } + $62 = $R$0 + 16 | 0; + $63 = HEAP32[$62 >> 2] | 0; + if (!$63) { + $R$0$lcssa = $R$0; + $RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $63; + $RP$0 = $62; + } + } + if ($RP$0$lcssa >>> 0 < $11 >>> 0) _abort(); else { + HEAP32[$RP$0$lcssa >> 2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $45 = HEAP32[$p + (8 - $5) >> 2] | 0; + if ($45 >>> 0 < $11 >>> 0) _abort(); + $47 = $45 + 12 | 0; + if ((HEAP32[$47 >> 2] | 0) != ($9 | 0)) _abort(); + $50 = $42 + 8 | 0; + if ((HEAP32[$50 >> 2] | 0) == ($9 | 0)) { + HEAP32[$47 >> 2] = $42; + HEAP32[$50 >> 2] = $45; + $R$1 = $42; + break; + } else _abort(); + } while (0); + if (!$40) { + $$0 = $9; + $$02 = $10; + } else { + $68 = HEAP32[$p + (28 - $5) >> 2] | 0; + $69 = 3328 + ($68 << 2) | 0; + if (($9 | 0) == (HEAP32[$69 >> 2] | 0)) { + HEAP32[$69 >> 2] = $R$1; + if (!$R$1) { + HEAP32[757] = HEAP32[757] & ~(1 << $68); + $$0 = $9; + $$02 = $10; + break; + } + } else { + if ($40 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $78 = $40 + 16 | 0; + if ((HEAP32[$78 >> 2] | 0) == ($9 | 0)) HEAP32[$78 >> 2] = $R$1; else HEAP32[$40 + 20 >> 2] = $R$1; + if (!$R$1) { + $$0 = $9; + $$02 = $10; + break; + } + } + $83 = HEAP32[760] | 0; + if ($R$1 >>> 0 < $83 >>> 0) _abort(); + HEAP32[$R$1 + 24 >> 2] = $40; + $$sum21 = 16 - $5 | 0; + $87 = HEAP32[$p + $$sum21 >> 2] | 0; + do if ($87) if ($87 >>> 0 < $83 >>> 0) _abort(); else { + HEAP32[$R$1 + 16 >> 2] = $87; + HEAP32[$87 + 24 >> 2] = $R$1; + break; + } while (0); + $93 = HEAP32[$p + ($$sum21 + 4) >> 2] | 0; + if (!$93) { + $$0 = $9; + $$02 = $10; + } else if ($93 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1 + 20 >> 2] = $93; + HEAP32[$93 + 24 >> 2] = $R$1; + $$0 = $9; + $$02 = $10; + break; + } + } + } else { + $$0 = $p; + $$02 = $psize; + } while (0); + $106 = HEAP32[760] | 0; + if ($0 >>> 0 < $106 >>> 0) _abort(); + $108 = $p + ($psize + 4) | 0; + $109 = HEAP32[$108 >> 2] | 0; + if (!($109 & 2)) { + if (($0 | 0) == (HEAP32[762] | 0)) { + $115 = (HEAP32[759] | 0) + $$02 | 0; + HEAP32[759] = $115; + HEAP32[762] = $$0; + HEAP32[$$0 + 4 >> 2] = $115 | 1; + if (($$0 | 0) != (HEAP32[761] | 0)) return; + HEAP32[761] = 0; + HEAP32[758] = 0; + return; + } + if (($0 | 0) == (HEAP32[761] | 0)) { + $123 = (HEAP32[758] | 0) + $$02 | 0; + HEAP32[758] = $123; + HEAP32[761] = $$0; + HEAP32[$$0 + 4 >> 2] = $123 | 1; + HEAP32[$$0 + $123 >> 2] = $123; + return; + } + $128 = ($109 & -8) + $$02 | 0; + $129 = $109 >>> 3; + do if ($109 >>> 0 < 256) { + $132 = HEAP32[$p + ($psize + 8) >> 2] | 0; + $134 = HEAP32[$p + ($psize + 12) >> 2] | 0; + $136 = 3064 + ($129 << 1 << 2) | 0; + if (($132 | 0) != ($136 | 0)) { + if ($132 >>> 0 < $106 >>> 0) _abort(); + if ((HEAP32[$132 + 12 >> 2] | 0) != ($0 | 0)) _abort(); + } + if (($134 | 0) == ($132 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $129); + break; + } + if (($134 | 0) == ($136 | 0)) $$pre$phi50Z2D = $134 + 8 | 0; else { + if ($134 >>> 0 < $106 >>> 0) _abort(); + $149 = $134 + 8 | 0; + if ((HEAP32[$149 >> 2] | 0) == ($0 | 0)) $$pre$phi50Z2D = $149; else _abort(); + } + HEAP32[$132 + 12 >> 2] = $134; + HEAP32[$$pre$phi50Z2D >> 2] = $132; + } else { + $154 = HEAP32[$p + ($psize + 24) >> 2] | 0; + $156 = HEAP32[$p + ($psize + 12) >> 2] | 0; + do if (($156 | 0) == ($0 | 0)) { + $167 = $p + ($psize + 20) | 0; + $168 = HEAP32[$167 >> 2] | 0; + if (!$168) { + $170 = $p + ($psize + 16) | 0; + $171 = HEAP32[$170 >> 2] | 0; + if (!$171) { + $R7$1 = 0; + break; + } else { + $R7$0 = $171; + $RP9$0 = $170; + } + } else { + $R7$0 = $168; + $RP9$0 = $167; + } + while (1) { + $173 = $R7$0 + 20 | 0; + $174 = HEAP32[$173 >> 2] | 0; + if ($174) { + $R7$0 = $174; + $RP9$0 = $173; + continue; + } + $176 = $R7$0 + 16 | 0; + $177 = HEAP32[$176 >> 2] | 0; + if (!$177) { + $R7$0$lcssa = $R7$0; + $RP9$0$lcssa = $RP9$0; + break; + } else { + $R7$0 = $177; + $RP9$0 = $176; + } + } + if ($RP9$0$lcssa >>> 0 < $106 >>> 0) _abort(); else { + HEAP32[$RP9$0$lcssa >> 2] = 0; + $R7$1 = $R7$0$lcssa; + break; + } + } else { + $159 = HEAP32[$p + ($psize + 8) >> 2] | 0; + if ($159 >>> 0 < $106 >>> 0) _abort(); + $161 = $159 + 12 | 0; + if ((HEAP32[$161 >> 2] | 0) != ($0 | 0)) _abort(); + $164 = $156 + 8 | 0; + if ((HEAP32[$164 >> 2] | 0) == ($0 | 0)) { + HEAP32[$161 >> 2] = $156; + HEAP32[$164 >> 2] = $159; + $R7$1 = $156; + break; + } else _abort(); + } while (0); + if ($154) { + $182 = HEAP32[$p + ($psize + 28) >> 2] | 0; + $183 = 3328 + ($182 << 2) | 0; + if (($0 | 0) == (HEAP32[$183 >> 2] | 0)) { + HEAP32[$183 >> 2] = $R7$1; + if (!$R7$1) { + HEAP32[757] = HEAP32[757] & ~(1 << $182); + break; + } + } else { + if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $192 = $154 + 16 | 0; + if ((HEAP32[$192 >> 2] | 0) == ($0 | 0)) HEAP32[$192 >> 2] = $R7$1; else HEAP32[$154 + 20 >> 2] = $R7$1; + if (!$R7$1) break; + } + $197 = HEAP32[760] | 0; + if ($R7$1 >>> 0 < $197 >>> 0) _abort(); + HEAP32[$R7$1 + 24 >> 2] = $154; + $201 = HEAP32[$p + ($psize + 16) >> 2] | 0; + do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else { + HEAP32[$R7$1 + 16 >> 2] = $201; + HEAP32[$201 + 24 >> 2] = $R7$1; + break; + } while (0); + $207 = HEAP32[$p + ($psize + 20) >> 2] | 0; + if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R7$1 + 20 >> 2] = $207; + HEAP32[$207 + 24 >> 2] = $R7$1; + break; + } + } + } while (0); + HEAP32[$$0 + 4 >> 2] = $128 | 1; + HEAP32[$$0 + $128 >> 2] = $128; + if (($$0 | 0) == (HEAP32[761] | 0)) { + HEAP32[758] = $128; + return; + } else $$1 = $128; + } else { + HEAP32[$108 >> 2] = $109 & -2; + HEAP32[$$0 + 4 >> 2] = $$02 | 1; + HEAP32[$$0 + $$02 >> 2] = $$02; + $$1 = $$02; + } + $222 = $$1 >>> 3; + if ($$1 >>> 0 < 256) { + $224 = $222 << 1; + $225 = 3064 + ($224 << 2) | 0; + $226 = HEAP32[756] | 0; + $227 = 1 << $222; + if (!($226 & $227)) { + HEAP32[756] = $226 | $227; + $$pre$phiZ2D = 3064 + ($224 + 2 << 2) | 0; + $F16$0 = $225; + } else { + $231 = 3064 + ($224 + 2 << 2) | 0; + $232 = HEAP32[$231 >> 2] | 0; + if ($232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + $$pre$phiZ2D = $231; + $F16$0 = $232; + } + } + HEAP32[$$pre$phiZ2D >> 2] = $$0; + HEAP32[$F16$0 + 12 >> 2] = $$0; + HEAP32[$$0 + 8 >> 2] = $F16$0; + HEAP32[$$0 + 12 >> 2] = $225; + return; + } + $238 = $$1 >>> 8; + if (!$238) $I19$0 = 0; else if ($$1 >>> 0 > 16777215) $I19$0 = 31; else { + $243 = ($238 + 1048320 | 0) >>> 16 & 8; + $244 = $238 << $243; + $247 = ($244 + 520192 | 0) >>> 16 & 4; + $249 = $244 << $247; + $252 = ($249 + 245760 | 0) >>> 16 & 2; + $257 = 14 - ($247 | $243 | $252) + ($249 << $252 >>> 15) | 0; + $I19$0 = $$1 >>> ($257 + 7 | 0) & 1 | $257 << 1; + } + $263 = 3328 + ($I19$0 << 2) | 0; + HEAP32[$$0 + 28 >> 2] = $I19$0; + HEAP32[$$0 + 20 >> 2] = 0; + HEAP32[$$0 + 16 >> 2] = 0; + $267 = HEAP32[757] | 0; + $268 = 1 << $I19$0; + if (!($267 & $268)) { + HEAP32[757] = $267 | $268; + HEAP32[$263 >> 2] = $$0; + HEAP32[$$0 + 24 >> 2] = $263; + HEAP32[$$0 + 12 >> 2] = $$0; + HEAP32[$$0 + 8 >> 2] = $$0; + return; + } + $275 = HEAP32[$263 >> 2] | 0; + L191 : do if ((HEAP32[$275 + 4 >> 2] & -8 | 0) == ($$1 | 0)) $T$0$lcssa = $275; else { + $K20$043 = $$1 << (($I19$0 | 0) == 31 ? 0 : 25 - ($I19$0 >>> 1) | 0); + $T$042 = $275; + while (1) { + $292 = $T$042 + 16 + ($K20$043 >>> 31 << 2) | 0; + $287 = HEAP32[$292 >> 2] | 0; + if (!$287) { + $$lcssa = $292; + $T$042$lcssa = $T$042; + break; + } + if ((HEAP32[$287 + 4 >> 2] & -8 | 0) == ($$1 | 0)) { + $T$0$lcssa = $287; + break L191; + } else { + $K20$043 = $K20$043 << 1; + $T$042 = $287; + } + } + if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + HEAP32[$$lcssa >> 2] = $$0; + HEAP32[$$0 + 24 >> 2] = $T$042$lcssa; + HEAP32[$$0 + 12 >> 2] = $$0; + HEAP32[$$0 + 8 >> 2] = $$0; + return; + } while (0); + $299 = $T$0$lcssa + 8 | 0; + $300 = HEAP32[$299 >> 2] | 0; + $301 = HEAP32[760] | 0; + if (!($300 >>> 0 >= $301 >>> 0 & $T$0$lcssa >>> 0 >= $301 >>> 0)) _abort(); + HEAP32[$300 + 12 >> 2] = $$0; + HEAP32[$299 >> 2] = $$0; + HEAP32[$$0 + 8 >> 2] = $300; + HEAP32[$$0 + 12 >> 2] = $T$0$lcssa; + HEAP32[$$0 + 24 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i15 = 0, $$0$i$i$i7 = 0, $$0$i$i$i9 = 0, $$0$i$i58 = 0, $$lcssa81 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $114 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $120 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $135 = 0, $138 = 0, $141 = 0, $148 = 0, $15 = 0, $150 = 0, $157 = 0, $158 = 0, $167 = 0, $168 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $190 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $30 = 0, $33 = 0, $4 = 0, $41 = 0, $42 = 0, $43 = 0, $46 = 0, $49 = 0, $56 = 0, $58 = 0, $61 = 0, $62 = 0, $64 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $78 = 0, $80 = 0, $83 = 0, $84 = 0, $89 = 0, $91 = 0, $__p$0$i$i57 = 0, $__p$0$ph$i$i = 0, $__v$i$i13 = 0, $isdigittmp = 0, $isdigittmp4 = 0, $sub$061 = 0, $sub$061$lcssa = 0, $t1$060 = 0, $t1$060$lcssa = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i13 = sp + 64 | 0; + $0 = sp + 40 | 0; + $1 = sp + 16 | 0; + $2 = sp; + $4 = $first; + L1 : do if (($last - $4 | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 84) { + $10 = HEAP8[$first + 1 >> 0] | 0; + if ($10 << 24 >> 24 == 95) { + $15 = HEAP32[$db + 36 >> 2] | 0; + if ((HEAP32[$db + 32 >> 2] | 0) == ($15 | 0)) { + $$0 = $first; + break; + } + $18 = HEAP32[$15 + -16 >> 2] | 0; + if (($18 | 0) == (HEAP32[$15 + -12 >> 2] | 0)) { + HEAP8[$0 >> 0] = 4; + $56 = $0 + 1 | 0; + HEAP8[$56 >> 0] = 84; + HEAP8[$56 + 1 >> 0] = 95; + HEAP8[$0 + 3 >> 0] = 0; + $58 = $0 + 12 | 0; + HEAP32[$58 >> 2] = 0; + HEAP32[$58 + 4 >> 2] = 0; + HEAP32[$58 + 8 >> 2] = 0; + $61 = $db + 4 | 0; + $62 = HEAP32[$61 >> 2] | 0; + $64 = HEAP32[$db + 8 >> 2] | 0; + if ($62 >>> 0 < $64 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($62, $0); + HEAP32[$61 >> 2] = (HEAP32[$61 >> 2] | 0) + 24; + } else { + $71 = HEAP32[$db >> 2] | 0; + $72 = $62 - $71 | 0; + $73 = ($72 | 0) / 24 | 0; + $74 = $73 + 1 | 0; + if (($72 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $78 = ($64 - $71 | 0) / 24 | 0; + if ($78 >>> 0 < 1073741823) { + $80 = $78 << 1; + $$0$i$i$i9 = $80 >>> 0 < $74 >>> 0 ? $74 : $80; + } else $$0$i$i$i9 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i9, $73, $db + 12 | 0); + $83 = $__v$i$i13 + 8 | 0; + $84 = HEAP32[$83 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($84, $0); + HEAP32[$83 >> 2] = $84 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + HEAP8[$db + 62 >> 0] = 1; + $$0 = $first + 2 | 0; + break; + } + $22 = HEAP32[$18 >> 2] | 0; + $24 = HEAP32[$18 + 4 >> 2] | 0; + $25 = $db + 4 | 0; + $26 = $db + 8 | 0; + $27 = $db + 12 | 0; + $28 = $__v$i$i13 + 8 | 0; + L20 : do if (($22 | 0) != ($24 | 0)) { + $33 = $22; + while (1) { + $30 = HEAP32[$25 >> 2] | 0; + if (($30 | 0) == (HEAP32[$26 >> 2] | 0)) { + $41 = $30 - (HEAP32[$db >> 2] | 0) | 0; + $42 = ($41 | 0) / 24 | 0; + $43 = $42 + 1 | 0; + if (($41 | 0) < -24) break; + if ($42 >>> 0 < 1073741823) { + $46 = $42 << 1; + $$0$i$i$i7 = $46 >>> 0 < $43 >>> 0 ? $43 : $46; + } else $$0$i$i$i7 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i7, $42, $27); + $49 = HEAP32[$28 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49, $33); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49 + 12 | 0, $33 + 12 | 0); + HEAP32[$28 >> 2] = $49 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30, $33); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30 + 12 | 0, $33 + 12 | 0); + HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 24; + } + $33 = $33 + 24 | 0; + if (($33 | 0) == ($24 | 0)) break L20; + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + } while (0); + $$0 = $first + 2 | 0; + break; + } + $isdigittmp = ($10 << 24 >> 24) + -48 | 0; + if ($isdigittmp >>> 0 < 10) { + $89 = $first + 2 | 0; + if (($89 | 0) == ($last | 0)) $$0 = $first; else { + $sub$061 = $isdigittmp; + $t1$060 = $89; + while (1) { + $91 = HEAP8[$t1$060 >> 0] | 0; + $isdigittmp4 = ($91 << 24 >> 24) + -48 | 0; + if ($isdigittmp4 >>> 0 >= 10) { + $$lcssa81 = $91; + $sub$061$lcssa = $sub$061; + $t1$060$lcssa = $t1$060; + break; + } + $t1$060 = $t1$060 + 1 | 0; + if (($t1$060 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } else $sub$061 = $isdigittmp4 + ($sub$061 * 10 | 0) | 0; + } + if ($$lcssa81 << 24 >> 24 == 95) { + $101 = HEAP32[$db + 36 >> 2] | 0; + if ((HEAP32[$db + 32 >> 2] | 0) == ($101 | 0)) $$0 = $first; else { + $103 = $sub$061$lcssa + 1 | 0; + $107 = HEAP32[$101 + -16 >> 2] | 0; + if ($103 >>> 0 < (HEAP32[$101 + -12 >> 2] | 0) - $107 >> 4 >>> 0) { + $114 = HEAP32[$107 + ($103 << 4) >> 2] | 0; + $116 = HEAP32[$107 + ($103 << 4) + 4 >> 2] | 0; + $117 = $db + 4 | 0; + $118 = $db + 8 | 0; + $119 = $db + 12 | 0; + $120 = $__v$i$i13 + 8 | 0; + L43 : do if (($114 | 0) != ($116 | 0)) { + $125 = $114; + while (1) { + $122 = HEAP32[$117 >> 2] | 0; + if (($122 | 0) == (HEAP32[$118 >> 2] | 0)) { + $133 = $122 - (HEAP32[$db >> 2] | 0) | 0; + $134 = ($133 | 0) / 24 | 0; + $135 = $134 + 1 | 0; + if (($133 | 0) < -24) break; + if ($134 >>> 0 < 1073741823) { + $138 = $134 << 1; + $$0$i$i$i15 = $138 >>> 0 < $135 >>> 0 ? $135 : $138; + } else $$0$i$i$i15 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i15, $134, $119); + $141 = HEAP32[$120 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141, $125); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141 + 12 | 0, $125 + 12 | 0); + HEAP32[$120 >> 2] = $141 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13); + } else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122, $125); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122 + 12 | 0, $125 + 12 | 0); + HEAP32[$117 >> 2] = (HEAP32[$117 >> 2] | 0) + 24; + } + $125 = $125 + 24 | 0; + if (($125 | 0) == ($116 | 0)) break L43; + } + __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + } while (0); + $$0 = $t1$060$lcssa + 1 | 0; + break; + } + $148 = $t1$060$lcssa + 1 | 0; + $150 = $148 - $4 | 0; + if ($150 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2); + if ($150 >>> 0 < 11) { + HEAP8[$2 >> 0] = $150 << 1; + $__p$0$ph$i$i = $2 + 1 | 0; + } else { + $157 = $150 + 16 & -16; + $158 = _malloc($157) | 0; + HEAP32[$2 + 8 >> 2] = $158; + HEAP32[$2 >> 2] = $157 | 1; + HEAP32[$2 + 4 >> 2] = $150; + $__p$0$ph$i$i = $158; + } + if (($148 | 0) != ($first | 0)) { + $$0$i$i58 = $first; + $__p$0$i$i57 = $__p$0$ph$i$i; + while (1) { + HEAP8[$__p$0$i$i57 >> 0] = HEAP8[$$0$i$i58 >> 0] | 0; + if (($$0$i$i58 | 0) == ($t1$060$lcssa | 0)) break; else { + $$0$i$i58 = $$0$i$i58 + 1 | 0; + $__p$0$i$i57 = $__p$0$i$i57 + 1 | 0; + } + } + } + HEAP8[$__p$0$ph$i$i + $150 >> 0] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2); + $167 = $db + 4 | 0; + $168 = HEAP32[$167 >> 2] | 0; + $170 = HEAP32[$db + 8 >> 2] | 0; + if ($168 >>> 0 < $170 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $1); + HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24; + } else { + $177 = HEAP32[$db >> 2] | 0; + $178 = $168 - $177 | 0; + $179 = ($178 | 0) / 24 | 0; + $180 = $179 + 1 | 0; + if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $184 = ($170 - $177 | 0) / 24 | 0; + if ($184 >>> 0 < 1073741823) { + $186 = $184 << 1; + $$0$i$i$i = $186 >>> 0 < $180 >>> 0 ? $180 : $186; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i, $179, $db + 12 | 0); + $189 = $__v$i$i13 + 8 | 0; + $190 = HEAP32[$189 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $1); + HEAP32[$189 >> 2] = $190 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + HEAP8[$db + 62 >> 0] = 1; + $$0 = $148; + } + } else $$0 = $first; + } + } else $$0 = $first; + } else $$0 = $first; else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _get_matrix_code($data, $size, $code_out_p, $dir, $cf, $matrixCodeType, $errorCorrected) { + $data = $data | 0; + $size = $size | 0; + $code_out_p = $code_out_p | 0; + $dir = $dir | 0; + $cf = $cf | 0; + $matrixCodeType = $matrixCodeType | 0; + $errorCorrected = $errorCorrected | 0; + var $$ = 0, $$0 = 0, $$lcssa115 = 0, $$max$0 = 0, $$max$0$1 = 0, $$max$0$2 = 0, $1 = 0, $10 = 0, $100 = 0, $102 = 0, $103 = 0, $108 = 0, $109 = 0, $110 = 0, $120 = 0, $121 = 0, $122 = 0, $124 = 0, $125 = 0, $126 = 0, $130 = 0, $140 = 0, $144 = 0, $145 = 0, $146 = 0, $157 = 0, $158 = 0, $16 = 0, $163 = 0, $164 = 0, $165 = 0, $169 = 0, $182 = 0, $183 = 0, $184 = 0, $187 = 0, $193 = 0, $194 = 0, $197 = 0, $2 = 0, $206 = 0, $207 = 0, $211 = 0, $22 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $28 = 0, $31 = 0, $32 = 0, $36 = 0, $4 = 0, $70 = 0, $83 = 0, $85 = 0, $86 = 0, $96 = 0, $98 = 0, $code = 0, $contrastMin$0$lcssa = 0, $contrastMin$098 = 0, $contrastMin$1 = 0, $corner = 0, $dirCode = 0, $exitcond64 = 0, $i$2102 = 0, $i$2102$lcssa = 0, $i$399 = 0, $i$465 = 0, $i$576 = 0, $i$680 = 0, $i$794 = 0, $j$067 = 0, $j$171 = 0, $j$285 = 0, $j$389 = 0, $min$1 = 0, $min$1$1 = 0, $min$1$2 = 0, $or$cond734 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $dirCode = sp + 24 | 0; + $corner = sp + 8 | 0; + $code = sp; + L1 : do if (($size + -3 | 0) >>> 0 > 5) { + HEAP32[$code_out_p >> 2] = -1; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -1; + } else { + HEAP32[$corner >> 2] = 0; + $1 = $size + -1 | 0; + $2 = Math_imul($1, $size) | 0; + HEAP32[$corner + 4 >> 2] = $2; + $4 = Math_imul($size, $size) | 0; + HEAP32[$corner + 8 >> 2] = $4 + -1; + HEAP32[$corner + 12 >> 2] = $1; + $10 = HEAP8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0; + $$max$0 = ($10 & 255) > 0 ? $10 : 0; + $min$1 = ($10 & 255) < 255 ? $10 : -1; + $16 = HEAP8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0; + $$max$0$1 = ($16 & 255) > ($$max$0 & 255) ? $16 : $$max$0; + $min$1$1 = ($16 & 255) < ($min$1 & 255) ? $16 : $min$1; + $22 = HEAP8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0; + $$max$0$2 = ($22 & 255) > ($$max$0$1 & 255) ? $22 : $$max$0$1; + $min$1$2 = ($22 & 255) < ($min$1$1 & 255) ? $22 : $min$1$1; + $28 = HEAP8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0; + $31 = (($28 & 255) > ($$max$0$2 & 255) ? $28 : $$max$0$2) & 255; + $32 = (($28 & 255) < ($min$1$2 & 255) ? $28 : $min$1$2) & 255; + if (($31 - $32 | 0) < 30) { + HEAP32[$code_out_p >> 2] = -1; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -2; + break; + } + $36 = ($31 + $32 | 0) >>> 1; + HEAP8[$dirCode >> 0] = (HEAPU8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1; + HEAP8[$dirCode + 1 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1; + HEAP8[$dirCode + 2 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1; + HEAP8[$dirCode + 3 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1; + $i$2102 = 0; + while (1) { + $70 = $i$2102 + 1 | 0; + if ((HEAP8[$dirCode + $i$2102 >> 0] | 0) == 1) if ((HEAP8[$dirCode + (($70 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode + (($i$2102 + 2 | 0) % 4 | 0) >> 0] | 0)) { + $i$2102$lcssa = $i$2102; + label = 10; + break; + } + if (($70 | 0) < 4) $i$2102 = $70; else { + $$lcssa115 = $70; + label = 12; + break; + } + } + if ((label | 0) == 10) HEAP32[$dir >> 2] = $i$2102$lcssa; else if ((label | 0) == 12) if (($$lcssa115 | 0) == 4) { + HEAP32[$code_out_p >> 2] = -1; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -3; + break; + } + if (!$4) $contrastMin$0$lcssa = 255; else { + $contrastMin$098 = 255; + $i$399 = 0; + while (1) { + $83 = $data + $i$399 | 0; + $85 = HEAPU8[$83 >> 0] | 0; + $86 = $85 - $36 | 0; + $$ = ($86 | 0) < 0 ? 0 - $86 | 0 : $86; + $contrastMin$1 = ($$ | 0) < ($contrastMin$098 | 0) ? $$ : $contrastMin$098; + HEAP8[$83 >> 0] = $85 >>> 0 < $36 >>> 0 & 1; + $i$399 = $i$399 + 1 | 0; + if (($i$399 | 0) >= ($4 | 0)) { + $contrastMin$0$lcssa = $contrastMin$1; + break; + } else $contrastMin$098 = $contrastMin$1; + } + } + switch (HEAP32[$dir >> 2] | 0) { + case 0: + { + if (($size | 0) > 0) { + $exitcond64 = ($size | 0) == 0; + $227 = 0; + $228 = 0; + $j$067 = 0; + while (1) { + $102 = ($j$067 | 0) == ($1 | 0); + $103 = Math_imul($j$067, $size) | 0; + if ($exitcond64) { + $229 = $227; + $230 = $228; + } else { + $108 = $227; + $109 = $228; + $i$465 = 0; + while (1) { + if (!($i$465 | $j$067)) { + $231 = $108; + $232 = $109; + } else if ($102 & (($i$465 | 0) == 0 | ($i$465 | 0) == ($1 | 0))) { + $231 = $108; + $232 = $109; + } else { + $110 = _bitshift64Shl($108 | 0, $109 | 0, 1) | 0; + $231 = (HEAP8[$data + ($i$465 + $103) >> 0] | 0) != 0 | $110; + $232 = tempRet0; + } + $i$465 = $i$465 + 1 | 0; + if (($i$465 | 0) == ($size | 0)) { + $229 = $231; + $230 = $232; + break; + } else { + $108 = $231; + $109 = $232; + } + } + } + $j$067 = $j$067 + 1 | 0; + if (($j$067 | 0) >= ($size | 0)) { + $182 = $229; + $206 = $230; + break; + } else { + $227 = $229; + $228 = $230; + } + } + } else { + $182 = 0; + $206 = 0; + } + break; + } + case 1: + { + if (($size | 0) > 0) { + $100 = ($size | 0) > 0; + $225 = 0; + $226 = 0; + $i$576 = 0; + while (1) { + $120 = ($i$576 | 0) == 0; + $121 = ($i$576 | 0) == ($1 | 0); + if ($100) { + $124 = $225; + $125 = $226; + $j$171 = $1; + while (1) { + $122 = ($j$171 | 0) == ($1 | 0); + if ($120 & $122) { + $235 = $124; + $236 = $125; + } else if ($121 & ($122 | ($j$171 | 0) == 0)) { + $235 = $124; + $236 = $125; + } else { + $126 = _bitshift64Shl($124 | 0, $125 | 0, 1) | 0; + $130 = $data + ((Math_imul($j$171, $size) | 0) + $i$576) | 0; + $235 = (HEAP8[$130 >> 0] | 0) != 0 | $126; + $236 = tempRet0; + } + if (($j$171 | 0) > 0) { + $124 = $235; + $125 = $236; + $j$171 = $j$171 + -1 | 0; + } else { + $233 = $235; + $234 = $236; + break; + } + } + } else { + $233 = $225; + $234 = $226; + } + $i$576 = $i$576 + 1 | 0; + if (($i$576 | 0) >= ($size | 0)) { + $182 = $233; + $206 = $234; + break; + } else { + $225 = $233; + $226 = $234; + } + } + } else { + $182 = 0; + $206 = 0; + } + break; + } + case 2: + { + if (($size | 0) > 0) { + $98 = ($size | 0) > 0; + $223 = 0; + $224 = 0; + $j$285 = $1; + while (1) { + $or$cond734 = ($j$285 | 0) == ($1 | 0) | ($j$285 | 0) == 0; + $140 = Math_imul($j$285, $size) | 0; + if ($98) { + $144 = $223; + $145 = $224; + $i$680 = $1; + while (1) { + if ($or$cond734 & ($i$680 | 0) == ($1 | 0) | ($i$680 | $j$285 | 0) == 0) { + $239 = $144; + $240 = $145; + } else { + $146 = _bitshift64Shl($144 | 0, $145 | 0, 1) | 0; + $239 = (HEAP8[$data + ($i$680 + $140) >> 0] | 0) != 0 | $146; + $240 = tempRet0; + } + if (($i$680 | 0) > 0) { + $144 = $239; + $145 = $240; + $i$680 = $i$680 + -1 | 0; + } else { + $237 = $239; + $238 = $240; + break; + } + } + } else { + $237 = $223; + $238 = $224; + } + if (($j$285 | 0) > 0) { + $223 = $237; + $224 = $238; + $j$285 = $j$285 + -1 | 0; + } else { + $182 = $237; + $206 = $238; + break; + } + } + } else { + $182 = 0; + $206 = 0; + } + break; + } + case 3: + { + if (($size | 0) > 0) { + $96 = ($size | 0) > 0; + $221 = 0; + $222 = 0; + $i$794 = $1; + while (1) { + $157 = ($i$794 | 0) == ($1 | 0); + $158 = ($i$794 | 0) == 0; + if ($96) { + $163 = $221; + $164 = $222; + $j$389 = 0; + while (1) { + if ($157 & ($j$389 | 0) == 0 | ($j$389 | $i$794 | 0) == 0 | $158 & ($j$389 | 0) == ($1 | 0)) { + $243 = $163; + $244 = $164; + } else { + $165 = _bitshift64Shl($163 | 0, $164 | 0, 1) | 0; + $169 = $data + ((Math_imul($j$389, $size) | 0) + $i$794) | 0; + $243 = (HEAP8[$169 >> 0] | 0) != 0 | $165; + $244 = tempRet0; + } + $j$389 = $j$389 + 1 | 0; + if (($j$389 | 0) >= ($size | 0)) { + $241 = $243; + $242 = $244; + break; + } else { + $163 = $243; + $164 = $244; + } + } + } else { + $241 = $221; + $242 = $222; + } + if (($i$794 | 0) > 0) { + $221 = $241; + $222 = $242; + $i$794 = $i$794 + -1 | 0; + } else { + $182 = $241; + $206 = $242; + break; + } + } + } else { + $182 = 0; + $206 = 0; + } + break; + } + default: + { + $182 = 0; + $206 = 0; + } + } + HEAPF64[$cf >> 3] = ($contrastMin$0$lcssa | 0) > 30 ? 1.0 : +($contrastMin$0$lcssa | 0) / 30.0; + switch ($matrixCodeType | 0) { + case 259: + { + $183 = HEAP8[4551 + $182 >> 0] | 0; + $184 = $183 << 24 >> 24; + $187 = $code; + HEAP32[$187 >> 2] = $184; + HEAP32[$187 + 4 >> 2] = (($184 | 0) < 0) << 31 >> 31; + if ($183 << 24 >> 24 < 0) { + HEAP32[$code_out_p >> 2] = -1; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -4; + break L1; + } + break; + } + case 515: + { + $193 = HEAP8[4423 + $182 >> 0] | 0; + $194 = $193 << 24 >> 24; + $197 = $code; + HEAP32[$197 >> 2] = $194; + HEAP32[$197 + 4 >> 2] = (($194 | 0) < 0) << 31 >> 31; + if ($errorCorrected) HEAP32[$errorCorrected >> 2] = HEAPU8[4487 + $182 >> 0]; + if ($193 << 24 >> 24 < 0) { + HEAP32[$code_out_p >> 2] = -1; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -4; + break L1; + } + break; + } + case 772: + case 1028: + { + $207 = _decode_bch($matrixCodeType, $182, $206, 0, $code) | 0; + if (($207 | 0) < 0) { + HEAP32[$code_out_p >> 2] = -1; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -4; + break L1; + } + if (($errorCorrected | 0) != 0 & ($207 | 0) > 0) HEAP32[$errorCorrected >> 2] = $207; + break; + } + default: + { + $211 = $code; + HEAP32[$211 >> 2] = $182; + HEAP32[$211 + 4 >> 2] = $206; + } + } + HEAP32[$code_out_p >> 2] = HEAP32[$code >> 2]; + $$0 = 0; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _decode_bch($matrixCodeType, $0, $1, $recd127, $out_p) { + $matrixCodeType = $matrixCodeType | 0; + $0 = $0 | 0; + $1 = $1 | 0; + $recd127 = $recd127 | 0; + $out_p = $out_p | 0; + var $$ = 0, $$0 = 0, $$lcssa24 = 0, $$lcssa76 = 0, $$lcssa77 = 0, $$pre$phi$lcssaZ2D = 0, $$pre$phiZ2D = 0, $$sink = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $11 = 0, $110 = 0, $114 = 0, $118 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $143 = 0, $154 = 0, $155 = 0, $156 = 0, $159 = 0, $17 = 0, $175 = 0, $182 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $20 = 0, $208 = 0, $209 = 0, $28 = 0, $3 = 0, $30 = 0, $41 = 0, $43 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $58 = 0, $6 = 0, $71 = 0, $73 = 0, $74 = 0, $76 = 0, $78 = 0, $79 = 0, $86 = 0, $alpha_to$0 = 0, $count$036 = 0, $count$1 = 0, $count$1$lcssa = 0, $d = 0, $elp = 0, $i$066 = 0, $i$1035 = 0, $i$1130 = 0, $i$1228 = 0, $i$159 = 0, $i$254 = 0, $i$347 = 0, $i$441 = 0, $i$543 = 0, $i$645 = 0, $i$750 = 0, $i$839 = 0, $i$937 = 0, $index_of$0 = 0, $j$058 = 0, $j$1 = 0, $j$232 = 0, $k$0 = 0, $k$1 = 0, $l = 0, $length$0 = 0, $loc = 0, $n$0 = 0, $q$0 = 0, $q$1 = 0, $q$2 = 0, $q$3 = 0, $q$4$lcssa = 0, $q$433 = 0, $q$5 = 0, $recd$0 = 0, $recd15 = 0, $reg = 0, $s = 0, $syn_error$0$ = 0, $syn_error$0$$lcssa = 0, $syn_error$060 = 0, $t$0 = 0, $t$1 = 0, $u$0 = 0, $u$1 = 0, $u_lu = 0, label = 0, sp = 0, $j$1$looptemp = 0, $u$0$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 2320 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $recd15 = sp + 2304 | 0; + $elp = sp + 864 | 0; + $d = sp + 784 | 0; + $l = sp + 704 | 0; + $u_lu = sp + 624 | 0; + $s = sp + 548 | 0; + $loc = sp + 40 | 0; + $reg = sp; + switch ($matrixCodeType | 0) { + case 772: + { + $k$0 = 9; + $t$0 = 1; + label = 3; + break; + } + case 1028: + { + $k$0 = 5; + $t$0 = 2; + label = 3; + break; + } + case 2830: + { + $alpha_to$0 = 900; + $index_of$0 = 1472; + $k$1 = 64; + $length$0 = 120; + $n$0 = 127; + $recd$0 = $recd127; + $t$1 = 9; + label = 6; + break; + } + default: + $$0 = -1; + } + if ((label | 0) == 3) { + $3 = $0; + $6 = $1; + $i$066 = 0; + while (1) { + HEAP8[$recd15 + $i$066 >> 0] = $3 & 1; + $3 = _bitshift64Lshr($3 | 0, $6 | 0, 1) | 0; + $i$066 = $i$066 + 1 | 0; + if (($i$066 | 0) == 13) break; else $6 = tempRet0; + } + $alpha_to$0 = 840; + $index_of$0 = 1408; + $k$1 = $k$0; + $length$0 = 13; + $n$0 = 15; + $recd$0 = $recd15; + $t$1 = $t$0; + label = 6; + } + do if ((label | 0) == 6) { + $10 = $t$1 << 1; + $i$159 = 1; + $syn_error$060 = 0; + while (1) { + $11 = $s + ($i$159 << 2) | 0; + HEAP32[$11 >> 2] = 0; + $20 = 0; + $j$058 = 0; + while (1) { + if (!(HEAP8[$recd$0 + $j$058 >> 0] | 0)) $208 = $20; else { + $17 = $alpha_to$0 + (((Math_imul($j$058, $i$159) | 0) % ($n$0 | 0) | 0) << 2) | 0; + $19 = $20 ^ HEAP32[$17 >> 2]; + HEAP32[$11 >> 2] = $19; + $208 = $19; + } + $j$058 = $j$058 + 1 | 0; + if (($j$058 | 0) >= ($length$0 | 0)) { + $$lcssa77 = $208; + break; + } else $20 = $208; + } + $syn_error$0$ = ($$lcssa77 | 0) == 0 ? $syn_error$060 : 1; + HEAP32[$11 >> 2] = HEAP32[$index_of$0 + ($$lcssa77 << 2) >> 2]; + if (($i$159 | 0) < ($10 | 0)) { + $i$159 = $i$159 + 1 | 0; + $syn_error$060 = $syn_error$0$; + } else { + $syn_error$0$$lcssa = $syn_error$0$; + break; + } + } + $28 = ($syn_error$0$$lcssa | 0) != 0; + if ($28) { + HEAP32[$d >> 2] = 0; + $30 = HEAP32[$s + 4 >> 2] | 0; + HEAP32[$d + 4 >> 2] = $30; + HEAP32[$elp >> 2] = 0; + HEAP32[$elp + 72 >> 2] = 1; + if (($10 | 0) > 1) { + $i$254 = 1; + do { + HEAP32[$elp + ($i$254 << 2) >> 2] = -1; + HEAP32[$elp + 72 + ($i$254 << 2) >> 2] = 0; + $i$254 = $i$254 + 1 | 0; + } while (($i$254 | 0) < ($10 | 0)); + } + HEAP32[$l >> 2] = 0; + HEAP32[$l + 4 >> 2] = 0; + HEAP32[$u_lu >> 2] = -1; + HEAP32[$u_lu + 4 >> 2] = 0; + $43 = $30; + $46 = 0; + $u$0 = 0; + while (1) { + $u$0$looptemp = $u$0; + $u$0 = $u$0 + 1 | 0; + $41 = $d + ($u$0 << 2) | 0; + if (($43 | 0) == -1) { + $44 = $u$0$looptemp + 2 | 0; + HEAP32[$l + ($44 << 2) >> 2] = $46; + if (($46 | 0) < 0) { + $$pre$phiZ2D = $44; + $110 = $46; + } else { + $i$347 = 0; + while (1) { + $48 = $elp + ($u$0 * 72 | 0) + ($i$347 << 2) | 0; + $49 = HEAP32[$48 >> 2] | 0; + HEAP32[$elp + ($44 * 72 | 0) + ($i$347 << 2) >> 2] = $49; + HEAP32[$48 >> 2] = HEAP32[$index_of$0 + ($49 << 2) >> 2]; + if (($i$347 | 0) < ($46 | 0)) $i$347 = $i$347 + 1 | 0; else { + $$pre$phiZ2D = $44; + $110 = $46; + break; + } + } + } + } else { + $q$0 = $u$0$looptemp; + while (1) { + $58 = ($q$0 | 0) > 0; + if ($58 & (HEAP32[$d + ($q$0 << 2) >> 2] | 0) == -1) $q$0 = $q$0 + -1 | 0; else break; + } + if ($58) { + $j$1 = $q$0; + $q$1 = $q$0; + while (1) { + $j$1$looptemp = $j$1; + $j$1 = $j$1 + -1 | 0; + if ((HEAP32[$d + ($j$1 << 2) >> 2] | 0) == -1) $q$2 = $q$1; else $q$2 = (HEAP32[$u_lu + ($q$1 << 2) >> 2] | 0) < (HEAP32[$u_lu + ($j$1 << 2) >> 2] | 0) ? $j$1 : $q$1; + if (($j$1$looptemp | 0) <= 1) { + $q$3 = $q$2; + break; + } else $q$1 = $q$2; + } + } else $q$3 = $q$0; + $71 = $l + ($q$3 << 2) | 0; + $73 = $u$0 - $q$3 | 0; + $74 = $73 + (HEAP32[$71 >> 2] | 0) | 0; + $76 = $u$0$looptemp + 2 | 0; + $$ = ($46 | 0) > ($74 | 0) ? $46 : $74; + HEAP32[$l + ($76 << 2) >> 2] = $$; + $i$441 = 0; + do { + HEAP32[$elp + ($76 * 72 | 0) + ($i$441 << 2) >> 2] = 0; + $i$441 = $i$441 + 1 | 0; + } while (($i$441 | 0) < ($10 | 0)); + $78 = HEAP32[$71 >> 2] | 0; + $79 = $d + ($q$3 << 2) | 0; + if (($78 | 0) >= 0) { + $i$543 = 0; + while (1) { + $86 = HEAP32[$elp + ($q$3 * 72 | 0) + ($i$543 << 2) >> 2] | 0; + if (($86 | 0) != -1) HEAP32[$elp + ($76 * 72 | 0) + ($73 + $i$543 << 2) >> 2] = HEAP32[$alpha_to$0 + ((($86 + $n$0 + (HEAP32[$41 >> 2] | 0) - (HEAP32[$79 >> 2] | 0) | 0) % ($n$0 | 0) | 0) << 2) >> 2]; + if (($i$543 | 0) < ($78 | 0)) $i$543 = $i$543 + 1 | 0; else break; + } + } + if (($46 | 0) < 0) { + $$pre$phiZ2D = $76; + $110 = $$; + } else { + $i$645 = 0; + while (1) { + $100 = $elp + ($u$0 * 72 | 0) + ($i$645 << 2) | 0; + $101 = HEAP32[$100 >> 2] | 0; + $102 = $elp + ($76 * 72 | 0) + ($i$645 << 2) | 0; + HEAP32[$102 >> 2] = HEAP32[$102 >> 2] ^ $101; + HEAP32[$100 >> 2] = HEAP32[$index_of$0 + ($101 << 2) >> 2]; + if (($i$645 | 0) < ($46 | 0)) $i$645 = $i$645 + 1 | 0; else { + $$pre$phiZ2D = $76; + $110 = $$; + break; + } + } + } + } + HEAP32[$u_lu + ($$pre$phiZ2D << 2) >> 2] = $u$0 - $110; + if (($u$0 | 0) >= ($10 | 0)) { + $$lcssa76 = $110; + $$pre$phi$lcssaZ2D = $$pre$phiZ2D; + break; + } + $114 = HEAP32[$s + ($$pre$phiZ2D << 2) >> 2] | 0; + if (($114 | 0) == -1) $$sink = 0; else $$sink = HEAP32[$alpha_to$0 + ($114 << 2) >> 2] | 0; + $118 = $d + ($$pre$phiZ2D << 2) | 0; + HEAP32[$118 >> 2] = $$sink; + if (($110 | 0) < 1) $$lcssa24 = $$sink; else { + $134 = $$sink; + $i$750 = 1; + while (1) { + $122 = HEAP32[$s + ($$pre$phiZ2D - $i$750 << 2) >> 2] | 0; + if (($122 | 0) == -1) $209 = $134; else { + $125 = HEAP32[$elp + ($$pre$phiZ2D * 72 | 0) + ($i$750 << 2) >> 2] | 0; + if (!$125) $209 = $134; else { + $133 = $134 ^ HEAP32[$alpha_to$0 + ((((HEAP32[$index_of$0 + ($125 << 2) >> 2] | 0) + $122 | 0) % ($n$0 | 0) | 0) << 2) >> 2]; + HEAP32[$118 >> 2] = $133; + $209 = $133; + } + } + if (($i$750 | 0) < ($110 | 0)) { + $134 = $209; + $i$750 = $i$750 + 1 | 0; + } else { + $$lcssa24 = $209; + break; + } + } + } + $43 = HEAP32[$index_of$0 + ($$lcssa24 << 2) >> 2] | 0; + HEAP32[$118 >> 2] = $43; + if (($110 | 0) > ($t$1 | 0)) { + $$lcssa76 = $110; + $$pre$phi$lcssaZ2D = $$pre$phiZ2D; + break; + } else $46 = $110; + } + if (($$lcssa76 | 0) > ($t$1 | 0)) { + $$0 = -1; + break; + } + if (($$lcssa76 | 0) >= 0) { + $i$839 = 0; + while (1) { + $143 = $elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$839 << 2) | 0; + HEAP32[$143 >> 2] = HEAP32[$index_of$0 + (HEAP32[$143 >> 2] << 2) >> 2]; + if (($i$839 | 0) < ($$lcssa76 | 0)) $i$839 = $i$839 + 1 | 0; else break; + } + } + if (($$lcssa76 | 0) >= 1) { + $i$937 = 1; + while (1) { + HEAP32[$reg + ($i$937 << 2) >> 2] = HEAP32[$elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$937 << 2) >> 2]; + if (($i$937 | 0) < ($$lcssa76 | 0)) $i$937 = $i$937 + 1 | 0; else break; + } + } + $154 = ($$lcssa76 | 0) < 1; + $count$036 = 0; + $i$1035 = 1; + while (1) { + if ($154) $q$4$lcssa = 1; else { + $j$232 = 1; + $q$433 = 1; + while (1) { + $155 = $reg + ($j$232 << 2) | 0; + $156 = HEAP32[$155 >> 2] | 0; + if (($156 | 0) == -1) $q$5 = $q$433; else { + $159 = ($156 + $j$232 | 0) % ($n$0 | 0) | 0; + HEAP32[$155 >> 2] = $159; + $q$5 = HEAP32[$alpha_to$0 + ($159 << 2) >> 2] ^ $q$433; + } + if (($j$232 | 0) < ($$lcssa76 | 0)) { + $j$232 = $j$232 + 1 | 0; + $q$433 = $q$5; + } else { + $q$4$lcssa = $q$5; + break; + } + } + } + if (!$q$4$lcssa) { + HEAP32[$loc + ($count$036 << 2) >> 2] = $n$0 - $i$1035; + $count$1 = $count$036 + 1 | 0; + } else $count$1 = $count$036; + $i$1035 = $i$1035 + 1 | 0; + if (($n$0 | 0) < ($i$1035 | 0)) { + $count$1$lcssa = $count$1; + break; + } else $count$036 = $count$1; + } + if (($count$1$lcssa | 0) != ($$lcssa76 | 0)) { + $$0 = -1; + break; + } + if (($$lcssa76 | 0) > 0) { + $i$1130 = 0; + do { + $175 = $recd$0 + (HEAP32[$loc + ($i$1130 << 2) >> 2] | 0) | 0; + HEAP8[$175 >> 0] = HEAPU8[$175 >> 0] ^ 1; + $i$1130 = $i$1130 + 1 | 0; + } while (($i$1130 | 0) < ($$lcssa76 | 0)); + $u$1 = $$pre$phi$lcssaZ2D; + } else $u$1 = $$pre$phi$lcssaZ2D; + } else $u$1 = 0; + $182 = $out_p; + HEAP32[$182 >> 2] = 0; + HEAP32[$182 + 4 >> 2] = 0; + $190 = 1; + $191 = 0; + $194 = 0; + $195 = 0; + $i$1228 = $length$0 - $k$1 | 0; + while (1) { + $192 = ___muldi3(HEAPU8[$recd$0 + $i$1228 >> 0] | 0, 0, $190 | 0, $191 | 0) | 0; + $194 = _i64Add($192 | 0, tempRet0 | 0, $194 | 0, $195 | 0) | 0; + $195 = tempRet0; + $198 = $out_p; + HEAP32[$198 >> 2] = $194; + HEAP32[$198 + 4 >> 2] = $195; + $190 = _bitshift64Shl($190 | 0, $191 | 0, 1) | 0; + $i$1228 = $i$1228 + 1 | 0; + if (($i$1228 | 0) >= ($length$0 | 0)) break; else $191 = tempRet0; + } + if ($28) $$0 = HEAP32[$l + ($u$1 << 2) >> 2] | 0; else $$0 = 0; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0$i$i$i = 0, $$0$i$i$i11 = 0, $$0$i$i$i6 = 0, $$02 = 0, $0 = 0, $1 = 0, $103 = 0, $105 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $119 = 0, $122 = 0, $125 = 0, $126 = 0, $132 = 0, $134 = 0, $138 = 0, $147 = 0, $148 = 0, $15 = 0, $151 = 0, $152 = 0, $155 = 0, $157 = 0, $16 = 0, $160 = 0, $161 = 0, $163 = 0, $17 = 0, $170 = 0, $172 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $193 = 0, $199 = 0, $2 = 0, $201 = 0, $22 = 0, $27 = 0, $3 = 0, $31 = 0, $32 = 0, $34 = 0, $4 = 0, $41 = 0, $43 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $63 = 0, $64 = 0, $70 = 0, $72 = 0, $77 = 0, $78 = 0, $79 = 0, $83 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i10 = 0, $k1$015 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i10 = sp + 72 | 0; + $0 = sp + 56 | 0; + $1 = sp + 48 | 0; + $2 = sp + 32 | 0; + $3 = sp + 24 | 0; + $4 = sp + 8 | 0; + $5 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else switch (HEAP8[$first >> 0] | 0) { + case 84: + { + $9 = $db + 4 | 0; + $15 = ((HEAP32[$9 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + $16 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + $17 = HEAP32[$9 >> 2] | 0; + $22 = ($17 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0; + if (!(($16 | 0) != ($first | 0) & ($22 | 0) == ($15 + 1 | 0))) { + if (($22 | 0) == ($15 | 0)) { + $$02 = $first; + break L1; + } else { + $77 = $17; + $k1$015 = $22; + } + while (1) { + $79 = $77; + $77 = $77 + -24 | 0; + do { + $78 = $79 + -24 | 0; + HEAP32[$9 >> 2] = $78; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($78); + $79 = HEAP32[$9 >> 2] | 0; + } while (($79 | 0) != ($77 | 0)); + $k1$015 = $k1$015 + -1 | 0; + if (($k1$015 | 0) == ($15 | 0)) { + $$02 = $first; + break L1; + } + } + } + $27 = $db + 16 | 0; + HEAP32[$1 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($0, $17 + -24 | 0, $1); + $31 = $db + 20 | 0; + $32 = HEAP32[$31 >> 2] | 0; + $34 = HEAP32[$db + 24 >> 2] | 0; + if ($32 >>> 0 < $34 >>> 0) { + HEAP32[$32 + 12 >> 2] = HEAP32[$0 + 12 >> 2]; + HEAP32[$32 >> 2] = HEAP32[$0 >> 2]; + $41 = $0 + 4 | 0; + HEAP32[$32 + 4 >> 2] = HEAP32[$41 >> 2]; + $43 = $0 + 8 | 0; + HEAP32[$32 + 8 >> 2] = HEAP32[$43 >> 2]; + HEAP32[$43 >> 2] = 0; + HEAP32[$41 >> 2] = 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$31 >> 2] = (HEAP32[$31 >> 2] | 0) + 16; + } else { + $51 = HEAP32[$27 >> 2] | 0; + $52 = $32 - $51 | 0; + $53 = $52 >> 4; + $54 = $53 + 1 | 0; + if (($52 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($27); + $57 = $34 - $51 | 0; + if ($57 >> 4 >>> 0 < 1073741823) { + $60 = $57 >> 3; + $$0$i$i$i = $60 >>> 0 < $54 >>> 0 ? $54 : $60; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i, $53, $db + 28 | 0); + $63 = $__v$i$i10 + 8 | 0; + $64 = HEAP32[$63 >> 2] | 0; + HEAP32[$64 + 12 >> 2] = HEAP32[$0 + 12 >> 2]; + HEAP32[$64 >> 2] = HEAP32[$0 >> 2]; + $70 = $0 + 4 | 0; + HEAP32[$64 + 4 >> 2] = HEAP32[$70 >> 2]; + $72 = $0 + 8 | 0; + HEAP32[$64 + 8 >> 2] = HEAP32[$72 >> 2]; + HEAP32[$72 >> 2] = 0; + HEAP32[$70 >> 2] = 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$63 >> 2] = $64 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($27, $__v$i$i10); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($0); + $$02 = $16; + break L1; + break; + } + case 68: + { + $83 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($83 | 0) == ($first | 0)) { + $$02 = $first; + break L1; + } + $87 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($87 | 0)) { + $$02 = $first; + break L1; + } + $89 = $db + 16 | 0; + HEAP32[$3 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($2, $87 + -24 | 0, $3); + $93 = $db + 20 | 0; + $94 = HEAP32[$93 >> 2] | 0; + $96 = HEAP32[$db + 24 >> 2] | 0; + if ($94 >>> 0 < $96 >>> 0) { + HEAP32[$94 + 12 >> 2] = HEAP32[$2 + 12 >> 2]; + HEAP32[$94 >> 2] = HEAP32[$2 >> 2]; + $103 = $2 + 4 | 0; + HEAP32[$94 + 4 >> 2] = HEAP32[$103 >> 2]; + $105 = $2 + 8 | 0; + HEAP32[$94 + 8 >> 2] = HEAP32[$105 >> 2]; + HEAP32[$105 >> 2] = 0; + HEAP32[$103 >> 2] = 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 16; + } else { + $113 = HEAP32[$89 >> 2] | 0; + $114 = $94 - $113 | 0; + $115 = $114 >> 4; + $116 = $115 + 1 | 0; + if (($114 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($89); + $119 = $96 - $113 | 0; + if ($119 >> 4 >>> 0 < 1073741823) { + $122 = $119 >> 3; + $$0$i$i$i6 = $122 >>> 0 < $116 >>> 0 ? $116 : $122; + } else $$0$i$i$i6 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i6, $115, $db + 28 | 0); + $125 = $__v$i$i10 + 8 | 0; + $126 = HEAP32[$125 >> 2] | 0; + HEAP32[$126 + 12 >> 2] = HEAP32[$2 + 12 >> 2]; + HEAP32[$126 >> 2] = HEAP32[$2 >> 2]; + $132 = $2 + 4 | 0; + HEAP32[$126 + 4 >> 2] = HEAP32[$132 >> 2]; + $134 = $2 + 8 | 0; + HEAP32[$126 + 8 >> 2] = HEAP32[$134 >> 2]; + HEAP32[$134 >> 2] = 0; + HEAP32[$132 >> 2] = 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$125 >> 2] = $126 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($89, $__v$i$i10); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($2); + $$02 = $83; + break L1; + break; + } + case 83: + { + $138 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($138 | 0) != ($first | 0)) { + $$02 = $138; + break L1; + } + if (($last - $first | 0) <= 2) { + $$02 = $first; + break L1; + } + if ((HEAP8[$first + 1 >> 0] | 0) != 116) { + $$02 = $first; + break L1; + } + $147 = $first + 2 | 0; + $148 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($147, $last, $db) | 0; + if (($148 | 0) == ($147 | 0)) { + $$02 = $first; + break L1; + } + $151 = $db + 4 | 0; + $152 = HEAP32[$151 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($152 | 0)) { + $$02 = $first; + break L1; + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($152 + -24 | 0, 0, 12922) | 0; + $155 = $db + 16 | 0; + $157 = (HEAP32[$151 >> 2] | 0) + -24 | 0; + HEAP32[$5 >> 2] = HEAP32[$db + 12 >> 2]; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $157, $5); + $160 = $db + 20 | 0; + $161 = HEAP32[$160 >> 2] | 0; + $163 = HEAP32[$db + 24 >> 2] | 0; + if ($161 >>> 0 < $163 >>> 0) { + HEAP32[$161 + 12 >> 2] = HEAP32[$4 + 12 >> 2]; + HEAP32[$161 >> 2] = HEAP32[$4 >> 2]; + $170 = $4 + 4 | 0; + HEAP32[$161 + 4 >> 2] = HEAP32[$170 >> 2]; + $172 = $4 + 8 | 0; + HEAP32[$161 + 8 >> 2] = HEAP32[$172 >> 2]; + HEAP32[$172 >> 2] = 0; + HEAP32[$170 >> 2] = 0; + HEAP32[$4 >> 2] = 0; + HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 16; + } else { + $180 = HEAP32[$155 >> 2] | 0; + $181 = $161 - $180 | 0; + $182 = $181 >> 4; + $183 = $182 + 1 | 0; + if (($181 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($155); + $186 = $163 - $180 | 0; + if ($186 >> 4 >>> 0 < 1073741823) { + $189 = $186 >> 3; + $$0$i$i$i11 = $189 >>> 0 < $183 >>> 0 ? $183 : $189; + } else $$0$i$i$i11 = 2147483647; + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i11, $182, $db + 28 | 0); + $192 = $__v$i$i10 + 8 | 0; + $193 = HEAP32[$192 >> 2] | 0; + HEAP32[$193 + 12 >> 2] = HEAP32[$4 + 12 >> 2]; + HEAP32[$193 >> 2] = HEAP32[$4 >> 2]; + $199 = $4 + 4 | 0; + HEAP32[$193 + 4 >> 2] = HEAP32[$199 >> 2]; + $201 = $4 + 8 | 0; + HEAP32[$193 + 8 >> 2] = HEAP32[$201 >> 2]; + HEAP32[$201 >> 2] = 0; + HEAP32[$199 >> 2] = 0; + HEAP32[$4 >> 2] = 0; + HEAP32[$192 >> 2] = $193 + 16; + __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($155, $__v$i$i10); + __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10); + } + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4); + $$02 = $148; + break L1; + break; + } + default: + { + $$02 = $first; + break L1; + } + } while (0); + STACKTOP = sp; + return $$02 | 0; +} + +function _arDetectMarker2($xsize, $ysize, $labelInfo, $imageProcMode, $areaMax, $areaMin, $squareFitThresh, $markerInfo2, $marker2_num) { + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $labelInfo = $labelInfo | 0; + $imageProcMode = $imageProcMode | 0; + $areaMax = $areaMax | 0; + $areaMin = $areaMin | 0; + $squareFitThresh = +$squareFitThresh; + $markerInfo2 = $markerInfo2 | 0; + $marker2_num = $marker2_num | 0; + var $$0 = 0, $$01 = 0, $$02 = 0, $$03 = 0, $$lcssa = 0, $$lcssa15 = 0, $$lcssa16 = 0, $$lcssa17 = 0, $$ph = 0, $$pre10 = 0, $$pre9 = 0, $0 = 0, $115 = 0, $12 = 0, $120 = 0, $129 = 0, $13 = 0, $130 = 0, $132 = 0, $133 = 0.0, $136 = 0.0, $141 = 0.0, $143 = 0.0, $144 = 0, $145 = 0, $146 = 0, $16 = 0, $160 = 0, $164 = 0, $167 = 0, $171 = 0, $174 = 0, $177 = 0, $180 = 0, $183 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $42 = 0, $46 = 0, $47 = 0, $5 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0.0, $6 = 0, $66 = 0, $68 = 0, $7 = 0, $74 = 0, $8 = 0, $90 = 0, $dmax$0$i38 = 0, $i$0$i39 = 0, $i$0$v1$0$i = 0, $i$044 = 0, $i$134 = 0, $i$227 = 0, $i$321 = 0, $j$030 = 0, $j$1 = 0, $j$1$in24 = 0, $j$1$in24$phi = 0, $j$123 = 0, $j$125 = 0, $j$218 = 0, $pm$019 = 0, $v1$0$i$lcssa = 0, $v1$0$i37 = 0, $vertex$sroa$12$0$i = 0, $vertex$sroa$4$0$i = 0, $vertex$sroa$8$0$i = 0, $wv1$i = 0, $wv2$i = 0, $wvnum1$i = 0, $wvnum2$i = 0, label = 0, sp = 0, $i$134$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $wv1$i = sp + 56 | 0; + $wvnum1$i = sp + 48 | 0; + $wv2$i = sp + 8 | 0; + $wvnum2$i = sp; + $0 = ($imageProcMode | 0) == 1; + if ($0) { + $$0 = ($xsize | 0) / 2 | 0; + $$01 = ($ysize | 0) / 2 | 0; + $$02 = ($areaMax | 0) / 4 | 0; + $$03 = ($areaMin | 0) / 4 | 0; + } else { + $$0 = $xsize; + $$01 = $ysize; + $$02 = $areaMax; + $$03 = $areaMin; + } + HEAP32[$marker2_num >> 2] = 0; + $5 = $labelInfo + 8 | 0; + $6 = $$0 + -2 | 0; + $7 = $$01 + -2 | 0; + $8 = $labelInfo + 1179664 | 0; + L4 : do if ((HEAP32[$5 >> 2] | 0) > 0) { + $i$044 = 0; + while (1) { + $12 = $labelInfo + 12 + ($i$044 << 2) | 0; + $13 = HEAP32[$12 >> 2] | 0; + L7 : do if (!(($13 | 0) < ($$03 | 0) | ($13 | 0) > ($$02 | 0))) { + $16 = $labelInfo + 131084 + ($i$044 << 4) | 0; + if ((HEAP32[$16 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 4 >> 2] | 0) != ($6 | 0)) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 8 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 12 >> 2] | 0) != ($7 | 0)) if ((_arGetContour(HEAP32[$labelInfo >> 2] | 0, $$0, 0, $8, $i$044 + 1 | 0, $16, $markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) | 0) | 0) >= 0) { + $34 = HEAP32[$12 >> 2] | 0; + $35 = HEAP32[$marker2_num >> 2] | 0; + $36 = $markerInfo2 + ($35 * 80048 | 0) + 28 | 0; + $37 = HEAP32[$36 >> 2] | 0; + $38 = $markerInfo2 + ($35 * 80048 | 0) + 40028 | 0; + $39 = HEAP32[$38 >> 2] | 0; + $40 = $markerInfo2 + ($35 * 80048 | 0) + 24 | 0; + $42 = (HEAP32[$40 >> 2] | 0) + -1 | 0; + if (($42 | 0) > 1) { + $dmax$0$i38 = 0; + $i$0$i39 = 1; + $v1$0$i37 = 0; + while (1) { + $46 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 28 + ($i$0$i39 << 2) >> 2] | 0) - $37 | 0; + $47 = Math_imul($46, $46) | 0; + $50 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 40028 + ($i$0$i39 << 2) >> 2] | 0) - $39 | 0; + $52 = (Math_imul($50, $50) | 0) + $47 | 0; + $53 = ($52 | 0) > ($dmax$0$i38 | 0); + $i$0$v1$0$i = $53 ? $i$0$i39 : $v1$0$i37; + $i$0$i39 = $i$0$i39 + 1 | 0; + if (($i$0$i39 | 0) >= ($42 | 0)) { + $v1$0$i$lcssa = $i$0$v1$0$i; + break; + } else { + $dmax$0$i38 = $53 ? $52 : $dmax$0$i38; + $v1$0$i37 = $i$0$v1$0$i; + } + } + } else $v1$0$i$lcssa = 0; + $59 = +($34 | 0) / .75 * .01 * $squareFitThresh; + HEAP32[$wvnum1$i >> 2] = 0; + HEAP32[$wvnum2$i >> 2] = 0; + L18 : do if ((_get_vertex($36, $38, 0, $v1$0$i$lcssa, $59, $wv1$i, $wvnum1$i) | 0) >= 0) if ((_get_vertex($36, $38, $v1$0$i$lcssa, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) >= 0) { + $66 = HEAP32[$wvnum1$i >> 2] | 0; + $68 = HEAP32[$wvnum2$i >> 2] | 0; + do if (($66 | 0) == 1 & ($68 | 0) == 1) { + $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0; + $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0; + $vertex$sroa$8$0$i = $v1$0$i$lcssa; + } else { + if (($66 | 0) > 1 & ($68 | 0) == 0) { + $74 = ($v1$0$i$lcssa | 0) / 2 | 0; + HEAP32[$wvnum2$i >> 2] = 0; + HEAP32[$wvnum1$i >> 2] = 0; + if ((_get_vertex($36, $38, 0, $74, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18; + if ((_get_vertex($36, $38, $74, $v1$0$i$lcssa, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18; + if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18; + $vertex$sroa$12$0$i = $v1$0$i$lcssa; + $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0; + $vertex$sroa$8$0$i = HEAP32[$wv2$i >> 2] | 0; + break; + } + if (!(($66 | 0) == 0 & ($68 | 0) > 1)) break L18; + $90 = ($v1$0$i$lcssa + -1 + (HEAP32[$40 >> 2] | 0) | 0) / 2 | 0; + HEAP32[$wvnum2$i >> 2] = 0; + HEAP32[$wvnum1$i >> 2] = 0; + if ((_get_vertex($36, $38, $v1$0$i$lcssa, $90, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18; + if ((_get_vertex($36, $38, $90, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18; + if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18; + $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0; + $vertex$sroa$4$0$i = $v1$0$i$lcssa; + $vertex$sroa$8$0$i = HEAP32[$wv1$i >> 2] | 0; + } while (0); + HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80028 >> 2] = 0; + HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80032 >> 2] = $vertex$sroa$4$0$i; + HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80036 >> 2] = $vertex$sroa$8$0$i; + HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80040 >> 2] = $vertex$sroa$12$0$i; + HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80044 >> 2] = (HEAP32[$40 >> 2] | 0) + -1; + HEAP32[$markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) >> 2] = HEAP32[$12 >> 2]; + $115 = HEAP32[$marker2_num >> 2] | 0; + HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 8 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) >> 3]; + HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 16 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) + 8 >> 3]; + $120 = $115 + 1 | 0; + HEAP32[$marker2_num >> 2] = $120; + if (($120 | 0) == 60) { + $$ph = 60; + break L4; + } else break L7; + } while (0); + } + } while (0); + $i$044 = $i$044 + 1 | 0; + if (($i$044 | 0) >= (HEAP32[$5 >> 2] | 0)) { + label = 4; + break; + } + } + } else label = 4; while (0); + if ((label | 0) == 4) $$ph = HEAP32[$marker2_num >> 2] | 0; + if (($$ph | 0) > 0) { + $132 = $$ph; + $i$134 = 0; + while (1) { + $i$134$looptemp = $i$134; + $i$134 = $i$134 + 1 | 0; + $129 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) + 16 | 0; + $130 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) | 0; + if (($i$134 | 0) < ($132 | 0)) { + $133 = +HEAPF64[$markerInfo2 + ($i$134$looptemp * 80048 | 0) + 8 >> 3]; + $j$030 = $i$134; + do { + $136 = $133 - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 8 >> 3]; + $141 = +HEAPF64[$129 >> 3] - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 16 >> 3]; + $143 = $136 * $136 + $141 * $141; + $144 = HEAP32[$130 >> 2] | 0; + $145 = $markerInfo2 + ($j$030 * 80048 | 0) | 0; + $146 = HEAP32[$145 >> 2] | 0; + if (($144 | 0) > ($146 | 0)) { + if ($143 < +(($144 | 0) / 4 | 0 | 0)) HEAP32[$145 >> 2] = 0; + } else if ($143 < +(($146 | 0) / 4 | 0 | 0)) HEAP32[$130 >> 2] = 0; + $j$030 = $j$030 + 1 | 0; + $$pre10 = HEAP32[$marker2_num >> 2] | 0; + } while (($j$030 | 0) < ($$pre10 | 0)); + $$lcssa16 = $$pre10; + } else $$lcssa16 = $132; + if (($i$134 | 0) >= ($$lcssa16 | 0)) { + $$lcssa17 = $$lcssa16; + break; + } else $132 = $$lcssa16; + } + } else $$lcssa17 = $$ph; + if (($$lcssa17 | 0) > 0) { + $160 = $$lcssa17; + $i$227 = 0; + while (1) { + if (!(HEAP32[$markerInfo2 + ($i$227 * 80048 | 0) >> 2] | 0)) { + $j$123 = $i$227 + 1 | 0; + if (($j$123 | 0) < ($160 | 0)) { + $j$1$in24 = $i$227; + $j$125 = $j$123; + while (1) { + _memcpy($markerInfo2 + ($j$1$in24 * 80048 | 0) | 0, $markerInfo2 + ($j$125 * 80048 | 0) | 0, 80048) | 0; + $$pre9 = HEAP32[$marker2_num >> 2] | 0; + $j$1 = $j$125 + 1 | 0; + if (($j$1 | 0) < ($$pre9 | 0)) { + $j$1$in24$phi = $j$125; + $j$125 = $j$1; + $j$1$in24 = $j$1$in24$phi; + } else { + $$lcssa = $$pre9; + break; + } + } + } else $$lcssa = $160; + $164 = $$lcssa + -1 | 0; + HEAP32[$marker2_num >> 2] = $164; + $167 = $164; + } else $167 = $160; + $i$227 = $i$227 + 1 | 0; + if (($i$227 | 0) >= ($167 | 0)) { + $$lcssa15 = $167; + break; + } else $160 = $167; + } + } else $$lcssa15 = $$lcssa17; + if ($0 & ($$lcssa15 | 0) > 0) { + $i$321 = 0; + $pm$019 = $markerInfo2; + while (1) { + HEAP32[$pm$019 >> 2] = HEAP32[$pm$019 >> 2] << 2; + $171 = $pm$019 + 8 | 0; + HEAPF64[$171 >> 3] = +HEAPF64[$171 >> 3] * 2.0; + $174 = $pm$019 + 16 | 0; + HEAPF64[$174 >> 3] = +HEAPF64[$174 >> 3] * 2.0; + $177 = $pm$019 + 24 | 0; + if ((HEAP32[$177 >> 2] | 0) > 0) { + $j$218 = 0; + do { + $180 = $pm$019 + 28 + ($j$218 << 2) | 0; + HEAP32[$180 >> 2] = HEAP32[$180 >> 2] << 1; + $183 = $pm$019 + 40028 + ($j$218 << 2) | 0; + HEAP32[$183 >> 2] = HEAP32[$183 >> 2] << 1; + $j$218 = $j$218 + 1 | 0; + } while (($j$218 | 0) < (HEAP32[$177 >> 2] | 0)); + } + $i$321 = $i$321 + 1 | 0; + if (($i$321 | 0) >= (HEAP32[$marker2_num >> 2] | 0)) break; else $pm$019 = $pm$019 + 80048 | 0; + } + } + STACKTOP = sp; + return 0; +} + +function _pattern_match($pattHandle, $mode, $data, $size, $code, $dir, $cf) { + $pattHandle = $pattHandle | 0; + $mode = $mode | 0; + $data = $data | 0; + $size = $size | 0; + $code = $code | 0; + $dir = $dir | 0; + $cf = $cf | 0; + var $$0 = 0, $$lcssa103 = 0, $$lcssa108 = 0, $1 = 0, $100 = 0, $101 = 0, $102 = 0, $105 = 0, $11 = 0, $111 = 0, $118 = 0.0, $119 = 0, $14 = 0, $2 = 0, $20 = 0, $23 = 0, $26 = 0.0, $31 = 0, $33 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $45 = 0, $51 = 0, $58 = 0.0, $59 = 0, $63 = 0, $65 = 0, $72 = 0, $75 = 0, $81 = 0, $84 = 0, $87 = 0.0, $91 = 0, $93 = 0, $94 = 0, $96 = 0, $97 = 0, $ave$0$lcssa = 0, $ave$055 = 0, $ave$1$lcssa = 0, $ave$183 = 0, $i$056 = 0, $i$150 = 0, $i$235 = 0, $i$384 = 0, $i$478 = 0, $i$560 = 0, $j$038 = 0, $j$166 = 0, $k$042 = 0, $k$1 = 0, $k$1$in = 0, $k$1$lcssa = 0, $k$1102 = 0, $k$270 = 0, $k$3 = 0, $k$3$in = 0, $k$3$lcssa = 0, $k$3106 = 0, $l$043 = 0, $l$171 = 0, $max$0$lcssa = 0.0, $max$044 = 0.0, $max$139 = 0.0, $max$2 = 0.0, $max$3 = 0.0, $max$4$lcssa = 0.0, $max$472 = 0.0, $max$567 = 0.0, $max$6 = 0.0, $max$7 = 0.0, $res1$0$lcssa = 0, $res1$040 = 0, $res1$136 = 0, $res1$2 = 0, $res1$3 = 0, $res1$4$lcssa = 0, $res1$468 = 0, $res1$564 = 0, $res1$6 = 0, $res1$7 = 0, $res2$0$lcssa = 0, $res2$041 = 0, $res2$137 = 0, $res2$2 = 0, $res2$3 = 0, $res2$4$lcssa = 0, $res2$469 = 0, $res2$565 = 0, $res2$6 = 0, $res2$7 = 0, $sum$0$lcssa = 0.0, $sum$049 = 0, $sum$1$lcssa = 0, $sum$134 = 0, $sum$2$lcssa = 0.0, $sum$277 = 0, $sum$3$lcssa = 0, $sum$359 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + L1 : do if (!$pattHandle) { + HEAP32[$code >> 2] = 0; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + $$0 = -1; + } else switch ($mode | 0) { + case 0: + { + $1 = Math_imul($size, $size) | 0; + $2 = $1 * 3 | 0; + $4 = _malloc($1 * 12 | 0) | 0; + if (!$4) { + _arLog(3, 5471, $vararg_buffer); + _exit(1); + } + if (!$1) $ave$0$lcssa = 0; else { + $ave$055 = 0; + $i$056 = 0; + while (1) { + $11 = ((HEAPU8[$data + $i$056 >> 0] | 0) ^ 255) + $ave$055 | 0; + $i$056 = $i$056 + 1 | 0; + if (($i$056 | 0) >= ($2 | 0)) { + $ave$0$lcssa = $11; + break; + } else $ave$055 = $11; + } + } + $14 = ($ave$0$lcssa | 0) / ($2 | 0) | 0; + if (!$1) $sum$0$lcssa = 0.0; else { + $i$150 = 0; + $sum$049 = 0; + while (1) { + $20 = ((HEAPU8[$data + $i$150 >> 0] | 0) ^ 255) - $14 | 0; + HEAP32[$4 + ($i$150 << 2) >> 2] = $20; + $23 = (Math_imul($20, $20) | 0) + $sum$049 | 0; + $i$150 = $i$150 + 1 | 0; + if (($i$150 | 0) >= ($2 | 0)) { + $$lcssa103 = $23; + break; + } else $sum$049 = $23; + } + $sum$0$lcssa = +($$lcssa103 | 0); + } + $26 = +Math_sqrt(+$sum$0$lcssa); + if ($26 / (+($size | 0) * 1.7320508) < 15.0) { + HEAP32[$code >> 2] = 0; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + _free($4); + $$0 = -2; + break L1; + } + $31 = HEAP32[$pattHandle >> 2] | 0; + $33 = $pattHandle + 12 | 0; + $34 = $pattHandle + 16 | 0; + if (($31 | 0) > 0) { + $36 = HEAP32[$pattHandle + 8 >> 2] | 0; + $37 = ($1 | 0) == 0; + $k$042 = -1; + $l$043 = 0; + $max$044 = 0.0; + $res1$040 = -1; + $res2$041 = -1; + while (1) { + $k$1$in = $k$042; + L25 : while (1) { + $k$1 = $k$1$in + 1 | 0; + switch (HEAP32[$36 + ($k$1 << 2) >> 2] | 0) { + case 0: + { + $k$1$in = $k$1; + break; + } + case 2: + { + $k$1102 = $k$1; + $max$3 = $max$044; + $res1$3 = $res1$040; + $res2$3 = $res2$041; + break L25; + break; + } + default: + { + $k$1$lcssa = $k$1; + label = 17; + break L25; + } + } + } + if ((label | 0) == 17) { + label = 0; + $40 = $k$1$lcssa << 2; + $41 = HEAP32[$34 >> 2] | 0; + $j$038 = 0; + $max$139 = $max$044; + $res1$136 = $res1$040; + $res2$137 = $res2$041; + while (1) { + $42 = $j$038 + $40 | 0; + if ($37) $sum$1$lcssa = 0; else { + $45 = HEAP32[(HEAP32[$33 >> 2] | 0) + ($42 << 2) >> 2] | 0; + $i$235 = 0; + $sum$134 = 0; + while (1) { + $51 = (Math_imul(HEAP32[$45 + ($i$235 << 2) >> 2] | 0, HEAP32[$4 + ($i$235 << 2) >> 2] | 0) | 0) + $sum$134 | 0; + $i$235 = $i$235 + 1 | 0; + if (($i$235 | 0) >= ($2 | 0)) { + $sum$1$lcssa = $51; + break; + } else $sum$134 = $51; + } + } + $58 = +($sum$1$lcssa | 0) / +HEAPF64[$41 + ($42 << 3) >> 3] / $26; + $59 = $58 > $max$139; + $res1$2 = $59 ? $j$038 : $res1$136; + $res2$2 = $59 ? $k$1$lcssa : $res2$137; + $max$2 = $59 ? $58 : $max$139; + $j$038 = $j$038 + 1 | 0; + if (($j$038 | 0) == 4) { + $k$1102 = $k$1$lcssa; + $max$3 = $max$2; + $res1$3 = $res1$2; + $res2$3 = $res2$2; + break; + } else { + $max$139 = $max$2; + $res1$136 = $res1$2; + $res2$137 = $res2$2; + } + } + } + $l$043 = $l$043 + 1 | 0; + if (($l$043 | 0) >= ($31 | 0)) { + $max$0$lcssa = $max$3; + $res1$0$lcssa = $res1$3; + $res2$0$lcssa = $res2$3; + break; + } else { + $k$042 = $k$1102; + $max$044 = $max$3; + $res1$040 = $res1$3; + $res2$041 = $res2$3; + } + } + } else { + $max$0$lcssa = 0.0; + $res1$0$lcssa = -1; + $res2$0$lcssa = -1; + } + HEAP32[$dir >> 2] = $res1$0$lcssa; + HEAP32[$code >> 2] = $res2$0$lcssa; + HEAPF64[$cf >> 3] = $max$0$lcssa; + _free($4); + $$0 = 0; + break L1; + break; + } + case 1: + { + $63 = Math_imul($size, $size) | 0; + $65 = _malloc($63 << 2) | 0; + if (!$65) { + _arLog(3, 5471, $vararg_buffer1); + _exit(1); + } + if (!$63) $ave$1$lcssa = 0; else { + $ave$183 = 0; + $i$384 = 0; + while (1) { + $72 = ((HEAPU8[$data + $i$384 >> 0] | 0) ^ 255) + $ave$183 | 0; + $i$384 = $i$384 + 1 | 0; + if (($i$384 | 0) >= ($63 | 0)) { + $ave$1$lcssa = $72; + break; + } else $ave$183 = $72; + } + } + $75 = ($ave$1$lcssa | 0) / ($63 | 0) | 0; + if (!$63) $sum$2$lcssa = 0.0; else { + $i$478 = 0; + $sum$277 = 0; + while (1) { + $81 = ((HEAPU8[$data + $i$478 >> 0] | 0) ^ 255) - $75 | 0; + HEAP32[$65 + ($i$478 << 2) >> 2] = $81; + $84 = (Math_imul($81, $81) | 0) + $sum$277 | 0; + $i$478 = $i$478 + 1 | 0; + if (($i$478 | 0) >= ($63 | 0)) { + $$lcssa108 = $84; + break; + } else $sum$277 = $84; + } + $sum$2$lcssa = +($$lcssa108 | 0); + } + $87 = +Math_sqrt(+$sum$2$lcssa); + if ($87 / +($size | 0) < 15.0) { + HEAP32[$code >> 2] = 0; + HEAP32[$dir >> 2] = 0; + HEAPF64[$cf >> 3] = -1.0; + _free($65); + $$0 = -2; + break L1; + } + $91 = HEAP32[$pattHandle >> 2] | 0; + $93 = $pattHandle + 20 | 0; + $94 = $pattHandle + 24 | 0; + if (($91 | 0) > 0) { + $96 = HEAP32[$pattHandle + 8 >> 2] | 0; + $97 = ($63 | 0) == 0; + $k$270 = -1; + $l$171 = 0; + $max$472 = 0.0; + $res1$468 = -1; + $res2$469 = -1; + while (1) { + $k$3$in = $k$270; + L58 : while (1) { + $k$3 = $k$3$in + 1 | 0; + switch (HEAP32[$96 + ($k$3 << 2) >> 2] | 0) { + case 0: + { + $k$3$in = $k$3; + break; + } + case 2: + { + $k$3106 = $k$3; + $max$7 = $max$472; + $res1$7 = $res1$468; + $res2$7 = $res2$469; + break L58; + break; + } + default: + { + $k$3$lcssa = $k$3; + label = 37; + break L58; + } + } + } + if ((label | 0) == 37) { + label = 0; + $100 = $k$3$lcssa << 2; + $101 = HEAP32[$94 >> 2] | 0; + $j$166 = 0; + $max$567 = $max$472; + $res1$564 = $res1$468; + $res2$565 = $res2$469; + while (1) { + $102 = $j$166 + $100 | 0; + if ($97) $sum$3$lcssa = 0; else { + $105 = HEAP32[(HEAP32[$93 >> 2] | 0) + ($102 << 2) >> 2] | 0; + $i$560 = 0; + $sum$359 = 0; + while (1) { + $111 = (Math_imul(HEAP32[$105 + ($i$560 << 2) >> 2] | 0, HEAP32[$65 + ($i$560 << 2) >> 2] | 0) | 0) + $sum$359 | 0; + $i$560 = $i$560 + 1 | 0; + if (($i$560 | 0) >= ($63 | 0)) { + $sum$3$lcssa = $111; + break; + } else $sum$359 = $111; + } + } + $118 = +($sum$3$lcssa | 0) / +HEAPF64[$101 + ($102 << 3) >> 3] / $87; + $119 = $118 > $max$567; + $res1$6 = $119 ? $j$166 : $res1$564; + $res2$6 = $119 ? $k$3$lcssa : $res2$565; + $max$6 = $119 ? $118 : $max$567; + $j$166 = $j$166 + 1 | 0; + if (($j$166 | 0) == 4) { + $k$3106 = $k$3$lcssa; + $max$7 = $max$6; + $res1$7 = $res1$6; + $res2$7 = $res2$6; + break; + } else { + $max$567 = $max$6; + $res1$564 = $res1$6; + $res2$565 = $res2$6; + } + } + } + $l$171 = $l$171 + 1 | 0; + if (($l$171 | 0) >= ($91 | 0)) { + $max$4$lcssa = $max$7; + $res1$4$lcssa = $res1$7; + $res2$4$lcssa = $res2$7; + break; + } else { + $k$270 = $k$3106; + $max$472 = $max$7; + $res1$468 = $res1$7; + $res2$469 = $res2$7; + } + } + } else { + $max$4$lcssa = 0.0; + $res1$4$lcssa = -1; + $res2$4$lcssa = -1; + } + HEAP32[$dir >> 2] = $res1$4$lcssa; + HEAP32[$code >> 2] = $res2$4$lcssa; + HEAPF64[$cf >> 3] = $max$4$lcssa; + _free($65); + $$0 = 0; + break L1; + break; + } + default: + { + $$0 = -1; + break L1; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arMultiReadConfigFile($filename, $pattHandle) { + $filename = $filename | 0; + $pattHandle = $pattHandle | 0; + var $$0 = 0, $0 = 0, $108 = 0, $11 = 0, $118 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $21 = 0, $28 = 0, $34 = 0, $4 = 0, $45 = 0, $49 = 0, $50 = 0, $52 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $79 = 0.0, $83 = 0.0, $9 = 0, $buf = 0, $dummy = 0, $i$052 = 0, $i$052$lcssa64 = 0, $i$052$lcssa65 = 0, $i$052$lcssa66 = 0, $j$0 = 0, $j$150 = 0, $num = 0, $pattPath = 0, $patt_type$0$lcssa = 0, $patt_type$051 = 0, $patt_type$1 = 0, $t1 = 0, $t2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer17 = 0, $vararg_buffer21 = 0, $vararg_buffer24 = 0, $vararg_buffer28 = 0, $vararg_buffer31 = 0, $vararg_buffer35 = 0, $vararg_buffer41 = 0, $vararg_buffer45 = 0, $vararg_buffer49 = 0, $vararg_buffer5 = 0, $vararg_buffer55 = 0, $vararg_buffer59 = 0, $vararg_buffer8 = 0, $wpos3d = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 2544 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer59 = sp + 208 | 0; + $vararg_buffer55 = sp + 200 | 0; + $vararg_buffer49 = sp + 184 | 0; + $vararg_buffer45 = sp + 176 | 0; + $vararg_buffer41 = sp + 168 | 0; + $vararg_buffer35 = sp + 152 | 0; + $vararg_buffer31 = sp + 144 | 0; + $vararg_buffer28 = sp + 136 | 0; + $vararg_buffer24 = sp + 128 | 0; + $vararg_buffer21 = sp + 120 | 0; + $vararg_buffer17 = sp + 112 | 0; + $vararg_buffer13 = sp + 104 | 0; + $vararg_buffer11 = sp + 96 | 0; + $vararg_buffer8 = sp + 88 | 0; + $vararg_buffer5 = sp + 80 | 0; + $vararg_buffer1 = sp + 72 | 0; + $vararg_buffer = sp + 64 | 0; + $wpos3d = sp; + $buf = sp + 2280 | 0; + $pattPath = sp + 232 | 0; + $dummy = sp + 224 | 0; + $num = sp + 220 | 0; + $t1 = sp + 216 | 0; + $t2 = sp + 212 | 0; + $0 = _fopen($filename, 5306) | 0; + L1 : do if (!$0) { + HEAP32[$vararg_buffer >> 2] = $filename; + _arLog(3, 5308, $vararg_buffer); + $2 = ___errno_location() | 0; + $4 = _strerror(HEAP32[$2 >> 2] | 0) | 0; + HEAP32[$vararg_buffer1 >> 2] = 13835; + HEAP32[$vararg_buffer1 + 4 >> 2] = $4; + _arLog(3, 5361, $vararg_buffer1); + $$0 = 0; + } else { + _get_buff($buf, $0); + HEAP32[$vararg_buffer5 >> 2] = $num; + if ((_sscanf($buf, 5367, $vararg_buffer5) | 0) != 1) { + HEAP32[$vararg_buffer8 >> 2] = $filename; + _arLog(3, 5370, $vararg_buffer8); + _fclose($0) | 0; + $$0 = 0; + break; + } + $7 = HEAP32[$num >> 2] | 0; + $9 = _malloc($7 * 320 | 0) | 0; + if (!$9) { + _arLog(3, 5471, $vararg_buffer11); + _exit(1); + } + $11 = $wpos3d + 8 | 0; + $12 = $wpos3d + 16 | 0; + $13 = $wpos3d + 24 | 0; + $14 = $wpos3d + 32 | 0; + $15 = $wpos3d + 40 | 0; + $16 = $wpos3d + 48 | 0; + $17 = $wpos3d + 56 | 0; + $18 = ($pattHandle | 0) == 0; + L10 : do if (($7 | 0) > 0) { + $i$052 = 0; + $patt_type$051 = 0; + L11 : while (1) { + _get_buff($buf, $0); + $20 = $9 + ($i$052 * 320 | 0) | 0; + $21 = $9 + ($i$052 * 320 | 0) + 312 | 0; + HEAP32[$vararg_buffer13 >> 2] = $21; + HEAP32[$vararg_buffer13 + 4 >> 2] = $dummy; + if ((_sscanf($buf, 5488, $vararg_buffer13) | 0) == 1) { + $34 = HEAP32[$21 >> 2] | 0; + HEAP32[$20 >> 2] = ($34 & -32768 | 0) == 0 & 0 == 0 ? $34 & 32767 : 0; + HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 1; + $patt_type$1 = $patt_type$051 | 2; + } else { + if ($18) { + label = 10; + break; + } + if (!(_arUtilGetDirectoryNameFromPath($pattPath, $filename, 2048, 1) | 0)) { + label = 12; + break; + } + _strncat($pattPath, $buf, 2047 - (_strlen($pattPath) | 0) | 0) | 0; + $28 = _arPattLoad($pattHandle, $pattPath) | 0; + HEAP32[$20 >> 2] = $28; + if (($28 | 0) < 0) { + label = 14; + break; + } + HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 0; + $patt_type$1 = $patt_type$051 | 1; + } + _get_buff($buf, $0); + $45 = $9 + ($i$052 * 320 | 0) + 8 | 0; + HEAP32[$vararg_buffer28 >> 2] = $45; + if ((_sscanf($buf, 5784, $vararg_buffer28) | 0) != 1) { + $i$052$lcssa64 = $i$052; + label = 18; + break; + } + _get_buff($buf, $0); + $49 = $9 + ($i$052 * 320 | 0) + 16 | 0; + $50 = $9 + ($i$052 * 320 | 0) + 24 | 0; + $52 = $9 + ($i$052 * 320 | 0) + 40 | 0; + HEAP32[$vararg_buffer35 >> 2] = $49; + HEAP32[$vararg_buffer35 + 4 >> 2] = $50; + HEAP32[$vararg_buffer35 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 32; + HEAP32[$vararg_buffer35 + 12 >> 2] = $52; + if ((_sscanf($buf, 5893, $vararg_buffer35) | 0) == 4) $j$0 = 1; else { + HEAP32[$vararg_buffer41 >> 2] = $t1; + HEAP32[$vararg_buffer41 + 4 >> 2] = $t2; + if ((_sscanf($buf, 5909, $vararg_buffer41) | 0) == 2) $j$0 = 0; else { + $i$052$lcssa65 = $i$052; + label = 21; + break; + } + } + do { + _get_buff($buf, $0); + HEAP32[$vararg_buffer49 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5); + HEAP32[$vararg_buffer49 + 4 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 8; + HEAP32[$vararg_buffer49 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 16; + HEAP32[$vararg_buffer49 + 12 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 24; + if ((_sscanf($buf, 5893, $vararg_buffer49) | 0) != 4) { + $i$052$lcssa66 = $i$052; + label = 23; + break L11; + } + $j$0 = $j$0 + 1 | 0; + } while (($j$0 | 0) < 3); + _arUtilMatInv($49, $9 + ($i$052 * 320 | 0) + 112 | 0) | 0; + $68 = +HEAPF64[$45 >> 3]; + $69 = $68 * -.5; + HEAPF64[$wpos3d >> 3] = $69; + $70 = $68 * .5; + HEAPF64[$11 >> 3] = $70; + HEAPF64[$12 >> 3] = $70; + HEAPF64[$13 >> 3] = $70; + HEAPF64[$14 >> 3] = $70; + HEAPF64[$15 >> 3] = $69; + HEAPF64[$16 >> 3] = $69; + HEAPF64[$17 >> 3] = $69; + $71 = $9 + ($i$052 * 320 | 0) + 48 | 0; + $72 = $9 + ($i$052 * 320 | 0) + 56 | 0; + $73 = $9 + ($i$052 * 320 | 0) + 72 | 0; + $74 = $9 + ($i$052 * 320 | 0) + 80 | 0; + $75 = $9 + ($i$052 * 320 | 0) + 88 | 0; + $76 = $9 + ($i$052 * 320 | 0) + 104 | 0; + $j$150 = 0; + do { + $79 = +HEAPF64[$wpos3d + ($j$150 << 4) >> 3]; + $83 = +HEAPF64[$wpos3d + ($j$150 << 4) + 8 >> 3]; + HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) >> 3] = +HEAPF64[$52 >> 3] + (+HEAPF64[$49 >> 3] * $79 + +HEAPF64[$50 >> 3] * $83); + HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 8 >> 3] = +HEAPF64[$73 >> 3] + (+HEAPF64[$71 >> 3] * $79 + +HEAPF64[$72 >> 3] * $83); + HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 16 >> 3] = +HEAPF64[$76 >> 3] + (+HEAPF64[$74 >> 3] * $79 + +HEAPF64[$75 >> 3] * $83); + $j$150 = $j$150 + 1 | 0; + } while (($j$150 | 0) != 4); + $i$052 = $i$052 + 1 | 0; + if (($i$052 | 0) >= (HEAP32[$num >> 2] | 0)) { + $patt_type$0$lcssa = $patt_type$1; + break L10; + } else $patt_type$051 = $patt_type$1; + } + if ((label | 0) == 10) { + HEAP32[$vararg_buffer17 >> 2] = $filename; + HEAP32[$vararg_buffer17 + 4 >> 2] = $buf; + _arLog(3, 5495, $vararg_buffer17); + } else if ((label | 0) == 12) { + HEAP32[$vararg_buffer21 >> 2] = $filename; + _arLog(3, 5623, $vararg_buffer21); + } else if ((label | 0) == 14) { + HEAP32[$vararg_buffer24 >> 2] = $filename; + HEAP32[$vararg_buffer24 + 4 >> 2] = $pattPath; + _arLog(3, 5707, $vararg_buffer24); + } else if ((label | 0) == 18) { + HEAP32[$vararg_buffer31 >> 2] = $filename; + HEAP32[$vararg_buffer31 + 4 >> 2] = $i$052$lcssa64 + 1; + _arLog(3, 5788, $vararg_buffer31); + } else if ((label | 0) == 21) { + HEAP32[$vararg_buffer45 >> 2] = $filename; + HEAP32[$vararg_buffer45 + 4 >> 2] = $i$052$lcssa65 + 1; + _arLog(3, 5915, $vararg_buffer45); + } else if ((label | 0) == 23) { + HEAP32[$vararg_buffer55 >> 2] = $filename; + HEAP32[$vararg_buffer55 + 4 >> 2] = $i$052$lcssa66 + 1; + _arLog(3, 5915, $vararg_buffer55); + } + _fclose($0) | 0; + _free($9); + $$0 = 0; + break L1; + } else $patt_type$0$lcssa = 0; while (0); + _fclose($0) | 0; + $108 = _malloc(136) | 0; + if (!$108) { + _arLog(3, 5471, $vararg_buffer59); + _exit(1); + } + HEAP32[$108 >> 2] = $9; + HEAP32[$108 + 4 >> 2] = HEAP32[$num >> 2]; + HEAP32[$108 + 104 >> 2] = 0; + do if (($patt_type$0$lcssa & 3 | 0) == 3) HEAP32[$108 + 108 >> 2] = 2; else { + $118 = $108 + 108 | 0; + if (!($patt_type$0$lcssa & 1)) { + HEAP32[$118 >> 2] = 1; + break; + } else { + HEAP32[$118 >> 2] = 0; + break; + } + } while (0); + HEAPF64[$108 + 112 >> 3] = .5; + HEAPF64[$108 + 120 >> 3] = .5; + $$0 = $108; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + $rem = $rem | 0; + var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $_0$0 = 0, $_0$1 = 0, $q_sroa_1_1198$looptemp = 0; + $n_sroa_0_0_extract_trunc = $a$0; + $n_sroa_1_4_extract_shift$0 = $a$1; + $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0; + $d_sroa_0_0_extract_trunc = $b$0; + $d_sroa_1_4_extract_shift$0 = $b$1; + $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0; + if (!$n_sroa_1_4_extract_trunc) { + $4 = ($rem | 0) != 0; + if (!$d_sroa_1_4_extract_trunc) { + if ($4) { + HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); + HEAP32[$rem + 4 >> 2] = 0; + } + $_0$1 = 0; + $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + if (!$4) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = $a$0 | 0; + HEAP32[$rem + 4 >> 2] = $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + } + $17 = ($d_sroa_1_4_extract_trunc | 0) == 0; + do if (!$d_sroa_0_0_extract_trunc) { + if ($17) { + if ($rem) { + HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); + HEAP32[$rem + 4 >> 2] = 0; + } + $_0$1 = 0; + $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + if (!$n_sroa_0_0_extract_trunc) { + if ($rem) { + HEAP32[$rem >> 2] = 0; + HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0); + } + $_0$1 = 0; + $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $37 = $d_sroa_1_4_extract_trunc - 1 | 0; + if (!($37 & $d_sroa_1_4_extract_trunc)) { + if ($rem) { + HEAP32[$rem >> 2] = $a$0 | 0; + HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0; + } + $_0$1 = 0; + $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0); + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $51 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + if ($51 >>> 0 <= 30) { + $57 = $51 + 1 | 0; + $58 = 31 - $51 | 0; + $sr_1_ph = $57; + $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0); + $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0); + $q_sroa_0_1_ph = 0; + $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58; + break; + } + if (!$rem) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = $a$0 | 0; + HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + if (!$17) { + $119 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + if ($119 >>> 0 <= 31) { + $125 = $119 + 1 | 0; + $126 = 31 - $119 | 0; + $130 = $119 - 31 >> 31; + $sr_1_ph = $125; + $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126; + $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130; + $q_sroa_0_1_ph = 0; + $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126; + break; + } + if (!$rem) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = $a$0 | 0; + HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $66 = $d_sroa_0_0_extract_trunc - 1 | 0; + if ($66 & $d_sroa_0_0_extract_trunc) { + $88 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + $89 = 64 - $88 | 0; + $91 = 32 - $88 | 0; + $92 = $91 >> 31; + $95 = $88 - 32 | 0; + $105 = $95 >> 31; + $sr_1_ph = $88; + $r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105; + $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0); + $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92; + $q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31; + break; + } + if ($rem) { + HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc; + HEAP32[$rem + 4 >> 2] = 0; + } + if (($d_sroa_0_0_extract_trunc | 0) == 1) { + $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$0 = $a$0 | 0 | 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0; + $_0$1 = $n_sroa_1_4_extract_trunc >>> ($78 >>> 0) | 0; + $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + } while (0); + if (!$sr_1_ph) { + $q_sroa_1_1_lcssa = $q_sroa_1_1_ph; + $q_sroa_0_1_lcssa = $q_sroa_0_1_ph; + $r_sroa_1_1_lcssa = $r_sroa_1_1_ph; + $r_sroa_0_1_lcssa = $r_sroa_0_1_ph; + $carry_0_lcssa$1 = 0; + $carry_0_lcssa$0 = 0; + } else { + $d_sroa_0_0_insert_insert99$0 = $b$0 | 0 | 0; + $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0; + $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -1, -1) | 0; + $137$1 = tempRet0; + $q_sroa_1_1198 = $q_sroa_1_1_ph; + $q_sroa_0_1199 = $q_sroa_0_1_ph; + $r_sroa_1_1200 = $r_sroa_1_1_ph; + $r_sroa_0_1201 = $r_sroa_0_1_ph; + $sr_1202 = $sr_1_ph; + $carry_0203 = 0; + do { + $q_sroa_1_1198$looptemp = $q_sroa_1_1198; + $q_sroa_1_1198 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1; + $q_sroa_0_1199 = $carry_0203 | $q_sroa_0_1199 << 1; + $r_sroa_0_0_insert_insert42$0 = $r_sroa_0_1201 << 1 | $q_sroa_1_1198$looptemp >>> 31 | 0; + $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0; + _i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0; + $150$1 = tempRet0; + $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1; + $carry_0203 = $151$0 & 1; + $r_sroa_0_1201 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0; + $r_sroa_1_1200 = tempRet0; + $sr_1202 = $sr_1202 - 1 | 0; + } while (($sr_1202 | 0) != 0); + $q_sroa_1_1_lcssa = $q_sroa_1_1198; + $q_sroa_0_1_lcssa = $q_sroa_0_1199; + $r_sroa_1_1_lcssa = $r_sroa_1_1200; + $r_sroa_0_1_lcssa = $r_sroa_0_1201; + $carry_0_lcssa$1 = 0; + $carry_0_lcssa$0 = $carry_0203; + } + $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa; + $q_sroa_0_0_insert_ext75$1 = 0; + if ($rem) { + HEAP32[$rem >> 2] = $r_sroa_0_1_lcssa; + HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa; + } + $_0$1 = ($q_sroa_0_0_insert_ext75$0 | 0) >>> 31 | ($q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1) << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1; + $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0; + return (tempRet0 = $_0$1, $_0$0) | 0; +} + +function _icpGetJ_U_S($J_U_S, $matXc2U, $matXw2Xc, $worldCoord) { + $J_U_S = $J_U_S | 0; + $matXc2U = $matXc2U | 0; + $matXw2Xc = $matXw2Xc | 0; + $worldCoord = $worldCoord | 0; + var $$0 = 0, $$lcssa = 0.0, $0 = 0.0, $1 = 0.0, $100 = 0, $101 = 0, $104 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0.0, $115 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $128 = 0.0, $129 = 0.0, $132 = 0.0, $136 = 0.0, $14 = 0.0, $141 = 0.0, $143 = 0.0, $146 = 0.0, $150 = 0.0, $155 = 0.0, $157 = 0.0, $16 = 0.0, $160 = 0.0, $164 = 0.0, $169 = 0.0, $171 = 0.0, $18 = 0.0, $19 = 0.0, $2 = 0.0, $202 = 0.0, $204 = 0.0, $206 = 0.0, $207 = 0, $21 = 0.0, $211 = 0.0, $215 = 0.0, $22 = 0.0, $24 = 0.0, $26 = 0.0, $28 = 0.0, $29 = 0.0, $31 = 0.0, $32 = 0.0, $34 = 0.0, $4 = 0.0, $5 = 0, $52 = 0.0, $6 = 0.0, $7 = 0.0, $71 = 0.0, $79 = 0.0, $9 = 0.0, $92 = 0, $93 = 0, $96 = 0, $98 = 0, $J_T_S$i = 0, $J_U_Xc = 0, $J_Xc_S = 0, $J_Xc_T$i = 0, $i$0$i7 = 0, $i$04 = 0, $j$0$i8 = 0, $j$05 = 0, $k$0$i6 = 0, $vararg_buffer = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 1072 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp + 1056 | 0; + $J_Xc_T$i = sp + 768 | 0; + $J_T_S$i = sp + 192 | 0; + $J_Xc_S = sp + 48 | 0; + $J_U_Xc = sp; + $0 = +HEAPF64[$matXw2Xc >> 3]; + $1 = +HEAPF64[$worldCoord >> 3]; + $2 = $0 * $1; + $4 = +HEAPF64[$matXw2Xc + 8 >> 3]; + $5 = $worldCoord + 8 | 0; + $6 = +HEAPF64[$5 >> 3]; + $7 = $4 * $6; + $9 = +HEAPF64[$matXw2Xc + 16 >> 3]; + $11 = +HEAPF64[$worldCoord + 16 >> 3]; + $12 = $9 * $11; + $14 = +HEAPF64[$matXw2Xc + 24 >> 3]; + $16 = +HEAPF64[$matXw2Xc + 32 >> 3]; + $18 = +HEAPF64[$matXw2Xc + 40 >> 3]; + $19 = $6 * $18; + $21 = +HEAPF64[$matXw2Xc + 48 >> 3]; + $22 = $11 * $21; + $24 = +HEAPF64[$matXw2Xc + 56 >> 3]; + $26 = +HEAPF64[$matXw2Xc + 64 >> 3]; + $28 = +HEAPF64[$matXw2Xc + 72 >> 3]; + $29 = $6 * $28; + $31 = +HEAPF64[$matXw2Xc + 80 >> 3]; + $32 = $11 * $31; + $34 = +HEAPF64[$matXw2Xc + 88 >> 3]; + HEAPF64[$J_Xc_T$i >> 3] = $2; + HEAPF64[$J_Xc_T$i + 8 >> 3] = $0 * $6; + HEAPF64[$J_Xc_T$i + 16 >> 3] = $0 * $11; + HEAPF64[$J_Xc_T$i + 24 >> 3] = $1 * $4; + HEAPF64[$J_Xc_T$i + 32 >> 3] = $7; + HEAPF64[$J_Xc_T$i + 40 >> 3] = $11 * $4; + HEAPF64[$J_Xc_T$i + 48 >> 3] = $1 * $9; + HEAPF64[$J_Xc_T$i + 56 >> 3] = $6 * $9; + HEAPF64[$J_Xc_T$i + 64 >> 3] = $12; + HEAPF64[$J_Xc_T$i + 72 >> 3] = $0; + HEAPF64[$J_Xc_T$i + 80 >> 3] = $4; + HEAPF64[$J_Xc_T$i + 88 >> 3] = $9; + $52 = $1 * $16; + HEAPF64[$J_Xc_T$i + 96 >> 3] = $52; + HEAPF64[$J_Xc_T$i + 104 >> 3] = $6 * $16; + HEAPF64[$J_Xc_T$i + 112 >> 3] = $11 * $16; + HEAPF64[$J_Xc_T$i + 120 >> 3] = $1 * $18; + HEAPF64[$J_Xc_T$i + 128 >> 3] = $19; + HEAPF64[$J_Xc_T$i + 136 >> 3] = $11 * $18; + HEAPF64[$J_Xc_T$i + 144 >> 3] = $1 * $21; + HEAPF64[$J_Xc_T$i + 152 >> 3] = $6 * $21; + HEAPF64[$J_Xc_T$i + 160 >> 3] = $22; + HEAPF64[$J_Xc_T$i + 168 >> 3] = $16; + HEAPF64[$J_Xc_T$i + 176 >> 3] = $18; + HEAPF64[$J_Xc_T$i + 184 >> 3] = $21; + $71 = $26 * $1; + HEAPF64[$J_Xc_T$i + 192 >> 3] = $71; + HEAPF64[$J_Xc_T$i + 200 >> 3] = $6 * $26; + HEAPF64[$J_Xc_T$i + 208 >> 3] = $11 * $26; + HEAPF64[$J_Xc_T$i + 216 >> 3] = $1 * $28; + $79 = +HEAPF64[$5 >> 3]; + HEAPF64[$J_Xc_T$i + 224 >> 3] = $28 * $79; + HEAPF64[$J_Xc_T$i + 232 >> 3] = $11 * $28; + HEAPF64[$J_Xc_T$i + 240 >> 3] = $1 * $31; + HEAPF64[$J_Xc_T$i + 248 >> 3] = $79 * $31; + HEAPF64[$J_Xc_T$i + 256 >> 3] = $32; + HEAPF64[$J_Xc_T$i + 264 >> 3] = $26; + HEAPF64[$J_Xc_T$i + 272 >> 3] = $28; + HEAPF64[$J_Xc_T$i + 280 >> 3] = $31; + $92 = $J_T_S$i + 64 | 0; + dest = $J_T_S$i; + stop = dest + 64 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$92 >> 3] = -1.0; + $93 = $J_T_S$i + 72 | 0; + HEAP32[$93 >> 2] = 0; + HEAP32[$93 + 4 >> 2] = 0; + HEAP32[$93 + 8 >> 2] = 0; + HEAP32[$93 + 12 >> 2] = 0; + HEAP32[$93 + 16 >> 2] = 0; + HEAP32[$93 + 20 >> 2] = 0; + HEAP32[$93 + 24 >> 2] = 0; + HEAP32[$93 + 28 >> 2] = 0; + HEAPF64[$J_T_S$i + 104 >> 3] = 1.0; + $96 = $J_T_S$i + 160 | 0; + dest = $J_T_S$i + 112 | 0; + stop = dest + 48 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$96 >> 3] = 1.0; + $98 = $J_T_S$i + 240 | 0; + dest = $J_T_S$i + 168 | 0; + stop = dest + 72 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$98 >> 3] = -1.0; + $100 = $J_T_S$i + 296 | 0; + dest = $J_T_S$i + 248 | 0; + stop = dest + 48 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$100 >> 3] = -1.0; + $101 = $J_T_S$i + 304 | 0; + HEAP32[$101 >> 2] = 0; + HEAP32[$101 + 4 >> 2] = 0; + HEAP32[$101 + 8 >> 2] = 0; + HEAP32[$101 + 12 >> 2] = 0; + HEAP32[$101 + 16 >> 2] = 0; + HEAP32[$101 + 20 >> 2] = 0; + HEAP32[$101 + 24 >> 2] = 0; + HEAP32[$101 + 28 >> 2] = 0; + HEAPF64[$J_T_S$i + 336 >> 3] = 1.0; + $104 = $J_T_S$i + 456 | 0; + dest = $J_T_S$i + 344 | 0; + stop = dest + 112 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$104 >> 3] = 1.0; + $106 = $J_T_S$i + 512 | 0; + dest = $J_T_S$i + 464 | 0; + stop = dest + 48 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$106 >> 3] = 1.0; + $108 = $J_T_S$i + 568 | 0; + dest = $J_T_S$i + 520 | 0; + stop = dest + 48 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAPF64[$108 >> 3] = 1.0; + $j$0$i8 = 0; + do { + $i$0$i7 = 0; + do { + $109 = $J_Xc_S + ($j$0$i8 * 48 | 0) + ($i$0$i7 << 3) | 0; + HEAPF64[$109 >> 3] = 0.0; + $116 = 0.0; + $k$0$i6 = 0; + while (1) { + $115 = $116 + +HEAPF64[$J_Xc_T$i + ($j$0$i8 * 96 | 0) + ($k$0$i6 << 3) >> 3] * +HEAPF64[$J_T_S$i + ($k$0$i6 * 48 | 0) + ($i$0$i7 << 3) >> 3]; + $k$0$i6 = $k$0$i6 + 1 | 0; + if (($k$0$i6 | 0) == 12) { + $$lcssa = $115; + break; + } else $116 = $115; + } + HEAPF64[$109 >> 3] = $$lcssa; + $i$0$i7 = $i$0$i7 + 1 | 0; + } while (($i$0$i7 | 0) != 6); + $j$0$i8 = $j$0$i8 + 1 | 0; + } while (($j$0$i8 | 0) != 3); + $122 = $14 + ($2 + $7 + $12); + $125 = $24 + ($52 + $19 + $22); + $128 = $34 + ($71 + $29 + $32); + $129 = +HEAPF64[$matXc2U >> 3]; + $132 = +HEAPF64[$matXc2U + 8 >> 3]; + $136 = +HEAPF64[$matXc2U + 16 >> 3]; + $141 = +HEAPF64[$matXc2U + 24 >> 3] + ($122 * $129 + $125 * $132 + $128 * $136); + $143 = +HEAPF64[$matXc2U + 32 >> 3]; + $146 = +HEAPF64[$matXc2U + 40 >> 3]; + $150 = +HEAPF64[$matXc2U + 48 >> 3]; + $155 = +HEAPF64[$matXc2U + 56 >> 3] + ($122 * $143 + $125 * $146 + $128 * $150); + $157 = +HEAPF64[$matXc2U + 64 >> 3]; + $160 = +HEAPF64[$matXc2U + 72 >> 3]; + $164 = +HEAPF64[$matXc2U + 80 >> 3]; + $169 = +HEAPF64[$matXc2U + 88 >> 3] + ($122 * $157 + $125 * $160 + $128 * $164); + if ($169 == 0.0) { + _arLog(3, 5089, $vararg_buffer); + $$0 = -1; + } else { + $171 = $169 * $169; + HEAPF64[$J_U_Xc >> 3] = ($129 * $169 - $141 * $157) / $171; + HEAPF64[$J_U_Xc + 8 >> 3] = ($169 * $132 - $141 * $160) / $171; + HEAPF64[$J_U_Xc + 16 >> 3] = ($169 * $136 - $141 * $164) / $171; + HEAPF64[$J_U_Xc + 24 >> 3] = ($169 * $143 - $155 * $157) / $171; + HEAPF64[$J_U_Xc + 32 >> 3] = ($169 * $146 - $155 * $160) / $171; + HEAPF64[$J_U_Xc + 40 >> 3] = ($169 * $150 - $155 * $164) / $171; + $j$05 = 0; + do { + $202 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) >> 3]; + $204 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 8 >> 3]; + $206 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 16 >> 3]; + $i$04 = 0; + do { + $207 = $J_U_S + ($j$05 * 48 | 0) + ($i$04 << 3) | 0; + HEAPF64[$207 >> 3] = 0.0; + $211 = $202 * +HEAPF64[$J_Xc_S + ($i$04 << 3) >> 3] + 0.0; + HEAPF64[$207 >> 3] = $211; + $215 = $211 + $204 * +HEAPF64[$J_Xc_S + 48 + ($i$04 << 3) >> 3]; + HEAPF64[$207 >> 3] = $215; + HEAPF64[$207 >> 3] = $215 + $206 * +HEAPF64[$J_Xc_S + 96 + ($i$04 << 3) >> 3]; + $i$04 = $i$04 + 1 | 0; + } while (($i$04 | 0) != 6); + $j$05 = $j$05 + 1 | 0; + } while (($j$05 | 0) != 2); + $$0 = 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i18 = 0, $$0$i$i1027 = 0, $$0$i$i24 = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $104 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $118 = 0, $120 = 0, $123 = 0, $124 = 0, $15 = 0, $16 = 0, $2 = 0, $22 = 0, $29 = 0, $3 = 0, $30 = 0, $39 = 0, $4 = 0, $42 = 0, $43 = 0, $45 = 0, $5 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $59 = 0, $61 = 0, $64 = 0, $65 = 0, $69 = 0, $74 = 0, $75 = 0, $81 = 0, $88 = 0, $89 = 0, $98 = 0, $__p$0$i$i23 = 0, $__p$0$i$i926 = 0, $__p$0$ph$i$i = 0, $__p$0$ph$i$i7 = 0, $__v$i$i17 = 0, $cv = 0, $cv1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 128 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i17 = sp + 108 | 0; + $cv = sp + 104 | 0; + $0 = sp + 80 | 0; + $1 = sp + 64 | 0; + $2 = sp + 52 | 0; + $cv1 = sp + 48 | 0; + $3 = sp + 24 | 0; + $4 = sp + 12 | 0; + $5 = sp; + L1 : do if (($last - $first | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 102) { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 112: + { + $15 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first + 2 | 0, $last, $cv) | 0; + $16 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($15, $last) | 0; + if (($16 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + if ((HEAP8[$16 >> 0] | 0) != 95) { + $$0 = $first; + break L1; + } + $22 = $16 - $15 | 0; + if ($22 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2); + if ($22 >>> 0 < 11) { + HEAP8[$2 >> 0] = $22 << 1; + $__p$0$ph$i$i = $2 + 1 | 0; + } else { + $29 = $22 + 16 & -16; + $30 = _malloc($29) | 0; + HEAP32[$2 + 8 >> 2] = $30; + HEAP32[$2 >> 2] = $29 | 1; + HEAP32[$2 + 4 >> 2] = $22; + $__p$0$ph$i$i = $30; + } + if (($15 | 0) != ($16 | 0)) { + $$0$i$i24 = $15; + $__p$0$i$i23 = $__p$0$ph$i$i; + while (1) { + HEAP8[$__p$0$i$i23 >> 0] = HEAP8[$$0$i$i24 >> 0] | 0; + $$0$i$i24 = $$0$i$i24 + 1 | 0; + if (($$0$i$i24 | 0) == ($16 | 0)) break; else $__p$0$i$i23 = $__p$0$i$i23 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i + $22 >> 0] = 0; + $39 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14149) | 0; + HEAP32[$1 >> 2] = HEAP32[$39 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$39 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$39 + 8 >> 2]; + HEAP32[$39 >> 2] = 0; + HEAP32[$39 + 4 >> 2] = 0; + HEAP32[$39 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + $42 = $db + 4 | 0; + $43 = HEAP32[$42 >> 2] | 0; + $45 = HEAP32[$db + 8 >> 2] | 0; + if ($43 >>> 0 < $45 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0); + HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 24; + } else { + $52 = HEAP32[$db >> 2] | 0; + $53 = $43 - $52 | 0; + $54 = ($53 | 0) / 24 | 0; + $55 = $54 + 1 | 0; + if (($53 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $59 = ($45 - $52 | 0) / 24 | 0; + if ($59 >>> 0 < 1073741823) { + $61 = $59 << 1; + $$0$i$i$i = $61 >>> 0 < $55 >>> 0 ? $55 : $61; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i, $54, $db + 12 | 0); + $64 = $__v$i$i17 + 8 | 0; + $65 = HEAP32[$64 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($65, $0); + HEAP32[$64 >> 2] = $65 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$0 = $16 + 1 | 0; + break L1; + break; + } + case 76: + break; + default: + { + $$0 = $first; + break L1; + } + } + $69 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first + 2 | 0, $last) | 0; + if (($69 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$69 >> 0] | 0) == 112) { + $74 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($69 + 1 | 0, $last, $cv1) | 0; + $75 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($74, $last) | 0; + if (($75 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$75 >> 0] | 0) == 95) { + $81 = $75 - $74 | 0; + if ($81 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($5); + if ($81 >>> 0 < 11) { + HEAP8[$5 >> 0] = $81 << 1; + $__p$0$ph$i$i7 = $5 + 1 | 0; + } else { + $88 = $81 + 16 & -16; + $89 = _malloc($88) | 0; + HEAP32[$5 + 8 >> 2] = $89; + HEAP32[$5 >> 2] = $88 | 1; + HEAP32[$5 + 4 >> 2] = $81; + $__p$0$ph$i$i7 = $89; + } + if (($74 | 0) != ($75 | 0)) { + $$0$i$i1027 = $74; + $__p$0$i$i926 = $__p$0$ph$i$i7; + while (1) { + HEAP8[$__p$0$i$i926 >> 0] = HEAP8[$$0$i$i1027 >> 0] | 0; + $$0$i$i1027 = $$0$i$i1027 + 1 | 0; + if (($$0$i$i1027 | 0) == ($75 | 0)) break; else $__p$0$i$i926 = $__p$0$i$i926 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i7 + $81 >> 0] = 0; + $98 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($5, 0, 14149) | 0; + HEAP32[$4 >> 2] = HEAP32[$98 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$98 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$98 + 8 >> 2]; + HEAP32[$98 >> 2] = 0; + HEAP32[$98 + 4 >> 2] = 0; + HEAP32[$98 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4); + $101 = $db + 4 | 0; + $102 = HEAP32[$101 >> 2] | 0; + $104 = HEAP32[$db + 8 >> 2] | 0; + if ($102 >>> 0 < $104 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($102, $3); + HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + 24; + } else { + $111 = HEAP32[$db >> 2] | 0; + $112 = $102 - $111 | 0; + $113 = ($112 | 0) / 24 | 0; + $114 = $113 + 1 | 0; + if (($112 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $118 = ($104 - $111 | 0) / 24 | 0; + if ($118 >>> 0 < 1073741823) { + $120 = $118 << 1; + $$0$i$i$i18 = $120 >>> 0 < $114 >>> 0 ? $114 : $120; + } else $$0$i$i$i18 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i18, $113, $db + 12 | 0); + $123 = $__v$i$i17 + 8 | 0; + $124 = HEAP32[$123 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($124, $3); + HEAP32[$123 >> 2] = $124 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + $$0 = $75 + 1 | 0; + } else $$0 = $first; + } else $$0 = $first; + } else $$0 = $first; else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _icpPointRobust($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) { + $handle = $handle | 0; + $data = $data | 0; + $initMatXw2Xc = $initMatXw2Xc | 0; + $matXw2Xc = $matXw2Xc | 0; + $err = $err | 0; + var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa50 = 0.0, $$pn = 0.0, $$pre = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $108 = 0.0, $109 = 0.0, $11 = 0, $113 = 0, $117 = 0, $121 = 0, $125 = 0, $129 = 0, $133 = 0, $137 = 0, $14 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $16 = 0, $17 = 0, $174 = 0, $19 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $41 = 0, $47 = 0, $51 = 0.0, $55 = 0.0, $56 = 0, $62 = 0.0, $66 = 0, $69 = 0.0, $71 = 0, $72 = 0.0, $75 = 0.0, $78 = 0.0, $8 = 0, $86 = 0.0, $99 = 0.0, $K2$0 = 0.0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$032 = 0.0, $err1$1 = 0.0, $i$1 = 0, $j$043 = 0, $j$131 = 0, $j$233 = 0, $j$338 = 0, $k$0$lcssa = 0, $k$039 = 0, $k$1 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 192 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer5 = sp + 184 | 0; + $vararg_buffer3 = sp + 176 | 0; + $vararg_buffer1 = sp + 168 | 0; + $vararg_buffer = sp + 160 | 0; + $U = sp + 48 | 0; + $matXw2U = sp + 64 | 0; + $dS = sp; + $0 = $data + 8 | 0; + $1 = HEAP32[$0 >> 2] | 0; + do if (($1 | 0) < 4) $$0 = -1; else { + $8 = ~~(+($1 | 0) * +HEAPF64[$handle + 128 >> 3]) + -1 | 0; + $$ = ($8 | 0) < 3 ? 3 : $8; + $11 = _malloc($1 * 96 | 0) | 0; + if (!$11) { + _arLog(3, 5109, $vararg_buffer); + $$0 = -1; + break; + } + $14 = _malloc($1 << 4) | 0; + if (!$14) { + _arLog(3, 5109, $vararg_buffer1); + _free($11); + $$0 = -1; + break; + } + $16 = $1 << 3; + $17 = _malloc($16) | 0; + if (!$17) { + _arLog(3, 5109, $vararg_buffer3); + _free($11); + _free($14); + $$0 = -1; + break; + } + $19 = _malloc($16) | 0; + if (!$19) { + _arLog(3, 5109, $vararg_buffer5); + _free($11); + _free($14); + _free($17); + $$0 = -1; + break; + } else $j$043 = 0; + do { + HEAPF64[$matXw2Xc + ($j$043 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) >> 3]; + HEAPF64[$matXw2Xc + ($j$043 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 8 >> 3]; + HEAPF64[$matXw2Xc + ($j$043 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 16 >> 3]; + HEAPF64[$matXw2Xc + ($j$043 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 24 >> 3]; + $j$043 = $j$043 + 1 | 0; + } while (($j$043 | 0) != 3); + $21 = $data + 4 | 0; + $22 = $U + 8 | 0; + $23 = $19 + ($$ << 3) | 0; + $24 = $handle + 104 | 0; + $25 = $handle + 120 | 0; + $26 = $handle + 112 | 0; + $27 = $handle + 96 | 0; + $err0$0 = 0.0; + $i$1 = 0; + L17 : while (1) { + _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0; + $41 = HEAP32[$0 >> 2] | 0; + if (($41 | 0) > 0) { + $j$131 = 0; + while (1) { + if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$21 >> 2] | 0) + ($j$131 * 24 | 0) | 0) | 0) < 0) { + label = 14; + break L17; + } + $47 = HEAP32[$data >> 2] | 0; + $51 = +HEAPF64[$47 + ($j$131 << 4) >> 3] - +HEAPF64[$U >> 3]; + $55 = +HEAPF64[$47 + ($j$131 << 4) + 8 >> 3] - +HEAPF64[$22 >> 3]; + $56 = $j$131 << 1; + HEAPF64[$14 + ($56 << 3) >> 3] = $51; + HEAPF64[$14 + (($56 | 1) << 3) >> 3] = $55; + $62 = $51 * $51 + $55 * $55; + HEAPF64[$19 + ($j$131 << 3) >> 3] = $62; + HEAPF64[$17 + ($j$131 << 3) >> 3] = $62; + $j$131 = $j$131 + 1 | 0; + $66 = HEAP32[$0 >> 2] | 0; + if (($j$131 | 0) >= ($66 | 0)) { + $$lcssa = $66; + break; + } + } + } else $$lcssa = $41; + _qsort($19, $$lcssa, 8, 1); + $69 = +HEAPF64[$23 >> 3] * 4.0; + $K2$0 = $69 < 16.0 ? 16.0 : $69; + $71 = HEAP32[$0 >> 2] | 0; + $72 = $K2$0 / 6.0; + if (($71 | 0) > 0) { + $err1$032 = 0.0; + $j$233 = 0; + while (1) { + $75 = +HEAPF64[$19 + ($j$233 << 3) >> 3]; + if ($75 > $K2$0) $$pn = $72; else { + $78 = 1.0 - $75 / $K2$0; + $$pn = $72 * (1.0 - $78 * ($78 * $78)); + } + $err1$1 = $err1$032 + $$pn; + $j$233 = $j$233 + 1 | 0; + if (($j$233 | 0) >= ($71 | 0)) { + $err1$0$lcssa = $err1$1; + break; + } else $err1$032 = $err1$1; + } + } else $err1$0$lcssa = 0.0; + $86 = $err1$0$lcssa / +($71 | 0); + if ($86 < +HEAPF64[$24 >> 3]) { + $$lcssa50 = $86; + label = 36; + break; + } + if (($i$1 | 0) > 0) if ($86 < +HEAPF64[$25 >> 3]) if ($86 / $err0$0 > +HEAPF64[$26 >> 3]) { + $$lcssa50 = $86; + label = 36; + break; + } + if (($i$1 | 0) == (HEAP32[$27 >> 2] | 0)) { + $$lcssa50 = $86; + label = 36; + break; + } + if (($71 | 0) > 0) { + $174 = $71; + $j$338 = 0; + $k$039 = 0; + while (1) { + $99 = +HEAPF64[$17 + ($j$338 << 3) >> 3]; + if (!($99 <= $K2$0)) { + $$pre = $174; + $k$1 = $k$039; + } else { + $101 = $k$039 * 6 | 0; + $102 = $11 + ($101 << 3) | 0; + if ((_icpGetJ_U_S($102, $handle, $matXw2Xc, (HEAP32[$21 >> 2] | 0) + ($j$338 * 24 | 0) | 0) | 0) < 0) { + label = 28; + break L17; + } + $108 = 1.0 - $99 / $K2$0; + $109 = $108 * $108; + HEAPF64[$102 >> 3] = +HEAPF64[$102 >> 3] * $109; + $113 = $11 + (($101 | 1) << 3) | 0; + HEAPF64[$113 >> 3] = +HEAPF64[$113 >> 3] * $109; + $117 = $11 + ($101 + 2 << 3) | 0; + HEAPF64[$117 >> 3] = $109 * +HEAPF64[$117 >> 3]; + $121 = $11 + ($101 + 3 << 3) | 0; + HEAPF64[$121 >> 3] = $109 * +HEAPF64[$121 >> 3]; + $125 = $11 + ($101 + 4 << 3) | 0; + HEAPF64[$125 >> 3] = $109 * +HEAPF64[$125 >> 3]; + $129 = $11 + ($101 + 5 << 3) | 0; + HEAPF64[$129 >> 3] = $109 * +HEAPF64[$129 >> 3]; + $133 = $11 + ($101 + 6 << 3) | 0; + HEAPF64[$133 >> 3] = $109 * +HEAPF64[$133 >> 3]; + $137 = $11 + ($101 + 7 << 3) | 0; + HEAPF64[$137 >> 3] = $109 * +HEAPF64[$137 >> 3]; + $141 = $11 + ($101 + 8 << 3) | 0; + HEAPF64[$141 >> 3] = $109 * +HEAPF64[$141 >> 3]; + $145 = $11 + ($101 + 9 << 3) | 0; + HEAPF64[$145 >> 3] = $109 * +HEAPF64[$145 >> 3]; + $149 = $11 + ($101 + 10 << 3) | 0; + HEAPF64[$149 >> 3] = $109 * +HEAPF64[$149 >> 3]; + $153 = $11 + ($101 + 11 << 3) | 0; + HEAPF64[$153 >> 3] = $109 * +HEAPF64[$153 >> 3]; + $156 = $j$338 << 1; + HEAPF64[$14 + ($k$039 << 3) >> 3] = $109 * +HEAPF64[$14 + ($156 << 3) >> 3]; + HEAPF64[$14 + ($k$039 + 1 << 3) >> 3] = $109 * +HEAPF64[$14 + (($156 | 1) << 3) >> 3]; + $$pre = HEAP32[$0 >> 2] | 0; + $k$1 = $k$039 + 2 | 0; + } + $j$338 = $j$338 + 1 | 0; + if (($j$338 | 0) >= ($$pre | 0)) { + $k$0$lcssa = $k$1; + break; + } else { + $174 = $$pre; + $k$039 = $k$1; + } + } + } else $k$0$lcssa = 0; + if (($k$0$lcssa | 0) < 6) { + label = 32; + break; + } + if ((_icpGetDeltaS($dS, $14, $11, $k$0$lcssa) | 0) < 0) { + label = 34; + break; + } + _icpUpdateMat($matXw2Xc, $dS) | 0; + $err0$0 = $86; + $i$1 = $i$1 + 1 | 0; + } + if ((label | 0) == 14) { + _icpGetXw2XcCleanup295($11, $14, $17, $19); + $$0 = -1; + break; + } else if ((label | 0) == 28) { + _icpGetXw2XcCleanup295($11, $14, $17, $19); + $$0 = -1; + break; + } else if ((label | 0) == 32) { + _icpGetXw2XcCleanup295($11, $14, $17, $19); + $$0 = -1; + break; + } else if ((label | 0) == 34) { + _icpGetXw2XcCleanup295($11, $14, $17, $19); + $$0 = -1; + break; + } else if ((label | 0) == 36) { + HEAPF64[$err >> 3] = $$lcssa50; + _free($11); + _free($14); + _free($17); + _free($19); + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arParamObserv2Ideal($dist_factor, $ox, $oy, $ix, $iy, $dist_function_version) { + $dist_factor = $dist_factor | 0; + $ox = +$ox; + $oy = +$oy; + $ix = $ix | 0; + $iy = $iy | 0; + $dist_function_version = $dist_function_version | 0; + var $$0 = 0, $0 = 0.0, $10 = 0.0, $101 = 0.0, $103 = 0.0, $104 = 0, $106 = 0.0, $109 = 0.0, $113 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0.0, $134 = 0.0, $14 = 0.0, $146 = 0, $154 = 0.0, $155 = 0.0, $156 = 0, $158 = 0.0, $16 = 0.0, $161 = 0.0, $165 = 0.0, $168 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $18 = 0.0, $186 = 0.0, $198 = 0, $2 = 0.0, $20 = 0.0, $206 = 0.0, $207 = 0.0, $208 = 0, $21 = 0.0, $210 = 0.0, $213 = 0.0, $216 = 0.0, $217 = 0.0, $218 = 0.0, $22 = 0.0, $227 = 0.0, $23 = 0.0, $239 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $29 = 0.0, $34 = 0.0, $4 = 0.0, $44 = 0.0, $50 = 0.0, $6 = 0.0, $67 = 0.0, $8 = 0.0, $i$03 = 0, $i14$029 = 0, $i21$042 = 0, $i5$015 = 0, $px$07 = 0.0, $px$1 = 0.0, $px12$027 = 0.0, $px12$1 = 0.0, $px19$040 = 0.0, $px19$1 = 0.0, $px3$012 = 0.0, $px3$1 = 0.0, $py$06 = 0.0, $py$1 = 0.0, $py13$028 = 0.0, $py13$1 = 0.0, $py20$041 = 0.0, $py20$1 = 0.0, $py4$013 = 0.0, $py4$1 = 0.0, $x02$05 = 0.0, $y02$04 = 0.0, $z0$014 = 0.0, $z016$039 = 0.0, $z02$016 = 0.0, $z0215$038 = 0.0, $z026$025 = 0.0, $z07$026 = 0.0; + switch ($dist_function_version | 0) { + case 4: + { + $0 = +HEAPF64[$dist_factor >> 3]; + $2 = +HEAPF64[$dist_factor + 8 >> 3]; + $4 = +HEAPF64[$dist_factor + 16 >> 3]; + $6 = +HEAPF64[$dist_factor + 24 >> 3]; + $8 = +HEAPF64[$dist_factor + 32 >> 3]; + $10 = +HEAPF64[$dist_factor + 40 >> 3]; + $12 = +HEAPF64[$dist_factor + 48 >> 3]; + $14 = +HEAPF64[$dist_factor + 56 >> 3]; + $16 = +HEAPF64[$dist_factor + 64 >> 3]; + $18 = ($ox - $12) / $8; + $20 = ($oy - $14) / $10; + $21 = $18 * $18; + $22 = $20 * $20; + $23 = $4 * 2.0; + $24 = $6 * 6.0; + $25 = $6 * 2.0; + $26 = $4 * 6.0; + L3 : do if ($22 != 0.0 | $21 != 0.0) { + $i$03 = 1; + $px$07 = $18; + $py$06 = $20; + $x02$05 = $21; + $y02$04 = $22; + while (1) { + $29 = $y02$04 + $x02$05; + $34 = $0 * $29 + 1.0 + $29 * ($2 * $29); + $44 = $x02$05 * 3.0; + $50 = $y02$04 * $44; + $px$07 = $px$07 - ($6 * ($29 + $x02$05 * 2.0) + ($py$06 * ($23 * $px$07) + $px$07 * $34) - $18) / ($24 * $px$07 + ($23 * $py$06 + ($0 * ($y02$04 + $44) + 1.0 + $2 * ($y02$04 * $y02$04 + ($x02$05 * ($x02$05 * 5.0) + $50))))); + $67 = $25 * $px$07; + $py$06 = $py$06 - ($4 * ($y02$04 * 2.0 + $29) + $py$06 * $34 + $py$06 * $67 - $20) / ($26 * $py$06 + ($0 * ($x02$05 + $y02$04 * 3.0) + 1.0 + $2 * ($y02$04 * ($y02$04 * 5.0) + ($x02$05 * $x02$05 + $50))) + $67); + if (($i$03 | 0) == 4) { + $px$1 = $px$07; + $py$1 = $py$06; + break L3; + } + $x02$05 = $px$07 * $px$07; + $y02$04 = $py$06 * $py$06; + if (!($y02$04 != 0.0 | $x02$05 != 0.0)) { + $px$1 = 0.0; + $py$1 = 0.0; + break; + } else $i$03 = $i$03 + 1 | 0; + } + } else { + $px$1 = 0.0; + $py$1 = 0.0; + } while (0); + HEAPF64[$ix >> 3] = $12 + $8 * $px$1 / $16; + HEAPF64[$iy >> 3] = $14 + $10 * $py$1 / $16; + $$0 = 0; + break; + } + case 3: + { + $101 = +HEAPF64[$dist_factor >> 3]; + $103 = ($ox - $101) / +HEAPF64[$dist_factor + 24 >> 3]; + $104 = $dist_factor + 8 | 0; + $106 = $oy - +HEAPF64[$104 >> 3]; + $109 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8; + $113 = +HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5; + $116 = $103 * $103 + $106 * $106; + $117 = +Math_sqrt(+$116); + $118 = $109 * 3.0; + $119 = $113 * 5.0; + L9 : do if ($117 != 0.0) { + $i5$015 = 1; + $px3$012 = $103; + $py4$013 = $106; + $z0$014 = $117; + $z02$016 = $116; + while (1) { + $134 = $z0$014 - ($z0$014 * (1.0 - $109 * $z02$016 - $z02$016 * ($113 * $z02$016)) - $117) / (1.0 - $118 * $z02$016 - $z02$016 * ($119 * $z02$016)); + $px3$012 = $px3$012 * $134 / $z0$014; + $py4$013 = $py4$013 * $134 / $z0$014; + if (($i5$015 | 0) == 3) { + $px3$1 = $px3$012; + $py4$1 = $py4$013; + break L9; + } + $z02$016 = $px3$012 * $px3$012 + $py4$013 * $py4$013; + $z0$014 = +Math_sqrt(+$z02$016); + if (!($z0$014 != 0.0)) { + $px3$1 = 0.0; + $py4$1 = 0.0; + break; + } else $i5$015 = $i5$015 + 1 | 0; + } + } else { + $px3$1 = 0.0; + $py4$1 = 0.0; + } while (0); + $146 = $dist_factor + 16 | 0; + HEAPF64[$ix >> 3] = $px3$1 / +HEAPF64[$146 >> 3] + $101; + HEAPF64[$iy >> 3] = $py4$1 / +HEAPF64[$146 >> 3] + +HEAPF64[$104 >> 3]; + $$0 = 0; + break; + } + case 2: + { + $154 = +HEAPF64[$dist_factor >> 3]; + $155 = $ox - $154; + $156 = $dist_factor + 8 | 0; + $158 = $oy - +HEAPF64[$156 >> 3]; + $161 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8; + $165 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5; + $168 = $155 * $155 + $158 * $158; + $169 = +Math_sqrt(+$168); + $170 = $161 * 3.0; + $171 = $165 * 5.0; + L15 : do if ($169 != 0.0) { + $i14$029 = 1; + $px12$027 = $155; + $py13$028 = $158; + $z026$025 = $168; + $z07$026 = $169; + while (1) { + $186 = $z07$026 - ($z07$026 * (1.0 - $161 * $z026$025 - $z026$025 * ($165 * $z026$025)) - $169) / (1.0 - $170 * $z026$025 - $z026$025 * ($171 * $z026$025)); + $px12$027 = $px12$027 * $186 / $z07$026; + $py13$028 = $py13$028 * $186 / $z07$026; + if (($i14$029 | 0) == 3) { + $px12$1 = $px12$027; + $py13$1 = $py13$028; + break L15; + } + $z026$025 = $px12$027 * $px12$027 + $py13$028 * $py13$028; + $z07$026 = +Math_sqrt(+$z026$025); + if (!($z07$026 != 0.0)) { + $px12$1 = 0.0; + $py13$1 = 0.0; + break; + } else $i14$029 = $i14$029 + 1 | 0; + } + } else { + $px12$1 = 0.0; + $py13$1 = 0.0; + } while (0); + $198 = $dist_factor + 16 | 0; + HEAPF64[$ix >> 3] = $px12$1 / +HEAPF64[$198 >> 3] + $154; + HEAPF64[$iy >> 3] = $py13$1 / +HEAPF64[$198 >> 3] + +HEAPF64[$156 >> 3]; + $$0 = 0; + break; + } + case 1: + { + $206 = +HEAPF64[$dist_factor >> 3]; + $207 = $ox - $206; + $208 = $dist_factor + 8 | 0; + $210 = $oy - +HEAPF64[$208 >> 3]; + $213 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8; + $216 = $207 * $207 + $210 * $210; + $217 = +Math_sqrt(+$216); + $218 = $213 * 3.0; + L21 : do if ($217 != 0.0) { + $i21$042 = 1; + $px19$040 = $207; + $py20$041 = $210; + $z016$039 = $217; + $z0215$038 = $216; + while (1) { + $227 = $z016$039 - ($z016$039 * (1.0 - $213 * $z0215$038) - $217) / (1.0 - $218 * $z0215$038); + $px19$040 = $px19$040 * $227 / $z016$039; + $py20$041 = $py20$041 * $227 / $z016$039; + if (($i21$042 | 0) == 3) { + $px19$1 = $px19$040; + $py20$1 = $py20$041; + break L21; + } + $z0215$038 = $px19$040 * $px19$040 + $py20$041 * $py20$041; + $z016$039 = +Math_sqrt(+$z0215$038); + if (!($z016$039 != 0.0)) { + $px19$1 = 0.0; + $py20$1 = 0.0; + break; + } else $i21$042 = $i21$042 + 1 | 0; + } + } else { + $px19$1 = 0.0; + $py20$1 = 0.0; + } while (0); + $239 = $dist_factor + 16 | 0; + HEAPF64[$ix >> 3] = $px19$1 / +HEAPF64[$239 >> 3] + $206; + HEAPF64[$iy >> 3] = $py20$1 / +HEAPF64[$239 >> 3] + +HEAPF64[$208 >> 3]; + $$0 = 0; + break; + } + default: + $$0 = -1; + } + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0$i$i$i = 0, $$0$i$i$i8 = 0, $$02 = 0, $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $105 = 0, $108 = 0, $109 = 0, $13 = 0, $19 = 0, $2 = 0, $21 = 0, $26 = 0, $3 = 0, $33 = 0, $35 = 0, $40 = 0, $45 = 0, $47 = 0, $52 = 0, $56 = 0, $59 = 0, $60 = 0, $62 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $76 = 0, $78 = 0, $81 = 0, $82 = 0, $86 = 0, $87 = 0, $89 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $__v$i$i7 = 0, $c$0$in$lcssa = 0, $c$0$in29 = 0, $isdigittmp = 0, $isdigittmp427 = 0, $isdigittmp431 = 0, $n$0$lcssa = 0, $n$030 = 0, $r = 0, dest = 0, sp = 0, src = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 112 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i7 = sp + 88 | 0; + $r = sp + 76 | 0; + $0 = sp + 64 | 0; + $1 = sp + 40 | 0; + $2 = sp + 16 | 0; + $3 = sp; + L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else { + $isdigittmp = (HEAP8[$first >> 0] | 0) + -48 | 0; + if ($isdigittmp >>> 0 < 10) { + $7 = $first + 1 | 0; + if (($7 | 0) == ($last | 0)) $$02 = $first; else { + $isdigittmp427 = (HEAP8[$7 >> 0] | 0) + -48 | 0; + if ($isdigittmp427 >>> 0 < 10) { + $c$0$in29 = $7; + $isdigittmp431 = $isdigittmp427; + $n$030 = $isdigittmp; + while (1) { + $10 = $c$0$in29 + 1 | 0; + if (($10 | 0) == ($last | 0)) { + $$02 = $first; + break L1; + } + $13 = $isdigittmp431 + ($n$030 * 10 | 0) | 0; + $isdigittmp431 = (HEAP8[$10 >> 0] | 0) + -48 | 0; + if ($isdigittmp431 >>> 0 >= 10) { + $$lcssa = $c$0$in29; + $c$0$in$lcssa = $10; + $n$0$lcssa = $13; + break; + } else { + $c$0$in29 = $10; + $n$030 = $13; + } + } + } else { + $$lcssa = $first; + $c$0$in$lcssa = $7; + $n$0$lcssa = $isdigittmp; + } + if (($last - $c$0$in$lcssa | 0) >>> 0 < $n$0$lcssa >>> 0) $$02 = $first; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($r, $c$0$in$lcssa, $n$0$lcssa); + $19 = HEAP8[$r >> 0] | 0; + $21 = ($19 & 1) == 0; + $26 = $21 ? ($19 & 255) >>> 1 : HEAP32[$r + 4 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $21 ? $r + 1 | 0 : HEAP32[$r + 8 >> 2] | 0, $26 >>> 0 < 10 ? $26 : 10); + $33 = HEAP8[$0 >> 0] | 0; + $35 = ($33 & 1) == 0; + $40 = $35 ? ($33 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0; + $45 = $40 >>> 0 > 10; + $47 = _memcmp($35 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 13728, $45 ? 10 : $40) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + if (!((($47 | 0) == 0 ? ($40 >>> 0 < 10 ? -1 : $45 & 1) : $47) | 0)) { + $52 = _malloc(32) | 0; + HEAP32[$1 + 8 >> 2] = $52; + HEAP32[$1 >> 2] = 33; + HEAP32[$1 + 4 >> 2] = 21; + dest = $52; + src = 13739; + stop = dest + 21 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$52 + 21 >> 0] = 0; + $56 = $1 + 12 | 0; + HEAP32[$56 >> 2] = 0; + HEAP32[$56 + 4 >> 2] = 0; + HEAP32[$56 + 8 >> 2] = 0; + $59 = $db + 4 | 0; + $60 = HEAP32[$59 >> 2] | 0; + $62 = HEAP32[$db + 8 >> 2] | 0; + if ($60 >>> 0 < $62 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($60, $1); + HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + 24; + } else { + $69 = HEAP32[$db >> 2] | 0; + $70 = $60 - $69 | 0; + $71 = ($70 | 0) / 24 | 0; + $72 = $71 + 1 | 0; + if (($70 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $76 = ($62 - $69 | 0) / 24 | 0; + if ($76 >>> 0 < 1073741823) { + $78 = $76 << 1; + $$0$i$i$i = $78 >>> 0 < $72 >>> 0 ? $72 : $78; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i, $71, $db + 12 | 0); + $81 = $__v$i$i7 + 8 | 0; + $82 = HEAP32[$81 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1); + HEAP32[$81 >> 2] = $82 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1); + } else { + HEAP32[$3 >> 2] = HEAP32[$r >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$r + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$r + 8 >> 2]; + HEAP32[$r >> 2] = 0; + HEAP32[$r + 4 >> 2] = 0; + HEAP32[$r + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3); + $86 = $db + 4 | 0; + $87 = HEAP32[$86 >> 2] | 0; + $89 = HEAP32[$db + 8 >> 2] | 0; + if ($87 >>> 0 < $89 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($87, $2); + HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 24; + } else { + $96 = HEAP32[$db >> 2] | 0; + $97 = $87 - $96 | 0; + $98 = ($97 | 0) / 24 | 0; + $99 = $98 + 1 | 0; + if (($97 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $103 = ($89 - $96 | 0) / 24 | 0; + if ($103 >>> 0 < 1073741823) { + $105 = $103 << 1; + $$0$i$i$i8 = $105 >>> 0 < $99 >>> 0 ? $99 : $105; + } else $$0$i$i$i8 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i8, $98, $db + 12 | 0); + $108 = $__v$i$i7 + 8 | 0; + $109 = HEAP32[$108 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($109, $2); + HEAP32[$108 >> 2] = $109 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + } + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($r); + $$02 = $$lcssa + ($n$0$lcssa + 1) | 0; + } + } + } else $$02 = $first; + } while (0); + STACKTOP = sp; + return $$02 | 0; +} + +function _arPattLoadFromBuffer($pattHandle, $buffer) { + $pattHandle = $pattHandle | 0; + $buffer = $buffer | 0; + var $$0 = 0, $$lcssa = 0, $$lcssa36 = 0, $$pre = 0, $$pre17 = 0, $$pre18 = 0, $$pre19 = 0, $10 = 0, $101 = 0.0, $105 = 0, $13 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $27 = 0, $29 = 0, $30 = 0, $31 = 0, $36 = 0, $4 = 0, $43 = 0, $46 = 0, $47 = 0, $53 = 0, $56 = 0, $6 = 0, $63 = 0, $66 = 0, $72 = 0, $73 = 0, $75 = 0, $77 = 0, $83 = 0.0, $91 = 0, $92 = 0, $94 = 0, $96 = 0, $buffPtr$064 = 0, $buffPtr$151 = 0, $buffPtr$2$lcssa = 0, $buffPtr$2$lcssa$lcssa = 0, $buffPtr$245 = 0, $buffPtr$3$lcssa = 0, $buffPtr$339 = 0, $h$063 = 0, $i$0$lcssa = 0, $i$065 = 0, $i$152 = 0, $i$258 = 0, $i1$037 = 0, $i2$042 = 0, $i3$048 = 0, $l$050 = 0, $l$1$lcssa = 0, $l$1$lcssa$lcssa = 0, $l$144 = 0, $l$2$lcssa = 0, $l$238 = 0, $m$0$lcssa = 0, $m$053 = 0, $m$1$lcssa = 0, $m$159 = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer5 = sp + 24 | 0; + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer1 = sp + 8 | 0; + do if (!$pattHandle) { + _arLog(3, 4649, sp); + $$0 = -1; + } else { + if (!$buffer) { + _arLog(3, 4674, $vararg_buffer1); + $$0 = -1; + break; + } + $2 = $pattHandle + 8 | 0; + $4 = HEAP32[$pattHandle + 4 >> 2] | 0; + L7 : do if (($4 | 0) > 0) { + $6 = HEAP32[$2 >> 2] | 0; + $i$065 = 0; + while (1) { + if (!(HEAP32[$6 + ($i$065 << 2) >> 2] | 0)) { + $i$0$lcssa = $i$065; + break L7; + } + $10 = $i$065 + 1 | 0; + if (($10 | 0) < ($4 | 0)) $i$065 = $10; else { + $i$0$lcssa = $10; + break; + } + } + } else $i$0$lcssa = 0; while (0); + if (($i$0$lcssa | 0) == ($4 | 0)) $$0 = -1; else { + $13 = ___strdup($buffer) | 0; + if (!$13) { + _arLog(3, 4719, $vararg_buffer3); + $$0 = -1; + break; + } + $16 = $pattHandle + 28 | 0; + $17 = $i$0$lcssa << 2; + $18 = $pattHandle + 12 | 0; + $19 = $pattHandle + 20 | 0; + $20 = $pattHandle + 16 | 0; + $21 = $pattHandle + 24 | 0; + $buffPtr$064 = _strtok($13, 4742) | 0; + $h$063 = 0; + L17 : while (1) { + $22 = $h$063 + $17 | 0; + $buffPtr$151 = $buffPtr$064; + $i3$048 = 0; + $l$050 = 0; + while (1) { + $23 = ($i3$048 | 0) == 0; + $24 = ($i3$048 | 0) == 2; + $$pre18 = HEAP32[$16 >> 2] | 0; + if (($$pre18 | 0) > 0) { + $27 = $$pre18; + $buffPtr$245 = $buffPtr$151; + $i2$042 = 0; + $l$144 = $l$050; + while (1) { + if (($27 | 0) > 0) { + $buffPtr$339 = $buffPtr$245; + $i1$037 = 0; + $l$238 = $l$144; + while (1) { + if (!$buffPtr$339) { + label = 17; + break L17; + } + $29 = _atoi($buffPtr$339) | 0; + $30 = _strtok(0, 4742) | 0; + $31 = 255 - $29 | 0; + $36 = (((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0) * 3 | 0) + $i3$048 | 0; + HEAP32[(HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0) + ($36 << 2) >> 2] = $31; + $43 = (Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0; + $46 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0; + $47 = $46 + ($43 << 2) | 0; + if ($23) HEAP32[$47 >> 2] = $31; else { + HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $31; + if ($24) { + $53 = $46 + ((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 << 2) | 0; + HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) / 3 | 0; + } + } + $56 = $31 + $l$238 | 0; + $i1$037 = $i1$037 + 1 | 0; + $$pre19 = HEAP32[$16 >> 2] | 0; + if (($i1$037 | 0) >= ($$pre19 | 0)) { + $$lcssa = $$pre19; + $buffPtr$3$lcssa = $30; + $l$2$lcssa = $56; + break; + } else { + $buffPtr$339 = $30; + $l$238 = $56; + } + } + } else { + $$lcssa = $27; + $buffPtr$3$lcssa = $buffPtr$245; + $l$2$lcssa = $l$144; + } + $i2$042 = $i2$042 + 1 | 0; + if (($i2$042 | 0) >= ($$lcssa | 0)) { + $buffPtr$2$lcssa = $buffPtr$3$lcssa; + $l$1$lcssa = $l$2$lcssa; + break; + } else { + $27 = $$lcssa; + $buffPtr$245 = $buffPtr$3$lcssa; + $l$144 = $l$2$lcssa; + } + } + } else { + $buffPtr$2$lcssa = $buffPtr$151; + $l$1$lcssa = $l$050; + } + $i3$048 = $i3$048 + 1 | 0; + if (($i3$048 | 0) >= 3) { + $buffPtr$2$lcssa$lcssa = $buffPtr$2$lcssa; + $l$1$lcssa$lcssa = $l$1$lcssa; + break; + } else { + $buffPtr$151 = $buffPtr$2$lcssa; + $l$050 = $l$1$lcssa; + } + } + $63 = HEAP32[$16 >> 2] | 0; + $66 = ($l$1$lcssa$lcssa | 0) / (Math_imul($63 * 3 | 0, $63) | 0) | 0; + if ((Math_imul($63 * 3 | 0, $63) | 0) > 0) { + $72 = HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0; + $i$152 = 0; + $m$053 = 0; + while (1) { + $73 = $72 + ($i$152 << 2) | 0; + $75 = (HEAP32[$73 >> 2] | 0) - $66 | 0; + HEAP32[$73 >> 2] = $75; + $77 = (Math_imul($75, $75) | 0) + $m$053 | 0; + $i$152 = $i$152 + 1 | 0; + $$pre = HEAP32[$16 >> 2] | 0; + if (($i$152 | 0) >= (Math_imul($$pre * 3 | 0, $$pre) | 0)) { + $$lcssa36 = $$pre; + $m$0$lcssa = $77; + break; + } else $m$053 = $77; + } + } else { + $$lcssa36 = $63; + $m$0$lcssa = 0; + } + $83 = +Math_sqrt(+(+($m$0$lcssa | 0))); + HEAPF64[(HEAP32[$20 >> 2] | 0) + ($22 << 3) >> 3] = $83 == 0.0 ? 1.0e-07 : $83; + if (!(Math_imul($$lcssa36, $$lcssa36) | 0)) $m$1$lcssa = 0; else { + $91 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0; + $i$258 = 0; + $m$159 = 0; + while (1) { + $92 = $91 + ($i$258 << 2) | 0; + $94 = (HEAP32[$92 >> 2] | 0) - $66 | 0; + HEAP32[$92 >> 2] = $94; + $96 = (Math_imul($94, $94) | 0) + $m$159 | 0; + $i$258 = $i$258 + 1 | 0; + $$pre17 = HEAP32[$16 >> 2] | 0; + if (($i$258 | 0) >= (Math_imul($$pre17, $$pre17) | 0)) { + $m$1$lcssa = $96; + break; + } else $m$159 = $96; + } + } + $101 = +Math_sqrt(+(+($m$1$lcssa | 0))); + HEAPF64[(HEAP32[$21 >> 2] | 0) + ($22 << 3) >> 3] = $101 == 0.0 ? 1.0e-07 : $101; + $105 = $h$063 + 1 | 0; + if (($105 | 0) < 4) { + $buffPtr$064 = $buffPtr$2$lcssa$lcssa; + $h$063 = $105; + } else { + label = 32; + break; + } + } + if ((label | 0) == 17) { + _arLog(3, 4747, $vararg_buffer5); + _free($13); + $$0 = -1; + break; + } else if ((label | 0) == 32) { + _free($13); + HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$0$lcssa << 2) >> 2] = 1; + HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + 1; + $$0 = $i$0$lcssa; + break; + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _qsort($base, $nel, $width, $cmp) { + $base = $base | 0; + $nel = $nel | 0; + $width = $width | 0; + $cmp = $cmp | 0; + var $$0$i = 0, $$0$i30 = 0, $$02$i$i = 0, $$02$i3$i = 0, $$lcssa = 0, $$lcssa57 = 0, $$phi$trans$insert$i = 0, $$pre1$i = 0, $$pre1$i6 = 0, $$pre1$i9 = 0, $$sum = 0, $0 = 0, $1 = 0, $10 = 0, $111 = 0, $14 = 0, $15 = 0, $17 = 0, $19 = 0, $23 = 0, $26 = 0, $36 = 0, $39 = 0, $41 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $51 = 0, $53 = 0, $58 = 0, $59 = 0, $63 = 0, $68 = 0, $72 = 0, $79 = 0, $8 = 0, $8$phi = 0, $81 = 0, $82 = 0, $84 = 0, $87 = 0, $9 = 0, $91 = 0, $93 = 0, $94 = 0, $95 = 0, $head$0$lcssa = 0, $head$036 = 0, $head$1$be = 0, $head$153 = 0, $i$0 = 0, $lp = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, $p = 0, $pshift$0$lcssa = 0, $pshift$037 = 0, $pshift$1 = 0, $pshift$2$be = 0, $pshift$254 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 208 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $lp = sp + 8 | 0; + $p = sp; + $0 = Math_imul($width, $nel) | 0; + $1 = $p; + HEAP32[$1 >> 2] = 1; + HEAP32[$1 + 4 >> 2] = 0; + if ($0) { + $$sum = $0 - $width | 0; + HEAP32[$lp + 4 >> 2] = $width; + HEAP32[$lp >> 2] = $width; + $10 = $width; + $8 = $width; + $i$0 = 2; + while (1) { + $9 = $8 + $width + $10 | 0; + HEAP32[$lp + ($i$0 << 2) >> 2] = $9; + if ($9 >>> 0 < $0 >>> 0) { + $8$phi = $10; + $10 = $9; + $i$0 = $i$0 + 1 | 0; + $8 = $8$phi; + } else break; + } + $14 = 0 - $width | 0; + $15 = $base + $$sum | 0; + $$phi$trans$insert$i = $p + 4 | 0; + if (($$sum | 0) > 0) { + $17 = $15; + $19 = 1; + $head$036 = $base; + $pshift$037 = 1; + while (1) { + do if (($19 & 3 | 0) == 3) { + _sift($head$036, $width, $cmp, $pshift$037, $lp); + $$pre1$i = HEAP32[$$phi$trans$insert$i >> 2] | 0; + $23 = $$pre1$i << 30 | (HEAP32[$p >> 2] | 0) >>> 2; + HEAP32[$p >> 2] = $23; + HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i >>> 2; + $48 = $23; + $pshift$1 = $pshift$037 + 2 | 0; + } else { + $26 = $pshift$037 + -1 | 0; + if ((HEAP32[$lp + ($26 << 2) >> 2] | 0) >>> 0 < ($17 - $head$036 | 0) >>> 0) _sift($head$036, $width, $cmp, $pshift$037, $lp); else _trinkle($head$036, $width, $cmp, $p, $pshift$037, 0, $lp); + if (($pshift$037 | 0) == 1) { + $$pre1$i6 = HEAP32[$p >> 2] | 0; + HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i6 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1; + $36 = $$pre1$i6 << 1; + HEAP32[$p >> 2] = $36; + $48 = $36; + $pshift$1 = 0; + break; + } + if ($26 >>> 0 > 31) { + $39 = HEAP32[$p >> 2] | 0; + HEAP32[$$phi$trans$insert$i >> 2] = $39; + HEAP32[$p >> 2] = 0; + $$0$i = $pshift$037 + -33 | 0; + $41 = $39; + $44 = 0; + } else { + $$0$i = $26; + $41 = HEAP32[$$phi$trans$insert$i >> 2] | 0; + $44 = HEAP32[$p >> 2] | 0; + } + HEAP32[$$phi$trans$insert$i >> 2] = $44 >>> (32 - $$0$i | 0) | $41 << $$0$i; + $46 = $44 << $$0$i; + HEAP32[$p >> 2] = $46; + $48 = $46; + $pshift$1 = 1; + } while (0); + $19 = $48 | 1; + HEAP32[$p >> 2] = $19; + $49 = $head$036 + $width | 0; + if ($49 >>> 0 >= $15 >>> 0) { + $head$0$lcssa = $49; + $pshift$0$lcssa = $pshift$1; + break; + } else { + $head$036 = $49; + $pshift$037 = $pshift$1; + } + } + } else { + $head$0$lcssa = $base; + $pshift$0$lcssa = 1; + } + _trinkle($head$0$lcssa, $width, $cmp, $p, $pshift$0$lcssa, 0, $lp); + $51 = $p + 4 | 0; + $53 = HEAP32[$p >> 2] | 0; + if (!(($pshift$0$lcssa | 0) == 1 & ($53 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0)) { + $59 = $53; + $head$153 = $head$0$lcssa; + $pshift$254 = $pshift$0$lcssa; + while (1) { + if (($pshift$254 | 0) < 2) { + $58 = $59 + -1 | 0; + do if (!$58) { + $81 = 32; + label = 30; + } else { + if (!($58 & 1)) { + $$02$i$i = $58; + $nTrailingZeros$03$i$i = 0; + while (1) { + $63 = $nTrailingZeros$03$i$i + 1 | 0; + $$02$i$i = $$02$i$i >>> 1; + if ($$02$i$i & 1) { + $$lcssa = $63; + break; + } else $nTrailingZeros$03$i$i = $63; + } + if (!$$lcssa) label = 24; else $79 = $$lcssa; + } else label = 24; + if ((label | 0) == 24) { + label = 0; + $68 = HEAP32[$$phi$trans$insert$i >> 2] | 0; + if (!$68) { + $81 = 64; + label = 30; + break; + } + if (!($68 & 1)) { + $$02$i3$i = $68; + $nTrailingZeros$03$i2$i = 0; + } else { + $$0$i30 = 0; + $84 = $59; + $87 = $68; + $91 = 0; + break; + } + while (1) { + $72 = $nTrailingZeros$03$i2$i + 1 | 0; + $$02$i3$i = $$02$i3$i >>> 1; + if ($$02$i3$i & 1) { + $$lcssa57 = $72; + $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i; + break; + } else $nTrailingZeros$03$i2$i = $72; + } + if (!$$lcssa57) { + $$0$i30 = 0; + $84 = $59; + $87 = $68; + $91 = 0; + break; + } else $79 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0; + } + if ($79 >>> 0 > 31) { + $81 = $79; + label = 30; + } else { + $$0$i30 = $79; + $84 = $59; + $87 = HEAP32[$$phi$trans$insert$i >> 2] | 0; + $91 = $79; + } + } while (0); + if ((label | 0) == 30) { + label = 0; + $82 = HEAP32[$$phi$trans$insert$i >> 2] | 0; + HEAP32[$p >> 2] = $82; + HEAP32[$$phi$trans$insert$i >> 2] = 0; + $$0$i30 = $81 + -32 | 0; + $84 = $82; + $87 = 0; + $91 = $81; + } + HEAP32[$p >> 2] = $87 << 32 - $$0$i30 | $84 >>> $$0$i30; + HEAP32[$$phi$trans$insert$i >> 2] = $87 >>> $$0$i30; + $head$1$be = $head$153 + $14 | 0; + $pshift$2$be = $91 + $pshift$254 | 0; + } else { + $93 = $59 >>> 30; + $94 = $93 | HEAP32[$$phi$trans$insert$i >> 2] << 2; + $95 = $pshift$254 + -2 | 0; + HEAP32[$p >> 2] = ($59 << 1 & 2147483646 | $93 << 31) ^ 3; + HEAP32[$$phi$trans$insert$i >> 2] = $94 >>> 1; + _trinkle($head$153 + (0 - ((HEAP32[$lp + ($95 << 2) >> 2] | 0) + $width)) | 0, $width, $cmp, $p, $pshift$254 + -1 | 0, 1, $lp); + $$pre1$i9 = HEAP32[$p >> 2] | 0; + HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i9 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1; + HEAP32[$p >> 2] = $$pre1$i9 << 1 | 1; + $111 = $head$153 + $14 | 0; + _trinkle($111, $width, $cmp, $p, $95, 1, $lp); + $head$1$be = $111; + $pshift$2$be = $95; + } + $59 = HEAP32[$p >> 2] | 0; + if (($pshift$2$be | 0) == 1 & ($59 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0) break; else { + $head$153 = $head$1$be; + $pshift$254 = $pshift$2$be; + } + } + } + } + STACKTOP = sp; + return; +} + +function _arImageProcLuma($ipi, $dataPtr) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + var $$0 = 0, $1 = 0, $104 = 0, $105 = 0, $110 = 0, $111 = 0, $116 = 0, $117 = 0, $122 = 0, $123 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $157 = 0, $164 = 0, $185 = 0, $192 = 0, $213 = 0, $44 = 0, $45 = 0, $75 = 0, $76 = 0, $p$040 = 0, $p$142 = 0, $p$245 = 0, $p$348 = 0, $p$451 = 0, $p$554 = 0, $p$657 = 0, $p$760 = 0, $q$041 = 0, $q$143 = 0, $q$246 = 0, $q$349 = 0, $q$452 = 0, $q$555 = 0, $q$658 = 0, $q$761 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $1 = HEAP32[$ipi + 2068 >> 2] | 0; + L1 : do switch ($1 | 0) { + case 5: + case 12: + case 13: + case 14: + { + if (!(HEAP32[$ipi + 2072 >> 2] | 0)) { + HEAP32[$ipi >> 2] = $dataPtr; + $$0 = 0; + break L1; + } else { + _memcpy(HEAP32[$ipi >> 2] | 0, $dataPtr | 0, Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) | 0; + $$0 = 0; + break L1; + } + break; + } + default: + { + if (($1 & -2 | 0) == 2) { + $13 = $ipi + 8 | 0; + $14 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$040 = 0; + $q$041 = 0; + } + while (1) { + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$040 >> 0] = (((HEAPU8[$dataPtr + ($q$041 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$041 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$041 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0; + $p$040 = $p$040 + 1 | 0; + if ($p$040 >>> 0 >= (Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break L1; + } else $q$041 = $q$041 + 4 | 0; + } + } + if (($1 & -3 | 0) == 4) { + $44 = $ipi + 8 | 0; + $45 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$142 = 0; + $q$143 = 0; + } + while (1) { + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$142 >> 0] = (((HEAPU8[$dataPtr + ($q$143 | 2) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0; + $p$142 = $p$142 + 1 | 0; + if ($p$142 >>> 0 >= (Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break L1; + } else $q$143 = $q$143 + 4 | 0; + } + } + if ($1 >>> 0 < 2) { + $75 = $ipi + 8 | 0; + $76 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$245 = 0; + $q$246 = 0; + } + while (1) { + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$245 >> 0] = (((HEAPU8[$dataPtr + ($q$246 + 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$246 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$246 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0; + $p$245 = $p$245 + 1 | 0; + if ($p$245 >>> 0 >= (Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break L1; + } else $q$246 = $q$246 + 3 | 0; + } + } + switch ($1 | 0) { + case 8: + { + $128 = $ipi + 8 | 0; + $129 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$348 = 0; + $q$349 = 0; + } + while (1) { + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$348 >> 0] = HEAP8[$dataPtr + $q$349 >> 0] | 0; + $p$348 = $p$348 + 1 | 0; + if ($p$348 >>> 0 >= (Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break; + } else $q$349 = $q$349 + 2 | 0; + } + break; + } + case 7: + { + $122 = $ipi + 8 | 0; + $123 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$451 = 0; + $q$452 = 0; + } + while (1) { + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$451 >> 0] = HEAP8[$dataPtr + ($q$452 | 1) >> 0] | 0; + $p$451 = $p$451 + 1 | 0; + if ($p$451 >>> 0 >= (Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break; + } else $q$452 = $q$452 + 2 | 0; + } + break; + } + case 9: + { + $116 = $ipi + 8 | 0; + $117 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$554 = 0; + $q$555 = 0; + } + while (1) { + $157 = HEAPU8[$dataPtr + $q$555 >> 0] | 0; + $164 = HEAPU8[$dataPtr + ($q$555 | 1) >> 0] | 0; + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$554 >> 0] = ((($157 & 248) + 10 + ($157 << 5 & 224) + ($164 >>> 3 & 28) + ($164 << 3 & 248) | 0) >>> 0) / 3 | 0; + $p$554 = $p$554 + 1 | 0; + if ($p$554 >>> 0 >= (Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break; + } else $q$555 = $q$555 + 2 | 0; + } + break; + } + case 10: + { + $110 = $ipi + 8 | 0; + $111 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$657 = 0; + $q$658 = 0; + } + while (1) { + $185 = HEAPU8[$dataPtr + $q$658 >> 0] | 0; + $192 = HEAPU8[$dataPtr + ($q$658 | 1) >> 0] | 0; + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$657 >> 0] = ((($185 & 248) + 12 + ($185 << 5 & 224) + ($192 >>> 3 & 24) + ($192 << 2 & 248) | 0) >>> 0) / 3 | 0; + $p$657 = $p$657 + 1 | 0; + if ($p$657 >>> 0 >= (Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break; + } else $q$658 = $q$658 + 2 | 0; + } + break; + } + case 11: + { + $104 = $ipi + 8 | 0; + $105 = $ipi + 12 | 0; + if (!(Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0)) { + $$0 = 0; + break L1; + } else { + $p$760 = 0; + $q$761 = 0; + } + while (1) { + $213 = HEAPU8[$dataPtr + $q$761 >> 0] | 0; + HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$760 >> 0] = ((($213 & 240) + 24 + ($213 << 4 & 240) + ((HEAPU8[$dataPtr + ($q$761 | 1) >> 0] | 0) & 240) | 0) >>> 0) / 3 | 0; + $p$760 = $p$760 + 1 | 0; + if ($p$760 >>> 0 >= (Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0) >>> 0) { + $$0 = 0; + break; + } else $q$761 = $q$761 + 2 | 0; + } + break; + } + default: + { + _arLog(3, 4361, $vararg_buffer); + $$0 = -1; + break L1; + } + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) { + $first = $first | 0; + $last = $last | 0; + $op = $op | 0; + $db = $db | 0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $11 = 0, $110 = 0, $112 = 0, $117 = 0, $118 = 0, $119 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $25 = 0, $26 = 0, $3 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $46 = 0, $48 = 0, $5 = 0, $53 = 0, $56 = 0, $58 = 0, $6 = 0, $65 = 0, $68 = 0, $71 = 0, $73 = 0, $8 = 0, $83 = 0, $86 = 0, $89 = 0, $91 = 0, $op1 = 0, $op2 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $op2 = sp + 84 | 0; + $op1 = sp + 72 | 0; + $0 = sp + 60 | 0; + $1 = sp + 48 | 0; + $2 = sp + 36 | 0; + $3 = sp + 24 | 0; + $4 = sp + 12 | 0; + $5 = sp; + $6 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + L1 : do if (($6 | 0) == ($first | 0)) $$0 = $first; else { + $8 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($6, $last, $db) | 0; + $10 = $db + 4 | 0; + $11 = HEAP32[$10 >> 2] | 0; + if (($8 | 0) == ($6 | 0)) { + $117 = $11 + -24 | 0; + $119 = $11; + while (1) { + $118 = $119 + -24 | 0; + HEAP32[$10 >> 2] = $118; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($118); + $119 = HEAP32[$10 >> 2] | 0; + if (($119 | 0) == ($117 | 0)) { + $$0 = $first; + break L1; + } + } + } + if ((($11 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $11 + -24 | 0); + $19 = HEAP32[$10 >> 2] | 0; + $20 = $19 + -24 | 0; + $22 = $19; + do { + $21 = $22 + -24 | 0; + HEAP32[$10 >> 2] = $21; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21); + $22 = HEAP32[$10 >> 2] | 0; + } while (($22 | 0) != ($20 | 0)); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $19 + -48 | 0); + $25 = HEAP32[$10 >> 2] | 0; + $26 = $25 + -24 | 0; + if (!(HEAP8[$26 >> 0] & 1)) { + HEAP8[$26 + 1 >> 0] = 0; + HEAP8[$26 >> 0] = 0; + } else { + HEAP8[HEAP32[$25 + -16 >> 2] >> 0] = 0; + HEAP32[$25 + -20 >> 2] = 0; + } + $34 = HEAP8[$op >> 0] | 0; + $36 = ($34 & 1) == 0; + $37 = $op + 4 | 0; + $41 = $36 ? ($34 & 255) >>> 1 : HEAP32[$37 >> 2] | 0; + $42 = $op + 8 | 0; + $44 = $op + 1 | 0; + $46 = $41 >>> 0 > 1; + $48 = _memcmp($36 ? $44 : HEAP32[$42 >> 2] | 0, 12778, $46 ? 1 : $41) | 0; + if (!((($48 | 0) == 0 ? (($41 | 0) == 0 ? -1 : $46 & 1) : $48) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 40); + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($5, 12714, $op1); + $53 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 14007) | 0; + HEAP32[$4 >> 2] = HEAP32[$53 >> 2]; + HEAP32[$4 + 4 >> 2] = HEAP32[$53 + 4 >> 2]; + HEAP32[$4 + 8 >> 2] = HEAP32[$53 + 8 >> 2]; + HEAP32[$53 >> 2] = 0; + HEAP32[$53 + 4 >> 2] = 0; + HEAP32[$53 + 8 >> 2] = 0; + $56 = HEAP8[$op >> 0] | 0; + $58 = ($56 & 1) == 0; + $65 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $58 ? $44 : HEAP32[$42 >> 2] | 0, $58 ? ($56 & 255) >>> 1 : HEAP32[$37 >> 2] | 0) | 0; + HEAP32[$3 >> 2] = HEAP32[$65 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$65 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$65 + 8 >> 2]; + HEAP32[$65 >> 2] = 0; + HEAP32[$65 + 4 >> 2] = 0; + HEAP32[$65 + 8 >> 2] = 0; + $68 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12616) | 0; + HEAP32[$2 >> 2] = HEAP32[$68 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$68 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$68 + 8 >> 2]; + HEAP32[$68 >> 2] = 0; + HEAP32[$68 + 4 >> 2] = 0; + HEAP32[$68 + 8 >> 2] = 0; + $71 = HEAP8[$op2 >> 0] | 0; + $73 = ($71 & 1) == 0; + $83 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $73 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $73 ? ($71 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0; + HEAP32[$1 >> 2] = HEAP32[$83 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$83 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$83 + 8 >> 2]; + HEAP32[$83 >> 2] = 0; + HEAP32[$83 + 4 >> 2] = 0; + HEAP32[$83 + 8 >> 2] = 0; + $86 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$86 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$86 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$86 + 8 >> 2]; + HEAP32[$86 >> 2] = 0; + HEAP32[$86 + 4 >> 2] = 0; + HEAP32[$86 + 8 >> 2] = 0; + $89 = HEAP8[$0 >> 0] | 0; + $91 = ($89 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $91 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5); + $101 = HEAP8[$op >> 0] | 0; + $103 = ($101 & 1) == 0; + $107 = $103 ? ($101 & 255) >>> 1 : HEAP32[$37 >> 2] | 0; + $110 = $107 >>> 0 > 1; + $112 = _memcmp($103 ? $44 : HEAP32[$42 >> 2] | 0, 12778, $110 ? 1 : $107) | 0; + if (!((($112 | 0) == 0 ? (($107 | 0) == 0 ? -1 : $110 & 1) : $112) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 41); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2); + $$0 = $8; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $14 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $49 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0, $does_dst_type_point_to_our_static_type$0$off023 = 0, $does_dst_type_point_to_our_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$0$off025 = 0, $is_dst_type_derived_from_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$2$off0 = 0, $p$024 = 0, $p2$0 = 0, $p2$1 = 0, $p2$2 = 0, label = 0; + L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) { + if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) { + $6 = $info + 28 | 0; + if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below; + } + } else { + if (($this | 0) != (HEAP32[$info >> 2] | 0)) { + $59 = HEAP32[$this + 12 >> 2] | 0; + $60 = $this + 16 + ($59 << 3) | 0; + __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this + 16 | 0, $info, $current_ptr, $path_below, $use_strcmp); + $61 = $this + 24 | 0; + if (($59 | 0) <= 1) break; + $64 = HEAP32[$this + 8 >> 2] | 0; + if (!($64 & 2)) { + $67 = $info + 36 | 0; + if ((HEAP32[$67 >> 2] | 0) != 1) { + if (!($64 & 1)) { + $79 = $info + 54 | 0; + $p2$2 = $61; + while (1) { + if (HEAP8[$79 >> 0] | 0) break L1; + if ((HEAP32[$67 >> 2] | 0) == 1) break L1; + __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$2, $info, $current_ptr, $path_below, $use_strcmp); + $p2$2 = $p2$2 + 8 | 0; + if ($p2$2 >>> 0 >= $60 >>> 0) break L1; + } + } + $77 = $info + 24 | 0; + $78 = $info + 54 | 0; + $p2$1 = $61; + while (1) { + if (HEAP8[$78 >> 0] | 0) break L1; + if ((HEAP32[$67 >> 2] | 0) == 1) if ((HEAP32[$77 >> 2] | 0) == 1) break L1; + __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$1, $info, $current_ptr, $path_below, $use_strcmp); + $p2$1 = $p2$1 + 8 | 0; + if ($p2$1 >>> 0 >= $60 >>> 0) break L1; + } + } + } + $70 = $info + 54 | 0; + $p2$0 = $61; + while (1) { + if (HEAP8[$70 >> 0] | 0) break L1; + __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$0, $info, $current_ptr, $path_below, $use_strcmp); + $p2$0 = $p2$0 + 8 | 0; + if ($p2$0 >>> 0 >= $60 >>> 0) break L1; + } + } + if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) { + $14 = $info + 20 | 0; + if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) { + HEAP32[$info + 32 >> 2] = $path_below; + $20 = $info + 44 | 0; + if ((HEAP32[$20 >> 2] | 0) == 4) break; + $24 = HEAP32[$this + 12 >> 2] | 0; + $25 = $this + 16 + ($24 << 3) | 0; + $26 = $info + 52 | 0; + $27 = $info + 53 | 0; + $28 = $info + 54 | 0; + $29 = $this + 8 | 0; + $30 = $info + 24 | 0; + L34 : do if (($24 | 0) > 0) { + $does_dst_type_point_to_our_static_type$0$off023 = 0; + $is_dst_type_derived_from_static_type$0$off025 = 0; + $p$024 = $this + 16 | 0; + while (1) { + HEAP8[$26 >> 0] = 0; + HEAP8[$27 >> 0] = 0; + __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$024, $info, $current_ptr, $current_ptr, 1, $use_strcmp); + if (HEAP8[$28 >> 0] | 0) { + $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023; + $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$0$off025; + label = 20; + break L34; + } + do if (!(HEAP8[$27 >> 0] | 0)) { + $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023; + $is_dst_type_derived_from_static_type$1$off0 = $is_dst_type_derived_from_static_type$0$off025; + } else { + if (!(HEAP8[$26 >> 0] | 0)) if (!(HEAP32[$29 >> 2] & 1)) { + $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023; + $is_dst_type_derived_from_static_type$2$off0 = 1; + label = 20; + break L34; + } else { + $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023; + $is_dst_type_derived_from_static_type$1$off0 = 1; + break; + } + if ((HEAP32[$30 >> 2] | 0) == 1) break L34; + if (!(HEAP32[$29 >> 2] & 2)) break L34; else { + $does_dst_type_point_to_our_static_type$1$off0 = 1; + $is_dst_type_derived_from_static_type$1$off0 = 1; + } + } while (0); + $p$024 = $p$024 + 8 | 0; + if ($p$024 >>> 0 >= $25 >>> 0) { + $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$1$off0; + $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$1$off0; + label = 20; + break; + } else { + $does_dst_type_point_to_our_static_type$0$off023 = $does_dst_type_point_to_our_static_type$1$off0; + $is_dst_type_derived_from_static_type$0$off025 = $is_dst_type_derived_from_static_type$1$off0; + } + } + } else { + $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0; + $is_dst_type_derived_from_static_type$2$off0 = 0; + label = 20; + } while (0); + do if ((label | 0) == 20) { + if ($does_dst_type_point_to_our_static_type$0$off0$lcssa) label = 24; else { + HEAP32[$14 >> 2] = $current_ptr; + $49 = $info + 40 | 0; + HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1; + if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$30 >> 2] | 0) == 2) { + HEAP8[$28 >> 0] = 1; + if ($is_dst_type_derived_from_static_type$2$off0) break; + } else label = 24; else label = 24; + } + if ((label | 0) == 24) if ($is_dst_type_derived_from_static_type$2$off0) break; + HEAP32[$20 >> 2] = 4; + break L1; + } while (0); + HEAP32[$20 >> 2] = 3; + break; + } + } + if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1; + } while (0); + return; +} + +function _arVecTridiagonalize($a, $d, $e) { + $a = $a | 0; + $d = $d | 0; + $e = $e | 0; + var $$0 = 0, $$pre$phiZ2D = 0, $1 = 0, $106 = 0, $107 = 0, $110 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $125 = 0.0, $126 = 0, $13 = 0, $131 = 0, $14 = 0, $16 = 0, $17 = 0, $23 = 0, $25 = 0, $26 = 0.0, $32 = 0, $34 = 0, $35 = 0, $37 = 0, $40 = 0, $45 = 0.0, $54 = 0.0, $63 = 0.0, $65 = 0, $68 = 0.0, $70 = 0, $72 = 0.0, $73 = 0, $75 = 0, $84 = 0, $90 = 0, $92 = 0, $95 = 0, $97 = 0, $i$039 = 0, $i$143 = 0, $i$144 = 0, $i$223 = 0, $i$325 = 0, $j$032 = 0, $j$135 = 0, $j$240 = 0, $j$320 = 0, $k$047 = 0, $k$129$in = 0, $s$0$lcssa = 0.0, $s$031 = 0.0, $s$1$lcssa = 0.0, $s$134 = 0.0, $wv1 = 0, $wv2 = 0, label = 0, sp = 0, $k$047$looptemp = 0, $k$129$in$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $wv1 = sp + 8 | 0; + $wv2 = sp; + $1 = HEAP32[$a + 8 >> 2] | 0; + if (($1 | 0) == (HEAP32[$a + 4 >> 2] | 0)) if (($1 | 0) == (HEAP32[$d + 4 >> 2] | 0)) if (($1 | 0) == ((HEAP32[$e + 4 >> 2] | 0) + 1 | 0)) { + $12 = $1 + -2 | 0; + $13 = $wv1 + 4 | 0; + $14 = $wv2 + 4 | 0; + if (($1 | 0) > 2) { + $i$143 = $1 + -1 | 0; + $k$047 = 0; + do { + $16 = Math_imul($k$047, $1) | 0; + $17 = HEAP32[$a >> 2] | 0; + HEAPF64[(HEAP32[$d >> 2] | 0) + ($k$047 << 3) >> 3] = +HEAPF64[$17 + ($16 + $k$047 << 3) >> 3]; + $23 = $1 - $k$047 + -1 | 0; + HEAP32[$13 >> 2] = $23; + $k$047$looptemp = $k$047; + $k$047 = $k$047 + 1 | 0; + $25 = $17 + ($16 + $k$047 << 3) | 0; + HEAP32[$wv1 >> 2] = $25; + $26 = +_arVecHousehold($wv1); + HEAPF64[(HEAP32[$e >> 2] | 0) + ($k$047$looptemp << 3) >> 3] = $26; + if (!($26 == 0.0)) { + if (($k$047 | 0) < ($1 | 0)) { + $32 = HEAP32[$d >> 2] | 0; + $i$039 = $k$047; + do { + if (($k$047 | 0) < ($i$039 | 0)) { + $34 = HEAP32[$a >> 2] | 0; + $j$032 = $k$047; + $s$031 = 0.0; + while (1) { + $40 = $34 + ((Math_imul($j$032, $1) | 0) + $i$039 << 3) | 0; + $45 = $s$031 + +HEAPF64[$40 >> 3] * +HEAPF64[$17 + ($j$032 + $16 << 3) >> 3]; + $j$032 = $j$032 + 1 | 0; + if (($j$032 | 0) >= ($i$039 | 0)) { + $s$0$lcssa = $45; + break; + } else $s$031 = $45; + } + } else $s$0$lcssa = 0.0; + $35 = Math_imul($i$039, $1) | 0; + if (($i$039 | 0) < ($1 | 0)) { + $37 = HEAP32[$a >> 2] | 0; + $j$135 = $i$039; + $s$134 = $s$0$lcssa; + while (1) { + $54 = $s$134 + +HEAPF64[$37 + ($j$135 + $35 << 3) >> 3] * +HEAPF64[$17 + ($j$135 + $16 << 3) >> 3]; + $j$135 = $j$135 + 1 | 0; + if (($j$135 | 0) >= ($1 | 0)) { + $s$1$lcssa = $54; + break; + } else $s$134 = $54; + } + } else $s$1$lcssa = $s$0$lcssa; + HEAPF64[$32 + ($i$039 << 3) >> 3] = $s$1$lcssa; + $i$039 = $i$039 + 1 | 0; + } while (($i$039 | 0) < ($1 | 0)); + } + HEAP32[$14 >> 2] = $23; + HEAP32[$13 >> 2] = $23; + HEAP32[$wv1 >> 2] = $25; + HEAP32[$wv2 >> 2] = (HEAP32[$d >> 2] | 0) + ($k$047 << 3); + $63 = +_arVecInnerproduct($wv1, $wv2) * .5; + if (($i$143 | 0) > ($k$047$looptemp | 0)) { + $65 = HEAP32[$d >> 2] | 0; + $i$144 = $i$143; + do { + $68 = +HEAPF64[$17 + ($i$144 + $16 << 3) >> 3]; + $70 = $65 + ($i$144 << 3) | 0; + $72 = +HEAPF64[$70 >> 3] - $63 * $68; + HEAPF64[$70 >> 3] = $72; + $73 = Math_imul($i$144, $1) | 0; + if (($i$144 | 0) < ($1 | 0)) { + $75 = HEAP32[$a >> 2] | 0; + $j$240 = $i$144; + do { + $84 = $75 + ($j$240 + $73 << 3) | 0; + HEAPF64[$84 >> 3] = +HEAPF64[$84 >> 3] - ($68 * +HEAPF64[$65 + ($j$240 << 3) >> 3] + $72 * +HEAPF64[$17 + ($j$240 + $16 << 3) >> 3]); + $j$240 = $j$240 + 1 | 0; + } while (($j$240 | 0) < ($1 | 0)); + } + $i$144 = $i$144 + -1 | 0; + } while (($i$144 | 0) > ($k$047$looptemp | 0)); + } + } + } while (($k$047 | 0) < ($12 | 0)); + } + if (($1 | 0) > 1) { + $90 = Math_imul($12, $1) | 0; + $92 = HEAP32[$a >> 2] | 0; + $95 = HEAP32[$d >> 2] | 0; + HEAPF64[$95 + ($12 << 3) >> 3] = +HEAPF64[$92 + ($90 + $12 << 3) >> 3]; + $97 = $1 + -1 | 0; + HEAPF64[(HEAP32[$e >> 2] | 0) + ($12 << 3) >> 3] = +HEAPF64[$92 + ($97 + $90 << 3) >> 3]; + $$pre$phiZ2D = $97; + $107 = $92; + $110 = $95; + label = 27; + } else if (($1 | 0) > 0) { + $$pre$phiZ2D = 0; + $107 = HEAP32[$a >> 2] | 0; + $110 = HEAP32[$d >> 2] | 0; + label = 27; + } + if ((label | 0) == 27) { + $106 = $107 + ((Math_imul($$pre$phiZ2D, $1) | 0) + $$pre$phiZ2D << 3) | 0; + HEAPF64[$110 + ($$pre$phiZ2D << 3) >> 3] = +HEAPF64[$106 >> 3]; + } + if (($1 | 0) > 0) { + $112 = ($1 | 0) > 0; + $k$129$in = $1; + do { + $k$129$in$looptemp = $k$129$in; + $k$129$in = $k$129$in + -1 | 0; + $113 = Math_imul($k$129$in, $1) | 0; + $114 = HEAP32[$a >> 2] | 0; + if (($k$129$in$looptemp | 0) <= ($12 | 0)) { + $117 = $1 - $k$129$in + -1 | 0; + $118 = $114 + ($113 + $k$129$in$looptemp << 3) | 0; + if (($k$129$in$looptemp | 0) < ($1 | 0)) { + $120 = ($k$129$in$looptemp | 0) < ($1 | 0); + $i$223 = $k$129$in$looptemp; + do { + HEAP32[$14 >> 2] = $117; + HEAP32[$13 >> 2] = $117; + HEAP32[$wv1 >> 2] = $118; + $121 = Math_imul($i$223, $1) | 0; + HEAP32[$wv2 >> 2] = (HEAP32[$a >> 2] | 0) + ($121 + $k$129$in$looptemp << 3); + $125 = +_arVecInnerproduct($wv1, $wv2); + if ($120) { + $126 = HEAP32[$a >> 2] | 0; + $j$320 = $k$129$in$looptemp; + do { + $131 = $126 + ($j$320 + $121 << 3) | 0; + HEAPF64[$131 >> 3] = +HEAPF64[$131 >> 3] - $125 * +HEAPF64[$114 + ($j$320 + $113 << 3) >> 3]; + $j$320 = $j$320 + 1 | 0; + } while (($j$320 | 0) < ($1 | 0)); + } + $i$223 = $i$223 + 1 | 0; + } while (($i$223 | 0) < ($1 | 0)); + } + } + if ($112) { + $i$325 = 0; + do { + HEAPF64[$114 + ($i$325 + $113 << 3) >> 3] = 0.0; + $i$325 = $i$325 + 1 | 0; + } while (($i$325 | 0) < ($1 | 0)); + } + HEAPF64[$114 + ($113 + $k$129$in << 3) >> 3] = 1.0; + } while (($k$129$in$looptemp | 0) > 1); + $$0 = 0; + } else $$0 = 0; + } else $$0 = -1; else $$0 = -1; else $$0 = -1; + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($first, $last, $db, $status) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + $status = $status | 0; + var $$0$i$i$i11 = 0, $$0$i2 = 0, $$03$i = 0, $$lcssa = 0, $0 = 0, $1 = 0, $12 = 0, $13 = 0, $2 = 0, $20 = 0, $22 = 0, $24 = 0, $31 = 0, $32 = 0, $41 = 0, $44 = 0, $47 = 0, $49 = 0, $6 = 0, $66 = 0, $67 = 0, $78 = 0, $83 = 0, $95 = 0, $__p$0$i$i$i10 = 0, $__p$0$ph$i$i$i = 0, $i$0$i16 = 0, $t$0 = 0, $t$0$i15 = 0, $t$0$i15$lcssa20 = 0, $t$1$i$ph = 0, $t$1$i12 = 0, $t$2$i = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 24 | 0; + $1 = sp + 12 | 0; + $2 = sp; + L1 : do if ($first >>> 0 < $last >>> 0) { + L3 : do if ((HEAP8[$first >> 0] | 0) == 95) { + $6 = $last; + if (($6 - $first | 0) <= 3) { + HEAP32[$status >> 2] = -2; + break L1; + } + switch (HEAP8[$first + 1 >> 0] | 0) { + case 90: + { + $12 = $first + 2 | 0; + $13 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($12, $last, $db) | 0; + if (($13 | 0) == ($12 | 0) | ($13 | 0) == ($last | 0)) $t$0 = $13; else if ((HEAP8[$13 >> 0] | 0) == 46) { + $20 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($20 | 0)) $$03$i = $13; else { + $22 = $20 + -24 | 0; + $24 = $6 - $13 | 0; + if ($24 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2); + if ($24 >>> 0 < 11) { + HEAP8[$2 >> 0] = $24 << 1; + $__p$0$ph$i$i$i = $2 + 1 | 0; + } else { + $31 = $24 + 16 & -16; + $32 = _malloc($31) | 0; + HEAP32[$2 + 8 >> 2] = $32; + HEAP32[$2 >> 2] = $31 | 1; + HEAP32[$2 + 4 >> 2] = $24; + $__p$0$ph$i$i$i = $32; + } + if (($13 | 0) != ($last | 0)) { + $$0$i$i$i11 = $13; + $__p$0$i$i$i10 = $__p$0$ph$i$i$i; + while (1) { + HEAP8[$__p$0$i$i$i10 >> 0] = HEAP8[$$0$i$i$i11 >> 0] | 0; + $$0$i$i$i11 = $$0$i$i$i11 + 1 | 0; + if (($$0$i$i$i11 | 0) == ($last | 0)) break; else $__p$0$i$i$i10 = $__p$0$i$i$i10 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i$i + $24 >> 0] = 0; + $41 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12616) | 0; + HEAP32[$1 >> 2] = HEAP32[$41 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$41 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$41 + 8 >> 2]; + HEAP32[$41 >> 2] = 0; + HEAP32[$41 + 4 >> 2] = 0; + HEAP32[$41 + 8 >> 2] = 0; + $44 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$44 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$44 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$44 + 8 >> 2]; + HEAP32[$44 >> 2] = 0; + HEAP32[$44 + 4 >> 2] = 0; + HEAP32[$44 + 8 >> 2] = 0; + $47 = HEAP8[$0 >> 0] | 0; + $49 = ($47 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($22, $49 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $49 ? ($47 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$03$i = $last; + } + $t$0 = $$03$i; + } else $t$0 = $13; + if (($t$0 | 0) == ($last | 0)) break L3; + HEAP32[$status >> 2] = -2; + break L1; + break; + } + case 95: + { + label = 20; + break; + } + default: + {} + } + if ((label | 0) == 20) if ((HEAP8[$first + 2 >> 0] | 0) == 95) if ((HEAP8[$first + 3 >> 0] | 0) == 90) { + $66 = $first + 4 | 0; + $67 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($66, $last, $db) | 0; + if (($67 | 0) == ($66 | 0) | ($67 | 0) == ($last | 0)) { + HEAP32[$status >> 2] = -2; + break L1; + } + L36 : do if (($6 - $67 | 0) > 12) { + $i$0$i16 = 0; + $t$0$i15 = $67; + while (1) { + if ((HEAP8[$t$0$i15 >> 0] | 0) != (HEAP8[12621 + $i$0$i16 >> 0] | 0)) { + $$0$i2 = $67; + break L36; + } + $i$0$i16 = $i$0$i16 + 1 | 0; + $78 = $t$0$i15 + 1 | 0; + if (($i$0$i16 | 0) >= 13) { + $$lcssa = $78; + $t$0$i15$lcssa20 = $t$0$i15; + break; + } else $t$0$i15 = $78; + } + L41 : do if (($$lcssa | 0) == ($last | 0)) $t$2$i = $last; else { + if ((HEAP8[$$lcssa >> 0] | 0) == 95) { + $83 = $t$0$i15$lcssa20 + 2 | 0; + if (($83 | 0) == ($last | 0)) { + $$0$i2 = $67; + break L36; + } + if (((HEAP8[$83 >> 0] | 0) + -48 | 0) >>> 0 >= 10) { + $$0$i2 = $67; + break L36; + } + $t$1$i$ph = $t$0$i15$lcssa20 + 3 | 0; + } else $t$1$i$ph = $$lcssa; + if (($t$1$i$ph | 0) == ($last | 0)) $t$2$i = $last; else { + $t$1$i12 = $t$1$i$ph; + while (1) { + if (((HEAP8[$t$1$i12 >> 0] | 0) + -48 | 0) >>> 0 >= 10) { + $t$2$i = $t$1$i12; + break L41; + } + $t$1$i12 = $t$1$i12 + 1 | 0; + if (($t$1$i12 | 0) == ($last | 0)) { + $t$2$i = $last; + break; + } + } + } + } while (0); + $95 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($95 | 0)) $$0$i2 = $67; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($95 + -24 | 0, 0, 12635) | 0; + $$0$i2 = $t$2$i; + } + } else $$0$i2 = $67; while (0); + if (($$0$i2 | 0) == ($last | 0)) break; + HEAP32[$status >> 2] = -2; + break L1; + } + HEAP32[$status >> 2] = -2; + break L1; + } else if ((__ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0) != ($last | 0)) { + HEAP32[$status >> 2] = -2; + break L1; + } while (0); + if (!(HEAP32[$status >> 2] | 0)) if ((HEAP32[$db >> 2] | 0) == (HEAP32[$db + 4 >> 2] | 0)) HEAP32[$status >> 2] = -2; + } else HEAP32[$status >> 2] = -2; while (0); + STACKTOP = sp; + return; +} + +function _arMatrixSelfInv($m) { + $m = $m | 0; + var $$0$i = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $18 = 0.0, $19 = 0, $2 = 0, $24 = 0, $25 = 0, $26 = 0, $30 = 0.0, $35 = 0.0, $43 = 0, $44 = 0.0, $59 = 0, $61 = 0, $63 = 0, $65 = 0, $70 = 0.0, $exitcond$i23 = 0, $exitcond12$i36 = 0, $exitcond13$i43 = 0, $exitcond7$i30 = 0, $i$0$i14 = 0, $i$1$i45 = 0, $i$2$i8 = 0, $indvars$iv$i49 = 0, $indvars$iv9$i44 = 0, $ip$0$i51 = 0, $ip$1$i$lcssa = 0, $ip$1$i15 = 0, $ip$2$i = 0, $j$0$i24 = 0, $j$1$i31 = 0, $j$2$i37 = 0, $j$3$i$lcssa = 0, $j$3$i4 = 0, $n$0$i53 = 0, $n$1$i50 = 0, $n$2$i12 = 0, $nos$i = 0, $p$0$i$lcssa = 0.0, $p$0$i17 = 0.0, $p$1$i = 0.0, $scevgep$i = 0, $wap$0$i16 = 0, $wap$1$i26 = 0, $wap$2$i32 = 0, $wap$3$i39 = 0, $wap$4$i10 = 0, $wbp$0$i25 = 0, $wbp$1$i38 = 0, $wbp$2$i9 = 0, sp = 0, $wap$2$i32$looptemp = 0, $wap$3$i39$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 2e3 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $nos$i = sp; + $0 = HEAP32[$m >> 2] | 0; + $2 = HEAP32[$m + 4 >> 2] | 0; + L1 : do if (($2 | 0) > 500) $$0$i = 0; else { + switch ($2 | 0) { + case 0: + { + $$0$i = 0; + break L1; + break; + } + case 1: + { + HEAPF64[$0 >> 3] = 1.0 / +HEAPF64[$0 >> 3]; + $$0$i = $0; + break L1; + break; + } + default: + {} + } + if (($2 | 0) > 0) { + $n$0$i53 = 0; + do { + HEAP32[$nos$i + ($n$0$i53 << 2) >> 2] = $n$0$i53; + $n$0$i53 = $n$0$i53 + 1 | 0; + } while (($n$0$i53 | 0) < ($2 | 0)); + } + $scevgep$i = $0 + ($2 + -1 << 3) | 0; + if (($2 | 0) > 0) { + $exitcond$i23 = ($2 | 0) == 0; + $exitcond7$i30 = ($2 | 0) == 1; + $exitcond13$i43 = ($2 | 0) == 0; + $exitcond12$i36 = ($2 | 0) == 1; + $indvars$iv$i49 = $scevgep$i; + $ip$0$i51 = 0; + $n$1$i50 = 0; + while (1) { + $15 = $0 + ((Math_imul($n$1$i50, $2) | 0) << 3) | 0; + if (($n$1$i50 | 0) < ($2 | 0)) { + $i$0$i14 = $n$1$i50; + $ip$1$i15 = $ip$0$i51; + $p$0$i17 = 0.0; + $wap$0$i16 = $15; + while (1) { + $18 = +Math_abs(+(+HEAPF64[$wap$0$i16 >> 3])); + $19 = $p$0$i17 < $18; + $ip$2$i = $19 ? $i$0$i14 : $ip$1$i15; + $p$1$i = $19 ? $18 : $p$0$i17; + $i$0$i14 = $i$0$i14 + 1 | 0; + if (($i$0$i14 | 0) >= ($2 | 0)) { + $ip$1$i$lcssa = $ip$2$i; + $p$0$i$lcssa = $p$1$i; + break; + } else { + $ip$1$i15 = $ip$2$i; + $p$0$i17 = $p$1$i; + $wap$0$i16 = $wap$0$i16 + ($2 << 3) | 0; + } + } + } else { + $ip$1$i$lcssa = $ip$0$i51; + $p$0$i$lcssa = 0.0; + } + if ($p$0$i$lcssa <= 1.0e-10) { + $$0$i = 0; + break L1; + } + $24 = $nos$i + ($ip$1$i$lcssa << 2) | 0; + $25 = HEAP32[$24 >> 2] | 0; + $26 = $nos$i + ($n$1$i50 << 2) | 0; + HEAP32[$24 >> 2] = HEAP32[$26 >> 2]; + HEAP32[$26 >> 2] = $25; + if (!$exitcond$i23) { + $j$0$i24 = 0; + $wap$1$i26 = $0 + ((Math_imul($ip$1$i$lcssa, $2) | 0) << 3) | 0; + $wbp$0$i25 = $15; + while (1) { + $30 = +HEAPF64[$wap$1$i26 >> 3]; + HEAPF64[$wap$1$i26 >> 3] = +HEAPF64[$wbp$0$i25 >> 3]; + HEAPF64[$wbp$0$i25 >> 3] = $30; + $j$0$i24 = $j$0$i24 + 1 | 0; + if (($j$0$i24 | 0) == ($2 | 0)) break; else { + $wap$1$i26 = $wap$1$i26 + 8 | 0; + $wbp$0$i25 = $wbp$0$i25 + 8 | 0; + } + } + } + $35 = +HEAPF64[$15 >> 3]; + if (!$exitcond7$i30) { + $j$1$i31 = 1; + $wap$2$i32 = $15; + do { + $wap$2$i32$looptemp = $wap$2$i32; + $wap$2$i32 = $wap$2$i32 + 8 | 0; + HEAPF64[$wap$2$i32$looptemp >> 3] = +HEAPF64[$wap$2$i32 >> 3] / $35; + $j$1$i31 = $j$1$i31 + 1 | 0; + } while (($j$1$i31 | 0) != ($2 | 0)); + } + HEAPF64[$indvars$iv$i49 >> 3] = 1.0 / $35; + if (!$exitcond13$i43) { + $i$1$i45 = 0; + $indvars$iv9$i44 = $scevgep$i; + while (1) { + if (($i$1$i45 | 0) != ($n$1$i50 | 0)) { + $43 = $0 + ((Math_imul($i$1$i45, $2) | 0) << 3) | 0; + $44 = +HEAPF64[$43 >> 3]; + if (!$exitcond12$i36) { + $j$2$i37 = 1; + $wap$3$i39 = $43; + $wbp$1$i38 = $15; + while (1) { + $wap$3$i39$looptemp = $wap$3$i39; + $wap$3$i39 = $wap$3$i39 + 8 | 0; + HEAPF64[$wap$3$i39$looptemp >> 3] = +HEAPF64[$wap$3$i39 >> 3] - $44 * +HEAPF64[$wbp$1$i38 >> 3]; + $j$2$i37 = $j$2$i37 + 1 | 0; + if (($j$2$i37 | 0) == ($2 | 0)) break; else $wbp$1$i38 = $wbp$1$i38 + 8 | 0; + } + } + HEAPF64[$indvars$iv9$i44 >> 3] = -($44 * +HEAPF64[$indvars$iv$i49 >> 3]); + } + $i$1$i45 = $i$1$i45 + 1 | 0; + if (($i$1$i45 | 0) == ($2 | 0)) break; else $indvars$iv9$i44 = $indvars$iv9$i44 + ($2 << 3) | 0; + } + } + $n$1$i50 = $n$1$i50 + 1 | 0; + if (($n$1$i50 | 0) >= ($2 | 0)) break; else { + $indvars$iv$i49 = $indvars$iv$i49 + ($2 << 3) | 0; + $ip$0$i51 = $ip$1$i$lcssa; + } + } + } + if (($2 | 0) > 0) { + $13 = ($2 | 0) > 0; + $n$2$i12 = 0; + while (1) { + $59 = $nos$i + ($n$2$i12 << 2) | 0; + L43 : do if (($n$2$i12 | 0) < ($2 | 0)) { + $61 = $59; + $j$3$i4 = $n$2$i12; + while (1) { + if ((HEAP32[$61 >> 2] | 0) == ($n$2$i12 | 0)) { + $$lcssa = $61; + $j$3$i$lcssa = $j$3$i4; + break L43; + } + $63 = $j$3$i4 + 1 | 0; + $65 = $nos$i + ($63 << 2) | 0; + if (($63 | 0) < ($2 | 0)) { + $61 = $65; + $j$3$i4 = $63; + } else { + $$lcssa = $65; + $j$3$i$lcssa = $63; + break; + } + } + } else { + $$lcssa = $59; + $j$3$i$lcssa = $n$2$i12; + } while (0); + HEAP32[$$lcssa >> 2] = HEAP32[$nos$i + ($n$2$i12 << 2) >> 2]; + if ($13) { + $i$2$i8 = 0; + $wap$4$i10 = $0 + ($j$3$i$lcssa << 3) | 0; + $wbp$2$i9 = $0 + ($n$2$i12 << 3) | 0; + while (1) { + $70 = +HEAPF64[$wap$4$i10 >> 3]; + HEAPF64[$wap$4$i10 >> 3] = +HEAPF64[$wbp$2$i9 >> 3]; + HEAPF64[$wbp$2$i9 >> 3] = $70; + $i$2$i8 = $i$2$i8 + 1 | 0; + if (($i$2$i8 | 0) >= ($2 | 0)) break; else { + $wap$4$i10 = $wap$4$i10 + ($2 << 3) | 0; + $wbp$2$i9 = $wbp$2$i9 + ($2 << 3) | 0; + } + } + } + $n$2$i12 = $n$2$i12 + 1 | 0; + if (($n$2$i12 | 0) >= ($2 | 0)) { + $$0$i = $0; + break; + } + } + } else $$0$i = $0; + } while (0); + STACKTOP = sp; + return (($$0$i | 0) == 0) << 31 >> 31 | 0; +} + +function _try_realloc_chunk($p, $nb) { + $p = $p | 0; + $nb = $nb | 0; + var $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $101 = 0, $103 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $116 = 0, $118 = 0, $119 = 0, $124 = 0, $125 = 0, $134 = 0, $139 = 0, $143 = 0, $149 = 0, $159 = 0, $168 = 0, $2 = 0, $20 = 0, $3 = 0, $33 = 0, $35 = 0, $4 = 0, $45 = 0, $47 = 0, $5 = 0, $56 = 0, $62 = 0, $68 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $76 = 0, $78 = 0, $8 = 0, $91 = 0, $96 = 0, $98 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $newp$0 = 0, $storemerge = 0, $storemerge21 = 0; + $0 = $p + 4 | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = $1 & -8; + $3 = $p + $2 | 0; + $4 = HEAP32[760] | 0; + $5 = $1 & 3; + if (!(($5 | 0) != 1 & $p >>> 0 >= $4 >>> 0 & $p >>> 0 < $3 >>> 0)) _abort(); + $7 = $p + ($2 | 4) | 0; + $8 = HEAP32[$7 >> 2] | 0; + if (!($8 & 1)) _abort(); + if (!$5) { + if ($nb >>> 0 < 256) { + $newp$0 = 0; + return $newp$0 | 0; + } + if ($2 >>> 0 >= ($nb + 4 | 0) >>> 0) if (($2 - $nb | 0) >>> 0 <= HEAP32[876] << 1 >>> 0) { + $newp$0 = $p; + return $newp$0 | 0; + } + $newp$0 = 0; + return $newp$0 | 0; + } + if ($2 >>> 0 >= $nb >>> 0) { + $20 = $2 - $nb | 0; + if ($20 >>> 0 <= 15) { + $newp$0 = $p; + return $newp$0 | 0; + } + HEAP32[$0 >> 2] = $1 & 1 | $nb | 2; + HEAP32[$p + ($nb + 4) >> 2] = $20 | 3; + HEAP32[$7 >> 2] = HEAP32[$7 >> 2] | 1; + _dispose_chunk($p + $nb | 0, $20); + $newp$0 = $p; + return $newp$0 | 0; + } + if (($3 | 0) == (HEAP32[762] | 0)) { + $33 = (HEAP32[759] | 0) + $2 | 0; + if ($33 >>> 0 <= $nb >>> 0) { + $newp$0 = 0; + return $newp$0 | 0; + } + $35 = $33 - $nb | 0; + HEAP32[$0 >> 2] = $1 & 1 | $nb | 2; + HEAP32[$p + ($nb + 4) >> 2] = $35 | 1; + HEAP32[762] = $p + $nb; + HEAP32[759] = $35; + $newp$0 = $p; + return $newp$0 | 0; + } + if (($3 | 0) == (HEAP32[761] | 0)) { + $45 = (HEAP32[758] | 0) + $2 | 0; + if ($45 >>> 0 < $nb >>> 0) { + $newp$0 = 0; + return $newp$0 | 0; + } + $47 = $45 - $nb | 0; + if ($47 >>> 0 > 15) { + HEAP32[$0 >> 2] = $1 & 1 | $nb | 2; + HEAP32[$p + ($nb + 4) >> 2] = $47 | 1; + HEAP32[$p + $45 >> 2] = $47; + $56 = $p + ($45 + 4) | 0; + HEAP32[$56 >> 2] = HEAP32[$56 >> 2] & -2; + $storemerge = $p + $nb | 0; + $storemerge21 = $47; + } else { + HEAP32[$0 >> 2] = $1 & 1 | $45 | 2; + $62 = $p + ($45 + 4) | 0; + HEAP32[$62 >> 2] = HEAP32[$62 >> 2] | 1; + $storemerge = 0; + $storemerge21 = 0; + } + HEAP32[758] = $storemerge21; + HEAP32[761] = $storemerge; + $newp$0 = $p; + return $newp$0 | 0; + } + if ($8 & 2) { + $newp$0 = 0; + return $newp$0 | 0; + } + $68 = ($8 & -8) + $2 | 0; + if ($68 >>> 0 < $nb >>> 0) { + $newp$0 = 0; + return $newp$0 | 0; + } + $70 = $68 - $nb | 0; + $71 = $8 >>> 3; + do if ($8 >>> 0 < 256) { + $74 = HEAP32[$p + ($2 + 8) >> 2] | 0; + $76 = HEAP32[$p + ($2 + 12) >> 2] | 0; + $78 = 3064 + ($71 << 1 << 2) | 0; + if (($74 | 0) != ($78 | 0)) { + if ($74 >>> 0 < $4 >>> 0) _abort(); + if ((HEAP32[$74 + 12 >> 2] | 0) != ($3 | 0)) _abort(); + } + if (($76 | 0) == ($74 | 0)) { + HEAP32[756] = HEAP32[756] & ~(1 << $71); + break; + } + if (($76 | 0) == ($78 | 0)) $$pre$phiZ2D = $76 + 8 | 0; else { + if ($76 >>> 0 < $4 >>> 0) _abort(); + $91 = $76 + 8 | 0; + if ((HEAP32[$91 >> 2] | 0) == ($3 | 0)) $$pre$phiZ2D = $91; else _abort(); + } + HEAP32[$74 + 12 >> 2] = $76; + HEAP32[$$pre$phiZ2D >> 2] = $74; + } else { + $96 = HEAP32[$p + ($2 + 24) >> 2] | 0; + $98 = HEAP32[$p + ($2 + 12) >> 2] | 0; + do if (($98 | 0) == ($3 | 0)) { + $109 = $p + ($2 + 20) | 0; + $110 = HEAP32[$109 >> 2] | 0; + if (!$110) { + $112 = $p + ($2 + 16) | 0; + $113 = HEAP32[$112 >> 2] | 0; + if (!$113) { + $R$1 = 0; + break; + } else { + $R$0 = $113; + $RP$0 = $112; + } + } else { + $R$0 = $110; + $RP$0 = $109; + } + while (1) { + $115 = $R$0 + 20 | 0; + $116 = HEAP32[$115 >> 2] | 0; + if ($116) { + $R$0 = $116; + $RP$0 = $115; + continue; + } + $118 = $R$0 + 16 | 0; + $119 = HEAP32[$118 >> 2] | 0; + if (!$119) { + $R$0$lcssa = $R$0; + $RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $119; + $RP$0 = $118; + } + } + if ($RP$0$lcssa >>> 0 < $4 >>> 0) _abort(); else { + HEAP32[$RP$0$lcssa >> 2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $101 = HEAP32[$p + ($2 + 8) >> 2] | 0; + if ($101 >>> 0 < $4 >>> 0) _abort(); + $103 = $101 + 12 | 0; + if ((HEAP32[$103 >> 2] | 0) != ($3 | 0)) _abort(); + $106 = $98 + 8 | 0; + if ((HEAP32[$106 >> 2] | 0) == ($3 | 0)) { + HEAP32[$103 >> 2] = $98; + HEAP32[$106 >> 2] = $101; + $R$1 = $98; + break; + } else _abort(); + } while (0); + if ($96) { + $124 = HEAP32[$p + ($2 + 28) >> 2] | 0; + $125 = 3328 + ($124 << 2) | 0; + if (($3 | 0) == (HEAP32[$125 >> 2] | 0)) { + HEAP32[$125 >> 2] = $R$1; + if (!$R$1) { + HEAP32[757] = HEAP32[757] & ~(1 << $124); + break; + } + } else { + if ($96 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); + $134 = $96 + 16 | 0; + if ((HEAP32[$134 >> 2] | 0) == ($3 | 0)) HEAP32[$134 >> 2] = $R$1; else HEAP32[$96 + 20 >> 2] = $R$1; + if (!$R$1) break; + } + $139 = HEAP32[760] | 0; + if ($R$1 >>> 0 < $139 >>> 0) _abort(); + HEAP32[$R$1 + 24 >> 2] = $96; + $143 = HEAP32[$p + ($2 + 16) >> 2] | 0; + do if ($143) if ($143 >>> 0 < $139 >>> 0) _abort(); else { + HEAP32[$R$1 + 16 >> 2] = $143; + HEAP32[$143 + 24 >> 2] = $R$1; + break; + } while (0); + $149 = HEAP32[$p + ($2 + 20) >> 2] | 0; + if ($149) if ($149 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else { + HEAP32[$R$1 + 20 >> 2] = $149; + HEAP32[$149 + 24 >> 2] = $R$1; + break; + } + } + } while (0); + if ($70 >>> 0 < 16) { + HEAP32[$0 >> 2] = $68 | $1 & 1 | 2; + $159 = $p + ($68 | 4) | 0; + HEAP32[$159 >> 2] = HEAP32[$159 >> 2] | 1; + $newp$0 = $p; + return $newp$0 | 0; + } else { + HEAP32[$0 >> 2] = $1 & 1 | $nb | 2; + HEAP32[$p + ($nb + 4) >> 2] = $70 | 3; + $168 = $p + ($68 | 4) | 0; + HEAP32[$168 >> 2] = HEAP32[$168 >> 2] | 1; + _dispose_chunk($p + $nb | 0, $70); + $newp$0 = $p; + return $newp$0 | 0; + } + return 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $lit, $db) { + $first = $first | 0; + $last = $last | 0; + $lit = $lit | 0; + $db = $db | 0; + var $$0$i$i$i = 0, $$0$i$i$i5 = 0, $$02 = 0, $$1 = 0, $0 = 0, $1 = 0, $11 = 0, $17 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $37 = 0, $39 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $48 = 0, $52 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $67 = 0, $69 = 0, $72 = 0, $73 = 0, $76 = 0, $8 = 0, $82 = 0, $88 = 0, $90 = 0, $94 = 0, $__v$i$i4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 80 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i4 = sp + 48 | 0; + $0 = sp + 24 | 0; + $1 = sp + 12 | 0; + $2 = sp; + $3 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) | 0; + if (($3 | 0) == ($first | 0) | ($3 | 0) == ($last | 0)) $$1 = $first; else if ((HEAP8[$3 >> 0] | 0) == 69) { + $8 = HEAP8[$lit >> 0] | 0; + $11 = $lit + 4 | 0; + do if ((($8 & 1) == 0 ? ($8 & 255) >>> 1 : HEAP32[$11 >> 2] | 0) >>> 0 > 3) { + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($2, 12714, $lit); + $17 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$17 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$17 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$17 + 8 >> 2]; + HEAP32[$17 >> 2] = 0; + HEAP32[$17 + 4 >> 2] = 0; + HEAP32[$17 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + $20 = $db + 4 | 0; + $21 = HEAP32[$20 >> 2] | 0; + $23 = HEAP32[$db + 8 >> 2] | 0; + if ($21 >>> 0 < $23 >>> 0) { + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($21, $0); + HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 24; + } else { + $30 = HEAP32[$db >> 2] | 0; + $31 = $21 - $30 | 0; + $32 = ($31 | 0) / 24 | 0; + $33 = $32 + 1 | 0; + if (($31 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $37 = ($23 - $30 | 0) / 24 | 0; + if ($37 >>> 0 < 1073741823) { + $39 = $37 << 1; + $$0$i$i$i = $39 >>> 0 < $33 >>> 0 ? $33 : $39; + } else $$0$i$i$i = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i, $32, $db + 12 | 0); + $42 = $__v$i$i4 + 8 | 0; + $43 = HEAP32[$42 >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0); + HEAP32[$42 >> 2] = $43 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4); + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + } else { + $45 = $db + 4 | 0; + $46 = HEAP32[$45 >> 2] | 0; + $48 = HEAP32[$db + 8 >> 2] | 0; + if ($46 >>> 0 < $48 >>> 0) { + HEAP32[$46 >> 2] = 0; + HEAP32[$46 + 4 >> 2] = 0; + HEAP32[$46 + 8 >> 2] = 0; + HEAP32[$46 + 12 >> 2] = 0; + HEAP32[$46 + 16 >> 2] = 0; + HEAP32[$46 + 20 >> 2] = 0; + HEAP32[$46 >> 2] = 0; + HEAP32[$46 + 4 >> 2] = 0; + HEAP32[$46 + 8 >> 2] = 0; + $52 = $46 + 12 | 0; + HEAP32[$52 >> 2] = 0; + HEAP32[$52 + 4 >> 2] = 0; + HEAP32[$52 + 8 >> 2] = 0; + HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 24; + break; + } + $60 = HEAP32[$db >> 2] | 0; + $61 = $46 - $60 | 0; + $62 = ($61 | 0) / 24 | 0; + $63 = $62 + 1 | 0; + if (($61 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db); + $67 = ($48 - $60 | 0) / 24 | 0; + if ($67 >>> 0 < 1073741823) { + $69 = $67 << 1; + $$0$i$i$i5 = $69 >>> 0 < $63 >>> 0 ? $63 : $69; + } else $$0$i$i$i5 = 2147483647; + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i5, $62, $db + 12 | 0); + $72 = $__v$i$i4 + 8 | 0; + $73 = HEAP32[$72 >> 2] | 0; + HEAP32[$73 >> 2] = 0; + HEAP32[$73 + 4 >> 2] = 0; + HEAP32[$73 + 8 >> 2] = 0; + HEAP32[$73 + 12 >> 2] = 0; + HEAP32[$73 + 16 >> 2] = 0; + HEAP32[$73 + 20 >> 2] = 0; + HEAP32[$73 >> 2] = 0; + HEAP32[$73 + 4 >> 2] = 0; + HEAP32[$73 + 8 >> 2] = 0; + $76 = $73 + 12 | 0; + HEAP32[$76 >> 2] = 0; + HEAP32[$76 + 4 >> 2] = 0; + HEAP32[$76 + 8 >> 2] = 0; + HEAP32[$72 >> 2] = $73 + 24; + __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4); + __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4); + } while (0); + $82 = $db + 4 | 0; + if ((HEAP8[$first >> 0] | 0) == 110) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$82 >> 2] | 0) + -24 | 0, 45); + $$02 = $first + 1 | 0; + } else $$02 = $first; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$82 >> 2] | 0) + -24 | 0, $$02, $3); + $88 = HEAP8[$lit >> 0] | 0; + $90 = ($88 & 1) == 0; + $94 = $90 ? ($88 & 255) >>> 1 : HEAP32[$11 >> 2] | 0; + if ($94 >>> 0 < 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$82 >> 2] | 0) + -24 | 0, $90 ? $lit + 1 | 0 : HEAP32[$lit + 8 >> 2] | 0, $94) | 0; + $$1 = $3 + 1 | 0; + } else $$1 = $first; + STACKTOP = sp; + return $$1 | 0; +} + +function _arGetContour($limage, $xsize, $ysize, $label_ref, $label, $clip, $marker_info2) { + $limage = $limage | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $label_ref = $label_ref | 0; + $label = $label | 0; + $clip = $clip | 0; + $marker_info2 = $marker_info2 | 0; + var $$0 = 0, $$lcssa68 = 0, $$lcssa69 = 0, $1 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $24 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $34 = 0, $38 = 0, $4 = 0, $40 = 0, $41 = 0, $46 = 0, $48 = 0, $49 = 0, $56 = 0, $61 = 0, $62 = 0, $65 = 0, $67 = 0, $68 = 0, $83 = 0, $9 = 0, $92 = 0, $dir$0 = 0, $dir$1 = 0, $dir$1$lcssa = 0, $dir$130 = 0, $dir$146 = 0, $dmax$040 = 0, $i$048 = 0, $i$048$lcssa = 0, $i$145 = 0, $i$2$v1$0 = 0, $i$242 = 0, $i$338 = 0, $i$436 = 0, $i$535 = 0, $p1$047 = 0, $v1$0$lcssa = 0, $v1$041 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $wx = 0, $wy = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 80032 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + $wx = sp + 40024 | 0; + $wy = sp + 24 | 0; + $1 = HEAP32[$clip + 8 >> 2] | 0; + $2 = HEAP32[$clip >> 2] | 0; + $4 = HEAP32[$clip + 4 >> 2] | 0; + L1 : do if (($2 | 0) > ($4 | 0)) label = 6; else { + $i$048 = $2; + $p1$047 = $limage + ((Math_imul($1, $xsize) | 0) + $2 << 1) | 0; + while (1) { + $9 = HEAP16[$p1$047 >> 1] | 0; + if ($9 << 16 >> 16 > 0) if ((HEAP32[$label_ref + (($9 << 16 >> 16) + -1 << 2) >> 2] | 0) == ($label | 0)) { + $i$048$lcssa = $i$048; + break; + } + if (($i$048 | 0) < ($4 | 0)) { + $i$048 = $i$048 + 1 | 0; + $p1$047 = $p1$047 + 2 | 0; + } else { + label = 6; + break L1; + } + } + $19 = $marker_info2 + 24 | 0; + HEAP32[$19 >> 2] = 1; + $20 = $marker_info2 + 28 | 0; + HEAP32[$20 >> 2] = $i$048$lcssa; + $21 = $marker_info2 + 40028 | 0; + HEAP32[$21 >> 2] = $1; + $27 = $1; + $29 = $i$048$lcssa; + $40 = 1; + $dir$0 = 5; + while (1) { + $dir$146 = ($dir$0 + 5 | 0) % 8 | 0; + $i$145 = 0; + while (1) { + $24 = HEAP32[776 + ($dir$146 << 2) >> 2] | 0; + $26 = HEAP32[808 + ($dir$146 << 2) >> 2] | 0; + $30 = $limage + ($26 + $29 + (Math_imul($24 + $27 | 0, $xsize) | 0) << 1) | 0; + if ((HEAP16[$30 >> 1] | 0) > 0) { + $38 = $26; + $46 = $24; + $dir$130 = $dir$146; + break; + } + $34 = $i$145 + 1 | 0; + $dir$1 = ($dir$146 + 1 | 0) % 8 | 0; + if (($34 | 0) < 8) { + $dir$146 = $dir$1; + $i$145 = $34; + } else { + $$lcssa68 = $34; + $dir$1$lcssa = $dir$1; + label = 11; + break; + } + } + if ((label | 0) == 11) { + label = 0; + if (($$lcssa68 | 0) == 8) { + label = 13; + break; + } + $38 = HEAP32[808 + ($dir$1$lcssa << 2) >> 2] | 0; + $46 = HEAP32[776 + ($dir$1$lcssa << 2) >> 2] | 0; + $dir$130 = $dir$1$lcssa; + } + HEAP32[$marker_info2 + 28 + ($40 << 2) >> 2] = $38 + $29; + $41 = HEAP32[$19 >> 2] | 0; + HEAP32[$marker_info2 + 40028 + ($41 << 2) >> 2] = $46 + (HEAP32[$marker_info2 + 40028 + ($41 + -1 << 2) >> 2] | 0); + $48 = HEAP32[$19 >> 2] | 0; + $49 = $marker_info2 + 28 + ($48 << 2) | 0; + if ((HEAP32[$49 >> 2] | 0) == ($i$048$lcssa | 0)) if ((HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0) == ($1 | 0)) { + $$lcssa69 = $48; + label = 16; + break; + } + $56 = $48 + 1 | 0; + HEAP32[$19 >> 2] = $56; + if (($56 | 0) == 9999) { + label = 19; + break; + } + $27 = HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0; + $29 = HEAP32[$49 >> 2] | 0; + $40 = $56; + $dir$0 = $dir$130; + } + if ((label | 0) == 13) { + _arLog(3, 4347, $vararg_buffer1); + $$0 = -1; + break; + } else if ((label | 0) == 16) { + if (($$lcssa69 | 0) > 1) { + $dmax$040 = 0; + $i$242 = 1; + $v1$041 = 0; + while (1) { + $61 = (HEAP32[$marker_info2 + 28 + ($i$242 << 2) >> 2] | 0) - $i$048$lcssa | 0; + $62 = Math_imul($61, $61) | 0; + $65 = (HEAP32[$marker_info2 + 40028 + ($i$242 << 2) >> 2] | 0) - $1 | 0; + $67 = (Math_imul($65, $65) | 0) + $62 | 0; + $68 = ($67 | 0) > ($dmax$040 | 0); + $i$2$v1$0 = $68 ? $i$242 : $v1$041; + $i$242 = $i$242 + 1 | 0; + if (($i$242 | 0) >= ($$lcssa69 | 0)) { + $v1$0$lcssa = $i$2$v1$0; + break; + } else { + $dmax$040 = $68 ? $67 : $dmax$040; + $v1$041 = $i$2$v1$0; + } + } + } else $v1$0$lcssa = 0; + if (($v1$0$lcssa | 0) > 0) { + $i$338 = 0; + do { + HEAP32[$wx + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$338 << 2) >> 2]; + HEAP32[$wy + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$338 << 2) >> 2]; + $i$338 = $i$338 + 1 | 0; + } while (($i$338 | 0) < ($v1$0$lcssa | 0)); + } + if (($v1$0$lcssa | 0) < ($$lcssa69 | 0)) { + $i$436 = $v1$0$lcssa; + do { + $83 = $i$436 - $v1$0$lcssa | 0; + HEAP32[$marker_info2 + 28 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$436 << 2) >> 2]; + HEAP32[$marker_info2 + 40028 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$436 << 2) >> 2]; + $i$436 = $i$436 + 1 | 0; + } while (($i$436 | 0) < (HEAP32[$19 >> 2] | 0)); + } + if (($v1$0$lcssa | 0) > 0) { + $i$535 = 0; + do { + $92 = $i$535 - $v1$0$lcssa | 0; + HEAP32[$marker_info2 + 28 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wx + ($i$535 << 2) >> 2]; + HEAP32[$marker_info2 + 40028 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wy + ($i$535 << 2) >> 2]; + $i$535 = $i$535 + 1 | 0; + } while (($i$535 | 0) < ($v1$0$lcssa | 0)); + } + HEAP32[$marker_info2 + 28 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$20 >> 2]; + HEAP32[$marker_info2 + 40028 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$21 >> 2]; + HEAP32[$19 >> 2] = (HEAP32[$19 >> 2] | 0) + 1; + $$0 = 0; + break; + } else if ((label | 0) == 19) { + _arLog(3, 4354, $vararg_buffer3); + $$0 = -1; + break; + } + } while (0); + if ((label | 0) == 6) { + _arLog(3, 4340, $vararg_buffer); + $$0 = -1; + } + STACKTOP = sp; + return $$0 | 0; +} + +function ___cxa_demangle($mangled_name, $buf, $n, $status) { + $mangled_name = $mangled_name | 0; + $buf = $buf | 0; + $n = $n | 0; + $status = $status | 0; + var $$0 = 0, $$028 = 0, $$1 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $109 = 0, $11 = 0, $112 = 0, $15 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $30 = 0, $31 = 0, $35 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $49 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0, $6 = 0, $60 = 0, $62 = 0, $7 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $82 = 0, $83 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $__v$i$i = 0, $a = 0, $db = 0, $internal_status = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 4208 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v$i$i = sp + 4184 | 0; + $a = sp; + $db = sp + 4120 | 0; + $internal_status = sp + 4112 | 0; + if (!$mangled_name) label = 3; else { + $1 = ($buf | 0) != 0; + $2 = ($n | 0) == 0; + if ($1 & $2) label = 3; else { + if ($1) $82 = HEAP32[$n >> 2] | 0; else $82 = 0; + HEAP32[$a + 4096 >> 2] = $a; + $6 = $a; + HEAP32[$db >> 2] = 0; + $7 = $db + 4 | 0; + HEAP32[$7 >> 2] = 0; + HEAP32[$db + 8 >> 2] = 0; + HEAP32[$db + 12 >> 2] = $6; + $10 = $db + 16 | 0; + HEAP32[$10 >> 2] = 0; + $11 = $db + 20 | 0; + HEAP32[$11 >> 2] = 0; + HEAP32[$db + 24 >> 2] = 0; + HEAP32[$db + 28 >> 2] = $6; + HEAP32[$db + 32 >> 2] = 0; + $15 = $db + 36 | 0; + HEAP32[$15 >> 2] = 0; + HEAP32[$db + 40 >> 2] = 0; + $17 = $db + 44 | 0; + HEAP32[$17 >> 2] = $6; + $18 = $db + 48 | 0; + $19 = $db + 61 | 0; + HEAP32[$18 >> 2] = 0; + HEAP32[$18 + 4 >> 2] = 0; + HEAP32[$18 + 8 >> 2] = 0; + HEAP8[$18 + 12 >> 0] = 0; + HEAP8[$19 >> 0] = 1; + $20 = $db + 32 | 0; + __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i, 1, 0, $17); + $21 = $__v$i$i + 8 | 0; + $22 = HEAP32[$21 >> 2] | 0; + HEAP32[$22 >> 2] = 0; + HEAP32[$22 + 4 >> 2] = 0; + HEAP32[$22 + 8 >> 2] = 0; + HEAP32[$22 + 12 >> 2] = $6; + HEAP32[$21 >> 2] = $22 + 16; + __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($20, $__v$i$i); + __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i); + $27 = $db + 62 | 0; + HEAP8[$27 >> 0] = 0; + HEAP8[$db + 63 >> 0] = 1; + HEAP32[$internal_status >> 2] = 0; + $30 = $mangled_name + (_strlen($mangled_name) | 0) | 0; + __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status); + $31 = HEAP32[$internal_status >> 2] | 0; + do if (($31 | 0) != 0 | (HEAP8[$27 >> 0] | 0) == 0) { + $59 = $31; + label = 17; + } else { + $35 = HEAP32[$20 >> 2] | 0; + if (($35 | 0) == (HEAP32[$15 >> 2] | 0)) label = 18; else if ((HEAP32[$35 >> 2] | 0) == (HEAP32[$35 + 4 >> 2] | 0)) label = 18; else { + HEAP8[$27 >> 0] = 0; + HEAP8[$19 >> 0] = 0; + $42 = HEAP32[$db >> 2] | 0; + $43 = HEAP32[$7 >> 2] | 0; + if (($43 | 0) != ($42 | 0)) { + $46 = $43; + do { + $45 = $46 + -24 | 0; + HEAP32[$7 >> 2] = $45; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45); + $46 = HEAP32[$7 >> 2] | 0; + } while (($46 | 0) != ($42 | 0)); + } + $49 = HEAP32[$10 >> 2] | 0; + $50 = HEAP32[$11 >> 2] | 0; + if (($50 | 0) != ($49 | 0)) { + $53 = $50; + do { + $52 = $53 + -16 | 0; + HEAP32[$11 >> 2] = $52; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($52); + $53 = HEAP32[$11 >> 2] | 0; + } while (($53 | 0) != ($49 | 0)); + } + __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status); + if (!(HEAP8[$27 >> 0] | 0)) { + $59 = HEAP32[$internal_status >> 2] | 0; + label = 17; + break; + } else { + HEAP32[$internal_status >> 2] = -2; + $$1 = 0; + $112 = -2; + break; + } + } + } while (0); + if ((label | 0) == 17) if (!$59) label = 18; else { + $$1 = 0; + $112 = $59; + } + do if ((label | 0) == 18) { + $60 = HEAP32[$7 >> 2] | 0; + $62 = HEAP8[$60 + -24 >> 0] | 0; + if (!($62 & 1)) $79 = ($62 & 255) >>> 1; else $79 = HEAP32[$60 + -20 >> 2] | 0; + $70 = HEAP8[$60 + -12 >> 0] | 0; + if (!($70 & 1)) $78 = ($70 & 255) >>> 1; else $78 = HEAP32[$60 + -8 >> 2] | 0; + $77 = $78 + $79 | 0; + $80 = $77 + 1 | 0; + if ($80 >>> 0 > $82 >>> 0) { + $83 = _realloc($buf, $80) | 0; + if (!$83) { + HEAP32[$internal_status >> 2] = -1; + $$1 = 0; + $112 = -1; + break; + } + if ($2) $$028 = $83; else { + HEAP32[$n >> 2] = $80; + $$028 = $83; + } + } else if (!$buf) { + $$1 = 0; + $112 = 0; + break; + } else $$028 = $buf; + $86 = HEAP32[$7 >> 2] | 0; + $88 = $86 + -12 | 0; + $89 = HEAP8[$88 >> 0] | 0; + $91 = ($89 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($86 + -24 | 0, $91 ? $88 + 1 | 0 : HEAP32[$86 + -4 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$86 + -8 >> 2] | 0) | 0; + $101 = HEAP32[$7 >> 2] | 0; + $102 = $101 + -24 | 0; + if (!(HEAP8[$102 >> 0] & 1)) $109 = $102 + 1 | 0; else $109 = HEAP32[$101 + -16 >> 2] | 0; + _memcpy($$028 | 0, $109 | 0, $77 | 0) | 0; + HEAP8[$$028 + $77 >> 0] = 0; + $$1 = $$028; + $112 = 0; + } while (0); + if ($status) HEAP32[$status >> 2] = $112; + __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($db); + $$0 = $$1; + } + } + if ((label | 0) == 3) if (!$status) $$0 = 0; else { + HEAP32[$status >> 2] = -3; + $$0 = 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _fmod($x, $y) { + $x = +$x; + $y = +$y; + var $$0 = 0.0, $$lcssa7 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $106 = 0, $107 = 0, $11 = 0, $112 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $130 = 0, $137 = 0, $138 = 0, $139 = 0, $140 = 0, $141 = 0, $146 = 0, $149 = 0, $150 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $16 = 0, $2 = 0, $23 = 0.0, $25 = 0, $26 = 0, $3 = 0, $37 = 0, $38 = 0, $4 = 0, $44 = 0, $45 = 0, $46 = 0, $55 = 0, $6 = 0, $60 = 0, $61 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $78 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $93 = 0, $95 = 0, $97 = 0, $ex$0$lcssa = 0, $ex$026 = 0, $ex$1 = 0, $ex$2$lcssa = 0, $ex$212 = 0, $ex$3$lcssa = 0, $ex$39 = 0, $ey$0$lcssa = 0, $ey$020 = 0, $ey$1$ph = 0, label = 0; + HEAPF64[tempDoublePtr >> 3] = $x; + $0 = HEAP32[tempDoublePtr >> 2] | 0; + $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0; + HEAPF64[tempDoublePtr >> 3] = $y; + $2 = HEAP32[tempDoublePtr >> 2] | 0; + $3 = HEAP32[tempDoublePtr + 4 >> 2] | 0; + $4 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0; + $6 = $4 & 2047; + $7 = _bitshift64Lshr($2 | 0, $3 | 0, 52) | 0; + $9 = $7 & 2047; + $10 = $1 & -2147483648; + $11 = _bitshift64Shl($2 | 0, $3 | 0, 1) | 0; + $12 = tempRet0; + L1 : do if (($11 | 0) == 0 & ($12 | 0) == 0) label = 3; else { + $16 = $3 & 2147483647; + if ($16 >>> 0 > 2146435072 | ($16 | 0) == 2146435072 & $2 >>> 0 > 0 | ($6 | 0) == 2047) label = 3; else { + $25 = _bitshift64Shl($0 | 0, $1 | 0, 1) | 0; + $26 = tempRet0; + if (!($26 >>> 0 > $12 >>> 0 | ($26 | 0) == ($12 | 0) & $25 >>> 0 > $11 >>> 0)) return +(($25 | 0) == ($11 | 0) & ($26 | 0) == ($12 | 0) ? $x * 0.0 : $x); + if (!$6) { + $37 = _bitshift64Shl($0 | 0, $1 | 0, 12) | 0; + $38 = tempRet0; + if (($38 | 0) > -1 | ($38 | 0) == -1 & $37 >>> 0 > 4294967295) { + $45 = $37; + $46 = $38; + $ex$026 = 0; + while (1) { + $44 = $ex$026 + -1 | 0; + $45 = _bitshift64Shl($45 | 0, $46 | 0, 1) | 0; + $46 = tempRet0; + if (!(($46 | 0) > -1 | ($46 | 0) == -1 & $45 >>> 0 > 4294967295)) { + $ex$0$lcssa = $44; + break; + } else $ex$026 = $44; + } + } else $ex$0$lcssa = 0; + $55 = _bitshift64Shl($0 | 0, $1 | 0, 1 - $ex$0$lcssa | 0) | 0; + $83 = $55; + $84 = tempRet0; + $ex$1 = $ex$0$lcssa; + } else { + $83 = $0; + $84 = $1 & 1048575 | 1048576; + $ex$1 = $6; + } + if (!$9) { + $60 = _bitshift64Shl($2 | 0, $3 | 0, 12) | 0; + $61 = tempRet0; + if (($61 | 0) > -1 | ($61 | 0) == -1 & $60 >>> 0 > 4294967295) { + $68 = $60; + $69 = $61; + $ey$020 = 0; + while (1) { + $67 = $ey$020 + -1 | 0; + $68 = _bitshift64Shl($68 | 0, $69 | 0, 1) | 0; + $69 = tempRet0; + if (!(($69 | 0) > -1 | ($69 | 0) == -1 & $68 >>> 0 > 4294967295)) { + $ey$0$lcssa = $67; + break; + } else $ey$020 = $67; + } + } else $ey$0$lcssa = 0; + $78 = _bitshift64Shl($2 | 0, $3 | 0, 1 - $ey$0$lcssa | 0) | 0; + $85 = $78; + $86 = tempRet0; + $ey$1$ph = $ey$0$lcssa; + } else { + $85 = $2; + $86 = $3 & 1048575 | 1048576; + $ey$1$ph = $9; + } + $87 = _i64Subtract($83 | 0, $84 | 0, $85 | 0, $86 | 0) | 0; + $88 = tempRet0; + $93 = ($88 | 0) > -1 | ($88 | 0) == -1 & $87 >>> 0 > 4294967295; + L23 : do if (($ex$1 | 0) > ($ey$1$ph | 0)) { + $152 = $93; + $153 = $87; + $154 = $88; + $95 = $83; + $97 = $84; + $ex$212 = $ex$1; + while (1) { + if ($152) if (($95 | 0) == ($85 | 0) & ($97 | 0) == ($86 | 0)) break; else { + $100 = $153; + $101 = $154; + } else { + $100 = $95; + $101 = $97; + } + $102 = _bitshift64Shl($100 | 0, $101 | 0, 1) | 0; + $103 = tempRet0; + $104 = $ex$212 + -1 | 0; + $106 = _i64Subtract($102 | 0, $103 | 0, $85 | 0, $86 | 0) | 0; + $107 = tempRet0; + $112 = ($107 | 0) > -1 | ($107 | 0) == -1 & $106 >>> 0 > 4294967295; + if (($104 | 0) > ($ey$1$ph | 0)) { + $152 = $112; + $153 = $106; + $154 = $107; + $95 = $102; + $97 = $103; + $ex$212 = $104; + } else { + $$lcssa7 = $112; + $114 = $102; + $116 = $103; + $155 = $106; + $156 = $107; + $ex$2$lcssa = $104; + break L23; + } + } + $$0 = $x * 0.0; + break L1; + } else { + $$lcssa7 = $93; + $114 = $83; + $116 = $84; + $155 = $87; + $156 = $88; + $ex$2$lcssa = $ex$1; + } while (0); + if ($$lcssa7) if (($114 | 0) == ($85 | 0) & ($116 | 0) == ($86 | 0)) { + $$0 = $x * 0.0; + break; + } else { + $119 = $156; + $121 = $155; + } else { + $119 = $116; + $121 = $114; + } + if ($119 >>> 0 < 1048576 | ($119 | 0) == 1048576 & $121 >>> 0 < 0) { + $126 = $121; + $127 = $119; + $ex$39 = $ex$2$lcssa; + while (1) { + $128 = _bitshift64Shl($126 | 0, $127 | 0, 1) | 0; + $129 = tempRet0; + $130 = $ex$39 + -1 | 0; + if ($129 >>> 0 < 1048576 | ($129 | 0) == 1048576 & $128 >>> 0 < 0) { + $126 = $128; + $127 = $129; + $ex$39 = $130; + } else { + $137 = $128; + $138 = $129; + $ex$3$lcssa = $130; + break; + } + } + } else { + $137 = $121; + $138 = $119; + $ex$3$lcssa = $ex$2$lcssa; + } + if (($ex$3$lcssa | 0) > 0) { + $139 = _i64Add($137 | 0, $138 | 0, 0, -1048576) | 0; + $140 = tempRet0; + $141 = _bitshift64Shl($ex$3$lcssa | 0, 0, 52) | 0; + $149 = $140 | tempRet0; + $150 = $139 | $141; + } else { + $146 = _bitshift64Lshr($137 | 0, $138 | 0, 1 - $ex$3$lcssa | 0) | 0; + $149 = tempRet0; + $150 = $146; + } + HEAP32[tempDoublePtr >> 2] = $150; + HEAP32[tempDoublePtr + 4 >> 2] = $149 | $10; + $$0 = +HEAPF64[tempDoublePtr >> 3]; + } + } while (0); + if ((label | 0) == 3) { + $23 = $x * $y; + $$0 = $23 / $23; + } + return +$$0; +} + +function __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev($this) { + $this = $this | 0; + var $0 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8590, 7); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8596, 3); + __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8605, 2); + __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8616, 3); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8632, 4); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8650, 4); + __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8670, 5); + __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8682, 8); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8699, 5); + __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8719, 9); + __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8737, 10); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8759, 6); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8782, 7); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8811, 6); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8824, 7); + __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8837, 11); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8856, 8); + __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8866, 9); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8879, 8); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8892, 9); + __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_(8911, 10); + __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_(8923, 1); + __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8935, 1); + __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(8958, 1); + __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8981, 2); + __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9003, 2); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9025, 1); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9042, 10); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9059, 2); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9072, 11); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9085, 3); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9109, 12); + __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_(9133, 3); + __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9146, 3); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9159, 4); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9177, 13); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9195, 5); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9211, 14); + __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9227, 6); + __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9244, 15); + __ZN10emscripten8constantIiEEvPKcRKT_(9261, 2088); + __ZN10emscripten8constantIiEEvPKcRKT_(9290, 2096); + __ZN10emscripten8constantIiEEvPKcRKT_(9318, 2092); + __embind_register_constant(9351, 680, 0); + __embind_register_constant(9368, 680, 1); + __embind_register_constant(9384, 680, 0); + __embind_register_constant(9406, 680, 0); + __embind_register_constant(9431, 680, 1); + __embind_register_constant(9456, 680, 1); + __embind_register_constant(9481, 680, 100); + __embind_register_constant(9508, 680, 0); + __embind_register_constant(9534, 680, 1); + __embind_register_constant(9560, 680, 0); + __embind_register_constant(9587, 680, 0); + __embind_register_constant(9614, 680, 1); + __embind_register_constant(9640, 680, 2); + __embind_register_constant(9665, 680, 3); + __embind_register_constant(9703, 680, 4); + __embind_register_constant(9740, 680, 0); + __embind_register_constant(9774, 680, 0); + __embind_register_constant(9798, 680, 1); + __embind_register_constant(9824, 680, 2); + __embind_register_constant(9851, 680, 2); + __embind_register_constant(9885, 680, 5); + HEAPF64[$0 >> 3] = .5; + __ZN10emscripten8constantIdEEvPKcRKT_(9903, $0); + __embind_register_constant(9924, 680, 0); + __embind_register_constant(9943, 680, 1); + __embind_register_constant(9961, 680, 2); + __embind_register_constant(9979, 680, 3); + __embind_register_constant(9998, 680, 4); + __embind_register_constant(10020, 680, 3); + __embind_register_constant(10039, 680, 515); + __embind_register_constant(10068, 680, 259); + __embind_register_constant(10096, 680, 4); + __embind_register_constant(10115, 680, 772); + __embind_register_constant(10145, 680, 1028); + __embind_register_constant(10175, 680, 0); + __embind_register_constant(10206, 680, 1); + __embind_register_constant(10242, 680, 2); + __embind_register_constant(10276, 680, 3); + __embind_register_constant(10314, 680, 0); + __embind_register_constant(10347, 680, 1); + __embind_register_constant(10394, 680, 2); + __embind_register_constant(10436, 680, 3); + __embind_register_constant(10479, 680, 4); + __embind_register_constant(10531, 680, 5); + __embind_register_constant(10582, 680, 6); + __embind_register_constant(10627, 680, 7); + __embind_register_constant(10666, 680, 8); + __embind_register_constant(10711, 680, 9); + STACKTOP = sp; + return; +} + +function _arParamDecompMat($source, $cpara, $trans) { + $source = $source | 0; + $cpara = $cpara | 0; + $trans = $trans | 0; + var $102 = 0, $105 = 0, $109 = 0.0, $111 = 0.0, $113 = 0.0, $118 = 0.0, $119 = 0, $127 = 0.0, $128 = 0, $134 = 0.0, $140 = 0.0, $146 = 0.0, $152 = 0.0, $163 = 0.0, $167 = 0.0, $181 = 0, $185 = 0, $189 = 0, $45 = 0.0, $47 = 0.0, $49 = 0.0, $55 = 0.0, $56 = 0, $57 = 0.0, $58 = 0, $60 = 0.0, $61 = 0, $63 = 0.0, $64 = 0, $69 = 0, $71 = 0.0, $73 = 0.0, $75 = 0.0, $80 = 0.0, $81 = 0, $84 = 0.0, $87 = 0.0, $90 = 0.0, $96 = 0.0, $97 = 0, $99 = 0, $Cpara = 0, $r$024 = 0, $r$122 = 0, $r$318 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 96 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $Cpara = sp; + if (!(+HEAPF64[$source + 88 >> 3] >= 0.0)) { + $r$122 = 0; + do { + HEAPF64[$Cpara + ($r$122 << 5) >> 3] = -+HEAPF64[$source + ($r$122 << 5) >> 3]; + HEAPF64[$Cpara + ($r$122 << 5) + 8 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 8 >> 3]; + HEAPF64[$Cpara + ($r$122 << 5) + 16 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 16 >> 3]; + HEAPF64[$Cpara + ($r$122 << 5) + 24 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 24 >> 3]; + $r$122 = $r$122 + 1 | 0; + } while (($r$122 | 0) != 3); + } else { + $r$024 = 0; + do { + HEAPF64[$Cpara + ($r$024 << 5) >> 3] = +HEAPF64[$source + ($r$024 << 5) >> 3]; + HEAPF64[$Cpara + ($r$024 << 5) + 8 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 8 >> 3]; + HEAPF64[$Cpara + ($r$024 << 5) + 16 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 16 >> 3]; + HEAPF64[$Cpara + ($r$024 << 5) + 24 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 24 >> 3]; + $r$024 = $r$024 + 1 | 0; + } while (($r$024 | 0) != 3); + } + HEAPF64[$cpara >> 3] = 0.0; + HEAPF64[$cpara + 8 >> 3] = 0.0; + HEAPF64[$cpara + 16 >> 3] = 0.0; + HEAPF64[$cpara + 24 >> 3] = 0.0; + HEAPF64[$cpara + 32 >> 3] = 0.0; + HEAPF64[$cpara + 40 >> 3] = 0.0; + HEAPF64[$cpara + 48 >> 3] = 0.0; + HEAPF64[$cpara + 56 >> 3] = 0.0; + HEAPF64[$cpara + 64 >> 3] = 0.0; + HEAPF64[$cpara + 72 >> 3] = 0.0; + HEAPF64[$cpara + 80 >> 3] = 0.0; + HEAPF64[$cpara + 88 >> 3] = 0.0; + $45 = +HEAPF64[$Cpara + 64 >> 3]; + $47 = +HEAPF64[$Cpara + 72 >> 3]; + $49 = +HEAPF64[$Cpara + 80 >> 3]; + $55 = +Math_sqrt(+($45 * $45 + $47 * $47 + $49 * $49)); + $56 = $cpara + 80 | 0; + HEAPF64[$56 >> 3] = $55; + $57 = $45 / $55; + $58 = $trans + 64 | 0; + HEAPF64[$58 >> 3] = $57; + $60 = $47 / +HEAPF64[$56 >> 3]; + $61 = $trans + 72 | 0; + HEAPF64[$61 >> 3] = $60; + $63 = $49 / +HEAPF64[$56 >> 3]; + $64 = $trans + 80 | 0; + HEAPF64[$64 >> 3] = $63; + $69 = $trans + 88 | 0; + HEAPF64[$69 >> 3] = +HEAPF64[$Cpara + 88 >> 3] / +HEAPF64[$56 >> 3]; + $71 = +HEAPF64[$Cpara + 32 >> 3]; + $73 = +HEAPF64[$Cpara + 40 >> 3]; + $75 = +HEAPF64[$Cpara + 48 >> 3]; + $80 = $57 * $71 + $60 * $73 + $63 * $75; + $81 = $cpara + 48 | 0; + HEAPF64[$81 >> 3] = $80; + $84 = $71 - $80 * +HEAPF64[$58 >> 3]; + $87 = $73 - $80 * +HEAPF64[$61 >> 3]; + $90 = $75 - $80 * +HEAPF64[$64 >> 3]; + $96 = +Math_sqrt(+($84 * $84 + $87 * $87 + $90 * $90)); + $97 = $cpara + 40 | 0; + HEAPF64[$97 >> 3] = $96; + $99 = $trans + 32 | 0; + HEAPF64[$99 >> 3] = $84 / $96; + $102 = $trans + 40 | 0; + HEAPF64[$102 >> 3] = $87 / +HEAPF64[$97 >> 3]; + $105 = $trans + 48 | 0; + HEAPF64[$105 >> 3] = $90 / +HEAPF64[$97 >> 3]; + $109 = +HEAPF64[$Cpara >> 3]; + $111 = +HEAPF64[$Cpara + 8 >> 3]; + $113 = +HEAPF64[$Cpara + 16 >> 3]; + $118 = +HEAPF64[$58 >> 3] * $109 + +HEAPF64[$61 >> 3] * $111 + +HEAPF64[$64 >> 3] * $113; + $119 = $cpara + 16 | 0; + HEAPF64[$119 >> 3] = $118; + $127 = +HEAPF64[$99 >> 3] * $109 + +HEAPF64[$102 >> 3] * $111 + +HEAPF64[$105 >> 3] * $113; + $128 = $cpara + 8 | 0; + HEAPF64[$128 >> 3] = $127; + $134 = $109 - $127 * +HEAPF64[$99 >> 3] - $118 * +HEAPF64[$58 >> 3]; + $140 = $111 - $127 * +HEAPF64[$102 >> 3] - $118 * +HEAPF64[$61 >> 3]; + $146 = $113 - $127 * +HEAPF64[$105 >> 3] - $118 * +HEAPF64[$64 >> 3]; + $152 = +Math_sqrt(+($134 * $134 + $140 * $140 + $146 * $146)); + HEAPF64[$cpara >> 3] = $152; + HEAPF64[$trans >> 3] = $134 / $152; + HEAPF64[$trans + 8 >> 3] = $140 / +HEAPF64[$cpara >> 3]; + HEAPF64[$trans + 16 >> 3] = $146 / +HEAPF64[$cpara >> 3]; + $163 = +HEAPF64[$69 >> 3]; + $167 = (+HEAPF64[$Cpara + 56 >> 3] - +HEAPF64[$81 >> 3] * $163) / +HEAPF64[$97 >> 3]; + HEAPF64[$trans + 56 >> 3] = $167; + HEAPF64[$trans + 24 >> 3] = (+HEAPF64[$Cpara + 24 >> 3] - $167 * +HEAPF64[$128 >> 3] - +HEAPF64[$119 >> 3] * $163) / +HEAPF64[$cpara >> 3]; + $r$318 = 0; + do { + $181 = $cpara + ($r$318 << 5) | 0; + HEAPF64[$181 >> 3] = +HEAPF64[$181 >> 3] / +HEAPF64[$56 >> 3]; + $185 = $cpara + ($r$318 << 5) + 8 | 0; + HEAPF64[$185 >> 3] = +HEAPF64[$185 >> 3] / +HEAPF64[$56 >> 3]; + $189 = $cpara + ($r$318 << 5) + 16 | 0; + HEAPF64[$189 >> 3] = +HEAPF64[$189 >> 3] / +HEAPF64[$56 >> 3]; + $r$318 = $r$318 + 1 | 0; + } while (($r$318 | 0) != 3); + STACKTOP = sp; + return 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($agg$result, $s) { + $agg$result = $agg$result | 0; + $s = $s | 0; + var $$$$i$i$i3 = 0, $$0$i$i27 = 0, $$lcssa = 0, $$lcssa32 = 0, $$lcssa33 = 0, $0 = 0, $12 = 0, $13 = 0, $15 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $31 = 0, $33 = 0, $38 = 0, $42 = 0, $46 = 0, $48 = 0, $56 = 0, $63 = 0, $64 = 0, $7 = 0, $__p$0$i$i26 = 0, $__p$0$ph$i$i = 0, $c$0$ph = 0, $p0$0 = 0, $p0$1 = 0, $pe$0 = 0, $pe$0$ph = 0, $pe$1 = 0, $pe$1$pn = 0, label = 0; + $0 = HEAP8[$s >> 0] | 0; + $2 = ($0 & 1) == 0; + $7 = $2 ? ($0 & 255) >>> 1 : HEAP32[$s + 4 >> 2] | 0; + L1 : do if (!$7) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($agg$result, $s); else { + $12 = $2 ? $s + 1 | 0 : HEAP32[$s + 8 >> 2] | 0; + $13 = $7 >>> 0 > 11; + $15 = _memcmp($12, 12846, $13 ? 11 : $7) | 0; + if (!((($15 | 0) == 0 ? ($7 >>> 0 < 11 ? -1 : $13 & 1) : $15) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13450, 70); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13521, 12); + break; + } + $20 = $7 >>> 0 > 12; + $21 = $20 ? 12 : $7; + $22 = _memcmp($12, 12858, $21) | 0; + $$$$i$i$i3 = $7 >>> 0 < 12 ? -1 : $20 & 1; + if (!((($22 | 0) == 0 ? $$$$i$i$i3 : $22) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13534, 49); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13584, 13); + break; + } + $27 = _memcmp($12, 12871, $21) | 0; + if (!((($27 | 0) == 0 ? $$$$i$i$i3 : $27) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13598, 49); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13648, 13); + break; + } + $31 = $7 >>> 0 > 13; + $33 = _memcmp($12, 12884, $31 ? 13 : $7) | 0; + if (!((($33 | 0) == 0 ? ($7 >>> 0 < 13 ? -1 : $31 & 1) : $33) | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13662, 50); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13713, 14); + break; + } + $38 = $12 + $7 | 0; + L16 : do if ((HEAP8[$12 + ($7 + -1) >> 0] | 0) == 62) { + $c$0$ph = 1; + $pe$0$ph = $38; + L17 : while (1) { + $pe$0 = $pe$0$ph; + L19 : while (1) { + $42 = $pe$0 + -1 | 0; + if (($42 | 0) == ($12 | 0)) break L17; + $46 = $pe$0 + -2 | 0; + switch (HEAP8[$46 >> 0] | 0) { + case 60: + { + $$lcssa = $46; + $$lcssa32 = $42; + label = 16; + break L19; + break; + } + case 62: + { + $$lcssa33 = $42; + label = 17; + break L19; + break; + } + default: + $pe$0 = $42; + } + } + if ((label | 0) == 16) { + label = 0; + $48 = $c$0$ph + -1 | 0; + if (!$48) { + $pe$1 = $$lcssa; + break L16; + } else { + $c$0$ph = $48; + $pe$0$ph = $$lcssa32; + continue; + } + } else if ((label | 0) == 17) { + label = 0; + $c$0$ph = $c$0$ph + 1 | 0; + $pe$0$ph = $$lcssa33; + continue; + } + } + HEAP32[$agg$result >> 2] = 0; + HEAP32[$agg$result + 4 >> 2] = 0; + HEAP32[$agg$result + 8 >> 2] = 0; + break L1; + } else $pe$1 = $38; while (0); + $pe$1$pn = $pe$1; + while (1) { + $p0$0 = $pe$1$pn + -1 | 0; + if (($p0$0 | 0) == ($12 | 0)) { + $p0$1 = $12; + break; + } + if ((HEAP8[$p0$0 >> 0] | 0) == 58) { + $p0$1 = $pe$1$pn; + break; + } else $pe$1$pn = $p0$0; + } + $56 = $pe$1 - $p0$1 | 0; + if ($56 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($agg$result); + if ($56 >>> 0 < 11) { + HEAP8[$agg$result >> 0] = $56 << 1; + $__p$0$ph$i$i = $agg$result + 1 | 0; + } else { + $63 = $56 + 16 & -16; + $64 = _malloc($63) | 0; + HEAP32[$agg$result + 8 >> 2] = $64; + HEAP32[$agg$result >> 2] = $63 | 1; + HEAP32[$agg$result + 4 >> 2] = $56; + $__p$0$ph$i$i = $64; + } + if (($p0$1 | 0) != ($pe$1 | 0)) { + $$0$i$i27 = $p0$1; + $__p$0$i$i26 = $__p$0$ph$i$i; + while (1) { + HEAP8[$__p$0$i$i26 >> 0] = HEAP8[$$0$i$i27 >> 0] | 0; + $$0$i$i27 = $$0$i$i27 + 1 | 0; + if (($$0$i$i27 | 0) == ($pe$1 | 0)) break; else $__p$0$i$i26 = $__p$0$i$i26 + 1 | 0; + } + } + HEAP8[$__p$0$ph$i$i + $56 >> 0] = 0; + } while (0); + return; +} + +function _trinkle($head, $width, $cmp, $pp, $pshift, $trusty, $lp) { + $head = $head | 0; + $width = $width | 0; + $cmp = $cmp | 0; + $pp = $pp | 0; + $pshift = $pshift | 0; + $trusty = $trusty | 0; + $lp = $lp | 0; + var $$0$i = 0, $$0$lcssa = 0, $$0$lcssa49 = 0, $$01162 = 0, $$01162$phi = 0, $$02$i$i = 0, $$02$i3$i = 0, $$02$lcssa = 0, $$02$lcssa51 = 0, $$02964 = 0, $$03$lcssa = 0, $$03865 = 0, $$lcssa = 0, $$lcssa75 = 0, $0 = 0, $10 = 0, $17 = 0, $18 = 0, $2 = 0, $24 = 0, $26 = 0, $27 = 0, $3 = 0, $31 = 0, $37 = 0, $40 = 0, $47 = 0, $49 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $65 = 0, $ar = 0, $i$0$lcssa = 0, $i$0$lcssa50 = 0, $i$01063 = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 240 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ar = sp; + $0 = HEAP32[$pp >> 2] | 0; + $2 = HEAP32[$pp + 4 >> 2] | 0; + HEAP32[$ar >> 2] = $head; + $3 = 0 - $width | 0; + L1 : do if (($2 | 0) != 0 | ($0 | 0) != 1) { + $10 = $head + (0 - (HEAP32[$lp + ($pshift << 2) >> 2] | 0)) | 0; + if ((FUNCTION_TABLE_iii[$cmp & 15]($10, $head) | 0) < 1) { + $$0$lcssa = $head; + $$02$lcssa = $pshift; + $$03$lcssa = $trusty; + $i$0$lcssa = 1; + label = 19; + } else { + $$01162 = $head; + $$02964 = $pshift; + $$03865 = ($trusty | 0) == 0; + $18 = $10; + $27 = $0; + $37 = $2; + $i$01063 = 1; + while (1) { + if ($$03865 & ($$02964 | 0) > 1) { + $17 = HEAP32[$lp + ($$02964 + -2 << 2) >> 2] | 0; + if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + $3 | 0, $18) | 0) > -1) { + $$0$lcssa49 = $$01162; + $$02$lcssa51 = $$02964; + $i$0$lcssa50 = $i$01063; + label = 20; + break L1; + } + if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + (0 - ($17 + $width)) | 0, $18) | 0) > -1) { + $$0$lcssa49 = $$01162; + $$02$lcssa51 = $$02964; + $i$0$lcssa50 = $i$01063; + label = 20; + break L1; + } + } + $24 = $i$01063 + 1 | 0; + HEAP32[$ar + ($i$01063 << 2) >> 2] = $18; + $26 = $27 + -1 | 0; + do if (!$26) { + $49 = 32; + label = 16; + } else { + if (!($26 & 1)) { + $$02$i$i = $26; + $nTrailingZeros$03$i$i = 0; + while (1) { + $31 = $nTrailingZeros$03$i$i + 1 | 0; + $$02$i$i = $$02$i$i >>> 1; + if ($$02$i$i & 1) { + $$lcssa = $31; + break; + } else $nTrailingZeros$03$i$i = $31; + } + if (!$$lcssa) label = 11; else $47 = $$lcssa; + } else label = 11; + if ((label | 0) == 11) { + label = 0; + if (!$37) { + $49 = 64; + label = 16; + break; + } + if (!($37 & 1)) { + $$02$i3$i = $37; + $nTrailingZeros$03$i2$i = 0; + } else { + $$0$i = 0; + $51 = $27; + $54 = $37; + $58 = 0; + break; + } + while (1) { + $40 = $nTrailingZeros$03$i2$i + 1 | 0; + $$02$i3$i = $$02$i3$i >>> 1; + if ($$02$i3$i & 1) { + $$lcssa75 = $40; + $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i; + break; + } else $nTrailingZeros$03$i2$i = $40; + } + if (!$$lcssa75) { + $$0$i = 0; + $51 = $27; + $54 = $37; + $58 = 0; + break; + } else $47 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0; + } + if ($47 >>> 0 > 31) { + $49 = $47; + label = 16; + } else { + $$0$i = $47; + $51 = $27; + $54 = $37; + $58 = $47; + } + } while (0); + if ((label | 0) == 16) { + label = 0; + $$0$i = $49 + -32 | 0; + $51 = $37; + $54 = 0; + $58 = $49; + } + $27 = $54 << 32 - $$0$i | $51 >>> $$0$i; + $37 = $54 >>> $$0$i; + $57 = $58 + $$02964 | 0; + if (!(($37 | 0) != 0 | ($27 | 0) != 1)) { + $$0$lcssa49 = $18; + $$02$lcssa51 = $57; + $i$0$lcssa50 = $24; + label = 20; + break L1; + } + $65 = $18 + (0 - (HEAP32[$lp + ($57 << 2) >> 2] | 0)) | 0; + if ((FUNCTION_TABLE_iii[$cmp & 15]($65, HEAP32[$ar >> 2] | 0) | 0) < 1) { + $$0$lcssa = $18; + $$02$lcssa = $57; + $$03$lcssa = 0; + $i$0$lcssa = $24; + label = 19; + break; + } else { + $$01162$phi = $18; + $$02964 = $57; + $$03865 = 1; + $18 = $65; + $i$01063 = $24; + $$01162 = $$01162$phi; + } + } + } + } else { + $$0$lcssa = $head; + $$02$lcssa = $pshift; + $$03$lcssa = $trusty; + $i$0$lcssa = 1; + label = 19; + } while (0); + if ((label | 0) == 19) if (!$$03$lcssa) { + $$0$lcssa49 = $$0$lcssa; + $$02$lcssa51 = $$02$lcssa; + $i$0$lcssa50 = $i$0$lcssa; + label = 20; + } + if ((label | 0) == 20) { + _cycle($width, $ar, $i$0$lcssa50); + _sift($$0$lcssa49, $width, $cmp, $$02$lcssa51, $lp); + } + STACKTOP = sp; + return; +} + +function _arMatrixPCA($input, $evec, $ev, $mean) { + $input = $input | 0; + $evec = $evec | 0; + $ev = $ev | 0; + $mean = $mean | 0; + var $$0 = 0, $1 = 0, $14 = 0, $17 = 0, $20 = 0, $23 = 0.0, $25 = 0, $27 = 0, $3 = 0, $32 = 0, $35 = 0, $36 = 0.0, $37 = 0, $46 = 0, $5 = 0, $52 = 0, $53 = 0, $65 = 0, $70 = 0, $71 = 0, $73 = 0, $75 = 0, $78 = 0.0, $81 = 0, $exitcond3$i29 = 0, $i$0$i322 = 0, $i$0$i42 = 0, $i$015 = 0, $i$1$i38 = 0, $i$113 = 0, $i$2$i26 = 0, $i$211 = 0, $j$0$i32 = 0, $j$0$i619 = 0, $m$0$i221 = 0, $m$0$i37 = 0, $m$1$i31 = 0, $m$1$i518 = 0, $smax$i = 0, $sum$0$lcssa = 0.0, $sum$012 = 0.0, $v$0$i30 = 0, $v$0$i417 = 0; + $1 = HEAP32[$input + 4 >> 2] | 0; + $3 = HEAP32[$input + 8 >> 2] | 0; + $5 = ($1 | 0) < ($3 | 0) ? $1 : $3; + L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else if ((HEAP32[$evec + 8 >> 2] | 0) == ($3 | 0)) if ((HEAP32[$evec + 4 >> 2] | 0) == ($5 | 0)) { + $14 = $ev + 4 | 0; + if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) { + $17 = $mean + 4 | 0; + if ((HEAP32[$17 >> 2] | 0) == ($3 | 0)) { + $20 = _arMatrixAllocDup($input) | 0; + if (!$20) $$0 = -1; else { + $23 = +Math_sqrt(+(+($1 | 0))); + $25 = HEAP32[$20 + 4 >> 2] | 0; + $27 = HEAP32[$20 + 8 >> 2] | 0; + if (!(($25 | 0) < 1 | ($27 | 0) < 1)) if ((HEAP32[$17 >> 2] | 0) == ($27 | 0)) { + if ($27) { + $32 = HEAP32[$mean >> 2] | 0; + $i$0$i42 = 0; + do { + HEAPF64[$32 + ($i$0$i42 << 3) >> 3] = 0.0; + $i$0$i42 = $i$0$i42 + 1 | 0; + } while (($i$0$i42 | 0) != ($27 | 0)); + } + $35 = HEAP32[$20 >> 2] | 0; + if ($25) { + $exitcond3$i29 = ($27 | 0) == 0; + $i$1$i38 = 0; + $m$0$i37 = $35; + while (1) { + if (!$exitcond3$i29) { + $j$0$i32 = 0; + $m$1$i31 = $m$0$i37; + $v$0$i30 = HEAP32[$mean >> 2] | 0; + while (1) { + HEAPF64[$v$0$i30 >> 3] = +HEAPF64[$m$1$i31 >> 3] + +HEAPF64[$v$0$i30 >> 3]; + $j$0$i32 = $j$0$i32 + 1 | 0; + if (($j$0$i32 | 0) == ($27 | 0)) break; else { + $m$1$i31 = $m$1$i31 + 8 | 0; + $v$0$i30 = $v$0$i30 + 8 | 0; + } + } + } + $i$1$i38 = $i$1$i38 + 1 | 0; + if (($i$1$i38 | 0) == ($25 | 0)) break; else $m$0$i37 = $m$0$i37 + ($27 << 3) | 0; + } + } + $36 = +($25 | 0); + if ($27) { + $37 = HEAP32[$mean >> 2] | 0; + $i$2$i26 = 0; + do { + $46 = $37 + ($i$2$i26 << 3) | 0; + HEAPF64[$46 >> 3] = +HEAPF64[$46 >> 3] / $36; + $i$2$i26 = $i$2$i26 + 1 | 0; + } while (($i$2$i26 | 0) != ($27 | 0)); + } + $smax$i = ($27 | 0) > 0 ? $27 : 0; + if (($25 | 0) > 0) { + $52 = ($27 | 0) > 0; + $i$0$i322 = 0; + $m$0$i221 = $35; + while (1) { + if ($52) { + $j$0$i619 = 0; + $m$1$i518 = $m$0$i221; + $v$0$i417 = HEAP32[$mean >> 2] | 0; + while (1) { + HEAPF64[$m$1$i518 >> 3] = +HEAPF64[$m$1$i518 >> 3] - +HEAPF64[$v$0$i417 >> 3]; + $j$0$i619 = $j$0$i619 + 1 | 0; + if (($j$0$i619 | 0) >= ($27 | 0)) break; else { + $m$1$i518 = $m$1$i518 + 8 | 0; + $v$0$i417 = $v$0$i417 + 8 | 0; + } + } + } + $i$0$i322 = $i$0$i322 + 1 | 0; + if (($i$0$i322 | 0) >= ($25 | 0)) break; else $m$0$i221 = $m$0$i221 + ($smax$i << 3) | 0; + } + } + $53 = Math_imul($3, $1) | 0; + if (($53 | 0) > 0) { + $i$015 = 0; + do { + $65 = $35 + ($i$015 << 3) | 0; + HEAPF64[$65 >> 3] = +HEAPF64[$65 >> 3] / $23; + $i$015 = $i$015 + 1 | 0; + } while (($i$015 | 0) < ($53 | 0)); + } + $70 = _PCA($20, $evec, $ev) | 0; + _arMatrixFree($20) | 0; + $71 = HEAP32[$14 >> 2] | 0; + if (($71 | 0) > 0) { + $73 = HEAP32[$ev >> 2] | 0; + $i$113 = 0; + $sum$012 = 0.0; + while (1) { + $78 = $sum$012 + +HEAPF64[$73 + ($i$113 << 3) >> 3]; + $i$113 = $i$113 + 1 | 0; + if (($i$113 | 0) >= ($71 | 0)) { + $sum$0$lcssa = $78; + break; + } else $sum$012 = $78; + } + } else $sum$0$lcssa = 0.0; + if (($71 | 0) <= 0) { + $$0 = $70; + break; + } + $75 = HEAP32[$ev >> 2] | 0; + $i$211 = 0; + while (1) { + $81 = $75 + ($i$211 << 3) | 0; + HEAPF64[$81 >> 3] = +HEAPF64[$81 >> 3] / $sum$0$lcssa; + $i$211 = $i$211 + 1 | 0; + if (($i$211 | 0) >= ($71 | 0)) { + $$0 = $70; + break L1; + } + } + } + _arMatrixFree($20) | 0; + $$0 = -1; + } + } else $$0 = -1; + } else $$0 = -1; + } else $$0 = -1; else $$0 = -1; while (0); + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $$0$i = 0, $10 = 0, $12 = 0, $14 = 0, $15 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $4 = 0, $42 = 0, $48 = 0, $52 = 0, $54 = 0, $56 = 0, $58 = 0, $59 = 0, $67 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $75 = 0, $9 = 0, $args = 0, $args3 = 0, $t$0$i = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $args = sp + 12 | 0; + $args3 = sp; + L1 : do if (($last - $first | 0) > 1) { + $4 = HEAP8[$first >> 0] | 0; + switch ($4 << 24 >> 24) { + case 100: + case 111: + { + if ((HEAP8[$first + 1 >> 0] | 0) == 110) { + $9 = $first + 2 | 0; + if ($4 << 24 >> 24 == 111) { + $10 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0; + if (($10 | 0) == ($9 | 0)) { + $$0 = $first; + break L1; + } + $12 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($10, $last, $db) | 0; + if (($12 | 0) == ($10 | 0)) { + $$0 = $10; + break L1; + } + $14 = $db + 4 | 0; + $15 = HEAP32[$14 >> 2] | 0; + if ((($15 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) { + $$0 = $12; + break L1; + } + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $15 + -24 | 0); + $23 = HEAP32[$14 >> 2] | 0; + $24 = $23 + -24 | 0; + $26 = $23; + do { + $25 = $26 + -24 | 0; + HEAP32[$14 >> 2] = $25; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25); + $26 = HEAP32[$14 >> 2] | 0; + } while (($26 | 0) != ($24 | 0)); + $29 = HEAP8[$args >> 0] | 0; + $31 = ($29 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($23 + -48 | 0, $31 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $31 ? ($29 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$0 = $12; + break L1; + } + if (($9 | 0) == ($last | 0)) $$0$i = $last; else { + $42 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0; + if (($42 | 0) == ($9 | 0)) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0; else $t$0$i = $42; + if (($t$0$i | 0) == ($9 | 0)) $$0$i = $9; else { + $48 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($48 | 0)) $$0$i = $9; else { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($48 + -24 | 0, 0, 12928) | 0; + $$0$i = $t$0$i; + } + } + } + STACKTOP = sp; + return (($$0$i | 0) == ($9 | 0) ? $first : $$0$i) | 0; + } + break; + } + default: + {} + } + $52 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($52 | 0) == ($first | 0)) { + $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($54 | 0) == ($first | 0)) $$0 = $first; else { + $56 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0; + if (($56 | 0) == ($54 | 0)) $$0 = $54; else { + $58 = $db + 4 | 0; + $59 = HEAP32[$58 >> 2] | 0; + if ((($59 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $56; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $59 + -24 | 0); + $67 = HEAP32[$58 >> 2] | 0; + $68 = $67 + -24 | 0; + $70 = $67; + do { + $69 = $70 + -24 | 0; + HEAP32[$58 >> 2] = $69; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69); + $70 = HEAP32[$58 >> 2] | 0; + } while (($70 | 0) != ($68 | 0)); + $73 = HEAP8[$args3 >> 0] | 0; + $75 = ($73 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($67 + -48 | 0, $75 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $75 ? ($73 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3); + $$0 = $56; + } + } + } + } else $$0 = $52; + } else $$0 = $first; while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arParamLoad($filename, $num, $param, $varargs) { + $filename = $filename | 0; + $num = $num | 0; + $param = $param | 0; + $varargs = $varargs | 0; + var $$pre$phi14Z2D = 0, $11 = 0, $14 = 0, $15 = 0, $18 = 0, $21 = 0, $23 = 0, $26 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0, $36 = 0, $43 = 0, $44 = 0, $5 = 0, $53 = 0.0, $8 = 0, $ap = 0, $dist_function_version$04 = 0, $i$0 = 0, $i$0$lcssa = 0, $i$119 = 0, $param_wasRead = 0, $ret$06 = 0, $ret$09 = 0, $vararg_buffer = 0, $vararg_buffer13 = 0, $vararg_buffer15 = 0, $vararg_buffer18 = 0, $vararg_buffer2 = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 256 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer18 = sp + 232 | 0; + $vararg_buffer15 = sp + 224 | 0; + $vararg_buffer13 = sp + 216 | 0; + $vararg_buffer9 = sp + 208 | 0; + $vararg_buffer6 = sp + 200 | 0; + $vararg_buffer2 = sp + 192 | 0; + $vararg_buffer = sp + 184 | 0; + $ap = sp + 240 | 0; + $param_wasRead = sp; + do if (($filename | 0) != 0 & ($num | 0) > 0 & ($param | 0) != 0) { + $3 = _fopen($filename, 4854) | 0; + if (!$3) { + $5 = ___errno_location() | 0; + HEAP32[$vararg_buffer >> 2] = HEAP32[$5 >> 2]; + HEAP32[$vararg_buffer + 4 >> 2] = $filename; + _arLog(3, 4857, $vararg_buffer); + $8 = _strerror(HEAP32[$5 >> 2] | 0) | 0; + HEAP32[$vararg_buffer2 >> 2] = 13835; + HEAP32[$vararg_buffer2 + 4 >> 2] = $8; + _arLog(3, 5361, $vararg_buffer2); + $ret$06 = -1; + break; + } + _fseek($3, 0, 2) | 0; + L6 : do if (!(_ferror($3) | 0)) { + $15 = _ftell($3) | 0; + _rewind($3); + $i$0 = 0; + while (1) { + if (($i$0 | 0) >= 4) { + $i$0$lcssa = $i$0; + label = 9; + break; + } + $18 = HEAP32[2012 + ($i$0 << 3) + 4 >> 2] | 0; + $21 = $i$0 + 1 | 0; + if (!(($15 | 0) % ($18 | 0) | 0)) { + $23 = $18; + $dist_function_version$04 = $21; + break; + } else $i$0 = $21; + } + do if ((label | 0) == 9) if (($i$0$lcssa | 0) == 4) { + _arLog(3, 4971, $vararg_buffer13); + $ret$09 = -1; + break L6; + } else { + $23 = HEAP32[2012 + (0 << 3) + 4 >> 2] | 0; + $dist_function_version$04 = 0; + break; + } while (0); + if ((_fread($param_wasRead, $23, 1, $3) | 0) != 1) { + $26 = ___errno_location() | 0; + HEAP32[$vararg_buffer15 >> 2] = HEAP32[$26 >> 2]; + _arLog(3, 5051, $vararg_buffer15); + $29 = _strerror(HEAP32[$26 >> 2] | 0) | 0; + HEAP32[$vararg_buffer18 >> 2] = 13835; + HEAP32[$vararg_buffer18 + 4 >> 2] = $29; + _arLog(3, 5361, $vararg_buffer18); + $ret$09 = -1; + break; + } + $30 = $param_wasRead + 176 | 0; + HEAP32[$30 >> 2] = $dist_function_version$04; + _byteswap($param_wasRead); + $31 = ($dist_function_version$04 | 0) == 1; + $32 = $param_wasRead + 120 | 0; + if ($31) { + $33 = +HEAPF64[$32 >> 3]; + $34 = $param_wasRead + 128 | 0; + HEAPF64[$32 >> 3] = +HEAPF64[$34 >> 3]; + HEAPF64[$34 >> 3] = $33; + $$pre$phi14Z2D = $34; + } else $$pre$phi14Z2D = $param_wasRead + 128 | 0; + _memcpy($param | 0, $param_wasRead | 0, 184) | 0; + HEAP32[$ap >> 2] = $varargs; + $36 = $param + 176 | 0; + if (($num | 0) > 1) { + $i$119 = 1; + while (1) { + $43 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $44 = HEAP32[$43 >> 2] | 0; + HEAP32[$ap >> 2] = $43 + 4; + HEAP32[$44 + 176 >> 2] = HEAP32[$36 >> 2]; + if ((_fread($param_wasRead, HEAP32[2012 + ((HEAP32[$36 >> 2] | 0) + -1 << 3) + 4 >> 2] | 0, 1, $3) | 0) != 1) { + $ret$09 = -1; + break L6; + } + HEAP32[$30 >> 2] = $dist_function_version$04; + _byteswap($param_wasRead); + if ($31) { + $53 = +HEAPF64[$32 >> 3]; + HEAPF64[$32 >> 3] = +HEAPF64[$$pre$phi14Z2D >> 3]; + HEAPF64[$$pre$phi14Z2D >> 3] = $53; + } + _memcpy($44 | 0, $param_wasRead | 0, 184) | 0; + $i$119 = $i$119 + 1 | 0; + if (($i$119 | 0) >= ($num | 0)) { + $ret$09 = 0; + break; + } + } + } else $ret$09 = 0; + } else { + $11 = ___errno_location() | 0; + HEAP32[$vararg_buffer6 >> 2] = HEAP32[$11 >> 2]; + _arLog(3, 4926, $vararg_buffer6); + $14 = _strerror(HEAP32[$11 >> 2] | 0) | 0; + HEAP32[$vararg_buffer9 >> 2] = 13835; + HEAP32[$vararg_buffer9 + 4 >> 2] = $14; + _arLog(3, 5361, $vararg_buffer9); + $ret$09 = -1; + } while (0); + _fclose($3) | 0; + $ret$06 = $ret$09; + } else $ret$06 = -1; while (0); + STACKTOP = sp; + return $ret$06 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) { + $first = $first | 0; + $last = $last | 0; + $op = $op | 0; + $db = $db | 0; + var $$04 = 0, $$pre$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $13 = 0, $15 = 0, $2 = 0, $25 = 0, $28 = 0, $3 = 0, $35 = 0, $37 = 0, $4 = 0, $40 = 0, $44 = 0, $47 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $69 = 0, $7 = 0, $72 = 0, $77 = 0, $8 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 36 | 0; + $1 = sp + 24 | 0; + $2 = sp + 12 | 0; + $3 = sp; + $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($4 | 0) == ($first | 0)) $$04 = $first; else { + $7 = $db + 4 | 0; + $8 = HEAP32[$7 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($8 | 0)) $$04 = $first; else { + $10 = $8 + -24 | 0; + __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($2, $op, 12714); + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$7 >> 2] | 0) + -24 | 0); + $13 = HEAP8[$3 >> 0] | 0; + $15 = ($13 & 1) == 0; + $25 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $15 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $15 ? ($13 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0; + HEAP32[$1 >> 2] = HEAP32[$25 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$25 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$25 + 8 >> 2]; + HEAP32[$25 >> 2] = 0; + HEAP32[$25 + 4 >> 2] = 0; + HEAP32[$25 + 8 >> 2] = 0; + $28 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0; + HEAP32[$0 >> 2] = HEAP32[$28 >> 2]; + HEAP32[$0 + 4 >> 2] = HEAP32[$28 + 4 >> 2]; + HEAP32[$0 + 8 >> 2] = HEAP32[$28 + 8 >> 2]; + HEAP32[$28 >> 2] = 0; + HEAP32[$28 + 4 >> 2] = 0; + HEAP32[$28 + 8 >> 2] = 0; + do if (!(HEAP8[$10 >> 0] & 1)) { + HEAP8[$10 + 1 >> 0] = 0; + HEAP8[$10 >> 0] = 0; + } else { + $35 = $8 + -16 | 0; + HEAP8[HEAP32[$35 >> 2] >> 0] = 0; + $37 = $8 + -20 | 0; + HEAP32[$37 >> 2] = 0; + $$pre$i$i$i = HEAP8[$10 >> 0] | 0; + if (!($$pre$i$i$i & 1)) { + $44 = $$pre$i$i$i; + $53 = 10; + } else { + $40 = HEAP32[$10 >> 2] | 0; + $44 = $40 & 255; + $53 = ($40 & -2) + -1 | 0; + } + if (!($44 & 1)) { + $47 = ($44 & 255) >>> 1; + if (($44 & 255) < 22) { + $52 = 10; + $72 = $47; + $77 = 1; + } else { + $52 = ($47 + 16 & 240) + -1 | 0; + $72 = $47; + $77 = 1; + } + } else { + $52 = 10; + $72 = 0; + $77 = 0; + } + if (($52 | 0) != ($53 | 0)) { + if (($52 | 0) == 10) { + $59 = $10 + 1 | 0; + $60 = HEAP32[$35 >> 2] | 0; + if ($77) { + _memcpy($59 | 0, $60 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0; + _free($60); + } else { + HEAP8[$59 >> 0] = HEAP8[$60 >> 0] | 0; + _free($60); + } + HEAP8[$10 >> 0] = $72 << 1; + break; + } + $56 = $52 + 1 | 0; + $57 = _malloc($56) | 0; + if (!($52 >>> 0 <= $53 >>> 0 & ($57 | 0) == 0)) { + if ($77) _memcpy($57 | 0, $10 + 1 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0; else { + $69 = HEAP32[$35 >> 2] | 0; + HEAP8[$57 >> 0] = HEAP8[$69 >> 0] | 0; + _free($69); + } + HEAP32[$10 >> 2] = $56 | 1; + HEAP32[$37 >> 2] = $72; + HEAP32[$35 >> 2] = $57; + } + } + } while (0); + HEAP32[$10 >> 2] = HEAP32[$0 >> 2]; + HEAP32[$10 + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$10 + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + $$04 = $4; + } + } + STACKTOP = sp; + return $$04 | 0; +} + +function _icpPoint($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) { + $handle = $handle | 0; + $data = $data | 0; + $initMatXw2Xc = $initMatXw2Xc | 0; + $matXw2Xc = $matXw2Xc | 0; + $err = $err | 0; + var $$0 = 0, $$lcssa = 0, $$lcssa28 = 0, $$lcssa50 = 0.0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $28 = 0, $34 = 0, $38 = 0.0, $4 = 0, $42 = 0.0, $46 = 0.0, $47 = 0, $52 = 0, $55 = 0.0, $7 = 0, $9 = 0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$033 = 0.0, $i$1 = 0, $j$042 = 0, $j$134 = 0, $j$238 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 176 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 168 | 0; + $vararg_buffer = sp + 160 | 0; + $U = sp + 48 | 0; + $matXw2U = sp + 64 | 0; + $dS = sp; + $0 = $data + 8 | 0; + $1 = HEAP32[$0 >> 2] | 0; + do if (($1 | 0) < 3) $$0 = -1; else { + $4 = _malloc($1 * 96 | 0) | 0; + if (!$4) { + _arLog(3, 5109, $vararg_buffer); + $$0 = -1; + break; + } + $7 = _malloc($1 << 4) | 0; + if (!$7) { + _arLog(3, 5109, $vararg_buffer1); + _free($4); + $$0 = -1; + break; + } else $j$042 = 0; + do { + HEAPF64[$matXw2Xc + ($j$042 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) >> 3]; + HEAPF64[$matXw2Xc + ($j$042 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 8 >> 3]; + HEAPF64[$matXw2Xc + ($j$042 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 16 >> 3]; + HEAPF64[$matXw2Xc + ($j$042 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 24 >> 3]; + $j$042 = $j$042 + 1 | 0; + } while (($j$042 | 0) != 3); + $9 = $data + 4 | 0; + $10 = $U + 8 | 0; + $11 = $handle + 104 | 0; + $12 = $handle + 120 | 0; + $13 = $handle + 112 | 0; + $14 = $handle + 96 | 0; + $err0$0 = 0.0; + $i$1 = 0; + L11 : while (1) { + _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0; + $28 = HEAP32[$0 >> 2] | 0; + if (($28 | 0) > 0) { + $err1$033 = 0.0; + $j$134 = 0; + while (1) { + if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$9 >> 2] | 0) + ($j$134 * 24 | 0) | 0) | 0) < 0) { + label = 10; + break L11; + } + $34 = HEAP32[$data >> 2] | 0; + $38 = +HEAPF64[$34 + ($j$134 << 4) >> 3] - +HEAPF64[$U >> 3]; + $42 = +HEAPF64[$34 + ($j$134 << 4) + 8 >> 3] - +HEAPF64[$10 >> 3]; + $46 = $err1$033 + ($38 * $38 + $42 * $42); + $47 = $j$134 << 1; + HEAPF64[$7 + ($47 << 3) >> 3] = $38; + HEAPF64[$7 + (($47 | 1) << 3) >> 3] = $42; + $j$134 = $j$134 + 1 | 0; + $52 = HEAP32[$0 >> 2] | 0; + if (($j$134 | 0) >= ($52 | 0)) { + $$lcssa = $52; + $err1$0$lcssa = $46; + break; + } else $err1$033 = $46; + } + } else { + $$lcssa = $28; + $err1$0$lcssa = 0.0; + } + $55 = $err1$0$lcssa / +($$lcssa | 0); + if ($55 < +HEAPF64[$11 >> 3]) { + $$lcssa50 = $55; + label = 24; + break; + } + if (($i$1 | 0) > 0) if ($55 < +HEAPF64[$12 >> 3]) if ($55 / $err0$0 > +HEAPF64[$13 >> 3]) { + $$lcssa50 = $55; + label = 24; + break; + } + if (($i$1 | 0) == (HEAP32[$14 >> 2] | 0)) { + $$lcssa50 = $55; + label = 24; + break; + } + if (($$lcssa | 0) > 0) { + $j$238 = 0; + while (1) { + if ((_icpGetJ_U_S($4 + ($j$238 * 12 << 3) | 0, $handle, $matXw2Xc, (HEAP32[$9 >> 2] | 0) + ($j$238 * 24 | 0) | 0) | 0) < 0) { + label = 20; + break L11; + } + $j$238 = $j$238 + 1 | 0; + $$pre = HEAP32[$0 >> 2] | 0; + if (($j$238 | 0) >= ($$pre | 0)) { + $$lcssa28 = $$pre; + break; + } + } + } else $$lcssa28 = $$lcssa; + if ((_icpGetDeltaS($dS, $7, $4, $$lcssa28 << 1) | 0) < 0) { + label = 22; + break; + } + _icpUpdateMat($matXw2Xc, $dS) | 0; + $err0$0 = $55; + $i$1 = $i$1 + 1 | 0; + } + if ((label | 0) == 10) { + _icpGetXw2XcCleanup($4, $7); + $$0 = -1; + break; + } else if ((label | 0) == 20) { + _icpGetXw2XcCleanup($4, $7); + $$0 = -1; + break; + } else if ((label | 0) == 22) { + _icpGetXw2XcCleanup($4, $7); + $$0 = -1; + break; + } else if ((label | 0) == 24) { + HEAPF64[$err >> 3] = $$lcssa50; + _free($4); + _free($7); + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arGetMarkerInfo($image, $xsize, $ysize, $pixelFormat, $markerInfo2, $marker2_num, $pattHandle, $imageProcMode, $pattDetectMode, $arParamLTf, $pattRatio, $markerInfo, $marker_num, $matrixCodeType) { + $image = $image | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $pixelFormat = $pixelFormat | 0; + $markerInfo2 = $markerInfo2 | 0; + $marker2_num = $marker2_num | 0; + $pattHandle = $pattHandle | 0; + $imageProcMode = $imageProcMode | 0; + $pattDetectMode = $pattDetectMode | 0; + $arParamLTf = $arParamLTf | 0; + $pattRatio = +$pattRatio; + $markerInfo = $markerInfo | 0; + $marker_num = $marker_num | 0; + $matrixCodeType = $matrixCodeType | 0; + var $0 = 0, $1 = 0, $26 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $i$03 = 0, $j$0$lcssa = 0, $j$02 = 0, $j$1 = 0, $pos0 = 0, $pos1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $pos0 = sp + 4 | 0; + $pos1 = sp; + $0 = $pattDetectMode >>> 0 < 2; + $1 = ($pattDetectMode | 0) == 2; + if (($marker2_num | 0) > 0) { + $i$03 = 0; + $j$02 = 0; + while (1) { + HEAP32[$markerInfo + ($j$02 << 8) >> 2] = HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) >> 2]; + if ((_arParamObserv2IdealLTf($arParamLTf, +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 8 >> 3], +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 16 >> 3], $pos0, $pos1) | 0) < 0) $j$1 = $j$02; else { + HEAPF64[$markerInfo + ($j$02 << 8) + 56 >> 3] = +HEAPF32[$pos0 >> 2]; + HEAPF64[$markerInfo + ($j$02 << 8) + 64 >> 3] = +HEAPF32[$pos1 >> 2]; + $26 = $markerInfo + ($j$02 << 8) + 168 | 0; + if ((_arGetLine($markerInfo2 + ($i$03 * 80048 | 0) + 28 | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 40028 | 0, HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) + 24 >> 2] | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 80028 | 0, $arParamLTf, $markerInfo + ($j$02 << 8) + 72 | 0, $26) | 0) < 0) $j$1 = $j$02; else { + $29 = $markerInfo + ($j$02 << 8) + 8 | 0; + $30 = $markerInfo + ($j$02 << 8) + 20 | 0; + $31 = $markerInfo + ($j$02 << 8) + 40 | 0; + $32 = $markerInfo + ($j$02 << 8) + 12 | 0; + $33 = $markerInfo + ($j$02 << 8) + 24 | 0; + $34 = $markerInfo + ($j$02 << 8) + 48 | 0; + switch (_arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $arParamLTf, $26, $pattRatio, $29, $30, $31, $32, $33, $34, $matrixCodeType, $markerInfo + ($j$02 << 8) + 240 | 0, $markerInfo + ($j$02 << 8) + 248 | 0) | 0) { + case 0: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 0; + break; + } + case -1: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 2; + break; + } + case -2: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 3; + break; + } + case -3: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 4; + break; + } + case -4: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 5; + break; + } + case -5: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 9; + break; + } + case -6: + { + HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 1; + break; + } + default: + {} + } + if ($0) { + HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$29 >> 2]; + HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$30 >> 2]; + HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$31 >> 3]; + } else if ($1) { + HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$32 >> 2]; + HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$33 >> 2]; + HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$34 >> 3]; + } + $j$1 = $j$02 + 1 | 0; + } + } + $i$03 = $i$03 + 1 | 0; + if (($i$03 | 0) >= ($marker2_num | 0)) { + $j$0$lcssa = $j$1; + break; + } else $j$02 = $j$1; + } + } else $j$0$lcssa = 0; + HEAP32[$marker_num >> 2] = $j$0$lcssa; + STACKTOP = sp; + return 0; +} + +function _arImageProcLumaHistAndBoxFilterWithBias($ipi, $dataPtr, $boxSize, $bias) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + $boxSize = $boxSize | 0; + $bias = $bias | 0; + var $$0 = 0, $$lcssa = 0, $$pre$phi6Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $10 = 0, $12 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $43 = 0, $5 = 0, $50 = 0, $57 = 0, $7 = 0, $count$0$lcssa = 0, $count$015 = 0, $count$110 = 0, $count$2 = 0, $count$3 = 0, $i$020 = 0, $i$18 = 0, $j$021 = 0, $kernel_i$011 = 0, $kernel_j$016 = 0, $val$0$lcssa = 0, $val$014 = 0, $val$19 = 0, $val$2 = 0, $val$3 = 0; + $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0; + do if (($0 | 0) < 0) $$0 = $0; else { + $2 = $ipi + 4 | 0; + if (!(HEAP32[$2 >> 2] | 0)) { + $5 = $ipi + 8 | 0; + $7 = $ipi + 12 | 0; + $10 = _malloc(Math_imul(HEAP32[$7 >> 2] | 0, HEAP32[$5 >> 2] | 0) | 0) | 0; + HEAP32[$2 >> 2] = $10; + if (!$10) { + $$0 = -1; + break; + } else { + $$pre$phi6Z2D = $5; + $$pre$phiZ2D = $7; + } + } else { + $$pre$phi6Z2D = $ipi + 8 | 0; + $$pre$phiZ2D = $ipi + 12 | 0; + } + $12 = $boxSize >> 1; + $13 = 0 - $12 | 0; + $14 = HEAP32[$$pre$phiZ2D >> 2] | 0; + if (($14 | 0) > 0) { + $16 = ($12 | 0) < ($13 | 0); + $17 = ($12 | 0) < ($13 | 0); + $j$021 = 0; + do { + $18 = HEAP32[$$pre$phi6Z2D >> 2] | 0; + if (($18 | 0) > 0) { + $25 = $18; + $i$020 = 0; + do { + if ($16) { + $count$0$lcssa = 0; + $val$0$lcssa = 0; + } else { + $count$015 = 0; + $kernel_j$016 = $13; + $val$014 = 0; + while (1) { + $20 = $kernel_j$016 + $j$021 | 0; + if (($20 | 0) < 0) { + $count$3 = $count$015; + $val$3 = $val$014; + } else if (($20 | 0) < (HEAP32[$$pre$phiZ2D >> 2] | 0)) { + $24 = Math_imul($25, $20) | 0; + if ($17) { + $count$3 = $count$015; + $val$3 = $val$014; + } else { + $count$110 = $count$015; + $kernel_i$011 = $13; + $val$19 = $val$014; + while (1) { + $26 = $kernel_i$011 + $i$020 | 0; + if (($26 | 0) > -1 & ($26 | 0) < ($25 | 0)) { + $count$2 = $count$110 + 1 | 0; + $val$2 = (HEAPU8[(HEAP32[$ipi >> 2] | 0) + ($24 + $26) >> 0] | 0) + $val$19 | 0; + } else { + $count$2 = $count$110; + $val$2 = $val$19; + } + if (($kernel_i$011 | 0) < ($12 | 0)) { + $count$110 = $count$2; + $kernel_i$011 = $kernel_i$011 + 1 | 0; + $val$19 = $val$2; + } else { + $count$3 = $count$2; + $val$3 = $val$2; + break; + } + } + } + } else { + $count$3 = $count$015; + $val$3 = $val$014; + } + if (($kernel_j$016 | 0) < ($12 | 0)) { + $count$015 = $count$3; + $kernel_j$016 = $kernel_j$016 + 1 | 0; + $val$014 = $val$3; + } else { + $count$0$lcssa = $count$3; + $val$0$lcssa = $val$3; + break; + } + } + } + $43 = (Math_imul($25, $j$021) | 0) + $i$020 | 0; + HEAP8[(HEAP32[$2 >> 2] | 0) + $43 >> 0] = ($val$0$lcssa | 0) / ($count$0$lcssa | 0) | 0; + $i$020 = $i$020 + 1 | 0; + $25 = HEAP32[$$pre$phi6Z2D >> 2] | 0; + } while (($i$020 | 0) < ($25 | 0)); + } + $j$021 = $j$021 + 1 | 0; + $50 = HEAP32[$$pre$phiZ2D >> 2] | 0; + } while (($j$021 | 0) < ($50 | 0)); + $$lcssa = $50; + } else $$lcssa = $14; + if (!$bias) $$0 = 0; else if ((Math_imul($$lcssa, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0) > 0) { + $i$18 = 0; + do { + $57 = (HEAP32[$2 >> 2] | 0) + $i$18 | 0; + HEAP8[$57 >> 0] = (HEAPU8[$57 >> 0] | 0) + $bias; + $i$18 = $i$18 + 1 | 0; + } while (($i$18 | 0) < (Math_imul(HEAP32[$$pre$phiZ2D >> 2] | 0, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0)); + $$0 = 0; + } else $$0 = 0; + } while (0); + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($this, $0) { + $this = $this | 0; + $0 = $0 | 0; + var $$pre$i$i$i = 0, $$pre$i$i$i2 = 0, $10 = 0, $14 = 0, $17 = 0, $22 = 0, $23 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $39 = 0, $42 = 0, $47 = 0, $48 = 0, $5 = 0, $53 = 0, $55 = 0, $58 = 0, $62 = 0, $65 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $87 = 0, $90 = 0, $95 = 0, $96 = 0; + do if (!(HEAP8[$this >> 0] & 1)) { + HEAP8[$this + 1 >> 0] = 0; + HEAP8[$this >> 0] = 0; + } else { + $5 = $this + 8 | 0; + HEAP8[HEAP32[$5 >> 2] >> 0] = 0; + $7 = $this + 4 | 0; + HEAP32[$7 >> 2] = 0; + $$pre$i$i$i = HEAP8[$this >> 0] | 0; + if (!($$pre$i$i$i & 1)) { + $14 = $$pre$i$i$i; + $23 = 10; + } else { + $10 = HEAP32[$this >> 2] | 0; + $14 = $10 & 255; + $23 = ($10 & -2) + -1 | 0; + } + if (!($14 & 1)) { + $17 = ($14 & 255) >>> 1; + if (($14 & 255) < 22) { + $22 = 10; + $42 = $17; + $95 = 1; + } else { + $22 = ($17 + 16 & 240) + -1 | 0; + $42 = $17; + $95 = 1; + } + } else { + $22 = 10; + $42 = 0; + $95 = 0; + } + if (($22 | 0) != ($23 | 0)) { + if (($22 | 0) == 10) { + $29 = $this + 1 | 0; + $30 = HEAP32[$5 >> 2] | 0; + if ($95) { + _memcpy($29 | 0, $30 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0; + _free($30); + } else { + HEAP8[$29 >> 0] = HEAP8[$30 >> 0] | 0; + _free($30); + } + HEAP8[$this >> 0] = $42 << 1; + break; + } + $26 = $22 + 1 | 0; + $27 = _malloc($26) | 0; + if (!($22 >>> 0 <= $23 >>> 0 & ($27 | 0) == 0)) { + if ($95) _memcpy($27 | 0, $this + 1 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0; else { + $39 = HEAP32[$5 >> 2] | 0; + HEAP8[$27 >> 0] = HEAP8[$39 >> 0] | 0; + _free($39); + } + HEAP32[$this >> 2] = $26 | 1; + HEAP32[$7 >> 2] = $42; + HEAP32[$5 >> 2] = $27; + } + } + } while (0); + HEAP32[$this >> 2] = HEAP32[$0 >> 2]; + HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + $47 = $this + 12 | 0; + $48 = $0 + 12 | 0; + do if (!(HEAP8[$47 >> 0] & 1)) { + HEAP8[$47 + 1 >> 0] = 0; + HEAP8[$47 >> 0] = 0; + } else { + $53 = $this + 20 | 0; + HEAP8[HEAP32[$53 >> 2] >> 0] = 0; + $55 = $this + 16 | 0; + HEAP32[$55 >> 2] = 0; + $$pre$i$i$i2 = HEAP8[$47 >> 0] | 0; + if (!($$pre$i$i$i2 & 1)) { + $62 = $$pre$i$i$i2; + $71 = 10; + } else { + $58 = HEAP32[$47 >> 2] | 0; + $62 = $58 & 255; + $71 = ($58 & -2) + -1 | 0; + } + if (!($62 & 1)) { + $65 = ($62 & 255) >>> 1; + if (($62 & 255) < 22) { + $70 = 10; + $90 = $65; + $96 = 1; + } else { + $70 = ($65 + 16 & 240) + -1 | 0; + $90 = $65; + $96 = 1; + } + } else { + $70 = 10; + $90 = 0; + $96 = 0; + } + if (($70 | 0) != ($71 | 0)) { + if (($70 | 0) == 10) { + $77 = $47 + 1 | 0; + $78 = HEAP32[$53 >> 2] | 0; + if ($96) { + _memcpy($77 | 0, $78 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0; + _free($78); + } else { + HEAP8[$77 >> 0] = HEAP8[$78 >> 0] | 0; + _free($78); + } + HEAP8[$47 >> 0] = $90 << 1; + break; + } + $74 = $70 + 1 | 0; + $75 = _malloc($74) | 0; + if (!($70 >>> 0 <= $71 >>> 0 & ($75 | 0) == 0)) { + if ($96) _memcpy($75 | 0, $47 + 1 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0; else { + $87 = HEAP32[$53 >> 2] | 0; + HEAP8[$75 >> 0] = HEAP8[$87 >> 0] | 0; + _free($87); + } + HEAP32[$47 >> 2] = $74 | 1; + HEAP32[$55 >> 2] = $90; + HEAP32[$53 >> 2] = $75; + } + } + } while (0); + HEAP32[$47 >> 2] = HEAP32[$48 >> 2]; + HEAP32[$47 + 4 >> 2] = HEAP32[$48 + 4 >> 2]; + HEAP32[$47 + 8 >> 2] = HEAP32[$48 + 8 >> 2]; + HEAP32[$48 >> 2] = 0; + HEAP32[$48 + 4 >> 2] = 0; + HEAP32[$48 + 8 >> 2] = 0; + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) { + $this = $this | 0; + $__nbc = $__nbc | 0; + var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0; + $0 = $this + 4 | 0; + L1 : do if (!$__nbc) { + $51 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = 0; + if ($51) __ZdlPv($51); + HEAP32[$0 >> 2] = 0; + } else { + $3 = __Znwj($__nbc << 2) | 0; + $4 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = $3; + if ($4) __ZdlPv($4); + HEAP32[$0 >> 2] = $__nbc; + if ($__nbc) { + $__i$039 = 0; + do { + HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0; + $__i$039 = $__i$039 + 1 | 0; + } while (($__i$039 | 0) != ($__nbc | 0)); + } + $9 = $this + 8 | 0; + $10 = HEAP32[$9 >> 2] | 0; + if ($10) { + $13 = HEAP32[$10 + 4 >> 2] | 0; + $14 = $__nbc + -1 | 0; + $16 = ($14 & $__nbc | 0) == 0; + if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0; + HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9; + $__cp$0252833 = HEAP32[$10 >> 2] | 0; + if ($__cp$0252833) { + $$in = $10; + $__cp$0$in2736 = $10; + $__cp$0252837 = $__cp$0252833; + $__phash$0$ph$ph35 = $21; + while (1) { + $$in41 = $$in; + $__cp$0$in30 = $__cp$0$in2736; + $__cp$02531 = $__cp$0252837; + L21 : while (1) { + $__cp$026 = $__cp$02531; + while (1) { + $25 = HEAP32[$__cp$026 + 4 >> 2] | 0; + if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0; + if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) { + $__cp$026$lcssa = $__cp$026; + break; + } + $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0; + if (!(HEAP32[$31 >> 2] | 0)) { + $$in41$lcssa = $$in41; + $$lcssa56 = $29; + $$lcssa58 = $31; + $__cp$026$lcssa53 = $__cp$026; + break L21; + } + $34 = $__cp$026 + 8 | 0; + $__np$0 = $__cp$026; + while (1) { + $36 = HEAP32[$__np$0 >> 2] | 0; + if (!$36) { + $$lcssa = $36; + $__np$0$lcssa = $__np$0; + break; + } + if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else { + $$lcssa = $36; + $__np$0$lcssa = $__np$0; + break; + } + } + HEAP32[$$in41 >> 2] = $$lcssa; + HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2]; + HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026; + $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0; + if (!$__cp$026) break L1; + } + $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0; + if (!$__cp$025) break L1; else { + $$in41 = $__cp$026$lcssa; + $__cp$0$in30 = $__cp$026$lcssa; + $__cp$02531 = $__cp$025; + } + } + HEAP32[$$lcssa58 >> 2] = $$in41$lcssa; + $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0; + if (!$__cp$02528) break; else { + $$in = $__cp$026$lcssa53; + $__cp$0$in2736 = $__cp$026$lcssa53; + $__cp$0252837 = $__cp$02528; + $__phash$0$ph$ph35 = $$lcssa56; + } + } + } + } + } while (0); + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) { + $this = $this | 0; + $__nbc = $__nbc | 0; + var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0; + $0 = $this + 4 | 0; + L1 : do if (!$__nbc) { + $51 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = 0; + if ($51) __ZdlPv($51); + HEAP32[$0 >> 2] = 0; + } else { + $3 = __Znwj($__nbc << 2) | 0; + $4 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = $3; + if ($4) __ZdlPv($4); + HEAP32[$0 >> 2] = $__nbc; + if ($__nbc) { + $__i$039 = 0; + do { + HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0; + $__i$039 = $__i$039 + 1 | 0; + } while (($__i$039 | 0) != ($__nbc | 0)); + } + $9 = $this + 8 | 0; + $10 = HEAP32[$9 >> 2] | 0; + if ($10) { + $13 = HEAP32[$10 + 4 >> 2] | 0; + $14 = $__nbc + -1 | 0; + $16 = ($14 & $__nbc | 0) == 0; + if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0; + HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9; + $__cp$0252833 = HEAP32[$10 >> 2] | 0; + if ($__cp$0252833) { + $$in = $10; + $__cp$0$in2736 = $10; + $__cp$0252837 = $__cp$0252833; + $__phash$0$ph$ph35 = $21; + while (1) { + $$in41 = $$in; + $__cp$0$in30 = $__cp$0$in2736; + $__cp$02531 = $__cp$0252837; + L21 : while (1) { + $__cp$026 = $__cp$02531; + while (1) { + $25 = HEAP32[$__cp$026 + 4 >> 2] | 0; + if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0; + if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) { + $__cp$026$lcssa = $__cp$026; + break; + } + $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0; + if (!(HEAP32[$31 >> 2] | 0)) { + $$in41$lcssa = $$in41; + $$lcssa56 = $29; + $$lcssa58 = $31; + $__cp$026$lcssa53 = $__cp$026; + break L21; + } + $34 = $__cp$026 + 8 | 0; + $__np$0 = $__cp$026; + while (1) { + $36 = HEAP32[$__np$0 >> 2] | 0; + if (!$36) { + $$lcssa = $36; + $__np$0$lcssa = $__np$0; + break; + } + if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else { + $$lcssa = $36; + $__np$0$lcssa = $__np$0; + break; + } + } + HEAP32[$$in41 >> 2] = $$lcssa; + HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2]; + HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026; + $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0; + if (!$__cp$026) break L1; + } + $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0; + if (!$__cp$025) break L1; else { + $$in41 = $__cp$026$lcssa; + $__cp$0$in30 = $__cp$026$lcssa; + $__cp$02531 = $__cp$025; + } + } + HEAP32[$$lcssa58 >> 2] = $$in41$lcssa; + $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0; + if (!$__cp$02528) break; else { + $$in = $__cp$026$lcssa53; + $__cp$0$in2736 = $__cp$026$lcssa53; + $__cp$0252837 = $__cp$02528; + $__phash$0$ph$ph35 = $$lcssa56; + } + } + } + } + } while (0); + return; +} + +function _arglCameraFrustum($cparam, $focalmin, $focalmax, $m_projection) { + $cparam = $cparam | 0; + $focalmin = +$focalmin; + $focalmax = +$focalmax; + $m_projection = $m_projection | 0; + var $0 = 0, $11 = 0, $17 = 0, $2 = 0, $23 = 0, $29 = 0, $33 = 0.0, $50 = 0.0, $63 = 0, $7 = 0.0, $75 = 0, $77 = 0.0, $84 = 0, $88 = 0.0, $90 = 0.0, $92 = 0.0, $94 = 0.0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0.0, $i$111 = 0, $i$29 = 0, $icpara = 0, $j$18 = 0, $p = 0, $q = 0, $trans = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 400 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $icpara = sp + 296 | 0; + $trans = sp + 200 | 0; + $p = sp + 128 | 0; + $q = sp; + $0 = HEAP32[$cparam >> 2] | 0; + $2 = HEAP32[$cparam + 4 >> 2] | 0; + if ((_arParamDecompMat($cparam + 8 | 0, $icpara, $trans) | 0) < 0) _arLog(3, 6024, sp + 392 | 0); else { + $7 = +($2 + -1 | 0); + $11 = $icpara + 32 | 0; + HEAPF64[$11 >> 3] = $7 * +HEAPF64[$icpara + 64 >> 3] - +HEAPF64[$11 >> 3]; + $17 = $icpara + 40 | 0; + HEAPF64[$17 >> 3] = $7 * +HEAPF64[$icpara + 72 >> 3] - +HEAPF64[$17 >> 3]; + $23 = $icpara + 48 | 0; + HEAPF64[$23 >> 3] = $7 * +HEAPF64[$icpara + 80 >> 3] - +HEAPF64[$23 >> 3]; + $29 = $icpara + 56 | 0; + HEAPF64[$29 >> 3] = $7 * +HEAPF64[$icpara + 88 >> 3] - +HEAPF64[$29 >> 3]; + $33 = +HEAPF64[$icpara + 80 >> 3]; + $i$111 = 0; + do { + HEAPF64[$p + ($i$111 * 24 | 0) >> 3] = +HEAPF64[$icpara + ($i$111 << 5) >> 3] / $33; + HEAPF64[$p + ($i$111 * 24 | 0) + 8 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 8 >> 3] / $33; + HEAPF64[$p + ($i$111 * 24 | 0) + 16 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 16 >> 3] / $33; + $i$111 = $i$111 + 1 | 0; + } while (($i$111 | 0) != 3); + $50 = +($0 + -1 | 0); + HEAPF64[$q >> 3] = +HEAPF64[$p >> 3] * 2.0 / $50; + HEAPF64[$q + 8 >> 3] = +HEAPF64[$p + 8 >> 3] * 2.0 / $50; + HEAPF64[$q + 16 >> 3] = +HEAPF64[$p + 16 >> 3] * 2.0 / $50 + -1.0; + $63 = $q + 24 | 0; + HEAP32[$63 >> 2] = 0; + HEAP32[$63 + 4 >> 2] = 0; + HEAP32[$63 + 8 >> 2] = 0; + HEAP32[$63 + 12 >> 2] = 0; + HEAPF64[$q + 40 >> 3] = +HEAPF64[$p + 32 >> 3] * 2.0 / $7; + HEAPF64[$q + 48 >> 3] = +HEAPF64[$p + 40 >> 3] * 2.0 / $7 + -1.0; + $75 = $q + 56 | 0; + $77 = $focalmax - $focalmin; + HEAP32[$75 >> 2] = 0; + HEAP32[$75 + 4 >> 2] = 0; + HEAP32[$75 + 8 >> 2] = 0; + HEAP32[$75 + 12 >> 2] = 0; + HEAP32[$75 + 16 >> 2] = 0; + HEAP32[$75 + 20 >> 2] = 0; + HEAPF64[$q + 80 >> 3] = ($focalmin + $focalmax) / $77; + HEAPF64[$q + 88 >> 3] = $focalmax * -2.0 * $focalmin / $77; + $84 = $q + 96 | 0; + HEAP32[$84 >> 2] = 0; + HEAP32[$84 + 4 >> 2] = 0; + HEAP32[$84 + 8 >> 2] = 0; + HEAP32[$84 + 12 >> 2] = 0; + HEAPF64[$q + 112 >> 3] = 1.0; + HEAPF64[$q + 120 >> 3] = 0.0; + $88 = +HEAPF64[$trans + 24 >> 3]; + $90 = +HEAPF64[$trans + 56 >> 3]; + $92 = +HEAPF64[$trans + 88 >> 3]; + $i$29 = 0; + do { + $94 = +HEAPF64[$q + ($i$29 << 5) >> 3]; + $95 = $q + ($i$29 << 5) + 8 | 0; + $96 = $q + ($i$29 << 5) + 16 | 0; + $97 = +HEAPF64[$95 >> 3]; + $98 = +HEAPF64[$96 >> 3]; + $j$18 = 0; + do { + HEAPF64[$m_projection + (($j$18 << 2) + $i$29 << 3) >> 3] = $94 * +HEAPF64[$trans + ($j$18 << 3) >> 3] + $97 * +HEAPF64[$trans + 32 + ($j$18 << 3) >> 3] + $98 * +HEAPF64[$trans + 64 + ($j$18 << 3) >> 3]; + $j$18 = $j$18 + 1 | 0; + } while (($j$18 | 0) != 3); + HEAPF64[$m_projection + ($i$29 + 12 << 3) >> 3] = +HEAPF64[$q + ($i$29 << 5) + 24 >> 3] + ($94 * $88 + +HEAPF64[$95 >> 3] * $90 + +HEAPF64[$96 >> 3] * $92); + $i$29 = $i$29 + 1 | 0; + } while (($i$29 | 0) != 4); + } + STACKTOP = sp; + return; +} + +function _arParamIdeal2Observ($dist_factor, $ix, $iy, $ox, $oy, $dist_function_version) { + $dist_factor = $dist_factor | 0; + $ix = +$ix; + $iy = +$iy; + $ox = $ox | 0; + $oy = $oy | 0; + $dist_function_version = $dist_function_version | 0; + var $$0 = 0, $10 = 0.0, $104 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0, $130 = 0.0, $14 = 0.0, $141 = 0.0, $16 = 0.0, $19 = 0.0, $22 = 0.0, $25 = 0.0, $30 = 0.0, $4 = 0.0, $55 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0.0, $60 = 0, $63 = 0.0, $71 = 0.0, $8 = 0.0, $83 = 0.0, $90 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0, $98 = 0.0, $storemerge = 0.0, $storemerge6 = 0.0, $storemerge7 = 0.0; + switch ($dist_function_version | 0) { + case 4: + { + $4 = +HEAPF64[$dist_factor + 16 >> 3]; + $6 = +HEAPF64[$dist_factor + 24 >> 3]; + $8 = +HEAPF64[$dist_factor + 32 >> 3]; + $10 = +HEAPF64[$dist_factor + 40 >> 3]; + $12 = +HEAPF64[$dist_factor + 48 >> 3]; + $14 = +HEAPF64[$dist_factor + 56 >> 3]; + $16 = +HEAPF64[$dist_factor + 64 >> 3]; + $19 = ($ix - $12) * $16 / $8; + $22 = ($iy - $14) * $16 / $10; + $25 = $19 * $19 + $22 * $22; + $30 = +HEAPF64[$dist_factor >> 3] * $25 + 1.0 + $25 * (+HEAPF64[$dist_factor + 8 >> 3] * $25); + HEAPF64[$ox >> 3] = $12 + $8 * ($6 * ($19 * ($19 * 2.0) + $25) + ($4 * 2.0 * $19 * $22 + $19 * $30)); + HEAPF64[$oy >> 3] = $14 + $10 * ($6 * 2.0 * $19 * $22 + ($4 * ($25 + $22 * ($22 * 2.0)) + $22 * $30)); + $$0 = 0; + break; + } + case 3: + { + $55 = +HEAPF64[$dist_factor >> 3]; + $58 = +HEAPF64[$dist_factor + 16 >> 3]; + $59 = ($ix - $55) * $58; + $60 = $dist_factor + 8 | 0; + $63 = $58 * ($iy - +HEAPF64[$60 >> 3]); + if ($59 == 0.0 & $63 == 0.0) { + HEAPF64[$ox >> 3] = $55; + $storemerge7 = +HEAPF64[$60 >> 3]; + } else { + $71 = $59 * $59 + $63 * $63; + $83 = 1.0 - $71 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8) - $71 * ($71 * (+HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5)); + HEAPF64[$ox >> 3] = $55 + +HEAPF64[$dist_factor + 24 >> 3] * ($59 * $83); + $storemerge7 = +HEAPF64[$60 >> 3] + $63 * $83; + } + HEAPF64[$oy >> 3] = $storemerge7; + $$0 = 0; + break; + } + case 2: + { + $90 = +HEAPF64[$dist_factor >> 3]; + $93 = +HEAPF64[$dist_factor + 16 >> 3]; + $94 = ($ix - $90) * $93; + $95 = $dist_factor + 8 | 0; + $98 = $93 * ($iy - +HEAPF64[$95 >> 3]); + if ($94 == 0.0 & $98 == 0.0) { + HEAPF64[$ox >> 3] = $90; + $storemerge6 = +HEAPF64[$95 >> 3]; + } else { + $104 = $94 * $94 + $98 * $98; + $116 = 1.0 - $104 * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8) - $104 * ($104 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5)); + HEAPF64[$ox >> 3] = $90 + $94 * $116; + $storemerge6 = +HEAPF64[$95 >> 3] + $98 * $116; + } + HEAPF64[$oy >> 3] = $storemerge6; + $$0 = 0; + break; + } + case 1: + { + $122 = +HEAPF64[$dist_factor >> 3]; + $125 = +HEAPF64[$dist_factor + 16 >> 3]; + $126 = ($ix - $122) * $125; + $127 = $dist_factor + 8 | 0; + $130 = $125 * ($iy - +HEAPF64[$127 >> 3]); + if ($126 == 0.0 & $130 == 0.0) { + HEAPF64[$ox >> 3] = $122; + $storemerge = +HEAPF64[$127 >> 3]; + } else { + $141 = 1.0 - ($126 * $126 + $130 * $130) * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8); + HEAPF64[$ox >> 3] = $122 + $126 * $141; + $storemerge = +HEAPF64[$127 >> 3] + $130 * $141; + } + HEAPF64[$oy >> 3] = $storemerge; + $$0 = 0; + break; + } + default: + $$0 = -1; + } + return $$0 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) { + $agg$result = $agg$result | 0; + $this = $this | 0; + $__nd = $__nd | 0; + var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0; + $1 = HEAP32[$__nd + 8 >> 2] | 0; + $2 = $__nd + 4 | 0; + HEAP32[$2 >> 2] = $1; + $3 = $this + 4 | 0; + $4 = HEAP32[$3 >> 2] | 0; + $5 = ($4 | 0) == 0; + L1 : do if ($5) { + $__chash$0 = 0; + label = 12; + } else { + $6 = $4 + -1 | 0; + $8 = ($6 & $4 | 0) == 0; + if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0; + $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0; + if (!$14) { + $__chash$0 = $13; + label = 12; + } else { + $$pn = $14; + while (1) { + $__ndptr$0 = HEAP32[$$pn >> 2] | 0; + if (!$__ndptr$0) { + $__chash$0 = $13; + label = 12; + break L1; + } + $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0; + if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0; + if (($22 | 0) != ($13 | 0)) { + $__chash$0 = $13; + label = 12; + break L1; + } + if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) { + $81 = 0; + $__ndptr$1 = $__ndptr$0; + break; + } else $$pn = $__ndptr$0; + } + } + } while (0); + if ((label | 0) == 12) { + $26 = $this + 12 | 0; + $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0); + $32 = +HEAPF32[$this + 16 >> 2]; + do if ($5 | $29 > +($4 >>> 0) * $32) { + if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0; + $43 = ($41 & 1 | $4 << 1) ^ 1; + $46 = ~~+Math_ceil(+($29 / $32)) >>> 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43); + $49 = HEAP32[$3 >> 2] | 0; + $50 = HEAP32[$2 >> 2] | 0; + $51 = $49 + -1 | 0; + if (!($51 & $49)) { + $__bc$0 = $49; + $__chash$1 = $51 & $50; + break; + } else { + $__bc$0 = $49; + $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0; + break; + } + } else { + $__bc$0 = $4; + $__chash$1 = $__chash$0; + } while (0); + $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0; + if (!$58) { + $60 = $this + 8 | 0; + HEAP32[$__nd >> 2] = HEAP32[$60 >> 2]; + HEAP32[$60 >> 2] = $__nd; + HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60; + $64 = HEAP32[$__nd >> 2] | 0; + if ($64) { + $67 = HEAP32[$64 + 4 >> 2] | 0; + $68 = $__bc$0 + -1 | 0; + if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0; + HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd; + } + } else { + HEAP32[$__nd >> 2] = HEAP32[$58 >> 2]; + HEAP32[$58 >> 2] = $__nd; + } + HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1; + $81 = 1; + $__ndptr$1 = $__nd; + } + HEAP32[$agg$result >> 2] = $__ndptr$1; + HEAP8[$agg$result + 4 >> 0] = $81; + return; +} + +function _scanexp($f, $pok) { + $f = $f | 0; + $pok = $pok | 0; + var $$lcssa22 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $20 = 0, $35 = 0, $36 = 0, $48 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $61 = 0, $62 = 0, $63 = 0, $78 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $c$0 = 0, $c$1$be = 0, $c$1$be$lcssa = 0, $c$112 = 0, $c$2$be = 0, $c$2$lcssa = 0, $c$27 = 0, $c$3$be = 0, $neg$0 = 0, $x$013 = 0; + $0 = $f + 4 | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = $f + 100 | 0; + if ($1 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $1 + 1; + $10 = HEAPU8[$1 >> 0] | 0; + } else $10 = ___shgetc($f) | 0; + switch ($10 | 0) { + case 43: + case 45: + { + $11 = ($10 | 0) == 45 & 1; + $12 = HEAP32[$0 >> 2] | 0; + if ($12 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $12 + 1; + $20 = HEAPU8[$12 >> 0] | 0; + } else $20 = ___shgetc($f) | 0; + if (($pok | 0) != 0 & ($20 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) { + $c$0 = $20; + $neg$0 = $11; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $c$0 = $20; + $neg$0 = $11; + } else { + $c$0 = $20; + $neg$0 = $11; + } + break; + } + default: + { + $c$0 = $10; + $neg$0 = 0; + } + } + if (($c$0 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) { + $98 = -2147483648; + $99 = 0; + } else { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $98 = -2147483648; + $99 = 0; + } else { + $c$112 = $c$0; + $x$013 = 0; + while (1) { + $35 = $c$112 + -48 + ($x$013 * 10 | 0) | 0; + $36 = HEAP32[$0 >> 2] | 0; + if ($36 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $36 + 1; + $c$1$be = HEAPU8[$36 >> 0] | 0; + } else $c$1$be = ___shgetc($f) | 0; + if (($c$1$be + -48 | 0) >>> 0 < 10 & ($35 | 0) < 214748364) { + $c$112 = $c$1$be; + $x$013 = $35; + } else { + $$lcssa22 = $35; + $c$1$be$lcssa = $c$1$be; + break; + } + } + $48 = (($$lcssa22 | 0) < 0) << 31 >> 31; + if (($c$1$be$lcssa + -48 | 0) >>> 0 < 10) { + $53 = $$lcssa22; + $54 = $48; + $c$27 = $c$1$be$lcssa; + while (1) { + $55 = ___muldi3($53 | 0, $54 | 0, 10, 0) | 0; + $56 = tempRet0; + $59 = _i64Add($c$27 | 0, (($c$27 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0; + $61 = _i64Add($59 | 0, tempRet0 | 0, $55 | 0, $56 | 0) | 0; + $62 = tempRet0; + $63 = HEAP32[$0 >> 2] | 0; + if ($63 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $63 + 1; + $c$2$be = HEAPU8[$63 >> 0] | 0; + } else $c$2$be = ___shgetc($f) | 0; + if (($c$2$be + -48 | 0) >>> 0 < 10 & (($62 | 0) < 21474836 | ($62 | 0) == 21474836 & $61 >>> 0 < 2061584302)) { + $53 = $61; + $54 = $62; + $c$27 = $c$2$be; + } else { + $92 = $61; + $93 = $62; + $c$2$lcssa = $c$2$be; + break; + } + } + } else { + $92 = $$lcssa22; + $93 = $48; + $c$2$lcssa = $c$1$be$lcssa; + } + if (($c$2$lcssa + -48 | 0) >>> 0 < 10) do { + $78 = HEAP32[$0 >> 2] | 0; + if ($78 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) { + HEAP32[$0 >> 2] = $78 + 1; + $c$3$be = HEAPU8[$78 >> 0] | 0; + } else $c$3$be = ___shgetc($f) | 0; + } while (($c$3$be + -48 | 0) >>> 0 < 10); + if (HEAP32[$2 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1; + $91 = ($neg$0 | 0) != 0; + $94 = _i64Subtract(0, 0, $92 | 0, $93 | 0) | 0; + $98 = $91 ? tempRet0 : $93; + $99 = $91 ? $94 : $92; + } + tempRet0 = $98; + return $99 | 0; +} +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) { + $agg$result = $agg$result | 0; + $this = $this | 0; + $__nd = $__nd | 0; + var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0; + $1 = HEAP32[$__nd + 8 >> 2] | 0; + $2 = $__nd + 4 | 0; + HEAP32[$2 >> 2] = $1; + $3 = $this + 4 | 0; + $4 = HEAP32[$3 >> 2] | 0; + $5 = ($4 | 0) == 0; + L1 : do if ($5) { + $__chash$0 = 0; + label = 12; + } else { + $6 = $4 + -1 | 0; + $8 = ($6 & $4 | 0) == 0; + if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0; + $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0; + if (!$14) { + $__chash$0 = $13; + label = 12; + } else { + $$pn = $14; + while (1) { + $__ndptr$0 = HEAP32[$$pn >> 2] | 0; + if (!$__ndptr$0) { + $__chash$0 = $13; + label = 12; + break L1; + } + $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0; + if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0; + if (($22 | 0) != ($13 | 0)) { + $__chash$0 = $13; + label = 12; + break L1; + } + if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) { + $81 = 0; + $__ndptr$1 = $__ndptr$0; + break; + } else $$pn = $__ndptr$0; + } + } + } while (0); + if ((label | 0) == 12) { + $26 = $this + 12 | 0; + $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0); + $32 = +HEAPF32[$this + 16 >> 2]; + do if ($5 | $29 > +($4 >>> 0) * $32) { + if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0; + $43 = ($41 & 1 | $4 << 1) ^ 1; + $46 = ~~+Math_ceil(+($29 / $32)) >>> 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43); + $49 = HEAP32[$3 >> 2] | 0; + $50 = HEAP32[$2 >> 2] | 0; + $51 = $49 + -1 | 0; + if (!($51 & $49)) { + $__bc$0 = $49; + $__chash$1 = $51 & $50; + break; + } else { + $__bc$0 = $49; + $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0; + break; + } + } else { + $__bc$0 = $4; + $__chash$1 = $__chash$0; + } while (0); + $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0; + if (!$58) { + $60 = $this + 8 | 0; + HEAP32[$__nd >> 2] = HEAP32[$60 >> 2]; + HEAP32[$60 >> 2] = $__nd; + HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60; + $64 = HEAP32[$__nd >> 2] | 0; + if ($64) { + $67 = HEAP32[$64 + 4 >> 2] | 0; + $68 = $__bc$0 + -1 | 0; + if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0; + HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd; + } + } else { + HEAP32[$__nd >> 2] = HEAP32[$58 >> 2]; + HEAP32[$58 >> 2] = $__nd; + } + HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1; + $81 = 1; + $__ndptr$1 = $__nd; + } + HEAP32[$agg$result >> 2] = $__ndptr$1; + HEAP8[$agg$result + 4 >> 0] = $81; + return; +} + +function _arGetLine($x_coord, $y_coord, $coord_num, $vertex, $paramLTf, $line, $v) { + $x_coord = $x_coord | 0; + $y_coord = $y_coord | 0; + $coord_num = $coord_num | 0; + $vertex = $vertex | 0; + $paramLTf = $paramLTf | 0; + $line = $line | 0; + $v = $v | 0; + var $$0 = 0, $0 = 0, $1 = 0, $12 = 0.0, $15 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $34 = 0, $35 = 0, $45 = 0, $47 = 0.0, $5 = 0, $50 = 0.0, $52 = 0, $63 = 0, $64 = 0, $67 = 0.0, $69 = 0, $7 = 0, $72 = 0.0, $74 = 0.0, $77 = 0, $80 = 0, $97 = 0, $i$011 = 0, $i$19 = 0, $j$010 = 0, $m0 = 0, $m1 = 0, label = 0, sp = 0, $i$011$looptemp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $m0 = sp + 4 | 0; + $m1 = sp; + $0 = _arVecAlloc(2) | 0; + $1 = _arVecAlloc(2) | 0; + $2 = _arMatrixAlloc(2, 2) | 0; + $i$011 = 0; + L1 : while (1) { + $i$011$looptemp = $i$011; + $i$011 = $i$011 + 1 | 0; + $5 = HEAP32[$vertex + ($i$011 << 2) >> 2] | 0; + $7 = HEAP32[$vertex + ($i$011$looptemp << 2) >> 2] | 0; + $12 = +($5 + 1 - $7 | 0) * .05 + .5; + $15 = ~~(+($7 | 0) + $12); + $19 = ~~(+($5 | 0) - $12) - $15 | 0; + $20 = $19 + 1 | 0; + $21 = _arMatrixAlloc($20, 2) | 0; + if (($19 | 0) > -1) { + $j$010 = 0; + do { + $23 = $j$010 + $15 | 0; + if ((_arParamObserv2IdealLTf($paramLTf, +(HEAP32[$x_coord + ($23 << 2) >> 2] | 0), +(HEAP32[$y_coord + ($23 << 2) >> 2] | 0), $m0, $m1) | 0) < 0) { + $97 = $21; + label = 10; + break L1; + } + $34 = $j$010 << 1; + $35 = HEAP32[$21 >> 2] | 0; + HEAPF64[$35 + ($34 << 3) >> 3] = +HEAPF32[$m0 >> 2]; + HEAPF64[$35 + (($34 | 1) << 3) >> 3] = +HEAPF32[$m1 >> 2]; + $j$010 = $j$010 + 1 | 0; + } while (($j$010 | 0) < ($20 | 0)); + } + if ((_arMatrixPCA($21, $2, $0, $1) | 0) < 0) { + $97 = $21; + label = 10; + break; + } + $45 = HEAP32[$2 >> 2] | 0; + $47 = +HEAPF64[$45 + 8 >> 3]; + HEAPF64[$line + ($i$011$looptemp * 24 | 0) >> 3] = $47; + $50 = -+HEAPF64[$45 >> 3]; + HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 8 >> 3] = $50; + $52 = HEAP32[$1 >> 2] | 0; + HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 16 >> 3] = -($47 * +HEAPF64[$52 >> 3] + +HEAPF64[$52 + 8 >> 3] * $50); + _arMatrixFree($21) | 0; + if (($i$011 | 0) >= 4) { + label = 7; + break; + } + } + L9 : do if ((label | 0) == 7) { + _arMatrixFree($2) | 0; + _arVecFree($1) | 0; + _arVecFree($0) | 0; + $i$19 = 0; + while (1) { + $63 = ($i$19 + 3 | 0) % 4 | 0; + $64 = $line + ($63 * 24 | 0) | 0; + $67 = +HEAPF64[$line + ($i$19 * 24 | 0) + 8 >> 3]; + $69 = $line + ($i$19 * 24 | 0) | 0; + $72 = +HEAPF64[$line + ($63 * 24 | 0) + 8 >> 3]; + $74 = +HEAPF64[$64 >> 3] * $67 - +HEAPF64[$69 >> 3] * $72; + if (+Math_abs(+$74) < .0001) { + $$0 = -1; + break L9; + } + $77 = $line + ($i$19 * 24 | 0) + 16 | 0; + $80 = $line + ($63 * 24 | 0) + 16 | 0; + HEAPF64[$v + ($i$19 << 4) >> 3] = ($72 * +HEAPF64[$77 >> 3] - $67 * +HEAPF64[$80 >> 3]) / $74; + HEAPF64[$v + ($i$19 << 4) + 8 >> 3] = (+HEAPF64[$69 >> 3] * +HEAPF64[$80 >> 3] - +HEAPF64[$64 >> 3] * +HEAPF64[$77 >> 3]) / $74; + $i$19 = $i$19 + 1 | 0; + if (($i$19 | 0) >= 4) { + $$0 = 0; + break; + } + } + } else if ((label | 0) == 10) { + _arMatrixFree($97) | 0; + _arMatrixFree($2) | 0; + _arVecFree($1) | 0; + _arVecFree($0) | 0; + $$0 = -1; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function ___stpncpy($d, $s, $n) { + $d = $d | 0; + $s = $s | 0; + $n = $n | 0; + var $$0$lcssa = 0, $$0$lcssa60 = 0, $$031 = 0, $$04$lcssa = 0, $$04$lcssa61 = 0, $$0430 = 0, $$06$lcssa = 0, $$06$lcssa62 = 0, $$0629 = 0, $$1$lcssa = 0, $$117 = 0, $$15$ph = 0, $$1511 = 0, $$17$ph = 0, $$1710 = 0, $$2$ph = 0, $$212 = 0, $$28 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $16 = 0, $20 = 0, $26 = 0, $27 = 0, $28 = 0, $31 = 0, $35 = 0, $7 = 0, $8 = 0, $wd$0$lcssa = 0, $wd$018 = 0, $ws$0$lcssa = 0, $ws$019 = 0, label = 0; + $0 = $s; + do if (!(($0 ^ $d) & 3)) { + $7 = ($n | 0) != 0; + L3 : do if ($7 & ($0 & 3 | 0) != 0) { + $$031 = $n; + $$0430 = $s; + $$0629 = $d; + while (1) { + $8 = HEAP8[$$0430 >> 0] | 0; + HEAP8[$$0629 >> 0] = $8; + if (!($8 << 24 >> 24)) { + $$0$lcssa60 = $$031; + $$04$lcssa61 = $$0430; + $$06$lcssa62 = $$0629; + break L3; + } + $10 = $$031 + -1 | 0; + $11 = $$0430 + 1 | 0; + $12 = $$0629 + 1 | 0; + $16 = ($10 | 0) != 0; + if ($16 & ($11 & 3 | 0) != 0) { + $$031 = $10; + $$0430 = $11; + $$0629 = $12; + } else { + $$0$lcssa = $10; + $$04$lcssa = $11; + $$06$lcssa = $12; + $$lcssa = $16; + label = 5; + break; + } + } + } else { + $$0$lcssa = $n; + $$04$lcssa = $s; + $$06$lcssa = $d; + $$lcssa = $7; + label = 5; + } while (0); + if ((label | 0) == 5) if ($$lcssa) { + $$0$lcssa60 = $$0$lcssa; + $$04$lcssa61 = $$04$lcssa; + $$06$lcssa62 = $$06$lcssa; + } else { + $$28 = $$06$lcssa; + $$3 = 0; + break; + } + if (!(HEAP8[$$04$lcssa61 >> 0] | 0)) { + $$28 = $$06$lcssa62; + $$3 = $$0$lcssa60; + } else { + L11 : do if ($$0$lcssa60 >>> 0 > 3) { + $$117 = $$0$lcssa60; + $wd$018 = $$06$lcssa62; + $ws$019 = $$04$lcssa61; + while (1) { + $20 = HEAP32[$ws$019 >> 2] | 0; + if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) { + $$1$lcssa = $$117; + $wd$0$lcssa = $wd$018; + $ws$0$lcssa = $ws$019; + break L11; + } + HEAP32[$wd$018 >> 2] = $20; + $26 = $$117 + -4 | 0; + $27 = $ws$019 + 4 | 0; + $28 = $wd$018 + 4 | 0; + if ($26 >>> 0 > 3) { + $$117 = $26; + $wd$018 = $28; + $ws$019 = $27; + } else { + $$1$lcssa = $26; + $wd$0$lcssa = $28; + $ws$0$lcssa = $27; + break; + } + } + } else { + $$1$lcssa = $$0$lcssa60; + $wd$0$lcssa = $$06$lcssa62; + $ws$0$lcssa = $$04$lcssa61; + } while (0); + $$15$ph = $ws$0$lcssa; + $$17$ph = $wd$0$lcssa; + $$2$ph = $$1$lcssa; + label = 11; + } + } else { + $$15$ph = $s; + $$17$ph = $d; + $$2$ph = $n; + label = 11; + } while (0); + L16 : do if ((label | 0) == 11) if (!$$2$ph) { + $$28 = $$17$ph; + $$3 = 0; + } else { + $$1511 = $$15$ph; + $$1710 = $$17$ph; + $$212 = $$2$ph; + while (1) { + $31 = HEAP8[$$1511 >> 0] | 0; + HEAP8[$$1710 >> 0] = $31; + if (!($31 << 24 >> 24)) { + $$28 = $$1710; + $$3 = $$212; + break L16; + } + $$212 = $$212 + -1 | 0; + $35 = $$1710 + 1 | 0; + if (!$$212) { + $$28 = $35; + $$3 = 0; + break; + } else { + $$1511 = $$1511 + 1 | 0; + $$1710 = $35; + } + } + } while (0); + _memset($$28 | 0, 0, $$3 | 0) | 0; + return $$28 | 0; +} + +function ___stdio_write($f, $buf, $len) { + $f = $f | 0; + $buf = $buf | 0; + $len = $len | 0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $16 = 0, $21 = 0, $26 = 0, $3 = 0, $35 = 0, $37 = 0, $39 = 0, $50 = 0, $6 = 0, $cnt$0 = 0, $cnt$1 = 0, $iov$0 = 0, $iov$0$lcssa11 = 0, $iov$1 = 0, $iovcnt$0 = 0, $iovcnt$0$lcssa12 = 0, $iovcnt$1 = 0, $iovs = 0, $rem$0 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer = sp; + $iovs = sp + 32 | 0; + $0 = $f + 28 | 0; + $1 = HEAP32[$0 >> 2] | 0; + HEAP32[$iovs >> 2] = $1; + $3 = $f + 20 | 0; + $6 = (HEAP32[$3 >> 2] | 0) - $1 | 0; + HEAP32[$iovs + 4 >> 2] = $6; + HEAP32[$iovs + 8 >> 2] = $buf; + HEAP32[$iovs + 12 >> 2] = $len; + $10 = $f + 60 | 0; + $11 = $f + 44 | 0; + $iov$0 = $iovs; + $iovcnt$0 = 2; + $rem$0 = $6 + $len | 0; + while (1) { + if (!(HEAP32[597] | 0)) { + HEAP32[$vararg_buffer3 >> 2] = HEAP32[$10 >> 2]; + HEAP32[$vararg_buffer3 + 4 >> 2] = $iov$0; + HEAP32[$vararg_buffer3 + 8 >> 2] = $iovcnt$0; + $cnt$0 = ___syscall_ret(___syscall146(146, $vararg_buffer3 | 0) | 0) | 0; + } else { + _pthread_cleanup_push(14, $f | 0); + HEAP32[$vararg_buffer >> 2] = HEAP32[$10 >> 2]; + HEAP32[$vararg_buffer + 4 >> 2] = $iov$0; + HEAP32[$vararg_buffer + 8 >> 2] = $iovcnt$0; + $16 = ___syscall_ret(___syscall146(146, $vararg_buffer | 0) | 0) | 0; + _pthread_cleanup_pop(0); + $cnt$0 = $16; + } + if (($rem$0 | 0) == ($cnt$0 | 0)) { + label = 6; + break; + } + if (($cnt$0 | 0) < 0) { + $iov$0$lcssa11 = $iov$0; + $iovcnt$0$lcssa12 = $iovcnt$0; + label = 8; + break; + } + $35 = $rem$0 - $cnt$0 | 0; + $37 = HEAP32[$iov$0 + 4 >> 2] | 0; + if ($cnt$0 >>> 0 > $37 >>> 0) { + $39 = HEAP32[$11 >> 2] | 0; + HEAP32[$0 >> 2] = $39; + HEAP32[$3 >> 2] = $39; + $50 = HEAP32[$iov$0 + 12 >> 2] | 0; + $cnt$1 = $cnt$0 - $37 | 0; + $iov$1 = $iov$0 + 8 | 0; + $iovcnt$1 = $iovcnt$0 + -1 | 0; + } else if (($iovcnt$0 | 0) == 2) { + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + $cnt$0; + $50 = $37; + $cnt$1 = $cnt$0; + $iov$1 = $iov$0; + $iovcnt$1 = 2; + } else { + $50 = $37; + $cnt$1 = $cnt$0; + $iov$1 = $iov$0; + $iovcnt$1 = $iovcnt$0; + } + HEAP32[$iov$1 >> 2] = (HEAP32[$iov$1 >> 2] | 0) + $cnt$1; + HEAP32[$iov$1 + 4 >> 2] = $50 - $cnt$1; + $iov$0 = $iov$1; + $iovcnt$0 = $iovcnt$1; + $rem$0 = $35; + } + if ((label | 0) == 6) { + $21 = HEAP32[$11 >> 2] | 0; + HEAP32[$f + 16 >> 2] = $21 + (HEAP32[$f + 48 >> 2] | 0); + $26 = $21; + HEAP32[$0 >> 2] = $26; + HEAP32[$3 >> 2] = $26; + $$0 = $len; + } else if ((label | 0) == 8) { + HEAP32[$f + 16 >> 2] = 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$3 >> 2] = 0; + HEAP32[$f >> 2] = HEAP32[$f >> 2] | 32; + if (($iovcnt$0$lcssa12 | 0) == 2) $$0 = 0; else $$0 = $len - (HEAP32[$iov$0$lcssa11 + 4 >> 2] | 0) | 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _pop_arg($arg, $type, $ap) { + $arg = $arg | 0; + $type = $type | 0; + $ap = $ap | 0; + var $105 = 0, $106 = 0.0, $112 = 0, $113 = 0.0, $13 = 0, $14 = 0, $17 = 0, $26 = 0, $27 = 0, $28 = 0, $37 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $53 = 0, $54 = 0, $56 = 0, $59 = 0, $6 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $79 = 0, $80 = 0, $82 = 0, $85 = 0, $94 = 0, $95 = 0, $96 = 0; + L1 : do if ($type >>> 0 <= 20) do switch ($type | 0) { + case 9: + { + $6 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $7 = HEAP32[$6 >> 2] | 0; + HEAP32[$ap >> 2] = $6 + 4; + HEAP32[$arg >> 2] = $7; + break L1; + break; + } + case 10: + { + $13 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $14 = HEAP32[$13 >> 2] | 0; + HEAP32[$ap >> 2] = $13 + 4; + $17 = $arg; + HEAP32[$17 >> 2] = $14; + HEAP32[$17 + 4 >> 2] = (($14 | 0) < 0) << 31 >> 31; + break L1; + break; + } + case 11: + { + $26 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $27 = HEAP32[$26 >> 2] | 0; + HEAP32[$ap >> 2] = $26 + 4; + $28 = $arg; + HEAP32[$28 >> 2] = $27; + HEAP32[$28 + 4 >> 2] = 0; + break L1; + break; + } + case 12: + { + $37 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1); + $38 = $37; + $40 = HEAP32[$38 >> 2] | 0; + $43 = HEAP32[$38 + 4 >> 2] | 0; + HEAP32[$ap >> 2] = $37 + 8; + $44 = $arg; + HEAP32[$44 >> 2] = $40; + HEAP32[$44 + 4 >> 2] = $43; + break L1; + break; + } + case 13: + { + $53 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $54 = HEAP32[$53 >> 2] | 0; + HEAP32[$ap >> 2] = $53 + 4; + $56 = ($54 & 65535) << 16 >> 16; + $59 = $arg; + HEAP32[$59 >> 2] = $56; + HEAP32[$59 + 4 >> 2] = (($56 | 0) < 0) << 31 >> 31; + break L1; + break; + } + case 14: + { + $68 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $69 = HEAP32[$68 >> 2] | 0; + HEAP32[$ap >> 2] = $68 + 4; + $70 = $arg; + HEAP32[$70 >> 2] = $69 & 65535; + HEAP32[$70 + 4 >> 2] = 0; + break L1; + break; + } + case 15: + { + $79 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $80 = HEAP32[$79 >> 2] | 0; + HEAP32[$ap >> 2] = $79 + 4; + $82 = ($80 & 255) << 24 >> 24; + $85 = $arg; + HEAP32[$85 >> 2] = $82; + HEAP32[$85 + 4 >> 2] = (($82 | 0) < 0) << 31 >> 31; + break L1; + break; + } + case 16: + { + $94 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1); + $95 = HEAP32[$94 >> 2] | 0; + HEAP32[$ap >> 2] = $94 + 4; + $96 = $arg; + HEAP32[$96 >> 2] = $95 & 255; + HEAP32[$96 + 4 >> 2] = 0; + break L1; + break; + } + case 17: + { + $105 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1); + $106 = +HEAPF64[$105 >> 3]; + HEAP32[$ap >> 2] = $105 + 8; + HEAPF64[$arg >> 3] = $106; + break L1; + break; + } + case 18: + { + $112 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1); + $113 = +HEAPF64[$112 >> 3]; + HEAP32[$ap >> 2] = $112 + 8; + HEAPF64[$arg >> 3] = $113; + break L1; + break; + } + default: + break L1; + } while (0); while (0); + return; +} + +function _arPattCreateHandle2($pattSize, $patternCountMax) { + $pattSize = $pattSize | 0; + $patternCountMax = $patternCountMax | 0; + var $$0 = 0, $10 = 0, $11 = 0, $14 = 0, $15 = 0, $17 = 0, $18 = 0, $2 = 0, $21 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $32 = 0, $35 = 0, $7 = 0, $i$04 = 0, $j$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer13 = sp + 56 | 0; + $vararg_buffer11 = sp + 48 | 0; + $vararg_buffer9 = sp + 40 | 0; + $vararg_buffer7 = sp + 32 | 0; + $vararg_buffer5 = sp + 24 | 0; + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + L1 : do if (($pattSize + -16 | 0) >>> 0 > 48 | ($patternCountMax | 0) < 1) $$0 = 0; else { + $2 = _malloc(32) | 0; + if (!$2) { + _arLog(3, 5471, $vararg_buffer); + _exit(1); + } + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = $patternCountMax; + HEAP32[$2 + 28 >> 2] = $pattSize; + $7 = _malloc($patternCountMax << 2) | 0; + HEAP32[$2 + 8 >> 2] = $7; + if (!$7) { + _arLog(3, 5471, $vararg_buffer1); + _exit(1); + } + $10 = $patternCountMax << 4; + $11 = _malloc($10) | 0; + HEAP32[$2 + 12 >> 2] = $11; + if (!$11) { + _arLog(3, 5471, $vararg_buffer3); + _exit(1); + } + $14 = _malloc($10) | 0; + $15 = $2 + 20 | 0; + HEAP32[$15 >> 2] = $14; + if (!$14) { + _arLog(3, 5471, $vararg_buffer5); + _exit(1); + } + $17 = $patternCountMax << 5; + $18 = _malloc($17) | 0; + HEAP32[$2 + 16 >> 2] = $18; + if (!$18) { + _arLog(3, 5471, $vararg_buffer7); + _exit(1); + } + $21 = _malloc($17) | 0; + HEAP32[$2 + 24 >> 2] = $21; + if (!$21) { + _arLog(3, 5471, $vararg_buffer9); + _exit(1); + } + $24 = Math_imul($pattSize, $pattSize) | 0; + $25 = $24 * 12 | 0; + $26 = $24 << 2; + if (($patternCountMax | 0) > 0) { + $i$04 = 0; + L21 : while (1) { + HEAP32[$7 + ($i$04 << 2) >> 2] = 0; + $29 = $i$04 << 2; + $j$0 = 0; + while (1) { + if (($j$0 | 0) >= 4) break; + $31 = _malloc($25) | 0; + $32 = $j$0 + $29 | 0; + HEAP32[$11 + ($32 << 2) >> 2] = $31; + if (!$31) { + label = 18; + break L21; + } + $35 = _malloc($26) | 0; + HEAP32[(HEAP32[$15 >> 2] | 0) + ($32 << 2) >> 2] = $35; + if (!$35) { + label = 20; + break L21; + } else $j$0 = $j$0 + 1 | 0; + } + $i$04 = $i$04 + 1 | 0; + if (($i$04 | 0) >= ($patternCountMax | 0)) { + $$0 = $2; + break L1; + } + } + if ((label | 0) == 18) { + _arLog(3, 5471, $vararg_buffer11); + _exit(1); + } else if ((label | 0) == 20) { + _arLog(3, 5471, $vararg_buffer13); + _exit(1); + } + } else $$0 = $2; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arParamChangeSize($source, $xsize, $ysize, $newparam) { + $source = $source | 0; + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $newparam = $newparam | 0; + var $$0 = 0, $23 = 0, $3 = 0.0, $8 = 0.0, $i$01 = 0, label = 0; + $3 = +($xsize | 0) / +(HEAP32[$source >> 2] | 0); + $8 = +($ysize | 0) / +(HEAP32[$source + 4 >> 2] | 0); + HEAP32[$newparam >> 2] = $xsize; + HEAP32[$newparam + 4 >> 2] = $ysize; + $i$01 = 0; + do { + HEAPF64[$newparam + 8 + ($i$01 << 3) >> 3] = $3 * +HEAPF64[$source + 8 + ($i$01 << 3) >> 3]; + HEAPF64[$newparam + 40 + ($i$01 << 3) >> 3] = $8 * +HEAPF64[$source + 40 + ($i$01 << 3) >> 3]; + HEAPF64[$newparam + 72 + ($i$01 << 3) >> 3] = +HEAPF64[$source + 72 + ($i$01 << 3) >> 3]; + $i$01 = $i$01 + 1 | 0; + } while (($i$01 | 0) != 4); + $23 = HEAP32[$source + 176 >> 2] | 0; + switch ($23 | 0) { + case 4: + { + HEAPF64[$newparam + 104 >> 3] = +HEAPF64[$source + 104 >> 3]; + HEAPF64[$newparam + 112 >> 3] = +HEAPF64[$source + 112 >> 3]; + HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3]; + HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3]; + HEAPF64[$newparam + 136 >> 3] = $3 * +HEAPF64[$source + 136 >> 3]; + HEAPF64[$newparam + 144 >> 3] = $8 * +HEAPF64[$source + 144 >> 3]; + HEAPF64[$newparam + 152 >> 3] = $3 * +HEAPF64[$source + 152 >> 3]; + HEAPF64[$newparam + 160 >> 3] = $8 * +HEAPF64[$source + 160 >> 3]; + HEAPF64[$newparam + 168 >> 3] = +HEAPF64[$source + 168 >> 3]; + label = 8; + break; + } + case 3: + { + HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3]; + HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3]; + HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3]; + HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3]; + HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($3 * $8); + HEAPF64[$newparam + 144 >> 3] = +HEAPF64[$source + 144 >> 3] / ($8 * ($3 * $3 * $8)); + label = 8; + break; + } + case 2: + { + HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3]; + HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3]; + HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3]; + HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8); + HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($8 * ($3 * $3 * $8)); + label = 8; + break; + } + case 1: + { + HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3]; + HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3]; + HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3]; + HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8); + label = 8; + break; + } + default: + $$0 = -1; + } + if ((label | 0) == 8) { + HEAP32[$newparam + 176 >> 2] = $23; + $$0 = 0; + } + return $$0 | 0; +} + +function _icpUpdateMat($matXw2Xc, $dS) { + $matXw2Xc = $matXw2Xc | 0; + $dS = $dS | 0; + var $$sink$i = 0.0, $$sink1$i = 0.0, $0 = 0.0, $11 = 0.0, $16 = 0.0, $18 = 0.0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $25 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0.0, $35 = 0.0, $36 = 0.0, $47 = 0.0, $48 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $7 = 0.0, $82 = 0, $9 = 0.0, $i$08 = 0, $j$09 = 0, $j$17 = 0, $mat = 0, $mat2 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 192 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $mat = sp + 96 | 0; + $mat2 = sp; + $0 = +HEAPF64[$dS >> 3]; + $3 = +HEAPF64[$dS + 8 >> 3]; + $7 = +HEAPF64[$dS + 16 >> 3]; + $9 = $0 * $0 + $3 * $3 + $7 * $7; + if ($9 == 0.0) { + $$sink$i = 0.0; + $$sink1$i = 0.0; + $25 = 1.0; + $29 = 0.0; + } else { + $11 = +Math_sqrt(+$9); + $$sink$i = $11; + $$sink1$i = $7 / $11; + $25 = $0 / $11; + $29 = $3 / $11; + } + $16 = +HEAPF64[$dS + 24 >> 3]; + $18 = +HEAPF64[$dS + 32 >> 3]; + $20 = +HEAPF64[$dS + 40 >> 3]; + $21 = +Math_cos(+$$sink$i); + $22 = 1.0 - $21; + $23 = +Math_sin(+$$sink$i); + HEAPF64[$mat >> 3] = $21 + $25 * $25 * $22; + $30 = $29 * $25 * $22; + $31 = $$sink1$i * $23; + HEAPF64[$mat + 8 >> 3] = $30 - $31; + $35 = $25 * $$sink1$i * $22; + $36 = $29 * $23; + HEAPF64[$mat + 16 >> 3] = $35 + $36; + HEAPF64[$mat + 24 >> 3] = $16; + HEAPF64[$mat + 32 >> 3] = $30 + $31; + HEAPF64[$mat + 40 >> 3] = $21 + $29 * $29 * $22; + $47 = $29 * $$sink1$i * $22; + $48 = $25 * $23; + HEAPF64[$mat + 48 >> 3] = $47 - $48; + HEAPF64[$mat + 56 >> 3] = $18; + HEAPF64[$mat + 64 >> 3] = $35 - $36; + HEAPF64[$mat + 72 >> 3] = $47 + $48; + HEAPF64[$mat + 80 >> 3] = $21 + $$sink1$i * $$sink1$i * $22; + HEAPF64[$mat + 88 >> 3] = $20; + $j$09 = 0; + do { + $64 = +HEAPF64[$matXw2Xc + ($j$09 << 5) >> 3]; + $65 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 8 >> 3]; + $66 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 16 >> 3]; + $i$08 = 0; + do { + HEAPF64[$mat2 + ($j$09 << 5) + ($i$08 << 3) >> 3] = $64 * +HEAPF64[$mat + ($i$08 << 3) >> 3] + $65 * +HEAPF64[$mat + 32 + ($i$08 << 3) >> 3] + $66 * +HEAPF64[$mat + 64 + ($i$08 << 3) >> 3]; + $i$08 = $i$08 + 1 | 0; + } while (($i$08 | 0) != 4); + $82 = $mat2 + ($j$09 << 5) + 24 | 0; + HEAPF64[$82 >> 3] = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 24 >> 3] + +HEAPF64[$82 >> 3]; + $j$09 = $j$09 + 1 | 0; + } while (($j$09 | 0) != 3); + $j$17 = 0; + do { + HEAPF64[$matXw2Xc + ($j$17 << 5) >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) >> 3]; + HEAPF64[$matXw2Xc + ($j$17 << 5) + 8 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 8 >> 3]; + HEAPF64[$matXw2Xc + ($j$17 << 5) + 16 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 16 >> 3]; + HEAPF64[$matXw2Xc + ($j$17 << 5) + 24 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 24 >> 3]; + $j$17 = $j$17 + 1 | 0; + } while (($j$17 | 0) != 3); + STACKTOP = sp; + return 0; +} + +function _setCamera($id, $cameraID) { + $id = $id | 0; + $cameraID = $cameraID | 0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $14 = 0, $15 = 0, $20 = 0, $21 = 0, $23 = 0, $24 = 0, $26 = 0, $4 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer2 = 0, $vararg_buffer4 = 0, $vararg_buffer6 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer6 = sp + 24 | 0; + $vararg_buffer4 = sp + 16 | 0; + $vararg_buffer2 = sp + 8 | 0; + $vararg_buffer = sp; + $0 = sp + 32 | 0; + $1 = sp + 28 | 0; + HEAP32[$0 >> 2] = $id; + HEAP32[$1 >> 2] = $cameraID; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2064, $1) | 0)) $$0 = -1; else { + $7 = $4 + 8 | 0; + _memcpy($7 | 0, __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $1) | 0, 184) | 0; + $9 = HEAP32[$7 >> 2] | 0; + $10 = $4 + 204 | 0; + $14 = HEAP32[$4 + 12 >> 2] | 0; + $15 = $4 + 208 | 0; + if (!(($9 | 0) == (HEAP32[$10 >> 2] | 0) ? ($14 | 0) == (HEAP32[$15 >> 2] | 0) : 0)) { + HEAP32[$vararg_buffer >> 2] = $9; + HEAP32[$vararg_buffer + 4 >> 2] = $14; + _arLog(2, 6151, $vararg_buffer); + _arParamChangeSize($7, HEAP32[$10 >> 2] | 0, HEAP32[$15 >> 2] | 0, $7) | 0; + } + _deleteHandle($4); + $20 = _arParamLTCreate($7, 15) | 0; + $21 = $4 + 192 | 0; + HEAP32[$21 >> 2] = $20; + if (!$20) { + _arLog(3, 6198, $vararg_buffer2); + $$0 = -1; + break; + } + $23 = _arCreateHandle($20) | 0; + $24 = $4 + 212 | 0; + HEAP32[$24 >> 2] = $23; + if (!$23) { + _arLog(3, 6236, $vararg_buffer4); + $$0 = -1; + break; + } + _arSetPixelFormat($23, 2) | 0; + $26 = _ar3DCreateHandle($7) | 0; + HEAP32[$4 + 224 >> 2] = $26; + if (!$26) { + _arLog(3, 6273, $vararg_buffer6); + $$0 = -1; + break; + } else { + _arPattAttach(HEAP32[$24 >> 2] | 0, HEAP32[$4 + 216 >> 2] | 0) | 0; + _arglCameraFrustum(HEAP32[$21 >> 2] | 0, +HEAPF64[$4 + 232 >> 3], +HEAPF64[$4 + 240 >> 3], $4 + 264 | 0); + $$0 = 0; + break; + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _memchr($src, $c, $n) { + $src = $src | 0; + $c = $c | 0; + $n = $n | 0; + var $$0$lcssa = 0, $$0$lcssa44 = 0, $$019 = 0, $$1$lcssa = 0, $$110 = 0, $$110$lcssa = 0, $$24 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $17 = 0, $20 = 0, $26 = 0, $27 = 0, $32 = 0, $4 = 0, $5 = 0, $8 = 0, $9 = 0, $s$0$lcssa = 0, $s$0$lcssa43 = 0, $s$020 = 0, $s$15 = 0, $s$2 = 0, $w$0$lcssa = 0, $w$011 = 0, $w$011$lcssa = 0, label = 0; + $0 = $c & 255; + $4 = ($n | 0) != 0; + L1 : do if ($4 & ($src & 3 | 0) != 0) { + $5 = $c & 255; + $$019 = $n; + $s$020 = $src; + while (1) { + if ((HEAP8[$s$020 >> 0] | 0) == $5 << 24 >> 24) { + $$0$lcssa44 = $$019; + $s$0$lcssa43 = $s$020; + label = 6; + break L1; + } + $8 = $s$020 + 1 | 0; + $9 = $$019 + -1 | 0; + $13 = ($9 | 0) != 0; + if ($13 & ($8 & 3 | 0) != 0) { + $$019 = $9; + $s$020 = $8; + } else { + $$0$lcssa = $9; + $$lcssa = $13; + $s$0$lcssa = $8; + label = 5; + break; + } + } + } else { + $$0$lcssa = $n; + $$lcssa = $4; + $s$0$lcssa = $src; + label = 5; + } while (0); + if ((label | 0) == 5) if ($$lcssa) { + $$0$lcssa44 = $$0$lcssa; + $s$0$lcssa43 = $s$0$lcssa; + label = 6; + } else { + $$3 = 0; + $s$2 = $s$0$lcssa; + } + L8 : do if ((label | 0) == 6) { + $15 = $c & 255; + if ((HEAP8[$s$0$lcssa43 >> 0] | 0) == $15 << 24 >> 24) { + $$3 = $$0$lcssa44; + $s$2 = $s$0$lcssa43; + } else { + $17 = Math_imul($0, 16843009) | 0; + L11 : do if ($$0$lcssa44 >>> 0 > 3) { + $$110 = $$0$lcssa44; + $w$011 = $s$0$lcssa43; + while (1) { + $20 = HEAP32[$w$011 >> 2] ^ $17; + if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) { + $$110$lcssa = $$110; + $w$011$lcssa = $w$011; + break; + } + $26 = $w$011 + 4 | 0; + $27 = $$110 + -4 | 0; + if ($27 >>> 0 > 3) { + $$110 = $27; + $w$011 = $26; + } else { + $$1$lcssa = $27; + $w$0$lcssa = $26; + label = 11; + break L11; + } + } + $$24 = $$110$lcssa; + $s$15 = $w$011$lcssa; + } else { + $$1$lcssa = $$0$lcssa44; + $w$0$lcssa = $s$0$lcssa43; + label = 11; + } while (0); + if ((label | 0) == 11) if (!$$1$lcssa) { + $$3 = 0; + $s$2 = $w$0$lcssa; + break; + } else { + $$24 = $$1$lcssa; + $s$15 = $w$0$lcssa; + } + while (1) { + if ((HEAP8[$s$15 >> 0] | 0) == $15 << 24 >> 24) { + $$3 = $$24; + $s$2 = $s$15; + break L8; + } + $32 = $s$15 + 1 | 0; + $$24 = $$24 + -1 | 0; + if (!$$24) { + $$3 = 0; + $s$2 = $32; + break; + } else $s$15 = $32; + } + } + } while (0); + return (($$3 | 0) != 0 ? $s$2 : 0) | 0; +} + +function _getMarkerInfo($id, $markerIndex) { + $id = $id | 0; + $markerIndex = $markerIndex | 0; + var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) { + $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0; + _emscripten_asm_const_33(1, HEAP32[$_ZL11gMarkerInfo$ >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 4 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 8 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 12 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 16 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 20 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 24 >> 2] | 0, +(+HEAPF64[$_ZL11gMarkerInfo$ + 32 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 40 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 48 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 72 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 80 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 88 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 96 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 104 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 112 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 120 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 128 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 136 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 144 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 152 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 160 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3]), HEAP32[$_ZL11gMarkerInfo$ + 240 >> 2] | 0) | 0; + $$0 = 0; + break; + } else { + $$0 = HEAP32[523] | 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$03 = 0, $0 = 0, $1 = 0, $13 = 0, $14 = 0, $2 = 0, $21 = 0, $23 = 0, $24 = 0, $27 = 0, $3 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 40 | 0; + $1 = sp + 24 | 0; + $2 = sp + 12 | 0; + $3 = sp; + L1 : do if (($last - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 68) { + switch (HEAP8[$first + 1 >> 0] | 0) { + case 84: + case 116: + break; + default: + { + $$03 = $first; + break L1; + } + } + $13 = $first + 2 | 0; + $14 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($13, $last, $db) | 0; + if (($14 | 0) == ($13 | 0) | ($14 | 0) == ($last | 0)) $$03 = $first; else if ((HEAP8[$14 >> 0] | 0) == 69) { + $21 = HEAP32[$db + 4 >> 2] | 0; + if ((HEAP32[$db >> 2] | 0) == ($21 | 0)) $$03 = $first; else { + $23 = $21 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $23); + $24 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12803) | 0; + HEAP32[$2 >> 2] = HEAP32[$24 >> 2]; + HEAP32[$2 + 4 >> 2] = HEAP32[$24 + 4 >> 2]; + HEAP32[$2 + 8 >> 2] = HEAP32[$24 + 8 >> 2]; + HEAP32[$24 >> 2] = 0; + HEAP32[$24 + 4 >> 2] = 0; + HEAP32[$24 + 8 >> 2] = 0; + $27 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0; + HEAP32[$1 >> 2] = HEAP32[$27 >> 2]; + HEAP32[$1 + 4 >> 2] = HEAP32[$27 + 4 >> 2]; + HEAP32[$1 + 8 >> 2] = HEAP32[$27 + 8 >> 2]; + HEAP32[$27 >> 2] = 0; + HEAP32[$27 + 4 >> 2] = 0; + HEAP32[$27 + 8 >> 2] = 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($23, $0); + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3); + $$03 = $14 + 1 | 0; + } + } else $$03 = $first; + } else $$03 = $first; else $$03 = $first; while (0); + STACKTOP = sp; + return $$03 | 0; +} + +function ___fdopen($fd, $mode) { + $fd = $fd | 0; + $mode = $mode | 0; + var $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $19 = 0, $24 = 0, $26 = 0, $3 = 0, $37 = 0, $4 = 0, $tio = 0, $vararg_buffer = 0, $vararg_buffer12 = 0, $vararg_buffer3 = 0, $vararg_buffer7 = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 112 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer12 = sp + 40 | 0; + $vararg_buffer7 = sp + 24 | 0; + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer = sp; + $tio = sp + 52 | 0; + $0 = HEAP8[$mode >> 0] | 0; + if (!(_memchr(16759, $0 << 24 >> 24, 4) | 0)) { + $3 = ___errno_location() | 0; + HEAP32[$3 >> 2] = 22; + $$0 = 0; + } else { + $4 = _malloc(1144) | 0; + if (!$4) $$0 = 0; else { + dest = $4; + stop = dest + 112 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + if (!(_strchr($mode, 43) | 0)) HEAP32[$4 >> 2] = $0 << 24 >> 24 == 114 ? 8 : 4; + if (!(_strchr($mode, 101) | 0)) $13 = $0; else { + HEAP32[$vararg_buffer >> 2] = $fd; + HEAP32[$vararg_buffer + 4 >> 2] = 2; + HEAP32[$vararg_buffer + 8 >> 2] = 1; + ___syscall221(221, $vararg_buffer | 0) | 0; + $13 = HEAP8[$mode >> 0] | 0; + } + if ($13 << 24 >> 24 == 97) { + HEAP32[$vararg_buffer3 >> 2] = $fd; + HEAP32[$vararg_buffer3 + 4 >> 2] = 3; + $14 = ___syscall221(221, $vararg_buffer3 | 0) | 0; + if (!($14 & 1024)) { + HEAP32[$vararg_buffer7 >> 2] = $fd; + HEAP32[$vararg_buffer7 + 4 >> 2] = 4; + HEAP32[$vararg_buffer7 + 8 >> 2] = $14 | 1024; + ___syscall221(221, $vararg_buffer7 | 0) | 0; + } + $19 = HEAP32[$4 >> 2] | 128; + HEAP32[$4 >> 2] = $19; + $26 = $19; + } else $26 = HEAP32[$4 >> 2] | 0; + HEAP32[$4 + 60 >> 2] = $fd; + HEAP32[$4 + 44 >> 2] = $4 + 120; + HEAP32[$4 + 48 >> 2] = 1024; + $24 = $4 + 75 | 0; + HEAP8[$24 >> 0] = -1; + if (!($26 & 8)) { + HEAP32[$vararg_buffer12 >> 2] = $fd; + HEAP32[$vararg_buffer12 + 4 >> 2] = 21505; + HEAP32[$vararg_buffer12 + 8 >> 2] = $tio; + if (!(___syscall54(54, $vararg_buffer12 | 0) | 0)) HEAP8[$24 >> 0] = 10; + } + HEAP32[$4 + 32 >> 2] = 14; + HEAP32[$4 + 36 >> 2] = 4; + HEAP32[$4 + 40 >> 2] = 5; + HEAP32[$4 + 12 >> 2] = 2; + if (!(HEAP32[598] | 0)) HEAP32[$4 + 76 >> 2] = -1; + ___lock(2416); + $37 = HEAP32[603] | 0; + HEAP32[$4 + 56 >> 2] = $37; + if ($37) HEAP32[$37 + 52 >> 2] = $4; + HEAP32[603] = $4; + ___unlock(2416); + $$0 = $4; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _addMultiMarker($id, $patt_name) { + $id = $id | 0; + $patt_name = $patt_name | 0; + var $$0 = 0, $0 = 0, $11 = 0, $12 = 0, $13 = 0, $15 = 0, $16 = 0, $21 = 0, $22 = 0, $23 = 0, $28 = 0, $29 = 0, $3 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $marker = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 16 | 0; + $vararg_buffer = sp + 8 | 0; + $0 = sp + 20 | 0; + $marker = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if (!(HEAP8[$patt_name >> 0] & 1)) $15 = $patt_name + 1 | 0; else $15 = HEAP32[$patt_name + 8 >> 2] | 0; + $11 = HEAP32[$3 + 212 >> 2] | 0; + $12 = $3 + 216 | 0; + $13 = $3 + 220 | 0; + $16 = _arMultiReadConfigFile($15, HEAP32[$12 >> 2] | 0) | 0; + HEAP32[$13 >> 2] = $16; + if (!$16) { + _arLog(3, 6401, $vararg_buffer); + _arPattDeleteHandle(HEAP32[$12 >> 2] | 0) | 0; + _arLog(3, 6428, $vararg_buffer1); + $$0 = -1; + break; + } + switch (HEAP32[$16 + 108 >> 2] | 0) { + case 0: + { + _arSetPatternDetectionMode($11, 0) | 0; + break; + } + case 1: + { + _arSetPatternDetectionMode($11, 2) | 0; + break; + } + default: + _arSetPatternDetectionMode($11, 3) | 0; + } + $21 = $3 + 248 | 0; + $22 = $3 + 252 | 0; + $23 = HEAP32[$22 >> 2] | 0; + $28 = $23 - (HEAP32[$21 >> 2] | 0) >> 3; + $29 = $marker; + HEAP32[$29 >> 2] = 0; + HEAP32[$29 + 4 >> 2] = 0; + HEAP32[$marker >> 2] = $28; + HEAP32[$marker + 4 >> 2] = HEAP32[$13 >> 2]; + if (($23 | 0) == (HEAP32[$3 + 256 >> 2] | 0)) { + __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($21, $marker); + $$0 = $28; + break; + } else { + $38 = $marker; + $40 = HEAP32[$38 >> 2] | 0; + $43 = HEAP32[$38 + 4 >> 2] | 0; + $44 = $23; + HEAP32[$44 >> 2] = $40; + HEAP32[$44 + 4 >> 2] = $43; + HEAP32[$22 >> 2] = (HEAP32[$22 >> 2] | 0) + 8; + $$0 = $40; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _get_cpara($world, $vertex, $para) { + $world = $world | 0; + $vertex = $vertex | 0; + $para = $para | 0; + var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $3 = 0, $4 = 0, $49 = 0, $5 = 0, $62 = 0, $68 = 0, $7 = 0, $76 = 0, $86 = 0, $9 = 0, $i$03 = 0; + $0 = _arMatrixAlloc(8, 8) | 0; + $1 = _arMatrixAlloc(8, 1) | 0; + $2 = _arMatrixAlloc(8, 1) | 0; + $3 = HEAP32[$0 >> 2] | 0; + $4 = HEAP32[$1 >> 2] | 0; + $i$03 = 0; + do { + $5 = $world + ($i$03 << 4) | 0; + $7 = $i$03 << 4; + HEAPF64[$3 + ($7 << 3) >> 3] = +HEAPF64[$5 >> 3]; + $9 = $world + ($i$03 << 4) + 8 | 0; + HEAPF64[$3 + (($7 | 1) << 3) >> 3] = +HEAPF64[$9 >> 3]; + HEAPF64[$3 + (($7 | 2) << 3) >> 3] = 1.0; + HEAPF64[$3 + (($7 | 3) << 3) >> 3] = 0.0; + HEAPF64[$3 + (($7 | 4) << 3) >> 3] = 0.0; + HEAPF64[$3 + (($7 | 5) << 3) >> 3] = 0.0; + $22 = $vertex + ($i$03 << 4) | 0; + HEAPF64[$3 + (($7 | 6) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$22 >> 3]); + HEAPF64[$3 + (($7 | 7) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$22 >> 3]); + HEAPF64[$3 + (($7 | 8) << 3) >> 3] = 0.0; + HEAPF64[$3 + (($7 | 9) << 3) >> 3] = 0.0; + HEAPF64[$3 + (($7 | 10) << 3) >> 3] = 0.0; + HEAPF64[$3 + (($7 | 11) << 3) >> 3] = +HEAPF64[$5 >> 3]; + HEAPF64[$3 + (($7 | 12) << 3) >> 3] = +HEAPF64[$9 >> 3]; + HEAPF64[$3 + (($7 | 13) << 3) >> 3] = 1.0; + $49 = $vertex + ($i$03 << 4) + 8 | 0; + HEAPF64[$3 + (($7 | 14) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$49 >> 3]); + HEAPF64[$3 + (($7 | 15) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$49 >> 3]); + $62 = $i$03 << 1; + HEAPF64[$4 + ($62 << 3) >> 3] = +HEAPF64[$22 >> 3]; + HEAPF64[$4 + (($62 | 1) << 3) >> 3] = +HEAPF64[$49 >> 3]; + $i$03 = $i$03 + 1 | 0; + } while (($i$03 | 0) != 4); + _arMatrixSelfInv($0) | 0; + _arMatrixMul($2, $0, $1) | 0; + $68 = HEAP32[$2 >> 2] | 0; + HEAPF64[$para >> 3] = +HEAPF64[$68 >> 3]; + HEAPF64[$para + 8 >> 3] = +HEAPF64[$68 + 8 >> 3]; + HEAPF64[$para + 16 >> 3] = +HEAPF64[$68 + 16 >> 3]; + $76 = HEAP32[$2 >> 2] | 0; + HEAPF64[$para + 24 >> 3] = +HEAPF64[$76 + 24 >> 3]; + HEAPF64[$para + 32 >> 3] = +HEAPF64[$76 + 32 >> 3]; + HEAPF64[$para + 40 >> 3] = +HEAPF64[$76 + 40 >> 3]; + $86 = HEAP32[$2 >> 2] | 0; + HEAPF64[$para + 48 >> 3] = +HEAPF64[$86 + 48 >> 3]; + HEAPF64[$para + 56 >> 3] = +HEAPF64[$86 + 56 >> 3]; + HEAPF64[$para + 64 >> 3] = 1.0; + _arMatrixFree($0) | 0; + _arMatrixFree($1) | 0; + _arMatrixFree($2) | 0; + return; +} + +function _arGetTransMatSquare($handle, $marker_info, $width, $conv) { + $handle = $handle | 0; + $marker_info = $marker_info | 0; + $width = +$width; + $conv = $conv | 0; + var $$0 = 0.0, $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $53 = 0, $data = 0, $err = 0, $initMatXw2Xc = 0, $screenCoord = 0, $worldCoord = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 288 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $screenCoord = sp + 200 | 0; + $worldCoord = sp + 104 | 0; + $data = sp + 264 | 0; + $initMatXw2Xc = sp + 8 | 0; + $err = sp; + $1 = HEAP32[$marker_info + 16 >> 2] | 0; + $3 = (4 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3]; + HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3]; + $10 = (5 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3]; + HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3]; + $18 = (6 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3]; + HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3]; + $26 = (7 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3]; + HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3]; + $33 = $width * -.5; + HEAPF64[$worldCoord >> 3] = $33; + $34 = $width * .5; + HEAPF64[$worldCoord + 8 >> 3] = $34; + HEAPF64[$worldCoord + 16 >> 3] = 0.0; + HEAPF64[$worldCoord + 24 >> 3] = $34; + HEAPF64[$worldCoord + 32 >> 3] = $34; + HEAPF64[$worldCoord + 40 >> 3] = 0.0; + HEAPF64[$worldCoord + 48 >> 3] = $34; + HEAPF64[$worldCoord + 56 >> 3] = $33; + HEAPF64[$worldCoord + 64 >> 3] = 0.0; + HEAPF64[$worldCoord + 72 >> 3] = $33; + HEAPF64[$worldCoord + 80 >> 3] = $33; + HEAPF64[$worldCoord + 88 >> 3] = 0.0; + HEAP32[$data >> 2] = $screenCoord; + HEAP32[$data + 4 >> 2] = $worldCoord; + HEAP32[$data + 8 >> 2] = 4; + if ((_icpGetInitXw2Xc_from_PlanarData(HEAP32[$handle >> 2] | 0, $screenCoord, $worldCoord, 4, $initMatXw2Xc) | 0) < 0) $$0 = 1.0e8; else { + $53 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initMatXw2Xc, $conv, $err) | 0) < 0; + $$0 = $53 ? 1.0e8 : +HEAPF64[$err >> 3]; + } + STACKTOP = sp; + return +$$0; +} + +function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $14 = 0, $20 = 0, $23 = 0, $24 = 0, $26 = 0, $33 = 0, $44 = 0, $6 = 0, $is_dst_type_derived_from_static_type$0$off01 = 0, label = 0; + L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) { + if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) { + $6 = $info + 28 | 0; + if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below; + } + } else { + if (($this | 0) != (HEAP32[$info >> 2] | 0)) { + $44 = HEAP32[$this + 8 >> 2] | 0; + FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$44 >> 2] | 0) + 24 >> 2] & 3]($44, $info, $current_ptr, $path_below, $use_strcmp); + break; + } + if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) { + $14 = $info + 20 | 0; + if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) { + HEAP32[$info + 32 >> 2] = $path_below; + $20 = $info + 44 | 0; + if ((HEAP32[$20 >> 2] | 0) == 4) break; + $23 = $info + 52 | 0; + HEAP8[$23 >> 0] = 0; + $24 = $info + 53 | 0; + HEAP8[$24 >> 0] = 0; + $26 = HEAP32[$this + 8 >> 2] | 0; + FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$26 >> 2] | 0) + 20 >> 2] & 3]($26, $info, $current_ptr, $current_ptr, 1, $use_strcmp); + if (!(HEAP8[$24 >> 0] | 0)) { + $is_dst_type_derived_from_static_type$0$off01 = 0; + label = 13; + } else if (!(HEAP8[$23 >> 0] | 0)) { + $is_dst_type_derived_from_static_type$0$off01 = 1; + label = 13; + } + do if ((label | 0) == 13) { + HEAP32[$14 >> 2] = $current_ptr; + $33 = $info + 40 | 0; + HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1; + if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) { + HEAP8[$info + 54 >> 0] = 1; + if ($is_dst_type_derived_from_static_type$0$off01) break; + } else label = 16; else label = 16; + if ((label | 0) == 16) if ($is_dst_type_derived_from_static_type$0$off01) break; + HEAP32[$20 >> 2] = 4; + break L1; + } while (0); + HEAP32[$20 >> 2] = 3; + break; + } + } + if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1; + } while (0); + return; +} + +function _fgets($s, $n, $f) { + $s = $s | 0; + $n = $n | 0; + $f = $f | 0; + var $$0 = 0, $$048 = 0, $$05 = 0, $$lcssa14 = 0, $$sum$pre$phiZZ2D = 0, $$sum6 = 0, $13 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $6 = 0, $8 = 0, $p$0 = 0, $p$1 = 0, label = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) $13 = ___lockfile($f) | 0; else $13 = 0; + $4 = $n + -1 | 0; + if (($n | 0) < 2) { + $6 = $f + 74 | 0; + $8 = HEAP8[$6 >> 0] | 0; + HEAP8[$6 >> 0] = $8 + 255 | $8; + if ($13) ___unlockfile($f); + if (!$4) { + HEAP8[$s >> 0] = 0; + $$0 = $s; + } else $$0 = 0; + } else { + L11 : do if (!$4) { + $p$1 = $s; + label = 18; + } else { + $15 = $f + 4 | 0; + $16 = $f + 8 | 0; + $$05 = $4; + $p$0 = $s; + while (1) { + $17 = HEAP32[$15 >> 2] | 0; + $20 = $17; + $21 = (HEAP32[$16 >> 2] | 0) - $20 | 0; + $22 = _memchr($17, 10, $21) | 0; + $23 = ($22 | 0) == 0; + $27 = $23 ? $21 : 1 - $20 + $22 | 0; + $28 = $27 >>> 0 < $$05 >>> 0; + $29 = $28 ? $27 : $$05; + _memcpy($p$0 | 0, $17 | 0, $29 | 0) | 0; + $30 = HEAP32[$15 >> 2] | 0; + $31 = $30 + $29 | 0; + HEAP32[$15 >> 2] = $31; + $32 = $p$0 + $29 | 0; + $33 = $$05 - $29 | 0; + if (!($23 & $28)) { + $p$1 = $32; + label = 18; + break L11; + } + if ($31 >>> 0 < (HEAP32[$16 >> 2] | 0) >>> 0) { + $$sum6 = $29 + 1 | 0; + HEAP32[$15 >> 2] = $30 + $$sum6; + $$sum$pre$phiZZ2D = $$sum6; + $47 = HEAPU8[$31 >> 0] | 0; + } else { + $39 = ___uflow($f) | 0; + if (($39 | 0) < 0) { + $$lcssa14 = $32; + break; + } + $$sum$pre$phiZZ2D = $29 + 1 | 0; + $47 = $39; + } + $$05 = $33 + -1 | 0; + $48 = $p$0 + $$sum$pre$phiZZ2D | 0; + HEAP8[$32 >> 0] = $47; + if (!(($$05 | 0) != 0 & ($47 & 255 | 0) != 10)) { + $p$1 = $48; + label = 18; + break L11; + } else $p$0 = $48; + } + if (($$lcssa14 | 0) == ($s | 0)) $$048 = 0; else if (!(HEAP32[$f >> 2] & 16)) $$048 = 0; else { + $p$1 = $$lcssa14; + label = 18; + } + } while (0); + if ((label | 0) == 18) if (!$s) $$048 = 0; else { + HEAP8[$p$1 >> 0] = 0; + $$048 = $s; + } + if (!$13) $$0 = $$048; else { + ___unlockfile($f); + $$0 = $$048; + } + } + return $$0 | 0; +} + +function _mbrtowc($wc, $src, $n, $st) { + $wc = $wc | 0; + $src = $src | 0; + $n = $n | 0; + $st = $st | 0; + var $$0 = 0, $$024 = 0, $$1 = 0, $$lcssa = 0, $$lcssa35 = 0, $$st = 0, $1 = 0, $12 = 0, $16 = 0, $17 = 0, $19 = 0, $21 = 0, $30 = 0, $40 = 0, $7 = 0, $8 = 0, $c$05 = 0, $c$1 = 0, $c$2 = 0, $dummy = 0, $dummy$wc = 0, $s$06 = 0, $s$1 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $dummy = sp; + $$st = ($st | 0) == 0 ? 2680 : $st; + $1 = HEAP32[$$st >> 2] | 0; + L1 : do if (!$src) if (!$1) $$0 = 0; else label = 15; else { + $dummy$wc = ($wc | 0) == 0 ? $dummy : $wc; + if (!$n) $$0 = -2; else { + if (!$1) { + $7 = HEAP8[$src >> 0] | 0; + $8 = $7 & 255; + if ($7 << 24 >> 24 > -1) { + HEAP32[$dummy$wc >> 2] = $8; + $$0 = $7 << 24 >> 24 != 0 & 1; + break; + } + $12 = $8 + -194 | 0; + if ($12 >>> 0 > 50) { + label = 15; + break; + } + $16 = HEAP32[2432 + ($12 << 2) >> 2] | 0; + $17 = $n + -1 | 0; + if (!$17) $c$2 = $16; else { + $$024 = $17; + $c$05 = $16; + $s$06 = $src + 1 | 0; + label = 9; + } + } else { + $$024 = $n; + $c$05 = $1; + $s$06 = $src; + label = 9; + } + L11 : do if ((label | 0) == 9) { + $19 = HEAP8[$s$06 >> 0] | 0; + $21 = ($19 & 255) >>> 3; + if (($21 + -16 | $21 + ($c$05 >> 26)) >>> 0 > 7) { + label = 15; + break L1; + } else { + $$1 = $$024; + $30 = $19; + $c$1 = $c$05; + $s$1 = $s$06; + } + while (1) { + $s$1 = $s$1 + 1 | 0; + $c$1 = ($30 & 255) + -128 | $c$1 << 6; + $$1 = $$1 + -1 | 0; + if (($c$1 | 0) >= 0) { + $$lcssa = $c$1; + $$lcssa35 = $$1; + break; + } + if (!$$1) { + $c$2 = $c$1; + break L11; + } + $30 = HEAP8[$s$1 >> 0] | 0; + if (($30 & -64) << 24 >> 24 != -128) { + label = 15; + break L1; + } + } + HEAP32[$$st >> 2] = 0; + HEAP32[$dummy$wc >> 2] = $$lcssa; + $$0 = $n - $$lcssa35 | 0; + break L1; + } while (0); + HEAP32[$$st >> 2] = $c$2; + $$0 = -2; + } + } while (0); + if ((label | 0) == 15) { + HEAP32[$$st >> 2] = 0; + $40 = ___errno_location() | 0; + HEAP32[$40 >> 2] = 84; + $$0 = -1; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($agg$result, $this, $__p) { + $agg$result = $agg$result | 0; + $this = $this | 0; + $__p = $__p | 0; + var $$pre$phiZ2D = 0, $0 = 0, $11 = 0, $12 = 0, $14 = 0, $16 = 0, $19 = 0, $2 = 0, $23 = 0, $24 = 0, $27 = 0, $31 = 0, $32 = 0, $34 = 0, $36 = 0, $4 = 0, $40 = 0, $43 = 0, $44 = 0, $5 = 0, $7 = 0, $__pn$0 = 0, $__pn$0$lcssa = 0, label = 0; + $0 = HEAP32[$__p >> 2] | 0; + $2 = HEAP32[$this + 4 >> 2] | 0; + $4 = HEAP32[$0 + 4 >> 2] | 0; + $5 = $2 + -1 | 0; + $7 = ($5 & $2 | 0) == 0; + if ($7) $12 = $5 & $4; else $12 = ($4 >>> 0) % ($2 >>> 0) | 0; + $11 = (HEAP32[$this >> 2] | 0) + ($12 << 2) | 0; + $__pn$0 = HEAP32[$11 >> 2] | 0; + while (1) { + $14 = HEAP32[$__pn$0 >> 2] | 0; + if (($14 | 0) == ($0 | 0)) { + $__pn$0$lcssa = $__pn$0; + break; + } else $__pn$0 = $14; + } + $16 = $this + 8 | 0; + if (($__pn$0$lcssa | 0) == ($16 | 0)) label = 12; else { + $19 = HEAP32[$__pn$0$lcssa + 4 >> 2] | 0; + if ($7) $23 = $19 & $5; else $23 = ($19 >>> 0) % ($2 >>> 0) | 0; + if (($23 | 0) == ($12 | 0)) $$pre$phiZ2D = $0; else label = 12; + } + do if ((label | 0) == 12) { + $24 = HEAP32[$0 >> 2] | 0; + if ($24) { + $27 = HEAP32[$24 + 4 >> 2] | 0; + if ($7) $31 = $27 & $5; else $31 = ($27 >>> 0) % ($2 >>> 0) | 0; + if (($31 | 0) == ($12 | 0)) { + $$pre$phiZ2D = $0; + break; + } + } + HEAP32[$11 >> 2] = 0; + $$pre$phiZ2D = $0; + } while (0); + $32 = HEAP32[$$pre$phiZ2D >> 2] | 0; + $34 = $32; + if (!$32) $43 = $34; else { + $36 = HEAP32[$32 + 4 >> 2] | 0; + if ($7) $40 = $36 & $5; else $40 = ($36 >>> 0) % ($2 >>> 0) | 0; + if (($40 | 0) == ($12 | 0)) $43 = $34; else { + HEAP32[(HEAP32[$this >> 2] | 0) + ($40 << 2) >> 2] = $__pn$0$lcssa; + $43 = HEAP32[$0 >> 2] | 0; + } + } + HEAP32[$__pn$0$lcssa >> 2] = $43; + HEAP32[$$pre$phiZ2D >> 2] = 0; + $44 = $this + 12 | 0; + HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + -1; + HEAP32[$agg$result >> 2] = $0; + HEAP32[$agg$result + 4 >> 2] = $16; + HEAP8[$agg$result + 8 >> 0] = 1; + return; +} + +function _arParamLTCreate($param, $offset) { + $param = $param | 0; + $offset = $offset | 0; + var $0 = 0, $14 = 0, $15 = 0, $17 = 0, $20 = 0, $22 = 0, $24 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $9 = 0, $i$04 = 0, $i2of$05 = 0, $i2of$12 = 0, $ix = 0, $iy = 0, $j$07 = 0, $o2if$06 = 0, $o2if$13 = 0, $ox = 0, $oy = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ix = sp + 24 | 0; + $iy = sp + 16 | 0; + $ox = sp + 8 | 0; + $oy = sp; + $0 = _malloc(208) | 0; + if (!$0) { + _arLog(3, 5471, sp + 32 | 0); + _exit(1); + } + _memcpy($0 | 0, $param | 0, 184) | 0; + $3 = $offset << 1; + $4 = (HEAP32[$param >> 2] | 0) + $3 | 0; + HEAP32[$0 + 192 >> 2] = $4; + $9 = (HEAP32[$param + 4 >> 2] | 0) + $3 | 0; + HEAP32[$0 + 196 >> 2] = $9; + HEAP32[$0 + 200 >> 2] = $offset; + HEAP32[$0 + 204 >> 2] = $offset; + $14 = Math_imul($4 << 3, $9) | 0; + $15 = _malloc($14) | 0; + HEAP32[$0 + 184 >> 2] = $15; + if (!$15) { + _arLog(3, 5471, sp + 40 | 0); + _exit(1); + } + $17 = _malloc($14) | 0; + HEAP32[$0 + 188 >> 2] = $17; + if (!$17) { + _arLog(3, 5471, sp + 48 | 0); + _exit(1); + } + $20 = $param + 104 | 0; + $22 = HEAP32[$param + 176 >> 2] | 0; + $24 = ($4 | 0) > 0 ? $4 << 1 : 0; + if (($9 | 0) > 0) { + $26 = ($4 | 0) > 0; + $i2of$05 = $15; + $j$07 = 0; + $o2if$06 = $17; + while (1) { + $29 = +($j$07 - $offset | 0); + if ($26) { + $i$04 = 0; + $i2of$12 = $i2of$05; + $o2if$13 = $o2if$06; + while (1) { + $32 = +($i$04 - $offset | 0); + _arParamIdeal2Observ($20, $32, $29, $ox, $oy, $22) | 0; + HEAPF32[$i2of$12 >> 2] = +HEAPF64[$ox >> 3]; + HEAPF32[$i2of$12 + 4 >> 2] = +HEAPF64[$oy >> 3]; + _arParamObserv2Ideal($20, $32, $29, $ix, $iy, $22) | 0; + HEAPF32[$o2if$13 >> 2] = +HEAPF64[$ix >> 3]; + HEAPF32[$o2if$13 + 4 >> 2] = +HEAPF64[$iy >> 3]; + $i$04 = $i$04 + 1 | 0; + if (($i$04 | 0) >= ($4 | 0)) break; else { + $i2of$12 = $i2of$12 + 8 | 0; + $o2if$13 = $o2if$13 + 8 | 0; + } + } + } + $o2if$06 = $o2if$06 + ($24 << 2) | 0; + $j$07 = $j$07 + 1 | 0; + if (($j$07 | 0) >= ($9 | 0)) break; else $i2of$05 = $i2of$05 + ($24 << 2) | 0; + } + } + STACKTOP = sp; + return $0 | 0; +} + +function _arGetTransMatSquareCont($handle, $marker_info, $initConv, $width, $conv) { + $handle = $handle | 0; + $marker_info = $marker_info | 0; + $initConv = $initConv | 0; + $width = +$width; + $conv = $conv | 0; + var $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $50 = 0, $data = 0, $err = 0, $screenCoord = 0, $worldCoord = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 192 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $screenCoord = sp + 104 | 0; + $worldCoord = sp + 8 | 0; + $data = sp + 168 | 0; + $err = sp; + $1 = HEAP32[$marker_info + 16 >> 2] | 0; + $3 = (4 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3]; + HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3]; + $10 = (5 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3]; + HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3]; + $18 = (6 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3]; + HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3]; + $26 = (7 - $1 | 0) % 4 | 0; + HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3]; + HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3]; + $33 = $width * -.5; + HEAPF64[$worldCoord >> 3] = $33; + $34 = $width * .5; + HEAPF64[$worldCoord + 8 >> 3] = $34; + HEAPF64[$worldCoord + 16 >> 3] = 0.0; + HEAPF64[$worldCoord + 24 >> 3] = $34; + HEAPF64[$worldCoord + 32 >> 3] = $34; + HEAPF64[$worldCoord + 40 >> 3] = 0.0; + HEAPF64[$worldCoord + 48 >> 3] = $34; + HEAPF64[$worldCoord + 56 >> 3] = $33; + HEAPF64[$worldCoord + 64 >> 3] = 0.0; + HEAPF64[$worldCoord + 72 >> 3] = $33; + HEAPF64[$worldCoord + 80 >> 3] = $33; + HEAPF64[$worldCoord + 88 >> 3] = 0.0; + HEAP32[$data >> 2] = $screenCoord; + HEAP32[$data + 4 >> 2] = $worldCoord; + HEAP32[$data + 8 >> 2] = 4; + $50 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0; + STACKTOP = sp; + return +($50 ? 1.0e8 : +HEAPF64[$err >> 3]); +} + +function ___dynamic_cast($static_ptr, $static_type, $dst_type, $src2dst_offset) { + $static_ptr = $static_ptr | 0; + $static_type = $static_type | 0; + $dst_type = $dst_type | 0; + $src2dst_offset = $src2dst_offset | 0; + var $0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $4 = 0, $6 = 0, $dst_ptr$0 = 0, $info = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $info = sp; + $0 = HEAP32[$static_ptr >> 2] | 0; + $4 = $static_ptr + (HEAP32[$0 + -8 >> 2] | 0) | 0; + $6 = HEAP32[$0 + -4 >> 2] | 0; + HEAP32[$info >> 2] = $dst_type; + HEAP32[$info + 4 >> 2] = $static_ptr; + HEAP32[$info + 8 >> 2] = $static_type; + HEAP32[$info + 12 >> 2] = $src2dst_offset; + $10 = $info + 16 | 0; + $11 = $info + 20 | 0; + $12 = $info + 24 | 0; + $13 = $info + 28 | 0; + $14 = $info + 32 | 0; + $15 = $info + 40 | 0; + $16 = ($6 | 0) == ($dst_type | 0); + dest = $10; + stop = dest + 36 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP16[$10 + 36 >> 1] = 0; + HEAP8[$10 + 38 >> 0] = 0; + L1 : do if ($16) { + HEAP32[$info + 48 >> 2] = 1; + FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$dst_type >> 2] | 0) + 20 >> 2] & 3]($dst_type, $info, $4, $4, 1, 0); + $dst_ptr$0 = (HEAP32[$12 >> 2] | 0) == 1 ? $4 : 0; + } else { + FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$6 >> 2] | 0) + 24 >> 2] & 3]($6, $info, $4, 1, 0); + switch (HEAP32[$info + 36 >> 2] | 0) { + case 0: + { + $dst_ptr$0 = (HEAP32[$15 >> 2] | 0) == 1 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1 ? HEAP32[$11 >> 2] | 0 : 0; + break L1; + break; + } + case 1: + break; + default: + { + $dst_ptr$0 = 0; + break L1; + } + } + if ((HEAP32[$12 >> 2] | 0) != 1) if (!((HEAP32[$15 >> 2] | 0) == 0 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1)) { + $dst_ptr$0 = 0; + break; + } + $dst_ptr$0 = HEAP32[$10 >> 2] | 0; + } while (0); + STACKTOP = sp; + return $dst_ptr$0 | 0; +} + +function _arImageProcLumaHistAndOtsu($ipi, $dataPtr, $value_p) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + $value_p = $value_p | 0; + var $$0 = 0, $$lcssa = 0.0, $0 = 0, $12 = 0.0, $14 = 0, $18 = 0.0, $22 = 0.0, $27 = 0.0, $29 = 0.0, $6 = 0.0, $indvars$iv = 0, $indvars$iv1 = 0, $sum$0 = 0.0, $sumB$0 = 0.0, $sumB$1 = 0.0, $threshold$0 = 0, $threshold$1 = 0, $threshold$2 = 0, $varMax$0 = 0.0, $varMax$1 = 0.0, $wB$0 = 0.0; + $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0; + if (($0 | 0) < 0) $$0 = $0; else { + $indvars$iv1 = 1; + $sum$0 = 0.0; + while (1) { + $6 = $sum$0 + +((Math_imul(HEAP32[$ipi + 16 + ($indvars$iv1 << 2) >> 2] | 0, $indvars$iv1) | 0) >>> 0); + $indvars$iv1 = $indvars$iv1 + 1 | 0; + if (($indvars$iv1 | 0) == 256) { + $$lcssa = $6; + break; + } else $sum$0 = $6; + } + $12 = +(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0); + $indvars$iv = 0; + $sumB$0 = 0.0; + $threshold$0 = 0; + $varMax$0 = 0.0; + $wB$0 = 0.0; + while (1) { + $14 = HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0; + $wB$0 = $wB$0 + +($14 >>> 0); + if ($wB$0 != 0.0) { + $18 = $12 - $wB$0; + if ($18 == 0.0) { + $threshold$2 = $threshold$0; + break; + } + $22 = $sumB$0 + +((Math_imul($indvars$iv, $14) | 0) >>> 0); + $27 = $22 / $wB$0 - ($$lcssa - $22) / $18; + $29 = $27 * ($wB$0 * $18 * $27); + if ($29 > $varMax$0) { + $sumB$1 = $22; + $threshold$1 = $indvars$iv & 255; + $varMax$1 = $29; + } else { + $sumB$1 = $22; + $threshold$1 = $threshold$0; + $varMax$1 = $varMax$0; + } + } else { + $sumB$1 = $sumB$0; + $threshold$1 = $threshold$0; + $varMax$1 = $varMax$0; + } + if (($indvars$iv & 255) << 24 >> 24 == -1) { + $threshold$2 = $threshold$1; + break; + } else { + $indvars$iv = $indvars$iv + 1 | 0; + $sumB$0 = $sumB$1; + $threshold$0 = $threshold$1; + $varMax$0 = $varMax$1; + } + } + HEAP8[$value_p >> 0] = $threshold$2; + $$0 = 0; + } + return $$0 | 0; +} + +function __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev($this) { + $this = $this | 0; + __embind_register_void(624, 14202); + __embind_register_bool(632, 14207, 1, 1, 0); + __embind_register_integer(640, 13783, 1, -128, 127); + __embind_register_integer(656, 13788, 1, -128, 127); + __embind_register_integer(648, 13800, 1, 0, 255); + __embind_register_integer(664, 13814, 2, -32768, 32767); + __embind_register_integer(672, 13820, 2, 0, 65535); + __embind_register_integer(680, 14212, 4, -2147483648, 2147483647); + __embind_register_integer(688, 14216, 4, 0, -1); + __embind_register_integer(696, 14229, 4, -2147483648, 2147483647); + __embind_register_integer(704, 14234, 4, 0, -1); + __embind_register_float(712, 14277, 4); + __embind_register_float(720, 14283, 8); + __embind_register_std_string(360, 12846); + __embind_register_std_string(392, 10916); + __embind_register_std_wstring(416, 4, 10949); + __embind_register_emval(440, 10962); + __embind_register_memory_view(448, 0, 10978); + __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11008); + __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11045); + __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11084); + __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11115); + __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11155); + __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11184); + __embind_register_memory_view(456, 4, 11222); + __embind_register_memory_view(464, 5, 11252); + __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11291); + __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11323); + __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11356); + __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11389); + __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11423); + __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11456); + __embind_register_memory_view(472, 6, 11490); + __embind_register_memory_view(480, 7, 11521); + __embind_register_memory_view(488, 7, 11553); + return; +} + +function _arSetPixelFormat($handle, $pixFormat) { + $handle = $handle | 0; + $pixFormat = $pixFormat | 0; + var $$0 = 0, $1 = 0, $14 = 0, $16 = 0, $17 = 0, $4 = 0, $6 = 0, $7 = 0, $monoFormat$0 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + L1 : do if (!$handle) $$0 = -1; else { + $1 = $handle + 4 | 0; + if ((HEAP32[$1 >> 2] | 0) == ($pixFormat | 0)) $$0 = 0; else { + switch ($pixFormat | 0) { + case 11: + case 10: + case 9: + case 8: + case 7: + case 6: + case 4: + case 3: + case 2: + case 1: + case 0: + { + $monoFormat$0 = 0; + break; + } + case 14: + case 13: + case 12: + case 5: + { + $monoFormat$0 = 1; + break; + } + default: + { + HEAP32[$vararg_buffer >> 2] = $pixFormat; + _arLog(3, 3936, $vararg_buffer); + $$0 = -1; + break L1; + } + } + HEAP32[$1 >> 2] = $pixFormat; + $4 = _arUtilGetPixelSize($pixFormat) | 0; + HEAP32[$handle + 8 >> 2] = $4; + $6 = $handle + 7062408 | 0; + $7 = HEAP32[$6 >> 2] | 0; + if ($7) { + _arImageProcFinal($7); + $14 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$1 >> 2] | 0, 0) | 0; + HEAP32[$6 >> 2] = $14; + } + $16 = $handle + 24 | 0; + $17 = HEAP32[$16 >> 2] | 0; + if (!$monoFormat$0) switch ($17 | 0) { + case 1: + { + HEAP32[$16 >> 2] = 4; + $$0 = 0; + break L1; + break; + } + case 4: + { + HEAP32[$16 >> 2] = 3; + $$0 = 0; + break L1; + break; + } + default: + { + $$0 = 0; + break L1; + } + } else switch ($17 | 0) { + case 0: + { + HEAP32[$16 >> 2] = 1; + $$0 = 0; + break L1; + break; + } + case 3: + { + HEAP32[$16 >> 2] = 4; + $$0 = 0; + break L1; + break; + } + default: + { + $$0 = 0; + break L1; + } + } + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _confidenceCutoff($arHandle) { + $arHandle = $arHandle | 0; + var $11 = 0, $21 = 0, $3 = 0, $31 = 0, $37 = 0, $6 = 0, $9 = 0, $cfOK$0 = 0, $i$010 = 0, $i$112 = 0, $i$29 = 0; + switch (HEAP32[$arHandle + 24 >> 2] | 0) { + case 1: + case 0: + { + $6 = HEAP32[$arHandle + 44 >> 2] | 0; + if (($6 | 0) > 0) { + $i$010 = 0; + do { + $11 = $arHandle + 48 + ($i$010 << 8) + 4 | 0; + if ((HEAP32[$11 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$010 << 8) + 32 >> 3] < .5) { + HEAP32[$arHandle + 48 + ($i$010 << 8) + 8 >> 2] = -1; + HEAP32[$11 >> 2] = -1; + HEAP32[$arHandle + 48 + ($i$010 << 8) + 236 >> 2] = 6; + } + $i$010 = $i$010 + 1 | 0; + } while (($i$010 | 0) < ($6 | 0)); + } + break; + } + case 2: + { + $3 = HEAP32[$arHandle + 44 >> 2] | 0; + if (($3 | 0) > 0) { + $i$112 = 0; + do { + $21 = $arHandle + 48 + ($i$112 << 8) + 4 | 0; + if ((HEAP32[$21 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$112 << 8) + 32 >> 3] < .5) { + HEAP32[$arHandle + 48 + ($i$112 << 8) + 12 >> 2] = -1; + HEAP32[$21 >> 2] = -1; + HEAP32[$arHandle + 48 + ($i$112 << 8) + 236 >> 2] = 6; + } + $i$112 = $i$112 + 1 | 0; + } while (($i$112 | 0) < ($3 | 0)); + } + break; + } + default: + { + $9 = HEAP32[$arHandle + 44 >> 2] | 0; + if (($9 | 0) > 0) { + $i$29 = 0; + do { + $31 = $arHandle + 48 + ($i$29 << 8) + 8 | 0; + if ((HEAP32[$31 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 40 >> 3] < .5) { + HEAP32[$31 >> 2] = -1; + $cfOK$0 = 0; + } else $cfOK$0 = 1; else $cfOK$0 = 1; + $37 = $arHandle + 48 + ($i$29 << 8) + 12 | 0; + if ((HEAP32[$37 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 48 >> 3] < .5) { + HEAP32[$37 >> 2] = -1; + if (!$cfOK$0) HEAP32[$arHandle + 48 + ($i$29 << 8) + 236 >> 2] = 6; + } + $i$29 = $i$29 + 1 | 0; + } while (($i$29 | 0) < ($9 | 0)); + } + } + } + return; +} + +function ___stpcpy($d, $s) { + $d = $d | 0; + $s = $s | 0; + var $$0$lcssa = 0, $$01$lcssa = 0, $$0115 = 0, $$016 = 0, $$03 = 0, $$1$ph = 0, $$12$ph = 0, $$128 = 0, $$19 = 0, $0 = 0, $10 = 0, $14 = 0, $20 = 0, $21 = 0, $22 = 0, $29 = 0, $32 = 0, $33 = 0, $7 = 0, $9 = 0, $wd$0$lcssa = 0, $wd$010 = 0, $ws$0$lcssa = 0, $ws$011 = 0, label = 0; + $0 = $s; + L1 : do if (!(($0 ^ $d) & 3)) { + if (!($0 & 3)) { + $$0$lcssa = $s; + $$01$lcssa = $d; + } else { + $$0115 = $d; + $$016 = $s; + while (1) { + $7 = HEAP8[$$016 >> 0] | 0; + HEAP8[$$0115 >> 0] = $7; + if (!($7 << 24 >> 24)) { + $$03 = $$0115; + break L1; + } + $9 = $$016 + 1 | 0; + $10 = $$0115 + 1 | 0; + if (!($9 & 3)) { + $$0$lcssa = $9; + $$01$lcssa = $10; + break; + } else { + $$0115 = $10; + $$016 = $9; + } + } + } + $14 = HEAP32[$$0$lcssa >> 2] | 0; + if (!(($14 & -2139062144 ^ -2139062144) & $14 + -16843009)) { + $22 = $14; + $wd$010 = $$01$lcssa; + $ws$011 = $$0$lcssa; + while (1) { + $20 = $ws$011 + 4 | 0; + $21 = $wd$010 + 4 | 0; + HEAP32[$wd$010 >> 2] = $22; + $22 = HEAP32[$20 >> 2] | 0; + if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) { + $wd$0$lcssa = $21; + $ws$0$lcssa = $20; + break; + } else { + $wd$010 = $21; + $ws$011 = $20; + } + } + } else { + $wd$0$lcssa = $$01$lcssa; + $ws$0$lcssa = $$0$lcssa; + } + $$1$ph = $ws$0$lcssa; + $$12$ph = $wd$0$lcssa; + label = 8; + } else { + $$1$ph = $s; + $$12$ph = $d; + label = 8; + } while (0); + if ((label | 0) == 8) { + $29 = HEAP8[$$1$ph >> 0] | 0; + HEAP8[$$12$ph >> 0] = $29; + if (!($29 << 24 >> 24)) $$03 = $$12$ph; else { + $$128 = $$12$ph; + $$19 = $$1$ph; + while (1) { + $$19 = $$19 + 1 | 0; + $32 = $$128 + 1 | 0; + $33 = HEAP8[$$19 >> 0] | 0; + HEAP8[$32 >> 0] = $33; + if (!($33 << 24 >> 24)) { + $$03 = $32; + break; + } else $$128 = $32; + } + } + } + return $$03 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $10 = 0, $17 = 0, $21 = 0, $22 = 0, $3 = 0, $4 = 0, $t$0 = 0, $t$0$lcssa = 0, $t$0$looptemp = 0; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else switch (HEAP8[$first >> 0] | 0) { + case 88: + { + $3 = $first + 1 | 0; + $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($3, $last, $db) | 0; + if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + $$0 = (HEAP8[$4 >> 0] | 0) == 69 ? $4 + 1 | 0 : $first; + break L1; + break; + } + case 74: + { + $10 = $first + 1 | 0; + if (($10 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } else $t$0 = $10; + while (1) { + if ((HEAP8[$t$0 >> 0] | 0) == 69) { + $t$0$lcssa = $t$0; + break; + } + $t$0$looptemp = $t$0; + $t$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0; + if (($t$0 | 0) == ($t$0$looptemp | 0)) { + $$0 = $first; + break L1; + } + } + $$0 = $t$0$lcssa + 1 | 0; + break L1; + break; + } + case 76: + { + $17 = $first + 1 | 0; + if (($17 | 0) != ($last | 0)) if ((HEAP8[$17 >> 0] | 0) == 90) { + $21 = $first + 2 | 0; + $22 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0; + if (($22 | 0) == ($21 | 0) | ($22 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + return ((HEAP8[$22 >> 0] | 0) == 69 ? $22 + 1 | 0 : $first) | 0; + } + $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + break; + } + default: + { + $$0 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + break L1; + } + } while (0); + return $$0 | 0; +} + +function _vfprintf($f, $fmt, $ap) { + $f = $f | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + var $$ = 0, $$0 = 0, $12 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $21 = 0, $22 = 0, $28 = 0, $33 = 0, $6 = 0, $7 = 0, $ap2 = 0, $internal_buf = 0, $nl_arg = 0, $nl_type = 0, $ret$1 = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 224 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ap2 = sp + 80 | 0; + $nl_type = sp + 96 | 0; + $nl_arg = sp; + $internal_buf = sp + 136 | 0; + dest = $nl_type; + stop = dest + 40 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2]; + if ((_printf_core(0, $fmt, $ap2, $nl_arg, $nl_type) | 0) < 0) $$0 = -1; else { + if ((HEAP32[$f + 76 >> 2] | 0) > -1) $33 = ___lockfile($f) | 0; else $33 = 0; + $6 = HEAP32[$f >> 2] | 0; + $7 = $6 & 32; + if ((HEAP8[$f + 74 >> 0] | 0) < 1) HEAP32[$f >> 2] = $6 & -33; + $12 = $f + 48 | 0; + if (!(HEAP32[$12 >> 2] | 0)) { + $16 = $f + 44 | 0; + $17 = HEAP32[$16 >> 2] | 0; + HEAP32[$16 >> 2] = $internal_buf; + $18 = $f + 28 | 0; + HEAP32[$18 >> 2] = $internal_buf; + $19 = $f + 20 | 0; + HEAP32[$19 >> 2] = $internal_buf; + HEAP32[$12 >> 2] = 80; + $21 = $f + 16 | 0; + HEAP32[$21 >> 2] = $internal_buf + 80; + $22 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0; + if (!$17) $ret$1 = $22; else { + FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0; + $$ = (HEAP32[$19 >> 2] | 0) == 0 ? -1 : $22; + HEAP32[$16 >> 2] = $17; + HEAP32[$12 >> 2] = 0; + HEAP32[$21 >> 2] = 0; + HEAP32[$18 >> 2] = 0; + HEAP32[$19 >> 2] = 0; + $ret$1 = $$; + } + } else $ret$1 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0; + $28 = HEAP32[$f >> 2] | 0; + HEAP32[$f >> 2] = $28 | $7; + if ($33) ___unlockfile($f); + $$0 = ($28 & 32 | 0) == 0 ? $ret$1 : -1; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _get_vertex($x_coord, $y_coord, $st, $ed, $thresh, $vertex, $vnum) { + $x_coord = $x_coord | 0; + $y_coord = $y_coord | 0; + $st = $st | 0; + $ed = $ed | 0; + $thresh = +$thresh; + $vertex = $vertex | 0; + $vnum = $vnum | 0; + var $$0 = 0, $1 = 0, $11 = 0.0, $15 = 0.0, $16 = 0, $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $39 = 0, $5 = 0.0, $7 = 0, $9 = 0, $dmax$0$lcssa = 0.0, $dmax$01 = 0.0, $dmax$1 = 0.0, $i$02 = 0, $v1$0$lcssa = 0, $v1$03 = 0, $v1$1 = 0, label = 0; + $1 = HEAP32[$y_coord + ($ed << 2) >> 2] | 0; + $3 = HEAP32[$y_coord + ($st << 2) >> 2] | 0; + $5 = +($1 - $3 | 0); + $7 = HEAP32[$x_coord + ($st << 2) >> 2] | 0; + $9 = HEAP32[$x_coord + ($ed << 2) >> 2] | 0; + $11 = +($7 - $9 | 0); + $15 = +((Math_imul($9, $3) | 0) - (Math_imul($7, $1) | 0) | 0); + $16 = $st + 1 | 0; + if (($16 | 0) < ($ed | 0)) { + $dmax$01 = 0.0; + $i$02 = $16; + $v1$03 = $16; + while (1) { + $27 = $15 + ($5 * +(HEAP32[$x_coord + ($i$02 << 2) >> 2] | 0) + $11 * +(HEAP32[$y_coord + ($i$02 << 2) >> 2] | 0)); + $28 = $27 * $27; + $29 = $28 > $dmax$01; + $dmax$1 = $29 ? $28 : $dmax$01; + $v1$1 = $29 ? $i$02 : $v1$03; + $i$02 = $i$02 + 1 | 0; + if (($i$02 | 0) >= ($ed | 0)) { + $dmax$0$lcssa = $dmax$1; + $v1$0$lcssa = $v1$1; + break; + } else { + $dmax$01 = $dmax$1; + $v1$03 = $v1$1; + } + } + } else { + $dmax$0$lcssa = 0.0; + $v1$0$lcssa = $16; + } + if ($dmax$0$lcssa / ($5 * $5 + $11 * $11) > $thresh) if ((_get_vertex($x_coord, $y_coord, $st, $v1$0$lcssa, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else { + $39 = HEAP32[$vnum >> 2] | 0; + if (($39 | 0) > 5) $$0 = -1; else { + HEAP32[$vertex + ($39 << 2) >> 2] = $v1$0$lcssa; + HEAP32[$vnum >> 2] = (HEAP32[$vnum >> 2] | 0) + 1; + if ((_get_vertex($x_coord, $y_coord, $v1$0$lcssa, $ed, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else label = 7; + } + } else label = 7; + if ((label | 0) == 7) $$0 = 0; + return $$0 | 0; +} + +function _setMarkerInfoVertex($id, $markerIndex) { + $id = $id | 0; + $markerIndex = $markerIndex | 0; + var $$0 = 0, $0 = 0, $13 = 0.0, $15 = 0.0, $17 = 0.0, $19 = 0.0, $21 = 0.0, $23 = 0.0, $25 = 0.0, $27 = 0.0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) { + $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0; + $13 = +HEAPF64[33]; + HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3] = $13; + $15 = +HEAPF64[34]; + HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3] = $15; + $17 = +HEAPF64[35]; + HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3] = $17; + $19 = +HEAPF64[36]; + HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3] = $19; + $21 = +HEAPF64[37]; + HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3] = $21; + $23 = +HEAPF64[38]; + HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3] = $23; + $25 = +HEAPF64[39]; + HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3] = $25; + $27 = +HEAPF64[40]; + HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3] = $27; + HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3] = ($13 + $17 + $21 + $25) * .25; + HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3] = ($15 + $19 + $23 + $27) * .25; + $$0 = 0; + break; + } else { + $$0 = HEAP32[523] | 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function ___stdio_read($f, $buf, $len) { + $f = $f | 0; + $buf = $buf | 0; + $len = $len | 0; + var $$0 = 0, $0 = 0, $1 = 0, $15 = 0, $2 = 0, $27 = 0, $30 = 0, $31 = 0, $32 = 0, $7 = 0, $cnt$0 = 0, $iov = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer = sp; + $iov = sp + 32 | 0; + HEAP32[$iov >> 2] = $buf; + $0 = $iov + 4 | 0; + $1 = $f + 48 | 0; + $2 = HEAP32[$1 >> 2] | 0; + HEAP32[$0 >> 2] = $len - (($2 | 0) != 0 & 1); + $7 = $f + 44 | 0; + HEAP32[$iov + 8 >> 2] = HEAP32[$7 >> 2]; + HEAP32[$iov + 12 >> 2] = $2; + if (!(HEAP32[597] | 0)) { + HEAP32[$vararg_buffer3 >> 2] = HEAP32[$f + 60 >> 2]; + HEAP32[$vararg_buffer3 + 4 >> 2] = $iov; + HEAP32[$vararg_buffer3 + 8 >> 2] = 2; + $cnt$0 = ___syscall_ret(___syscall145(145, $vararg_buffer3 | 0) | 0) | 0; + } else { + _pthread_cleanup_push(13, $f | 0); + HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2]; + HEAP32[$vararg_buffer + 4 >> 2] = $iov; + HEAP32[$vararg_buffer + 8 >> 2] = 2; + $15 = ___syscall_ret(___syscall145(145, $vararg_buffer | 0) | 0) | 0; + _pthread_cleanup_pop(0); + $cnt$0 = $15; + } + if (($cnt$0 | 0) < 1) { + HEAP32[$f >> 2] = HEAP32[$f >> 2] | $cnt$0 & 48 ^ 16; + HEAP32[$f + 8 >> 2] = 0; + HEAP32[$f + 4 >> 2] = 0; + $$0 = $cnt$0; + } else { + $27 = HEAP32[$0 >> 2] | 0; + if ($cnt$0 >>> 0 > $27 >>> 0) { + $30 = HEAP32[$7 >> 2] | 0; + $31 = $f + 4 | 0; + HEAP32[$31 >> 2] = $30; + $32 = $30; + HEAP32[$f + 8 >> 2] = $32 + ($cnt$0 - $27); + if (!(HEAP32[$1 >> 2] | 0)) $$0 = $len; else { + HEAP32[$31 >> 2] = $32 + 1; + HEAP8[$buf + ($len + -1) >> 0] = HEAP8[$32 >> 0] | 0; + $$0 = $len; + } + } else $$0 = $cnt$0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $dst_ptr = $dst_ptr | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $10 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $9 = 0, $p$0 = 0; + if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else { + $3 = $info + 52 | 0; + $4 = HEAP8[$3 >> 0] | 0; + $5 = $info + 53 | 0; + $6 = HEAP8[$5 >> 0] | 0; + $9 = HEAP32[$this + 12 >> 2] | 0; + $10 = $this + 16 + ($9 << 3) | 0; + HEAP8[$3 >> 0] = 0; + HEAP8[$5 >> 0] = 0; + __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this + 16 | 0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp); + L4 : do if (($9 | 0) > 1) { + $13 = $info + 24 | 0; + $14 = $this + 8 | 0; + $15 = $info + 54 | 0; + $p$0 = $this + 24 | 0; + do { + if (HEAP8[$15 >> 0] | 0) break L4; + if (!(HEAP8[$3 >> 0] | 0)) { + if (HEAP8[$5 >> 0] | 0) if (!(HEAP32[$14 >> 2] & 1)) break L4; + } else { + if ((HEAP32[$13 >> 2] | 0) == 1) break L4; + if (!(HEAP32[$14 >> 2] & 2)) break L4; + } + HEAP8[$3 >> 0] = 0; + HEAP8[$5 >> 0] = 0; + __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp); + $p$0 = $p$0 + 8 | 0; + } while ($p$0 >>> 0 < $10 >>> 0); + } while (0); + HEAP8[$3 >> 0] = $4; + HEAP8[$5 >> 0] = $6; + } + return; +} + +function _teardown($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $13 = 0, $16 = 0, $3 = 0, $4 = 0, $5 = 0, $i$02 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $4 = $3 + 196 | 0; + $5 = HEAP32[$4 >> 2] | 0; + if ($5) { + _free($5); + HEAP32[$4 >> 2] = 0; + HEAP32[$3 + 200 >> 2] = 0; + } + _deleteHandle($3); + _arPattDeleteHandle(HEAP32[$3 + 216 >> 2] | 0) | 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_(2044, $0) | 0; + $10 = $3 + 248 | 0; + $11 = $3 + 252 | 0; + $13 = HEAP32[$10 >> 2] | 0; + if ((HEAP32[$11 >> 2] | 0) != ($13 | 0)) { + $16 = $13; + $i$02 = 0; + do { + _arMultiFreeConfig(HEAP32[$16 + ($i$02 << 3) + 4 >> 2] | 0) | 0; + $i$02 = $i$02 + 1 | 0; + $16 = HEAP32[$10 >> 2] | 0; + } while ($i$02 >>> 0 < (HEAP32[$11 >> 2] | 0) - $16 >> 3 >>> 0); + } + __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($10); + __ZdlPv($10); + __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($3 + 248 | 0); + __ZdlPv($3); + $$0 = 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) { + $first = $first | 0; + $last = $last | 0; + $db = $db | 0; + var $$0 = 0, $1 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $22 = 0, $3 = 0, $5 = 0, $6 = 0, $args = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $args = sp; + if (($first | 0) == ($last | 0)) $$0 = $first; else { + $1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0; + if (($1 | 0) == ($first | 0)) $$0 = $first; else { + $3 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1, $last, $db) | 0; + if (($3 | 0) == ($1 | 0)) $$0 = $1; else { + $5 = $db + 4 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if ((($6 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else { + __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $6 + -24 | 0); + $14 = HEAP32[$5 >> 2] | 0; + $15 = $14 + -24 | 0; + $17 = $14; + do { + $16 = $17 + -24 | 0; + HEAP32[$5 >> 2] = $16; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16); + $17 = HEAP32[$5 >> 2] | 0; + } while (($17 | 0) != ($15 | 0)); + $20 = HEAP8[$args >> 0] | 0; + $22 = ($20 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($14 + -48 | 0, $22 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $22 ? ($20 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args); + $$0 = $3; + } + } + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arMatrixMul($dest, $a, $b) { + $dest = $dest | 0; + $a = $a | 0; + $b = $b | 0; + var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $19 = 0, $20 = 0, $29 = 0.0, $6 = 0, $c$04 = 0, $i$01 = 0, $p1$02 = 0, $p2$03 = 0, $p3$09 = 0, $p3$15 = 0, $r$08 = 0, $smax = 0; + $1 = HEAP32[$a + 8 >> 2] | 0; + if (($1 | 0) == (HEAP32[$b + 4 >> 2] | 0)) { + $6 = HEAP32[$dest + 4 >> 2] | 0; + if (($6 | 0) == (HEAP32[$a + 4 >> 2] | 0)) { + $11 = HEAP32[$dest + 8 >> 2] | 0; + if (($11 | 0) == (HEAP32[$b + 8 >> 2] | 0)) { + $smax = ($11 | 0) > 0 ? $11 : 0; + if (($6 | 0) > 0) { + $18 = ($11 | 0) > 0; + $19 = ($1 | 0) > 0; + $p3$09 = HEAP32[$dest >> 2] | 0; + $r$08 = 0; + while (1) { + $20 = Math_imul($1, $r$08) | 0; + if ($18) { + $c$04 = 0; + $p3$15 = $p3$09; + while (1) { + HEAPF64[$p3$15 >> 3] = 0.0; + if ($19) { + $29 = 0.0; + $i$01 = 0; + $p1$02 = (HEAP32[$a >> 2] | 0) + ($20 << 3) | 0; + $p2$03 = (HEAP32[$b >> 2] | 0) + ($c$04 << 3) | 0; + while (1) { + $29 = $29 + +HEAPF64[$p1$02 >> 3] * +HEAPF64[$p2$03 >> 3]; + HEAPF64[$p3$15 >> 3] = $29; + $i$01 = $i$01 + 1 | 0; + if (($i$01 | 0) >= ($1 | 0)) break; else { + $p1$02 = $p1$02 + 8 | 0; + $p2$03 = $p2$03 + ($11 << 3) | 0; + } + } + } + $c$04 = $c$04 + 1 | 0; + if (($c$04 | 0) >= ($11 | 0)) break; else $p3$15 = $p3$15 + 8 | 0; + } + } + $r$08 = $r$08 + 1 | 0; + if (($r$08 | 0) >= ($6 | 0)) { + $$0 = 0; + break; + } else $p3$09 = $p3$09 + ($smax << 3) | 0; + } + } else $$0 = 0; + } else $$0 = -1; + } else $$0 = -1; + } else $$0 = -1; + return $$0 | 0; +} + +function __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($this, $__v) { + $this = $this | 0; + $__v = $__v | 0; + var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0; + $0 = HEAP32[$this >> 2] | 0; + $1 = $this + 4 | 0; + $2 = HEAP32[$1 >> 2] | 0; + $3 = $__v + 4 | 0; + if (($2 | 0) != ($0 | 0)) { + $$0$i1 = $2; + do { + $5 = HEAP32[$3 >> 2] | 0; + $6 = $5 + -16 | 0; + $$0$i1$looptemp = $$0$i1; + $$0$i1 = $$0$i1 + -16 | 0; + HEAP32[$6 >> 2] = 0; + $9 = $5 + -12 | 0; + HEAP32[$9 >> 2] = 0; + $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0; + HEAP32[$5 + -8 >> 2] = 0; + HEAP32[$5 + -4 >> 2] = $11; + HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2]; + $14 = $$0$i1$looptemp + -12 | 0; + HEAP32[$9 >> 2] = HEAP32[$14 >> 2]; + $16 = $$0$i1$looptemp + -8 | 0; + HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2]; + HEAP32[$16 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$$0$i1 >> 2] = 0; + HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16; + } while (($$0$i1 | 0) != ($0 | 0)); + } + $22 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = HEAP32[$3 >> 2]; + HEAP32[$3 >> 2] = $22; + $24 = $__v + 8 | 0; + $25 = HEAP32[$1 >> 2] | 0; + HEAP32[$1 >> 2] = HEAP32[$24 >> 2]; + HEAP32[$24 >> 2] = $25; + $27 = $this + 8 | 0; + $28 = $__v + 12 | 0; + $29 = HEAP32[$27 >> 2] | 0; + HEAP32[$27 >> 2] = HEAP32[$28 >> 2]; + HEAP32[$28 >> 2] = $29; + HEAP32[$__v >> 2] = HEAP32[$3 >> 2]; + return; +} + +function _strspn($s, $c) { + $s = $s | 0; + $c = $c | 0; + var $$0 = 0, $$028 = 0, $$03 = 0, $$03$lcssa = 0, $$1$lcssa = 0, $$16 = 0, $0 = 0, $11 = 0, $14 = 0, $18 = 0, $24 = 0, $33 = 0, $byteset = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $byteset = sp; + HEAP32[$byteset >> 2] = 0; + HEAP32[$byteset + 4 >> 2] = 0; + HEAP32[$byteset + 8 >> 2] = 0; + HEAP32[$byteset + 12 >> 2] = 0; + HEAP32[$byteset + 16 >> 2] = 0; + HEAP32[$byteset + 20 >> 2] = 0; + HEAP32[$byteset + 24 >> 2] = 0; + HEAP32[$byteset + 28 >> 2] = 0; + $0 = HEAP8[$c >> 0] | 0; + do if (!($0 << 24 >> 24)) $$0 = 0; else { + if (!(HEAP8[$c + 1 >> 0] | 0)) { + $$03 = $s; + while (1) if ((HEAP8[$$03 >> 0] | 0) == $0 << 24 >> 24) $$03 = $$03 + 1 | 0; else { + $$03$lcssa = $$03; + break; + } + $$0 = $$03$lcssa - $s | 0; + break; + } else { + $$028 = $c; + $14 = $0; + } + do { + $18 = $byteset + ((($14 & 255) >>> 5 & 255) << 2) | 0; + HEAP32[$18 >> 2] = HEAP32[$18 >> 2] | 1 << ($14 & 31); + $$028 = $$028 + 1 | 0; + $14 = HEAP8[$$028 >> 0] | 0; + } while ($14 << 24 >> 24 != 0); + $11 = HEAP8[$s >> 0] | 0; + L10 : do if (!($11 << 24 >> 24)) $$1$lcssa = $s; else { + $$16 = $s; + $24 = $11; + while (1) { + if (!(HEAP32[$byteset + ((($24 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($24 & 31))) { + $$1$lcssa = $$16; + break L10; + } + $33 = $$16 + 1 | 0; + $24 = HEAP8[$33 >> 0] | 0; + if (!($24 << 24 >> 24)) { + $$1$lcssa = $33; + break; + } else $$16 = $33; + } + } while (0); + $$0 = $$1$lcssa - $s | 0; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arLog($logLevel, $format, $varargs) { + $logLevel = $logLevel | 0; + $format = $format | 0; + $varargs = $varargs | 0; + var $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $5 = 0, $7 = 0, $ap = 0, $buf = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $buf = sp + 16 | 0; + $ap = sp; + HEAP32[$buf >> 2] = 0; + if (($format | 0) != 0 & (HEAP32[496] | 0) <= ($logLevel | 0)) if (HEAP8[$format >> 0] | 0) { + HEAP32[$ap >> 2] = $varargs; + $5 = _vasprintf($buf, $format, $ap) | 0; + if (($5 | 0) > -1) { + $7 = HEAP32[497] | 0; + do if (!$7) _fputs(HEAP32[$buf >> 2] | 0, HEAP32[659] | 0) | 0; else { + if (!(HEAP32[498] | 0)) { + FUNCTION_TABLE_vi[$7 & 15](HEAP32[$buf >> 2] | 0); + break; + } + $12 = _pthread_self() | 0; + $15 = HEAP32[500] | 0; + if (($12 | 0) == (HEAP32[499] | 0)) { + if (($15 | 0) > 0) { + FUNCTION_TABLE_vi[$7 & 15](HEAP32[502] | 0); + HEAP32[500] = 0; + $29 = HEAP32[497] | 0; + } else $29 = $7; + FUNCTION_TABLE_vi[$29 & 15](HEAP32[$buf >> 2] | 0); + break; + } + $16 = HEAP32[501] | 0; + if (($15 | 0) < ($16 | 0)) { + $21 = (HEAP32[502] | 0) + $15 | 0; + if (($5 | 0) < (-3 - $15 + $16 | 0)) { + _strcpy($21, HEAP32[$buf >> 2] | 0) | 0; + HEAP32[500] = (HEAP32[500] | 0) + $5; + break; + } else { + HEAP8[$21 >> 0] = 46; + HEAP8[$21 + 1 >> 0] = 46; + HEAP8[$21 + 2 >> 0] = 46; + HEAP8[$21 + 3 >> 0] = 0; + HEAP32[500] = HEAP32[501]; + break; + } + } + } while (0); + _free(HEAP32[$buf >> 2] | 0); + } + } + STACKTOP = sp; + return; +} + +function __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($this, $__v) { + $this = $this | 0; + $__v = $__v | 0; + var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0; + $0 = HEAP32[$this >> 2] | 0; + $1 = $this + 4 | 0; + $2 = HEAP32[$1 >> 2] | 0; + $3 = $__v + 4 | 0; + if (($2 | 0) != ($0 | 0)) { + $$0$i1 = $2; + do { + $5 = HEAP32[$3 >> 2] | 0; + $6 = $5 + -16 | 0; + $$0$i1$looptemp = $$0$i1; + $$0$i1 = $$0$i1 + -16 | 0; + HEAP32[$6 >> 2] = 0; + $9 = $5 + -12 | 0; + HEAP32[$9 >> 2] = 0; + $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0; + HEAP32[$5 + -8 >> 2] = 0; + HEAP32[$5 + -4 >> 2] = $11; + HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2]; + $14 = $$0$i1$looptemp + -12 | 0; + HEAP32[$9 >> 2] = HEAP32[$14 >> 2]; + $16 = $$0$i1$looptemp + -8 | 0; + HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2]; + HEAP32[$16 >> 2] = 0; + HEAP32[$14 >> 2] = 0; + HEAP32[$$0$i1 >> 2] = 0; + HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16; + } while (($$0$i1 | 0) != ($0 | 0)); + } + $22 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = HEAP32[$3 >> 2]; + HEAP32[$3 >> 2] = $22; + $24 = $__v + 8 | 0; + $25 = HEAP32[$1 >> 2] | 0; + HEAP32[$1 >> 2] = HEAP32[$24 >> 2]; + HEAP32[$24 >> 2] = $25; + $27 = $this + 8 | 0; + $28 = $__v + 12 | 0; + $29 = HEAP32[$27 >> 2] | 0; + HEAP32[$27 >> 2] = HEAP32[$28 >> 2]; + HEAP32[$28 >> 2] = $29; + HEAP32[$__v >> 2] = HEAP32[$3 >> 2]; + return; +} + +function _getMultiEachMarkerInfo($id, $multiMarkerId, $markerIndex) { + $id = $id | 0; + $multiMarkerId = $multiMarkerId | 0; + $markerIndex = $markerIndex | 0; + var $$0 = 0, $0 = 0, $17 = 0, $23 = 0, $4 = 0, $8 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $8 = HEAP32[$4 + 248 >> 2] | 0; + if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) { + $$0 = HEAP32[524] | 0; + break; + } + $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0; + if (($markerIndex | 0) < 0 ? 1 : (HEAP32[$17 + 4 >> 2] | 0) <= ($markerIndex | 0)) { + $$0 = HEAP32[523] | 0; + break; + } else { + $23 = HEAP32[$17 >> 2] | 0; + _matrixCopy($23 + ($markerIndex * 320 | 0) + 16 | 0, 264); + _emscripten_asm_const_4(0, HEAP32[$23 + ($markerIndex * 320 | 0) + 304 >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) + 4 >> 2] | 0, +(+HEAPF64[$23 + ($markerIndex * 320 | 0) + 8 >> 3])) | 0; + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_($this, $__first, $__last) { + $this = $this | 0; + $__first = $__first | 0; + $__last = $__last | 0; + var $$03 = 0, $0 = 0, $1 = 0, $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $34 = 0, $41 = 0, $8 = 0, $__p$04 = 0, $scevgep1 = 0; + $0 = $__first; + $1 = HEAP8[$this >> 0] | 0; + if (!($1 & 1)) { + $15 = 10; + $16 = ($1 & 255) >>> 1; + $41 = $1; + } else { + $8 = HEAP32[$this >> 2] | 0; + $15 = ($8 & -2) + -1 | 0; + $16 = HEAP32[$this + 4 >> 2] | 0; + $41 = $8 & 255; + } + $12 = $__last - $0 | 0; + do if (($__last | 0) != ($__first | 0)) { + if (($15 - $16 | 0) >>> 0 < $12 >>> 0) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $15, $16 + $12 - $15 | 0, $16, $16, 0); + $21 = HEAP8[$this >> 0] | 0; + } else $21 = $41; + if (!($21 & 1)) $29 = $this + 1 | 0; else $29 = HEAP32[$this + 8 >> 2] | 0; + $scevgep1 = $__last + ($16 - $0) | 0; + if (($__first | 0) != ($__last | 0)) { + $$03 = $__first; + $__p$04 = $29 + $16 | 0; + while (1) { + HEAP8[$__p$04 >> 0] = HEAP8[$$03 >> 0] | 0; + $$03 = $$03 + 1 | 0; + if (($$03 | 0) == ($__last | 0)) break; else $__p$04 = $__p$04 + 1 | 0; + } + } + HEAP8[$29 + $scevgep1 >> 0] = 0; + $34 = $16 + $12 | 0; + if (!(HEAP8[$this >> 0] & 1)) { + HEAP8[$this >> 0] = $34 << 1; + break; + } else { + HEAP32[$this + 4 >> 2] = $34; + break; + } + } while (0); + return; +} + +function _fread($destv, $size, $nmemb, $f) { + $destv = $destv | 0; + $size = $size | 0; + $nmemb = $nmemb | 0; + $f = $f | 0; + var $$ = 0, $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $28 = 0, $32 = 0, $5 = 0, $7 = 0, $dest$0$ph = 0, $dest$02 = 0, $l$0$ph = 0, $l$03 = 0, $l$03$lcssa = 0, label = 0; + $0 = Math_imul($nmemb, $size) | 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) $32 = ___lockfile($f) | 0; else $32 = 0; + $5 = $f + 74 | 0; + $7 = HEAP8[$5 >> 0] | 0; + HEAP8[$5 >> 0] = $7 + 255 | $7; + $13 = $f + 4 | 0; + $14 = HEAP32[$13 >> 2] | 0; + $17 = (HEAP32[$f + 8 >> 2] | 0) - $14 | 0; + if (($17 | 0) > 0) { + $$ = $17 >>> 0 < $0 >>> 0 ? $17 : $0; + _memcpy($destv | 0, $14 | 0, $$ | 0) | 0; + HEAP32[$13 >> 2] = $14 + $$; + $dest$0$ph = $destv + $$ | 0; + $l$0$ph = $0 - $$ | 0; + } else { + $dest$0$ph = $destv; + $l$0$ph = $0; + } + L7 : do if (!$l$0$ph) label = 13; else { + $24 = $f + 32 | 0; + $dest$02 = $dest$0$ph; + $l$03 = $l$0$ph; + while (1) { + if (___toread($f) | 0) { + $l$03$lcssa = $l$03; + break; + } + $28 = FUNCTION_TABLE_iiii[HEAP32[$24 >> 2] & 15]($f, $dest$02, $l$03) | 0; + if (($28 + 1 | 0) >>> 0 < 2) { + $l$03$lcssa = $l$03; + break; + } + if (($l$03 | 0) == ($28 | 0)) { + label = 13; + break L7; + } else { + $dest$02 = $dest$02 + $28 | 0; + $l$03 = $l$03 - $28 | 0; + } + } + if ($32) ___unlockfile($f); + $$0 = (($0 - $l$03$lcssa | 0) >>> 0) / ($size >>> 0) | 0; + } while (0); + if ((label | 0) == 13) if (!$32) $$0 = $nmemb; else { + ___unlockfile($f); + $$0 = $nmemb; + } + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, $__n) { + $this = $this | 0; + $__pos = $__pos | 0; + $__s = $__s | 0; + $__n = $__n | 0; + var $$1 = 0, $$pre$phiZ2D = 0, $0 = 0, $13 = 0, $17 = 0, $2 = 0, $23 = 0, $25 = 0, $31 = 0, $8 = 0, $9 = 0; + $0 = HEAP8[$this >> 0] | 0; + $2 = ($0 & 1) == 0; + if ($2) $8 = ($0 & 255) >>> 1; else $8 = HEAP32[$this + 4 >> 2] | 0; + if ($8 >>> 0 < $__pos >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this); + if ($2) { + $13 = 10; + $17 = $0; + } else { + $9 = HEAP32[$this >> 2] | 0; + $13 = ($9 & -2) + -1 | 0; + $17 = $9 & 255; + } + if (($13 - $8 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $13, $8 + $__n - $13 | 0, $8, $__pos, 0, $__n, $__s); else if ($__n) { + if (!($17 & 1)) $23 = $this + 1 | 0; else $23 = HEAP32[$this + 8 >> 2] | 0; + if (($8 | 0) == ($__pos | 0)) { + $$1 = $__s; + $$pre$phiZ2D = $23 + $__pos | 0; + } else { + $25 = $23 + $__pos | 0; + _memmove($23 + ($__n + $__pos) | 0, $25 | 0, $8 - $__pos | 0) | 0; + $$1 = $25 >>> 0 <= $__s >>> 0 & ($23 + $8 | 0) >>> 0 > $__s >>> 0 ? $__s + $__n | 0 : $__s; + $$pre$phiZ2D = $25; + } + _memmove($$pre$phiZ2D | 0, $$1 | 0, $__n | 0) | 0; + $31 = $8 + $__n | 0; + if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $31 << 1; else HEAP32[$this + 4 >> 2] = $31; + HEAP8[$23 + $31 >> 0] = 0; + } + return $this | 0; +} + +function _arUtilMatInv($s, $d) { + $s = $s | 0; + $d = $d | 0; + var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $23 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $4 = 0, $5 = 0, $j$08 = 0, $j$16 = 0; + $0 = _arMatrixAlloc(4, 4) | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = HEAP32[$0 >> 2] | 0; + $3 = HEAP32[$0 >> 2] | 0; + $4 = HEAP32[$0 >> 2] | 0; + $j$08 = 0; + do { + $5 = $j$08 << 2; + HEAPF64[$1 + ($5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) >> 3]; + HEAPF64[$2 + (1 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 8 >> 3]; + HEAPF64[$3 + (2 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 16 >> 3]; + HEAPF64[$4 + (3 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 24 >> 3]; + $j$08 = $j$08 + 1 | 0; + } while (($j$08 | 0) != 3); + $22 = HEAP32[$0 >> 2] | 0; + $23 = $22 + 96 | 0; + HEAP32[$23 >> 2] = 0; + HEAP32[$23 + 4 >> 2] = 0; + HEAP32[$23 + 8 >> 2] = 0; + HEAP32[$23 + 12 >> 2] = 0; + HEAP32[$23 + 16 >> 2] = 0; + HEAP32[$23 + 20 >> 2] = 0; + HEAPF64[$22 + 120 >> 3] = 1.0; + _arMatrixSelfInv($0) | 0; + $25 = HEAP32[$0 >> 2] | 0; + $26 = HEAP32[$0 >> 2] | 0; + $27 = HEAP32[$0 >> 2] | 0; + $28 = HEAP32[$0 >> 2] | 0; + $j$16 = 0; + do { + $29 = $j$16 << 2; + HEAPF64[$d + ($j$16 << 5) >> 3] = +HEAPF64[$25 + ($29 << 3) >> 3]; + HEAPF64[$d + ($j$16 << 5) + 8 >> 3] = +HEAPF64[$26 + (1 + $29 << 3) >> 3]; + HEAPF64[$d + ($j$16 << 5) + 16 >> 3] = +HEAPF64[$27 + (2 + $29 << 3) >> 3]; + HEAPF64[$d + ($j$16 << 5) + 24 >> 3] = +HEAPF64[$28 + (3 + $29 << 3) >> 3]; + $j$16 = $j$16 + 1 | 0; + } while (($j$16 | 0) != 3); + _arMatrixFree($0) | 0; + return 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($first, $last) { + $first = $first | 0; + $last = $last | 0; + var $$0 = 0, $$lcssa = 0, $1 = 0, $11 = 0, $3 = 0, $5 = 0, $9 = 0, $first$pn = 0, $t1$016 = 0, $t1$016$lcssa = 0, $t11$0 = 0; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else { + $1 = HEAP8[$first >> 0] | 0; + if ($1 << 24 >> 24 != 95) { + if ((($1 << 24 >> 24) + -48 | 0) >>> 0 < 10) $first$pn = $first; else { + $$0 = $first; + break; + } + while (1) { + $t11$0 = $first$pn + 1 | 0; + if (($t11$0 | 0) == ($last | 0)) { + $$0 = $last; + break L1; + } + if (((HEAP8[$t11$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $first$pn = $t11$0; else { + $$0 = $t11$0; + break L1; + } + } + } + $3 = $first + 1 | 0; + if (($3 | 0) == ($last | 0)) $$0 = $first; else { + $5 = HEAP8[$3 >> 0] | 0; + if ((($5 << 24 >> 24) + -48 | 0) >>> 0 < 10) { + $$0 = $first + 2 | 0; + break; + } + if ($5 << 24 >> 24 == 95) { + $9 = $first + 2 | 0; + if (($9 | 0) == ($last | 0)) $$0 = $first; else { + $t1$016 = $9; + while (1) { + $11 = HEAP8[$t1$016 >> 0] | 0; + if ((($11 << 24 >> 24) + -48 | 0) >>> 0 >= 10) { + $$lcssa = $11; + $t1$016$lcssa = $t1$016; + break; + } + $t1$016 = $t1$016 + 1 | 0; + if (($t1$016 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + } + return ($$lcssa << 24 >> 24 == 95 ? $t1$016$lcssa + 1 | 0 : $first) | 0; + } + } else $$0 = $first; + } + } while (0); + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_del, $__n_add, $__p_new_stuff) { + $this = $this | 0; + $__old_cap = $__old_cap | 0; + $__delta_cap = $__delta_cap | 0; + $__old_sz = $__old_sz | 0; + $__n_copy = $__n_copy | 0; + $__n_del = $__n_del | 0; + $__n_add = $__n_add | 0; + $__p_new_stuff = $__p_new_stuff | 0; + var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $23 = 0, $31 = 0, $9 = 0; + if ((-18 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this); + if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0; + if ($__old_cap >>> 0 < 2147483623) { + $9 = $__delta_cap + $__old_cap | 0; + $10 = $__old_cap << 1; + $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9; + $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16; + } else $17 = -17; + $18 = _malloc($17) | 0; + if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0; + if ($__n_add) _memcpy($18 + $__n_copy | 0, $__p_new_stuff | 0, $__n_add | 0) | 0; + $23 = $__old_sz - $__n_del | 0; + if (($23 | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + ($__n_del + $__n_copy) | 0, $23 - $__n_copy | 0) | 0; + if (($__old_cap | 0) != 10) _free($20); + HEAP32[$this + 8 >> 2] = $18; + HEAP32[$this >> 2] = $17 | 1; + $31 = $23 + $__n_add | 0; + HEAP32[$this + 4 >> 2] = $31; + HEAP8[$18 + $31 >> 0] = 0; + return; +} + +function _strcspn($s, $c) { + $s = $s | 0; + $c = $c | 0; + var $$0 = 0, $$027 = 0, $$03$lcssa = 0, $$035 = 0, $0 = 0, $10 = 0, $13 = 0, $17 = 0, $23 = 0, $32 = 0, $byteset = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $byteset = sp; + $0 = HEAP8[$c >> 0] | 0; + if (!($0 << 24 >> 24)) label = 3; else if (!(HEAP8[$c + 1 >> 0] | 0)) label = 3; else { + HEAP32[$byteset >> 2] = 0; + HEAP32[$byteset + 4 >> 2] = 0; + HEAP32[$byteset + 8 >> 2] = 0; + HEAP32[$byteset + 12 >> 2] = 0; + HEAP32[$byteset + 16 >> 2] = 0; + HEAP32[$byteset + 20 >> 2] = 0; + HEAP32[$byteset + 24 >> 2] = 0; + HEAP32[$byteset + 28 >> 2] = 0; + $$027 = $c; + $13 = $0; + do { + $17 = $byteset + ((($13 & 255) >>> 5 & 255) << 2) | 0; + HEAP32[$17 >> 2] = HEAP32[$17 >> 2] | 1 << ($13 & 31); + $$027 = $$027 + 1 | 0; + $13 = HEAP8[$$027 >> 0] | 0; + } while ($13 << 24 >> 24 != 0); + $10 = HEAP8[$s >> 0] | 0; + L7 : do if (!($10 << 24 >> 24)) $$03$lcssa = $s; else { + $$035 = $s; + $23 = $10; + while (1) { + if (HEAP32[$byteset + ((($23 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($23 & 31)) { + $$03$lcssa = $$035; + break L7; + } + $32 = $$035 + 1 | 0; + $23 = HEAP8[$32 >> 0] | 0; + if (!($23 << 24 >> 24)) { + $$03$lcssa = $32; + break; + } else $$035 = $32; + } + } while (0); + $$0 = $$03$lcssa - $s | 0; + } + if ((label | 0) == 3) $$0 = (___strchrnul($s, $0 << 24 >> 24) | 0) - $s | 0; + STACKTOP = sp; + return $$0 | 0; +} + +function ___strchrnul($s, $c) { + $s = $s | 0; + $c = $c | 0; + var $$0 = 0, $$02$lcssa = 0, $$0211 = 0, $$1 = 0, $0 = 0, $11 = 0, $15 = 0, $16 = 0, $22 = 0, $23 = 0, $29 = 0, $36 = 0, $37 = 0, $5 = 0, $8 = 0, $w$0$lcssa = 0, $w$08 = 0; + $0 = $c & 255; + L1 : do if (!$0) $$0 = $s + (_strlen($s) | 0) | 0; else { + if (!($s & 3)) $$02$lcssa = $s; else { + $5 = $c & 255; + $$0211 = $s; + while (1) { + $8 = HEAP8[$$0211 >> 0] | 0; + if ($8 << 24 >> 24 == 0 ? 1 : $8 << 24 >> 24 == $5 << 24 >> 24) { + $$0 = $$0211; + break L1; + } + $11 = $$0211 + 1 | 0; + if (!($11 & 3)) { + $$02$lcssa = $11; + break; + } else $$0211 = $11; + } + } + $15 = Math_imul($0, 16843009) | 0; + $16 = HEAP32[$$02$lcssa >> 2] | 0; + L10 : do if (!(($16 & -2139062144 ^ -2139062144) & $16 + -16843009)) { + $23 = $16; + $w$08 = $$02$lcssa; + while (1) { + $22 = $23 ^ $15; + if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) { + $w$0$lcssa = $w$08; + break L10; + } + $29 = $w$08 + 4 | 0; + $23 = HEAP32[$29 >> 2] | 0; + if (($23 & -2139062144 ^ -2139062144) & $23 + -16843009) { + $w$0$lcssa = $29; + break; + } else $w$08 = $29; + } + } else $w$0$lcssa = $$02$lcssa; while (0); + $36 = $c & 255; + $$1 = $w$0$lcssa; + while (1) { + $37 = HEAP8[$$1 >> 0] | 0; + if ($37 << 24 >> 24 == 0 ? 1 : $37 << 24 >> 24 == $36 << 24 >> 24) { + $$0 = $$1; + break; + } else $$1 = $$1 + 1 | 0; + } + } while (0); + return $$0 | 0; +} + +function _arGetTransMatRobust($handle, $initConv, $pos2d, $pos3d, $num, $conv) { + $handle = $handle | 0; + $initConv = $initConv | 0; + $pos2d = $pos2d | 0; + $pos3d = $pos3d | 0; + $num = $num | 0; + $conv = $conv | 0; + var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $data = sp + 20 | 0; + $err = sp; + $1 = _malloc($num << 4) | 0; + HEAP32[$data >> 2] = $1; + if (!$1) { + _arLog(3, 5471, sp + 8 | 0); + _exit(1); + } + $4 = _malloc($num * 24 | 0) | 0; + $5 = $data + 4 | 0; + HEAP32[$5 >> 2] = $4; + if (!$4) { + _arLog(3, 5471, sp + 16 | 0); + _exit(1); + } + if (($num | 0) > 0) { + $i$01 = 0; + do { + HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3]; + HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3]; + $i$01 = $i$01 + 1 | 0; + } while (($i$01 | 0) < ($num | 0)); + } + HEAP32[$data + 8 >> 2] = $num; + if ((_icpPointRobust(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8; + _free(HEAP32[$data >> 2] | 0); + _free(HEAP32[$5 >> 2] | 0); + STACKTOP = sp; + return +(+HEAPF64[$err >> 3]); +} + +function _arGetTransMat($handle, $initConv, $pos2d, $pos3d, $num, $conv) { + $handle = $handle | 0; + $initConv = $initConv | 0; + $pos2d = $pos2d | 0; + $pos3d = $pos3d | 0; + $num = $num | 0; + $conv = $conv | 0; + var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $data = sp + 20 | 0; + $err = sp; + $1 = _malloc($num << 4) | 0; + HEAP32[$data >> 2] = $1; + if (!$1) { + _arLog(3, 5471, sp + 8 | 0); + _exit(1); + } + $4 = _malloc($num * 24 | 0) | 0; + $5 = $data + 4 | 0; + HEAP32[$5 >> 2] = $4; + if (!$4) { + _arLog(3, 5471, sp + 16 | 0); + _exit(1); + } + if (($num | 0) > 0) { + $i$01 = 0; + do { + HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3]; + HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3]; + HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3]; + $i$01 = $i$01 + 1 | 0; + } while (($i$01 | 0) < ($num | 0)); + } + HEAP32[$data + 8 >> 2] = $num; + if ((_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8; + _free(HEAP32[$data >> 2] | 0); + _free(HEAP32[$5 >> 2] | 0); + STACKTOP = sp; + return +(+HEAPF64[$err >> 3]); +} + +function ___fwritex($s, $l, $f) { + $s = $s | 0; + $l = $l | 0; + $f = $f | 0; + var $$0 = 0, $$01 = 0, $$02 = 0, $0 = 0, $1 = 0, $19 = 0, $29 = 0, $5 = 0, $6 = 0, $8 = 0, $i$0 = 0, $i$0$lcssa10 = 0, $i$1 = 0, label = 0; + $0 = $f + 16 | 0; + $1 = HEAP32[$0 >> 2] | 0; + if (!$1) if (!(___towrite($f) | 0)) { + $8 = HEAP32[$0 >> 2] | 0; + label = 4; + } else $$0 = 0; else { + $8 = $1; + label = 4; + } + L4 : do if ((label | 0) == 4) { + $5 = $f + 20 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if (($8 - $6 | 0) >>> 0 < $l >>> 0) { + $$0 = FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $l) | 0; + break; + } + L9 : do if ((HEAP8[$f + 75 >> 0] | 0) > -1) { + $i$0 = $l; + while (1) { + if (!$i$0) { + $$01 = $l; + $$02 = $s; + $29 = $6; + $i$1 = 0; + break L9; + } + $19 = $i$0 + -1 | 0; + if ((HEAP8[$s + $19 >> 0] | 0) == 10) { + $i$0$lcssa10 = $i$0; + break; + } else $i$0 = $19; + } + if ((FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $i$0$lcssa10) | 0) >>> 0 < $i$0$lcssa10 >>> 0) { + $$0 = $i$0$lcssa10; + break L4; + } + $$01 = $l - $i$0$lcssa10 | 0; + $$02 = $s + $i$0$lcssa10 | 0; + $29 = HEAP32[$5 >> 2] | 0; + $i$1 = $i$0$lcssa10; + } else { + $$01 = $l; + $$02 = $s; + $29 = $6; + $i$1 = 0; + } while (0); + _memcpy($29 | 0, $$02 | 0, $$01 | 0) | 0; + HEAP32[$5 >> 2] = (HEAP32[$5 >> 2] | 0) + $$01; + $$0 = $i$1 + $$01 | 0; + } while (0); + return $$0 | 0; +} + +function ___shgetc($f) { + $f = $f | 0; + var $$0 = 0, $$phi$trans$insert = 0, $$pre = 0, $$pre4 = 0, $0 = 0, $1 = 0, $12 = 0, $14 = 0, $15 = 0, $21 = 0, $26 = 0, $28 = 0, $31 = 0, $36 = 0, $41 = 0, $6 = 0, $9 = 0, label = 0; + $0 = $f + 104 | 0; + $1 = HEAP32[$0 >> 2] | 0; + if (!$1) label = 3; else if ((HEAP32[$f + 108 >> 2] | 0) < ($1 | 0)) label = 3; else label = 4; + if ((label | 0) == 3) { + $6 = ___uflow($f) | 0; + if (($6 | 0) < 0) label = 4; else { + $9 = HEAP32[$0 >> 2] | 0; + $$phi$trans$insert = $f + 8 | 0; + if (!$9) { + $$pre = HEAP32[$$phi$trans$insert >> 2] | 0; + $26 = $$pre; + $41 = $$pre; + label = 9; + } else { + $12 = HEAP32[$$phi$trans$insert >> 2] | 0; + $14 = HEAP32[$f + 4 >> 2] | 0; + $15 = $12; + $21 = $9 - (HEAP32[$f + 108 >> 2] | 0) + -1 | 0; + if (($15 - $14 | 0) > ($21 | 0)) { + HEAP32[$f + 100 >> 2] = $14 + $21; + $28 = $12; + } else { + $26 = $15; + $41 = $12; + label = 9; + } + } + if ((label | 0) == 9) { + HEAP32[$f + 100 >> 2] = $26; + $28 = $41; + } + $$pre4 = HEAP32[$f + 4 >> 2] | 0; + if ($28) { + $31 = $f + 108 | 0; + HEAP32[$31 >> 2] = $28 + 1 - $$pre4 + (HEAP32[$31 >> 2] | 0); + } + $36 = $$pre4 + -1 | 0; + if ((HEAPU8[$36 >> 0] | 0 | 0) == ($6 | 0)) $$0 = $6; else { + HEAP8[$36 >> 0] = $6; + $$0 = $6; + } + } + } + if ((label | 0) == 4) { + HEAP32[$f + 100 >> 2] = 0; + $$0 = -1; + } + return $$0 | 0; +} + +function _arSetLabelingThreshMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0, $1 = 0, $13 = 0, $4 = 0, $5 = 0, $mode1$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + if (!$handle) $$0 = -1; else { + $1 = $handle + 7062388 | 0; + if ((HEAP32[$1 >> 2] | 0) == ($mode | 0)) $$0 = 0; else { + $4 = $handle + 7062408 | 0; + $5 = HEAP32[$4 >> 2] | 0; + if ($5) { + _arImageProcFinal($5); + HEAP32[$4 >> 2] = 0; + } + switch ($mode | 0) { + case 3: + case 2: + case 1: + { + $13 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 4 >> 2] | 0, 0) | 0; + HEAP32[$4 >> 2] = $13; + $mode1$0 = $mode; + break; + } + case 4: + { + HEAP32[$handle + 7062404 >> 2] = 1; + HEAP32[$handle + 7062400 >> 2] = 1; + $mode1$0 = 4; + break; + } + case 0: + { + $mode1$0 = 0; + break; + } + default: + { + _arLog(3, 3985, $vararg_buffer); + $mode1$0 = 0; + } + } + HEAP32[$1 >> 2] = $mode1$0; + if ((HEAP32[$handle >> 2] | 0) == 1) { + HEAP32[$vararg_buffer1 >> 2] = HEAP32[760 + ($mode1$0 << 2) >> 2]; + _arLog(3, 4059, $vararg_buffer1); + $$0 = 0; + } else $$0 = 0; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _sift($head, $width, $cmp, $pshift, $lp) { + $head = $head | 0; + $width = $width | 0; + $cmp = $cmp | 0; + $pshift = $pshift | 0; + $lp = $lp | 0; + var $$0$be = 0, $$01$be = 0, $$012 = 0, $$03 = 0, $1 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $6 = 0, $7 = 0, $ar = 0, $i$0$lcssa = 0, $i$04 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 240 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ar = sp; + HEAP32[$ar >> 2] = $head; + L1 : do if (($pshift | 0) > 1) { + $1 = 0 - $width | 0; + $$012 = $pshift; + $$03 = $head; + $7 = $head; + $i$04 = 1; + while (1) { + $2 = $$03 + $1 | 0; + $3 = $$012 + -2 | 0; + $6 = $$03 + (0 - ((HEAP32[$lp + ($3 << 2) >> 2] | 0) + $width)) | 0; + if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $6) | 0) > -1) if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $2) | 0) > -1) { + $i$0$lcssa = $i$04; + break L1; + } + $14 = $i$04 + 1 | 0; + $15 = $ar + ($i$04 << 2) | 0; + if ((FUNCTION_TABLE_iii[$cmp & 15]($6, $2) | 0) > -1) { + HEAP32[$15 >> 2] = $6; + $$0$be = $6; + $$01$be = $$012 + -1 | 0; + } else { + HEAP32[$15 >> 2] = $2; + $$0$be = $2; + $$01$be = $3; + } + if (($$01$be | 0) <= 1) { + $i$0$lcssa = $14; + break L1; + } + $$012 = $$01$be; + $$03 = $$0$be; + $7 = HEAP32[$ar >> 2] | 0; + $i$04 = $14; + } + } else $i$0$lcssa = 1; while (0); + _cycle($width, $ar, $i$0$lcssa); + STACKTOP = sp; + return; +} + +function _arCreateHandle($paramLT) { + $paramLT = $paramLT | 0; + var $0 = 0, $15 = 0, $18 = 0, $26 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = _malloc(7062432) | 0; + if (!$0) { + _arLog(3, 5471, sp); + _exit(1); + } + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4834148 >> 2] = 0; + HEAP32[$0 + 7062408 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = -1; + HEAP32[$0 + 8 >> 2] = 0; + HEAP32[$0 + 12 >> 2] = 1; + HEAP32[$0 + 16 >> 2] = 100; + HEAP32[$0 + 20 >> 2] = 0; + HEAP32[$0 + 24 >> 2] = 0; + HEAP32[$0 + 28 >> 2] = 2; + HEAPF64[$0 + 7062416 >> 3] = .5; + HEAP32[$0 + 7062424 >> 2] = 3; + HEAP32[$0 + 32 >> 2] = $paramLT; + $15 = HEAP32[$paramLT >> 2] | 0; + HEAP32[$0 + 36 >> 2] = $15; + $18 = HEAP32[$paramLT + 4 >> 2] | 0; + HEAP32[$0 + 40 >> 2] = $18; + HEAP32[$0 + 44 >> 2] = 0; + HEAP32[$0 + 15408 >> 2] = 0; + HEAP32[$0 + 4834152 >> 2] = 0; + HEAP32[$0 + 4818296 >> 2] = 0; + $26 = _malloc(Math_imul($15 << 1, $18) | 0) | 0; + HEAP32[$0 + 4834144 >> 2] = $26; + if (!$26) { + _arLog(3, 5471, sp + 8 | 0); + _exit(1); + } else { + HEAP32[$0 + 7062384 >> 2] = 0; + _arSetPixelFormat($0, 2) | 0; + _arSetDebugMode($0, 0) | 0; + HEAP32[$0 + 7062388 >> 2] = -1; + _arSetLabelingThreshMode($0, 0) | 0; + HEAP32[$0 + 7062392 >> 2] = 7; + HEAP32[$0 + 7062396 >> 2] = 0; + STACKTOP = sp; + return $0 | 0; + } + return 0; +} + +function __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($this, $__x) { + $this = $this | 0; + $__x = $__x | 0; + var $$0$i = 0, $1 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $25 = 0, $26 = 0, $3 = 0, $31 = 0, $32 = 0, $8 = 0, $__v = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__v = sp; + $1 = $this + 4 | 0; + $3 = HEAP32[$this >> 2] | 0; + $8 = ((HEAP32[$1 >> 2] | 0) - $3 >> 3) + 1 | 0; + if ($8 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this); + $13 = $3; + $14 = (HEAP32[$this + 8 >> 2] | 0) - $13 | 0; + if ($14 >> 3 >>> 0 < 268435455) { + $17 = $14 >> 2; + $$0$i = $17 >>> 0 < $8 >>> 0 ? $8 : $17; + } else $$0$i = 536870911; + __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($__v, $$0$i, (HEAP32[$1 >> 2] | 0) - $13 >> 3, $this + 8 | 0); + $24 = $__v + 8 | 0; + $25 = HEAP32[$24 >> 2] | 0; + $26 = $__x; + $31 = HEAP32[$26 + 4 >> 2] | 0; + $32 = $25; + HEAP32[$32 >> 2] = HEAP32[$26 >> 2]; + HEAP32[$32 + 4 >> 2] = $31; + HEAP32[$24 >> 2] = $25 + 8; + __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v); + __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($__v); + STACKTOP = sp; + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) { + $this = $this | 0; + $__n = $__n | 0; + var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0; + if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0; + $6 = HEAP32[$this + 4 >> 2] | 0; + if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) { + if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0; + $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0; + if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0; + $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1; + if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28); + } + return; +} + +function _vsnprintf($s, $n, $fmt, $ap) { + $s = $s | 0; + $n = $n | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + var $$$02 = 0, $$0 = 0, $$01 = 0, $$02 = 0, $10 = 0, $11 = 0, $13 = 0, $15 = 0, $3 = 0, $5 = 0, $8 = 0, $b = 0, $f = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 128 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $b = sp + 112 | 0; + $f = sp; + dest = $f; + src = 2684; + stop = dest + 112 | 0; + do { + HEAP32[dest >> 2] = HEAP32[src >> 2]; + dest = dest + 4 | 0; + src = src + 4 | 0; + } while ((dest | 0) < (stop | 0)); + if (($n + -1 | 0) >>> 0 > 2147483646) if (!$n) { + $$01 = $b; + $$02 = 1; + label = 4; + } else { + $3 = ___errno_location() | 0; + HEAP32[$3 >> 2] = 75; + $$0 = -1; + } else { + $$01 = $s; + $$02 = $n; + label = 4; + } + if ((label | 0) == 4) { + $5 = -2 - $$01 | 0; + $$$02 = $$02 >>> 0 > $5 >>> 0 ? $5 : $$02; + HEAP32[$f + 48 >> 2] = $$$02; + $8 = $f + 20 | 0; + HEAP32[$8 >> 2] = $$01; + HEAP32[$f + 44 >> 2] = $$01; + $10 = $$01 + $$$02 | 0; + $11 = $f + 16 | 0; + HEAP32[$11 >> 2] = $10; + HEAP32[$f + 28 >> 2] = $10; + $13 = _vfprintf($f, $fmt, $ap) | 0; + if (!$$$02) $$0 = $13; else { + $15 = HEAP32[$8 >> 2] | 0; + HEAP8[$15 + ((($15 | 0) == (HEAP32[$11 >> 2] | 0)) << 31 >> 31) >> 0] = 0; + $$0 = $13; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) { + $this = $this | 0; + $__n = $__n | 0; + var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0; + if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0; + $6 = HEAP32[$this + 4 >> 2] | 0; + if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) { + if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0; + $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0; + if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0; + $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1; + if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28); + } + return; +} + +function _addMarker($id, $patt_name) { + $id = $id | 0; + $patt_name = $patt_name | 0; + var $$0 = 0, $0 = 0, $11 = 0, $13 = 0, $14 = 0, $3 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + $0 = sp + 12 | 0; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if (!(HEAP8[$patt_name >> 0] & 1)) $13 = $patt_name + 1 | 0; else $13 = HEAP32[$patt_name + 8 >> 2] | 0; + $11 = $3 + 216 | 0; + $14 = _arPattLoad(HEAP32[$11 >> 2] | 0, $13) | 0; + HEAP32[$3 + 260 >> 2] = $14; + if (($14 | 0) < 0) { + HEAP32[$vararg_buffer >> 2] = $13; + _arLog(3, 6311, $vararg_buffer); + _arPattDeleteHandle(HEAP32[$11 >> 2] | 0) | 0; + _arLog(3, 6357, $vararg_buffer1); + $$0 = -1; + } else $$0 = $14; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _icpGetDeltaS($S, $dU, $J_U_S, $n) { + $S = $S | 0; + $dU = $dU | 0; + $J_U_S = $J_U_S | 0; + $n = $n | 0; + var $$0 = 0, $10 = 0, $6 = 0, $8 = 0, $matJ = 0, $matS = 0, $matU = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 48 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $matS = sp + 24 | 0; + $matU = sp + 12 | 0; + $matJ = sp; + HEAP32[$matS + 4 >> 2] = 6; + HEAP32[$matS + 8 >> 2] = 1; + HEAP32[$matS >> 2] = $S; + HEAP32[$matU + 4 >> 2] = $n; + HEAP32[$matU + 8 >> 2] = 1; + HEAP32[$matU >> 2] = $dU; + HEAP32[$matJ + 4 >> 2] = $n; + HEAP32[$matJ + 8 >> 2] = 6; + HEAP32[$matJ >> 2] = $J_U_S; + $6 = _arMatrixAllocTrans($matJ) | 0; + do if (!$6) $$0 = -1; else { + $8 = _arMatrixAllocMul($6, $matJ) | 0; + if (!$8) { + _arMatrixFree($6) | 0; + $$0 = -1; + break; + } + $10 = _arMatrixAllocMul($6, $matU) | 0; + if (!$10) { + _arMatrixFree($6) | 0; + _arMatrixFree($8) | 0; + $$0 = -1; + break; + } + if ((_arMatrixSelfInv($8) | 0) < 0) { + _arMatrixFree($6) | 0; + _arMatrixFree($8) | 0; + _arMatrixFree($10) | 0; + $$0 = -1; + break; + } else { + _arMatrixMul($matS, $8, $10) | 0; + _arMatrixFree($6) | 0; + _arMatrixFree($8) | 0; + _arMatrixFree($10) | 0; + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _getTransMatMultiSquareRobust($id, $multiMarkerId) { + $id = $id | 0; + $multiMarkerId = $multiMarkerId | 0; + var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $8 = HEAP32[$4 + 248 >> 2] | 0; + if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) { + $$0 = HEAP32[524] | 0; + break; + } else { + $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0; + $21 = HEAP32[$4 + 212 >> 2] | 0; + +_arGetTransMatMultiSquareRobust(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17); + _matrixCopy($17 + 8 | 0, 264); + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, $percentile, $value_p) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + $percentile = +$percentile; + $value_p = $value_p | 0; + var $$0 = 0, $$in = 0, $$lcssa10 = 0, $$lcssa9 = 0, $11 = 0, $12 = 0, $14 = 0, $18 = 0, $2 = 0, $i$0 = 0, $i$0$lcssa = 0, $j$0$lcssa = 0; + if ($percentile < 0.0 | $percentile > 1.0) $$0 = -1; else { + $2 = _arImageProcLumaHistAndCDF($ipi, $dataPtr) | 0; + if (($2 | 0) < 0) $$0 = $2; else { + $11 = ~~(+(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) * $percentile) >>> 0; + $i$0 = 0; + while (1) { + $12 = $i$0 & 255; + $14 = HEAP32[$ipi + 1040 + ($12 << 2) >> 2] | 0; + if ($14 >>> 0 < $11 >>> 0) $i$0 = $i$0 + 1 << 24 >> 24; else { + $$lcssa10 = $14; + $$lcssa9 = $12; + $i$0$lcssa = $i$0; + break; + } + } + if (($$lcssa10 | 0) == ($11 | 0)) { + $$in = $i$0$lcssa; + while (1) { + $18 = $$in + 1 << 24 >> 24; + if ((HEAP32[$ipi + 1040 + (($18 & 255) << 2) >> 2] | 0) == ($11 | 0)) $$in = $18; else { + $j$0$lcssa = $18; + break; + } + } + } else $j$0$lcssa = $i$0$lcssa; + HEAP8[$value_p >> 0] = (($j$0$lcssa & 255) + $$lcssa9 | 0) >>> 1; + $$0 = 0; + } + } + return $$0 | 0; +} + +function _getTransMatMultiSquare($id, $multiMarkerId) { + $id = $id | 0; + $multiMarkerId = $multiMarkerId | 0; + var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $8 = HEAP32[$4 + 248 >> 2] | 0; + if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) { + $$0 = HEAP32[524] | 0; + break; + } else { + $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0; + $21 = HEAP32[$4 + 212 >> 2] | 0; + +_arGetTransMatMultiSquare(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17); + _matrixCopy($17 + 8 | 0, 264); + $$0 = 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arPattDeleteHandle($pattHandle) { + $pattHandle = $pattHandle | 0; + var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $2 = 0, $25 = 0, $3 = 0, $32 = 0, $4 = 0, $i$03 = 0; + if (!$pattHandle) $$0 = -1; else { + $1 = $pattHandle + 4 | 0; + $2 = $pattHandle + 8 | 0; + $3 = $pattHandle + 12 | 0; + $4 = $pattHandle + 20 | 0; + if ((HEAP32[$1 >> 2] | 0) > 0) { + $i$03 = 0; + do { + if (HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$03 << 2) >> 2] | 0) _arPattFree($pattHandle, $i$03) | 0; + $11 = $i$03 << 2; + _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($11 << 2) >> 2] | 0); + _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($11 << 2) >> 2] | 0); + $18 = 1 + $11 | 0; + _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($18 << 2) >> 2] | 0); + _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($18 << 2) >> 2] | 0); + $25 = 2 + $11 | 0; + _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($25 << 2) >> 2] | 0); + _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($25 << 2) >> 2] | 0); + $32 = 3 + $11 | 0; + _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($32 << 2) >> 2] | 0); + _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($32 << 2) >> 2] | 0); + $i$03 = $i$03 + 1 | 0; + } while (($i$03 | 0) < (HEAP32[$1 >> 2] | 0)); + } + _free($pattHandle); + $$0 = 0; + } + return $$0 | 0; +} + +function _atoi($s) { + $s = $s | 0; + var $$0 = 0, $$0$lcssa = 0, $$1$ph = 0, $$13 = 0, $$lcssa9 = 0, $11 = 0, $4 = 0, $5 = 0, $8 = 0, $isdigittmp1 = 0, $isdigittmp5 = 0, $n$0$lcssa = 0, $n$04 = 0, $neg$0 = 0, $neg$1$ph = 0, label = 0; + $$0 = $s; + while (1) { + $4 = $$0 + 1 | 0; + if (!(_isspace(HEAP8[$$0 >> 0] | 0) | 0)) { + $$0$lcssa = $$0; + $$lcssa9 = $4; + break; + } else $$0 = $4; + } + $5 = HEAP8[$$0$lcssa >> 0] | 0; + switch ($5 << 24 >> 24 | 0) { + case 45: + { + $neg$0 = 1; + label = 5; + break; + } + case 43: + { + $neg$0 = 0; + label = 5; + break; + } + default: + { + $$1$ph = $$0$lcssa; + $8 = $5; + $neg$1$ph = 0; + } + } + if ((label | 0) == 5) { + $$1$ph = $$lcssa9; + $8 = HEAP8[$$lcssa9 >> 0] | 0; + $neg$1$ph = $neg$0; + } + $isdigittmp1 = ($8 << 24 >> 24) + -48 | 0; + if ($isdigittmp1 >>> 0 < 10) { + $$13 = $$1$ph; + $isdigittmp5 = $isdigittmp1; + $n$04 = 0; + while (1) { + $$13 = $$13 + 1 | 0; + $11 = ($n$04 * 10 | 0) - $isdigittmp5 | 0; + $isdigittmp5 = (HEAP8[$$13 >> 0] | 0) + -48 | 0; + if ($isdigittmp5 >>> 0 >= 10) { + $n$0$lcssa = $11; + break; + } else $n$04 = $11; + } + } else $n$0$lcssa = 0; + return (($neg$1$ph | 0) != 0 ? $n$0$lcssa : 0 - $n$0$lcssa | 0) | 0; +} + +function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) { + $this = $this | 0; + $__k = $__k | 0; + var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__h = sp + 8 | 0; + $0 = sp; + $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0; + if (!$1) { + __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k); + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0); + $5 = HEAP32[$0 >> 2] | 0; + HEAP32[$__h >> 2] = 0; + $$pn3 = $5; + } else $$pn3 = $1; + STACKTOP = sp; + return $$pn3 + 16 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($this, $__c) { + $this = $this | 0; + $__c = $__c | 0; + var $$pn = 0, $0 = 0, $19 = 0, $2 = 0, $20 = 0, $__cap$0 = 0, $__p$0$sum$pre$phiZZZ2D = 0, $__sz$0 = 0, label = 0; + $0 = HEAP8[$this >> 0] | 0; + $2 = ($0 & 1) != 0; + if ($2) { + $__cap$0 = (HEAP32[$this >> 2] & -2) + -1 | 0; + $__sz$0 = HEAP32[$this + 4 >> 2] | 0; + } else { + $__cap$0 = 10; + $__sz$0 = ($0 & 255) >>> 1; + } + if (($__sz$0 | 0) == ($__cap$0 | 0)) { + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__cap$0, 1, $__cap$0, $__cap$0, 0); + if (!(HEAP8[$this >> 0] & 1)) label = 7; else label = 8; + } else if ($2) label = 8; else label = 7; + if ((label | 0) == 7) { + HEAP8[$this >> 0] = ($__sz$0 << 1) + 2; + $$pn = $this + 1 | 0; + $__p$0$sum$pre$phiZZZ2D = $__sz$0 + 1 | 0; + } else if ((label | 0) == 8) { + $19 = HEAP32[$this + 8 >> 2] | 0; + $20 = $__sz$0 + 1 | 0; + HEAP32[$this + 4 >> 2] = $20; + $$pn = $19; + $__p$0$sum$pre$phiZZZ2D = $20; + } + HEAP8[$$pn + $__sz$0 >> 0] = $__c; + HEAP8[$$pn + $__p$0$sum$pre$phiZZZ2D >> 0] = 0; + return; +} + +function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($this, $info, $dst_ptr, $current_ptr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $dst_ptr = $dst_ptr | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + var $16 = 0, $17 = 0, $23 = 0, $25 = 0, $5 = 0, $6 = 0; + HEAP8[$info + 53 >> 0] = 1; + do if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) { + HEAP8[$info + 52 >> 0] = 1; + $5 = $info + 16 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if (!$6) { + HEAP32[$5 >> 2] = $dst_ptr; + HEAP32[$info + 24 >> 2] = $path_below; + HEAP32[$info + 36 >> 2] = 1; + if (!(($path_below | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0)) break; + HEAP8[$info + 54 >> 0] = 1; + break; + } + if (($6 | 0) != ($dst_ptr | 0)) { + $25 = $info + 36 | 0; + HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 1; + HEAP8[$info + 54 >> 0] = 1; + break; + } + $16 = $info + 24 | 0; + $17 = HEAP32[$16 >> 2] | 0; + if (($17 | 0) == 2) { + HEAP32[$16 >> 2] = $path_below; + $23 = $path_below; + } else $23 = $17; + if (($23 | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0) HEAP8[$info + 54 >> 0] = 1; + } while (0); + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($first, $last) { + $first = $first | 0; + $last = $last | 0; + var $$0 = 0, $10 = 0, $11 = 0, $16 = 0, $17 = 0, $3 = 0, $4 = 0; + L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else { + switch (HEAP8[$first >> 0] | 0) { + case 104: + { + $3 = $first + 1 | 0; + $4 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($3, $last) | 0; + if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) { + $$0 = $first; + break L1; + } + $$0 = (HEAP8[$4 >> 0] | 0) == 95 ? $4 + 1 | 0 : $first; + break L1; + break; + } + case 118: + break; + default: + { + $$0 = $first; + break L1; + } + } + $10 = $first + 1 | 0; + $11 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($10, $last) | 0; + if (($11 | 0) == ($10 | 0) | ($11 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$11 >> 0] | 0) == 95) { + $16 = $11 + 1 | 0; + $17 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($16, $last) | 0; + if (($17 | 0) == ($16 | 0) | ($17 | 0) == ($last | 0)) $$0 = $first; else return ((HEAP8[$17 >> 0] | 0) == 95 ? $17 + 1 | 0 : $first) | 0; + } else $$0 = $first; + } while (0); + return $$0 | 0; +} + +function _setup($width, $height, $cameraID) { + $width = $width | 0; + $height = $height | 0; + $cameraID = $cameraID | 0; + var $0 = 0, $10 = 0, $2 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $id = 0, $vararg_buffer1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 8 | 0; + $id = sp + 12 | 0; + $0 = HEAP32[525] | 0; + HEAP32[525] = $0 + 1; + HEAP32[$id >> 2] = $0; + $2 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $id) | 0; + HEAP32[$2 >> 2] = $0; + HEAP32[$2 + 204 >> 2] = $width; + HEAP32[$2 + 208 >> 2] = $height; + $6 = Math_imul($width << 2, $height) | 0; + $7 = $2 + 200 | 0; + HEAP32[$7 >> 2] = $6; + $8 = _malloc($6) | 0; + $9 = $2 + 196 | 0; + HEAP32[$9 >> 2] = $8; + $10 = _arPattCreateHandle() | 0; + HEAP32[$2 + 216 >> 2] = $10; + if (!$10) _arLog(3, 8284, sp); + _setCamera($0, $cameraID) | 0; + HEAP32[$vararg_buffer1 >> 2] = HEAP32[$7 >> 2]; + _arLog(1, 8321, $vararg_buffer1); + _emscripten_asm_const_5(2, HEAP32[$2 >> 2] | 0, HEAP32[$9 >> 2] | 0, HEAP32[$7 >> 2] | 0, $2 + 264 | 0, 264) | 0; + STACKTOP = sp; + return HEAP32[$2 >> 2] | 0; +} + +function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) { + $this = $this | 0; + $__k = $__k | 0; + var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $__h = sp + 8 | 0; + $0 = sp; + $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0; + if (!$1) { + __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k); + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0); + $5 = HEAP32[$0 >> 2] | 0; + HEAP32[$__h >> 2] = 0; + $$pn3 = $5; + } else $$pn3 = $1; + STACKTOP = sp; + return $$pn3 + 16 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_add) { + $this = $this | 0; + $__old_cap = $__old_cap | 0; + $__delta_cap = $__delta_cap | 0; + $__old_sz = $__old_sz | 0; + $__n_copy = $__n_copy | 0; + $__n_add = $__n_add | 0; + var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $9 = 0; + if ((-17 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this); + if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0; + if ($__old_cap >>> 0 < 2147483623) { + $9 = $__delta_cap + $__old_cap | 0; + $10 = $__old_cap << 1; + $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9; + $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16; + } else $17 = -17; + $18 = _malloc($17) | 0; + if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0; + if (($__old_sz | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + $__n_copy | 0, $__old_sz - $__n_copy | 0) | 0; + if (($__old_cap | 0) != 10) _free($20); + HEAP32[$this + 8 >> 2] = $18; + HEAP32[$this >> 2] = $17 | 1; + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) { + $this = $this | 0; + $__k = $__k | 0; + var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0; + $0 = HEAP32[$__k >> 2] | 0; + $2 = HEAP32[$this + 4 >> 2] | 0; + L1 : do if (!$2) $24 = 0; else { + $4 = $2 + -1 | 0; + $6 = ($4 & $2 | 0) == 0; + if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0; + $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0; + if (!$12) $24 = 0; else { + $$pn = $12; + while (1) { + $__nd$0 = HEAP32[$$pn >> 2] | 0; + if (!$__nd$0) { + $24 = 0; + break L1; + } + $16 = HEAP32[$__nd$0 + 4 >> 2] | 0; + if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0; + if (($20 | 0) != ($11 | 0)) { + $24 = 0; + break L1; + } + if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) { + $24 = $__nd$0; + break; + } else $$pn = $__nd$0; + } + } + } while (0); + return $24 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) { + $this = $this | 0; + $__k = $__k | 0; + var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0; + $0 = HEAP32[$__k >> 2] | 0; + $2 = HEAP32[$this + 4 >> 2] | 0; + L1 : do if (!$2) $24 = 0; else { + $4 = $2 + -1 | 0; + $6 = ($4 & $2 | 0) == 0; + if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0; + $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0; + if (!$12) $24 = 0; else { + $$pn = $12; + while (1) { + $__nd$0 = HEAP32[$$pn >> 2] | 0; + if (!$__nd$0) { + $24 = 0; + break L1; + } + $16 = HEAP32[$__nd$0 + 4 >> 2] | 0; + if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0; + if (($20 | 0) != ($11 | 0)) { + $24 = 0; + break L1; + } + if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) { + $24 = $__nd$0; + break; + } else $$pn = $__nd$0; + } + } + } while (0); + return $24 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_($this, $__k) { + $this = $this | 0; + $__k = $__k | 0; + var $$0 = 0, $$byval_copy = 0, $0 = 0, $1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $$byval_copy = sp + 4 | 0; + $0 = sp; + $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0; + if (!$1) $$0 = 0; else { + HEAP32[$0 >> 2] = $1; + HEAP32[$$byval_copy >> 2] = HEAP32[$0 >> 2]; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $$byval_copy) | 0; + $$0 = 1; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $__p) { + $this = $this | 0; + $__p = $__p | 0; + var $$byval_copy = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $$byval_copy = sp + 16 | 0; + $0 = sp + 4 | 0; + $1 = sp; + $2 = HEAP32[$__p >> 2] | 0; + $3 = HEAP32[$2 >> 2] | 0; + HEAP32[$1 >> 2] = $2; + HEAP32[$$byval_copy >> 2] = HEAP32[$1 >> 2]; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($0, $this, $$byval_copy); + $4 = HEAP32[$0 >> 2] | 0; + HEAP32[$0 >> 2] = 0; + if ($4) { + if (HEAP8[$0 + 8 >> 0] | 0) __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($4 + 264 | 0); + __ZdlPv($4); + } + STACKTOP = sp; + return $3 | 0; +} + +function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $adjustedPtr) { + $this = $this | 0; + $thrown_type = $thrown_type | 0; + $adjustedPtr = $adjustedPtr | 0; + var $$0 = 0, $$1 = 0, $2 = 0, $info = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $info = sp; + if (($this | 0) == ($thrown_type | 0)) $$1 = 1; else if (!$thrown_type) $$1 = 0; else { + $2 = ___dynamic_cast($thrown_type, 576, 592, 0) | 0; + if (!$2) $$1 = 0; else { + dest = $info; + stop = dest + 56 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP32[$info >> 2] = $2; + HEAP32[$info + 8 >> 2] = $this; + HEAP32[$info + 12 >> 2] = -1; + HEAP32[$info + 48 >> 2] = 1; + FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$2 >> 2] | 0) + 28 >> 2] & 3]($2, $info, HEAP32[$adjustedPtr >> 2] | 0, 1); + if ((HEAP32[$info + 24 >> 2] | 0) == 1) { + HEAP32[$adjustedPtr >> 2] = HEAP32[$info + 16 >> 2]; + $$0 = 1; + } else $$0 = 0; + $$1 = $$0; + } + } + STACKTOP = sp; + return $$1 | 0; +} + +function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $14 = 0, $20 = 0, $6 = 0; + do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) { + if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) { + $6 = $info + 28 | 0; + if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below; + } + } else if (($this | 0) == (HEAP32[$info >> 2] | 0)) { + if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) { + $14 = $info + 20 | 0; + if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) { + HEAP32[$info + 32 >> 2] = $path_below; + HEAP32[$14 >> 2] = $current_ptr; + $20 = $info + 40 | 0; + HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 1; + if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) HEAP8[$info + 54 >> 0] = 1; + HEAP32[$info + 44 >> 2] = 4; + break; + } + } + if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1; + } while (0); + return; +} + +function _getTransMatSquareCont($id, $markerIndex, $markerWidth) { + $id = $id | 0; + $markerIndex = $markerIndex | 0; + $markerWidth = $markerWidth | 0; + var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $6 = HEAP32[$4 + 212 >> 2] | 0; + if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) { + +_arGetTransMatSquareCont(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, 264, +($markerWidth | 0), 264); + $$0 = 0; + break; + } else { + $$0 = HEAP32[523] | 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arPattLoad($pattHandle, $filename) { + $pattHandle = $pattHandle | 0; + $filename = $filename | 0; + var $$0 = 0, $0 = 0, $2 = 0, $4 = 0, $6 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer1 = sp + 8 | 0; + $vararg_buffer = sp; + $0 = _fopen($filename, 4854) | 0; + do if (!$0) { + HEAP32[$vararg_buffer >> 2] = $filename; + _arLog(3, 4774, $vararg_buffer); + $$0 = -1; + } else { + _fseek($0, 0, 2) | 0; + $2 = _ftell($0) | 0; + _fseek($0, 0, 0) | 0; + $4 = _malloc($2 + 1 | 0) | 0; + if (!$4) { + _arLog(3, 5471, $vararg_buffer1); + _fclose($0) | 0; + $$0 = -1; + break; + } + $6 = _fread($4, $2, 1, $0) | 0; + _fclose($0) | 0; + if (!$6) { + HEAP32[$vararg_buffer3 >> 2] = $filename; + _arLog(3, 4820, $vararg_buffer3); + _free($4); + $$0 = -1; + break; + } else { + HEAP8[$4 + $2 >> 0] = 0; + $9 = _arPattLoadFromBuffer($pattHandle, $4) | 0; + _free($4); + $$0 = $9; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _fmt_u($0, $1, $s) { + $0 = $0 | 0; + $1 = $1 | 0; + $s = $s | 0; + var $$0$lcssa = 0, $$01$lcssa$off0 = 0, $$05 = 0, $$1$lcssa = 0, $$12 = 0, $$lcssa20 = 0, $13 = 0, $14 = 0, $25 = 0, $28 = 0, $7 = 0, $8 = 0, $9 = 0, $y$03 = 0; + if ($1 >>> 0 > 0 | ($1 | 0) == 0 & $0 >>> 0 > 4294967295) { + $$05 = $s; + $7 = $0; + $8 = $1; + while (1) { + $9 = ___uremdi3($7 | 0, $8 | 0, 10, 0) | 0; + $13 = $$05 + -1 | 0; + HEAP8[$13 >> 0] = $9 | 48; + $14 = ___udivdi3($7 | 0, $8 | 0, 10, 0) | 0; + if ($8 >>> 0 > 9 | ($8 | 0) == 9 & $7 >>> 0 > 4294967295) { + $$05 = $13; + $7 = $14; + $8 = tempRet0; + } else { + $$lcssa20 = $13; + $28 = $14; + break; + } + } + $$0$lcssa = $$lcssa20; + $$01$lcssa$off0 = $28; + } else { + $$0$lcssa = $s; + $$01$lcssa$off0 = $0; + } + if (!$$01$lcssa$off0) $$1$lcssa = $$0$lcssa; else { + $$12 = $$0$lcssa; + $y$03 = $$01$lcssa$off0; + while (1) { + $25 = $$12 + -1 | 0; + HEAP8[$25 >> 0] = ($y$03 >>> 0) % 10 | 0 | 48; + if ($y$03 >>> 0 < 10) { + $$1$lcssa = $25; + break; + } else { + $$12 = $25; + $y$03 = ($y$03 >>> 0) / 10 | 0; + } + } + } + return $$1$lcssa | 0; +} + +function _byteswap($param) { + $param = $param | 0; + var $$lcssa = 0, $15 = 0, $2 = 0, $i$13 = 0, $j$05 = 0, $wparam = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 192 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $wparam = sp; + _byteSwapInt($param, $wparam); + _byteSwapInt($param + 4 | 0, $wparam + 4 | 0); + $j$05 = 0; + do { + _byteSwapDouble($param + 8 + ($j$05 << 5) | 0, $wparam + 8 + ($j$05 << 5) | 0); + _byteSwapDouble($param + 8 + ($j$05 << 5) + 8 | 0, $wparam + 8 + ($j$05 << 5) + 8 | 0); + _byteSwapDouble($param + 8 + ($j$05 << 5) + 16 | 0, $wparam + 8 + ($j$05 << 5) + 16 | 0); + _byteSwapDouble($param + 8 + ($j$05 << 5) + 24 | 0, $wparam + 8 + ($j$05 << 5) + 24 | 0); + $j$05 = $j$05 + 1 | 0; + } while (($j$05 | 0) != 3); + $2 = $param + 176 | 0; + $i$13 = 0; + do { + _byteSwapDouble($param + 104 + ($i$13 << 3) | 0, $wparam + 104 + ($i$13 << 3) | 0); + $i$13 = $i$13 + 1 | 0; + $15 = HEAP32[$2 >> 2] | 0; + } while (($i$13 | 0) < (HEAP32[2012 + ($15 + -1 << 3) >> 2] | 0)); + $$lcssa = $15; + HEAP32[$wparam + 176 >> 2] = $$lcssa; + _memcpy($param | 0, $wparam | 0, 184) | 0; + STACKTOP = sp; + return; +} + +function _getTransMatSquare($id, $markerIndex, $markerWidth) { + $id = $id | 0; + $markerIndex = $markerIndex | 0; + $markerWidth = $markerWidth | 0; + var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $6 = HEAP32[$4 + 212 >> 2] | 0; + if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) { + +_arGetTransMatSquare(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, +($markerWidth | 0), 264); + $$0 = 0; + break; + } else { + $$0 = HEAP32[523] | 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _arMatrixTrans($dest, $source) { + $dest = $dest | 0; + $source = $source | 0; + var $$0 = 0, $1 = 0, $13 = 0, $6 = 0, $c$01 = 0, $p1$02 = 0, $p2$05 = 0, $p2$13 = 0, $r$04 = 0, $smax = 0; + $1 = HEAP32[$dest + 4 >> 2] | 0; + if (($1 | 0) == (HEAP32[$source + 8 >> 2] | 0)) { + $6 = HEAP32[$dest + 8 >> 2] | 0; + if (($6 | 0) == (HEAP32[$source + 4 >> 2] | 0)) { + $smax = ($6 | 0) > 0 ? $6 : 0; + if (($1 | 0) > 0) { + $13 = ($6 | 0) > 0; + $p2$05 = HEAP32[$dest >> 2] | 0; + $r$04 = 0; + while (1) { + if ($13) { + $c$01 = 0; + $p1$02 = (HEAP32[$source >> 2] | 0) + ($r$04 << 3) | 0; + $p2$13 = $p2$05; + while (1) { + HEAPF64[$p2$13 >> 3] = +HEAPF64[$p1$02 >> 3]; + $c$01 = $c$01 + 1 | 0; + if (($c$01 | 0) >= ($6 | 0)) break; else { + $p1$02 = $p1$02 + ($1 << 3) | 0; + $p2$13 = $p2$13 + 8 | 0; + } + } + } + $r$04 = $r$04 + 1 | 0; + if (($r$04 | 0) >= ($1 | 0)) { + $$0 = 0; + break; + } else $p2$05 = $p2$05 + ($smax << 3) | 0; + } + } else $$0 = 0; + } else $$0 = -1; + } else $$0 = -1; + return $$0 | 0; +} + +function _fflush($f) { + $f = $f | 0; + var $$0 = 0, $$012 = 0, $$014 = 0, $24 = 0, $27 = 0, $6 = 0, $phitmp = 0, $r$0$lcssa = 0, $r$03 = 0, $r$1 = 0; + do if (!$f) { + if (!(HEAP32[660] | 0)) $27 = 0; else $27 = _fflush(HEAP32[660] | 0) | 0; + ___lock(2416); + $$012 = HEAP32[603] | 0; + if (!$$012) $r$0$lcssa = $27; else { + $$014 = $$012; + $r$03 = $27; + while (1) { + if ((HEAP32[$$014 + 76 >> 2] | 0) > -1) $24 = ___lockfile($$014) | 0; else $24 = 0; + if ((HEAP32[$$014 + 20 >> 2] | 0) >>> 0 > (HEAP32[$$014 + 28 >> 2] | 0) >>> 0) $r$1 = ___fflush_unlocked($$014) | 0 | $r$03; else $r$1 = $r$03; + if ($24) ___unlockfile($$014); + $$014 = HEAP32[$$014 + 56 >> 2] | 0; + if (!$$014) { + $r$0$lcssa = $r$1; + break; + } else $r$03 = $r$1; + } + } + ___unlock(2416); + $$0 = $r$0$lcssa; + } else { + if ((HEAP32[$f + 76 >> 2] | 0) <= -1) { + $$0 = ___fflush_unlocked($f) | 0; + break; + } + $phitmp = (___lockfile($f) | 0) == 0; + $6 = ___fflush_unlocked($f) | 0; + if ($phitmp) $$0 = $6; else { + ___unlockfile($f); + $$0 = $6; + } + } while (0); + return $$0 | 0; +} + +function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $adjustedPtr = $adjustedPtr | 0; + $path_below = $path_below | 0; + var $5 = 0, $6 = 0, $9 = 0, $p$0 = 0; + L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else { + $5 = HEAP32[$this + 12 >> 2] | 0; + $6 = $this + 16 + ($5 << 3) | 0; + __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this + 16 | 0, $info, $adjustedPtr, $path_below); + if (($5 | 0) > 1) { + $9 = $info + 54 | 0; + $p$0 = $this + 24 | 0; + do { + __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($p$0, $info, $adjustedPtr, $path_below); + if (HEAP8[$9 >> 0] | 0) break L1; + $p$0 = $p$0 + 8 | 0; + } while ($p$0 >>> 0 < $6 >>> 0); + } + } while (0); + return; +} + +function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($this, $__v) { + $this = $this | 0; + $__v = $__v | 0; + var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $3 = 0; + $0 = HEAP32[$this >> 2] | 0; + $1 = $this + 4 | 0; + $2 = HEAP32[$1 >> 2] | 0; + $3 = $__v + 4 | 0; + if (($2 | 0) != ($0 | 0)) { + $$0$i1 = $2; + do { + $$0$i1 = $$0$i1 + -24 | 0; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_((HEAP32[$3 >> 2] | 0) + -24 | 0, $$0$i1); + HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -24; + } while (($$0$i1 | 0) != ($0 | 0)); + } + $11 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = HEAP32[$3 >> 2]; + HEAP32[$3 >> 2] = $11; + $13 = $__v + 8 | 0; + $14 = HEAP32[$1 >> 2] | 0; + HEAP32[$1 >> 2] = HEAP32[$13 >> 2]; + HEAP32[$13 >> 2] = $14; + $16 = $this + 8 | 0; + $17 = $__v + 12 | 0; + $18 = HEAP32[$16 >> 2] | 0; + HEAP32[$16 >> 2] = HEAP32[$17 >> 2]; + HEAP32[$17 >> 2] = $18; + HEAP32[$__v >> 2] = HEAP32[$3 >> 2]; + return; +} + +function _strlen($s) { + $s = $s | 0; + var $$01$lcssa = 0, $$014 = 0, $$1$lcssa = 0, $$lcssa20 = 0, $$pn = 0, $$pn15 = 0, $0 = 0, $18 = 0, $21 = 0, $5 = 0, $9 = 0, $w$0 = 0, $w$0$lcssa = 0, label = 0; + $0 = $s; + L1 : do if (!($0 & 3)) { + $$01$lcssa = $s; + label = 4; + } else { + $$014 = $s; + $21 = $0; + while (1) { + if (!(HEAP8[$$014 >> 0] | 0)) { + $$pn = $21; + break L1; + } + $5 = $$014 + 1 | 0; + $21 = $5; + if (!($21 & 3)) { + $$01$lcssa = $5; + label = 4; + break; + } else $$014 = $5; + } + } while (0); + if ((label | 0) == 4) { + $w$0 = $$01$lcssa; + while (1) { + $9 = HEAP32[$w$0 >> 2] | 0; + if (!(($9 & -2139062144 ^ -2139062144) & $9 + -16843009)) $w$0 = $w$0 + 4 | 0; else { + $$lcssa20 = $9; + $w$0$lcssa = $w$0; + break; + } + } + if (!(($$lcssa20 & 255) << 24 >> 24)) $$1$lcssa = $w$0$lcssa; else { + $$pn15 = $w$0$lcssa; + while (1) { + $18 = $$pn15 + 1 | 0; + if (!(HEAP8[$18 >> 0] | 0)) { + $$1$lcssa = $18; + break; + } else $$pn15 = $18; + } + } + $$pn = $$1$lcssa; + } + return $$pn - $0 | 0; +} + +function _setMarkerInfoDir($id, $markerIndex, $dir) { + $id = $id | 0; + $markerIndex = $markerIndex | 0; + $dir = $dir | 0; + var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $6 = HEAP32[$5 >> 2] | 0; + if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) { + HEAP32[(($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0) + 16 >> 2] = $dir; + $$0 = 0; + break; + } else { + $$0 = HEAP32[523] | 0; + break; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $__s, $__n) { + $this = $this | 0; + $__s = $__s | 0; + $__n = $__n | 0; + var $0 = 0, $10 = 0, $14 = 0, $27 = 0, $3 = 0, $7 = 0, $9 = 0; + $0 = HEAP8[$this >> 0] | 0; + if (!($0 & 1)) { + $7 = 10; + $9 = $0; + } else { + $3 = HEAP32[$this >> 2] | 0; + $7 = ($3 & -2) + -1 | 0; + $9 = $3 & 255; + } + $10 = ($9 & 1) == 0; + do if ($7 >>> 0 < $__n >>> 0) { + if ($10) $27 = ($9 & 255) >>> 1; else $27 = HEAP32[$this + 4 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $7, $__n - $7 | 0, $27, 0, $27, $__n, $__s); + } else { + if ($10) $14 = $this + 1 | 0; else $14 = HEAP32[$this + 8 >> 2] | 0; + _memmove($14 | 0, $__s | 0, $__n | 0) | 0; + HEAP8[$14 + $__n >> 0] = 0; + if (!(HEAP8[$this >> 0] & 1)) { + HEAP8[$this >> 0] = $__n << 1; + break; + } else { + HEAP32[$this + 4 >> 2] = $__n; + break; + } + } while (0); + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, $__n) { + $this = $this | 0; + $__s = $__s | 0; + $__n = $__n | 0; + var $0 = 0, $14 = 0, $15 = 0, $24 = 0, $25 = 0, $3 = 0, $7 = 0; + $0 = HEAP8[$this >> 0] | 0; + if (!($0 & 1)) { + $14 = 10; + $7 = $0; + } else { + $3 = HEAP32[$this >> 2] | 0; + $14 = ($3 & -2) + -1 | 0; + $7 = $3 & 255; + } + if (!($7 & 1)) $15 = ($7 & 255) >>> 1; else $15 = HEAP32[$this + 4 >> 2] | 0; + if (($14 - $15 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $14, $__n - $14 + $15 | 0, $15, $15, 0, $__n, $__s); else if ($__n) { + if (!($7 & 1)) $24 = $this + 1 | 0; else $24 = HEAP32[$this + 8 >> 2] | 0; + _memcpy($24 + $15 | 0, $__s | 0, $__n | 0) | 0; + $25 = $15 + $__n | 0; + if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $25 << 1; else HEAP32[$this + 4 >> 2] = $25; + HEAP8[$24 + $25 >> 0] = 0; + } + return $this | 0; +} + +function _pad($f, $c, $w, $l, $fl) { + $f = $f | 0; + $c = $c | 0; + $w = $w | 0; + $l = $l | 0; + $fl = $fl | 0; + var $$0$lcssa6 = 0, $$02 = 0, $10 = 0, $14 = 0, $17 = 0, $18 = 0, $3 = 0, $7 = 0, $9 = 0, $pad = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 256 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $pad = sp; + do if (($w | 0) > ($l | 0) & ($fl & 73728 | 0) == 0) { + $3 = $w - $l | 0; + _memset($pad | 0, $c | 0, ($3 >>> 0 > 256 ? 256 : $3) | 0) | 0; + $7 = HEAP32[$f >> 2] | 0; + $9 = ($7 & 32 | 0) == 0; + if ($3 >>> 0 > 255) { + $10 = $w - $l | 0; + $$02 = $3; + $17 = $7; + $18 = $9; + while (1) { + if ($18) { + ___fwritex($pad, 256, $f) | 0; + $14 = HEAP32[$f >> 2] | 0; + } else $14 = $17; + $$02 = $$02 + -256 | 0; + $18 = ($14 & 32 | 0) == 0; + if ($$02 >>> 0 <= 255) break; else $17 = $14; + } + if ($18) $$0$lcssa6 = $10 & 255; else break; + } else if ($9) $$0$lcssa6 = $3; else break; + ___fwritex($pad, $$0$lcssa6, $f) | 0; + } while (0); + STACKTOP = sp; + return; +} + +function _loadCamera($cparam_name) { + $cparam_name = $cparam_name | 0; + var $$0 = 0, $15 = 0, $16 = 0, $6 = 0, $cameraID = 0, $param = 0, $vararg_buffer1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 208 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer1 = sp + 192 | 0; + $param = sp; + $cameraID = sp + 196 | 0; + if (!(HEAP8[$cparam_name >> 0] & 1)) $6 = $cparam_name + 1 | 0; else $6 = HEAP32[$cparam_name + 8 >> 2] | 0; + if ((_arParamLoad($6, 1, $param, sp + 184 | 0) | 0) < 0) { + if (!(HEAP8[$cparam_name >> 0] & 1)) $15 = $cparam_name + 1 | 0; else $15 = HEAP32[$cparam_name + 8 >> 2] | 0; + HEAP32[$vararg_buffer1 >> 2] = $15; + _arLog(3, 6092, $vararg_buffer1); + $$0 = -1; + } else { + $16 = HEAP32[521] | 0; + HEAP32[521] = $16 + 1; + HEAP32[$cameraID >> 2] = $16; + _memcpy(__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $cameraID) | 0, $param | 0, 184) | 0; + $$0 = $16; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _getMultiMarkerNum($id, $multiMarker_id) { + $id = $id | 0; + $multiMarker_id = $multiMarker_id | 0; + var $$0 = 0, $0 = 0, $3 = 0, $8 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if (($multiMarker_id | 0) < 0) $$0 = -1; else { + $8 = HEAP32[$3 + 248 >> 2] | 0; + if ((HEAP32[$3 + 252 >> 2] | 0) - $8 >> 3 >>> 0 > $multiMarker_id >>> 0) $$0 = HEAP32[(HEAP32[$8 + ($multiMarker_id << 3) + 4 >> 2] | 0) + 4 >> 2] | 0; else $$0 = -1; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _arImageProcInit($xsize, $ysize, $pixFormat, $alwaysCopy) { + $xsize = $xsize | 0; + $ysize = $ysize | 0; + $pixFormat = $pixFormat | 0; + $alwaysCopy = $alwaysCopy | 0; + var $$0 = 0, $0 = 0, $5 = 0, label = 0; + $0 = _malloc(2080) | 0; + L1 : do if (!$0) $$0 = $0; else { + HEAP32[$0 + 2068 >> 2] = $pixFormat; + L3 : do if (!$alwaysCopy) { + switch ($pixFormat | 0) { + case 5: + case 12: + case 13: + case 14: + break; + default: + { + label = 4; + break L3; + } + } + HEAP32[$0 + 2076 >> 2] = 0; + } else label = 4; while (0); + do if ((label | 0) == 4) { + $5 = _malloc(Math_imul($ysize, $xsize) | 0) | 0; + HEAP32[$0 >> 2] = $5; + if (!$5) { + _free($0); + $$0 = 0; + break L1; + } else { + HEAP32[$0 + 2076 >> 2] = 1; + break; + } + } while (0); + HEAP32[$0 + 2072 >> 2] = $alwaysCopy; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = $xsize; + HEAP32[$0 + 12 >> 2] = $ysize; + $$0 = $0; + } while (0); + return $$0 | 0; +} + +function _setPattRatio($id, $ratio) { + $id = $id | 0; + $ratio = +$ratio; + var $0 = 0, $3 = 0, $6 = 0.0, $8 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 8 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if (!($ratio <= 0.0 | $ratio >= 1.0)) { + $6 = $ratio; + $8 = HEAP32[$3 + 212 >> 2] | 0; + if ($8) if (!(_arSetPattRatio($8, $6) | 0)) { + HEAPF64[$vararg_buffer >> 3] = $6; + _arLog(1, 6512, $vararg_buffer); + } + } + } + STACKTOP = sp; + return; +} + +function _setDebugMode($id, $enable) { + $id = $id | 0; + $enable = $enable | 0; + var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $6 = ($enable | 0) != 0; + _arSetDebugMode(HEAP32[$4 >> 2] | 0, $6 & 1) | 0; + HEAP32[$vararg_buffer >> 2] = $6 ? 6615 : 6619; + _arLog(1, 6624, $vararg_buffer); + $$0 = $enable; + } + STACKTOP = sp; + return $$0 | 0; +} + +function ___remdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0; + __stackBase__ = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + $rem = __stackBase__ | 0; + $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; + $4$1 = tempRet0; + ___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0, tempRet0, $rem) | 0; + $10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0; + $10$1 = tempRet0; + STACKTOP = __stackBase__; + return (tempRet0 = $10$1, $10$0) | 0; +} + +function _fopen($filename, $mode) { + $filename = $filename | 0; + $mode = $mode | 0; + var $$0 = 0, $3 = 0, $5 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer3 = sp + 16 | 0; + $vararg_buffer = sp; + if (!(_memchr(16759, HEAP8[$mode >> 0] | 0, 4) | 0)) { + $3 = ___errno_location() | 0; + HEAP32[$3 >> 2] = 22; + $$0 = 0; + } else { + $5 = ___fmodeflags($mode) | 0 | 32768; + HEAP32[$vararg_buffer >> 2] = $filename; + HEAP32[$vararg_buffer + 4 >> 2] = $5; + HEAP32[$vararg_buffer + 8 >> 2] = 438; + $7 = ___syscall_ret(___syscall5(5, $vararg_buffer | 0) | 0) | 0; + if (($7 | 0) < 0) $$0 = 0; else { + $9 = ___fdopen($7, $mode) | 0; + if (!$9) { + HEAP32[$vararg_buffer3 >> 2] = $7; + ___syscall6(6, $vararg_buffer3 | 0) | 0; + $$0 = 0; + } else $$0 = $9; + } + } + STACKTOP = sp; + return $$0 | 0; +} + +function _cycle($width, $ar, $n) { + $width = $width | 0; + $ar = $ar | 0; + $n = $n | 0; + var $$02 = 0, $1 = 0, $4 = 0, $6 = 0, $7 = 0, $i$01 = 0, $tmp = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 256 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $tmp = sp; + L1 : do if (($n | 0) >= 2) { + $1 = $ar + ($n << 2) | 0; + HEAP32[$1 >> 2] = $tmp; + if ($width) { + $$02 = $width; + $6 = $tmp; + while (1) { + $4 = $$02 >>> 0 > 256 ? 256 : $$02; + _memcpy($6 | 0, HEAP32[$ar >> 2] | 0, $4 | 0) | 0; + $i$01 = 0; + do { + $7 = $ar + ($i$01 << 2) | 0; + $i$01 = $i$01 + 1 | 0; + _memcpy(HEAP32[$7 >> 2] | 0, HEAP32[$ar + ($i$01 << 2) >> 2] | 0, $4 | 0) | 0; + HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + $4; + } while (($i$01 | 0) != ($n | 0)); + if (($$02 | 0) == ($4 | 0)) break L1; + $$02 = $$02 - $4 | 0; + $6 = HEAP32[$1 >> 2] | 0; + } + } + } while (0); + STACKTOP = sp; + return; +} + +function _setThreshold($id, $threshold) { + $id = $id | 0; + $threshold = $threshold | 0; + var $0 = 0, $3 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + if ($threshold >>> 0 <= 255) if (!(_arSetLabelingThresh(HEAP32[$3 + 212 >> 2] | 0, $threshold) | 0)) { + HEAP32[$vararg_buffer >> 2] = $threshold; + _arLog(1, 6568, $vararg_buffer); + } + } + STACKTOP = sp; + return; +} + +function _scalbn($x, $n) { + $x = +$x; + $n = $n | 0; + var $$0 = 0, $1 = 0.0, $12 = 0, $15 = 0, $16 = 0, $2 = 0, $5 = 0, $8 = 0.0, $9 = 0, $y$0 = 0.0; + if (($n | 0) > 1023) { + $1 = $x * 8988465674311579538646525.0e283; + $2 = $n + -1023 | 0; + if (($2 | 0) > 1023) { + $5 = $n + -2046 | 0; + $$0 = ($5 | 0) > 1023 ? 1023 : $5; + $y$0 = $1 * 8988465674311579538646525.0e283; + } else { + $$0 = $2; + $y$0 = $1; + } + } else if (($n | 0) < -1022) { + $8 = $x * 2.2250738585072014e-308; + $9 = $n + 1022 | 0; + if (($9 | 0) < -1022) { + $12 = $n + 2044 | 0; + $$0 = ($12 | 0) < -1022 ? -1022 : $12; + $y$0 = $8 * 2.2250738585072014e-308; + } else { + $$0 = $9; + $y$0 = $8; + } + } else { + $$0 = $n; + $y$0 = $x; + } + $15 = _bitshift64Shl($$0 + 1023 | 0, 0, 52) | 0; + $16 = tempRet0; + HEAP32[tempDoublePtr >> 2] = $15; + HEAP32[tempDoublePtr + 4 >> 2] = $16; + return +($y$0 * +HEAPF64[tempDoublePtr >> 3]); +} + +function _wcrtomb($s, $wc, $st) { + $s = $s | 0; + $wc = $wc | 0; + $st = $st | 0; + var $$0 = 0, $45 = 0; + do if (!$s) $$0 = 1; else { + if ($wc >>> 0 < 128) { + HEAP8[$s >> 0] = $wc; + $$0 = 1; + break; + } + if ($wc >>> 0 < 2048) { + HEAP8[$s >> 0] = $wc >>> 6 | 192; + HEAP8[$s + 1 >> 0] = $wc & 63 | 128; + $$0 = 2; + break; + } + if ($wc >>> 0 < 55296 | ($wc & -8192 | 0) == 57344) { + HEAP8[$s >> 0] = $wc >>> 12 | 224; + HEAP8[$s + 1 >> 0] = $wc >>> 6 & 63 | 128; + HEAP8[$s + 2 >> 0] = $wc & 63 | 128; + $$0 = 3; + break; + } + if (($wc + -65536 | 0) >>> 0 < 1048576) { + HEAP8[$s >> 0] = $wc >>> 18 | 240; + HEAP8[$s + 1 >> 0] = $wc >>> 12 & 63 | 128; + HEAP8[$s + 2 >> 0] = $wc >>> 6 & 63 | 128; + HEAP8[$s + 3 >> 0] = $wc & 63 | 128; + $$0 = 4; + break; + } else { + $45 = ___errno_location() | 0; + HEAP32[$45 >> 2] = 84; + $$0 = -1; + break; + } + } while (0); + return $$0 | 0; +} + +function _getThresholdMode($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $7 = 0, $thresholdMode = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $thresholdMode = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) { + STACKTOP = sp; + return -1; + } else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $7 = (_arGetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $thresholdMode) | 0) == 0; + STACKTOP = sp; + return ($7 ? HEAP32[$thresholdMode >> 2] | 0 : -1) | 0; + } + return 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $1 = 0, $10 = 0, $12 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; + HEAP8[$this >> 0] = 16; + $1 = $s; + $2 = $1; + $3 = HEAPU8[$2 >> 0] | HEAPU8[$2 + 1 >> 0] << 8 | HEAPU8[$2 + 2 >> 0] << 16 | HEAPU8[$2 + 3 >> 0] << 24; + $5 = $1 + 4 | 0; + $6 = HEAPU8[$5 >> 0] | HEAPU8[$5 + 1 >> 0] << 8 | HEAPU8[$5 + 2 >> 0] << 16 | HEAPU8[$5 + 3 >> 0] << 24; + $7 = $this + 1 | 0; + $8 = $7; + HEAP8[$8 >> 0] = $3; + HEAP8[$8 + 1 >> 0] = $3 >> 8; + HEAP8[$8 + 2 >> 0] = $3 >> 16; + HEAP8[$8 + 3 >> 0] = $3 >> 24; + $10 = $7 + 4 | 0; + HEAP8[$10 >> 0] = $6; + HEAP8[$10 + 1 >> 0] = $6 >> 8; + HEAP8[$10 + 2 >> 0] = $6 >> 16; + HEAP8[$10 + 3 >> 0] = $6 >> 24; + HEAP8[$this + 9 >> 0] = 0; + $12 = $this + 12 | 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$12 + 4 >> 2] = 0; + HEAP32[$12 + 8 >> 2] = 0; + return; +} + +function _getImageProcMode($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $7 = 0, $imageProcMode = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $imageProcMode = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) { + STACKTOP = sp; + return -1; + } else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $7 = (_arGetImageProcMode(HEAP32[$4 >> 2] | 0, $imageProcMode) | 0) == 0; + STACKTOP = sp; + return ($7 ? HEAP32[$imageProcMode >> 2] | 0 : -1) | 0; + } + return 0; +} + +function __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v) { + $this = $this | 0; + $__v = $__v | 0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $3 = 0, $6 = 0; + $0 = HEAP32[$this >> 2] | 0; + $1 = $this + 4 | 0; + $3 = $__v + 4 | 0; + $6 = (HEAP32[$1 >> 2] | 0) - $0 | 0; + $10 = (HEAP32[$3 >> 2] | 0) + (0 - ($6 >> 3) << 3) | 0; + HEAP32[$3 >> 2] = $10; + _memcpy($10 | 0, $0 | 0, $6 | 0) | 0; + $11 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = HEAP32[$3 >> 2]; + HEAP32[$3 >> 2] = $11; + $13 = $__v + 8 | 0; + $14 = HEAP32[$1 >> 2] | 0; + HEAP32[$1 >> 2] = HEAP32[$13 >> 2]; + HEAP32[$13 >> 2] = $14; + $16 = $this + 8 | 0; + $17 = $__v + 12 | 0; + $18 = HEAP32[$16 >> 2] | 0; + HEAP32[$16 >> 2] = HEAP32[$17 >> 2]; + HEAP32[$17 >> 2] = $18; + HEAP32[$__v >> 2] = HEAP32[$3 >> 2]; + return; +} + +function _setPatternDetectionMode($id, $mode) { + $id = $id | 0; + $mode = $mode | 0; + var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + if (!(_arSetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) { + HEAP32[$vararg_buffer >> 2] = $mode; + _arLog(1, 6477, $vararg_buffer); + } + } + STACKTOP = sp; + return; +} + +function _getLabelingMode($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $7 = 0, $labelingMode = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $labelingMode = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) { + STACKTOP = sp; + return -1; + } else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $7 = (_arGetLabelingMode(HEAP32[$4 >> 2] | 0, $labelingMode) | 0) == 0; + STACKTOP = sp; + return ($7 ? HEAP32[$labelingMode >> 2] | 0 : -1) | 0; + } + return 0; +} + +function _arMatrixDup($dest, $source) { + $dest = $dest | 0; + $source = $source | 0; + var $$0 = 0, $1 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $6 = 0, $c$02 = 0, $r$03 = 0; + $1 = HEAP32[$dest + 4 >> 2] | 0; + if (($1 | 0) == (HEAP32[$source + 4 >> 2] | 0)) { + $6 = HEAP32[$dest + 8 >> 2] | 0; + if (($6 | 0) == (HEAP32[$source + 8 >> 2] | 0)) if (($1 | 0) > 0) { + $11 = ($6 | 0) > 0; + $r$03 = 0; + do { + $12 = Math_imul($6, $r$03) | 0; + if ($11) { + $13 = HEAP32[$source >> 2] | 0; + $14 = HEAP32[$dest >> 2] | 0; + $c$02 = 0; + do { + $15 = $12 + $c$02 | 0; + HEAPF64[$14 + ($15 << 3) >> 3] = +HEAPF64[$13 + ($15 << 3) >> 3]; + $c$02 = $c$02 + 1 | 0; + } while (($c$02 | 0) < ($6 | 0)); + } + $r$03 = $r$03 + 1 | 0; + } while (($r$03 | 0) < ($1 | 0)); + $$0 = 0; + } else $$0 = 0; else $$0 = -1; + } else $$0 = -1; + return $$0 | 0; +} + +function _setThresholdMode($id, $mode) { + $id = $id | 0; + $mode = $mode | 0; + var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + if (!(_arSetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) { + HEAP32[$vararg_buffer >> 2] = $mode; + _arLog(1, 6589, $vararg_buffer); + } + } + STACKTOP = sp; + return; +} + +function _getPattRatio($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $5 = 0, $8 = 0, $pattRatio = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 8 | 0; + $pattRatio = sp; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $5 = HEAP32[$4 >> 2] | 0; + if ($5) { + $8 = (_arGetPattRatio($5, $pattRatio) | 0) == 0; + STACKTOP = sp; + return +($8 ? +HEAPF64[$pattRatio >> 3] : -1.0); + } + } + STACKTOP = sp; + return -1.0; +} + +function _setImageProcMode($id, $mode) { + $id = $id | 0; + $mode = $mode | 0; + var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + if (!(_arSetImageProcMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) { + HEAP32[$vararg_buffer >> 2] = $mode; + _arLog(1, 6646, $vararg_buffer); + } + } + STACKTOP = sp; + return; +} + +function _setLabelingMode($id, $mode) { + $id = $id | 0; + $mode = $mode | 0; + var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $0 = sp + 4 | 0; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + if (!(_arSetLabelingMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) { + HEAP32[$vararg_buffer >> 2] = $mode; + _arLog(1, 6543, $vararg_buffer); + } + } + STACKTOP = sp; + return; +} + +function _getThreshold($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $7 = 0, $threshold = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $threshold = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) { + STACKTOP = sp; + return -1; + } else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $7 = (_arGetLabelingThresh(HEAP32[$4 >> 2] | 0, $threshold) | 0) == 0; + STACKTOP = sp; + return ($7 ? HEAP32[$threshold >> 2] | 0 : -1) | 0; + } + return 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) { + $first = $first | 0; + $last = $last | 0; + $cv = $cv | 0; + var $$0 = 0, $$1 = 0, $$2 = 0, $1 = 0, $10 = 0, $12 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; + HEAP32[$cv >> 2] = 0; + if (($first | 0) == ($last | 0)) $$2 = $first; else { + $1 = HEAP8[$first >> 0] | 0; + if ($1 << 24 >> 24 == 114) { + HEAP32[$cv >> 2] = 4; + $3 = $first + 1 | 0; + $$0 = $3; + $5 = HEAP8[$3 >> 0] | 0; + $7 = 4; + } else { + $$0 = $first; + $5 = $1; + $7 = 0; + } + if ($5 << 24 >> 24 == 86) { + $6 = $7 | 2; + HEAP32[$cv >> 2] = $6; + $8 = $$0 + 1 | 0; + $$1 = $8; + $10 = HEAP8[$8 >> 0] | 0; + $12 = $6; + } else { + $$1 = $$0; + $10 = $5; + $12 = $7; + } + if ($10 << 24 >> 24 == 75) { + HEAP32[$cv >> 2] = $12 | 1; + $$2 = $$1 + 1 | 0; + } else $$2 = $$1; + } + return $$2 | 0; +} + +function _getPatternDetectionMode($id) { + $id = $id | 0; + var $0 = 0, $4 = 0, $7 = 0, $mode = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $mode = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) { + STACKTOP = sp; + return -1; + } else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $7 = (_arGetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0) == 0; + STACKTOP = sp; + return ($7 ? HEAP32[$mode >> 2] | 0 : -1) | 0; + } + return 0; +} + +function _strerror($e) { + $e = $e | 0; + var $$lcssa = 0, $9 = 0, $i$03 = 0, $i$03$lcssa = 0, $i$12 = 0, $s$0$lcssa = 0, $s$01 = 0, $s$1 = 0, label = 0; + $i$03 = 0; + while (1) { + if ((HEAPU8[14592 + $i$03 >> 0] | 0) == ($e | 0)) { + $i$03$lcssa = $i$03; + label = 2; + break; + } + $i$03 = $i$03 + 1 | 0; + if (($i$03 | 0) == 87) { + $i$12 = 87; + $s$01 = 14680; + label = 5; + break; + } + } + if ((label | 0) == 2) if (!$i$03$lcssa) $s$0$lcssa = 14680; else { + $i$12 = $i$03$lcssa; + $s$01 = 14680; + label = 5; + } + if ((label | 0) == 5) while (1) { + label = 0; + $s$1 = $s$01; + while (1) { + $9 = $s$1 + 1 | 0; + if (!(HEAP8[$s$1 >> 0] | 0)) { + $$lcssa = $9; + break; + } else $s$1 = $9; + } + $i$12 = $i$12 + -1 | 0; + if (!$i$12) { + $s$0$lcssa = $$lcssa; + break; + } else { + $s$01 = $$lcssa; + label = 5; + } + } + return $s$0$lcssa | 0; +} + +function __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_($__first, $__last, $__value_, $__comp) { + $__first = $__first | 0; + $__last = $__last | 0; + $__value_ = $__value_ | 0; + $__comp = $__comp | 0; + var $$0$ph = 0, $$0$ph$lcssa = 0, $$lcssa = 0, $4 = 0, $6 = 0, $__len$0 = 0, $__len$0$lcssa7 = 0, $__len$0$ph = 0; + $4 = HEAP32[$__value_ >> 2] | 0; + $$0$ph = $__first; + $__len$0$ph = $__last - $__first >> 2; + L1 : while (1) { + $__len$0 = $__len$0$ph; + while (1) { + if (!$__len$0) { + $$0$ph$lcssa = $$0$ph; + break L1; + } + $6 = ($__len$0 | 0) / 2 | 0; + if ((HEAP32[$$0$ph + ($6 << 2) >> 2] | 0) >>> 0 < $4 >>> 0) { + $$lcssa = $6; + $__len$0$lcssa7 = $__len$0; + break; + } else $__len$0 = $6; + } + $$0$ph = $$0$ph + ($$lcssa + 1 << 2) | 0; + $__len$0$ph = $__len$0$lcssa7 + -1 - $$lcssa | 0; + } + return $$0$ph$lcssa | 0; +} + +function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($agg$result, $__lhs, $__rhs) { + $agg$result = $agg$result | 0; + $__lhs = $__lhs | 0; + $__rhs = $__rhs | 0; + var $10 = 0, $2 = 0, $3 = 0; + HEAP32[$agg$result >> 2] = 0; + HEAP32[$agg$result + 4 >> 2] = 0; + HEAP32[$agg$result + 8 >> 2] = 0; + $2 = _strlen($__lhs) | 0; + $3 = HEAP8[$__rhs >> 0] | 0; + $10 = ($3 & 1) == 0 ? ($3 & 255) >>> 1 : HEAP32[$__rhs + 4 >> 2] | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $__lhs, $2, $10 + $2 | 0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, (HEAP8[$__rhs >> 0] & 1) == 0 ? $__rhs + 1 | 0 : HEAP32[$__rhs + 8 >> 2] | 0, $10) | 0; + return; +} + +function _frexp($x, $e) { + $x = +$x; + $e = $e | 0; + var $$0 = 0.0, $$01 = 0.0, $0 = 0, $1 = 0, $2 = 0, $4 = 0, $7 = 0.0, $storemerge = 0; + HEAPF64[tempDoublePtr >> 3] = $x; + $0 = HEAP32[tempDoublePtr >> 2] | 0; + $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0; + $2 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0; + $4 = $2 & 2047; + switch ($4 | 0) { + case 0: + { + if ($x != 0.0) { + $7 = +_frexp($x * 18446744073709551616.0, $e); + $$01 = $7; + $storemerge = (HEAP32[$e >> 2] | 0) + -64 | 0; + } else { + $$01 = $x; + $storemerge = 0; + } + HEAP32[$e >> 2] = $storemerge; + $$0 = $$01; + break; + } + case 2047: + { + $$0 = $x; + break; + } + default: + { + HEAP32[$e >> 2] = $4 + -1022; + HEAP32[tempDoublePtr >> 2] = $0; + HEAP32[tempDoublePtr + 4 >> 2] = $1 & -2146435073 | 1071644672; + $$0 = +HEAPF64[tempDoublePtr >> 3]; + } + } + return +$$0; +} + +function ___fseeko_unlocked($f, $off, $whence) { + $f = $f | 0; + $off = $off | 0; + $whence = $whence | 0; + var $$0 = 0, $$01 = 0, $11 = 0, $9 = 0, label = 0; + if (($whence | 0) == 1) $$01 = $off - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) | 0; else $$01 = $off; + $9 = $f + 20 | 0; + $11 = $f + 28 | 0; + if ((HEAP32[$9 >> 2] | 0) >>> 0 > (HEAP32[$11 >> 2] | 0) >>> 0) { + FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0; + if (!(HEAP32[$9 >> 2] | 0)) $$0 = -1; else label = 5; + } else label = 5; + if ((label | 0) == 5) { + HEAP32[$f + 16 >> 2] = 0; + HEAP32[$11 >> 2] = 0; + HEAP32[$9 >> 2] = 0; + if ((FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $$01, $whence) | 0) < 0) $$0 = -1; else { + HEAP32[$f + 8 >> 2] = 0; + HEAP32[$f + 4 >> 2] = 0; + HEAP32[$f >> 2] = HEAP32[$f >> 2] & -17; + $$0 = 0; + } + } + return $$0 | 0; +} + +function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($agg$result, $__lhs, $__rhs) { + $agg$result = $agg$result | 0; + $__lhs = $__lhs | 0; + $__rhs = $__rhs | 0; + var $10 = 0, $2 = 0, $4 = 0, $9 = 0; + HEAP32[$agg$result >> 2] = 0; + HEAP32[$agg$result + 4 >> 2] = 0; + HEAP32[$agg$result + 8 >> 2] = 0; + $2 = HEAP8[$__lhs >> 0] | 0; + $4 = ($2 & 1) == 0; + $9 = $4 ? ($2 & 255) >>> 1 : HEAP32[$__lhs + 4 >> 2] | 0; + $10 = _strlen($__rhs) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $4 ? $__lhs + 1 | 0 : HEAP32[$__lhs + 8 >> 2] | 0, $9, $9 + $10 | 0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, $__rhs, $10) | 0; + return; +} + +function _icpGetU_from_X_by_MatX2U($u, $matX2U, $coord3d) { + $u = $u | 0; + $matX2U = $matX2U | 0; + $coord3d = $coord3d | 0; + var $$0 = 0, $0 = 0.0, $18 = 0.0, $2 = 0.0, $33 = 0.0, $4 = 0.0; + $0 = +HEAPF64[$coord3d >> 3]; + $2 = +HEAPF64[$coord3d + 8 >> 3]; + $4 = +HEAPF64[$coord3d + 16 >> 3]; + $18 = +HEAPF64[$matX2U + 88 >> 3] + ($0 * +HEAPF64[$matX2U + 64 >> 3] + $2 * +HEAPF64[$matX2U + 72 >> 3] + $4 * +HEAPF64[$matX2U + 80 >> 3]); + if ($18 == 0.0) $$0 = -1; else { + $33 = +HEAPF64[$matX2U + 56 >> 3] + ($0 * +HEAPF64[$matX2U + 32 >> 3] + $2 * +HEAPF64[$matX2U + 40 >> 3] + $4 * +HEAPF64[$matX2U + 48 >> 3]); + HEAPF64[$u >> 3] = (+HEAPF64[$matX2U + 24 >> 3] + ($0 * +HEAPF64[$matX2U >> 3] + $2 * +HEAPF64[$matX2U + 8 >> 3] + $4 * +HEAPF64[$matX2U + 16 >> 3])) / $18; + HEAPF64[$u + 8 >> 3] = $33 / $18; + $$0 = 0; + } + return $$0 | 0; +} + +function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($this, $__x, $__a) { + $this = $this | 0; + $__x = $__x | 0; + $__a = $__a | 0; + var $0 = 0, $2 = 0, $5 = 0; + HEAP32[$this >> 2] = 0; + $0 = $this + 4 | 0; + HEAP32[$0 >> 2] = 0; + $2 = HEAP32[$__a >> 2] | 0; + HEAP32[$this + 8 >> 2] = 0; + HEAP32[$this + 12 >> 2] = $2; + $5 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($2, 24) | 0; + HEAP32[$0 >> 2] = $5; + HEAP32[$this >> 2] = $5; + HEAP32[$this + 8 >> 2] = $5 + 24; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5, $__x); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5 + 12 | 0, $__x + 12 | 0); + HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + 24; + return; +} + +function _getMatrixCodeType($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $4 = 0, $matrixType = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $matrixType = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + _arGetMatrixCodeType(HEAP32[$4 >> 2] | 0, $matrixType) | 0; + $$0 = HEAP32[$matrixType >> 2] | 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) { + $first = $first | 0; + $last = $last | 0; + var $$0 = 0, $$1 = 0, $$first = 0, $5 = 0, $t$0$pn = 0; + L1 : do if (($first | 0) == ($last | 0)) $$1 = $first; else { + $$first = (HEAP8[$first >> 0] | 0) == 110 ? $first + 1 | 0 : $first; + if (($$first | 0) == ($last | 0)) $$1 = $first; else { + $5 = HEAP8[$$first >> 0] | 0; + if ($5 << 24 >> 24 == 48) { + $$1 = $$first + 1 | 0; + break; + } + if (($5 + -49 & 255) < 9) { + $t$0$pn = $$first; + while (1) { + $$0 = $t$0$pn + 1 | 0; + if (($$0 | 0) == ($last | 0)) { + $$1 = $last; + break L1; + } + if (((HEAP8[$$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $t$0$pn = $$0; else { + $$1 = $$0; + break; + } + } + } else $$1 = $first; + } + } while (0); + return $$1 | 0; +} + +function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $this + 8 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($1 | 0)) { + $6 = $3; + do { + $5 = $6 + -16 | 0; + HEAP32[$2 >> 2] = $5; + __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($1 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0); + return; +} + +function __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $0 = HEAP32[$this >> 2] | 0; + if ($0) { + $2 = $this + 4 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($0 | 0)) { + $6 = $3; + do { + $5 = $6 + -16 | 0; + HEAP32[$2 >> 2] = $5; + __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($0 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0); + } + return; +} + +function _getDebugMode($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $4 = 0, $enable = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp + 4 | 0; + $enable = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + _arGetDebugMode(HEAP32[$4 >> 2] | 0, $enable) | 0; + $$0 = HEAP32[$enable >> 2] | 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _realloc($oldmem, $bytes) { + $oldmem = $oldmem | 0; + $bytes = $bytes | 0; + var $12 = 0, $15 = 0, $20 = 0, $3 = 0, $9 = 0, $mem$0 = 0; + if (!$oldmem) { + $mem$0 = _malloc($bytes) | 0; + return $mem$0 | 0; + } + if ($bytes >>> 0 > 4294967231) { + $3 = ___errno_location() | 0; + HEAP32[$3 >> 2] = 12; + $mem$0 = 0; + return $mem$0 | 0; + } + $9 = _try_realloc_chunk($oldmem + -8 | 0, $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8) | 0; + if ($9) { + $mem$0 = $9 + 8 | 0; + return $mem$0 | 0; + } + $12 = _malloc($bytes) | 0; + if (!$12) { + $mem$0 = 0; + return $mem$0 | 0; + } + $15 = HEAP32[$oldmem + -4 >> 2] | 0; + $20 = ($15 & -8) - (($15 & 3 | 0) == 0 ? 8 : 4) | 0; + _memcpy($12 | 0, $oldmem | 0, ($20 >>> 0 < $bytes >>> 0 ? $20 : $bytes) | 0) | 0; + _free($oldmem); + $mem$0 = $12; + return $mem$0 | 0; +} + +function _arSetDebugMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0, $11 = 0, $4 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + do if (!$handle) $$0 = -1; else if ((HEAP32[$handle >> 2] | 0) == ($mode | 0)) $$0 = 0; else { + HEAP32[$handle >> 2] = $mode; + if (!$mode) { + $4 = $handle + 4834148 | 0; + _free(HEAP32[$4 >> 2] | 0); + HEAP32[$4 >> 2] = 0; + $$0 = 0; + break; + } + $11 = _malloc(Math_imul(HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 36 >> 2] | 0) | 0) | 0; + HEAP32[$handle + 4834148 >> 2] = $11; + if (!$11) { + _arLog(3, 5471, $vararg_buffer); + _exit(1); + } else $$0 = 0; + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _vasprintf($s, $fmt, $ap) { + $s = $s | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + var $$0 = 0, $0 = 0, $10 = 0, $2 = 0, $5 = 0, $9 = 0, $ap2 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ap2 = sp; + $0 = _malloc(240) | 0; + do if (!$0) $$0 = -1; else { + HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2]; + $2 = _vsnprintf($0, 240, $fmt, $ap2) | 0; + if ($2 >>> 0 < 240) { + $5 = _realloc($0, $2 + 1 | 0) | 0; + HEAP32[$s >> 2] = ($5 | 0) != 0 ? $5 : $0; + $$0 = $2; + break; + } + _free($0); + if (($2 | 0) < 0) $$0 = -1; else { + $9 = $2 + 1 | 0; + $10 = _malloc($9) | 0; + HEAP32[$s >> 2] = $10; + if (!$10) $$0 = -1; else $$0 = _vsnprintf($10, $9, $fmt, $ap) | 0; + } + } while (0); + STACKTOP = sp; + return $$0 | 0; +} + +function _icpCreateHandle($matXc2U) { + $matXc2U = $matXc2U | 0; + var $$0 = 0, $0 = 0, $j$04 = 0; + $0 = _malloc(136) | 0; + if (!$0) $$0 = 0; else { + $j$04 = 0; + do { + HEAPF64[$0 + ($j$04 << 5) >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) >> 3]; + HEAPF64[$0 + ($j$04 << 5) + 8 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 8 >> 3]; + HEAPF64[$0 + ($j$04 << 5) + 16 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 16 >> 3]; + HEAPF64[$0 + ($j$04 << 5) + 24 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 24 >> 3]; + $j$04 = $j$04 + 1 | 0; + } while (($j$04 | 0) != 3); + HEAP32[$0 + 96 >> 2] = 10; + HEAPF64[$0 + 104 >> 3] = .10000000149011612; + HEAPF64[$0 + 112 >> 3] = .9900000095367432; + HEAPF64[$0 + 120 >> 3] = 4.0; + HEAPF64[$0 + 128 >> 3] = .5; + $$0 = $0; + } + return $$0 | 0; +} + +function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $this + 8 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($1 | 0)) { + $6 = $3; + do { + $5 = $6 + -16 | 0; + HEAP32[$2 >> 2] = $5; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($1 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0); + return; +} + +function __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $0 = HEAP32[$this >> 2] | 0; + if ($0) { + $2 = $this + 4 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($0 | 0)) { + $6 = $3; + do { + $5 = $6 + -16 | 0; + HEAP32[$2 >> 2] = $5; + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($0 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0); + } + return; +} + +function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $dst_ptr = $dst_ptr | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $1 >> 8; + if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0; + $8 = HEAP32[$this >> 2] | 0; + FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 20 >> 2] & 3]($8, $info, $dst_ptr, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp); + return; +} + +function _setProjectionNearPlane($id, $projectionNearPlane) { + $id = $id | 0; + $projectionNearPlane = +$projectionNearPlane; + var $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0; + HEAPF64[$4 >> 3] = $projectionNearPlane; + } + STACKTOP = sp; + return; +} + +function _detectMarker($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else { + $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $$0 = _arDetectMarker(HEAP32[$4 + 212 >> 2] | 0, HEAP32[$4 + 196 >> 2] | 0) | 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $adjustedPtr = $adjustedPtr | 0; + $path_below = $path_below | 0; + var $0 = 0, $1 = 0, $6 = 0, $9 = 0; + $0 = $info + 16 | 0; + $1 = HEAP32[$0 >> 2] | 0; + do if (!$1) { + HEAP32[$0 >> 2] = $adjustedPtr; + HEAP32[$info + 24 >> 2] = $path_below; + HEAP32[$info + 36 >> 2] = 1; + } else { + if (($1 | 0) != ($adjustedPtr | 0)) { + $9 = $info + 36 | 0; + HEAP32[$9 >> 2] = (HEAP32[$9 >> 2] | 0) + 1; + HEAP32[$info + 24 >> 2] = 2; + HEAP8[$info + 54 >> 0] = 1; + break; + } + $6 = $info + 24 | 0; + if ((HEAP32[$6 >> 2] | 0) == 2) HEAP32[$6 >> 2] = $path_below; + } while (0); + return; +} + +function _setProjectionFarPlane($id, $projectionFarPlane) { + $id = $id | 0; + $projectionFarPlane = +$projectionFarPlane; + var $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0; + HEAPF64[$4 >> 3] = $projectionFarPlane; + } + STACKTOP = sp; + return; +} + +function _arParamObserv2IdealLTf($paramLTf, $ox, $oy, $ix, $iy) { + $paramLTf = $paramLTf | 0; + $ox = +$ox; + $oy = +$oy; + $ix = $ix | 0; + $iy = $iy | 0; + var $$0 = 0, $12 = 0, $19 = 0, $22 = 0, $4 = 0, $9 = 0; + $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ox + .5) | 0; + $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($oy + .5) | 0; + if (($4 | 0) < 0) $$0 = -1; else { + $12 = HEAP32[$paramLTf + 8 >> 2] | 0; + if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) { + $19 = HEAP32[$paramLTf + 4 >> 2] | 0; + $22 = (Math_imul($12, $9) | 0) + $4 << 1; + HEAP32[$ix >> 2] = HEAP32[$19 + ($22 << 2) >> 2]; + HEAP32[$iy >> 2] = HEAP32[$19 + (($22 | 1) << 2) >> 2]; + $$0 = 0; + } else $$0 = -1; + } + return $$0 | 0; +} + +function _arParamIdeal2ObservLTf($paramLTf, $ix, $iy, $ox, $oy) { + $paramLTf = $paramLTf | 0; + $ix = +$ix; + $iy = +$iy; + $ox = $ox | 0; + $oy = $oy | 0; + var $$0 = 0, $12 = 0, $18 = 0, $21 = 0, $4 = 0, $9 = 0; + $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ix + .5) | 0; + $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($iy + .5) | 0; + if (($4 | 0) < 0) $$0 = -1; else { + $12 = HEAP32[$paramLTf + 8 >> 2] | 0; + if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) { + $18 = HEAP32[$paramLTf >> 2] | 0; + $21 = (Math_imul($12, $9) | 0) + $4 << 1; + HEAP32[$ox >> 2] = HEAP32[$18 + ($21 << 2) >> 2]; + HEAP32[$oy >> 2] = HEAP32[$18 + (($21 | 1) << 2) >> 2]; + $$0 = 0; + } else $$0 = -1; + } + return $$0 | 0; +} + +function _arUtilMatMul($s1, $s2, $d) { + $s1 = $s1 | 0; + $s2 = $s2 | 0; + $d = $d | 0; + var $0 = 0, $1 = 0, $2 = 0, $21 = 0, $i$02 = 0, $j$03 = 0; + $j$03 = 0; + do { + $0 = $s1 + ($j$03 << 5) | 0; + $1 = $s1 + ($j$03 << 5) + 8 | 0; + $2 = $s1 + ($j$03 << 5) + 16 | 0; + $i$02 = 0; + do { + HEAPF64[$d + ($j$03 << 5) + ($i$02 << 3) >> 3] = +HEAPF64[$0 >> 3] * +HEAPF64[$s2 + ($i$02 << 3) >> 3] + +HEAPF64[$1 >> 3] * +HEAPF64[$s2 + 32 + ($i$02 << 3) >> 3] + +HEAPF64[$2 >> 3] * +HEAPF64[$s2 + 64 + ($i$02 << 3) >> 3]; + $i$02 = $i$02 + 1 | 0; + } while (($i$02 | 0) != 4); + $21 = $d + ($j$03 << 5) + 24 | 0; + HEAPF64[$21 >> 3] = +HEAPF64[$s1 + ($j$03 << 5) + 24 >> 3] + +HEAPF64[$21 >> 3]; + $j$03 = $j$03 + 1 | 0; + } while (($j$03 | 0) != 3); + return 0; +} + +function _getMultiMarkerCount($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $3 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else { + $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0; + $$0 = (HEAP32[$3 + 252 >> 2] | 0) - (HEAP32[$3 + 248 >> 2] | 0) >> 3; + } + STACKTOP = sp; + return $$0 | 0; +} + +function _getMarkerNum($id) { + $id = $id | 0; + var $$0$in = 0, $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0$in = 2088; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $$0$in = (HEAP32[$4 >> 2] | 0) + 44 | 0; + } + STACKTOP = sp; + return HEAP32[$$0$in >> 2] | 0; +} + +function _getProcessingImage($id) { + $id = $id | 0; + var $$0 = 0, $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + $$0 = HEAP32[(HEAP32[$4 >> 2] | 0) + 4834148 >> 2] | 0; + } + STACKTOP = sp; + return $$0 | 0; +} + +function ___fflush_unlocked($f) { + $f = $f | 0; + var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $9 = 0, label = 0; + $0 = $f + 20 | 0; + $2 = $f + 28 | 0; + if ((HEAP32[$0 >> 2] | 0) >>> 0 > (HEAP32[$2 >> 2] | 0) >>> 0) { + FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0; + if (!(HEAP32[$0 >> 2] | 0)) $$0 = -1; else label = 3; + } else label = 3; + if ((label | 0) == 3) { + $9 = $f + 4 | 0; + $10 = HEAP32[$9 >> 2] | 0; + $11 = $f + 8 | 0; + $12 = HEAP32[$11 >> 2] | 0; + if ($10 >>> 0 < $12 >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $10 - $12 | 0, 1) | 0; + HEAP32[$f + 16 >> 2] = 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$11 >> 2] = 0; + HEAP32[$9 >> 2] = 0; + $$0 = 0; + } + return $$0 | 0; +} + +function ___divdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $7$0 = 0, $7$1 = 0; + $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; + $4$1 = tempRet0; + $7$0 = $2$0 ^ $1$0; + $7$1 = $2$1 ^ $1$1; + return _i64Subtract((___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0, tempRet0, 0) | 0) ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0; +} + +function _setMatrixCodeType($id, $type) { + $id = $id | 0; + $type = $type | 0; + var $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0; + _arSetMatrixCodeType(HEAP32[$4 >> 2] | 0, $type) | 0; + } + STACKTOP = sp; + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($this, $__s, $__sz, $__reserve) { + $this = $this | 0; + $__s = $__s | 0; + $__sz = $__sz | 0; + $__reserve = $__reserve | 0; + var $6 = 0, $7 = 0, $__p$0 = 0; + if ($__reserve >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this); + if ($__reserve >>> 0 < 11) { + HEAP8[$this >> 0] = $__sz << 1; + $__p$0 = $this + 1 | 0; + } else { + $6 = $__reserve + 16 & -16; + $7 = _malloc($6) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this >> 2] = $6 | 1; + HEAP32[$this + 4 >> 2] = $__sz; + $__p$0 = $7; + } + _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0; + HEAP8[$__p$0 + $__sz >> 0] = 0; + return; +} + +function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $dst_ptr = $dst_ptr | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $4 = 0; + if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else { + $4 = HEAP32[$this + 8 >> 2] | 0; + FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 20 >> 2] & 3]($4, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp); + } + return; +} + +function _strtok($s, $sep) { + $s = $s | 0; + $sep = $sep | 0; + var $$0 = 0, $$01 = 0, $$sum = 0, $1 = 0, $3 = 0, $4 = 0, $8 = 0, label = 0; + if (!$s) { + $1 = HEAP32[699] | 0; + if (!$1) $$0 = 0; else { + $$01 = $1; + label = 3; + } + } else { + $$01 = $s; + label = 3; + } + do if ((label | 0) == 3) { + $3 = _strspn($$01, $sep) | 0; + $4 = $$01 + $3 | 0; + if (!(HEAP8[$4 >> 0] | 0)) { + HEAP32[699] = 0; + $$0 = 0; + break; + } + $$sum = (_strcspn($4, $sep) | 0) + $3 | 0; + $8 = $$01 + $$sum | 0; + HEAP32[699] = $8; + if (!(HEAP8[$8 >> 0] | 0)) { + HEAP32[699] = 0; + $$0 = $4; + break; + } else { + HEAP32[699] = $$01 + ($$sum + 1); + HEAP8[$8 >> 0] = 0; + $$0 = $4; + break; + } + } while (0); + return $$0 | 0; +} + +function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $1 >> 8; + if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0; + $8 = HEAP32[$this >> 2] | 0; + FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 24 >> 2] & 3]($8, $info, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp); + return; +} + +function _getProjectionNearPlane($id) { + $id = $id | 0; + var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0; + $$0 = +HEAPF64[$4 >> 3]; + } + STACKTOP = sp; + return +$$0; +} + +function _getProjectionFarPlane($id) { + $id = $id | 0; + var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + HEAP32[$0 >> 2] = $id; + if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else { + $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0; + $$0 = +HEAPF64[$4 >> 3]; + } + STACKTOP = sp; + return +$$0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($agg$result, $this) { + $agg$result = $agg$result | 0; + $this = $this | 0; + var $0 = 0, $1 = 0, $13 = 0, $3 = 0; + $0 = $this + 12 | 0; + $1 = HEAP8[$0 >> 0] | 0; + $3 = ($1 & 1) == 0; + $13 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $3 ? $0 + 1 | 0 : HEAP32[$this + 20 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$this + 16 >> 2] | 0) | 0; + HEAP32[$agg$result >> 2] = HEAP32[$13 >> 2]; + HEAP32[$agg$result + 4 >> 2] = HEAP32[$13 + 4 >> 2]; + HEAP32[$agg$result + 8 >> 2] = HEAP32[$13 + 8 >> 2]; + HEAP32[$13 >> 2] = 0; + HEAP32[$13 + 4 >> 2] = 0; + HEAP32[$13 + 8 >> 2] = 0; + return; +} + +function _arImageProcLumaHist($ipi, $dataPtr) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + var $$0 = 0, $13 = 0, $5 = 0, $8 = 0, $9 = 0, $p$03 = 0; + if (($ipi | 0) != 0 & ($dataPtr | 0) != 0) if ((_arImageProcLuma($ipi, $dataPtr) | 0) < 0) $$0 = -1; else { + _memset($ipi + 16 | 0, 0, 1024) | 0; + $5 = HEAP32[$ipi >> 2] | 0; + $8 = Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0; + $9 = $5 + $8 | 0; + if (($8 | 0) > 0) { + $p$03 = $5; + do { + $13 = $ipi + 16 + ((HEAPU8[$p$03 >> 0] | 0) << 2) | 0; + HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 1; + $p$03 = $p$03 + 1 | 0; + } while ($p$03 >>> 0 < $9 >>> 0); + $$0 = 0; + } else $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _memcpy(dest, src, num) { + dest = dest | 0; + src = src | 0; + num = num | 0; + var ret = 0; + if ((num | 0) >= 4096) return _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0; + ret = dest | 0; + if ((dest & 3) == (src & 3)) { + while (dest & 3) { + if (!num) return ret | 0; + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + num = num - 1 | 0; + } + while ((num | 0) >= 4) { + HEAP32[dest >> 2] = HEAP32[src >> 2]; + dest = dest + 4 | 0; + src = src + 4 | 0; + num = num - 4 | 0; + } + } + while ((num | 0) > 0) { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + num = num - 1 | 0; + } + return ret | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($this) { + $this = $this | 0; + var $$pre1 = 0, $0 = 0, $10 = 0, $11 = 0, $14 = 0, $16 = 0; + $0 = HEAP8[$this >> 0] | 0; + if (!($0 & 1)) { + $10 = ($0 & 255) >>> 1; + $14 = $this + 1 | 0; + } else { + $10 = HEAP32[$this + 4 >> 2] | 0; + $14 = HEAP32[$this + 8 >> 2] | 0; + } + $11 = ($10 | 0) != 0 & 1; + $$pre1 = $10 - $11 | 0; + if (($10 | 0) == ($11 | 0)) $16 = $0; else { + _memmove($14 | 0, $14 + $11 | 0, $$pre1 | 0) | 0; + $16 = HEAP8[$this >> 0] | 0; + } + if (!($16 & 1)) HEAP8[$this >> 0] = $$pre1 << 1; else HEAP32[$this + 4 >> 2] = $$pre1; + HEAP8[$14 + $$pre1 >> 0] = 0; + return; +} + +function ___stdio_seek($f, $off, $whence) { + $f = $f | 0; + $off = $off | 0; + $whence = $whence | 0; + var $5 = 0, $ret = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + $ret = sp + 20 | 0; + HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2]; + HEAP32[$vararg_buffer + 4 >> 2] = 0; + HEAP32[$vararg_buffer + 8 >> 2] = $off; + HEAP32[$vararg_buffer + 12 >> 2] = $ret; + HEAP32[$vararg_buffer + 16 >> 2] = $whence; + if ((___syscall_ret(___syscall140(140, $vararg_buffer | 0) | 0) | 0) < 0) { + HEAP32[$ret >> 2] = -1; + $5 = -1; + } else $5 = HEAP32[$ret >> 2] | 0; + STACKTOP = sp; + return $5 | 0; +} + +function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $this + 8 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($1 | 0)) { + $6 = $3; + do { + $5 = $6 + -24 | 0; + HEAP32[$2 >> 2] = $5; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($1 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0); + return; +} + +function __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this) { + $this = $this | 0; + var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0; + $0 = HEAP32[$this >> 2] | 0; + if ($0) { + $2 = $this + 4 | 0; + $3 = HEAP32[$2 >> 2] | 0; + if (($3 | 0) != ($0 | 0)) { + $6 = $3; + do { + $5 = $6 + -24 | 0; + HEAP32[$2 >> 2] = $5; + __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5); + $6 = HEAP32[$2 >> 2] | 0; + } while (($6 | 0) != ($0 | 0)); + } + $9 = HEAP32[$this >> 2] | 0; + __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0); + } + return; +} + +function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) { + $agg$result = $agg$result | 0; + $this = $this | 0; + $__k = $__k | 0; + var $1 = 0, $11 = 0, $8 = 0; + $1 = __Znwj(408) | 0; + HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2]; + _memset($1 + 16 | 0, 0, 392) | 0; + HEAPF64[$1 + 248 >> 3] = .0001; + HEAPF64[$1 + 256 >> 3] = 1.0e3; + $8 = $1 + 264 | 0; + HEAP32[$8 >> 2] = 0; + HEAP32[$8 + 4 >> 2] = 0; + HEAP32[$8 + 8 >> 2] = 0; + HEAP32[$8 + 12 >> 2] = 0; + HEAP32[$agg$result >> 2] = $1; + $11 = $agg$result + 4 | 0; + HEAP32[$11 >> 2] = $this + 8; + HEAP32[$11 + 4 >> 2] = 257; + return; +} + +function _arVecHousehold($x) { + $x = $x | 0; + var $1 = 0.0, $10 = 0.0, $12 = 0, $14 = 0, $3 = 0, $4 = 0.0, $7 = 0.0, $i$01 = 0, $s$0 = 0.0, $s$1 = 0.0; + $1 = +Math_sqrt(+(+_arVecInnerproduct($x, $x))); + if ($1 != 0.0) { + $3 = HEAP32[$x >> 2] | 0; + $4 = +HEAPF64[$3 >> 3]; + $s$0 = $4 < 0.0 ? -$1 : $1; + $7 = $4 + $s$0; + HEAPF64[$3 >> 3] = $7; + $10 = 1.0 / +Math_sqrt(+($7 * $s$0)); + $12 = HEAP32[$x + 4 >> 2] | 0; + if (($12 | 0) > 0) { + $i$01 = 0; + do { + $14 = $3 + ($i$01 << 3) | 0; + HEAPF64[$14 >> 3] = $10 * +HEAPF64[$14 >> 3]; + $i$01 = $i$01 + 1 | 0; + } while (($i$01 | 0) < ($12 | 0)); + $s$1 = $s$0; + } else $s$1 = $s$0; + } else $s$1 = $1; + return +-$s$1; +} + +function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($this, $__cap, $__start, $__a) { + $this = $this | 0; + $__cap = $__cap | 0; + $__start = $__start | 0; + $__a = $__a | 0; + var $6 = 0, $7 = 0; + HEAP32[$this + 12 >> 2] = 0; + HEAP32[$this + 16 >> 2] = $__a; + if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0; + HEAP32[$this >> 2] = $6; + $7 = $6 + ($__start << 4) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this + 4 >> 2] = $7; + HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4); + return; +} + +function _memset(ptr, value, num) { + ptr = ptr | 0; + value = value | 0; + num = num | 0; + var stop = 0, value4 = 0, stop4 = 0, unaligned = 0; + stop = ptr + num | 0; + if ((num | 0) >= 20) { + value = value & 255; + unaligned = ptr & 3; + value4 = value | value << 8 | value << 16 | value << 24; + stop4 = stop & ~3; + if (unaligned) { + unaligned = ptr + 4 - unaligned | 0; + while ((ptr | 0) < (unaligned | 0)) { + HEAP8[ptr >> 0] = value; + ptr = ptr + 1 | 0; + } + } + while ((ptr | 0) < (stop4 | 0)) { + HEAP32[ptr >> 2] = value4; + ptr = ptr + 4 | 0; + } + } + while ((ptr | 0) < (stop | 0)) { + HEAP8[ptr >> 0] = value; + ptr = ptr + 1 | 0; + } + return ptr - num | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $__s, $__sz) { + $this = $this | 0; + $__s = $__s | 0; + $__sz = $__sz | 0; + var $6 = 0, $7 = 0, $__p$0 = 0; + if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this); + if ($__sz >>> 0 < 11) { + HEAP8[$this >> 0] = $__sz << 1; + $__p$0 = $this + 1 | 0; + } else { + $6 = $__sz + 16 & -16; + $7 = _malloc($6) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this >> 2] = $6 | 1; + HEAP32[$this + 4 >> 2] = $__sz; + $__p$0 = $7; + } + _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0; + HEAP8[$__p$0 + $__sz >> 0] = 0; + return; +} + +function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $adjustedPtr = $adjustedPtr | 0; + $path_below = $path_below | 0; + var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $1 >> 8; + if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$adjustedPtr >> 2] | 0) + $2 >> 2] | 0; + $8 = HEAP32[$this >> 2] | 0; + FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 28 >> 2] & 3]($8, $info, $adjustedPtr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2); + return; +} + +function __ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E($fn, $args, $args1) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = $args1 | 0; + var $0 = 0, $1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args1); + $1 = FUNCTION_TABLE_iii[$fn & 15]($args, $0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0); + STACKTOP = sp; + return $1 | 0; +} + +function ___toread($f) { + $f = $f | 0; + var $$0 = 0, $0 = 0, $15 = 0, $2 = 0, $21 = 0, $6 = 0, $8 = 0; + $0 = $f + 74 | 0; + $2 = HEAP8[$0 >> 0] | 0; + HEAP8[$0 >> 0] = $2 + 255 | $2; + $6 = $f + 20 | 0; + $8 = $f + 44 | 0; + if ((HEAP32[$6 >> 2] | 0) >>> 0 > (HEAP32[$8 >> 2] | 0) >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0; + HEAP32[$f + 16 >> 2] = 0; + HEAP32[$f + 28 >> 2] = 0; + HEAP32[$6 >> 2] = 0; + $15 = HEAP32[$f >> 2] | 0; + if (!($15 & 20)) { + $21 = HEAP32[$8 >> 2] | 0; + HEAP32[$f + 8 >> 2] = $21; + HEAP32[$f + 4 >> 2] = $21; + $$0 = 0; + } else if (!($15 & 4)) $$0 = -1; else { + HEAP32[$f >> 2] = $15 | 32; + $$0 = -1; + } + return $$0 | 0; +} + +function _fclose($f) { + $f = $f | 0; + var $$pre = 0, $12 = 0, $18 = 0, $22 = 0, $24 = 0, $5 = 0, $7 = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) {} + $5 = (HEAP32[$f >> 2] & 1 | 0) != 0; + if (!$5) { + ___lock(2416); + $7 = HEAP32[$f + 52 >> 2] | 0; + $$pre = $f + 56 | 0; + if ($7) HEAP32[$7 + 56 >> 2] = HEAP32[$$pre >> 2]; + $12 = HEAP32[$$pre >> 2] | 0; + if ($12) HEAP32[$12 + 52 >> 2] = $7; + if ((HEAP32[603] | 0) == ($f | 0)) HEAP32[603] = $12; + ___unlock(2416); + } + $18 = _fflush($f) | 0; + $22 = FUNCTION_TABLE_ii[HEAP32[$f + 12 >> 2] & 31]($f) | 0 | $18; + $24 = HEAP32[$f + 92 >> 2] | 0; + if ($24) _free($24); + if (!$5) _free($f); + return $22 | 0; +} + +function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($this, $__cap, $__start, $__a) { + $this = $this | 0; + $__cap = $__cap | 0; + $__start = $__start | 0; + $__a = $__a | 0; + var $6 = 0, $7 = 0; + HEAP32[$this + 12 >> 2] = 0; + HEAP32[$this + 16 >> 2] = $__a; + if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0; + HEAP32[$this >> 2] = $6; + $7 = $6 + ($__start << 4) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this + 4 >> 2] = $7; + HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4); + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($this, $__s, $__sz) { + $this = $this | 0; + $__s = $__s | 0; + $__sz = $__sz | 0; + var $6 = 0, $7 = 0, $__p$0 = 0; + if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this); + if ($__sz >>> 0 < 11) { + HEAP8[$this >> 0] = $__sz << 1; + $__p$0 = $this + 1 | 0; + } else { + $6 = $__sz + 16 & -16; + $7 = __Znwj($6) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this >> 2] = $6 | 1; + HEAP32[$this + 4 >> 2] = $__sz; + $__p$0 = $7; + } + _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0; + HEAP8[$__p$0 + $__sz >> 0] = 0; + return; +} + +function _arVecInnerproduct($x, $y) { + $x = $x | 0; + $y = $y | 0; + var $1 = 0, $13 = 0.0, $6 = 0, $7 = 0, $i$02 = 0, $result$0$lcssa = 0.0, $result$01 = 0.0; + $1 = HEAP32[$x + 4 >> 2] | 0; + if (($1 | 0) != (HEAP32[$y + 4 >> 2] | 0)) _exit(0); + if (($1 | 0) > 0) { + $6 = HEAP32[$x >> 2] | 0; + $7 = HEAP32[$y >> 2] | 0; + $i$02 = 0; + $result$01 = 0.0; + while (1) { + $13 = $result$01 + +HEAPF64[$6 + ($i$02 << 3) >> 3] * +HEAPF64[$7 + ($i$02 << 3) >> 3]; + $i$02 = $i$02 + 1 | 0; + if (($i$02 | 0) >= ($1 | 0)) { + $result$0$lcssa = $13; + break; + } else $result$01 = $13; + } + } else $result$0$lcssa = 0.0; + return +$result$0$lcssa; +} + +function _memcmp($vl, $vr, $n) { + $vl = $vl | 0; + $vr = $vr | 0; + $n = $n | 0; + var $$03 = 0, $$lcssa = 0, $$lcssa19 = 0, $1 = 0, $11 = 0, $2 = 0, $l$04 = 0, $r$05 = 0; + L1 : do if (!$n) $11 = 0; else { + $$03 = $n; + $l$04 = $vl; + $r$05 = $vr; + while (1) { + $1 = HEAP8[$l$04 >> 0] | 0; + $2 = HEAP8[$r$05 >> 0] | 0; + if ($1 << 24 >> 24 != $2 << 24 >> 24) { + $$lcssa = $1; + $$lcssa19 = $2; + break; + } + $$03 = $$03 + -1 | 0; + if (!$$03) { + $11 = 0; + break L1; + } else { + $l$04 = $l$04 + 1 | 0; + $r$05 = $r$05 + 1 | 0; + } + } + $11 = ($$lcssa & 255) - ($$lcssa19 & 255) | 0; + } while (0); + return $11 | 0; +} + +function ___fmodeflags($mode) { + $mode = $mode | 0; + var $1 = 0, $2 = 0, $4 = 0, $7 = 0, $flags$0 = 0, $flags$0$ = 0, $flags$2 = 0, $flags$2$ = 0, $flags$4 = 0; + $1 = (_strchr($mode, 43) | 0) == 0; + $2 = HEAP8[$mode >> 0] | 0; + $flags$0 = $1 ? $2 << 24 >> 24 != 114 & 1 : 2; + $4 = (_strchr($mode, 120) | 0) == 0; + $flags$0$ = $4 ? $flags$0 : $flags$0 | 128; + $7 = (_strchr($mode, 101) | 0) == 0; + $flags$2 = $7 ? $flags$0$ : $flags$0$ | 524288; + $flags$2$ = $2 << 24 >> 24 == 114 ? $flags$2 : $flags$2 | 64; + $flags$4 = $2 << 24 >> 24 == 119 ? $flags$2$ | 512 : $flags$2$; + return ($2 << 24 >> 24 == 97 ? $flags$4 | 1024 : $flags$4) | 0; +} + +function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($this, $__cap, $__start, $__a) { + $this = $this | 0; + $__cap = $__cap | 0; + $__start = $__start | 0; + $__a = $__a | 0; + var $6 = 0, $7 = 0; + HEAP32[$this + 12 >> 2] = 0; + HEAP32[$this + 16 >> 2] = $__a; + if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap * 24 | 0) | 0; + HEAP32[$this >> 2] = $6; + $7 = $6 + ($__start * 24 | 0) | 0; + HEAP32[$this + 8 >> 2] = $7; + HEAP32[$this + 4 >> 2] = $7; + HEAP32[$this + 12 >> 2] = $6 + ($__cap * 24 | 0); + return; +} + +function __ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E($fn, $args) { + $fn = $fn | 0; + $args = $args | 0; + var $0 = 0, $1 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = sp; + __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args); + $1 = FUNCTION_TABLE_ii[$fn & 31]($0) | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0); + STACKTOP = sp; + return $1 | 0; +} + +function _strncat($d, $s, $n) { + $d = $d | 0; + $s = $s | 0; + $n = $n | 0; + var $$0$lcssa = 0, $$014 = 0, $$023 = 0, $$05 = 0, $1 = 0, $3 = 0, $7 = 0; + $1 = $d + (_strlen($d) | 0) | 0; + L1 : do if (!$n) $$0$lcssa = $1; else { + $$014 = $n; + $$023 = $s; + $$05 = $1; + while (1) { + $3 = HEAP8[$$023 >> 0] | 0; + if (!($3 << 24 >> 24)) { + $$0$lcssa = $$05; + break L1; + } + $$014 = $$014 + -1 | 0; + $7 = $$05 + 1 | 0; + HEAP8[$$05 >> 0] = $3; + if (!$$014) { + $$0$lcssa = $7; + break; + } else { + $$023 = $$023 + 1 | 0; + $$05 = $7; + } + } + } while (0); + HEAP8[$$0$lcssa >> 0] = 0; + return $d | 0; +} + +function _get_buff($buf, $fp) { + $buf = $buf | 0; + $fp = $fp | 0; + var $2 = 0, $5 = 0, $l$01 = 0; + L1 : do if (_fgets($buf, 256, $fp) | 0) while (1) { + $2 = _strlen($buf) | 0; + L4 : do if ($2) { + $l$01 = $2; + while (1) { + $l$01 = $l$01 + -1 | 0; + $5 = $buf + $l$01 | 0; + switch (HEAP8[$5 >> 0] | 0) { + case 13: + case 10: + break; + default: + break L4; + } + HEAP8[$5 >> 0] = 0; + if (!$l$01) break L4; + } + } while (0); + switch (HEAP8[$buf >> 0] | 0) { + case 0: + case 35: + break; + default: + break L1; + } + if (!(_fgets($buf, 256, $fp) | 0)) break L1; + } while (0); + return; +} + +function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $adjustedPtr = $adjustedPtr | 0; + $path_below = $path_below | 0; + var $4 = 0; + if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else { + $4 = HEAP32[$this + 8 >> 2] | 0; + FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 28 >> 2] & 3]($4, $info, $adjustedPtr, $path_below); + } + return; +} + +function ___stdout_write($f, $buf, $len) { + $f = $f | 0; + $buf = $buf | 0; + $len = $len | 0; + var $9 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 80 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + HEAP32[$f + 36 >> 2] = 4; + if (!(HEAP32[$f >> 2] & 64)) { + HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2]; + HEAP32[$vararg_buffer + 4 >> 2] = 21505; + HEAP32[$vararg_buffer + 8 >> 2] = sp + 12; + if (___syscall54(54, $vararg_buffer | 0) | 0) HEAP8[$f + 75 >> 0] = -1; + } + $9 = ___stdio_write($f, $buf, $len) | 0; + STACKTOP = sp; + return $9 | 0; +} + +function _arUtilGetDirectoryNameFromPath($dir, $path, $n, $addSeparator) { + $dir = $dir | 0; + $path = $path | 0; + $n = $n | 0; + $addSeparator = $addSeparator | 0; + var $$0 = 0, $10 = 0, $3 = 0; + do if (($dir | 0) != 0 & ($path | 0) != 0 & ($n | 0) != 0) { + $3 = _strrchr($path, 47) | 0; + if (!$3) { + HEAP8[$dir >> 0] = 0; + $$0 = $dir; + break; + } + $10 = $3 + (($addSeparator | 0) != 0 & 1) - $path | 0; + if (($10 + 1 | 0) >>> 0 > $n >>> 0) $$0 = 0; else { + _strncpy($dir, $path, $10) | 0; + HEAP8[$dir + $10 >> 0] = 0; + $$0 = $dir; + } + } else $$0 = 0; while (0); + return $$0 | 0; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) { + $this = $this | 0; + var $2 = 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0); + $2 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = 0; + if ($2) __ZdlPv($2); + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) { + $this = $this | 0; + $__np = $__np | 0; + var $$01 = 0, $$01$looptemp = 0; + if ($__np) { + $$01 = $__np; + do { + $$01$looptemp = $$01; + $$01 = HEAP32[$$01 >> 2] | 0; + __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($$01$looptemp + 264 | 0); + __ZdlPv($$01$looptemp); + } while (($$01 | 0) != 0); + } + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) { + $this = $this | 0; + var $2 = 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0); + $2 = HEAP32[$this >> 2] | 0; + HEAP32[$this >> 2] = 0; + if ($2) __ZdlPv($2); + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($this, $0) { + $this = $this | 0; + $0 = $0 | 0; + var $3 = 0, $4 = 0; + HEAP32[$this >> 2] = HEAP32[$0 >> 2]; + HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2]; + HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2]; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + $3 = $this + 12 | 0; + $4 = $0 + 12 | 0; + HEAP32[$3 >> 2] = HEAP32[$4 >> 2]; + HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2]; + HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2]; + HEAP32[$4 >> 2] = 0; + HEAP32[$4 + 4 >> 2] = 0; + HEAP32[$4 + 8 >> 2] = 0; + return; +} + +function _arImageProcLumaHistAndCDF($ipi, $dataPtr) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + var $$0 = 0, $0 = 0, $cdfCurrent$0 = 0, $indvars$iv = 0; + $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0; + if (($0 | 0) < 0) $$0 = $0; else { + $cdfCurrent$0 = 0; + $indvars$iv = 0; + do { + $cdfCurrent$0 = (HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0) + $cdfCurrent$0 | 0; + HEAP32[$ipi + 1040 + ($indvars$iv << 2) >> 2] = $cdfCurrent$0; + $indvars$iv = $indvars$iv + 1 | 0; + } while (($indvars$iv | 0) != 256); + $$0 = 0; + } + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0, $1 = 0, $3 = 0; + HEAP8[$this >> 0] = 8; + $0 = $this + 1 | 0; + $1 = HEAPU8[$s >> 0] | HEAPU8[$s + 1 >> 0] << 8 | HEAPU8[$s + 2 >> 0] << 16 | HEAPU8[$s + 3 >> 0] << 24; + HEAP8[$0 >> 0] = $1; + HEAP8[$0 + 1 >> 0] = $1 >> 8; + HEAP8[$0 + 2 >> 0] = $1 >> 16; + HEAP8[$0 + 3 >> 0] = $1 >> 24; + HEAP8[$this + 5 >> 0] = 0; + $3 = $this + 12 | 0; + HEAP32[$3 >> 2] = 0; + HEAP32[$3 + 4 >> 2] = 0; + HEAP32[$3 + 8 >> 2] = 0; + return; +} + +function _vsscanf($s, $fmt, $ap) { + $s = $s | 0; + $fmt = $fmt | 0; + $ap = $ap | 0; + var $4 = 0, $f = 0, dest = 0, sp = 0, stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 112 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $f = sp; + dest = $f; + stop = dest + 112 | 0; + do { + HEAP32[dest >> 2] = 0; + dest = dest + 4 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP32[$f + 32 >> 2] = 15; + HEAP32[$f + 44 >> 2] = $s; + HEAP32[$f + 76 >> 2] = -1; + HEAP32[$f + 84 >> 2] = $s; + $4 = _vfscanf($f, $fmt, $ap) | 0; + STACKTOP = sp; + return $4 | 0; +} + +function __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($this) { + $this = $this | 0; + var $$lcssa = 0, $$pre$i$i$i = 0, $1 = 0, $2 = 0, $4 = 0, $5 = 0, $7 = 0; + $1 = HEAP32[$this + 4 >> 2] | 0; + $2 = $this + 8 | 0; + $$pre$i$i$i = HEAP32[$2 >> 2] | 0; + if (($$pre$i$i$i | 0) != ($1 | 0)) { + $5 = $$pre$i$i$i; + while (1) { + $4 = $5 + -8 | 0; + if (($4 | 0) == ($1 | 0)) { + $$lcssa = $4; + break; + } else $5 = $4; + } + HEAP32[$2 >> 2] = $$lcssa; + } + $7 = HEAP32[$this >> 2] | 0; + if ($7) __ZdlPv($7); + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($this, $__str) { + $this = $this | 0; + $__str = $__str | 0; + if (!(HEAP8[$__str >> 0] & 1)) { + HEAP32[$this >> 2] = HEAP32[$__str >> 2]; + HEAP32[$this + 4 >> 2] = HEAP32[$__str + 4 >> 2]; + HEAP32[$this + 8 >> 2] = HEAP32[$__str + 8 >> 2]; + } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, HEAP32[$__str + 8 >> 2] | 0, HEAP32[$__str + 4 >> 2] | 0); + return; +} + +function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) { + $this = $this | 0; + $info = $info | 0; + $dst_ptr = $dst_ptr | 0; + $current_ptr = $current_ptr | 0; + $path_below = $path_below | 0; + $use_strcmp = $use_strcmp | 0; + if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0, $2 = 0; + HEAP8[$this >> 0] = 10; + $0 = $this + 1 | 0; + HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0; + HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0; + HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0; + HEAP8[$0 + 3 >> 0] = HEAP8[$s + 3 >> 0] | 0; + HEAP8[$0 + 4 >> 0] = HEAP8[$s + 4 >> 0] | 0; + HEAP8[$this + 6 >> 0] = 0; + $2 = $this + 12 | 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + return; +} + +function _fwrite($src, $size, $nmemb, $f) { + $src = $src | 0; + $size = $size | 0; + $nmemb = $nmemb | 0; + $f = $f | 0; + var $0 = 0, $10 = 0, $6 = 0, $8 = 0, $phitmp = 0; + $0 = Math_imul($nmemb, $size) | 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) { + $phitmp = (___lockfile($f) | 0) == 0; + $6 = ___fwritex($src, $0, $f) | 0; + if ($phitmp) $8 = $6; else { + ___unlockfile($f); + $8 = $6; + } + } else $8 = ___fwritex($src, $0, $f) | 0; + if (($8 | 0) == ($0 | 0)) $10 = $nmemb; else $10 = ($8 >>> 0) / ($size >>> 0) | 0; + return $10 | 0; +} + +function ___string_read($f, $buf, $len) { + $f = $f | 0; + $buf = $buf | 0; + $len = $len | 0; + var $0 = 0, $1 = 0, $11 = 0, $2 = 0, $3 = 0, $k$0 = 0, $k$0$len = 0; + $0 = $f + 84 | 0; + $1 = HEAP32[$0 >> 2] | 0; + $2 = $len + 256 | 0; + $3 = _memchr($1, 0, $2) | 0; + $k$0 = ($3 | 0) == 0 ? $2 : $3 - $1 | 0; + $k$0$len = $k$0 >>> 0 < $len >>> 0 ? $k$0 : $len; + _memcpy($buf | 0, $1 | 0, $k$0$len | 0) | 0; + HEAP32[$f + 4 >> 2] = $1 + $k$0$len; + $11 = $1 + $k$0 | 0; + HEAP32[$f + 8 >> 2] = $11; + HEAP32[$0 >> 2] = $11; + return $k$0$len | 0; +} + +function __Znwj($size) { + $size = $size | 0; + var $$lcssa = 0, $$size = 0, $1 = 0, $3 = 0, $5 = 0, $7 = 0; + $$size = ($size | 0) == 0 ? 1 : $size; + $1 = _malloc($$size) | 0; + L1 : do if (!$1) { + while (1) { + $3 = __ZSt15get_new_handlerv() | 0; + if (!$3) break; + FUNCTION_TABLE_v[$3 & 0](); + $5 = _malloc($$size) | 0; + if ($5) { + $$lcssa = $5; + break L1; + } + } + $7 = ___cxa_allocate_exception(4) | 0; + HEAP32[$7 >> 2] = 2224; + ___cxa_throw($7 | 0, 544, 1); + } else $$lcssa = $1; while (0); + return $$lcssa | 0; +} + +function _calloc($n_elements, $elem_size) { + $n_elements = $n_elements | 0; + $elem_size = $elem_size | 0; + var $1 = 0, $6 = 0, $req$0 = 0; + if (!$n_elements) $req$0 = 0; else { + $1 = Math_imul($elem_size, $n_elements) | 0; + if (($elem_size | $n_elements) >>> 0 > 65535) $req$0 = (($1 >>> 0) / ($n_elements >>> 0) | 0 | 0) == ($elem_size | 0) ? $1 : -1; else $req$0 = $1; + } + $6 = _malloc($req$0) | 0; + if (!$6) return $6 | 0; + if (!(HEAP32[$6 + -4 >> 2] & 3)) return $6 | 0; + _memset($6 | 0, 0, $req$0 | 0) | 0; + return $6 | 0; +} + +function ___muldi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0; + $x_sroa_0_0_extract_trunc = $a$0; + $y_sroa_0_0_extract_trunc = $b$0; + $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0; + $1$1 = tempRet0; + return (tempRet0 = (Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0) + (Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $1$1 | $1$1 & 0, $1$0 | 0 | 0) | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($this) { + $this = $this | 0; + __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this + 32 | 0); + __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this + 16 | 0); + __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this); + return; +} + +function __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($this, $__cap, $__start, $__a) { + $this = $this | 0; + $__cap = $__cap | 0; + $__start = $__start | 0; + $__a = $__a | 0; + var $5 = 0, $6 = 0; + HEAP32[$this + 12 >> 2] = 0; + HEAP32[$this + 16 >> 2] = $__a; + if (!$__cap) $5 = 0; else $5 = __Znwj($__cap << 3) | 0; + HEAP32[$this >> 2] = $5; + $6 = $5 + ($__start << 3) | 0; + HEAP32[$this + 8 >> 2] = $6; + HEAP32[$this + 4 >> 2] = $6; + HEAP32[$this + 12 >> 2] = $5 + ($__cap << 3); + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($this, $__str) { + $this = $this | 0; + $__str = $__str | 0; + var $1 = 0, $3 = 0; + if (($this | 0) != ($__str | 0)) { + $1 = HEAP8[$__str >> 0] | 0; + $3 = ($1 & 1) == 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $3 ? $__str + 1 | 0 : HEAP32[$__str + 8 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$__str + 4 >> 2] | 0); + } + return; +} + +function __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($this) { + $this = $this | 0; + var $$lcssa = 0, $$pre$i$i = 0, $0 = 0, $2 = 0, $4 = 0, $5 = 0; + $0 = HEAP32[$this >> 2] | 0; + if ($0) { + $2 = $this + 4 | 0; + $$pre$i$i = HEAP32[$2 >> 2] | 0; + if (($$pre$i$i | 0) != ($0 | 0)) { + $5 = $$pre$i$i; + while (1) { + $4 = $5 + -8 | 0; + if (($4 | 0) == ($0 | 0)) { + $$lcssa = $4; + break; + } else $5 = $4; + } + HEAP32[$2 >> 2] = $$lcssa; + } + __ZdlPv($0); + } + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $2 = 0, dest = 0, src = 0, stop = 0; + HEAP8[$this >> 0] = 20; + dest = $this + 1 | 0; + src = $s; + stop = dest + 10 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$this + 11 >> 0] = 0; + $2 = $this + 12 | 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $2 = 0, dest = 0, src = 0, stop = 0; + HEAP8[$this >> 0] = 18; + dest = $this + 1 | 0; + src = $s; + stop = dest + 9 | 0; + do { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = dest + 1 | 0; + src = src + 1 | 0; + } while ((dest | 0) < (stop | 0)); + HEAP8[$this + 10 >> 0] = 0; + $2 = $this + 12 | 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + return; +} + +function ___towrite($f) { + $f = $f | 0; + var $$0 = 0, $0 = 0, $13 = 0, $2 = 0, $6 = 0; + $0 = $f + 74 | 0; + $2 = HEAP8[$0 >> 0] | 0; + HEAP8[$0 >> 0] = $2 + 255 | $2; + $6 = HEAP32[$f >> 2] | 0; + if (!($6 & 8)) { + HEAP32[$f + 8 >> 2] = 0; + HEAP32[$f + 4 >> 2] = 0; + $13 = HEAP32[$f + 44 >> 2] | 0; + HEAP32[$f + 28 >> 2] = $13; + HEAP32[$f + 20 >> 2] = $13; + HEAP32[$f + 16 >> 2] = $13 + (HEAP32[$f + 48 >> 2] | 0); + $$0 = 0; + } else { + HEAP32[$f >> 2] = $6 | 32; + $$0 = -1; + } + return $$0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($this, $f) { + $this = $this | 0; + $f = $f | 0; + var $2 = 0; + HEAP32[$this >> 2] = HEAP32[$f >> 2]; + HEAP32[$this + 4 >> 2] = HEAP32[$f + 4 >> 2]; + HEAP32[$this + 8 >> 2] = HEAP32[$f + 8 >> 2]; + HEAP32[$f >> 2] = 0; + HEAP32[$f + 4 >> 2] = 0; + HEAP32[$f + 8 >> 2] = 0; + $2 = $this + 12 | 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + return; +} + +function _matrixCopy($src, $dst) { + $src = $src | 0; + $dst = $dst | 0; + var $i$03 = 0; + $i$03 = 0; + do { + HEAPF64[$dst + ($i$03 << 5) >> 3] = +HEAPF64[$src + ($i$03 << 5) >> 3]; + HEAPF64[$dst + ($i$03 << 5) + 8 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 8 >> 3]; + HEAPF64[$dst + ($i$03 << 5) + 16 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 16 >> 3]; + HEAPF64[$dst + ($i$03 << 5) + 24 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 24 >> 3]; + $i$03 = $i$03 + 1 | 0; + } while (($i$03 | 0) != 3); + return; +} + +function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) { + $this = $this | 0; + $__np = $__np | 0; + var $$01 = 0, $$01$looptemp = 0; + if ($__np) { + $$01 = $__np; + do { + $$01$looptemp = $$01; + $$01 = HEAP32[$$01 >> 2] | 0; + __ZdlPv($$01$looptemp); + } while (($$01 | 0) != 0); + } + return; +} + +function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) { + $agg$result = $agg$result | 0; + $this = $this | 0; + $__k = $__k | 0; + var $1 = 0, $8 = 0; + $1 = __Znwj(200) | 0; + HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2]; + _memset($1 + 16 | 0, 0, 184) | 0; + HEAP32[$agg$result >> 2] = $1; + $8 = $agg$result + 4 | 0; + HEAP32[$8 >> 2] = $this + 8; + HEAP32[$8 + 4 >> 2] = 257; + return; +} + +function _byteSwapDouble($from, $to) { + $from = $from | 0; + $to = $to | 0; + HEAP8[$to >> 0] = HEAP8[$from + 7 >> 0] | 0; + HEAP8[$to + 1 >> 0] = HEAP8[$from + 6 >> 0] | 0; + HEAP8[$to + 2 >> 0] = HEAP8[$from + 5 >> 0] | 0; + HEAP8[$to + 3 >> 0] = HEAP8[$from + 4 >> 0] | 0; + HEAP8[$to + 4 >> 0] = HEAP8[$from + 3 >> 0] | 0; + HEAP8[$to + 5 >> 0] = HEAP8[$from + 2 >> 0] | 0; + HEAP8[$to + 6 >> 0] = HEAP8[$from + 1 >> 0] | 0; + HEAP8[$to + 7 >> 0] = HEAP8[$from >> 0] | 0; + return; +} + +function copyTempDouble(ptr) { + ptr = ptr | 0; + HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0]; + HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[ptr + 1 >> 0]; + HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[ptr + 2 >> 0]; + HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[ptr + 3 >> 0]; + HEAP8[tempDoublePtr + 4 >> 0] = HEAP8[ptr + 4 >> 0]; + HEAP8[tempDoublePtr + 5 >> 0] = HEAP8[ptr + 5 >> 0]; + HEAP8[tempDoublePtr + 6 >> 0] = HEAP8[ptr + 6 >> 0]; + HEAP8[tempDoublePtr + 7 >> 0] = HEAP8[ptr + 7 >> 0]; +} + +function ___ftello_unlocked($f) { + $f = $f | 0; + var $$0 = 0, $10 = 0, $11 = 0; + if (!(HEAP32[$f >> 2] & 128)) $10 = 1; else $10 = (HEAP32[$f + 20 >> 2] | 0) >>> 0 > (HEAP32[$f + 28 >> 2] | 0) >>> 0 ? 2 : 1; + $11 = FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, 0, $10) | 0; + if (($11 | 0) < 0) $$0 = $11; else $$0 = $11 - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) + (HEAP32[$f + 20 >> 2] | 0) - (HEAP32[$f + 28 >> 2] | 0) | 0; + return $$0 | 0; +} + +function ___uflow($f) { + $f = $f | 0; + var $$0 = 0, $c = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $c = sp; + if (!(HEAP32[$f + 8 >> 2] | 0)) if (!(___toread($f) | 0)) label = 3; else $$0 = -1; else label = 3; + if ((label | 0) == 3) if ((FUNCTION_TABLE_iiii[HEAP32[$f + 32 >> 2] & 15]($f, $c, 1) | 0) == 1) $$0 = HEAPU8[$c >> 0] | 0; else $$0 = -1; + STACKTOP = sp; + return $$0 | 0; +} + +function _deleteHandle($arc) { + $arc = $arc | 0; + var $0 = 0, $1 = 0, $4 = 0, $7 = 0; + $0 = $arc + 212 | 0; + $1 = HEAP32[$0 >> 2] | 0; + if ($1) { + _arPattDetach($1) | 0; + _arDeleteHandle(HEAP32[$0 >> 2] | 0) | 0; + HEAP32[$0 >> 2] = 0; + } + $4 = $arc + 224 | 0; + if (HEAP32[$4 >> 2] | 0) { + _ar3DDeleteHandle($4) | 0; + HEAP32[$4 >> 2] = 0; + } + $7 = $arc + 192 | 0; + if (HEAP32[$7 >> 2] | 0) { + _arParamLTFree($7) | 0; + HEAP32[$7 >> 2] = 0; + } + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0, $2 = 0; + HEAP8[$this >> 0] = 6; + $0 = $this + 1 | 0; + HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0; + HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0; + HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0; + HEAP8[$this + 4 >> 0] = 0; + $2 = $this + 12 | 0; + HEAP32[$2 >> 2] = 0; + HEAP32[$2 + 4 >> 2] = 0; + HEAP32[$2 + 8 >> 2] = 0; + return; +} + +function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) { + $this = $this | 0; + $info = $info | 0; + $adjustedPtr = $adjustedPtr | 0; + $path_below = $path_below | 0; + if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); + return; +} + +function ___muldsi3($a, $b) { + $a = $a | 0; + $b = $b | 0; + var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0; + $1 = $a & 65535; + $2 = $b & 65535; + $3 = Math_imul($2, $1) | 0; + $6 = $a >>> 16; + $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0; + $11 = $b >>> 16; + $12 = Math_imul($11, $1) | 0; + return (tempRet0 = ($8 >>> 16) + (Math_imul($11, $6) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, $8 + $12 << 16 | $3 & 65535 | 0) | 0; +} + +function _memmove(dest, src, num) { + dest = dest | 0; + src = src | 0; + num = num | 0; + var ret = 0; + if ((src | 0) < (dest | 0) & (dest | 0) < (src + num | 0)) { + ret = dest; + src = src + num | 0; + dest = dest + num | 0; + while ((num | 0) > 0) { + dest = dest - 1 | 0; + src = src - 1 | 0; + num = num - 1 | 0; + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + } + dest = ret; + } else _memcpy(dest, src, num) | 0; + return dest | 0; +} + +function _arUtilGetPixelSize($arPixelFormat) { + $arPixelFormat = $arPixelFormat | 0; + var $$0 = 0; + switch ($arPixelFormat | 0) { + case 1: + case 0: + { + $$0 = 3; + break; + } + case 6: + case 4: + case 3: + case 2: + { + $$0 = 4; + break; + } + case 14: + case 13: + case 12: + case 5: + { + $$0 = 1; + break; + } + case 11: + case 10: + case 9: + case 8: + case 7: + { + $$0 = 2; + break; + } + default: + $$0 = 0; + } + return $$0 | 0; +} + +function _copysign($x, $y) { + $x = +$x; + $y = +$y; + var $0 = 0, $1 = 0, $6 = 0; + HEAPF64[tempDoublePtr >> 3] = $x; + $0 = HEAP32[tempDoublePtr >> 2] | 0; + $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0; + HEAPF64[tempDoublePtr >> 3] = $y; + $6 = HEAP32[tempDoublePtr + 4 >> 2] & -2147483648 | $1 & 2147483647; + HEAP32[tempDoublePtr >> 2] = $0; + HEAP32[tempDoublePtr + 4 >> 2] = $6; + return +(+HEAPF64[tempDoublePtr >> 3]); +} + +function _arMatrixAlloc($row, $clm) { + $row = $row | 0; + $clm = $clm | 0; + var $$0 = 0, $0 = 0, $4 = 0; + $0 = _malloc(12) | 0; + do if (!$0) $$0 = 0; else { + $4 = _malloc(Math_imul($row << 3, $clm) | 0) | 0; + HEAP32[$0 >> 2] = $4; + if (!$4) { + _free($0); + $$0 = 0; + break; + } else { + HEAP32[$0 + 4 >> 2] = $row; + HEAP32[$0 + 8 >> 2] = $clm; + $$0 = $0; + break; + } + } while (0); + return $$0 | 0; +} + +function _ar3DCreateHandle2($cpara) { + $cpara = $cpara | 0; + var $$0 = 0, $0 = 0, $2 = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $0 = _malloc(4) | 0; + if (!$0) { + _arLog(3, 5471, sp); + _exit(1); + } + $2 = _icpCreateHandle($cpara) | 0; + HEAP32[$0 >> 2] = $2; + if (!$2) { + _free($0); + $$0 = 0; + } else $$0 = $0; + STACKTOP = sp; + return $$0 | 0; +} + +function ___fseeko($f, $off, $whence) { + $f = $f | 0; + $off = $off | 0; + $whence = $whence | 0; + var $5 = 0, $6 = 0, $phitmp = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) { + $phitmp = (___lockfile($f) | 0) == 0; + $5 = ___fseeko_unlocked($f, $off, $whence) | 0; + if ($phitmp) $6 = $5; else { + ___unlockfile($f); + $6 = $5; + } + } else $6 = ___fseeko_unlocked($f, $off, $whence) | 0; + return $6 | 0; +} + +function __GLOBAL__sub_I_ARToolKitJS_cpp() { + HEAP32[511] = 0; + HEAP32[512] = 0; + HEAP32[513] = 0; + HEAP32[514] = 0; + HEAPF32[515] = 1.0; + ___cxa_atexit(11, 2044, ___dso_handle | 0) | 0; + HEAP32[516] = 0; + HEAP32[517] = 0; + HEAP32[518] = 0; + HEAP32[519] = 0; + HEAPF32[520] = 1.0; + ___cxa_atexit(12, 2064, ___dso_handle | 0) | 0; + __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev(0); + return; +} + +function _arParamLTFree($paramLT_p) { + $paramLT_p = $paramLT_p | 0; + var $$0 = 0, $1 = 0; + if (!$paramLT_p) $$0 = -1; else { + $1 = HEAP32[$paramLT_p >> 2] | 0; + if (!$1) $$0 = -1; else { + _free(HEAP32[$1 + 184 >> 2] | 0); + _free(HEAP32[(HEAP32[$paramLT_p >> 2] | 0) + 188 >> 2] | 0); + _free(HEAP32[$paramLT_p >> 2] | 0); + HEAP32[$paramLT_p >> 2] = 0; + $$0 = 0; + } + } + return $$0 | 0; +} + +function ___uremdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $rem = 0, __stackBase__ = 0; + __stackBase__ = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + $rem = __stackBase__ | 0; + ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0; + STACKTOP = __stackBase__; + return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0; +} + +function _arDeleteHandle($handle) { + $handle = $handle | 0; + var $$0 = 0, $1 = 0, $2 = 0; + if (!$handle) $$0 = -1; else { + $1 = $handle + 7062408 | 0; + $2 = HEAP32[$1 >> 2] | 0; + if ($2) { + _arImageProcFinal($2); + HEAP32[$1 >> 2] = 0; + } + _free(HEAP32[$handle + 4834144 >> 2] | 0); + _free(HEAP32[$handle + 4834148 >> 2] | 0); + _free($handle); + $$0 = 0; + } + return $$0 | 0; +} + +function _llvm_cttz_i32(x) { + x = x | 0; + var ret = 0; + ret = HEAP8[cttz_i8 + (x & 255) >> 0] | 0; + if ((ret | 0) < 8) return ret | 0; + ret = HEAP8[cttz_i8 + (x >> 8 & 255) >> 0] | 0; + if ((ret | 0) < 8) return ret + 8 | 0; + ret = HEAP8[cttz_i8 + (x >> 16 & 255) >> 0] | 0; + if ((ret | 0) < 8) return ret + 16 | 0; + return (HEAP8[cttz_i8 + (x >>> 24) >> 0] | 0) + 24 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($this, $n) { + $this = $this | 0; + $n = $n | 0; + var $$0 = 0, $1 = 0, $3 = 0, $4 = 0; + $1 = $n + 15 & -16; + $3 = $this + 4096 | 0; + $4 = HEAP32[$3 >> 2] | 0; + if (($this + 4096 - $4 | 0) >>> 0 < $1 >>> 0) $$0 = _malloc($1) | 0; else { + HEAP32[$3 >> 2] = $4 + $1; + $$0 = $4; + } + return $$0 | 0; +} + +function _snprintf($s, $n, $fmt, $varargs) { + $s = $s | 0; + $n = $n | 0; + $fmt = $fmt | 0; + $varargs = $varargs | 0; + var $0 = 0, $ap = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ap = sp; + HEAP32[$ap >> 2] = $varargs; + $0 = _vsnprintf($s, $n, $fmt, $ap) | 0; + STACKTOP = sp; + return $0 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 17); + $0 = $this + 12 | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 14); + $0 = $this + 12 | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 13); + $0 = $this + 12 | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 12); + $0 = $this + 12 | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + return; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($this, $s) { + $this = $this | 0; + $s = $s | 0; + var $0 = 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 11); + $0 = $this + 12 | 0; + HEAP32[$0 >> 2] = 0; + HEAP32[$0 + 4 >> 2] = 0; + HEAP32[$0 + 8 >> 2] = 0; + return; +} + +function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) { + $this = $this | 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this); + return; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($this, $__pos, $__s) { + $this = $this | 0; + $__pos = $__pos | 0; + $__s = $__s | 0; + return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, _strlen($__s) | 0) | 0; +} + +function ___shlim($f, $lim) { + $f = $f | 0; + $lim = $lim | 0; + var $4 = 0, $5 = 0, $7 = 0; + HEAP32[$f + 104 >> 2] = $lim; + $4 = HEAP32[$f + 4 >> 2] | 0; + $5 = HEAP32[$f + 8 >> 2] | 0; + $7 = $5 - $4 | 0; + HEAP32[$f + 108 >> 2] = $7; + if (($lim | 0) != 0 & ($7 | 0) > ($lim | 0)) HEAP32[$f + 100 >> 2] = $4 + $lim; else HEAP32[$f + 100 >> 2] = $5; + return; +} + +function ___stdio_close($f) { + $f = $f | 0; + var $3 = 0, $vararg_buffer = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $vararg_buffer = sp; + HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2]; + $3 = ___syscall_ret(___syscall6(6, $vararg_buffer | 0) | 0) | 0; + STACKTOP = sp; + return $3 | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj($this, $p, $n) { + $this = $this | 0; + $p = $p | 0; + $n = $n | 0; + var $7 = 0; + if ($this >>> 0 <= $p >>> 0 & ($this + 4096 | 0) >>> 0 >= $p >>> 0) { + $7 = $this + 4096 | 0; + if (($p + ($n + 15 & -16) | 0) == (HEAP32[$7 >> 2] | 0)) HEAP32[$7 >> 2] = $p; + } else _free($p); + return; +} + +function _rewind($f) { + $f = $f | 0; + var $phitmp = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) { + $phitmp = (___lockfile($f) | 0) == 0; + ___fseeko_unlocked($f, 0, 0) | 0; + HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33; + if (!$phitmp) ___unlockfile($f); + } else { + ___fseeko_unlocked($f, 0, 0) | 0; + HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33; + } + return; +} + +function _arPattFree($pattHandle, $patno) { + $pattHandle = $pattHandle | 0; + $patno = $patno | 0; + var $$0 = 0, $2 = 0; + $2 = (HEAP32[$pattHandle + 8 >> 2] | 0) + ($patno << 2) | 0; + if (!(HEAP32[$2 >> 2] | 0)) $$0 = -1; else { + HEAP32[$2 >> 2] = 0; + HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + -1; + $$0 = 1; + } + return $$0 | 0; +} + +function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) { + $this = $this | 0; + __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this); + return; +} + +function _sn_write($f, $s, $l) { + $f = $f | 0; + $s = $s | 0; + $l = $l | 0; + var $2 = 0, $3 = 0, $6 = 0, $l$ = 0; + $2 = $f + 20 | 0; + $3 = HEAP32[$2 >> 2] | 0; + $6 = (HEAP32[$f + 16 >> 2] | 0) - $3 | 0; + $l$ = $6 >>> 0 > $l >>> 0 ? $l : $6; + _memcpy($3 | 0, $s | 0, $l$ | 0) | 0; + HEAP32[$2 >> 2] = (HEAP32[$2 >> 2] | 0) + $l$; + return $l | 0; +} + +function _ferror($f) { + $f = $f | 0; + var $$lobit = 0, $$lobit2 = 0, $phitmp = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) { + $phitmp = (___lockfile($f) | 0) == 0; + $$lobit = (HEAP32[$f >> 2] | 0) >>> 5 & 1; + if ($phitmp) $$lobit2 = $$lobit; else $$lobit2 = $$lobit; + } else $$lobit2 = (HEAP32[$f >> 2] | 0) >>> 5 & 1; + return $$lobit2 | 0; +} + +function ___memrchr($m, $c, $n) { + $m = $m | 0; + $c = $c | 0; + $n = $n | 0; + var $$0 = 0, $$01 = 0, $0 = 0, $3 = 0; + $0 = $c & 255; + $$01 = $n; + while (1) { + if (!$$01) { + $$0 = 0; + break; + } + $$01 = $$01 + -1 | 0; + $3 = $m + $$01 | 0; + if ((HEAP8[$3 >> 0] | 0) == $0 << 24 >> 24) { + $$0 = $3; + break; + } + } + return $$0 | 0; +} + +function __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($agg$result, $v) { + $agg$result = $agg$result | 0; + $v = $v | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($agg$result, $v + 4 | 0, HEAP32[$v >> 2] | 0); + return; +} + +function _arVecAlloc($clm) { + $clm = $clm | 0; + var $$0 = 0, $0 = 0, $3 = 0; + $0 = _malloc(8) | 0; + do if (!$0) $$0 = 0; else { + $3 = _malloc($clm << 3) | 0; + HEAP32[$0 >> 2] = $3; + if (!$3) { + _free($0); + $$0 = 0; + break; + } else { + HEAP32[$0 + 4 >> 2] = $clm; + $$0 = $0; + break; + } + } while (0); + return $$0 | 0; +} + +function _sscanf($s, $fmt, $varargs) { + $s = $s | 0; + $fmt = $fmt | 0; + $varargs = $varargs | 0; + var $0 = 0, $ap = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16 | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + $ap = sp; + HEAP32[$ap >> 2] = $varargs; + $0 = _vsscanf($s, $fmt, $ap) | 0; + STACKTOP = sp; + return $0 | 0; +} + +function _arPattAttach($arHandle, $arPattHandle) { + $arHandle = $arHandle | 0; + $arPattHandle = $arPattHandle | 0; + var $$0 = 0, $1 = 0; + if (!$arHandle) $$0 = -1; else { + $1 = $arHandle + 7062384 | 0; + if (!(HEAP32[$1 >> 2] | 0)) { + HEAP32[$1 >> 2] = $arPattHandle; + $$0 = 0; + } else $$0 = -1; + } + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($this, $__s) { + $this = $this | 0; + $__s = $__s | 0; + return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, _strlen($__s) | 0) | 0; +} + +function __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($this) { + $this = $this | 0; + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this + 12 | 0); + __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this); + return; +} + +function _arMatrixAllocTrans($source) { + $source = $source | 0; + var $$0 = 0, $4 = 0; + $4 = _arMatrixAlloc(HEAP32[$source + 8 >> 2] | 0, HEAP32[$source + 4 >> 2] | 0) | 0; + if (!$4) $$0 = 0; else if ((_arMatrixTrans($4, $source) | 0) < 0) { + _arMatrixFree($4) | 0; + $$0 = 0; + } else $$0 = $4; + return $$0 | 0; +} + +function _arMatrixAllocDup($source) { + $source = $source | 0; + var $$0 = 0, $4 = 0; + $4 = _arMatrixAlloc(HEAP32[$source + 4 >> 2] | 0, HEAP32[$source + 8 >> 2] | 0) | 0; + if (!$4) $$0 = 0; else if ((_arMatrixDup($4, $source) | 0) < 0) { + _arMatrixFree($4) | 0; + $$0 = 0; + } else $$0 = $4; + return $$0 | 0; +} + +function _arMatrixAllocMul($a, $b) { + $a = $a | 0; + $b = $b | 0; + var $$0 = 0, $4 = 0; + $4 = _arMatrixAlloc(HEAP32[$a + 4 >> 2] | 0, HEAP32[$b + 8 >> 2] | 0) | 0; + if (!$4) $$0 = 0; else if ((_arMatrixMul($4, $a, $b) | 0) < 0) { + _arMatrixFree($4) | 0; + $$0 = 0; + } else $$0 = $4; + return $$0 | 0; +} + +function _arGetTransMatMultiSquareRobust($handle, $marker_info, $marker_num, $config) { + $handle = $handle | 0; + $marker_info = $marker_info | 0; + $marker_num = $marker_num | 0; + $config = $config | 0; + return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 1)); +} + +function _arGetTransMatMultiSquare($handle, $marker_info, $marker_num, $config) { + $handle = $handle | 0; + $marker_info = $marker_info | 0; + $marker_num = $marker_num | 0; + $config = $config | 0; + return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 0)); +} + +function ___ftello($f) { + $f = $f | 0; + var $5 = 0, $6 = 0, $phitmp = 0; + if ((HEAP32[$f + 76 >> 2] | 0) > -1) { + $phitmp = (___lockfile($f) | 0) == 0; + $5 = ___ftello_unlocked($f) | 0; + if ($phitmp) $6 = $5; else $6 = $5; + } else $6 = ___ftello_unlocked($f) | 0; + return $6 | 0; +} + +function _arSetPattRatio($handle, $pattRatio) { + $handle = $handle | 0; + $pattRatio = +$pattRatio; + var $$0 = 0; + if (!$handle) $$0 = -1; else if ($pattRatio <= 0.0 | $pattRatio >= 1.0) $$0 = -1; else { + HEAPF64[$handle + 7062416 >> 3] = $pattRatio; + $$0 = 0; + } + return $$0 | 0; +} + +function _bitshift64Ashr(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; + if ((bits | 0) < 32) { + tempRet0 = high >> bits; + return low >>> bits | (high & (1 << bits) - 1) << 32 - bits; + } + tempRet0 = (high | 0) < 0 ? -1 : 0; + return high >> bits - 32 | 0; +} + +function _byteSwapInt($from, $to) { + $from = $from | 0; + $to = $to | 0; + HEAP8[$to >> 0] = HEAP8[$from + 3 >> 0] | 0; + HEAP8[$to + 1 >> 0] = HEAP8[$from + 2 >> 0] | 0; + HEAP8[$to + 2 >> 0] = HEAP8[$from + 1 >> 0] | 0; + HEAP8[$to + 3 >> 0] = HEAP8[$from >> 0] | 0; + return; +} + +function _arGetLabelingThreshMode($handle, $mode_p) { + $handle = $handle | 0; + $mode_p = $mode_p | 0; + var $$0 = 0; + if (($handle | 0) != 0 & ($mode_p | 0) != 0) { + HEAP32[$mode_p >> 2] = HEAP32[$handle + 7062388 >> 2]; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _bitshift64Shl(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; + if ((bits | 0) < 32) { + tempRet0 = high << bits | (low & (1 << bits) - 1 << 32 - bits) >>> 32 - bits; + return low << bits; + } + tempRet0 = low << bits - 32; + return 0; +} + +function _ar3DDeleteHandle($handle) { + $handle = $handle | 0; + var $$0 = 0, $0 = 0; + $0 = HEAP32[$handle >> 2] | 0; + if (!$0) $$0 = -1; else { + _icpDeleteHandle($0) | 0; + _free(HEAP32[$handle >> 2] | 0); + HEAP32[$handle >> 2] = 0; + $$0 = 0; + } + return $$0 | 0; +} + +function _arGetMatrixCodeType($handle, $type_p) { + $handle = $handle | 0; + $type_p = $type_p | 0; + var $$0 = 0; + if (($handle | 0) != 0 & ($type_p | 0) != 0) { + HEAP32[$type_p >> 2] = HEAP32[$handle + 7062424 >> 2]; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _bitshift64Lshr(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; + if ((bits | 0) < 32) { + tempRet0 = high >>> bits; + return low >>> bits | (high & (1 << bits) - 1) << 32 - bits; + } + tempRet0 = 0; + return high >>> bits - 32 | 0; +} + +function _arPattDetach($arHandle) { + $arHandle = $arHandle | 0; + var $$0 = 0, $1 = 0; + if (!$arHandle) $$0 = -1; else { + $1 = $arHandle + 7062384 | 0; + if (!(HEAP32[$1 >> 2] | 0)) $$0 = -1; else { + HEAP32[$1 >> 2] = 0; + $$0 = 0; + } + } + return $$0 | 0; +} + +function _arGetLabelingThresh($handle, $thresh) { + $handle = $handle | 0; + $thresh = $thresh | 0; + var $$0 = 0; + if (($handle | 0) != 0 & ($thresh | 0) != 0) { + HEAP32[$thresh >> 2] = HEAP32[$handle + 16 >> 2]; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 3, 2180, 10905, 12, $fn | 0); + return; +} + +function copyTempFloat(ptr) { + ptr = ptr | 0; + HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0]; + HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[ptr + 1 >> 0]; + HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[ptr + 2 >> 0]; + HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[ptr + 3 >> 0]; +} + +function __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 2, 2160, 10800, 11, $fn | 0); + return; +} + +function dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + a4 = a4 | 0; + a5 = a5 | 0; + a6 = a6 | 0; + FUNCTION_TABLE_viiiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0, a6 | 0); +} + +function _arSetLabelingThresh($handle, $thresh) { + $handle = $handle | 0; + $thresh = $thresh | 0; + var $$0 = 0; + if (($handle | 0) == 0 | $thresh >>> 0 > 255) $$0 = -1; else { + HEAP32[$handle + 16 >> 2] = $thresh; + $$0 = 0; + } + return $$0 | 0; +} + +function _arGetLabelingMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (($handle | 0) != 0 & ($mode | 0) != 0) { + HEAP32[$mode >> 2] = HEAP32[$handle + 12 >> 2]; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function __ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii($fn, $args, $args1, $args2) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = $args1 | 0; + $args2 = $args2 | 0; + return FUNCTION_TABLE_iiii[$fn & 15]($args, $args1, $args2) | 0; +} + +function _arGetPattRatio($handle, $pattRatio) { + $handle = $handle | 0; + $pattRatio = $pattRatio | 0; + var $$0 = 0; + if (!$handle) $$0 = -1; else { + HEAPF64[$pattRatio >> 3] = +HEAPF64[$handle + 7062416 >> 3]; + $$0 = 0; + } + return $$0 | 0; +} + +function _arSetPatternDetectionMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (($handle | 0) != 0 & $mode >>> 0 < 5) { + HEAP32[$handle + 24 >> 2] = $mode; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _arGetDebugMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (($handle | 0) != 0 & ($mode | 0) != 0) { + HEAP32[$mode >> 2] = HEAP32[$handle >> 2]; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _icpSetInlierProbability($handle, $inlierProb) { + $handle = $handle | 0; + $inlierProb = +$inlierProb; + var $$0 = 0; + if (!$handle) $$0 = -1; else { + HEAPF64[$handle + 128 >> 3] = $inlierProb; + $$0 = 0; + } + return $$0 | 0; +} + +function _arSetImageProcMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (($handle | 0) != 0 & $mode >>> 0 < 2) { + HEAP32[$handle + 20 >> 2] = $mode; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function _arSetLabelingMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (($handle | 0) != 0 & $mode >>> 0 < 2) { + HEAP32[$handle + 12 >> 2] = $mode; + $$0 = 0; + } else $$0 = -1; + return $$0 | 0; +} + +function __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $0) { + $this = $this | 0; + $thrown_type = $thrown_type | 0; + $0 = $0 | 0; + return ($this | 0) == ($thrown_type | 0) | 0; +} + +function runPostSets() {} +function _i64Subtract(a, b, c, d) { + a = a | 0; + b = b | 0; + c = c | 0; + d = d | 0; + var h = 0; + h = b - d >>> 0; + h = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0; + return (tempRet0 = h, a - c >>> 0 | 0) | 0; +} + +function _arImageProcLumaHistAndCDFAndMedian($ipi, $dataPtr, $value_p) { + $ipi = $ipi | 0; + $dataPtr = $dataPtr | 0; + $value_p = $value_p | 0; + return _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, .5, $value_p) | 0; +} + +function _arGetPatternDetectionMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (!$handle) $$0 = -1; else { + HEAP32[$mode >> 2] = HEAP32[$handle + 24 >> 2]; + $$0 = 0; + } + return $$0 | 0; +} + +function ___strdup($s) { + $s = $s | 0; + var $$0 = 0, $1 = 0, $2 = 0; + $1 = (_strlen($s) | 0) + 1 | 0; + $2 = _malloc($1) | 0; + if (!$2) $$0 = 0; else { + _memcpy($2 | 0, $s | 0, $1 | 0) | 0; + $$0 = $2; + } + return $$0 | 0; +} + +function dynCall_viiiii(index, a1, a2, a3, a4, a5) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + a4 = a4 | 0; + a5 = a5 | 0; + FUNCTION_TABLE_viiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0); +} + +function _arGetImageProcMode($handle, $mode) { + $handle = $handle | 0; + $mode = $mode | 0; + var $$0 = 0; + if (!$handle) $$0 = -1; else { + HEAP32[$mode >> 2] = HEAP32[$handle + 20 >> 2]; + $$0 = 0; + } + return $$0 | 0; +} + +function _icpDeleteHandle($handle) { + $handle = $handle | 0; + var $$0 = 0, $0 = 0; + $0 = HEAP32[$handle >> 2] | 0; + if (!$0) $$0 = -1; else { + _free($0); + HEAP32[$handle >> 2] = 0; + $$0 = 0; + } + return $$0 | 0; +} + +function _arSetMatrixCodeType($handle, $type) { + $handle = $handle | 0; + $type = $type | 0; + var $$0 = 0; + if (!$handle) $$0 = -1; else { + HEAP32[$handle + 7062424 >> 2] = $type; + $$0 = 0; + } + return $$0 | 0; +} +function stackAlloc(size) { + size = size | 0; + var ret = 0; + ret = STACKTOP; + STACKTOP = STACKTOP + size | 0; + STACKTOP = STACKTOP + 15 & -16; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort(); + return ret | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this) { + $this = $this | 0; + if (HEAP8[$this >> 0] & 1) _free(HEAP32[$this + 8 >> 2] | 0); + return; +} + +function ___syscall_ret($r) { + $r = $r | 0; + var $$0 = 0, $2 = 0; + if ($r >>> 0 > 4294963200) { + $2 = ___errno_location() | 0; + HEAP32[$2 >> 2] = 0 - $r; + $$0 = -1; + } else $$0 = $r; + return $$0 | 0; +} + +function __ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii($fn, $args, $args1) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = $args1 | 0; + return FUNCTION_TABLE_iii[$fn & 15]($args, $args1) | 0; +} + +function dynCall_iiiii(index, a1, a2, a3, a4) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + a4 = a4 | 0; + return FUNCTION_TABLE_iiiii[index & 1](a1 | 0, a2 | 0, a3 | 0, a4 | 0) | 0; +} + +function __ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii($fn, $args, $args1) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = $args1 | 0; + FUNCTION_TABLE_vii[$fn & 7]($args, $args1); + return; +} + +function __ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif($fn, $args, $args1) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = +$args1; + FUNCTION_TABLE_vid[$fn & 3]($args, $args1); + return; +} + +function __ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid($fn, $args, $args1) { + $fn = $fn | 0; + $args = $args | 0; + $args1 = +$args1; + FUNCTION_TABLE_vid[$fn & 3]($args, $args1); + return; +} + +function _arImageProcFinal($ipi) { + $ipi = $ipi | 0; + if ($ipi) { + if (HEAP32[$ipi + 2076 >> 2] | 0) _free(HEAP32[$ipi >> 2] | 0); + _free(HEAP32[$ipi + 4 >> 2] | 0); + _free($ipi); + } + return; +} + +function __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 4, 2200, 10910, 1, $fn | 0); + return; +} + +function __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 3, 2168, 10905, 13, $fn | 0); + return; +} + +function __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 3, 2116, 10779, 1, $fn | 0); + return; +} + +function __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 3, 2104, 10774, 2, $fn | 0); + return; +} + +function __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 3, 2136, 10788, 1, $fn | 0); + return; +} + +function __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 2, 2192, 10800, 10, $fn | 0); + return; +} + +function dynCall_viiii(index, a1, a2, a3, a4) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + a4 = a4 | 0; + FUNCTION_TABLE_viiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0); +} + +function __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 2, 2152, 10796, 7, $fn | 0); + return; +} + +function __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 1, 2148, 10793, 16, $fn | 0); + return; +} + +function __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) { + $name = $name | 0; + $fn = $fn | 0; + __embind_register_function($name | 0, 2, 2128, 10784, 1, $fn | 0); + return; +} + +function _icpGetXw2XcCleanup295($J_U_S, $dU, $E, $E2) { + $J_U_S = $J_U_S | 0; + $dU = $dU | 0; + $E = $E | 0; + $E2 = $E2 | 0; + _free($J_U_S); + _free($dU); + _free($E); + _free($E2); + return; +} + +function ___errno_location() { + var $$0 = 0, $3 = 0; + if (!(HEAP32[597] | 0)) $$0 = 2644; else { + $3 = (_pthread_self() | 0) + 60 | 0; + $$0 = HEAP32[$3 >> 2] | 0; + } + return $$0 | 0; +} + +function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($this) { + $this = $this | 0; + if (HEAP8[$this >> 0] & 1) __ZdlPv(HEAP32[$this + 8 >> 2] | 0); + return; +} + +function _i64Add(a, b, c, d) { + a = a | 0; + b = b | 0; + c = c | 0; + d = d | 0; + var l = 0; + l = a + c >>> 0; + return (tempRet0 = b + d + (l >>> 0 < a >>> 0 | 0) >>> 0, l | 0) | 0; +} + +function __ZN10emscripten8constantIdEEvPKcRKT_($name, $v) { + $name = $name | 0; + $v = $v | 0; + __embind_register_constant($name | 0, 720, ~~+HEAPF64[$v >> 3] >>> 0 | 0); + return; +} + +function dynCall_iiii(index, a1, a2, a3) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + return FUNCTION_TABLE_iiii[index & 15](a1 | 0, a2 | 0, a3 | 0) | 0; +} + +function ___udivdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + return ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0; +} + +function _strchr($s, $c) { + $s = $s | 0; + $c = $c | 0; + var $0 = 0; + $0 = ___strchrnul($s, $c) | 0; + return ((HEAP8[$0 >> 0] | 0) == ($c & 255) << 24 >> 24 ? $0 : 0) | 0; +} + +function __ZN10emscripten8constantIiEEvPKcRKT_($name, $v) { + $name = $name | 0; + $v = $v | 0; + __embind_register_constant($name | 0, 680, HEAP32[$v >> 2] | 0); + return; +} + +function dynCall_viii(index, a1, a2, a3) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + FUNCTION_TABLE_viii[index & 1](a1 | 0, a2 | 0, a3 | 0); +} + +function __ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi($fn, $args) { + $fn = $fn | 0; + $args = $args | 0; + return FUNCTION_TABLE_ii[$fn & 31]($args) | 0; +} + +function __ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi($fn, $args) { + $fn = $fn | 0; + $args = $args | 0; + return +(+FUNCTION_TABLE_di[$fn & 3]($args)); +} + +function __ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi($fn, $args) { + $fn = $fn | 0; + $args = $args | 0; + FUNCTION_TABLE_vi[$fn & 15]($args); + return; +} + +function _compE($a, $b) { + $a = $a | 0; + $b = $b | 0; + var $2 = 0.0; + $2 = +HEAPF64[$a >> 3] - +HEAPF64[$b >> 3]; + return ($2 < 0.0 ? -1 : $2 > 0.0 & 1) | 0; +} + +function dynCall_viid(index, a1, a2, a3) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = +a3; + FUNCTION_TABLE_viid[index & 3](a1 | 0, a2 | 0, +a3); +} + +function _isxdigit($c) { + $c = $c | 0; + var $4 = 0; + if (($c + -48 | 0) >>> 0 < 10) $4 = 1; else $4 = (($c | 32) + -97 | 0) >>> 0 < 6; + return $4 & 1 | 0; +} + +function establishStackSpace(stackBase, stackMax) { + stackBase = stackBase | 0; + stackMax = stackMax | 0; + STACKTOP = stackBase; + STACK_MAX = stackMax; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(512, 3, $name | 0); + return; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(520, 2, $name | 0); + return; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(496, 5, $name | 0); + return; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(504, 4, $name | 0); + return; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(528, 1, $name | 0); + return; +} + +function __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc($name) { + $name = $name | 0; + __embind_register_memory_view(536, 0, $name | 0); + return; +} + +function __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this) { + $this = $this | 0; + ___assert_fail(14152, 12528, 1175, 14181); +} + +function __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this) { + $this = $this | 0; + ___assert_fail(12499, 12528, 1164, 12463); +} + +function dynCall_iii(index, a1, a2) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + return FUNCTION_TABLE_iii[index & 15](a1 | 0, a2 | 0) | 0; +} + +function b13(p0, p1, p2, p3, p4, p5) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + p3 = p3 | 0; + p4 = p4 | 0; + p5 = p5 | 0; + nullFunc_viiiiii(13); +} + +function _wctomb($s, $wc) { + $s = $s | 0; + $wc = $wc | 0; + var $$0 = 0; + if (!$s) $$0 = 0; else $$0 = _wcrtomb($s, $wc, 0) | 0; + return $$0 | 0; +} + +function __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this) { + $this = $this | 0; + ___assert_fail(12352, 12375, 303, 12463); +} + +function dynCall_dii(index, a1, a2) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + return +FUNCTION_TABLE_dii[index & 1](a1 | 0, a2 | 0); +} + +function setThrew(threw, value) { + threw = threw | 0; + value = value | 0; + if (!__THREW__) { + __THREW__ = threw; + threwValue = value; + } +} + +function _fseek($f, $off, $whence) { + $f = $f | 0; + $off = $off | 0; + $whence = $whence | 0; + return ___fseeko($f, $off, $whence) | 0; +} + +function dynCall_vii(index, a1, a2) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + FUNCTION_TABLE_vii[index & 7](a1 | 0, a2 | 0); +} + +function _mbsinit($st) { + $st = $st | 0; + var $4 = 0; + if (!$st) $4 = 1; else $4 = (HEAP32[$st >> 2] | 0) == 0; + return $4 & 1 | 0; +} + +function _do_read($f, $buf, $len) { + $f = $f | 0; + $buf = $buf | 0; + $len = $len | 0; + return ___string_read($f, $buf, $len) | 0; +} + +function dynCall_vid(index, a1, a2) { + index = index | 0; + a1 = a1 | 0; + a2 = +a2; + FUNCTION_TABLE_vid[index & 3](a1 | 0, +a2); +} + +function b1(p0, p1, p2, p3, p4) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + p3 = p3 | 0; + p4 = p4 | 0; + nullFunc_viiiii(1); +} + +function _arMultiFreeConfig($config) { + $config = $config | 0; + _free(HEAP32[$config >> 2] | 0); + _free($config); + return 0; +} + +function __ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE($fn) { + $fn = $fn | 0; + return FUNCTION_TABLE_i[$fn & 1]() | 0; +} + +function _icpGetXw2XcCleanup($J_U_S, $dU) { + $J_U_S = $J_U_S | 0; + $dU = $dU | 0; + _free($J_U_S); + _free($dU); + return; +} + +function b12(p0, p1, p2, p3) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + p3 = p3 | 0; + nullFunc_iiiii(12); + return 0; +} + +function _strncpy($d, $s, $n) { + $d = $d | 0; + $s = $s | 0; + $n = $n | 0; + ___stpncpy($d, $s, $n) | 0; + return $d | 0; +} + +function dynCall_ii(index, a1) { + index = index | 0; + a1 = a1 | 0; + return FUNCTION_TABLE_ii[index & 31](a1 | 0) | 0; +} + +function _strcpy($dest, $src) { + $dest = $dest | 0; + $src = $src | 0; + ___stpcpy($dest, $src) | 0; + return $dest | 0; +} + +function __GLOBAL__sub_I_bind_cpp() { + __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev(0); + return; +} + +function _strrchr($s, $c) { + $s = $s | 0; + $c = $c | 0; + return ___memrchr($s, $c, (_strlen($s) | 0) + 1 | 0) | 0; +} + +function _ar3DCreateHandle($arParam) { + $arParam = $arParam | 0; + return _ar3DCreateHandle2($arParam + 8 | 0) | 0; +} + +function dynCall_di(index, a1) { + index = index | 0; + a1 = a1 | 0; + return +FUNCTION_TABLE_di[index & 3](a1 | 0); +} + +function _fputs($s, $f) { + $s = $s | 0; + $f = $f | 0; + return (_fwrite($s, _strlen($s) | 0, 1, $f) | 0) + -1 | 0; +} + +function __ZSt15get_new_handlerv() { + var $0 = 0; + $0 = HEAP32[559] | 0; + HEAP32[559] = $0 + 0; + return $0 | 0; +} + +function _arMatrixFree($m) { + $m = $m | 0; + if ($m) { + _free(HEAP32[$m >> 2] | 0); + _free($m); + } + return 0; +} + +function __ZN10__cxxabiv123__fundamental_type_infoD0Ev($this) { + $this = $this | 0; + __ZdlPv($this); + return; +} + +function b15(p0, p1, p2, p3) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + p3 = p3 | 0; + nullFunc_viiii(15); +} + +function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev($this) { + $this = $this | 0; + __ZdlPv($this); + return; +} + +function dynCall_vi(index, a1) { + index = index | 0; + a1 = a1 | 0; + FUNCTION_TABLE_vi[index & 15](a1 | 0); +} + +function __ZN10__cxxabiv120__si_class_type_infoD0Ev($this) { + $this = $this | 0; + __ZdlPv($this); + return; +} + +function __ZN10__cxxabiv117__class_type_infoD0Ev($this) { + $this = $this | 0; + __ZdlPv($this); + return; +} + +function _cleanup392($p) { + $p = $p | 0; + if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p); + return; +} + +function _cleanup387($p) { + $p = $p | 0; + if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p); + return; +} + +function b0(p0, p1, p2) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + nullFunc_iiii(0); + return 0; +} + +function _isspace($c) { + $c = $c | 0; + return (($c | 0) == 32 | ($c + -9 | 0) >>> 0 < 5) & 1 | 0; +} + +function ___getTypeName($ti) { + $ti = $ti | 0; + return ___strdup(HEAP32[$ti + 4 >> 2] | 0) | 0; +} + +function _arVecFree($v) { + $v = $v | 0; + _free(HEAP32[$v >> 2] | 0); + _free($v); + return 0; +} + +function dynCall_i(index) { + index = index | 0; + return FUNCTION_TABLE_i[index & 1]() | 0; +} + +function __ZNK10__cxxabiv116__shim_type_info5noop2Ev($this) { + $this = $this | 0; + return; +} + +function __ZNK10__cxxabiv116__shim_type_info5noop1Ev($this) { + $this = $this | 0; + return; +} + +function b9(p0, p1, p2) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + nullFunc_viii(9); +} + +function b11(p0, p1, p2) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = +p2; + nullFunc_viid(11); +} + +function _setLogLevel($level) { + $level = $level | 0; + HEAP32[496] = $level; + return; +} + +function __ZN10__cxxabiv116__shim_type_infoD2Ev($this) { + $this = $this | 0; + return; +} + +function __ZNSt9bad_allocD0Ev($this) { + $this = $this | 0; + __ZdlPv($this); + return; +} + +function _copysignl($x, $y) { + $x = +$x; + $y = +$y; + return +(+_copysign($x, $y)); +} + +function _scalbnl($x, $n) { + $x = +$x; + $n = $n | 0; + return +(+_scalbn($x, $n)); +} + +function b2(p0, p1) { + p0 = p0 | 0; + p1 = p1 | 0; + nullFunc_dii(2); + return 0.0; +} + +function b14(p0, p1) { + p0 = p0 | 0; + p1 = p1 | 0; + nullFunc_iii(14); + return 0; +} + +function dynCall_v(index) { + index = index | 0; + FUNCTION_TABLE_v[index & 0](); +} + +function _frexpl($x, $e) { + $x = +$x; + $e = $e | 0; + return +(+_frexp($x, $e)); +} + +function __ZNKSt9bad_alloc4whatEv($this) { + $this = $this | 0; + return 12484; +} + +function _isupper($c) { + $c = $c | 0; + return ($c + -65 | 0) >>> 0 < 26 | 0; +} + +function _fmodl($x, $y) { + $x = +$x; + $y = +$y; + return +(+_fmod($x, $y)); +} + +function _arPattCreateHandle() { + return _arPattCreateHandle2(16, 50) | 0; +} + +function setTempRet0(value) { + value = value | 0; + tempRet0 = value; +} + +function b7(p0, p1) { + p0 = p0 | 0; + p1 = p1 | 0; + nullFunc_vii(7); +} + +function __ZNSt9type_infoD2Ev($this) { + $this = $this | 0; + return; +} + +function __ZNSt9exceptionD2Ev($this) { + $this = $this | 0; + return; +} + +function __ZNSt9bad_allocD2Ev($this) { + $this = $this | 0; + return; +} + +function __ZdlPv($ptr) { + $ptr = $ptr | 0; + _free($ptr); + return; +} + +function b3(p0, p1) { + p0 = p0 | 0; + p1 = +p1; + nullFunc_vid(3); +} + +function _ftell($f) { + $f = $f | 0; + return ___ftello($f) | 0; +} + +function stackRestore(top) { + top = top | 0; + STACKTOP = top; +} + +function b4(p0) { + p0 = p0 | 0; + nullFunc_di(4); + return 0.0; +} + +function b8(p0) { + p0 = p0 | 0; + nullFunc_ii(8); + return 0; +} + +function ___unlockfile($f) { + $f = $f | 0; + return; +} + +function ___lockfile($f) { + $f = $f | 0; + return 0; +} + +function _getLogLevel() { + return HEAP32[496] | 0; +} + +function b6(p0) { + p0 = p0 | 0; + nullFunc_vi(6); +} + +function getTempRet0() { + return tempRet0 | 0; +} + +function stackSave() { + return STACKTOP | 0; +} + +function b5() { + nullFunc_i(5); + return 0; +} + +function b10() { + nullFunc_v(10); +} + +// EMSCRIPTEN_END_FUNCS +var FUNCTION_TABLE_iiii = [b0,__ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv,__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv,_sn_write,___stdio_write,___stdio_seek,___stdout_write,_setup,_setMarkerInfoDir,_getTransMatSquare,_getTransMatSquareCont,_getMultiEachMarkerInfo,__ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E,__ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii,___stdio_read,_do_read]; +var FUNCTION_TABLE_viiiii = [b1,__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib]; +var FUNCTION_TABLE_dii = [b2,__ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi]; +var FUNCTION_TABLE_vid = [b3,_setProjectionNearPlane,_setProjectionFarPlane,_setPattRatio]; +var FUNCTION_TABLE_di = [b4,_getProjectionNearPlane,_getProjectionFarPlane,_getPattRatio]; +var FUNCTION_TABLE_i = [b5,_getLogLevel]; +var FUNCTION_TABLE_vi = [b6,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev,__ZN10__cxxabiv116__shim_type_infoD2Ev,__ZN10__cxxabiv123__fundamental_type_infoD0Ev,__ZNK10__cxxabiv116__shim_type_info5noop1Ev,__ZNK10__cxxabiv116__shim_type_info5noop2Ev,__ZN10__cxxabiv117__class_type_infoD0Ev,__ZN10__cxxabiv120__si_class_type_infoD0Ev,__ZN10__cxxabiv121__vmi_class_type_infoD0Ev,_setLogLevel,__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,_cleanup387,_cleanup392,b6]; +var FUNCTION_TABLE_vii = [b7,_setThresholdMode,_setThreshold,_setPatternDetectionMode,_setMatrixCodeType,_setLabelingMode,_setImageProcMode,__ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi]; +var FUNCTION_TABLE_ii = [b8,__ZNKSt9bad_alloc4whatEv,___stdio_close,_teardown,_getMultiMarkerCount,_loadCamera,_detectMarker,_getMarkerNum,_getDebugMode,_getProcessingImage,_getThresholdMode,_getThreshold,_getPatternDetectionMode,_getMatrixCodeType,_getLabelingMode,_getImageProcMode,__ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8 +,b8,b8,b8]; +var FUNCTION_TABLE_viii = [b9,__ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii]; +var FUNCTION_TABLE_v = [b10]; +var FUNCTION_TABLE_viid = [b11,__ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid,__ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif,b11]; +var FUNCTION_TABLE_iiiii = [b12,__ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii]; +var FUNCTION_TABLE_viiiiii = [b13,__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib]; +var FUNCTION_TABLE_iii = [b14,_compE,_addMarker,_addMultiMarker,_getMultiMarkerNum,_setMarkerInfoVertex,_getTransMatMultiSquare,_getTransMatMultiSquareRobust,_getMarkerInfo,_setDebugMode,__ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi,__ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E,b14,b14,b14,b14]; +var FUNCTION_TABLE_viiii = [b15,__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi]; + + return { _malloc: _malloc, _i64Subtract: _i64Subtract, _fflush: _fflush, _i64Add: _i64Add, _memmove: _memmove, _memset: _memset, ___cxa_demangle: ___cxa_demangle, _memcpy: _memcpy, ___getTypeName: ___getTypeName, _bitshift64Lshr: _bitshift64Lshr, _free: _free, ___errno_location: ___errno_location, _bitshift64Shl: _bitshift64Shl, __GLOBAL__sub_I_ARToolKitJS_cpp: __GLOBAL__sub_I_ARToolKitJS_cpp, __GLOBAL__sub_I_bind_cpp: __GLOBAL__sub_I_bind_cpp, runPostSets: runPostSets, _emscripten_replace_memory: _emscripten_replace_memory, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_iiii: dynCall_iiii, dynCall_viiiii: dynCall_viiiii, dynCall_dii: dynCall_dii, dynCall_vid: dynCall_vid, dynCall_di: dynCall_di, dynCall_i: dynCall_i, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_iiiii: dynCall_iiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_viiii: dynCall_viiii }; +}) +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg, Module.asmLibraryArg, buffer); +var real____cxa_demangle = asm["___cxa_demangle"]; asm["___cxa_demangle"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real____cxa_demangle.apply(null, arguments); +}; + +var real__i64Subtract = asm["_i64Subtract"]; asm["_i64Subtract"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__i64Subtract.apply(null, arguments); +}; + +var real___GLOBAL__sub_I_bind_cpp = asm["__GLOBAL__sub_I_bind_cpp"]; asm["__GLOBAL__sub_I_bind_cpp"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real___GLOBAL__sub_I_bind_cpp.apply(null, arguments); +}; + +var real__fflush = asm["_fflush"]; asm["_fflush"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__fflush.apply(null, arguments); +}; + +var real___GLOBAL__sub_I_ARToolKitJS_cpp = asm["__GLOBAL__sub_I_ARToolKitJS_cpp"]; asm["__GLOBAL__sub_I_ARToolKitJS_cpp"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real___GLOBAL__sub_I_ARToolKitJS_cpp.apply(null, arguments); +}; + +var real__i64Add = asm["_i64Add"]; asm["_i64Add"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__i64Add.apply(null, arguments); +}; + +var real__memmove = asm["_memmove"]; asm["_memmove"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__memmove.apply(null, arguments); +}; + +var real__malloc = asm["_malloc"]; asm["_malloc"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__malloc.apply(null, arguments); +}; + +var real____getTypeName = asm["___getTypeName"]; asm["___getTypeName"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real____getTypeName.apply(null, arguments); +}; + +var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__bitshift64Lshr.apply(null, arguments); +}; + +var real__free = asm["_free"]; asm["_free"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__free.apply(null, arguments); +}; + +var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real____errno_location.apply(null, arguments); +}; + +var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() { +assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); +assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +return real__bitshift64Shl.apply(null, arguments); +}; +var ___cxa_demangle = Module["___cxa_demangle"] = asm["___cxa_demangle"]; +var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"]; +var __GLOBAL__sub_I_bind_cpp = Module["__GLOBAL__sub_I_bind_cpp"] = asm["__GLOBAL__sub_I_bind_cpp"]; +var _fflush = Module["_fflush"] = asm["_fflush"]; +var __GLOBAL__sub_I_ARToolKitJS_cpp = Module["__GLOBAL__sub_I_ARToolKitJS_cpp"] = asm["__GLOBAL__sub_I_ARToolKitJS_cpp"]; +var _i64Add = Module["_i64Add"] = asm["_i64Add"]; +var _memmove = Module["_memmove"] = asm["_memmove"]; +var _memset = Module["_memset"] = asm["_memset"]; +var runPostSets = Module["runPostSets"] = asm["runPostSets"]; +var _malloc = Module["_malloc"] = asm["_malloc"]; +var _memcpy = Module["_memcpy"] = asm["_memcpy"]; +var ___getTypeName = Module["___getTypeName"] = asm["___getTypeName"]; +var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"]; +var _free = Module["_free"] = asm["_free"]; +var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = asm["_emscripten_replace_memory"]; +var ___errno_location = Module["___errno_location"] = asm["___errno_location"]; +var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; +var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; +var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"]; +var dynCall_dii = Module["dynCall_dii"] = asm["dynCall_dii"]; +var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"]; +var dynCall_di = Module["dynCall_di"] = asm["dynCall_di"]; +var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"]; +var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; +var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; +var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; +var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"]; +var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"]; +var dynCall_viid = Module["dynCall_viid"] = asm["dynCall_viid"]; +var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; +var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"]; +var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; +var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"]; +; + +Runtime.stackAlloc = asm['stackAlloc']; +Runtime.stackSave = asm['stackSave']; +Runtime.stackRestore = asm['stackRestore']; +Runtime.establishStackSpace = asm['establishStackSpace']; + +Runtime.setTempRet0 = asm['setTempRet0']; +Runtime.getTempRet0 = asm['getTempRet0']; + + + +// === Auto-generated postamble setup entry stuff === + + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +}; +ExitStatus.prototype = new Error(); +ExitStatus.prototype.constructor = ExitStatus; + +var initialStackTop; +var preloadStartTime = null; +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!Module['calledRun']) run(); + if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +} + +Module['callMain'] = Module.callMain = function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); + assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); + + args = args || []; + + ensureInitRuntime(); + + var argc = args.length+1; + function pad() { + for (var i = 0; i < 4-1; i++) { + argv.push(0); + } + } + var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL) ]; + pad(); + for (var i = 0; i < argc-1; i = i + 1) { + argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); + pad(); + } + argv.push(0); + argv = allocate(argv, 'i32', ALLOC_NORMAL); + + + try { + + var ret = Module['_main'](argc, argv, 0); + + + // if we're not running an evented main loop, it's time to exit + exit(ret, /* implicit = */ true); + } + catch(e) { + if (e instanceof ExitStatus) { + // exit() throws this once it's done to make sure execution + // has been stopped completely + return; + } else if (e == 'SimulateInfiniteLoop') { + // running an evented main loop, don't immediately exit + Module['noExitRuntime'] = true; + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } finally { + calledMain = true; + } +} + + + + +function run(args) { + args = args || Module['arguments']; + + if (preloadStartTime === null) preloadStartTime = Date.now(); + + if (runDependencies > 0) { + Module.printErr('run() called, but dependencies remain, so not running'); + return; + } + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame + + function doRun() { + if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening + Module['calledRun'] = true; + + if (ABORT) return; + + ensureInitRuntime(); + + preMain(); + + if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { + Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); + } + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + if (Module['_main'] && shouldRunNow) Module['callMain'](args); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} +Module['run'] = Module.run = run; + +function exit(status, implicit) { + if (implicit && Module['noExitRuntime']) { + Module.printErr('exit(' + status + ') implicitly called by end of main(), but noExitRuntime, so not exiting the runtime (you can use emscripten_force_exit, if you want to force a true shutdown)'); + return; + } + + if (Module['noExitRuntime']) { + Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)'); + } else { + + ABORT = true; + EXITSTATUS = status; + STACKTOP = initialStackTop; + + exitRuntime(); + + if (Module['onExit']) Module['onExit'](status); + } + + if (ENVIRONMENT_IS_NODE) { + // Work around a node.js bug where stdout buffer is not flushed at process exit: + // Instead of process.exit() directly, wait for stdout flush event. + // See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582 + // Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6 + process['stdout']['once']('drain', function () { + process['exit'](status); + }); + console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty. + // Work around another node bug where sometimes 'drain' is never fired - make another effort + // to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up) + setTimeout(function() { + process['exit'](status); + }, 500); + } else + if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') { + quit(status); + } + // if we reach here, we must throw an exception to halt the current execution + throw new ExitStatus(status); +} +Module['exit'] = Module.exit = exit; + +var abortDecorators = []; + +function abort(what) { + if (what !== undefined) { + Module.print(what); + Module.printErr(what); + what = JSON.stringify(what) + } else { + what = ''; + } + + ABORT = true; + EXITSTATUS = 1; + + var extra = ''; + + var output = 'abort(' + what + ') at ' + stackTrace() + extra; + if (abortDecorators) { + abortDecorators.forEach(function(decorator) { + output = decorator(output, what); + }); + } + throw output; +} +Module['abort'] = Module.abort = abort; + +// {{PRE_RUN_ADDITIONS}} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + +// shouldRunNow refers to calling main(), not run(). +var shouldRunNow = true; +if (Module['noInitialRun']) { + shouldRunNow = false; +} + + +run(); + +// {{POST_RUN_ADDITIONS}} + + + + + + +// {{MODULE_ADDITIONS}} + + + + + + diff --git a/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.min.js b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.min.js new file mode 100644 index 0000000..cac6a6d --- /dev/null +++ b/demo/ar/three.js/vendor/jsartoolkit5/build/artoolkit.min.js @@ -0,0 +1,18 @@ +((function(){"use strict";var ARController=(function(width,height,camera){var id;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;camera=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.transform_mat=new Float32Array(16);this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d");this.videoWidth=w;this.videoHeight=h;if(typeof camera==="string"){var self=this;this.cameraParam=new ARCameraParam(camera,(function(){self._initialize()}),(function(err){console.error("ARController: Failed to load ARCameraParam",err)}))}else{this.cameraParam=camera;this._initialize()}});ARController.prototype.dispose=(function(){artoolkit.teardown(this.id);for(var t in this){this[t]=null}});ARController.prototype.process=(function(image){this.detectMarker(image);var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat}})}var multiMarkerCount=this.getMultiMarkerCount();for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}});ARController.prototype.dispatchEvent=(function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||268435456;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[(function($0,$1,$2,$3){{if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3}}),(function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){{var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]}}),(function($0,$1,$2,$3,$4){{if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4}})];function _emscripten_asm_const_33(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}function _emscripten_asm_const_4(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_5(code,a0,a1,a2,a3,a4){return ASM_CONSTS[code](a0,a1,a2,a3,a4)}STATIC_BASE=8;STATICTOP=STATIC_BASE+16496;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_ARToolKitJS_cpp()})},{func:(function(){__GLOBAL__sub_I_bind_cpp()})});allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,53,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,116,42,0,0,52,9,0,0,136,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,73,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,54,47,0,0,228,8,0,0,23,47,0,0,228,8,0,0,62,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,0,46,0,0,228,8,0,0,225,45,0,0,228,8,0,0,194,45,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,186,46,0,0,228,8,0,0,217,46,0,0,228,8,0,0,248,46,0,0,12,9,0,0,199,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,212,47,0,0,228,8,0,0,225,47,0,0,12,9,0,0,238,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,15,48,0,0,64,2,0,0,0,0,0,0,12,9,0,0,49,48,0,0,64,2,0,0,0,0,0,0,200,8,0,0,89,48,0,0,200,8,0,0,91,48,0,0,200,8,0,0,93,48,0,0,200,8,0,0,95,48,0,0,200,8,0,0,97,48,0,0,200,8,0,0,99,48,0,0,200,8,0,0,101,48,0,0,200,8,0,0,103,48,0,0,200,8,0,0,105,48,0,0,200,8,0,0,107,48,0,0,200,8,0,0,109,48,0,0,200,8,0,0,111,48,0,0,200,8,0,0,113,48,0,0,12,9,0,0,115,48,0,0,80,2,0,0,0,0,0,0,12,9,0,0,152,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,81,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,73,58,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,118,111,105,100,0,98,111,111,108,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,108,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+15945);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return(new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n"))(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,(function(message){this.name=errorName;this.message=message;var stack=(new Error(message)).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}}));errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=(function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}});return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach((function(type){typeDependencies[type]=dependentTypes}));function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;var _BDtoILow=true;function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(wt){return!!wt}),"toWireType":(function(destructors,o){return o?trueValue:falseValue}),"argPackAdvance":8,"readValueFromPointer":(function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])}),destructorFunction:null})}Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=(function(){return HEAPU16});shift=1}else if(charSize===4){getHeap=(function(){return HEAPU32});shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=(function(value){return value});if(minRange===0){var bitshift=32-8*size;fromWireType=(function(value){return value<>>bitshift})}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _llvm_ctlz_i32=true;function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",(function(){}));dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var argsList="";var argsListWired="";for(var i=0;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _cos=Math_cos;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _BItoD=true;function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _ceilf=Math_ceil;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ed(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function fd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){b[e>>1]=0;a[l>>0]=0;m=q}else{a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function gd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l*3|0)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+3|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+6|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function hd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+10+(p<<5&224)+(q>>>3&28)+(q<<3&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function id(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+1>>0]|0)+(d[s>>0]|0)+(d[s+2>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function jd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){q=d[s>>0]|0;do if(((q&240)+24+(q<<4&240)+((d[s+1>>0]|0)&240)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function kd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<1)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){p=d[s>>0]|0;q=d[s+1>>0]|0;do if(((p&248)+12+(p<<5&224)+(q>>>3&24)+(q<<2&248)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+2|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+4|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function ld(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;p=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=p;n=p+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=j*3|0;z=f+-1|0;if((g|0)>0){l=0;j=p;m=p+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{j=j+(f<<1)|0;m=m+(f<<1)|0}}}m=k+1179664|0;l=f+1|0;w=0-f|0;u=1-f|0;v=~f;a:do if((B|0)>1){x=(z|0)>1;o=(c[k+4>>2]|0)+l|0;y=1;n=e+(l<<2)|0;e=p+(l<<1)|0;j=0;b:while(1){if(x){l=o;t=1;s=n;r=j;while(1){do if(((d[s+2>>0]|0)+(d[s+1>>0]|0)+(d[s+3>>0]|0)|0)>(A|0)){b[e>>1]=0;a[l>>0]=0;j=r}else{a[l>>0]=-1;j=b[e+(w<<1)>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}o=b[e+(u<<1)>>1]|0;p=o<<16>>16;j=b[e+(v<<1)>>1]|0;q=j<<16>>16;n=j<<16>>16>0;if(o<<16>>16<=0){if(n){b[e>>1]=j;j=q*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=b[e+-2>>1]|0;if(j<<16>>16>0){b[e>>1]=j;j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(t|0)){j=r;break}c[j>>2]=t;j=r;break}else{j=r+1|0;if((r|0)>32767)break b;b[e>>1]=j;c[k+1179664+(r<<2)>>2]=j<<16>>16;r=r*7|0;c[k+1310736+(r<<2)>>2]=1;c[k+1310736+(r+1<<2)>>2]=t;c[k+1310736+(r+2<<2)>>2]=y;c[k+1310736+(r+3<<2)>>2]=t;c[k+1310736+(r+4<<2)>>2]=t;c[k+1310736+(r+5<<2)>>2]=y;c[k+1310736+(r+6<<2)>>2]=y;break}}if(n){j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+(q+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;q=k+1310736+(j+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+y;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}n=b[e+-2>>1]|0;if(n<<16>>16<=0){b[e>>1]=o;j=p*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+t;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+y;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(t|0))c[n>>2]=t;c[k+1310736+(j+-1<<2)>>2]=y;j=r;break}j=c[k+1179664+(p+-1<<2)>>2]|0;p=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(p|0)){b[e>>1]=p;if((r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(j|0))c[o>>2]=p;n=n+1|0;if((n|0)>=(r|0)){j=p;break}else o=o+4|0}}else j=p}else{b[e>>1]=j;if((j|0)<(p|0)&(r|0)>0){n=0;o=m;while(1){if((c[o>>2]|0)==(p|0))c[o>>2]=j;n=n+1|0;if((n|0)>=(r|0))break;else o=o+4|0}}}j=(j<<16>>16)*7|0;q=k+1310736+(j+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=k+1310736+(j+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+t;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+y;j=r}while(0);t=t+1|0;n=s+4|0;e=e+2|0;l=l+1|0;if((t|0)>=(z|0))break;else{s=n;r=j}}}else l=o;y=y+1|0;if((y|0)>=(B|0)){p=j;D=52;break a}else{o=l+2|0;n=n+8|0;e=e+4|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){e=k+12|0;if((p|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(p|0)){n=n+1|0;m=m+4|0}else break}}o=k+8|0;l=j+-1|0;c[o>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[o>>2]|0))}if((p|0)>0){e=0;do{m=(c[k+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;e=e+1|0}while((e|0)<(p|0))}if((c[o>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[o>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function md(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+l|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+2|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function nd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t+1>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function od(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;l=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;p=(c[k+4>>2]|0)+l|0;z=1;e=e+(l<<1)|0;o=o+(l<<1)|0;m=0;b:while(1){if(y){l=p;u=1;t=e;s=m;while(1){do if((d[t>>0]|0|0)>(j|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+2|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}else l=p;z=z+1|0;if((z|0)>=(B|0)){q=m;D=52;break a}else{p=l+2|0;e=e+4|0;o=o+4|0}}Me(3,3904,C);l=-1}else{q=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((q|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(q|0)){e=e+1|0;n=n+4|0}else break}}p=k+8|0;l=m+-1|0;c[p>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[p>>2]|0))}if((q|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(q|0))}if((c[p>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[p>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function pd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;o=c[k>>2]|0;B=g+-1|0;if((f|0)>0){l=0;m=o;n=o+(($(B,f)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(f|0))break;else{m=m+2|0;n=n+2|0}}}A=f+-1|0;if((g|0)>0){l=0;m=o;n=o+(A<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(g|0))break;else{m=m+(f<<1)|0;n=n+(f<<1)|0}}}n=k+1179664|0;m=f+1|0;x=0-f|0;v=1-f|0;w=~f;a:do if((B|0)>1){y=(A|0)>1;l=(c[k+4>>2]|0)+m|0;z=1;e=e+m|0;o=o+(m<<1)|0;j=j+m|0;m=0;b:while(1){if(y){u=1;t=e;s=m;while(1){do if((d[t>>0]|0)>(d[j>>0]|0)){b[o>>1]=0;a[l>>0]=0;m=s}else{a[l>>0]=-1;m=b[o+(x<<1)>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}p=b[o+(v<<1)>>1]|0;q=p<<16>>16;m=b[o+(w<<1)>>1]|0;r=m<<16>>16;e=m<<16>>16>0;if(p<<16>>16<=0){if(e){b[o>>1]=m;m=r*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-3<<2)|0;if((c[e>>2]|0)<(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=b[o+-2>>1]|0;if(m<<16>>16>0){b[o>>1]=m;m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(u|0)){m=s;break}c[m>>2]=u;m=s;break}else{m=s+1|0;if((s|0)>32767)break b;b[o>>1]=m;c[k+1179664+(s<<2)>>2]=m<<16>>16;s=s*7|0;c[k+1310736+(s<<2)>>2]=1;c[k+1310736+(s+1<<2)>>2]=u;c[k+1310736+(s+2<<2)>>2]=z;c[k+1310736+(s+3<<2)>>2]=u;c[k+1310736+(s+4<<2)>>2]=u;c[k+1310736+(s+5<<2)>>2]=z;c[k+1310736+(s+6<<2)>>2]=z;break}}if(e){m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+(r+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;r=k+1310736+(m+-5<<2)|0;c[r>>2]=(c[r>>2]|0)+z;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}e=b[o+-2>>1]|0;if(e<<16>>16<=0){b[o>>1]=p;m=q*7|0;e=k+1310736+(m+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=k+1310736+(m+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+u;e=k+1310736+(m+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+z;e=k+1310736+(m+-4<<2)|0;if((c[e>>2]|0)>(u|0))c[e>>2]=u;c[k+1310736+(m+-1<<2)>>2]=z;m=s;break}m=c[k+1179664+(q+-1<<2)>>2]|0;q=c[k+1179664+((e<<16>>16)+-1<<2)>>2]|0;if((m|0)>(q|0)){b[o>>1]=q;if((s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(m|0))c[p>>2]=q;e=e+1|0;if((e|0)>=(s|0)){m=q;break}else p=p+4|0}}else m=q}else{b[o>>1]=m;if((m|0)<(q|0)&(s|0)>0){e=0;p=n;while(1){if((c[p>>2]|0)==(q|0))c[p>>2]=m;e=e+1|0;if((e|0)>=(s|0))break;else p=p+4|0}}}m=(m<<16>>16)*7|0;r=k+1310736+(m+-7<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=k+1310736+(m+-6<<2)|0;c[r>>2]=(c[r>>2]|0)+u;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+z;m=s}while(0);u=u+1|0;e=t+1|0;j=j+1|0;o=o+2|0;l=l+1|0;if((u|0)>=(A|0))break;else{t=e;s=m}}}z=z+1|0;if((z|0)>=(B|0)){p=m;D=52;break a}else{l=l+2|0;e=e+2|0;o=o+4|0;j=j+2|0}}Me(3,3904,C);l=-1}else{p=0;D=52}while(0);if((D|0)==52){o=k+12|0;if((p|0)<1)m=1;else{e=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(e|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((e|0)<(p|0)){e=e+1|0;n=n+4|0}else break}}j=k+8|0;l=m+-1|0;c[j>>2]=l;if(l){ek(o|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{D=l<<2;c[k+131084+(D<<2)>>2]=f;c[k+131084+((D|1)<<2)>>2]=0;c[k+131084+((D|2)<<2)>>2]=g;c[k+131084+((D|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[j>>2]|0))}if((p|0)>0){o=0;do{n=(c[k+1179664+(o<<2)>>2]|0)+-1|0;e=o*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(e<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(e+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(e+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(e+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(e+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(e+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(e+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;o=o+1|0}while((o|0)<(p|0))}if((c[j>>2]|0)>0){l=0;do{f=k+12+(l<<2)|0;g=l<<1;D=k+655376+(g<<3)|0;h[D>>3]=+h[D>>3]/+(c[f>>2]|0);g=k+655376+((g|1)<<3)|0;h[g>>3]=+h[g>>3]/+(c[f>>2]|0);l=l+1|0}while((l|0)<(c[j>>2]|0));l=0}else l=0}else l=0}i=E;return l|0}function qd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function rd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function sd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function td(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ud(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function vd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}else{b[g>>1]=0;a[l>>0]=0;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function wd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=f+4|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<1)+2)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+2|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function xd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r+1>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function yd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}z=D+-1|0;if((g|0)>1){l=0;m=o;n=o+(z<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{m=m+(D<<1)|0;n=n+(D<<1)|0}}}n=k+1179664|0;m=D+1|0;w=0-D|0;u=1-D|0;v=~D;t=(f<<1)+8|0;a:do if((A|0)>1){x=(z|0)>1;l=(c[k+4>>2]|0)+m|0;y=1;g=e+((f<<2)+4)|0;e=o+(m<<1)|0;m=0;b:while(1){if(x){s=1;r=g;q=m;while(1){do if((d[r>>0]|0|0)>(j|0)){a[l>>0]=-1;m=b[e+(w<<1)>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}f=b[e+(u<<1)>>1]|0;o=f<<16>>16;m=b[e+(v<<1)>>1]|0;p=m<<16>>16;g=m<<16>>16>0;if(f<<16>>16<=0){if(g){b[e>>1]=m;m=p*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-3<<2)|0;if((c[g>>2]|0)<(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=b[e+-2>>1]|0;if(m<<16>>16>0){b[e>>1]=m;m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;m=k+1310736+(m+-3<<2)|0;if((c[m>>2]|0)>=(s|0)){m=q;break}c[m>>2]=s;m=q;break}else{m=q+1|0;if((q|0)>32767)break b;b[e>>1]=m;c[k+1179664+(q<<2)>>2]=m<<16>>16;q=q*7|0;c[k+1310736+(q<<2)>>2]=1;c[k+1310736+(q+1<<2)>>2]=s;c[k+1310736+(q+2<<2)>>2]=y;c[k+1310736+(q+3<<2)>>2]=s;c[k+1310736+(q+4<<2)>>2]=s;c[k+1310736+(q+5<<2)>>2]=y;c[k+1310736+(q+6<<2)>>2]=y;break}}if(g){m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+(p+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=k+1310736+(m+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+y;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}g=b[e+-2>>1]|0;if(g<<16>>16<=0){b[e>>1]=f;m=o*7|0;g=k+1310736+(m+-7<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=k+1310736+(m+-6<<2)|0;c[g>>2]=(c[g>>2]|0)+s;g=k+1310736+(m+-5<<2)|0;c[g>>2]=(c[g>>2]|0)+y;g=k+1310736+(m+-4<<2)|0;if((c[g>>2]|0)>(s|0))c[g>>2]=s;c[k+1310736+(m+-1<<2)>>2]=y;m=q;break}m=c[k+1179664+(o+-1<<2)>>2]|0;o=c[k+1179664+((g<<16>>16)+-1<<2)>>2]|0;if((m|0)>(o|0)){b[e>>1]=o;if((q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(m|0))c[f>>2]=o;g=g+1|0;if((g|0)>=(q|0)){m=o;break}else f=f+4|0}}else m=o}else{b[e>>1]=m;if((m|0)<(o|0)&(q|0)>0){g=0;f=n;while(1){if((c[f>>2]|0)==(o|0))c[f>>2]=m;g=g+1|0;if((g|0)>=(q|0))break;else f=f+4|0}}}m=(m<<16>>16)*7|0;p=k+1310736+(m+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=k+1310736+(m+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;m=k+1310736+(m+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+y;m=q}else{b[e>>1]=0;a[l>>0]=0;m=q}while(0);s=s+1|0;g=r+4|0;e=e+2|0;l=l+1|0;if((s|0)>=(z|0))break;else{r=g;q=m}}}y=y+1|0;if((y|0)>=(A|0)){o=m;C=52;break a}else{l=l+2|0;g=g+t|0;e=e+4|0}}Me(3,3904,B);l=-1}else{o=0;C=52}while(0);if((C|0)==52){e=k+12|0;if((o|0)<1)m=1;else{g=1;m=1;while(1){l=c[n>>2]|0;if((l|0)==(g|0)){l=m;m=m+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[n>>2]=l;if((g|0)<(o|0)){g=g+1|0;n=n+4|0}else break}}f=k+8|0;l=m+-1|0;c[f>>2]=l;if(l){ek(e|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((m|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[f>>2]|0))}if((o|0)>0){e=0;do{n=(c[k+1179664+(e<<2)>>2]|0)+-1|0;g=e*7|0;l=k+12+(n<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(g<<2)>>2]|0);l=n<<1;m=k+655376+(l<<3)|0;h[m>>3]=+h[m>>3]+ +(c[k+1310736+(g+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(g+2<<2)>>2]|0);n=n<<2;l=k+131084+(n<<2)|0;m=c[k+1310736+(g+3<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;l=k+131084+((n|1)<<2)|0;m=c[k+1310736+(g+4<<2)>>2]|0;if((c[l>>2]|0)<(m|0))c[l>>2]=m;l=k+131084+((n|2)<<2)|0;m=c[k+1310736+(g+5<<2)>>2]|0;if((c[l>>2]|0)>(m|0))c[l>>2]=m;m=k+131084+((n|3)<<2)|0;l=c[k+1310736+(g+6<<2)>>2]|0;if((c[m>>2]|0)<(l|0))c[m>>2]=l;e=e+1|0}while((e|0)<(o|0))}if((c[f>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[f>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function ec(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function fc(){return i|0}function gc(a){a=a|0;i=a}function hc(a,b){a=a|0;b=b|0;i=a;j=b}function ic(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function jc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function kc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function lc(a){a=a|0;D=a}function mc(){return D|0}function nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){b[o>>1]=0;k=n}else{k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[p>>1]=0;k=o}else{k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function zc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ac(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Bc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){b[q>>1]=0;k=p}else{k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Cc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Dc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Ec(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){b[r>>1]=0;k=q}else{k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Fc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){b[a>>1]=0;k=q}else{k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Gc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e*3|0)+12|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e*6|0)+6)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+6|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Hc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+10+(a<<5&224)+(e>>>3&28)+(e<<3&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Ic(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0} +function Jc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){e=d[g>>0]|0;do if(((e&240)+24+(e<<4&240)+((d[g+1>>0]|0)&240)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Kc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<1)+8|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<2)+4)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){a=d[g>>0]|0;e=d[g+1>>0]|0;do if(((a&248)+12+(a<<5&224)+(e>>>3&24)+(e<<2&248)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+4|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Lc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}w=g*3|0;x=B+-1|0;if((f|0)>1){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{g=g+(B<<1)|0;l=l+(B<<1)|0}}}l=j+1179664|0;t=0-B|0;r=1-B|0;s=~B;q=(e<<2)+16|0;a:do if((y|0)>1){u=(x|0)>1;v=1;g=a+((e<<3)+8)|0;m=n+(B+1<<1)|0;k=0;b:while(1){if(u){p=1;o=m;n=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(w|0)){k=b[o+(t<<1)>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}f=b[o+(r<<1)>>1]|0;a=f<<16>>16;k=b[o+(s<<1)>>1]|0;e=k<<16>>16;m=k<<16>>16>0;if(f<<16>>16<=0){if(m){b[o>>1]=k;k=e*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=b[o+-2>>1]|0;if(k<<16>>16>0){b[o>>1]=k;k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0)){k=n;break}c[k>>2]=p;k=n;break}else{k=n+1|0;if((n|0)>32767)break b;b[o>>1]=k;c[j+1179664+(n<<2)>>2]=k<<16>>16;n=n*7|0;c[j+1310736+(n<<2)>>2]=1;c[j+1310736+(n+1<<2)>>2]=p;c[j+1310736+(n+2<<2)>>2]=v;c[j+1310736+(n+3<<2)>>2]=p;c[j+1310736+(n+4<<2)>>2]=p;c[j+1310736+(n+5<<2)>>2]=v;c[j+1310736+(n+6<<2)>>2]=v;break}}if(m){k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+(e+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;e=j+1310736+(k+-5<<2)|0;c[e>>2]=(c[e>>2]|0)+v;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}m=b[o+-2>>1]|0;if(m<<16>>16<=0){b[o>>1]=f;k=a*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+p;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+v;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(p|0))c[m>>2]=p;c[j+1310736+(k+-1<<2)>>2]=v;k=n;break}k=c[j+1179664+(a+-1<<2)>>2]|0;a=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(a|0)){b[o>>1]=a;if((n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(k|0))c[f>>2]=a;m=m+1|0;if((m|0)>=(n|0)){k=a;break}else f=f+4|0}}else k=a}else{b[o>>1]=k;if((k|0)<(a|0)&(n|0)>0){m=0;f=l;while(1){if((c[f>>2]|0)==(a|0))c[f>>2]=k;m=m+1|0;if((m|0)>=(n|0))break;else f=f+4|0}}}k=(k<<16>>16)*7|0;e=j+1310736+(k+-7<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=j+1310736+(k+-6<<2)|0;c[e>>2]=(c[e>>2]|0)+p;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+v;k=n}else{b[o>>1]=0;k=n}while(0);p=p+1|0;g=g+8|0;m=o+2|0;if((p|0)>=(x|0))break;else{o=m;n=k}}}v=v+1|0;if((v|0)>=(y|0)){e=k;A=52;break a}else{g=g+q|0;m=m+4|0}}Me(3,3904,z);k=-1}else{e=0;A=52}while(0);if((A|0)==52){f=j+12|0;if((e|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(e|0)){m=m+1|0;l=l+4|0}else break}}a=j+8|0;k=g+-1|0;c[a>>2]=k;if(k){ek(f|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[a>>2]|0))}if((e|0)>0){f=0;do{l=(c[j+1179664+(f<<2)>>2]|0)+-1|0;m=f*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;f=f+1|0}while((f|0)<(e|0))}if((c[a>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[a>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Mc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=e+4|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<1)+2)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+2|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Nc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Oc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;B=(e|0)/2|0;C=(f|0)/2|0;n=c[j>>2]|0;y=C+-1|0;if((e|0)>1){k=0;l=n;m=n+(($(y,B)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(B|0))break;else{l=l+2|0;m=m+2|0}}}x=B+-1|0;if((f|0)>1){k=0;l=n;m=n+(x<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(C|0))break;else{l=l+(B<<1)|0;m=m+(B<<1)|0}}}m=j+1179664|0;u=0-B|0;s=1-B|0;t=~B;r=(e<<1)+8|0;a:do if((y|0)>1){v=(x|0)>1;w=1;l=a+((e<<2)+4)|0;f=n+(B+1<<1)|0;k=0;b:while(1){if(v){q=1;p=f;o=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[p+(u<<1)>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}a=b[p+(s<<1)>>1]|0;e=a<<16>>16;k=b[p+(t<<1)>>1]|0;n=k<<16>>16;f=k<<16>>16>0;if(a<<16>>16<=0){if(f){b[p>>1]=k;k=n*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-3<<2)|0;if((c[f>>2]|0)<(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=b[p+-2>>1]|0;if(k<<16>>16>0){b[p>>1]=k;k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0)){k=o;break}c[k>>2]=q;k=o;break}else{k=o+1|0;if((o|0)>32767)break b;b[p>>1]=k;c[j+1179664+(o<<2)>>2]=k<<16>>16;o=o*7|0;c[j+1310736+(o<<2)>>2]=1;c[j+1310736+(o+1<<2)>>2]=q;c[j+1310736+(o+2<<2)>>2]=w;c[j+1310736+(o+3<<2)>>2]=q;c[j+1310736+(o+4<<2)>>2]=q;c[j+1310736+(o+5<<2)>>2]=w;c[j+1310736+(o+6<<2)>>2]=w;break}}if(f){k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+(n+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;n=j+1310736+(k+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}f=b[p+-2>>1]|0;if(f<<16>>16<=0){b[p>>1]=a;k=e*7|0;f=j+1310736+(k+-7<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=j+1310736+(k+-6<<2)|0;c[f>>2]=(c[f>>2]|0)+q;f=j+1310736+(k+-5<<2)|0;c[f>>2]=(c[f>>2]|0)+w;f=j+1310736+(k+-4<<2)|0;if((c[f>>2]|0)>(q|0))c[f>>2]=q;c[j+1310736+(k+-1<<2)>>2]=w;k=o;break}k=c[j+1179664+(e+-1<<2)>>2]|0;e=c[j+1179664+((f<<16>>16)+-1<<2)>>2]|0;if((k|0)>(e|0)){b[p>>1]=e;if((o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=e;f=f+1|0;if((f|0)>=(o|0)){k=e;break}else a=a+4|0}}else k=e}else{b[p>>1]=k;if((k|0)<(e|0)&(o|0)>0){f=0;a=m;while(1){if((c[a>>2]|0)==(e|0))c[a>>2]=k;f=f+1|0;if((f|0)>=(o|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;n=j+1310736+(k+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=j+1310736+(k+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+q;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=o}else{b[p>>1]=0;k=o}while(0);q=q+1|0;l=l+4|0;f=p+2|0;if((q|0)>=(x|0))break;else{p=f;o=k}}}w=w+1|0;if((w|0)>=(y|0)){n=k;A=52;break a}else{l=l+r|0;f=f+4|0}}Me(3,3904,z);k=-1}else{n=0;A=52}while(0);if((A|0)==52){a=j+12|0;if((n|0)<1)l=1;else{f=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(f|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((f|0)<(n|0)){f=f+1|0;m=m+4|0}else break}}e=j+8|0;k=l+-1|0;c[e>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{A=k<<2;c[j+131084+(A<<2)>>2]=B;c[j+131084+((A|1)<<2)>>2]=0;c[j+131084+((A|2)<<2)>>2]=C;c[j+131084+((A|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[e>>2]|0))}if((n|0)>0){a=0;do{m=(c[j+1179664+(a<<2)>>2]|0)+-1|0;f=a*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(f<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(f+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(f+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(f+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(f+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(f+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(f+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;a=a+1|0}while((a|0)<(n|0))}if((c[e>>2]|0)>0){k=0;do{B=j+12+(k<<2)|0;C=k<<1;A=j+655376+(C<<3)|0;h[A>>3]=+h[A>>3]/+(c[B>>2]|0);C=j+655376+((C|1)<<3)|0;h[C>>3]=+h[C>>3]/+(c[B>>2]|0);k=k+1|0}while((k|0)<(c[e>>2]|0));k=0}else k=0}else k=0}i=D;return k|0}function Pc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k*3|0)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+3|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+6|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Qc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+10+(n<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Rc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+1>>0]|0)+(d[g>>0]|0)+(d[g+2>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Sc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){o=d[g>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[g+1>>0]|0)&240)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Tc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<1)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){n=d[g>>0]|0;o=d[g+1>>0]|0;do if(((n&248)+12+(n<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+2|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+4|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Uc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=g*3|0;x=e+-1|0;if((f|0)>0){k=0;g=n;l=n+(x<<1)|0;while(1){b[l>>1]=0;b[g>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{g=g+(e<<1)|0;l=l+(e<<1)|0}}}l=j+1179664|0;k=e+1|0;u=0-e|0;s=1-e|0;t=~e;a:do if((z|0)>1){v=(x|0)>1;w=1;g=a+(k<<2)|0;m=n+(k<<1)|0;k=0;b:while(1){if(v){r=1;q=m;p=k;while(1){do if(((d[g+2>>0]|0)+(d[g+1>>0]|0)+(d[g+3>>0]|0)|0)>(y|0)){k=b[q+(u<<1)>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}a=b[q+(s<<1)>>1]|0;n=a<<16>>16;k=b[q+(t<<1)>>1]|0;o=k<<16>>16;m=k<<16>>16>0;if(a<<16>>16<=0){if(m){b[q>>1]=k;k=o*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=b[q+-2>>1]|0;if(k<<16>>16>0){b[q>>1]=k;k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(r|0)){k=p;break}c[k>>2]=r;k=p;break}else{k=p+1|0;if((p|0)>32767)break b;b[q>>1]=k;c[j+1179664+(p<<2)>>2]=k<<16>>16;p=p*7|0;c[j+1310736+(p<<2)>>2]=1;c[j+1310736+(p+1<<2)>>2]=r;c[j+1310736+(p+2<<2)>>2]=w;c[j+1310736+(p+3<<2)>>2]=r;c[j+1310736+(p+4<<2)>>2]=r;c[j+1310736+(p+5<<2)>>2]=w;c[j+1310736+(p+6<<2)>>2]=w;break}}if(m){k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+(o+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=j+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+w;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}m=b[q+-2>>1]|0;if(m<<16>>16<=0){b[q>>1]=a;k=n*7|0;m=j+1310736+(k+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(k+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(k+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+w;m=j+1310736+(k+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(k+-1<<2)>>2]=w;k=p;break}k=c[j+1179664+(n+-1<<2)>>2]|0;n=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;if((k|0)>(n|0)){b[q>>1]=n;if((p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(k|0))c[a>>2]=n;m=m+1|0;if((m|0)>=(p|0)){k=n;break}else a=a+4|0}}else k=n}else{b[q>>1]=k;if((k|0)<(n|0)&(p|0)>0){m=0;a=l;while(1){if((c[a>>2]|0)==(n|0))c[a>>2]=k;m=m+1|0;if((m|0)>=(p|0))break;else a=a+4|0}}}k=(k<<16>>16)*7|0;o=j+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+w;k=p}else{b[q>>1]=0;k=p}while(0);r=r+1|0;g=g+4|0;m=q+2|0;if((r|0)>=(x|0))break;else{q=m;p=k}}}w=w+1|0;if((w|0)>=(z|0)){o=k;B=52;break a}else{g=g+8|0;m=m+4|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){a=j+12|0;if((o|0)<1)g=1;else{m=1;g=1;while(1){k=c[l>>2]|0;if((k|0)==(m|0)){k=g;g=g+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[l>>2]=k;if((m|0)<(o|0)){m=m+1|0;l=l+4|0}else break}}n=j+8|0;k=g+-1|0;c[n>>2]=k;if(k){ek(a|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((g|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[n>>2]|0))}if((o|0)>0){a=0;do{l=(c[j+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;k=j+12+(l<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);k=l<<1;g=j+655376+(k<<3)|0;h[g>>3]=+h[g>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;k=j+131084+(l<<2)|0;g=c[j+1310736+(m+3<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;k=j+131084+((l|1)<<2)|0;g=c[j+1310736+(m+4<<2)>>2]|0;if((c[k>>2]|0)<(g|0))c[k>>2]=g;k=j+131084+((l|2)<<2)|0;g=c[j+1310736+(m+5<<2)>>2]|0;if((c[k>>2]|0)>(g|0))c[k>>2]=g;g=j+131084+((l|3)<<2)|0;k=c[j+1310736+(m+6<<2)>>2]|0;if((c[g>>2]|0)<(k|0))c[g>>2]=k;a=a+1|0}while((a|0)<(o|0))}if((c[n>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Vc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+1|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+2|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Wc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l+1>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}a=b[r+-2>>1]|0;if(a<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+((a<<16>>16)+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Xc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+(k<<1)|0;a=n+(k<<1)|0;k=0;b:while(1){if(w){s=1;r=a;q=k;while(1){do if((d[l>>0]|0|0)>(g|0)){k=b[r+(v<<1)>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}n=b[r+(t<<1)>>1]|0;o=n<<16>>16;k=b[r+(u<<1)>>1]|0;p=k<<16>>16;a=k<<16>>16>0;if(n<<16>>16<=0){if(a){b[r>>1]=k;k=p*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[r>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(a){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[r>>1]=o;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}else{b[r>>1]=k;if((k|0)<(o|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[r+-2>>1]|0;if(k<<16>>16<=0){b[r>>1]=n;k=o*7|0;a=j+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=j+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=j+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+x;a=j+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(s|0))c[a>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[r>>1]=k;if((q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(o|0))c[n>>2]=k;a=a+1|0;if((a|0)>=(q|0))break;else n=n+4|0}}}else{b[r>>1]=o;if((o|0)<(k|0)&(q|0)>0){a=0;n=m;while(1){if((c[n>>2]|0)==(k|0))c[n>>2]=o;a=a+1|0;if((a|0)>=(q|0)){k=o;break}else n=n+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[r>>1]=0;k=q}while(0);s=s+1|0;l=l+2|0;a=r+2|0;if((s|0)>=(y|0))break;else{r=a;q=k}}}x=x+1|0;if((x|0)>=(z|0)){p=k;B=52;break a}else{l=l+4|0;a=a+4|0}}Me(3,3904,A);k=-1}else{p=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((p|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(p|0)){a=a+1|0;m=m+4|0}else break}}o=j+8|0;k=l+-1|0;c[o>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[o>>2]|0))}if((p|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(p|0))}if((c[o>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[o>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Yc(a,e,f,g,j){a=a|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;A=C;n=c[j>>2]|0;z=f+-1|0;if((e|0)>0){k=0;l=n;m=n+(($(z,e)|0)<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(e|0))break;else{l=l+2|0;m=m+2|0}}}y=e+-1|0;if((f|0)>0){k=0;l=n;m=n+(y<<1)|0;while(1){b[m>>1]=0;b[l>>1]=0;k=k+1|0;if((k|0)>=(f|0))break;else{l=l+(e<<1)|0;m=m+(e<<1)|0}}}m=j+1179664|0;k=e+1|0;v=0-e|0;t=1-e|0;u=~e;a:do if((z|0)>1){w=(y|0)>1;x=1;l=a+k|0;a=n+(k<<1)|0;n=g+k|0;k=0;b:while(1){if(w){s=1;r=l;q=k;while(1){do if((d[r>>0]|0)>(d[n>>0]|0)){k=b[a+(v<<1)>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}g=b[a+(t<<1)>>1]|0;o=g<<16>>16;k=b[a+(u<<1)>>1]|0;p=k<<16>>16;l=k<<16>>16>0;if(g<<16>>16<=0){if(l){b[a>>1]=k;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16>0){b[a>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(s|0)){k=q;break}c[k>>2]=s;k=q;break}else{k=q+1|0;if((q|0)>32767)break b;b[a>>1]=k;c[j+1179664+(q<<2)>>2]=k<<16>>16;q=q*7|0;c[j+1310736+(q<<2)>>2]=1;c[j+1310736+(q+1<<2)>>2]=s;c[j+1310736+(q+2<<2)>>2]=x;c[j+1310736+(q+3<<2)>>2]=s;c[j+1310736+(q+4<<2)>>2]=s;c[j+1310736+(q+5<<2)>>2]=x;c[j+1310736+(q+6<<2)>>2]=x;break}}if(l){k=c[j+1179664+(o+-1<<2)>>2]|0;o=c[j+1179664+(p+-1<<2)>>2]|0;if((k|0)>(o|0)){b[a>>1]=o;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}else{b[a>>1]=k;if((k|0)<(o|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+x;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}k=b[a+-2>>1]|0;if(k<<16>>16<=0){b[a>>1]=g;k=o*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+x;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(s|0))c[l>>2]=s;c[j+1310736+(k+-1<<2)>>2]=x;k=q;break}o=c[j+1179664+(o+-1<<2)>>2]|0;k=c[j+1179664+((k<<16>>16)+-1<<2)>>2]|0;if((o|0)>(k|0)){b[a>>1]=k;if((q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(o|0))c[g>>2]=k;l=l+1|0;if((l|0)>=(q|0))break;else g=g+4|0}}}else{b[a>>1]=o;if((o|0)<(k|0)&(q|0)>0){l=0;g=m;while(1){if((c[g>>2]|0)==(k|0))c[g>>2]=o;l=l+1|0;if((l|0)>=(q|0)){k=o;break}else g=g+4|0}}else k=o}k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=j+1310736+(k+-5<<2)|0;c[k>>2]=(c[k>>2]|0)+x;k=q}else{b[a>>1]=0;k=q}while(0);s=s+1|0;l=r+1|0;n=n+1|0;a=a+2|0;if((s|0)>=(y|0))break;else{r=l;q=k}}}x=x+1|0;if((x|0)>=(z|0)){o=k;B=52;break a}else{l=l+2|0;a=a+4|0;n=n+2|0}}Me(3,3904,A);k=-1}else{o=0;B=52}while(0);if((B|0)==52){n=j+12|0;if((o|0)<1)l=1;else{a=1;l=1;while(1){k=c[m>>2]|0;if((k|0)==(a|0)){k=l;l=l+1|0}else k=c[j+1179664+(k+-1<<2)>>2]|0;c[m>>2]=k;if((a|0)<(o|0)){a=a+1|0;m=m+4|0}else break}}g=j+8|0;k=l+-1|0;c[g>>2]=k;if(k){ek(n|0,0,k<<2|0)|0;ek(j+655376|0,0,k<<4|0)|0;if((l|0)>1){k=0;do{B=k<<2;c[j+131084+(B<<2)>>2]=e;c[j+131084+((B|1)<<2)>>2]=0;c[j+131084+((B|2)<<2)>>2]=f;c[j+131084+((B|3)<<2)>>2]=0;k=k+1|0}while((k|0)<(c[g>>2]|0))}if((o|0)>0){n=0;do{m=(c[j+1179664+(n<<2)>>2]|0)+-1|0;a=n*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(a<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;h[l>>3]=+h[l>>3]+ +(c[j+1310736+(a+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;h[k>>3]=+h[k>>3]+ +(c[j+1310736+(a+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(a+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(a+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(a+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(a+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;n=n+1|0}while((n|0)<(o|0))}if((c[g>>2]|0)>0){k=0;do{e=j+12+(k<<2)|0;f=k<<1;B=j+655376+(f<<3)|0;h[B>>3]=+h[B>>3]/+(c[e>>2]|0);f=j+655376+((f|1)<<3)|0;h[f>>3]=+h[f>>3]/+(c[e>>2]|0);k=k+1|0}while((k|0)<(c[g>>2]|0));k=0}else k=0}else k=0}i=C;return k|0}function Zc(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f*3|0)+12|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f*6|0)+6)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+6|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function _c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+10+(f<<5&224)+(o>>>3&28)+(o<<3&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function $c(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+1>>0]|0)+(d[q>>0]|0)+(d[q+2>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function ad(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){o=d[q>>0]|0;do if(((o&240)+24+(o<<4&240)+((d[q+1>>0]|0)&240)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function bd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<1)+8|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<2)+4)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){f=d[q>>0]|0;o=d[q+1>>0]|0;do if(((f&248)+12+(f<<5&224)+(o>>>3&24)+(o<<2&248)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+4|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0}function cd(e,f,g,j,k){e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;B=F;D=(f|0)/2|0;E=(g|0)/2|0;o=c[k>>2]|0;A=E+-1|0;if((f|0)>1){l=0;m=o;n=o+(($(A,D)|0)<<1)|0;while(1){b[n>>1]=0;b[m>>1]=0;l=l+1|0;if((l|0)>=(D|0))break;else{m=m+2|0;n=n+2|0}}}y=j*3|0;z=D+-1|0;if((g|0)>1){l=0;j=o;m=o+(z<<1)|0;while(1){b[m>>1]=0;b[j>>1]=0;l=l+1|0;if((l|0)>=(E|0))break;else{j=j+(D<<1)|0;m=m+(D<<1)|0}}}m=k+1179664|0;j=D+1|0;v=0-D|0;t=1-D|0;u=~D;s=(f<<2)+16|0;a:do if((A|0)>1){w=(z|0)>1;l=(c[k+4>>2]|0)+j|0;x=1;n=e+((f<<3)+8)|0;g=o+(j<<1)|0;j=0;b:while(1){if(w){r=1;q=n;p=j;while(1){do if(((d[q+2>>0]|0)+(d[q+1>>0]|0)+(d[q+3>>0]|0)|0)>(y|0)){b[g>>1]=0;a[l>>0]=0;j=p}else{a[l>>0]=-1;j=b[g+(v<<1)>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}e=b[g+(t<<1)>>1]|0;f=e<<16>>16;j=b[g+(u<<1)>>1]|0;o=j<<16>>16;n=j<<16>>16>0;if(e<<16>>16<=0){if(n){b[g>>1]=j;j=o*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-3<<2)|0;if((c[n>>2]|0)<(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=b[g+-2>>1]|0;if(j<<16>>16>0){b[g>>1]=j;j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;j=k+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(r|0)){j=p;break}c[j>>2]=r;j=p;break}else{j=p+1|0;if((p|0)>32767)break b;b[g>>1]=j;c[k+1179664+(p<<2)>>2]=j<<16>>16;p=p*7|0;c[k+1310736+(p<<2)>>2]=1;c[k+1310736+(p+1<<2)>>2]=r;c[k+1310736+(p+2<<2)>>2]=x;c[k+1310736+(p+3<<2)>>2]=r;c[k+1310736+(p+4<<2)>>2]=r;c[k+1310736+(p+5<<2)>>2]=x;c[k+1310736+(p+6<<2)>>2]=x;break}}if(n){j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+(o+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;o=k+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+x;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}n=b[g+-2>>1]|0;if(n<<16>>16<=0){b[g>>1]=e;j=f*7|0;n=k+1310736+(j+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=k+1310736+(j+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+r;n=k+1310736+(j+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+x;n=k+1310736+(j+-4<<2)|0;if((c[n>>2]|0)>(r|0))c[n>>2]=r;c[k+1310736+(j+-1<<2)>>2]=x;j=p;break}j=c[k+1179664+(f+-1<<2)>>2]|0;f=c[k+1179664+((n<<16>>16)+-1<<2)>>2]|0;if((j|0)>(f|0)){b[g>>1]=f;if((p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(j|0))c[e>>2]=f;n=n+1|0;if((n|0)>=(p|0)){j=f;break}else e=e+4|0}}else j=f}else{b[g>>1]=j;if((j|0)<(f|0)&(p|0)>0){n=0;e=m;while(1){if((c[e>>2]|0)==(f|0))c[e>>2]=j;n=n+1|0;if((n|0)>=(p|0))break;else e=e+4|0}}}j=(j<<16>>16)*7|0;o=k+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=k+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=k+1310736+(j+-5<<2)|0;c[j>>2]=(c[j>>2]|0)+x;j=p}while(0);r=r+1|0;n=q+8|0;g=g+2|0;l=l+1|0;if((r|0)>=(z|0))break;else{q=n;p=j}}}x=x+1|0;if((x|0)>=(A|0)){f=j;C=52;break a}else{l=l+2|0;n=n+s|0;g=g+4|0}}Me(3,3904,B);l=-1}else{f=0;C=52}while(0);if((C|0)==52){g=k+12|0;if((f|0)<1)j=1;else{n=1;j=1;while(1){l=c[m>>2]|0;if((l|0)==(n|0)){l=j;j=j+1|0}else l=c[k+1179664+(l+-1<<2)>>2]|0;c[m>>2]=l;if((n|0)<(f|0)){n=n+1|0;m=m+4|0}else break}}e=k+8|0;l=j+-1|0;c[e>>2]=l;if(l){ek(g|0,0,l<<2|0)|0;ek(k+655376|0,0,l<<4|0)|0;if((j|0)>1){l=0;do{C=l<<2;c[k+131084+(C<<2)>>2]=D;c[k+131084+((C|1)<<2)>>2]=0;c[k+131084+((C|2)<<2)>>2]=E;c[k+131084+((C|3)<<2)>>2]=0;l=l+1|0}while((l|0)<(c[e>>2]|0))}if((f|0)>0){g=0;do{m=(c[k+1179664+(g<<2)>>2]|0)+-1|0;n=g*7|0;l=k+12+(m<<2)|0;c[l>>2]=(c[l>>2]|0)+(c[k+1310736+(n<<2)>>2]|0);l=m<<1;j=k+655376+(l<<3)|0;h[j>>3]=+h[j>>3]+ +(c[k+1310736+(n+1<<2)>>2]|0);l=k+655376+((l|1)<<3)|0;h[l>>3]=+h[l>>3]+ +(c[k+1310736+(n+2<<2)>>2]|0);m=m<<2;l=k+131084+(m<<2)|0;j=c[k+1310736+(n+3<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;l=k+131084+((m|1)<<2)|0;j=c[k+1310736+(n+4<<2)>>2]|0;if((c[l>>2]|0)<(j|0))c[l>>2]=j;l=k+131084+((m|2)<<2)|0;j=c[k+1310736+(n+5<<2)>>2]|0;if((c[l>>2]|0)>(j|0))c[l>>2]=j;j=k+131084+((m|3)<<2)|0;l=c[k+1310736+(n+6<<2)>>2]|0;if((c[j>>2]|0)<(l|0))c[j>>2]=l;g=g+1|0}while((g|0)<(f|0))}if((c[e>>2]|0)>0){l=0;do{D=k+12+(l<<2)|0;E=l<<1;C=k+655376+(E<<3)|0;h[C>>3]=+h[C>>3]/+(c[D>>2]|0);E=k+655376+((E|1)<<3)|0;h[E>>3]=+h[E>>3]/+(c[D>>2]|0);l=l+1|0}while((l|0)<(c[e>>2]|0));l=0}else l=0}else l=0}i=F;return l|0} +function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)th(a,b)}}else th(a,b);return}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;h=g+16|0;f=g+4|0;j=g;d=c[d>>2]|0;e=c[d>>2]|0;c[j>>2]=d;c[h>>2]=c[j>>2];vh(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d){if(a[f+8>>0]|0)Fg(d+264|0);Lh(d)}i=g;return e|0}function vh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;n=(m&l|0)==0;if(n)k=m&e;else k=(e>>>0)%(l>>>0)|0;g=(c[d>>2]|0)+(k<<2)|0;f=c[g>>2]|0;while(1){e=c[f>>2]|0;if((e|0)==(o|0)){j=f;break}else f=e}i=d+8|0;if((j|0)!=(i|0)){e=c[j+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0))g=o;else h=12}else h=12;do if((h|0)==12){e=c[o>>2]|0;if(e){e=c[e+4>>2]|0;if(n)e=e&m;else e=(e>>>0)%(l>>>0)|0;if((e|0)==(k|0)){g=o;break}}c[g>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(n)f=f&m;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(k|0)){c[(c[d>>2]|0)+(f<<2)>>2]=j;e=c[o>>2]|0}}c[j>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=i;a[b+8>>0]=1;return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Kh(408)|0;c[e+8>>2]=c[d>>2];ek(e+16|0,0,392)|0;h[e+248>>3]=.0001;h[e+256>>3]=1.0e3;d=e+264|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[a>>2]=e;a=a+4|0;c[a>>2]=b+8;c[a+4>>2]=257;return}function xh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[e+8>>2]|0;s=e+4|0;c[s>>2]=m;r=d+4|0;l=c[r>>2]|0;q=(l|0)==0;a:do if(!q){n=l+-1|0;o=(n&l|0)==0;if(o)h=n&m;else h=(m>>>0)%(l>>>0)|0;f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f)p=12;else while(1){i=c[f>>2]|0;if(!i){p=12;break a}f=c[i+4>>2]|0;if(o)f=f&n;else f=(f>>>0)%(l>>>0)|0;if((f|0)!=(h|0)){p=12;break a}if((c[i+8>>2]|0)==(m|0)){f=0;e=i;break}else f=i}}else{h=0;p=12}while(0);if((p|0)==12){m=d+12|0;j=+(((c[m>>2]|0)+1|0)>>>0);k=+g[d+16>>2];do if(q|j>+(l>>>0)*k){if(l>>>0>2)f=(l+-1&l|0)==0;else f=0;i=(f&1|l<<1)^1;f=~~+_(+(j/k))>>>0;yh(d,i>>>0>>0?f:i);i=c[r>>2]|0;f=c[s>>2]|0;h=i+-1|0;if(!(h&i)){l=i;h=h&f;break}else{l=i;h=(f>>>0)%(i>>>0)|0;break}}while(0);f=c[(c[d>>2]|0)+(h<<2)>>2]|0;if(!f){f=d+8|0;c[e>>2]=c[f>>2];c[f>>2]=e;c[(c[d>>2]|0)+(h<<2)>>2]=f;f=c[e>>2]|0;if(f){f=c[f+4>>2]|0;h=l+-1|0;if(!(h&l))f=f&h;else f=(f>>>0)%(l>>>0)|0;c[(c[d>>2]|0)+(f<<2)>>2]=e}}else{c[e>>2]=c[f>>2];c[f>>2]=e}c[m>>2]=(c[m>>2]|0)+1;f=1}c[b>>2]=e;a[b+4>>0]=f;return}function yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)!=1){if(b+-1&b)b=_j(b)|0}else b=2;f=c[a+4>>2]|0;if(b>>>0<=f>>>0){if(b>>>0>>0){if(f>>>0>2)e=(f+-1&f|0)==0;else e=0;d=~~+_(+(+((c[a+12>>2]|0)>>>0)/+g[a+16>>2]))>>>0;if(e)d=1<<32-(ba(d+-1|0)|0);else d=_j(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)zh(a,b)}}else zh(a,b);return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+4|0;a:do if(b){m=Kh(b<<2)|0;d=c[a>>2]|0;c[a>>2]=m;if(d)Lh(d);c[e>>2]=b;if(b){d=0;do{c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(b|0))}e=a+8|0;f=c[e>>2]|0;if(f){d=c[f+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)h=d&l;else h=(d>>>0)%(b>>>0)|0;c[(c[a>>2]|0)+(h<<2)>>2]=e;d=c[f>>2]|0;if(d){g=f;e=f;while(1){k=e;b:while(1){while(1){e=c[d+4>>2]|0;if(m)j=e&l;else j=(e>>>0)%(b>>>0)|0;if((j|0)==(h|0)){e=d;break}e=(c[a>>2]|0)+(j<<2)|0;if(!(c[e>>2]|0)){h=j;f=d;break b}i=d+8|0;e=d;while(1){f=c[e>>2]|0;if(!f)break;if((c[i>>2]|0)==(c[f+8>>2]|0))e=f;else break}c[g>>2]=f;c[e>>2]=c[c[(c[a>>2]|0)+(j<<2)>>2]>>2];c[c[(c[a>>2]|0)+(j<<2)>>2]>>2]=d;d=c[k>>2]|0;if(!d)break a}d=c[e>>2]|0;if(!d)break a;else{g=e;k=e}}c[e>>2]=g;d=c[f>>2]|0;if(!d)break;else{g=f;e=f}}}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d)Lh(d);c[e>>2]=0}while(0);return}function Ah(a){a=a|0;return Aj(c[a+4>>2]|0)|0}function Bh(a){a=a|0;Ka(624,10917);Ya(632,10922,1,1,0);Ga(640,10927,1,-128,127);Ga(656,10932,1,-128,127);Ga(648,10944,1,0,255);Ga(664,10958,2,-32768,32767);Ga(672,10964,2,0,65535);Ga(680,10979,4,-2147483648,2147483647);Ga(688,10983,4,0,-1);Ga(696,10996,4,-2147483648,2147483647);Ga(704,11001,4,0,-1);kb(712,11015,4);kb(720,11021,8);sb(360,11028);sb(392,11040);bb(416,4,11073);db(440,11086);Aa(448,0,11102);Dh(11132);Eh(11169);Fh(11208);Gh(11239);Hh(11279);Ih(11308);Aa(456,4,11346);Aa(464,5,11376);Dh(11415);Eh(11447);Fh(11480);Gh(11513);Hh(11547);Ih(11580);Aa(472,6,11614);Aa(480,7,11645);Aa(488,7,11677);return}function Ch(){Bh(0);return}function Dh(a){a=a|0;Aa(536,0,a|0);return}function Eh(a){a=a|0;Aa(528,1,a|0);return}function Fh(a){a=a|0;Aa(520,2,a|0);return}function Gh(a){a=a|0;Aa(512,3,a|0);return}function Hh(a){a=a|0;Aa(504,4,a|0);return}function Ih(a){a=a|0;Aa(496,5,a|0);return}function Jh(a){a=a|0;Ia(12478,12501,303,12589)}function Kh(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=Uj(b)|0;a:do if(!a){while(1){a=Ph()|0;if(!a)break;_b[a&0]();a=Uj(b)|0;if(a)break a}b=Wa(4)|0;c[b>>2]=2224;wb(b|0,544,1)}while(0);return a|0}function Lh(a){a=a|0;Vj(a);return}function Mh(a){a=a|0;return}function Nh(a){a=a|0;Lh(a);return}function Oh(a){a=a|0;return 12610}function Ph(){var a=0;a=c[559]|0;c[559]=a+0;return a|0}function Qh(a){a=a|0;return}function Rh(a){a=a|0;return}function Sh(a){a=a|0;return}function Th(a){a=a|0;return}function Uh(a){a=a|0;return}function Vh(a){a=a|0;Lh(a);return}function Wh(a){a=a|0;Lh(a);return}function Xh(a){a=a|0;Lh(a);return}function Yh(a){a=a|0;Lh(a);return}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)!=(b|0))if((b|0)!=0?(f=ei(b,576,592,0)|0,(f|0)!=0):0){b=g;e=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));c[g>>2]=f;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dc[c[(c[f>>2]|0)+28>>2]&3](f,g,c[d>>2]|0,1);if((c[g+24>>2]|0)==1){c[d>>2]=c[g+16>>2];b=1}else b=0}else b=0;else b=1;i=h;return b|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function ai(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);return}function bi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))$h(0,b,d,e);else{a=c[a+8>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d,e)}return}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;dc[c[(c[a>>2]|0)+28>>2]&3](a,b,d+f|0,(g&2|0)!=0?e:2);return}function di(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((b|0)!=(c[d+8>>2]|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;ci(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{ci(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else $h(0,d,e,f);while(0);return}function ei(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;g=q+16|0;d=q+20|0;e=q+24|0;h=q+28|0;j=q+32|0;k=q+40|0;l=(p|0)==(f|0);m=g;n=m+36|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do if(l){c[q+48>>2]=1;bc[c[(c[f>>2]|0)+20>>2]&3](f,q,o,o,1,0);g=(c[e>>2]|0)==1?o:0}else{Rb[c[(c[p>>2]|0)+24>>2]&3](p,q,o,1,0);switch(c[q+36>>2]|0){case 0:{g=(c[k>>2]|0)==1&(c[h>>2]|0)==1&(c[j>>2]|0)==1?c[d>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((c[e>>2]|0)!=1?!((c[k>>2]|0)==0&(c[h>>2]|0)==1&(c[j>>2]|0)==1):0){g=0;break}g=c[g>>2]|0}while(0);i=r;return g|0}function fi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;f=d+16|0;b=c[f>>2]|0;if(!b){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((b|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}b=d+24|0;f=c[b>>2]|0;if((f|0)==2){c[b>>2]=g;f=g}if((f|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function gi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){q=c[b+12>>2]|0;j=b+16+(q<<3)|0;ii(b+16|0,d,e,f,g);h=b+24|0;if((q|0)<=1)break;i=c[b+8>>2]|0;if((i&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(i&1)){i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[k>>2]|0)==1)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+24|0;b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[k>>2]|0)==1?(c[i>>2]|0)==1:0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}i=d+54|0;while(1){if(a[i>>0]|0)break a;ii(h,d,e,f,g);h=h+8|0;if(h>>>0>=j>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4)break;i=c[b+12>>2]|0;j=b+16+(i<<3)|0;k=d+52|0;f=d+53|0;n=d+54|0;l=b+8|0;o=d+24|0;b:do if((i|0)>0){i=0;h=0;b=b+16|0;while(1){a[k>>0]=0;a[f>>0]=0;hi(b,d,e,e,1,g);if(a[n>>0]|0){q=20;break b}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[l>>2]&1)){h=1;q=20;break b}else{h=1;break}if((c[o>>2]|0)==1)break b;if(!(c[l>>2]&2))break b;else{i=1;h=1}}while(0);b=b+8|0;if(b>>>0>=j>>>0){q=20;break}}}else{i=0;h=0;q=20}while(0);do if((q|0)==20){if((!i?(c[p>>2]=e,e=d+40|0,c[e>>2]=(c[e>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[n>>0]=1;if(h)break}else q=24;if((q|0)==24?h:0)break;c[m>>2]=4;break a}while(0);c[m>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function hi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e+h|0,(i&2|0)!=0?f:2,g);return}function ii(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Rb[c[(c[a>>2]|0)+24>>2]&3](a,b,d+g|0,(h&2|0)!=0?e:2,f);return}function ji(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;Rb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4)break;h=d+52|0;a[h>>0]=0;k=d+53|0;a[k>>0]=0;b=c[b+8>>2]|0;bc[c[(c[b>>2]|0)+20>>2]&3](b,d,e,e,1,g);if(a[k>>0]|0){if(!(a[h>>0]|0)){h=1;j=13}}else{h=0;j=13}do if((j|0)==13){c[i>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else j=16;if((j|0)==16?h:0)break;c[f>>2]=4;break a}while(0);c[f>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function ki(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(i=d+28|0,(c[i>>2]|0)!=1):0)c[i>>2]=f}else if((b|0)==(c[d>>2]|0)){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function li(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==(c[d+8>>2]|0))fi(0,d,e,f,g);else{m=d+52|0;n=a[m>>0]|0;o=d+53|0;p=a[o>>0]|0;l=c[b+12>>2]|0;i=b+16+(l<<3)|0;a[m>>0]=0;a[o>>0]=0;hi(b+16|0,d,e,f,g,h);a:do if((l|0)>1){j=d+24|0;k=b+8|0;l=d+54|0;b=b+24|0;do{if(a[l>>0]|0)break a;if(!(a[m>>0]|0)){if((a[o>>0]|0)!=0?(c[k>>2]&1|0)==0:0)break a}else{if((c[j>>2]|0)==1)break a;if(!(c[k>>2]&2))break a}a[m>>0]=0;a[o>>0]=0;hi(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}while(0);a[m>>0]=n;a[o>>0]=p}return}function mi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);else{a=c[a+8>>2]|0;bc[c[(c[a>>2]|0)+20>>2]&3](a,b,d,e,f,g)}return}function ni(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))fi(0,b,d,e,f);return}function oi(a){a=a|0;Ia(12625,12654,1164,12589)}function pi(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function qi(){var a=0;if(!(c[597]|0))a=2644;else a=c[(gb()|0)+60>>2]|0;return a|0}function ri(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[12742+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=12830;e=5;break}}if((e|0)==2)if(!c)b=12830;else{b=12830;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function si(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0.0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+512|0;H=L;switch(e|0){case 0:{K=24;J=-149;A=4;break}case 1:{K=53;J=-1074;A=4;break}case 2:{K=53;J=-1074;A=4;break}default:g=0.0}a:do if((A|0)==4){E=b+4|0;C=b+100|0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0}while((pi(e)|0)!=0);b:do switch(e|0){case 43:case 45:{h=1-(((e|0)==45&1)<<1)|0;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;I=h;break b}else{e=vi(b)|0;I=h;break b}}default:I=1}while(0);h=e;e=0;do{if((h|32|0)!=(a[14634+e>>0]|0))break;do if(e>>>0<7){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{A=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{A=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[16477+e>>0]|0))break d;do if(e>>>0<2){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0;break}else{h=vi(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==40)e=1;else{if(!(c[C>>2]|0)){g=s;break a}c[E>>2]=(c[E>>2]|0)+-1;g=s;break a}while(1){h=c[E>>2]|0;if(h>>>0<(c[C>>2]|0)>>>0){c[E>>2]=h+1;h=d[h>>0]|0}else h=vi(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!k){c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{do if((h|0)==48){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|32|0)!=120){if(!(c[C>>2]|0)){e=48;break}c[E>>2]=(c[E>>2]|0)+-1;e=48;break}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=0}else{e=vi(b)|0;k=0}e:while(1){switch(e|0){case 46:{A=74;break e}case 48:break;default:{y=0;l=0;x=0;h=0;n=k;o=0;w=0;m=1.0;k=0;g=0.0;break e}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==74){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){k=0;h=0;do{e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;k=gk(k|0,h|0,-1,-1)|0;h=D}while((e|0)==48);y=0;l=0;x=k;n=1;o=1;w=0;m=1.0;k=0;g=0.0}else{y=0;l=0;x=0;h=0;n=k;o=1;w=0;m=1.0;k=0;g=0.0}}while(1){u=e+-48|0;p=e|32;if(u>>>0>=10){v=(e|0)==46;if(!(v|(p+-97|0)>>>0<6)){p=x;u=y;break}if(v)if(!o){v=l;h=y;u=y;o=1;p=w;j=m}else{p=x;u=y;e=46;break}else A=86}else A=86;if((A|0)==86){A=0;e=(e|0)>57?p+-87|0:u;do if(!((y|0)<0|(y|0)==0&l>>>0<8)){if((y|0)<0|(y|0)==0&l>>>0<14){r=m*.0625;p=w;j=r;g=g+r*+(e|0);break}if((w|0)!=0|(e|0)==0){p=w;j=m}else{p=1;j=m;g=g+m*.5}}else{p=w;j=m;k=e+(k<<4)|0}while(0);l=gk(l|0,y|0,1,0)|0;v=x;u=D;n=1}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;y=u;x=v;e=d[e>>0]|0;w=p;m=j;continue}else{y=u;x=v;e=vi(b)|0;w=p;m=j;continue}}if(!n){e=(c[C>>2]|0)==0;if(!e)c[E>>2]=(c[E>>2]|0)+-1;if(f){if(!e?(z=c[E>>2]|0,c[E>>2]=z+-1,(o|0)!=0):0)c[E>>2]=z+-2}else ui(b,0);g=+(I|0)*0.0;break a}n=(o|0)==0;o=n?l:p;n=n?u:h;if((u|0)<0|(u|0)==0&l>>>0<8){h=u;do{k=k<<4;l=gk(l|0,h|0,1,0)|0;h=D}while((h|0)<0|(h|0)==0&l>>>0<8)}if((e|32|0)==112){h=Hj(b,f)|0;e=D;if((h|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break a}if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}}}else if(!(c[C>>2]|0)){h=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;h=0;e=0}H=fk(o|0,n|0,2)|0;H=gk(H|0,D|0,-32,-1)|0;e=gk(H|0,D|0,h|0,e|0)|0;h=D;if(!k){g=+(I|0)*0.0;break a}if((h|0)>0|(h|0)==0&e>>>0>(0-J|0)>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}H=J+-106|0;G=((H|0)<0)<<31>>31;if((h|0)<(G|0)|(h|0)==(G|0)&e>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((k|0)>-1){do{G=!(g>=.5);H=G&1|k<<1;k=H^1;g=g+(G?g:g+-1.0);e=gk(e|0,h|0,-1,-1)|0;h=D}while((H|0)>-1);l=e;m=g}else{l=e;m=g}e=dk(32,0,J|0,((J|0)<0)<<31>>31|0)|0;e=gk(l|0,h|0,e|0,D|0)|0;J=D;if(0>(J|0)|0==(J|0)&K>>>0>e>>>0)if((e|0)<0){e=0;A=127}else A=125;else{e=K;A=125}if((A|0)==125)if((e|0)<53)A=127;else{h=e;j=+(I|0);g=0.0}if((A|0)==127){g=+(I|0);h=e;j=g;g=+yi(+Di(1.0,84-e|0),g)}K=(k&1|0)==0&(m!=0.0&(h|0)<32);g=j*(K?0.0:m)+(g+j*+(((K&1)+k|0)>>>0))-g;if(!(g!=0.0))c[(qi()|0)>>2]=34;g=+Ei(g,l);break a}else e=h;while(0);F=J+K|0;G=0-F|0;k=0;f:while(1){switch(e|0){case 46:{A=138;break f}case 48:break;default:{h=0;p=0;o=0;break f}}e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0;k=1;continue}else{e=vi(b)|0;k=1;continue}}if((A|0)==138){e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48){h=0;e=0;while(1){h=gk(h|0,e|0,-1,-1)|0;k=D;e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;if((e|0)==48)e=k;else{p=k;k=1;o=1;break}}}else{h=0;p=0;o=1}}c[H>>2]=0;n=e+-48|0;l=(e|0)==46;g:do if(l|n>>>0<10){B=H+496|0;y=0;v=0;w=l;A=p;u=k;z=o;k=0;l=0;o=0;h:while(1){do if(w)if(!z){h=y;p=v;z=1}else{p=A;e=y;n=v;break h}else{w=gk(y|0,v|0,1,0)|0;v=D;x=(e|0)!=48;if((l|0)>=125){if(!x){p=A;y=w;break}c[B>>2]=c[B>>2]|1;p=A;y=w;break}p=H+(l<<2)|0;if(k)n=e+-48+((c[p>>2]|0)*10|0)|0;c[p>>2]=n;k=k+1|0;n=(k|0)==9;p=A;y=w;u=1;k=n?0:k;l=(n&1)+l|0;o=x?w:o}while(0);e=c[E>>2]|0;if(e>>>0<(c[C>>2]|0)>>>0){c[E>>2]=e+1;e=d[e>>0]|0}else e=vi(b)|0;n=e+-48|0;w=(e|0)==46;if(!(w|n>>>0<10)){n=z;A=161;break g}else A=p}u=(u|0)!=0;A=169}else{y=0;v=0;u=k;n=o;k=0;l=0;o=0;A=161}while(0);do if((A|0)==161){B=(n|0)==0;h=B?y:h;p=B?v:p;u=(u|0)!=0;if(!((e|32|0)==101&u))if((e|0)>-1){e=y;n=v;A=169;break}else{e=y;n=v;A=171;break}n=Hj(b,f)|0;e=D;if((n|0)==0&(e|0)==-2147483648){if(!f){ui(b,0);g=0.0;break}if(!(c[C>>2]|0)){n=0;e=0}else{c[E>>2]=(c[E>>2]|0)+-1;n=0;e=0}}h=gk(n|0,e|0,h|0,p|0)|0;u=y;p=D;n=v;A=173}while(0);if((A|0)==169)if(c[C>>2]|0){c[E>>2]=(c[E>>2]|0)+-1;if(u){u=e;A=173}else A=172}else A=171;if((A|0)==171)if(u){u=e;A=173}else A=172;do if((A|0)==172){c[(qi()|0)>>2]=22;ui(b,0);g=0.0}else if((A|0)==173){e=c[H>>2]|0;if(!e){g=+(I|0)*0.0;break}if(((n|0)<0|(n|0)==0&u>>>0<10)&((h|0)==(u|0)&(p|0)==(n|0))?K>>>0>30|(e>>>K|0)==0:0){g=+(I|0)*+(e>>>0);break}b=(J|0)/-2|0;E=((b|0)<0)<<31>>31;if((p|0)>(E|0)|(p|0)==(E|0)&h>>>0>b>>>0){c[(qi()|0)>>2]=34;g=+(I|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}b=J+-106|0;E=((b|0)<0)<<31>>31;if((p|0)<(E|0)|(p|0)==(E|0)&h>>>0>>0){c[(qi()|0)>>2]=34;g=+(I|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(k){if((k|0)<9){n=H+(l<<2)|0;e=c[n>>2]|0;do{e=e*10|0;k=k+1|0}while((k|0)!=9);c[n>>2]=e}l=l+1|0}if((o|0)<9?(o|0)<=(h|0)&(h|0)<18:0){if((h|0)==9){g=+(I|0)*+((c[H>>2]|0)>>>0);break}if((h|0)<9){g=+(I|0)*+((c[H>>2]|0)>>>0)/+(c[2648+(8-h<<2)>>2]|0);break}b=K+27+($(h,-3)|0)|0;e=c[H>>2]|0;if((b|0)>30|(e>>>b|0)==0){g=+(I|0)*+(e>>>0)*+(c[2648+(h+-10<<2)>>2]|0);break}}e=(h|0)%9|0;if(!e){k=0;e=0}else{u=(h|0)>-1?e:e+9|0;n=c[2648+(8-u<<2)>>2]|0;if(l){o=1e9/(n|0)|0;k=0;e=0;p=0;do{C=H+(p<<2)|0;E=c[C>>2]|0;b=((E>>>0)/(n>>>0)|0)+e|0;c[C>>2]=b;e=$((E>>>0)%(n>>>0)|0,o)|0;b=(p|0)==(k|0)&(b|0)==0;p=p+1|0;h=b?h+-9|0:h;k=b?p&127:k}while((p|0)!=(l|0));if(e){c[H+(l<<2)>>2]=e;l=l+1|0}}else{k=0;l=0}e=0;h=9-u+h|0}i:while(1){v=(h|0)<18;w=(h|0)==18;x=H+(k<<2)|0;do{if(!v){if(!w)break i;if((c[x>>2]|0)>>>0>=9007199){h=18;break i}}n=0;o=l+127|0;while(1){u=o&127;p=H+(u<<2)|0;o=fk(c[p>>2]|0,0,29)|0;o=gk(o|0,D|0,n|0,0)|0;n=D;if(n>>>0>0|(n|0)==0&o>>>0>1e9){b=pk(o|0,n|0,1e9,0)|0;o=qk(o|0,n|0,1e9,0)|0;n=b}else n=0;c[p>>2]=o;b=(u|0)==(k|0);l=(u|0)!=(l+127&127|0)|b?l:(o|0)==0?u:l;if(b)break;else o=u+-1|0}e=e+-29|0}while((n|0)==0);k=k+127&127;if((k|0)==(l|0)){b=l+127&127;l=H+((l+126&127)<<2)|0;c[l>>2]=c[l>>2]|c[H+(b<<2)>>2];l=b}c[H+(k<<2)>>2]=n;h=h+9|0}j:while(1){y=l+1&127;x=H+((l+127&127)<<2)|0;while(1){v=(h|0)==18;w=(h|0)>27?9:1;u=v^1;while(1){o=k&127;p=(o|0)==(l|0);do if(!p){n=c[H+(o<<2)>>2]|0;if(n>>>0<9007199){A=219;break}if(n>>>0>9007199)break;n=k+1&127;if((n|0)==(l|0)){A=219;break}n=c[H+(n<<2)>>2]|0;if(n>>>0<254740991){A=219;break}if(!(n>>>0>254740991|u)){h=o;break j}}else A=219;while(0);if((A|0)==219?(A=0,v):0){A=220;break j}e=e+w|0;if((k|0)==(l|0))k=l;else break}u=(1<>>w;o=k;n=0;p=k;while(1){E=H+(p<<2)|0;b=c[E>>2]|0;k=(b>>>w)+n|0;c[E>>2]=k;n=$(b&u,v)|0;k=(p|0)==(o|0)&(k|0)==0;p=p+1&127;h=k?h+-9|0:h;k=k?p:o;if((p|0)==(l|0))break;else o=k}if(!n)continue;if((y|0)!=(k|0))break;c[x>>2]=c[x>>2]|1}c[H+(l<<2)>>2]=n;l=y}if((A|0)==220)if(p){c[H+(y+-1<<2)>>2]=0;h=l;l=y}else h=o;g=+((c[H+(h<<2)>>2]|0)>>>0);h=k+1&127;if((h|0)==(l|0)){l=k+2&127;c[H+(l+-1<<2)>>2]=0}r=+(I|0);j=r*(g*1.0e9+ +((c[H+(h<<2)>>2]|0)>>>0));v=e+53|0;p=v-J|0;u=(p|0)<(K|0);h=u&1;o=u?((p|0)<0?0:p):K;if((o|0)<53){M=+yi(+Di(1.0,105-o|0),j);m=+Ai(j,+Di(1.0,53-o|0));q=M;g=m;m=M+(j-m)}else{q=0.0;g=0.0;m=j}n=k+2&127;do if((n|0)==(l|0))j=g;else{n=c[H+(n<<2)>>2]|0;do if(n>>>0>=5e8){if(n>>>0>5e8){g=r*.75+g;break}if((k+3&127|0)==(l|0)){g=r*.5+g;break}else{g=r*.75+g;break}}else{if((n|0)==0?(k+3&127|0)==(l|0):0)break;g=r*.25+g}while(0);if((53-o|0)<=1){j=g;break}if(+Ai(g,1.0)!=0.0){j=g;break}j=g+1.0}while(0);g=m+j-q;do if((v&2147483647|0)>(-2-F|0)){if(+O(+g)>=9007199254740992.0){h=u&(o|0)==(p|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(G|0)?!(j!=0.0&(h|0)!=0):0)break;c[(qi()|0)>>2]=34}while(0);g=+Ei(g,e)}while(0);break a}default:{if(c[C>>2]|0)c[E>>2]=(c[E>>2]|0)+-1;c[(qi()|0)>>2]=22;ui(b,0);g=0.0;break a}}}}while(0);if((A|0)==23){h=(c[C>>2]|0)==0;if(!h)c[E>>2]=(c[E>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[E>>2]=(c[E>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(I|0)*t}while(0);i=L;return +g}function ti(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(qi()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((pi(i)|0)!=0);b:do switch(i|0){case 43:case 45:{j=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=j;break b}else{i=vi(b)|0;p=j;break b}}default:p=0}while(0);j=(e|0)==0;do if((e&-17|0)==0&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;if((d[14643+(i+1)>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){ui(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[14643+(i+1)>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;ui(b,0);c[(qi()|0)>>2]=22;h=0;g=0;break a}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;while(1){j=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=vi(b)|0;e=i+-48|0;if(!(e>>>0<10&j>>>0<429496729)){e=j;break}else i=j}j=0}else{e=0;j=0}f=i+-48|0;if(f>>>0<10){while(1){k=ok(e|0,j|0,10,0)|0;l=D;m=((f|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&k>>>0>~f>>>0){k=e;break}e=gk(k|0,l|0,f|0,m|0)|0;j=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;f=i+-48|0;if(!(f>>>0<10&(j>>>0<429496729|(j|0)==429496729&e>>>0<2576980378))){k=e;break}}if(f>>>0>9){i=k;e=p}else{e=10;n=72}}else{i=e;e=p}}else n=46;c:do if((n|0)==46){if(!(e+-1&e)){n=a[14900+((e*23|0)>>>5&7)>>0]|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f|i<>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<134217728&f>>>0>>0))break;else i=k}f=0}else{f=0;k=0}l=hk(-1,-1,n|0)|0;m=D;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break}else i=f;while(1){k=fk(k|0,i|0,n|0)|0;f=D;k=j&255|k;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break c}else i=f}}j=a[14643+(i+1)>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f+($(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;f=j&255;if(!(k>>>0<119304647&f>>>0>>0))break;else i=k}f=0}else{k=0;f=0}if((j&255)>>>0>>0){n=pk(-1,-1,e|0,0)|0;o=D;m=f;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&k>>>0>n>>>0){j=m;n=72;break c}f=ok(k|0,m|0,e|0,0)|0;l=D;j=j&255;if(l>>>0>4294967295|(l|0)==-1&f>>>0>~j>>>0){j=m;n=72;break c}k=gk(j|0,0,f|0,l|0)|0;f=D;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0;j=a[14643+(i+1)>>0]|0;if((j&255)>>>0>=e>>>0){j=f;n=72;break}else m=f}}else{j=f;n=72}}while(0);if((n|0)==72)if((d[14643+(i+1)>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=vi(b)|0}while((d[14643+(i+1)>>0]|0)>>>0>>0);c[(qi()|0)>>2]=34;j=h;i=g;e=(g&1|0)==0&0==0?p:0}else{i=k;e=p}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(j>>>0>>0|(j|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(e|0)!=0)){c[(qi()|0)>>2]=34;g=gk(g|0,h|0,-1,-1)|0;h=D;break}if(j>>>0>h>>>0|(j|0)==(h|0)&i>>>0>g>>>0){c[(qi()|0)>>2]=34;break}}g=((e|0)<0)<<31>>31;g=dk(i^e|0,j^g|0,e|0,g|0)|0;h=D}while(0);D=h;return g|0}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+4>>2]|0;e=c[a+8>>2]|0;f=e-d|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=d+b;else c[a+100>>2]=e;return}function vi(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;i=c[f>>2]|0;if((i|0)!=0?(c[b+108>>2]|0)>=(i|0):0)j=4;else{e=Vi(b)|0;if((e|0)>=0){h=c[f>>2]|0;f=b+8|0;if(h){g=c[f>>2]|0;i=c[b+4>>2]|0;f=g;h=h-(c[b+108>>2]|0)+-1|0;if((f-i|0)>(h|0))c[b+100>>2]=i+h;else j=9}else{g=c[f>>2]|0;f=g;j=9}if((j|0)==9)c[b+100>>2]=f;f=c[b+4>>2]|0;if(g){b=b+108|0;c[b>>2]=g+1-f+(c[b>>2]|0)}f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+100>>2]=0;e=-1}return e|0}function wi(a){a=a|0;if(a>>>0>4294963200){c[(qi()|0)>>2]=0-a;a=-1}return a|0}function xi(a,b){a=+a;b=+b;var d=0,e=0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;h[k>>3]=b;d=c[k+4>>2]&-2147483648|d&2147483647;c[k>>2]=e;c[k+4>>2]=d;return +(+h[k>>3])}function yi(a,b){a=+a;b=+b;return +(+xi(a,b))}function zi(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;h[k>>3]=a;d=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=hk(d|0,m|0,52)|0;e=e&2047;j=hk(n|0,o|0,52)|0;j=j&2047;p=m&-2147483648;i=fk(n|0,o|0,1)|0;l=D;a:do if(!((i|0)==0&(l|0)==0)?(g=o&2147483647,!(g>>>0>2146435072|(g|0)==2146435072&n>>>0>0|(e|0)==2047)):0){f=fk(d|0,m|0,1)|0;g=D;if(!(g>>>0>l>>>0|(g|0)==(l|0)&f>>>0>i>>>0))return +((f|0)==(i|0)&(g|0)==(l|0)?a*0.0:a);if(!e){e=fk(d|0,m|0,12)|0;f=D;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){g=e;e=0;do{e=e+-1|0;g=fk(g|0,f|0,1)|0;f=D}while((f|0)>-1|(f|0)==-1&g>>>0>4294967295)}else e=0;d=fk(d|0,m|0,1-e|0)|0;f=D}else f=m&1048575|1048576;if(!j){g=fk(n|0,o|0,12)|0;i=D;if((i|0)>-1|(i|0)==-1&g>>>0>4294967295){j=0;do{j=j+-1|0;g=fk(g|0,i|0,1)|0;i=D}while((i|0)>-1|(i|0)==-1&g>>>0>4294967295)}else j=0;n=fk(n|0,o|0,1-j|0)|0;m=D}else m=o&1048575|1048576;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;b:do if((e|0)>(j|0)){while(1){if(g)if((d|0)==(n|0)&(f|0)==(m|0))break;else{d=l;f=i}d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0;l=dk(d|0,f|0,n|0,m|0)|0;i=D;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;if((e|0)<=(j|0))break b}b=a*0.0;break a}while(0);if(g)if((d|0)==(n|0)&(f|0)==(m|0)){b=a*0.0;break}else{f=i;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=fk(d|0,f|0,1)|0;f=D;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=gk(d|0,f|0,0,-1048576)|0;d=D;e=fk(e|0,0,52)|0;d=d|D;e=o|e}else{e=hk(d|0,f|0,1-e|0)|0;d=D}c[k>>2]=e;c[k+4>>2]=d|p;b=+h[k>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function Ai(a,b){a=+a;b=+b;return +(+zi(a,b))}function Bi(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=hk(d|0,e|0,52)|0;f=f&2047;switch(f|0){case 0:{if(a!=0.0){a=+Bi(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3]}}return +a}function Ci(a,b){a=+a;b=b|0;return +(+Bi(a,b))}function Di(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=fk(d+1023|0,0,52)|0;b=D;c[k>>2]=d;c[k+4>>2]=b;return +(a*+h[k>>3])}function Ei(a,b){a=+a;b=b|0;return +(+Di(a,b))}function Fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;g=l;j=(f|0)==0?2680:f;f=c[j>>2]|0;a:do if(!d)if(!f)f=0;else k=15;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[h>>2]=g;f=f<<24>>24!=0&1;break}f=g+-194|0;if(f>>>0>50){k=15;break}f=c[2432+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;k=9}}else{g=e;k=9}b:do if((k|0)==9){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){k=15;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){k=15;break a}}c[j>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[j>>2]=f;f=-2}}while(0);if((k|0)==15){c[j>>2]=0;c[(qi()|0)>>2]=84;f=-1}i=l;return f|0}function Gi(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(qi()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function Ii(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Hi(a,b,0)|0;return a|0}function Ji(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+112|0;n=o+40|0;l=o+24|0;k=o+16|0;g=o;m=o+52|0;f=a[d>>0]|0;if(sj(14909,f<<24>>24,4)|0){e=Uj(1144)|0;if(!e)e=0;else{h=e;j=h+112|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));if(!(wj(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(wj(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;va(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[k>>2]=b;c[k+4>>2]=3;f=va(221,k|0)|0;if(!(f&1024)){c[l>>2]=b;c[l+4>>2]=4;c[l+8>>2]=f|1024;va(221,l|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+120;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[n>>2]=b,c[n+4>>2]=21505,c[n+8>>2]=m,(mb(54,n|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=14;c[e+36>>2]=4;c[e+40>>2]=5;c[e+12>>2]=2;if(!(c[598]|0))c[e+76>>2]=-1;yb(2416);f=c[603]|0;c[e+56>>2]=f;if(f)c[f+52>>2]=e;c[603]=e;nb(2416)}}else{c[(qi()|0)>>2]=22;e=0}i=o;return e|0}function Ki(b){b=b|0;var c=0,d=0,e=0;d=(wj(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(wj(b,120)|0)==0;d=e?d:d|128;b=(wj(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function Li(a){a=a|0;return 0}function Mi(a){a=a|0;return}function Ni(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=wi(zb(6,d|0)|0)|0;i=b;return a|0}function Oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;h=m+16|0;g=m;f=m+32|0;c[f>>2]=d;j=f+4|0;l=b+48|0;n=c[l>>2]|0;c[j>>2]=e-((n|0)!=0&1);k=b+44|0;c[f+8>>2]=c[k>>2];c[f+12>>2]=n;if(!(c[597]|0)){c[h>>2]=c[b+60>>2];c[h+4>>2]=f;c[h+8>>2]=2;f=wi(Nb(145,h|0)|0)|0}else{Fa(13,b|0);c[g>>2]=c[b+60>>2];c[g+4>>2]=f;c[g+8>>2]=2;f=wi(Nb(145,g|0)|0)|0;pb(0)}if((f|0)>=1){j=c[j>>2]|0;if(f>>>0>j>>>0){h=c[k>>2]|0;g=b+4|0;c[g>>2]=h;c[b+8>>2]=h+(f-j);if(!(c[l>>2]|0))f=e;else{c[g>>2]=h+1;a[d+(e+-1)>>0]=a[h>>0]|0;f=e}}}else{c[b>>2]=c[b>>2]|f&48^16;c[b+8>>2]=0;c[b+4>>2]=0}i=m;return f|0}function Pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((wi(Ib(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function Qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[597]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=wi(Ob(146,n|0)|0)|0}else{Fa(14,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=wi(Ob(146,m|0)|0)|0;pb(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=4;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(mb(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=Qi(b,d,e)|0;i=g;return f|0}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=sj(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;ik(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Ti(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Qb[c[b+36>>2]&15](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(d&20)if(!(d&4))d=-1;else{c[b>>2]=d|32;d=-1}else{d=c[e>>2]|0;c[b+8>>2]=d;c[b+4>>2]=d;d=0}return d|0}function Ui(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);d=0}else{c[b>>2]=d|32;d=-1}return d|0}function Vi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(Ti(a)|0)!=0:0)b=-1;else if((Qb[c[a+32>>2]&15](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function Wi(a){a=a|0;var b=0,d=0,e=0;e=(c[a>>2]&1|0)!=0;if(!e){yb(2416);d=c[a+52>>2]|0;b=a+56|0;if(d)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b)c[b+52>>2]=d;if((c[603]|0)==(a|0))c[603]=b;nb(2416)}b=Yi(a)|0;b=Yb[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d)Vj(d);if(!e)Vj(a);return b|0}function Xi(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Yi(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Kj(a)|0;break}d=(Li(a)|0)==0;b=Kj(a)|0;if(!d)Mi(a)}else{if(!(c[660]|0))b=0;else b=Yi(c[660]|0)|0;yb(2416);a=c[603]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Li(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Kj(a)|0|b;if(d)Mi(a);a=c[a+56>>2]|0}while((a|0)!=0);nb(2416)}while(0);return b|0}function Zi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c[f+76>>2]|0)>-1)o=Li(f)|0;else o=0;g=e+-1|0;if((e|0)<2){p=f+74|0;n=a[p>>0]|0;a[p>>0]=n+255|n;if(o)Mi(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){m=f+4|0;n=f+8|0;h=b;while(1){i=c[m>>2]|0;q=i;k=(c[n>>2]|0)-q|0;j=sj(i,10,k)|0;r=(j|0)==0;j=r?k:1-q+j|0;q=j>>>0>>0;j=q?j:g;ik(h|0,i|0,j|0)|0;i=c[m>>2]|0;k=i+j|0;c[m>>2]=k;e=h+j|0;l=g-j|0;if(!(r&q)){p=18;break a}if(k>>>0<(c[n>>2]|0)>>>0){j=j+1|0;c[m>>2]=i+j;i=d[k>>0]|0}else{g=Vi(f)|0;if((g|0)<0)break;j=j+1|0;i=g}g=l+-1|0;h=h+j|0;a[e>>0]=i;if(!((g|0)!=0&(i&255|0)!=10)){e=h;p=18;break a}}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)p=18;else b=0}else{e=b;p=18}while(0);if((p|0)==18)if(!b)b=0;else a[e>>0]=0;if(o)Mi(f)}return b|0}function _i(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g+16|0;e=g;if(sj(14909,a[d>>0]|0,4)|0){h=Ki(d)|0|32768;c[e>>2]=b;c[e+4>>2]=h;c[e+8>>2]=438;e=wi(Ab(5,e|0)|0)|0;if((e|0)>=0){b=Ji(e,d)|0;if(!b){c[f>>2]=e;zb(6,f|0)|0;b=0}}else b=0}else{c[(qi()|0)>>2]=22;b=0}i=g;return b|0}function $i(a,b){a=a|0;b=b|0;return (ij(a,Bj(a)|0,1,b)|0)+-1|0}function aj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=$(e,d)|0;if((c[f+76>>2]|0)>-1)k=Li(f)|0;else k=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:j;ik(b|0,h|0,i|0)|0;c[g>>2]=h+i;b=b+i|0;g=j-i|0}else g=j;a:do if(!g)l=13;else{i=f+32|0;h=g;while(1){if(Ti(f)|0){e=h;break}g=Qb[c[i>>2]&15](f,b,h)|0;if((g+1|0)>>>0<2){e=h;break}if((h|0)==(g|0)){l=13;break a}else{b=b+g|0;h=h-g|0}}if(k)Mi(f);e=((j-e|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(k)Mi(f);return e|0}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;f=a+20|0;e=a+28|0;if((c[f>>2]|0)>>>0>(c[e>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[e>>2]=0;c[f>>2]=0;if((Qb[c[a+40>>2]&15](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(Li(a)|0)==0;b=bj(a,b,d)|0;if(!e)Mi(a)}else b=bj(a,b,d)|0;return b|0}function dj(a,b,c){a=a|0;b=b|0;c=c|0;return cj(a,b,c)|0}function ej(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Qb[c[a+40>>2]&15](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function fj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;a=ej(a)|0}else a=ej(a)|0;return a|0}function gj(a){a=a|0;return fj(a)|0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Ui(e)|0)){g=c[f>>2]|0;h=4}else f=0;else h=4;a:do if((h|0)==4){i=e+20|0;h=c[i>>2]|0;if((g-h|0)>>>0>>0){f=Qb[c[e+36>>2]&15](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break b}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Qb[c[e+36>>2]&15](e,b,f)|0)>>>0>>0)break a;d=d-f|0;b=b+f|0;g=c[i>>2]|0}else{g=h;f=0}while(0);ik(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;f=f+d|0}while(0);return f|0}function ij(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=$(d,b)|0;if((c[e+76>>2]|0)>-1){g=(Li(e)|0)==0;a=hj(a,f,e)|0;if(!g)Mi(e)}else a=hj(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function jj(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Li(a)|0)==0;bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Mi(a)}else{bj(a,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=pj(a,b,f)|0;i=e;return d|0}function lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=Uj(240)|0;do if(f){c[e>>2]=c[d>>2];e=oj(f,240,b,e)|0;if(e>>>0<240){b=Xj(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}Vj(f);if((e|0)>=0?(h=e+1|0,g=Uj(h)|0,c[a>>2]=g,(g|0)!=0):0)e=oj(g,h,b,d)|0;else e=-1}else e=-1;while(0);i=j;return e|0}function mj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+80|0;r=s+96|0;q=s;p=s+136|0;f=r;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=c[e>>2];if((Lj(0,d,o,q,r)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)m=Li(b)|0;else m=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=p;j=b+28|0;c[j>>2]=p;k=b+20|0;c[k>>2]=p;c[e>>2]=80;l=b+16|0;c[l>>2]=p+80;f=Lj(b,d,o,q,r)|0;if(h){Qb[c[b+36>>2]&15](b,0,0)|0;f=(c[k>>2]|0)==0?-1:f;c[g>>2]=h;c[e>>2]=0;c[l>>2]=0;c[j>>2]=0;c[k>>2]=0}}else f=Lj(b,d,o,q,r)|0;e=c[b>>2]|0;c[b>>2]=e|n;if(m)Mi(b);e=(e&32|0)==0?f:-1}i=s;return e|0}function nj(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=i;i=i+304|0;H=P+16|0;J=P+8|0;I=P+33|0;K=P;y=P+32|0;if((c[e+76>>2]|0)>-1)O=Li(e)|0;else O=0;k=a[f>>0]|0;a:do if(k<<24>>24){L=e+4|0;M=e+100|0;G=e+108|0;z=e+8|0;A=I+10|0;B=I+33|0;C=J+4|0;E=I+46|0;F=I+94|0;m=k;k=0;n=f;s=0;l=0;f=0;b:while(1){c:do if(!(pi(m&255)|0)){m=(a[n>>0]|0)==37;d:do if(m){q=n+1|0;o=a[q>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{x=0;o=n+2|0;break}default:{o=(o&255)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[H>>2]=c[j>>2];while(1){x=(c[H>>2]|0)+(4-1)&~(4-1);m=c[x>>2]|0;c[H>>2]=x+4;if(o>>>0>1)o=o+-1|0;else break}x=m;o=n+3|0;break e}o=(c[j>>2]|0)+(4-1)&~(4-1);x=c[o>>2]|0;c[j>>2]=o+4;o=q}}while(0);m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0<10){m=0;while(1){q=(m*10|0)+-48+n|0;o=o+1|0;m=a[o>>0]|0;n=m&255;if((n+-48|0)>>>0>=10)break;else m=q}}else q=0;if(m<<24>>24==109){o=o+1|0;r=a[o>>0]|0;m=(x|0)!=0&1;l=0;f=0}else{r=m;m=0}n=o+1|0;switch(r&255|0){case 104:{w=(a[n>>0]|0)==104;n=w?o+2|0:n;o=w?-2:-1;break}case 108:{w=(a[n>>0]|0)==108;n=w?o+2|0:n;o=w?3:1;break}case 106:{o=3;break}case 116:case 122:{o=1;break}case 76:{o=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=o;o=0;break}default:{N=152;break b}}r=d[n>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:o;switch(r|0){case 99:{w=s;v=(q|0)<1?1:q;break}case 91:{w=s;v=q;break}case 110:{if(!x){o=s;break c}switch(t|0){case -2:{a[x>>0]=s;o=s;break c}case -1:{b[x>>1]=s;o=s;break c}case 0:{c[x>>2]=s;o=s;break c}case 1:{c[x>>2]=s;o=s;break c}case 3:{o=x;c[o>>2]=s;c[o+4>>2]=((s|0)<0)<<31>>31;o=s;break c}default:{o=s;break c}}}default:{ui(e,0);do{o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0}while((pi(o)|0)!=0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}w=(c[G>>2]|0)+s+o-(c[z>>2]|0)|0;v=q}}ui(e,v);o=c[L>>2]|0;q=c[M>>2]|0;if(o>>>0>>0)c[L>>2]=o+1;else{if((vi(e)|0)<0){N=152;break b}q=c[M>>2]|0}if(q)c[L>>2]=(c[L>>2]|0)+-1;f:do switch(r|0){case 91:case 99:case 115:{u=(r|0)==99;g:do if((r&239|0)==99){ek(I|0,-1,257)|0;a[I>>0]=0;if((r|0)==115){a[B>>0]=0;a[A>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;a[A+3>>0]=0;a[A+4>>0]=0}}else{Q=n+1|0;s=(a[Q>>0]|0)==94;o=s&1;r=s?Q:n;n=s?n+2|0:Q;ek(I|0,s&1|0,257)|0;a[I>>0]=0;switch(a[n>>0]|0){case 45:{s=(o^1)&255;a[E>>0]=s;n=r+2|0;break}case 93:{s=(o^1)&255;a[F>>0]=s;n=r+2|0;break}default:s=(o^1)&255}while(1){o=a[n>>0]|0;h:do switch(o<<24>>24){case 0:{N=152;break b}case 93:break g;case 45:{r=n+1|0;o=a[r>>0]|0;switch(o<<24>>24){case 93:case 0:{o=45;break h}default:{}}n=a[n+-1>>0]|0;if((n&255)<(o&255)){n=n&255;do{n=n+1|0;a[I+n>>0]=s;o=a[r>>0]|0}while((n|0)<(o&255|0));n=r}else n=r;break}default:{}}while(0);a[I+((o&255)+1)>>0]=s;n=n+1|0}}while(0);r=u?v+1|0:31;s=(t|0)==1;t=(m|0)!=0;i:do if(s){if(t){f=Uj(r<<2)|0;if(!f){l=0;N=152;break b}}else f=x;c[J>>2]=0;c[C>>2]=0;l=0;j:while(1){q=(f|0)==0;do{k:while(1){o=c[L>>2]|0;if(o>>>0<(c[M>>2]|0)>>>0){c[L>>2]=o+1;o=d[o>>0]|0}else o=vi(e)|0;if(!(a[I+(o+1)>>0]|0))break j;a[y>>0]=o;switch(Fi(K,y,1,J)|0){case -1:{l=0;N=152;break b}case -2:break;default:break k}}if(!q){c[f+(l<<2)>>2]=c[K>>2];l=l+1|0}}while(!(t&(l|0)==(r|0)));l=r<<1|1;o=Xj(f,l<<2)|0;if(!o){l=0;N=152;break b}Q=r;r=l;f=o;l=Q}if(!(Gi(J)|0)){l=0;N=152;break b}else{q=l;l=0}}else{if(t){l=Uj(r)|0;if(!l){l=0;f=0;N=152;break b}else o=0;while(1){do{f=c[L>>2]|0;if(f>>>0<(c[M>>2]|0)>>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=o;f=0;break i}a[l+o>>0]=f;o=o+1|0}while((o|0)!=(r|0));f=r<<1|1;o=Xj(l,f)|0;if(!o){f=0;N=152;break b}else{Q=r;r=f;l=o;o=Q}}}if(!x){l=q;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=0;l=0;f=0;break i}l=c[M>>2]|0}}else{l=0;while(1){f=c[L>>2]|0;if(f>>>0>>0){c[L>>2]=f+1;f=d[f>>0]|0}else f=vi(e)|0;if(!(a[I+(f+1)>>0]|0)){q=l;l=x;f=0;break i}a[x+l>>0]=f;q=c[M>>2]|0;l=l+1|0}}}while(0);o=c[L>>2]|0;if(c[M>>2]|0){o=o+-1|0;c[L>>2]=o}o=o-(c[z>>2]|0)+(c[G>>2]|0)|0;if(!o)break b;if(!((o|0)==(v|0)|u^1))break b;do if(t)if(s){c[x>>2]=f;break}else{c[x>>2]=l;break}while(0);if(!u){if(f)c[f+(q<<2)>>2]=0;if(!l){l=0;break f}a[l+q>>0]=0}break}case 120:case 88:case 112:{o=16;N=134;break}case 111:{o=8;N=134;break}case 117:case 100:{o=10;N=134;break}case 105:{o=0;N=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+si(e,t,0);if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if(x)switch(t|0){case 0:{g[x>>2]=p;break f}case 1:{h[x>>3]=p;break f}case 2:{h[x>>3]=p;break f}default:break f}break}default:{}}while(0);l:do if((N|0)==134){N=0;o=ti(e,o,0,-1,-1)|0;if((c[G>>2]|0)==((c[z>>2]|0)-(c[L>>2]|0)|0))break b;if((x|0)!=0&(r|0)==112){c[x>>2]=o;break}if(x)switch(t|0){case -2:{a[x>>0]=o;break l}case -1:{b[x>>1]=o;break l}case 0:{c[x>>2]=o;break l}case 1:{c[x>>2]=o;break l}case 3:{Q=x;c[Q>>2]=o;c[Q+4>>2]=D;break l}default:break l}}while(0);k=((x|0)!=0&1)+k|0;o=(c[G>>2]|0)+w+(c[L>>2]|0)-(c[z>>2]|0)|0;break c}while(0);n=n+(m&1)|0;ui(e,0);m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0;if((m|0)!=(d[n>>0]|0)){N=21;break b}o=s+1|0}else{while(1){m=n+1|0;if(!(pi(d[m>>0]|0)|0))break;else n=m}ui(e,0);do{m=c[L>>2]|0;if(m>>>0<(c[M>>2]|0)>>>0){c[L>>2]=m+1;m=d[m>>0]|0}else m=vi(e)|0}while((pi(m)|0)!=0);m=c[L>>2]|0;if(c[M>>2]|0){m=m+-1|0;c[L>>2]=m}o=(c[G>>2]|0)+s+m-(c[z>>2]|0)|0}while(0);n=n+1|0;m=a[n>>0]|0;if(!(m<<24>>24))break a;else s=o}if((N|0)==21){if(c[M>>2]|0)c[L>>2]=(c[L>>2]|0)+-1;if((k|0)!=0|(m|0)>-1)break;else{k=0;N=153}}else if((N|0)==152)if(!k){k=m;N=153}if((N|0)==153){m=k;k=-1}if(m){Vj(l);Vj(f)}}else k=0;while(0);if(O)Mi(e);i=P;return k|0}function oj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;g=n+112|0;m=n;h=m;j=2684;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){d=1;l=4}else{c[(qi()|0)>>2]=75;d=-1}else{g=b;l=4}if((l|0)==4){l=-2-g|0;l=d>>>0>l>>>0?l:d;c[m+48>>2]=l;b=m+20|0;c[b>>2]=g;c[m+44>>2]=g;d=g+l|0;g=m+16|0;c[g>>2]=d;c[m+28>>2]=d;d=mj(m,e,f)|0;if(l){e=c[b>>2]|0;a[e+(((e|0)==(c[g>>2]|0))<<31>>31)>>0]=0}}i=n;return d|0}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=15;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=nj(e,b,d)|0;i=g;return h|0}function qj(b){b=b|0;var c=0,d=0,e=0,f=0;while(1){c=b+1|0;if(!(pi(a[b>>0]|0)|0))break;else b=c}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:e=0}if((f|0)==5){b=c;d=a[c>>0]|0}c=(d<<24>>24)+-48|0;if(c>>>0<10){d=b;b=0;do{d=d+1|0;b=(b*10|0)-c|0;c=(a[d>>0]|0)+-48|0}while(c>>>0<10)}else b=0;return ((e|0)!=0?b:0-b|0)|0}function rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=$(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do if((f&3|0)==3){Nj(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)Nj(a,d,e,h,o);else Oj(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}Oj(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;Oj(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;Oj(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function sj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=$(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return ((e|0)!=0?b:0)|0}function tj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function uj(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function vj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);ek(b|0,0,e|0)|0;return b|0}function wj(b,c){b=b|0;c=c|0;b=xj(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Bj(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=$(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009)break b;b=b+4|0;e=c[b>>2]|0}while(((e&-2139062144^-2139062144)&e+-16843009|0)==0);while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function yj(a,b){a=a|0;b=b|0;uj(a,b)|0;return a|0}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;a:do if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31))break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}while(0);e=e-b|0}else e=(xj(b,e<<24>>24)|0)-b|0;i=g;return e|0}function Aj(a){a=a|0;var b=0,c=0;c=(Bj(a)|0)+1|0;b=Uj(c)|0;if(!b)b=0;else ik(b|0,a|0,c|0)|0;return b|0}function Bj(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Cj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Bj(b)|0)|0;a:do if(d)while(1){f=a[c>>0]|0;if(!(f<<24>>24))break a;d=d+-1|0;g=e+1|0;a[e>>0]=f;if(!d){e=g;break}else{c=c+1|0;e=g}}while(0);a[e>>0]=0;return b|0}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;vj(a,b,c)|0;return a|0}function Ej(a,b){a=a|0;b=b|0;return tj(a,b,(Bj(a)|0)+1|0)|0}function Fj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;do if(!(f<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;d=d-b|0;break}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);i=h;return d|0}function Gj(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){b=c[699]|0;if(!b)b=0;else{f=b;e=3}}else{f=b;e=3}do if((e|0)==3){e=Fj(f,d)|0;b=f+e|0;if(!(a[b>>0]|0)){c[699]=0;b=0;break}e=(zj(b,d)|0)+e|0;d=f+e|0;c[699]=d;if(!(a[d>>0]|0)){c[699]=0;break}else{c[699]=f+(e+1);a[d>>0]=0;break}}while(0);return b|0}function Hj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;e=c[i>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0){c[i>>2]=(c[i>>2]|0)+-1;h=f}else h=f;break}default:h=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[i>>2]=(c[i>>2]|0)+-1;f=-2147483648;e=0}else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=ok(f|0,b|0,10,0)|0;f=D;e=gk(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=gk(e|0,D|0,b|0,f|0)|0;b=D;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));g=f}else g=f;if((e+-48|0)>>>0<10)do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=vi(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;a=(h|0)!=0;e=dk(0,0,g|0,b|0)|0;f=a?D:b;e=a?e:g}D=f;return e|0}function Ij(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Jj(a){a=a|0;if(!(c[a+68>>2]|0))Mi(a);return}function Kj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Qb[c[a+36>>2]&15](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Qb[c[a+40>>2]&15](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function Lj(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=i;i=i+624|0;ca=ha+24|0;ea=ha+16|0;da=ha+588|0;Y=ha+576|0;ba=ha;V=ha+536|0;ga=ha+8|0;fa=ha+528|0;M=(e|0)!=0;N=V+40|0;U=N;V=V+39|0;W=ga+4|0;X=Y+12|0;Y=Y+11|0;Z=da;_=X;aa=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ca+288|0;R=da+9|0;S=R;T=da+8|0;m=0;w=f;n=0;f=0;a:while(1){do if((m|0)>-1)if((n|0)>(2147483647-m|0)){c[(qi()|0)>>2]=75;m=-1;break}else{m=n+m|0;break}while(0);n=a[w>>0]|0;if(!(n<<24>>24)){L=245;break}else o=w;b:while(1){switch(n<<24>>24){case 37:{n=o;L=9;break b}case 0:{n=o;break b}default:{}}K=o+1|0;n=a[K>>0]|0;o=K}c:do if((L|0)==9)while(1){L=0;if((a[n+1>>0]|0)!=37)break c;o=o+1|0;n=n+2|0;if((a[n>>0]|0)==37)L=9;else break}while(0);y=o-w|0;if(M?(c[e>>2]&32|0)==0:0)hj(w,y,e)|0;if((o|0)!=(w|0)){w=n;n=y;continue}r=n+1|0;o=a[r>>0]|0;p=(o<<24>>24)+-48|0;if(p>>>0<10){K=(a[n+2>>0]|0)==36;r=K?n+3|0:r;o=a[r>>0]|0;u=K?p:-1;f=K?1:f}else u=-1;n=o<<24>>24;d:do if((n&-32|0)==32){p=0;while(1){if(!(1<>24)+-32|p;r=r+1|0;o=a[r>>0]|0;n=o<<24>>24;if((n&-32|0)!=32){s=p;n=r;break}}}else{s=0;n=r}while(0);do if(o<<24>>24==42){p=n+1|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+2>>0]|0)==36:0){c[l+(o<<2)>>2]=10;f=1;n=n+3|0;o=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(f){m=-1;break a}if(!M){x=s;n=p;f=0;K=0;break}f=(c[g>>2]|0)+(4-1)&~(4-1);o=c[f>>2]|0;c[g>>2]=f+4;f=0;n=p}if((o|0)<0){x=s|8192;K=0-o|0}else{x=s;K=o}}else{p=(o<<24>>24)+-48|0;if(p>>>0<10){o=0;do{o=(o*10|0)+p|0;n=n+1|0;p=(a[n>>0]|0)+-48|0}while(p>>>0<10);if((o|0)<0){m=-1;break a}else{x=s;K=o}}else{x=s;K=0}}while(0);e:do if((a[n>>0]|0)==46){p=n+1|0;o=a[p>>0]|0;if(o<<24>>24!=42){r=(o<<24>>24)+-48|0;if(r>>>0<10){n=p;o=0}else{n=p;r=0;break}while(1){o=(o*10|0)+r|0;n=n+1|0;r=(a[n>>0]|0)+-48|0;if(r>>>0>=10){r=o;break e}}}p=n+2|0;o=(a[p>>0]|0)+-48|0;if(o>>>0<10?(a[n+3>>0]|0)==36:0){c[l+(o<<2)>>2]=10;n=n+4|0;r=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(f){m=-1;break a}if(M){n=(c[g>>2]|0)+(4-1)&~(4-1);r=c[n>>2]|0;c[g>>2]=n+4;n=p}else{n=p;r=0}}else r=-1;while(0);t=0;while(1){o=(a[n>>0]|0)+-65|0;if(o>>>0>57){m=-1;break a}p=n+1|0;o=a[15953+(t*58|0)+o>>0]|0;s=o&255;if((s+-1|0)>>>0<8){n=p;t=s}else{J=p;break}}if(!(o<<24>>24)){m=-1;break}p=(u|0)>-1;do if(o<<24>>24==19)if(p){m=-1;break a}else L=52;else{if(p){c[l+(u<<2)>>2]=s;H=j+(u<<3)|0;I=c[H+4>>2]|0;L=ba;c[L>>2]=c[H>>2];c[L+4>>2]=I;L=52;break}if(!M){m=0;break a}Rj(ba,s,g)}while(0);if((L|0)==52?(L=0,!M):0){w=J;n=y;continue}u=a[n>>0]|0;u=(t|0)!=0&(u&15|0)==3?u&-33:u;p=x&-65537;I=(x&8192|0)==0?x:p;f:do switch(u|0){case 110:switch(t|0){case 0:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 1:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 2:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}case 3:{b[c[ba>>2]>>1]=m;w=J;n=y;continue a}case 4:{a[c[ba>>2]>>0]=m;w=J;n=y;continue a}case 6:{c[c[ba>>2]>>2]=m;w=J;n=y;continue a}case 7:{w=c[ba>>2]|0;c[w>>2]=m;c[w+4>>2]=((m|0)<0)<<31>>31;w=J;n=y;continue a}default:{w=J;n=y;continue a}}case 112:{t=I|8;r=r>>>0>8?r:8;u=120;L=64;break}case 88:case 120:{t=I;L=64;break}case 111:{p=ba;o=c[p>>2]|0;p=c[p+4>>2]|0;if((o|0)==0&(p|0)==0)n=N;else{n=N;do{n=n+-1|0;a[n>>0]=o&7|48;o=hk(o|0,p|0,3)|0;p=D}while(!((o|0)==0&(p|0)==0))}if(!(I&8)){o=I;t=0;s=16433;L=77}else{t=U-n+1|0;o=I;r=(r|0)<(t|0)?t:r;t=0;s=16433;L=77}break}case 105:case 100:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)<0){n=dk(0,0,n|0,o|0)|0;o=D;p=ba;c[p>>2]=n;c[p+4>>2]=o;p=1;s=16433;L=76;break f}if(!(I&2048)){s=I&1;p=s;s=(s|0)==0?16433:16435;L=76}else{p=1;s=16434;L=76}break}case 117:{o=ba;n=c[o>>2]|0;o=c[o+4>>2]|0;p=0;s=16433;L=76;break}case 99:{a[V>>0]=c[ba>>2];w=V;o=1;t=0;u=16433;n=N;break}case 109:{n=ri(c[(qi()|0)>>2]|0)|0;L=82;break}case 115:{n=c[ba>>2]|0;n=(n|0)!=0?n:16443;L=82;break}case 67:{c[ga>>2]=c[ba>>2];c[W>>2]=0;c[ba>>2]=ga;r=-1;L=86;break}case 83:{if(!r){Tj(e,32,K,0,I);n=0;L=98}else L=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{q=+h[ba>>3];c[ea>>2]=0;h[k>>3]=q;if((c[k+4>>2]|0)>=0)if(!(I&2048)){H=I&1;G=H;H=(H|0)==0?16451:16456}else{G=1;H=16453}else{q=-q;G=1;H=16450}h[k>>3]=q;F=c[k+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Ci(q,ea)*2.0;o=v!=0.0;if(o)c[ea>>2]=(c[ea>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?H:H+9|0;x=G|2;n=12-r|0;do if(!(r>>>0>11|(n|0)==0)){q=8.0;do{n=n+-1|0;q=q*16.0}while((n|0)!=0);if((a[y>>0]|0)==45){q=-(q+(-v-q));break}else{q=v+q-q;break}}else q=v;while(0);o=c[ea>>2]|0;n=(o|0)<0?0-o|0:o;n=Sj(n,((n|0)<0)<<31>>31,X)|0;if((n|0)==(X|0)){a[Y>>0]=48;n=Y}a[n+-1>>0]=(o>>31&2)+43;t=n+-2|0;a[t>>0]=u+15;s=(r|0)<1;p=(I&8|0)==0;o=da;while(1){H=~~q;n=o+1|0;a[o>>0]=d[16417+H>>0]|w;q=(q-+(H|0))*16.0;do if((n-Z|0)==1){if(p&(s&q==0.0))break;a[n>>0]=46;n=o+2|0}while(0);if(!(q!=0.0))break;else o=n}r=(r|0)!=0&(O+n|0)<(r|0)?P+r-t|0:aa-t+n|0;p=r+x|0;Tj(e,32,K,p,I);if(!(c[e>>2]&32))hj(y,x,e)|0;Tj(e,48,K,p,I^65536);n=n-Z|0;if(!(c[e>>2]&32))hj(da,n,e)|0;o=_-t|0;Tj(e,48,r-(n+o)|0,0,0);if(!(c[e>>2]&32))hj(t,o,e)|0;Tj(e,32,K,p,I^8192);n=(p|0)<(K|0)?K:p;break}n=(r|0)<0?6:r;if(o){o=(c[ea>>2]|0)+-28|0;c[ea>>2]=o;q=v*268435456.0}else{q=v;o=c[ea>>2]|0}F=(o|0)<0?ca:Q;E=F;o=F;do{B=~~q>>>0;c[o>>2]=B;o=o+4|0;q=(q-+(B>>>0))*1.0e9}while(q!=0.0);p=o;o=c[ea>>2]|0;if((o|0)>0){s=F;while(1){t=(o|0)>29?29:o;r=p+-4|0;do if(r>>>0>>0)r=s;else{o=0;do{B=fk(c[r>>2]|0,0,t|0)|0;B=gk(B|0,D|0,o|0,0)|0;o=D;A=qk(B|0,o|0,1e9,0)|0;c[r>>2]=A;o=pk(B|0,o|0,1e9,0)|0;r=r+-4|0}while(r>>>0>=s>>>0);if(!o){r=s;break}r=s+-4|0;c[r>>2]=o}while(0);while(1){if(p>>>0<=r>>>0)break;o=p+-4|0;if(!(c[o>>2]|0))p=o;else break}o=(c[ea>>2]|0)-t|0;c[ea>>2]=o;if((o|0)>0)s=r;else break}}else r=F;if((o|0)<0){y=((n+25|0)/9|0)+1|0;z=(C|0)==102;w=r;while(1){x=0-o|0;x=(x|0)>9?9:x;do if(w>>>0

      >>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14399]|0)+h|0;c[14399]=b;if(b>>>0>(c[14400]|0)>>>0)c[14400]=b;j=c[14297]|0;f:do if(j){b=57612;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14294]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14298]=c[14413];break}if(g>>>0<(c[14295]|0)>>>0)c[14295]=g;d=g+h|0;b=57612;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14294]|0)+i|0;c[14294]=v;c[14297]=k;c[k+4>>2]=v|1}else{if((c[14296]|0)==(b|0)){v=(c[14293]|0)+i|0;c[14293]=v;c[14296]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=57468+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14292]=c[14292]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=57468+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14292]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;zb=w;return v|0}b=57612;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14298]=c[14413];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14403];c[b+4>>2]=c[14404];c[b+8>>2]=c[14405];c[b+12>>2]=c[14406];c[14403]=g;c[14404]=h;c[14406]=0;c[14405]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=57468+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14292]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14295]|0;if((v|0)==0|g>>>0>>0)c[14295]=g;c[14403]=g;c[14404]=h;c[14406]=0;c[14300]=c[14409];c[14299]=-1;c[14304]=57204;c[14303]=57204;c[14306]=57212;c[14305]=57212;c[14308]=57220;c[14307]=57220;c[14310]=57228;c[14309]=57228;c[14312]=57236;c[14311]=57236;c[14314]=57244;c[14313]=57244;c[14316]=57252;c[14315]=57252;c[14318]=57260;c[14317]=57260;c[14320]=57268;c[14319]=57268;c[14322]=57276;c[14321]=57276;c[14324]=57284;c[14323]=57284;c[14326]=57292;c[14325]=57292;c[14328]=57300;c[14327]=57300;c[14330]=57308;c[14329]=57308;c[14332]=57316;c[14331]=57316;c[14334]=57324;c[14333]=57324;c[14336]=57332;c[14335]=57332;c[14338]=57340;c[14337]=57340;c[14340]=57348;c[14339]=57348;c[14342]=57356;c[14341]=57356;c[14344]=57364;c[14343]=57364;c[14346]=57372;c[14345]=57372;c[14348]=57380;c[14347]=57380;c[14350]=57388;c[14349]=57388;c[14352]=57396;c[14351]=57396;c[14354]=57404;c[14353]=57404;c[14356]=57412;c[14355]=57412;c[14358]=57420;c[14357]=57420;c[14360]=57428;c[14359]=57428;c[14362]=57436;c[14361]=57436;c[14364]=57444;c[14363]=57444;c[14366]=57452;c[14365]=57452;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14298]=c[14413]}while(0);b=c[14294]|0;if(b>>>0>m>>>0){t=b-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}}v=ox()|0;c[v>>2]=48;v=0;zb=w;return v|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14295]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14296]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14293]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=57468+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14297]|0)==(j|0)){j=(c[14294]|0)+b|0;c[14294]=j;c[14297]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(j|0)){j=(c[14293]|0)+b|0;c[14293]=j;c[14296]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14291]=c[14291]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=57468+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=57204+(a<<1<<2)|0;b=c[14291]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=57468+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14292]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14299]|0)+-1|0;c[14299]=j;if(j|0)return;a=57620;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14299]=-1;return}function HO(a,b){a=a|0;b=b|0;var d=0;if(a){d=B(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=FO(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;aP(a|0,0,d|0)|0;return a|0}function IO(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=FO(b)|0;return b|0}if(b>>>0>4294967231){b=ox()|0;c[b>>2]=48;b=0;return b|0}d=JO(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=FO(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;_O(d|0,a|0,(e>>>0>>0?e:b)|0)|0;GO(a);b=d;return b|0}function JO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14411]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;KO(k,d);return a|0}if((c[14297]|0)==(i|0)){k=(c[14294]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14297]=e;c[14294]=d;return a|0}if((c[14296]|0)==(i|0)){e=(c[14293]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14293]=d;c[14296]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;KO(i,k);return a|0}return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14296]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14293]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14297]|0)==(i|0)){i=(c[14294]|0)+b|0;c[14294]=i;c[14297]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(i|0)){i=(c[14293]|0)+b|0;c[14293]=i;c[14296]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=57468+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14292]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function LO(a){a=a|0;var b=0,d=0;b=VO()|0;d=c[b>>2]|0;a=d+a|0;if((a|0)<0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}if(a>>>0>(Ba()|0)>>>0?(Da(a|0)|0)==0:0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}c[b>>2]=a;return d|0}function MO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=B(e,f)|0;d=a>>>16;a=(c>>>16)+(B(e,d)|0)|0;e=b>>>16;b=B(e,f)|0;return (E((a>>>16)+(B(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=MO(e,f)|0;a=F()|0;return (E((B(b,f)|0)+(B(d,e)|0)+a|a&0|0),c|0|0)|0}function OO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (E(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function PO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (E(d|0),a-c>>>0|0)|0}function QO(a){a=a|0;return (a?31-(C(a^a-1)|0)|0:32)|0}function RO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (E(n|0),f)|0}else{if(!g){n=0;f=0;return (E(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (E(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (E(n|0),f)|0}g=h-1|0;if(g&h|0){i=(C(h|0)|0)+33-(C(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (E(o|0),p)|0}else{p=QO(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (E(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (E(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (E(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((QO(i|0)|0)>>>0);return (E(o|0),p)|0}g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (E(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=OO(m|0,l|0,-1,-1)|0;d=F()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;PO(k|0,d|0,e|0,n|0)|0;p=F()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=PO(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=F()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (E(o|0),p)|0}function SO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return RO(a,b,c,d,0)|0}function TO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function UO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;k=k+1|0;c[a>>2]=k;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=k;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;E(e|0);return d|0}f=f+1|0}e=e*2|0;d=IO(d|0,8*(e+1|0)|0)|0;d=XO(a|0,b|0,d|0,e|0)|0;E(e|0);return d|0}function YO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function ZO(a,b){a=a|0;b=b|0;if(!i){i=a;j=b}}function _O(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Ca(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function $O(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else _O(b,c,d)|0;return b|0}function aP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function bP(a){a=+a;return a>=0.0?+s(a+.5):+A(a-.5)}function cP(a,b){a=a|0;b=b|0;return +Db[a&3](b|0)}function dP(a,b,c){a=a|0;b=b|0;c=c|0;return +Eb[a&1](b|0,c|0)}function eP(a){a=a|0;return Fb[a&1]()|0}function fP(a,b){a=a|0;b=b|0;return Gb[a&127](b|0)|0}function gP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;return Hb[a&1](b|0,+c,d|0,e|0,f|0,g|0)|0}function hP(a,b,c){a=a|0;b=b|0;c=c|0;return Ib[a&63](b|0,c|0)|0}function iP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jb[a&63](b|0,c|0,d|0)|0}function jP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kb[a&15](b|0,c|0,d|0,e|0)|0}function kP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return Lb[a&7](b|0,c|0,d|0,e|0,+f)|0}function lP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Mb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function mP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Nb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function nP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ob[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function oP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Pb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function pP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Qb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function qP(a){a=a|0;Rb[a&1]()}function rP(a,b){a=a|0;b=b|0;Sb[a&255](b|0)}function sP(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function tP(a,b,c){a=a|0;b=b|0;c=c|0;Ub[a&63](b|0,c|0)}function uP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Vb[a&3](b|0,c|0,+d)}function vP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wb[a&3](b|0,c|0,d|0)}function wP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xb[a&31](b|0,c|0,d|0,e|0)}function xP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Yb[a&63](b|0,c|0,d|0,e|0,f|0)}function yP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Zb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function zP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;_b[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function AP(a){a=a|0;D(0);return 0.0}function BP(a,b){a=a|0;b=b|0;D(1);return 0.0}function CP(){D(2);return 0}function DP(a){a=a|0;D(3);return 0}function EP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;D(4);return 0}function FP(a,b){a=a|0;b=b|0;D(5);return 0}function GP(a,b,c){a=a|0;b=b|0;c=c|0;D(6);return 0}function HP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(7);return 0}function IP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;D(8);return 0}function JP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(9);return 0}function KP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;D(10);return 0}function LP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(11);return 0}function MP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(12);return 0}function NP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;D(13);return 0}function OP(){D(14)}function PP(a){a=a|0;D(15)}function QP(a,b){a=a|0;b=+b;D(16)}function RP(a,b){a=a|0;b=b|0;D(17)}function SP(a,b,c){a=a|0;b=b|0;c=+c;D(18)}function TP(a,b,c){a=a|0;b=b|0;c=c|0;D(19)}function UP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(20)}function VP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(21)}function WP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(22)}function XP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(23)} + +// EMSCRIPTEN_END_FUNCS +var Db=[AP,pr,sr,Cr];var Eb=[BP,ss];var Fb=[CP,lr];var Gb=[DP,pj,kx,rx,_A,ND,OD,QD,RD,aE,bE,dE,eE,aF,gF,lF,mF,rF,sF,NH,UH,VH,WH,XH,YH,ZH,_H,vI,CI,DI,EI,FI,GI,HI,II,qJ,rJ,wJ,BJ,CJ,HJ,MJ,NJ,SJ,XJ,YJ,bK,ZK,_K,aL,pL,qL,sL,XL,YL,cM,dM,iL,jL,lL,yL,zL,BL,ex,bu,FO,dx,Kq,Mq,Tq,Uq,ar,br,cr,hr,ir,vr,xr,zr,Er,Gr,Ir,Ds,Pt,Wt,Xt,Yt,Zt,zu,Bu,Yw,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP];var Hb=[EP,Lx];var Ib=[FP,$l,iq,pq,SD,UD,fE,hE,cF,iF,nF,tF,KL,ML,OL,nM,pM,rM,Le,bx,Nq,Pq,Qq,Rq,Xq,_q,$q,er,fr,gr,nt,Os,Jt,Rt,Au,Cu,Du,Hu,Iu,Ju,Ku,Mu,Nu,Su,Tu,Uu,Vu,Wu,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP];var Jb=[GP,lx,qx,fy,FA,fB,KD,PD,TD,ZD,cE,gE,bF,hF,AF,HF,NK,SK,LL,NL,QL,jM,oM,qM,tM,zw,Iq,Wq,Yq,Zq,dr,ht,Ys,Ew,Fw,Ez,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP];var Kb=[HP,mx,sx,PL,kM,lM,mM,sM,wt,Gw,Hw,HP,HP,HP,HP,HP];var Lb=[IP,oH,pH,FH,GH,IP,IP,IP];var Mb=[JP,yF,FF,jH,kH,mH,qH,AH,BH,DH,HH,YK,$K,oL,rL,RL,uM,hL,kL,xL,AL,Lw,Mw,JP,JP,JP,JP,JP,JP,JP,JP,JP];var Nb=[KP,BK,HK,KP];var Ob=[LP,MF,NF,OF,PF,QF,RF,SF,TF,UF,VF,WF,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,lH,nH,CH,EH,OH,PH,QH,RH,SH,wI,xI,yI,zI,AI,CK,IK,Iw,Jw,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP];var Pb=[MP,eJ,kJ,gK,hK,rK,sK,MP];var Qb=[NP,TH,BI,WK,XK,mL,nL,fL,gL,vL,wL,NP,NP,NP,NP,NP];var Rb=[OP,wA];var Sb=[PP,Qi,Ri,Ti,Ui,nj,oj,ZN,Zl,_l,am,gq,hq,jq,nq,oq,qq,BA,CA,DA,EA,OA,YA,ZA,dB,eB,gB,DD,FD,HD,ID,WD,XD,mE,nE,oE,pE,rE,sE,tE,uE,wE,xE,yE,zE,BE,CE,DE,EE,_E,eF,jF,pF,vF,wF,xF,DF,EF,KF,LF,GG,HG,hH,iH,yH,zH,LH,MH,tI,uI,cJ,dJ,iJ,jJ,oJ,pJ,zJ,AJ,KJ,LJ,VJ,WJ,eK,fK,pK,qK,zK,AK,FK,GK,LK,MK,QK,RK,CF,eL,VK,tL,uL,FL,GL,IL,JL,VL,WL,aM,bM,hM,iM,vM,wM,xM,hf,ax,jr,Ot,St,Vt,du,eu,pw,qw,fw,$v,Rv,Jv,Yu,Qu,Ru,Fu,Gu,wu,xu,iw,lw,Kw,Ow,Zw,_w,$w,fx,hx,jx,cG,eG,iK,GO,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP];var Tb=[QP,nr,rr,Ar];var Ub=[RP,JD,YD,$E,fF,kF,qF,sJ,tJ,uJ,vJ,xJ,yJ,DJ,EJ,FJ,GJ,IJ,JJ,OJ,PJ,QJ,RJ,TJ,UJ,ZJ,_J,$J,aK,cK,dK,PK,UK,ZL,_L,$L,eM,fM,gM,Nt,tr,wr,yr,Dr,Fr,Hr,Is,Qt,ow,ew,Fv,su,Nw,gx,ix,Mx,RP,RP,RP,RP,RP,RP,RP,RP];var Vb=[SP,xs,gs,SP];var Wb=[TP,Ww,ns,TP];var Xb=[UP,IA,RA,jB,MD,$D,zF,GF,Ue,bw,dw,Lv,Mv,Nv,Ov,Pv,tu,uu,vu,hw,jw,kw,sw,tw,uw,vw,ww,UP,UP,UP,UP,UP];var Yb=[VP,HA,QA,iB,Sv,Tv,Uv,Vv,Wv,Xv,Yv,Zv,_v,Dv,Cv,Bv,Av,zv,yv,xv,wv,vv,uv,tv,sv,rv,qv,pv,ov,nv,mv,lv,kv,jv,iv,hv,gv,fv,ev,dv,cv,bv,av,$u,Ev,_u,Zu,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP];var Zb=[WP,GA,PA,hB,LD,_D,OK,TK];var _b=[XP,aw,cw,Kv,Gv,Hv,Iv,XP];return{__GLOBAL__I_000101:SE,__GLOBAL__sub_I_ARToolKitJS_cpp:Dq,__GLOBAL__sub_I_bind_cpp:EB,__GLOBAL__sub_I_iostream_cpp:TE,__ZSt18uncaught_exceptionv:yD,___cxa_can_catch:wB,___cxa_is_pointer_type:xB,___embind_register_native_and_builtin_types:HB,___emscripten_environ_constructor:zB,___errno_location:ox,___getTypeName:tD,___muldi3:NO,___udivdi3:SO,__get_daylight:BB,__get_environ:DB,__get_timezone:CB,__get_tzname:AB,_bitshift64Lshr:TO,_bitshift64Shl:UO,_emscripten_get_sbrk_ptr:VO,_emscripten_replace_memory:Cb,_free:GO,_i64Add:OO,_i64Subtract:PO,_llvm_bswap_i32:WO,_malloc:FO,_memcpy:_O,_memmove:$O,_memset:aP,_realloc:IO,_roundf:bP,_saveSetjmp:XO,_setThrew:ZO,_testSetjmp:YO,dynCall_di:cP,dynCall_dii:dP,dynCall_i:eP,dynCall_ii:fP,dynCall_iidiiii:gP,dynCall_iii:hP,dynCall_iiii:iP,dynCall_iiiii:jP,dynCall_iiiiid:kP,dynCall_iiiiii:lP,dynCall_iiiiiid:mP,dynCall_iiiiiii:nP,dynCall_iiiiiiii:oP,dynCall_iiiiiiiii:pP,dynCall_v:qP,dynCall_vi:rP,dynCall_vid:sP,dynCall_vii:tP,dynCall_viid:uP,dynCall_viii:vP,dynCall_viiii:wP,dynCall_viiiii:xP,dynCall_viiiiii:yP,dynCall_viiiiiii:zP,establishStackSpace:cc,stackAlloc:$b,stackRestore:bc,stackSave:ac}}) + + +// EMSCRIPTEN_END_ASM +(asmGlobalArg,asmLibraryArg,buffer);var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var __ZSt18uncaught_exceptionv=Module["__ZSt18uncaught_exceptionv"]=asm["__ZSt18uncaught_exceptionv"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=asm["___embind_register_native_and_builtin_types"];var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=asm["___emscripten_environ_constructor"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var __get_daylight=Module["__get_daylight"]=asm["__get_daylight"];var __get_environ=Module["__get_environ"]=asm["__get_environ"];var __get_timezone=Module["__get_timezone"]=asm["__get_timezone"];var __get_tzname=Module["__get_tzname"]=asm["__get_tzname"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_get_sbrk_ptr=Module["_emscripten_get_sbrk_ptr"]=asm["_emscripten_get_sbrk_ptr"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _roundf=Module["_roundf"]=asm["_roundf"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _setThrew=Module["_setThrew"]=asm["_setThrew"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidiiii=Module["dynCall_iidiiii"]=asm["dynCall_iidiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status)}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); + +var THREEx = THREEx || {} + +THREEx.ArBaseControls = function(object3d){ + this.id = THREEx.ArBaseControls.id++ + + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + // Events to honor + // this.dispatchEvent({ type: 'becameVisible' }) + // this.dispatchEvent({ type: 'markerVisible' }) // replace markerFound + // this.dispatchEvent({ type: 'becameUnVisible' }) +} + +THREEx.ArBaseControls.id = 0 + +Object.assign( THREEx.ArBaseControls.prototype, THREE.EventDispatcher.prototype ); + +////////////////////////////////////////////////////////////////////////////// +// Functions +////////////////////////////////////////////////////////////////////////////// +/** + * error catching function for update() + */ +THREEx.ArBaseControls.prototype.update = function(){ + console.assert(false, 'you need to implement your own update') +} + +/** + * error catching function for name() + */ +THREEx.ArBaseControls.prototype.name = function(){ + console.assert(false, 'you need to implement your own .name()') + return 'Not yet implemented - name()' +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.ARClickability = function (sourceElement) { + this._sourceElement = sourceElement + // Create cameraPicking + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + this._cameraPicking = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 100); + + console.warn('THREEx.ARClickability works only in modelViewMatrix') + console.warn('OBSOLETE OBSOLETE! instead use THREEx.HitTestingPlane') +} + +THREEx.ARClickability.prototype.onResize = function () { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + cameraPicking.aspect = fullWidth / fullHeight; + cameraPicking.updateProjectionMatrix(); +} + +THREEx.ARClickability.prototype.computeIntersects = function (domEvent, objects) { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + // compute mouse coordinatge with [-1,1] + var eventCoords = new THREE.Vector3(); + eventCoords.x = (domEvent.layerX / parseInt(sourceElement.style.width)) * 2 - 1; + eventCoords.y = - (domEvent.layerY / parseInt(sourceElement.style.height)) * 2 + 1; + + // compute intersections between eventCoords and pickingPlane + var raycaster = new THREE.Raycaster(); + raycaster.setFromCamera(eventCoords, cameraPicking); + var intersects = raycaster.intersectObjects(objects) + + return intersects +} + +THREEx.ARClickability.prototype.update = function () { + +} +var THREEx = THREEx || {} +/** + * - videoTexture + * - cloakWidth + * - cloakHeight + * - cloakSegmentsHeight + * - remove all mentions of cache, for cloak + */ +THREEx.ArMarkerCloak = function(videoTexture){ + var updateInShaderEnabled = true + + // build cloakMesh + // TODO if webgl2 use repeat warp, and not multi segment, this will reduce the geometry to draw + var geometry = new THREE.PlaneGeometry(1.3+0.25,1.85+0.25, 1, 8).translate(0,-0.3,0) + var material = new THREE.ShaderMaterial( { + vertexShader: THREEx.ArMarkerCloak.vertexShader, + fragmentShader: THREEx.ArMarkerCloak.fragmentShader, + transparent: true, + uniforms: { + texture: { + value: videoTexture + }, + opacity: { + value: 0.5 + } + }, + defines: { + updateInShaderEnabled: updateInShaderEnabled ? 1 : 0, + } + }); + + var cloakMesh = new THREE.Mesh( geometry, material ); + cloakMesh.rotation.x = -Math.PI/2 + this.object3d = cloakMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var xMin = -0.65 + var xMax = 0.65 + var yMin = 0.65 + 0.1 + var yMax = 0.95 + 0.1 + + ////////////////////////////////////////////////////////////////////////////// + // originalsFaceVertexUvs + ////////////////////////////////////////////////////////////////////////////// + var originalsFaceVertexUvs = [[]] + + // build originalsFaceVertexUvs array + for(var faceIndex = 0; faceIndex < cloakMesh.geometry.faces.length; faceIndex ++ ){ + originalsFaceVertexUvs[0][faceIndex] = [] + originalsFaceVertexUvs[0][faceIndex][0] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][1] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][2] = new THREE.Vector2() + } + + // set values in originalsFaceVertexUvs + for(var i = 0; i < cloakMesh.geometry.parameters.heightSegments/2; i ++ ){ + // one segment height - even row - normale orientation + originalsFaceVertexUvs[0][i*4+0][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][1].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][2].set( xMax/2+0.5, yMax/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+1][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][1].set( xMax/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][2].set( xMax/2+0.5, yMax/2+0.5 ) + + // one segment height - odd row - mirror-y orientation + originalsFaceVertexUvs[0][i*4+2][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][1].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][2].set( xMax/2+0.5, yMin/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+3][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][1].set( xMax/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][2].set( xMax/2+0.5, yMin/2+0.5 ) + } + + if( updateInShaderEnabled === true ){ + cloakMesh.geometry.faceVertexUvs = originalsFaceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var originalOrthoVertices = [] + originalOrthoVertices.push( new THREE.Vector3(xMin, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMin, yMin, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMin, 0)) + + // build debugMesh + var material = new THREE.MeshNormalMaterial({ + transparent : true, + opacity: 0.5, + side: THREE.DoubleSide + }); + var geometry = new THREE.PlaneGeometry(1,1); + var orthoMesh = new THREE.Mesh(geometry, material); + this.orthoMesh = orthoMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this.update = function(modelViewMatrix, cameraProjectionMatrix){ + updateOrtho(modelViewMatrix, cameraProjectionMatrix) + + if( updateInShaderEnabled === false ){ + updateUvs(modelViewMatrix, cameraProjectionMatrix) + } + } + + return + + // update cloakMesh + function updateUvs(modelViewMatrix, cameraProjectionMatrix){ + var transformedUv = new THREE.Vector3() + originalsFaceVertexUvs[0].forEach(function(faceVertexUvs, faceIndex){ + faceVertexUvs.forEach(function(originalUv, uvIndex){ + // set transformedUv - from UV coord to clip coord + transformedUv.x = originalUv.x * 2.0 - 1.0; + transformedUv.y = originalUv.y * 2.0 - 1.0; + transformedUv.z = 0 + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // set back from clip coord to Uv coord + transformedUv.x = transformedUv.x / 2.0 + 0.5; + transformedUv.y = transformedUv.y / 2.0 + 0.5; + // copy the trasnformedUv into the geometry + cloakMesh.geometry.faceVertexUvs[0][faceIndex][uvIndex].set(transformedUv.x, transformedUv.y) + }) + }) + + // cloakMesh.geometry.faceVertexUvs = faceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + // update orthoMesh + function updateOrtho(modelViewMatrix, cameraProjectionMatrix){ + // compute transformedUvs + var transformedUvs = [] + originalOrthoVertices.forEach(function(originalOrthoVertices, index){ + var transformedUv = originalOrthoVertices.clone() + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // store it + transformedUvs.push(transformedUv) + }) + + // change orthoMesh vertices + for(var i = 0; i < transformedUvs.length; i++){ + orthoMesh.geometry.vertices[i].copy(transformedUvs[i]) + } + orthoMesh.geometry.computeBoundingSphere() + orthoMesh.geometry.verticesNeedUpdate = true + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Shaders +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArMarkerCloak.markerSpaceShaderFunction = '\n'+ +' vec2 transformUvToMarkerSpace(vec2 originalUv){\n'+ +' vec3 transformedUv;\n'+ +' // set transformedUv - from UV coord to clip coord\n'+ +' transformedUv.x = originalUv.x * 2.0 - 1.0;\n'+ +' transformedUv.y = originalUv.y * 2.0 - 1.0;\n'+ +' transformedUv.z = 0.0;\n'+ +'\n'+ +' // apply modelViewMatrix and projectionMatrix\n'+ +' transformedUv = (projectionMatrix * modelViewMatrix * vec4( transformedUv, 1.0 ) ).xyz;\n'+ +'\n'+ +' // apply perspective\n'+ +' transformedUv.x /= transformedUv.z;\n'+ +' transformedUv.y /= transformedUv.z;\n'+ +'\n'+ +' // set back from clip coord to Uv coord\n'+ +' transformedUv.x = transformedUv.x / 2.0 + 0.5;\n'+ +' transformedUv.y = transformedUv.y / 2.0 + 0.5;\n'+ +'\n'+ +' // return the result\n'+ +' return transformedUv.xy;\n'+ +' }' + +THREEx.ArMarkerCloak.vertexShader = THREEx.ArMarkerCloak.markerSpaceShaderFunction + +' varying vec2 vUv;\n'+ +'\n'+ +' void main(){\n'+ +' // pass the UV to the fragment\n'+ +' #if (updateInShaderEnabled == 1)\n'+ +' vUv = transformUvToMarkerSpace(uv);\n'+ +' #else\n'+ +' vUv = uv;\n'+ +' #endif\n'+ +'\n'+ +' // compute gl_Position\n'+ +' vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n'+ +' gl_Position = projectionMatrix * mvPosition;\n'+ +' }'; + +THREEx.ArMarkerCloak.fragmentShader = '\n'+ +' varying vec2 vUv;\n'+ +' uniform sampler2D texture;\n'+ +' uniform float opacity;\n'+ +'\n'+ +' void main(void){\n'+ +' vec3 color = texture2D( texture, vUv ).rgb;\n'+ +'\n'+ +' gl_FragColor = vec4( color, opacity);\n'+ +' }' +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkerControls = THREEx.ArMarkerControls = function (context, object3d, parameters) { + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + this.context = context + // handle default parameters + this.parameters = { + // size of the marker in meter + size: 1, + // type of marker - ['pattern', 'barcode', 'nft', 'unknown' ] + type: 'unknown', + // url of the pattern - IIF type='pattern' + patternUrl: null, + // value of the barcode - IIF type='barcode' + barcodeValue: null, + // url of the descriptors of image - IIF type='nft' + descriptorsUrl: null, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode: 'modelViewMatrix', + // minimal confidence in the marke recognition - between [0, 1] - default to 1 + minConfidence: 0.6, + // turn on/off camera smoothing + smooth: false, + // number of matrices to smooth tracking over, more = smoother but slower follow + smoothCount: 5, + // distance tolerance for smoothing, if smoothThreshold # of matrices are under tolerance, tracking will stay still + smoothTolerance: 0.01, + // threshold for smoothing, will keep still unless enough matrices are over tolerance + smoothThreshold: 2, + } + + // sanity check + var possibleValues = ['pattern', 'barcode', 'nft', 'unknown'] + console.assert(possibleValues.indexOf(this.parameters.type) !== -1, 'illegal value', this.parameters.type) + var possibleValues = ['modelViewMatrix', 'cameraTransformMatrix'] + console.assert(possibleValues.indexOf(this.parameters.changeMatrixMode) !== -1, 'illegal value', this.parameters.changeMatrixMode) + + // create the marker Root + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } + + if (this.parameters.smooth) { + this.smoothMatrices = []; // last DEBOUNCE_COUNT modelViewMatrix + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // add this marker to artoolkitsystem + // TODO rename that .addMarkerControls + context.addMarker(this) + + if (_this.context.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit() + } else console.assert(false) +} + +ARjs.MarkerControls.prototype = Object.create(THREEx.ArBaseControls.prototype); +ARjs.MarkerControls.prototype.constructor = THREEx.ArMarkerControls; + +ARjs.MarkerControls.prototype.dispose = function () { + this.context.removeMarker(this) +} + +////////////////////////////////////////////////////////////////////////////// +// update controls with new modelViewMatrix +////////////////////////////////////////////////////////////////////////////// + +/** + * When you actually got a new modelViewMatrix, you need to perfom a whole bunch + * of things. it is done here. + */ +ARjs.MarkerControls.prototype.updateWithModelViewMatrix = function (modelViewMatrix) { + var markerObject3D = this.object3d; + + // mark object as visible + markerObject3D.visible = true + + if (this.context.parameters.trackingBackend === 'artoolkit') { + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + var tmpMatrix = new THREE.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix) + tmpMatrix.multiply(modelViewMatrix) + + modelViewMatrix.copy(tmpMatrix) + } else { + console.assert(false) + } + + // change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker + var markerAxisTransformMatrix = new THREE.Matrix4().makeRotationX(Math.PI/2) + modelViewMatrix.multiply(markerAxisTransformMatrix) + + var renderReqd = false; + + // change markerObject3D.matrix based on parameters.changeMatrixMode + if (this.parameters.changeMatrixMode === 'modelViewMatrix') { + if (this.parameters.smooth) { + var sum, + i, j, + averages, // average values for matrix over last smoothCount + exceedsAverageTolerance = 0; + + this.smoothMatrices.push(modelViewMatrix.elements.slice()); // add latest + + if (this.smoothMatrices.length < (this.parameters.smoothCount + 1)) { + markerObject3D.matrix.copy(modelViewMatrix); // not enough for average + } else { + this.smoothMatrices.shift(); // remove oldest entry + averages = []; + + for (i in modelViewMatrix.elements) { // loop over entries in matrix + sum = 0; + for (j in this.smoothMatrices) { // calculate average for this entry + sum += this.smoothMatrices[j][i]; + } + averages[i] = sum / this.parameters.smoothCount; + // check how many elements vary from the average by at least AVERAGE_MATRIX_TOLERANCE + if (Math.abs(averages[i] - modelViewMatrix.elements[i]) >= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + } else if (this.parameters.changeMatrixMode === 'cameraTransformMatrix') { + markerObject3D.matrix.getInverse(modelViewMatrix) + } else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent({ type: 'markerFound' }); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkerControls.prototype.name = function () { + var name = ''; + name += this.parameters.type; + + if (this.parameters.type === 'pattern') { + var url = this.parameters.patternUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else if (this.parameters.type === 'barcode') { + name += ' - ' + this.parameters.barcodeValue; + } else if (this.parameters.type === 'nft') { + var url = this.parameters.descriptorsUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else { + console.assert(false, 'no .name() implemented for this marker controls'); + } + + return name; +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function () { + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(() => { + // check if arController is init + var arController = _this.context.arController + if (arController === null) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000 / 50) + + return + + function postInit() { + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null) + + // start tracking this pattern + if (_this.parameters.type === 'pattern') { + arController.loadMarker(_this.parameters.patternUrl, function (markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + } else if (_this.parameters.type === 'barcode') { + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + } else if (_this.parameters.type === 'nft') { + // use workers as default + handleNFT(_this.parameters.descriptorsUrl, arController); + } else if (_this.parameters.type === 'unknown') { + artoolkitMarkerId = null + } else { + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function (event) { + if (event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idPatt === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idMatrix === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown') { + onMarkerFound(event); + } + }) + } + + function setMatrix(matrix, value) { + var array = []; + for (var key in value) { + array[key] = value[key]; + } + if (typeof matrix.elements.set === "function") { + matrix.elements.set(array); + } else { + matrix.elements = [].slice.call(array); + } + }; + + function handleNFT(descriptorsUrl, arController) { + // create a Worker to handle loading of NFT marker and tracking of it + var workerBlob = new Blob( + [workerRunner.toString().replace(/^function .+\{?|\}$/g, '')], + { type: 'text/js-worker' } + ); + var workerBlobUrl = URL.createObjectURL(workerBlob); + var worker = new Worker(workerBlobUrl); + + window.addEventListener('arjs-video-loaded', function (ev) { + var video = ev.detail.component; + var vw = video.clientWidth; + var vh = video.clientHeight; + + var pscale = 320 / Math.max(vw, vh / 3 * 4); + + w = vw * pscale; + h = vh * pscale; + pw = Math.max(w, h / 3 * 4); + ph = Math.max(h, w / 4 * 3); + ox = (pw - w) / 2; + oy = (ph - h) / 2; + + arController.canvas.style.clientWidth = pw + "px"; + arController.canvas.style.clientHeight = ph + "px"; + arController.canvas.width = pw; + arController.canvas.height = ph; + + var context_process = arController.canvas.getContext('2d'); + + function process() { + context_process.fillStyle = "black"; + context_process.fillRect(0, 0, pw, ph); + context_process.drawImage(video, 0, 0, vw, vh, ox, oy, w, h); + + var imageData = context_process.getImageData(0, 0, pw, ph); + worker.postMessage({ type: "process", imagedata: imageData }, [imageData.data.buffer]); + } + + // initialize the worker + worker.postMessage({ + type: 'init', + pw: pw, + ph: ph, + marker: descriptorsUrl, + param: arController.cameraParam.src, + }); + + worker.onmessage = function (ev) { + if (ev && ev.data && ev.data.type === 'endLoading') { + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + var endLoadingEvent = new Event('arjs-nft-loaded'); + window.dispatchEvent(endLoadingEvent); + } + + if (ev && ev.data && ev.data.type === 'loaded') { + var proj = JSON.parse(ev.data.proj); + var ratioW = pw / w; + var ratioH = ph / h; + proj[0] *= ratioW; + proj[4] *= ratioW; + proj[8] *= ratioW; + proj[12] *= ratioW; + proj[1] *= ratioH; + proj[5] *= ratioH; + proj[9] *= ratioH; + proj[13] *= ratioH; + + setMatrix(_this.object3d.matrix, proj); + } + + if (ev && ev.data && ev.data.type === 'found') { + var matrix = JSON.parse(ev.data.matrix); + + onMarkerFound({ + data: { + type: artoolkit.NFT_MARKER, + matrix: matrix, + msg: ev.data.type, + } + }); + + _this.context.arController.showObject = true; + } else { + _this.context.arController.showObject = false; + } + + process(); + }; + + }); + + + + }; + + function workerRunner() { + // continuing 'workerRunner' function at treex-armarkercontrols-nft-end.js file + // see the makefile of three.js folder to better understand the division of this function between two files +var Module=typeof Module!=="undefined"?Module:{};(function(){"use strict";var scope;if(typeof window!=="undefined"){scope=window}else{scope=self}if(scope.artoolkit_wasm_url){var downloadWasm=function(url){return new Promise(function(resolve,reject){var wasmXHR=new XMLHttpRequest;wasmXHR.open("GET",url,true);wasmXHR.responseType="arraybuffer";wasmXHR.onload=function(){resolve(wasmXHR.response)};wasmXHR.onerror=function(){reject("error "+wasmXHR.status)};wasmXHR.send(null)})};var wasm=downloadWasm(scope.artoolkit_wasm_url);Module.instantiateWasm=function(imports,successCallback){console.log("instantiateWasm: instantiating synchronously");wasm.then(function(wasmBinary){console.log("wasm download finished, begin instantiating");var wasmInstantiate=WebAssembly.instantiate(new Uint8Array(wasmBinary),imports).then(function(output){console.log("wasm instantiation succeeded");successCallback(output.instance)}).catch(function(e){console.log("wasm instantiation failed! "+e)})});return{}}}var ARController=function(width,height,cameraPara){this.id=undefined;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;cameraPara=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.width=w;this.height=h;this.nftMarkerCount=0;this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.nftMarkers={};this.transform_mat=new Float32Array(16);this.transformGL_RH=new Float64Array(16);if(typeof document!=="undefined"){this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d")}this.videoWidth=w;this.videoHeight=h;this.videoSize=this.videoWidth*this.videoHeight;this.framepointer=null;this.framesize=null;this.dataHeap=null;this.videoLuma=null;this.camera_mat=null;this.marker_transform_mat=null;this.videoLumaPointer=null;this._bwpointer=undefined;this._lumaCtx=undefined;if(typeof cameraPara==="string"){this.cameraParam=new ARCameraParam(cameraPara,function(){this._initialize()}.bind(this),function(err){console.error("ARController: Failed to load ARCameraParam",err);this.onload(err)}.bind(this))}else{this.cameraParam=cameraPara;this._initialize()}};ARController.prototype.dispose=function(){if(this.id>-1){artoolkit.teardown(this.id)}if(this.image&&this.image.srcObject){ARController._teardownVideo(this.image)}for(var t in this){this[t]=null}};ARController.prototype.process=function(image){var result=this.detectMarker(image);if(result!=0){console.error("detectMarker error: "+result)}var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.nftMarkers){o=this.nftMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var nftMarkerCount=this.nftMarkerCount;this.detectNFTMarker();var MARKER_LOST_TIME=200;for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i>3;q+=4}}if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(){if(readyToPlay){video.play().then(function(){onSuccess(video)}).catch(function(error){onError(error);ARController._teardownVideo(video)});if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){if(window.URL.createObjectURL){try{video.srcObject=stream}catch(ex){}}video.srcObject=stream;readyToPlay=true;video.autoplay=true;video.playsInline=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.min}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.min}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;mediaDevicesConstraints.deviceId=configuration.deviceId;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:constraints};if(navigator.mediaDevices||window.MediaStreamTrack.getSources){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{window.MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback,errorCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=57888,DYNAMIC_BASE=5300768,DYNAMICTOP_PTR=57696;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;if(Module["buffer"]){buffer=Module["buffer"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw what}var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;var ASM_CONSTS=[function($0,$1,$2,$3,$4,$5){if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4;frameMalloc["videoLumaPointer"]=$5},function($0,$1,$2,$3){if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=$a[i++];markerInfo["found"]=1;markerInfo["pose"][0]=$a[i++];markerInfo["pose"][1]=$a[i++];markerInfo["pose"][2]=$a[i++];markerInfo["pose"][3]=$a[i++];markerInfo["pose"][4]=$a[i++];markerInfo["pose"][5]=$a[i++];markerInfo["pose"][6]=$a[i++];markerInfo["pose"][7]=$a[i++];markerInfo["pose"][8]=$a[i++];markerInfo["pose"][9]=$a[i++];markerInfo["pose"][10]=$a[i++];markerInfo["pose"][11]=$a[i++]},function($0){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=-1;markerInfo["found"]=0;markerInfo["pose"][0]=0;markerInfo["pose"][1]=0;markerInfo["pose"][2]=0;markerInfo["pose"][3]=0;markerInfo["pose"][4]=0;markerInfo["pose"][5]=0;markerInfo["pose"][6]=0;markerInfo["pose"][7]=0;markerInfo["pose"][8]=0;markerInfo["pose"][9]=0;markerInfo["pose"][10]=0;markerInfo["pose"][11]=0}];function _emscripten_asm_const_iiiiiii(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiddddddddddddd(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _emscripten_asm_const_iiiiiiiidddddddddddddddddddddddddi(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}__ATINIT__.push({func:function(){__GLOBAL__I_000101()}},{func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){___emscripten_environ_constructor()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}},{func:function(){__GLOBAL__sub_I_iostream_cpp()}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACKTQAAkU0AAJ1NAACnTQAAtU0AAAAAAAAAAAAAAAAAAP//////////AAAAAAEAAAABAAAAAQAAAAAAAAD/////AAAAAAEAAAABAAAAAQAAAAAAAAD///////////////8AAAABAAEBAQACBP//BQMBAAL/Bgf/AwECAgMCAwIDAwD/BAYHBf8BBAUEBAUFBAUHBgYGBwcHBv8CBAYHBQP/AAEBAQEBAQABAQEAAAEBAQEBAAEBAAEBAQABAQEBAAEBAAEBAQEAAQEBAAEBAAEBAQEBAAABAQEAAQEBAQEBAAD//wP/BQb//wkK/wz//w//ERL/FP//Fxj//xv/HR7//wEC/wT//wcI//8L/w0O/xD//xP/FRb//xka/xz//x8BAAAAAgAAAAQAAAAIAAAAEAAAAAUAAAAKAAAAFAAAAA0AAAAaAAAAEQAAAAcAAAAOAAAAHAAAAB0AAAAfAAAAGwAAABMAAAADAAAABgAAAAwAAAAYAAAAFQAAAA8AAAAeAAAAGQAAABcAAAALAAAAFgAAAAkAAAASAAAAAAAAAAEAAAACAAAABAAAAAgAAAADAAAABgAAAAwAAAALAAAABQAAAAoAAAAHAAAADgAAAA8AAAANAAAACQAAAAAAAAD/////AAAAAAEAAAASAAAAAgAAAAUAAAATAAAACwAAAAMAAAAdAAAABgAAABsAAAAUAAAACAAAAAwAAAAXAAAABAAAAAoAAAAeAAAAEQAAAAcAAAAWAAAAHAAAABoAAAAVAAAAGQAAAAkAAAAQAAAADQAAAA4AAAAYAAAADwAAAP////8AAAAAAQAAAAQAAAACAAAACAAAAAUAAAAKAAAAAwAAAA4AAAAJAAAABwAAAAYAAAANAAAACwAAAAwAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAAwAAAAYAAAAMAAAAGAAAADAAAABgAAAAQwAAAAUAAAAKAAAAFAAAACgAAABQAAAAIwAAAEYAAAAPAAAAHgAAADwAAAB4AAAAcwAAAGUAAABJAAAAEQAAACIAAABEAAAACwAAABYAAAAsAAAAWAAAADMAAABmAAAATwAAAB0AAAA6AAAAdAAAAGsAAABVAAAAKQAAAFIAAAAnAAAATgAAAB8AAAA+AAAAfAAAAHsAAAB1AAAAaQAAAFEAAAAhAAAAQgAAAAcAAAAOAAAAHAAAADgAAABwAAAAYwAAAEUAAAAJAAAAEgAAACQAAABIAAAAEwAAACYAAABMAAAAGwAAADYAAABsAAAAWwAAADUAAABqAAAAVwAAAC0AAABaAAAANwAAAG4AAABfAAAAPQAAAHoAAAB3AAAAbQAAAFkAAAAxAAAAYgAAAEcAAAANAAAAGgAAADQAAABoAAAAUwAAACUAAABKAAAAFwAAAC4AAABcAAAAOwAAAHYAAABvAAAAXQAAADkAAAByAAAAZwAAAE0AAAAZAAAAMgAAAGQAAABLAAAAFQAAACoAAABUAAAAKwAAAFYAAAAvAAAAXgAAAD8AAAB+AAAAfwAAAH0AAAB5AAAAcQAAAGEAAABBAAAAAAAAAP////8AAAAAAQAAAAcAAAACAAAADgAAAAgAAAA4AAAAAwAAAD8AAAAPAAAAHwAAAAkAAABaAAAAOQAAABUAAAAEAAAAHAAAAEAAAABDAAAAEAAAAHAAAAAgAAAAYQAAAAoAAABsAAAAWwAAAEYAAAA6AAAAJgAAABYAAAAvAAAABQAAADYAAAAdAAAAEwAAAEEAAABfAAAARAAAAC0AAAARAAAAKwAAAHEAAABzAAAAIQAAAE0AAABiAAAAdQAAAAsAAABXAAAAbQAAACMAAABcAAAASgAAAEcAAABPAAAAOwAAAGgAAAAnAAAAZAAAABcAAABSAAAAMAAAAHcAAAAGAAAAfgAAADcAAAANAAAAHgAAAD4AAAAUAAAAWQAAAEIAAAAbAAAAYAAAAG8AAABFAAAAawAAAC4AAAAlAAAAEgAAADUAAAAsAAAAXgAAAHIAAAAqAAAAdAAAAEwAAAAiAAAAVgAAAE4AAABJAAAAYwAAAGcAAAB2AAAAUQAAAAwAAAB9AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAABAAAAIgAAAAFAAAAkAAAAAYAAACYAAAACQAAALAAAAA3VAAAPVQAAEJUAABKVAAAAAAAALK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/ADcAAAA3AAAANwAAADcAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAMAAAAKAAAAEQAAABgAAAAgAAAAGQAAABIAAAALAAAABAAAAAUAAAAMAAAAEwAAABoAAAAhAAAAKAAAADAAAAApAAAAIgAAABsAAAAUAAAADQAAAAYAAAAHAAAADgAAABUAAAAcAAAAIwAAACoAAAAxAAAAOAAAADkAAAAyAAAAKwAAACQAAAAdAAAAFgAAAA8AAAAXAAAAHgAAACUAAAAsAAAAMwAAADoAAAA7AAAANAAAAC0AAAAmAAAAHwAAACcAAAAuAAAANQAAADwAAAA9AAAANgAAAC8AAAA3AAAAPgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAABQAAAAwAAAATAAAAGgAAACEAAAAoAAAAMAAAACkAAAAiAAAAGwAAABQAAAANAAAABgAAAA4AAAAVAAAAHAAAACMAAAAqAAAAMQAAADIAAAArAAAAJAAAAB0AAAAWAAAAHgAAACUAAAAsAAAAMwAAADQAAAAtAAAAJgAAAC4AAAA1AAAANgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAIAAAABkAAAASAAAACwAAAAQAAAAFAAAADAAAABMAAAAaAAAAIQAAACgAAAApAAAAIgAAABsAAAAUAAAADQAAABUAAAAcAAAAIwAAACoAAAArAAAAJAAAAB0AAAAlAAAALAAAAC0AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAADAAAABMAAAAaAAAAIQAAACIAAAAbAAAAFAAAABwAAAAjAAAAJAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAJAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAIEBHVoOAoYlEAMUERIECwgUBdgDFwbaARkH5QAcCG8AHgk2ACEKGgAjCw0ACQwGAAoNAwAMDQEAjw9/WiQQJT8mEfIsJxJ8ICgTuRcqFIIRKxXvDC0WoQkuFy8HMBhcBTEZBgQzGgMDNBtAAjYcsQE4HUQBOR71ADsftwA8IIoAPiFoAD8iTgAgIzsAIQksAKUl4VpAJkxIQScNOkMo8S5EKR8mRSozH0YrqBlILBgVSS13EUoudA5LL/sLTTD4CU4xYQhPMgYHMDPNBTI03gQyNQ8EMzZjAzQ31AI1OFwCNjn4ATc6pAE4O2ABOTwlATo99gA7PssAPT+rAD0gjwDBQRJbUEIETVFDLEFSRNg3U0XoL1RGPClWR3kjV0jfHldJqRpISk4XSEskFEpMnBFKTWsPS05RDU1PtgtNMEAK0FEyWFhSHE1ZU45DWlTdO1tV7jRcVq4uXVeaKVZHFiXYWXBVX1qpTGBb2URhXCI+Y10kOGNetDJdVhcu32CoVmVhRk9mYuVHZ2PPQWhkPTxjXV43aWYxUmpnD0xraDlGZ2NeQelqJ1Zsa+dQbWeFS25tl1Vva09Q7m8QWnBtIlXwb+tZcXEdWgAAAAAAAAAA1aMAAOujAAALpAAAMKQAAEqkAABppAAAfqQAAJukAADFpAAABaUAACSlAAA7pQAAUaUAAGWlAACipQAA0qUAAO6lAAARpgAASKYAAH+mAACWpgAAtqYAAOCmAAAtpwAASKcAAHOnAACPpwAAtKcAANqnAAD/pwAAEqgAACeoAAA6qAAATagAAHKoAACHqAAAm6gAALyoAADSqAAAAakAACmpAABKqQAAa6kAAJqpAACrqQAAx6kAAAWqAAAsqgAAU6oAAGeqAACVqgAAvaoAANmqAAD+qgAAIKsAAEqrAAB1qwAAk6sAAMGrAADpqwAAEKwAADusAABorAAAmKwAAMKsAADvrAAAEq0AADCtAABOrQAAhK0AAK6tAADNrQAA8K0AABeuAAAsrgAAQK4AAHWuAACFrgAAw64AAAWvAAAvrwAAW68AAIKvAACerwAAya8AAOSvAAD4rwAAD7AAABywAABEsAAAebAAALWwAADjsAAABLEAACuxAABEsQAAbLEAAI+xAACnsQAAy7EAAPCxAAD2sQAAL7IAAGmyAACIsgAAl7IAALSyAADSsgAA77IAAAizAAAhswAAY7MAAJ2zAADTswAAB7QAABu0AAAytAAAWLQAAH+0AADBtAAA/bQAAC61AABStQAAgLUAAJu1AADTtQAA/rUAAAAAAAAAAAAAAQAAAAIAAAADAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAAGAAAAAwAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAAIAAAAEAAAABwAAAAwAAAADAAAACAAAAAsAAAANAAAACQAAAAoAAAAOAAAADwAAAAAAAAABAAAABQAAAAYAAAAOAAAAAgAAAAQAAAAHAAAADQAAAA8AAAADAAAACAAAAAwAAAAQAAAAFQAAAAkAAAALAAAAEQAAABQAAAAWAAAACgAAABIAAAATAAAAFwAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAACAAAABAAAAAcAAAANAAAAEAAAABkAAAADAAAACAAAAAwAAAARAAAAGAAAABoAAAAJAAAACwAAABIAAAAXAAAAGwAAACAAAAAKAAAAEwAAABYAAAAcAAAAHwAAACEAAAAUAAAAFQAAAB0AAAAeAAAAIgAAACMAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAAbAAAAAgAAAAQAAAAHAAAADQAAABAAAAAaAAAAHAAAAAMAAAAIAAAADAAAABEAAAAZAAAAHQAAACYAAAAJAAAACwAAABIAAAAYAAAAHgAAACUAAAAnAAAACgAAABMAAAAXAAAAHwAAACQAAAAoAAAALQAAABQAAAAWAAAAIAAAACMAAAApAAAALAAAAC4AAAAVAAAAIQAAACIAAAAqAAAAKwAAAC8AAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAA4AAAAPAAAAGwAAABwAAAACAAAABAAAAAcAAAANAAAAEAAAABoAAAAdAAAAKgAAAAMAAAAIAAAADAAAABEAAAAZAAAAHgAAACkAAAArAAAACQAAAAsAAAASAAAAGAAAAB8AAAAoAAAALAAAADUAAAAKAAAAEwAAABcAAAAgAAAAJwAAAC0AAAA0AAAANgAAABQAAAAWAAAAIQAAACYAAAAuAAAAMwAAADcAAAA8AAAAFQAAACIAAAAlAAAALwAAADIAAAA4AAAAOwAAAD0AAAAjAAAAJAAAADAAAAAxAAAAOQAAADoAAAA+AAAAPwAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAAAQMVYn1NCSwBASTKjIqgRxVghe/xzYmjFWL9FCzB+GJ9T/HNBbVRin1OzQUEtEhdCS2JoVGJ+WEJLITu6KMMUAEDFWJ9TQksAQEkyoyKoEUkyv0WzQSE7STKCJzcb4A2jIgswQS26KKMiNxu/Eo4JqBF+GBIXwxSoEeANjgnfBAAAAAAAAPA/72FIsVAx9j/Kb02Rruf0P6oRbO9i0PI/AAAAAAAA8D87v6fAaSTpP7sgx3t6UeE/Xaty3lWo0T8AwDDwDMw8/APDM/MPzz//gECwcIxMvHyDQ7Nzj0+/fyDgENAs7BzcI+MT0y/vH9+gYJBQrGycXKNjk1Ovb59fCMg4+ATENPQLyzv7B8c394hIuHiERLR0i0u7e4dHt3co6BjYJOQU1CvrG9sn5xfXqGiYWKRklFSra5tbp2eXVwLCMvIOzj7+AcEx8Q3NPf2CQrJyjk6+foFBsXGNTb19IuIS0i7uHt4h4RHRLe0d3aJiklKubp5eoWGRUa1tnV0Kyjr6BsY29gnJOfkFxTX1ikq6eoZGtnaJSbl5hUW1dSrqGtom5hbWKekZ2SXlFdWqappapmaWVqlpmVmlZZVV3hIElQAAAAD///////////////8AAAAAAAAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNMAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAyACIAIgAiACIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAFgBMAEwATABMAEwATABMAEwATABMAEwATABMAEwATACNgI2AjYCNgI2AjYCNgI2AjYCNgEwATABMAEwATABMAEwAjVCNUI1QjVCNUI1QjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUEwATABMAEwATABMAI1gjWCNYI1gjWCNYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGBMAEwATABMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAAAAAAAAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAAAAAAAAAAAAAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAAAAAAAAAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAApD8AABVdAADMPwAAiWkAAIAzAAAAAAAAzD8AAHRsAAA4NgAAAAAAAMw/AAAjdwAAGD0AAAAAAADMPwAAi4cAABg9AAAAAAAAzD8AAP+HAAAYPQAAAAAAADhAAADlngAAAAAAAAEAAADwMwAAAAAAAKQ/AAAknwAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAABG4QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAIyQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAYzQAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApD8AAEe3AADMPwAAp7cAAFA2AAAAAAAAzD8AAFS3AABgNgAAAAAAAKQ/AAB1twAAzD8AAIK3AABANgAAAAAAAMw/AADxtwAAODYAAAAAAADMPwAAAbgAAHg2AAAAAAAAzD8AABK4AABQNgAAAAAAAMw/AAA0uAAAmDYAAAAAAADMPwAAWLgAAFA2AAAAAAAAHEAAAIC4AAAcQAAAgrgAABxAAACEuAAAHEAAAIa4AAAcQAAAiLgAABxAAACKuAAAHEAAAIy4AAAcQAAAjrgAABxAAACQuAAAHEAAAA3BAAAcQAAAkrgAABxAAACUuAAAHEAAAJa4AADMPwAAmLgAAEA2AAAAAAAApD8AANu7AACkPwAA+rsAAKQ/AAAZvAAApD8AADi8AACkPwAAV7wAAKQ/AAB2vAAApD8AAJW8AACkPwAAtLwAAKQ/AADTvAAApD8AAPK8AACkPwAAEb0AAKQ/AAAwvQAApD8AAE+9AAA4QAAAYr0AAAAAAAABAAAA8DMAAAAAAAA4QAAAob0AAAAAAAABAAAA8DMAAAAAAADMPwAA8r0AAOg3AAAAAAAApD8AAOC9AADMPwAAHL4AAOg3AAAAAAAApD8AAEa+AACkPwAAd74AADhAAACovgAAAAAAAAEAAADYNwAAA/T//zhAAADXvgAAAAAAAAEAAADwNwAAA/T//zhAAAAGvwAAAAAAAAEAAADYNwAAA/T//zhAAAA1vwAAAAAAAAEAAADwNwAAA/T//8w/AABkvwAACDgAAAAAAADMPwAAfb8AAAA4AAAAAAAAzD8AALy/AAAIOAAAAAAAAMw/AADUvwAAADgAAAAAAADMPwAA7L8AAMA4AAAAAAAAzD8AAADAAAAQPQAAAAAAAMw/AAAWwAAAwDgAAAAAAAA4QAAAL8AAAAAAAAACAAAAwDgAAAIAAAAAOQAAAAAAADhAAABzwAAAAAAAAAEAAAAYOQAAAAAAAKQ/AACJwAAAOEAAAKLAAAAAAAAAAgAAAMA4AAACAAAAQDkAAAAAAAA4QAAA5sAAAAAAAAABAAAAGDkAAAAAAAA4QAAAD8EAAAAAAAACAAAAwDgAAAIAAAB4OQAAAAAAADhAAABTwQAAAAAAAAEAAACQOQAAAAAAAKQ/AABpwQAAOEAAAILBAAAAAAAAAgAAAMA4AAACAAAAuDkAAAAAAAA4QAAAxsEAAAAAAAABAAAAkDkAAAAAAAA4QAAAHMMAAAAAAAADAAAAwDgAAAIAAAD4OQAAAgAAAAA6AAAACAAApD8AAIPDAACkPwAAYcMAADhAAACWwwAAAAAAAAMAAADAOAAAAgAAAPg5AAACAAAAMDoAAAAIAACkPwAA28MAADhAAAD9wwAAAAAAAAIAAADAOAAAAgAAAFg6AAAACAAApD8AAELEAAA4QAAAV8QAAAAAAAACAAAAwDgAAAIAAABYOgAAAAgAADhAAACcxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAApD8AALjEAAA4QAAAzcQAAAAAAAACAAAAwDgAAAIAAACgOgAAAgAAADhAAADpxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAAOEAAAAXFAAAAAAAAAgAAAMA4AAACAAAAoDoAAAIAAAA4QAAAMMUAAAAAAAACAAAAwDgAAAIAAAAoOwAAAAAAAKQ/AAB2xQAAOEAAAJrFAAAAAAAAAgAAAMA4AAACAAAAUDsAAAAAAACkPwAA4MUAADhAAAD/xQAAAAAAAAIAAADAOAAAAgAAAHg7AAAAAAAApD8AAEXGAAA4QAAAXsYAAAAAAAACAAAAwDgAAAIAAACgOwAAAAAAAKQ/AACkxgAAOEAAAL3GAAAAAAAAAgAAAMA4AAACAAAAyDsAAAIAAACkPwAA0sYAADhAAABpxwAAAAAAAAIAAADAOAAAAgAAAMg7AAACAAAAzD8AAOrGAAAAPAAAAAAAADhAAAANxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAApD8AADDHAADMPwAAR8cAAAA8AAAAAAAAOEAAAH7HAAAAAAAAAgAAAMA4AAACAAAAIDwAAAIAAAA4QAAAoMcAAAAAAAACAAAAwDgAAAIAAAAgPAAAAgAAADhAAADCxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAAzD8AAOXHAADAOAAAAAAAADhAAAD7xwAAAAAAAAIAAADAOAAAAgAAAMg8AAACAAAApD8AAA3IAAA4QAAAIsgAAAAAAAACAAAAwDgAAAIAAADIPAAAAgAAAMw/AAA/yAAAwDgAAAAAAADMPwAAVMgAAMA4AAAAAAAApD8AAGnIAAA4QAAAgsgAAAAAAAABAAAAED0AAAAAAAABAAAAAAAAAIgzAAABAAAAAgAAAAAAAACAMwAAAwAAAAQAAAAAAAAAmDMAAAUAAAAGAAAAAQAAALlSjD6OWuc+uVKMPgAAAACoMwAABwAAAAgAAAAJAAAAAQAAAAoAAAAAAAAAuDMAAAcAAAALAAAADAAAAAIAAAANAAAAAAAAAMgzAAAHAAAADgAAAA8AAAADAAAAEAAAAP/////+/////f///8g2AAAANwAAIDcAAMg2AAAANwAAADcAACg3AAAANwAAyDYAAAA3AAAoNwAAADcAAMg2AAAANwAAADcAANgzAAAANwAAADcAAAA3AAAANwAAADcAANgzAAAANwAAADcAAAEAAAAAAAAAAgAAAEAGAACAPgAAAAAAAIgTAABAFgAAFAAAAEMuVVRGLTgAAAAAAAAAAAAAAAAAUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA+DMAAIg0AAAYNQAAGDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGwAAIB8AACAlAABfcIkA/wkvDwAAAABANgAAEQAAABIAAAATAAAAFAAAAAQAAAABAAAAAQAAAAEAAAAAAAAAaDYAABEAAAAVAAAAEwAAABQAAAAEAAAAAgAAAAIAAAACAAAAAAAAAHg2AAAWAAAAFwAAAAQAAAAAAAAAiDYAABYAAAAYAAAABAAAAAAAAAC4NgAAEQAAABkAAAATAAAAFAAAAAUAAAAAAAAAMDcAABEAAAAaAAAAEwAAABQAAAAEAAAAAwAAAAMAAAADAAAAAAAAAOg3AAAbAAAAHAAAAAAAAAAAOAAAHQAAAB4AAAABAAAABgAAAAQAAAAEAAAABQAAAAYAAAAHAAAABwAAAAgAAAAEAAAACAAAAAUAAAAAAAAACDgAAB8AAAAgAAAAAgAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAAsAAAAMAAAABgAAAAsAAAAHAAAACAAAAAAAAAAQOAAAIQAAACIAAAD4////+P///xA4AAAjAAAAJAAAAPRAAAAIQQAACAAAAAAAAAAoOAAAJQAAACYAAAD4////+P///yg4AAAnAAAAKAAAACRBAAA4QQAABAAAAAAAAABAOAAAKQAAACoAAAD8/////P///0A4AAArAAAALAAAAFRBAABoQQAABAAAAAAAAABYOAAALQAAAC4AAAD8/////P///1g4AAAvAAAAMAAAAIRBAACYQQAAAAAAAHA4AAAfAAAAMQAAAAMAAAAJAAAABQAAAAUAAAANAAAACgAAAAoAAAALAAAADAAAAAYAAAAMAAAACAAAAAAAAACAOAAAHQAAADIAAAAEAAAABgAAAAQAAAAEAAAADgAAAAYAAAAHAAAABwAAAAgAAAAEAAAADQAAAAkAAAAAAAAAkDgAAB8AAAAzAAAABQAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAA8AAAAQAAAACgAAAAsAAAAHAAAAAAAAAKA4AAAdAAAANAAAAAYAAAAGAAAABAAAAAQAAAAFAAAABgAAAAcAAAARAAAAEgAAAAsAAAAIAAAABQAAAAAAAACwOAAANQAAADYAAAA3AAAAAQAAAAYAAAAOAAAAAAAAANA4AAA4AAAAOQAAADcAAAACAAAABwAAAA8AAAAAAAAA4DgAADoAAAA7AAAANwAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAACA5AAA8AAAAPQAAADcAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAAAAAABYOQAAPgAAAD8AAAA3AAAAAwAAAAQAAAAXAAAABQAAABgAAAABAAAAAgAAAAYAAAAAAAAAmDkAAEAAAABBAAAANwAAAAcAAAAIAAAAGQAAAAkAAAAaAAAAAwAAAAQAAAAKAAAAAAAAANA5AABCAAAAQwAAADcAAAATAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAAA+P///9A5AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAAAAAAAg6AABEAAAARQAAADcAAAAbAAAAIAAAACEAAAAiAAAAIwAAACQAAAACAAAA+P///wg6AAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAAAAAAAAODoAAEYAAABHAAAANwAAAAEAAAAAAAAAYDoAAEgAAABJAAAANwAAAAIAAAAAAAAAgDoAAEoAAABLAAAANwAAACMAAAAkAAAABwAAAAgAAAAJAAAACgAAACUAAAALAAAADAAAAAAAAACoOgAATAAAAE0AAAA3AAAAJgAAACcAAAANAAAADgAAAA8AAAAQAAAAKAAAABEAAAASAAAAAAAAAMg6AABOAAAATwAAADcAAAApAAAAKgAAABMAAAAUAAAAFQAAABYAAAArAAAAFwAAABgAAAAAAAAA6DoAAFAAAABRAAAANwAAACwAAAAtAAAAGQAAABoAAAAbAAAAHAAAAC4AAAAdAAAAHgAAAAAAAAAIOwAAUgAAAFMAAAA3AAAAAwAAAAQAAAAAAAAAMDsAAFQAAABVAAAANwAAAAUAAAAGAAAAAAAAAFg7AABWAAAAVwAAADcAAAABAAAAJQAAAAAAAACAOwAAWAAAAFkAAAA3AAAAAgAAACYAAAAAAAAAqDsAAFoAAABbAAAANwAAABAAAAAGAAAAHwAAAAAAAADQOwAAXAAAAF0AAAA3AAAAEQAAAAcAAAAgAAAAAAAAACg8AABeAAAAXwAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAPA7AABeAAAAYAAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAFg8AABhAAAAYgAAADcAAAAFAAAABgAAAA0AAAAyAAAAMwAAAA4AAAA0AAAAAAAAAJg8AABjAAAAZAAAADcAAAAAAAAAqDwAAGUAAABmAAAANwAAAAwAAAASAAAADQAAABMAAAAOAAAAAwAAABQAAAAPAAAAAAAAAPA8AABnAAAAaAAAADcAAAA1AAAANgAAACEAAAAiAAAAIwAAAAAAAAAAPQAAaQAAAGoAAAA3AAAANwAAADgAAAAkAAAAJQAAACYAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAB0AAAAcgAAAHUAAABlAAAAAAAAAAAAAADAOAAAXgAAAGsAAAA3AAAAAAAAANA8AABeAAAAbAAAADcAAAAVAAAABAAAAAUAAAAGAAAADwAAABYAAAAQAAAAFwAAABEAAAAHAAAAGAAAABAAAAAAAAAAODwAAF4AAABtAAAANwAAAAcAAAAIAAAAEQAAADkAAAA6AAAAEgAAADsAAAAAAAAAeDwAAF4AAABuAAAANwAAAAkAAAAKAAAAEwAAADwAAAA9AAAAFAAAAD4AAAAAAAAAADwAAF4AAABvAAAANwAAAAMAAAAEAAAACwAAAC8AAAAwAAAADAAAADEAAAAAAAAAADoAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAAAAAAMDoAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABFcnJvcjogbGFiZWxpbmcgd29yayBvdmVyZmxvdy4KAFVua25vd24gb3IgdW5zdXBwb3J0ZWQgbGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgcmVxdWVzdGVkLiBTZXQgdG8gbWFudWFsLgoATGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgc2V0IHRvICVzLgoATUFOVUFMAEFVVE9fTUVESUFOAEFVVE9fT1RTVQBBVVRPX0FEQVBUSVZFAEFVVE9fQlJBQ0tFVElORwBFcnJvcjogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICglZCkgcmVxdWVzdGVkLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIG1hcmtlciBjb3VudHMgLVslM2Q6ICUzZF0gWyUzZDogJTNkXSBbJTNkOiAlM2RdKy4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgBtZWRpYW4AT3RzdQBBdXRvIHRocmVzaG9sZCAoJXMpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAD8/PyAxCgA/Pz8gMgoAPz8/IDMKAEVycm9yOiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARXJyb3I6IGNhbid0IGxvYWQgcGF0dGVybiBmcm9tIE5VTEwgYnVmZmVyLgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgAgCQoNAFBhdHRlcm4gRGF0YSByZWFkIGVycm9yISEKAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgbGVuZ3RoLgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAEVycm9yICglZCk6IHVuYWJsZSB0byByZWFkIGZyb20gZmlsZS4AYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAEVycm9yOiBpY3BHZXRKX1VfWGMARXJyb3IgMTogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDY6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNzogaWNwR2V0SW5pdFh3MlhjCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogRmlyc3QgbGluZSBtdXN0IGJlIG51bWJlciBvZiBtYXJrZXIgY29uZmlncyB0byByZWFkLgoAJWxsdSVjAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGRpcmVjdG9yeSBuYW1lLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gbG9hZCBwYXR0ZXJuICclcycuCgAlbGYARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IEZpcnN0IGxpbmUgbXVzdCBiZSBwYXR0ZXJuIHdpZHRoLgoAJWxmICVsZiAlbGYgJWxmACVmICVmAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJywgbWFya2VyIGRlZmluaXRpb24gJTNkOiBMaW5lcyAyIC0gNCBtdXN0IGJlIG1hcmtlciB0cmFuc2Zvcm0uCgBbJXNdIABkZWJ1ZwBpbmZvAHdhcm5pbmcAZXJyb3IAJXMlcwAuaXNldABFcnJvcjogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciByZWFkaW5nIGltYWdlU2V0LgoASW1hZ2VzZXQgY29udGFpbnMgJWQgaW1hZ2VzLgoARmFsbGluZyBiYWNrIHRvIHJlYWRpbmcgJyVzJXMnIGluIEFSVG9vbEtpdCB2NC54IGZvcm1hdC4KAEVycm9yIHJlYWRpbmcgSlBFRyBmaWxlLgoARXJyb3IgcmVhZGluZyBKUEVHIGZpbGUgaGVhZGVyLgoAJWYARmlsZSBvcGVuIGVycm9yLiAlcwoAUmVhZCBlcnJvciEhCgByAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAAJXMlcwoAJWQACiMjIyBTdXJmYWNlIE5vLiVkICMjIwoAJXMAICBSZWFkIEltYWdlU2V0LgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5pc2V0Jy4KACAgICBlbmQuCgAgIFJlYWQgRmVhdHVyZVNldC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuZnNldCcuCgAgIFJlYWQgTWFya2VyU2V0LgoAbXJrAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMubXJrJy4KACVmICVmICVmICVmAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAGpwZwBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0cjEvcmVmRGF0YVNldFB0cjIuCgBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0ci4KAHJiAGtwbUxvYWRSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldFB0ci4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciBsb2FkaW5nIEtQTSBkYXRhOiBlcnJvciByZWFkaW5nIGRhdGEuCgBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiBOVUxMIGtwbUhhbmRsZS9yZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiByZWZEYXRhU2V0LgoAcG9pbnRzLSVkCgBrcG1NYXRjaGluZygpOiBOVUxMIGtwbUhhbmRsZS9pbkltYWdlTHVtYS4KAFBhZ2VbJWRdICBwcmU6JTNkLCBhZnQ6JTNkLCBlcnJvciA9ICVmCgAlcy4lcwBBc3NlcnRpb24gYHB5cmFtaWQtPnNpemUoKSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmNwcABQeXJhbWlkIGlzIG5vdCBhbGxvY2F0ZWQAT2N0YXZlIG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBtSW1hZ2VzLnNpemUoKSA+IDBgIGZhaWxlZCBpbiAATGFwbGFjaWFuIHB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZABBc3NlcnRpb24gYHB5cmFtaWQtPm51bU9jdGF2ZXMoKSA+IDBgIGZhaWxlZCBpbiAAUHlyYW1pZCBkb2VzIG5vdCBjb250YWluIGFueSBsZXZlbHMAQXNzZXJ0aW9uIGBkeW5hbWljX2Nhc3Q8Y29uc3QgQmlub21pYWxQeXJhbWlkMzJmKj4ocHlyYW1pZClgIGZhaWxlZCBpbiAAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAEFzc2VydGlvbiBgaW0xLnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBc3NlcnRpb24gYGltMS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgd2lkdGgAQXNzZXJ0aW9uIGBkLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodABBc3NlcnRpb24gYGltMS53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHJvdyA8IG1IZWlnaHRgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2ZyYW1ld29yay9pbWFnZS5oAHJvdyBvdXQgb2YgYm91bmRzAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQBEb0cgUHlyYW1pZABOb24tbWF4IHN1cHByZXNzaW9uAFN1YnBpeGVsAHBydW5lRmVhdHVyZXMARmluZCBPcmllbnRhdGlvbnMAQXNzZXJ0aW9uIGBtQnVja2V0cy5zaXplKCkgPT0gbU51bUJ1Y2tldHNYYCBmYWlsZWQgaW4gAEJ1Y2tldHMgYXJlIG5vdCBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBtQnVja2V0c1swXS5zaXplKCkgPT0gbU51bUJ1Y2tldHNZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUZlYXR1cmVQb2ludHMuc2l6ZSgpIDw9IG1NYXhOdW1GZWF0dXJlUG9pbnRzYCBmYWlsZWQgaW4gAFRvbyBtYW55IGZlYXR1cmUgcG9pbnRzAEFzc2VydGlvbiBgYnVja2V0WzBdLmZpcnN0ID49IGJ1Y2tldFtuXS5maXJzdGAgZmFpbGVkIGluIABudGhfZWxlbWVudCBmYWlsZWQAQXNzZXJ0aW9uIGBrcC5zY2FsZSA8IG1MYXBsYWNpYW5QeXJhbWlkLm51bVNjYWxlUGVyT2N0YXZlKClgIGZhaWxlZCBpbiAARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBga3Auc2NvcmUgPT0gbGFwMS5nZXQ8ZmxvYXQ+KHkpW3hdYCBmYWlsZWQgaW4gAFNjb3JlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIERvRyBpbWFnZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMS5oZWlnaHQoKSA9PSBsYXAyLmhlaWdodCgpYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvRG9HX3NjYWxlX2ludmFyaWFudF9kZXRlY3Rvci5oAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKSkgJiYgKGxhcDEud2lkdGgoKSA9PSBsYXAyLndpZHRoKCkpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAHggb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIABJbWFnZSBkaW1lbnNpb25zIGluY29uc2lzdGVudABBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDIud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGxhcDAuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvaW50ZXJwb2xhdGUuaABmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgaW0ud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB4X2Rpdl8yLTAuNWYgPj0gMGAgZmFpbGVkIGluIAB4X2Rpdl8yIG91dCBvZiBib3VuZHMgb3V0IG9mIGJvdW5kcyBmb3IgaW50ZXJwb2xhdGlvbgBBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAEFzc2VydGlvbiBgeF9kaXZfMiswLjVmIDwgbGFwMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeV9kaXZfMiswLjVmIDwgbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMS5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPCBtSW1hZ2VzLnNpemUoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgcmFuZ2UATjZ2aXNpb24xOEJpbm9taWFsUHlyYW1pZDMyZkUAQXNzZXJ0aW9uIGB3aWR0aCA+PSA1YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5jcHAASW1hZ2UgaXMgdG9vIHNtYWxsAEFzc2VydGlvbiBgaGVpZ2h0ID49IDVgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAQXNzZXJ0aW9uIGBpbWFnZS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBoYXZlIDEgY2hhbm5lbABBc3NlcnRpb24gYG1QeXJhbWlkLnNpemUoKSA9PSBtTnVtT2N0YXZlcyptTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQAQXNzZXJ0aW9uIGBpbWFnZS53aWR0aCgpID09IG1QeXJhbWlkWzBdLndpZHRoKClgIGZhaWxlZCBpbiAASW1hZ2Ugb2Ygd3Jvbmcgc2l6ZSBmb3IgcHlyYW1pZABBc3NlcnRpb24gYGltYWdlLmhlaWdodCgpID09IG1QeXJhbWlkWzBdLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAARGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIGEgZmxvYXQAVW5rbm93biBpbWFnZSB0eXBlAFVuc3VwcG9ydGVkIGltYWdlIHR5cGUATjZ2aXNpb245RXhjZXB0aW9uRQBBc3NlcnRpb24gYGltLndpZHRoKCkgPT0gaW0uc3RlcCgpL3NpemVvZihmbG9hdClgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmNwcABTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEFzc2VydGlvbiBgeCA+PSAwYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHggPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS53aWR0aCgpYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAHkgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHkgPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS5oZWlnaHQoKWAgZmFpbGVkIGluIAB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAQXNzZXJ0aW9uIGBnLmNoYW5uZWxzKCkgPT0gMmAgZmFpbGVkIGluIABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBtYXhfaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABNYXhpbXVtIGJpbiBzaG91bGQgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgASGlzdG9ncmFtIHBvaW50ZXIgaXMgTlVMTABBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYG1hZ25pdHVkZSA+PSAwYCBmYWlsZWQgaW4gAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAQXNzZXJ0aW9uIGBudW1fYmlucyA+PSAwYCBmYWlsZWQgaW4gAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gAHcxIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAHcyIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBiMSA+PSAwICYmIGIxIDwgbnVtX2JpbnNgIGZhaWxlZCBpbiAAYjEgYmluIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGIyID49IDAgJiYgYjIgPCBudW1fYmluc2AgZmFpbGVkIGluIABiMiBiaW4gaW5kZXggb3V0IG9mIHJhbmdlAElEIGFscmVhZHkgZXhpc3RzAEJ1aWxkIFB5cmFtaWQARXh0cmFjdCBGZWF0dXJlcwBBc3NlcnRpb24gYGFzc2lnbm1lbnQuc2l6ZSgpID09IG51bV9pbmRpY2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9iaW5hcnlfaGllcmFyY2hpY2FsX2NsdXN0ZXJpbmcuaABBc3NpZ25tZW50IHNpemUgd3JvbmcAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2lnbm1lbnQgaXMgaW52YWxpZABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABBc3NpZ25tZW50IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpdC0+c2Vjb25kLnNpemUoKSAhPSAwYCBmYWlsZWQgaW4gAENsdXN0ZXIgbXVzdCBoYXZlIGF0bGVhc2V0IDEgZmVhdHVyZQBBc3NlcnRpb24gYG1LID09IG1DZW50ZXJzLnNpemUoKWAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMva21lZG9pZHMuaABrIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgY2VudGVycwBBc3NlcnRpb24gYG51bV9mZWF0dXJlcyA+IDBgIGZhaWxlZCBpbiAATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA8PSBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA+PSBtS2AgZmFpbGVkIGluIABOb3QgZW5vdWdoIGZlYXR1cmVzAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBudW1fY2VudGVycyA+IDBgIGZhaWxlZCBpbiAAVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAxIGNlbnRlcgAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAQXNzZXJ0aW9uIGBkZXRlY3RvcmAgZmFpbGVkIGluIABEZXRlY3RvciBpcyBOVUxMAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQeXJhbWlkIGlzIGVtcHR5AEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSU42dmlzaW9uOEtleWZyYW1lSUxpOTZFRUVFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAWyVzXSBbJXNdIFslc10gOiBGb3VuZCAlZCBmZWF0dXJlcyBpbiBxdWVyeQBib29sIHZpc2lvbjo6VmlzdWFsRGF0YWJhc2U8dmlzaW9uOjpGUkVBS0V4dHJhY3RvciwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIHZpc2lvbjo6QmluYXJ5RmVhdHVyZU1hdGNoZXI8OTY+ID46OnF1ZXJ5KGNvbnN0IHZpc2lvbjo6R2F1c3NpYW5TY2FsZVNwYWNlUHlyYW1pZCAqKSBbRkVBVFVSRV9FWFRSQUNUT1IgPSB2aXNpb246OkZSRUFLRXh0cmFjdG9yLCBTVE9SRSA9IHZpc2lvbjo6QmluYXJ5RmVhdHVyZVN0b3JlLCBNQVRDSEVSID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj5dAEZpbmQgTWF0Y2hlcyAoMSkASG91Z2ggVm90aW5nICgxKQBGaW5kIEhvdWdoIE1hdGNoZXMgKDEpAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkARmluZCBNYXRjaGVzICgyKQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikARXN0aW1hdGUgSG9tb2dyYXBoeSAoMikARmluZCBJbmxpZXJzICgyKQBBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2ZlYXR1cmVfbWF0Y2hlci1pbmxpbmUuaABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBBc3NlcnRpb24gYGJlc3RfaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKWAgZmFpbGVkIGluIABTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAQXNzZXJ0aW9uIGBoeXAuc2l6ZSgpID49IDkqbWF4X251bV9oeXBvdGhlc2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9ob21vZ3JhcGh5X2VzdGltYXRpb24vcm9idXN0X2hvbW9ncmFwaHkuaABoeXAgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIDkqbWF4X251bV9oeXBvdGhlc2VzAEFzc2VydGlvbiBgdG1wX2kuc2l6ZSgpID49IG51bV9wb2ludHNgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABoeXBfY29zdHMgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG1heF9udW1faHlwb3RoZXNlcwBBc3NlcnRpb24gYG4gPD0gaW5fbWF0Y2hlcy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgbVJvb3QuZ2V0KClgIGZhaWxlZCBpbiAAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAATWluaW11bSBpbmRleCBub3Qgc2V0AEFzc2VydGlvbiBgeCA+PSBtTWluWGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaAB4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYHggPCBtTWF4WGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAeSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGB5IDwgbU1heFlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA+IC1QSWAgZmFpbGVkIGluIABhbmdsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABzY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBzY2FsZSA8IG1NYXhTY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGluZGV4ID49IDBgIGZhaWxlZCBpbiAAaW5kZXggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAGJpblggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA8IG1OdW1YQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblkgPj0gMGAgZmFpbGVkIGluIABiaW5ZIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpblkgPCBtTnVtWUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblNjYWxlID49IDBgIGZhaWxlZCBpbiAAYmluU2NhbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2l6ZSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcABzaXplIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VXaWR0aCA+IDBgIGZhaWxlZCBpbiAAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1SZWZJbWFnZUhlaWdodCA+IDBgIGZhaWxlZCBpbiAAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBuID4gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvdXRpbHMvcGFydGlhbF9zb3J0LmgAbiBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgcHlyYW1pZGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZnJlYWsuaABQeXJhbWlkIGlzIE5VTEwAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIABGZWF0dXJlIHN0b3JlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBudW1fcG9pbnRzID09IHBvaW50cy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHNhbWUgc2l6ZQBBc3NlcnRpb24gYG9jdGF2ZSA+PSAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAE9jdGF2ZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABTY2FsZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlACVtLSVkLSVZLSVILSVNLSVTAEFzc2VydGlvbiBgd2lkdGggPiAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAFdpZHRoIGNhbm5vdCBiZSB6ZXJvAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABIZWlnaHQgY2Fubm90IGJlIHplcm8AQXNzZXJ0aW9uIGBzdGVwID49IHdpZHRoYCBmYWlsZWQgaW4gAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAEFzc2VydGlvbiBgY2hhbm5lbHMgPiAwYCBmYWlsZWQgaW4gAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwBBc3NlcnRpb24gYG1EYXRhLmdldCgpYCBmYWlsZWQgaW4gAERhdGEgcG9pbnRlciBpcyBOVUxMAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSWhFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQaE5TXzE0ZGVmYXVsdF9kZWxldGVJaEVFTlNfOWFsbG9jYXRvckloRUVFRQBJbnZhbGlkIGltYWdlIHR5cGUAMTZOdWxsQXJyYXlEZWxldGVySWhFAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQBBc3NlcnRpb24gYG1TdGFydFRpbWUgPj0gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAIGxpbmUgADogAENsb2NrIGhhcyBub3QgYmVlbiBzdGFydGVkAEFzc2VydGlvbiBgbVN0b3BUaW1lID49IDBgIGZhaWxlZCBpbiAAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMAIElORk8gIAB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBzZXR1cAB0ZWFyZG93bgBzZXR1cEFSMgBfYWRkTWFya2VyAF9hZGRNdWx0aU1hcmtlcgBfYWRkTkZUTWFya2VyAGdldE11bHRpTWFya2VyTnVtAGdldE11bHRpTWFya2VyQ291bnQAX2xvYWRDYW1lcmEAc2V0TWFya2VySW5mb0RpcgBzZXRNYXJrZXJJbmZvVmVydGV4AGdldFRyYW5zTWF0U3F1YXJlAGdldFRyYW5zTWF0U3F1YXJlQ29udABnZXRUcmFuc01hdE11bHRpU3F1YXJlAGdldFRyYW5zTWF0TXVsdGlTcXVhcmVSb2J1c3QAZGV0ZWN0TWFya2VyAGdldE1hcmtlck51bQBkZXRlY3RORlRNYXJrZXIAZ2V0TXVsdGlFYWNoTWFya2VyAGdldE1hcmtlcgBnZXRORlRNYXJrZXIAc2V0RGVidWdNb2RlAGdldERlYnVnTW9kZQBnZXRQcm9jZXNzaW5nSW1hZ2UAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldFRocmVzaG9sZABnZXRUaHJlc2hvbGQAc2V0UGF0dGVybkRldGVjdGlvbk1vZGUAZ2V0UGF0dGVybkRldGVjdGlvbk1vZGUAc2V0UGF0dFJhdGlvAGdldFBhdHRSYXRpbwBzZXRNYXRyaXhDb2RlVHlwZQBnZXRNYXRyaXhDb2RlVHlwZQBzZXRMYWJlbGluZ01vZGUAZ2V0TGFiZWxpbmdNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBFUlJPUl9BUkNPTlRST0xMRVJfTk9UX0ZPVU5EAEVSUk9SX01VTFRJTUFSS0VSX05PVF9GT1VORABFUlJPUl9NQVJLRVJfSU5ERVhfT1VUX09GX0JPVU5EUwBBUl9ERUJVR19ESVNBQkxFAEFSX0RFQlVHX0VOQUJMRQBBUl9ERUZBVUxUX0RFQlVHX01PREUAQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAEFSX0xBQkVMSU5HX0JMQUNLX1JFR0lPTgBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfSU1BR0VfUFJPQ19GUkFNRV9JTUFHRQBBUl9JTUFHRV9QUk9DX0ZJRUxEX0lNQUdFAEFSX0RFRkFVTFRfSU1BR0VfUFJPQ19NT0RFAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SAEFSX1RFTVBMQVRFX01BVENISU5HX01PTk8AQVJfTUFUUklYX0NPREVfREVURUNUSU9OAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0RFRkFVTFRfUEFUVEVSTl9ERVRFQ1RJT05fTU9ERQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZAEFSX1VTRV9UUkFDS0lOR19ISVNUT1JZX1YyAEFSX0RFRkFVTFRfTUFSS0VSX0VYVFJBQ1RJT05fTU9ERQBBUl9NQVhfTE9PUF9DT1VOVABBUl9MT09QX0JSRUFLX1RIUkVTSABBUl9MT0dfTEVWRUxfREVCVUcAQVJfTE9HX0xFVkVMX0lORk8AQVJfTE9HX0xFVkVMX1dBUk4AQVJfTE9HX0xFVkVMX0VSUk9SAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9NQVRSSVhfQ09ERV8zeDMAQVJfTUFUUklYX0NPREVfM3gzX0hBTU1JTkc2MwBBUl9NQVRSSVhfQ09ERV8zeDNfUEFSSVRZNjUAQVJfTUFUUklYX0NPREVfNHg0AEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfNV81AEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX01BTlVBTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX09UU1UAQVJfTEFCRUxJTkdfVEhSRVNIX01PREVfQVVUT19BREFQVElWRQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTk9ORQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUEFUVEVSTl9FWFRSQUNUSU9OAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9DT05UUkFTVABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfRURDX0ZBSUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1IAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX0hFVVJJU1RJQ19UUk9VQkxFU09NRV9NQVRSSVhfQ09ERVMAYWxsb2NhdG9yPFQ+OjphbGxvY2F0ZShzaXplX3QgbikgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZQBJbWFnZSBwcm9jLiBtb2RlIHNldCB0byAlZC4KAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgB2aWlmAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAFRocmVzaG9sZCBzZXQgdG8gJWQKAHZpaWkAVGhyZXNob2xkIG1vZGUgc2V0IHRvICVkCgBkaWkAdmlpZABpaQB2aWkAb24uAG9mZi4ARGVidWcgbW9kZSBzZXQgdG8gJXMKAFRyYWNraW5nIGxvc3QuICVkCgBUcmFja2VkIHBhZ2UgJWQgKG1heCAlZCkuCgB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAwOyBpZiAoIWFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdKSB7IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdID0gKHsgaWQ6IDAsIGVycm9yOiAtMSwgZm91bmQ6IDAsIHBvc2U6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSB9KTsgfSB2YXIgbWFya2VySW5mbyA9IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdOyBtYXJrZXJJbmZvWyJpZCJdID0gJGFbaSsrXTsgbWFya2VySW5mb1siZXJyb3IiXSA9ICRhW2krK107IG1hcmtlckluZm9bImZvdW5kIl0gPSAxOyBtYXJrZXJJbmZvWyJwb3NlIl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bM10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bN10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sicG9zZSJdWzExXSA9ICRhW2krK107IH0AeyB2YXIgJGEgPSBhcmd1bWVudHM7IHZhciBpID0gMDsgaWYgKCFhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSA9ICh7IGlkOiAwLCBlcnJvcjogLTEsIGZvdW5kOiAwLCBwb3NlOiBbMCwwLDAsMCwgMCwwLDAsMCwgMCwwLDAsMF0gfSk7IH0gdmFyIG1hcmtlckluZm8gPSBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXTsgbWFya2VySW5mb1siaWQiXSA9ICRhW2krK107IG1hcmtlckluZm9bImVycm9yIl0gPSAtMTsgbWFya2VySW5mb1siZm91bmQiXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVswXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsyXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVszXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs0XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs1XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs2XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs3XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs4XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs5XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxMF0gPSAwOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTFdID0gMDsgfQB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAxMjsgaWYgKCFhcnRvb2xraXRbIm1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIm1hcmtlckluZm8iXSA9ICh7IHBvczogWzAsMF0sIGxpbmU6IFtbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdXSwgdmVydGV4OiBbWzAsMF0sIFswLDBdLCBbMCwwXSwgWzAsMF1dIH0pOyB9IHZhciBtYXJrZXJJbmZvID0gYXJ0b29sa2l0WyJtYXJrZXJJbmZvIl07IG1hcmtlckluZm9bImFyZWEiXSA9ICQwOyBtYXJrZXJJbmZvWyJpZCJdID0gJDE7IG1hcmtlckluZm9bImlkUGF0dCJdID0gJDI7IG1hcmtlckluZm9bImlkTWF0cml4Il0gPSAkMzsgbWFya2VySW5mb1siZGlyIl0gPSAkNDsgbWFya2VySW5mb1siZGlyUGF0dCJdID0gJDU7IG1hcmtlckluZm9bImRpck1hdHJpeCJdID0gJDY7IG1hcmtlckluZm9bImNmIl0gPSAkNzsgbWFya2VySW5mb1siY2ZQYXR0Il0gPSAkODsgbWFya2VySW5mb1siY2ZNYXRyaXgiXSA9ICQ5OyBtYXJrZXJJbmZvWyJwb3MiXVswXSA9ICQxMDsgbWFya2VySW5mb1sicG9zIl1bMV0gPSAkMTE7IG1hcmtlckluZm9bImxpbmUiXVswXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzBdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMF1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzFdWzFdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzNdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bM11bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJlcnJvckNvcnJlY3RlZCJdID0gJGFbaSsrXTsgfQB7IGlmICghYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0pIHsgYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0gPSAoe30pOyB9IHZhciBtdWx0aUVhY2hNYXJrZXIgPSBhcnRvb2xraXRbIm11bHRpRWFjaE1hcmtlckluZm8iXTsgbXVsdGlFYWNoTWFya2VyWyd2aXNpYmxlJ10gPSAkMDsgbXVsdGlFYWNoTWFya2VyWydwYXR0SWQnXSA9ICQxOyBtdWx0aUVhY2hNYXJrZXJbJ3BhdHRUeXBlJ10gPSAkMjsgbXVsdGlFYWNoTWFya2VyWyd3aWR0aCddID0gJDM7IH0AaWlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUAbG9hZENhbWVyYSgpOiBFcnJvciBsb2FkaW5nIHBhcmFtZXRlciBmaWxlICVzIGZvciBjYW1lcmEuCgBpaWlpAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgTkZUIG1hcmtlci4KAFJlYWRpbmcgJXMuZnNldDMKAGZzZXQzAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAEVycm9yOiBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQKAEVycm9yOiBrcG1NZXJnZVJlZkRhdGFTZXQKACAgRG9uZS4KAFJlYWRpbmcgJXMuZnNldAoAZnNldABFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBFcnJvcjoga3BtU2V0UmVmRGF0YVNldAoATG9hZGluZyBvZiBORlQgZGF0YSBjb21wbGV0ZS4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBjb25maWcgZGF0YSBsb2FkIGVycm9yICEhCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAGxvYWRNYXJrZXIoKTogRXJyb3IgbG9hZGluZyBwYXR0ZXJuIGZpbGUgJXMuCgBFcnJvcjogYXIyQ3JlYXRlSGFuZGxlLgoAaWlpaWkAc2V0dXAoKTogRXJyb3I6IGFyUGF0dENyZWF0ZUhhbmRsZS4KAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAeyBpZiAoIWFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXSkgeyBhcnRvb2xraXRbImZyYW1lTWFsbG9jIl0gPSAoe30pOyB9IHZhciBmcmFtZU1hbGxvYyA9IGFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXTsgZnJhbWVNYWxsb2NbImZyYW1lcG9pbnRlciJdID0gJDE7IGZyYW1lTWFsbG9jWyJmcmFtZXNpemUiXSA9ICQyOyBmcmFtZU1hbGxvY1siY2FtZXJhIl0gPSAkMzsgZnJhbWVNYWxsb2NbInRyYW5zZm9ybSJdID0gJDQ7IGZyYW1lTWFsbG9jWyJ2aWRlb0x1bWFQb2ludGVyIl0gPSAkNTsgfQAqKiogQ2FtZXJhIFBhcmFtZXRlciByZXNpemVkIGZyb20gJWQsICVkLiAqKioKAHNldENhbWVyYSgpOiBFcnJvcjogYXJQYXJhbUxUQ3JlYXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAT3V0IG9mIG1lbW9yeSEhCgBFcnJvcjogbWFsbG9jCgAjIyMgRmVhdHVyZSBjYW5kaWRhdGVzIGZvciB0cmFja2luZyBhcmUgb3ZlcmZsb3cuCgBCb2d1cyBtZXNzYWdlIGNvZGUgJWQAQUxJR05fVFlQRSBpcyB3cm9uZywgcGxlYXNlIGZpeABNQVhfQUxMT0NfQ0hVTksgaXMgd3JvbmcsIHBsZWFzZSBmaXgAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MASW52YWxpZCBjcm9wIHJlcXVlc3QARENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZQBEQ1Qgc2NhbGVkIGJsb2NrIHNpemUgJWR4JWQgbm90IHN1cHBvcnRlZABDb21wb25lbnQgaW5kZXggJWQ6IG1pc21hdGNoaW5nIHNhbXBsaW5nIHJhdGlvICVkOiVkLCAlZDolZCwgJWMAQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAEJvZ3VzIGlucHV0IGNvbG9yc3BhY2UAQm9ndXMgSlBFRyBjb2xvcnNwYWNlAEJvZ3VzIG1hcmtlciBsZW5ndGgAV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkAFNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkAEludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBJbnZhbGlkIHNjYW4gc2NyaXB0IGF0IGVudHJ5ICVkAEltcHJvcGVyIGNhbGwgdG8gSlBFRyBsaWJyYXJ5IGluIHN0YXRlICVkAEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQnVmZmVyIHBhc3NlZCB0byBKUEVHIGxpYnJhcnkgaXMgdG9vIHNtYWxsAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBDQ0lSNjAxIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQAVG9vIG1hbnkgY29sb3IgY29tcG9uZW50czogJWQsIG1heCAlZABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAQm9ndXMgREFDIGluZGV4ICVkAEJvZ3VzIERBQyB2YWx1ZSAweCV4AEJvZ3VzIERIVCBpbmRleCAlZABCb2d1cyBEUVQgaW5kZXggJWQARW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdyaXRlIHRvIEVNUyBmYWlsZWQARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4ASW5wdXQgZmlsZSByZWFkIGVycm9yAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8ARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE1pc3NpbmcgSHVmZm1hbiBjb2RlIHRhYmxlIGVudHJ5AE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMARW1wdHkgaW5wdXQgZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGlucHV0IGZpbGUAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YQBJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZQBOb3QgaW1wbGVtZW50ZWQgeWV0AFJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZQBBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UAUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AEluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpAENhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cwBDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMAQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAFVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4AEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPSSBtYXJrZXJzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMAVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4AFZpcnR1YWwgYXJyYXkgY29udHJvbGxlciBtZXNzZWQgdXAASW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24AUmVhZCBmcm9tIFhNUyBmYWlsZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nADljICAxNC1KYW4tMjAxOABDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHAEFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkAFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUARGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZABEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldQBGcmVlZCBFTVMgaGFuZGxlICV1AE9idGFpbmVkIEVNUyBoYW5kbGUgJXUARW5kIE9mIEltYWdlACAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZABKRklGIEFQUDAgbWFya2VyOiB2ZXJzaW9uICVkLiUwMmQsIGRlbnNpdHkgJWR4JWQgICVkAFdhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldQAgICAgd2l0aCAlZCB4ICVkIHRodW1ibmFpbCBpbWFnZQBNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldQBVbmV4cGVjdGVkIG1hcmtlciAweCUwMngAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AFF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMAUXVhbnRpemluZyB0byAlZCBjb2xvcnMAU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24AQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkAFJTVCVkAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAFN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZAAgICAgQ29tcG9uZW50ICVkOiAlZGh4JWR2IHE9JWQAU3RhcnQgb2YgSW1hZ2UAU3RhcnQgT2YgU2NhbjogJWQgY29tcG9uZW50cwAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZAAgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkAENsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcwBPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMASkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiBwYWxldHRlIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBGcmVlZCBYTVMgaGFuZGxlICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUAVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZABDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZABDb3JydXB0IEpQRUcgZGF0YTogJXUgZXh0cmFuZW91cyBieXRlcyBiZWZvcmUgbWFya2VyIDB4JTAyeABDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQAQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcwBTT1MATFNFAEpQRUdNRU0AJWxkJWMAJXMKAAABAgQHAwYFAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AaW5maW5pdHkAbmFuAExDX0FMTABMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIAHJ3YQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAYgBjAGgAYQBzAHQAaQBqAG0AZgBkAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAdm9pZABib29sAGNoYXIAc2lnbmVkIGNoYXIAdW5zaWduZWQgY2hhcgBzaG9ydAB1bnNpZ25lZCBzaG9ydABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBmbG9hdABkb3VibGUAc3RkOjpzdHJpbmcAc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4Ac3RkOjp3c3RyaW5nAGVtc2NyaXB0ZW46OnZhbABlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmcgZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0llRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjhpb3NfYmFzZUUATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQBOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQBOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQBOU3QzX18yN2NvbGxhdGVJY0VFAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQBOU3QzX18yN2NvbGxhdGVJd0VFACVwAEMATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFACVwAAAAAEwAbGwAJQAAAAAAbABOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAJUg6JU06JVMAJW0vJWQvJXkAJUk6JU06JVMgJXAAJWEgJWIgJWQgJUg6JU06JVMgJVkAQU0AUE0ASmFudWFyeQBGZWJydWFyeQBNYXJjaABBcHJpbABNYXkASnVuZQBKdWx5AEF1Z3VzdABTZXB0ZW1iZXIAT2N0b2JlcgBOb3ZlbWJlcgBEZWNlbWJlcgBKYW4ARmViAE1hcgBBcHIASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdAAlbS8lZC8leSVZLSVtLSVkJUk6JU06JVMgJXAlSDolTSVIOiVNOiVTJUg6JU06JVNOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAMDEyMzQ1Njc4OQAlTGYATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAwMTIzNDU2Nzg5AE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAJS4wTGYATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQBOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAE5TdDNfXzI4bWVzc2FnZXNJY0VFAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAE5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUUATlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjZsb2NhbGU1X19pbXBFAE5TdDNfXzI1Y3R5cGVJY0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAE5TdDNfXzI1Y3R5cGVJd0VFAGZhbHNlAHRydWUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE0X19zaGFyZWRfY291bnRFAE5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRF";var tempDoublePtr=57872;function demangle(func){return func}function demangleAll(text){var regex=/\b__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";ENV["_"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=value;return value}function ___map_file(pathname,size){___setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(fd){if(fd===undefined)fd=SYSCALLS.get();var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_read(){return _fd_read.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function __embind_register_constant(name,type,value){name=readLatin1String(name);whenDependentTypesAreResolved([],[type],function(type){type=type[0];Module[name]=type["fromWireType"](value);return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;iLIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=57728;var ___tm_timezone=(stringToUTF8("GMT",57776,4),57776);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Yb[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)==0?2:e,f);return}function nB(a){a=a|0;return ((oB(a)|0)^1)&1|0}function oB(b){b=b|0;return (a[b>>0]|0)!=0|0}function pB(a){a=a|0;c[a>>2]=0;qB(a);return}function qB(a){a=a|0;c[a>>2]=c[a>>2]|1;return}function rB(a){a=a|0;c[a>>2]=0;return}function sB(){return 0}function tB(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=FO(b)|0;if(a|0)break;a=sB()|0;if(!a){a=0;break}Rb[a&1]()}return a|0}function uB(a){a=a|0;return tB(a)|0}function vB(a){a=a|0;SA(a);return}function wB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=c[d>>2];a=Jb[c[(c[a>>2]|0)+16>>2]&63](a,b,e)|0;if(a)c[d>>2]=c[e>>2];zb=f;return a&1|0}function xB(a){a=a|0;if(!a)a=0;else a=(NA(a,13904,13992,0)|0)!=0&1;return a|0}function yB(){return 0}function zB(){N(55684);return}function AB(){return 55668}function BB(){return 55676}function CB(){return 55680}function DB(){return 55684}function EB(){FB();return}function FB(){GB(57670);return}function GB(a){a=a|0;var b=0;b=zb;zb=zb+16|0;c[b>>2]=a;HB();zb=b;return}function HB(){pa(IB()|0,47294);ga(JB()|0,47299,1,1,0);KB(47304);LB(47309);MB(47321);NB(47335);OB(47341);PB(47356);QB(47360);RB(47373);SB(47378);TB(47392);UB(47398);na(VB()|0,47405);na(WB()|0,47417);oa(XB()|0,4,47450);ia(YB()|0,47463);ZB(47479);_B(47509);$B(47546);aC(47585);bC(47616);cC(47656);dC(47685);eC(47723);fC(47753);_B(47792);$B(47824);aC(47857);bC(47890);cC(47924);dC(47957);gC(47991);hC(48022);iC(48054);return}function IB(){return sD()|0}function JB(){return rD()|0}function KB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=pD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function LB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=nD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function MB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=lD()|0;la(a|0,c[d>>2]|0,1,0,255);zb=b;return}function NB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=jD()|0;la(a|0,c[d>>2]|0,2,-32768<<16>>16|0,32767<<16>>16|0);zb=b;return}function OB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=hD()|0;la(a|0,c[d>>2]|0,2,0,65535);zb=b;return}function PB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=fD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function QB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=dD()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function RB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=bD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function SB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=$C()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function TB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=ZC()|0;ja(a|0,c[d>>2]|0,4);zb=b;return}function UB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=XC()|0;ja(a|0,c[d>>2]|0,8);zb=b;return}function VB(){return WC()|0}function WB(){return VC()|0}function XB(){return UC()|0}function YB(){return TC()|0}function ZB(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=QC()|0;a=RC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function _B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=NC()|0;a=OC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function $B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=KC()|0;a=LC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function aC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=HC()|0;a=IC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function bC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=EC()|0;a=FC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function cC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=BC()|0;a=CC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function dC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=yC()|0;a=zC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function eC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=vC()|0;a=wC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function fC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=sC()|0;a=tC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function gC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=pC()|0;a=qC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function hC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=mC()|0;a=nC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function iC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=jC()|0;a=kC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function jC(){return lC()|0}function kC(){return 7}function lC(){return 14144}function mC(){return oC()|0}function nC(){return 7}function oC(){return 14152}function pC(){return rC()|0}function qC(){return 6}function rC(){return 14160}function sC(){return uC()|0}function tC(){return 5}function uC(){return 14168}function vC(){return xC()|0}function wC(){return 4}function xC(){return 14176}function yC(){return AC()|0}function zC(){return 5}function AC(){return 14184}function BC(){return DC()|0}function CC(){return 4}function DC(){return 14192}function EC(){return GC()|0}function FC(){return 3}function GC(){return 14200}function HC(){return JC()|0}function IC(){return 2}function JC(){return 14208}function KC(){return MC()|0}function LC(){return 1}function MC(){return 14216}function NC(){return PC()|0}function OC(){return 0}function PC(){return 14224}function QC(){return SC()|0}function RC(){return 0}function SC(){return 14232}function TC(){return 14240}function UC(){return 14248}function VC(){return 14272}function WC(){return 13272}function XC(){return YC()|0}function YC(){return 14120}function ZC(){return _C()|0}function _C(){return 14112}function $C(){return aD()|0}function aD(){return 14104}function bD(){return cD()|0}function cD(){return 14096}function dD(){return eD()|0}function eD(){return 14088}function fD(){return gD()|0}function gD(){return 14080}function hD(){return iD()|0}function iD(){return 14072}function jD(){return kD()|0}function kD(){return 14064}function lD(){return mD()|0}function mD(){return 14048}function nD(){return oD()|0}function oD(){return 14056}function pD(){return qD()|0}function qD(){return 14040}function rD(){return 14032}function sD(){return 14024}function tD(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b+4|0;e=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=jz(c[(c[d>>2]|0)+4>>2]|0)|0;zb=b;return a|0}function uD(a){a=a|0;return 0}function vD(a){a=a|0;return 0}function wD(a,b){a=a|0;b=b|0;return 0}function xD(a){a=a|0;return 0}function yD(){return (zD()|0)>0|0}function zD(){return yB()|0}function AD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k;i=k+8|0;e=k+4|0;c[i>>2]=a;do if(a>>>0>=212){h=(a>>>0)/210|0;b=h*210|0;c[e>>2]=a-b;a=0;g=(BD(12736,12928,e,d)|0)-12736>>2;a:while(1){f=(c[12736+(g<<2)>>2]|0)+b|0;b=5;while(1){if(b>>>0>=47){j=6;break}d=c[12544+(b<<2)>>2]|0;e=(f>>>0)/(d>>>0)|0;if(e>>>0>>0){j=107;break a}if((f|0)==(B(e,d)|0))break;else b=b+1|0}b:do if((j|0)==6){j=0;e=211;c:while(1){b=(f>>>0)/(e>>>0)|0;do if(b>>>0>=e>>>0)if((f|0)!=(B(b,e)|0)){b=e+10|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+12|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+16|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+18|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+22|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+28|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)==(B(d,b)|0))d=9;else{b=e+30|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+36|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+40|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+42|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+46|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+52|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+58|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+60|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+66|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+70|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+72|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+78|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+82|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+88|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+96|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+100|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+102|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+106|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+108|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+112|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+120|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+126|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+130|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+136|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+138|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+142|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+148|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+150|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+156|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+162|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+166|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+168|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+172|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+178|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+180|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+186|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+190|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+192|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+196|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+198|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+208|0;d=(f>>>0)/(b>>>0)|0;l=d>>>0>>0;d=(f|0)==(B(d,b)|0);b=l|d?b:e+210|0;d=l?1:d?9:0;a=l?f:a}else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else{b=e;d=9}else{b=e;d=1;a=f}while(0);switch(d&15){case 9:break b;case 0:{e=b;break}default:break c}}if(d){j=108;break a}}while(0);l=g+1|0;f=(l|0)==48;b=h+(f&1)|0;h=b;b=b*210|0;g=f?0:l}if((j|0)==107){c[i>>2]=f;a=f;break}else if((j|0)==108){c[i>>2]=f;break}}else{a=BD(12544,12736,i,d)|0;a=c[a>>2]|0}while(0);zb=k;return a|0}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[d>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=d>>>1;g=e+(b<<2)|0;a=(c[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function CD(a){a=a|0;DD(a);return}function DD(a){a=a|0;c[a>>2]=16480;ED(a,0);YF(a+28|0);GO(c[a+32>>2]|0);GO(c[a+36>>2]|0);GO(c[a+48>>2]|0);GO(c[a+60>>2]|0);return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+32|0;f=a+36|0;d=c[a+40>>2]|0;while(1){if(!d)break;g=d+-1|0;Wb[c[(c[e>>2]|0)+(g<<2)>>2]&3](b,a,c[(c[f>>2]|0)+(g<<2)>>2]|0);d=g}return}function FD(a){a=a|0;DD(a);SA(a);return}function GD(a){a=a|0;DD(a);return}function HD(a){a=a|0;c[a>>2]=16496;YF(a+4|0);return}function ID(a){a=a|0;HD(a);SA(a);return}function JD(a,b){a=a|0;b=b|0;return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function LD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function MD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function ND(a){a=a|0;return 0}function OD(a){a=a|0;return 0}function PD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;Wf()|0;i=b+12|0;j=b+16|0;h=0;while(1){if((h|0)>=(e|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f|0;k=e-h|0;g=(k|0)<(g|0)?k:g;VD(d,f,g)|0;c[i>>2]=(c[i>>2]|0)+g;d=d+g|0;f=g}else{f=Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((f|0)==-1)break;f=eg(f)|0;a[d>>0]=f;d=d+1|0;f=1}h=f+h|0}return h|0}function QD(a){a=a|0;return Wf()|0}function RD(b){b=b|0;var d=0;d=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;if((d|0)==(Wf()|0))b=Wf()|0;else{d=b+12|0;b=c[d>>2]|0;c[d>>2]=b+1;b=cg(a[b>>0]|0)|0}return b|0}function SD(a,b){a=a|0;b=b|0;return Wf()|0}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Wf()|0;j=b+24|0;k=b+28|0;f=0;while(1){if((f|0)>=(e|0))break;g=c[j>>2]|0;h=c[k>>2]|0;if(g>>>0>>0){h=h-g|0;l=e-f|0;h=(l|0)<(h|0)?l:h;VD(g,d,h)|0;c[j>>2]=(c[j>>2]|0)+h;d=d+h|0;f=h+f|0}else{h=c[(c[b>>2]|0)+52>>2]|0;l=cg(a[d>>0]|0)|0;if((Ib[h&63](b,l)|0)==(i|0))break;d=d+1|0;f=f+1|0}}return f|0}function UD(a,b){a=a|0;b=b|0;return Wf()|0}function VD(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)_O(a|0,b|0,c|0)|0;return a|0}function WD(a){a=a|0;c[a>>2]=16560;YF(a+4|0);return}function XD(a){a=a|0;WD(a);SA(a);return}function YD(a,b){a=a|0;b=b|0;return}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function _D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function $D(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function aE(a){a=a|0;return 0}function bE(a){a=a|0;return 0}function cE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;iE()|0;h=a+12|0;i=a+16|0;g=0;while(1){if((g|0)>=(d|0))break;e=c[h>>2]|0;f=c[i>>2]|0;if(e>>>0>>0){f=f-e>>2;j=d-g|0;f=(j|0)<(f|0)?j:f;kE(b,e,f)|0;c[h>>2]=(c[h>>2]|0)+(f<<2);b=b+(f<<2)|0;e=f}else{e=Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((e|0)==-1)break;e=lE(e)|0;c[b>>2]=e;b=b+4|0;e=1}g=e+g|0}return g|0}function dE(a){a=a|0;return iE()|0}function eE(a){a=a|0;var b=0;b=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(iE()|0))a=iE()|0;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=jE(c[a>>2]|0)|0}return a|0}function fE(a,b){a=a|0;b=b|0;return iE()|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=iE()|0;i=a+24|0;j=a+28|0;e=0;while(1){if((e|0)>=(d|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f>>2;k=d-e|0;g=(k|0)<(g|0)?k:g;kE(f,b,g)|0;c[i>>2]=(c[i>>2]|0)+(g<<2);b=b+(g<<2)|0;e=g+e|0}else{g=c[(c[a>>2]|0)+52>>2]|0;k=jE(c[b>>2]|0)|0;if((Ib[g&63](a,k)|0)==(h|0))break;b=b+4|0;e=e+1|0}}return e|0}function hE(a,b){a=a|0;b=b|0;return iE()|0}function iE(){return -1}function jE(a){a=a|0;return a|0}function kE(a,b,c){a=a|0;b=b|0;c=c|0;if(c)gz(a,b,c)|0;return a|0}function lE(a){a=a|0;return a|0}function mE(a){a=a|0;qE(a,16656);CD(a+8|0);return}function nE(a){a=a|0;mE(a);SA(a);return}function oE(a){a=a|0;mE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function pE(a){a=a|0;nE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function qE(a,b){a=a|0;b=b|0;return}function rE(a){a=a|0;vE(a,16704);GD(a+8|0);return}function sE(a){a=a|0;rE(a);SA(a);return}function tE(a){a=a|0;rE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function uE(a){a=a|0;sE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function vE(a,b){a=a|0;b=b|0;return}function wE(a){a=a|0;AE(a,16752);CD(a+4|0);return}function xE(a){a=a|0;wE(a);SA(a);return}function yE(a){a=a|0;wE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function zE(a){a=a|0;xE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function AE(a,b){a=a|0;b=b|0;return}function BE(a){a=a|0;FE(a,16800);GD(a+4|0);return}function CE(a){a=a|0;BE(a);SA(a);return}function DE(a){a=a|0;BE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function EE(a){a=a|0;CE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function FE(a,b){a=a|0;b=b|0;return}function GE(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[a+24>>2]|0)==0|b;return}function HE(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));YN(d);return}function IE(a,b){a=a|0;b=b|0;WN(a,b+28|0);return}function JE(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function KE(a){a=a|0;c[a>>2]=16496;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function LE(a){a=a|0;c[a>>2]=16560;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function ME(b){b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;if(c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0){NE(d,b);if(a[d>>0]|0?(f=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(f,c[f+16>>2]|1)}OE(d)}zb=e;return b|0}function NE(b,d){b=b|0;d=d|0;a[b>>0]=0;c[b+4>>2]=d;d=d+(c[(c[d>>2]|0)+-12>>2]|0)|0;if(!(c[d+16>>2]|0)){d=c[d+72>>2]|0;if(d|0)ME(d)|0;a[b>>0]=1}return}function OE(a){a=a|0;var b=0;a=a+4|0;b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;if((((c[b+24>>2]|0?(c[b+16>>2]|0)==0:0)?c[b+4>>2]&8192|0:0)?!(yD()|0):0)?(b=c[a>>2]|0,b=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(b,c[b+16>>2]|1)}return}function PE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;f=l+12|0;j=l+8|0;k=l;NE(k,b);if(a[k>>0]|0){IE(f,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);g=XF(f,56792)|0;YF(f);h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;i=c[h+24>>2]|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(f,h);m=XF(f,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(f);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;m=c[(c[g>>2]|0)+16>>2]|0;c[j>>2]=i;c[f>>2]=c[j>>2];if(!(Mb[m&31](g,f,h,e&255,d)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(k);zb=l;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;NE(i,b);do if(a[i>>0]|0){e=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0;f=e;if(e|0){g=f+24|0;h=c[g>>2]|0;if((h|0)==(c[f+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;d=cg(d)|0;d=Ib[h&63](f,d)|0}else{c[g>>2]=h+1;a[h>>0]=d;d=cg(d)|0}if(!(_f(d,Wf()|0)|0))break}h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(h,c[h+16>>2]|1)}while(0);OE(i);zb=j;return b|0}function RE(a){a=a|0;a=a+16|0;c[a>>2]=c[a>>2]|1;return}function SE(){UE();return}function TE(){return}function UE(){VE(0);return}function VE(a){a=a|0;var b=0,d=0;b=c[4002]|0;WE(56368,b,56424);c[13922]=16628;c[13924]=16648;c[13923]=0;HE(55696,56368);c[13942]=0;a=Wf()|0;c[13943]=a;XE(56432,b,56488);c[13944]=16676;c[13946]=16696;c[13945]=0;HE(55784,56432);c[13964]=0;b=iE()|0;c[13965]=b;b=c[4003]|0;YE(56496,b,56544);c[13966]=16724;c[13967]=16744;HE(55868,56496);c[13985]=0;a=Wf()|0;c[13986]=a;ZE(56552,b,56600);c[13987]=16772;c[13988]=16792;HE(55952,56552);c[14006]=0;b=iE()|0;c[14007]=b;b=c[4001]|0;YE(56608,b,56656);c[14008]=16724;c[14009]=16744;HE(56036,56608);c[14027]=0;a=Wf()|0;c[14028]=a;a=c[56032+(c[(c[14008]|0)+-12>>2]|0)+24>>2]|0;c[14050]=16724;c[14051]=16744;HE(56204,a);c[14069]=0;a=Wf()|0;c[14070]=a;ZE(56664,b,56712);c[14029]=16772;c[14030]=16792;HE(56120,56664);c[14048]=0;b=iE()|0;c[14049]=b;b=c[56116+(c[(c[14029]|0)+-12>>2]|0)+24>>2]|0;c[14071]=16772;c[14072]=16792;HE(56288,b);c[14090]=0;b=iE()|0;c[14091]=b;c[55688+(c[(c[13922]|0)+-12>>2]|0)+72>>2]=55864;c[55776+(c[(c[13944]|0)+-12>>2]|0)+72>>2]=55948;b=(c[14008]|0)+-12|0;a=56032+(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|8192;a=(c[14029]|0)+-12|0;d=56116+(c[a>>2]|0)+4|0;c[d>>2]=c[d>>2]|8192;c[56032+(c[b>>2]|0)+72>>2]=55864;c[56116+(c[a>>2]|0)+72>>2]=55948;return}function WE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=17008;c[b+32>>2]=d;c[b+40>>2]=e;e=Wf()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function XE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16944;c[b+32>>2]=d;c[b+40>>2]=e;e=iE()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function YE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=16880;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57040)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function ZE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16816;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57048)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function _E(a){a=a|0;WD(a);SA(a);return}function $E(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57048)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function aF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function bF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=jE(c[d>>2]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(iE()|0))break a;f=f+1|0;d=d+4|0}}else f=lz(d,4,e,c[b+32>>2]|0)|0;while(0);return f|0}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(JE(d,iE()|0)|0)){k=lE(d)|0;c[f>>2]=k;if(a[b+44>>0]|0){if((lz(f,4,1,c[b+32>>2]|0)|0)==1){e=15;break}b=iE()|0;break}c[m>>2]=l;e=f+4|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=iE()|0;break}}else e=15;while(0);if((e|0)==15)b=dF(d)|0;zb=o;return b|0}function dF(a){a=a|0;if(JE(a,iE()|0)|0)a=~(iE()|0);return a|0}function eF(a){a=a|0;HD(a);SA(a);return}function fF(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57040)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function gF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function hF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=cg(a[d>>0]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(Wf()|0))break a;f=f+1|0;d=d+1|0}}else f=lz(d,1,e,c[b+32>>2]|0)|0;while(0);return f|0}function iF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(_f(d,Wf()|0)|0)){k=eg(d)|0;a[f>>0]=k;if(a[b+44>>0]|0){if((lz(f,1,1,c[b+32>>2]|0)|0)==1){e=15;break}b=Wf()|0;break}c[m>>2]=l;e=f+1|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=Wf()|0;break}}else e=15;while(0);if((e|0)==15)b=dg(d)|0;zb=o;return b|0}function jF(a){a=a|0;WD(a);SA(a);return}function kF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57048)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function lF(a){a=a|0;return oF(a,0)|0}function mF(a){a=a|0;return oF(a,1)|0}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+8|0;f=l+4|0;g=l;j=JE(d,iE()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((JE(e,iE()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=lE(c[j>>2]|0)|0;c[f>>2]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=iE()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function oF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=iE()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=iE()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+4|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)c[q>>2]=a[p>>0];else if((n|0)==17){e=iE()|0;break}n=19}else{c[q>>2]=a[p>>0];n=19}while(0);b:do if((n|0)==19){c:do if(d){t=jE(c[q>>2]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=jE(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=iE()|0;break b}while(0);e=jE(c[q>>2]|0)|0}while(0)}}zb=r;return e|0}function pF(a){a=a|0;HD(a);SA(a);return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57040)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function rF(a){a=a|0;return uF(a,0)|0}function sF(a){a=a|0;return uF(a,1)|0}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+4|0;f=l+8|0;g=l;j=_f(d,Wf()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((_f(e,Wf()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=eg(c[j>>2]|0)|0;a[f>>0]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=Wf()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=Wf()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=Wf()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+1|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)a[q>>0]=a[p>>0]|0;else if((n|0)==17){e=Wf()|0;break}n=19}else{a[q>>0]=a[p>>0]|0;n=19}while(0);b:do if((n|0)==19){c:do if(d){t=cg(a[q>>0]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=cg(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=Wf()|0;break b}while(0);e=cg(a[q>>0]|0)|0}while(0)}}zb=r;return e|0}function vF(a){a=a|0;CF(a);return}function wF(a){a=a|0;vF(a);SA(a);return}function xF(a){a=a|0;if(a|0)Sb[c[(c[a>>2]|0)+4>>2]&255](a);return}function yF(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=c;while(1){if((e|0)==(f|0)){h=7;break}if((b|0)==(d|0)){b=-1;break}c=a[b>>0]|0;g=a[e>>0]|0;if(c<<24>>24>24){b=-1;break}if(g<<24>>24>24){b=1;break}e=e+1|0;b=b+1|0}if((h|0)==7)b=(b|0)!=(d|0)&1;return b|0}function zF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;BF(a,d,e);return}function AF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=0;while(1){if((c|0)==(d|0))break;e=(b<<4)+(a[c>>0]|0)|0;f=e&-268435456;b=(f>>>24|f)^e;c=c+1|0}return b|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function CF(a){a=a|0;return}function DF(a){a=a|0;CF(a);return}function EF(a){a=a|0;DF(a);SA(a);return}function FF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=b;while(1){if((e|0)==(f|0)){h=7;break}if((a|0)==(d|0)){a=-1;break}b=c[a>>2]|0;g=c[e>>2]|0;if((b|0)<(g|0)){a=-1;break}if((g|0)<(b|0)){a=1;break}e=e+4|0;a=a+4|0}if((h|0)==7)a=(a|0)!=(d|0)&1;return a|0}function GF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;IF(a,d,e);return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=0;while(1){if((b|0)==(d|0))break;e=(c[b>>2]|0)+(a<<4)|0;f=e&-268435456;a=(f>>>24|f)^e;b=b+4|0}return a|0}function IF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function JF(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return}function KF(a){a=a|0;CF(a);return}function LF(a){a=a|0;CF(a);SA(a);return}function MF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56736)|0;YF(i);IE(i,f);b=XF(i,56752)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(FG(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;jO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function NF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=DG(a,j,i,e,f,g)|0;zb=h;return g|0}function OF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=BG(a,j,i,e,f,g)|0;zb=h;return g|0}function PF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=zG(a,j,i,e,f,g)|0;zb=h;return g|0}function QF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=xG(a,j,i,e,f,g)|0;zb=h;return g|0}function RF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=vG(a,j,i,e,f,g)|0;zb=h;return g|0}function SF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=pG(a,j,i,e,f,g)|0;zb=h;return g|0}function TF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=nG(a,j,i,e,f,g)|0;zb=h;return g|0}function UF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=lG(a,j,i,e,f,g)|0;zb=h;return g|0}function VF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=gG(a,j,i,e,f,g)|0;zb=h;return g|0}function WF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+240|0;v=y+192|0;t=y+160|0;w=y+220|0;x=y+208|0;u=y+204|0;q=y;r=y+200|0;s=y+196|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56736)|0;Kb[c[(c[b>>2]|0)+32>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function XF(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return bG(a,aG(b)|0)|0}function YF(a){a=a|0;var b=0,d=0;a=c[a>>2]|0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b)Sb[c[(c[a>>2]|0)+8>>2]&255](a);return}function ZF(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if(b<<24>>24==h<<24>>24?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+26|0;h=0;while(1){m=l+h|0;if((h|0)==26){m=i;break}if((a[m>>0]|0)==b<<24>>24)break;else h=h+1|0}m=m-l|0;if((m|0)>23)m=-1;else{switch(d|0){case 10:case 8:{if((m|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function _F(){var b=0;if((a[54800]|0)==0?nB(54800)|0:0){b=az(2147483647,49197,0)|0;c[14186]=b;pB(54800)}return c[14186]|0}function $F(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=Dz(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function aG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=zb;zb=zb+48|0;b=f+32|0;d=f+24|0;e=f;g=f+16|0;c[g>>2]=143;c[g+4>>2]=0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];dG(e,b,a);if((c[a>>2]|0)!=-1){c[b>>2]=e;c[d>>2]=b;$N(a,d,144)}zb=f;return (c[a+4>>2]|0)+-1|0}function bG(a,b){a=a|0;b=b|0;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}function cG(a){a=a|0;var b=0;b=c[14187]|0;c[14187]=b+1;c[a+4>>2]=b+1;return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;b=c[b+4>>2]|0;c[a>>2]=d;c[a+4>>2]=e;c[a+8>>2]=b;return}function eG(a){a=a|0;fG(c[c[a>>2]>>2]|0);return}function fG(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;e=c[a+8>>2]|0;d=(c[a>>2]|0)+(e>>1)|0;if(!(e&1))a=b;else a=c[(c[d>>2]|0)+b>>2]|0;Sb[a&255](d);return}function gG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function hG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;i=h;IE(i,d);d=XF(i,56736)|0;Kb[c[(c[d>>2]|0)+32>>2]&15](d,12928,12960,e)|0;e=XF(i,56752)|0;d=Gb[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[f>>0]=d;f=Gb[c[(c[e>>2]|0)+16>>2]&127](e)|0;a[g>>0]=f;Ub[c[(c[e>>2]|0)+20>>2]&63](b,e);YF(i);zb=h;return}function iG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if(b<<24>>24==h<<24>>24)if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if(b<<24>>24==i<<24>>24?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+32|0;h=0;while(1){o=n+h|0;if((h|0)==32){o=i;break}if((a[o>>0]|0)==b<<24>>24)break;else h=h+1|0}h=o-n|0;if((h|0)>31)o=-1;else{i=a[12928+h>>0]|0;switch(h|0){case 24:case 25:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 23:case 22:{a[e>>0]=80;o=c[g>>2]|0;c[g>>2]=o+1;a[o>>0]=i;o=0;break a}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>21){o=0;break a}c[m>>2]=(c[m>>2]|0)+1;o=0;break a}}}}while(0);return o|0}function jG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+rA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function kG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=b+11|0;h=a[j>>0]|0;k=b+4|0;g=c[k>>2]|0;i=h&255;do if((h<<24>>24<0?g:i)|0){if((d|0)!=(e|0)){g=e;h=d;while(1){g=g+-4|0;if(h>>>0>=g>>>0)break;i=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=i;h=h+4|0}h=a[j>>0]|0;i=h&255;g=c[k>>2]|0}j=h<<24>>24<0;b=j?c[b>>2]|0:b;k=e+-4|0;j=b+(j?g:i)|0;g=b;while(1){h=a[g>>0]|0;i=h<<24>>24>0&h<<24>>24!=127;if(d>>>0>=k>>>0)break;if(i?(c[d>>2]|0)!=(h<<24>>24|0):0){l=11;break}d=d+4|0;g=(j-g|0)>1?g+1|0:g}if((l|0)==11){c[f>>2]=4;break}if(i?((c[k>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function lG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+qA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function nG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(iG(g&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+pA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function pG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function qG(a){a=a|0;switch(c[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function rG(a,b,c){a=a|0;b=b|0;c=c|0;return uG(a,b,c)|0}function sG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=zb;zb=zb+16|0;g=f;IE(g,d);d=XF(g,56752)|0;h=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[e>>0]=h;Ub[c[(c[d>>2]|0)+20>>2]&63](b,d);YF(g);zb=f;return}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;g=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if((f|0)==68){c[e>>2]=4;b=-1;f=-1;break}else{l=PO(0,0,b|0,g|0)|0;f=F()|0;b=j?l:b;f=j?f:g;break}else{c[e>>2]=4;b=0;f=0}while(0)}while(0);E(f|0);zb=k;return b|0}function uG(a,b,c){a=a|0;b=b|0;c=c|0;return 12928}function vG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function wG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function xG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function yG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function zG(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+240|0;s=C+224|0;z=C+212|0;A=C+200|0;t=C+196|0;u=C;w=C+192|0;x=C+188|0;y=qG(g)|0;r=rG(d,g,C+160|0)|0;sG(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(ZF(g&255,y,d,t,x,a[s>>0]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=cg(a[d>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function AG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0)){if(f>>>0>0|(f|0)==0&b>>>0>65535|(g|0)==68){c[e>>2]=4;b=-1;break}if(j)b=0-b&65535;else b=b&65535}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function BG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function CG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;e=0;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}if((c[g>>2]|0)==(b|0)){if((f|0)==68){c[d>>2]=4;e=(e|0)>0|(e|0)==0&a>>>0>0;a=e?-1:0;e=e?2147483647:-2147483648}}else{c[d>>2]=4;a=0;e=0}}E(e|0);zb=i;return a|0}function DG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function EG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}a:do if((c[g>>2]|0)==(b|0)){do if((f|0)==68){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{c[d>>2]=4;a=0}while(0)}zb=i;return a|0}function FG(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}n=e;o=j;k=0;while(1){if((n|0)==(f|0))break;m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;l=l+-1|0;k=k+1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=cg(a[m>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;k=k&255;if(!i)k=Ib[c[(c[g>>2]|0)+12>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+11|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=a[m+t>>0]|0;if(!i)m=Ib[c[(c[g>>2]|0)+12>>2]&63](g,m)|0;if(k<<24>>24!=m<<24>>24){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+1;cg(a[n>>0]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(!(_f(k,Wf()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function GG(a){a=a|0;CF(a);return}function HG(a){a=a|0;CF(a);SA(a);return}function IG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56768)|0;YF(i);IE(i,f);b=XF(i,56776)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(gH(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;wO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function JG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=fH(a,j,i,e,f,g)|0;zb=h;return g|0}function KG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eH(a,j,i,e,f,g)|0;zb=h;return g|0}function LG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=dH(a,j,i,e,f,g)|0;zb=h;return g|0}function MG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=cH(a,j,i,e,f,g)|0;zb=h;return g|0}function NG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=bH(a,j,i,e,f,g)|0;zb=h;return g|0}function OG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=ZG(a,j,i,e,f,g)|0;zb=h;return g|0}function PG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=YG(a,j,i,e,f,g)|0;zb=h;return g|0}function QG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=XG(a,j,i,e,f,g)|0;zb=h;return g|0}function RG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=UG(a,j,i,e,f,g)|0;zb=h;return g|0}function SG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+304|0;v=y+264|0;t=y+160|0;w=y+292|0;x=y+280|0;u=y+276|0;q=y;r=y+272|0;s=y+268|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function TG(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if((b|0)==(h|0)?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+104|0;h=0;while(1){m=l+(h<<2)|0;if((h|0)==26){m=i;break}if((c[m>>2]|0)==(b|0))break;else h=h+1|0}m=m-l|0;h=m>>2;if((m|0)>92)m=-1;else{switch(d|0){case 10:case 8:{if((h|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function UG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function VG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;IE(h,b);b=XF(h,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12960,d)|0;d=XF(h,56776)|0;b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[e>>2]=b;e=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;c[f>>2]=e;Ub[c[(c[d>>2]|0)+20>>2]&63](a,d);YF(h);zb=g;return}function WG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if((b|0)==(h|0))if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if((b|0)==(i|0)?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+128|0;h=0;while(1){o=n+(h<<2)|0;if((h|0)==32){o=i;break}if((c[o>>2]|0)==(b|0))break;else h=h+1|0}h=o-n|0;if((h|0)<=124){i=a[12928+(h>>2)>>0]|0;n=h+-88|0;switch(n>>>2|n<<30|0){case 2:case 3:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 1:case 0:{a[e>>0]=80;break}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}}}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>84)o=0;else{c[m>>2]=(c[m>>2]|0)+1;o=0}}else o=-1}while(0);return o|0}function XG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function YG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(WG(g,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function ZG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function _G(a,b,c){a=a|0;b=b|0;c=c|0;return aH(a,b,c)|0}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;IE(f,b);b=XF(f,56776)|0;g=Gb[c[(c[b>>2]|0)+16>>2]&127](b)|0;c[d>>2]=g;Ub[c[(c[b>>2]|0)+20>>2]&63](a,b);YF(f);zb=e;return}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=zb;zb=zb+16|0;e=a;IE(e,b);b=XF(e,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,d)|0;YF(e);zb=a;return d|0}function bH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function cH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function dH(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+304|0;s=C+300|0;z=C+288|0;A=C+276|0;t=C+272|0;u=C;w=C+268|0;x=C+264|0;y=qG(g)|0;r=_G(d,g,C+160|0)|0;$G(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(TG(g,y,d,t,x,c[s>>2]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=jE(c[d>>2]|0)|0;if(JE(d,iE()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=jE(c[d>>2]|0)|0;if(!(JE(d,iE()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function eH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function fH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function gH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}k=0;n=e;o=j;while(1){if((n|0)==(f|0))break;m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;k=k+1|0;l=l+-1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=jE(c[m>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!i)k=Ib[c[(c[g>>2]|0)+28>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+8+3|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=c[m+(t<<2)>>2]|0;if(!i)m=Ib[c[(c[g>>2]|0)+28>>2]&63](g,m)|0;if((k|0)!=(m|0)){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+4;jE(c[n>>2]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function hH(a){a=a|0;CF(a);return}function iH(a){a=a|0;CF(a);SA(a);return}function jH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56752)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+11|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+(h?c[j>>2]|0:b&255)|0))break;b=a[g>>0]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=cg(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+1;a[h>>0]=b;b=cg(b)|0}if(_f(b,Wf()|0)|0)c[d>>2]=0}g=g+1|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;jO(k)}zb=l;return b|0}function kH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1|0)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function lH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function mH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*(p<<1|21)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function pH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function qH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+96|0;l=b+72|0;k=b+80|0;h=b+48|0;j=b;m=b+76|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56736)|0;YF(l);Kb[c[(c[n>>2]|0)+32>>2]&15](n,h,k,j)|0;g=j+g|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=$f(l,j,(i|0)==(k|0)?g:j+(i-h)|0,g,e,f)|0;zb=b;return g|0}function rH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;c[h>>2]=f;f=ez(d)|0;d=Jx(a,b,e,h)|0;if(f|0)ez(f)|0;zb=g;return d|0}function sH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do switch((c[e+4>>2]&176)<<24>>24){case 16:{e=a[b>>0]|0;switch(e<<24>>24){case 43:case 45:{b=b+1|0;break a}default:{}}if((d-b|0)>1&e<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}b=b+2|0}else f=7;break}case 32:{b=d;break}default:f=7}while(0);return b|0}function tH(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}g=d&260;e=d&16384;f=(g|0)==260;if(f)h=0;else{a[b>>0]=46;a[b+1>>0]=42;h=1;b=b+2|0}while(1){d=a[c>>0]|0;if(!(d<<24>>24))break;a[b>>0]=d;c=c+1|0;b=b+1|0}a:do switch(g&511){case 4:{d=e>>>9&255^102;break}case 256:{d=e>>>9&255^101;break}default:{d=e>>>9&255;if(f){d=d^97;break a}else{d=d^103;break a}}}while(0);a[b>>0]=d;return h|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=bA(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function vH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56736)|0;r=XF(i,56752)|0;Ub[c[(c[r>>2]|0)+20>>2]&63](s,r);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{q=Ib[c[(c[t>>2]|0)+28>>2]&63](t,i)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=q;j=b+1|0;break}default:j=b}q=e;a:do if((q-j|0)>1?(a[j>>0]|0)==48:0){i=j+1|0;switch(a[i>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+28>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=o;j=j+2|0;p=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[i>>0]|0)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=j;while(1){if(i>>>0>=e>>>0)break a;p=a[i>>0]|0;if(!(_y(p,_F()|0)|0))break a;i=i+1|0}}else u=4;while(0);b:do if((u|0)==4){i=j;while(1){if(i>>>0>=e>>>0)break b;p=a[i>>0]|0;if(!(Zy(p,_F()|0)|0))break b;i=i+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((j|0)!=(i|0)){k=i;l=j;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[r>>2]|0)+16>>2]&127](r)|0;m=j;l=0;k=0;while(1){if(m>>>0>=i>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+1;a[w>>0]=x;m=m+1|0;l=l+1|0}k=f+(j-b)|0;j=c[h>>2]|0;if((k|0)==(j|0))k=t;else while(1){j=j+-1|0;if(k>>>0>=j>>>0){k=t;break c}x=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=x;k=k+1|0}}else{Kb[c[(c[t>>2]|0)+32>>2]&15](t,j,i,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(i-j);k=t}while(0);while(1){if(i>>>0>=e>>>0)break;j=a[i>>0]|0;if(j<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+28>>2]&63](t,j)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}if((u|0)==32){w=Gb[c[(c[r>>2]|0)+12>>2]&127](r)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}Kb[c[(c[t>>2]|0)+32>>2]&15](t,i,e,c[h>>2]|0)|0;x=(c[h>>2]|0)+(q-i)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b)|0;jO(s);zb=v;return}function wH(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=b;while(1){b=a[c>>0]|0;if(!(b<<24>>24))break;a[f>>0]=b;c=c+1|0;f=f+1|0}switch(e&74){case 64:{b=111;break}case 8:{b=e>>>9&32^120;break}default:b=d?100:117}a[f>>0]=b;return}function xH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56736)|0;l=XF(i,56752)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+1|0;k=k+1|0}i=f+(i-b)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-1|0;if(i>>>0>=j>>>0)break;t=a[i>>0]|0;a[i>>0]=a[j>>0]|0;a[j>>0]=t;i=i+1|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+32>>2]&15](p,b,e,f)|0;i=f+(e-b)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b)|0;jO(q);zb=r;return}function yH(a){a=a|0;CF(a);return}function zH(a){a=a|0;CF(a);SA(a);return}function AH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56776)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+8+3|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+((h?c[j>>2]|0:b&255)<<2)|0))break;b=c[g>>2]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=jE(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+4;c[h>>2]=b;b=jE(b)|0}if(JE(b,iE()|0)|0)c[d>>2]=0}g=g+4|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;wO(k)}zb=l;return b|0}function BH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function CH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function DH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|21)<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function EH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function FH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function GH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function HH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+208|0;l=b+184|0;k=b+192|0;h=b+160|0;j=b;m=b+188|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56768)|0;YF(l);Kb[c[(c[n>>2]|0)+48>>2]&15](n,h,k,j)|0;g=j+(g<<2)|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=IH(l,j,(i|0)==(k|0)?g:j+(i-h<<2)|0,g,e,f)|0;zb=b;return g|0}function IH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{o=d;j=f-o>>2;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;o=j-o|0;k=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;uO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+8+3>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){wO(m);break}else{c[b>>2]=0;wO(m);i=0;break a}}while(0);o=f-j|0;f=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function JH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56768)|0;q=XF(i,56776)|0;Ub[c[(c[q>>2]|0)+20>>2]&63](s,q);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{r=Ib[c[(c[t>>2]|0)+44>>2]&63](t,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=r;i=b+1|0;break}default:i=b}r=e;a:do if((r-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+44>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=o;i=i+2|0;p=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[j>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=p;j=i;while(1){if(j>>>0>=e>>>0)break a;p=a[j>>0]|0;if(!(_y(p,_F()|0)|0))break a;j=j+1|0}}else u=4;while(0);b:do if((u|0)==4){j=i;while(1){if(j>>>0>=e>>>0)break b;p=a[j>>0]|0;if(!(Zy(p,_F()|0)|0))break b;j=j+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((i|0)!=(j|0)){k=j;l=i;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[q>>2]|0)+16>>2]&127](q)|0;m=i;k=0;l=0;while(1){if(m>>>0>=j>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+4;c[w>>2]=x;m=m+1|0;l=l+1|0}i=f+(i-b<<2)|0;l=c[h>>2]|0;if((i|0)==(l|0))k=t;else{k=l;while(1){k=k+-4|0;if(i>>>0>=k>>>0){k=t;i=l;break c}x=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=x;i=i+4|0}}}else{Kb[c[(c[t>>2]|0)+48>>2]&15](t,i,j,c[h>>2]|0)|0;i=(c[h>>2]|0)+(j-i<<2)|0;c[h>>2]=i;k=t}while(0);while(1){if(j>>>0>=e>>>0)break;i=a[j>>0]|0;if(i<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+44>>2]&63](t,i)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}if((u|0)==32){w=Gb[c[(c[q>>2]|0)+12>>2]&127](q)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}Kb[c[(c[t>>2]|0)+48>>2]&15](t,j,e,i)|0;x=(c[h>>2]|0)+(r-j<<2)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b<<2)|0;jO(s);zb=v;return}function KH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56768)|0;l=XF(i,56776)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+1|0;k=k+1|0}i=f+(i-b<<2)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-4|0;if(i>>>0>=j>>>0)break;t=c[i>>2]|0;c[i>>2]=c[j>>2];c[j>>2]=t;i=i+4|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+48>>2]&15](p,b,e,f)|0;i=f+(e-b<<2)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b<<2)|0;jO(q);zb=r;return}function LH(a){a=a|0;CF(a);return}function MH(a){a=a|0;CF(a);SA(a);return}function NH(a){a=a|0;return 2}function OH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eI(a,j,i,e,f,g,49940,49948)|0;zb=h;return g|0}function PH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+11>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+(o?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=eI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function QH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];cI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function RH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];dI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function SH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];pI(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function TH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56736)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];cI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];dI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];fI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=eI(b,j,k,f,g,h,49900,49908)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=eI(b,j,k,f,g,h,49908,49916)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];gI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];hI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];iI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];jI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];kI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];lI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];mI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=eI(b,j,k,f,g,h,49916,49927)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=eI(b,j,k,f,g,h,49927,49932)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];nI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=eI(b,j,k,f,g,h,49932,49940)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];oI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];pI(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];qI(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];rI(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function UH(b){b=b|0;if((a[54872]|0)==0?nB(54872)|0:0){bI();c[14216]=53856;pB(54872)}return c[14216]|0}function VH(b){b=b|0;if((a[54856]|0)==0?nB(54856)|0:0){aI();c[14215]=53568;pB(54856)}return c[14215]|0}function WH(b){b=b|0;if((a[54840]|0)==0?nB(54840)|0:0){$H();c[14214]=53536;pB(54840)}return c[14214]|0}function XH(b){b=b|0;if((a[54832]|0)==0?nB(54832)|0:0){c[14211]=0;c[14212]=0;c[14213]=0;gO(56844,49658,Yf(49658)|0);pB(54832)}return 56844}function YH(b){b=b|0;if((a[54824]|0)==0?nB(54824)|0:0){c[14208]=0;c[14209]=0;c[14210]=0;gO(56832,49646,Yf(49646)|0);pB(54824)}return 56832}function ZH(b){b=b|0;if((a[54816]|0)==0?nB(54816)|0:0){c[14205]=0;c[14206]=0;c[14207]=0;gO(56820,49637,Yf(49637)|0);pB(54816)}return 56820}function _H(b){b=b|0;if((a[54808]|0)==0?nB(54808)|0:0){c[14202]=0;c[14203]=0;c[14204]=0;gO(56808,49628,Yf(49628)|0);pB(54808)}return 56808}function $H(){var b=0,d=0;if((a[54848]|0)==0?nB(54848)|0:0){d=53536;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53560);pB(54848)}nO(53536,49679)|0;nO(53548,49682)|0;return} +function sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g+8|0;e=g;d=We(b,0)|0;if(!d){c[e>>2]=b;Ue(0,3,20325,e);a=ox()|0;a=By(c[a>>2]|0)|0;c[f>>2]=57671;c[f+4>>2]=a;Ue(0,3,21881,f);a=-1}else{a=rd(a,d)|0;GO(d)}zb=g;return a|0}function td(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;f=a+(d<<5)|0;h=a+(d<<5)+8|0;i=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;g[c+(d<<5)+(e<<3)>>3]=+g[f>>3]*+g[b+(e<<3)>>3]+ +g[h>>3]*+g[b+32+(e<<3)>>3]+ +g[i>>3]*+g[b+64+(e<<3)>>3];e=e+1|0}i=c+(d<<5)+24|0;g[i>>3]=+g[a+(d<<5)+24>>3]+ +g[i>>3];d=d+1|0}return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,h=0,i=0,j=0;d=0;while(1){if((d|0)==3)break;h=a+(d<<5)|0;i=a+(d<<5)+8|0;j=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[b+(e<<2)>>2]*+g[h>>3]+ +f[b+16+(e<<2)>>2]*+g[i>>3]+ +f[b+32+(e<<2)>>2]*+g[j>>3];e=e+1|0}j=c+(d<<4)+12|0;f[j>>2]=+f[j>>2]+ +g[a+(d<<5)+24>>3];d=d+1|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;g=a+(d<<4)|0;h=a+(d<<4)+4|0;i=a+(d<<4)+8|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[g>>2]*+f[b+(e<<2)>>2]+ +f[h>>2]*+f[b+16+(e<<2)>>2]+ +f[i>>2]*+f[b+32+(e<<2)>>2];e=e+1|0}i=c+(d<<4)+12|0;f[i>>2]=+f[a+(d<<4)+12>>2]+ +f[i>>2];d=d+1|0}return 0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;h=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;f=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[h>>2]|0)+(e+f<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}d=c[h>>2]|0;f=d+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[d+120>>3]=1.0;Xd(h)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[(c[h>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(h)|0;return 0}function yd(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0;i=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;h=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[i>>2]|0)+(e+h<<3)>>3]=+f[a+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}d=c[i>>2]|0;h=d+96|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;g[d+120>>3]=1.0;Xd(i)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;f[b+(d<<4)+(e<<2)>>2]=+g[(c[i>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(i)|0;return 0}function zd(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Ad(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Oz(c,47)|0;if(!f){a[b>>0]=0;break}e=f+((e|0)!=0&1)-c|0;if((e+1|0)>>>0<=d>>>0){Wz(b,c,e)|0;a[b+e>>0]=0}else b=0}else b=0;while(0);return b|0}function Bd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;h=0;a:while(1){switch(a[b+h>>0]|0){case 0:break a;case 46:{e=h;break}default:{}}h=h+1|0}f=b+h|0;g=(Qy(d)|0)+2|0;if(!e)if((g+h|0)>(c|0))e=-1;else{a[f>>0]=46;e=h;i=9}else if((g+e|0)>(c|0))e=-1;else i=9;if((i|0)==9){a[b+(e+1)>>0]=0;aA(b,d)|0;e=0}return e|0}function Cd(b){b=b|0;var c=0,d=0;c=-1;d=0;a:while(1){switch(a[b+d>>0]|0){case 0:break a;case 46:{c=d;break}default:{}}d=d+1|0}if((c|0)!=-1)a[b+c>>0]=0;return 0}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<3,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<2,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Fd(a){a=a|0;var b=0;b=Dd(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Kd(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Gd(a,b){a=a|0;b=b|0;var d=0;d=Dd(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Nd(d,a,b)|0)<0){Ld(d)|0;d=0}}else d=0;return d|0}function Hd(a,b){a=a|0;b=b|0;var d=0;d=Ed(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Od(d,a,b)|0)<0){Md(d)|0;d=0}}else d=0;return d|0}function Id(a){a=a|0;var b=0;b=Dd(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($d(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Jd(a){a=a|0;var b=0;b=Ed(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if((ae(b,a)|0)<0){Md(b)|0;b=0}}else b=0;return b|0}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+4>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+8>>2]|0)):0){e=0;while(1){if((e|0)>=(h|0)){d=0;break a}f=B(e,i)|0;d=0;while(1){if((d|0)>=(i|0))break;j=d+f|0;g[(c[a>>2]|0)+(j<<3)>>3]=+g[(c[b>>2]|0)+(j<<3)>>3];d=d+1|0}e=e+1|0}}else d=-1;while(0);return d|0}function Ld(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Md(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;g[a>>3]=0.0;e=(c[d>>2]|0)+(j<<3)|0;f=(c[b>>2]|0)+(l<<3)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +g[f>>3]*+g[e>>3];g[a>>3]=p;e=e+(m<<3)|0;f=f+8|0;h=h+1|0;i=p}j=j+1|0;a=a+8|0}k=k+1|0}}else a=-1;while(0);return a|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;f[a>>2]=0.0;e=(c[d>>2]|0)+(j<<2)|0;g=(c[b>>2]|0)+(l<<2)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +f[g>>2]*+f[e>>2];f[a>>2]=p;e=e+(m<<2)|0;g=g+4|0;h=h+1|0;i=p}j=j+1|0;a=a+4|0}k=k+1|0}}else a=-1;while(0);return a|0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;j=c[a+8>>2]|0;f=(i|0)<(j|0)?i:j;a:do if(((((!((i|0)<2|(j|0)<2)?(c[b+8>>2]|0)==(j|0):0)?(c[b+4>>2]|0)==(f|0):0)?(k=d+4|0,(c[k>>2]|0)==(f|0)):0)?(c[e+4>>2]|0)==(j|0):0)?(l=Fd(a)|0,(l|0)!=0):0){h=+u(+(+(i|0)));if((Qd(l,e)|0)<0){Ld(l)|0;a=-1;break}if((Rd(l,e)|0)<0){Ld(l)|0;a=-1;break}f=B(j,i)|0;a=0;while(1){if((a|0)>=(f|0))break;j=(c[l>>2]|0)+(a<<3)|0;g[j>>3]=+g[j>>3]/h;a=a+1|0}a=Sd(l,b,d)|0;Ld(l)|0;e=c[k>>2]|0;h=0.0;f=0;while(1){if((f|0)>=(e|0))break;h=h+ +g[(c[d>>2]|0)+(f<<3)>>3];f=f+1|0}f=0;while(1){if((f|0)>=(e|0))break a;l=(c[d>>2]|0)+(f<<3)|0;g[l>>3]=+g[l>>3]/h;f=f+1|0}}else a=-1;while(0);return a|0}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,i=0,j=0,k=0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;a:do if(!((j|0)<1|(k|0)<1)?(c[b+4>>2]|0)==(k|0):0){d=0;while(1){if((d|0)==(k|0))break;g[(c[b>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}a=c[a>>2]|0;h=0;while(1){if((h|0)==(j|0))break;d=0;f=c[b>>2]|0;i=a;while(1){if((d|0)==(k|0))break;g[f>>3]=+g[i>>3]+ +g[f>>3];d=d+1|0;f=f+8|0;i=i+8|0}a=a+(k<<3)|0;h=h+1|0}e=+(j|0);d=0;while(1){if((d|0)==(k|0)){d=0;break a}j=(c[b>>2]|0)+(d<<3)|0;g[j>>3]=+g[j>>3]/e;d=d+1|0}}else d=-1;while(0);return d|0}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;i=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(i|0)){f=0;a=c[a>>2]|0;while(1){if((f|0)>=(h|0)){a=0;break a}d=0;e=c[b>>2]|0;while(1){if((d|0)>=(i|0))break;g[a>>3]=+g[a>>3]-+g[e>>3];d=d+1|0;e=e+8|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=c[a+4>>2]|0;f=c[a+8>>2]|0;i=(f|0)<(e|0)?f:e;a:do if(((!((e|0)<2|(f|0)<2)?(c[b+8>>2]|0)==(f|0):0)?(c[b+4>>2]|0)==(i|0):0)?(c[d+4>>2]|0)==(i|0):0){h=Dd(i,i)|0;if((c[h+4>>2]|0)==(i|0)?(c[h+8>>2]|0)==(i|0):0){e=(e|0)<(f|0);if(e){if((Td(a,h)|0)<0){Ld(h)|0;e=-1;break}}else if((Ud(a,h)|0)<0){Ld(h)|0;e=-1;break}if((Vd(h,d)|0)<0){Ld(h)|0;e=-1;break}b:do if(e){if((Wd(a,h,b,d)|0)<0){Ld(h)|0;e=-1;break a}}else{a=0;f=c[h>>2]|0;e=c[b>>2]|0;while(1){if((a|0)>=(i|0))break;if(+g[(c[d>>2]|0)+(a<<3)>>3]<1.0e-16)break;b=0;while(1){if((b|0)>=(i|0))break;g[e>>3]=+g[f>>3];b=b+1|0;f=f+8|0;e=e+8|0}a=a+1|0}while(1){if((a|0)>=(i|0))break b;g[(c[d>>2]|0)+(a<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(i|0))break;g[e>>3]=0.0;f=f+1|0;e=e+8|0}a=a+1|0}}while(0);Ld(h)|0;e=0;break}Ld(h)|0;e=-1}else e=-1;while(0);return e|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0;n=c[a+4>>2]|0;o=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}l=B(e,o)|0;d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{f=c[a>>2]|0;i=f+((B(d,o)|0)<<3)|0;g[j>>3]=0.0;b=0;f=f+(l<<3)|0;m=0.0;while(1){if((b|0)>=(o|0))break b;p=m+ +g[f>>3]*+g[i>>3];g[j>>3]=p;b=b+1|0;f=f+8|0;i=i+8|0;m=p}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0;m=c[a+4>>2]|0;n=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{i=c[a>>2]|0;g[j>>3]=0.0;b=0;f=i+(e<<3)|0;i=i+(d<<3)|0;l=0.0;while(1){if((b|0)>=(m|0))break b;o=l+ +g[f>>3]*+g[i>>3];g[j>>3]=o;b=b+1|0;f=f+(n<<3)|0;i=i+(n<<3)|0;l=o}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;F=zb;zb=zb+16|0;d=F;E=c[a+4>>2]|0;do if((!((E|0)<2?1:(E|0)!=(c[a+8>>2]|0))?(c[b+4>>2]|0)==(E|0):0)?(C=qe(E)|0,(C|0)!=0):0){D=E+-1|0;c[d+4>>2]=D;c[d>>2]=(c[C>>2]|0)+8;if((ue(a,b,d)|0)<0){re(C)|0;d=-1;break}A=c[C>>2]|0;g[A>>3]=0.0;y=D;while(1){if((y|0)<=0)break;z=y;while(1){if((z|0)<=0)break;n=+t(+(+g[A+(z<<3)>>3]));x=c[b>>2]|0;d=z+-1|0;o=+t(+(+g[x+(d<<3)>>3]));if(n>(o+ +t(+(+g[x+(z<<3)>>3])))*1.0e-06)z=d;else break}q=y+-1|0;a:do if((z|0)!=(y|0)){r=A+(y<<3)|0;s=A+(z+1<<3)|0;p=0;do{if(p>>>0>99)break a;p=p+1|0;v=c[b>>2]|0;w=v+(q<<3)|0;x=v+(y<<3)|0;h=+g[x>>3];o=(+g[w>>3]-h)*.5;m=+g[r>>3];m=m*m;j=+u(+(m+o*o));l=z;n=+g[s>>3];j=+g[v+(z<<3)>>3]-h+m/(o+(o<0.0?-j:j));while(1){if((l|0)>=(y|0))break;h=+t(+j);if(h>=+t(+n))if(h>1.0e-16){h=-n/j;o=1.0/+u(+(h*h+1.0));m=o;o=h*o}else{m=1.0;o=0.0}else{m=-j/n;o=1.0/+u(+(m*m+1.0));m=m*o}f=v+(l<<3)|0;I=+g[f>>3];k=l+1|0;d=v+(k<<3)|0;H=+g[d>>3];h=I-H;i=A+(k<<3)|0;G=o*(o*h+m*2.0*+g[i>>3]);g[f>>3]=I-G;g[d>>3]=H+G;d=A+(l<<3)|0;if((l|0)>(z|0))g[d>>3]=m*+g[d>>3]-n*o;I=+g[i>>3];g[i>>3]=I+o*(m*h-o*2.0*I);e=B(l,E)|0;f=B(k,E)|0;d=0;h=n;while(1){if((d|0)==(E|0))break;J=c[a>>2]|0;K=J+(d+e<<3)|0;j=+g[K>>3];J=J+(d+f<<3)|0;h=+g[J>>3];g[K>>3]=m*j-o*h;g[J>>3]=o*j+m*h;d=d+1|0}if((l|0)<(q|0)){j=+g[i>>3];K=A+(l+2<<3)|0;h=+g[K>>3];g[K>>3]=m*h;h=-(o*h)}l=k;n=h}H=+t(+(+g[r>>3]));I=+t(+(+g[w>>3]))}while(H>(I+ +t(+(+g[x>>3])))*1.0e-06)}while(0);y=q}d=0;while(1){if((d|0)==(D|0))break;f=c[b>>2]|0;i=f+(d<<3)|0;j=+g[i>>3];l=d+1|0;h=j;k=d;e=l;while(1){if((e|0)>=(E|0))break;I=+g[f+(e<<3)>>3];K=I>h;h=K?I:h;k=K?e:k;e=e+1|0}g[f+(k<<3)>>3]=j;g[i>>3]=h;e=c[a>>2]|0;f=e+((B(d,E)|0)<<3)|0;d=e+((B(k,E)|0)<<3)|0;e=0;while(1){if((e|0)==(E|0))break;I=+g[d>>3];g[d>>3]=+g[f>>3];g[f>>3]=I;f=f+8|0;d=d+8|0;e=e+1|0}d=l}re(C)|0;d=0}else d=-1;while(0);zb=F;return d|0}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0;p=c[a+4>>2]|0;q=c[a+8>>2]|0;a:do if(((((!((p|0)<1|(q|0)<1)?(c[b+4>>2]|0)==(p|0):0)?(c[b+8>>2]|0)==(p|0):0)?(c[d+4>>2]|0)==(p|0):0)?(c[d+8>>2]|0)==(q|0):0)?(c[e+4>>2]|0)==(p|0):0){h=0;d=c[d>>2]|0;while(1){if((h|0)>=(p|0))break;i=+g[(c[e>>2]|0)+(h<<3)>>3];if(i<1.0e-16)break;n=1.0/+u(+(+t(+i)));o=B(h,p)|0;j=0;m=d;while(1){if((j|0)==(q|0))break;f=0;k=(c[b>>2]|0)+(o<<3)|0;i=0.0;l=(c[a>>2]|0)+(j<<3)|0;while(1){if((f|0)==(p|0))break;r=i+ +g[k>>3]*+g[l>>3];f=f+1|0;k=k+8|0;i=r;l=l+(q<<3)|0}g[m>>3]=n*i;j=j+1|0;m=m+8|0}h=h+1|0;d=d+(q<<3)|0}while(1){if((h|0)>=(p|0)){d=0;break a}g[(c[e>>2]|0)+(h<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(q|0))break;g[d>>3]=0.0;f=f+1|0;d=d+8|0}h=h+1|0}}else d=-1;while(0);return d|0}function Xd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((Yd(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{g[a>>3]=1.0/+g[a>>3];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<3)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<3)|0;k=0.0;e=m;i=-1;f=l;while(1){if((f|0)==(b|0))break;r=+t(+(+g[e>>3]));j=k>2]|0;f=p+(l<<2)|0;c[e>>2]=c[f>>2];c[f>>2]=h;f=0;h=m;e=a+((B(i,d)|0)<<3)|0;while(1){if((f|0)==(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+8|0;e=e+8|0}k=+g[m>>3];e=1;f=m;while(1){if((e|0)==(b|0))break;j=f+8|0;g[f>>3]=+g[j>>3]/k;e=e+1|0;f=j}g[n>>3]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<3)|0;k=+g[i>>3];f=m;h=1;while(1){if((h|0)==(b|0))break;s=i+8|0;g[i>>3]=+g[s>>3]-k*+g[f>>3];f=f+8|0;h=h+1|0;i=s}g[j>>3]=-(k*+g[n>>3])}e=e+1|0;j=j+(d<<3)|0}l=l+1|0;n=n+(d<<3)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];f=0;h=a+(j<<3)|0;e=a+(i<<3)|0;while(1){if((f|0)>=(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+(d<<3)|0;e=e+(d<<3)|0}j=j+1|0}}while(0);zb=q;return a|0}function Zd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((_d(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function _d(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{f[a>>2]=1.0/+f[a>>2];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<2)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<2)|0;k=0.0;e=m;i=-1;g=l;while(1){if((g|0)==(b|0))break;r=+t(+(+f[e>>2]));j=k>2]|0;g=p+(l<<2)|0;c[e>>2]=c[g>>2];c[g>>2]=h;g=0;h=m;e=a+((B(i,d)|0)<<2)|0;while(1){if((g|0)==(b|0))break;j=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=j;g=g+1|0;h=h+4|0;e=e+4|0}k=+f[m>>2];e=1;g=m;while(1){if((e|0)==(b|0))break;j=g+4|0;f[g>>2]=+f[j>>2]/k;e=e+1|0;g=j}f[n>>2]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<2)|0;k=+f[i>>2];g=m;h=1;while(1){if((h|0)==(b|0))break;s=i+4|0;f[i>>2]=+f[s>>2]-k*+f[g>>2];g=g+4|0;h=h+1|0;i=s}f[j>>2]=-(k*+f[n>>2])}e=e+1|0;j=j+(d<<2)|0}l=l+1|0;n=n+(d<<2)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];g=0;h=a+(j<<2)|0;e=a+(i<<2)|0;while(1){if((g|0)>=(b|0))break;s=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=s;g=g+1|0;h=h+(d<<2)|0;e=e+(d<<2)|0}j=j+1|0}}while(0);zb=q;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+8>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(h|0)){a=0;break a}d=(c[b>>2]|0)+(f<<3)|0;e=0;while(1){if((e|0)>=(i|0))break;g[a>>3]=+g[d>>3];d=d+(h<<3)|0;e=e+1|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;a:do if((g|0)==(c[b+8>>2]|0)?(h=c[a+8>>2]|0,(h|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(g|0)){a=0;break a}d=(c[b>>2]|0)+(f<<2)|0;e=0;while(1){if((e|0)>=(h|0))break;c[a>>2]=c[d>>2];d=d+(g<<2)|0;e=e+1|0;a=a+4|0}f=f+1|0}}else a=-1;while(0);return a|0}function be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0;h=+(b|0)/+(c[a>>2]|0);f=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;while(1){if((b|0)==4)break;g[e+8+(b<<3)>>3]=h*+g[a+8+(b<<3)>>3];g[e+40+(b<<3)>>3]=f*+g[a+40+(b<<3)>>3];g[e+72+(b<<3)>>3]=+g[a+72+(b<<3)>>3];b=b+1|0}b=c[a+176>>2]|0;switch(b|0){case 4:{g[e+104>>3]=+g[a+104>>3];g[e+112>>3]=+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=h*+g[a+136>>3];g[e+144>>3]=f*+g[a+144>>3];g[e+152>>3]=h*+g[a+152>>3];g[e+160>>3]=f*+g[a+160>>3];g[e+168>>3]=+g[a+168>>3];i=9;break}case 3:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=+g[a+136>>3]/(h*f);g[e+144>>3]=+g[a+144>>3]/(f*(h*h*f));i=9;break}case 2:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);g[e+136>>3]=+g[a+136>>3]/(f*(h*h*f));i=9;break}case 1:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);i=9;break}default:b=-1}if((i|0)==9){c[e+176>>2]=b;b=0}return b|0}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;h=zb;zb=zb+96|0;f=h;a:do if(!(+g[a+88>>3]>=0.0)){d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=-+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}else{d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}while(0);d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=0.0;e=e+1|0}d=d+1|0}i=+g[f+64>>3];n=+g[f+72>>3];o=+g[f+80>>3];w=+de(i,n,o);a=b+80|0;g[a>>3]=w;w=i/w;u=c+64|0;g[u>>3]=w;n=n/+g[a>>3];s=c+72|0;g[s>>3]=n;o=o/+g[a>>3];p=c+80|0;g[p>>3]=o;m=c+88|0;g[m>>3]=+g[f+88>>3]/+g[a>>3];i=+g[f+32>>3];j=+g[f+40>>3];r=+g[f+48>>3];o=+ee(w,n,o,i,j,r);l=b+48|0;g[l>>3]=o;i=i-o*+g[u>>3];j=j-o*+g[s>>3];o=r-o*+g[p>>3];r=+de(i,j,o);k=b+40|0;g[k>>3]=r;v=c+32|0;g[v>>3]=i/r;t=c+40|0;g[t>>3]=j/+g[k>>3];q=c+48|0;g[q>>3]=o/+g[k>>3];o=+g[f>>3];j=+g[f+8>>3];r=+g[f+16>>3];i=+ee(+g[u>>3],+g[s>>3],+g[p>>3],o,j,r);d=b+16|0;g[d>>3]=i;n=+ee(+g[v>>3],+g[t>>3],+g[q>>3],o,j,r);e=b+8|0;g[e>>3]=n;o=o-n*+g[v>>3]-i*+g[u>>3];j=j-n*+g[t>>3]-i*+g[s>>3];i=r-n*+g[q>>3]-i*+g[p>>3];n=+de(o,j,i);g[b>>3]=n;g[c>>3]=o/n;g[c+8>>3]=j/+g[b>>3];g[c+16>>3]=i/+g[b>>3];i=+g[m>>3];j=(+g[f+56>>3]-+g[l>>3]*i)/+g[k>>3];g[c+56>>3]=j;g[c+24>>3]=(+g[f+24>>3]-j*+g[e>>3]-i*+g[d>>3])/+g[b>>3];d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==3)break;v=b+(d<<5)+(e<<3)|0;g[v>>3]=+g[v>>3]/+g[a>>3];e=e+1|0}d=d+1|0}zb=h;return 0}function de(a,b,c){a=+a;b=+b;c=+c;return +(+u(+(a*a+b*b+c*c)))}function ee(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;return +(a*d+b*e+c*f)}function fe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;switch(f|0){case 4:{t=+g[a>>3];v=+g[a+8>>3];r=+g[a+16>>3];s=+g[a+24>>3];x=+g[a+32>>3];y=+g[a+40>>3];z=+g[a+48>>3];A=+g[a+56>>3];w=+g[a+64>>3];q=(b-z)/x;l=(c-A)/y;m=r*2.0;n=s*6.0;o=s*2.0;p=r*6.0;i=q;j=l;k=q*q;b=l*l;f=1;while(1){if(!(b!=0.0|k!=0.0)){c=0.0;b=0.0;break}D=b+k;C=t*D+1.0+D*(v*D);c=k*3.0;B=b*c;c=i-(s*(D+k*2.0)+(j*(m*i)+i*C)-q)/(n*i+(m*j+(t*(b+c)+1.0+v*(b*b+(k*(k*5.0)+B)))));i=o*c;b=j-(r*(b*2.0+D)+j*C+j*i-l)/(p*j+(t*(k+b*3.0)+1.0+v*(b*(b*5.0)+(k*k+B)))+i);if((f|0)==4)break;i=c;j=b;k=c*c;b=b*b;f=f+1|0}g[d>>3]=z+x*c/w;b=A+y*b/w;h=22;break}case 3:{p=+g[a>>3];b=(b-p)/+g[a+24>>3];h=a+8|0;c=c-+g[h>>3];k=+g[a+32>>3]/1.0e8;l=+g[a+40>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;j=b*b+c*c;i=j;f=f+1|0;j=+u(+j)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 2:{p=+g[a>>3];b=b-p;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;l=+g[a+32>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 1:{n=+g[a>>3];b=b-n;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;i=b*b+c*c;l=+u(+i);m=k*3.0;f=1;j=l;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i)-l)/(1.0-m*i);b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=n+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}default:f=-1}if((h|0)==22){g[e>>3]=b;f=0}return f|0}function ge(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do switch(f|0){case 4:{h=+g[a+16>>3];l=+g[a+24>>3];o=+g[a+32>>3];m=+g[a+40>>3];p=+g[a+48>>3];n=+g[a+56>>3];i=+g[a+64>>3];k=(b-p)*i/o;c=(c-n)*i/m;i=k*k+c*c;b=+g[a>>3]*i+1.0+i*(+g[a+8>>3]*i);g[d>>3]=p+o*(l*(i+k*(k*2.0))+(c*(h*2.0*k)+k*b));b=n+m*(c*(l*2.0*k)+(h*(i+c*(c*2.0))+c*b));j=12;break}case 3:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+32>>3]/1.0e8)-p*(p*(+g[a+40>>3]/1.0e8/1.0e5));g[d>>3]=i+ +g[a+24>>3]*(h*p);b=+g[f>>3]+b*p;j=12;break a}}case 2:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+24>>3]/1.0e8)-p*(p*(+g[a+32>>3]/1.0e8/1.0e5));g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}case 1:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=1.0-(h*h+b*b)*(+g[a+24>>3]/1.0e8);g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}default:f=-1}while(0);if((j|0)==12){g[e>>3]=b;f=0}return f|0}function he(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+192|0;f=g;ie(a,f);ie(a+4|0,f+4|0);b=0;while(1){if((b|0)==3)break;d=0;while(1){if((d|0)==4)break;je(a+8+(b<<5)+(d<<3)|0,f+8+(b<<5)+(d<<3)|0);d=d+1|0}b=b+1|0}d=a+176|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[1712+(e+-1<<3)>>2]|0))break;je(a+104+(b<<3)|0,f+104+(b<<3)|0);b=b+1|0}c[f+176>>2]=e;_O(a|0,f|0,184)|0;zb=g;return}function ie(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==4)break;a[c+d>>0]=a[b+(3-d)>>0]|0;d=d+1|0}return}function je(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==8)break;a[c+d>>0]=a[b+(7-d)>>0]|0;d=d+1|0}return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+256|0;n=s+248|0;l=s+240|0;k=s+232|0;j=s+224|0;i=s+216|0;h=s+208|0;f=s+200|0;p=s;q=s+16|0;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=rz(a,22236)|0;if(!r){r=ox()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Ue(0,3,20359,f);a=ox()|0;a=By(c[a>>2]|0)|0;c[h>>2]=57671;c[h+4>>2]=a;Ue(0,3,21881,h);a=-1;break}Kz(r,0,2)|0;a:do if(!(Bz(r)|0)){h=hA(r)|0;iA(r);f=0;while(1){if(f>>>0>=4){o=9;break}a=c[1712+(f<<3)+4>>2]|0;f=f+1|0;if(!((h|0)%(a|0)|0)){m=f;break}}do if((o|0)==9)if((f|0)==4){Ue(0,3,20473,k);a=-1;break a}else{m=0;a=c[1712+(0<<3)+4>>2]|0;break}while(0);if((gA(q,a,1,r)|0)!=1){a=ox()|0;c[l>>2]=c[a>>2];Ue(0,3,20553,l);a=ox()|0;a=By(c[a>>2]|0)|0;c[n>>2]=57671;c[n+4>>2]=a;Ue(0,3,21881,n);a=-1;break}j=q+176|0;c[j>>2]=m;he(q);k=(m|0)==1;l=q+120|0;if(k){t=+g[l>>3];i=q+128|0;g[l>>3]=+g[i>>3];g[i>>3]=t}else i=q+128|0;_O(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;a=1;while(1){if((a|0)>=(b|0)){a=0;break a}e=(c[p>>2]|0)+(4-1)&~(4-1);h=c[e>>2]|0;c[p>>2]=e+4;c[h+176>>2]=c[f>>2];if((gA(q,c[1712+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[j>>2]=m;he(q);if(k){t=+g[l>>3];g[l>>3]=+g[i>>3];g[i>>3]=t}_O(h|0,q|0,184)|0;a=a+1|0}}else{a=ox()|0;c[i>>2]=c[a>>2];Ue(0,3,20428,i);a=ox()|0;a=By(c[a>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=a;Ue(0,3,21881,j);a=-1}while(0);xz(r)|0}else a=-1;while(0);zb=s;return a|0}function le(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+416|0;j=o+304|0;m=o+208|0;k=o+128|0;n=o;l=c[a>>2]|0;f=c[a+4>>2]|0;a:do if((ce(a+8|0,j,m)|0)<0)Ue(0,3,20591,o+400|0);else{i=+(f+-1|0);a=0;while(1){if((a|0)==4)break;f=j+32+(a<<3)|0;g[f>>3]=+g[j+64+(a<<3)>>3]*i-+g[f>>3];a=a+1|0}h=+g[j+80>>3];f=0;while(1){if((f|0)==3)break;a=0;while(1){if((a|0)==3)break;g[k+(f*24|0)+(a<<3)>>3]=+g[j+(f<<5)+(a<<3)>>3]/h;a=a+1|0}f=f+1|0}h=+(l+-1|0);g[n>>3]=+g[k>>3]*2.0/h;g[n+8>>3]=+g[k+8>>3]*2.0/h;g[n+16>>3]=-(+g[k+16>>3]*2.0/h+-1.0);f=n+24|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+40>>3]=-(+g[k+32>>3]*2.0/i);g[n+48>>3]=-(+g[k+40>>3]*2.0/i+-1.0);f=n+56|0;h=b-d;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[n+80>>3]=(b+d)/h;g[n+88>>3]=d*2.0*b/h;f=n+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+112>>3]=-1.0;g[n+120>>3]=0.0;h=+g[m+24>>3];i=+g[m+56>>3];b=+g[m+88>>3];f=0;while(1){if((f|0)==4)break a;d=+g[n+(f<<5)>>3];j=n+(f<<5)+8|0;k=n+(f<<5)+16|0;a=0;while(1){if((a|0)==3)break;g[e+((a<<2)+f<<3)>>3]=d*+g[m+(a<<3)>>3]+ +g[j>>3]*+g[m+32+(a<<3)>>3]+ +g[k>>3]*+g[m+64+(a<<3)>>3];a=a+1|0}g[e+(f+12<<3)>>3]=+g[n+(f<<5)+24>>3]+(d*h+ +g[j>>3]*i+ +g[k>>3]*b);f=f+1|0}}while(0);zb=o;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+64|0;n=s+24|0;o=s+16|0;p=s+8|0;q=s;r=FO(208)|0;if(!r){Ue(0,3,41858,s+32|0);Ea(1)}_O(r|0,a|0,184)|0;m=b<<1;l=(c[a>>2]|0)+m|0;c[r+192>>2]=l;m=(c[a+4>>2]|0)+m|0;c[r+196>>2]=m;c[r+200>>2]=b;c[r+204>>2]=b;d=B(l<<3,m)|0;e=FO(d)|0;c[r+184>>2]=e;if(!e){Ue(0,3,41858,s+40|0);Ea(1)}d=FO(d)|0;c[r+188>>2]=d;if(!d){Ue(0,3,41858,s+48|0);Ea(1)}k=a+104|0;j=c[a+176>>2]|0;i=0;a=e;while(1){if((i|0)>=(m|0))break;h=+(i-b|0);e=0;while(1){if((e|0)>=(l|0))break;t=+(e-b|0);ge(k,t,h,p,q,j)|0;f[a>>2]=+g[p>>3];f[a+4>>2]=+g[q>>3];fe(k,t,h,n,o,j)|0;f[d>>2]=+g[n>>3];f[d+4>>2]=+g[o>>3];e=e+1|0;d=d+8|0;a=a+8|0}i=i+1|0}zb=s;return r|0}function ne(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){GO(c[b+184>>2]|0);GO(c[(c[a>>2]|0)+188>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;a=0}else a=-1;return a|0}function oe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function pe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a+4>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function qe(a){a=a|0;var b=0,d=0;b=FO(8)|0;do if(b){d=FO(a<<3)|0;c[b>>2]=d;if(!d){GO(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function re(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function se(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0;b=+u(+(+te(a,a)));a:do if(b!=0.0){f=c[a>>2]|0;e=+g[f>>3];b=e<0.0?-b:b;e=e+b;g[f>>3]=e;e=1.0/+u(+(b*e));d=c[a+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;h=f+(a<<3)|0;g[h>>3]=e*+g[h>>3];a=a+1|0}}while(0);return +-b}function te(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))Ea(0);d=0;e=0.0;while(1){if((d|0)>=(f|0))break;h=e+ +g[(c[a>>2]|0)+(d<<3)>>3]*+g[(c[b>>2]|0)+(d<<3)>>3];d=d+1|0;e=h}return +e}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;u=x+8|0;v=x;w=c[a+8>>2]|0;a:do if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){r=w+-2|0;s=u+4|0;t=v+4|0;l=0;while(1){if((l|0)>=(r|0))break;m=(c[a>>2]|0)+((B(l,w)|0)<<3)|0;g[(c[b>>2]|0)+(l<<3)>>3]=+g[m+(l<<3)>>3];i=w-l+-1|0;c[s>>2]=i;p=l+1|0;k=m+(p<<3)|0;c[u>>2]=k;o=+se(u);g[(c[d>>2]|0)+(l<<3)>>3]=o;b:do if(!(o==0.0)){h=p;while(1){if((h|0)>=(w|0))break;e=p;j=0.0;while(1){if(e>>>0>=h>>>0)break;f=(c[a>>2]|0)+((B(e,w)|0)+h<<3)|0;o=j+ +g[f>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}f=B(h,w)|0;e=h;while(1){if((e|0)>=(w|0))break;o=j+ +g[(c[a>>2]|0)+(e+f<<3)>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}g[(c[b>>2]|0)+(h<<3)>>3]=j;h=h+1|0}c[t>>2]=i;c[s>>2]=i;c[u>>2]=k;c[v>>2]=(c[b>>2]|0)+(p<<3);o=+te(u,v)*.5;e=w;while(1){e=e+-1|0;if((e|0)<=(l|0))break b;j=+g[m+(e<<3)>>3];h=c[b>>2]|0;i=h+(e<<3)|0;n=+g[i>>3]-o*j;g[i>>3]=n;i=B(e,w)|0;f=e;while(1){if((f|0)>=(w|0))break;k=(c[a>>2]|0)+(f+i<<3)|0;g[k>>3]=+g[k>>3]-(j*+g[h+(f<<3)>>3]+n*+g[m+(f<<3)>>3]);f=f+1|0}}}while(0);l=p}if((w|0)<=1)if((w|0)==1){h=0;e=c[a>>2]|0;f=c[b>>2]|0;q=27}else i=w;else{e=c[a>>2]|0;q=B(r,w)|0;f=c[b>>2]|0;g[f+(r<<3)>>3]=+g[e+(q+r<<3)>>3];h=w+-1|0;g[(c[d>>2]|0)+(r<<3)>>3]=+g[e+(h+q<<3)>>3];q=27}if((q|0)==27){e=e+((B(h,w)|0)+h<<3)|0;i=w;j=+g[e>>3];e=f+(h<<3)|0;q=28}while(1){if((q|0)==28)g[e>>3]=j;d=i+-1|0;if((i|0)<=0){e=0;break a}m=(c[a>>2]|0)+((B(d,w)|0)<<3)|0;c:do if((i|0)<=(r|0)){h=w-d+-1|0;k=m+(i<<3)|0;e=i;while(1){if((e|0)>=(w|0))break c;c[t>>2]=h;c[s>>2]=h;c[u>>2]=k;l=B(e,w)|0;c[v>>2]=(c[a>>2]|0)+(l+i<<3);j=+te(u,v);f=i;while(1){if((f|0)>=(w|0))break;q=(c[a>>2]|0)+(f+l<<3)|0;g[q>>3]=+g[q>>3]-j*+g[m+(f<<3)>>3];f=f+1|0}e=e+1|0}}while(0);e=0;while(1){if((e|0)>=(w|0))break;g[m+(e<<3)>>3]=0.0;e=e+1|0}i=d;j=1.0;e=m+(d<<3)|0;q=28}}else e=-1;while(0);zb=x;return e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;f=+g[c>>3];h=+g[c+8>>3];e=+g[c+16>>3];d=+g[b+88>>3]+(f*+g[b+64>>3]+h*+g[b+72>>3]+e*+g[b+80>>3]);if(d==0.0)c=-1;else{i=+g[b+56>>3]+(f*+g[b+32>>3]+h*+g[b+40>>3]+e*+g[b+48>>3]);g[a>>3]=(+g[b+24>>3]+(f*+g[b>>3]+h*+g[b+8>>3]+e*+g[b+16>>3]))/d;g[a+8>>3]=i/d;c=0}return c|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0;j=zb;zb=zb+224|0;h=j+48|0;i=j;f=j+192|0;xe(h,f,c,d);a:do if((ye(i,b,f)|0)<0){Ue(0,3,20661,j+216|0);b=-1}else{c=0;while(1){if((c|0)==2){b=0;break a}d=0;while(1){if((d|0)==6)break;f=a+(c*48|0)+(d<<3)|0;g[f>>3]=0.0;b=0;e=0.0;while(1){if((b|0)==3)break;k=e+ +g[i+(c*24|0)+(b<<3)>>3]*+g[h+(b*48|0)+(d<<3)>>3];g[f>>3]=k;b=b+1|0;e=k}d=d+1|0}c=c+1|0}}while(0);zb=j;return b|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=zb;zb=zb+864|0;h=j+576|0;i=j;u=c+8|0;e=d+8|0;n=+g[e>>3];t=c+16|0;v=d+16|0;l=+g[v>>3];g[b>>3]=+g[c+24>>3]+(+g[c>>3]*+g[d>>3]+ +g[u>>3]*n+ +g[t>>3]*l);s=c+32|0;o=+g[d>>3];r=c+40|0;q=c+48|0;g[b+8>>3]=+g[c+56>>3]+(+g[s>>3]*o+n*+g[r>>3]+l*+g[q>>3]);p=c+64|0;d=c+72|0;n=+g[e>>3];e=c+80|0;g[b+16>>3]=+g[c+88>>3]+(o*+g[p>>3]+ +g[d>>3]*n+l*+g[e>>3]);l=+g[c>>3];g[h>>3]=o*l;g[h+8>>3]=n*l;m=+g[v>>3];g[h+16>>3]=l*m;k=+g[u>>3];g[h+24>>3]=o*k;g[h+32>>3]=n*k;g[h+40>>3]=m*k;f=+g[t>>3];g[h+48>>3]=o*f;g[h+56>>3]=n*f;g[h+64>>3]=m*f;g[h+72>>3]=l;g[h+80>>3]=k;g[h+88>>3]=f;f=+g[s>>3];g[h+96>>3]=o*f;g[h+104>>3]=n*f;g[h+112>>3]=m*f;k=+g[r>>3];g[h+120>>3]=o*k;g[h+128>>3]=n*k;g[h+136>>3]=m*k;l=+g[q>>3];g[h+144>>3]=o*l;g[h+152>>3]=n*l;g[h+160>>3]=m*l;g[h+168>>3]=f;g[h+176>>3]=k;g[h+184>>3]=l;l=+g[p>>3];g[h+192>>3]=o*l;g[h+200>>3]=n*l;g[h+208>>3]=m*l;k=+g[d>>3];g[h+216>>3]=o*k;g[h+224>>3]=n*k;g[h+232>>3]=m*k;f=+g[e>>3];g[h+240>>3]=o*f;g[h+248>>3]=n*f;g[h+256>>3]=m*f;g[h+264>>3]=l;g[h+272>>3]=k;g[h+280>>3]=f;ze(i);c=0;while(1){if((c|0)==3)break;d=0;while(1){if((d|0)==6)break;e=a+(c*48|0)+(d<<3)|0;g[e>>3]=0.0;b=0;f=0.0;while(1){if((b|0)==12)break;o=f+ +g[h+(c*96|0)+(b<<3)>>3]*+g[i+(b*48|0)+(d<<3)>>3];g[e>>3]=o;b=b+1|0;f=o}d=d+1|0}c=c+1|0}zb=j;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0;o=+g[b>>3];r=+g[c>>3];p=b+8|0;q=+g[c+8>>3];n=b+16|0;d=+g[c+16>>3];e=+g[b+24>>3]+(o*r+ +g[p>>3]*q+ +g[n>>3]*d);c=b+32|0;f=b+40|0;h=b+48|0;i=+g[b+56>>3]+(r*+g[c>>3]+q*+g[f>>3]+d*+g[h>>3]);j=b+64|0;k=+g[j>>3];l=b+72|0;m=b+80|0;d=+g[b+88>>3]+(r*k+q*+g[l>>3]+d*+g[m>>3]);if(d==0.0)c=-1;else{r=d*d;g[a>>3]=(o*d-e*k)/r;g[a+8>>3]=(d*+g[p>>3]-e*+g[l>>3])/r;g[a+16>>3]=(d*+g[n>>3]-e*+g[m>>3])/r;g[a+24>>3]=(d*+g[c>>3]-i*+g[j>>3])/r;g[a+32>>3]=(d*+g[f>>3]-i*+g[l>>3])/r;g[a+40>>3]=(d*+g[h>>3]-i*+g[m>>3])/r;c=0}return c|0}function ze(a){a=a|0;var b=0,d=0,e=0;b=a+64|0;d=a;e=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+104>>3]=1.0;b=a+160|0;d=a+112|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+240|0;d=a+168|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+296|0;d=a+248|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+304|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+336>>3]=1.0;b=a+456|0;d=a+344|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+512|0;d=a+464|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+568|0;d=a+520|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;return}function Ae(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;d=Id(f)|0;do if(d){b=Gd(d,f)|0;if(!b){Ld(d)|0;a=-1;break}a=Gd(d,g)|0;if(!a){Ld(d)|0;Ld(b)|0;a=-1;break}if((Xd(b)|0)<0){Ld(d)|0;Ld(b)|0;Ld(a)|0;a=-1;break}else{Nd(h,b,a)|0;Ld(d)|0;Ld(b)|0;Ld(a)|0;a=0;break}}else a=-1;while(0);zb=i;return a|0}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0;j=zb;zb=zb+256|0;f=j+192|0;h=j+96|0;i=j;Ce(f,b);De(h,f);b=0;while(1){if((b|0)==3)break;d=a+(b<<5)|0;e=a+(b<<5)+8|0;f=a+(b<<5)+16|0;c=0;while(1){if((c|0)==4)break;g[i+(b<<5)+(c<<3)>>3]=+g[d>>3]*+g[h+(c<<3)>>3]+ +g[e>>3]*+g[h+32+(c<<3)>>3]+ +g[f>>3]*+g[h+64+(c<<3)>>3];c=c+1|0}f=i+(b<<5)+24|0;g[f>>3]=+g[a+(b<<5)+24>>3]+ +g[f>>3];b=b+1|0}b=0;while(1){if((b|0)==3)break;c=0;while(1){if((c|0)==4)break;g[a+(b<<5)+(c<<3)>>3]=+g[i+(b<<5)+(c<<3)>>3];c=c+1|0}b=b+1|0}zb=j;return 0}function Ce(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,h=0.0;d=+g[b>>3];e=b+8|0;h=+g[e>>3];f=b+16|0;c=+g[f>>3];c=d*d+h*h+c*c;if(c==0.0){g[a>>3]=1.0;g[a+8>>3]=0.0;d=0.0;c=0.0}else{c=+u(+c);g[a>>3]=d/c;g[a+8>>3]=+g[e>>3]/c;d=c;c=+g[f>>3]/c}g[a+16>>3]=c;g[a+24>>3]=d;g[a+32>>3]=+g[b+24>>3];g[a+40>>3]=+g[b+32>>3];g[a+48>>3]=+g[b+40>>3];return}function De(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0;c=+g[b+24>>3];e=+w(+c);d=1.0-e;c=+x(+c);i=+g[b>>3];g[a>>3]=e+i*i*d;h=b+8|0;f=b+16|0;g[a+8>>3]=d*(+g[b>>3]*+g[h>>3])-c*+g[f>>3];g[a+16>>3]=d*(+g[b>>3]*+g[f>>3])+c*+g[h>>3];g[a+24>>3]=+g[b+32>>3];g[a+32>>3]=d*(+g[h>>3]*+g[b>>3])+c*+g[f>>3];i=+g[h>>3];g[a+40>>3]=e+d*(i*i);g[a+48>>3]=d*(+g[h>>3]*+g[f>>3])-c*+g[b>>3];g[a+56>>3]=+g[b+40>>3];g[a+64>>3]=d*(+g[f>>3]*+g[b>>3])-c*+g[h>>3];g[a+72>>3]=d*(+g[f>>3]*+g[h>>3])+c*+g[b>>3];c=+g[f>>3];g[a+80>>3]=e+d*(c*c);g[a+88>>3]=+g[b+48>>3];return}function Ee(a){a=a|0;var b=0,d=0,e=0;b=FO(136)|0;if(!b)b=0;else{d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}c[b+96>>2]=10;g[b+104>>3]=.10000000149011612;g[b+112>>3]=.9900000095367432;g[b+120>>3]=4.0;g[b+128>>3]=.5}return b|0}function Fe(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{GO(b);c[a>>2]=0;a=0}return a|0}function Ge(a,b){a=a|0;b=+b;if(!a)a=-1;else{g[a+128>>3]=b;a=0}return a|0}function He(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=zb;zb=zb+176|0;j=x+168|0;i=x+160|0;s=x+144|0;t=x+48|0;u=x;v=b+8|0;h=c[v>>2]|0;do if((h|0)>=3){w=FO(h*96|0)|0;if(!w){Ue(0,3,41875,i);h=-1;break}r=FO(h<<4)|0;if(!r){Ue(0,3,41875,j);GO(w);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}d=b+4|0;m=s+8|0;n=a+104|0;o=a+96|0;p=a+120|0;q=a+112|0;l=0.0;j=0;a:while(1){ud(a,e,t)|0;k=0.0;i=0;while(1){h=c[v>>2]|0;if((i|0)>=(h|0))break;if((ve(s,t,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=16;break a}h=c[b>>2]|0;z=+g[h+(i<<4)>>3]-+g[s>>3];y=+g[h+(i<<4)+8>>3]-+g[m>>3];h=i<<1;g[r+(h<<3)>>3]=z;g[r+((h|1)<<3)>>3]=y;k=k+(z*z+y*y);i=i+1|0}k=k/+(h|0);if(k<+g[n>>3]){i=31;break}if((j|0?k<+g[p>>3]:0)?k/l>+g[q>>3]:0){i=31;break}if((j|0)==(c[o>>2]|0)){i=31;break}i=0;while(1){if((i|0)>=(h|0))break;if((we(w+(i*12<<3)|0,a,e,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=27;break a}i=i+1|0;h=c[v>>2]|0}if((Ae(u,r,w,h<<1)|0)<0){i=29;break}Be(e,u)|0;l=k;j=j+1|0}if((i|0)==16){Ie(w,r);h=-1;break}else if((i|0)==27){Ie(w,r);h=-1;break}else if((i|0)==29){Ie(w,r);h=-1;break}else if((i|0)==31){g[f>>3]=k;GO(w);GO(r);h=0;break}}else h=-1;while(0);zb=x;return h|0}function Ie(a,b){a=a|0;b=b|0;GO(a);GO(b);return}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=zb;zb=zb+192|0;l=F+184|0;k=F+176|0;j=F+168|0;h=F+160|0;A=F+144|0;B=F+48|0;C=F;D=b+8|0;i=c[D>>2]|0;do if((i|0)>=4){m=~~(+g[a+128>>3]*+(i|0))+-1|0;m=(m|0)>3?m:3;E=FO(i*96|0)|0;if(!E){Ue(0,3,41875,h);h=-1;break}z=FO(i<<4)|0;if(!z){Ue(0,3,41875,j);GO(E);h=-1;break}h=i<<3;y=FO(h)|0;if(!y){Ue(0,3,41875,k);GO(E);GO(z);h=-1;break}x=FO(h)|0;if(!x){Ue(0,3,41875,l);GO(E);GO(z);GO(y);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}v=b+4|0;w=A+8|0;d=x+(m<<3)|0;m=a+104|0;s=a+96|0;t=a+120|0;u=a+112|0;q=0.0;l=0;a:while(1){ud(a,e,B)|0;h=0;while(1){i=c[D>>2]|0;if((h|0)>=(i|0))break;if((ve(A,B,(c[v>>2]|0)+(h*24|0)|0)|0)<0){i=20;break a}k=c[b>>2]|0;p=+g[k+(h<<4)>>3]-+g[A>>3];r=+g[k+(h<<4)+8>>3]-+g[w>>3];k=h<<1;g[z+(k<<3)>>3]=p;g[z+((k|1)<<3)>>3]=r;r=p*p+r*r;g[x+(h<<3)>>3]=r;g[y+(h<<3)>>3]=r;h=h+1|0}oy(x,i,8,18);r=+g[d>>3]*4.0;r=r<16.0?16.0:r;i=c[D>>2]|0;p=r/6.0;o=0.0;h=0;while(1){if((h|0)>=(i|0))break;n=+g[x+(h<<3)>>3];if(n>r)n=p;else{n=1.0-n/r;n=p*(1.0-n*(n*n))}o=o+n;h=h+1|0}o=o/+(i|0);if(o<+g[m>>3]){i=44;break}if((l|0?o<+g[t>>3]:0)?o/q>+g[u>>3]:0){i=44;break}if((l|0)==(c[s>>2]|0)){i=44;break}h=0;k=0;while(1){if((k|0)>=(i|0))break;n=+g[y+(k<<3)>>3];if(n<=r){j=h*6|0;i=E+(j<<3)|0;if((we(i,a,e,(c[v>>2]|0)+(k*24|0)|0)|0)<0){i=36;break a}q=1.0-n/r;q=q*q;g[i>>3]=q*+g[i>>3];i=E+((j|1)<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+2<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+3<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+4<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+5<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+6<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+7<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+8<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+9<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+10<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+11<<3)|0;g[i>>3]=q*+g[i>>3];i=k<<1;g[z+(h<<3)>>3]=q*+g[z+(i<<3)>>3];g[z+(h+1<<3)>>3]=q*+g[z+((i|1)<<3)>>3];h=h+2|0;i=c[D>>2]|0}k=k+1|0}if((h|0)<6){i=40;break}if((Ae(C,z,E,h)|0)<0){i=42;break}Be(e,C)|0;q=o;l=l+1|0}if((i|0)==20){Ke(E,z,y,x);h=-1;break}else if((i|0)==36){Ke(E,z,y,x);h=-1;break}else if((i|0)==40){Ke(E,z,y,x);h=-1;break}else if((i|0)==42){Ke(E,z,y,x);h=-1;break}else if((i|0)==44){g[f>>3]=o;GO(E);GO(z);GO(y);GO(x);h=0;break}}else h=-1;while(0);zb=F;return h|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;GO(a);GO(b);GO(c);GO(d);return}function Le(a,b){a=a|0;b=b|0;var c=0.0;c=+g[a>>3]-+g[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;t=zb;zb=zb+128|0;s=t+120|0;p=t+112|0;o=t+104|0;m=t+96|0;l=t+88|0;j=t+80|0;i=t+72|0;r=t;a:do if((e|0)>=4){h=0;while(1){if((h|0)>=(e|0))break;if(+g[d+(h*24|0)+16>>3]!=0.0){h=-1;break a}else h=h+1|0}if((((((((!(+g[a>>3]==0.0)?!(+g[a+32>>3]!=0.0):0)?(q=a+40|0,!(+g[q>>3]==0.0)):0)?!(+g[a+64>>3]!=0.0):0)?!(+g[a+72>>3]!=0.0):0)?!(+g[a+80>>3]!=1.0):0)?!(+g[a+24>>3]!=0.0):0)?!(+g[a+56>>3]!=0.0):0)?!(+g[a+88>>3]!=0.0):0){h=e<<1;n=Dd(h,8)|0;if(!n){Ue(0,3,20681,i);h=-1;break}k=Dd(h,1)|0;if(!k){Ld(n)|0;Ue(0,3,20707,j);h=-1;break}h=0;while(1){if((h|0)==(e|0))break;y=d+(h*24|0)|0;j=c[n>>2]|0;i=h<<4;g[j+(i<<3)>>3]=+g[y>>3];x=d+(h*24|0)+8|0;g[j+((i|1)<<3)>>3]=+g[x>>3];g[j+((i|2)<<3)>>3]=1.0;g[j+((i|3)<<3)>>3]=0.0;g[j+((i|4)<<3)>>3]=0.0;g[j+((i|5)<<3)>>3]=0.0;w=b+(h<<4)|0;g[j+((i|6)<<3)>>3]=-(+g[y>>3]*+g[w>>3]);g[j+((i|7)<<3)>>3]=-(+g[x>>3]*+g[w>>3]);g[j+((i|8)<<3)>>3]=0.0;g[j+((i|9)<<3)>>3]=0.0;g[j+((i|10)<<3)>>3]=0.0;g[j+((i|11)<<3)>>3]=+g[y>>3];g[j+((i|12)<<3)>>3]=+g[x>>3];g[j+((i|13)<<3)>>3]=1.0;v=b+(h<<4)+8|0;g[j+((i|14)<<3)>>3]=-(+g[y>>3]*+g[v>>3]);g[j+((i|15)<<3)>>3]=-(+g[x>>3]*+g[v>>3]);i=c[k>>2]|0;j=h<<1;g[i+(j<<3)>>3]=+g[w>>3];g[i+((j|1)<<3)>>3]=+g[v>>3];h=h+1|0}b=Id(n)|0;if(!b){Ld(n)|0;Ld(k)|0;Ue(0,3,20733,l);h=-1;break}j=Gd(b,n)|0;if(!j){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ue(0,3,20759,m);h=-1;break}i=Gd(b,k)|0;if(!i){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ue(0,3,20785,o);h=-1;break}if((Xd(j)|0)<0){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20811,p);h=-1;break}h=Gd(j,i)|0;if(!h){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20837,s);h=-1;break}else{p=c[h>>2]|0;H=+g[p+48>>3];w=r+16|0;E=+g[a+48>>3];A=+g[q>>3];K=(+g[p+24>>3]-H*E)/A;s=r+8|0;D=+g[a+16>>3];C=+g[a+8>>3];B=+g[a>>3];N=(+g[p>>3]-H*D-K*C)/B;I=+g[p+56>>3];v=r+40|0;L=(+g[p+32>>3]-E*I)/A;x=r+32|0;J=(+g[p+8>>3]-D*I-C*L)/B;y=r+24|0;A=(+g[p+40>>3]-E)/A;E=+g[p+16>>3];Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ld(h)|0;M=+u(+(H*H+(K*K+N*N)));z=+u(+(I*I+(L*L+J*J)));g[r>>3]=N/M;g[s>>3]=K/M;g[w>>3]=H/M;g[y>>3]=J/z;g[x>>3]=L/z;g[v>>3]=I/z;z=(M+z)*.5;Ne(r);M=+g[s>>3];I=+g[v>>3];L=+g[w>>3];J=+g[x>>3];H=M*I-L*J;K=+g[y>>3];N=+g[r>>3];G=L*K-I*N;O=J*N-M*K;F=+u(+(O*O+(H*H+G*G)));H=H/F;g[r+48>>3]=H;G=G/F;g[r+56>>3]=G;F=O/F;g[r+64>>3]=F;g[f>>3]=N;g[f+32>>3]=M;g[f+64>>3]=L;g[f+8>>3]=K;g[f+40>>3]=J;g[f+72>>3]=I;g[f+16>>3]=H;g[f+48>>3]=G;g[f+80>>3]=F;g[f+24>>3]=(E-D-C*A)/B/z;g[f+56>>3]=A/z;g[f+88>>3]=1.0/z;h=0;break}}else h=-1}else h=-1;while(0);zb=t;return h|0}function Ne(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0;l=+g[a>>3];L=a+8|0;o=+g[L>>3];M=a+16|0;p=+g[M>>3];N=a+24|0;B=+g[N>>3];O=a+32|0;C=+g[O>>3];K=a+40|0;f=+g[K>>3];b=o*f-p*C;c=p*B-l*f;d=l*C-o*B;e=+u(+(d*d+(b*b+c*c)));do if(!(e==0.0)){m=b/e;k=c/e;j=d/e;A=l*B+o*C+p*f;A=A<0.0?-A:A;A=(+u(+(A+1.0))+ +u(+(1.0-A)))*.5;d=l*k;b=o*m;c=d-b;if(c!=0.0){n=0;y=m;h=l;i=o;z=k;e=p}else{P=l*j-p*m!=0.0;i=P?p:o;h=P?l:p;z=P?j:k;y=P?m:j;d=h*z;c=i*y;n=P?1:2;b=c;c=d-c;e=P?o:l;j=P?k:m}if(!(c==0.0)?(t=(i*j-e*z)/c,v=A*z/c,x=b-d,w=(h*j-e*y)/x,x=A*y/x,r=t*t+w*w+1.0,s=t*v+w*x,q=s*s-r*(v*v+x*x+-1.0),!(q<0.0)):0){d=+u(+q);h=(d-s)/r;i=v+t*h;e=x+w*h;d=(-s-d)/r;c=v+t*d;b=x+w*d;switch(n&3){case 1:{t=b;s=d;q=c;r=e;p=h;o=i;l=y;m=j;b=z;break}case 2:{t=c;s=b;q=d;r=i;p=e;o=h;l=j;m=z;b=y;break}default:{t=d;s=b;q=c;r=h;p=e;o=i;l=y;m=z;b=j}}c=B*m;d=C*l;e=c-d;if(e!=0.0){n=0;h=l;i=B;j=C;k=m}else{P=B*b-f*l!=0.0;j=P?f:C;i=P?B:f;k=P?b:m;h=P?l:b;f=i*k;e=j*h;n=P?1:2;c=f;d=e;e=f-e;f=P?C:B;b=P?m:l}if(!(e==0.0)?(G=(j*b-f*k)/e,H=A*k/e,J=d-c,I=(i*b-f*h)/J,J=A*h/J,E=G*G+I*I+1.0,F=G*H+I*J,D=F*F-E*(H*H+J*J+-1.0),!(D<0.0)):0){j=+u(+D);h=(j-F)/E;d=H+G*h;i=J+I*h;j=(-F-j)/E;c=H+G*j;b=J+I*j;switch(n&3){case 1:{l=b;b=j;j=c;k=i;i=h;h=d;break}case 2:{l=c;k=d;break}default:{l=j;j=c;k=h;h=d}}f=o*h+p*i+r*k;f=f<0.0?-f:f;e=o*j+p*b+r*l;e=e<0.0?-e:e;d=q*h+s*i+t*k;d=d<0.0?-d:d;c=q*j+s*b+t*l;c=c<0.0?-c:c;if(f>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}else if(e>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}}}}while(0);return}function Oe(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,0))}function Qe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+208|0;w=C+200|0;v=C+192|0;y=C+96|0;x=C;z=e+4|0;i=c[z>>2]|0;u=e+112|0;p=e+120|0;o=0;while(1){if((o|0)>=(i|0))break;q=c[e>>2]|0;r=q+(o*320|0)|0;if(!(c[q+(o*320|0)+4>>2]|0)){j=-1;k=0;while(1){if((k|0)>=(d|0))break;if((c[b+(k<<8)+8>>2]|0)==(c[r>>2]|0)?(l=+g[b+(k<<8)+40>>3],!(l<+g[u>>3])):0)if(!((j|0)!=-1?!(+g[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{n=q+(o*320|0)+312|0;m=0;j=-1;while(1){if((m|0)>=(d|0))break;k=c[b+(m<<8)+12>>2]|0;if((k|0)==0?(t=b+(m<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=n;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)B=20}else if((k|0)==(c[r>>2]|0))B=20;if((B|0)==20){B=0;h=+g[b+(m<<8)+48>>3];if(!(h<+g[p>>3]))if(!((j|0)!=-1?!(+g[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}o=o+1|0}p=0;n=0;j=0;o=0;while(1){if((o|0)>=(i|0))break;i=c[e>>2]|0;k=c[i+(o*320|0)+304>>2]|0;do if((k|0)<0){k=p;i=n}else{m=b+(k<<8)|0;if(+Uc(a,m,+g[i+(o*320|0)+8>>3],x)>4.0){c[(c[e>>2]|0)+(o*320|0)+304>>2]=-1;i=b+(k<<8)+236|0;if(c[i>>2]|0){k=p;i=n;break}c[i>>2]=7;k=p;i=n;break}k=c[m>>2]|0;a:do if((p|0)==0|(n|0)<(k|0)){i=0;while(1){if((i|0)==3){i=k;j=o;break a}j=0;while(1){if((j|0)==4)break;g[y+(i<<5)+(j<<3)>>3]=+g[x+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else i=n;while(0);k=p+1|0}while(0);p=k;n=i;o=o+1|0;i=c[z>>2]|0}b:do if((p|0)!=0?(p|0)>=(c[e+128>>2]|0):0){ud(y,(c[e>>2]|0)+(j*320|0)+112|0,x)|0;o=p<<2;q=FO(p<<6)|0;if(!q){Ue(0,3,41858,v);Ea(1)}p=FO(p*96|0)|0;if(!p){Ue(0,3,41858,w);Ea(1)}n=c[z>>2]|0;m=0;i=0;while(1){if((m|0)>=(n|0))break;j=c[e>>2]|0;k=c[j+(m*320|0)+304>>2]|0;if((k|0)>=0){v=c[b+(k<<8)+16>>2]|0;u=(4-v|0)%4|0;w=i<<3;g[q+(w<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|1)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(5-v|0)%4|0;g[q+((w|2)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|3)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(6-v|0)%4|0;g[q+((w|4)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|5)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];v=(7-v|0)%4|0;g[q+((w|6)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)>>3];g[q+((w|7)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)+8>>3];w=i*12|0;g[p+(w<<3)>>3]=+g[j+(m*320|0)+208>>3];g[p+((w|1)<<3)>>3]=+g[j+(m*320|0)+216>>3];g[p+((w|2)<<3)>>3]=+g[j+(m*320|0)+224>>3];g[p+((w|3)<<3)>>3]=+g[j+(m*320|0)+232>>3];g[p+(w+4<<3)>>3]=+g[j+(m*320|0)+240>>3];g[p+(w+5<<3)>>3]=+g[j+(m*320|0)+248>>3];g[p+(w+6<<3)>>3]=+g[j+(m*320|0)+256>>3];g[p+(w+7<<3)>>3]=+g[j+(m*320|0)+264>>3];g[p+(w+8<<3)>>3]=+g[j+(m*320|0)+272>>3];g[p+(w+9<<3)>>3]=+g[j+(m*320|0)+280>>3];g[p+(w+10<<3)>>3]=+g[j+(m*320|0)+288>>3];g[p+(w+11<<3)>>3]=+g[j+(m*320|0)+296>>3];i=i+1|0}m=m+1|0}m=e+104|0;j=(f|0)!=0;if(!(c[m>>2]|0)){i=e+8|0;h=+Wc(a,x,q,p,o,i);if(j&h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,i)}}}}GO(p);GO(q)}else{h=+Wc(a,x,q,p,o,y);k=e+8|0;l=+Wc(a,k,q,p,o,k);i=h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);e:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);f:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);g:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l}}}}}else if(i){i=0;while(1){if((i|0)==3)break c;j=0;while(1){if((j|0)==4)break;g[e+8+(i<<5)+(j<<3)>>3]=+g[y+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else h=l;while(0);GO(p);GO(q)}if(h<20.0){c[m>>2]=1;break}c[m>>2]=0;j=c[z>>2]|0;i=0;while(1){if((i|0)>=(j|0))break b;k=c[(c[e>>2]|0)+(i*320|0)+304>>2]|0;if((k|0)>=0?(A=b+(k<<8)+236|0,(c[A>>2]|0)==0):0)c[A>>2]=8;i=i+1|0}}else B=45;while(0);if((B|0)==45){c[e+104>>2]=0;h=-1.0}zb=C;return +h}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,1))}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0;T=zb;zb=zb+2528|0;S=T+2512|0;Q=T+2504|0;G=T+2488|0;P=T+2480|0;F=T+2472|0;E=T+2456|0;O=T+2448|0;D=T+2440|0;N=T+2432|0;M=T+2424|0;L=T+2416|0;C=T+2408|0;h=T+2400|0;f=T+2392|0;H=T+2384|0;e=T+2376|0;d=T+2368|0;z=T+2304|0;I=T+2048|0;J=T;A=T+2524|0;R=T+2520|0;B=T+2516|0;K=rz(a,21853)|0;do if(!K){c[d>>2]=a;Ue(0,3,20863,d);d=ox()|0;d=By(c[d>>2]|0)|0;c[e>>2]=57671;c[e+4>>2]=d;Ue(0,3,21881,e);d=0}else{Te(I,K);c[H>>2]=R;if((Cz(I,21887,H)|0)!=1){c[f>>2]=a;Ue(0,3,20916,f);xz(K)|0;d=0;break}d=c[R>>2]|0;y=FO(d*320|0)|0;if(!y){Ue(0,3,41858,h);Ea(1)}p=(b|0)==0;q=z+8|0;r=z+16|0;s=z+24|0;t=z+32|0;u=z+40|0;v=z+48|0;w=z+56|0;x=0;f=0;a:while(1){if((x|0)>=(d|0)){d=31;break}Te(I,K);d=y+(x*320|0)|0;e=y+(x*320|0)+312|0;c[C>>2]=e;c[C+4>>2]=A;if((Cz(I,21017,C)|0)!=1){if(p){d=11;break}if(!(Ad(J,a,2048,1)|0)){d=13;break}sA(J,I,2047-(Qy(J)|0)|0)|0;o=sd(b,J)|0;c[d>>2]=o;if((o|0)<0){d=15;break}else{d=1;e=0}}else{e=c[e>>2]|0;c[d>>2]=(e&-32768|0)==0&0==0?e&32767:0;d=2;e=1}c[y+(x*320|0)+4>>2]=e;f=f|d;Te(I,K);e=y+(x*320|0)+8|0;c[D>>2]=e;if((Cz(I,21313,D)|0)!=1){d=18;break}Te(I,K);m=y+(x*320|0)+16|0;n=y+(x*320|0)+24|0;o=y+(x*320|0)+40|0;c[E>>2]=m;c[E+4>>2]=n;c[E+8>>2]=y+(x*320|0)+32;c[E+12>>2]=o;if((Cz(I,21422,E)|0)==4)d=1;else{c[F>>2]=H;c[F+4>>2]=B;if((Cz(I,21438,F)|0)!=2){d=23;break}d=0}do{Te(I,K);c[G>>2]=y+(x*320|0)+16+(d<<5);c[G+4>>2]=y+(x*320|0)+16+(d<<5)+8;c[G+8>>2]=y+(x*320|0)+16+(d<<5)+16;c[G+12>>2]=y+(x*320|0)+16+(d<<5)+24;if((Cz(I,21422,G)|0)!=4){d=25;break a}d=d+1|0}while(d>>>0<3);xd(m,y+(x*320|0)+112|0)|0;V=+g[e>>3];U=V*-.5;g[z>>3]=U;V=V*.5;g[q>>3]=V;g[r>>3]=V;g[s>>3]=V;g[t>>3]=V;g[u>>3]=U;g[v>>3]=U;g[w>>3]=U;e=y+(x*320|0)+48|0;h=y+(x*320|0)+56|0;i=y+(x*320|0)+72|0;j=y+(x*320|0)+80|0;k=y+(x*320|0)+88|0;l=y+(x*320|0)+104|0;d=0;while(1){if((d|0)==4)break;U=+g[z+(d<<4)>>3];V=+g[z+(d<<4)+8>>3];g[y+(x*320|0)+208+(d*24|0)>>3]=+g[o>>3]+(+g[m>>3]*U+ +g[n>>3]*V);g[y+(x*320|0)+208+(d*24|0)+8>>3]=+g[i>>3]+(U*+g[e>>3]+V*+g[h>>3]);g[y+(x*320|0)+208+(d*24|0)+16>>3]=+g[l>>3]+(U*+g[j>>3]+V*+g[k>>3]);d=d+1|0}x=x+1|0;d=c[R>>2]|0}if((d|0)==11){c[L>>2]=a;c[L+4>>2]=I;Ue(0,3,21024,L)}else if((d|0)==13){c[M>>2]=a;Ue(0,3,21152,M)}else if((d|0)==15){c[N>>2]=a;c[N+4>>2]=J;Ue(0,3,21236,N)}else if((d|0)==18){c[O>>2]=a;c[O+4>>2]=x+1;Ue(0,3,21317,O)}else if((d|0)==23){c[P>>2]=a;c[P+4>>2]=x+1;Ue(0,3,21444,P)}else if((d|0)==25){c[Q>>2]=a;c[Q+4>>2]=x+1;Ue(0,3,21444,Q)}else if((d|0)==31){xz(K)|0;d=FO(136)|0;if(!d){Ue(0,3,41858,S);Ea(1)}c[d>>2]=y;c[d+4>>2]=c[R>>2];c[d+128>>2]=0;c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);g[d+112>>3]=.5;g[d+120>>3]=.5;break}xz(K)|0;GO(y);d=0}while(0);zb=T;return d|0}function Te(b,c){b=b|0;c=c|0;var d=0,e=0;a:while(1){if(!(Az(b,256,c)|0))break;d=Qy(b)|0;b:while(1){if(!d)break;d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0}switch(a[b>>0]|0){case 0:case 35:break;default:break a}}return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;b=g;if((e|0)!=0&(c[3916]|0)<=(d|0)?a[e>>0]|0:0){c[b>>2]=f;Ve(0,d,e,b)}zb=g;return}function Ve(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;j=l+16|0;b=l;if((!((e|0)==0|(c[3916]|0)>(d|0))?a[e>>0]|0:0)?(c[b>>2]=c[f>>2],k=Jx(0,0,e,b)|0,k|0):0){if(d>>>0<4)b=(Qy(c[1744+(d<<2)>>2]|0)|0)+3|0;else b=0;g=b+k|0;h=g+1|0;i=FO(h)|0;if(b|0){c[j>>2]=c[1744+(d<<2)>>2];bz(i,b+1|0,21553,j)|0}Jx(i+b|0,k+1|0,e,f)|0;do if(0){if(0?(m=c[13864]|0,m>>>0<0):0){b=0+m|0;if(g>>>0>(-4-m+0|0)>>>0){a[b>>0]=46;a[b+1>>0]=46;a[b+2>>0]=46;a[b+3>>0]=0;c[13864]=0;break}else{Wz(b,i,h)|0;c[13864]=(c[13864]|0)+g;break}}}else kz(i,c[4001]|0)|0;while(0);GO(i)}zb=l;return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(b){e=rz(b,22236)|0;if(e){Kz(e,0,2)|0;f=hA(e)|0;Kz(e,0,0)|0;g=f+1|0;b=FO(g)|0;if(!b){xz(e)|0;b=ox()|0;c[b>>2]=48;b=0;break}if(!(gA(b,f,1,e)|0)){GO(b);xz(e)|0;b=0;break}a[b+f>>0]=0;xz(e)|0;if(d)c[d>>2]=g}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}while(0);return b|0}function Xe(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+40>>2]=b;a=0}return a|0}function Ye(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+44>>2]=b;a=0}return a|0}function Ze(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+24>>2]=b;a=0}return a|0}function _e(a,b){a=a|0;b=b|0;b=(b|0)<40?b:40;if(!a)b=-1;else{c[a+36>>2]=(b|0)>3?b:3;b=0}return b|0}function $e(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+28>>2]=b;a=0}return a|0}function af(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+32>>2]=b;a=0}return a|0}function bf(b,e){b=b|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0;z=zb;zb=zb+16|0;w=b+4|0;x=b+12|0;A=+f[x>>2];y=iz(+(c[w>>2]|0)*e/A)|0;t=b+8|0;u=iz(+(c[t>>2]|0)*e/A)|0;v=FO(16)|0;if(!v){Ue(0,3,41858,z);Ea(1)}c[v+4>>2]=y;c[v+8>>2]=u;f[v+12>>2]=e;g=FO(B(u,y)|0)|0;c[v>>2]=g;if(!g){Ue(0,3,41858,z+8|0);Ea(1)}h=0;while(1){if((h|0)>=(u|0))break;A=+f[x>>2];s=iz(A*+(h|0)/e)|0;h=h+1|0;r=iz(A*+(h|0)/e)|0;i=c[t>>2]|0;r=(r|0)>(i|0)?i:r;i=0;while(1){if((i|0)>=(y|0))break;A=+f[x>>2];q=iz(A*+(i|0)/e)|0;i=i+1|0;p=iz(A*+(i|0)/e)|0;o=c[w>>2]|0;p=(p|0)>(o|0)?o:p;j=0;k=0;l=s;while(1){if((l|0)>=(r|0))break;m=q;n=(c[b>>2]|0)+((B(l,o)|0)+q)|0;while(1){if((m|0)>=(p|0))break;C=j+(d[n>>0]|0)|0;m=m+1|0;n=n+1|0;j=C;k=k+1|0}l=l+1|0}a[g>>0]=(j|0)/(k|0)|0;g=g+1|0}}zb=z;return v|0}function cf(a){a=a|0;var b=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+96|0;m=q+72|0;l=q+64|0;k=q+56|0;j=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;e=q+16|0;b=q+8|0;n=q+80|0;d=FO((Qy(a)|0)+6|0)|0;if(!d){Ue(0,3,41858,q);Ea(1)}c[b>>2]=a;c[b+4>>2]=21589;Hx(d,21584,b)|0;p=rz(d,22236)|0;GO(d);a:do if(!p){c[e>>2]=a;c[e+4>>2]=21589;Ue(0,3,21595,e);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,g);Ea(1)}d=b+4|0;if((gA(d,4,1,p)|0)==1?(o=c[d>>2]|0,(o|0)>=1):0){c[i>>2]=o;Ue(0,1,21668,i);e=o<<2;g=FO(e)|0;c[b>>2]=g;if(!g){Ue(0,3,41858,j);Ea(1)}j=FO(16)|0;c[g>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}d=ff(p)|0;if(!d){c[l>>2]=a;c[l+4>>2]=21589;Ue(0,2,21698,l);GO(c[g>>2]|0);GO(g);GO(b);iA(p);b=df(p)|0;break}if((c[d+4>>2]|0)!=1){c[m>>2]=a;c[m+4>>2]=21589;Ue(0,2,21698,m);GO(c[g>>2]|0);GO(g);GO(b);GO(d);xz(p)|0;b=0;break}m=c[g>>2]|0;c[m+4>>2]=c[d+8>>2];c[m+8>>2]=c[d+12>>2];c[m+12>>2]=c[d+16>>2];c[m>>2]=c[d>>2];GO(d);Kz(p,4-e|0,2)|0;e=1;while(1){if((e|0)>=(o|0)){d=29;break}if((gA(n,4,1,p)|0)!=1){d=21;break}m=bf(c[g>>2]|0,+f[n>>2])|0;c[g+(e<<2)>>2]=m;if(!m){d=25;break}e=e+1|0}b:do if((d|0)==21){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==25){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==29){xz(p)|0;break a}while(0);GO(g)}else Ue(0,3,21643,h);GO(b);xz(p)|0;b=0}while(0);zb=q;return b|0}function df(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+48|0;h=l+32|0;g=l+24|0;f=l+16|0;e=l+8|0;b=FO(8)|0;if(!b){Ue(0,3,41858,l);Ea(1)}d=b+4|0;a:do if((gA(d,4,1,a)|0)==1?(k=c[d>>2]|0,(k|0)>=1):0){j=FO(k<<2)|0;c[b>>2]=j;if(!j){Ue(0,3,41858,f);Ea(1)}d=0;while(1){if((d|0)>=(k|0))break;f=FO(16)|0;c[j+(d<<2)>>2]=f;if(!f){i=12;break}else d=d+1|0}if((i|0)==12){Ue(0,3,41858,g);Ea(1)}e=0;while(1){if((e|0)>=(k|0)){i=44;break}d=j+(e<<2)|0;if((gA((c[d>>2]|0)+4|0,4,1,a)|0)!=1){i=15;break}if((gA((c[d>>2]|0)+8|0,4,1,a)|0)!=1){i=22;break}if((gA((c[d>>2]|0)+12|0,4,1,a)|0)!=1){i=29;break}i=c[d>>2]|0;i=FO(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)|0;c[c[d>>2]>>2]=i;if(!i){i=36;break}g=c[d>>2]|0;g=gA(c[g>>2]|0,1,B(c[g+8>>2]|0,c[g+4>>2]|0)|0,a)|0;i=c[d>>2]|0;e=e+1|0;if((g|0)!=(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)){i=38;break}}b:do if((i|0)==15){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==22){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==29){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==36){Ue(0,3,41858,h);Ea(1)}else if((i|0)==38){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==44){xz(a)|0;break a}while(0);GO(j);i=46}else i=5;while(0);if((i|0)==5){Ue(0,3,21643,e);i=46}if((i|0)==46){GO(b);xz(a)|0;b=0}zb=l;return b|0}function ef(a){a=a|0;var b=0,d=0,e=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[c[d+(e<<2)>>2]>>2]|0);GO(c[(c[c[a>>2]>>2]|0)+(e<<2)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function ff(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(20)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=gf(a,b+8|0,b+12|0,b+4|0,b+16|0)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function gf(d,e,g,h,k){d=d|0;e=e|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,N=0;N=zb;zb=zb+832|0;z=N+528|0;y=N+520|0;x=N+512|0;A=4;D=FO(40)|0;c[D>>2]=0;C=N+24|0;n=N+536|0;w=N;aP(C|0,0,488)|0;i=0;o=G(63,n|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)!=1){c[C>>2]=o;c[n>>2]=112;D=XO(n+132|0,1,D|0,A|0)|0;A=F()|0;i=0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1)m=l;else m=0}else m=l;a:while(1){if(m|0){i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;M(8,0,3,21756,x|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=7;break}}i=0;L(1,C|0,90,488);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;K(39,C|0,d|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;m=H(19,C|0,1)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){n=YO(c[l>>2]|0,D|0,A|0)|0;if(!n)Qa(l|0,j|0);E(j|0)}else n=-1;l=F()|0;if((n|0)==1){m=l;continue}if((m|0)!=1){i=0;M(8,0,3,21782,y|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=14;break}}i=0;G(64,C|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}t=C+36|0;u=C+28|0;s=B(c[u>>2]|0,c[t>>2]|0)|0;v=C+32|0;l=B(s,c[v>>2]|0)|0;i=0;l=G(65,l|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;if(!l){i=0;M(8,0,3,41858,z|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=20;break}}q=C+140|0;r=C+116|0;p=0;while(1){if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;m=0;while(1){if((m|0)==5)break;o=l+(B(m+p|0,s)|0)|0;c[w+(m<<2)>>2]=o;m=m+1|0}i=0;n=I(25,C|0,w|0,5)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){o=YO(c[m>>2]|0,D|0,A|0)|0;if(!o)Qa(m|0,j|0);E(j|0)}else o=-1;m=F()|0;if((o|0)==1)continue a;p=n+p|0}i=0;G(66,C|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;i=0;J(113,C|0);m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)!=1){m=30;break}}b:do if((m|0)==7)l=0;else if((m|0)==14)l=0;else if((m|0)==20)l=0;else if((m|0)==30){if(e|0)c[e>>2]=c[u>>2];if(g|0)c[g>>2]=c[v>>2];if(h|0)c[h>>2]=c[t>>2];if(k){m=a[C+290>>0]|0;switch(m<<24>>24){case 1:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535);break b}break}case 2:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535)*2.5399999618530273;break b}break}default:if(((m&255)>2?(b[C+292>>1]|0)==0:0)?(b[C+294>>1]|0)==0:0){f[k>>2]=+(m&255);break b}}f[k>>2]=0.0}}while(0);GO(D|0);zb=N;return l|0}function hf(a){a=a|0;Qa((c[a>>2]|0)+132|0,1)}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+1088|0;m=o+1072|0;l=o+1064|0;n=o+1056|0;g=o+1048|0;f=o+1040|0;e=o+1032|0;h=o+1024|0;i=o+768|0;j=o+512|0;k=o;c[h>>2]=a;c[h+4>>2]=b;Hx(k,22627,h)|0;k=rz(k,21853)|0;if(!k)a=0;else{a=FO(8)|0;if(!a){Ue(0,3,41858,e);Ea(1)}a:do if(kf(i,k)|0){h=a+4|0;c[f>>2]=h;if((Cz(i,21887,f)|0)!=1){GO(a);a=0;break}b=c[h>>2]|0;if((b|0)<1){GO(a);a=0;break}f=FO(b*56|0)|0;c[a>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}f=0;b:while(1){if((f|0)>=(b|0))break a;if(!(kf(i,k)|0)){b=15;break}c[n>>2]=j;if((Cz(i,21914,n)|0)!=1){b=17;break}g=sd(d,j)|0;e=c[a>>2]|0;c[e+(f*56|0)+4>>2]=g;if((g|0)<0){b=19;break}if(!(kf(i,k)|0)){b=21;break}c[l>>2]=(c[a>>2]|0)+(f*56|0);if((Cz(i,21815,l)|0)!=1){b=24;break}b=0;while(1){if(b>>>0>=3)break;if(!(kf(i,k)|0)){b=27;break b}g=c[a>>2]|0;c[m>>2]=g+(f*56|0)+8+(b<<4);c[m+4>>2]=g+(f*56|0)+8+(b<<4)+4;c[m+8>>2]=g+(f*56|0)+8+(b<<4)+8;c[m+12>>2]=g+(f*56|0)+8+(b<<4)+12;if((Cz(i,22080,m)|0)==4)b=b+1|0;else{b=29;break b}}f=f+1|0;b=c[h>>2]|0}if((b|0)==15){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==17){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==19){GO(e);GO(a);a=0;break}else if((b|0)==21){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==24){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==27){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==29){GO(c[a>>2]|0);GO(a);a=0;break}}else{GO(a);a=0}while(0);xz(k)|0}zb=o;return a|0}function kf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+640|0;s=v+624|0;r=v+616|0;q=v+608|0;p=v+600|0;o=v+592|0;n=v+584|0;m=v+576|0;l=v+568|0;k=v+560|0;j=v+552|0;g=v+544|0;f=v+536|0;e=v+528|0;d=v+520|0;i=v+512|0;t=v;c[i>>2]=a;c[i+4>>2]=b;Hx(t,22627,i)|0;t=rz(t,22236)|0;if(!t){c[d>>2]=a;Ue(0,3,21818,d);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,e);Ea(1)}a=b+4|0;a:do if((gA(a,4,1,t)|0)==1){h=c[a>>2]|0;i=FO(h*20|0)|0;c[b>>2]=i;if(!i){Ue(0,3,41858,g);Ea(1)}g=0;b:while(1){if((g|0)>=(h|0))break a;if((gA(i+(g*20|0)+8|0,4,1,t)|0)!=1){u=12;break}if((gA(i+(g*20|0)+12|0,4,1,t)|0)!=1){u=15;break}if((gA(i+(g*20|0)+16|0,4,1,t)|0)!=1){u=17;break}e=i+(g*20|0)+4|0;if((gA(e,4,1,t)|0)!=1){u=19;break}a=c[e>>2]|0;d=FO(a*20|0)|0;f=i+(g*20|0)|0;c[f>>2]=d;if(!d){u=22;break}d=0;while(1){if((d|0)>=(a|0))break;if((gA((c[f>>2]|0)+(d*20|0)|0,4,1,t)|0)!=1){u=25;break b}if((gA((c[f>>2]|0)+(d*20|0)+4|0,4,1,t)|0)!=1){u=27;break b}if((gA((c[f>>2]|0)+(d*20|0)+8|0,4,1,t)|0)!=1){u=29;break b}if((gA((c[f>>2]|0)+(d*20|0)+12|0,4,1,t)|0)!=1){u=31;break b}if((gA((c[f>>2]|0)+(d*20|0)+16|0,4,1,t)|0)!=1){u=34;break b}d=d+1|0;a=c[e>>2]|0}g=g+1|0}switch(u|0){case 12:{Ue(0,3,21839,j);break}case 15:{Ue(0,3,21839,k);break}case 17:{Ue(0,3,21839,l);break}case 19:{Ue(0,3,21839,m);break}case 22:{Ue(0,3,41858,n);Ea(1);break}case 25:{Ue(0,3,21839,o);break}case 27:{Ue(0,3,21839,p);break}case 29:{Ue(0,3,21839,q);break}case 31:{Ue(0,3,21839,r);break}case 34:{Ue(0,3,21839,s);break}}a=0;while(1){if((a|0)==(g|0))break;GO(c[i+(a*20|0)>>2]|0);a=a+1|0}GO(i);u=39}else{Ue(0,3,21839,f);u=39}while(0);if((u|0)==39){GO(b);b=0}xz(t)|0}zb=v;return b|0}function mf(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)b=-1;else{e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[d+(e*20|0)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)of(0,b,c,d)|0;else of(a,b,c,d)|0;return 0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=zb;zb=zb+48|0;e=m;if(!a){t=+f[c>>2];w=+f[c+4>>2];s=+f[b>>2];o=t*s;v=+f[b+4>>2];n=w*v;p=+f[b+12>>2];i=+f[b+16>>2];q=t*i;g=+f[b+20>>2];k=w*g;r=+f[b+28>>2];z=+f[b+32>>2];x=t*z;h=+f[b+36>>2];j=w*h;y=+f[b+44>>2];l=y+(x+j);t=t+10.0;j=y+(t*z+j);w=w+10.0;h=y+(x+w*h);g=(r+(q+w*g))/h;h=(p+(o+w*v))/h;i=(r+(t*i+k))/j;j=(p+(t*s+n))/j;k=(r+(q+k))/l;l=(p+(o+n))/l}else{vd(a+8|0,b,e)|0;s=+f[c>>2];q=+f[c+4>>2];t=+f[e>>2];y=s*t;r=+f[e+4>>2];z=q*r;x=+f[e+12>>2];i=+f[e+16>>2];w=s*i;g=+f[e+20>>2];k=q*g;v=+f[e+28>>2];n=+f[e+32>>2];p=s*n;h=+f[e+36>>2];j=q*h;o=+f[e+44>>2];l=o+(p+j);s=s+10.0;j=o+(s*n+j);q=q+10.0;h=o+(p+q*h);g=(v+(w+q*g))/h;h=(x+(y+q*r))/h;i=(v+(s*i+k))/j;j=(x+(s*t+z))/j;k=(v+(w+k))/l;l=(x+(y+z))/l}x=j-l;y=i-k;y=x*x+y*y;x=h-l;z=g-k;z=x*x+z*z;e=y>2]=x;z=+u(+(e?y:z))*2.5399999618530273;f[d+4>>2]=z;zb=m;return 0}function pf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+32|0;l=G+20|0;j=G+16|0;i=G+12|0;k=G+8|0;C=G+4|0;D=G;a:do if((d|0)<0)d=-1;else switch(d|0){case 0:{q=+((g|0)/8|0|0);r=+((g*7|0)/8|0|0);s=+((h|0)/8|0|0);t=+((h*7|0)/8|0|0);p=+((g|0)/2|0|0);o=+((h|0)/2|0|0);m=0.0;i=0;d=-1;b:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break b;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(nr)?(u=+f[a+(i*24|0)+20>>2],!(ut)):0)?(B=n-p,v=u-o,v=B*B+v*v,v>m):0){m=v;d=i}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 1:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+4|0;d=-1;i=0;m=0.0;c:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break c;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(s=+f[a+(i*24|0)+20>>2],!(so)):0)?(B=n-+f[e>>2],t=s-+f[g>>2],t=B*B+t*t,t>m):0){d=i;m=t}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 2:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+12|0;j=e+4|0;k=e+8|0;d=-1;i=0;m=0.0;d:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break d;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(x=+f[a+(i*24|0)+20>>2],!(xo)):0)?(w=+f[e>>2],B=+f[j>>2],w=(n-w)*(+f[g>>2]-B)-(x-B)*(+f[k>>2]-w),w=w*w,w>m):0){d=i;m=w}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 3:{qf(e,e+8|0,l,j);qf(e,e+16|0,i,k);B=+((g|0)/8|0|0);w=+((g*7|0)/8|0|0);x=+((h|0)/8|0|0);v=+((h*7|0)/8|0|0);z=e+24|0;A=e+28|0;u=+f[i>>2];t=+f[j>>2];m=u*t;s=+f[k>>2];r=+f[l>>2];q=s*r;h=!(m-q>=0.0);y=!(q-m>=0.0);l=h?2:1;b=h?1:2;d=-1;k=0;m=0.0;e:while(1){f:do switch(c[a+(k*24|0)+12>>2]|0){case -1:break e;case 0:{n=+f[a+(k*24|0)+16>>2];if(!(nw)?(E=a+(k*24|0)+20|0,q=+f[E>>2],!(qv)):0){f[z>>2]=n;c[A>>2]=c[E>>2];qf(e,z,C,D);q=+f[C>>2];if(!h){n=+f[D>>2];if(!(t*q-r*n>=0.0))F=39;else{g=!(s*q-u*n>=0.0);i=g?2:3;g=g?3:2;j=1}}else{n=+f[D>>2];F=39}do if((F|0)==39){F=0;o=s*q;p=u*n;if(y|!(o-p>=0.0))if(p-o>=0.0?!(r*n-t*q>=0.0):1)break f;else{i=b;g=l;j=3;break}else{g=!(t*q-r*n>=0.0);i=g?1:3;g=g?3:1;j=2;break}}while(0);n=+rf(e,j,g,i);if(n>m){d=k;m=n}}break}default:{}}while(0);k=k+1|0}if((d|0)!=-1)c[a+(d*24|0)+12>>2]=1;break a}default:{l=0;g:while(1){d=b+(l*24|0)+12|0;h:do switch(c[d>>2]|0){case -1:break g;case 0:{c[d>>2]=1;i=b+(l*24|0)|0;g=b+(l*24|0)+4|0;j=b+(l*24|0)+8|0;d=0;while(1){k=a+(d*24|0)+12|0;switch(c[k>>2]|0){case -1:break h;case 0:{if(((c[i>>2]|0)==(c[a+(d*24|0)>>2]|0)?(c[g>>2]|0)==(c[a+(d*24|0)+4>>2]|0):0)?(c[j>>2]|0)==(c[a+(d*24|0)+8>>2]|0):0){F=55;break g}break}default:{}}d=d+1|0}}default:{}}while(0);l=l+1|0}if((F|0)==55){c[k>>2]=1;break a}c[b+12>>2]=-1;d=c[13865]|0;if(!d){_z(Ta(0)|0);d=c[13865]|0}d=d+1|0;c[13865]=(d|0)==128?0:d;d=0;i=0;i:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break i;case 0:{d=d+1|0;break}default:{}}i=i+1|0}if(!d){d=-1;break a}k=~~(+(d|0)*+($z()|0)*4.656612873077393e-10);d=0;i=0;j:while(1){g=a+(d*24|0)+12|0;j=c[g>>2]|0;switch(j|0){case -1:{d=j;break a}case 0:{if((i|0)==(k|0))break j;i=i+1|0;break}default:{}}d=d+1|0}c[g>>2]=1;break a}}while(0);zb=G;return d|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0;g=+f[b>>2]-+f[a>>2];e=+f[b+4>>2]-+f[a+4>>2];g=+u(+(g*g+e*e));if(!(g==0.0)){f[c>>2]=e/g;f[d>>2]=(+f[b>>2]-+f[a>>2])/g}return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0;c=a+(c<<3)|0;e=+sf(a,a+(b<<3)|0,c);return +(e+ +sf(a,c,a+(d<<3)|0))}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];d=((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))*.5;return +(d<0.0?-d:d)}function tf(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=zb;zb=zb+1248|0;L=M+1232|0;K=M+1224|0;J=M+1208|0;I=M+1200|0;H=M+1184|0;G=M+1176|0;F=M+1160|0;E=M+1152|0;D=M+1144|0;C=M+1136|0;B=M+1128|0;A=M+1120|0;z=M+1112|0;y=M+1104|0;x=M+1096|0;w=M+1088|0;v=M+1080|0;u=M+1072|0;p=M+1064|0;l=M+1056|0;k=M+1048|0;j=M+1040|0;i=M+1032|0;h=M+1024|0;r=M+768|0;s=M+512|0;t=M+1236|0;g=M;do if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(Fx(d,41063)|0)!=0:0){c[h>>2]=b;c[h+4>>2]=d;Hx(g,22627,h)|0;d=rz(g,21853)|0;if(!d){c[i>>2]=b;Ue(0,3,21855,i);q=ox()|0;q=By(c[q>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=q;Ue(0,3,21881,j);q=0;break}else{n=d;d=1;m=8;break}}else m=4;while(0);if((m|0)==4){Wz(s,b,255)|0;a[s+255>>0]=0;n=0;d=0;m=8}do if((m|0)==8){o=FO(1140)|0;if(!o){Ue(0,3,41858,k);Ea(1)}k=(d|0)!=0;if(k){if(!(uf(r,n)|0)){xz(n)|0;GO(o);q=0;break}c[l>>2]=t;if((Cz(r,21887,l)|0)!=1){xz(n)|0;GO(o);q=0;break}d=c[t>>2]|0;if((d|0)<1){xz(n)|0;GO(o);q=0;break}}else d=1;c[o+4>>2]=d;c[o+152>>2]=0;j=FO(d*112|0)|0;c[o>>2]=j;if(!j){Ue(0,3,41858,p);Ea(1)}i=(e|0)==0;g=0;a:while(1){c[t>>2]=g;if((g|0)>=(d|0)){m=57;break}c[u>>2]=g+1;Ue(0,1,21890,u);if(k){if(!(uf(r,n)|0)){m=57;break}c[v>>2]=s;if((Cz(r,21914,v)|0)!=1){m=57;break}If(s)|0}Ue(0,1,21917,w);p=cf(s)|0;c[j+((c[t>>2]|0)*112|0)>>2]=p;if(!p){m=26;break}Ue(0,1,21966,y);Ue(0,1,21976,z);p=lf(s,41063)|0;c[j+((c[t>>2]|0)*112|0)+4>>2]=p;if(!p){m=29;break}Ue(0,1,21966,B);if(i)c[j+((c[t>>2]|0)*112|0)+8>>2]=0;else{Ue(0,1,22027,C);If(s)|0;p=jf(s,22046,e)|0;c[j+((c[t>>2]|0)*112|0)+8>>2]=p;if(!p){m=33;break}Ue(0,1,21966,E)}b:do if(k){if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[F>>2]=j+(p*112|0)+12;c[F+4>>2]=j+(p*112|0)+16;c[F+8>>2]=j+(p*112|0)+20;c[F+12>>2]=j+(p*112|0)+24;if((Cz(r,22080,F)|0)!=4){m=40;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[H>>2]=j+(p*112|0)+28;c[H+4>>2]=j+(p*112|0)+32;c[H+8>>2]=j+(p*112|0)+36;c[H+12>>2]=j+(p*112|0)+40;if((Cz(r,22080,H)|0)!=4){m=43;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[J>>2]=j+(p*112|0)+44;c[J+4>>2]=j+(p*112|0)+48;c[J+8>>2]=j+(p*112|0)+52;c[J+12>>2]=j+(p*112|0)+56;if((Cz(r,22080,J)|0)!=4){m=47;break a}g=c[t>>2]|0}else{g=c[t>>2]|0;b=0;while(1){if((b|0)==3)break b;h=0;while(1){if((h|0)==4)break;f[j+(g*112|0)+12+(b<<4)+(h<<2)>>2]=(b|0)==(h|0)?1.0:0.0;h=h+1|0}b=b+1|0}}while(0);yd(j+(g*112|0)+12|0,j+(g*112|0)+60|0)|0;Hf(s,256,22128)|0;g=FO(256)|0;c[j+((c[t>>2]|0)*112|0)+108>>2]=g;if(!g){m=55;break}Wz(g,s,256)|0;g=(c[t>>2]|0)+1|0}if((m|0)==26){c[x>>2]=s;Ue(0,3,21935,x);GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==29){c[A>>2]=s;Ue(0,3,21996,A);ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==33){c[D>>2]=s;Ue(0,3,22050,D);mf(j+((c[t>>2]|0)*112|0)+4|0)|0;ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==40){Ue(0,3,22092,G);xz(n)|0;Ea(0)}else if((m|0)==43){Ue(0,3,22092,I);xz(n)|0;Ea(0)}else if((m|0)==47){Ue(0,3,22092,K);xz(n)|0;Ea(0)}else if((m|0)==55){Ue(0,3,41858,L);Ea(1)}else if((m|0)==57){if(n|0)xz(n)|0;if((c[t>>2]|0)>=(d|0)){q=o;break}Ea(0)}}while(0);zb=M;return q|0}function uf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function vf(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)d=-1;else{c[a+152>>2]=1;d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;c[a+8+(d<<4)+(e<<2)>>2]=c[b+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}c[a+168>>2]=-1;d=0}return d|0}function wf(b,e,g,h,i,j,k,l,m,n,o,p){b=b|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=zb;zb=zb+80|0;F=X+8|0;E=X;M=X+72|0;P=X+60|0;R=X+48|0;D=X+36|0;S=X+32|0;T=X+24|0;U=X+16|0;V=j+16|0;A=c[V>>2]|0;W=j+20|0;x=c[W>>2]|0;y=g+-1|0;z=h+-1|0;w=0;while(1){if(w>>>0>=3)break;q=c[m+(w<<3)>>2]|0;if((q|0)<0)break;u=q&-4|2;q=((c[m+(w<<3)+4>>2]|0)/4|0)<<2|2;v=u-k|0;v=(v|0)>0?v:0;u=u+k|0;u=(u|0)<(g|0)?u:y;t=q-l|0;q=q+l|0;q=(q|0)<(h|0)?q:z;t=(t|0)>0?t:0;while(1){if((t|0)>(q|0))break;r=v;s=e+((B(t,g)|0)+v)|0;while(1){if((r|0)>(u|0))break;a[s>>0]=0;r=r+1|0;s=s+1|0}t=t+1|0}w=w+1|0}c[M>>2]=0;C=x<<1;z=A<<1;K=j+12|0;L=j+8|0;r=1;y=0;while(1){if(y>>>0>=3){J=28;break}q=c[m+(y<<3)>>2]|0;if((q|0)<0){J=14;break}x=q&-4|2;u=((c[m+(y<<3)+4>>2]|0)/4|0)<<2|2;v=u+l|0;w=x-k|0;x=x+k|0;q=r;u=u-l|0;a:while(1){if((u|0)>(v|0))break;b:do if((u|0)>=(z|0)){if((u+C|0)>=(h|0))break a;t=B(u,g)|0;s=w;while(1){if((s|0)>(x|0))break b;if((s|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+s|0)>=(g|0))break b;r=e+(s+t)|0;if(!(a[r>>0]|0)){a[r>>0]=1;xf(b,g,i,j,s,u,S);yf(s,u,c[S>>2]|0,M,P,R,D);q=0}}s=s+4|0}}while(0);u=u+4|0}r=q;y=y+1|0}if((J|0)==14)if(!r)J=28;else q=-1;if((J|0)==28){I=j+4|0;q=B((c[j>>2]<<3)+32|0,(c[I>>2]<<1)+8|0)|0;H=FO(q)|0;if(!H){Ue(0,3,41858,E);Ea(1)}G=FO(q)|0;if(!G){Ue(0,3,41858,F);Ea(1)}F=j+36|0;r=0;E=0;q=-1;while(1){if((E|0)>=(c[M>>2]|0))break;u=c[j>>2]|0;s=c[I>>2]|0;c:do if((c[F>>2]|0)==(B(s,u)|0)){switch(i|0){case 5:case 12:case 13:case 14:break;default:{J=40;break c}}l=R+(E<<2)|0;k=c[l>>2]|0;m=k+-3-(c[V>>2]<<1)|0;if((((m|0)>=0?(k+3+(c[W>>2]<<1)|0)<(h|0):0)?(N=P+(E<<2)|0,O=c[N>>2]|0,Q=O+-3-(c[L>>2]<<1)|0,(Q|0)>=0):0)?(O+3+(c[K>>2]<<1)|0)<(g|0):0){k=(s<<1)+6|0;t=(u<<2)+16|0;v=G;w=H;s=0;while(1){if((s|0)>=(t|0))break;c[w>>2]=0;c[v>>2]=0;v=v+4|0;w=w+4|0;s=s+1|0}D=(u<<1)+6|0;e=b+(Q+(B(m,g)|0))|0;z=G;A=H;s=w;C=0;while(1){if((C|0)>=(k|0))break;y=s+8|0;u=v;t=0;while(1){if((t|0)==2)break;c[s>>2]=0;c[u>>2]=0;c[T+(t<<2)>>2]=0;c[U+(t<<2)>>2]=0;u=u+4|0;s=s+4|0;t=t+1|0}x=e;u=z+8|0;w=A+8|0;v=v+8|0;s=y;t=0;while(1){if((t|0)>=(D|0))break;y=t&1;A=T+(y<<2)|0;z=(c[A>>2]|0)+(d[x>>0]|0)|0;c[A>>2]=z;A=d[x>>0]|0;A=B(A,A)|0;y=U+(y<<2)|0;A=A+(c[y>>2]|0)|0;c[y>>2]=A;c[s>>2]=(c[w>>2]|0)+z;c[v>>2]=(c[u>>2]|0)+A;x=x+1|0;u=u+4|0;w=w+4|0;v=v+4|0;s=s+4|0;t=t+1|0}e=e+g|0;z=u;A=w;C=C+1|0}u=0;while(1){if((u|0)==7)break c;v=u+m|0;w=u+2|0;x=u+-3|0;t=0;while(1){if((t|0)==7)break;zf(b,g,t+Q|0,v,j,H,G,t+2|0,w,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t+-3+(c[N>>2]|0);c[o>>2]=x+(c[l>>2]|0);f[p>>2]=+(s|0)/1.0e4;q=0;r=s}t=t+1|0}u=u+1|0}}else J=40}else J=40;while(0);d:do if((J|0)==40){J=0;v=c[R+(E<<2)>>2]|0;w=v+3|0;x=P+(E<<2)|0;v=v+-3|0;while(1){if((v|0)>(w|0))break d;e:do if((v|0)>=(c[V>>2]<<1|0)){if(((c[W>>2]<<1)+v|0)>=(h|0))break d;t=c[x>>2]|0;u=t+3|0;t=t+-3|0;while(1){if((t|0)>(u|0))break e;if((t|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+t|0)>=(g|0))break e;xf(b,g,i,j,t,v,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t;c[o>>2]=v;f[p>>2]=+(s|0)/1.0e4;r=s;q=0}}t=t+1|0}}while(0);v=v+1|0}}while(0);E=E+1|0}GO(H);GO(G)}zb=X;return q|0}function xf(a,e,f,g,h,i,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;l=c[g+24>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:{s=0-(c[g+8>>2]|0)|0;t=c[g+12>>2]|0;q=0-(c[g+16>>2]|0)|0;v=c[g+20>>2]|0;w=e<<1;m=l;p=a+((s<<1)+h+(B((q<<1)+i|0,e)|0))|0;l=0;f=0;k=0;while(1){if((q|0)>(v|0)){m=l;break a}r=s;n=m;o=p;while(1){if((r|0)>(t|0))break;m=b[n>>1]|0;if(m<<16>>16!=4096){i=d[o>>0]|0;l=l+i|0;f=(B(i,i)|0)+f|0;k=(B(i,m&65535)|0)+k|0}r=r+1|0;n=n+2|0;o=o+2|0}m=n;p=p+w|0;q=q+1|0}}default:{if(f>>>0<2){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+((w-(p<<1)|0)*3|0)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+6|0;l=l+2|0}r=r+1|0}}if((f|1|0)==3){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;l=l+2|0}r=r+1|0}}if((f|2|0)==6){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=l;l=0;f=0;k=0;while(1){if((r|0)>(s|0)){m=l;break a}w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[m>>1]|0;if(n<<16>>16!=4096){w=(((d[p+2>>0]|0)+(d[p+1>>0]|0)+(d[p+3>>0]|0)|0)>>>0)/3|0;l=w+l|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;m=m+2|0}r=r+1|0}}switch(f|0){case 7:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;r=0-(c[g+16>>2]|0)|0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p+1>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+4|0;l=l+2|0}r=r+1|0}}case 8:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;q=0-(c[g+16>>2]|0)|0;while(1){if((q|0)>(s|0))break a;w=(B((q<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;r=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(r|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}l=l+2|0;o=o+1|0;p=p+4|0}q=q+1|0}}default:{m=0;f=0;k=0;break a}}}}while(0);l=c[g+36>>2]|0;f=f-((B(m,m)|0)/(l|0)|0)|0;if(!f)f=0;else{i=(k-((B(c[g+32>>2]|0,m)|0)/(l|0)|0)|0)*100|0;f=(((i|0)/(c[g+28>>2]|0)|0)*100|0)/(~~+u(+(+(f|0)))|0)|0}c[j>>2]=f;return}function yf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[e>>2]|0;do if(!i){c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[e>>2]=1}else{j=0;while(1){if((j|0)>=(i|0))break;if((c[h+(j<<2)>>2]|0)<(d|0))break;j=j+1|0}if((j|0)==(i|0)){if(i>>>0>=3)break;c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;break}if((i|0)==3)i=2;else c[e>>2]=i+1;while(1){if((i|0)<=(j|0))break;e=i+-1|0;c[f+(i<<2)>>2]=c[f+(e<<2)>>2];c[g+(i<<2)>>2]=c[g+(e<<2)>>2];c[h+(i<<2)>>2]=c[h+(e<<2)>>2];i=e}c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d}while(0);return}function zf(a,b,f,g,h,i,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;o=a+((B(g,b)|0)+f)|0;r=c[h+4>>2]|0;p=b<<1;q=c[h>>2]|0;b=0;a=c[h+24>>2]|0;s=0;while(1){if((b|0)>=(r|0))break;n=0;f=o;g=s;while(1){if((n|0)>=(q|0))break;s=(B(e[a>>1]|0,d[f>>0]|0)|0)+g|0;n=n+1|0;a=a+2|0;f=f+2|0;g=s}b=b+1|0;o=o+p|0;s=g}a=q<<1;q=a+8|0;g=k+-2|0;a=g+a|0;f=l+-2|0;l=B(q,f+(r<<1)|0)|0;f=B(q,f)|0;k=l+a|0;r=f+g|0;l=l+g|0;a=f+a|0;f=(c[i+(r<<2)>>2]|0)+(c[i+(k<<2)>>2]|0)-(c[i+(l<<2)>>2]|0)-(c[i+(a<<2)>>2]|0)|0;g=c[h+36>>2]|0;a=(c[j+(r<<2)>>2]|0)+(c[j+(k<<2)>>2]|0)-(c[j+(l<<2)>>2]|0)-(c[j+(a<<2)>>2]|0)-((B(f,f)|0)/(g|0)|0)|0;if(!a)a=0;else{j=(s-((B(c[h+32>>2]|0,f)|0)/(g|0)|0)|0)*100|0;a=(((j|0)/(c[h+28>>2]|0)|0)*100|0)/(~~+u(+(+(a|0)))|0)|0}c[m>>2]=a;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=FO(40)|0;if(!d){Ue(0,3,41858,e);Ea(1)}c[d+16>>2]=a;c[d+8>>2]=a;c[d+20>>2]=b;c[d+12>>2]=b;b=a+1+b|0;c[d>>2]=b;c[d+4>>2]=b;b=FO(B(b<<1,b)|0)|0;c[d+24>>2]=b;if(!b){Ue(0,3,41858,e+8|0);Ea(1)}else{zb=e;return d|0}return 0}function Bf(d,e,g,i,j,k){d=d|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;D=zb;zb=zb+80|0;l=D+60|0;m=D+56|0;z=D+52|0;A=D+48|0;x=D;C=D+64|0;a:do if(!d){x=c[i>>2]|0;y=c[x+(j*20|0)+8>>2]|0;c[l>>2]=y;p=+f[x+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,e,(c[h>>2]=y,+f[h>>2]),p,z,A)|0)<0)d=-1;else{s=~~(+f[z>>2]+.5);l=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;q=0-l|0;i=~~(+f[A>>2]+.5)-(l<<1)|0;l=0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((q|0)>(c[t>>2]|0)){n=25;break a}o=c[v>>2]|0;p=+(i|0);n=0-o|0;o=s-(o<<1)|0;while(1){if((n|0)>(c[w>>2]|0))break;if((Gf(0,e,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+(o|0),p,C)|0)<0)b[m>>1]=4096;else{A=a[C>>0]|0;b[m>>1]=A&255;A=A&255;l=l+1|0;j=(B(A,A)|0)+j|0;d=d+A|0}n=n+1|0;o=o+2|0;m=m+2|0}q=q+1|0;i=i+2|0}}}else{vd(d+8|0,e,x)|0;w=c[i>>2]|0;e=c[w+(j*20|0)+8>>2]|0;c[l>>2]=e;p=+f[w+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,x,(c[h>>2]=e,+f[h>>2]),p,l,m)|0)>=0?(y=d+184|0,(oe(y,+f[l>>2],+f[m>>2],z,A)|0)>=0):0){s=~~(+f[z>>2]+.5);o=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;l=0;n=0-o|0;o=~~(+f[A>>2]+.5)-(o<<1)|0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((n|0)>(c[t>>2]|0)){n=25;break a}q=c[v>>2]|0;p=+(o|0);i=0-q|0;q=s-(q<<1)|0;while(1){if((i|0)>(c[w>>2]|0))break;do if((pe(y,+(q|0),p,z,A)|0)>=0)if((Gf(0,x,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+f[z>>2],+f[A>>2],C)|0)<0){b[m>>1]=4096;break}else{e=a[C>>0]|0;b[m>>1]=e&255;e=e&255;l=l+1|0;j=(B(e,e)|0)+j|0;d=d+e|0;break}else b[m>>1]=4096;while(0);i=i+1|0;q=q+2|0;m=m+2|0}n=n+1|0;o=o+2|0}}else d=-1}while(0);if((n|0)==25)if(!l)d=-1;else{g=~~+u(+(+(j-((B(d,d)|0)/(l|0)|0)|0)));c[k+28>>2]=g;c[k+32>>2]=d;c[k+36>>2]=l;d=0}zb=D;return d|0}function Cf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+32|0;m=r+20|0;n=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;k=r;l=+f[g+8>>2];i=+f[g+12>>2];if((b|0)!=0?(Ef(a,b,l,i,m,p)|0)>=0:0){c[h>>2]=~~+f[m>>2];c[h+4>>2]=~~+f[p>>2];if((d|0)!=0?(Ef(a,d,l,i,n,j)|0)>=0:0){c[h+8>>2]=~~(+f[m>>2]*2.0-+f[n>>2]);c[h+12>>2]=~~(+f[p>>2]*2.0-+f[j>>2]);if((e|0)!=0?(Ef(a,e,l,i,o,k)|0)>=0:0){c[h+16>>2]=~~(+f[o>>2]+(+f[m>>2]*3.0-+f[n>>2]*3.0));g=~~(+f[k>>2]+(+f[p>>2]*3.0-+f[j>>2]*3.0))}else q=10}else q=9}else{c[h>>2]=-1;c[h+4>>2]=-1;q=9}if((q|0)==9){c[h+8>>2]=-1;c[h+12>>2]=-1;q=10}if((q|0)==10){c[h+16>>2]=-1;g=-1}c[h+20>>2]=g;zb=r;return}function Df(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0;l=zb;zb=zb+64|0;h=l;j=l+52|0;k=l+48|0;if(a){vd(a+8|0,b,h)|0;m=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);i=(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/m;c=(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/m;b=a+184|0;if((oe(b,i,c,e,g)|0)>=0?(pe(b,+f[e>>2],+f[g>>2],j,k)|0)>=0:0){i=i-+f[j>>2];m=c-+f[k>>2];b=(i*i+m*m>1.0)<<31>>31}else b=-1}else{i=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);m=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/m;f[g>>2]=i/m;b=0}zb=l;return b|0}function Ef(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0.0;i=zb;zb=zb+48|0;h=i;if(!a){k=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);j=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/j;f[g>>2]=k/j;a=0}else{vd(a+8|0,b,h)|0;k=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);a=(oe(a+184|0,(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/k,(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/k,e,g)|0)>>31}zb=i;return a|0}function Ff(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0;r=zb;zb=zb+64|0;i=r+52|0;j=r+48|0;l=r;if(a)if((pe(a+184|0,c,d,i,j)|0)<0)a=-1;else{vd(a+8|0,b,l)|0;h=+f[l+32>>2];k=+f[i>>2];p=+f[l+36>>2];d=+f[j>>2];c=+f[l+44>>2];m=+f[l+12>>2]-k*c;n=p*d-+f[l+20>>2];o=h*d-+f[l+16>>2];p=k*p-+f[l+4>>2];k=h*k-+f[l>>2];h=+f[l+28>>2];c=d*c;q=5}else{k=+f[b+32>>2];p=+f[b+36>>2];s=+f[b+44>>2];m=+f[b+12>>2]-s*c;n=p*d-+f[b+20>>2];o=k*d-+f[b+16>>2];p=p*c-+f[b+4>>2];k=k*c-+f[b>>2];h=+f[b+28>>2];c=s*d;q=5}if((q|0)==5){c=h-c;h=k*n-p*o;if(h==0.0)a=-1;else{f[e>>2]=(n*m-p*c)/h;f[g>>2]=(k*c-o*m)/h;a=0}}zb=r;return a|0}function Gf(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=+g;h=+h;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+4|0;o=p;if((((Ff(b,d,g,h,n,o)|0)>=0?(j=+f[e+12>>2],k=~~(+f[n>>2]*j/25.399999618530273+.5),(k|0)>=0):0)?(l=c[e+4>>2]|0,(l|0)>(k|0)):0)?(n=c[e+8>>2]|0,m=~~(+(n|0)-j*+f[o>>2]/25.399999618530273+.5),(m|0)>-1&(n|0)>(m|0)):0){b=(B(l,m)|0)+k|0;a[i>>0]=a[(c[e>>2]|0)+b>>0]|0;b=0}else b=-1;zb=p;return b|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return Bd(a,b,c)|0}function If(a){a=a|0;return Cd(a)|0}function Jf(a){a=a|0;return Kf(a,c[a>>2]|0,c[a+4>>2]|0,1)|0}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=zb;zb=zb+16|0;f=HO(1,4156)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{h=tB(4)|0;Ij(h);c[f>>2]=h;c[f+4>>2]=a;c[f+8>>2]=e;c[f+12>>2]=b;c[f+16>>2]=d;c[f+20>>2]=1;c[f+24>>2]=-1;e=f+28|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;zb=g;return f|0}return 0}function Lf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)b=-1;else{d=c[b>>2]|0;if(d){nk(d);SA(d);b=c[a>>2]|0}d=c[b+28>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+36>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+52>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+44>>2]|0;if(d){GO(d);b=c[a>>2]|0}GO(b);c[a>>2]=0;b=0}return b|0}function Mf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;Rf(a);return}function Qf(a){a=a|0;P(a|0)|0;UA()}function Rf(a){a=a|0;SA(a);return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+48|0;r=s+40|0;p=s+32|0;m=s+24|0;k=s+16|0;f=s+8|0;e=s;if((a|0)!=0&(b|0)!=0){e=c[a>>2]|0;do if(!e){e=FO(16)|0;c[a>>2]=e;if(!e){Ue(0,3,41858,f);Ea(1)}else{c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=0;c[e+8>>2]=0;l=e;d=e;break}}else{l=e;d=e}while(0);f=c[b>>2]|0;if(!f)d=0;else{g=c[l+4>>2]|0;h=c[f+4>>2]|0;i=h+g|0;j=FO(i*132|0)|0;if(!j){Ue(0,3,41858,k);Ea(1)}e=0;while(1){if((e|0)>=(g|0))break;_O(j+(e*132|0)|0,(c[l>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=0;while(1){if((e|0)>=(h|0))break;_O(j+((e+g|0)*132|0)|0,(c[f>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=c[l>>2]|0;if(e){GO(e);d=c[a>>2]|0}c[d>>2]=j;h=c[a>>2]|0;c[h+4>>2]=i;k=c[h+12>>2]|0;g=c[b>>2]|0;l=c[g+12>>2]|0;g=g+8|0;h=h+8|0;d=0;f=0;while(1){if((f|0)>=(l|0))break;e=0;while(1){if((e|0)>=(k|0))break;if((c[(c[g>>2]|0)+(f*12|0)+8>>2]|0)==(c[(c[h>>2]|0)+(e*12|0)+8>>2]|0)){q=23;break}else e=e+1|0}if((q|0)==23){q=0;d=d+1|0}f=f+1|0}n=l+k-d|0;o=FO(n*12|0)|0;if(!o){Ue(0,3,41858,m);Ea(1)}j=0;while(1){if((j|0)>=(k|0))break;h=(c[a>>2]|0)+8|0;d=c[h>>2]|0;g=d+(j*12|0)+8|0;c[o+(j*12|0)+8>>2]=c[g>>2];d=c[d+(j*12|0)+4>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(f*12|0)+8>>2]|0)==(c[g>>2]|0))d=(c[e+(f*12|0)+4>>2]|0)+d|0;f=f+1|0}i=o+(j*12|0)|0;m=FO(d*12|0)|0;c[i>>2]=m;if(!m){q=36;break}h=c[(c[h>>2]|0)+(j*12|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;g=(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;m=(c[i>>2]|0)+(e*12|0)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];e=e+1|0}g=0;while(1){if((g|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(g*12|0)+8>>2]|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)+8>>2]|0)){q=43;break}g=g+1|0}a:do if((q|0)==43){q=0;f=0;while(1){if((f|0)>=(c[e+(g*12|0)+4>>2]|0))break a;t=(c[e+(g*12|0)>>2]|0)+(f*12|0)|0;m=(c[i>>2]|0)+((f+h|0)*12|0)|0;c[m>>2]=c[t>>2];c[m+4>>2]=c[t+4>>2];c[m+8>>2]=c[t+8>>2];f=f+1|0;e=c[(c[b>>2]|0)+8>>2]|0}}while(0);c[o+(j*12|0)+4>>2]=d;j=j+1|0}if((q|0)==36){Ue(0,3,41858,p);Ea(1)}d=0;j=0;while(1){if((j|0)>=(l|0))break;f=c[(c[b>>2]|0)+8>>2]|0;g=c[f+(j*12|0)+8>>2]|0;e=0;while(1){if((e|0)>=(k|0)){q=53;break}if((g|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(e*12|0)+8>>2]|0)){q=52;break}else e=e+1|0}if((q|0)==52){q=0;d=d+1|0}else if((q|0)==53){q=0;h=j+k-d|0;i=o+(h*12|0)|0;c[o+(h*12|0)+8>>2]=g;f=c[f+(j*12|0)+4>>2]|0;t=FO(f*12|0)|0;c[i>>2]=t;if(!t){q=55;break}e=0;while(1){if((e|0)>=(f|0))break;p=(c[(c[(c[b>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;t=(c[i>>2]|0)+(e*12|0)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];e=e+1|0}c[o+(h*12|0)+4>>2]=f}j=j+1|0}if((q|0)==55){Ue(0,3,41858,r);Ea(1)}e=c[a>>2]|0;d=e+8|0;g=c[d>>2]|0;if(g){f=0;d=g;while(1){if((f|0)>=(c[e+12>>2]|0))break;GO(c[d+(f*12|0)>>2]|0);t=c[a>>2]|0;f=f+1|0;e=t;d=c[t+8>>2]|0}GO(d);d=(c[a>>2]|0)+8|0}c[d>>2]=o;c[(c[a>>2]|0)+12>>2]=n;Tf(b)|0;d=0}}else{Ue(0,3,22132,e);d=-1}zb=s;return d|0}function Tf(a){a=a|0;var b=0,d=0,e=0,f=0;e=zb;zb=zb+16|0;if(a){b=c[a>>2]|0;if(!b)b=0;else{b=c[b>>2]|0;if(b|0)GO(b);b=0;while(1){f=c[a>>2]|0;d=f+8|0;if((b|0)>=(c[f+12>>2]|0))break;GO(c[(c[d>>2]|0)+(b*12|0)>>2]|0);b=b+1|0}GO(c[d>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;b=0}}else{Ue(0,3,22192,e);b=-1}zb=e;return b|0}function Uf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;o=p+56|0;n=p+48|0;l=p+40|0;k=p+32|0;j=p+24|0;i=p+8|0;h=p;g=p+60|0;a[g>>0]=a[22236]|0;a[g+1>>0]=a[22237]|0;a[g+2>>0]=a[22238]|0;a:do if((b|0)!=0&(e|0)!=0){m=Hg(b,d,g)|0;if(!m){f=(d|0)!=0;c[i>>2]=b;c[i+4>>2]=f?46716:57671;c[i+8>>2]=f?d:57671;Ue(0,3,22290,i);f=-1;break}i=HO(1,16)|0;if(!i){Ue(0,3,41858,j);Ea(1)}h=i+4|0;b:do if((gA(h,4,1,m)|0)==1?(f=c[h>>2]|0,(f|0)>=1):0){j=FO(f*132|0)|0;c[i>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}g=0;while(1){if((g|0)>=(f|0))break;if((gA((c[i>>2]|0)+(g*132|0)|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+8|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+16|0,108,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+124|0,4,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+128|0,4,1,m)|0)!=1)break b;g=g+1|0;f=c[h>>2]|0}b=i+12|0;if((gA(b,4,1,m)|0)==1){f=c[b>>2]|0;if((f|0)<1){c[i+8>>2]=0;break}k=FO(f*12|0)|0;d=i+8|0;c[d>>2]=k;if(!k){Ue(0,3,41858,l);Ea(1)}h=0;while(1){if((h|0)>=(f|0)){f=32;break}if((gA((c[d>>2]|0)+(h*12|0)+8|0,4,1,m)|0)!=1)break b;if((gA((c[d>>2]|0)+(h*12|0)+4|0,4,1,m)|0)!=1)break b;l=c[d>>2]|0;f=c[l+(h*12|0)+4>>2]|0;g=FO(f*12|0)|0;c[l+(h*12|0)>>2]=g;if(!g){f=29;break}if((gA(g,12,f,m)|0)!=(f|0))break b;h=h+1|0;f=c[b>>2]|0}if((f|0)==29){Ue(0,3,41858,n);Ea(1)}else if((f|0)==32){c[e>>2]=i;xz(m)|0;f=0;break a}}}while(0);Ue(0,3,22357,o);f=c[i+8>>2]|0;if(f|0)GO(f);f=c[i>>2]|0;if(f|0)GO(f);GO(i);xz(m)|0;f=-1}else{Ue(0,3,22239,h);f=-1}while(0);zb=p;return f|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;a:do if(!a){Ue(0,3,22402,j);e=-1}else{g=c[a+4>>2]|0;i=(b|0)==-1;e=0;while(1){if((e|0)>=(g|0))break;f=(c[a>>2]|0)+(e*132|0)+124|0;h=c[f>>2]|0;if((h|0)==(b|0)|i&(h|0)>-1)c[f>>2]=d;e=e+1|0}h=c[a+12>>2]|0;f=a+8|0;e=0;while(1){if((e|0)>=(h|0)){e=0;break a}g=(c[f>>2]|0)+(e*12|0)+8|0;a=c[g>>2]|0;if((a|0)==(b|0)|i&(a|0)>-1)c[g>>2]=d;e=e+1|0}}while(0);zb=j;return e|0}function Wf(){return -1}function Xf(a,b){a=a|0;b=b|0;return Zf(a,b,Yf(b)|0)|0}function Yf(a){a=a|0;return Qy(a)|0}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;g=l+12|0;j=l;k=l+8|0;NE(j,b);if(a[j>>0]|0){h=(c[b>>2]|0)+-12|0;c[k>>2]=c[b+(c[h>>2]|0)+24>>2];h=b+(c[h>>2]|0)|0;i=c[h+4>>2]|0;f=d+e|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(g,h);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(g);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;c[g>>2]=c[k>>2];if(!($f(g,d,(i&176|0)==32?f:d,f,h,e&255)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(j);zb=l;return b|0}function _f(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{k=d;j=f-k|0;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;k=j-k|0;if((k|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;hO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+11>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){jO(m);break}else{c[b>>2]=0;jO(m);i=0;break a}}while(0);f=f-j|0;if((f|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function bg(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return}function cg(a){a=a|0;return a&255|0}function dg(a){a=a|0;if(_f(a,Wf()|0)|0)a=~(Wf()|0);return a|0}function eg(a){a=a|0;return a&255|0}function fg(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+112|0;z=A+48|0;p=A+40|0;n=A+32|0;l=A+24|0;h=A+16|0;g=A+8|0;e=A;v=A+96|0;w=A+84|0;x=A+72|0;y=A+52|0;a:do if((b|0)!=0&(d|0)!=0){i=d+4|0;e=c[i>>2]|0;if(!e){Ue(0,3,22499,g);e=-1;break}u=b+28|0;g=c[u>>2]|0;if(g){GO(g);e=c[i>>2]|0;if(!e){c[u>>2]=0;e=0}else j=7}else j=7;b:do if((j|0)==7){t=FO(e*132|0)|0;c[u>>2]=t;if(!t){Ue(0,3,41858,h);Ea(1)}g=0;while(1){if((g|0)>=(e|0))break b;_O((c[u>>2]|0)+(g*132|0)|0,(c[d>>2]|0)+(g*132|0)|0,132)|0;g=g+1|0;e=c[i>>2]|0}}while(0);m=b+32|0;c[m>>2]=e;t=b+36|0;e=c[t>>2]|0;if(e|0){i=b+40|0;h=0;while(1){if((h|0)>=(c[i>>2]|0))break;g=c[e+(h*12|0)>>2]|0;if(g){GO(g);e=c[t>>2]|0}h=h+1|0}GO(e)}k=d+12|0;e=c[k>>2]|0;c:do if(!e){c[t>>2]=0;o=0}else{s=FO(e*12|0)|0;c[t>>2]=s;if(!s){Ue(0,3,41858,l);Ea(1)}d=d+8|0;j=0;while(1){if((j|0)>=(e|0)){o=e;break c}i=c[d>>2]|0;g=c[t>>2]|0;c[g+(j*12|0)+8>>2]=c[i+(j*12|0)+8>>2];h=i+(j*12|0)+4|0;c[g+(j*12|0)+4>>2]=c[h>>2];h=c[h>>2]|0;if(!h)c[i+(j*12|0)>>2]=0;else{s=FO(h*12|0)|0;c[g+(j*12|0)>>2]=s;if(!s)break;g=0;e=i;while(1){if((g|0)>=(c[e+(j*12|0)+4>>2]|0))break;r=(c[e+(j*12|0)>>2]|0)+(g*12|0)|0;s=(c[(c[t>>2]|0)+(j*12|0)>>2]|0)+(g*12|0)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];g=g+1|0;e=c[d>>2]|0}e=c[k>>2]|0}j=j+1|0}Ue(0,3,41858,n);Ea(1)}while(0);s=b+40|0;c[s>>2]=o;i=b+52|0;e=c[i>>2]|0;if(e|0){GO(e);c[i>>2]=0;c[b+56>>2]=0}g=c[k>>2]|0;d:do if((g|0)>0){c[b+56>>2]=g;h=FO(g*68|0)|0;c[i>>2]=h;if(!h){Ue(0,3,41858,p);Ea(1)}e=0;while(1){if((e|0)==(g|0))break d;c[h+(e*68|0)+64>>2]=0;e=e+1|0}}while(0);l=c[m>>2]|0;if(!l)e=0;else{m=v+4|0;n=v+8|0;o=w+4|0;p=w+8|0;q=x+4|0;r=x+8|0;k=0;e=0;while(1){if((k|0)>=(c[s>>2]|0)){e=0;break a}d=0;while(1){if((d|0)>=(c[(c[t>>2]|0)+(k*12|0)+4>>2]|0))break;c[v>>2]=0;c[m>>2]=0;c[n>>2]=0;c[w>>2]=0;c[o>>2]=0;c[p>>2]=0;c[x>>2]=0;c[q>>2]=0;c[r>>2]=0;j=0;while(1){if((j|0)>=(l|0))break;g=c[u>>2]|0;i=c[t>>2]|0;e:do if((c[g+(j*132|0)+128>>2]|0)==(c[(c[i+(k*12|0)>>2]|0)+(d*12|0)+8>>2]|0)?(c[g+(j*132|0)+124>>2]|0)==(c[i+(k*12|0)+8>>2]|0):0){gg(y,+f[g+(j*132|0)>>2],+f[g+(j*132|0)+4>>2],+f[g+(j*132|0)+112>>2],+f[g+(j*132|0)+116>>2],(c[g+(j*132|0)+120>>2]|0)!=0);g=c[m>>2]|0;if(g>>>0<(c[n>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[m>>2]=g+20}else hg(v,y);Of(y);g=c[u>>2]|0;ig(y,+f[g+(j*132|0)+8>>2],+f[g+(j*132|0)+12>>2],0.0);g=c[o>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[o>>2]=(c[o>>2]|0)+12}else jg(w,y);g=0;while(1){if(g>>>0>=96)break e;h=(c[u>>2]|0)+(j*132|0)+16+g|0;i=c[q>>2]|0;if((i|0)==(c[r>>2]|0))kg(x,h);else{a[i>>0]=a[h>>0]|0;c[q>>2]=(c[q>>2]|0)+1}g=g+1|0}}while(0);j=j+1|0}c[z>>2]=((c[m>>2]|0)-(c[v>>2]|0)|0)/20|0;Ue(0,1,22532,z);j=c[t>>2]|0;c[b+60+(e<<2)>>2]=c[j+(k*12|0)+8>>2];j=c[j+(k*12|0)>>2]|0;em(c[b>>2]|0,v,x,w,c[j+(d*12|0)>>2]|0,c[j+(d*12|0)+4>>2]|0,e);Mf(x);lg(w);Nf(v);d=d+1|0;e=e+1|0}k=k+1|0}}}else{Ue(0,3,22451,e);e=-1}while(0);zb=A;return e|0}function gg(b,c,d,e,g,h){b=b|0;c=+c;d=+d;e=+e;g=+g;h=h|0;f[b>>2]=c;f[b+4>>2]=d;f[b+8>>2]=e;f[b+12>>2]=g;a[b+16>>0]=h&1;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/20|0)+1|0;g=ug(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/20|0;j=k<<1;vg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/20|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[g>>2]=(c[g>>2]|0)+20;wg(a,d);xg(d);zb=h;return}}function ig(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;f[a>>2]=b;f[a+4>>2]=c;f[a+8>>2]=d;return}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qg(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/12|0;j=k<<1;rg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/12|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[g>>2]=(c[g>>2]|0)+12;sg(a,d);tg(d);zb=h;return}}function kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=zb;zb=zb+32|0;e=i;f=b+4|0;g=(c[f>>2]|0)-(c[b>>2]|0)+1|0;h=mg(b)|0;if(h>>>0>>0)EO(b);else{j=c[b>>2]|0;l=(c[b+8>>2]|0)-j|0;k=l<<1;ng(e,l>>>0>>1>>>0?(k>>>0>>0?g:k):h,(c[f>>2]|0)-j|0,b+8|0);h=e+8|0;a[c[h>>2]>>0]=a[d>>0]|0;c[h>>2]=(c[h>>2]|0)+1;og(b,e);pg(e);zb=i;return}}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mg(a){a=a|0;return 2147483647}function ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=tB(b)|0;c[a>>2]=e;d=e+d|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+b;return}function og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-f)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-1|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function qg(a){a=a|0;return 357913941}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-12|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ug(a){a=a|0;return 214748364}function vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>214748364){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*20|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*20|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*20|0);return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;i=(c[g>>2]|0)+-20|0;h=d+-20|0;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[g>>2]=(c[g>>2]|0)+-20;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;f=a+8|0;i=b+12|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;c[b>>2]=c[g>>2];return}function xg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-20|0;c[d>>2]=e;Of(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+48|0;r=u+16|0;o=u+8|0;d=u;e=u+44|0;h=u+40|0;do if((a|0)!=0&(b|0)!=0){i=c[a+12>>2]|0;j=c[a+16>>2]|0;m=c[a+20>>2]|0;n=(m|0)==1;if(!n){d=Bg(b,i,j,m,e,h)|0;if(!d){d=-1;break}else{s=d;t=1}}else{s=b;t=0}Em(c[a>>2]|0,s,i,j)|0;j=fp(c[a>>2]|0)|0;j=(c[j+4>>2]|0)-(c[j>>2]|0)|0;d=(j|0)/20|0;i=a+48|0;c[i>>2]=d;a:do if(!j){e=c[a+56>>2]|0;b=a+52|0;d=0;while(1){if((d|0)>=(e|0))break a;c[(c[b>>2]|0)+(d*68|0)+60>>2]=-1;d=d+1|0}}else{j=a+44|0;b=c[j>>2]|0;if(b){GO(b);d=c[i>>2]|0}h=FO(d<<3)|0;c[j>>2]=h;if(!h){Ue(0,3,41858,o);Ea(1)}e=fp(c[a>>2]|0)|0;b:do if(n){h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k;f[o+(d<<3)+4>>2]=l}else{o=c[j>>2]|0;pe(b+184|0,k,l,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}else switch(m|0){case 5:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*1.5;f[o+(d<<3)+4>>2]=l*1.5}else{o=c[j>>2]|0;pe(b+184|0,k*1.5,l*1.5,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 2:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*2.0;f[o+(d<<3)+4>>2]=l*2.0}else{o=c[j>>2]|0;pe(b+184|0,k*2.0,l*2.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 4:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*3.0;f[o+(d<<3)+4>>2]=l*3.0}else{o=c[j>>2]|0;pe(b+184|0,k*3.0,l*3.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}default:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*4.0;f[o+(d<<3)+4>>2]=l*4.0}else{o=c[j>>2]|0;pe(b+184|0,k*4.0,l*4.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}}while(0);i=a+56|0;j=a+36|0;b=a+52|0;d=0;while(1){e=c[i>>2]|0;if((d|0)>=(e|0))break a;o=c[b>>2]|0;c[o+(d*68|0)+48>>2]=c[(c[j>>2]|0)+(d*12|0)+8>>2];c[o+(d*68|0)+60>>2]=-1;if(((c[o+(d*68|0)+64>>2]|0)==0?(p=hp(c[a>>2]|0)|0,q=cp(c[a>>2]|0)|0,(q|0)>=0):0)?(e=c[h>>2]|0,m=ep(c[a>>2]|0,q)|0,n=fp(c[a>>2]|0)|0,o=c[b>>2]|0,(zg(e,p,m,n,o+(d*68|0)|0,o+(d*68|0)+52|0)|0)==0):0){n=c[b>>2]|0;c[n+(d*68|0)+60>>2]=0;o=(c[p+4>>2]|0)-(c[p>>2]|0)>>3;c[n+(d*68|0)+56>>2]=o;c[n+(d*68|0)+48>>2]=c[a+60+(q<<2)>>2];l=+f[n+(d*68|0)+52>>2];c[r>>2]=d;c[r+4>>2]=o;c[r+8>>2]=o;g[r+16>>3]=l;Ue(0,1,22587,r)}d=d+1|0}}while(0);d=0;while(1){if((d|0)>=(e|0))break;c[(c[b>>2]|0)+(d*68|0)+64>>2]=0;d=d+1|0}if(!t)d=0;else{GO(s);d=0}}else{Ue(0,3,22543,d);d=-1}while(0);zb=u;return d|0}function zg(a,b,d,e,h,i){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=zb;zb=zb+240|0;k=u+208|0;j=u+200|0;s=u+224|0;p=u+212|0;q=u+96|0;t=u+192|0;r=u;l=c[b>>2]|0;b=(c[b+4>>2]|0)-l|0;m=b>>3;do if(m>>>0<4)b=-1;else{o=FO(b<<1)|0;if(!o){Ue(0,3,41858,j);Ea(1)}n=FO(m*24|0)|0;if(!n){Ue(0,3,41858,k);Ea(1)}e=c[e>>2]|0;j=c[d>>2]|0;b=0;while(1){if((b|0)==(m|0))break;d=c[l+(b<<3)>>2]|0;g[o+(b<<4)>>3]=+f[e+(d*20|0)>>2];g[o+(b<<4)+8>>3]=+f[e+(d*20|0)+4>>2];d=c[l+(b<<3)+4>>2]|0;g[n+(b*24|0)>>3]=+f[j+(d*12|0)>>2];g[n+(b*24|0)+8>>3]=+f[j+(d*12|0)+4>>2];g[n+(b*24|0)+16>>3]=0.0;b=b+1|0}c[p+8>>2]=m;c[p>>2]=o;c[p+4>>2]=n;b=a+8|0;if((Me(b,o,n,m,q)|0)<0){GO(o);GO(n);b=-1;break}b=Ee(b)|0;c[s>>2]=b;if(!b){GO(o);GO(n);b=-1;break}if((He(b,p,q,r,t)|0)<0){GO(o);GO(n);Fe(s)|0;b=-1}else{j=0;while(1){if((j|0)==3)break;b=0;while(1){if((b|0)==4)break;f[h+(j<<4)+(b<<2)>>2]=+g[r+(j<<5)+(b<<3)>>3];b=b+1|0}j=j+1|0}Fe(s)|0;GO(o);GO(n);v=+g[t>>3];f[i>>2]=v;b=(v>10.0)<<31>>31}}while(0);zb=u;return b|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)a=-1;else{c[b>>2]=c[a+52>>2];c[d>>2]=c[a+56>>2];a=0}return a|0}function Bg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;switch(d|0){case 1:{a=Cg(a,b,c,e,f)|0;break}case 5:{a=Dg(a,b,c,e,f)|0;break}case 2:{a=Eg(a,b,c,e,f)|0;break}case 4:{a=Fg(a,b,c,e,f)|0;break}default:a=Gg(a,b,c,e,f)|0}return a|0}function Cg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;c[e>>2]=b;c[f>>2]=d;b=B(d,b)|0;d=FO(b)|0;if(!d){Ue(0,3,41858,g);Ea(1)}else{_O(d|0,a|0,b|0)|0;zb=g;return d|0}return 0}function Dg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=zb;zb=zb+16|0;o=(e|0)/3|0;p=o<<1;c[g>>2]=p;n=(f|0)/3|0;m=n<<1;c[h>>2]=m;m=FO(B(m,p)|0)|0;if(!m){Ue(0,3,41858,q);Ea(1)}h=0;f=m;g=m;while(1){if((h|0)>=(n|0))break;l=h*3|0;i=0;j=b+(B(l+2|0,e)|0)|0;k=b+(B(l+1|0,e)|0)|0;l=b+(B(l,e)|0)|0;g=g+p|0;while(1){if((i|0)>=(o|0))break;u=l+1|0;s=k+1|0;a[f>>0]=(((d[u>>0]|0)>>>1&255)+(d[l>>0]|0)+((d[k>>0]|0)>>>1&255)+((d[s>>0]|0)>>>2&255)<<2>>>0)/9|0;r=j+1|0;a[g>>0]=((((d[s>>0]|0)>>>2)+((d[k>>0]|0)>>>1)&255)+(d[j>>0]|0)+((d[r>>0]|0)>>>1&255)<<2>>>0)/9|0;t=k+2|0;a[f+1>>0]=(((d[u>>0]|0)>>>1&255)+(d[l+2>>0]|0)+((d[s>>0]|0)>>>2&255)+((d[t>>0]|0)>>>1&255)<<2>>>0)/9|0;a[g+1>>0]=((((d[t>>0]|0)>>>1)+((d[s>>0]|0)>>>2)&255)+((d[r>>0]|0)>>>1&255)+(d[j+2>>0]|0)<<2>>>0)/9|0;i=i+1|0;j=j+3|0;k=k+3|0;l=l+3|0;f=f+2|0;g=g+2|0}h=h+1|0;f=f+p|0}zb=q;return m|0}function Eg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=(e|0)/2|0;c[g>>2]=m;l=(f|0)/2|0;c[h>>2]=l;k=FO(B(l,m)|0)|0;if(!k){Ue(0,3,41858,n);Ea(1)}g=0;f=k;while(1){if((g|0)>=(l|0))break;j=g<<1;h=0;i=b+(B(j,e)|0)|0;j=b+(B(j|1,e)|0)|0;while(1){if((h|0)>=(m|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)|0)>>>2;h=h+1|0;i=i+2|0;j=j+2|0;f=f+1|0}g=g+1|0}zb=n;return k|0}function Fg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=(e|0)/3|0;c[g>>2]=n;m=(f|0)/3|0;c[h>>2]=m;l=FO(B(m,n)|0)|0;if(!l){Ue(0,3,41858,o);Ea(1)}g=0;f=l;while(1){if((g|0)>=(m|0))break;k=g*3|0;h=0;i=b+(B(k,e)|0)|0;j=b+(B(k+2|0,e)|0)|0;k=b+(B(k+1|0,e)|0)|0;while(1){if((h|0)>=(n|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)|0)/9|0;h=h+1|0;i=i+3|0;j=j+3|0;k=k+3|0;f=f+1|0}g=g+1|0}zb=o;return l|0}function Gg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=(e|0)/4|0;c[g>>2]=o;n=(f|0)/4|0;c[h>>2]=n;m=FO(B(n,o)|0)|0;if(!m){Ue(0,3,41858,p);Ea(1)}g=0;f=m;while(1){if((g|0)>=(n|0))break;l=g<<2;h=0;i=b+(B(l,e)|0)|0;j=b+(B(l|3,e)|0)|0;k=b+(B(l|2,e)|0)|0;l=b+(B(l|1,e)|0)|0;while(1){if((h|0)>=(o|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[i+3>>0]|0)+(d[l>>0]|0)+(d[l+1>>0]|0)+(d[l+2>>0]|0)+(d[l+3>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[k+3>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)+(d[j+3>>0]|0)|0)/16|0;h=h+1|0;i=i+4|0;j=j+4|0;k=k+4|0;l=l+4|0;f=f+1|0}g=g+1|0}zb=p;return m|0}function Hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;g=i;do if(a){if(!b){e=rz(a,d)|0;break}f=Qy(a)|0;f=FO(f+2+(Qy(b)|0)|0)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{c[h>>2]=a;c[h+4>>2]=b;Hx(f,22627,h)|0;e=rz(f,d)|0;GO(f);break}}else e=0;while(0);zb=i;return e|0}function Ig(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;d=m;if(!(Kg(b)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,22633)|0,22676)|0,35e3)|0,53)|0,35007)|0,22771)|0;IE(d,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(d,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(d);QE(l,k)|0;ME(l)|0;ua()}i=Mg(Lg(b,0,0)|0)|0;j=Ng(Lg(b,0,0)|0)|0;k=Og(Lg(b,0,0)|0)|0;e=Pg(b)|0;l=a+12|0;c[l>>2]=e;b=(Qg(b)|0)+-1|0;e=a+16|0;c[e>>2]=b;Rg(a,B(c[l>>2]|0,b)|0);b=0;while(1){if(b>>>0>=(c[l>>2]|0)>>>0)break;f=j>>>b;g=k>>>b;d=0;while(1){h=c[e>>2]|0;if(d>>>0>=h>>>0)break;h=(B(h,b)|0)+d|0;cq((c[a>>2]|0)+(h<<5)|0,i,f,g,-1,1);d=d+1|0}b=b+1|0}zb=m;return}function Kg(a){a=a|0;return (c[a+8>>2]|0)-(c[a+4>>2]|0)>>5|0}function Lg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=zb;zb=zb+16|0;f=g;if((c[a+16>>2]|0)>>>0<=b>>>0){e=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,218)|0,35007)|0,22796)|0;IE(f,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);h=XF(f,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(f);QE(e,h)|0;ME(e)|0;ua()}e=c[a+20>>2]|0;if(e>>>0>d>>>0){h=(B(e,b)|0)+d|0;zb=g;return (c[a+4>>2]|0)+(h<<5)|0}else{h=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,219)|0,35007)|0,22816)|0;IE(f,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);g=XF(f,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(f);QE(h,g)|0;ME(h)|0;ua()}return 0}function Mg(a){a=a|0;return c[a>>2]|0}function Ng(a){a=a|0;return c[a+4>>2]|0}function Og(a){a=a|0;return c[a+8>>2]|0}function Pg(a){a=a|0;return c[a+16>>2]|0}function Qg(a){a=a|0;return c[a+20>>2]|0}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=d-f>>5;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b<<5)|0;while(1){if((d|0)==(a|0))break;f=d+-32|0;rq(f);d=f}c[g>>2]=a}}else Sg(a,b-e|0);return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>5>>>0>>0){d=(d-(c[a>>2]|0)>>5)+b|0;e=Ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>4;Vg(f,k>>5>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>5,a+8|0);Wg(f,b);Xg(a,f);Yg(f);break}}else Tg(a,b);while(0);zb=i;return}function Tg(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ug(a){a=a|0;return 134217727}function Vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>134217727){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<5)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<5)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<5);return}function Wg(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-32|0;bq((c[g>>2]|0)+-32|0,h);c[g>>2]=(c[g>>2]|0)+-32;d=h}e=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=e;e=b+8|0;h=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=h;e=a+8|0;h=b+12|0;f=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=f;c[b>>2]=c[g>>2];return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-32|0;c[d>>2]=e;rq(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((c[a+4>>2]|0)==(c[a>>2]|0)){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22835)|0,22676)|0,35e3)|0,72)|0,35007)|0,22877)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((Pg(b)|0)<=0){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,73)|0,35007)|0,22967)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if(b|0?NA(b,13184,13192,0)|0:0){f=a+12|0;g=a+16|0;e=0;while(1){if(e>>>0>=(c[f>>2]|0)>>>0)break;d=0;while(1){if(d>>>0>=(c[g>>2]|0)>>>0)break;k=_g(a,e,d)|0;j=Lg(b,e,d)|0;i=d+1|0;$g(0,k,j,Lg(b,e,i)|0);d=i}e=e+1|0}zb=h;return}k=Xf(Xf(PE(Xf(Xf(Xf(56032,23003)|0,22676)|0,35e3)|0,74)|0,35007)|0,23075)|0;IE(d,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(k,j)|0;ME(k)|0;ua()}function _g(a,b,d){a=a|0;b=b|0;d=d|0;d=(B(c[a+16>>2]|0,b)|0)+d|0;return (c[a>>2]|0)+(d<<5)|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;a=k;if((Mg(b)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23110)|0,22676)|0,35e3)|0,86)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(d)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23181)|0,22676)|0,35e3)|0,87)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(e)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23228)|0,22676)|0,35e3)|0,88)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(b)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23275)|0,22676)|0,35e3)|0,89)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(d)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23353)|0,22676)|0,35e3)|0,90)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(e)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23396)|0,22676)|0,35e3)|0,91)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23439)|0,22676)|0,35e3)|0,92)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23519)|0,22676)|0,35e3)|0,93)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(d)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23602)|0,22676)|0,35e3)|0,94)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(d)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23652)|0,22676)|0,35e3)|0,95)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}g=0;while(1){if(g>>>0>=(Og(d)|0)>>>0)break;h=bh(b,g)|0;i=ch(d,g)|0;j=ch(e,g)|0;a=0;while(1){if(a>>>0>=(Ng(d)|0)>>>0)break;f[h+(a<<2)>>2]=+f[i+(a<<2)>>2]-+f[j+(a<<2)>>2];a=a+1|0}g=g+1|0}zb=k;return}function ah(a){a=a|0;return c[a+16>>2]|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,119)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,124)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function dh(b){b=b|0;var d=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=10;c[b+12>>2]=10;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;a[b+28>>0]=1;Ig(b+32|0);f[b+52>>2]=0.0;f[b+56>>2]=10.0;d=b+60|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;f[b+88>>2]=9.0;sj(b+92|0);d=b+144|0;c[d>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;eh(b,5e3);fh(d,36);return}function eh(a,b){a=a|0;b=b|0;c[a+84>>2]=b;uh(a+60|0,b);return}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else nh(a,b-e|0);return}function gh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function hh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function ih(a){a=a|0;mh(a);return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;kh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;lh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function lh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-32|0;rq(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ph(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;qh(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);rh(f,b);sh(a,f);th(f);break}}else oh(a,b);while(0);zb=i;return}function oh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function ph(a){a=a|0;return 1073741823}function qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function rh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function th(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((((c[a+8>>2]|0)-e|0)/36|0)>>>0>>0){vh(d,b,((c[a+4>>2]|0)-e|0)/36|0,a+8|0);wh(a,d);xh(d)}zb=f;return}function vh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>119304647){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*36|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*36|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*36|0);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-36|0)*36|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-36|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yh(a){a=a|0;gh(a+144|0);tj(a+92|0);hh(a+72|0);hh(a+60|0);ih(a+32|0);jh(a+16|0);return} +function aI(){var b=0,d=0;if((a[54864]|0)==0?nB(54864)|0:0){d=53568;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53856);pB(54864)}nO(53568,49685)|0;nO(53580,49693)|0;nO(53592,49702)|0;nO(53604,49708)|0;nO(53616,49714)|0;nO(53628,49718)|0;nO(53640,49723)|0;nO(53652,49728)|0;nO(53664,49735)|0;nO(53676,49745)|0;nO(53688,49753)|0;nO(53700,49762)|0;nO(53712,49771)|0;nO(53724,49775)|0;nO(53736,49779)|0;nO(53748,49783)|0;nO(53760,49714)|0;nO(53772,49787)|0;nO(53784,49791)|0;nO(53796,49795)|0;nO(53808,49799)|0;nO(53820,49803)|0;nO(53832,49807)|0;nO(53844,49811)|0;return}function bI(){var b=0,d=0;if((a[54880]|0)==0?nB(54880)|0:0){d=53856;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54024);pB(54880)}nO(53856,49815)|0;nO(53868,49822)|0;nO(53880,49829)|0;nO(53892,49837)|0;nO(53904,49847)|0;nO(53916,49856)|0;nO(53928,49863)|0;nO(53940,49872)|0;nO(53952,49876)|0;nO(53964,49880)|0;nO(53976,49884)|0;nO(53988,49888)|0;nO(54e3,49892)|0;nO(54012,49896)|0;return}function cI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function dI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function eI(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;s=z+12|0;r=z+8|0;w=z+4|0;x=z;IE(s,g);t=XF(s,56736)|0;YF(s);c[h>>2]=0;u=t+8|0;m=0;a:while(1){l=c[e>>2]|0;if(!((j|0)!=(k|0)&(m|0)==0))break;n=l;if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;o=1;q=0}else{o=0;q=n}}else{l=0;o=1;q=n}p=c[f>>2]|0;m=p;do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else n=cg(a[n>>0]|0)|0;if(!(_f(n,Wf()|0)|0))if(o)break;else{y=63;break a}else{c[f>>2]=0;m=0;y=15;break}}else y=15;while(0);if((y|0)==15){y=0;if(o){y=63;break}else p=0}b:do if((Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0)<<24>>24==37){p=j+1|0;if((p|0)==(k|0)){y=63;break a}n=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{j=j+2|0;if((j|0)==(k|0)){y=63;break a}o=n;l=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0;j=p;break}default:{o=0;l=n}}p=c[(c[d>>2]|0)+36>>2]|0;c[w>>2]=q;c[x>>2]=m;c[r>>2]=c[w>>2];c[s>>2]=c[x>>2];q=Qb[p&15](d,r,s,g,h,i,l,o)|0;c[e>>2]=q;j=j+2|0}else{m=a[j>>0]|0;if(m<<24>>24>-1?(v=c[u>>2]|0,b[v+(m<<24>>24<<1)>>1]&8192):0){do{j=j+1|0;if((j|0)==(k|0)){j=k;break}m=a[j>>0]|0;if(m<<24>>24<=-1)break}while((b[v+(m<<24>>24<<1)>>1]&8192)!=0);while(1){if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}do if(p){m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))m=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else m=cg(a[m>>0]|0)|0;if(!(_f(m,Wf()|0)|0))if(n)break;else break b;else{c[f>>2]=0;y=42;break}}else y=42;while(0);if((y|0)==42){y=0;if(n)break b;else p=0}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(b[(c[u>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}}}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;q=Ib[c[(c[t>>2]|0)+12>>2]&63](t,m&255)|0;if(q<<24>>24!=(Ib[c[(c[t>>2]|0)+12>>2]&63](t,a[j>>0]|0)|0)<<24>>24){c[h>>2]=4;break}m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}j=j+1|0}while(0);m=c[h>>2]|0}if((y|0)==63)c[h>>2]=4;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[f>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[m>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(n)break;else{y=78;break}else{c[f>>2]=0;y=76;break}}else y=76;while(0);if((y|0)==76?n:0)y=78;if((y|0)==78)c[h>>2]=c[h>>2]|2;zb=z;return l|0}function fI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function gI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function hI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function iI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function lI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);i=c[f>>2]|0;do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else break a;else{c[f>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){i=0;break}else i=0}d=c[e>>2]|0;h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if((d&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(d<<24>>24<<1)>>1]&8192))break;d=c[e>>2]|0;h=d+12|0;i=c[h>>2]|0;if((i|0)==(c[d+16>>2]|0))Gb[c[(c[d>>2]|0)+40>>2]&127](d)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}}d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else{k=41;break}else{c[f>>2]=0;k=39;break}}else k=39;while(0);if((k|0)==39?h:0)k=41;if((k|0)==41)c[g>>2]=c[g>>2]|2;return}function mI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+11>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+12+11>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(FG(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function nI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function oI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function pI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function qI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function rI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;i=1;break}else{i=(c[d>>2]|0)==0;break}}else i=1;while(0);h=c[e>>2]|0;do if(h){b=c[h+12>>2]|0;if((b|0)==(c[h+16>>2]|0))b=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(i){j=h;k=17;break}else{k=16;break}else{c[e>>2]=0;k=14;break}}else k=14;while(0);if((k|0)==14)if(i)k=16;else{j=0;k=17}a:do if((k|0)==16)c[f>>2]=c[f>>2]|6;else if((k|0)==17){b=c[d>>2]|0;h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if((Jb[c[(c[g>>2]|0)+36>>2]&63](g,b&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}b=c[d>>2]|0;h=b+12|0;i=c[h>>2]|0;if((i|0)==(c[b+16>>2]|0))Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;h=1;break}else{h=(c[d>>2]|0)==0;break}}else h=1;while(0);do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(h)break a;else break;else{c[e>>2]=0;k=38;break}}else k=38;while(0);if((k|0)==38?!h:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function sI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[d>>2]|0;do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[j>>0]|0)|0;if(_f(i,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);j=c[e>>2]|0;do if(j){i=c[j+12>>2]|0;if((i|0)==(c[j+16>>2]|0))i=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else i=cg(a[i>>0]|0)|0;if(!(_f(i,Wf()|0)|0))if(k){q=17;break}else{q=16;break}else{c[e>>2]=0;q=14;break}}else q=14;while(0);if((q|0)==14)if(k)q=16;else{j=0;q=17}a:do if((q|0)==16){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==17){i=c[d>>2]|0;k=c[i+12>>2]|0;if((k|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[k>>0]|0)|0;k=i&255;if(k<<24>>24>-1?(p=g+8|0,b[(c[p>>2]|0)+(i<<24>>24<<1)>>1]&2048):0){i=(Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24;k=c[d>>2]|0;l=k+12|0;m=c[l>>2]|0;if((m|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=m+1;cg(a[m>>0]|0)|0}n=j;m=j;while(1){i=i+-48|0;o=h+-1|0;j=c[d>>2]|0;do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[k>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;l=1;break}else{l=(c[d>>2]|0)==0;break}}else l=1;while(0);if(m){j=c[m+12>>2]|0;if((j|0)==(c[m+16>>2]|0))j=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;j=1;n=0;m=0}else j=0}else{j=1;m=0}k=c[d>>2]|0;if(!((h|0)>1&(l^j)))break;j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;k=j&255;if(k<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=(i*10|0)+((Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24)|0;j=c[d>>2]|0;k=j+12|0;l=c[k>>2]|0;if((l|0)==(c[j+16>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=l+1;cg(a[l>>0]|0)|0}h=o}do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);do if(n){j=c[n+12>>2]|0;if((j|0)==(c[n+16>>2]|0))j=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else j=cg(a[j>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(k)break a;else break;else{c[e>>2]=0;q=63;break}}else q=63;while(0);if((q|0)==63?!k:0)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function tI(a){a=a|0;CF(a);return}function uI(a){a=a|0;CF(a);SA(a);return}function vI(a){a=a|0;return 2}function wI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=PI(a,j,i,e,f,g,13152,13184)|0;zb=h;return g|0}function xI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+8+3>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+((o?c[n+4>>2]|0:e&255)<<2)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=PI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function yI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];NI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function zI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];OI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function AI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];_I(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function BI(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56768)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];NI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];OI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];QI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=PI(b,j,k,f,g,h,12976,13008)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=PI(b,j,k,f,g,h,13008,13040)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];RI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];SI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];TI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];UI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];VI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];WI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];XI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=PI(b,j,k,f,g,h,13040,13084)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=PI(b,j,k,f,g,h,13088,13108)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];YI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=PI(b,j,k,f,g,h,13120,13152)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];ZI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];_I(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];$I(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];aJ(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function CI(b){b=b|0;if((a[54952]|0)==0?nB(54952)|0:0){MI();c[14233]=54352;pB(54952)}return c[14233]|0}function DI(b){b=b|0;if((a[54936]|0)==0?nB(54936)|0:0){LI();c[14232]=54064;pB(54936)}return c[14232]|0}function EI(b){b=b|0;if((a[54920]|0)==0?nB(54920)|0:0){KI();c[14231]=54032;pB(54920)}return c[14231]|0}function FI(b){b=b|0;if((a[54912]|0)==0?nB(54912)|0:0){c[14228]=0;c[14229]=0;c[14230]=0;tO(56912,17648,JI(17648)|0);pB(54912)}return 56912}function GI(b){b=b|0;if((a[54904]|0)==0?nB(54904)|0:0){c[14225]=0;c[14226]=0;c[14227]=0;tO(56900,17600,JI(17600)|0);pB(54904)}return 56900}function HI(b){b=b|0;if((a[54896]|0)==0?nB(54896)|0:0){c[14222]=0;c[14223]=0;c[14224]=0;tO(56888,17564,JI(17564)|0);pB(54896)}return 56888}function II(b){b=b|0;if((a[54888]|0)==0?nB(54888)|0:0){c[14219]=0;c[14220]=0;c[14221]=0;tO(56876,17528,JI(17528)|0);pB(54888)}return 56876}function JI(a){a=a|0;return ly(a)|0}function KI(){var b=0,d=0;if((a[54928]|0)==0?nB(54928)|0:0){d=54032;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54056);pB(54928)}AO(54032,17732)|0;AO(54044,17744)|0;return}function LI(){var b=0,d=0;if((a[54944]|0)==0?nB(54944)|0:0){d=54064;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54352);pB(54944)}AO(54064,17756)|0;AO(54076,17788)|0;AO(54088,17824)|0;AO(54100,17848)|0;AO(54112,17872)|0;AO(54124,17888)|0;AO(54136,17908)|0;AO(54148,17928)|0;AO(54160,17956)|0;AO(54172,17996)|0;AO(54184,18028)|0;AO(54196,18064)|0;AO(54208,18100)|0;AO(54220,18116)|0;AO(54232,18132)|0;AO(54244,18148)|0;AO(54256,17872)|0;AO(54268,18164)|0;AO(54280,18180)|0;AO(54292,18196)|0;AO(54304,18212)|0;AO(54316,18228)|0;AO(54328,18244)|0;AO(54340,18260)|0;return}function MI(){var b=0,d=0;if((a[54960]|0)==0?nB(54960)|0:0){d=54352;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54520);pB(54960)}AO(54352,18276)|0;AO(54364,18304)|0;AO(54376,18332)|0;AO(54388,18364)|0;AO(54400,18404)|0;AO(54412,18440)|0;AO(54424,18468)|0;AO(54436,18504)|0;AO(54448,18520)|0;AO(54460,18536)|0;AO(54472,18552)|0;AO(54484,18568)|0;AO(54496,18584)|0;AO(54508,18600)|0;return}function NI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function OI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function PI(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+16|0;q=v+12|0;p=v+8|0;s=v+4|0;t=v;IE(q,e);r=XF(q,56768)|0;YF(q);c[f>>2]=0;k=0;a:while(1){j=c[b>>2]|0;if(!((h|0)!=(i|0)&(k|0)==0))break;l=j;if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;m=1;o=0}else{m=0;o=l}}else{j=0;m=1;o=l}n=c[d>>2]|0;k=n;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else l=jE(c[l>>2]|0)|0;if(!(JE(l,iE()|0)|0))if(m)break;else{u=60;break a}else{c[d>>2]=0;k=0;u=15;break}}else u=15;while(0);if((u|0)==15){u=0;if(m){u=60;break}else n=0}b:do if((Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0)<<24>>24==37){n=h+4|0;if((n|0)==(i|0)){u=60;break a}l=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{h=h+8|0;if((h|0)==(i|0)){u=60;break a}m=l;j=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0;h=n;break}default:{m=0;j=l}}n=c[(c[a>>2]|0)+36>>2]|0;c[s>>2]=o;c[t>>2]=k;c[p>>2]=c[s>>2];c[q>>2]=c[t>>2];o=Qb[n&15](a,p,q,e,f,g,j,m)|0;c[b>>2]=o;h=h+8|0}else{if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0)){l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;o=Ib[c[(c[r>>2]|0)+28>>2]&63](r,k)|0;if((o|0)!=(Ib[c[(c[r>>2]|0)+28>>2]&63](r,c[h>>2]|0)|0)){c[f>>2]=4;break}k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}h=h+4|0;break}do{h=h+4|0;if((h|0)==(i|0)){h=i;break}}while(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0);while(1){if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else break b;else{c[d>>2]=0;u=40;break}}else u=40;while(0);if((u|0)==40){u=0;if(l)break b;else n=0}l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,k)|0))break b;k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}}}while(0);k=c[f>>2]|0}if((u|0)==60)c[f>>2]=4;if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}h=c[d>>2]|0;do if(h){k=c[h+12>>2]|0;if((k|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[k>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(l)break;else{u=75;break}else{c[d>>2]=0;u=73;break}}else u=73;while(0);if((u|0)==73?l:0)u=75;if((u|0)==75)c[f>>2]=c[f>>2]|2;zb=v;return j|0}function QI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function RI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function SI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function TI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function UI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function VI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function WI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(!(Jb[c[(c[f>>2]|0)+12>>2]&63](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break;else{i=40;break}else{c[d>>2]=0;i=38;break}}else i=38;while(0);if((i|0)==38?g:0)i=40;if((i|0)==40)c[e>>2]=c[e>>2]|2;return}function XI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+8+3>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+20+3>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(gH(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function YI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function ZI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function _I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function $I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function aJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if((Jb[c[(c[f>>2]|0)+52>>2]&63](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function bJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[h>>2]|0)|0;if(JE(g,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(i){n=17;break}else{n=16;break}else{c[b>>2]=0;n=14;break}}else n=14;while(0);if((n|0)==14)if(i)n=16;else{h=0;n=17}a:do if((n|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((n|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[i>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Jb[c[(c[e>>2]|0)+52>>2]&63](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0))Gb[c[(c[i>>2]|0)+40>>2]&127](i)|0;else{c[j>>2]=k+4;jE(c[k>>2]|0)|0}l=h;k=h;while(1){g=g+-48|0;m=f+-1|0;h=c[a>>2]|0;do if(h){i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[i>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;h=1;l=0;k=0}else h=0}else{h=1;k=0}i=c[a>>2]|0;if(!((f|0)>1&(j^h)))break;h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,h)|0))break a;g=(g*10|0)+((Jb[c[(c[e>>2]|0)+52>>2]&63](e,h,0)|0)<<24>>24)|0;h=c[a>>2]|0;i=h+12|0;j=c[i>>2]|0;if((j|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[i>>2]=j+4;jE(c[j>>2]|0)|0}f=m}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(l){h=c[l+12>>2]|0;if((h|0)==(c[l+16>>2]|0))h=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else h=jE(c[h>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(i)break a;else break;else{c[b>>2]=0;n=61;break}}else n=61;while(0);if((n|0)==61?!i:0)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function cJ(a){a=a|0;hJ(a+8|0);CF(a);return}function dJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function eJ(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=zb;zb=zb+112|0;e=j;f=j+100|0;c[f>>2]=e+100;fJ(b+8|0,e,f,g,h,i);i=c[f>>2]|0;h=e;e=c[d>>2]|0;while(1){if((h|0)==(i|0))break;f=a[h>>0]|0;if(!e)e=0;else{b=e+24|0;g=c[b>>2]|0;if((g|0)==(c[e+28>>2]|0)){d=c[(c[e>>2]|0)+52>>2]|0;f=cg(f)|0;f=Ib[d&63](e,f)|0}else{c[b>>2]=g+1;a[g>>0]=f;f=cg(f)|0}d=_f(f,Wf()|0)|0;e=d?0:e}h=h+1|0}zb=j;return e|0}function fJ(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;i=l;a[i>>0]=37;j=i+1|0;a[j>>0]=g;k=i+2|0;a[k>>0]=h;a[i+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}k=gJ(d,c[e>>2]|0)|0;k=d+(Sa(d|0,k|0,i|0,f|0,c[b>>2]|0)|0)|0;c[e>>2]=k;zb=l;return}function gJ(a,b){a=a|0;b=b|0;return b-a|0}function hJ(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(_F()|0))Vy(c[a>>2]|0);return}function iJ(a){a=a|0;hJ(a+8|0);CF(a);return}function jJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function kJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=zb;zb=zb+416|0;d=i;e=i+400|0;c[e>>2]=d+400;lJ(a+8|0,d,e,f,g,h);h=c[e>>2]|0;g=d;d=c[b>>2]|0;while(1){if((g|0)==(h|0))break;e=c[g>>2]|0;if(!d)d=0;else{a=d+24|0;f=c[a>>2]|0;if((f|0)==(c[d+28>>2]|0)){b=c[(c[d>>2]|0)+52>>2]|0;e=jE(e)|0;e=Ib[b&63](d,e)|0}else{c[a>>2]=f+4;c[f>>2]=e;e=jE(e)|0}b=JE(e,iE()|0)|0;d=b?0:d}g=g+4|0}zb=i;return d|0}function lJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+128|0;k=h;l=h+116|0;i=h+104|0;j=h+112|0;c[l>>2]=k+100;fJ(a,k,l,e,f,g);e=i;c[e>>2]=0;c[e+4>>2]=0;c[j>>2]=k;e=mJ(b,c[d>>2]|0)|0;a=ez(c[a>>2]|0)|0;e=Sz(b,j,e,i)|0;if(a|0)ez(a)|0;if((e|0)==-1)nJ(0);else{c[d>>2]=b+(e<<2);zb=h;return}}function mJ(a,b){a=a|0;b=b|0;return b-a>>2|0}function nJ(a){a=a|0;ua()}function oJ(a){a=a|0;CF(a);return}function pJ(a){a=a|0;CF(a);SA(a);return}function qJ(a){a=a|0;return 127}function rJ(a){a=a|0;return 127}function sJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function tJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function uJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function vJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function wJ(a){a=a|0;return 0}function xJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function yJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function zJ(a){a=a|0;CF(a);return}function AJ(a){a=a|0;CF(a);SA(a);return}function BJ(a){a=a|0;return 127}function CJ(a){a=a|0;return 127}function DJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function EJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function FJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function GJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function HJ(a){a=a|0;return 0}function IJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function JJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function KJ(a){a=a|0;CF(a);return}function LJ(a){a=a|0;CF(a);SA(a);return}function MJ(a){a=a|0;return 2147483647}function NJ(a){a=a|0;return 2147483647}function OJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function PJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function SJ(a){a=a|0;return 0}function TJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function UJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function VJ(a){a=a|0;CF(a);return}function WJ(a){a=a|0;CF(a);SA(a);return}function XJ(a){a=a|0;return 2147483647}function YJ(a){a=a|0;return 2147483647}function ZJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function _J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function $J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function aK(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function bK(a){a=a|0;return 0}function cK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function dK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function eK(a){a=a|0;CF(a);return}function fK(a){a=a|0;CF(a);SA(a);return}function gK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+256|0;n=v+240|0;q=v+216|0;m=v+112|0;u=v+232|0;p=v+228|0;s=v+224|0;j=v+250|0;w=v+220|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56736)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(jK(d,n,f,s,l,h,j,b,u,p,m+100|0)|0){Kb[c[(c[b>>2]|0)+32>>2]&15](b,50465,50475,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>98){b=FO(b+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+10|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=a[j>>0]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((a[b>>0]|0)==f<<24>>24)break;b=b+1|0}a[g>>0]=a[50465+(b-m)>>0]|0;j=j+1|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function hK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+128|0;j=s+120|0;b=s;r=s+112|0;m=s+108|0;p=s+100|0;k=s+124|0;n=s+104|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56736)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(jK(d,j,f,p,g,h,k,l,r,m,b+100|0)|0){b=i+11|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;a[j>>0]=0;bg(f,j);c[i+4>>2]=0}else{a[j>>0]=0;bg(i,j);a[b>>0]=0}if(a[k>>0]|0)sO(i,Ib[c[(c[l>>2]|0)+28>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+28>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-1|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((a[b>>0]|0)!=k<<24>>24)break;b=b+1|0}kK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[g>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function iK(a){a=a|0;return}function jK(e,f,g,h,i,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=zb;zb=zb+512|0;I=Y+488|0;O=Y;X=Y+480|0;Q=Y+472|0;J=Y+468|0;K=Y+496|0;L=Y+493|0;M=Y+492|0;S=Y+456|0;T=Y+444|0;U=Y+432|0;V=Y+420|0;W=Y+408|0;N=Y+404|0;R=Y+400|0;c[I>>2]=o;c[X>>2]=O;c[X+4>>2]=145;c[Q>>2]=O;c[J>>2]=O+400;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[S+(o<<2)>>2]=0;o=o+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[T+(o<<2)>>2]=0;o=o+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[U+(o<<2)>>2]=0;o=o+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[V+(o<<2)>>2]=0;o=o+1|0}c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[W+(o<<2)>>2]=0;o=o+1|0}mK(g,h,K,L,M,S,T,U,V,N);c[n>>2]=c[m>>2];B=l+8|0;C=U+11|0;D=U+4|0;E=V+11|0;F=V+4|0;G=S+11|0;H=S+4|0;v=(i&512|0)!=0;w=T+11|0;x=K+3|0;y=T+4|0;z=W+11|0;A=W+4|0;O=0;u=0;a:while(1){if(u>>>0>=4){P=243;break}o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);g=c[f>>2]|0;do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h){t=g;break}else{P=243;break a}else{c[f>>2]=0;P=31;break}}else P=31;while(0);if((P|0)==31){P=0;if(h){P=243;break}else t=0}b:do switch(a[K+u>>0]|0){case 1:{if((u|0)==3)o=O;else{o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=45;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){P=45;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);P=47}break}case 0:{if((u|0)==3)o=O;else P=47;break}case 3:{o=a[C>>0]|0;o=o<<24>>24<0?c[D>>2]|0:o&255;l=a[E>>0]|0;l=l<<24>>24<0?c[F>>2]|0:l&255;if((o|0)==(0-l|0))o=O;else{i=(o|0)==0;o=c[e>>2]|0;g=c[o+12>>2]|0;h=(g|0)==(c[o+16>>2]|0);if(i|(l|0)==0){if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;o=o&255;if(i){if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=o<<24>>24){o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O;break b}if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)!=o<<24>>24){a[k>>0]=1;o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[e>>2]|0;h=g+12|0;l=c[h>>2]|0;i=(l|0)==(c[g+16>>2]|0);if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)==(o&255)<<24>>24){if(i)Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=l+1;cg(a[l>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(i)o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[l>>0]|0)|0;if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=(o&255)<<24>>24){P=105;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O}break}case 2:{if(u>>>0<2|(O|0)!=0){o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;l=h?g:T;i=l;if(!u)h=i;else{s=i;P=110}}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){o=0;break b}o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;s=h?g:T;l=s;P=110}c:do if((P|0)==110){P=0;if((d[K+(u+-1)>>0]|0)<2){i=l+(h?c[y>>2]|0:o&255)|0;h=s;while(1){p=h;if((i|0)==(p|0))break;q=a[p>>0]|0;if(q<<24>>24<=-1)break;if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192))break;h=p+1|0}q=h-s|0;p=a[z>>0]|0;r=p<<24>>24<0;i=c[A>>2]|0;p=p&255;if(q>>>0<=(r?i:p)>>>0){Z=(c[W>>2]|0)+i|0;i=W+p|0;p=r?Z:i;i=r?Z+(0-q)|0:i+(0-q)|0;while(1){if((i|0)==(p|0))break c;if((a[i>>0]|0)!=(a[l>>0]|0)){h=s;break c}l=l+1|0;i=i+1|0}}else h=s}else h=s}while(0);i=h;h=t;d:while(1){Z=o<<24>>24<0;if((i|0)==((Z?g:T)+(Z?c[y>>2]|0:o&255)|0))break;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else break d;else{c[f>>2]=0;P=136;break}}else P=136;while(0);if((P|0)==136){P=0;if(g)break;else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}i=i+1|0;o=a[w>>0]|0;g=c[T>>2]|0;h=l}if(v?(Z=a[w>>0]|0,t=Z<<24>>24<0,(i|0)!=((t?c[T>>2]|0:T)+(t?c[y>>2]|0:Z&255)|0)):0){P=148;break a}else o=O;break}case 4:{i=0;l=t;o=t;e:while(1){g=c[e>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(l){g=c[l+12>>2]|0;if((g|0)==(c[l+16>>2]|0))g=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(h){p=l;break}else{l=o;break e}else{c[f>>2]=0;o=0;P=162;break}}else P=162;while(0);if((P|0)==162){P=0;if(h){l=o;break}else p=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;h=g&255;if(h<<24>>24>-1?(b[(c[B>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0:0){g=c[n>>2]|0;if((g|0)==(c[I>>2]|0)){nK(m,n,I);g=c[n>>2]|0}c[n>>2]=g+1;a[g>>0]=h;g=i+1|0}else{Z=a[G>>0]|0;if(!((a[M>>0]|0)==h<<24>>24&(i|0?((Z<<24>>24<0?c[H>>2]|0:Z&255)|0)!=0:0))){l=o;break}g=c[Q>>2]|0;if((g|0)==(c[J>>2]|0)){oK(X,Q,J);g=c[Q>>2]|0}c[Q>>2]=g+4;c[g>>2]=i;g=0}h=c[e>>2]|0;l=h+12|0;i=c[l>>2]|0;if((i|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[l>>2]=i+1;cg(a[i>>0]|0)|0}i=g;l=p}o=c[Q>>2]|0;if(i|0?(c[X>>2]|0)!=(o|0):0){if((o|0)==(c[J>>2]|0)){oK(X,Q,J);o=c[Q>>2]|0}c[Q>>2]=o+4;c[o>>2]=i}f:do if((c[N>>2]|0)>0){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(l){o=c[l+12>>2]|0;if((o|0)==(c[l+16>>2]|0))o=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g)break;else{P=204;break a}else{c[f>>2]=0;P=198;break}}else P=198;while(0);if((P|0)==198){P=0;if(g){P=204;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[L>>0]|0)!=(o&255)<<24>>24){P=204;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l;while(1){if((c[N>>2]|0)<=0)break f;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{P=230;break a}else{c[f>>2]=0;P=223;break}}else P=223;while(0);if((P|0)==223){P=0;if(g){P=230;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=230;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&2048)){P=230;break a}if((c[n>>2]|0)==(c[I>>2]|0))nK(m,n,I);o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[n>>2]|0;c[n>>2]=g+1;a[g>>0]=o;c[N>>2]=(c[N>>2]|0)+-1;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l}}while(0);if((c[n>>2]|0)==(c[m>>2]|0)){P=241;break a}else o=O;break}default:o=O}while(0);g:do if((P|0)==47){P=0;h=t;while(1){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{o=O;break g}else{c[f>>2]=0;P=61;break}}else P=61;while(0);if((P|0)==61){P=0;if(g){o=O;break g}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){o=O;break g}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=O;break g}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);h=l}}while(0);O=o;u=u+1|0}h:do if((P|0)==45){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==105){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==148){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==204){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==230){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==241){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==243){i:do if(O|0){i=O+11|0;p=O+4|0;l=1;j:while(1){o=a[i>>0]|0;if(o<<24>>24<0)o=c[p>>2]|0;else o=o&255;if(l>>>0>=o>>>0)break i;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);o=c[f>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h)break;else break j;else{c[f>>2]=0;P=262;break}}else P=262;while(0);if((P|0)==262?(P=0,h):0)break;o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)<0)g=c[O>>2]|0;else g=O;if((a[g+l>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}l=l+1|0}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);g=c[X>>2]|0;o=c[Q>>2]|0;if((g|0)!=(o|0)){c[R>>2]=0;kG(S,g,o,R);if(!(c[R>>2]|0)){g=1;break}else{c[j>>2]=c[j>>2]|4;g=0;break}}else g=1}while(0);jO(W);jO(V);jO(U);jO(T);jO(S);o=c[X>>2]|0;c[X>>2]=0;if(o|0)Sb[c[X+4>>2]&255](o);zb=Y;return g|0}function kK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;j=d;m=o;n=b+11|0;h=a[n>>0]|0;f=h<<24>>24<0;if(f){l=c[b+4>>2]|0;i=(c[b+8>>2]&2147483647)+-1|0}else{l=h&255;i=10}k=e-j|0;do if(k|0){if(f){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=h&255}if(lK(d,g,g+f|0)|0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;ag(m,d,e);n=a[m+11>>0]|0;l=n<<24>>24<0;rO(b,l?c[m>>2]|0:m,l?c[m+4>>2]|0:n&255)|0;jO(m);break}if((i-l|0)>>>0>>0)qO(b,i,l+k-i|0,l,l,0,0);if((a[n>>0]|0)<0)h=c[b>>2]|0;else h=b;g=e+(l-j)|0;f=h+l|0;while(1){if((d|0)==(e|0))break;bg(f,d);f=f+1|0;d=d+1|0}a[m>>0]=0;bg(h+g|0,m);d=l+k|0;if((a[n>>0]|0)<0){c[b+4>>2]=d;break}else{a[n>>0]=d;break}}while(0);zb=o;return b|0}function lK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function mK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;o=zb;zb=zb+16|0;m=o+12|0;n=o;if(b){d=XF(d,56968)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}else{d=XF(d,56960)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}c[l>>2]=b;zb=o;return}function nK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?1:g):-1;h=(c[b>>2]|0)-h|0;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+h;c[d>>2]=(c[a>>2]|0)+g;return}function oK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function pK(a){a=a|0;CF(a);return}function qK(a){a=a|0;CF(a);SA(a);return}function rK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+592|0;n=v+512|0;q=v+552|0;m=v+112|0;u=v+568|0;p=v+564|0;s=v+560|0;j=v+576|0;w=v+556|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56768)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(tK(d,n,f,s,l,h,j,b,u,p,m+400|0)|0){Kb[c[(c[b>>2]|0)+48>>2]&15](b,50575,50585,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>392){b=FO((b>>>2)+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+40|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=c[j>>2]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((c[b>>2]|0)==(f|0))break;b=b+4|0}a[g>>0]=a[50575+(b-m>>2)>>0]|0;j=j+4|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function sK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+432|0;j=s+424|0;b=s;r=s+416|0;m=s+408|0;p=s+400|0;k=s+428|0;n=s+404|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56768)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(tK(d,j,f,p,g,h,k,l,r,m,b+400|0)|0){b=i+8+3|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;c[j>>2]=0;JF(f,j);c[i+4>>2]=0}else{c[j>>2]=0;JF(i,j);a[b>>0]=0}if(a[k>>0]|0)DO(i,Ib[c[(c[l>>2]|0)+44>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+44>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-4|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((c[b>>2]|0)!=(k|0))break;b=b+4|0}uK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[g>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function tK(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;X=zb;zb=zb+512|0;H=X+496|0;N=X;W=X+488|0;P=X+480|0;I=X+476|0;J=X+500|0;K=X+472|0;L=X+468|0;R=X+456|0;S=X+444|0;T=X+432|0;U=X+420|0;V=X+408|0;M=X+404|0;Q=X+400|0;c[H>>2]=n;c[W>>2]=N;c[W+4>>2]=145;c[P>>2]=N;c[I>>2]=N+400;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[R+(n<<2)>>2]=0;n=n+1|0}c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[S+(n<<2)>>2]=0;n=n+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[T+(n<<2)>>2]=0;n=n+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[U+(n<<2)>>2]=0;n=n+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[V+(n<<2)>>2]=0;n=n+1|0}xK(f,g,J,K,L,R,S,T,U,M);c[m>>2]=c[l>>2];B=T+8+3|0;C=T+4|0;D=U+8+3|0;E=U+4|0;F=R+11|0;G=R+4|0;v=(h&512|0)!=0;w=S+8+3|0;x=J+3|0;y=S+4|0;z=V+8+3|0;A=V+4|0;N=0;u=0;a:while(1){if(u>>>0>=4){O=239;break}n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g){t=f;break}else{O=239;break a}else{c[e>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(g){O=239;break}else t=0}b:do switch(a[J+u>>0]|0){case 1:{if((u|0)==3)n=N;else{n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){O=44;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);O=46}break}case 0:{if((u|0)==3)n=N;else O=46;break}case 3:{n=a[B>>0]|0;n=n<<24>>24<0?c[C>>2]|0:n&255;h=a[D>>0]|0;h=h<<24>>24<0?c[E>>2]|0:h&255;if((n|0)==(0-h|0))n=N;else{o=(n|0)==0;n=c[b>>2]|0;f=c[n+12>>2]|0;g=(f|0)==(c[n+16>>2]|0);if(o|(h|0)==0){if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(o){if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){a[j>>0]=1;n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;o=(h|0)==(c[f+16>>2]|0);if((n|0)==(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){if(o)Gb[c[(c[f>>2]|0)+40>>2]&127](f)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[h>>2]|0)|0;if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){O=103;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(u>>>0<2|(N|0)!=0){f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;if(u)O=108}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){n=0;break b}f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;O=108}c:do if((O|0)==108){O=0;if((d[J+(u+-1)>>0]|0)<2){h=f;while(1){s=h<<24>>24<0;f=n;if(((s?g:S)+((s?c[y>>2]|0:h&255)<<2)|0)==(f|0)){f=h;break}if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,c[f>>2]|0)|0)){O=112;break}n=f+4|0;h=a[w>>0]|0;g=c[S>>2]|0}if((O|0)==112){O=0;f=a[w>>0]|0;g=c[S>>2]|0}o=f<<24>>24<0?g:S;s=o;q=n-s>>2;p=a[z>>0]|0;r=p<<24>>24<0;h=c[A>>2]|0;p=p&255;if(q>>>0>(r?h:p)>>>0)n=s;else{Y=(c[V>>2]|0)+(h<<2)|0;h=V+(p<<2)|0;p=r?Y:h;h=(r?Y:h)+(0-q<<2)|0;while(1){if((h|0)==(p|0))break c;if((c[h>>2]|0)!=(c[o>>2]|0)){n=s;break c}o=o+4|0;h=h+4|0}}}}while(0);o=n;h=t;d:while(1){Y=f<<24>>24<0;if((o|0)==((Y?g:S)+((Y?c[y>>2]|0:f&255)<<2)|0))break;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else break d;else{c[e>>2]=0;O=134;break}}else O=134;while(0);if((O|0)==134){O=0;if(f)break;else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[o>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}o=o+4|0;f=a[w>>0]|0;g=c[S>>2]|0}if(v?(Y=a[w>>0]|0,t=Y<<24>>24<0,(o|0)!=((t?c[S>>2]|0:S)+((t?c[y>>2]|0:Y&255)<<2)|0)):0){O=146;break a}else n=N;break}case 4:{o=0;h=t;n=t;e:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=jE(c[g>>2]|0)|0;if(JE(f,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))f=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(g){p=h;break}else{h=n;break e}else{c[e>>2]=0;n=0;O=160;break}}else O=160;while(0);if((O|0)==160){O=0;if(g){h=n;break}else p=0}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else g=jE(c[g>>2]|0)|0;if(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,g)|0){f=c[m>>2]|0;if((f|0)==(c[H>>2]|0)){yK(l,m,H);f=c[m>>2]|0}c[m>>2]=f+4;c[f>>2]=g;f=o+1|0}else{Y=a[F>>0]|0;if(!((g|0)==(c[L>>2]|0)&(o|0?((Y<<24>>24<0?c[G>>2]|0:Y&255)|0)!=0:0))){h=n;break}f=c[P>>2]|0;if((f|0)==(c[I>>2]|0)){oK(W,P,I);f=c[P>>2]|0}c[P>>2]=f+4;c[f>>2]=o;f=0}g=c[b>>2]|0;h=g+12|0;o=c[h>>2]|0;if((o|0)==(c[g+16>>2]|0))Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=o+4;jE(c[o>>2]|0)|0}o=f;h=p}n=c[P>>2]|0;if(o|0?(c[W>>2]|0)!=(n|0):0){if((n|0)==(c[I>>2]|0)){oK(W,P,I);n=c[P>>2]|0}c[P>>2]=n+4;c[n>>2]=o}f:do if((c[M>>2]|0)>0){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else{O=201;break a}else{c[e>>2]=0;O=195;break}}else O=195;while(0);if((O|0)==195){O=0;if(f){O=201;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[K>>2]|0)){O=201;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h;while(1){if((c[M>>2]|0)<=0)break f;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{O=226;break a}else{c[e>>2]=0;O=220;break}}else O=220;while(0);if((O|0)==220){O=0;if(f){O=226;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,n)|0)){O=226;break a}if((c[m>>2]|0)==(c[H>>2]|0))yK(l,m,H);n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[m>>2]|0;c[m>>2]=f+4;c[f>>2]=n;c[M>>2]=(c[M>>2]|0)+-1;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h}}while(0);if((c[m>>2]|0)==(c[l>>2]|0)){O=237;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==46){O=0;g=t;while(1){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{n=N;break g}else{c[e>>2]=0;O=60;break}}else O=60;while(0);if((O|0)==60){O=0;if(f){n=N;break g}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){n=N;break g}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);g=h}}while(0);N=n;u=u+1|0}h:do if((O|0)==44){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==103){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==146){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==201){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==226){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==237){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==239){i:do if(N|0){o=N+8+3|0;p=N+4|0;h=1;j:while(1){n=a[o>>0]|0;if(n<<24>>24<0)n=c[p>>2]|0;else n=n&255;if(h>>>0>=n>>>0)break i;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);n=c[e>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g)break;else break j;else{c[e>>2]=0;O=258;break}}else O=258;while(0);if((O|0)==258?(O=0,g):0)break;n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((a[o>>0]|0)<0)f=c[N>>2]|0;else f=N;if((n|0)!=(c[f+(h<<2)>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}h=h+1|0}c[i>>2]=c[i>>2]|4;f=0;break h}while(0);f=c[W>>2]|0;n=c[P>>2]|0;if((f|0)!=(n|0)){c[Q>>2]=0;kG(R,f,n,Q);if(!(c[Q>>2]|0)){f=1;break}else{c[i>>2]=c[i>>2]|4;f=0;break}}else f=1}while(0);wO(V);wO(U);wO(T);wO(S);jO(R);n=c[W>>2]|0;c[W>>2]=0;if(n|0)Sb[c[W+4>>2]&255](n);zb=X;return f|0}function uK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;k=n;f=b+8|0;m=f+3|0;i=a[m>>0]|0;g=i<<24>>24<0;if(g){l=c[b+4>>2]|0;h=(c[f>>2]&2147483647)+-1|0}else{l=i&255;h=1}f=e-d|0;j=f>>2;do if(f|0){if(g){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=i&255}if(vK(d,g,g+(f<<2)|0)|0){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;wK(k,d,e);m=a[k+8+3>>0]|0;l=m<<24>>24<0;CO(b,l?c[k>>2]|0:k,l?c[k+4>>2]|0:m&255)|0;wO(k);break}if((h-l|0)>>>0>>0)BO(b,h,l+j-h|0,l,l,0,0);if((a[m>>0]|0)<0)f=c[b>>2]|0;else f=b;f=f+(l<<2)|0;while(1){if((d|0)==(e|0))break;JF(f,d);f=f+4|0;d=d+4|0}c[k>>2]=0;JF(f,k);d=l+j|0;if((a[m>>0]|0)<0){c[b+4>>2]=d;break}else{a[m>>0]=d;break}}while(0);zb=n;return b|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function wK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function xK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(d,56984)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(d,56976)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function yK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function zK(a){a=a|0;CF(a);return}function AK(a){a=a|0;CF(a);SA(a);return}function BK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+416|0;q=E+336|0;k=E+328|0;b=E+224|0;l=E+400|0;j=E+112|0;D=E+396|0;r=E+408|0;s=E+405|0;t=E+404|0;A=E+384|0;B=E+372|0;C=E+360|0;o=E+356|0;p=E;u=E+352|0;v=E+344|0;w=E+348|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56736)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+32>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}DK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}EK(y,u,v,c[f+4>>2]|0,x,x+z|0,n,m,r,a[s>>0]|0,a[t>>0]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=$f(q,y,d,b,f,h)|0;if(F|0)GO(F);jO(C);jO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function CK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+176|0;p=C+156|0;B=C+152|0;u=C+164|0;v=C+161|0;w=C+160|0;y=C+140|0;z=C+128|0;A=C+116|0;l=C+112|0;n=C;q=C+108|0;r=C+104|0;s=C+100|0;IE(B,f);t=XF(B,56736)|0;i=h+11|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=a[(b?c[h>>2]|0:h)>>0]|0;o=o<<24>>24==(Ib[c[(c[t>>2]|0)+28>>2]&63](t,45)|0)<<24>>24};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}DK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;EK(x,q,r,c[f+4>>2]|0,h,h+k|0,t,o,u,a[v>>0]|0,a[w>>0]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=$f(p,x,h,b,f,g)|0;if(D|0)GO(D);jO(A);jO(z);jO(y);YF(B);zb=C;return b|0}function DK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56968)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56960)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function EK(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c[f>>2]=d;y=q+11|0;G=q+4|0;z=p+11|0;A=p+4|0;B=(g&512|0)==0;C=j+8|0;D=(r|0)>0;E=o+11|0;F=o+4|0;x=0;while(1){if((x|0)==4)break;a:do switch(a[l+x>>0]|0){case 0:{c[e>>2]=c[f>>2];break}case 1:{c[e>>2]=c[f>>2];v=Ib[c[(c[j>>2]|0)+28>>2]&63](j,32)|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v;break}case 3:{w=a[y>>0]|0;s=w<<24>>24<0;if((s?c[G>>2]|0:w&255)|0){v=a[(s?c[q>>2]|0:q)>>0]|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v}break}case 2:{t=a[z>>0]|0;s=t<<24>>24<0;t=s?c[A>>2]|0:t&255;if(!(B|(t|0)==0)){w=s?c[p>>2]|0:p;u=w+t|0;s=c[f>>2]|0;t=w;while(1){if((t|0)==(u|0))break;a[s>>0]=a[t>>0]|0;s=s+1|0;t=t+1|0}c[f>>2]=s}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;u=h;while(1){if(u>>>0>=i>>>0)break;s=a[u>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[C>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(D){v=r;while(1){s=(v|0)>0;if(!(u>>>0>h>>>0&s))break;w=u+-1|0;H=a[w>>0]|0;s=c[f>>2]|0;c[f>>2]=s+1;a[s>>0]=H;v=v+-1|0;u=w}if(s)w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;else w=0;s=v;while(1){v=c[f>>2]|0;c[f>>2]=v+1;if((s|0)<=0)break;a[v>>0]=w;s=s+-1|0}a[v>>0]=m}b:do if((u|0)==(h|0)){w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=w}else{H=a[E>>0]|0;s=H<<24>>24<0;if(!((s?c[F>>2]|0:H&255)|0))s=-1;else s=a[(s?c[o>>2]|0:o)>>0]|0;v=0;w=0;while(1){if((u|0)==(h|0))break b;if((w|0)==(s|0)){H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=n;v=v+1|0;H=a[E>>0]|0;s=H<<24>>24<0;if(v>>>0<(s?c[F>>2]|0:H&255)>>>0){s=a[(s?c[o>>2]|0:o)+v>>0]|0;s=s<<24>>24==127?-1:s<<24>>24;w=0}else{s=w;w=0}}H=u+-1|0;J=a[H>>0]|0;I=c[f>>2]|0;c[f>>2]=I+1;a[I>>0]=J;w=w+1|0;u=H}}while(0);s=c[f>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=a[t>>0]|0;a[t>>0]=a[s>>0]|0;a[s>>0]=J;t=t+1|0}break}default:{}}while(0);x=x+1|0}h=a[y>>0]|0;s=h<<24>>24<0;h=s?c[G>>2]|0:h&255;if(h>>>0>1){J=s?c[q>>2]|0:q;t=J+h|0;s=c[f>>2]|0;h=J;while(1){h=h+1|0;if((h|0)==(t|0))break;a[s>>0]=a[h>>0]|0;s=s+1|0}c[f>>2]=s}switch((g&176)<<24>>24){case 32:{c[e>>2]=c[f>>2];break}case 16:break;default:c[e>>2]=d}return}function FK(a){a=a|0;CF(a);return}function GK(a){a=a|0;CF(a);SA(a);return}function HK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+992|0;q=E+912|0;k=E+904|0;b=E+800|0;l=E+984|0;j=E+400|0;D=E+980|0;r=E+988|0;s=E+976|0;t=E+972|0;A=E+960|0;B=E+948|0;C=E+936|0;o=E+932|0;p=E;u=E+928|0;v=E+920|0;w=E+924|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b<<2)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56768)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+48>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}JK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}KK(y,u,v,c[f+4>>2]|0,x,x+(z<<2)|0,n,m,r,c[s>>2]|0,c[t>>2]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=IH(q,y,d,b,f,h)|0;if(F|0)GO(F);wO(C);wO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function IK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+480|0;p=C+464|0;B=C+460|0;u=C+468|0;v=C+456|0;w=C+452|0;y=C+440|0;z=C+428|0;A=C+416|0;l=C+412|0;n=C;q=C+408|0;r=C+404|0;s=C+400|0;IE(B,f);t=XF(B,56768)|0;i=h+8+3|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=c[(b?c[h>>2]|0:h)>>2]|0;o=(o|0)==(Ib[c[(c[t>>2]|0)+44>>2]&63](t,45)|0)};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}JK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;KK(x,q,r,c[f+4>>2]|0,h,h+(k<<2)|0,t,o,u,c[v>>2]|0,c[w>>2]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=IH(p,x,h,b,f,g)|0;if(D|0)GO(D);wO(A);wO(z);jO(y);YF(B);zb=C;return b|0}function JK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56984)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56976)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function KK(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[e>>2]=b;z=p+8+3|0;G=p+4|0;A=o+8+3|0;B=o+4|0;C=(f&512|0)==0;D=(q|0)>0;E=n+11|0;F=n+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(a[k+y>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w;break}case 3:{x=a[z>>0]|0;r=x<<24>>24<0;if((r?c[G>>2]|0:x&255)|0){w=c[(r?c[p>>2]|0:p)>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w}break}case 2:{v=a[A>>0]|0;r=v<<24>>24<0;v=r?c[B>>2]|0:v&255;if(!(C|(v|0)==0)){u=r?c[o>>2]|0:o;s=u+(v<<2)|0;t=c[e>>2]|0;r=t;while(1){if((u|0)==(s|0))break;c[r>>2]=c[u>>2];r=r+4|0;u=u+4|0}c[e>>2]=t+(v<<2)}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;r=g;while(1){if(r>>>0>=h>>>0)break;if(!(Jb[c[(c[i>>2]|0)+12>>2]&63](i,2048,c[r>>2]|0)|0))break;r=r+4|0}if(D){u=q;while(1){t=(u|0)>0;if(!(r>>>0>g>>>0&t))break;x=r+-4|0;v=c[x>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=v;u=u+-1|0;r=x}if(t)w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;else w=0;v=c[e>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;c[v>>2]=w;u=u+-1|0;v=t}c[e>>2]=t;c[v>>2]=l;t=r}else t=r;if((t|0)==(g|0)){w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;x=c[e>>2]|0;r=x+4|0;c[e>>2]=r;c[x>>2]=w}else{x=a[E>>0]|0;r=x<<24>>24<0;if(!((r?c[F>>2]|0:x&255)|0))r=-1;else r=a[(r?c[n>>2]|0:n)>>0]|0;u=0;v=0;x=t;while(1){if((x|0)==(g|0))break;t=c[e>>2]|0;if((v|0)==(r|0)){w=t+4|0;c[e>>2]=w;c[t>>2]=m;t=u+1|0;u=a[E>>0]|0;r=u<<24>>24<0;if(t>>>0<(r?c[F>>2]|0:u&255)>>>0){r=a[(r?c[n>>2]|0:n)+t>>0]|0;r=r<<24>>24==127?-1:r<<24>>24;u=t;v=0;t=w}else{r=v;u=t;v=0;t=w}}w=x+-4|0;H=c[w>>2]|0;c[e>>2]=t+4;c[t>>2]=H;v=v+1|0;x=w}r=c[e>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;H=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=H;s=s+4|0}break}default:{}}while(0);y=y+1|0}r=a[z>>0]|0;g=r<<24>>24<0;r=g?c[G>>2]|0:r&255;if(r>>>0>1){s=c[p>>2]|0;u=g?s+4|0:G;r=(g?s:p)+(r<<2)|0;s=c[e>>2]|0;t=r-u|0;g=s;while(1){if((u|0)==(r|0))break;c[g>>2]=c[u>>2];g=g+4|0;u=u+4|0}c[e>>2]=s+(t>>>2<<2)}switch((f&176)<<24>>24){case 32:{c[d>>2]=c[e>>2];break}case 16:break;default:c[d>>2]=b}return}function LK(a){a=a|0;CF(a);return}function MK(a){a=a|0;CF(a);SA(a);return}function NK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function OK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0}k=a[h+11>>0]|0;l=k<<24>>24<0;d=l?c[h>>2]|0:h;h=d+(l?c[h+4>>2]|0:k&255)|0;while(1){if(d>>>0>=h>>>0)break;sO(i,a[d>>0]|0);d=d+1|0}d=(a[i+11>>0]|0)<0?c[i>>2]|0:i;e=Oy((e|0)==-1?-1:e<<1,f,g,d)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break;c[b+(h<<2)>>2]=0;h=h+1|0}h=d+(Qy(e)|0)|0;while(1){if(d>>>0>=h>>>0)break;sO(b,a[d>>0]|0);d=d+1|0}jO(i);zb=j;return}function PK(a,b){a=a|0;b=b|0;return}function QK(a){a=a|0;CF(a);return}function RK(a){a=a|0;CF(a);SA(a);return}function SK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function TK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+176|0;p=t+168|0;q=t;r=t+164|0;s=t+160|0;n=t+128|0;l=t+152|0;o=t+144|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0}c[l+4>>2]=0;c[l>>2]=19072;j=a[h+8+3>>0]|0;k=j<<24>>24<0;d=k?c[h>>2]|0:h;j=d+((k?c[h+4>>2]|0:j&255)<<2)|0;k=q+32|0;h=d;d=0;while(1){if(!((d|0)!=2&h>>>0>>0))break;c[s>>2]=h;i=Qb[c[(c[l>>2]|0)+12>>2]&15](l,p,h,j,s,q,k,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=8;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;sO(n,a[d>>0]|0);d=d+1|0}h=c[s>>2]|0;d=i}if((m|0)==8)nJ(0);CF(l);i=(a[n+11>>0]|0)<0?c[n>>2]|0:n;h=Oy((e|0)==-1?-1:e<<1,f,g,i)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0}c[o+4>>2]=0;c[o>>2]=19120;j=i+(Qy(h)|0)|0;k=j;l=q+128|0;h=i;d=0;while(1){if(!((d|0)!=2&h>>>0>>0)){m=23;break}c[s>>2]=h;i=Qb[c[(c[o>>2]|0)+16>>2]&15](o,p,h,(k-h|0)>32?h+32|0:j,s,q,l,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=19;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;DO(b,c[d>>2]|0);d=d+4|0}h=c[s>>2]|0;d=i}if((m|0)==19)nJ(0);else if((m|0)==23){CF(o);jO(n);zb=t;return}}function UK(a,b){a=a|0;b=b|0;return}function VK(a){a=a|0;CF(a);SA(a);return}function WK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=dL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function XK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=cL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function YK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function ZK(a){a=a|0;return 0}function _K(a){a=a|0;return 0}function $K(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return bL(c,d,e,1114111,0)|0}function aL(a){a=a|0;return 4}function bL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;n=0;a:while(1){if(!(n>>>0>>0&g>>>0>>0))break;k=a[g>>0]|0;m=k&255;do if(k<<24>>24<=-1){if((k&255)<194)break a;if((k&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((k&255)<240){if((o-g|0)<3)break a;i=a[g+1>>0]|0;h=a[g+2>>0]|0;switch(k<<24>>24){case -32:{if((i&-32)<<24>>24!=-96)break a;break}case -19:{if((i&-32)<<24>>24!=-128)break a;break}default:if((i&-64)<<24>>24!=-128)break a}h=h&255;if((h&192|0)!=128)break a;if(((i&63)<<6|m<<12&61440|h&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((k&255)>=245)break a;if((o-g|0)<4)break a;l=a[g+1>>0]|0;h=a[g+2>>0]|0;j=a[g+3>>0]|0;switch(k<<24>>24){case -16:{if((l+112&255)>=48)break a;break}case -12:{if((l&-16)<<24>>24!=-128)break a;break}default:if((l&-64)<<24>>24!=-128)break a}i=h&255;if((i&192|0)!=128)break a;h=j&255;if((h&192|0)!=128)break a;if(((l&63)<<12|m<<18&1835008|i<<6&4032|h&63)>>>0>f>>>0)break a;else g=g+4|0}else{if(m>>>0>f>>>0)break a;g=g+1|0}while(0);n=n+1|0}return g-b|0}function cL(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;if(k&4){b=c[f>>2]|0;g=e;if((((g-b|0)>2?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0)c[f>>2]=b+3}else g=e;a:while(1){p=c[f>>2]|0;if(p>>>0>=e>>>0){b=0;break}q=c[i>>2]|0;if(q>>>0>=h>>>0){b=1;break}n=a[p>>0]|0;b=n&255;do if(n<<24>>24>-1)if(b>>>0>j>>>0){b=2;break a}else k=1;else{if((n&255)<194){b=2;break a}if((n&255)<224){if((g-p|0)<2){b=1;break a}k=d[p+1>>0]|0;if((k&192|0)!=128){b=2;break a}b=k&63|b<<6&1984;if(b>>>0>j>>>0){b=2;break a}else{k=2;break}}if((n&255)<240){if((g-p|0)<3){b=1;break a}l=a[p+1>>0]|0;k=a[p+2>>0]|0;switch(n<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){b=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){b=2;break a}break}default:if((l&-64)<<24>>24!=-128){b=2;break a}}k=k&255;if((k&192|0)!=128){b=2;break a}b=(l&63)<<6|b<<12&61440|k&63;if(b>>>0>j>>>0){b=2;break a}else{k=3;break}}if((n&255)>=245){b=2;break a}if((g-p|0)<4){b=1;break a}o=a[p+1>>0]|0;k=a[p+2>>0]|0;m=a[p+3>>0]|0;switch(n<<24>>24){case -16:{if((o+112&255)>=48){b=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){b=2;break a}break}default:if((o&-64)<<24>>24!=-128){b=2;break a}}l=k&255;if((l&192|0)!=128){b=2;break a}k=m&255;if((k&192|0)!=128){b=2;break a}b=(o&63)<<12|b<<18&1835008|l<<6&4032|k&63;if(b>>>0>j>>>0){b=2;break a}else k=4}while(0);c[q>>2]=b;c[f>>2]=p+k;c[i>>2]=(c[i>>2]|0)+4}return b|0}function dL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;c[e>>2]=b;c[h>>2]=f;l=g;if(j&2)if((l-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;while(1){if(b>>>0>=d>>>0){b=0;break a}f=c[b>>2]|0;if(f>>>0>i>>>0|(f&-2048|0)==55296){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((l-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;g=l-b|0;if(f>>>0<65536){if((g|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((g|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((l-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b}}while(0);return b|0}function eL(a){a=a|0;CF(a);SA(a);return}function fL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function gL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function iL(a){a=a|0;return 1}function jL(a){a=a|0;return 1}function kL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function lL(a){a=a|0;return 1}function mL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+16|0;p=q;n=q+8|0;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}c[j>>2]=h;c[g>>2]=e;m=i;o=b+8|0;a:while(1){if((h|0)==(i|0)|(e|0)==(f|0)){k=36;break}r=d;l=c[r+4>>2]|0;b=p;c[b>>2]=c[r>>2];c[b+4>>2]=l;b=ez(c[o>>2]|0)|0;l=Uz(h,g,k-e>>2,m-h|0,d)|0;if(b|0)ez(b)|0;switch(l|0){case -1:{k=10;break a}case 0:{e=1;k=33;break a}default:{}}h=(c[j>>2]|0)+l|0;c[j>>2]=h;if((h|0)==(i|0)){k=34;break}if((k|0)==(f|0)){k=f;e=c[g>>2]|0}else{h=ez(c[o>>2]|0)|0;e=_x(n,0,d)|0;if(h|0)ez(h)|0;if((e|0)==-1){e=2;k=32;break}if(e>>>0>(m-(c[j>>2]|0)|0)>>>0){e=1;k=32;break}h=n;while(1){if(!e)break;l=a[h>>0]|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r>>0]=l;h=h+1|0;e=e+-1|0}e=(c[g>>2]|0)+4|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}h=c[j>>2]|0}}if((k|0)==10){c[j>>2]=h;while(1){if((e|0)==(c[g>>2]|0))break;r=c[e>>2]|0;k=ez(c[o>>2]|0)|0;h=_x(h,r,p)|0;if(k|0)ez(k)|0;if((h|0)==-1)break;h=(c[j>>2]|0)+h|0;c[j>>2]=h;e=e+4|0}c[g>>2]=e;e=2;k=33}else if((k|0)==32)k=33;else if((k|0)==34){e=c[g>>2]|0;k=36}if((k|0)!=33)if((k|0)==36)e=(e|0)!=(f|0)&1;zb=q;return e|0}function nL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=zb;zb=zb+16|0;o=p;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}c[j>>2]=h;c[g>>2]=e;m=i;n=b+8|0;while(1){if((h|0)==(i|0)|(e|0)==(f|0)){b=33;break}q=d;l=c[q+4>>2]|0;b=o;c[b>>2]=c[q>>2];c[b+4>>2]=l;b=ez(c[n>>2]|0)|0;l=Rz(h,g,k-e|0,m-h>>2,d)|0;if(b|0)ez(b)|0;if((l|0)==-1){b=10;break}h=(c[j>>2]|0)+(l<<2)|0;c[j>>2]=h;if((h|0)==(i|0)){b=30;break}e=c[g>>2]|0;if((k|0)==(f|0))k=f;else{k=ez(c[n>>2]|0)|0;e=Xy(h,e,1,d)|0;if(k|0)ez(k)|0;if(e|0){e=2;b=29;break}c[j>>2]=(c[j>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}h=c[j>>2]|0}}do if((b|0)==10){a:while(1){c[j>>2]=h;if((e|0)==(c[g>>2]|0)){b=19;break}b=ez(c[n>>2]|0)|0;h=Xy(h,e,k-e|0,o)|0;if(b|0)ez(b)|0;switch(h|0){case -1:{b=15;break a}case -2:{b=16;break a}case 0:{h=1;break}default:{}}e=e+h|0;h=(c[j>>2]|0)+4|0}if((b|0)==15){c[g>>2]=e;e=2;b=29;break}else if((b|0)==16){c[g>>2]=e;e=1;b=29;break}else if((b|0)==19){c[g>>2]=e;e=(e|0)!=(f|0)&1;b=29;break}}else if((b|0)==30){e=c[g>>2]|0;b=33}while(0);if((b|0)!=29)if((b|0)==33)e=(e|0)!=(f|0)&1;zb=p;return e|0}function oL(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=zb;zb=zb+16|0;h=i;c[g>>2]=e;e=ez(c[b+8>>2]|0)|0;b=_x(h,0,d)|0;if(e|0)ez(e)|0;a:do if((b+1|0)>>>0>=2){b=b+-1|0;if(b>>>0>(f-(c[g>>2]|0)|0)>>>0)b=1;else while(1){if(!b){b=0;break a}d=a[h>>0]|0;f=c[g>>2]|0;c[g>>2]=f+1;a[f>>0]=d;h=h+1|0;b=b+-1|0}}else b=2;while(0);zb=i;return b|0}function pL(a){a=a|0;var b=0,d=0;a=a+8|0;b=ez(c[a>>2]|0)|0;d=pz(0,0,4)|0;if(b|0)ez(b)|0;if(!d){a=c[a>>2]|0;if(!a)a=1;else{b=ez(a)|0;a=hy()|0;if(b|0)ez(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function qL(a){a=a|0;return 0}function rL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=e;j=a+8|0;h=0;i=0;a:while(1){if((d|0)==(e|0)|h>>>0>=f>>>0)break;g=ez(c[j>>2]|0)|0;a=Qz(d,k-d|0,b)|0;if(g|0)ez(g)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}h=h+1|0;i=a+i|0;d=d+a|0}return i|0}function sL(a){a=a|0;var b=0;a=c[a+8>>2]|0;if(a){b=ez(a)|0;a=hy()|0;if(b)ez(b)|0}else a=1;return a|0}function tL(a){a=a|0;var b=0,d=0;c[a>>2]=19168;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(_F()|0))Vy(c[b>>2]|0);CF(a);return}function uL(a){a=a|0;tL(a);SA(a);return}function vL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=EL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function wL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=DL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function xL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function yL(a){a=a|0;return 0}function zL(a){a=a|0;return 0}function AL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return CL(c,d,e,1114111,0)|0}function BL(a){a=a|0;return 4}function CL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;h=0;a:while(1){if(!(h>>>0>>0&g>>>0>>0))break;l=a[g>>0]|0;n=l&255;if(n>>>0>f>>>0)break;do if(l<<24>>24<=-1){if((l&255)<194)break a;if((l&255)<224){if((o-g|0)<2)break a;i=d[g+1>>0]|0;if((i&192|0)!=128)break a;if((i&63|n<<6&1984)>>>0>f>>>0)break a;else{g=g+2|0;break}}if((l&255)<240){if((o-g|0)<3)break a;j=a[g+1>>0]|0;i=a[g+2>>0]|0;switch(l<<24>>24){case -32:{if((j&-32)<<24>>24!=-96)break a;break}case -19:{if((j&-32)<<24>>24!=-128)break a;break}default:if((j&-64)<<24>>24!=-128)break a}i=i&255;if((i&192|0)!=128)break a;if(((j&63)<<6|n<<12&61440|i&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((l&255)>=245)break a;if((e-h|0)>>>0<2|(o-g|0)<4)break a;m=a[g+1>>0]|0;i=a[g+2>>0]|0;k=a[g+3>>0]|0;switch(l<<24>>24){case -16:{if((m+112&255)>=48)break a;break}case -12:{if((m&-16)<<24>>24!=-128)break a;break}default:if((m&-64)<<24>>24!=-128)break a}j=i&255;if((j&192|0)!=128)break a;i=k&255;if((i&192|0)!=128)break a;if(((m&63)<<12|n<<18&1835008|j<<6&4032|i&63)>>>0>f>>>0)break a;else{h=h+1|0;g=g+4|0}}else g=g+1|0;while(0);h=h+1|0}return g-b|0}function DL(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[g>>2]=e;c[j>>2]=h;if(l&4){e=c[g>>2]|0;h=f;if((((h-e|0)>2?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0)c[g>>2]=e+3}else h=f;s=i;a:while(1){n=c[g>>2]|0;if(n>>>0>=f>>>0){e=0;break}r=c[j>>2]|0;if(r>>>0>=i>>>0){e=1;break}m=a[n>>0]|0;q=m&255;if(q>>>0>k>>>0){e=2;break}do if(m<<24>>24>-1){b[r>>1]=m&255;e=n+1|0}else{if((m&255)<194){e=2;break a}if((m&255)<224){if((h-n|0)<2){e=1;break a}e=d[n+1>>0]|0;if((e&192|0)!=128){e=2;break a}e=e&63|q<<6&1984;if(e>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+2|0;break}if((m&255)<240){if((h-n|0)<3){e=1;break a}l=a[n+1>>0]|0;e=a[n+2>>0]|0;switch(m<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){e=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){e=2;break a}break}default:if((l&-64)<<24>>24!=-128){e=2;break a}}e=e&255;if((e&192|0)!=128){e=2;break a}e=(l&63)<<6|q<<12|e&63;if((e&65535)>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+3|0;break}if((m&255)>=245){e=2;break a}if((h-n|0)<4){e=1;break a}o=a[n+1>>0]|0;e=a[n+2>>0]|0;l=a[n+3>>0]|0;switch(m<<24>>24){case -16:{if((o+112&255)>=48){e=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){e=2;break a}break}default:if((o&-64)<<24>>24!=-128){e=2;break a}}p=e&255;if((p&192|0)!=128){e=2;break a}e=l&255;if((e&192|0)!=128){e=2;break a}if((s-r|0)<4){e=1;break a}n=q&7;l=o&255;m=p<<6;e=e&63;if((l<<12&258048|n<<18|m&4032|e)>>>0>k>>>0){e=2;break a}b[r>>1]=l<<2&60|p>>>4&3|((l>>>4&3|n<<2)<<6)+16320|55296;r=r+2|0;c[j>>2]=r;b[r>>1]=e|m&960|56320;e=(c[g>>2]|0)+4|0}while(0);c[g>>2]=e;c[j>>2]=(c[j>>2]|0)+2}return e|0}function EL(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;while(1){if(d>>>0>=f>>>0){d=0;break a}h=b[d>>1]|0;m=h&65535;if(m>>>0>k>>>0){d=2;break a}do if((h&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=h}else{if((h&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;h=e[d>>1]|0;if((h&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}l=m&960;if(((l<<10)+65536|m<<10&64512|h&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(l>>>6)+1|0;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=d>>>2|240;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>2&15|d<<4&48|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m<<4&48|h>>>6&15|128;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=h&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d}}while(0);return d|0}function FL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=19216;e=a+8|0;f=a+12|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0?(h=b+4|0,g=c[h>>2]|0,c[h>>2]=g+-1,(g|0)==0):0)Sb[c[(c[b>>2]|0)+8>>2]&255](b);d=d+1|0}jO(a+144|0);HL(e);CF(a);return}function GL(a){a=a|0;FL(a);SA(a);return}function HL(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=d;do if(d|0){c[b+4>>2]=e;if((d|0)==(b+16|0)){a[b+128>>0]=0;break}else{Pf(d,(c[b+8>>2]|0)-e|0);break}}while(0);return}function IL(b){b=b|0;var d=0;c[b>>2]=19236;d=c[b+8>>2]|0;if(d|0?a[b+12>>0]|0:0)vB(d);CF(b);return}function JL(a){a=a|0;IL(a);SA(a);return}function KL(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(TL()|0)+((b&255)<<2)|0;b=c[b>>2]&255}return b|0}function LL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=TL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function ML(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(SL()|0)+(b<<24>>24<<2)|0;b=c[b>>2]&255}return b|0}function NL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=SL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function OL(a,b){a=a|0;b=b|0;return b|0}function PL(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((c|0)==(d|0))break;a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}return d|0}function QL(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function RL(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;while(1){if((c|0)==(d|0))break;b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;f=f+1|0;c=c+1|0}return d|0}function SL(){var a=0;a=jy()|0;return c[a>>2]|0}function TL(){var a=0;a=ky()|0;return c[a>>2]|0}function UL(){var a=0;a=gy()|0;return c[a>>2]|0}function VL(a){a=a|0;c[a>>2]=19288;jO(a+12|0);CF(a);return}function WL(a){a=a|0;VL(a);SA(a);return}function XL(b){b=b|0;return a[b+8>>0]|0}function YL(b){b=b|0;return a[b+9>>0]|0}function ZL(a,b){a=a|0;b=b|0;fO(a,b+12|0);return}function _L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51258,Yf(51258)|0);return}function $L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51252,Yf(51252)|0);return}function aM(a){a=a|0;c[a>>2]=19328;jO(a+16|0);CF(a);return}function bM(a){a=a|0;aM(a);SA(a);return}function cM(a){a=a|0;return c[a+8>>2]|0}function dM(a){a=a|0;return c[a+12>>2]|0}function eM(a,b){a=a|0;b=b|0;fO(a,b+16|0);return}function fM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19384,JI(19384)|0);return}function gM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19360,JI(19360)|0);return}function hM(a){a=a|0;CF(a);SA(a);return}function iM(a){a=a|0;CF(a);SA(a);return}function jM(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128){a=(UL()|0)+(d<<1)|0;a=(b[a>>1]&c)<<16>>16!=0}else a=0;return a|0}function kM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;while(1){if((d|0)==(f|0))break;if((c[d>>2]|0)>>>0<128){a=UL()|0;a=e[a+(c[d>>2]<<1)>>1]|0}else a=0;b[g>>1]=a;g=g+2|0;d=d+4|0}return f|0}function lM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0<128?(a=UL()|0,(b[a+(c[e>>2]<<1)>>1]&d)<<16>>16):0)break;e=e+4|0}return e|0}function mM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0>=128)break;a=UL()|0;if(!((b[a+(c[e>>2]<<1)>>1]&d)<<16>>16))break;e=e+4|0}return e|0}function nM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(TL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function oM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=TL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function pM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(SL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=SL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function rM(a,b){a=a|0;b=b|0;return b<<24>>24|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;while(1){if((d|0)==(e|0))break;c[f>>2]=a[d>>0];f=f+4|0;d=d+1|0}return e|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=(e-d|0)>>>2;b=g;g=d;while(1){if((g|0)==(e|0))break;i=c[g>>2]|0;a[b>>0]=i>>>0<128?i&255:f;b=b+1|0;g=g+4|0}return d+(h<<2)|0}function vM(a){a=a|0;CF(a);SA(a);return}function wM(a){a=a|0;CF(a);SA(a);return}function xM(a){a=a|0;CF(a);SA(a);return}function yM(a){a=a|0;c[a>>2]=19644;return}function zM(a){a=a|0;c[a>>2]=19680;return}function AM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+4>>2]=f+-1;c[b>>2]=19236;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(!d){e=UL()|0;c[f>>2]=e}return}function BM(a,b){a=a|0;b=b|0;var d=0;c[a+4>>2]=b+-1;c[a>>2]=19216;b=a+8|0;CM(b,28);d=a+144|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,49197,Yf(49197)|0);c[a+12>>2]=c[b>>2];DM();EM(a,54968);FM();GM(a,54976);HM();IM(a,54984);JM();KM(a,55e3);LM();MM(a,55008);NM();OM(a,55016);PM();QM(a,55032);RM();SM(a,55040);TM();UM(a,55048);VM();WM(a,55072);XM();YM(a,55104);ZM();_M(a,55112);$M();aN(a,55120);bN();cN(a,55128);dN();eN(a,55136);fN();gN(a,55144);hN();iN(a,55152);jN();kN(a,55160);lN();mN(a,55168);nN();oN(a,55176);pN();qN(a,55184);rN();sN(a,55192);tN();uN(a,55200);vN();wN(a,55216);xN();yN(a,55232);zN();AN(a,55248);BN();CN(a,55264);DN();EN(a,55272);return}function CM(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d|0){RN(b,d);IN(b,d)}return}function DM(){c[13743]=0;c[13742]=17072;return}function EM(a,b){a=a|0;b=b|0;FN(a,b,aG(56720)|0);return}function FM(){c[13745]=0;c[13744]=17104;return}function GM(a,b){a=a|0;b=b|0;FN(a,b,aG(56728)|0);return}function HM(){AM(54984,0,0,1);return}function IM(a,b){a=a|0;b=b|0;FN(a,b,aG(56736)|0);return}function JM(){c[13751]=0;c[13750]=19432;return}function KM(a,b){a=a|0;b=b|0;FN(a,b,aG(56768)|0);return}function LM(){c[13753]=0;c[13752]=19500;return}function MM(a,b){a=a|0;b=b|0;FN(a,b,aG(57040)|0);return}function NM(){QN(55016,1);return}function OM(a,b){a=a|0;b=b|0;FN(a,b,aG(57048)|0);return}function PM(){c[13759]=0;c[13758]=19548;return}function QM(a,b){a=a|0;b=b|0;FN(a,b,aG(57056)|0);return}function RM(){c[13761]=0;c[13760]=19596;return}function SM(a,b){a=a|0;b=b|0;FN(a,b,aG(57064)|0);return}function TM(){PN(55048,1);return}function UM(a,b){a=a|0;b=b|0;FN(a,b,aG(56752)|0);return}function VM(){ON(55072,1);return}function WM(a,b){a=a|0;b=b|0;FN(a,b,aG(56776)|0);return}function XM(){c[13777]=0;c[13776]=17136;return}function YM(a,b){a=a|0;b=b|0;FN(a,b,aG(56760)|0);return}function ZM(){c[13779]=0;c[13778]=17200;return}function _M(a,b){a=a|0;b=b|0;FN(a,b,aG(56784)|0);return}function $M(){c[13781]=0;c[13780]=17264;return}function aN(a,b){a=a|0;b=b|0;FN(a,b,aG(56792)|0);return}function bN(){c[13783]=0;c[13782]=17316;return}function cN(a,b){a=a|0;b=b|0;FN(a,b,aG(56800)|0);return}function dN(){c[13785]=0;c[13784]=18672;return}function eN(a,b){a=a|0;b=b|0;FN(a,b,aG(56960)|0);return}function fN(){c[13787]=0;c[13786]=18728;return}function gN(a,b){a=a|0;b=b|0;FN(a,b,aG(56968)|0);return}function hN(){c[13789]=0;c[13788]=18784;return}function iN(a,b){a=a|0;b=b|0;FN(a,b,aG(56976)|0);return}function jN(){c[13791]=0;c[13790]=18840;return}function kN(a,b){a=a|0;b=b|0;FN(a,b,aG(56984)|0);return}function lN(){c[13793]=0;c[13792]=18896;return}function mN(a,b){a=a|0;b=b|0;FN(a,b,aG(56992)|0);return}function nN(){c[13795]=0;c[13794]=18924;return}function oN(a,b){a=a|0;b=b|0;FN(a,b,aG(57e3)|0);return}function pN(){c[13797]=0;c[13796]=18952;return}function qN(a,b){a=a|0;b=b|0;FN(a,b,aG(57008)|0);return}function rN(){c[13799]=0;c[13798]=18980;return}function sN(a,b){a=a|0;b=b|0;FN(a,b,aG(57016)|0);return}function tN(){c[13801]=0;c[13800]=19412;yM(55208);c[13800]=17368;c[13802]=17416;return}function uN(a,b){a=a|0;b=b|0;FN(a,b,aG(56868)|0);return}function vN(){c[13805]=0;c[13804]=19412;zM(55224);c[13804]=17452;c[13806]=17500;return}function wN(a,b){a=a|0;b=b|0;FN(a,b,aG(56936)|0);return}function xN(){var a=0;c[13809]=0;c[13808]=19412;a=_F()|0;c[13810]=a;c[13808]=18624;return}function yN(a,b){a=a|0;b=b|0;FN(a,b,aG(56944)|0);return}function zN(){var a=0;c[13813]=0;c[13812]=19412;a=_F()|0;c[13814]=a;c[13812]=18648;return}function AN(a,b){a=a|0;b=b|0;FN(a,b,aG(56952)|0);return}function BN(){c[13817]=0;c[13816]=19008;return}function CN(a,b){a=a|0;b=b|0;FN(a,b,aG(57024)|0);return}function DN(){c[13819]=0;c[13818]=19040;return}function EN(a,b){a=a|0;b=b|0;FN(a,b,aG(57032)|0);return}function FN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=b+4|0;c[f>>2]=(c[f>>2]|0)+1;f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0>d>>>0)a=f;else{GN(f,d+1|0);a=f;e=c[f>>2]|0}e=c[e+(d<<2)>>2]|0;if(e|0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+-1,(f|0)==0):0)Sb[c[(c[e>>2]|0)+8>>2]&255](e);c[(c[a>>2]|0)+(d<<2)>>2]=b;return}function GN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else HN(a,b-e|0);return}function HN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=JN(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;KN(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+16|0);LN(f,b);MN(a,f);NN(f);break}}else IN(a,b);while(0);zb=i;return}function IN(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function JN(a){a=a|0;return 1073741823}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if(d>>>0<29&(a[g>>0]|0)==0){a[g>>0]=1;break}else{f=tB(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function LN(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function MN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function NN(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;while(1){if((f|0)==(d|0))break;g=f+-4|0;c[e>>2]=g;f=g}e=c[b>>2]|0;f=e;do if(e|0){d=c[b+16>>2]|0;if((e|0)==(d|0)){a[d+112>>0]=0;break}else{Pf(e,(c[b+12>>2]|0)-f|0);break}}while(0);return}function ON(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19328;c[a+8>>2]=46;c[a+12>>2]=44;b=a+16|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0}return}function PN(b,d){b=b|0;d=d|0;c[b+4>>2]=d+-1;c[b>>2]=19288;a[b+8>>0]=46;a[b+9>>0]=44;d=b+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}return}function QN(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19168;b=_F()|0;c[a+8>>2]=b;return}function RN(b,d){b=b|0;d=d|0;var e=0;if((JN(b)|0)>>>0>>0)EO(b);e=b+128|0;if(d>>>0<29&(a[e>>0]|0)==0){a[e>>0]=1;e=b+16|0}else e=tB(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function SN(){if((a[55280]|0)==0?nB(55280)|0:0){TN()|0;c[14269]=57072;pB(55280)}return c[14269]|0}function TN(){UN();c[14268]=55288;return 57072}function UN(){BM(55288,1);return}function VN(){WN(57080,SN()|0);return 57080}function WN(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;b=b+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function XN(){if((a[55448]|0)==0?nB(55448)|0:0){VN()|0;c[14271]=57080;pB(55448)}return c[14271]|0}function YN(a){a=a|0;var b=0;b=XN()|0;b=c[b>>2]|0;c[a>>2]=b;a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function ZN(a){a=a|0;return}function _N(a){a=a|0;var b=0,d=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(d=c[b>>2]|0,c[b>>2]=d+-1,(d|0)!=0):0))Sb[c[(c[a>>2]|0)+16>>2]&255](a);return}function $N(a,b,d){a=a|0;b=b|0;d=d|0;do{}while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Sb[d&255](b);c[a>>2]=-1}return}function aO(){ua()}function bO(a,b){a=a|0;b=b|0;var d=0,e=0;e=Qy(b)|0;d=tB(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=cO(d)|0;_O(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function cO(a){a=a|0;return a+12|0}function dO(a,b){a=a|0;b=b|0;c[a>>2]=16372;bO(a+4|0,b);return}function eO(a){a=a|0;ua()}function fO(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)gO(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}return}function gO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(e>>>0>4294967279)eO(b);if(e>>>0<11)a[b+11>>0]=e;else{i=e+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;b=h}VD(b,d,e)|0;a[f>>0]=0;bg(b+e|0,f);zb=g;return}function hO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(d>>>0>4294967279)eO(b);if(d>>>0<11)a[b+11>>0]=d;else{i=d+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=d;b=h}iO(b,d,e)|0;a[f>>0]=0;bg(b+d|0,f);zb=g;return}function iO(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)aP(a|0,(cg(c)|0)&255|0,b|0)|0;return a|0}function jO(b){b=b|0;if((a[b+11>>0]|0)<0)Pf(c[b>>2]|0,c[b+8>>2]&2147483647);return}function kO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g)h=(c[b+8>>2]&2147483647)+-1|0;else h=10;do if(h>>>0>=e>>>0){if(g)f=c[b>>2]|0;else f=b;lO(f,d,e)|0;a[i>>0]=0;bg(f+e|0,i);if((a[j>>0]|0)<0){c[b+4>>2]=e;break}else{a[j>>0]=e;break}}else{if(g)f=c[b+4>>2]|0;else f=f&255;mO(b,h,e-h|0,f,0,f,e,d)}while(0);zb=k;return b|0}function lO(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)$O(a|0,b|0,c|0)|0;return a|0} +function nw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[(c[a+484>>2]|0)+24>>2]|0;h=c[d>>2]|0;j=d+4|0;l=c[j>>2]|0;o=d+8|0;n=c[o>>2]|0;p=d+12|0;m=c[p>>2]|0;q=d+16|0;k=c[q>>2]|0;r=d+20|0;s=c[r>>2]|0;a:do if((l|0)<=(h|0)|(n|0)>(m|0)|(k|0)>(s|0))i=h;else{i=h;b:while(1){g=c[t+(i<<2)>>2]|0;e=n;while(1){a=g+(e<<6)+(k<<1)|0;f=k;while(1){if(b[a>>1]|0)break b;if((f|0)<(s|0)){a=a+2|0;f=f+1|0}else break}if((e|0)<(m|0))e=e+1|0;else break}if((i|0)<(l|0))i=i+1|0;else{i=h;break a}}c[d>>2]=i}while(0);c:do if(!((l|0)<=(i|0)|(n|0)>(m|0)|(k|0)>(s|0))){e=l;d:while(1){h=c[t+(e<<2)>>2]|0;f=n;while(1){a=h+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break d;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((f|0)<(m|0))f=f+1|0;else break}if((e|0)>(i|0))e=e+-1|0;else break c}c[j>>2]=e;l=e}while(0);e:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=n;f:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break f;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)<(m|0))f=f+1|0;else break e}c[o>>2]=f;n=f}while(0);g:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=m;h:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break h;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)>(n|0))f=f+-1|0;else break g}c[p>>2]=f;m=f}while(0);i:do if(!((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))){f=k;j:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break j;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)<(s|0))f=f+1|0;else break i}c[q>>2]=f;k=f}while(0);k:do if((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))f=s;else{f=s;l:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break l;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)>(k|0))f=f+-1|0;else{f=s;break k}}c[r>>2]=f}while(0);r=l-i<<4;q=(m-n|0)*12|0;s=f-k<<3;s=(B(q,q)|0)+(B(r,r)|0)+(B(s,s)|0)|0;c[d+24>>2]=s;if((l|0)<(i|0)|(m|0)<(n|0)|(f|0)<(k|0)){t=0;d=d+28|0;c[d>>2]=t;return}a=0;while(1){j=c[t+(i<<2)>>2]|0;h=n;while(1){e=k;g=j+(h<<6)+(k<<1)|0;while(1){a=a+((b[g>>1]|0)!=0&1)|0;if((e|0)>=(f|0))break;else{e=e+1|0;g=g+2|0}}if((h|0)<(m|0))h=h+1|0;else break}if((i|0)<(l|0))i=i+1|0;else break}d=d+28|0;c[d>>2]=a;return}function ow(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+484|0;j=c[b>>2]|0;c[a+136>>2]=c[j+16>>2];c[a+132>>2]=c[j+20>>2];switch(c[a+88>>2]|0){case 0:{b=j+4|0;if((c[a+120>>2]|0)==3){c[b>>2]=22;return}else{c[b>>2]=23;return}}case 1:{l=a+120|0;c[j+4>>2]=(c[l>>2]|0)==3?24:25;c[j+48>>2]=0;if(!(c[j+28>>2]|0))rw(a);if(c[j+52>>2]|0)return;j=c[b>>2]|0;b=c[l>>2]|0;if((b|0)<=0)return;k=a+4|0;i=0;do{f=c[j+32+(i<<2)>>2]|0;a:do if(i){e=0;while(1){if((f|0)==(c[j+32+(e<<2)>>2]|0))break;e=e+1|0;if(e>>>0>=i>>>0){m=15;break a}}e=c[j+52+(e<<2)>>2]|0;if(!e)m=15}else m=15;while(0);if((m|0)==15){m=0;e=Jb[c[c[k>>2]>>2]&63](a,1,1024)|0;h=(f<<9)+-512|0;g=0;do{f=0;do{n=255-((d[5440+(g<<4)+f>>0]|0)<<1)|0;b=n*255|0;if((n|0)<0)b=0-((0-b|0)/(h|0)|0)|0;else b=(b|0)/(h|0)|0;c[e+(g<<6)+(f<<2)>>2]=b;f=f+1|0}while((f|0)!=16);g=g+1|0}while((g|0)!=16);b=c[l>>2]|0}c[j+52+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(b|0));return}case 2:{c[j+4>>2]=26;c[j+84>>2]=0;if(!(c[j+68>>2]|0)){b=a+112|0;g=(c[b>>2]<<1)+4|0;h=a+120|0;if((c[h>>2]|0)<=0)return;i=a+4|0;e=0;do{f=Jb[c[(c[i>>2]|0)+4>>2]&63](a,1,g)|0;c[j+68+(e<<2)>>2]=f;e=e+1|0;f=c[h>>2]|0}while((e|0)<(f|0))}else{f=a+120|0;h=f;b=a+112|0;f=c[f>>2]|0}e=(c[b>>2]<<1)+4|0;if((f|0)<=0)return;b=0;do{aP(c[j+68+(b<<2)>>2]|0,0,e|0)|0;b=b+1|0}while((b|0)<(c[h>>2]|0));return}default:{n=c[a>>2]|0;c[n+20>>2]=49;Sb[c[n>>2]&255](a);return}}}function pw(a){a=a|0;return}function qw(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Sb[c[b>>2]&255](a);return}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+484>>2]|0;d=(c[b+88>>2]|0)==1;c[m+28>>2]=d&1;l=b+120|0;e=Kb[c[(c[b+4>>2]|0)+8>>2]&15](b,1,d?766:256,c[l>>2]|0)|0;k=m+24|0;c[k>>2]=e;b=c[m+20>>2]|0;if((c[l>>2]|0)<=0)return;if(!d){d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;h=c[e+(d<<2)>>2]|0;i=f+-1|0;j=i<<1;e=0;f=(f+254|0)/(j|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+i|0)/(j|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[h+g>>0]=n;g=g+1|0}while((g|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;j=e+(d<<2)|0;c[j>>2]=(c[j>>2]|0)+255;j=c[(c[k>>2]|0)+(d<<2)>>2]|0;h=f+-1|0;i=h<<1;e=0;f=(f+254|0)/(i|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+h|0)/(i|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[j+g>>0]=n;g=g+1|0}while((g|0)!=256);f=j+255|0;e=1;do{a[j+(0-e)>>0]=a[j>>0]|0;a[j+(e+255)>>0]=a[f>>0]|0;e=e+1|0}while((e|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}function sw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[(c[b+484>>2]|0)+24>>2]|0;n=c[m>>2]|0;l=c[m+4>>2]|0;m=c[m+8>>2]|0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;h=0;do{b=k;i=c[f+(h<<2)>>2]|0;j=c[e+(h<<2)>>2]|0;while(1){a[i>>0]=(d[l+(d[j+1>>0]|0)>>0]|0)+(d[n+(d[j>>0]|0)>>0]|0)+(d[m+(d[j+2>>0]|0)>>0]|0);b=b+-1|0;if(!b)break;else{i=i+1|0;j=j+3|0}}h=h+1|0}while((h|0)!=(g|0));return}function tw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[(c[b+484>>2]|0)+24>>2]|0;p=c[b+112>>2]|0;n=c[b+120>>2]|0;if((g|0)<1|(p|0)==0)return;if((n|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,p|0)|0;b=b+1|0}while((b|0)!=(g|0));return}i=0;do{h=p;j=c[f+(i<<2)>>2]|0;k=c[e+(i<<2)>>2]|0;while(1){b=0;l=0;m=k;while(1){l=l+(d[(c[o+(b<<2)>>2]|0)+(d[m>>0]|0)>>0]|0)|0;b=b+1|0;if((b|0)==(n|0))break;else m=m+1|0}a[j>>0]=l;h=h+-1|0;if(!h)break;else{j=j+1|0;k=k+n|0}}i=i+1|0}while((i|0)!=(g|0));return}function uw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=c[b+484>>2]|0;u=c[h+24>>2]|0;v=c[u>>2]|0;t=c[u+4>>2]|0;u=c[u+8>>2]|0;q=c[b+112>>2]|0;if((g|0)<=0)return;w=h+48|0;r=h+52|0;s=h+56|0;p=h+60|0;b=c[w>>2]|0;if(!q){h=0;do{b=b+1&15;h=h+1|0}while((h|0)!=(g|0));c[w>>2]=b;return}o=0;do{l=c[r>>2]|0;m=c[s>>2]|0;n=c[p>>2]|0;h=q;i=0;j=c[f+(o<<2)>>2]|0;k=c[e+(o<<2)>>2]|0;while(1){a[j>>0]=(d[t+((c[m+(b<<6)+(i<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0)+(d[v+((c[l+(b<<6)+(i<<2)>>2]|0)+(d[k>>0]|0))>>0]|0)+(d[u+((c[n+(b<<6)+(i<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0);h=h+-1|0;if(!h)break;else{i=i+1&15;j=j+1|0;k=k+3|0}}b=b+1&15;c[w>>2]=b;o=o+1|0}while((o|0)!=(g|0));return}function vw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[b+484>>2]|0;v=c[b+120>>2]|0;w=c[b+112>>2]|0;if((g|0)<=0)return;t=u+48|0;m=u+24|0;n=(w|0)==0;if((v|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,w|0)|0;c[t>>2]=(c[t>>2]|0)+1&15;b=b+1|0}while((b|0)!=(g|0));return}h=0;do{o=f+(h<<2)|0;aP(c[o>>2]|0,0,w|0)|0;p=c[t>>2]|0;q=e+(h<<2)|0;if(!n){i=0;do{r=c[(c[m>>2]|0)+(i<<2)>>2]|0;s=c[u+52+(i<<2)>>2]|0;b=w;j=c[o>>2]|0;k=0;l=(c[q>>2]|0)+i|0;while(1){a[j>>0]=(d[j>>0]|0)+(d[r+((c[s+(p<<6)+(k<<2)>>2]|0)+(d[l>>0]|0))>>0]|0);b=b+-1|0;if(!b)break;else{j=j+1|0;k=k+1&15;l=l+v|0}}i=i+1|0}while((i|0)!=(v|0))}c[t>>2]=p+1&15;h=h+1|0}while((h|0)!=(g|0));return}function ww(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;J=c[e+484>>2]|0;K=c[e+120>>2]|0;L=c[e+112>>2]|0;y=c[e+336>>2]|0;if((h|0)<=0)return;z=(K|0)>0;A=J+84|0;C=J+24|0;D=J+16|0;E=(L|0)==0;F=L+-1|0;G=B(F,K)|0;H=0-K|0;I=L+1|0;x=0;do{v=g+(x<<2)|0;aP(c[v>>2]|0,0,L|0)|0;a:do if(z){w=f+(x<<2)|0;if(E){i=(c[A>>2]|0)==0;e=0;while(1){w=c[J+68+(e<<2)>>2]|0;b[(i?w:w+(I<<1)|0)>>1]=0;e=e+1|0;if((e|0)==(K|0))break a}}r=0;do{e=(c[w>>2]|0)+r|0;i=c[v>>2]|0;if(!(c[A>>2]|0)){s=K;t=1;u=c[J+68+(r<<2)>>2]|0}else{s=H;t=-1;u=(c[J+68+(r<<2)>>2]|0)+(I<<1)|0;e=e+G|0;i=i+F|0}o=c[(c[C>>2]|0)+(r<<2)>>2]|0;p=c[(c[D>>2]|0)+(r<<2)>>2]|0;q=B(L,t)|0;l=0;m=L;n=0;j=0;k=u;while(1){M=k;k=k+(t<<1)|0;N=d[y+((j+8+(b[k>>1]|0)>>4)+(d[e>>0]|0))>>0]|0;j=d[o+N>>0]|0;a[i>>0]=(d[i>>0]|0)+j;j=N-(d[p+j>>0]|0)|0;b[M>>1]=(j*3|0)+n;n=(j*5|0)+l|0;m=m+-1|0;if(!m)break;else{l=j;j=j*7|0;e=e+s|0;i=i+t|0}}b[u+(q<<1)>>1]=n;r=r+1|0}while((r|0)!=(K|0))}while(0);c[A>>2]=(c[A>>2]|0)==0&1;x=x+1|0}while((x|0)!=(h|0));return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+428|0;d=c[g>>2]|0;e=B(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do if(e>>>0>f>>>0){if(e>>>0<=f<<1>>>0){f=yw(c[a+28>>2]<<1,d)|0;c[a+112>>2]=f;f=2;b=c[a+32>>2]<<1;break}if(e>>>0<=(f*3|0)>>>0){f=yw((c[a+28>>2]|0)*3|0,d)|0;c[a+112>>2]=f;f=3;b=(c[a+32>>2]|0)*3|0;break}if(e>>>0<=f<<2>>>0){f=yw(c[a+28>>2]<<2,d)|0;c[a+112>>2]=f;f=4;b=c[a+32>>2]<<2;break}if(e>>>0<=(f*5|0)>>>0){f=yw((c[a+28>>2]|0)*5|0,d)|0;c[a+112>>2]=f;f=5;b=(c[a+32>>2]|0)*5|0;break}if(e>>>0<=(f*6|0)>>>0){f=yw((c[a+28>>2]|0)*6|0,d)|0;c[a+112>>2]=f;f=6;b=(c[a+32>>2]|0)*6|0;break}if(e>>>0<=(f*7|0)>>>0){f=yw((c[a+28>>2]|0)*7|0,d)|0;c[a+112>>2]=f;f=7;b=(c[a+32>>2]|0)*7|0;break}if(e>>>0<=f<<3>>>0){f=yw(c[a+28>>2]<<3,d)|0;c[a+112>>2]=f;f=8;b=c[a+32>>2]<<3;break}if(e>>>0<=(f*9|0)>>>0){f=yw((c[a+28>>2]|0)*9|0,d)|0;c[a+112>>2]=f;f=9;b=(c[a+32>>2]|0)*9|0;break}if(e>>>0<=(f*10|0)>>>0){f=yw((c[a+28>>2]|0)*10|0,d)|0;c[a+112>>2]=f;f=10;b=(c[a+32>>2]|0)*10|0;break}if(e>>>0<=(f*11|0)>>>0){f=yw((c[a+28>>2]|0)*11|0,d)|0;c[a+112>>2]=f;f=11;b=(c[a+32>>2]|0)*11|0;break}if(e>>>0<=(f*12|0)>>>0){f=yw((c[a+28>>2]|0)*12|0,d)|0;c[a+112>>2]=f;f=12;b=(c[a+32>>2]|0)*12|0;break}if(e>>>0<=(f*13|0)>>>0){f=yw((c[a+28>>2]|0)*13|0,d)|0;c[a+112>>2]=f;f=13;b=(c[a+32>>2]|0)*13|0;break}if(e>>>0<=(f*14|0)>>>0){f=yw((c[a+28>>2]|0)*14|0,d)|0;c[a+112>>2]=f;f=14;b=(c[a+32>>2]|0)*14|0;break}b=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){f=yw(b<<4,d)|0;c[a+112>>2]=f;f=16;b=c[a+32>>2]<<4;break}else{f=yw(b*15|0,d)|0;c[a+112>>2]=f;f=15;b=(c[a+32>>2]|0)*15|0;break}}else{f=yw(c[a+28>>2]|0,d)|0;c[a+112>>2]=f;f=1;b=c[a+32>>2]|0}while(0);e=yw(b,c[g>>2]|0)|0;c[a+116>>2]=e;c[a+324>>2]=f;c[a+328>>2]=f;e=c[a+36>>2]|0;if((e|0)<=0)return;d=0;b=c[a+216>>2]|0;while(1){c[b+36>>2]=f;c[b+40>>2]=f;d=d+1|0;if((d|0)>=(e|0))break;else b=b+88|0}return}function yw(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=c[a+20>>2]|0;if((e|0)!=205){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=e;Sb[c[c[a>>2]>>2]&255](a)}e=a+140|0;f=c[e>>2]|0;g=c[a+116>>2]|0;if(f>>>0>=g>>>0){i=c[a>>2]|0;c[i+20>>2]=126;Ub[c[i+4>>2]&63](a,-1);i=0;zb=j;return i|0}h=c[a+8>>2]|0;if(h|0){c[h+4>>2]=f;c[h+8>>2]=g;Sb[c[h>>2]&255](a)}c[i>>2]=0;Xb[c[(c[a+448>>2]|0)+4>>2]&31](a,b,i,d);i=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+i;zb=j;return i|0}function Aw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;j=k;g=k+8|0;h=k+12|0;d=b+4|0;c[d>>2]=0;e=Bw(b)|0;c[g>>2]=e;f=Cw(b,84)|0;if(!f){Dw(b);i=c[b>>2]|0;c[i+20>>2]=56;c[i+24>>2]=0;Sb[c[c[b>>2]>>2]&255](b)}c[f>>2]=33;c[f+4>>2]=34;c[f+8>>2]=9;c[f+12>>2]=10;c[f+16>>2]=39;c[f+20>>2]=40;c[f+24>>2]=135;c[f+28>>2]=21;c[f+32>>2]=22;c[f+36>>2]=52;c[f+40>>2]=136;c[f+48>>2]=1e9;i=f+44|0;c[i>>2]=e;c[f+56>>2]=0;c[f+64>>2]=0;c[f+52>>2]=0;c[f+60>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+76>>2]=84;c[d>>2]=f;b=Ja(46641)|0;if(!b){zb=k;return}a[h>>0]=120;c[j>>2]=g;c[j+4>>2]=h;if((Cz(b,46649,j)|0)>0){switch(a[h>>0]|0){case 77:case 109:{b=(c[g>>2]|0)*1e3|0;c[g>>2]=b;break}default:b=c[g>>2]|0}c[i>>2]=b*1e3}zb=k;return}function Bw(a){a=a|0;return 0}function Cw(a,b){a=a|0;b=b|0;return FO(b)|0}function Dw(a){a=a|0;return}function Ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;if(d>>>0>999999984){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}j=d&7;j=((j|0)==0?0:8-j|0)+d|0;if(b>>>0>1){i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=k+52+(b<<2)|0;d=c[i>>2]|0;a:do if(!d){d=0;f=9}else while(1){if((c[d+8>>2]|0)>>>0>=j>>>0)break a;e=c[d>>2]|0;if(!e){f=9;break}else d=e}while(0);do if((f|0)==9){h=(d|0)==0;b=c[(h?15936:15944)+(b<<2)>>2]|0;e=999999984-j|0;b=b>>>0>e>>>0?e:b;e=b+j|0;g=e+16|0;f=Cw(a,g)|0;if(!f){do{if(b>>>0<100){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=2;Sb[c[c[a>>2]>>2]&255](a)}b=b>>>1;e=b+j|0;g=e+16|0;f=Cw(a,g)|0}while(!(f|0));b=g}else b=g;k=k+76|0;c[k>>2]=(c[k>>2]|0)+b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;if(h){c[i>>2]=f;d=f;break}else{c[d>>2]=f;d=f;break}}while(0);i=d+4|0;k=c[i>>2]|0;c[i>>2]=k+j;i=d+8|0;c[i>>2]=(c[i>>2]|0)-j;return d+16+k|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}f=d&7;d=((f|0)==0?0:8-f|0)+d|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}e=d+16|0;f=Tw(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function Gw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(d>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(h,d)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+d|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Hw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;n=d<<7;f=999999984/(n>>>0)|0;if(n>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(n,h)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+(d<<7)|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+68|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Jw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+72|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+4|0;s=c[u>>2]|0;f=s+68|0;b=c[f>>2]|0;if(!b){d=0;e=0}else{d=0;e=0;do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(t,c[b+12>>2]|0)|0)+d|0;e=(B(c[b+4>>2]|0,t)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0)}r=s+72|0;b=c[r>>2]|0;if(!b)b=e;else{do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(c[b+12>>2]<<7,t)|0)+d|0;e=(B(t<<7,c[b+4>>2]|0)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0);b=e}if((d|0)<1)return;e=Rw(a,d,b,c[s+76>>2]|0)|0;if((e|0)<(b|0)){t=(e|0)/(d|0)|0;t=(t|0)>1?t:1}else t=1e9;b=c[f>>2]|0;if(b|0){q=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;p=b+16|0;c[p>>2]=d;d=b+8|0;Sw(a,b+48|0,B(c[d>>2]|0,e)|0);c[b+40>>2]=1;e=c[p>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;d=999999984/(p>>>0)|0;if(p>>>0>999999984){o=c[a>>2]|0;c[o+20>>2]=72;Sb[c[o>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,p)|0;i=c[u>>2]|0;if(f>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=56;c[m+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}h=f&7;f=((h|0)==0?0:8-h|0)+f|0;h=f+16|0;m=Tw(a,h)|0;if(!m){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}l=i+76|0;c[l>>2]=(c[l>>2]|0)+h;l=i+64|0;c[m>>2]=c[l>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[l>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+p|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[q>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0)}b=c[r>>2]|0;if(!b)return;r=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;s=b+16|0;c[s>>2]=d;d=b+8|0;Sw(a,b+48|0,B(e<<7,c[d>>2]|0)|0);c[b+40>>2]=1;e=c[s>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;q=p<<7;d=999999984/(q>>>0)|0;if(q>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=72;Sb[c[s>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,q)|0;h=c[u>>2]|0;if(f>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}i=f|16;m=Tw(a,i)|0;if(!m){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}s=h+76|0;c[s>>2]=(c[s>>2]|0)+i;s=h+64|0;c[m>>2]=c[s>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[s>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+(p<<7)|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[r>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0);return}function Lw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]|0;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]|0;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);g=c[m>>2]|0;j=g+j|0;e=c[k>>2]|0;if((e|0)<=(j|0))break a;r=e-j|0;r=(g|0)<(r|0)?g:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]|0;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Mw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]<<7;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]<<7;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[k>>2]|0;if((g|0)<=(j|0))break a;r=g-j|0;r=(e|0)<(r|0)?e:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]<<7;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){f=g+68|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0;f=g+72|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0}}else{f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}f=g+60+(b<<2)|0;d=c[f>>2]|0;c[f>>2]=0;if(d|0){e=g+76|0;do{h=d;d=c[d>>2]|0;f=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;Qw(a,h,f);c[e>>2]=(c[e>>2]|0)-f}while((d|0)!=0)}h=g+52+(b<<2)|0;d=c[h>>2]|0;c[h>>2]=0;if(!d)return;e=g+76|0;do{g=d;d=c[d>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;Pw(a,g,h);c[e>>2]=(c[e>>2]|0)-h}while((d|0)!=0);return}function Ow(a){a=a|0;var b=0;Nw(a,1);Nw(a,0);b=a+4|0;Pw(a,c[b>>2]|0,84);c[b>>2]=0;Dw(a);return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Sb[c[d>>2]&255](a);return}function Tw(a,b){a=a|0;b=b|0;return FO(b)|0}function Uw(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d|0)Sb[c[d+40>>2]&255](a);c[b>>2]=0;c[a+20>>2]=0;return}function Vw(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Ub[c[b+36>>2]&63](a,1);b=a+20|0;if(!(c[a+16>>2]|0)){c[b>>2]=100;return}else{c[b>>2]=200;c[a+312>>2]=0;return}}function Ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[a+4>>2]=0;if((b|0)!=90){e=c[a>>2]|0;c[e+20>>2]=13;c[e+24>>2]=90;c[(c[a>>2]|0)+28>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}if((d|0)==488)b=a;else{b=c[a>>2]|0;c[b+20>>2]=22;c[b+24>>2]=488;c[(c[a>>2]|0)+28>>2]=d;Sb[c[c[a>>2]>>2]&255](a);b=a}f=c[a>>2]|0;d=a+12|0;e=c[d>>2]|0;aP(a+4|0,0,484)|0;c[a>>2]=f;c[d>>2]=e;c[a+16>>2]=1;Aw(b);c[a+8>>2]=0;c[a+24>>2]=0;c[a+312>>2]=0;b=a+164|0;d=b+48|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ut(a);Xw(a);c[a+20>>2]=200;return}function Xw(a){a=a|0;var b=0;b=Jb[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+460>>2]=b;c[b>>2]=90;c[b+4>>2]=137;c[b+8>>2]=138;c[b+12>>2]=139;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function Yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+460|0;b=c[G>>2]|0;H=b+20|0;if(c[H>>2]|0){a=2;return a|0}I=a+464|0;K=b+24|0;L=a+340|0;F=b+16|0;l=a+32|0;m=a+212|0;n=a+28|0;o=a+36|0;p=a+316|0;q=a+320|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+324|0;v=a+328|0;w=a+428|0;x=a+432|0;y=a+436|0;z=a+416|0;A=a+332|0;C=a+412|0;D=a+420|0;E=a+424|0;a:while(1){b=Gb[c[(c[I>>2]|0)+4>>2]&127](a)|0;switch(b|0){case 2:{k=58;break a}case 1:break;default:{k=63;break a}}b:do switch(c[K>>2]|0){case 0:{if(!(c[F>>2]|0)){j=c[a>>2]|0;c[j+20>>2]=36;Sb[c[j>>2]&255](a)}if(c[L>>2]|0){k=57;break a}break}case 1:{if(!((c[l>>2]|0)<=65500?(c[n>>2]|0)<=65500:0)){j=c[a>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Sb[c[c[a>>2]>>2]&255](a)}b=c[m>>2]|0;if((b+-8|0)>>>0>4){j=c[a>>2]|0;c[j+20>>2]=16;c[j+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}b=c[o>>2]|0;if((b|0)>10){j=c[a>>2]|0;c[j+20>>2]=27;c[j+24>>2]=b;c[(c[a>>2]|0)+28>>2]=10;Sb[c[c[a>>2]>>2]&255](a);b=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((b|0)>0){i=0;j=c[r>>2]|0;f=1;h=1;while(1){d=j+8|0;e=c[d>>2]|0;g=j+12|0;if((e+-1|0)>>>0<=3?(J=c[g>>2]|0,(J+-1|0)>>>0<=3):0)d=J;else{h=c[a>>2]|0;c[h+20>>2]=19;Sb[c[h>>2]&255](a);h=c[p>>2]|0;e=c[d>>2]|0;f=c[q>>2]|0;d=c[g>>2]|0;b=c[o>>2]|0}h=(h|0)>(e|0)?h:e;c[p>>2]=h;f=(f|0)>(d|0)?f:d;c[q>>2]=f;i=i+1|0;if((i|0)>=(b|0)){d=b;break}else j=j+88|0}}else d=b;c:do if(!(c[s>>2]|0)){if(c[t>>2]|0?c[L>>2]|0:0){k=22;break}do switch(c[z>>2]|0){case 0:{c[w>>2]=1;c[x>>2]=2064;c[y>>2]=0;b=1;break c}case 3:{c[w>>2]=2;c[x>>2]=3280;c[y>>2]=3;b=2;break c}case 8:{c[w>>2]=3;c[x>>2]=3168;c[y>>2]=8;b=3;break c}case 15:{c[w>>2]=4;c[x>>2]=3040;c[y>>2]=15;b=4;break c}case 24:{c[w>>2]=5;c[x>>2]=2864;c[y>>2]=24;b=5;break c}case 35:{c[w>>2]=6;c[x>>2]=2656;c[y>>2]=35;b=6;break c}case 48:{c[w>>2]=7;c[x>>2]=2384;c[y>>2]=48;b=7;break c}case 63:{c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8;break c}case 80:{c[w>>2]=9;c[x>>2]=2064;c[y>>2]=63;b=9;break c}case 99:{c[w>>2]=10;c[x>>2]=2064;c[y>>2]=63;b=10;break c}case 120:{c[w>>2]=11;c[x>>2]=2064;c[y>>2]=63;b=11;break c}case 143:{c[w>>2]=12;c[x>>2]=2064;c[y>>2]=63;b=12;break c}case 168:{c[w>>2]=13;c[x>>2]=2064;c[y>>2]=63;b=13;break c}case 195:{c[w>>2]=14;c[x>>2]=2064;c[y>>2]=63;b=14;break c}case 224:{c[w>>2]=15;c[x>>2]=2064;c[y>>2]=63;b=15;break c}case 255:{c[w>>2]=16;c[x>>2]=2064;c[y>>2]=63;b=16;break c}default:{b=c[a>>2]|0;c[b+20>>2]=17;c[b+24>>2]=c[C>>2];c[(c[a>>2]|0)+28>>2]=c[z>>2];c[(c[a>>2]|0)+32>>2]=c[D>>2];c[(c[a>>2]|0)+36>>2]=c[E>>2];Sb[c[c[a>>2]>>2]&255](a);b=c[w>>2]|0;d=c[o>>2]|0;break c}}while(0)}else k=22;while(0);if((k|0)==22){c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8}c[u>>2]=b;c[v>>2]=b;if((d|0)>0){d=0;e=c[r>>2]|0;while(1){c[e+36>>2]=b;c[e+40>>2]=b;k=e+8|0;j=B(c[k>>2]|0,c[n>>2]|0)|0;b=yw(j,B(c[p>>2]|0,b)|0)|0;c[e+28>>2]=b;b=e+12|0;j=B(c[b>>2]|0,c[l>>2]|0)|0;j=yw(j,B(c[w>>2]|0,c[q>>2]|0)|0)|0;c[e+32>>2]=j;k=B(c[k>>2]|0,c[n>>2]|0)|0;k=yw(k,c[p>>2]|0)|0;c[e+44>>2]=k;b=B(c[b>>2]|0,c[l>>2]|0)|0;b=yw(b,c[q>>2]|0)|0;c[e+48>>2]=b;c[e+52>>2]=1;c[e+80>>2]=0;b=d+1|0;if((b|0)>=(c[o>>2]|0))break;d=b;e=e+88|0;b=c[w>>2]|0}b=c[w>>2]|0}b=yw(c[l>>2]|0,B(b,c[q>>2]|0)|0)|0;c[A>>2]=b;b=c[L>>2]|0;if((b|0)>=(c[o>>2]|0)?(c[t>>2]|0)==0:0){c[(c[G>>2]|0)+16>>2]=0;k=50;break b}c[(c[G>>2]|0)+16>>2]=1;k=50;break}default:{b=c[L>>2]|0;k=50}}while(0);if((k|0)==50){k=0;if(b|0){k=52;break}c[K>>2]=2}}if((k|0)==52){c[K>>2]=0;a=1;return a|0}else if((k|0)==57){_w(a);a=1;return a|0}else if((k|0)==58){c[H>>2]=1;if(!(c[K>>2]|0)){d=a+152|0;b=c[a+144>>2]|0;if((c[d>>2]|0)<=(b|0)){a=2;return a|0}c[d>>2]=b;a=2;return a|0}else{if(!(c[(c[I>>2]|0)+16>>2]|0)){a=2;return a|0}L=c[a>>2]|0;c[L+20>>2]=62;Sb[c[L>>2]&255](a);a=2;return a|0}}else if((k|0)==63)return b|0;return 0}function Zw(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[b>>2]=90;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;Sb[c[(c[a>>2]|0)+16>>2]&255](a);Sb[c[c[a+464>>2]>>2]&255](a);c[a+160>>2]=0;return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+340|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[(c[a>>2]|0)+28>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}f=a+428|0;g=yw(c[a+28>>2]|0,B(c[f>>2]|0,c[a+316>>2]|0)|0)|0;c[a+360>>2]=g;f=yw(c[a+32>>2]|0,B(c[f>>2]|0,c[a+320>>2]|0)|0)|0;c[a+364>>2]=f;f=a+368|0;c[f>>2]=0;if((c[h>>2]|0)<=0){g=a+468|0;g=c[g>>2]|0;g=c[g>>2]|0;Sb[g&255](a);g=a+452|0;h=c[g>>2]|0;h=c[h>>2]|0;Sb[h&255](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;h=a+460|0;h=c[h>>2]|0;c[h>>2]=g;return}d=0;e=0;while(1){g=c[a+344+(d<<2)>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=B(j,k)|0;c[g+64>>2]=b;i=B(c[g+36>>2]|0,k)|0;c[g+68>>2]=i;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Sb[c[k>>2]&255](a)}if((b|0)>0)while(1){k=c[f>>2]|0;c[f>>2]=k+1;c[a+372+(k<<2)>>2]=d;if((b|0)>1)b=b+-1|0;else break}d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}}else{b=c[a+344>>2]|0;c[a+360>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+364>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;j=c[b+12>>2]|0;k=(k>>>0)%(j>>>0)|0;c[b+76>>2]=(k|0)==0?j:k;c[a+368>>2]=1;c[a+372>>2]=0;b=1}g=a+4|0;f=0;do{d=c[a+344+(f<<2)>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+164+(d<<2)|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}k=Jb[c[c[g>>2]>>2]&63](a,1,132)|0;_O(k|0,c[b>>2]|0,132)|0;c[e>>2]=k;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0));j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}function $w(a){a=a|0;Sb[c[(c[a+468>>2]|0)+8>>2]&255](a);c[c[a+460>>2]>>2]=90;return}function ax(a){a=a|0;Uw(a);return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}d=cx(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(b){e=c[a>>2]|0;c[e+20>>2]=53;Sb[c[e>>2]&255](a)}Vw(a);e=2;return e|0}default:{e=d;return e|0}}return 0}function cx(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;i=b+20|0;d=c[i>>2]|0;switch(d|0){case 200:{d=b+460|0;Sb[c[(c[d>>2]|0)+4>>2]&255](b);Sb[c[(c[b+24>>2]|0)+8>>2]&255](b);c[i>>2]=201;break}case 201:{d=b+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{i=Gb[c[c[b+460>>2]>>2]&127](b)|0;return i|0}case 202:{i=1;return i|0}default:{i=c[b>>2]|0;c[i+20>>2]=21;c[i+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b);i=0;return i|0}}d=Gb[c[c[d>>2]>>2]&127](b)|0;if((d|0)!=1){i=d;return i|0}d=c[b+36>>2]|0;a:do switch(d|0){case 1:{e=d;break}case 3:{f=c[b+216>>2]|0;d=c[f>>2]|0;e=c[f+88>>2]|0;f=c[f+176>>2]|0;h=(d|0)==1;if(!(h&(e|0)==2&(f|0)==3))if(!(h&(e|0)==34&(f|0)==35))if(!((d|0)==82&(e|0)==71&(f|0)==66))if(!((d|0)==114&(e|0)==103&(f|0)==98))if(!(c[b+284>>2]|0)){if(!(c[b+296>>2]|0)){h=c[b>>2]|0;c[h+24>>2]=d;c[h+28>>2]=e;c[h+32>>2]=f;c[h+20>>2]=113;Ub[c[h+4>>2]&63](b,1);e=2;d=3;break a}d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=2;d=2;break a}case 1:{e=2;d=3;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=2;d=3;break a}}}else{e=2;d=3}else{e=2;d=6}else{e=2;d=2}else{e=2;d=7}else{e=2;d=3}break}case 4:{if(!(c[b+296>>2]|0)){e=4;d=4}else{d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=4;d=4;break a}case 2:{e=4;d=5;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=4;d=5;break a}}}break}default:{e=0;d=0}}while(0);c[b+40>>2]=d;c[b+44>>2]=e;h=c[b+428>>2]|0;c[b+48>>2]=h;c[b+52>>2]=h;g[b+56>>3]=1.0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+76>>2]=1;c[b+80>>2]=1;c[b+84>>2]=0;c[b+88>>2]=2;c[b+92>>2]=1;c[b+96>>2]=256;c[b+136>>2]=0;c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;c[i>>2]=202;i=1;return i|0}function dx(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=c[b>>2]|0;if((d+-205|0)>>>0<2?(c[a+64>>2]|0)==0:0){if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){d=c[a>>2]|0;c[d+20>>2]=69;Sb[c[d>>2]&255](a)}Sb[c[(c[a+444>>2]|0)+4>>2]&255](a);c[b>>2]=210}else e=6;a:do if((e|0)==6)switch(d|0){case 210:break a;case 207:{c[b>>2]=210;break a}default:{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a);break a}}while(0);d=a+460|0;b=c[d>>2]|0;b:do if(!(c[b+20>>2]|0)){while(1){if(!(Gb[c[b>>2]&127](a)|0)){b=0;break}b=c[d>>2]|0;if(c[b+20>>2]|0)break b}return b|0}while(0);Sb[c[(c[a+24>>2]|0)+24>>2]&255](a);Vw(a);a=1;return a|0}function ex(a){a=a|0;c[a>>2]=140;c[a+4>>2]=53;c[a+8>>2]=141;c[a+12>>2]=54;c[a+16>>2]=142;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=3824;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function fx(a){a=a|0;Sb[c[(c[a>>2]|0)+8>>2]&255](a);Uw(a);Ea(1)}function gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Sb[c[d+8>>2]&255](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Sb[c[d+8>>2]&255](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function hx(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+208|0;d=b+200|0;e=b;Ub[c[(c[a>>2]|0)+12>>2]&63](a,e);a=c[4001]|0;c[d>>2]=e;Lz(a,46655,d)|0;zb=b;return}function ix(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+48|0;j=k+8|0;i=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;a:while(1){f=e+1|0;switch(a[e>>0]|0){case 0:break a;case 37:{g=12;break a}default:e=f}}if((g|0)==12?(a[f>>0]|0)==115:0){c[i>>2]=h+24;Hx(d,b,i)|0;zb=k;return}n=c[h+28>>2]|0;m=c[h+32>>2]|0;l=c[h+36>>2]|0;e=c[h+40>>2]|0;f=c[h+44>>2]|0;g=c[h+48>>2]|0;i=c[h+52>>2]|0;c[j>>2]=c[h+24>>2];c[j+4>>2]=n;c[j+8>>2]=m;c[j+12>>2]=l;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=i;Hx(d,b,j)|0;zb=k;return}function jx(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function kx(a){a=a|0;return (aa(px(c[a+60>>2]|0)|0)|0)&65535|0}function lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=zb;zb=zb+32|0;h=l;i=l+16|0;j=a+28|0;f=c[j>>2]|0;c[h>>2]=f;k=a+20|0;f=(c[k>>2]|0)-f|0;c[h+4>>2]=f;c[h+8>>2]=b;c[h+12>>2]=d;e=a+60|0;g=2;b=f+d|0;while(1){if(!(nx(da(c[e>>2]|0,h|0,g|0,i|0)|0)|0))f=c[i>>2]|0;else{c[i>>2]=-1;f=-1}if((b|0)==(f|0)){b=6;break}if((f|0)<0){b=8;break}p=c[h+4>>2]|0;n=f>>>0>p>>>0;m=n?h+8|0:h;p=f-(n?p:0)|0;c[m>>2]=(c[m>>2]|0)+p;o=m+4|0;c[o>>2]=(c[o>>2]|0)-p;g=g+(n<<31>>31)|0;b=b-f|0;h=m}if((b|0)==6){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}else if((b|0)==8){c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)d=0;else d=d-(c[h+4>>2]|0)|0}zb=l;return d|0}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+16|0;f=g;if(!(nx(ca(c[a+60>>2]|0,b|0,d|0,e&255|0,f|0)|0)|0)){b=f;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=f;c[a>>2]=-1;c[a+4>>2]=-1;a=-1;b=-1}E(a|0);zb=g;return b|0}function nx(a){a=a|0;var b=0;if(!(a<<16>>16))a=0;else{b=ox()|0;c[b>>2]=a&65535;a=-1}return a|0}function ox(){return 55620}function px(a){a=a|0;return a|0}function qx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;i=l;f=l+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;if(!(nx(ba(c[b+60>>2]|0,i|0,2,f|0)|0)|0)){f=c[f>>2]|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else k=4}else{c[f>>2]=-1;f=-1;k=4}if((k|0)==4)c[b>>2]=f&48^16|c[b>>2];zb=l;return f|0}function rx(a){a=a|0;return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;E(0);return 0}function tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=ux(a,b,c)|0;E(F()|0);return d|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,-1,-1)|0;E(F()|0);return c|0}function vx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+144|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;wx(h,0,0);d=xx(h,d,1,e,f)|0;e=F()|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+120>>2]|0)-(c[g>>2]|0));E(e|0);zb=j;return d|0}function wx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=a+112|0;c[f>>2]=b;c[f+4>>2]=d;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;h=((g|0)<0)<<31>>31;i=a+120|0;c[i>>2]=g;c[i+4>>2]=h;if(((b|0)!=0|(d|0)!=0)&((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>b>>>0))c[a+104>>2]=e+b;else c[a+104>>2]=f;return}function xx(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){h=ox()|0;c[h>>2]=28;h=0;g=0}else{r=b+4|0;q=b+104|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while((zx(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=yx(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((i|32|0)!=120)if(j){o=8;n=47;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((d[5937+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){wx(b,0,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{o=16;n=47}}else{e=j?10:e;if(e>>>0>(d[5937+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;wx(b,0,0);h=ox()|0;c[h>>2]=28;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;do{i=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&i>>>0<429496729);if(e>>>0<10){m=0;do{f=NO(i|0,m|0,10,0)|0;k=F()|0;l=((e|0)<0)<<31>>31;o=~l;if(k>>>0>o>>>0|(k|0)==(o|0)&f>>>0>~e>>>0){f=10;e=m;n=76;break c}i=OO(f|0,k|0,e|0,l|0)|0;m=F()|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&(m>>>0<429496729|(m|0)==429496729&i>>>0<2576980378));if(e>>>0>9){j=p;e=m}else{f=10;e=m;n=76}}else{j=p;e=0}}else{j=p;e=0;i=0}}else{o=e;n=47}while(0);d:do if((n|0)==47){if(!(o+-1&o)){n=a[46659+((o*23|0)>>>5&7)>>0]|0;f=a[5937+i>>0]|0;e=f&255;if(o>>>0>e>>>0){i=0;do{i=e|i<>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;e=f&255}while(i>>>0<134217728&o>>>0>e>>>0);k=e;e=0}else{j=i;k=e;e=0;i=0}l=TO(-1,-1,n|0)|0;m=F()|0;if(o>>>0<=k>>>0|(m>>>0>>0|(m|0)==(e|0)&l>>>0>>0)){f=o;n=76;break}while(1){i=UO(i|0,e|0,n|0)|0;e=F()|0;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0|(e>>>0>m>>>0|(e|0)==(m|0)&i>>>0>l>>>0)){f=o;n=76;break d}}}e=a[5937+i>>0]|0;f=e&255;if(o>>>0>f>>>0){i=0;do{i=f+(B(i,o)|0)|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=a[5937+j>>0]|0;f=e&255}while(i>>>0<119304647&o>>>0>f>>>0);k=e;e=0}else{j=i;k=e;i=0;e=0}if(o>>>0>f>>>0){m=SO(-1,-1,o|0,0)|0;n=F()|0;f=k;while(1){if(e>>>0>n>>>0|(e|0)==(n|0)&i>>>0>m>>>0){f=o;n=76;break d}k=NO(i|0,e|0,o|0,0)|0;l=F()|0;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=o;n=76;break d}i=OO(k|0,l|0,f|0,0)|0;e=F()|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0){f=o;n=76;break}}}else{f=o;n=76}}while(0);if((n|0)==76)if(f>>>0>(d[5937+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while(f>>>0>(d[5937+i>>0]|0)>>>0);j=ox()|0;c[j>>2]=68;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else j=p;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){r=ox()|0;c[r>>2]=68;g=OO(g|0,h|0,-1,-1)|0;h=F()|0;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){r=ox()|0;c[r>>2]=68;break}}g=((j|0)<0)<<31>>31;g=PO(i^j|0,e^g|0,j|0,g|0)|0;h=F()|0}while(0);E(h|0);return g|0}function yx(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+112|0;f=g;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0)?(i=b+120|0,h=c[i+4>>2]|0,!((h|0)<(f|0)|((h|0)==(f|0)?(c[i>>2]|0)>>>0>>0:0))):0)j=4;else{e=Ax(b)|0;if((e|0)>=0){f=c[g>>2]|0;g=c[g+4>>2]|0;i=c[b+8>>2]|0;if(!((f|0)==0&(g|0)==0)){h=c[b+4>>2]|0;k=i-h|0;l=((k|0)<0)<<31>>31;m=b+120|0;f=PO(f|0,g|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=F()|0;g=i;if((m|0)>(l|0)|(m|0)==(l|0)&f>>>0>k>>>0)j=9;else c[b+104>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+104>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;k=g+1-f|0;m=b+120|0;l=m;k=OO(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=F()|0;c[m>>2]=k;c[m+4>>2]=l}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+104>>2]=0;e=-1}return e|0}function zx(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Ax(a){a=a|0;var b=0,e=0;e=zb;zb=zb+16|0;b=e;if((Bx(a)|0)==0?(Jb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;zb=e;return a|0}function Bx(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Jb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Dx(a,b,c)|0;E(F()|0);return d|0}function Dx(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,0,-2147483648)|0;E(F()|0);return c|0}function Ex(a,b){a=+a;b=+b;var d=0,e=0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;g[h>>3]=b;d=c[h+4>>2]&-2147483648|d&2147483647;c[h>>2]=e;c[h+4>>2]=d;return +(+g[h>>3])}function Fx(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gx(a){a=a|0;return (a+-48|0)>>>0<10|0}function Hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Ix(a,b,f)|0;zb=e;return d|0}function Ix(a,b,c){a=a|0;b=b|0;c=c|0;return Jx(a,2147483647,b,c)|0}function Jx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+160|0;g=j+144|0;i=j;_O(i|0,13736,144)|0;if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;h=4}else{d=ox()|0;c[d>>2]=61;d=-1}else h=4;if((h|0)==4){h=-2-b|0;h=d>>>0>h>>>0?h:d;c[i+48>>2]=h;g=i+20|0;c[g>>2]=b;c[i+44>>2]=b;d=b+h|0;b=i+16|0;c[b>>2]=d;c[i+28>>2]=d;d=Kx(i,e,f)|0;if(h){i=c[g>>2]|0;a[i+(((i|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}zb=j;return d|0}function Kx(a,b,c){a=a|0;b=b|0;c=c|0;return Nx(a,b,c,1,55)|0}function Lx(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0;H=zb;zb=zb+560|0;l=H+32|0;u=H+536|0;G=H;E=G;m=H+540|0;c[u>>2]=0;D=m+12|0;dy(e)|0;j=F()|0;if((j|0)<0){e=-e;dy(e)|0;C=1;A=46685;j=F()|0}else{C=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?46686:46691):46688}do if(0==0&(j&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;Yx(b,32,f,j,h&-65537);Rx(b,A,C);Rx(b,e!=e|0.0!=0.0?(G?46727:46712):G?46704:46708,3);Yx(b,32,f,j,h^8192)}else{q=+ey(e,u)*2.0;j=q!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;t=i|32;if((t|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[r>>0]|0)==45){e=-(e+(-q-e));break}else{e=q+e-e;break}}else e=q;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Wx(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;a[n>>0]=i+15;k=(g|0)<1;l=(h&8|0)==0;m=G;do{C=~~e;j=m+1|0;a[m>>0]=o|d[6672+C>>0];e=(e-+(C|0))*16.0;if((j-E|0)==1?!(l&(k&e==0.0)):0){a[j>>0]=46;m=m+2|0}else m=j}while(e!=0.0);if((g|0)!=0?(-2-E+m|0)<(g|0):0){k=D;l=n;j=g+2+k-l|0}else{k=D;l=n;j=k-E-l+m|0}D=j+p|0;Yx(b,32,f,D,h);Rx(b,r,p);Yx(b,48,f,D,h^65536);E=m-E|0;Rx(b,G,E);G=k-l|0;Yx(b,48,j-(E+G)|0,0,0);Rx(b,n,G);Yx(b,32,f,D,h^8192);j=D;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=q*268435456.0}else{e=q;j=c[u>>2]|0}z=(j|0)<0?l:l+288|0;l=z;do{x=~~e>>>0;c[l>>2]=x;l=l+4|0;e=(e-+(x>>>0))*1.0e9}while(e!=0.0);x=z;if((j|0)>0){o=z;while(1){n=(j|0)<29?j:29;j=l+-4|0;if(j>>>0>=o>>>0){m=0;do{s=UO(c[j>>2]|0,0,n|0)|0;s=OO(s|0,F()|0,m|0,0)|0;v=F()|0;m=SO(s|0,v|0,1e9,0)|0;w=NO(m|0,F()|0,1e9,0)|0;w=PO(s|0,v|0,w|0,F()|0)|0;F()|0;c[j>>2]=w;j=j+-4|0}while(j>>>0>=o>>>0);if(m){w=o+-4|0;c[w>>2]=m;m=w}else m=o}else m=o;a:do if(l>>>0>m>>>0){j=l;while(1){l=j+-4|0;if(c[l>>2]|0){l=j;break a}if(l>>>0>m>>>0)j=l;else break}}while(0);j=(c[u>>2]|0)-n|0;c[u>>2]=j;if((j|0)>0)o=m;else break}}else m=z;if((j|0)<0){g=((k+25|0)/9|0)+1|0;s=(t|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{w=c[j>>2]|0;c[j>>2]=(w>>>r)+p;p=B(w&n,o)|0;j=j+4|0}while(j>>>0>>0);m=(c[m>>2]|0)==0?m+4|0:m;if(p){c[l>>2]=p;l=l+4|0}}else m=(c[m>>2]|0)==0?m+4|0:m;j=s?z:m;l=(l-j>>2|0)>(g|0)?j+(g<<2)|0:l;j=(c[u>>2]|0)+r|0;c[u>>2]=j}while((j|0)<0);s=m}else s=m;if(s>>>0>>0){j=(x-s>>2)*9|0;n=c[s>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;v=(t|0)==103;w=(k|0)!=0;m=k-((t|0)==102?0:j)+((w&v)<<31>>31)|0;if((m|0)<(((l-x>>2)*9|0)+-9|0)){u=m+9216|0;m=(u|0)/9|0;g=z+4+(m+-1024<<2)|0;m=u-(m*9|0)|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;p=c[g>>2]|0;m=(p>>>0)/(n>>>0)|0;r=p-(B(m,n)|0)|0;o=(g+4|0)==(l|0);if(!(o&(r|0)==0)){q=(m&1|0)==0?9007199254740992.0:9007199254740994.0;u=n>>>1;e=r>>>0>>0?.5:o&(r|0)==(u|0)?1.0:1.5;if(C){u=(a[A>>0]|0)==45;e=u?-e:e;q=u?-q:q}m=p-r|0;c[g>>2]=m;if(q+e!=q){u=m+n|0;c[g>>2]=u;if(u>>>0>999999999){n=g;j=s;while(1){m=n+-4|0;c[n>>2]=0;if(m>>>0>>0){j=j+-4|0;c[j>>2]=0}u=(c[m>>2]|0)+1|0;c[m>>2]=u;if(u>>>0>999999999)n=m;else{n=j;break}}}else{m=g;n=s}j=(x-n>>2)*9|0;p=c[n>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;j=j+1|0}while(p>>>0>=o>>>0)}}else{m=g;n=s}}else{m=g;n=s}u=m+4|0;l=l>>>0>u>>>0?u:l}else n=s;g=0-j|0;b:do if(l>>>0>n>>>0)while(1){m=l+-4|0;if(c[m>>2]|0){u=l;t=1;break b}if(m>>>0>n>>>0)l=m;else{u=m;t=0;break}}else{u=l;t=0}while(0);do if(v){k=k+((w^1)&1)|0;if((k|0)>(j|0)&(j|0)>-5){o=i+-1|0;k=k+-1-j|0}else{o=i+-2|0;k=k+-1|0}if(!(h&8)){if(t?(y=c[u+-4>>2]|0,(y|0)!=0):0)if(!((y>>>0)%10|0)){m=0;l=10;do{l=l*10|0;m=m+1|0}while(!((y>>>0)%(l>>>0)|0|0))}else m=0;else m=9;l=((u-x>>2)*9|0)+-9|0;if((o|32|0)==102){i=l-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}else{i=l+j-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}}}else o=i;while(0);s=(k|0)!=0;p=s?1:h>>>3&1;r=(o|32|0)==102;if(r){v=0;j=(j|0)>0?j:0}else{l=(j|0)<0?g:j;l=Wx(l,((l|0)<0)<<31>>31,D)|0;m=D;if((m-l|0)<2)do{l=l+-1|0;a[l>>0]=48}while((m-l|0)<2);a[l+-1>>0]=(j>>31&2)+43;j=l+-2|0;a[j>>0]=o;v=j;j=m-j|0}j=C+1+k+p+j|0;Yx(b,32,f,j,h);Rx(b,A,C);Yx(b,48,f,j,h^65536);if(r){p=n>>>0>z>>>0?z:n;r=G+9|0;n=r;o=G+8|0;m=p;do{l=Wx(c[m>>2]|0,0,r)|0;if((m|0)==(p|0)){if((l|0)==(r|0)){a[o>>0]=48;l=o}}else if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,n-l|0);m=m+4|0}while(m>>>0<=z>>>0);if(!((h&8|0)==0&(s^1)))Rx(b,46716,1);if(m>>>0>>0&(k|0)>0)while(1){l=Wx(c[m>>2]|0,0,r)|0;if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}Yx(b,48,k+9|0,9,0)}else{u=t?u:n+4|0;if(n>>>0>>0&(k|0)>-1){g=G+9|0;s=(h&8|0)==0;t=g;p=0-E|0;r=G+8|0;o=n;do{l=Wx(c[o>>2]|0,0,g)|0;if((l|0)==(g|0)){a[r>>0]=48;l=r}do if((o|0)==(n|0)){m=l+1|0;Rx(b,l,1);if(s&(k|0)<1){l=m;break}Rx(b,46716,1);l=m}else{if(l>>>0<=G>>>0)break;aP(G|0,48,l+p|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}while(0);E=t-l|0;Rx(b,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}Yx(b,48,k+18|0,18,0);Rx(b,v,D-v|0)}Yx(b,32,f,j,h^8192)}while(0);zb=H;return ((j|0)<(f|0)?f:j)|0}function Mx(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=(c[b>>2]|0)+(8-1)&~(8-1);d=+g[e>>3];c[b>>2]=e+8;g[a>>3]=d;return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+224|0;p=t+208|0;q=t+160|0;r=t+80|0;s=t;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[p>>2]=c[e>>2];if((Ox(0,d,p,r,q,f,g)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=Px(b)|0;else o=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;h=b+48|0;if(!(c[h>>2]|0)){i=b+44|0;j=c[i>>2]|0;c[i>>2]=s;k=b+28|0;c[k>>2]=s;l=b+20|0;c[l>>2]=s;c[h>>2]=80;m=b+16|0;c[m>>2]=s+80;e=Ox(b,d,p,r,q,f,g)|0;if(j){Jb[c[b+36>>2]&63](b,0,0)|0;e=(c[l>>2]|0)==0?-1:e;c[i>>2]=j;c[h>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else e=Ox(b,d,p,r,q,f,g)|0;h=c[b>>2]|0;c[b>>2]=h|n;if(o|0)Qx(b);e=(h&32|0)==0?e:-1}zb=t;return e|0}function Ox(d,e,f,h,i,j,k){d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0;J=zb;zb=zb+64|0;G=J+56|0;I=J+40|0;A=J;C=J+48|0;D=J+60|0;c[G>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=C+4|0;l=0;e=0;n=0;a:while(1){do{do if((e|0)>-1)if((l|0)>(2147483647-e|0)){e=ox()|0;c[e>>2]=61;e=-1;break}else{e=l+e|0;break}while(0);r=c[G>>2]|0;l=a[r>>0]|0;if(!(l<<24>>24)){w=92;break a}m=r;b:while(1){switch(l<<24>>24){case 37:{w=10;break b}case 0:{l=m;break b}default:{}}v=m+1|0;c[G>>2]=v;l=a[v>>0]|0;m=v}c:do if((w|0)==10){w=0;l=m;do{if((a[m+1>>0]|0)!=37)break c;l=l+1|0;m=m+2|0;c[G>>2]=m}while((a[m>>0]|0)==37)}while(0);l=l-r|0;if(x)Rx(d,r,l)}while((l|0)!=0);v=(Gx(a[(c[G>>2]|0)+1>>0]|0)|0)==0;m=c[G>>2]|0;if(!v?(a[m+2>>0]|0)==36:0){t=(a[m+1>>0]|0)+-48|0;p=1;l=3}else{t=-1;p=n;l=1}l=m+l|0;c[G>>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0;if(n>>>0>31|(1<>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0}while(!(n>>>0>31|(1<>24==42){if((Gx(a[l+1>>0]|0)|0)!=0?(H=c[G>>2]|0,(a[H+2>>0]|0)==36):0){l=H+1|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;n=1;m=H+3|0}else{if(p|0){e=-1;break}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);l=c[v>>2]|0;c[f>>2]=v+4}else l=0;n=0;m=(c[G>>2]|0)+1|0}c[G>>2]=m;v=(l|0)<0;u=v?0-l|0:l;o=v?o|8192:o;v=n}else{l=Sx(G)|0;if((l|0)<0){e=-1;break}u=l;v=p;m=c[G>>2]|0}do if((a[m>>0]|0)==46){l=m+1|0;if((a[l>>0]|0)!=42){c[G>>2]=l;l=Sx(G)|0;m=c[G>>2]|0;break}if(Gx(a[m+2>>0]|0)|0?(E=c[G>>2]|0,(a[E+3>>0]|0)==36):0){l=E+2|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;m=E+4|0;c[G>>2]=m;break}if(v|0){e=-1;break a}if(x){s=(c[f>>2]|0)+(4-1)&~(4-1);l=c[s>>2]|0;c[f>>2]=s+4}else l=0;m=(c[G>>2]|0)+2|0;c[G>>2]=m}else l=-1;while(0);s=0;while(1){if(((a[m>>0]|0)+-65|0)>>>0>57){e=-1;break a}n=m;m=m+1|0;c[G>>2]=m;n=a[(a[n>>0]|0)+-65+(6208+(s*58|0))>>0]|0;p=n&255;if((p+-1|0)>>>0>=8)break;else s=p}if(!(n<<24>>24)){e=-1;break}q=(t|0)>-1;do if(n<<24>>24==19)if(q){e=-1;break a}else w=54;else{if(q){c[i+(t<<2)>>2]=p;q=h+(t<<3)|0;t=c[q+4>>2]|0;w=I;c[w>>2]=c[q>>2];c[w+4>>2]=t;w=54;break}if(!x){e=0;break a}Tx(I,p,f,k);m=c[G>>2]|0;w=55}while(0);if((w|0)==54){w=0;if(x)w=55;else l=0}d:do if((w|0)==55){w=0;m=a[m+-1>>0]|0;m=(s|0)!=0&(m&15|0)==3?m&-33:m;n=o&-65537;t=(o&8192|0)==0?o:n;e:do switch(m|0){case 110:switch((s&255)<<24>>24){case 0:{c[c[I>>2]>>2]=e;l=0;break d}case 1:{c[c[I>>2]>>2]=e;l=0;break d}case 2:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}case 3:{b[c[I>>2]>>1]=e;l=0;break d}case 4:{a[c[I>>2]>>0]=e;l=0;break d}case 6:{c[c[I>>2]>>2]=e;l=0;break d}case 7:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}default:{l=0;break d}}case 112:{m=120;l=l>>>0>8?l:8;n=t|8;w=67;break}case 88:case 120:{n=t;w=67;break}case 111:{q=I;q=Vx(c[q>>2]|0,c[q+4>>2]|0,y)|0;n=z-q|0;o=0;p=46668;l=(t&8|0)==0|(l|0)>(n|0)?l:n+1|0;n=t;w=73;break}case 105:case 100:{n=I;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){m=PO(0,0,m|0,n|0)|0;n=F()|0;o=I;c[o>>2]=m;c[o+4>>2]=n;o=1;p=46668;w=72;break e}else{o=(t&2049|0)!=0&1;p=(t&2048|0)==0?((t&1|0)==0?46668:46670):46669;w=72;break e}}case 117:{n=I;o=0;p=46668;m=c[n>>2]|0;n=c[n+4>>2]|0;w=72;break}case 99:{a[A>>0]=c[I>>2];r=A;o=0;p=46668;q=1;m=n;l=z;break}case 115:{s=c[I>>2]|0;s=(s|0)==0?46678:s;t=Xx(s,0,l)|0;K=(t|0)==0;r=s;o=0;p=46668;q=K?l:t-s|0;m=n;l=K?s+l|0:t;break}case 67:{c[C>>2]=c[I>>2];c[B>>2]=0;c[I>>2]=C;p=-1;w=79;break}case 83:{if(!l){Yx(d,32,u,0,t);l=0;w=89}else{p=l;w=79}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{l=Hb[j&1](d,+g[I>>3],u,l,t,m)|0;break d}default:{o=0;p=46668;q=l;m=t;l=z}}while(0);f:do if((w|0)==67){q=I;q=Ux(c[q>>2]|0,c[q+4>>2]|0,y,m&32)|0;p=I;p=(n&8|0)==0|(c[p>>2]|0)==0&(c[p+4>>2]|0)==0;o=p?0:2;p=p?46668:46668+(m>>>4)|0;w=73}else if((w|0)==72){q=Wx(m,n,y)|0;n=t;w=73}else if((w|0)==79){w=0;o=c[I>>2]|0;l=0;while(1){m=c[o>>2]|0;if(!m)break;m=Zx(D,m)|0;n=(m|0)<0;if(n|m>>>0>(p-l|0)>>>0){w=83;break}l=m+l|0;if(p>>>0>l>>>0)o=o+4|0;else break}if((w|0)==83){w=0;if(n){e=-1;break a}}Yx(d,32,u,l,t);if(!l){l=0;w=89}else{n=c[I>>2]|0;o=0;while(1){m=c[n>>2]|0;if(!m){w=89;break f}m=Zx(D,m)|0;o=m+o|0;if((o|0)>(l|0)){w=89;break f}Rx(d,D,m);if(o>>>0>=l>>>0){w=89;break}else n=n+4|0}}}while(0);if((w|0)==73){w=0;m=I;m=(c[m>>2]|0)!=0|(c[m+4>>2]|0)!=0;K=(l|0)!=0|m;m=z-q+((m^1)&1)|0;r=K?q:y;q=K?((l|0)>(m|0)?l:m):0;m=(l|0)>-1?n&-65537:n;l=z}else if((w|0)==89){w=0;Yx(d,32,u,l,t^8192);l=(u|0)>(l|0)?u:l;break}t=l-r|0;s=(q|0)<(t|0)?t:q;K=s+o|0;l=(u|0)<(K|0)?K:u;Yx(d,32,l,K,m);Rx(d,p,o);Yx(d,48,l,K,m^65536);Yx(d,48,s,t,0);Rx(d,r,t);Yx(d,32,l,K,m^8192)}while(0);n=v}g:do if((w|0)==92)if(!d)if(!n)e=0;else{e=1;while(1){l=c[i+(e<<2)>>2]|0;if(!l)break;Tx(h+(e<<3)|0,l,f,k);e=e+1|0;if(e>>>0>=10){e=1;break g}}while(1){if(c[i+(e<<2)>>2]|0){e=-1;break g}e=e+1|0;if(e>>>0>=10){e=1;break}}}while(0);zb=J;return e|0}function Px(a){a=a|0;return 1}function Qx(a){a=a|0;return}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))by(b,d,a)|0;return}function Sx(b){b=b|0;var d=0,e=0;if(!(Gx(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((Gx(a[e>>0]|0)|0)!=0)}return d|0}function Tx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);e=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=e;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);h=+g[f>>3];c[d>>2]=f+8;g[a>>3]=h;break a}case 18:{Ub[e&63](a,d);break a}default:break a}while(0);while(0);return}function Ux(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6672+(b&15)>>0]|0|f;b=TO(b|0,c|0,4)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return e|0}function Vx(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=TO(b|0,c|0,3)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return d|0}function Wx(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){do{e=b;b=SO(b|0,c|0,10,0)|0;f=c;c=F()|0;g=NO(b|0,c|0,10,0)|0;g=PO(e|0,f|0,g|0,F()|0)|0;F()|0;d=d+-1|0;a[d>>0]=g&255|48}while(f>>>0>9|(f|0)==9&e>>>0>4294967295);c=b}else c=b;if(c)do{g=c;c=(c>>>0)/10|0;d=d+-1|0;a[d>>0]=g-(c*10|0)|48}while(g>>>0>=10);return d|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else i=16;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)==g<<24>>24)if(!e){i=16;break}else break;f=B(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break c;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break}}else i=11;while(0);if((i|0)==11)if(!e){i=16;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;e=e+-1|0;if(!e){i=16;break}else b=b+1|0}}while(0);if((i|0)==16)b=0;return b|0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;aP(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Rx(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Rx(a,f,e)}zb=g;return}function Zx(a,b){a=a|0;b=b|0;if(!a)a=0;else a=_x(a,b,0)|0;return a|0}function _x(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}e=($x()|0)+188|0;if(!(c[c[e>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}}else b=1;while(0);return b|0}function $x(){return ay()|0}function ay(){return 16020}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(cy(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=Jb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){h=0;g=b}else{i=d;while(1){g=i+-1|0;if((a[b+g>>0]|0)==10)break;if(!g){h=0;g=b;break b}else i=g}f=Jb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}while(0);_O(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function cy(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function dy(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function ey(a,b){a=+a;b=b|0;var d=0,e=0,f=0;g[h>>3]=a;d=c[h>>2]|0;e=c[h+4>>2]|0;f=TO(d|0,e|0,52)|0;F()|0;switch(f&2047){case 0:{if(a!=0.0){a=+ey(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[h>>2]=d;c[h+4>>2]=e&-2146435073|1071644672;a=+g[h>>3]}}return +a}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;_O(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function gy(){return 16264}function hy(){var a=0;a=(iy()|0)+188|0;return ((c[c[a>>2]>>2]|0)==0?1:4)|0}function iy(){return ay()|0}function jy(){return 16268}function ky(){return 16272}function ly(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function my(a){a=a|0;return (((a|32)+-97|0)>>>0<6|(Gx(a)|0)!=0)&1|0}function ny(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ox()|0;c[b>>2]=0-a;a=-1}return a|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=zb;zb=zb+208|0;j=m;k=m+192|0;h=B(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)py(a,d,e,f,j);else ry(a,d,e,k,f,0,j);if((f|0)==1){sy(k,1);f=0;break}else{sy(k,b);f=1;break}}else{py(a,d,e,f,j);qy(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}ry(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{sy(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;qy(k,1);ry(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);sy(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;ry(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=ty(k)|0;qy(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);zb=m;return}function py(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Ib[d&63](h,a)|0)>-1?(Ib[d&63](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Ib[d&63](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);vy(b,l,e);zb=m;return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function ry(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=zb;zb=zb+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Ib[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Ib[d&63](g,j)|0)>-1){i=10;break a}if((Ib[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=ty(m)|0;qy(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Ib[d&63](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){vy(b,n,e);py(a,b,d,f,h)}zb=o;return}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=uy(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function uy(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function vy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=zb;zb=zb+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;_O(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;_O(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);zb=h;return}function wy(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[10528+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=10624;else{b=f;g=5}if((g|0)==5){f=10624;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return xy(f,c[e+20>>2]|0)|0}function xy(a,b){a=a|0;b=b|0;return yy(a,b)|0}function yy(a,b){a=a|0;b=b|0;if(!b)b=0;else b=zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Ay(c[b+8>>2]|0,o)|0;f=Ay(c[b+12>>2]|0,o)|0;g=Ay(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Ay(c[b+(g<<2)>>2]|0,o)|0;g=Ay(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fx(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Ay(c[b+(f<<2)>>2]|0,o)|0;f=Ay(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Ay(a,b){a=a|0;b=b|0;var c=0;c=WO(a|0)|0;return ((b|0)==0?a:c)|0}function By(a){a=a|0;var b=0;b=(Cy()|0)+188|0;return wy(a,c[b>>2]|0)|0}function Cy(){return ay()|0}function Dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+104|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0}while((zx(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=yx(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;while(1){if((h|32|0)!=(a[46718+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=8){e=8;break}}c:do switch(e&2147483647|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;while(1){if((h|32|0)!=(a[46727+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=3){e=3;break}}}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|0)!=40){if(!(c[n>>2]|0)){g=q;break a}c[o>>2]=(c[o>>2]|0)+-1;g=q;break a}e=1;while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=yx(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=q;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}if(!e){g=q;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=q;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|32|0)==120){g=+Ey(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+Fy(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*r}while(0);return +g}function Ey(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+104|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=0;a:while(1){switch(i|0){case 46:{w=10;break a}case 48:break;default:{p=0;m=j;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=1}if((w|0)==10){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;if((i|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;l=OO(l|0,j|0,-1,-1)|0;j=F()|0}while((i|0)==48);p=1;m=1}else{p=1;m=j;l=0;j=0}}o=0;n=1.0;h=0.0;v=0;s=p;t=m;u=0;m=0;while(1){q=i+-48|0;p=i|32;if(q>>>0>=10){r=(i|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=n;q=v;r=t;l=m;j=u;p=u}else{i=46;break}else w=24}else w=24;if((w|0)==24){w=0;i=(i|0)>57?p+-87|0:q;do if(!((u|0)<0|(u|0)==0&m>>>0<8))if((u|0)<0|(u|0)==0&m>>>0<14){n=n*.0625;k=n;h=h+n*+(i|0);i=v;break}else{i=(o|0)!=0|(i|0)==0;o=i?o:1;k=n;h=i?h:h+n*.5;i=v;break}else{k=n;i=i+(v<<4)|0}while(0);m=OO(m|0,u|0,1,0)|0;q=i;r=1;p=F()|0}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;n=k;v=q;t=r;u=p}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i?(c[y>>2]=(c[y>>2]|0)+-1,!((s|0)==0|i)):0)c[y>>2]=(c[y>>2]|0)+-1}else wx(a,0,0);h=+(f|0)*0.0}else{o=(s|0)==0;p=o?m:l;o=o?u:j;if((u|0)<0|(u|0)==0&m>>>0<8){j=v;l=u;do{j=j<<4;w=m;m=OO(m|0,l|0,1,0)|0;v=l;l=F()|0}while((v|0)<0|(v|0)==0&w>>>0<7);m=j}else m=v;if((i|32|0)==112){j=Gy(a,g)|0;i=F()|0;if((j|0)==0&(i|0)==-2147483648){if(!g){wx(a,0,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=UO(p|0,o|0,2)|0;l=OO(l|0,F()|0,-32,-1)|0;l=OO(l|0,F()|0,j|0,i|0)|0;i=F()|0;if(!m){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=OO(l|0,i|0,-1,-1)|0;i=F()|0}while((j|0)>-1);n=h;m=j}else n=h;y=((b|0)<0)<<31>>31;e=PO(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=OO(e|0,F()|0,l|0,i|0)|0;e=F()|0;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=65;else{j=0;i=84;w=67}else{i=b;w=65}if((w|0)==65)if((i|0)<53){j=i;i=84-i|0;w=67}else{k=0.0;h=+(f|0)}if((w|0)==67){h=+(f|0);k=+Iy(+Hy(1.0,i),h);i=j}f=(m&1|0)==0&(n!=0.0&(i|0)<32);h=(f?0.0:n)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0)){f=ox()|0;c[f>>2]=68}h=+Ky(h,l)}while(0);return +h}function Fy(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0.0;I=zb;zb=zb+512|0;E=I;G=f+e|0;H=0-G|0;D=a+4|0;C=a+104|0;j=0;a:while(1){switch(b|0){case 46:{z=7;break a}case 48:break;default:{v=0;p=j;j=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;j=1}if((z|0)==7){b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48){j=0;b=0;while(1){j=OO(j|0,b|0,-1,-1)|0;o=F()|0;b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48)b=o;else{v=1;p=1;break}}}else{v=1;p=j;j=0;o=0}}c[E>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=E+496|0;w=0;l=0;s=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;j=p;o=n}else break c;else{p=OO(p|0,n|0,1,0)|0;n=F()|0;v=(b|0)!=48;if((l|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=E+(l<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;l=l+(y&1)|0;s=v?p:s;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=31;break b}}b=w;m=(y|0)!=0;z=39}else{w=0;l=0;s=0;m=p;p=0;n=0;z=31}while(0);do if((z|0)==31){A=(v|0)==0;j=A?p:j;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=39;break}else{b=w;z=41;break}m=Gy(a,h)|0;b=F()|0;if((m|0)==0&(b|0)==-2147483648){if(!h){wx(a,0,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}j=OO(m|0,b|0,j|0,o|0)|0;b=w;o=F()|0;z=43}while(0);if((z|0)==39)if(c[C>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m)z=43;else z=42}else z=41;if((z|0)==41)if(m)z=43;else z=42;do if((z|0)==42){H=ox()|0;c[H>>2]=28;wx(a,0,0);i=0.0}else if((z|0)==43){m=c[E>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((j|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&j>>>0>a>>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&j>>>0>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=E+(l<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}l=l+1|0}if((s|0)<9?(s|0)<=(j|0)&(j|0)<18:0){if((j|0)==9){i=+(g|0)*+((c[E>>2]|0)>>>0);break}if((j|0)<9){i=+(g|0)*+((c[E>>2]|0)>>>0)/+(c[12432+(8-j<<2)>>2]|0);break}a=e+27+(B(j,-3)|0)|0;b=c[E>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[12432+(j+-10<<2)>>2]|0);break}}b=(j|0)%9|0;if(!b)m=0;else{s=(j|0)>-1?b:b+9|0;o=c[12432+(8-s<<2)>>2]|0;if(l){p=1e9/(o|0)|0;n=0;m=0;b=0;do{C=E+(b<<2)|0;D=c[C>>2]|0;a=(D>>>0)/(o>>>0)|0;D=D-(B(a,o)|0)|0;a=a+n|0;c[C>>2]=a;n=B(p,D)|0;a=(b|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;b=b+1|0}while((b|0)!=(l|0));if(!n)b=l;else{c[E+(l<<2)>>2]=n;b=l+1|0}}else{m=0;b=0}l=b;j=9-s+j|0}b=0;d:while(1){v=(j|0)<18;w=(j|0)==18;x=E+(m<<2)|0;while(1){if(!v){if(!w)break d;if((c[x>>2]|0)>>>0>=9007199){j=18;break d}}n=0;y=l;l=l+127|0;while(1){p=l&127;o=E+(p<<2)|0;l=UO(c[o>>2]|0,0,29)|0;l=OO(l|0,F()|0,n|0,0)|0;n=F()|0;if(n>>>0>0|(n|0)==0&l>>>0>1e9){s=SO(l|0,n|0,1e9,0)|0;a=NO(s|0,F()|0,1e9,0)|0;l=PO(l|0,n|0,a|0,F()|0)|0;F()|0}else s=0;c[o>>2]=l;a=(p|0)==(m|0);o=(p|0)!=(y+127&127|0)|a?y:(l|0)==0?p:y;if(a)break;else{n=s;y=o;l=p+-1|0}}b=b+-29|0;if(!s)l=y;else break}m=m+127&127;l=o+127&127;n=E+((o+126&127)<<2)|0;if((m|0)==(o|0))c[n>>2]=c[n>>2]|c[E+(l<<2)>>2];else l=y;c[E+(m<<2)>>2]=s;j=j+9|0}e:while(1){w=l+1&127;x=E+((l+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){o=0;while(1){m=o+y&127;if((m|0)==(l|0)){z=92;break}m=c[E+(m<<2)>>2]|0;n=c[16276+(o<<2)>>2]|0;if(m>>>0>>0){z=92;break}if(m>>>0>n>>>0)break;if((o+1|0)>>>0<2)o=1;else{z=92;break}}if((z|0)==92?(z=0,p):0)break e;b=v+b|0;if((y|0)==(l|0))y=l;else break}p=(1<>>v;o=0;m=y;n=y;do{C=E+(n<<2)|0;D=c[C>>2]|0;a=(D>>>v)+o|0;c[C>>2]=a;o=B(D&p,s)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(l|0));if(o|0){if((w|0)!=(m|0))break;c[x>>2]=c[x>>2]|1}}c[E+(l<<2)>>2]=o;l=w}i=0.0;j=l;m=0;do{n=m+y&127;l=j+1&127;if((n|0)==(j|0)){c[E+(l+-1<<2)>>2]=0;j=l}i=i*1.0e9+ +((c[E+(n<<2)>>2]|0)>>>0);m=m+1|0}while((m|0)!=2);u=+(g|0);k=i*u;n=b+53|0;o=n-f|0;p=(o|0)<(e|0);m=p?((o|0)>0?o:0):e;if((m|0)<53){J=+Iy(+Hy(1.0,105-m|0),k);q=+Jy(k,+Hy(1.0,53-m|0));r=J;i=q;q=J+(k-q)}else{r=0.0;i=0.0;q=k}l=y+2&127;if((l|0)!=(j|0)){l=c[E+(l<<2)>>2]|0;do if(l>>>0>=5e8){if((l|0)!=5e8){i=u*.75+i;break}if((y+3&127|0)==(j|0)){i=u*.5+i;break}else{i=u*.75+i;break}}else{if((l|0)==0?(y+3&127|0)==(j|0):0)break;i=u*.25+i}while(0);if((53-m|0)>1?!(+Jy(i,1.0)!=0.0):0)k=i+1.0;else k=i}else k=i;i=q+k-r;do if((n&2147483647|0)>(-2-G|0)){G=!(+t(+i)>=9007199254740992.0);b=b+((G^1)&1)|0;i=G?i:i*.5;if((b+50|0)<=(H|0)?!(k!=0.0&(p&((m|0)!=(o|0)|G))):0)break;H=ox()|0;c[H>>2]=68}while(0);i=+Ky(i,b)}while(0);zb=I;return +i}function Gy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=a+4|0;e=c[i>>2]|0;j=a+104|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;f=d[e>>0]|0}else f=yx(a)|0;switch(f|0){case 43:case 45:{g=(f|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;f=e+-48|0;if((b|0)!=0&f>>>0>9)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;k=14}else k=12;break}default:{g=0;e=f;f=f+-48|0;k=12}}if((k|0)==12)if(f>>>0>9)k=14;else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&(f|0)<214748364);h=((f|0)<0)<<31>>31;if(b>>>0<10){do{l=NO(f|0,h|0,10,0)|0;b=F()|0;e=OO(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=OO(e|0,F()|0,l|0,b|0)|0;h=F()|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&((h|0)<21474836|(h|0)==21474836&f>>>0<2061584302));if(b>>>0<10){do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0}while((e+-48|0)>>>0<10);e=h}else e=h}else e=h;if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;j=(g|0)==0;i=PO(0,0,f|0,e|0)|0;l=F()|0;f=j?f:i;e=j?e:l}if((k|0)==14)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;f=0;e=-2147483648}E(e|0);return f|0}function Hy(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=UO(b+1023|0,0,52)|0;e=F()|0;c[h>>2]=d;c[h+4>>2]=e;return +(a*+g[h>>3])}function Iy(a,b){a=+a;b=+b;return +(+Ex(a,b))}function Jy(a,b){a=+a;b=+b;return +(+Ly(a,b))}function Ky(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function Ly(a,b){a=+a;b=+b;var d=0,e=0,f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g[h>>3]=a;j=c[h>>2]|0;l=c[h+4>>2]|0;g[h>>3]=b;n=c[h>>2]|0;o=c[h+4>>2]|0;e=TO(j|0,l|0,52)|0;F()|0;e=e&2047;m=TO(n|0,o|0,52)|0;F()|0;m=m&2047;p=l&-2147483648;i=UO(n|0,o|0,1)|0;k=F()|0;a:do if(!((i|0)==0&(k|0)==0)?(f=My(b)|0,d=(F()|0)&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=UO(j|0,l|0,1)|0;f=F()|0;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>i>>>0))return +((d|0)==(i|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=UO(j|0,l|0,12)|0;f=F()|0;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=UO(d|0,f|0,1)|0;f=F()|0}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;j=UO(j|0,l|0,1-e|0)|0;i=F()|0}else i=l&1048575|1048576;if(!m){f=UO(n|0,o|0,12)|0;k=F()|0;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=UO(f|0,k|0,1)|0;k=F()|0}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=UO(n|0,o|0,1-d|0)|0;m=d;l=F()|0}else l=o&1048575|1048576;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=j;d=i}j=UO(f|0,d|0,1)|0;i=F()|0;e=e+-1|0;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=i;f=j}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=UO(f|0,d|0,1)|0;d=F()|0;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=OO(f|0,d|0,0,-1048576)|0;d=F()|0;e=UO(e|0,0,52)|0;d=d|(F()|0);e=o|e}else{e=TO(f|0,d|0,1-e|0)|0;d=F()|0}c[h>>2]=e;c[h+4>>2]=d|p;b=+g[h>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function My(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function Ny(a){a=a|0;return 0}function Oy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Py(a,b){a=a|0;b=b|0;return -1|0}function Qy(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ny(_(91,e|0)|0)|0;zb=d;return b|0}function Sy(b,c){b=b|0;c=c|0;b=Ty(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Ty(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Qy(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=B(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Uy(){return}function Vy(a){a=a|0;if(Wy(a)|0)GO(a);return}function Wy(a){a=a|0;return (a|0)!=15980&((a|0)!=0&(a|0)!=55596)&1|0}function Xy(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;h=l;j=(g|0)==0?55624:g;g=c[j>>2]|0;a:do if(!e)if(!g)g=0;else k=19;else{i=(b|0)==0?h:b;if(!f)g=-2;else{if(!g){g=a[e>>0]|0;if(g<<24>>24>-1){c[i>>2]=g&255;g=g<<24>>24!=0&1;break}h=(Yy()|0)+188|0;g=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=g<<24>>24&57343;g=1;break}g=(g&255)+-194|0;if(g>>>0>50){k=19;break}g=c[5728+(g<<2)>>2]|0;h=f+-1|0;if(h){e=e+1|0;k=11}}else{h=f;k=11}b:do if((k|0)==11){b=d[e>>0]|0;m=b>>>3;if((m+-16|m+(g>>26))>>>0>7){k=19;break a}g=b+-128|g<<6;b=h+-1|0;if((g|0)<0)do{e=e+1|0;if(!b)break b;h=a[e>>0]|0;if((h&-64)<<24>>24!=-128){k=19;break a}g=(h&255)+-128|g<<6;b=b+-1|0}while((g|0)<0);c[j>>2]=0;c[i>>2]=g;g=f-b|0;break a}while(0);c[j>>2]=g;g=-2}}while(0);if((k|0)==19){c[j>>2]=0;g=ox()|0;c[g>>2]=25;g=-1}zb=l;return g|0}function Yy(){return ay()|0}function Zy(a,b){a=a|0;b=b|0;return Gx(a)|0}function _y(a,b){a=a|0;b=b|0;return my(a)|0}function $y(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+272|0;m=o;n=o+256|0;do if(!(a[d>>0]|0)){d=Ja(46731)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(12464+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(46738)|0;if(d|0?a[d>>0]|0:0)break;d=46743}while(0);e=0;a:while(1){switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0;if(e>>>0>=15){e=15;break}}f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)l=15;else{k=d;l=16}else{d=46743;l=15}if((l|0)==15)if(!(a[d+1>>0]|0))l=18;else{k=d;l=16}b:do if((l|0)==16)if((Fx(k,46743)|0)!=0?(Fx(k,46751)|0)!=0:0){d=c[13907]|0;if(d|0)do{if(!(Fx(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);U(55632);d=c[13907]|0;c:do if(d|0){while(1){if(!(Fx(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}$(55632);break b}while(0);d:do if(((c[13885]|0)==0?(g=Ja(46757)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=Ty(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){_O(m|0,f|0,g|0)|0;f=m+g|0;a[f>>0]=47;_O(f+1|0,k|0,e|0)|0;a[m+(j+g)>>0]=0;f=V(m|0,n|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){l=41;break d}}d=FO(28)|0;if(!d){Ry(f,c[n>>2]|0)|0;l=41;break}else{c[d>>2]=f;c[d+4>>2]=c[n>>2];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d;break}}else l=41;while(0);if((l|0)==41){d=FO(28)|0;if(d){c[d>>2]=c[3988];c[d+4>>2]=c[3989];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d}}$(55632);d=(b|0)==0&(d|0)==0?15952:d}else{d=k;l=18}while(0);do if((l|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=15952;break}d=0}while(0);zb=o;return d|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+32|0;i=j;a:do if(!(Wy(d)|0)){h=(d|0)!=0;f=0;g=0;do{e=1<>2]|0;else e=$y(g,(e|0)==0?57671:b)|0;f=f+((e|0)!=0&1)|0;c[i+(g<<2)>>2]=e;g=g+1|0}while((g|0)!=6);switch(f&2147483647|0){case 0:{d=55596;break a}case 1:{if((c[i>>2]|0)==15952){d=15980;break a}break}default:{}}}else{e=0;do{if(1<>2]=i}e=e+1|0}while((e|0)!=6)}while(0);zb=j;return d|0}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=Jx(a,b,d,g)|0;zb=f;return e|0}function cz(a,b){a=a|0;b=b|0;dz(a,b)|0;return a|0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function ez(a){a=a|0;var b=0,d=0;b=(fz()|0)+188|0;d=c[b>>2]|0;if(a|0)c[b>>2]=(a|0)==(-1|0)?55572:a;return ((d|0)==55572?-1:d)|0}function fz(){return ay()|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}return a|0}function hz(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function iz(a){a=+a;return ~~+bP(+a)|0}function jz(a){a=a|0;var b=0,c=0;b=(Qy(a)|0)+1|0;c=FO(b)|0;if(!c)a=0;else a=_O(c|0,a|0,b|0)|0;return a|0}function kz(a,b){a=a|0;b=b|0;var c=0;c=Qy(a)|0;return ((lz(a,1,c,b)|0)!=(c|0))<<31>>31|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=B(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Px(e)|0)==0;a=by(a,f,e)|0;if(!g)Qx(e)}else a=by(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function mz(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+132>>2]|0;a=a+128|0;if(b|0)c[b+128>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(nz()|0)+232|0;else a=a+132|0;c[a>>2]=b}return}function nz(){return ay()|0}function oz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(cy(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Jb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);zb=l;return f|0}function pz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(qz()|0)+188|0;b=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[5728+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);b=ox()|0;c[b>>2]=25;b=-1}while(0);zb=j;return b|0}function qz(){return ay()|0}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;if(Sy(46770,a[d>>0]|0)|0){g=sz(d)|0|32768;c[e>>2]=b;c[e+4>>2]=g;c[e+8>>2]=438;e=ny(Y(5,e|0)|0)|0;if((e|0)>=0){b=tz(e,d)|0;if(!b){aa(e|0)|0;b=0}}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}zb=f;return b|0}function sz(b){b=b|0;var c=0,d=0,e=0;d=(Sy(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Sy(b,120)|0)==0;d=e?d:d|128;b=(Sy(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function tz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+48|0;i=j+24|0;g=j+8|0;f=j;h=j+40|0;if(Sy(46770,a[d>>0]|0)|0){e=FO(1176)|0;if(!e)e=0;else{aP(e|0,0,144)|0;k=(Sy(d,43)|0)==0;d=a[d>>0]|0;if(k)c[e>>2]=d<<24>>24==114?8:4;if(d<<24>>24==97){c[f>>2]=b;c[f+4>>2]=3;d=X(221,f|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;X(221,g|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+152;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[i>>2]=b,c[i+4>>2]=21523,c[i+8>>2]=h,(Z(54,i|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=2;c[e+36>>2]=1;c[e+40>>2]=1;c[e+12>>2]=2;if(!(c[13884]|0))c[e+76>>2]=-1;uz(e)|0}}else{e=ox()|0;c[e>>2]=28;e=0}zb=j;return e|0}function uz(a){a=a|0;var b=0,d=0;b=vz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;wz();return a|0}function vz(){U(55640);return 55648}function wz(){$(55640);return}function xz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=Px(a)|0;else f=0;mz(a);g=(c[a>>2]&1|0)!=0;if(!g){e=vz()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;wz()}b=yz(a)|0;b=Gb[c[a+12>>2]&127](a)|0|b;d=c[a+96>>2]|0;if(d|0)GO(d);if(g){if(f|0)Qx(a)}else GO(a);return b|0}function yz(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=zz(a)|0;break}d=(Px(a)|0)==0;b=zz(a)|0;if(!d)Qx(a)}else{if(!(c[4004]|0))b=0;else b=yz(c[4004]|0)|0;a=vz()|0;a=c[a>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Px(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=zz(a)|0|b;if(d|0)Qx(a);a=c[a+56>>2]|0}while((a|0)!=0);wz()}while(0);return b|0}function zz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0){g=e-g|0;Kb[c[a+40>>2]&15](a,g,((g|0)<0)<<31>>31,1)|0;F()|0}c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function Az(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=Px(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)Qx(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;j=Xx(h,10,p)|0;i=(j|0)==0;j=i?p:1-o+j|0;j=j>>>0>>0?j:g;_O(e|0,h|0,j|0)|0;h=(c[k>>2]|0)+j|0;c[k>>2]=h;e=e+j|0;j=g-j|0;if(!(i&(j|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=Ax(f)|0;if((g|0)<0)break;else h=g}else{c[k>>2]=h+1;h=d[h>>0]|0}i=e+1|0;a[e>>0]=h;g=j+-1|0;if((h&255|0)==10|(g|0)==0){e=i;n=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)Qx(f)}return b|0}function Bz(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Dz(a,b,f)|0;zb=e;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+144|0;f=e;aP(f|0,0,144)|0;c[f+32>>2]=35;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+84>>2]=a;d=Fz(f,b,d)|0;zb=e;return d|0}function Ez(a,b,c){a=a|0;b=b|0;c=c|0;return Jz(a,b,c)|0}function Fz(e,h,i){e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=zb;zb=zb+288|0;K=Q+264|0;L=Q;M=Q+260|0;N=Q+272|0;if((c[e+76>>2]|0)>-1)P=Px(e)|0;else P=0;j=a[h>>0]|0;a:do if(j<<24>>24){B=e+4|0;C=e+104|0;D=e+120|0;E=e+8|0;G=L+10|0;H=L+33|0;I=L+46|0;J=L+94|0;A=K+4|0;m=h;h=0;k=0;l=j;j=0;u=0;v=0;b:while(1){c:do if(!(zx(l&255)|0)){n=(a[m>>0]|0)==37;d:do if(n){l=m+1|0;o=a[l>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{z=0;l=m+2|0;break}default:{if(Gx(o&255)|0?(a[m+2>>0]|0)==36:0){z=Gz(i,(d[l>>0]|0)+-48|0)|0;l=m+3|0;break e}y=(c[i>>2]|0)+(4-1)&~(4-1);z=c[y>>2]|0;c[i>>2]=y+4}}while(0);if(!(Gx(d[l>>0]|0)|0)){r=0;o=l}else{m=0;do{m=(m*10|0)+-48+(d[l>>0]|0)|0;l=l+1|0}while((Gx(d[l>>0]|0)|0)!=0);r=m;o=l}n=a[o>>0]|0;q=o+1|0;if(n<<24>>24==109){l=(z|0)!=0&1;k=0;m=q;o=o+2|0;n=a[q>>0]|0;j=0}else{l=0;m=o;o=q}switch(n<<24>>24){case 104:{y=(a[o>>0]|0)==104;n=y?-2:-1;m=y?m+2|0:o;break}case 108:{y=(a[o>>0]|0)==108;n=y?3:1;m=y?m+2|0:o;break}case 106:{n=3;m=o;break}case 116:case 122:{n=1;m=o;break}case 76:{n=2;m=o;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=143;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:n;q=s&255;switch(q<<24>>24){case 99:{y=(r|0)>1?r:1;break}case 91:{y=r;break}case 110:{Hz(z,t,u,v);n=u;o=v;break c}default:{wx(e,0,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=yx(e)|0}while((zx(n)|0)!=0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}x=D;y=n-(c[E>>2]|0)|0;u=OO(c[x>>2]|0,c[x+4>>2]|0,u|0,v|0)|0;u=OO(u|0,F()|0,y|0,((y|0)<0)<<31>>31|0)|0;y=r;v=F()|0}}x=((y|0)<0)<<31>>31;wx(e,y,x);o=c[B>>2]|0;n=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((yx(e)|0)<0){O=143;break b}n=c[C>>2]|0}if(n|0)c[B>>2]=(c[B>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{w=(s|0)==99;g:do if((s|16|0)==115){aP(L|0,-1,257)|0;a[L>>0]=0;if((s|0)==115){a[H>>0]=0;b[G>>1]=0;b[G+2>>1]=0;a[G+4>>0]=0}}else{s=m+1|0;r=(a[s>>0]|0)==94;n=r&1;m=r?m+2|0:s;aP(L|0,n|0,257)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{q=(n^1)&255;a[I>>0]=q;m=m+1|0;break}case 93:{q=(n^1)&255;a[J>>0]=q;m=m+1|0;break}default:q=(n^1)&255}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=143;break b}case 93:break g;case 45:{o=m+1|0;n=a[o>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=q;n=a[o>>0]|0}while(m>>>0<(n&255)>>>0);m=o}else m=o;break}default:{}}while(0);a[L+((n&255)+1)>>0]=q;m=m+1|0}}while(0);n=w?y+1|0:31;s=(t|0)==1;t=(l|0)!=0;i:do if(s){if(t){j=FO(n<<2)|0;if(!j){k=0;j=0;O=143;break b}}else j=z;c[K>>2]=0;c[A>>2]=0;k=0;j:while(1){q=(j|0)==0;do{k:while(1){o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=yx(e)|0;if(!(a[L+(o+1)>>0]|0))break j;a[N>>0]=o;switch(Xy(M,N,1,K)|0){case -1:{k=0;O=143;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(t&(k|0)==(n|0)));n=n<<1|1;o=IO(j,n<<2)|0;if(!o){k=0;O=143;break b}else j=o}if(!(Iz(K)|0)){k=0;O=143;break b}else{q=k;k=0;r=j}}else{if(t){k=FO(n)|0;if(!k){k=0;j=0;O=143;break b}j=0;while(1){q=j;do{j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){r=0;j=0;break i}r=q;q=q+1|0;a[k+r>>0]=j}while((q|0)!=(n|0));n=n<<1|1;o=IO(k,n)|0;if(!o){j=0;O=143;break b}else{j=q;k=o}}}if(!z)while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=0;k=0;r=0;j=0;break i}}k=0;while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=k;k=z;r=0;j=0;break i}a[z+k>>0]=j;k=k+1|0}}while(0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}o=D;n=n-(c[E>>2]|0)|0;n=OO(c[o>>2]|0,c[o+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0;if((n|0)==0&(o|0)==0)break b;if(!((n|0)==(y|0)&(o|0)==(x|0)|w^1))break b;do if(t)if(s){c[z>>2]=r;break}else{c[z>>2]=k;break}while(0);if(!w){if(r|0)c[r+(q<<2)>>2]=0;if(!k){k=0;break f}a[k+q>>0]=0}break}case 120:case 88:case 112:{n=16;O=131;break}case 111:{n=8;O=131;break}case 117:case 100:{n=10;O=131;break}case 105:{n=0;O=131;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Dy(e,t,0);y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if(z)switch(t|0){case 0:{f[z>>2]=p;break f}case 1:{g[z>>3]=p;break f}case 2:{g[z>>3]=p;break f}default:break f}break}default:{}}while(0);do if((O|0)==131){O=0;n=xx(e,n,0,-1,-1)|0;o=F()|0;y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if((z|0)!=0&(s|0)==112){c[z>>2]=n;break}else{Hz(z,t,n,o);break}}while(0);o=D;n=(c[B>>2]|0)-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=h+((z|0)!=0&1)|0;o=F()|0;break c}while(0);m=m+(n&1)|0;wx(e,0,0);l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0;if((l|0)!=(d[m>>0]|0)){O=23;break b}n=OO(u|0,v|0,1,0)|0;o=F()|0}else{while(1){l=m+1|0;if(!(zx(d[l>>0]|0)|0))break;else m=l}wx(e,0,0);do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0}while((zx(l)|0)!=0);if(!(c[C>>2]|0))l=c[B>>2]|0;else{l=(c[B>>2]|0)+-1|0;c[B>>2]=l}o=D;n=l-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0}while(0);m=m+1|0;l=a[m>>0]|0;if(!(l<<24>>24))break a;else{u=n;v=o}}if((O|0)==23){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((h|0)!=0|(l|0)>-1)break;else{l=0;h=k;O=144}}else if((O|0)==143)if(!h){h=k;O=144}if((O|0)==144){k=h;h=-1}if(l){GO(k);GO(j)}}else h=0;while(0);if(P|0)Qx(e);zb=Q;return h|0}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}zb=e;return a|0}function Hz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function Iz(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=Xx(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;_O(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;return Mz(a,b,((b|0)<0)<<31>>31,c)|0}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Kx(a,b,f)|0;zb=e;return d|0}function Mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+76>>2]|0)>-1){f=(Px(a)|0)==0;b=Nz(a,b,d,e)|0;if(!f)Qx(a)}else b=Nz(a,b,d,e)|0;return b|0}function Nz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((e|0)==1){g=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;b=PO(b|0,d|0,g|0,((g|0)<0)<<31>>31|0)|0;d=F()|0}f=a+20|0;g=a+28|0;if((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[g>>2]=0;c[f>>2]=0;Kb[c[a+40>>2]&15](a,b,d,e)|0;if((F()|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function Oz(a,b){a=a|0;b=b|0;return Pz(a,b,(Qy(a)|0)+1|0)|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return Xy(0,a,b,(c|0)==0?55652:c)|0}function Rz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+1040|0;k=n;l=n+1024|0;j=c[b>>2]|0;c[l>>2]=j;m=(a|0)!=0;h=m?e:256;i=m?a:k;g=j;a:do if((h|0)!=0&(j|0)!=0){e=0;j=i;while(1){a=d>>>2;i=a>>>0>=h>>>0;if(!(d>>>0>131|i)){i=j;break a}a=i?h:a;d=d-a|0;a=Sz(j,l,a,f)|0;if((a|0)==-1)break;i=(j|0)==(k|0);h=h-(i?0:a)|0;i=i?j:j+(a<<2)|0;e=a+e|0;g=c[l>>2]|0;if((h|0)!=0&(g|0)!=0)j=i;else break a}e=-1;i=j;h=0;g=c[l>>2]|0}else e=0;while(0);b:do if((g|0)!=0?(h|0)!=0&(d|0)!=0:0){while(1){a=Xy(i,g,d,f)|0;if((a+2|0)>>>0<3)break;g=(c[l>>2]|0)+a|0;c[l>>2]=g;d=d-a|0;h=h+-1|0;e=e+1|0;if(!((h|0)!=0&(d|0)!=0))break b;else i=i+4|0}switch(a|0){case -1:{e=a;break b}case 0:{c[l>>2]=0;break b}default:{c[f>>2]=0;break b}}}while(0);if(m)c[b>>2]=c[l>>2];zb=n;return e|0}function Sz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){j=h;g=f;l=26}else{c[g>>2]=0;k=f;j=h;l=48}else l=5;a:do if((l|0)==5){l=(Tz()|0)+188|0;g=(b|0)!=0;if(c[c[l>>2]>>2]|0)if(g){g=f;l=33;break}else{g=f;l=15;break}if(!g){f=Qy(h)|0;l=63;break}b:do if(f){g=f;while(1){i=a[h>>0]|0;if(!(i<<24>>24))break;h=h+1|0;c[b>>2]=i<<24>>24&57343;g=g+-1|0;if(!g)break b;else b=b+4|0}c[b>>2]=0;c[e>>2]=0;f=f-g|0;l=63;break a}while(0);c[e>>2]=h;l=63}while(0);c:while(1){d:do if((l|0)==15){while(1){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){l=c[h>>2]|0;i=l&255;if(!((l+-16843009|l)&-2139062144)){do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(!((i+-16843009|i)&-2139062144|0));i=i&255}}i=i&255;if((i+-1|0)>>>0>=127)break;g=g+-1|0;h=h+1|0}i=i+-194|0;if(i>>>0>50)l=57;else{i=c[5728+(i<<2)>>2]|0;j=h+1|0;l=26;continue c}}else if((l|0)==26){l=(d[j>>0]|0)>>>3;if((l+-16|l+(i>>26))>>>0>7){h=j;l=56}else{h=j+1|0;if(i&33554432){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+2|0;if(i&524288){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+3|0}}g=g+-1|0;l=15;continue c}}else if((l|0)==33){l=0;e:do if(g){while(1){i=d[h>>0]|0;j=i+-1|0;if(j>>>0<127){if((h&3|0)==0&g>>>0>4){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144|0){l=42;break}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];j=h+4|0;i=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=i;h=j}else{l=41;break}}if((l|0)==41){b=i;h=j;i=a[j>>0]|0}else if((l|0)==42)i=i&255;i=i&255;j=i+-1|0;l=44}}else l=44;if((l|0)==44){l=0;if(j>>>0>=127)break}h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g)break e;else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=57;break d}i=c[5728+(i<<2)>>2]|0;k=g;j=h+1|0;l=48;continue c}while(0);c[e>>2]=h;l=63;continue c}else if((l|0)==48){l=0;g=d[j>>0]|0;h=g>>>3;if((h+-16|h+(i>>26))>>>0>7){h=j;g=k;l=56}else{h=j+1|0;g=g+-128|i<<6;do if((g|0)<0){i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+2|0;g=i|g<<6;if((g|0)>=0)break;i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+3|0;g=i|g<<6;break}}h=ox()|0;c[h>>2]=25;h=j+-1|0;break d}while(0);c[b>>2]=g;b=b+4|0;g=k+-1|0;l=33;continue c}}else if((l|0)==63)return f|0;while(0);if((l|0)==56){h=h+-1|0;if(!i)l=57;else{f=b;l=61}}if((l|0)==57)if(!(a[h>>0]|0)){if(b|0){c[b>>2]=0;c[e>>2]=0}f=f-g|0;l=63;continue}else{f=b;l=61}if((l|0)==61){l=ox()|0;c[l>>2]=25;if(!f){f=-1;l=63;continue}}c[e>>2]=h;f=-1;l=63}return 0}function Tz(){return ay()|0}function Uz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+272|0;i=l;j=l+256|0;f=c[b>>2]|0;c[j>>2]=f;k=(a|0)!=0;g=k?e:256;h=k?a:i;e=f;a:do if((g|0)!=0&(f|0)!=0){f=0;a=e;while(1){e=d>>>0>=g>>>0;if(!(e|d>>>0>32)){e=a;break a}e=e?g:d;d=d-e|0;e=Vz(h,j,e,0)|0;if((e|0)==-1)break;a=(h|0)==(i|0);g=g-(a?0:e)|0;h=a?h:h+e|0;f=e+f|0;e=c[j>>2]|0;if((g|0)!=0&(e|0)!=0)a=e;else break a}f=-1;g=0;e=c[j>>2]|0}else f=0;while(0);b:do if((e|0)!=0?(g|0)!=0&(d|0)!=0:0){while(1){a=_x(h,c[e>>2]|0,0)|0;if((a+1|0)>>>0<2)break;e=(c[j>>2]|0)+4|0;c[j>>2]=e;d=d+-1|0;g=g-a|0;f=a+f|0;if(!((g|0)!=0&(d|0)!=0))break b;else h=h+a|0}if(!a)c[j>>2]=0;else f=-1}while(0);if(k)c[b>>2]=c[j>>2];zb=l;return f|0}function Vz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;a:do if(!b){e=c[d>>2]|0;f=c[e>>2]|0;if(!f)e=0;else{b=e;e=0;do{if(f>>>0>127){f=_x(i,f,0)|0;if((f|0)==-1){e=-1;break a}}else f=1;e=f+e|0;b=b+4|0;f=c[b>>2]|0}while((f|0)!=0)}}else{b:do if(e>>>0>3){f=e;g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h)break;h=_x(b,h,0)|0;if((h|0)==-1){e=-1;break a}b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(f>>>0<=3)break b}a[b>>0]=0;c[d>>2]=0;e=e-f|0;break a}else f=e;while(0);if(f){g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){g=20;break}h=_x(i,h,0)|0;if((h|0)==-1){e=-1;break a}if(f>>>0>>0){g=23;break}_x(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f)break a}if((g|0)==20){a[b>>0]=0;c[d>>2]=0;e=e-f|0;break}else if((g|0)==23){e=e-f|0;break}}}while(0);zb=j;return e|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;Xz(a,b,c)|0;return a|0}function Xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);aP(b|0,0,e|0)|0;return b|0}function Yz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{i=e&255;h=f+(i>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(i&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{i=e&255;if(!(c[f+(i>>>5<<2)>>2]&1<<(i&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);zb=g;return d|0}function Zz(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(Px(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=Ax(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=Ax(a)|0;break}}while(0);return b|0}function _z(a){a=a|0;var b=0;b=54792;c[b>>2]=a+-1;c[b+4>>2]=0;return}function $z(){var a=0,b=0,d=0;b=54792;b=NO(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=OO(b|0,F()|0,1,0)|0;a=F()|0;d=54792;c[d>>2]=b;c[d+4>>2]=a;a=TO(b|0,a|0,33)|0;F()|0;return a|0}function aA(a,b){a=a|0;b=b|0;cz(a+(Qy(a)|0)|0,b)|0;return a|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=zb;zb=zb+16|0;e=h;c[e>>2]=c[d>>2];e=Jx(0,0,b,e)|0;if((e|0)>=0?(f=e+1|0,g=FO(f)|0,c[a>>2]=g,(g|0)!=0):0)a=Jx(g,f,b,d)|0;else a=-1;zb=h;return a|0}function cA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if((b|0)!=-1){if((c[d+76>>2]|0)>-1)g=Px(d)|0;else g=0;h=d+4|0;e=c[h>>2]|0;if(!e){Bx(d)|0;e=c[h>>2]|0;if(e|0){f=e;i=6}}else{f=e;i=6}if((i|0)==6?f>>>0>((c[d+44>>2]|0)+-8|0)>>>0:0){i=f+-1|0;c[h>>2]=i;a[i>>0]=b;c[d>>2]=c[d>>2]&-17;if(!g)break;Qx(d);break}if(g){Qx(d);b=-1}else b=-1}else b=-1;while(0);return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;if((c[a+76>>2]|0)>-1){e=(Px(a)|0)==0;d=eA(a)|0;b=F()|0;if(e)a=d;else{Qx(a);a=d}}else{a=eA(a)|0;b=F()|0}E(b|0);return a|0}function eA(a){a=a|0;var b=0,d=0,e=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Kb[c[a+40>>2]&15](a,0,0,b)|0;d=F()|0;if((d|0)>=0){e=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;e=PO(b|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=F()|0;b=(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;b=OO(e|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;d=F()|0}E(d|0);return b|0}function fA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Px(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=oz(d,b)|0;Qx(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=oz(d,b)|0}while(0);return e|0}function gA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=B(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=Px(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;_O(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(Bx(f)|0)break;h=Jb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)Qx(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)Qx(f);return e|0}function hA(a){a=a|0;var b=0;a=dA(a)|0;b=F()|0;if((b|0)>0|(b|0)==0&a>>>0>2147483647){a=ox()|0;c[a>>2]=61;a=-1}return a|0}function iA(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Qx(a)}else{Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function jA(a,b){a=a|0;b=b|0;return +(+kA(a,b,1))}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,i=0;g=zb;zb=zb+144|0;e=g;aP(e|0,0,144)|0;i=e+4|0;c[i>>2]=a;h=e+8|0;c[h>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;wx(e,0,0);f=+Dy(e,d,1);e=e+120|0;d=(c[i>>2]|0)-(c[h>>2]|0)|0;d=OO(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;e=F()|0;if(b|0)c[b>>2]=(d|0)==0&(e|0)==0?a:a+d|0;zb=g;return +f}function lA(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(zx(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(Gx(b)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Gx(a[c>>0]|0)|0)!=0)}return ((g|0)==0?0-b|0:b)|0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=zb;zb=zb+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){aP(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ty(b,e<<24>>24)|0;zb=h;return e-b|0}function nA(a,b){a=a|0;b=b|0;return +(+kA(a,b,0))}function oA(a,b){a=a|0;b=b|0;return +(+kA(a,b,2))}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+nA(a,b))}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+jA(a,b))}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+oA(a,b))}function sA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Qy(b)|0)|0;a:do if(d)while(1){g=a[c>>0]|0;if(!(g<<24>>24))break a;d=d+-1|0;f=e+1|0;a[e>>0]=g;if(!d){e=f;break}else{c=c+1|0;e=f}}while(0);a[e>>0]=0;return b|0}function tA(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[13914]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(Yz(b,d)|0)|0;if(!(a[b>>0]|0)){c[13914]=0;b=0;break}d=b+(mA(b,d)|0)|0;c[13914]=d;if(!(a[d>>0]|0)){c[13914]=0;break}else{c[13914]=d+1;a[d>>0]=0;break}}while(0);return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}return a|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(a-b>>2>>>0>=d>>>0){if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}}else do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}function wA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;e=zb;zb=zb+48|0;g=e+32|0;b=e+24|0;h=e+16|0;f=e;e=e+36|0;a=xA()|0;if(a|0?(d=c[a>>2]|0,d|0):0){a=d+48|0;if(!(yA(a)|0)){c[b>>2]=46910;AA(46860,b)}b=zA(a)|0;if((b|0)==1126902529&(F()|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Jb[c[(c[3470]|0)+16>>2]&63](13880,d,e)|0){h=c[e>>2]|0;h=Gb[c[(c[h>>2]|0)+8>>2]&127](h)|0;c[f>>2]=46910;c[f+4>>2]=a;c[f+8>>2]=h;AA(46774,f)}else{c[h>>2]=46910;c[h+4>>2]=a;AA(46819,h)}}AA(46898,g)}function xA(){return 55660}function yA(a){a=a|0;return 0}function zA(a){a=a|0;E(0);return 0}function AA(a,b){a=a|0;b=b|0;var d=0;d=zb;zb=zb+16|0;c[d>>2]=b;b=c[4001]|0;Kx(b,a,d)|0;fA(10,b)|0;ua()}function BA(a){a=a|0;return}function CA(a){a=a|0;BA(a);SA(a);return}function DA(a){a=a|0;return}function EA(a){a=a|0;return}function FA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+64|0;j=l;if(!(JA(d,e,0)|0))if((e|0)!=0?(k=NA(e,13904,13888,0)|0,(k|0)!=0):0){c[j>>2]=k;c[j+4>>2]=0;c[j+8>>2]=d;c[j+12>>2]=-1;d=j+16|0;e=j+24|0;g=j+48|0;h=d;i=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));b[d+36>>1]=0;a[d+38>>0]=0;c[g>>2]=1;Xb[c[(c[k>>2]|0)+28>>2]&31](k,j,c[f>>2]|0,1);if((c[e>>2]|0)==1){c[f>>2]=c[d>>2];d=1}else d=0}else d=0;else d=1;zb=l;return d|0}function GA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);return}function HA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(JA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}else LA(0,d,e,f);while(0);return}function IA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;if(d)a=(Fx(c[a+4>>2]|0,c[b+4>>2]|0)|0)==0;else a=(a|0)==(b|0);return a|0}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[b+4>>2]|0)==(d|0)?(f=b+28|0,(c[f>>2]|0)!=1):0)c[f>>2]=e;return}function MA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((f|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if((b|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function NA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;n=p;m=c[d>>2]|0;o=d+(c[m+-8>>2]|0)|0;m=c[m+-4>>2]|0;c[n>>2]=f;c[n+4>>2]=d;c[n+8>>2]=e;c[n+12>>2]=g;d=n+16|0;e=n+20|0;g=n+24|0;h=n+28|0;i=n+32|0;j=n+40|0;k=d;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[d+36>>1]=0;a[d+38>>0]=0;a:do if(JA(m,f,0)|0){c[n+48>>2]=1;Zb[c[(c[m>>2]|0)+20>>2]&7](m,n,o,o,1,0);d=(c[g>>2]|0)==1?o:0}else{Yb[c[(c[m>>2]|0)+24>>2]&63](m,n,o,1,0);switch(c[n+36>>2]|0){case 0:{d=(c[j>>2]|0)==1&(c[h>>2]|0)==1&(c[i>>2]|0)==1?c[e>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((c[g>>2]|0)!=1?!((c[j>>2]|0)==0&(c[h>>2]|0)==1&(c[i>>2]|0)==1):0){d=0;break}d=c[d>>2]|0}while(0);zb=p;return d|0}function OA(a){a=a|0;BA(a);SA(a);return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);else{a=c[a+8>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e,f,g)}return}function QA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){i=c[b+8>>2]|0;Yb[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;do if((c[f>>2]|0)!=4){h=d+52|0;a[h>>0]=0;j=d+53|0;a[j>>0]=0;b=c[b+8>>2]|0;Zb[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if(a[j>>0]|0){j=(a[h>>0]|0)==0;c[f>>2]=3;if(j)break;else break a}else{c[f>>2]=4;break}}while(0);c[i>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function RA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);else{a=c[a+8>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d,e)}return}function SA(a){a=a|0;GO(a);return}function TA(a){a=a|0;return}function UA(){var a=0,b=0;a=xA()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?yA(b+48|0)|0:0)VA(c[b+12>>2]|0);VA(WA()|0)}function VA(a){a=a|0;var b=0;b=zb;zb=zb+16|0;Rb[a&1]();AA(47049,b)}function WA(){return 1}function XA(a){a=a|0;return}function YA(a){a=a|0;c[a>>2]=16372;aB(a+4|0);return}function ZA(a){a=a|0;YA(a);SA(a);return}function _A(a){a=a|0;return $A(a+4|0)|0}function $A(a){a=a|0;return c[a>>2]|0}function aB(a){a=a|0;var b=0,d=0;if(bB(a)|0?(b=cB(c[a>>2]|0)|0,d=b+8|0,a=c[d>>2]|0,c[d>>2]=a+-1,(a|0)<1):0)SA(b);return}function bB(a){a=a|0;return 1}function cB(a){a=a|0;return a+-12|0}function dB(a){a=a|0;YA(a);SA(a);return}function eB(a){a=a|0;BA(a);SA(a);return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;return JA(a,b,0)|0}function gB(a){a=a|0;BA(a);SA(a);return}function hB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(JA(b,c[d+8>>2]|0,h)|0)MA(0,d,e,f,g);else{r=d+52|0;j=a[r>>0]|0;q=d+53|0;i=a[q>>0]|0;p=c[b+12>>2]|0;m=b+16+(p<<3)|0;a[r>>0]=0;a[q>>0]=0;lB(b+16|0,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;a:do if((p|0)>1){n=d+24|0;o=b+8|0;p=d+54|0;b=b+24|0;do{i=i&1;j=j&1;if(a[p>>0]|0)break a;if(!(k<<24>>24)){if(l<<24>>24?(c[o>>2]&1|0)==0:0)break a}else{if((c[n>>2]|0)==1)break a;if(!(c[o>>2]&2))break a}a[r>>0]=0;a[q>>0]=0;lB(b,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;b=b+8|0}while(b>>>0>>0)}while(0);a[r>>0]=j<<24>>24!=0&1;a[q>>0]=i<<24>>24!=0&1}return}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){p=c[b+12>>2]|0;k=b+16+(p<<3)|0;mB(b+16|0,d,e,f,g);h=b+24|0;if((p|0)<=1)break;b=c[b+8>>2]|0;if((b&2|0)==0?(j=d+36|0,(c[j>>2]|0)!=1):0){if(!(b&1)){b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[j>>2]|0)==1)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+24|0;i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[j>>2]|0)==1?(c[b>>2]|0)==1:0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+54|0;while(1){if(a[b>>0]|0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;o=d+44|0;if((c[o>>2]|0)!=4){j=b+16+(c[b+12>>2]<<3)|0;k=d+52|0;f=d+53|0;l=d+54|0;m=b+8|0;n=d+24|0;h=0;i=b+16|0;b=0;b:while(1){if(i>>>0>=j>>>0){i=18;break}a[k>>0]=0;a[f>>0]=0;lB(i,d,e,e,1,g);if(a[l>>0]|0){i=18;break}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[m>>2]&1)){i=19;break b}else{b=1;break}if((c[n>>2]|0)==1){h=1;i=19;break b}if(!(c[m>>2]&2)){h=1;i=19;break b}else{h=1;b=1}}while(0);i=i+8|0}if((i|0)==18)if(b)i=19;else b=4;if((i|0)==19)b=3;c[o>>2]=b;if(h&1)break}c[p>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function jB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if(!(JA(b,c[d+8>>2]|0,0)|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;kB(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{kB(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else KA(0,d,e,f);while(0);return}function kB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;if(d){f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0}else f=0;a=c[a>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d+f|0,(g&2|0)==0?2:e);return}function lB(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e+h|0,(i&2|0)==0?2:f,g);return} +function $b(a){a=a|0;var b=0;b=zb;zb=zb+a|0;zb=zb+15&-16;return b|0}function ac(){return zb|0}function bc(a){a=a|0;zb=a}function cc(a,b){a=a|0;b=b|0;zb=a;Ab=b}function dc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0))b[k>>1]=0;else{a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function ec(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0))b[l>>1]=0;else{a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function fc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0))b[r>>1]=0;else{l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function gc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0)){a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}else b[k>>1]=0;while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function hc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0)){a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}else b[l>>1]=0;while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function ic(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0)){l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}else b[r>>1]=0;while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function jc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){b[e>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function kc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){b[e>>1]=0;a[t>>0]=0}else{a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function lc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){b[t>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function mc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}else{b[e>>1]=0;a[s>>0]=0}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function nc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}else{b[e>>1]=0;a[t>>0]=0}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function oc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}else{b[t>>1]=0;a[s>>0]=0}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function pc(a){a=a|0;return qc(a+8|0)|0}function qc(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(4)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=Ee(a)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function rc(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{Fe(b)|0;GO(c[a>>2]|0);c[a>>2]=0;a=0}return a|0}function sc(a){a=a|0;var b=0,d=0,e=0;d=zb;zb=zb+16|0;b=FO(7062432)|0;if(!b){Ue(0,3,41858,d);Ea(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;g[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=FO(B(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Ue(0,3,41858,d+8|0);Ea(1)}else{c[b+7062384>>2]=0;tc(b,0)|0;c[b+7062388>>2]=-1;uc(b,0)|0;vc(b,7)|0;zb=d;return b|0}return 0}function tc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;GO(c[d>>2]|0);c[d>>2]=0;d=0;break}b=FO(B(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Ue(0,3,41858,e);Ea(1)}else d=0}else d=0;else d=-1;while(0);zb=f;return d|0}function uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;f=i;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e|0){Zc(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{f=Yc(c[a+36>>2]|0,c[a+40>>2]|0)|0;c[d>>2]=f;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:break;default:{Ue(0,3,19740,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[16+(b<<2)>>2];Ue(0,3,19814,h);b=0}else b=0}else b=0}else b=-1;zb=i;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062392>>2]=b;c[a+7062396>>2]=0;a=0}return a|0}function wc(a){a=a|0;var b=0,d=0;if(!a)a=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d|0){Zc(d);c[b>>2]=0}GO(c[a+4834144>>2]|0);GO(c[a+4834148>>2]|0);GO(a);a=0}return a|0}function xc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function yc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function zc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ac(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Bc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Cc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Dc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Ec(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Fc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function Gc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function Hc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function Ic(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function Jc(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){g[a+7062416>>3]=b;a=0}else a=-1;return a|0}function Kc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{g[b>>3]=+g[a+7062416>>3];a=0}return a|0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;a:do if(a){d=a+4|0;if((c[d>>2]|0)!=(b|0)){if(b>>>0>=15){c[e>>2]=b;Ue(0,3,19909,e);a=-1;break}c[d>>2]=b;d=zd(b)|0;c[a+8>>2]=d;a=a+24|0;d=c[a>>2]|0;if(!(28704>>>(b&32767)&1))switch(d|0){case 1:{c[a>>2]=4;a=0;break a}case 4:{c[a>>2]=3;a=0;break a}default:{a=0;break a}}else switch(d|0){case 0:{c[a>>2]=1;a=0;break a}case 3:{c[a>>2]=4;a=0;break a}default:{a=0;break a}}}else a=0}else a=-1;while(0);zb=f;return a|0}function Mc(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0;P=zb;zb=zb+64|0;L=P+32|0;F=P+24|0;y=P;J=P+52|0;C=P+40|0;a:do if((a|0)!=0&(b|0)!=0){O=a+44|0;c[O>>2]=0;K=a+7062388|0;e=c[K>>2]|0;b:do if((e|0)==4){H=a+7062396|0;e=c[H>>2]|0;do if((e|0)>0)c[H>>2]=e+-1;else{B=a+16|0;D=c[B>>2]|0;E=a+7062400|0;z=(c[E>>2]|0)+D|0;z=(z|0)<255?z:255;c[J>>2]=z;G=a+7062404|0;A=D-(c[G>>2]|0)|0;A=(A|0)>0?A:0;c[J+4>>2]=A;c[J+8>>2]=D;f=b+12|0;h=a+36|0;i=a+40|0;j=a+12|0;k=a+20|0;n=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+4|0;s=a+7062384|0;t=a+24|0;u=a+32|0;v=a+7062416|0;w=a+48|0;x=a+7062424|0;e=0;while(1){if(e>>>0>=3)break;if((ed(c[f>>2]|0,c[h>>2]|0,c[i>>2]|0,c[a>>2]|0,c[j>>2]|0,c[J+(e<<2)>>2]|0,c[k>>2]|0,n,0)|0)<0){M=29;break}if((Oc(c[h>>2]|0,c[i>>2]|0,n,c[k>>2]|0,1e6,70,1.0,p,q)|0)<0){M=29;break}if((Tc(c[b>>2]|0,c[h>>2]|0,c[i>>2]|0,c[r>>2]|0,p,c[q>>2]|0,c[s>>2]|0,c[k>>2]|0,c[t>>2]|0,(c[u>>2]|0)+184|0,+g[v>>3],w,O,c[x>>2]|0)|0)<0){M=29;break}c[C+(e<<2)>>2]=c[O>>2];e=e+1|0}if((M|0)==29){e=-1;break a}if((c[a>>2]|0)==1){x=c[C+4>>2]|0;h=c[C+8>>2]|0;f=c[C>>2]|0;c[y>>2]=A;c[y+4>>2]=x;c[y+8>>2]=D;c[y+12>>2]=h;c[y+16>>2]=z;c[y+20>>2]=f;Ue(0,3,19958,y)}else{f=c[C>>2]|0;h=c[C+8>>2]|0}e=c[C+4>>2]|0;if((f|0)>(h|0)|(e|0)>(h|0)){f=(f|0)<(e|0)?A:z;c[B>>2]=f;e=f-D|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[G>>2]=e;if((c[a>>2]|0)==1){c[F>>2]=f;Ue(0,3,20034,F);c[H>>2]=c[a+7062392>>2];break}else{c[H>>2]=c[a+7062392>>2];break}}e=c[E>>2]|0;f=c[G>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+D|0)>254){c[E>>2]=1;e=1}if((D|0)<=(e|0))c[G>>2]=1;c[H>>2]=c[a+7062392>>2];break b}while(0);h=c[K>>2]|0;M=33}else{h=e;M=33}while(0);if((M|0)==33){c:do switch(h|0){case 3:{f=a+7062408|0;h=b+12|0;e=dd(c[f>>2]|0,c[h>>2]|0,9,-7)|0;if((e|0)<0)break a;e=c[f>>2]|0;k=a+4834144|0;e=ed(c[h>>2]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[a>>2]|0,c[a+12>>2]|0,0,0,k,c[e>>2]|0)|0;if((e|0)<0)break a;e=a+36|0;f=a+40|0;h=a+20|0;break}case 2:case 1:{i=a+7062396|0;e=c[i>>2]|0;if((e|0)>0){c[i>>2]=e+-1;M=48;break c}e=c[a+7062408>>2]|0;f=c[b+12>>2]|0;if((h|0)==1)e=bd(e,f,J)|0;else e=cd(e,f,J)|0;if((e|0)<0)break a;e=a+16|0;if((c[a>>2]|0)==1?(I=d[J>>0]|0,(c[e>>2]|0)!=(I|0)):0){c[L>>2]=(c[K>>2]|0)==1?20086:20093;c[L+4>>2]=I;Ue(0,3,20098,L)}c[e>>2]=d[J>>0];c[i>>2]=c[a+7062392>>2];M=48;break}default:M=48}while(0);if((M|0)==48){e=a+36|0;f=a+40|0;h=a+20|0;k=a+4834144|0;if((ed(c[b+12>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[h>>2]|0,k,0)|0)<0){e=-1;break}}i=a+15416|0;j=a+15408|0;if((Oc(c[e>>2]|0,c[f>>2]|0,k,c[h>>2]|0,1e6,70,1.0,i,j)|0)<0){e=-1;break}if((Tc(c[b>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a+4>>2]|0,i,c[j>>2]|0,c[a+7062384>>2]|0,c[h>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+g[a+7062416>>3],a+48|0,O,c[a+7062424>>2]|0)|0)<0){e=-1;break}}s=a+28|0;if((c[s>>2]|0)==1){Nc(a);e=0;break}t=a+4818296|0;q=c[t>>2]|0;r=a+24|0;p=0;while(1){if((p|0)>=(q|0))break;h=c[O>>2]|0;i=a+4818304+(p*264|0)|0;j=a+4818304+(p*264|0)+56|0;k=a+4818304+(p*264|0)+64|0;f=0;n=-1;l=.5;while(1){if((f|0)>=(h|0))break;m=+(c[a+48+(f<<8)>>2]|0);o=+(c[i>>2]|0)/m;if(!(o<.7|o>1.43)?(o=+g[a+48+(f<<8)+56>>3]-+g[j>>3],N=+g[a+48+(f<<8)+64>>3]-+g[k>>3],N=(o*o+N*N)/m,N-1){k=c[r>>2]|0;switch(k|0){case 2:case 1:case 0:break;case 4:case 3:{f=a+48+(n<<8)+40|0;m=+g[a+4818304+(p*264|0)+40>>3];if(!(+g[f>>3]>3];if(!(+g[e>>3]>3]}g[f>>3]=m;c[a+48+(n<<8)+8>>2]=c[a+4818304+(p*264|0)+8>>2];g[e>>3]=l;c[a+48+(n<<8)+12>>2]=c[a+4818304+(p*264|0)+12>>2];f=0;h=-1;m=1.0e8;while(1){if((f|0)==4)break;e=0;l=0.0;while(1){if((e|0)==4)break;b=e+f&3;Q=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];o=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;l=l+(Q*Q+o*o)}b=l>2]=(b+(c[a+4818304+(p*264|0)+20>>2]|0)|0)%4|0;c[a+48+(n<<8)+24>>2]=(b+(c[a+4818304+(p*264|0)+24>>2]|0)|0)%4|0;break d}default:{e=-1;break a}}e=a+48+(n<<8)+32|0;o=+g[a+4818304+(p*264|0)+32>>3];if(+g[e>>3]>3]=o;i=c[a+4818304+(p*264|0)+4>>2]|0;c[a+48+(n<<8)+4>>2]=i;j=a+4818304+(p*264|0)+16|0;f=-1;l=1.0e8;h=0;while(1){if((h|0)==4)break;e=0;m=0.0;while(1){if((e|0)==4)break;b=e+h&3;R=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];Q=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;m=m+(R*R+Q*Q)}if(m>2]|0)|0)%4|0;l=m}else e=f;f=e;h=h+1|0}c[a+48+(n<<8)+16>>2]=f;if(k>>>0<2){c[a+48+(n<<8)+8>>2]=i;g[a+48+(n<<8)+40>>3]=o;c[a+48+(n<<8)+20>>2]=f;break}else{c[a+48+(n<<8)+12>>2]=i;g[a+48+(n<<8)+48>>3]=o;c[a+48+(n<<8)+24>>2]=f;break}}}while(0);p=p+1|0}Nc(a);f=0;e=0;while(1){if((f|0)>=(c[t>>2]|0))break;M=a+4818304+(f*264|0)+256|0;b=c[M>>2]|0;c[M>>2]=b+1;if((b|0)<3){if((f|0)!=(e|0))_O(a+4818304+(e*264|0)|0,a+4818304+(f*264|0)|0,264)|0;e=e+1|0}f=f+1|0}c[t>>2]=e;f=c[O>>2]|0;k=0;while(1){if((k|0)>=(f|0))break;j=a+48+(k<<8)|0;h=c[a+48+(k<<8)+4>>2]|0;if((h|0)>=0){i=0;while(1){if((i|0)>=(e|0))break;if((c[a+4818304+(i*264|0)+4>>2]|0)==(h|0))break;i=i+1|0}if((i|0)==(e|0)){if((e|0)==60)break;e=e+1|0;c[t>>2]=e}_O(a+4818304+(i*264|0)|0,j|0,256)|0;c[a+4818304+(i*264|0)+256>>2]=1}k=k+1|0}if((c[s>>2]|0)==2)e=0;else{n=0;while(1){if((n|0)>=(e|0)){e=0;break a}i=a+4818304+(n*264|0)|0;j=a+4818304+(n*264|0)+56|0;k=a+4818304+(n*264|0)+64|0;h=0;while(1){if((h|0)>=(f|0))break;l=+(c[a+48+(h<<8)>>2]|0);R=+(c[i>>2]|0)/l;if(!(R<.7|R>1.43)?(Q=+g[a+48+(h<<8)+56>>3]-+g[j>>3],R=+g[a+48+(h<<8)+64>>3]-+g[k>>3],(Q*Q+R*R)/l<.5):0)break;h=h+1|0}if((h|0)==(f|0)){_O(a+48+(f<<8)|0,a+4818304+(n*264|0)|0,256)|0;f=f+1|0;c[O>>2]=f;e=c[t>>2]|0}n=n+1|0}}}else e=-1;while(0);zb=P;return e|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0;a:do switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+8>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}case 2:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+12>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}default:{f=c[a+44>>2]|0;e=0;while(1){if((e|0)>=(f|0))break a;b=a+48+(e<<8)+8|0;if((c[b>>2]|0)>-1?+g[a+48+(e<<8)+40>>3]<.5:0){c[b>>2]=-1;b=0}else b=1;d=a+48+(e<<8)+12|0;if(((c[d>>2]|0)>-1?+g[a+48+(e<<8)+48>>3]<.5:0)?(c[d>>2]=-1,(b|0)==0):0)c[a+48+(e<<8)+236>>2]=6;e=e+1|0}}}while(0);return}function Oc(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;r=(e|0)==1;if(r){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;h=(h|0)/4|0}c[k>>2]=0;n=d+8|0;o=a+-2|0;b=b+-2|0;l=d+1179664|0;e=0;while(1){if((e|0)>=(c[n>>2]|0)){q=5;break}m=d+12+(e<<2)|0;s=c[m>>2]|0;if(((((((!((s|0)<(h|0)|(s|0)>(f|0))?(p=d+131084+(e<<4)|0,(c[p>>2]|0)!=1):0)?(c[d+131084+(e<<4)+4>>2]|0)!=(o|0):0)?(c[d+131084+(e<<4)+8>>2]|0)!=1:0)?(c[d+131084+(e<<4)+12>>2]|0)!=(b|0):0)?(Pc(c[d>>2]|0,a,0,l,e+1|0,p,j+((c[k>>2]|0)*80048|0)|0)|0)>=0:0)?(Qc(c[m>>2]|0,j+((c[k>>2]|0)*80048|0)|0,i)|0)>=0:0)?(c[j+((c[k>>2]|0)*80048|0)>>2]=c[m>>2],s=c[k>>2]|0,g[j+(s*80048|0)+8>>3]=+g[d+655376+(e<<4)>>3],g[j+(s*80048|0)+16>>3]=+g[d+655376+(e<<4)+8>>3],s=s+1|0,c[k>>2]=s,(s|0)==60):0){e=60;break}e=e+1|0}if((q|0)==5)e=c[k>>2]|0;a=0;while(1){if((a|0)>=(e|0))break;l=a+1|0;m=j+(a*80048|0)+8|0;n=j+(a*80048|0)+16|0;h=j+(a*80048|0)|0;f=l;while(1){if((f|0)>=(e|0))break;t=+g[m>>3]-+g[j+(f*80048|0)+8>>3];i=+g[n>>3]-+g[j+(f*80048|0)+16>>3];i=t*t+i*i;e=c[h>>2]|0;a=j+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(i<+((e|0)/4|0|0))c[a>>2]=0}else if(i<+((b|0)/4|0|0))c[h>>2]=0;f=f+1|0;e=c[k>>2]|0}a=l}f=0;while(1){if((f|0)>=(e|0))break;if(!(c[j+(f*80048|0)>>2]|0)){b=f;while(1){a=b+1|0;if((a|0)>=(e|0))break;_O(j+(b*80048|0)|0,j+(a*80048|0)|0,80048)|0;b=a;e=c[k>>2]|0}e=e+-1|0;c[k>>2]=e}f=f+1|0}a:do if(r){b=0;while(1){if((b|0)>=(e|0))break a;c[j>>2]=c[j>>2]<<2;a=j+8|0;g[a>>3]=+g[a>>3]*2.0;a=j+16|0;g[a>>3]=+g[a>>3]*2.0;a=c[j+24>>2]|0;e=0;while(1){if((e|0)>=(a|0))break;s=j+28+(e<<2)|0;c[s>>2]=c[s>>2]<<1;s=j+40028+(e<<2)|0;c[s>>2]=c[s>>2]<<1;e=e+1|0}j=j+80048|0;b=b+1|0;e=c[k>>2]|0}}while(0);return 0}function Pc(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=zb;zb=zb+80032|0;n=w+80016|0;m=w+80008|0;j=w+8e4|0;u=w+4e4|0;v=w;s=c[h+8>>2]|0;t=B(s,d)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;r=e;e=a+(t+e<<1)|0;while(1){if((r|0)>(h|0)){t=7;break}t=b[e>>1]|0;if(t<<16>>16>0?(c[f+((t<<16>>16)+-1<<2)>>2]|0)==(g|0):0){t=6;break}r=r+1|0;e=e+2|0}do if((t|0)==6)if((r|0)!=-1){o=i+24|0;c[o>>2]=1;p=i+28|0;c[p>>2]=r;q=i+40028|0;c[q>>2]=s;g=5;e=s;l=r;f=1;while(1){k=a+((B(e,d)|0)+l<<1)|0;j=0;e=g+5|0;while(1){g=(e|0)%8|0;if(j>>>0>=8){t=13;break}e=c[48+(g<<2)>>2]|0;x=B(e,d)|0;h=c[80+(g<<2)>>2]|0;if((b[k+(x+h<<1)>>1]|0)>0)break;j=j+1|0;e=g+1|0}if((t|0)==13){t=0;if((j|0)==8){t=15;break}h=c[80+(g<<2)>>2]|0;e=c[48+(g<<2)>>2]|0}c[i+28+(f<<2)>>2]=h+l;j=c[o>>2]|0;c[i+40028+(j<<2)>>2]=e+(c[i+40028+(j+-1<<2)>>2]|0);j=c[o>>2]|0;h=i+28+(j<<2)|0;if((c[h>>2]|0)==(r|0)?(c[i+40028+(j<<2)>>2]|0)==(s|0):0){t=18;break}f=j+1|0;c[o>>2]=f;if((f|0)==9999){t=21;break}e=c[i+40028+(j<<2)>>2]|0;l=c[h>>2]|0}if((t|0)==15){Ue(0,3,20152,m);e=-1;break}else if((t|0)==18){f=0;e=0;h=1;while(1){if((h|0)>=(j|0))break;x=(c[i+28+(h<<2)>>2]|0)-r|0;x=B(x,x)|0;d=(c[i+40028+(h<<2)>>2]|0)-s|0;x=(B(d,d)|0)+x|0;d=(x|0)>(e|0);f=d?h:f;e=d?x:e;h=h+1|0}e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=c[i+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[i+40028+(e<<2)>>2];e=e+1|0}h=f;e=j;while(1){if((h|0)>=(e|0))break;e=h-f|0;c[i+28+(e<<2)>>2]=c[i+28+(h<<2)>>2];c[i+40028+(e<<2)>>2]=c[i+40028+(h<<2)>>2];h=h+1|0;e=c[o>>2]|0}e=0;while(1){if((e|0)>=(f|0))break;x=e-f|0;c[i+28+((c[o>>2]|0)+x<<2)>>2]=c[u+(e<<2)>>2];c[i+40028+((c[o>>2]|0)+x<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}c[i+28+(c[o>>2]<<2)>>2]=c[p>>2];c[i+40028+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1;e=0;break}else if((t|0)==21){Ue(0,3,20159,n);e=-1;break}}else t=7;while(0);if((t|0)==7){Ue(0,3,20145,j);e=-1}zb=w;return e|0}function Qc(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=zb;zb=zb+96|0;o=r+48|0;k=r+92|0;p=r;l=r+88|0;m=b+28|0;j=c[m>>2]|0;n=b+40028|0;h=c[n>>2]|0;q=b+24|0;i=(c[q>>2]|0)+-1|0;f=1;g=0;e=0;while(1){if((f|0)>=(i|0))break;t=(c[b+28+(f<<2)>>2]|0)-j|0;t=B(t,t)|0;u=(c[b+40028+(f<<2)>>2]|0)-h|0;t=(B(u,u)|0)+t|0;u=(t|0)>(g|0);s=u?f:e;f=f+1|0;g=u?t:g;e=s}d=+(a|0)/.75*.01*d;c[k>>2]=0;c[l>>2]=0;a:do if((Rc(m,n,0,e,d,o,k)|0)>=0?(Rc(m,n,e,(c[q>>2]|0)+-1|0,d,p,l)|0)>=0:0){f=c[k>>2]|0;g=c[l>>2]|0;do if((f|0)==1&(g|0)==1){f=c[p>>2]|0;g=c[o>>2]|0}else{if((f|0)>1&(g|0)==0){f=(e|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,0,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,e,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=e;g=c[o>>2]|0;e=c[p>>2]|0;break}if(!((f|0)==0&(g|0)>1)){e=-1;break a}f=(e+-1+(c[q>>2]|0)|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,e,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,(c[q>>2]|0)+-1|0,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=c[p>>2]|0;g=e;e=c[o>>2]|0}while(0);c[b+80028>>2]=0;c[b+80032>>2]=g;c[b+80036>>2]=e;c[b+80040>>2]=f;c[b+80044>>2]=(c[q>>2]|0)+-1;e=0}else e=-1;while(0);zb=r;return e|0}function Rc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0;j=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;l=+(j-q|0);i=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(i-r|0);n=+((B(r,q)|0)-(B(i,j)|0)|0);j=d+1|0;i=j;k=0.0;while(1){if((j|0)>=(e|0))break;s=l*+(c[a+(j<<2)>>2]|0)+m*+(c[b+(j<<2)>>2]|0)+n;s=s*s;r=s>k;i=r?j:i;j=j+1|0;k=r?s:k}if(k/(l*l+m*m)>f)if(((Rc(a,b,d,i,f,g,h)|0)>=0?(o=c[h>>2]|0,(o|0)<=5):0)?(c[g+(o<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(Rc(a,b,i,e,f,g,h)|0)>=0):0)p=8;else i=-1;else p=8;if((p|0)==8)i=0;return i|0}function Sc(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=zb;zb=zb+16|0;r=y+4|0;s=y;x=qe(2)|0;u=qe(2)|0;v=Dd(2,2)|0;k=0;a:while(1){if(k>>>0>=4){q=10;break}l=k+1|0;q=c[e+(l<<2)>>2]|0;n=c[e+(k<<2)>>2]|0;p=+(q+1-n|0)*.05+.5;n=~~(p+ +(n|0));q=~~(+(q|0)-p)-n|0;w=Dd(q+1|0,2)|0;d=0;while(1){if((d|0)>(q|0))break;z=d+n|0;if((pe(h,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),r,s)|0)<0){q=6;break a}A=c[w>>2]|0;z=d<<1;g[A+(z<<3)>>3]=+f[r>>2];g[A+((z|1)<<3)>>3]=+f[s>>2];d=d+1|0}if((Pd(w,v,x,u)|0)<0){q=14;break}A=c[v>>2]|0;o=+g[A+8>>3];g[i+(k*24|0)>>3]=o;p=-+g[A>>3];g[i+(k*24|0)+8>>3]=p;A=c[u>>2]|0;g[i+(k*24|0)+16>>3]=-(o*+g[A>>3]+ +g[A+8>>3]*p);Ld(w)|0;k=l}b:do if((q|0)==6)q=14;else if((q|0)==10){Ld(v)|0;re(u)|0;re(x)|0;d=0;while(1){if(d>>>0>=4){d=0;break b}k=d+3&3;l=i+(k*24|0)|0;m=+g[i+(d*24|0)+8>>3];n=i+(d*24|0)|0;o=+g[i+(k*24|0)+8>>3];p=+g[l>>3]*m-+g[n>>3]*o;if(+t(+p)<.0001){d=-1;break b}A=i+(d*24|0)+16|0;z=i+(k*24|0)+16|0;g[j+(d<<4)>>3]=(o*+g[A>>3]-m*+g[z>>3])/p;g[j+(d<<4)+8>>3]=(+g[n>>3]*+g[z>>3]-+g[l>>3]*+g[A>>3])/p;d=d+1|0}}while(0);if((q|0)==14){Ld(w)|0;Ld(v)|0;re(u)|0;re(x)|0;d=-1}zb=y;return d|0}function Tc(a,b,d,e,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=+n;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+16|0;A=G+4|0;B=G;C=l>>>0<2;D=(l|0)==2;z=0;r=0;while(1){if((z|0)>=(i|0))break;c[o+(r<<8)>>2]=c[h+(z*80048|0)>>2];if((pe(m,+g[h+(z*80048|0)+8>>3],+g[h+(z*80048|0)+16>>3],A,B)|0)>=0?(g[o+(r<<8)+56>>3]=+f[A>>2],g[o+(r<<8)+64>>3]=+f[B>>2],E=o+(r<<8)+168|0,(Sc(h+(z*80048|0)+28|0,h+(z*80048|0)+40028|0,c[h+(z*80048|0)+24>>2]|0,h+(z*80048|0)+80028|0,m,o+(r<<8)+72|0,E)|0)>=0):0){v=o+(r<<8)+8|0;s=o+(r<<8)+20|0;t=o+(r<<8)+40|0;w=o+(r<<8)+12|0;y=o+(r<<8)+24|0;x=o+(r<<8)+48|0;u=od(j,k,l,a,b,d,e,m,E,n,v,s,t,w,y,x,q,o+(r<<8)+240|0,o+(r<<8)+248|0)|0;switch(u|0){case 0:{F=12;break}case -1:{u=2;F=12;break}case -2:{u=3;F=12;break}case -3:{u=4;F=12;break}case -4:{u=5;F=12;break}case -5:{u=9;F=12;break}case -6:{u=1;F=12;break}default:{}}if((F|0)==12){F=0;c[o+(r<<8)+236>>2]=u}if(!C){if(D){c[o+(r<<8)+4>>2]=c[w>>2];t=x;s=y;F=17}}else{c[o+(r<<8)+4>>2]=c[v>>2];F=17}if((F|0)==17){F=0;c[o+(r<<8)+16>>2]=c[s>>2];g[o+(r<<8)+32>>3]=+g[t>>3]}r=r+1|0}z=z+1|0}c[p>>2]=r;zb=G;return 0}function Uc(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+288|0;h=m+192|0;i=m+96|0;j=m+264|0;k=m;l=m+256|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){f=b+24|0;break}else{f=b+16|0;break}else f=b+20|0;while(0);f=c[f>>2]|0;o=(4-f|0)%4|0;g[h>>3]=+g[b+168+(o<<4)>>3];g[h+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-f|0)%4|0;g[h+16>>3]=+g[b+168+(o<<4)>>3];g[h+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-f|0)%4|0;g[h+32>>3]=+g[b+168+(o<<4)>>3];g[h+40>>3]=+g[b+168+(o<<4)+8>>3];f=(7-f|0)%4|0;g[h+48>>3]=+g[b+168+(f<<4)>>3];g[h+56>>3]=+g[b+168+(f<<4)+8>>3];n=d*-.5;g[i>>3]=n;d=d*.5;g[i+8>>3]=d;g[i+16>>3]=0.0;g[i+24>>3]=d;g[i+32>>3]=d;g[i+40>>3]=0.0;g[i+48>>3]=d;g[i+56>>3]=n;g[i+64>>3]=0.0;g[i+72>>3]=n;g[i+80>>3]=n;g[i+88>>3]=0.0;c[j>>2]=h;c[j+4>>2]=i;c[j+8>>2]=4;if((Me(c[a>>2]|0,h,i,4,k)|0)<0)d=1.0e8;else{o=(He(c[a>>2]|0,j,k,e,l)|0)<0;d=o?1.0e8:+g[l>>3]}zb=m;return +d}function Vc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+192|0;i=m+96|0;j=m;k=m+168|0;l=m+160|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){h=b+24|0;break}else{h=b+16|0;break}else h=b+20|0;while(0);h=c[h>>2]|0;o=(4-h|0)%4|0;g[i>>3]=+g[b+168+(o<<4)>>3];g[i+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-h|0)%4|0;g[i+16>>3]=+g[b+168+(o<<4)>>3];g[i+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-h|0)%4|0;g[i+32>>3]=+g[b+168+(o<<4)>>3];g[i+40>>3]=+g[b+168+(o<<4)+8>>3];h=(7-h|0)%4|0;g[i+48>>3]=+g[b+168+(h<<4)>>3];g[i+56>>3]=+g[b+168+(h<<4)+8>>3];n=e*-.5;g[j>>3]=n;e=e*.5;g[j+8>>3]=e;g[j+16>>3]=0.0;g[j+24>>3]=e;g[j+32>>3]=e;g[j+40>>3]=0.0;g[j+48>>3]=e;g[j+56>>3]=n;g[j+64>>3]=0.0;g[j+72>>3]=n;g[j+80>>3]=n;g[j+88>>3]=0.0;c[k>>2]=i;c[k+4>>2]=j;c[k+8>>2]=4;k=(He(c[a>>2]|0,k,d,f,l)|0)<0;zb=m;return +(k?1.0e8:+g[l>>3])}function Wc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((He(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Xc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((Je(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Yc(a,b){a=a|0;b=b|0;var d=0;d=FO(2064)|0;if(d|0){c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b}return d|0}function Zc(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return}function _c(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0&(b|0)!=0){aP(a+12|0,0,1024)|0;e=b+(B(c[a+8>>2]|0,c[a+4>>2]|0)|0)|0;while(1){if(b>>>0>=e>>>0){b=0;break a}f=a+12+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}}else b=-1;while(0);return b|0}function $c(a,b){a=a|0;b=b|0;var d=0;b=_c(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+12+(d<<2)>>2]|0)+b|0;c[a+1036+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function ad(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;if(!(e<0.0|e>1.0)){d=$c(b,d)|0;if((d|0)>=0){i=~~(+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0)*e)>>>0;d=0;while(1){j=d&255;g=c[b+1036+(j<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}while(1){h=d+1<<24>>24;if((g|0)!=(i|0))break;d=h;g=c[b+1036+((h&255)<<2)>>2]|0}a[f>>0]=((d&255)+j|0)>>>1;d=0}}else d=-1;return d|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;return ad(a,b,.5,c)|0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0;d=_c(b,d)|0;if((d|0)>=0){m=0.0;d=1;do{m=m+ +((B(c[b+12+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0);d=0;h=0.0;j=0.0;g=0.0;l=0;while(1){f=c[b+12+(l<<2)>>2]|0;j=j+ +(f>>>0);if(j!=0.0){i=k-j;if(i==0.0)break;g=g+ +((B(f,l)|0)>>>0);o=g/j-(m-g)/i;i=o*(j*i*o);n=i>h;f=l&255;d=n?f:d;h=n?i:h}else f=l&255;if(f<<24>>24==-1)break;else l=l+1|0}a[e>>0]=d;d=0}return d|0}function dd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=_c(b,e)|0;a:do if((h|0)>=0){if(!(c[b>>2]|0)){h=b+4|0;i=b+8|0;s=FO(B(c[i>>2]|0,c[h>>2]|0)|0)|0;c[b>>2]=s;if(!s){h=-1;break}else{s=h;r=i}}else{s=b+4|0;r=b+8|0}p=f>>1;q=0-p|0;o=0;while(1){h=c[r>>2]|0;if((o|0)>=(h|0))break;l=0;while(1){n=c[s>>2]|0;if((l|0)>=(n|0))break;m=q;f=0;h=0;while(1){if((m|0)>(p|0))break;i=m+o|0;b:do if((i|0)>=0?(i|0)<(c[r>>2]|0):0){k=B(i,n)|0;j=q;i=f;while(1){if((j|0)>(p|0))break b;f=j+l|0;if((f|0)>-1&(f|0)<(n|0)){i=i+1|0;h=h+(d[e+(f+k)>>0]|0)|0}j=j+1|0}}else i=f;while(0);m=m+1|0;f=i}n=(c[b>>2]|0)+((B(n,o)|0)+l)|0;a[n>>0]=(h|0)/(f|0)|0;l=l+1|0}o=o+1|0}if(!g)h=0;else{i=0;while(1){if((i|0)>=(B(h,c[s>>2]|0)|0)){h=0;break a}h=(c[b>>2]|0)+i|0;a[h>>0]=(d[h>>0]|0)+g;i=i+1|0;h=c[r>>2]|0}}}while(0);return h|0}function ed(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;e=(e|0)==1;j=(i|0)!=0;do if(!d)if(e){if(j){e=fc(a,b,c,i,h)|0;break}if(!g){e=ec(a,b,c,f,h)|0;break}else{e=dc(a,b,c,f,h)|0;break}}else{if(j){e=ic(a,b,c,i,h)|0;break}if(!g){e=hc(a,b,c,f,h)|0;break}else{e=gc(a,b,c,f,h)|0;break}}else if(e){if(j){e=lc(a,b,c,i,h)|0;break}if(!g){e=kc(a,b,c,f,h)|0;break}else{e=jc(a,b,c,f,h)|0;break}}else{if(j){e=oc(a,b,c,i,h)|0;break}if(!g){e=nc(a,b,c,f,h)|0;break}else{e=mc(a,b,c,f,h)|0;break}}while(0);return e|0}function fd(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;a=0}else a=-1;return a|0}function gd(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;a=0}else a=-1;return a|0}function hd(){return id(16,50)|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+64|0;p=q+56|0;o=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;f=q+16|0;e=q+8|0;d=q;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){m=FO(32)|0;if(!m){Ue(0,3,41858,d);Ea(1)}c[m>>2]=0;c[m+4>>2]=b;c[m+28>>2]=a;l=FO(b<<2)|0;c[m+8>>2]=l;if(!l){Ue(0,3,41858,e);Ea(1)}d=b<<4;k=FO(d)|0;c[m+12>>2]=k;if(!k){Ue(0,3,41858,f);Ea(1)}f=FO(d)|0;j=m+20|0;c[j>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}d=b<<5;g=FO(d)|0;c[m+16>>2]=g;if(!g){Ue(0,3,41858,h);Ea(1)}h=FO(d)|0;c[m+24>>2]=h;if(!h){Ue(0,3,41858,i);Ea(1)}g=B(a,a)|0;f=g*12|0;g=g<<2;e=0;b:while(1){if((e|0)>=(b|0)){n=m;break a}c[l+(e<<2)>>2]=0;a=e<<2;d=0;while(1){if(d>>>0>=4)break;i=FO(f)|0;h=d+a|0;c[k+(h<<2)>>2]=i;if(!i){d=19;break b}i=FO(g)|0;c[(c[j>>2]|0)+(h<<2)>>2]=i;if(!i){d=21;break b}else d=d+1|0}e=e+1|0}if((d|0)==19){Ue(0,3,41858,o);Ea(1)}else if((d|0)==21){Ue(0,3,41858,p);Ea(1)}}else n=0;while(0);zb=q;return n|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)b=-1;else{f=a+4|0;g=a+8|0;h=a+12|0;i=a+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;if(c[(c[g>>2]|0)+(d<<2)>>2]|0)td(a,d)|0;e=d<<2;b=0;while(1){if((b|0)==4)break;j=b+e|0;GO(c[(c[h>>2]|0)+(j<<2)>>2]|0);GO(c[(c[i>>2]|0)+(j<<2)>>2]|0);b=b+1|0}d=d+1|0}GO(c[h>>2]|0);GO(c[i>>2]|0);GO(c[g>>2]|0);GO(c[a+16>>2]|0);GO(c[a+24>>2]|0);GO(a);b=0}return b|0}function kd(b,e,f,h,i,j,k){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+32|0;p=u+24|0;o=u;t=u+16|0;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-1}else{c[o>>2]=0;s=e+-1|0;q=B(s,e)|0;c[o+4>>2]=q;q=B(e,e)|0;c[o+8>>2]=q+-1;c[o+12>>2]=s;l=0;m=0;n=-1;while(1){if((l|0)==4)break;r=a[b+(c[o+(l<<2)>>2]|0)>>0]|0;l=l+1|0;m=(r&255)>(m&255)?r:m;n=(r&255)<(n&255)?r:n}m=m&255;l=n&255;if((m-l|0)<30){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-2;break}n=(m+l|0)>>>1;l=0;while(1){if((l|0)==4)break;a[p+l>>0]=n>>>0>(d[b+(c[o+(l<<2)>>2]|0)>>0]|0)>>>0&1;l=l+1|0}m=0;while(1){if(m>>>0>=4){l=18;break}l=m+1|0;if(((a[p+m>>0]|0)==1?(a[p+(l&3)>>0]|0)==1:0)?(a[p+(m+2&3)>>0]|0)==0:0){l=17;break}m=l}if((l|0)==17)c[h>>2]=m;else if((l|0)==18?(m|0)==4:0){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-3;break}r=255;l=0;while(1){if((l|0)==(q|0))break;o=b+l|0;m=d[o>>0]|0;p=m-n|0;p=(p|0)<0?0-p|0:p;a[o>>0]=n>>>0>m>>>0&1;r=(p|0)<(r|0)?p:r;l=l+1|0}l=c[h>>2]|0;b:do switch(l|0){case 0:{n=l;m=0;l=0;while(1){if((n|0)>=(e|0))break b;p=(n|0)==(s|0);q=B(n,e)|0;o=0;while(1){if((o|0)==(e|0))break;if((o|n|0)!=0?!(p&((o|0)==0|(o|0)==(s|0))):0){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+q)>>0]|0)!=0}o=o+1|0}n=n+1|0}}case 1:{o=0;m=0;l=0;while(1){if((o|0)>=(e|0))break b;p=(o|0)==0;q=(o|0)==(s|0);n=s;while(1){if((n|0)<=-1)break;h=(n|0)==(s|0);if(!(p&h)?!(q&(h|(n|0)==0)):0){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+-1|0}o=o+1|0}}case 2:{n=s;m=0;l=0;while(1){if((n|0)<=-1)break b;q=(n|0)==(s|0)|(n|0)==0;p=B(n,e)|0;o=s;while(1){if((o|0)<=-1)break;if(!(q&(o|0)==(s|0)|(o|n|0)==0)){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+p)>>0]|0)!=0}o=o+-1|0}n=n+-1|0}}case 3:{o=s;m=0;l=0;while(1){if((o|0)<=-1)break b;p=(o|0)==(s|0);q=(o|0)==0;n=0;while(1){if((n|0)>=(e|0))break;if(!(p&(n|0)==0|(n|o|0)==0|q&(n|0)==(s|0))){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+1|0}o=o+-1|0}}default:{m=0;l=0}}while(0);g[i>>3]=(r|0)>30?1.0:+(r|0)/30.0;switch(j|0){case 259:{k=a[240+m>>0]|0;s=k<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 515:{l=a[112+m>>0]|0;s=l<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k|0)c[k>>2]=d[176+m>>0];if(l<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 772:case 1028:case 1029:case 1285:{l=md(j,m,l,0,t)|0;if((l|0)<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}if((k|0)!=0&(l|0)!=0)c[k>>2]=l;break}default:{k=t;c[k>>2]=m;c[k+4>>2]=l}}c[f>>2]=c[t>>2];l=0}while(0);zb=u;return l|0}function ld(b,d,e,f,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;l=z+8|0;k=z;a:do if((b|0)==0|(f|0)<1){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;d=-1}else switch(d|0){case 0:{x=B(f,f)|0;w=x*3|0;x=FO(x*12|0)|0;if(!x){Ue(0,3,41858,k);Ea(1)}d=0;k=0;while(1){if((d|0)==(w|0))break;t=k+(~a[e+d>>0]&255)|0;d=d+1|0;k=t}l=(k>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/(+(f|0)*1.7320508)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+12|0;q=b+16|0;m=0.0;p=0;d=-1;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;b:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break b}default:{y=18;break b}}}c:do if((y|0)==18){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break c;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}case 1:{w=B(f,f)|0;x=FO(w<<2)|0;if(!x){Ue(0,3,41858,l);Ea(1)}d=0;k=0;while(1){if((k|0)==(w|0))break;d=d+(~a[e+k>>0]&255)|0;k=k+1|0}l=(d>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/+(f|0)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+20|0;q=b+24|0;p=0;d=-1;m=0.0;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;d:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break d}default:{y=40;break d}}}e:do if((y|0)==40){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break e;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}default:{d=-1;break a}}while(0);zb=z;return d|0}function md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0;I=zb;zb=zb+2384|0;l=I+2320|0;D=I+880|0;A=I+800|0;H=I+720|0;C=I+640|0;y=I+560|0;G=I+48|0;E=I;switch(b|0){case 2830:{l=g;u=1200;x=688;m=120;n=127;w=64;o=9;i=8;break}case 772:{j=624;k=432;m=13;n=15;b=9;o=1;i=5;break}case 1028:{j=624;k=432;m=13;n=15;b=5;o=2;i=5;break}case 1029:{b=12;g=2;i=4;break}case 1285:{b=7;g=3;i=4;break}default:b=-1}if((i|0)==4){j=496;k=304;m=22;n=31;o=g;i=5}a:do if((i|0)==5){i=0;g=f;while(1){if((i|0)==(m|0)){u=j;x=k;w=b;i=8;break a}a[l+i>>0]=e&1;x=TO(e|0,g|0,1)|0;i=i+1|0;e=x;g=F()|0}}while(0);b:do if((i|0)==8){t=o<<1;g=0;i=1;while(1){if((i|0)>(t|0))break;j=y+(i<<2)|0;c[j>>2]=0;e=0;b=0;while(1){if((e|0)>=(m|0))break;if(a[l+e>>0]|0){v=x+(((B(e,i)|0)%(n|0)|0)<<2)|0;b=b^c[v>>2];c[j>>2]=b}e=e+1|0}c[j>>2]=c[u+(b<<2)>>2];g=(b|0)==0?g:1;i=i+1|0}v=(g|0)!=0;c:do if(v){c[A>>2]=0;g=c[y+4>>2]|0;c[A+4>>2]=g;c[D>>2]=0;c[D+72>>2]=1;b=1;while(1){if((b|0)>=(t|0))break;c[D+(b<<2)>>2]=-1;c[D+72+(b<<2)>>2]=0;b=b+1|0}c[H>>2]=0;c[H+4>>2]=0;c[C>>2]=-1;c[C+4>>2]=0;s=0;r=0;while(1){f=s;s=s+1|0;d:do if((g|0)==-1){f=f+2|0;c[H+(f<<2)>>2]=r;b=0;while(1){if((b|0)>(r|0)){q=r;break d}q=D+(s*72|0)+(b<<2)|0;p=c[q>>2]|0;c[D+(f*72|0)+(b<<2)>>2]=p;c[q>>2]=c[u+(p<<2)>>2];b=b+1|0}}else{e=f;while(1){b=(e|0)>0;if(b&(c[A+(e<<2)>>2]|0)==-1)e=e+-1|0;else break}if(b){b=e;i=e;while(1){j=i;i=i+-1|0;if((c[A+(i<<2)>>2]|0)==-1)e=b;else e=(c[C+(b<<2)>>2]|0)<(c[C+(i<<2)>>2]|0)?i:b;if((j|0)<=1)break;else b=e}}i=H+(e<<2)|0;p=s-e|0;q=p+(c[i>>2]|0)|0;f=f+2|0;q=(r|0)>(q|0)?r:q;c[H+(f<<2)>>2]=q;b=0;while(1){if((b|0)>=(t|0))break;c[D+(f*72|0)+(b<<2)>>2]=0;b=b+1|0}j=g+n|0;k=A+(e<<2)|0;g=c[i>>2]|0;b=0;while(1){if((b|0)>(g|0))break;i=c[D+(e*72|0)+(b<<2)>>2]|0;if((i|0)!=-1)c[D+(f*72|0)+(p+b<<2)>>2]=c[x+(((j+i-(c[k>>2]|0)|0)%(n|0)|0)<<2)>>2];b=b+1|0}b=0;while(1){if((b|0)>(r|0))break d;p=D+(s*72|0)+(b<<2)|0;k=c[p>>2]|0;j=D+(f*72|0)+(b<<2)|0;c[j>>2]=c[j>>2]^k;c[p>>2]=c[u+(k<<2)>>2];b=b+1|0}}while(0);c[C+(f<<2)>>2]=s-q;if((s|0)>=(t|0))break;b=c[y+(f<<2)>>2]|0;if((b|0)==-1)b=0;else b=c[x+(b<<2)>>2]|0;i=A+(f<<2)|0;c[i>>2]=b;e=1;while(1){if((e|0)>(q|0))break;g=c[y+(f-e<<2)>>2]|0;if((g|0)!=-1?(z=c[D+(f*72|0)+(e<<2)>>2]|0,(z|0)!=0):0){b=b^c[x+((((c[u+(z<<2)>>2]|0)+g|0)%(n|0)|0)<<2)>>2];c[i>>2]=b}e=e+1|0}g=c[u+(b<<2)>>2]|0;c[i>>2]=g;if((q|0)>(o|0))break;else r=q}if((q|0)>(o|0)){b=-1;break b}b=0;while(1){if((b|0)>(q|0))break;C=D+(f*72|0)+(b<<2)|0;c[C>>2]=c[u+(c[C>>2]<<2)>>2];b=b+1|0}b=1;while(1){if((b|0)>(q|0))break;c[E+(b<<2)>>2]=c[D+(f*72|0)+(b<<2)>>2];b=b+1|0}b=0;k=1;while(1){if((n|0)<(k|0))break;j=1;g=1;while(1){if((j|0)>(q|0))break;e=E+(j<<2)|0;i=c[e>>2]|0;if((i|0)!=-1){D=(i+j|0)%(n|0)|0;c[e>>2]=D;g=c[x+(D<<2)>>2]^g}j=j+1|0}if(!g){c[G+(b<<2)>>2]=n-k;b=b+1|0}k=k+1|0}if((b|0)!=(q|0)){b=-1;break b}b=0;while(1){if((b|0)>=(q|0))break c;E=l+(c[G+(b<<2)>>2]|0)|0;a[E>>0]=a[E>>0]^1;b=b+1|0}}else f=0;while(0);b=h;c[b>>2]=0;c[b+4>>2]=0;b=m-w|0;g=1;e=0;i=0;j=0;while(1){if((b|0)>=(m|0))break;E=NO(g|0,e|0,d[l+b>>0]|0,0)|0;E=OO(E|0,F()|0,i|0,j|0)|0;G=F()|0;D=h;c[D>>2]=E;c[D+4>>2]=G;D=UO(g|0,e|0,1)|0;b=b+1|0;g=D;e=F()|0;i=E;j=G}if(v)b=c[H+(f<<2)>>2]|0;else b=0}while(0);zb=I;return b|0}function nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Dd(8,8)|0;h=Dd(8,1)|0;i=Dd(8,1)|0;e=0;while(1){if((e|0)==4)break;o=a+(e<<4)|0;j=c[f>>2]|0;k=e<<4;g[j+(k<<3)>>3]=+g[o>>3];n=a+(e<<4)+8|0;g[j+((k|1)<<3)>>3]=+g[n>>3];g[j+((k|2)<<3)>>3]=1.0;g[j+((k|3)<<3)>>3]=0.0;g[j+((k|4)<<3)>>3]=0.0;g[j+((k|5)<<3)>>3]=0.0;m=b+(e<<4)|0;g[j+((k|6)<<3)>>3]=-(+g[o>>3]*+g[m>>3]);g[j+((k|7)<<3)>>3]=-(+g[n>>3]*+g[m>>3]);g[j+((k|8)<<3)>>3]=0.0;g[j+((k|9)<<3)>>3]=0.0;g[j+((k|10)<<3)>>3]=0.0;g[j+((k|11)<<3)>>3]=+g[o>>3];g[j+((k|12)<<3)>>3]=+g[n>>3];g[j+((k|13)<<3)>>3]=1.0;l=b+(e<<4)+8|0;g[j+((k|14)<<3)>>3]=-(+g[o>>3]*+g[l>>3]);g[j+((k|15)<<3)>>3]=-(+g[n>>3]*+g[l>>3]);k=c[h>>2]|0;j=e<<1;g[k+(j<<3)>>3]=+g[m>>3];g[k+((j|1)<<3)>>3]=+g[l>>3];e=e+1|0}Xd(f)|0;Nd(i,f,h)|0;a=c[i>>2]|0;e=0;while(1){if((e|0)==2)break;o=e*3|0;g[d+(e*24|0)>>3]=+g[a+(o<<3)>>3];g[d+(e*24|0)+8>>3]=+g[a+(o+1<<3)>>3];g[d+(e*24|0)+16>>3]=+g[a+(o+2<<3)>>3];e=e+1|0}g[d+48>>3]=+g[a+48>>3];g[d+56>>3]=+g[a+56>>3];g[d+64>>3]=1.0;Ld(f)|0;Ld(h)|0;Ld(i)|0;return}function od(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0;w=zb;zb=zb+12304|0;v=w;u=w+12288|0;do if((d+-2|0)>>>0<3){if((r|0)!=2830){u=r&255;if((pd(b,2,u,u*3|0,e,f,g,h,i,j,k,v)|0)<0){c[o>>2]=-1;r=-6;break}u=kd(v,u,o,p,q,r,s)|0;if(!t){r=u;break}r=t;c[r>>2]=0;c[r+4>>2]=0;r=u;break}if((pd(b,2,14,42,e,f,g,h,i,j,.875,v)|0)<0){c[o>>2]=-1;r=-6;break}r=qd(v,u,p,q,s)|0;if((r|0)<0){c[o>>2]=-1;break}p=u;u=c[p>>2]|0;p=c[p+4>>2]|0;if((u|0)==-1&(p|0)==-1){c[o>>2]=-1;r=-5;break}c[o>>2]=(u&-32768|0)==0&0==0?u&32767:0;if(t){c[t>>2]=u;c[t+4>>2]=p}}else r=1;while(0);a:do switch(d|0){case 0:case 1:case 3:case 4:{if(!a){c[l>>2]=-1;u=-1;break a}u=a+28|0;p=c[u>>2]|0;q=p<<2;switch(d|0){case 0:case 3:if((pd(b,0,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,0,v,c[u>>2]|0,l,m,n)|0;break a}default:if((pd(b,1,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,1,v,c[u>>2]|0,l,m,n)|0;break a}}}default:u=1}while(0);if((r|0)!=1)u=(u|0)==1?r:(u&r|0)<0?u:0;zb=w;return u|0}function pd(b,e,h,i,j,k,l,m,n,o,p,q){b=b|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=+p;q=q|0;var r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0;R=zb;zb=zb+256|0;A=R+232|0;z=R+224|0;D=R+216|0;C=R+208|0;s=R+144|0;t=R+80|0;N=R;O=R+240|0;P=R+236|0;g[s>>3]=100.0;g[s+8>>3]=100.0;g[s+16>>3]=110.0;g[s+24>>3]=100.0;g[s+32>>3]=110.0;g[s+40>>3]=110.0;g[s+48>>3]=100.0;g[s+56>>3]=110.0;r=0;while(1){if((r|0)==4)break;g[t+(r<<4)>>3]=+g[o+(r<<4)>>3];g[t+(r<<4)+8>>3]=+g[o+(r<<4)+8>>3];r=r+1|0}nd(s,t,N);y=+g[t>>3];T=+g[t+16>>3];w=y-T;I=+g[t+8>>3];S=+g[t+24>>3];u=I-S;r=~~(w*w+u*u);u=+g[t+32>>3];w=+g[t+48>>3];V=u-w;v=+g[t+40>>3];x=+g[t+56>>3];U=v-x;L=~~(V*V+U*U);u=T-u;v=S-v;t=~~(u*u+v*v);y=w-y;I=x-I;M=~~(y*y+I*I);r=~~(+(((L|0)>(r|0)?L:r)|0)*p*p);t=~~(+(((M|0)>(t|0)?M:t)|0)*p*p);if(!b){s=h;while(1)if((s|0)<(i|0)&(B(s,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r,r)|0)<(t|0))r=r<<1;else break}else{s=h;while(1)if((s|0)<(i|0)&(B(s<<2,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r<<2,r)|0)<(t|0))r=r<<1;else break}M=(s|0)>(i|0)?i:s;J=(r|0)>(i|0)?i:r;K=(M|0)/(h|0)|0;L=(J|0)/(h|0)|0;u=(1.0-p)*.5*10.0;I=p*10.0;H=B(h,h)|0;a:do if(!e){H=H*3|0;r=HO(H,4)|0;if(!r){Ue(0,3,41858,C);Ea(1)}b:do switch(m|0){case 0:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 1:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t+2)>>0]|0)}i=i+1|0}o=o+1|0}}case 2:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 3:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|2)>>0]|0)}i=i+1|0}o=o+1|0}}case 4:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|3)>>0]|0)}i=i+1|0}o=o+1|0}}case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=j+((B(t,k)|0)+s)|0;t=d[t>>0]|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}i=i+1|0}o=o+1|0}}case 6:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|3)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|1)>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){X=B(t,k)|0;W=(s&65534)+X<<1;T=+((d[j+W>>0]|0)+-128|0);V=+((d[j+(W+2)>>0]|0)+-128|0);U=+((d[j+(X+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;X=~~(T*516.4110107421875+U)>>8;W=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;t=~~(U+V*408.5830078125)>>8;X=(X|0)>0?X:0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=((X|0)<255?X:255)+(c[s>>2]|0);W=(W|0)>0?W:0;s=r+(b+1<<2)|0;c[s>>2]=((W|0)<255?W:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=r+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=B(t,k)|0;W=(s&65534)+t<<1;T=+((d[j+(W|1)>>0]|0)+-128|0);V=+((d[j+(W+3)>>0]|0)+-128|0);U=+((d[j+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(U+T*516.4110107421875)>>8;t=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;W=~~(U+V*408.5830078125)>>8;s=(s|0)>0?s:0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=r+(X+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);W=(W|0)>0?W:0;X=r+(X+2<<2)|0;c[X>>2]=((W|0)<255?W:255)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;i=0;while(1){if((i|0)>=(J|0))break b;v=w+I*(+(i|0)+.5)/x;o=0;while(1){if((o|0)>=(M|0))break;u=w+I*(+(o|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((i|0)/(L|0)|0,h)|0)+((o|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<3&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-32&255)>>>3|W<<5&255|2)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}o=o+1|0}i=i+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<2&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-64&255)>>>3|W<<5&255|4)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((a[j+(W|1)>>0]&-16|8)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=(c[b>>2]|0)+((W<<4&255|8)&255);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-16|8)&255)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,D);Q=306;break a}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}else{r=HO(H,4)|0;if(!r){Ue(0,3,41858,z);Ea(1)}c:do if(m>>>0<2){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=((B(t,k)|0)+s|0)*3|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W+1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W+2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}else{if((m|1|0)==3){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W|2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}if((m|2|0)==6){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|2)>>0]|0)+(d[j+(W|1)>>0]|0)+(d[j+(W|3)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}switch(m|0){case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1|1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&28|2)+(b&248|4)+(W<<3&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&24|4)+(b&248|4)+(W<<2&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<4&240|8)+(b&240|8)+((a[j+(W|1)>>0]&-16|8)&255)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,A);Q=306;break a}}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}while(0);if((Q|0)==306){GO(r);r=-1}zb=R;return r|0}function qd(b,e,f,h,i){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+160|0;o=y+152|0;n=y+128|0;x=y+144|0;w=y;c[n>>2]=0;c[n+4>>2]=182;c[n+8>>2]=195;c[n+12>>2]=13;j=0;l=0;m=-1;while(1){if((j|0)==4)break;v=a[b+(c[n+(j<<2)>>2]|0)>>0]|0;j=j+1|0;l=(v&255)>(l&255)?v:l;m=(v&255)<(m&255)?v:m}l=l&255;j=m&255;a:do if((l-j|0)>=30){v=(l+j|0)>>>1;j=0;while(1){if((j|0)==4)break;a[o+j>>0]=v>>>0>(d[b+(c[n+(j<<2)>>2]|0)>>0]|0)>>>0&1;j=j+1|0}u=0;while(1){if(u>>>0>=4)break;j=u+1|0;if(((a[o+u>>0]|0)==1?(a[o+(j&3)>>0]|0)==1:0)?(a[o+(u+2&3)>>0]|0)==0:0)break;u=j}b:do switch(u&2147483647|0){case 4:{c[f>>2]=0;g[h>>3]=-1.0;j=-3;break a}case 0:{l=119;n=0;j=255;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;p=(n&2147483646|0)==12;q=n*14|0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(r=m&2147483646,((m|n)&2147483646|0)!=0):0)?!(p&((r|0)==0|(r|0)==12)):0){t=(d[b+(m+q)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+1|0}n=n+1|0}}case 1:{l=119;j=255;n=0;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;q=n&2147483646;p=(q|0)==0;q=(q|0)==12;m=13;while(1){if((m|0)<=-1)break;if(((m+-3|o)>>>0>=8?(s=(m&-2|0)==12,!(p&s)):0)?!(q&(m>>>0<2|s)):0){t=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+-1|0}n=n+1|0}}case 2:{m=13;l=119;j=255;while(1){if((m|0)<=-1){p=57;break b}n=m+-3|0;q=m>>>0<2|(m&-2|0)==12;p=m*14|0;o=13;while(1){if((o|0)<=-1)break;if((o+-3|n)>>>0>=8?!((o|m)>>>0<2|q&(o&-2|0)==12):0){t=(d[b+(o+p)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}o=o+-1|0}m=m+-1|0}}case 3:{n=13;l=119;j=255;while(1){if((n|0)<=-1){p=57;break b}o=n+-3|0;p=n&-2;q=(p|0)==12;r=(p|0)==0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(t=m&2147483646,!(q&(t|0)==0)):0)?!((t|p|0)==0|r&(t|0)==12):0){s=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=s>>>31;s=(s|0)>-1?s:0-s|0;l=l+-1|0;j=(s|0)<(j|0)?s:j}m=m+1|0}n=n+-1|0}}default:{c[f>>2]=u;k=1.0}}while(0);if((p|0)==57){c[f>>2]=u;k=(j|0)>30?1.0:+(j|0)/30.0}g[h>>3]=k;j=md(2830,0,0,w,x)|0;if((j|0)<0)j=-4;else{if(i|0)c[i>>2]=j;i=x;x=c[i+4>>2]|0;j=e;c[j>>2]=c[i>>2];c[j+4>>2]=x;j=0}}else{c[f>>2]=0;g[h>>3]=-1.0;j=-2}while(0);zb=y;return j|0}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+32|0;z=A+24|0;f=A+16|0;d=A+8|0;do if(a){if(!b){Ue(0,3,20225,d);d=-1;break}y=a+8|0;e=c[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;if(!(c[(c[y>>2]|0)+(d<<2)>>2]|0))break;d=d+1|0}if((d|0)!=(e|0)){x=jz(b)|0;if(!x){Ue(0,3,20270,f);d=-1;break}p=a+28|0;q=a+12|0;r=d<<2;s=a+20|0;t=a+16|0;v=a+24|0;e=tA(x,20293)|0;o=0;a:while(1){if(o>>>0>=4){e=36;break}w=o+r|0;b=0;n=0;while(1){if(n>>>0>=3)break;l=(n|0)==0;m=(n|0)==2;k=0;f=c[p>>2]|0;while(1){if((k|0)>=(f|0))break;j=0;while(1){if((j|0)>=(f|0))break;if(!e){e=21;break a}f=lA(e)|0;e=tA(0,20293)|0;f=255-f|0;h=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+((((B(c[p>>2]|0,k)|0)+j|0)*3|0)+n<<2)|0;c[h>>2]=f;h=c[(c[s>>2]|0)+(w<<2)>>2]|0;i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;if(!l){c[i>>2]=(c[i>>2]|0)+f;if(m){i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;c[i>>2]=(c[i>>2]|0)/3|0}}else c[i>>2]=f;j=j+1|0;b=f+b|0;f=c[p>>2]|0}k=k+1|0}n=n+1|0}i=c[p>>2]|0;j=(b|0)/(B(i*3|0,i)|0)|0;b=0;f=0;while(1){if(f>>>0>=(B(i*3|0,i)|0)>>>0)break;n=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+(f<<2)|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;i=(B(i,i)|0)+b|0;b=i;f=f+1|0;i=c[p>>2]|0}C=+u(+(+(b|0)));g[(c[t>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;f=0;h=0;b=i;while(1){if(h>>>0>=(B(b,b)|0)>>>0)break;n=(c[(c[s>>2]|0)+(w<<2)>>2]|0)+(h<<2)|0;b=(c[n>>2]|0)-j|0;c[n>>2]=b;b=(B(b,b)|0)+f|0;f=b;h=h+1|0;b=c[p>>2]|0}C=+u(+(+(f|0)));g[(c[v>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;o=o+1|0}if((e|0)==21){Ue(0,3,20298,z);GO(x);d=-1;break}else if((e|0)==36){GO(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Ue(0,3,20200,A);d=-1}while(0);zb=A;return d|0} +function Lm(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+16|0;v=y;w=b+4|0;c[w>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);t=b+8|0;u=b+12|0;s=0;a:while(1){if(s>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,s)|0;yo(g,n)|0;q=_m(d,s)|0;o=zo(g)|0;p=o+4|0;q=q+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){h=c[o>>2]|0;if(l>>>0>=(c[p>>2]|0)-h>>2>>>0)break;z=a[q>>0]|0;k=(_m(e,c[h+(l<<2)>>2]|0)|0)+16|0;do if(z<<24>>24==(a[k>>0]|0)){h=yl(n,Zm(e,c[(c[o>>2]|0)+(l<<2)>>2]|0)|0)|0;if(h>>>0>>0){k=h;h=m;i=c[(c[o>>2]|0)+(l<<2)>>2]|0;break}else{k=m;h=h>>>0>>0?h:j;break}}else{k=m;h=j}while(0);l=l+1|0;m=k;j=h}do if((m|0)!=-1){if((i|0)==-1){x=15;break a}if((j|0)==-1){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v);break}if(+(m>>>0)/+(j>>>0)<+f[u>>2]){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v)}}while(0);s=s+1|0}if((x|0)==15){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,160)|0,35007)|0,31348)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}z=(c[w>>2]|0)-(c[b>>2]|0)>>3;if(z>>>0>(Ak(d)|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,175)|0,35007)|0,31426)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}else{r=(c[w>>2]|0)-(c[b>>2]|0)>>3;break}}else r=0;while(0);zb=y;return r|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;r=t;s=b+4|0;c[s>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);p=b+8|0;q=b+12|0;o=0;while(1){if(o>>>0>=(Ak(d)|0)>>>0)break;l=Zm(d,o)|0;m=(_m(d,o)|0)+16|0;i=0;j=-1;g=2147483647;h=-1;while(1){if(i>>>0>=(Ak(e)|0)>>>0)break;u=a[m>>0]|0;k=(_m(e,i)|0)+16|0;if(u<<24>>24==(a[k>>0]|0)){u=yl(l,Zm(e,i)|0)|0;v=u>>>0>>0;k=v?u:j;g=v?i:g;h=v?j:u>>>0>>0?u:h}else k=j;i=i+1|0;j=k}do if((j|0)!=-1){if((h|0)==-1){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r);break}if(+(j>>>0)/+(h>>>0)<+f[q>>2]){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r)}}while(0);o=o+1|0}v=(c[s>>2]|0)-(c[b>>2]|0)>>3;if(v>>>0>(Ak(d)|0)>>>0){v=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,112)|0,35007)|0,31426)|0;IE(r,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(r,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(r);QE(v,u)|0;ME(v)|0;ua()}else{n=(c[s>>2]|0)-(c[b>>2]|0)>>3;break}}else n=0;while(0);zb=t;return n|0}function Nm(a){a=a|0;return a|0}function Om(a){a=a|0;return c[a>>2]|0}function Pm(a){a=a|0;return c[a+4>>2]|0}function Qm(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;u=zb;zb=zb+32|0;s=u+20|0;t=u+8|0;o=u+4|0;p=u;q=e+4|0;uo(s,(c[q>>2]|0)-(c[e>>2]|0)>>1);uo(t,(c[q>>2]|0)-(c[e>>2]|0)>>1);n=c[e>>2]|0;r=(c[q>>2]|0)-n>>3;m=c[b>>2]|0;d=c[d>>2]|0;k=c[s>>2]|0;l=c[t>>2]|0;b=0;while(1){if((b|0)==(r|0))break;y=c[n+(b<<3)>>2]|0;w=c[n+(b<<3)+4>>2]|0;v=b<<2;x=k+(v<<2)|0;c[x>>2]=c[m+(y*20|0)>>2];c[x+4>>2]=c[m+(y*20|0)+4>>2];c[x+8>>2]=c[m+(y*20|0)+8>>2];c[x+12>>2]=c[m+(y*20|0)+12>>2];v=l+(v<<2)|0;c[v>>2]=c[d+(w*20|0)>>2];c[v+4>>2]=c[d+(w*20|0)+4>>2];c[v+8>>2]=c[d+(w*20|0)+8>>2];c[v+12>>2]=c[d+(w*20|0)+12>>2];b=b+1|0}A=+(g|0);A=A*.20000000298023224+A;z=+(h|0);z=z*.20000000298023224+z;op(a,-A,A,-z,z,0,0,12,10);vo(a,+(i>>1|0),+(j>>1|0));wo(a,i,j);qp(a,c[s>>2]|0,c[t>>2]|0,(c[q>>2]|0)-(c[e>>2]|0)>>3);Fp(a,o,p);y=+f[o>>2]<3.0?-1:c[p>>2]|0;gh(t);gh(s);zb=u;return y|0}function Rm(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+48|0;h=v+32|0;r=v+28|0;s=v+24|0;t=v+20|0;u=v+16|0;n=v+12|0;o=v+8|0;p=v+4|0;q=v;qo(b,n,o,p,q,e);l=a+4|0;c[l>>2]=c[a>>2];m=ro(b)|0;m=(c[m+4>>2]|0)-(c[m>>2]|0)>>2;e=so(b)|0;if(m>>>0>(c[d+4>>2]|0)-(c[d>>2]|0)>>3>>>0){k=Xf(Xf(PE(Xf(Xf(Xf(56032,31870)|0,30067)|0,35e3)|0,342)|0,35007)|0,31916)|0;IE(h,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(k,j)|0;ME(k)|0;ua()}k=a+8|0;e=c[e>>2]|0;h=0;while(1){if((h|0)>=(m|0))break;to(b,r,s,t,u,+f[e>>2],+f[e+4>>2],+f[e+8>>2],+f[e+12>>2],+(c[n>>2]|0)+.5,+(c[o>>2]|0)+.5,+(c[p>>2]|0)+.5,+(c[q>>2]|0)+.5);do if((+f[r>>2]>2]>2]>2]>2]|0)+(c[(c[i>>2]|0)+(h<<2)>>2]<<3)|0;j=c[l>>2]|0;if((j|0)==(c[k>>2]|0)){hn(a,i);break}else{w=i;i=c[w+4>>2]|0;c[j>>2]=c[w>>2];c[j+4>>2]=i;c[l>>2]=(c[l>>2]|0)+8;break}}while(0);e=e+16|0;h=h+1|0}zb=v;return}function Sm(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=zb;zb=zb+64|0;o=q+44|0;p=q+32|0;n=q;m=e+4|0;jn(o,(c[m>>2]|0)-(c[e>>2]|0)>>3);jn(p,(c[m>>2]|0)-(c[e>>2]|0)>>3);l=c[e>>2]|0;m=(c[m>>2]|0)-l>>3;j=c[b>>2]|0;k=c[p>>2]|0;b=c[d>>2]|0;d=c[o>>2]|0;e=0;while(1){if((e|0)==(m|0))break;r=c[l+(e<<3)>>2]|0;c[k+(e<<3)>>2]=c[j+(r*20|0)>>2];c[k+(e<<3)+4>>2]=c[j+(r*20|0)+4>>2];r=c[l+(e<<3)+4>>2]|0;c[d+(e<<3)>>2]=c[b+(r*20|0)>>2];c[d+(e<<3)+4>>2]=c[b+(r*20|0)+4>>2];e=e+1|0}f[n>>2]=0.0;f[n+4>>2]=0.0;s=+(h|0);f[n+8>>2]=s;f[n+12>>2]=0.0;f[n+16>>2]=s;s=+(i|0);f[n+20>>2]=s;f[n+24>>2]=0.0;f[n+28>>2]=s;if(kn(g,a,d,k,m,n,4)|0)e=mn(a,h,i)|0;else e=0;ln(p);ln(o);zb=q;return e|0}function Tm(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+16|0;p=q;h=+ji(h);o=g+4|0;Ym(a,(c[o>>2]|0)-(c[g>>2]|0)>>3);l=p+4|0;m=a+4|0;n=a+8|0;k=0;while(1){i=c[g>>2]|0;if(k>>>0>=(c[o>>2]|0)-i>>3>>>0)break;j=c[i+(k<<3)+4>>2]|0;i=c[e>>2]|0;$m(p,l,b,+f[i+(j*20|0)>>2],+f[i+(j*20|0)+4>>2]);r=+ji(+f[p>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)>>2]);do if(r+ +ji(+f[l>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)+4>>2])<=h){i=(c[g>>2]|0)+(k<<3)|0;j=c[m>>2]|0;if((j|0)==(c[n>>2]|0)){hn(a,i);break}else{s=i;i=c[s+4>>2]|0;c[j>>2]=c[s>>2];c[j+4>>2]=i;c[m>>2]=(c[m>>2]|0)+8;break}}while(0);k=k+1|0}zb=q;return}function Um(b,d,e,g,h){b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=zb;zb=zb+64|0;u=z+40|0;v=z;w=z+52|0;x=z+48|0;t=b+4|0;c[t>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){h=+ji(h);if(!(Xm(v,g,0.0)|0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,31157)|0,35e3)|0,196)|0,35007)|0,31243)|0;IE(u,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(u,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(u);QE(r,q)|0;ME(r)|0;ua()}Ym(b,Ak(d)|0);q=b+8|0;r=b+12|0;p=0;a:while(1){if(p>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,p)|0;o=_m(d,p)|0;$m(w,x,v,+f[o>>2],+f[o+4>>2]);o=o+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){if(l>>>0>=(Ak(e)|0)>>>0)break;g=_m(e,l)|0;if((a[o>>0]|0)==(a[g+16>>0]|0)?(A=+ji(+f[w>>2]-+f[g>>2]),!(A+ +ji(+f[x>>2]-+f[g+4>>2])>h)):0){g=zl(n,Zm(e,l)|0)|0;B=g>>>0>>0;k=B?g:m;g=B?m:g>>>0>>0?g:j;i=B?l:i}else{k=m;g=j}l=l+1|0;m=k;j=g}do if((m|0)!=-1){if((i|0)==-1){y=16;break a}if((j|0)==-1){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u);break}if(+(m>>>0)/+(j>>>0)<+f[r>>2]){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u)}}while(0);p=p+1|0}if((y|0)==16){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,241)|0,35007)|0,31348)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}B=(c[t>>2]|0)-(c[b>>2]|0)>>3;if(B>>>0>(Ak(d)|0)>>>0){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,256)|0,35007)|0,31426)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}else{s=(c[t>>2]|0)-(c[b>>2]|0)>>3;break}}else s=0;while(0);zb=z;return s|0}function Vm(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));return}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Xm(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=+gn(b);if(!(+t(+d)<=c)){d=1.0/d;e=b+16|0;k=b+20|0;j=b+28|0;m=b+32|0;c=d*+xi(+f[e>>2],+f[k>>2],+f[j>>2],+f[m>>2]);f[a>>2]=c;l=b+8|0;h=b+4|0;c=d*+xi(+f[l>>2],+f[h>>2],+f[m>>2],+f[j>>2]);f[a+4>>2]=c;c=d*+xi(+f[h>>2],+f[l>>2],+f[e>>2],+f[k>>2]);f[a+8>>2]=c;g=b+12|0;i=b+24|0;c=d*+xi(+f[k>>2],+f[g>>2],+f[m>>2],+f[i>>2]);f[a+12>>2]=c;c=d*+xi(+f[b>>2],+f[l>>2],+f[i>>2],+f[m>>2]);f[a+16>>2]=c;c=d*+xi(+f[l>>2],+f[b>>2],+f[k>>2],+f[g>>2]);f[a+20>>2]=c;c=d*+xi(+f[g>>2],+f[e>>2],+f[i>>2],+f[j>>2]);f[a+24>>2]=c;c=d*+xi(+f[h>>2],+f[b>>2],+f[j>>2],+f[i>>2]);f[a+28>>2]=c;d=d*+xi(+f[b>>2],+f[h>>2],+f[g>>2],+f[e>>2]);f[a+32>>2]=d;a=1}else a=0;return a|0}function Ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>3>>>0>>0){dn(d,b,(c[a+4>>2]|0)-e>>3,a+8|0);en(a,d);fn(d)}zb=f;return}function Zm(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function _m(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function $m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var g=0.0;g=+f[c+32>>2]+(+f[c+24>>2]*d+ +f[c+28>>2]*e);f[a>>2]=(+f[c+8>>2]+(+f[c>>2]*d+ +f[c+4>>2]*e))/g;f[b>>2]=(+f[c+20>>2]+(+f[c+12>>2]*d+ +f[c+16>>2]*e))/g;return}function an(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function cn(a){a=a|0;return 536870911}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function gn(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;k=a+20|0;e=a+28|0;j=a+32|0;d=+xi(+f[h>>2],+f[k>>2],+f[e>>2],+f[j>>2]);i=a+12|0;g=a+24|0;c=+xi(+f[i>>2],+f[k>>2],+f[g>>2],+f[j>>2]);b=+xi(+f[i>>2],+f[h>>2],+f[g>>2],+f[e>>2]);return +(d*+f[a>>2]-c*+f[a+4>>2]+b*+f[a+8>>2])}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function jn(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){no(a,b);oo(a,b)}return}function kn(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0;j=a+12|0;Vk(j,g);return wn(b,d,e,g,h,i,a,j,a+24|0,+f[a+36>>2],c[a+40>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0)|0}function ln(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0;m=zb;zb=zb+96|0;e=m+88|0;g=m+80|0;h=m+72|0;i=m+64|0;j=m;k=m+56|0;l=m+48|0;d=m+40|0;if(Xm(j,a,9.999999747378752e-06)|0){n=+(b|0);f[k>>2]=n;f[k+4>>2]=0.0;f[l>>2]=n;n=+(c|0);f[l+4>>2]=n;f[d>>2]=0.0;f[d+4>>2]=n;nn(e,j,55476);nn(g,j,k);nn(h,j,l);nn(i,j,d);n=+(B(c,b)|0)*.0001;if(+on(e,g,h,i)>2];e=c+4|0;g=+f[e>>2];d=+f[b+32>>2]+(+f[b+24>>2]*h+ +f[b+28>>2]*g);f[a>>2]=(+f[b+8>>2]+(h*+f[b>>2]+g*+f[b+4>>2]))/d;f[a+4>>2]=(+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]))/d;return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0;f=zb;zb=zb+48|0;l=f+32|0;m=f+24|0;k=f+16|0;h=f+8|0;g=f;rn(l,b,a);rn(m,c,a);rn(k,d,a);rn(h,b,c);rn(g,d,c);j=+sn(l,m);i=+sn(m,k);e=+sn(l,k);e=+tn(j,i,e,+sn(h,g));zb=f;return +e}function pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=+qn(a,b,c)>0.0;f=+qn(b,c,d)>0.0;c=+qn(c,d,a)>0.0;d=+qn(d,a,b)>0.0;d=(f?1:-1)+(e?1:-1)+(c?1:-1)+(d?1:-1)|0;return (((d|0)>-1?d:0-d|0)|0)==4|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];return +((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))}function rn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=+f[b>>2]-+f[c>>2];f[a+4>>2]=+f[b+4>>2]-+f[c+4>>2];return}function sn(a,b){a=a|0;b=b|0;return +(+t(+(+f[a>>2]*+f[b+4>>2]-+f[a+4>>2]*+f[b>>2]))*.5)}function tn(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(+vn(+un(a,b,c),d))}function un(a,b,c){a=+a;b=+b;c=+c;return +(+vn(+vn(a,b),c))}function vn(a,b){a=+a;b=+b;return +(a>2]|0)-(c[i>>2]|0)>>2>>>0<(m*9|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31460)|0,31518)|0,35e3)|0,119)|0,35007)|0,31612)|0;IE(y,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(y,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(y);QE(z,x)|0;ME(z)|0;ua()}x=c[j>>2]|0;z=x;if((c[j+4>>2]|0)-x>>2>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31662)|0,31518)|0,35e3)|0,120)|0,35007)|0,31712)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((c[k+4>>2]|0)-(c[k>>2]|0)>>3>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31754)|0,31518)|0,35e3)|0,121)|0,35007)|0,31816)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((e|0)>=4){c[w>>2]=1234;l=+ji(l);x=Bj(o,e)|0;tl(z,e,0);ul(z,e,e,w);q=z+4|0;r=z+8|0;s=z+12|0;t=(h|0)>0;o=0;u=0;while(1){if(!((u|0)<(m|0)&(o|0)<(n|0)))break;ul(z,e,4,w);D=c[z>>2]<<1;C=c[q>>2]<<1;B=c[r>>2]<<1;j=c[s>>2]<<1;do if(xn(b+(D<<2)|0,b+(C<<2)|0,b+(B<<2)|0,b+(j<<2)|0,d+(D<<2)|0,d+(C<<2)|0,d+(B<<2)|0,d+(j<<2)|0)|0?(v=u*9|0,j=c[z>>2]<<1,B=c[q>>2]<<1,C=c[r>>2]<<1,D=c[s>>2]<<1,yn((c[i>>2]|0)+(v<<2)|0,b+(j<<2)|0,b+(B<<2)|0,b+(C<<2)|0,b+(D<<2)|0,d+(j<<2)|0,d+(B<<2)|0,d+(C<<2)|0,d+(D<<2)|0)|0):0){if(t?!(zn((c[i>>2]|0)+(v<<2)|0,g,h)|0):0){j=u;break}j=u+1|0}else j=u;while(0);o=o+1|0;u=j}l=1.0/l;if(u){o=c[k>>2]|0;j=0;while(1){if((j|0)>=(u|0))break;f[o+(j<<3)>>2]=0.0;c[o+(j<<3)+4>>2]=j;j=j+1|0}t=0;while(1){if(!((u|0)>2&(t|0)<(e|0)))break;r=(Bj(x,e-t|0)|0)+t|0;q=0;j=c[k>>2]|0;while(1){if((q|0)==(u|0))break;s=(c[i>>2]|0)+((c[j+(q<<3)+4>>2]|0)*9<<2)|0;o=t;while(1){if((o|0)>=(r|0))break;j=c[z+(o<<2)>>2]<<1;p=+Bn(s,b+(j<<2)|0,d+(j<<2)|0,l);j=c[k>>2]|0;D=j+(q<<3)|0;f[D>>2]=p+ +f[D>>2];o=o+1|0}q=q+1|0}An(y,j,u);t=r;u=u>>1}q=c[k>>2]|0;o=1;l=+f[q>>2];j=c[q+4>>2]|0;while(1){if((o|0)>=(u|0))break;p=+f[q+(o<<3)>>2];if(p>2]|0}o=o+1|0}Vm(a,(c[i>>2]|0)+(j*9<<2)|0);Cn(a);j=1}else j=0}else j=0;zb=A;return j|0}function xn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=+qn(a,b,c)>0.0;if((!(i^+qn(e,f,g)>0.0)?(i=+qn(b,c,d)>0.0,!(i^+qn(f,g,h)>0.0)):0)?(i=+qn(c,d,a)>0.0,!(i^+qn(g,h,e)>0.0)):0){a=+qn(d,a,b)>0.0;a=a^+qn(h,e,f)>0.0^1}else a=0;return a|0}function yn(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+128|0;w=x;k=x+124|0;l=x+120|0;m=x+112|0;n=x+104|0;o=x+96|0;p=x+88|0;q=x+80|0;r=x+72|0;s=x+64|0;t=x+56|0;u=x+48|0;v=x+40|0;if((In(o,p,q,r,k,m,b,c,d,e)|0?In(s,t,u,v,l,n,g,h,i,j)|0:0)?Jn(w,o,p,q,r,s,t,u,v)|0:0){Kn(a,w,+f[k>>2],m,+f[l>>2],n);a=1}else a=0;zb=x;return a|0}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+48|0;f=n+32|0;e=n+24|0;d=n+16|0;k=n+8|0;l=n;a:do if((c|0)>=2){m=b+8|0;g=b+16|0;nn(f,a,b);nn(e,a,m);nn(d,a,g);Gn(k,f);Gn(l,e);if(Hn(b,m,g,f,e,d)|0){j=3;i=f;f=m;h=b;while(1){if((j|0)>=(c|0))break;h=h+8|0;f=f+8|0;g=g+8|0;nn(i,a,g);if(!(Hn(h,f,g,e,d,i)|0)){d=0;break a}else{o=i;j=j+1|0;i=e;e=d;d=o}}if(Hn(f,g,b,e,d,k)|0)d=Hn(g,b,m,d,k,l)|0;else d=0}else d=0}else d=1;while(0);zb=n;return d|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;Fn(a,b,c,(c&1)+-1+((c|0)/2|0)|0);return}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,g=0,h=0,i=0;e=zb;zb=zb+16|0;i=e+8|0;g=e;h=i+4|0;$m(i,h,a,+f[b>>2],+f[b+4>>2]);f[g>>2]=+f[i>>2]-+f[c>>2];f[g+4>>2]=+f[h>>2]-+f[c+4>>2];d=+Dn(g,d);zb=e;return +d}function Cn(a){a=a|0;var b=0,c=0.0,d=0;b=a+32|0;c=1.0/+f[b>>2];f[a>>2]=+f[a>>2]*c;d=a+4|0;f[d>>2]=c*+f[d>>2];d=a+8|0;f[d>>2]=c*+f[d>>2];d=a+12|0;f[d>>2]=c*+f[d>>2];d=a+16|0;f[d>>2]=c*+f[d>>2];d=a+20|0;f[d>>2]=c*+f[d>>2];d=a+24|0;f[d>>2]=c*+f[d>>2];a=a+28|0;f[a>>2]=c*+f[a>>2];f[b>>2]=1.0;return}function Dn(a,b){a=a|0;b=+b;return +(+En(+f[a>>2],+f[a+4>>2],b))}function En(a,b,c){a=+a;b=+b;c=+c;return +(+z(+((a*a+b*b)*c+1.0)))}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+16|0;g=s;if((d|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,82)|0,35007)|0,33521)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}if((e|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,83)|0,35007)|0,33569)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}p=e+-1|0;q=b+(p<<3)|0;r=b+(p<<3)+4|0;l=d+-1|0;m=0;while(1){if((m|0)>=(l|0))break;n=+f[q>>2];o=c[r>>2]|0;g=m;d=l;do{while(1){j=b+(g<<3)|0;k=+f[j>>2];if(!(k>2]|0)>=(o|0))break}g=g+1|0}while(1){h=b+(d<<3)|0;i=+f[h>>2];if(!(n=(c[b+(d<<3)+4>>2]|0))break}d=d+-1|0}if((g|0)<=(d|0)){f[j>>2]=i;f[h>>2]=k;t=b+(g<<3)+4|0;j=b+(d<<3)+4|0;h=c[t>>2]|0;c[t>>2]=c[j>>2];c[j>>2]=h;g=g+1|0;d=d+-1|0}}while((g|0)<=(d|0));l=(g|0)<(e|0)?l:d;m=(d|0)<(p|0)?g:m}b=q;e=c[b+4>>2]|0;t=a;c[t>>2]=c[b>>2];c[t+4>>2]=e;zb=s;return}function Gn(a,b){a=a|0;b=b|0;var d=0,e=0;e=b;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;c=+qn(a,b,c)>0.0;return c^+qn(d,e,f)>0.0^1|0}function In(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0,w=0,x=0,y=0;l=(+f[h>>2]+ +f[i>>2]+ +f[j>>2]+ +f[k>>2])*.25;f[g>>2]=l;y=h+4|0;x=i+4|0;w=j+4|0;v=k+4|0;m=(+f[y>>2]+ +f[x>>2]+ +f[w>>2]+ +f[v>>2])*.25;f[g+4>>2]=m;s=+f[h>>2]-l;t=+f[y>>2]-m;q=+f[i>>2]-l;r=+f[x>>2]-m;o=+f[j>>2]-l;p=+f[w>>2]-m;l=+f[k>>2]-l;m=+f[v>>2]-m;n=(+u(+(s*s+t*t))+ +u(+(q*q+r*r))+ +u(+(o*o+p*p))+ +u(+(l*l+m*m)))*.25;if(n==0.0)g=0;else{n=1.0/n*1.4142135623730951;f[e>>2]=n;f[a>>2]=s*n;f[a+4>>2]=t*+f[e>>2];f[b>>2]=q*+f[e>>2];f[b+4>>2]=r*+f[e>>2];f[c>>2]=o*+f[e>>2];f[c+4>>2]=p*+f[e>>2];f[d>>2]=l*+f[e>>2];f[d+4>>2]=m*+f[e>>2];g=1}return g|0}function Jn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=zb;zb=zb+288|0;k=j;Ln(k,b,c,d,e,f,g,h,i);if(Mn(a,k)|0)a=!(+t(+(+gn(a)))<1.0e-05);else a=0;zb=j;return a|0}function Kn(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0;l=b+24|0;o=+f[l>>2];q=+f[g>>2];k=b+28|0;n=+f[k>>2];r=o*q+ +f[b>>2]/e;q=q*n+ +f[b+4>>2]/e;p=g+4|0;m=+f[p>>2];o=o*m+ +f[b+12>>2]/e;m=n*m+ +f[b+16>>2]/e;n=+f[d>>2]*c;h=d+4|0;i=+f[h>>2]*c;f[a>>2]=r*c;f[a+4>>2]=q*c;j=b+32|0;f[a+8>>2]=+f[j>>2]*+f[g>>2]+ +f[b+8>>2]/e-r*n-q*i;f[a+12>>2]=o*c;f[a+16>>2]=m*c;f[a+20>>2]=+f[j>>2]*+f[p>>2]+ +f[b+20>>2]/e-o*n-m*i;i=+f[l>>2]*c;f[a+24>>2]=i;e=+f[k>>2]*c;f[a+28>>2]=e;f[a+32>>2]=+f[j>>2]-i*+f[d>>2]-e*+f[h>>2];return}function Ln(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;lo(a,b,f);lo(a+72|0,c,g);lo(a+144|0,d,h);lo(a+216|0,e,i);return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0;d=zb;zb=zb+288|0;c=d;if(((((((Nn(c,b)|0?On(c,b)|0:0)?Pn(c,b)|0:0)?Qn(c,b)|0:0)?Rn(c,b)|0:0)?Sn(c,b)|0:0)?Tn(c,b)|0:0)?Un(c,b)|0:0)a=Vn(a,c)|0;else a=0;zb=d;return a|0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0;g=zb;zb=zb+32|0;d=g;h=+_n(b);f[d>>2]=h;e=b+36|0;h=+_n(e);f[d+4>>2]=h;h=+_n(b+72|0);f[d+8>>2]=h;h=+_n(b+108|0);f[d+12>>2]=h;h=+_n(b+144|0);f[d+16>>2]=h;h=+_n(b+180|0);f[d+20>>2]=h;h=+_n(b+216|0);f[d+24>>2]=h;h=+_n(b+252|0);f[d+28>>2]=h;c=jo(d)|0;d=d+(c<<2)|0;if(+f[d>>2]==0.0)a=0;else{co(b,b+(c*9<<2)|0);Yn(a,b,1.0/+u(+(+f[d>>2])));ko(a+36|0,e,63);a=1}zb=g;return a|0}function On(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0;e=zb;zb=zb+32|0;g=e;c=a+36|0;d=b+36|0;ao(c,a,d);n=a+72|0;ao(n,a,b+72|0);m=a+108|0;ao(m,a,b+108|0);l=a+144|0;ao(l,a,b+144|0);k=a+180|0;ao(k,a,b+180|0);j=a+216|0;ao(j,a,b+216|0);i=a+252|0;ao(i,a,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(n);f[g+4>>2]=h;h=+_n(m);f[g+8>>2]=h;h=+_n(l);f[g+12>>2]=h;h=+_n(k);f[g+16>>2]=h;h=+_n(j);f[g+20>>2]=h;h=+_n(i);f[g+24>>2]=h;a=io(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Pn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0;e=zb;zb=zb+32|0;g=e;c=a+72|0;m=a+36|0;d=b+72|0;ao(c,m,d);l=a+108|0;ao(l,m,b+108|0);k=a+144|0;ao(k,m,b+144|0);j=a+180|0;ao(j,m,b+180|0);i=a+216|0;ao(i,m,b+216|0);a=a+252|0;ao(a,m,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(l);f[g+4>>2]=h;h=+_n(k);f[g+8>>2]=h;h=+_n(j);f[g+12>>2]=h;h=+_n(i);f[g+16>>2]=h;h=+_n(a);f[g+20>>2]=h;a=ho(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0;e=zb;zb=zb+32|0;g=e;c=a+108|0;l=a+72|0;d=b+108|0;ao(c,l,d);k=a+144|0;ao(k,l,b+144|0);j=a+180|0;ao(j,l,b+180|0);i=a+216|0;ao(i,l,b+216|0);a=a+252|0;ao(a,l,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(k);f[g+4>>2]=h;h=+_n(j);f[g+8>>2]=h;h=+_n(i);f[g+12>>2]=h;h=+_n(a);f[g+16>>2]=h;a=go(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0;e=zb;zb=zb+16|0;g=e;c=a+144|0;k=a+108|0;d=b+144|0;ao(c,k,d);j=a+180|0;ao(j,k,b+180|0);i=a+216|0;ao(i,k,b+216|0);a=a+252|0;ao(a,k,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(j);f[g+4>>2]=h;h=+_n(i);f[g+8>>2]=h;h=+_n(a);f[g+12>>2]=h;a=fo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0;e=zb;zb=zb+16|0;g=e;c=a+180|0;j=a+144|0;d=b+180|0;ao(c,j,d);i=a+216|0;ao(i,j,b+216|0);a=a+252|0;ao(a,j,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(i);f[g+4>>2]=h;h=+_n(a);f[g+8>>2]=h;a=eo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0;e=zb;zb=zb+16|0;g=e;c=a+216|0;i=a+180|0;d=b+216|0;ao(c,i,d);a=a+252|0;ao(a,i,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(a);f[g+4>>2]=h;a=bo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Un(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=a+252|0;ao(d,a+216|0,b+252|0);c=+_n(d);if(c==0.0)a=0;else{Yn(d,d,1.0/+u(+c));a=1}return a|0}function Vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0.0;d=zb;zb=zb+384|0;e=d+336|0;c=d;g=+Wn(c,b,0);f[e>>2]=g;g=+Wn(c+36|0,b,1);f[e+4>>2]=g;g=+Wn(c+72|0,b,2);f[e+8>>2]=g;g=+Wn(c+108|0,b,3);f[e+12>>2]=g;g=+Wn(c+144|0,b,4);f[e+16>>2]=g;g=+Wn(c+180|0,b,5);f[e+20>>2]=g;g=+Wn(c+216|0,b,6);f[e+24>>2]=g;g=+Wn(c+252|0,b,7);f[e+28>>2]=g;g=+Wn(c+288|0,b,8);f[e+32>>2]=g;b=Xn(e)|0;if(+f[e+(b<<2)>>2]==0.0)b=0;else{Vm(a,c+(b*9<<2)|0);b=1}zb=d;return b|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,g=0;Yn(a,b,-+f[b+(c<<2)>>2]);g=a+(c<<2)|0;f[g>>2]=+f[g>>2]+1.0;Zn(a,b+36|0,-+f[b+(c+9<<2)>>2]);Zn(a,b+72|0,-+f[b+(c+18<<2)>>2]);Zn(a,b+108|0,-+f[b+(c+27<<2)>>2]);Zn(a,b+144|0,-+f[b+(c+36<<2)>>2]);Zn(a,b+180|0,-+f[b+(c+45<<2)>>2]);Zn(a,b+216|0,-+f[b+(c+54<<2)>>2]);Zn(a,b+252|0,-+f[b+(c+63<<2)>>2]);e=+_n(a);d=+u(+e);if(e==0.0)d=0.0;else Yn(a,a,1.0/d);return +d}function Xn(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;b=+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b;return (+f[a+32>>2]>+f[a+(b<<2)>>2]?8:b)|0}function Yn(a,b,c){a=a|0;b=b|0;c=+c;f[a>>2]=+f[b>>2]*c;f[a+4>>2]=+f[b+4>>2]*c;f[a+8>>2]=+f[b+8>>2]*c;f[a+12>>2]=+f[b+12>>2]*c;f[a+16>>2]=+f[b+16>>2]*c;f[a+20>>2]=+f[b+20>>2]*c;f[a+24>>2]=+f[b+24>>2]*c;f[a+28>>2]=+f[b+28>>2]*c;f[a+32>>2]=+f[b+32>>2]*c;return}function Zn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;f[a>>2]=+f[a>>2]+ +f[b>>2]*c;d=a+4|0;f[d>>2]=+f[d>>2]+ +f[b+4>>2]*c;d=a+8|0;f[d>>2]=+f[d>>2]+ +f[b+8>>2]*c;d=a+12|0;f[d>>2]=+f[d>>2]+ +f[b+12>>2]*c;d=a+16|0;f[d>>2]=+f[d>>2]+ +f[b+16>>2]*c;d=a+20|0;f[d>>2]=+f[d>>2]+ +f[b+20>>2]*c;d=a+24|0;f[d>>2]=+f[d>>2]+ +f[b+24>>2]*c;d=a+28|0;f[d>>2]=+f[d>>2]+ +f[b+28>>2]*c;a=a+32|0;f[a>>2]=+f[a>>2]+ +f[b+32>>2]*c;return}function _n(a){a=a|0;return +(+$n(a,a))}function $n(a,b){a=a|0;b=b|0;return +(+f[a>>2]*+f[b>>2]+ +f[a+4>>2]*+f[b+4>>2]+ +f[a+8>>2]*+f[b+8>>2]+ +f[a+12>>2]*+f[b+12>>2]+ +f[a+16>>2]*+f[b+16>>2]+ +f[a+20>>2]*+f[b+20>>2]+ +f[a+24>>2]*+f[b+24>>2]+ +f[a+28>>2]*+f[b+28>>2]+ +f[a+32>>2]*+f[b+32>>2])}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+$n(c,b);f[a>>2]=+f[a>>2]-d*+f[b>>2];c=a+4|0;f[c>>2]=+f[c>>2]-d*+f[b+4>>2];c=a+8|0;f[c>>2]=+f[c>>2]-d*+f[b+8>>2];c=a+12|0;f[c>>2]=+f[c>>2]-d*+f[b+12>>2];c=a+16|0;f[c>>2]=+f[c>>2]-d*+f[b+16>>2];c=a+20|0;f[c>>2]=+f[c>>2]-d*+f[b+20>>2];c=a+24|0;f[c>>2]=+f[c>>2]-d*+f[b+24>>2];c=a+28|0;f[c>>2]=+f[c>>2]-d*+f[b+28>>2];c=a+32|0;f[c>>2]=+f[c>>2]-d*+f[b+32>>2];return}function bo(a){a=a|0;return +f[a+4>>2]>+f[a>>2]|0}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a>>2]|0;f=a+4|0;c[a>>2]=c[b>>2];d=b+4|0;c[b>>2]=g;g=c[f>>2]|0;e=a+8|0;c[f>>2]=c[d>>2];f=b+8|0;c[d>>2]=g;d=c[e>>2]|0;g=a+12|0;c[e>>2]=c[f>>2];e=b+12|0;c[f>>2]=d;f=c[g>>2]|0;d=a+16|0;c[g>>2]=c[e>>2];g=b+16|0;c[e>>2]=f;e=c[d>>2]|0;f=a+20|0;c[d>>2]=c[g>>2];d=b+20|0;c[g>>2]=e;g=c[f>>2]|0;e=a+24|0;c[f>>2]=c[d>>2];f=b+24|0;c[d>>2]=g;d=c[e>>2]|0;g=a+28|0;c[e>>2]=c[f>>2];e=b+28|0;c[f>>2]=d;f=c[g>>2]|0;d=a+32|0;c[g>>2]=c[e>>2];b=b+32|0;c[e>>2]=f;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function eo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;return (+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b)|0}function fo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;return (+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b)|0}function go(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;return (+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b)|0}function ho(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;return (+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b)|0}function io(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;return (+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b)|0}function jo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;return (+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b)|0}function ko(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;f[a>>2]=-+f[b>>2];e=b+4|0;f[a+4>>2]=-+f[e>>2];f[a+8>>2]=-1.0;mo(a+12|0);f[a+24>>2]=+f[d>>2]*+f[b>>2];f[a+28>>2]=+f[d>>2]*+f[e>>2];c[a+32>>2]=c[d>>2];mo(a+36|0);f[a+48>>2]=-+f[b>>2];f[a+52>>2]=-+f[e>>2];f[a+56>>2]=-1.0;d=d+4|0;f[a+60>>2]=+f[d>>2]*+f[b>>2];f[a+64>>2]=+f[d>>2]*+f[e>>2];c[a+68>>2]=c[d>>2];return}function mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function no(a,b){a=a|0;b=b|0;var d=0;if((rj(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function oo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{po(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function po(a){a=a|0;f[a>>2]=0.0;f[a+4>>2]=0.0;return}function qo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+16|0;j=k;i=a+88|0;n=a+84|0;h=a+52|0;m=(((g|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)%(c[h>>2]|0)|0;c[b>>2]=m;m=(((g-m|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)/(c[h>>2]|0)|0;c[d>>2]=m;m=g-(c[b>>2]|0)-(B(c[h>>2]|0,m)|0)|0;m=((m|0)%(c[i>>2]|0)|0|0)/(c[n>>2]|0)|0;c[e>>2]=m;l=B(c[h>>2]|0,c[d>>2]|0)|0;g=g-(c[b>>2]|0)-((B(c[n>>2]|0,m)|0)+l)|0;i=(g|0)/(c[i>>2]|0)|0;c[f>>2]=i;g=c[b>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,190)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[h>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,191)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[d>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,192)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+56>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,193)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[e>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,194)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+60>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,195)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,196)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<(c[a+64>>2]|0)){zb=k;return}else{n=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,197)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}}function ro(a){a=a|0;return a+124|0}function so(a){a=a|0;return a+112|0}function to(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0;q=zb;zb=zb+16|0;p=q;l=+t(+(h-l));f[b>>2]=l;l=+t(+(i-m));f[d>>2]=l;l=+t(+(k-o));f[g>>2]=l;l=+t(+(j-n));l=+vn(l,+(c[a+60>>2]|0)-l);f[e>>2]=l;if(!(l>=0.0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,31935)|0,32155)|0,35e3)|0,333)|0,35007)|0,31976)|0;IE(p,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);g=XF(p,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(p);QE(q,g)|0;ME(q)|0;ua()}else{zb=q;return}}function uo(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){xo(a,b);oh(a,b)}return}function vo(a,b,c){a=a|0;b=+b;c=+c;f[a+8>>2]=b;f[a+12>>2]=c;return}function wo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function xo(a,b){a=a|0;b=b|0;var d=0;if((ph(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+48|0;j=t+8|0;i=t+32|0;h=t+28|0;k=t+24|0;p=t+20|0;q=t+16|0;r=t;s=a+8|0;if(!(c[s>>2]|0)){o=Xf(Xf(PE(Xf(Xf(Xf(56032,32010)|0,29190)|0,35e3)|0,405)|0,35007)|0,32045)|0;IE(j,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(j,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(j);QE(o,n)|0;ME(o)|0;ua()}c[a+100>>2]=0;l=a+72|0;m=a+76|0;c[m>>2]=c[l>>2];n=a+84|0;o=a+88|0;e=c[o>>2]|0;while(1){d=c[n>>2]|0;f=d;if((d|0)==(e|0))break;g=e-f|0;if((g|0)>8){e=e+-8|0;u=d;v=c[u>>2]|0;u=c[u+4>>2]|0;x=j;c[x>>2]=v;c[x+4>>2]=u;x=e;w=c[x+4>>2]|0;c[d>>2]=c[x>>2];c[d+4>>2]=w;d=e;c[d>>2]=v;c[d+4>>2]=u;Yl(j);c[k>>2]=f;c[p>>2]=e;c[q>>2]=f;c[h>>2]=c[k>>2];c[i>>2]=c[p>>2];c[j>>2]=c[q>>2];Ao(h,i,r,(g>>>3)+-1|0,j);e=c[o>>2]|0}d=0;while(1){if((d|0)==-1)break;x=d+-1|0;Yl(e+(x<<3)|0);d=x}e=e+-8|0;c[o>>2]=e}Bo(a,n,c[s>>2]|0,b);zb=t;return (c[m>>2]|0)-(c[l>>2]|0)>>2|0}function zo(a){a=a|0;return a+72|0}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=zb;zb=zb+16|0;l=m;j=c[f>>2]|0;k=c[a>>2]|0;b=j-k|0;i=j;h=j;if((e|0)>=2?(n=(e+-2|0)/2|0,(n|0)>=(b>>3|0)):0){b=b>>2|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;a=Oo(a,o)|0;b=a?g:b;d=a?o:d}if(!(Oo(d,i)|0)){o=c[j+4>>2]|0;i=l;c[i>>2]=c[j>>2];c[i+4>>2]=o;i=d;while(1){o=h;h=i;g=h;j=c[g+4>>2]|0;c[o>>2]=c[g>>2];c[o+4>>2]=j;c[f>>2]=i;if((n|0)<(b|0))break;b=b<<1|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;j=Oo(a,o)|0;b=j?g:b;d=j?o:d}if(Oo(d,l)|0)break;else i=d}e=l;f=c[e+4>>2]|0;o=i;c[o>>2]=c[e>>2];c[o+4>>2]=f;Yl(l)}}zb=m;return}function Bo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+64|0;m=t+8|0;l=t+56|0;k=t+52|0;n=t+44|0;o=t+36|0;p=t+28|0;q=t;g=t+48|0;h=t+40|0;f=t+32|0;r=t+16|0;if(Co(d)|0){c[g>>2]=c[a+76>>2];s=Do(d)|0;c[h>>2]=c[s>>2];s=(Do(d)|0)+4|0;c[f>>2]=c[s>>2];c[k>>2]=c[g>>2];c[l>>2]=c[h>>2];c[m>>2]=c[f>>2];Eo(a+72|0,k,l,m)|0}else{c[r>>2]=0;h=r+4|0;c[h>>2]=0;c[r+8>>2]=0;Fo(d,r,b,e);f=0;while(1){g=c[r>>2]|0;if(f>>>0>=(c[h>>2]|0)-g>>2>>>0)break;Bo(a,b,c[g+(f<<2)>>2]|0,e);f=f+1|0}i=a+100|0;if((c[i>>2]|0)<(c[a+104>>2]|0)?(j=c[b>>2]|0,s=b+4|0,(j|0)!=(c[s>>2]|0)):0){d=Go(j)|0;f=c[b>>2]|0;g=c[s>>2]|0;h=g-f|0;if((h|0)>8){j=f;g=g+-8|0;u=j;v=c[u>>2]|0;u=c[u+4>>2]|0;x=m;c[x>>2]=v;c[x+4>>2]=u;x=g;w=c[x+4>>2]|0;c[j>>2]=c[x>>2];c[j+4>>2]=w;j=g;c[j>>2]=v;c[j+4>>2]=u;Yl(m);c[n>>2]=f;c[o>>2]=g;c[p>>2]=f;c[k>>2]=c[n>>2];c[l>>2]=c[o>>2];c[m>>2]=c[p>>2];Ao(k,l,q,(h>>>3)+-1|0,m);g=c[s>>2]|0}f=0;while(1){if((f|0)==-1)break;x=f+-1|0;Yl(g+(x<<3)|0);f=x}c[s>>2]=g+-8;c[i>>2]=(c[i>>2]|0)+1;Bo(a,b,d,e)}Ho(r)}zb=t;return}function Co(b){b=b|0;return (a[b+100>>0]|0)!=0|0}function Do(a){a=a|0;return a+116|0}function Eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+48|0;p=s+40|0;o=s+36|0;q=s+32|0;r=s+28|0;j=s+8|0;k=s+4|0;l=s;f=c[a>>2]|0;g=f;b=f+((c[b>>2]|0)-g>>2<<2)|0;d=c[d>>2]|0;f=c[e>>2]|0;n=f-d|0;m=n>>2;a:do if((n|0)>0){h=a+8|0;n=c[a+4>>2]|0;i=n;if((m|0)>((c[h>>2]|0)-i>>2|0)){e=(i-g>>2)+m|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{r=c[a>>2]|0;n=(c[h>>2]|0)-r|0;q=n>>1;ml(j,n>>2>>>0>>1>>>0?(q>>>0>>0?e:q):g,b-r>>2,a+8|0);c[k>>2]=d;c[l>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[l>>2];ap(j,o,p);b=bp(a,j,b)|0;ol(j);break}}g=i-b|0;h=g>>2;e=d+(h<<2)|0;if((m|0)>(h|0)){c[q>>2]=e;c[r>>2]=f;c[o>>2]=c[q>>2];c[p>>2]=c[r>>2];_o(a,o,p,m-h|0);if((g|0)>0)f=e;else break}$o(a,b,n,b+(m<<2)|0);e=b;while(1){if((d|0)==(f|0))break a;c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}}while(0);zb=s;return b|0}function Fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+48|0;n=t+8|0;m=t+36|0;o=t+32|0;p=t+28|0;q=t;r=t+16|0;s=a+104|0;Io(r,(c[a+108>>2]|0)-(c[s>>2]|0)>>2);l=r+4|0;a=-1;f=0;k=-1;while(1){if(f>>>0>=(c[l>>2]|0)-(c[r>>2]|0)>>3>>>0)break;i=yl((c[(c[s>>2]|0)+(f<<2)>>2]|0)+4|0,e)|0;Jo(n,c[(c[s>>2]|0)+(f<<2)>>2]|0,i);g=n;j=c[g+4>>2]|0;h=(c[r>>2]|0)+(f<<3)|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;Yl(n);h=i>>>0>>0;j=h?f:k;a=h?i:a;f=f+1|0;k=j}if((k|0)==-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32065)|0,29190)|0,35e3)|0,155)|0,35007)|0,32099)|0;IE(n,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(n,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(n);QE(j,i)|0;ME(j)|0;ua()}a=c[(c[s>>2]|0)+(k<<2)>>2]|0;c[n>>2]=a;i=b+4|0;f=c[i>>2]|0;j=b+8|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);g=d+4|0;h=d+8|0;e=0;while(1){a=c[r>>2]|0;if(e>>>0>=(c[l>>2]|0)-a>>3>>>0)break;do if((e|0)!=(k|0)){f=Lo(a+(e<<3)|0)|0;if((f|0)==(Lo((c[r>>2]|0)+(k<<3)|0)|0)){a=c[(c[s>>2]|0)+(e<<2)>>2]|0;c[n>>2]=a;f=c[i>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);break}else{a=(c[r>>2]|0)+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){Mo(d,a);a=c[g>>2]|0}else{v=a;u=c[v+4>>2]|0;a=f;c[a>>2]=c[v>>2];c[a+4>>2]=u;a=(c[g>>2]|0)+8|0;c[g>>2]=a}v=c[d>>2]|0;c[o>>2]=v;c[p>>2]=a;c[m>>2]=c[o>>2];c[n>>2]=c[p>>2];No(m,n,q,a-v>>3);break}}while(0);e=e+1|0}Xl(r);zb=t;return}function Go(a){a=a|0;return c[a>>2]|0}function Ho(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Io(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Xo(a,b);Yo(a,b)}return}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=To(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Uo(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Vo(a,d);Wo(d);zb=h;return}}function Lo(a){a=a|0;return c[a+4>>2]|0}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=Po(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;Qo(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;Ro(a,d);So(d);zb=h;return}}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;i=j;if((e|0)>1?(g=(e+-2|0)/2|0,k=c[a>>2]|0,h=k+(g<<3)|0,f=(c[b>>2]|0)+-8|0,c[b>>2]=f,Oo(h,f)|0):0){a=f;e=c[a+4>>2]|0;d=i;c[d>>2]=c[a>>2];c[d+4>>2]=e;d=h;while(1){a=d;e=c[a+4>>2]|0;h=f;c[h>>2]=c[a>>2];c[h+4>>2]=e;c[b>>2]=d;if(!g)break;g=(g+-1|0)/2|0;f=k+(g<<3)|0;if(!(Oo(f,i)|0))break;else{h=d;d=f;f=h}}h=i;b=c[h+4>>2]|0;k=d;c[k>>2]=c[h>>2];c[k+4>>2]=b;Yl(i)}zb=j;return}function Oo(a,b){a=a|0;b=b|0;return (c[a+4>>2]|0)>>>0>(c[b+4>>2]|0)>>>0|0}function Po(a){a=a|0;return 536870911}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-8|0;k=h;j=c[k+4>>2]|0;i=(c[g>>2]|0)+-8|0;c[i>>2]=c[k>>2];c[i+4>>2]=j;c[g>>2]=(c[g>>2]|0)+-8;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function So(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-8|0;c[d>>2]=e;Yl(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function To(a){a=a|0;return 1073741823}function Uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Wo(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Xo(a,b){a=a|0;b=b|0;var d=0;if((Po(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function Yo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Zo(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Zo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a+4|0;d=c[b>>2]|0;while(1){if((d|0)==(f|0))break;b=c[e>>2]|0;c[b>>2]=c[d>>2];c[e>>2]=b+4;d=d+4|0}return}function $o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+4|0;i=c[h>>2]|0;f=i-e|0;g=f>>2;a=b+(g<<2)|0;e=i;while(1){if(a>>>0>=d>>>0)break;c[e>>2]=c[a>>2];j=e+4|0;c[h>>2]=j;a=a+4|0;e=j}if(f|0)$O(i+(0-g<<2)|0,b|0,f|0)|0;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;d=a+8|0;a=c[b>>2]|0;while(1){if((a|0)==(e|0))break;f=c[d>>2]|0;c[f>>2]=c[a>>2];c[d>>2]=f+4;f=a+4|0;c[b>>2]=f;a=f}return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;j=c[i>>2]|0;f=c[a>>2]|0;h=d;g=h-f|0;e=j+(0-(g>>2)<<2)|0;c[i>>2]=e;if((g|0)>0)_O(e|0,f|0,g|0)|0;f=a+4|0;g=b+8|0;e=(c[f>>2]|0)-h|0;if((e|0)>0){_O(c[g>>2]|0,d|0,e|0)|0;c[g>>2]=(c[g>>2]|0)+(e>>>2<<2)}h=c[a>>2]|0;c[a>>2]=c[i>>2];c[i>>2]=h;h=c[f>>2]|0;c[f>>2]=c[g>>2];c[g>>2]=h;h=a+8|0;d=b+12|0;a=c[h>>2]|0;c[h>>2]=c[d>>2];c[d>>2]=a;c[b>>2]=c[i>>2];return j|0}function cp(a){a=a|0;return dp(c[c[a>>2]>>2]|0)|0}function dp(a){a=a|0;return c[a+24>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=b;b=mm((c[a>>2]|0)+4|0,e)|0;zb=d;return b|0}function fp(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;gp(d,c[c[a>>2]>>2]|0);a=gm(zk(c[d>>2]|0)|0)|0;Rj(d);zb=b;return a|0}function gp(a,b){a=a|0;b=b|0;c[a>>2]=c[b+64>>2];b=c[b+68>>2]|0;c[a+4>>2]=b;if(b|0){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1}return}function hp(a){a=a|0;return ip(c[c[a>>2]>>2]|0)|0}function ip(a){a=a|0;return a+12|0}function jp(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;d=b+108|0;e=b+20|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d>>2]=1065353216;f=b+112|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return}function kp(a){a=a|0;Xj(a+124|0);gh(a+112|0);lp(a+92|0);return}function lp(a){a=a|0;mp(a);return}function mp(a){a=a|0;var b=0;np(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function np(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function op(b,d,e,g,h,i,j,k,l){b=b|0;d=+d;e=+e;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;f[b+20>>2]=d;f[b+24>>2]=e;f[b+28>>2]=g;f[b+32>>2]=h;f[b+36>>2]=-1.0;f[b+40>>2]=1.0;c[b+52>>2]=i;c[b+56>>2]=j;c[b+60>>2]=k;c[b+64>>2]=l;l=B(j,i)|0;c[b+84>>2]=l;l=B(l,k)|0;c[b+88>>2]=l;f[b+44>>2]=10.0;f[b+48>>2]=.4342944622039795;a[b+16>>0]=(j|i|0)==0&1;pp(b+92|0);return}function pp(a){a=a|0;var b=0,d=0,e=0;d=a+12|0;if(c[d>>2]|0){e=a+8|0;np(a,c[e>>2]|0);c[e>>2]=0;e=c[a+4>>2]|0;b=0;while(1){if((b|0)==(e|0))break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+1|0}c[d>>2]=0}return}function qp(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;p=t+12|0;q=t+8|0;r=t+4|0;s=t;pp(b+92|0);if(g|0){j=b+112|0;fh(j,g<<2);k=b+124|0;Vk(k,g);if(a[b+16>>0]|0)rp(b,d,e,g);l=b+68|0;m=b+72|0;n=b+76|0;o=b+80|0;h=0;i=0;while(1){if((i|0)>=(g|0))break;u=i<<2;v=d+(u<<2)|0;u=e+(u<<2)|0;sp(b,p,q,r,s,+f[v>>2],+f[v+4>>2],+f[v+8>>2],+f[v+12>>2],+f[u>>2],+f[u+4>>2],+f[u+8>>2],+f[u+12>>2]);if(tp(b,+f[p>>2],+f[q>>2],+f[r>>2],+f[s>>2])|0){v=(c[j>>2]|0)+(h<<2<<2)|0;c[v>>2]=c[l>>2];c[v+4>>2]=c[m>>2];c[v+8>>2]=c[n>>2];c[v+12>>2]=c[o>>2];c[(c[k>>2]|0)+(h<<2)>>2]=i;h=h+1|0}i=i+1|0}fh(j,h<<2);Vk(k,h)}zb=t;return}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;l=zb;zb=zb+16|0;g=l+12|0;k=l;i=a+4|0;j=Aj(c[a>>2]|0,c[i>>2]|0)|0;uo(k,e);if((e|0)<=0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33144)|0,33176)|0,35e3)|0,208)|0,35007)|0,33265)|0;IE(g,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(g,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(g);QE(m,n)|0;ME(m)|0;ua()}if((c[a>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33287)|0,33176)|0,35e3)|0,209)|0,35007)|0,33329)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}if((c[i>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33352)|0,33176)|0,35e3)|0,210)|0,35007)|0,33395)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}h=+(j|0);g=0;while(1){if((g|0)==(e|0))break;n=g<<2;o=+Bp(+f[b+(n<<2)+12>>2],+f[d+(n<<2)+12>>2])*h;f[(c[k>>2]|0)+(g<<2)>>2]=o;g=g+1|0}n=c[k>>2]|0;o=+Dp(n,(c[k+4>>2]|0)-n>>2)*.25;n=Aj(5,~~+A(+((+f[a+24>>2]-+f[a+20>>2])/o)))|0;m=a+52|0;c[m>>2]=n;n=Aj(5,~~+A(+((+f[a+32>>2]-+f[a+28>>2])/o)))|0;c[a+56>>2]=n;n=B(c[m>>2]|0,n)|0;c[a+84>>2]=n;n=B(c[a+60>>2]|0,n)|0;c[a+88>>2]=n;gh(k);zb=l;return}function sp(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+32|0;q=s+16|0;r=s;n=j-n;f[e>>2]=n;j=n;if(!(j<=-3.141592653589793)){if(j>3.141592653589793){n=j+-6.283185307179586;p=5}}else{n=j+6.283185307179586;p=5}if((p|0)==5)f[e>>2]=n;if(!(n>-3.141592653589793)){p=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,468)|0,35007)|0,32407)|0;IE(q,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);t=XF(q,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(q);QE(p,t)|0;ME(p)|0;ua()}if(!(n<=3.141592653589793)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,469)|0,35007)|0,32407)|0;IE(q,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(q,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(q);QE(t,s)|0;ME(t)|0;ua()}else{n=+Bp(k,o);f[g>>2]=n;Cp(r,+f[e>>2],n);n=+z(+(+f[g>>2]));f[g>>2]=n*+f[a+48>>2];n=+f[r>>2];j=+f[r+4>>2];o=+f[r+8>>2];k=+f[r+12>>2];g=a+8|0;t=a+12|0;f[b>>2]=h-(n*l+j*m)+(n*+f[g>>2]+j*+f[t>>2]);f[d>>2]=i-(o*l+k*m)+(o*+f[g>>2]+k*+f[t>>2]);zb=s;return}}function tp(a,b,d,e,g){a=a|0;b=+b;d=+d;e=+e;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;h=x;t=+f[a+20>>2];if((((((!(t>b)?(m=+f[a+24>>2],!(m<=b)):0)?(n=+f[a+28>>2],!(n>d)):0)?(o=+f[a+32>>2],!(o<=d)):0)?(p=e,!(p<=-3.141592653589793|p>3.141592653589793)):0)?(q=+f[a+36>>2],!(q>g)):0)?(r=+f[a+40>>2],!(r<=g)):0){if(!(t<=b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32121)|0,32155)|0,35e3)|0,360)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(m>b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32257)|0,32155)|0,35e3)|0,361)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(n<=d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32290)|0,32155)|0,35e3)|0,362)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(o>d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32339)|0,32155)|0,35e3)|0,363)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p>-3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,364)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p<=3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,365)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(q<=g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32461)|0,32155)|0,35e3)|0,366)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(r>g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32522)|0,32155)|0,35e3)|0,367)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}h=a+68|0;i=a+72|0;l=a+76|0;j=a+80|0;up(a,h,i,l,j,b,d,e,g);h=~~+s(+(+f[h>>2]+-.5));i=~~+s(+(+f[i>>2]+-.5));l=~~+s(+(+f[l>>2]+-.5));j=~~+s(+(+f[j>>2]+-.5));k=c[a+60>>2]|0;l=(k+l|0)%(k|0)|0;if((((h|0)>=0?(u=h+1|0,!((i|0)<0?1:(u|0)>=(c[a+52>>2]|0))):0)?(v=i+1|0,!((j|0)<0?1:(v|0)>=(c[a+56>>2]|0))):0)?(w=j+1|0,(w|0)<(c[a+64>>2]|0)):0){k=(l+1|0)%(k|0)|0;wp(a,vp(a,h,i,l,j)|0,1);wp(a,vp(a,u,i,l,j)|0,1);wp(a,vp(a,u,v,l,j)|0,1);wp(a,vp(a,u,v,k,j)|0,1);wp(a,vp(a,u,v,k,w)|0,1);wp(a,vp(a,u,v,l,w)|0,1);wp(a,vp(a,u,i,k,j)|0,1);wp(a,vp(a,u,i,k,w)|0,1);wp(a,vp(a,u,i,l,w)|0,1);wp(a,vp(a,h,v,l,j)|0,1);wp(a,vp(a,h,v,k,j)|0,1);wp(a,vp(a,h,v,k,w)|0,1);wp(a,vp(a,h,v,l,w)|0,1);wp(a,vp(a,h,i,k,j)|0,1);wp(a,vp(a,h,i,k,w)|0,1);wp(a,vp(a,h,i,l,w)|0,1);h=1}else h=0}else h=0;zb=x;return h|0}function up(a,b,d,e,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;var l=0.0,m=0.0;l=+(c[a+52>>2]|0);m=+f[a+20>>2];h=+Bp(h-m,+f[a+24>>2]-m)*l;f[b>>2]=h;h=+(c[a+56>>2]|0);l=+f[a+28>>2];i=+Bp(i-l,+f[a+32>>2]-l)*h;f[d>>2]=i;f[e>>2]=(j+3.141592653589793)*.15915494309189535*+(c[a+60>>2]|0);j=+(c[a+64>>2]|0);i=+f[a+36>>2];k=+Bp(k-i,+f[a+40>>2]-i)*j;f[g>>2]=k;return}function vp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+16|0;h=k;if((b|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,165)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}g=c[a+52>>2]|0;if((g|0)<=(b|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,166)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}if((d|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,167)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}i=c[a+56>>2]|0;if((i|0)<=(d|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,168)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(j,l)|0;ME(j)|0;ua()}if((e|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,169)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(l,j)|0;ME(l)|0;ua()}j=c[a+60>>2]|0;if((j|0)<=(e|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,170)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);m=XF(h,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(h);QE(l,m)|0;ME(l)|0;ua()}if((f|0)<=-1){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,171)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}if((c[a+64>>2]|0)<=(f|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,172)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}m=(B(g,d)|0)+b|0;l=(B(c[a+84>>2]|0,e)|0)+m|0;a=l+(B(c[a+88>>2]|0,f)|0)|0;if((a|0)>((B(B(i,g)|0,(B(j,f)|0)+e|0)|0)+m|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33012)|0,32155)|0,35e3)|0,176)|0,35007)|0,32597)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}else{zb=k;return a|0}return 0}function wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;e=s+8|0;n=s;if((b|0)<=-1){r=Xf(Xf(PE(Xf(Xf(Xf(56032,32563)|0,32155)|0,35e3)|0,290)|0,35007)|0,32597)|0;IE(e,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(e,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(e);QE(r,q)|0;ME(r)|0;ua()}r=a+92|0;c[e>>2]=b;g=xp(r,e)|0;if(!g){c[n>>2]=b;c[n+4>>2]=d;p=a+96|0;k=c[p>>2]|0;q=(k|0)==0;a:do if(!q){l=k+-1|0;m=(l&k|0)==0;if(!m)if(k>>>0>b>>>0)d=b;else d=(b>>>0)%(k>>>0)|0;else d=l&b;g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g)o=19;else do{g=c[g>>2]|0;if(!g){o=19;break a}h=c[g+4>>2]|0;if((h|0)!=(b|0)){if(!m){if(h>>>0>=k>>>0)h=(h>>>0)%(k>>>0)|0}else h=h&l;if((h|0)!=(d|0)){o=19;break a}}}while((c[g+8>>2]|0)!=(b|0))}else{d=0;o=19}while(0);if((o|0)==19){yp(e,r,b,n);l=a+104|0;i=+(((c[l>>2]|0)+1|0)>>>0);j=+f[a+108>>2];do if(q|j*+(k>>>0)>>0<3|(k+-1&k|0)!=0)&1;g=~~+A(+(i/j))>>>0;zp(r,d>>>0>>0?g:d);d=c[p>>2]|0;g=d+-1|0;if(!(g&d)){k=d;d=g&b;break}if(d>>>0>b>>>0){k=d;d=b}else{k=d;d=(b>>>0)%(d>>>0)|0}}while(0);g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g){h=a+100|0;c[c[e>>2]>>2]=c[h>>2];c[h>>2]=c[e>>2];c[(c[r>>2]|0)+(d<<2)>>2]=h;h=c[e>>2]|0;d=c[h>>2]|0;if(d){d=c[d+4>>2]|0;g=k+-1|0;if(g&k){if(d>>>0>=k>>>0)d=(d>>>0)%(k>>>0)|0}else d=d&g;c[(c[r>>2]|0)+(d<<2)>>2]=h}}else{c[c[e>>2]>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0}}else{r=g+12|0;c[r>>2]=(c[r>>2]|0)+d}zb=s;return}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function yp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=tB(16)|0;c[b>>2]=g;c[b+4>>2]=d+8;c[g+8>>2]=c[f>>2];c[g+12>>2]=c[f+4>>2];a[b+8>>0]=1;c[g+4>>2]=e;c[g>>2]=0;return}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Ap(a,b)}}else Ap(a,b);return}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Bp(a,b){a=+a;b=+b;return +(a/(b==0.0?1.0:b))}function Cp(a,b,c){a=a|0;b=+b;c=+c;var d=0.0;d=+w(+b)*c;c=+x(+b)*c;f[a>>2]=d;f[a+4>>2]=-c;f[a+8>>2]=c;f[a+12>>2]=d;return}function Dp(a,b){a=a|0;b=b|0;return +(+Ep(a,b,(b&1)+-1+((b|0)/2|0)|0))}function Ep(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0;r=zb;zb=zb+16|0;e=r;if((b|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,53)|0,35007)|0,33521)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}if((d|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,54)|0,35007)|0,33569)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}p=d+-1|0;q=a+(p<<2)|0;m=b+-1|0;n=0;while(1){o=+f[q>>2];if((n|0)>=(m|0))break;e=n;b=m;do{while(1){i=a+(e<<2)|0;j=+f[i>>2];k=e+1|0;if(j>2];l=b+-1|0;if(o>2]=h;f[g>>2]=j;e=k;b=l}}while((e|0)<=(b|0));m=(e|0)<(d|0)?m:b;n=(b|0)<(p|0)?e:n}zb=r;return +o}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0,h=0;f[b>>2]=0.0;c[d>>2]=-1;a=a+100|0;e=0.0;while(1){a=c[a>>2]|0;if(!a)break;g=a;h=g+12|0;if(e<+((c[h>>2]|0)>>>0)){c[d>>2]=c[g+8>>2];e=+((c[h>>2]|0)>>>0);f[b>>2]=e}}return}function Gp(a){a=a|0;ko(a,1760,12);ko(a+48|0,1808,12);ko(a+96|0,1856,12);ko(a+144|0,1904,12);ko(a+192|0,1952,12);ko(a+240|0,2e3,12);f[a+288>>2]=.10000000149011612;f[a+292>>2]=.17499999701976776;f[a+296>>2]=.25;f[a+300>>2]=.32499998807907104;f[a+304>>2]=.4000000059604645;f[a+308>>2]=.4749999940395355;f[a+312>>2]=.550000011920929;f[a+316>>2]=7.0;return}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;fm(b,96);Ip(b,((c[e+4>>2]|0)-(c[e>>2]|0)|0)/20|0);Jp(b,d,e,a,a+48|0,a+96|0,a+144|0,a+192|0,a+240|0,+f[a+288>>2],+f[a+292>>2],+f[a+296>>2],+f[a+300>>2],+f[a+304>>2],+f[a+308>>2],+f[a+312>>2],+f[a+316>>2]);return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;g=B(c[b>>2]|0,d)|0;a[f>>0]=0;Wp(b+4|0,g,f);hm(b+16|0,d);zb=e;return}function Jp(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;x=z;if(!d){y=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,33619)|0,35e3)|0,537)|0,35007)|0,33688)|0;IE(x,y+(c[(c[y>>2]|0)+-12>>2]|0)|0);w=XF(x,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(x);QE(y,w)|0;ME(y)|0;ua()}w=Ak(b)|0;y=e+4|0;v=c[y>>2]|0;u=c[e>>2]|0;if((w|0)!=((v-u|0)/20|0|0)){w=Xf(Xf(PE(Xf(Xf(Xf(56032,33704)|0,33619)|0,35e3)|0,538)|0,35007)|0,33757)|0;IE(x,w+(c[(c[w>>2]|0)+-12>>2]|0)|0);t=XF(x,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(x);QE(w,t)|0;ME(w)|0;ua()}w=0;t=0;while(1){u=(v-u|0)/20|0;if(w>>>0>=u>>>0)break;v=Kp(b,t)|0;if(Lp(v,d,(c[e>>2]|0)+(w*20|0)|0,f,g,h,i,j,k,l,m,n,o,p,q,r,s)|0){u=(c[e>>2]|0)+(w*20|0)|0;v=Mp(b,t)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];a[v+16>>0]=a[u+16>>0]|0;t=t+1|0}w=w+1|0;u=c[e>>2]|0;v=c[y>>2]|0}if((t|0)==(u|0)){Ip(b,t);zb=z;return}else{z=Xf(Xf(PE(Xf(Xf(Xf(56032,33794)|0,33619)|0,35e3)|0,617)|0,35007)|0,33845)|0;IE(x,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);k=XF(x,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(x);QE(z,k)|0;ME(z)|0;ua()}}function Kp(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function Lp(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0;s=zb;zb=zb+160|0;r=s;if(Np(r,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)|0){Op(a,r);a=1}else a=0;zb=s;return a|0}function Mp(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function Np(a,b,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;t=zb;zb=zb+336|0;aa=t+288|0;y=t+240|0;D=t+192|0;I=t+144|0;N=t+96|0;S=t+48|0;X=t;v=t+328|0;u=t+324|0;x=+f[d+12>>2]*s;x=x<1.0?1.0:x;Qp(aa,+f[d>>2],+f[d+4>>2],+f[d+8>>2],x);w=+f[aa+8>>2];s=+f[aa+20>>2];Rp(y,aa,e);C=y+8|0;Rp(C,aa,e+8|0);B=y+16|0;Rp(B,aa,e+16|0);A=y+24|0;Rp(A,aa,e+24|0);z=y+32|0;Rp(z,aa,e+32|0);d=y+40|0;Rp(d,aa,e+40|0);Rp(D,aa,g);H=D+8|0;Rp(H,aa,g+8|0);G=D+16|0;Rp(G,aa,g+16|0);F=D+24|0;Rp(F,aa,g+24|0);E=D+32|0;Rp(E,aa,g+32|0);e=D+40|0;Rp(e,aa,g+40|0);Rp(I,aa,h);M=I+8|0;Rp(M,aa,h+8|0);L=I+16|0;Rp(L,aa,h+16|0);K=I+24|0;Rp(K,aa,h+24|0);J=I+32|0;Rp(J,aa,h+32|0);g=I+40|0;Rp(g,aa,h+40|0);Rp(N,aa,i);R=N+8|0;Rp(R,aa,i+8|0);Q=N+16|0;Rp(Q,aa,i+16|0);P=N+24|0;Rp(P,aa,i+24|0);O=N+32|0;Rp(O,aa,i+32|0);h=N+40|0;Rp(h,aa,i+40|0);Rp(S,aa,j);W=S+8|0;Rp(W,aa,j+8|0);V=S+16|0;Rp(V,aa,j+16|0);U=S+24|0;Rp(U,aa,j+24|0);T=S+32|0;Rp(T,aa,j+32|0);i=S+40|0;Rp(i,aa,j+40|0);Rp(X,aa,k);$=X+8|0;Rp($,aa,k+8|0);_=X+16|0;Rp(_,aa,k+16|0);Z=X+24|0;Rp(Z,aa,k+24|0);Y=X+32|0;Rp(Y,aa,k+32|0);j=X+40|0;Rp(j,aa,k+40|0);Sp(b,v,u,x*r);r=+Tp(b,+f[X>>2],+f[X+4>>2],c[v>>2]|0,c[u>>2]|0);f[a>>2]=r;r=+Tp(b,+f[$>>2],+f[X+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+4>>2]=r;r=+Tp(b,+f[_>>2],+f[X+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+8>>2]=r;r=+Tp(b,+f[Z>>2],+f[X+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+12>>2]=r;r=+Tp(b,+f[Y>>2],+f[X+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+16>>2]=r;r=+Tp(b,+f[j>>2],+f[X+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+20>>2]=r;Sp(b,v,u,x*q);r=+Tp(b,+f[S>>2],+f[S+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+24>>2]=r;r=+Tp(b,+f[W>>2],+f[S+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+28>>2]=r;r=+Tp(b,+f[V>>2],+f[S+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+32>>2]=r;r=+Tp(b,+f[U>>2],+f[S+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+36>>2]=r;r=+Tp(b,+f[T>>2],+f[S+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+40>>2]=r;r=+Tp(b,+f[i>>2],+f[S+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+44>>2]=r;Sp(b,v,u,x*p);r=+Tp(b,+f[N>>2],+f[N+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+48>>2]=r;r=+Tp(b,+f[R>>2],+f[N+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+52>>2]=r;r=+Tp(b,+f[Q>>2],+f[N+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+56>>2]=r;r=+Tp(b,+f[P>>2],+f[N+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+60>>2]=r;r=+Tp(b,+f[O>>2],+f[N+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+64>>2]=r;r=+Tp(b,+f[h>>2],+f[N+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+68>>2]=r;Sp(b,v,u,x*o);r=+Tp(b,+f[I>>2],+f[I+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+72>>2]=r;r=+Tp(b,+f[M>>2],+f[I+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+76>>2]=r;r=+Tp(b,+f[L>>2],+f[I+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+80>>2]=r;r=+Tp(b,+f[K>>2],+f[I+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+84>>2]=r;r=+Tp(b,+f[J>>2],+f[I+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+88>>2]=r;r=+Tp(b,+f[g>>2],+f[I+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+92>>2]=r;Sp(b,v,u,x*n);r=+Tp(b,+f[D>>2],+f[D+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+96>>2]=r;r=+Tp(b,+f[H>>2],+f[D+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+100>>2]=r;r=+Tp(b,+f[G>>2],+f[D+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+104>>2]=r;r=+Tp(b,+f[F>>2],+f[D+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+108>>2]=r;r=+Tp(b,+f[E>>2],+f[D+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+112>>2]=r;r=+Tp(b,+f[e>>2],+f[D+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+116>>2]=r;Sp(b,v,u,x*m);r=+Tp(b,+f[y>>2],+f[y+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+120>>2]=r;r=+Tp(b,+f[C>>2],+f[y+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+124>>2]=r;r=+Tp(b,+f[B>>2],+f[y+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+128>>2]=r;r=+Tp(b,+f[A>>2],+f[y+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+132>>2]=r;r=+Tp(b,+f[z>>2],+f[y+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+136>>2]=r;r=+Tp(b,+f[d>>2],+f[y+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+140>>2]=r;Sp(b,v,u,x*l);l=+Tp(b,w,s,c[v>>2]|0,c[u>>2]|0);f[a+144>>2]=l;zb=t;return 1}function Op(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;Il(a,84);c=0;g=0;i=36;j=35;k=36;while(1){if((c|0)==37)break;h=c+1|0;e=b+(c<<2)|0;c=h;d=g;while(1){if((d|0)==(k|0))break;Pp(a,d,+f[e>>2]<+f[b+(c<<2)>>2]&1);c=c+1|0;d=d+1|0}e=k+j|0;c=h;g=g+i|0;i=i+-1|0;j=j+-1|0;k=e}return}function Pp(b,c,e){b=b|0;c=c|0;e=e|0;b=b+((c|0)/8|0)|0;a[b>>0]=(e&255)<<(c&7)|(d[b>>0]|0);return}function Qp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var g=0.0;g=+w(+d)*e;e=+x(+d)*e;f[a>>2]=g;f[a+4>>2]=-e;f[a+8>>2]=b;f[a+12>>2]=e;f[a+16>>2]=g;f[a+20>>2]=c;f[a+24>>2]=0.0;f[a+28>>2]=0.0;f[a+32>>2]=1.0;return}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+4|0;f[a>>2]=+f[b+8>>2]+(+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[d>>2]);f[a+4>>2]=+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[d>>2]);return}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;l=m;g=~~+s(+(+Oi(e)));c[b>>2]=g;e=+z(+(e/+(1<>2]*e);c[d>>2]=g;j=a+20|0;if(((c[j>>2]|0)+-1|0)==(g|0)){c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=0;g=0}h=c[b>>2]|0;if((h|0)>=0){i=c[a+16>>2]|0;if((h|0)<(i|0))h=g;else{c[b>>2]=i+-1;g=(c[j>>2]|0)+-1|0;k=7}}else{c[b>>2]=0;g=0;k=7}if((k|0)==7){c[d>>2]=g;h=g}g=c[b>>2]|0;if((g|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,33865)|0,33900)|0,35e3)|0,268)|0,35007)|0,33993)|0;IE(l,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);b=XF(l,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(l);QE(k,b)|0;ME(k)|0;ua()}if((g|0)>=(c[a+16>>2]|0)){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,269)|0,35007)|0,34061)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<=-1){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,270)|0,35007)|0,34138)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<(c[j>>2]|0)){zb=m;return}else{m=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,271)|0,35007)|0,34212)|0;IE(l,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);a=XF(l,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(l);QE(m,a)|0;ME(m)|0;ua()}}function Tp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var g=0,h=0,i=0;g=zb;zb=zb+16|0;i=g+4|0;h=g;e=Lg(a,d,e)|0;mi(i,h,b,c,d);c=+Up(e,+f[i>>2],+f[h>>2]);zb=g;return +c}function Up(a,b,c){a=a|0;b=+b;c=+c;return +(+Vp(a,b,c))}function Vp(a,b,c){a=a|0;b=+b;c=+c;b=+Zh(b,0.0,+(((Ng(a)|0)+-2|0)>>>0));return +(+Ci(a,b,+Zh(c,0.0,+(((Og(a)|0)+-2|0)>>>0))))}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g|0;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+b}else Xp(a,b-f|0,d);return}function Xp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+32|0;h=k;i=b+8|0;j=b+4|0;f=c[j>>2]|0;do if(((c[i>>2]|0)-f|0)>>>0>>0){f=f-(c[b>>2]|0)+d|0;g=mg(b)|0;if(g>>>0>>0)EO(b);else{l=c[b>>2]|0;m=(c[i>>2]|0)-l|0;i=m<<1;ng(h,m>>>0>>1>>>0?(i>>>0>>0?f:i):g,(c[j>>2]|0)-l|0,b+8|0);Yp(h,d,e);og(b,h);pg(h);break}}else do{a[f>>0]=a[e>>0]|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;d=d+-1|0}while((d|0)!=0);while(0);zb=k;return}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;b=d;d=c[f>>2]|0;do{a[d>>0]=a[e>>0]|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Zp(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+272|0;e=b+256|0;d=b;Ta(e|0)|0;Ra(d|0,256,34263,Oa(e|0)|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,d,Yf(d)|0);zb=b;return}function _p(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;f=i;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];g=a+24|0;h=c[b+24>>2]|0;c[f>>2]=h;e=f+4|0;b=c[b+28>>2]|0;c[e>>2]=b;if(!b){d=e;b=0}else{d=b+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;b=c[e>>2]|0}c[f>>2]=c[g>>2];c[g>>2]=h;h=a+28|0;c[d>>2]=c[h>>2];c[h>>2]=b;aq(f);zb=i;return}function aq(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function bq(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;$p(a,b);return}function cq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=zb;zb=zb+32|0;i=l+16|0;j=l+8|0;k=l;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34281)|0,34314)|0,35e3)|0,127)|0,35007)|0,34386)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);m=XF(i,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(i);QE(h,m)|0;ME(h)|0;ua()}if(!e){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34407)|0,34314)|0,35e3)|0,128)|0,35007)|0,34441)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(f>>>0>>0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34463)|0,34314)|0,35e3)|0,129)|0,35007)|0,34500)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(!g){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34545)|0,34314)|0,35e3)|0,130)|0,35007)|0,34581)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if((f|0)<0)f=B(B(g,d)|0,dq(b)|0)|0;c[a+12>>2]=f;f=B(f,e)|0;h=a+20|0;if((c[h>>2]|0)!=(f|0)?(m=a+24|0,o=uB(f)|0,c[k>>2]=0,c[i>>2]=c[k>>2],eq(j,o,i),o=c[j>>2]|0,c[j>>2]=c[m>>2],c[m>>2]=o,o=j+4|0,k=a+28|0,n=c[o>>2]|0,c[o>>2]=c[k>>2],c[k>>2]=n,aq(j),(c[m>>2]|0)==0):0){o=Xf(Xf(PE(Xf(Xf(Xf(56032,34615)|0,34314)|0,35e3)|0,149)|0,35007)|0,34650)|0;IE(i,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(i,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(i);QE(o,n)|0;ME(o)|0;ua()}c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+16>>2]=g;c[h>>2]=f;zb=l;return}function dq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;switch(a|0){case 1:break;case 2:{a=4;break}default:{d=O(16)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,34774,Yf(34774)|0);mj(d,b);Q(d|0,13208,5)}}zb=d;return a|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15768;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;fq(a,e);zb=d;return}function fq(a,b){a=a|0;b=b|0;return}function gq(a){a=a|0;ZN(a);SA(a);return}function hq(a){a=a|0;SA(c[a+12>>2]|0);return}function iq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34671?a+12|0:0)|0}function jq(a){a=a|0;Pf(a,16);return}function kq(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=zb;zb=zb+16|0;k=j+8|0;l=j+4|0;m=j;c[b>>2]=e;c[b+4>>2]=f;c[b+8>>2]=g;c[b+16>>2]=i;g=B(h,g)|0;c[b+20>>2]=g;c[m>>2]=0;a[l>>0]=a[j+12>>0]|0;c[k>>2]=c[m>>2];lq(b+24|0,d,l,k);if((h|0)<0)h=B(B(i,f)|0,dq(e)|0)|0;c[b+12>>2]=h;zb=j;return}function lq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=zb;zb=zb+16|0;d=e;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15796;c[f+12>>2]=b;c[a+4>>2]=f;c[d>>2]=b;c[d+4>>2]=b;fq(a,d);zb=e;return}function mq(a,b){a=a|0;b=b|0;return}function nq(a){a=a|0;ZN(a);SA(a);return}function oq(a){a=a|0;a=a+12|0;mq(a,c[a>>2]|0);return}function pq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34793?a+12|0:0)|0}function qq(a){a=a|0;Pf(a,16);return}function rq(a){a=a|0;aq(a+24|0);return}function sq(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+4|0;e=0;while(1){g=c[a>>2]|0;if(e>>>0>=(c[f>>2]|0)-g>>3>>>0)break;g=c[g+(e<<3)>>2]|0;Wb[c[(c[g>>2]|0)+8>>2]&3](g,b,d);e=e+1|0}return}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=zb;zb=zb+48|0;i=f;h=f+28|0;g=f+16|0;c[i>>2]=e;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;gO(g,d,Yf(d)|0);vq(h,g,i);tq(a,b,h);jO(h);jO(g);zb=f;return}function vq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+2048|0;g=f;Jx(g,2048,(a[d+11>>0]|0)<0?c[d>>2]|0:d,e)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,g,Yf(g)|0);zb=f;return}function wq(a){a=a|0;g[a>>3]=-1.0;g[a+8>>3]=-1.0;return}function xq(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;Ka(d|0,0)|0;g[a>>3]=+(c[d+4>>2]|0)*1.0e-06+ +(c[d>>2]|0);zb=b;return}function yq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;if(!(+g[a>>3]>=0.0)){d=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,67)|0,35007)|0,35010)|0;IE(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);a=XF(b,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(b);QE(d,a)|0;ME(d)|0;ua()}else{Ka(b|0,0)|0;g[a+8>>3]=+(c[b+4>>2]|0)*1.0e-06+ +(c[b>>2]|0);zb=d;return}}function zq(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0,i=0;f=zb;zb=zb+16|0;d=f;e=+g[a>>3];if(!(e>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,80)|0,35007)|0,35010)|0;IE(d,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(h,i)|0;ME(h)|0;ua()}b=+g[a+8>>3];if(!(b>=0.0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,35037)|0,34927)|0,35e3)|0,81)|0,35007)|0,35075)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);h=XF(d,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(d);QE(i,h)|0;ME(i)|0;ua()}else{zb=f;return +(b-e)}return +(0.0)}function Aq(a){a=a|0;return +(+zq(a)*1.0e3)}function Bq(a,b){a=a|0;b=b|0;var d=0;wq(a);d=a+16|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,b,Yf(b)|0);xq(a);return}function Cq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=zb;zb=zb+48|0;j=k;d=k+24|0;yq(b);f=yk()|0;Zp(d);h=(a[d+11>>0]|0)<0?c[d>>2]|0:d;i=b+16|0;if((a[i+11>>0]|0)<0)e=c[i>>2]|0;else e=i;l=+Aq(b);c[j>>2]=35129;c[j+4>>2]=h;c[j+8>>2]=35137;c[j+12>>2]=e;g[j+16>>3]=l;uq(f,8,35102,j);jO(d);jO(i);zb=k;return}function Dq(){Eq();Fq();Gq();return}function Eq(){c[13871]=0;c[13872]=0;c[13873]=0;c[13874]=0;c[13875]=1065353216;return}function Fq(){c[13876]=0;c[13877]=0;c[13878]=0;c[13879]=0;c[13880]=1065353216;return}function Gq(){Hq(0);return}function Hq(a){a=a|0;var b=0;a=zb;zb=zb+16|0;b=a;Jq(35173,26);Lq(35179,67);Lq(35188,68);Oq(35197,20);Oq(35208,21);Oq(35224,22);Sq(35238,23);Lq(35256,69);Vq(35276,70);Jq(35288,27);Sq(35305,24);Jq(35325,28);Jq(35343,29);Sq(35365,25);Sq(35388,26);Lq(35417,71);Lq(35430,72);Lq(35443,73);Jq(35459,30);Sq(35478,27);Sq(35488,28);Sq(35501,29);Lq(35514,74);Lq(35527,75);kr(35546,114);mr(35558,1);or(35570,1);qr(35593,1);or(35616,2);qr(35638,2);ur(35660,40);Lq(35677,76);ur(35694,41);Lq(35707,77);ur(35720,42);Lq(35744,78);Br(35768,3);qr(35781,3);ur(35794,43);Lq(35812,79);ur(35830,44);Lq(35846,80);ur(35862,45);Lq(35879,81);Jr(35896,15816);Jr(35925,15820);Jr(35953,15824);c[b>>2]=0;Jr(35986,b);c[b>>2]=1;Jr(36003,b);c[b>>2]=0;Jr(36019,b);c[b>>2]=0;Jr(36041,b);c[b>>2]=1;Jr(36066,b);c[b>>2]=1;Jr(36091,b);c[b>>2]=100;Jr(36116,b);c[b>>2]=0;Jr(36143,b);c[b>>2]=1;Jr(36169,b);c[b>>2]=0;Jr(36195,b);c[b>>2]=0;Jr(36222,b);c[b>>2]=1;Jr(36249,b);c[b>>2]=2;Jr(36275,b);c[b>>2]=3;Jr(36300,b);c[b>>2]=4;Jr(36338,b);c[b>>2]=0;Jr(36375,b);c[b>>2]=0;Jr(36409,b);c[b>>2]=1;Jr(36433,b);c[b>>2]=2;Jr(36459,b);c[b>>2]=2;Jr(36486,b);c[b>>2]=5;Jr(36520,b);g[b>>3]=.5;Kr(36538,b);c[b>>2]=0;Jr(36559,b);c[b>>2]=1;Jr(36578,b);c[b>>2]=2;Jr(36596,b);c[b>>2]=3;Jr(36614,b);c[b>>2]=4;Jr(36633,b);c[b>>2]=3;Jr(36655,b);c[b>>2]=515;Jr(36674,b);c[b>>2]=259;Jr(36703,b);c[b>>2]=4;Jr(36731,b);c[b>>2]=772;Jr(36750,b);c[b>>2]=1028;Jr(36780,b);c[b>>2]=0;Jr(36810,b);c[b>>2]=1;Jr(36841,b);c[b>>2]=2;Jr(36877,b);c[b>>2]=3;Jr(36911,b);c[b>>2]=0;Jr(36949,b);c[b>>2]=1;Jr(36982,b);c[b>>2]=2;Jr(37029,b);c[b>>2]=3;Jr(37071,b);c[b>>2]=4;Jr(37114,b);c[b>>2]=5;Jr(37166,b);c[b>>2]=6;Jr(37217,b);c[b>>2]=7;Jr(37262,b);c[b>>2]=8;Jr(37301,b);c[b>>2]=9;Jr(37346,b);zb=a;return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;h=i+8|0;f=i+12|0;g=c[13882]|0;c[13882]=g+1;c[f>>2]=g;g=Ur(55484,f)|0;c[g>>2]=c[f>>2];c[g+208>>2]=a;c[g+212>>2]=b;j=B(a<<2,b)|0;a=g+200|0;c[a>>2]=j;j=FO(j)|0;b=g+196|0;c[b>>2]=j;j=FO((c[a>>2]|0)/4|0)|0;e=g+204|0;c[e>>2]=j;j=hd()|0;c[g+220>>2]=j;if(!j)Ue(0,3,41354,i);yt(c[f>>2]|0,d)|0;c[h>>2]=c[a>>2];Ue(0,1,41391,h);za(0,c[g>>2]|0,c[b>>2]|0,c[a>>2]|0,g+344|0,51360,c[e>>2]|0)|0;zb=i;return c[g>>2]|0}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=tt(d)|0;d=ut(d)|0;ka(a|0,e|0,d|0,vt()|0,8,b|0);zb=c;return}function Kq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;d=g;c[d>>2]=a;if(!(Tr(55484,d)|0))a=-1;else{f=Ur(55484,d)|0;a=f+196|0;b=c[a>>2]|0;if(b|0){GO(b);c[a>>2]=0;c[f+200>>2]=0}pt(f);jd(c[f+220>>2]|0)|0;qt(55484,d)|0;b=f+328|0;d=f+332|0;a=0;while(1){e=c[b>>2]|0;if(a>>>0>=(c[d>>2]|0)-e>>3>>>0)break;Oe(c[e+(a<<3)+4>>2]|0)|0;a=a+1|0}Zr(b);SA(b);Yr(f);SA(f);a=0}zb=g;return a|0}function Lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=lt(d)|0;d=mt(d)|0;ka(a|0,e|0,d|0,Ns()|0,30,b|0);zb=c;return}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;b=g+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{b=Ur(55484,b)|0;e=b+192|0;a=At(c[e>>2]|0,c[b+472>>2]|0)|0;d=b+236|0;c[d>>2]=a;if(!a){Ue(0,3,41323,f);b=b+232|0;Lf(b)|0;a=c[d>>2]|0}else b=b+232|0;Ye(a,5.0)|0;Xe(c[d>>2]|0,.5)|0;_e(c[d>>2]|0,16)|0;Ze(c[d>>2]|0,6)|0;$e(c[d>>2]|0,6)|0;af(c[d>>2]|0,6)|0;a=kt(c[e>>2]|0)|0;c[b>>2]=a;a=0}zb=g;return a|0}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;e=g+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)d=c[d>>2]|0;b=e+340|0;if(!(jt(d,b,e+220|0)|0)){Ue(0,3,41233,f);b=-1;break}else{b=c[b>>2]|0;break}}else b=-1;while(0);zb=g;return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ft(d)|0;d=gt(d)|0;ka(a|0,e|0,d|0,Xs()|0,31,b|0);zb=c;return}function Pq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j+8|0;e=j+12|0;i=j;c[e>>2]=b;do if(!(Tr(55484,e)|0))b=-1;else{h=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)b=c[d>>2]|0;else b=d;f=h+224|0;if(!($s(b,c[h+216>>2]|0,h+220|0,f)|0)){Ue(0,3,41157,g);b=-1;break}b=h+328|0;e=h+332|0;d=c[e>>2]|0;c[i>>2]=d-(c[b>>2]|0)>>3;c[i+4>>2]=c[f>>2];if((c[h+336>>2]|0)==(d|0))at(b,i);else{f=i;g=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=g;c[e>>2]=(c[e>>2]|0)+8}b=c[i>>2]|0}while(0);zb=j;return b|0}function Qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;e=i+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){f=Ur(55484,e)|0;g=f+244|0;b=c[g>>2]|0;if((a[d+11>>0]|0)<0)e=c[d>>2]|0;else e=d;if(!(_s(f,b,e)|0)){Ue(0,3,40842,h);b=-1;break}else{c[g>>2]=(c[g>>2]|0)+1;break}}else b=-1;while(0);zb=i;return b|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;e=g;c[e>>2]=a;if(((Tr(55484,e)|0)!=0?(f=Ur(55484,e)|0,(b|0)>=0):0)?(d=c[f+328>>2]|0,(c[f+332>>2]|0)-d>>3>>>0>b>>>0):0)a=c[(c[d+(b<<3)+4>>2]|0)+4>>2]|0;else a=-1;zb=g;return a|0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Vs(d)|0;d=Ws(d)|0;ka(a|0,e|0,d|0,Xs()|0,32,b|0);zb=c;return}function Tq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=Ur(55484,b)|0;a=(c[a+332>>2]|0)-(c[a+328>>2]|0)>>3}zb=d;return a|0}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+208|0;h=i+192|0;g=i+184|0;d=i;e=b+11|0;if((a[e>>0]|0)<0)f=c[b>>2]|0;else f=b;if((ke(f,1,d,g)|0)<0){if((a[e>>0]|0)<0)b=c[b>>2]|0;c[h>>2]=b;Ue(0,3,40778,h);b=-1}else{b=c[13881]|0;c[13881]=b+1;c[g>>2]=b;_O(Rs(55504,g)|0,d|0,184)|0;b=c[g>>2]|0}zb=i;return b|0}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Ls(d)|0;d=Ms(d)|0;ka(a|0,e|0,d|0,Ns()|0,31,b|0);zb=c;return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=(Ur(55484,e)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){c[((b|0)<0?54536:a+48+(b<<8)|0)+16>>2]=d;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;n=+g[6420];g[a+168>>3]=n;j=+g[6421];g[a+176>>3]=j;m=+g[6422];g[a+184>>3]=m;i=+g[6423];g[a+192>>3]=i;l=+g[6424];g[a+200>>3]=l;h=+g[6425];g[a+208>>3]=h;k=+g[6426];g[a+216>>3]=k;f=+g[6427];g[a+224>>3]=f;g[a+56>>3]=(n+m+l+k)*.25;g[a+64>>3]=(j+i+h+f)*.25;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Uc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Vc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,51360,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function _q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Pe(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function $q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Re(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function ar(a){a=a|0;var b=0,d=0,e=0,f=0;f=zb;zb=zb+48|0;b=f+40|0;e=f;c[b>>2]=a;if(!(Tr(55484,b)|0))a=c[3954]|0;else{a=Ur(55484,b)|0;b=e;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[e>>2]=c[a+196>>2];c[e+16>>2]=1;c[e+12>>2]=c[a+204>>2];a=Mc(c[a+216>>2]|0,e)|0}zb=f;return a|0}function br(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=15816;else{a=(Ur(55484,b)|0)+216|0;a=(c[a>>2]|0)+44|0}zb=d;return c[a>>2]|0}function cr(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(Tr(55484,b)|0)Ur(55484,b)|0;zb=d;return -1}function dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;a=c[e+328>>2]|0;if((b|0)<0?1:(c[e+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}a=c[a+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[a+4>>2]|0)<=(d|0)){a=c[3956]|0;break}else{a=c[a>>2]|0;Ks(a+(d*320|0)+16|0,51360);ya(1,c[a+(d*320|0)+304>>2]|0,c[a+(d*320|0)>>2]|0,c[a+(d*320|0)+4>>2]|0,+(+g[a+(d*320|0)+8>>3]))|0;a=0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function er(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;Aa(2,c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0,+(+g[a+32>>3]),+(+g[a+40>>3]),+(+g[a+48>>3]),+(+g[a+56>>3]),+(+g[a+64>>3]),+(+g[a+72>>3]),+(+g[a+80>>3]),+(+g[a+88>>3]),+(+g[a+96>>3]),+(+g[a+104>>3]),+(+g[a+112>>3]),+(+g[a+120>>3]),+(+g[a+128>>3]),+(+g[a+136>>3]),+(+g[a+144>>3]),+(+g[a+152>>3]),+(+g[a+160>>3]),+(+g[a+168>>3]),+(+g[a+176>>3]),+(+g[a+184>>3]),+(+g[a+192>>3]),+(+g[a+200>>3]),+(+g[a+208>>3]),+(+g[a+216>>3]),+(+g[a+224>>3]),c[a+240>>2]|0)|0;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+80|0;q=r+56|0;p=r+48|0;d=r+72|0;i=r+76|0;e=r+68|0;n=r;o=r+64|0;c[d>>2]=a;do if(!(Tr(55484,d)|0))a=c[3954]|0;else{k=Ur(55484,d)|0;l=k+244|0;if((c[l>>2]|0)<=(b|0)){a=c[3956]|0;break}c[i>>2]=0;c[e>>2]=-1;f[o>>2]=-1.0;m=k+240|0;a=c[m>>2]|0;do if((a|0)==-2){j=k+232|0;yg(c[j>>2]|0,c[k+204>>2]|0)|0;Ag(c[j>>2]|0,i,e)|0;e=c[e>>2]|0;j=c[i>>2]|0;a=-1;d=0;while(1){if((d|0)>=(e|0))break;do if((c[j+(d*68|0)+48>>2]|0)==(b|0)?(c[j+(d*68|0)+60>>2]|0)==0:0){if((a|0)==-1)a=c[j+(d*68|0)+52>>2]|0;else{g=+f[j+(d*68|0)+52>>2];if(!(+f[o>>2]>g))break;a=(f[h>>2]=g,c[h>>2]|0)}c[o>>2]=a;a=d}while(0);d=d+1|0}if((a|0)<=-1){c[m>>2]=-2;d=30;break}i=c[j+48>>2]|0;c[m>>2]=i;e=0;while(1){if((e|0)==3)break;d=0;while(1){if((d|0)==4)break;c[n+(e<<4)+(d<<2)>>2]=c[j+(a*68|0)+(e<<4)+(d<<2)>>2];d=d+1|0}e=e+1|0}vf(c[k+248+(i<<2)>>2]|0,n)|0;a=c[m>>2]|0;d=25}else d=25;while(0);do if((d|0)==25)if((a|0)>-1){a=Ct(c[k+236>>2]|0,c[k+248+(a<<2)>>2]|0,c[k+196>>2]|0,n,o)|0;if((a|0)<0){c[p>>2]=a;Ue(0,1,37701,p);c[m>>2]=-2;d=30;break}p=(c[l>>2]|0)+-1|0;c[q>>2]=c[k+248+(c[m>>2]<<2)>>2];c[q+4>>2]=p;Ue(0,1,37720,q);if((c[m>>2]|0)>-1)xa(3,b|0,+(+f[o>>2]),+(+f[n>>2]),+(+f[n+4>>2]),+(+f[n+8>>2]),+(+f[n+12>>2]),+(+f[n+16>>2]),+(+f[n+20>>2]),+(+f[n+24>>2]),+(+f[n+28>>2]),+(+f[n+32>>2]),+(+f[n+36>>2]),+(+f[n+40>>2]),+(+f[n+44>>2]))|0;else d=30}else d=30;while(0);if((d|0)==30)wa(4,b|0)|0;a=0}while(0);zb=r;return a|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Tr(55484,d)|0))b=0;else{a=(Ur(55484,d)|0)+216|0;d=(b|0)!=0;tc(c[a>>2]|0,d&1)|0;c[e>>2]=d?37670:37674;Ue(0,1,37679,e)}zb=f;return b|0}function hr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;xc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function ir(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;a=c[(c[a>>2]|0)+4834148>>2]|0}zb=d;return a|0}function jr(a){a=a|0;c[3916]=a;return}function kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Fs(d)|0;d=Gs(d)|0;ka(a|0,e|0,d|0,Hs()|0,46,b|0);zb=c;return}function lr(){return c[3916]|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=As(d)|0;d=Bs(d)|0;ka(a|0,e|0,d|0,Cs()|0,82,b|0);zb=c;return}function nr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+312|0;g[d>>3]=b}zb=e;return}function or(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=us(d)|0;d=vs(d)|0;ka(a|0,e|0,d|0,ws()|0,1,b|0);zb=c;return}function pr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+312|0;b=+g[d>>3]}zb=e;return +b}function qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ps(d)|0;d=qs(d)|0;ka(a|0,e|0,d|0,rs()|0,1,b|0);zb=c;return}function rr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+320|0;g[d>>3]=b}zb=e;return}function sr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+320|0;b=+g[d>>3]}zb=e;return +b}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(uc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37628,e)}zb=f;return}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ks(d)|0;d=ls(d)|0;ka(a|0,e|0,d|0,ms()|0,2,b|0);zb=c;return}function vr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Cc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;d=g+4|0;c[d>>2]=a;if((Tr(55484,d)|0?(e=Ur(55484,d)|0,b>>>0<=255):0)?(Ac(c[e+216>>2]|0,b)|0)==0:0){c[f>>2]=b;Ue(0,1,37602,f)}zb=g;return}function xr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Bc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Fc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37567,e)}zb=f;return}function zr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ic(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Ar(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=j+8|0;c[e>>2]=a;if(((Tr(55484,e)|0?(f=Ur(55484,e)|0,!(b<=0.0|b>=1.0)):0)?(h=b,d=c[f+216>>2]|0,d|0):0)?(Jc(d,h)|0)==0:0){g[i>>3]=h;Ue(0,1,37536,i)}zb=j;return}function Br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ds(d)|0;d=es(d)|0;ka(a|0,e|0,d|0,fs()|0,2,b|0);zb=c;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+8|0;e=f;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if(!a)b=-1.0;else{d=(Kc(a,e)|0)==0;b=d?+g[e>>3]:-1.0}}zb=f;return +b}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+216|0;Gc(c[d>>2]|0,b)|0}zb=e;return}function Er(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;Hc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(yc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37506,e)}zb=f;return}function Gr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(zc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Dc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37477,e)}zb=f;return}function Ir(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ec(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Jr(a,b){a=a|0;b=b|0;var c=0;c=Pr()|0;ha(a|0,c|0,+(+Rr(Qr(b)|0)));return}function Kr(a,b){a=a|0;b=b|0;var c=0;c=Lr()|0;ha(a|0,c|0,+(+Nr(+Mr(b))));return}function Lr(){return Or()|0}function Mr(a){a=a|0;return +(+g[a>>3])}function Nr(a){a=+a;return +a}function Or(){return 14120}function Pr(){return Sr()|0}function Qr(a){a=a|0;return c[a>>2]|0}function Rr(a){a=a|0;return +(+(a|0))}function Sr(){return 14080}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Vr(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Wr(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(496)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];g=h+16|0;aP(g|0,0,480)|0;cs(g);a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Wr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)bs(a,b)}}else bs(a,b);return}function Xr(a){a=a|0;Yr(a+8|0);return}function Yr(a){a=a|0;Zr(a+328|0);_r(a+288|0);return}function Zr(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function _r(a){a=a|0;$r(a);return}function $r(a){a=a|0;var b=0;as(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function as(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function cs(a){a=a|0;var b=0;c[a+192>>2]=0;c[a+196>>2]=0;b=a+204|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+240>>2]=-2;c[a+244>>2]=0;b=a+288|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+304>>2]=1065353216;g[a+312>>3]=.0001;g[a+320>>3]=1.0e3;b=a+328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+472>>2]=2;return}function ds(a){a=a|0;return 3}function es(a){a=a|0;return js()|0}function fs(){return 37531}function gs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+is(c);Tb[a&3](b,c);return}function hs(a){a=a|0;return a|0}function is(a){a=+a;return +a}function js(){return 15828}function ks(a){a=a|0;return 3}function ls(a){a=a|0;return os()|0}function ms(){return 37623}function ns(a,b,c){a=a|0;b=b|0;c=c|0;b=hs(b)|0;c=hs(c)|0;Ub[a&63](b,c);return}function os(){return 15840}function ps(a){a=a|0;return 2}function qs(a){a=a|0;return ts()|0}function rs(){return 37654}function ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;c=+Db[a&3](b);g[e>>3]=c;c=+Mr(e);zb=d;return +c}function ts(){return 15852}function us(a){a=a|0;return 3}function vs(a){a=a|0;return zs()|0}function ws(){return 37658}function xs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+ys(c);Tb[a&3](b,c);return}function ys(a){a=+a;return +a}function zs(){return 15860}function As(a){a=a|0;return 1}function Bs(a){a=a|0;return Es()|0}function Cs(){return 37663}function Ds(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;a=Fb[a&1]()|0;c[d>>2]=a;a=Qr(d)|0;zb=b;return a|0}function Es(){return 15872}function Fs(a){a=a|0;return 2}function Gs(a){a=a|0;return Js()|0}function Hs(){return 37666}function Is(a,b){a=a|0;b=b|0;b=hs(b)|0;Sb[a&255](b);return}function Js(){return 15876}function Ks(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((d|0)==3)break;c=0;while(1){if((c|0)==4)break;g[b+(d<<5)+(c<<3)>>3]=+g[a+(d<<5)+(c<<3)>>3];c=c+1|0}d=d+1|0}return}function Ls(a){a=a|0;return 2}function Ms(a){a=a|0;return Qs()|0}function Ns(){return 40673}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zb;zb=zb+16|0;f=d+12|0;e=d;Ps(e,b);b=Gb[a&127](e)|0;c[f>>2]=b;b=Qr(f)|0;jO(e);zb=d;return b|0}function Ps(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,b+4|0,d);return}function Qs(){return 15884}function Rs(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Ss(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ts(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Ss(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(200)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];aP(h+16|0,0,184)|0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Us(a,b)}}else Us(a,b);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Vs(a){a=a|0;return 3}function Ws(a){a=a|0;return Zs()|0}function Xs(){return 40837}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;b=hs(b)|0;d=hs(d)|0;d=Ib[a&63](b,d)|0;c[f>>2]=d;d=Qr(f)|0;zb=e;return d|0}function Zs(){return 15892}function _s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=zb;zb=zb+96|0;n=r+80|0;m=r+72|0;l=r+64|0;k=r+56|0;j=r+48|0;i=r+40|0;q=r+32|0;p=r+24|0;o=r+16|0;h=r+8|0;s=r;e=r+88|0;f=r+84|0;g=c[a+232>>2]|0;c[e>>2]=0;c[s>>2]=d;Ue(0,1,40887,s);do if((Uf(d,40905,f)|0)>=0){c[o>>2]=b;Ue(0,1,40949,o);if((Vf(c[f>>2]|0,-1,b)|0)<0){Ue(0,3,40974,p);a=0;break}if((Sf(e,f)|0)<0){Ue(0,3,41010,q);a=0;break}Ue(0,1,41037,i);c[j>>2]=d;Ue(0,1,41046,j);s=tf(d,41063,0)|0;c[a+248+(b<<2)>>2]=s;if(!s){c[k>>2]=d;Ue(0,3,41068,k)}Ue(0,1,41037,l);if((b|0)==10)Ea(-1);if((fg(g,c[e>>2]|0)|0)<0){Ue(0,3,41101,m);a=0;break}else{Tf(e)|0;Ue(0,1,41126,n);a=1;break}}else{c[h>>2]=d;Ue(0,3,40911,h);a=0}while(0);zb=r;return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=zb;zb=zb+16|0;a=Se(a,c[d>>2]|0)|0;c[e>>2]=a;a:do if(!a){Ue(0,3,41206,f);jd(c[d>>2]|0)|0;a=0}else switch(c[a+108>>2]|0){case 0:{Fc(b,0)|0;a=1;break a}case 1:{Fc(b,2)|0;a=1;break a}default:{Fc(b,3)|0;a=1;break a}}while(0);zb=f;return a|0}function at(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=bt(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;ct(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;dt(a,d);et(d);zb=h;return}}function bt(a){a=a|0;return 536870911}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function et(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ft(a){a=a|0;return 3}function gt(a){a=a|0;return it()|0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;g=e+12|0;f=e;b=hs(b)|0;Ps(f,d);d=Ib[a&63](b,f)|0;c[g>>2]=d;d=Qr(g)|0;jO(f);zb=e;return d|0}function it(){return 15904}function jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;g=sd(c[d>>2]|0,a)|0;c[b>>2]=g;if((g|0)<0){c[e>>2]=a;Ue(0,3,41277,e);jd(c[d>>2]|0)|0;a=0}else a=1;zb=f;return a|0}function kt(a){a=a|0;return Jf(a)|0}function lt(a){a=a|0;return 2}function mt(a){a=a|0;return ot()|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;b=Gb[a&127](b)|0;c[e>>2]=b;b=Qr(e)|0;zb=d;return b|0}function ot(){return 15916}function pt(a){a=a|0;var b=0,d=0;b=a+216|0;d=c[b>>2]|0;if(d|0){gd(d)|0;wc(c[b>>2]|0)|0;c[b>>2]=0}b=a+228|0;if(c[b>>2]|0){rc(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){ne(b)|0;c[b>>2]=0}return}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+4|0;e=f;b=Tr(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];rt(a,d)|0;b=1}zb=f;return b|0}function rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;h=g+16|0;f=g+4|0;i=g;d=c[d>>2]|0;e=c[d>>2]|0;c[i>>2]=d;c[h>>2]=c[i>>2];st(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d|0){if(a[f+8>>0]|0)Xr(d+8|0);Pf(d,496)}zb=g;return e|0}function st(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;i=(m&l|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(l>>>0)|0;else j=m&e;f=(c[d>>2]|0)+(j<<2)|0;n=c[f>>2]|0;while(1){e=c[n>>2]|0;if((e|0)==(o|0))break;else n=e}k=d+8|0;if((n|0)!=(k|0)){e=c[n+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0))g=o;else h=14}else h=14;do if((h|0)==14){e=c[o>>2]|0;if(e|0){e=c[e+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0)){g=o;break}}c[f>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(!i){if(f>>>0>=l>>>0)f=(f>>>0)%(l>>>0)|0}else f=f&m;if((f|0)!=(j|0)){c[(c[d>>2]|0)+(f<<2)>>2]=n;e=c[o>>2]|0}}c[n>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=k;a[b+8>>0]=1;return}function tt(a){a=a|0;return 4}function ut(a){a=a|0;return xt()|0}function vt(){return 41348}function wt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;b=hs(b)|0;d=hs(d)|0;e=hs(e)|0;e=Jb[a&63](b,d,e)|0;c[g>>2]=e;e=Qr(g)|0;zb=f;return e|0}function xt(){return 2048}function yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+48|0;l=m+24|0;k=m+16|0;i=m+8|0;f=m;d=m+32|0;e=m+28|0;c[d>>2]=a;c[e>>2]=b;do if((Tr(55484,d)|0)!=0?(j=Ur(55484,d)|0,(zt(55504,e)|0)!=0):0){h=j+8|0;_O(h|0,Rs(55504,e)|0,184)|0;a=c[h>>2]|0;b=j+208|0;d=c[j+12>>2]|0;e=j+212|0;if(!((a|0)==(c[b>>2]|0)?(d|0)==(c[e>>2]|0):0)){c[f>>2]=a;c[f+4>>2]=d;Ue(0,2,41698,f);be(h,c[b>>2]|0,c[e>>2]|0,h)|0}pt(j);a=me(h,15)|0;d=j+192|0;c[d>>2]=a;if(!a){Ue(0,3,41745,i);a=-1;break}a=sc(a)|0;b=j+216|0;c[b>>2]=a;if(!a){Ue(0,3,41783,k);a=-1;break}Lc(a,c[j+472>>2]|0)|0;k=pc(h)|0;c[j+228>>2]=k;if(!k){Ue(0,3,41820,l);a=-1;break}else{fd(c[b>>2]|0,c[j+220>>2]|0)|0;le(c[d>>2]|0,+g[j+312>>3],+g[j+320>>3],j+344|0);a=kt(c[d>>2]|0)|0;c[j+232>>2]=a;a=0;break}}else a=-1;while(0);zb=m;return a|0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function At(a,b){a=a|0;b=b|0;b=Bt(b,c[a>>2]|0,c[a+4>>2]|0)|0;c[b>>2]=1;c[b+12>>2]=a;a=Ee(a+8|0)|0;c[b+16>>2]=a;Ge(a,0.0)|0;return b|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0;g=zb;zb=zb+16|0;e=FO(13732)|0;if(!e){Ue(0,3,41858,g);Ea(1)}c[e+20>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;c[e+24>>2]=25;c[e+28>>2]=11;c[e+32>>2]=11;c[e+36>>2]=10;f[e+40>>2]=.6000000238418579;f[e+44>>2]=2.0;c[e+13280>>2]=1;d=FO(B(d,b)|0)|0;c[e+13300>>2]=d;if(!d){Ue(0,3,41858,g+8|0);Ea(1)}else{c[e+13304>>2]=0;zb=g;return e|0}return 0}function Ct(a,b,d,e,h){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+48|0;x=D;y=D+40|0;z=D+32|0;a:do if((a|0)!=0&(b|0)!=0&(d|0)!=0&(e|0)!=0&(h|0)!=0){C=b+152|0;if((c[C>>2]|0)<1)i=-2;else{f[h>>2]=0.0;j=b+4|0;B=b+8|0;k=b+56|0;l=b+104|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;wd(B,(c[b>>2]|0)+(i*112|0)+12|0,a+48+(i*48|0)|0)|0;if((c[C>>2]|0)>1?(wd(k,(c[b>>2]|0)+(i*112|0)+12|0,a+528+(i*48|0)|0)|0,(c[C>>2]|0)>2):0)wd(l,(c[b>>2]|0)+(i*112|0)+12|0,a+1008+(i*48|0)|0)|0;i=i+1|0}if((c[a>>2]|0)==1){q=a+12|0;r=a+2672|0;n=a+7496|0;Dt(c[q>>2]|0,a+48|0,b,r,n);o=a+4|0;p=a+8|0}else{o=a+4|0;p=a+8|0;r=a+2672|0;n=a+7496|0;Et(c[o>>2]|0,c[p>>2]|0,a+48|0,b,r,n);q=a+12|0}s=a+36|0;t=a+13280|0;u=b+156|0;v=a+1488|0;w=a+40|0;A=0;i=r;j=0;while(1){if((j|0)>=(c[s>>2]|0))break;m=0;l=A;k=i;while(1){if((m|0)>=(c[t>>2]|0))break;if((j|0)==(c[s>>2]|0))break;i=pf(k,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){if((k|0)!=(r|0))break;i=pf(n,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){k=n;break}else k=n}E=k+(i*24|0)|0;c[x+(m<<2)>>2]=E;c[a+1488+(l<<3)>>2]=c[k+(i*24|0)+16>>2];c[a+1488+(l<<3)+4>>2]=c[k+(i*24|0)+20>>2];c[a+13284+(m*52|0)>>2]=a;c[a+13284+(m*52|0)+4>>2]=b;c[a+13284+(m*52|0)+8>>2]=E;c[a+13284+(m*52|0)+12>>2]=d;i=l+1|0;m=m+1|0;l=(i|0)==5?A:i;j=j+1|0}if(!m)break;l=0;i=A;while(1){if((l|0)==(m|0))break;E=a+13284+(l*52|0)+24|0;A=Lt(c[a+13284+(l*52|0)>>2]|0,c[a+13284+(l*52|0)+4>>2]|0,c[a+13284+(l*52|0)+8>>2]|0,c[a+13284+(l*52|0)+12>>2]|0,c[a+13284+(l*52|0)+16>>2]|0,a+13284+(l*52|0)+20|0,E)|0;c[a+13284+(l*52|0)+48>>2]=A;if((A|0)==0?+f[E>>2]>+f[w>>2]:0){if((c[a>>2]|0)==1){E=c[q>>2]|0;fe(E+104|0,+f[a+13284+(l*52|0)+28>>2],+f[a+13284+(l*52|0)+32>>2],y,z,c[E+176>>2]|0)|0;f[a+1872+(i<<3)>>2]=+g[y>>3];f[a+1872+(i<<3)+4>>2]=+g[z>>3]}else{c[a+1872+(i<<3)>>2]=c[a+13284+(l*52|0)+28>>2];c[a+1872+(i<<3)+4>>2]=c[a+13284+(l*52|0)+32>>2]}c[a+2192+(i*12|0)>>2]=c[a+13284+(l*52|0)+36>>2];c[a+2192+(i*12|0)+4>>2]=c[a+13284+(l*52|0)+40>>2];c[a+2192+(i*12|0)+8>>2]=c[a+13284+(l*52|0)+44>>2];E=c[x+(l<<2)>>2]|0;c[a+1488+(i<<3)>>2]=c[E+16>>2];c[a+1488+(i<<3)+4>>2]=c[E+20>>2];c[a+12320+(i*24|0)>>2]=c[E>>2];c[a+12320+(i*24|0)+4>>2]=c[E+4>>2];c[a+12320+(i*24|0)+8>>2]=c[E+8>>2];c[a+12320+(i*24|0)+12>>2]=0;i=i+1|0}l=l+1|0}A=i;i=k}i=0;while(1){if((i|0)>=(A|0))break;E=b+156+(i*24|0)|0;z=a+12320+(i*24|0)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];c[E+16>>2]=c[z+16>>2];c[E+20>>2]=c[z+20>>2];i=i+1|0}c[b+156+(A*24|0)+12>>2]=-1;i=(A|0)<3;if((c[a>>2]|0)==1){if(i){c[C>>2]=0;i=-3;break}j=a+16|0;k=a+1872|0;l=a+2192|0;F=+Ft(c[j>>2]|0,B,k,l,A,e,0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(Ge(c[j>>2]|0,.800000011920929)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.6000000238418579)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.4000000059604645)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,0.0)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}else{if(i){c[C>>2]=0;i=-3;break}j=a+1872|0;k=a+2192|0;F=+Gt(B,j,k,A,e,0,1.0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(F=+Gt(e,j,k,A,e,1,.800000011920929),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.6000000238418579),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.4000000059604645),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,0.0),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}c[C>>2]=(c[C>>2]|0)+1;i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+104+(i<<4)+(j<<2)>>2]=c[b+56+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+56+(i<<4)+(j<<2)>>2]=c[b+8+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3){i=0;break a}j=0;while(1){if((j|0)==4)break;c[b+8+(i<<4)+(j<<2)>>2]=c[e+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}}}else i=-1;while(0);zb=D;return i|0}function Dt(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;Q=zb;zb=zb+80|0;P=Q+48|0;I=Q;J=Q+76|0;L=Q+72|0;N=Q+64|0;O=Q+56|0;q=d+4|0;r=+(c[a>>2]|0);s=+(c[a+4>>2]|0);t=I+4|0;v=I+12|0;w=I+16|0;x=I+20|0;y=I+28|0;z=I+32|0;A=I+36|0;B=I+44|0;C=I+8|0;D=I+24|0;E=I+40|0;F=N+4|0;G=O+4|0;H=g+4812|0;k=0;l=0;p=0;a:while(1){if((p|0)>=(c[q>>2]|0)){i=29;break}i=0;while(1){if((i|0)==3)break;h=0;while(1){if((h|0)==4)break;c[I+(i<<4)+(h<<2)>>2]=c[b+(p*48|0)+(i<<4)+(h<<2)>>2];h=h+1|0}i=i+1|0}h=k;i=l;o=0;k=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0;while(1){if((o|0)>=(c[k+4>>2]|0))break;n=0;l=k;while(1){k=c[l>>2]|0;if((n|0)>=(c[k+(o*20|0)+4>>2]|0))break;l=c[k+(o*20|0)>>2]|0;l=(Df(a,I,+f[l+(n*20|0)+8>>2],+f[l+(n*20|0)+12>>2],J,L)|0)<0;j=+f[J>>2];do if((!(l|j<0.0)?(m=+f[L>>2],!(m>=s)&(!(j>=r)&!(m<0.0))):0)?(l=c[(c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0)+(o*20|0)>>2]|0,K=+f[l+(n*20|0)+8>>2],M=+f[l+(n*20|0)+12>>2],R=+f[v>>2]+(+f[I>>2]*K+ +f[t>>2]*M),j=+f[y>>2]+(K*+f[w>>2]+M*+f[x>>2]),S=+f[B>>2]+(K*+f[z>>2]+M*+f[A>>2]),m=+u(+(R*R+j*j+S*S)),!(+f[E>>2]*(S/m)+(+f[C>>2]*(R/m)+ +f[D>>2]*(j/m))>-.10000000149011612)):0){f[N>>2]=K;f[F>>2]=M;nf(a,I,N,O)|0;j=+f[G>>2];k=c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0;m=+f[k+(o*20|0)+12>>2];if(j<=m?j>=+f[k+(o*20|0)+16>>2]:0){if((i|0)==200){i=19;break a}c[e+(i*24|0)>>2]=p;c[e+(i*24|0)+4>>2]=o;c[e+(i*24|0)+8>>2]=n;c[e+(i*24|0)+16>>2]=c[J>>2];c[e+(i*24|0)+20>>2]=c[L>>2];c[e+(i*24|0)+12>>2]=0;i=i+1|0;break}if(j<=m*2.0?j>=+f[k+(o*20|0)+16>>2]*.5:0)if((h|0)==200){c[H>>2]=-1;h=200;break}else{c[g+(h*24|0)>>2]=p;c[g+(h*24|0)+4>>2]=o;c[g+(h*24|0)+8>>2]=n;c[g+(h*24|0)+16>>2]=c[J>>2];c[g+(h*24|0)+20>>2]=c[L>>2];c[g+(h*24|0)+12>>2]=0;h=h+1|0;break}}while(0);n=n+1|0;l=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0}o=o+1|0;k=l}k=h;l=i;p=p+1|0}if((i|0)==19){Ue(0,3,41890,P);h=e+4812|0}else if((i|0)==29){c[e+(l*24|0)+12>>2]=-1;h=g+(k*24|0)+12|0}c[h>>2]=-1;zb=Q;return} +function Et(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+80|0;A=B+48|0;w=B;x=B+76|0;y=B+72|0;z=B+64|0;u=B+56|0;v=e+4|0;t=+(a|0);p=+(b|0);q=z+4|0;r=u+4|0;s=h+4812|0;j=0;k=0;o=0;a:while(1){if((o|0)>=(c[v>>2]|0)){b=28;break}b=0;while(1){if((b|0)==3)break;a=0;while(1){if((a|0)==4)break;c[w+(b<<4)+(a<<2)>>2]=c[d+(o*48|0)+(b<<4)+(a<<2)>>2];a=a+1|0}b=b+1|0}a=j;b=k;n=0;j=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0;while(1){if((n|0)>=(c[j+4>>2]|0))break;m=0;k=j;while(1){j=c[k>>2]|0;if((m|0)>=(c[j+(n*20|0)+4>>2]|0))break;k=c[j+(n*20|0)>>2]|0;k=(Df(0,w,+f[k+(m*20|0)+8>>2],+f[k+(m*20|0)+12>>2],x,y)|0)<0;i=+f[x>>2];do if(!(k|i<0.0)?(l=+f[y>>2],!(l>=p)&(!(i>=t)&!(l<0.0))):0){j=c[(c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(n*20|0)>>2]|0;c[z>>2]=c[j+(m*20|0)+8>>2];c[q>>2]=c[j+(m*20|0)+12>>2];nf(0,w,z,u)|0;i=+f[r>>2];j=c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0;l=+f[j+(n*20|0)+12>>2];if(i<=l?i>=+f[j+(n*20|0)+16>>2]:0){if((b|0)==200){b=18;break a}c[g+(b*24|0)>>2]=o;c[g+(b*24|0)+4>>2]=n;c[g+(b*24|0)+8>>2]=m;c[g+(b*24|0)+16>>2]=c[x>>2];c[g+(b*24|0)+20>>2]=c[y>>2];c[g+(b*24|0)+12>>2]=0;b=b+1|0;break}if(i<=l*2.0?i>=+f[j+(n*20|0)+16>>2]*.5:0)if((a|0)==200){c[s>>2]=-1;a=200;break}else{c[h+(a*24|0)>>2]=o;c[h+(a*24|0)+4>>2]=n;c[h+(a*24|0)+8>>2]=m;c[h+(a*24|0)+16>>2]=c[x>>2];c[h+(a*24|0)+20>>2]=c[y>>2];c[h+(a*24|0)+12>>2]=0;a=a+1|0;break}}while(0);m=m+1|0;k=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0}n=n+1|0;j=k}j=a;k=b;o=o+1|0}if((b|0)==18){Ue(0,3,41890,A);a=g+4812|0}else if((b|0)==28){c[g+(k*24|0)+12>>2]=-1;a=h+(j*24|0)+12|0}c[a>>2]=-1;zb=B;return}function Ft(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;w=zb;zb=zb+224|0;s=w+212|0;t=w+96|0;v=w;u=w+192|0;l=FO(h<<4)|0;c[s>>2]=l;if(!l){Ue(0,3,41858,w+200|0);Ea(1)}p=FO(h*24|0)|0;q=s+4|0;c[q>>2]=p;if(!p){Ue(0,3,41858,w+208|0);Ea(1)}k=0;o=0.0;n=0.0;m=0.0;while(1){if((k|0)>=(h|0))break;r=m+ +f[e+(k*12|0)>>2];x=n+ +f[e+(k*12|0)+4>>2];y=o+ +f[e+(k*12|0)+8>>2];k=k+1|0;o=y;n=x;m=r}y=+(h|0);r=m/y;n=n/y;m=o/y;k=0;while(1){if((k|0)>=(h|0))break;g[l+(k<<4)>>3]=+f[d+(k<<3)>>2];g[l+(k<<4)+8>>3]=+f[d+(k<<3)+4>>2];g[p+(k*24|0)>>3]=+f[e+(k*12|0)>>2]-r;g[p+(k*24|0)+8>>3]=+f[e+(k*12|0)+4>>2]-n;g[p+(k*24|0)+16>>3]=+f[e+(k*12|0)+8>>2]-m;k=k+1|0}c[s+8>>2]=h;k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;g[t+(k<<5)+(l<<3)>>3]=+f[b+(k<<4)+(l<<2)>>2];l=l+1|0}k=k+1|0}g[t+24>>3]=+f[b+12>>2]+(r*+f[b>>2]+n*+f[b+4>>2]+m*+f[b+8>>2]);g[t+56>>3]=+f[b+28>>2]+(r*+f[b+16>>2]+n*+f[b+20>>2]+m*+f[b+24>>2]);g[t+88>>3]=+f[b+44>>2]+(r*+f[b+32>>2]+n*+f[b+36>>2]+m*+f[b+40>>2]);if(!j){if((He(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8}else if((Je(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8;GO(c[s>>2]|0);GO(c[q>>2]|0);k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;f[i+(k<<4)+(l<<2)>>2]=+g[v+(k<<5)+(l<<3)>>3];l=l+1|0}k=k+1|0}x=n;y=m;f[i+12>>2]=+g[v+24>>3]-+g[v>>3]*r-+g[v+8>>3]*x-+g[v+16>>3]*y;f[i+28>>2]=+g[v+56>>3]-+g[v+32>>3]*r-+g[v+40>>3]*x-+g[v+48>>3]*y;f[i+44>>2]=+g[v+88>>3]-+g[v+64>>3]*r-+g[v+72>>3]*x-+g[v+80>>3]*y;zb=w;return +(+g[u>>3])}function Gt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;if(!f)g=+Ht(a,b,c,d,e);else g=+It(a,b,c,d,e,g);return +g}function Ht(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0;H=zb;zb=zb+48|0;i=H+40|0;h=H+32|0;F=H;do if((d|0)>=4?(j=a+44|0,!(+f[j>>2]==0.0)):0){G=FO(d<<6)|0;if(!G){Ue(0,3,41875,h);g=-1.0;break}E=FO(d<<3)|0;if(!E){Ue(0,3,41875,i);GO(G);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[j>>2];i=i+1|0}h=h+1|0}a=e+4|0;j=e+12|0;q=e+16|0;r=e+20|0;s=e+28|0;t=e+32|0;u=e+36|0;v=+(d|0);w=d<<1;x=F+4|0;y=F+8|0;z=F+12|0;A=F+16|0;B=F+20|0;C=F+24|0;D=F+28|0;p=0.0;i=0;a:while(1){g=0.0;h=0;while(1){if((h|0)>=(d|0))break;k=+f[c+(h*12|0)>>2];l=+f[c+(h*12|0)+4>>2];m=+f[j>>2]+(+f[e>>2]*k+ +f[a>>2]*l);n=+f[s>>2]+(k*+f[q>>2]+l*+f[r>>2]);o=k*+f[t>>2]+l*+f[u>>2]+1.0;if(o==0.0){h=17;break a}L=o*o;J=+f[b+(h<<3)>>2]-m/o;I=+f[b+(h<<3)+4>>2]-n/o;K=h<<1;f[E+(K<<2)>>2]=J;f[E+((K|1)<<2)>>2]=I;N=k/o;K=h<<4;f[G+(K<<2)>>2]=N;M=l/o;f[G+((K|1)<<2)>>2]=M;o=1.0/o;f[G+((K|2)<<2)>>2]=o;f[G+((K|3)<<2)>>2]=0.0;f[G+((K|4)<<2)>>2]=0.0;f[G+((K|5)<<2)>>2]=0.0;f[G+((K|6)<<2)>>2]=-(k*m)/L;f[G+((K|7)<<2)>>2]=-(l*m)/L;f[G+((K|8)<<2)>>2]=0.0;f[G+((K|9)<<2)>>2]=0.0;f[G+((K|10)<<2)>>2]=0.0;f[G+((K|11)<<2)>>2]=N;f[G+((K|12)<<2)>>2]=M;f[G+((K|13)<<2)>>2]=o;f[G+((K|14)<<2)>>2]=-(k*n)/L;f[G+((K|15)<<2)>>2]=-(l*n)/L;g=g+(J*J+I*I);h=h+1|0}g=g/v;if(g<.10000000149011612){h=26;break}if((i|0)!=0&g<4.0){if((i|0)==10|g/p>.9900000095367432){h=26;break}}else if((i|0)==10){h=26;break}if((Kt(F,E,G,w)|0)<0){h=24;break}f[e>>2]=+f[F>>2]+ +f[e>>2];f[a>>2]=+f[x>>2]+ +f[a>>2];f[j>>2]=+f[y>>2]+ +f[j>>2];f[q>>2]=+f[z>>2]+ +f[q>>2];f[r>>2]=+f[A>>2]+ +f[r>>2];f[s>>2]=+f[B>>2]+ +f[s>>2];f[t>>2]=+f[C>>2]+ +f[t>>2];f[u>>2]=+f[D>>2]+ +f[u>>2];p=g;i=i+1|0}if((h|0)==17){GO(G);GO(E);g=1.0e8;break}else if((h|0)==24){GO(G);GO(E);g=1.0e8;break}else if((h|0)==26){GO(G);GO(E);break}}else g=1.0e8;while(0);zb=H;return +g}function It(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0;J=zb;zb=zb+64|0;k=J+56|0;j=J+48|0;i=J+40|0;h=J+32|0;I=J;do if((d|0)>=4?(l=a+44|0,!(+f[l>>2]==0.0)):0){G=+(d|0);m=~~(G*g)+-1|0;m=(m|0)>4?m:4;H=FO(d<<6)|0;if(!H){Ue(0,3,41875,h);g=-1.0;break}F=FO(d<<3)|0;if(!F){Ue(0,3,41875,i);GO(H);g=-1.0;break}h=d<<2;E=FO(h)|0;if(!E){Ue(0,3,41875,j);GO(H);GO(F);g=-1.0;break}D=FO(h)|0;if(!D){Ue(0,3,41875,k);GO(H);GO(F);GO(E);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[l>>2];i=i+1|0}h=h+1|0}w=e+4|0;x=e+12|0;y=e+16|0;z=e+20|0;A=e+28|0;B=e+32|0;C=e+36|0;k=D+(m<<2)|0;a=I+4|0;l=I+8|0;m=I+12|0;s=I+16|0;t=I+20|0;u=I+24|0;v=I+28|0;r=0.0;j=0;a:while(1){h=0;while(1){if((h|0)>=(d|0))break;g=+f[c+(h*12|0)>>2];n=+f[c+(h*12|0)+4>>2];o=+f[x>>2]+(+f[e>>2]*g+ +f[w>>2]*n);p=+f[A>>2]+(g*+f[y>>2]+n*+f[z>>2]);q=g*+f[B>>2]+n*+f[C>>2]+1.0;if(q==0.0){h=21;break a}K=q*q;L=+f[b+(h<<3)>>2]-o/q;M=+f[b+(h<<3)+4>>2]-p/q;i=h<<1;f[F+(i<<2)>>2]=L;f[F+((i|1)<<2)>>2]=M;M=L*L+M*M;f[D+(h<<2)>>2]=M;f[E+(h<<2)>>2]=M;M=g/q;i=h<<4;f[H+(i<<2)>>2]=M;L=n/q;f[H+((i|1)<<2)>>2]=L;q=1.0/q;f[H+((i|2)<<2)>>2]=q;f[H+((i|3)<<2)>>2]=0.0;f[H+((i|4)<<2)>>2]=0.0;f[H+((i|5)<<2)>>2]=0.0;f[H+((i|6)<<2)>>2]=-(g*o)/K;f[H+((i|7)<<2)>>2]=-(n*o)/K;f[H+((i|8)<<2)>>2]=0.0;f[H+((i|9)<<2)>>2]=0.0;f[H+((i|10)<<2)>>2]=0.0;f[H+((i|11)<<2)>>2]=M;f[H+((i|12)<<2)>>2]=L;f[H+((i|13)<<2)>>2]=q;f[H+((i|14)<<2)>>2]=-(g*p)/K;f[H+((i|15)<<2)>>2]=-(n*p)/K;h=h+1|0}oy(D,d,4,32);p=+f[k>>2]*4.0;p=p<16.0?16.0:p;o=p/6.0;n=0.0;h=0;while(1){if((h|0)==(d|0))break;g=+f[D+(h<<2)>>2];if(g>p)g=o;else{g=1.0-g/p;g=o*(1.0-g*(g*g))}n=n+g;h=h+1|0}g=n/G;if(g<.10000000149011612){h=42;break}if((j|0)!=0&g<4.0){if((j|0)==10|g/r>.9900000095367432){h=42;break}}else if((j|0)==10){h=42;break}h=0;i=0;while(1){if((i|0)==(d|0))break;n=+f[E+(i<<2)>>2];if(n<=p){M=1.0-n/p;M=M*M;O=i<<4;N=h<<3;f[H+(N<<2)>>2]=M*+f[H+(O<<2)>>2];f[H+((N|1)<<2)>>2]=M*+f[H+((O|1)<<2)>>2];f[H+((N|2)<<2)>>2]=M*+f[H+((O|2)<<2)>>2];f[H+((N|3)<<2)>>2]=M*+f[H+((O|3)<<2)>>2];f[H+((N|4)<<2)>>2]=M*+f[H+((O|4)<<2)>>2];f[H+((N|5)<<2)>>2]=M*+f[H+((O|5)<<2)>>2];f[H+((N|6)<<2)>>2]=M*+f[H+((O|6)<<2)>>2];f[H+((N|7)<<2)>>2]=M*+f[H+((O|7)<<2)>>2];f[H+(N+8<<2)>>2]=M*+f[H+((O|8)<<2)>>2];f[H+(N+9<<2)>>2]=M*+f[H+((O|9)<<2)>>2];f[H+(N+10<<2)>>2]=M*+f[H+((O|10)<<2)>>2];f[H+(N+11<<2)>>2]=M*+f[H+((O|11)<<2)>>2];f[H+(N+12<<2)>>2]=M*+f[H+((O|12)<<2)>>2];f[H+(N+13<<2)>>2]=M*+f[H+((O|13)<<2)>>2];f[H+(N+14<<2)>>2]=M*+f[H+((O|14)<<2)>>2];f[H+(N+15<<2)>>2]=M*+f[H+((O|15)<<2)>>2];N=i<<1;f[F+(h<<2)>>2]=M*+f[F+(N<<2)>>2];f[F+(h+1<<2)>>2]=M*+f[F+((N|1)<<2)>>2];h=h+2|0}i=i+1|0}if((h|0)<6){h=38;break}if((Kt(I,F,H,h)|0)<0){h=40;break}f[e>>2]=+f[I>>2]+ +f[e>>2];f[w>>2]=+f[a>>2]+ +f[w>>2];f[x>>2]=+f[l>>2]+ +f[x>>2];f[y>>2]=+f[m>>2]+ +f[y>>2];f[z>>2]=+f[s>>2]+ +f[z>>2];f[A>>2]=+f[t>>2]+ +f[A>>2];f[B>>2]=+f[u>>2]+ +f[B>>2];f[C>>2]=+f[v>>2]+ +f[C>>2];r=g;j=j+1|0}if((h|0)==21){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==38){GO(H);GO(F);GO(E);GO(D);g=-1.0;break}else if((h|0)==40){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==42){GO(H);GO(F);GO(E);GO(D);break}}else g=1.0e8;while(0);zb=J;return +g}function Jt(a,b){a=a|0;b=b|0;var c=0.0;c=+f[a>>2]-+f[b>>2];return (c<0.0?-1:c>0.0&1)|0}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=8;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=8;c[f>>2]=d;e=Jd(f)|0;if(!e)a=-1;else{d=Hd(e,f)|0;if(!d)a=-1;else{b=Hd(e,g)|0;if(!b)a=-1;else{if((Zd(d)|0)<0)a=-1;else{Od(h,d,b)|0;a=0}Md(b)|0}Md(d)|0}Md(e)|0}zb=i;return a|0}function Lt(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+32|0;j=s;q=s+28|0;r=s+24|0;o=c[d>>2]|0;p=c[d+4>>2]|0;n=c[d+8>>2]|0;d=c[h>>2]|0;if(!d){d=Af(c[a+28>>2]|0,c[a+32>>2]|0)|0;c[h>>2]=d}k=a+12|0;m=a+48+(o*48|0)|0;l=c[b>>2]|0;if((Bf(c[k>>2]|0,m,c[l+(o*112|0)>>2]|0,(c[c[l+(o*112|0)+4>>2]>>2]|0)+(p*20|0)|0,n,d)|0)>=0?(l=c[h>>2]|0,d=c[l+28>>2]|0,t=+(B(d,d)|0),!(+(B((c[l+16>>2]|0)+1+(c[l+20>>2]|0)|0,(c[l+8>>2]|0)+1+(c[l+12>>2]|0)|0)|0)*5.0*5.0>t)):0){l=c[b+152>>2]|0;do if((l|0)!=1){d=c[k>>2]|0;k=a+528+(o*48|0)|0;if((l|0)==2){Cf(d,m,k,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}else{Cf(d,m,k,a+1008+(o*48|0)|0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}}else Cf(c[k>>2]|0,m,0,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);while(0);m=c[a+24>>2]|0;if((wf(e,g,c[a+4>>2]|0,c[a+8>>2]|0,c[a+20>>2]|0,c[h>>2]|0,m,m,j,q,r,i)|0)>=0){f[i+4>>2]=+(c[q>>2]|0);f[i+8>>2]=+(c[r>>2]|0);r=c[b>>2]|0;j=c[(c[c[r+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0;q=j+(n*20|0)+8|0;j=j+(n*20|0)+12|0;f[i+12>>2]=+f[r+(o*112|0)+24>>2]+(+f[r+(o*112|0)+12>>2]*+f[q>>2]+ +f[r+(o*112|0)+16>>2]*+f[j>>2]);f[i+16>>2]=+f[r+(o*112|0)+40>>2]+(+f[r+(o*112|0)+28>>2]*+f[q>>2]+ +f[r+(o*112|0)+32>>2]*+f[j>>2]);f[i+20>>2]=+f[r+(o*112|0)+56>>2]+(+f[r+(o*112|0)+44>>2]*+f[q>>2]+ +f[r+(o*112|0)+48>>2]*+f[j>>2]);j=0}else j=-1}else j=-1;zb=s;return j|0}function Mt(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[a+128>>2]=0;return a|0}function Nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+24|0;d=c[e>>2]|0;if(!d){f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,0,40)|0;c[e>>2]=d;a=Jb[c[c[f>>2]>>2]&63](a,0,4096)|0;c[d+32>>2]=a;d=c[e>>2]|0}c[d+8>>2]=115;c[d+12>>2]=83;c[d+16>>2]=47;c[d+20>>2]=33;c[d+24>>2]=116;c[d+28>>2]=b;c[d+4>>2]=0;c[d>>2]=0;return}function Ot(a){a=a|0;c[(c[a+24>>2]|0)+36>>2]=1;return}function Pt(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+24>>2]|0;f=e+32|0;d=gA(c[f>>2]|0,1,4096,c[e+28>>2]|0)|0;g=e+36|0;if(d|0){b=d;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}if(!(c[g>>2]|0))d=b;else{d=c[b>>2]|0;c[d+20>>2]=43;Sb[c[d>>2]&255](b);d=b}b=c[b>>2]|0;c[b+20>>2]=123;Ub[c[b+4>>2]&63](d,-1);a[c[f>>2]>>0]=-1;a[(c[f>>2]|0)+1>>0]=-39;b=2;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+24>>2]|0;if((b|0)<=0)return;g=f+4|0;d=c[g>>2]|0;if((d|0)<(b|0)){e=f+12|0;do{b=b-d|0;Gb[c[e>>2]&127](a)|0;d=c[g>>2]|0}while((b|0)>(d|0))}c[f>>2]=(c[f>>2]|0)+b;c[g>>2]=d-b;return}function Rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+440|0;g=c[k>>2]|0;h=c[a>>2]|0;c[h+20>>2]=124;c[h+24>>2]=g;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;d=b+6&7|208;b=g;a:while(1){e=(b|0)<192;f=(b&-8|0)!=208|(b|0)==(h|0)|(b|0)==(i|0);g=(b|0)==(j|0)|(b|0)==(d|0)?2:1;b:while(1){l=e?2:f?3:g;m=c[a>>2]|0;c[m+20>>2]=99;c[m+24>>2]=b;c[(c[a>>2]|0)+28>>2]=l;Ub[c[(c[a>>2]|0)+4>>2]&63](a,4);switch(l&3){case 1:{d=4;break a}case 3:{b=1;d=7;break a}case 2:break b;default:{}}}if(!(Tt(a)|0)){b=0;d=7;break}b=c[k>>2]|0}if((d|0)==4){c[k>>2]=0;m=1;return m|0}else if((d|0)==7)return b|0;return 0}function St(a){a=a|0;return}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+464|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break}d=c[k>>2]|0;e=c[j>>2]|0}d=d+-1|0;f=e+1|0;if((a[e>>0]|0)==-1)e=f;else{e=f;do{h=(c[l>>2]|0)+24|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1)}do{if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;g=a[f>>0]|0}while(g<<24>>24==-1);f=(c[l>>2]|0)+24|0;h=c[f>>2]|0;if(g<<24>>24){f=18;break}c[f>>2]=h+2;c[j>>2]=e;c[k>>2]=d}if((f|0)==18){f=g&255;if(h|0){i=c[b>>2]|0;c[i+20>>2]=119;c[i+24>>2]=h;c[(c[b>>2]|0)+28>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);c[(c[l>>2]|0)+24>>2]=0}c[b+440>>2]=f;c[j>>2]=e;c[k>>2]=d;l=1;return l|0}else if((f|0)==21)return d|0;return 0}function Ut(a){a=a|0;var b=0,d=0;d=Jb[c[c[a+4>>2]>>2]&63](a,0,172)|0;b=a+464|0;c[b>>2]=d;c[d>>2]=117;c[d+4>>2]=84;c[d+8>>2]=85;c[d+28>>2]=86;c[d+96>>2]=0;c[d+100>>2]=0;c[d+36>>2]=86;c[d+104>>2]=0;c[d+40>>2]=86;c[d+108>>2]=0;c[d+44>>2]=86;c[d+112>>2]=0;c[d+48>>2]=86;c[d+116>>2]=0;c[d+52>>2]=86;c[d+120>>2]=0;c[d+56>>2]=86;c[d+124>>2]=0;c[d+60>>2]=86;c[d+128>>2]=0;c[d+64>>2]=86;c[d+132>>2]=0;c[d+68>>2]=86;c[d+136>>2]=0;c[d+72>>2]=86;c[d+140>>2]=0;c[d+76>>2]=86;c[d+144>>2]=0;c[d+80>>2]=86;c[d+148>>2]=0;c[d+84>>2]=86;c[d+152>>2]=0;c[d+156>>2]=0;c[d+92>>2]=86;c[d+160>>2]=0;c[d+32>>2]=87;c[d+88>>2]=87;b=c[b>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Vt(a){a=a|0;var b=0;b=c[a+464>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Wt(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;Pa=zb;zb=zb+256|0;ga=Pa;Na=f+440|0;Oa=f+464|0;oa=f+24|0;ua=f+232|0;va=f+248|0;wa=f+264|0;pa=f+280|0;qa=f+40|0;ra=f+304|0;sa=f+308|0;ta=f+284|0;ha=f+288|0;ia=f+289|0;ja=f+290|0;ka=f+292|0;la=f+294|0;ma=f+296|0;na=f+300|0;Ja=f+36|0;Ka=f+216|0;g=c[Na>>2]|0;a:while(1){do if(!g){if(c[(c[Oa>>2]|0)+12>>2]|0){if(!(Tt(f)|0)){xa=0;Aa=350;break a}g=c[Na>>2]|0;break}m=c[oa>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0}k=c[m>>2]|0;g=g+-1|0;h=k+1|0;k=a[k>>0]|0;l=k&255;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[n>>2]|0;h=c[m>>2]|0}else j=g;V=a[h>>0]|0;g=V&255;if(k<<24>>24!=-1|V<<24>>24!=-40){V=c[f>>2]|0;c[V+20>>2]=55;c[V+24>>2]=l;c[(c[f>>2]|0)+28>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}c[Na>>2]=g;c[m>>2]=h+1;c[n>>2]=j+-1}while(0);do switch(g|0){case 218:{Aa=25;break a}case 217:{Aa=75;break a}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Ub[c[g+4>>2]&63](f,1);g=(c[Oa>>2]|0)+12|0;if(c[g>>2]|0){g=c[f>>2]|0;c[g+20>>2]=64;Sb[c[g>>2]&255](f);g=(c[Oa>>2]|0)+12|0}h=ua;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));h=va;j=h+16|0;do{a[h>>0]=1;h=h+1|0}while((h|0)<(j|0));h=wa;j=h+16|0;do{a[h>>0]=5;h=h+1|0}while((h|0)<(j|0));c[pa>>2]=0;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;c[ta>>2]=0;a[ha>>0]=1;a[ia>>0]=1;a[ja>>0]=0;b[ka>>1]=1;b[la>>1]=1;c[ma>>2]=0;a[na>>0]=0;c[g>>2]=1;break}case 192:{if(!($t(f,1,0,0)|0)){xa=0;Aa=350;break a}break}case 193:{if(!($t(f,0,0,0)|0)){xa=0;Aa=350;break a}break}case 194:{if(!($t(f,0,1,0)|0)){xa=0;Aa=350;break a}break}case 201:{if(!($t(f,0,0,1)|0)){xa=0;Aa=350;break a}break}case 202:{if(!($t(f,0,1,1)|0)){xa=0;Aa=350;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{V=c[f>>2]|0;c[V+20>>2]=63;c[V+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f);break}case 204:{p=c[oa>>2]|0;q=p+4|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0}j=c[p>>2]|0;g=g+-1|0;h=j+1|0;j=d[j>>0]<<8;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0;h=c[p>>2]|0}V=j|d[h>>0];j=V+-2|0;k=g+-1|0;g=h+1|0;if(V>>>0>2){o=p+12|0;n=j;h=k;while(1){if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;g=c[p>>2]|0}h=h+-1|0;j=g+1|0;l=a[g>>0]|0;m=l&255;if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;k=c[p>>2]|0}else k=j;g=a[k>>0]|0;j=g&255;V=c[f>>2]|0;c[V+20>>2]=81;c[V+24>>2]=m;c[(c[f>>2]|0)+28>>2]=j;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if((l&255)<=31)if((l&255)<=15){U=j&15;a[f+232+m>>0]=U;V=(g&255)>>>4;a[f+248+m>>0]=V;if(U>>>0>(V&255)>>>0){V=c[f>>2]|0;c[V+20>>2]=30;c[V+24>>2]=j;Sb[c[c[f>>2]>>2]&255](f)}}else Aa=93;else{Aa=c[f>>2]|0;c[Aa+20>>2]=29;c[Aa+24>>2]=m;Sb[c[c[f>>2]>>2]&255](f);Aa=93}if((Aa|0)==93){Aa=0;a[m+-16+(f+264)>>0]=g}j=n+-2|0;h=h+-1|0;g=k+1|0;if((n|0)>2)n=j;else break}}else h=k;if(j|0){V=c[f>>2]|0;c[V+20>>2]=12;Sb[c[V>>2]&255](f)}c[p>>2]=g;c[q>>2]=h;break}case 196:{U=c[oa>>2]|0;V=U+4|0;g=c[V>>2]|0;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0}k=c[U>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0;j=c[U>>2]|0}else j=h;h=g+-1|0;g=j+1|0;T=k|d[j>>0];j=T+-2|0;if(T>>>0>18){T=U+12|0;do{if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}S=d[g>>0]|0;R=c[f>>2]|0;c[R+20>>2]=82;c[R+24>>2]=S;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}R=a[g>>0]|0;N=R&255;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}Q=a[g>>0]|0;L=Q&255;k=L+N|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}P=a[g>>0]|0;K=P&255;k=k+K|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}O=a[g>>0]|0;I=O&255;k=k+I|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}M=a[g>>0]|0;G=M&255;k=k+G|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}J=a[g>>0]|0;E=J&255;k=k+E|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}H=a[g>>0]|0;C=H&255;k=k+C|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}F=a[g>>0]|0;A=F&255;k=k+A|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}D=a[g>>0]|0;y=D&255;k=k+y|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}B=a[g>>0]|0;w=B&255;k=k+w|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}z=a[g>>0]|0;u=z&255;k=k+u|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}x=a[g>>0]|0;s=x&255;k=k+s|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}v=a[g>>0]|0;q=v&255;k=k+q|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}t=a[g>>0]|0;o=t&255;k=k+o|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}r=a[g>>0]|0;l=r&255;k=k+l|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}p=a[g>>0]|0;Qa=p&255;n=k+Qa|0;h=h+-1|0;g=g+1|0;m=j+-17|0;k=c[f>>2]|0;c[k+24>>2]=N;c[k+28>>2]=L;c[k+32>>2]=K;c[k+36>>2]=I;c[k+40>>2]=G;c[k+44>>2]=E;c[k+48>>2]=C;c[k+52>>2]=A;c[k+20>>2]=88;Ub[c[k+4>>2]&63](f,2);N=c[f>>2]|0;c[N+24>>2]=y;c[N+28>>2]=w;c[N+32>>2]=u;c[N+36>>2]=s;c[N+40>>2]=q;c[N+44>>2]=o;c[N+48>>2]=l;c[N+52>>2]=Qa;c[N+20>>2]=88;Ub[c[N+4>>2]&63](f,2);if(n>>>0>256|(m|0)<(n|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=9;Sb[c[Qa>>2]&255](f)}aP(ga|0,0,256)|0;if(!n)j=0;else{k=0;while(1){if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}h=h+-1|0;j=g+1|0;a[ga+k>>0]=a[g>>0]|0;k=k+1|0;if(k>>>0>=n>>>0){g=j;j=n;break}else g=j}}j=m-j|0;Qa=(S&16|0)==0;l=S+-16|0;k=Qa?S:l;l=Qa?f+180+(S<<2)|0:f+196+(l<<2)|0;if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=31;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=c[l>>2]|0;if(!k){k=au(f)|0;c[l>>2]=k}a[k>>0]=0;a[k+1>>0]=R;a[k+2>>0]=Q;a[k+3>>0]=P;a[k+4>>0]=O;a[k+5>>0]=M;a[k+6>>0]=J;a[k+7>>0]=H;a[k+8>>0]=F;a[k+9>>0]=D;a[k+10>>0]=B;a[k+11>>0]=z;a[k+12>>0]=x;a[k+13>>0]=v;a[k+14>>0]=t;a[k+15>>0]=r;a[k+16>>0]=p;_O((c[l>>2]|0)+17|0,ga|0,256)|0}while((j|0)>16)}if(j|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[U>>2]=g;c[V>>2]=h;break}case 219:{q=c[oa>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0}l=c[q>>2]|0;g=g+-1|0;h=l+1|0;l=d[l>>0]<<8;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;k=c[q>>2]|0}else k=h;j=g+-1|0;h=k+1|0;Qa=l|d[k>>0];g=Qa+-2|0;if(Qa>>>0>2){p=q+12|0;while(1){o=g+-1|0;if(!j){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[r>>2]|0;h=c[q>>2]|0}k=d[h>>0]|0;m=k>>>4;k=k&15;Qa=c[f>>2]|0;c[Qa+20>>2]=83;c[Qa+24>>2]=k;c[(c[f>>2]|0)+28>>2]=m;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=32;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=f+164+(k<<2)|0;l=c[k>>2]|0;if(!l){l=Mt(f)|0;c[k>>2]=l}n=(m|0)!=0;if(n)if((g|0)<129){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o>>1;Aa=196}else Aa=203;else if((g|0)<65){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o;Aa=196}else Aa=203;b:do if((Aa|0)==196){Aa=0;switch(ba|0){case 4:{g=3280;break}case 9:{g=3168;break}case 16:{g=3040;break}case 25:{g=2864;break}case 36:{g=2656;break}case 49:{g=2384;break}default:{j=j+-1|0;g=h+1|0;if((ba|0)>0){Z=2064;_=ba;$=g;aa=j;Aa=205;break b}else{Y=ba;X=j;W=g;break b}}}Z=g;_=ba;$=h+1|0;aa=j+-1|0;Aa=205}else if((Aa|0)==203){Z=2064;_=64;$=h+1|0;aa=j+-1|0;Aa=205}while(0);c:do if((Aa|0)==205){Aa=0;if(!n){j=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}b[l+(c[Z+(j<<2)>>2]<<1)>>1]=d[h>>0]|0;j=j+1|0;g=g+-1|0;h=h+1|0;if((j|0)>=(_|0)){Y=_;X=g;W=h;break c}}}m=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}else h=j;b[l+(c[Z+(m<<2)>>2]<<1)>>1]=k|d[h>>0];m=m+1|0;g=g+-1|0;h=h+1|0;if((m|0)>=(_|0)){Y=_;X=g;W=h;break}}}while(0);h=c[f>>2]|0;d:do if((c[h+104>>2]|0)>1){g=0;while(1){c[h+24>>2]=e[l+(g<<1)>>1];c[h+28>>2]=e[l+((g|1)<<1)>>1];c[h+32>>2]=e[l+((g|2)<<1)>>1];c[h+36>>2]=e[l+((g|3)<<1)>>1];c[h+40>>2]=e[l+((g|4)<<1)>>1];c[h+44>>2]=e[l+((g|5)<<1)>>1];c[h+48>>2]=e[l+((g|6)<<1)>>1];c[h+52>>2]=e[l+((g|7)<<1)>>1];c[h+20>>2]=95;Ub[c[h+4>>2]&63](f,2);g=g+8|0;if(g>>>0>=64)break d;h=c[f>>2]|0}}while(0);g=o-Y+(n?0-Y|0:0)|0;if((g|0)>0){h=W;j=X}else{j=X;h=W;break}}}if(g|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[q>>2]=h;c[r>>2]=j;break}case 221:{l=c[oa>>2]|0;m=l+4|0;g=c[m>>2]|0;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0}k=c[l>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;j=c[l>>2]|0}else j=h;g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=4){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;h=c[l>>2]|0}j=g+-1|0;g=h+1|0;k=d[h>>0]<<8;if(!j){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[m>>2]|0;g=c[l>>2]|0}else h=j;Qa=k|d[g>>0];V=c[f>>2]|0;c[V+20>>2]=84;c[V+24>>2]=Qa;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[pa>>2]=Qa;c[l>>2]=g+1;c[m>>2]=h+-1;break}case 248:{m=c[oa>>2]|0;h=c[m>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46637,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if((c[Ja>>2]|0)>=3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=24){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)!=13){Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=c[Na>>2];Sb[c[c[f>>2]>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)==255){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)==3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;k=c[Ka>>2]|0;if((c[k+88>>2]|0)==(d[j>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0;l=c[Ka>>2]|0}else l=k;g=g+-1|0;j=h+1|0;if((c[l>>2]|0)==(d[h>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;k=c[m>>2]|0;h=c[Ka>>2]|0}else{k=j;h=l}g=g+-1|0;j=k+1|0;if((c[h+176>>2]|0)!=(d[k>>0]|0)){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((a[j>>0]|0)!=-128){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(!(k|d[j>>0])){ea=g;fa=h}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=h;Aa=335}while(0);if((Aa|0)==335){Aa=0;ea=c[f>>2]|0;c[ea+20>>2]=28;Sb[c[ea>>2]&255](f);ea=ca;fa=da}c[ra>>2]=1;c[m>>2]=fa;c[n>>2]=ea;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(Gb[c[(c[Oa>>2]|0)+32+(g+-224<<2)>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 254:{if(!(Gb[c[(c[Oa>>2]|0)+28>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Qa=c[f>>2]|0;c[Qa+20>>2]=94;c[Qa+24>>2]=g;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);break}case 220:{k=c[oa>>2]|0;l=k+4|0;g=c[l>>2]|0;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0}h=c[k>>2]|0;g=g+-1|0;j=h+1|0;h=d[h>>0]<<8;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0;j=c[k>>2]|0}Qa=h|d[j>>0];h=Qa+-2|0;V=c[f>>2]|0;c[V+20>>2]=93;c[V+24>>2]=c[Na>>2];c[(c[f>>2]|0)+28>>2]=h;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[k>>2]=j+1;c[l>>2]=g+-1;if(Qa>>>0>2)Ub[c[(c[oa>>2]|0)+16>>2]&63](f,h);break}default:{Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}}while(0);c[Na>>2]=0;g=0}if((Aa|0)==25){q=c[oa>>2]|0;h=c[q>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46633,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}while(0);g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}else h=j;while(0);g=g+-1|0;j=h+1|0;l=k|d[h>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;k=c[q>>2]|0;break}else{h=g;k=j}while(0);m=a[k>>0]|0;p=m&255;Qa=c[f>>2]|0;c[Qa+20>>2]=105;c[Qa+24>>2]=p;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);do if(!((m&255)>4|(l|0)!=((p<<1)+6|0))){if(m<<24>>24){c[f+340>>2]=p;i=h+-1|0;ya=k+1|0;za=i;i=(i|0)==0;Aa=42;break}if(c[f+224>>2]|0){c[f+340>>2]=p;g=h+-1|0;if(!g){Ha=1;Aa=64}else{Fa=g;La=k+1|0;Ma=1}}else Aa=41}else Aa=41;while(0);if((Aa|0)==41){j=c[f>>2]|0;c[j+20>>2]=12;Sb[c[j>>2]&255](f);c[f+340>>2]=p;j=h+-1|0;g=k+1|0;h=(j|0)==0;if(!(m<<24>>24)){Da=j;Ea=g;Ga=h;Ia=1;Aa=63}else{ya=g;za=j;i=h;Aa=42}}e:do if((Aa|0)==42){n=q+12|0;o=f+344|0;m=0;g=ya;h=za;while(1){if(i){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}h=c[r>>2]|0;g=c[q>>2]|0}l=h+-1|0;i=g+1|0;h=d[g>>0]|0;f:do if(m){g=0;while(1){if((c[c[f+344+(g<<2)>>2]>>2]|0)==(h|0))break;g=g+1|0;if(g>>>0>=m>>>0)break f}g=c[c[o>>2]>>2]|0;if(m>>>0>1){h=1;do{Qa=c[c[f+344+(h<<2)>>2]>>2]|0;g=(Qa|0)>(g|0)?Qa:g;h=h+1|0}while((h|0)!=(m|0))}h=g+1|0}while(0);g=c[Ka>>2]|0;k=c[Ja>>2]|0;g:do if((k|0)>0){j=0;while(1){if((h|0)==(c[g>>2]|0)){Ca=g;break g}j=j+1|0;g=g+88|0;if((j|0)>=(k|0)){Ba=g;Aa=58;break}}}else{Ba=g;Aa=58}while(0);if((Aa|0)==58){Aa=0;Ca=c[f>>2]|0;c[Ca+20>>2]=4;c[Ca+24>>2]=h;Sb[c[c[f>>2]>>2]&255](f);Ca=Ba}c[f+344+(m<<2)>>2]=Ca;if(!l){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}g=c[r>>2]|0;i=c[q>>2]|0}else g=l;h=d[i>>0]|0;za=Ca+20|0;c[za>>2]=h>>>4;Qa=Ca+24|0;c[Qa>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[Ca>>2];c[h+28>>2]=c[za>>2];c[h+32>>2]=c[Qa>>2];c[h+20>>2]=106;Ub[c[h+4>>2]&63](f,1);m=m+1|0;h=g+-1|0;g=i+1|0;i=(h|0)==0;if(m>>>0>=p>>>0){Da=h;Ea=g;Ga=i;Ia=0;Aa=63;break e}}if((Aa|0)==350){zb=Pa;return xa|0}}while(0);if((Aa|0)==63)if(Ga){Ha=Ia;Aa=64}else{Fa=Da;La=Ea;Ma=Ia}do if((Aa|0)==64)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{Fa=c[r>>2]|0;La=c[q>>2]|0;Ma=Ha;break}while(0);g=Fa+-1|0;h=La+1|0;k=f+412|0;c[k>>2]=d[La>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;i=c[q>>2]|0;break}else i=h;while(0);h=g+-1|0;g=i+1|0;j=f+416|0;c[j>>2]=d[i>>0];do if(!h)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);Qa=d[g>>0]|0;Ka=f+420|0;c[Ka>>2]=Qa>>>4;La=f+424|0;c[La>>2]=Qa&15;Qa=c[f>>2]|0;c[Qa+24>>2]=c[k>>2];c[Qa+28>>2]=c[j>>2];c[Qa+32>>2]=c[Ka>>2];c[Qa+36>>2]=c[La>>2];c[Qa+20>>2]=107;Ub[c[Qa+4>>2]&63](f,1);c[(c[Oa>>2]|0)+20>>2]=0;if(!Ma){Qa=f+144|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[q>>2]=g+1;c[r>>2]=h+-1;c[Na>>2]=0;Qa=1;zb=Pa;return Qa|0}else if((Aa|0)==75){Qa=c[f>>2]|0;c[Qa+20>>2]=87;Ub[c[Qa+4>>2]&63](f,1);c[Na>>2]=0;Qa=2;zb=Pa;return Qa|0}else if((Aa|0)==174){Qa=0;zb=Pa;return Qa|0}else if((Aa|0)==350){zb=Pa;return xa|0}return 0}function Xt(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+440|0;b=c[f>>2]|0;do if(!b)if(!(Tt(a)|0)){f=0;return f|0}else{b=c[f>>2]|0;break}while(0);d=a+464|0;e=c[(c[d>>2]|0)+20>>2]|0;if((b|0)!=(e+208|0)){if(!(Ib[c[(c[a+24>>2]|0)+20>>2]&63](a,e)|0)){f=0;return f|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,3);c[f>>2]=0}f=(c[d>>2]|0)+20|0;c[f>>2]=(c[f>>2]|0)+1&7;f=1;return f|0}function Yt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+24|0;h=c[g>>2]|0;i=h+4|0;b=c[i>>2]|0;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;break}while(0);e=c[h>>2]|0;b=b+-1|0;f=e+1|0;e=(d[e>>0]|0)<<8;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;f=c[h>>2]|0;break}while(0);j=e|(d[f>>0]|0);e=j+-2|0;k=c[a>>2]|0;c[k+20>>2]=93;c[k+24>>2]=c[a+440>>2];c[(c[a>>2]|0)+28>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,1);c[h>>2]=f+1;c[i>>2]=b+-1;if(j>>>0<=2){k=1;return k|0}Ub[c[(c[g>>2]|0)+16>>2]&63](a,e);k=1;return k|0}function Zt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;l=p;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);j=g|d[f>>0];k=j+-2|0;j=j>>>0>15?14:j>>>0>2?k:0;g=e+-1|0;e=f+1|0;a:do if(!j)f=g;else{i=n+12|0;h=0;f=g;while(1){if(!f){if(!(Gb[c[i>>2]&127](b)|0)){e=0;break}f=c[o>>2]|0;e=c[n>>2]|0}a[l+h>>0]=a[e>>0]|0;h=h+1|0;f=f+-1|0;e=e+1|0;if(h>>>0>=j>>>0)break a}zb=p;return e|0}while(0);g=k-j|0;h=c[b+440>>2]|0;b:do switch(h|0){case 224:{_t(b,l,j,g);break}case 238:{if((((j>>>0>11&(a[l>>0]|0)==65?(a[l+1>>0]|0)==100:0)?(a[l+2>>0]|0)==111:0)?(a[l+3>>0]|0)==98:0)?(a[l+4>>0]|0)==101:0){h=d[l+7>>0]<<8|d[l+8>>0];i=d[l+9>>0]<<8|d[l+10>>0];k=a[l+11>>0]|0;j=c[b>>2]|0;c[j+24>>2]=d[l+5>>0]<<8|d[l+6>>0];c[j+28>>2]=h;c[j+32>>2]=i;c[j+36>>2]=k&255;c[j+20>>2]=78;Ub[c[j+4>>2]&63](b,1);c[b+296>>2]=1;a[b+300>>0]=k;break b}l=c[b>>2]|0;c[l+20>>2]=80;c[l+24>>2]=k;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1);break}default:{l=c[b>>2]|0;c[l+20>>2]=70;c[l+24>>2]=h;Sb[c[c[b>>2]>>2]&255](b)}}while(0);c[n>>2]=e;c[o>>2]=f;if((g|0)<=0){o=1;zb=p;return o|0}Ub[c[(c[m>>2]|0)+16>>2]&63](b,g);o=1;zb=p;return o|0}function _t(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(g>>>0>13){if((a[f>>0]|0)==74)if((((a[f+1>>0]|0)==70?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){c[e+284>>2]=1;j=a[f+5>>0]|0;k=e+288|0;a[k>>0]=j;l=a[f+6>>0]|0;m=e+289|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+290|0;a[p>>0]=h;i=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+292|0;b[n>>1]=i;g=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+294|0;b[o>>1]=g;if((j+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=j&255;c[(c[e>>2]|0)+28>>2]=d[m>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](e,-1);q=e;j=a[k>>0]|0;l=a[m>>0]|0;i=b[n>>1]|0;g=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=j&255;c[p+28>>2]=l&255;c[p+32>>2]=i&65535;c[p+36>>2]=g&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Ub[c[p+4>>2]&63](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=d[j>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(B((i&255)*3|0,g&255)|0))return;r=c[e>>2]|0;c[r+20>>2]=90;c[r+24>>2]=h;Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);return}else i=16}else if(g>>>0>5?(a[f>>0]|0)==74:0)i=16;if(((((i|0)==16?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;switch(a[h>>0]|0){case 16:{q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 17:{q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 19:{q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}default:{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}function $t(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+24>>2]|0;h=c[o>>2]|0;p=o+4|0;g=c[p>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;e=(d[h>>0]|0)<<8;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;j=e|(d[h>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;c[a+212>>2]=d[h>>0];do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;i=a+32|0;c[i>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;e=c[i>>2]|0;break}else e=h;while(0);g=g+-1|0;h=b+1|0;c[i>>2]=e+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;f=a+28|0;c[f>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;h=c[f>>2]|0;break}while(0);g=g+-1|0;e=b+1|0;c[f>>2]=h+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{b=c[p>>2]|0;e=c[o>>2]|0;break}else b=g;while(0);m=a+36|0;c[m>>2]=d[e>>0];h=j+-8|0;n=c[a>>2]|0;c[n+24>>2]=c[a+440>>2];c[n+28>>2]=c[f>>2];c[n+32>>2]=c[i>>2];c[n+36>>2]=c[m>>2];c[n+20>>2]=102;Ub[c[n+4>>2]&63](a,1);n=a+464|0;if(c[(c[n>>2]|0)+16>>2]|0){l=c[a>>2]|0;c[l+20>>2]=61;Sb[c[l>>2]&255](a)}if(((c[i>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(k=c[m>>2]|0,(k|0)>=1):0)g=k;else{g=c[a>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](a);g=c[m>>2]|0}if((h|0)!=(g*3|0)){l=c[a>>2]|0;c[l+20>>2]=12;Sb[c[l>>2]&255](a)}l=a+216|0;if(!(c[l>>2]|0)){k=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[m>>2]|0)*88|0)|0;c[l>>2]=k}b=b+-1|0;g=e+1|0;a:do if((c[m>>2]|0)>0){k=o+12|0;j=0;while(1){if(!b){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}b=c[p>>2]|0;g=c[o>>2]|0}f=b+-1|0;h=g+1|0;e=d[g>>0]|0;i=c[l>>2]|0;b:do if(!j)b=e;else{g=i;b=0;while(1){if((c[g>>2]|0)==(e|0))break;b=b+1|0;g=g+88|0;if(b>>>0>=j>>>0){b=e;i=g;break b}}b=c[i>>2]|0;g=i+88|0;if(j>>>0>1){e=1;while(1){q=c[g>>2]|0;b=(q|0)>(b|0)?q:b;e=e+1|0;if((e|0)==(j|0))break;else g=g+88|0}g=i+(j*88|0)|0}b=b+1|0;i=g}while(0);c[i>>2]=b;c[i+4>>2]=j;if(!f){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else g=f;g=g+-1|0;b=h+1|0;q=d[h>>0]|0;e=i+8|0;c[e>>2]=q>>>4;f=i+12|0;c[f>>2]=q&15;if(!g){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else h=b;q=i+16|0;c[q>>2]=d[h>>0];b=c[a>>2]|0;c[b+24>>2]=c[i>>2];c[b+28>>2]=c[e>>2];c[b+32>>2]=c[f>>2];c[b+36>>2]=c[q>>2];c[b+20>>2]=103;Ub[c[b+4>>2]&63](a,1);j=j+1|0;b=g+-1|0;g=h+1|0;if((j|0)>=(c[m>>2]|0))break a}if((h|0)==57)return g|0}while(0);c[(c[n>>2]|0)+16>>2]=1;c[o>>2]=g;c[p>>2]=b;q=1;return q|0}function au(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[a+276>>2]=0;return a|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+20|0;b=c[k>>2]|0;a:do switch(b|0){case 202:{cu(a);if(!(c[a+64>>2]|0)){c[k>>2]=203;d=6;break a}c[k>>2]=207;k=1;return k|0}case 203:{d=6;break}case 204:{b=a+444|0;break}default:{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a);d=17}}while(0);if((d|0)==6){g=a+460|0;b:do if(c[(c[g>>2]|0)+16>>2]|0){e=a+8|0;f=a+332|0;b=c[e>>2]|0;c:while(1){if(b|0)Sb[c[b>>2]&255](a);b=Gb[c[c[g>>2]>>2]&127](a)|0;switch(b|0){case 2:break b;case 0:break c;default:{}}d=c[e>>2]|0;if((b|2|0)==3&(d|0)!=0?(h=d+4|0,j=(c[h>>2]|0)+1|0,c[h>>2]=j,h=d+8|0,i=c[h>>2]|0,(j|0)>=(i|0)):0)c[h>>2]=(c[f>>2]|0)+i;b=d}return b|0}while(0);c[a+152>>2]=c[a+144>>2];d=17}if((d|0)==17){b=a+444|0;if((c[k>>2]|0)!=204){Sb[c[c[b>>2]>>2]&255](a);c[a+140>>2]=0;c[k>>2]=204}}d=c[b>>2]|0;d:do if(c[d+8>>2]|0){g=a+140|0;h=a+116|0;i=a+8|0;j=a+448|0;f=c[g>>2]|0;e:while(1){e=c[h>>2]|0;if(f>>>0>>0){do{d=c[i>>2]|0;if(!d)d=f;else{c[d+4>>2]=f;c[d+8>>2]=e;Sb[c[d>>2]&255](a);d=c[g>>2]|0}Xb[c[(c[j>>2]|0)+4>>2]&31](a,0,g,0);f=c[g>>2]|0;if((f|0)==(d|0)){b=0;break e}e=c[h>>2]|0}while(f>>>0>>0);d=c[b>>2]|0}Sb[c[d+4>>2]&255](a);Sb[c[c[b>>2]>>2]&255](a);c[g>>2]=0;d=c[b>>2]|0;if(!(c[d+8>>2]|0))break d;else f=0}return b|0}while(0);c[k>>2]=(c[a+68>>2]|0)==0?205:206;k=1;return k|0}function cu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Jb[c[c[k>>2]>>2]&63](b,1,28)|0;c[b+444>>2]=i;c[i>>2]=118;c[i+4>>2]=119;c[i+8>>2]=0;d=c[b+212>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}fu(b);e=Jb[c[c[k>>2]>>2]&63](b,1,1280)|0;aP(e|0,0,512)|0;f=e+512|0;c[b+336>>2]=f;d=0;do{a[f+d>>0]=d;d=d+1|0}while((d|0)!=256);aP(e+768|0,-1,512)|0;if(!(((c[b+116>>2]|0)!=0?(c[b+112>>2]|0)!=0:0)?(g=b+120|0,(c[g>>2]|0)>=1):0)){g=c[b>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](b);g=b+120|0}j=i+12|0;c[j>>2]=0;f=gu(b)|0;h=i+16|0;c[h>>2]=f;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(c[b+84>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;e=b+68|0}else{if(!(c[b+64>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}e=b+68|0;if(c[e>>2]|0){i=c[b>>2]|0;c[i+20>>2]=48;Sb[c[i>>2]&255](b)}do if((c[g>>2]|0)==3){if(c[b+136>>2]|0){c[b+104>>2]=1;break}if(!(c[b+92>>2]|0)){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}while(0);if(c[b+100>>2]|0){hu(b);c[f>>2]=c[b+484>>2]}if((c[b+108>>2]|0)==0?(c[b+104>>2]|0)==0:0)break;iu(b);c[d>>2]=c[b+484>>2]}while(0);if(!(c[e>>2]|0)){if(!(c[h>>2]|0)){ku(b);lu(b)}else ju(b);mu(b,c[b+108>>2]|0)}nu(b);if(!(c[b+228>>2]|0))pu(b);else ou(b);f=b+460|0;if(!(c[(c[f>>2]|0)+16>>2]|0))d=(c[b+64>>2]|0)!=0&1;else d=1;qu(b,d);if(!(c[e>>2]|0))ru(b,0);Sb[c[(c[k>>2]|0)+24>>2]&255](b);Sb[c[(c[f>>2]|0)+8>>2]&255](b);d=c[b+8>>2]|0;if(!d)return;if(c[b+64>>2]|0)return;if(!(c[(c[f>>2]|0)+16>>2]|0))return;k=c[b+36>>2]|0;k=(c[b+224>>2]|0)==0?k:(k*3|0)+2|0;c[d+4>>2]=0;k=B(k,c[b+332>>2]|0)|0;c[d+8>>2]=k;c[d+12>>2]=0;c[d+16>>2]=(c[b+108>>2]|0)==0?2:3;c[j>>2]=(c[j>>2]|0)+1;return}function du(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a+444>>2]|0;e=d+8|0;if(!(c[e>>2]|0)){b=a+84|0;do if(c[b>>2]|0?(c[a+136>>2]|0)==0:0){if(c[a+92>>2]|0?c[a+108>>2]|0:0){c[a+484>>2]=c[d+24>>2];c[e>>2]=1;break}if(!(c[a+100>>2]|0)){f=c[a>>2]|0;c[f+20>>2]=47;Sb[c[f>>2]&255](a);break}else{c[a+484>>2]=c[d+20>>2];break}}while(0);Sb[c[c[a+472>>2]>>2]&255](a);Sb[c[(c[a+452>>2]|0)+8>>2]&255](a);if(!(c[a+68>>2]|0)){if(!(c[d+16>>2]|0))Sb[c[c[a+480>>2]>>2]&255](a);Sb[c[c[a+476>>2]>>2]&255](a);if(c[b>>2]|0)Ub[c[c[a+484>>2]>>2]&63](a,c[e>>2]|0);Ub[c[c[a+456>>2]>>2]&63](a,(c[e>>2]|0)==0?0:3);Ub[c[c[a+448>>2]>>2]&63](a,0)}}else{c[e>>2]=0;Ub[c[c[a+484>>2]>>2]&63](a,0);Ub[c[c[a+456>>2]>>2]&63](a,2);Ub[c[c[a+448>>2]>>2]&63](a,2)}b=c[a+8>>2]|0;if(!b)return;d=c[d+12>>2]|0;c[b+12>>2]=d;d=((c[e>>2]|0)==0?1:2)+d|0;b=b+16|0;c[b>>2]=d;if(!(c[a+64>>2]|0))return;if(c[(c[a+460>>2]|0)+20>>2]|0)return;c[b>>2]=((c[a+108>>2]|0)==0?1:2)+d;return}function eu(a){a=a|0;var b=0;b=c[a+444>>2]|0;if(c[a+84>>2]|0)Sb[c[(c[a+484>>2]|0)+8>>2]&255](a);b=b+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=c[a+20>>2]|0;if((b|0)!=202){t=c[a>>2]|0;c[t+20>>2]=21;c[t+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}xw(a);d=c[a+216>>2]|0;t=a+36|0;b=c[t>>2]|0;o=(b|0)>0;if(o){p=c[a+324>>2]|0;q=(c[a+76>>2]|0)==0?4:8;r=a+320|0;s=c[a+328>>2]|0;if((p|0)>(q|0)){k=(s|0)>(q|0);l=p<<1;i=d;j=0;while(1){m=i+36|0;c[m>>2]=p;a:do if(k)e=s;else{h=c[r>>2]|0;g=c[i+12>>2]|0;f=1;e=s;do{f=f<<1;if((h|0)%(B(f,g)|0)|0|0)break a;e=B(s,f)|0}while((e|0)<=(q|0))}while(0);f=i+40|0;c[f>>2]=e;g=e<<1;if((p|0)<=(g|0)){if((e|0)>(l|0))c[f>>2]=l}else c[m>>2]=g;j=j+1|0;if((j|0)>=(b|0))break;else i=i+88|0}}else{m=c[a+316>>2]|0;n=(s|0)>(q|0);k=d;l=0;while(1){g=c[k+8>>2]|0;f=1;e=p;do{f=f<<1;if((m|0)%(B(f,g)|0)|0|0)break;e=B(p,f)|0}while((e|0)<=(q|0));j=k+36|0;c[j>>2]=e;b:do if(n)g=s;else{h=c[r>>2]|0;i=c[k+12>>2]|0;f=1;g=s;do{f=f<<1;if((h|0)%(B(f,i)|0)|0|0)break b;g=B(s,f)|0}while((g|0)<=(q|0))}while(0);h=k+40|0;c[h>>2]=g;f=g<<1;if((e|0)<=(f|0)){e=e<<1;if((g|0)>(e|0))c[h>>2]=e}else c[j>>2]=f;l=l+1|0;if((l|0)>=(b|0))break;else k=k+88|0}}if(o){f=a+28|0;g=a+316|0;h=a+428|0;i=a+32|0;j=a+320|0;e=0;while(1){b=B(B(c[d+8>>2]|0,c[f>>2]|0)|0,c[d+36>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[g>>2]|0)|0)|0;c[d+44>>2]=b;b=B(B(c[d+12>>2]|0,c[i>>2]|0)|0,c[d+40>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[j>>2]|0)|0)|0;c[d+48>>2]=b;e=e+1|0;b=c[t>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}}d=c[a+44>>2]|0;switch(d|0){case 1:{b=d;break}case 6:case 2:{b=3;break}case 7:case 3:{b=3;break}case 5:case 4:{b=4;break}default:{}}c[a+120>>2]=b;c[a+124>>2]=(c[a+84>>2]|0)==0?b:1;if(!(gu(a)|0)){t=1;a=a+128|0;c[a>>2]=t;return}t=c[a+320>>2]|0;a=a+128|0;c[a>>2]=t;return}function gu(a){a=a|0;var b=0,d=0;if(c[a+308>>2]|0)return 0;switch(c[a+40>>2]|0){case 7:case 3:break;default:return 0}if((c[a+36>>2]|0)!=3)return 0;if((c[a+44>>2]|0)!=2)return 0;if((c[a+120>>2]|0)!=3)return 0;if(c[a+304>>2]|0)return 0;d=c[a+216>>2]|0;if((c[d+8>>2]|0)!=2)return 0;if((c[d+96>>2]|0)!=1)return 0;if((c[d+184>>2]|0)!=1)return 0;if((c[d+12>>2]|0)>2)return 0;if((c[d+100>>2]|0)!=1)return 0;if((c[d+188>>2]|0)!=1)return 0;b=c[d+36>>2]|0;if((b|0)!=(c[a+324>>2]|0))return 0;if((c[d+124>>2]|0)!=(b|0))return 0;if((c[d+212>>2]|0)!=(b|0))return 0;b=c[d+40>>2]|0;if((b|0)!=(c[a+328>>2]|0))return 0;if((c[d+128>>2]|0)==(b|0))return (c[d+216>>2]|0)==(b|0)|0;else return 0;return 0}function hu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=b+4|0;t=Jb[c[c[s>>2]>>2]&63](b,1,88)|0;r=b+484|0;c[r>>2]=t;c[t>>2]=48;c[t+8>>2]=120;c[t+12>>2]=121;c[t+68>>2]=0;c[t+52>>2]=0;t=b+120|0;if((c[t>>2]|0)>4){n=c[b>>2]|0;c[n+20>>2]=57;c[n+24>>2]=4;Sb[c[c[b>>2]>>2]&255](b)}d=b+96|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Sb[c[c[b>>2]>>2]&255](b);e=c[d>>2]|0}n=c[r>>2]|0;l=n+32|0;k=c[t>>2]|0;if((k|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=B(d,g)|0;f=f+1|0}while((f|0)!=(k|0));if((d|0)>(e|0)){f=h;break}else h=g}}else{f=(e|0)>1?e:1;d=f+1|0}if(f>>>0<2){j=c[b>>2]|0;c[j+20>>2]=58;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}a:do if((k|0)>0){h=1;d=0;do{c[n+32+(d<<2)>>2]=f;h=B(h,f)|0;d=d+1|0}while((d|0)!=(k|0));if((c[b+44>>2]|0)==2){g=0;d=0;f=h;while(1){h=n+32+(c[15924+(d<<2)>>2]<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=22}}else{d=g;m=22}if((m|0)==22){m=0;if(!d)break a;else{g=0;d=0}}}}else{g=0;d=0;f=h;while(1){h=n+32+(d<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=26}}else{d=g;m=26}if((m|0)==26){m=0;if(!d)break a;else{g=0;d=0}}}}}else f=1;while(0);d=c[b>>2]|0;if((c[t>>2]|0)==3){c[d+24>>2]=f;c[d+28>>2]=c[l>>2];c[d+32>>2]=c[n+36>>2];c[d+36>>2]=c[n+40>>2];c[d+20>>2]=96;Ub[c[d+4>>2]&63](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1)}m=Kb[c[(c[s>>2]|0)+8>>2]&15](b,1,f,c[t>>2]|0)|0;d=c[t>>2]|0;if((d|0)>0){k=0;l=f;do{j=c[n+32+(k<<2)>>2]|0;i=l;l=(l|0)/(j|0)|0;if((j|0)>0?(o=j+-1|0,p=(o|0)/2|0,q=m+(k<<2)|0,(l|0)>0):0){g=0;do{d=B(g,l)|0;if((d|0)<(f|0)){h=(((g*255|0)+p|0)/(o|0)|0)&255;do{e=0;do{a[(c[q>>2]|0)+(e+d)>>0]=h;e=e+1|0}while((e|0)!=(l|0));d=d+i|0}while((d|0)<(f|0))}g=g+1|0}while((g|0)!=(j|0));d=c[t>>2]|0}k=k+1|0}while((k|0)<(d|0))}c[n+16>>2]=m;c[n+20>>2]=f;rw(b);if((c[b+88>>2]|0)!=2)return;e=c[r>>2]|0;f=(c[b+112>>2]<<1)+4|0;if((c[t>>2]|0)<=0)return;d=0;do{r=Jb[c[(c[s>>2]|0)+4>>2]&63](b,1,f)|0;c[e+68+(d<<2)>>2]=r;d=d+1|0}while((d|0)<(c[t>>2]|0));return}function iu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;e=Jb[c[c[f>>2]>>2]&63](a,1,44)|0;c[a+484>>2]=e;c[e>>2]=49;c[e+12>>2]=122;g=e+32|0;c[g>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){d=c[a>>2]|0;c[d+20>>2]=48;Sb[c[d>>2]&255](a)}b=Jb[c[c[f>>2]>>2]&63](a,1,128)|0;d=e+24|0;c[d>>2]=b;b=0;do{h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,4096)|0;c[(c[d>>2]|0)+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=32);c[e+28>>2]=1;if(!(c[a+108>>2]|0))c[e+16>>2]=0;else{b=c[a+96>>2]|0;if((b|0)>=8){if((b|0)>256){h=c[a>>2]|0;c[h+20>>2]=59;c[h+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{h=c[a>>2]|0;c[h+20>>2]=58;c[h+24>>2]=8;Sb[c[c[a>>2]>>2]&255](a)}h=Kb[c[(c[f>>2]|0)+8>>2]&15](a,1,b,3)|0;c[e+16>>2]=h;c[e+20>>2]=b}b=a+88|0;if(!(c[b>>2]|0))return;c[b>>2]=2;h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,((c[a+112>>2]|0)*6|0)+12|0)|0;c[g>>2]=h;gw(a);return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+4|0;b=Jb[c[c[g>>2]>>2]&63](a,1,48)|0;f=a+476|0;c[f>>2]=b;c[b>>2]=123;c[b+8>>2]=0;d=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[b+40>>2]=d;e=b+4|0;if((c[a+320>>2]|0)==2){c[e>>2]=1;c[b+12>>2]=9;e=Jb[c[(c[g>>2]|0)+4>>2]&63](a,1,d)|0;c[b+32>>2]=e;b=c[f>>2]|0}else{c[e>>2]=2;c[b+12>>2]=10;c[b+32>>2]=0}d=(c[a+40>>2]|0)==7;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;e=b+16|0;c[e>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;f=b+20|0;c[f>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;h=b+24|0;c[h>>2]=i;g=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;c[b+28>>2]=g;e=c[e>>2]|0;f=c[f>>2]|0;a=c[h>>2]|0;if(d){b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*183763|0)+32768>>16;c[f+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[a+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}else{b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*91881|0)+32768>>16;c[f+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[a+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}}function ku(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;e=Jb[c[c[b>>2]>>2]&63](a,1,28)|0;g=a+480|0;c[g>>2]=e;c[e>>2]=124;h=a+40|0;switch(c[h>>2]|0){case 1:{if((c[a+36>>2]|0)!=1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 7:case 6:case 3:case 2:{if((c[a+36>>2]|0)!=3){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 5:case 4:{if((c[a+36>>2]|0)!=4){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}default:if((c[a+36>>2]|0)<1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}}d=a+304|0;a:do if(c[d>>2]|0){switch(c[h>>2]|0){case 6:case 2:break a;default:{}}f=c[a>>2]|0;c[f+20>>2]=28;Sb[c[f>>2]&255](a)}while(0);f=c[a+44>>2]|0;b:do switch(f|0){case 1:{c[a+120>>2]=1;switch(c[h>>2]|0){case 7:case 3:case 1:{c[e+4>>2]=4;d=c[a+36>>2]|0;if((d|0)<=1)break b;e=c[a+216>>2]|0;b=1;do{c[e+(b*88|0)+52>>2]=0;b=b+1|0}while((b|0)<(d|0));break}case 2:{switch(c[d>>2]|0){case 0:{c[e+4>>2]=5;break}case 1:{c[e+4>>2]=6;break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a)}}h=c[g>>2]|0;d=Jb[c[c[b>>2]>>2]&63](a,1,3072)|0;c[h+24>>2]=d;b=0;do{c[d+(b<<2)>>2]=b*19595;c[d+(b+256<<2)>>2]=b*38470;c[d+(b+512<<2)>>2]=(b*7471|0)+32768;b=b+1|0}while((b|0)!=256);break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a);break b}}break}case 2:{c[a+120>>2]=3;switch(c[h>>2]|0){case 1:{c[e+4>>2]=7;break b}case 3:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 7:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*183763|0)+32768>>16;c[g+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[h+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 2:switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}case 6:{c[a+120>>2]=3;if((c[h>>2]|0)!=6){i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}}case 4:{c[a+120>>2]=4;switch(c[h>>2]|0){case 5:{c[e+4>>2]=11;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 4:{c[e+4>>2]=12;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}default:if((f|0)==(c[h>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=12;break b}else{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}while(0);if(c[a+84>>2]|0){h=1;i=a+124|0;c[i>>2]=h;return}h=c[a+120>>2]|0;i=a+124|0;c[i>>2]=h;return}function lu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=b+4|0;d=Jb[c[c[m>>2]>>2]&63](b,1,160)|0;c[b+476>>2]=d;c[d>>2]=125;c[d+4>>2]=3;c[d+8>>2]=0;if(c[b+308>>2]|0){w=c[b>>2]|0;c[w+20>>2]=26;Sb[c[w>>2]&255](b)}n=b+36|0;if((c[n>>2]|0)<=0)return;o=b+324|0;p=b+328|0;q=b+316|0;r=b+320|0;s=d+100|0;t=d+52|0;u=b+112|0;v=d+12|0;w=d+140|0;h=d+150|0;f=c[b+216>>2]|0;g=0;while(1){i=B(c[f+36>>2]|0,c[f+8>>2]|0)|0;i=(i|0)/(c[o>>2]|0)|0;j=B(c[f+40>>2]|0,c[f+12>>2]|0)|0;j=(j|0)/(c[p>>2]|0)|0;k=c[q>>2]|0;l=c[r>>2]|0;c[s+(g<<2)>>2]=j;do if(!(c[f+52>>2]|0))c[t+(g<<2)>>2]=11;else{d=(j|0)==(l|0);if((i|0)==(k|0)&d){c[t+(g<<2)>>2]=12;break}e=(i<<1|0)==(k|0);do if(e&d)c[t+(g<<2)>>2]=13;else{if(e&(j<<1|0)==(l|0)){c[t+(g<<2)>>2]=14;break}d=(k|0)/(i|0)|0;if((k-(B(d,i)|0)|0)==0?(x=(l|0)/(j|0)|0,(l-(B(x,j)|0)|0)==0):0){c[t+(g<<2)>>2]=15;a[w+g>>0]=d;a[h+g>>0]=x;break}l=c[b>>2]|0;c[l+20>>2]=39;Sb[c[l>>2]&255](b)}while(0);k=c[(c[m>>2]|0)+8>>2]|0;l=yu(c[u>>2]|0,c[q>>2]|0)|0;l=Kb[k&15](b,1,l,c[r>>2]|0)|0;c[v+(g<<2)>>2]=l}while(0);g=g+1|0;if((g|0)>=(c[n>>2]|0))break;else f=f+88|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,1,28)|0;c[a+456>>2]=d;c[d>>2]=50;h=d+8|0;c[h>>2]=0;i=d+12|0;c[i>>2]=0;if(!(c[a+84>>2]|0))return;g=c[a+320>>2]|0;e=d+16|0;c[e>>2]=g;d=c[f>>2]|0;if(!b){h=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=Kb[c[d+8>>2]&15](a,1,h,g)|0;c[i>>2]=h;return}else{f=c[d+16>>2]|0;b=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;i=yu(c[a+116>>2]|0,g)|0;i=Ob[f&63](a,1,0,b,i,c[e>>2]|0)|0;c[h>>2]=i;return}}function nu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Jb[c[c[f>>2]>>2]&63](a,1,84)|0;c[a+472>>2]=b;c[b>>2]=126;g=a+36|0;if((c[g>>2]|0)<=0)return;e=b+44|0;b=0;d=c[a+216>>2]|0;while(1){h=Jb[c[c[f>>2]>>2]&63](a,1,256)|0;c[d+84>>2]=h;aP(h|0,0,256)|0;c[e+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;else d=d+88|0}return}function ou(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+4|0;e=Jb[c[c[g>>2]>>2]&63](b,1,192)|0;c[b+468>>2]=e;c[e>>2]=127;c[e+8>>2]=128;d=e+188|0;e=e+60|0;f=e+128|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[d>>0]=113;if(!(c[b+224>>2]|0))return;f=b+36|0;e=Jb[c[c[g>>2]>>2]&63](b,1,c[f>>2]<<8)|0;c[b+160>>2]=e;if((c[f>>2]|0)<=0)return;d=0;do{aP(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;f=Jb[c[c[b>>2]>>2]&63](a,1,220)|0;c[a+468>>2]=f;c[f>>2]=129;c[f+8>>2]=130;if(!(c[a+224>>2]|0)){e=f+68|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[f+88>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;return}e=a+36|0;d=Jb[c[c[b>>2]>>2]&63](a,1,c[e>>2]<<8)|0;c[a+160>>2]=d;if((c[e>>2]|0)>0){b=0;do{aP(d+(b<<8)|0,-1,256)|0;b=b+1|0}while((b|0)<(c[e>>2]|0))}f=f+48|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;return}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=a+4|0;i=Jb[c[c[h>>2]>>2]&63](a,1,116)|0;c[a+452>>2]=i;c[i>>2]=131;c[i+8>>2]=132;c[i+112>>2]=0;if(!b){b=Jb[c[(c[h>>2]|0)+4>>2]&63](a,1,1280)|0;c[i+32>>2]=b;c[i+36>>2]=b+128;c[i+40>>2]=b+256;c[i+44>>2]=b+384;c[i+48>>2]=b+512;c[i+52>>2]=b+640;c[i+56>>2]=b+768;c[i+60>>2]=b+896;c[i+64>>2]=b+1024;c[i+68>>2]=b+1152;if(!(c[a+436>>2]|0))aP(b|0,0,1280)|0;c[i+4>>2]=89;c[i+12>>2]=35;c[i+16>>2]=0;return}f=a+36|0;if((c[f>>2]|0)>0){g=a+224|0;b=i+72|0;d=0;e=c[a+216>>2]|0;while(1){k=e+12|0;j=c[k>>2]|0;j=(c[g>>2]|0)==0?j:j*3|0;m=c[(c[h>>2]|0)+20>>2]|0;l=yu(c[e+28>>2]|0,c[e+8>>2]|0)|0;k=yu(c[e+32>>2]|0,c[k>>2]|0)|0;j=Ob[m&63](a,1,1,l,k,j)|0;c[b+(d<<2)>>2]=j;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}}else b=i+72|0;c[i+4>>2]=88;c[i+12>>2]=34;c[i+16>>2]=b;return}function ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;j=Jb[c[c[l>>2]>>2]&63](a,1,80)|0;d=a+448|0;c[d>>2]=j;c[j>>2]=51;if(b|0){k=c[a>>2]|0;c[k+20>>2]=3;Sb[c[k>>2]&255](a)}k=a+328|0;e=c[k>>2]|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[j+52>>2]=e;b=a+36|0;h=e;g=b;b=c[b>>2]|0;d=e}else{if((e|0)<2){e=c[a>>2]|0;c[e+20>>2]=48;Sb[c[e>>2]&255](a);e=c[k>>2]|0}h=c[d>>2]|0;i=a+36|0;f=Jb[c[c[l>>2]>>2]&63](a,1,c[i>>2]<<3)|0;g=h+60|0;c[g>>2]=f;b=c[i>>2]|0;h=h+64|0;c[h>>2]=f+(b<<2);if((b|0)>0){f=e+4|0;d=c[a+216>>2]|0;e=0;while(1){m=B(c[d+40>>2]|0,c[d+12>>2]|0)|0;m=(m|0)/(c[k>>2]|0)|0;b=B(m,f)|0;m=(Jb[c[c[l>>2]>>2]&63](a,1,b<<3)|0)+(m<<2)|0;c[(c[g>>2]|0)+(e<<2)>>2]=m;c[(c[h>>2]|0)+(e<<2)>>2]=m+(b<<2);e=e+1|0;b=c[i>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}d=c[k>>2]|0;h=d+2|0;g=i}if((b|0)<=0)return;f=j+8|0;b=0;e=c[a+216>>2]|0;while(1){m=(B(c[e+40>>2]|0,c[e+12>>2]|0)|0)/(d|0)|0;j=B(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=B(m,h)|0;m=Kb[c[(c[l>>2]|0)+8>>2]&15](a,1,j,m)|0;c[f+(b<<2)>>2]=m;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;e=e+88|0;d=c[k>>2]|0}return}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=c[a+448>>2]|0;switch(b|0){case 0:{b=r+4|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[b>>2]=17;c[r+48>>2]=c[r+52>>2];return}c[b>>2]=16;l=c[a+328>>2]|0;m=c[a+36>>2]|0;if((m|0)>0){n=r+60|0;o=r+64|0;p=l+2|0;q=l+-2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(l|0)|0;k=c[(c[n>>2]|0)+(i<<2)>>2]|0;f=c[(c[o>>2]|0)+(i<<2)>>2]|0;g=c[r+8+(i<<2)>>2]|0;a=B(j,p)|0;if((a|0)>0){b=0;do{e=c[g+(b<<2)>>2]|0;c[f+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(a|0))}a=j<<1;if((j|0)>0){d=B(j,l)|0;e=B(j,q)|0;b=0;do{s=b+d|0;t=b+e|0;c[f+(t<<2)>>2]=c[g+(s<<2)>>2];c[f+(s<<2)>>2]=c[g+(t<<2)>>2];b=b+1|0}while((b|0)<(a|0));b=0;do{c[k+(b-j<<2)>>2]=c[k>>2];b=b+1|0}while((b|0)!=(j|0))}i=i+1|0;if((i|0)==(m|0))break;else h=h+88|0}}c[r+68>>2]=0;c[r+72>>2]=0;c[r+76>>2]=0;c[r+56>>2]=0;return}case 2:{c[r+4>>2]=18;return}default:{t=c[a>>2]|0;c[t+20>>2]=3;Sb[c[t>>2]&255](a);return}}}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=a+448|0;w=c[v>>2]|0;y=w+56|0;do if(!(c[y>>2]|0))if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,c[w+60+(c[w+68>>2]<<2)>>2]|0)|0))return;else{c[y>>2]=1;x=w+76|0;c[x>>2]=(c[x>>2]|0)+1;break}while(0);x=w+72|0;switch(c[x>>2]|0){case 2:{f=w+48|0;g=w+52|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[w+68>>2]<<2)>>2]|0,f,c[g>>2]|0,b,d,e);if((c[f>>2]|0)>>>0<(c[g>>2]|0)>>>0)return;c[x>>2]=0;if((c[d>>2]|0)>>>0>>0)h=9;else return;break}case 0:{f=w+48|0;g=w+52|0;h=9;break}case 1:{u=w+48|0;t=w+52|0;break}default:return}if((h|0)==9){c[f>>2]=0;p=c[a+328>>2]|0;c[g>>2]=p+-1;if((c[w+76>>2]|0)==(c[a+332>>2]|0)?(i=c[v>>2]|0,r=c[a+36>>2]|0,(r|0)>0):0){q=i+52|0;l=i+60+(c[i+68>>2]<<2)|0;j=c[a+216>>2]|0;k=0;while(1){u=B(c[j+40>>2]|0,c[j+12>>2]|0)|0;h=(u|0)/(p|0)|0;o=((c[j+48>>2]|0)>>>0)%(u>>>0)|0;o=(o|0)==0?u:o;if(!k)c[q>>2]=((o+-1|0)/(h|0)|0)+1;m=c[(c[l>>2]|0)+(k<<2)>>2]|0;n=h<<1;if((h|0)>0){i=m+(o+-1<<2)|0;h=0;do{c[m+(h+o<<2)>>2]=c[i>>2];h=h+1|0}while((h|0)<(n|0))}k=k+1|0;if((k|0)==(r|0))break;else j=j+88|0}}c[x>>2]=1;u=f;t=g}s=w+68|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[s>>2]<<2)>>2]|0,u,c[t>>2]|0,b,d,e);if((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)return;if((c[w+76>>2]|0)==1){g=c[v>>2]|0;f=c[a+328>>2]|0;r=c[a+36>>2]|0;if((r|0)>0){b=g+60|0;o=g+64|0;p=f+1|0;q=f+2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(f|0)|0;k=c[(c[b>>2]|0)+(i<<2)>>2]|0;l=c[(c[o>>2]|0)+(i<<2)>>2]|0;if((j|0)>0){m=B(j,p)|0;n=B(j,q)|0;g=0;do{w=g+m|0;a=g-j|0;c[k+(a<<2)>>2]=c[k+(w<<2)>>2];c[l+(a<<2)>>2]=c[l+(w<<2)>>2];a=g+n|0;c[k+(a<<2)>>2]=c[k+(g<<2)>>2];c[l+(a<<2)>>2]=c[l+(g<<2)>>2];g=g+1|0}while((g|0)!=(j|0))}i=i+1|0;if((i|0)==(r|0))break;else h=h+88|0}}}else f=c[a+328>>2]|0;c[s>>2]=c[s>>2]^1;c[y>>2]=0;c[u>>2]=f+1;c[t>>2]=f+2;c[x>>2]=2;return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[a+448>>2]|0;i=f+48|0;h=f+52|0;g=c[h>>2]|0;do if((c[i>>2]|0)>>>0>=g>>>0){f=f+8|0;if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,f)|0))return;else{c[i>>2]=0;g=c[h>>2]|0;break}}else f=f+8|0;while(0);_b[c[(c[a+456>>2]|0)+4>>2]&7](a,f,i,g,b,d,e);return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,0,0,0,b,d,e);return}function wu(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+452>>2]|0;if((c[a+340>>2]|0)>1)a=1;else{d=c[a+344>>2]|0;a=c[((c[a+332>>2]|0)==1?d+76|0:d+12|0)>>2]|0}c[b+28>>2]=a;c[b+20>>2]=0;c[b+24>>2]=0;return}function xu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[a+452>>2]|0;if(!(c[k+16>>2]|0)){l=a+156|0;c[l>>2]=0;return}a:do if(((c[a+80>>2]|0)!=0?(c[a+224>>2]|0)!=0:0)?(j=a+160|0,(c[j>>2]|0)!=0):0){d=k+112|0;e=c[d>>2]|0;if(!e){i=a+36|0;e=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[d>>2]=e}else i=a+36|0;if((c[i>>2]|0)>0){f=0;g=c[a+216>>2]|0;h=0;while(1){d=c[g+80>>2]|0;if(!d){l=20;break a}if(!(b[d>>1]|0)){l=20;break a}if(!(b[d+2>>1]|0)){l=20;break a}if(!(b[d+16>>1]|0)){l=20;break a}if(!(b[d+32>>1]|0)){l=20;break a}if(!(b[d+18>>1]|0)){l=20;break a}if(!(b[d+4>>1]|0)){l=20;break a}d=c[j>>2]|0;if((c[d+(h<<8)>>2]|0)<0){l=20;break a}m=d+(h<<8)+4|0;c[e+4>>2]=c[m>>2];m=c[m>>2]|0;n=d+(h<<8)+8|0;c[e+8>>2]=c[n>>2];m=c[n>>2]|m;n=d+(h<<8)+12|0;c[e+12>>2]=c[n>>2];n=m|c[n>>2];m=d+(h<<8)+16|0;c[e+16>>2]=c[m>>2];m=n|c[m>>2];d=d+(h<<8)+20|0;c[e+20>>2]=c[d>>2];f=(m|c[d>>2]|0)==0?f:1;h=h+1|0;if((h|0)>=(c[i>>2]|0))break;else{g=g+88|0;e=e+24|0}}if(f)d=36;else l=20}else l=20}else l=20;while(0);if((l|0)==20)d=34;c[k+12>>2]=d;n=a+156|0;c[n>>2]=0;return}function yu(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;u=z;x=a+452|0;v=c[x>>2]|0;y=a+340|0;if((c[y>>2]|0)>0){d=a+4|0;e=a+148|0;b=0;do{r=c[a+344+(b<<2)>>2]|0;t=c[r+12>>2]|0;s=B(t,c[e>>2]|0)|0;t=Mb[c[(c[d>>2]|0)+32>>2]&31](a,c[v+72+(c[r+4>>2]<<2)>>2]|0,s,t,1)|0;c[u+(b<<2)>>2]=t;b=b+1|0}while((b|0)<(c[y>>2]|0))}o=v+24|0;b=c[o>>2]|0;p=v+28|0;f=c[p>>2]|0;a:do if((b|0)<(f|0)){q=v+20|0;r=a+360|0;s=a+468|0;t=v+32|0;d=c[q>>2]|0;e=c[r>>2]|0;b:while(1){if(d>>>0>>0){do{n=c[y>>2]|0;if((n|0)>0){e=0;m=0;do{l=c[a+344+(m<<2)>>2]|0;j=c[l+56>>2]|0;k=B(j,d)|0;l=c[l+60>>2]|0;if((l|0)>0?(w=c[u+(m<<2)>>2]|0,(j|0)>0):0){i=0;do{f=0;g=(c[w+(i+b<<2)>>2]|0)+(k<<7)|0;h=e;while(1){c[v+32+(h<<2)>>2]=g;f=f+1|0;if((f|0)==(j|0))break;else{g=g+128|0;h=h+1|0}}e=j+e|0;i=i+1|0}while((i|0)<(l|0))}m=m+1|0}while((m|0)<(n|0))}if(!(Ib[c[(c[s>>2]|0)+4>>2]&63](a,t)|0))break b;d=d+1|0;e=c[r>>2]|0}while(d>>>0>>0);f=c[p>>2]|0}c[q>>2]=0;b=b+1|0;if((b|0)<(f|0))d=0;else break a}c[o>>2]=b;c[q>>2]=d;y=0;zb=z;return y|0}while(0);d=a+148|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;d=c[a+332>>2]|0;if(b>>>0>=d>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);y=4;zb=z;return y|0}e=c[x>>2]|0;if((c[y>>2]|0)>1)b=1;else{y=c[a+344>>2]|0;b=c[(b>>>0<(d+-1|0)>>>0?y+12|0:y+76|0)>>2]|0}c[e+28>>2]=b;c[e+20>>2]=0;c[e+24>>2]=0;y=3;zb=z;return y|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=c[a+452>>2]|0;w=a+332|0;x=(c[w>>2]|0)+-1|0;g=a+144|0;h=a+152|0;i=a+460|0;d=a+148|0;u=a+156|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[d>>2]|0)>>>0>(c[u>>2]|0)>>>0)break}if(!(Gb[c[c[i>>2]>>2]&127](a)|0)){d=0;j=20;break}}if((j|0)==20)return d|0;q=a+36|0;if((c[q>>2]|0)>0){r=a+4|0;s=a+472|0;o=c[a+216>>2]|0;p=0;while(1){if(c[o+52>>2]|0){d=o+12|0;t=c[d>>2]|0;n=B(t,c[u>>2]|0)|0;t=Mb[c[(c[r>>2]|0)+32>>2]&31](a,c[v+72+(p<<2)>>2]|0,n,t,0)|0;if((c[u>>2]|0)>>>0>>0)i=c[d>>2]|0;else{n=c[d>>2]|0;i=((c[o+32>>2]|0)>>>0)%(n>>>0)|0;i=(i|0)==0?n:i}k=c[(c[s>>2]|0)+4+(p<<2)>>2]|0;if((i|0)>0){l=o+28|0;m=o+40|0;n=o+36|0;h=c[b+(p<<2)>>2]|0;j=0;d=c[l>>2]|0;while(1){if(!d)d=0;else{e=0;f=c[t+(j<<2)>>2]|0;g=0;while(1){Yb[k&63](a,o,f,h,e);g=g+1|0;d=c[l>>2]|0;if(g>>>0>=d>>>0)break;else{e=(c[n>>2]|0)+e|0;f=f+128|0}}}j=j+1|0;if((j|0)==(i|0))break;else h=h+(c[m>>2]<<2)|0}}}p=p+1|0;if((p|0)>=(c[q>>2]|0))break;else o=o+88|0}}x=(c[u>>2]|0)+1|0;c[u>>2]=x;x=x>>>0<(c[w>>2]|0)>>>0?3:4;return x|0}function Bu(a){a=a|0;return 0}function Cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+452|0;I=c[N>>2]|0;J=(c[a+360>>2]|0)+-1|0;M=a+332|0;f=c[M>>2]|0;K=f+-1|0;G=I+24|0;d=c[G>>2]|0;H=I+28|0;g=c[H>>2]|0;do if((d|0)<(g|0)){y=I+20|0;z=a+436|0;A=a+468|0;C=I+32|0;D=a+368|0;E=a+340|0;F=a+472|0;e=a+148|0;x=d;f=g;d=c[y>>2]|0;a:while(1){if(d>>>0<=J>>>0){do{if(c[z>>2]|0)aP(c[C>>2]|0,0,c[D>>2]<<7|0)|0;if(!(Ib[c[(c[A>>2]|0)+4>>2]&63](a,C)|0))break a;f=c[E>>2]|0;if((f|0)>0){w=d>>>0>>0;g=0;v=0;do{m=c[a+344+(v<<2)>>2]|0;b:do if(c[m+52>>2]|0){h=c[m+4>>2]|0;n=c[(c[F>>2]|0)+4+(h<<2)>>2]|0;o=m+56|0;p=c[(w?o:m+72|0)>>2]|0;q=m+40|0;i=c[q>>2]|0;r=B(c[m+68>>2]|0,d)|0;s=m+60|0;l=c[s>>2]|0;if((l|0)>0){t=m+76|0;u=m+36|0;if((p|0)<=0){i=c[o>>2]|0;h=0;while(1){g=i+g|0;h=h+1|0;if((h|0)>=(l|0))break b}}j=(c[b+(h<<2)>>2]|0)+((B(i,x)|0)<<2)|0;k=0;h=l;f=i;while(1){if(!((c[e>>2]|0)>>>0>=K>>>0?(k+x|0)>=(c[t>>2]|0):0)){f=r;h=0;while(1){Yb[n&63](a,m,c[I+32+(h+g<<2)>>2]|0,j,f);h=h+1|0;if((h|0)==(p|0))break;else f=(c[u>>2]|0)+f|0}f=c[q>>2]|0;h=c[s>>2]|0}g=(c[o>>2]|0)+g|0;k=k+1|0;if((k|0)>=(h|0))break;else j=j+(f<<2)|0}f=c[E>>2]|0}}else g=(c[m+64>>2]|0)+g|0;while(0);v=v+1|0}while((v|0)<(f|0))}d=d+1|0}while(d>>>0<=J>>>0);f=c[H>>2]|0}c[y>>2]=0;d=x+1|0;if((d|0)<(f|0)){x=d;d=0}else{L=30;break}}if((L|0)==30){f=c[M>>2]|0;break}c[G>>2]=x;c[y>>2]=d;a=0;return a|0}else e=a+148|0;while(0);d=a+156|0;c[d>>2]=(c[d>>2]|0)+1;d=(c[e>>2]|0)+1|0;c[e>>2]=d;if(d>>>0>=f>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);a=4;return a|0}e=c[N>>2]|0;if((c[a+340>>2]|0)>1)d=1;else{a=c[a+344>>2]|0;d=c[(d>>>0<(f+-1|0)>>>0?a+12|0:a+76|0)>>2]|0}c[e+28>>2]=d;c[e+20>>2]=0;c[e+24>>2]=0;a=3;return a|0}function Du(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;oa=zb;zb=zb+128|0;ka=oa;la=c[a+452>>2]|0;na=a+332|0;ma=(c[na>>2]|0)+-1|0;n=a+144|0;f=c[n>>2]|0;i=a+152|0;g=c[i>>2]|0;a:do if((f|0)<=(g|0)){j=a+460|0;k=a+412|0;l=a+148|0;m=a+156|0;while(1){h=c[j>>2]|0;if(c[h+20>>2]|0)break a;if((f|0)==(g|0)?(c[l>>2]|0)>>>0>((c[m>>2]|0)+((c[k>>2]|0)==0&1)|0)>>>0:0)break a;if(!(Gb[c[h>>2]&127](a)|0)){f=0;break}f=c[n>>2]|0;g=c[i>>2]|0;if((f|0)>(g|0))break a}zb=oa;return f|0}while(0);ba=a+36|0;if((c[ba>>2]|0)>0){f=a+156|0;ca=a+4|0;da=la+112|0;ea=a+472|0;fa=ka+2|0;ga=ka+16|0;ha=ka+32|0;ia=ka+18|0;ja=ka+4|0;_=0;$=c[a+216>>2]|0;while(1){if(c[$+52>>2]|0){h=c[f>>2]|0;if(h>>>0>>0){i=c[$+12>>2]|0;g=i<<1;j=0;aa=i}else{i=c[$+12>>2]|0;aa=((c[$+32>>2]|0)>>>0)%(i>>>0)|0;aa=(aa|0)==0?i:aa;g=aa;j=1}if(!h){Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,0,g,0)|0;g=1}else{Y=B(i,h+-1|0)|0;Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,Y,i+g|0,0)|0;Y=Y+(c[$+12>>2]<<2)|0;g=0}i=(c[da>>2]|0)+(_*6<<2)|0;o=c[$+80>>2]|0;l=e[o>>1]|0;h=e[o+2>>1]|0;k=e[o+16>>1]|0;m=e[o+32>>1]|0;n=e[o+18>>1]|0;o=e[o+4>>1]|0;Z=c[(c[ea>>2]|0)+4+(_<<2)>>2]|0;if((aa|0)>0){X=(g|0)!=0;N=(j|0)!=0;O=aa+-1|0;P=$+28|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=l*36|0;U=h<<7;V=i+16|0;W=k<<7;M=h<<8;J=i+20|0;K=l*9|0;L=m<<7;H=k<<8;I=$+36|0;F=l*5|0;G=n<<7;D=m<<8;E=o<<7;C=n<<8;y=o<<8;z=$+40|0;w=0;x=c[d+(_<<2)>>2]|0;while(1){g=c[Y+(w<<2)>>2]|0;if(X&(w|0)==0)h=g;else h=c[Y+(w+-1<<2)>>2]|0;if(N&(w|0)==(O|0))i=g;else i=c[Y+(w+1<<2)>>2]|0;l=b[h>>1]|0;q=b[g>>1]|0;k=b[i>>1]|0;A=(c[P>>2]|0)+-1|0;s=k;t=q;u=l;v=0;r=0;p=i;while(1){Eu(g,ka,1);if(v>>>0>>0){m=b[p+128>>1]|0;n=b[g+128>>1]|0;o=b[h+128>>1]|0}else{m=s;n=t;o=u}i=c[Q>>2]|0;if((i|0)!=0&(b[fa>>1]|0)==0){j=B(T,q-n|0)|0;if((j|0)>-1){j=(j+U|0)/(M|0)|0;pa=1<0?((j|0)<(pa|0)?j:pa+-1|0):j}else{pa=(U-j|0)/(M|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[fa>>1]=i}i=c[R>>2]|0;if((i|0)!=0&(b[ga>>1]|0)==0){j=B(T,u-s|0)|0;if((j|0)>-1){pa=(j+W|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(W-j|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ga>>1]=i}i=c[S>>2]|0;if((i|0)!=0&(b[ha>>1]|0)==0){j=B(K,u-(t<<1)+s|0)|0;if((j|0)>-1){pa=(j+L|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(L-j|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ha>>1]=i}j=c[V>>2]|0;if((j|0)!=0&(b[ia>>1]|0)==0){i=B(F,l-k-o+m|0)|0;if((i|0)>-1){i=(i+G|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(G-i|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ia>>1]=i}j=c[J>>2]|0;if((j|0)!=0&(b[ja>>1]|0)==0){i=B(K,q-(t<<1)+n|0)|0;if((i|0)>-1){i=(i+E|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(E-i|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ja>>1]=i}Yb[Z&63](a,$,ka,x,r);v=v+1|0;if(v>>>0>A>>>0)break;else{l=u;q=t;k=s;s=m;t=n;u=o;g=g+128|0;r=(c[I>>2]|0)+r|0;h=h+128|0;p=p+128|0}}w=w+1|0;if((w|0)==(aa|0))break;else x=x+(c[z>>2]<<2)|0}}}_=_+1|0;if((_|0)>=(c[ba>>2]|0))break;else $=$+88|0}}else f=a+156|0;pa=(c[f>>2]|0)+1|0;c[f>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;zb=oa;return pa|0}function Eu(a,b,c){a=a|0;b=b|0;c=c|0;_O(b|0,a|0,c<<7|0)|0;return}function Fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[a+468>>2]|0;m=a+412|0;f=c[m>>2]|0;d=(f|0)==0;if(!(c[a+224>>2]|0)){if((d?(c[a+420>>2]|0)==0:0)?(c[a+424>>2]|0)==0:0){m=c[a+416>>2]|0;if((c[a+220>>2]|0)!=0|(m|0)<64?(m|0)!=(c[a+436>>2]|0):0)e=38}else e=38;if((e|0)==38){m=c[a>>2]|0;c[m+20>>2]=125;Ub[c[m+4>>2]&63](a,-1)}g=a+436|0;c[n+4>>2]=(c[g>>2]|0)==63?41:42;d=a+340|0;if((c[d>>2]|0)>0){b=0;do{e=c[a+344+(b<<2)>>2]|0;m=c[e+20>>2]|0;Lu(a,1,m,n+68+(m<<2)|0);if(c[g>>2]|0){m=c[e+24>>2]|0;Lu(a,0,m,n+84+(m<<2)|0)}c[n+24+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[d>>2]|0))}f=a+368|0;if((c[f>>2]|0)<=0){m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}e=0;do{b=c[a+344+(c[a+372+(e<<2)>>2]<<2)>>2]|0;c[n+100+(e<<2)>>2]=c[n+68+(c[b+20>>2]<<2)>>2];c[n+140+(e<<2)>>2]=c[n+84+(c[b+24>>2]<<2)>>2];a:do if(!(c[b+52>>2]|0))b=0;else{d=c[b+40>>2]|0;b=c[b+36>>2]|0;switch(c[g>>2]|0){case 0:{b=1;break a}case 3:{b=(c[4336+(((d|0)!=1&1)<<3)+(((b|0)!=1&1)<<2)>>2]|0)+1|0;break a}case 8:{m=d+-1|0;b=b+-1|0;b=(c[4352+((m>>>0<2?m:2)*12|0)+((b>>>0<2?b:2)<<2)>>2]|0)+1|0;break a}case 15:{m=d+-1|0;b=b+-1|0;b=(c[4400+((m>>>0<3?m:3)<<4)+((b>>>0<3?b:3)<<2)>>2]|0)+1|0;break a}case 24:{m=d+-1|0;b=b+-1|0;b=(c[4464+((m>>>0<4?m:4)*20|0)+((b>>>0<4?b:4)<<2)>>2]|0)+1|0;break a}case 35:{m=d+-1|0;b=b+-1|0;b=(c[4576+((m>>>0<5?m:5)*24|0)+((b>>>0<5?b:5)<<2)>>2]|0)+1|0;break a}case 48:{m=d+-1|0;b=b+-1|0;b=(c[4720+((m>>>0<6?m:6)*28|0)+((b>>>0<6?b:6)<<2)>>2]|0)+1|0;break a}default:{m=d+-1|0;b=b+-1|0;b=(c[4928+((m>>>0<7?m:7)<<5)+((b>>>0<7?b:7)<<2)>>2]|0)+1|0;break a}}}while(0);c[n+180+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[f>>2]|0));m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}k=a+416|0;b=c[k>>2]|0;if(d)if(!b)e=7;else e=11;else if(((b|0)>=(f|0)?(b|0)<=(c[a+436>>2]|0):0)?(c[a+340>>2]|0)==1:0)e=7;else e=11;do if((e|0)==7){b=c[a+420>>2]|0;if(b){b=b+-1|0;if((b|0)!=(c[a+424>>2]|0)){e=11;break}}else b=c[a+424>>2]|0;if((b|0)>13)e=11}while(0);if((e|0)==11){l=c[a>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[a>>2]|0)+28>>2]=c[k>>2];c[(c[a>>2]|0)+32>>2]=c[a+420>>2];c[(c[a>>2]|0)+36>>2]=c[a+424>>2];Sb[c[c[a>>2]>>2]&255](a)}l=a+340|0;b=c[l>>2]|0;if((b|0)>0){i=a+160|0;g=a+420|0;j=a+424|0;h=0;do{e=c[(c[a+344+(h<<2)>>2]|0)+4>>2]|0;f=c[i>>2]|0;b=c[m>>2]|0;if(b){if((c[f+(e<<8)>>2]|0)<0){b=c[a>>2]|0;c[b+20>>2]=118;c[b+24>>2]=e;c[(c[a>>2]|0)+28>>2]=0;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);b=c[m>>2]|0}}else b=0;if((b|0)<=(c[k>>2]|0))while(1){d=f+(e<<8)+(b<<2)|0;o=c[d>>2]|0;if((c[g>>2]|0)!=(((o|0)>0?o:0)|0)){o=c[a>>2]|0;c[o+20>>2]=118;c[o+24>>2]=e;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1)}c[d>>2]=c[j>>2];if((b|0)<(c[k>>2]|0))b=b+1|0;else break}h=h+1|0;b=c[l>>2]|0}while((h|0)<(b|0))}else g=a+420|0;e=c[m>>2]|0;o=(e|0)==0;c[n+4>>2]=(c[g>>2]|0)==0?(o?37:38):o?39:40;b:do if((b|0)>0){f=n+64|0;b=0;while(1){d=c[a+344+(b<<2)>>2]|0;if(!e){if(!(c[g>>2]|0)){o=c[d+20>>2]|0;Lu(a,1,o,n+48+(o<<2)|0)}}else{k=c[d+24>>2]|0;o=n+48+(k<<2)|0;Lu(a,0,k,o);c[f>>2]=c[o>>2]}c[n+24+(b<<2)>>2]=0;b=b+1|0;if((b|0)>=(c[l>>2]|0))break b;e=c[m>>2]|0}}while(0);c[n+20>>2]=0;o=n+16|0;c[o>>2]=0;o=n+12|0;c[o>>2]=0;o=n+40|0;c[o>>2]=0;a=a+280|0;a=c[a>>2]|0;o=n+44|0;c[o>>2]=a;return}function Gu(a){a=a|0;var b=0;b=(c[a+468>>2]|0)+16|0;a=(c[a+464>>2]|0)+24|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function Hu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;t=c[a+424>>2]|0;i=a+280|0;if(c[i>>2]|0?(g=z+44|0,(c[g>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}h=a+340|0;if((c[h>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[h>>2]|0))}c[z+20>>2]=0;c[g>>2]=c[i>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;r=a+24|0;h=c[r>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;s=x+4|0;c[s>>2]=f;u=z+12|0;i=c[u>>2]|0;v=z+16|0;j=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];q=a+368|0;do if((c[q>>2]|0)>0){o=x+8|0;p=x+12|0;l=0;while(1){m=c[e+(l<<2)>>2]|0;n=c[a+372+(l<<2)>>2]|0;h=c[z+48+(c[(c[a+344+(n<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((j|0)<8){if(!(Ou(x,i,j,0)|0)){f=0;k=28;break}i=c[o>>2]|0;j=c[p>>2]|0;if((j|0)<8){f=1;k=17}else k=15}else k=15;if((k|0)==15){k=0;f=i>>j+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;k=17}else{f=d[h+1168+f>>0]|0;j=j-g|0}}if((k|0)==17){f=Pu(x,i,j,h,f)|0;if((f|0)<0){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}if(!f)f=0;else{if((j|0)<(f|0)){if(!(Ou(x,i,j,f)|0)){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}j=j-f|0;k=c[5184+(f<<2)>>2]|0;h=i>>j&k;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:k)|0}k=y+4+(n<<2)|0;n=(c[k>>2]|0)+f|0;c[k>>2]=n;b[m>>1]=n<=(c[q>>2]|0)){k=25;break}}if((k|0)==25){h=c[r>>2]|0;g=c[x>>2]|0;f=c[s>>2]|0;break}else if((k|0)==28){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=i;c[v>>2]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;zb=A;return z|0}function Iu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+32|0;w=y;x=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=x+44|0,(c[i>>2]|0)==0):0){u=x+16|0;v=c[a+464>>2]|0;t=v+24|0;c[t>>2]=(c[t>>2]|0)+((c[u>>2]|0)/8|0);c[u>>2]=0;if(!(Gb[c[v+8>>2]&127](a)|0)){x=0;zb=y;return x|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[x+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[x+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[x+40>>2]=0}if(!(c[x+40>>2]|0)){v=x+20|0;f=c[v>>2]|0;if(!f){c[w+16>>2]=a;r=a+24|0;t=c[r>>2]|0;c[w>>2]=c[t>>2];s=w+4|0;c[s>>2]=c[t+4>>2];t=x+12|0;g=c[t>>2]|0;u=x+16|0;h=c[u>>2]|0;n=c[a+416>>2]|0;o=c[a+424>>2]|0;p=c[a+432>>2]|0;k=c[e>>2]|0;l=c[x+64>>2]|0;f=c[a+412>>2]|0;a:do if((f|0)<=(n|0)){q=w+8|0;m=w+12|0;j=f;b:while(1){if((h|0)<8){if(!(Ou(w,g,h,0)|0)){f=0;a=36;break}g=c[q>>2]|0;h=c[m>>2]|0;if((h|0)<8){f=1;a=19}else a=17}else a=17;if((a|0)==17){a=0;f=g>>h+-8&255;i=c[l+144+(f<<2)>>2]|0;if(!i){f=9;a=19}else{f=d[l+1168+f>>0]|0;h=h-i|0}}if((a|0)==19){f=Pu(w,g,h,l,f)|0;if((f|0)<0){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}e=f>>>4;i=f&15;if(!i){switch(e&268435455|0){case 0:{f=0;break a}case 15:break;default:{a=27;break b}}f=j+15|0}else{f=e+j|0;if((h|0)<(i|0)){if(!(Ou(w,g,h,i)|0)){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}h=h-i|0;j=c[5184+(i<<2)>>2]|0;a=g>>h&j;b[k+(c[p+(f<<2)>>2]<<1)>>1]=a-((a|0)>(c[5184+(i+-1<<2)>>2]|0)?0:j)<>2]|0;g=c[q>>2]|0;break}else f=h;while(0);h=f-e|0;f=i+-1+(g>>h&c[5184+(e<<2)>>2])|0;break}else if((a|0)==36){zb=y;return f|0}}else f=0;while(0);r=c[r>>2]|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[s>>2];c[t>>2]=g;c[u>>2]=h}else f=f+-1|0;c[v>>2]=f}x=x+44|0;c[x>>2]=(c[x>>2]|0)+-1;x=1;zb=y;return x|0}function Ju(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;q=s;r=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=r+44|0,(c[i>>2]|0)==0):0){o=r+16|0;p=c[a+464>>2]|0;n=p+24|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)/8|0);c[o>>2]=0;if(!(Gb[c[p+8>>2]&127](a)|0)){r=0;zb=s;return r|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[r+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[r+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[r+40>>2]=0}c[q+16>>2]=a;m=a+24|0;h=c[m>>2]|0;g=c[h>>2]|0;c[q>>2]=g;f=c[h+4>>2]|0;n=q+4|0;c[n>>2]=f;o=r+12|0;i=c[o>>2]|0;p=r+16|0;j=c[p>>2]|0;l=1<>2];k=a+368|0;do if((c[k>>2]|0)>0){h=q+8|0;a=q+12|0;g=0;f=j;while(1){if((f|0)<1){if(!(Ou(q,i,f,1)|0)){f=0;a=19;break}f=c[a>>2]|0;i=c[h>>2]|0}f=f+-1|0;if(1<>2]|0;b[j>>1]=l|(e[j>>1]|0)}g=g+1|0;if((g|0)>=(c[k>>2]|0)){a=17;break}}if((a|0)==17){j=f;h=c[m>>2]|0;g=c[q>>2]|0;f=c[n>>2]|0;break}else if((a|0)==19){zb=s;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[o>>2]=i;c[p>>2]=j;r=r+44|0;c[r>>2]=(c[r>>2]|0)+-1;r=1;zb=s;return r|0}function Ku(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+288|0;E=G+256|0;D=G;F=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=F+44|0,(c[i>>2]|0)==0):0){z=F+16|0;A=c[a+464>>2]|0;y=A+24|0;c[y>>2]=(c[y>>2]|0)+((c[z>>2]|0)/8|0);c[z>>2]=0;if(!(Gb[c[A+8>>2]&127](a)|0)){F=0;zb=G;return F|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[F+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[F+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[F+40>>2]=0}do if(!(c[F+40>>2]|0)){q=c[a+416>>2]|0;s=c[a+424>>2]|0;r=1<>2]|0;c[E+16>>2]=a;w=a+24|0;y=c[w>>2]|0;c[E>>2]=c[y>>2];x=E+4|0;c[x>>2]=c[y+4>>2];y=F+12|0;j=c[y>>2]|0;z=F+16|0;g=c[z>>2]|0;A=F+20|0;h=c[A>>2]|0;u=c[e>>2]|0;l=c[F+64>>2]|0;i=c[a+412>>2]|0;o=E+8|0;p=E+12|0;a:do if(!h){f=0;b:while(1){if((g|0)<8){if(!(Ou(E,j,g,0)|0))break a;j=c[o>>2]|0;g=c[p>>2]|0;if((g|0)<8){h=1;v=17}else v=15}else v=15;if((v|0)==15){v=0;h=j>>g+-8&255;e=c[l+144+(h<<2)>>2]|0;if(!e){h=9;v=17}else{h=d[l+1168+h>>0]|0;g=g-e|0}}if((v|0)==17){v=0;g=Pu(E,j,g,l,h)|0;if((g|0)<0)break a;h=g;g=c[p>>2]|0;j=c[o>>2]|0}e=h>>>4;switch(h&15){case 0:{if((e|0)==15)k=0;else break b;break}case 1:{v=21;break}default:{v=c[a>>2]|0;c[v+20>>2]=121;Ub[c[v+4>>2]&63](a,-1);v=21}}if((v|0)==21){v=0;if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;k=(1<>2]<<1)|0;do if(!(b[e>>1]|0))if((h|0)<1)break c;else h=h+-1|0;else{if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,n=m<<16>>16,(r&n|0)==0):0)if(m<<16>>16>-1){b[e>>1]=r+n;break}else{b[e>>1]=s+n;break}}while(0);e=i+1|0;if((i|0)<(q|0))i=e;else{i=e;break}}if(k){e=c[t+(i<<2)>>2]|0;b[u+(e<<1)>>1]=k;c[D+(f<<2)>>2]=e;f=f+1|0}if((i|0)<(q|0))i=i+1|0;else{h=0;f=j;v=58;break a}}h=1<>2]|0;j=c[o>>2]|0}g=g-e|0;h=(j>>g&c[5184+(e<<2)>>2])+h|0;if(!h){h=0;f=j;v=58}else v=46}else{h=1;v=46}}else{f=0;v=46}while(0);d:do if((v|0)==46){while(1){e=u+(c[t+(i<<2)>>2]<<1)|0;do if(b[e>>1]|0){if((g|0)<1){if(!(Ou(E,j,g,1)|0))break d;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,C=B<<16>>16,(r&C|0)==0):0)if(B<<16>>16>-1){b[e>>1]=r+C;break}else{b[e>>1]=s+C;break}}while(0);if((i|0)<(q|0))i=i+1|0;else break}h=h+-1|0;f=j;v=58}while(0);if((v|0)==58){D=c[w>>2]|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[x>>2];c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;break}if(!f){F=0;zb=G;return F|0}do{f=f+-1|0;b[u+(c[D+(f<<2)>>2]<<1)>>1]=0}while((f|0)!=0);f=0;zb=G;return f|0}while(0);F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;zb=G;return F|0}function Lu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+1312|0;k=q+1040|0;p=q;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}n=(e|0)!=0;o=c[(n?b+180+(f<<2)|0:b+196+(f<<2)|0)>>2]|0;if(!o){m=c[b>>2]|0;c[m+20>>2]=52;c[m+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}e=c[g>>2]|0;if(!e){l=Jb[c[c[b+4>>2]>>2]&63](b,1,1424)|0;c[g>>2]=l;m=b}else{m=b;l=e}c[l+140>>2]=o;j=a[o+1>>0]|0;e=j&255;if(!(j<<24>>24))e=0;else aP(k|0,1,e|0)|0;f=a[o+2>>0]|0;g=f&255;h=e+g|0;if(h>>>0>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,2,g|0)|0;e=h}f=a[o+3>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,3,g|0)|0;e=h}f=a[o+4>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,4,g|0)|0;e=h}f=a[o+5>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,5,g|0)|0;e=h}f=a[o+6>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,6,g|0)|0;e=h}f=a[o+7>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,7,g|0)|0;e=h}f=a[o+8>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,8,g|0)|0;e=h}f=a[o+9>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,9,g|0)|0;e=h}f=a[o+10>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,10,g|0)|0;e=h}f=a[o+11>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,11,g|0)|0;e=h}f=a[o+12>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,12,g|0)|0;e=h}f=a[o+13>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,13,g|0)|0;e=h}f=a[o+14>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,14,g|0)|0;e=h}f=a[o+15>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,15,g|0)|0;e=h}f=a[o+16>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(!(f<<24>>24))h=e;else aP(k+e|0,16,g|0)|0;a[k+h>>0]=0;f=a[k>>0]|0;if(f<<24>>24){g=0;j=f<<24>>24;e=0;while(1){if((j|0)==(f<<24>>24|0)){f=g;while(1){i=e+1|0;c[p+(e<<2)>>2]=f;e=f+1|0;f=a[k+i>>0]|0;if((j|0)==(f<<24>>24|0)){f=e;e=i}else{g=e;e=i;break}}}if((g|0)>=(1<>2]|0;c[i+20>>2]=9;Sb[c[i>>2]&255](m)}if(!(f<<24>>24))break;else{g=g<<1;j=j+1|0}}}e=o+1|0;if(!(a[e>>0]|0)){f=0;e=-1}else{c[l+76>>2]=0-(c[p>>2]|0);e=d[e>>0]|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+4>>2]=e;e=o+2|0;if(!(a[e>>0]|0))e=-1;else{c[l+80>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+8>>2]=e;e=o+3|0;if(!(a[e>>0]|0))e=-1;else{c[l+84>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+12>>2]=e;e=o+4|0;if(!(a[e>>0]|0))e=-1;else{c[l+88>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+16>>2]=e;e=o+5|0;if(!(a[e>>0]|0))e=-1;else{c[l+92>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+20>>2]=e;e=o+6|0;if(!(a[e>>0]|0))e=-1;else{c[l+96>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+24>>2]=e;e=o+7|0;if(!(a[e>>0]|0))e=-1;else{c[l+100>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+28>>2]=e;e=o+8|0;if(!(a[e>>0]|0))e=-1;else{c[l+104>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+32>>2]=e;e=o+9|0;if(!(a[e>>0]|0))e=-1;else{c[l+108>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+36>>2]=e;e=o+10|0;if(!(a[e>>0]|0))e=-1;else{c[l+112>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+40>>2]=e;e=o+11|0;if(!(a[e>>0]|0))e=-1;else{c[l+116>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+44>>2]=e;e=o+12|0;if(!(a[e>>0]|0))e=-1;else{c[l+120>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+48>>2]=e;e=o+13|0;if(!(a[e>>0]|0))e=-1;else{c[l+124>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+52>>2]=e;e=o+14|0;if(!(a[e>>0]|0))e=-1;else{c[l+128>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+56>>2]=e;e=o+15|0;if(!(a[e>>0]|0))e=-1;else{c[l+132>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+60>>2]=e;e=o+16|0;if(!(a[e>>0]|0))e=-1;else{c[l+136>>2]=f-(c[p+(f<<2)>>2]|0);e=c[p+(f+(d[e>>0]|0)+-1<<2)>>2]|0}c[l+64>>2]=e;c[l+68>>2]=1048575;aP(l+144|0,0,1024)|0;k=o+1|0;if(!(a[k>>0]|0))e=0;else{j=1;e=0;while(1){i=o+17+e|0;f=128;g=c[p+(e<<2)>>2]<<7;while(1){c[l+144+(g<<2)>>2]=1;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}k=o+2|0;if(a[k>>0]|0){j=1;while(1){i=o+17+e|0;f=64;g=c[p+(e<<2)>>2]<<6;while(1){c[l+144+(g<<2)>>2]=2;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}g=o+3|0;if(a[g>>0]|0){f=1;while(1){k=c[p+(e<<2)>>2]<<5;j=o+17+e|0;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;i=k|1;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=i+1|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|3;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+3|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|7;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+7|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|15;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+7|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+8|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+9|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+10|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+11|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+12|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+13|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+14|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+15|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;k=k|31;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+4|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<4;k=o+17+e|0;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|7;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+3|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+4|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+5|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+6|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+7|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;r=r|15;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+5|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<3;k=o+17+e|0;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;r=r|7;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+6|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<2;k=o+17+e|0;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;r=r|3;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+7|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<1;k=o+17+e|0;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;r=r|1;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+8|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]|0;c[l+144+(r<<2)>>2]=8;a[l+1168+r>>0]=a[o+17+e>>0]|0;if(f>>>0<(d[g>>0]|0)>>>0){f=f+1|0;e=e+1|0}else break}}if(!(n&(h|0)>0)){zb=q;return}e=0;do{if((d[o+17+e>>0]|0)>15){r=c[b>>2]|0;c[r+20>>2]=9;Sb[c[r>>2]&255](m)}e=e+1|0}while((e|0)!=(h|0));zb=q;return}function Mu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=z+44|0,(c[i>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[z+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;s=a+24|0;h=c[s>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;t=x+4|0;c[t>>2]=f;u=z+12|0;j=c[u>>2]|0;v=z+16|0;i=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];r=a+368|0;do if((c[r>>2]|0)>0){p=x+8|0;q=x+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[z+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(x,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[z+140+(o<<2)>>2]|0;k=c[z+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=48}else{f=1;m=48}else{if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=y+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(x,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;g=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(x,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;h=c[5184+(g<<2)>>2]|0;B=j>>i&h;b[l+(c[2064+(f<<2)>>2]<<1)>>1]=B-((B|0)>(c[5184+(g+-1<<2)>>2]|0)?0:h);g=f}f=g+1|0}while((f|0)<(k|0));if((g|0)<63)m=48}else{f=1;m=48}}while(0);c:do if((m|0)==48){h=f;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(x,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<64)}while(0);o=o+1|0;if((o|0)>=(c[r>>2]|0)){m=64;break}}if((m|0)==64){h=c[s>>2]|0;g=c[x>>2]|0;f=c[t>>2]|0;break}else if((m|0)==67){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=j;c[v>>2]=i;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}B=z+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=A;return B|0}function Nu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+48|0;z=C+20|0;A=C;B=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=B+44|0,(c[i>>2]|0)==0):0){x=B+16|0;y=c[a+464>>2]|0;w=y+24|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!(Gb[c[y+8>>2]&127](a)|0)){B=0;zb=C;return B|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[B+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[B+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[B+40>>2]=0}if(!(c[B+40>>2]|0)){r=c[a+432>>2]|0;s=c[a+436>>2]|0;c[z+16>>2]=a;u=a+24|0;h=c[u>>2]|0;g=c[h>>2]|0;c[z>>2]=g;f=c[h+4>>2]|0;v=z+4|0;c[v>>2]=f;w=B+12|0;j=c[w>>2]|0;x=B+16|0;i=c[x>>2]|0;y=B+20|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];t=a+368|0;do if((c[t>>2]|0)>0){p=z+8|0;q=z+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[B+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(z,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[B+140+(o<<2)>>2]|0;k=c[B+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=47}else{f=1;m=47}else{if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=A+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;while(1){if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(z,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;f=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(z,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;m=c[5184+(g<<2)>>2]|0;h=j>>i&m;b[l+(c[r+(f<<2)>>2]<<1)>>1]=h-((h|0)>(c[5184+(g+-1<<2)>>2]|0)?0:m)}f=f+1|0;if((f|0)>=(k|0)){m=47;break}}}else{f=1;m=47}}while(0);c:do if((m|0)==47)if((f|0)<=(s|0)){h=f;do{if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(z,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<=(s|0))}while(0);o=o+1|0;if((o|0)>=(c[t>>2]|0)){m=64;break}}if((m|0)==64){h=c[u>>2]|0;g=c[z>>2]|0;f=c[v>>2]|0;break}else if((m|0)==67){zb=C;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[w>>2]=j;c[x>>2]=i;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2]}B=B+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=C;return B|0}function Ou(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;l=m+440|0;a:do if(!(c[l>>2]|0)){if((e|0)<25){k=m+24|0;j=e;b:while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break}g=c[k>>2]|0;h=c[g+4>>2]|0;g=c[g>>2]|0}h=h+-1|0;i=g+1|0;e=a[g>>0]|0;g=e&255;c:do if(e<<24>>24==-1){g=i;while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break b}e=c[k>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;switch(e<<24>>24){case 0:{e=255;break c}case -1:break;default:{o=13;break b}}}}else{e=g;g=i}while(0);d=e|d<<8;e=j+8|0;if((j|0)<17)j=e;else break a}if((o|0)==13){c[l>>2]=e&255;e=j;i=h;o=15;break}else if((o|0)==20)return g|0}}else{i=h;o=15}while(0);if((o|0)==15)if((e|0)<(f|0)){h=m+468|0;if(!(c[(c[h>>2]|0)+40>>2]|0)){o=c[m>>2]|0;c[o+20>>2]=120;Ub[c[o+4>>2]&63](m,-1);c[(c[h>>2]|0)+40>>2]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function Pu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!(Ou(a,b,e,g)|0)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[5184+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!(Ou(a,b,e,1)|0)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;a=c[f>>2]|0;c[a+20>>2]=121;Ub[c[a+4>>2]&63](f,-1);f=0;return f|0}else{f=d[(c[f+72+(g<<2)>>2]|0)+h+((c[f+140>>2]|0)+17)>>0]|0;return f|0}return 0}function Qu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+468>>2]|0;p=b+224|0;q=b+412|0;f=c[q>>2]|0;e=(f|0)==0;do if(c[p>>2]|0){m=b+416|0;d=c[m>>2]|0;if(e)if(!d)n=7;else n=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+436>>2]|0):0)?(c[b+340>>2]|0)==1:0)n=7;else n=11;do if((n|0)==7){d=c[b+420>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+424>>2]|0)){n=11;break}}else d=c[b+424>>2]|0;if((d|0)>13)n=11}while(0);if((n|0)==11){l=c[b>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[b>>2]|0)+28>>2]=c[m>>2];c[(c[b>>2]|0)+32>>2]=c[b+420>>2];c[(c[b>>2]|0)+36>>2]=c[b+424>>2];Sb[c[c[b>>2]>>2]&255](b)}l=b+340|0;d=c[l>>2]|0;if((d|0)>0){j=b+160|0;g=b+420|0;k=b+424|0;i=0;do{f=c[(c[b+344+(i<<2)>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[q>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[(c[b>>2]|0)+28>>2]=0;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);d=c[q>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;r=c[e>>2]|0;if((c[g>>2]|0)!=(((r|0)>0?r:0)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=f;c[(c[b>>2]|0)+28>>2]=d;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}i=i+1|0;d=c[l>>2]|0}while((i|0)<(d|0))}else g=b+420|0;e=(c[q>>2]|0)==0;f=o+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=43;k=l;break}else{c[f>>2]=44;k=l;break}else if(e){c[f>>2]=45;k=l;break}else{c[f>>2]=46;k=l;break}}else{if((e?(c[b+420>>2]|0)==0:0)?(c[b+424>>2]|0)==0:0){r=c[b+416>>2]|0;if((r|0)<64?(r|0)!=(c[b+436>>2]|0):0)n=36}else n=36;if((n|0)==36){r=c[b>>2]|0;c[r+20>>2]=125;Ub[c[r+4>>2]&63](b,-1)}c[o+4>>2]=47;d=b+340|0;k=d;d=c[d>>2]|0}while(0);if((d|0)<=0){q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}h=b+436|0;i=b+420|0;j=b+4|0;g=0;do{f=c[b+344+(g<<2)>>2]|0;if(c[p>>2]|0)if(!(c[q>>2]|0)){if(!(c[i>>2]|0))n=43}else n=50;else n=43;do if((n|0)==43){n=0;d=c[f+20>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+60+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,64)|0;c[e>>2]=d}e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[o+24+(g<<2)>>2]=0;c[o+40+(g<<2)>>2]=0;if(!(c[p>>2]|0))if(!(c[h>>2]|0))break;else{n=50;break}else if(!(c[q>>2]|0))break;else{n=50;break}}while(0);if((n|0)==50){n=0;d=c[f+24>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+124+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,256)|0;c[e>>2]=d}aP(d|0,0,256)|0}g=g+1|0}while((g|0)<(c[k>>2]|0));q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}function Ru(a){a=a|0;return}function Su(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){r=c[e>>2]|0;c[r+20>>2]=25;Sb[c[r>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{t=13;break}else if(!(c[j>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}o=s+20|0;if((c[o>>2]|0)==-1)return 1;p=e+368|0;if((c[p>>2]|0)<=0)return 1;q=e+424|0;n=0;a:while(1){r=c[f+(n<<2)>>2]|0;l=c[e+372+(n<<2)>>2]|0;j=c[(c[e+344+(l<<2)>>2]|0)+20>>2]|0;h=s+60+(j<<2)|0;k=s+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[s+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768)break a;h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=s+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[r>>1]=g<>2];n=n+1|0;if((n|0)>=(c[p>>2]|0)){t=37;break}}if((t|0)==37)return 1;t=c[e>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](e,-1);c[o>>2]=-1;return 1}function Tu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){t=c[e>>2]|0;c[t+20>>2]=25;Sb[c[t>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}t=s+20|0;if((c[t>>2]|0)==-1)return 1;r=c[e+432>>2]|0;p=c[f>>2]|0;o=c[(c[e+344>>2]|0)+24>>2]|0;q=s+124+(o<<2)|0;l=s+188|0;m=e+416|0;n=e+424|0;o=e+264+o|0;h=(c[e+412>>2]|0)+-1|0;a:while(1){g=(c[q>>2]|0)+(h*3|0)|0;if(Xu(e,g)|0){r=36;break}j=h+1|0;if(!(Xu(e,g+1|0)|0)){i=g;h=j;while(1){if((h|0)>=(c[m>>2]|0)){r=23;break a}g=i+3|0;j=h+1|0;if(!(Xu(e,i+4|0)|0)){i=g;h=j}else break}}k=Xu(e,l)|0;i=g+2|0;g=Xu(e,i)|0;if(g){if(Xu(e,i)|0){g=g<<1;h=(c[q>>2]|0)+((h|0)<(d[o>>0]|0|0)?189:217)|0;if(Xu(e,h)|0)do{g=g<<1;if((g|0)==32768){r=30;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{s=(Xu(e,i)|0)==0;g=(s?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(j<<2)>>2]<<1)>>1]=((k|0)==0?g+1|0:~g)<>2];if((j|0)<(c[m>>2]|0))h=j;else{r=36;break}}if((r|0)==23){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==30){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==36)return 1;return 0}function Uu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[d+468>>2]|0;p=d+280|0;if(c[p>>2]|0){s=r+56|0;g=c[s>>2]|0;if(!g){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){o=c[d>>2]|0;c[o+20>>2]=25;Sb[c[o>>2]&255](d)}h=d+340|0;if((c[h>>2]|0)>0){i=d+224|0;j=d+412|0;k=d+436|0;l=d+420|0;g=0;do{m=c[d+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))q=10}else q=13;else q=10;do if((q|0)==10){q=0;n=c[r+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[r+24+(g<<2)>>2]=0;c[r+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{q=13;break}else if(!(c[j>>2]|0))break;else{q=13;break}}while(0);if((q|0)==13){q=0;aP(c[r+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=-16;g=c[p>>2]|0;c[s>>2]=g}c[s>>2]=g+-1}h=r+188|0;i=1<>2];j=d+368|0;if((c[j>>2]|0)<=0)return 1;g=0;do{if(Xu(d,h)|0){s=c[f+(g<<2)>>2]|0;b[s>>1]=i|(e[s>>1]|0)}g=g+1|0}while((g|0)<(c[j>>2]|0));return 1}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[d+468>>2]|0;o=d+280|0;if(c[o>>2]|0){p=q+56|0;f=c[p>>2]|0;if(!f){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){s=c[d>>2]|0;c[s+20>>2]=25;Sb[c[s>>2]&255](d)}g=d+340|0;if((c[g>>2]|0)>0){h=d+224|0;i=d+412|0;j=d+436|0;k=d+420|0;f=0;do{l=c[d+344+(f<<2)>>2]|0;if(c[h>>2]|0)if(!(c[i>>2]|0)){if(!(c[k>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;m=c[q+60+(c[l+20>>2]<<2)>>2]|0;n=m+64|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[q+24+(f<<2)>>2]=0;c[q+40+(f<<2)>>2]=0;if(!(c[h>>2]|0))if(!(c[j>>2]|0))break;else{t=13;break}else if(!(c[i>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[q+124+(c[l+24>>2]<<2)>>2]|0,0,256)|0}f=f+1|0}while((f|0)<(c[g>>2]|0))}c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=-16;f=c[o>>2]|0;c[p>>2]=f}c[p>>2]=f+-1}r=q+20|0;if((c[r>>2]|0)==-1)return 1;s=c[d+432>>2]|0;n=c[e>>2]|0;g=c[(c[d+344>>2]|0)+24>>2]|0;p=c[d+424>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(f<<2)>>2]<<1)>>1]|0)break;f=f+-1|0;if(!f){f=0;break}}m=q+124+(g<<2)|0;j=q+188|0;k=o&65535;l=p&65535;g=(c[d+412>>2]|0)+-1|0;a:while(1){h=(c[m>>2]|0)+(g*3|0)|0;if((g|0)>=(f|0)?Xu(d,h)|0:0){t=38;break}g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;b:do if(!(b[i>>1]|0)){while(1){if(Xu(d,h+1|0)|0)break;if((g|0)>=(c[e>>2]|0)){t=35;break a}h=h+3|0;g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;if(b[i>>1]|0){t=26;break b}}if(!(Xu(d,j)|0)){b[i>>1]=k;break}else{b[i>>1]=l;break}}else t=26;while(0);do if((t|0)==26){t=0;if(Xu(d,h+2|0)|0){q=b[i>>1]|0;h=q<<16>>16;if(q<<16>>16<0){b[i>>1]=p+h;break}else{b[i>>1]=o+h;break}}}while(0);if((g|0)>=(c[e>>2]|0)){t=38;break}}if((t|0)==35){t=c[d>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](d,-1);c[r>>2]=-1;return 1}else if((t|0)==38)return 1;return 0} +function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;Jg(a+32|0,b);d=Ah(b)|0;d=Ng(c[d>>2]|0)|0;f=Ah(b)|0;f=Og(c[f>>2]|0)|0;e=Pg(b)|0;uj(a+92|0,d,f,e,Qg(b)|0,36,3.0,1.5,5,.800000011920929);e=Ah(b)|0;e=Ng(c[e>>2]|0)|0;c[a>>2]=e;e=Ah(b)|0;e=Og(c[e>>2]|0)|0;c[a+4>>2]=e;e=a+16|0;Bh(e,c[a+8>>2]|0);f=a+20|0;a=a+12|0;b=0;while(1){d=c[e>>2]|0;if(b>>>0>=(((c[f>>2]|0)-d|0)/12|0)>>>0)break;Ch(d+(b*12|0)|0,c[a>>2]|0);b=b+1|0}return}function Ah(a){a=a|0;return a+4|0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;kh(f);d=f}c[g>>2]=a}}else Kh(a,b-e|0);return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;lh(f);d=f}c[g>>2]=a}}else Dh(a,b-e|0);return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Fh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Gh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Hh(f,b);Ih(a,f);Jh(f);break}}else Eh(a,b);while(0);zb=i;return}function Eh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Fh(a){a=a|0;return 357913941}function Gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Hh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Jh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;lh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Mh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Nh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Oh(f,b);Ph(a,f);Qh(f);break}}else Lh(a,b);while(0);zb=i;return}function Lh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Qh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;kh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=zb;zb=zb+32|0;d=e;if((Pg(b)|0)<=0){f=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,147)|0,35007)|0,22967)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);g=XF(d,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(d);QE(f,g)|0;ME(f)|0;ua()}Bq(d,23866);if(Sh(d)|0)Zg(a+32|0,b);Cq(d);Bq(d,23878);if(Sh(d)|0)Th(a,b,a+32|0);Cq(d);Bq(d,23898);if(Sh(d)|0)Uh(a,b);Cq(d);Bq(d,23907);if(Sh(d)|0)Vh(a);Cq(d);Bq(d,23921);if(Sh(d)|0)Wh(a,b);Cq(d);zb=e;return}function Sh(a){a=a|0;return 1}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0.0;ha=zb;zb=zb+48|0;aa=ha;ca=a+60|0;da=a+64|0;c[da>>2]=c[ca>>2];fa=+ji(+f[a+52>>2]);V=a+32|0;W=aa+12|0;Y=aa+16|0;Z=aa+24|0;_=aa+28|0;$=aa+4|0;F=a+68|0;G=aa+12|0;H=aa+16|0;I=aa+24|0;J=aa+28|0;K=aa+4|0;L=aa+12|0;M=aa+16|0;N=aa+24|0;O=aa+28|0;P=aa+4|0;a=1;a:while(1){if(a>>>0>=((Ki(V)|0)+-1|0)>>>0){ga=3;break}Q=Li(d,a+-1|0)|0;R=Li(d,a)|0;S=a+1|0;T=Li(d,S)|0;U=Mi(d,a)|0;E=Ni(d,a)|0;D=Ng(Q)|0;b:do if((D|0)==(Ng(R)|0)?(D=Ng(Q)|0,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=7;break a}D=Og(Q)|0;if((D|0)!=(Og(T)|0)){ga=9;break a}k=(Ng(R)|0)+-1|0;l=(Og(R)|0)+-1|0;m=+(E|0);a=1;while(1){if(a>>>0>=l>>>0)break b;v=a+-1|0;n=ch(Q,v)|0;o=ch(Q,a)|0;p=a+1|0;q=ch(Q,p)|0;r=ch(R,v)|0;t=ch(R,a)|0;u=ch(R,p)|0;v=ch(T,v)|0;w=ch(T,a)|0;x=ch(T,p)|0;j=+(a>>>0);i=1;while(1){if(i>>>0>=k>>>0)break;a=t+(i<<2)|0;do if(!(+ji(+f[a>>2])>2];h=i+-1|0;e=+f[n+(h<<2)>>2];do if(((((g>e?g>+f[n+(i<<2)>>2]:0)?(X=i+1|0,g>+f[n+(X<<2)>>2]):0)?g>+f[o+(h<<2)>>2]:0)?g>+f[o+(i<<2)>>2]:0)?g>+f[o+(X<<2)>>2]:0){if(!(g>+f[q+(h<<2)>>2])){ga=42;break}if(!(g>+f[q+(i<<2)>>2])){ga=42;break}if(!(g>+f[q+(X<<2)>>2])){ga=42;break}if(!(g>+f[r+(h<<2)>>2])){ga=42;break}if(!(g>+f[r+(i<<2)>>2])){ga=42;break}if(!(g>+f[r+(X<<2)>>2])){ga=42;break}if(!(g>+f[t+(h<<2)>>2])){ga=42;break}if(!(g>+f[t+(X<<2)>>2])){ga=42;break}if(!(g>+f[u+(h<<2)>>2])){ga=42;break}if(!(g>+f[u+(i<<2)>>2])){ga=42;break}if(!(g>+f[u+(X<<2)>>2])){ga=42;break}if(!(g>+f[v+(h<<2)>>2])){ga=42;break}if(!(g>+f[v+(i<<2)>>2])){ga=42;break}if(!(g>+f[v+(X<<2)>>2])){ga=42;break}if(!(g>+f[w+(h<<2)>>2])){ga=42;break}if(!(g>+f[w+(i<<2)>>2])){ga=42;break}if(!(g>+f[w+(X<<2)>>2])){ga=42;break}if(!(g>+f[x+(h<<2)>>2])){ga=42;break}if(!(g>+f[x+(i<<2)>>2])){ga=42;break}if(!(g>+f[x+(X<<2)>>2]))ga=42}else ga=42;while(0);if((ga|0)==42){ga=0;if(!(g>2]))break;a=i+1|0;if(!(g<+f[n+(a<<2)>>2]))break;if(!(g<+f[o+(h<<2)>>2]))break;if(!(g<+f[o+(i<<2)>>2]))break;if(!(g<+f[o+(a<<2)>>2]))break;if(!(g<+f[q+(h<<2)>>2]))break;if(!(g<+f[q+(i<<2)>>2]))break;if(!(g<+f[q+(a<<2)>>2]))break;if(!(g<+f[r+(h<<2)>>2]))break;if(!(g<+f[r+(i<<2)>>2]))break;if(!(g<+f[r+(a<<2)>>2]))break;if(!(g<+f[t+(h<<2)>>2]))break;if(!(g<+f[t+(a<<2)>>2]))break;if(!(g<+f[u+(h<<2)>>2]))break;if(!(g<+f[u+(i<<2)>>2]))break;if(!(g<+f[u+(a<<2)>>2]))break;if(!(g<+f[v+(h<<2)>>2]))break;if(!(g<+f[v+(i<<2)>>2]))break;if(!(g<+f[v+(a<<2)>>2]))break;if(!(g<+f[w+(h<<2)>>2]))break;if(!(g<+f[w+(i<<2)>>2]))break;if(!(g<+f[w+(a<<2)>>2]))break;if(!(g<+f[x+(h<<2)>>2]))break;if(!(g<+f[x+(i<<2)>>2]))break;if(!(g<+f[x+(a<<2)>>2]))break}c[W>>2]=U;c[Y>>2]=E;f[Z>>2]=g;C=+si(b,U,m);f[_>>2]=C;ri(aa,$,+(i>>>0),j,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);i=i+1|0}a=p}}else ga=72;while(0);c:do if((ga|0)==72){ga=0;D=Ng(Q)|0;if((D|0)==(Ng(R)|0)?(D=(Ng(R)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=75;break a}D=(Og(R)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=77;break a}l=~~+s(+((+(((Ng(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;n=~~+s(+((+(((Og(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;C=+(E|0);a=2;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(Q,t)|0;p=ch(Q,a)|0;q=a+1|0;r=ch(Q,q)|0;t=ch(R,t)|0;u=ch(R,a)|0;v=ch(R,q)|0;y=+(a>>>0);z=y*.5+-.25;A=z+-.5;B=z+.5;k=2;while(1){if(k>>>0>=l>>>0)break;i=u+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0);m=j*.5+-.25;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ba=k+1|0,e>+f[o+(ba<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(k<<2)>>2])){ga=110;break}if(!(e>+f[p+(ba<<2)>>2])){ga=110;break}if(!(e>+f[r+(h<<2)>>2])){ga=110;break}if(!(e>+f[r+(k<<2)>>2])){ga=110;break}if(!(e>+f[r+(ba<<2)>>2])){ga=110;break}if(!(e>+f[t+(h<<2)>>2])){ga=110;break}if(!(e>+f[t+(k<<2)>>2])){ga=110;break}if(!(e>+f[t+(ba<<2)>>2])){ga=110;break}if(!(e>+f[u+(h<<2)>>2])){ga=110;break}if(!(e>+f[u+(ba<<2)>>2])){ga=110;break}if(!(e>+f[v+(h<<2)>>2])){ga=110;break}if(!(e>+f[v+(k<<2)>>2])){ga=110;break}if(!(e>+f[v+(ba<<2)>>2])){ga=110;break}g=m+-.5;if(!(e>+Ci(T,g,A))){ga=110;break}e=+f[i>>2];if(!(e>+Ci(T,m,A))){ga=110;break}ia=+f[i>>2];e=m+.5;if(!(ia>+Ci(T,e,A))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,B)))ga=110}else ga=110;while(0);if((ga|0)==110){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(k<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=m+-.5;if(!(e<+Ci(T,g,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,A)))break;ia=+f[i>>2];e=m+.5;if(!(ia<+Ci(T,e,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,B)))break}c[G>>2]=U;c[H>>2]=E;c[I>>2]=c[i>>2];ia=+si(b,U,C);f[J>>2]=ia;ri(aa,K,j,y,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}D=(Ng(Q)|0)>>>1;if((D|0)==(Ng(R)|0)?(D=(Ng(Q)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=(Og(Q)|0)>>>1;if((D|0)!=(Og(R)|0)){ga=144;break a}D=(Og(Q)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=146;break a}l=(Ng(R)|0)+-1|0;n=(Og(R)|0)+-1|0;A=+(E|0);a=1;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(R,t)|0;p=ch(R,a)|0;q=a+1|0;r=ch(R,q)|0;t=ch(T,t)|0;u=ch(T,a)|0;v=ch(T,q)|0;B=+(a<<1>>>0)+.5;m=+(a>>>0);y=B+-2.0;z=B+2.0;k=1;while(1){if(k>>>0>=l>>>0)break;i=p+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0)+.5;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ea=k+1|0,e>+f[o+(ea<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(ea<<2)>>2])){ga=179;break}if(!(e>+f[r+(h<<2)>>2])){ga=179;break}if(!(e>+f[r+(k<<2)>>2])){ga=179;break}if(!(e>+f[r+(ea<<2)>>2])){ga=179;break}if(!(e>+f[t+(h<<2)>>2])){ga=179;break}if(!(e>+f[t+(k<<2)>>2])){ga=179;break}if(!(e>+f[t+(ea<<2)>>2])){ga=179;break}if(!(e>+f[u+(h<<2)>>2])){ga=179;break}if(!(e>+f[u+(k<<2)>>2])){ga=179;break}if(!(e>+f[u+(ea<<2)>>2])){ga=179;break}if(!(e>+f[v+(h<<2)>>2])){ga=179;break}if(!(e>+f[v+(k<<2)>>2])){ga=179;break}if(!(e>+f[v+(ea<<2)>>2])){ga=179;break}g=j+-2.0;if(!(e>+Ci(Q,g,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,y))){ga=179;break}ia=+f[i>>2];e=j+2.0;if(!(ia>+Ci(Q,e,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,z)))ga=179}else ga=179;while(0);if((ga|0)==179){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(k<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=j+-2.0;if(!(e<+Ci(Q,g,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,y)))break;ia=+f[i>>2];e=j+2.0;if(!(ia<+Ci(Q,e,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,z)))break}c[L>>2]=U;c[M>>2]=E;c[N>>2]=c[i>>2];ia=+si(b,U,A);f[O>>2]=ia;ri(aa,P,+(k>>>0),m,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}}while(0);a=S}if((ga|0)==3){zb=ha;return}else if((ga|0)==7){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,192)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==9){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26726)|0,22676)|0,35e3)|0,193)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==75){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,277)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==77){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26778)|0,22676)|0,35e3)|0,278)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==144){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26835)|0,22676)|0,35e3)|0,362)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==146){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26892)|0,22676)|0,35e3)|0,363)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0;J=zb;zb=zb+80|0;I=J+68|0;A=J;C=J+56|0;D=J+44|0;E=J+40|0;F=J+36|0;s=+ji(+f[a+52>>2]);H=a+56|0;w=+ji(+f[H>>2]+1.0);w=w/+f[H>>2];H=a+60|0;x=a+64|0;y=a+32|0;z=D+4|0;o=a+88|0;p=C+4|0;q=C+8|0;r=D+8|0;m=0;n=0;while(1){l=c[H>>2]|0;i=l;if(n>>>0>=(((c[x>>2]|0)-l|0)/36|0)>>>0){a=3;break}d=i+(n*36|0)|0;a=i+(n*36|0)+16|0;l=c[a>>2]|0;if((l|0)>=(li(y)|0)){a=5;break}j=i+(n*36|0)+12|0;l=c[j>>2]|0;l=B(li(y)|0,l)|0;l=l+(c[a>>2]|0)|0;k=i+(n*36|0)+4|0;mi(E,F,+f[d>>2],+f[k>>2],c[j>>2]|0);e=~~(+f[E>>2]+.5);g=~~(+f[F>>2]+.5);L=ni(y)|0;L=(c[L>>2]|0)+(l+-1<<5)|0;h=ni(y)|0;h=(c[h>>2]|0)+(l<<5)|0;K=ni(y)|0;if(((oi(A,C,L,h,(c[K>>2]|0)+(l+1<<5)|0,e,g)|0?pi(D,A,C)|0:0)?(M=+ji(+f[D>>2]),M=M+ +ji(+f[z>>2]),!(M>+f[o>>2])):0)?(G=i+(n*36|0)+32|0,qi(G,A)|0):0){l=i+(n*36|0)+24|0;M=+f[l>>2];L=(ch(h,g)|0)+(e<<2)|0;if(!(M==+f[L>>2])){a=11;break}L=(ch(h,g)|0)+(e<<2)|0;N=+f[D>>2];M=+f[z>>2];f[l>>2]=+f[L>>2]-(+f[C>>2]*N+ +f[p>>2]*M+ +f[q>>2]*+f[r>>2]);ri(d,k,N+ +f[E>>2],M+ +f[F>>2],c[j>>2]|0);M=+f[r>>2]+ +(c[a>>2]|0);a=i+(n*36|0)+20|0;f[a>>2]=M;M=+Zh(M,0.0,+(li(y)|0));f[a>>2]=M;if(((((+t(+(+f[G>>2]))>2])>=s:0)?(u=+f[d>>2],u>=0.0):0)?(L=ni(y)|0,u<+((Ng(c[L>>2]|0)|0)>>>0)):0)?(v=+f[k>>2],v>=0.0):0)?(L=ni(y)|0,v<+((Og(c[L>>2]|0)|0)>>>0)):0){N=+si(b,c[j>>2]|0,+f[a>>2]);f[i+(n*36|0)+28>>2]=N;a=m+1|0;g=(c[H>>2]|0)+(m*36|0)|0;e=g+36|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}else a=m}else a=m;m=a;n=n+1|0}if((a|0)==3){ki(H,m);zb=J;return}else if((a|0)==5){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24248)|0,22676)|0,35e3)|0,489)|0,35007)|0,24320)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}else if((a|0)==11){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24357)|0,22676)|0,35e3)|0,526)|0,35007)|0,24414)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+16|0;d=l+12|0;h=l;i=a+60|0;j=a+64|0;k=a+84|0;e=c[k>>2]|0;do if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>e>>>0){f=a+16|0;b=c[f>>2]|0;g=((c[a+20>>2]|0)-b|0)/12|0;if((g|0)!=(c[a+8>>2]|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,23939)|0,22676)|0,35e3)|0,454)|0,35007)|0,23994)|0;IE(d,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(d,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(d);QE(m,n)|0;ME(m)|0;ua()}b=((c[b+4>>2]|0)-(c[b>>2]|0)|0)/12|0;if((b|0)!=(c[a+12>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24020)|0,22676)|0,35e3)|0,455)|0,35007)|0,23994)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;ai(f,h,i,g,b,c[a>>2]|0,c[a+4>>2]|0,e);Xh(i,h);if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>(c[k>>2]|0)>>>0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24078)|0,22676)|0,35e3)|0,469)|0,35007)|0,24147)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}else{hh(h);break}}while(0);zb=l;return}function Wh(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=zb;zb=zb+64|0;l=w+48|0;s=w+44|0;t=w+40|0;u=w+36|0;v=w;a:do if(!(a[b+28>>0]|0)){g=c[b+60>>2]|0;e=((c[b+64>>2]|0)-g|0)/36|0;b=0;while(1){if((b|0)==(e|0))break a;f[g+(b*36|0)+8>>2]=0.0;b=b+1|0}}else{k=b+72|0;m=b+76|0;c[m>>2]=c[k>>2];n=b+60|0;o=b+64|0;uh(k,(c[o>>2]|0)-(c[n>>2]|0)|0);p=b+92|0;vj(p,d);q=b+144|0;r=v+8|0;j=b+80|0;i=0;while(1){h=c[n>>2]|0;b=h;if(i>>>0>=(((c[o>>2]|0)-h|0)/36|0)>>>0)break;Yh(s,t,u,+f[b+(i*36|0)>>2],+f[b+(i*36|0)+4>>2],+f[b+(i*36|0)+28>>2],c[b+(i*36|0)+12>>2]|0);x=+f[s>>2];x=+Zh(x,0.0,+(((Ng(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[s>>2]=x;x=+f[t>>2];x=+Zh(x,0.0,+(((Og(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[t>>2]=x;h=c[n>>2]|0;yj(p,c[q>>2]|0,l,c[h+(i*36|0)+12>>2]|0,c[h+(i*36|0)+16>>2]|0,+f[s>>2],x,+f[u>>2]);h=0;while(1){if((h|0)>=(c[l>>2]|0))break;b=v;e=(c[n>>2]|0)+(i*36|0)|0;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[r>>2]=c[(c[q>>2]|0)+(h<<2)>>2];b=c[m>>2]|0;if((b|0)==(c[j>>2]|0))_h(k,v);else{e=v;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[m>>2]=(c[m>>2]|0)+36}h=h+1|0}i=i+1|0}Xh(n,k)}while(0);zb=w;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Yh(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=+d;e=+e;g=+g;h=h|0;var i=0.0,j=0.0;i=1.0/+(1<>2]=i*d+j;f[b>>2]=i*e+j;f[c>>2]=i*g;return}function Zh(a,b,c){a=+a;b=+b;c=+c;if(!(ac)a=c}else a=b;return +a}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+32|0;i=j;d=a+4|0;e=(((c[d>>2]|0)-(c[a>>2]|0)|0)/36|0)+1|0;f=$h(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;k=((c[a+8>>2]|0)-g|0)/36|0;h=k<<1;vh(i,k>>>0>>1>>>0?(h>>>0>>0?e:h):f,((c[d>>2]|0)-g|0)/36|0,a+8|0);f=i+8|0;g=c[f>>2]|0;h=g;d=b;e=h+36|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));c[f>>2]=g+36;wh(a,i);xh(i);zb=j;return}}function $h(a){a=a|0;return 119304647}function ai(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0.0;D=zb;zb=zb+48|0;C=D+8|0;v=D+32|0;u=D+28|0;y=D+24|0;z=D+20|0;w=D+16|0;x=D;o=B(g,e)|0;n=+A(+(+(h|0)/+(e|0)));m=+A(+(+(i|0)/+(g|0)));r=b+4|0;c[r>>2]=c[b>>2];uh(b,j);s=a+4|0;g=c[a>>2]|0;i=((c[s>>2]|0)-g|0)/12|0;e=0;while(1){if((e|0)==(i|0))break;l=c[g+(e*12|0)>>2]|0;k=((c[g+(e*12|0)+4>>2]|0)-l|0)/12|0;h=0;while(1){if((h|0)==(k|0))break;c[l+(h*12|0)+4>>2]=c[l+(h*12|0)>>2];h=h+1|0}e=e+1|0}q=(j|0)/(o|0)|0;o=d+4|0;n=+(~~n|0);m=+(~~m|0);g=C+4|0;l=0;while(1){p=c[d>>2]|0;e=p;if(l>>>0>=(((c[o>>2]|0)-p|0)/36|0)>>>0)break;i=~~(+f[e+(l*36|0)+4>>2]/m);k=c[(c[a>>2]|0)+(~~(+f[e+(l*36|0)>>2]/n)*12|0)>>2]|0;E=+t(+(+f[e+(l*36|0)+24>>2]));f[C>>2]=E;c[g>>2]=l;e=k+(i*12|0)+4|0;h=c[e>>2]|0;if(h>>>0<(c[k+(i*12|0)+8>>2]|0)>>>0){k=C;j=c[k+4>>2]|0;p=h;c[p>>2]=c[k>>2];c[p+4>>2]=j;c[e>>2]=(c[e>>2]|0)+8}else bi(k+(i*12|0)|0,C);l=l+1|0}p=b+8|0;e=c[a>>2]|0;g=e;j=0;h=g;a:while(1){if(j>>>0>=(((c[s>>2]|0)-e|0)/12|0)>>>0){e=16;break}o=0;i=g;while(1){l=c[i+(j*12|0)>>2]|0;e=l;if(o>>>0>=(((c[i+(j*12|0)+4>>2]|0)-l|0)/12|0)>>>0)break;l=e+(o*12|0)|0;e=e+(o*12|0)+4|0;g=c[e>>2]|0;i=c[l>>2]|0;k=g-i>>3;k=q>>>0>>0?q:k;if(!k)e=h;else{c[y>>2]=i;c[z>>2]=i+(k<<3);c[w>>2]=g;c[u>>2]=c[y>>2];c[v>>2]=c[z>>2];c[C>>2]=c[w>>2];ci(u,v,C,x);g=c[l>>2]|0;i=g;if(k>>>0>(c[e>>2]|0)-g>>3>>>0?!(+f[i>>2]>=+f[i+(k<<3)>>2]):0){e=23;break a}i=0;while(1){if(i>>>0>=k>>>0)break;h=(c[d>>2]|0)+((c[(c[l>>2]|0)+(i<<3)+4>>2]|0)*36|0)|0;e=c[r>>2]|0;if((e|0)==(c[p>>2]|0))_h(b,h);else{g=e+36|0;do{c[e>>2]=c[h>>2];e=e+4|0;h=h+4|0}while((e|0)<(g|0));c[r>>2]=(c[r>>2]|0)+36}i=i+1|0}e=c[a>>2]|0}o=o+1|0;h=e;i=e}j=j+1|0;g=i;e=i}if((e|0)==16){zb=D;return}else if((e|0)==23){D=Xf(Xf(PE(Xf(Xf(Xf(56032,24171)|0,22676)|0,35e3)|0,661)|0,35007)|0,24229)|0;IE(C,D+(c[(c[D>>2]|0)+-12>>2]|0)|0);z=XF(C,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(C);QE(D,z)|0;ME(D)|0;ua()}}function bi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=fi(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;gi(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;hi(a,d);ii(d);zb=h;return}}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=zb;zb=zb+48|0;y=K+40|0;x=K+36|0;w=K+32|0;C=K+28|0;D=K+24|0;E=K+20|0;G=K+16|0;H=K+12|0;I=K+8|0;z=K+4|0;A=K;v=c[b>>2]|0;a:while(1){u=c[d>>2]|0;n=u;t=u+-8|0;q=t;s=u+-4|0;if((v|0)==(u|0))break;r=c[a>>2]|0;k=r;b:while(1){b=n-k|0;g=b>>3;switch(g|0){case 1:case 0:break a;case 2:{J=5;break a}case 3:{J=10;break a}default:{}}if((b|0)<64){J=12;break a}g=g>>>1;p=r+(g<<3)|0;c[I>>2]=k;c[z>>2]=p;c[A>>2]=q;c[w>>2]=c[I>>2];c[x>>2]=c[z>>2];c[y>>2]=c[A>>2];b=di(w,x,y,e)|0;l=k;j=+f[p>>2];i=+f[l>>2];if(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0:0){J=53;break}g=t;while(1){m=g+-8|0;if((m|0)==(l|0))break;i=+f[m>>2];if(j>2]|0,(c[h>>2]|0)>>>0>>0):0){J=51;break b}g=m}h=l+8|0;b=h;o=+f[t>>2];j=+f[r>>2];do if(!(o>2]|0)>>>0<(c[g>>2]|0)>>>0)break}else g=r+4|0;while(1){if((h|0)==(t|0))break a;i=+f[h>>2];if(i>2]|0,F>>>0<(c[g>>2]|0)>>>0):0){J=28;break}h=h+8|0}if((J|0)==25){J=0;g=h+4|0;b=g;g=c[g>>2]|0}else if((J|0)==28){J=0;b=h+4|0;g=F}f[h>>2]=o;f[t>>2]=i;c[b>>2]=c[s>>2];c[s>>2]=g;b=h+8|0}while(0);if((t|0)==(b|0))break a;l=r+4|0;g=q;while(1){j=+f[r>>2];k=b;while(1){b=k;i=+f[b>>2];if(i>2]|0)>>>0<(c[l>>2]|0)>>>0:0)break;k=b+8|0}h=k;while(1){b=g+-8|0;i=+f[b>>2];if(!(i>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}g=b}if(b>>>0<=h>>>0)break;m=c[k>>2]|0;f[k>>2]=i;c[b>>2]=m;m=h+4|0;g=g+-4|0;p=c[m>>2]|0;c[m>>2]=c[g>>2];c[g>>2]=p;g=b;b=h+8|0}b=k;if(v>>>0>>0)break a;c[a>>2]=k;r=b}if((J|0)==47){h=g+-4|0;g=h;h=c[h>>2]|0;J=52}else if((J|0)==51){g=g+-4|0;h=B;J=52}else if((J|0)==53){J=0;h=t;s=k}if((J|0)==52){J=0;s=k;r=c[k>>2]|0;f[k>>2]=i;c[m>>2]=r;r=s+4|0;t=c[r>>2]|0;c[r>>2]=h;c[g>>2]=t;b=b+1|0;h=m}g=s+8|0;k=g;if(g>>>0>>0){q=p;g=k;while(1){p=q;n=p+4|0;j=+f[p>>2];while(1){k=g;i=+f[k>>2];if(!(j>2]|0)>>>0>=(c[k+4>>2]|0)>>>0)break}g=k+8|0}m=g;while(1){l=h+-8|0;i=+f[l>>2];if(j>2]|0)>>>0<(c[h+-4>>2]|0)>>>0:0)break;h=l}k=l;if(l>>>0<=m>>>0)break;t=c[g>>2]|0;f[g>>2]=i;c[l>>2]=t;t=m+4|0;h=h+-4|0;g=c[t>>2]|0;c[t>>2]=c[h>>2];c[h>>2]=g;b=b+1|0;h=k;q=(p|0)==(m|0)?k:q;g=m+8|0}r=g;p=q;k=g}else r=g;n=k;do if((p|0)!=(r|0)){i=+f[r>>2];j=+f[p>>2];if(!(i>2]|0;g=p+4|0;m=c[g>>2]|0;if(h>>>0>=m>>>0)break}else{h=r+4|0;m=p+4|0;g=m;l=h;m=c[m>>2]|0;h=c[h>>2]|0}t=c[k>>2]|0;f[k>>2]=j;c[p>>2]=t;c[l>>2]=m;c[g>>2]=h;b=b+1|0}while(0);if((v|0)==(r|0))break;c:do if(!b)if(v>>>0>>0){b=s;while(1){g=b+8|0;if((g|0)==(r|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}else{b=n;while(1){g=b+8|0;if((g|0)==(u|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}while(0);if(v>>>0>>0)c[d>>2]=k;else c[a>>2]=r+8}do if((J|0)==5){c[d>>2]=t;i=+f[r>>2];j=+f[t>>2];if(!(i>2]|0;h=c[s>>2]|0;if(g>>>0>=h>>>0)break}else{g=r+4|0;b=g;h=c[s>>2]|0;g=c[g>>2]|0}f[r>>2]=j;f[t>>2]=i;c[b>>2]=h;c[s>>2]=g}else if((J|0)==10){c[C>>2]=k;c[D>>2]=k+8;c[d>>2]=t;c[E>>2]=t;c[w>>2]=c[C>>2];c[x>>2]=c[D>>2];c[y>>2]=c[E>>2];di(w,x,y,e)|0}else if((J|0)==12){c[G>>2]=k;c[H>>2]=u;c[x>>2]=c[G>>2];c[y>>2]=c[H>>2];ei(x,y,e)}while(0);zb=K;return}function di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0.0,h=0.0,i=0,j=0.0,k=0,l=0;l=c[b>>2]|0;k=c[a>>2]|0;j=+f[k>>2];h=+f[l>>2];if(!(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0;else e=1;i=c[d>>2]|0;g=+f[i>>2];if(!(h>2]|0)>>>0<(c[i+4>>2]|0)>>>0;else b=1;do if(!e)if(b){f[l>>2]=g;f[i>>2]=h;d=l+4|0;i=i+4|0;a=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=a;g=+f[k>>2];h=+f[l>>2];if(!(g>2]|0;a=c[d>>2]|0;if(e>>>0>=a>>>0){b=1;break}}else{e=k+4|0;b=e;a=c[d>>2]|0;e=c[e>>2]|0}f[k>>2]=h;f[l>>2]=g;c[b>>2]=a;c[d>>2]=e;b=2}else b=0;else{if(b){f[k>>2]=g;f[i>>2]=j;k=k+4|0;b=i+4|0;l=c[k>>2]|0;c[k>>2]=c[b>>2];c[b>>2]=l;b=1;break}f[k>>2]=h;f[l>>2]=j;k=k+4|0;a=l+4|0;d=c[k>>2]|0;c[k>>2]=c[a>>2];c[a>>2]=d;g=+f[i>>2];if(!(j>2]|0;if(d>>>0>=e>>>0){b=1;break}}else{e=i+4|0;b=e;e=c[e>>2]|0}f[l>>2]=g;f[i>>2]=j;c[a>>2]=e;c[b>>2]=d;b=2}while(0);return b|0}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0,k=0,l=0;j=c[b>>2]|0;k=j+-8|0;l=c[a>>2]|0;while(1){if((l|0)==(k|0))break;a:do if((l|0)==(j|0))b=j;else{b=l;while(1){h=b+4|0;d=b;while(1){i=d+8|0;if((i|0)==(j|0))break a;e=+f[b>>2];g=+f[i>>2];if(e>2]|0)>>>0<(c[d+12>>2]|0)>>>0:0)break;d=i}b=i}}while(0);if((b|0)!=(l|0)){d=c[l>>2]|0;c[l>>2]=c[b>>2];c[b>>2]=d;d=l+4|0;i=b+4|0;h=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=h}i=l+8|0;c[a>>2]=i;l=i}return}function fi(a){a=a|0;return 536870911}function gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ii(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ji(a){a=+a;return +(a*a)}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=((c[d>>2]|0)-f|0)/36|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b*36|0)}else Hi(a,b-e|0);return}function li(a){a=a|0;return c[a+16>>2]|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;h=1.0/+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function ni(a){a=a|0;return a|0}function oi(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;k=Ng(d)|0;k=(k|0)==(Ng(e)|0)&1;do if((Ng(f)|0)==(k|0)){k=Og(d)|0;k=(k|0)==(Og(e)|0)&1;if((Og(f)|0)==(k|0)){yi(a,b,d,e,f,g,h);break}else{k=Xf(Xf(PE(Xf(Xf(Xf(56032,24457)|0,24528)|0,35e3)|0,466)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}}else{k=Ng(d)|0;if((k|0)==(Ng(e)|0)?(k=(Ng(e)|0)>>>1,(k|0)==(Ng(f)|0)):0){k=Og(d)|0;if((k|0)==(Og(e)|0)?(k=(Og(e)|0)>>>1,(k|0)==(Og(f)|0)):0){zi(a,b,d,e,f,g,h);break}k=Xf(Xf(PE(Xf(Xf(Xf(56032,24653)|0,24528)|0,35e3)|0,469)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){Ai(a,b,d,e,f,g,h);break}l=Xf(Xf(PE(Xf(Xf(Xf(56032,24750)|0,24528)|0,35e3)|0,472)|0,35007)|0,24621)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}l=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,24528)|0,35e3)|0,475)|0,35007)|0,24843)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}while(0);zb=j;return 1}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=zb;zb=zb+48|0;d=e;if(ti(d,b,1.1920928955078125e-07)|0){ui(a,d,c);a=1}else a=0;zb=e;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=b+16|0;d=+f[b>>2]*+f[c>>2];d=d-+ji(+f[b+4>>2]);if(d==0.0)a=0;else{d=+ji(+f[b>>2]+ +f[c>>2])/d;f[a>>2]=d;a=1}return a|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;g=+hz(1.0,e+-1|0)+-.5;h=+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function si(a,b,d){a=a|0;b=b|0;d=+d;var e=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;e=g;if(!(d>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,232)|0,35007)|0,34138)|0;IE(e,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(e,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(e);QE(h,i)|0;ME(h)|0;ua()}if(+(c[a+20>>2]|0)>d){d=+v(+(+f[a+24>>2]),+d)*+(1<>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(i,h)|0;ME(i)|0;ua()}return +(0.0)}function ti(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=+vi(b);if(!(+t(+e)<=d)){e=1.0/e;j=b+16|0;g=b+20|0;m=b+32|0;d=e*+wi(+f[j>>2],+f[g>>2],+f[m>>2]);f[a>>2]=d;l=b+8|0;k=b+4|0;d=e*+xi(+f[l>>2],+f[k>>2],+f[m>>2],+f[b+28>>2]);i=a+4|0;f[i>>2]=d;d=e*+xi(+f[k>>2],+f[l>>2],+f[j>>2],+f[g>>2]);h=a+8|0;f[h>>2]=d;d=e*+wi(+f[b>>2],+f[l>>2],+f[m>>2]);f[a+16>>2]=d;d=e*+xi(+f[l>>2],+f[b>>2],+f[g>>2],+f[b+12>>2]);g=a+20|0;f[g>>2]=d;e=e*+wi(+f[b>>2],+f[k>>2],+f[j>>2]);f[a+32>>2]=e;c[a+12>>2]=c[i>>2];c[a+24>>2]=c[h>>2];c[a+28>>2]=c[g>>2];a=1}else a=0;return a|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=c+4|0;d=c+8|0;f[a>>2]=+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[e>>2]+ +f[b+8>>2]*+f[d>>2];f[a+4>>2]=+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]+ +f[b+20>>2]*+f[d>>2];f[a+8>>2]=+f[b+24>>2]*+f[c>>2]+ +f[b+28>>2]*+f[e>>2]+ +f[b+32>>2]*+f[d>>2];return}function vi(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,g=0.0,h=0.0,i=0;b=a+32|0;g=+f[b>>2];c=a+4|0;g=g*+ji(+f[c>>2]);e=+f[a+8>>2];i=a+20|0;h=+f[c>>2]*2.0*e*+f[i>>2];c=a+16|0;d=+f[c>>2];e=d*+ji(e);d=+f[a>>2];d=d*+ji(+f[i>>2]);return +(h-g-e-d+ +f[a>>2]*+f[c>>2]*+f[b>>2])}function wi(a,b,c){a=+a;b=+b;c=+c;return +(a*c-b*b)}function xi(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(a*d-b*c)}function yi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0;r=zb;zb=zb+32|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;k=r+4|0;l=r;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){m=i+-1|0;if((i|0)>0?(n=i+1|0,n>>>0<(Og(e)|0)>>>0):0){s=Ng(d)|0;if((s|0)!=(Ng(e)|0)){s=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,311)|0,35007)|0,25078)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);t=XF(o,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(o);QE(s,t)|0;ME(s)|0;ua()}t=Ng(d)|0;if((t|0)!=(Ng(g)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26545)|0,24528)|0,35e3)|0,312)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)!=(Og(e)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,313)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)==(Og(g)|0)){z=(ch(d,m)|0)+(h<<2)|0;A=(ch(d,i)|0)+(h<<2)|0;o=(ch(d,n)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;t=(ch(g,m)|0)+(h<<2)|0;m=(ch(g,i)|0)+(h<<2)|0;s=(ch(g,n)|0)+(h<<2)|0;Bi(p,q,j,k,l,e,h,i);v=+f[m>>2];u=+f[A>>2];w=v+(u-+f[d>>2]*2.0);y=(+f[A+-4>>2]-+f[A+4>>2]+(+f[m+4>>2]-+f[m+-4>>2]))*.25;x=(+f[z>>2]-+f[o>>2]+(+f[s>>2]-+f[t>>2]))*.25;c[a>>2]=c[j>>2];t=c[l>>2]|0;c[a+4>>2]=t;f[a+8>>2]=y;c[a+12>>2]=t;c[a+16>>2]=c[k>>2];f[a+20>>2]=x;f[a+24>>2]=y;f[a+28>>2]=x;f[a+32>>2]=w;f[b>>2]=-+f[p>>2];f[b+4>>2]=-+f[q>>2];f[b+8>>2]=-((v-u)*.5);zb=r;return}else{A=Xf(Xf(PE(Xf(Xf(Xf(56032,26597)|0,24528)|0,35e3)|0,314)|0,35007)|0,25078)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,310)|0,35007)|0,25005)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,309)|0,35007)|0,24930)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}function zi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;w=zb;zb=zb+32|0;t=w+28|0;u=w+24|0;v=w+20|0;o=w+16|0;p=w+12|0;q=w+8|0;r=w+4|0;s=w;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){j=i+-1|0;if((i|0)>0?(l=i+1|0,l>>>0<(Og(e)|0)>>>0):0){n=Ng(d)|0;if((n|0)!=(Ng(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,415)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Ng(d)|0)>>>1;if((n|0)!=(Ng(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,416)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=Og(d)|0;if((n|0)!=(Og(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,417)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Og(d)|0)>>>1;if((n|0)!=(Og(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,418)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}m=(ch(d,j)|0)+(h<<2)|0;n=(ch(d,i)|0)+(h<<2)|0;j=(ch(d,l)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;mi(u,v,+(h|0),+(i|0),1);k=+f[u>>2];if(!(k+-.5>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,26252)|0,24528)|0,35e3)|0,428)|0,35007)|0,26293)|0;IE(t,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);x=XF(t,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(t);QE(l,x)|0;ME(l)|0;ua()}if(!(+f[v>>2]+-.5>=0.0)){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26347)|0,24528)|0,35e3)|0,429)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}if(!(k+.5<+((Ng(g)|0)>>>0))){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26442)|0,24528)|0,35e3)|0,430)|0,35007)|0,26293)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}k=+f[v>>2]+.5;if(k<+((Og(g)|0)>>>0)){Bi(o,p,q,r,s,e,h,i);y=+Ci(g,+f[u>>2],+f[v>>2]);k=+f[n>>2];z=y+(k-+f[d>>2]*2.0);C=+f[n+-4>>2];C=C+ +Ci(g,+f[u>>2]+.5,+f[v>>2]);B=+f[n+4>>2];B=(C-(B+ +Ci(g,+f[u>>2]+-.5,+f[v>>2])))*.25;C=+f[m>>2];C=C+ +Ci(g,+f[u>>2],+f[v>>2]+.5);A=+f[j>>2];A=(C-(A+ +Ci(g,+f[u>>2],+f[v>>2]+-.5)))*.25;c[a>>2]=c[q>>2];x=c[s>>2]|0;c[a+4>>2]=x;f[a+8>>2]=B;c[a+12>>2]=x;c[a+16>>2]=c[r>>2];f[a+20>>2]=A;f[a+24>>2]=B;f[a+28>>2]=A;f[a+32>>2]=z;f[b>>2]=-+f[o>>2];f[b+4>>2]=-+f[p>>2];f[b+8>>2]=-((y-k)*.5);zb=w;return}else{x=Xf(Xf(PE(Xf(Xf(Xf(56032,26493)|0,24528)|0,35e3)|0,431)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,414)|0,35007)|0,25005)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,413)|0,35007)|0,24930)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}function Ai(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;t=zb;zb=zb+32|0;q=t+28|0;r=t+24|0;s=t+20|0;j=t+16|0;k=t+12|0;l=t+8|0;m=t+4|0;n=t;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){o=i+-1|0;if((i|0)>0?(p=i+1|0,p>>>0<(Og(e)|0)>>>0):0){u=(Ng(d)|0)>>>1;if((u|0)!=(Ng(e)|0)){u=Xf(Xf(PE(Xf(Xf(Xf(56032,25021)|0,24528)|0,35e3)|0,361)|0,35007)|0,25078)|0;IE(q,u+(c[(c[u>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(u,v)|0;ME(u)|0;ua()}v=(Ng(d)|0)>>>1;if((v|0)!=(Ng(g)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,362)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)!=(Og(e)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25165)|0,24528)|0,35e3)|0,363)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)==(Og(g)|0)){C=(ch(e,i)|0)+(h<<2)|0;v=(ch(g,o)|0)+(h<<2)|0;q=(ch(g,i)|0)+(h<<2)|0;u=(ch(g,p)|0)+(h<<2)|0;ri(r,s,+(h|0),+(i|0),1);Bi(j,k,l,m,n,e,h,i);w=+Ci(d,+f[r>>2],+f[s>>2]);x=+f[q>>2];y=x+(w-+f[C>>2]*2.0);B=+Ci(d,+f[r>>2]+-2.0,+f[s>>2]);B=B+ +f[q+4>>2];A=+Ci(d,+f[r>>2]+2.0,+f[s>>2]);A=(B-(A+ +f[q+-4>>2]))*.25;B=+Ci(d,+f[r>>2],+f[s>>2]+-2.0);B=B+ +f[u>>2];z=+Ci(d,+f[r>>2],+f[s>>2]+2.0);z=(B-(z+ +f[v>>2]))*.25;c[a>>2]=c[l>>2];v=c[n>>2]|0;c[a+4>>2]=v;f[a+8>>2]=A;c[a+12>>2]=v;c[a+16>>2]=c[m>>2];f[a+20>>2]=z;f[a+24>>2]=A;f[a+28>>2]=z;f[a+32>>2]=y;f[b>>2]=-+f[j>>2];f[b+4>>2]=-+f[k>>2];f[b+8>>2]=-((x-w)*.5);zb=t;return}else{C=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,364)|0,35007)|0,25078)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,360)|0,35007)|0,25005)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,359)|0,35007)|0,24930)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}function Bi(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;if((i|0)>0?(i+1|0)>>>0<(Ng(h)|0)>>>0:0){k=j+-1|0;if((j|0)>0?(l=j+1|0,l>>>0<(Og(h)|0)>>>0):0){k=(ch(h,k)|0)+(i<<2)|0;j=(ch(h,j)|0)+(i<<2)|0;m=(ch(h,l)|0)+(i<<2)|0;h=j+4|0;i=j+-4|0;f[a>>2]=(+f[h>>2]-+f[i>>2])*.5;f[b>>2]=(+f[m>>2]-+f[k>>2])*.5;f[d>>2]=+f[h>>2]+(+f[i>>2]-+f[j>>2]*2.0);f[e>>2]=+f[m>>2]+(+f[k>>2]-+f[j>>2]*2.0);f[g>>2]=(+f[k+-4>>2]+ +f[m+4>>2]-(+f[k+4>>2]+ +f[m+-4>>2]))*.25;zb=n;return}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26089)|0,24528)|0,35e3)|0,285)|0,35007)|0,25005)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26033)|0,24528)|0,35e3)|0,284)|0,35007)|0,24930)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}function Ci(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;f=Di(a)|0;e=Ng(a)|0;d=Og(a)|0;return +(+Fi(f,e,d,Ei(a)|0,b,c))}function Di(a){a=a|0;return c[a+24>>2]|0}function Ei(a){a=a|0;return c[a+12>>2]|0}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return +(+Gi(a,b,c,d,e,f))}function Gi(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;h=+h;var i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;p=zb;zb=zb+16|0;n=p;o=~~+s(+g);if((o|0)!=(~~g|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25283)|0,25335)|0,35e3)|0,69)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(n,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(n);QE(m,l)|0;ME(m)|0;ua()}l=~~+s(+h);if((l|0)!=(~~h|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25441)|0,25335)|0,35e3)|0,70)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);k=XF(n,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(n);QE(m,k)|0;ME(m)|0;ua()}m=o+1|0;k=l+1|0;if(!((l|0)>-1&l>>>0>>0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,25493)|0,25335)|0,35e3)|0,79)|0,35007)|0,25539)|0;IE(n,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);r=XF(n,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(n);QE(q,r)|0;ME(q)|0;ua()}if(k>>>0>=d>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25556)|0,25335)|0,35e3)|0,80)|0,35007)|0,25616)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!((o|0)>-1&o>>>0>>0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25640)|0,25335)|0,35e3)|0,81)|0,35007)|0,25685)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(m>>>0>=b>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25702)|0,25335)|0,35e3)|0,82)|0,35007)|0,25761)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}b=a+(B(l,e)|0)|0;a=b+e|0;u=+(m|0)-g;i=+(k|0)-h;j=u*i;t=g-+(o|0);i=t*i;h=h-+(l|0);g=u*h;h=t*h;if(!(j>=0.0)|!(j<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25785)|0,25335)|0,35e3)|0,94)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(i>=0.0)|!(i<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25845)|0,25335)|0,35e3)|0,95)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(g>=0.0)|!(g<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25892)|0,25335)|0,35e3)|0,96)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h>=0.0)|!(h<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25939)|0,25335)|0,35e3)|0,97)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h+(g+(j+i))<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25986)|0,25335)|0,35e3)|0,98)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}else{zb=p;return +(j*+f[b+(o<<2)>>2]+i*+f[b+(m<<2)>>2]+g*+f[a+(o<<2)>>2]+h*+f[a+(m<<2)>>2])}return +(0.0)}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/36|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/36|0)+b|0;e=$h(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/36|0;g=k<<1;vh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/36|0,a+8|0);Ji(f,b);wh(a,f);xh(f);break}}else Ii(a,b);while(0);zb=i;return}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+4|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ji(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ki(a){a=a|0;return (c[a+4>>2]|0)-(c[a>>2]|0)>>5|0}function Li(a,b){a=a|0;b=b|0;return (c[a>>2]|0)+(b<<5)|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f;e=c[a>>2]|0;if((c[a+4>>2]|0)-e>>5>>>0>b>>>0){e=Ng(e)|0;e=~~+Pi(+Oi(+(((e>>>0)/((Ng((c[a>>2]|0)+(b<<5)|0)|0)>>>0)|0)>>>0)));zb=f;return e|0}else{f=Xf(Xf(PE(Xf(Xf(Xf(56032,26949)|0,24528)|0,35e3)|0,94)|0,35007)|0,26995)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=XF(d,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(d);QE(f,e)|0;ME(f)|0;ua()}return 0}function Ni(a,b){a=a|0;b=b|0;return (b|0)%(c[a+16>>2]|0)|0|0}function Oi(a){a=+a;return +(+z(+a)/.6931471824645996)}function Pi(a){a=+a;return +(+s(+(a+.5)))}function Qi(a){a=a|0;c[a>>2]=15676;gh(a+56|0);gh(a+44|0);Si(a+32|0);Ti(a);return}function Ri(a){a=a|0;Qi(a);SA(a);return}function Si(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Ti(a){a=a|0;c[a>>2]=15692;mh(a+4|0);return}function Ui(a){a=a|0;Ti(a);SA(a);return}function Vi(a,g,h,i,j){a=a|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=zb;zb=zb+16|0;k=t;if(i>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,55)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}if(j>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,56)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}o=i+-1|0;p=i+-2|0;q=i+-3|0;r=i+-4|0;l=g;m=0;while(1){if((m|0)==(j|0))break;s=h+(B(m,i)|0)|0;k=d[s>>0]|0;u=s+1|0;n=s+2|0;b[l>>1]=(k*7|0)+(d[n>>0]|0)+((d[u>>0]|0)+k<<2);k=d[s>>0]|0;b[l+2>>1]=((d[u>>0]|0)*6|0)+k+(d[s+3>>0]|0)+((d[n>>0]|0)+k<<2);k=2;n=l+4|0;while(1){if((k|0)==(p|0))break;u=k+1|0;b[n>>1]=((d[s+k>>0]|0)*6|0)+(d[s+(k+-2)>>0]|0)+((d[s+u>>0]|0)+(d[s+(k+-1)>>0]|0)<<2)+(d[s+(k+2)>>0]|0);k=u;n=n+2|0}u=l+(p<<1)|0;n=s+p|0;k=s+q|0;v=s+o|0;w=d[v>>0]|0;b[u>>1]=((d[n>>0]|0)*6|0)+w+(d[s+r>>0]|0)+(w+(d[k>>0]|0)<<2);s=d[v>>0]|0;b[u+2>>1]=(s*7|0)+(d[k>>0]|0)+((d[n>>0]|0)+s<<2);l=l+(i<<1)|0;m=m+1|0}s=j+-2|0;k=g+(i<<1)|0;q=k+(i<<1)|0;l=0;m=q;n=k;o=g;p=a;while(1){if((l|0)==(i|0))break;w=e[o>>1]|0;f[p>>2]=+((w*7|0)+((e[n>>1]|0)+w<<2)+(e[m>>1]|0)|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+4|0}o=0;p=q+(i<<1)|0;n=q;l=g;m=a+(i<<2)|0;while(1){if((o|0)==(i|0))break;w=e[l>>1]|0;f[m>>2]=+(((e[k>>1]|0)*6|0)+w+((e[n>>1]|0)+w<<2)+(e[p>>1]|0)|0)*.00390625;o=o+1|0;p=p+2|0;n=n+2|0;k=k+2|0;l=l+2|0;m=m+4|0}l=2;while(1){if((l|0)==(s|0))break;q=g+((B(l+-2|0,i)|0)<<1)|0;p=q+(i<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;k=0;m=n+(i<<1)|0;r=a+((B(l,i)|0)<<2)|0;while(1){if((k|0)==(i|0))break;f[r>>2]=+(((e[o>>1]|0)*6|0)+(e[q>>1]|0)+((e[n>>1]|0)+(e[p>>1]|0)<<2)+(e[m>>1]|0)|0)*.00390625;k=k+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;q=q+2|0;r=r+4|0}l=l+1|0}p=g+((B(j+-4|0,i)|0)<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(s,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+(((e[n>>1]|0)*6|0)+(e[p>>1]|0)+(w+(e[o>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;k=k+4|0}o=g+((B(j+-3|0,i)|0)<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(j+-1|0,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+((w*6|0)+(e[o>>1]|0)+(w+(e[n>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;k=k+4|0}zb=t;return}function Wi(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0;q=zb;zb=zb+16|0;h=q;if(e>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,168)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}if(g>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,169)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}l=e+-1|0;m=e+-2|0;n=e+-3|0;o=e+-4|0;i=b;j=0;while(1){if((j|0)==(g|0))break;p=d+((B(j,e)|0)<<2)|0;r=+f[p>>2];k=p+4|0;h=p+8|0;f[i>>2]=+f[h>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0));r=+f[p>>2];f[i+4>>2]=+f[p+12>>2]+(r+(+f[k>>2]*6.0+(r+ +f[h>>2])*4.0));h=2;k=i+8|0;while(1){if((h|0)==(m|0))break;s=h+1|0;f[k>>2]=+f[p+(h+2<<2)>>2]+(+f[p+(h+-2<<2)>>2]+(+f[p+(h<<2)>>2]*6.0+(+f[p+(h+-1<<2)>>2]+ +f[p+(s<<2)>>2])*4.0));h=s;k=k+4|0}s=i+(m<<2)|0;k=p+(m<<2)|0;h=p+(n<<2)|0;t=p+(l<<2)|0;r=+f[t>>2];f[s>>2]=r+(+f[p+(o<<2)>>2]+(+f[k>>2]*6.0+(+f[h>>2]+r)*4.0));r=+f[t>>2];f[s+4>>2]=r+(+f[h>>2]+(r*6.0+(r+ +f[k>>2])*4.0));i=i+(e<<2)|0;j=j+1|0}p=g+-2|0;h=b+(e<<2)|0;n=h+(e<<2)|0;i=0;j=n;k=h;l=b;m=a;while(1){if((i|0)==(e|0))break;r=+f[l>>2];f[m>>2]=(+f[j>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0}l=0;m=n+(e<<2)|0;k=n;i=b;j=a+(e<<2)|0;while(1){if((l|0)==(e|0))break;r=+f[i>>2];f[j>>2]=(+f[m>>2]+(r+(+f[h>>2]*6.0+(r+ +f[k>>2])*4.0)))*.00390625;l=l+1|0;m=m+4|0;k=k+4|0;h=h+4|0;i=i+4|0;j=j+4|0}i=2;while(1){if((i|0)==(p|0))break;n=b+((B(i+-2|0,e)|0)<<2)|0;m=n+(e<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;h=0;j=k+(e<<2)|0;o=a+((B(i,e)|0)<<2)|0;while(1){if((h|0)==(e|0))break;f[o>>2]=(+f[j>>2]+(+f[n>>2]+(+f[l>>2]*6.0+(+f[m>>2]+ +f[k>>2])*4.0)))*.00390625;h=h+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;n=n+4|0;o=o+4|0}i=i+1|0}m=b+((B(g+-4|0,e)|0)<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(p,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[m>>2]+(+f[k>>2]*6.0+(+f[l>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;h=h+4|0}l=b+((B(g+-3|0,e)|0)<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(g+-1|0,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[l>>2]+(r*6.0+(+f[k>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;h=h+4|0}zb=q;return}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c>>>1;j=d>>>1;k=c<<1;i=0;while(1){if((i|0)==(j|0))break;g=b+((B(k,i)|0)<<2)|0;d=0;e=g+(c<<2)|0;h=a;while(1){if((d|0)==(l|0))break;f[h>>2]=(+f[g>>2]+ +f[g+4>>2]+ +f[e>>2]+ +f[e+4>>2])*.25;d=d+1|0;e=e+8|0;g=g+8|0;h=h+4|0}i=i+1|0;a=a+(l<<2)|0}return}function Yi(a){a=a|0;c[a>>2]=15692;a=a+4|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;c[a+16>>2]=b;c[a+20>>2]=d;e=+La(+(1.0/+(d+-1|0)));f[a+24>>2]=e;e=1.0/+z(+e);f[a+28>>2]=e;return}function _i(a){a=a|0;var b=0;Yi(a);c[a>>2]=15676;a=a+32|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $i(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;Zi(a,e,3);k=a+4|0;l=a+20|0;Rg(k,B(c[l>>2]|0,e)|0);g=0;while(1){if((g|0)>=(e|0))break;h=b>>>g;i=d>>>g;f=0;while(1){j=c[l>>2]|0;if(f>>>0>=j>>>0)break;j=(B(j,g)|0)+f|0;cq((c[k>>2]|0)+(j<<5)|0,2,h,i,-1,1);f=f+1|0}g=g+1|0}l=B(d,b)|0;aj(a+32|0,l);fh(a+44|0,l);fh(a+56|0,l);return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>1;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<1)}else bj(a,b-e|0);return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>1>>>0>>0){d=(d-(c[a>>2]|0)>>1)+b|0;e=dj(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;g=(c[g>>2]|0)-j|0;ej(f,g>>1>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>1,a+8|0);fj(f,b);gj(a,f);hj(f);break}}else cj(a,b);while(0);zb=i;return}function cj(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function dj(a){a=a|0;return 2147483647}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if((b|0)<0){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<1)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<1)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<1);return}function fj(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function gj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>1)<<1)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hj(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-2|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((Mg(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27230)|0,27081)|0,35e3)|0,330)|0,35007)|0,27281)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((ah(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27305)|0,27081)|0,35e3)|0,331)|0,35007)|0,27350)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}e=a+4|0;f=a+16|0;g=a+20|0;if(((c[a+8>>2]|0)-(c[e>>2]|0)>>5|0)!=(B(c[g>>2]|0,c[f>>2]|0)|0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,27376)|0,27081)|0,35e3)|0,333)|0,35007)|0,27450)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(i,j)|0;ME(i)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27485)|0,27081)|0,35e3)|0,334)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27577)|0,27081)|0,35e3)|0,335)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}jj(a,c[e>>2]|0,b);b=c[e>>2]|0;jj(a,b+32|0,b);b=c[e>>2]|0;kj(a,b+64|0,b+32|0);b=1;while(1){if(b>>>0>=(c[f>>2]|0)>>>0)break;k=B(c[g>>2]|0,b)|0;k=lj((c[e>>2]|0)+(k<<5)|0)|0;d=(B(c[g>>2]|0,b)|0)+-1|0;d=lj((c[e>>2]|0)+(d<<5)|0)|0;i=(B(c[g>>2]|0,b)|0)+-1|0;i=Ng((c[e>>2]|0)+(i<<5)|0)|0;j=(B(c[g>>2]|0,b)|0)+-1|0;Xi(k,d,i,Og((c[e>>2]|0)+(j<<5)|0)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;jj(a,i+(j+1<<5)|0,i+(j<<5)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;kj(a,i+(j+2<<5)|0,i+(j+1<<5)|0);b=b+1|0}zb=h;return}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=zb;zb=zb+16|0;e=f;if((Mg(b)|0)!=2){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27639)|0,27081)|0,35e3)|0,357)|0,35007)|0,27686)|0;IE(e,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(g,h)|0;ME(g)|0;ua()}switch(Mg(d)|0){case 1:{e=lj(b)|0;g=c[a+32>>2]|0;h=Di(d)|0;Vi(e,g,h,Ng(d)|0,Og(d)|0);break}case 2:{e=lj(b)|0;g=c[a+44>>2]|0;h=Di(d)|0;Wi(e,g,h,Ng(d)|0,Og(d)|0);break}case 0:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27722,Yf(27722)|0);mj(h,e);Q(h|0,13208,5)}default:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27741,Yf(27741)|0);mj(h,e);Q(h|0,13208,5)}}zb=f;return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=zb;zb=zb+32|0;f=e;j=c[a+56>>2]|0;i=Mg(d)|0;h=Ng(d)|0;g=Og(d)|0;kq(f,j,i,h,g,Ei(d)|0,1);jj(a,f,d);jj(a,b,f);rq(f);zb=e;return}function lj(a){a=a|0;return c[a+24>>2]|0}function mj(a,b){a=a|0;b=b|0;c[a>>2]=15708;fO(a+4|0,b);return}function nj(a){a=a|0;c[a>>2]=15708;jO(a+4|0);return}function oj(a){a=a|0;nj(a);SA(a);return}function pj(b){b=b|0;b=b+4|0;if((a[b+11>>0]|0)<0)b=c[b>>2]|0;return b|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;m=c+-1|0;j=b+(c<<2)|0;h=b+4|0;n=+f[b>>2];o=+f[h>>2]-n;n=+f[j>>2]-n;p=+y(+n,+o)+3.141592653589793;f[a>>2]=p;n=+u(+(o*o+n*n));f[a+4>>2]=n;g=1;e=j;while(1){i=a+8|0;e=e+4|0;if(g>>>0>=m>>>0)break;l=h+4|0;o=+f[l>>2]-+f[h+-4>>2];p=+f[e>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;g=g+1|0;h=l;a=i}l=d+-1|0;p=+f[h>>2];o=p-+f[h+-4>>2];p=+f[e>>2]-p;n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;k=1;g=i;d=j+(c<<2)|0;h=b;a=j;while(1){e=g+8|0;if(k>>>0>=l>>>0)break;j=a+4|0;o=+f[j>>2]-+f[a>>2];p=+f[d>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;i=1;g=g+16|0;while(1){a=d+4|0;e=h+4|0;if(i>>>0>=m>>>0)break;q=j+4|0;o=+f[q>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;i=i+1|0;d=a;h=e;j=q;g=g+8|0}o=+f[j>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;k=k+1|0;d=d+8|0;h=h+8|0;a=j+4|0}h=b+((B(l,c)|0)<<2)|0;a=h+(0-c<<2)|0;q=h+4|0;p=+f[h>>2];o=+f[q>>2]-p;p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;h=1;g=q;while(1){d=e+8|0;a=a+4|0;if(h>>>0>=m>>>0)break;q=g+4|0;o=+f[q>>2]-+f[g+-4>>2];p=+f[g>>2]-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;h=h+1|0;e=d;g=q}p=+f[g>>2];o=p-+f[g+-4>>2];p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;return}function rj(a){a=a|0;return 536870911}function sj(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;a=a+12|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tj(a){a=a|0;mh(a+40|0);gh(a+28|0);return}function uj(a,b,d,e,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=+i;j=+j;k=k|0;l=+l;var m=0,n=0,o=0;c[a>>2]=e;n=a+4|0;c[n>>2]=g;c[a+8>>2]=h;f[a+12>>2]=i;f[a+16>>2]=j;c[a+20>>2]=k;f[a+24>>2]=l;fh(a+28|0,h);o=a+40|0;Rg(o,B(c[n>>2]|0,c[a>>2]|0)|0);k=0;while(1){if((k|0)==(e|0))break;a=B(k,g)|0;m=b>>>k;n=d>>>k;h=0;while(1){if((h|0)==(g|0))break;cq((c[o>>2]|0)+(h+a<<5)|0,2,m,n,-1,2);h=h+1|0}k=k+1|0}return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=zb;zb=zb+16|0;f=g;e=a+40|0;a=0;while(1){d=Ah(b)|0;if(a>>>0>=(c[d+4>>2]|0)-(c[d>>2]|0)>>5>>>0){a=3;break}d=Ah(b)|0;d=(c[d>>2]|0)+(a<<5)|0;h=Ng(d)|0;if((h|0)!=((Ei(d)|0)>>>2|0)){a=5;break}j=wj((c[e>>2]|0)+(a<<5)|0)|0;i=xj(d)|0;h=Ng(d)|0;qj(j,i,h,Og(d)|0);a=a+1|0}if((a|0)==3){zb=g;return}else if((a|0)==5){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27784)|0,27845)|0,35e3)|0,96)|0,35007)|0,27934)|0;IE(f,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(f,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(f);QE(j,i)|0;ME(j)|0;ua()}}function wj(a){a=a|0;return c[a+24>>2]|0}function xj(a){a=a|0;return c[a+24>>2]|0}function yj(a,b,d,e,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;i=+i;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0;F=zb;zb=zb+48|0;D=F+32|0;E=F+24|0;w=F+16|0;x=F+12|0;y=F+8|0;z=F+4|0;C=F;if(!(i>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,27975)|0,27845)|0,35e3)|0,119)|0,35007)|0,28005)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}l=a+4|0;v=(B(c[l>>2]|0,e)|0)+g|0;m=a+40|0;if(!(+((Ng((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>i)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28024)|0,27845)|0,35e3)|0,120)|0,35007)|0,28104)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}if(!(j>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28140)|0,27845)|0,35e3)|0,121)|0,35007)|0,28170)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}v=(B(c[l>>2]|0,e)|0)+g|0;if(!(+((Og((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>j)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28189)|0,27845)|0,35e3)|0,122)|0,35007)|0,28270)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}q=(B(c[l>>2]|0,e)|0)+g|0;q=(c[m>>2]|0)+(q<<5)|0;if((ah(q)|0)!=2){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28307)|0,27845)|0,35e3)|0,126)|0,35007)|0,28348)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}c[d>>2]=0;e=~~(i+.5);l=~~(j+.5);a:do if(((e|0)>=0?!((l|0)<0|(Ng(q)|0)>>>0<=e>>>0):0)?(Og(q)|0)>>>0>l>>>0:0){n=+zj(1.0,+f[a+12>>2]*k);s=-1.0/(+ji(n)*2.0);n=n*+f[a+16>>2];t=+A(+(+ji(n)));m=~~(n+.5);p=Aj(0,e-m|0)|0;o=Bj(m+e|0,(Ng(q)|0)+-1|0)|0;e=Aj(0,l-m|0)|0;m=Bj(m+l|0,(Og(q)|0)+-1|0)|0;u=a+28|0;v=c[u>>2]|0;Cj(v,(c[a+32>>2]|0)-v>>2);v=a+8|0;while(1){if((e|0)>(m|0))break;k=+ji(+(e|0)-j);g=ch(q,e)|0;l=p;while(1){if((l|0)>(o|0))break;n=k+ +ji(+(l|0)-i);if(!(n>t)){G=g+(l<<1<<2)|0;n=+Dj(s*n);r=c[v>>2]|0;Ej(c[u>>2]|0,+f[G>>2]*+(r|0)*.159154943091895,n*+f[G+4>>2],r)}l=l+1|0}e=e+1|0}l=a+20|0;e=0;while(1){if((e|0)>=(c[l>>2]|0))break;G=c[u>>2]|0;Fj(G,G,c[v>>2]|0,15720);e=e+1|0}l=c[v>>2]|0;e=0;s=0.0;while(1){if((e|0)>=(l|0))break;j=+f[(c[u>>2]|0)+(e<<2)>>2];e=e+1|0;s=j>s?j:s}if(!(s==0.0)){if(!(s>0.0)){G=Xf(Xf(PE(Xf(Xf(Xf(56032,28379)|0,27845)|0,35e3)|0,218)|0,35007)|0,28417)|0;IE(D,G+(c[(c[G>>2]|0)+-12>>2]|0)|0);r=XF(D,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(D);QE(G,r)|0;ME(G)|0;ua()}p=D+4|0;q=E+4|0;r=w+4|0;o=a+24|0;m=0;e=l;while(1){if((m|0)>=(e|0))break a;n=+(m|0);f[D>>2]=n;l=c[u>>2]|0;G=l+(m<<2)|0;a=c[G>>2]|0;c[p>>2]=a;g=m+-1|0;f[E>>2]=+(g|0);g=c[l+(((g+e|0)%(e|0)|0)<<2)>>2]|0;c[q>>2]=g;m=m+1|0;f[w>>2]=+(m|0);l=c[l+(((m+e|0)%(e|0)|0)<<2)>>2]|0;c[r>>2]=l;k=(c[h>>2]=a,+f[h>>2]);if(+f[G>>2]>s*+f[o>>2]?(j=(c[h>>2]=l,+f[h>>2]),k>(c[h>>2]=g,+f[h>>2])&k>j):0){f[C>>2]=n;if(Gj(x,y,z,E,D,w)|0)Hj(C,+f[x>>2],+f[y>>2],+f[z>>2])|0;j=+(c[v>>2]|0);e=c[d>>2]|0;f[b+(e<<2)>>2]=(+f[C>>2]+.5+j)/j*6.283185307179586%6.283185307179586;c[d>>2]=e+1;e=c[v>>2]|0}}}}while(0);zb=F;return}function zj(a,b){a=+a;b=+b;return +(a>b?a:b)}function Aj(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function Bj(a,b){a=a|0;b=b|0;return ((a|0)<(b|0)?a:b)|0}function Cj(a,b){a=a|0;b=b|0;aP(a|0,0,b<<2|0)|0;return}function Dj(a){a=+a;return +(((((((a+6.0)*a+30.0)*a+120.0)*a+360.0)*a+720.0)*a+720.0)*.0013888888)}function Ej(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var g=0.0,h=0,i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;if(!a){h=Xf(Xf(PE(Xf(Xf(Xf(56032,28448)|0,28484)|0,35e3)|0,139)|0,35007)|0,28571)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(h,k)|0;ME(h)|0;ua()}if(b+.5>0.0?(g=b+-.5,g<+(e|0)):0){if(!(d>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28702)|0,28484)|0,35e3)|0,141)|0,35007)|0,28740)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}if((e|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28769)|0,28484)|0,35e3)|0,142)|0,35007)|0,28806)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}k=~~+s(+g);b=b-+(k|0)+-.5;g=1.0-b;h=(k+e|0)%(e|0)|0;e=(k+1|0)%(e|0)|0;if(!(g>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28835)|0,28484)|0,35e3)|0,150)|0,35007)|0,28866)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}if(!(b>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28886)|0,28484)|0,35e3)|0,151)|0,35007)|0,28917)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((h|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28937)|0,28484)|0,35e3)|0,152)|0,35007)|0,28985)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((e|0)>-1){l=a+(h<<2)|0;f[l>>2]=g*d+ +f[l>>2];l=a+(e<<2)|0;f[l>>2]=b*d+ +f[l>>2];zb=j;return}else{l=Xf(Xf(PE(Xf(Xf(Xf(56032,29011)|0,28484)|0,35e3)|0,153)|0,35007)|0,29059)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}}l=Xf(Xf(PE(Xf(Xf(Xf(56032,28597)|0,28484)|0,35e3)|0,140)|0,35007)|0,28662)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;k=+f[b>>2];g=c+-1|0;h=b+(g<<2)|0;i=d+4|0;j=d+8|0;e=+f[h>>2];c=0;while(1){if((c|0)==(g|0))break;m=+f[b+(c<<2)>>2];l=c+1|0;f[a+(c<<2)>>2]=e*+f[d>>2]+m*+f[i>>2]+ +f[j>>2]*+f[b+(l<<2)>>2];e=m;c=l}f[a+(g<<2)>>2]=e*+f[d>>2]+ +f[i>>2]*+f[h>>2]+k*+f[j>>2];return}function Gj(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;h=+f[g>>2];k=+f[e>>2];l=+f[d>>2];j=h-l;h=(h-k)*j;i=l-k;j=i*j;if(i==0.0|(h==0.0|j==0.0)){f[a>>2]=0.0;f[b>>2]=0.0;b=0;h=0.0}else{l=l*l;m=e+4|0;n=+f[m>>2];e=d+4|0;h=(+f[g+4>>2]-n)/h-(+f[e>>2]-n)/j;f[a>>2]=h;h=(+f[e>>2]-+f[m>>2]+(k*k-l)*h)/i;f[b>>2]=h;b=1;h=+f[e>>2]-l*+f[a>>2]-h*+f[d>>2]}f[c>>2]=h;return b|0}function Hj(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;if(b==0.0)a=0;else{f[a>>2]=-c/(b*2.0);a=1}return a|0}function Ij(a){a=a|0;var b=0,d=0;c[a>>2]=0;d=tB(24)|0;Jj(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Kj(b);SA(b)}return}function Jj(a){a=a|0;var b=0,d=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=1065353216;d=tB(840)|0;$j(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Mj(b);SA(b)}return}function Kj(a){a=a|0;var b=0;Lj(a+4|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0){Mj(b);SA(b)}return}function Lj(a){a=a|0;Yj(a);return}function Mj(a){a=a|0;Nj(a+788|0);kp(a+652|0);Oj(a+636|0);Pj(a+316|0);yh(a+160|0);Qi(a+92|0);Qj(a+72|0);Rj(a+64|0);Sj(a+12|0);return}function Nj(a){a=a|0;Wj(a+24|0);Xj(a+12|0);gh(a);return}function Oj(a){a=a|0;Sj(a);return}function Pj(a){a=a|0;return}function Qj(a){a=a|0;Tj(a);return}function Rj(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function Sj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Tj(a){a=a|0;var b=0;Uj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Uj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Vj(b+8|0);Pf(b,20);b=a}return}function Vj(a){a=a|0;Rj(a+4|0);return}function Wj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Xj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Yj(a){a=a|0;var b=0;Zj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Zj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;_j(b+8|0);Pf(b,24);b=a}return}function _j(a){a=a|0;lg(a+4|0);return}function $j(b){b=b|0;var d=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+64|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+88>>2]=1065353216;_i(b+92|0);d=b+160|0;dh(d);Gp(b+316|0);ak(b+636|0);jp(b+652|0);bk(b+788|0,.009999999776482582,1024,1064,50);ck(d,3.0);dk(d,4.0);eh(d,500);f[b+4>>2]=3.0;c[b>>2]=8;a[b+8>>0]=1;return}function ak(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;f[a+12>>2]=.699999988079071;return}function bk(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=a;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));ek(a,b,d,e,f);return}function ck(a,b){a=a|0;b=+b;f[a+52>>2]=b;return}function dk(a,b){a=a|0;b=+b;f[a+56>>2]=b;return}function ek(a,b,d,e,g){a=a|0;b=+b;d=d|0;e=e|0;g=g|0;fh(a,d*9|0);fk(a+24|0,d);f[a+36>>2]=b;c[a+40>>2]=d;c[a+44>>2]=e;c[a+48>>2]=g;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>3;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<3)}else gk(a,b-e|0);return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>3>>>0>>0){d=(d-(c[a>>2]|0)>>3)+b|0;e=ik(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>2;jk(f,k>>3>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>3,a+8|0);kk(f,b);lk(a,f);mk(f);break}}else hk(a,b);while(0);zb=i;return}function hk(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function ik(a){a=a|0;return 536870911}function jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function kk(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function nk(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=0;if(b|0){Kj(b);SA(b)}return}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function pk(a){a=a|0;return a+4|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((b|0)<(c|0)|(a|0)<(c|0))break;d=d+1|0;b=b>>1;a=a>>1}return d|0}function rk(a){a=a|0;return c[a>>2]|0}function sk(a){a=a|0;return c[a+4>>2]|0}function tk(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;bm(a+8|0);cm(a+36|0);return}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15740;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;Rl(a,e);zb=d;return}function vk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wk(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xk(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;i=k+20|0;j=k;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,30067)|0,35e3)|0,212)|0,35007)|0,33688)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(h,l)|0;ME(h)|0;ua()}if(!e){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30146)|0,30067)|0,35e3)|0,213)|0,35007)|0,30178)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;if((c[l+4>>2]|0)==(c[l>>2]|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30195)|0,30067)|0,35e3)|0,214)|0,35007)|0,30247)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Ng(c[l>>2]|0)|0;if((l|0)!=(rk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30264)|0,30067)|0,35e3)|0,215)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Og(c[l>>2]|0)|0;if((l|0)!=(sk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30372)|0,30067)|0,35e3)|0,216)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}Rh(e,d);h=Ml(e)|0;Nl(i,((c[h+4>>2]|0)-(c[h>>2]|0)|0)/36|0);h=0;while(1){l=Ml(e)|0;if(h>>>0>=(((c[l+4>>2]|0)-(c[l>>2]|0)|0)/36|0)>>>0)break;l=Ml(e)|0;l=c[l>>2]|0;gg(j,+f[l+(h*36|0)>>2],+f[l+(h*36|0)+4>>2],+f[l+(h*36|0)+8>>2],+f[l+(h*36|0)+28>>2],+f[l+(h*36|0)+24>>2]>0.0);l=(c[i>>2]|0)+(h*20|0)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];a[l+16>>0]=a[j+16>>0]|0;Of(j);h=h+1|0}Hp(g,zk(b)|0,d,i);Nf(i);zb=k;return}function yk(){if((a[54528]|0)==0?nB(54528)|0:0){sq(55464);pB(54528)}return 55464}function zk(a){a=a|0;return a+8|0}function Ak(a){a=a|0;return ((c[a+20>>2]|0)-(c[a+16>>2]|0)|0)/20|0|0}function Bk(a){a=a|0;var b=0,d=0;d=a+36|0;Gk(d,128);Hk(d,8);Ik(d,8);Jk(d,16);a=a+8|0;b=Kk(a)|0;b=c[b>>2]|0;Lk(d,b,Ak(a)|0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Dk(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ek(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Dk(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(20)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Fk(a,b)}}else Fk(a,b);return}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Gk(a,b){a=a|0;b=b|0;Ll(a+12|0,b);return}function Hk(a,b){a=a|0;b=b|0;Kl(a+12|0,b);return}function Ik(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function Jk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function Kk(a){a=a|0;return a+4|0}function Lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;g=i;Mk(g,d);f=c[g>>2]|0;h=(c[g+4>>2]|0)-f>>2;e=0;while(1){if((e|0)==(h|0))break;c[f+(e<<2)>>2]=e;e=e+1|0}Nk(a,b,d,f,h);Xj(g);zb=i;return}function Mk(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Jl(a,b);Fl(a,b)}return}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=tB(128)|0;Pk(g,Ok(a)|0);i=a+8|0;h=c[i>>2]|0;c[i>>2]=g;if(h){Qk(h);SA(h);g=c[i>>2]|0}Rk(g,0);Sk(a,c[i>>2]|0,b,d,e,f);return}function Ok(a){a=a|0;var b=0;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;return a|0}function Pk(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Il(b+4|0,96);return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+104|0;f=a+108|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0){Qk(b);SA(b)}d=d+1|0}Xj(a+116|0);Hl(e);return}function Rk(b,c){b=b|0;c=c|0;a[b+100>>0]=c&1;return}function Sk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+32|0;o=q+20|0;p=q;h=a+12|0;n=Tk(h)|0;if((Aj(n,c[a+108>>2]|0)|0)>=(g|0)){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break;o=c[f+(h<<2)>>2]|0;p=Uk(b)|0;c[(c[p>>2]|0)+(h<<2)>>2]=o;h=h+1|0}zb=q;return}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=1065353216;Wk(h,d,e,f,g);m=Xk(h)|0;n=m+4|0;i=c[n>>2]|0;h=c[m>>2]|0;if((i-h>>2|0)!=(g|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29190)|0,35e3)|0,363)|0,35007)|0,29284)|0;IE(o,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(o,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(o);QE(l,k)|0;ME(l)|0;ua()}l=0;while(1){if(l>>>0>=i-h>>2>>>0){h=10;break}h=c[h+(l<<2)>>2]|0;if((h|0)==-1){h=12;break}if((h|0)>=(g|0)){h=14;break}h=f+(h<<2)|0;if((c[h>>2]|0)>=(e|0)){h=16;break}h=Yk(p,h)|0;i=f+(l<<2)|0;j=h+4|0;k=c[j>>2]|0;if((k|0)==(c[h+8>>2]|0))Zk(h,i);else{c[k>>2]=c[i>>2];c[j>>2]=k+4}l=l+1|0;h=c[m>>2]|0;i=c[n>>2]|0}if((h|0)==10){h=p+12|0;a:do if((c[h>>2]|0)==1){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break a;e=c[f+(h<<2)>>2]|0;o=Uk(b)|0;c[(c[o>>2]|0)+(h<<2)>>2]=e;h=h+1|0}}else{g=_k(b)|0;$k(g,c[h>>2]|0);h=p+8|0;while(1){h=c[h>>2]|0;if(!h)break a;i=h;l=i+12|0;m=i+16|0;if((c[m>>2]|0)==(c[l>>2]|0))break;j=tB(128)|0;k=Ok(a)|0;al(j,k,d+((c[i+8>>2]|0)*96|0)|0);c[o>>2]=j;Rk(j,0);i=_k(b)|0;j=i+4|0;k=c[j>>2]|0;if((k|0)==(c[i+8>>2]|0))bl(i,o);else{c[k>>2]=c[o>>2];c[j>>2]=(c[j>>2]|0)+4}g=c[l>>2]|0;Sk(a,c[o>>2]|0,d,e,g,(c[m>>2]|0)-g>>2)}b=Xf(Xf(PE(Xf(Xf(Xf(56032,29507)|0,29190)|0,35e3)|0,387)|0,35007)|0,29553)|0;IE(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);e=XF(o,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(o);QE(b,e)|0;ME(b)|0;ua()}while(0);cl(p);zb=q;return}else if((h|0)==12){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29306)|0,29190)|0,35e3)|0,365)|0,35007)|0,29349)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==14){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29371)|0,29190)|0,35e3)|0,366)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==16){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29446)|0,29190)|0,35e3)|0,367)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}}function Tk(a){a=a|0;return c[a+4>>2]|0}function Uk(a){a=a|0;return a+116|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else El(a,b-e|0);return}function Wk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+16|0;o=s;p=a+4|0;g=c[p>>2]|0;q=a+12|0;r=a+16|0;if((g|0)!=((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,154)|0,35007)|0,29707)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((d|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,155)|0,35007)|0,29792)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((f|0)>(d|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,156)|0,35007)|0,29879)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(f|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29906)|0,29635)|0,35e3)|0,157)|0,35007)|0,29947)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}j=a+24|0;c[o>>2]=-1;sl(j,f,o);k=a+36|0;c[o>>2]=-1;sl(k,f,o);l=a+48|0;Vk(l,f);n=c[l>>2]|0;m=a+52|0;tl(n,(c[m>>2]|0)-n>>2,0);n=a+8|0;g=-1;i=0;while(1){if((i|0)>=(c[n>>2]|0))break;h=c[l>>2]|0;ul(h,(c[m>>2]|0)-h>>2,c[p>>2]|0,c[a>>2]|0);h=vl(a,k,b,d,e,f,c[l>>2]|0,c[p>>2]|0)|0;if(h>>>0>>0){wl(j,k);xl(c[q>>2]|0,c[l>>2]|0,c[p>>2]|0);g=h}i=i+1|0}if((c[p>>2]|0)==((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){zb=s;return}else{s=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,187)|0,35007)|0,29707)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(o,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(o);QE(s,r)|0;ME(s)|0;ua()}}function Xk(a){a=a|0;return a+24|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){pl(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;ql(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;ml(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[g>>2]=f+4;nl(a,d);ol(d);zb=h;return}}function _k(a){a=a|0;return a+104|0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0>>0){hl(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);il(a,d);jl(d)}zb=f;return}function al(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;kl(b+4|0,e,96);return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=gl(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;hl(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;il(a,d);jl(d);zb=h;return}}function cl(a){a=a|0;dl(a);return}function dl(a){a=a|0;var b=0;el(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function el(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;fl(b+8|0);Pf(b,24);b=a}return}function fl(a){a=a|0;Xj(a+4|0);return}function gl(a){a=a|0;return 1073741823}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function jl(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c|0)|0;return}function ll(a){a=a|0;return 1073741823}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function ql(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)rl(a,b)}}else rl(a,b);return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+(b<<2)}else Cl(a,b-f|0,d);return}function tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a:do if((b|0)>=1){c[a>>2]=d;e=1;while(1){if((e|0)==(b|0))break a;f=d+1|0;c[a+(e<<2)>>2]=f;e=e+1|0;d=f}}while(0);return}function ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){if((f|0)>=(d|0))break;i=a+(f<<2)|0;g=a+(((Bl(e)|0)%(b|0)|0)<<2)|0;h=c[i>>2]|0;c[i>>2]=c[g>>2];c[g>>2]=h;f=f+1|0}return}function vl(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;a=o;if(((c[b+4>>2]|0)-(c[b>>2]|0)>>2|0)!=(g|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29635)|0,35e3)|0,198)|0,35007)|0,29967)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((e|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,199)|0,35007)|0,29792)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(e|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,200)|0,35007)|0,29879)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29996)|0,29635)|0,35e3)|0,201)|0,35007)|0,30035)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}k=0;m=0;while(1){if((m|0)>=(g|0))break;n=f+(m<<2)|0;l=0;a=-1;while(1){if((l|0)==(i|0))break;e=h+(l<<2)|0;j=yl(d+((c[n>>2]|0)*96|0)|0,d+((c[f+(c[e>>2]<<2)>>2]|0)*96|0)|0)|0;if(j>>>0>>0){c[(c[b>>2]|0)+(m<<2)>>2]=c[e>>2];a=j}l=l+1|0}k=a+k|0;m=m+1|0}zb=o;return k|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function xl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function yl(a,b){a=a|0;b=b|0;return zl(a,b)|0}function zl(a,b){a=a|0;b=b|0;var d=0;d=Al(c[a>>2]|0,c[b>>2]|0)|0;d=(Al(c[a+4>>2]|0,c[b+4>>2]|0)|0)+d|0;d=d+(Al(c[a+8>>2]|0,c[b+8>>2]|0)|0)|0;d=d+(Al(c[a+12>>2]|0,c[b+12>>2]|0)|0)|0;d=d+(Al(c[a+16>>2]|0,c[b+16>>2]|0)|0)|0;d=d+(Al(c[a+20>>2]|0,c[b+20>>2]|0)|0)|0;d=d+(Al(c[a+24>>2]|0,c[b+24>>2]|0)|0)|0;d=d+(Al(c[a+28>>2]|0,c[b+28>>2]|0)|0)|0;d=d+(Al(c[a+32>>2]|0,c[b+32>>2]|0)|0)|0;d=d+(Al(c[a+36>>2]|0,c[b+36>>2]|0)|0)|0;d=d+(Al(c[a+40>>2]|0,c[b+40>>2]|0)|0)|0;d=d+(Al(c[a+44>>2]|0,c[b+44>>2]|0)|0)|0;d=d+(Al(c[a+48>>2]|0,c[b+48>>2]|0)|0)|0;d=d+(Al(c[a+52>>2]|0,c[b+52>>2]|0)|0)|0;d=d+(Al(c[a+56>>2]|0,c[b+56>>2]|0)|0)|0;d=d+(Al(c[a+60>>2]|0,c[b+60>>2]|0)|0)|0;d=d+(Al(c[a+64>>2]|0,c[b+64>>2]|0)|0)|0;d=d+(Al(c[a+68>>2]|0,c[b+68>>2]|0)|0)|0;d=d+(Al(c[a+72>>2]|0,c[b+72>>2]|0)|0)|0;d=d+(Al(c[a+76>>2]|0,c[b+76>>2]|0)|0)|0;d=d+(Al(c[a+80>>2]|0,c[b+80>>2]|0)|0)|0;d=d+(Al(c[a+84>>2]|0,c[b+84>>2]|0)|0)|0;d=d+(Al(c[a+88>>2]|0,c[b+88>>2]|0)|0)|0;return d+(Al(c[a+92>>2]|0,c[b+92>>2]|0)|0)|0}function Al(a,b){a=a|0;b=b|0;b=b^a;b=b-(b>>>1&1431655765)|0;b=(b>>>2&858993459)+(b&858993459)|0;return (B((b>>>4)+b&252645135,16843009)|0)>>>24|0}function Bl(a){a=a|0;var b=0;b=((c[a>>2]|0)*214013|0)+2531011|0;c[a>>2]=b;return b>>>16&32767|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;h=k;i=a+8|0;j=a+4|0;e=c[j>>2]|0;g=e;do if((c[i>>2]|0)-e>>2>>>0>>0){e=(e-(c[a>>2]|0)>>2)+b|0;f=ll(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;l=(c[i>>2]|0)-g|0;i=l>>1;ml(h,l>>2>>>0>>1>>>0?(i>>>0>>0?e:i):f,(c[j>>2]|0)-g>>2,a+8|0);Dl(h,b,d);nl(a,h);ol(h);break}}else{e=b;f=g;while(1){c[f>>2]=c[d>>2];e=e+-1|0;if(!e)break;else f=f+4|0}c[j>>2]=g+(b<<2)}while(0);zb=k;return}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+8|0;e=c[f>>2]|0;a=b;g=e;while(1){c[g>>2]=c[d>>2];a=a+-1|0;if(!a)break;else g=g+4|0}c[f>>2]=e+(b<<2);return}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ll(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;ml(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);Gl(f,b);nl(a,f);ol(f);break}}else Fl(a,b);while(0);zb=i;return}function Fl(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Gl(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Hl(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Il(a,b){a=a|0;b=b|0;aP(a|0,0,b|0)|0;return}function Jl(a,b){a=a|0;b=b|0;var d=0;if((ll(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Kl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;Vk(a+12|0,b);return}function Ll(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ml(a){a=a|0;return a+60|0}function Nl(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Ol(a,b);Pl(a,b)}return}function Ol(a,b){a=a|0;b=b|0;var d=0;if((ug(a)|0)>>>0>>0)EO(a);if(b>>>0>214748364){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*20|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*20|0);return}}function Pl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ql(b){b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;return}function Rl(a,b){a=a|0;b=b|0;return}function Sl(a){a=a|0;Tl(a+36|0);Ul(a+8|0);return}function Tl(a){a=a|0;var b=0;Vl(a+84|0);Xj(a+72|0);Wl(a+12|0);b=a+8|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Qk(a);SA(a)}return}function Ul(a){a=a|0;Nf(a+16|0);Mf(a+4|0);return}function Vl(a){a=a|0;Xl(a);return}function Wl(a){a=a|0;Xj(a+48|0);Xj(a+36|0);Xj(a+24|0);Xj(a+12|0);return}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-8|0;Yl(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Yl(a){a=a|0;return}function Zl(a){a=a|0;ZN(a);SA(a);return}function _l(a){a=a|0;a=c[a+12>>2]|0;if(a|0){Sl(a);SA(a)}return}function $l(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==30447?a+12|0:0)|0}function am(a){a=a|0;Pf(a,16);return}function bm(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function cm(a){a=a|0;var b=0,d=0;c[a>>2]=1234;c[a+4>>2]=0;c[a+8>>2]=0;b=a+12|0;dm(b,a);d=a+72|0;c[a+100>>2]=0;c[a+104>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[a+108>>2]=16;Kl(b,8);Ll(b,1);return}function dm(a,b){a=a|0;b=b|0;c[a>>2]=b;a=a+4|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function em(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+32|0;m=l+24|0;j=l+12|0;k=l+16|0;n=l+8|0;i=l;c[j>>2]=h;h=tB(148)|0;tk(h);c[n>>2]=0;c[m>>2]=c[n>>2];uk(k,h,m);vk(c[k>>2]|0,f);wk(c[k>>2]|0,g);fm(zk(c[k>>2]|0)|0,96);g=gm(zk(c[k>>2]|0)|0)|0;f=b+4|0;hm(g,((c[f>>2]|0)-(c[b>>2]|0)|0)/20|0);g=gm(zk(c[k>>2]|0)|0)|0;if((g|0)!=(b|0))im(g,c[b>>2]|0,c[f>>2]|0);g=Kk(zk(c[k>>2]|0)|0)|0;f=d+4|0;jm(g,(c[f>>2]|0)-(c[d>>2]|0)|0);g=Kk(zk(c[k>>2]|0)|0)|0;if((g|0)!=(d|0))km(g,c[d>>2]|0,c[f>>2]|0);Bk(c[k>>2]|0);f=c[c[a>>2]>>2]|0;c[i>>2]=c[k>>2];g=c[k+4>>2]|0;c[i+4>>2]=g;if(g|0){n=g+4|0;c[n>>2]=(c[n>>2]|0)+1}lm(f,i,c[j>>2]|0);Rj(i);f=mm((c[a>>2]|0)+4|0,j)|0;if((f|0)!=(e|0))nm(f,c[e>>2]|0,c[e+4>>2]|0);Rj(k);zb=l;return}function fm(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gm(a){a=a|0;return a+16|0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/20|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*20|0)|0;while(1){if((d|0)==(a|0))break;f=d+-20|0;Of(f);d=f}c[g>>2]=a}}else Cm(a,b-e|0);return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b;l=(d-e|0)/20|0;f=a+8|0;i=c[a>>2]|0;g=i;do if(l>>>0>(((c[f>>2]|0)-i|0)/20|0)>>>0){Bm(a);e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=((c[f>>2]|0)-(c[a>>2]|0)|0)/20|0;k=j<<1;Ol(a,j>>>0>>1>>>0?(k>>>0>>0?l:k):e);Am(a,b,d,l);break}}else{k=a+4|0;j=((c[k>>2]|0)-i|0)/20|0;h=l>>>0>j>>>0;j=h?b+(j*20|0)|0:d;e=j-e|0;if(e|0)$O(i|0,b|0,e|0)|0;f=g+(((e|0)/20|0)*20|0)|0;if(h){Am(a,j,d,l-(((c[k>>2]|0)-(c[a>>2]|0)|0)/20|0)|0);break}e=c[k>>2]|0;while(1){if((e|0)==(f|0))break;l=e+-20|0;Of(l);e=l}c[k>>2]=f}while(0);return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+b}else xm(a,b-e|0);return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b;k=d-i|0;f=a+8|0;e=c[a>>2]|0;j=e;do if(k>>>0>((c[f>>2]|0)-e|0)>>>0){vm(a);e=mg(a)|0;if(e>>>0>>0)EO(a);else{i=(c[f>>2]|0)-(c[a>>2]|0)|0;j=i<<1;wm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);um(a,b,d,k);break}}else{h=a+4|0;g=(c[h>>2]|0)-e|0;f=k>>>0>g>>>0;g=f?b+g|0:d;e=g-i|0;if(e|0)$O(j|0,b|0,e|0)|0;if(f){um(a,g,d,k-(c[h>>2]|0)+(c[a>>2]|0)|0);break}else{c[h>>2]=j+e;break}}while(0);return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+4|0;e=i;c[e>>2]=d;a=a+72|0;if(ok(a,e)|0){i=O(16)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;gO(h,29085,Yf(29085)|0);mj(i,h);Q(i|0,13208,5)}f=Ck(a,e)|0;g=c[b>>2]|0;c[h>>2]=g;e=h+4|0;a=c[b+4>>2]|0;c[e>>2]=a;if(!a){d=e;a=0}else{d=a+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;a=c[e>>2]|0}c[h>>2]=c[f>>2];c[f>>2]=g;b=f+4|0;c[d>>2]=c[b>>2];c[b>>2]=a;Rj(h);zb=i;return}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){rm(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;sm(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b;k=(d-e|0)/12|0;f=a+8|0;j=c[a>>2]|0;i=j;do if(k>>>0>(((c[f>>2]|0)-j|0)/12|0)>>>0){pm(a);e=qg(a)|0;if(e>>>0>>0)EO(a);else{i=((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0;j=i<<1;qm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);om(a,b,d,k);break}}else{f=a+4|0;h=((c[f>>2]|0)-j|0)/12|0;g=k>>>0>h>>>0;h=g?b+(h*12|0)|0:d;e=h-e|0;if(e|0)$O(j|0,b|0,e|0)|0;if(g){om(a,h,d,k-(((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0)|0);break}else{c[f>>2]=i+(((e|0)/12|0)*12|0);break}}while(0);return}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(((a>>>0)/12|0)*12|0)}return}function pm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function qm(a,b){a=a|0;b=b|0;var d=0;if((qg(a)|0)>>>0>>0)EO(a);if(b>>>0>357913941){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*12|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*12|0);return}}function rm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function sm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)tm(a,b)}}else tm(a,b);return}function tm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a}return}function vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function wm(a,b){a=a|0;b=b|0;var d=0;if((mg(a)|0)>>>0>>0)EO(a);else{d=tB(b)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+b;return}}function xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if(((c[g>>2]|0)-d|0)>>>0>>0){d=d-(c[a>>2]|0)+b|0;e=mg(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k<<1;ng(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j|0,a+8|0);zm(f,b);og(a,f);pg(f);break}}else ym(a,b);while(0);zb=i;return}function ym(b,d){b=b|0;d=d|0;var e=0;e=b+4|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function zm(b,d){b=b|0;d=d|0;var e=0;e=b+8|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Am(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=a+4|0;while(1){if((b|0)==(d|0))break;e=c[a>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[a>>2]=(c[a>>2]|0)+20;b=b+20|0}return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;d=c[a>>2]|0;f=a+8|0;Pf(d,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/20|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/20|0)+b|0;e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/20|0;g=k<<1;vg(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/20|0,a+8|0);Dm(f,b);wg(a,f);xg(f);break}}else Pl(a,b);while(0);zb=i;return}function Dm(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Em(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+32|0;g=f;kq(g,b,1,d,e,d,1);e=Fm(c[c[a>>2]>>2]|0,g)|0;rq(g);zb=f;return e|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=zb;zb=zb+32|0;d=f;e=a+92|0;g=pk(e)|0;if(!(((c[g+4>>2]|0)!=(c[g>>2]|0)?(g=pk(e)|0,g=Ng(c[g>>2]|0)|0,(g|0)==(Ng(b)|0)):0)?(g=pk(e)|0,g=Og(c[g>>2]|0)|0,(g|0)==(Og(b)|0)):0)){g=Ng(b)|0;g=qk(g,Og(b)|0,8)|0;h=Ng(b)|0;$i(e,h,Og(b)|0,g)}Bq(d,29103);if(Sh(d)|0)ij(e,b);Cq(d);h=Gm(a,e)|0;zb=f;return h|0}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+64|0;e=k+16|0;j=k;g=k+56|0;h=k+48|0;i=b+160|0;l=rk(i)|0;f=Ah(d)|0;if(!((l|0)==(Ng(c[f>>2]|0)|0)?(f=sk(i)|0,l=Ah(d)|0,(f|0)==(Og(c[l>>2]|0)|0)):0))zh(i,d);f=b+64|0;m=tB(148)|0;tk(m);c[h>>2]=0;c[e>>2]=c[h>>2];uk(g,m,e);m=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=m;m=g+4|0;l=b+68|0;h=c[m>>2]|0;c[m>>2]=c[l>>2];c[l>>2]=h;Rj(g);l=c[f>>2]|0;h=Ah(d)|0;vk(l,Ng(c[h>>2]|0)|0);h=c[f>>2]|0;l=Ah(d)|0;wk(h,Og(c[l>>2]|0)|0);Bq(e,29117);if(Sh(e)|0)xk(c[f>>2]|0,d,i,b+316|0);Cq(e);m=yk()|0;Zp(e);i=(a[e+11>>0]|0)<0?c[e>>2]|0:e;l=Ak(zk(c[f>>2]|0)|0)|0;c[j>>2]=35129;c[j+4>>2]=i;c[j+8>>2]=30646;c[j+12>>2]=l;uq(m,8,30602,j);jO(e);m=Hm(b,c[f>>2]|0)|0;zb=k;return m|0}function Hm(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=zb;zb=zb+144|0;s=D+104|0;w=D;x=D+72|0;y=D+40|0;z=b+12|0;A=b+16|0;c[A>>2]=c[z>>2];B=b+24|0;c[B>>2]=-1;k=Jm(Im(d)|0)|0;l=b+8|0;m=b+636|0;n=b+652|0;o=s+4|0;p=s+8|0;q=b+788|0;r=x+4|0;t=x+8|0;u=b+4|0;v=b+28|0;e=b+80|0;while(1){e=c[e>>2]|0;if(!e)break;Bq(s,30936);do if(Sh(s)|0){E=(a[l>>0]|0)==0;g=Im(d)|0;j=e;h=j+12|0;i=zk(c[h>>2]|0)|0;if(E){E=Mm(m,g,i)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}else{E=Lm(m,g,i,Km(c[h>>2]|0)|0)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}Cq(s)}else{j=e;h=j+12|0;C=9}while(0);do if((C|0)==9){C=0;Cq(s);i=gm(zk(c[h>>2]|0)|0)|0;Bq(s,30953);if(Sh(s)|0){G=Nm(m)|0;F=Om(d)|0;E=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,G,F,E,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(s);break}}else g=-1;Cq(s);c[s>>2]=0;c[o>>2]=0;c[p>>2]=0;Bq(w,30970);if(Sh(w)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(w);Bq(x,30993);if(Sh(x)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0)Cq(x);else{Cq(x);c[x>>2]=0;c[r>>2]=0;c[t>>2]=0;Bq(y,31017);if(Sh(y)|0?(Tm(x,w,k,i,s,+f[u>>2]),(c[r>>2]|0)-(c[x>>2]|0)>>3>>>0<(c[b>>2]|0)>>>0):0)Cq(y);else C=20;do if((C|0)==20){C=0;Cq(y);Bq(y,31034);if(Sh(y)|0?(G=Im(d)|0,G=Um(m,G,zk(c[h>>2]|0)|0,w,10.0)|0,G>>>0<(c[b>>2]|0)>>>0):0){Cq(y);break}Cq(y);Bq(y,31051);if(Sh(y)|0){E=Nm(m)|0;F=Om(d)|0;G=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,E,F,G,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(y);break}}Cq(y);Bq(y,31068);if(Sh(y)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(y);Bq(y,31091);if(Sh(y)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0){Cq(y);break}Cq(y);c[r>>2]=c[x>>2];Bq(y,31115);if(Sh(y)|0)Tm(x,w,k,i,s,+f[u>>2]);Cq(y);G=(c[r>>2]|0)-(c[x>>2]|0)>>3;if(G>>>0>=(c[b>>2]|0)>>>0?G>>>0>(c[A>>2]|0)-(c[z>>2]|0)>>3>>>0:0){Vm(v,w);Wm(z,x);c[B>>2]=c[j+8>>2]}}while(0);Sj(x)}Sj(s)}while(0)}zb=D;return (c[B>>2]|0)>-1|0}function Im(a){a=a|0;return a+8|0}function Jm(a){a=a|0;return a+16|0}function Km(a){a=a|0;return a+36|0} +function Wu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=v+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){u=c[e>>2]|0;c[u+20>>2]=25;Sb[c[u>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[v+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[v+24+(g<<2)>>2]=0;c[v+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[v+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}u=v+20|0;if((c[u>>2]|0)==-1)return 1;p=c[e+432>>2]|0;q=e+368|0;if((c[q>>2]|0)<=0)return 1;r=e+436|0;s=v+188|0;o=0;a:while(1){t=c[f+(o<<2)>>2]|0;l=c[e+372+(o<<2)>>2]|0;n=c[e+344+(l<<2)>>2]|0;j=c[n+20>>2]|0;h=v+60+(j<<2)|0;k=v+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[v+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768){r=26;break a}h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=v+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[t>>1]=g;b:do if(c[r>>2]|0){m=c[n+24>>2]|0;l=v+124+(m<<2)|0;m=e+264+m|0;g=0;while(1){h=(c[l>>2]|0)+(g*3|0)|0;if(Xu(e,h)|0)break b;j=g+1|0;if(!(Xu(e,h+1|0)|0)){i=h;g=j;while(1){if((g|0)>=(c[r>>2]|0)){r=42;break a}h=i+3|0;j=g+1|0;if(!(Xu(e,i+4|0)|0)){i=h;g=j}else break}}k=Xu(e,s)|0;h=h+2|0;i=Xu(e,h)|0;if(i){if(Xu(e,h)|0){i=i<<1;h=(c[l>>2]|0)+((g|0)<(d[m>>0]|0|0)?189:217)|0;if(!(Xu(e,h)|0))g=i;else{g=i;do{g=g<<1;if((g|0)==32768){r=49;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}}else g=i;i=h+14|0;h=g>>1;if(h)do{n=(Xu(e,i)|0)==0;g=(n?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[t+(c[p+(j<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535;if((j|0)<(c[r>>2]|0))g=j;else break}}while(0);o=o+1|0;if((o|0)>=(c[q>>2]|0)){r=56;break}}if((r|0)==26){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==42){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==49){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==56)return 1;return 0}function Xu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b+468>>2]|0;m=g+16|0;f=c[m>>2]|0;k=g+20|0;if((f|0)<32768){h=b+440|0;j=b+24|0;i=g+12|0;f=c[k>>2]|0;while(1){g=f+-1|0;c[k>>2]=g;if((f|0)<1){if(!(c[h>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;l=a[l>>0]|0;f=l&255;a:do if(l<<24>>24==-1){b:while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;f=a[l>>0]|0;switch(f<<24>>24){case 0:{f=255;break a}case -1:break;default:break b}}c[h>>2]=f&255;f=0}while(0);g=c[k>>2]|0}else f=0;c[i>>2]=c[i>>2]<<8|f;f=g+8|0;c[k>>2]=f;if((g|0)<-8){f=g+9|0;c[k>>2]=f;if(!f){c[m>>2]=32768;g=0}else g=f}else g=f}f=c[m>>2]<<1;c[m>>2]=f;if((f|0)<32768)f=g;else break}}else{i=g+12|0;g=c[k>>2]|0}j=d[e>>0]|0;b=c[3360+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;h=f-l|0;c[m>>2]=h;f=h<>2]|0;if((g|0)>=(f|0)){c[i>>2]=g-f;c[m>>2]=l;f=j&128;if((h|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((h|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((h|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function Yu(a){a=a|0;var d=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;n=c[a+472>>2]|0;o=a+36|0;if((c[o>>2]|0)<=0)return;r=a+72|0;l=0;m=c[a+216>>2]|0;i=0;j=0;while(1){d=c[m+36>>2]|0;h=m+40|0;a:do switch((d<<8)+(c[h>>2]|0)|0){case 257:{d=0;k=13;break}case 514:{d=0;k=14;break}case 771:{d=0;k=15;break}case 1028:{d=0;k=16;break}case 1285:{d=0;k=17;break}case 1542:{d=0;k=18;break}case 1799:{d=0;k=19;break}case 2313:{d=0;k=20;break}case 2570:{d=0;k=21;break}case 2827:{d=0;k=22;break}case 3084:{d=0;k=23;break}case 3341:{d=0;k=24;break}case 3598:{d=0;k=25;break}case 3855:{d=0;k=26;break}case 4112:{d=0;k=27;break}case 4104:{d=0;k=28;break}case 3591:{d=0;k=29;break}case 3078:{d=0;k=30;break}case 2565:{d=0;k=31;break}case 2052:{d=0;k=32;break}case 1539:{d=0;k=33;break}case 1026:{d=0;k=34;break}case 513:{d=0;k=35;break}case 2064:{d=0;k=36;break}case 1806:{d=0;k=37;break}case 1548:{d=0;k=38;break}case 1290:{d=0;k=39;break}case 1032:{d=0;k=40;break}case 774:{d=0;k=41;break}case 516:{d=0;k=42;break}case 258:{d=0;k=43;break}case 2056:{d=c[r>>2]|0;switch(d|0){case 0:{k=44;break a}case 1:{k=45;break a}case 2:{k=46;break a}default:{d=c[a>>2]|0;c[d+20>>2]=49;Sb[c[d>>2]&255](a);d=i;k=j;break a}}}default:{k=c[a>>2]|0;c[k+20>>2]=7;c[k+24>>2]=d;c[(c[a>>2]|0)+28>>2]=c[h>>2];Sb[c[c[a>>2]>>2]&255](a);d=i;k=j}}while(0);c[n+4+(l<<2)>>2]=k;b:do if((c[m+52>>2]|0?(p=n+44+(l<<2)|0,(c[p>>2]|0)!=(d|0)):0)?(q=c[m+80>>2]|0,q|0):0){c[p>>2]=d;switch(d|0){case 0:{i=c[m+84>>2]|0;h=0;do{c[i+(h<<2)>>2]=e[q+(h<<1)>>1];h=h+1|0}while((h|0)!=64);break}case 1:{i=c[m+84>>2]|0;h=0;do{j=(B(b[5248+(h<<1)>>1]|0,e[q+(h<<1)>>1]|0)|0)+2048>>12;c[i+(h<<2)>>2]=j;h=h+1|0}while((h|0)!=64);break}case 2:{j=c[m+84>>2]|0;h=0;i=0;while(1){t=+g[5376+(h<<3)>>3];f[j+(i<<2)>>2]=t*+(e[q+(i<<1)>>1]|0)*.125;s=i|1;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.387039845*.125;s=s+1|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.306562965*.125;s=i|3;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.175875602*.125;u=s+1|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.125;u=s+2|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.785694958*.125;s=s+3|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.5411961*.125;s=i|7;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.275899379*.125;h=h+1|0;if((h|0)==8)break;else i=i+8|0}break}default:{u=c[a>>2]|0;c[u+20>>2]=49;Sb[c[u>>2]&255](a);break b}}}while(0);l=l+1|0;if((l|0)>=(c[o>>2]|0))break;else{m=m+88|0;i=d;j=k}}return}function Zu(d,e,g,h,i){d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=zb;zb=zb+256|0;j=q;o=c[d+336>>2]|0;n=j;m=c[e+84>>2]|0;l=8;while(1){e=b[g+16>>1]|0;d=b[g+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[g+48>>1]|0)==0?(b[g+64>>1]|0)==0:0)?(b[g+80>>1]|0)==0:0)?(b[g+96>>1]|0)==0:0)?(b[g+112>>1]|0)==0:0){k=+f[m>>2]*+(b[g>>1]|0);f[n>>2]=k;f[n+32>>2]=k;f[n+64>>2]=k;f[n+96>>2]=k;f[n+128>>2]=k;f[n+160>>2]=k;f[n+192>>2]=k;d=56}else{d=0;p=9}else p=9;if((p|0)==9){p=0;r=+f[m>>2]*+(b[g>>1]|0);x=+f[m+64>>2]*+(d<<16>>16);w=+f[m+128>>2]*+(b[g+64>>1]|0);t=+f[m+192>>2]*+(b[g+96>>1]|0);v=r+w;w=r-w;r=x+t;t=(x-t)*1.4142135381698608-r;x=v+r;r=v-r;v=w+t;t=w-t;w=+f[m+32>>2]*+(e<<16>>16);u=+f[m+96>>2]*+(b[g+48>>1]|0);z=+f[m+160>>2]*+(b[g+80>>1]|0);k=+f[m+224>>2]*+(b[g+112>>1]|0);s=u+z;u=z-u;z=w+k;k=w-k;w=s+z;y=(u+k)*1.8477590084075928;u=y-u*2.613126039505005-w;s=(z-s)*1.4142135381698608-u;k=y-k*1.0823922157287598-s;f[n>>2]=x+w;f[n+224>>2]=x-w;f[n+32>>2]=v+u;f[n+192>>2]=v-u;f[n+64>>2]=t+s;f[n+160>>2]=t-s;f[n+96>>2]=r+k;k=r-k;d=32}f[n+(d<<2)>>2]=k;if(l>>>0>1){n=n+4|0;m=m+4|0;g=g+2|0;l=l+-1|0}else break}e=o+-384|0;d=0;while(1){p=(c[h+(d<<2)>>2]|0)+i|0;s=+f[j>>2]+512.5;t=+f[j+16>>2];u=s+t;t=s-t;s=+f[j+8>>2];w=+f[j+24>>2];y=s+w;w=(s-w)*1.4142135381698608-y;s=u+y;y=u-y;u=t+w;w=t-w;t=+f[j+20>>2];v=+f[j+12>>2];x=t+v;v=t-v;t=+f[j+4>>2];z=+f[j+28>>2];k=t+z;z=t-z;t=x+k;r=(v+z)*1.8477590084075928;v=r-v*2.613126039505005-t;x=(k-x)*1.4142135381698608-v;z=r-z*1.0823922157287598-x;a[p>>0]=a[e+(~~(s+t)&1023)>>0]|0;a[p+7>>0]=a[e+(~~(s-t)&1023)>>0]|0;a[p+1>>0]=a[e+(~~(u+v)&1023)>>0]|0;a[p+6>>0]=a[e+(~~(u-v)&1023)>>0]|0;a[p+2>>0]=a[e+(~~(w+x)&1023)>>0]|0;a[p+5>>0]=a[e+(~~(w-x)&1023)>>0]|0;a[p+3>>0]=a[e+(~~(y+z)&1023)>>0]|0;a[p+4>>0]=a[e+(~~(y-z)&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else j=j+32|0}zb=q;return}function _u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(c[j>>2]|0,b[f>>1]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;p=B(c[j>>2]|0,b[f>>1]|0)|0;u=B(c[j+64>>2]|0,d<<16>>16)|0;t=B(c[j+128>>2]|0,b[f+64>>1]|0)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;s=t+p|0;t=p-t|0;p=q+u|0;q=((u-q|0)*362>>8)-p|0;u=p+s|0;p=s-p|0;s=q+t|0;q=t-q|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;w=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;e=w+r|0;r=w-r|0;w=d+t|0;d=t-d|0;t=w+e|0;v=(d+r|0)*473>>8;r=v-(r*669>>8)-t|0;e=((w-e|0)*362>>8)-r|0;d=v-(d*277>>8)-e|0;c[k>>2]=t+u;c[k+224>>2]=u-t;c[k+32>>2]=r+s;c[k+192>>2]=s-r;c[k+64>>2]=e+q;c[k+160>>2]=q-e;c[k+96>>2]=d+p;d=p-d|0;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){w=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=w;aP(f+1|0,w|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;w=c[e+16>>2]|0;r=w+i|0;w=i-w|0;t=c[e+24>>2]|0;v=t+d|0;t=((d-t|0)*362>>8)-v|0;p=v+r|0;v=r-v|0;r=t+w|0;t=w-t|0;w=c[e+20>>2]|0;s=c[e+12>>2]|0;u=s+w|0;s=w-s|0;w=c[e+28>>2]|0;i=w+j|0;w=j-w|0;q=i+u|0;m=(w+s|0)*473>>8;s=m-(s*669>>8)-q|0;u=((i-u|0)*362>>8)-s|0;w=m-(w*277>>8)-u|0;a[f>>0]=a[l+((q+p|0)>>>5&1023)>>0]|0;a[f+7>>0]=a[l+((p-q|0)>>>5&1023)>>0]|0;a[f+1>>0]=a[l+((s+r|0)>>>5&1023)>>0]|0;a[f+6>>0]=a[l+((r-s|0)>>>5&1023)>>0]|0;a[f+2>>0]=a[l+((u+t|0)>>>5&1023)>>0]|0;a[f+5>>0]=a[l+((t-u|0)>>>5&1023)>>0]|0;a[f+3>>0]=a[l+((w+v|0)>>>5&1023)>>0]|0;a[f+4>>0]=a[l+((v-w|0)>>>5&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function $u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;f=B(c[i+32>>2]|0,b[f+16>>1]|0)|0;a[(c[g>>2]|0)+h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+32|0;j=i;d=c[d+336>>2]|0;k=c[e+84>>2]|0;n=B(c[k>>2]|0,b[f>>1]|0)|0;q=B(c[k+64>>2]|0,b[f+32>>1]|0)|0;e=q+n<<13;q=n-q<<13;n=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;l=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;p=(l+n|0)*4433|0;n=p+(n*6270|0)|0;l=p+(B(l,-15137)|0)|0;p=n+e|0;c[j>>2]=p;c[j+24>>2]=e-n;n=l+q|0;c[j+8>>2]=n;l=q-l|0;c[j+16>>2]=l;q=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[k+68>>2]|0,b[f+34>>1]|0)|0;m=e+q<<13;e=q-e<<13;q=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;k=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;o=(k+q|0)*4433|0;f=o+(q*6270|0)|0;k=o+(B(k,-15137)|0)|0;o=f+m|0;c[j+4>>2]=o;f=m-f|0;c[j+28>>2]=f;m=k+e|0;c[j+12>>2]=m;k=e-k|0;c[j+20>>2]=k;e=d+-384|0;d=(c[g>>2]|0)+h|0;p=p+33587200|0;a[d>>0]=a[e+((p+o|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;n=n+33587200|0;a[d>>0]=a[e+((n+m|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=l+33587200|0;a[d>>0]=a[e+((l+k|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((l-k|0)>>>16&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;g=(c[j+24>>2]|0)+33587200|0;a[h>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g-f|0)>>>16&1023)>>0]|0;zb=i;return}function bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=zb;zb=zb+80|0;j=i;m=c[d+336>>2]|0;k=c[e+84>>2]|0;t=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;q=B((b[f+64>>1]|0)*5793|0,c[k+128>>2]|0)|0;r=q+t|0;t=(B(q,-2)|0)+t>>11;q=B((b[f+32>>1]|0)*10033|0,c[k+64>>2]|0)|0;l=q+r|0;q=r-q|0;r=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;s=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;e=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;n=(e+r|0)*2998|0;d=n+(s+r<<13)|0;n=n+(e-s<<13)|0;e=r-s-e<<2;c[j>>2]=d+l>>11;c[j+60>>2]=l-d>>11;d=j+12|0;c[d>>2]=e+t;c[j+48>>2]=t-e;c[j+24>>2]=n+q>>11;c[j+36>>2]=q-n>>11;n=j+4|0;q=B(b[f+2>>1]<<13,c[k+4>>2]|0)|0|1024;e=B((b[f+66>>1]|0)*5793|0,c[k+132>>2]|0)|0;t=e+q|0;q=(B(e,-2)|0)+q>>11;e=B((b[f+34>>1]|0)*10033|0,c[k+68>>2]|0)|0;l=e+t|0;e=t-e|0;t=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;s=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;r=B(c[k+164>>2]|0,b[f+82>>1]|0)|0;o=(r+t|0)*2998|0;p=o+(s+t<<13)|0;o=o+(r-s<<13)|0;r=t-s-r<<2;c[n>>2]=p+l>>11;c[j+64>>2]=l-p>>11;c[j+16>>2]=r+q;c[j+52>>2]=q-r;c[j+28>>2]=o+e>>11;c[j+40>>2]=e-o>>11;o=B(b[f+4>>1]<<13,c[k+8>>2]|0)|0|1024;e=B((b[f+68>>1]|0)*5793|0,c[k+136>>2]|0)|0;r=e+o|0;o=(B(e,-2)|0)+o>>11;e=B((b[f+36>>1]|0)*10033|0,c[k+72>>2]|0)|0;q=e+r|0;e=r-e|0;r=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;p=B(c[k+104>>2]|0,b[f+52>>1]|0)|0;k=B(c[k+168>>2]|0,b[f+84>>1]|0)|0;f=(k+r|0)*2998|0;l=f+(p+r<<13)|0;f=f+(k-p<<13)|0;k=r-p-k<<2;p=l+q>>11;c[j+8>>2]=p;c[j+68>>2]=q-l>>11;l=k+o|0;c[j+20>>2]=l;c[j+56>>2]=o-k;k=f+e>>11;c[j+32>>2]=k;c[j+44>>2]=e-f>>11;f=m+-384|0;e=(c[g>>2]|0)+h|0;m=(c[j>>2]<<13)+134348800|0;o=m+(p*5793|0)|0;m=(B(p,-11586)|0)+m|0;n=(c[n>>2]|0)*10033|0;a[e>>0]=a[f+((o+n|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(m>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;d=(c[d>>2]<<13)+134348800|0;m=d+(l*5793|0)|0;d=(B(l,-11586)|0)+d|0;l=(c[j+16>>2]|0)*10033|0;a[e>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;d=(c[j+24>>2]<<13)+134348800|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+28>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;d=(c[j+36>>2]<<13)+134348800|0;k=c[j+44>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+40>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+16>>2]|0)+h|0;d=(c[j+48>>2]<<13)+134348800|0;k=c[j+56>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+52>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;h=(c[g+20>>2]|0)+h|0;g=(c[j+60>>2]<<13)+134348800|0;e=c[j+68>>2]|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+64>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+128|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=4;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+16>>2]=d;c[k+32>>2]=d;c[k+48>>2]=d;c[k+64>>2]=d;c[k+80>>2]=d;c[k+96>>2]=d;e=28}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+112>>2]=u-t>>11;c[k+16>>2]=r+s>>11;c[k+96>>2]=s-r>>11;c[k+32>>2]=e+q>>11;c[k+80>>2]=q-e>>11;c[k+48>>2]=d+p>>11;d=p-d>>11;e=16}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}u=l+-384|0;x=(c[g>>2]|0)+h|0;s=(c[m>>2]|0)+16400|0;v=c[m+8>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+4>>2]|0;t=c[m+12>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+4>>2]|0)+h|0;t=(c[m+16>>2]|0)+16400|0;v=c[m+24>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+20>>2]|0;w=c[m+28>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+8>>2]|0)+h|0;w=(c[m+32>>2]|0)+16400|0;v=c[m+40>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+36>>2]|0;s=c[m+44>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+12>>2]|0)+h|0;s=(c[m+48>>2]|0)+16400|0;v=c[m+56>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+52>>2]|0;t=c[m+60>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+16>>2]|0)+h|0;t=(c[m+64>>2]|0)+16400|0;v=c[m+72>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+68>>2]|0;w=c[m+76>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+20>>2]|0)+h|0;w=(c[m+80>>2]|0)+16400|0;v=c[m+88>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+84>>2]|0;s=c[m+92>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+24>>2]|0)+h|0;s=(c[m+96>>2]|0)+16400|0;v=c[m+104>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+100>>2]|0;t=c[m+108>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+28>>2]|0)+h|0;t=(c[m+112>>2]|0)+16400|0;v=c[m+120>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+116>>2]|0;w=c[m+124>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;zb=o;return}function dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+180>>2]=v-u>>11;c[k+20>>2]=s+t>>11;c[k+160>>2]=t-s>>11;c[k+40>>2]=q+r;c[k+140>>2]=r-q;c[k+60>>2]=o+p>>11;c[k+120>>2]=p-o>>11;c[k+80>>2]=f+n>>11;c[k+100>>2]=n-f>>11;e=e+1|0;if((e|0)==5)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;v=c[i+16>>2]|0;w=(v+x|0)*6476|0;v=x-v|0;x=(v*2896|0)+y|0;u=x+w|0;w=x-w|0;y=(B(v,-11584)|0)+y|0;v=c[i+4>>2]|0;x=c[i+12>>2]|0;t=(x+v|0)*6810|0;v=t+(v*4209|0)|0;x=t+(B(x,-17828)|0)|0;a[z>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+(y>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+20|0}zb=m;return}function ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+264>>2]=x-w>>11;c[k+24>>2]=u+v>>11;c[k+240>>2]=v-u>>11;c[k+48>>2]=s+t>>11;c[k+216>>2]=t-s>>11;c[k+72>>2]=q+r>>11;c[k+192>>2]=r-q>>11;c[k+96>>2]=o+p>>11;c[k+168>>2]=p-o>>11;c[k+120>>2]=f+n>>11;c[k+144>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*5793|0;t=z+x|0;x=z-x-x|0;z=(c[i+8>>2]|0)*10033|0;v=t+z|0;z=t-z|0;t=c[i+4>>2]|0;u=c[i+12>>2]|0;y=c[i+20>>2]|0;A=(y+t|0)*2998|0;w=A+(u+t<<13)|0;A=A+(y-u<<13)|0;y=t-u-y<<13;a[C>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+24|0}zb=m;return}function fv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+400|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+364>>2]=z-y>>11;c[k+28>>2]=w+x>>11;c[k+336>>2]=x-w>>11;c[k+56>>2]=u+v>>11;c[k+308>>2]=v-u>>11;c[k+84>>2]=s+t;c[k+280>>2]=t-s;c[k+112>>2]=q+r>>11;c[k+252>>2]=r-q>>11;c[k+140>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+168>>2]=f+n>>11;c[k+196>>2]=n-f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;t=c[i+8>>2]|0;C=c[i+16>>2]|0;v=c[i+24>>2]|0;u=(C-v|0)*7223|0;A=(t-C|0)*2578|0;x=(B(C,-15083)|0)+E+A+u|0;D=v+t|0;z=(D*10438|0)+E|0;v=u+(B(v,-637)|0)+z|0;z=A+(B(t,-20239)|0)+z|0;t=c[i+4>>2]|0;A=c[i+12>>2]|0;u=c[i+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=B(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[F>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((((C-D|0)*11585|0)+E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+28|0}zb=m;return}function gv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;H=(c[i>>2]|0)+16400|0;I=c[i+16>>2]|0;D=H+I<<13;I=H-I<<13;H=c[i+8>>2]|0;F=c[i+24>>2]|0;A=(F+H|0)*4433|0;H=A+(H*6270|0)|0;F=A+(B(F,-15137)|0)|0;A=H+D|0;H=D-H|0;D=F+I|0;F=I-F|0;I=c[i+28>>2]|0;x=c[i+20>>2]|0;z=c[i+12>>2]|0;C=c[i+4>>2]|0;E=z+I|0;G=C+x|0;y=(G+E|0)*9633|0;E=y+(B(E,-16069)|0)|0;G=y+(B(G,-3196)|0)|0;y=B(C+I|0,-7373)|0;I=y+(I*2446|0)+E|0;C=y+(C*12299|0)+G|0;y=B(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;E=y+(z*25172|0)+E|0;a[J>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function hv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;h=(c[g>>2]|0)+h|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;g=B(c[i+4>>2]|0,b[f+2>>1]|0)|0;a[h>>0]=a[d+((g+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-g|0)>>>3&1023)>>0]|0;return}function iv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+32|0;r=i;p=c[d+336>>2]|0;k=c[e+84>>2]|0;d=B(c[k>>2]|0,b[f>>1]|0)|0;e=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;q=e+d|0;c[r>>2]=q;j=r+16|0;c[j>>2]=d-e;e=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;d=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;o=d+e|0;c[r+4>>2]=o;d=e-d|0;c[r+20>>2]=d;e=B(c[k+8>>2]|0,b[f+4>>1]|0)|0;l=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;n=l+e|0;c[r+8>>2]=n;l=e-l|0;c[r+24>>2]=l;e=B(c[k+12>>2]|0,b[f+6>>1]|0)|0;k=B(c[k+44>>2]|0,b[f+22>>1]|0)|0;m=k+e|0;c[r+12>>2]=m;k=e-k|0;c[r+28>>2]=k;e=p+-384|0;f=(c[g>>2]|0)+h|0;q=q+4100|0;p=q+n<<13;n=q-n<<13;q=(m+o|0)*4433|0;o=q+(o*6270|0)|0;m=q+(B(m,-15137)|0)|0;a[f>>0]=a[e+((o+p|0)>>>16&1023)>>0]|0;a[f+3>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;a[f+1>>0]=a[e+((m+n|0)>>>16&1023)>>0]|0;a[f+2>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;f=(c[j>>2]|0)+4100|0;j=f+l<<13;f=f-l<<13;g=(k+d|0)*4433|0;d=g+(d*6270|0)|0;g=g+(B(k,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>16&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>16&1023)>>0]|0;zb=i;return}function jv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=zb;zb=zb+80|0;k=i;q=c[d+336>>2]|0;e=c[e+84>>2]|0;s=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;n=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;l=n+s|0;s=(B(n,-2)|0)+s|0;n=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;c[k>>2]=n+l>>11;c[k+48>>2]=l-n>>11;n=k+24|0;c[n>>2]=s>>11;s=k+4|0;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;r=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;c[s>>2]=r+p>>11;c[k+52>>2]=p-r>>11;c[k+28>>2]=l>>11;l=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;r=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;c[k+8>>2]=r+p>>11;c[k+56>>2]=p-r>>11;c[k+32>>2]=l>>11;l=B(b[f+6>>1]<<13,c[e+12>>2]|0)|0|1024;r=B((b[f+38>>1]|0)*5793|0,c[e+76>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+22>>1]|0)*10033|0,c[e+44>>2]|0)|0;c[k+12>>2]=r+p>>11;c[k+60>>2]=p-r>>11;c[k+36>>2]=l>>11;l=B(b[f+8>>1]<<13,c[e+16>>2]|0)|0|1024;r=B((b[f+40>>1]|0)*5793|0,c[e+80>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+24>>1]|0)*10033|0,c[e+48>>2]|0)|0;c[k+16>>2]=r+p>>11;c[k+64>>2]=p-r>>11;c[k+40>>2]=l>>11;l=B(b[f+10>>1]<<13,c[e+20>>2]|0)|0|1024;r=B((b[f+42>>1]|0)*5793|0,c[e+84>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;e=B((b[f+26>>1]|0)*10033|0,c[e+52>>2]|0)|0;c[k+20>>2]=e+p>>11;c[k+68>>2]=p-e>>11;l=l>>11;c[k+44>>2]=l;e=q+-384|0;f=(c[g>>2]|0)+h|0;q=(c[k>>2]<<13)+134348800|0;p=(c[k+16>>2]|0)*5793|0;r=q+p|0;p=q-p-p|0;q=(c[k+8>>2]|0)*10033|0;d=r+q|0;q=r-q|0;s=c[s>>2]|0;r=c[k+12>>2]|0;o=c[k+20>>2]|0;m=(o+s|0)*2998|0;j=m+(r+s<<13)|0;m=m+(o-r<<13)|0;o=s-r-o<<13;a[f>>0]=a[e+((j+d|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((d-j|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((o+p|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((p-o|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((m+q|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((q-m|0)>>>18&1023)>>0]|0;f=(c[g+4>>2]|0)+h|0;n=(c[n>>2]<<13)+134348800|0;m=(c[k+40>>2]|0)*5793|0;q=n+m|0;m=n-m-m|0;n=(c[k+32>>2]|0)*10033|0;o=q+n|0;n=q-n|0;q=c[k+28>>2]|0;p=c[k+36>>2]|0;j=(l+q|0)*2998|0;d=j+(p+q<<13)|0;j=j+(l-p<<13)|0;l=q-p-l<<13;a[f>>0]=a[e+((d+o|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((o-d|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((j+n|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((n-j|0)>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;f=(c[k+48>>2]<<13)+134348800|0;j=(c[k+64>>2]|0)*5793|0;n=f+j|0;j=f-j-j|0;f=(c[k+56>>2]|0)*10033|0;l=n+f|0;f=n-f|0;n=c[k+52>>2]|0;m=c[k+60>>2]|0;d=c[k+68>>2]|0;g=(d+n|0)*2998|0;k=g+(m+n<<13)|0;g=g+(d-m<<13)|0;d=n-m-d<<13;a[h>>0]=a[e+((k+l|0)>>>18&1023)>>0]|0;a[h+5>>0]=a[e+((l-k|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function kv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=zb;zb=zb+128|0;j=i;d=c[d+336>>2]|0;m=c[e+84>>2]|0;l=B(c[m>>2]|0,b[f>>1]|0)|0;e=B(c[m+64>>2]|0,b[f+32>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+32>>2]|0,b[f+16>>1]|0)|0;k=B(c[m+96>>2]|0,b[f+48>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j>>2]=l+n;c[j+96>>2]=n-l;c[j+32>>2]=k+e;c[j+64>>2]=e-k;k=B(c[m+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[m+68>>2]|0,b[f+34>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+36>>2]|0,b[f+18>>1]|0)|0;n=B(c[m+100>>2]|0,b[f+50>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+4>>2]=k+l;c[j+100>>2]=l-k;c[j+36>>2]=n+e;c[j+68>>2]=e-n;n=B(c[m+8>>2]|0,b[f+4>>1]|0)|0;e=B(c[m+72>>2]|0,b[f+36>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[m+104>>2]|0,b[f+52>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+8>>2]=n+k;c[j+104>>2]=k-n;c[j+40>>2]=l+e;c[j+72>>2]=e-l;l=B(c[m+12>>2]|0,b[f+6>>1]|0)|0;e=B(c[m+76>>2]|0,b[f+38>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+44>>2]|0,b[f+22>>1]|0)|0;k=B(c[m+108>>2]|0,b[f+54>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+12>>2]=l+n;c[j+108>>2]=n-l;c[j+44>>2]=k+e;c[j+76>>2]=e-k;k=B(c[m+16>>2]|0,b[f+8>>1]|0)|0;e=B(c[m+80>>2]|0,b[f+40>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+48>>2]|0,b[f+24>>1]|0)|0;n=B(c[m+112>>2]|0,b[f+56>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+16>>2]=k+l;c[j+112>>2]=l-k;c[j+48>>2]=n+e;c[j+80>>2]=e-n;n=B(c[m+20>>2]|0,b[f+10>>1]|0)|0;e=B(c[m+84>>2]|0,b[f+42>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+52>>2]|0,b[f+26>>1]|0)|0;l=B(c[m+116>>2]|0,b[f+58>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+20>>2]=n+k;c[j+116>>2]=k-n;c[j+52>>2]=l+e;c[j+84>>2]=e-l;l=B(c[m+24>>2]|0,b[f+12>>1]|0)|0;e=B(c[m+88>>2]|0,b[f+44>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+56>>2]|0,b[f+28>>1]|0)|0;k=B(c[m+120>>2]|0,b[f+60>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+24>>2]=l+n;c[j+120>>2]=n-l;c[j+56>>2]=k+e;c[j+88>>2]=e-k;k=B(c[m+28>>2]|0,b[f+14>>1]|0)|0;e=B(c[m+92>>2]|0,b[f+46>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+60>>2]|0,b[f+30>>1]|0)|0;f=B(c[m+124>>2]|0,b[f+62>>1]|0)|0;m=((f+k|0)*4433|0)+1024|0;k=m+(k*6270|0)>>11;f=m+(B(f,-15137)|0)>>11;c[j+28>>2]=k+l;c[j+124>>2]=l-k;c[j+60>>2]=f+e;c[j+92>>2]=e-f;f=d+-384|0;d=j;e=0;while(1){o=(c[g+(e<<2)>>2]|0)+h|0;m=(c[d>>2]|0)+16400|0;n=c[d+16>>2]|0;p=m+n<<13;n=m-n<<13;m=c[d+8>>2]|0;k=c[d+24>>2]|0;r=(k+m|0)*4433|0;m=r+(m*6270|0)|0;k=r+(B(k,-15137)|0)|0;r=m+p|0;m=p-m|0;p=k+n|0;k=n-k|0;n=c[d+28>>2]|0;u=c[d+20>>2]|0;s=c[d+12>>2]|0;q=c[d+4>>2]|0;j=s+n|0;l=q+u|0;t=(l+j|0)*9633|0;j=t+(B(j,-16069)|0)|0;l=t+(B(l,-3196)|0)|0;t=B(q+n|0,-7373)|0;n=t+(n*2446|0)+j|0;q=t+(q*12299|0)+l|0;t=B(s+u|0,-20995)|0;l=t+(u*16819|0)+l|0;j=t+(s*25172|0)+j|0;a[o>>0]=a[f+((q+r|0)>>>18&1023)>>0]|0;a[o+7>>0]=a[f+((r-q|0)>>>18&1023)>>0]|0;a[o+1>>0]=a[f+((j+p|0)>>>18&1023)>>0]|0;a[o+6>>0]=a[f+((p-j|0)>>>18&1023)>>0]|0;a[o+2>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[o+5>>0]=a[f+((k-l|0)>>>18&1023)>>0]|0;a[o+3>>0]=a[f+((n+m|0)>>>18&1023)>>0]|0;a[o+4>>0]=a[f+((m-n|0)>>>18&1023)>>0]|0;e=e+1|0;if((e|0)==4)break;else d=d+32|0}zb=i;return}function lv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=zb;zb=zb+160|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=(p+n|0)*6476|0;p=n-p|0;n=(p*2896|0)+f|0;q=n+o|0;o=n-o|0;f=(B(p,-11584)|0)+f|0;p=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;n=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;r=(n+p|0)*6810|0;p=r+(p*4209|0)|0;n=r+(B(n,-17828)|0)|0;c[k>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+32>>2]=n+o>>11;c[k+96>>2]=o-n>>11;c[k+64>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){r=(c[g+(d<<2)>>2]|0)+h|0;p=(c[i>>2]<<13)+134348800|0;k=c[i+16>>2]|0;j=p+(k*9373|0)|0;u=p+(B(k,-3580)|0)|0;k=p+(B(k,-11586)|0)|0;p=c[i+8>>2]|0;n=c[i+24>>2]|0;t=(n+p|0)*6810|0;p=t+(p*4209|0)|0;n=t+(B(n,-17828)|0)|0;t=p+j|0;p=j-p|0;j=n+u|0;n=u-n|0;u=c[i+4>>2]|0;v=c[i+12>>2]|0;l=c[i+20>>2]<<13;f=c[i+28>>2]|0;o=f+v|0;f=v-f|0;v=f*2531|0;w=o*7791|0;q=v+l|0;s=w+(u*11443|0)+q|0;q=(u*1812|0)-w+q|0;o=o*4815|0;v=l-v-(f<<12)|0;l=(u-f<<13)-l|0;f=(u*10323|0)-o-v|0;o=v+((u*5260|0)-o)|0;a[r>>0]=a[e+((s+t|0)>>>18&1023)>>0]|0;a[r+9>>0]=a[e+((t-s|0)>>>18&1023)>>0]|0;a[r+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[r+8>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[r+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[r+7>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[r+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[r+6>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[r+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[r+5>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==5)break;else i=i+32|0}zb=m;return}function mv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+192|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+160>>2]=r-q>>11;c[k+32>>2]=o+p;c[k+128>>2]=p-o;c[k+64>>2]=f+n>>11;c[k+96>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*10033|0;w=r+x|0;x=r-x|0;k=c[i+8>>2]|0;n=c[i+24>>2]<<13;p=(k<<13)-n|0;j=p+r|0;p=r-p|0;r=n+(k*11190|0)|0;v=r+w|0;r=w-r|0;n=(k*2998|0)-n|0;k=n+x|0;n=x-n|0;x=c[i+4>>2]|0;w=c[i+12>>2]|0;q=c[i+20>>2]|0;f=c[i+28>>2]|0;z=w*10703|0;y=B(w,-4433)|0;l=q+x|0;s=(l+f|0)*7053|0;l=s+(l*2139|0)|0;u=z+(x*2295|0)+l|0;o=B(f+q|0,-8565)|0;l=(B(q,-12112)|0)+y+o+l|0;o=(f*12998|0)-z+s+o|0;s=y+(B(x,-5540)|0)+(B(f,-16244)|0)+s|0;f=x-f|0;q=w-q|0;w=(f+q|0)*4433|0;f=w+(f*6270|0)|0;q=w+(B(q,-15137)|0)|0;a[t>>0]=a[e+((u+v|0)>>>18&1023)>>0]|0;a[t+11>>0]=a[e+((v-u|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[t+10>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[t+9>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+8>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+7>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+6>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+32|0}zb=m;return}function nv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+224|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+192>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+160>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+96>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=c[i+16>>2]|0;k=r+(p*10438|0)|0;n=r+(p*2578|0)|0;w=r+(B(p,-7223)|0)|0;p=r+(B(p,-11586)|0)|0;r=c[i+8>>2]|0;j=c[i+24>>2]|0;t=(j+r|0)*9058|0;v=t+(r*2237|0)|0;t=t+(B(j,-14084)|0)|0;r=(B(j,-11295)|0)+(r*5027|0)|0;j=v+k|0;v=k-v|0;k=t+n|0;t=n-t|0;n=r+w|0;r=w-r|0;w=c[i+4>>2]|0;A=c[i+12>>2]|0;y=c[i+20>>2]|0;q=c[i+28>>2]<<13;s=y+w|0;l=(A+w|0)*10935|0;C=s*9810|0;f=l+(B(w,-9232)|0)+C+q|0;s=s*6164|0;z=w-A|0;u=(z*3826|0)-q|0;w=s+(B(w,-8693)|0)+u|0;o=(B(y+A|0,-1297)|0)-q|0;l=l+(B(A,-3474)|0)+o|0;o=C+(B(y,-19447)|0)+o|0;C=(y-A|0)*11512|0;s=q+(B(y,-13850)|0)+C+s|0;u=C+(A*5529|0)+u|0;q=(z-y<<13)+q|0;a[x>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+32|0}zb=m;return}function ov(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;o=zb;zb=zb+256|0;i=o;m=c[d+336>>2]|0;l=i;k=c[e+84>>2]|0;j=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[k>>2]|0)|0;c[l>>2]=d;c[l+32>>2]=d;c[l+64>>2]=d;c[l+96>>2]=d;c[l+128>>2]=d;c[l+160>>2]=d;c[l+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[k+128>>2]|0)|0;p=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[k+64>>2]|0,d<<16>>16)|0;q=B(c[k+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[k+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[k+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[l>>2]=t+u>>11;c[l+224>>2]=u-t>>11;c[l+32>>2]=r+s>>11;c[l+192>>2]=s-r>>11;c[l+64>>2]=e+q>>11;c[l+160>>2]=q-e>>11;c[l+96>>2]=d+p>>11;d=p-d>>11;e=32}c[l+(e<<2)>>2]=d;if(j>>>0>1){l=l+4|0;k=k+4|0;f=f+2|0;j=j+-1|0}else break}e=m+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;m=c[i+16>>2]|0;w=m*10703|0;m=m*4433|0;f=r+w|0;w=r-w|0;k=r+m|0;m=r-m|0;r=c[i+8>>2]|0;p=c[i+24>>2]|0;u=r-p|0;z=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=z+(r*7373|0)|0;r=u+(B(r,-4926)|0)|0;p=z+(B(p,-4176)|0)|0;z=v+f|0;v=f-v|0;f=t+k|0;t=k-t|0;k=r+m|0;r=m-r|0;m=p+w|0;p=w-p|0;w=c[i+4>>2]|0;u=c[i+12>>2]|0;C=c[i+20>>2]|0;E=c[i+28>>2]|0;A=C+w|0;j=(u+w|0)*11086|0;l=A*10217|0;s=(E+w|0)*8956|0;q=(w-E|0)*7350|0;A=A*5461|0;n=(w-u|0)*3363|0;y=j+(B(w,-18730)|0)+l+s|0;w=n+(B(w,-15038)|0)+A+q|0;H=(C+u|0)*1136|0;D=(C-u|0)*11529|0;F=E+u|0;G=B(F,-5461)|0;j=j+(u*589|0)+H+G|0;F=B(F,-10217)|0;u=n+(u*16154|0)+D+F|0;n=B(E+C|0,-11086)|0;l=H+(B(C,-9222)|0)+l+n|0;n=G+(E*8728|0)+s+n|0;s=(E-C|0)*3363|0;q=F+(E*25733|0)+q+s|0;s=D+(B(C,-6278)|0)+A+s|0;a[x>>0]=a[e+((y+z|0)>>>18&1023)>>0]|0;a[x+15>>0]=a[e+((z-y|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[x+14>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((n+m|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((m-n|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else i=i+32|0}zb=o;return}function pv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;D=(c[i>>2]<<13)+134348800|0;y=c[i+16>>2]|0;I=y*10703|0;y=y*4433|0;u=D+I|0;I=D-I|0;w=D+y|0;y=D-y|0;D=c[i+8>>2]|0;A=c[i+24>>2]|0;G=D-A|0;s=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;F=s+(D*7373|0)|0;D=G+(B(D,-4926)|0)|0;A=s+(B(A,-4176)|0)|0;s=H+u|0;H=u-H|0;u=F+w|0;F=w-F|0;w=D+y|0;D=y-D|0;y=A+I|0;A=I-A|0;I=c[i+4>>2]|0;G=c[i+12>>2]|0;q=c[i+20>>2]|0;o=c[i+28>>2]|0;r=q+I|0;v=(G+I|0)*11086|0;x=r*10217|0;E=(o+I|0)*8956|0;C=(I-o|0)*7350|0;r=r*5461|0;z=(I-G|0)*3363|0;t=v+(B(I,-18730)|0)+x+E|0;I=z+(B(I,-15038)|0)+r+C|0;k=(q+G|0)*1136|0;p=(q-G|0)*11529|0;n=o+G|0;l=B(n,-5461)|0;v=v+(G*589|0)+k+l|0;n=B(n,-10217)|0;G=z+(G*16154|0)+p+n|0;z=B(o+q|0,-11086)|0;x=k+(B(q,-9222)|0)+x+z|0;z=l+(o*8728|0)+E+z|0;E=(o-q|0)*3363|0;C=n+(o*25733|0)+C+E|0;E=p+(B(q,-6278)|0)+r+E|0;a[J>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[J+15>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[J+14>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[J+13>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[J+12>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+11>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+10>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+9>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+8>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function qv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+480|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;s=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;w=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;y=(B(t,-3580)|0)+f|0;D=(t*9373|0)+f|0;f=(B(t,-11586)|0)+f|0;t=s-w|0;w=w+s|0;E=w*10958|0;u=t*374|0;s=s*11795|0;A=u+E+D|0;u=s-E+u+y|0;E=w*4482|0;o=B(t,-3271)|0;q=D-E+o|0;o=E-s+o+y|0;w=w*6476|0;s=t*2896|0;y=s+w+y|0;s=D-w+s|0;w=f+(t*5792|0)|0;f=(B(t,-11584)|0)+f|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B((b[d+80>>1]|0)*10033|0,c[j+160>>2]|0)|0;C=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;r=D-C|0;F=(r+t|0)*6810|0;x=F+(t*4209|0)|0;r=F+(B(r,-17828)|0)|0;F=B(D,-6810)|0;D=B(D,-11018)|0;v=t-C|0;n=(v*11522|0)+E|0;z=(C*20131|0)-D+n|0;n=F+(B(t,-9113)|0)+n|0;v=(v*10033|0)-E|0;p=(C+t|0)*4712|0;t=F+(t*3897|0)-E+p|0;p=E+D+(B(C,-7121)|0)+p|0;c[k>>2]=z+A>>11;c[k+448>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+416>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+384>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+352>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+320>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+288>>2]=q-p>>11;c[k+192>>2]=n+o>>11;c[k+256>>2]=o-n>>11;c[k+224>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;t=c[i+16>>2]|0;w=c[i+24>>2]|0;r=(B(w,-3580)|0)+E|0;n=(w*9373|0)+E|0;E=(B(w,-11586)|0)+E|0;w=x-t|0;t=t+x|0;l=t*10958|0;v=w*374|0;x=x*11795|0;p=v+l+n|0;v=x-l+v+r|0;l=t*4482|0;C=B(w,-3271)|0;z=n-l+C|0;C=l-x+C+r|0;t=t*6476|0;x=w*2896|0;r=x+t+r|0;x=n-t+x|0;t=E+(w*5792|0)|0;E=(B(w,-11584)|0)+E|0;w=c[i+4>>2]|0;n=c[i+12>>2]|0;l=(c[i+20>>2]|0)*10033|0;o=c[i+28>>2]|0;y=n-o|0;k=(y+w|0)*6810|0;s=k+(w*4209|0)|0;y=k+(B(y,-17828)|0)|0;k=B(n,-6810)|0;n=B(n,-11018)|0;u=w-o|0;D=(u*11522|0)+l|0;q=(o*20131|0)-n+D|0;D=k+(B(w,-9113)|0)+D|0;u=(u*10033|0)-l|0;A=(o+w|0)*4712|0;w=k+(w*3897|0)-l+A|0;A=l+n+(B(o,-7121)|0)+A|0;a[F>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[F+14>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+(E>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==15)break;else i=i+32|0}zb=m;return}function rv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+448|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+416>>2]=z-y>>11;c[k+32>>2]=w+x>>11;c[k+384>>2]=x-w>>11;c[k+64>>2]=u+v>>11;c[k+352>>2]=v-u>>11;c[k+96>>2]=s+t;c[k+320>>2]=t-s;c[k+128>>2]=q+r>>11;c[k+288>>2]=r-q>>11;c[k+160>>2]=o+p>>11;c[k+256>>2]=p-o>>11;c[k+192>>2]=f+n>>11;c[k+224>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;w=c[i+16>>2]|0;s=y+(w*10438|0)|0;u=y+(w*2578|0)|0;E=y+(B(w,-7223)|0)|0;w=y+(B(w,-11586)|0)|0;y=c[i+8>>2]|0;q=c[i+24>>2]|0;A=(q+y|0)*9058|0;D=A+(y*2237|0)|0;A=A+(B(q,-14084)|0)|0;y=(B(q,-11295)|0)+(y*5027|0)|0;q=D+s|0;D=s-D|0;s=A+u|0;A=u-A|0;u=y+E|0;y=E-y|0;E=c[i+4>>2]|0;n=c[i+12>>2]|0;p=c[i+20>>2]|0;x=c[i+28>>2]<<13;z=p+E|0;t=(n+E|0)*10935|0;l=z*9810|0;r=t+(B(E,-9232)|0)+l+x|0;z=z*6164|0;o=E-n|0;C=(o*3826|0)-x|0;E=z+(B(E,-8693)|0)+C|0;v=(B(p+n|0,-1297)|0)-x|0;t=t+(B(n,-3474)|0)+v|0;v=l+(B(p,-19447)|0)+v|0;l=(p-n|0)*11512|0;z=x+(B(p,-13850)|0)+l+z|0;C=l+(n*5529|0)+C|0;x=(o-p<<13)+x|0;a[F>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+32|0}zb=m;return}function sv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;m=zb;zb=zb+416|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;s=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;E=o+s|0;o=s-o|0;s=E*9465|0;w=(o*793|0)+f|0;A=s+(n*11249|0)+w|0;w=(n*4108|0)-s+w|0;s=E*2592|0;q=(o*3989|0)+f|0;y=(n*8672|0)-s+q|0;q=s+(B(n,-10258)|0)+q|0;E=E*3570|0;s=f+(B(o,-7678)|0)|0;u=(B(n,-1396)|0)-E+s|0;s=E+(B(n,-6581)|0)+s|0;E=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;r=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;C=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;p=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=(r+E|0)*10832|0;v=(C+E|0)*9534|0;D=p+E|0;F=D*7682|0;z=x+(B(E,-16549)|0)+v+F|0;H=B(C+r|0,-2773)|0;G=B(p+r|0,-9534)|0;x=x+(r*6859|0)+H+G|0;t=B(p+C|0,-5384)|0;v=H+(B(C,-12879)|0)+v+t|0;t=G+(p*18068|0)+F+t|0;D=(D*2773|0)+((C-r|0)*7682|0)|0;r=D+(E*2611|0)+(B(r,-3818)|0)|0;p=D+(C*3150|0)+(B(p,-14273)|0)|0;c[k>>2]=z+A>>11;c[k+384>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+352>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+192>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){H=(c[g+(d<<2)>>2]|0)+h|0;G=(c[i>>2]<<13)+134348800|0;F=c[i+8>>2]|0;z=c[i+16>>2]|0;E=c[i+24>>2]|0;o=E+z|0;E=z-E|0;z=o*9465|0;v=(E*793|0)+G|0;r=z+(F*11249|0)+v|0;v=(F*4108|0)-z+v|0;z=o*2592|0;C=(E*3989|0)+G|0;t=(F*8672|0)-z+C|0;C=z+(B(F,-10258)|0)+C|0;o=o*3570|0;z=G+(B(E,-7678)|0)|0;x=(B(F,-1396)|0)-o+z|0;z=o+(B(F,-6581)|0)+z|0;o=c[i+4>>2]|0;A=c[i+12>>2]|0;q=c[i+20>>2]|0;D=c[i+28>>2]|0;u=(A+o|0)*10832|0;w=(q+o|0)*9534|0;p=D+o|0;n=p*7682|0;s=u+(B(o,-16549)|0)+w+n|0;k=B(q+A|0,-2773)|0;l=B(D+A|0,-9534)|0;u=u+(A*6859|0)+k+l|0;y=B(D+q|0,-5384)|0;w=k+(B(q,-12879)|0)+w+y|0;y=l+(D*18068|0)+n+y|0;p=(p*2773|0)+((q-A|0)*7682|0)|0;A=p+(o*2611|0)+(B(A,-3818)|0)|0;D=p+(q*3150|0)+(B(D,-14273)|0)|0;a[H>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[H+12>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[H+1>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[H+11>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[H+2>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[H+10>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[H+3>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[H+9>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[H+4>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[H+8>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[H+5>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[H+7>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[H+6>>0]=a[e+((((E-F|0)*11585|0)+G|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==13)break;else i=i+32|0}zb=m;return}function tv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+384|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+352>>2]=x-w>>11;c[k+32>>2]=u+v>>11;c[k+320>>2]=v-u>>11;c[k+64>>2]=s+t>>11;c[k+288>>2]=t-s>>11;c[k+96>>2]=q+r>>11;c[k+256>>2]=r-q>>11;c[k+128>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+160>>2]=f+n>>11;c[k+192>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;n=(c[i+16>>2]|0)*10033|0;o=z+n|0;n=z-n|0;t=c[i+8>>2]|0;v=c[i+24>>2]<<13;x=(t<<13)-v|0;r=x+z|0;x=z-x|0;z=v+(t*11190|0)|0;p=z+o|0;z=o-z|0;v=(t*2998|0)-v|0;t=v+n|0;v=n-v|0;n=c[i+4>>2]|0;o=c[i+12>>2]|0;y=c[i+20>>2]|0;s=c[i+28>>2]|0;k=o*10703|0;l=B(o,-4433)|0;u=y+n|0;A=(u+s|0)*7053|0;u=A+(u*2139|0)|0;q=k+(n*2295|0)+u|0;w=B(s+y|0,-8565)|0;u=(B(y,-12112)|0)+l+w+u|0;w=(s*12998|0)-k+A+w|0;A=l+(B(n,-5540)|0)+(B(s,-16244)|0)+A|0;s=n-s|0;y=o-y|0;o=(s+y|0)*4433|0;s=o+(s*6270|0)|0;y=o+(B(y,-15137)|0)|0;a[C>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[C+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+32|0}zb=m;return}function uv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+352|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;y=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;s=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;q=(z-y|0)*3529|0;o=s+y|0;v=o-z|0;x=(v*11116|0)+f|0;w=x+((z-s|0)*20862|0)|0;u=w+(B(z,-14924)|0)+q|0;w=w+(s*17333|0)|0;q=x+q+(B(y,-12399)|0)|0;o=x+(B(o,-9467)|0)|0;s=o+(B(s,-6461)|0)|0;o=(z*15929|0)+(B(y,-11395)|0)+o|0;f=(B(v,-11585)|0)+f|0;v=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;z=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y+v|0;n=(z+C+x|0)*3264|0;C=C*7274|0;r=(z+v|0)*5492|0;p=n+((x+v|0)*3e3|0)|0;v=C+(B(v,-7562)|0)+r+p|0;t=n+(B(z+y|0,-9527)|0)|0;r=r+(B(z,-9766)|0)+t|0;A=B(x+y|0,-14731)|0;t=C+(y*16984|0)+A+t|0;p=A+(x*17223|0)+p|0;n=(z*8203|0)+(B(y,-12019)|0)+(B(x,-13802)|0)+n|0;c[k>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+32>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+64>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+96>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+128>>2]=n+o>>11;c[k+192>>2]=o-n>>11;c[k+160>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;A=(c[i>>2]<<13)+134348800|0;o=c[i+8>>2]|0;n=c[i+16>>2]|0;u=c[i+24>>2]|0;w=(n-o|0)*3529|0;y=u+o|0;r=y-n|0;p=(r*11116|0)+A|0;q=p+((n-u|0)*20862|0)|0;s=q+(B(n,-14924)|0)+w|0;q=q+(u*17333|0)|0;w=p+w+(B(o,-12399)|0)|0;y=p+(B(y,-9467)|0)|0;u=y+(B(u,-6461)|0)|0;y=(n*15929|0)+(B(o,-11395)|0)+y|0;A=(B(r,-11585)|0)+A|0;r=c[i+4>>2]|0;o=c[i+12>>2]|0;n=c[i+20>>2]|0;p=c[i+28>>2]|0;k=o+r|0;z=(k+n+p|0)*3264|0;k=k*7274|0;v=(n+r|0)*5492|0;x=z+((p+r|0)*3e3|0)|0;r=k+(B(r,-7562)|0)+v+x|0;t=z+(B(n+o|0,-9527)|0)|0;v=v+(B(n,-9766)|0)+t|0;l=B(p+o|0,-14731)|0;t=k+(o*16984|0)+l+t|0;x=l+(p*17223|0)+x|0;z=(n*8203|0)+(B(o,-12019)|0)+(B(p,-13802)|0)+z|0;a[C>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+(A>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==11)break;else i=i+32|0}zb=m;return}function vv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+320|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+288>>2]=v-u>>11;c[k+32>>2]=s+t>>11;c[k+256>>2]=t-s>>11;c[k+64>>2]=q+r;c[k+224>>2]=r-q;c[k+96>>2]=o+p>>11;c[k+192>>2]=p-o>>11;c[k+128>>2]=f+n>>11;c[k+160>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;x=(c[i>>2]<<13)+134348800|0;t=c[i+16>>2]|0;r=x+(t*9373|0)|0;o=x+(B(t,-3580)|0)|0;t=x+(B(t,-11586)|0)|0;x=c[i+8>>2]|0;v=c[i+24>>2]|0;p=(v+x|0)*6810|0;x=p+(x*4209|0)|0;v=p+(B(v,-17828)|0)|0;p=x+r|0;x=r-x|0;r=v+o|0;v=o-v|0;o=c[i+4>>2]|0;n=c[i+12>>2]|0;u=c[i+20>>2]<<13;s=c[i+28>>2]|0;w=s+n|0;s=n-s|0;n=s*2531|0;l=w*7791|0;y=n+u|0;q=l+(o*11443|0)+y|0;y=(o*1812|0)-l+y|0;w=w*4815|0;n=u-n-(s<<12)|0;u=(o-s<<13)-u|0;s=(o*10323|0)-w-n|0;w=n+((o*5260|0)-w)|0;a[z>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[z+9>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[z+8>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[z+7>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[z+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[z+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+32|0}zb=m;return}function wv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){q=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=B((b[d+96>>1]|0)*5793|0,c[j+192>>2]|0)|0;v=f+q|0;f=q-f-f|0;q=w-o|0;s=f+(q*5793|0)|0;f=(B(q,-11586)|0)+f|0;q=(o+w|0)*10887|0;w=w*8875|0;o=o*2012|0;u=q-o+v|0;q=v-q+w|0;o=v-w+o|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;r=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=B(B(b[d+48>>1]|0,-10033)|0,c[j+96>>2]|0)|0;p=(v+w|0)*7447|0;n=(r+w|0)*3962|0;t=p-x+n|0;y=(v-r|0)*11409|0;p=x-y+p|0;n=y+x+n|0;r=(w-v-r|0)*10033|0;c[k>>2]=t+u>>11;c[k+256>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+224>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+192>>2]=q-p>>11;c[k+96>>2]=n+o>>11;c[k+160>>2]=o-n>>11;c[k+128>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){y=(c[g+(d<<2)>>2]|0)+h|0;t=(c[i>>2]<<13)+134348800|0;n=c[i+8>>2]|0;v=c[i+16>>2]|0;x=(c[i+24>>2]|0)*5793|0;o=x+t|0;x=t-x-x|0;t=n-v|0;r=x+(t*5793|0)|0;x=(B(t,-11586)|0)+x|0;t=(v+n|0)*10887|0;n=n*8875|0;v=v*2012|0;p=t-v+o|0;t=o-t+n|0;v=o-n+v|0;n=c[i+4>>2]|0;o=c[i+20>>2]|0;s=c[i+28>>2]|0;l=B(c[i+12>>2]|0,-10033)|0;u=(o+n|0)*7447|0;w=(s+n|0)*3962|0;q=u-l+w|0;k=(o-s|0)*11409|0;u=l-k+u|0;w=k+l+w|0;s=(n-o-s|0)*10033|0;a[y>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[y+8>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[y+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[y+7>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[y+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[y+6>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[y+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[y+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[y+4>>0]=a[e+(x>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==9)break;else i=i+32|0}zb=m;return}function xv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+168>>2]=u-t>>11;c[k+28>>2]=r+s>>11;c[k+140>>2]=s-r>>11;c[k+56>>2]=p+q>>11;c[k+112>>2]=q-p>>11;c[k+84>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;w=(c[i>>2]<<13)+134348800|0;l=c[i+8>>2]|0;u=c[i+16>>2]|0;o=c[i+24>>2]|0;n=(u-o|0)*7223|0;t=(l-u|0)*2578|0;q=(B(u,-15083)|0)+w+t+n|0;v=o+l|0;s=(v*10438|0)+w|0;o=n+(B(o,-637)|0)+s|0;s=t+(B(l,-20239)|0)+s|0;l=c[i+4>>2]|0;t=c[i+12>>2]|0;n=c[i+20>>2]|0;k=(t+l|0)*7663|0;p=(l-t|0)*1395|0;t=B(n+t|0,-11295)|0;r=k+p+t|0;l=(n+l|0)*5027|0;p=k-p+l|0;t=l+(n*15326|0)+t|0;a[x>>0]=a[e+((p+o|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((o-p|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((((u-v|0)*11585|0)+w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+28|0}zb=m;return}function yv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=zb;zb=zb+144|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+120>>2]=r-q>>11;c[k+24>>2]=o+p;c[k+96>>2]=p-o;c[k+48>>2]=f+n>>11;c[k+72>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=(c[i+16>>2]|0)*5793|0;k=r+p|0;p=r-p-p|0;r=(c[i+8>>2]|0)*10033|0;n=k+r|0;r=k-r|0;k=c[i+4>>2]|0;l=c[i+12>>2]|0;q=c[i+20>>2]|0;s=(q+k|0)*2998|0;o=s+(l+k<<13)|0;s=s+(q-l<<13)|0;q=k-l-q<<13;a[t>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+24|0}zb=m;return}function zv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+112|0;l=i;d=c[d+336>>2]|0;o=c[e+84>>2]|0;n=B(b[f>>1]<<13,c[o>>2]|0)|0|1024;e=B(c[o+64>>2]|0,b[f+32>>1]|0)|0;j=B(c[o+128>>2]|0,b[f+64>>1]|0)|0;q=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+n|0;p=e+q|0;q=e-q|0;n=(B(j,-11584)|0)+n|0;j=B(c[o+32>>2]|0,b[f+16>>1]|0)|0;e=B(c[o+96>>2]|0,b[f+48>>1]|0)|0;m=(e+j|0)*6810|0;j=m+(j*4209|0)|0;e=m+(B(e,-17828)|0)|0;c[l>>2]=j+p>>11;c[l+80>>2]=p-j>>11;j=l+20|0;c[j>>2]=e+q>>11;c[l+60>>2]=q-e>>11;c[l+40>>2]=n>>11;n=l+4|0;e=B(b[f+2>>1]<<13,c[o+4>>2]|0)|0|1024;q=B(c[o+68>>2]|0,b[f+34>>1]|0)|0;p=B(c[o+132>>2]|0,b[f+66>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[o+100>>2]|0,b[f+50>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[n>>2]=p+k>>11;c[l+84>>2]=k-p>>11;c[l+24>>2]=q+m>>11;c[l+64>>2]=m-q>>11;c[l+44>>2]=e>>11;e=B(b[f+4>>1]<<13,c[o+8>>2]|0)|0|1024;q=B(c[o+72>>2]|0,b[f+36>>1]|0)|0;m=B(c[o+136>>2]|0,b[f+68>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+40>>2]|0,b[f+20>>1]|0)|0;q=B(c[o+104>>2]|0,b[f+52>>1]|0)|0;r=(q+m|0)*6810|0;m=r+(m*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+8>>2]=m+k>>11;c[l+88>>2]=k-m>>11;c[l+28>>2]=q+p>>11;c[l+68>>2]=p-q>>11;c[l+48>>2]=e>>11;e=B(b[f+6>>1]<<13,c[o+12>>2]|0)|0|1024;q=B(c[o+76>>2]|0,b[f+38>>1]|0)|0;p=B(c[o+140>>2]|0,b[f+70>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+44>>2]|0,b[f+22>>1]|0)|0;q=B(c[o+108>>2]|0,b[f+54>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+12>>2]=p+k>>11;c[l+92>>2]=k-p>>11;c[l+32>>2]=q+m>>11;c[l+72>>2]=m-q>>11;c[l+52>>2]=e>>11;e=B(b[f+8>>1]<<13,c[o+16>>2]|0)|0|1024;q=B(c[o+80>>2]|0,b[f+40>>1]|0)|0;m=B(c[o+144>>2]|0,b[f+72>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+48>>2]|0,b[f+24>>1]|0)|0;f=B(c[o+112>>2]|0,b[f+56>>1]|0)|0;o=(f+m|0)*6810|0;m=o+(m*4209|0)|0;f=o+(B(f,-17828)|0)|0;c[l+16>>2]=m+k>>11;c[l+96>>2]=k-m>>11;c[l+36>>2]=f+p>>11;c[l+76>>2]=p-f>>11;c[l+56>>2]=e>>11;f=d+-384|0;e=(c[g>>2]|0)+h|0;d=(c[l>>2]<<13)+134348800|0;p=c[l+8>>2]|0;m=c[l+16>>2]|0;k=(m+p|0)*6476|0;m=p-m|0;p=(m*2896|0)+d|0;o=p+k|0;k=p-k|0;d=(B(m,-11584)|0)+d|0;n=c[n>>2]|0;m=c[l+12>>2]|0;p=(m+n|0)*6810|0;n=p+(n*4209|0)|0;m=p+(B(m,-17828)|0)|0;a[e>>0]=a[f+((n+o|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((m+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-m|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;j=(c[j>>2]<<13)+134348800|0;d=c[l+28>>2]|0;m=c[l+36>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+24>>2]|0;d=c[l+32>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;j=(c[l+40>>2]<<13)+134348800|0;d=c[l+48>>2]|0;k=c[l+56>>2]|0;m=(k+d|0)*6476|0;k=d-k|0;d=(k*2896|0)+j|0;n=d+m|0;m=d-m|0;j=(B(k,-11584)|0)+j|0;k=c[l+44>>2]|0;d=c[l+52>>2]|0;o=(d+k|0)*6810|0;k=o+(k*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((k+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+m|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((m-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;j=(c[l+60>>2]<<13)+134348800|0;d=c[l+68>>2]|0;m=c[l+76>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+64>>2]|0;d=c[l+72>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;h=(c[g+16>>2]|0)+h|0;g=(c[l+80>>2]<<13)+134348800|0;e=c[l+88>>2]|0;j=c[l+96>>2]|0;d=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+g|0;k=e+d|0;d=e-d|0;g=(B(j,-11584)|0)+g|0;j=c[l+84>>2]|0;e=c[l+92>>2]|0;l=(e+j|0)*6810|0;j=l+(j*4209|0)|0;e=l+(B(e,-17828)|0)|0;a[h>>0]=a[f+((j+k|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[f+((k-j|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+((e+d|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+64|0;k=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;m=B(c[e>>2]|0,b[f>>1]|0)|0;j=B(c[e+64>>2]|0,b[f+32>>1]|0)|0;o=j+m<<2;j=m-j<<2;m=B(c[e+32>>2]|0,b[f+16>>1]|0)|0;n=B(c[e+96>>2]|0,b[f+48>>1]|0)|0;l=((n+m|0)*4433|0)+1024|0;m=l+(m*6270|0)>>11;n=l+(B(n,-15137)|0)>>11;c[k>>2]=m+o;c[k+48>>2]=o-m;m=k+16|0;c[m>>2]=n+j;c[k+32>>2]=j-n;n=k+4|0;j=B(c[e+4>>2]|0,b[f+2>>1]|0)|0;o=B(c[e+68>>2]|0,b[f+34>>1]|0)|0;l=o+j<<2;o=j-o<<2;j=B(c[e+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[e+100>>2]|0,b[f+50>>1]|0)|0;p=((q+j|0)*4433|0)+1024|0;j=p+(j*6270|0)>>11;q=p+(B(q,-15137)|0)>>11;c[n>>2]=j+l;c[k+52>>2]=l-j;c[k+20>>2]=q+o;c[k+36>>2]=o-q;q=B(c[e+8>>2]|0,b[f+4>>1]|0)|0;o=B(c[e+72>>2]|0,b[f+36>>1]|0)|0;j=o+q<<2;o=q-o<<2;q=B(c[e+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[e+104>>2]|0,b[f+52>>1]|0)|0;p=((l+q|0)*4433|0)+1024|0;q=p+(q*6270|0)>>11;l=p+(B(l,-15137)|0)>>11;p=q+j|0;c[k+8>>2]=p;c[k+56>>2]=j-q;c[k+24>>2]=l+o;c[k+40>>2]=o-l;l=B(c[e+12>>2]|0,b[f+6>>1]|0)|0;o=B(c[e+76>>2]|0,b[f+38>>1]|0)|0;q=o+l<<2;o=l-o<<2;l=B(c[e+44>>2]|0,b[f+22>>1]|0)|0;e=B(c[e+108>>2]|0,b[f+54>>1]|0)|0;j=((e+l|0)*4433|0)+1024|0;l=j+(l*6270|0)>>11;e=j+(B(e,-15137)|0)>>11;j=l+q|0;c[k+12>>2]=j;c[k+60>>2]=q-l;l=e+o|0;c[k+28>>2]=l;c[k+44>>2]=o-e;e=d+-384|0;d=(c[g>>2]|0)+h|0;f=(c[k>>2]|0)+16400|0;o=f+p<<13;f=f-p<<13;n=c[n>>2]|0;p=(j+n|0)*4433|0;n=p+(n*6270|0)|0;j=p+(B(j,-15137)|0)|0;a[d>>0]=a[e+((n+o|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((o-n|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;m=(c[m>>2]|0)+16400|0;j=c[k+24>>2]|0;f=m+j<<13;j=m-j<<13;m=c[k+20>>2]|0;n=(l+m|0)*4433|0;m=n+(m*6270|0)|0;l=n+(B(l,-15137)|0)|0;a[d>>0]=a[e+((m+f|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((f-m|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((l+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-l|0)>>>18&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=(c[k+32>>2]|0)+16400|0;j=c[k+40>>2]|0;m=l+j<<13;j=l-j<<13;l=c[k+36>>2]|0;f=c[k+44>>2]|0;n=(f+l|0)*4433|0;l=n+(l*6270|0)|0;f=n+(B(f,-15137)|0)|0;a[d>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;d=(c[k+48>>2]|0)+16400|0;f=c[k+56>>2]|0;j=d+f<<13;f=d-f<<13;d=c[k+52>>2]|0;g=c[k+60>>2]|0;k=(g+d|0)*4433|0;d=k+(d*6270|0)|0;g=k+(B(g,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function Bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+48|0;j=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;l=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;k=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;n=k+l|0;l=(B(k,-2)|0)+l|0;k=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;m=k+n>>11;c[j>>2]=m;c[j+24>>2]=n-k>>11;k=j+12|0;c[k>>2]=l>>11;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;n=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;q=n+l|0;l=(B(n,-2)|0)+l|0;n=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;o=n+q>>11;c[j+4>>2]=o;c[j+28>>2]=q-n>>11;l=l>>11;c[j+16>>2]=l;n=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;q=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=q+n|0;n=(B(q,-2)|0)+n|0;e=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;q=e+p>>11;c[j+8>>2]=q;e=p-e>>11;c[j+32>>2]=e;n=n>>11;c[j+20>>2]=n;f=d+-384|0;d=(c[g>>2]|0)+h|0;m=(m<<13)+134348800|0;p=m+(q*5793|0)|0;m=(B(q,-11586)|0)+m|0;o=o*10033|0;a[d>>0]=a[f+((p+o|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((p-o|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(m>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;k=(c[k>>2]<<13)+134348800|0;m=k+(n*5793|0)|0;k=(B(n,-11586)|0)+k|0;l=l*10033|0;a[d>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(k>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;g=(c[j+24>>2]<<13)+134348800|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+28>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;d=(c[d+336>>2]|0)+-384|0;j=c[e+84>>2]|0;i=B(c[j>>2]|0,b[f>>1]|0)|0;e=B(c[j+32>>2]|0,b[f+16>>1]|0)|0;i=i+4100|0;k=e+i|0;e=i-e|0;i=B(c[j+4>>2]|0,b[f+2>>1]|0)|0;f=B(c[j+36>>2]|0,b[f+18>>1]|0)|0;j=f+i|0;f=i-f|0;i=(c[g>>2]|0)+h|0;a[i>>0]=a[d+((j+k|0)>>>3&1023)>>0]|0;a[i+1>>0]=a[d+((k-j|0)>>>3&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;a[h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function Dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=(c[d+336>>2]|0)+-384+(((B(c[c[e+84>>2]>>2]|0,b[f>>1]|0)|0)+4100|0)>>>3&1023)|0;a[(c[g>>2]|0)+h>>0]=a[f>>0]|0;return}function Ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+224>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+192>>2]=s-r>>11;c[k+64>>2]=e+q>>11;c[k+160>>2]=q-e>>11;c[k+96>>2]=d+p>>11;d=p-d>>11;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){x=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=x;aP(f+1|0,x|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;x=c[e+16>>2]|0;s=x+i<<13;x=i-x<<13;u=c[e+24>>2]|0;q=(u+d|0)*4433|0;w=q+(d*6270|0)|0;u=q+(B(u,-15137)|0)|0;q=w+s|0;w=s-w|0;s=u+x|0;u=x-u|0;x=c[e+28>>2]|0;i=c[e+20>>2]|0;p=c[e+12>>2]|0;t=p+x|0;v=i+j|0;r=(t+v|0)*9633|0;t=r+(B(t,-16069)|0)|0;v=r+(B(v,-3196)|0)|0;r=B(x+j|0,-7373)|0;x=r+(x*2446|0)+t|0;r=r+(j*12299|0)+v|0;m=B(p+i|0,-20995)|0;v=m+(i*16819|0)+v|0;t=m+(p*25172|0)+t|0;a[f>>0]=a[l+((r+q|0)>>>18&1023)>>0]|0;a[f+7>>0]=a[l+((q-r|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[l+((t+s|0)>>>18&1023)>>0]|0;a[f+6>>0]=a[l+((s-t|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[l+((v+u|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[l+((u-v|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[l+((x+w|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[l+((w-x|0)>>>18&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function Fv(a,b){a=a|0;b=b|0;var d=0;d=c[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(c[a+84>>2]|0)){c[d+4>>2]=c[(c[a+476>>2]|0)+4>>2];break a}c[d+4>>2]=4;b=d+12|0;if(!(c[b>>2]|0)){a=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0;c[b>>2]=a}break}case 3:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=5;break}case 2:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=6;break}default:{b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function Gv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=zb;zb=zb+16|0;j=i;m=c[a+456>>2]|0;k=h-(c[g>>2]|0)|0;l=c[m+16>>2]|0;c[j>>2]=0;h=m+12|0;_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,c[h>>2]|0,j,k>>>0>l>>>0?l:k);Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0);zb=i;return}function Hv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[a+456>>2]|0;l=k+24|0;f=c[l>>2]|0;if(!f){j=k+16|0;h=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;i=k+12|0;c[i>>2]=h;f=c[l>>2]|0}else{h=k+12|0;j=k+16|0;i=h;h=c[h>>2]|0}_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,h,l,c[j>>2]|0);h=c[l>>2]|0;if(h>>>0>f>>>0){h=h-f|0;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,(c[i>>2]|0)+(f<<2)|0,0,h);c[g>>2]=(c[g>>2]|0)+h;h=c[l>>2]|0}f=c[j>>2]|0;if(h>>>0>>0)return;k=k+20|0;c[k>>2]=(c[k>>2]|0)+f;c[l>>2]=0;return}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;d=c[a+456>>2]|0;j=d+24|0;b=c[j>>2]|0;if(!b){i=d+20|0;e=d+16|0;k=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,c[i>>2]|0,c[e>>2]|0,0)|0;c[d+12>>2]=k;b=c[j>>2]|0;d=k}else{i=d+20|0;e=d+16|0;d=c[d+12>>2]|0}k=(c[e>>2]|0)-b|0;l=c[g>>2]|0;h=h-l|0;k=k>>>0>h>>>0?h:k;h=(c[a+116>>2]|0)-(c[i>>2]|0)|0;k=k>>>0>h>>>0?h:k;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,d+(b<<2)|0,f+(l<<2)|0,k);c[g>>2]=(c[g>>2]|0)+k;k=(c[j>>2]|0)+k|0;c[j>>2]=k;b=c[e>>2]|0;if(k>>>0>>0)return;c[i>>2]=(c[i>>2]|0)+b;c[j>>2]=0;return}function Jv(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+92>>2]=c[a+320>>2];c[b+96>>2]=c[a+116>>2];return}function Kv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[a+476>>2]|0;m=l+92|0;i=c[m>>2]|0;k=a+320|0;e=c[k>>2]|0;if((i|0)>=(e|0)){j=a+36|0;if((c[j>>2]|0)>0){e=c[a+216>>2]|0;i=0;while(1){n=(c[b+(i<<2)>>2]|0)+((B(c[l+100+(i<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Xb[c[l+52+(i<<2)>>2]&31](a,e,n,l+12+(i<<2)|0);i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else e=e+88|0}e=c[k>>2]|0}c[m>>2]=0;i=0}n=e-i|0;b=l+96|0;j=c[b>>2]|0;n=n>>>0>j>>>0?j:n;j=c[g>>2]|0;h=h-j|0;n=n>>>0>h>>>0?h:n;Yb[c[(c[a+480>>2]|0)+4>>2]&63](a,l+12|0,i,f+(j<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;c[b>>2]=(c[b>>2]|0)-n;n=(c[m>>2]|0)+n|0;c[m>>2]=n;if((n|0)<(c[k>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function Mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+320|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+112|0;h=0;do{b=c[j+(h<<2)>>2]|0;f=c[i>>2]|0;g=b+f|0;if((f|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function Ov(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+320|0;if((c[l>>2]|0)<=0)return;j=b+112|0;h=0;i=0;while(1){b=c[k+(i<<2)>>2]|0;d=c[j>>2]|0;g=b+d|0;if((d|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[j>>2]|0}Qv(k,i,k,i|1,1,d);i=i+2|0;if((i|0)>=(c[l>>2]|0))break;else h=h+1|0}return}function Pv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[b+476>>2]|0;q=c[f>>2]|0;d=c[d+4>>2]|0;f=a[r+140+d>>0]|0;o=f&255;d=a[r+150+d>>0]|0;r=d&255;p=b+320|0;g=c[p>>2]|0;if((g|0)<=0)return;n=b+112|0;k=f<<24>>24!=0;l=r+-1|0;if((d&255)>1){j=(f<<24>>24==0?~o:-2)+o+2|0;h=0;i=0;while(1){d=c[q+(i<<2)>>2]|0;f=c[n>>2]|0;g=d+f|0;if((f|0)>0){if(!k)break;b=c[e+(h<<2)>>2]|0;f=d;while(1){aP(f|0,a[b>>0]|0,j|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)b=b+1|0;else break}f=c[n>>2]|0}Qv(q,i,q,i+1|0,l,f);i=i+r|0;if((i|0)>=(c[p>>2]|0)){m=27;break}else h=h+1|0}if((m|0)==27)return;while(1){}}if(!k){d=(c[n>>2]|0)>0;f=0;while(1){if(d)break;f=f+r|0;if((f|0)>=(g|0)){m=27;break}}if((m|0)==27)return;while(1){}}b=0;h=0;while(1){f=c[q+(h<<2)>>2]|0;m=c[n>>2]|0;i=f+m|0;if((m|0)>0){g=c[e+(b<<2)>>2]|0;while(1){aP(f|0,a[g>>0]|0,o|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)g=g+1|0;else break}}h=h+r|0;if((h|0)>=(c[p>>2]|0))break;else b=b+1|0}return}function Qv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;b=a+(b<<2)|0;a=d+(e<<2)|0;while(1){_O(c[a>>2]|0,c[b>>2]|0,g|0)|0;if((f|0)>1){b=b+4|0;a=a+4|0;f=f+-1|0}else break}return}function Rv(a){a=a|0;return}function Sv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Qv(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function Tv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{a[m+b>>0]=((c[q+((d[k+b>>0]|0|256)<<2)>>2]|0)+(c[q+((d[j+b>>0]|0)<<2)>>2]|0)+(c[q+((d[l+b>>0]|0|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Uv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{s=d[k+b>>0]|0;r=s+128|0;a[m+b>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+((r+(d[j+b>>0]|0)&255)<<2)>>2]|0)+(c[q+((r+(d[l+b>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Vv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;b=0;h=c[f>>2]|0;while(1){l=a[j+b>>0]|0;a[h+2>>0]=l;a[h+1>>0]=l;a[h>>0]=l;b=b+1|0;if((b|0)==(k|0))break;else h=h+3|0}if((i|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function Wv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[b+480>>2]|0;u=c[b+112>>2]|0;n=c[b+336>>2]|0;o=c[r+8>>2]|0;p=c[r+12>>2]|0;q=c[r+16>>2]|0;r=c[r+20>>2]|0;if((h|0)<=0)return;s=e+4|0;t=e+8|0;if(!u)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;m=c[(c[t>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){v=d[k+i>>0]|0;w=d[l+i>>0]|0;x=d[m+i>>0]|0;a[b>>0]=a[n+((c[o+(x<<2)>>2]|0)+v)>>0]|0;a[b+1>>0]=a[n+(((c[q+(x<<2)>>2]|0)+(c[r+(w<<2)>>2]|0)>>16)+v)>>0]|0;a[b+2>>0]=a[n+((c[p+(w<<2)>>2]|0)+v)>>0]|0;i=i+1|0;if((i|0)==(u|0))break;else b=b+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Xv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[b+112>>2]|0;if((g|0)<=0)return;n=d+4|0;o=d+8|0;if(!m)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;k=c[(c[n>>2]|0)+(e<<2)>>2]|0;l=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;b=0;h=c[f>>2]|0;while(1){a[h>>0]=a[j+b>>0]|0;a[h+1>>0]=a[k+b>>0]|0;a[h+2>>0]=a[l+b>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else h=h+3|0}if((i|0)<=1)break;else f=f+4|0}return}function Yv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[o>>2]|0)+(f<<2)>>2]|0;m=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=0;i=c[g>>2]|0;while(1){s=a[l+b>>0]|0;q=d[m+b>>0]|0;r=(s&255)+128|0;a[i>>0]=r+(d[k+b>>0]|0);a[i+1>>0]=s;a[i+2>>0]=r+q;b=b+1|0;if((b|0)==(n|0))break;else i=i+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Zv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=c[b+480>>2]|0;w=c[b+112>>2]|0;o=c[b+336>>2]|0;p=c[s+8>>2]|0;q=c[s+12>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;if((h|0)<=0)return;t=e+4|0;u=e+8|0;v=e+12|0;if(!w)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[t>>2]|0)+(f<<2)>>2]|0;m=c[(c[u>>2]|0)+(f<<2)>>2]|0;n=c[(c[v>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){x=d[l+i>>0]|0;z=d[m+i>>0]|0;y=~a[k+i>>0]&255;a[b>>0]=a[o+(y-(c[p+(z<<2)>>2]|0))>>0]|0;a[b+1>>0]=a[o+(y-((c[r+(z<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16))>>0]|0;a[b+2>>0]=a[o+(y-(c[q+(x<<2)>>2]|0))>>0]|0;a[b+3>>0]=a[n+i>>0]|0;i=i+1|0;if((i|0)==(w|0))break;else b=b+4|0}if((j|0)<=1)break;else g=g+4|0}return}function _v(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;m=c[b+112>>2]|0;if((g|0)<=0)return;l=(m|0)==0;if((n|0)<=0)return;while(1){k=g;g=g+-1|0;if(!l){j=0;do{b=0;h=c[(c[d+(j<<2)>>2]|0)+(e<<2)>>2]|0;i=(c[f>>2]|0)+j|0;while(1){a[i>>0]=a[h>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else{h=h+1|0;i=i+n|0}}j=j+1|0}while((j|0)!=(n|0))}if((k|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function $v(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function aw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;l=n;m=c[a+476>>2]|0;i=m+36|0;if(!(c[i>>2]|0)){j=m+44|0;e=c[j>>2]|0;e=e>>>0<2?e:2;k=c[g>>2]|0;h=h-k|0;e=e>>>0>h>>>0?h:e;c[l>>2]=c[f+(k<<2)>>2];if(e>>>0>1)c[l+4>>2]=c[f+(k+1<<2)>>2];else{c[l+4>>2]=c[m+32>>2];c[i>>2]=1}Xb[c[m+12>>2]&31](a,b,c[d>>2]|0,l);f=(c[i>>2]|0)==0;c[g>>2]=(c[g>>2]|0)+e;c[j>>2]=(c[j>>2]|0)-e;if(!f){zb=n;return}}else{Qv(m+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[m+40>>2]|0);c[i>>2]=0;f=m+44|0;c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+-1}c[d>>2]=(c[d>>2]|0)+1;zb=n;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=c[b+476>>2]|0;x=c[b+336>>2]|0;y=c[w+16>>2]|0;u=c[w+20>>2]|0;v=c[w+24>>2]|0;w=c[w+28>>2]|0;i=c[e>>2]|0;h=f<<1;t=c[i+(h<<2)>>2]|0;h=c[i+((h|1)<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=c[g+4>>2]|0;s=b+112|0;e=c[s>>2]|0;m=e>>>1;if(!m){j=p;b=t}else{n=i+m|0;q=e&-2;r=m*6|0;o=h+q|0;l=p;e=t;b=g;j=f;k=m;while(1){A=d[i>>0]|0;B=d[l>>0]|0;C=c[y+(B<<2)>>2]|0;B=(c[v+(B<<2)>>2]|0)+(c[w+(A<<2)>>2]|0)>>16;A=c[u+(A<<2)>>2]|0;z=d[e>>0]|0;a[j>>0]=a[x+(C+z)>>0]|0;a[j+1>>0]=a[x+(B+z)>>0]|0;a[j+2>>0]=a[x+(A+z)>>0]|0;z=d[e+1>>0]|0;a[j+3>>0]=a[x+(C+z)>>0]|0;a[j+4>>0]=a[x+(B+z)>>0]|0;a[j+5>>0]=a[x+(A+z)>>0]|0;z=d[h>>0]|0;a[b>>0]=a[x+(C+z)>>0]|0;a[b+1>>0]=a[x+(B+z)>>0]|0;a[b+2>>0]=a[x+(A+z)>>0]|0;z=d[h+1>>0]|0;a[b+3>>0]=a[x+(C+z)>>0]|0;a[b+4>>0]=a[x+(B+z)>>0]|0;a[b+5>>0]=a[x+(A+z)>>0]|0;k=k+-1|0;if(!k)break;else{l=l+1|0;i=i+1|0;h=h+2|0;e=e+2|0;b=b+6|0;j=j+6|0}}j=p+m|0;i=n;h=o;b=t+q|0;g=g+r|0;f=f+r|0;e=c[s>>2]|0}if(!(e&1))return;B=d[i>>0]|0;A=d[j>>0]|0;z=c[y+(A<<2)>>2]|0;A=(c[v+(A<<2)>>2]|0)+(c[w+(B<<2)>>2]|0)>>16;B=c[u+(B<<2)>>2]|0;C=d[b>>0]|0;a[f>>0]=a[x+(z+C)>>0]|0;a[f+1>>0]=a[x+(A+C)>>0]|0;a[f+2>>0]=a[x+(B+C)>>0]|0;C=d[h>>0]|0;a[g>>0]=a[x+(z+C)>>0]|0;a[g+1>>0]=a[x+(A+C)>>0]|0;a[g+2>>0]=a[x+(B+C)>>0]|0;return}function cw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Xb[c[(c[a+476>>2]|0)+12>>2]&31](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function dw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=c[b+476>>2]|0;t=c[b+336>>2]|0;u=c[s+16>>2]|0;q=c[s+20>>2]|0;r=c[s+24>>2]|0;s=c[s+28>>2]|0;p=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;h=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;o=b+112|0;e=c[o>>2]|0;l=e>>>1;if(!l){b=i;g=p}else{b=i+l|0;m=e&-2;n=l*6|0;k=h;e=i;g=p;i=f;j=l;while(1){w=d[e>>0]|0;x=d[k>>0]|0;y=c[u+(x<<2)>>2]|0;x=(c[r+(x<<2)>>2]|0)+(c[s+(w<<2)>>2]|0)>>16;w=c[q+(w<<2)>>2]|0;v=d[g>>0]|0;a[i>>0]=a[t+(y+v)>>0]|0;a[i+1>>0]=a[t+(x+v)>>0]|0;a[i+2>>0]=a[t+(w+v)>>0]|0;v=d[g+1>>0]|0;a[i+3>>0]=a[t+(y+v)>>0]|0;a[i+4>>0]=a[t+(x+v)>>0]|0;a[i+5>>0]=a[t+(w+v)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+1|0;e=e+1|0;g=g+2|0;i=i+6|0}}h=h+l|0;g=p+m|0;f=f+n|0;e=c[o>>2]|0}if(!(e&1))return;x=d[b>>0]|0;v=d[h>>0]|0;w=(c[r+(v<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16;x=c[q+(x<<2)>>2]|0;y=d[g>>0]|0;a[f>>0]=a[t+((c[u+(v<<2)>>2]|0)+y)>>0]|0;a[f+1>>0]=a[t+(w+y)>>0]|0;a[f+2>>0]=a[t+(x+y)>>0]|0;return}function ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+484>>2]|0;g=c[f+24>>2]|0;e=a+88|0;if(!(c[e>>2]|0))d=0;else{c[e>>2]=2;d=2}if(!b){c[f+4>>2]=(d|0)==2?20:21;c[f+8>>2]=134;b=c[a+132>>2]|0;if((b|0)>=1){if((b|0)>256){d=c[a>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{d=c[a>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}if((c[e>>2]|0)==2){e=((c[a+112>>2]|0)*6|0)+12|0;d=f+32|0;b=c[d>>2]|0;if(!b){b=Jb[c[(c[a+4>>2]|0)+4>>2]&63](a,1,e)|0;c[d>>2]=b}aP(b|0,0,e|0)|0;if(!(c[f+40>>2]|0))gw(a);c[f+36>>2]=0}}else{c[f+4>>2]=19;c[f+8>>2]=133;c[f+28>>2]=1}b=f+28|0;if(!(c[b>>2]|0))return;aP(c[g>>2]|0,0,4096)|0;aP(c[g+4>>2]|0,0,4096)|0;aP(c[g+8>>2]|0,0,4096)|0;aP(c[g+12>>2]|0,0,4096)|0;aP(c[g+16>>2]|0,0,4096)|0;aP(c[g+20>>2]|0,0,4096)|0;aP(c[g+24>>2]|0,0,4096)|0;aP(c[g+28>>2]|0,0,4096)|0;aP(c[g+32>>2]|0,0,4096)|0;aP(c[g+36>>2]|0,0,4096)|0;aP(c[g+40>>2]|0,0,4096)|0;aP(c[g+44>>2]|0,0,4096)|0;aP(c[g+48>>2]|0,0,4096)|0;aP(c[g+52>>2]|0,0,4096)|0;aP(c[g+56>>2]|0,0,4096)|0;aP(c[g+60>>2]|0,0,4096)|0;aP(c[g+64>>2]|0,0,4096)|0;aP(c[g+68>>2]|0,0,4096)|0;aP(c[g+72>>2]|0,0,4096)|0;aP(c[g+76>>2]|0,0,4096)|0;aP(c[g+80>>2]|0,0,4096)|0;aP(c[g+84>>2]|0,0,4096)|0;aP(c[g+88>>2]|0,0,4096)|0;aP(c[g+92>>2]|0,0,4096)|0;aP(c[g+96>>2]|0,0,4096)|0;aP(c[g+100>>2]|0,0,4096)|0;aP(c[g+104>>2]|0,0,4096)|0;aP(c[g+108>>2]|0,0,4096)|0;aP(c[g+112>>2]|0,0,4096)|0;aP(c[g+116>>2]|0,0,4096)|0;aP(c[g+120>>2]|0,0,4096)|0;aP(c[g+124>>2]|0,0,4096)|0;c[b>>2]=0;return}function fw(a){a=a|0;c[(c[a+484>>2]|0)+28>>2]=1;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=c[a+484>>2]|0;a=Jb[c[c[a+4>>2]>>2]&63](a,1,2044)|0;e=a+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;d=16;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=0-d;a=a+1|0;d=(a&1^1)+d|0}while((a|0)!=48);b=0-d|0;a=48;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=b;a=a+1|0}while((a|0)!=256);return}function hw(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+484>>2]|0)+24>>2]|0;i=c[a+112>>2]|0;if((g|0)<1|(i|0)==0)return;a=0;do{f=i;h=c[e+(a<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;f=f+-1|0;if(!f)break;else h=h+3|0}a=a+1|0}while((a|0)!=(g|0));return}function iw(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;y=d+484|0;A=c[y>>2]|0;C=d+136|0;c[C>>2]=c[A+16>>2];s=c[A+20>>2]|0;z=Jb[c[c[d+4>>2]>>2]&63](d,1,s<<5)|0;c[z>>2]=0;c[z+4>>2]=31;c[z+8>>2]=0;c[z+12>>2]=63;c[z+16>>2]=0;c[z+20>>2]=31;nw(d,z);a:do if((s|0)>1){e=1;while(1){if((e<<1|0)>(s|0)){g=0;h=0;i=z;f=0;while(1){j=c[i+24>>2]|0;k=(j|0)>(g|0);f=k?i:f;h=h+1|0;if((h|0)==(e|0)){q=f;break}else{g=k?j:g;i=i+32|0}}}else{f=0;i=0;j=z;g=0;while(1){h=c[j+28>>2]|0;if((h|0)>(f|0)){x=(c[j+24>>2]|0)>0;g=x?j:g;f=x?h:f}i=i+1|0;if((i|0)==(e|0)){q=g;break}else j=j+32|0}}if(!q)break a;r=z+(e<<5)|0;g=q+4|0;c[z+(e<<5)+4>>2]=c[g>>2];h=q+12|0;c[z+(e<<5)+12>>2]=c[h>>2];i=q+20|0;c[z+(e<<5)+20>>2]=c[i>>2];c[r>>2]=c[q>>2];n=q+8|0;f=z+(e<<5)+8|0;c[f>>2]=c[n>>2];p=q+16|0;j=z+(e<<5)+16|0;c[j>>2]=c[p>>2];k=c[g>>2]|0;l=c[q>>2]|0;v=k-l<<4;m=c[h>>2]|0;n=c[n>>2]|0;w=(m-n|0)*12|0;o=c[i>>2]|0;p=c[p>>2]|0;x=(v|0)>(w|0);switch(((o-p<<3|0)>((x?v:w)|0)?2:(x^1)&1)&3){case 0:{t=(l+k|0)/2|0;c[g>>2]=t;f=r;g=t;t=15;break}case 1:{g=(n+m|0)/2|0;c[h>>2]=g;t=15;break}case 2:{g=(p+o|0)/2|0;c[i>>2]=g;f=j;t=15;break}default:{}}if((t|0)==15){t=0;c[f>>2]=g+1}nw(d,q);nw(d,r);e=e+1|0;if((e|0)>=(s|0))break a}}else e=1;while(0);x=0;do{r=c[(c[y>>2]|0)+24>>2]|0;j=c[z+(x<<5)>>2]|0;s=c[z+(x<<5)+4>>2]|0;t=c[z+(x<<5)+8>>2]|0;u=c[z+(x<<5)+12>>2]|0;v=c[z+(x<<5)+16>>2]|0;w=c[z+(x<<5)+20>>2]|0;if((j|0)>(s|0)|(t|0)>(u|0)|(v|0)>(w|0)){i=0;h=0;g=0;f=0}else{i=0;h=0;g=0;f=0;while(1){p=c[r+(j<<2)>>2]|0;q=j<<3|4;o=t;while(1){n=o<<2|2;l=p+(o<<6)+(v<<1)|0;m=v;while(1){D=b[l>>1]|0;k=D&65535;if(D<<16>>16){i=(B(m<<3|4,k)|0)+i|0;h=(B(n,k)|0)+h|0;g=(B(q,k)|0)+g|0;f=f+k|0}if((m|0)<(w|0)){l=l+2|0;m=m+1|0}else break}if((o|0)<(u|0))o=o+1|0;else break}if((j|0)<(s|0))j=j+1|0;else break}}D=f>>1;a[(c[c[C>>2]>>2]|0)+x>>0]=(g+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+x>>0]=(h+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+x>>0]=(i+D|0)/(f|0)|0;x=x+1|0}while((x|0)<(e|0));c[d+132>>2]=e;D=c[d>>2]|0;c[D+20>>2]=98;c[D+24>>2]=e;Ub[c[(c[d>>2]|0)+4>>2]&63](d,1);c[A+28>>2]=1;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;i=c[e+484>>2]|0;U=c[i+24>>2]|0;V=c[e+112>>2]|0;O=c[e+336>>2]|0;P=c[i+40>>2]|0;S=c[e+136>>2]|0;Q=c[S>>2]|0;R=c[S+4>>2]|0;S=c[S+8>>2]|0;if((h|0)<=0)return;T=i+36|0;J=i+32|0;K=(V|0)==0;L=V+-1|0;M=L*3|0;N=(V*3|0)+3|0;I=0;do{k=c[f+(I<<2)>>2]|0;j=c[g+(I<<2)>>2]|0;if(!(c[T>>2]|0)){F=3;G=1;i=c[J>>2]|0;l=1}else{F=-3;G=-1;i=(c[J>>2]|0)+(N<<1)|0;j=j+L|0;k=k+M|0;l=0}c[T>>2]=l;if(K){l=0;k=0;j=0}else{A=F+1|0;C=F+2|0;H=B(V,F)|0;p=0;q=0;w=0;x=0;y=0;l=0;D=0;E=0;z=V;m=0;u=i;while(1){v=u;u=u+(F<<1)|0;r=d[O+((c[P+(m+8+(b[u>>1]|0)>>4<<2)>>2]|0)+(d[k>>0]|0))>>0]|0;s=d[O+((c[P+(p+8+(b[v+(A<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0;t=d[O+((c[P+(q+8+(b[v+(C<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0;n=r>>>3;o=s>>>2;p=t>>>3;q=(c[U+(n<<2)>>2]|0)+(o<<6)+(p<<1)|0;m=b[q>>1]|0;if(!(m<<16>>16)){mw(e,n,o,p);m=b[q>>1]|0}m=(m&65535)+-1|0;a[j>>0]=m;o=r-(d[Q+m>>0]|0)|0;n=s-(d[R+m>>0]|0)|0;m=t-(d[S+m>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+w|0;b[v+2>>1]=(n*3|0)+D;D=(n*5|0)+x|0;b[v+4>>1]=(m*3|0)+E;E=(m*5|0)+y|0;z=z+-1|0;if(!z)break;else{p=n*7|0;q=m*7|0;w=o;x=n;y=m;m=o*7|0;j=j+G|0;k=k+F|0}}k=D;j=E;i=i+(H<<1)|0}b[i>>1]=l;b[i+2>>1]=k;b[i+4>>1]=j;I=I+1|0}while((I|0)!=(h|0));return}function kw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[(c[e+484>>2]|0)+24>>2]|0;s=c[e+112>>2]|0;if((h|0)<1|(s|0)==0)return;o=0;do{n=s;p=c[g+(o<<2)>>2]|0;q=c[f+(o<<2)>>2]|0;while(1){j=(d[q>>0]|0)>>>3;k=(d[q+1>>0]|0)>>>2;l=(d[q+2>>0]|0)>>>3;m=(c[r+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){mw(e,j,k,l);i=b[m>>1]|0}a[p>>0]=(i&65535)+255;n=n+-1|0;if(!n)break;else{p=p+1|0;q=q+3|0}}o=o+1|0}while((o|0)!=(h|0));return}function lw(a){a=a|0;return}function mw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=zb;zb=zb+1408|0;K=N+384|0;L=N+128|0;i=N;M=c[(c[e+484>>2]|0)+24>>2]|0;n=f>>>2<<5;H=n|4;p=g>>>3<<5;I=p|2;r=h>>>2<<5;J=r|4;x=c[e+132>>2]|0;n=n|28;o=n+H>>1;p=p|30;q=p+I>>1;r=r|28;s=r+J>>1;if((x|0)>0){v=c[e+136>>2]|0;t=c[v>>2]|0;u=c[v+4>>2]|0;v=c[v+8>>2]|0;w=2147483647;m=0;do{j=d[t+m>>0]|0;do if((H|0)<=(j|0)){if((n|0)<(j|0)){G=j-n<<1;l=j-H<<1;l=B(l,l)|0;j=B(G,G)|0;break}if((o|0)<(j|0)){l=j-H<<1;l=B(l,l)|0;j=0;break}else{l=j-n<<1;l=B(l,l)|0;j=0;break}}else{G=j-H<<1;l=j-n<<1;l=B(l,l)|0;j=B(G,G)|0}while(0);k=d[u+m>>0]|0;do if((I|0)<=(k|0)){if((p|0)<(k|0)){G=(k-p|0)*3|0;k=(k-I|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((q|0)<(k|0)){k=(k-I|0)*3|0;k=B(k,k)|0;break}else{k=(k-p|0)*3|0;k=B(k,k)|0;break}}else{G=(k-I|0)*3|0;k=(k-p|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);l=k+l|0;k=d[v+m>>0]|0;do if((J|0)<=(k|0)){if((r|0)<(k|0)){G=k-r|0;k=k-J|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((s|0)<(k|0)){k=k-J|0;k=B(k,k)|0;break}else{k=k-r|0;k=B(k,k)|0;break}}else{G=k-J|0;k=k-r|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);G=l+k|0;c[K+(m<<2)>>2]=j;w=(G|0)<(w|0)?G:w;m=m+1|0}while((m|0)!=(x|0));j=0;k=0;do{if((c[K+(k<<2)>>2]|0)<=(w|0)){a[L+j>>0]=k;j=j+1|0}k=k+1|0}while((k|0)!=(x|0))}else j=0;c[K>>2]=2147483647;c[K+4>>2]=2147483647;c[K+8>>2]=2147483647;c[K+12>>2]=2147483647;c[K+16>>2]=2147483647;c[K+20>>2]=2147483647;c[K+24>>2]=2147483647;c[K+28>>2]=2147483647;c[K+32>>2]=2147483647;c[K+36>>2]=2147483647;c[K+40>>2]=2147483647;c[K+44>>2]=2147483647;c[K+48>>2]=2147483647;c[K+52>>2]=2147483647;c[K+56>>2]=2147483647;c[K+60>>2]=2147483647;c[K+64>>2]=2147483647;c[K+68>>2]=2147483647;c[K+72>>2]=2147483647;c[K+76>>2]=2147483647;c[K+80>>2]=2147483647;c[K+84>>2]=2147483647;c[K+88>>2]=2147483647;c[K+92>>2]=2147483647;c[K+96>>2]=2147483647;c[K+100>>2]=2147483647;c[K+104>>2]=2147483647;c[K+108>>2]=2147483647;c[K+112>>2]=2147483647;c[K+116>>2]=2147483647;c[K+120>>2]=2147483647;c[K+124>>2]=2147483647;c[K+128>>2]=2147483647;c[K+132>>2]=2147483647;c[K+136>>2]=2147483647;c[K+140>>2]=2147483647;c[K+144>>2]=2147483647;c[K+148>>2]=2147483647;c[K+152>>2]=2147483647;c[K+156>>2]=2147483647;c[K+160>>2]=2147483647;c[K+164>>2]=2147483647;c[K+168>>2]=2147483647;c[K+172>>2]=2147483647;c[K+176>>2]=2147483647;c[K+180>>2]=2147483647;c[K+184>>2]=2147483647;c[K+188>>2]=2147483647;c[K+192>>2]=2147483647;c[K+196>>2]=2147483647;c[K+200>>2]=2147483647;c[K+204>>2]=2147483647;c[K+208>>2]=2147483647;c[K+212>>2]=2147483647;c[K+216>>2]=2147483647;c[K+220>>2]=2147483647;c[K+224>>2]=2147483647;c[K+228>>2]=2147483647;c[K+232>>2]=2147483647;c[K+236>>2]=2147483647;c[K+240>>2]=2147483647;c[K+244>>2]=2147483647;c[K+248>>2]=2147483647;c[K+252>>2]=2147483647;c[K+256>>2]=2147483647;c[K+260>>2]=2147483647;c[K+264>>2]=2147483647;c[K+268>>2]=2147483647;c[K+272>>2]=2147483647;c[K+276>>2]=2147483647;c[K+280>>2]=2147483647;c[K+284>>2]=2147483647;c[K+288>>2]=2147483647;c[K+292>>2]=2147483647;c[K+296>>2]=2147483647;c[K+300>>2]=2147483647;c[K+304>>2]=2147483647;c[K+308>>2]=2147483647;c[K+312>>2]=2147483647;c[K+316>>2]=2147483647;c[K+320>>2]=2147483647;c[K+324>>2]=2147483647;c[K+328>>2]=2147483647;c[K+332>>2]=2147483647;c[K+336>>2]=2147483647;c[K+340>>2]=2147483647;c[K+344>>2]=2147483647;c[K+348>>2]=2147483647;c[K+352>>2]=2147483647;c[K+356>>2]=2147483647;c[K+360>>2]=2147483647;c[K+364>>2]=2147483647;c[K+368>>2]=2147483647;c[K+372>>2]=2147483647;c[K+376>>2]=2147483647;c[K+380>>2]=2147483647;c[K+384>>2]=2147483647;c[K+388>>2]=2147483647;c[K+392>>2]=2147483647;c[K+396>>2]=2147483647;c[K+400>>2]=2147483647;c[K+404>>2]=2147483647;c[K+408>>2]=2147483647;c[K+412>>2]=2147483647;c[K+416>>2]=2147483647;c[K+420>>2]=2147483647;c[K+424>>2]=2147483647;c[K+428>>2]=2147483647;c[K+432>>2]=2147483647;c[K+436>>2]=2147483647;c[K+440>>2]=2147483647;c[K+444>>2]=2147483647;c[K+448>>2]=2147483647;c[K+452>>2]=2147483647;c[K+456>>2]=2147483647;c[K+460>>2]=2147483647;c[K+464>>2]=2147483647;c[K+468>>2]=2147483647;c[K+472>>2]=2147483647;c[K+476>>2]=2147483647;c[K+480>>2]=2147483647;c[K+484>>2]=2147483647;c[K+488>>2]=2147483647;c[K+492>>2]=2147483647;c[K+496>>2]=2147483647;c[K+500>>2]=2147483647;c[K+504>>2]=2147483647;c[K+508>>2]=2147483647;if((j|0)>0){v=e+136|0;u=0;do{w=a[L+u>>0]|0;r=w&255;x=c[v>>2]|0;q=H-(d[(c[x>>2]|0)+r>>0]|0)|0;s=q<<1;s=B(s,s)|0;G=I-(d[(c[x+4>>2]|0)+r>>0]|0)|0;z=G*3|0;s=(B(z,z)|0)+s|0;r=J-(d[(c[x+8>>2]|0)+r>>0]|0)|0;G=G*72|0;x=G+144|0;z=r<<4;e=z+64|0;y=z+192|0;z=z+320|0;A=G+432|0;C=G+720|0;D=G+1008|0;E=G+1296|0;F=G+1584|0;G=G+1872|0;p=3;q=(q<<6)+256|0;r=s+(B(r,r)|0)|0;s=i;t=K;while(1){n=t+16|0;if((r|0)<(c[t>>2]|0)){c[t>>2]=r;a[s>>0]=w}k=r+e|0;l=t+4|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+1>>0]=w}k=k+y|0;l=t+8|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+2>>0]=w}k=k+z|0;l=t+12|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+3>>0]=w}m=x+r|0;o=t+32|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+4>>0]=w}k=m+e|0;l=t+20|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+5>>0]=w}k=k+y|0;l=t+24|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+6>>0]=w}k=k+z|0;l=t+28|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+7>>0]=w}m=A+m|0;n=t+48|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+8>>0]=w}k=m+e|0;l=t+36|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+9>>0]=w}k=k+y|0;l=t+40|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+10>>0]=w}k=k+z|0;l=t+44|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+11>>0]=w}m=C+m|0;o=t+64|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+12>>0]=w}k=m+e|0;l=t+52|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+13>>0]=w}k=k+y|0;l=t+56|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+14>>0]=w}k=k+z|0;l=t+60|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+15>>0]=w}m=D+m|0;n=t+80|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+16>>0]=w}k=m+e|0;l=t+68|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+17>>0]=w}k=k+y|0;l=t+72|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+18>>0]=w}k=k+z|0;l=t+76|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+19>>0]=w}m=E+m|0;o=t+96|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+20>>0]=w}k=m+e|0;l=t+84|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+21>>0]=w}k=k+y|0;l=t+88|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+22>>0]=w}k=k+z|0;l=t+92|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+23>>0]=w}m=F+m|0;n=t+112|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+24>>0]=w}k=m+e|0;l=t+100|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+25>>0]=w}k=k+y|0;l=t+104|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+26>>0]=w}k=k+z|0;l=t+108|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+27>>0]=w}k=G+m|0;if((k|0)<(c[n>>2]|0)){c[n>>2]=k;a[s+28>>0]=w}k=k+e|0;l=t+116|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+29>>0]=w}k=k+y|0;l=t+120|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+30>>0]=w}k=k+z|0;l=t+124|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+31>>0]=w}r=r+q|0;if(!p)break;else{p=p+-1|0;q=q+512|0;s=s+32|0;t=t+128|0}}u=u+1|0}while((u|0)!=(j|0))}s=f&-4;t=g&-8;l=h&-4;m=t|1;n=t|2;o=t|3;p=t|4;q=t|5;r=t|6;k=g|7;j=0;while(1){g=M+(j+s<<2)|0;h=c[g>>2]|0;L=h+(t<<6)+(l<<1)|0;b[L>>1]=(d[i>>0]|0)+1;b[L+2>>1]=(d[i+1>>0]|0)+1;b[L+4>>1]=(d[i+2>>0]|0)+1;b[L+6>>1]=(d[i+3>>0]|0)+1;L=h+(m<<6)+(l<<1)|0;b[L>>1]=(d[i+4>>0]|0)+1;b[L+2>>1]=(d[i+5>>0]|0)+1;b[L+4>>1]=(d[i+6>>0]|0)+1;b[L+6>>1]=(d[i+7>>0]|0)+1;L=h+(n<<6)+(l<<1)|0;b[L>>1]=(d[i+8>>0]|0)+1;b[L+2>>1]=(d[i+9>>0]|0)+1;b[L+4>>1]=(d[i+10>>0]|0)+1;b[L+6>>1]=(d[i+11>>0]|0)+1;h=h+(o<<6)+(l<<1)|0;b[h>>1]=(d[i+12>>0]|0)+1;b[h+2>>1]=(d[i+13>>0]|0)+1;b[h+4>>1]=(d[i+14>>0]|0)+1;b[h+6>>1]=(d[i+15>>0]|0)+1;g=c[g>>2]|0;h=g+(p<<6)+(l<<1)|0;b[h>>1]=(d[i+16>>0]|0)+1;b[h+2>>1]=(d[i+17>>0]|0)+1;b[h+4>>1]=(d[i+18>>0]|0)+1;b[h+6>>1]=(d[i+19>>0]|0)+1;h=g+(q<<6)+(l<<1)|0;b[h>>1]=(d[i+20>>0]|0)+1;b[h+2>>1]=(d[i+21>>0]|0)+1;b[h+4>>1]=(d[i+22>>0]|0)+1;b[h+6>>1]=(d[i+23>>0]|0)+1;h=g+(r<<6)+(l<<1)|0;b[h>>1]=(d[i+24>>0]|0)+1;b[h+2>>1]=(d[i+25>>0]|0)+1;b[h+4>>1]=(d[i+26>>0]|0)+1;b[h+6>>1]=(d[i+27>>0]|0)+1;g=g+(k<<6)+(l<<1)|0;b[g>>1]=(d[i+28>>0]|0)+1;b[g+2>>1]=(d[i+29>>0]|0)+1;b[g+4>>1]=(d[i+30>>0]|0)+1;b[g+6>>1]=(d[i+31>>0]|0)+1;j=j+1|0;if((j|0)==4)break;else i=i+32|0}zb=N;return} +function mO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=o;if((-18-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)m=c[b>>2]|0;else m=b;if(d>>>0<2147483623){k=e+d|0;l=d<<1;k=k>>>0>>0?l:k;k=k>>>0<11?11:k+16&-16}else k=-17;l=tB(k)|0;if(g|0)VD(l,m,g)|0;if(i|0)VD(l+g|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)VD(l+g+i|0,m+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(m,e);c[b>>2]=l;c[b+8>>2]=k|-2147483648;i=f+i|0;c[b+4>>2]=i;a[n>>0]=0;bg(l+i|0,n);zb=o;return}function nO(a,b){a=a|0;b=b|0;return kO(a,b,Yf(b)|0)|0}function oO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;h=b+11|0;f=a[h>>0]|0;i=f<<24>>24<0;if(i)f=c[b+4>>2]|0;else f=f&255;do if(f>>>0>=d>>>0)if(i){i=(c[b>>2]|0)+d|0;a[g>>0]=0;bg(i,g);c[b+4>>2]=d;break}else{a[g>>0]=0;bg(b+d|0,g);a[h>>0]=d;break}else pO(b,d-f|0,e)|0;while(0);zb=j;return}function pO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;if(d|0){j=b+11|0;f=a[j>>0]|0;if(f<<24>>24<0){h=c[b+4>>2]|0;g=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;g=10}if((g-h|0)>>>0>>0){qO(b,g,h+d-g|0,h,h,0,0);f=a[j>>0]|0}if(f<<24>>24<0)g=c[b>>2]|0;else g=b;iO(g+h|0,d,e)|0;f=h+d|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}zb=k;return b|0}function qO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<2147483623){j=e+d|0;k=d<<1;j=j>>>0>>0?k:j;j=j>>>0<11?11:j+16&-16}else j=-17;k=tB(j)|0;if(g|0)VD(k,l,g)|0;e=f-h-g|0;if(e|0)VD(k+g+i|0,l+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(l,e);c[b>>2]=k;c[b+8>>2]=j|-2147483648;return}function rO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g){h=c[b+4>>2]|0;f=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;f=10}if((f-h|0)>>>0>=e>>>0){if(e|0){if(g)g=c[b>>2]|0;else g=b;VD(g+h|0,d,e)|0;f=h+e|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}}else mO(b,f,h+e-f|0,h,h,0,e,d);zb=k;return b|0}function sO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;h=j;i=j+1|0;a[h>>0]=d;g=b+11|0;d=a[g>>0]|0;e=d<<24>>24<0;if(e){f=c[b+4>>2]|0;d=(c[b+8>>2]&2147483647)+-1|0}else{f=d&255;d=10}if((f|0)==(d|0)){qO(b,d,1,d,d,0,0);if((a[g>>0]|0)<0)e=8;else e=7}else if(e)e=8;else e=7;if((e|0)==7){a[g>>0]=f+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=f+1}b=d+f|0;bg(b,h);a[i>>0]=0;bg(b+1|0,i);zb=j;return}function tO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(e>>>0>1073741807)eO(b);do if(e>>>0>=2){g=e+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=e;break}}else{a[b+8+3>>0]=e;f=b}while(0);kE(f,d,e)|0;c[h>>2]=0;JF(f+(e<<2)|0,h);zb=i;return}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(d>>>0>1073741807)eO(b);do if(d>>>0>=2){g=d+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=d;break}}else{a[b+8+3>>0]=d;f=b}while(0);vO(f,d,e)|0;c[h>>2]=0;JF(f+(d<<2)|0,h);zb=i;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;if(b)uA(a,c,b)|0;return a|0}function wO(b){b=b|0;var d=0;d=b+8|0;if((a[d+3>>0]|0)<0)Pf(c[b>>2]|0,c[d>>2]<<2);return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;f=b+8|0;k=f+3|0;h=a[k>>0]|0;i=h<<24>>24<0;if(i)g=(c[f>>2]&2147483647)+-1|0;else g=1;do if(g>>>0>=e>>>0){if(i)f=c[b>>2]|0;else f=b;yO(f,d,e)|0;c[j>>2]=0;JF(f+(e<<2)|0,j);if((a[k>>0]|0)<0){c[b+4>>2]=e;break}else{a[k>>0]=e;break}}else{if(i)f=c[b+4>>2]|0;else f=h&255;zO(b,g,e-g|0,f,0,f,e,d)}while(0);zb=l;return b|0}function yO(a,b,c){a=a|0;b=b|0;c=c|0;if(c)vA(a,b,c)|0;return a|0}function zO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=p;if((1073741806-d|0)>>>0>>0)eO(b);l=b+8|0;if((a[l+3>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else m=e}else m=1073741807;k=tB(m<<2)|0;if(g|0)kE(k,n,g)|0;if(i|0)kE(k+(g<<2)|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)kE(k+(g<<2)+(i<<2)|0,n+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(n,e<<2);c[b>>2]=k;c[l>>2]=m|-2147483648;i=f+i|0;c[b+4>>2]=i;c[o>>2]=0;JF(k+(i<<2)|0,o);zb=p;return}function AO(a,b){a=a|0;b=b|0;return xO(a,b,JI(b)|0)|0}function BO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((1073741807-d|0)>>>0>>0)eO(b);m=b+8|0;if((a[m+3>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<536870887){e=e+d|0;j=d<<1;e=e>>>0>>0?j:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else k=e}else k=1073741807;j=tB(k<<2)|0;if(g|0)kE(j,l,g)|0;e=f-h-g|0;if(e|0)kE(j+(g<<2)+(i<<2)|0,l+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(l,e<<2);c[b>>2]=j;c[m>>2]=k|-2147483648;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;g=b+8|0;k=g+3|0;f=a[k>>0]|0;i=f<<24>>24<0;if(i){h=c[b+4>>2]|0;f=(c[g>>2]&2147483647)+-1|0}else{h=f&255;f=1}if((f-h|0)>>>0>=e>>>0){if(e|0){if(i)g=c[b>>2]|0;else g=b;kE(g+(h<<2)|0,d,e)|0;f=h+e|0;if((a[k>>0]|0)<0)c[b+4>>2]=f;else a[k>>0]=f;c[j>>2]=0;JF(g+(f<<2)|0,j)}}else zO(b,f,h+e-f|0,h,h,0,e,d);zb=l;return b|0}function DO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=k+4|0;c[i>>2]=d;e=b+8|0;h=e+3|0;d=a[h>>0]|0;f=d<<24>>24<0;if(f){g=c[b+4>>2]|0;d=(c[e>>2]&2147483647)+-1|0}else{g=d&255;d=1}if((g|0)==(d|0)){BO(b,d,1,d,d,0,0);if((a[h>>0]|0)<0)e=8;else e=7}else if(f)e=8;else e=7;if((e|0)==7){a[h>>0]=g+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=g+1}b=d+(g<<2)|0;JF(b,i);c[j>>2]=0;JF(b+4|0,j);zb=k;return}function EO(a){a=a|0;ua()}function FO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14291]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=57204+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14291]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;zb=w;return v|0}l=c[14293]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=57204+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=h;c[14296]=f;v=i;zb=w;return v|0}g=c[14292]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[57468+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14292]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=j;c[14296]=h}v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14292]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[57468+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[57468+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14293]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=57468+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=57468+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14293]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14296]|0;if(b>>>0>15){v=a+m|0;c[14296]=v;c[14293]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14293]=0;c[14296]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;zb=w;return v|0}h=c[14294]|0;if(h>>>0>m>>>0){t=h-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}if(!(c[14409]|0)){c[14411]=4096;c[14410]=4096;c[14412]=-1;c[14413]=-1;c[14414]=0;c[14402]=0;c[14409]=n&-16^1431655768;a=4096}else a=c[14411]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;zb=w;return v|0}a=c[14401]|0;if(a|0?(l=c[14399]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;zb=w;return v|0}d:do if(!(c[14402]&4)){d=c[14297]|0;e:do if(d){e=57612;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=LO(b)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=LO(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14410]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14399]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14401]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=LO(b)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14411]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((LO(a)|0)==(-1|0)){LO(d)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14402]=c[14402]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=LO(k)|0,p=LO(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

      >>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14399]|0)+h|0;c[14399]=b;if(b>>>0>(c[14400]|0)>>>0)c[14400]=b;j=c[14297]|0;f:do if(j){b=57612;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14294]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14298]=c[14413];break}if(g>>>0<(c[14295]|0)>>>0)c[14295]=g;d=g+h|0;b=57612;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14294]|0)+i|0;c[14294]=v;c[14297]=k;c[k+4>>2]=v|1}else{if((c[14296]|0)==(b|0)){v=(c[14293]|0)+i|0;c[14293]=v;c[14296]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=57468+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14292]=c[14292]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=57468+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14292]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;zb=w;return v|0}b=57612;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14298]=c[14413];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14403];c[b+4>>2]=c[14404];c[b+8>>2]=c[14405];c[b+12>>2]=c[14406];c[14403]=g;c[14404]=h;c[14406]=0;c[14405]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=57468+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14292]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14295]|0;if((v|0)==0|g>>>0>>0)c[14295]=g;c[14403]=g;c[14404]=h;c[14406]=0;c[14300]=c[14409];c[14299]=-1;c[14304]=57204;c[14303]=57204;c[14306]=57212;c[14305]=57212;c[14308]=57220;c[14307]=57220;c[14310]=57228;c[14309]=57228;c[14312]=57236;c[14311]=57236;c[14314]=57244;c[14313]=57244;c[14316]=57252;c[14315]=57252;c[14318]=57260;c[14317]=57260;c[14320]=57268;c[14319]=57268;c[14322]=57276;c[14321]=57276;c[14324]=57284;c[14323]=57284;c[14326]=57292;c[14325]=57292;c[14328]=57300;c[14327]=57300;c[14330]=57308;c[14329]=57308;c[14332]=57316;c[14331]=57316;c[14334]=57324;c[14333]=57324;c[14336]=57332;c[14335]=57332;c[14338]=57340;c[14337]=57340;c[14340]=57348;c[14339]=57348;c[14342]=57356;c[14341]=57356;c[14344]=57364;c[14343]=57364;c[14346]=57372;c[14345]=57372;c[14348]=57380;c[14347]=57380;c[14350]=57388;c[14349]=57388;c[14352]=57396;c[14351]=57396;c[14354]=57404;c[14353]=57404;c[14356]=57412;c[14355]=57412;c[14358]=57420;c[14357]=57420;c[14360]=57428;c[14359]=57428;c[14362]=57436;c[14361]=57436;c[14364]=57444;c[14363]=57444;c[14366]=57452;c[14365]=57452;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14297]=u;c[14294]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14298]=c[14413]}while(0);b=c[14294]|0;if(b>>>0>m>>>0){t=b-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}}v=ox()|0;c[v>>2]=48;v=0;zb=w;return v|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14295]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14296]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14293]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=57468+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14297]|0)==(j|0)){j=(c[14294]|0)+b|0;c[14294]=j;c[14297]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(j|0)){j=(c[14293]|0)+b|0;c[14293]=j;c[14296]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14291]=c[14291]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=57468+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=57204+(a<<1<<2)|0;b=c[14291]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=57468+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14292]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14299]|0)+-1|0;c[14299]=j;if(j|0)return;a=57620;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14299]=-1;return}function HO(a,b){a=a|0;b=b|0;var d=0;if(a){d=B(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=FO(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;aP(a|0,0,d|0)|0;return a|0}function IO(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=FO(b)|0;return b|0}if(b>>>0>4294967231){b=ox()|0;c[b>>2]=48;b=0;return b|0}d=JO(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=FO(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;_O(d|0,a|0,(e>>>0>>0?e:b)|0)|0;GO(a);b=d;return b|0}function JO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14411]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;KO(k,d);return a|0}if((c[14297]|0)==(i|0)){k=(c[14294]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14297]=e;c[14294]=d;return a|0}if((c[14296]|0)==(i|0)){e=(c[14293]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14293]=d;c[14296]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;KO(i,k);return a|0}return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14296]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14293]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=57468+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14292]=c[14292]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14297]|0)==(i|0)){i=(c[14294]|0)+b|0;c[14294]=i;c[14297]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14296]|0))return;c[14296]=0;c[14293]=0;return}if((c[14296]|0)==(i|0)){i=(c[14293]|0)+b|0;c[14293]=i;c[14296]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14291]=c[14291]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14292]=c[14292]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14296]|0)){c[14293]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=57468+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14292]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function LO(a){a=a|0;var b=0,d=0;b=VO()|0;d=c[b>>2]|0;a=d+a|0;if((a|0)<0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}if(a>>>0>(Ba()|0)>>>0?(Da(a|0)|0)==0:0){d=ox()|0;c[d>>2]=48;d=-1;return d|0}c[b>>2]=a;return d|0}function MO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=B(e,f)|0;d=a>>>16;a=(c>>>16)+(B(e,d)|0)|0;e=b>>>16;b=B(e,f)|0;return (E((a>>>16)+(B(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=MO(e,f)|0;a=F()|0;return (E((B(b,f)|0)+(B(d,e)|0)+a|a&0|0),c|0|0)|0}function OO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (E(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function PO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (E(d|0),a-c>>>0|0)|0}function QO(a){a=a|0;return (a?31-(C(a^a-1)|0)|0:32)|0}function RO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (E(n|0),f)|0}else{if(!g){n=0;f=0;return (E(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (E(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (E(n|0),f)|0}g=h-1|0;if(g&h|0){i=(C(h|0)|0)+33-(C(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (E(o|0),p)|0}else{p=QO(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (E(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (E(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (E(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((QO(i|0)|0)>>>0);return (E(o|0),p)|0}g=(C(i|0)|0)-(C(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (E(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=OO(m|0,l|0,-1,-1)|0;d=F()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;PO(k|0,d|0,e|0,n|0)|0;p=F()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=PO(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=F()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (E(o|0),p)|0}function SO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return RO(a,b,c,d,0)|0}function TO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function UO(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;k=k+1|0;c[a>>2]=k;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=k;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;E(e|0);return d|0}f=f+1|0}e=e*2|0;d=IO(d|0,8*(e+1|0)|0)|0;d=XO(a|0,b|0,d|0,e|0)|0;E(e|0);return d|0}function YO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function ZO(a,b){a=a|0;b=b|0;if(!i){i=a;j=b}}function _O(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Ca(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function $O(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else _O(b,c,d)|0;return b|0}function aP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function bP(a){a=+a;return a>=0.0?+s(a+.5):+A(a-.5)}function cP(a,b){a=a|0;b=b|0;return +Db[a&3](b|0)}function dP(a,b,c){a=a|0;b=b|0;c=c|0;return +Eb[a&1](b|0,c|0)}function eP(a){a=a|0;return Fb[a&1]()|0}function fP(a,b){a=a|0;b=b|0;return Gb[a&127](b|0)|0}function gP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;return Hb[a&1](b|0,+c,d|0,e|0,f|0,g|0)|0}function hP(a,b,c){a=a|0;b=b|0;c=c|0;return Ib[a&63](b|0,c|0)|0}function iP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jb[a&63](b|0,c|0,d|0)|0}function jP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kb[a&15](b|0,c|0,d|0,e|0)|0}function kP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return Lb[a&7](b|0,c|0,d|0,e|0,+f)|0}function lP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Mb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function mP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Nb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function nP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ob[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function oP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Pb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function pP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Qb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function qP(a){a=a|0;Rb[a&1]()}function rP(a,b){a=a|0;b=b|0;Sb[a&255](b|0)}function sP(a,b,c){a=a|0;b=b|0;c=+c;Tb[a&3](b|0,+c)}function tP(a,b,c){a=a|0;b=b|0;c=c|0;Ub[a&63](b|0,c|0)}function uP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Vb[a&3](b|0,c|0,+d)}function vP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wb[a&3](b|0,c|0,d|0)}function wP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xb[a&31](b|0,c|0,d|0,e|0)}function xP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Yb[a&63](b|0,c|0,d|0,e|0,f|0)}function yP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Zb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function zP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;_b[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function AP(a){a=a|0;D(0);return 0.0}function BP(a,b){a=a|0;b=b|0;D(1);return 0.0}function CP(){D(2);return 0}function DP(a){a=a|0;D(3);return 0}function EP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;D(4);return 0}function FP(a,b){a=a|0;b=b|0;D(5);return 0}function GP(a,b,c){a=a|0;b=b|0;c=c|0;D(6);return 0}function HP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(7);return 0}function IP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;D(8);return 0}function JP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(9);return 0}function KP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;D(10);return 0}function LP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(11);return 0}function MP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(12);return 0}function NP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;D(13);return 0}function OP(){D(14)}function PP(a){a=a|0;D(15)}function QP(a,b){a=a|0;b=+b;D(16)}function RP(a,b){a=a|0;b=b|0;D(17)}function SP(a,b,c){a=a|0;b=b|0;c=+c;D(18)}function TP(a,b,c){a=a|0;b=b|0;c=c|0;D(19)}function UP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;D(20)}function VP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;D(21)}function WP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;D(22)}function XP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;D(23)} + +// EMSCRIPTEN_END_FUNCS +var Db=[AP,pr,sr,Cr];var Eb=[BP,ss];var Fb=[CP,lr];var Gb=[DP,pj,kx,rx,_A,ND,OD,QD,RD,aE,bE,dE,eE,aF,gF,lF,mF,rF,sF,NH,UH,VH,WH,XH,YH,ZH,_H,vI,CI,DI,EI,FI,GI,HI,II,qJ,rJ,wJ,BJ,CJ,HJ,MJ,NJ,SJ,XJ,YJ,bK,ZK,_K,aL,pL,qL,sL,XL,YL,cM,dM,iL,jL,lL,yL,zL,BL,ex,bu,FO,dx,Kq,Mq,Tq,Uq,ar,br,cr,hr,ir,vr,xr,zr,Er,Gr,Ir,Ds,Pt,Wt,Xt,Yt,Zt,zu,Bu,Yw,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP];var Hb=[EP,Lx];var Ib=[FP,$l,iq,pq,SD,UD,fE,hE,cF,iF,nF,tF,KL,ML,OL,nM,pM,rM,Le,bx,Nq,Pq,Qq,Rq,Xq,_q,$q,er,fr,gr,nt,Os,Jt,Rt,Au,Cu,Du,Hu,Iu,Ju,Ku,Mu,Nu,Su,Tu,Uu,Vu,Wu,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP,FP];var Jb=[GP,lx,qx,fy,FA,fB,KD,PD,TD,ZD,cE,gE,bF,hF,AF,HF,NK,SK,LL,NL,QL,jM,oM,qM,tM,zw,Iq,Wq,Yq,Zq,dr,ht,Ys,Ew,Fw,Ez,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GP];var Kb=[HP,mx,sx,PL,kM,lM,mM,sM,wt,Gw,Hw,HP,HP,HP,HP,HP];var Lb=[IP,oH,pH,FH,GH,IP,IP,IP];var Mb=[JP,yF,FF,jH,kH,mH,qH,AH,BH,DH,HH,YK,$K,oL,rL,RL,uM,hL,kL,xL,AL,Lw,Mw,JP,JP,JP,JP,JP,JP,JP,JP,JP];var Nb=[KP,BK,HK,KP];var Ob=[LP,MF,NF,OF,PF,QF,RF,SF,TF,UF,VF,WF,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,lH,nH,CH,EH,OH,PH,QH,RH,SH,wI,xI,yI,zI,AI,CK,IK,Iw,Jw,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP];var Pb=[MP,eJ,kJ,gK,hK,rK,sK,MP];var Qb=[NP,TH,BI,WK,XK,mL,nL,fL,gL,vL,wL,NP,NP,NP,NP,NP];var Rb=[OP,wA];var Sb=[PP,Qi,Ri,Ti,Ui,nj,oj,ZN,Zl,_l,am,gq,hq,jq,nq,oq,qq,BA,CA,DA,EA,OA,YA,ZA,dB,eB,gB,DD,FD,HD,ID,WD,XD,mE,nE,oE,pE,rE,sE,tE,uE,wE,xE,yE,zE,BE,CE,DE,EE,_E,eF,jF,pF,vF,wF,xF,DF,EF,KF,LF,GG,HG,hH,iH,yH,zH,LH,MH,tI,uI,cJ,dJ,iJ,jJ,oJ,pJ,zJ,AJ,KJ,LJ,VJ,WJ,eK,fK,pK,qK,zK,AK,FK,GK,LK,MK,QK,RK,CF,eL,VK,tL,uL,FL,GL,IL,JL,VL,WL,aM,bM,hM,iM,vM,wM,xM,hf,ax,jr,Ot,St,Vt,du,eu,pw,qw,fw,$v,Rv,Jv,Yu,Qu,Ru,Fu,Gu,wu,xu,iw,lw,Kw,Ow,Zw,_w,$w,fx,hx,jx,cG,eG,iK,GO,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP,PP];var Tb=[QP,nr,rr,Ar];var Ub=[RP,JD,YD,$E,fF,kF,qF,sJ,tJ,uJ,vJ,xJ,yJ,DJ,EJ,FJ,GJ,IJ,JJ,OJ,PJ,QJ,RJ,TJ,UJ,ZJ,_J,$J,aK,cK,dK,PK,UK,ZL,_L,$L,eM,fM,gM,Nt,tr,wr,yr,Dr,Fr,Hr,Is,Qt,ow,ew,Fv,su,Nw,gx,ix,Mx,RP,RP,RP,RP,RP,RP,RP,RP];var Vb=[SP,xs,gs,SP];var Wb=[TP,Ww,ns,TP];var Xb=[UP,IA,RA,jB,MD,$D,zF,GF,Ue,bw,dw,Lv,Mv,Nv,Ov,Pv,tu,uu,vu,hw,jw,kw,sw,tw,uw,vw,ww,UP,UP,UP,UP,UP];var Yb=[VP,HA,QA,iB,Sv,Tv,Uv,Vv,Wv,Xv,Yv,Zv,_v,Dv,Cv,Bv,Av,zv,yv,xv,wv,vv,uv,tv,sv,rv,qv,pv,ov,nv,mv,lv,kv,jv,iv,hv,gv,fv,ev,dv,cv,bv,av,$u,Ev,_u,Zu,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP,VP];var Zb=[WP,GA,PA,hB,LD,_D,OK,TK];var _b=[XP,aw,cw,Kv,Gv,Hv,Iv,XP];return{__GLOBAL__I_000101:SE,__GLOBAL__sub_I_ARToolKitJS_cpp:Dq,__GLOBAL__sub_I_bind_cpp:EB,__GLOBAL__sub_I_iostream_cpp:TE,__ZSt18uncaught_exceptionv:yD,___cxa_can_catch:wB,___cxa_is_pointer_type:xB,___embind_register_native_and_builtin_types:HB,___emscripten_environ_constructor:zB,___errno_location:ox,___getTypeName:tD,___muldi3:NO,___udivdi3:SO,__get_daylight:BB,__get_environ:DB,__get_timezone:CB,__get_tzname:AB,_bitshift64Lshr:TO,_bitshift64Shl:UO,_emscripten_get_sbrk_ptr:VO,_emscripten_replace_memory:Cb,_free:GO,_i64Add:OO,_i64Subtract:PO,_llvm_bswap_i32:WO,_malloc:FO,_memcpy:_O,_memmove:$O,_memset:aP,_realloc:IO,_roundf:bP,_saveSetjmp:XO,_setThrew:ZO,_testSetjmp:YO,dynCall_di:cP,dynCall_dii:dP,dynCall_i:eP,dynCall_ii:fP,dynCall_iidiiii:gP,dynCall_iii:hP,dynCall_iiii:iP,dynCall_iiiii:jP,dynCall_iiiiid:kP,dynCall_iiiiii:lP,dynCall_iiiiiid:mP,dynCall_iiiiiii:nP,dynCall_iiiiiiii:oP,dynCall_iiiiiiiii:pP,dynCall_v:qP,dynCall_vi:rP,dynCall_vid:sP,dynCall_vii:tP,dynCall_viid:uP,dynCall_viii:vP,dynCall_viiii:wP,dynCall_viiiii:xP,dynCall_viiiiii:yP,dynCall_viiiiiii:zP,establishStackSpace:cc,stackAlloc:$b,stackRestore:bc,stackSave:ac}}) + + +// EMSCRIPTEN_END_ASM +(asmGlobalArg,asmLibraryArg,buffer);var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_ARToolKitJS_cpp=Module["__GLOBAL__sub_I_ARToolKitJS_cpp"]=asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var __ZSt18uncaught_exceptionv=Module["__ZSt18uncaught_exceptionv"]=asm["__ZSt18uncaught_exceptionv"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=asm["___embind_register_native_and_builtin_types"];var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=asm["___emscripten_environ_constructor"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var __get_daylight=Module["__get_daylight"]=asm["__get_daylight"];var __get_environ=Module["__get_environ"]=asm["__get_environ"];var __get_timezone=Module["__get_timezone"]=asm["__get_timezone"];var __get_tzname=Module["__get_tzname"]=asm["__get_tzname"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_get_sbrk_ptr=Module["_emscripten_get_sbrk_ptr"]=asm["_emscripten_get_sbrk_ptr"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _roundf=Module["_roundf"]=asm["_roundf"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _setThrew=Module["_setThrew"]=asm["_setThrew"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidiiii=Module["dynCall_iidiiii"]=asm["dynCall_iidiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status)}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); + +var THREEx = THREEx || {} + +THREEx.ArBaseControls = function(object3d){ + this.id = THREEx.ArBaseControls.id++ + + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + // Events to honor + // this.dispatchEvent({ type: 'becameVisible' }) + // this.dispatchEvent({ type: 'markerVisible' }) // replace markerFound + // this.dispatchEvent({ type: 'becameUnVisible' }) +} + +THREEx.ArBaseControls.id = 0 + +Object.assign( THREEx.ArBaseControls.prototype, THREE.EventDispatcher.prototype ); + +////////////////////////////////////////////////////////////////////////////// +// Functions +////////////////////////////////////////////////////////////////////////////// +/** + * error catching function for update() + */ +THREEx.ArBaseControls.prototype.update = function(){ + console.assert(false, 'you need to implement your own update') +} + +/** + * error catching function for name() + */ +THREEx.ArBaseControls.prototype.name = function(){ + console.assert(false, 'you need to implement your own .name()') + return 'Not yet implemented - name()' +} +var THREEx = THREEx || {} + +// TODO this is useless - prefere arjs-HitTesting.js + +/** + * - maybe support .onClickFcts in each object3d + * - seems an easy light layer for clickable object + * - up to + */ +THREEx.ARClickability = function (sourceElement) { + this._sourceElement = sourceElement + // Create cameraPicking + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + this._cameraPicking = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 100); + + console.warn('THREEx.ARClickability works only in modelViewMatrix') + console.warn('OBSOLETE OBSOLETE! instead use THREEx.HitTestingPlane') +} + +THREEx.ARClickability.prototype.onResize = function () { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + var fullWidth = parseInt(sourceElement.style.width) + var fullHeight = parseInt(sourceElement.style.height) + cameraPicking.aspect = fullWidth / fullHeight; + cameraPicking.updateProjectionMatrix(); +} + +THREEx.ARClickability.prototype.computeIntersects = function (domEvent, objects) { + var sourceElement = this._sourceElement + var cameraPicking = this._cameraPicking + + // compute mouse coordinatge with [-1,1] + var eventCoords = new THREE.Vector3(); + eventCoords.x = (domEvent.layerX / parseInt(sourceElement.style.width)) * 2 - 1; + eventCoords.y = - (domEvent.layerY / parseInt(sourceElement.style.height)) * 2 + 1; + + // compute intersections between eventCoords and pickingPlane + var raycaster = new THREE.Raycaster(); + raycaster.setFromCamera(eventCoords, cameraPicking); + var intersects = raycaster.intersectObjects(objects) + + return intersects +} + +THREEx.ARClickability.prototype.update = function () { + +} +var THREEx = THREEx || {} +/** + * - videoTexture + * - cloakWidth + * - cloakHeight + * - cloakSegmentsHeight + * - remove all mentions of cache, for cloak + */ +THREEx.ArMarkerCloak = function(videoTexture){ + var updateInShaderEnabled = true + + // build cloakMesh + // TODO if webgl2 use repeat warp, and not multi segment, this will reduce the geometry to draw + var geometry = new THREE.PlaneGeometry(1.3+0.25,1.85+0.25, 1, 8).translate(0,-0.3,0) + var material = new THREE.ShaderMaterial( { + vertexShader: THREEx.ArMarkerCloak.vertexShader, + fragmentShader: THREEx.ArMarkerCloak.fragmentShader, + transparent: true, + uniforms: { + texture: { + value: videoTexture + }, + opacity: { + value: 0.5 + } + }, + defines: { + updateInShaderEnabled: updateInShaderEnabled ? 1 : 0, + } + }); + + var cloakMesh = new THREE.Mesh( geometry, material ); + cloakMesh.rotation.x = -Math.PI/2 + this.object3d = cloakMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var xMin = -0.65 + var xMax = 0.65 + var yMin = 0.65 + 0.1 + var yMax = 0.95 + 0.1 + + ////////////////////////////////////////////////////////////////////////////// + // originalsFaceVertexUvs + ////////////////////////////////////////////////////////////////////////////// + var originalsFaceVertexUvs = [[]] + + // build originalsFaceVertexUvs array + for(var faceIndex = 0; faceIndex < cloakMesh.geometry.faces.length; faceIndex ++ ){ + originalsFaceVertexUvs[0][faceIndex] = [] + originalsFaceVertexUvs[0][faceIndex][0] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][1] = new THREE.Vector2() + originalsFaceVertexUvs[0][faceIndex][2] = new THREE.Vector2() + } + + // set values in originalsFaceVertexUvs + for(var i = 0; i < cloakMesh.geometry.parameters.heightSegments/2; i ++ ){ + // one segment height - even row - normale orientation + originalsFaceVertexUvs[0][i*4+0][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][1].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+0][2].set( xMax/2+0.5, yMax/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+1][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][1].set( xMax/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+1][2].set( xMax/2+0.5, yMax/2+0.5 ) + + // one segment height - odd row - mirror-y orientation + originalsFaceVertexUvs[0][i*4+2][0].set( xMin/2+0.5, yMin/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][1].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+2][2].set( xMax/2+0.5, yMin/2+0.5 ) + + originalsFaceVertexUvs[0][i*4+3][0].set( xMin/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][1].set( xMax/2+0.5, yMax/2+0.5 ) + originalsFaceVertexUvs[0][i*4+3][2].set( xMax/2+0.5, yMin/2+0.5 ) + } + + if( updateInShaderEnabled === true ){ + cloakMesh.geometry.faceVertexUvs = originalsFaceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + var originalOrthoVertices = [] + originalOrthoVertices.push( new THREE.Vector3(xMin, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMax, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMin, yMin, 0)) + originalOrthoVertices.push( new THREE.Vector3(xMax, yMin, 0)) + + // build debugMesh + var material = new THREE.MeshNormalMaterial({ + transparent : true, + opacity: 0.5, + side: THREE.DoubleSide + }); + var geometry = new THREE.PlaneGeometry(1,1); + var orthoMesh = new THREE.Mesh(geometry, material); + this.orthoMesh = orthoMesh + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + + this.update = function(modelViewMatrix, cameraProjectionMatrix){ + updateOrtho(modelViewMatrix, cameraProjectionMatrix) + + if( updateInShaderEnabled === false ){ + updateUvs(modelViewMatrix, cameraProjectionMatrix) + } + } + + return + + // update cloakMesh + function updateUvs(modelViewMatrix, cameraProjectionMatrix){ + var transformedUv = new THREE.Vector3() + originalsFaceVertexUvs[0].forEach(function(faceVertexUvs, faceIndex){ + faceVertexUvs.forEach(function(originalUv, uvIndex){ + // set transformedUv - from UV coord to clip coord + transformedUv.x = originalUv.x * 2.0 - 1.0; + transformedUv.y = originalUv.y * 2.0 - 1.0; + transformedUv.z = 0 + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // set back from clip coord to Uv coord + transformedUv.x = transformedUv.x / 2.0 + 0.5; + transformedUv.y = transformedUv.y / 2.0 + 0.5; + // copy the trasnformedUv into the geometry + cloakMesh.geometry.faceVertexUvs[0][faceIndex][uvIndex].set(transformedUv.x, transformedUv.y) + }) + }) + + // cloakMesh.geometry.faceVertexUvs = faceVertexUvs + cloakMesh.geometry.uvsNeedUpdate = true + } + + // update orthoMesh + function updateOrtho(modelViewMatrix, cameraProjectionMatrix){ + // compute transformedUvs + var transformedUvs = [] + originalOrthoVertices.forEach(function(originalOrthoVertices, index){ + var transformedUv = originalOrthoVertices.clone() + // apply modelViewMatrix and projectionMatrix + transformedUv.applyMatrix4( modelViewMatrix ) + transformedUv.applyMatrix4( cameraProjectionMatrix ) + // apply perspective + transformedUv.x /= transformedUv.z + transformedUv.y /= transformedUv.z + // store it + transformedUvs.push(transformedUv) + }) + + // change orthoMesh vertices + for(var i = 0; i < transformedUvs.length; i++){ + orthoMesh.geometry.vertices[i].copy(transformedUvs[i]) + } + orthoMesh.geometry.computeBoundingSphere() + orthoMesh.geometry.verticesNeedUpdate = true + } + +} + +////////////////////////////////////////////////////////////////////////////// +// Shaders +////////////////////////////////////////////////////////////////////////////// + +THREEx.ArMarkerCloak.markerSpaceShaderFunction = '\n'+ +' vec2 transformUvToMarkerSpace(vec2 originalUv){\n'+ +' vec3 transformedUv;\n'+ +' // set transformedUv - from UV coord to clip coord\n'+ +' transformedUv.x = originalUv.x * 2.0 - 1.0;\n'+ +' transformedUv.y = originalUv.y * 2.0 - 1.0;\n'+ +' transformedUv.z = 0.0;\n'+ +'\n'+ +' // apply modelViewMatrix and projectionMatrix\n'+ +' transformedUv = (projectionMatrix * modelViewMatrix * vec4( transformedUv, 1.0 ) ).xyz;\n'+ +'\n'+ +' // apply perspective\n'+ +' transformedUv.x /= transformedUv.z;\n'+ +' transformedUv.y /= transformedUv.z;\n'+ +'\n'+ +' // set back from clip coord to Uv coord\n'+ +' transformedUv.x = transformedUv.x / 2.0 + 0.5;\n'+ +' transformedUv.y = transformedUv.y / 2.0 + 0.5;\n'+ +'\n'+ +' // return the result\n'+ +' return transformedUv.xy;\n'+ +' }' + +THREEx.ArMarkerCloak.vertexShader = THREEx.ArMarkerCloak.markerSpaceShaderFunction + +' varying vec2 vUv;\n'+ +'\n'+ +' void main(){\n'+ +' // pass the UV to the fragment\n'+ +' #if (updateInShaderEnabled == 1)\n'+ +' vUv = transformUvToMarkerSpace(uv);\n'+ +' #else\n'+ +' vUv = uv;\n'+ +' #endif\n'+ +'\n'+ +' // compute gl_Position\n'+ +' vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n'+ +' gl_Position = projectionMatrix * mvPosition;\n'+ +' }'; + +THREEx.ArMarkerCloak.fragmentShader = '\n'+ +' varying vec2 vUv;\n'+ +' uniform sampler2D texture;\n'+ +' uniform float opacity;\n'+ +'\n'+ +' void main(void){\n'+ +' vec3 color = texture2D( texture, vUv ).rgb;\n'+ +'\n'+ +' gl_FragColor = vec4( color, opacity);\n'+ +' }' +var ARjs = ARjs || {} +var THREEx = THREEx || {} + +ARjs.MarkerControls = THREEx.ArMarkerControls = function (context, object3d, parameters) { + var _this = this + + THREEx.ArBaseControls.call(this, object3d) + + this.context = context + // handle default parameters + this.parameters = { + // size of the marker in meter + size: 1, + // type of marker - ['pattern', 'barcode', 'nft', 'unknown' ] + type: 'unknown', + // url of the pattern - IIF type='pattern' + patternUrl: null, + // value of the barcode - IIF type='barcode' + barcodeValue: null, + // url of the descriptors of image - IIF type='nft' + descriptorsUrl: null, + // change matrix mode - [modelViewMatrix, cameraTransformMatrix] + changeMatrixMode: 'modelViewMatrix', + // minimal confidence in the marke recognition - between [0, 1] - default to 1 + minConfidence: 0.6, + // turn on/off camera smoothing + smooth: false, + // number of matrices to smooth tracking over, more = smoother but slower follow + smoothCount: 5, + // distance tolerance for smoothing, if smoothThreshold # of matrices are under tolerance, tracking will stay still + smoothTolerance: 0.01, + // threshold for smoothing, will keep still unless enough matrices are over tolerance + smoothThreshold: 2, + } + + // sanity check + var possibleValues = ['pattern', 'barcode', 'nft', 'unknown'] + console.assert(possibleValues.indexOf(this.parameters.type) !== -1, 'illegal value', this.parameters.type) + var possibleValues = ['modelViewMatrix', 'cameraTransformMatrix'] + console.assert(possibleValues.indexOf(this.parameters.changeMatrixMode) !== -1, 'illegal value', this.parameters.changeMatrixMode) + + // create the marker Root + this.object3d = object3d + this.object3d.matrixAutoUpdate = false; + this.object3d.visible = false + + ////////////////////////////////////////////////////////////////////////////// + // setParameters + ////////////////////////////////////////////////////////////////////////////// + setParameters(parameters) + function setParameters(parameters) { + if (parameters === undefined) return + for (var key in parameters) { + var newValue = parameters[key] + + if (newValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' parameter is undefined.") + continue + } + + var currentValue = _this.parameters[key] + + if (currentValue === undefined) { + console.warn("THREEx.ArMarkerControls: '" + key + "' is not a property of this material.") + continue + } + + _this.parameters[key] = newValue + } + } + + if (this.parameters.smooth) { + this.smoothMatrices = []; // last DEBOUNCE_COUNT modelViewMatrix + } + + ////////////////////////////////////////////////////////////////////////////// + // Code Separator + ////////////////////////////////////////////////////////////////////////////// + // add this marker to artoolkitsystem + // TODO rename that .addMarkerControls + context.addMarker(this) + + if (_this.context.parameters.trackingBackend === 'artoolkit') { + this._initArtoolkit() + } else console.assert(false) +} + +ARjs.MarkerControls.prototype = Object.create(THREEx.ArBaseControls.prototype); +ARjs.MarkerControls.prototype.constructor = THREEx.ArMarkerControls; + +ARjs.MarkerControls.prototype.dispose = function () { + this.context.removeMarker(this) +} + +////////////////////////////////////////////////////////////////////////////// +// update controls with new modelViewMatrix +////////////////////////////////////////////////////////////////////////////// + +/** + * When you actually got a new modelViewMatrix, you need to perfom a whole bunch + * of things. it is done here. + */ +ARjs.MarkerControls.prototype.updateWithModelViewMatrix = function (modelViewMatrix) { + var markerObject3D = this.object3d; + + // mark object as visible + markerObject3D.visible = true + + if (this.context.parameters.trackingBackend === 'artoolkit') { + // apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one + var tmpMatrix = new THREE.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix) + tmpMatrix.multiply(modelViewMatrix) + + modelViewMatrix.copy(tmpMatrix) + } else { + console.assert(false) + } + + // change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker + var markerAxisTransformMatrix = new THREE.Matrix4().makeRotationX(Math.PI/2) + modelViewMatrix.multiply(markerAxisTransformMatrix) + + var renderReqd = false; + + // change markerObject3D.matrix based on parameters.changeMatrixMode + if (this.parameters.changeMatrixMode === 'modelViewMatrix') { + if (this.parameters.smooth) { + var sum, + i, j, + averages, // average values for matrix over last smoothCount + exceedsAverageTolerance = 0; + + this.smoothMatrices.push(modelViewMatrix.elements.slice()); // add latest + + if (this.smoothMatrices.length < (this.parameters.smoothCount + 1)) { + markerObject3D.matrix.copy(modelViewMatrix); // not enough for average + } else { + this.smoothMatrices.shift(); // remove oldest entry + averages = []; + + for (i in modelViewMatrix.elements) { // loop over entries in matrix + sum = 0; + for (j in this.smoothMatrices) { // calculate average for this entry + sum += this.smoothMatrices[j][i]; + } + averages[i] = sum / this.parameters.smoothCount; + // check how many elements vary from the average by at least AVERAGE_MATRIX_TOLERANCE + if (Math.abs(averages[i] - modelViewMatrix.elements[i]) >= this.parameters.smoothTolerance) { + exceedsAverageTolerance++; + } + } + + // if moving (i.e. at least AVERAGE_MATRIX_THRESHOLD entries are over AVERAGE_MATRIX_TOLERANCE) + if (exceedsAverageTolerance >= this.parameters.smoothThreshold) { + // then update matrix values to average, otherwise, don't render to minimize jitter + for (i in modelViewMatrix.elements) { + modelViewMatrix.elements[i] = averages[i]; + } + markerObject3D.matrix.copy(modelViewMatrix); + renderReqd = true; // render required in animation loop + } + } + } else { + markerObject3D.matrix.copy(modelViewMatrix) + } + } else if (this.parameters.changeMatrixMode === 'cameraTransformMatrix') { + markerObject3D.matrix.getInverse(modelViewMatrix) + } else { + console.assert(false) + } + + // decompose - the matrix into .position, .quaternion, .scale + + markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale) + + // dispatchEvent + this.dispatchEvent({ type: 'markerFound' }); + + return renderReqd; +} + +////////////////////////////////////////////////////////////////////////////// +// utility functions +////////////////////////////////////////////////////////////////////////////// + +ARjs.MarkerControls.prototype.name = function () { + var name = ''; + name += this.parameters.type; + + if (this.parameters.type === 'pattern') { + var url = this.parameters.patternUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else if (this.parameters.type === 'barcode') { + name += ' - ' + this.parameters.barcodeValue; + } else if (this.parameters.type === 'nft') { + var url = this.parameters.descriptorsUrl; + var basename = url.replace(/^.*\//g, ''); + name += ' - ' + basename; + } else { + console.assert(false, 'no .name() implemented for this marker controls'); + } + + return name; +} + +////////////////////////////////////////////////////////////////////////////// +// init for Artoolkit +////////////////////////////////////////////////////////////////////////////// +ARjs.MarkerControls.prototype._initArtoolkit = function () { + var _this = this + + var artoolkitMarkerId = null + + var delayedInitTimerId = setInterval(() => { + // check if arController is init + var arController = _this.context.arController + if (arController === null) return + // stop looping if it is init + clearInterval(delayedInitTimerId) + delayedInitTimerId = null + // launch the _postInitArtoolkit + postInit() + }, 1000 / 50) + + return + + function postInit() { + // check if arController is init + var arController = _this.context.arController + console.assert(arController !== null) + + // start tracking this pattern + if (_this.parameters.type === 'pattern') { + arController.loadMarker(_this.parameters.patternUrl, function (markerId) { + artoolkitMarkerId = markerId + arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size); + }); + } else if (_this.parameters.type === 'barcode') { + artoolkitMarkerId = _this.parameters.barcodeValue + arController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size); + } else if (_this.parameters.type === 'nft') { + // use workers as default + handleNFT(_this.parameters.descriptorsUrl, arController); + } else if (_this.parameters.type === 'unknown') { + artoolkitMarkerId = null + } else { + console.log(false, 'invalid marker type', _this.parameters.type) + } + + // listen to the event + arController.addEventListener('getMarker', function (event) { + if (event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idPatt === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode') { + if (artoolkitMarkerId === null) return + if (event.data.marker.idMatrix === artoolkitMarkerId) onMarkerFound(event) + } else if (event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown') { + onMarkerFound(event); + } + }) + } + + function setMatrix(matrix, value) { + var array = []; + for (var key in value) { + array[key] = value[key]; + } + if (typeof matrix.elements.set === "function") { + matrix.elements.set(array); + } else { + matrix.elements = [].slice.call(array); + } + }; + + function handleNFT(descriptorsUrl, arController) { + // create a Worker to handle loading of NFT marker and tracking of it + var workerBlob = new Blob( + [workerRunner.toString().replace(/^function .+\{?|\}$/g, '')], + { type: 'text/js-worker' } + ); + var workerBlobUrl = URL.createObjectURL(workerBlob); + var worker = new Worker(workerBlobUrl); + + window.addEventListener('arjs-video-loaded', function (ev) { + var video = ev.detail.component; + var vw = video.clientWidth; + var vh = video.clientHeight; + + var pscale = 320 / Math.max(vw, vh / 3 * 4); + + w = vw * pscale; + h = vh * pscale; + pw = Math.max(w, h / 3 * 4); + ph = Math.max(h, w / 4 * 3); + ox = (pw - w) / 2; + oy = (ph - h) / 2; + + arController.canvas.style.clientWidth = pw + "px"; + arController.canvas.style.clientHeight = ph + "px"; + arController.canvas.width = pw; + arController.canvas.height = ph; + + var context_process = arController.canvas.getContext('2d'); + + function process() { + context_process.fillStyle = "black"; + context_process.fillRect(0, 0, pw, ph); + context_process.drawImage(video, 0, 0, vw, vh, ox, oy, w, h); + + var imageData = context_process.getImageData(0, 0, pw, ph); + worker.postMessage({ type: "process", imagedata: imageData }, [imageData.data.buffer]); + } + + // initialize the worker + worker.postMessage({ + type: 'init', + pw: pw, + ph: ph, + marker: descriptorsUrl, + param: arController.cameraParam.src, + }); + + worker.onmessage = function (ev) { + if (ev && ev.data && ev.data.type === 'endLoading') { + var loader = document.querySelector('.arjs-loader'); + if (loader) { + loader.remove(); + } + var endLoadingEvent = new Event('arjs-nft-loaded'); + window.dispatchEvent(endLoadingEvent); + } + + if (ev && ev.data && ev.data.type === 'loaded') { + var proj = JSON.parse(ev.data.proj); + var ratioW = pw / w; + var ratioH = ph / h; + proj[0] *= ratioW; + proj[4] *= ratioW; + proj[8] *= ratioW; + proj[12] *= ratioW; + proj[1] *= ratioH; + proj[5] *= ratioH; + proj[9] *= ratioH; + proj[13] *= ratioH; + + setMatrix(_this.object3d.matrix, proj); + } + + if (ev && ev.data && ev.data.type === 'found') { + var matrix = JSON.parse(ev.data.matrix); + + onMarkerFound({ + data: { + type: artoolkit.NFT_MARKER, + matrix: matrix, + msg: ev.data.type, + } + }); + + _this.context.arController.showObject = true; + } else { + _this.context.arController.showObject = false; + } + + process(); + }; + + }); + + + + }; + + function workerRunner() { + // continuing 'workerRunner' function at treex-armarkercontrols-nft-end.js file + // see the makefile of three.js folder to better understand the division of this function between two files +var Module=typeof Module!=="undefined"?Module:{};(function(){"use strict";var scope;if(typeof window!=="undefined"){scope=window}else{scope=self}if(scope.artoolkit_wasm_url){var downloadWasm=function(url){return new Promise(function(resolve,reject){var wasmXHR=new XMLHttpRequest;wasmXHR.open("GET",url,true);wasmXHR.responseType="arraybuffer";wasmXHR.onload=function(){resolve(wasmXHR.response)};wasmXHR.onerror=function(){reject("error "+wasmXHR.status)};wasmXHR.send(null)})};var wasm=downloadWasm(scope.artoolkit_wasm_url);Module.instantiateWasm=function(imports,successCallback){console.log("instantiateWasm: instantiating synchronously");wasm.then(function(wasmBinary){console.log("wasm download finished, begin instantiating");var wasmInstantiate=WebAssembly.instantiate(new Uint8Array(wasmBinary),imports).then(function(output){console.log("wasm instantiation succeeded");successCallback(output.instance)}).catch(function(e){console.log("wasm instantiation failed! "+e)})});return{}}}var ARController=function(width,height,cameraPara){this.id=undefined;var w=width,h=height;this.orientation="landscape";this.listeners={};if(typeof width!=="number"){var image=width;cameraPara=height;w=image.videoWidth||image.width;h=image.videoHeight||image.height;this.image=image}this.width=w;this.height=h;this.nftMarkerCount=0;this.defaultMarkerWidth=1;this.patternMarkers={};this.barcodeMarkers={};this.nftMarkers={};this.transform_mat=new Float32Array(16);this.transformGL_RH=new Float64Array(16);if(typeof document!=="undefined"){this.canvas=document.createElement("canvas");this.canvas.width=w;this.canvas.height=h;this.ctx=this.canvas.getContext("2d")}this.videoWidth=w;this.videoHeight=h;this.videoSize=this.videoWidth*this.videoHeight;this.framepointer=null;this.framesize=null;this.dataHeap=null;this.videoLuma=null;this.camera_mat=null;this.marker_transform_mat=null;this.videoLumaPointer=null;this._bwpointer=undefined;this._lumaCtx=undefined;if(typeof cameraPara==="string"){this.cameraParam=new ARCameraParam(cameraPara,function(){this._initialize()}.bind(this),function(err){console.error("ARController: Failed to load ARCameraParam",err);this.onload(err)}.bind(this))}else{this.cameraParam=cameraPara;this._initialize()}};ARController.prototype.dispose=function(){if(this.id>-1){artoolkit.teardown(this.id)}if(this.image&&this.image.srcObject){ARController._teardownVideo(this.image)}for(var t in this){this[t]=null}};ARController.prototype.process=function(image){var result=this.detectMarker(image);if(result!=0){console.error("detectMarker error: "+result)}var markerNum=this.getMarkerNum();var k,o;for(k in this.patternMarkers){o=this.patternMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.barcodeMarkers){o=this.barcodeMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(k in this.nftMarkers){o=this.nftMarkers[k];o.inPrevious=o.inCurrent;o.inCurrent=false}for(var i=0;i-1&&(markerInfo.id===markerInfo.idPatt||markerInfo.idMatrix===-1)){visible=this.trackPatternMarkerId(markerInfo.idPatt);markerType=artoolkit.PATTERN_MARKER;if(markerInfo.dir!==markerInfo.dirPatt){this.setMarkerInfoDir(i,markerInfo.dirPatt)}}else if(markerInfo.idMatrix>-1){visible=this.trackBarcodeMarkerId(markerInfo.idMatrix);markerType=artoolkit.BARCODE_MARKER;if(markerInfo.dir!==markerInfo.dirMatrix){this.setMarkerInfoDir(i,markerInfo.dirMatrix)}}if(markerType!==artoolkit.UNKNOWN_MARKER&&visible.inPrevious){this.getTransMatSquareCont(i,visible.markerWidth,visible.matrix,visible.matrix)}else{this.getTransMatSquare(i,visible.markerWidth,visible.matrix)}visible.inCurrent=true;this.transMatToGLMat(visible.matrix,this.transform_mat);this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);this.dispatchEvent({name:"getMarker",target:this,data:{index:i,type:markerType,marker:markerInfo,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var nftMarkerCount=this.nftMarkerCount;this.detectNFTMarker();var MARKER_LOST_TIME=200;for(var i=0;i=0){visible=true;this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:i,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}}if(visible){for(var j=0;j-1){this.listeners[name].splice(index,1)}}};ARController.prototype.dispatchEvent=function(event){var listeners=this.listeners[event.name];if(listeners){for(var i=0;i>3;q+=4}}if(this.dataHeap){this.dataHeap.set(data);return true}return false};ARController.prototype._debugMarker=function(marker){var vertex,pos;vertex=marker.vertex;var ctx=this.ctx;ctx.strokeStyle="red";ctx.beginPath();ctx.moveTo(vertex[0][0],vertex[0][1]);ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[2][0],vertex[2][1]);ctx.lineTo(vertex[3][0],vertex[3][1]);ctx.stroke();ctx.strokeStyle="green";ctx.beginPath();ctx.lineTo(vertex[1][0],vertex[1][1]);ctx.lineTo(vertex[2][0],vertex[2][1]);ctx.stroke();ctx.beginPath();ctx.moveTo(vertex[3][0],vertex[3][1]);ctx.lineTo(vertex[0][0],vertex[0][1]);ctx.stroke();pos=marker.pos;ctx.beginPath();ctx.arc(pos[0],pos[1],8,0,Math.PI*2);ctx.fillStyle="red";ctx.fill()};ARController.getUserMedia=function(configuration){var facing=configuration.facingMode||"environment";var onSuccess=configuration.onSuccess;var onError=configuration.onError||function(err){console.error("ARController.getUserMedia",err)};var video=document.createElement("video");var readyToPlay=false;var eventNames=["touchstart","touchend","touchmove","touchcancel","click","mousedown","mouseup","mousemove","keydown","keyup","keypress","scroll"];var play=function(){if(readyToPlay){video.play().then(function(){onSuccess(video)}).catch(function(error){onError(error);ARController._teardownVideo(video)});if(!video.paused){eventNames.forEach(function(eventName){window.removeEventListener(eventName,play,true)})}}};eventNames.forEach(function(eventName){window.addEventListener(eventName,play,true)});var success=function(stream){if(window.URL.createObjectURL){try{video.srcObject=stream}catch(ex){}}video.srcObject=stream;readyToPlay=true;video.autoplay=true;video.playsInline=true;play()};var constraints={};var mediaDevicesConstraints={};if(configuration.width){mediaDevicesConstraints.width=configuration.width;if(typeof configuration.width==="object"){if(configuration.width.max){constraints.maxWidth=configuration.width.max}if(configuration.width.min){constraints.minWidth=configuration.width.min}}else{constraints.maxWidth=configuration.width}}if(configuration.height){mediaDevicesConstraints.height=configuration.height;if(typeof configuration.height==="object"){if(configuration.height.max){constraints.maxHeight=configuration.height.max}if(configuration.height.min){constraints.minHeight=configuration.height.min}}else{constraints.maxHeight=configuration.height}}mediaDevicesConstraints.facingMode=facing;mediaDevicesConstraints.deviceId=configuration.deviceId;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var hdConstraints={audio:false,video:constraints};if(navigator.mediaDevices||window.MediaStreamTrack.getSources){if(navigator.mediaDevices){navigator.mediaDevices.getUserMedia({audio:false,video:mediaDevicesConstraints}).then(success,onError)}else{window.MediaStreamTrack.getSources(function(sources){var facingDir=mediaDevicesConstraints.facingMode;if(facing&&facing.exact){facingDir=facing.exact}for(var i=0;i-1){writeStringToFS(filename,url,writeCallback)}else{ajax(url,filename,writeCallback,errorCallback)}}function writeStringToFS(target,string,callback){var byteArray=new Uint8Array(string.length);for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=57888,DYNAMIC_BASE=5300768,DYNAMICTOP_PTR=57696;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;if(Module["buffer"]){buffer=Module["buffer"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw what}var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;var ASM_CONSTS=[function($0,$1,$2,$3,$4,$5){if(!artoolkit["frameMalloc"]){artoolkit["frameMalloc"]={}}var frameMalloc=artoolkit["frameMalloc"];frameMalloc["framepointer"]=$1;frameMalloc["framesize"]=$2;frameMalloc["camera"]=$3;frameMalloc["transform"]=$4;frameMalloc["videoLumaPointer"]=$5},function($0,$1,$2,$3){if(!artoolkit["multiEachMarkerInfo"]){artoolkit["multiEachMarkerInfo"]={}}var multiEachMarker=artoolkit["multiEachMarkerInfo"];multiEachMarker["visible"]=$0;multiEachMarker["pattId"]=$1;multiEachMarker["pattType"]=$2;multiEachMarker["width"]=$3},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32){var $a=arguments;var i=12;if(!artoolkit["markerInfo"]){artoolkit["markerInfo"]={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]}}var markerInfo=artoolkit["markerInfo"];markerInfo["area"]=$0;markerInfo["id"]=$1;markerInfo["idPatt"]=$2;markerInfo["idMatrix"]=$3;markerInfo["dir"]=$4;markerInfo["dirPatt"]=$5;markerInfo["dirMatrix"]=$6;markerInfo["cf"]=$7;markerInfo["cfPatt"]=$8;markerInfo["cfMatrix"]=$9;markerInfo["pos"][0]=$10;markerInfo["pos"][1]=$11;markerInfo["line"][0][0]=$a[i++];markerInfo["line"][0][1]=$a[i++];markerInfo["line"][0][2]=$a[i++];markerInfo["line"][1][0]=$a[i++];markerInfo["line"][1][1]=$a[i++];markerInfo["line"][1][2]=$a[i++];markerInfo["line"][2][0]=$a[i++];markerInfo["line"][2][1]=$a[i++];markerInfo["line"][2][2]=$a[i++];markerInfo["line"][3][0]=$a[i++];markerInfo["line"][3][1]=$a[i++];markerInfo["line"][3][2]=$a[i++];markerInfo["vertex"][0][0]=$a[i++];markerInfo["vertex"][0][1]=$a[i++];markerInfo["vertex"][1][0]=$a[i++];markerInfo["vertex"][1][1]=$a[i++];markerInfo["vertex"][2][0]=$a[i++];markerInfo["vertex"][2][1]=$a[i++];markerInfo["vertex"][3][0]=$a[i++];markerInfo["vertex"][3][1]=$a[i++];markerInfo["errorCorrected"]=$a[i++]},function($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=$a[i++];markerInfo["found"]=1;markerInfo["pose"][0]=$a[i++];markerInfo["pose"][1]=$a[i++];markerInfo["pose"][2]=$a[i++];markerInfo["pose"][3]=$a[i++];markerInfo["pose"][4]=$a[i++];markerInfo["pose"][5]=$a[i++];markerInfo["pose"][6]=$a[i++];markerInfo["pose"][7]=$a[i++];markerInfo["pose"][8]=$a[i++];markerInfo["pose"][9]=$a[i++];markerInfo["pose"][10]=$a[i++];markerInfo["pose"][11]=$a[i++]},function($0){var $a=arguments;var i=0;if(!artoolkit["NFTMarkerInfo"]){artoolkit["NFTMarkerInfo"]={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]}}var markerInfo=artoolkit["NFTMarkerInfo"];markerInfo["id"]=$a[i++];markerInfo["error"]=-1;markerInfo["found"]=0;markerInfo["pose"][0]=0;markerInfo["pose"][1]=0;markerInfo["pose"][2]=0;markerInfo["pose"][3]=0;markerInfo["pose"][4]=0;markerInfo["pose"][5]=0;markerInfo["pose"][6]=0;markerInfo["pose"][7]=0;markerInfo["pose"][8]=0;markerInfo["pose"][9]=0;markerInfo["pose"][10]=0;markerInfo["pose"][11]=0}];function _emscripten_asm_const_iiiiiii(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiddddddddddddd(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _emscripten_asm_const_iiiiiiiidddddddddddddddddddddddddi(code,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32)}__ATINIT__.push({func:function(){__GLOBAL__I_000101()}},{func:function(){__GLOBAL__sub_I_ARToolKitJS_cpp()}},{func:function(){___emscripten_environ_constructor()}},{func:function(){__GLOBAL__sub_I_bind_cpp()}},{func:function(){__GLOBAL__sub_I_iostream_cpp()}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACKTQAAkU0AAJ1NAACnTQAAtU0AAAAAAAAAAAAAAAAAAP//////////AAAAAAEAAAABAAAAAQAAAAAAAAD/////AAAAAAEAAAABAAAAAQAAAAAAAAD///////////////8AAAABAAEBAQACBP//BQMBAAL/Bgf/AwECAgMCAwIDAwD/BAYHBf8BBAUEBAUFBAUHBgYGBwcHBv8CBAYHBQP/AAEBAQEBAQABAQEAAAEBAQEBAAEBAAEBAQABAQEBAAEBAAEBAQEAAQEBAAEBAAEBAQEBAAABAQEAAQEBAQEBAAD//wP/BQb//wkK/wz//w//ERL/FP//Fxj//xv/HR7//wEC/wT//wcI//8L/w0O/xD//xP/FRb//xka/xz//x8BAAAAAgAAAAQAAAAIAAAAEAAAAAUAAAAKAAAAFAAAAA0AAAAaAAAAEQAAAAcAAAAOAAAAHAAAAB0AAAAfAAAAGwAAABMAAAADAAAABgAAAAwAAAAYAAAAFQAAAA8AAAAeAAAAGQAAABcAAAALAAAAFgAAAAkAAAASAAAAAAAAAAEAAAACAAAABAAAAAgAAAADAAAABgAAAAwAAAALAAAABQAAAAoAAAAHAAAADgAAAA8AAAANAAAACQAAAAAAAAD/////AAAAAAEAAAASAAAAAgAAAAUAAAATAAAACwAAAAMAAAAdAAAABgAAABsAAAAUAAAACAAAAAwAAAAXAAAABAAAAAoAAAAeAAAAEQAAAAcAAAAWAAAAHAAAABoAAAAVAAAAGQAAAAkAAAAQAAAADQAAAA4AAAAYAAAADwAAAP////8AAAAAAQAAAAQAAAACAAAACAAAAAUAAAAKAAAAAwAAAA4AAAAJAAAABwAAAAYAAAANAAAACwAAAAwAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAAwAAAAYAAAAMAAAAGAAAADAAAABgAAAAQwAAAAUAAAAKAAAAFAAAACgAAABQAAAAIwAAAEYAAAAPAAAAHgAAADwAAAB4AAAAcwAAAGUAAABJAAAAEQAAACIAAABEAAAACwAAABYAAAAsAAAAWAAAADMAAABmAAAATwAAAB0AAAA6AAAAdAAAAGsAAABVAAAAKQAAAFIAAAAnAAAATgAAAB8AAAA+AAAAfAAAAHsAAAB1AAAAaQAAAFEAAAAhAAAAQgAAAAcAAAAOAAAAHAAAADgAAABwAAAAYwAAAEUAAAAJAAAAEgAAACQAAABIAAAAEwAAACYAAABMAAAAGwAAADYAAABsAAAAWwAAADUAAABqAAAAVwAAAC0AAABaAAAANwAAAG4AAABfAAAAPQAAAHoAAAB3AAAAbQAAAFkAAAAxAAAAYgAAAEcAAAANAAAAGgAAADQAAABoAAAAUwAAACUAAABKAAAAFwAAAC4AAABcAAAAOwAAAHYAAABvAAAAXQAAADkAAAByAAAAZwAAAE0AAAAZAAAAMgAAAGQAAABLAAAAFQAAACoAAABUAAAAKwAAAFYAAAAvAAAAXgAAAD8AAAB+AAAAfwAAAH0AAAB5AAAAcQAAAGEAAABBAAAAAAAAAP////8AAAAAAQAAAAcAAAACAAAADgAAAAgAAAA4AAAAAwAAAD8AAAAPAAAAHwAAAAkAAABaAAAAOQAAABUAAAAEAAAAHAAAAEAAAABDAAAAEAAAAHAAAAAgAAAAYQAAAAoAAABsAAAAWwAAAEYAAAA6AAAAJgAAABYAAAAvAAAABQAAADYAAAAdAAAAEwAAAEEAAABfAAAARAAAAC0AAAARAAAAKwAAAHEAAABzAAAAIQAAAE0AAABiAAAAdQAAAAsAAABXAAAAbQAAACMAAABcAAAASgAAAEcAAABPAAAAOwAAAGgAAAAnAAAAZAAAABcAAABSAAAAMAAAAHcAAAAGAAAAfgAAADcAAAANAAAAHgAAAD4AAAAUAAAAWQAAAEIAAAAbAAAAYAAAAG8AAABFAAAAawAAAC4AAAAlAAAAEgAAADUAAAAsAAAAXgAAAHIAAAAqAAAAdAAAAEwAAAAiAAAAVgAAAE4AAABJAAAAYwAAAGcAAAB2AAAAUQAAAAwAAAB9AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAABAAAAIgAAAAFAAAAkAAAAAYAAACYAAAACQAAALAAAAA3VAAAPVQAAEJUAABKVAAAAAAAALK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/ADcAAAA3AAAANwAAADcAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAMAAAAKAAAAEQAAABgAAAAgAAAAGQAAABIAAAALAAAABAAAAAUAAAAMAAAAEwAAABoAAAAhAAAAKAAAADAAAAApAAAAIgAAABsAAAAUAAAADQAAAAYAAAAHAAAADgAAABUAAAAcAAAAIwAAACoAAAAxAAAAOAAAADkAAAAyAAAAKwAAACQAAAAdAAAAFgAAAA8AAAAXAAAAHgAAACUAAAAsAAAAMwAAADoAAAA7AAAANAAAAC0AAAAmAAAAHwAAACcAAAAuAAAANQAAADwAAAA9AAAANgAAAC8AAAA3AAAAPgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAABQAAAAwAAAATAAAAGgAAACEAAAAoAAAAMAAAACkAAAAiAAAAGwAAABQAAAANAAAABgAAAA4AAAAVAAAAHAAAACMAAAAqAAAAMQAAADIAAAArAAAAJAAAAB0AAAAWAAAAHgAAACUAAAAsAAAAMwAAADQAAAAtAAAAJgAAAC4AAAA1AAAANgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAIAAAABkAAAASAAAACwAAAAQAAAAFAAAADAAAABMAAAAaAAAAIQAAACgAAAApAAAAIgAAABsAAAAUAAAADQAAABUAAAAcAAAAIwAAACoAAAArAAAAJAAAAB0AAAAlAAAALAAAAC0AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAAAAAAAEAAAAIAAAAEAAAAAkAAAACAAAAAwAAAAoAAAARAAAAGAAAACAAAAAZAAAAEgAAAAsAAAAEAAAADAAAABMAAAAaAAAAIQAAACIAAAAbAAAAFAAAABwAAAAjAAAAJAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAQAAAACQAAAAIAAAADAAAACgAAABEAAAAYAAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAJAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAIEBHVoOAoYlEAMUERIECwgUBdgDFwbaARkH5QAcCG8AHgk2ACEKGgAjCw0ACQwGAAoNAwAMDQEAjw9/WiQQJT8mEfIsJxJ8ICgTuRcqFIIRKxXvDC0WoQkuFy8HMBhcBTEZBgQzGgMDNBtAAjYcsQE4HUQBOR71ADsftwA8IIoAPiFoAD8iTgAgIzsAIQksAKUl4VpAJkxIQScNOkMo8S5EKR8mRSozH0YrqBlILBgVSS13EUoudA5LL/sLTTD4CU4xYQhPMgYHMDPNBTI03gQyNQ8EMzZjAzQ31AI1OFwCNjn4ATc6pAE4O2ABOTwlATo99gA7PssAPT+rAD0gjwDBQRJbUEIETVFDLEFSRNg3U0XoL1RGPClWR3kjV0jfHldJqRpISk4XSEskFEpMnBFKTWsPS05RDU1PtgtNMEAK0FEyWFhSHE1ZU45DWlTdO1tV7jRcVq4uXVeaKVZHFiXYWXBVX1qpTGBb2URhXCI+Y10kOGNetDJdVhcu32CoVmVhRk9mYuVHZ2PPQWhkPTxjXV43aWYxUmpnD0xraDlGZ2NeQelqJ1Zsa+dQbWeFS25tl1Vva09Q7m8QWnBtIlXwb+tZcXEdWgAAAAAAAAAA1aMAAOujAAALpAAAMKQAAEqkAABppAAAfqQAAJukAADFpAAABaUAACSlAAA7pQAAUaUAAGWlAACipQAA0qUAAO6lAAARpgAASKYAAH+mAACWpgAAtqYAAOCmAAAtpwAASKcAAHOnAACPpwAAtKcAANqnAAD/pwAAEqgAACeoAAA6qAAATagAAHKoAACHqAAAm6gAALyoAADSqAAAAakAACmpAABKqQAAa6kAAJqpAACrqQAAx6kAAAWqAAAsqgAAU6oAAGeqAACVqgAAvaoAANmqAAD+qgAAIKsAAEqrAAB1qwAAk6sAAMGrAADpqwAAEKwAADusAABorAAAmKwAAMKsAADvrAAAEq0AADCtAABOrQAAhK0AAK6tAADNrQAA8K0AABeuAAAsrgAAQK4AAHWuAACFrgAAw64AAAWvAAAvrwAAW68AAIKvAACerwAAya8AAOSvAAD4rwAAD7AAABywAABEsAAAebAAALWwAADjsAAABLEAACuxAABEsQAAbLEAAI+xAACnsQAAy7EAAPCxAAD2sQAAL7IAAGmyAACIsgAAl7IAALSyAADSsgAA77IAAAizAAAhswAAY7MAAJ2zAADTswAAB7QAABu0AAAytAAAWLQAAH+0AADBtAAA/bQAAC61AABStQAAgLUAAJu1AADTtQAA/rUAAAAAAAAAAAAAAQAAAAIAAAADAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAAGAAAAAwAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAAIAAAAEAAAABwAAAAwAAAADAAAACAAAAAsAAAANAAAACQAAAAoAAAAOAAAADwAAAAAAAAABAAAABQAAAAYAAAAOAAAAAgAAAAQAAAAHAAAADQAAAA8AAAADAAAACAAAAAwAAAAQAAAAFQAAAAkAAAALAAAAEQAAABQAAAAWAAAACgAAABIAAAATAAAAFwAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAACAAAABAAAAAcAAAANAAAAEAAAABkAAAADAAAACAAAAAwAAAARAAAAGAAAABoAAAAJAAAACwAAABIAAAAXAAAAGwAAACAAAAAKAAAAEwAAABYAAAAcAAAAHwAAACEAAAAUAAAAFQAAAB0AAAAeAAAAIgAAACMAAAAAAAAAAQAAAAUAAAAGAAAADgAAAA8AAAAbAAAAAgAAAAQAAAAHAAAADQAAABAAAAAaAAAAHAAAAAMAAAAIAAAADAAAABEAAAAZAAAAHQAAACYAAAAJAAAACwAAABIAAAAYAAAAHgAAACUAAAAnAAAACgAAABMAAAAXAAAAHwAAACQAAAAoAAAALQAAABQAAAAWAAAAIAAAACMAAAApAAAALAAAAC4AAAAVAAAAIQAAACIAAAAqAAAAKwAAAC8AAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAABgAAAA4AAAAPAAAAGwAAABwAAAACAAAABAAAAAcAAAANAAAAEAAAABoAAAAdAAAAKgAAAAMAAAAIAAAADAAAABEAAAAZAAAAHgAAACkAAAArAAAACQAAAAsAAAASAAAAGAAAAB8AAAAoAAAALAAAADUAAAAKAAAAEwAAABcAAAAgAAAAJwAAAC0AAAA0AAAANgAAABQAAAAWAAAAIQAAACYAAAAuAAAAMwAAADcAAAA8AAAAFQAAACIAAAAlAAAALwAAADIAAAA4AAAAOwAAAD0AAAAjAAAAJAAAADAAAAAxAAAAOQAAADoAAAA+AAAAPwAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAAAQMVYn1NCSwBASTKjIqgRxVghe/xzYmjFWL9FCzB+GJ9T/HNBbVRin1OzQUEtEhdCS2JoVGJ+WEJLITu6KMMUAEDFWJ9TQksAQEkyoyKoEUkyv0WzQSE7STKCJzcb4A2jIgswQS26KKMiNxu/Eo4JqBF+GBIXwxSoEeANjgnfBAAAAAAAAPA/72FIsVAx9j/Kb02Rruf0P6oRbO9i0PI/AAAAAAAA8D87v6fAaSTpP7sgx3t6UeE/Xaty3lWo0T8AwDDwDMw8/APDM/MPzz//gECwcIxMvHyDQ7Nzj0+/fyDgENAs7BzcI+MT0y/vH9+gYJBQrGycXKNjk1Ovb59fCMg4+ATENPQLyzv7B8c394hIuHiERLR0i0u7e4dHt3co6BjYJOQU1CvrG9sn5xfXqGiYWKRklFSra5tbp2eXVwLCMvIOzj7+AcEx8Q3NPf2CQrJyjk6+foFBsXGNTb19IuIS0i7uHt4h4RHRLe0d3aJiklKubp5eoWGRUa1tnV0Kyjr6BsY29gnJOfkFxTX1ikq6eoZGtnaJSbl5hUW1dSrqGtom5hbWKekZ2SXlFdWqappapmaWVqlpmVmlZZVV3hIElQAAAAD///////////////8AAAAAAAAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNMAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAyACIAIgAiACIAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAFgBMAEwATABMAEwATABMAEwATABMAEwATABMAEwATACNgI2AjYCNgI2AjYCNgI2AjYCNgEwATABMAEwATABMAEwAjVCNUI1QjVCNUI1QjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUEwATABMAEwATABMAI1gjWCNYI1gjWCNYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGBMAEwATABMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAAAAAAAAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAAAAAAAAAAAAAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAAAAAAAAAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAApD8AABVdAADMPwAAiWkAAIAzAAAAAAAAzD8AAHRsAAA4NgAAAAAAAMw/AAAjdwAAGD0AAAAAAADMPwAAi4cAABg9AAAAAAAAzD8AAP+HAAAYPQAAAAAAADhAAADlngAAAAAAAAEAAADwMwAAAAAAAKQ/AAAknwAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAABG4QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAIyQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAYzQAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApD8AAEe3AADMPwAAp7cAAFA2AAAAAAAAzD8AAFS3AABgNgAAAAAAAKQ/AAB1twAAzD8AAIK3AABANgAAAAAAAMw/AADxtwAAODYAAAAAAADMPwAAAbgAAHg2AAAAAAAAzD8AABK4AABQNgAAAAAAAMw/AAA0uAAAmDYAAAAAAADMPwAAWLgAAFA2AAAAAAAAHEAAAIC4AAAcQAAAgrgAABxAAACEuAAAHEAAAIa4AAAcQAAAiLgAABxAAACKuAAAHEAAAIy4AAAcQAAAjrgAABxAAACQuAAAHEAAAA3BAAAcQAAAkrgAABxAAACUuAAAHEAAAJa4AADMPwAAmLgAAEA2AAAAAAAApD8AANu7AACkPwAA+rsAAKQ/AAAZvAAApD8AADi8AACkPwAAV7wAAKQ/AAB2vAAApD8AAJW8AACkPwAAtLwAAKQ/AADTvAAApD8AAPK8AACkPwAAEb0AAKQ/AAAwvQAApD8AAE+9AAA4QAAAYr0AAAAAAAABAAAA8DMAAAAAAAA4QAAAob0AAAAAAAABAAAA8DMAAAAAAADMPwAA8r0AAOg3AAAAAAAApD8AAOC9AADMPwAAHL4AAOg3AAAAAAAApD8AAEa+AACkPwAAd74AADhAAACovgAAAAAAAAEAAADYNwAAA/T//zhAAADXvgAAAAAAAAEAAADwNwAAA/T//zhAAAAGvwAAAAAAAAEAAADYNwAAA/T//zhAAAA1vwAAAAAAAAEAAADwNwAAA/T//8w/AABkvwAACDgAAAAAAADMPwAAfb8AAAA4AAAAAAAAzD8AALy/AAAIOAAAAAAAAMw/AADUvwAAADgAAAAAAADMPwAA7L8AAMA4AAAAAAAAzD8AAADAAAAQPQAAAAAAAMw/AAAWwAAAwDgAAAAAAAA4QAAAL8AAAAAAAAACAAAAwDgAAAIAAAAAOQAAAAAAADhAAABzwAAAAAAAAAEAAAAYOQAAAAAAAKQ/AACJwAAAOEAAAKLAAAAAAAAAAgAAAMA4AAACAAAAQDkAAAAAAAA4QAAA5sAAAAAAAAABAAAAGDkAAAAAAAA4QAAAD8EAAAAAAAACAAAAwDgAAAIAAAB4OQAAAAAAADhAAABTwQAAAAAAAAEAAACQOQAAAAAAAKQ/AABpwQAAOEAAAILBAAAAAAAAAgAAAMA4AAACAAAAuDkAAAAAAAA4QAAAxsEAAAAAAAABAAAAkDkAAAAAAAA4QAAAHMMAAAAAAAADAAAAwDgAAAIAAAD4OQAAAgAAAAA6AAAACAAApD8AAIPDAACkPwAAYcMAADhAAACWwwAAAAAAAAMAAADAOAAAAgAAAPg5AAACAAAAMDoAAAAIAACkPwAA28MAADhAAAD9wwAAAAAAAAIAAADAOAAAAgAAAFg6AAAACAAApD8AAELEAAA4QAAAV8QAAAAAAAACAAAAwDgAAAIAAABYOgAAAAgAADhAAACcxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAApD8AALjEAAA4QAAAzcQAAAAAAAACAAAAwDgAAAIAAACgOgAAAgAAADhAAADpxAAAAAAAAAIAAADAOAAAAgAAAKA6AAACAAAAOEAAAAXFAAAAAAAAAgAAAMA4AAACAAAAoDoAAAIAAAA4QAAAMMUAAAAAAAACAAAAwDgAAAIAAAAoOwAAAAAAAKQ/AAB2xQAAOEAAAJrFAAAAAAAAAgAAAMA4AAACAAAAUDsAAAAAAACkPwAA4MUAADhAAAD/xQAAAAAAAAIAAADAOAAAAgAAAHg7AAAAAAAApD8AAEXGAAA4QAAAXsYAAAAAAAACAAAAwDgAAAIAAACgOwAAAAAAAKQ/AACkxgAAOEAAAL3GAAAAAAAAAgAAAMA4AAACAAAAyDsAAAIAAACkPwAA0sYAADhAAABpxwAAAAAAAAIAAADAOAAAAgAAAMg7AAACAAAAzD8AAOrGAAAAPAAAAAAAADhAAAANxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAApD8AADDHAADMPwAAR8cAAAA8AAAAAAAAOEAAAH7HAAAAAAAAAgAAAMA4AAACAAAAIDwAAAIAAAA4QAAAoMcAAAAAAAACAAAAwDgAAAIAAAAgPAAAAgAAADhAAADCxwAAAAAAAAIAAADAOAAAAgAAACA8AAACAAAAzD8AAOXHAADAOAAAAAAAADhAAAD7xwAAAAAAAAIAAADAOAAAAgAAAMg8AAACAAAApD8AAA3IAAA4QAAAIsgAAAAAAAACAAAAwDgAAAIAAADIPAAAAgAAAMw/AAA/yAAAwDgAAAAAAADMPwAAVMgAAMA4AAAAAAAApD8AAGnIAAA4QAAAgsgAAAAAAAABAAAAED0AAAAAAAABAAAAAAAAAIgzAAABAAAAAgAAAAAAAACAMwAAAwAAAAQAAAAAAAAAmDMAAAUAAAAGAAAAAQAAALlSjD6OWuc+uVKMPgAAAACoMwAABwAAAAgAAAAJAAAAAQAAAAoAAAAAAAAAuDMAAAcAAAALAAAADAAAAAIAAAANAAAAAAAAAMgzAAAHAAAADgAAAA8AAAADAAAAEAAAAP/////+/////f///8g2AAAANwAAIDcAAMg2AAAANwAAADcAACg3AAAANwAAyDYAAAA3AAAoNwAAADcAAMg2AAAANwAAADcAANgzAAAANwAAADcAAAA3AAAANwAAADcAANgzAAAANwAAADcAAAEAAAAAAAAAAgAAAEAGAACAPgAAAAAAAIgTAABAFgAAFAAAAEMuVVRGLTgAAAAAAAAAAAAAAAAAUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA+DMAAIg0AAAYNQAAGDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGwAAIB8AACAlAABfcIkA/wkvDwAAAABANgAAEQAAABIAAAATAAAAFAAAAAQAAAABAAAAAQAAAAEAAAAAAAAAaDYAABEAAAAVAAAAEwAAABQAAAAEAAAAAgAAAAIAAAACAAAAAAAAAHg2AAAWAAAAFwAAAAQAAAAAAAAAiDYAABYAAAAYAAAABAAAAAAAAAC4NgAAEQAAABkAAAATAAAAFAAAAAUAAAAAAAAAMDcAABEAAAAaAAAAEwAAABQAAAAEAAAAAwAAAAMAAAADAAAAAAAAAOg3AAAbAAAAHAAAAAAAAAAAOAAAHQAAAB4AAAABAAAABgAAAAQAAAAEAAAABQAAAAYAAAAHAAAABwAAAAgAAAAEAAAACAAAAAUAAAAAAAAACDgAAB8AAAAgAAAAAgAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAAsAAAAMAAAABgAAAAsAAAAHAAAACAAAAAAAAAAQOAAAIQAAACIAAAD4////+P///xA4AAAjAAAAJAAAAPRAAAAIQQAACAAAAAAAAAAoOAAAJQAAACYAAAD4////+P///yg4AAAnAAAAKAAAACRBAAA4QQAABAAAAAAAAABAOAAAKQAAACoAAAD8/////P///0A4AAArAAAALAAAAFRBAABoQQAABAAAAAAAAABYOAAALQAAAC4AAAD8/////P///1g4AAAvAAAAMAAAAIRBAACYQQAAAAAAAHA4AAAfAAAAMQAAAAMAAAAJAAAABQAAAAUAAAANAAAACgAAAAoAAAALAAAADAAAAAYAAAAMAAAACAAAAAAAAACAOAAAHQAAADIAAAAEAAAABgAAAAQAAAAEAAAADgAAAAYAAAAHAAAABwAAAAgAAAAEAAAADQAAAAkAAAAAAAAAkDgAAB8AAAAzAAAABQAAAAkAAAAFAAAABQAAAAkAAAAKAAAACgAAAA8AAAAQAAAACgAAAAsAAAAHAAAAAAAAAKA4AAAdAAAANAAAAAYAAAAGAAAABAAAAAQAAAAFAAAABgAAAAcAAAARAAAAEgAAAAsAAAAIAAAABQAAAAAAAACwOAAANQAAADYAAAA3AAAAAQAAAAYAAAAOAAAAAAAAANA4AAA4AAAAOQAAADcAAAACAAAABwAAAA8AAAAAAAAA4DgAADoAAAA7AAAANwAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAACA5AAA8AAAAPQAAADcAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAAAAAABYOQAAPgAAAD8AAAA3AAAAAwAAAAQAAAAXAAAABQAAABgAAAABAAAAAgAAAAYAAAAAAAAAmDkAAEAAAABBAAAANwAAAAcAAAAIAAAAGQAAAAkAAAAaAAAAAwAAAAQAAAAKAAAAAAAAANA5AABCAAAAQwAAADcAAAATAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAAA+P///9A5AAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAAAAAAAg6AABEAAAARQAAADcAAAAbAAAAIAAAACEAAAAiAAAAIwAAACQAAAACAAAA+P///wg6AAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAAAAAAAAODoAAEYAAABHAAAANwAAAAEAAAAAAAAAYDoAAEgAAABJAAAANwAAAAIAAAAAAAAAgDoAAEoAAABLAAAANwAAACMAAAAkAAAABwAAAAgAAAAJAAAACgAAACUAAAALAAAADAAAAAAAAACoOgAATAAAAE0AAAA3AAAAJgAAACcAAAANAAAADgAAAA8AAAAQAAAAKAAAABEAAAASAAAAAAAAAMg6AABOAAAATwAAADcAAAApAAAAKgAAABMAAAAUAAAAFQAAABYAAAArAAAAFwAAABgAAAAAAAAA6DoAAFAAAABRAAAANwAAACwAAAAtAAAAGQAAABoAAAAbAAAAHAAAAC4AAAAdAAAAHgAAAAAAAAAIOwAAUgAAAFMAAAA3AAAAAwAAAAQAAAAAAAAAMDsAAFQAAABVAAAANwAAAAUAAAAGAAAAAAAAAFg7AABWAAAAVwAAADcAAAABAAAAJQAAAAAAAACAOwAAWAAAAFkAAAA3AAAAAgAAACYAAAAAAAAAqDsAAFoAAABbAAAANwAAABAAAAAGAAAAHwAAAAAAAADQOwAAXAAAAF0AAAA3AAAAEQAAAAcAAAAgAAAAAAAAACg8AABeAAAAXwAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAPA7AABeAAAAYAAAADcAAAADAAAABAAAAAsAAAAvAAAAMAAAAAwAAAAxAAAAAAAAAFg8AABhAAAAYgAAADcAAAAFAAAABgAAAA0AAAAyAAAAMwAAAA4AAAA0AAAAAAAAAJg8AABjAAAAZAAAADcAAAAAAAAAqDwAAGUAAABmAAAANwAAAAwAAAASAAAADQAAABMAAAAOAAAAAwAAABQAAAAPAAAAAAAAAPA8AABnAAAAaAAAADcAAAA1AAAANgAAACEAAAAiAAAAIwAAAAAAAAAAPQAAaQAAAGoAAAA3AAAANwAAADgAAAAkAAAAJQAAACYAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAB0AAAAcgAAAHUAAABlAAAAAAAAAAAAAADAOAAAXgAAAGsAAAA3AAAAAAAAANA8AABeAAAAbAAAADcAAAAVAAAABAAAAAUAAAAGAAAADwAAABYAAAAQAAAAFwAAABEAAAAHAAAAGAAAABAAAAAAAAAAODwAAF4AAABtAAAANwAAAAcAAAAIAAAAEQAAADkAAAA6AAAAEgAAADsAAAAAAAAAeDwAAF4AAABuAAAANwAAAAkAAAAKAAAAEwAAADwAAAA9AAAAFAAAAD4AAAAAAAAAADwAAF4AAABvAAAANwAAAAMAAAAEAAAACwAAAC8AAAAwAAAADAAAADEAAAAAAAAAADoAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAAAAAAMDoAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABFcnJvcjogbGFiZWxpbmcgd29yayBvdmVyZmxvdy4KAFVua25vd24gb3IgdW5zdXBwb3J0ZWQgbGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgcmVxdWVzdGVkLiBTZXQgdG8gbWFudWFsLgoATGFiZWxpbmcgdGhyZXNob2xkIG1vZGUgc2V0IHRvICVzLgoATUFOVUFMAEFVVE9fTUVESUFOAEFVVE9fT1RTVQBBVVRPX0FEQVBUSVZFAEFVVE9fQlJBQ0tFVElORwBFcnJvcjogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICglZCkgcmVxdWVzdGVkLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIG1hcmtlciBjb3VudHMgLVslM2Q6ICUzZF0gWyUzZDogJTNkXSBbJTNkOiAlM2RdKy4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgBtZWRpYW4AT3RzdQBBdXRvIHRocmVzaG9sZCAoJXMpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAD8/PyAxCgA/Pz8gMgoAPz8/IDMKAEVycm9yOiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARXJyb3I6IGNhbid0IGxvYWQgcGF0dGVybiBmcm9tIE5VTEwgYnVmZmVyLgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgAgCQoNAFBhdHRlcm4gRGF0YSByZWFkIGVycm9yISEKAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgbGVuZ3RoLgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAEVycm9yICglZCk6IHVuYWJsZSB0byByZWFkIGZyb20gZmlsZS4AYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAEVycm9yOiBpY3BHZXRKX1VfWGMARXJyb3IgMTogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIDY6IGljcEdldEluaXRYdzJYYwoARXJyb3IgNzogaWNwR2V0SW5pdFh3MlhjCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogRmlyc3QgbGluZSBtdXN0IGJlIG51bWJlciBvZiBtYXJrZXIgY29uZmlncyB0byByZWFkLgoAJWxsdSVjAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGRpcmVjdG9yeSBuYW1lLgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnOiBVbmFibGUgdG8gbG9hZCBwYXR0ZXJuICclcycuCgAlbGYARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IEZpcnN0IGxpbmUgbXVzdCBiZSBwYXR0ZXJuIHdpZHRoLgoAJWxmICVsZiAlbGYgJWxmACVmICVmAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJywgbWFya2VyIGRlZmluaXRpb24gJTNkOiBMaW5lcyAyIC0gNCBtdXN0IGJlIG1hcmtlciB0cmFuc2Zvcm0uCgBbJXNdIABkZWJ1ZwBpbmZvAHdhcm5pbmcAZXJyb3IAJXMlcwAuaXNldABFcnJvcjogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciByZWFkaW5nIGltYWdlU2V0LgoASW1hZ2VzZXQgY29udGFpbnMgJWQgaW1hZ2VzLgoARmFsbGluZyBiYWNrIHRvIHJlYWRpbmcgJyVzJXMnIGluIEFSVG9vbEtpdCB2NC54IGZvcm1hdC4KAEVycm9yIHJlYWRpbmcgSlBFRyBmaWxlLgoARXJyb3IgcmVhZGluZyBKUEVHIGZpbGUgaGVhZGVyLgoAJWYARmlsZSBvcGVuIGVycm9yLiAlcwoAUmVhZCBlcnJvciEhCgByAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAAJXMlcwoAJWQACiMjIyBTdXJmYWNlIE5vLiVkICMjIwoAJXMAICBSZWFkIEltYWdlU2V0LgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5pc2V0Jy4KACAgICBlbmQuCgAgIFJlYWQgRmVhdHVyZVNldC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuZnNldCcuCgAgIFJlYWQgTWFya2VyU2V0LgoAbXJrAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMubXJrJy4KACVmICVmICVmICVmAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAGpwZwBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0cjEvcmVmRGF0YVNldFB0cjIuCgBrcG1EZWxldGVSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldFB0ci4KAHJiAGtwbUxvYWRSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldFB0ci4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBFcnJvciBsb2FkaW5nIEtQTSBkYXRhOiBlcnJvciByZWFkaW5nIGRhdGEuCgBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiBOVUxMIGtwbUhhbmRsZS9yZWZEYXRhU2V0LgoAa3BtU2V0UmVmRGF0YVNldCgpOiByZWZEYXRhU2V0LgoAcG9pbnRzLSVkCgBrcG1NYXRjaGluZygpOiBOVUxMIGtwbUhhbmRsZS9pbkltYWdlTHVtYS4KAFBhZ2VbJWRdICBwcmU6JTNkLCBhZnQ6JTNkLCBlcnJvciA9ICVmCgAlcy4lcwBBc3NlcnRpb24gYHB5cmFtaWQtPnNpemUoKSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmNwcABQeXJhbWlkIGlzIG5vdCBhbGxvY2F0ZWQAT2N0YXZlIG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBtSW1hZ2VzLnNpemUoKSA+IDBgIGZhaWxlZCBpbiAATGFwbGFjaWFuIHB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZABBc3NlcnRpb24gYHB5cmFtaWQtPm51bU9jdGF2ZXMoKSA+IDBgIGZhaWxlZCBpbiAAUHlyYW1pZCBkb2VzIG5vdCBjb250YWluIGFueSBsZXZlbHMAQXNzZXJ0aW9uIGBkeW5hbWljX2Nhc3Q8Y29uc3QgQmlub21pYWxQeXJhbWlkMzJmKj4ocHlyYW1pZClgIGZhaWxlZCBpbiAAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAEFzc2VydGlvbiBgaW0xLnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBc3NlcnRpb24gYGltMS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgd2lkdGgAQXNzZXJ0aW9uIGBkLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhlaWdodABBc3NlcnRpb24gYGltMS53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHJvdyA8IG1IZWlnaHRgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2ZyYW1ld29yay9pbWFnZS5oAHJvdyBvdXQgb2YgYm91bmRzAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQBEb0cgUHlyYW1pZABOb24tbWF4IHN1cHByZXNzaW9uAFN1YnBpeGVsAHBydW5lRmVhdHVyZXMARmluZCBPcmllbnRhdGlvbnMAQXNzZXJ0aW9uIGBtQnVja2V0cy5zaXplKCkgPT0gbU51bUJ1Y2tldHNYYCBmYWlsZWQgaW4gAEJ1Y2tldHMgYXJlIG5vdCBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBtQnVja2V0c1swXS5zaXplKCkgPT0gbU51bUJ1Y2tldHNZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUZlYXR1cmVQb2ludHMuc2l6ZSgpIDw9IG1NYXhOdW1GZWF0dXJlUG9pbnRzYCBmYWlsZWQgaW4gAFRvbyBtYW55IGZlYXR1cmUgcG9pbnRzAEFzc2VydGlvbiBgYnVja2V0WzBdLmZpcnN0ID49IGJ1Y2tldFtuXS5maXJzdGAgZmFpbGVkIGluIABudGhfZWxlbWVudCBmYWlsZWQAQXNzZXJ0aW9uIGBrcC5zY2FsZSA8IG1MYXBsYWNpYW5QeXJhbWlkLm51bVNjYWxlUGVyT2N0YXZlKClgIGZhaWxlZCBpbiAARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBga3Auc2NvcmUgPT0gbGFwMS5nZXQ8ZmxvYXQ+KHkpW3hdYCBmYWlsZWQgaW4gAFNjb3JlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIERvRyBpbWFnZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMS5oZWlnaHQoKSA9PSBsYXAyLmhlaWdodCgpYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvRG9HX3NjYWxlX2ludmFyaWFudF9kZXRlY3Rvci5oAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKSkgJiYgKGxhcDEud2lkdGgoKSA9PSBsYXAyLndpZHRoKCkpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAHggb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIABJbWFnZSBkaW1lbnNpb25zIGluY29uc2lzdGVudABBc3NlcnRpb24gYChsYXAwLndpZHRoKCk+PjEpID09IGxhcDIud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGxhcDAuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvaW50ZXJwb2xhdGUuaABmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoeC0xKSA+PSAwICYmICh4KzEpIDwgaW0ud2lkdGgoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB4X2Rpdl8yLTAuNWYgPj0gMGAgZmFpbGVkIGluIAB4X2Rpdl8yIG91dCBvZiBib3VuZHMgb3V0IG9mIGJvdW5kcyBmb3IgaW50ZXJwb2xhdGlvbgBBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAEFzc2VydGlvbiBgeF9kaXZfMiswLjVmIDwgbGFwMi53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeV9kaXZfMiswLjVmIDwgbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMS5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGltMC5oZWlnaHQoKT4+MSkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPCBtSW1hZ2VzLnNpemUoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgcmFuZ2UATjZ2aXNpb24xOEJpbm9taWFsUHlyYW1pZDMyZkUAQXNzZXJ0aW9uIGB3aWR0aCA+PSA1YCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5jcHAASW1hZ2UgaXMgdG9vIHNtYWxsAEFzc2VydGlvbiBgaGVpZ2h0ID49IDVgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAQXNzZXJ0aW9uIGBpbWFnZS5jaGFubmVscygpID09IDFgIGZhaWxlZCBpbiAASW1hZ2UgbXVzdCBoYXZlIDEgY2hhbm5lbABBc3NlcnRpb24gYG1QeXJhbWlkLnNpemUoKSA9PSBtTnVtT2N0YXZlcyptTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFB5cmFtaWQgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQAQXNzZXJ0aW9uIGBpbWFnZS53aWR0aCgpID09IG1QeXJhbWlkWzBdLndpZHRoKClgIGZhaWxlZCBpbiAASW1hZ2Ugb2Ygd3Jvbmcgc2l6ZSBmb3IgcHlyYW1pZABBc3NlcnRpb24gYGltYWdlLmhlaWdodCgpID09IG1QeXJhbWlkWzBdLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAARGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIGEgZmxvYXQAVW5rbm93biBpbWFnZSB0eXBlAFVuc3VwcG9ydGVkIGltYWdlIHR5cGUATjZ2aXNpb245RXhjZXB0aW9uRQBBc3NlcnRpb24gYGltLndpZHRoKCkgPT0gaW0uc3RlcCgpL3NpemVvZihmbG9hdClgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmNwcABTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEFzc2VydGlvbiBgeCA+PSAwYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHggPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS53aWR0aCgpYCBmYWlsZWQgaW4gAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAHkgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYHkgPCBtR3JhZGllbnRzW29jdGF2ZSptTnVtU2NhbGVzUGVyT2N0YXZlK3NjYWxlXS5oZWlnaHQoKWAgZmFpbGVkIGluIAB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAQXNzZXJ0aW9uIGBnLmNoYW5uZWxzKCkgPT0gMmAgZmFpbGVkIGluIABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBtYXhfaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABNYXhpbXVtIGJpbiBzaG91bGQgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgASGlzdG9ncmFtIHBvaW50ZXIgaXMgTlVMTABBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYG1hZ25pdHVkZSA+PSAwYCBmYWlsZWQgaW4gAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAQXNzZXJ0aW9uIGBudW1fYmlucyA+PSAwYCBmYWlsZWQgaW4gAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gAHcxIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAHcyIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBiMSA+PSAwICYmIGIxIDwgbnVtX2JpbnNgIGZhaWxlZCBpbiAAYjEgYmluIGluZGV4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGIyID49IDAgJiYgYjIgPCBudW1fYmluc2AgZmFpbGVkIGluIABiMiBiaW4gaW5kZXggb3V0IG9mIHJhbmdlAElEIGFscmVhZHkgZXhpc3RzAEJ1aWxkIFB5cmFtaWQARXh0cmFjdCBGZWF0dXJlcwBBc3NlcnRpb24gYGFzc2lnbm1lbnQuc2l6ZSgpID09IG51bV9pbmRpY2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9iaW5hcnlfaGllcmFyY2hpY2FsX2NsdXN0ZXJpbmcuaABBc3NpZ25tZW50IHNpemUgd3JvbmcAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2lnbm1lbnQgaXMgaW52YWxpZABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABBc3NpZ25tZW50IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpdC0+c2Vjb25kLnNpemUoKSAhPSAwYCBmYWlsZWQgaW4gAENsdXN0ZXIgbXVzdCBoYXZlIGF0bGVhc2V0IDEgZmVhdHVyZQBBc3NlcnRpb24gYG1LID09IG1DZW50ZXJzLnNpemUoKWAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMva21lZG9pZHMuaABrIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgY2VudGVycwBBc3NlcnRpb24gYG51bV9mZWF0dXJlcyA+IDBgIGZhaWxlZCBpbiAATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA8PSBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMAQXNzZXJ0aW9uIGBudW1faW5kaWNlcyA+PSBtS2AgZmFpbGVkIGluIABOb3QgZW5vdWdoIGZlYXR1cmVzAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBudW1fY2VudGVycyA+IDBgIGZhaWxlZCBpbiAAVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAxIGNlbnRlcgAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAQXNzZXJ0aW9uIGBkZXRlY3RvcmAgZmFpbGVkIGluIABEZXRlY3RvciBpcyBOVUxMAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQeXJhbWlkIGlzIGVtcHR5AEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSU42dmlzaW9uOEtleWZyYW1lSUxpOTZFRUVFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAWyVzXSBbJXNdIFslc10gOiBGb3VuZCAlZCBmZWF0dXJlcyBpbiBxdWVyeQBib29sIHZpc2lvbjo6VmlzdWFsRGF0YWJhc2U8dmlzaW9uOjpGUkVBS0V4dHJhY3RvciwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIHZpc2lvbjo6QmluYXJ5RmVhdHVyZU1hdGNoZXI8OTY+ID46OnF1ZXJ5KGNvbnN0IHZpc2lvbjo6R2F1c3NpYW5TY2FsZVNwYWNlUHlyYW1pZCAqKSBbRkVBVFVSRV9FWFRSQUNUT1IgPSB2aXNpb246OkZSRUFLRXh0cmFjdG9yLCBTVE9SRSA9IHZpc2lvbjo6QmluYXJ5RmVhdHVyZVN0b3JlLCBNQVRDSEVSID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj5dAEZpbmQgTWF0Y2hlcyAoMSkASG91Z2ggVm90aW5nICgxKQBGaW5kIEhvdWdoIE1hdGNoZXMgKDEpAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkARmluZCBNYXRjaGVzICgyKQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikARXN0aW1hdGUgSG9tb2dyYXBoeSAoMikARmluZCBJbmxpZXJzICgyKQBBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2ZlYXR1cmVfbWF0Y2hlci1pbmxpbmUuaABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBBc3NlcnRpb24gYGJlc3RfaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKWAgZmFpbGVkIGluIABTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAQXNzZXJ0aW9uIGBoeXAuc2l6ZSgpID49IDkqbWF4X251bV9oeXBvdGhlc2VzYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9ob21vZ3JhcGh5X2VzdGltYXRpb24vcm9idXN0X2hvbW9ncmFwaHkuaABoeXAgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIDkqbWF4X251bV9oeXBvdGhlc2VzAEFzc2VydGlvbiBgdG1wX2kuc2l6ZSgpID49IG51bV9wb2ludHNgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABoeXBfY29zdHMgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG1heF9udW1faHlwb3RoZXNlcwBBc3NlcnRpb24gYG4gPD0gaW5fbWF0Y2hlcy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgbVJvb3QuZ2V0KClgIGZhaWxlZCBpbiAAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAATWluaW11bSBpbmRleCBub3Qgc2V0AEFzc2VydGlvbiBgeCA+PSBtTWluWGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaAB4IG91dCBvZiByYW5nZQBBc3NlcnRpb24gYHggPCBtTWF4WGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAeSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGB5IDwgbU1heFlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA+IC1QSWAgZmFpbGVkIGluIABhbmdsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABzY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBzY2FsZSA8IG1NYXhTY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGluZGV4ID49IDBgIGZhaWxlZCBpbiAAaW5kZXggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAGJpblggb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWCA8IG1OdW1YQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblkgPj0gMGAgZmFpbGVkIGluIABiaW5ZIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpblkgPCBtTnVtWUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblNjYWxlID49IDBgIGZhaWxlZCBpbiAAYmluU2NhbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2l6ZSA+IDBgIGZhaWxlZCBpbiAAL3NyYy9lbXNjcmlwdGVuL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcABzaXplIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VXaWR0aCA+IDBgIGZhaWxlZCBpbiAAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1SZWZJbWFnZUhlaWdodCA+IDBgIGZhaWxlZCBpbiAAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGBuID4gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvdXRpbHMvcGFydGlhbF9zb3J0LmgAbiBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgcHlyYW1pZGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZnJlYWsuaABQeXJhbWlkIGlzIE5VTEwAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIABGZWF0dXJlIHN0b3JlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQXNzZXJ0aW9uIGBudW1fcG9pbnRzID09IHBvaW50cy5zaXplKClgIGZhaWxlZCBpbiAAU2hvdWxkIGJlIHNhbWUgc2l6ZQBBc3NlcnRpb24gYG9jdGF2ZSA+PSAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAE9jdGF2ZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABTY2FsZSBtdXN0IGJlIHBvc2l0aXZlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlACVtLSVkLSVZLSVILSVNLSVTAEFzc2VydGlvbiBgd2lkdGggPiAwYCBmYWlsZWQgaW4gAC9zcmMvZW1zY3JpcHRlbi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAFdpZHRoIGNhbm5vdCBiZSB6ZXJvAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABIZWlnaHQgY2Fubm90IGJlIHplcm8AQXNzZXJ0aW9uIGBzdGVwID49IHdpZHRoYCBmYWlsZWQgaW4gAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAEFzc2VydGlvbiBgY2hhbm5lbHMgPiAwYCBmYWlsZWQgaW4gAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwBBc3NlcnRpb24gYG1EYXRhLmdldCgpYCBmYWlsZWQgaW4gAERhdGEgcG9pbnRlciBpcyBOVUxMAE5TdDNfXzIxNGRlZmF1bHRfZGVsZXRlSWhFRQBOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQaE5TXzE0ZGVmYXVsdF9kZWxldGVJaEVFTlNfOWFsbG9jYXRvckloRUVFRQBJbnZhbGlkIGltYWdlIHR5cGUAMTZOdWxsQXJyYXlEZWxldGVySWhFAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQBBc3NlcnRpb24gYG1TdGFydFRpbWUgPj0gMGAgZmFpbGVkIGluIAAvc3JjL2Vtc2NyaXB0ZW4vYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAIGxpbmUgADogAENsb2NrIGhhcyBub3QgYmVlbiBzdGFydGVkAEFzc2VydGlvbiBgbVN0b3BUaW1lID49IDBgIGZhaWxlZCBpbiAAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMAIElORk8gIAB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBzZXR1cAB0ZWFyZG93bgBzZXR1cEFSMgBfYWRkTWFya2VyAF9hZGRNdWx0aU1hcmtlcgBfYWRkTkZUTWFya2VyAGdldE11bHRpTWFya2VyTnVtAGdldE11bHRpTWFya2VyQ291bnQAX2xvYWRDYW1lcmEAc2V0TWFya2VySW5mb0RpcgBzZXRNYXJrZXJJbmZvVmVydGV4AGdldFRyYW5zTWF0U3F1YXJlAGdldFRyYW5zTWF0U3F1YXJlQ29udABnZXRUcmFuc01hdE11bHRpU3F1YXJlAGdldFRyYW5zTWF0TXVsdGlTcXVhcmVSb2J1c3QAZGV0ZWN0TWFya2VyAGdldE1hcmtlck51bQBkZXRlY3RORlRNYXJrZXIAZ2V0TXVsdGlFYWNoTWFya2VyAGdldE1hcmtlcgBnZXRORlRNYXJrZXIAc2V0RGVidWdNb2RlAGdldERlYnVnTW9kZQBnZXRQcm9jZXNzaW5nSW1hZ2UAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldFRocmVzaG9sZABnZXRUaHJlc2hvbGQAc2V0UGF0dGVybkRldGVjdGlvbk1vZGUAZ2V0UGF0dGVybkRldGVjdGlvbk1vZGUAc2V0UGF0dFJhdGlvAGdldFBhdHRSYXRpbwBzZXRNYXRyaXhDb2RlVHlwZQBnZXRNYXRyaXhDb2RlVHlwZQBzZXRMYWJlbGluZ01vZGUAZ2V0TGFiZWxpbmdNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBFUlJPUl9BUkNPTlRST0xMRVJfTk9UX0ZPVU5EAEVSUk9SX01VTFRJTUFSS0VSX05PVF9GT1VORABFUlJPUl9NQVJLRVJfSU5ERVhfT1VUX09GX0JPVU5EUwBBUl9ERUJVR19ESVNBQkxFAEFSX0RFQlVHX0VOQUJMRQBBUl9ERUZBVUxUX0RFQlVHX01PREUAQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAEFSX0xBQkVMSU5HX0JMQUNLX1JFR0lPTgBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfSU1BR0VfUFJPQ19GUkFNRV9JTUFHRQBBUl9JTUFHRV9QUk9DX0ZJRUxEX0lNQUdFAEFSX0RFRkFVTFRfSU1BR0VfUFJPQ19NT0RFAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SAEFSX1RFTVBMQVRFX01BVENISU5HX01PTk8AQVJfTUFUUklYX0NPREVfREVURUNUSU9OAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0RFRkFVTFRfUEFUVEVSTl9ERVRFQ1RJT05fTU9ERQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZAEFSX1VTRV9UUkFDS0lOR19ISVNUT1JZX1YyAEFSX0RFRkFVTFRfTUFSS0VSX0VYVFJBQ1RJT05fTU9ERQBBUl9NQVhfTE9PUF9DT1VOVABBUl9MT09QX0JSRUFLX1RIUkVTSABBUl9MT0dfTEVWRUxfREVCVUcAQVJfTE9HX0xFVkVMX0lORk8AQVJfTE9HX0xFVkVMX1dBUk4AQVJfTE9HX0xFVkVMX0VSUk9SAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9NQVRSSVhfQ09ERV8zeDMAQVJfTUFUUklYX0NPREVfM3gzX0hBTU1JTkc2MwBBUl9NQVRSSVhfQ09ERV8zeDNfUEFSSVRZNjUAQVJfTUFUUklYX0NPREVfNHg0AEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfNV81AEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX01BTlVBTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX09UU1UAQVJfTEFCRUxJTkdfVEhSRVNIX01PREVfQVVUT19BREFQVElWRQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTk9ORQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUEFUVEVSTl9FWFRSQUNUSU9OAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9DT05UUkFTVABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfRURDX0ZBSUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1IAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX0hFVVJJU1RJQ19UUk9VQkxFU09NRV9NQVRSSVhfQ09ERVMAYWxsb2NhdG9yPFQ+OjphbGxvY2F0ZShzaXplX3QgbikgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZQBJbWFnZSBwcm9jLiBtb2RlIHNldCB0byAlZC4KAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgB2aWlmAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAFRocmVzaG9sZCBzZXQgdG8gJWQKAHZpaWkAVGhyZXNob2xkIG1vZGUgc2V0IHRvICVkCgBkaWkAdmlpZABpaQB2aWkAb24uAG9mZi4ARGVidWcgbW9kZSBzZXQgdG8gJXMKAFRyYWNraW5nIGxvc3QuICVkCgBUcmFja2VkIHBhZ2UgJWQgKG1heCAlZCkuCgB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAwOyBpZiAoIWFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdKSB7IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdID0gKHsgaWQ6IDAsIGVycm9yOiAtMSwgZm91bmQ6IDAsIHBvc2U6IFswLDAsMCwwLCAwLDAsMCwwLCAwLDAsMCwwXSB9KTsgfSB2YXIgbWFya2VySW5mbyA9IGFydG9vbGtpdFsiTkZUTWFya2VySW5mbyJdOyBtYXJrZXJJbmZvWyJpZCJdID0gJGFbaSsrXTsgbWFya2VySW5mb1siZXJyb3IiXSA9ICRhW2krK107IG1hcmtlckluZm9bImZvdW5kIl0gPSAxOyBtYXJrZXJJbmZvWyJwb3NlIl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bM10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bNl0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bN10gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bOV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sicG9zZSJdWzExXSA9ICRhW2krK107IH0AeyB2YXIgJGEgPSBhcmd1bWVudHM7IHZhciBpID0gMDsgaWYgKCFhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXSA9ICh7IGlkOiAwLCBlcnJvcjogLTEsIGZvdW5kOiAwLCBwb3NlOiBbMCwwLDAsMCwgMCwwLDAsMCwgMCwwLDAsMF0gfSk7IH0gdmFyIG1hcmtlckluZm8gPSBhcnRvb2xraXRbIk5GVE1hcmtlckluZm8iXTsgbWFya2VySW5mb1siaWQiXSA9ICRhW2krK107IG1hcmtlckluZm9bImVycm9yIl0gPSAtMTsgbWFya2VySW5mb1siZm91bmQiXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVswXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsyXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVszXSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs0XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs1XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs2XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs3XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs4XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVs5XSA9IDA7IG1hcmtlckluZm9bInBvc2UiXVsxMF0gPSAwOyBtYXJrZXJJbmZvWyJwb3NlIl1bMTFdID0gMDsgfQB7IHZhciAkYSA9IGFyZ3VtZW50czsgdmFyIGkgPSAxMjsgaWYgKCFhcnRvb2xraXRbIm1hcmtlckluZm8iXSkgeyBhcnRvb2xraXRbIm1hcmtlckluZm8iXSA9ICh7IHBvczogWzAsMF0sIGxpbmU6IFtbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdLCBbMCwwLDBdXSwgdmVydGV4OiBbWzAsMF0sIFswLDBdLCBbMCwwXSwgWzAsMF1dIH0pOyB9IHZhciBtYXJrZXJJbmZvID0gYXJ0b29sa2l0WyJtYXJrZXJJbmZvIl07IG1hcmtlckluZm9bImFyZWEiXSA9ICQwOyBtYXJrZXJJbmZvWyJpZCJdID0gJDE7IG1hcmtlckluZm9bImlkUGF0dCJdID0gJDI7IG1hcmtlckluZm9bImlkTWF0cml4Il0gPSAkMzsgbWFya2VySW5mb1siZGlyIl0gPSAkNDsgbWFya2VySW5mb1siZGlyUGF0dCJdID0gJDU7IG1hcmtlckluZm9bImRpck1hdHJpeCJdID0gJDY7IG1hcmtlckluZm9bImNmIl0gPSAkNzsgbWFya2VySW5mb1siY2ZQYXR0Il0gPSAkODsgbWFya2VySW5mb1siY2ZNYXRyaXgiXSA9ICQ5OyBtYXJrZXJJbmZvWyJwb3MiXVswXSA9ICQxMDsgbWFya2VySW5mb1sicG9zIl1bMV0gPSAkMTE7IG1hcmtlckluZm9bImxpbmUiXVswXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVswXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsxXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVsyXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bImxpbmUiXVszXVsyXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzBdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMF1bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsxXVswXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzFdWzFdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bMl1bMF0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJ2ZXJ0ZXgiXVsyXVsxXSA9ICRhW2krK107IG1hcmtlckluZm9bInZlcnRleCJdWzNdWzBdID0gJGFbaSsrXTsgbWFya2VySW5mb1sidmVydGV4Il1bM11bMV0gPSAkYVtpKytdOyBtYXJrZXJJbmZvWyJlcnJvckNvcnJlY3RlZCJdID0gJGFbaSsrXTsgfQB7IGlmICghYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0pIHsgYXJ0b29sa2l0WyJtdWx0aUVhY2hNYXJrZXJJbmZvIl0gPSAoe30pOyB9IHZhciBtdWx0aUVhY2hNYXJrZXIgPSBhcnRvb2xraXRbIm11bHRpRWFjaE1hcmtlckluZm8iXTsgbXVsdGlFYWNoTWFya2VyWyd2aXNpYmxlJ10gPSAkMDsgbXVsdGlFYWNoTWFya2VyWydwYXR0SWQnXSA9ICQxOyBtdWx0aUVhY2hNYXJrZXJbJ3BhdHRUeXBlJ10gPSAkMjsgbXVsdGlFYWNoTWFya2VyWyd3aWR0aCddID0gJDM7IH0AaWlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUAbG9hZENhbWVyYSgpOiBFcnJvciBsb2FkaW5nIHBhcmFtZXRlciBmaWxlICVzIGZvciBjYW1lcmEuCgBpaWlpAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgTkZUIG1hcmtlci4KAFJlYWRpbmcgJXMuZnNldDMKAGZzZXQzAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAEVycm9yOiBrcG1DaGFuZ2VQYWdlTm9PZlJlZkRhdGFTZXQKAEVycm9yOiBrcG1NZXJnZVJlZkRhdGFTZXQKACAgRG9uZS4KAFJlYWRpbmcgJXMuZnNldAoAZnNldABFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBFcnJvcjoga3BtU2V0UmVmRGF0YVNldAoATG9hZGluZyBvZiBORlQgZGF0YSBjb21wbGV0ZS4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBjb25maWcgZGF0YSBsb2FkIGVycm9yICEhCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAGxvYWRNYXJrZXIoKTogRXJyb3IgbG9hZGluZyBwYXR0ZXJuIGZpbGUgJXMuCgBFcnJvcjogYXIyQ3JlYXRlSGFuZGxlLgoAaWlpaWkAc2V0dXAoKTogRXJyb3I6IGFyUGF0dENyZWF0ZUhhbmRsZS4KAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAeyBpZiAoIWFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXSkgeyBhcnRvb2xraXRbImZyYW1lTWFsbG9jIl0gPSAoe30pOyB9IHZhciBmcmFtZU1hbGxvYyA9IGFydG9vbGtpdFsiZnJhbWVNYWxsb2MiXTsgZnJhbWVNYWxsb2NbImZyYW1lcG9pbnRlciJdID0gJDE7IGZyYW1lTWFsbG9jWyJmcmFtZXNpemUiXSA9ICQyOyBmcmFtZU1hbGxvY1siY2FtZXJhIl0gPSAkMzsgZnJhbWVNYWxsb2NbInRyYW5zZm9ybSJdID0gJDQ7IGZyYW1lTWFsbG9jWyJ2aWRlb0x1bWFQb2ludGVyIl0gPSAkNTsgfQAqKiogQ2FtZXJhIFBhcmFtZXRlciByZXNpemVkIGZyb20gJWQsICVkLiAqKioKAHNldENhbWVyYSgpOiBFcnJvcjogYXJQYXJhbUxUQ3JlYXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAT3V0IG9mIG1lbW9yeSEhCgBFcnJvcjogbWFsbG9jCgAjIyMgRmVhdHVyZSBjYW5kaWRhdGVzIGZvciB0cmFja2luZyBhcmUgb3ZlcmZsb3cuCgBCb2d1cyBtZXNzYWdlIGNvZGUgJWQAQUxJR05fVFlQRSBpcyB3cm9uZywgcGxlYXNlIGZpeABNQVhfQUxMT0NfQ0hVTksgaXMgd3JvbmcsIHBsZWFzZSBmaXgAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MASW52YWxpZCBjcm9wIHJlcXVlc3QARENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZQBEQ1Qgc2NhbGVkIGJsb2NrIHNpemUgJWR4JWQgbm90IHN1cHBvcnRlZABDb21wb25lbnQgaW5kZXggJWQ6IG1pc21hdGNoaW5nIHNhbXBsaW5nIHJhdGlvICVkOiVkLCAlZDolZCwgJWMAQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAEJvZ3VzIGlucHV0IGNvbG9yc3BhY2UAQm9ndXMgSlBFRyBjb2xvcnNwYWNlAEJvZ3VzIG1hcmtlciBsZW5ndGgAV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkAFNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkAEludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBJbnZhbGlkIHNjYW4gc2NyaXB0IGF0IGVudHJ5ICVkAEltcHJvcGVyIGNhbGwgdG8gSlBFRyBsaWJyYXJ5IGluIHN0YXRlICVkAEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQnVmZmVyIHBhc3NlZCB0byBKUEVHIGxpYnJhcnkgaXMgdG9vIHNtYWxsAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBDQ0lSNjAxIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQAVG9vIG1hbnkgY29sb3IgY29tcG9uZW50czogJWQsIG1heCAlZABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAQm9ndXMgREFDIGluZGV4ICVkAEJvZ3VzIERBQyB2YWx1ZSAweCV4AEJvZ3VzIERIVCBpbmRleCAlZABCb2d1cyBEUVQgaW5kZXggJWQARW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdyaXRlIHRvIEVNUyBmYWlsZWQARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4ASW5wdXQgZmlsZSByZWFkIGVycm9yAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8ARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE1pc3NpbmcgSHVmZm1hbiBjb2RlIHRhYmxlIGVudHJ5AE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMARW1wdHkgaW5wdXQgZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGlucHV0IGZpbGUAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YQBJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZQBOb3QgaW1wbGVtZW50ZWQgeWV0AFJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZQBBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UAUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AEluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpAENhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cwBDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMAQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAFVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4AEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPSSBtYXJrZXJzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUAV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMAVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4AFZpcnR1YWwgYXJyYXkgY29udHJvbGxlciBtZXNzZWQgdXAASW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24AUmVhZCBmcm9tIFhNUyBmYWlsZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nADljICAxNC1KYW4tMjAxOABDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHAEFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkAFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUARGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZABEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldQBGcmVlZCBFTVMgaGFuZGxlICV1AE9idGFpbmVkIEVNUyBoYW5kbGUgJXUARW5kIE9mIEltYWdlACAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZABKRklGIEFQUDAgbWFya2VyOiB2ZXJzaW9uICVkLiUwMmQsIGRlbnNpdHkgJWR4JWQgICVkAFdhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldQAgICAgd2l0aCAlZCB4ICVkIHRodW1ibmFpbCBpbWFnZQBNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldQBVbmV4cGVjdGVkIG1hcmtlciAweCUwMngAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AFF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMAUXVhbnRpemluZyB0byAlZCBjb2xvcnMAU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24AQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkAFJTVCVkAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAFN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZAAgICAgQ29tcG9uZW50ICVkOiAlZGh4JWR2IHE9JWQAU3RhcnQgb2YgSW1hZ2UAU3RhcnQgT2YgU2NhbjogJWQgY29tcG9uZW50cwAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZAAgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkAENsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcwBPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMASkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiBwYWxldHRlIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1AFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBGcmVlZCBYTVMgaGFuZGxlICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUAVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZABDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZABDb3JydXB0IEpQRUcgZGF0YTogJXUgZXh0cmFuZW91cyBieXRlcyBiZWZvcmUgbWFya2VyIDB4JTAyeABDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQAQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcwBTT1MATFNFAEpQRUdNRU0AJWxkJWMAJXMKAAABAgQHAwYFAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AaW5maW5pdHkAbmFuAExDX0FMTABMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIAHJ3YQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAYgBjAGgAYQBzAHQAaQBqAG0AZgBkAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAdm9pZABib29sAGNoYXIAc2lnbmVkIGNoYXIAdW5zaWduZWQgY2hhcgBzaG9ydAB1bnNpZ25lZCBzaG9ydABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBmbG9hdABkb3VibGUAc3RkOjpzdHJpbmcAc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4Ac3RkOjp3c3RyaW5nAGVtc2NyaXB0ZW46OnZhbABlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmcgZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0llRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjhpb3NfYmFzZUUATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQBOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQBOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQBOU3QzX18yN2NvbGxhdGVJY0VFAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQBOU3QzX18yN2NvbGxhdGVJd0VFACVwAEMATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFACVwAAAAAEwAbGwAJQAAAAAAbABOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAJUg6JU06JVMAJW0vJWQvJXkAJUk6JU06JVMgJXAAJWEgJWIgJWQgJUg6JU06JVMgJVkAQU0AUE0ASmFudWFyeQBGZWJydWFyeQBNYXJjaABBcHJpbABNYXkASnVuZQBKdWx5AEF1Z3VzdABTZXB0ZW1iZXIAT2N0b2JlcgBOb3ZlbWJlcgBEZWNlbWJlcgBKYW4ARmViAE1hcgBBcHIASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AFN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdAAlbS8lZC8leSVZLSVtLSVkJUk6JU06JVMgJXAlSDolTSVIOiVNOiVTJUg6JU06JVNOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAMDEyMzQ1Njc4OQAlTGYATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAwMTIzNDU2Nzg5AE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAJS4wTGYATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQBOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAE5TdDNfXzI4bWVzc2FnZXNJY0VFAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAE5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUUATlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjZsb2NhbGU1X19pbXBFAE5TdDNfXzI1Y3R5cGVJY0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAE5TdDNfXzI1Y3R5cGVJd0VFAGZhbHNlAHRydWUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE0X19zaGFyZWRfY291bnRFAE5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRF";var tempDoublePtr=57872;function demangle(func){return func}function demangleAll(text){var regex=/\b__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";ENV["_"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=value;return value}function ___map_file(pathname,size){___setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(fd){if(fd===undefined)fd=SYSCALLS.get();var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_read(){return _fd_read.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function __embind_register_constant(name,type,value){name=readLatin1String(name);whenDependentTypesAreResolved([],[type],function(type){type=type[0];Module[name]=type["fromWireType"](value);return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;iLIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=57728;var ___tm_timezone=(stringToUTF8("GMT",57776,4),57776);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Yb[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)==0?2:e,f);return}function nB(a){a=a|0;return ((oB(a)|0)^1)&1|0}function oB(b){b=b|0;return (a[b>>0]|0)!=0|0}function pB(a){a=a|0;c[a>>2]=0;qB(a);return}function qB(a){a=a|0;c[a>>2]=c[a>>2]|1;return}function rB(a){a=a|0;c[a>>2]=0;return}function sB(){return 0}function tB(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=FO(b)|0;if(a|0)break;a=sB()|0;if(!a){a=0;break}Rb[a&1]()}return a|0}function uB(a){a=a|0;return tB(a)|0}function vB(a){a=a|0;SA(a);return}function wB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=c[d>>2];a=Jb[c[(c[a>>2]|0)+16>>2]&63](a,b,e)|0;if(a)c[d>>2]=c[e>>2];zb=f;return a&1|0}function xB(a){a=a|0;if(!a)a=0;else a=(NA(a,13904,13992,0)|0)!=0&1;return a|0}function yB(){return 0}function zB(){N(55684);return}function AB(){return 55668}function BB(){return 55676}function CB(){return 55680}function DB(){return 55684}function EB(){FB();return}function FB(){GB(57670);return}function GB(a){a=a|0;var b=0;b=zb;zb=zb+16|0;c[b>>2]=a;HB();zb=b;return}function HB(){pa(IB()|0,47294);ga(JB()|0,47299,1,1,0);KB(47304);LB(47309);MB(47321);NB(47335);OB(47341);PB(47356);QB(47360);RB(47373);SB(47378);TB(47392);UB(47398);na(VB()|0,47405);na(WB()|0,47417);oa(XB()|0,4,47450);ia(YB()|0,47463);ZB(47479);_B(47509);$B(47546);aC(47585);bC(47616);cC(47656);dC(47685);eC(47723);fC(47753);_B(47792);$B(47824);aC(47857);bC(47890);cC(47924);dC(47957);gC(47991);hC(48022);iC(48054);return}function IB(){return sD()|0}function JB(){return rD()|0}function KB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=pD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function LB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=nD()|0;la(a|0,c[d>>2]|0,1,-128<<24>>24|0,127<<24>>24|0);zb=b;return}function MB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=lD()|0;la(a|0,c[d>>2]|0,1,0,255);zb=b;return}function NB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=jD()|0;la(a|0,c[d>>2]|0,2,-32768<<16>>16|0,32767<<16>>16|0);zb=b;return}function OB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=hD()|0;la(a|0,c[d>>2]|0,2,0,65535);zb=b;return}function PB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=fD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function QB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=dD()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function RB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=bD()|0;la(a|0,c[d>>2]|0,4,-2147483648,2147483647);zb=b;return}function SB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=$C()|0;la(a|0,c[d>>2]|0,4,0,-1);zb=b;return}function TB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=ZC()|0;ja(a|0,c[d>>2]|0,4);zb=b;return}function UB(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;a=XC()|0;ja(a|0,c[d>>2]|0,8);zb=b;return}function VB(){return WC()|0}function WB(){return VC()|0}function XB(){return UC()|0}function YB(){return TC()|0}function ZB(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=QC()|0;a=RC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function _B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=NC()|0;a=OC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function $B(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=KC()|0;a=LC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function aC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=HC()|0;a=IC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function bC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=EC()|0;a=FC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function cC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=BC()|0;a=CC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function dC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=yC()|0;a=zC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function eC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=vC()|0;a=wC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function fC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=sC()|0;a=tC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function gC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=pC()|0;a=qC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function hC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=mC()|0;a=nC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function iC(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b;c[d>>2]=a;e=jC()|0;a=kC()|0;ma(e|0,a|0,c[d>>2]|0);zb=b;return}function jC(){return lC()|0}function kC(){return 7}function lC(){return 14144}function mC(){return oC()|0}function nC(){return 7}function oC(){return 14152}function pC(){return rC()|0}function qC(){return 6}function rC(){return 14160}function sC(){return uC()|0}function tC(){return 5}function uC(){return 14168}function vC(){return xC()|0}function wC(){return 4}function xC(){return 14176}function yC(){return AC()|0}function zC(){return 5}function AC(){return 14184}function BC(){return DC()|0}function CC(){return 4}function DC(){return 14192}function EC(){return GC()|0}function FC(){return 3}function GC(){return 14200}function HC(){return JC()|0}function IC(){return 2}function JC(){return 14208}function KC(){return MC()|0}function LC(){return 1}function MC(){return 14216}function NC(){return PC()|0}function OC(){return 0}function PC(){return 14224}function QC(){return SC()|0}function RC(){return 0}function SC(){return 14232}function TC(){return 14240}function UC(){return 14248}function VC(){return 14272}function WC(){return 13272}function XC(){return YC()|0}function YC(){return 14120}function ZC(){return _C()|0}function _C(){return 14112}function $C(){return aD()|0}function aD(){return 14104}function bD(){return cD()|0}function cD(){return 14096}function dD(){return eD()|0}function eD(){return 14088}function fD(){return gD()|0}function gD(){return 14080}function hD(){return iD()|0}function iD(){return 14072}function jD(){return kD()|0}function kD(){return 14064}function lD(){return mD()|0}function mD(){return 14048}function nD(){return oD()|0}function oD(){return 14056}function pD(){return qD()|0}function qD(){return 14040}function rD(){return 14032}function sD(){return 14024}function tD(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+16|0;d=b+4|0;e=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=jz(c[(c[d>>2]|0)+4>>2]|0)|0;zb=b;return a|0}function uD(a){a=a|0;return 0}function vD(a){a=a|0;return 0}function wD(a,b){a=a|0;b=b|0;return 0}function xD(a){a=a|0;return 0}function yD(){return (zD()|0)>0|0}function zD(){return yB()|0}function AD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k;i=k+8|0;e=k+4|0;c[i>>2]=a;do if(a>>>0>=212){h=(a>>>0)/210|0;b=h*210|0;c[e>>2]=a-b;a=0;g=(BD(12736,12928,e,d)|0)-12736>>2;a:while(1){f=(c[12736+(g<<2)>>2]|0)+b|0;b=5;while(1){if(b>>>0>=47){j=6;break}d=c[12544+(b<<2)>>2]|0;e=(f>>>0)/(d>>>0)|0;if(e>>>0>>0){j=107;break a}if((f|0)==(B(e,d)|0))break;else b=b+1|0}b:do if((j|0)==6){j=0;e=211;c:while(1){b=(f>>>0)/(e>>>0)|0;do if(b>>>0>=e>>>0)if((f|0)!=(B(b,e)|0)){b=e+10|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+12|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+16|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+18|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+22|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)!=(B(d,b)|0)){b=e+28|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>=b>>>0)if((f|0)==(B(d,b)|0))d=9;else{b=e+30|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+36|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+40|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+42|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+46|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+52|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+58|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+60|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+66|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+70|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+72|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+78|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+82|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+88|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+96|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+100|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+102|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+106|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+108|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+112|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+120|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+126|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+130|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+136|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+138|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+142|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+148|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+150|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+156|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+162|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+166|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+168|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+172|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+178|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+180|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+186|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+190|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+192|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+196|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+198|0;d=(f>>>0)/(b>>>0)|0;if(d>>>0>>0){d=1;a=f;break}if((f|0)==(B(d,b)|0)){d=9;break}b=e+208|0;d=(f>>>0)/(b>>>0)|0;l=d>>>0>>0;d=(f|0)==(B(d,b)|0);b=l|d?b:e+210|0;d=l?1:d?9:0;a=l?f:a}else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else d=9;else{d=1;a=f}}else{b=e;d=9}else{b=e;d=1;a=f}while(0);switch(d&15){case 9:break b;case 0:{e=b;break}default:break c}}if(d){j=108;break a}}while(0);l=g+1|0;f=(l|0)==48;b=h+(f&1)|0;h=b;b=b*210|0;g=f?0:l}if((j|0)==107){c[i>>2]=f;a=f;break}else if((j|0)==108){c[i>>2]=f;break}}else{a=BD(12544,12736,i,d)|0;a=c[a>>2]|0}while(0);zb=k;return a|0}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[d>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=d>>>1;g=e+(b<<2)|0;a=(c[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function CD(a){a=a|0;DD(a);return}function DD(a){a=a|0;c[a>>2]=16480;ED(a,0);YF(a+28|0);GO(c[a+32>>2]|0);GO(c[a+36>>2]|0);GO(c[a+48>>2]|0);GO(c[a+60>>2]|0);return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+32|0;f=a+36|0;d=c[a+40>>2]|0;while(1){if(!d)break;g=d+-1|0;Wb[c[(c[e>>2]|0)+(g<<2)>>2]&3](b,a,c[(c[f>>2]|0)+(g<<2)>>2]|0);d=g}return}function FD(a){a=a|0;DD(a);SA(a);return}function GD(a){a=a|0;DD(a);return}function HD(a){a=a|0;c[a>>2]=16496;YF(a+4|0);return}function ID(a){a=a|0;HD(a);SA(a);return}function JD(a,b){a=a|0;b=b|0;return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function LD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function MD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function ND(a){a=a|0;return 0}function OD(a){a=a|0;return 0}function PD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;Wf()|0;i=b+12|0;j=b+16|0;h=0;while(1){if((h|0)>=(e|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f|0;k=e-h|0;g=(k|0)<(g|0)?k:g;VD(d,f,g)|0;c[i>>2]=(c[i>>2]|0)+g;d=d+g|0;f=g}else{f=Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((f|0)==-1)break;f=eg(f)|0;a[d>>0]=f;d=d+1|0;f=1}h=f+h|0}return h|0}function QD(a){a=a|0;return Wf()|0}function RD(b){b=b|0;var d=0;d=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;if((d|0)==(Wf()|0))b=Wf()|0;else{d=b+12|0;b=c[d>>2]|0;c[d>>2]=b+1;b=cg(a[b>>0]|0)|0}return b|0}function SD(a,b){a=a|0;b=b|0;return Wf()|0}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Wf()|0;j=b+24|0;k=b+28|0;f=0;while(1){if((f|0)>=(e|0))break;g=c[j>>2]|0;h=c[k>>2]|0;if(g>>>0>>0){h=h-g|0;l=e-f|0;h=(l|0)<(h|0)?l:h;VD(g,d,h)|0;c[j>>2]=(c[j>>2]|0)+h;d=d+h|0;f=h+f|0}else{h=c[(c[b>>2]|0)+52>>2]|0;l=cg(a[d>>0]|0)|0;if((Ib[h&63](b,l)|0)==(i|0))break;d=d+1|0;f=f+1|0}}return f|0}function UD(a,b){a=a|0;b=b|0;return Wf()|0}function VD(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)_O(a|0,b|0,c|0)|0;return a|0}function WD(a){a=a|0;c[a>>2]=16560;YF(a+4|0);return}function XD(a){a=a|0;WD(a);SA(a);return}function YD(a,b){a=a|0;b=b|0;return}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function _D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function $D(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function aE(a){a=a|0;return 0}function bE(a){a=a|0;return 0}function cE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;iE()|0;h=a+12|0;i=a+16|0;g=0;while(1){if((g|0)>=(d|0))break;e=c[h>>2]|0;f=c[i>>2]|0;if(e>>>0>>0){f=f-e>>2;j=d-g|0;f=(j|0)<(f|0)?j:f;kE(b,e,f)|0;c[h>>2]=(c[h>>2]|0)+(f<<2);b=b+(f<<2)|0;e=f}else{e=Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((e|0)==-1)break;e=lE(e)|0;c[b>>2]=e;b=b+4|0;e=1}g=e+g|0}return g|0}function dE(a){a=a|0;return iE()|0}function eE(a){a=a|0;var b=0;b=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(iE()|0))a=iE()|0;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=jE(c[a>>2]|0)|0}return a|0}function fE(a,b){a=a|0;b=b|0;return iE()|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=iE()|0;i=a+24|0;j=a+28|0;e=0;while(1){if((e|0)>=(d|0))break;f=c[i>>2]|0;g=c[j>>2]|0;if(f>>>0>>0){g=g-f>>2;k=d-e|0;g=(k|0)<(g|0)?k:g;kE(f,b,g)|0;c[i>>2]=(c[i>>2]|0)+(g<<2);b=b+(g<<2)|0;e=g+e|0}else{g=c[(c[a>>2]|0)+52>>2]|0;k=jE(c[b>>2]|0)|0;if((Ib[g&63](a,k)|0)==(h|0))break;b=b+4|0;e=e+1|0}}return e|0}function hE(a,b){a=a|0;b=b|0;return iE()|0}function iE(){return -1}function jE(a){a=a|0;return a|0}function kE(a,b,c){a=a|0;b=b|0;c=c|0;if(c)gz(a,b,c)|0;return a|0}function lE(a){a=a|0;return a|0}function mE(a){a=a|0;qE(a,16656);CD(a+8|0);return}function nE(a){a=a|0;mE(a);SA(a);return}function oE(a){a=a|0;mE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function pE(a){a=a|0;nE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function qE(a,b){a=a|0;b=b|0;return}function rE(a){a=a|0;vE(a,16704);GD(a+8|0);return}function sE(a){a=a|0;rE(a);SA(a);return}function tE(a){a=a|0;rE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function uE(a){a=a|0;sE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function vE(a,b){a=a|0;b=b|0;return}function wE(a){a=a|0;AE(a,16752);CD(a+4|0);return}function xE(a){a=a|0;wE(a);SA(a);return}function yE(a){a=a|0;wE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function zE(a){a=a|0;xE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function AE(a,b){a=a|0;b=b|0;return}function BE(a){a=a|0;FE(a,16800);GD(a+4|0);return}function CE(a){a=a|0;BE(a);SA(a);return}function DE(a){a=a|0;BE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function EE(a){a=a|0;CE(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function FE(a,b){a=a|0;b=b|0;return}function GE(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[a+24>>2]|0)==0|b;return}function HE(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));YN(d);return}function IE(a,b){a=a|0;b=b|0;WN(a,b+28|0);return}function JE(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function KE(a){a=a|0;c[a>>2]=16496;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function LE(a){a=a|0;c[a>>2]=16560;YN(a+4|0);a=a+8|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function ME(b){b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;if(c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0){NE(d,b);if(a[d>>0]|0?(f=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(f,c[f+16>>2]|1)}OE(d)}zb=e;return b|0}function NE(b,d){b=b|0;d=d|0;a[b>>0]=0;c[b+4>>2]=d;d=d+(c[(c[d>>2]|0)+-12>>2]|0)|0;if(!(c[d+16>>2]|0)){d=c[d+72>>2]|0;if(d|0)ME(d)|0;a[b>>0]=1}return}function OE(a){a=a|0;var b=0;a=a+4|0;b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;if((((c[b+24>>2]|0?(c[b+16>>2]|0)==0:0)?c[b+4>>2]&8192|0:0)?!(yD()|0):0)?(b=c[a>>2]|0,b=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=c[a>>2]|0;b=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(b,c[b+16>>2]|1)}return}function PE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;f=l+12|0;j=l+8|0;k=l;NE(k,b);if(a[k>>0]|0){IE(f,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);g=XF(f,56792)|0;YF(f);h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;i=c[h+24>>2]|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(f,h);m=XF(f,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(f);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;m=c[(c[g>>2]|0)+16>>2]|0;c[j>>2]=i;c[f>>2]=c[j>>2];if(!(Mb[m&31](g,f,h,e&255,d)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(k);zb=l;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;NE(i,b);do if(a[i>>0]|0){e=c[b+(c[(c[b>>2]|0)+-12>>2]|0)+24>>2]|0;f=e;if(e|0){g=f+24|0;h=c[g>>2]|0;if((h|0)==(c[f+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;d=cg(d)|0;d=Ib[h&63](f,d)|0}else{c[g>>2]=h+1;a[h>>0]=d;d=cg(d)|0}if(!(_f(d,Wf()|0)|0))break}h=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(h,c[h+16>>2]|1)}while(0);OE(i);zb=j;return b|0}function RE(a){a=a|0;a=a+16|0;c[a>>2]=c[a>>2]|1;return}function SE(){UE();return}function TE(){return}function UE(){VE(0);return}function VE(a){a=a|0;var b=0,d=0;b=c[4002]|0;WE(56368,b,56424);c[13922]=16628;c[13924]=16648;c[13923]=0;HE(55696,56368);c[13942]=0;a=Wf()|0;c[13943]=a;XE(56432,b,56488);c[13944]=16676;c[13946]=16696;c[13945]=0;HE(55784,56432);c[13964]=0;b=iE()|0;c[13965]=b;b=c[4003]|0;YE(56496,b,56544);c[13966]=16724;c[13967]=16744;HE(55868,56496);c[13985]=0;a=Wf()|0;c[13986]=a;ZE(56552,b,56600);c[13987]=16772;c[13988]=16792;HE(55952,56552);c[14006]=0;b=iE()|0;c[14007]=b;b=c[4001]|0;YE(56608,b,56656);c[14008]=16724;c[14009]=16744;HE(56036,56608);c[14027]=0;a=Wf()|0;c[14028]=a;a=c[56032+(c[(c[14008]|0)+-12>>2]|0)+24>>2]|0;c[14050]=16724;c[14051]=16744;HE(56204,a);c[14069]=0;a=Wf()|0;c[14070]=a;ZE(56664,b,56712);c[14029]=16772;c[14030]=16792;HE(56120,56664);c[14048]=0;b=iE()|0;c[14049]=b;b=c[56116+(c[(c[14029]|0)+-12>>2]|0)+24>>2]|0;c[14071]=16772;c[14072]=16792;HE(56288,b);c[14090]=0;b=iE()|0;c[14091]=b;c[55688+(c[(c[13922]|0)+-12>>2]|0)+72>>2]=55864;c[55776+(c[(c[13944]|0)+-12>>2]|0)+72>>2]=55948;b=(c[14008]|0)+-12|0;a=56032+(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|8192;a=(c[14029]|0)+-12|0;d=56116+(c[a>>2]|0)+4|0;c[d>>2]=c[d>>2]|8192;c[56032+(c[b>>2]|0)+72>>2]=55864;c[56116+(c[a>>2]|0)+72>>2]=55948;return}function WE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=17008;c[b+32>>2]=d;c[b+40>>2]=e;e=Wf()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function XE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16944;c[b+32>>2]=d;c[b+40>>2]=e;e=iE()|0;c[b+48>>2]=e;a[b+52>>0]=0;e=c[(c[b>>2]|0)+8>>2]|0;WN(g,b+4|0);Ub[e&63](b,g);YF(g);zb=f;return}function YE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;KE(b);c[b>>2]=16880;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57040)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function ZE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;LE(b);c[b>>2]=16816;c[b+32>>2]=d;WN(g,b+4|0);d=XF(g,57048)|0;YF(g);c[b+36>>2]=d;c[b+40>>2]=e;e=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=e;zb=f;return}function _E(a){a=a|0;WD(a);SA(a);return}function $E(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57048)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function aF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function bF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=jE(c[d>>2]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(iE()|0))break a;f=f+1|0;d=d+4|0}}else f=lz(d,4,e,c[b+32>>2]|0)|0;while(0);return f|0}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(JE(d,iE()|0)|0)){k=lE(d)|0;c[f>>2]=k;if(a[b+44>>0]|0){if((lz(f,4,1,c[b+32>>2]|0)|0)==1){e=15;break}b=iE()|0;break}c[m>>2]=l;e=f+4|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=iE()|0;break}}else e=15;while(0);if((e|0)==15)b=dF(d)|0;zb=o;return b|0}function dF(a){a=a|0;if(JE(a,iE()|0)|0)a=~(iE()|0);return a|0}function eF(a){a=a|0;HD(a);SA(a);return}function fF(b,d){b=b|0;d=d|0;Gb[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=XF(d,57040)|0;c[b+36>>2]=d;d=(Gb[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;a[b+44>>0]=d;return}function gF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;d=k+8|0;e=k;f=a+36|0;g=a+40|0;h=d+8|0;i=d;b=a+32|0;a:while(1){a=c[f>>2]|0;a=Mb[c[(c[a>>2]|0)+20>>2]&31](a,c[g>>2]|0,d,h,e)|0;l=(c[e>>2]|0)-i|0;if((lz(d,1,l,c[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{j=4;break a}}}if((j|0)==4)a=((yz(c[b>>2]|0)|0)!=0)<<31>>31;zb=k;return a|0}function hF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!(a[b+44>>0]|0)){f=0;while(1){if((f|0)>=(e|0))break a;h=c[(c[b>>2]|0)+52>>2]|0;g=cg(a[d>>0]|0)|0;g=Ib[h&63](b,g)|0;if((g|0)==(Wf()|0))break a;f=f+1|0;d=d+1|0}}else f=lz(d,1,e,c[b+32>>2]|0)|0;while(0);return f|0}function iF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+16|0;f=o+8|0;m=o+4|0;n=o;do if(!(_f(d,Wf()|0)|0)){k=eg(d)|0;a[f>>0]=k;if(a[b+44>>0]|0){if((lz(f,1,1,c[b+32>>2]|0)|0)==1){e=15;break}b=Wf()|0;break}c[m>>2]=l;e=f+1|0;g=b+36|0;h=b+40|0;i=l+8|0;j=l;k=b+32|0;while(1){b=c[g>>2]|0;b=Qb[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,e,n,l,i,m)|0;if((c[n>>2]|0)==(f|0)){e=14;break}if((b|0)==3){e=8;break}if(b>>>0>=2){e=14;break}f=(c[m>>2]|0)-j|0;if((lz(l,1,f,c[k>>2]|0)|0)!=(f|0)){e=14;break}if((b|0)==1)f=c[n>>2]|0;else{e=13;break}}if((e|0)==8)if((lz(f,1,1,c[k>>2]|0)|0)==1)e=13;else e=14;if((e|0)==13){e=15;break}else if((e|0)==14){b=Wf()|0;break}}else e=15;while(0);if((e|0)==15)b=dg(d)|0;zb=o;return b|0}function jF(a){a=a|0;WD(a);SA(a);return}function kF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57048)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function lF(a){a=a|0;return oF(a,0)|0}function mF(a){a=a|0;return oF(a,1)|0}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+8|0;f=l+4|0;g=l;j=JE(d,iE()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((JE(e,iE()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=lE(c[j>>2]|0)|0;c[f>>2]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=iE()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function oF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=iE()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=iE()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+4|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)c[q>>2]=a[p>>0];else if((n|0)==17){e=iE()|0;break}n=19}else{c[q>>2]=a[p>>0];n=19}while(0);b:do if((n|0)==19){c:do if(d){t=jE(c[q>>2]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=jE(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=iE()|0;break b}while(0);e=jE(c[q>>2]|0)|0}while(0)}}zb=r;return e|0}function pF(a){a=a|0;HD(a);SA(a);return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0;f=XF(d,57040)|0;e=b+36|0;c[e>>2]=f;f=Gb[c[(c[f>>2]|0)+24>>2]&127](f)|0;d=b+44|0;c[d>>2]=f;e=c[e>>2]|0;e=(Gb[c[(c[e>>2]|0)+28>>2]&127](e)|0)&1;a[b+53>>0]=e;if((c[d>>2]|0)>8)nJ(49046);else return}function rF(a){a=a|0;return uF(a,0)|0}function sF(a){a=a|0;return uF(a,1)|0}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+32|0;h=l+16|0;i=l+4|0;f=l+8|0;g=l;j=_f(d,Wf()|0)|0;k=b+52|0;e=(a[k>>0]|0)!=0;do if(j)if(e)e=d;else{e=c[b+48>>2]|0;d=((_f(e,Wf()|0)|0)^1)&1;a[k>>0]=d}else{if(e){j=b+48|0;e=eg(c[j>>2]|0)|0;a[f>>0]=e;e=c[b+36>>2]|0;switch(Qb[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,h,h+8|0,i)|0){case 1:case 2:{g=11;break}case 3:{a[h>>0]=c[j>>2];c[i>>2]=h+1;g=8;break}default:g=8}a:do if((g|0)==8){e=b+32|0;while(1){f=c[i>>2]|0;if(f>>>0<=h>>>0){f=1;e=0;break a}b=f+-1|0;c[i>>2]=b;if((cA(a[b>>0]|0,c[e>>2]|0)|0)==-1){g=11;break}}}while(0);if((g|0)==11){f=0;e=Wf()|0}if(f)e=j;else break}else e=b+48|0;c[e>>2]=d;a[k>>0]=1;e=d}while(0);zb=l;return e|0}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+32|0;p=r+16|0;q=r+8|0;l=r+4|0;m=r;g=b+52|0;if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){d=Wf()|0;c[f>>2]=d;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;o=b+32|0;f=0;while(1){if(f>>>0>=e>>>0){n=9;break}g=Zz(c[o>>2]|0)|0;if((g|0)==-1){n=8;break}a[p+f>>0]=g;f=f+1|0}if((n|0)==8)e=Wf()|0;else if((n|0)==9){do if(!(a[b+53>>0]|0)){i=b+40|0;j=b+36|0;k=q+1|0;a:while(1){s=c[i>>2]|0;g=s;f=c[g>>2]|0;g=c[g+4>>2]|0;t=c[j>>2]|0;h=p+e|0;switch(Qb[c[(c[t>>2]|0)+16>>2]&15](t,s,p,h,l,q,k,m)|0){case 3:{n=15;break a}case 2:{n=17;break a}case 1:break;default:break a}t=c[i>>2]|0;c[t>>2]=f;c[t+4>>2]=g;if((e|0)==8){n=17;break}f=Zz(c[o>>2]|0)|0;if((f|0)==-1){n=17;break}a[h>>0]=f;e=e+1|0}if((n|0)==15)a[q>>0]=a[p>>0]|0;else if((n|0)==17){e=Wf()|0;break}n=19}else{a[q>>0]=a[p>>0]|0;n=19}while(0);b:do if((n|0)==19){c:do if(d){t=cg(a[q>>0]|0)|0;c[b+48>>2]=t}else{do{if((e|0)<=0)break c;e=e+-1|0;t=cg(a[p+e>>0]|0)|0}while((cA(t,c[o>>2]|0)|0)!=-1);e=Wf()|0;break b}while(0);e=cg(a[q>>0]|0)|0}while(0)}}zb=r;return e|0}function vF(a){a=a|0;CF(a);return}function wF(a){a=a|0;vF(a);SA(a);return}function xF(a){a=a|0;if(a|0)Sb[c[(c[a>>2]|0)+4>>2]&255](a);return}function yF(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=c;while(1){if((e|0)==(f|0)){h=7;break}if((b|0)==(d|0)){b=-1;break}c=a[b>>0]|0;g=a[e>>0]|0;if(c<<24>>24>24){b=-1;break}if(g<<24>>24>24){b=1;break}e=e+1|0;b=b+1|0}if((h|0)==7)b=(b|0)!=(d|0)&1;return b|0}function zF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;BF(a,d,e);return}function AF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=0;while(1){if((c|0)==(d|0))break;e=(b<<4)+(a[c>>0]|0)|0;f=e&-268435456;b=(f>>>24|f)^e;c=c+1|0}return b|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function CF(a){a=a|0;return}function DF(a){a=a|0;CF(a);return}function EF(a){a=a|0;DF(a);SA(a);return}function FF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=b;while(1){if((e|0)==(f|0)){h=7;break}if((a|0)==(d|0)){a=-1;break}b=c[a>>2]|0;g=c[e>>2]|0;if((b|0)<(g|0)){a=-1;break}if((g|0)<(b|0)){a=1;break}e=e+4|0;a=a+4|0}if((h|0)==7)a=(a|0)!=(d|0)&1;return a|0}function GF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;IF(a,d,e);return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=0;while(1){if((b|0)==(d|0))break;e=(c[b>>2]|0)+(a<<4)|0;f=e&-268435456;a=(f>>>24|f)^e;b=b+4|0}return a|0}function IF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function JF(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return}function KF(a){a=a|0;CF(a);return}function LF(a){a=a|0;CF(a);SA(a);return}function MF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56736)|0;YF(i);IE(i,f);b=XF(i,56752)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(FG(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;jO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function NF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=DG(a,j,i,e,f,g)|0;zb=h;return g|0}function OF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=BG(a,j,i,e,f,g)|0;zb=h;return g|0}function PF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=zG(a,j,i,e,f,g)|0;zb=h;return g|0}function QF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=xG(a,j,i,e,f,g)|0;zb=h;return g|0}function RF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=vG(a,j,i,e,f,g)|0;zb=h;return g|0}function SF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=pG(a,j,i,e,f,g)|0;zb=h;return g|0}function TF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=nG(a,j,i,e,f,g)|0;zb=h;return g|0}function UF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=lG(a,j,i,e,f,g)|0;zb=h;return g|0}function VF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=gG(a,j,i,e,f,g)|0;zb=h;return g|0}function WF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+240|0;v=y+192|0;t=y+160|0;w=y+220|0;x=y+208|0;u=y+204|0;q=y;r=y+200|0;s=y+196|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56736)|0;Kb[c[(c[b>>2]|0)+32>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function XF(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return bG(a,aG(b)|0)|0}function YF(a){a=a|0;var b=0,d=0;a=c[a>>2]|0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b)Sb[c[(c[a>>2]|0)+8>>2]&255](a);return}function ZF(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if(b<<24>>24==h<<24>>24?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+26|0;h=0;while(1){m=l+h|0;if((h|0)==26){m=i;break}if((a[m>>0]|0)==b<<24>>24)break;else h=h+1|0}m=m-l|0;if((m|0)>23)m=-1;else{switch(d|0){case 10:case 8:{if((m|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function _F(){var b=0;if((a[54800]|0)==0?nB(54800)|0:0){b=az(2147483647,49197,0)|0;c[14186]=b;pB(54800)}return c[14186]|0}function $F(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=Dz(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function aG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=zb;zb=zb+48|0;b=f+32|0;d=f+24|0;e=f;g=f+16|0;c[g>>2]=143;c[g+4>>2]=0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];dG(e,b,a);if((c[a>>2]|0)!=-1){c[b>>2]=e;c[d>>2]=b;$N(a,d,144)}zb=f;return (c[a+4>>2]|0)+-1|0}function bG(a,b){a=a|0;b=b|0;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}function cG(a){a=a|0;var b=0;b=c[14187]|0;c[14187]=b+1;c[a+4>>2]=b+1;return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;b=c[b+4>>2]|0;c[a>>2]=d;c[a+4>>2]=e;c[a+8>>2]=b;return}function eG(a){a=a|0;fG(c[c[a>>2]>>2]|0);return}function fG(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;e=c[a+8>>2]|0;d=(c[a>>2]|0)+(e>>1)|0;if(!(e&1))a=b;else a=c[(c[d>>2]|0)+b>>2]|0;Sb[a&255](d);return}function gG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function hG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;i=h;IE(i,d);d=XF(i,56736)|0;Kb[c[(c[d>>2]|0)+32>>2]&15](d,12928,12960,e)|0;e=XF(i,56752)|0;d=Gb[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[f>>0]=d;f=Gb[c[(c[e>>2]|0)+16>>2]&127](e)|0;a[g>>0]=f;Ub[c[(c[e>>2]|0)+20>>2]&63](b,e);YF(i);zb=h;return}function iG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if(b<<24>>24==h<<24>>24)if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if(b<<24>>24==i<<24>>24?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+32|0;h=0;while(1){o=n+h|0;if((h|0)==32){o=i;break}if((a[o>>0]|0)==b<<24>>24)break;else h=h+1|0}h=o-n|0;if((h|0)>31)o=-1;else{i=a[12928+h>>0]|0;switch(h|0){case 24:case 25:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 23:case 22:{a[e>>0]=80;o=c[g>>2]|0;c[g>>2]=o+1;a[o>>0]=i;o=0;break a}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>21){o=0;break a}c[m>>2]=(c[m>>2]|0)+1;o=0;break a}}}}while(0);return o|0}function jG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+rA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function kG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=b+11|0;h=a[j>>0]|0;k=b+4|0;g=c[k>>2]|0;i=h&255;do if((h<<24>>24<0?g:i)|0){if((d|0)!=(e|0)){g=e;h=d;while(1){g=g+-4|0;if(h>>>0>=g>>>0)break;i=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=i;h=h+4|0}h=a[j>>0]|0;i=h&255;g=c[k>>2]|0}j=h<<24>>24<0;b=j?c[b>>2]|0:b;k=e+-4|0;j=b+(j?g:i)|0;g=b;while(1){h=a[g>>0]|0;i=h<<24>>24>0&h<<24>>24!=127;if(d>>>0>=k>>>0)break;if(i?(c[d>>2]|0)!=(h<<24>>24|0):0){l=11;break}d=d+4|0;g=(j-g|0)>1?g+1|0:g}if((l|0)==11){c[f>>2]=4;break}if(i?((c[k>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function lG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=cg(a[f>>0]|0)|0;if(iG(f&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+1;cg(a[f>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+qA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function nG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+240|0;s=D+160|0;t=D+231|0;u=D+230|0;C=D+216|0;B=D+204|0;v=D+200|0;w=D;x=D+196|0;y=D+192|0;z=D+229|0;r=D+228|0;hG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(iG(g&255,z,r,b,v,a[t>>0]|0,a[u>>0]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;f=i;if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{g=ox()|0;g=c[g>>2]|0;j=ox()|0;c[j>>2]=0;e=+pA(a,f,_F()|0);a=ox()|0;a=c[a>>2]|0;if(!a){j=ox()|0;c[j>>2]=g}if((c[f>>2]|0)==(b|0)){if((a|0)==68)h=6}else{e=0.0;h=6}if((h|0)==6)c[d>>2]=4}zb=i;return +e}function pG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function qG(a){a=a|0;switch(c[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function rG(a,b,c){a=a|0;b=b|0;c=c|0;return uG(a,b,c)|0}function sG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=zb;zb=zb+16|0;g=f;IE(g,d);d=XF(g,56752)|0;h=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[e>>0]=h;Ub[c[(c[d>>2]|0)+20>>2]&63](b,d);YF(g);zb=f;return}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;f=0;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;g=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if((f|0)==68){c[e>>2]=4;b=-1;f=-1;break}else{l=PO(0,0,b|0,g|0)|0;f=F()|0;b=j?l:b;f=j?f:g;break}else{c[e>>2]=4;b=0;f=0}while(0)}while(0);E(f|0);zb=k;return b|0}function uG(a,b,c){a=a|0;b=b|0;c=c|0;return 12928}function vG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function wG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function xG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function yG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0))if(f>>>0>0|(f|0)==0&b>>>0>4294967295|(g|0)==68){c[e>>2]=4;b=-1;break}else{b=j?0-b|0:b;break}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function zG(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+240|0;s=C+224|0;z=C+212|0;A=C+200|0;t=C+196|0;u=C;w=C+192|0;x=C+188|0;y=qG(g)|0;r=rG(d,g,C+160|0)|0;sG(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=cg(a[g>>0]|0)|0;if(ZF(g&255,y,d,t,x,a[s>>0]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+1;cg(a[g>>0]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=cg(a[d>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function AG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+16|0;i=k;do if((b|0)==(d|0)){c[e>>2]=4;b=0}else{j=(a[b>>0]|0)==45;if(j){b=b+1|0;if((b|0)==(d|0)){c[e>>2]=4;b=0;break}}h=ox()|0;h=c[h>>2]|0;g=ox()|0;c[g>>2]=0;b=tx(b,i,f,_F()|0)|0;f=F()|0;g=ox()|0;g=c[g>>2]|0;if(!g){l=ox()|0;c[l>>2]=h}do if((c[i>>2]|0)==(d|0)){if(f>>>0>0|(f|0)==0&b>>>0>65535|(g|0)==68){c[e>>2]=4;b=-1;break}if(j)b=0-b&65535;else b=b&65535}else{c[e>>2]=4;b=0}while(0)}while(0);zb=k;return b|0}function BG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function CG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;e=0;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}if((c[g>>2]|0)==(b|0)){if((f|0)==68){c[d>>2]=4;e=(e|0)>0|(e|0)==0&a>>>0>0;a=e?-1:0;e=e?2147483647:-2147483648}}else{c[d>>2]=4;a=0;e=0}}E(e|0);zb=i;return a|0}function DG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+240|0;r=B+224|0;y=B+212|0;z=B+200|0;s=B+196|0;t=B;v=B+192|0;w=B+188|0;x=qG(f)|0;q=rG(b,f,B+160|0)|0;sG(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(_f(f,Wf()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=cg(a[f>>0]|0)|0;if(!(_f(f,Wf()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=cg(a[f>>0]|0)|0;if(ZF(f&255,x,b,s,w,a[r>>0]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+1;cg(a[f>>0]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function EG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;g=i;if((a|0)==(b|0)){c[d>>2]=4;a=0}else{h=ox()|0;h=c[h>>2]|0;f=ox()|0;c[f>>2]=0;a=Cx(a,g,e,_F()|0)|0;e=F()|0;f=ox()|0;f=c[f>>2]|0;if(!f){j=ox()|0;c[j>>2]=h}a:do if((c[g>>2]|0)==(b|0)){do if((f|0)==68){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{c[d>>2]=4;a=0}while(0)}zb=i;return a|0}function FG(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}n=e;o=j;k=0;while(1){if((n|0)==(f|0))break;m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;l=l+-1|0;k=k+1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=cg(a[m>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;k=k&255;if(!i)k=Ib[c[(c[g>>2]|0)+12>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+11|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=a[m+t>>0]|0;if(!i)m=Ib[c[(c[g>>2]|0)+12>>2]&63](g,m)|0;if(k<<24>>24!=m<<24>>24){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+1;cg(a[n>>0]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+11>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=cg(a[k>>0]|0)|0;if(_f(k,Wf()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=cg(a[k>>0]|0)|0;if(!(_f(k,Wf()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function GG(a){a=a|0;CF(a);return}function HG(a){a=a|0;CF(a);SA(a);return}function IG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+48|0;i=o+40|0;n=o;j=o+32|0;k=o+36|0;l=o+28|0;m=o+24|0;if(!(c[f+4>>2]&1)){c[j>>2]=-1;m=c[(c[b>>2]|0)+16>>2]|0;c[k>>2]=c[d>>2];c[l>>2]=c[e>>2];c[n>>2]=c[k>>2];c[i>>2]=c[l>>2];n=Ob[m&63](b,n,i,f,g,j)|0;c[d>>2]=n;switch(c[j>>2]|0){case 0:{a[h>>0]=0;break}case 1:{a[h>>0]=1;break}default:{a[h>>0]=1;c[g>>2]=4}}i=c[d>>2]|0}else{IE(i,f);l=XF(i,56768)|0;YF(i);IE(i,f);b=XF(i,56776)|0;YF(i);Ub[c[(c[b>>2]|0)+24>>2]&63](n,b);Ub[c[(c[b>>2]|0)+28>>2]&63](n+12|0,b);c[m>>2]=c[e>>2];b=n+24|0;c[i>>2]=c[m>>2];i=(gH(d,i,n,b,l,g,1)|0)==(n|0)&1;a[h>>0]=i;i=c[d>>2]|0;do{b=b+-12|0;wO(b)}while((b|0)!=(n|0))}zb=o;return i|0}function JG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=fH(a,j,i,e,f,g)|0;zb=h;return g|0}function KG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eH(a,j,i,e,f,g)|0;zb=h;return g|0}function LG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=dH(a,j,i,e,f,g)|0;zb=h;return g|0}function MG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=cH(a,j,i,e,f,g)|0;zb=h;return g|0}function NG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=bH(a,j,i,e,f,g)|0;zb=h;return g|0}function OG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=ZG(a,j,i,e,f,g)|0;zb=h;return g|0}function PG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=YG(a,j,i,e,f,g)|0;zb=h;return g|0}function QG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=XG(a,j,i,e,f,g)|0;zb=h;return g|0}function RG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=UG(a,j,i,e,f,g)|0;zb=h;return g|0}function SG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+304|0;v=y+264|0;t=y+160|0;w=y+292|0;x=y+280|0;u=y+276|0;q=y;r=y+272|0;s=y+268|0;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[w+(b<<2)>>2]=0;b=b+1|0}IE(x,f);b=XF(x,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,t)|0;YF(x);c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[x+(b<<2)>>2]=0;b=b+1|0}p=x+11|0;o=x+8|0;if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b;c[r>>2]=q;c[s>>2]=0;n=x+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;z=22;break}}else z=22;while(0);if((z|0)==22){z=0;if(k){i=0;break}else i=0}f=a[p>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[u>>2]|0)==(b+f|0)){oO(x,f<<1,0);if((a[p>>0]|0)<0)b=(c[o>>2]&2147483647)+-1|0;else b=10;oO(x,b,0);b=(a[p>>0]|0)<0?c[x>>2]|0:x;c[u>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,16,b,u,s,0,w,q,r,t)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}oO(x,(c[u>>2]|0)-b|0,0);t=(a[p>>0]|0)<0?c[x>>2]|0:x;u=_F()|0;c[v>>2]=h;if(($F(t,u,49194,v)|0)!=1)c[g>>2]=4;if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{z=52;break}else{c[e>>2]=0;z=50;break}}else z=50;while(0);if((z|0)==50?f:0)z=52;if((z|0)==52)c[g>>2]=c[g>>2]|2;z=c[d>>2]|0;jO(x);jO(w);zb=y;return z|0}function TG(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=a[i+11>>0]|0;if((b|0)==(h|0)?((n<<24>>24<0?c[i+4>>2]|0:n&255)|0)!=0:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}f=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=f;c[g>>2]=0;m=0;break}i=l+104|0;h=0;while(1){m=l+(h<<2)|0;if((h|0)==26){m=i;break}if((c[m>>2]|0)==(b|0))break;else h=h+1|0}m=m-l|0;h=m>>2;if((m|0)>92)m=-1;else{switch(d|0){case 10:case 8:{if((h|0)>=(d|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-e|0)>=3){m=-1;break a}if((a[o+-1>>0]|0)!=48){m=-1;break a}c[g>>2]=0;m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break a}break}default:{}}m=a[12928+h>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function UG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+jG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function VG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;IE(h,b);b=XF(h,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12960,d)|0;d=XF(h,56776)|0;b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[e>>2]=b;e=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;c[f>>2]=e;Ub[c[(c[d>>2]|0)+20>>2]&63](a,d);YF(h);zb=g;return}function WG(b,d,e,f,g,h,i,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0;a:do if((b|0)==(h|0))if(a[d>>0]|0){a[d>>0]=0;e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=46;g=a[j+11>>0]|0;if(((g<<24>>24<0?c[j+4>>2]|0:g&255)|0)!=0?(o=c[l>>2]|0,(o-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;o=0}else o=0}else o=-1;else{if((b|0)==(i|0)?(i=a[j+11>>0]|0,(i<<24>>24<0?c[j+4>>2]|0:i&255)|0):0){if(!(a[d>>0]|0)){o=-1;break}o=c[l>>2]|0;if((o-k|0)>=160){o=0;break}k=c[m>>2]|0;c[l>>2]=o+4;c[o>>2]=k;c[m>>2]=0;o=0;break}i=n+128|0;h=0;while(1){o=n+(h<<2)|0;if((h|0)==32){o=i;break}if((c[o>>2]|0)==(b|0))break;else h=h+1|0}h=o-n|0;if((h|0)<=124){i=a[12928+(h>>2)>>0]|0;n=h+-88|0;switch(n>>>2|n<<30|0){case 2:case 3:{o=c[g>>2]|0;if((o|0)!=(f|0)?(a[o+-1>>0]&95)!=(a[e>>0]&127):0){o=-1;break a}c[g>>2]=o+1;a[o>>0]=i;o=0;break a}case 1:case 0:{a[e>>0]=80;break}default:{o=i&95;if((((o|0)==(a[e>>0]|0)?(a[e>>0]=o|128,a[d>>0]|0):0)?(a[d>>0]=0,e=a[j+11>>0]|0,(e<<24>>24<0?c[j+4>>2]|0:e&255)|0):0)?(p=c[l>>2]|0,(p-k|0)<160):0){k=c[m>>2]|0;c[l>>2]=p+4;c[p>>2]=k}}}l=c[g>>2]|0;c[g>>2]=l+1;a[l>>0]=i;if((h|0)>84)o=0;else{c[m>>2]=(c[m>>2]|0)+1;o=0}}else o=-1}while(0);return o|0}function XG(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,f,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){f=c[k+12>>2]|0;if((f|0)==(c[k+16>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}f=a[p>>0]|0;f=f<<24>>24<0?c[o>>2]|0:f&255;if((c[v>>2]|0)==(b+f|0)){oO(B,f<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+f}l=k+12|0;f=c[l>>2]|0;m=k+16|0;if((f|0)==(c[m>>2]|0))f=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else f=jE(c[f>>2]|0)|0;if(WG(f,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=f+4;jE(c[f>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+mG(b,c[v>>2]|0,h);g[i>>3]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?f:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function YG(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+336|0;s=D+160|0;t=D+328|0;u=D+324|0;C=D+312|0;B=D+300|0;v=D+296|0;w=D;x=D+292|0;y=D+288|0;z=D+333|0;r=D+332|0;VG(C,g,s,t,u);c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}p=B+11|0;q=B+8|0;if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b;c[x>>2]=w;c[y>>2]=0;a[z>>0]=1;a[r>>0]=69;o=B+4|0;k=c[d>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[d>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[e>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[e>>2]=0;E=19;break}}else E=19;while(0);if((E|0)==19){E=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[v>>2]|0)==(b+g|0)){oO(B,g<<1,0);if((a[p>>0]|0)<0)b=(c[q>>2]&2147483647)+-1|0;else b=10;oO(B,b,0);b=(a[p>>0]|0)<0?c[B>>2]|0:B;c[v>>2]=b+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(WG(g,z,r,b,v,c[t>>2]|0,c[u>>2]|0,C,w,x,y,s)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}u=a[C+11>>0]|0;if(!((a[z>>0]|0)==0?1:((u<<24>>24<0?c[C+4>>2]|0:u&255)|0)==0)?(A=c[x>>2]|0,(A-w|0)<160):0){z=c[y>>2]|0;c[x>>2]=A+4;c[A>>2]=z}F=+oG(b,c[v>>2]|0,h);f[i>>2]=F;kG(C,w,c[x>>2]|0,h);if(k){b=c[k+12>>2]|0;if((b|0)==(c[k+16>>2]|0))b=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1}else g=0}else g=1;do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{E=50;break}else{c[e>>2]=0;E=48;break}}else E=48;while(0);if((E|0)==48?g:0)E=50;if((E|0)==50)c[h>>2]=c[h>>2]|2;E=c[d>>2]|0;jO(B);jO(C);zb=D;return E|0}function ZG(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=tG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function _G(a,b,c){a=a|0;b=b|0;c=c|0;return aH(a,b,c)|0}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;IE(f,b);b=XF(f,56776)|0;g=Gb[c[(c[b>>2]|0)+16>>2]&127](b)|0;c[d>>2]=g;Ub[c[(c[b>>2]|0)+20>>2]&63](a,b);YF(f);zb=e;return}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=zb;zb=zb+16|0;e=a;IE(e,b);b=XF(e,56768)|0;Kb[c[(c[b>>2]|0)+48>>2]&15](b,12928,12954,d)|0;YF(e);zb=a;return d|0}function bH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=wG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function cH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=yG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function dH(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+304|0;s=C+300|0;z=C+288|0;A=C+276|0;t=C+272|0;u=C;w=C+268|0;x=C+264|0;y=qG(g)|0;r=_G(d,g,C+160|0)|0;$G(z,g,s);c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[A+(d<<2)>>2]=0;d=d+1|0}p=A+11|0;q=A+8|0;if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d;c[w>>2]=u;c[x>>2]=0;o=A+4|0;k=c[e>>2]|0;j=k;a:while(1){if(k){g=c[k+12>>2]|0;if((g|0)==(c[k+16>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(JE(g,iE()|0)|0){c[e>>2]=0;n=0;l=1;k=0}else{n=j;l=0}}else{n=0;l=1;k=0}j=c[f>>2]|0;do if(j){g=c[j+12>>2]|0;if((g|0)==(c[j+16>>2]|0))g=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(l)break;else break a;else{c[f>>2]=0;B=19;break}}else B=19;while(0);if((B|0)==19){B=0;if(l){j=0;break}else j=0}g=a[p>>0]|0;g=g<<24>>24<0?c[o>>2]|0:g&255;if((c[t>>2]|0)==(d+g|0)){oO(A,g<<1,0);if((a[p>>0]|0)<0)d=(c[q>>2]&2147483647)+-1|0;else d=10;oO(A,d,0);d=(a[p>>0]|0)<0?c[A>>2]|0:A;c[t>>2]=d+g}l=k+12|0;g=c[l>>2]|0;m=k+16|0;if((g|0)==(c[m>>2]|0))g=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else g=jE(c[g>>2]|0)|0;if(TG(g,y,d,t,x,c[s>>2]|0,z,u,w,r)|0)break;g=c[l>>2]|0;if((g|0)==(c[m>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=g+4;jE(c[g>>2]|0)|0}j=n}s=a[z+11>>0]|0;if((s<<24>>24<0?c[z+4>>2]|0:s&255)|0?(v=c[w>>2]|0,(v-u|0)<160):0){x=c[x>>2]|0;c[w>>2]=v+4;c[v>>2]=x}y=AG(d,c[t>>2]|0,h,y)|0;b[i>>1]=y;kG(z,u,c[w>>2]|0,h);if(k){d=c[k+12>>2]|0;if((d|0)==(c[k+16>>2]|0))d=Gb[c[(c[n>>2]|0)+36>>2]&127](k)|0;else d=jE(c[d>>2]|0)|0;if(JE(d,iE()|0)|0){c[e>>2]=0;g=1}else g=0}else g=1;do if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=jE(c[d>>2]|0)|0;if(!(JE(d,iE()|0)|0))if(g)break;else{B=50;break}else{c[f>>2]=0;B=48;break}}else B=48;while(0);if((B|0)==48?g:0)B=50;if((B|0)==50)c[h>>2]=c[h>>2]|2;B=c[e>>2]|0;jO(A);jO(z);zb=C;return B|0}function eH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}w=CG(b,c[s>>2]|0,g,x)|0;x=F()|0;c[h>>2]=w;c[h+4>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function fH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+304|0;r=B+300|0;y=B+288|0;z=B+276|0;s=B+272|0;t=B;v=B+268|0;w=B+264|0;x=qG(f)|0;q=_G(b,f,B+160|0)|0;$G(y,f,r);c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}o=z+11|0;p=z+8|0;if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b;c[v>>2]=t;c[w>>2]=0;n=z+4|0;j=c[d>>2]|0;i=j;a:while(1){if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(JE(f,iE()|0)|0){c[d>>2]=0;m=0;k=1;j=0}else{m=i;k=0}}else{m=0;k=1;j=0}i=c[e>>2]|0;do if(i){f=c[i+12>>2]|0;if((f|0)==(c[i+16>>2]|0))f=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(k)break;else break a;else{c[e>>2]=0;A=19;break}}else A=19;while(0);if((A|0)==19){A=0;if(k){i=0;break}else i=0}f=a[o>>0]|0;f=f<<24>>24<0?c[n>>2]|0:f&255;if((c[s>>2]|0)==(b+f|0)){oO(z,f<<1,0);if((a[o>>0]|0)<0)b=(c[p>>2]&2147483647)+-1|0;else b=10;oO(z,b,0);b=(a[o>>0]|0)<0?c[z>>2]|0:z;c[s>>2]=b+f}k=j+12|0;f=c[k>>2]|0;l=j+16|0;if((f|0)==(c[l>>2]|0))f=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else f=jE(c[f>>2]|0)|0;if(TG(f,x,b,s,w,c[r>>2]|0,y,t,v,q)|0)break;f=c[k>>2]|0;if((f|0)==(c[l>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=f+4;jE(c[f>>2]|0)|0}i=m}r=a[y+11>>0]|0;if((r<<24>>24<0?c[y+4>>2]|0:r&255)|0?(u=c[v>>2]|0,(u-t|0)<160):0){w=c[w>>2]|0;c[v>>2]=u+4;c[u>>2]=w}x=EG(b,c[s>>2]|0,g,x)|0;c[h>>2]=x;kG(y,t,c[v>>2]|0,g);if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[m>>2]|0)+36>>2]&127](j)|0;else b=jE(c[b>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;f=1}else f=0}else f=1;do if(i){b=c[i+12>>2]|0;if((b|0)==(c[i+16>>2]|0))b=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(f)break;else{A=50;break}else{c[e>>2]=0;A=48;break}}else A=48;while(0);if((A|0)==48?f:0)A=50;if((A|0)==50)c[g>>2]=c[g>>2]|2;A=c[d>>2]|0;jO(z);jO(y);zb=B;return A|0}function gH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+112|0;k=w;l=(f-e|0)/12|0;if(l>>>0>100){k=FO(l)|0;if(!k)aO();else{j=k;u=k}}else{j=k;u=0}k=0;n=e;o=j;while(1){if((n|0)==(f|0))break;m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if(!m){a[o>>0]=2;k=k+1|0;l=l+-1|0}else a[o>>0]=1;n=n+12|0;o=o+1|0}t=0;r=k;while(1){k=c[b>>2]|0;do if(k){m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=jE(c[m>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;o=1;break}else{o=(c[b>>2]|0)==0;break}}else o=1;while(0);m=c[d>>2]|0;if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[d>>2]=0;k=1;m=0}else k=0}else{k=1;m=0}n=c[b>>2]|0;if(!((l|0)!=0&(o^k)))break;k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!i)k=Ib[c[(c[g>>2]|0)+28>>2]&63](g,k)|0;s=t+1|0;p=e;o=0;q=j;while(1){if((p|0)==(f|0))break;do if((a[q>>0]|0)==1){n=p+8+3|0;if((a[n>>0]|0)<0)m=c[p>>2]|0;else m=p;m=c[m+(t<<2)>>2]|0;if(!i)m=Ib[c[(c[g>>2]|0)+28>>2]&63](g,m)|0;if((k|0)!=(m|0)){a[q>>0]=0;m=o;n=r;l=l+-1|0;break}m=a[n>>0]|0;if(m<<24>>24<0)m=c[p+4>>2]|0;else m=m&255;if((m|0)==(s|0)){a[q>>0]=2;m=1;n=r+1|0;l=l+-1|0}else{m=1;n=r}}else{m=o;n=r}while(0);p=p+12|0;o=m;q=q+1|0;r=n}a:do if(o){k=c[b>>2]|0;m=k+12|0;n=c[m>>2]|0;if((n|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[m>>2]=n+4;jE(c[n>>2]|0)|0}if((r+l|0)>>>0>1){n=e;o=j;k=r;while(1){if((n|0)==(f|0))break a;if((a[o>>0]|0)==2){m=a[n+8+3>>0]|0;if(m<<24>>24<0)m=c[n+4>>2]|0;else m=m&255;if((m|0)!=(s|0)){a[o>>0]=0;k=k+-1|0}}n=n+12|0;o=o+1|0}}else k=r}else k=r;while(0);t=s;r=k}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;l=1;break}else{l=(c[b>>2]|0)==0;break}}else l=1;while(0);do if(m){k=c[m+12>>2]|0;if((k|0)==(c[m+16>>2]|0))k=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else{v=79;break}else{c[d>>2]=0;v=41;break}}else v=41;while(0);if((v|0)==41?l:0)v=79;if((v|0)==79)c[h>>2]=c[h>>2]|2;while(1){if((e|0)==(f|0)){v=84;break}if((a[j>>0]|0)==2)break;e=e+12|0;j=j+1|0}if((v|0)==84){c[h>>2]=c[h>>2]|4;e=f}GO(u);zb=w;return e|0}function hH(a){a=a|0;CF(a);return}function iH(a){a=a|0;CF(a);SA(a);return}function jH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56752)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+11|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+(h?c[j>>2]|0:b&255)|0))break;b=a[g>>0]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=cg(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+1;a[h>>0]=b;b=cg(b)|0}if(_f(b,Wf()|0)|0)c[d>>2]=0}g=g+1|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;jO(k)}zb=l;return b|0}function kH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1|0)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function lH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function mH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*(p<<1|21)|0)+15&-16)|0;IE(j,e);xH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1|0)|0)+15&-16)|0;IE(j,d);xH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=$f(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function pH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=zb;zb=zb+176|0;r=v+168|0;m=v+144|0;l=v+128|0;i=v+120|0;h=v+104|0;k=v+96|0;o=v+64|0;n=v+164|0;p=v;u=v+160|0;s=v+156|0;t=v+152|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;y=a;z=a}}else{q=a;y=0;z=c[n>>2]|0}h=z+q|0;i=sH(z,h,d)|0;if((z|0)!=(o|0)){a=FO(q<<1)|0;if(!a)aO();else{w=a;x=a}}else{w=p;x=0}IE(r,d);vH(z,i,h,w,u,s,r);YF(r);c[t>>2]=c[b>>2];b=c[u>>2]|0;z=c[s>>2]|0;c[r>>2]=c[t>>2];z=$f(r,w,b,z,d,e)|0;GO(x);GO(y);zb=v;return z|0}function qH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+96|0;l=b+72|0;k=b+80|0;h=b+48|0;j=b;m=b+76|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56736)|0;YF(l);Kb[c[(c[n>>2]|0)+32>>2]&15](n,h,k,j)|0;g=j+g|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=$f(l,j,(i|0)==(k|0)?g:j+(i-h)|0,g,e,f)|0;zb=b;return g|0}function rH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=zb;zb=zb+16|0;h=g;c[h>>2]=f;f=ez(d)|0;d=Jx(a,b,e,h)|0;if(f|0)ez(f)|0;zb=g;return d|0}function sH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do switch((c[e+4>>2]&176)<<24>>24){case 16:{e=a[b>>0]|0;switch(e<<24>>24){case 43:case 45:{b=b+1|0;break a}default:{}}if((d-b|0)>1&e<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}b=b+2|0}else f=7;break}case 32:{b=d;break}default:f=7}while(0);return b|0}function tH(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}g=d&260;e=d&16384;f=(g|0)==260;if(f)h=0;else{a[b>>0]=46;a[b+1>>0]=42;h=1;b=b+2|0}while(1){d=a[c>>0]|0;if(!(d<<24>>24))break;a[b>>0]=d;c=c+1|0;b=b+1|0}a:do switch(g&511){case 4:{d=e>>>9&255^102;break}case 256:{d=e>>>9&255^101;break}default:{d=e>>>9&255;if(f){d=d^97;break a}else{d=d^103;break a}}}while(0);a[b>>0]=d;return h|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=ez(b)|0;b=bA(a,d,g)|0;if(e|0)ez(e)|0;zb=f;return b|0}function vH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56736)|0;r=XF(i,56752)|0;Ub[c[(c[r>>2]|0)+20>>2]&63](s,r);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{q=Ib[c[(c[t>>2]|0)+28>>2]&63](t,i)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=q;j=b+1|0;break}default:j=b}q=e;a:do if((q-j|0)>1?(a[j>>0]|0)==48:0){i=j+1|0;switch(a[i>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+28>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=o;j=j+2|0;p=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[i>>0]|0)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=j;while(1){if(i>>>0>=e>>>0)break a;p=a[i>>0]|0;if(!(_y(p,_F()|0)|0))break a;i=i+1|0}}else u=4;while(0);b:do if((u|0)==4){i=j;while(1){if(i>>>0>=e>>>0)break b;p=a[i>>0]|0;if(!(Zy(p,_F()|0)|0))break b;i=i+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((j|0)!=(i|0)){k=i;l=j;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[r>>2]|0)+16>>2]&127](r)|0;m=j;l=0;k=0;while(1){if(m>>>0>=i>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+28>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+1;a[w>>0]=x;m=m+1|0;l=l+1|0}k=f+(j-b)|0;j=c[h>>2]|0;if((k|0)==(j|0))k=t;else while(1){j=j+-1|0;if(k>>>0>=j>>>0){k=t;break c}x=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=x;k=k+1|0}}else{Kb[c[(c[t>>2]|0)+32>>2]&15](t,j,i,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(i-j);k=t}while(0);while(1){if(i>>>0>=e>>>0)break;j=a[i>>0]|0;if(j<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+28>>2]&63](t,j)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}if((u|0)==32){w=Gb[c[(c[r>>2]|0)+12>>2]&127](r)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=w;i=i+1|0}Kb[c[(c[t>>2]|0)+32>>2]&15](t,i,e,c[h>>2]|0)|0;x=(c[h>>2]|0)+(q-i)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b)|0;jO(s);zb=v;return}function wH(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=b;while(1){b=a[c>>0]|0;if(!(b<<24>>24))break;a[f>>0]=b;c=c+1|0;f=f+1|0}switch(e&74){case 64:{b=111;break}case 8:{b=e>>>9&32^120;break}default:b=d?100:117}a[f>>0]=b;return}function xH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56736)|0;l=XF(i,56752)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+28>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+28>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+1|0;k=k+1|0}i=f+(i-b)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-1|0;if(i>>>0>=j>>>0)break;t=a[i>>0]|0;a[i>>0]=a[j>>0]|0;a[j>>0]=t;i=i+1|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+32>>2]&15](p,b,e,f)|0;i=f+(e-b)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b)|0;jO(q);zb=r;return}function yH(a){a=a|0;CF(a);return}function zH(a){a=a|0;CF(a);SA(a);return}function AH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;k=l+4|0;h=l;if(!(c[e+4>>2]&1)){j=c[(c[b>>2]|0)+24>>2]|0;c[h>>2]=c[d>>2];c[k>>2]=c[h>>2];b=Mb[j&31](b,k,e,f,g&1)|0}else{IE(k,e);b=XF(k,56776)|0;YF(k);e=c[b>>2]|0;if(g)Ub[c[e+24>>2]&63](k,b);else Ub[c[e+28>>2]&63](k,b);i=k+8+3|0;b=a[i>>0]|0;e=c[k>>2]|0;j=k+4|0;g=b<<24>>24<0?e:k;while(1){h=b<<24>>24<0;if((g|0)==((h?e:k)+((h?c[j>>2]|0:b&255)<<2)|0))break;b=c[g>>2]|0;e=c[d>>2]|0;if(e|0){f=e+24|0;h=c[f>>2]|0;if((h|0)==(c[e+28>>2]|0)){h=c[(c[e>>2]|0)+52>>2]|0;b=jE(b)|0;b=Ib[h&63](e,b)|0}else{c[f>>2]=h+4;c[h>>2]=b;b=jE(b)|0}if(JE(b,iE()|0)|0)c[d>>2]=0}g=g+4|0;b=a[i>>0]|0;e=c[k>>2]|0}b=c[d>>2]|0;wO(k)}zb=l;return b|0}function BH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,1,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p+13|0;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|24)+-1<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function CH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,1,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1;q=o+23|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1|44)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function DH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=zb;zb=zb+32|0;j=b;n=b+16|0;m=b+12|0;l=b+4|0;k=b+8|0;a[n>>0]=a[49415]|0;a[n+1>>0]=a[49416]|0;a[n+2>>0]=a[49417]|0;a[n+3>>0]=a[49418]|0;a[n+4>>0]=a[49419]|0;a[n+5>>0]=a[49420]|0;p=e+4|0;wH(n+1|0,49421,0,c[p>>2]|0);p=(c[p>>2]|0)>>>9&1;q=p|12;h=Na()|0;o=zb;zb=zb+((1*q|0)+15&-16)|0;i=_F()|0;c[j>>2]=g;g=o+(rH(o,q,i,n,j)|0)|0;n=sH(o,g,e)|0;i=zb;zb=zb+((1*((p<<1|21)<<2)|0)+15&-16)|0;IE(j,e);KH(o,n,g,i,m,l,j);YF(j);c[k>>2]=c[d>>2];d=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,d,g,e,f)|0;Ma(h|0);zb=b;return g|0}function EH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=zb;zb=zb+32|0;j=a+8|0;i=a;m=a+24|0;l=a+16|0;k=a+20|0;o=i;c[o>>2]=37;c[o+4>>2]=0;o=d+4|0;wH(i+1|0,49412,0,c[o>>2]|0);o=(c[o>>2]|0)>>>9&1|22;q=o+1|0;h=Na()|0;n=zb;zb=zb+((1*q|0)+15&-16)|0;p=_F()|0;r=j;c[r>>2]=f;c[r+4>>2]=g;f=n+(rH(n,q,p,i,j)|0)|0;g=sH(n,f,d)|0;i=zb;zb=zb+((1*((o<<1)+-1<<2)|0)+15&-16)|0;IE(j,d);KH(n,g,f,i,m,l,j);YF(j);c[k>>2]=c[b>>2];f=c[m>>2]|0;g=c[l>>2]|0;c[j>>2]=c[k>>2];g=IH(j,i,f,g,d,e)|0;Ma(h|0);zb=a;return g|0}function FH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,57671,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function GH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=zb;zb=zb+352|0;r=x+344|0;m=x+320|0;l=x+304|0;i=x+296|0;h=x+280|0;k=x+272|0;o=x+240|0;n=x+340|0;p=x;u=x+336|0;s=x+332|0;t=x+328|0;j=k;c[j>>2]=37;c[j+4>>2]=0;j=tH(k+1|0,49410,c[d+4>>2]|0)|0;c[n>>2]=o;a=_F()|0;if(j){c[h>>2]=c[d+8>>2];g[h+8>>3]=f;a=rH(o,30,a,k,h)|0}else{g[i>>3]=f;a=rH(o,30,a,k,i)|0}if((a|0)>29){a=_F()|0;if(j){c[l>>2]=c[d+8>>2];g[l+8>>3]=f;h=uH(n,a,k,l)|0}else{g[m>>3]=f;h=uH(n,a,k,m)|0}a=c[n>>2]|0;if(!a)aO();else{q=h;z=a;w=a}}else{q=a;z=0;w=c[n>>2]|0}h=w+q|0;i=sH(w,h,d)|0;do if((w|0)!=(o|0)){a=FO(q<<3)|0;if(!a)aO();else{v=a;y=0;A=a;break}}else{v=p;y=1;A=0}while(0);IE(r,d);JH(w,i,h,v,u,s,r);YF(r);c[t>>2]=c[b>>2];w=c[u>>2]|0;a=c[s>>2]|0;c[r>>2]=c[t>>2];a=IH(r,v,w,a,d,e)|0;c[b>>2]=a;if(!y)GO(A);GO(z);zb=x;return a|0}function HH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=zb;zb=zb+208|0;l=b+184|0;k=b+192|0;h=b+160|0;j=b;m=b+188|0;a[k>>0]=a[49404]|0;a[k+1>>0]=a[49405]|0;a[k+2>>0]=a[49406]|0;a[k+3>>0]=a[49407]|0;a[k+4>>0]=a[49408]|0;a[k+5>>0]=a[49409]|0;i=_F()|0;c[l>>2]=g;g=rH(h,20,i,k,l)|0;k=h+g|0;i=sH(h,k,e)|0;IE(l,e);n=XF(l,56768)|0;YF(l);Kb[c[(c[n>>2]|0)+48>>2]&15](n,h,k,j)|0;g=j+(g<<2)|0;c[m>>2]=c[d>>2];c[l>>2]=c[m>>2];g=IH(l,j,(i|0)==(k|0)?g:j+(i-h<<2)|0,g,e,f)|0;zb=b;return g|0}function IH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{o=d;j=f-o>>2;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;o=j-o|0;k=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;uO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+8+3>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){wO(m);break}else{c[b>>2]=0;wO(m);i=0;break a}}while(0);o=f-j|0;f=o>>2;if((o|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function JH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=zb;zb=zb+16|0;s=v;t=XF(i,56768)|0;q=XF(i,56776)|0;Ub[c[(c[q>>2]|0)+20>>2]&63](s,q);c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{r=Ib[c[(c[t>>2]|0)+44>>2]&63](t,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=r;i=b+1|0;break}default:i=b}r=e;a:do if((r-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:{u=4;break a}}o=Ib[c[(c[t>>2]|0)+44>>2]&63](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=o;i=i+2|0;p=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[j>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=p;j=i;while(1){if(j>>>0>=e>>>0)break a;p=a[j>>0]|0;if(!(_y(p,_F()|0)|0))break a;j=j+1|0}}else u=4;while(0);b:do if((u|0)==4){j=i;while(1){if(j>>>0>=e>>>0)break b;p=a[j>>0]|0;if(!(Zy(p,_F()|0)|0))break b;j=j+1|0}}while(0);o=s+11|0;n=a[o>>0]|0;p=s+4|0;c:do if((n<<24>>24<0?c[p>>2]|0:n&255)|0){d:do if((i|0)!=(j|0)){k=j;l=i;while(1){k=k+-1|0;if(l>>>0>=k>>>0)break d;n=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=n;l=l+1|0}}while(0);n=Gb[c[(c[q>>2]|0)+16>>2]&127](q)|0;m=i;k=0;l=0;while(1){if(m>>>0>=j>>>0)break;w=a[((a[o>>0]|0)<0?c[s>>2]|0:s)+k>>0]|0;if(w<<24>>24>0&(l|0)==(w<<24>>24|0)){l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=n;l=a[o>>0]|0;k=k+(k>>>0<((l<<24>>24<0?c[p>>2]|0:l&255)+-1|0)>>>0&1)|0;l=0}x=Ib[c[(c[t>>2]|0)+44>>2]&63](t,a[m>>0]|0)|0;w=c[h>>2]|0;c[h>>2]=w+4;c[w>>2]=x;m=m+1|0;l=l+1|0}i=f+(i-b<<2)|0;l=c[h>>2]|0;if((i|0)==(l|0))k=t;else{k=l;while(1){k=k+-4|0;if(i>>>0>=k>>>0){k=t;i=l;break c}x=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=x;i=i+4|0}}}else{Kb[c[(c[t>>2]|0)+48>>2]&15](t,i,j,c[h>>2]|0)|0;i=(c[h>>2]|0)+(j-i<<2)|0;c[h>>2]=i;k=t}while(0);while(1){if(j>>>0>=e>>>0)break;i=a[j>>0]|0;if(i<<24>>24==46){u=32;break}w=Ib[c[(c[k>>2]|0)+44>>2]&63](t,i)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}if((u|0)==32){w=Gb[c[(c[q>>2]|0)+12>>2]&127](q)|0;x=c[h>>2]|0;i=x+4|0;c[h>>2]=i;c[x>>2]=w;j=j+1|0}Kb[c[(c[t>>2]|0)+48>>2]&15](t,j,e,i)|0;x=(c[h>>2]|0)+(r-j<<2)|0;c[h>>2]=x;c[g>>2]=(d|0)==(e|0)?x:f+(d-b<<2)|0;jO(s);zb=v;return}function KH(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=zb;zb=zb+16|0;q=r;p=XF(i,56768)|0;l=XF(i,56776)|0;Ub[c[(c[l>>2]|0)+20>>2]&63](q,l);n=q+11|0;m=a[n>>0]|0;o=q+4|0;if((m<<24>>24<0?c[o>>2]|0:m&255)|0){c[h>>2]=f;i=a[b>>0]|0;switch(i<<24>>24){case 43:case 45:{m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,i)|0;i=c[h>>2]|0;c[h>>2]=i+4;c[i>>2]=m;i=b+1|0;break}default:i=b}a:do if((e-i|0)>1?(a[i>>0]|0)==48:0){j=i+1|0;switch(a[j>>0]|0){case 88:case 120:break;default:break a}m=Ib[c[(c[p>>2]|0)+44>>2]&63](p,48)|0;k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[j>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=k;i=i+2|0}while(0);b:do if((i|0)!=(e|0)){j=e;k=i;while(1){j=j+-1|0;if(k>>>0>=j>>>0)break b;m=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=m;k=k+1|0}}while(0);m=Gb[c[(c[l>>2]|0)+16>>2]&127](l)|0;l=i;j=0;k=0;while(1){if(l>>>0>=e>>>0)break;s=a[((a[n>>0]|0)<0?c[q>>2]|0:q)+j>>0]|0;if(s<<24>>24!=0&(k|0)==(s<<24>>24|0)){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=m;k=a[n>>0]|0;j=j+(j>>>0<((k<<24>>24<0?c[o>>2]|0:k&255)+-1|0)>>>0&1)|0;k=0}t=Ib[c[(c[p>>2]|0)+44>>2]&63](p,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+1|0;k=k+1|0}i=f+(i-b<<2)|0;j=c[h>>2]|0;if((i|0)!=(j|0)){while(1){j=j+-4|0;if(i>>>0>=j>>>0)break;t=c[i>>2]|0;c[i>>2]=c[j>>2];c[j>>2]=t;i=i+4|0}i=c[h>>2]|0}}else{Kb[c[(c[p>>2]|0)+48>>2]&15](p,b,e,f)|0;i=f+(e-b<<2)|0;c[h>>2]=i}c[g>>2]=(d|0)==(e|0)?i:f+(d-b<<2)|0;jO(q);zb=r;return}function LH(a){a=a|0;CF(a);return}function MH(a){a=a|0;CF(a);SA(a);return}function NH(a){a=a|0;return 2}function OH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=eI(a,j,i,e,f,g,49940,49948)|0;zb=h;return g|0}function PH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+11>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+(o?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=eI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function QH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];cI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function RH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];dI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function SH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56736)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];pI(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function TH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56736)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];cI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];dI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];fI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=eI(b,j,k,f,g,h,49900,49908)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=eI(b,j,k,f,g,h,49908,49916)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];gI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];hI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];iI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];jI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];kI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];lI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];mI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=eI(b,j,k,f,g,h,49916,49927)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=eI(b,j,k,f,g,h,49927,49932)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];nI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=eI(b,j,k,f,g,h,49932,49940)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];oI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+11>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+(e?c[Q+4>>2]|0:S&255)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=eI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];pI(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];qI(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];rI(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function UH(b){b=b|0;if((a[54872]|0)==0?nB(54872)|0:0){bI();c[14216]=53856;pB(54872)}return c[14216]|0}function VH(b){b=b|0;if((a[54856]|0)==0?nB(54856)|0:0){aI();c[14215]=53568;pB(54856)}return c[14215]|0}function WH(b){b=b|0;if((a[54840]|0)==0?nB(54840)|0:0){$H();c[14214]=53536;pB(54840)}return c[14214]|0}function XH(b){b=b|0;if((a[54832]|0)==0?nB(54832)|0:0){c[14211]=0;c[14212]=0;c[14213]=0;gO(56844,49658,Yf(49658)|0);pB(54832)}return 56844}function YH(b){b=b|0;if((a[54824]|0)==0?nB(54824)|0:0){c[14208]=0;c[14209]=0;c[14210]=0;gO(56832,49646,Yf(49646)|0);pB(54824)}return 56832}function ZH(b){b=b|0;if((a[54816]|0)==0?nB(54816)|0:0){c[14205]=0;c[14206]=0;c[14207]=0;gO(56820,49637,Yf(49637)|0);pB(54816)}return 56820}function _H(b){b=b|0;if((a[54808]|0)==0?nB(54808)|0:0){c[14202]=0;c[14203]=0;c[14204]=0;gO(56808,49628,Yf(49628)|0);pB(54808)}return 56808}function $H(){var b=0,d=0;if((a[54848]|0)==0?nB(54848)|0:0){d=53536;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53560);pB(54848)}nO(53536,49679)|0;nO(53548,49682)|0;return} +function sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g+8|0;e=g;d=We(b,0)|0;if(!d){c[e>>2]=b;Ue(0,3,20325,e);a=ox()|0;a=By(c[a>>2]|0)|0;c[f>>2]=57671;c[f+4>>2]=a;Ue(0,3,21881,f);a=-1}else{a=rd(a,d)|0;GO(d)}zb=g;return a|0}function td(a,b){a=a|0;b=b|0;b=(c[a+8>>2]|0)+(b<<2)|0;if(!(c[b>>2]|0))b=-1;else{c[b>>2]=0;c[a>>2]=(c[a>>2]|0)+-1;b=1}return b|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;f=a+(d<<5)|0;h=a+(d<<5)+8|0;i=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;g[c+(d<<5)+(e<<3)>>3]=+g[f>>3]*+g[b+(e<<3)>>3]+ +g[h>>3]*+g[b+32+(e<<3)>>3]+ +g[i>>3]*+g[b+64+(e<<3)>>3];e=e+1|0}i=c+(d<<5)+24|0;g[i>>3]=+g[a+(d<<5)+24>>3]+ +g[i>>3];d=d+1|0}return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,h=0,i=0,j=0;d=0;while(1){if((d|0)==3)break;h=a+(d<<5)|0;i=a+(d<<5)+8|0;j=a+(d<<5)+16|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[b+(e<<2)>>2]*+g[h>>3]+ +f[b+16+(e<<2)>>2]*+g[i>>3]+ +f[b+32+(e<<2)>>2]*+g[j>>3];e=e+1|0}j=c+(d<<4)+12|0;f[j>>2]=+f[j>>2]+ +g[a+(d<<5)+24>>3];d=d+1|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=0;while(1){if((d|0)==3)break;g=a+(d<<4)|0;h=a+(d<<4)+4|0;i=a+(d<<4)+8|0;e=0;while(1){if((e|0)==4)break;f[c+(d<<4)+(e<<2)>>2]=+f[g>>2]*+f[b+(e<<2)>>2]+ +f[h>>2]*+f[b+16+(e<<2)>>2]+ +f[i>>2]*+f[b+32+(e<<2)>>2];e=e+1|0}i=c+(d<<4)+12|0;f[i>>2]=+f[a+(d<<4)+12>>2]+ +f[i>>2];d=d+1|0}return 0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;h=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;f=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[h>>2]|0)+(e+f<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}d=c[h>>2]|0;f=d+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[d+120>>3]=1.0;Xd(h)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[(c[h>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(h)|0;return 0}function yd(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0;i=Dd(4,4)|0;d=0;while(1){if((d|0)==3)break;h=d<<2;e=0;while(1){if((e|0)==4)break;g[(c[i>>2]|0)+(e+h<<3)>>3]=+f[a+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}d=c[i>>2]|0;h=d+96|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;g[d+120>>3]=1.0;Xd(i)|0;d=0;while(1){if((d|0)==3)break;a=d<<2;e=0;while(1){if((e|0)==4)break;f[b+(d<<4)+(e<<2)>>2]=+g[(c[i>>2]|0)+(e+a<<3)>>3];e=e+1|0}d=d+1|0}Ld(i)|0;return 0}function zd(a){a=a|0;switch(a|0){case 1:case 0:{a=3;break}case 6:case 4:case 3:case 2:{a=4;break}case 14:case 13:case 12:case 5:{a=1;break}case 11:case 10:case 9:case 8:case 7:{a=2;break}default:a=0}return a|0}function Ad(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if((b|0)!=0&(c|0)!=0&(d|0)!=0){f=Oz(c,47)|0;if(!f){a[b>>0]=0;break}e=f+((e|0)!=0&1)-c|0;if((e+1|0)>>>0<=d>>>0){Wz(b,c,e)|0;a[b+e>>0]=0}else b=0}else b=0;while(0);return b|0}function Bd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;h=0;a:while(1){switch(a[b+h>>0]|0){case 0:break a;case 46:{e=h;break}default:{}}h=h+1|0}f=b+h|0;g=(Qy(d)|0)+2|0;if(!e)if((g+h|0)>(c|0))e=-1;else{a[f>>0]=46;e=h;i=9}else if((g+e|0)>(c|0))e=-1;else i=9;if((i|0)==9){a[b+(e+1)>>0]=0;aA(b,d)|0;e=0}return e|0}function Cd(b){b=b|0;var c=0,d=0;c=-1;d=0;a:while(1){switch(a[b+d>>0]|0){case 0:break a;case 46:{c=d;break}default:{}}d=d+1|0}if((c|0)!=-1)a[b+c>>0]=0;return 0}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<3,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=FO(12)|0;do if(d){e=FO(B(a<<2,b)|0)|0;c[d>>2]=e;if(!e){GO(d);d=0;break}else{c[d+4>>2]=a;c[d+8>>2]=b;break}}else d=0;while(0);return d|0}function Fd(a){a=a|0;var b=0;b=Dd(c[a+4>>2]|0,c[a+8>>2]|0)|0;if(b){if((Kd(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Gd(a,b){a=a|0;b=b|0;var d=0;d=Dd(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Nd(d,a,b)|0)<0){Ld(d)|0;d=0}}else d=0;return d|0}function Hd(a,b){a=a|0;b=b|0;var d=0;d=Ed(c[a+4>>2]|0,c[b+8>>2]|0)|0;if(d){if((Od(d,a,b)|0)<0){Md(d)|0;d=0}}else d=0;return d|0}function Id(a){a=a|0;var b=0;b=Dd(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if(($d(b,a)|0)<0){Ld(b)|0;b=0}}else b=0;return b|0}function Jd(a){a=a|0;var b=0;b=Ed(c[a+8>>2]|0,c[a+4>>2]|0)|0;if(b){if((ae(b,a)|0)<0){Md(b)|0;b=0}}else b=0;return b|0}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+4>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+8>>2]|0)):0){e=0;while(1){if((e|0)>=(h|0)){d=0;break a}f=B(e,i)|0;d=0;while(1){if((d|0)>=(i|0))break;j=d+f|0;g[(c[a>>2]|0)+(j<<3)>>3]=+g[(c[b>>2]|0)+(j<<3)>>3];d=d+1|0}e=e+1|0}}else d=-1;while(0);return d|0}function Ld(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Md(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return 0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;g[a>>3]=0.0;e=(c[d>>2]|0)+(j<<3)|0;f=(c[b>>2]|0)+(l<<3)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +g[f>>3]*+g[e>>3];g[a>>3]=p;e=e+(m<<3)|0;f=f+8|0;h=h+1|0;i=p}j=j+1|0;a=a+8|0}k=k+1|0}}else a=-1;while(0);return a|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;n=c[b+8>>2]|0;a:do if(((n|0)==(c[d+4>>2]|0)?(o=c[a+4>>2]|0,(o|0)==(c[b+4>>2]|0)):0)?(m=c[a+8>>2]|0,(m|0)==(c[d+8>>2]|0)):0){a=c[a>>2]|0;k=0;while(1){if((k|0)>=(o|0)){a=0;break a}l=B(k,n)|0;j=0;while(1){if((j|0)>=(m|0))break;f[a>>2]=0.0;e=(c[d>>2]|0)+(j<<2)|0;g=(c[b>>2]|0)+(l<<2)|0;h=0;i=0.0;while(1){if((h|0)>=(n|0))break;p=i+ +f[g>>2]*+f[e>>2];f[a>>2]=p;e=e+(m<<2)|0;g=g+4|0;h=h+1|0;i=p}j=j+1|0;a=a+4|0}k=k+1|0}}else a=-1;while(0);return a|0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0,l=0;i=c[a+4>>2]|0;j=c[a+8>>2]|0;f=(i|0)<(j|0)?i:j;a:do if(((((!((i|0)<2|(j|0)<2)?(c[b+8>>2]|0)==(j|0):0)?(c[b+4>>2]|0)==(f|0):0)?(k=d+4|0,(c[k>>2]|0)==(f|0)):0)?(c[e+4>>2]|0)==(j|0):0)?(l=Fd(a)|0,(l|0)!=0):0){h=+u(+(+(i|0)));if((Qd(l,e)|0)<0){Ld(l)|0;a=-1;break}if((Rd(l,e)|0)<0){Ld(l)|0;a=-1;break}f=B(j,i)|0;a=0;while(1){if((a|0)>=(f|0))break;j=(c[l>>2]|0)+(a<<3)|0;g[j>>3]=+g[j>>3]/h;a=a+1|0}a=Sd(l,b,d)|0;Ld(l)|0;e=c[k>>2]|0;h=0.0;f=0;while(1){if((f|0)>=(e|0))break;h=h+ +g[(c[d>>2]|0)+(f<<3)>>3];f=f+1|0}f=0;while(1){if((f|0)>=(e|0))break a;l=(c[d>>2]|0)+(f<<3)|0;g[l>>3]=+g[l>>3]/h;f=f+1|0}}else a=-1;while(0);return a|0}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,i=0,j=0,k=0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;a:do if(!((j|0)<1|(k|0)<1)?(c[b+4>>2]|0)==(k|0):0){d=0;while(1){if((d|0)==(k|0))break;g[(c[b>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}a=c[a>>2]|0;h=0;while(1){if((h|0)==(j|0))break;d=0;f=c[b>>2]|0;i=a;while(1){if((d|0)==(k|0))break;g[f>>3]=+g[i>>3]+ +g[f>>3];d=d+1|0;f=f+8|0;i=i+8|0}a=a+(k<<3)|0;h=h+1|0}e=+(j|0);d=0;while(1){if((d|0)==(k|0)){d=0;break a}j=(c[b>>2]|0)+(d<<3)|0;g[j>>3]=+g[j>>3]/e;d=d+1|0}}else d=-1;while(0);return d|0}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;i=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(i|0)){f=0;a=c[a>>2]|0;while(1){if((f|0)>=(h|0)){a=0;break a}d=0;e=c[b>>2]|0;while(1){if((d|0)>=(i|0))break;g[a>>3]=+g[a>>3]-+g[e>>3];d=d+1|0;e=e+8|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=c[a+4>>2]|0;f=c[a+8>>2]|0;i=(f|0)<(e|0)?f:e;a:do if(((!((e|0)<2|(f|0)<2)?(c[b+8>>2]|0)==(f|0):0)?(c[b+4>>2]|0)==(i|0):0)?(c[d+4>>2]|0)==(i|0):0){h=Dd(i,i)|0;if((c[h+4>>2]|0)==(i|0)?(c[h+8>>2]|0)==(i|0):0){e=(e|0)<(f|0);if(e){if((Td(a,h)|0)<0){Ld(h)|0;e=-1;break}}else if((Ud(a,h)|0)<0){Ld(h)|0;e=-1;break}if((Vd(h,d)|0)<0){Ld(h)|0;e=-1;break}b:do if(e){if((Wd(a,h,b,d)|0)<0){Ld(h)|0;e=-1;break a}}else{a=0;f=c[h>>2]|0;e=c[b>>2]|0;while(1){if((a|0)>=(i|0))break;if(+g[(c[d>>2]|0)+(a<<3)>>3]<1.0e-16)break;b=0;while(1){if((b|0)>=(i|0))break;g[e>>3]=+g[f>>3];b=b+1|0;f=f+8|0;e=e+8|0}a=a+1|0}while(1){if((a|0)>=(i|0))break b;g[(c[d>>2]|0)+(a<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(i|0))break;g[e>>3]=0.0;f=f+1|0;e=e+8|0}a=a+1|0}}while(0);Ld(h)|0;e=0;break}Ld(h)|0;e=-1}else e=-1;while(0);return e|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0;n=c[a+4>>2]|0;o=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}l=B(e,o)|0;d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{f=c[a>>2]|0;i=f+((B(d,o)|0)<<3)|0;g[j>>3]=0.0;b=0;f=f+(l<<3)|0;m=0.0;while(1){if((b|0)>=(o|0))break b;p=m+ +g[f>>3]*+g[i>>3];g[j>>3]=p;b=b+1|0;f=f+8|0;i=i+8|0;m=p}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0;m=c[a+4>>2]|0;n=c[a+8>>2]|0;a:do if((c[b+4>>2]|0)==(n|0)?(c[b+8>>2]|0)==(n|0):0){k=c[b>>2]|0;e=0;h=k;while(1){if((e|0)>=(n|0)){b=0;break a}d=0;j=h;while(1){if((d|0)==(n|0))break;b:do if(d>>>0>>0){i=k+((B(d,n)|0)+e<<3)|0;g[j>>3]=+g[i>>3]}else{i=c[a>>2]|0;g[j>>3]=0.0;b=0;f=i+(e<<3)|0;i=i+(d<<3)|0;l=0.0;while(1){if((b|0)>=(m|0))break b;o=l+ +g[f>>3]*+g[i>>3];g[j>>3]=o;b=b+1|0;f=f+(n<<3)|0;i=i+(n<<3)|0;l=o}}while(0);d=d+1|0;j=j+8|0}e=e+1|0;h=h+(n<<3)|0}}else b=-1;while(0);return b|0}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;F=zb;zb=zb+16|0;d=F;E=c[a+4>>2]|0;do if((!((E|0)<2?1:(E|0)!=(c[a+8>>2]|0))?(c[b+4>>2]|0)==(E|0):0)?(C=qe(E)|0,(C|0)!=0):0){D=E+-1|0;c[d+4>>2]=D;c[d>>2]=(c[C>>2]|0)+8;if((ue(a,b,d)|0)<0){re(C)|0;d=-1;break}A=c[C>>2]|0;g[A>>3]=0.0;y=D;while(1){if((y|0)<=0)break;z=y;while(1){if((z|0)<=0)break;n=+t(+(+g[A+(z<<3)>>3]));x=c[b>>2]|0;d=z+-1|0;o=+t(+(+g[x+(d<<3)>>3]));if(n>(o+ +t(+(+g[x+(z<<3)>>3])))*1.0e-06)z=d;else break}q=y+-1|0;a:do if((z|0)!=(y|0)){r=A+(y<<3)|0;s=A+(z+1<<3)|0;p=0;do{if(p>>>0>99)break a;p=p+1|0;v=c[b>>2]|0;w=v+(q<<3)|0;x=v+(y<<3)|0;h=+g[x>>3];o=(+g[w>>3]-h)*.5;m=+g[r>>3];m=m*m;j=+u(+(m+o*o));l=z;n=+g[s>>3];j=+g[v+(z<<3)>>3]-h+m/(o+(o<0.0?-j:j));while(1){if((l|0)>=(y|0))break;h=+t(+j);if(h>=+t(+n))if(h>1.0e-16){h=-n/j;o=1.0/+u(+(h*h+1.0));m=o;o=h*o}else{m=1.0;o=0.0}else{m=-j/n;o=1.0/+u(+(m*m+1.0));m=m*o}f=v+(l<<3)|0;I=+g[f>>3];k=l+1|0;d=v+(k<<3)|0;H=+g[d>>3];h=I-H;i=A+(k<<3)|0;G=o*(o*h+m*2.0*+g[i>>3]);g[f>>3]=I-G;g[d>>3]=H+G;d=A+(l<<3)|0;if((l|0)>(z|0))g[d>>3]=m*+g[d>>3]-n*o;I=+g[i>>3];g[i>>3]=I+o*(m*h-o*2.0*I);e=B(l,E)|0;f=B(k,E)|0;d=0;h=n;while(1){if((d|0)==(E|0))break;J=c[a>>2]|0;K=J+(d+e<<3)|0;j=+g[K>>3];J=J+(d+f<<3)|0;h=+g[J>>3];g[K>>3]=m*j-o*h;g[J>>3]=o*j+m*h;d=d+1|0}if((l|0)<(q|0)){j=+g[i>>3];K=A+(l+2<<3)|0;h=+g[K>>3];g[K>>3]=m*h;h=-(o*h)}l=k;n=h}H=+t(+(+g[r>>3]));I=+t(+(+g[w>>3]))}while(H>(I+ +t(+(+g[x>>3])))*1.0e-06)}while(0);y=q}d=0;while(1){if((d|0)==(D|0))break;f=c[b>>2]|0;i=f+(d<<3)|0;j=+g[i>>3];l=d+1|0;h=j;k=d;e=l;while(1){if((e|0)>=(E|0))break;I=+g[f+(e<<3)>>3];K=I>h;h=K?I:h;k=K?e:k;e=e+1|0}g[f+(k<<3)>>3]=j;g[i>>3]=h;e=c[a>>2]|0;f=e+((B(d,E)|0)<<3)|0;d=e+((B(k,E)|0)<<3)|0;e=0;while(1){if((e|0)==(E|0))break;I=+g[d>>3];g[d>>3]=+g[f>>3];g[f>>3]=I;f=f+8|0;d=d+8|0;e=e+1|0}d=l}re(C)|0;d=0}else d=-1;while(0);zb=F;return d|0}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0;p=c[a+4>>2]|0;q=c[a+8>>2]|0;a:do if(((((!((p|0)<1|(q|0)<1)?(c[b+4>>2]|0)==(p|0):0)?(c[b+8>>2]|0)==(p|0):0)?(c[d+4>>2]|0)==(p|0):0)?(c[d+8>>2]|0)==(q|0):0)?(c[e+4>>2]|0)==(p|0):0){h=0;d=c[d>>2]|0;while(1){if((h|0)>=(p|0))break;i=+g[(c[e>>2]|0)+(h<<3)>>3];if(i<1.0e-16)break;n=1.0/+u(+(+t(+i)));o=B(h,p)|0;j=0;m=d;while(1){if((j|0)==(q|0))break;f=0;k=(c[b>>2]|0)+(o<<3)|0;i=0.0;l=(c[a>>2]|0)+(j<<3)|0;while(1){if((f|0)==(p|0))break;r=i+ +g[k>>3]*+g[l>>3];f=f+1|0;k=k+8|0;i=r;l=l+(q<<3)|0}g[m>>3]=n*i;j=j+1|0;m=m+8|0}h=h+1|0;d=d+(q<<3)|0}while(1){if((h|0)>=(p|0)){d=0;break a}g[(c[e>>2]|0)+(h<<3)>>3]=0.0;f=0;while(1){if((f|0)>=(q|0))break;g[d>>3]=0.0;f=f+1|0;d=d+8|0}h=h+1|0}}else d=-1;while(0);return d|0}function Xd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((Yd(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{g[a>>3]=1.0/+g[a>>3];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<3)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<3)|0;k=0.0;e=m;i=-1;f=l;while(1){if((f|0)==(b|0))break;r=+t(+(+g[e>>3]));j=k>2]|0;f=p+(l<<2)|0;c[e>>2]=c[f>>2];c[f>>2]=h;f=0;h=m;e=a+((B(i,d)|0)<<3)|0;while(1){if((f|0)==(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+8|0;e=e+8|0}k=+g[m>>3];e=1;f=m;while(1){if((e|0)==(b|0))break;j=f+8|0;g[f>>3]=+g[j>>3]/k;e=e+1|0;f=j}g[n>>3]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<3)|0;k=+g[i>>3];f=m;h=1;while(1){if((h|0)==(b|0))break;s=i+8|0;g[i>>3]=+g[s>>3]-k*+g[f>>3];f=f+8|0;h=h+1|0;i=s}g[j>>3]=-(k*+g[n>>3])}e=e+1|0;j=j+(d<<3)|0}l=l+1|0;n=n+(d<<3)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];f=0;h=a+(j<<3)|0;e=a+(i<<3)|0;while(1){if((f|0)>=(b|0))break;r=+g[e>>3];g[e>>3]=+g[h>>3];g[h>>3]=r;f=f+1|0;h=h+(d<<3)|0;e=e+(d<<3)|0}j=j+1|0}}while(0);zb=q;return a|0}function Zd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return ((_d(c[a>>2]|0,b,b)|0)==0)<<31>>31|0}function _d(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+2e3|0;p=q;a:do if((b|0)>500)a=0;else{switch(b|0){case 0:{a=0;break a}case 1:{f[a>>2]=1.0/+f[a>>2];break a}default:{}}e=0;while(1){if((e|0)>=(b|0))break;c[p+(e<<2)>>2]=e;e=e+1|0}o=a+(b+-1<<2)|0;l=0;n=o;while(1){if((l|0)>=(b|0))break;m=a+((B(l,d)|0)<<2)|0;k=0.0;e=m;i=-1;g=l;while(1){if((g|0)==(b|0))break;r=+t(+(+f[e>>2]));j=k>2]|0;g=p+(l<<2)|0;c[e>>2]=c[g>>2];c[g>>2]=h;g=0;h=m;e=a+((B(i,d)|0)<<2)|0;while(1){if((g|0)==(b|0))break;j=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=j;g=g+1|0;h=h+4|0;e=e+4|0}k=+f[m>>2];e=1;g=m;while(1){if((e|0)==(b|0))break;j=g+4|0;f[g>>2]=+f[j>>2]/k;e=e+1|0;g=j}f[n>>2]=1.0/k;e=0;j=o;while(1){if((e|0)==(b|0))break;if((e|0)!=(l|0)){i=a+((B(e,d)|0)<<2)|0;k=+f[i>>2];g=m;h=1;while(1){if((h|0)==(b|0))break;s=i+4|0;f[i>>2]=+f[s>>2]-k*+f[g>>2];g=g+4|0;h=h+1|0;i=s}f[j>>2]=-(k*+f[n>>2])}e=e+1|0;j=j+(d<<2)|0}l=l+1|0;n=n+(d<<2)|0}j=0;while(1){if((j|0)>=(b|0))break a;i=j;while(1){e=p+(i<<2)|0;if((i|0)>=(b|0))break;if((c[e>>2]|0)==(j|0))break;i=i+1|0}c[e>>2]=c[p+(j<<2)>>2];g=0;h=a+(j<<2)|0;e=a+(i<<2)|0;while(1){if((g|0)>=(b|0))break;s=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=s;g=g+1|0;h=h+(d<<2)|0;e=e+(d<<2)|0}j=j+1|0}}while(0);zb=q;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;h=c[a+4>>2]|0;a:do if((h|0)==(c[b+8>>2]|0)?(i=c[a+8>>2]|0,(i|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(h|0)){a=0;break a}d=(c[b>>2]|0)+(f<<3)|0;e=0;while(1){if((e|0)>=(i|0))break;g[a>>3]=+g[d>>3];d=d+(h<<3)|0;e=e+1|0;a=a+8|0}f=f+1|0}}else a=-1;while(0);return a|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;a:do if((g|0)==(c[b+8>>2]|0)?(h=c[a+8>>2]|0,(h|0)==(c[b+4>>2]|0)):0){a=c[a>>2]|0;f=0;while(1){if((f|0)>=(g|0)){a=0;break a}d=(c[b>>2]|0)+(f<<2)|0;e=0;while(1){if((e|0)>=(h|0))break;c[a>>2]=c[d>>2];d=d+(g<<2)|0;e=e+1|0;a=a+4|0}f=f+1|0}}else a=-1;while(0);return a|0}function be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0;h=+(b|0)/+(c[a>>2]|0);f=+(d|0)/+(c[a+4>>2]|0);c[e>>2]=b;c[e+4>>2]=d;b=0;while(1){if((b|0)==4)break;g[e+8+(b<<3)>>3]=h*+g[a+8+(b<<3)>>3];g[e+40+(b<<3)>>3]=f*+g[a+40+(b<<3)>>3];g[e+72+(b<<3)>>3]=+g[a+72+(b<<3)>>3];b=b+1|0}b=c[a+176>>2]|0;switch(b|0){case 4:{g[e+104>>3]=+g[a+104>>3];g[e+112>>3]=+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=h*+g[a+136>>3];g[e+144>>3]=f*+g[a+144>>3];g[e+152>>3]=h*+g[a+152>>3];g[e+160>>3]=f*+g[a+160>>3];g[e+168>>3]=+g[a+168>>3];i=9;break}case 3:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3];g[e+136>>3]=+g[a+136>>3]/(h*f);g[e+144>>3]=+g[a+144>>3]/(f*(h*h*f));i=9;break}case 2:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);g[e+136>>3]=+g[a+136>>3]/(f*(h*h*f));i=9;break}case 1:{g[e+104>>3]=h*+g[a+104>>3];g[e+112>>3]=f*+g[a+112>>3];g[e+120>>3]=+g[a+120>>3];g[e+128>>3]=+g[a+128>>3]/(h*f);i=9;break}default:b=-1}if((i|0)==9){c[e+176>>2]=b;b=0}return b|0}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;h=zb;zb=zb+96|0;f=h;a:do if(!(+g[a+88>>3]>=0.0)){d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=-+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}else{d=0;while(1){if((d|0)==3)break a;e=0;while(1){if((e|0)==4)break;g[f+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}}while(0);d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=0.0;e=e+1|0}d=d+1|0}i=+g[f+64>>3];n=+g[f+72>>3];o=+g[f+80>>3];w=+de(i,n,o);a=b+80|0;g[a>>3]=w;w=i/w;u=c+64|0;g[u>>3]=w;n=n/+g[a>>3];s=c+72|0;g[s>>3]=n;o=o/+g[a>>3];p=c+80|0;g[p>>3]=o;m=c+88|0;g[m>>3]=+g[f+88>>3]/+g[a>>3];i=+g[f+32>>3];j=+g[f+40>>3];r=+g[f+48>>3];o=+ee(w,n,o,i,j,r);l=b+48|0;g[l>>3]=o;i=i-o*+g[u>>3];j=j-o*+g[s>>3];o=r-o*+g[p>>3];r=+de(i,j,o);k=b+40|0;g[k>>3]=r;v=c+32|0;g[v>>3]=i/r;t=c+40|0;g[t>>3]=j/+g[k>>3];q=c+48|0;g[q>>3]=o/+g[k>>3];o=+g[f>>3];j=+g[f+8>>3];r=+g[f+16>>3];i=+ee(+g[u>>3],+g[s>>3],+g[p>>3],o,j,r);d=b+16|0;g[d>>3]=i;n=+ee(+g[v>>3],+g[t>>3],+g[q>>3],o,j,r);e=b+8|0;g[e>>3]=n;o=o-n*+g[v>>3]-i*+g[u>>3];j=j-n*+g[t>>3]-i*+g[s>>3];i=r-n*+g[q>>3]-i*+g[p>>3];n=+de(o,j,i);g[b>>3]=n;g[c>>3]=o/n;g[c+8>>3]=j/+g[b>>3];g[c+16>>3]=i/+g[b>>3];i=+g[m>>3];j=(+g[f+56>>3]-+g[l>>3]*i)/+g[k>>3];g[c+56>>3]=j;g[c+24>>3]=(+g[f+24>>3]-j*+g[e>>3]-i*+g[d>>3])/+g[b>>3];d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==3)break;v=b+(d<<5)+(e<<3)|0;g[v>>3]=+g[v>>3]/+g[a>>3];e=e+1|0}d=d+1|0}zb=h;return 0}function de(a,b,c){a=+a;b=+b;c=+c;return +(+u(+(a*a+b*b+c*c)))}function ee(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;return +(a*d+b*e+c*f)}function fe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;switch(f|0){case 4:{t=+g[a>>3];v=+g[a+8>>3];r=+g[a+16>>3];s=+g[a+24>>3];x=+g[a+32>>3];y=+g[a+40>>3];z=+g[a+48>>3];A=+g[a+56>>3];w=+g[a+64>>3];q=(b-z)/x;l=(c-A)/y;m=r*2.0;n=s*6.0;o=s*2.0;p=r*6.0;i=q;j=l;k=q*q;b=l*l;f=1;while(1){if(!(b!=0.0|k!=0.0)){c=0.0;b=0.0;break}D=b+k;C=t*D+1.0+D*(v*D);c=k*3.0;B=b*c;c=i-(s*(D+k*2.0)+(j*(m*i)+i*C)-q)/(n*i+(m*j+(t*(b+c)+1.0+v*(b*b+(k*(k*5.0)+B)))));i=o*c;b=j-(r*(b*2.0+D)+j*C+j*i-l)/(p*j+(t*(k+b*3.0)+1.0+v*(b*(b*5.0)+(k*k+B)))+i);if((f|0)==4)break;i=c;j=b;k=c*c;b=b*b;f=f+1|0}g[d>>3]=z+x*c/w;b=A+y*b/w;h=22;break}case 3:{p=+g[a>>3];b=(b-p)/+g[a+24>>3];h=a+8|0;c=c-+g[h>>3];k=+g[a+32>>3]/1.0e8;l=+g[a+40>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;j=b*b+c*c;i=j;f=f+1|0;j=+u(+j)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 2:{p=+g[a>>3];b=b-p;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;l=+g[a+32>>3]/1.0e8/1.0e5;i=b*b+c*c;m=+u(+i);n=k*3.0;o=l*5.0;f=1;j=m;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i-i*(l*i))-m)/(1.0-n*i-i*(o*i));b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=p+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}case 1:{n=+g[a>>3];b=b-n;h=a+8|0;c=c-+g[h>>3];k=+g[a+24>>3]/1.0e8;i=b*b+c*c;l=+u(+i);m=k*3.0;f=1;j=l;while(1){if(!(j!=0.0)){c=0.0;b=0.0;break}D=j-(j*(1.0-k*i)-l)/(1.0-m*i);b=b*D/j;c=c*D/j;if((f|0)==3)break;i=b*b+c*c;f=f+1|0;j=+u(+i)}a=a+16|0;g[d>>3]=n+b/+g[a>>3];b=c/+g[a>>3]+ +g[h>>3];h=22;break}default:f=-1}if((h|0)==22){g[e>>3]=b;f=0}return f|0}function ge(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do switch(f|0){case 4:{h=+g[a+16>>3];l=+g[a+24>>3];o=+g[a+32>>3];m=+g[a+40>>3];p=+g[a+48>>3];n=+g[a+56>>3];i=+g[a+64>>3];k=(b-p)*i/o;c=(c-n)*i/m;i=k*k+c*c;b=+g[a>>3]*i+1.0+i*(+g[a+8>>3]*i);g[d>>3]=p+o*(l*(i+k*(k*2.0))+(c*(h*2.0*k)+k*b));b=n+m*(c*(l*2.0*k)+(h*(i+c*(c*2.0))+c*b));j=12;break}case 3:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+32>>3]/1.0e8)-p*(p*(+g[a+40>>3]/1.0e8/1.0e5));g[d>>3]=i+ +g[a+24>>3]*(h*p);b=+g[f>>3]+b*p;j=12;break a}}case 2:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=h*h+b*b;p=1.0-p*(+g[a+24>>3]/1.0e8)-p*(p*(+g[a+32>>3]/1.0e8/1.0e5));g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}case 1:{i=+g[a>>3];p=+g[a+16>>3];h=(b-i)*p;f=a+8|0;b=p*(c-+g[f>>3]);if(h==0.0&b==0.0){g[d>>3]=i;b=+g[f>>3];j=12;break a}else{p=1.0-(h*h+b*b)*(+g[a+24>>3]/1.0e8);g[d>>3]=i+h*p;b=+g[f>>3]+b*p;j=12;break a}}default:f=-1}while(0);if((j|0)==12){g[e>>3]=b;f=0}return f|0}function he(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+192|0;f=g;ie(a,f);ie(a+4|0,f+4|0);b=0;while(1){if((b|0)==3)break;d=0;while(1){if((d|0)==4)break;je(a+8+(b<<5)+(d<<3)|0,f+8+(b<<5)+(d<<3)|0);d=d+1|0}b=b+1|0}d=a+176|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[1712+(e+-1<<3)>>2]|0))break;je(a+104+(b<<3)|0,f+104+(b<<3)|0);b=b+1|0}c[f+176>>2]=e;_O(a|0,f|0,184)|0;zb=g;return}function ie(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==4)break;a[c+d>>0]=a[b+(3-d)>>0]|0;d=d+1|0}return}function je(b,c){b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)==8)break;a[c+d>>0]=a[b+(7-d)>>0]|0;d=d+1|0}return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+256|0;n=s+248|0;l=s+240|0;k=s+232|0;j=s+224|0;i=s+216|0;h=s+208|0;f=s+200|0;p=s;q=s+16|0;do if((a|0)!=0&(b|0)>0&(d|0)!=0){r=rz(a,22236)|0;if(!r){r=ox()|0;c[f>>2]=c[r>>2];c[f+4>>2]=a;Ue(0,3,20359,f);a=ox()|0;a=By(c[a>>2]|0)|0;c[h>>2]=57671;c[h+4>>2]=a;Ue(0,3,21881,h);a=-1;break}Kz(r,0,2)|0;a:do if(!(Bz(r)|0)){h=hA(r)|0;iA(r);f=0;while(1){if(f>>>0>=4){o=9;break}a=c[1712+(f<<3)+4>>2]|0;f=f+1|0;if(!((h|0)%(a|0)|0)){m=f;break}}do if((o|0)==9)if((f|0)==4){Ue(0,3,20473,k);a=-1;break a}else{m=0;a=c[1712+(0<<3)+4>>2]|0;break}while(0);if((gA(q,a,1,r)|0)!=1){a=ox()|0;c[l>>2]=c[a>>2];Ue(0,3,20553,l);a=ox()|0;a=By(c[a>>2]|0)|0;c[n>>2]=57671;c[n+4>>2]=a;Ue(0,3,21881,n);a=-1;break}j=q+176|0;c[j>>2]=m;he(q);k=(m|0)==1;l=q+120|0;if(k){t=+g[l>>3];i=q+128|0;g[l>>3]=+g[i>>3];g[i>>3]=t}else i=q+128|0;_O(d|0,q|0,184)|0;c[p>>2]=e;f=d+176|0;a=1;while(1){if((a|0)>=(b|0)){a=0;break a}e=(c[p>>2]|0)+(4-1)&~(4-1);h=c[e>>2]|0;c[p>>2]=e+4;c[h+176>>2]=c[f>>2];if((gA(q,c[1712+((c[f>>2]|0)+-1<<3)+4>>2]|0,1,r)|0)!=1){a=-1;break a}c[j>>2]=m;he(q);if(k){t=+g[l>>3];g[l>>3]=+g[i>>3];g[i>>3]=t}_O(h|0,q|0,184)|0;a=a+1|0}}else{a=ox()|0;c[i>>2]=c[a>>2];Ue(0,3,20428,i);a=ox()|0;a=By(c[a>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=a;Ue(0,3,21881,j);a=-1}while(0);xz(r)|0}else a=-1;while(0);zb=s;return a|0}function le(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+416|0;j=o+304|0;m=o+208|0;k=o+128|0;n=o;l=c[a>>2]|0;f=c[a+4>>2]|0;a:do if((ce(a+8|0,j,m)|0)<0)Ue(0,3,20591,o+400|0);else{i=+(f+-1|0);a=0;while(1){if((a|0)==4)break;f=j+32+(a<<3)|0;g[f>>3]=+g[j+64+(a<<3)>>3]*i-+g[f>>3];a=a+1|0}h=+g[j+80>>3];f=0;while(1){if((f|0)==3)break;a=0;while(1){if((a|0)==3)break;g[k+(f*24|0)+(a<<3)>>3]=+g[j+(f<<5)+(a<<3)>>3]/h;a=a+1|0}f=f+1|0}h=+(l+-1|0);g[n>>3]=+g[k>>3]*2.0/h;g[n+8>>3]=+g[k+8>>3]*2.0/h;g[n+16>>3]=-(+g[k+16>>3]*2.0/h+-1.0);f=n+24|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+40>>3]=-(+g[k+32>>3]*2.0/i);g[n+48>>3]=-(+g[k+40>>3]*2.0/i+-1.0);f=n+56|0;h=b-d;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;g[n+80>>3]=(b+d)/h;g[n+88>>3]=d*2.0*b/h;f=n+96|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[n+112>>3]=-1.0;g[n+120>>3]=0.0;h=+g[m+24>>3];i=+g[m+56>>3];b=+g[m+88>>3];f=0;while(1){if((f|0)==4)break a;d=+g[n+(f<<5)>>3];j=n+(f<<5)+8|0;k=n+(f<<5)+16|0;a=0;while(1){if((a|0)==3)break;g[e+((a<<2)+f<<3)>>3]=d*+g[m+(a<<3)>>3]+ +g[j>>3]*+g[m+32+(a<<3)>>3]+ +g[k>>3]*+g[m+64+(a<<3)>>3];a=a+1|0}g[e+(f+12<<3)>>3]=+g[n+(f<<5)+24>>3]+(d*h+ +g[j>>3]*i+ +g[k>>3]*b);f=f+1|0}}while(0);zb=o;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+64|0;n=s+24|0;o=s+16|0;p=s+8|0;q=s;r=FO(208)|0;if(!r){Ue(0,3,41858,s+32|0);Ea(1)}_O(r|0,a|0,184)|0;m=b<<1;l=(c[a>>2]|0)+m|0;c[r+192>>2]=l;m=(c[a+4>>2]|0)+m|0;c[r+196>>2]=m;c[r+200>>2]=b;c[r+204>>2]=b;d=B(l<<3,m)|0;e=FO(d)|0;c[r+184>>2]=e;if(!e){Ue(0,3,41858,s+40|0);Ea(1)}d=FO(d)|0;c[r+188>>2]=d;if(!d){Ue(0,3,41858,s+48|0);Ea(1)}k=a+104|0;j=c[a+176>>2]|0;i=0;a=e;while(1){if((i|0)>=(m|0))break;h=+(i-b|0);e=0;while(1){if((e|0)>=(l|0))break;t=+(e-b|0);ge(k,t,h,p,q,j)|0;f[a>>2]=+g[p>>3];f[a+4>>2]=+g[q>>3];fe(k,t,h,n,o,j)|0;f[d>>2]=+g[n>>3];f[d+4>>2]=+g[o>>3];e=e+1|0;d=d+8|0;a=a+8|0}i=i+1|0}zb=s;return r|0}function ne(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){GO(c[b+184>>2]|0);GO(c[(c[a>>2]|0)+188>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;a=0}else a=-1;return a|0}function oe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function pe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0;h=(c[a+16>>2]|0)+~~(b+.5)|0;g=(c[a+20>>2]|0)+~~(d+.5)|0;if(((h|0)>=0?(i=c[a+8>>2]|0,!((g|0)<0|(h|0)>=(i|0))):0)?(g|0)<(c[a+12>>2]|0):0){g=(c[a+4>>2]|0)+((B(i,g)|0)+h<<1<<2)|0;c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2];g=0}else g=-1;return g|0}function qe(a){a=a|0;var b=0,d=0;b=FO(8)|0;do if(b){d=FO(a<<3)|0;c[b>>2]=d;if(!d){GO(b);b=0;break}else{c[b+4>>2]=a;break}}else b=0;while(0);return b|0}function re(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function se(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0;b=+u(+(+te(a,a)));a:do if(b!=0.0){f=c[a>>2]|0;e=+g[f>>3];b=e<0.0?-b:b;e=e+b;g[f>>3]=e;e=1.0/+u(+(b*e));d=c[a+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;h=f+(a<<3)|0;g[h>>3]=e*+g[h>>3];a=a+1|0}}while(0);return +-b}function te(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0;f=c[a+4>>2]|0;if((f|0)!=(c[b+4>>2]|0))Ea(0);d=0;e=0.0;while(1){if((d|0)>=(f|0))break;h=e+ +g[(c[a>>2]|0)+(d<<3)>>3]*+g[(c[b>>2]|0)+(d<<3)>>3];d=d+1|0;e=h}return +e}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;u=x+8|0;v=x;w=c[a+8>>2]|0;a:do if(((w|0)==(c[a+4>>2]|0)?(w|0)==(c[b+4>>2]|0):0)?(w|0)==((c[d+4>>2]|0)+1|0):0){r=w+-2|0;s=u+4|0;t=v+4|0;l=0;while(1){if((l|0)>=(r|0))break;m=(c[a>>2]|0)+((B(l,w)|0)<<3)|0;g[(c[b>>2]|0)+(l<<3)>>3]=+g[m+(l<<3)>>3];i=w-l+-1|0;c[s>>2]=i;p=l+1|0;k=m+(p<<3)|0;c[u>>2]=k;o=+se(u);g[(c[d>>2]|0)+(l<<3)>>3]=o;b:do if(!(o==0.0)){h=p;while(1){if((h|0)>=(w|0))break;e=p;j=0.0;while(1){if(e>>>0>=h>>>0)break;f=(c[a>>2]|0)+((B(e,w)|0)+h<<3)|0;o=j+ +g[f>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}f=B(h,w)|0;e=h;while(1){if((e|0)>=(w|0))break;o=j+ +g[(c[a>>2]|0)+(e+f<<3)>>3]*+g[m+(e<<3)>>3];e=e+1|0;j=o}g[(c[b>>2]|0)+(h<<3)>>3]=j;h=h+1|0}c[t>>2]=i;c[s>>2]=i;c[u>>2]=k;c[v>>2]=(c[b>>2]|0)+(p<<3);o=+te(u,v)*.5;e=w;while(1){e=e+-1|0;if((e|0)<=(l|0))break b;j=+g[m+(e<<3)>>3];h=c[b>>2]|0;i=h+(e<<3)|0;n=+g[i>>3]-o*j;g[i>>3]=n;i=B(e,w)|0;f=e;while(1){if((f|0)>=(w|0))break;k=(c[a>>2]|0)+(f+i<<3)|0;g[k>>3]=+g[k>>3]-(j*+g[h+(f<<3)>>3]+n*+g[m+(f<<3)>>3]);f=f+1|0}}}while(0);l=p}if((w|0)<=1)if((w|0)==1){h=0;e=c[a>>2]|0;f=c[b>>2]|0;q=27}else i=w;else{e=c[a>>2]|0;q=B(r,w)|0;f=c[b>>2]|0;g[f+(r<<3)>>3]=+g[e+(q+r<<3)>>3];h=w+-1|0;g[(c[d>>2]|0)+(r<<3)>>3]=+g[e+(h+q<<3)>>3];q=27}if((q|0)==27){e=e+((B(h,w)|0)+h<<3)|0;i=w;j=+g[e>>3];e=f+(h<<3)|0;q=28}while(1){if((q|0)==28)g[e>>3]=j;d=i+-1|0;if((i|0)<=0){e=0;break a}m=(c[a>>2]|0)+((B(d,w)|0)<<3)|0;c:do if((i|0)<=(r|0)){h=w-d+-1|0;k=m+(i<<3)|0;e=i;while(1){if((e|0)>=(w|0))break c;c[t>>2]=h;c[s>>2]=h;c[u>>2]=k;l=B(e,w)|0;c[v>>2]=(c[a>>2]|0)+(l+i<<3);j=+te(u,v);f=i;while(1){if((f|0)>=(w|0))break;q=(c[a>>2]|0)+(f+l<<3)|0;g[q>>3]=+g[q>>3]-j*+g[m+(f<<3)>>3];f=f+1|0}e=e+1|0}}while(0);e=0;while(1){if((e|0)>=(w|0))break;g[m+(e<<3)>>3]=0.0;e=e+1|0}i=d;j=1.0;e=m+(d<<3)|0;q=28}}else e=-1;while(0);zb=x;return e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;f=+g[c>>3];h=+g[c+8>>3];e=+g[c+16>>3];d=+g[b+88>>3]+(f*+g[b+64>>3]+h*+g[b+72>>3]+e*+g[b+80>>3]);if(d==0.0)c=-1;else{i=+g[b+56>>3]+(f*+g[b+32>>3]+h*+g[b+40>>3]+e*+g[b+48>>3]);g[a>>3]=(+g[b+24>>3]+(f*+g[b>>3]+h*+g[b+8>>3]+e*+g[b+16>>3]))/d;g[a+8>>3]=i/d;c=0}return c|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0;j=zb;zb=zb+224|0;h=j+48|0;i=j;f=j+192|0;xe(h,f,c,d);a:do if((ye(i,b,f)|0)<0){Ue(0,3,20661,j+216|0);b=-1}else{c=0;while(1){if((c|0)==2){b=0;break a}d=0;while(1){if((d|0)==6)break;f=a+(c*48|0)+(d<<3)|0;g[f>>3]=0.0;b=0;e=0.0;while(1){if((b|0)==3)break;k=e+ +g[i+(c*24|0)+(b<<3)>>3]*+g[h+(b*48|0)+(d<<3)>>3];g[f>>3]=k;b=b+1|0;e=k}d=d+1|0}c=c+1|0}}while(0);zb=j;return b|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=zb;zb=zb+864|0;h=j+576|0;i=j;u=c+8|0;e=d+8|0;n=+g[e>>3];t=c+16|0;v=d+16|0;l=+g[v>>3];g[b>>3]=+g[c+24>>3]+(+g[c>>3]*+g[d>>3]+ +g[u>>3]*n+ +g[t>>3]*l);s=c+32|0;o=+g[d>>3];r=c+40|0;q=c+48|0;g[b+8>>3]=+g[c+56>>3]+(+g[s>>3]*o+n*+g[r>>3]+l*+g[q>>3]);p=c+64|0;d=c+72|0;n=+g[e>>3];e=c+80|0;g[b+16>>3]=+g[c+88>>3]+(o*+g[p>>3]+ +g[d>>3]*n+l*+g[e>>3]);l=+g[c>>3];g[h>>3]=o*l;g[h+8>>3]=n*l;m=+g[v>>3];g[h+16>>3]=l*m;k=+g[u>>3];g[h+24>>3]=o*k;g[h+32>>3]=n*k;g[h+40>>3]=m*k;f=+g[t>>3];g[h+48>>3]=o*f;g[h+56>>3]=n*f;g[h+64>>3]=m*f;g[h+72>>3]=l;g[h+80>>3]=k;g[h+88>>3]=f;f=+g[s>>3];g[h+96>>3]=o*f;g[h+104>>3]=n*f;g[h+112>>3]=m*f;k=+g[r>>3];g[h+120>>3]=o*k;g[h+128>>3]=n*k;g[h+136>>3]=m*k;l=+g[q>>3];g[h+144>>3]=o*l;g[h+152>>3]=n*l;g[h+160>>3]=m*l;g[h+168>>3]=f;g[h+176>>3]=k;g[h+184>>3]=l;l=+g[p>>3];g[h+192>>3]=o*l;g[h+200>>3]=n*l;g[h+208>>3]=m*l;k=+g[d>>3];g[h+216>>3]=o*k;g[h+224>>3]=n*k;g[h+232>>3]=m*k;f=+g[e>>3];g[h+240>>3]=o*f;g[h+248>>3]=n*f;g[h+256>>3]=m*f;g[h+264>>3]=l;g[h+272>>3]=k;g[h+280>>3]=f;ze(i);c=0;while(1){if((c|0)==3)break;d=0;while(1){if((d|0)==6)break;e=a+(c*48|0)+(d<<3)|0;g[e>>3]=0.0;b=0;f=0.0;while(1){if((b|0)==12)break;o=f+ +g[h+(c*96|0)+(b<<3)>>3]*+g[i+(b*48|0)+(d<<3)>>3];g[e>>3]=o;b=b+1|0;f=o}d=d+1|0}c=c+1|0}zb=j;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0;o=+g[b>>3];r=+g[c>>3];p=b+8|0;q=+g[c+8>>3];n=b+16|0;d=+g[c+16>>3];e=+g[b+24>>3]+(o*r+ +g[p>>3]*q+ +g[n>>3]*d);c=b+32|0;f=b+40|0;h=b+48|0;i=+g[b+56>>3]+(r*+g[c>>3]+q*+g[f>>3]+d*+g[h>>3]);j=b+64|0;k=+g[j>>3];l=b+72|0;m=b+80|0;d=+g[b+88>>3]+(r*k+q*+g[l>>3]+d*+g[m>>3]);if(d==0.0)c=-1;else{r=d*d;g[a>>3]=(o*d-e*k)/r;g[a+8>>3]=(d*+g[p>>3]-e*+g[l>>3])/r;g[a+16>>3]=(d*+g[n>>3]-e*+g[m>>3])/r;g[a+24>>3]=(d*+g[c>>3]-i*+g[j>>3])/r;g[a+32>>3]=(d*+g[f>>3]-i*+g[l>>3])/r;g[a+40>>3]=(d*+g[h>>3]-i*+g[m>>3])/r;c=0}return c|0}function ze(a){a=a|0;var b=0,d=0,e=0;b=a+64|0;d=a;e=d+64|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+104>>3]=1.0;b=a+160|0;d=a+112|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+240|0;d=a+168|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+296|0;d=a+248|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=-1.0;b=a+304|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;g[a+336>>3]=1.0;b=a+456|0;d=a+344|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+512|0;d=a+464|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;b=a+568|0;d=a+520|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));g[b>>3]=1.0;return}function Ae(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=6;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=6;c[f>>2]=d;d=Id(f)|0;do if(d){b=Gd(d,f)|0;if(!b){Ld(d)|0;a=-1;break}a=Gd(d,g)|0;if(!a){Ld(d)|0;Ld(b)|0;a=-1;break}if((Xd(b)|0)<0){Ld(d)|0;Ld(b)|0;Ld(a)|0;a=-1;break}else{Nd(h,b,a)|0;Ld(d)|0;Ld(b)|0;Ld(a)|0;a=0;break}}else a=-1;while(0);zb=i;return a|0}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0;j=zb;zb=zb+256|0;f=j+192|0;h=j+96|0;i=j;Ce(f,b);De(h,f);b=0;while(1){if((b|0)==3)break;d=a+(b<<5)|0;e=a+(b<<5)+8|0;f=a+(b<<5)+16|0;c=0;while(1){if((c|0)==4)break;g[i+(b<<5)+(c<<3)>>3]=+g[d>>3]*+g[h+(c<<3)>>3]+ +g[e>>3]*+g[h+32+(c<<3)>>3]+ +g[f>>3]*+g[h+64+(c<<3)>>3];c=c+1|0}f=i+(b<<5)+24|0;g[f>>3]=+g[a+(b<<5)+24>>3]+ +g[f>>3];b=b+1|0}b=0;while(1){if((b|0)==3)break;c=0;while(1){if((c|0)==4)break;g[a+(b<<5)+(c<<3)>>3]=+g[i+(b<<5)+(c<<3)>>3];c=c+1|0}b=b+1|0}zb=j;return 0}function Ce(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,h=0.0;d=+g[b>>3];e=b+8|0;h=+g[e>>3];f=b+16|0;c=+g[f>>3];c=d*d+h*h+c*c;if(c==0.0){g[a>>3]=1.0;g[a+8>>3]=0.0;d=0.0;c=0.0}else{c=+u(+c);g[a>>3]=d/c;g[a+8>>3]=+g[e>>3]/c;d=c;c=+g[f>>3]/c}g[a+16>>3]=c;g[a+24>>3]=d;g[a+32>>3]=+g[b+24>>3];g[a+40>>3]=+g[b+32>>3];g[a+48>>3]=+g[b+40>>3];return}function De(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0;c=+g[b+24>>3];e=+w(+c);d=1.0-e;c=+x(+c);i=+g[b>>3];g[a>>3]=e+i*i*d;h=b+8|0;f=b+16|0;g[a+8>>3]=d*(+g[b>>3]*+g[h>>3])-c*+g[f>>3];g[a+16>>3]=d*(+g[b>>3]*+g[f>>3])+c*+g[h>>3];g[a+24>>3]=+g[b+32>>3];g[a+32>>3]=d*(+g[h>>3]*+g[b>>3])+c*+g[f>>3];i=+g[h>>3];g[a+40>>3]=e+d*(i*i);g[a+48>>3]=d*(+g[h>>3]*+g[f>>3])-c*+g[b>>3];g[a+56>>3]=+g[b+40>>3];g[a+64>>3]=d*(+g[f>>3]*+g[b>>3])-c*+g[h>>3];g[a+72>>3]=d*(+g[f>>3]*+g[h>>3])+c*+g[b>>3];c=+g[f>>3];g[a+80>>3]=e+d*(c*c);g[a+88>>3]=+g[b+48>>3];return}function Ee(a){a=a|0;var b=0,d=0,e=0;b=FO(136)|0;if(!b)b=0;else{d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;g[b+(d<<5)+(e<<3)>>3]=+g[a+(d<<5)+(e<<3)>>3];e=e+1|0}d=d+1|0}c[b+96>>2]=10;g[b+104>>3]=.10000000149011612;g[b+112>>3]=.9900000095367432;g[b+120>>3]=4.0;g[b+128>>3]=.5}return b|0}function Fe(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{GO(b);c[a>>2]=0;a=0}return a|0}function Ge(a,b){a=a|0;b=+b;if(!a)a=-1;else{g[a+128>>3]=b;a=0}return a|0}function He(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=zb;zb=zb+176|0;j=x+168|0;i=x+160|0;s=x+144|0;t=x+48|0;u=x;v=b+8|0;h=c[v>>2]|0;do if((h|0)>=3){w=FO(h*96|0)|0;if(!w){Ue(0,3,41875,i);h=-1;break}r=FO(h<<4)|0;if(!r){Ue(0,3,41875,j);GO(w);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}d=b+4|0;m=s+8|0;n=a+104|0;o=a+96|0;p=a+120|0;q=a+112|0;l=0.0;j=0;a:while(1){ud(a,e,t)|0;k=0.0;i=0;while(1){h=c[v>>2]|0;if((i|0)>=(h|0))break;if((ve(s,t,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=16;break a}h=c[b>>2]|0;z=+g[h+(i<<4)>>3]-+g[s>>3];y=+g[h+(i<<4)+8>>3]-+g[m>>3];h=i<<1;g[r+(h<<3)>>3]=z;g[r+((h|1)<<3)>>3]=y;k=k+(z*z+y*y);i=i+1|0}k=k/+(h|0);if(k<+g[n>>3]){i=31;break}if((j|0?k<+g[p>>3]:0)?k/l>+g[q>>3]:0){i=31;break}if((j|0)==(c[o>>2]|0)){i=31;break}i=0;while(1){if((i|0)>=(h|0))break;if((we(w+(i*12<<3)|0,a,e,(c[d>>2]|0)+(i*24|0)|0)|0)<0){i=27;break a}i=i+1|0;h=c[v>>2]|0}if((Ae(u,r,w,h<<1)|0)<0){i=29;break}Be(e,u)|0;l=k;j=j+1|0}if((i|0)==16){Ie(w,r);h=-1;break}else if((i|0)==27){Ie(w,r);h=-1;break}else if((i|0)==29){Ie(w,r);h=-1;break}else if((i|0)==31){g[f>>3]=k;GO(w);GO(r);h=0;break}}else h=-1;while(0);zb=x;return h|0}function Ie(a,b){a=a|0;b=b|0;GO(a);GO(b);return}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=zb;zb=zb+192|0;l=F+184|0;k=F+176|0;j=F+168|0;h=F+160|0;A=F+144|0;B=F+48|0;C=F;D=b+8|0;i=c[D>>2]|0;do if((i|0)>=4){m=~~(+g[a+128>>3]*+(i|0))+-1|0;m=(m|0)>3?m:3;E=FO(i*96|0)|0;if(!E){Ue(0,3,41875,h);h=-1;break}z=FO(i<<4)|0;if(!z){Ue(0,3,41875,j);GO(E);h=-1;break}h=i<<3;y=FO(h)|0;if(!y){Ue(0,3,41875,k);GO(E);GO(z);h=-1;break}x=FO(h)|0;if(!x){Ue(0,3,41875,l);GO(E);GO(z);GO(y);h=-1;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;g[e+(h<<5)+(i<<3)>>3]=+g[d+(h<<5)+(i<<3)>>3];i=i+1|0}h=h+1|0}v=b+4|0;w=A+8|0;d=x+(m<<3)|0;m=a+104|0;s=a+96|0;t=a+120|0;u=a+112|0;q=0.0;l=0;a:while(1){ud(a,e,B)|0;h=0;while(1){i=c[D>>2]|0;if((h|0)>=(i|0))break;if((ve(A,B,(c[v>>2]|0)+(h*24|0)|0)|0)<0){i=20;break a}k=c[b>>2]|0;p=+g[k+(h<<4)>>3]-+g[A>>3];r=+g[k+(h<<4)+8>>3]-+g[w>>3];k=h<<1;g[z+(k<<3)>>3]=p;g[z+((k|1)<<3)>>3]=r;r=p*p+r*r;g[x+(h<<3)>>3]=r;g[y+(h<<3)>>3]=r;h=h+1|0}oy(x,i,8,18);r=+g[d>>3]*4.0;r=r<16.0?16.0:r;i=c[D>>2]|0;p=r/6.0;o=0.0;h=0;while(1){if((h|0)>=(i|0))break;n=+g[x+(h<<3)>>3];if(n>r)n=p;else{n=1.0-n/r;n=p*(1.0-n*(n*n))}o=o+n;h=h+1|0}o=o/+(i|0);if(o<+g[m>>3]){i=44;break}if((l|0?o<+g[t>>3]:0)?o/q>+g[u>>3]:0){i=44;break}if((l|0)==(c[s>>2]|0)){i=44;break}h=0;k=0;while(1){if((k|0)>=(i|0))break;n=+g[y+(k<<3)>>3];if(n<=r){j=h*6|0;i=E+(j<<3)|0;if((we(i,a,e,(c[v>>2]|0)+(k*24|0)|0)|0)<0){i=36;break a}q=1.0-n/r;q=q*q;g[i>>3]=q*+g[i>>3];i=E+((j|1)<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+2<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+3<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+4<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+5<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+6<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+7<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+8<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+9<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+10<<3)|0;g[i>>3]=q*+g[i>>3];i=E+(j+11<<3)|0;g[i>>3]=q*+g[i>>3];i=k<<1;g[z+(h<<3)>>3]=q*+g[z+(i<<3)>>3];g[z+(h+1<<3)>>3]=q*+g[z+((i|1)<<3)>>3];h=h+2|0;i=c[D>>2]|0}k=k+1|0}if((h|0)<6){i=40;break}if((Ae(C,z,E,h)|0)<0){i=42;break}Be(e,C)|0;q=o;l=l+1|0}if((i|0)==20){Ke(E,z,y,x);h=-1;break}else if((i|0)==36){Ke(E,z,y,x);h=-1;break}else if((i|0)==40){Ke(E,z,y,x);h=-1;break}else if((i|0)==42){Ke(E,z,y,x);h=-1;break}else if((i|0)==44){g[f>>3]=o;GO(E);GO(z);GO(y);GO(x);h=0;break}}else h=-1;while(0);zb=F;return h|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;GO(a);GO(b);GO(c);GO(d);return}function Le(a,b){a=a|0;b=b|0;var c=0.0;c=+g[a>>3]-+g[b>>3];return (c<0.0?-1:c>0.0&1)|0}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;t=zb;zb=zb+128|0;s=t+120|0;p=t+112|0;o=t+104|0;m=t+96|0;l=t+88|0;j=t+80|0;i=t+72|0;r=t;a:do if((e|0)>=4){h=0;while(1){if((h|0)>=(e|0))break;if(+g[d+(h*24|0)+16>>3]!=0.0){h=-1;break a}else h=h+1|0}if((((((((!(+g[a>>3]==0.0)?!(+g[a+32>>3]!=0.0):0)?(q=a+40|0,!(+g[q>>3]==0.0)):0)?!(+g[a+64>>3]!=0.0):0)?!(+g[a+72>>3]!=0.0):0)?!(+g[a+80>>3]!=1.0):0)?!(+g[a+24>>3]!=0.0):0)?!(+g[a+56>>3]!=0.0):0)?!(+g[a+88>>3]!=0.0):0){h=e<<1;n=Dd(h,8)|0;if(!n){Ue(0,3,20681,i);h=-1;break}k=Dd(h,1)|0;if(!k){Ld(n)|0;Ue(0,3,20707,j);h=-1;break}h=0;while(1){if((h|0)==(e|0))break;y=d+(h*24|0)|0;j=c[n>>2]|0;i=h<<4;g[j+(i<<3)>>3]=+g[y>>3];x=d+(h*24|0)+8|0;g[j+((i|1)<<3)>>3]=+g[x>>3];g[j+((i|2)<<3)>>3]=1.0;g[j+((i|3)<<3)>>3]=0.0;g[j+((i|4)<<3)>>3]=0.0;g[j+((i|5)<<3)>>3]=0.0;w=b+(h<<4)|0;g[j+((i|6)<<3)>>3]=-(+g[y>>3]*+g[w>>3]);g[j+((i|7)<<3)>>3]=-(+g[x>>3]*+g[w>>3]);g[j+((i|8)<<3)>>3]=0.0;g[j+((i|9)<<3)>>3]=0.0;g[j+((i|10)<<3)>>3]=0.0;g[j+((i|11)<<3)>>3]=+g[y>>3];g[j+((i|12)<<3)>>3]=+g[x>>3];g[j+((i|13)<<3)>>3]=1.0;v=b+(h<<4)+8|0;g[j+((i|14)<<3)>>3]=-(+g[y>>3]*+g[v>>3]);g[j+((i|15)<<3)>>3]=-(+g[x>>3]*+g[v>>3]);i=c[k>>2]|0;j=h<<1;g[i+(j<<3)>>3]=+g[w>>3];g[i+((j|1)<<3)>>3]=+g[v>>3];h=h+1|0}b=Id(n)|0;if(!b){Ld(n)|0;Ld(k)|0;Ue(0,3,20733,l);h=-1;break}j=Gd(b,n)|0;if(!j){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ue(0,3,20759,m);h=-1;break}i=Gd(b,k)|0;if(!i){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ue(0,3,20785,o);h=-1;break}if((Xd(j)|0)<0){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20811,p);h=-1;break}h=Gd(j,i)|0;if(!h){Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ue(0,3,20837,s);h=-1;break}else{p=c[h>>2]|0;H=+g[p+48>>3];w=r+16|0;E=+g[a+48>>3];A=+g[q>>3];K=(+g[p+24>>3]-H*E)/A;s=r+8|0;D=+g[a+16>>3];C=+g[a+8>>3];B=+g[a>>3];N=(+g[p>>3]-H*D-K*C)/B;I=+g[p+56>>3];v=r+40|0;L=(+g[p+32>>3]-E*I)/A;x=r+32|0;J=(+g[p+8>>3]-D*I-C*L)/B;y=r+24|0;A=(+g[p+40>>3]-E)/A;E=+g[p+16>>3];Ld(n)|0;Ld(k)|0;Ld(b)|0;Ld(j)|0;Ld(i)|0;Ld(h)|0;M=+u(+(H*H+(K*K+N*N)));z=+u(+(I*I+(L*L+J*J)));g[r>>3]=N/M;g[s>>3]=K/M;g[w>>3]=H/M;g[y>>3]=J/z;g[x>>3]=L/z;g[v>>3]=I/z;z=(M+z)*.5;Ne(r);M=+g[s>>3];I=+g[v>>3];L=+g[w>>3];J=+g[x>>3];H=M*I-L*J;K=+g[y>>3];N=+g[r>>3];G=L*K-I*N;O=J*N-M*K;F=+u(+(O*O+(H*H+G*G)));H=H/F;g[r+48>>3]=H;G=G/F;g[r+56>>3]=G;F=O/F;g[r+64>>3]=F;g[f>>3]=N;g[f+32>>3]=M;g[f+64>>3]=L;g[f+8>>3]=K;g[f+40>>3]=J;g[f+72>>3]=I;g[f+16>>3]=H;g[f+48>>3]=G;g[f+80>>3]=F;g[f+24>>3]=(E-D-C*A)/B/z;g[f+56>>3]=A/z;g[f+88>>3]=1.0/z;h=0;break}}else h=-1}else h=-1;while(0);zb=t;return h|0}function Ne(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0;l=+g[a>>3];L=a+8|0;o=+g[L>>3];M=a+16|0;p=+g[M>>3];N=a+24|0;B=+g[N>>3];O=a+32|0;C=+g[O>>3];K=a+40|0;f=+g[K>>3];b=o*f-p*C;c=p*B-l*f;d=l*C-o*B;e=+u(+(d*d+(b*b+c*c)));do if(!(e==0.0)){m=b/e;k=c/e;j=d/e;A=l*B+o*C+p*f;A=A<0.0?-A:A;A=(+u(+(A+1.0))+ +u(+(1.0-A)))*.5;d=l*k;b=o*m;c=d-b;if(c!=0.0){n=0;y=m;h=l;i=o;z=k;e=p}else{P=l*j-p*m!=0.0;i=P?p:o;h=P?l:p;z=P?j:k;y=P?m:j;d=h*z;c=i*y;n=P?1:2;b=c;c=d-c;e=P?o:l;j=P?k:m}if(!(c==0.0)?(t=(i*j-e*z)/c,v=A*z/c,x=b-d,w=(h*j-e*y)/x,x=A*y/x,r=t*t+w*w+1.0,s=t*v+w*x,q=s*s-r*(v*v+x*x+-1.0),!(q<0.0)):0){d=+u(+q);h=(d-s)/r;i=v+t*h;e=x+w*h;d=(-s-d)/r;c=v+t*d;b=x+w*d;switch(n&3){case 1:{t=b;s=d;q=c;r=e;p=h;o=i;l=y;m=j;b=z;break}case 2:{t=c;s=b;q=d;r=i;p=e;o=h;l=j;m=z;b=y;break}default:{t=d;s=b;q=c;r=h;p=e;o=i;l=y;m=z;b=j}}c=B*m;d=C*l;e=c-d;if(e!=0.0){n=0;h=l;i=B;j=C;k=m}else{P=B*b-f*l!=0.0;j=P?f:C;i=P?B:f;k=P?b:m;h=P?l:b;f=i*k;e=j*h;n=P?1:2;c=f;d=e;e=f-e;f=P?C:B;b=P?m:l}if(!(e==0.0)?(G=(j*b-f*k)/e,H=A*k/e,J=d-c,I=(i*b-f*h)/J,J=A*h/J,E=G*G+I*I+1.0,F=G*H+I*J,D=F*F-E*(H*H+J*J+-1.0),!(D<0.0)):0){j=+u(+D);h=(j-F)/E;d=H+G*h;i=J+I*h;j=(-F-j)/E;c=H+G*j;b=J+I*j;switch(n&3){case 1:{l=b;b=j;j=c;k=i;i=h;h=d;break}case 2:{l=c;k=d;break}default:{l=j;j=c;k=h;h=d}}f=o*h+p*i+r*k;f=f<0.0?-f:f;e=o*j+p*b+r*l;e=e<0.0?-e:e;d=q*h+s*i+t*k;d=d<0.0?-d:d;c=q*j+s*b+t*l;c=c<0.0?-c:c;if(f>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}else if(e>3]=o;g[L>>3]=p;g[M>>3]=r;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}else{g[a>>3]=q;g[L>>3]=s;g[M>>3]=t;if(d>3]=h;g[O>>3]=i;g[K>>3]=k;break}else{g[N>>3]=j;g[O>>3]=b;g[K>>3]=l;break}}}}}while(0);return}function Oe(a){a=a|0;GO(c[a>>2]|0);GO(a);return 0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,0))}function Qe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+208|0;w=C+200|0;v=C+192|0;y=C+96|0;x=C;z=e+4|0;i=c[z>>2]|0;u=e+112|0;p=e+120|0;o=0;while(1){if((o|0)>=(i|0))break;q=c[e>>2]|0;r=q+(o*320|0)|0;if(!(c[q+(o*320|0)+4>>2]|0)){j=-1;k=0;while(1){if((k|0)>=(d|0))break;if((c[b+(k<<8)+8>>2]|0)==(c[r>>2]|0)?(l=+g[b+(k<<8)+40>>3],!(l<+g[u>>3])):0)if(!((j|0)!=-1?!(+g[b+(j<<8)+40>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+20>>2]}else{n=q+(o*320|0)+312|0;m=0;j=-1;while(1){if((m|0)>=(d|0))break;k=c[b+(m<<8)+12>>2]|0;if((k|0)==0?(t=b+(m<<8)+248|0,s=c[t>>2]|0,t=c[t+4>>2]|0,!((s|0)==0&(t|0)==0)):0){k=n;if((s|0)==(c[k>>2]|0)?(t|0)==(c[k+4>>2]|0):0)B=20}else if((k|0)==(c[r>>2]|0))B=20;if((B|0)==20){B=0;h=+g[b+(m<<8)+48>>3];if(!(h<+g[p>>3]))if(!((j|0)!=-1?!(+g[b+(j<<8)+48>>3]>2]=j;if((j|0)>-1)c[b+(j<<8)+16>>2]=c[b+(j<<8)+24>>2]}o=o+1|0}p=0;n=0;j=0;o=0;while(1){if((o|0)>=(i|0))break;i=c[e>>2]|0;k=c[i+(o*320|0)+304>>2]|0;do if((k|0)<0){k=p;i=n}else{m=b+(k<<8)|0;if(+Uc(a,m,+g[i+(o*320|0)+8>>3],x)>4.0){c[(c[e>>2]|0)+(o*320|0)+304>>2]=-1;i=b+(k<<8)+236|0;if(c[i>>2]|0){k=p;i=n;break}c[i>>2]=7;k=p;i=n;break}k=c[m>>2]|0;a:do if((p|0)==0|(n|0)<(k|0)){i=0;while(1){if((i|0)==3){i=k;j=o;break a}j=0;while(1){if((j|0)==4)break;g[y+(i<<5)+(j<<3)>>3]=+g[x+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else i=n;while(0);k=p+1|0}while(0);p=k;n=i;o=o+1|0;i=c[z>>2]|0}b:do if((p|0)!=0?(p|0)>=(c[e+128>>2]|0):0){ud(y,(c[e>>2]|0)+(j*320|0)+112|0,x)|0;o=p<<2;q=FO(p<<6)|0;if(!q){Ue(0,3,41858,v);Ea(1)}p=FO(p*96|0)|0;if(!p){Ue(0,3,41858,w);Ea(1)}n=c[z>>2]|0;m=0;i=0;while(1){if((m|0)>=(n|0))break;j=c[e>>2]|0;k=c[j+(m*320|0)+304>>2]|0;if((k|0)>=0){v=c[b+(k<<8)+16>>2]|0;u=(4-v|0)%4|0;w=i<<3;g[q+(w<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|1)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(5-v|0)%4|0;g[q+((w|2)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|3)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];u=(6-v|0)%4|0;g[q+((w|4)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)>>3];g[q+((w|5)<<3)>>3]=+g[b+(k<<8)+168+(u<<4)+8>>3];v=(7-v|0)%4|0;g[q+((w|6)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)>>3];g[q+((w|7)<<3)>>3]=+g[b+(k<<8)+168+(v<<4)+8>>3];w=i*12|0;g[p+(w<<3)>>3]=+g[j+(m*320|0)+208>>3];g[p+((w|1)<<3)>>3]=+g[j+(m*320|0)+216>>3];g[p+((w|2)<<3)>>3]=+g[j+(m*320|0)+224>>3];g[p+((w|3)<<3)>>3]=+g[j+(m*320|0)+232>>3];g[p+(w+4<<3)>>3]=+g[j+(m*320|0)+240>>3];g[p+(w+5<<3)>>3]=+g[j+(m*320|0)+248>>3];g[p+(w+6<<3)>>3]=+g[j+(m*320|0)+256>>3];g[p+(w+7<<3)>>3]=+g[j+(m*320|0)+264>>3];g[p+(w+8<<3)>>3]=+g[j+(m*320|0)+272>>3];g[p+(w+9<<3)>>3]=+g[j+(m*320|0)+280>>3];g[p+(w+10<<3)>>3]=+g[j+(m*320|0)+288>>3];g[p+(w+11<<3)>>3]=+g[j+(m*320|0)+296>>3];i=i+1|0}m=m+1|0}m=e+104|0;j=(f|0)!=0;if(!(c[m>>2]|0)){i=e+8|0;h=+Wc(a,x,q,p,o,i);if(j&h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,i);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,i)}}}}GO(p);GO(q)}else{h=+Wc(a,x,q,p,o,y);k=e+8|0;l=+Wc(a,k,q,p,o,k);i=h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.8)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);e:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.6)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);f:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,.4)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);g:do if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l;while(0);if(h>=20.0){Ge(c[a>>2]|0,0.0)|0;h=+Xc(a,x,q,p,o,y);l=+Xc(a,k,q,p,o,k);if(h>3]=+g[y+(j<<5)+(i<<3)>>3];i=i+1|0}j=j+1|0}}else h=l}}}}}else if(i){i=0;while(1){if((i|0)==3)break c;j=0;while(1){if((j|0)==4)break;g[e+8+(i<<5)+(j<<3)>>3]=+g[y+(i<<5)+(j<<3)>>3];j=j+1|0}i=i+1|0}}else h=l;while(0);GO(p);GO(q)}if(h<20.0){c[m>>2]=1;break}c[m>>2]=0;j=c[z>>2]|0;i=0;while(1){if((i|0)>=(j|0))break b;k=c[(c[e>>2]|0)+(i*320|0)+304>>2]|0;if((k|0)>=0?(A=b+(k<<8)+236|0,(c[A>>2]|0)==0):0)c[A>>2]=8;i=i+1|0}}else B=45;while(0);if((B|0)==45){c[e+104>>2]=0;h=-1.0}zb=C;return +h}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +(+Qe(a,b,c,d,1))}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0;T=zb;zb=zb+2528|0;S=T+2512|0;Q=T+2504|0;G=T+2488|0;P=T+2480|0;F=T+2472|0;E=T+2456|0;O=T+2448|0;D=T+2440|0;N=T+2432|0;M=T+2424|0;L=T+2416|0;C=T+2408|0;h=T+2400|0;f=T+2392|0;H=T+2384|0;e=T+2376|0;d=T+2368|0;z=T+2304|0;I=T+2048|0;J=T;A=T+2524|0;R=T+2520|0;B=T+2516|0;K=rz(a,21853)|0;do if(!K){c[d>>2]=a;Ue(0,3,20863,d);d=ox()|0;d=By(c[d>>2]|0)|0;c[e>>2]=57671;c[e+4>>2]=d;Ue(0,3,21881,e);d=0}else{Te(I,K);c[H>>2]=R;if((Cz(I,21887,H)|0)!=1){c[f>>2]=a;Ue(0,3,20916,f);xz(K)|0;d=0;break}d=c[R>>2]|0;y=FO(d*320|0)|0;if(!y){Ue(0,3,41858,h);Ea(1)}p=(b|0)==0;q=z+8|0;r=z+16|0;s=z+24|0;t=z+32|0;u=z+40|0;v=z+48|0;w=z+56|0;x=0;f=0;a:while(1){if((x|0)>=(d|0)){d=31;break}Te(I,K);d=y+(x*320|0)|0;e=y+(x*320|0)+312|0;c[C>>2]=e;c[C+4>>2]=A;if((Cz(I,21017,C)|0)!=1){if(p){d=11;break}if(!(Ad(J,a,2048,1)|0)){d=13;break}sA(J,I,2047-(Qy(J)|0)|0)|0;o=sd(b,J)|0;c[d>>2]=o;if((o|0)<0){d=15;break}else{d=1;e=0}}else{e=c[e>>2]|0;c[d>>2]=(e&-32768|0)==0&0==0?e&32767:0;d=2;e=1}c[y+(x*320|0)+4>>2]=e;f=f|d;Te(I,K);e=y+(x*320|0)+8|0;c[D>>2]=e;if((Cz(I,21313,D)|0)!=1){d=18;break}Te(I,K);m=y+(x*320|0)+16|0;n=y+(x*320|0)+24|0;o=y+(x*320|0)+40|0;c[E>>2]=m;c[E+4>>2]=n;c[E+8>>2]=y+(x*320|0)+32;c[E+12>>2]=o;if((Cz(I,21422,E)|0)==4)d=1;else{c[F>>2]=H;c[F+4>>2]=B;if((Cz(I,21438,F)|0)!=2){d=23;break}d=0}do{Te(I,K);c[G>>2]=y+(x*320|0)+16+(d<<5);c[G+4>>2]=y+(x*320|0)+16+(d<<5)+8;c[G+8>>2]=y+(x*320|0)+16+(d<<5)+16;c[G+12>>2]=y+(x*320|0)+16+(d<<5)+24;if((Cz(I,21422,G)|0)!=4){d=25;break a}d=d+1|0}while(d>>>0<3);xd(m,y+(x*320|0)+112|0)|0;V=+g[e>>3];U=V*-.5;g[z>>3]=U;V=V*.5;g[q>>3]=V;g[r>>3]=V;g[s>>3]=V;g[t>>3]=V;g[u>>3]=U;g[v>>3]=U;g[w>>3]=U;e=y+(x*320|0)+48|0;h=y+(x*320|0)+56|0;i=y+(x*320|0)+72|0;j=y+(x*320|0)+80|0;k=y+(x*320|0)+88|0;l=y+(x*320|0)+104|0;d=0;while(1){if((d|0)==4)break;U=+g[z+(d<<4)>>3];V=+g[z+(d<<4)+8>>3];g[y+(x*320|0)+208+(d*24|0)>>3]=+g[o>>3]+(+g[m>>3]*U+ +g[n>>3]*V);g[y+(x*320|0)+208+(d*24|0)+8>>3]=+g[i>>3]+(U*+g[e>>3]+V*+g[h>>3]);g[y+(x*320|0)+208+(d*24|0)+16>>3]=+g[l>>3]+(U*+g[j>>3]+V*+g[k>>3]);d=d+1|0}x=x+1|0;d=c[R>>2]|0}if((d|0)==11){c[L>>2]=a;c[L+4>>2]=I;Ue(0,3,21024,L)}else if((d|0)==13){c[M>>2]=a;Ue(0,3,21152,M)}else if((d|0)==15){c[N>>2]=a;c[N+4>>2]=J;Ue(0,3,21236,N)}else if((d|0)==18){c[O>>2]=a;c[O+4>>2]=x+1;Ue(0,3,21317,O)}else if((d|0)==23){c[P>>2]=a;c[P+4>>2]=x+1;Ue(0,3,21444,P)}else if((d|0)==25){c[Q>>2]=a;c[Q+4>>2]=x+1;Ue(0,3,21444,Q)}else if((d|0)==31){xz(K)|0;d=FO(136)|0;if(!d){Ue(0,3,41858,S);Ea(1)}c[d>>2]=y;c[d+4>>2]=c[R>>2];c[d+128>>2]=0;c[d+104>>2]=0;do if((f&3|0)!=3){e=d+108|0;if(!(f&1)){c[e>>2]=1;break}else{c[e>>2]=0;break}}else c[d+108>>2]=2;while(0);g[d+112>>3]=.5;g[d+120>>3]=.5;break}xz(K)|0;GO(y);d=0}while(0);zb=T;return d|0}function Te(b,c){b=b|0;c=c|0;var d=0,e=0;a:while(1){if(!(Az(b,256,c)|0))break;d=Qy(b)|0;b:while(1){if(!d)break;d=d+-1|0;e=b+d|0;switch(a[e>>0]|0){case 13:case 10:break;default:break b}a[e>>0]=0}switch(a[b>>0]|0){case 0:case 35:break;default:break a}}return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;b=g;if((e|0)!=0&(c[3916]|0)<=(d|0)?a[e>>0]|0:0){c[b>>2]=f;Ve(0,d,e,b)}zb=g;return}function Ve(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;j=l+16|0;b=l;if((!((e|0)==0|(c[3916]|0)>(d|0))?a[e>>0]|0:0)?(c[b>>2]=c[f>>2],k=Jx(0,0,e,b)|0,k|0):0){if(d>>>0<4)b=(Qy(c[1744+(d<<2)>>2]|0)|0)+3|0;else b=0;g=b+k|0;h=g+1|0;i=FO(h)|0;if(b|0){c[j>>2]=c[1744+(d<<2)>>2];bz(i,b+1|0,21553,j)|0}Jx(i+b|0,k+1|0,e,f)|0;do if(0){if(0?(m=c[13864]|0,m>>>0<0):0){b=0+m|0;if(g>>>0>(-4-m+0|0)>>>0){a[b>>0]=46;a[b+1>>0]=46;a[b+2>>0]=46;a[b+3>>0]=0;c[13864]=0;break}else{Wz(b,i,h)|0;c[13864]=(c[13864]|0)+g;break}}}else kz(i,c[4001]|0)|0;while(0);GO(i)}zb=l;return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(b){e=rz(b,22236)|0;if(e){Kz(e,0,2)|0;f=hA(e)|0;Kz(e,0,0)|0;g=f+1|0;b=FO(g)|0;if(!b){xz(e)|0;b=ox()|0;c[b>>2]=48;b=0;break}if(!(gA(b,f,1,e)|0)){GO(b);xz(e)|0;b=0;break}a[b+f>>0]=0;xz(e)|0;if(d)c[d>>2]=g}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}while(0);return b|0}function Xe(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+40>>2]=b;a=0}return a|0}function Ye(a,b){a=a|0;b=+b;if(!a)a=-1;else{f[a+44>>2]=b;a=0}return a|0}function Ze(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+24>>2]=b;a=0}return a|0}function _e(a,b){a=a|0;b=b|0;b=(b|0)<40?b:40;if(!a)b=-1;else{c[a+36>>2]=(b|0)>3?b:3;b=0}return b|0}function $e(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+28>>2]=b;a=0}return a|0}function af(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+32>>2]=b;a=0}return a|0}function bf(b,e){b=b|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0;z=zb;zb=zb+16|0;w=b+4|0;x=b+12|0;A=+f[x>>2];y=iz(+(c[w>>2]|0)*e/A)|0;t=b+8|0;u=iz(+(c[t>>2]|0)*e/A)|0;v=FO(16)|0;if(!v){Ue(0,3,41858,z);Ea(1)}c[v+4>>2]=y;c[v+8>>2]=u;f[v+12>>2]=e;g=FO(B(u,y)|0)|0;c[v>>2]=g;if(!g){Ue(0,3,41858,z+8|0);Ea(1)}h=0;while(1){if((h|0)>=(u|0))break;A=+f[x>>2];s=iz(A*+(h|0)/e)|0;h=h+1|0;r=iz(A*+(h|0)/e)|0;i=c[t>>2]|0;r=(r|0)>(i|0)?i:r;i=0;while(1){if((i|0)>=(y|0))break;A=+f[x>>2];q=iz(A*+(i|0)/e)|0;i=i+1|0;p=iz(A*+(i|0)/e)|0;o=c[w>>2]|0;p=(p|0)>(o|0)?o:p;j=0;k=0;l=s;while(1){if((l|0)>=(r|0))break;m=q;n=(c[b>>2]|0)+((B(l,o)|0)+q)|0;while(1){if((m|0)>=(p|0))break;C=j+(d[n>>0]|0)|0;m=m+1|0;n=n+1|0;j=C;k=k+1|0}l=l+1|0}a[g>>0]=(j|0)/(k|0)|0;g=g+1|0}}zb=z;return v|0}function cf(a){a=a|0;var b=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+96|0;m=q+72|0;l=q+64|0;k=q+56|0;j=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;e=q+16|0;b=q+8|0;n=q+80|0;d=FO((Qy(a)|0)+6|0)|0;if(!d){Ue(0,3,41858,q);Ea(1)}c[b>>2]=a;c[b+4>>2]=21589;Hx(d,21584,b)|0;p=rz(d,22236)|0;GO(d);a:do if(!p){c[e>>2]=a;c[e+4>>2]=21589;Ue(0,3,21595,e);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,g);Ea(1)}d=b+4|0;if((gA(d,4,1,p)|0)==1?(o=c[d>>2]|0,(o|0)>=1):0){c[i>>2]=o;Ue(0,1,21668,i);e=o<<2;g=FO(e)|0;c[b>>2]=g;if(!g){Ue(0,3,41858,j);Ea(1)}j=FO(16)|0;c[g>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}d=ff(p)|0;if(!d){c[l>>2]=a;c[l+4>>2]=21589;Ue(0,2,21698,l);GO(c[g>>2]|0);GO(g);GO(b);iA(p);b=df(p)|0;break}if((c[d+4>>2]|0)!=1){c[m>>2]=a;c[m+4>>2]=21589;Ue(0,2,21698,m);GO(c[g>>2]|0);GO(g);GO(b);GO(d);xz(p)|0;b=0;break}m=c[g>>2]|0;c[m+4>>2]=c[d+8>>2];c[m+8>>2]=c[d+12>>2];c[m+12>>2]=c[d+16>>2];c[m>>2]=c[d>>2];GO(d);Kz(p,4-e|0,2)|0;e=1;while(1){if((e|0)>=(o|0)){d=29;break}if((gA(n,4,1,p)|0)!=1){d=21;break}m=bf(c[g>>2]|0,+f[n>>2])|0;c[g+(e<<2)>>2]=m;if(!m){d=25;break}e=e+1|0}b:do if((d|0)==21){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==25){d=0;while(1){if((d|0)==(e|0))break b;o=g+(d<<2)|0;GO(c[c[o>>2]>>2]|0);GO(c[o>>2]|0);d=d+1|0}}else if((d|0)==29){xz(p)|0;break a}while(0);GO(g)}else Ue(0,3,21643,h);GO(b);xz(p)|0;b=0}while(0);zb=q;return b|0}function df(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+48|0;h=l+32|0;g=l+24|0;f=l+16|0;e=l+8|0;b=FO(8)|0;if(!b){Ue(0,3,41858,l);Ea(1)}d=b+4|0;a:do if((gA(d,4,1,a)|0)==1?(k=c[d>>2]|0,(k|0)>=1):0){j=FO(k<<2)|0;c[b>>2]=j;if(!j){Ue(0,3,41858,f);Ea(1)}d=0;while(1){if((d|0)>=(k|0))break;f=FO(16)|0;c[j+(d<<2)>>2]=f;if(!f){i=12;break}else d=d+1|0}if((i|0)==12){Ue(0,3,41858,g);Ea(1)}e=0;while(1){if((e|0)>=(k|0)){i=44;break}d=j+(e<<2)|0;if((gA((c[d>>2]|0)+4|0,4,1,a)|0)!=1){i=15;break}if((gA((c[d>>2]|0)+8|0,4,1,a)|0)!=1){i=22;break}if((gA((c[d>>2]|0)+12|0,4,1,a)|0)!=1){i=29;break}i=c[d>>2]|0;i=FO(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)|0;c[c[d>>2]>>2]=i;if(!i){i=36;break}g=c[d>>2]|0;g=gA(c[g>>2]|0,1,B(c[g+8>>2]|0,c[g+4>>2]|0)|0,a)|0;i=c[d>>2]|0;e=e+1|0;if((g|0)!=(B(c[i+8>>2]|0,c[i+4>>2]|0)|0)){i=38;break}}b:do if((i|0)==15){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==22){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==29){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==36){Ue(0,3,41858,h);Ea(1)}else if((i|0)==38){d=0;while(1){if((d|0)==(e|0))break;GO(c[c[j+(d<<2)>>2]>>2]|0);d=d+1|0}d=0;while(1){if((d|0)==(k|0))break b;GO(c[j+(d<<2)>>2]|0);d=d+1|0}}else if((i|0)==44){xz(a)|0;break a}while(0);GO(j);i=46}else i=5;while(0);if((i|0)==5){Ue(0,3,21643,e);i=46}if((i|0)==46){GO(b);xz(a)|0;b=0}zb=l;return b|0}function ef(a){a=a|0;var b=0,d=0,e=0;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[c[d+(e<<2)>>2]>>2]|0);GO(c[(c[c[a>>2]>>2]|0)+(e<<2)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}else b=-1;return b|0}function ff(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(20)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=gf(a,b+8|0,b+12|0,b+4|0,b+16|0)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function gf(d,e,g,h,k){d=d|0;e=e|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,N=0;N=zb;zb=zb+832|0;z=N+528|0;y=N+520|0;x=N+512|0;A=4;D=FO(40)|0;c[D>>2]=0;C=N+24|0;n=N+536|0;w=N;aP(C|0,0,488)|0;i=0;o=G(63,n|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)!=1){c[C>>2]=o;c[n>>2]=112;D=XO(n+132|0,1,D|0,A|0)|0;A=F()|0;i=0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1)m=l;else m=0}else m=l;a:while(1){if(m|0){i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;M(8,0,3,21756,x|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=7;break}}i=0;L(1,C|0,90,488);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;K(39,C|0,d|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;m=H(19,C|0,1)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){n=YO(c[l>>2]|0,D|0,A|0)|0;if(!n)Qa(l|0,j|0);E(j|0)}else n=-1;l=F()|0;if((n|0)==1){m=l;continue}if((m|0)!=1){i=0;M(8,0,3,21782,y|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=14;break}}i=0;G(64,C|0)|0;l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}t=C+36|0;u=C+28|0;s=B(c[u>>2]|0,c[t>>2]|0)|0;v=C+32|0;l=B(s,c[v>>2]|0)|0;i=0;l=G(65,l|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;if(!l){i=0;M(8,0,3,41858,z|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}i=0;J(113,C|0);l=i;i=0;if((l|0)!=0&(j|0)!=0){m=YO(c[l>>2]|0,D|0,A|0)|0;if(!m)Qa(l|0,j|0);E(j|0)}else m=-1;l=F()|0;if((m|0)==1){m=l;continue}else{m=20;break}}q=C+140|0;r=C+116|0;p=0;while(1){if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;m=0;while(1){if((m|0)==5)break;o=l+(B(m+p|0,s)|0)|0;c[w+(m<<2)>>2]=o;m=m+1|0}i=0;n=I(25,C|0,w|0,5)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){o=YO(c[m>>2]|0,D|0,A|0)|0;if(!o)Qa(m|0,j|0);E(j|0)}else o=-1;m=F()|0;if((o|0)==1)continue a;p=n+p|0}i=0;G(66,C|0)|0;m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)==1)continue;i=0;J(113,C|0);m=i;i=0;if((m|0)!=0&(j|0)!=0){n=YO(c[m>>2]|0,D|0,A|0)|0;if(!n)Qa(m|0,j|0);E(j|0)}else n=-1;m=F()|0;if((n|0)!=1){m=30;break}}b:do if((m|0)==7)l=0;else if((m|0)==14)l=0;else if((m|0)==20)l=0;else if((m|0)==30){if(e|0)c[e>>2]=c[u>>2];if(g|0)c[g>>2]=c[v>>2];if(h|0)c[h>>2]=c[t>>2];if(k){m=a[C+290>>0]|0;switch(m<<24>>24){case 1:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535);break b}break}case 2:{m=b[C+292>>1]|0;if(m<<16>>16==(b[C+294>>1]|0)){f[k>>2]=+(m&65535)*2.5399999618530273;break b}break}default:if(((m&255)>2?(b[C+292>>1]|0)==0:0)?(b[C+294>>1]|0)==0:0){f[k>>2]=+(m&255);break b}}f[k>>2]=0.0}}while(0);GO(D|0);zb=N;return l|0}function hf(a){a=a|0;Qa((c[a>>2]|0)+132|0,1)}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+1088|0;m=o+1072|0;l=o+1064|0;n=o+1056|0;g=o+1048|0;f=o+1040|0;e=o+1032|0;h=o+1024|0;i=o+768|0;j=o+512|0;k=o;c[h>>2]=a;c[h+4>>2]=b;Hx(k,22627,h)|0;k=rz(k,21853)|0;if(!k)a=0;else{a=FO(8)|0;if(!a){Ue(0,3,41858,e);Ea(1)}a:do if(kf(i,k)|0){h=a+4|0;c[f>>2]=h;if((Cz(i,21887,f)|0)!=1){GO(a);a=0;break}b=c[h>>2]|0;if((b|0)<1){GO(a);a=0;break}f=FO(b*56|0)|0;c[a>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}f=0;b:while(1){if((f|0)>=(b|0))break a;if(!(kf(i,k)|0)){b=15;break}c[n>>2]=j;if((Cz(i,21914,n)|0)!=1){b=17;break}g=sd(d,j)|0;e=c[a>>2]|0;c[e+(f*56|0)+4>>2]=g;if((g|0)<0){b=19;break}if(!(kf(i,k)|0)){b=21;break}c[l>>2]=(c[a>>2]|0)+(f*56|0);if((Cz(i,21815,l)|0)!=1){b=24;break}b=0;while(1){if(b>>>0>=3)break;if(!(kf(i,k)|0)){b=27;break b}g=c[a>>2]|0;c[m>>2]=g+(f*56|0)+8+(b<<4);c[m+4>>2]=g+(f*56|0)+8+(b<<4)+4;c[m+8>>2]=g+(f*56|0)+8+(b<<4)+8;c[m+12>>2]=g+(f*56|0)+8+(b<<4)+12;if((Cz(i,22080,m)|0)==4)b=b+1|0;else{b=29;break b}}f=f+1|0;b=c[h>>2]|0}if((b|0)==15){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==17){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==19){GO(e);GO(a);a=0;break}else if((b|0)==21){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==24){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==27){GO(c[a>>2]|0);GO(a);a=0;break}else if((b|0)==29){GO(c[a>>2]|0);GO(a);a=0;break}}else{GO(a);a=0}while(0);xz(k)|0}zb=o;return a|0}function kf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+640|0;s=v+624|0;r=v+616|0;q=v+608|0;p=v+600|0;o=v+592|0;n=v+584|0;m=v+576|0;l=v+568|0;k=v+560|0;j=v+552|0;g=v+544|0;f=v+536|0;e=v+528|0;d=v+520|0;i=v+512|0;t=v;c[i>>2]=a;c[i+4>>2]=b;Hx(t,22627,i)|0;t=rz(t,22236)|0;if(!t){c[d>>2]=a;Ue(0,3,21818,d);b=0}else{b=FO(8)|0;if(!b){Ue(0,3,41858,e);Ea(1)}a=b+4|0;a:do if((gA(a,4,1,t)|0)==1){h=c[a>>2]|0;i=FO(h*20|0)|0;c[b>>2]=i;if(!i){Ue(0,3,41858,g);Ea(1)}g=0;b:while(1){if((g|0)>=(h|0))break a;if((gA(i+(g*20|0)+8|0,4,1,t)|0)!=1){u=12;break}if((gA(i+(g*20|0)+12|0,4,1,t)|0)!=1){u=15;break}if((gA(i+(g*20|0)+16|0,4,1,t)|0)!=1){u=17;break}e=i+(g*20|0)+4|0;if((gA(e,4,1,t)|0)!=1){u=19;break}a=c[e>>2]|0;d=FO(a*20|0)|0;f=i+(g*20|0)|0;c[f>>2]=d;if(!d){u=22;break}d=0;while(1){if((d|0)>=(a|0))break;if((gA((c[f>>2]|0)+(d*20|0)|0,4,1,t)|0)!=1){u=25;break b}if((gA((c[f>>2]|0)+(d*20|0)+4|0,4,1,t)|0)!=1){u=27;break b}if((gA((c[f>>2]|0)+(d*20|0)+8|0,4,1,t)|0)!=1){u=29;break b}if((gA((c[f>>2]|0)+(d*20|0)+12|0,4,1,t)|0)!=1){u=31;break b}if((gA((c[f>>2]|0)+(d*20|0)+16|0,4,1,t)|0)!=1){u=34;break b}d=d+1|0;a=c[e>>2]|0}g=g+1|0}switch(u|0){case 12:{Ue(0,3,21839,j);break}case 15:{Ue(0,3,21839,k);break}case 17:{Ue(0,3,21839,l);break}case 19:{Ue(0,3,21839,m);break}case 22:{Ue(0,3,41858,n);Ea(1);break}case 25:{Ue(0,3,21839,o);break}case 27:{Ue(0,3,21839,p);break}case 29:{Ue(0,3,21839,q);break}case 31:{Ue(0,3,21839,r);break}case 34:{Ue(0,3,21839,s);break}}a=0;while(1){if((a|0)==(g|0))break;GO(c[i+(a*20|0)>>2]|0);a=a+1|0}GO(i);u=39}else{Ue(0,3,21839,f);u=39}while(0);if((u|0)==39){GO(b);b=0}xz(t)|0}zb=v;return b|0}function mf(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)b=-1;else{e=0;while(1){d=c[b>>2]|0;if((e|0)>=(c[b+4>>2]|0))break;GO(c[d+(e*20|0)>>2]|0);e=e+1|0;b=c[a>>2]|0}GO(d);GO(c[a>>2]|0);c[a>>2]=0;b=0}return b|0}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)of(0,b,c,d)|0;else of(a,b,c,d)|0;return 0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=zb;zb=zb+48|0;e=m;if(!a){t=+f[c>>2];w=+f[c+4>>2];s=+f[b>>2];o=t*s;v=+f[b+4>>2];n=w*v;p=+f[b+12>>2];i=+f[b+16>>2];q=t*i;g=+f[b+20>>2];k=w*g;r=+f[b+28>>2];z=+f[b+32>>2];x=t*z;h=+f[b+36>>2];j=w*h;y=+f[b+44>>2];l=y+(x+j);t=t+10.0;j=y+(t*z+j);w=w+10.0;h=y+(x+w*h);g=(r+(q+w*g))/h;h=(p+(o+w*v))/h;i=(r+(t*i+k))/j;j=(p+(t*s+n))/j;k=(r+(q+k))/l;l=(p+(o+n))/l}else{vd(a+8|0,b,e)|0;s=+f[c>>2];q=+f[c+4>>2];t=+f[e>>2];y=s*t;r=+f[e+4>>2];z=q*r;x=+f[e+12>>2];i=+f[e+16>>2];w=s*i;g=+f[e+20>>2];k=q*g;v=+f[e+28>>2];n=+f[e+32>>2];p=s*n;h=+f[e+36>>2];j=q*h;o=+f[e+44>>2];l=o+(p+j);s=s+10.0;j=o+(s*n+j);q=q+10.0;h=o+(p+q*h);g=(v+(w+q*g))/h;h=(x+(y+q*r))/h;i=(v+(s*i+k))/j;j=(x+(s*t+z))/j;k=(v+(w+k))/l;l=(x+(y+z))/l}x=j-l;y=i-k;y=x*x+y*y;x=h-l;z=g-k;z=x*x+z*z;e=y>2]=x;z=+u(+(e?y:z))*2.5399999618530273;f[d+4>>2]=z;zb=m;return 0}function pf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+32|0;l=G+20|0;j=G+16|0;i=G+12|0;k=G+8|0;C=G+4|0;D=G;a:do if((d|0)<0)d=-1;else switch(d|0){case 0:{q=+((g|0)/8|0|0);r=+((g*7|0)/8|0|0);s=+((h|0)/8|0|0);t=+((h*7|0)/8|0|0);p=+((g|0)/2|0|0);o=+((h|0)/2|0|0);m=0.0;i=0;d=-1;b:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break b;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(nr)?(u=+f[a+(i*24|0)+20>>2],!(ut)):0)?(B=n-p,v=u-o,v=B*B+v*v,v>m):0){m=v;d=i}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 1:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+4|0;d=-1;i=0;m=0.0;c:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break c;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(s=+f[a+(i*24|0)+20>>2],!(so)):0)?(B=n-+f[e>>2],t=s-+f[g>>2],t=B*B+t*t,t>m):0){d=i;m=t}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 2:{r=+((g|0)/8|0|0);p=+((g*7|0)/8|0|0);q=+((h|0)/8|0|0);o=+((h*7|0)/8|0|0);g=e+12|0;j=e+4|0;k=e+8|0;d=-1;i=0;m=0.0;d:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break d;case 0:{n=+f[a+(i*24|0)+16>>2];if((!(np)?(x=+f[a+(i*24|0)+20>>2],!(xo)):0)?(w=+f[e>>2],B=+f[j>>2],w=(n-w)*(+f[g>>2]-B)-(x-B)*(+f[k>>2]-w),w=w*w,w>m):0){d=i;m=w}break}default:{}}i=i+1|0}if((d|0)==-1){d=-1;break a}c[a+(d*24|0)+12>>2]=1;break a}case 3:{qf(e,e+8|0,l,j);qf(e,e+16|0,i,k);B=+((g|0)/8|0|0);w=+((g*7|0)/8|0|0);x=+((h|0)/8|0|0);v=+((h*7|0)/8|0|0);z=e+24|0;A=e+28|0;u=+f[i>>2];t=+f[j>>2];m=u*t;s=+f[k>>2];r=+f[l>>2];q=s*r;h=!(m-q>=0.0);y=!(q-m>=0.0);l=h?2:1;b=h?1:2;d=-1;k=0;m=0.0;e:while(1){f:do switch(c[a+(k*24|0)+12>>2]|0){case -1:break e;case 0:{n=+f[a+(k*24|0)+16>>2];if(!(nw)?(E=a+(k*24|0)+20|0,q=+f[E>>2],!(qv)):0){f[z>>2]=n;c[A>>2]=c[E>>2];qf(e,z,C,D);q=+f[C>>2];if(!h){n=+f[D>>2];if(!(t*q-r*n>=0.0))F=39;else{g=!(s*q-u*n>=0.0);i=g?2:3;g=g?3:2;j=1}}else{n=+f[D>>2];F=39}do if((F|0)==39){F=0;o=s*q;p=u*n;if(y|!(o-p>=0.0))if(p-o>=0.0?!(r*n-t*q>=0.0):1)break f;else{i=b;g=l;j=3;break}else{g=!(t*q-r*n>=0.0);i=g?1:3;g=g?3:1;j=2;break}}while(0);n=+rf(e,j,g,i);if(n>m){d=k;m=n}}break}default:{}}while(0);k=k+1|0}if((d|0)!=-1)c[a+(d*24|0)+12>>2]=1;break a}default:{l=0;g:while(1){d=b+(l*24|0)+12|0;h:do switch(c[d>>2]|0){case -1:break g;case 0:{c[d>>2]=1;i=b+(l*24|0)|0;g=b+(l*24|0)+4|0;j=b+(l*24|0)+8|0;d=0;while(1){k=a+(d*24|0)+12|0;switch(c[k>>2]|0){case -1:break h;case 0:{if(((c[i>>2]|0)==(c[a+(d*24|0)>>2]|0)?(c[g>>2]|0)==(c[a+(d*24|0)+4>>2]|0):0)?(c[j>>2]|0)==(c[a+(d*24|0)+8>>2]|0):0){F=55;break g}break}default:{}}d=d+1|0}}default:{}}while(0);l=l+1|0}if((F|0)==55){c[k>>2]=1;break a}c[b+12>>2]=-1;d=c[13865]|0;if(!d){_z(Ta(0)|0);d=c[13865]|0}d=d+1|0;c[13865]=(d|0)==128?0:d;d=0;i=0;i:while(1){switch(c[a+(i*24|0)+12>>2]|0){case -1:break i;case 0:{d=d+1|0;break}default:{}}i=i+1|0}if(!d){d=-1;break a}k=~~(+(d|0)*+($z()|0)*4.656612873077393e-10);d=0;i=0;j:while(1){g=a+(d*24|0)+12|0;j=c[g>>2]|0;switch(j|0){case -1:{d=j;break a}case 0:{if((i|0)==(k|0))break j;i=i+1|0;break}default:{}}d=d+1|0}c[g>>2]=1;break a}}while(0);zb=G;return d|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0;g=+f[b>>2]-+f[a>>2];e=+f[b+4>>2]-+f[a+4>>2];g=+u(+(g*g+e*e));if(!(g==0.0)){f[c>>2]=e/g;f[d>>2]=(+f[b>>2]-+f[a>>2])/g}return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0;c=a+(c<<3)|0;e=+sf(a,a+(b<<3)|0,c);return +(e+ +sf(a,c,a+(d<<3)|0))}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];d=((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))*.5;return +(d<0.0?-d:d)}function tf(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=zb;zb=zb+1248|0;L=M+1232|0;K=M+1224|0;J=M+1208|0;I=M+1200|0;H=M+1184|0;G=M+1176|0;F=M+1160|0;E=M+1152|0;D=M+1144|0;C=M+1136|0;B=M+1128|0;A=M+1120|0;z=M+1112|0;y=M+1104|0;x=M+1096|0;w=M+1088|0;v=M+1080|0;u=M+1072|0;p=M+1064|0;l=M+1056|0;k=M+1048|0;j=M+1040|0;i=M+1032|0;h=M+1024|0;r=M+768|0;s=M+512|0;t=M+1236|0;g=M;do if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(Fx(d,41063)|0)!=0:0){c[h>>2]=b;c[h+4>>2]=d;Hx(g,22627,h)|0;d=rz(g,21853)|0;if(!d){c[i>>2]=b;Ue(0,3,21855,i);q=ox()|0;q=By(c[q>>2]|0)|0;c[j>>2]=57671;c[j+4>>2]=q;Ue(0,3,21881,j);q=0;break}else{n=d;d=1;m=8;break}}else m=4;while(0);if((m|0)==4){Wz(s,b,255)|0;a[s+255>>0]=0;n=0;d=0;m=8}do if((m|0)==8){o=FO(1140)|0;if(!o){Ue(0,3,41858,k);Ea(1)}k=(d|0)!=0;if(k){if(!(uf(r,n)|0)){xz(n)|0;GO(o);q=0;break}c[l>>2]=t;if((Cz(r,21887,l)|0)!=1){xz(n)|0;GO(o);q=0;break}d=c[t>>2]|0;if((d|0)<1){xz(n)|0;GO(o);q=0;break}}else d=1;c[o+4>>2]=d;c[o+152>>2]=0;j=FO(d*112|0)|0;c[o>>2]=j;if(!j){Ue(0,3,41858,p);Ea(1)}i=(e|0)==0;g=0;a:while(1){c[t>>2]=g;if((g|0)>=(d|0)){m=57;break}c[u>>2]=g+1;Ue(0,1,21890,u);if(k){if(!(uf(r,n)|0)){m=57;break}c[v>>2]=s;if((Cz(r,21914,v)|0)!=1){m=57;break}If(s)|0}Ue(0,1,21917,w);p=cf(s)|0;c[j+((c[t>>2]|0)*112|0)>>2]=p;if(!p){m=26;break}Ue(0,1,21966,y);Ue(0,1,21976,z);p=lf(s,41063)|0;c[j+((c[t>>2]|0)*112|0)+4>>2]=p;if(!p){m=29;break}Ue(0,1,21966,B);if(i)c[j+((c[t>>2]|0)*112|0)+8>>2]=0;else{Ue(0,1,22027,C);If(s)|0;p=jf(s,22046,e)|0;c[j+((c[t>>2]|0)*112|0)+8>>2]=p;if(!p){m=33;break}Ue(0,1,21966,E)}b:do if(k){if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[F>>2]=j+(p*112|0)+12;c[F+4>>2]=j+(p*112|0)+16;c[F+8>>2]=j+(p*112|0)+20;c[F+12>>2]=j+(p*112|0)+24;if((Cz(r,22080,F)|0)!=4){m=40;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[H>>2]=j+(p*112|0)+28;c[H+4>>2]=j+(p*112|0)+32;c[H+8>>2]=j+(p*112|0)+36;c[H+12>>2]=j+(p*112|0)+40;if((Cz(r,22080,H)|0)!=4){m=43;break a}if(!(uf(r,n)|0)){m=57;break a}p=c[t>>2]|0;c[J>>2]=j+(p*112|0)+44;c[J+4>>2]=j+(p*112|0)+48;c[J+8>>2]=j+(p*112|0)+52;c[J+12>>2]=j+(p*112|0)+56;if((Cz(r,22080,J)|0)!=4){m=47;break a}g=c[t>>2]|0}else{g=c[t>>2]|0;b=0;while(1){if((b|0)==3)break b;h=0;while(1){if((h|0)==4)break;f[j+(g*112|0)+12+(b<<4)+(h<<2)>>2]=(b|0)==(h|0)?1.0:0.0;h=h+1|0}b=b+1|0}}while(0);yd(j+(g*112|0)+12|0,j+(g*112|0)+60|0)|0;Hf(s,256,22128)|0;g=FO(256)|0;c[j+((c[t>>2]|0)*112|0)+108>>2]=g;if(!g){m=55;break}Wz(g,s,256)|0;g=(c[t>>2]|0)+1|0}if((m|0)==26){c[x>>2]=s;Ue(0,3,21935,x);GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==29){c[A>>2]=s;Ue(0,3,21996,A);ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==33){c[D>>2]=s;Ue(0,3,22050,D);mf(j+((c[t>>2]|0)*112|0)+4|0)|0;ef(j+((c[t>>2]|0)*112|0)|0)|0;GO(j);GO(o);if(!n){q=0;break}xz(n)|0;q=0;break}else if((m|0)==40){Ue(0,3,22092,G);xz(n)|0;Ea(0)}else if((m|0)==43){Ue(0,3,22092,I);xz(n)|0;Ea(0)}else if((m|0)==47){Ue(0,3,22092,K);xz(n)|0;Ea(0)}else if((m|0)==55){Ue(0,3,41858,L);Ea(1)}else if((m|0)==57){if(n|0)xz(n)|0;if((c[t>>2]|0)>=(d|0)){q=o;break}Ea(0)}}while(0);zb=M;return q|0}function uf(b,c){b=b|0;c=c|0;var d=0;a:while(1){d=Az(b,256,c)|0;if(!d){d=0;break}switch(a[b>>0]|0){case 35:case 10:break;default:break a}}return d|0}function vf(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)d=-1;else{c[a+152>>2]=1;d=0;while(1){if((d|0)==3)break;e=0;while(1){if((e|0)==4)break;c[a+8+(d<<4)+(e<<2)>>2]=c[b+(d<<4)+(e<<2)>>2];e=e+1|0}d=d+1|0}c[a+168>>2]=-1;d=0}return d|0}function wf(b,e,g,h,i,j,k,l,m,n,o,p){b=b|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=zb;zb=zb+80|0;F=X+8|0;E=X;M=X+72|0;P=X+60|0;R=X+48|0;D=X+36|0;S=X+32|0;T=X+24|0;U=X+16|0;V=j+16|0;A=c[V>>2]|0;W=j+20|0;x=c[W>>2]|0;y=g+-1|0;z=h+-1|0;w=0;while(1){if(w>>>0>=3)break;q=c[m+(w<<3)>>2]|0;if((q|0)<0)break;u=q&-4|2;q=((c[m+(w<<3)+4>>2]|0)/4|0)<<2|2;v=u-k|0;v=(v|0)>0?v:0;u=u+k|0;u=(u|0)<(g|0)?u:y;t=q-l|0;q=q+l|0;q=(q|0)<(h|0)?q:z;t=(t|0)>0?t:0;while(1){if((t|0)>(q|0))break;r=v;s=e+((B(t,g)|0)+v)|0;while(1){if((r|0)>(u|0))break;a[s>>0]=0;r=r+1|0;s=s+1|0}t=t+1|0}w=w+1|0}c[M>>2]=0;C=x<<1;z=A<<1;K=j+12|0;L=j+8|0;r=1;y=0;while(1){if(y>>>0>=3){J=28;break}q=c[m+(y<<3)>>2]|0;if((q|0)<0){J=14;break}x=q&-4|2;u=((c[m+(y<<3)+4>>2]|0)/4|0)<<2|2;v=u+l|0;w=x-k|0;x=x+k|0;q=r;u=u-l|0;a:while(1){if((u|0)>(v|0))break;b:do if((u|0)>=(z|0)){if((u+C|0)>=(h|0))break a;t=B(u,g)|0;s=w;while(1){if((s|0)>(x|0))break b;if((s|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+s|0)>=(g|0))break b;r=e+(s+t)|0;if(!(a[r>>0]|0)){a[r>>0]=1;xf(b,g,i,j,s,u,S);yf(s,u,c[S>>2]|0,M,P,R,D);q=0}}s=s+4|0}}while(0);u=u+4|0}r=q;y=y+1|0}if((J|0)==14)if(!r)J=28;else q=-1;if((J|0)==28){I=j+4|0;q=B((c[j>>2]<<3)+32|0,(c[I>>2]<<1)+8|0)|0;H=FO(q)|0;if(!H){Ue(0,3,41858,E);Ea(1)}G=FO(q)|0;if(!G){Ue(0,3,41858,F);Ea(1)}F=j+36|0;r=0;E=0;q=-1;while(1){if((E|0)>=(c[M>>2]|0))break;u=c[j>>2]|0;s=c[I>>2]|0;c:do if((c[F>>2]|0)==(B(s,u)|0)){switch(i|0){case 5:case 12:case 13:case 14:break;default:{J=40;break c}}l=R+(E<<2)|0;k=c[l>>2]|0;m=k+-3-(c[V>>2]<<1)|0;if((((m|0)>=0?(k+3+(c[W>>2]<<1)|0)<(h|0):0)?(N=P+(E<<2)|0,O=c[N>>2]|0,Q=O+-3-(c[L>>2]<<1)|0,(Q|0)>=0):0)?(O+3+(c[K>>2]<<1)|0)<(g|0):0){k=(s<<1)+6|0;t=(u<<2)+16|0;v=G;w=H;s=0;while(1){if((s|0)>=(t|0))break;c[w>>2]=0;c[v>>2]=0;v=v+4|0;w=w+4|0;s=s+1|0}D=(u<<1)+6|0;e=b+(Q+(B(m,g)|0))|0;z=G;A=H;s=w;C=0;while(1){if((C|0)>=(k|0))break;y=s+8|0;u=v;t=0;while(1){if((t|0)==2)break;c[s>>2]=0;c[u>>2]=0;c[T+(t<<2)>>2]=0;c[U+(t<<2)>>2]=0;u=u+4|0;s=s+4|0;t=t+1|0}x=e;u=z+8|0;w=A+8|0;v=v+8|0;s=y;t=0;while(1){if((t|0)>=(D|0))break;y=t&1;A=T+(y<<2)|0;z=(c[A>>2]|0)+(d[x>>0]|0)|0;c[A>>2]=z;A=d[x>>0]|0;A=B(A,A)|0;y=U+(y<<2)|0;A=A+(c[y>>2]|0)|0;c[y>>2]=A;c[s>>2]=(c[w>>2]|0)+z;c[v>>2]=(c[u>>2]|0)+A;x=x+1|0;u=u+4|0;w=w+4|0;v=v+4|0;s=s+4|0;t=t+1|0}e=e+g|0;z=u;A=w;C=C+1|0}u=0;while(1){if((u|0)==7)break c;v=u+m|0;w=u+2|0;x=u+-3|0;t=0;while(1){if((t|0)==7)break;zf(b,g,t+Q|0,v,j,H,G,t+2|0,w,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t+-3+(c[N>>2]|0);c[o>>2]=x+(c[l>>2]|0);f[p>>2]=+(s|0)/1.0e4;q=0;r=s}t=t+1|0}u=u+1|0}}else J=40}else J=40;while(0);d:do if((J|0)==40){J=0;v=c[R+(E<<2)>>2]|0;w=v+3|0;x=P+(E<<2)|0;v=v+-3|0;while(1){if((v|0)>(w|0))break d;e:do if((v|0)>=(c[V>>2]<<1|0)){if(((c[W>>2]<<1)+v|0)>=(h|0))break d;t=c[x>>2]|0;u=t+3|0;t=t+-3|0;while(1){if((t|0)>(u|0))break e;if((t|0)>=(c[L>>2]<<1|0)){if(((c[K>>2]<<1)+t|0)>=(g|0))break e;xf(b,g,i,j,t,v,S);s=c[S>>2]|0;if((s|0)>(r|0)){c[n>>2]=t;c[o>>2]=v;f[p>>2]=+(s|0)/1.0e4;r=s;q=0}}t=t+1|0}}while(0);v=v+1|0}}while(0);E=E+1|0}GO(H);GO(G)}zb=X;return q|0}function xf(a,e,f,g,h,i,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;l=c[g+24>>2]|0;a:do switch(f|0){case 5:case 12:case 13:case 14:{s=0-(c[g+8>>2]|0)|0;t=c[g+12>>2]|0;q=0-(c[g+16>>2]|0)|0;v=c[g+20>>2]|0;w=e<<1;m=l;p=a+((s<<1)+h+(B((q<<1)+i|0,e)|0))|0;l=0;f=0;k=0;while(1){if((q|0)>(v|0)){m=l;break a}r=s;n=m;o=p;while(1){if((r|0)>(t|0))break;m=b[n>>1]|0;if(m<<16>>16!=4096){i=d[o>>0]|0;l=l+i|0;f=(B(i,i)|0)+f|0;k=(B(i,m&65535)|0)+k|0}r=r+1|0;n=n+2|0;o=o+2|0}m=n;p=p+w|0;q=q+1|0}}default:{if(f>>>0<2){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+((w-(p<<1)|0)*3|0)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+6|0;l=l+2|0}r=r+1|0}}if((f|1|0)==3){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=0;f=0;k=0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=(((d[p+1>>0]|0)+(d[p>>0]|0)+(d[p+2>>0]|0)|0)>>>0)/3|0;m=w+m|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;l=l+2|0}r=r+1|0}}if((f|2|0)==6){s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;r=0-(c[g+16>>2]|0)|0;m=l;l=0;f=0;k=0;while(1){if((r|0)>(s|0)){m=l;break a}w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<2)|0;while(1){if((o|0)>(q|0))break;n=b[m>>1]|0;if(n<<16>>16!=4096){w=(((d[p+2>>0]|0)+(d[p+1>>0]|0)+(d[p+3>>0]|0)|0)>>>0)/3|0;l=w+l|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+8|0;m=m+2|0}r=r+1|0}}switch(f|0){case 7:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;r=0-(c[g+16>>2]|0)|0;while(1){if((r|0)>(s|0))break a;w=(B((r<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;q=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(q|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p+1>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}o=o+1|0;p=p+4|0;l=l+2|0}r=r+1|0}}case 8:{s=c[g+20>>2]|0;t=g+8|0;v=g+12|0;m=0;f=0;k=0;q=0-(c[g+16>>2]|0)|0;while(1){if((q|0)>(s|0))break a;w=(B((q<<1)+i|0,e)|0)+h|0;p=c[t>>2]|0;r=c[v>>2]|0;o=0-p|0;p=a+(w-(p<<1)<<1)|0;while(1){if((o|0)>(r|0))break;n=b[l>>1]|0;if(n<<16>>16!=4096){w=d[p>>0]|0;m=m+w|0;f=(B(w,w)|0)+f|0;k=(B(w,n&65535)|0)+k|0}l=l+2|0;o=o+1|0;p=p+4|0}q=q+1|0}}default:{m=0;f=0;k=0;break a}}}}while(0);l=c[g+36>>2]|0;f=f-((B(m,m)|0)/(l|0)|0)|0;if(!f)f=0;else{i=(k-((B(c[g+32>>2]|0,m)|0)/(l|0)|0)|0)*100|0;f=(((i|0)/(c[g+28>>2]|0)|0)*100|0)/(~~+u(+(+(f|0)))|0)|0}c[j>>2]=f;return}function yf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[e>>2]|0;do if(!i){c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[e>>2]=1}else{j=0;while(1){if((j|0)>=(i|0))break;if((c[h+(j<<2)>>2]|0)<(d|0))break;j=j+1|0}if((j|0)==(i|0)){if(i>>>0>=3)break;c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;break}if((i|0)==3)i=2;else c[e>>2]=i+1;while(1){if((i|0)<=(j|0))break;e=i+-1|0;c[f+(i<<2)>>2]=c[f+(e<<2)>>2];c[g+(i<<2)>>2]=c[g+(e<<2)>>2];c[h+(i<<2)>>2]=c[h+(e<<2)>>2];i=e}c[f+(i<<2)>>2]=a;c[g+(i<<2)>>2]=b;c[h+(i<<2)>>2]=d}while(0);return}function zf(a,b,f,g,h,i,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;o=a+((B(g,b)|0)+f)|0;r=c[h+4>>2]|0;p=b<<1;q=c[h>>2]|0;b=0;a=c[h+24>>2]|0;s=0;while(1){if((b|0)>=(r|0))break;n=0;f=o;g=s;while(1){if((n|0)>=(q|0))break;s=(B(e[a>>1]|0,d[f>>0]|0)|0)+g|0;n=n+1|0;a=a+2|0;f=f+2|0;g=s}b=b+1|0;o=o+p|0;s=g}a=q<<1;q=a+8|0;g=k+-2|0;a=g+a|0;f=l+-2|0;l=B(q,f+(r<<1)|0)|0;f=B(q,f)|0;k=l+a|0;r=f+g|0;l=l+g|0;a=f+a|0;f=(c[i+(r<<2)>>2]|0)+(c[i+(k<<2)>>2]|0)-(c[i+(l<<2)>>2]|0)-(c[i+(a<<2)>>2]|0)|0;g=c[h+36>>2]|0;a=(c[j+(r<<2)>>2]|0)+(c[j+(k<<2)>>2]|0)-(c[j+(l<<2)>>2]|0)-(c[j+(a<<2)>>2]|0)-((B(f,f)|0)/(g|0)|0)|0;if(!a)a=0;else{j=(s-((B(c[h+32>>2]|0,f)|0)/(g|0)|0)|0)*100|0;a=(((j|0)/(c[h+28>>2]|0)|0)*100|0)/(~~+u(+(+(a|0)))|0)|0}c[m>>2]=a;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=FO(40)|0;if(!d){Ue(0,3,41858,e);Ea(1)}c[d+16>>2]=a;c[d+8>>2]=a;c[d+20>>2]=b;c[d+12>>2]=b;b=a+1+b|0;c[d>>2]=b;c[d+4>>2]=b;b=FO(B(b<<1,b)|0)|0;c[d+24>>2]=b;if(!b){Ue(0,3,41858,e+8|0);Ea(1)}else{zb=e;return d|0}return 0}function Bf(d,e,g,i,j,k){d=d|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;D=zb;zb=zb+80|0;l=D+60|0;m=D+56|0;z=D+52|0;A=D+48|0;x=D;C=D+64|0;a:do if(!d){x=c[i>>2]|0;y=c[x+(j*20|0)+8>>2]|0;c[l>>2]=y;p=+f[x+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,e,(c[h>>2]=y,+f[h>>2]),p,z,A)|0)<0)d=-1;else{s=~~(+f[z>>2]+.5);l=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;q=0-l|0;i=~~(+f[A>>2]+.5)-(l<<1)|0;l=0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((q|0)>(c[t>>2]|0)){n=25;break a}o=c[v>>2]|0;p=+(i|0);n=0-o|0;o=s-(o<<1)|0;while(1){if((n|0)>(c[w>>2]|0))break;if((Gf(0,e,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+(o|0),p,C)|0)<0)b[m>>1]=4096;else{A=a[C>>0]|0;b[m>>1]=A&255;A=A&255;l=l+1|0;j=(B(A,A)|0)+j|0;d=d+A|0}n=n+1|0;o=o+2|0;m=m+2|0}q=q+1|0;i=i+2|0}}}else{vd(d+8|0,e,x)|0;w=c[i>>2]|0;e=c[w+(j*20|0)+8>>2]|0;c[l>>2]=e;p=+f[w+(j*20|0)+12>>2];f[m>>2]=p;if((Ef(0,x,(c[h>>2]=e,+f[h>>2]),p,l,m)|0)>=0?(y=d+184|0,(oe(y,+f[l>>2],+f[m>>2],z,A)|0)>=0):0){s=~~(+f[z>>2]+.5);o=c[k+16>>2]|0;t=k+20|0;v=k+8|0;w=k+12|0;r=i+8|0;l=0;n=0-o|0;o=~~(+f[A>>2]+.5)-(o<<1)|0;j=0;d=0;m=c[k+24>>2]|0;while(1){if((n|0)>(c[t>>2]|0)){n=25;break a}q=c[v>>2]|0;p=+(o|0);i=0-q|0;q=s-(q<<1)|0;while(1){if((i|0)>(c[w>>2]|0))break;do if((pe(y,+(q|0),p,z,A)|0)>=0)if((Gf(0,x,c[(c[g>>2]|0)+(c[r>>2]<<2)>>2]|0,+f[z>>2],+f[A>>2],C)|0)<0){b[m>>1]=4096;break}else{e=a[C>>0]|0;b[m>>1]=e&255;e=e&255;l=l+1|0;j=(B(e,e)|0)+j|0;d=d+e|0;break}else b[m>>1]=4096;while(0);i=i+1|0;q=q+2|0;m=m+2|0}n=n+1|0;o=o+2|0}}else d=-1}while(0);if((n|0)==25)if(!l)d=-1;else{g=~~+u(+(+(j-((B(d,d)|0)/(l|0)|0)|0)));c[k+28>>2]=g;c[k+32>>2]=d;c[k+36>>2]=l;d=0}zb=D;return d|0}function Cf(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+32|0;m=r+20|0;n=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;k=r;l=+f[g+8>>2];i=+f[g+12>>2];if((b|0)!=0?(Ef(a,b,l,i,m,p)|0)>=0:0){c[h>>2]=~~+f[m>>2];c[h+4>>2]=~~+f[p>>2];if((d|0)!=0?(Ef(a,d,l,i,n,j)|0)>=0:0){c[h+8>>2]=~~(+f[m>>2]*2.0-+f[n>>2]);c[h+12>>2]=~~(+f[p>>2]*2.0-+f[j>>2]);if((e|0)!=0?(Ef(a,e,l,i,o,k)|0)>=0:0){c[h+16>>2]=~~(+f[o>>2]+(+f[m>>2]*3.0-+f[n>>2]*3.0));g=~~(+f[k>>2]+(+f[p>>2]*3.0-+f[j>>2]*3.0))}else q=10}else q=9}else{c[h>>2]=-1;c[h+4>>2]=-1;q=9}if((q|0)==9){c[h+8>>2]=-1;c[h+12>>2]=-1;q=10}if((q|0)==10){c[h+16>>2]=-1;g=-1}c[h+20>>2]=g;zb=r;return}function Df(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0;l=zb;zb=zb+64|0;h=l;j=l+52|0;k=l+48|0;if(a){vd(a+8|0,b,h)|0;m=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);i=(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/m;c=(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/m;b=a+184|0;if((oe(b,i,c,e,g)|0)>=0?(pe(b,+f[e>>2],+f[g>>2],j,k)|0)>=0:0){i=i-+f[j>>2];m=c-+f[k>>2];b=(i*i+m*m>1.0)<<31>>31}else b=-1}else{i=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);m=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/m;f[g>>2]=i/m;b=0}zb=l;return b|0}function Ef(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0.0;i=zb;zb=zb+48|0;h=i;if(!a){k=+f[b+28>>2]+(+f[b+16>>2]*c+ +f[b+20>>2]*d);j=+f[b+44>>2]+(+f[b+32>>2]*c+ +f[b+36>>2]*d);f[e>>2]=(+f[b+12>>2]+(+f[b>>2]*c+ +f[b+4>>2]*d))/j;f[g>>2]=k/j;a=0}else{vd(a+8|0,b,h)|0;k=+f[h+44>>2]+(+f[h+32>>2]*c+ +f[h+36>>2]*d);a=(oe(a+184|0,(+f[h+12>>2]+(+f[h>>2]*c+ +f[h+4>>2]*d))/k,(+f[h+28>>2]+(+f[h+16>>2]*c+ +f[h+20>>2]*d))/k,e,g)|0)>>31}zb=i;return a|0}function Ff(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0;r=zb;zb=zb+64|0;i=r+52|0;j=r+48|0;l=r;if(a)if((pe(a+184|0,c,d,i,j)|0)<0)a=-1;else{vd(a+8|0,b,l)|0;h=+f[l+32>>2];k=+f[i>>2];p=+f[l+36>>2];d=+f[j>>2];c=+f[l+44>>2];m=+f[l+12>>2]-k*c;n=p*d-+f[l+20>>2];o=h*d-+f[l+16>>2];p=k*p-+f[l+4>>2];k=h*k-+f[l>>2];h=+f[l+28>>2];c=d*c;q=5}else{k=+f[b+32>>2];p=+f[b+36>>2];s=+f[b+44>>2];m=+f[b+12>>2]-s*c;n=p*d-+f[b+20>>2];o=k*d-+f[b+16>>2];p=p*c-+f[b+4>>2];k=k*c-+f[b>>2];h=+f[b+28>>2];c=s*d;q=5}if((q|0)==5){c=h-c;h=k*n-p*o;if(h==0.0)a=-1;else{f[e>>2]=(n*m-p*c)/h;f[g>>2]=(k*c-o*m)/h;a=0}}zb=r;return a|0}function Gf(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=+g;h=+h;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+4|0;o=p;if((((Ff(b,d,g,h,n,o)|0)>=0?(j=+f[e+12>>2],k=~~(+f[n>>2]*j/25.399999618530273+.5),(k|0)>=0):0)?(l=c[e+4>>2]|0,(l|0)>(k|0)):0)?(n=c[e+8>>2]|0,m=~~(+(n|0)-j*+f[o>>2]/25.399999618530273+.5),(m|0)>-1&(n|0)>(m|0)):0){b=(B(l,m)|0)+k|0;a[i>>0]=a[(c[e>>2]|0)+b>>0]|0;b=0}else b=-1;zb=p;return b|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return Bd(a,b,c)|0}function If(a){a=a|0;return Cd(a)|0}function Jf(a){a=a|0;return Kf(a,c[a>>2]|0,c[a+4>>2]|0,1)|0}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=zb;zb=zb+16|0;f=HO(1,4156)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{h=tB(4)|0;Ij(h);c[f>>2]=h;c[f+4>>2]=a;c[f+8>>2]=e;c[f+12>>2]=b;c[f+16>>2]=d;c[f+20>>2]=1;c[f+24>>2]=-1;e=f+28|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;zb=g;return f|0}return 0}function Lf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)b=-1;else{d=c[b>>2]|0;if(d){nk(d);SA(d);b=c[a>>2]|0}d=c[b+28>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+36>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+52>>2]|0;if(d){GO(d);b=c[a>>2]|0}d=c[b+44>>2]|0;if(d){GO(d);b=c[a>>2]|0}GO(b);c[a>>2]=0;b=0}return b|0}function Mf(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;Rf(a);return}function Qf(a){a=a|0;P(a|0)|0;UA()}function Rf(a){a=a|0;SA(a);return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+48|0;r=s+40|0;p=s+32|0;m=s+24|0;k=s+16|0;f=s+8|0;e=s;if((a|0)!=0&(b|0)!=0){e=c[a>>2]|0;do if(!e){e=FO(16)|0;c[a>>2]=e;if(!e){Ue(0,3,41858,f);Ea(1)}else{c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=0;c[e+8>>2]=0;l=e;d=e;break}}else{l=e;d=e}while(0);f=c[b>>2]|0;if(!f)d=0;else{g=c[l+4>>2]|0;h=c[f+4>>2]|0;i=h+g|0;j=FO(i*132|0)|0;if(!j){Ue(0,3,41858,k);Ea(1)}e=0;while(1){if((e|0)>=(g|0))break;_O(j+(e*132|0)|0,(c[l>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=0;while(1){if((e|0)>=(h|0))break;_O(j+((e+g|0)*132|0)|0,(c[f>>2]|0)+(e*132|0)|0,132)|0;e=e+1|0}e=c[l>>2]|0;if(e){GO(e);d=c[a>>2]|0}c[d>>2]=j;h=c[a>>2]|0;c[h+4>>2]=i;k=c[h+12>>2]|0;g=c[b>>2]|0;l=c[g+12>>2]|0;g=g+8|0;h=h+8|0;d=0;f=0;while(1){if((f|0)>=(l|0))break;e=0;while(1){if((e|0)>=(k|0))break;if((c[(c[g>>2]|0)+(f*12|0)+8>>2]|0)==(c[(c[h>>2]|0)+(e*12|0)+8>>2]|0)){q=23;break}else e=e+1|0}if((q|0)==23){q=0;d=d+1|0}f=f+1|0}n=l+k-d|0;o=FO(n*12|0)|0;if(!o){Ue(0,3,41858,m);Ea(1)}j=0;while(1){if((j|0)>=(k|0))break;h=(c[a>>2]|0)+8|0;d=c[h>>2]|0;g=d+(j*12|0)+8|0;c[o+(j*12|0)+8>>2]=c[g>>2];d=c[d+(j*12|0)+4>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(f*12|0)+8>>2]|0)==(c[g>>2]|0))d=(c[e+(f*12|0)+4>>2]|0)+d|0;f=f+1|0}i=o+(j*12|0)|0;m=FO(d*12|0)|0;c[i>>2]=m;if(!m){q=36;break}h=c[(c[h>>2]|0)+(j*12|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;g=(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;m=(c[i>>2]|0)+(e*12|0)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];e=e+1|0}g=0;while(1){if((g|0)>=(l|0))break;e=c[(c[b>>2]|0)+8>>2]|0;if((c[e+(g*12|0)+8>>2]|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(j*12|0)+8>>2]|0)){q=43;break}g=g+1|0}a:do if((q|0)==43){q=0;f=0;while(1){if((f|0)>=(c[e+(g*12|0)+4>>2]|0))break a;t=(c[e+(g*12|0)>>2]|0)+(f*12|0)|0;m=(c[i>>2]|0)+((f+h|0)*12|0)|0;c[m>>2]=c[t>>2];c[m+4>>2]=c[t+4>>2];c[m+8>>2]=c[t+8>>2];f=f+1|0;e=c[(c[b>>2]|0)+8>>2]|0}}while(0);c[o+(j*12|0)+4>>2]=d;j=j+1|0}if((q|0)==36){Ue(0,3,41858,p);Ea(1)}d=0;j=0;while(1){if((j|0)>=(l|0))break;f=c[(c[b>>2]|0)+8>>2]|0;g=c[f+(j*12|0)+8>>2]|0;e=0;while(1){if((e|0)>=(k|0)){q=53;break}if((g|0)==(c[(c[(c[a>>2]|0)+8>>2]|0)+(e*12|0)+8>>2]|0)){q=52;break}else e=e+1|0}if((q|0)==52){q=0;d=d+1|0}else if((q|0)==53){q=0;h=j+k-d|0;i=o+(h*12|0)|0;c[o+(h*12|0)+8>>2]=g;f=c[f+(j*12|0)+4>>2]|0;t=FO(f*12|0)|0;c[i>>2]=t;if(!t){q=55;break}e=0;while(1){if((e|0)>=(f|0))break;p=(c[(c[(c[b>>2]|0)+8>>2]|0)+(j*12|0)>>2]|0)+(e*12|0)|0;t=(c[i>>2]|0)+(e*12|0)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];e=e+1|0}c[o+(h*12|0)+4>>2]=f}j=j+1|0}if((q|0)==55){Ue(0,3,41858,r);Ea(1)}e=c[a>>2]|0;d=e+8|0;g=c[d>>2]|0;if(g){f=0;d=g;while(1){if((f|0)>=(c[e+12>>2]|0))break;GO(c[d+(f*12|0)>>2]|0);t=c[a>>2]|0;f=f+1|0;e=t;d=c[t+8>>2]|0}GO(d);d=(c[a>>2]|0)+8|0}c[d>>2]=o;c[(c[a>>2]|0)+12>>2]=n;Tf(b)|0;d=0}}else{Ue(0,3,22132,e);d=-1}zb=s;return d|0}function Tf(a){a=a|0;var b=0,d=0,e=0,f=0;e=zb;zb=zb+16|0;if(a){b=c[a>>2]|0;if(!b)b=0;else{b=c[b>>2]|0;if(b|0)GO(b);b=0;while(1){f=c[a>>2]|0;d=f+8|0;if((b|0)>=(c[f+12>>2]|0))break;GO(c[(c[d>>2]|0)+(b*12|0)>>2]|0);b=b+1|0}GO(c[d>>2]|0);GO(c[a>>2]|0);c[a>>2]=0;b=0}}else{Ue(0,3,22192,e);b=-1}zb=e;return b|0}function Uf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;o=p+56|0;n=p+48|0;l=p+40|0;k=p+32|0;j=p+24|0;i=p+8|0;h=p;g=p+60|0;a[g>>0]=a[22236]|0;a[g+1>>0]=a[22237]|0;a[g+2>>0]=a[22238]|0;a:do if((b|0)!=0&(e|0)!=0){m=Hg(b,d,g)|0;if(!m){f=(d|0)!=0;c[i>>2]=b;c[i+4>>2]=f?46716:57671;c[i+8>>2]=f?d:57671;Ue(0,3,22290,i);f=-1;break}i=HO(1,16)|0;if(!i){Ue(0,3,41858,j);Ea(1)}h=i+4|0;b:do if((gA(h,4,1,m)|0)==1?(f=c[h>>2]|0,(f|0)>=1):0){j=FO(f*132|0)|0;c[i>>2]=j;if(!j){Ue(0,3,41858,k);Ea(1)}g=0;while(1){if((g|0)>=(f|0))break;if((gA((c[i>>2]|0)+(g*132|0)|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+8|0,8,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+16|0,108,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+124|0,4,1,m)|0)!=1)break b;if((gA((c[i>>2]|0)+(g*132|0)+128|0,4,1,m)|0)!=1)break b;g=g+1|0;f=c[h>>2]|0}b=i+12|0;if((gA(b,4,1,m)|0)==1){f=c[b>>2]|0;if((f|0)<1){c[i+8>>2]=0;break}k=FO(f*12|0)|0;d=i+8|0;c[d>>2]=k;if(!k){Ue(0,3,41858,l);Ea(1)}h=0;while(1){if((h|0)>=(f|0)){f=32;break}if((gA((c[d>>2]|0)+(h*12|0)+8|0,4,1,m)|0)!=1)break b;if((gA((c[d>>2]|0)+(h*12|0)+4|0,4,1,m)|0)!=1)break b;l=c[d>>2]|0;f=c[l+(h*12|0)+4>>2]|0;g=FO(f*12|0)|0;c[l+(h*12|0)>>2]=g;if(!g){f=29;break}if((gA(g,12,f,m)|0)!=(f|0))break b;h=h+1|0;f=c[b>>2]|0}if((f|0)==29){Ue(0,3,41858,n);Ea(1)}else if((f|0)==32){c[e>>2]=i;xz(m)|0;f=0;break a}}}while(0);Ue(0,3,22357,o);f=c[i+8>>2]|0;if(f|0)GO(f);f=c[i>>2]|0;if(f|0)GO(f);GO(i);xz(m)|0;f=-1}else{Ue(0,3,22239,h);f=-1}while(0);zb=p;return f|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;a:do if(!a){Ue(0,3,22402,j);e=-1}else{g=c[a+4>>2]|0;i=(b|0)==-1;e=0;while(1){if((e|0)>=(g|0))break;f=(c[a>>2]|0)+(e*132|0)+124|0;h=c[f>>2]|0;if((h|0)==(b|0)|i&(h|0)>-1)c[f>>2]=d;e=e+1|0}h=c[a+12>>2]|0;f=a+8|0;e=0;while(1){if((e|0)>=(h|0)){e=0;break a}g=(c[f>>2]|0)+(e*12|0)+8|0;a=c[g>>2]|0;if((a|0)==(b|0)|i&(a|0)>-1)c[g>>2]=d;e=e+1|0}}while(0);zb=j;return e|0}function Wf(){return -1}function Xf(a,b){a=a|0;b=b|0;return Zf(a,b,Yf(b)|0)|0}function Yf(a){a=a|0;return Qy(a)|0}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;g=l+12|0;j=l;k=l+8|0;NE(j,b);if(a[j>>0]|0){h=(c[b>>2]|0)+-12|0;c[k>>2]=c[b+(c[h>>2]|0)+24>>2];h=b+(c[h>>2]|0)|0;i=c[h+4>>2]|0;f=d+e|0;m=Wf()|0;e=h+76|0;if(_f(m,c[e>>2]|0)|0){IE(g,h);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,32)|0;YF(g);m=m<<24>>24;c[e>>2]=m;e=m}else e=c[e>>2]|0;c[g>>2]=c[k>>2];if(!($f(g,d,(i&176|0)==32?f:d,f,h,e&255)|0)){m=b+(c[(c[b>>2]|0)+-12>>2]|0)|0;GE(m,c[m+16>>2]|5)}}OE(j);zb=l;return b|0}function _f(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;i=c[b>>2]|0;a:do if(!i)i=0;else{k=d;j=f-k|0;l=g+12|0;g=c[l>>2]|0;g=(g|0)>(j|0)?g-j|0:0;j=e;k=j-k|0;if((k|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,d,k)|0)!=(k|0):0){c[b>>2]=0;i=0;break}do if((g|0)>0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;hO(m,g,h);if((Jb[c[(c[i>>2]|0)+48>>2]&63](i,(a[m+11>>0]|0)<0?c[m>>2]|0:m,g)|0)==(g|0)){jO(m);break}else{c[b>>2]=0;jO(m);i=0;break a}}while(0);f=f-j|0;if((f|0)>0?(Jb[c[(c[i>>2]|0)+48>>2]&63](i,e,f)|0)!=(f|0):0){c[b>>2]=0;i=0;break}c[l>>2]=0}while(0);zb=n;return i|0}function ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;g=d;i=j;f=e-g|0;if(f>>>0>4294967279)eO(b);if(f>>>0<11){a[b+11>>0]=f;h=b}else{k=f+16&-16;h=tB(k)|0;c[b>>2]=h;c[b+8>>2]=k|-2147483648;c[b+4>>2]=f}f=e-g|0;b=h;while(1){if((d|0)==(e|0))break;bg(b,d);d=d+1|0;b=b+1|0}a[i>>0]=0;bg(h+f|0,i);zb=j;return}function bg(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return}function cg(a){a=a|0;return a&255|0}function dg(a){a=a|0;if(_f(a,Wf()|0)|0)a=~(Wf()|0);return a|0}function eg(a){a=a|0;return a&255|0}function fg(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+112|0;z=A+48|0;p=A+40|0;n=A+32|0;l=A+24|0;h=A+16|0;g=A+8|0;e=A;v=A+96|0;w=A+84|0;x=A+72|0;y=A+52|0;a:do if((b|0)!=0&(d|0)!=0){i=d+4|0;e=c[i>>2]|0;if(!e){Ue(0,3,22499,g);e=-1;break}u=b+28|0;g=c[u>>2]|0;if(g){GO(g);e=c[i>>2]|0;if(!e){c[u>>2]=0;e=0}else j=7}else j=7;b:do if((j|0)==7){t=FO(e*132|0)|0;c[u>>2]=t;if(!t){Ue(0,3,41858,h);Ea(1)}g=0;while(1){if((g|0)>=(e|0))break b;_O((c[u>>2]|0)+(g*132|0)|0,(c[d>>2]|0)+(g*132|0)|0,132)|0;g=g+1|0;e=c[i>>2]|0}}while(0);m=b+32|0;c[m>>2]=e;t=b+36|0;e=c[t>>2]|0;if(e|0){i=b+40|0;h=0;while(1){if((h|0)>=(c[i>>2]|0))break;g=c[e+(h*12|0)>>2]|0;if(g){GO(g);e=c[t>>2]|0}h=h+1|0}GO(e)}k=d+12|0;e=c[k>>2]|0;c:do if(!e){c[t>>2]=0;o=0}else{s=FO(e*12|0)|0;c[t>>2]=s;if(!s){Ue(0,3,41858,l);Ea(1)}d=d+8|0;j=0;while(1){if((j|0)>=(e|0)){o=e;break c}i=c[d>>2]|0;g=c[t>>2]|0;c[g+(j*12|0)+8>>2]=c[i+(j*12|0)+8>>2];h=i+(j*12|0)+4|0;c[g+(j*12|0)+4>>2]=c[h>>2];h=c[h>>2]|0;if(!h)c[i+(j*12|0)>>2]=0;else{s=FO(h*12|0)|0;c[g+(j*12|0)>>2]=s;if(!s)break;g=0;e=i;while(1){if((g|0)>=(c[e+(j*12|0)+4>>2]|0))break;r=(c[e+(j*12|0)>>2]|0)+(g*12|0)|0;s=(c[(c[t>>2]|0)+(j*12|0)>>2]|0)+(g*12|0)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];g=g+1|0;e=c[d>>2]|0}e=c[k>>2]|0}j=j+1|0}Ue(0,3,41858,n);Ea(1)}while(0);s=b+40|0;c[s>>2]=o;i=b+52|0;e=c[i>>2]|0;if(e|0){GO(e);c[i>>2]=0;c[b+56>>2]=0}g=c[k>>2]|0;d:do if((g|0)>0){c[b+56>>2]=g;h=FO(g*68|0)|0;c[i>>2]=h;if(!h){Ue(0,3,41858,p);Ea(1)}e=0;while(1){if((e|0)==(g|0))break d;c[h+(e*68|0)+64>>2]=0;e=e+1|0}}while(0);l=c[m>>2]|0;if(!l)e=0;else{m=v+4|0;n=v+8|0;o=w+4|0;p=w+8|0;q=x+4|0;r=x+8|0;k=0;e=0;while(1){if((k|0)>=(c[s>>2]|0)){e=0;break a}d=0;while(1){if((d|0)>=(c[(c[t>>2]|0)+(k*12|0)+4>>2]|0))break;c[v>>2]=0;c[m>>2]=0;c[n>>2]=0;c[w>>2]=0;c[o>>2]=0;c[p>>2]=0;c[x>>2]=0;c[q>>2]=0;c[r>>2]=0;j=0;while(1){if((j|0)>=(l|0))break;g=c[u>>2]|0;i=c[t>>2]|0;e:do if((c[g+(j*132|0)+128>>2]|0)==(c[(c[i+(k*12|0)>>2]|0)+(d*12|0)+8>>2]|0)?(c[g+(j*132|0)+124>>2]|0)==(c[i+(k*12|0)+8>>2]|0):0){gg(y,+f[g+(j*132|0)>>2],+f[g+(j*132|0)+4>>2],+f[g+(j*132|0)+112>>2],+f[g+(j*132|0)+116>>2],(c[g+(j*132|0)+120>>2]|0)!=0);g=c[m>>2]|0;if(g>>>0<(c[n>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[m>>2]=g+20}else hg(v,y);Of(y);g=c[u>>2]|0;ig(y,+f[g+(j*132|0)+8>>2],+f[g+(j*132|0)+12>>2],0.0);g=c[o>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[o>>2]=(c[o>>2]|0)+12}else jg(w,y);g=0;while(1){if(g>>>0>=96)break e;h=(c[u>>2]|0)+(j*132|0)+16+g|0;i=c[q>>2]|0;if((i|0)==(c[r>>2]|0))kg(x,h);else{a[i>>0]=a[h>>0]|0;c[q>>2]=(c[q>>2]|0)+1}g=g+1|0}}while(0);j=j+1|0}c[z>>2]=((c[m>>2]|0)-(c[v>>2]|0)|0)/20|0;Ue(0,1,22532,z);j=c[t>>2]|0;c[b+60+(e<<2)>>2]=c[j+(k*12|0)+8>>2];j=c[j+(k*12|0)>>2]|0;em(c[b>>2]|0,v,x,w,c[j+(d*12|0)>>2]|0,c[j+(d*12|0)+4>>2]|0,e);Mf(x);lg(w);Nf(v);d=d+1|0;e=e+1|0}k=k+1|0}}}else{Ue(0,3,22451,e);e=-1}while(0);zb=A;return e|0}function gg(b,c,d,e,g,h){b=b|0;c=+c;d=+d;e=+e;g=+g;h=h|0;f[b>>2]=c;f[b+4>>2]=d;f[b+8>>2]=e;f[b+12>>2]=g;a[b+16>>0]=h&1;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/20|0)+1|0;g=ug(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/20|0;j=k<<1;vg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/20|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[g>>2]=(c[g>>2]|0)+20;wg(a,d);xg(d);zb=h;return}}function ig(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;f[a>>2]=b;f[a+4>>2]=c;f[a+8>>2]=d;return}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qg(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=((c[a+8>>2]|0)-i|0)/12|0;j=k<<1;rg(d,k>>>0>>1>>>0?(j>>>0>>0?f:j):g,((c[e>>2]|0)-i|0)/12|0,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[g>>2]=(c[g>>2]|0)+12;sg(a,d);tg(d);zb=h;return}}function kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=zb;zb=zb+32|0;e=i;f=b+4|0;g=(c[f>>2]|0)-(c[b>>2]|0)+1|0;h=mg(b)|0;if(h>>>0>>0)EO(b);else{j=c[b>>2]|0;l=(c[b+8>>2]|0)-j|0;k=l<<1;ng(e,l>>>0>>1>>>0?(k>>>0>>0?g:k):h,(c[f>>2]|0)-j|0,b+8|0);h=e+8|0;a[c[h>>2]>>0]=a[d>>0]|0;c[h>>2]=(c[h>>2]|0)+1;og(b,e);pg(e);zb=i;return}}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mg(a){a=a|0;return 2147483647}function ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)e=0;else e=tB(b)|0;c[a>>2]=e;d=e+d|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+b;return}function og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-f)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-1|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function qg(a){a=a|0;return 357913941}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-12|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ug(a){a=a|0;return 214748364}function vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>214748364){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*20|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*20|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*20|0);return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;i=(c[g>>2]|0)+-20|0;h=d+-20|0;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[g>>2]=(c[g>>2]|0)+-20;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;f=a+8|0;i=b+12|0;h=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=h;c[b>>2]=c[g>>2];return}function xg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-20|0;c[d>>2]=e;Of(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+48|0;r=u+16|0;o=u+8|0;d=u;e=u+44|0;h=u+40|0;do if((a|0)!=0&(b|0)!=0){i=c[a+12>>2]|0;j=c[a+16>>2]|0;m=c[a+20>>2]|0;n=(m|0)==1;if(!n){d=Bg(b,i,j,m,e,h)|0;if(!d){d=-1;break}else{s=d;t=1}}else{s=b;t=0}Em(c[a>>2]|0,s,i,j)|0;j=fp(c[a>>2]|0)|0;j=(c[j+4>>2]|0)-(c[j>>2]|0)|0;d=(j|0)/20|0;i=a+48|0;c[i>>2]=d;a:do if(!j){e=c[a+56>>2]|0;b=a+52|0;d=0;while(1){if((d|0)>=(e|0))break a;c[(c[b>>2]|0)+(d*68|0)+60>>2]=-1;d=d+1|0}}else{j=a+44|0;b=c[j>>2]|0;if(b){GO(b);d=c[i>>2]|0}h=FO(d<<3)|0;c[j>>2]=h;if(!h){Ue(0,3,41858,o);Ea(1)}e=fp(c[a>>2]|0)|0;b:do if(n){h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k;f[o+(d<<3)+4>>2]=l}else{o=c[j>>2]|0;pe(b+184|0,k,l,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}else switch(m|0){case 5:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*1.5;f[o+(d<<3)+4>>2]=l*1.5}else{o=c[j>>2]|0;pe(b+184|0,k*1.5,l*1.5,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 2:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*2.0;f[o+(d<<3)+4>>2]=l*2.0}else{o=c[j>>2]|0;pe(b+184|0,k*2.0,l*2.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}case 4:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*3.0;f[o+(d<<3)+4>>2]=l*3.0}else{o=c[j>>2]|0;pe(b+184|0,k*3.0,l*3.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}default:{h=a+4|0;d=0;while(1){if((d|0)>=(c[i>>2]|0))break b;b=c[e>>2]|0;k=+f[b+(d*20|0)>>2];l=+f[b+(d*20|0)+4>>2];b=c[h>>2]|0;if(!b){o=c[j>>2]|0;f[o+(d<<3)>>2]=k*4.0;f[o+(d<<3)+4>>2]=l*4.0}else{o=c[j>>2]|0;pe(b+184|0,k*4.0,l*4.0,o+(d<<3)|0,o+(d<<3)+4|0)|0}d=d+1|0}}}while(0);i=a+56|0;j=a+36|0;b=a+52|0;d=0;while(1){e=c[i>>2]|0;if((d|0)>=(e|0))break a;o=c[b>>2]|0;c[o+(d*68|0)+48>>2]=c[(c[j>>2]|0)+(d*12|0)+8>>2];c[o+(d*68|0)+60>>2]=-1;if(((c[o+(d*68|0)+64>>2]|0)==0?(p=hp(c[a>>2]|0)|0,q=cp(c[a>>2]|0)|0,(q|0)>=0):0)?(e=c[h>>2]|0,m=ep(c[a>>2]|0,q)|0,n=fp(c[a>>2]|0)|0,o=c[b>>2]|0,(zg(e,p,m,n,o+(d*68|0)|0,o+(d*68|0)+52|0)|0)==0):0){n=c[b>>2]|0;c[n+(d*68|0)+60>>2]=0;o=(c[p+4>>2]|0)-(c[p>>2]|0)>>3;c[n+(d*68|0)+56>>2]=o;c[n+(d*68|0)+48>>2]=c[a+60+(q<<2)>>2];l=+f[n+(d*68|0)+52>>2];c[r>>2]=d;c[r+4>>2]=o;c[r+8>>2]=o;g[r+16>>3]=l;Ue(0,1,22587,r)}d=d+1|0}}while(0);d=0;while(1){if((d|0)>=(e|0))break;c[(c[b>>2]|0)+(d*68|0)+64>>2]=0;d=d+1|0}if(!t)d=0;else{GO(s);d=0}}else{Ue(0,3,22543,d);d=-1}while(0);zb=u;return d|0}function zg(a,b,d,e,h,i){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=zb;zb=zb+240|0;k=u+208|0;j=u+200|0;s=u+224|0;p=u+212|0;q=u+96|0;t=u+192|0;r=u;l=c[b>>2]|0;b=(c[b+4>>2]|0)-l|0;m=b>>3;do if(m>>>0<4)b=-1;else{o=FO(b<<1)|0;if(!o){Ue(0,3,41858,j);Ea(1)}n=FO(m*24|0)|0;if(!n){Ue(0,3,41858,k);Ea(1)}e=c[e>>2]|0;j=c[d>>2]|0;b=0;while(1){if((b|0)==(m|0))break;d=c[l+(b<<3)>>2]|0;g[o+(b<<4)>>3]=+f[e+(d*20|0)>>2];g[o+(b<<4)+8>>3]=+f[e+(d*20|0)+4>>2];d=c[l+(b<<3)+4>>2]|0;g[n+(b*24|0)>>3]=+f[j+(d*12|0)>>2];g[n+(b*24|0)+8>>3]=+f[j+(d*12|0)+4>>2];g[n+(b*24|0)+16>>3]=0.0;b=b+1|0}c[p+8>>2]=m;c[p>>2]=o;c[p+4>>2]=n;b=a+8|0;if((Me(b,o,n,m,q)|0)<0){GO(o);GO(n);b=-1;break}b=Ee(b)|0;c[s>>2]=b;if(!b){GO(o);GO(n);b=-1;break}if((He(b,p,q,r,t)|0)<0){GO(o);GO(n);Fe(s)|0;b=-1}else{j=0;while(1){if((j|0)==3)break;b=0;while(1){if((b|0)==4)break;f[h+(j<<4)+(b<<2)>>2]=+g[r+(j<<5)+(b<<3)>>3];b=b+1|0}j=j+1|0}Fe(s)|0;GO(o);GO(n);v=+g[t>>3];f[i>>2]=v;b=(v>10.0)<<31>>31}}while(0);zb=u;return b|0}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)a=-1;else{c[b>>2]=c[a+52>>2];c[d>>2]=c[a+56>>2];a=0}return a|0}function Bg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;switch(d|0){case 1:{a=Cg(a,b,c,e,f)|0;break}case 5:{a=Dg(a,b,c,e,f)|0;break}case 2:{a=Eg(a,b,c,e,f)|0;break}case 4:{a=Fg(a,b,c,e,f)|0;break}default:a=Gg(a,b,c,e,f)|0}return a|0}function Cg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=zb;zb=zb+16|0;c[e>>2]=b;c[f>>2]=d;b=B(d,b)|0;d=FO(b)|0;if(!d){Ue(0,3,41858,g);Ea(1)}else{_O(d|0,a|0,b|0)|0;zb=g;return d|0}return 0}function Dg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=zb;zb=zb+16|0;o=(e|0)/3|0;p=o<<1;c[g>>2]=p;n=(f|0)/3|0;m=n<<1;c[h>>2]=m;m=FO(B(m,p)|0)|0;if(!m){Ue(0,3,41858,q);Ea(1)}h=0;f=m;g=m;while(1){if((h|0)>=(n|0))break;l=h*3|0;i=0;j=b+(B(l+2|0,e)|0)|0;k=b+(B(l+1|0,e)|0)|0;l=b+(B(l,e)|0)|0;g=g+p|0;while(1){if((i|0)>=(o|0))break;u=l+1|0;s=k+1|0;a[f>>0]=(((d[u>>0]|0)>>>1&255)+(d[l>>0]|0)+((d[k>>0]|0)>>>1&255)+((d[s>>0]|0)>>>2&255)<<2>>>0)/9|0;r=j+1|0;a[g>>0]=((((d[s>>0]|0)>>>2)+((d[k>>0]|0)>>>1)&255)+(d[j>>0]|0)+((d[r>>0]|0)>>>1&255)<<2>>>0)/9|0;t=k+2|0;a[f+1>>0]=(((d[u>>0]|0)>>>1&255)+(d[l+2>>0]|0)+((d[s>>0]|0)>>>2&255)+((d[t>>0]|0)>>>1&255)<<2>>>0)/9|0;a[g+1>>0]=((((d[t>>0]|0)>>>1)+((d[s>>0]|0)>>>2)&255)+((d[r>>0]|0)>>>1&255)+(d[j+2>>0]|0)<<2>>>0)/9|0;i=i+1|0;j=j+3|0;k=k+3|0;l=l+3|0;f=f+2|0;g=g+2|0}h=h+1|0;f=f+p|0}zb=q;return m|0}function Eg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=(e|0)/2|0;c[g>>2]=m;l=(f|0)/2|0;c[h>>2]=l;k=FO(B(l,m)|0)|0;if(!k){Ue(0,3,41858,n);Ea(1)}g=0;f=k;while(1){if((g|0)>=(l|0))break;j=g<<1;h=0;i=b+(B(j,e)|0)|0;j=b+(B(j|1,e)|0)|0;while(1){if((h|0)>=(m|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)|0)>>>2;h=h+1|0;i=i+2|0;j=j+2|0;f=f+1|0}g=g+1|0}zb=n;return k|0}function Fg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=(e|0)/3|0;c[g>>2]=n;m=(f|0)/3|0;c[h>>2]=m;l=FO(B(m,n)|0)|0;if(!l){Ue(0,3,41858,o);Ea(1)}g=0;f=l;while(1){if((g|0)>=(m|0))break;k=g*3|0;h=0;i=b+(B(k,e)|0)|0;j=b+(B(k+2|0,e)|0)|0;k=b+(B(k+1|0,e)|0)|0;while(1){if((h|0)>=(n|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)|0)/9|0;h=h+1|0;i=i+3|0;j=j+3|0;k=k+3|0;f=f+1|0}g=g+1|0}zb=o;return l|0}function Gg(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=(e|0)/4|0;c[g>>2]=o;n=(f|0)/4|0;c[h>>2]=n;m=FO(B(n,o)|0)|0;if(!m){Ue(0,3,41858,p);Ea(1)}g=0;f=m;while(1){if((g|0)>=(n|0))break;l=g<<2;h=0;i=b+(B(l,e)|0)|0;j=b+(B(l|3,e)|0)|0;k=b+(B(l|2,e)|0)|0;l=b+(B(l|1,e)|0)|0;while(1){if((h|0)>=(o|0))break;a[f>>0]=((d[i+1>>0]|0)+(d[i>>0]|0)+(d[i+2>>0]|0)+(d[i+3>>0]|0)+(d[l>>0]|0)+(d[l+1>>0]|0)+(d[l+2>>0]|0)+(d[l+3>>0]|0)+(d[k>>0]|0)+(d[k+1>>0]|0)+(d[k+2>>0]|0)+(d[k+3>>0]|0)+(d[j>>0]|0)+(d[j+1>>0]|0)+(d[j+2>>0]|0)+(d[j+3>>0]|0)|0)/16|0;h=h+1|0;i=i+4|0;j=j+4|0;k=k+4|0;l=l+4|0;f=f+1|0}g=g+1|0}zb=p;return m|0}function Hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;g=i;do if(a){if(!b){e=rz(a,d)|0;break}f=Qy(a)|0;f=FO(f+2+(Qy(b)|0)|0)|0;if(!f){Ue(0,3,41858,g);Ea(1)}else{c[h>>2]=a;c[h+4>>2]=b;Hx(f,22627,h)|0;e=rz(f,d)|0;GO(f);break}}else e=0;while(0);zb=i;return e|0}function Ig(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;d=m;if(!(Kg(b)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,22633)|0,22676)|0,35e3)|0,53)|0,35007)|0,22771)|0;IE(d,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(d,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(d);QE(l,k)|0;ME(l)|0;ua()}i=Mg(Lg(b,0,0)|0)|0;j=Ng(Lg(b,0,0)|0)|0;k=Og(Lg(b,0,0)|0)|0;e=Pg(b)|0;l=a+12|0;c[l>>2]=e;b=(Qg(b)|0)+-1|0;e=a+16|0;c[e>>2]=b;Rg(a,B(c[l>>2]|0,b)|0);b=0;while(1){if(b>>>0>=(c[l>>2]|0)>>>0)break;f=j>>>b;g=k>>>b;d=0;while(1){h=c[e>>2]|0;if(d>>>0>=h>>>0)break;h=(B(h,b)|0)+d|0;cq((c[a>>2]|0)+(h<<5)|0,i,f,g,-1,1);d=d+1|0}b=b+1|0}zb=m;return}function Kg(a){a=a|0;return (c[a+8>>2]|0)-(c[a+4>>2]|0)>>5|0}function Lg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=zb;zb=zb+16|0;f=g;if((c[a+16>>2]|0)>>>0<=b>>>0){e=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,218)|0,35007)|0,22796)|0;IE(f,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);h=XF(f,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(f);QE(e,h)|0;ME(e)|0;ua()}e=c[a+20>>2]|0;if(e>>>0>d>>>0){h=(B(e,b)|0)+d|0;zb=g;return (c[a+4>>2]|0)+(h<<5)|0}else{h=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,219)|0,35007)|0,22816)|0;IE(f,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);g=XF(f,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(f);QE(h,g)|0;ME(h)|0;ua()}return 0}function Mg(a){a=a|0;return c[a>>2]|0}function Ng(a){a=a|0;return c[a+4>>2]|0}function Og(a){a=a|0;return c[a+8>>2]|0}function Pg(a){a=a|0;return c[a+16>>2]|0}function Qg(a){a=a|0;return c[a+20>>2]|0}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=d-f>>5;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b<<5)|0;while(1){if((d|0)==(a|0))break;f=d+-32|0;rq(f);d=f}c[g>>2]=a}}else Sg(a,b-e|0);return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>5>>>0>>0){d=(d-(c[a>>2]|0)>>5)+b|0;e=Ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>4;Vg(f,k>>5>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>5,a+8|0);Wg(f,b);Xg(a,f);Yg(f);break}}else Tg(a,b);while(0);zb=i;return}function Tg(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ug(a){a=a|0;return 134217727}function Vg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>134217727){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<5)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<5)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<5);return}function Wg(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{_p(b);b=(c[d>>2]|0)+32|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-32|0;bq((c[g>>2]|0)+-32|0,h);c[g>>2]=(c[g>>2]|0)+-32;d=h}e=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=e;e=b+8|0;h=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=h;e=a+8|0;h=b+12|0;f=c[e>>2]|0;c[e>>2]=c[h>>2];c[h>>2]=f;c[b>>2]=c[g>>2];return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-32|0;c[d>>2]=e;rq(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((c[a+4>>2]|0)==(c[a>>2]|0)){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22835)|0,22676)|0,35e3)|0,72)|0,35007)|0,22877)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((Pg(b)|0)<=0){g=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,73)|0,35007)|0,22967)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if(b|0?NA(b,13184,13192,0)|0:0){f=a+12|0;g=a+16|0;e=0;while(1){if(e>>>0>=(c[f>>2]|0)>>>0)break;d=0;while(1){if(d>>>0>=(c[g>>2]|0)>>>0)break;k=_g(a,e,d)|0;j=Lg(b,e,d)|0;i=d+1|0;$g(0,k,j,Lg(b,e,i)|0);d=i}e=e+1|0}zb=h;return}k=Xf(Xf(PE(Xf(Xf(Xf(56032,23003)|0,22676)|0,35e3)|0,74)|0,35007)|0,23075)|0;IE(d,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(k,j)|0;ME(k)|0;ua()}function _g(a,b,d){a=a|0;b=b|0;d=d|0;d=(B(c[a+16>>2]|0,b)|0)+d|0;return (c[a>>2]|0)+(d<<5)|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;a=k;if((Mg(b)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23110)|0,22676)|0,35e3)|0,86)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(d)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23181)|0,22676)|0,35e3)|0,87)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((Mg(e)|0)!=2){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23228)|0,22676)|0,35e3)|0,88)|0,35007)|0,23155)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(b)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23275)|0,22676)|0,35e3)|0,89)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(d)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23353)|0,22676)|0,35e3)|0,90)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}if((ah(e)|0)!=1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23396)|0,22676)|0,35e3)|0,91)|0,35007)|0,23316)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23439)|0,22676)|0,35e3)|0,92)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23519)|0,22676)|0,35e3)|0,93)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Ng(d)|0;if((j|0)!=(Ng(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23602)|0,22676)|0,35e3)|0,94)|0,35007)|0,23487)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}j=Og(d)|0;if((j|0)!=(Og(e)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,23652)|0,22676)|0,35e3)|0,95)|0,35007)|0,23569)|0;IE(a,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(a,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(a);QE(j,i)|0;ME(j)|0;ua()}g=0;while(1){if(g>>>0>=(Og(d)|0)>>>0)break;h=bh(b,g)|0;i=ch(d,g)|0;j=ch(e,g)|0;a=0;while(1){if(a>>>0>=(Ng(d)|0)>>>0)break;f[h+(a<<2)>>2]=+f[i+(a<<2)>>2]-+f[j+(a<<2)>>2];a=a+1|0}g=g+1|0}zb=k;return}function ah(a){a=a|0;return c[a+16>>2]|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,119)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;if((c[a+8>>2]|0)>>>0>b>>>0){d=(c[a+24>>2]|0)+(B(c[a+12>>2]|0,b)|0)|0;zb=e;return d|0}else{e=Xf(Xf(PE(Xf(Xf(Xf(56032,23704)|0,23741)|0,35e3)|0,124)|0,35007)|0,23811)|0;IE(d,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);b=XF(d,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(d);QE(e,b)|0;ME(e)|0;ua()}return 0}function dh(b){b=b|0;var d=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=10;c[b+12>>2]=10;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;a[b+28>>0]=1;Ig(b+32|0);f[b+52>>2]=0.0;f[b+56>>2]=10.0;d=b+60|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;f[b+88>>2]=9.0;sj(b+92|0);d=b+144|0;c[d>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;eh(b,5e3);fh(d,36);return}function eh(a,b){a=a|0;b=b|0;c[a+84>>2]=b;uh(a+60|0,b);return}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else nh(a,b-e|0);return}function gh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function hh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function ih(a){a=a|0;mh(a);return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;kh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-12|0;lh(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function lh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-32|0;rq(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ph(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;qh(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);rh(f,b);sh(a,f);th(f);break}}else oh(a,b);while(0);zb=i;return}function oh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function ph(a){a=a|0;return 1073741823}function qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function rh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function th(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((((c[a+8>>2]|0)-e|0)/36|0)>>>0>>0){vh(d,b,((c[a+4>>2]|0)-e|0)/36|0,a+8|0);wh(a,d);xh(d)}zb=f;return}function vh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>119304647){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*36|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*36|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*36|0);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-36|0)*36|0)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-36|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function yh(a){a=a|0;gh(a+144|0);tj(a+92|0);hh(a+72|0);hh(a+60|0);ih(a+32|0);jh(a+16|0);return} +function aI(){var b=0,d=0;if((a[54864]|0)==0?nB(54864)|0:0){d=53568;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=53856);pB(54864)}nO(53568,49685)|0;nO(53580,49693)|0;nO(53592,49702)|0;nO(53604,49708)|0;nO(53616,49714)|0;nO(53628,49718)|0;nO(53640,49723)|0;nO(53652,49728)|0;nO(53664,49735)|0;nO(53676,49745)|0;nO(53688,49753)|0;nO(53700,49762)|0;nO(53712,49771)|0;nO(53724,49775)|0;nO(53736,49779)|0;nO(53748,49783)|0;nO(53760,49714)|0;nO(53772,49787)|0;nO(53784,49791)|0;nO(53796,49795)|0;nO(53808,49799)|0;nO(53820,49803)|0;nO(53832,49807)|0;nO(53844,49811)|0;return}function bI(){var b=0,d=0;if((a[54880]|0)==0?nB(54880)|0:0){d=53856;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54024);pB(54880)}nO(53856,49815)|0;nO(53868,49822)|0;nO(53880,49829)|0;nO(53892,49837)|0;nO(53904,49847)|0;nO(53916,49856)|0;nO(53928,49863)|0;nO(53940,49872)|0;nO(53952,49876)|0;nO(53964,49880)|0;nO(53976,49884)|0;nO(53988,49888)|0;nO(54e3,49892)|0;nO(54012,49896)|0;return}function cI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function dI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(FG(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function eI(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;s=z+12|0;r=z+8|0;w=z+4|0;x=z;IE(s,g);t=XF(s,56736)|0;YF(s);c[h>>2]=0;u=t+8|0;m=0;a:while(1){l=c[e>>2]|0;if(!((j|0)!=(k|0)&(m|0)==0))break;n=l;if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;o=1;q=0}else{o=0;q=n}}else{l=0;o=1;q=n}p=c[f>>2]|0;m=p;do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else n=cg(a[n>>0]|0)|0;if(!(_f(n,Wf()|0)|0))if(o)break;else{y=63;break a}else{c[f>>2]=0;m=0;y=15;break}}else y=15;while(0);if((y|0)==15){y=0;if(o){y=63;break}else p=0}b:do if((Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0)<<24>>24==37){p=j+1|0;if((p|0)==(k|0)){y=63;break a}n=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{j=j+2|0;if((j|0)==(k|0)){y=63;break a}o=n;l=Jb[c[(c[t>>2]|0)+36>>2]&63](t,a[j>>0]|0,0)|0;j=p;break}default:{o=0;l=n}}p=c[(c[d>>2]|0)+36>>2]|0;c[w>>2]=q;c[x>>2]=m;c[r>>2]=c[w>>2];c[s>>2]=c[x>>2];q=Qb[p&15](d,r,s,g,h,i,l,o)|0;c[e>>2]=q;j=j+2|0}else{m=a[j>>0]|0;if(m<<24>>24>-1?(v=c[u>>2]|0,b[v+(m<<24>>24<<1)>>1]&8192):0){do{j=j+1|0;if((j|0)==(k|0)){j=k;break}m=a[j>>0]|0;if(m<<24>>24<=-1)break}while((b[v+(m<<24>>24<<1)>>1]&8192)!=0);while(1){if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if(_f(m,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}do if(p){m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))m=Gb[c[(c[p>>2]|0)+36>>2]&127](p)|0;else m=cg(a[m>>0]|0)|0;if(!(_f(m,Wf()|0)|0))if(n)break;else break b;else{c[f>>2]=0;y=42;break}}else y=42;while(0);if((y|0)==42){y=0;if(n)break b;else p=0}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(b[(c[u>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}}}n=l+12|0;m=c[n>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else m=cg(a[m>>0]|0)|0;q=Ib[c[(c[t>>2]|0)+12>>2]&63](t,m&255)|0;if(q<<24>>24!=(Ib[c[(c[t>>2]|0)+12>>2]&63](t,a[j>>0]|0)|0)<<24>>24){c[h>>2]=4;break}m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))Gb[c[(c[l>>2]|0)+40>>2]&127](l)|0;else{c[n>>2]=m+1;cg(a[m>>0]|0)|0}j=j+1|0}while(0);m=c[h>>2]|0}if((y|0)==63)c[h>>2]=4;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[f>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[m>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(n)break;else{y=78;break}else{c[f>>2]=0;y=76;break}}else y=76;while(0);if((y|0)==76?n:0)y=78;if((y|0)==78)c[h>>2]=c[h>>2]|2;zb=z;return l|0}function fI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function gI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function hI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function iI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function lI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);i=c[f>>2]|0;do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else break a;else{c[f>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){i=0;break}else i=0}d=c[e>>2]|0;h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if((d&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(d<<24>>24<<1)>>1]&8192))break;d=c[e>>2]|0;h=d+12|0;i=c[h>>2]|0;if((i|0)==(c[d+16>>2]|0))Gb[c[(c[d>>2]|0)+40>>2]&127](d)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}}d=c[e>>2]|0;do if(d){h=c[d+12>>2]|0;if((h|0)==(c[d+16>>2]|0))d=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0;else d=cg(a[h>>0]|0)|0;if(_f(d,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(i){d=c[i+12>>2]|0;if((d|0)==(c[i+16>>2]|0))d=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else d=cg(a[d>>0]|0)|0;if(!(_f(d,Wf()|0)|0))if(h)break;else{k=41;break}else{c[f>>2]=0;k=39;break}}else k=39;while(0);if((k|0)==39?h:0)k=41;if((k|0)==41)c[g>>2]=c[g>>2]|2;return}function mI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+11>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+12+11>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(FG(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function nI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function oI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function pI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function qI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=sI(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function rI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;i=1;break}else{i=(c[d>>2]|0)==0;break}}else i=1;while(0);h=c[e>>2]|0;do if(h){b=c[h+12>>2]|0;if((b|0)==(c[h+16>>2]|0))b=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(i){j=h;k=17;break}else{k=16;break}else{c[e>>2]=0;k=14;break}}else k=14;while(0);if((k|0)==14)if(i)k=16;else{j=0;k=17}a:do if((k|0)==16)c[f>>2]=c[f>>2]|6;else if((k|0)==17){b=c[d>>2]|0;h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if((Jb[c[(c[g>>2]|0)+36>>2]&63](g,b&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}b=c[d>>2]|0;h=b+12|0;i=c[h>>2]|0;if((i|0)==(c[b+16>>2]|0))Gb[c[(c[b>>2]|0)+40>>2]&127](b)|0;else{c[h>>2]=i+1;cg(a[i>>0]|0)|0}b=c[d>>2]|0;do if(b){h=c[b+12>>2]|0;if((h|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[h>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;h=1;break}else{h=(c[d>>2]|0)==0;break}}else h=1;while(0);do if(j){b=c[j+12>>2]|0;if((b|0)==(c[j+16>>2]|0))b=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(h)break a;else break;else{c[e>>2]=0;k=38;break}}else k=38;while(0);if((k|0)==38?!h:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function sI(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[d>>2]|0;do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[j>>0]|0)|0;if(_f(i,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);j=c[e>>2]|0;do if(j){i=c[j+12>>2]|0;if((i|0)==(c[j+16>>2]|0))i=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else i=cg(a[i>>0]|0)|0;if(!(_f(i,Wf()|0)|0))if(k){q=17;break}else{q=16;break}else{c[e>>2]=0;q=14;break}}else q=14;while(0);if((q|0)==14)if(k)q=16;else{j=0;q=17}a:do if((q|0)==16){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==17){i=c[d>>2]|0;k=c[i+12>>2]|0;if((k|0)==(c[i+16>>2]|0))i=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else i=cg(a[k>>0]|0)|0;k=i&255;if(k<<24>>24>-1?(p=g+8|0,b[(c[p>>2]|0)+(i<<24>>24<<1)>>1]&2048):0){i=(Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24;k=c[d>>2]|0;l=k+12|0;m=c[l>>2]|0;if((m|0)==(c[k+16>>2]|0))Gb[c[(c[k>>2]|0)+40>>2]&127](k)|0;else{c[l>>2]=m+1;cg(a[m>>0]|0)|0}n=j;m=j;while(1){i=i+-48|0;o=h+-1|0;j=c[d>>2]|0;do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=cg(a[k>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;l=1;break}else{l=(c[d>>2]|0)==0;break}}else l=1;while(0);if(m){j=c[m+12>>2]|0;if((j|0)==(c[m+16>>2]|0))j=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[e>>2]=0;j=1;n=0;m=0}else j=0}else{j=1;m=0}k=c[d>>2]|0;if(!((h|0)>1&(l^j)))break;j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;k=j&255;if(k<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=(i*10|0)+((Jb[c[(c[g>>2]|0)+36>>2]&63](g,k,0)|0)<<24>>24)|0;j=c[d>>2]|0;k=j+12|0;l=c[k>>2]|0;if((l|0)==(c[j+16>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[k>>2]=l+1;cg(a[l>>0]|0)|0}h=o}do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=cg(a[j>>0]|0)|0;if(_f(j,Wf()|0)|0){c[d>>2]=0;k=1;break}else{k=(c[d>>2]|0)==0;break}}else k=1;while(0);do if(n){j=c[n+12>>2]|0;if((j|0)==(c[n+16>>2]|0))j=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else j=cg(a[j>>0]|0)|0;if(!(_f(j,Wf()|0)|0))if(k)break a;else break;else{c[e>>2]=0;q=63;break}}else q=63;while(0);if((q|0)==63?!k:0)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function tI(a){a=a|0;CF(a);return}function uI(a){a=a|0;CF(a);SA(a);return}function vI(a){a=a|0;return 2}function wI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+16|0;i=h+12|0;j=h+8|0;l=h+4|0;k=h;c[l>>2]=c[b>>2];c[k>>2]=c[d>>2];c[j>>2]=c[l>>2];c[i>>2]=c[k>>2];g=PI(a,j,i,e,f,g,13152,13184)|0;zb=h;return g|0}function xI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=zb;zb=zb+16|0;j=i+12|0;k=i+8|0;m=i+4|0;l=i;n=b+8|0;n=Gb[c[(c[n>>2]|0)+20>>2]&127](n)|0;c[m>>2]=c[d>>2];c[l>>2]=c[e>>2];e=a[n+8+3>>0]|0;o=e<<24>>24<0;d=o?c[n>>2]|0:n;e=d+((o?c[n+4>>2]|0:e&255)<<2)|0;c[k>>2]=c[m>>2];c[j>>2]=c[l>>2];h=PI(b,k,j,f,g,h,d,e)|0;zb=i;return h|0}function yI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];NI(a,g+24|0,b,i,f,e);zb=h;return c[b>>2]|0}function zI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];OI(a,g+16|0,b,i,f,e);zb=h;return c[b>>2]|0}function AI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;IE(i,e);e=XF(i,56768)|0;YF(i);c[j>>2]=c[d>>2];c[i>>2]=c[j>>2];_I(a,g+20|0,b,i,f,e);zb=h;return c[b>>2]|0}function BI(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=zb;zb=zb+144|0;k=R+128|0;j=R+112|0;P=R+124|0;Q=R+120|0;l=R+116|0;m=R+108|0;n=R+104|0;o=R+100|0;p=R+96|0;q=R+92|0;r=R+88|0;s=R+84|0;t=R+80|0;u=R+76|0;v=R+72|0;w=R+68|0;x=R+64|0;y=R+60|0;z=R+56|0;A=R+52|0;B=R+48|0;C=R+44|0;D=R+40|0;E=R+36|0;F=R+32|0;G=R+28|0;H=R+24|0;I=R+20|0;J=R+16|0;K=R+12|0;L=R+8|0;M=R+4|0;N=R;c[g>>2]=0;IE(k,f);O=XF(k,56768)|0;YF(k);do switch(i<<24>>24|0){case 65:case 97:{c[P>>2]=c[e>>2];c[k>>2]=c[P>>2];NI(b,h+24|0,d,k,g,O);S=26;break}case 104:case 66:case 98:{c[Q>>2]=c[e>>2];c[k>>2]=c[Q>>2];OI(b,h+16|0,d,k,g,O);S=26;break}case 99:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+12>>2]&127](Q)|0;c[l>>2]=c[d>>2];c[m>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[l>>2];c[k>>2]=c[m>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 101:case 100:{c[n>>2]=c[e>>2];c[k>>2]=c[n>>2];QI(b,h+12|0,d,k,g,O);S=26;break}case 68:{c[o>>2]=c[d>>2];c[p>>2]=c[e>>2];c[j>>2]=c[o>>2];c[k>>2]=c[p>>2];S=PI(b,j,k,f,g,h,12976,13008)|0;c[d>>2]=S;S=26;break}case 70:{c[q>>2]=c[d>>2];c[r>>2]=c[e>>2];c[j>>2]=c[q>>2];c[k>>2]=c[r>>2];S=PI(b,j,k,f,g,h,13008,13040)|0;c[d>>2]=S;S=26;break}case 72:{c[s>>2]=c[e>>2];c[k>>2]=c[s>>2];RI(b,h+8|0,d,k,g,O);S=26;break}case 73:{c[t>>2]=c[e>>2];c[k>>2]=c[t>>2];SI(b,h+8|0,d,k,g,O);S=26;break}case 106:{c[u>>2]=c[e>>2];c[k>>2]=c[u>>2];TI(b,h+28|0,d,k,g,O);S=26;break}case 109:{c[v>>2]=c[e>>2];c[k>>2]=c[v>>2];UI(b,h+16|0,d,k,g,O);S=26;break}case 77:{c[w>>2]=c[e>>2];c[k>>2]=c[w>>2];VI(b,h+4|0,d,k,g,O);S=26;break}case 116:case 110:{c[x>>2]=c[e>>2];c[k>>2]=c[x>>2];WI(b,d,k,g,O);S=26;break}case 112:{c[y>>2]=c[e>>2];c[k>>2]=c[y>>2];XI(b,h+8|0,d,k,g,O);S=26;break}case 114:{c[z>>2]=c[d>>2];c[A>>2]=c[e>>2];c[j>>2]=c[z>>2];c[k>>2]=c[A>>2];S=PI(b,j,k,f,g,h,13040,13084)|0;c[d>>2]=S;S=26;break}case 82:{c[B>>2]=c[d>>2];c[C>>2]=c[e>>2];c[j>>2]=c[B>>2];c[k>>2]=c[C>>2];S=PI(b,j,k,f,g,h,13088,13108)|0;c[d>>2]=S;S=26;break}case 83:{c[D>>2]=c[e>>2];c[k>>2]=c[D>>2];YI(b,h,d,k,g,O);S=26;break}case 84:{c[E>>2]=c[d>>2];c[F>>2]=c[e>>2];c[j>>2]=c[E>>2];c[k>>2]=c[F>>2];S=PI(b,j,k,f,g,h,13120,13152)|0;c[d>>2]=S;S=26;break}case 119:{c[G>>2]=c[e>>2];c[k>>2]=c[G>>2];ZI(b,h+24|0,d,k,g,O);S=26;break}case 120:{i=c[(c[b>>2]|0)+20>>2]|0;c[H>>2]=c[d>>2];c[I>>2]=c[e>>2];c[j>>2]=c[H>>2];c[k>>2]=c[I>>2];j=Ob[i&63](b,j,k,f,g,h)|0;break}case 88:{Q=b+8|0;Q=Gb[c[(c[Q>>2]|0)+24>>2]&127](Q)|0;c[J>>2]=c[d>>2];c[K>>2]=c[e>>2];S=a[Q+8+3>>0]|0;e=S<<24>>24<0;i=e?c[Q>>2]|0:Q;S=i+((e?c[Q+4>>2]|0:S&255)<<2)|0;c[j>>2]=c[J>>2];c[k>>2]=c[K>>2];S=PI(b,j,k,f,g,h,i,S)|0;c[d>>2]=S;S=26;break}case 121:{c[L>>2]=c[e>>2];c[k>>2]=c[L>>2];_I(b,h+20|0,d,k,g,O);S=26;break}case 89:{c[M>>2]=c[e>>2];c[k>>2]=c[M>>2];$I(b,h+20|0,d,k,g,O);S=26;break}case 37:{c[N>>2]=c[e>>2];c[k>>2]=c[N>>2];aJ(b,d,k,g,O);S=26;break}default:{c[g>>2]=c[g>>2]|4;S=26}}while(0);if((S|0)==26)j=c[d>>2]|0;zb=R;return j|0}function CI(b){b=b|0;if((a[54952]|0)==0?nB(54952)|0:0){MI();c[14233]=54352;pB(54952)}return c[14233]|0}function DI(b){b=b|0;if((a[54936]|0)==0?nB(54936)|0:0){LI();c[14232]=54064;pB(54936)}return c[14232]|0}function EI(b){b=b|0;if((a[54920]|0)==0?nB(54920)|0:0){KI();c[14231]=54032;pB(54920)}return c[14231]|0}function FI(b){b=b|0;if((a[54912]|0)==0?nB(54912)|0:0){c[14228]=0;c[14229]=0;c[14230]=0;tO(56912,17648,JI(17648)|0);pB(54912)}return 56912}function GI(b){b=b|0;if((a[54904]|0)==0?nB(54904)|0:0){c[14225]=0;c[14226]=0;c[14227]=0;tO(56900,17600,JI(17600)|0);pB(54904)}return 56900}function HI(b){b=b|0;if((a[54896]|0)==0?nB(54896)|0:0){c[14222]=0;c[14223]=0;c[14224]=0;tO(56888,17564,JI(17564)|0);pB(54896)}return 56888}function II(b){b=b|0;if((a[54888]|0)==0?nB(54888)|0:0){c[14219]=0;c[14220]=0;c[14221]=0;tO(56876,17528,JI(17528)|0);pB(54888)}return 56876}function JI(a){a=a|0;return ly(a)|0}function KI(){var b=0,d=0;if((a[54928]|0)==0?nB(54928)|0:0){d=54032;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54056);pB(54928)}AO(54032,17732)|0;AO(54044,17744)|0;return}function LI(){var b=0,d=0;if((a[54944]|0)==0?nB(54944)|0:0){d=54064;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54352);pB(54944)}AO(54064,17756)|0;AO(54076,17788)|0;AO(54088,17824)|0;AO(54100,17848)|0;AO(54112,17872)|0;AO(54124,17888)|0;AO(54136,17908)|0;AO(54148,17928)|0;AO(54160,17956)|0;AO(54172,17996)|0;AO(54184,18028)|0;AO(54196,18064)|0;AO(54208,18100)|0;AO(54220,18116)|0;AO(54232,18132)|0;AO(54244,18148)|0;AO(54256,17872)|0;AO(54268,18164)|0;AO(54280,18180)|0;AO(54292,18196)|0;AO(54304,18212)|0;AO(54316,18228)|0;AO(54328,18244)|0;AO(54340,18260)|0;return}function MI(){var b=0,d=0;if((a[54960]|0)==0?nB(54960)|0:0){d=54352;do{c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}d=d+12|0}while((d|0)!=54520);pB(54960)}AO(54352,18276)|0;AO(54364,18304)|0;AO(54376,18332)|0;AO(54388,18364)|0;AO(54400,18404)|0;AO(54412,18440)|0;AO(54424,18468)|0;AO(54436,18504)|0;AO(54448,18520)|0;AO(54460,18536)|0;AO(54472,18552)|0;AO(54484,18568)|0;AO(54496,18584)|0;AO(54508,18600)|0;return}function NI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[c[a>>2]>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+168|0,g,f,0)|0)-a|0;if((a|0)<168)c[b>>2]=((a|0)/12|0|0)%7|0;zb=h;return}function OI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=zb;zb=zb+16|0;i=h+4|0;j=h;a=a+8|0;a=Gb[c[(c[a>>2]|0)+4>>2]&127](a)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];a=(gH(d,i,a,a+288|0,g,f,0)|0)-a|0;if((a|0)<288)c[b>>2]=((a|0)/12|0|0)%12|0;zb=h;return}function PI(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=zb;zb=zb+16|0;q=v+12|0;p=v+8|0;s=v+4|0;t=v;IE(q,e);r=XF(q,56768)|0;YF(q);c[f>>2]=0;k=0;a:while(1){j=c[b>>2]|0;if(!((h|0)!=(i|0)&(k|0)==0))break;l=j;if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;m=1;o=0}else{m=0;o=l}}else{j=0;m=1;o=l}n=c[d>>2]|0;k=n;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else l=jE(c[l>>2]|0)|0;if(!(JE(l,iE()|0)|0))if(m)break;else{u=60;break a}else{c[d>>2]=0;k=0;u=15;break}}else u=15;while(0);if((u|0)==15){u=0;if(m){u=60;break}else n=0}b:do if((Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0)<<24>>24==37){n=h+4|0;if((n|0)==(i|0)){u=60;break a}l=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{h=h+8|0;if((h|0)==(i|0)){u=60;break a}m=l;j=Jb[c[(c[r>>2]|0)+52>>2]&63](r,c[h>>2]|0,0)|0;h=n;break}default:{m=0;j=l}}n=c[(c[a>>2]|0)+36>>2]|0;c[s>>2]=o;c[t>>2]=k;c[p>>2]=c[s>>2];c[q>>2]=c[t>>2];o=Qb[n&15](a,p,q,e,f,g,j,m)|0;c[b>>2]=o;h=h+8|0}else{if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0)){l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;o=Ib[c[(c[r>>2]|0)+28>>2]&63](r,k)|0;if((o|0)!=(Ib[c[(c[r>>2]|0)+28>>2]&63](r,c[h>>2]|0)|0)){c[f>>2]=4;break}k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}h=h+4|0;break}do{h=h+4|0;if((h|0)==(i|0)){h=i;break}}while(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,c[h>>2]|0)|0);while(1){if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(JE(k,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}do if(n){k=c[n+12>>2]|0;if((k|0)==(c[n+16>>2]|0))k=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else k=jE(c[k>>2]|0)|0;if(!(JE(k,iE()|0)|0))if(l)break;else break b;else{c[d>>2]=0;u=40;break}}else u=40;while(0);if((u|0)==40){u=0;if(l)break b;else n=0}l=j+12|0;k=c[l>>2]|0;m=j+16|0;if((k|0)==(c[m>>2]|0))k=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else k=jE(c[k>>2]|0)|0;if(!(Jb[c[(c[r>>2]|0)+12>>2]&63](r,8192,k)|0))break b;k=c[l>>2]|0;if((k|0)==(c[m>>2]|0))Gb[c[(c[j>>2]|0)+40>>2]&127](j)|0;else{c[l>>2]=k+4;jE(c[k>>2]|0)|0}}}while(0);k=c[f>>2]|0}if((u|0)==60)c[f>>2]=4;if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Gb[c[(c[j>>2]|0)+36>>2]&127](j)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;j=0;l=1}else l=0}else{j=0;l=1}h=c[d>>2]|0;do if(h){k=c[h+12>>2]|0;if((k|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[k>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(l)break;else{u=75;break}else{c[d>>2]=0;u=73;break}}else u=73;while(0);if((u|0)==73?l:0)u=75;if((u|0)==75)c[f>>2]=c[f>>2]|2;zb=v;return j|0}function QI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<31&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function RI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<24&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function SI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a+-1|0)>>>0<12&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function TI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,3)|0;d=c[f>>2]|0;if((a|0)<366&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function UI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<13&(d&4|0)==0)c[b>>2]=a+-1;else c[f>>2]=d|4;zb=h;return}function VI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<60&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function WI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(!(Jb[c[(c[f>>2]|0)+12>>2]&63](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break;else{i=40;break}else{c[d>>2]=0;i=38;break}}else i=38;while(0);if((i|0)==38?g:0)i=40;if((i|0)==40)c[e>>2]=c[e>>2]|2;return}function XI(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;k=m+4|0;l=m;j=b+8|0;j=Gb[c[(c[j>>2]|0)+8>>2]&127](j)|0;b=a[j+8+3>>0]|0;if(b<<24>>24<0)i=c[j+4>>2]|0;else i=b&255;b=a[j+20+3>>0]|0;if(b<<24>>24<0)b=c[j+16>>2]|0;else b=b&255;do if((i|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k>>2]=c[l>>2];b=(gH(e,k,j,j+24|0,h,g,0)|0)-j|0;i=c[d>>2]|0;if((i|0)==12&(b|0)==0){c[d>>2]=0;break}if((i|0)<12&(b|0)==12)c[d>>2]=i+12}else c[g>>2]=c[g>>2]|4;while(0);zb=m;return}function YI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,2)|0;d=c[f>>2]|0;if((a|0)<61&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function ZI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,1)|0;d=c[f>>2]|0;if((a|0)<7&(d&4|0)==0)c[b>>2]=a;else c[f>>2]=d|4;zb=h;return}function _I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;c[b>>2]=a+-1900}zb=h;return}function $I(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=zb;zb=zb+16|0;a=h+4|0;i=h;c[i>>2]=c[e>>2];c[a>>2]=c[i>>2];a=bJ(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;zb=h;return}function aJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if((Jb[c[(c[f>>2]|0)+52>>2]&63](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0))Gb[c[(c[a>>2]|0)+40>>2]&127](a)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Gb[c[(c[a>>2]|0)+36>>2]&127](a)|0;else a=jE(c[g>>2]|0)|0;if(JE(a,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else a=jE(c[a>>2]|0)|0;if(!(JE(a,iE()|0)|0))if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function bJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[h>>2]|0)|0;if(JE(g,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else g=jE(c[g>>2]|0)|0;if(!(JE(g,iE()|0)|0))if(i){n=17;break}else{n=16;break}else{c[b>>2]=0;n=14;break}}else n=14;while(0);if((n|0)==14)if(i)n=16;else{h=0;n=17}a:do if((n|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((n|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=jE(c[i>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Jb[c[(c[e>>2]|0)+52>>2]&63](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0))Gb[c[(c[i>>2]|0)+40>>2]&127](i)|0;else{c[j>>2]=k+4;jE(c[k>>2]|0)|0}l=h;k=h;while(1){g=g+-48|0;m=f+-1|0;h=c[a>>2]|0;do if(h){i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=jE(c[i>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Gb[c[(c[k>>2]|0)+36>>2]&127](k)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[b>>2]=0;h=1;l=0;k=0}else h=0}else{h=1;k=0}i=c[a>>2]|0;if(!((f|0)>1&(j^h)))break;h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(!(Jb[c[(c[e>>2]|0)+12>>2]&63](e,2048,h)|0))break a;g=(g*10|0)+((Jb[c[(c[e>>2]|0)+52>>2]&63](e,h,0)|0)<<24>>24)|0;h=c[a>>2]|0;i=h+12|0;j=c[i>>2]|0;if((j|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[i>>2]=j+4;jE(c[j>>2]|0)|0}f=m}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Gb[c[(c[i>>2]|0)+36>>2]&127](i)|0;else h=jE(c[h>>2]|0)|0;if(JE(h,iE()|0)|0){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(l){h=c[l+12>>2]|0;if((h|0)==(c[l+16>>2]|0))h=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else h=jE(c[h>>2]|0)|0;if(!(JE(h,iE()|0)|0))if(i)break a;else break;else{c[b>>2]=0;n=61;break}}else n=61;while(0);if((n|0)==61?!i:0)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function cJ(a){a=a|0;hJ(a+8|0);CF(a);return}function dJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function eJ(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=zb;zb=zb+112|0;e=j;f=j+100|0;c[f>>2]=e+100;fJ(b+8|0,e,f,g,h,i);i=c[f>>2]|0;h=e;e=c[d>>2]|0;while(1){if((h|0)==(i|0))break;f=a[h>>0]|0;if(!e)e=0;else{b=e+24|0;g=c[b>>2]|0;if((g|0)==(c[e+28>>2]|0)){d=c[(c[e>>2]|0)+52>>2]|0;f=cg(f)|0;f=Ib[d&63](e,f)|0}else{c[b>>2]=g+1;a[g>>0]=f;f=cg(f)|0}d=_f(f,Wf()|0)|0;e=d?0:e}h=h+1|0}zb=j;return e|0}function fJ(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;i=l;a[i>>0]=37;j=i+1|0;a[j>>0]=g;k=i+2|0;a[k>>0]=h;a[i+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}k=gJ(d,c[e>>2]|0)|0;k=d+(Sa(d|0,k|0,i|0,f|0,c[b>>2]|0)|0)|0;c[e>>2]=k;zb=l;return}function gJ(a,b){a=a|0;b=b|0;return b-a|0}function hJ(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(_F()|0))Vy(c[a>>2]|0);return}function iJ(a){a=a|0;hJ(a+8|0);CF(a);return}function jJ(a){a=a|0;hJ(a+8|0);CF(a);SA(a);return}function kJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=zb;zb=zb+416|0;d=i;e=i+400|0;c[e>>2]=d+400;lJ(a+8|0,d,e,f,g,h);h=c[e>>2]|0;g=d;d=c[b>>2]|0;while(1){if((g|0)==(h|0))break;e=c[g>>2]|0;if(!d)d=0;else{a=d+24|0;f=c[a>>2]|0;if((f|0)==(c[d+28>>2]|0)){b=c[(c[d>>2]|0)+52>>2]|0;e=jE(e)|0;e=Ib[b&63](d,e)|0}else{c[a>>2]=f+4;c[f>>2]=e;e=jE(e)|0}b=JE(e,iE()|0)|0;d=b?0:d}g=g+4|0}zb=i;return d|0}function lJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=zb;zb=zb+128|0;k=h;l=h+116|0;i=h+104|0;j=h+112|0;c[l>>2]=k+100;fJ(a,k,l,e,f,g);e=i;c[e>>2]=0;c[e+4>>2]=0;c[j>>2]=k;e=mJ(b,c[d>>2]|0)|0;a=ez(c[a>>2]|0)|0;e=Sz(b,j,e,i)|0;if(a|0)ez(a)|0;if((e|0)==-1)nJ(0);else{c[d>>2]=b+(e<<2);zb=h;return}}function mJ(a,b){a=a|0;b=b|0;return b-a>>2|0}function nJ(a){a=a|0;ua()}function oJ(a){a=a|0;CF(a);return}function pJ(a){a=a|0;CF(a);SA(a);return}function qJ(a){a=a|0;return 127}function rJ(a){a=a|0;return 127}function sJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function tJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function uJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function vJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function wJ(a){a=a|0;return 0}function xJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function yJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function zJ(a){a=a|0;CF(a);return}function AJ(a){a=a|0;CF(a);SA(a);return}function BJ(a){a=a|0;return 127}function CJ(a){a=a|0;return 127}function DJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function EJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function FJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function GJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;hO(a,1,45);return}function HJ(a){a=a|0;return 0}function IJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function JJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function KJ(a){a=a|0;CF(a);return}function LJ(a){a=a|0;CF(a);SA(a);return}function MJ(a){a=a|0;return 2147483647}function NJ(a){a=a|0;return 2147483647}function OJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function PJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function SJ(a){a=a|0;return 0}function TJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function UJ(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function VJ(a){a=a|0;CF(a);return}function WJ(a){a=a|0;CF(a);SA(a);return}function XJ(a){a=a|0;return 2147483647}function YJ(a){a=a|0;return 2147483647}function ZJ(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function _J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function $J(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function aK(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;uO(a,1,45);return}function bK(a){a=a|0;return 0}function cK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function dK(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function eK(a){a=a|0;CF(a);return}function fK(a){a=a|0;CF(a);SA(a);return}function gK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+256|0;n=v+240|0;q=v+216|0;m=v+112|0;u=v+232|0;p=v+228|0;s=v+224|0;j=v+250|0;w=v+220|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56736)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(jK(d,n,f,s,l,h,j,b,u,p,m+100|0)|0){Kb[c[(c[b>>2]|0)+32>>2]&15](b,50465,50475,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>98){b=FO(b+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+10|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=a[j>>0]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((a[b>>0]|0)==f<<24>>24)break;b=b+1|0}a[g>>0]=a[50465+(b-m)>>0]|0;j=j+1|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[f>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function hK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+128|0;j=s+120|0;b=s;r=s+112|0;m=s+108|0;p=s+100|0;k=s+124|0;n=s+104|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56736)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(jK(d,j,f,p,g,h,k,l,r,m,b+100|0)|0){b=i+11|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;a[j>>0]=0;bg(f,j);c[i+4>>2]=0}else{a[j>>0]=0;bg(i,j);a[b>>0]=0}if(a[k>>0]|0)sO(i,Ib[c[(c[l>>2]|0)+28>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+28>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-1|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((a[b>>0]|0)!=k<<24>>24)break;b=b+1|0}kK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=cg(a[g>>0]|0)|0;if(_f(b,Wf()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=cg(a[b>>0]|0)|0;if(!(_f(b,Wf()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function iK(a){a=a|0;return}function jK(e,f,g,h,i,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=zb;zb=zb+512|0;I=Y+488|0;O=Y;X=Y+480|0;Q=Y+472|0;J=Y+468|0;K=Y+496|0;L=Y+493|0;M=Y+492|0;S=Y+456|0;T=Y+444|0;U=Y+432|0;V=Y+420|0;W=Y+408|0;N=Y+404|0;R=Y+400|0;c[I>>2]=o;c[X>>2]=O;c[X+4>>2]=145;c[Q>>2]=O;c[J>>2]=O+400;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[S+(o<<2)>>2]=0;o=o+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[T+(o<<2)>>2]=0;o=o+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[U+(o<<2)>>2]=0;o=o+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[V+(o<<2)>>2]=0;o=o+1|0}c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;c[W+(o<<2)>>2]=0;o=o+1|0}mK(g,h,K,L,M,S,T,U,V,N);c[n>>2]=c[m>>2];B=l+8|0;C=U+11|0;D=U+4|0;E=V+11|0;F=V+4|0;G=S+11|0;H=S+4|0;v=(i&512|0)!=0;w=T+11|0;x=K+3|0;y=T+4|0;z=W+11|0;A=W+4|0;O=0;u=0;a:while(1){if(u>>>0>=4){P=243;break}o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);g=c[f>>2]|0;do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h){t=g;break}else{P=243;break a}else{c[f>>2]=0;P=31;break}}else P=31;while(0);if((P|0)==31){P=0;if(h){P=243;break}else t=0}b:do switch(a[K+u>>0]|0){case 1:{if((u|0)==3)o=O;else{o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=45;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){P=45;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);P=47}break}case 0:{if((u|0)==3)o=O;else P=47;break}case 3:{o=a[C>>0]|0;o=o<<24>>24<0?c[D>>2]|0:o&255;l=a[E>>0]|0;l=l<<24>>24<0?c[F>>2]|0:l&255;if((o|0)==(0-l|0))o=O;else{i=(o|0)==0;o=c[e>>2]|0;g=c[o+12>>2]|0;h=(g|0)==(c[o+16>>2]|0);if(i|(l|0)==0){if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;o=o&255;if(i){if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=o<<24>>24){o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O;break b}if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)!=o<<24>>24){a[k>>0]=1;o=O;break b}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(h)o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[e>>2]|0;h=g+12|0;l=c[h>>2]|0;i=(l|0)==(c[g+16>>2]|0);if((a[((a[C>>0]|0)<0?c[U>>2]|0:U)>>0]|0)==(o&255)<<24>>24){if(i)Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=l+1;cg(a[l>>0]|0)|0}o=a[C>>0]|0;o=(o<<24>>24<0?c[D>>2]|0:o&255)>>>0>1?U:O;break b}if(i)o=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else o=cg(a[l>>0]|0)|0;if((a[((a[E>>0]|0)<0?c[V>>2]|0:V)>>0]|0)!=(o&255)<<24>>24){P=105;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}a[k>>0]=1;o=a[E>>0]|0;o=(o<<24>>24<0?c[F>>2]|0:o&255)>>>0>1?V:O}break}case 2:{if(u>>>0<2|(O|0)!=0){o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;l=h?g:T;i=l;if(!u)h=i;else{s=i;P=110}}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){o=0;break b}o=a[w>>0]|0;h=o<<24>>24<0;g=c[T>>2]|0;s=h?g:T;l=s;P=110}c:do if((P|0)==110){P=0;if((d[K+(u+-1)>>0]|0)<2){i=l+(h?c[y>>2]|0:o&255)|0;h=s;while(1){p=h;if((i|0)==(p|0))break;q=a[p>>0]|0;if(q<<24>>24<=-1)break;if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192))break;h=p+1|0}q=h-s|0;p=a[z>>0]|0;r=p<<24>>24<0;i=c[A>>2]|0;p=p&255;if(q>>>0<=(r?i:p)>>>0){Z=(c[W>>2]|0)+i|0;i=W+p|0;p=r?Z:i;i=r?Z+(0-q)|0:i+(0-q)|0;while(1){if((i|0)==(p|0))break c;if((a[i>>0]|0)!=(a[l>>0]|0)){h=s;break c}l=l+1|0;i=i+1|0}}else h=s}else h=s}while(0);i=h;h=t;d:while(1){Z=o<<24>>24<0;if((i|0)==((Z?g:T)+(Z?c[y>>2]|0:o&255)|0))break;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else break d;else{c[f>>2]=0;P=136;break}}else P=136;while(0);if((P|0)==136){P=0;if(g)break;else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}i=i+1|0;o=a[w>>0]|0;g=c[T>>2]|0;h=l}if(v?(Z=a[w>>0]|0,t=Z<<24>>24<0,(i|0)!=((t?c[T>>2]|0:T)+(t?c[y>>2]|0:Z&255)|0)):0){P=148;break a}else o=O;break}case 4:{i=0;l=t;o=t;e:while(1){g=c[e>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;if(_f(g,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);do if(l){g=c[l+12>>2]|0;if((g|0)==(c[l+16>>2]|0))g=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else g=cg(a[g>>0]|0)|0;if(!(_f(g,Wf()|0)|0))if(h){p=l;break}else{l=o;break e}else{c[f>>2]=0;o=0;P=162;break}}else P=162;while(0);if((P|0)==162){P=0;if(h){l=o;break}else p=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else g=cg(a[h>>0]|0)|0;h=g&255;if(h<<24>>24>-1?(b[(c[B>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0:0){g=c[n>>2]|0;if((g|0)==(c[I>>2]|0)){nK(m,n,I);g=c[n>>2]|0}c[n>>2]=g+1;a[g>>0]=h;g=i+1|0}else{Z=a[G>>0]|0;if(!((a[M>>0]|0)==h<<24>>24&(i|0?((Z<<24>>24<0?c[H>>2]|0:Z&255)|0)!=0:0))){l=o;break}g=c[Q>>2]|0;if((g|0)==(c[J>>2]|0)){oK(X,Q,J);g=c[Q>>2]|0}c[Q>>2]=g+4;c[g>>2]=i;g=0}h=c[e>>2]|0;l=h+12|0;i=c[l>>2]|0;if((i|0)==(c[h+16>>2]|0))Gb[c[(c[h>>2]|0)+40>>2]&127](h)|0;else{c[l>>2]=i+1;cg(a[i>>0]|0)|0}i=g;l=p}o=c[Q>>2]|0;if(i|0?(c[X>>2]|0)!=(o|0):0){if((o|0)==(c[J>>2]|0)){oK(X,Q,J);o=c[Q>>2]|0}c[Q>>2]=o+4;c[o>>2]=i}f:do if((c[N>>2]|0)>0){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(l){o=c[l+12>>2]|0;if((o|0)==(c[l+16>>2]|0))o=Gb[c[(c[l>>2]|0)+36>>2]&127](l)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g)break;else{P=204;break a}else{c[f>>2]=0;P=198;break}}else P=198;while(0);if((P|0)==198){P=0;if(g){P=204;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[L>>0]|0)!=(o&255)<<24>>24){P=204;break a}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l;while(1){if((c[N>>2]|0)<=0)break f;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{P=230;break a}else{c[f>>2]=0;P=223;break}}else P=223;while(0);if((P|0)==223){P=0;if(g){P=230;break a}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){P=230;break a}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&2048)){P=230;break a}if((c[n>>2]|0)==(c[I>>2]|0))nK(m,n,I);o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;g=c[n>>2]|0;c[n>>2]=g+1;a[g>>0]=o;c[N>>2]=(c[N>>2]|0)+-1;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}h=l}}while(0);if((c[n>>2]|0)==(c[m>>2]|0)){P=241;break a}else o=O;break}default:o=O}while(0);g:do if((P|0)==47){P=0;h=t;while(1){o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;g=1;break}else{g=(c[e>>2]|0)==0;break}}else g=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else o=cg(a[o>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(g){l=h;break}else{o=O;break g}else{c[f>>2]=0;P=61;break}}else P=61;while(0);if((P|0)==61){P=0;if(g){o=O;break g}else l=0}o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((o&255)<<24>>24<=-1){o=O;break g}if(!(b[(c[B>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=O;break g}o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;o=cg(a[h>>0]|0)|0}sO(W,o&255);h=l}}while(0);O=o;u=u+1|0}h:do if((P|0)==45){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==105){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==148){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==204){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==230){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==241){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==243){i:do if(O|0){i=O+11|0;p=O+4|0;l=1;j:while(1){o=a[i>>0]|0;if(o<<24>>24<0)o=c[p>>2]|0;else o=o&255;if(l>>>0>=o>>>0)break i;o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(_f(o,Wf()|0)|0){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);o=c[f>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if(!(_f(o,Wf()|0)|0))if(h)break;else break j;else{c[f>>2]=0;P=262;break}}else P=262;while(0);if((P|0)==262?(P=0,h):0)break;o=c[e>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Gb[c[(c[o>>2]|0)+36>>2]&127](o)|0;else o=cg(a[g>>0]|0)|0;if((a[i>>0]|0)<0)g=c[O>>2]|0;else g=O;if((a[g+l>>0]|0)!=(o&255)<<24>>24)break;o=c[e>>2]|0;g=o+12|0;h=c[g>>2]|0;if((h|0)==(c[o+16>>2]|0))Gb[c[(c[o>>2]|0)+40>>2]&127](o)|0;else{c[g>>2]=h+1;cg(a[h>>0]|0)|0}l=l+1|0}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);g=c[X>>2]|0;o=c[Q>>2]|0;if((g|0)!=(o|0)){c[R>>2]=0;kG(S,g,o,R);if(!(c[R>>2]|0)){g=1;break}else{c[j>>2]=c[j>>2]|4;g=0;break}}else g=1}while(0);jO(W);jO(V);jO(U);jO(T);jO(S);o=c[X>>2]|0;c[X>>2]=0;if(o|0)Sb[c[X+4>>2]&255](o);zb=Y;return g|0}function kK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;j=d;m=o;n=b+11|0;h=a[n>>0]|0;f=h<<24>>24<0;if(f){l=c[b+4>>2]|0;i=(c[b+8>>2]&2147483647)+-1|0}else{l=h&255;i=10}k=e-j|0;do if(k|0){if(f){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=h&255}if(lK(d,g,g+f|0)|0){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;ag(m,d,e);n=a[m+11>>0]|0;l=n<<24>>24<0;rO(b,l?c[m>>2]|0:m,l?c[m+4>>2]|0:n&255)|0;jO(m);break}if((i-l|0)>>>0>>0)qO(b,i,l+k-i|0,l,l,0,0);if((a[n>>0]|0)<0)h=c[b>>2]|0;else h=b;g=e+(l-j)|0;f=h+l|0;while(1){if((d|0)==(e|0))break;bg(f,d);f=f+1|0;d=d+1|0}a[m>>0]=0;bg(h+g|0,m);d=l+k|0;if((a[n>>0]|0)<0){c[b+4>>2]=d;break}else{a[n>>0]=d;break}}while(0);zb=o;return b|0}function lK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function mK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;o=zb;zb=zb+16|0;m=o+12|0;n=o;if(b){d=XF(d,56968)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}else{d=XF(d,56960)|0;Ub[c[(c[d>>2]|0)+44>>2]&63](m,d);b=c[m>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[d>>2]|0)+32>>2]&63](n,d);b=k+11|0;if((a[b>>0]|0)<0){e=c[k>>2]|0;a[m>>0]=0;bg(e,m);c[k+4>>2]=0;if((a[b>>0]|0)<0){e=k+8|0;Pf(c[k>>2]|0,c[e>>2]&2147483647);c[e>>2]=0}}else{a[m>>0]=0;bg(k,m);a[b>>0]=0};c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+28>>2]&63](n,d);b=j+11|0;if((a[b>>0]|0)<0){k=c[j>>2]|0;a[m>>0]=0;bg(k,m);c[j+4>>2]=0;if((a[b>>0]|0)<0){k=j+8|0;Pf(c[j>>2]|0,c[k>>2]&2147483647);c[k>>2]=0}}else{a[m>>0]=0;bg(j,m);a[b>>0]=0};c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+12>>2]&127](d)|0;a[f>>0]=b;b=Gb[c[(c[d>>2]|0)+16>>2]&127](d)|0;a[g>>0]=b;Ub[c[(c[d>>2]|0)+20>>2]&63](n,d);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[m>>0]=0;bg(g,m);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[m>>0]=0;bg(h,m);a[b>>0]=0};c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);Ub[c[(c[d>>2]|0)+24>>2]&63](n,d);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[m>>0]=0;bg(h,m);c[i+4>>2]=0;if((a[b>>0]|0)<0){m=i+8|0;Pf(c[i>>2]|0,c[m>>2]&2147483647);c[m>>2]=0}}else{a[m>>0]=0;bg(i,m);a[b>>0]=0};c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];b=0;while(1){if((b|0)==3)break;c[n+(b<<2)>>2]=0;b=b+1|0}jO(n);b=Gb[c[(c[d>>2]|0)+36>>2]&127](d)|0}c[l>>2]=b;zb=o;return}function nK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?1:g):-1;h=(c[b>>2]|0)-h|0;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+h;c[d>>2]=(c[a>>2]|0)+g;return}function oK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function pK(a){a=a|0;CF(a);return}function qK(a){a=a|0;CF(a);SA(a);return}function rK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+592|0;n=v+512|0;q=v+552|0;m=v+112|0;u=v+568|0;p=v+564|0;s=v+560|0;j=v+576|0;w=v+556|0;o=v;c[u>>2]=m;c[u+4>>2]=145;IE(s,g);b=XF(s,56768)|0;a[j>>0]=0;c[w>>2]=c[e>>2];l=c[g+4>>2]|0;c[n>>2]=c[w>>2];if(tK(d,n,f,s,l,h,j,b,u,p,m+400|0)|0){Kb[c[(c[b>>2]|0)+48>>2]&15](b,50575,50585,n)|0;l=c[p>>2]|0;f=c[u>>2]|0;b=l-f|0;if((b|0)>392){b=FO((b>>>2)+2|0)|0;if(!b)aO();else{k=b;r=b}}else{k=o;r=0}if(!(a[j>>0]|0))b=k;else{a[k>>0]=45;b=k+1|0}k=n+40|0;m=n;j=f;g=b;b=l;while(1){if(j>>>0>=b>>>0)break;f=c[j>>2]|0;b=n;while(1){if((b|0)==(k|0)){b=k;break}if((c[b>>2]|0)==(f|0))break;b=b+4|0}a[g>>0]=a[50575+(b-m>>2)>>0]|0;j=j+4|0;g=g+1|0;b=c[p>>2]|0}a[g>>0]=0;c[q>>2]=i;if((Cz(o,50476,q)|0)!=1)nJ(0);if(r|0)GO(r)}b=c[d>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);b=c[e>>2]|0;do if(b){f=c[b+12>>2]|0;if((f|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[f>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{t=34;break}else{c[e>>2]=0;t=32;break}}else t=32;while(0);if((t|0)==32?g:0)t=34;if((t|0)==34)c[h>>2]=c[h>>2]|2;f=c[d>>2]|0;YF(s);b=c[u>>2]|0;c[u>>2]=0;if(b|0)Sb[c[u+4>>2]&255](b);zb=v;return f|0}function sK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+432|0;j=s+424|0;b=s;r=s+416|0;m=s+408|0;p=s+400|0;k=s+428|0;n=s+404|0;c[r>>2]=b;c[r+4>>2]=145;IE(p,g);l=XF(p,56768)|0;a[k>>0]=0;o=c[e>>2]|0;c[n>>2]=o;g=c[g+4>>2]|0;c[j>>2]=c[n>>2];n=o;if(tK(d,j,f,p,g,h,k,l,r,m,b+400|0)|0){b=i+8+3|0;if((a[b>>0]|0)<0){f=c[i>>2]|0;c[j>>2]=0;JF(f,j);c[i+4>>2]=0}else{c[j>>2]=0;JF(i,j);a[b>>0]=0}if(a[k>>0]|0)DO(i,Ib[c[(c[l>>2]|0)+44>>2]&63](l,45)|0);k=Ib[c[(c[l>>2]|0)+44>>2]&63](l,48)|0;g=c[m>>2]|0;j=g+-4|0;b=c[r>>2]|0;while(1){if(b>>>0>=j>>>0)break;if((c[b>>2]|0)!=(k|0))break;b=b+4|0}uK(i,b,g)|0}b=c[d>>2]|0;do if(b){g=c[b+12>>2]|0;if((g|0)==(c[b+16>>2]|0))b=Gb[c[(c[b>>2]|0)+36>>2]&127](b)|0;else b=jE(c[g>>2]|0)|0;if(JE(b,iE()|0)|0){c[d>>2]=0;g=1;break}else{g=(c[d>>2]|0)==0;break}}else g=1;while(0);do if(o){b=c[n+12>>2]|0;if((b|0)==(c[n+16>>2]|0))b=Gb[c[(c[o>>2]|0)+36>>2]&127](n)|0;else b=jE(c[b>>2]|0)|0;if(!(JE(b,iE()|0)|0))if(g)break;else{q=27;break}else{c[e>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?g:0)q=27;if((q|0)==27)c[h>>2]=c[h>>2]|2;g=c[d>>2]|0;YF(p);b=c[r>>2]|0;c[r>>2]=0;if(b|0)Sb[c[r+4>>2]&255](b);zb=s;return g|0}function tK(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;X=zb;zb=zb+512|0;H=X+496|0;N=X;W=X+488|0;P=X+480|0;I=X+476|0;J=X+500|0;K=X+472|0;L=X+468|0;R=X+456|0;S=X+444|0;T=X+432|0;U=X+420|0;V=X+408|0;M=X+404|0;Q=X+400|0;c[H>>2]=n;c[W>>2]=N;c[W+4>>2]=145;c[P>>2]=N;c[I>>2]=N+400;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[R+(n<<2)>>2]=0;n=n+1|0}c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[S+(n<<2)>>2]=0;n=n+1|0}c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[T+(n<<2)>>2]=0;n=n+1|0}c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[U+(n<<2)>>2]=0;n=n+1|0}c[V>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[V+(n<<2)>>2]=0;n=n+1|0}xK(f,g,J,K,L,R,S,T,U,M);c[m>>2]=c[l>>2];B=T+8+3|0;C=T+4|0;D=U+8+3|0;E=U+4|0;F=R+11|0;G=R+4|0;v=(h&512|0)!=0;w=S+8+3|0;x=J+3|0;y=S+4|0;z=V+8+3|0;A=V+4|0;N=0;u=0;a:while(1){if(u>>>0>=4){O=239;break}n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g){t=f;break}else{O=239;break a}else{c[e>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(g){O=239;break}else t=0}b:do switch(a[J+u>>0]|0){case 1:{if((u|0)==3)n=N;else{n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){O=44;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);O=46}break}case 0:{if((u|0)==3)n=N;else O=46;break}case 3:{n=a[B>>0]|0;n=n<<24>>24<0?c[C>>2]|0:n&255;h=a[D>>0]|0;h=h<<24>>24<0?c[E>>2]|0:h&255;if((n|0)==(0-h|0))n=N;else{o=(n|0)==0;n=c[b>>2]|0;f=c[n+12>>2]|0;g=(f|0)==(c[n+16>>2]|0);if(o|(h|0)==0){if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(o){if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){a[j>>0]=1;n=N;break b}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(g)n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;o=(h|0)==(c[f+16>>2]|0);if((n|0)==(c[((a[B>>0]|0)<0?c[T>>2]|0:T)>>2]|0)){if(o)Gb[c[(c[f>>2]|0)+40>>2]&127](f)|0;else{c[g>>2]=h+4;jE(c[h>>2]|0)|0}n=a[B>>0]|0;n=(n<<24>>24<0?c[C>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=jE(c[h>>2]|0)|0;if((n|0)!=(c[((a[D>>0]|0)<0?c[U>>2]|0:U)>>2]|0)){O=103;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}a[j>>0]=1;n=a[D>>0]|0;n=(n<<24>>24<0?c[E>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(u>>>0<2|(N|0)!=0){f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;if(u)O=108}else{if(!(v|(u|0)==2&(a[x>>0]|0)!=0)){n=0;break b}f=a[w>>0]|0;g=c[S>>2]|0;n=f<<24>>24<0?g:S;O=108}c:do if((O|0)==108){O=0;if((d[J+(u+-1)>>0]|0)<2){h=f;while(1){s=h<<24>>24<0;f=n;if(((s?g:S)+((s?c[y>>2]|0:h&255)<<2)|0)==(f|0)){f=h;break}if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,c[f>>2]|0)|0)){O=112;break}n=f+4|0;h=a[w>>0]|0;g=c[S>>2]|0}if((O|0)==112){O=0;f=a[w>>0]|0;g=c[S>>2]|0}o=f<<24>>24<0?g:S;s=o;q=n-s>>2;p=a[z>>0]|0;r=p<<24>>24<0;h=c[A>>2]|0;p=p&255;if(q>>>0>(r?h:p)>>>0)n=s;else{Y=(c[V>>2]|0)+(h<<2)|0;h=V+(p<<2)|0;p=r?Y:h;h=(r?Y:h)+(0-q<<2)|0;while(1){if((h|0)==(p|0))break c;if((c[h>>2]|0)!=(c[o>>2]|0)){n=s;break c}o=o+4|0;h=h+4|0}}}}while(0);o=n;h=t;d:while(1){Y=f<<24>>24<0;if((o|0)==((Y?g:S)+((Y?c[y>>2]|0:f&255)<<2)|0))break;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else break d;else{c[e>>2]=0;O=134;break}}else O=134;while(0);if((O|0)==134){O=0;if(f)break;else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[o>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}o=o+4|0;f=a[w>>0]|0;g=c[S>>2]|0}if(v?(Y=a[w>>0]|0,t=Y<<24>>24<0,(o|0)!=((t?c[S>>2]|0:S)+((t?c[y>>2]|0:Y&255)<<2)|0)):0){O=146;break a}else n=N;break}case 4:{o=0;h=t;n=t;e:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=jE(c[g>>2]|0)|0;if(JE(f,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))f=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else f=jE(c[f>>2]|0)|0;if(!(JE(f,iE()|0)|0))if(g){p=h;break}else{h=n;break e}else{c[e>>2]=0;n=0;O=160;break}}else O=160;while(0);if((O|0)==160){O=0;if(g){h=n;break}else p=0}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Gb[c[(c[f>>2]|0)+36>>2]&127](f)|0;else g=jE(c[g>>2]|0)|0;if(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,g)|0){f=c[m>>2]|0;if((f|0)==(c[H>>2]|0)){yK(l,m,H);f=c[m>>2]|0}c[m>>2]=f+4;c[f>>2]=g;f=o+1|0}else{Y=a[F>>0]|0;if(!((g|0)==(c[L>>2]|0)&(o|0?((Y<<24>>24<0?c[G>>2]|0:Y&255)|0)!=0:0))){h=n;break}f=c[P>>2]|0;if((f|0)==(c[I>>2]|0)){oK(W,P,I);f=c[P>>2]|0}c[P>>2]=f+4;c[f>>2]=o;f=0}g=c[b>>2]|0;h=g+12|0;o=c[h>>2]|0;if((o|0)==(c[g+16>>2]|0))Gb[c[(c[g>>2]|0)+40>>2]&127](g)|0;else{c[h>>2]=o+4;jE(c[o>>2]|0)|0}o=f;h=p}n=c[P>>2]|0;if(o|0?(c[W>>2]|0)!=(n|0):0){if((n|0)==(c[I>>2]|0)){oK(W,P,I);n=c[P>>2]|0}c[P>>2]=n+4;c[n>>2]=o}f:do if((c[M>>2]|0)>0){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){n=c[h+12>>2]|0;if((n|0)==(c[h+16>>2]|0))n=Gb[c[(c[h>>2]|0)+36>>2]&127](h)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f)break;else{O=201;break a}else{c[e>>2]=0;O=195;break}}else O=195;while(0);if((O|0)==195){O=0;if(f){O=201;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((n|0)!=(c[K>>2]|0)){O=201;break a}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h;while(1){if((c[M>>2]|0)<=0)break f;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{O=226;break a}else{c[e>>2]=0;O=220;break}}else O=220;while(0);if((O|0)==220){O=0;if(f){O=226;break a}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,2048,n)|0)){O=226;break a}if((c[m>>2]|0)==(c[H>>2]|0))yK(l,m,H);n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;f=c[m>>2]|0;c[m>>2]=f+4;c[f>>2]=n;c[M>>2]=(c[M>>2]|0)+-1;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}g=h}}while(0);if((c[m>>2]|0)==(c[l>>2]|0)){O=237;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==46){O=0;g=t;while(1){n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(g){n=c[g+12>>2]|0;if((n|0)==(c[g+16>>2]|0))n=Gb[c[(c[g>>2]|0)+36>>2]&127](g)|0;else n=jE(c[n>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(f){h=g;break}else{n=N;break g}else{c[e>>2]=0;O=60;break}}else O=60;while(0);if((O|0)==60){O=0;if(f){n=N;break g}else h=0}n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(Jb[c[(c[k>>2]|0)+12>>2]&63](k,8192,n)|0)){n=N;break g}n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;n=jE(c[g>>2]|0)|0}DO(V,n);g=h}}while(0);N=n;u=u+1|0}h:do if((O|0)==44){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==103){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==146){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==201){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==226){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==237){c[i>>2]=c[i>>2]|4;f=0}else if((O|0)==239){i:do if(N|0){o=N+8+3|0;p=N+4|0;h=1;j:while(1){n=a[o>>0]|0;if(n<<24>>24<0)n=c[p>>2]|0;else n=n&255;if(h>>>0>=n>>>0)break i;n=c[b>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(JE(n,iE()|0)|0){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);n=c[e>>2]|0;do if(n){f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if(!(JE(n,iE()|0)|0))if(g)break;else break j;else{c[e>>2]=0;O=258;break}}else O=258;while(0);if((O|0)==258?(O=0,g):0)break;n=c[b>>2]|0;f=c[n+12>>2]|0;if((f|0)==(c[n+16>>2]|0))n=Gb[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=jE(c[f>>2]|0)|0;if((a[o>>0]|0)<0)f=c[N>>2]|0;else f=N;if((n|0)!=(c[f+(h<<2)>>2]|0))break;n=c[b>>2]|0;f=n+12|0;g=c[f>>2]|0;if((g|0)==(c[n+16>>2]|0))Gb[c[(c[n>>2]|0)+40>>2]&127](n)|0;else{c[f>>2]=g+4;jE(c[g>>2]|0)|0}h=h+1|0}c[i>>2]=c[i>>2]|4;f=0;break h}while(0);f=c[W>>2]|0;n=c[P>>2]|0;if((f|0)!=(n|0)){c[Q>>2]=0;kG(R,f,n,Q);if(!(c[Q>>2]|0)){f=1;break}else{c[i>>2]=c[i>>2]|4;f=0;break}}else f=1}while(0);wO(V);wO(U);wO(T);wO(S);jO(R);n=c[W>>2]|0;c[W>>2]=0;if(n|0)Sb[c[W+4>>2]&255](n);zb=X;return f|0}function uK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;k=n;f=b+8|0;m=f+3|0;i=a[m>>0]|0;g=i<<24>>24<0;if(g){l=c[b+4>>2]|0;h=(c[f>>2]&2147483647)+-1|0}else{l=i&255;h=1}f=e-d|0;j=f>>2;do if(f|0){if(g){g=c[b>>2]|0;f=c[b+4>>2]|0}else{g=b;f=i&255}if(vK(d,g,g+(f<<2)|0)|0){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;wK(k,d,e);m=a[k+8+3>>0]|0;l=m<<24>>24<0;CO(b,l?c[k>>2]|0:k,l?c[k+4>>2]|0:m&255)|0;wO(k);break}if((h-l|0)>>>0>>0)BO(b,h,l+j-h|0,l,l,0,0);if((a[m>>0]|0)<0)f=c[b>>2]|0;else f=b;f=f+(l<<2)|0;while(1){if((d|0)==(e|0))break;JF(f,d);f=f+4|0;d=d+4|0}c[k>>2]=0;JF(f,k);d=l+j|0;if((a[m>>0]|0)<0){c[b+4>>2]=d;break}else{a[m>>0]=d;break}}while(0);zb=n;return b|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0>>0|0}function wK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;h=e-d>>2;if(h>>>0>1073741807)eO(b);do if(h>>>0>=2){g=h+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=h;break}}else{a[b+8+3>>0]=h;f=b}while(0);while(1){if((d|0)==(e|0))break;JF(f,d);d=d+4|0;f=f+4|0}c[i>>2]=0;JF(f,i);zb=j;return}function xK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(d,56984)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(d,56976)|0;Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[e>>0]=b;a[e+1>>0]=b>>8;a[e+2>>0]=b>>16;a[e+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;d=b+3|0;if((a[d>>0]|0)<0){e=c[k>>2]|0;c[n>>2]=0;JF(e,n);c[k+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[d>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=j+8|0;d=b+3|0;if((a[d>>0]|0)<0){k=c[j>>2]|0;c[n>>2]=0;JF(k,n);c[j+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[d>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[f>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[g>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=h+11|0;if((a[b>>0]|0)<0){g=c[h>>2]|0;a[n>>0]=0;bg(g,n);c[h+4>>2]=0;if((a[b>>0]|0)<0){g=h+8|0;Pf(c[h>>2]|0,c[g>>2]&2147483647);c[g>>2]=0}}else{a[n>>0]=0;bg(h,n);a[b>>0]=0};c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=i+8|0;d=b+3|0;if((a[d>>0]|0)<0){h=c[i>>2]|0;c[n>>2]=0;JF(h,n);c[i+4>>2]=0;if((a[d>>0]|0)<0){Pf(c[i>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(i,n);a[d>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function yK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;f=(c[i>>2]|0)!=145;e=c[a>>2]|0;h=e;j=(c[d>>2]|0)-h|0;g=j<<1;g=j>>>0<2147483647?((g|0)==0?4:g):-1;h=(c[b>>2]|0)-h>>2;e=IO(f?e:0,g)|0;if(!e)aO();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Sb[c[i>>2]&255](f);e=c[a>>2]|0}}else c[a>>2]=e;c[i>>2]=146;c[b>>2]=e+(h<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function zK(a){a=a|0;CF(a);return}function AK(a){a=a|0;CF(a);SA(a);return}function BK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+416|0;q=E+336|0;k=E+328|0;b=E+224|0;l=E+400|0;j=E+112|0;D=E+396|0;r=E+408|0;s=E+405|0;t=E+404|0;A=E+384|0;B=E+372|0;C=E+360|0;o=E+356|0;p=E;u=E+352|0;v=E+344|0;w=E+348|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56736)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+32>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}DK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+11>>0]|0;b=a[B+11>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}EK(y,u,v,c[f+4>>2]|0,x,x+z|0,n,m,r,a[s>>0]|0,a[t>>0]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=$f(q,y,d,b,f,h)|0;if(F|0)GO(F);jO(C);jO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function CK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+176|0;p=C+156|0;B=C+152|0;u=C+164|0;v=C+161|0;w=C+160|0;y=C+140|0;z=C+128|0;A=C+116|0;l=C+112|0;n=C;q=C+108|0;r=C+104|0;s=C+100|0;IE(B,f);t=XF(B,56736)|0;i=h+11|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=a[(b?c[h>>2]|0:h)>>0]|0;o=o<<24>>24==(Ib[c[(c[t>>2]|0)+28>>2]&63](t,45)|0)<<24>>24};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}DK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+11>>0]|0;b=a[z+11>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;EK(x,q,r,c[f+4>>2]|0,h,h+k|0,t,o,u,a[v>>0]|0,a[w>>0]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=$f(p,x,h,b,f,g)|0;if(D|0)GO(D);jO(A);jO(z);jO(y);YF(B);zb=C;return b|0}function DK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56968)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56960)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+11|0;if((a[b>>0]|0)<0){f=c[k>>2]|0;a[n>>0]=0;bg(f,n);c[k+4>>2]=0;if((a[b>>0]|0)<0){f=k+8|0;Pf(c[k>>2]|0,c[f>>2]&2147483647);c[f>>2]=0}}else{a[n>>0]=0;bg(k,n);a[b>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);e=m}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;a[g>>0]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;a[h>>0]=b;Ub[c[(c[e>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[e>>2]|0)+24>>2]&63](o,m);b=j+11|0;if((a[b>>0]|0)<0){i=c[j>>2]|0;a[n>>0]=0;bg(i,n);c[j+4>>2]=0;if((a[b>>0]|0)<0){n=j+8|0;Pf(c[j>>2]|0,c[n>>2]&2147483647);c[n>>2]=0}}else{a[n>>0]=0;bg(j,n);a[b>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function EK(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c[f>>2]=d;y=q+11|0;G=q+4|0;z=p+11|0;A=p+4|0;B=(g&512|0)==0;C=j+8|0;D=(r|0)>0;E=o+11|0;F=o+4|0;x=0;while(1){if((x|0)==4)break;a:do switch(a[l+x>>0]|0){case 0:{c[e>>2]=c[f>>2];break}case 1:{c[e>>2]=c[f>>2];v=Ib[c[(c[j>>2]|0)+28>>2]&63](j,32)|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v;break}case 3:{w=a[y>>0]|0;s=w<<24>>24<0;if((s?c[G>>2]|0:w&255)|0){v=a[(s?c[q>>2]|0:q)>>0]|0;w=c[f>>2]|0;c[f>>2]=w+1;a[w>>0]=v}break}case 2:{t=a[z>>0]|0;s=t<<24>>24<0;t=s?c[A>>2]|0:t&255;if(!(B|(t|0)==0)){w=s?c[p>>2]|0:p;u=w+t|0;s=c[f>>2]|0;t=w;while(1){if((t|0)==(u|0))break;a[s>>0]=a[t>>0]|0;s=s+1|0;t=t+1|0}c[f>>2]=s}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;u=h;while(1){if(u>>>0>=i>>>0)break;s=a[u>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[C>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(D){v=r;while(1){s=(v|0)>0;if(!(u>>>0>h>>>0&s))break;w=u+-1|0;H=a[w>>0]|0;s=c[f>>2]|0;c[f>>2]=s+1;a[s>>0]=H;v=v+-1|0;u=w}if(s)w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;else w=0;s=v;while(1){v=c[f>>2]|0;c[f>>2]=v+1;if((s|0)<=0)break;a[v>>0]=w;s=s+-1|0}a[v>>0]=m}b:do if((u|0)==(h|0)){w=Ib[c[(c[j>>2]|0)+28>>2]&63](j,48)|0;H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=w}else{H=a[E>>0]|0;s=H<<24>>24<0;if(!((s?c[F>>2]|0:H&255)|0))s=-1;else s=a[(s?c[o>>2]|0:o)>>0]|0;v=0;w=0;while(1){if((u|0)==(h|0))break b;if((w|0)==(s|0)){H=c[f>>2]|0;c[f>>2]=H+1;a[H>>0]=n;v=v+1|0;H=a[E>>0]|0;s=H<<24>>24<0;if(v>>>0<(s?c[F>>2]|0:H&255)>>>0){s=a[(s?c[o>>2]|0:o)+v>>0]|0;s=s<<24>>24==127?-1:s<<24>>24;w=0}else{s=w;w=0}}H=u+-1|0;J=a[H>>0]|0;I=c[f>>2]|0;c[f>>2]=I+1;a[I>>0]=J;w=w+1|0;u=H}}while(0);s=c[f>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=a[t>>0]|0;a[t>>0]=a[s>>0]|0;a[s>>0]=J;t=t+1|0}break}default:{}}while(0);x=x+1|0}h=a[y>>0]|0;s=h<<24>>24<0;h=s?c[G>>2]|0:h&255;if(h>>>0>1){J=s?c[q>>2]|0:q;t=J+h|0;s=c[f>>2]|0;h=J;while(1){h=h+1|0;if((h|0)==(t|0))break;a[s>>0]=a[h>>0]|0;s=s+1|0}c[f>>2]=s}switch((g&176)<<24>>24){case 32:{c[e>>2]=c[f>>2];break}case 16:break;default:c[e>>2]=d}return}function FK(a){a=a|0;CF(a);return}function GK(a){a=a|0;CF(a);SA(a);return}function HK(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=zb;zb=zb+992|0;q=E+912|0;k=E+904|0;b=E+800|0;l=E+984|0;j=E+400|0;D=E+980|0;r=E+988|0;s=E+976|0;t=E+972|0;A=E+960|0;B=E+948|0;C=E+936|0;o=E+932|0;p=E;u=E+928|0;v=E+920|0;w=E+924|0;c[l>>2]=b;g[q>>3]=i;b=bz(b,100,50681,q)|0;if(b>>>0>99){b=_F()|0;g[k>>3]=i;b=uH(l,b,50681,k)|0;j=c[l>>2]|0;if(!j)aO();k=FO(b<<2)|0;if(!k)aO();else{x=k;z=b;G=k;H=j}}else{x=j;z=b;G=0;H=0}IE(D,f);n=XF(D,56768)|0;m=c[l>>2]|0;Kb[c[(c[n>>2]|0)+48>>2]&15](n,m,m+z|0,x)|0;if(!z)m=0;else m=(a[c[l>>2]>>0]|0)==45;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[B+(b<<2)>>2]=0;b=b+1|0}c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[C+(b<<2)>>2]=0;b=b+1|0}JK(e,m,D,r,s,t,A,B,C,o);l=c[o>>2]|0;if((z|0)>(l|0)){k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+1+(z-l<<1)|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}else{k=a[C+8+3>>0]|0;b=a[B+8+3>>0]|0;b=b<<24>>24<0?c[B+4>>2]|0:b&255;j=l+2|0;k=k<<24>>24<0?c[C+4>>2]|0:k&255}b=j+k+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{y=b;F=b}}else{y=p;F=0}KK(y,u,v,c[f+4>>2]|0,x,x+(z<<2)|0,n,m,r,c[s>>2]|0,c[t>>2]|0,A,B,C,l);c[w>>2]=c[d>>2];d=c[u>>2]|0;b=c[v>>2]|0;c[q>>2]=c[w>>2];b=IH(q,y,d,b,f,h)|0;if(F|0)GO(F);wO(C);wO(B);jO(A);YF(D);if(G|0)GO(G);if(H|0)GO(H);zb=E;return b|0}function IK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=zb;zb=zb+480|0;p=C+464|0;B=C+460|0;u=C+468|0;v=C+456|0;w=C+452|0;y=C+440|0;z=C+428|0;A=C+416|0;l=C+412|0;n=C;q=C+408|0;r=C+404|0;s=C+400|0;IE(B,f);t=XF(B,56768)|0;i=h+8+3|0;o=a[i>>0]|0;b=o<<24>>24<0;j=h+4|0;if(!((b?c[j>>2]|0:o&255)|0))o=0;else{o=c[(b?c[h>>2]|0:h)>>2]|0;o=(o|0)==(Ib[c[(c[t>>2]|0)+44>>2]&63](t,45)|0)};c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[y+(b<<2)>>2]=0;b=b+1|0}c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[z+(b<<2)>>2]=0;b=b+1|0}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[A+(b<<2)>>2]=0;b=b+1|0}JK(e,o,B,u,v,w,y,z,A,l);k=a[i>>0]|0;m=k<<24>>24<0;k=m?c[j>>2]|0:k&255;j=c[l>>2]|0;if((k|0)>(j|0)){e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+1+(k-j<<1)|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}else{e=a[A+8+3>>0]|0;b=a[z+8+3>>0]|0;b=b<<24>>24<0?c[z+4>>2]|0:b&255;i=j+2|0;e=e<<24>>24<0?c[A+4>>2]|0:e&255}b=i+e+b|0;if(b>>>0>100){b=FO(b<<2)|0;if(!b)aO();else{x=b;D=b}}else{x=n;D=0}h=m?c[h>>2]|0:h;KK(x,q,r,c[f+4>>2]|0,h,h+(k<<2)|0,t,o,u,c[v>>2]|0,c[w>>2]|0,y,z,A,j);c[s>>2]=c[d>>2];h=c[q>>2]|0;b=c[r>>2]|0;c[p>>2]=c[s>>2];b=IH(p,x,h,b,f,g)|0;if(D|0)GO(D);wO(A);wO(z);jO(y);YF(B);zb=C;return b|0}function JK(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;n=p+12|0;o=p;if(b){m=XF(e,56984)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}else{m=XF(e,56976)|0;if(d){Ub[c[(c[m>>2]|0)+44>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+32>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}else{Ub[c[(c[m>>2]|0)+40>>2]&63](n,m);b=c[n>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;Ub[c[(c[m>>2]|0)+28>>2]&63](o,m);b=k+8|0;e=b+3|0;if((a[e>>0]|0)<0){f=c[k>>2]|0;c[n>>2]=0;JF(f,n);c[k+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[k>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(k,n);a[e>>0]=0};c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o)}b=Gb[c[(c[m>>2]|0)+12>>2]&127](m)|0;c[g>>2]=b;b=Gb[c[(c[m>>2]|0)+16>>2]&127](m)|0;c[h>>2]=b;Ub[c[(c[m>>2]|0)+20>>2]&63](o,m);b=i+11|0;if((a[b>>0]|0)<0){h=c[i>>2]|0;a[n>>0]=0;bg(h,n);c[i+4>>2]=0;if((a[b>>0]|0)<0){h=i+8|0;Pf(c[i>>2]|0,c[h>>2]&2147483647);c[h>>2]=0}}else{a[n>>0]=0;bg(i,n);a[b>>0]=0};c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}jO(o);Ub[c[(c[m>>2]|0)+24>>2]&63](o,m);b=j+8|0;e=b+3|0;if((a[e>>0]|0)<0){i=c[j>>2]|0;c[n>>2]=0;JF(i,n);c[j+4>>2]=0;if((a[e>>0]|0)<0){Pf(c[j>>2]|0,c[b>>2]<<2);c[b>>2]=0}}else{c[n>>2]=0;JF(j,n);a[e>>0]=0};c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];b=0;while(1){if((b|0)==3)break;c[o+(b<<2)>>2]=0;b=b+1|0}wO(o);b=Gb[c[(c[m>>2]|0)+36>>2]&127](m)|0}c[l>>2]=b;zb=p;return}function KK(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[e>>2]=b;z=p+8+3|0;G=p+4|0;A=o+8+3|0;B=o+4|0;C=(f&512|0)==0;D=(q|0)>0;E=n+11|0;F=n+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(a[k+y>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w;break}case 3:{x=a[z>>0]|0;r=x<<24>>24<0;if((r?c[G>>2]|0:x&255)|0){w=c[(r?c[p>>2]|0:p)>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=w}break}case 2:{v=a[A>>0]|0;r=v<<24>>24<0;v=r?c[B>>2]|0:v&255;if(!(C|(v|0)==0)){u=r?c[o>>2]|0:o;s=u+(v<<2)|0;t=c[e>>2]|0;r=t;while(1){if((u|0)==(s|0))break;c[r>>2]=c[u>>2];r=r+4|0;u=u+4|0}c[e>>2]=t+(v<<2)}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;r=g;while(1){if(r>>>0>=h>>>0)break;if(!(Jb[c[(c[i>>2]|0)+12>>2]&63](i,2048,c[r>>2]|0)|0))break;r=r+4|0}if(D){u=q;while(1){t=(u|0)>0;if(!(r>>>0>g>>>0&t))break;x=r+-4|0;v=c[x>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=v;u=u+-1|0;r=x}if(t)w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;else w=0;v=c[e>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;c[v>>2]=w;u=u+-1|0;v=t}c[e>>2]=t;c[v>>2]=l;t=r}else t=r;if((t|0)==(g|0)){w=Ib[c[(c[i>>2]|0)+44>>2]&63](i,48)|0;x=c[e>>2]|0;r=x+4|0;c[e>>2]=r;c[x>>2]=w}else{x=a[E>>0]|0;r=x<<24>>24<0;if(!((r?c[F>>2]|0:x&255)|0))r=-1;else r=a[(r?c[n>>2]|0:n)>>0]|0;u=0;v=0;x=t;while(1){if((x|0)==(g|0))break;t=c[e>>2]|0;if((v|0)==(r|0)){w=t+4|0;c[e>>2]=w;c[t>>2]=m;t=u+1|0;u=a[E>>0]|0;r=u<<24>>24<0;if(t>>>0<(r?c[F>>2]|0:u&255)>>>0){r=a[(r?c[n>>2]|0:n)+t>>0]|0;r=r<<24>>24==127?-1:r<<24>>24;u=t;v=0;t=w}else{r=v;u=t;v=0;t=w}}w=x+-4|0;H=c[w>>2]|0;c[e>>2]=t+4;c[t>>2]=H;v=v+1|0;x=w}r=c[e>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;H=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=H;s=s+4|0}break}default:{}}while(0);y=y+1|0}r=a[z>>0]|0;g=r<<24>>24<0;r=g?c[G>>2]|0:r&255;if(r>>>0>1){s=c[p>>2]|0;u=g?s+4|0:G;r=(g?s:p)+(r<<2)|0;s=c[e>>2]|0;t=r-u|0;g=s;while(1){if((u|0)==(r|0))break;c[g>>2]=c[u>>2];g=g+4|0;u=u+4|0}c[e>>2]=s+(t>>>2<<2)}switch((f&176)<<24>>24){case 32:{c[d>>2]=c[e>>2];break}case 16:break;default:c[d>>2]=b}return}function LK(a){a=a|0;CF(a);return}function MK(a){a=a|0;CF(a);SA(a);return}function NK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function OK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0}k=a[h+11>>0]|0;l=k<<24>>24<0;d=l?c[h>>2]|0:h;h=d+(l?c[h+4>>2]|0:k&255)|0;while(1){if(d>>>0>=h>>>0)break;sO(i,a[d>>0]|0);d=d+1|0}d=(a[i+11>>0]|0)<0?c[i>>2]|0:i;e=Oy((e|0)==-1?-1:e<<1,f,g,d)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break;c[b+(h<<2)>>2]=0;h=h+1|0}h=d+(Qy(e)|0)|0;while(1){if(d>>>0>=h>>>0)break;sO(b,a[d>>0]|0);d=d+1|0}jO(i);zb=j;return}function PK(a,b){a=a|0;b=b|0;return}function QK(a){a=a|0;CF(a);return}function RK(a){a=a|0;CF(a);SA(a);return}function SK(b,d,e){b=b|0;d=d|0;e=e|0;e=Py((a[d+11>>0]|0)<0?c[d>>2]|0:d,1)|0;return e>>>((e|0)!=(-1|0)&1)|0}function TK(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+176|0;p=t+168|0;q=t;r=t+164|0;s=t+160|0;n=t+128|0;l=t+152|0;o=t+144|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0}c[l+4>>2]=0;c[l>>2]=19072;j=a[h+8+3>>0]|0;k=j<<24>>24<0;d=k?c[h>>2]|0:h;j=d+((k?c[h+4>>2]|0:j&255)<<2)|0;k=q+32|0;h=d;d=0;while(1){if(!((d|0)!=2&h>>>0>>0))break;c[s>>2]=h;i=Qb[c[(c[l>>2]|0)+12>>2]&15](l,p,h,j,s,q,k,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=8;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;sO(n,a[d>>0]|0);d=d+1|0}h=c[s>>2]|0;d=i}if((m|0)==8)nJ(0);CF(l);i=(a[n+11>>0]|0)<0?c[n>>2]|0:n;h=Oy((e|0)==-1?-1:e<<1,f,g,i)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0}c[o+4>>2]=0;c[o>>2]=19120;j=i+(Qy(h)|0)|0;k=j;l=q+128|0;h=i;d=0;while(1){if(!((d|0)!=2&h>>>0>>0)){m=23;break}c[s>>2]=h;i=Qb[c[(c[o>>2]|0)+16>>2]&15](o,p,h,(k-h|0)>32?h+32|0:j,s,q,l,r)|0;if((i|0)==2?1:(c[s>>2]|0)==(h|0)){m=19;break}d=q;while(1){if(d>>>0>=(c[r>>2]|0)>>>0)break;DO(b,c[d>>2]|0);d=d+4|0}h=c[s>>2]|0;d=i}if((m|0)==19)nJ(0);else if((m|0)==23){CF(o);jO(n);zb=t;return}}function UK(a,b){a=a|0;b=b|0;return}function VK(a){a=a|0;CF(a);SA(a);return}function WK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=dL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function XK(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=cL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function YK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function ZK(a){a=a|0;return 0}function _K(a){a=a|0;return 0}function $K(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return bL(c,d,e,1114111,0)|0}function aL(a){a=a|0;return 4}function bL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;n=0;a:while(1){if(!(n>>>0>>0&g>>>0>>0))break;k=a[g>>0]|0;m=k&255;do if(k<<24>>24<=-1){if((k&255)<194)break a;if((k&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((k&255)<240){if((o-g|0)<3)break a;i=a[g+1>>0]|0;h=a[g+2>>0]|0;switch(k<<24>>24){case -32:{if((i&-32)<<24>>24!=-96)break a;break}case -19:{if((i&-32)<<24>>24!=-128)break a;break}default:if((i&-64)<<24>>24!=-128)break a}h=h&255;if((h&192|0)!=128)break a;if(((i&63)<<6|m<<12&61440|h&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((k&255)>=245)break a;if((o-g|0)<4)break a;l=a[g+1>>0]|0;h=a[g+2>>0]|0;j=a[g+3>>0]|0;switch(k<<24>>24){case -16:{if((l+112&255)>=48)break a;break}case -12:{if((l&-16)<<24>>24!=-128)break a;break}default:if((l&-64)<<24>>24!=-128)break a}i=h&255;if((i&192|0)!=128)break a;h=j&255;if((h&192|0)!=128)break a;if(((l&63)<<12|m<<18&1835008|i<<6&4032|h&63)>>>0>f>>>0)break a;else g=g+4|0}else{if(m>>>0>f>>>0)break a;g=g+1|0}while(0);n=n+1|0}return g-b|0}function cL(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;if(k&4){b=c[f>>2]|0;g=e;if((((g-b|0)>2?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0)c[f>>2]=b+3}else g=e;a:while(1){p=c[f>>2]|0;if(p>>>0>=e>>>0){b=0;break}q=c[i>>2]|0;if(q>>>0>=h>>>0){b=1;break}n=a[p>>0]|0;b=n&255;do if(n<<24>>24>-1)if(b>>>0>j>>>0){b=2;break a}else k=1;else{if((n&255)<194){b=2;break a}if((n&255)<224){if((g-p|0)<2){b=1;break a}k=d[p+1>>0]|0;if((k&192|0)!=128){b=2;break a}b=k&63|b<<6&1984;if(b>>>0>j>>>0){b=2;break a}else{k=2;break}}if((n&255)<240){if((g-p|0)<3){b=1;break a}l=a[p+1>>0]|0;k=a[p+2>>0]|0;switch(n<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){b=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){b=2;break a}break}default:if((l&-64)<<24>>24!=-128){b=2;break a}}k=k&255;if((k&192|0)!=128){b=2;break a}b=(l&63)<<6|b<<12&61440|k&63;if(b>>>0>j>>>0){b=2;break a}else{k=3;break}}if((n&255)>=245){b=2;break a}if((g-p|0)<4){b=1;break a}o=a[p+1>>0]|0;k=a[p+2>>0]|0;m=a[p+3>>0]|0;switch(n<<24>>24){case -16:{if((o+112&255)>=48){b=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){b=2;break a}break}default:if((o&-64)<<24>>24!=-128){b=2;break a}}l=k&255;if((l&192|0)!=128){b=2;break a}k=m&255;if((k&192|0)!=128){b=2;break a}b=(o&63)<<12|b<<18&1835008|l<<6&4032|k&63;if(b>>>0>j>>>0){b=2;break a}else k=4}while(0);c[q>>2]=b;c[f>>2]=p+k;c[i>>2]=(c[i>>2]|0)+4}return b|0}function dL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;c[e>>2]=b;c[h>>2]=f;l=g;if(j&2)if((l-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;while(1){if(b>>>0>=d>>>0){b=0;break a}f=c[b>>2]|0;if(f>>>0>i>>>0|(f&-2048|0)==55296){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((l-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;g=l-b|0;if(f>>>0<65536){if((g|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((g|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((l-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b}}while(0);return b|0}function eL(a){a=a|0;CF(a);SA(a);return}function fL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function gL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function iL(a){a=a|0;return 1}function jL(a){a=a|0;return 1}function kL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function lL(a){a=a|0;return 1}function mL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+16|0;p=q;n=q+8|0;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}c[j>>2]=h;c[g>>2]=e;m=i;o=b+8|0;a:while(1){if((h|0)==(i|0)|(e|0)==(f|0)){k=36;break}r=d;l=c[r+4>>2]|0;b=p;c[b>>2]=c[r>>2];c[b+4>>2]=l;b=ez(c[o>>2]|0)|0;l=Uz(h,g,k-e>>2,m-h|0,d)|0;if(b|0)ez(b)|0;switch(l|0){case -1:{k=10;break a}case 0:{e=1;k=33;break a}default:{}}h=(c[j>>2]|0)+l|0;c[j>>2]=h;if((h|0)==(i|0)){k=34;break}if((k|0)==(f|0)){k=f;e=c[g>>2]|0}else{h=ez(c[o>>2]|0)|0;e=_x(n,0,d)|0;if(h|0)ez(h)|0;if((e|0)==-1){e=2;k=32;break}if(e>>>0>(m-(c[j>>2]|0)|0)>>>0){e=1;k=32;break}h=n;while(1){if(!e)break;l=a[h>>0]|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r>>0]=l;h=h+1|0;e=e+-1|0}e=(c[g>>2]|0)+4|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(c[k>>2]|0))break;k=k+4|0}h=c[j>>2]|0}}if((k|0)==10){c[j>>2]=h;while(1){if((e|0)==(c[g>>2]|0))break;r=c[e>>2]|0;k=ez(c[o>>2]|0)|0;h=_x(h,r,p)|0;if(k|0)ez(k)|0;if((h|0)==-1)break;h=(c[j>>2]|0)+h|0;c[j>>2]=h;e=e+4|0}c[g>>2]=e;e=2;k=33}else if((k|0)==32)k=33;else if((k|0)==34){e=c[g>>2]|0;k=36}if((k|0)!=33)if((k|0)==36)e=(e|0)!=(f|0)&1;zb=q;return e|0}function nL(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=zb;zb=zb+16|0;o=p;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}c[j>>2]=h;c[g>>2]=e;m=i;n=b+8|0;while(1){if((h|0)==(i|0)|(e|0)==(f|0)){b=33;break}q=d;l=c[q+4>>2]|0;b=o;c[b>>2]=c[q>>2];c[b+4>>2]=l;b=ez(c[n>>2]|0)|0;l=Rz(h,g,k-e|0,m-h>>2,d)|0;if(b|0)ez(b)|0;if((l|0)==-1){b=10;break}h=(c[j>>2]|0)+(l<<2)|0;c[j>>2]=h;if((h|0)==(i|0)){b=30;break}e=c[g>>2]|0;if((k|0)==(f|0))k=f;else{k=ez(c[n>>2]|0)|0;e=Xy(h,e,1,d)|0;if(k|0)ez(k)|0;if(e|0){e=2;b=29;break}c[j>>2]=(c[j>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;k=e;while(1){if((k|0)==(f|0)){k=f;break}if(!(a[k>>0]|0))break;k=k+1|0}h=c[j>>2]|0}}do if((b|0)==10){a:while(1){c[j>>2]=h;if((e|0)==(c[g>>2]|0)){b=19;break}b=ez(c[n>>2]|0)|0;h=Xy(h,e,k-e|0,o)|0;if(b|0)ez(b)|0;switch(h|0){case -1:{b=15;break a}case -2:{b=16;break a}case 0:{h=1;break}default:{}}e=e+h|0;h=(c[j>>2]|0)+4|0}if((b|0)==15){c[g>>2]=e;e=2;b=29;break}else if((b|0)==16){c[g>>2]=e;e=1;b=29;break}else if((b|0)==19){c[g>>2]=e;e=(e|0)!=(f|0)&1;b=29;break}}else if((b|0)==30){e=c[g>>2]|0;b=33}while(0);if((b|0)!=29)if((b|0)==33)e=(e|0)!=(f|0)&1;zb=p;return e|0}function oL(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=zb;zb=zb+16|0;h=i;c[g>>2]=e;e=ez(c[b+8>>2]|0)|0;b=_x(h,0,d)|0;if(e|0)ez(e)|0;a:do if((b+1|0)>>>0>=2){b=b+-1|0;if(b>>>0>(f-(c[g>>2]|0)|0)>>>0)b=1;else while(1){if(!b){b=0;break a}d=a[h>>0]|0;f=c[g>>2]|0;c[g>>2]=f+1;a[f>>0]=d;h=h+1|0;b=b+-1|0}}else b=2;while(0);zb=i;return b|0}function pL(a){a=a|0;var b=0,d=0;a=a+8|0;b=ez(c[a>>2]|0)|0;d=pz(0,0,4)|0;if(b|0)ez(b)|0;if(!d){a=c[a>>2]|0;if(!a)a=1;else{b=ez(a)|0;a=hy()|0;if(b|0)ez(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function qL(a){a=a|0;return 0}function rL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=e;j=a+8|0;h=0;i=0;a:while(1){if((d|0)==(e|0)|h>>>0>=f>>>0)break;g=ez(c[j>>2]|0)|0;a=Qz(d,k-d|0,b)|0;if(g|0)ez(g)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}h=h+1|0;i=a+i|0;d=d+a|0}return i|0}function sL(a){a=a|0;var b=0;a=c[a+8>>2]|0;if(a){b=ez(a)|0;a=hy()|0;if(b)ez(b)|0}else a=1;return a|0}function tL(a){a=a|0;var b=0,d=0;c[a>>2]=19168;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(_F()|0))Vy(c[b>>2]|0);CF(a);return}function uL(a){a=a|0;tL(a);SA(a);return}function vL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=EL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function wL(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;b=zb;zb=zb+16|0;j=b+4|0;a=b;c[j>>2]=d;c[a>>2]=g;h=DL(d,e,j,g,h,a,1114111,0)|0;c[f>>2]=c[j>>2];c[i>>2]=c[a>>2];zb=b;return h|0}function xL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function yL(a){a=a|0;return 0}function zL(a){a=a|0;return 0}function AL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return CL(c,d,e,1114111,0)|0}function BL(a){a=a|0;return 4}function CL(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c;if((((g&4|0)!=0?(o-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;h=0;a:while(1){if(!(h>>>0>>0&g>>>0>>0))break;l=a[g>>0]|0;n=l&255;if(n>>>0>f>>>0)break;do if(l<<24>>24<=-1){if((l&255)<194)break a;if((l&255)<224){if((o-g|0)<2)break a;i=d[g+1>>0]|0;if((i&192|0)!=128)break a;if((i&63|n<<6&1984)>>>0>f>>>0)break a;else{g=g+2|0;break}}if((l&255)<240){if((o-g|0)<3)break a;j=a[g+1>>0]|0;i=a[g+2>>0]|0;switch(l<<24>>24){case -32:{if((j&-32)<<24>>24!=-96)break a;break}case -19:{if((j&-32)<<24>>24!=-128)break a;break}default:if((j&-64)<<24>>24!=-128)break a}i=i&255;if((i&192|0)!=128)break a;if(((j&63)<<6|n<<12&61440|i&63)>>>0>f>>>0)break a;else{g=g+3|0;break}}if((l&255)>=245)break a;if((e-h|0)>>>0<2|(o-g|0)<4)break a;m=a[g+1>>0]|0;i=a[g+2>>0]|0;k=a[g+3>>0]|0;switch(l<<24>>24){case -16:{if((m+112&255)>=48)break a;break}case -12:{if((m&-16)<<24>>24!=-128)break a;break}default:if((m&-64)<<24>>24!=-128)break a}j=i&255;if((j&192|0)!=128)break a;i=k&255;if((i&192|0)!=128)break a;if(((m&63)<<12|n<<18&1835008|j<<6&4032|i&63)>>>0>f>>>0)break a;else{h=h+1|0;g=g+4|0}}else g=g+1|0;while(0);h=h+1|0}return g-b|0}function DL(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[g>>2]=e;c[j>>2]=h;if(l&4){e=c[g>>2]|0;h=f;if((((h-e|0)>2?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0)c[g>>2]=e+3}else h=f;s=i;a:while(1){n=c[g>>2]|0;if(n>>>0>=f>>>0){e=0;break}r=c[j>>2]|0;if(r>>>0>=i>>>0){e=1;break}m=a[n>>0]|0;q=m&255;if(q>>>0>k>>>0){e=2;break}do if(m<<24>>24>-1){b[r>>1]=m&255;e=n+1|0}else{if((m&255)<194){e=2;break a}if((m&255)<224){if((h-n|0)<2){e=1;break a}e=d[n+1>>0]|0;if((e&192|0)!=128){e=2;break a}e=e&63|q<<6&1984;if(e>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+2|0;break}if((m&255)<240){if((h-n|0)<3){e=1;break a}l=a[n+1>>0]|0;e=a[n+2>>0]|0;switch(m<<24>>24){case -32:{if((l&-32)<<24>>24!=-96){e=2;break a}break}case -19:{if((l&-32)<<24>>24!=-128){e=2;break a}break}default:if((l&-64)<<24>>24!=-128){e=2;break a}}e=e&255;if((e&192|0)!=128){e=2;break a}e=(l&63)<<6|q<<12|e&63;if((e&65535)>>>0>k>>>0){e=2;break a}b[r>>1]=e;e=n+3|0;break}if((m&255)>=245){e=2;break a}if((h-n|0)<4){e=1;break a}o=a[n+1>>0]|0;e=a[n+2>>0]|0;l=a[n+3>>0]|0;switch(m<<24>>24){case -16:{if((o+112&255)>=48){e=2;break a}break}case -12:{if((o&-16)<<24>>24!=-128){e=2;break a}break}default:if((o&-64)<<24>>24!=-128){e=2;break a}}p=e&255;if((p&192|0)!=128){e=2;break a}e=l&255;if((e&192|0)!=128){e=2;break a}if((s-r|0)<4){e=1;break a}n=q&7;l=o&255;m=p<<6;e=e&63;if((l<<12&258048|n<<18|m&4032|e)>>>0>k>>>0){e=2;break a}b[r>>1]=l<<2&60|p>>>4&3|((l>>>4&3|n<<2)<<6)+16320|55296;r=r+2|0;c[j>>2]=r;b[r>>1]=e|m&960|56320;e=(c[g>>2]|0)+4|0}while(0);c[g>>2]=e;c[j>>2]=(c[j>>2]|0)+2}return e|0}function EL(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;while(1){if(d>>>0>=f>>>0){d=0;break a}h=b[d>>1]|0;m=h&65535;if(m>>>0>k>>>0){d=2;break a}do if((h&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=h}else{if((h&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>6&63|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;h=e[d>>1]|0;if((h&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}l=m&960;if(((l<<10)+65536|m<<10&64512|h&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(l>>>6)+1|0;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=d>>>2|240;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m>>>2&15|d<<4&48|128;l=c[j>>2]|0;c[j>>2]=l+1;a[l>>0]=m<<4&48|h>>>6&15|128;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=h&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d}}while(0);return d|0}function FL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=19216;e=a+8|0;f=a+12|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0?(h=b+4|0,g=c[h>>2]|0,c[h>>2]=g+-1,(g|0)==0):0)Sb[c[(c[b>>2]|0)+8>>2]&255](b);d=d+1|0}jO(a+144|0);HL(e);CF(a);return}function GL(a){a=a|0;FL(a);SA(a);return}function HL(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=d;do if(d|0){c[b+4>>2]=e;if((d|0)==(b+16|0)){a[b+128>>0]=0;break}else{Pf(d,(c[b+8>>2]|0)-e|0);break}}while(0);return}function IL(b){b=b|0;var d=0;c[b>>2]=19236;d=c[b+8>>2]|0;if(d|0?a[b+12>>0]|0:0)vB(d);CF(b);return}function JL(a){a=a|0;IL(a);SA(a);return}function KL(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(TL()|0)+((b&255)<<2)|0;b=c[b>>2]&255}return b|0}function LL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=TL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function ML(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(SL()|0)+(b<<24>>24<<2)|0;b=c[b>>2]&255}return b|0}function NL(b,d,e){b=b|0;d=d|0;e=e|0;while(1){if((d|0)==(e|0))break;b=a[d>>0]|0;if(b<<24>>24>-1){b=SL()|0;b=c[b+(a[d>>0]<<2)>>2]&255}a[d>>0]=b;d=d+1|0}return e|0}function OL(a,b){a=a|0;b=b|0;return b|0}function PL(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((c|0)==(d|0))break;a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}return d|0}function QL(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function RL(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;while(1){if((c|0)==(d|0))break;b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;f=f+1|0;c=c+1|0}return d|0}function SL(){var a=0;a=jy()|0;return c[a>>2]|0}function TL(){var a=0;a=ky()|0;return c[a>>2]|0}function UL(){var a=0;a=gy()|0;return c[a>>2]|0}function VL(a){a=a|0;c[a>>2]=19288;jO(a+12|0);CF(a);return}function WL(a){a=a|0;VL(a);SA(a);return}function XL(b){b=b|0;return a[b+8>>0]|0}function YL(b){b=b|0;return a[b+9>>0]|0}function ZL(a,b){a=a|0;b=b|0;fO(a,b+12|0);return}function _L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51258,Yf(51258)|0);return}function $L(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,51252,Yf(51252)|0);return}function aM(a){a=a|0;c[a>>2]=19328;jO(a+16|0);CF(a);return}function bM(a){a=a|0;aM(a);SA(a);return}function cM(a){a=a|0;return c[a+8>>2]|0}function dM(a){a=a|0;return c[a+12>>2]|0}function eM(a,b){a=a|0;b=b|0;fO(a,b+16|0);return}function fM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19384,JI(19384)|0);return}function gM(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;tO(a,19360,JI(19360)|0);return}function hM(a){a=a|0;CF(a);SA(a);return}function iM(a){a=a|0;CF(a);SA(a);return}function jM(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128){a=(UL()|0)+(d<<1)|0;a=(b[a>>1]&c)<<16>>16!=0}else a=0;return a|0}function kM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;while(1){if((d|0)==(f|0))break;if((c[d>>2]|0)>>>0<128){a=UL()|0;a=e[a+(c[d>>2]<<1)>>1]|0}else a=0;b[g>>1]=a;g=g+2|0;d=d+4|0}return f|0}function lM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0<128?(a=UL()|0,(b[a+(c[e>>2]<<1)>>1]&d)<<16>>16):0)break;e=e+4|0}return e|0}function mM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;while(1){if((e|0)==(f|0)){e=f;break}if((c[e>>2]|0)>>>0>=128)break;a=UL()|0;if(!((b[a+(c[e>>2]<<1)>>1]&d)<<16>>16))break;e=e+4|0}return e|0}function nM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(TL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function oM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=TL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function pM(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(SL()|0)+(b<<2)|0;b=c[b>>2]|0}return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;while(1){if((b|0)==(d|0))break;a=c[b>>2]|0;if(a>>>0<128){a=SL()|0;a=c[a+(c[b>>2]<<2)>>2]|0}c[b>>2]=a;b=b+4|0}return d|0}function rM(a,b){a=a|0;b=b|0;return b<<24>>24|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;while(1){if((d|0)==(e|0))break;c[f>>2]=a[d>>0];f=f+4|0;d=d+1|0}return e|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=(e-d|0)>>>2;b=g;g=d;while(1){if((g|0)==(e|0))break;i=c[g>>2]|0;a[b>>0]=i>>>0<128?i&255:f;b=b+1|0;g=g+4|0}return d+(h<<2)|0}function vM(a){a=a|0;CF(a);SA(a);return}function wM(a){a=a|0;CF(a);SA(a);return}function xM(a){a=a|0;CF(a);SA(a);return}function yM(a){a=a|0;c[a>>2]=19644;return}function zM(a){a=a|0;c[a>>2]=19680;return}function AM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+4>>2]=f+-1;c[b>>2]=19236;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(!d){e=UL()|0;c[f>>2]=e}return}function BM(a,b){a=a|0;b=b|0;var d=0;c[a+4>>2]=b+-1;c[a>>2]=19216;b=a+8|0;CM(b,28);d=a+144|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,49197,Yf(49197)|0);c[a+12>>2]=c[b>>2];DM();EM(a,54968);FM();GM(a,54976);HM();IM(a,54984);JM();KM(a,55e3);LM();MM(a,55008);NM();OM(a,55016);PM();QM(a,55032);RM();SM(a,55040);TM();UM(a,55048);VM();WM(a,55072);XM();YM(a,55104);ZM();_M(a,55112);$M();aN(a,55120);bN();cN(a,55128);dN();eN(a,55136);fN();gN(a,55144);hN();iN(a,55152);jN();kN(a,55160);lN();mN(a,55168);nN();oN(a,55176);pN();qN(a,55184);rN();sN(a,55192);tN();uN(a,55200);vN();wN(a,55216);xN();yN(a,55232);zN();AN(a,55248);BN();CN(a,55264);DN();EN(a,55272);return}function CM(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d|0){RN(b,d);IN(b,d)}return}function DM(){c[13743]=0;c[13742]=17072;return}function EM(a,b){a=a|0;b=b|0;FN(a,b,aG(56720)|0);return}function FM(){c[13745]=0;c[13744]=17104;return}function GM(a,b){a=a|0;b=b|0;FN(a,b,aG(56728)|0);return}function HM(){AM(54984,0,0,1);return}function IM(a,b){a=a|0;b=b|0;FN(a,b,aG(56736)|0);return}function JM(){c[13751]=0;c[13750]=19432;return}function KM(a,b){a=a|0;b=b|0;FN(a,b,aG(56768)|0);return}function LM(){c[13753]=0;c[13752]=19500;return}function MM(a,b){a=a|0;b=b|0;FN(a,b,aG(57040)|0);return}function NM(){QN(55016,1);return}function OM(a,b){a=a|0;b=b|0;FN(a,b,aG(57048)|0);return}function PM(){c[13759]=0;c[13758]=19548;return}function QM(a,b){a=a|0;b=b|0;FN(a,b,aG(57056)|0);return}function RM(){c[13761]=0;c[13760]=19596;return}function SM(a,b){a=a|0;b=b|0;FN(a,b,aG(57064)|0);return}function TM(){PN(55048,1);return}function UM(a,b){a=a|0;b=b|0;FN(a,b,aG(56752)|0);return}function VM(){ON(55072,1);return}function WM(a,b){a=a|0;b=b|0;FN(a,b,aG(56776)|0);return}function XM(){c[13777]=0;c[13776]=17136;return}function YM(a,b){a=a|0;b=b|0;FN(a,b,aG(56760)|0);return}function ZM(){c[13779]=0;c[13778]=17200;return}function _M(a,b){a=a|0;b=b|0;FN(a,b,aG(56784)|0);return}function $M(){c[13781]=0;c[13780]=17264;return}function aN(a,b){a=a|0;b=b|0;FN(a,b,aG(56792)|0);return}function bN(){c[13783]=0;c[13782]=17316;return}function cN(a,b){a=a|0;b=b|0;FN(a,b,aG(56800)|0);return}function dN(){c[13785]=0;c[13784]=18672;return}function eN(a,b){a=a|0;b=b|0;FN(a,b,aG(56960)|0);return}function fN(){c[13787]=0;c[13786]=18728;return}function gN(a,b){a=a|0;b=b|0;FN(a,b,aG(56968)|0);return}function hN(){c[13789]=0;c[13788]=18784;return}function iN(a,b){a=a|0;b=b|0;FN(a,b,aG(56976)|0);return}function jN(){c[13791]=0;c[13790]=18840;return}function kN(a,b){a=a|0;b=b|0;FN(a,b,aG(56984)|0);return}function lN(){c[13793]=0;c[13792]=18896;return}function mN(a,b){a=a|0;b=b|0;FN(a,b,aG(56992)|0);return}function nN(){c[13795]=0;c[13794]=18924;return}function oN(a,b){a=a|0;b=b|0;FN(a,b,aG(57e3)|0);return}function pN(){c[13797]=0;c[13796]=18952;return}function qN(a,b){a=a|0;b=b|0;FN(a,b,aG(57008)|0);return}function rN(){c[13799]=0;c[13798]=18980;return}function sN(a,b){a=a|0;b=b|0;FN(a,b,aG(57016)|0);return}function tN(){c[13801]=0;c[13800]=19412;yM(55208);c[13800]=17368;c[13802]=17416;return}function uN(a,b){a=a|0;b=b|0;FN(a,b,aG(56868)|0);return}function vN(){c[13805]=0;c[13804]=19412;zM(55224);c[13804]=17452;c[13806]=17500;return}function wN(a,b){a=a|0;b=b|0;FN(a,b,aG(56936)|0);return}function xN(){var a=0;c[13809]=0;c[13808]=19412;a=_F()|0;c[13810]=a;c[13808]=18624;return}function yN(a,b){a=a|0;b=b|0;FN(a,b,aG(56944)|0);return}function zN(){var a=0;c[13813]=0;c[13812]=19412;a=_F()|0;c[13814]=a;c[13812]=18648;return}function AN(a,b){a=a|0;b=b|0;FN(a,b,aG(56952)|0);return}function BN(){c[13817]=0;c[13816]=19008;return}function CN(a,b){a=a|0;b=b|0;FN(a,b,aG(57024)|0);return}function DN(){c[13819]=0;c[13818]=19040;return}function EN(a,b){a=a|0;b=b|0;FN(a,b,aG(57032)|0);return}function FN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=b+4|0;c[f>>2]=(c[f>>2]|0)+1;f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0>d>>>0)a=f;else{GN(f,d+1|0);a=f;e=c[f>>2]|0}e=c[e+(d<<2)>>2]|0;if(e|0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+-1,(f|0)==0):0)Sb[c[(c[e>>2]|0)+8>>2]&255](e);c[(c[a>>2]|0)+(d<<2)>>2]=b;return}function GN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else HN(a,b-e|0);return}function HN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=JN(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;KN(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+16|0);LN(f,b);MN(a,f);NN(f);break}}else IN(a,b);while(0);zb=i;return}function IN(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function JN(a){a=a|0;return 1073741823}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if(d>>>0<29&(a[g>>0]|0)==0){a[g>>0]=1;break}else{f=tB(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function LN(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{c[b>>2]=0;b=(c[d>>2]|0)+4|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function MN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function NN(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;while(1){if((f|0)==(d|0))break;g=f+-4|0;c[e>>2]=g;f=g}e=c[b>>2]|0;f=e;do if(e|0){d=c[b+16>>2]|0;if((e|0)==(d|0)){a[d+112>>0]=0;break}else{Pf(e,(c[b+12>>2]|0)-f|0);break}}while(0);return}function ON(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19328;c[a+8>>2]=46;c[a+12>>2]=44;b=a+16|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0}return}function PN(b,d){b=b|0;d=d|0;c[b+4>>2]=d+-1;c[b>>2]=19288;a[b+8>>0]=46;a[b+9>>0]=44;d=b+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0}return}function QN(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=19168;b=_F()|0;c[a+8>>2]=b;return}function RN(b,d){b=b|0;d=d|0;var e=0;if((JN(b)|0)>>>0>>0)EO(b);e=b+128|0;if(d>>>0<29&(a[e>>0]|0)==0){a[e>>0]=1;e=b+16|0}else e=tB(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function SN(){if((a[55280]|0)==0?nB(55280)|0:0){TN()|0;c[14269]=57072;pB(55280)}return c[14269]|0}function TN(){UN();c[14268]=55288;return 57072}function UN(){BM(55288,1);return}function VN(){WN(57080,SN()|0);return 57080}function WN(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;b=b+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function XN(){if((a[55448]|0)==0?nB(55448)|0:0){VN()|0;c[14271]=57080;pB(55448)}return c[14271]|0}function YN(a){a=a|0;var b=0;b=XN()|0;b=c[b>>2]|0;c[a>>2]=b;a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function ZN(a){a=a|0;return}function _N(a){a=a|0;var b=0,d=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(d=c[b>>2]|0,c[b>>2]=d+-1,(d|0)!=0):0))Sb[c[(c[a>>2]|0)+16>>2]&255](a);return}function $N(a,b,d){a=a|0;b=b|0;d=d|0;do{}while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Sb[d&255](b);c[a>>2]=-1}return}function aO(){ua()}function bO(a,b){a=a|0;b=b|0;var d=0,e=0;e=Qy(b)|0;d=tB(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=cO(d)|0;_O(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function cO(a){a=a|0;return a+12|0}function dO(a,b){a=a|0;b=b|0;c[a>>2]=16372;bO(a+4|0,b);return}function eO(a){a=a|0;ua()}function fO(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)gO(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}return}function gO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(e>>>0>4294967279)eO(b);if(e>>>0<11)a[b+11>>0]=e;else{i=e+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;b=h}VD(b,d,e)|0;a[f>>0]=0;bg(b+e|0,f);zb=g;return}function hO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;f=g;if(d>>>0>4294967279)eO(b);if(d>>>0<11)a[b+11>>0]=d;else{i=d+16&-16;h=tB(i)|0;c[b>>2]=h;c[b+8>>2]=i|-2147483648;c[b+4>>2]=d;b=h}iO(b,d,e)|0;a[f>>0]=0;bg(b+d|0,f);zb=g;return}function iO(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)aP(a|0,(cg(c)|0)&255|0,b|0)|0;return a|0}function jO(b){b=b|0;if((a[b+11>>0]|0)<0)Pf(c[b>>2]|0,c[b+8>>2]&2147483647);return}function kO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g)h=(c[b+8>>2]&2147483647)+-1|0;else h=10;do if(h>>>0>=e>>>0){if(g)f=c[b>>2]|0;else f=b;lO(f,d,e)|0;a[i>>0]=0;bg(f+e|0,i);if((a[j>>0]|0)<0){c[b+4>>2]=e;break}else{a[j>>0]=e;break}}else{if(g)f=c[b+4>>2]|0;else f=f&255;mO(b,h,e-h|0,f,0,f,e,d)}while(0);zb=k;return b|0}function lO(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)$O(a|0,b|0,c|0)|0;return a|0} +function nw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[(c[a+484>>2]|0)+24>>2]|0;h=c[d>>2]|0;j=d+4|0;l=c[j>>2]|0;o=d+8|0;n=c[o>>2]|0;p=d+12|0;m=c[p>>2]|0;q=d+16|0;k=c[q>>2]|0;r=d+20|0;s=c[r>>2]|0;a:do if((l|0)<=(h|0)|(n|0)>(m|0)|(k|0)>(s|0))i=h;else{i=h;b:while(1){g=c[t+(i<<2)>>2]|0;e=n;while(1){a=g+(e<<6)+(k<<1)|0;f=k;while(1){if(b[a>>1]|0)break b;if((f|0)<(s|0)){a=a+2|0;f=f+1|0}else break}if((e|0)<(m|0))e=e+1|0;else break}if((i|0)<(l|0))i=i+1|0;else{i=h;break a}}c[d>>2]=i}while(0);c:do if(!((l|0)<=(i|0)|(n|0)>(m|0)|(k|0)>(s|0))){e=l;d:while(1){h=c[t+(e<<2)>>2]|0;f=n;while(1){a=h+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break d;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((f|0)<(m|0))f=f+1|0;else break}if((e|0)>(i|0))e=e+-1|0;else break c}c[j>>2]=e;l=e}while(0);e:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=n;f:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break f;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)<(m|0))f=f+1|0;else break e}c[o>>2]=f;n=f}while(0);g:do if(!((m|0)<=(n|0)|(l|0)<(i|0)|(k|0)>(s|0))){f=m;h:while(1){e=i;while(1){a=(c[t+(e<<2)>>2]|0)+(f<<6)+(k<<1)|0;g=k;while(1){if(b[a>>1]|0)break h;if((g|0)<(s|0)){a=a+2|0;g=g+1|0}else break}if((e|0)<(l|0))e=e+1|0;else break}if((f|0)>(n|0))f=f+-1|0;else break g}c[p>>2]=f;m=f}while(0);i:do if(!((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))){f=k;j:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break j;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)<(s|0))f=f+1|0;else break i}c[q>>2]=f;k=f}while(0);k:do if((s|0)<=(k|0)|(l|0)<(i|0)|(m|0)<(n|0))f=s;else{f=s;l:while(1){a=i;while(1){e=n;g=(c[t+(a<<2)>>2]|0)+(n<<6)+(f<<1)|0;while(1){if(b[g>>1]|0)break l;if((e|0)<(m|0)){e=e+1|0;g=g+64|0}else break}if((a|0)<(l|0))a=a+1|0;else break}if((f|0)>(k|0))f=f+-1|0;else{f=s;break k}}c[r>>2]=f}while(0);r=l-i<<4;q=(m-n|0)*12|0;s=f-k<<3;s=(B(q,q)|0)+(B(r,r)|0)+(B(s,s)|0)|0;c[d+24>>2]=s;if((l|0)<(i|0)|(m|0)<(n|0)|(f|0)<(k|0)){t=0;d=d+28|0;c[d>>2]=t;return}a=0;while(1){j=c[t+(i<<2)>>2]|0;h=n;while(1){e=k;g=j+(h<<6)+(k<<1)|0;while(1){a=a+((b[g>>1]|0)!=0&1)|0;if((e|0)>=(f|0))break;else{e=e+1|0;g=g+2|0}}if((h|0)<(m|0))h=h+1|0;else break}if((i|0)<(l|0))i=i+1|0;else break}d=d+28|0;c[d>>2]=a;return}function ow(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+484|0;j=c[b>>2]|0;c[a+136>>2]=c[j+16>>2];c[a+132>>2]=c[j+20>>2];switch(c[a+88>>2]|0){case 0:{b=j+4|0;if((c[a+120>>2]|0)==3){c[b>>2]=22;return}else{c[b>>2]=23;return}}case 1:{l=a+120|0;c[j+4>>2]=(c[l>>2]|0)==3?24:25;c[j+48>>2]=0;if(!(c[j+28>>2]|0))rw(a);if(c[j+52>>2]|0)return;j=c[b>>2]|0;b=c[l>>2]|0;if((b|0)<=0)return;k=a+4|0;i=0;do{f=c[j+32+(i<<2)>>2]|0;a:do if(i){e=0;while(1){if((f|0)==(c[j+32+(e<<2)>>2]|0))break;e=e+1|0;if(e>>>0>=i>>>0){m=15;break a}}e=c[j+52+(e<<2)>>2]|0;if(!e)m=15}else m=15;while(0);if((m|0)==15){m=0;e=Jb[c[c[k>>2]>>2]&63](a,1,1024)|0;h=(f<<9)+-512|0;g=0;do{f=0;do{n=255-((d[5440+(g<<4)+f>>0]|0)<<1)|0;b=n*255|0;if((n|0)<0)b=0-((0-b|0)/(h|0)|0)|0;else b=(b|0)/(h|0)|0;c[e+(g<<6)+(f<<2)>>2]=b;f=f+1|0}while((f|0)!=16);g=g+1|0}while((g|0)!=16);b=c[l>>2]|0}c[j+52+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(b|0));return}case 2:{c[j+4>>2]=26;c[j+84>>2]=0;if(!(c[j+68>>2]|0)){b=a+112|0;g=(c[b>>2]<<1)+4|0;h=a+120|0;if((c[h>>2]|0)<=0)return;i=a+4|0;e=0;do{f=Jb[c[(c[i>>2]|0)+4>>2]&63](a,1,g)|0;c[j+68+(e<<2)>>2]=f;e=e+1|0;f=c[h>>2]|0}while((e|0)<(f|0))}else{f=a+120|0;h=f;b=a+112|0;f=c[f>>2]|0}e=(c[b>>2]<<1)+4|0;if((f|0)<=0)return;b=0;do{aP(c[j+68+(b<<2)>>2]|0,0,e|0)|0;b=b+1|0}while((b|0)<(c[h>>2]|0));return}default:{n=c[a>>2]|0;c[n+20>>2]=49;Sb[c[n>>2]&255](a);return}}}function pw(a){a=a|0;return}function qw(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Sb[c[b>>2]&255](a);return}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+484>>2]|0;d=(c[b+88>>2]|0)==1;c[m+28>>2]=d&1;l=b+120|0;e=Kb[c[(c[b+4>>2]|0)+8>>2]&15](b,1,d?766:256,c[l>>2]|0)|0;k=m+24|0;c[k>>2]=e;b=c[m+20>>2]|0;if((c[l>>2]|0)<=0)return;if(!d){d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;h=c[e+(d<<2)>>2]|0;i=f+-1|0;j=i<<1;e=0;f=(f+254|0)/(j|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+i|0)/(j|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[h+g>>0]=n;g=g+1|0}while((g|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}d=0;while(1){f=c[m+32+(d<<2)>>2]|0;b=(b|0)/(f|0)|0;j=e+(d<<2)|0;c[j>>2]=(c[j>>2]|0)+255;j=c[(c[k>>2]|0)+(d<<2)>>2]|0;h=f+-1|0;i=h<<1;e=0;f=(f+254|0)/(i|0)|0;g=0;do{if((g|0)>(f|0))do{e=e+1|0;f=(((e<<1|1)*255|0)+h|0)/(i|0)|0}while((g|0)>(f|0));n=(B(e,b)|0)&255;a[j+g>>0]=n;g=g+1|0}while((g|0)!=256);f=j+255|0;e=1;do{a[j+(0-e)>>0]=a[j>>0]|0;a[j+(e+255)>>0]=a[f>>0]|0;e=e+1|0}while((e|0)!=256);d=d+1|0;if((d|0)>=(c[l>>2]|0))break;e=c[k>>2]|0}return}function sw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[(c[b+484>>2]|0)+24>>2]|0;n=c[m>>2]|0;l=c[m+4>>2]|0;m=c[m+8>>2]|0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;h=0;do{b=k;i=c[f+(h<<2)>>2]|0;j=c[e+(h<<2)>>2]|0;while(1){a[i>>0]=(d[l+(d[j+1>>0]|0)>>0]|0)+(d[n+(d[j>>0]|0)>>0]|0)+(d[m+(d[j+2>>0]|0)>>0]|0);b=b+-1|0;if(!b)break;else{i=i+1|0;j=j+3|0}}h=h+1|0}while((h|0)!=(g|0));return}function tw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[(c[b+484>>2]|0)+24>>2]|0;p=c[b+112>>2]|0;n=c[b+120>>2]|0;if((g|0)<1|(p|0)==0)return;if((n|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,p|0)|0;b=b+1|0}while((b|0)!=(g|0));return}i=0;do{h=p;j=c[f+(i<<2)>>2]|0;k=c[e+(i<<2)>>2]|0;while(1){b=0;l=0;m=k;while(1){l=l+(d[(c[o+(b<<2)>>2]|0)+(d[m>>0]|0)>>0]|0)|0;b=b+1|0;if((b|0)==(n|0))break;else m=m+1|0}a[j>>0]=l;h=h+-1|0;if(!h)break;else{j=j+1|0;k=k+n|0}}i=i+1|0}while((i|0)!=(g|0));return}function uw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=c[b+484>>2]|0;u=c[h+24>>2]|0;v=c[u>>2]|0;t=c[u+4>>2]|0;u=c[u+8>>2]|0;q=c[b+112>>2]|0;if((g|0)<=0)return;w=h+48|0;r=h+52|0;s=h+56|0;p=h+60|0;b=c[w>>2]|0;if(!q){h=0;do{b=b+1&15;h=h+1|0}while((h|0)!=(g|0));c[w>>2]=b;return}o=0;do{l=c[r>>2]|0;m=c[s>>2]|0;n=c[p>>2]|0;h=q;i=0;j=c[f+(o<<2)>>2]|0;k=c[e+(o<<2)>>2]|0;while(1){a[j>>0]=(d[t+((c[m+(b<<6)+(i<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0)+(d[v+((c[l+(b<<6)+(i<<2)>>2]|0)+(d[k>>0]|0))>>0]|0)+(d[u+((c[n+(b<<6)+(i<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0);h=h+-1|0;if(!h)break;else{i=i+1&15;j=j+1|0;k=k+3|0}}b=b+1&15;c[w>>2]=b;o=o+1|0}while((o|0)!=(g|0));return}function vw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[b+484>>2]|0;v=c[b+120>>2]|0;w=c[b+112>>2]|0;if((g|0)<=0)return;t=u+48|0;m=u+24|0;n=(w|0)==0;if((v|0)<=0){b=0;do{aP(c[f+(b<<2)>>2]|0,0,w|0)|0;c[t>>2]=(c[t>>2]|0)+1&15;b=b+1|0}while((b|0)!=(g|0));return}h=0;do{o=f+(h<<2)|0;aP(c[o>>2]|0,0,w|0)|0;p=c[t>>2]|0;q=e+(h<<2)|0;if(!n){i=0;do{r=c[(c[m>>2]|0)+(i<<2)>>2]|0;s=c[u+52+(i<<2)>>2]|0;b=w;j=c[o>>2]|0;k=0;l=(c[q>>2]|0)+i|0;while(1){a[j>>0]=(d[j>>0]|0)+(d[r+((c[s+(p<<6)+(k<<2)>>2]|0)+(d[l>>0]|0))>>0]|0);b=b+-1|0;if(!b)break;else{j=j+1|0;k=k+1&15;l=l+v|0}}i=i+1|0}while((i|0)!=(v|0))}c[t>>2]=p+1&15;h=h+1|0}while((h|0)!=(g|0));return}function ww(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;J=c[e+484>>2]|0;K=c[e+120>>2]|0;L=c[e+112>>2]|0;y=c[e+336>>2]|0;if((h|0)<=0)return;z=(K|0)>0;A=J+84|0;C=J+24|0;D=J+16|0;E=(L|0)==0;F=L+-1|0;G=B(F,K)|0;H=0-K|0;I=L+1|0;x=0;do{v=g+(x<<2)|0;aP(c[v>>2]|0,0,L|0)|0;a:do if(z){w=f+(x<<2)|0;if(E){i=(c[A>>2]|0)==0;e=0;while(1){w=c[J+68+(e<<2)>>2]|0;b[(i?w:w+(I<<1)|0)>>1]=0;e=e+1|0;if((e|0)==(K|0))break a}}r=0;do{e=(c[w>>2]|0)+r|0;i=c[v>>2]|0;if(!(c[A>>2]|0)){s=K;t=1;u=c[J+68+(r<<2)>>2]|0}else{s=H;t=-1;u=(c[J+68+(r<<2)>>2]|0)+(I<<1)|0;e=e+G|0;i=i+F|0}o=c[(c[C>>2]|0)+(r<<2)>>2]|0;p=c[(c[D>>2]|0)+(r<<2)>>2]|0;q=B(L,t)|0;l=0;m=L;n=0;j=0;k=u;while(1){M=k;k=k+(t<<1)|0;N=d[y+((j+8+(b[k>>1]|0)>>4)+(d[e>>0]|0))>>0]|0;j=d[o+N>>0]|0;a[i>>0]=(d[i>>0]|0)+j;j=N-(d[p+j>>0]|0)|0;b[M>>1]=(j*3|0)+n;n=(j*5|0)+l|0;m=m+-1|0;if(!m)break;else{l=j;j=j*7|0;e=e+s|0;i=i+t|0}}b[u+(q<<1)>>1]=n;r=r+1|0}while((r|0)!=(K|0))}while(0);c[A>>2]=(c[A>>2]|0)==0&1;x=x+1|0}while((x|0)!=(h|0));return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+428|0;d=c[g>>2]|0;e=B(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do if(e>>>0>f>>>0){if(e>>>0<=f<<1>>>0){f=yw(c[a+28>>2]<<1,d)|0;c[a+112>>2]=f;f=2;b=c[a+32>>2]<<1;break}if(e>>>0<=(f*3|0)>>>0){f=yw((c[a+28>>2]|0)*3|0,d)|0;c[a+112>>2]=f;f=3;b=(c[a+32>>2]|0)*3|0;break}if(e>>>0<=f<<2>>>0){f=yw(c[a+28>>2]<<2,d)|0;c[a+112>>2]=f;f=4;b=c[a+32>>2]<<2;break}if(e>>>0<=(f*5|0)>>>0){f=yw((c[a+28>>2]|0)*5|0,d)|0;c[a+112>>2]=f;f=5;b=(c[a+32>>2]|0)*5|0;break}if(e>>>0<=(f*6|0)>>>0){f=yw((c[a+28>>2]|0)*6|0,d)|0;c[a+112>>2]=f;f=6;b=(c[a+32>>2]|0)*6|0;break}if(e>>>0<=(f*7|0)>>>0){f=yw((c[a+28>>2]|0)*7|0,d)|0;c[a+112>>2]=f;f=7;b=(c[a+32>>2]|0)*7|0;break}if(e>>>0<=f<<3>>>0){f=yw(c[a+28>>2]<<3,d)|0;c[a+112>>2]=f;f=8;b=c[a+32>>2]<<3;break}if(e>>>0<=(f*9|0)>>>0){f=yw((c[a+28>>2]|0)*9|0,d)|0;c[a+112>>2]=f;f=9;b=(c[a+32>>2]|0)*9|0;break}if(e>>>0<=(f*10|0)>>>0){f=yw((c[a+28>>2]|0)*10|0,d)|0;c[a+112>>2]=f;f=10;b=(c[a+32>>2]|0)*10|0;break}if(e>>>0<=(f*11|0)>>>0){f=yw((c[a+28>>2]|0)*11|0,d)|0;c[a+112>>2]=f;f=11;b=(c[a+32>>2]|0)*11|0;break}if(e>>>0<=(f*12|0)>>>0){f=yw((c[a+28>>2]|0)*12|0,d)|0;c[a+112>>2]=f;f=12;b=(c[a+32>>2]|0)*12|0;break}if(e>>>0<=(f*13|0)>>>0){f=yw((c[a+28>>2]|0)*13|0,d)|0;c[a+112>>2]=f;f=13;b=(c[a+32>>2]|0)*13|0;break}if(e>>>0<=(f*14|0)>>>0){f=yw((c[a+28>>2]|0)*14|0,d)|0;c[a+112>>2]=f;f=14;b=(c[a+32>>2]|0)*14|0;break}b=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){f=yw(b<<4,d)|0;c[a+112>>2]=f;f=16;b=c[a+32>>2]<<4;break}else{f=yw(b*15|0,d)|0;c[a+112>>2]=f;f=15;b=(c[a+32>>2]|0)*15|0;break}}else{f=yw(c[a+28>>2]|0,d)|0;c[a+112>>2]=f;f=1;b=c[a+32>>2]|0}while(0);e=yw(b,c[g>>2]|0)|0;c[a+116>>2]=e;c[a+324>>2]=f;c[a+328>>2]=f;e=c[a+36>>2]|0;if((e|0)<=0)return;d=0;b=c[a+216>>2]|0;while(1){c[b+36>>2]=f;c[b+40>>2]=f;d=d+1|0;if((d|0)>=(e|0))break;else b=b+88|0}return}function yw(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=c[a+20>>2]|0;if((e|0)!=205){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=e;Sb[c[c[a>>2]>>2]&255](a)}e=a+140|0;f=c[e>>2]|0;g=c[a+116>>2]|0;if(f>>>0>=g>>>0){i=c[a>>2]|0;c[i+20>>2]=126;Ub[c[i+4>>2]&63](a,-1);i=0;zb=j;return i|0}h=c[a+8>>2]|0;if(h|0){c[h+4>>2]=f;c[h+8>>2]=g;Sb[c[h>>2]&255](a)}c[i>>2]=0;Xb[c[(c[a+448>>2]|0)+4>>2]&31](a,b,i,d);i=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+i;zb=j;return i|0}function Aw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;j=k;g=k+8|0;h=k+12|0;d=b+4|0;c[d>>2]=0;e=Bw(b)|0;c[g>>2]=e;f=Cw(b,84)|0;if(!f){Dw(b);i=c[b>>2]|0;c[i+20>>2]=56;c[i+24>>2]=0;Sb[c[c[b>>2]>>2]&255](b)}c[f>>2]=33;c[f+4>>2]=34;c[f+8>>2]=9;c[f+12>>2]=10;c[f+16>>2]=39;c[f+20>>2]=40;c[f+24>>2]=135;c[f+28>>2]=21;c[f+32>>2]=22;c[f+36>>2]=52;c[f+40>>2]=136;c[f+48>>2]=1e9;i=f+44|0;c[i>>2]=e;c[f+56>>2]=0;c[f+64>>2]=0;c[f+52>>2]=0;c[f+60>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+76>>2]=84;c[d>>2]=f;b=Ja(46641)|0;if(!b){zb=k;return}a[h>>0]=120;c[j>>2]=g;c[j+4>>2]=h;if((Cz(b,46649,j)|0)>0){switch(a[h>>0]|0){case 77:case 109:{b=(c[g>>2]|0)*1e3|0;c[g>>2]=b;break}default:b=c[g>>2]|0}c[i>>2]=b*1e3}zb=k;return}function Bw(a){a=a|0;return 0}function Cw(a,b){a=a|0;b=b|0;return FO(b)|0}function Dw(a){a=a|0;return}function Ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;if(d>>>0>999999984){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}j=d&7;j=((j|0)==0?0:8-j|0)+d|0;if(b>>>0>1){i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=k+52+(b<<2)|0;d=c[i>>2]|0;a:do if(!d){d=0;f=9}else while(1){if((c[d+8>>2]|0)>>>0>=j>>>0)break a;e=c[d>>2]|0;if(!e){f=9;break}else d=e}while(0);do if((f|0)==9){h=(d|0)==0;b=c[(h?15936:15944)+(b<<2)>>2]|0;e=999999984-j|0;b=b>>>0>e>>>0?e:b;e=b+j|0;g=e+16|0;f=Cw(a,g)|0;if(!f){do{if(b>>>0<100){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=2;Sb[c[c[a>>2]>>2]&255](a)}b=b>>>1;e=b+j|0;g=e+16|0;f=Cw(a,g)|0}while(!(f|0));b=g}else b=g;k=k+76|0;c[k>>2]=(c[k>>2]|0)+b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;if(h){c[i>>2]=f;d=f;break}else{c[d>>2]=f;d=f;break}}while(0);i=d+4|0;k=c[i>>2]|0;c[i>>2]=k+j;i=d+8|0;c[i>>2]=(c[i>>2]|0)-j;return d+16+k|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}f=d&7;d=((f|0)==0?0:8-f|0)+d|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}e=d+16|0;f=Tw(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function Gw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(d>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(h,d)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+d|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Hw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;n=d<<7;f=999999984/(n>>>0)|0;if(n>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=72;Sb[c[m>>2]&255](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;l=Ew(a,b,e<<2)|0;if(!e)return l|0;m=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=Fw(a,b,B(n,h)|0)|0;if(h){j=f+m|0;k=~g;k=j>>>0>k>>>0?j:k;j=h;g=i;i=f;while(1){c[l+(i<<2)>>2]=g;j=j+-1|0;if(!j)break;else{g=g+(d<<7)|0;i=i+1|0}}f=f+-1-k|0}}while(f>>>0>>0);return l|0}function Iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+68|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Jw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)==1)b=1;else{i=c[a>>2]|0;c[i+20>>2]=15;c[i+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}i=Ew(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;h=h+72|0;c[i+44>>2]=c[h>>2];c[h>>2]=i;return i|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+4|0;s=c[u>>2]|0;f=s+68|0;b=c[f>>2]|0;if(!b){d=0;e=0}else{d=0;e=0;do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(t,c[b+12>>2]|0)|0)+d|0;e=(B(c[b+4>>2]|0,t)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0)}r=s+72|0;b=c[r>>2]|0;if(!b)b=e;else{do{if(!(c[b>>2]|0)){t=c[b+8>>2]|0;d=(B(c[b+12>>2]<<7,t)|0)+d|0;e=(B(t<<7,c[b+4>>2]|0)|0)+e|0}b=c[b+44>>2]|0}while((b|0)!=0);b=e}if((d|0)<1)return;e=Rw(a,d,b,c[s+76>>2]|0)|0;if((e|0)<(b|0)){t=(e|0)/(d|0)|0;t=(t|0)>1?t:1}else t=1e9;b=c[f>>2]|0;if(b|0){q=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;p=b+16|0;c[p>>2]=d;d=b+8|0;Sw(a,b+48|0,B(c[d>>2]|0,e)|0);c[b+40>>2]=1;e=c[p>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;d=999999984/(p>>>0)|0;if(p>>>0>999999984){o=c[a>>2]|0;c[o+20>>2]=72;Sb[c[o>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,p)|0;i=c[u>>2]|0;if(f>>>0>999999984){m=c[a>>2]|0;c[m+20>>2]=56;c[m+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}h=f&7;f=((h|0)==0?0:8-h|0)+f|0;h=f+16|0;m=Tw(a,h)|0;if(!m){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}l=i+76|0;c[l>>2]=(c[l>>2]|0)+h;l=i+64|0;c[m>>2]=c[l>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[l>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+p|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[q>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0)}b=c[r>>2]|0;if(!b)return;r=s+80|0;do{if(!(c[b>>2]|0)){e=c[b+4>>2]|0;d=c[b+12>>2]|0;if(((((e+-1|0)>>>0)/(d>>>0)|0)+1|0)>(t|0)){d=B(d,t)|0;s=b+16|0;c[s>>2]=d;d=b+8|0;Sw(a,b+48|0,B(e<<7,c[d>>2]|0)|0);c[b+40>>2]=1;e=c[s>>2]|0}else{c[b+16>>2]=e;d=b+8|0}p=c[d>>2]|0;f=c[u>>2]|0;q=p<<7;d=999999984/(q>>>0)|0;if(q>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=72;Sb[c[s>>2]&255](a)}g=(d|0)<(e|0)?d:e;c[f+80>>2]=g;n=Ew(a,1,e<<2)|0;if(e|0){o=~e;d=0;do{f=e-d|0;j=g;g=g>>>0>>0?g:f;f=B(g,q)|0;h=c[u>>2]|0;if(f>>>0>999999984){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=3;Sb[c[c[a>>2]>>2]&255](a)}i=f|16;m=Tw(a,i)|0;if(!m){s=c[a>>2]|0;c[s+20>>2]=56;c[s+24>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}s=h+76|0;c[s>>2]=(c[s>>2]|0)+i;s=h+64|0;c[m>>2]=c[s>>2];c[m+4>>2]=f;c[m+8>>2]=0;c[s>>2]=m;if(g){l=d+o|0;j=~j;k=l>>>0>j>>>0;i=g;f=m+16|0;h=d;while(1){c[n+(h<<2)>>2]=f;i=i+-1|0;if(!i)break;else{f=f+(p<<7)|0;h=h+1|0}}d=d+-1-(k?l:j)|0}}while(d>>>0>>0)}c[b>>2]=n;c[b+20>>2]=c[r>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0}while((b|0)!=0);return}function Lw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]|0;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]|0;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);g=c[m>>2]|0;j=g+j|0;e=c[k>>2]|0;if((e|0)<=(j|0))break a;r=e-j|0;r=(g|0)<(r|0)?g:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]|0;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Mw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=e+d|0;s=b+4|0;if(!((w>>>0<=(c[s>>2]|0)>>>0?(c[b+12>>2]|0)>>>0>=e>>>0:0)?(c[b>>2]|0)!=0:0)){x=c[a>>2]|0;c[x+20>>2]=23;Sb[c[x>>2]&255](a)}x=b+24|0;n=c[x>>2]|0;if(!(n>>>0<=d>>>0?w>>>0<=((c[b+16>>2]|0)+n|0)>>>0:0))v=7;a:do if((v|0)==7){if(!(c[b+40>>2]|0)){n=c[a>>2]|0;c[n+20>>2]=71;Sb[c[n>>2]&255](a)}k=b+36|0;if(c[k>>2]|0){l=c[b+8>>2]<<7;e=c[x>>2]|0;m=b+20|0;n=b+16|0;g=c[n>>2]|0;b:do if((g|0)>0?(o=b+28|0,p=b+48|0,q=b+52|0,h=c[m>>2]|0,h=(h|0)<(g|0)?h:g,j=(c[o>>2]|0)-e|0,j=(h|0)<(j|0)?h:j,h=(c[s>>2]|0)-e|0,h=(j|0)<(h|0)?j:h,(h|0)>=1):0){i=B(e,l)|0;j=0;e=h;while(1){h=B(e,l)|0;Yb[c[q>>2]&63](a,p,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[n>>2]|0;if((g|0)<=(j|0))break b;y=g-j|0;y=(e|0)<(y|0)?e:y;e=j+(c[x>>2]|0)|0;g=(c[o>>2]|0)-e|0;g=(y|0)<(g|0)?y:g;e=(c[s>>2]|0)-e|0;e=(g|0)<(e|0)?g:e;if((e|0)<1)break;else i=h+i|0}}while(0);c[k>>2]=0}k=b+16|0;e=c[k>>2]|0;if((c[x>>2]|0)>>>0>>0)g=d;else{g=w-e|0;g=(g|0)>0?g:0}c[x>>2]=g;l=c[b+8>>2]<<7;m=b+20|0;if((e|0)>0?(t=b+28|0,u=b+48|0,r=c[m>>2]|0,r=(r|0)<(e|0)?r:e,y=(c[t>>2]|0)-g|0,y=(r|0)<(y|0)?r:y,r=(c[s>>2]|0)-g|0,r=(y|0)<(r|0)?y:r,(r|0)>=1):0){i=B(l,g)|0;j=0;e=r;while(1){h=B(e,l)|0;Yb[c[u>>2]&63](a,u,c[(c[b>>2]|0)+(j<<2)>>2]|0,i,h);e=c[m>>2]|0;j=e+j|0;g=c[k>>2]|0;if((g|0)<=(j|0))break a;r=g-j|0;r=(e|0)<(r|0)?e:r;e=j+(c[x>>2]|0)|0;y=(c[t>>2]|0)-e|0;y=(r|0)<(y|0)?r:y;e=(c[s>>2]|0)-e|0;e=(y|0)<(e|0)?y:e;if((e|0)<1)break;else i=h+i|0}}}while(0);h=b+28|0;e=c[h>>2]|0;do if(e>>>0>>0){g=(f|0)==0;if(e>>>0>>0)if(g){e=d;g=0}else{e=c[a>>2]|0;c[e+20>>2]=23;Sb[c[e>>2]&255](a);e=d;v=28}else if(g)g=0;else v=28;if((v|0)==28){c[h>>2]=w;g=1}if(!(c[b+32>>2]|0)){if(g)break;y=c[a>>2]|0;c[y+20>>2]=23;Sb[c[y>>2]&255](a);break}h=c[b+8>>2]<<7;g=c[x>>2]|0;e=e-g|0;g=w-g|0;if(e>>>0>>0)do{aP(c[(c[b>>2]|0)+(e<<2)>>2]|0,0,h|0)|0;e=e+1|0}while((e|0)!=(g|0))}while(0);if(!f){f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}c[b+36>>2]=1;f=c[b>>2]|0;y=c[x>>2]|0;y=d-y|0;y=f+(y<<2)|0;return y|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){f=g+68|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0;f=g+72|0;d=c[f>>2]|0;if(d|0)do{e=d+40|0;if(c[e>>2]|0){c[e>>2]=0;Ub[c[d+56>>2]&63](a,d+48|0)}d=c[d+44>>2]|0}while((d|0)!=0);c[f>>2]=0}}else{f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}f=g+60+(b<<2)|0;d=c[f>>2]|0;c[f>>2]=0;if(d|0){e=g+76|0;do{h=d;d=c[d>>2]|0;f=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;Qw(a,h,f);c[e>>2]=(c[e>>2]|0)-f}while((d|0)!=0)}h=g+52+(b<<2)|0;d=c[h>>2]|0;c[h>>2]=0;if(!d)return;e=g+76|0;do{g=d;d=c[d>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;Pw(a,g,h);c[e>>2]=(c[e>>2]|0)-h}while((d|0)!=0);return}function Ow(a){a=a|0;var b=0;Nw(a,1);Nw(a,0);b=a+4|0;Pw(a,c[b>>2]|0,84);c[b>>2]=0;Dw(a);return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;GO(b);return}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Sb[c[d>>2]&255](a);return}function Tw(a,b){a=a|0;b=b|0;return FO(b)|0}function Uw(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d|0)Sb[c[d+40>>2]&255](a);c[b>>2]=0;c[a+20>>2]=0;return}function Vw(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Ub[c[b+36>>2]&63](a,1);b=a+20|0;if(!(c[a+16>>2]|0)){c[b>>2]=100;return}else{c[b>>2]=200;c[a+312>>2]=0;return}}function Ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[a+4>>2]=0;if((b|0)!=90){e=c[a>>2]|0;c[e+20>>2]=13;c[e+24>>2]=90;c[(c[a>>2]|0)+28>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}if((d|0)==488)b=a;else{b=c[a>>2]|0;c[b+20>>2]=22;c[b+24>>2]=488;c[(c[a>>2]|0)+28>>2]=d;Sb[c[c[a>>2]>>2]&255](a);b=a}f=c[a>>2]|0;d=a+12|0;e=c[d>>2]|0;aP(a+4|0,0,484)|0;c[a>>2]=f;c[d>>2]=e;c[a+16>>2]=1;Aw(b);c[a+8>>2]=0;c[a+24>>2]=0;c[a+312>>2]=0;b=a+164|0;d=b+48|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ut(a);Xw(a);c[a+20>>2]=200;return}function Xw(a){a=a|0;var b=0;b=Jb[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+460>>2]=b;c[b>>2]=90;c[b+4>>2]=137;c[b+8>>2]=138;c[b+12>>2]=139;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function Yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+460|0;b=c[G>>2]|0;H=b+20|0;if(c[H>>2]|0){a=2;return a|0}I=a+464|0;K=b+24|0;L=a+340|0;F=b+16|0;l=a+32|0;m=a+212|0;n=a+28|0;o=a+36|0;p=a+316|0;q=a+320|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+324|0;v=a+328|0;w=a+428|0;x=a+432|0;y=a+436|0;z=a+416|0;A=a+332|0;C=a+412|0;D=a+420|0;E=a+424|0;a:while(1){b=Gb[c[(c[I>>2]|0)+4>>2]&127](a)|0;switch(b|0){case 2:{k=58;break a}case 1:break;default:{k=63;break a}}b:do switch(c[K>>2]|0){case 0:{if(!(c[F>>2]|0)){j=c[a>>2]|0;c[j+20>>2]=36;Sb[c[j>>2]&255](a)}if(c[L>>2]|0){k=57;break a}break}case 1:{if(!((c[l>>2]|0)<=65500?(c[n>>2]|0)<=65500:0)){j=c[a>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Sb[c[c[a>>2]>>2]&255](a)}b=c[m>>2]|0;if((b+-8|0)>>>0>4){j=c[a>>2]|0;c[j+20>>2]=16;c[j+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}b=c[o>>2]|0;if((b|0)>10){j=c[a>>2]|0;c[j+20>>2]=27;c[j+24>>2]=b;c[(c[a>>2]|0)+28>>2]=10;Sb[c[c[a>>2]>>2]&255](a);b=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((b|0)>0){i=0;j=c[r>>2]|0;f=1;h=1;while(1){d=j+8|0;e=c[d>>2]|0;g=j+12|0;if((e+-1|0)>>>0<=3?(J=c[g>>2]|0,(J+-1|0)>>>0<=3):0)d=J;else{h=c[a>>2]|0;c[h+20>>2]=19;Sb[c[h>>2]&255](a);h=c[p>>2]|0;e=c[d>>2]|0;f=c[q>>2]|0;d=c[g>>2]|0;b=c[o>>2]|0}h=(h|0)>(e|0)?h:e;c[p>>2]=h;f=(f|0)>(d|0)?f:d;c[q>>2]=f;i=i+1|0;if((i|0)>=(b|0)){d=b;break}else j=j+88|0}}else d=b;c:do if(!(c[s>>2]|0)){if(c[t>>2]|0?c[L>>2]|0:0){k=22;break}do switch(c[z>>2]|0){case 0:{c[w>>2]=1;c[x>>2]=2064;c[y>>2]=0;b=1;break c}case 3:{c[w>>2]=2;c[x>>2]=3280;c[y>>2]=3;b=2;break c}case 8:{c[w>>2]=3;c[x>>2]=3168;c[y>>2]=8;b=3;break c}case 15:{c[w>>2]=4;c[x>>2]=3040;c[y>>2]=15;b=4;break c}case 24:{c[w>>2]=5;c[x>>2]=2864;c[y>>2]=24;b=5;break c}case 35:{c[w>>2]=6;c[x>>2]=2656;c[y>>2]=35;b=6;break c}case 48:{c[w>>2]=7;c[x>>2]=2384;c[y>>2]=48;b=7;break c}case 63:{c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8;break c}case 80:{c[w>>2]=9;c[x>>2]=2064;c[y>>2]=63;b=9;break c}case 99:{c[w>>2]=10;c[x>>2]=2064;c[y>>2]=63;b=10;break c}case 120:{c[w>>2]=11;c[x>>2]=2064;c[y>>2]=63;b=11;break c}case 143:{c[w>>2]=12;c[x>>2]=2064;c[y>>2]=63;b=12;break c}case 168:{c[w>>2]=13;c[x>>2]=2064;c[y>>2]=63;b=13;break c}case 195:{c[w>>2]=14;c[x>>2]=2064;c[y>>2]=63;b=14;break c}case 224:{c[w>>2]=15;c[x>>2]=2064;c[y>>2]=63;b=15;break c}case 255:{c[w>>2]=16;c[x>>2]=2064;c[y>>2]=63;b=16;break c}default:{b=c[a>>2]|0;c[b+20>>2]=17;c[b+24>>2]=c[C>>2];c[(c[a>>2]|0)+28>>2]=c[z>>2];c[(c[a>>2]|0)+32>>2]=c[D>>2];c[(c[a>>2]|0)+36>>2]=c[E>>2];Sb[c[c[a>>2]>>2]&255](a);b=c[w>>2]|0;d=c[o>>2]|0;break c}}while(0)}else k=22;while(0);if((k|0)==22){c[w>>2]=8;c[x>>2]=2064;c[y>>2]=63;b=8}c[u>>2]=b;c[v>>2]=b;if((d|0)>0){d=0;e=c[r>>2]|0;while(1){c[e+36>>2]=b;c[e+40>>2]=b;k=e+8|0;j=B(c[k>>2]|0,c[n>>2]|0)|0;b=yw(j,B(c[p>>2]|0,b)|0)|0;c[e+28>>2]=b;b=e+12|0;j=B(c[b>>2]|0,c[l>>2]|0)|0;j=yw(j,B(c[w>>2]|0,c[q>>2]|0)|0)|0;c[e+32>>2]=j;k=B(c[k>>2]|0,c[n>>2]|0)|0;k=yw(k,c[p>>2]|0)|0;c[e+44>>2]=k;b=B(c[b>>2]|0,c[l>>2]|0)|0;b=yw(b,c[q>>2]|0)|0;c[e+48>>2]=b;c[e+52>>2]=1;c[e+80>>2]=0;b=d+1|0;if((b|0)>=(c[o>>2]|0))break;d=b;e=e+88|0;b=c[w>>2]|0}b=c[w>>2]|0}b=yw(c[l>>2]|0,B(b,c[q>>2]|0)|0)|0;c[A>>2]=b;b=c[L>>2]|0;if((b|0)>=(c[o>>2]|0)?(c[t>>2]|0)==0:0){c[(c[G>>2]|0)+16>>2]=0;k=50;break b}c[(c[G>>2]|0)+16>>2]=1;k=50;break}default:{b=c[L>>2]|0;k=50}}while(0);if((k|0)==50){k=0;if(b|0){k=52;break}c[K>>2]=2}}if((k|0)==52){c[K>>2]=0;a=1;return a|0}else if((k|0)==57){_w(a);a=1;return a|0}else if((k|0)==58){c[H>>2]=1;if(!(c[K>>2]|0)){d=a+152|0;b=c[a+144>>2]|0;if((c[d>>2]|0)<=(b|0)){a=2;return a|0}c[d>>2]=b;a=2;return a|0}else{if(!(c[(c[I>>2]|0)+16>>2]|0)){a=2;return a|0}L=c[a>>2]|0;c[L+20>>2]=62;Sb[c[L>>2]&255](a);a=2;return a|0}}else if((k|0)==63)return b|0;return 0}function Zw(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[b>>2]=90;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;Sb[c[(c[a>>2]|0)+16>>2]&255](a);Sb[c[c[a+464>>2]>>2]&255](a);c[a+160>>2]=0;return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+340|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[(c[a>>2]|0)+28>>2]=4;Sb[c[c[a>>2]>>2]&255](a)}f=a+428|0;g=yw(c[a+28>>2]|0,B(c[f>>2]|0,c[a+316>>2]|0)|0)|0;c[a+360>>2]=g;f=yw(c[a+32>>2]|0,B(c[f>>2]|0,c[a+320>>2]|0)|0)|0;c[a+364>>2]=f;f=a+368|0;c[f>>2]=0;if((c[h>>2]|0)<=0){g=a+468|0;g=c[g>>2]|0;g=c[g>>2]|0;Sb[g&255](a);g=a+452|0;h=c[g>>2]|0;h=c[h>>2]|0;Sb[h&255](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;h=a+460|0;h=c[h>>2]|0;c[h>>2]=g;return}d=0;e=0;while(1){g=c[a+344+(d<<2)>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=B(j,k)|0;c[g+64>>2]=b;i=B(c[g+36>>2]|0,k)|0;c[g+68>>2]=i;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Sb[c[k>>2]&255](a)}if((b|0)>0)while(1){k=c[f>>2]|0;c[f>>2]=k+1;c[a+372+(k<<2)>>2]=d;if((b|0)>1)b=b+-1|0;else break}d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}}else{b=c[a+344>>2]|0;c[a+360>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+364>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;j=c[b+12>>2]|0;k=(k>>>0)%(j>>>0)|0;c[b+76>>2]=(k|0)==0?j:k;c[a+368>>2]=1;c[a+372>>2]=0;b=1}g=a+4|0;f=0;do{d=c[a+344+(f<<2)>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+164+(d<<2)|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}k=Jb[c[c[g>>2]>>2]&63](a,1,132)|0;_O(k|0,c[b>>2]|0,132)|0;c[e>>2]=k;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0));j=a+468|0;j=c[j>>2]|0;j=c[j>>2]|0;Sb[j&255](a);j=a+452|0;k=c[j>>2]|0;k=c[k>>2]|0;Sb[k&255](a);j=c[j>>2]|0;j=j+4|0;j=c[j>>2]|0;k=a+460|0;k=c[k>>2]|0;c[k>>2]=j;return}function $w(a){a=a|0;Sb[c[(c[a+468>>2]|0)+8>>2]&255](a);c[c[a+460>>2]>>2]=90;return}function ax(a){a=a|0;Uw(a);return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a)}d=cx(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(b){e=c[a>>2]|0;c[e+20>>2]=53;Sb[c[e>>2]&255](a)}Vw(a);e=2;return e|0}default:{e=d;return e|0}}return 0}function cx(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;i=b+20|0;d=c[i>>2]|0;switch(d|0){case 200:{d=b+460|0;Sb[c[(c[d>>2]|0)+4>>2]&255](b);Sb[c[(c[b+24>>2]|0)+8>>2]&255](b);c[i>>2]=201;break}case 201:{d=b+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{i=Gb[c[c[b+460>>2]>>2]&127](b)|0;return i|0}case 202:{i=1;return i|0}default:{i=c[b>>2]|0;c[i+20>>2]=21;c[i+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b);i=0;return i|0}}d=Gb[c[c[d>>2]>>2]&127](b)|0;if((d|0)!=1){i=d;return i|0}d=c[b+36>>2]|0;a:do switch(d|0){case 1:{e=d;break}case 3:{f=c[b+216>>2]|0;d=c[f>>2]|0;e=c[f+88>>2]|0;f=c[f+176>>2]|0;h=(d|0)==1;if(!(h&(e|0)==2&(f|0)==3))if(!(h&(e|0)==34&(f|0)==35))if(!((d|0)==82&(e|0)==71&(f|0)==66))if(!((d|0)==114&(e|0)==103&(f|0)==98))if(!(c[b+284>>2]|0)){if(!(c[b+296>>2]|0)){h=c[b>>2]|0;c[h+24>>2]=d;c[h+28>>2]=e;c[h+32>>2]=f;c[h+20>>2]=113;Ub[c[h+4>>2]&63](b,1);e=2;d=3;break a}d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=2;d=2;break a}case 1:{e=2;d=3;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=2;d=3;break a}}}else{e=2;d=3}else{e=2;d=6}else{e=2;d=2}else{e=2;d=7}else{e=2;d=3}break}case 4:{if(!(c[b+296>>2]|0)){e=4;d=4}else{d=a[b+300>>0]|0;switch(d<<24>>24){case 0:{e=4;d=4;break a}case 2:{e=4;d=5;break a}default:{e=c[b>>2]|0;c[e+20>>2]=116;c[e+24>>2]=d&255;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);e=4;d=5;break a}}}break}default:{e=0;d=0}}while(0);c[b+40>>2]=d;c[b+44>>2]=e;h=c[b+428>>2]|0;c[b+48>>2]=h;c[b+52>>2]=h;g[b+56>>3]=1.0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+76>>2]=1;c[b+80>>2]=1;c[b+84>>2]=0;c[b+88>>2]=2;c[b+92>>2]=1;c[b+96>>2]=256;c[b+136>>2]=0;c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;c[i>>2]=202;i=1;return i|0}function dx(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=c[b>>2]|0;if((d+-205|0)>>>0<2?(c[a+64>>2]|0)==0:0){if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){d=c[a>>2]|0;c[d+20>>2]=69;Sb[c[d>>2]&255](a)}Sb[c[(c[a+444>>2]|0)+4>>2]&255](a);c[b>>2]=210}else e=6;a:do if((e|0)==6)switch(d|0){case 210:break a;case 207:{c[b>>2]=210;break a}default:{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Sb[c[c[a>>2]>>2]&255](a);break a}}while(0);d=a+460|0;b=c[d>>2]|0;b:do if(!(c[b+20>>2]|0)){while(1){if(!(Gb[c[b>>2]&127](a)|0)){b=0;break}b=c[d>>2]|0;if(c[b+20>>2]|0)break b}return b|0}while(0);Sb[c[(c[a+24>>2]|0)+24>>2]&255](a);Vw(a);a=1;return a|0}function ex(a){a=a|0;c[a>>2]=140;c[a+4>>2]=53;c[a+8>>2]=141;c[a+12>>2]=54;c[a+16>>2]=142;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=3824;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function fx(a){a=a|0;Sb[c[(c[a>>2]|0)+8>>2]&255](a);Uw(a);Ea(1)}function gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Sb[c[d+8>>2]&255](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Sb[c[d+8>>2]&255](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function hx(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+208|0;d=b+200|0;e=b;Ub[c[(c[a>>2]|0)+12>>2]&63](a,e);a=c[4001]|0;c[d>>2]=e;Lz(a,46655,d)|0;zb=b;return}function ix(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+48|0;j=k+8|0;i=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;a:while(1){f=e+1|0;switch(a[e>>0]|0){case 0:break a;case 37:{g=12;break a}default:e=f}}if((g|0)==12?(a[f>>0]|0)==115:0){c[i>>2]=h+24;Hx(d,b,i)|0;zb=k;return}n=c[h+28>>2]|0;m=c[h+32>>2]|0;l=c[h+36>>2]|0;e=c[h+40>>2]|0;f=c[h+44>>2]|0;g=c[h+48>>2]|0;i=c[h+52>>2]|0;c[j>>2]=c[h+24>>2];c[j+4>>2]=n;c[j+8>>2]=m;c[j+12>>2]=l;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=i;Hx(d,b,j)|0;zb=k;return}function jx(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function kx(a){a=a|0;return (aa(px(c[a+60>>2]|0)|0)|0)&65535|0}function lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=zb;zb=zb+32|0;h=l;i=l+16|0;j=a+28|0;f=c[j>>2]|0;c[h>>2]=f;k=a+20|0;f=(c[k>>2]|0)-f|0;c[h+4>>2]=f;c[h+8>>2]=b;c[h+12>>2]=d;e=a+60|0;g=2;b=f+d|0;while(1){if(!(nx(da(c[e>>2]|0,h|0,g|0,i|0)|0)|0))f=c[i>>2]|0;else{c[i>>2]=-1;f=-1}if((b|0)==(f|0)){b=6;break}if((f|0)<0){b=8;break}p=c[h+4>>2]|0;n=f>>>0>p>>>0;m=n?h+8|0:h;p=f-(n?p:0)|0;c[m>>2]=(c[m>>2]|0)+p;o=m+4|0;c[o>>2]=(c[o>>2]|0)-p;g=g+(n<<31>>31)|0;b=b-f|0;h=m}if((b|0)==6){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}else if((b|0)==8){c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)d=0;else d=d-(c[h+4>>2]|0)|0}zb=l;return d|0}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+16|0;f=g;if(!(nx(ca(c[a+60>>2]|0,b|0,d|0,e&255|0,f|0)|0)|0)){b=f;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=f;c[a>>2]=-1;c[a+4>>2]=-1;a=-1;b=-1}E(a|0);zb=g;return b|0}function nx(a){a=a|0;var b=0;if(!(a<<16>>16))a=0;else{b=ox()|0;c[b>>2]=a&65535;a=-1}return a|0}function ox(){return 55620}function px(a){a=a|0;return a|0}function qx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+32|0;i=l;f=l+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;if(!(nx(ba(c[b+60>>2]|0,i|0,2,f|0)|0)|0)){f=c[f>>2]|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else k=4}else{c[f>>2]=-1;f=-1;k=4}if((k|0)==4)c[b>>2]=f&48^16|c[b>>2];zb=l;return f|0}function rx(a){a=a|0;return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;E(0);return 0}function tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=ux(a,b,c)|0;E(F()|0);return d|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,-1,-1)|0;E(F()|0);return c|0}function vx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+144|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;wx(h,0,0);d=xx(h,d,1,e,f)|0;e=F()|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+120>>2]|0)-(c[g>>2]|0));E(e|0);zb=j;return d|0}function wx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=a+112|0;c[f>>2]=b;c[f+4>>2]=d;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;h=((g|0)<0)<<31>>31;i=a+120|0;c[i>>2]=g;c[i+4>>2]=h;if(((b|0)!=0|(d|0)!=0)&((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>b>>>0))c[a+104>>2]=e+b;else c[a+104>>2]=f;return}function xx(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){h=ox()|0;c[h>>2]=28;h=0;g=0}else{r=b+4|0;q=b+104|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while((zx(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=yx(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((i|32|0)!=120)if(j){o=8;n=47;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0;if((d[5937+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){wx(b,0,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{o=16;n=47}}else{e=j?10:e;if(e>>>0>(d[5937+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;wx(b,0,0);h=ox()|0;c[h>>2]=28;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;do{i=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&i>>>0<429496729);if(e>>>0<10){m=0;do{f=NO(i|0,m|0,10,0)|0;k=F()|0;l=((e|0)<0)<<31>>31;o=~l;if(k>>>0>o>>>0|(k|0)==(o|0)&f>>>0>~e>>>0){f=10;e=m;n=76;break c}i=OO(f|0,k|0,e|0,l|0)|0;m=F()|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=j+-48|0}while(e>>>0<10&(m>>>0<429496729|(m|0)==429496729&i>>>0<2576980378));if(e>>>0>9){j=p;e=m}else{f=10;e=m;n=76}}else{j=p;e=0}}else{j=p;e=0;i=0}}else{o=e;n=47}while(0);d:do if((n|0)==47){if(!(o+-1&o)){n=a[46659+((o*23|0)>>>5&7)>>0]|0;f=a[5937+i>>0]|0;e=f&255;if(o>>>0>e>>>0){i=0;do{i=e|i<>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;e=f&255}while(i>>>0<134217728&o>>>0>e>>>0);k=e;e=0}else{j=i;k=e;e=0;i=0}l=TO(-1,-1,n|0)|0;m=F()|0;if(o>>>0<=k>>>0|(m>>>0>>0|(m|0)==(e|0)&l>>>0>>0)){f=o;n=76;break}while(1){i=UO(i|0,e|0,n|0)|0;e=F()|0;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0|(e>>>0>m>>>0|(e|0)==(m|0)&i>>>0>l>>>0)){f=o;n=76;break d}}}e=a[5937+i>>0]|0;f=e&255;if(o>>>0>f>>>0){i=0;do{i=f+(B(i,o)|0)|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=yx(b)|0;e=a[5937+j>>0]|0;f=e&255}while(i>>>0<119304647&o>>>0>f>>>0);k=e;e=0}else{j=i;k=e;i=0;e=0}if(o>>>0>f>>>0){m=SO(-1,-1,o|0,0)|0;n=F()|0;f=k;while(1){if(e>>>0>n>>>0|(e|0)==(n|0)&i>>>0>m>>>0){f=o;n=76;break d}k=NO(i|0,e|0,o|0,0)|0;l=F()|0;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=o;n=76;break d}i=OO(k|0,l|0,f|0,0)|0;e=F()|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=yx(b)|0;f=a[5937+j>>0]|0;if(o>>>0<=(f&255)>>>0){f=o;n=76;break}}}else{f=o;n=76}}while(0);if((n|0)==76)if(f>>>0>(d[5937+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=yx(b)|0}while(f>>>0>(d[5937+i>>0]|0)>>>0);j=ox()|0;c[j>>2]=68;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else j=p;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){r=ox()|0;c[r>>2]=68;g=OO(g|0,h|0,-1,-1)|0;h=F()|0;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){r=ox()|0;c[r>>2]=68;break}}g=((j|0)<0)<<31>>31;g=PO(i^j|0,e^g|0,j|0,g|0)|0;h=F()|0}while(0);E(h|0);return g|0}function yx(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+112|0;f=g;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0)?(i=b+120|0,h=c[i+4>>2]|0,!((h|0)<(f|0)|((h|0)==(f|0)?(c[i>>2]|0)>>>0>>0:0))):0)j=4;else{e=Ax(b)|0;if((e|0)>=0){f=c[g>>2]|0;g=c[g+4>>2]|0;i=c[b+8>>2]|0;if(!((f|0)==0&(g|0)==0)){h=c[b+4>>2]|0;k=i-h|0;l=((k|0)<0)<<31>>31;m=b+120|0;f=PO(f|0,g|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=F()|0;g=i;if((m|0)>(l|0)|(m|0)==(l|0)&f>>>0>k>>>0)j=9;else c[b+104>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+104>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;k=g+1-f|0;m=b+120|0;l=m;k=OO(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=F()|0;c[m>>2]=k;c[m+4>>2]=l}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+104>>2]=0;e=-1}return e|0}function zx(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Ax(a){a=a|0;var b=0,e=0;e=zb;zb=zb+16|0;b=e;if((Bx(a)|0)==0?(Jb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;zb=e;return a|0}function Bx(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Jb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Dx(a,b,c)|0;E(F()|0);return d|0}function Dx(a,b,c){a=a|0;b=b|0;c=c|0;c=vx(a,b,c,0,-2147483648)|0;E(F()|0);return c|0}function Ex(a,b){a=+a;b=+b;var d=0,e=0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;g[h>>3]=b;d=c[h+4>>2]&-2147483648|d&2147483647;c[h>>2]=e;c[h+4>>2]=d;return +(+g[h>>3])}function Fx(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gx(a){a=a|0;return (a+-48|0)>>>0<10|0}function Hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Ix(a,b,f)|0;zb=e;return d|0}function Ix(a,b,c){a=a|0;b=b|0;c=c|0;return Jx(a,2147483647,b,c)|0}function Jx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+160|0;g=j+144|0;i=j;_O(i|0,13736,144)|0;if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;h=4}else{d=ox()|0;c[d>>2]=61;d=-1}else h=4;if((h|0)==4){h=-2-b|0;h=d>>>0>h>>>0?h:d;c[i+48>>2]=h;g=i+20|0;c[g>>2]=b;c[i+44>>2]=b;d=b+h|0;b=i+16|0;c[b>>2]=d;c[i+28>>2]=d;d=Kx(i,e,f)|0;if(h){i=c[g>>2]|0;a[i+(((i|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}zb=j;return d|0}function Kx(a,b,c){a=a|0;b=b|0;c=c|0;return Nx(a,b,c,1,55)|0}function Lx(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0;H=zb;zb=zb+560|0;l=H+32|0;u=H+536|0;G=H;E=G;m=H+540|0;c[u>>2]=0;D=m+12|0;dy(e)|0;j=F()|0;if((j|0)<0){e=-e;dy(e)|0;C=1;A=46685;j=F()|0}else{C=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?46686:46691):46688}do if(0==0&(j&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;Yx(b,32,f,j,h&-65537);Rx(b,A,C);Rx(b,e!=e|0.0!=0.0?(G?46727:46712):G?46704:46708,3);Yx(b,32,f,j,h^8192)}else{q=+ey(e,u)*2.0;j=q!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;t=i|32;if((t|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[r>>0]|0)==45){e=-(e+(-q-e));break}else{e=q+e-e;break}}else e=q;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Wx(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;a[n>>0]=i+15;k=(g|0)<1;l=(h&8|0)==0;m=G;do{C=~~e;j=m+1|0;a[m>>0]=o|d[6672+C>>0];e=(e-+(C|0))*16.0;if((j-E|0)==1?!(l&(k&e==0.0)):0){a[j>>0]=46;m=m+2|0}else m=j}while(e!=0.0);if((g|0)!=0?(-2-E+m|0)<(g|0):0){k=D;l=n;j=g+2+k-l|0}else{k=D;l=n;j=k-E-l+m|0}D=j+p|0;Yx(b,32,f,D,h);Rx(b,r,p);Yx(b,48,f,D,h^65536);E=m-E|0;Rx(b,G,E);G=k-l|0;Yx(b,48,j-(E+G)|0,0,0);Rx(b,n,G);Yx(b,32,f,D,h^8192);j=D;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=q*268435456.0}else{e=q;j=c[u>>2]|0}z=(j|0)<0?l:l+288|0;l=z;do{x=~~e>>>0;c[l>>2]=x;l=l+4|0;e=(e-+(x>>>0))*1.0e9}while(e!=0.0);x=z;if((j|0)>0){o=z;while(1){n=(j|0)<29?j:29;j=l+-4|0;if(j>>>0>=o>>>0){m=0;do{s=UO(c[j>>2]|0,0,n|0)|0;s=OO(s|0,F()|0,m|0,0)|0;v=F()|0;m=SO(s|0,v|0,1e9,0)|0;w=NO(m|0,F()|0,1e9,0)|0;w=PO(s|0,v|0,w|0,F()|0)|0;F()|0;c[j>>2]=w;j=j+-4|0}while(j>>>0>=o>>>0);if(m){w=o+-4|0;c[w>>2]=m;m=w}else m=o}else m=o;a:do if(l>>>0>m>>>0){j=l;while(1){l=j+-4|0;if(c[l>>2]|0){l=j;break a}if(l>>>0>m>>>0)j=l;else break}}while(0);j=(c[u>>2]|0)-n|0;c[u>>2]=j;if((j|0)>0)o=m;else break}}else m=z;if((j|0)<0){g=((k+25|0)/9|0)+1|0;s=(t|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{w=c[j>>2]|0;c[j>>2]=(w>>>r)+p;p=B(w&n,o)|0;j=j+4|0}while(j>>>0>>0);m=(c[m>>2]|0)==0?m+4|0:m;if(p){c[l>>2]=p;l=l+4|0}}else m=(c[m>>2]|0)==0?m+4|0:m;j=s?z:m;l=(l-j>>2|0)>(g|0)?j+(g<<2)|0:l;j=(c[u>>2]|0)+r|0;c[u>>2]=j}while((j|0)<0);s=m}else s=m;if(s>>>0>>0){j=(x-s>>2)*9|0;n=c[s>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;v=(t|0)==103;w=(k|0)!=0;m=k-((t|0)==102?0:j)+((w&v)<<31>>31)|0;if((m|0)<(((l-x>>2)*9|0)+-9|0)){u=m+9216|0;m=(u|0)/9|0;g=z+4+(m+-1024<<2)|0;m=u-(m*9|0)|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;p=c[g>>2]|0;m=(p>>>0)/(n>>>0)|0;r=p-(B(m,n)|0)|0;o=(g+4|0)==(l|0);if(!(o&(r|0)==0)){q=(m&1|0)==0?9007199254740992.0:9007199254740994.0;u=n>>>1;e=r>>>0>>0?.5:o&(r|0)==(u|0)?1.0:1.5;if(C){u=(a[A>>0]|0)==45;e=u?-e:e;q=u?-q:q}m=p-r|0;c[g>>2]=m;if(q+e!=q){u=m+n|0;c[g>>2]=u;if(u>>>0>999999999){n=g;j=s;while(1){m=n+-4|0;c[n>>2]=0;if(m>>>0>>0){j=j+-4|0;c[j>>2]=0}u=(c[m>>2]|0)+1|0;c[m>>2]=u;if(u>>>0>999999999)n=m;else{n=j;break}}}else{m=g;n=s}j=(x-n>>2)*9|0;p=c[n>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;j=j+1|0}while(p>>>0>=o>>>0)}}else{m=g;n=s}}else{m=g;n=s}u=m+4|0;l=l>>>0>u>>>0?u:l}else n=s;g=0-j|0;b:do if(l>>>0>n>>>0)while(1){m=l+-4|0;if(c[m>>2]|0){u=l;t=1;break b}if(m>>>0>n>>>0)l=m;else{u=m;t=0;break}}else{u=l;t=0}while(0);do if(v){k=k+((w^1)&1)|0;if((k|0)>(j|0)&(j|0)>-5){o=i+-1|0;k=k+-1-j|0}else{o=i+-2|0;k=k+-1|0}if(!(h&8)){if(t?(y=c[u+-4>>2]|0,(y|0)!=0):0)if(!((y>>>0)%10|0)){m=0;l=10;do{l=l*10|0;m=m+1|0}while(!((y>>>0)%(l>>>0)|0|0))}else m=0;else m=9;l=((u-x>>2)*9|0)+-9|0;if((o|32|0)==102){i=l-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}else{i=l+j-m|0;i=(i|0)>0?i:0;k=(k|0)<(i|0)?k:i;break}}}else o=i;while(0);s=(k|0)!=0;p=s?1:h>>>3&1;r=(o|32|0)==102;if(r){v=0;j=(j|0)>0?j:0}else{l=(j|0)<0?g:j;l=Wx(l,((l|0)<0)<<31>>31,D)|0;m=D;if((m-l|0)<2)do{l=l+-1|0;a[l>>0]=48}while((m-l|0)<2);a[l+-1>>0]=(j>>31&2)+43;j=l+-2|0;a[j>>0]=o;v=j;j=m-j|0}j=C+1+k+p+j|0;Yx(b,32,f,j,h);Rx(b,A,C);Yx(b,48,f,j,h^65536);if(r){p=n>>>0>z>>>0?z:n;r=G+9|0;n=r;o=G+8|0;m=p;do{l=Wx(c[m>>2]|0,0,r)|0;if((m|0)==(p|0)){if((l|0)==(r|0)){a[o>>0]=48;l=o}}else if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,n-l|0);m=m+4|0}while(m>>>0<=z>>>0);if(!((h&8|0)==0&(s^1)))Rx(b,46716,1);if(m>>>0>>0&(k|0)>0)while(1){l=Wx(c[m>>2]|0,0,r)|0;if(l>>>0>G>>>0){aP(G|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}Rx(b,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}Yx(b,48,k+9|0,9,0)}else{u=t?u:n+4|0;if(n>>>0>>0&(k|0)>-1){g=G+9|0;s=(h&8|0)==0;t=g;p=0-E|0;r=G+8|0;o=n;do{l=Wx(c[o>>2]|0,0,g)|0;if((l|0)==(g|0)){a[r>>0]=48;l=r}do if((o|0)==(n|0)){m=l+1|0;Rx(b,l,1);if(s&(k|0)<1){l=m;break}Rx(b,46716,1);l=m}else{if(l>>>0<=G>>>0)break;aP(G|0,48,l+p|0)|0;do l=l+-1|0;while(l>>>0>G>>>0)}while(0);E=t-l|0;Rx(b,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}Yx(b,48,k+18|0,18,0);Rx(b,v,D-v|0)}Yx(b,32,f,j,h^8192)}while(0);zb=H;return ((j|0)<(f|0)?f:j)|0}function Mx(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=(c[b>>2]|0)+(8-1)&~(8-1);d=+g[e>>3];c[b>>2]=e+8;g[a>>3]=d;return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=zb;zb=zb+224|0;p=t+208|0;q=t+160|0;r=t+80|0;s=t;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[p>>2]=c[e>>2];if((Ox(0,d,p,r,q,f,g)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=Px(b)|0;else o=0;e=c[b>>2]|0;n=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;h=b+48|0;if(!(c[h>>2]|0)){i=b+44|0;j=c[i>>2]|0;c[i>>2]=s;k=b+28|0;c[k>>2]=s;l=b+20|0;c[l>>2]=s;c[h>>2]=80;m=b+16|0;c[m>>2]=s+80;e=Ox(b,d,p,r,q,f,g)|0;if(j){Jb[c[b+36>>2]&63](b,0,0)|0;e=(c[l>>2]|0)==0?-1:e;c[i>>2]=j;c[h>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else e=Ox(b,d,p,r,q,f,g)|0;h=c[b>>2]|0;c[b>>2]=h|n;if(o|0)Qx(b);e=(h&32|0)==0?e:-1}zb=t;return e|0}function Ox(d,e,f,h,i,j,k){d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0;J=zb;zb=zb+64|0;G=J+56|0;I=J+40|0;A=J;C=J+48|0;D=J+60|0;c[G>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=C+4|0;l=0;e=0;n=0;a:while(1){do{do if((e|0)>-1)if((l|0)>(2147483647-e|0)){e=ox()|0;c[e>>2]=61;e=-1;break}else{e=l+e|0;break}while(0);r=c[G>>2]|0;l=a[r>>0]|0;if(!(l<<24>>24)){w=92;break a}m=r;b:while(1){switch(l<<24>>24){case 37:{w=10;break b}case 0:{l=m;break b}default:{}}v=m+1|0;c[G>>2]=v;l=a[v>>0]|0;m=v}c:do if((w|0)==10){w=0;l=m;do{if((a[m+1>>0]|0)!=37)break c;l=l+1|0;m=m+2|0;c[G>>2]=m}while((a[m>>0]|0)==37)}while(0);l=l-r|0;if(x)Rx(d,r,l)}while((l|0)!=0);v=(Gx(a[(c[G>>2]|0)+1>>0]|0)|0)==0;m=c[G>>2]|0;if(!v?(a[m+2>>0]|0)==36:0){t=(a[m+1>>0]|0)+-48|0;p=1;l=3}else{t=-1;p=n;l=1}l=m+l|0;c[G>>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0;if(n>>>0>31|(1<>2]=l;m=a[l>>0]|0;n=(m<<24>>24)+-32|0}while(!(n>>>0>31|(1<>24==42){if((Gx(a[l+1>>0]|0)|0)!=0?(H=c[G>>2]|0,(a[H+2>>0]|0)==36):0){l=H+1|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;n=1;m=H+3|0}else{if(p|0){e=-1;break}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);l=c[v>>2]|0;c[f>>2]=v+4}else l=0;n=0;m=(c[G>>2]|0)+1|0}c[G>>2]=m;v=(l|0)<0;u=v?0-l|0:l;o=v?o|8192:o;v=n}else{l=Sx(G)|0;if((l|0)<0){e=-1;break}u=l;v=p;m=c[G>>2]|0}do if((a[m>>0]|0)==46){l=m+1|0;if((a[l>>0]|0)!=42){c[G>>2]=l;l=Sx(G)|0;m=c[G>>2]|0;break}if(Gx(a[m+2>>0]|0)|0?(E=c[G>>2]|0,(a[E+3>>0]|0)==36):0){l=E+2|0;c[i+((a[l>>0]|0)+-48<<2)>>2]=10;l=c[h+((a[l>>0]|0)+-48<<3)>>2]|0;m=E+4|0;c[G>>2]=m;break}if(v|0){e=-1;break a}if(x){s=(c[f>>2]|0)+(4-1)&~(4-1);l=c[s>>2]|0;c[f>>2]=s+4}else l=0;m=(c[G>>2]|0)+2|0;c[G>>2]=m}else l=-1;while(0);s=0;while(1){if(((a[m>>0]|0)+-65|0)>>>0>57){e=-1;break a}n=m;m=m+1|0;c[G>>2]=m;n=a[(a[n>>0]|0)+-65+(6208+(s*58|0))>>0]|0;p=n&255;if((p+-1|0)>>>0>=8)break;else s=p}if(!(n<<24>>24)){e=-1;break}q=(t|0)>-1;do if(n<<24>>24==19)if(q){e=-1;break a}else w=54;else{if(q){c[i+(t<<2)>>2]=p;q=h+(t<<3)|0;t=c[q+4>>2]|0;w=I;c[w>>2]=c[q>>2];c[w+4>>2]=t;w=54;break}if(!x){e=0;break a}Tx(I,p,f,k);m=c[G>>2]|0;w=55}while(0);if((w|0)==54){w=0;if(x)w=55;else l=0}d:do if((w|0)==55){w=0;m=a[m+-1>>0]|0;m=(s|0)!=0&(m&15|0)==3?m&-33:m;n=o&-65537;t=(o&8192|0)==0?o:n;e:do switch(m|0){case 110:switch((s&255)<<24>>24){case 0:{c[c[I>>2]>>2]=e;l=0;break d}case 1:{c[c[I>>2]>>2]=e;l=0;break d}case 2:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}case 3:{b[c[I>>2]>>1]=e;l=0;break d}case 4:{a[c[I>>2]>>0]=e;l=0;break d}case 6:{c[c[I>>2]>>2]=e;l=0;break d}case 7:{l=c[I>>2]|0;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=0;break d}default:{l=0;break d}}case 112:{m=120;l=l>>>0>8?l:8;n=t|8;w=67;break}case 88:case 120:{n=t;w=67;break}case 111:{q=I;q=Vx(c[q>>2]|0,c[q+4>>2]|0,y)|0;n=z-q|0;o=0;p=46668;l=(t&8|0)==0|(l|0)>(n|0)?l:n+1|0;n=t;w=73;break}case 105:case 100:{n=I;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){m=PO(0,0,m|0,n|0)|0;n=F()|0;o=I;c[o>>2]=m;c[o+4>>2]=n;o=1;p=46668;w=72;break e}else{o=(t&2049|0)!=0&1;p=(t&2048|0)==0?((t&1|0)==0?46668:46670):46669;w=72;break e}}case 117:{n=I;o=0;p=46668;m=c[n>>2]|0;n=c[n+4>>2]|0;w=72;break}case 99:{a[A>>0]=c[I>>2];r=A;o=0;p=46668;q=1;m=n;l=z;break}case 115:{s=c[I>>2]|0;s=(s|0)==0?46678:s;t=Xx(s,0,l)|0;K=(t|0)==0;r=s;o=0;p=46668;q=K?l:t-s|0;m=n;l=K?s+l|0:t;break}case 67:{c[C>>2]=c[I>>2];c[B>>2]=0;c[I>>2]=C;p=-1;w=79;break}case 83:{if(!l){Yx(d,32,u,0,t);l=0;w=89}else{p=l;w=79}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{l=Hb[j&1](d,+g[I>>3],u,l,t,m)|0;break d}default:{o=0;p=46668;q=l;m=t;l=z}}while(0);f:do if((w|0)==67){q=I;q=Ux(c[q>>2]|0,c[q+4>>2]|0,y,m&32)|0;p=I;p=(n&8|0)==0|(c[p>>2]|0)==0&(c[p+4>>2]|0)==0;o=p?0:2;p=p?46668:46668+(m>>>4)|0;w=73}else if((w|0)==72){q=Wx(m,n,y)|0;n=t;w=73}else if((w|0)==79){w=0;o=c[I>>2]|0;l=0;while(1){m=c[o>>2]|0;if(!m)break;m=Zx(D,m)|0;n=(m|0)<0;if(n|m>>>0>(p-l|0)>>>0){w=83;break}l=m+l|0;if(p>>>0>l>>>0)o=o+4|0;else break}if((w|0)==83){w=0;if(n){e=-1;break a}}Yx(d,32,u,l,t);if(!l){l=0;w=89}else{n=c[I>>2]|0;o=0;while(1){m=c[n>>2]|0;if(!m){w=89;break f}m=Zx(D,m)|0;o=m+o|0;if((o|0)>(l|0)){w=89;break f}Rx(d,D,m);if(o>>>0>=l>>>0){w=89;break}else n=n+4|0}}}while(0);if((w|0)==73){w=0;m=I;m=(c[m>>2]|0)!=0|(c[m+4>>2]|0)!=0;K=(l|0)!=0|m;m=z-q+((m^1)&1)|0;r=K?q:y;q=K?((l|0)>(m|0)?l:m):0;m=(l|0)>-1?n&-65537:n;l=z}else if((w|0)==89){w=0;Yx(d,32,u,l,t^8192);l=(u|0)>(l|0)?u:l;break}t=l-r|0;s=(q|0)<(t|0)?t:q;K=s+o|0;l=(u|0)<(K|0)?K:u;Yx(d,32,l,K,m);Rx(d,p,o);Yx(d,48,l,K,m^65536);Yx(d,48,s,t,0);Rx(d,r,t);Yx(d,32,l,K,m^8192)}while(0);n=v}g:do if((w|0)==92)if(!d)if(!n)e=0;else{e=1;while(1){l=c[i+(e<<2)>>2]|0;if(!l)break;Tx(h+(e<<3)|0,l,f,k);e=e+1|0;if(e>>>0>=10){e=1;break g}}while(1){if(c[i+(e<<2)>>2]|0){e=-1;break g}e=e+1|0;if(e>>>0>=10){e=1;break}}}while(0);zb=J;return e|0}function Px(a){a=a|0;return 1}function Qx(a){a=a|0;return}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))by(b,d,a)|0;return}function Sx(b){b=b|0;var d=0,e=0;if(!(Gx(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((Gx(a[e>>0]|0)|0)!=0)}return d|0}function Tx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);e=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=e;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);h=+g[f>>3];c[d>>2]=f+8;g[a>>3]=h;break a}case 18:{Ub[e&63](a,d);break a}default:break a}while(0);while(0);return}function Ux(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6672+(b&15)>>0]|0|f;b=TO(b|0,c|0,4)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return e|0}function Vx(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=TO(b|0,c|0,3)|0;c=F()|0}while(!((b|0)==0&(c|0)==0));return d|0}function Wx(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){do{e=b;b=SO(b|0,c|0,10,0)|0;f=c;c=F()|0;g=NO(b|0,c|0,10,0)|0;g=PO(e|0,f|0,g|0,F()|0)|0;F()|0;d=d+-1|0;a[d>>0]=g&255|48}while(f>>>0>9|(f|0)==9&e>>>0>4294967295);c=b}else c=b;if(c)do{g=c;c=(c>>>0)/10|0;d=d+-1|0;a[d>>0]=g-(c*10|0)|48}while(g>>>0>=10);return d|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else i=16;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)==g<<24>>24)if(!e){i=16;break}else break;f=B(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break c;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break}}else i=11;while(0);if((i|0)==11)if(!e){i=16;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;e=e+-1|0;if(!e){i=16;break}else b=b+1|0}}while(0);if((i|0)==16)b=0;return b|0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=zb;zb=zb+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;aP(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Rx(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Rx(a,f,e)}zb=g;return}function Zx(a,b){a=a|0;b=b|0;if(!a)a=0;else a=_x(a,b,0)|0;return a|0}function _x(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}e=($x()|0)+188|0;if(!(c[c[e>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{b=ox()|0;c[b>>2]=25;b=-1;break}}else b=1;while(0);return b|0}function $x(){return ay()|0}function ay(){return 16020}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(cy(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=Jb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){h=0;g=b}else{i=d;while(1){g=i+-1|0;if((a[b+g>>0]|0)==10)break;if(!g){h=0;g=b;break b}else i=g}f=Jb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}while(0);_O(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function cy(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function dy(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function ey(a,b){a=+a;b=b|0;var d=0,e=0,f=0;g[h>>3]=a;d=c[h>>2]|0;e=c[h+4>>2]|0;f=TO(d|0,e|0,52)|0;F()|0;switch(f&2047){case 0:{if(a!=0.0){a=+ey(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[h>>2]=d;c[h+4>>2]=e&-2146435073|1071644672;a=+g[h>>3]}}return +a}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;_O(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function gy(){return 16264}function hy(){var a=0;a=(iy()|0)+188|0;return ((c[c[a>>2]>>2]|0)==0?1:4)|0}function iy(){return ay()|0}function jy(){return 16268}function ky(){return 16272}function ly(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function my(a){a=a|0;return (((a|32)+-97|0)>>>0<6|(Gx(a)|0)!=0)&1|0}function ny(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ox()|0;c[b>>2]=0-a;a=-1}return a|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=zb;zb=zb+208|0;j=m;k=m+192|0;h=B(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)py(a,d,e,f,j);else ry(a,d,e,k,f,0,j);if((f|0)==1){sy(k,1);f=0;break}else{sy(k,b);f=1;break}}else{py(a,d,e,f,j);qy(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}ry(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{sy(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;qy(k,1);ry(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);sy(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;ry(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=ty(k)|0;qy(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);zb=m;return}function py(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Ib[d&63](h,a)|0)>-1?(Ib[d&63](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Ib[d&63](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);vy(b,l,e);zb=m;return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function ry(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=zb;zb=zb+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Ib[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Ib[d&63](g,j)|0)>-1){i=10;break a}if((Ib[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=ty(m)|0;qy(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Ib[d&63](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){vy(b,n,e);py(a,b,d,f,h)}zb=o;return}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=uy(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function uy(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function vy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=zb;zb=zb+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;_O(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;_O(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);zb=h;return}function wy(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[10528+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=10624;else{b=f;g=5}if((g|0)==5){f=10624;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return xy(f,c[e+20>>2]|0)|0}function xy(a,b){a=a|0;b=b|0;return yy(a,b)|0}function yy(a,b){a=a|0;b=b|0;if(!b)b=0;else b=zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Ay(c[b+8>>2]|0,o)|0;f=Ay(c[b+12>>2]|0,o)|0;g=Ay(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Ay(c[b+(g<<2)>>2]|0,o)|0;g=Ay(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fx(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Ay(c[b+(f<<2)>>2]|0,o)|0;f=Ay(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Ay(a,b){a=a|0;b=b|0;var c=0;c=WO(a|0)|0;return ((b|0)==0?a:c)|0}function By(a){a=a|0;var b=0;b=(Cy()|0)+188|0;return wy(a,c[b>>2]|0)|0}function Cy(){return ay()|0}function Dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+104|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0}while((zx(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=yx(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;while(1){if((h|32|0)!=(a[46718+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=8){e=8;break}}c:do switch(e&2147483647|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;while(1){if((h|32|0)!=(a[46727+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=yx(b)|0;break}}while(0);e=e+1|0;if(e>>>0>=3){e=3;break}}}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|0)!=40){if(!(c[n>>2]|0)){g=q;break a}c[o>>2]=(c[o>>2]|0)+-1;g=q;break a}e=1;while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=yx(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=q;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}if(!e){g=q;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=q;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=yx(b)|0;if((e|32|0)==120){g=+Ey(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+Fy(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;o=ox()|0;c[o>>2]=28;wx(b,0,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*r}while(0);return +g}function Ey(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+104|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=0;a:while(1){switch(i|0){case 46:{w=10;break a}case 48:break;default:{p=0;m=j;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;j=1}if((w|0)==10){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;if((i|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;l=OO(l|0,j|0,-1,-1)|0;j=F()|0}while((i|0)==48);p=1;m=1}else{p=1;m=j;l=0;j=0}}o=0;n=1.0;h=0.0;v=0;s=p;t=m;u=0;m=0;while(1){q=i+-48|0;p=i|32;if(q>>>0>=10){r=(i|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=n;q=v;r=t;l=m;j=u;p=u}else{i=46;break}else w=24}else w=24;if((w|0)==24){w=0;i=(i|0)>57?p+-87|0:q;do if(!((u|0)<0|(u|0)==0&m>>>0<8))if((u|0)<0|(u|0)==0&m>>>0<14){n=n*.0625;k=n;h=h+n*+(i|0);i=v;break}else{i=(o|0)!=0|(i|0)==0;o=i?o:1;k=n;h=i?h:h+n*.5;i=v;break}else{k=n;i=i+(v<<4)|0}while(0);m=OO(m|0,u|0,1,0)|0;q=i;r=1;p=F()|0}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=yx(a)|0;n=k;v=q;t=r;u=p}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i?(c[y>>2]=(c[y>>2]|0)+-1,!((s|0)==0|i)):0)c[y>>2]=(c[y>>2]|0)+-1}else wx(a,0,0);h=+(f|0)*0.0}else{o=(s|0)==0;p=o?m:l;o=o?u:j;if((u|0)<0|(u|0)==0&m>>>0<8){j=v;l=u;do{j=j<<4;w=m;m=OO(m|0,l|0,1,0)|0;v=l;l=F()|0}while((v|0)<0|(v|0)==0&w>>>0<7);m=j}else m=v;if((i|32|0)==112){j=Gy(a,g)|0;i=F()|0;if((j|0)==0&(i|0)==-2147483648){if(!g){wx(a,0,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=UO(p|0,o|0,2)|0;l=OO(l|0,F()|0,-32,-1)|0;l=OO(l|0,F()|0,j|0,i|0)|0;i=F()|0;if(!m){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){b=ox()|0;c[b>>2]=68;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=OO(l|0,i|0,-1,-1)|0;i=F()|0}while((j|0)>-1);n=h;m=j}else n=h;y=((b|0)<0)<<31>>31;e=PO(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=OO(e|0,F()|0,l|0,i|0)|0;e=F()|0;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=65;else{j=0;i=84;w=67}else{i=b;w=65}if((w|0)==65)if((i|0)<53){j=i;i=84-i|0;w=67}else{k=0.0;h=+(f|0)}if((w|0)==67){h=+(f|0);k=+Iy(+Hy(1.0,i),h);i=j}f=(m&1|0)==0&(n!=0.0&(i|0)<32);h=(f?0.0:n)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0)){f=ox()|0;c[f>>2]=68}h=+Ky(h,l)}while(0);return +h}function Fy(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0.0;I=zb;zb=zb+512|0;E=I;G=f+e|0;H=0-G|0;D=a+4|0;C=a+104|0;j=0;a:while(1){switch(b|0){case 46:{z=7;break a}case 48:break;default:{v=0;p=j;j=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;j=1}if((z|0)==7){b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48){j=0;b=0;while(1){j=OO(j|0,b|0,-1,-1)|0;o=F()|0;b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;if((b|0)==48)b=o;else{v=1;p=1;break}}}else{v=1;p=j;j=0;o=0}}c[E>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=E+496|0;w=0;l=0;s=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;j=p;o=n}else break c;else{p=OO(p|0,n|0,1,0)|0;n=F()|0;v=(b|0)!=48;if((l|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=E+(l<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;l=l+(y&1)|0;s=v?p:s;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=yx(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=31;break b}}b=w;m=(y|0)!=0;z=39}else{w=0;l=0;s=0;m=p;p=0;n=0;z=31}while(0);do if((z|0)==31){A=(v|0)==0;j=A?p:j;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=39;break}else{b=w;z=41;break}m=Gy(a,h)|0;b=F()|0;if((m|0)==0&(b|0)==-2147483648){if(!h){wx(a,0,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}j=OO(m|0,b|0,j|0,o|0)|0;b=w;o=F()|0;z=43}while(0);if((z|0)==39)if(c[C>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m)z=43;else z=42}else z=41;if((z|0)==41)if(m)z=43;else z=42;do if((z|0)==42){H=ox()|0;c[H>>2]=28;wx(a,0,0);i=0.0}else if((z|0)==43){m=c[E>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((j|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&j>>>0>a>>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&j>>>0>>0){H=ox()|0;c[H>>2]=68;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=E+(l<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}l=l+1|0}if((s|0)<9?(s|0)<=(j|0)&(j|0)<18:0){if((j|0)==9){i=+(g|0)*+((c[E>>2]|0)>>>0);break}if((j|0)<9){i=+(g|0)*+((c[E>>2]|0)>>>0)/+(c[12432+(8-j<<2)>>2]|0);break}a=e+27+(B(j,-3)|0)|0;b=c[E>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[12432+(j+-10<<2)>>2]|0);break}}b=(j|0)%9|0;if(!b)m=0;else{s=(j|0)>-1?b:b+9|0;o=c[12432+(8-s<<2)>>2]|0;if(l){p=1e9/(o|0)|0;n=0;m=0;b=0;do{C=E+(b<<2)|0;D=c[C>>2]|0;a=(D>>>0)/(o>>>0)|0;D=D-(B(a,o)|0)|0;a=a+n|0;c[C>>2]=a;n=B(p,D)|0;a=(b|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;b=b+1|0}while((b|0)!=(l|0));if(!n)b=l;else{c[E+(l<<2)>>2]=n;b=l+1|0}}else{m=0;b=0}l=b;j=9-s+j|0}b=0;d:while(1){v=(j|0)<18;w=(j|0)==18;x=E+(m<<2)|0;while(1){if(!v){if(!w)break d;if((c[x>>2]|0)>>>0>=9007199){j=18;break d}}n=0;y=l;l=l+127|0;while(1){p=l&127;o=E+(p<<2)|0;l=UO(c[o>>2]|0,0,29)|0;l=OO(l|0,F()|0,n|0,0)|0;n=F()|0;if(n>>>0>0|(n|0)==0&l>>>0>1e9){s=SO(l|0,n|0,1e9,0)|0;a=NO(s|0,F()|0,1e9,0)|0;l=PO(l|0,n|0,a|0,F()|0)|0;F()|0}else s=0;c[o>>2]=l;a=(p|0)==(m|0);o=(p|0)!=(y+127&127|0)|a?y:(l|0)==0?p:y;if(a)break;else{n=s;y=o;l=p+-1|0}}b=b+-29|0;if(!s)l=y;else break}m=m+127&127;l=o+127&127;n=E+((o+126&127)<<2)|0;if((m|0)==(o|0))c[n>>2]=c[n>>2]|c[E+(l<<2)>>2];else l=y;c[E+(m<<2)>>2]=s;j=j+9|0}e:while(1){w=l+1&127;x=E+((l+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){o=0;while(1){m=o+y&127;if((m|0)==(l|0)){z=92;break}m=c[E+(m<<2)>>2]|0;n=c[16276+(o<<2)>>2]|0;if(m>>>0>>0){z=92;break}if(m>>>0>n>>>0)break;if((o+1|0)>>>0<2)o=1;else{z=92;break}}if((z|0)==92?(z=0,p):0)break e;b=v+b|0;if((y|0)==(l|0))y=l;else break}p=(1<>>v;o=0;m=y;n=y;do{C=E+(n<<2)|0;D=c[C>>2]|0;a=(D>>>v)+o|0;c[C>>2]=a;o=B(D&p,s)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(l|0));if(o|0){if((w|0)!=(m|0))break;c[x>>2]=c[x>>2]|1}}c[E+(l<<2)>>2]=o;l=w}i=0.0;j=l;m=0;do{n=m+y&127;l=j+1&127;if((n|0)==(j|0)){c[E+(l+-1<<2)>>2]=0;j=l}i=i*1.0e9+ +((c[E+(n<<2)>>2]|0)>>>0);m=m+1|0}while((m|0)!=2);u=+(g|0);k=i*u;n=b+53|0;o=n-f|0;p=(o|0)<(e|0);m=p?((o|0)>0?o:0):e;if((m|0)<53){J=+Iy(+Hy(1.0,105-m|0),k);q=+Jy(k,+Hy(1.0,53-m|0));r=J;i=q;q=J+(k-q)}else{r=0.0;i=0.0;q=k}l=y+2&127;if((l|0)!=(j|0)){l=c[E+(l<<2)>>2]|0;do if(l>>>0>=5e8){if((l|0)!=5e8){i=u*.75+i;break}if((y+3&127|0)==(j|0)){i=u*.5+i;break}else{i=u*.75+i;break}}else{if((l|0)==0?(y+3&127|0)==(j|0):0)break;i=u*.25+i}while(0);if((53-m|0)>1?!(+Jy(i,1.0)!=0.0):0)k=i+1.0;else k=i}else k=i;i=q+k-r;do if((n&2147483647|0)>(-2-G|0)){G=!(+t(+i)>=9007199254740992.0);b=b+((G^1)&1)|0;i=G?i:i*.5;if((b+50|0)<=(H|0)?!(k!=0.0&(p&((m|0)!=(o|0)|G))):0)break;H=ox()|0;c[H>>2]=68}while(0);i=+Ky(i,b)}while(0);zb=I;return +i}function Gy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=a+4|0;e=c[i>>2]|0;j=a+104|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;f=d[e>>0]|0}else f=yx(a)|0;switch(f|0){case 43:case 45:{g=(f|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;f=e+-48|0;if((b|0)!=0&f>>>0>9)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;k=14}else k=12;break}default:{g=0;e=f;f=f+-48|0;k=12}}if((k|0)==12)if(f>>>0>9)k=14;else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&(f|0)<214748364);h=((f|0)<0)<<31>>31;if(b>>>0<10){do{l=NO(f|0,h|0,10,0)|0;b=F()|0;e=OO(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=OO(e|0,F()|0,l|0,b|0)|0;h=F()|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0;b=e+-48|0}while(b>>>0<10&((h|0)<21474836|(h|0)==21474836&f>>>0<2061584302));if(b>>>0<10){do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=yx(a)|0}while((e+-48|0)>>>0<10);e=h}else e=h}else e=h;if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;j=(g|0)==0;i=PO(0,0,f|0,e|0)|0;l=F()|0;f=j?f:i;e=j?e:l}if((k|0)==14)if(!(c[j>>2]|0)){f=0;e=-2147483648}else{c[i>>2]=(c[i>>2]|0)+-1;f=0;e=-2147483648}E(e|0);return f|0}function Hy(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=UO(b+1023|0,0,52)|0;e=F()|0;c[h>>2]=d;c[h+4>>2]=e;return +(a*+g[h>>3])}function Iy(a,b){a=+a;b=+b;return +(+Ex(a,b))}function Jy(a,b){a=+a;b=+b;return +(+Ly(a,b))}function Ky(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function Ly(a,b){a=+a;b=+b;var d=0,e=0,f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g[h>>3]=a;j=c[h>>2]|0;l=c[h+4>>2]|0;g[h>>3]=b;n=c[h>>2]|0;o=c[h+4>>2]|0;e=TO(j|0,l|0,52)|0;F()|0;e=e&2047;m=TO(n|0,o|0,52)|0;F()|0;m=m&2047;p=l&-2147483648;i=UO(n|0,o|0,1)|0;k=F()|0;a:do if(!((i|0)==0&(k|0)==0)?(f=My(b)|0,d=(F()|0)&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=UO(j|0,l|0,1)|0;f=F()|0;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>i>>>0))return +((d|0)==(i|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=UO(j|0,l|0,12)|0;f=F()|0;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=UO(d|0,f|0,1)|0;f=F()|0}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;j=UO(j|0,l|0,1-e|0)|0;i=F()|0}else i=l&1048575|1048576;if(!m){f=UO(n|0,o|0,12)|0;k=F()|0;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=UO(f|0,k|0,1)|0;k=F()|0}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=UO(n|0,o|0,1-d|0)|0;m=d;l=F()|0}else l=o&1048575|1048576;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=j;d=i}j=UO(f|0,d|0,1)|0;i=F()|0;e=e+-1|0;f=PO(j|0,i|0,n|0,l|0)|0;d=F()|0;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=i;f=j}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=UO(f|0,d|0,1)|0;d=F()|0;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=OO(f|0,d|0,0,-1048576)|0;d=F()|0;e=UO(e|0,0,52)|0;d=d|(F()|0);e=o|e}else{e=TO(f|0,d|0,1-e|0)|0;d=F()|0}c[h>>2]=e;c[h+4>>2]=d|p;b=+g[h>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function My(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;E(c[h+4>>2]|0);return b|0}function Ny(a){a=a|0;return 0}function Oy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Py(a,b){a=a|0;b=b|0;return -1|0}function Qy(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ny(_(91,e|0)|0)|0;zb=d;return b|0}function Sy(b,c){b=b|0;c=c|0;b=Ty(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Ty(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Qy(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=B(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Uy(){return}function Vy(a){a=a|0;if(Wy(a)|0)GO(a);return}function Wy(a){a=a|0;return (a|0)!=15980&((a|0)!=0&(a|0)!=55596)&1|0}function Xy(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=zb;zb=zb+16|0;h=l;j=(g|0)==0?55624:g;g=c[j>>2]|0;a:do if(!e)if(!g)g=0;else k=19;else{i=(b|0)==0?h:b;if(!f)g=-2;else{if(!g){g=a[e>>0]|0;if(g<<24>>24>-1){c[i>>2]=g&255;g=g<<24>>24!=0&1;break}h=(Yy()|0)+188|0;g=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=g<<24>>24&57343;g=1;break}g=(g&255)+-194|0;if(g>>>0>50){k=19;break}g=c[5728+(g<<2)>>2]|0;h=f+-1|0;if(h){e=e+1|0;k=11}}else{h=f;k=11}b:do if((k|0)==11){b=d[e>>0]|0;m=b>>>3;if((m+-16|m+(g>>26))>>>0>7){k=19;break a}g=b+-128|g<<6;b=h+-1|0;if((g|0)<0)do{e=e+1|0;if(!b)break b;h=a[e>>0]|0;if((h&-64)<<24>>24!=-128){k=19;break a}g=(h&255)+-128|g<<6;b=b+-1|0}while((g|0)<0);c[j>>2]=0;c[i>>2]=g;g=f-b|0;break a}while(0);c[j>>2]=g;g=-2}}while(0);if((k|0)==19){c[j>>2]=0;g=ox()|0;c[g>>2]=25;g=-1}zb=l;return g|0}function Yy(){return ay()|0}function Zy(a,b){a=a|0;b=b|0;return Gx(a)|0}function _y(a,b){a=a|0;b=b|0;return my(a)|0}function $y(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+272|0;m=o;n=o+256|0;do if(!(a[d>>0]|0)){d=Ja(46731)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(12464+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ja(46738)|0;if(d|0?a[d>>0]|0:0)break;d=46743}while(0);e=0;a:while(1){switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0;if(e>>>0>=15){e=15;break}}f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)l=15;else{k=d;l=16}else{d=46743;l=15}if((l|0)==15)if(!(a[d+1>>0]|0))l=18;else{k=d;l=16}b:do if((l|0)==16)if((Fx(k,46743)|0)!=0?(Fx(k,46751)|0)!=0:0){d=c[13907]|0;if(d|0)do{if(!(Fx(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);U(55632);d=c[13907]|0;c:do if(d|0){while(1){if(!(Fx(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}$(55632);break b}while(0);d:do if(((c[13885]|0)==0?(g=Ja(46757)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=Ty(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){_O(m|0,f|0,g|0)|0;f=m+g|0;a[f>>0]=47;_O(f+1|0,k|0,e|0)|0;a[m+(j+g)>>0]=0;f=V(m|0,n|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){l=41;break d}}d=FO(28)|0;if(!d){Ry(f,c[n>>2]|0)|0;l=41;break}else{c[d>>2]=f;c[d+4>>2]=c[n>>2];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d;break}}else l=41;while(0);if((l|0)==41){d=FO(28)|0;if(d){c[d>>2]=c[3988];c[d+4>>2]=c[3989];n=d+8|0;_O(n|0,k|0,e|0)|0;a[n+e>>0]=0;c[d+24>>2]=c[13907];c[13907]=d}}$(55632);d=(b|0)==0&(d|0)==0?15952:d}else{d=k;l=18}while(0);do if((l|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=15952;break}d=0}while(0);zb=o;return d|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+32|0;i=j;a:do if(!(Wy(d)|0)){h=(d|0)!=0;f=0;g=0;do{e=1<>2]|0;else e=$y(g,(e|0)==0?57671:b)|0;f=f+((e|0)!=0&1)|0;c[i+(g<<2)>>2]=e;g=g+1|0}while((g|0)!=6);switch(f&2147483647|0){case 0:{d=55596;break a}case 1:{if((c[i>>2]|0)==15952){d=15980;break a}break}default:{}}}else{e=0;do{if(1<>2]=i}e=e+1|0}while((e|0)!=6)}while(0);zb=j;return d|0}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;c[g>>2]=e;e=Jx(a,b,d,g)|0;zb=f;return e|0}function cz(a,b){a=a|0;b=b|0;dz(a,b)|0;return a|0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function ez(a){a=a|0;var b=0,d=0;b=(fz()|0)+188|0;d=c[b>>2]|0;if(a|0)c[b>>2]=(a|0)==(-1|0)?55572:a;return ((d|0)==55572?-1:d)|0}function fz(){return ay()|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}return a|0}function hz(a,b){a=+a;b=b|0;return +(+Hy(a,b))}function iz(a){a=+a;return ~~+bP(+a)|0}function jz(a){a=a|0;var b=0,c=0;b=(Qy(a)|0)+1|0;c=FO(b)|0;if(!c)a=0;else a=_O(c|0,a|0,b|0)|0;return a|0}function kz(a,b){a=a|0;b=b|0;var c=0;c=Qy(a)|0;return ((lz(a,1,c,b)|0)!=(c|0))<<31>>31|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=B(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Px(e)|0)==0;a=by(a,f,e)|0;if(!g)Qx(e)}else a=by(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function mz(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+132>>2]|0;a=a+128|0;if(b|0)c[b+128>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(nz()|0)+232|0;else a=a+132|0;c[a>>2]=b}return}function nz(){return ay()|0}function oz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(cy(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Jb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);zb=l;return f|0}function pz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(qz()|0)+188|0;b=a[e>>0]|0;if(!(c[c[h>>2]>>2]|0)){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[5728+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);b=ox()|0;c[b>>2]=25;b=-1}while(0);zb=j;return b|0}function qz(){return ay()|0}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;if(Sy(46770,a[d>>0]|0)|0){g=sz(d)|0|32768;c[e>>2]=b;c[e+4>>2]=g;c[e+8>>2]=438;e=ny(Y(5,e|0)|0)|0;if((e|0)>=0){b=tz(e,d)|0;if(!b){aa(e|0)|0;b=0}}else b=0}else{b=ox()|0;c[b>>2]=28;b=0}zb=f;return b|0}function sz(b){b=b|0;var c=0,d=0,e=0;d=(Sy(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Sy(b,120)|0)==0;d=e?d:d|128;b=(Sy(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function tz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+48|0;i=j+24|0;g=j+8|0;f=j;h=j+40|0;if(Sy(46770,a[d>>0]|0)|0){e=FO(1176)|0;if(!e)e=0;else{aP(e|0,0,144)|0;k=(Sy(d,43)|0)==0;d=a[d>>0]|0;if(k)c[e>>2]=d<<24>>24==114?8:4;if(d<<24>>24==97){c[f>>2]=b;c[f+4>>2]=3;d=X(221,f|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;X(221,g|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+152;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[i>>2]=b,c[i+4>>2]=21523,c[i+8>>2]=h,(Z(54,i|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=2;c[e+36>>2]=1;c[e+40>>2]=1;c[e+12>>2]=2;if(!(c[13884]|0))c[e+76>>2]=-1;uz(e)|0}}else{e=ox()|0;c[e>>2]=28;e=0}zb=j;return e|0}function uz(a){a=a|0;var b=0,d=0;b=vz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;wz();return a|0}function vz(){U(55640);return 55648}function wz(){$(55640);return}function xz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=Px(a)|0;else f=0;mz(a);g=(c[a>>2]&1|0)!=0;if(!g){e=vz()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;wz()}b=yz(a)|0;b=Gb[c[a+12>>2]&127](a)|0|b;d=c[a+96>>2]|0;if(d|0)GO(d);if(g){if(f|0)Qx(a)}else GO(a);return b|0}function yz(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=zz(a)|0;break}d=(Px(a)|0)==0;b=zz(a)|0;if(!d)Qx(a)}else{if(!(c[4004]|0))b=0;else b=yz(c[4004]|0)|0;a=vz()|0;a=c[a>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Px(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=zz(a)|0|b;if(d|0)Qx(a);a=c[a+56>>2]|0}while((a|0)!=0);wz()}while(0);return b|0}function zz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0){g=e-g|0;Kb[c[a+40>>2]&15](a,g,((g|0)<0)<<31>>31,1)|0;F()|0}c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function Az(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=Px(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)Qx(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;j=Xx(h,10,p)|0;i=(j|0)==0;j=i?p:1-o+j|0;j=j>>>0>>0?j:g;_O(e|0,h|0,j|0)|0;h=(c[k>>2]|0)+j|0;c[k>>2]=h;e=e+j|0;j=g-j|0;if(!(i&(j|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=Ax(f)|0;if((g|0)<0)break;else h=g}else{c[k>>2]=h+1;h=d[h>>0]|0}i=e+1|0;a[e>>0]=h;g=j+-1|0;if((h&255|0)==10|(g|0)==0){e=i;n=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)Qx(f)}return b|0}function Bz(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;a=(c[a>>2]|0)>>>5&1}else a=(c[a>>2]|0)>>>5&1;return a|0}function Cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Dz(a,b,f)|0;zb=e;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+144|0;f=e;aP(f|0,0,144)|0;c[f+32>>2]=35;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+84>>2]=a;d=Fz(f,b,d)|0;zb=e;return d|0}function Ez(a,b,c){a=a|0;b=b|0;c=c|0;return Jz(a,b,c)|0}function Fz(e,h,i){e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=zb;zb=zb+288|0;K=Q+264|0;L=Q;M=Q+260|0;N=Q+272|0;if((c[e+76>>2]|0)>-1)P=Px(e)|0;else P=0;j=a[h>>0]|0;a:do if(j<<24>>24){B=e+4|0;C=e+104|0;D=e+120|0;E=e+8|0;G=L+10|0;H=L+33|0;I=L+46|0;J=L+94|0;A=K+4|0;m=h;h=0;k=0;l=j;j=0;u=0;v=0;b:while(1){c:do if(!(zx(l&255)|0)){n=(a[m>>0]|0)==37;d:do if(n){l=m+1|0;o=a[l>>0]|0;e:do switch(o<<24>>24){case 37:break d;case 42:{z=0;l=m+2|0;break}default:{if(Gx(o&255)|0?(a[m+2>>0]|0)==36:0){z=Gz(i,(d[l>>0]|0)+-48|0)|0;l=m+3|0;break e}y=(c[i>>2]|0)+(4-1)&~(4-1);z=c[y>>2]|0;c[i>>2]=y+4}}while(0);if(!(Gx(d[l>>0]|0)|0)){r=0;o=l}else{m=0;do{m=(m*10|0)+-48+(d[l>>0]|0)|0;l=l+1|0}while((Gx(d[l>>0]|0)|0)!=0);r=m;o=l}n=a[o>>0]|0;q=o+1|0;if(n<<24>>24==109){l=(z|0)!=0&1;k=0;m=q;o=o+2|0;n=a[q>>0]|0;j=0}else{l=0;m=o;o=q}switch(n<<24>>24){case 104:{y=(a[o>>0]|0)==104;n=y?-2:-1;m=y?m+2|0:o;break}case 108:{y=(a[o>>0]|0)==108;n=y?3:1;m=y?m+2|0:o;break}case 106:{n=3;m=o;break}case 116:case 122:{n=1;m=o;break}case 76:{n=2;m=o;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=143;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:n;q=s&255;switch(q<<24>>24){case 99:{y=(r|0)>1?r:1;break}case 91:{y=r;break}case 110:{Hz(z,t,u,v);n=u;o=v;break c}default:{wx(e,0,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=yx(e)|0}while((zx(n)|0)!=0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}x=D;y=n-(c[E>>2]|0)|0;u=OO(c[x>>2]|0,c[x+4>>2]|0,u|0,v|0)|0;u=OO(u|0,F()|0,y|0,((y|0)<0)<<31>>31|0)|0;y=r;v=F()|0}}x=((y|0)<0)<<31>>31;wx(e,y,x);o=c[B>>2]|0;n=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((yx(e)|0)<0){O=143;break b}n=c[C>>2]|0}if(n|0)c[B>>2]=(c[B>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{w=(s|0)==99;g:do if((s|16|0)==115){aP(L|0,-1,257)|0;a[L>>0]=0;if((s|0)==115){a[H>>0]=0;b[G>>1]=0;b[G+2>>1]=0;a[G+4>>0]=0}}else{s=m+1|0;r=(a[s>>0]|0)==94;n=r&1;m=r?m+2|0:s;aP(L|0,n|0,257)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{q=(n^1)&255;a[I>>0]=q;m=m+1|0;break}case 93:{q=(n^1)&255;a[J>>0]=q;m=m+1|0;break}default:q=(n^1)&255}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=143;break b}case 93:break g;case 45:{o=m+1|0;n=a[o>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=q;n=a[o>>0]|0}while(m>>>0<(n&255)>>>0);m=o}else m=o;break}default:{}}while(0);a[L+((n&255)+1)>>0]=q;m=m+1|0}}while(0);n=w?y+1|0:31;s=(t|0)==1;t=(l|0)!=0;i:do if(s){if(t){j=FO(n<<2)|0;if(!j){k=0;j=0;O=143;break b}}else j=z;c[K>>2]=0;c[A>>2]=0;k=0;j:while(1){q=(j|0)==0;do{k:while(1){o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=yx(e)|0;if(!(a[L+(o+1)>>0]|0))break j;a[N>>0]=o;switch(Xy(M,N,1,K)|0){case -1:{k=0;O=143;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(t&(k|0)==(n|0)));n=n<<1|1;o=IO(j,n<<2)|0;if(!o){k=0;O=143;break b}else j=o}if(!(Iz(K)|0)){k=0;O=143;break b}else{q=k;k=0;r=j}}else{if(t){k=FO(n)|0;if(!k){k=0;j=0;O=143;break b}j=0;while(1){q=j;do{j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){r=0;j=0;break i}r=q;q=q+1|0;a[k+r>>0]=j}while((q|0)!=(n|0));n=n<<1|1;o=IO(k,n)|0;if(!o){j=0;O=143;break b}else{j=q;k=o}}}if(!z)while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=0;k=0;r=0;j=0;break i}}k=0;while(1){j=c[B>>2]|0;if(j>>>0<(c[C>>2]|0)>>>0){c[B>>2]=j+1;j=d[j>>0]|0}else j=yx(e)|0;if(!(a[L+(j+1)>>0]|0)){q=k;k=z;r=0;j=0;break i}a[z+k>>0]=j;k=k+1|0}}while(0);if(!(c[C>>2]|0))n=c[B>>2]|0;else{n=(c[B>>2]|0)+-1|0;c[B>>2]=n}o=D;n=n-(c[E>>2]|0)|0;n=OO(c[o>>2]|0,c[o+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0;if((n|0)==0&(o|0)==0)break b;if(!((n|0)==(y|0)&(o|0)==(x|0)|w^1))break b;do if(t)if(s){c[z>>2]=r;break}else{c[z>>2]=k;break}while(0);if(!w){if(r|0)c[r+(q<<2)>>2]=0;if(!k){k=0;break f}a[k+q>>0]=0}break}case 120:case 88:case 112:{n=16;O=131;break}case 111:{n=8;O=131;break}case 117:case 100:{n=10;O=131;break}case 105:{n=0;O=131;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Dy(e,t,0);y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if(z)switch(t|0){case 0:{f[z>>2]=p;break f}case 1:{g[z>>3]=p;break f}case 2:{g[z>>3]=p;break f}default:break f}break}default:{}}while(0);do if((O|0)==131){O=0;n=xx(e,n,0,-1,-1)|0;o=F()|0;y=D;w=c[y>>2]|0;y=c[y+4>>2]|0;x=(c[B>>2]|0)-(c[E>>2]|0)|0;x=PO(0,0,x|0,((x|0)<0)<<31>>31|0)|0;if((w|0)==(x|0)&(y|0)==(F()|0))break b;if((z|0)!=0&(s|0)==112){c[z>>2]=n;break}else{Hz(z,t,n,o);break}}while(0);o=D;n=(c[B>>2]|0)-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=h+((z|0)!=0&1)|0;o=F()|0;break c}while(0);m=m+(n&1)|0;wx(e,0,0);l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0;if((l|0)!=(d[m>>0]|0)){O=23;break b}n=OO(u|0,v|0,1,0)|0;o=F()|0}else{while(1){l=m+1|0;if(!(zx(d[l>>0]|0)|0))break;else m=l}wx(e,0,0);do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=yx(e)|0}while((zx(l)|0)!=0);if(!(c[C>>2]|0))l=c[B>>2]|0;else{l=(c[B>>2]|0)+-1|0;c[B>>2]=l}o=D;n=l-(c[E>>2]|0)|0;o=OO(c[o>>2]|0,c[o+4>>2]|0,u|0,v|0)|0;n=OO(o|0,F()|0,n|0,((n|0)<0)<<31>>31|0)|0;o=F()|0}while(0);m=m+1|0;l=a[m>>0]|0;if(!(l<<24>>24))break a;else{u=n;v=o}}if((O|0)==23){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((h|0)!=0|(l|0)>-1)break;else{l=0;h=k;O=144}}else if((O|0)==143)if(!h){h=k;O=144}if((O|0)==144){k=h;h=-1}if(l){GO(k);GO(j)}}else h=0;while(0);if(P|0)Qx(e);zb=Q;return h|0}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}zb=e;return a|0}function Hz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function Iz(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=Xx(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;_O(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;return Mz(a,b,((b|0)<0)<<31>>31,c)|0}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;c[f>>2]=d;d=Kx(a,b,f)|0;zb=e;return d|0}function Mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+76>>2]|0)>-1){f=(Px(a)|0)==0;b=Nz(a,b,d,e)|0;if(!f)Qx(a)}else b=Nz(a,b,d,e)|0;return b|0}function Nz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((e|0)==1){g=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;b=PO(b|0,d|0,g|0,((g|0)<0)<<31>>31|0)|0;d=F()|0}f=a+20|0;g=a+28|0;if((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Jb[c[a+36>>2]&63](a,0,0)|0,(c[f>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[g>>2]=0;c[f>>2]=0;Kb[c[a+40>>2]&15](a,b,d,e)|0;if((F()|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function Oz(a,b){a=a|0;b=b|0;return Pz(a,b,(Qy(a)|0)+1|0)|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return Xy(0,a,b,(c|0)==0?55652:c)|0}function Rz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+1040|0;k=n;l=n+1024|0;j=c[b>>2]|0;c[l>>2]=j;m=(a|0)!=0;h=m?e:256;i=m?a:k;g=j;a:do if((h|0)!=0&(j|0)!=0){e=0;j=i;while(1){a=d>>>2;i=a>>>0>=h>>>0;if(!(d>>>0>131|i)){i=j;break a}a=i?h:a;d=d-a|0;a=Sz(j,l,a,f)|0;if((a|0)==-1)break;i=(j|0)==(k|0);h=h-(i?0:a)|0;i=i?j:j+(a<<2)|0;e=a+e|0;g=c[l>>2]|0;if((h|0)!=0&(g|0)!=0)j=i;else break a}e=-1;i=j;h=0;g=c[l>>2]|0}else e=0;while(0);b:do if((g|0)!=0?(h|0)!=0&(d|0)!=0:0){while(1){a=Xy(i,g,d,f)|0;if((a+2|0)>>>0<3)break;g=(c[l>>2]|0)+a|0;c[l>>2]=g;d=d-a|0;h=h+-1|0;e=e+1|0;if(!((h|0)!=0&(d|0)!=0))break b;else i=i+4|0}switch(a|0){case -1:{e=a;break b}case 0:{c[l>>2]=0;break b}default:{c[f>>2]=0;break b}}}while(0);if(m)c[b>>2]=c[l>>2];zb=n;return e|0}function Sz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){j=h;g=f;l=26}else{c[g>>2]=0;k=f;j=h;l=48}else l=5;a:do if((l|0)==5){l=(Tz()|0)+188|0;g=(b|0)!=0;if(c[c[l>>2]>>2]|0)if(g){g=f;l=33;break}else{g=f;l=15;break}if(!g){f=Qy(h)|0;l=63;break}b:do if(f){g=f;while(1){i=a[h>>0]|0;if(!(i<<24>>24))break;h=h+1|0;c[b>>2]=i<<24>>24&57343;g=g+-1|0;if(!g)break b;else b=b+4|0}c[b>>2]=0;c[e>>2]=0;f=f-g|0;l=63;break a}while(0);c[e>>2]=h;l=63}while(0);c:while(1){d:do if((l|0)==15){while(1){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){l=c[h>>2]|0;i=l&255;if(!((l+-16843009|l)&-2139062144)){do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(!((i+-16843009|i)&-2139062144|0));i=i&255}}i=i&255;if((i+-1|0)>>>0>=127)break;g=g+-1|0;h=h+1|0}i=i+-194|0;if(i>>>0>50)l=57;else{i=c[5728+(i<<2)>>2]|0;j=h+1|0;l=26;continue c}}else if((l|0)==26){l=(d[j>>0]|0)>>>3;if((l+-16|l+(i>>26))>>>0>7){h=j;l=56}else{h=j+1|0;if(i&33554432){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+2|0;if(i&524288){if((a[h>>0]&-64)<<24>>24!=-128){h=j;l=56;break}h=j+3|0}}g=g+-1|0;l=15;continue c}}else if((l|0)==33){l=0;e:do if(g){while(1){i=d[h>>0]|0;j=i+-1|0;if(j>>>0<127){if((h&3|0)==0&g>>>0>4){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144|0){l=42;break}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];j=h+4|0;i=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=i;h=j}else{l=41;break}}if((l|0)==41){b=i;h=j;i=a[j>>0]|0}else if((l|0)==42)i=i&255;i=i&255;j=i+-1|0;l=44}}else l=44;if((l|0)==44){l=0;if(j>>>0>=127)break}h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g)break e;else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=57;break d}i=c[5728+(i<<2)>>2]|0;k=g;j=h+1|0;l=48;continue c}while(0);c[e>>2]=h;l=63;continue c}else if((l|0)==48){l=0;g=d[j>>0]|0;h=g>>>3;if((h+-16|h+(i>>26))>>>0>7){h=j;g=k;l=56}else{h=j+1|0;g=g+-128|i<<6;do if((g|0)<0){i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+2|0;g=i|g<<6;if((g|0)>=0)break;i=(d[h>>0]|0)+-128|0;if(i>>>0<=63){h=j+3|0;g=i|g<<6;break}}h=ox()|0;c[h>>2]=25;h=j+-1|0;break d}while(0);c[b>>2]=g;b=b+4|0;g=k+-1|0;l=33;continue c}}else if((l|0)==63)return f|0;while(0);if((l|0)==56){h=h+-1|0;if(!i)l=57;else{f=b;l=61}}if((l|0)==57)if(!(a[h>>0]|0)){if(b|0){c[b>>2]=0;c[e>>2]=0}f=f-g|0;l=63;continue}else{f=b;l=61}if((l|0)==61){l=ox()|0;c[l>>2]=25;if(!f){f=-1;l=63;continue}}c[e>>2]=h;f=-1;l=63}return 0}function Tz(){return ay()|0}function Uz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+272|0;i=l;j=l+256|0;f=c[b>>2]|0;c[j>>2]=f;k=(a|0)!=0;g=k?e:256;h=k?a:i;e=f;a:do if((g|0)!=0&(f|0)!=0){f=0;a=e;while(1){e=d>>>0>=g>>>0;if(!(e|d>>>0>32)){e=a;break a}e=e?g:d;d=d-e|0;e=Vz(h,j,e,0)|0;if((e|0)==-1)break;a=(h|0)==(i|0);g=g-(a?0:e)|0;h=a?h:h+e|0;f=e+f|0;e=c[j>>2]|0;if((g|0)!=0&(e|0)!=0)a=e;else break a}f=-1;g=0;e=c[j>>2]|0}else f=0;while(0);b:do if((e|0)!=0?(g|0)!=0&(d|0)!=0:0){while(1){a=_x(h,c[e>>2]|0,0)|0;if((a+1|0)>>>0<2)break;e=(c[j>>2]|0)+4|0;c[j>>2]=e;d=d+-1|0;g=g-a|0;f=a+f|0;if(!((g|0)!=0&(d|0)!=0))break b;else h=h+a|0}if(!a)c[j>>2]=0;else f=-1}while(0);if(k)c[b>>2]=c[j>>2];zb=l;return f|0}function Vz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;i=j;a:do if(!b){e=c[d>>2]|0;f=c[e>>2]|0;if(!f)e=0;else{b=e;e=0;do{if(f>>>0>127){f=_x(i,f,0)|0;if((f|0)==-1){e=-1;break a}}else f=1;e=f+e|0;b=b+4|0;f=c[b>>2]|0}while((f|0)!=0)}}else{b:do if(e>>>0>3){f=e;g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h)break;h=_x(b,h,0)|0;if((h|0)==-1){e=-1;break a}b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(f>>>0<=3)break b}a[b>>0]=0;c[d>>2]=0;e=e-f|0;break a}else f=e;while(0);if(f){g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){g=20;break}h=_x(i,h,0)|0;if((h|0)==-1){e=-1;break a}if(f>>>0>>0){g=23;break}_x(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f)break a}if((g|0)==20){a[b>>0]=0;c[d>>2]=0;e=e-f|0;break}else if((g|0)==23){e=e-f|0;break}}}while(0);zb=j;return e|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;Xz(a,b,c)|0;return a|0}function Xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);aP(b|0,0,e|0)|0;return b|0}function Yz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{i=e&255;h=f+(i>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(i&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{i=e&255;if(!(c[f+(i>>>5<<2)>>2]&1<<(i&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);zb=g;return d|0}function Zz(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(Px(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=Ax(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=Ax(a)|0;break}}while(0);return b|0}function _z(a){a=a|0;var b=0;b=54792;c[b>>2]=a+-1;c[b+4>>2]=0;return}function $z(){var a=0,b=0,d=0;b=54792;b=NO(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=OO(b|0,F()|0,1,0)|0;a=F()|0;d=54792;c[d>>2]=b;c[d+4>>2]=a;a=TO(b|0,a|0,33)|0;F()|0;return a|0}function aA(a,b){a=a|0;b=b|0;cz(a+(Qy(a)|0)|0,b)|0;return a|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=zb;zb=zb+16|0;e=h;c[e>>2]=c[d>>2];e=Jx(0,0,b,e)|0;if((e|0)>=0?(f=e+1|0,g=FO(f)|0,c[a>>2]=g,(g|0)!=0):0)a=Jx(g,f,b,d)|0;else a=-1;zb=h;return a|0}function cA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if((b|0)!=-1){if((c[d+76>>2]|0)>-1)g=Px(d)|0;else g=0;h=d+4|0;e=c[h>>2]|0;if(!e){Bx(d)|0;e=c[h>>2]|0;if(e|0){f=e;i=6}}else{f=e;i=6}if((i|0)==6?f>>>0>((c[d+44>>2]|0)+-8|0)>>>0:0){i=f+-1|0;c[h>>2]=i;a[i>>0]=b;c[d>>2]=c[d>>2]&-17;if(!g)break;Qx(d);break}if(g){Qx(d);b=-1}else b=-1}else b=-1;while(0);return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;if((c[a+76>>2]|0)>-1){e=(Px(a)|0)==0;d=eA(a)|0;b=F()|0;if(e)a=d;else{Qx(a);a=d}}else{a=eA(a)|0;b=F()|0}E(b|0);return a|0}function eA(a){a=a|0;var b=0,d=0,e=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Kb[c[a+40>>2]&15](a,0,0,b)|0;d=F()|0;if((d|0)>=0){e=(c[a+8>>2]|0)-(c[a+4>>2]|0)|0;e=PO(b|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=F()|0;b=(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;b=OO(e|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;d=F()|0}E(d|0);return b|0}function fA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Px(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=oz(d,b)|0;Qx(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=oz(d,b)|0}while(0);return e|0}function gA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=B(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=Px(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;_O(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(Bx(f)|0)break;h=Jb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)Qx(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)Qx(f);return e|0}function hA(a){a=a|0;var b=0;a=dA(a)|0;b=F()|0;if((b|0)>0|(b|0)==0&a>>>0>2147483647){a=ox()|0;c[a>>2]=61;a=-1}return a|0}function iA(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(Px(a)|0)==0;Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33;if(!b)Qx(a)}else{Nz(a,0,0,0)|0;c[a>>2]=c[a>>2]&-33}return}function jA(a,b){a=a|0;b=b|0;return +(+kA(a,b,1))}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,i=0;g=zb;zb=zb+144|0;e=g;aP(e|0,0,144)|0;i=e+4|0;c[i>>2]=a;h=e+8|0;c[h>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;wx(e,0,0);f=+Dy(e,d,1);e=e+120|0;d=(c[i>>2]|0)-(c[h>>2]|0)|0;d=OO(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;e=F()|0;if(b|0)c[b>>2]=(d|0)==0&(e|0)==0?a:a+d|0;zb=g;return +f}function lA(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(zx(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(Gx(b)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Gx(a[c>>0]|0)|0)!=0)}return ((g|0)==0?0-b|0:b)|0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=zb;zb=zb+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){aP(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ty(b,e<<24>>24)|0;zb=h;return e-b|0}function nA(a,b){a=a|0;b=b|0;return +(+kA(a,b,0))}function oA(a,b){a=a|0;b=b|0;return +(+kA(a,b,2))}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+nA(a,b))}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+jA(a,b))}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return +(+oA(a,b))}function sA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b+(Qy(b)|0)|0;a:do if(d)while(1){g=a[c>>0]|0;if(!(g<<24>>24))break a;d=d+-1|0;f=e+1|0;a[e>>0]=g;if(!d){e=f;break}else{c=c+1|0;e=f}}while(0);a[e>>0]=0;return b|0}function tA(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[13914]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(Yz(b,d)|0)|0;if(!(a[b>>0]|0)){c[13914]=0;b=0;break}d=b+(mA(b,d)|0)|0;c[13914]=d;if(!(a[d>>0]|0)){c[13914]=0;break}else{c[13914]=d+1;a[d>>0]=0;break}}while(0);return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}return a|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(a-b>>2>>>0>=d>>>0){if(d|0){e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}}}else do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}function wA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;e=zb;zb=zb+48|0;g=e+32|0;b=e+24|0;h=e+16|0;f=e;e=e+36|0;a=xA()|0;if(a|0?(d=c[a>>2]|0,d|0):0){a=d+48|0;if(!(yA(a)|0)){c[b>>2]=46910;AA(46860,b)}b=zA(a)|0;if((b|0)==1126902529&(F()|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Jb[c[(c[3470]|0)+16>>2]&63](13880,d,e)|0){h=c[e>>2]|0;h=Gb[c[(c[h>>2]|0)+8>>2]&127](h)|0;c[f>>2]=46910;c[f+4>>2]=a;c[f+8>>2]=h;AA(46774,f)}else{c[h>>2]=46910;c[h+4>>2]=a;AA(46819,h)}}AA(46898,g)}function xA(){return 55660}function yA(a){a=a|0;return 0}function zA(a){a=a|0;E(0);return 0}function AA(a,b){a=a|0;b=b|0;var d=0;d=zb;zb=zb+16|0;c[d>>2]=b;b=c[4001]|0;Kx(b,a,d)|0;fA(10,b)|0;ua()}function BA(a){a=a|0;return}function CA(a){a=a|0;BA(a);SA(a);return}function DA(a){a=a|0;return}function EA(a){a=a|0;return}function FA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+64|0;j=l;if(!(JA(d,e,0)|0))if((e|0)!=0?(k=NA(e,13904,13888,0)|0,(k|0)!=0):0){c[j>>2]=k;c[j+4>>2]=0;c[j+8>>2]=d;c[j+12>>2]=-1;d=j+16|0;e=j+24|0;g=j+48|0;h=d;i=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));b[d+36>>1]=0;a[d+38>>0]=0;c[g>>2]=1;Xb[c[(c[k>>2]|0)+28>>2]&31](k,j,c[f>>2]|0,1);if((c[e>>2]|0)==1){c[f>>2]=c[d>>2];d=1}else d=0}else d=0;else d=1;zb=l;return d|0}function GA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);return}function HA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(JA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}}else LA(0,d,e,f);while(0);return}function IA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;if(d)a=(Fx(c[a+4>>2]|0,c[b+4>>2]|0)|0)==0;else a=(a|0)==(b|0);return a|0}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[b+4>>2]|0)==(d|0)?(f=b+28|0,(c[f>>2]|0)!=1):0)c[f>>2]=e;return}function MA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((f|0)!=(e|0)){g=d+36|0;c[g>>2]=(c[g>>2]|0)+1;a[d+54>>0]=1;break}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if((b|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function NA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+64|0;n=p;m=c[d>>2]|0;o=d+(c[m+-8>>2]|0)|0;m=c[m+-4>>2]|0;c[n>>2]=f;c[n+4>>2]=d;c[n+8>>2]=e;c[n+12>>2]=g;d=n+16|0;e=n+20|0;g=n+24|0;h=n+28|0;i=n+32|0;j=n+40|0;k=d;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[d+36>>1]=0;a[d+38>>0]=0;a:do if(JA(m,f,0)|0){c[n+48>>2]=1;Zb[c[(c[m>>2]|0)+20>>2]&7](m,n,o,o,1,0);d=(c[g>>2]|0)==1?o:0}else{Yb[c[(c[m>>2]|0)+24>>2]&63](m,n,o,1,0);switch(c[n+36>>2]|0){case 0:{d=(c[j>>2]|0)==1&(c[h>>2]|0)==1&(c[i>>2]|0)==1?c[e>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((c[g>>2]|0)!=1?!((c[j>>2]|0)==0&(c[h>>2]|0)==1&(c[i>>2]|0)==1):0){d=0;break}d=c[d>>2]|0}while(0);zb=p;return d|0}function OA(a){a=a|0;BA(a);SA(a);return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(JA(a,c[b+8>>2]|0,g)|0)MA(0,b,d,e,f);else{a=c[a+8>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e,f,g)}return}function QA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){i=c[b+8>>2]|0;Yb[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;do if((c[f>>2]|0)!=4){h=d+52|0;a[h>>0]=0;j=d+53|0;a[j>>0]=0;b=c[b+8>>2]|0;Zb[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if(a[j>>0]|0){j=(a[h>>0]|0)==0;c[f>>2]=3;if(j)break;else break a}else{c[f>>2]=4;break}}while(0);c[i>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function RA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(JA(a,c[b+8>>2]|0,0)|0)KA(0,b,d,e);else{a=c[a+8>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d,e)}return}function SA(a){a=a|0;GO(a);return}function TA(a){a=a|0;return}function UA(){var a=0,b=0;a=xA()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?yA(b+48|0)|0:0)VA(c[b+12>>2]|0);VA(WA()|0)}function VA(a){a=a|0;var b=0;b=zb;zb=zb+16|0;Rb[a&1]();AA(47049,b)}function WA(){return 1}function XA(a){a=a|0;return}function YA(a){a=a|0;c[a>>2]=16372;aB(a+4|0);return}function ZA(a){a=a|0;YA(a);SA(a);return}function _A(a){a=a|0;return $A(a+4|0)|0}function $A(a){a=a|0;return c[a>>2]|0}function aB(a){a=a|0;var b=0,d=0;if(bB(a)|0?(b=cB(c[a>>2]|0)|0,d=b+8|0,a=c[d>>2]|0,c[d>>2]=a+-1,(a|0)<1):0)SA(b);return}function bB(a){a=a|0;return 1}function cB(a){a=a|0;return a+-12|0}function dB(a){a=a|0;YA(a);SA(a);return}function eB(a){a=a|0;BA(a);SA(a);return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;return JA(a,b,0)|0}function gB(a){a=a|0;BA(a);SA(a);return}function hB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(JA(b,c[d+8>>2]|0,h)|0)MA(0,d,e,f,g);else{r=d+52|0;j=a[r>>0]|0;q=d+53|0;i=a[q>>0]|0;p=c[b+12>>2]|0;m=b+16+(p<<3)|0;a[r>>0]=0;a[q>>0]=0;lB(b+16|0,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;a:do if((p|0)>1){n=d+24|0;o=b+8|0;p=d+54|0;b=b+24|0;do{i=i&1;j=j&1;if(a[p>>0]|0)break a;if(!(k<<24>>24)){if(l<<24>>24?(c[o>>2]&1|0)==0:0)break a}else{if((c[n>>2]|0)==1)break a;if(!(c[o>>2]&2))break a}a[r>>0]=0;a[q>>0]=0;lB(b,d,e,f,g,h);k=a[r>>0]|0;j=k|j;l=a[q>>0]|0;i=l|i;b=b+8|0}while(b>>>0>>0)}while(0);a[r>>0]=j<<24>>24!=0&1;a[q>>0]=i<<24>>24!=0&1}return}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(JA(b,c[d+8>>2]|0,g)|0)){if(!(JA(b,c[d>>2]|0,g)|0)){p=c[b+12>>2]|0;k=b+16+(p<<3)|0;mB(b+16|0,d,e,f,g);h=b+24|0;if((p|0)<=1)break;b=c[b+8>>2]|0;if((b&2|0)==0?(j=d+36|0,(c[j>>2]|0)!=1):0){if(!(b&1)){b=d+54|0;while(1){if(a[b>>0]|0)break a;if((c[j>>2]|0)==1)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+24|0;i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[j>>2]|0)==1?(c[b>>2]|0)==1:0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}b=d+54|0;while(1){if(a[b>>0]|0)break a;mB(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(p=d+20|0,(c[p>>2]|0)!=(e|0)):0){c[d+32>>2]=f;o=d+44|0;if((c[o>>2]|0)!=4){j=b+16+(c[b+12>>2]<<3)|0;k=d+52|0;f=d+53|0;l=d+54|0;m=b+8|0;n=d+24|0;h=0;i=b+16|0;b=0;b:while(1){if(i>>>0>=j>>>0){i=18;break}a[k>>0]=0;a[f>>0]=0;lB(i,d,e,e,1,g);if(a[l>>0]|0){i=18;break}do if(a[f>>0]|0){if(!(a[k>>0]|0))if(!(c[m>>2]&1)){i=19;break b}else{b=1;break}if((c[n>>2]|0)==1){h=1;i=19;break b}if(!(c[m>>2]&2)){h=1;i=19;break b}else{h=1;b=1}}while(0);i=i+8|0}if((i|0)==18)if(b)i=19;else b=4;if((i|0)==19)b=3;c[o>>2]=b;if(h&1)break}c[p>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)!=1)break;if((c[d+24>>2]|0)!=2)break;a[d+54>>0]=1;break}if((f|0)==1)c[d+32>>2]=1}else LA(0,d,e,f);while(0);return}function jB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if(!(JA(b,c[d+8>>2]|0,0)|0)){h=c[b+12>>2]|0;g=b+16+(h<<3)|0;kB(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{kB(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else KA(0,d,e,f);while(0);return}function kB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;if(d){f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0}else f=0;a=c[a>>2]|0;Xb[c[(c[a>>2]|0)+28>>2]&31](a,b,d+f|0,(g&2|0)==0?2:e);return}function lB(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Zb[c[(c[a>>2]|0)+20>>2]&7](a,b,d,e+h|0,(i&2|0)==0?2:f,g);return} +function $b(a){a=a|0;var b=0;b=zb;zb=zb+a|0;zb=zb+15&-16;return b|0}function ac(){return zb|0}function bc(a){a=a|0;zb=a}function cc(a,b){a=a|0;b=b|0;zb=a;Ab=b}function dc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0))b[k>>1]=0;else{a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function ec(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0))b[l>>1]=0;else{a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function fc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0))b[r>>1]=0;else{l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function gc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=zb;zb=zb+16|0;v=y;x=(e|0)/2|0;w=(f|0)/2|0;m=c[i>>2]|0;u=w+-1|0;f=m;j=m+((B(u,x)|0)<<1)|0;k=0;while(1){if((k|0)>=(x|0))break;b[j>>1]=0;b[f>>1]=0;f=f+2|0;j=j+2|0;k=k+1|0}t=x+-1|0;f=m;j=m+(t<<1)|0;k=0;while(1){if((k|0)>=(w|0))break;b[j>>1]=0;b[f>>1]=0;f=f+(x<<1)|0;j=j+(x<<1)|0;k=k+1|0}l=i+1179664|0;s=0-x|0;j=a+((e<<1)+2)|0;r=1;o=0;k=m+(x+1<<1)|0;a:while(1){if((r|0)>=(u|0)){j=59;break}q=j;f=o;p=1;while(1){if((p|0)>=(t|0))break;do if((d[q>>0]|0|0)>(h|0)){a=k+(s<<1)|0;j=b[a>>1]|0;if(j<<16>>16>0){b[k>>1]=j;o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}n=b[a+2>>1]|0;o=n<<16>>16;j=b[a+-2>>1]|0;m=j<<16>>16;a=j<<16>>16>0;if(n<<16>>16<=0){if(a){b[k>>1]=j;j=m*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-3<<2)|0;if((c[a>>2]|0)<(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=b[k+-2>>1]|0;if(j<<16>>16>0){b[k>>1]=j;j=(j<<16>>16)*7|0;o=i+1310736+(j+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(j+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(j+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r;j=i+1310736+(j+-3<<2)|0;if((c[j>>2]|0)>=(p|0))break;c[j>>2]=p;break}else{j=f+1|0;if((f|0)>32767){j=54;break a}b[k>>1]=j;c[i+1179664+(f<<2)>>2]=j<<16>>16;f=f*7|0;c[i+1310736+(f<<2)>>2]=1;c[i+1310736+(f+1<<2)>>2]=p;c[i+1310736+(f+2<<2)>>2]=r;c[i+1310736+(f+3<<2)>>2]=p;c[i+1310736+(f+4<<2)>>2]=p;c[i+1310736+(f+5<<2)>>2]=r;c[i+1310736+(f+6<<2)>>2]=r;f=j;break}}if(a){j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(m+-1<<2)>>2]|0;b:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break b;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break b}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+r;c[i+1310736+(o+-1<<2)>>2]=r;break}a=b[k+-2>>1]|0;if(a<<16>>16<=0){b[k>>1]=n;j=o*7|0;a=i+1310736+(j+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(j+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+p;a=i+1310736+(j+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+r;a=i+1310736+(j+-4<<2)|0;if((c[a>>2]|0)>(p|0))c[a>>2]=p;c[i+1310736+(j+-1<<2)>>2]=r;break}j=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((a<<16>>16)+-1<<2)>>2]|0;c:do if((j|0)<=(n|0)){b[k>>1]=j;if((j|0)<(n|0)){a=l;m=0;while(1){if((m|0)>=(f|0))break c;if((c[a>>2]|0)==(n|0))c[a>>2]=j;a=a+4|0;m=m+1|0}}}else{b[k>>1]=n;a=l;m=0;while(1){if((m|0)>=(f|0)){j=n;break c}if((c[a>>2]|0)==(j|0))c[a>>2]=n;a=a+4|0;m=m+1|0}}while(0);o=(j<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+r}else b[k>>1]=0;while(0);q=q+2|0;p=p+1|0;k=k+2|0}j=q+e+4|0;r=r+1|0;o=f;k=k+4|0}d:do if((j|0)==54){Ue(0,3,19708,v);f=-1}else if((j|0)==59){m=i+12|0;f=1;a=1;while(1){if((a|0)>(o|0))break;j=c[l>>2]|0;if((j|0)==(a|0))k=f+1|0;else{k=f;f=c[i+1179664+(j+-1<<2)>>2]|0}c[l>>2]=f;f=k;a=a+1|0;l=l+4|0}n=i+8|0;j=f+-1|0;c[n>>2]=j;if(!j)f=0;else{aP(m|0,0,j<<2|0)|0;aP(i+655376|0,0,j<<4|0)|0;f=0;while(1){if((f|0)>=(j|0))break;v=f<<2;c[i+131084+(v<<2)>>2]=x;c[i+131084+((v|1)<<2)>>2]=0;c[i+131084+((v|2)<<2)>>2]=w;c[i+131084+((v|3)<<2)>>2]=0;f=f+1|0}a=0;while(1){if((a|0)>=(o|0))break;k=(c[i+1179664+(a<<2)>>2]|0)+-1|0;l=a*7|0;f=i+12+(k<<2)|0;c[f>>2]=(c[f>>2]|0)+(c[i+1310736+(l<<2)>>2]|0);f=k<<1;j=i+655376+(f<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(l+1<<2)>>2]|0);f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]+ +(c[i+1310736+(l+2<<2)>>2]|0);k=k<<2;f=i+131084+(k<<2)|0;j=c[i+1310736+(l+3<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;f=i+131084+((k|1)<<2)|0;j=c[i+1310736+(l+4<<2)>>2]|0;if((c[f>>2]|0)<(j|0))c[f>>2]=j;f=i+131084+((k|2)<<2)|0;j=c[i+1310736+(l+5<<2)>>2]|0;if((c[f>>2]|0)>(j|0))c[f>>2]=j;j=i+131084+((k|3)<<2)|0;f=c[i+1310736+(l+6<<2)>>2]|0;if((c[j>>2]|0)<(f|0))c[j>>2]=f;a=a+1|0}j=c[n>>2]|0;f=0;while(1){if((f|0)>=(j|0)){f=0;break d}z=+(c[i+12+(f<<2)>>2]|0);x=f<<1;w=i+655376+(x<<3)|0;g[w>>3]=+g[w>>3]/z;x=i+655376+((x|1)<<3)|0;g[x>>3]=+g[x>>3]/z;f=f+1|0}}}while(0);zb=y;return f|0}function hc(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=n+((B(v,e)|0)<<1)|0;l=0;while(1){if((l|0)>=(e|0))break;b[k>>1]=0;b[j>>1]=0;j=j+2|0;k=k+2|0;l=l+1|0}u=e+-1|0;j=n;k=n+(u<<1)|0;l=0;while(1){if((l|0)>=(f|0))break;b[k>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+(e<<1)|0;l=l+1|0}m=i+1179664|0;l=e+1|0;t=0-e|0;k=a+l|0;s=1;p=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}r=k;j=p;q=1;while(1){if((q|0)>=(u|0))break;do if((d[r>>0]|0|0)>(h|0)){a=l+(t<<1)|0;k=b[a>>1]|0;if(k<<16>>16>0){b[l>>1]=k;p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}o=b[a+2>>1]|0;p=o<<16>>16;k=b[a+-2>>1]|0;n=k<<16>>16;a=k<<16>>16>0;if(o<<16>>16<=0){if(a){b[l>>1]=k;k=n*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-3<<2)|0;if((c[a>>2]|0)<(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16>0){b[l>>1]=k;k=(k<<16>>16)*7|0;p=i+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=i+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=i+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[l>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=q;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=q;c[i+1310736+(j+4<<2)>>2]=q;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(a){k=c[i+1179664+(p+-1<<2)>>2]|0;o=c[i+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[l>>1]=k;if((k|0)<(o|0)){a=m;n=0;while(1){if((n|0)>=(j|0))break b;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}}else{b[l>>1]=o;a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break b}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=i+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;c[i+1310736+(p+-1<<2)>>2]=s;break}k=b[l+-2>>1]|0;if(k<<16>>16<=0){b[l>>1]=o;k=p*7|0;a=i+1310736+(k+-7<<2)|0;c[a>>2]=(c[a>>2]|0)+1;a=i+1310736+(k+-6<<2)|0;c[a>>2]=(c[a>>2]|0)+q;a=i+1310736+(k+-5<<2)|0;c[a>>2]=(c[a>>2]|0)+s;a=i+1310736+(k+-4<<2)|0;if((c[a>>2]|0)>(q|0))c[a>>2]=q;c[i+1310736+(k+-1<<2)>>2]=s;break}o=c[i+1179664+(p+-1<<2)>>2]|0;k=c[i+1179664+((k<<16>>16)+-1<<2)>>2]|0;c:do if((o|0)<=(k|0)){b[l>>1]=o;if((o|0)<(k|0)){a=m;n=0;while(1){if((n|0)>=(j|0)){k=o;break c}if((c[a>>2]|0)==(k|0))c[a>>2]=o;a=a+4|0;n=n+1|0}}else k=o}else{b[l>>1]=k;a=m;n=0;while(1){if((n|0)>=(j|0))break c;if((c[a>>2]|0)==(o|0))c[a>>2]=k;a=a+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=i+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=i+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+s}else b[l>>1]=0;while(0);r=r+1|0;q=q+1|0;l=l+2|0}k=r+2|0;s=s+1|0;p=j;l=l+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){n=i+12|0;j=1;a=1;while(1){if((a|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}o=i+8|0;k=j+-1|0;c[o>>2]=k;if(!k)j=0;else{aP(n|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(p|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[o>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function ic(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=zb;zb=zb+16|0;w=x;n=c[i>>2]|0;v=f+-1|0;j=n;k=0;l=n+((B(v,e)|0)<<1)|0;while(1){if((k|0)>=(e|0))break;b[l>>1]=0;b[j>>1]=0;j=j+2|0;k=k+1|0;l=l+2|0}u=e+-1|0;j=n;k=0;l=n+(u<<1)|0;while(1){if((k|0)>=(f|0))break;b[l>>1]=0;b[j>>1]=0;j=j+(e<<1)|0;k=k+1|0;l=l+(e<<1)|0}m=i+1179664|0;l=e+1|0;t=0-e|0;a=a+l|0;k=h+l|0;s=1;o=0;l=n+(l<<1)|0;a:while(1){if((s|0)>=(v|0)){k=59;break}q=k;j=o;p=1;r=l;while(1){if((p|0)>=(u|0))break;do if((d[a>>0]|0)>(d[q>>0]|0)){l=r+(t<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[r>>1]=k;o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}n=b[l+2>>1]|0;o=n<<16>>16;k=b[l+-2>>1]|0;h=k<<16>>16;l=k<<16>>16>0;if(n<<16>>16<=0){if(l){b[r>>1]=k;k=h*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=b[r+-2>>1]|0;if(k<<16>>16>0){b[r>>1]=k;k=(k<<16>>16)*7|0;o=i+1310736+(k+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=i+1310736+(k+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+p;o=i+1310736+(k+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s;k=i+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(p|0))break;c[k>>2]=p;break}else{k=j+1|0;if((j|0)>32767){k=54;break a}b[r>>1]=k;c[i+1179664+(j<<2)>>2]=k<<16>>16;j=j*7|0;c[i+1310736+(j<<2)>>2]=1;c[i+1310736+(j+1<<2)>>2]=p;c[i+1310736+(j+2<<2)>>2]=s;c[i+1310736+(j+3<<2)>>2]=p;c[i+1310736+(j+4<<2)>>2]=p;c[i+1310736+(j+5<<2)>>2]=s;c[i+1310736+(j+6<<2)>>2]=s;j=k;break}}if(l){k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+(h+-1<<2)>>2]|0;b:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break b;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;n=i+1310736+(o+-5<<2)|0;c[n>>2]=(c[n>>2]|0)+s;c[i+1310736+(o+-1<<2)>>2]=s;break}l=b[r+-2>>1]|0;if(l<<16>>16<=0){b[r>>1]=n;k=o*7|0;l=i+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=i+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+p;l=i+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+s;l=i+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(p|0))c[l>>2]=p;c[i+1310736+(k+-1<<2)>>2]=s;break}k=c[i+1179664+(o+-1<<2)>>2]|0;n=c[i+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(n|0)){b[r>>1]=k;if((k|0)<(n|0)){l=m;h=0;while(1){if((h|0)>=(j|0))break c;if((c[l>>2]|0)==(n|0))c[l>>2]=k;l=l+4|0;h=h+1|0}}}else{b[r>>1]=n;l=m;h=0;while(1){if((h|0)>=(j|0)){k=n;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=n;l=l+4|0;h=h+1|0}}while(0);o=(k<<16>>16)*7|0;n=i+1310736+(o+-7<<2)|0;c[n>>2]=(c[n>>2]|0)+1;n=i+1310736+(o+-6<<2)|0;c[n>>2]=(c[n>>2]|0)+p;o=i+1310736+(o+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+s}else b[r>>1]=0;while(0);a=a+1|0;q=q+1|0;p=p+1|0;r=r+2|0}a=a+2|0;k=q+2|0;s=s+1|0;o=j;l=r+4|0}d:do if((k|0)==54){Ue(0,3,19708,w);j=-1}else if((k|0)==59){h=i+12|0;j=1;a=1;while(1){if((a|0)>(o|0))break;k=c[m>>2]|0;if((k|0)==(a|0))l=j+1|0;else{l=j;j=c[i+1179664+(k+-1<<2)>>2]|0}c[m>>2]=j;j=l;a=a+1|0;m=m+4|0}n=i+8|0;k=j+-1|0;c[n>>2]=k;if(!k)j=0;else{aP(h|0,0,k<<2|0)|0;aP(i+655376|0,0,k<<4|0)|0;j=0;while(1){if((j|0)>=(k|0))break;w=j<<2;c[i+131084+(w<<2)>>2]=e;c[i+131084+((w|1)<<2)>>2]=0;c[i+131084+((w|2)<<2)>>2]=f;c[i+131084+((w|3)<<2)>>2]=0;j=j+1|0}a=0;while(1){if((a|0)>=(o|0))break;l=(c[i+1179664+(a<<2)>>2]|0)+-1|0;m=a*7|0;j=i+12+(l<<2)|0;c[j>>2]=(c[j>>2]|0)+(c[i+1310736+(m<<2)>>2]|0);j=l<<1;k=i+655376+(j<<3)|0;g[k>>3]=+g[k>>3]+ +(c[i+1310736+(m+1<<2)>>2]|0);j=i+655376+((j|1)<<3)|0;g[j>>3]=+g[j>>3]+ +(c[i+1310736+(m+2<<2)>>2]|0);l=l<<2;j=i+131084+(l<<2)|0;k=c[i+1310736+(m+3<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;j=i+131084+((l|1)<<2)|0;k=c[i+1310736+(m+4<<2)>>2]|0;if((c[j>>2]|0)<(k|0))c[j>>2]=k;j=i+131084+((l|2)<<2)|0;k=c[i+1310736+(m+5<<2)>>2]|0;if((c[j>>2]|0)>(k|0))c[j>>2]=k;k=i+131084+((l|3)<<2)|0;j=c[i+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(j|0))c[k>>2]=j;a=a+1|0}k=c[n>>2]|0;j=0;while(1){if((j|0)>=(k|0)){j=0;break d}y=+(c[i+12+(j<<2)>>2]|0);f=j<<1;e=i+655376+(f<<3)|0;g[e>>3]=+g[e>>3]/y;f=i+655376+((f|1)<<3)|0;g[f>>3]=+g[f>>3]/y;j=j+1|0}}}while(0);zb=x;return j|0}function jc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){b[e>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function kc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){b[e>>1]=0;a[t>>0]=0}else{a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function lc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){b[t>>1]=0;a[s>>0]=0}else{a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function mc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+16|0;x=A;z=(f|0)/2|0;y=(h|0)/2|0;n=c[j>>2]|0;w=y+-1|0;h=n;k=n+((B(w,z)|0)<<1)|0;l=0;while(1){if((l|0)>=(z|0))break;b[k>>1]=0;b[h>>1]=0;h=h+2|0;k=k+2|0;l=l+1|0}v=z+-1|0;h=n;k=n+(v<<1)|0;l=0;while(1){if((l|0)>=(y|0))break;b[k>>1]=0;b[h>>1]=0;h=h+(z<<1)|0;k=k+(z<<1)|0;l=l+1|0}m=j+1179664|0;s=z+1|0;u=0-z|0;k=e+((f<<1)+2)|0;t=1;p=0;l=(c[j+4>>2]|0)+s|0;e=n+(s<<1)|0;a:while(1){if((t|0)>=(w|0)){k=59;break}r=k;h=p;s=l;q=1;while(1){if((q|0)>=(v|0))break;do if((d[r>>0]|0|0)>(i|0)){a[s>>0]=-1;l=e+(u<<1)|0;k=b[l>>1]|0;if(k<<16>>16>0){b[e>>1]=k;p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}o=b[l+2>>1]|0;p=o<<16>>16;k=b[l+-2>>1]|0;n=k<<16>>16;l=k<<16>>16>0;if(o<<16>>16<=0){if(l){b[e>>1]=k;k=n*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-3<<2)|0;if((c[l>>2]|0)<(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=b[e+-2>>1]|0;if(k<<16>>16>0){b[e>>1]=k;k=(k<<16>>16)*7|0;p=j+1310736+(k+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(k+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(k+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t;k=j+1310736+(k+-3<<2)|0;if((c[k>>2]|0)>=(q|0))break;c[k>>2]=q;break}else{k=h+1|0;if((h|0)>32767){k=54;break a}b[e>>1]=k;c[j+1179664+(h<<2)>>2]=k<<16>>16;h=h*7|0;c[j+1310736+(h<<2)>>2]=1;c[j+1310736+(h+1<<2)>>2]=q;c[j+1310736+(h+2<<2)>>2]=t;c[j+1310736+(h+3<<2)>>2]=q;c[j+1310736+(h+4<<2)>>2]=q;c[j+1310736+(h+5<<2)>>2]=t;c[j+1310736+(h+6<<2)>>2]=t;h=k;break}}if(l){k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+(n+-1<<2)>>2]|0;b:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break b;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break b}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;o=j+1310736+(p+-5<<2)|0;c[o>>2]=(c[o>>2]|0)+t;c[j+1310736+(p+-1<<2)>>2]=t;break}l=b[e+-2>>1]|0;if(l<<16>>16<=0){b[e>>1]=o;k=p*7|0;l=j+1310736+(k+-7<<2)|0;c[l>>2]=(c[l>>2]|0)+1;l=j+1310736+(k+-6<<2)|0;c[l>>2]=(c[l>>2]|0)+q;l=j+1310736+(k+-5<<2)|0;c[l>>2]=(c[l>>2]|0)+t;l=j+1310736+(k+-4<<2)|0;if((c[l>>2]|0)>(q|0))c[l>>2]=q;c[j+1310736+(k+-1<<2)>>2]=t;break}k=c[j+1179664+(p+-1<<2)>>2]|0;o=c[j+1179664+((l<<16>>16)+-1<<2)>>2]|0;c:do if((k|0)<=(o|0)){b[e>>1]=k;if((k|0)<(o|0)){l=m;n=0;while(1){if((n|0)>=(h|0))break c;if((c[l>>2]|0)==(o|0))c[l>>2]=k;l=l+4|0;n=n+1|0}}}else{b[e>>1]=o;l=m;n=0;while(1){if((n|0)>=(h|0)){k=o;break c}if((c[l>>2]|0)==(k|0))c[l>>2]=o;l=l+4|0;n=n+1|0}}while(0);p=(k<<16>>16)*7|0;o=j+1310736+(p+-7<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+1310736+(p+-6<<2)|0;c[o>>2]=(c[o>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+t}else{b[e>>1]=0;a[s>>0]=0}while(0);r=r+2|0;s=s+1|0;q=q+1|0;e=e+2|0}k=r+f+4|0;t=t+1|0;p=h;l=s+2|0;e=e+4|0}d:do if((k|0)==54){Ue(0,3,19708,x);h=-1}else if((k|0)==59){n=j+12|0;h=1;e=1;while(1){if((e|0)>(p|0))break;k=c[m>>2]|0;if((k|0)==(e|0))l=h+1|0;else{l=h;h=c[j+1179664+(k+-1<<2)>>2]|0}c[m>>2]=h;h=l;e=e+1|0;m=m+4|0}o=j+8|0;k=h+-1|0;c[o>>2]=k;if(!k)h=0;else{aP(n|0,0,k<<2|0)|0;aP(j+655376|0,0,k<<4|0)|0;h=0;while(1){if((h|0)>=(k|0))break;x=h<<2;c[j+131084+(x<<2)>>2]=z;c[j+131084+((x|1)<<2)>>2]=0;c[j+131084+((x|2)<<2)>>2]=y;c[j+131084+((x|3)<<2)>>2]=0;h=h+1|0}e=0;while(1){if((e|0)>=(p|0))break;l=(c[j+1179664+(e<<2)>>2]|0)+-1|0;m=e*7|0;h=j+12+(l<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[j+1310736+(m<<2)>>2]|0);h=l<<1;k=j+655376+(h<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(m+1<<2)>>2]|0);h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]+ +(c[j+1310736+(m+2<<2)>>2]|0);l=l<<2;h=j+131084+(l<<2)|0;k=c[j+1310736+(m+3<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;h=j+131084+((l|1)<<2)|0;k=c[j+1310736+(m+4<<2)>>2]|0;if((c[h>>2]|0)<(k|0))c[h>>2]=k;h=j+131084+((l|2)<<2)|0;k=c[j+1310736+(m+5<<2)>>2]|0;if((c[h>>2]|0)>(k|0))c[h>>2]=k;k=j+131084+((l|3)<<2)|0;h=c[j+1310736+(m+6<<2)>>2]|0;if((c[k>>2]|0)<(h|0))c[k>>2]=h;e=e+1|0}k=c[o>>2]|0;h=0;while(1){if((h|0)>=(k|0)){h=0;break d}C=+(c[j+12+(h<<2)>>2]|0);z=h<<1;y=j+655376+(z<<3)|0;g[y>>3]=+g[y>>3]/C;z=j+655376+((z|1)<<3)|0;g[z>>3]=+g[z>>3]/C;h=h+1|0}}}while(0);zb=A;return h|0}function nc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;o=c[j>>2]|0;x=h+-1|0;k=o;l=o+((B(x,f)|0)<<1)|0;m=0;while(1){if((m|0)>=(f|0))break;b[l>>1]=0;b[k>>1]=0;k=k+2|0;l=l+2|0;m=m+1|0}w=f+-1|0;k=o;l=o+(w<<1)|0;m=0;while(1){if((m|0)>=(h|0))break;b[l>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+(f<<1)|0;m=m+1|0}n=j+1179664|0;t=f+1|0;v=0-f|0;l=e+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=o+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}s=l;k=q;t=m;r=1;while(1){if((r|0)>=(w|0))break;do if((d[s>>0]|0|0)>(i|0)){a[t>>0]=-1;m=e+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[e>>1]=l;q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}p=b[m+2>>1]|0;q=p<<16>>16;l=b[m+-2>>1]|0;o=l<<16>>16;m=l<<16>>16>0;if(p<<16>>16<=0){if(m){b[e>>1]=l;l=o*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[e+-2>>1]|0;if(l<<16>>16>0){b[e>>1]=l;l=(l<<16>>16)*7|0;q=j+1310736+(l+-7<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+1310736+(l+-6<<2)|0;c[q>>2]=(c[q>>2]|0)+r;q=j+1310736+(l+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(r|0))break;c[l>>2]=r;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[e>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=r;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=r;c[j+1310736+(k+4<<2)>>2]=r;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+(o+-1<<2)>>2]|0;b:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break b;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;p=j+1310736+(q+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;c[j+1310736+(q+-1<<2)>>2]=u;break}m=b[e+-2>>1]|0;if(m<<16>>16<=0){b[e>>1]=p;l=q*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+r;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(r|0))c[m>>2]=r;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(q+-1<<2)>>2]|0;p=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(p|0)){b[e>>1]=l;if((l|0)<(p|0)){m=n;o=0;while(1){if((o|0)>=(k|0))break c;if((c[m>>2]|0)==(p|0))c[m>>2]=l;m=m+4|0;o=o+1|0}}}else{b[e>>1]=p;m=n;o=0;while(1){if((o|0)>=(k|0)){l=p;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=p;m=m+4|0;o=o+1|0}}while(0);q=(l<<16>>16)*7|0;p=j+1310736+(q+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(q+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+r;q=j+1310736+(q+-5<<2)|0;c[q>>2]=(c[q>>2]|0)+u}else{b[e>>1]=0;a[t>>0]=0}while(0);s=s+1|0;t=t+1|0;r=r+1|0;e=e+2|0}l=s+2|0;u=u+1|0;q=k;m=t+2|0;e=e+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){o=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}p=j+8|0;l=k+-1|0;c[p>>2]=l;if(!l)k=0;else{aP(o|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[p>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function oc(e,f,h,i,j){e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;y=z;p=c[j>>2]|0;x=h+-1|0;k=p;l=0;m=p+((B(x,f)|0)<<1)|0;while(1){if((l|0)>=(f|0))break;b[m>>1]=0;b[k>>1]=0;k=k+2|0;l=l+1|0;m=m+2|0}w=f+-1|0;k=p;l=0;m=p+(w<<1)|0;while(1){if((l|0)>=(h|0))break;b[m>>1]=0;b[k>>1]=0;k=k+(f<<1)|0;l=l+1|0;m=m+(f<<1)|0}n=j+1179664|0;t=f+1|0;v=0-f|0;o=e+t|0;l=i+t|0;u=1;q=0;m=(c[j+4>>2]|0)+t|0;e=p+(t<<1)|0;a:while(1){if((u|0)>=(x|0)){l=59;break}r=l;k=q;s=m;q=1;t=e;while(1){if((q|0)>=(w|0))break;do if((d[o>>0]|0)>(d[r>>0]|0)){a[s>>0]=-1;m=t+(v<<1)|0;l=b[m>>1]|0;if(l<<16>>16>0){b[t>>1]=l;p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}i=b[m+2>>1]|0;p=i<<16>>16;l=b[m+-2>>1]|0;e=l<<16>>16;m=l<<16>>16>0;if(i<<16>>16<=0){if(m){b[t>>1]=l;l=e*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-3<<2)|0;if((c[m>>2]|0)<(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=b[t+-2>>1]|0;if(l<<16>>16>0){b[t>>1]=l;l=(l<<16>>16)*7|0;p=j+1310736+(l+-7<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=j+1310736+(l+-6<<2)|0;c[p>>2]=(c[p>>2]|0)+q;p=j+1310736+(l+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u;l=j+1310736+(l+-3<<2)|0;if((c[l>>2]|0)>=(q|0))break;c[l>>2]=q;break}else{l=k+1|0;if((k|0)>32767){l=54;break a}b[t>>1]=l;c[j+1179664+(k<<2)>>2]=l<<16>>16;k=k*7|0;c[j+1310736+(k<<2)>>2]=1;c[j+1310736+(k+1<<2)>>2]=q;c[j+1310736+(k+2<<2)>>2]=u;c[j+1310736+(k+3<<2)>>2]=q;c[j+1310736+(k+4<<2)>>2]=q;c[j+1310736+(k+5<<2)>>2]=u;c[j+1310736+(k+6<<2)>>2]=u;k=l;break}}if(m){l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+(e+-1<<2)>>2]|0;b:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break b;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break b}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;i=j+1310736+(p+-5<<2)|0;c[i>>2]=(c[i>>2]|0)+u;c[j+1310736+(p+-1<<2)>>2]=u;break}m=b[t+-2>>1]|0;if(m<<16>>16<=0){b[t>>1]=i;l=p*7|0;m=j+1310736+(l+-7<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=j+1310736+(l+-6<<2)|0;c[m>>2]=(c[m>>2]|0)+q;m=j+1310736+(l+-5<<2)|0;c[m>>2]=(c[m>>2]|0)+u;m=j+1310736+(l+-4<<2)|0;if((c[m>>2]|0)>(q|0))c[m>>2]=q;c[j+1310736+(l+-1<<2)>>2]=u;break}l=c[j+1179664+(p+-1<<2)>>2]|0;i=c[j+1179664+((m<<16>>16)+-1<<2)>>2]|0;c:do if((l|0)<=(i|0)){b[t>>1]=l;if((l|0)<(i|0)){m=n;e=0;while(1){if((e|0)>=(k|0))break c;if((c[m>>2]|0)==(i|0))c[m>>2]=l;m=m+4|0;e=e+1|0}}}else{b[t>>1]=i;m=n;e=0;while(1){if((e|0)>=(k|0)){l=i;break c}if((c[m>>2]|0)==(l|0))c[m>>2]=i;m=m+4|0;e=e+1|0}}while(0);p=(l<<16>>16)*7|0;i=j+1310736+(p+-7<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=j+1310736+(p+-6<<2)|0;c[i>>2]=(c[i>>2]|0)+q;p=j+1310736+(p+-5<<2)|0;c[p>>2]=(c[p>>2]|0)+u}else{b[t>>1]=0;a[s>>0]=0}while(0);o=o+1|0;r=r+1|0;s=s+1|0;q=q+1|0;t=t+2|0}o=o+2|0;l=r+2|0;u=u+1|0;q=k;m=s+2|0;e=t+4|0}d:do if((l|0)==54){Ue(0,3,19708,y);k=-1}else if((l|0)==59){i=j+12|0;k=1;e=1;while(1){if((e|0)>(q|0))break;l=c[n>>2]|0;if((l|0)==(e|0))m=k+1|0;else{m=k;k=c[j+1179664+(l+-1<<2)>>2]|0}c[n>>2]=k;k=m;e=e+1|0;n=n+4|0}o=j+8|0;l=k+-1|0;c[o>>2]=l;if(!l)k=0;else{aP(i|0,0,l<<2|0)|0;aP(j+655376|0,0,l<<4|0)|0;k=0;while(1){if((k|0)>=(l|0))break;y=k<<2;c[j+131084+(y<<2)>>2]=f;c[j+131084+((y|1)<<2)>>2]=0;c[j+131084+((y|2)<<2)>>2]=h;c[j+131084+((y|3)<<2)>>2]=0;k=k+1|0}e=0;while(1){if((e|0)>=(q|0))break;m=(c[j+1179664+(e<<2)>>2]|0)+-1|0;n=e*7|0;k=j+12+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(c[j+1310736+(n<<2)>>2]|0);k=m<<1;l=j+655376+(k<<3)|0;g[l>>3]=+g[l>>3]+ +(c[j+1310736+(n+1<<2)>>2]|0);k=j+655376+((k|1)<<3)|0;g[k>>3]=+g[k>>3]+ +(c[j+1310736+(n+2<<2)>>2]|0);m=m<<2;k=j+131084+(m<<2)|0;l=c[j+1310736+(n+3<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;k=j+131084+((m|1)<<2)|0;l=c[j+1310736+(n+4<<2)>>2]|0;if((c[k>>2]|0)<(l|0))c[k>>2]=l;k=j+131084+((m|2)<<2)|0;l=c[j+1310736+(n+5<<2)>>2]|0;if((c[k>>2]|0)>(l|0))c[k>>2]=l;l=j+131084+((m|3)<<2)|0;k=c[j+1310736+(n+6<<2)>>2]|0;if((c[l>>2]|0)<(k|0))c[l>>2]=k;e=e+1|0}l=c[o>>2]|0;k=0;while(1){if((k|0)>=(l|0)){k=0;break d}A=+(c[j+12+(k<<2)>>2]|0);h=k<<1;f=j+655376+(h<<3)|0;g[f>>3]=+g[f>>3]/A;h=j+655376+((h|1)<<3)|0;g[h>>3]=+g[h>>3]/A;k=k+1|0}}}while(0);zb=z;return k|0}function pc(a){a=a|0;return qc(a+8|0)|0}function qc(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=FO(4)|0;if(!b){Ue(0,3,41858,d);Ea(1)}a=Ee(a)|0;c[b>>2]=a;if(!a){GO(b);b=0}zb=d;return b|0}function rc(a){a=a|0;var b=0;b=c[a>>2]|0;if(!b)a=-1;else{Fe(b)|0;GO(c[a>>2]|0);c[a>>2]=0;a=0}return a|0}function sc(a){a=a|0;var b=0,d=0,e=0;d=zb;zb=zb+16|0;b=FO(7062432)|0;if(!b){Ue(0,3,41858,d);Ea(1)}c[b>>2]=0;c[b+4834148>>2]=0;c[b+7062408>>2]=0;c[b+4>>2]=-1;c[b+8>>2]=0;c[b+12>>2]=1;c[b+16>>2]=100;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=2;g[b+7062416>>3]=.5;c[b+7062424>>2]=3;c[b+32>>2]=a;e=c[a>>2]|0;c[b+36>>2]=e;a=c[a+4>>2]|0;c[b+40>>2]=a;c[b+44>>2]=0;c[b+15408>>2]=0;c[b+4834152>>2]=0;c[b+4818296>>2]=0;a=FO(B(e<<1,a)|0)|0;c[b+4834144>>2]=a;if(!a){Ue(0,3,41858,d+8|0);Ea(1)}else{c[b+7062384>>2]=0;tc(b,0)|0;c[b+7062388>>2]=-1;uc(b,0)|0;vc(b,7)|0;zb=d;return b|0}return 0}function tc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;do if(a)if((c[a>>2]|0)!=(b|0)){c[a>>2]=b;if(!b){d=a+4834148|0;GO(c[d>>2]|0);c[d>>2]=0;d=0;break}b=FO(B(c[a+40>>2]|0,c[a+36>>2]|0)|0)|0;c[a+4834148>>2]=b;if(!b){Ue(0,3,41858,e);Ea(1)}else d=0}else d=0;else d=-1;while(0);zb=f;return d|0}function uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+8|0;f=i;if(a){g=a+7062388|0;if((c[g>>2]|0)!=(b|0)){d=a+7062408|0;e=c[d>>2]|0;if(e|0){Zc(e);c[d>>2]=0}switch(b|0){case 3:case 2:case 1:{f=Yc(c[a+36>>2]|0,c[a+40>>2]|0)|0;c[d>>2]=f;break}case 4:{c[a+7062404>>2]=1;c[a+7062400>>2]=1;b=4;break}case 0:break;default:{Ue(0,3,19740,f);b=0}}c[g>>2]=b;if((c[a>>2]|0)==1){c[h>>2]=c[16+(b<<2)>>2];Ue(0,3,19814,h);b=0}else b=0}else b=0}else b=-1;zb=i;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062392>>2]=b;c[a+7062396>>2]=0;a=0}return a|0}function wc(a){a=a|0;var b=0,d=0;if(!a)a=-1;else{b=a+7062408|0;d=c[b>>2]|0;if(d|0){Zc(d);c[b>>2]=0}GO(c[a+4834144>>2]|0);GO(c[a+4834148>>2]|0);GO(a);a=0}return a|0}function xc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a>>2];a=0}else a=-1;return a|0}function yc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+12>>2]=b;a=0}else a=-1;return a|0}function zc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+12>>2];a=0}else a=-1;return a|0}function Ac(a,b){a=a|0;b=b|0;if((a|0)==0|b>>>0>255)a=-1;else{c[a+16>>2]=b;a=0}return a|0}function Bc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+16>>2];a=0}else a=-1;return a|0}function Cc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062388>>2];a=0}else a=-1;return a|0}function Dc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<2){c[a+20>>2]=b;a=0}else a=-1;return a|0}function Ec(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+20>>2];a=0}return a|0}function Fc(a,b){a=a|0;b=b|0;if((a|0)!=0&b>>>0<5){c[a+24>>2]=b;a=0}else a=-1;return a|0}function Gc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[a+7062424>>2]=b;a=0}return a|0}function Hc(a,b){a=a|0;b=b|0;if((a|0)!=0&(b|0)!=0){c[b>>2]=c[a+7062424>>2];a=0}else a=-1;return a|0}function Ic(a,b){a=a|0;b=b|0;if(!a)a=-1;else{c[b>>2]=c[a+24>>2];a=0}return a|0}function Jc(a,b){a=a|0;b=+b;if((a|0)!=0?!(b<=0.0|b>=1.0):0){g[a+7062416>>3]=b;a=0}else a=-1;return a|0}function Kc(a,b){a=a|0;b=b|0;if(!a)a=-1;else{g[b>>3]=+g[a+7062416>>3];a=0}return a|0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;a:do if(a){d=a+4|0;if((c[d>>2]|0)!=(b|0)){if(b>>>0>=15){c[e>>2]=b;Ue(0,3,19909,e);a=-1;break}c[d>>2]=b;d=zd(b)|0;c[a+8>>2]=d;a=a+24|0;d=c[a>>2]|0;if(!(28704>>>(b&32767)&1))switch(d|0){case 1:{c[a>>2]=4;a=0;break a}case 4:{c[a>>2]=3;a=0;break a}default:{a=0;break a}}else switch(d|0){case 0:{c[a>>2]=1;a=0;break a}case 3:{c[a>>2]=4;a=0;break a}default:{a=0;break a}}}else a=0}else a=-1;while(0);zb=f;return a|0}function Mc(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0;P=zb;zb=zb+64|0;L=P+32|0;F=P+24|0;y=P;J=P+52|0;C=P+40|0;a:do if((a|0)!=0&(b|0)!=0){O=a+44|0;c[O>>2]=0;K=a+7062388|0;e=c[K>>2]|0;b:do if((e|0)==4){H=a+7062396|0;e=c[H>>2]|0;do if((e|0)>0)c[H>>2]=e+-1;else{B=a+16|0;D=c[B>>2]|0;E=a+7062400|0;z=(c[E>>2]|0)+D|0;z=(z|0)<255?z:255;c[J>>2]=z;G=a+7062404|0;A=D-(c[G>>2]|0)|0;A=(A|0)>0?A:0;c[J+4>>2]=A;c[J+8>>2]=D;f=b+12|0;h=a+36|0;i=a+40|0;j=a+12|0;k=a+20|0;n=a+4834144|0;p=a+15416|0;q=a+15408|0;r=a+4|0;s=a+7062384|0;t=a+24|0;u=a+32|0;v=a+7062416|0;w=a+48|0;x=a+7062424|0;e=0;while(1){if(e>>>0>=3)break;if((ed(c[f>>2]|0,c[h>>2]|0,c[i>>2]|0,c[a>>2]|0,c[j>>2]|0,c[J+(e<<2)>>2]|0,c[k>>2]|0,n,0)|0)<0){M=29;break}if((Oc(c[h>>2]|0,c[i>>2]|0,n,c[k>>2]|0,1e6,70,1.0,p,q)|0)<0){M=29;break}if((Tc(c[b>>2]|0,c[h>>2]|0,c[i>>2]|0,c[r>>2]|0,p,c[q>>2]|0,c[s>>2]|0,c[k>>2]|0,c[t>>2]|0,(c[u>>2]|0)+184|0,+g[v>>3],w,O,c[x>>2]|0)|0)<0){M=29;break}c[C+(e<<2)>>2]=c[O>>2];e=e+1|0}if((M|0)==29){e=-1;break a}if((c[a>>2]|0)==1){x=c[C+4>>2]|0;h=c[C+8>>2]|0;f=c[C>>2]|0;c[y>>2]=A;c[y+4>>2]=x;c[y+8>>2]=D;c[y+12>>2]=h;c[y+16>>2]=z;c[y+20>>2]=f;Ue(0,3,19958,y)}else{f=c[C>>2]|0;h=c[C+8>>2]|0}e=c[C+4>>2]|0;if((f|0)>(h|0)|(e|0)>(h|0)){f=(f|0)<(e|0)?A:z;c[B>>2]=f;e=f-D|0;if((e|0)>0){c[E>>2]=e;e=1}else{c[E>>2]=1;e=0-e|0}c[G>>2]=e;if((c[a>>2]|0)==1){c[F>>2]=f;Ue(0,3,20034,F);c[H>>2]=c[a+7062392>>2];break}else{c[H>>2]=c[a+7062392>>2];break}}e=c[E>>2]|0;f=c[G>>2]|0;do if((e|0)>=(f|0))if((e|0)>(f|0)){c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e;c[G>>2]=f+1;break}else{e=e+1|0;c[E>>2]=e}while(0);if((e+D|0)>254){c[E>>2]=1;e=1}if((D|0)<=(e|0))c[G>>2]=1;c[H>>2]=c[a+7062392>>2];break b}while(0);h=c[K>>2]|0;M=33}else{h=e;M=33}while(0);if((M|0)==33){c:do switch(h|0){case 3:{f=a+7062408|0;h=b+12|0;e=dd(c[f>>2]|0,c[h>>2]|0,9,-7)|0;if((e|0)<0)break a;e=c[f>>2]|0;k=a+4834144|0;e=ed(c[h>>2]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[a>>2]|0,c[a+12>>2]|0,0,0,k,c[e>>2]|0)|0;if((e|0)<0)break a;e=a+36|0;f=a+40|0;h=a+20|0;break}case 2:case 1:{i=a+7062396|0;e=c[i>>2]|0;if((e|0)>0){c[i>>2]=e+-1;M=48;break c}e=c[a+7062408>>2]|0;f=c[b+12>>2]|0;if((h|0)==1)e=bd(e,f,J)|0;else e=cd(e,f,J)|0;if((e|0)<0)break a;e=a+16|0;if((c[a>>2]|0)==1?(I=d[J>>0]|0,(c[e>>2]|0)!=(I|0)):0){c[L>>2]=(c[K>>2]|0)==1?20086:20093;c[L+4>>2]=I;Ue(0,3,20098,L)}c[e>>2]=d[J>>0];c[i>>2]=c[a+7062392>>2];M=48;break}default:M=48}while(0);if((M|0)==48){e=a+36|0;f=a+40|0;h=a+20|0;k=a+4834144|0;if((ed(c[b+12>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[h>>2]|0,k,0)|0)<0){e=-1;break}}i=a+15416|0;j=a+15408|0;if((Oc(c[e>>2]|0,c[f>>2]|0,k,c[h>>2]|0,1e6,70,1.0,i,j)|0)<0){e=-1;break}if((Tc(c[b>>2]|0,c[e>>2]|0,c[f>>2]|0,c[a+4>>2]|0,i,c[j>>2]|0,c[a+7062384>>2]|0,c[h>>2]|0,c[a+24>>2]|0,(c[a+32>>2]|0)+184|0,+g[a+7062416>>3],a+48|0,O,c[a+7062424>>2]|0)|0)<0){e=-1;break}}s=a+28|0;if((c[s>>2]|0)==1){Nc(a);e=0;break}t=a+4818296|0;q=c[t>>2]|0;r=a+24|0;p=0;while(1){if((p|0)>=(q|0))break;h=c[O>>2]|0;i=a+4818304+(p*264|0)|0;j=a+4818304+(p*264|0)+56|0;k=a+4818304+(p*264|0)+64|0;f=0;n=-1;l=.5;while(1){if((f|0)>=(h|0))break;m=+(c[a+48+(f<<8)>>2]|0);o=+(c[i>>2]|0)/m;if(!(o<.7|o>1.43)?(o=+g[a+48+(f<<8)+56>>3]-+g[j>>3],N=+g[a+48+(f<<8)+64>>3]-+g[k>>3],N=(o*o+N*N)/m,N-1){k=c[r>>2]|0;switch(k|0){case 2:case 1:case 0:break;case 4:case 3:{f=a+48+(n<<8)+40|0;m=+g[a+4818304+(p*264|0)+40>>3];if(!(+g[f>>3]>3];if(!(+g[e>>3]>3]}g[f>>3]=m;c[a+48+(n<<8)+8>>2]=c[a+4818304+(p*264|0)+8>>2];g[e>>3]=l;c[a+48+(n<<8)+12>>2]=c[a+4818304+(p*264|0)+12>>2];f=0;h=-1;m=1.0e8;while(1){if((f|0)==4)break;e=0;l=0.0;while(1){if((e|0)==4)break;b=e+f&3;Q=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];o=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;l=l+(Q*Q+o*o)}b=l>2]=(b+(c[a+4818304+(p*264|0)+20>>2]|0)|0)%4|0;c[a+48+(n<<8)+24>>2]=(b+(c[a+4818304+(p*264|0)+24>>2]|0)|0)%4|0;break d}default:{e=-1;break a}}e=a+48+(n<<8)+32|0;o=+g[a+4818304+(p*264|0)+32>>3];if(+g[e>>3]>3]=o;i=c[a+4818304+(p*264|0)+4>>2]|0;c[a+48+(n<<8)+4>>2]=i;j=a+4818304+(p*264|0)+16|0;f=-1;l=1.0e8;h=0;while(1){if((h|0)==4)break;e=0;m=0.0;while(1){if((e|0)==4)break;b=e+h&3;R=+g[a+4818304+(p*264|0)+168+(e<<4)>>3]-+g[a+48+(n<<8)+168+(b<<4)>>3];Q=+g[a+4818304+(p*264|0)+168+(e<<4)+8>>3]-+g[a+48+(n<<8)+168+(b<<4)+8>>3];e=e+1|0;m=m+(R*R+Q*Q)}if(m>2]|0)|0)%4|0;l=m}else e=f;f=e;h=h+1|0}c[a+48+(n<<8)+16>>2]=f;if(k>>>0<2){c[a+48+(n<<8)+8>>2]=i;g[a+48+(n<<8)+40>>3]=o;c[a+48+(n<<8)+20>>2]=f;break}else{c[a+48+(n<<8)+12>>2]=i;g[a+48+(n<<8)+48>>3]=o;c[a+48+(n<<8)+24>>2]=f;break}}}while(0);p=p+1|0}Nc(a);f=0;e=0;while(1){if((f|0)>=(c[t>>2]|0))break;M=a+4818304+(f*264|0)+256|0;b=c[M>>2]|0;c[M>>2]=b+1;if((b|0)<3){if((f|0)!=(e|0))_O(a+4818304+(e*264|0)|0,a+4818304+(f*264|0)|0,264)|0;e=e+1|0}f=f+1|0}c[t>>2]=e;f=c[O>>2]|0;k=0;while(1){if((k|0)>=(f|0))break;j=a+48+(k<<8)|0;h=c[a+48+(k<<8)+4>>2]|0;if((h|0)>=0){i=0;while(1){if((i|0)>=(e|0))break;if((c[a+4818304+(i*264|0)+4>>2]|0)==(h|0))break;i=i+1|0}if((i|0)==(e|0)){if((e|0)==60)break;e=e+1|0;c[t>>2]=e}_O(a+4818304+(i*264|0)|0,j|0,256)|0;c[a+4818304+(i*264|0)+256>>2]=1}k=k+1|0}if((c[s>>2]|0)==2)e=0;else{n=0;while(1){if((n|0)>=(e|0)){e=0;break a}i=a+4818304+(n*264|0)|0;j=a+4818304+(n*264|0)+56|0;k=a+4818304+(n*264|0)+64|0;h=0;while(1){if((h|0)>=(f|0))break;l=+(c[a+48+(h<<8)>>2]|0);R=+(c[i>>2]|0)/l;if(!(R<.7|R>1.43)?(Q=+g[a+48+(h<<8)+56>>3]-+g[j>>3],R=+g[a+48+(h<<8)+64>>3]-+g[k>>3],(Q*Q+R*R)/l<.5):0)break;h=h+1|0}if((h|0)==(f|0)){_O(a+48+(f<<8)|0,a+4818304+(n*264|0)|0,256)|0;f=f+1|0;c[O>>2]=f;e=c[t>>2]|0}n=n+1|0}}}else e=-1;while(0);zb=P;return e|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0;a:do switch(c[a+24>>2]|0){case 1:case 0:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+8>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}case 2:{d=c[a+44>>2]|0;b=0;while(1){if((b|0)>=(d|0))break a;e=a+48+(b<<8)+4|0;if((c[e>>2]|0)>-1?+g[a+48+(b<<8)+32>>3]<.5:0){c[a+48+(b<<8)+12>>2]=-1;c[e>>2]=-1;c[a+48+(b<<8)+236>>2]=6}b=b+1|0}}default:{f=c[a+44>>2]|0;e=0;while(1){if((e|0)>=(f|0))break a;b=a+48+(e<<8)+8|0;if((c[b>>2]|0)>-1?+g[a+48+(e<<8)+40>>3]<.5:0){c[b>>2]=-1;b=0}else b=1;d=a+48+(e<<8)+12|0;if(((c[d>>2]|0)>-1?+g[a+48+(e<<8)+48>>3]<.5:0)?(c[d>>2]=-1,(b|0)==0):0)c[a+48+(e<<8)+236>>2]=6;e=e+1|0}}}while(0);return}function Oc(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=+i;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;r=(e|0)==1;if(r){a=(a|0)/2|0;b=(b|0)/2|0;f=(f|0)/4|0;h=(h|0)/4|0}c[k>>2]=0;n=d+8|0;o=a+-2|0;b=b+-2|0;l=d+1179664|0;e=0;while(1){if((e|0)>=(c[n>>2]|0)){q=5;break}m=d+12+(e<<2)|0;s=c[m>>2]|0;if(((((((!((s|0)<(h|0)|(s|0)>(f|0))?(p=d+131084+(e<<4)|0,(c[p>>2]|0)!=1):0)?(c[d+131084+(e<<4)+4>>2]|0)!=(o|0):0)?(c[d+131084+(e<<4)+8>>2]|0)!=1:0)?(c[d+131084+(e<<4)+12>>2]|0)!=(b|0):0)?(Pc(c[d>>2]|0,a,0,l,e+1|0,p,j+((c[k>>2]|0)*80048|0)|0)|0)>=0:0)?(Qc(c[m>>2]|0,j+((c[k>>2]|0)*80048|0)|0,i)|0)>=0:0)?(c[j+((c[k>>2]|0)*80048|0)>>2]=c[m>>2],s=c[k>>2]|0,g[j+(s*80048|0)+8>>3]=+g[d+655376+(e<<4)>>3],g[j+(s*80048|0)+16>>3]=+g[d+655376+(e<<4)+8>>3],s=s+1|0,c[k>>2]=s,(s|0)==60):0){e=60;break}e=e+1|0}if((q|0)==5)e=c[k>>2]|0;a=0;while(1){if((a|0)>=(e|0))break;l=a+1|0;m=j+(a*80048|0)+8|0;n=j+(a*80048|0)+16|0;h=j+(a*80048|0)|0;f=l;while(1){if((f|0)>=(e|0))break;t=+g[m>>3]-+g[j+(f*80048|0)+8>>3];i=+g[n>>3]-+g[j+(f*80048|0)+16>>3];i=t*t+i*i;e=c[h>>2]|0;a=j+(f*80048|0)|0;b=c[a>>2]|0;if((e|0)>(b|0)){if(i<+((e|0)/4|0|0))c[a>>2]=0}else if(i<+((b|0)/4|0|0))c[h>>2]=0;f=f+1|0;e=c[k>>2]|0}a=l}f=0;while(1){if((f|0)>=(e|0))break;if(!(c[j+(f*80048|0)>>2]|0)){b=f;while(1){a=b+1|0;if((a|0)>=(e|0))break;_O(j+(b*80048|0)|0,j+(a*80048|0)|0,80048)|0;b=a;e=c[k>>2]|0}e=e+-1|0;c[k>>2]=e}f=f+1|0}a:do if(r){b=0;while(1){if((b|0)>=(e|0))break a;c[j>>2]=c[j>>2]<<2;a=j+8|0;g[a>>3]=+g[a>>3]*2.0;a=j+16|0;g[a>>3]=+g[a>>3]*2.0;a=c[j+24>>2]|0;e=0;while(1){if((e|0)>=(a|0))break;s=j+28+(e<<2)|0;c[s>>2]=c[s>>2]<<1;s=j+40028+(e<<2)|0;c[s>>2]=c[s>>2]<<1;e=e+1|0}j=j+80048|0;b=b+1|0;e=c[k>>2]|0}}while(0);return 0}function Pc(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=zb;zb=zb+80032|0;n=w+80016|0;m=w+80008|0;j=w+8e4|0;u=w+4e4|0;v=w;s=c[h+8>>2]|0;t=B(s,d)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;r=e;e=a+(t+e<<1)|0;while(1){if((r|0)>(h|0)){t=7;break}t=b[e>>1]|0;if(t<<16>>16>0?(c[f+((t<<16>>16)+-1<<2)>>2]|0)==(g|0):0){t=6;break}r=r+1|0;e=e+2|0}do if((t|0)==6)if((r|0)!=-1){o=i+24|0;c[o>>2]=1;p=i+28|0;c[p>>2]=r;q=i+40028|0;c[q>>2]=s;g=5;e=s;l=r;f=1;while(1){k=a+((B(e,d)|0)+l<<1)|0;j=0;e=g+5|0;while(1){g=(e|0)%8|0;if(j>>>0>=8){t=13;break}e=c[48+(g<<2)>>2]|0;x=B(e,d)|0;h=c[80+(g<<2)>>2]|0;if((b[k+(x+h<<1)>>1]|0)>0)break;j=j+1|0;e=g+1|0}if((t|0)==13){t=0;if((j|0)==8){t=15;break}h=c[80+(g<<2)>>2]|0;e=c[48+(g<<2)>>2]|0}c[i+28+(f<<2)>>2]=h+l;j=c[o>>2]|0;c[i+40028+(j<<2)>>2]=e+(c[i+40028+(j+-1<<2)>>2]|0);j=c[o>>2]|0;h=i+28+(j<<2)|0;if((c[h>>2]|0)==(r|0)?(c[i+40028+(j<<2)>>2]|0)==(s|0):0){t=18;break}f=j+1|0;c[o>>2]=f;if((f|0)==9999){t=21;break}e=c[i+40028+(j<<2)>>2]|0;l=c[h>>2]|0}if((t|0)==15){Ue(0,3,20152,m);e=-1;break}else if((t|0)==18){f=0;e=0;h=1;while(1){if((h|0)>=(j|0))break;x=(c[i+28+(h<<2)>>2]|0)-r|0;x=B(x,x)|0;d=(c[i+40028+(h<<2)>>2]|0)-s|0;x=(B(d,d)|0)+x|0;d=(x|0)>(e|0);f=d?h:f;e=d?x:e;h=h+1|0}e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=c[i+28+(e<<2)>>2];c[v+(e<<2)>>2]=c[i+40028+(e<<2)>>2];e=e+1|0}h=f;e=j;while(1){if((h|0)>=(e|0))break;e=h-f|0;c[i+28+(e<<2)>>2]=c[i+28+(h<<2)>>2];c[i+40028+(e<<2)>>2]=c[i+40028+(h<<2)>>2];h=h+1|0;e=c[o>>2]|0}e=0;while(1){if((e|0)>=(f|0))break;x=e-f|0;c[i+28+((c[o>>2]|0)+x<<2)>>2]=c[u+(e<<2)>>2];c[i+40028+((c[o>>2]|0)+x<<2)>>2]=c[v+(e<<2)>>2];e=e+1|0}c[i+28+(c[o>>2]<<2)>>2]=c[p>>2];c[i+40028+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1;e=0;break}else if((t|0)==21){Ue(0,3,20159,n);e=-1;break}}else t=7;while(0);if((t|0)==7){Ue(0,3,20145,j);e=-1}zb=w;return e|0}function Qc(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=zb;zb=zb+96|0;o=r+48|0;k=r+92|0;p=r;l=r+88|0;m=b+28|0;j=c[m>>2]|0;n=b+40028|0;h=c[n>>2]|0;q=b+24|0;i=(c[q>>2]|0)+-1|0;f=1;g=0;e=0;while(1){if((f|0)>=(i|0))break;t=(c[b+28+(f<<2)>>2]|0)-j|0;t=B(t,t)|0;u=(c[b+40028+(f<<2)>>2]|0)-h|0;t=(B(u,u)|0)+t|0;u=(t|0)>(g|0);s=u?f:e;f=f+1|0;g=u?t:g;e=s}d=+(a|0)/.75*.01*d;c[k>>2]=0;c[l>>2]=0;a:do if((Rc(m,n,0,e,d,o,k)|0)>=0?(Rc(m,n,e,(c[q>>2]|0)+-1|0,d,p,l)|0)>=0:0){f=c[k>>2]|0;g=c[l>>2]|0;do if((f|0)==1&(g|0)==1){f=c[p>>2]|0;g=c[o>>2]|0}else{if((f|0)>1&(g|0)==0){f=(e|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,0,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,e,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=e;g=c[o>>2]|0;e=c[p>>2]|0;break}if(!((f|0)==0&(g|0)>1)){e=-1;break a}f=(e+-1+(c[q>>2]|0)|0)/2|0;c[l>>2]=0;c[k>>2]=0;if((Rc(m,n,e,f,d,o,k)|0)<0){e=-1;break a}if((Rc(m,n,f,(c[q>>2]|0)+-1|0,d,p,l)|0)<0){e=-1;break a}if(!((c[k>>2]|0)==1&(c[l>>2]|0)==1)){e=-1;break a}f=c[p>>2]|0;g=e;e=c[o>>2]|0}while(0);c[b+80028>>2]=0;c[b+80032>>2]=g;c[b+80036>>2]=e;c[b+80040>>2]=f;c[b+80044>>2]=(c[q>>2]|0)+-1;e=0}else e=-1;while(0);zb=r;return e|0}function Rc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0;j=c[b+(e<<2)>>2]|0;q=c[b+(d<<2)>>2]|0;l=+(j-q|0);i=c[a+(d<<2)>>2]|0;r=c[a+(e<<2)>>2]|0;m=+(i-r|0);n=+((B(r,q)|0)-(B(i,j)|0)|0);j=d+1|0;i=j;k=0.0;while(1){if((j|0)>=(e|0))break;s=l*+(c[a+(j<<2)>>2]|0)+m*+(c[b+(j<<2)>>2]|0)+n;s=s*s;r=s>k;i=r?j:i;j=j+1|0;k=r?s:k}if(k/(l*l+m*m)>f)if(((Rc(a,b,d,i,f,g,h)|0)>=0?(o=c[h>>2]|0,(o|0)<=5):0)?(c[g+(o<<2)>>2]=i,c[h>>2]=(c[h>>2]|0)+1,(Rc(a,b,i,e,f,g,h)|0)>=0):0)p=8;else i=-1;else p=8;if((p|0)==8)i=0;return i|0}function Sc(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=zb;zb=zb+16|0;r=y+4|0;s=y;x=qe(2)|0;u=qe(2)|0;v=Dd(2,2)|0;k=0;a:while(1){if(k>>>0>=4){q=10;break}l=k+1|0;q=c[e+(l<<2)>>2]|0;n=c[e+(k<<2)>>2]|0;p=+(q+1-n|0)*.05+.5;n=~~(p+ +(n|0));q=~~(+(q|0)-p)-n|0;w=Dd(q+1|0,2)|0;d=0;while(1){if((d|0)>(q|0))break;z=d+n|0;if((pe(h,+(c[a+(z<<2)>>2]|0),+(c[b+(z<<2)>>2]|0),r,s)|0)<0){q=6;break a}A=c[w>>2]|0;z=d<<1;g[A+(z<<3)>>3]=+f[r>>2];g[A+((z|1)<<3)>>3]=+f[s>>2];d=d+1|0}if((Pd(w,v,x,u)|0)<0){q=14;break}A=c[v>>2]|0;o=+g[A+8>>3];g[i+(k*24|0)>>3]=o;p=-+g[A>>3];g[i+(k*24|0)+8>>3]=p;A=c[u>>2]|0;g[i+(k*24|0)+16>>3]=-(o*+g[A>>3]+ +g[A+8>>3]*p);Ld(w)|0;k=l}b:do if((q|0)==6)q=14;else if((q|0)==10){Ld(v)|0;re(u)|0;re(x)|0;d=0;while(1){if(d>>>0>=4){d=0;break b}k=d+3&3;l=i+(k*24|0)|0;m=+g[i+(d*24|0)+8>>3];n=i+(d*24|0)|0;o=+g[i+(k*24|0)+8>>3];p=+g[l>>3]*m-+g[n>>3]*o;if(+t(+p)<.0001){d=-1;break b}A=i+(d*24|0)+16|0;z=i+(k*24|0)+16|0;g[j+(d<<4)>>3]=(o*+g[A>>3]-m*+g[z>>3])/p;g[j+(d<<4)+8>>3]=(+g[n>>3]*+g[z>>3]-+g[l>>3]*+g[A>>3])/p;d=d+1|0}}while(0);if((q|0)==14){Ld(w)|0;Ld(v)|0;re(u)|0;re(x)|0;d=-1}zb=y;return d|0}function Tc(a,b,d,e,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=+n;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+16|0;A=G+4|0;B=G;C=l>>>0<2;D=(l|0)==2;z=0;r=0;while(1){if((z|0)>=(i|0))break;c[o+(r<<8)>>2]=c[h+(z*80048|0)>>2];if((pe(m,+g[h+(z*80048|0)+8>>3],+g[h+(z*80048|0)+16>>3],A,B)|0)>=0?(g[o+(r<<8)+56>>3]=+f[A>>2],g[o+(r<<8)+64>>3]=+f[B>>2],E=o+(r<<8)+168|0,(Sc(h+(z*80048|0)+28|0,h+(z*80048|0)+40028|0,c[h+(z*80048|0)+24>>2]|0,h+(z*80048|0)+80028|0,m,o+(r<<8)+72|0,E)|0)>=0):0){v=o+(r<<8)+8|0;s=o+(r<<8)+20|0;t=o+(r<<8)+40|0;w=o+(r<<8)+12|0;y=o+(r<<8)+24|0;x=o+(r<<8)+48|0;u=od(j,k,l,a,b,d,e,m,E,n,v,s,t,w,y,x,q,o+(r<<8)+240|0,o+(r<<8)+248|0)|0;switch(u|0){case 0:{F=12;break}case -1:{u=2;F=12;break}case -2:{u=3;F=12;break}case -3:{u=4;F=12;break}case -4:{u=5;F=12;break}case -5:{u=9;F=12;break}case -6:{u=1;F=12;break}default:{}}if((F|0)==12){F=0;c[o+(r<<8)+236>>2]=u}if(!C){if(D){c[o+(r<<8)+4>>2]=c[w>>2];t=x;s=y;F=17}}else{c[o+(r<<8)+4>>2]=c[v>>2];F=17}if((F|0)==17){F=0;c[o+(r<<8)+16>>2]=c[s>>2];g[o+(r<<8)+32>>3]=+g[t>>3]}r=r+1|0}z=z+1|0}c[p>>2]=r;zb=G;return 0}function Uc(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+288|0;h=m+192|0;i=m+96|0;j=m+264|0;k=m;l=m+256|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){f=b+24|0;break}else{f=b+16|0;break}else f=b+20|0;while(0);f=c[f>>2]|0;o=(4-f|0)%4|0;g[h>>3]=+g[b+168+(o<<4)>>3];g[h+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-f|0)%4|0;g[h+16>>3]=+g[b+168+(o<<4)>>3];g[h+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-f|0)%4|0;g[h+32>>3]=+g[b+168+(o<<4)>>3];g[h+40>>3]=+g[b+168+(o<<4)+8>>3];f=(7-f|0)%4|0;g[h+48>>3]=+g[b+168+(f<<4)>>3];g[h+56>>3]=+g[b+168+(f<<4)+8>>3];n=d*-.5;g[i>>3]=n;d=d*.5;g[i+8>>3]=d;g[i+16>>3]=0.0;g[i+24>>3]=d;g[i+32>>3]=d;g[i+40>>3]=0.0;g[i+48>>3]=d;g[i+56>>3]=n;g[i+64>>3]=0.0;g[i+72>>3]=n;g[i+80>>3]=n;g[i+88>>3]=0.0;c[j>>2]=h;c[j+4>>2]=i;c[j+8>>2]=4;if((Me(c[a>>2]|0,h,i,4,k)|0)<0)d=1.0e8;else{o=(He(c[a>>2]|0,j,k,e,l)|0)<0;d=o?1.0e8:+g[l>>3]}zb=m;return +d}function Vc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;m=zb;zb=zb+192|0;i=m+96|0;j=m;k=m+168|0;l=m+160|0;do if((c[b+12>>2]|0)>=0)if((c[b+8>>2]|0)<0){h=b+24|0;break}else{h=b+16|0;break}else h=b+20|0;while(0);h=c[h>>2]|0;o=(4-h|0)%4|0;g[i>>3]=+g[b+168+(o<<4)>>3];g[i+8>>3]=+g[b+168+(o<<4)+8>>3];o=(5-h|0)%4|0;g[i+16>>3]=+g[b+168+(o<<4)>>3];g[i+24>>3]=+g[b+168+(o<<4)+8>>3];o=(6-h|0)%4|0;g[i+32>>3]=+g[b+168+(o<<4)>>3];g[i+40>>3]=+g[b+168+(o<<4)+8>>3];h=(7-h|0)%4|0;g[i+48>>3]=+g[b+168+(h<<4)>>3];g[i+56>>3]=+g[b+168+(h<<4)+8>>3];n=e*-.5;g[j>>3]=n;e=e*.5;g[j+8>>3]=e;g[j+16>>3]=0.0;g[j+24>>3]=e;g[j+32>>3]=e;g[j+40>>3]=0.0;g[j+48>>3]=e;g[j+56>>3]=n;g[j+64>>3]=0.0;g[j+72>>3]=n;g[j+80>>3]=n;g[j+88>>3]=0.0;c[k>>2]=i;c[k+4>>2]=j;c[k+8>>2]=4;k=(He(c[a>>2]|0,k,d,f,l)|0)<0;zb=m;return +(k?1.0e8:+g[l>>3])}function Wc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((He(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Xc(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+32|0;l=o+20|0;m=o;n=FO(f<<4)|0;c[l>>2]=n;if(!n){Ue(0,3,41858,o+8|0);Ea(1)}j=FO(f*24|0)|0;k=l+4|0;c[k>>2]=j;if(!j){Ue(0,3,41858,o+16|0);Ea(1)}i=0;while(1){if((i|0)>=(f|0))break;g[n+(i<<4)>>3]=+g[d+(i<<4)>>3];g[n+(i<<4)+8>>3]=+g[d+(i<<4)+8>>3];g[j+(i*24|0)>>3]=+g[e+(i*24|0)>>3];g[j+(i*24|0)+8>>3]=+g[e+(i*24|0)+8>>3];g[j+(i*24|0)+16>>3]=+g[e+(i*24|0)+16>>3];i=i+1|0}c[l+8>>2]=f;if((Je(c[a>>2]|0,l,b,h,m)|0)<0)g[m>>3]=1.0e8;GO(c[l>>2]|0);GO(c[k>>2]|0);zb=o;return +(+g[m>>3])}function Yc(a,b){a=a|0;b=b|0;var d=0;d=FO(2064)|0;if(d|0){c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b}return d|0}function Zc(a){a=a|0;if(a|0){GO(c[a>>2]|0);GO(a)}return}function _c(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0&(b|0)!=0){aP(a+12|0,0,1024)|0;e=b+(B(c[a+8>>2]|0,c[a+4>>2]|0)|0)|0;while(1){if(b>>>0>=e>>>0){b=0;break a}f=a+12+((d[b>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;b=b+1|0}}else b=-1;while(0);return b|0}function $c(a,b){a=a|0;b=b|0;var d=0;b=_c(a,b)|0;if((b|0)>=0){b=0;d=0;do{b=(c[a+12+(d<<2)>>2]|0)+b|0;c[a+1036+(d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);b=0}return b|0}function ad(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;if(!(e<0.0|e>1.0)){d=$c(b,d)|0;if((d|0)>=0){i=~~(+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0)*e)>>>0;d=0;while(1){j=d&255;g=c[b+1036+(j<<2)>>2]|0;if(g>>>0>>0)d=d+1<<24>>24;else break}while(1){h=d+1<<24>>24;if((g|0)!=(i|0))break;d=h;g=c[b+1036+((h&255)<<2)>>2]|0}a[f>>0]=((d&255)+j|0)>>>1;d=0}}else d=-1;return d|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;return ad(a,b,.5,c)|0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0;d=_c(b,d)|0;if((d|0)>=0){m=0.0;d=1;do{m=m+ +((B(c[b+12+(d<<2)>>2]|0,d)|0)>>>0);d=d+1|0}while((d|0)!=256);k=+(B(c[b+8>>2]|0,c[b+4>>2]|0)|0);d=0;h=0.0;j=0.0;g=0.0;l=0;while(1){f=c[b+12+(l<<2)>>2]|0;j=j+ +(f>>>0);if(j!=0.0){i=k-j;if(i==0.0)break;g=g+ +((B(f,l)|0)>>>0);o=g/j-(m-g)/i;i=o*(j*i*o);n=i>h;f=l&255;d=n?f:d;h=n?i:h}else f=l&255;if(f<<24>>24==-1)break;else l=l+1|0}a[e>>0]=d;d=0}return d|0}function dd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=_c(b,e)|0;a:do if((h|0)>=0){if(!(c[b>>2]|0)){h=b+4|0;i=b+8|0;s=FO(B(c[i>>2]|0,c[h>>2]|0)|0)|0;c[b>>2]=s;if(!s){h=-1;break}else{s=h;r=i}}else{s=b+4|0;r=b+8|0}p=f>>1;q=0-p|0;o=0;while(1){h=c[r>>2]|0;if((o|0)>=(h|0))break;l=0;while(1){n=c[s>>2]|0;if((l|0)>=(n|0))break;m=q;f=0;h=0;while(1){if((m|0)>(p|0))break;i=m+o|0;b:do if((i|0)>=0?(i|0)<(c[r>>2]|0):0){k=B(i,n)|0;j=q;i=f;while(1){if((j|0)>(p|0))break b;f=j+l|0;if((f|0)>-1&(f|0)<(n|0)){i=i+1|0;h=h+(d[e+(f+k)>>0]|0)|0}j=j+1|0}}else i=f;while(0);m=m+1|0;f=i}n=(c[b>>2]|0)+((B(n,o)|0)+l)|0;a[n>>0]=(h|0)/(f|0)|0;l=l+1|0}o=o+1|0}if(!g)h=0;else{i=0;while(1){if((i|0)>=(B(h,c[s>>2]|0)|0)){h=0;break a}h=(c[b>>2]|0)+i|0;a[h>>0]=(d[h>>0]|0)+g;i=i+1|0;h=c[r>>2]|0}}}while(0);return h|0}function ed(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;e=(e|0)==1;j=(i|0)!=0;do if(!d)if(e){if(j){e=fc(a,b,c,i,h)|0;break}if(!g){e=ec(a,b,c,f,h)|0;break}else{e=dc(a,b,c,f,h)|0;break}}else{if(j){e=ic(a,b,c,i,h)|0;break}if(!g){e=hc(a,b,c,f,h)|0;break}else{e=gc(a,b,c,f,h)|0;break}}else if(e){if(j){e=lc(a,b,c,i,h)|0;break}if(!g){e=kc(a,b,c,f,h)|0;break}else{e=jc(a,b,c,f,h)|0;break}}else{if(j){e=oc(a,b,c,i,h)|0;break}if(!g){e=nc(a,b,c,f,h)|0;break}else{e=mc(a,b,c,f,h)|0;break}}while(0);return e|0}function fd(a,b){a=a|0;b=b|0;var d=0;if((a|0)!=0?(d=a+7062384|0,(c[d>>2]|0)==0):0){c[d>>2]=b;a=0}else a=-1;return a|0}function gd(a){a=a|0;var b=0;if((a|0)!=0?(b=a+7062384|0,(c[b>>2]|0)!=0):0){c[b>>2]=0;a=0}else a=-1;return a|0}function hd(){return id(16,50)|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+64|0;p=q+56|0;o=q+48|0;i=q+40|0;h=q+32|0;g=q+24|0;f=q+16|0;e=q+8|0;d=q;a:do if(!((a+-16|0)>>>0>48|(b|0)<1)){m=FO(32)|0;if(!m){Ue(0,3,41858,d);Ea(1)}c[m>>2]=0;c[m+4>>2]=b;c[m+28>>2]=a;l=FO(b<<2)|0;c[m+8>>2]=l;if(!l){Ue(0,3,41858,e);Ea(1)}d=b<<4;k=FO(d)|0;c[m+12>>2]=k;if(!k){Ue(0,3,41858,f);Ea(1)}f=FO(d)|0;j=m+20|0;c[j>>2]=f;if(!f){Ue(0,3,41858,g);Ea(1)}d=b<<5;g=FO(d)|0;c[m+16>>2]=g;if(!g){Ue(0,3,41858,h);Ea(1)}h=FO(d)|0;c[m+24>>2]=h;if(!h){Ue(0,3,41858,i);Ea(1)}g=B(a,a)|0;f=g*12|0;g=g<<2;e=0;b:while(1){if((e|0)>=(b|0)){n=m;break a}c[l+(e<<2)>>2]=0;a=e<<2;d=0;while(1){if(d>>>0>=4)break;i=FO(f)|0;h=d+a|0;c[k+(h<<2)>>2]=i;if(!i){d=19;break b}i=FO(g)|0;c[(c[j>>2]|0)+(h<<2)>>2]=i;if(!i){d=21;break b}else d=d+1|0}e=e+1|0}if((d|0)==19){Ue(0,3,41858,o);Ea(1)}else if((d|0)==21){Ue(0,3,41858,p);Ea(1)}}else n=0;while(0);zb=q;return n|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)b=-1;else{f=a+4|0;g=a+8|0;h=a+12|0;i=a+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;if(c[(c[g>>2]|0)+(d<<2)>>2]|0)td(a,d)|0;e=d<<2;b=0;while(1){if((b|0)==4)break;j=b+e|0;GO(c[(c[h>>2]|0)+(j<<2)>>2]|0);GO(c[(c[i>>2]|0)+(j<<2)>>2]|0);b=b+1|0}d=d+1|0}GO(c[h>>2]|0);GO(c[i>>2]|0);GO(c[g>>2]|0);GO(c[a+16>>2]|0);GO(c[a+24>>2]|0);GO(a);b=0}return b|0}function kd(b,e,f,h,i,j,k){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=zb;zb=zb+32|0;p=u+24|0;o=u;t=u+16|0;a:do if((e+-3|0)>>>0>5){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-1}else{c[o>>2]=0;s=e+-1|0;q=B(s,e)|0;c[o+4>>2]=q;q=B(e,e)|0;c[o+8>>2]=q+-1;c[o+12>>2]=s;l=0;m=0;n=-1;while(1){if((l|0)==4)break;r=a[b+(c[o+(l<<2)>>2]|0)>>0]|0;l=l+1|0;m=(r&255)>(m&255)?r:m;n=(r&255)<(n&255)?r:n}m=m&255;l=n&255;if((m-l|0)<30){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-2;break}n=(m+l|0)>>>1;l=0;while(1){if((l|0)==4)break;a[p+l>>0]=n>>>0>(d[b+(c[o+(l<<2)>>2]|0)>>0]|0)>>>0&1;l=l+1|0}m=0;while(1){if(m>>>0>=4){l=18;break}l=m+1|0;if(((a[p+m>>0]|0)==1?(a[p+(l&3)>>0]|0)==1:0)?(a[p+(m+2&3)>>0]|0)==0:0){l=17;break}m=l}if((l|0)==17)c[h>>2]=m;else if((l|0)==18?(m|0)==4:0){c[f>>2]=-1;c[h>>2]=0;g[i>>3]=-1.0;l=-3;break}r=255;l=0;while(1){if((l|0)==(q|0))break;o=b+l|0;m=d[o>>0]|0;p=m-n|0;p=(p|0)<0?0-p|0:p;a[o>>0]=n>>>0>m>>>0&1;r=(p|0)<(r|0)?p:r;l=l+1|0}l=c[h>>2]|0;b:do switch(l|0){case 0:{n=l;m=0;l=0;while(1){if((n|0)>=(e|0))break b;p=(n|0)==(s|0);q=B(n,e)|0;o=0;while(1){if((o|0)==(e|0))break;if((o|n|0)!=0?!(p&((o|0)==0|(o|0)==(s|0))):0){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+q)>>0]|0)!=0}o=o+1|0}n=n+1|0}}case 1:{o=0;m=0;l=0;while(1){if((o|0)>=(e|0))break b;p=(o|0)==0;q=(o|0)==(s|0);n=s;while(1){if((n|0)<=-1)break;h=(n|0)==(s|0);if(!(p&h)?!(q&(h|(n|0)==0)):0){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+-1|0}o=o+1|0}}case 2:{n=s;m=0;l=0;while(1){if((n|0)<=-1)break b;q=(n|0)==(s|0)|(n|0)==0;p=B(n,e)|0;o=s;while(1){if((o|0)<=-1)break;if(!(q&(o|0)==(s|0)|(o|n|0)==0)){m=UO(m|0,l|0,1)|0;l=F()|0;m=m|(a[b+(o+p)>>0]|0)!=0}o=o+-1|0}n=n+-1|0}}case 3:{o=s;m=0;l=0;while(1){if((o|0)<=-1)break b;p=(o|0)==(s|0);q=(o|0)==0;n=0;while(1){if((n|0)>=(e|0))break;if(!(p&(n|0)==0|(n|o|0)==0|q&(n|0)==(s|0))){h=UO(m|0,l|0,1)|0;l=F()|0;m=b+((B(n,e)|0)+o)|0;m=h|(a[m>>0]|0)!=0}n=n+1|0}o=o+-1|0}}default:{m=0;l=0}}while(0);g[i>>3]=(r|0)>30?1.0:+(r|0)/30.0;switch(j|0){case 259:{k=a[240+m>>0]|0;s=k<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 515:{l=a[112+m>>0]|0;s=l<<24>>24;j=t;c[j>>2]=s;c[j+4>>2]=((s|0)<0)<<31>>31;if(k|0)c[k>>2]=d[176+m>>0];if(l<<24>>24<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}break}case 772:case 1028:case 1029:case 1285:{l=md(j,m,l,0,t)|0;if((l|0)<0){c[f>>2]=-1;g[i>>3]=-1.0;l=-4;break a}if((k|0)!=0&(l|0)!=0)c[k>>2]=l;break}default:{k=t;c[k>>2]=m;c[k+4>>2]=l}}c[f>>2]=c[t>>2];l=0}while(0);zb=u;return l|0}function ld(b,d,e,f,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;z=zb;zb=zb+16|0;l=z+8|0;k=z;a:do if((b|0)==0|(f|0)<1){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;d=-1}else switch(d|0){case 0:{x=B(f,f)|0;w=x*3|0;x=FO(x*12|0)|0;if(!x){Ue(0,3,41858,k);Ea(1)}d=0;k=0;while(1){if((d|0)==(w|0))break;t=k+(~a[e+d>>0]&255)|0;d=d+1|0;k=t}l=(k>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/(+(f|0)*1.7320508)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+12|0;q=b+16|0;m=0.0;p=0;d=-1;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;b:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break b}default:{y=18;break b}}}c:do if((y|0)==18){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break c;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}case 1:{w=B(f,f)|0;x=FO(w<<2)|0;if(!x){Ue(0,3,41858,l);Ea(1)}d=0;k=0;while(1){if((k|0)==(w|0))break;d=d+(~a[e+k>>0]&255)|0;k=k+1|0}l=(d>>>0)/(w>>>0)|0;d=0;k=0;while(1){if((k|0)==(w|0))break;t=(~a[e+k>>0]&255)-l|0;c[x+(k<<2)>>2]=t;d=(B(t,t)|0)+d|0;k=k+1|0}v=+u(+(+(d|0)));if(v/+(f|0)<15.0){c[h>>2]=0;c[i>>2]=0;g[j>>3]=-1.0;GO(x);d=-2;break a}r=c[b>>2]|0;s=b+8|0;t=b+20|0;q=b+24|0;p=0;d=-1;m=0.0;e=-1;k=-1;while(1){if((p|0)>=(r|0))break;l=c[s>>2]|0;d:while(1){d=d+1|0;switch(c[l+(d<<2)>>2]|0){case 0:break;case 2:{l=e;break d}default:{y=40;break d}}}e:do if((y|0)==40){y=0;o=d<<2;n=0;l=e;while(1){if((n|0)==4)break e;b=n+o|0;e=0;f=0;while(1){if((f|0)==(w|0))break;e=(B(c[(c[(c[t>>2]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0,c[x+(f<<2)>>2]|0)|0)+e|0;f=f+1|0}A=+(e|0)/+g[(c[q>>2]|0)+(b<<3)>>3]/v;f=A>m;b=f?n:k;n=n+1|0;m=f?A:m;l=f?d:l;k=b}}while(0);p=p+1|0;e=l}c[i>>2]=k;c[h>>2]=e;g[j>>3]=m;GO(x);d=0;break a}default:{d=-1;break a}}while(0);zb=z;return d|0}function md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0;I=zb;zb=zb+2384|0;l=I+2320|0;D=I+880|0;A=I+800|0;H=I+720|0;C=I+640|0;y=I+560|0;G=I+48|0;E=I;switch(b|0){case 2830:{l=g;u=1200;x=688;m=120;n=127;w=64;o=9;i=8;break}case 772:{j=624;k=432;m=13;n=15;b=9;o=1;i=5;break}case 1028:{j=624;k=432;m=13;n=15;b=5;o=2;i=5;break}case 1029:{b=12;g=2;i=4;break}case 1285:{b=7;g=3;i=4;break}default:b=-1}if((i|0)==4){j=496;k=304;m=22;n=31;o=g;i=5}a:do if((i|0)==5){i=0;g=f;while(1){if((i|0)==(m|0)){u=j;x=k;w=b;i=8;break a}a[l+i>>0]=e&1;x=TO(e|0,g|0,1)|0;i=i+1|0;e=x;g=F()|0}}while(0);b:do if((i|0)==8){t=o<<1;g=0;i=1;while(1){if((i|0)>(t|0))break;j=y+(i<<2)|0;c[j>>2]=0;e=0;b=0;while(1){if((e|0)>=(m|0))break;if(a[l+e>>0]|0){v=x+(((B(e,i)|0)%(n|0)|0)<<2)|0;b=b^c[v>>2];c[j>>2]=b}e=e+1|0}c[j>>2]=c[u+(b<<2)>>2];g=(b|0)==0?g:1;i=i+1|0}v=(g|0)!=0;c:do if(v){c[A>>2]=0;g=c[y+4>>2]|0;c[A+4>>2]=g;c[D>>2]=0;c[D+72>>2]=1;b=1;while(1){if((b|0)>=(t|0))break;c[D+(b<<2)>>2]=-1;c[D+72+(b<<2)>>2]=0;b=b+1|0}c[H>>2]=0;c[H+4>>2]=0;c[C>>2]=-1;c[C+4>>2]=0;s=0;r=0;while(1){f=s;s=s+1|0;d:do if((g|0)==-1){f=f+2|0;c[H+(f<<2)>>2]=r;b=0;while(1){if((b|0)>(r|0)){q=r;break d}q=D+(s*72|0)+(b<<2)|0;p=c[q>>2]|0;c[D+(f*72|0)+(b<<2)>>2]=p;c[q>>2]=c[u+(p<<2)>>2];b=b+1|0}}else{e=f;while(1){b=(e|0)>0;if(b&(c[A+(e<<2)>>2]|0)==-1)e=e+-1|0;else break}if(b){b=e;i=e;while(1){j=i;i=i+-1|0;if((c[A+(i<<2)>>2]|0)==-1)e=b;else e=(c[C+(b<<2)>>2]|0)<(c[C+(i<<2)>>2]|0)?i:b;if((j|0)<=1)break;else b=e}}i=H+(e<<2)|0;p=s-e|0;q=p+(c[i>>2]|0)|0;f=f+2|0;q=(r|0)>(q|0)?r:q;c[H+(f<<2)>>2]=q;b=0;while(1){if((b|0)>=(t|0))break;c[D+(f*72|0)+(b<<2)>>2]=0;b=b+1|0}j=g+n|0;k=A+(e<<2)|0;g=c[i>>2]|0;b=0;while(1){if((b|0)>(g|0))break;i=c[D+(e*72|0)+(b<<2)>>2]|0;if((i|0)!=-1)c[D+(f*72|0)+(p+b<<2)>>2]=c[x+(((j+i-(c[k>>2]|0)|0)%(n|0)|0)<<2)>>2];b=b+1|0}b=0;while(1){if((b|0)>(r|0))break d;p=D+(s*72|0)+(b<<2)|0;k=c[p>>2]|0;j=D+(f*72|0)+(b<<2)|0;c[j>>2]=c[j>>2]^k;c[p>>2]=c[u+(k<<2)>>2];b=b+1|0}}while(0);c[C+(f<<2)>>2]=s-q;if((s|0)>=(t|0))break;b=c[y+(f<<2)>>2]|0;if((b|0)==-1)b=0;else b=c[x+(b<<2)>>2]|0;i=A+(f<<2)|0;c[i>>2]=b;e=1;while(1){if((e|0)>(q|0))break;g=c[y+(f-e<<2)>>2]|0;if((g|0)!=-1?(z=c[D+(f*72|0)+(e<<2)>>2]|0,(z|0)!=0):0){b=b^c[x+((((c[u+(z<<2)>>2]|0)+g|0)%(n|0)|0)<<2)>>2];c[i>>2]=b}e=e+1|0}g=c[u+(b<<2)>>2]|0;c[i>>2]=g;if((q|0)>(o|0))break;else r=q}if((q|0)>(o|0)){b=-1;break b}b=0;while(1){if((b|0)>(q|0))break;C=D+(f*72|0)+(b<<2)|0;c[C>>2]=c[u+(c[C>>2]<<2)>>2];b=b+1|0}b=1;while(1){if((b|0)>(q|0))break;c[E+(b<<2)>>2]=c[D+(f*72|0)+(b<<2)>>2];b=b+1|0}b=0;k=1;while(1){if((n|0)<(k|0))break;j=1;g=1;while(1){if((j|0)>(q|0))break;e=E+(j<<2)|0;i=c[e>>2]|0;if((i|0)!=-1){D=(i+j|0)%(n|0)|0;c[e>>2]=D;g=c[x+(D<<2)>>2]^g}j=j+1|0}if(!g){c[G+(b<<2)>>2]=n-k;b=b+1|0}k=k+1|0}if((b|0)!=(q|0)){b=-1;break b}b=0;while(1){if((b|0)>=(q|0))break c;E=l+(c[G+(b<<2)>>2]|0)|0;a[E>>0]=a[E>>0]^1;b=b+1|0}}else f=0;while(0);b=h;c[b>>2]=0;c[b+4>>2]=0;b=m-w|0;g=1;e=0;i=0;j=0;while(1){if((b|0)>=(m|0))break;E=NO(g|0,e|0,d[l+b>>0]|0,0)|0;E=OO(E|0,F()|0,i|0,j|0)|0;G=F()|0;D=h;c[D>>2]=E;c[D+4>>2]=G;D=UO(g|0,e|0,1)|0;b=b+1|0;g=D;e=F()|0;i=E;j=G}if(v)b=c[H+(f<<2)>>2]|0;else b=0}while(0);zb=I;return b|0}function nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Dd(8,8)|0;h=Dd(8,1)|0;i=Dd(8,1)|0;e=0;while(1){if((e|0)==4)break;o=a+(e<<4)|0;j=c[f>>2]|0;k=e<<4;g[j+(k<<3)>>3]=+g[o>>3];n=a+(e<<4)+8|0;g[j+((k|1)<<3)>>3]=+g[n>>3];g[j+((k|2)<<3)>>3]=1.0;g[j+((k|3)<<3)>>3]=0.0;g[j+((k|4)<<3)>>3]=0.0;g[j+((k|5)<<3)>>3]=0.0;m=b+(e<<4)|0;g[j+((k|6)<<3)>>3]=-(+g[o>>3]*+g[m>>3]);g[j+((k|7)<<3)>>3]=-(+g[n>>3]*+g[m>>3]);g[j+((k|8)<<3)>>3]=0.0;g[j+((k|9)<<3)>>3]=0.0;g[j+((k|10)<<3)>>3]=0.0;g[j+((k|11)<<3)>>3]=+g[o>>3];g[j+((k|12)<<3)>>3]=+g[n>>3];g[j+((k|13)<<3)>>3]=1.0;l=b+(e<<4)+8|0;g[j+((k|14)<<3)>>3]=-(+g[o>>3]*+g[l>>3]);g[j+((k|15)<<3)>>3]=-(+g[n>>3]*+g[l>>3]);k=c[h>>2]|0;j=e<<1;g[k+(j<<3)>>3]=+g[m>>3];g[k+((j|1)<<3)>>3]=+g[l>>3];e=e+1|0}Xd(f)|0;Nd(i,f,h)|0;a=c[i>>2]|0;e=0;while(1){if((e|0)==2)break;o=e*3|0;g[d+(e*24|0)>>3]=+g[a+(o<<3)>>3];g[d+(e*24|0)+8>>3]=+g[a+(o+1<<3)>>3];g[d+(e*24|0)+16>>3]=+g[a+(o+2<<3)>>3];e=e+1|0}g[d+48>>3]=+g[a+48>>3];g[d+56>>3]=+g[a+56>>3];g[d+64>>3]=1.0;Ld(f)|0;Ld(h)|0;Ld(i)|0;return}function od(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0;w=zb;zb=zb+12304|0;v=w;u=w+12288|0;do if((d+-2|0)>>>0<3){if((r|0)!=2830){u=r&255;if((pd(b,2,u,u*3|0,e,f,g,h,i,j,k,v)|0)<0){c[o>>2]=-1;r=-6;break}u=kd(v,u,o,p,q,r,s)|0;if(!t){r=u;break}r=t;c[r>>2]=0;c[r+4>>2]=0;r=u;break}if((pd(b,2,14,42,e,f,g,h,i,j,.875,v)|0)<0){c[o>>2]=-1;r=-6;break}r=qd(v,u,p,q,s)|0;if((r|0)<0){c[o>>2]=-1;break}p=u;u=c[p>>2]|0;p=c[p+4>>2]|0;if((u|0)==-1&(p|0)==-1){c[o>>2]=-1;r=-5;break}c[o>>2]=(u&-32768|0)==0&0==0?u&32767:0;if(t){c[t>>2]=u;c[t+4>>2]=p}}else r=1;while(0);a:do switch(d|0){case 0:case 1:case 3:case 4:{if(!a){c[l>>2]=-1;u=-1;break a}u=a+28|0;p=c[u>>2]|0;q=p<<2;switch(d|0){case 0:case 3:if((pd(b,0,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,0,v,c[u>>2]|0,l,m,n)|0;break a}default:if((pd(b,1,p,q,e,f,g,h,i,j,k,v)|0)<0){c[l>>2]=-1;u=-6;break a}else{u=ld(a,1,v,c[u>>2]|0,l,m,n)|0;break a}}}default:u=1}while(0);if((r|0)!=1)u=(u|0)==1?r:(u&r|0)<0?u:0;zb=w;return u|0}function pd(b,e,h,i,j,k,l,m,n,o,p,q){b=b|0;e=e|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=+p;q=q|0;var r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0;R=zb;zb=zb+256|0;A=R+232|0;z=R+224|0;D=R+216|0;C=R+208|0;s=R+144|0;t=R+80|0;N=R;O=R+240|0;P=R+236|0;g[s>>3]=100.0;g[s+8>>3]=100.0;g[s+16>>3]=110.0;g[s+24>>3]=100.0;g[s+32>>3]=110.0;g[s+40>>3]=110.0;g[s+48>>3]=100.0;g[s+56>>3]=110.0;r=0;while(1){if((r|0)==4)break;g[t+(r<<4)>>3]=+g[o+(r<<4)>>3];g[t+(r<<4)+8>>3]=+g[o+(r<<4)+8>>3];r=r+1|0}nd(s,t,N);y=+g[t>>3];T=+g[t+16>>3];w=y-T;I=+g[t+8>>3];S=+g[t+24>>3];u=I-S;r=~~(w*w+u*u);u=+g[t+32>>3];w=+g[t+48>>3];V=u-w;v=+g[t+40>>3];x=+g[t+56>>3];U=v-x;L=~~(V*V+U*U);u=T-u;v=S-v;t=~~(u*u+v*v);y=w-y;I=x-I;M=~~(y*y+I*I);r=~~(+(((L|0)>(r|0)?L:r)|0)*p*p);t=~~(+(((M|0)>(t|0)?M:t)|0)*p*p);if(!b){s=h;while(1)if((s|0)<(i|0)&(B(s,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r,r)|0)<(t|0))r=r<<1;else break}else{s=h;while(1)if((s|0)<(i|0)&(B(s<<2,s)|0)<(r|0))s=s<<1;else break;r=h;while(1)if((r|0)<(i|0)&(B(r<<2,r)|0)<(t|0))r=r<<1;else break}M=(s|0)>(i|0)?i:s;J=(r|0)>(i|0)?i:r;K=(M|0)/(h|0)|0;L=(J|0)/(h|0)|0;u=(1.0-p)*.5*10.0;I=p*10.0;H=B(h,h)|0;a:do if(!e){H=H*3|0;r=HO(H,4)|0;if(!r){Ue(0,3,41858,C);Ea(1)}b:do switch(m|0){case 0:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 1:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=((B(t,k)|0)+s|0)*3|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t+1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t+2)>>0]|0)}i=i+1|0}o=o+1|0}}case 2:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+t>>0]|0)}i=i+1|0}o=o+1|0}}case 3:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+t>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|2)>>0]|0)}i=i+1|0}o=o+1|0}}case 4:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|1)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|3)>>0]|0)}i=i+1|0}o=o+1|0}}case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=j+((B(t,k)|0)+s)|0;t=d[t>>0]|0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+t;s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+t;b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+t}i=i+1|0}o=o+1|0}}case 6:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=(B(t,k)|0)+s<<2;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|3)>>0]|0);s=r+(b+1<<2)|0;c[s>>2]=(c[s>>2]|0)+(d[j+(t|2)>>0]|0);b=r+(b+2<<2)|0;c[b>>2]=(c[b>>2]|0)+(d[j+(t|1)>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){X=B(t,k)|0;W=(s&65534)+X<<1;T=+((d[j+W>>0]|0)+-128|0);V=+((d[j+(W+2)>>0]|0)+-128|0);U=+((d[j+(X+s<<1|1)>>0]|0)+-16|0)*298.0820007324219;X=~~(T*516.4110107421875+U)>>8;W=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;t=~~(U+V*408.5830078125)>>8;X=(X|0)>0?X:0;b=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;s=r+(b<<2)|0;c[s>>2]=((X|0)<255?X:255)+(c[s>>2]|0);W=(W|0)>0?W:0;s=r+(b+1<<2)|0;c[s>>2]=((W|0)<255?W:255)+(c[s>>2]|0);t=(t|0)>0?t:0;b=r+(b+2<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){t=B(t,k)|0;W=(s&65534)+t<<1;T=+((d[j+(W|1)>>0]|0)+-128|0);V=+((d[j+(W+3)>>0]|0)+-128|0);U=+((d[j+(t+s<<1)>>0]|0)+-16|0)*298.0820007324219;s=~~(U+T*516.4110107421875)>>8;t=~~(U-T*100.29100036621094-V*208.1199951171875)>>8;W=~~(U+V*408.5830078125)>>8;s=(s|0)>0?s:0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=((s|0)<255?s:255)+(c[b>>2]|0);t=(t|0)>0?t:0;b=r+(X+1<<2)|0;c[b>>2]=((t|0)<255?t:255)+(c[b>>2]|0);W=(W|0)>0?W:0;X=r+(X+2<<2)|0;c[X>>2]=((W|0)<255?W:255)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;i=0;while(1){if((i|0)>=(J|0))break b;v=w+I*(+(i|0)+.5)/x;o=0;while(1){if((o|0)>=(M|0))break;u=w+I*(+(o|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((i|0)/(L|0)|0,h)|0)+((o|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<3&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-32&255)>>>3|W<<5&255|2)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}o=o+1|0}i=i+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;t=a[j+(W|1)>>0]|0;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((t<<2&255|4)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=((t&-64&255)>>>3|W<<5&255|4)+(c[b>>2]|0);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-8|4)&255)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break b;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;X=((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)|0)*3|0;b=r+(X<<2)|0;c[b>>2]=(c[b>>2]|0)+((a[j+(W|1)>>0]&-16|8)&255);W=a[j+W>>0]|0;b=r+(X+1<<2)|0;c[b>>2]=(c[b>>2]|0)+((W<<4&255|8)&255);X=r+(X+2<<2)|0;c[X>>2]=(c[X>>2]|0)+((W&-16|8)&255)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,D);Q=306;break a}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}else{r=HO(H,4)|0;if(!r){Ue(0,3,41858,z);Ea(1)}c:do if(m>>>0<2){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=((B(t,k)|0)+s|0)*3|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W+1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W+2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}else{if((m|1|0)==3){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|1)>>0]|0)+(d[j+W>>0]|0)+(d[j+(W|2)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}if((m|2|0)==6){w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<2;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+((((d[j+(W|2)>>0]|0)+(d[j+(W|1)>>0]|0)+(d[j+(W|3)>>0]|0)|0)>>>0)/3|0)}i=i+1|0}o=o+1|0}}switch(m|0){case 5:case 12:case 13:case 14:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 7:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1|1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 8:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=j+((B(t,k)|0)+s<<1)|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=(c[X>>2]|0)+(d[W>>0]|0)}i=i+1|0}o=o+1|0}}case 9:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&28|2)+(b&248|4)+(W<<3&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 10:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;W=d[j+(W|1)>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<5&224|W>>>3&24|4)+(b&248|4)+(W<<2&248|4)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}case 11:{w=u+100.0;x=+(J|0);y=+(M|0);z=N+48|0;A=N+56|0;C=N+64|0;D=N+8|0;m=N+16|0;E=N+24|0;F=N+32|0;G=N+40|0;e=(b|0)==1;o=0;while(1){if((o|0)>=(J|0))break c;v=w+I*(+(o|0)+.5)/x;i=0;while(1){if((i|0)>=(M|0))break;u=w+I*(+(i|0)+.5)/y;p=+g[C>>3]+(u*+g[z>>3]+v*+g[A>>3]);if(p==0.0){Q=306;break a}V=(+g[m>>3]+(u*+g[N>>3]+v*+g[D>>3]))/p;f[O>>2]=V;u=(+g[G>>3]+(u*+g[E>>3]+v*+g[F>>3]))/p;f[P>>2]=u;oe(n,V,u,O,P)|0;u=+f[O>>2];if(e){s=((~~(u+1.0)|0)/2|0)<<1;t=((~~(+f[P>>2]+1.0)|0)/2|0)<<1}else{s=~~(u+.5);t=~~(+f[P>>2]+.5)}if((s|0)>-1?(t|0)<(l|0)&((t|0)>-1&(s|0)<(k|0)):0){W=(B(t,k)|0)+s<<1;b=d[j+W>>0]|0;X=r+((B((o|0)/(L|0)|0,h)|0)+((i|0)/(K|0)|0)<<2)|0;c[X>>2]=((((b<<4&240|8)+(b&240|8)+((a[j+(W|1)>>0]&-16|8)&255)|0)>>>0)/3|0)+(c[X>>2]|0)}i=i+1|0}o=o+1|0}}default:{Ue(0,3,20166,A);Q=306;break a}}}while(0);t=B(L,K)|0;s=0;while(1){if((s|0)==(H|0))break;a[q+s>>0]=((c[r+(s<<2)>>2]|0)>>>0)/(t>>>0)|0;s=s+1|0}GO(r);r=0}while(0);if((Q|0)==306){GO(r);r=-1}zb=R;return r|0}function qd(b,e,f,h,i){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+160|0;o=y+152|0;n=y+128|0;x=y+144|0;w=y;c[n>>2]=0;c[n+4>>2]=182;c[n+8>>2]=195;c[n+12>>2]=13;j=0;l=0;m=-1;while(1){if((j|0)==4)break;v=a[b+(c[n+(j<<2)>>2]|0)>>0]|0;j=j+1|0;l=(v&255)>(l&255)?v:l;m=(v&255)<(m&255)?v:m}l=l&255;j=m&255;a:do if((l-j|0)>=30){v=(l+j|0)>>>1;j=0;while(1){if((j|0)==4)break;a[o+j>>0]=v>>>0>(d[b+(c[n+(j<<2)>>2]|0)>>0]|0)>>>0&1;j=j+1|0}u=0;while(1){if(u>>>0>=4)break;j=u+1|0;if(((a[o+u>>0]|0)==1?(a[o+(j&3)>>0]|0)==1:0)?(a[o+(u+2&3)>>0]|0)==0:0)break;u=j}b:do switch(u&2147483647|0){case 4:{c[f>>2]=0;g[h>>3]=-1.0;j=-3;break a}case 0:{l=119;n=0;j=255;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;p=(n&2147483646|0)==12;q=n*14|0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(r=m&2147483646,((m|n)&2147483646|0)!=0):0)?!(p&((r|0)==0|(r|0)==12)):0){t=(d[b+(m+q)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+1|0}n=n+1|0}}case 1:{l=119;j=255;n=0;while(1){if((n|0)==14){p=57;break b}o=n+-3|0;q=n&2147483646;p=(q|0)==0;q=(q|0)==12;m=13;while(1){if((m|0)<=-1)break;if(((m+-3|o)>>>0>=8?(s=(m&-2|0)==12,!(p&s)):0)?!(q&(m>>>0<2|s)):0){t=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}m=m+-1|0}n=n+1|0}}case 2:{m=13;l=119;j=255;while(1){if((m|0)<=-1){p=57;break b}n=m+-3|0;q=m>>>0<2|(m&-2|0)==12;p=m*14|0;o=13;while(1){if((o|0)<=-1)break;if((o+-3|n)>>>0>=8?!((o|m)>>>0<2|q&(o&-2|0)==12):0){t=(d[b+(o+p)>>0]|0)-v|0;a[w+l>>0]=t>>>31;t=(t|0)>-1?t:0-t|0;l=l+-1|0;j=(t|0)<(j|0)?t:j}o=o+-1|0}m=m+-1|0}}case 3:{n=13;l=119;j=255;while(1){if((n|0)<=-1){p=57;break b}o=n+-3|0;p=n&-2;q=(p|0)==12;r=(p|0)==0;m=0;while(1){if((m|0)==14)break;if(((m+-3|o)>>>0>=8?(t=m&2147483646,!(q&(t|0)==0)):0)?!((t|p|0)==0|r&(t|0)==12):0){s=(d[b+((m*14|0)+n)>>0]|0)-v|0;a[w+l>>0]=s>>>31;s=(s|0)>-1?s:0-s|0;l=l+-1|0;j=(s|0)<(j|0)?s:j}m=m+1|0}n=n+-1|0}}default:{c[f>>2]=u;k=1.0}}while(0);if((p|0)==57){c[f>>2]=u;k=(j|0)>30?1.0:+(j|0)/30.0}g[h>>3]=k;j=md(2830,0,0,w,x)|0;if((j|0)<0)j=-4;else{if(i|0)c[i>>2]=j;i=x;x=c[i+4>>2]|0;j=e;c[j>>2]=c[i>>2];c[j+4>>2]=x;j=0}}else{c[f>>2]=0;g[h>>3]=-1.0;j=-2}while(0);zb=y;return j|0}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0;A=zb;zb=zb+32|0;z=A+24|0;f=A+16|0;d=A+8|0;do if(a){if(!b){Ue(0,3,20225,d);d=-1;break}y=a+8|0;e=c[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;if(!(c[(c[y>>2]|0)+(d<<2)>>2]|0))break;d=d+1|0}if((d|0)!=(e|0)){x=jz(b)|0;if(!x){Ue(0,3,20270,f);d=-1;break}p=a+28|0;q=a+12|0;r=d<<2;s=a+20|0;t=a+16|0;v=a+24|0;e=tA(x,20293)|0;o=0;a:while(1){if(o>>>0>=4){e=36;break}w=o+r|0;b=0;n=0;while(1){if(n>>>0>=3)break;l=(n|0)==0;m=(n|0)==2;k=0;f=c[p>>2]|0;while(1){if((k|0)>=(f|0))break;j=0;while(1){if((j|0)>=(f|0))break;if(!e){e=21;break a}f=lA(e)|0;e=tA(0,20293)|0;f=255-f|0;h=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+((((B(c[p>>2]|0,k)|0)+j|0)*3|0)+n<<2)|0;c[h>>2]=f;h=c[(c[s>>2]|0)+(w<<2)>>2]|0;i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;if(!l){c[i>>2]=(c[i>>2]|0)+f;if(m){i=h+((B(c[p>>2]|0,k)|0)+j<<2)|0;c[i>>2]=(c[i>>2]|0)/3|0}}else c[i>>2]=f;j=j+1|0;b=f+b|0;f=c[p>>2]|0}k=k+1|0}n=n+1|0}i=c[p>>2]|0;j=(b|0)/(B(i*3|0,i)|0)|0;b=0;f=0;while(1){if(f>>>0>=(B(i*3|0,i)|0)>>>0)break;n=(c[(c[q>>2]|0)+(w<<2)>>2]|0)+(f<<2)|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;i=(B(i,i)|0)+b|0;b=i;f=f+1|0;i=c[p>>2]|0}C=+u(+(+(b|0)));g[(c[t>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;f=0;h=0;b=i;while(1){if(h>>>0>=(B(b,b)|0)>>>0)break;n=(c[(c[s>>2]|0)+(w<<2)>>2]|0)+(h<<2)|0;b=(c[n>>2]|0)-j|0;c[n>>2]=b;b=(B(b,b)|0)+f|0;f=b;h=h+1|0;b=c[p>>2]|0}C=+u(+(+(f|0)));g[(c[v>>2]|0)+(w<<3)>>3]=C==0.0?1.0e-07:C;o=o+1|0}if((e|0)==21){Ue(0,3,20298,z);GO(x);d=-1;break}else if((e|0)==36){GO(x);c[(c[y>>2]|0)+(d<<2)>>2]=1;c[a>>2]=(c[a>>2]|0)+1;break}}else d=-1}else{Ue(0,3,20200,A);d=-1}while(0);zb=A;return d|0} +function Lm(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=zb;zb=zb+16|0;v=y;w=b+4|0;c[w>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);t=b+8|0;u=b+12|0;s=0;a:while(1){if(s>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,s)|0;yo(g,n)|0;q=_m(d,s)|0;o=zo(g)|0;p=o+4|0;q=q+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){h=c[o>>2]|0;if(l>>>0>=(c[p>>2]|0)-h>>2>>>0)break;z=a[q>>0]|0;k=(_m(e,c[h+(l<<2)>>2]|0)|0)+16|0;do if(z<<24>>24==(a[k>>0]|0)){h=yl(n,Zm(e,c[(c[o>>2]|0)+(l<<2)>>2]|0)|0)|0;if(h>>>0>>0){k=h;h=m;i=c[(c[o>>2]|0)+(l<<2)>>2]|0;break}else{k=m;h=h>>>0>>0?h:j;break}}else{k=m;h=j}while(0);l=l+1|0;m=k;j=h}do if((m|0)!=-1){if((i|0)==-1){x=15;break a}if((j|0)==-1){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v);break}if(+(m>>>0)/+(j>>>0)<+f[u>>2]){an(v,s,i);h=c[w>>2]|0;if(h>>>0<(c[t>>2]|0)>>>0){p=v;q=c[p+4>>2]|0;z=h;c[z>>2]=c[p>>2];c[z+4>>2]=q;c[w>>2]=(c[w>>2]|0)+8}else bn(b,v)}}while(0);s=s+1|0}if((x|0)==15){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,160)|0,35007)|0,31348)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}z=(c[w>>2]|0)-(c[b>>2]|0)>>3;if(z>>>0>(Ak(d)|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,175)|0,35007)|0,31426)|0;IE(v,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(v,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(v);QE(z,x)|0;ME(z)|0;ua()}else{r=(c[w>>2]|0)-(c[b>>2]|0)>>3;break}}else r=0;while(0);zb=y;return r|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;r=t;s=b+4|0;c[s>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){Ym(b,Ak(d)|0);p=b+8|0;q=b+12|0;o=0;while(1){if(o>>>0>=(Ak(d)|0)>>>0)break;l=Zm(d,o)|0;m=(_m(d,o)|0)+16|0;i=0;j=-1;g=2147483647;h=-1;while(1){if(i>>>0>=(Ak(e)|0)>>>0)break;u=a[m>>0]|0;k=(_m(e,i)|0)+16|0;if(u<<24>>24==(a[k>>0]|0)){u=yl(l,Zm(e,i)|0)|0;v=u>>>0>>0;k=v?u:j;g=v?i:g;h=v?j:u>>>0>>0?u:h}else k=j;i=i+1|0;j=k}do if((j|0)!=-1){if((h|0)==-1){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r);break}if(+(j>>>0)/+(h>>>0)<+f[q>>2]){an(r,o,g);g=c[s>>2]|0;if(g>>>0<(c[p>>2]|0)>>>0){m=r;u=c[m+4>>2]|0;v=g;c[v>>2]=c[m>>2];c[v+4>>2]=u;c[s>>2]=(c[s>>2]|0)+8}else bn(b,r)}}while(0);o=o+1|0}v=(c[s>>2]|0)-(c[b>>2]|0)>>3;if(v>>>0>(Ak(d)|0)>>>0){v=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,112)|0,35007)|0,31426)|0;IE(r,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(r,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(r);QE(v,u)|0;ME(v)|0;ua()}else{n=(c[s>>2]|0)-(c[b>>2]|0)>>3;break}}else n=0;while(0);zb=t;return n|0}function Nm(a){a=a|0;return a|0}function Om(a){a=a|0;return c[a>>2]|0}function Pm(a){a=a|0;return c[a+4>>2]|0}function Qm(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;u=zb;zb=zb+32|0;s=u+20|0;t=u+8|0;o=u+4|0;p=u;q=e+4|0;uo(s,(c[q>>2]|0)-(c[e>>2]|0)>>1);uo(t,(c[q>>2]|0)-(c[e>>2]|0)>>1);n=c[e>>2]|0;r=(c[q>>2]|0)-n>>3;m=c[b>>2]|0;d=c[d>>2]|0;k=c[s>>2]|0;l=c[t>>2]|0;b=0;while(1){if((b|0)==(r|0))break;y=c[n+(b<<3)>>2]|0;w=c[n+(b<<3)+4>>2]|0;v=b<<2;x=k+(v<<2)|0;c[x>>2]=c[m+(y*20|0)>>2];c[x+4>>2]=c[m+(y*20|0)+4>>2];c[x+8>>2]=c[m+(y*20|0)+8>>2];c[x+12>>2]=c[m+(y*20|0)+12>>2];v=l+(v<<2)|0;c[v>>2]=c[d+(w*20|0)>>2];c[v+4>>2]=c[d+(w*20|0)+4>>2];c[v+8>>2]=c[d+(w*20|0)+8>>2];c[v+12>>2]=c[d+(w*20|0)+12>>2];b=b+1|0}A=+(g|0);A=A*.20000000298023224+A;z=+(h|0);z=z*.20000000298023224+z;op(a,-A,A,-z,z,0,0,12,10);vo(a,+(i>>1|0),+(j>>1|0));wo(a,i,j);qp(a,c[s>>2]|0,c[t>>2]|0,(c[q>>2]|0)-(c[e>>2]|0)>>3);Fp(a,o,p);y=+f[o>>2]<3.0?-1:c[p>>2]|0;gh(t);gh(s);zb=u;return y|0}function Rm(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=zb;zb=zb+48|0;h=v+32|0;r=v+28|0;s=v+24|0;t=v+20|0;u=v+16|0;n=v+12|0;o=v+8|0;p=v+4|0;q=v;qo(b,n,o,p,q,e);l=a+4|0;c[l>>2]=c[a>>2];m=ro(b)|0;m=(c[m+4>>2]|0)-(c[m>>2]|0)>>2;e=so(b)|0;if(m>>>0>(c[d+4>>2]|0)-(c[d>>2]|0)>>3>>>0){k=Xf(Xf(PE(Xf(Xf(Xf(56032,31870)|0,30067)|0,35e3)|0,342)|0,35007)|0,31916)|0;IE(h,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(k,j)|0;ME(k)|0;ua()}k=a+8|0;e=c[e>>2]|0;h=0;while(1){if((h|0)>=(m|0))break;to(b,r,s,t,u,+f[e>>2],+f[e+4>>2],+f[e+8>>2],+f[e+12>>2],+(c[n>>2]|0)+.5,+(c[o>>2]|0)+.5,+(c[p>>2]|0)+.5,+(c[q>>2]|0)+.5);do if((+f[r>>2]>2]>2]>2]>2]|0)+(c[(c[i>>2]|0)+(h<<2)>>2]<<3)|0;j=c[l>>2]|0;if((j|0)==(c[k>>2]|0)){hn(a,i);break}else{w=i;i=c[w+4>>2]|0;c[j>>2]=c[w>>2];c[j+4>>2]=i;c[l>>2]=(c[l>>2]|0)+8;break}}while(0);e=e+16|0;h=h+1|0}zb=v;return}function Sm(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=zb;zb=zb+64|0;o=q+44|0;p=q+32|0;n=q;m=e+4|0;jn(o,(c[m>>2]|0)-(c[e>>2]|0)>>3);jn(p,(c[m>>2]|0)-(c[e>>2]|0)>>3);l=c[e>>2]|0;m=(c[m>>2]|0)-l>>3;j=c[b>>2]|0;k=c[p>>2]|0;b=c[d>>2]|0;d=c[o>>2]|0;e=0;while(1){if((e|0)==(m|0))break;r=c[l+(e<<3)>>2]|0;c[k+(e<<3)>>2]=c[j+(r*20|0)>>2];c[k+(e<<3)+4>>2]=c[j+(r*20|0)+4>>2];r=c[l+(e<<3)+4>>2]|0;c[d+(e<<3)>>2]=c[b+(r*20|0)>>2];c[d+(e<<3)+4>>2]=c[b+(r*20|0)+4>>2];e=e+1|0}f[n>>2]=0.0;f[n+4>>2]=0.0;s=+(h|0);f[n+8>>2]=s;f[n+12>>2]=0.0;f[n+16>>2]=s;s=+(i|0);f[n+20>>2]=s;f[n+24>>2]=0.0;f[n+28>>2]=s;if(kn(g,a,d,k,m,n,4)|0)e=mn(a,h,i)|0;else e=0;ln(p);ln(o);zb=q;return e|0}function Tm(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;q=zb;zb=zb+16|0;p=q;h=+ji(h);o=g+4|0;Ym(a,(c[o>>2]|0)-(c[g>>2]|0)>>3);l=p+4|0;m=a+4|0;n=a+8|0;k=0;while(1){i=c[g>>2]|0;if(k>>>0>=(c[o>>2]|0)-i>>3>>>0)break;j=c[i+(k<<3)+4>>2]|0;i=c[e>>2]|0;$m(p,l,b,+f[i+(j*20|0)>>2],+f[i+(j*20|0)+4>>2]);r=+ji(+f[p>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)>>2]);do if(r+ +ji(+f[l>>2]-+f[(c[d>>2]|0)+((c[(c[g>>2]|0)+(k<<3)>>2]|0)*20|0)+4>>2])<=h){i=(c[g>>2]|0)+(k<<3)|0;j=c[m>>2]|0;if((j|0)==(c[n>>2]|0)){hn(a,i);break}else{s=i;i=c[s+4>>2]|0;c[j>>2]=c[s>>2];c[j+4>>2]=i;c[m>>2]=(c[m>>2]|0)+8;break}}while(0);k=k+1|0}zb=q;return}function Um(b,d,e,g,h){b=b|0;d=d|0;e=e|0;g=g|0;h=+h;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=zb;zb=zb+64|0;u=z+40|0;v=z;w=z+52|0;x=z+48|0;t=b+4|0;c[t>>2]=c[b>>2];do if((Ak(d)|0)!=0?(Ak(e)|0)!=0:0){h=+ji(h);if(!(Xm(v,g,0.0)|0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,31157)|0,35e3)|0,196)|0,35007)|0,31243)|0;IE(u,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(u,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(u);QE(r,q)|0;ME(r)|0;ua()}Ym(b,Ak(d)|0);q=b+8|0;r=b+12|0;p=0;a:while(1){if(p>>>0>=(Ak(d)|0)>>>0)break;n=Zm(d,p)|0;o=_m(d,p)|0;$m(w,x,v,+f[o>>2],+f[o+4>>2]);o=o+16|0;l=0;m=-1;j=-1;i=2147483647;while(1){if(l>>>0>=(Ak(e)|0)>>>0)break;g=_m(e,l)|0;if((a[o>>0]|0)==(a[g+16>>0]|0)?(A=+ji(+f[w>>2]-+f[g>>2]),!(A+ +ji(+f[x>>2]-+f[g+4>>2])>h)):0){g=zl(n,Zm(e,l)|0)|0;B=g>>>0>>0;k=B?g:m;g=B?m:g>>>0>>0?g:j;i=B?l:i}else{k=m;g=j}l=l+1|0;m=k;j=g}do if((m|0)!=-1){if((i|0)==-1){y=16;break a}if((j|0)==-1){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u);break}if(+(m>>>0)/+(j>>>0)<+f[r>>2]){an(u,p,i);g=c[t>>2]|0;if(g>>>0<(c[q>>2]|0)>>>0){n=u;o=c[n+4>>2]|0;B=g;c[B>>2]=c[n>>2];c[B+4>>2]=o;c[t>>2]=(c[t>>2]|0)+8}else bn(b,u)}}while(0);p=p+1|0}if((y|0)==16){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31276)|0,31157)|0,35e3)|0,241)|0,35007)|0,31348)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}B=(c[t>>2]|0)-(c[b>>2]|0)>>3;if(B>>>0>(Ak(d)|0)>>>0){B=Xf(Xf(PE(Xf(Xf(Xf(56032,31366)|0,31157)|0,35e3)|0,256)|0,35007)|0,31426)|0;IE(u,B+(c[(c[B>>2]|0)+-12>>2]|0)|0);y=XF(u,56736)|0;y=Ib[c[(c[y>>2]|0)+28>>2]&63](y,10)|0;YF(u);QE(B,y)|0;ME(B)|0;ua()}else{s=(c[t>>2]|0)-(c[b>>2]|0)>>3;break}}else s=0;while(0);zb=z;return s|0}function Vm(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));return}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Xm(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=+gn(b);if(!(+t(+d)<=c)){d=1.0/d;e=b+16|0;k=b+20|0;j=b+28|0;m=b+32|0;c=d*+xi(+f[e>>2],+f[k>>2],+f[j>>2],+f[m>>2]);f[a>>2]=c;l=b+8|0;h=b+4|0;c=d*+xi(+f[l>>2],+f[h>>2],+f[m>>2],+f[j>>2]);f[a+4>>2]=c;c=d*+xi(+f[h>>2],+f[l>>2],+f[e>>2],+f[k>>2]);f[a+8>>2]=c;g=b+12|0;i=b+24|0;c=d*+xi(+f[k>>2],+f[g>>2],+f[m>>2],+f[i>>2]);f[a+12>>2]=c;c=d*+xi(+f[b>>2],+f[l>>2],+f[i>>2],+f[m>>2]);f[a+16>>2]=c;c=d*+xi(+f[l>>2],+f[b>>2],+f[k>>2],+f[g>>2]);f[a+20>>2]=c;c=d*+xi(+f[g>>2],+f[e>>2],+f[i>>2],+f[j>>2]);f[a+24>>2]=c;c=d*+xi(+f[h>>2],+f[b>>2],+f[j>>2],+f[i>>2]);f[a+28>>2]=c;d=d*+xi(+f[b>>2],+f[h>>2],+f[g>>2],+f[e>>2]);f[a+32>>2]=d;a=1}else a=0;return a|0}function Ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>3>>>0>>0){dn(d,b,(c[a+4>>2]|0)-e>>3,a+8|0);en(a,d);fn(d)}zb=f;return}function Zm(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function _m(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function $m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var g=0.0;g=+f[c+32>>2]+(+f[c+24>>2]*d+ +f[c+28>>2]*e);f[a>>2]=(+f[c+8>>2]+(+f[c>>2]*d+ +f[c+4>>2]*e))/g;f[b>>2]=(+f[c+20>>2]+(+f[c+12>>2]*d+ +f[c+16>>2]*e))/g;return}function an(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function cn(a){a=a|0;return 536870911}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function gn(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;k=a+20|0;e=a+28|0;j=a+32|0;d=+xi(+f[h>>2],+f[k>>2],+f[e>>2],+f[j>>2]);i=a+12|0;g=a+24|0;c=+xi(+f[i>>2],+f[k>>2],+f[g>>2],+f[j>>2]);b=+xi(+f[i>>2],+f[h>>2],+f[g>>2],+f[e>>2]);return +(d*+f[a>>2]-c*+f[a+4>>2]+b*+f[a+8>>2])}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=cn(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;dn(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;en(a,d);fn(d);zb=h;return}}function jn(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){no(a,b);oo(a,b)}return}function kn(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0;j=a+12|0;Vk(j,g);return wn(b,d,e,g,h,i,a,j,a+24|0,+f[a+36>>2],c[a+40>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0)|0}function ln(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0;m=zb;zb=zb+96|0;e=m+88|0;g=m+80|0;h=m+72|0;i=m+64|0;j=m;k=m+56|0;l=m+48|0;d=m+40|0;if(Xm(j,a,9.999999747378752e-06)|0){n=+(b|0);f[k>>2]=n;f[k+4>>2]=0.0;f[l>>2]=n;n=+(c|0);f[l+4>>2]=n;f[d>>2]=0.0;f[d+4>>2]=n;nn(e,j,55476);nn(g,j,k);nn(h,j,l);nn(i,j,d);n=+(B(c,b)|0)*.0001;if(+on(e,g,h,i)>2];e=c+4|0;g=+f[e>>2];d=+f[b+32>>2]+(+f[b+24>>2]*h+ +f[b+28>>2]*g);f[a>>2]=(+f[b+8>>2]+(h*+f[b>>2]+g*+f[b+4>>2]))/d;f[a+4>>2]=(+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]))/d;return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0;f=zb;zb=zb+48|0;l=f+32|0;m=f+24|0;k=f+16|0;h=f+8|0;g=f;rn(l,b,a);rn(m,c,a);rn(k,d,a);rn(h,b,c);rn(g,d,c);j=+sn(l,m);i=+sn(m,k);e=+sn(l,k);e=+tn(j,i,e,+sn(h,g));zb=f;return +e}function pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=+qn(a,b,c)>0.0;f=+qn(b,c,d)>0.0;c=+qn(c,d,a)>0.0;d=+qn(d,a,b)>0.0;d=(f?1:-1)+(e?1:-1)+(c?1:-1)+(d?1:-1)|0;return (((d|0)>-1?d:0-d|0)|0)==4|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+f[a>>2];e=+f[a+4>>2];return +((+f[b>>2]-d)*(+f[c+4>>2]-e)-(+f[b+4>>2]-e)*(+f[c>>2]-d))}function rn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=+f[b>>2]-+f[c>>2];f[a+4>>2]=+f[b+4>>2]-+f[c+4>>2];return}function sn(a,b){a=a|0;b=b|0;return +(+t(+(+f[a>>2]*+f[b+4>>2]-+f[a+4>>2]*+f[b>>2]))*.5)}function tn(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(+vn(+un(a,b,c),d))}function un(a,b,c){a=+a;b=+b;c=+c;return +(+vn(+vn(a,b),c))}function vn(a,b){a=+a;b=+b;return +(a>2]|0)-(c[i>>2]|0)>>2>>>0<(m*9|0)>>>0){z=Xf(Xf(PE(Xf(Xf(Xf(56032,31460)|0,31518)|0,35e3)|0,119)|0,35007)|0,31612)|0;IE(y,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);x=XF(y,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(y);QE(z,x)|0;ME(z)|0;ua()}x=c[j>>2]|0;z=x;if((c[j+4>>2]|0)-x>>2>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31662)|0,31518)|0,35e3)|0,120)|0,35007)|0,31712)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((c[k+4>>2]|0)-(c[k>>2]|0)>>3>>>0>>0){x=Xf(Xf(PE(Xf(Xf(Xf(56032,31754)|0,31518)|0,35e3)|0,121)|0,35007)|0,31816)|0;IE(y,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);u=XF(y,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(y);QE(x,u)|0;ME(x)|0;ua()}if((e|0)>=4){c[w>>2]=1234;l=+ji(l);x=Bj(o,e)|0;tl(z,e,0);ul(z,e,e,w);q=z+4|0;r=z+8|0;s=z+12|0;t=(h|0)>0;o=0;u=0;while(1){if(!((u|0)<(m|0)&(o|0)<(n|0)))break;ul(z,e,4,w);D=c[z>>2]<<1;C=c[q>>2]<<1;B=c[r>>2]<<1;j=c[s>>2]<<1;do if(xn(b+(D<<2)|0,b+(C<<2)|0,b+(B<<2)|0,b+(j<<2)|0,d+(D<<2)|0,d+(C<<2)|0,d+(B<<2)|0,d+(j<<2)|0)|0?(v=u*9|0,j=c[z>>2]<<1,B=c[q>>2]<<1,C=c[r>>2]<<1,D=c[s>>2]<<1,yn((c[i>>2]|0)+(v<<2)|0,b+(j<<2)|0,b+(B<<2)|0,b+(C<<2)|0,b+(D<<2)|0,d+(j<<2)|0,d+(B<<2)|0,d+(C<<2)|0,d+(D<<2)|0)|0):0){if(t?!(zn((c[i>>2]|0)+(v<<2)|0,g,h)|0):0){j=u;break}j=u+1|0}else j=u;while(0);o=o+1|0;u=j}l=1.0/l;if(u){o=c[k>>2]|0;j=0;while(1){if((j|0)>=(u|0))break;f[o+(j<<3)>>2]=0.0;c[o+(j<<3)+4>>2]=j;j=j+1|0}t=0;while(1){if(!((u|0)>2&(t|0)<(e|0)))break;r=(Bj(x,e-t|0)|0)+t|0;q=0;j=c[k>>2]|0;while(1){if((q|0)==(u|0))break;s=(c[i>>2]|0)+((c[j+(q<<3)+4>>2]|0)*9<<2)|0;o=t;while(1){if((o|0)>=(r|0))break;j=c[z+(o<<2)>>2]<<1;p=+Bn(s,b+(j<<2)|0,d+(j<<2)|0,l);j=c[k>>2]|0;D=j+(q<<3)|0;f[D>>2]=p+ +f[D>>2];o=o+1|0}q=q+1|0}An(y,j,u);t=r;u=u>>1}q=c[k>>2]|0;o=1;l=+f[q>>2];j=c[q+4>>2]|0;while(1){if((o|0)>=(u|0))break;p=+f[q+(o<<3)>>2];if(p>2]|0}o=o+1|0}Vm(a,(c[i>>2]|0)+(j*9<<2)|0);Cn(a);j=1}else j=0}else j=0;zb=A;return j|0}function xn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=+qn(a,b,c)>0.0;if((!(i^+qn(e,f,g)>0.0)?(i=+qn(b,c,d)>0.0,!(i^+qn(f,g,h)>0.0)):0)?(i=+qn(c,d,a)>0.0,!(i^+qn(g,h,e)>0.0)):0){a=+qn(d,a,b)>0.0;a=a^+qn(h,e,f)>0.0^1}else a=0;return a|0}function yn(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=zb;zb=zb+128|0;w=x;k=x+124|0;l=x+120|0;m=x+112|0;n=x+104|0;o=x+96|0;p=x+88|0;q=x+80|0;r=x+72|0;s=x+64|0;t=x+56|0;u=x+48|0;v=x+40|0;if((In(o,p,q,r,k,m,b,c,d,e)|0?In(s,t,u,v,l,n,g,h,i,j)|0:0)?Jn(w,o,p,q,r,s,t,u,v)|0:0){Kn(a,w,+f[k>>2],m,+f[l>>2],n);a=1}else a=0;zb=x;return a|0}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=zb;zb=zb+48|0;f=n+32|0;e=n+24|0;d=n+16|0;k=n+8|0;l=n;a:do if((c|0)>=2){m=b+8|0;g=b+16|0;nn(f,a,b);nn(e,a,m);nn(d,a,g);Gn(k,f);Gn(l,e);if(Hn(b,m,g,f,e,d)|0){j=3;i=f;f=m;h=b;while(1){if((j|0)>=(c|0))break;h=h+8|0;f=f+8|0;g=g+8|0;nn(i,a,g);if(!(Hn(h,f,g,e,d,i)|0)){d=0;break a}else{o=i;j=j+1|0;i=e;e=d;d=o}}if(Hn(f,g,b,e,d,k)|0)d=Hn(g,b,m,d,k,l)|0;else d=0}else d=0}else d=1;while(0);zb=n;return d|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;Fn(a,b,c,(c&1)+-1+((c|0)/2|0)|0);return}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,g=0,h=0,i=0;e=zb;zb=zb+16|0;i=e+8|0;g=e;h=i+4|0;$m(i,h,a,+f[b>>2],+f[b+4>>2]);f[g>>2]=+f[i>>2]-+f[c>>2];f[g+4>>2]=+f[h>>2]-+f[c+4>>2];d=+Dn(g,d);zb=e;return +d}function Cn(a){a=a|0;var b=0,c=0.0,d=0;b=a+32|0;c=1.0/+f[b>>2];f[a>>2]=+f[a>>2]*c;d=a+4|0;f[d>>2]=c*+f[d>>2];d=a+8|0;f[d>>2]=c*+f[d>>2];d=a+12|0;f[d>>2]=c*+f[d>>2];d=a+16|0;f[d>>2]=c*+f[d>>2];d=a+20|0;f[d>>2]=c*+f[d>>2];d=a+24|0;f[d>>2]=c*+f[d>>2];a=a+28|0;f[a>>2]=c*+f[a>>2];f[b>>2]=1.0;return}function Dn(a,b){a=a|0;b=+b;return +(+En(+f[a>>2],+f[a+4>>2],b))}function En(a,b,c){a=+a;b=+b;c=+c;return +(+z(+((a*a+b*b)*c+1.0)))}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+16|0;g=s;if((d|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,82)|0,35007)|0,33521)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}if((e|0)<=0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,83)|0,35007)|0,33569)|0;IE(g,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(g,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(g);QE(r,q)|0;ME(r)|0;ua()}p=e+-1|0;q=b+(p<<3)|0;r=b+(p<<3)+4|0;l=d+-1|0;m=0;while(1){if((m|0)>=(l|0))break;n=+f[q>>2];o=c[r>>2]|0;g=m;d=l;do{while(1){j=b+(g<<3)|0;k=+f[j>>2];if(!(k>2]|0)>=(o|0))break}g=g+1|0}while(1){h=b+(d<<3)|0;i=+f[h>>2];if(!(n=(c[b+(d<<3)+4>>2]|0))break}d=d+-1|0}if((g|0)<=(d|0)){f[j>>2]=i;f[h>>2]=k;t=b+(g<<3)+4|0;j=b+(d<<3)+4|0;h=c[t>>2]|0;c[t>>2]=c[j>>2];c[j>>2]=h;g=g+1|0;d=d+-1|0}}while((g|0)<=(d|0));l=(g|0)<(e|0)?l:d;m=(d|0)<(p|0)?g:m}b=q;e=c[b+4>>2]|0;t=a;c[t>>2]=c[b>>2];c[t+4>>2]=e;zb=s;return}function Gn(a,b){a=a|0;b=b|0;var d=0,e=0;e=b;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;c=+qn(a,b,c)>0.0;return c^+qn(d,e,f)>0.0^1|0}function In(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0,w=0,x=0,y=0;l=(+f[h>>2]+ +f[i>>2]+ +f[j>>2]+ +f[k>>2])*.25;f[g>>2]=l;y=h+4|0;x=i+4|0;w=j+4|0;v=k+4|0;m=(+f[y>>2]+ +f[x>>2]+ +f[w>>2]+ +f[v>>2])*.25;f[g+4>>2]=m;s=+f[h>>2]-l;t=+f[y>>2]-m;q=+f[i>>2]-l;r=+f[x>>2]-m;o=+f[j>>2]-l;p=+f[w>>2]-m;l=+f[k>>2]-l;m=+f[v>>2]-m;n=(+u(+(s*s+t*t))+ +u(+(q*q+r*r))+ +u(+(o*o+p*p))+ +u(+(l*l+m*m)))*.25;if(n==0.0)g=0;else{n=1.0/n*1.4142135623730951;f[e>>2]=n;f[a>>2]=s*n;f[a+4>>2]=t*+f[e>>2];f[b>>2]=q*+f[e>>2];f[b+4>>2]=r*+f[e>>2];f[c>>2]=o*+f[e>>2];f[c+4>>2]=p*+f[e>>2];f[d>>2]=l*+f[e>>2];f[d+4>>2]=m*+f[e>>2];g=1}return g|0}function Jn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=zb;zb=zb+288|0;k=j;Ln(k,b,c,d,e,f,g,h,i);if(Mn(a,k)|0)a=!(+t(+(+gn(a)))<1.0e-05);else a=0;zb=j;return a|0}function Kn(a,b,c,d,e,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;g=g|0;var h=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0;l=b+24|0;o=+f[l>>2];q=+f[g>>2];k=b+28|0;n=+f[k>>2];r=o*q+ +f[b>>2]/e;q=q*n+ +f[b+4>>2]/e;p=g+4|0;m=+f[p>>2];o=o*m+ +f[b+12>>2]/e;m=n*m+ +f[b+16>>2]/e;n=+f[d>>2]*c;h=d+4|0;i=+f[h>>2]*c;f[a>>2]=r*c;f[a+4>>2]=q*c;j=b+32|0;f[a+8>>2]=+f[j>>2]*+f[g>>2]+ +f[b+8>>2]/e-r*n-q*i;f[a+12>>2]=o*c;f[a+16>>2]=m*c;f[a+20>>2]=+f[j>>2]*+f[p>>2]+ +f[b+20>>2]/e-o*n-m*i;i=+f[l>>2]*c;f[a+24>>2]=i;e=+f[k>>2]*c;f[a+28>>2]=e;f[a+32>>2]=+f[j>>2]-i*+f[d>>2]-e*+f[h>>2];return}function Ln(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;lo(a,b,f);lo(a+72|0,c,g);lo(a+144|0,d,h);lo(a+216|0,e,i);return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0;d=zb;zb=zb+288|0;c=d;if(((((((Nn(c,b)|0?On(c,b)|0:0)?Pn(c,b)|0:0)?Qn(c,b)|0:0)?Rn(c,b)|0:0)?Sn(c,b)|0:0)?Tn(c,b)|0:0)?Un(c,b)|0:0)a=Vn(a,c)|0;else a=0;zb=d;return a|0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0;g=zb;zb=zb+32|0;d=g;h=+_n(b);f[d>>2]=h;e=b+36|0;h=+_n(e);f[d+4>>2]=h;h=+_n(b+72|0);f[d+8>>2]=h;h=+_n(b+108|0);f[d+12>>2]=h;h=+_n(b+144|0);f[d+16>>2]=h;h=+_n(b+180|0);f[d+20>>2]=h;h=+_n(b+216|0);f[d+24>>2]=h;h=+_n(b+252|0);f[d+28>>2]=h;c=jo(d)|0;d=d+(c<<2)|0;if(+f[d>>2]==0.0)a=0;else{co(b,b+(c*9<<2)|0);Yn(a,b,1.0/+u(+(+f[d>>2])));ko(a+36|0,e,63);a=1}zb=g;return a|0}function On(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0;e=zb;zb=zb+32|0;g=e;c=a+36|0;d=b+36|0;ao(c,a,d);n=a+72|0;ao(n,a,b+72|0);m=a+108|0;ao(m,a,b+108|0);l=a+144|0;ao(l,a,b+144|0);k=a+180|0;ao(k,a,b+180|0);j=a+216|0;ao(j,a,b+216|0);i=a+252|0;ao(i,a,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(n);f[g+4>>2]=h;h=+_n(m);f[g+8>>2]=h;h=+_n(l);f[g+12>>2]=h;h=+_n(k);f[g+16>>2]=h;h=+_n(j);f[g+20>>2]=h;h=+_n(i);f[g+24>>2]=h;a=io(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Pn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0;e=zb;zb=zb+32|0;g=e;c=a+72|0;m=a+36|0;d=b+72|0;ao(c,m,d);l=a+108|0;ao(l,m,b+108|0);k=a+144|0;ao(k,m,b+144|0);j=a+180|0;ao(j,m,b+180|0);i=a+216|0;ao(i,m,b+216|0);a=a+252|0;ao(a,m,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(l);f[g+4>>2]=h;h=+_n(k);f[g+8>>2]=h;h=+_n(j);f[g+12>>2]=h;h=+_n(i);f[g+16>>2]=h;h=+_n(a);f[g+20>>2]=h;a=ho(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0,l=0;e=zb;zb=zb+32|0;g=e;c=a+108|0;l=a+72|0;d=b+108|0;ao(c,l,d);k=a+144|0;ao(k,l,b+144|0);j=a+180|0;ao(j,l,b+180|0);i=a+216|0;ao(i,l,b+216|0);a=a+252|0;ao(a,l,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(k);f[g+4>>2]=h;h=+_n(j);f[g+8>>2]=h;h=+_n(i);f[g+12>>2]=h;h=+_n(a);f[g+16>>2]=h;a=go(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0,k=0;e=zb;zb=zb+16|0;g=e;c=a+144|0;k=a+108|0;d=b+144|0;ao(c,k,d);j=a+180|0;ao(j,k,b+180|0);i=a+216|0;ao(i,k,b+216|0);a=a+252|0;ao(a,k,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(j);f[g+4>>2]=h;h=+_n(i);f[g+8>>2]=h;h=+_n(a);f[g+12>>2]=h;a=fo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0,j=0;e=zb;zb=zb+16|0;g=e;c=a+180|0;j=a+144|0;d=b+180|0;ao(c,j,d);i=a+216|0;ao(i,j,b+216|0);a=a+252|0;ao(a,j,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(i);f[g+4>>2]=h;h=+_n(a);f[g+8>>2]=h;a=eo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0.0,i=0;e=zb;zb=zb+16|0;g=e;c=a+216|0;i=a+180|0;d=b+216|0;ao(c,i,d);a=a+252|0;ao(a,i,b+252|0);h=+_n(c);f[g>>2]=h;h=+_n(a);f[g+4>>2]=h;a=bo(g)|0;b=g+(a<<2)|0;if(+f[b>>2]==0.0)a=0;else{a=a*9|0;co(c,c+(a<<2)|0);co(d,d+(a<<2)|0);Yn(c,c,1.0/+u(+(+f[b>>2])));a=1}zb=e;return a|0}function Un(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=a+252|0;ao(d,a+216|0,b+252|0);c=+_n(d);if(c==0.0)a=0;else{Yn(d,d,1.0/+u(+c));a=1}return a|0}function Vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0.0;d=zb;zb=zb+384|0;e=d+336|0;c=d;g=+Wn(c,b,0);f[e>>2]=g;g=+Wn(c+36|0,b,1);f[e+4>>2]=g;g=+Wn(c+72|0,b,2);f[e+8>>2]=g;g=+Wn(c+108|0,b,3);f[e+12>>2]=g;g=+Wn(c+144|0,b,4);f[e+16>>2]=g;g=+Wn(c+180|0,b,5);f[e+20>>2]=g;g=+Wn(c+216|0,b,6);f[e+24>>2]=g;g=+Wn(c+252|0,b,7);f[e+28>>2]=g;g=+Wn(c+288|0,b,8);f[e+32>>2]=g;b=Xn(e)|0;if(+f[e+(b<<2)>>2]==0.0)b=0;else{Vm(a,c+(b*9<<2)|0);b=1}zb=d;return b|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,g=0;Yn(a,b,-+f[b+(c<<2)>>2]);g=a+(c<<2)|0;f[g>>2]=+f[g>>2]+1.0;Zn(a,b+36|0,-+f[b+(c+9<<2)>>2]);Zn(a,b+72|0,-+f[b+(c+18<<2)>>2]);Zn(a,b+108|0,-+f[b+(c+27<<2)>>2]);Zn(a,b+144|0,-+f[b+(c+36<<2)>>2]);Zn(a,b+180|0,-+f[b+(c+45<<2)>>2]);Zn(a,b+216|0,-+f[b+(c+54<<2)>>2]);Zn(a,b+252|0,-+f[b+(c+63<<2)>>2]);e=+_n(a);d=+u(+e);if(e==0.0)d=0.0;else Yn(a,a,1.0/d);return +d}function Xn(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;b=+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b;return (+f[a+32>>2]>+f[a+(b<<2)>>2]?8:b)|0}function Yn(a,b,c){a=a|0;b=b|0;c=+c;f[a>>2]=+f[b>>2]*c;f[a+4>>2]=+f[b+4>>2]*c;f[a+8>>2]=+f[b+8>>2]*c;f[a+12>>2]=+f[b+12>>2]*c;f[a+16>>2]=+f[b+16>>2]*c;f[a+20>>2]=+f[b+20>>2]*c;f[a+24>>2]=+f[b+24>>2]*c;f[a+28>>2]=+f[b+28>>2]*c;f[a+32>>2]=+f[b+32>>2]*c;return}function Zn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;f[a>>2]=+f[a>>2]+ +f[b>>2]*c;d=a+4|0;f[d>>2]=+f[d>>2]+ +f[b+4>>2]*c;d=a+8|0;f[d>>2]=+f[d>>2]+ +f[b+8>>2]*c;d=a+12|0;f[d>>2]=+f[d>>2]+ +f[b+12>>2]*c;d=a+16|0;f[d>>2]=+f[d>>2]+ +f[b+16>>2]*c;d=a+20|0;f[d>>2]=+f[d>>2]+ +f[b+20>>2]*c;d=a+24|0;f[d>>2]=+f[d>>2]+ +f[b+24>>2]*c;d=a+28|0;f[d>>2]=+f[d>>2]+ +f[b+28>>2]*c;a=a+32|0;f[a>>2]=+f[a>>2]+ +f[b+32>>2]*c;return}function _n(a){a=a|0;return +(+$n(a,a))}function $n(a,b){a=a|0;b=b|0;return +(+f[a>>2]*+f[b>>2]+ +f[a+4>>2]*+f[b+4>>2]+ +f[a+8>>2]*+f[b+8>>2]+ +f[a+12>>2]*+f[b+12>>2]+ +f[a+16>>2]*+f[b+16>>2]+ +f[a+20>>2]*+f[b+20>>2]+ +f[a+24>>2]*+f[b+24>>2]+ +f[a+28>>2]*+f[b+28>>2]+ +f[a+32>>2]*+f[b+32>>2])}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+$n(c,b);f[a>>2]=+f[a>>2]-d*+f[b>>2];c=a+4|0;f[c>>2]=+f[c>>2]-d*+f[b+4>>2];c=a+8|0;f[c>>2]=+f[c>>2]-d*+f[b+8>>2];c=a+12|0;f[c>>2]=+f[c>>2]-d*+f[b+12>>2];c=a+16|0;f[c>>2]=+f[c>>2]-d*+f[b+16>>2];c=a+20|0;f[c>>2]=+f[c>>2]-d*+f[b+20>>2];c=a+24|0;f[c>>2]=+f[c>>2]-d*+f[b+24>>2];c=a+28|0;f[c>>2]=+f[c>>2]-d*+f[b+28>>2];c=a+32|0;f[c>>2]=+f[c>>2]-d*+f[b+32>>2];return}function bo(a){a=a|0;return +f[a+4>>2]>+f[a>>2]|0}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a>>2]|0;f=a+4|0;c[a>>2]=c[b>>2];d=b+4|0;c[b>>2]=g;g=c[f>>2]|0;e=a+8|0;c[f>>2]=c[d>>2];f=b+8|0;c[d>>2]=g;d=c[e>>2]|0;g=a+12|0;c[e>>2]=c[f>>2];e=b+12|0;c[f>>2]=d;f=c[g>>2]|0;d=a+16|0;c[g>>2]=c[e>>2];g=b+16|0;c[e>>2]=f;e=c[d>>2]|0;f=a+20|0;c[d>>2]=c[g>>2];d=b+20|0;c[g>>2]=e;g=c[f>>2]|0;e=a+24|0;c[f>>2]=c[d>>2];f=b+24|0;c[d>>2]=g;d=c[e>>2]|0;g=a+28|0;c[e>>2]=c[f>>2];e=b+28|0;c[f>>2]=d;f=c[g>>2]|0;d=a+32|0;c[g>>2]=c[e>>2];b=b+32|0;c[e>>2]=f;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function eo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;return (+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b)|0}function fo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;return (+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b)|0}function go(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;return (+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b)|0}function ho(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;return (+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b)|0}function io(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;return (+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b)|0}function jo(a){a=a|0;var b=0;b=+f[a+4>>2]>+f[a>>2]&1;b=+f[a+8>>2]>+f[a+(b<<2)>>2]?2:b;b=+f[a+12>>2]>+f[a+(b<<2)>>2]?3:b;b=+f[a+16>>2]>+f[a+(b<<2)>>2]?4:b;b=+f[a+20>>2]>+f[a+(b<<2)>>2]?5:b;b=+f[a+24>>2]>+f[a+(b<<2)>>2]?6:b;return (+f[a+28>>2]>+f[a+(b<<2)>>2]?7:b)|0}function ko(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;f[a>>2]=-+f[b>>2];e=b+4|0;f[a+4>>2]=-+f[e>>2];f[a+8>>2]=-1.0;mo(a+12|0);f[a+24>>2]=+f[d>>2]*+f[b>>2];f[a+28>>2]=+f[d>>2]*+f[e>>2];c[a+32>>2]=c[d>>2];mo(a+36|0);f[a+48>>2]=-+f[b>>2];f[a+52>>2]=-+f[e>>2];f[a+56>>2]=-1.0;d=d+4|0;f[a+60>>2]=+f[d>>2]*+f[b>>2];f[a+64>>2]=+f[d>>2]*+f[e>>2];c[a+68>>2]=c[d>>2];return}function mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function no(a,b){a=a|0;b=b|0;var d=0;if((rj(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function oo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{po(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function po(a){a=a|0;f[a>>2]=0.0;f[a+4>>2]=0.0;return}function qo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=zb;zb=zb+16|0;j=k;i=a+88|0;n=a+84|0;h=a+52|0;m=(((g|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)%(c[h>>2]|0)|0;c[b>>2]=m;m=(((g-m|0)%(c[i>>2]|0)|0|0)%(c[n>>2]|0)|0|0)/(c[h>>2]|0)|0;c[d>>2]=m;m=g-(c[b>>2]|0)-(B(c[h>>2]|0,m)|0)|0;m=((m|0)%(c[i>>2]|0)|0|0)/(c[n>>2]|0)|0;c[e>>2]=m;l=B(c[h>>2]|0,c[d>>2]|0)|0;g=g-(c[b>>2]|0)-((B(c[n>>2]|0,m)|0)+l)|0;i=(g|0)/(c[i>>2]|0)|0;c[f>>2]=i;g=c[b>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,190)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[h>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,191)|0,35007)|0,32649)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[d>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,192)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+56>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,193)|0,35007)|0,32740)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}g=c[e>>2]|0;if((g|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,194)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>=(c[a+60>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,195)|0,35007)|0,32835)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=-1){n=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,196)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<(c[a+64>>2]|0)){zb=k;return}else{n=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,197)|0,35007)|0,32942)|0;IE(j,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(j,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(j);QE(n,m)|0;ME(n)|0;ua()}}function ro(a){a=a|0;return a+124|0}function so(a){a=a|0;return a+112|0}function to(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0;q=zb;zb=zb+16|0;p=q;l=+t(+(h-l));f[b>>2]=l;l=+t(+(i-m));f[d>>2]=l;l=+t(+(k-o));f[g>>2]=l;l=+t(+(j-n));l=+vn(l,+(c[a+60>>2]|0)-l);f[e>>2]=l;if(!(l>=0.0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,31935)|0,32155)|0,35e3)|0,333)|0,35007)|0,31976)|0;IE(p,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);g=XF(p,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(p);QE(q,g)|0;ME(q)|0;ua()}else{zb=q;return}}function uo(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){xo(a,b);oh(a,b)}return}function vo(a,b,c){a=a|0;b=+b;c=+c;f[a+8>>2]=b;f[a+12>>2]=c;return}function wo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function xo(a,b){a=a|0;b=b|0;var d=0;if((ph(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+48|0;j=t+8|0;i=t+32|0;h=t+28|0;k=t+24|0;p=t+20|0;q=t+16|0;r=t;s=a+8|0;if(!(c[s>>2]|0)){o=Xf(Xf(PE(Xf(Xf(Xf(56032,32010)|0,29190)|0,35e3)|0,405)|0,35007)|0,32045)|0;IE(j,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(j,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(j);QE(o,n)|0;ME(o)|0;ua()}c[a+100>>2]=0;l=a+72|0;m=a+76|0;c[m>>2]=c[l>>2];n=a+84|0;o=a+88|0;e=c[o>>2]|0;while(1){d=c[n>>2]|0;f=d;if((d|0)==(e|0))break;g=e-f|0;if((g|0)>8){e=e+-8|0;u=d;v=c[u>>2]|0;u=c[u+4>>2]|0;x=j;c[x>>2]=v;c[x+4>>2]=u;x=e;w=c[x+4>>2]|0;c[d>>2]=c[x>>2];c[d+4>>2]=w;d=e;c[d>>2]=v;c[d+4>>2]=u;Yl(j);c[k>>2]=f;c[p>>2]=e;c[q>>2]=f;c[h>>2]=c[k>>2];c[i>>2]=c[p>>2];c[j>>2]=c[q>>2];Ao(h,i,r,(g>>>3)+-1|0,j);e=c[o>>2]|0}d=0;while(1){if((d|0)==-1)break;x=d+-1|0;Yl(e+(x<<3)|0);d=x}e=e+-8|0;c[o>>2]=e}Bo(a,n,c[s>>2]|0,b);zb=t;return (c[m>>2]|0)-(c[l>>2]|0)>>2|0}function zo(a){a=a|0;return a+72|0}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=zb;zb=zb+16|0;l=m;j=c[f>>2]|0;k=c[a>>2]|0;b=j-k|0;i=j;h=j;if((e|0)>=2?(n=(e+-2|0)/2|0,(n|0)>=(b>>3|0)):0){b=b>>2|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;a=Oo(a,o)|0;b=a?g:b;d=a?o:d}if(!(Oo(d,i)|0)){o=c[j+4>>2]|0;i=l;c[i>>2]=c[j>>2];c[i+4>>2]=o;i=d;while(1){o=h;h=i;g=h;j=c[g+4>>2]|0;c[o>>2]=c[g>>2];c[o+4>>2]=j;c[f>>2]=i;if((n|0)<(b|0))break;b=b<<1|1;a=k+(b<<3)|0;d=a;g=b+1|0;if((g|0)<(e|0)){o=a+8|0;j=Oo(a,o)|0;b=j?g:b;d=j?o:d}if(Oo(d,l)|0)break;else i=d}e=l;f=c[e+4>>2]|0;o=i;c[o>>2]=c[e>>2];c[o+4>>2]=f;Yl(l)}}zb=m;return}function Bo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=zb;zb=zb+64|0;m=t+8|0;l=t+56|0;k=t+52|0;n=t+44|0;o=t+36|0;p=t+28|0;q=t;g=t+48|0;h=t+40|0;f=t+32|0;r=t+16|0;if(Co(d)|0){c[g>>2]=c[a+76>>2];s=Do(d)|0;c[h>>2]=c[s>>2];s=(Do(d)|0)+4|0;c[f>>2]=c[s>>2];c[k>>2]=c[g>>2];c[l>>2]=c[h>>2];c[m>>2]=c[f>>2];Eo(a+72|0,k,l,m)|0}else{c[r>>2]=0;h=r+4|0;c[h>>2]=0;c[r+8>>2]=0;Fo(d,r,b,e);f=0;while(1){g=c[r>>2]|0;if(f>>>0>=(c[h>>2]|0)-g>>2>>>0)break;Bo(a,b,c[g+(f<<2)>>2]|0,e);f=f+1|0}i=a+100|0;if((c[i>>2]|0)<(c[a+104>>2]|0)?(j=c[b>>2]|0,s=b+4|0,(j|0)!=(c[s>>2]|0)):0){d=Go(j)|0;f=c[b>>2]|0;g=c[s>>2]|0;h=g-f|0;if((h|0)>8){j=f;g=g+-8|0;u=j;v=c[u>>2]|0;u=c[u+4>>2]|0;x=m;c[x>>2]=v;c[x+4>>2]=u;x=g;w=c[x+4>>2]|0;c[j>>2]=c[x>>2];c[j+4>>2]=w;j=g;c[j>>2]=v;c[j+4>>2]=u;Yl(m);c[n>>2]=f;c[o>>2]=g;c[p>>2]=f;c[k>>2]=c[n>>2];c[l>>2]=c[o>>2];c[m>>2]=c[p>>2];Ao(k,l,q,(h>>>3)+-1|0,m);g=c[s>>2]|0}f=0;while(1){if((f|0)==-1)break;x=f+-1|0;Yl(g+(x<<3)|0);f=x}c[s>>2]=g+-8;c[i>>2]=(c[i>>2]|0)+1;Bo(a,b,d,e)}Ho(r)}zb=t;return}function Co(b){b=b|0;return (a[b+100>>0]|0)!=0|0}function Do(a){a=a|0;return a+116|0}function Eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+48|0;p=s+40|0;o=s+36|0;q=s+32|0;r=s+28|0;j=s+8|0;k=s+4|0;l=s;f=c[a>>2]|0;g=f;b=f+((c[b>>2]|0)-g>>2<<2)|0;d=c[d>>2]|0;f=c[e>>2]|0;n=f-d|0;m=n>>2;a:do if((n|0)>0){h=a+8|0;n=c[a+4>>2]|0;i=n;if((m|0)>((c[h>>2]|0)-i>>2|0)){e=(i-g>>2)+m|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{r=c[a>>2]|0;n=(c[h>>2]|0)-r|0;q=n>>1;ml(j,n>>2>>>0>>1>>>0?(q>>>0>>0?e:q):g,b-r>>2,a+8|0);c[k>>2]=d;c[l>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[l>>2];ap(j,o,p);b=bp(a,j,b)|0;ol(j);break}}g=i-b|0;h=g>>2;e=d+(h<<2)|0;if((m|0)>(h|0)){c[q>>2]=e;c[r>>2]=f;c[o>>2]=c[q>>2];c[p>>2]=c[r>>2];_o(a,o,p,m-h|0);if((g|0)>0)f=e;else break}$o(a,b,n,b+(m<<2)|0);e=b;while(1){if((d|0)==(f|0))break a;c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}}while(0);zb=s;return b|0}function Fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+48|0;n=t+8|0;m=t+36|0;o=t+32|0;p=t+28|0;q=t;r=t+16|0;s=a+104|0;Io(r,(c[a+108>>2]|0)-(c[s>>2]|0)>>2);l=r+4|0;a=-1;f=0;k=-1;while(1){if(f>>>0>=(c[l>>2]|0)-(c[r>>2]|0)>>3>>>0)break;i=yl((c[(c[s>>2]|0)+(f<<2)>>2]|0)+4|0,e)|0;Jo(n,c[(c[s>>2]|0)+(f<<2)>>2]|0,i);g=n;j=c[g+4>>2]|0;h=(c[r>>2]|0)+(f<<3)|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;Yl(n);h=i>>>0>>0;j=h?f:k;a=h?i:a;f=f+1|0;k=j}if((k|0)==-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32065)|0,29190)|0,35e3)|0,155)|0,35007)|0,32099)|0;IE(n,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(n,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(n);QE(j,i)|0;ME(j)|0;ua()}a=c[(c[s>>2]|0)+(k<<2)>>2]|0;c[n>>2]=a;i=b+4|0;f=c[i>>2]|0;j=b+8|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);g=d+4|0;h=d+8|0;e=0;while(1){a=c[r>>2]|0;if(e>>>0>=(c[l>>2]|0)-a>>3>>>0)break;do if((e|0)!=(k|0)){f=Lo(a+(e<<3)|0)|0;if((f|0)==(Lo((c[r>>2]|0)+(k<<3)|0)|0)){a=c[(c[s>>2]|0)+(e<<2)>>2]|0;c[n>>2]=a;f=c[i>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[f>>2]=a;c[i>>2]=(c[i>>2]|0)+4}else Ko(b,n);break}else{a=(c[r>>2]|0)+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){Mo(d,a);a=c[g>>2]|0}else{v=a;u=c[v+4>>2]|0;a=f;c[a>>2]=c[v>>2];c[a+4>>2]=u;a=(c[g>>2]|0)+8|0;c[g>>2]=a}v=c[d>>2]|0;c[o>>2]=v;c[p>>2]=a;c[m>>2]=c[o>>2];c[n>>2]=c[p>>2];No(m,n,q,a-v>>3);break}}while(0);e=e+1|0}Xl(r);zb=t;return}function Go(a){a=a|0;return c[a>>2]|0}function Ho(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Io(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Xo(a,b);Yo(a,b)}return}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=To(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Uo(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Vo(a,d);Wo(d);zb=h;return}}function Lo(a){a=a|0;return c[a+4>>2]|0}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=Po(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;Qo(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;Ro(a,d);So(d);zb=h;return}}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+16|0;i=j;if((e|0)>1?(g=(e+-2|0)/2|0,k=c[a>>2]|0,h=k+(g<<3)|0,f=(c[b>>2]|0)+-8|0,c[b>>2]=f,Oo(h,f)|0):0){a=f;e=c[a+4>>2]|0;d=i;c[d>>2]=c[a>>2];c[d+4>>2]=e;d=h;while(1){a=d;e=c[a+4>>2]|0;h=f;c[h>>2]=c[a>>2];c[h+4>>2]=e;c[b>>2]=d;if(!g)break;g=(g+-1|0)/2|0;f=k+(g<<3)|0;if(!(Oo(f,i)|0))break;else{h=d;d=f;f=h}}h=i;b=c[h+4>>2]|0;k=d;c[k>>2]=c[h>>2];c[k+4>>2]=b;Yl(i)}zb=j;return}function Oo(a,b){a=a|0;b=b|0;return (c[a+4>>2]|0)>>>0>(c[b+4>>2]|0)>>>0|0}function Po(a){a=a|0;return 536870911}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;h=d+-8|0;k=h;j=c[k+4>>2]|0;i=(c[g>>2]|0)+-8|0;c[i>>2]=c[k>>2];c[i+4>>2]=j;c[g>>2]=(c[g>>2]|0)+-8;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function So(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-8|0;c[d>>2]=e;Yl(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function To(a){a=a|0;return 1073741823}function Uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Wo(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Xo(a,b){a=a|0;b=b|0;var d=0;if((Po(a)|0)>>>0>>0)EO(a);if(b>>>0>536870911){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<3)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<3);return}}function Yo(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Zo(b);b=(c[d>>2]|0)+8|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Zo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[d>>2]|0;e=a+4|0;d=c[b>>2]|0;while(1){if((d|0)==(f|0))break;b=c[e>>2]|0;c[b>>2]=c[d>>2];c[e>>2]=b+4;d=d+4|0}return}function $o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+4|0;i=c[h>>2]|0;f=i-e|0;g=f>>2;a=b+(g<<2)|0;e=i;while(1){if(a>>>0>=d>>>0)break;c[e>>2]=c[a>>2];j=e+4|0;c[h>>2]=j;a=a+4|0;e=j}if(f|0)$O(i+(0-g<<2)|0,b|0,f|0)|0;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;d=a+8|0;a=c[b>>2]|0;while(1){if((a|0)==(e|0))break;f=c[d>>2]|0;c[f>>2]=c[a>>2];c[d>>2]=f+4;f=a+4|0;c[b>>2]=f;a=f}return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;j=c[i>>2]|0;f=c[a>>2]|0;h=d;g=h-f|0;e=j+(0-(g>>2)<<2)|0;c[i>>2]=e;if((g|0)>0)_O(e|0,f|0,g|0)|0;f=a+4|0;g=b+8|0;e=(c[f>>2]|0)-h|0;if((e|0)>0){_O(c[g>>2]|0,d|0,e|0)|0;c[g>>2]=(c[g>>2]|0)+(e>>>2<<2)}h=c[a>>2]|0;c[a>>2]=c[i>>2];c[i>>2]=h;h=c[f>>2]|0;c[f>>2]=c[g>>2];c[g>>2]=h;h=a+8|0;d=b+12|0;a=c[h>>2]|0;c[h>>2]=c[d>>2];c[d>>2]=a;c[b>>2]=c[i>>2];return j|0}function cp(a){a=a|0;return dp(c[c[a>>2]>>2]|0)|0}function dp(a){a=a|0;return c[a+24>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;c[e>>2]=b;b=mm((c[a>>2]|0)+4|0,e)|0;zb=d;return b|0}function fp(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;gp(d,c[c[a>>2]>>2]|0);a=gm(zk(c[d>>2]|0)|0)|0;Rj(d);zb=b;return a|0}function gp(a,b){a=a|0;b=b|0;c[a>>2]=c[b+64>>2];b=c[b+68>>2]|0;c[a+4>>2]=b;if(b|0){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1}return}function hp(a){a=a|0;return ip(c[c[a>>2]>>2]|0)|0}function ip(a){a=a|0;return a+12|0}function jp(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;d=b+108|0;e=b+20|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d>>2]=1065353216;f=b+112|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return}function kp(a){a=a|0;Xj(a+124|0);gh(a+112|0);lp(a+92|0);return}function lp(a){a=a|0;mp(a);return}function mp(a){a=a|0;var b=0;np(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function np(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function op(b,d,e,g,h,i,j,k,l){b=b|0;d=+d;e=+e;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;f[b+20>>2]=d;f[b+24>>2]=e;f[b+28>>2]=g;f[b+32>>2]=h;f[b+36>>2]=-1.0;f[b+40>>2]=1.0;c[b+52>>2]=i;c[b+56>>2]=j;c[b+60>>2]=k;c[b+64>>2]=l;l=B(j,i)|0;c[b+84>>2]=l;l=B(l,k)|0;c[b+88>>2]=l;f[b+44>>2]=10.0;f[b+48>>2]=.4342944622039795;a[b+16>>0]=(j|i|0)==0&1;pp(b+92|0);return}function pp(a){a=a|0;var b=0,d=0,e=0;d=a+12|0;if(c[d>>2]|0){e=a+8|0;np(a,c[e>>2]|0);c[e>>2]=0;e=c[a+4>>2]|0;b=0;while(1){if((b|0)==(e|0))break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+1|0}c[d>>2]=0}return}function qp(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=zb;zb=zb+16|0;p=t+12|0;q=t+8|0;r=t+4|0;s=t;pp(b+92|0);if(g|0){j=b+112|0;fh(j,g<<2);k=b+124|0;Vk(k,g);if(a[b+16>>0]|0)rp(b,d,e,g);l=b+68|0;m=b+72|0;n=b+76|0;o=b+80|0;h=0;i=0;while(1){if((i|0)>=(g|0))break;u=i<<2;v=d+(u<<2)|0;u=e+(u<<2)|0;sp(b,p,q,r,s,+f[v>>2],+f[v+4>>2],+f[v+8>>2],+f[v+12>>2],+f[u>>2],+f[u+4>>2],+f[u+8>>2],+f[u+12>>2]);if(tp(b,+f[p>>2],+f[q>>2],+f[r>>2],+f[s>>2])|0){v=(c[j>>2]|0)+(h<<2<<2)|0;c[v>>2]=c[l>>2];c[v+4>>2]=c[m>>2];c[v+8>>2]=c[n>>2];c[v+12>>2]=c[o>>2];c[(c[k>>2]|0)+(h<<2)>>2]=i;h=h+1|0}i=i+1|0}fh(j,h<<2);Vk(k,h)}zb=t;return}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;l=zb;zb=zb+16|0;g=l+12|0;k=l;i=a+4|0;j=Aj(c[a>>2]|0,c[i>>2]|0)|0;uo(k,e);if((e|0)<=0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33144)|0,33176)|0,35e3)|0,208)|0,35007)|0,33265)|0;IE(g,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(g,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(g);QE(m,n)|0;ME(m)|0;ua()}if((c[a>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33287)|0,33176)|0,35e3)|0,209)|0,35007)|0,33329)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}if((c[i>>2]|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,33352)|0,33176)|0,35e3)|0,210)|0,35007)|0,33395)|0;IE(g,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(g,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(g);QE(n,m)|0;ME(n)|0;ua()}h=+(j|0);g=0;while(1){if((g|0)==(e|0))break;n=g<<2;o=+Bp(+f[b+(n<<2)+12>>2],+f[d+(n<<2)+12>>2])*h;f[(c[k>>2]|0)+(g<<2)>>2]=o;g=g+1|0}n=c[k>>2]|0;o=+Dp(n,(c[k+4>>2]|0)-n>>2)*.25;n=Aj(5,~~+A(+((+f[a+24>>2]-+f[a+20>>2])/o)))|0;m=a+52|0;c[m>>2]=n;n=Aj(5,~~+A(+((+f[a+32>>2]-+f[a+28>>2])/o)))|0;c[a+56>>2]=n;n=B(c[m>>2]|0,n)|0;c[a+84>>2]=n;n=B(c[a+60>>2]|0,n)|0;c[a+88>>2]=n;gh(k);zb=l;return}function sp(a,b,d,e,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0,s=0,t=0;s=zb;zb=zb+32|0;q=s+16|0;r=s;n=j-n;f[e>>2]=n;j=n;if(!(j<=-3.141592653589793)){if(j>3.141592653589793){n=j+-6.283185307179586;p=5}}else{n=j+6.283185307179586;p=5}if((p|0)==5)f[e>>2]=n;if(!(n>-3.141592653589793)){p=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,468)|0,35007)|0,32407)|0;IE(q,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);t=XF(q,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(q);QE(p,t)|0;ME(p)|0;ua()}if(!(n<=3.141592653589793)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,469)|0,35007)|0,32407)|0;IE(q,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(q,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(q);QE(t,s)|0;ME(t)|0;ua()}else{n=+Bp(k,o);f[g>>2]=n;Cp(r,+f[e>>2],n);n=+z(+(+f[g>>2]));f[g>>2]=n*+f[a+48>>2];n=+f[r>>2];j=+f[r+4>>2];o=+f[r+8>>2];k=+f[r+12>>2];g=a+8|0;t=a+12|0;f[b>>2]=h-(n*l+j*m)+(n*+f[g>>2]+j*+f[t>>2]);f[d>>2]=i-(o*l+k*m)+(o*+f[g>>2]+k*+f[t>>2]);zb=s;return}}function tp(a,b,d,e,g){a=a|0;b=+b;d=+d;e=+e;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,u=0,v=0,w=0,x=0;x=zb;zb=zb+16|0;h=x;t=+f[a+20>>2];if((((((!(t>b)?(m=+f[a+24>>2],!(m<=b)):0)?(n=+f[a+28>>2],!(n>d)):0)?(o=+f[a+32>>2],!(o<=d)):0)?(p=e,!(p<=-3.141592653589793|p>3.141592653589793)):0)?(q=+f[a+36>>2],!(q>g)):0)?(r=+f[a+40>>2],!(r<=g)):0){if(!(t<=b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32121)|0,32155)|0,35e3)|0,360)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(m>b)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32257)|0,32155)|0,35e3)|0,361)|0,35007)|0,32242)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(n<=d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32290)|0,32155)|0,35e3)|0,362)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(o>d)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32339)|0,32155)|0,35e3)|0,363)|0,35007)|0,32324)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p>-3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32372)|0,32155)|0,35e3)|0,364)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(p<=3.141592653589793)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32426)|0,32155)|0,35e3)|0,365)|0,35007)|0,32407)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(q<=g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32461)|0,32155)|0,35e3)|0,366)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}if(!(r>g)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32522)|0,32155)|0,35e3)|0,367)|0,35007)|0,32503)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(h,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(h);QE(l,k)|0;ME(l)|0;ua()}h=a+68|0;i=a+72|0;l=a+76|0;j=a+80|0;up(a,h,i,l,j,b,d,e,g);h=~~+s(+(+f[h>>2]+-.5));i=~~+s(+(+f[i>>2]+-.5));l=~~+s(+(+f[l>>2]+-.5));j=~~+s(+(+f[j>>2]+-.5));k=c[a+60>>2]|0;l=(k+l|0)%(k|0)|0;if((((h|0)>=0?(u=h+1|0,!((i|0)<0?1:(u|0)>=(c[a+52>>2]|0))):0)?(v=i+1|0,!((j|0)<0?1:(v|0)>=(c[a+56>>2]|0))):0)?(w=j+1|0,(w|0)<(c[a+64>>2]|0)):0){k=(l+1|0)%(k|0)|0;wp(a,vp(a,h,i,l,j)|0,1);wp(a,vp(a,u,i,l,j)|0,1);wp(a,vp(a,u,v,l,j)|0,1);wp(a,vp(a,u,v,k,j)|0,1);wp(a,vp(a,u,v,k,w)|0,1);wp(a,vp(a,u,v,l,w)|0,1);wp(a,vp(a,u,i,k,j)|0,1);wp(a,vp(a,u,i,k,w)|0,1);wp(a,vp(a,u,i,l,w)|0,1);wp(a,vp(a,h,v,l,j)|0,1);wp(a,vp(a,h,v,k,j)|0,1);wp(a,vp(a,h,v,k,w)|0,1);wp(a,vp(a,h,v,l,w)|0,1);wp(a,vp(a,h,i,k,j)|0,1);wp(a,vp(a,h,i,k,w)|0,1);wp(a,vp(a,h,i,l,w)|0,1);h=1}else h=0}else h=0;zb=x;return h|0}function up(a,b,d,e,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=+h;i=+i;j=+j;k=+k;var l=0.0,m=0.0;l=+(c[a+52>>2]|0);m=+f[a+20>>2];h=+Bp(h-m,+f[a+24>>2]-m)*l;f[b>>2]=h;h=+(c[a+56>>2]|0);l=+f[a+28>>2];i=+Bp(i-l,+f[a+32>>2]-l)*h;f[d>>2]=i;f[e>>2]=(j+3.141592653589793)*.15915494309189535*+(c[a+60>>2]|0);j=+(c[a+64>>2]|0);i=+f[a+36>>2];k=+Bp(k-i,+f[a+40>>2]-i)*j;f[g>>2]=k;return}function vp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+16|0;h=k;if((b|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32616)|0,32155)|0,35e3)|0,165)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}g=c[a+52>>2]|0;if((g|0)<=(b|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32667)|0,32155)|0,35e3)|0,166)|0,35007)|0,32649)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}if((d|0)<=-1){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32707)|0,32155)|0,35e3)|0,167)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(h,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(h);QE(j,i)|0;ME(j)|0;ua()}i=c[a+56>>2]|0;if((i|0)<=(d|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,32758)|0,32155)|0,35e3)|0,168)|0,35007)|0,32740)|0;IE(h,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(j,l)|0;ME(j)|0;ua()}if((e|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32798)|0,32155)|0,35e3)|0,169)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);j=XF(h,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(h);QE(l,j)|0;ME(l)|0;ua()}j=c[a+60>>2]|0;if((j|0)<=(e|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,32857)|0,32155)|0,35e3)|0,170)|0,35007)|0,32835)|0;IE(h,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);m=XF(h,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(h);QE(l,m)|0;ME(l)|0;ua()}if((f|0)<=-1){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32905)|0,32155)|0,35e3)|0,171)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}if((c[a+64>>2]|0)<=(f|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,32964)|0,32155)|0,35e3)|0,172)|0,35007)|0,32942)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}m=(B(g,d)|0)+b|0;l=(B(c[a+84>>2]|0,e)|0)+m|0;a=l+(B(c[a+88>>2]|0,f)|0)|0;if((a|0)>((B(B(i,g)|0,(B(j,f)|0)+e|0)|0)+m|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,33012)|0,32155)|0,35e3)|0,176)|0,35007)|0,32597)|0;IE(h,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(h,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(h);QE(m,l)|0;ME(m)|0;ua()}else{zb=k;return a|0}return 0}function wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;e=s+8|0;n=s;if((b|0)<=-1){r=Xf(Xf(PE(Xf(Xf(Xf(56032,32563)|0,32155)|0,35e3)|0,290)|0,35007)|0,32597)|0;IE(e,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(e,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(e);QE(r,q)|0;ME(r)|0;ua()}r=a+92|0;c[e>>2]=b;g=xp(r,e)|0;if(!g){c[n>>2]=b;c[n+4>>2]=d;p=a+96|0;k=c[p>>2]|0;q=(k|0)==0;a:do if(!q){l=k+-1|0;m=(l&k|0)==0;if(!m)if(k>>>0>b>>>0)d=b;else d=(b>>>0)%(k>>>0)|0;else d=l&b;g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g)o=19;else do{g=c[g>>2]|0;if(!g){o=19;break a}h=c[g+4>>2]|0;if((h|0)!=(b|0)){if(!m){if(h>>>0>=k>>>0)h=(h>>>0)%(k>>>0)|0}else h=h&l;if((h|0)!=(d|0)){o=19;break a}}}while((c[g+8>>2]|0)!=(b|0))}else{d=0;o=19}while(0);if((o|0)==19){yp(e,r,b,n);l=a+104|0;i=+(((c[l>>2]|0)+1|0)>>>0);j=+f[a+108>>2];do if(q|j*+(k>>>0)>>0<3|(k+-1&k|0)!=0)&1;g=~~+A(+(i/j))>>>0;zp(r,d>>>0>>0?g:d);d=c[p>>2]|0;g=d+-1|0;if(!(g&d)){k=d;d=g&b;break}if(d>>>0>b>>>0){k=d;d=b}else{k=d;d=(b>>>0)%(d>>>0)|0}}while(0);g=c[(c[r>>2]|0)+(d<<2)>>2]|0;if(!g){h=a+100|0;c[c[e>>2]>>2]=c[h>>2];c[h>>2]=c[e>>2];c[(c[r>>2]|0)+(d<<2)>>2]=h;h=c[e>>2]|0;d=c[h>>2]|0;if(d){d=c[d+4>>2]|0;g=k+-1|0;if(g&k){if(d>>>0>=k>>>0)d=(d>>>0)%(k>>>0)|0}else d=d&g;c[(c[r>>2]|0)+(d<<2)>>2]=h}}else{c[c[e>>2]>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0}}else{r=g+12|0;c[r>>2]=(c[r>>2]|0)+d}zb=s;return}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function yp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=tB(16)|0;c[b>>2]=g;c[b+4>>2]=d+8;c[g+8>>2]=c[f>>2];c[g+12>>2]=c[f+4>>2];a[b+8>>0]=1;c[g+4>>2]=e;c[g>>2]=0;return}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Ap(a,b)}}else Ap(a,b);return}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Bp(a,b){a=+a;b=+b;return +(a/(b==0.0?1.0:b))}function Cp(a,b,c){a=a|0;b=+b;c=+c;var d=0.0;d=+w(+b)*c;c=+x(+b)*c;f[a>>2]=d;f[a+4>>2]=-c;f[a+8>>2]=c;f[a+12>>2]=d;return}function Dp(a,b){a=a|0;b=b|0;return +(+Ep(a,b,(b&1)+-1+((b|0)/2|0)|0))}function Ep(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0;r=zb;zb=zb+16|0;e=r;if((b|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33419)|0,33448)|0,35e3)|0,53)|0,35007)|0,33521)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}if((d|0)<=0){q=Xf(Xf(PE(Xf(Xf(Xf(56032,33540)|0,33448)|0,35e3)|0,54)|0,35007)|0,33569)|0;IE(e,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);p=XF(e,56736)|0;p=Ib[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;YF(e);QE(q,p)|0;ME(q)|0;ua()}p=d+-1|0;q=a+(p<<2)|0;m=b+-1|0;n=0;while(1){o=+f[q>>2];if((n|0)>=(m|0))break;e=n;b=m;do{while(1){i=a+(e<<2)|0;j=+f[i>>2];k=e+1|0;if(j>2];l=b+-1|0;if(o>2]=h;f[g>>2]=j;e=k;b=l}}while((e|0)<=(b|0));m=(e|0)<(d|0)?m:b;n=(b|0)<(p|0)?e:n}zb=r;return +o}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0,h=0;f[b>>2]=0.0;c[d>>2]=-1;a=a+100|0;e=0.0;while(1){a=c[a>>2]|0;if(!a)break;g=a;h=g+12|0;if(e<+((c[h>>2]|0)>>>0)){c[d>>2]=c[g+8>>2];e=+((c[h>>2]|0)>>>0);f[b>>2]=e}}return}function Gp(a){a=a|0;ko(a,1760,12);ko(a+48|0,1808,12);ko(a+96|0,1856,12);ko(a+144|0,1904,12);ko(a+192|0,1952,12);ko(a+240|0,2e3,12);f[a+288>>2]=.10000000149011612;f[a+292>>2]=.17499999701976776;f[a+296>>2]=.25;f[a+300>>2]=.32499998807907104;f[a+304>>2]=.4000000059604645;f[a+308>>2]=.4749999940395355;f[a+312>>2]=.550000011920929;f[a+316>>2]=7.0;return}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;fm(b,96);Ip(b,((c[e+4>>2]|0)-(c[e>>2]|0)|0)/20|0);Jp(b,d,e,a,a+48|0,a+96|0,a+144|0,a+192|0,a+240|0,+f[a+288>>2],+f[a+292>>2],+f[a+296>>2],+f[a+300>>2],+f[a+304>>2],+f[a+308>>2],+f[a+312>>2],+f[a+316>>2]);return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;f=e;g=B(c[b>>2]|0,d)|0;a[f>>0]=0;Wp(b+4|0,g,f);hm(b+16|0,d);zb=e;return}function Jp(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;x=z;if(!d){y=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,33619)|0,35e3)|0,537)|0,35007)|0,33688)|0;IE(x,y+(c[(c[y>>2]|0)+-12>>2]|0)|0);w=XF(x,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(x);QE(y,w)|0;ME(y)|0;ua()}w=Ak(b)|0;y=e+4|0;v=c[y>>2]|0;u=c[e>>2]|0;if((w|0)!=((v-u|0)/20|0|0)){w=Xf(Xf(PE(Xf(Xf(Xf(56032,33704)|0,33619)|0,35e3)|0,538)|0,35007)|0,33757)|0;IE(x,w+(c[(c[w>>2]|0)+-12>>2]|0)|0);t=XF(x,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(x);QE(w,t)|0;ME(w)|0;ua()}w=0;t=0;while(1){u=(v-u|0)/20|0;if(w>>>0>=u>>>0)break;v=Kp(b,t)|0;if(Lp(v,d,(c[e>>2]|0)+(w*20|0)|0,f,g,h,i,j,k,l,m,n,o,p,q,r,s)|0){u=(c[e>>2]|0)+(w*20|0)|0;v=Mp(b,t)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];a[v+16>>0]=a[u+16>>0]|0;t=t+1|0}w=w+1|0;u=c[e>>2]|0;v=c[y>>2]|0}if((t|0)==(u|0)){Ip(b,t);zb=z;return}else{z=Xf(Xf(PE(Xf(Xf(Xf(56032,33794)|0,33619)|0,35e3)|0,617)|0,35007)|0,33845)|0;IE(x,z+(c[(c[z>>2]|0)+-12>>2]|0)|0);k=XF(x,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(x);QE(z,k)|0;ME(z)|0;ua()}}function Kp(a,b){a=a|0;b=b|0;b=B(c[a>>2]|0,b)|0;return (c[a+4>>2]|0)+b|0}function Lp(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0;s=zb;zb=zb+160|0;r=s;if(Np(r,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)|0){Op(a,r);a=1}else a=0;zb=s;return a|0}function Mp(a,b){a=a|0;b=b|0;return (c[a+16>>2]|0)+(b*20|0)|0}function Np(a,b,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;t=zb;zb=zb+336|0;aa=t+288|0;y=t+240|0;D=t+192|0;I=t+144|0;N=t+96|0;S=t+48|0;X=t;v=t+328|0;u=t+324|0;x=+f[d+12>>2]*s;x=x<1.0?1.0:x;Qp(aa,+f[d>>2],+f[d+4>>2],+f[d+8>>2],x);w=+f[aa+8>>2];s=+f[aa+20>>2];Rp(y,aa,e);C=y+8|0;Rp(C,aa,e+8|0);B=y+16|0;Rp(B,aa,e+16|0);A=y+24|0;Rp(A,aa,e+24|0);z=y+32|0;Rp(z,aa,e+32|0);d=y+40|0;Rp(d,aa,e+40|0);Rp(D,aa,g);H=D+8|0;Rp(H,aa,g+8|0);G=D+16|0;Rp(G,aa,g+16|0);F=D+24|0;Rp(F,aa,g+24|0);E=D+32|0;Rp(E,aa,g+32|0);e=D+40|0;Rp(e,aa,g+40|0);Rp(I,aa,h);M=I+8|0;Rp(M,aa,h+8|0);L=I+16|0;Rp(L,aa,h+16|0);K=I+24|0;Rp(K,aa,h+24|0);J=I+32|0;Rp(J,aa,h+32|0);g=I+40|0;Rp(g,aa,h+40|0);Rp(N,aa,i);R=N+8|0;Rp(R,aa,i+8|0);Q=N+16|0;Rp(Q,aa,i+16|0);P=N+24|0;Rp(P,aa,i+24|0);O=N+32|0;Rp(O,aa,i+32|0);h=N+40|0;Rp(h,aa,i+40|0);Rp(S,aa,j);W=S+8|0;Rp(W,aa,j+8|0);V=S+16|0;Rp(V,aa,j+16|0);U=S+24|0;Rp(U,aa,j+24|0);T=S+32|0;Rp(T,aa,j+32|0);i=S+40|0;Rp(i,aa,j+40|0);Rp(X,aa,k);$=X+8|0;Rp($,aa,k+8|0);_=X+16|0;Rp(_,aa,k+16|0);Z=X+24|0;Rp(Z,aa,k+24|0);Y=X+32|0;Rp(Y,aa,k+32|0);j=X+40|0;Rp(j,aa,k+40|0);Sp(b,v,u,x*r);r=+Tp(b,+f[X>>2],+f[X+4>>2],c[v>>2]|0,c[u>>2]|0);f[a>>2]=r;r=+Tp(b,+f[$>>2],+f[X+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+4>>2]=r;r=+Tp(b,+f[_>>2],+f[X+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+8>>2]=r;r=+Tp(b,+f[Z>>2],+f[X+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+12>>2]=r;r=+Tp(b,+f[Y>>2],+f[X+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+16>>2]=r;r=+Tp(b,+f[j>>2],+f[X+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+20>>2]=r;Sp(b,v,u,x*q);r=+Tp(b,+f[S>>2],+f[S+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+24>>2]=r;r=+Tp(b,+f[W>>2],+f[S+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+28>>2]=r;r=+Tp(b,+f[V>>2],+f[S+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+32>>2]=r;r=+Tp(b,+f[U>>2],+f[S+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+36>>2]=r;r=+Tp(b,+f[T>>2],+f[S+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+40>>2]=r;r=+Tp(b,+f[i>>2],+f[S+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+44>>2]=r;Sp(b,v,u,x*p);r=+Tp(b,+f[N>>2],+f[N+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+48>>2]=r;r=+Tp(b,+f[R>>2],+f[N+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+52>>2]=r;r=+Tp(b,+f[Q>>2],+f[N+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+56>>2]=r;r=+Tp(b,+f[P>>2],+f[N+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+60>>2]=r;r=+Tp(b,+f[O>>2],+f[N+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+64>>2]=r;r=+Tp(b,+f[h>>2],+f[N+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+68>>2]=r;Sp(b,v,u,x*o);r=+Tp(b,+f[I>>2],+f[I+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+72>>2]=r;r=+Tp(b,+f[M>>2],+f[I+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+76>>2]=r;r=+Tp(b,+f[L>>2],+f[I+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+80>>2]=r;r=+Tp(b,+f[K>>2],+f[I+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+84>>2]=r;r=+Tp(b,+f[J>>2],+f[I+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+88>>2]=r;r=+Tp(b,+f[g>>2],+f[I+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+92>>2]=r;Sp(b,v,u,x*n);r=+Tp(b,+f[D>>2],+f[D+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+96>>2]=r;r=+Tp(b,+f[H>>2],+f[D+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+100>>2]=r;r=+Tp(b,+f[G>>2],+f[D+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+104>>2]=r;r=+Tp(b,+f[F>>2],+f[D+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+108>>2]=r;r=+Tp(b,+f[E>>2],+f[D+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+112>>2]=r;r=+Tp(b,+f[e>>2],+f[D+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+116>>2]=r;Sp(b,v,u,x*m);r=+Tp(b,+f[y>>2],+f[y+4>>2],c[v>>2]|0,c[u>>2]|0);f[a+120>>2]=r;r=+Tp(b,+f[C>>2],+f[y+12>>2],c[v>>2]|0,c[u>>2]|0);f[a+124>>2]=r;r=+Tp(b,+f[B>>2],+f[y+20>>2],c[v>>2]|0,c[u>>2]|0);f[a+128>>2]=r;r=+Tp(b,+f[A>>2],+f[y+28>>2],c[v>>2]|0,c[u>>2]|0);f[a+132>>2]=r;r=+Tp(b,+f[z>>2],+f[y+36>>2],c[v>>2]|0,c[u>>2]|0);f[a+136>>2]=r;r=+Tp(b,+f[d>>2],+f[y+44>>2],c[v>>2]|0,c[u>>2]|0);f[a+140>>2]=r;Sp(b,v,u,x*l);l=+Tp(b,w,s,c[v>>2]|0,c[u>>2]|0);f[a+144>>2]=l;zb=t;return 1}function Op(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;Il(a,84);c=0;g=0;i=36;j=35;k=36;while(1){if((c|0)==37)break;h=c+1|0;e=b+(c<<2)|0;c=h;d=g;while(1){if((d|0)==(k|0))break;Pp(a,d,+f[e>>2]<+f[b+(c<<2)>>2]&1);c=c+1|0;d=d+1|0}e=k+j|0;c=h;g=g+i|0;i=i+-1|0;j=j+-1|0;k=e}return}function Pp(b,c,e){b=b|0;c=c|0;e=e|0;b=b+((c|0)/8|0)|0;a[b>>0]=(e&255)<<(c&7)|(d[b>>0]|0);return}function Qp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var g=0.0;g=+w(+d)*e;e=+x(+d)*e;f[a>>2]=g;f[a+4>>2]=-e;f[a+8>>2]=b;f[a+12>>2]=e;f[a+16>>2]=g;f[a+20>>2]=c;f[a+24>>2]=0.0;f[a+28>>2]=0.0;f[a+32>>2]=1.0;return}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+4|0;f[a>>2]=+f[b+8>>2]+(+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[d>>2]);f[a+4>>2]=+f[b+20>>2]+(+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[d>>2]);return}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+16|0;l=m;g=~~+s(+(+Oi(e)));c[b>>2]=g;e=+z(+(e/+(1<>2]*e);c[d>>2]=g;j=a+20|0;if(((c[j>>2]|0)+-1|0)==(g|0)){c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=0;g=0}h=c[b>>2]|0;if((h|0)>=0){i=c[a+16>>2]|0;if((h|0)<(i|0))h=g;else{c[b>>2]=i+-1;g=(c[j>>2]|0)+-1|0;k=7}}else{c[b>>2]=0;g=0;k=7}if((k|0)==7){c[d>>2]=g;h=g}g=c[b>>2]|0;if((g|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,33865)|0,33900)|0,35e3)|0,268)|0,35007)|0,33993)|0;IE(l,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);b=XF(l,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(l);QE(k,b)|0;ME(k)|0;ua()}if((g|0)>=(c[a+16>>2]|0)){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34017)|0,33900)|0,35e3)|0,269)|0,35007)|0,34061)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<=-1){a=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,270)|0,35007)|0,34138)|0;IE(l,a+(c[(c[a>>2]|0)+-12>>2]|0)|0);k=XF(l,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(l);QE(a,k)|0;ME(a)|0;ua()}if((h|0)<(c[j>>2]|0)){zb=m;return}else{m=Xf(Xf(PE(Xf(Xf(Xf(56032,34161)|0,33900)|0,35e3)|0,271)|0,35007)|0,34212)|0;IE(l,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);a=XF(l,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(l);QE(m,a)|0;ME(m)|0;ua()}}function Tp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var g=0,h=0,i=0;g=zb;zb=zb+16|0;i=g+4|0;h=g;e=Lg(a,d,e)|0;mi(i,h,b,c,d);c=+Up(e,+f[i>>2],+f[h>>2]);zb=g;return +c}function Up(a,b,c){a=a|0;b=+b;c=+c;return +(+Vp(a,b,c))}function Vp(a,b,c){a=a|0;b=+b;c=+c;b=+Zh(b,0.0,+(((Ng(a)|0)+-2|0)>>>0));return +(+Ci(a,b,+Zh(c,0.0,+(((Og(a)|0)+-2|0)>>>0))))}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g|0;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+b}else Xp(a,b-f|0,d);return}function Xp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+32|0;h=k;i=b+8|0;j=b+4|0;f=c[j>>2]|0;do if(((c[i>>2]|0)-f|0)>>>0>>0){f=f-(c[b>>2]|0)+d|0;g=mg(b)|0;if(g>>>0>>0)EO(b);else{l=c[b>>2]|0;m=(c[i>>2]|0)-l|0;i=m<<1;ng(h,m>>>0>>1>>>0?(i>>>0>>0?f:i):g,(c[j>>2]|0)-l|0,b+8|0);Yp(h,d,e);og(b,h);pg(h);break}}else do{a[f>>0]=a[e>>0]|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;d=d+-1|0}while((d|0)!=0);while(0);zb=k;return}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;b=d;d=c[f>>2]|0;do{a[d>>0]=a[e>>0]|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Zp(a){a=a|0;var b=0,d=0,e=0;b=zb;zb=zb+272|0;e=b+256|0;d=b;Ta(e|0)|0;Ra(d|0,256,34263,Oa(e|0)|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,d,Yf(d)|0);zb=b;return}function _p(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;f=i;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];g=a+24|0;h=c[b+24>>2]|0;c[f>>2]=h;e=f+4|0;b=c[b+28>>2]|0;c[e>>2]=b;if(!b){d=e;b=0}else{d=b+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;b=c[e>>2]|0}c[f>>2]=c[g>>2];c[g>>2]=h;h=a+28|0;c[d>>2]=c[h>>2];c[h>>2]=b;aq(f);zb=i;return}function aq(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function bq(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;$p(a,b);return}function cq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=zb;zb=zb+32|0;i=l+16|0;j=l+8|0;k=l;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34281)|0,34314)|0,35e3)|0,127)|0,35007)|0,34386)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);m=XF(i,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(i);QE(h,m)|0;ME(h)|0;ua()}if(!e){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34407)|0,34314)|0,35e3)|0,128)|0,35007)|0,34441)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(f>>>0>>0){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34463)|0,34314)|0,35e3)|0,129)|0,35007)|0,34500)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if(!g){m=Xf(Xf(PE(Xf(Xf(Xf(56032,34545)|0,34314)|0,35e3)|0,130)|0,35007)|0,34581)|0;IE(i,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(m,h)|0;ME(m)|0;ua()}if((f|0)<0)f=B(B(g,d)|0,dq(b)|0)|0;c[a+12>>2]=f;f=B(f,e)|0;h=a+20|0;if((c[h>>2]|0)!=(f|0)?(m=a+24|0,o=uB(f)|0,c[k>>2]=0,c[i>>2]=c[k>>2],eq(j,o,i),o=c[j>>2]|0,c[j>>2]=c[m>>2],c[m>>2]=o,o=j+4|0,k=a+28|0,n=c[o>>2]|0,c[o>>2]=c[k>>2],c[k>>2]=n,aq(j),(c[m>>2]|0)==0):0){o=Xf(Xf(PE(Xf(Xf(Xf(56032,34615)|0,34314)|0,35e3)|0,149)|0,35007)|0,34650)|0;IE(i,o+(c[(c[o>>2]|0)+-12>>2]|0)|0);n=XF(i,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(i);QE(o,n)|0;ME(o)|0;ua()}c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+16>>2]=g;c[h>>2]=f;zb=l;return}function dq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;switch(a|0){case 1:break;case 2:{a=4;break}default:{d=O(16)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,34774,Yf(34774)|0);mj(d,b);Q(d|0,13208,5)}}zb=d;return a|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15768;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;fq(a,e);zb=d;return}function fq(a,b){a=a|0;b=b|0;return}function gq(a){a=a|0;ZN(a);SA(a);return}function hq(a){a=a|0;SA(c[a+12>>2]|0);return}function iq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34671?a+12|0:0)|0}function jq(a){a=a|0;Pf(a,16);return}function kq(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=zb;zb=zb+16|0;k=j+8|0;l=j+4|0;m=j;c[b>>2]=e;c[b+4>>2]=f;c[b+8>>2]=g;c[b+16>>2]=i;g=B(h,g)|0;c[b+20>>2]=g;c[m>>2]=0;a[l>>0]=a[j+12>>0]|0;c[k>>2]=c[m>>2];lq(b+24|0,d,l,k);if((h|0)<0)h=B(B(i,f)|0,dq(e)|0)|0;c[b+12>>2]=h;zb=j;return}function lq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=zb;zb=zb+16|0;d=e;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15796;c[f+12>>2]=b;c[a+4>>2]=f;c[d>>2]=b;c[d+4>>2]=b;fq(a,d);zb=e;return}function mq(a,b){a=a|0;b=b|0;return}function nq(a){a=a|0;ZN(a);SA(a);return}function oq(a){a=a|0;a=a+12|0;mq(a,c[a>>2]|0);return}function pq(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==34793?a+12|0:0)|0}function qq(a){a=a|0;Pf(a,16);return}function rq(a){a=a|0;aq(a+24|0);return}function sq(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+4|0;e=0;while(1){g=c[a>>2]|0;if(e>>>0>=(c[f>>2]|0)-g>>3>>>0)break;g=c[g+(e<<3)>>2]|0;Wb[c[(c[g>>2]|0)+8>>2]&3](g,b,d);e=e+1|0}return}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=zb;zb=zb+48|0;i=f;h=f+28|0;g=f+16|0;c[i>>2]=e;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;gO(g,d,Yf(d)|0);vq(h,g,i);tq(a,b,h);jO(h);jO(g);zb=f;return}function vq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+2048|0;g=f;Jx(g,2048,(a[d+11>>0]|0)<0?c[d>>2]|0:d,e)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;gO(b,g,Yf(g)|0);zb=f;return}function wq(a){a=a|0;g[a>>3]=-1.0;g[a+8>>3]=-1.0;return}function xq(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;Ka(d|0,0)|0;g[a>>3]=+(c[d+4>>2]|0)*1.0e-06+ +(c[d>>2]|0);zb=b;return}function yq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;if(!(+g[a>>3]>=0.0)){d=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,67)|0,35007)|0,35010)|0;IE(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);a=XF(b,56736)|0;a=Ib[c[(c[a>>2]|0)+28>>2]&63](a,10)|0;YF(b);QE(d,a)|0;ME(d)|0;ua()}else{Ka(b|0,0)|0;g[a+8>>3]=+(c[b+4>>2]|0)*1.0e-06+ +(c[b>>2]|0);zb=d;return}}function zq(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,h=0,i=0;f=zb;zb=zb+16|0;d=f;e=+g[a>>3];if(!(e>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34888)|0,34927)|0,35e3)|0,80)|0,35007)|0,35010)|0;IE(d,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(h,i)|0;ME(h)|0;ua()}b=+g[a+8>>3];if(!(b>=0.0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,35037)|0,34927)|0,35e3)|0,81)|0,35007)|0,35075)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);h=XF(d,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(d);QE(i,h)|0;ME(i)|0;ua()}else{zb=f;return +(b-e)}return +(0.0)}function Aq(a){a=a|0;return +(+zq(a)*1.0e3)}function Bq(a,b){a=a|0;b=b|0;var d=0;wq(a);d=a+16|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;gO(d,b,Yf(b)|0);xq(a);return}function Cq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=zb;zb=zb+48|0;j=k;d=k+24|0;yq(b);f=yk()|0;Zp(d);h=(a[d+11>>0]|0)<0?c[d>>2]|0:d;i=b+16|0;if((a[i+11>>0]|0)<0)e=c[i>>2]|0;else e=i;l=+Aq(b);c[j>>2]=35129;c[j+4>>2]=h;c[j+8>>2]=35137;c[j+12>>2]=e;g[j+16>>3]=l;uq(f,8,35102,j);jO(d);jO(i);zb=k;return}function Dq(){Eq();Fq();Gq();return}function Eq(){c[13871]=0;c[13872]=0;c[13873]=0;c[13874]=0;c[13875]=1065353216;return}function Fq(){c[13876]=0;c[13877]=0;c[13878]=0;c[13879]=0;c[13880]=1065353216;return}function Gq(){Hq(0);return}function Hq(a){a=a|0;var b=0;a=zb;zb=zb+16|0;b=a;Jq(35173,26);Lq(35179,67);Lq(35188,68);Oq(35197,20);Oq(35208,21);Oq(35224,22);Sq(35238,23);Lq(35256,69);Vq(35276,70);Jq(35288,27);Sq(35305,24);Jq(35325,28);Jq(35343,29);Sq(35365,25);Sq(35388,26);Lq(35417,71);Lq(35430,72);Lq(35443,73);Jq(35459,30);Sq(35478,27);Sq(35488,28);Sq(35501,29);Lq(35514,74);Lq(35527,75);kr(35546,114);mr(35558,1);or(35570,1);qr(35593,1);or(35616,2);qr(35638,2);ur(35660,40);Lq(35677,76);ur(35694,41);Lq(35707,77);ur(35720,42);Lq(35744,78);Br(35768,3);qr(35781,3);ur(35794,43);Lq(35812,79);ur(35830,44);Lq(35846,80);ur(35862,45);Lq(35879,81);Jr(35896,15816);Jr(35925,15820);Jr(35953,15824);c[b>>2]=0;Jr(35986,b);c[b>>2]=1;Jr(36003,b);c[b>>2]=0;Jr(36019,b);c[b>>2]=0;Jr(36041,b);c[b>>2]=1;Jr(36066,b);c[b>>2]=1;Jr(36091,b);c[b>>2]=100;Jr(36116,b);c[b>>2]=0;Jr(36143,b);c[b>>2]=1;Jr(36169,b);c[b>>2]=0;Jr(36195,b);c[b>>2]=0;Jr(36222,b);c[b>>2]=1;Jr(36249,b);c[b>>2]=2;Jr(36275,b);c[b>>2]=3;Jr(36300,b);c[b>>2]=4;Jr(36338,b);c[b>>2]=0;Jr(36375,b);c[b>>2]=0;Jr(36409,b);c[b>>2]=1;Jr(36433,b);c[b>>2]=2;Jr(36459,b);c[b>>2]=2;Jr(36486,b);c[b>>2]=5;Jr(36520,b);g[b>>3]=.5;Kr(36538,b);c[b>>2]=0;Jr(36559,b);c[b>>2]=1;Jr(36578,b);c[b>>2]=2;Jr(36596,b);c[b>>2]=3;Jr(36614,b);c[b>>2]=4;Jr(36633,b);c[b>>2]=3;Jr(36655,b);c[b>>2]=515;Jr(36674,b);c[b>>2]=259;Jr(36703,b);c[b>>2]=4;Jr(36731,b);c[b>>2]=772;Jr(36750,b);c[b>>2]=1028;Jr(36780,b);c[b>>2]=0;Jr(36810,b);c[b>>2]=1;Jr(36841,b);c[b>>2]=2;Jr(36877,b);c[b>>2]=3;Jr(36911,b);c[b>>2]=0;Jr(36949,b);c[b>>2]=1;Jr(36982,b);c[b>>2]=2;Jr(37029,b);c[b>>2]=3;Jr(37071,b);c[b>>2]=4;Jr(37114,b);c[b>>2]=5;Jr(37166,b);c[b>>2]=6;Jr(37217,b);c[b>>2]=7;Jr(37262,b);c[b>>2]=8;Jr(37301,b);c[b>>2]=9;Jr(37346,b);zb=a;return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+16|0;h=i+8|0;f=i+12|0;g=c[13882]|0;c[13882]=g+1;c[f>>2]=g;g=Ur(55484,f)|0;c[g>>2]=c[f>>2];c[g+208>>2]=a;c[g+212>>2]=b;j=B(a<<2,b)|0;a=g+200|0;c[a>>2]=j;j=FO(j)|0;b=g+196|0;c[b>>2]=j;j=FO((c[a>>2]|0)/4|0)|0;e=g+204|0;c[e>>2]=j;j=hd()|0;c[g+220>>2]=j;if(!j)Ue(0,3,41354,i);yt(c[f>>2]|0,d)|0;c[h>>2]=c[a>>2];Ue(0,1,41391,h);za(0,c[g>>2]|0,c[b>>2]|0,c[a>>2]|0,g+344|0,51360,c[e>>2]|0)|0;zb=i;return c[g>>2]|0}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=tt(d)|0;d=ut(d)|0;ka(a|0,e|0,d|0,vt()|0,8,b|0);zb=c;return}function Kq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;d=g;c[d>>2]=a;if(!(Tr(55484,d)|0))a=-1;else{f=Ur(55484,d)|0;a=f+196|0;b=c[a>>2]|0;if(b|0){GO(b);c[a>>2]=0;c[f+200>>2]=0}pt(f);jd(c[f+220>>2]|0)|0;qt(55484,d)|0;b=f+328|0;d=f+332|0;a=0;while(1){e=c[b>>2]|0;if(a>>>0>=(c[d>>2]|0)-e>>3>>>0)break;Oe(c[e+(a<<3)+4>>2]|0)|0;a=a+1|0}Zr(b);SA(b);Yr(f);SA(f);a=0}zb=g;return a|0}function Lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=lt(d)|0;d=mt(d)|0;ka(a|0,e|0,d|0,Ns()|0,30,b|0);zb=c;return}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;b=g+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{b=Ur(55484,b)|0;e=b+192|0;a=At(c[e>>2]|0,c[b+472>>2]|0)|0;d=b+236|0;c[d>>2]=a;if(!a){Ue(0,3,41323,f);b=b+232|0;Lf(b)|0;a=c[d>>2]|0}else b=b+232|0;Ye(a,5.0)|0;Xe(c[d>>2]|0,.5)|0;_e(c[d>>2]|0,16)|0;Ze(c[d>>2]|0,6)|0;$e(c[d>>2]|0,6)|0;af(c[d>>2]|0,6)|0;a=kt(c[e>>2]|0)|0;c[b>>2]=a;a=0}zb=g;return a|0}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;e=g+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)d=c[d>>2]|0;b=e+340|0;if(!(jt(d,b,e+220|0)|0)){Ue(0,3,41233,f);b=-1;break}else{b=c[b>>2]|0;break}}else b=-1;while(0);zb=g;return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ft(d)|0;d=gt(d)|0;ka(a|0,e|0,d|0,Xs()|0,31,b|0);zb=c;return}function Pq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j+8|0;e=j+12|0;i=j;c[e>>2]=b;do if(!(Tr(55484,e)|0))b=-1;else{h=Ur(55484,e)|0;if((a[d+11>>0]|0)<0)b=c[d>>2]|0;else b=d;f=h+224|0;if(!($s(b,c[h+216>>2]|0,h+220|0,f)|0)){Ue(0,3,41157,g);b=-1;break}b=h+328|0;e=h+332|0;d=c[e>>2]|0;c[i>>2]=d-(c[b>>2]|0)>>3;c[i+4>>2]=c[f>>2];if((c[h+336>>2]|0)==(d|0))at(b,i);else{f=i;g=c[f+4>>2]|0;h=d;c[h>>2]=c[f>>2];c[h+4>>2]=g;c[e>>2]=(c[e>>2]|0)+8}b=c[i>>2]|0}while(0);zb=j;return b|0}function Qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;e=i+4|0;c[e>>2]=b;do if(Tr(55484,e)|0){f=Ur(55484,e)|0;g=f+244|0;b=c[g>>2]|0;if((a[d+11>>0]|0)<0)e=c[d>>2]|0;else e=d;if(!(_s(f,b,e)|0)){Ue(0,3,40842,h);b=-1;break}else{c[g>>2]=(c[g>>2]|0)+1;break}}else b=-1;while(0);zb=i;return b|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;e=g;c[e>>2]=a;if(((Tr(55484,e)|0)!=0?(f=Ur(55484,e)|0,(b|0)>=0):0)?(d=c[f+328>>2]|0,(c[f+332>>2]|0)-d>>3>>>0>b>>>0):0)a=c[(c[d+(b<<3)+4>>2]|0)+4>>2]|0;else a=-1;zb=g;return a|0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Vs(d)|0;d=Ws(d)|0;ka(a|0,e|0,d|0,Xs()|0,32,b|0);zb=c;return}function Tq(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=Ur(55484,b)|0;a=(c[a+332>>2]|0)-(c[a+328>>2]|0)>>3}zb=d;return a|0}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+208|0;h=i+192|0;g=i+184|0;d=i;e=b+11|0;if((a[e>>0]|0)<0)f=c[b>>2]|0;else f=b;if((ke(f,1,d,g)|0)<0){if((a[e>>0]|0)<0)b=c[b>>2]|0;c[h>>2]=b;Ue(0,3,40778,h);b=-1}else{b=c[13881]|0;c[13881]=b+1;c[g>>2]=b;_O(Rs(55504,g)|0,d|0,184)|0;b=c[g>>2]|0}zb=i;return b|0}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Ls(d)|0;d=Ms(d)|0;ka(a|0,e|0,d|0,Ns()|0,31,b|0);zb=c;return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=(Ur(55484,e)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){c[((b|0)<0?54536:a+48+(b<<8)|0)+16>>2]=d;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;n=+g[6420];g[a+168>>3]=n;j=+g[6421];g[a+176>>3]=j;m=+g[6422];g[a+184>>3]=m;i=+g[6423];g[a+192>>3]=i;l=+g[6424];g[a+200>>3]=l;h=+g[6425];g[a+208>>3]=h;k=+g[6426];g[a+216>>3]=k;f=+g[6427];g[a+224>>3]=f;g[a+56>>3]=(n+m+l+k)*.25;g[a+64>>3]=(j+i+h+f)*.25;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Uc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){a=Ur(55484,e)|0;e=c[a+216>>2]|0;if((c[e+44>>2]|0)>(b|0)){+Vc(c[a+228>>2]|0,(b|0)<0?54536:e+48+(b<<8)|0,51360,+(d|0),51360);a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function _q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Pe(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function $q(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){d=Ur(55484,d)|0;a=c[d+328>>2]|0;if((b|0)<0?1:(c[d+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}else{a=c[a+(b<<3)+4>>2]|0;b=c[d+216>>2]|0;+Re(c[d+228>>2]|0,b+48|0,c[b+44>>2]|0,a);Ks(a+8|0,51360);a=0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function ar(a){a=a|0;var b=0,d=0,e=0,f=0;f=zb;zb=zb+48|0;b=f+40|0;e=f;c[b>>2]=a;if(!(Tr(55484,b)|0))a=c[3954]|0;else{a=Ur(55484,b)|0;b=e;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[e>>2]=c[a+196>>2];c[e+16>>2]=1;c[e+12>>2]=c[a+204>>2];a=Mc(c[a+216>>2]|0,e)|0}zb=f;return a|0}function br(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=15816;else{a=(Ur(55484,b)|0)+216|0;a=(c[a>>2]|0)+44|0}zb=d;return c[a>>2]|0}function cr(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(Tr(55484,b)|0)Ur(55484,b)|0;zb=d;return -1}function dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=zb;zb=zb+16|0;e=f;c[e>>2]=a;do if(Tr(55484,e)|0){e=Ur(55484,e)|0;a=c[e+328>>2]|0;if((b|0)<0?1:(c[e+332>>2]|0)-a>>3>>>0<=b>>>0){a=c[3955]|0;break}a=c[a+(b<<3)+4>>2]|0;if((d|0)<0?1:(c[a+4>>2]|0)<=(d|0)){a=c[3956]|0;break}else{a=c[a>>2]|0;Ks(a+(d*320|0)+16|0,51360);ya(1,c[a+(d*320|0)+304>>2]|0,c[a+(d*320|0)>>2]|0,c[a+(d*320|0)+4>>2]|0,+(+g[a+(d*320|0)+8>>3]))|0;a=0;break}}else a=c[3954]|0;while(0);zb=f;return a|0}function er(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;do if(Tr(55484,d)|0){a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if((c[a+44>>2]|0)>(b|0)){a=(b|0)<0?54536:a+48+(b<<8)|0;Aa(2,c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0,+(+g[a+32>>3]),+(+g[a+40>>3]),+(+g[a+48>>3]),+(+g[a+56>>3]),+(+g[a+64>>3]),+(+g[a+72>>3]),+(+g[a+80>>3]),+(+g[a+88>>3]),+(+g[a+96>>3]),+(+g[a+104>>3]),+(+g[a+112>>3]),+(+g[a+120>>3]),+(+g[a+128>>3]),+(+g[a+136>>3]),+(+g[a+144>>3]),+(+g[a+152>>3]),+(+g[a+160>>3]),+(+g[a+168>>3]),+(+g[a+176>>3]),+(+g[a+184>>3]),+(+g[a+192>>3]),+(+g[a+200>>3]),+(+g[a+208>>3]),+(+g[a+216>>3]),+(+g[a+224>>3]),c[a+240>>2]|0)|0;a=0;break}else{a=c[3956]|0;break}}else a=c[3954]|0;while(0);zb=e;return a|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=zb;zb=zb+80|0;q=r+56|0;p=r+48|0;d=r+72|0;i=r+76|0;e=r+68|0;n=r;o=r+64|0;c[d>>2]=a;do if(!(Tr(55484,d)|0))a=c[3954]|0;else{k=Ur(55484,d)|0;l=k+244|0;if((c[l>>2]|0)<=(b|0)){a=c[3956]|0;break}c[i>>2]=0;c[e>>2]=-1;f[o>>2]=-1.0;m=k+240|0;a=c[m>>2]|0;do if((a|0)==-2){j=k+232|0;yg(c[j>>2]|0,c[k+204>>2]|0)|0;Ag(c[j>>2]|0,i,e)|0;e=c[e>>2]|0;j=c[i>>2]|0;a=-1;d=0;while(1){if((d|0)>=(e|0))break;do if((c[j+(d*68|0)+48>>2]|0)==(b|0)?(c[j+(d*68|0)+60>>2]|0)==0:0){if((a|0)==-1)a=c[j+(d*68|0)+52>>2]|0;else{g=+f[j+(d*68|0)+52>>2];if(!(+f[o>>2]>g))break;a=(f[h>>2]=g,c[h>>2]|0)}c[o>>2]=a;a=d}while(0);d=d+1|0}if((a|0)<=-1){c[m>>2]=-2;d=30;break}i=c[j+48>>2]|0;c[m>>2]=i;e=0;while(1){if((e|0)==3)break;d=0;while(1){if((d|0)==4)break;c[n+(e<<4)+(d<<2)>>2]=c[j+(a*68|0)+(e<<4)+(d<<2)>>2];d=d+1|0}e=e+1|0}vf(c[k+248+(i<<2)>>2]|0,n)|0;a=c[m>>2]|0;d=25}else d=25;while(0);do if((d|0)==25)if((a|0)>-1){a=Ct(c[k+236>>2]|0,c[k+248+(a<<2)>>2]|0,c[k+196>>2]|0,n,o)|0;if((a|0)<0){c[p>>2]=a;Ue(0,1,37701,p);c[m>>2]=-2;d=30;break}p=(c[l>>2]|0)+-1|0;c[q>>2]=c[k+248+(c[m>>2]<<2)>>2];c[q+4>>2]=p;Ue(0,1,37720,q);if((c[m>>2]|0)>-1)xa(3,b|0,+(+f[o>>2]),+(+f[n>>2]),+(+f[n+4>>2]),+(+f[n+8>>2]),+(+f[n+12>>2]),+(+f[n+16>>2]),+(+f[n+20>>2]),+(+f[n+24>>2]),+(+f[n+28>>2]),+(+f[n+32>>2]),+(+f[n+36>>2]),+(+f[n+40>>2]),+(+f[n+44>>2]))|0;else d=30}else d=30;while(0);if((d|0)==30)wa(4,b|0)|0;a=0}while(0);zb=r;return a|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(!(Tr(55484,d)|0))b=0;else{a=(Ur(55484,d)|0)+216|0;d=(b|0)!=0;tc(c[a>>2]|0,d&1)|0;c[e>>2]=d?37670:37674;Ue(0,1,37679,e)}zb=f;return b|0}function hr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;xc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function ir(a){a=a|0;var b=0,d=0;d=zb;zb=zb+16|0;b=d;c[b>>2]=a;if(!(Tr(55484,b)|0))a=0;else{a=(Ur(55484,b)|0)+216|0;a=c[(c[a>>2]|0)+4834148>>2]|0}zb=d;return a|0}function jr(a){a=a|0;c[3916]=a;return}function kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=Fs(d)|0;d=Gs(d)|0;ka(a|0,e|0,d|0,Hs()|0,46,b|0);zb=c;return}function lr(){return c[3916]|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=As(d)|0;d=Bs(d)|0;ka(a|0,e|0,d|0,Cs()|0,82,b|0);zb=c;return}function nr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+312|0;g[d>>3]=b}zb=e;return}function or(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=us(d)|0;d=vs(d)|0;ka(a|0,e|0,d|0,ws()|0,1,b|0);zb=c;return}function pr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+312|0;b=+g[d>>3]}zb=e;return +b}function qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ps(d)|0;d=qs(d)|0;ka(a|0,e|0,d|0,rs()|0,1,b|0);zb=c;return}function rr(a,b){a=a|0;b=+b;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+320|0;g[d>>3]=b}zb=e;return}function sr(a){a=a|0;var b=0.0,d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{d=(Ur(55484,d)|0)+320|0;b=+g[d>>3]}zb=e;return +b}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(uc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37628,e)}zb=f;return}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ks(d)|0;d=ls(d)|0;ka(a|0,e|0,d|0,ms()|0,2,b|0);zb=c;return}function vr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Cc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=zb;zb=zb+16|0;f=g;d=g+4|0;c[d>>2]=a;if((Tr(55484,d)|0?(e=Ur(55484,d)|0,b>>>0<=255):0)?(Ac(c[e+216>>2]|0,b)|0)==0:0){c[f>>2]=b;Ue(0,1,37602,f)}zb=g;return}function xr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Bc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Fc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37567,e)}zb=f;return}function zr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ic(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Ar(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0,j=0;j=zb;zb=zb+16|0;i=j;e=j+8|0;c[e>>2]=a;if(((Tr(55484,e)|0?(f=Ur(55484,e)|0,!(b<=0.0|b>=1.0)):0)?(h=b,d=c[f+216>>2]|0,d|0):0)?(Jc(d,h)|0)==0:0){g[i>>3]=h;Ue(0,1,37536,i)}zb=j;return}function Br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=zb;zb=zb+16|0;d=c;e=ds(d)|0;d=es(d)|0;ka(a|0,e|0,d|0,fs()|0,2,b|0);zb=c;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+8|0;e=f;c[d>>2]=a;if(!(Tr(55484,d)|0))b=-1.0;else{a=(Ur(55484,d)|0)+216|0;a=c[a>>2]|0;if(!a)b=-1.0;else{d=(Kc(a,e)|0)==0;b=d?+g[e>>3]:-1.0}}zb=f;return +b}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;e=zb;zb=zb+16|0;d=e;c[d>>2]=a;if(Tr(55484,d)|0){d=(Ur(55484,d)|0)+216|0;Gc(c[d>>2]|0,b)|0}zb=e;return}function Er(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;Hc(c[a>>2]|0,d)|0;a=c[d>>2]|0}zb=e;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(yc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37506,e)}zb=f;return}function Gr(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(zc(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;e=f;d=f+4|0;c[d>>2]=a;if(Tr(55484,d)|0?(d=(Ur(55484,d)|0)+216|0,(Dc(c[d>>2]|0,b)|0)==0):0){c[e>>2]=b;Ue(0,1,37477,e)}zb=f;return}function Ir(a){a=a|0;var b=0,d=0,e=0;e=zb;zb=zb+16|0;b=e;d=e+4|0;c[b>>2]=a;if(!(Tr(55484,b)|0))a=-1;else{a=(Ur(55484,b)|0)+216|0;a=(Ec(c[a>>2]|0,d)|0)==0;a=a?c[d>>2]|0:-1}zb=e;return a|0}function Jr(a,b){a=a|0;b=b|0;var c=0;c=Pr()|0;ha(a|0,c|0,+(+Rr(Qr(b)|0)));return}function Kr(a,b){a=a|0;b=b|0;var c=0;c=Lr()|0;ha(a|0,c|0,+(+Nr(+Mr(b))));return}function Lr(){return Or()|0}function Mr(a){a=a|0;return +(+g[a>>3])}function Nr(a){a=+a;return +a}function Or(){return 14120}function Pr(){return Sr()|0}function Qr(a){a=a|0;return c[a>>2]|0}function Rr(a){a=a|0;return +(+(a|0))}function Sr(){return 14080}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Vr(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Wr(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(496)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];g=h+16|0;aP(g|0,0,480)|0;cs(g);a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Wr(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)bs(a,b)}}else bs(a,b);return}function Xr(a){a=a|0;Yr(a+8|0);return}function Yr(a){a=a|0;Zr(a+328|0);_r(a+288|0);return}function Zr(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function _r(a){a=a|0;$r(a);return}function $r(a){a=a|0;var b=0;as(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function as(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Pf(b,16);b=a}return}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function cs(a){a=a|0;var b=0;c[a+192>>2]=0;c[a+196>>2]=0;b=a+204|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+240>>2]=-2;c[a+244>>2]=0;b=a+288|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+304>>2]=1065353216;g[a+312>>3]=.0001;g[a+320>>3]=1.0e3;b=a+328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+472>>2]=2;return}function ds(a){a=a|0;return 3}function es(a){a=a|0;return js()|0}function fs(){return 37531}function gs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+is(c);Tb[a&3](b,c);return}function hs(a){a=a|0;return a|0}function is(a){a=+a;return +a}function js(){return 15828}function ks(a){a=a|0;return 3}function ls(a){a=a|0;return os()|0}function ms(){return 37623}function ns(a,b,c){a=a|0;b=b|0;c=c|0;b=hs(b)|0;c=hs(c)|0;Ub[a&63](b,c);return}function os(){return 15840}function ps(a){a=a|0;return 2}function qs(a){a=a|0;return ts()|0}function rs(){return 37654}function ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;c=+Db[a&3](b);g[e>>3]=c;c=+Mr(e);zb=d;return +c}function ts(){return 15852}function us(a){a=a|0;return 3}function vs(a){a=a|0;return zs()|0}function ws(){return 37658}function xs(a,b,c){a=a|0;b=b|0;c=+c;b=hs(b)|0;c=+ys(c);Tb[a&3](b,c);return}function ys(a){a=+a;return +a}function zs(){return 15860}function As(a){a=a|0;return 1}function Bs(a){a=a|0;return Es()|0}function Cs(){return 37663}function Ds(a){a=a|0;var b=0,d=0;b=zb;zb=zb+16|0;d=b;a=Fb[a&1]()|0;c[d>>2]=a;a=Qr(d)|0;zb=b;return a|0}function Es(){return 15872}function Fs(a){a=a|0;return 2}function Gs(a){a=a|0;return Js()|0}function Hs(){return 37666}function Is(a,b){a=a|0;b=b|0;b=hs(b)|0;Sb[a&255](b);return}function Js(){return 15876}function Ks(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((d|0)==3)break;c=0;while(1){if((c|0)==4)break;g[b+(d<<5)+(c<<3)>>3]=+g[a+(d<<5)+(c<<3)>>3];c=c+1|0}d=d+1|0}return}function Ls(a){a=a|0;return 2}function Ms(a){a=a|0;return Qs()|0}function Ns(){return 40673}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zb;zb=zb+16|0;f=d+12|0;e=d;Ps(e,b);b=Gb[a&127](e)|0;c[f>>2]=b;b=Qr(f)|0;jO(e);zb=d;return b|0}function Ps(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;gO(a,b+4|0,d);return}function Qs(){return 15884}function Rs(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Ss(r,a,q,57661,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ts(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+16|0}function Ss(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(200)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];aP(h+16|0,0,184)|0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Us(a,b)}}else Us(a,b);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Vs(a){a=a|0;return 3}function Ws(a){a=a|0;return Zs()|0}function Xs(){return 40837}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=zb;zb=zb+16|0;f=e;b=hs(b)|0;d=hs(d)|0;d=Ib[a&63](b,d)|0;c[f>>2]=d;d=Qr(f)|0;zb=e;return d|0}function Zs(){return 15892}function _s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=zb;zb=zb+96|0;n=r+80|0;m=r+72|0;l=r+64|0;k=r+56|0;j=r+48|0;i=r+40|0;q=r+32|0;p=r+24|0;o=r+16|0;h=r+8|0;s=r;e=r+88|0;f=r+84|0;g=c[a+232>>2]|0;c[e>>2]=0;c[s>>2]=d;Ue(0,1,40887,s);do if((Uf(d,40905,f)|0)>=0){c[o>>2]=b;Ue(0,1,40949,o);if((Vf(c[f>>2]|0,-1,b)|0)<0){Ue(0,3,40974,p);a=0;break}if((Sf(e,f)|0)<0){Ue(0,3,41010,q);a=0;break}Ue(0,1,41037,i);c[j>>2]=d;Ue(0,1,41046,j);s=tf(d,41063,0)|0;c[a+248+(b<<2)>>2]=s;if(!s){c[k>>2]=d;Ue(0,3,41068,k)}Ue(0,1,41037,l);if((b|0)==10)Ea(-1);if((fg(g,c[e>>2]|0)|0)<0){Ue(0,3,41101,m);a=0;break}else{Tf(e)|0;Ue(0,1,41126,n);a=1;break}}else{c[h>>2]=d;Ue(0,3,40911,h);a=0}while(0);zb=r;return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=zb;zb=zb+16|0;a=Se(a,c[d>>2]|0)|0;c[e>>2]=a;a:do if(!a){Ue(0,3,41206,f);jd(c[d>>2]|0)|0;a=0}else switch(c[a+108>>2]|0){case 0:{Fc(b,0)|0;a=1;break a}case 1:{Fc(b,2)|0;a=1;break a}default:{Fc(b,3)|0;a=1;break a}}while(0);zb=f;return a|0}function at(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=bt(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;ct(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;dt(a,d);et(d);zb=h;return}}function bt(a){a=a|0;return 536870911}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function et(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ft(a){a=a|0;return 3}function gt(a){a=a|0;return it()|0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=zb;zb=zb+16|0;g=e+12|0;f=e;b=hs(b)|0;Ps(f,d);d=Ib[a&63](b,f)|0;c[g>>2]=d;d=Qr(g)|0;jO(f);zb=e;return d|0}function it(){return 15904}function jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=zb;zb=zb+16|0;e=f;g=sd(c[d>>2]|0,a)|0;c[b>>2]=g;if((g|0)<0){c[e>>2]=a;Ue(0,3,41277,e);jd(c[d>>2]|0)|0;a=0}else a=1;zb=f;return a|0}function kt(a){a=a|0;return Jf(a)|0}function lt(a){a=a|0;return 2}function mt(a){a=a|0;return ot()|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=zb;zb=zb+16|0;e=d;b=hs(b)|0;b=Gb[a&127](b)|0;c[e>>2]=b;b=Qr(e)|0;zb=d;return b|0}function ot(){return 15916}function pt(a){a=a|0;var b=0,d=0;b=a+216|0;d=c[b>>2]|0;if(d|0){gd(d)|0;wc(c[b>>2]|0)|0;c[b>>2]=0}b=a+228|0;if(c[b>>2]|0){rc(b)|0;c[b>>2]=0}b=a+192|0;if(c[b>>2]|0){ne(b)|0;c[b>>2]=0}return}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f+4|0;e=f;b=Tr(a,b)|0;if(!b)b=0;else{c[e>>2]=b;c[d>>2]=c[e>>2];rt(a,d)|0;b=1}zb=f;return b|0}function rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=zb;zb=zb+32|0;h=g+16|0;f=g+4|0;i=g;d=c[d>>2]|0;e=c[d>>2]|0;c[i>>2]=d;c[h>>2]=c[i>>2];st(f,b,h);d=c[f>>2]|0;c[f>>2]=0;if(d|0){if(a[f+8>>0]|0)Xr(d+8|0);Pf(d,496)}zb=g;return e|0}function st(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[e>>2]|0;l=c[d+4>>2]|0;e=c[o+4>>2]|0;m=l+-1|0;i=(m&l|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(l>>>0)|0;else j=m&e;f=(c[d>>2]|0)+(j<<2)|0;n=c[f>>2]|0;while(1){e=c[n>>2]|0;if((e|0)==(o|0))break;else n=e}k=d+8|0;if((n|0)!=(k|0)){e=c[n+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0))g=o;else h=14}else h=14;do if((h|0)==14){e=c[o>>2]|0;if(e|0){e=c[e+4>>2]|0;if(!i){if(e>>>0>=l>>>0)e=(e>>>0)%(l>>>0)|0}else e=e&m;if((e|0)==(j|0)){g=o;break}}c[f>>2]=0;g=o}while(0);f=c[g>>2]|0;e=f;if(f){f=c[f+4>>2]|0;if(!i){if(f>>>0>=l>>>0)f=(f>>>0)%(l>>>0)|0}else f=f&m;if((f|0)!=(j|0)){c[(c[d>>2]|0)+(f<<2)>>2]=n;e=c[o>>2]|0}}c[n>>2]=e;c[g>>2]=0;d=d+12|0;c[d>>2]=(c[d>>2]|0)+-1;c[b>>2]=o;c[b+4>>2]=k;a[b+8>>0]=1;return}function tt(a){a=a|0;return 4}function ut(a){a=a|0;return xt()|0}function vt(){return 41348}function wt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+16|0;g=f;b=hs(b)|0;d=hs(d)|0;e=hs(e)|0;e=Jb[a&63](b,d,e)|0;c[g>>2]=e;e=Qr(g)|0;zb=f;return e|0}function xt(){return 2048}function yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=zb;zb=zb+48|0;l=m+24|0;k=m+16|0;i=m+8|0;f=m;d=m+32|0;e=m+28|0;c[d>>2]=a;c[e>>2]=b;do if((Tr(55484,d)|0)!=0?(j=Ur(55484,d)|0,(zt(55504,e)|0)!=0):0){h=j+8|0;_O(h|0,Rs(55504,e)|0,184)|0;a=c[h>>2]|0;b=j+208|0;d=c[j+12>>2]|0;e=j+212|0;if(!((a|0)==(c[b>>2]|0)?(d|0)==(c[e>>2]|0):0)){c[f>>2]=a;c[f+4>>2]=d;Ue(0,2,41698,f);be(h,c[b>>2]|0,c[e>>2]|0,h)|0}pt(j);a=me(h,15)|0;d=j+192|0;c[d>>2]=a;if(!a){Ue(0,3,41745,i);a=-1;break}a=sc(a)|0;b=j+216|0;c[b>>2]=a;if(!a){Ue(0,3,41783,k);a=-1;break}Lc(a,c[j+472>>2]|0)|0;k=pc(h)|0;c[j+228>>2]=k;if(!k){Ue(0,3,41820,l);a=-1;break}else{fd(c[b>>2]|0,c[j+220>>2]|0)|0;le(c[d>>2]|0,+g[j+312>>3],+g[j+320>>3],j+344|0);a=kt(c[d>>2]|0)|0;c[j+232>>2]=a;a=0;break}}else a=-1;while(0);zb=m;return a|0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function At(a,b){a=a|0;b=b|0;b=Bt(b,c[a>>2]|0,c[a+4>>2]|0)|0;c[b>>2]=1;c[b+12>>2]=a;a=Ee(a+8|0)|0;c[b+16>>2]=a;Ge(a,0.0)|0;return b|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,g=0;g=zb;zb=zb+16|0;e=FO(13732)|0;if(!e){Ue(0,3,41858,g);Ea(1)}c[e+20>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;c[e+24>>2]=25;c[e+28>>2]=11;c[e+32>>2]=11;c[e+36>>2]=10;f[e+40>>2]=.6000000238418579;f[e+44>>2]=2.0;c[e+13280>>2]=1;d=FO(B(d,b)|0)|0;c[e+13300>>2]=d;if(!d){Ue(0,3,41858,g+8|0);Ea(1)}else{c[e+13304>>2]=0;zb=g;return e|0}return 0}function Ct(a,b,d,e,h){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0;D=zb;zb=zb+48|0;x=D;y=D+40|0;z=D+32|0;a:do if((a|0)!=0&(b|0)!=0&(d|0)!=0&(e|0)!=0&(h|0)!=0){C=b+152|0;if((c[C>>2]|0)<1)i=-2;else{f[h>>2]=0.0;j=b+4|0;B=b+8|0;k=b+56|0;l=b+104|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;wd(B,(c[b>>2]|0)+(i*112|0)+12|0,a+48+(i*48|0)|0)|0;if((c[C>>2]|0)>1?(wd(k,(c[b>>2]|0)+(i*112|0)+12|0,a+528+(i*48|0)|0)|0,(c[C>>2]|0)>2):0)wd(l,(c[b>>2]|0)+(i*112|0)+12|0,a+1008+(i*48|0)|0)|0;i=i+1|0}if((c[a>>2]|0)==1){q=a+12|0;r=a+2672|0;n=a+7496|0;Dt(c[q>>2]|0,a+48|0,b,r,n);o=a+4|0;p=a+8|0}else{o=a+4|0;p=a+8|0;r=a+2672|0;n=a+7496|0;Et(c[o>>2]|0,c[p>>2]|0,a+48|0,b,r,n);q=a+12|0}s=a+36|0;t=a+13280|0;u=b+156|0;v=a+1488|0;w=a+40|0;A=0;i=r;j=0;while(1){if((j|0)>=(c[s>>2]|0))break;m=0;l=A;k=i;while(1){if((m|0)>=(c[t>>2]|0))break;if((j|0)==(c[s>>2]|0))break;i=pf(k,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){if((k|0)!=(r|0))break;i=pf(n,u,l,v,c[o>>2]|0,c[p>>2]|0)|0;if((i|0)<0){k=n;break}else k=n}E=k+(i*24|0)|0;c[x+(m<<2)>>2]=E;c[a+1488+(l<<3)>>2]=c[k+(i*24|0)+16>>2];c[a+1488+(l<<3)+4>>2]=c[k+(i*24|0)+20>>2];c[a+13284+(m*52|0)>>2]=a;c[a+13284+(m*52|0)+4>>2]=b;c[a+13284+(m*52|0)+8>>2]=E;c[a+13284+(m*52|0)+12>>2]=d;i=l+1|0;m=m+1|0;l=(i|0)==5?A:i;j=j+1|0}if(!m)break;l=0;i=A;while(1){if((l|0)==(m|0))break;E=a+13284+(l*52|0)+24|0;A=Lt(c[a+13284+(l*52|0)>>2]|0,c[a+13284+(l*52|0)+4>>2]|0,c[a+13284+(l*52|0)+8>>2]|0,c[a+13284+(l*52|0)+12>>2]|0,c[a+13284+(l*52|0)+16>>2]|0,a+13284+(l*52|0)+20|0,E)|0;c[a+13284+(l*52|0)+48>>2]=A;if((A|0)==0?+f[E>>2]>+f[w>>2]:0){if((c[a>>2]|0)==1){E=c[q>>2]|0;fe(E+104|0,+f[a+13284+(l*52|0)+28>>2],+f[a+13284+(l*52|0)+32>>2],y,z,c[E+176>>2]|0)|0;f[a+1872+(i<<3)>>2]=+g[y>>3];f[a+1872+(i<<3)+4>>2]=+g[z>>3]}else{c[a+1872+(i<<3)>>2]=c[a+13284+(l*52|0)+28>>2];c[a+1872+(i<<3)+4>>2]=c[a+13284+(l*52|0)+32>>2]}c[a+2192+(i*12|0)>>2]=c[a+13284+(l*52|0)+36>>2];c[a+2192+(i*12|0)+4>>2]=c[a+13284+(l*52|0)+40>>2];c[a+2192+(i*12|0)+8>>2]=c[a+13284+(l*52|0)+44>>2];E=c[x+(l<<2)>>2]|0;c[a+1488+(i<<3)>>2]=c[E+16>>2];c[a+1488+(i<<3)+4>>2]=c[E+20>>2];c[a+12320+(i*24|0)>>2]=c[E>>2];c[a+12320+(i*24|0)+4>>2]=c[E+4>>2];c[a+12320+(i*24|0)+8>>2]=c[E+8>>2];c[a+12320+(i*24|0)+12>>2]=0;i=i+1|0}l=l+1|0}A=i;i=k}i=0;while(1){if((i|0)>=(A|0))break;E=b+156+(i*24|0)|0;z=a+12320+(i*24|0)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];c[E+16>>2]=c[z+16>>2];c[E+20>>2]=c[z+20>>2];i=i+1|0}c[b+156+(A*24|0)+12>>2]=-1;i=(A|0)<3;if((c[a>>2]|0)==1){if(i){c[C>>2]=0;i=-3;break}j=a+16|0;k=a+1872|0;l=a+2192|0;F=+Ft(c[j>>2]|0,B,k,l,A,e,0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(Ge(c[j>>2]|0,.800000011920929)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.6000000238418579)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,.4000000059604645)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0)?(Ge(c[j>>2]|0,0.0)|0,F=+Ft(c[j>>2]|0,e,k,l,A,e,1),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}else{if(i){c[C>>2]=0;i=-3;break}j=a+1872|0;k=a+2192|0;F=+Gt(B,j,k,A,e,0,1.0);f[h>>2]=F;i=a+44|0;if((((F>+f[i>>2]?(F=+Gt(e,j,k,A,e,1,.800000011920929),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.6000000238418579),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,.4000000059604645),f[h>>2]=F,F>+f[i>>2]):0)?(F=+Gt(e,j,k,A,e,1,0.0),f[h>>2]=F,F>+f[i>>2]):0){c[C>>2]=0;i=-4;break}}c[C>>2]=(c[C>>2]|0)+1;i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+104+(i<<4)+(j<<2)>>2]=c[b+56+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3)break;j=0;while(1){if((j|0)==4)break;c[b+56+(i<<4)+(j<<2)>>2]=c[b+8+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}i=0;while(1){if((i|0)==3){i=0;break a}j=0;while(1){if((j|0)==4)break;c[b+8+(i<<4)+(j<<2)>>2]=c[e+(i<<4)+(j<<2)>>2];j=j+1|0}i=i+1|0}}}else i=-1;while(0);zb=D;return i|0}function Dt(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;Q=zb;zb=zb+80|0;P=Q+48|0;I=Q;J=Q+76|0;L=Q+72|0;N=Q+64|0;O=Q+56|0;q=d+4|0;r=+(c[a>>2]|0);s=+(c[a+4>>2]|0);t=I+4|0;v=I+12|0;w=I+16|0;x=I+20|0;y=I+28|0;z=I+32|0;A=I+36|0;B=I+44|0;C=I+8|0;D=I+24|0;E=I+40|0;F=N+4|0;G=O+4|0;H=g+4812|0;k=0;l=0;p=0;a:while(1){if((p|0)>=(c[q>>2]|0)){i=29;break}i=0;while(1){if((i|0)==3)break;h=0;while(1){if((h|0)==4)break;c[I+(i<<4)+(h<<2)>>2]=c[b+(p*48|0)+(i<<4)+(h<<2)>>2];h=h+1|0}i=i+1|0}h=k;i=l;o=0;k=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0;while(1){if((o|0)>=(c[k+4>>2]|0))break;n=0;l=k;while(1){k=c[l>>2]|0;if((n|0)>=(c[k+(o*20|0)+4>>2]|0))break;l=c[k+(o*20|0)>>2]|0;l=(Df(a,I,+f[l+(n*20|0)+8>>2],+f[l+(n*20|0)+12>>2],J,L)|0)<0;j=+f[J>>2];do if((!(l|j<0.0)?(m=+f[L>>2],!(m>=s)&(!(j>=r)&!(m<0.0))):0)?(l=c[(c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0)+(o*20|0)>>2]|0,K=+f[l+(n*20|0)+8>>2],M=+f[l+(n*20|0)+12>>2],R=+f[v>>2]+(+f[I>>2]*K+ +f[t>>2]*M),j=+f[y>>2]+(K*+f[w>>2]+M*+f[x>>2]),S=+f[B>>2]+(K*+f[z>>2]+M*+f[A>>2]),m=+u(+(R*R+j*j+S*S)),!(+f[E>>2]*(S/m)+(+f[C>>2]*(R/m)+ +f[D>>2]*(j/m))>-.10000000149011612)):0){f[N>>2]=K;f[F>>2]=M;nf(a,I,N,O)|0;j=+f[G>>2];k=c[c[(c[d>>2]|0)+(p*112|0)+4>>2]>>2]|0;m=+f[k+(o*20|0)+12>>2];if(j<=m?j>=+f[k+(o*20|0)+16>>2]:0){if((i|0)==200){i=19;break a}c[e+(i*24|0)>>2]=p;c[e+(i*24|0)+4>>2]=o;c[e+(i*24|0)+8>>2]=n;c[e+(i*24|0)+16>>2]=c[J>>2];c[e+(i*24|0)+20>>2]=c[L>>2];c[e+(i*24|0)+12>>2]=0;i=i+1|0;break}if(j<=m*2.0?j>=+f[k+(o*20|0)+16>>2]*.5:0)if((h|0)==200){c[H>>2]=-1;h=200;break}else{c[g+(h*24|0)>>2]=p;c[g+(h*24|0)+4>>2]=o;c[g+(h*24|0)+8>>2]=n;c[g+(h*24|0)+16>>2]=c[J>>2];c[g+(h*24|0)+20>>2]=c[L>>2];c[g+(h*24|0)+12>>2]=0;h=h+1|0;break}}while(0);n=n+1|0;l=c[(c[d>>2]|0)+(p*112|0)+4>>2]|0}o=o+1|0;k=l}k=h;l=i;p=p+1|0}if((i|0)==19){Ue(0,3,41890,P);h=e+4812|0}else if((i|0)==29){c[e+(l*24|0)+12>>2]=-1;h=g+(k*24|0)+12|0}c[h>>2]=-1;zb=Q;return} +function Et(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=zb;zb=zb+80|0;A=B+48|0;w=B;x=B+76|0;y=B+72|0;z=B+64|0;u=B+56|0;v=e+4|0;t=+(a|0);p=+(b|0);q=z+4|0;r=u+4|0;s=h+4812|0;j=0;k=0;o=0;a:while(1){if((o|0)>=(c[v>>2]|0)){b=28;break}b=0;while(1){if((b|0)==3)break;a=0;while(1){if((a|0)==4)break;c[w+(b<<4)+(a<<2)>>2]=c[d+(o*48|0)+(b<<4)+(a<<2)>>2];a=a+1|0}b=b+1|0}a=j;b=k;n=0;j=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0;while(1){if((n|0)>=(c[j+4>>2]|0))break;m=0;k=j;while(1){j=c[k>>2]|0;if((m|0)>=(c[j+(n*20|0)+4>>2]|0))break;k=c[j+(n*20|0)>>2]|0;k=(Df(0,w,+f[k+(m*20|0)+8>>2],+f[k+(m*20|0)+12>>2],x,y)|0)<0;i=+f[x>>2];do if(!(k|i<0.0)?(l=+f[y>>2],!(l>=p)&(!(i>=t)&!(l<0.0))):0){j=c[(c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(n*20|0)>>2]|0;c[z>>2]=c[j+(m*20|0)+8>>2];c[q>>2]=c[j+(m*20|0)+12>>2];nf(0,w,z,u)|0;i=+f[r>>2];j=c[c[(c[e>>2]|0)+(o*112|0)+4>>2]>>2]|0;l=+f[j+(n*20|0)+12>>2];if(i<=l?i>=+f[j+(n*20|0)+16>>2]:0){if((b|0)==200){b=18;break a}c[g+(b*24|0)>>2]=o;c[g+(b*24|0)+4>>2]=n;c[g+(b*24|0)+8>>2]=m;c[g+(b*24|0)+16>>2]=c[x>>2];c[g+(b*24|0)+20>>2]=c[y>>2];c[g+(b*24|0)+12>>2]=0;b=b+1|0;break}if(i<=l*2.0?i>=+f[j+(n*20|0)+16>>2]*.5:0)if((a|0)==200){c[s>>2]=-1;a=200;break}else{c[h+(a*24|0)>>2]=o;c[h+(a*24|0)+4>>2]=n;c[h+(a*24|0)+8>>2]=m;c[h+(a*24|0)+16>>2]=c[x>>2];c[h+(a*24|0)+20>>2]=c[y>>2];c[h+(a*24|0)+12>>2]=0;a=a+1|0;break}}while(0);m=m+1|0;k=c[(c[e>>2]|0)+(o*112|0)+4>>2]|0}n=n+1|0;j=k}j=a;k=b;o=o+1|0}if((b|0)==18){Ue(0,3,41890,A);a=g+4812|0}else if((b|0)==28){c[g+(k*24|0)+12>>2]=-1;a=h+(j*24|0)+12|0}c[a>>2]=-1;zb=B;return}function Ft(a,b,d,e,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;w=zb;zb=zb+224|0;s=w+212|0;t=w+96|0;v=w;u=w+192|0;l=FO(h<<4)|0;c[s>>2]=l;if(!l){Ue(0,3,41858,w+200|0);Ea(1)}p=FO(h*24|0)|0;q=s+4|0;c[q>>2]=p;if(!p){Ue(0,3,41858,w+208|0);Ea(1)}k=0;o=0.0;n=0.0;m=0.0;while(1){if((k|0)>=(h|0))break;r=m+ +f[e+(k*12|0)>>2];x=n+ +f[e+(k*12|0)+4>>2];y=o+ +f[e+(k*12|0)+8>>2];k=k+1|0;o=y;n=x;m=r}y=+(h|0);r=m/y;n=n/y;m=o/y;k=0;while(1){if((k|0)>=(h|0))break;g[l+(k<<4)>>3]=+f[d+(k<<3)>>2];g[l+(k<<4)+8>>3]=+f[d+(k<<3)+4>>2];g[p+(k*24|0)>>3]=+f[e+(k*12|0)>>2]-r;g[p+(k*24|0)+8>>3]=+f[e+(k*12|0)+4>>2]-n;g[p+(k*24|0)+16>>3]=+f[e+(k*12|0)+8>>2]-m;k=k+1|0}c[s+8>>2]=h;k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;g[t+(k<<5)+(l<<3)>>3]=+f[b+(k<<4)+(l<<2)>>2];l=l+1|0}k=k+1|0}g[t+24>>3]=+f[b+12>>2]+(r*+f[b>>2]+n*+f[b+4>>2]+m*+f[b+8>>2]);g[t+56>>3]=+f[b+28>>2]+(r*+f[b+16>>2]+n*+f[b+20>>2]+m*+f[b+24>>2]);g[t+88>>3]=+f[b+44>>2]+(r*+f[b+32>>2]+n*+f[b+36>>2]+m*+f[b+40>>2]);if(!j){if((He(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8}else if((Je(a,s,t,v,u)|0)<0)g[u>>3]=1.0e8;GO(c[s>>2]|0);GO(c[q>>2]|0);k=0;while(1){if((k|0)==3)break;l=0;while(1){if((l|0)==3)break;f[i+(k<<4)+(l<<2)>>2]=+g[v+(k<<5)+(l<<3)>>3];l=l+1|0}k=k+1|0}x=n;y=m;f[i+12>>2]=+g[v+24>>3]-+g[v>>3]*r-+g[v+8>>3]*x-+g[v+16>>3]*y;f[i+28>>2]=+g[v+56>>3]-+g[v+32>>3]*r-+g[v+40>>3]*x-+g[v+48>>3]*y;f[i+44>>2]=+g[v+88>>3]-+g[v+64>>3]*r-+g[v+72>>3]*x-+g[v+80>>3]*y;zb=w;return +(+g[u>>3])}function Gt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;if(!f)g=+Ht(a,b,c,d,e);else g=+It(a,b,c,d,e,g);return +g}function Ht(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0;H=zb;zb=zb+48|0;i=H+40|0;h=H+32|0;F=H;do if((d|0)>=4?(j=a+44|0,!(+f[j>>2]==0.0)):0){G=FO(d<<6)|0;if(!G){Ue(0,3,41875,h);g=-1.0;break}E=FO(d<<3)|0;if(!E){Ue(0,3,41875,i);GO(G);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[j>>2];i=i+1|0}h=h+1|0}a=e+4|0;j=e+12|0;q=e+16|0;r=e+20|0;s=e+28|0;t=e+32|0;u=e+36|0;v=+(d|0);w=d<<1;x=F+4|0;y=F+8|0;z=F+12|0;A=F+16|0;B=F+20|0;C=F+24|0;D=F+28|0;p=0.0;i=0;a:while(1){g=0.0;h=0;while(1){if((h|0)>=(d|0))break;k=+f[c+(h*12|0)>>2];l=+f[c+(h*12|0)+4>>2];m=+f[j>>2]+(+f[e>>2]*k+ +f[a>>2]*l);n=+f[s>>2]+(k*+f[q>>2]+l*+f[r>>2]);o=k*+f[t>>2]+l*+f[u>>2]+1.0;if(o==0.0){h=17;break a}L=o*o;J=+f[b+(h<<3)>>2]-m/o;I=+f[b+(h<<3)+4>>2]-n/o;K=h<<1;f[E+(K<<2)>>2]=J;f[E+((K|1)<<2)>>2]=I;N=k/o;K=h<<4;f[G+(K<<2)>>2]=N;M=l/o;f[G+((K|1)<<2)>>2]=M;o=1.0/o;f[G+((K|2)<<2)>>2]=o;f[G+((K|3)<<2)>>2]=0.0;f[G+((K|4)<<2)>>2]=0.0;f[G+((K|5)<<2)>>2]=0.0;f[G+((K|6)<<2)>>2]=-(k*m)/L;f[G+((K|7)<<2)>>2]=-(l*m)/L;f[G+((K|8)<<2)>>2]=0.0;f[G+((K|9)<<2)>>2]=0.0;f[G+((K|10)<<2)>>2]=0.0;f[G+((K|11)<<2)>>2]=N;f[G+((K|12)<<2)>>2]=M;f[G+((K|13)<<2)>>2]=o;f[G+((K|14)<<2)>>2]=-(k*n)/L;f[G+((K|15)<<2)>>2]=-(l*n)/L;g=g+(J*J+I*I);h=h+1|0}g=g/v;if(g<.10000000149011612){h=26;break}if((i|0)!=0&g<4.0){if((i|0)==10|g/p>.9900000095367432){h=26;break}}else if((i|0)==10){h=26;break}if((Kt(F,E,G,w)|0)<0){h=24;break}f[e>>2]=+f[F>>2]+ +f[e>>2];f[a>>2]=+f[x>>2]+ +f[a>>2];f[j>>2]=+f[y>>2]+ +f[j>>2];f[q>>2]=+f[z>>2]+ +f[q>>2];f[r>>2]=+f[A>>2]+ +f[r>>2];f[s>>2]=+f[B>>2]+ +f[s>>2];f[t>>2]=+f[C>>2]+ +f[t>>2];f[u>>2]=+f[D>>2]+ +f[u>>2];p=g;i=i+1|0}if((h|0)==17){GO(G);GO(E);g=1.0e8;break}else if((h|0)==24){GO(G);GO(E);g=1.0e8;break}else if((h|0)==26){GO(G);GO(E);break}}else g=1.0e8;while(0);zb=H;return +g}function It(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=+g;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0;J=zb;zb=zb+64|0;k=J+56|0;j=J+48|0;i=J+40|0;h=J+32|0;I=J;do if((d|0)>=4?(l=a+44|0,!(+f[l>>2]==0.0)):0){G=+(d|0);m=~~(G*g)+-1|0;m=(m|0)>4?m:4;H=FO(d<<6)|0;if(!H){Ue(0,3,41875,h);g=-1.0;break}F=FO(d<<3)|0;if(!F){Ue(0,3,41875,i);GO(H);g=-1.0;break}h=d<<2;E=FO(h)|0;if(!E){Ue(0,3,41875,j);GO(H);GO(F);g=-1.0;break}D=FO(h)|0;if(!D){Ue(0,3,41875,k);GO(H);GO(F);GO(E);g=-1.0;break}h=0;while(1){if((h|0)==3)break;i=0;while(1){if((i|0)==4)break;f[e+(h<<4)+(i<<2)>>2]=+f[a+(h<<4)+(i<<2)>>2]/+f[l>>2];i=i+1|0}h=h+1|0}w=e+4|0;x=e+12|0;y=e+16|0;z=e+20|0;A=e+28|0;B=e+32|0;C=e+36|0;k=D+(m<<2)|0;a=I+4|0;l=I+8|0;m=I+12|0;s=I+16|0;t=I+20|0;u=I+24|0;v=I+28|0;r=0.0;j=0;a:while(1){h=0;while(1){if((h|0)>=(d|0))break;g=+f[c+(h*12|0)>>2];n=+f[c+(h*12|0)+4>>2];o=+f[x>>2]+(+f[e>>2]*g+ +f[w>>2]*n);p=+f[A>>2]+(g*+f[y>>2]+n*+f[z>>2]);q=g*+f[B>>2]+n*+f[C>>2]+1.0;if(q==0.0){h=21;break a}K=q*q;L=+f[b+(h<<3)>>2]-o/q;M=+f[b+(h<<3)+4>>2]-p/q;i=h<<1;f[F+(i<<2)>>2]=L;f[F+((i|1)<<2)>>2]=M;M=L*L+M*M;f[D+(h<<2)>>2]=M;f[E+(h<<2)>>2]=M;M=g/q;i=h<<4;f[H+(i<<2)>>2]=M;L=n/q;f[H+((i|1)<<2)>>2]=L;q=1.0/q;f[H+((i|2)<<2)>>2]=q;f[H+((i|3)<<2)>>2]=0.0;f[H+((i|4)<<2)>>2]=0.0;f[H+((i|5)<<2)>>2]=0.0;f[H+((i|6)<<2)>>2]=-(g*o)/K;f[H+((i|7)<<2)>>2]=-(n*o)/K;f[H+((i|8)<<2)>>2]=0.0;f[H+((i|9)<<2)>>2]=0.0;f[H+((i|10)<<2)>>2]=0.0;f[H+((i|11)<<2)>>2]=M;f[H+((i|12)<<2)>>2]=L;f[H+((i|13)<<2)>>2]=q;f[H+((i|14)<<2)>>2]=-(g*p)/K;f[H+((i|15)<<2)>>2]=-(n*p)/K;h=h+1|0}oy(D,d,4,32);p=+f[k>>2]*4.0;p=p<16.0?16.0:p;o=p/6.0;n=0.0;h=0;while(1){if((h|0)==(d|0))break;g=+f[D+(h<<2)>>2];if(g>p)g=o;else{g=1.0-g/p;g=o*(1.0-g*(g*g))}n=n+g;h=h+1|0}g=n/G;if(g<.10000000149011612){h=42;break}if((j|0)!=0&g<4.0){if((j|0)==10|g/r>.9900000095367432){h=42;break}}else if((j|0)==10){h=42;break}h=0;i=0;while(1){if((i|0)==(d|0))break;n=+f[E+(i<<2)>>2];if(n<=p){M=1.0-n/p;M=M*M;O=i<<4;N=h<<3;f[H+(N<<2)>>2]=M*+f[H+(O<<2)>>2];f[H+((N|1)<<2)>>2]=M*+f[H+((O|1)<<2)>>2];f[H+((N|2)<<2)>>2]=M*+f[H+((O|2)<<2)>>2];f[H+((N|3)<<2)>>2]=M*+f[H+((O|3)<<2)>>2];f[H+((N|4)<<2)>>2]=M*+f[H+((O|4)<<2)>>2];f[H+((N|5)<<2)>>2]=M*+f[H+((O|5)<<2)>>2];f[H+((N|6)<<2)>>2]=M*+f[H+((O|6)<<2)>>2];f[H+((N|7)<<2)>>2]=M*+f[H+((O|7)<<2)>>2];f[H+(N+8<<2)>>2]=M*+f[H+((O|8)<<2)>>2];f[H+(N+9<<2)>>2]=M*+f[H+((O|9)<<2)>>2];f[H+(N+10<<2)>>2]=M*+f[H+((O|10)<<2)>>2];f[H+(N+11<<2)>>2]=M*+f[H+((O|11)<<2)>>2];f[H+(N+12<<2)>>2]=M*+f[H+((O|12)<<2)>>2];f[H+(N+13<<2)>>2]=M*+f[H+((O|13)<<2)>>2];f[H+(N+14<<2)>>2]=M*+f[H+((O|14)<<2)>>2];f[H+(N+15<<2)>>2]=M*+f[H+((O|15)<<2)>>2];N=i<<1;f[F+(h<<2)>>2]=M*+f[F+(N<<2)>>2];f[F+(h+1<<2)>>2]=M*+f[F+((N|1)<<2)>>2];h=h+2|0}i=i+1|0}if((h|0)<6){h=38;break}if((Kt(I,F,H,h)|0)<0){h=40;break}f[e>>2]=+f[I>>2]+ +f[e>>2];f[w>>2]=+f[a>>2]+ +f[w>>2];f[x>>2]=+f[l>>2]+ +f[x>>2];f[y>>2]=+f[m>>2]+ +f[y>>2];f[z>>2]=+f[s>>2]+ +f[z>>2];f[A>>2]=+f[t>>2]+ +f[A>>2];f[B>>2]=+f[u>>2]+ +f[B>>2];f[C>>2]=+f[v>>2]+ +f[C>>2];r=g;j=j+1|0}if((h|0)==21){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==38){GO(H);GO(F);GO(E);GO(D);g=-1.0;break}else if((h|0)==40){GO(H);GO(F);GO(E);GO(D);g=1.0e8;break}else if((h|0)==42){GO(H);GO(F);GO(E);GO(D);break}}else g=1.0e8;while(0);zb=J;return +g}function Jt(a,b){a=a|0;b=b|0;var c=0.0;c=+f[a>>2]-+f[b>>2];return (c<0.0?-1:c>0.0&1)|0}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+48|0;h=i+24|0;g=i+12|0;f=i;c[h+4>>2]=8;c[h+8>>2]=1;c[h>>2]=a;c[g+4>>2]=e;c[g+8>>2]=1;c[g>>2]=b;c[f+4>>2]=e;c[f+8>>2]=8;c[f>>2]=d;e=Jd(f)|0;if(!e)a=-1;else{d=Hd(e,f)|0;if(!d)a=-1;else{b=Hd(e,g)|0;if(!b)a=-1;else{if((Zd(d)|0)<0)a=-1;else{Od(h,d,b)|0;a=0}Md(b)|0}Md(d)|0}Md(e)|0}zb=i;return a|0}function Lt(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=zb;zb=zb+32|0;j=s;q=s+28|0;r=s+24|0;o=c[d>>2]|0;p=c[d+4>>2]|0;n=c[d+8>>2]|0;d=c[h>>2]|0;if(!d){d=Af(c[a+28>>2]|0,c[a+32>>2]|0)|0;c[h>>2]=d}k=a+12|0;m=a+48+(o*48|0)|0;l=c[b>>2]|0;if((Bf(c[k>>2]|0,m,c[l+(o*112|0)>>2]|0,(c[c[l+(o*112|0)+4>>2]>>2]|0)+(p*20|0)|0,n,d)|0)>=0?(l=c[h>>2]|0,d=c[l+28>>2]|0,t=+(B(d,d)|0),!(+(B((c[l+16>>2]|0)+1+(c[l+20>>2]|0)|0,(c[l+8>>2]|0)+1+(c[l+12>>2]|0)|0)|0)*5.0*5.0>t)):0){l=c[b+152>>2]|0;do if((l|0)!=1){d=c[k>>2]|0;k=a+528+(o*48|0)|0;if((l|0)==2){Cf(d,m,k,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}else{Cf(d,m,k,a+1008+(o*48|0)|0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);break}}else Cf(c[k>>2]|0,m,0,0,(c[(c[c[(c[b>>2]|0)+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0)+(n*20|0)|0,j);while(0);m=c[a+24>>2]|0;if((wf(e,g,c[a+4>>2]|0,c[a+8>>2]|0,c[a+20>>2]|0,c[h>>2]|0,m,m,j,q,r,i)|0)>=0){f[i+4>>2]=+(c[q>>2]|0);f[i+8>>2]=+(c[r>>2]|0);r=c[b>>2]|0;j=c[(c[c[r+(o*112|0)+4>>2]>>2]|0)+(p*20|0)>>2]|0;q=j+(n*20|0)+8|0;j=j+(n*20|0)+12|0;f[i+12>>2]=+f[r+(o*112|0)+24>>2]+(+f[r+(o*112|0)+12>>2]*+f[q>>2]+ +f[r+(o*112|0)+16>>2]*+f[j>>2]);f[i+16>>2]=+f[r+(o*112|0)+40>>2]+(+f[r+(o*112|0)+28>>2]*+f[q>>2]+ +f[r+(o*112|0)+32>>2]*+f[j>>2]);f[i+20>>2]=+f[r+(o*112|0)+56>>2]+(+f[r+(o*112|0)+44>>2]*+f[q>>2]+ +f[r+(o*112|0)+48>>2]*+f[j>>2]);j=0}else j=-1}else j=-1;zb=s;return j|0}function Mt(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[a+128>>2]=0;return a|0}function Nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+24|0;d=c[e>>2]|0;if(!d){f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,0,40)|0;c[e>>2]=d;a=Jb[c[c[f>>2]>>2]&63](a,0,4096)|0;c[d+32>>2]=a;d=c[e>>2]|0}c[d+8>>2]=115;c[d+12>>2]=83;c[d+16>>2]=47;c[d+20>>2]=33;c[d+24>>2]=116;c[d+28>>2]=b;c[d+4>>2]=0;c[d>>2]=0;return}function Ot(a){a=a|0;c[(c[a+24>>2]|0)+36>>2]=1;return}function Pt(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+24>>2]|0;f=e+32|0;d=gA(c[f>>2]|0,1,4096,c[e+28>>2]|0)|0;g=e+36|0;if(d|0){b=d;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}if(!(c[g>>2]|0))d=b;else{d=c[b>>2]|0;c[d+20>>2]=43;Sb[c[d>>2]&255](b);d=b}b=c[b>>2]|0;c[b+20>>2]=123;Ub[c[b+4>>2]&63](d,-1);a[c[f>>2]>>0]=-1;a[(c[f>>2]|0)+1>>0]=-39;b=2;f=c[f>>2]|0;c[e>>2]=f;f=e+4|0;c[f>>2]=b;c[g>>2]=0;return 1}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+24>>2]|0;if((b|0)<=0)return;g=f+4|0;d=c[g>>2]|0;if((d|0)<(b|0)){e=f+12|0;do{b=b-d|0;Gb[c[e>>2]&127](a)|0;d=c[g>>2]|0}while((b|0)>(d|0))}c[f>>2]=(c[f>>2]|0)+b;c[g>>2]=d-b;return}function Rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+440|0;g=c[k>>2]|0;h=c[a>>2]|0;c[h+20>>2]=124;c[h+24>>2]=g;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;d=b+6&7|208;b=g;a:while(1){e=(b|0)<192;f=(b&-8|0)!=208|(b|0)==(h|0)|(b|0)==(i|0);g=(b|0)==(j|0)|(b|0)==(d|0)?2:1;b:while(1){l=e?2:f?3:g;m=c[a>>2]|0;c[m+20>>2]=99;c[m+24>>2]=b;c[(c[a>>2]|0)+28>>2]=l;Ub[c[(c[a>>2]|0)+4>>2]&63](a,4);switch(l&3){case 1:{d=4;break a}case 3:{b=1;d=7;break a}case 2:break b;default:{}}}if(!(Tt(a)|0)){b=0;d=7;break}b=c[k>>2]|0}if((d|0)==4){c[k>>2]=0;m=1;return m|0}else if((d|0)==7)return b|0;return 0}function St(a){a=a|0;return}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+464|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break}d=c[k>>2]|0;e=c[j>>2]|0}d=d+-1|0;f=e+1|0;if((a[e>>0]|0)==-1)e=f;else{e=f;do{h=(c[l>>2]|0)+24|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1)}do{if(!d){if(!(Gb[c[i>>2]&127](b)|0)){d=0;f=21;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;g=a[f>>0]|0}while(g<<24>>24==-1);f=(c[l>>2]|0)+24|0;h=c[f>>2]|0;if(g<<24>>24){f=18;break}c[f>>2]=h+2;c[j>>2]=e;c[k>>2]=d}if((f|0)==18){f=g&255;if(h|0){i=c[b>>2]|0;c[i+20>>2]=119;c[i+24>>2]=h;c[(c[b>>2]|0)+28>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);c[(c[l>>2]|0)+24>>2]=0}c[b+440>>2]=f;c[j>>2]=e;c[k>>2]=d;l=1;return l|0}else if((f|0)==21)return d|0;return 0}function Ut(a){a=a|0;var b=0,d=0;d=Jb[c[c[a+4>>2]>>2]&63](a,0,172)|0;b=a+464|0;c[b>>2]=d;c[d>>2]=117;c[d+4>>2]=84;c[d+8>>2]=85;c[d+28>>2]=86;c[d+96>>2]=0;c[d+100>>2]=0;c[d+36>>2]=86;c[d+104>>2]=0;c[d+40>>2]=86;c[d+108>>2]=0;c[d+44>>2]=86;c[d+112>>2]=0;c[d+48>>2]=86;c[d+116>>2]=0;c[d+52>>2]=86;c[d+120>>2]=0;c[d+56>>2]=86;c[d+124>>2]=0;c[d+60>>2]=86;c[d+128>>2]=0;c[d+64>>2]=86;c[d+132>>2]=0;c[d+68>>2]=86;c[d+136>>2]=0;c[d+72>>2]=86;c[d+140>>2]=0;c[d+76>>2]=86;c[d+144>>2]=0;c[d+80>>2]=86;c[d+148>>2]=0;c[d+84>>2]=86;c[d+152>>2]=0;c[d+156>>2]=0;c[d+92>>2]=86;c[d+160>>2]=0;c[d+32>>2]=87;c[d+88>>2]=87;b=c[b>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Vt(a){a=a|0;var b=0;b=c[a+464>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+440>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function Wt(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;Pa=zb;zb=zb+256|0;ga=Pa;Na=f+440|0;Oa=f+464|0;oa=f+24|0;ua=f+232|0;va=f+248|0;wa=f+264|0;pa=f+280|0;qa=f+40|0;ra=f+304|0;sa=f+308|0;ta=f+284|0;ha=f+288|0;ia=f+289|0;ja=f+290|0;ka=f+292|0;la=f+294|0;ma=f+296|0;na=f+300|0;Ja=f+36|0;Ka=f+216|0;g=c[Na>>2]|0;a:while(1){do if(!g){if(c[(c[Oa>>2]|0)+12>>2]|0){if(!(Tt(f)|0)){xa=0;Aa=350;break a}g=c[Na>>2]|0;break}m=c[oa>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0}k=c[m>>2]|0;g=g+-1|0;h=k+1|0;k=a[k>>0]|0;l=k&255;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[n>>2]|0;h=c[m>>2]|0}else j=g;V=a[h>>0]|0;g=V&255;if(k<<24>>24!=-1|V<<24>>24!=-40){V=c[f>>2]|0;c[V+20>>2]=55;c[V+24>>2]=l;c[(c[f>>2]|0)+28>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}c[Na>>2]=g;c[m>>2]=h+1;c[n>>2]=j+-1}while(0);do switch(g|0){case 218:{Aa=25;break a}case 217:{Aa=75;break a}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Ub[c[g+4>>2]&63](f,1);g=(c[Oa>>2]|0)+12|0;if(c[g>>2]|0){g=c[f>>2]|0;c[g+20>>2]=64;Sb[c[g>>2]&255](f);g=(c[Oa>>2]|0)+12|0}h=ua;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));h=va;j=h+16|0;do{a[h>>0]=1;h=h+1|0}while((h|0)<(j|0));h=wa;j=h+16|0;do{a[h>>0]=5;h=h+1|0}while((h|0)<(j|0));c[pa>>2]=0;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;c[ta>>2]=0;a[ha>>0]=1;a[ia>>0]=1;a[ja>>0]=0;b[ka>>1]=1;b[la>>1]=1;c[ma>>2]=0;a[na>>0]=0;c[g>>2]=1;break}case 192:{if(!($t(f,1,0,0)|0)){xa=0;Aa=350;break a}break}case 193:{if(!($t(f,0,0,0)|0)){xa=0;Aa=350;break a}break}case 194:{if(!($t(f,0,1,0)|0)){xa=0;Aa=350;break a}break}case 201:{if(!($t(f,0,0,1)|0)){xa=0;Aa=350;break a}break}case 202:{if(!($t(f,0,1,1)|0)){xa=0;Aa=350;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{V=c[f>>2]|0;c[V+20>>2]=63;c[V+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f);break}case 204:{p=c[oa>>2]|0;q=p+4|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0}j=c[p>>2]|0;g=g+-1|0;h=j+1|0;j=d[j>>0]<<8;if(!g){if(!(Gb[c[p+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[q>>2]|0;h=c[p>>2]|0}V=j|d[h>>0];j=V+-2|0;k=g+-1|0;g=h+1|0;if(V>>>0>2){o=p+12|0;n=j;h=k;while(1){if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;g=c[p>>2]|0}h=h+-1|0;j=g+1|0;l=a[g>>0]|0;m=l&255;if(!h){if(!(Gb[c[o>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[q>>2]|0;k=c[p>>2]|0}else k=j;g=a[k>>0]|0;j=g&255;V=c[f>>2]|0;c[V+20>>2]=81;c[V+24>>2]=m;c[(c[f>>2]|0)+28>>2]=j;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if((l&255)<=31)if((l&255)<=15){U=j&15;a[f+232+m>>0]=U;V=(g&255)>>>4;a[f+248+m>>0]=V;if(U>>>0>(V&255)>>>0){V=c[f>>2]|0;c[V+20>>2]=30;c[V+24>>2]=j;Sb[c[c[f>>2]>>2]&255](f)}}else Aa=93;else{Aa=c[f>>2]|0;c[Aa+20>>2]=29;c[Aa+24>>2]=m;Sb[c[c[f>>2]>>2]&255](f);Aa=93}if((Aa|0)==93){Aa=0;a[m+-16+(f+264)>>0]=g}j=n+-2|0;h=h+-1|0;g=k+1|0;if((n|0)>2)n=j;else break}}else h=k;if(j|0){V=c[f>>2]|0;c[V+20>>2]=12;Sb[c[V>>2]&255](f)}c[p>>2]=g;c[q>>2]=h;break}case 196:{U=c[oa>>2]|0;V=U+4|0;g=c[V>>2]|0;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0}k=c[U>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[U+12>>2]&127](f)|0)){Aa=174;break a}g=c[V>>2]|0;j=c[U>>2]|0}else j=h;h=g+-1|0;g=j+1|0;T=k|d[j>>0];j=T+-2|0;if(T>>>0>18){T=U+12|0;do{if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}S=d[g>>0]|0;R=c[f>>2]|0;c[R+20>>2]=82;c[R+24>>2]=S;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}R=a[g>>0]|0;N=R&255;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}Q=a[g>>0]|0;L=Q&255;k=L+N|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}P=a[g>>0]|0;K=P&255;k=k+K|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}O=a[g>>0]|0;I=O&255;k=k+I|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}M=a[g>>0]|0;G=M&255;k=k+G|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}J=a[g>>0]|0;E=J&255;k=k+E|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}H=a[g>>0]|0;C=H&255;k=k+C|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}F=a[g>>0]|0;A=F&255;k=k+A|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}D=a[g>>0]|0;y=D&255;k=k+y|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}B=a[g>>0]|0;w=B&255;k=k+w|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}z=a[g>>0]|0;u=z&255;k=k+u|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}x=a[g>>0]|0;s=x&255;k=k+s|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}v=a[g>>0]|0;q=v&255;k=k+q|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}t=a[g>>0]|0;o=t&255;k=k+o|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}r=a[g>>0]|0;l=r&255;k=k+l|0;h=h+-1|0;g=g+1|0;if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}p=a[g>>0]|0;Qa=p&255;n=k+Qa|0;h=h+-1|0;g=g+1|0;m=j+-17|0;k=c[f>>2]|0;c[k+24>>2]=N;c[k+28>>2]=L;c[k+32>>2]=K;c[k+36>>2]=I;c[k+40>>2]=G;c[k+44>>2]=E;c[k+48>>2]=C;c[k+52>>2]=A;c[k+20>>2]=88;Ub[c[k+4>>2]&63](f,2);N=c[f>>2]|0;c[N+24>>2]=y;c[N+28>>2]=w;c[N+32>>2]=u;c[N+36>>2]=s;c[N+40>>2]=q;c[N+44>>2]=o;c[N+48>>2]=l;c[N+52>>2]=Qa;c[N+20>>2]=88;Ub[c[N+4>>2]&63](f,2);if(n>>>0>256|(m|0)<(n|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=9;Sb[c[Qa>>2]&255](f)}aP(ga|0,0,256)|0;if(!n)j=0;else{k=0;while(1){if(!h){if(!(Gb[c[T>>2]&127](f)|0)){Aa=174;break a}h=c[V>>2]|0;g=c[U>>2]|0}h=h+-1|0;j=g+1|0;a[ga+k>>0]=a[g>>0]|0;k=k+1|0;if(k>>>0>=n>>>0){g=j;j=n;break}else g=j}}j=m-j|0;Qa=(S&16|0)==0;l=S+-16|0;k=Qa?S:l;l=Qa?f+180+(S<<2)|0:f+196+(l<<2)|0;if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=31;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=c[l>>2]|0;if(!k){k=au(f)|0;c[l>>2]=k}a[k>>0]=0;a[k+1>>0]=R;a[k+2>>0]=Q;a[k+3>>0]=P;a[k+4>>0]=O;a[k+5>>0]=M;a[k+6>>0]=J;a[k+7>>0]=H;a[k+8>>0]=F;a[k+9>>0]=D;a[k+10>>0]=B;a[k+11>>0]=z;a[k+12>>0]=x;a[k+13>>0]=v;a[k+14>>0]=t;a[k+15>>0]=r;a[k+16>>0]=p;_O((c[l>>2]|0)+17|0,ga|0,256)|0}while((j|0)>16)}if(j|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[U>>2]=g;c[V>>2]=h;break}case 219:{q=c[oa>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0}l=c[q>>2]|0;g=g+-1|0;h=l+1|0;l=d[l>>0]<<8;if(!g){if(!(Gb[c[q+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;k=c[q>>2]|0}else k=h;j=g+-1|0;h=k+1|0;Qa=l|d[k>>0];g=Qa+-2|0;if(Qa>>>0>2){p=q+12|0;while(1){o=g+-1|0;if(!j){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}j=c[r>>2]|0;h=c[q>>2]|0}k=d[h>>0]|0;m=k>>>4;k=k&15;Qa=c[f>>2]|0;c[Qa+20>>2]=83;c[Qa+24>>2]=k;c[(c[f>>2]|0)+28>>2]=m;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);if(k>>>0>3){Qa=c[f>>2]|0;c[Qa+20>>2]=32;c[Qa+24>>2]=k;Sb[c[c[f>>2]>>2]&255](f)}k=f+164+(k<<2)|0;l=c[k>>2]|0;if(!l){l=Mt(f)|0;c[k>>2]=l}n=(m|0)!=0;if(n)if((g|0)<129){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o>>1;Aa=196}else Aa=203;else if((g|0)<65){b[l>>1]=1;b[l+2>>1]=1;b[l+4>>1]=1;b[l+6>>1]=1;b[l+8>>1]=1;b[l+10>>1]=1;b[l+12>>1]=1;b[l+14>>1]=1;b[l+16>>1]=1;b[l+18>>1]=1;b[l+20>>1]=1;b[l+22>>1]=1;b[l+24>>1]=1;b[l+26>>1]=1;b[l+28>>1]=1;b[l+30>>1]=1;b[l+32>>1]=1;b[l+34>>1]=1;b[l+36>>1]=1;b[l+38>>1]=1;b[l+40>>1]=1;b[l+42>>1]=1;b[l+44>>1]=1;b[l+46>>1]=1;b[l+48>>1]=1;b[l+50>>1]=1;b[l+52>>1]=1;b[l+54>>1]=1;b[l+56>>1]=1;b[l+58>>1]=1;b[l+60>>1]=1;b[l+62>>1]=1;b[l+64>>1]=1;b[l+66>>1]=1;b[l+68>>1]=1;b[l+70>>1]=1;b[l+72>>1]=1;b[l+74>>1]=1;b[l+76>>1]=1;b[l+78>>1]=1;b[l+80>>1]=1;b[l+82>>1]=1;b[l+84>>1]=1;b[l+86>>1]=1;b[l+88>>1]=1;b[l+90>>1]=1;b[l+92>>1]=1;b[l+94>>1]=1;b[l+96>>1]=1;b[l+98>>1]=1;b[l+100>>1]=1;b[l+102>>1]=1;b[l+104>>1]=1;b[l+106>>1]=1;b[l+108>>1]=1;b[l+110>>1]=1;b[l+112>>1]=1;b[l+114>>1]=1;b[l+116>>1]=1;b[l+118>>1]=1;b[l+120>>1]=1;b[l+122>>1]=1;b[l+124>>1]=1;b[l+126>>1]=1;ba=o;Aa=196}else Aa=203;b:do if((Aa|0)==196){Aa=0;switch(ba|0){case 4:{g=3280;break}case 9:{g=3168;break}case 16:{g=3040;break}case 25:{g=2864;break}case 36:{g=2656;break}case 49:{g=2384;break}default:{j=j+-1|0;g=h+1|0;if((ba|0)>0){Z=2064;_=ba;$=g;aa=j;Aa=205;break b}else{Y=ba;X=j;W=g;break b}}}Z=g;_=ba;$=h+1|0;aa=j+-1|0;Aa=205}else if((Aa|0)==203){Z=2064;_=64;$=h+1|0;aa=j+-1|0;Aa=205}while(0);c:do if((Aa|0)==205){Aa=0;if(!n){j=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}b[l+(c[Z+(j<<2)>>2]<<1)>>1]=d[h>>0]|0;j=j+1|0;g=g+-1|0;h=h+1|0;if((j|0)>=(_|0)){Y=_;X=g;W=h;break c}}}m=0;h=$;g=aa;while(1){if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[p>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[r>>2]|0;h=c[q>>2]|0}else h=j;b[l+(c[Z+(m<<2)>>2]<<1)>>1]=k|d[h>>0];m=m+1|0;g=g+-1|0;h=h+1|0;if((m|0)>=(_|0)){Y=_;X=g;W=h;break}}}while(0);h=c[f>>2]|0;d:do if((c[h+104>>2]|0)>1){g=0;while(1){c[h+24>>2]=e[l+(g<<1)>>1];c[h+28>>2]=e[l+((g|1)<<1)>>1];c[h+32>>2]=e[l+((g|2)<<1)>>1];c[h+36>>2]=e[l+((g|3)<<1)>>1];c[h+40>>2]=e[l+((g|4)<<1)>>1];c[h+44>>2]=e[l+((g|5)<<1)>>1];c[h+48>>2]=e[l+((g|6)<<1)>>1];c[h+52>>2]=e[l+((g|7)<<1)>>1];c[h+20>>2]=95;Ub[c[h+4>>2]&63](f,2);g=g+8|0;if(g>>>0>=64)break d;h=c[f>>2]|0}}while(0);g=o-Y+(n?0-Y|0:0)|0;if((g|0)>0){h=W;j=X}else{j=X;h=W;break}}}if(g|0){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}c[q>>2]=h;c[r>>2]=j;break}case 221:{l=c[oa>>2]|0;m=l+4|0;g=c[m>>2]|0;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0}k=c[l>>2]|0;g=g+-1|0;h=k+1|0;k=d[k>>0]<<8;if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;j=c[l>>2]|0}else j=h;g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=4){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[m>>2]|0;h=c[l>>2]|0}j=g+-1|0;g=h+1|0;k=d[h>>0]<<8;if(!j){if(!(Gb[c[l+12>>2]&127](f)|0)){xa=0;Aa=350;break a}h=c[m>>2]|0;g=c[l>>2]|0}else h=j;Qa=k|d[g>>0];V=c[f>>2]|0;c[V+20>>2]=84;c[V+24>>2]=Qa;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[pa>>2]=Qa;c[l>>2]=g+1;c[m>>2]=h+-1;break}case 248:{m=c[oa>>2]|0;h=c[m>>2]|0;n=m+4|0;g=c[n>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46637,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if((c[Ja>>2]|0)>=3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=24){Qa=c[f>>2]|0;c[Qa+20>>2]=12;Sb[c[Qa>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)!=13){Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=c[Na>>2];Sb[c[c[f>>2]>>2]&255](f)}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)==255){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if((a[h>>0]|0)==3){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;k=c[Ka>>2]|0;if((c[k+88>>2]|0)==(d[j>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0;l=c[Ka>>2]|0}else l=k;g=g+-1|0;j=h+1|0;if((c[l>>2]|0)==(d[h>>0]|0)){if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;k=c[m>>2]|0;h=c[Ka>>2]|0}else{k=j;h=l}g=g+-1|0;j=k+1|0;if((c[h+176>>2]|0)!=(d[k>>0]|0)){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((a[j>>0]|0)!=-128){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(k|d[j>>0]|0){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;if(a[h>>0]|0){ca=g;da=j;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}else h=j;g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if((k|d[j>>0]|0)!=1){ca=g;da=h;Aa=335;break}if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;h=c[m>>2]|0}g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;if(!g){if(!(Gb[c[m+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[n>>2]|0;j=c[m>>2]|0}g=g+-1|0;h=j+1|0;if(!(k|d[j>>0])){ea=g;fa=h}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=j;Aa=335}}else{ca=g;da=h;Aa=335}}else{ca=g;da=h;Aa=335}while(0);if((Aa|0)==335){Aa=0;ea=c[f>>2]|0;c[ea+20>>2]=28;Sb[c[ea>>2]&255](f);ea=ca;fa=da}c[ra>>2]=1;c[m>>2]=fa;c[n>>2]=ea;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(Gb[c[(c[Oa>>2]|0)+32+(g+-224<<2)>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 254:{if(!(Gb[c[(c[Oa>>2]|0)+28>>2]&127](f)|0)){xa=0;Aa=350;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Qa=c[f>>2]|0;c[Qa+20>>2]=94;c[Qa+24>>2]=g;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);break}case 220:{k=c[oa>>2]|0;l=k+4|0;g=c[l>>2]|0;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0}h=c[k>>2]|0;g=g+-1|0;j=h+1|0;h=d[h>>0]<<8;if(!g){if(!(Gb[c[k+12>>2]&127](f)|0)){xa=0;Aa=350;break a}g=c[l>>2]|0;j=c[k>>2]|0}Qa=h|d[j>>0];h=Qa+-2|0;V=c[f>>2]|0;c[V+20>>2]=93;c[V+24>>2]=c[Na>>2];c[(c[f>>2]|0)+28>>2]=h;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);c[k>>2]=j+1;c[l>>2]=g+-1;if(Qa>>>0>2)Ub[c[(c[oa>>2]|0)+16>>2]&63](f,h);break}default:{Qa=c[f>>2]|0;c[Qa+20>>2]=70;c[Qa+24>>2]=g;Sb[c[c[f>>2]>>2]&255](f)}}while(0);c[Na>>2]=0;g=0}if((Aa|0)==25){q=c[oa>>2]|0;h=c[q>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!(c[(c[Oa>>2]|0)+16>>2]|0)){Qa=c[f>>2]|0;c[Qa+20>>2]=60;Wz(Qa+24|0,46633,80)|0;Sb[c[c[f>>2]>>2]&255](f)}do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}while(0);g=g+-1|0;j=h+1|0;k=d[h>>0]<<8;do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;h=c[q>>2]|0;break}else h=j;while(0);g=g+-1|0;j=h+1|0;l=k|d[h>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;k=c[q>>2]|0;break}else{h=g;k=j}while(0);m=a[k>>0]|0;p=m&255;Qa=c[f>>2]|0;c[Qa+20>>2]=105;c[Qa+24>>2]=p;Ub[c[(c[f>>2]|0)+4>>2]&63](f,1);do if(!((m&255)>4|(l|0)!=((p<<1)+6|0))){if(m<<24>>24){c[f+340>>2]=p;i=h+-1|0;ya=k+1|0;za=i;i=(i|0)==0;Aa=42;break}if(c[f+224>>2]|0){c[f+340>>2]=p;g=h+-1|0;if(!g){Ha=1;Aa=64}else{Fa=g;La=k+1|0;Ma=1}}else Aa=41}else Aa=41;while(0);if((Aa|0)==41){j=c[f>>2]|0;c[j+20>>2]=12;Sb[c[j>>2]&255](f);c[f+340>>2]=p;j=h+-1|0;g=k+1|0;h=(j|0)==0;if(!(m<<24>>24)){Da=j;Ea=g;Ga=h;Ia=1;Aa=63}else{ya=g;za=j;i=h;Aa=42}}e:do if((Aa|0)==42){n=q+12|0;o=f+344|0;m=0;g=ya;h=za;while(1){if(i){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}h=c[r>>2]|0;g=c[q>>2]|0}l=h+-1|0;i=g+1|0;h=d[g>>0]|0;f:do if(m){g=0;while(1){if((c[c[f+344+(g<<2)>>2]>>2]|0)==(h|0))break;g=g+1|0;if(g>>>0>=m>>>0)break f}g=c[c[o>>2]>>2]|0;if(m>>>0>1){h=1;do{Qa=c[c[f+344+(h<<2)>>2]>>2]|0;g=(Qa|0)>(g|0)?Qa:g;h=h+1|0}while((h|0)!=(m|0))}h=g+1|0}while(0);g=c[Ka>>2]|0;k=c[Ja>>2]|0;g:do if((k|0)>0){j=0;while(1){if((h|0)==(c[g>>2]|0)){Ca=g;break g}j=j+1|0;g=g+88|0;if((j|0)>=(k|0)){Ba=g;Aa=58;break}}}else{Ba=g;Aa=58}while(0);if((Aa|0)==58){Aa=0;Ca=c[f>>2]|0;c[Ca+20>>2]=4;c[Ca+24>>2]=h;Sb[c[c[f>>2]>>2]&255](f);Ca=Ba}c[f+344+(m<<2)>>2]=Ca;if(!l){if(!(Gb[c[n>>2]&127](f)|0)){xa=0;Aa=350;break}g=c[r>>2]|0;i=c[q>>2]|0}else g=l;h=d[i>>0]|0;za=Ca+20|0;c[za>>2]=h>>>4;Qa=Ca+24|0;c[Qa>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[Ca>>2];c[h+28>>2]=c[za>>2];c[h+32>>2]=c[Qa>>2];c[h+20>>2]=106;Ub[c[h+4>>2]&63](f,1);m=m+1|0;h=g+-1|0;g=i+1|0;i=(h|0)==0;if(m>>>0>=p>>>0){Da=h;Ea=g;Ga=i;Ia=0;Aa=63;break e}}if((Aa|0)==350){zb=Pa;return xa|0}}while(0);if((Aa|0)==63)if(Ga){Ha=Ia;Aa=64}else{Fa=Da;La=Ea;Ma=Ia}do if((Aa|0)==64)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{Fa=c[r>>2]|0;La=c[q>>2]|0;Ma=Ha;break}while(0);g=Fa+-1|0;h=La+1|0;k=f+412|0;c[k>>2]=d[La>>0];do if(!g)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{g=c[r>>2]|0;i=c[q>>2]|0;break}else i=h;while(0);h=g+-1|0;g=i+1|0;j=f+416|0;c[j>>2]=d[i>>0];do if(!h)if(!(Gb[c[q+12>>2]&127](f)|0)){Qa=0;zb=Pa;return Qa|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);Qa=d[g>>0]|0;Ka=f+420|0;c[Ka>>2]=Qa>>>4;La=f+424|0;c[La>>2]=Qa&15;Qa=c[f>>2]|0;c[Qa+24>>2]=c[k>>2];c[Qa+28>>2]=c[j>>2];c[Qa+32>>2]=c[Ka>>2];c[Qa+36>>2]=c[La>>2];c[Qa+20>>2]=107;Ub[c[Qa+4>>2]&63](f,1);c[(c[Oa>>2]|0)+20>>2]=0;if(!Ma){Qa=f+144|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[q>>2]=g+1;c[r>>2]=h+-1;c[Na>>2]=0;Qa=1;zb=Pa;return Qa|0}else if((Aa|0)==75){Qa=c[f>>2]|0;c[Qa+20>>2]=87;Ub[c[Qa+4>>2]&63](f,1);c[Na>>2]=0;Qa=2;zb=Pa;return Qa|0}else if((Aa|0)==174){Qa=0;zb=Pa;return Qa|0}else if((Aa|0)==350){zb=Pa;return xa|0}return 0}function Xt(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+440|0;b=c[f>>2]|0;do if(!b)if(!(Tt(a)|0)){f=0;return f|0}else{b=c[f>>2]|0;break}while(0);d=a+464|0;e=c[(c[d>>2]|0)+20>>2]|0;if((b|0)!=(e+208|0)){if(!(Ib[c[(c[a+24>>2]|0)+20>>2]&63](a,e)|0)){f=0;return f|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,3);c[f>>2]=0}f=(c[d>>2]|0)+20|0;c[f>>2]=(c[f>>2]|0)+1&7;f=1;return f|0}function Yt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+24|0;h=c[g>>2]|0;i=h+4|0;b=c[i>>2]|0;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;break}while(0);e=c[h>>2]|0;b=b+-1|0;f=e+1|0;e=(d[e>>0]|0)<<8;do if(!b)if(!(Gb[c[h+12>>2]&127](a)|0)){i=0;return i|0}else{b=c[i>>2]|0;f=c[h>>2]|0;break}while(0);j=e|(d[f>>0]|0);e=j+-2|0;k=c[a>>2]|0;c[k+20>>2]=93;c[k+24>>2]=c[a+440>>2];c[(c[a>>2]|0)+28>>2]=e;Ub[c[(c[a>>2]|0)+4>>2]&63](a,1);c[h>>2]=f+1;c[i>>2]=b+-1;if(j>>>0<=2){k=1;return k|0}Ub[c[(c[g>>2]|0)+16>>2]&63](a,e);k=1;return k|0}function Zt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;l=p;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!(Gb[c[n+12>>2]&127](b)|0)){o=0;zb=p;return o|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);j=g|d[f>>0];k=j+-2|0;j=j>>>0>15?14:j>>>0>2?k:0;g=e+-1|0;e=f+1|0;a:do if(!j)f=g;else{i=n+12|0;h=0;f=g;while(1){if(!f){if(!(Gb[c[i>>2]&127](b)|0)){e=0;break}f=c[o>>2]|0;e=c[n>>2]|0}a[l+h>>0]=a[e>>0]|0;h=h+1|0;f=f+-1|0;e=e+1|0;if(h>>>0>=j>>>0)break a}zb=p;return e|0}while(0);g=k-j|0;h=c[b+440>>2]|0;b:do switch(h|0){case 224:{_t(b,l,j,g);break}case 238:{if((((j>>>0>11&(a[l>>0]|0)==65?(a[l+1>>0]|0)==100:0)?(a[l+2>>0]|0)==111:0)?(a[l+3>>0]|0)==98:0)?(a[l+4>>0]|0)==101:0){h=d[l+7>>0]<<8|d[l+8>>0];i=d[l+9>>0]<<8|d[l+10>>0];k=a[l+11>>0]|0;j=c[b>>2]|0;c[j+24>>2]=d[l+5>>0]<<8|d[l+6>>0];c[j+28>>2]=h;c[j+32>>2]=i;c[j+36>>2]=k&255;c[j+20>>2]=78;Ub[c[j+4>>2]&63](b,1);c[b+296>>2]=1;a[b+300>>0]=k;break b}l=c[b>>2]|0;c[l+20>>2]=80;c[l+24>>2]=k;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1);break}default:{l=c[b>>2]|0;c[l+20>>2]=70;c[l+24>>2]=h;Sb[c[c[b>>2]>>2]&255](b)}}while(0);c[n>>2]=e;c[o>>2]=f;if((g|0)<=0){o=1;zb=p;return o|0}Ub[c[(c[m>>2]|0)+16>>2]&63](b,g);o=1;zb=p;return o|0}function _t(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(g>>>0>13){if((a[f>>0]|0)==74)if((((a[f+1>>0]|0)==70?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){c[e+284>>2]=1;j=a[f+5>>0]|0;k=e+288|0;a[k>>0]=j;l=a[f+6>>0]|0;m=e+289|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+290|0;a[p>>0]=h;i=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+292|0;b[n>>1]=i;g=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+294|0;b[o>>1]=g;if((j+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=j&255;c[(c[e>>2]|0)+28>>2]=d[m>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](e,-1);q=e;j=a[k>>0]|0;l=a[m>>0]|0;i=b[n>>1]|0;g=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=j&255;c[p+28>>2]=l&255;c[p+32>>2]=i&65535;c[p+36>>2]=g&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Ub[c[p+4>>2]&63](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=d[j>>0];Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(B((i&255)*3|0,g&255)|0))return;r=c[e>>2]|0;c[r+20>>2]=90;c[r+24>>2]=h;Ub[c[(c[e>>2]|0)+4>>2]&63](q,1);return}else i=16}else if(g>>>0>5?(a[f>>0]|0)==74:0)i=16;if(((((i|0)==16?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;switch(a[h>>0]|0){case 16:{q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 17:{q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}case 19:{q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}default:{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[(c[e>>2]|0)+28>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Ub[c[(c[e>>2]|0)+4>>2]&63](e,1);return}function $t(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+24>>2]|0;h=c[o>>2]|0;p=o+4|0;g=c[p>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;e=(d[h>>0]|0)<<8;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;j=e|(d[h>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;c[a+212>>2]=d[h>>0];do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}else h=b;while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;i=a+32|0;c[i>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;e=c[i>>2]|0;break}else e=h;while(0);g=g+-1|0;h=b+1|0;c[i>>2]=e+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;h=c[o>>2]|0;break}while(0);g=g+-1|0;b=h+1|0;h=(d[h>>0]|0)<<8;f=a+28|0;c[f>>2]=h;do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{g=c[p>>2]|0;b=c[o>>2]|0;h=c[f>>2]|0;break}while(0);g=g+-1|0;e=b+1|0;c[f>>2]=h+(d[b>>0]|0);do if(!g)if(!(Gb[c[o+12>>2]&127](a)|0)){p=0;return p|0}else{b=c[p>>2]|0;e=c[o>>2]|0;break}else b=g;while(0);m=a+36|0;c[m>>2]=d[e>>0];h=j+-8|0;n=c[a>>2]|0;c[n+24>>2]=c[a+440>>2];c[n+28>>2]=c[f>>2];c[n+32>>2]=c[i>>2];c[n+36>>2]=c[m>>2];c[n+20>>2]=102;Ub[c[n+4>>2]&63](a,1);n=a+464|0;if(c[(c[n>>2]|0)+16>>2]|0){l=c[a>>2]|0;c[l+20>>2]=61;Sb[c[l>>2]&255](a)}if(((c[i>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(k=c[m>>2]|0,(k|0)>=1):0)g=k;else{g=c[a>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](a);g=c[m>>2]|0}if((h|0)!=(g*3|0)){l=c[a>>2]|0;c[l+20>>2]=12;Sb[c[l>>2]&255](a)}l=a+216|0;if(!(c[l>>2]|0)){k=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[m>>2]|0)*88|0)|0;c[l>>2]=k}b=b+-1|0;g=e+1|0;a:do if((c[m>>2]|0)>0){k=o+12|0;j=0;while(1){if(!b){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}b=c[p>>2]|0;g=c[o>>2]|0}f=b+-1|0;h=g+1|0;e=d[g>>0]|0;i=c[l>>2]|0;b:do if(!j)b=e;else{g=i;b=0;while(1){if((c[g>>2]|0)==(e|0))break;b=b+1|0;g=g+88|0;if(b>>>0>=j>>>0){b=e;i=g;break b}}b=c[i>>2]|0;g=i+88|0;if(j>>>0>1){e=1;while(1){q=c[g>>2]|0;b=(q|0)>(b|0)?q:b;e=e+1|0;if((e|0)==(j|0))break;else g=g+88|0}g=i+(j*88|0)|0}b=b+1|0;i=g}while(0);c[i>>2]=b;c[i+4>>2]=j;if(!f){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else g=f;g=g+-1|0;b=h+1|0;q=d[h>>0]|0;e=i+8|0;c[e>>2]=q>>>4;f=i+12|0;c[f>>2]=q&15;if(!g){if(!(Gb[c[k>>2]&127](a)|0)){g=0;h=57;break}g=c[p>>2]|0;h=c[o>>2]|0}else h=b;q=i+16|0;c[q>>2]=d[h>>0];b=c[a>>2]|0;c[b+24>>2]=c[i>>2];c[b+28>>2]=c[e>>2];c[b+32>>2]=c[f>>2];c[b+36>>2]=c[q>>2];c[b+20>>2]=103;Ub[c[b+4>>2]&63](a,1);j=j+1|0;b=g+-1|0;g=h+1|0;if((j|0)>=(c[m>>2]|0))break a}if((h|0)==57)return g|0}while(0);c[(c[n>>2]|0)+16>>2]=1;c[o>>2]=g;c[p>>2]=b;q=1;return q|0}function au(a){a=a|0;a=Jb[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[a+276>>2]=0;return a|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+20|0;b=c[k>>2]|0;a:do switch(b|0){case 202:{cu(a);if(!(c[a+64>>2]|0)){c[k>>2]=203;d=6;break a}c[k>>2]=207;k=1;return k|0}case 203:{d=6;break}case 204:{b=a+444|0;break}default:{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a);d=17}}while(0);if((d|0)==6){g=a+460|0;b:do if(c[(c[g>>2]|0)+16>>2]|0){e=a+8|0;f=a+332|0;b=c[e>>2]|0;c:while(1){if(b|0)Sb[c[b>>2]&255](a);b=Gb[c[c[g>>2]>>2]&127](a)|0;switch(b|0){case 2:break b;case 0:break c;default:{}}d=c[e>>2]|0;if((b|2|0)==3&(d|0)!=0?(h=d+4|0,j=(c[h>>2]|0)+1|0,c[h>>2]=j,h=d+8|0,i=c[h>>2]|0,(j|0)>=(i|0)):0)c[h>>2]=(c[f>>2]|0)+i;b=d}return b|0}while(0);c[a+152>>2]=c[a+144>>2];d=17}if((d|0)==17){b=a+444|0;if((c[k>>2]|0)!=204){Sb[c[c[b>>2]>>2]&255](a);c[a+140>>2]=0;c[k>>2]=204}}d=c[b>>2]|0;d:do if(c[d+8>>2]|0){g=a+140|0;h=a+116|0;i=a+8|0;j=a+448|0;f=c[g>>2]|0;e:while(1){e=c[h>>2]|0;if(f>>>0>>0){do{d=c[i>>2]|0;if(!d)d=f;else{c[d+4>>2]=f;c[d+8>>2]=e;Sb[c[d>>2]&255](a);d=c[g>>2]|0}Xb[c[(c[j>>2]|0)+4>>2]&31](a,0,g,0);f=c[g>>2]|0;if((f|0)==(d|0)){b=0;break e}e=c[h>>2]|0}while(f>>>0>>0);d=c[b>>2]|0}Sb[c[d+4>>2]&255](a);Sb[c[c[b>>2]>>2]&255](a);c[g>>2]=0;d=c[b>>2]|0;if(!(c[d+8>>2]|0))break d;else f=0}return b|0}while(0);c[k>>2]=(c[a+68>>2]|0)==0?205:206;k=1;return k|0}function cu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Jb[c[c[k>>2]>>2]&63](b,1,28)|0;c[b+444>>2]=i;c[i>>2]=118;c[i+4>>2]=119;c[i+8>>2]=0;d=c[b+212>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}fu(b);e=Jb[c[c[k>>2]>>2]&63](b,1,1280)|0;aP(e|0,0,512)|0;f=e+512|0;c[b+336>>2]=f;d=0;do{a[f+d>>0]=d;d=d+1|0}while((d|0)!=256);aP(e+768|0,-1,512)|0;if(!(((c[b+116>>2]|0)!=0?(c[b+112>>2]|0)!=0:0)?(g=b+120|0,(c[g>>2]|0)>=1):0)){g=c[b>>2]|0;c[g+20>>2]=33;Sb[c[g>>2]&255](b);g=b+120|0}j=i+12|0;c[j>>2]=0;f=gu(b)|0;h=i+16|0;c[h>>2]=f;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(c[b+84>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;e=b+68|0}else{if(!(c[b+64>>2]|0)){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}e=b+68|0;if(c[e>>2]|0){i=c[b>>2]|0;c[i+20>>2]=48;Sb[c[i>>2]&255](b)}do if((c[g>>2]|0)==3){if(c[b+136>>2]|0){c[b+104>>2]=1;break}if(!(c[b+92>>2]|0)){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}while(0);if(c[b+100>>2]|0){hu(b);c[f>>2]=c[b+484>>2]}if((c[b+108>>2]|0)==0?(c[b+104>>2]|0)==0:0)break;iu(b);c[d>>2]=c[b+484>>2]}while(0);if(!(c[e>>2]|0)){if(!(c[h>>2]|0)){ku(b);lu(b)}else ju(b);mu(b,c[b+108>>2]|0)}nu(b);if(!(c[b+228>>2]|0))pu(b);else ou(b);f=b+460|0;if(!(c[(c[f>>2]|0)+16>>2]|0))d=(c[b+64>>2]|0)!=0&1;else d=1;qu(b,d);if(!(c[e>>2]|0))ru(b,0);Sb[c[(c[k>>2]|0)+24>>2]&255](b);Sb[c[(c[f>>2]|0)+8>>2]&255](b);d=c[b+8>>2]|0;if(!d)return;if(c[b+64>>2]|0)return;if(!(c[(c[f>>2]|0)+16>>2]|0))return;k=c[b+36>>2]|0;k=(c[b+224>>2]|0)==0?k:(k*3|0)+2|0;c[d+4>>2]=0;k=B(k,c[b+332>>2]|0)|0;c[d+8>>2]=k;c[d+12>>2]=0;c[d+16>>2]=(c[b+108>>2]|0)==0?2:3;c[j>>2]=(c[j>>2]|0)+1;return}function du(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a+444>>2]|0;e=d+8|0;if(!(c[e>>2]|0)){b=a+84|0;do if(c[b>>2]|0?(c[a+136>>2]|0)==0:0){if(c[a+92>>2]|0?c[a+108>>2]|0:0){c[a+484>>2]=c[d+24>>2];c[e>>2]=1;break}if(!(c[a+100>>2]|0)){f=c[a>>2]|0;c[f+20>>2]=47;Sb[c[f>>2]&255](a);break}else{c[a+484>>2]=c[d+20>>2];break}}while(0);Sb[c[c[a+472>>2]>>2]&255](a);Sb[c[(c[a+452>>2]|0)+8>>2]&255](a);if(!(c[a+68>>2]|0)){if(!(c[d+16>>2]|0))Sb[c[c[a+480>>2]>>2]&255](a);Sb[c[c[a+476>>2]>>2]&255](a);if(c[b>>2]|0)Ub[c[c[a+484>>2]>>2]&63](a,c[e>>2]|0);Ub[c[c[a+456>>2]>>2]&63](a,(c[e>>2]|0)==0?0:3);Ub[c[c[a+448>>2]>>2]&63](a,0)}}else{c[e>>2]=0;Ub[c[c[a+484>>2]>>2]&63](a,0);Ub[c[c[a+456>>2]>>2]&63](a,2);Ub[c[c[a+448>>2]>>2]&63](a,2)}b=c[a+8>>2]|0;if(!b)return;d=c[d+12>>2]|0;c[b+12>>2]=d;d=((c[e>>2]|0)==0?1:2)+d|0;b=b+16|0;c[b>>2]=d;if(!(c[a+64>>2]|0))return;if(c[(c[a+460>>2]|0)+20>>2]|0)return;c[b>>2]=((c[a+108>>2]|0)==0?1:2)+d;return}function eu(a){a=a|0;var b=0;b=c[a+444>>2]|0;if(c[a+84>>2]|0)Sb[c[(c[a+484>>2]|0)+8>>2]&255](a);b=b+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=c[a+20>>2]|0;if((b|0)!=202){t=c[a>>2]|0;c[t+20>>2]=21;c[t+24>>2]=b;Sb[c[c[a>>2]>>2]&255](a)}xw(a);d=c[a+216>>2]|0;t=a+36|0;b=c[t>>2]|0;o=(b|0)>0;if(o){p=c[a+324>>2]|0;q=(c[a+76>>2]|0)==0?4:8;r=a+320|0;s=c[a+328>>2]|0;if((p|0)>(q|0)){k=(s|0)>(q|0);l=p<<1;i=d;j=0;while(1){m=i+36|0;c[m>>2]=p;a:do if(k)e=s;else{h=c[r>>2]|0;g=c[i+12>>2]|0;f=1;e=s;do{f=f<<1;if((h|0)%(B(f,g)|0)|0|0)break a;e=B(s,f)|0}while((e|0)<=(q|0))}while(0);f=i+40|0;c[f>>2]=e;g=e<<1;if((p|0)<=(g|0)){if((e|0)>(l|0))c[f>>2]=l}else c[m>>2]=g;j=j+1|0;if((j|0)>=(b|0))break;else i=i+88|0}}else{m=c[a+316>>2]|0;n=(s|0)>(q|0);k=d;l=0;while(1){g=c[k+8>>2]|0;f=1;e=p;do{f=f<<1;if((m|0)%(B(f,g)|0)|0|0)break;e=B(p,f)|0}while((e|0)<=(q|0));j=k+36|0;c[j>>2]=e;b:do if(n)g=s;else{h=c[r>>2]|0;i=c[k+12>>2]|0;f=1;g=s;do{f=f<<1;if((h|0)%(B(f,i)|0)|0|0)break b;g=B(s,f)|0}while((g|0)<=(q|0))}while(0);h=k+40|0;c[h>>2]=g;f=g<<1;if((e|0)<=(f|0)){e=e<<1;if((g|0)>(e|0))c[h>>2]=e}else c[j>>2]=f;l=l+1|0;if((l|0)>=(b|0))break;else k=k+88|0}}if(o){f=a+28|0;g=a+316|0;h=a+428|0;i=a+32|0;j=a+320|0;e=0;while(1){b=B(B(c[d+8>>2]|0,c[f>>2]|0)|0,c[d+36>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[g>>2]|0)|0)|0;c[d+44>>2]=b;b=B(B(c[d+12>>2]|0,c[i>>2]|0)|0,c[d+40>>2]|0)|0;b=yw(b,B(c[h>>2]|0,c[j>>2]|0)|0)|0;c[d+48>>2]=b;e=e+1|0;b=c[t>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}}d=c[a+44>>2]|0;switch(d|0){case 1:{b=d;break}case 6:case 2:{b=3;break}case 7:case 3:{b=3;break}case 5:case 4:{b=4;break}default:{}}c[a+120>>2]=b;c[a+124>>2]=(c[a+84>>2]|0)==0?b:1;if(!(gu(a)|0)){t=1;a=a+128|0;c[a>>2]=t;return}t=c[a+320>>2]|0;a=a+128|0;c[a>>2]=t;return}function gu(a){a=a|0;var b=0,d=0;if(c[a+308>>2]|0)return 0;switch(c[a+40>>2]|0){case 7:case 3:break;default:return 0}if((c[a+36>>2]|0)!=3)return 0;if((c[a+44>>2]|0)!=2)return 0;if((c[a+120>>2]|0)!=3)return 0;if(c[a+304>>2]|0)return 0;d=c[a+216>>2]|0;if((c[d+8>>2]|0)!=2)return 0;if((c[d+96>>2]|0)!=1)return 0;if((c[d+184>>2]|0)!=1)return 0;if((c[d+12>>2]|0)>2)return 0;if((c[d+100>>2]|0)!=1)return 0;if((c[d+188>>2]|0)!=1)return 0;b=c[d+36>>2]|0;if((b|0)!=(c[a+324>>2]|0))return 0;if((c[d+124>>2]|0)!=(b|0))return 0;if((c[d+212>>2]|0)!=(b|0))return 0;b=c[d+40>>2]|0;if((b|0)!=(c[a+328>>2]|0))return 0;if((c[d+128>>2]|0)==(b|0))return (c[d+216>>2]|0)==(b|0)|0;else return 0;return 0}function hu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=b+4|0;t=Jb[c[c[s>>2]>>2]&63](b,1,88)|0;r=b+484|0;c[r>>2]=t;c[t>>2]=48;c[t+8>>2]=120;c[t+12>>2]=121;c[t+68>>2]=0;c[t+52>>2]=0;t=b+120|0;if((c[t>>2]|0)>4){n=c[b>>2]|0;c[n+20>>2]=57;c[n+24>>2]=4;Sb[c[c[b>>2]>>2]&255](b)}d=b+96|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Sb[c[c[b>>2]>>2]&255](b);e=c[d>>2]|0}n=c[r>>2]|0;l=n+32|0;k=c[t>>2]|0;if((k|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=B(d,g)|0;f=f+1|0}while((f|0)!=(k|0));if((d|0)>(e|0)){f=h;break}else h=g}}else{f=(e|0)>1?e:1;d=f+1|0}if(f>>>0<2){j=c[b>>2]|0;c[j+20>>2]=58;c[j+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}a:do if((k|0)>0){h=1;d=0;do{c[n+32+(d<<2)>>2]=f;h=B(h,f)|0;d=d+1|0}while((d|0)!=(k|0));if((c[b+44>>2]|0)==2){g=0;d=0;f=h;while(1){h=n+32+(c[15924+(d<<2)>>2]<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=22}}else{d=g;m=22}if((m|0)==22){m=0;if(!d)break a;else{g=0;d=0}}}}else{g=0;d=0;f=h;while(1){h=n+32+(d<<2)|0;j=c[h>>2]|0;i=j+1|0;j=B((f|0)/(j|0)|0,i)|0;if((j|0)<=(e|0)){c[h>>2]=i;d=d+1|0;if((d|0)<(k|0)){g=1;f=j}else{d=1;f=j;m=26}}else{d=g;m=26}if((m|0)==26){m=0;if(!d)break a;else{g=0;d=0}}}}}else f=1;while(0);d=c[b>>2]|0;if((c[t>>2]|0)==3){c[d+24>>2]=f;c[d+28>>2]=c[l>>2];c[d+32>>2]=c[n+36>>2];c[d+36>>2]=c[n+40>>2];c[d+20>>2]=96;Ub[c[d+4>>2]&63](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=f;Ub[c[(c[b>>2]|0)+4>>2]&63](b,1)}m=Kb[c[(c[s>>2]|0)+8>>2]&15](b,1,f,c[t>>2]|0)|0;d=c[t>>2]|0;if((d|0)>0){k=0;l=f;do{j=c[n+32+(k<<2)>>2]|0;i=l;l=(l|0)/(j|0)|0;if((j|0)>0?(o=j+-1|0,p=(o|0)/2|0,q=m+(k<<2)|0,(l|0)>0):0){g=0;do{d=B(g,l)|0;if((d|0)<(f|0)){h=(((g*255|0)+p|0)/(o|0)|0)&255;do{e=0;do{a[(c[q>>2]|0)+(e+d)>>0]=h;e=e+1|0}while((e|0)!=(l|0));d=d+i|0}while((d|0)<(f|0))}g=g+1|0}while((g|0)!=(j|0));d=c[t>>2]|0}k=k+1|0}while((k|0)<(d|0))}c[n+16>>2]=m;c[n+20>>2]=f;rw(b);if((c[b+88>>2]|0)!=2)return;e=c[r>>2]|0;f=(c[b+112>>2]<<1)+4|0;if((c[t>>2]|0)<=0)return;d=0;do{r=Jb[c[(c[s>>2]|0)+4>>2]&63](b,1,f)|0;c[e+68+(d<<2)>>2]=r;d=d+1|0}while((d|0)<(c[t>>2]|0));return}function iu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;e=Jb[c[c[f>>2]>>2]&63](a,1,44)|0;c[a+484>>2]=e;c[e>>2]=49;c[e+12>>2]=122;g=e+32|0;c[g>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){d=c[a>>2]|0;c[d+20>>2]=48;Sb[c[d>>2]&255](a)}b=Jb[c[c[f>>2]>>2]&63](a,1,128)|0;d=e+24|0;c[d>>2]=b;b=0;do{h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,4096)|0;c[(c[d>>2]|0)+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=32);c[e+28>>2]=1;if(!(c[a+108>>2]|0))c[e+16>>2]=0;else{b=c[a+96>>2]|0;if((b|0)>=8){if((b|0)>256){h=c[a>>2]|0;c[h+20>>2]=59;c[h+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{h=c[a>>2]|0;c[h+20>>2]=58;c[h+24>>2]=8;Sb[c[c[a>>2]>>2]&255](a)}h=Kb[c[(c[f>>2]|0)+8>>2]&15](a,1,b,3)|0;c[e+16>>2]=h;c[e+20>>2]=b}b=a+88|0;if(!(c[b>>2]|0))return;c[b>>2]=2;h=Jb[c[(c[f>>2]|0)+4>>2]&63](a,1,((c[a+112>>2]|0)*6|0)+12|0)|0;c[g>>2]=h;gw(a);return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+4|0;b=Jb[c[c[g>>2]>>2]&63](a,1,48)|0;f=a+476|0;c[f>>2]=b;c[b>>2]=123;c[b+8>>2]=0;d=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[b+40>>2]=d;e=b+4|0;if((c[a+320>>2]|0)==2){c[e>>2]=1;c[b+12>>2]=9;e=Jb[c[(c[g>>2]|0)+4>>2]&63](a,1,d)|0;c[b+32>>2]=e;b=c[f>>2]|0}else{c[e>>2]=2;c[b+12>>2]=10;c[b+32>>2]=0}d=(c[a+40>>2]|0)==7;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;e=b+16|0;c[e>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;f=b+20|0;c[f>>2]=i;i=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;h=b+24|0;c[h>>2]=i;g=Jb[c[c[g>>2]>>2]&63](a,1,1024)|0;c[b+28>>2]=g;e=c[e>>2]|0;f=c[f>>2]|0;a=c[h>>2]|0;if(d){b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*183763|0)+32768>>16;c[f+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[a+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}else{b=0;d=-128;while(1){c[e+(b<<2)>>2]=(d*91881|0)+32768>>16;c[f+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[a+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[g+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}return}}function ku(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;e=Jb[c[c[b>>2]>>2]&63](a,1,28)|0;g=a+480|0;c[g>>2]=e;c[e>>2]=124;h=a+40|0;switch(c[h>>2]|0){case 1:{if((c[a+36>>2]|0)!=1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 7:case 6:case 3:case 2:{if((c[a+36>>2]|0)!=3){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}case 5:case 4:{if((c[a+36>>2]|0)!=4){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}break}default:if((c[a+36>>2]|0)<1){f=c[a>>2]|0;c[f+20>>2]=11;Sb[c[f>>2]&255](a)}}d=a+304|0;a:do if(c[d>>2]|0){switch(c[h>>2]|0){case 6:case 2:break a;default:{}}f=c[a>>2]|0;c[f+20>>2]=28;Sb[c[f>>2]&255](a)}while(0);f=c[a+44>>2]|0;b:do switch(f|0){case 1:{c[a+120>>2]=1;switch(c[h>>2]|0){case 7:case 3:case 1:{c[e+4>>2]=4;d=c[a+36>>2]|0;if((d|0)<=1)break b;e=c[a+216>>2]|0;b=1;do{c[e+(b*88|0)+52>>2]=0;b=b+1|0}while((b|0)<(d|0));break}case 2:{switch(c[d>>2]|0){case 0:{c[e+4>>2]=5;break}case 1:{c[e+4>>2]=6;break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a)}}h=c[g>>2]|0;d=Jb[c[c[b>>2]>>2]&63](a,1,3072)|0;c[h+24>>2]=d;b=0;do{c[d+(b<<2)>>2]=b*19595;c[d+(b+256<<2)>>2]=b*38470;c[d+(b+512<<2)>>2]=(b*7471|0)+32768;b=b+1|0}while((b|0)!=256);break}default:{h=c[a>>2]|0;c[h+20>>2]=28;Sb[c[h>>2]&255](a);break b}}break}case 2:{c[a+120>>2]=3;switch(c[h>>2]|0){case 1:{c[e+4>>2]=7;break b}case 3:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 7:{c[e+4>>2]=8;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*183763|0)+32768>>16;c[g+(b<<2)>>2]=(d*232260|0)+32768>>16;i=B(d,-93603)|0;c[h+(b<<2)>>2]=i;i=(B(d,-45107)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 2:switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}case 6:{c[a+120>>2]=3;if((c[h>>2]|0)!=6){i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}switch(c[d>>2]|0){case 0:{c[e+4>>2]=9;break b}case 1:{c[e+4>>2]=10;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}}case 4:{c[a+120>>2]=4;switch(c[h>>2]|0){case 5:{c[e+4>>2]=11;d=c[g>>2]|0;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;f=d+8|0;c[f>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;g=d+12|0;c[g>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;h=d+16|0;c[h>>2]=e;e=Jb[c[c[b>>2]>>2]&63](a,1,1024)|0;c[d+20>>2]=e;f=c[f>>2]|0;g=c[g>>2]|0;h=c[h>>2]|0;b=0;d=-128;while(1){c[f+(b<<2)>>2]=(d*91881|0)+32768>>16;c[g+(b<<2)>>2]=(d*116130|0)+32768>>16;i=B(d,-46802)|0;c[h+(b<<2)>>2]=i;i=(B(d,-22553)|0)+32768|0;c[e+(b<<2)>>2]=i;b=b+1|0;if((b|0)==256)break;else d=d+1|0}break}case 4:{c[e+4>>2]=12;break b}default:{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}break}default:if((f|0)==(c[h>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=12;break b}else{i=c[a>>2]|0;c[i+20>>2]=28;Sb[c[i>>2]&255](a);break b}}while(0);if(c[a+84>>2]|0){h=1;i=a+124|0;c[i>>2]=h;return}h=c[a+120>>2]|0;i=a+124|0;c[i>>2]=h;return}function lu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=b+4|0;d=Jb[c[c[m>>2]>>2]&63](b,1,160)|0;c[b+476>>2]=d;c[d>>2]=125;c[d+4>>2]=3;c[d+8>>2]=0;if(c[b+308>>2]|0){w=c[b>>2]|0;c[w+20>>2]=26;Sb[c[w>>2]&255](b)}n=b+36|0;if((c[n>>2]|0)<=0)return;o=b+324|0;p=b+328|0;q=b+316|0;r=b+320|0;s=d+100|0;t=d+52|0;u=b+112|0;v=d+12|0;w=d+140|0;h=d+150|0;f=c[b+216>>2]|0;g=0;while(1){i=B(c[f+36>>2]|0,c[f+8>>2]|0)|0;i=(i|0)/(c[o>>2]|0)|0;j=B(c[f+40>>2]|0,c[f+12>>2]|0)|0;j=(j|0)/(c[p>>2]|0)|0;k=c[q>>2]|0;l=c[r>>2]|0;c[s+(g<<2)>>2]=j;do if(!(c[f+52>>2]|0))c[t+(g<<2)>>2]=11;else{d=(j|0)==(l|0);if((i|0)==(k|0)&d){c[t+(g<<2)>>2]=12;break}e=(i<<1|0)==(k|0);do if(e&d)c[t+(g<<2)>>2]=13;else{if(e&(j<<1|0)==(l|0)){c[t+(g<<2)>>2]=14;break}d=(k|0)/(i|0)|0;if((k-(B(d,i)|0)|0)==0?(x=(l|0)/(j|0)|0,(l-(B(x,j)|0)|0)==0):0){c[t+(g<<2)>>2]=15;a[w+g>>0]=d;a[h+g>>0]=x;break}l=c[b>>2]|0;c[l+20>>2]=39;Sb[c[l>>2]&255](b)}while(0);k=c[(c[m>>2]|0)+8>>2]|0;l=yu(c[u>>2]|0,c[q>>2]|0)|0;l=Kb[k&15](b,1,l,c[r>>2]|0)|0;c[v+(g<<2)>>2]=l}while(0);g=g+1|0;if((g|0)>=(c[n>>2]|0))break;else f=f+88|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=Jb[c[c[f>>2]>>2]&63](a,1,28)|0;c[a+456>>2]=d;c[d>>2]=50;h=d+8|0;c[h>>2]=0;i=d+12|0;c[i>>2]=0;if(!(c[a+84>>2]|0))return;g=c[a+320>>2]|0;e=d+16|0;c[e>>2]=g;d=c[f>>2]|0;if(!b){h=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=Kb[c[d+8>>2]&15](a,1,h,g)|0;c[i>>2]=h;return}else{f=c[d+16>>2]|0;b=B(c[a+120>>2]|0,c[a+112>>2]|0)|0;i=yu(c[a+116>>2]|0,g)|0;i=Ob[f&63](a,1,0,b,i,c[e>>2]|0)|0;c[h>>2]=i;return}}function nu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Jb[c[c[f>>2]>>2]&63](a,1,84)|0;c[a+472>>2]=b;c[b>>2]=126;g=a+36|0;if((c[g>>2]|0)<=0)return;e=b+44|0;b=0;d=c[a+216>>2]|0;while(1){h=Jb[c[c[f>>2]>>2]&63](a,1,256)|0;c[d+84>>2]=h;aP(h|0,0,256)|0;c[e+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;else d=d+88|0}return}function ou(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+4|0;e=Jb[c[c[g>>2]>>2]&63](b,1,192)|0;c[b+468>>2]=e;c[e>>2]=127;c[e+8>>2]=128;d=e+188|0;e=e+60|0;f=e+128|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[d>>0]=113;if(!(c[b+224>>2]|0))return;f=b+36|0;e=Jb[c[c[g>>2]>>2]&63](b,1,c[f>>2]<<8)|0;c[b+160>>2]=e;if((c[f>>2]|0)<=0)return;d=0;do{aP(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;f=Jb[c[c[b>>2]>>2]&63](a,1,220)|0;c[a+468>>2]=f;c[f>>2]=129;c[f+8>>2]=130;if(!(c[a+224>>2]|0)){e=f+68|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[f+88>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;return}e=a+36|0;d=Jb[c[c[b>>2]>>2]&63](a,1,c[e>>2]<<8)|0;c[a+160>>2]=d;if((c[e>>2]|0)>0){b=0;do{aP(d+(b<<8)|0,-1,256)|0;b=b+1|0}while((b|0)<(c[e>>2]|0))}f=f+48|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;return}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=a+4|0;i=Jb[c[c[h>>2]>>2]&63](a,1,116)|0;c[a+452>>2]=i;c[i>>2]=131;c[i+8>>2]=132;c[i+112>>2]=0;if(!b){b=Jb[c[(c[h>>2]|0)+4>>2]&63](a,1,1280)|0;c[i+32>>2]=b;c[i+36>>2]=b+128;c[i+40>>2]=b+256;c[i+44>>2]=b+384;c[i+48>>2]=b+512;c[i+52>>2]=b+640;c[i+56>>2]=b+768;c[i+60>>2]=b+896;c[i+64>>2]=b+1024;c[i+68>>2]=b+1152;if(!(c[a+436>>2]|0))aP(b|0,0,1280)|0;c[i+4>>2]=89;c[i+12>>2]=35;c[i+16>>2]=0;return}f=a+36|0;if((c[f>>2]|0)>0){g=a+224|0;b=i+72|0;d=0;e=c[a+216>>2]|0;while(1){k=e+12|0;j=c[k>>2]|0;j=(c[g>>2]|0)==0?j:j*3|0;m=c[(c[h>>2]|0)+20>>2]|0;l=yu(c[e+28>>2]|0,c[e+8>>2]|0)|0;k=yu(c[e+32>>2]|0,c[k>>2]|0)|0;j=Ob[m&63](a,1,1,l,k,j)|0;c[b+(d<<2)>>2]=j;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}}else b=i+72|0;c[i+4>>2]=88;c[i+12>>2]=34;c[i+16>>2]=b;return}function ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;j=Jb[c[c[l>>2]>>2]&63](a,1,80)|0;d=a+448|0;c[d>>2]=j;c[j>>2]=51;if(b|0){k=c[a>>2]|0;c[k+20>>2]=3;Sb[c[k>>2]&255](a)}k=a+328|0;e=c[k>>2]|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[j+52>>2]=e;b=a+36|0;h=e;g=b;b=c[b>>2]|0;d=e}else{if((e|0)<2){e=c[a>>2]|0;c[e+20>>2]=48;Sb[c[e>>2]&255](a);e=c[k>>2]|0}h=c[d>>2]|0;i=a+36|0;f=Jb[c[c[l>>2]>>2]&63](a,1,c[i>>2]<<3)|0;g=h+60|0;c[g>>2]=f;b=c[i>>2]|0;h=h+64|0;c[h>>2]=f+(b<<2);if((b|0)>0){f=e+4|0;d=c[a+216>>2]|0;e=0;while(1){m=B(c[d+40>>2]|0,c[d+12>>2]|0)|0;m=(m|0)/(c[k>>2]|0)|0;b=B(m,f)|0;m=(Jb[c[c[l>>2]>>2]&63](a,1,b<<3)|0)+(m<<2)|0;c[(c[g>>2]|0)+(e<<2)>>2]=m;c[(c[h>>2]|0)+(e<<2)>>2]=m+(b<<2);e=e+1|0;b=c[i>>2]|0;if((e|0)>=(b|0))break;else d=d+88|0}}d=c[k>>2]|0;h=d+2|0;g=i}if((b|0)<=0)return;f=j+8|0;b=0;e=c[a+216>>2]|0;while(1){m=(B(c[e+40>>2]|0,c[e+12>>2]|0)|0)/(d|0)|0;j=B(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=B(m,h)|0;m=Kb[c[(c[l>>2]|0)+8>>2]&15](a,1,j,m)|0;c[f+(b<<2)>>2]=m;b=b+1|0;if((b|0)>=(c[g>>2]|0))break;e=e+88|0;d=c[k>>2]|0}return}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=c[a+448>>2]|0;switch(b|0){case 0:{b=r+4|0;if(!(c[(c[a+476>>2]|0)+8>>2]|0)){c[b>>2]=17;c[r+48>>2]=c[r+52>>2];return}c[b>>2]=16;l=c[a+328>>2]|0;m=c[a+36>>2]|0;if((m|0)>0){n=r+60|0;o=r+64|0;p=l+2|0;q=l+-2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(l|0)|0;k=c[(c[n>>2]|0)+(i<<2)>>2]|0;f=c[(c[o>>2]|0)+(i<<2)>>2]|0;g=c[r+8+(i<<2)>>2]|0;a=B(j,p)|0;if((a|0)>0){b=0;do{e=c[g+(b<<2)>>2]|0;c[f+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(a|0))}a=j<<1;if((j|0)>0){d=B(j,l)|0;e=B(j,q)|0;b=0;do{s=b+d|0;t=b+e|0;c[f+(t<<2)>>2]=c[g+(s<<2)>>2];c[f+(s<<2)>>2]=c[g+(t<<2)>>2];b=b+1|0}while((b|0)<(a|0));b=0;do{c[k+(b-j<<2)>>2]=c[k>>2];b=b+1|0}while((b|0)!=(j|0))}i=i+1|0;if((i|0)==(m|0))break;else h=h+88|0}}c[r+68>>2]=0;c[r+72>>2]=0;c[r+76>>2]=0;c[r+56>>2]=0;return}case 2:{c[r+4>>2]=18;return}default:{t=c[a>>2]|0;c[t+20>>2]=3;Sb[c[t>>2]&255](a);return}}}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=a+448|0;w=c[v>>2]|0;y=w+56|0;do if(!(c[y>>2]|0))if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,c[w+60+(c[w+68>>2]<<2)>>2]|0)|0))return;else{c[y>>2]=1;x=w+76|0;c[x>>2]=(c[x>>2]|0)+1;break}while(0);x=w+72|0;switch(c[x>>2]|0){case 2:{f=w+48|0;g=w+52|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[w+68>>2]<<2)>>2]|0,f,c[g>>2]|0,b,d,e);if((c[f>>2]|0)>>>0<(c[g>>2]|0)>>>0)return;c[x>>2]=0;if((c[d>>2]|0)>>>0>>0)h=9;else return;break}case 0:{f=w+48|0;g=w+52|0;h=9;break}case 1:{u=w+48|0;t=w+52|0;break}default:return}if((h|0)==9){c[f>>2]=0;p=c[a+328>>2]|0;c[g>>2]=p+-1;if((c[w+76>>2]|0)==(c[a+332>>2]|0)?(i=c[v>>2]|0,r=c[a+36>>2]|0,(r|0)>0):0){q=i+52|0;l=i+60+(c[i+68>>2]<<2)|0;j=c[a+216>>2]|0;k=0;while(1){u=B(c[j+40>>2]|0,c[j+12>>2]|0)|0;h=(u|0)/(p|0)|0;o=((c[j+48>>2]|0)>>>0)%(u>>>0)|0;o=(o|0)==0?u:o;if(!k)c[q>>2]=((o+-1|0)/(h|0)|0)+1;m=c[(c[l>>2]|0)+(k<<2)>>2]|0;n=h<<1;if((h|0)>0){i=m+(o+-1<<2)|0;h=0;do{c[m+(h+o<<2)>>2]=c[i>>2];h=h+1|0}while((h|0)<(n|0))}k=k+1|0;if((k|0)==(r|0))break;else j=j+88|0}}c[x>>2]=1;u=f;t=g}s=w+68|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,c[w+60+(c[s>>2]<<2)>>2]|0,u,c[t>>2]|0,b,d,e);if((c[u>>2]|0)>>>0<(c[t>>2]|0)>>>0)return;if((c[w+76>>2]|0)==1){g=c[v>>2]|0;f=c[a+328>>2]|0;r=c[a+36>>2]|0;if((r|0)>0){b=g+60|0;o=g+64|0;p=f+1|0;q=f+2|0;h=c[a+216>>2]|0;i=0;while(1){j=(B(c[h+40>>2]|0,c[h+12>>2]|0)|0)/(f|0)|0;k=c[(c[b>>2]|0)+(i<<2)>>2]|0;l=c[(c[o>>2]|0)+(i<<2)>>2]|0;if((j|0)>0){m=B(j,p)|0;n=B(j,q)|0;g=0;do{w=g+m|0;a=g-j|0;c[k+(a<<2)>>2]=c[k+(w<<2)>>2];c[l+(a<<2)>>2]=c[l+(w<<2)>>2];a=g+n|0;c[k+(a<<2)>>2]=c[k+(g<<2)>>2];c[l+(a<<2)>>2]=c[l+(g<<2)>>2];g=g+1|0}while((g|0)!=(j|0))}i=i+1|0;if((i|0)==(r|0))break;else h=h+88|0}}}else f=c[a+328>>2]|0;c[s>>2]=c[s>>2]^1;c[y>>2]=0;c[u>>2]=f+1;c[t>>2]=f+2;c[x>>2]=2;return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[a+448>>2]|0;i=f+48|0;h=f+52|0;g=c[h>>2]|0;do if((c[i>>2]|0)>>>0>=g>>>0){f=f+8|0;if(!(Ib[c[(c[a+452>>2]|0)+12>>2]&63](a,f)|0))return;else{c[i>>2]=0;g=c[h>>2]|0;break}}else f=f+8|0;while(0);_b[c[(c[a+456>>2]|0)+4>>2]&7](a,f,i,g,b,d,e);return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;_b[c[(c[a+456>>2]|0)+4>>2]&7](a,0,0,0,b,d,e);return}function wu(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+452>>2]|0;if((c[a+340>>2]|0)>1)a=1;else{d=c[a+344>>2]|0;a=c[((c[a+332>>2]|0)==1?d+76|0:d+12|0)>>2]|0}c[b+28>>2]=a;c[b+20>>2]=0;c[b+24>>2]=0;return}function xu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[a+452>>2]|0;if(!(c[k+16>>2]|0)){l=a+156|0;c[l>>2]=0;return}a:do if(((c[a+80>>2]|0)!=0?(c[a+224>>2]|0)!=0:0)?(j=a+160|0,(c[j>>2]|0)!=0):0){d=k+112|0;e=c[d>>2]|0;if(!e){i=a+36|0;e=Jb[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[d>>2]=e}else i=a+36|0;if((c[i>>2]|0)>0){f=0;g=c[a+216>>2]|0;h=0;while(1){d=c[g+80>>2]|0;if(!d){l=20;break a}if(!(b[d>>1]|0)){l=20;break a}if(!(b[d+2>>1]|0)){l=20;break a}if(!(b[d+16>>1]|0)){l=20;break a}if(!(b[d+32>>1]|0)){l=20;break a}if(!(b[d+18>>1]|0)){l=20;break a}if(!(b[d+4>>1]|0)){l=20;break a}d=c[j>>2]|0;if((c[d+(h<<8)>>2]|0)<0){l=20;break a}m=d+(h<<8)+4|0;c[e+4>>2]=c[m>>2];m=c[m>>2]|0;n=d+(h<<8)+8|0;c[e+8>>2]=c[n>>2];m=c[n>>2]|m;n=d+(h<<8)+12|0;c[e+12>>2]=c[n>>2];n=m|c[n>>2];m=d+(h<<8)+16|0;c[e+16>>2]=c[m>>2];m=n|c[m>>2];d=d+(h<<8)+20|0;c[e+20>>2]=c[d>>2];f=(m|c[d>>2]|0)==0?f:1;h=h+1|0;if((h|0)>=(c[i>>2]|0))break;else{g=g+88|0;e=e+24|0}}if(f)d=36;else l=20}else l=20}else l=20;while(0);if((l|0)==20)d=34;c[k+12>>2]=d;n=a+156|0;c[n>>2]=0;return}function yu(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=zb;zb=zb+16|0;u=z;x=a+452|0;v=c[x>>2]|0;y=a+340|0;if((c[y>>2]|0)>0){d=a+4|0;e=a+148|0;b=0;do{r=c[a+344+(b<<2)>>2]|0;t=c[r+12>>2]|0;s=B(t,c[e>>2]|0)|0;t=Mb[c[(c[d>>2]|0)+32>>2]&31](a,c[v+72+(c[r+4>>2]<<2)>>2]|0,s,t,1)|0;c[u+(b<<2)>>2]=t;b=b+1|0}while((b|0)<(c[y>>2]|0))}o=v+24|0;b=c[o>>2]|0;p=v+28|0;f=c[p>>2]|0;a:do if((b|0)<(f|0)){q=v+20|0;r=a+360|0;s=a+468|0;t=v+32|0;d=c[q>>2]|0;e=c[r>>2]|0;b:while(1){if(d>>>0>>0){do{n=c[y>>2]|0;if((n|0)>0){e=0;m=0;do{l=c[a+344+(m<<2)>>2]|0;j=c[l+56>>2]|0;k=B(j,d)|0;l=c[l+60>>2]|0;if((l|0)>0?(w=c[u+(m<<2)>>2]|0,(j|0)>0):0){i=0;do{f=0;g=(c[w+(i+b<<2)>>2]|0)+(k<<7)|0;h=e;while(1){c[v+32+(h<<2)>>2]=g;f=f+1|0;if((f|0)==(j|0))break;else{g=g+128|0;h=h+1|0}}e=j+e|0;i=i+1|0}while((i|0)<(l|0))}m=m+1|0}while((m|0)<(n|0))}if(!(Ib[c[(c[s>>2]|0)+4>>2]&63](a,t)|0))break b;d=d+1|0;e=c[r>>2]|0}while(d>>>0>>0);f=c[p>>2]|0}c[q>>2]=0;b=b+1|0;if((b|0)<(f|0))d=0;else break a}c[o>>2]=b;c[q>>2]=d;y=0;zb=z;return y|0}while(0);d=a+148|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;d=c[a+332>>2]|0;if(b>>>0>=d>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);y=4;zb=z;return y|0}e=c[x>>2]|0;if((c[y>>2]|0)>1)b=1;else{y=c[a+344>>2]|0;b=c[(b>>>0<(d+-1|0)>>>0?y+12|0:y+76|0)>>2]|0}c[e+28>>2]=b;c[e+20>>2]=0;c[e+24>>2]=0;y=3;zb=z;return y|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=c[a+452>>2]|0;w=a+332|0;x=(c[w>>2]|0)+-1|0;g=a+144|0;h=a+152|0;i=a+460|0;d=a+148|0;u=a+156|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[d>>2]|0)>>>0>(c[u>>2]|0)>>>0)break}if(!(Gb[c[c[i>>2]>>2]&127](a)|0)){d=0;j=20;break}}if((j|0)==20)return d|0;q=a+36|0;if((c[q>>2]|0)>0){r=a+4|0;s=a+472|0;o=c[a+216>>2]|0;p=0;while(1){if(c[o+52>>2]|0){d=o+12|0;t=c[d>>2]|0;n=B(t,c[u>>2]|0)|0;t=Mb[c[(c[r>>2]|0)+32>>2]&31](a,c[v+72+(p<<2)>>2]|0,n,t,0)|0;if((c[u>>2]|0)>>>0>>0)i=c[d>>2]|0;else{n=c[d>>2]|0;i=((c[o+32>>2]|0)>>>0)%(n>>>0)|0;i=(i|0)==0?n:i}k=c[(c[s>>2]|0)+4+(p<<2)>>2]|0;if((i|0)>0){l=o+28|0;m=o+40|0;n=o+36|0;h=c[b+(p<<2)>>2]|0;j=0;d=c[l>>2]|0;while(1){if(!d)d=0;else{e=0;f=c[t+(j<<2)>>2]|0;g=0;while(1){Yb[k&63](a,o,f,h,e);g=g+1|0;d=c[l>>2]|0;if(g>>>0>=d>>>0)break;else{e=(c[n>>2]|0)+e|0;f=f+128|0}}}j=j+1|0;if((j|0)==(i|0))break;else h=h+(c[m>>2]<<2)|0}}}p=p+1|0;if((p|0)>=(c[q>>2]|0))break;else o=o+88|0}}x=(c[u>>2]|0)+1|0;c[u>>2]=x;x=x>>>0<(c[w>>2]|0)>>>0?3:4;return x|0}function Bu(a){a=a|0;return 0}function Cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+452|0;I=c[N>>2]|0;J=(c[a+360>>2]|0)+-1|0;M=a+332|0;f=c[M>>2]|0;K=f+-1|0;G=I+24|0;d=c[G>>2]|0;H=I+28|0;g=c[H>>2]|0;do if((d|0)<(g|0)){y=I+20|0;z=a+436|0;A=a+468|0;C=I+32|0;D=a+368|0;E=a+340|0;F=a+472|0;e=a+148|0;x=d;f=g;d=c[y>>2]|0;a:while(1){if(d>>>0<=J>>>0){do{if(c[z>>2]|0)aP(c[C>>2]|0,0,c[D>>2]<<7|0)|0;if(!(Ib[c[(c[A>>2]|0)+4>>2]&63](a,C)|0))break a;f=c[E>>2]|0;if((f|0)>0){w=d>>>0>>0;g=0;v=0;do{m=c[a+344+(v<<2)>>2]|0;b:do if(c[m+52>>2]|0){h=c[m+4>>2]|0;n=c[(c[F>>2]|0)+4+(h<<2)>>2]|0;o=m+56|0;p=c[(w?o:m+72|0)>>2]|0;q=m+40|0;i=c[q>>2]|0;r=B(c[m+68>>2]|0,d)|0;s=m+60|0;l=c[s>>2]|0;if((l|0)>0){t=m+76|0;u=m+36|0;if((p|0)<=0){i=c[o>>2]|0;h=0;while(1){g=i+g|0;h=h+1|0;if((h|0)>=(l|0))break b}}j=(c[b+(h<<2)>>2]|0)+((B(i,x)|0)<<2)|0;k=0;h=l;f=i;while(1){if(!((c[e>>2]|0)>>>0>=K>>>0?(k+x|0)>=(c[t>>2]|0):0)){f=r;h=0;while(1){Yb[n&63](a,m,c[I+32+(h+g<<2)>>2]|0,j,f);h=h+1|0;if((h|0)==(p|0))break;else f=(c[u>>2]|0)+f|0}f=c[q>>2]|0;h=c[s>>2]|0}g=(c[o>>2]|0)+g|0;k=k+1|0;if((k|0)>=(h|0))break;else j=j+(f<<2)|0}f=c[E>>2]|0}}else g=(c[m+64>>2]|0)+g|0;while(0);v=v+1|0}while((v|0)<(f|0))}d=d+1|0}while(d>>>0<=J>>>0);f=c[H>>2]|0}c[y>>2]=0;d=x+1|0;if((d|0)<(f|0)){x=d;d=0}else{L=30;break}}if((L|0)==30){f=c[M>>2]|0;break}c[G>>2]=x;c[y>>2]=d;a=0;return a|0}else e=a+148|0;while(0);d=a+156|0;c[d>>2]=(c[d>>2]|0)+1;d=(c[e>>2]|0)+1|0;c[e>>2]=d;if(d>>>0>=f>>>0){Sb[c[(c[a+460>>2]|0)+12>>2]&255](a);a=4;return a|0}e=c[N>>2]|0;if((c[a+340>>2]|0)>1)d=1;else{a=c[a+344>>2]|0;d=c[(d>>>0<(f+-1|0)>>>0?a+12|0:a+76|0)>>2]|0}c[e+28>>2]=d;c[e+20>>2]=0;c[e+24>>2]=0;a=3;return a|0}function Du(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;oa=zb;zb=zb+128|0;ka=oa;la=c[a+452>>2]|0;na=a+332|0;ma=(c[na>>2]|0)+-1|0;n=a+144|0;f=c[n>>2]|0;i=a+152|0;g=c[i>>2]|0;a:do if((f|0)<=(g|0)){j=a+460|0;k=a+412|0;l=a+148|0;m=a+156|0;while(1){h=c[j>>2]|0;if(c[h+20>>2]|0)break a;if((f|0)==(g|0)?(c[l>>2]|0)>>>0>((c[m>>2]|0)+((c[k>>2]|0)==0&1)|0)>>>0:0)break a;if(!(Gb[c[h>>2]&127](a)|0)){f=0;break}f=c[n>>2]|0;g=c[i>>2]|0;if((f|0)>(g|0))break a}zb=oa;return f|0}while(0);ba=a+36|0;if((c[ba>>2]|0)>0){f=a+156|0;ca=a+4|0;da=la+112|0;ea=a+472|0;fa=ka+2|0;ga=ka+16|0;ha=ka+32|0;ia=ka+18|0;ja=ka+4|0;_=0;$=c[a+216>>2]|0;while(1){if(c[$+52>>2]|0){h=c[f>>2]|0;if(h>>>0>>0){i=c[$+12>>2]|0;g=i<<1;j=0;aa=i}else{i=c[$+12>>2]|0;aa=((c[$+32>>2]|0)>>>0)%(i>>>0)|0;aa=(aa|0)==0?i:aa;g=aa;j=1}if(!h){Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,0,g,0)|0;g=1}else{Y=B(i,h+-1|0)|0;Y=Mb[c[(c[ca>>2]|0)+32>>2]&31](a,c[la+72+(_<<2)>>2]|0,Y,i+g|0,0)|0;Y=Y+(c[$+12>>2]<<2)|0;g=0}i=(c[da>>2]|0)+(_*6<<2)|0;o=c[$+80>>2]|0;l=e[o>>1]|0;h=e[o+2>>1]|0;k=e[o+16>>1]|0;m=e[o+32>>1]|0;n=e[o+18>>1]|0;o=e[o+4>>1]|0;Z=c[(c[ea>>2]|0)+4+(_<<2)>>2]|0;if((aa|0)>0){X=(g|0)!=0;N=(j|0)!=0;O=aa+-1|0;P=$+28|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=l*36|0;U=h<<7;V=i+16|0;W=k<<7;M=h<<8;J=i+20|0;K=l*9|0;L=m<<7;H=k<<8;I=$+36|0;F=l*5|0;G=n<<7;D=m<<8;E=o<<7;C=n<<8;y=o<<8;z=$+40|0;w=0;x=c[d+(_<<2)>>2]|0;while(1){g=c[Y+(w<<2)>>2]|0;if(X&(w|0)==0)h=g;else h=c[Y+(w+-1<<2)>>2]|0;if(N&(w|0)==(O|0))i=g;else i=c[Y+(w+1<<2)>>2]|0;l=b[h>>1]|0;q=b[g>>1]|0;k=b[i>>1]|0;A=(c[P>>2]|0)+-1|0;s=k;t=q;u=l;v=0;r=0;p=i;while(1){Eu(g,ka,1);if(v>>>0>>0){m=b[p+128>>1]|0;n=b[g+128>>1]|0;o=b[h+128>>1]|0}else{m=s;n=t;o=u}i=c[Q>>2]|0;if((i|0)!=0&(b[fa>>1]|0)==0){j=B(T,q-n|0)|0;if((j|0)>-1){j=(j+U|0)/(M|0)|0;pa=1<0?((j|0)<(pa|0)?j:pa+-1|0):j}else{pa=(U-j|0)/(M|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[fa>>1]=i}i=c[R>>2]|0;if((i|0)!=0&(b[ga>>1]|0)==0){j=B(T,u-s|0)|0;if((j|0)>-1){pa=(j+W|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(W-j|0)/(H|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ga>>1]=i}i=c[S>>2]|0;if((i|0)!=0&(b[ha>>1]|0)==0){j=B(K,u-(t<<1)+s|0)|0;if((j|0)>-1){pa=(j+L|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa}else{pa=(L-j|0)/(D|0)|0;j=1<0?((pa|0)<(j|0)?pa:j+-1|0):pa)|0}b[ha>>1]=i}j=c[V>>2]|0;if((j|0)!=0&(b[ia>>1]|0)==0){i=B(F,l-k-o+m|0)|0;if((i|0)>-1){i=(i+G|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(G-i|0)/(C|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ia>>1]=i}j=c[J>>2]|0;if((j|0)!=0&(b[ja>>1]|0)==0){i=B(K,q-(t<<1)+n|0)|0;if((i|0)>-1){i=(i+E|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i}else{i=(E-i|0)/(y|0)|0;pa=1<0?((i|0)<(pa|0)?i:pa+-1|0):i)|0}b[ja>>1]=i}Yb[Z&63](a,$,ka,x,r);v=v+1|0;if(v>>>0>A>>>0)break;else{l=u;q=t;k=s;s=m;t=n;u=o;g=g+128|0;r=(c[I>>2]|0)+r|0;h=h+128|0;p=p+128|0}}w=w+1|0;if((w|0)==(aa|0))break;else x=x+(c[z>>2]<<2)|0}}}_=_+1|0;if((_|0)>=(c[ba>>2]|0))break;else $=$+88|0}}else f=a+156|0;pa=(c[f>>2]|0)+1|0;c[f>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;zb=oa;return pa|0}function Eu(a,b,c){a=a|0;b=b|0;c=c|0;_O(b|0,a|0,c<<7|0)|0;return}function Fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[a+468>>2]|0;m=a+412|0;f=c[m>>2]|0;d=(f|0)==0;if(!(c[a+224>>2]|0)){if((d?(c[a+420>>2]|0)==0:0)?(c[a+424>>2]|0)==0:0){m=c[a+416>>2]|0;if((c[a+220>>2]|0)!=0|(m|0)<64?(m|0)!=(c[a+436>>2]|0):0)e=38}else e=38;if((e|0)==38){m=c[a>>2]|0;c[m+20>>2]=125;Ub[c[m+4>>2]&63](a,-1)}g=a+436|0;c[n+4>>2]=(c[g>>2]|0)==63?41:42;d=a+340|0;if((c[d>>2]|0)>0){b=0;do{e=c[a+344+(b<<2)>>2]|0;m=c[e+20>>2]|0;Lu(a,1,m,n+68+(m<<2)|0);if(c[g>>2]|0){m=c[e+24>>2]|0;Lu(a,0,m,n+84+(m<<2)|0)}c[n+24+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[d>>2]|0))}f=a+368|0;if((c[f>>2]|0)<=0){m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}e=0;do{b=c[a+344+(c[a+372+(e<<2)>>2]<<2)>>2]|0;c[n+100+(e<<2)>>2]=c[n+68+(c[b+20>>2]<<2)>>2];c[n+140+(e<<2)>>2]=c[n+84+(c[b+24>>2]<<2)>>2];a:do if(!(c[b+52>>2]|0))b=0;else{d=c[b+40>>2]|0;b=c[b+36>>2]|0;switch(c[g>>2]|0){case 0:{b=1;break a}case 3:{b=(c[4336+(((d|0)!=1&1)<<3)+(((b|0)!=1&1)<<2)>>2]|0)+1|0;break a}case 8:{m=d+-1|0;b=b+-1|0;b=(c[4352+((m>>>0<2?m:2)*12|0)+((b>>>0<2?b:2)<<2)>>2]|0)+1|0;break a}case 15:{m=d+-1|0;b=b+-1|0;b=(c[4400+((m>>>0<3?m:3)<<4)+((b>>>0<3?b:3)<<2)>>2]|0)+1|0;break a}case 24:{m=d+-1|0;b=b+-1|0;b=(c[4464+((m>>>0<4?m:4)*20|0)+((b>>>0<4?b:4)<<2)>>2]|0)+1|0;break a}case 35:{m=d+-1|0;b=b+-1|0;b=(c[4576+((m>>>0<5?m:5)*24|0)+((b>>>0<5?b:5)<<2)>>2]|0)+1|0;break a}case 48:{m=d+-1|0;b=b+-1|0;b=(c[4720+((m>>>0<6?m:6)*28|0)+((b>>>0<6?b:6)<<2)>>2]|0)+1|0;break a}default:{m=d+-1|0;b=b+-1|0;b=(c[4928+((m>>>0<7?m:7)<<5)+((b>>>0<7?b:7)<<2)>>2]|0)+1|0;break a}}}while(0);c[n+180+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[f>>2]|0));m=n+16|0;c[m>>2]=0;m=n+12|0;c[m>>2]=0;m=n+40|0;c[m>>2]=0;a=a+280|0;a=c[a>>2]|0;n=n+44|0;c[n>>2]=a;return}k=a+416|0;b=c[k>>2]|0;if(d)if(!b)e=7;else e=11;else if(((b|0)>=(f|0)?(b|0)<=(c[a+436>>2]|0):0)?(c[a+340>>2]|0)==1:0)e=7;else e=11;do if((e|0)==7){b=c[a+420>>2]|0;if(b){b=b+-1|0;if((b|0)!=(c[a+424>>2]|0)){e=11;break}}else b=c[a+424>>2]|0;if((b|0)>13)e=11}while(0);if((e|0)==11){l=c[a>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[a>>2]|0)+28>>2]=c[k>>2];c[(c[a>>2]|0)+32>>2]=c[a+420>>2];c[(c[a>>2]|0)+36>>2]=c[a+424>>2];Sb[c[c[a>>2]>>2]&255](a)}l=a+340|0;b=c[l>>2]|0;if((b|0)>0){i=a+160|0;g=a+420|0;j=a+424|0;h=0;do{e=c[(c[a+344+(h<<2)>>2]|0)+4>>2]|0;f=c[i>>2]|0;b=c[m>>2]|0;if(b){if((c[f+(e<<8)>>2]|0)<0){b=c[a>>2]|0;c[b+20>>2]=118;c[b+24>>2]=e;c[(c[a>>2]|0)+28>>2]=0;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1);b=c[m>>2]|0}}else b=0;if((b|0)<=(c[k>>2]|0))while(1){d=f+(e<<8)+(b<<2)|0;o=c[d>>2]|0;if((c[g>>2]|0)!=(((o|0)>0?o:0)|0)){o=c[a>>2]|0;c[o+20>>2]=118;c[o+24>>2]=e;c[(c[a>>2]|0)+28>>2]=b;Ub[c[(c[a>>2]|0)+4>>2]&63](a,-1)}c[d>>2]=c[j>>2];if((b|0)<(c[k>>2]|0))b=b+1|0;else break}h=h+1|0;b=c[l>>2]|0}while((h|0)<(b|0))}else g=a+420|0;e=c[m>>2]|0;o=(e|0)==0;c[n+4>>2]=(c[g>>2]|0)==0?(o?37:38):o?39:40;b:do if((b|0)>0){f=n+64|0;b=0;while(1){d=c[a+344+(b<<2)>>2]|0;if(!e){if(!(c[g>>2]|0)){o=c[d+20>>2]|0;Lu(a,1,o,n+48+(o<<2)|0)}}else{k=c[d+24>>2]|0;o=n+48+(k<<2)|0;Lu(a,0,k,o);c[f>>2]=c[o>>2]}c[n+24+(b<<2)>>2]=0;b=b+1|0;if((b|0)>=(c[l>>2]|0))break b;e=c[m>>2]|0}}while(0);c[n+20>>2]=0;o=n+16|0;c[o>>2]=0;o=n+12|0;c[o>>2]=0;o=n+40|0;c[o>>2]=0;a=a+280|0;a=c[a>>2]|0;o=n+44|0;c[o>>2]=a;return}function Gu(a){a=a|0;var b=0;b=(c[a+468>>2]|0)+16|0;a=(c[a+464>>2]|0)+24|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function Hu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;t=c[a+424>>2]|0;i=a+280|0;if(c[i>>2]|0?(g=z+44|0,(c[g>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}h=a+340|0;if((c[h>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[h>>2]|0))}c[z+20>>2]=0;c[g>>2]=c[i>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;r=a+24|0;h=c[r>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;s=x+4|0;c[s>>2]=f;u=z+12|0;i=c[u>>2]|0;v=z+16|0;j=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];q=a+368|0;do if((c[q>>2]|0)>0){o=x+8|0;p=x+12|0;l=0;while(1){m=c[e+(l<<2)>>2]|0;n=c[a+372+(l<<2)>>2]|0;h=c[z+48+(c[(c[a+344+(n<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((j|0)<8){if(!(Ou(x,i,j,0)|0)){f=0;k=28;break}i=c[o>>2]|0;j=c[p>>2]|0;if((j|0)<8){f=1;k=17}else k=15}else k=15;if((k|0)==15){k=0;f=i>>j+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;k=17}else{f=d[h+1168+f>>0]|0;j=j-g|0}}if((k|0)==17){f=Pu(x,i,j,h,f)|0;if((f|0)<0){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}if(!f)f=0;else{if((j|0)<(f|0)){if(!(Ou(x,i,j,f)|0)){f=0;k=28;break}j=c[p>>2]|0;i=c[o>>2]|0}j=j-f|0;k=c[5184+(f<<2)>>2]|0;h=i>>j&k;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:k)|0}k=y+4+(n<<2)|0;n=(c[k>>2]|0)+f|0;c[k>>2]=n;b[m>>1]=n<=(c[q>>2]|0)){k=25;break}}if((k|0)==25){h=c[r>>2]|0;g=c[x>>2]|0;f=c[s>>2]|0;break}else if((k|0)==28){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=i;c[v>>2]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;zb=A;return z|0}function Iu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=zb;zb=zb+32|0;w=y;x=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=x+44|0,(c[i>>2]|0)==0):0){u=x+16|0;v=c[a+464>>2]|0;t=v+24|0;c[t>>2]=(c[t>>2]|0)+((c[u>>2]|0)/8|0);c[u>>2]=0;if(!(Gb[c[v+8>>2]&127](a)|0)){x=0;zb=y;return x|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[x+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[x+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[x+40>>2]=0}if(!(c[x+40>>2]|0)){v=x+20|0;f=c[v>>2]|0;if(!f){c[w+16>>2]=a;r=a+24|0;t=c[r>>2]|0;c[w>>2]=c[t>>2];s=w+4|0;c[s>>2]=c[t+4>>2];t=x+12|0;g=c[t>>2]|0;u=x+16|0;h=c[u>>2]|0;n=c[a+416>>2]|0;o=c[a+424>>2]|0;p=c[a+432>>2]|0;k=c[e>>2]|0;l=c[x+64>>2]|0;f=c[a+412>>2]|0;a:do if((f|0)<=(n|0)){q=w+8|0;m=w+12|0;j=f;b:while(1){if((h|0)<8){if(!(Ou(w,g,h,0)|0)){f=0;a=36;break}g=c[q>>2]|0;h=c[m>>2]|0;if((h|0)<8){f=1;a=19}else a=17}else a=17;if((a|0)==17){a=0;f=g>>h+-8&255;i=c[l+144+(f<<2)>>2]|0;if(!i){f=9;a=19}else{f=d[l+1168+f>>0]|0;h=h-i|0}}if((a|0)==19){f=Pu(w,g,h,l,f)|0;if((f|0)<0){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}e=f>>>4;i=f&15;if(!i){switch(e&268435455|0){case 0:{f=0;break a}case 15:break;default:{a=27;break b}}f=j+15|0}else{f=e+j|0;if((h|0)<(i|0)){if(!(Ou(w,g,h,i)|0)){f=0;a=36;break}h=c[m>>2]|0;g=c[q>>2]|0}h=h-i|0;j=c[5184+(i<<2)>>2]|0;a=g>>h&j;b[k+(c[p+(f<<2)>>2]<<1)>>1]=a-((a|0)>(c[5184+(i+-1<<2)>>2]|0)?0:j)<>2]|0;g=c[q>>2]|0;break}else f=h;while(0);h=f-e|0;f=i+-1+(g>>h&c[5184+(e<<2)>>2])|0;break}else if((a|0)==36){zb=y;return f|0}}else f=0;while(0);r=c[r>>2]|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[s>>2];c[t>>2]=g;c[u>>2]=h}else f=f+-1|0;c[v>>2]=f}x=x+44|0;c[x>>2]=(c[x>>2]|0)+-1;x=1;zb=y;return x|0}function Ju(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;q=s;r=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=r+44|0,(c[i>>2]|0)==0):0){o=r+16|0;p=c[a+464>>2]|0;n=p+24|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)/8|0);c[o>>2]=0;if(!(Gb[c[p+8>>2]&127](a)|0)){r=0;zb=s;return r|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[r+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[r+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[r+40>>2]=0}c[q+16>>2]=a;m=a+24|0;h=c[m>>2]|0;g=c[h>>2]|0;c[q>>2]=g;f=c[h+4>>2]|0;n=q+4|0;c[n>>2]=f;o=r+12|0;i=c[o>>2]|0;p=r+16|0;j=c[p>>2]|0;l=1<>2];k=a+368|0;do if((c[k>>2]|0)>0){h=q+8|0;a=q+12|0;g=0;f=j;while(1){if((f|0)<1){if(!(Ou(q,i,f,1)|0)){f=0;a=19;break}f=c[a>>2]|0;i=c[h>>2]|0}f=f+-1|0;if(1<>2]|0;b[j>>1]=l|(e[j>>1]|0)}g=g+1|0;if((g|0)>=(c[k>>2]|0)){a=17;break}}if((a|0)==17){j=f;h=c[m>>2]|0;g=c[q>>2]|0;f=c[n>>2]|0;break}else if((a|0)==19){zb=s;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[o>>2]=i;c[p>>2]=j;r=r+44|0;c[r>>2]=(c[r>>2]|0)+-1;r=1;zb=s;return r|0}function Ku(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=zb;zb=zb+288|0;E=G+256|0;D=G;F=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=F+44|0,(c[i>>2]|0)==0):0){z=F+16|0;A=c[a+464>>2]|0;y=A+24|0;c[y>>2]=(c[y>>2]|0)+((c[z>>2]|0)/8|0);c[z>>2]=0;if(!(Gb[c[A+8>>2]&127](a)|0)){F=0;zb=G;return F|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[F+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[F+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[F+40>>2]=0}do if(!(c[F+40>>2]|0)){q=c[a+416>>2]|0;s=c[a+424>>2]|0;r=1<>2]|0;c[E+16>>2]=a;w=a+24|0;y=c[w>>2]|0;c[E>>2]=c[y>>2];x=E+4|0;c[x>>2]=c[y+4>>2];y=F+12|0;j=c[y>>2]|0;z=F+16|0;g=c[z>>2]|0;A=F+20|0;h=c[A>>2]|0;u=c[e>>2]|0;l=c[F+64>>2]|0;i=c[a+412>>2]|0;o=E+8|0;p=E+12|0;a:do if(!h){f=0;b:while(1){if((g|0)<8){if(!(Ou(E,j,g,0)|0))break a;j=c[o>>2]|0;g=c[p>>2]|0;if((g|0)<8){h=1;v=17}else v=15}else v=15;if((v|0)==15){v=0;h=j>>g+-8&255;e=c[l+144+(h<<2)>>2]|0;if(!e){h=9;v=17}else{h=d[l+1168+h>>0]|0;g=g-e|0}}if((v|0)==17){v=0;g=Pu(E,j,g,l,h)|0;if((g|0)<0)break a;h=g;g=c[p>>2]|0;j=c[o>>2]|0}e=h>>>4;switch(h&15){case 0:{if((e|0)==15)k=0;else break b;break}case 1:{v=21;break}default:{v=c[a>>2]|0;c[v+20>>2]=121;Ub[c[v+4>>2]&63](a,-1);v=21}}if((v|0)==21){v=0;if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;k=(1<>2]<<1)|0;do if(!(b[e>>1]|0))if((h|0)<1)break c;else h=h+-1|0;else{if((g|0)<1){if(!(Ou(E,j,g,1)|0))break a;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,n=m<<16>>16,(r&n|0)==0):0)if(m<<16>>16>-1){b[e>>1]=r+n;break}else{b[e>>1]=s+n;break}}while(0);e=i+1|0;if((i|0)<(q|0))i=e;else{i=e;break}}if(k){e=c[t+(i<<2)>>2]|0;b[u+(e<<1)>>1]=k;c[D+(f<<2)>>2]=e;f=f+1|0}if((i|0)<(q|0))i=i+1|0;else{h=0;f=j;v=58;break a}}h=1<>2]|0;j=c[o>>2]|0}g=g-e|0;h=(j>>g&c[5184+(e<<2)>>2])+h|0;if(!h){h=0;f=j;v=58}else v=46}else{h=1;v=46}}else{f=0;v=46}while(0);d:do if((v|0)==46){while(1){e=u+(c[t+(i<<2)>>2]<<1)|0;do if(b[e>>1]|0){if((g|0)<1){if(!(Ou(E,j,g,1)|0))break d;g=c[p>>2]|0;j=c[o>>2]|0}g=g+-1|0;if((1<>1]|0,C=B<<16>>16,(r&C|0)==0):0)if(B<<16>>16>-1){b[e>>1]=r+C;break}else{b[e>>1]=s+C;break}}while(0);if((i|0)<(q|0))i=i+1|0;else break}h=h+-1|0;f=j;v=58}while(0);if((v|0)==58){D=c[w>>2]|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[x>>2];c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;break}if(!f){F=0;zb=G;return F|0}do{f=f+-1|0;b[u+(c[D+(f<<2)>>2]<<1)>>1]=0}while((f|0)!=0);f=0;zb=G;return f|0}while(0);F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;zb=G;return F|0}function Lu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=zb;zb=zb+1312|0;k=q+1040|0;p=q;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}n=(e|0)!=0;o=c[(n?b+180+(f<<2)|0:b+196+(f<<2)|0)>>2]|0;if(!o){m=c[b>>2]|0;c[m+20>>2]=52;c[m+24>>2]=f;Sb[c[c[b>>2]>>2]&255](b)}e=c[g>>2]|0;if(!e){l=Jb[c[c[b+4>>2]>>2]&63](b,1,1424)|0;c[g>>2]=l;m=b}else{m=b;l=e}c[l+140>>2]=o;j=a[o+1>>0]|0;e=j&255;if(!(j<<24>>24))e=0;else aP(k|0,1,e|0)|0;f=a[o+2>>0]|0;g=f&255;h=e+g|0;if(h>>>0>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,2,g|0)|0;e=h}f=a[o+3>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,3,g|0)|0;e=h}f=a[o+4>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,4,g|0)|0;e=h}f=a[o+5>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,5,g|0)|0;e=h}f=a[o+6>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,6,g|0)|0;e=h}f=a[o+7>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,7,g|0)|0;e=h}f=a[o+8>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,8,g|0)|0;e=h}f=a[o+9>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,9,g|0)|0;e=h}f=a[o+10>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,10,g|0)|0;e=h}f=a[o+11>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,11,g|0)|0;e=h}f=a[o+12>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,12,g|0)|0;e=h}f=a[o+13>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,13,g|0)|0;e=h}f=a[o+14>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,14,g|0)|0;e=h}f=a[o+15>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(f<<24>>24){aP(k+e|0,15,g|0)|0;e=h}f=a[o+16>>0]|0;g=f&255;h=e+g|0;if((h|0)>256){j=c[b>>2]|0;c[j+20>>2]=9;Sb[c[j>>2]&255](m)}if(!(f<<24>>24))h=e;else aP(k+e|0,16,g|0)|0;a[k+h>>0]=0;f=a[k>>0]|0;if(f<<24>>24){g=0;j=f<<24>>24;e=0;while(1){if((j|0)==(f<<24>>24|0)){f=g;while(1){i=e+1|0;c[p+(e<<2)>>2]=f;e=f+1|0;f=a[k+i>>0]|0;if((j|0)==(f<<24>>24|0)){f=e;e=i}else{g=e;e=i;break}}}if((g|0)>=(1<>2]|0;c[i+20>>2]=9;Sb[c[i>>2]&255](m)}if(!(f<<24>>24))break;else{g=g<<1;j=j+1|0}}}e=o+1|0;if(!(a[e>>0]|0)){f=0;e=-1}else{c[l+76>>2]=0-(c[p>>2]|0);e=d[e>>0]|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+4>>2]=e;e=o+2|0;if(!(a[e>>0]|0))e=-1;else{c[l+80>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+8>>2]=e;e=o+3|0;if(!(a[e>>0]|0))e=-1;else{c[l+84>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+12>>2]=e;e=o+4|0;if(!(a[e>>0]|0))e=-1;else{c[l+88>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+16>>2]=e;e=o+5|0;if(!(a[e>>0]|0))e=-1;else{c[l+92>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+20>>2]=e;e=o+6|0;if(!(a[e>>0]|0))e=-1;else{c[l+96>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+24>>2]=e;e=o+7|0;if(!(a[e>>0]|0))e=-1;else{c[l+100>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+28>>2]=e;e=o+8|0;if(!(a[e>>0]|0))e=-1;else{c[l+104>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+32>>2]=e;e=o+9|0;if(!(a[e>>0]|0))e=-1;else{c[l+108>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+36>>2]=e;e=o+10|0;if(!(a[e>>0]|0))e=-1;else{c[l+112>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+40>>2]=e;e=o+11|0;if(!(a[e>>0]|0))e=-1;else{c[l+116>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+44>>2]=e;e=o+12|0;if(!(a[e>>0]|0))e=-1;else{c[l+120>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+48>>2]=e;e=o+13|0;if(!(a[e>>0]|0))e=-1;else{c[l+124>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+52>>2]=e;e=o+14|0;if(!(a[e>>0]|0))e=-1;else{c[l+128>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+56>>2]=e;e=o+15|0;if(!(a[e>>0]|0))e=-1;else{c[l+132>>2]=f-(c[p+(f<<2)>>2]|0);e=f+(d[e>>0]|0)|0;f=e;e=c[p+(e+-1<<2)>>2]|0}c[l+60>>2]=e;e=o+16|0;if(!(a[e>>0]|0))e=-1;else{c[l+136>>2]=f-(c[p+(f<<2)>>2]|0);e=c[p+(f+(d[e>>0]|0)+-1<<2)>>2]|0}c[l+64>>2]=e;c[l+68>>2]=1048575;aP(l+144|0,0,1024)|0;k=o+1|0;if(!(a[k>>0]|0))e=0;else{j=1;e=0;while(1){i=o+17+e|0;f=128;g=c[p+(e<<2)>>2]<<7;while(1){c[l+144+(g<<2)>>2]=1;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}k=o+2|0;if(a[k>>0]|0){j=1;while(1){i=o+17+e|0;f=64;g=c[p+(e<<2)>>2]<<6;while(1){c[l+144+(g<<2)>>2]=2;a[l+1168+g>>0]=a[i>>0]|0;if((f|0)>1){f=f+-1|0;g=g+1|0}else break}e=e+1|0;if(j>>>0<(d[k>>0]|0)>>>0)j=j+1|0;else break}}g=o+3|0;if(a[g>>0]|0){f=1;while(1){k=c[p+(e<<2)>>2]<<5;j=o+17+e|0;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;i=k|1;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=i+1|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|3;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+3|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|7;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+7|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;i=k|15;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;r=i+1|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+2|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+3|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+4|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+5|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+6|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+7|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+8|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+9|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+10|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+11|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+12|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+13|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;r=i+14|0;c[l+144+(r<<2)>>2]=3;a[l+1168+r>>0]=a[j>>0]|0;i=i+15|0;c[l+144+(i<<2)>>2]=3;a[l+1168+i>>0]=a[j>>0]|0;k=k|31;c[l+144+(k<<2)>>2]=3;a[l+1168+k>>0]=a[j>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+4|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<4;k=o+17+e|0;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;j=r|7;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+3|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+4|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+5|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;i=j+6|0;c[l+144+(i<<2)>>2]=4;a[l+1168+i>>0]=a[k>>0]|0;j=j+7|0;c[l+144+(j<<2)>>2]=4;a[l+1168+j>>0]=a[k>>0]|0;r=r|15;c[l+144+(r<<2)>>2]=4;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+5|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<3;k=o+17+e|0;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;j=r|3;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;i=j+1|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;i=j+2|0;c[l+144+(i<<2)>>2]=5;a[l+1168+i>>0]=a[k>>0]|0;j=j+3|0;c[l+144+(j<<2)>>2]=5;a[l+1168+j>>0]=a[k>>0]|0;r=r|7;c[l+144+(r<<2)>>2]=5;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+6|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<2;k=o+17+e|0;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;j=r|1;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;j=j+1|0;c[l+144+(j<<2)>>2]=6;a[l+1168+j>>0]=a[k>>0]|0;r=r|3;c[l+144+(r<<2)>>2]=6;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+7|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]<<1;k=o+17+e|0;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;r=r|1;c[l+144+(r<<2)>>2]=7;a[l+1168+r>>0]=a[k>>0]|0;e=e+1|0;if(f>>>0<(d[g>>0]|0)>>>0)f=f+1|0;else break}}g=o+8|0;if(a[g>>0]|0){f=1;while(1){r=c[p+(e<<2)>>2]|0;c[l+144+(r<<2)>>2]=8;a[l+1168+r>>0]=a[o+17+e>>0]|0;if(f>>>0<(d[g>>0]|0)>>>0){f=f+1|0;e=e+1|0}else break}}if(!(n&(h|0)>0)){zb=q;return}e=0;do{if((d[o+17+e>>0]|0)>15){r=c[b>>2]|0;c[r+20>>2]=9;Sb[c[r>>2]&255](m)}e=e+1|0}while((e|0)!=(h|0));zb=q;return}function Mu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=zb;zb=zb+48|0;x=A+20|0;y=A;z=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=z+44|0,(c[i>>2]|0)==0):0){v=z+16|0;w=c[a+464>>2]|0;u=w+24|0;c[u>>2]=(c[u>>2]|0)+((c[v>>2]|0)/8|0);c[v>>2]=0;if(!(Gb[c[w+8>>2]&127](a)|0)){z=0;zb=A;return z|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[z+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[z+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[z+40>>2]=0}if(!(c[z+40>>2]|0)){c[x+16>>2]=a;s=a+24|0;h=c[s>>2]|0;g=c[h>>2]|0;c[x>>2]=g;f=c[h+4>>2]|0;t=x+4|0;c[t>>2]=f;u=z+12|0;j=c[u>>2]|0;v=z+16|0;i=c[v>>2]|0;w=z+20|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];r=a+368|0;do if((c[r>>2]|0)>0){p=x+8|0;q=x+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[z+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(x,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[z+140+(o<<2)>>2]|0;k=c[z+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=48}else{f=1;m=48}else{if(g){if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=y+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(x,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;g=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(x,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;h=c[5184+(g<<2)>>2]|0;B=j>>i&h;b[l+(c[2064+(f<<2)>>2]<<1)>>1]=B-((B|0)>(c[5184+(g+-1<<2)>>2]|0)?0:h);g=f}f=g+1|0}while((f|0)<(k|0));if((g|0)<63)m=48}else{f=1;m=48}}while(0);c:do if((m|0)==48){h=f;do{if((i|0)<8){if(!(Ou(x,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(x,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(x,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<64)}while(0);o=o+1|0;if((o|0)>=(c[r>>2]|0)){m=64;break}}if((m|0)==64){h=c[s>>2]|0;g=c[x>>2]|0;f=c[t>>2]|0;break}else if((m|0)==67){zb=A;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[u>>2]=j;c[v>>2]=i;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2]}B=z+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=A;return B|0}function Nu(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=zb;zb=zb+48|0;z=C+20|0;A=C;B=c[a+468>>2]|0;h=a+280|0;if(c[h>>2]|0?(i=B+44|0,(c[i>>2]|0)==0):0){x=B+16|0;y=c[a+464>>2]|0;w=y+24|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!(Gb[c[y+8>>2]&127](a)|0)){B=0;zb=C;return B|0}g=a+340|0;if((c[g>>2]|0)>0){f=0;do{c[B+24+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[g>>2]|0))}c[B+20>>2]=0;c[i>>2]=c[h>>2];if(!(c[a+440>>2]|0))c[B+40>>2]=0}if(!(c[B+40>>2]|0)){r=c[a+432>>2]|0;s=c[a+436>>2]|0;c[z+16>>2]=a;u=a+24|0;h=c[u>>2]|0;g=c[h>>2]|0;c[z>>2]=g;f=c[h+4>>2]|0;v=z+4|0;c[v>>2]=f;w=B+12|0;j=c[w>>2]|0;x=B+16|0;i=c[x>>2]|0;y=B+20|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];t=a+368|0;do if((c[t>>2]|0)>0){p=z+8|0;q=z+12|0;o=0;a:while(1){l=c[e+(o<<2)>>2]|0;h=c[B+100+(o<<2)>>2]|0;if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=17}else m=15}else m=15;if((m|0)==15){m=0;f=j>>i+-8&255;g=c[h+144+(f<<2)>>2]|0;if(!g){f=9;m=17}else{f=d[h+1168+f>>0]|0;i=i-g|0}}if((m|0)==17){f=Pu(z,j,i,h,f)|0;if((f|0)<0){f=0;m=67;break}j=c[p>>2]|0;i=c[q>>2]|0}n=c[B+140+(o<<2)>>2]|0;k=c[B+180+(o<<2)>>2]|0;g=(f|0)!=0;b:do if(!k)if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=1;m=47}else{f=1;m=47}else{if(g){if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;m=c[5184+(f<<2)>>2]|0;h=j>>i&m;f=h-((h|0)>(c[5184+(f+-1<<2)>>2]|0)?0:m)|0}else f=0;h=A+4+(c[a+372+(o<<2)>>2]<<2)|0;m=(c[h>>2]|0)+f|0;c[h>>2]=m;b[l>>1]=m;if((k|0)>1){f=1;while(1){if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){g=1;m=32}else m=30}else m=30;if((m|0)==30){m=0;h=j>>i+-8&255;g=c[n+144+(h<<2)>>2]|0;if(!g){g=9;m=32}else{i=i-g|0;g=d[n+1168+h>>0]|0}}if((m|0)==32){m=0;g=Pu(z,j,i,n,g)|0;if((g|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}h=g>>>4;g=g&15;if(!g){if((h|0)!=15)break b;f=f+15|0}else{f=h+f|0;if((i|0)<(g|0)){if(!(Ou(z,j,i,g)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-g|0;m=c[5184+(g<<2)>>2]|0;h=j>>i&m;b[l+(c[r+(f<<2)>>2]<<1)>>1]=h-((h|0)>(c[5184+(g+-1<<2)>>2]|0)?0:m)}f=f+1|0;if((f|0)>=(k|0)){m=47;break}}}else{f=1;m=47}}while(0);c:do if((m|0)==47)if((f|0)<=(s|0)){h=f;do{if((i|0)<8){if(!(Ou(z,j,i,0)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0;if((i|0)<8){f=1;m=54}else m=52}else m=52;if((m|0)==52){m=0;f=j>>i+-8&255;g=c[n+144+(f<<2)>>2]|0;if(!g){f=9;m=54}else{f=d[n+1168+f>>0]|0;i=i-g|0}}if((m|0)==54){f=Pu(z,j,i,n,f)|0;if((f|0)<0){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}g=f>>>4;f=f&15;if(!f)if((g|0)==15)f=15;else break c;else{if((i|0)<(f|0)){if(!(Ou(z,j,i,f)|0)){f=0;m=67;break a}j=c[p>>2]|0;i=c[q>>2]|0}i=i-f|0;f=g}h=h+1+f|0}while((h|0)<=(s|0))}while(0);o=o+1|0;if((o|0)>=(c[t>>2]|0)){m=64;break}}if((m|0)==64){h=c[u>>2]|0;g=c[z>>2]|0;f=c[v>>2]|0;break}else if((m|0)==67){zb=C;return f|0}}while(0);c[h>>2]=g;c[h+4>>2]=f;c[w>>2]=j;c[x>>2]=i;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2]}B=B+44|0;c[B>>2]=(c[B>>2]|0)+-1;B=1;zb=C;return B|0}function Ou(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;l=m+440|0;a:do if(!(c[l>>2]|0)){if((e|0)<25){k=m+24|0;j=e;b:while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break}g=c[k>>2]|0;h=c[g+4>>2]|0;g=c[g>>2]|0}h=h+-1|0;i=g+1|0;e=a[g>>0]|0;g=e&255;c:do if(e<<24>>24==-1){g=i;while(1){if(!h){if(!(Gb[c[(c[k>>2]|0)+12>>2]&127](m)|0)){g=0;o=20;break b}e=c[k>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;switch(e<<24>>24){case 0:{e=255;break c}case -1:break;default:{o=13;break b}}}}else{e=g;g=i}while(0);d=e|d<<8;e=j+8|0;if((j|0)<17)j=e;else break a}if((o|0)==13){c[l>>2]=e&255;e=j;i=h;o=15;break}else if((o|0)==20)return g|0}}else{i=h;o=15}while(0);if((o|0)==15)if((e|0)<(f|0)){h=m+468|0;if(!(c[(c[h>>2]|0)+40>>2]|0)){o=c[m>>2]|0;c[o+20>>2]=120;Ub[c[o+4>>2]&63](m,-1);c[(c[h>>2]|0)+40>>2]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function Pu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!(Ou(a,b,e,g)|0)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[5184+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!(Ou(a,b,e,1)|0)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;a=c[f>>2]|0;c[a+20>>2]=121;Ub[c[a+4>>2]&63](f,-1);f=0;return f|0}else{f=d[(c[f+72+(g<<2)>>2]|0)+h+((c[f+140>>2]|0)+17)>>0]|0;return f|0}return 0}function Qu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+468>>2]|0;p=b+224|0;q=b+412|0;f=c[q>>2]|0;e=(f|0)==0;do if(c[p>>2]|0){m=b+416|0;d=c[m>>2]|0;if(e)if(!d)n=7;else n=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+436>>2]|0):0)?(c[b+340>>2]|0)==1:0)n=7;else n=11;do if((n|0)==7){d=c[b+420>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+424>>2]|0)){n=11;break}}else d=c[b+424>>2]|0;if((d|0)>13)n=11}while(0);if((n|0)==11){l=c[b>>2]|0;c[l+20>>2]=17;c[l+24>>2]=f;c[(c[b>>2]|0)+28>>2]=c[m>>2];c[(c[b>>2]|0)+32>>2]=c[b+420>>2];c[(c[b>>2]|0)+36>>2]=c[b+424>>2];Sb[c[c[b>>2]>>2]&255](b)}l=b+340|0;d=c[l>>2]|0;if((d|0)>0){j=b+160|0;g=b+420|0;k=b+424|0;i=0;do{f=c[(c[b+344+(i<<2)>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[q>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[(c[b>>2]|0)+28>>2]=0;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1);d=c[q>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;r=c[e>>2]|0;if((c[g>>2]|0)!=(((r|0)>0?r:0)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=f;c[(c[b>>2]|0)+28>>2]=d;Ub[c[(c[b>>2]|0)+4>>2]&63](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}i=i+1|0;d=c[l>>2]|0}while((i|0)<(d|0))}else g=b+420|0;e=(c[q>>2]|0)==0;f=o+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=43;k=l;break}else{c[f>>2]=44;k=l;break}else if(e){c[f>>2]=45;k=l;break}else{c[f>>2]=46;k=l;break}}else{if((e?(c[b+420>>2]|0)==0:0)?(c[b+424>>2]|0)==0:0){r=c[b+416>>2]|0;if((r|0)<64?(r|0)!=(c[b+436>>2]|0):0)n=36}else n=36;if((n|0)==36){r=c[b>>2]|0;c[r+20>>2]=125;Ub[c[r+4>>2]&63](b,-1)}c[o+4>>2]=47;d=b+340|0;k=d;d=c[d>>2]|0}while(0);if((d|0)<=0){q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}h=b+436|0;i=b+420|0;j=b+4|0;g=0;do{f=c[b+344+(g<<2)>>2]|0;if(c[p>>2]|0)if(!(c[q>>2]|0)){if(!(c[i>>2]|0))n=43}else n=50;else n=43;do if((n|0)==43){n=0;d=c[f+20>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+60+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,64)|0;c[e>>2]=d}e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[o+24+(g<<2)>>2]=0;c[o+40+(g<<2)>>2]=0;if(!(c[p>>2]|0))if(!(c[h>>2]|0))break;else{n=50;break}else if(!(c[q>>2]|0))break;else{n=50;break}}while(0);if((n|0)==50){n=0;d=c[f+24>>2]|0;if(d>>>0>15){r=c[b>>2]|0;c[r+20>>2]=50;c[r+24>>2]=d;Sb[c[c[b>>2]>>2]&255](b)}e=o+124+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Jb[c[c[j>>2]>>2]&63](b,1,256)|0;c[e>>2]=d}aP(d|0,0,256)|0}g=g+1|0}while((g|0)<(c[k>>2]|0));q=o+12|0;c[q>>2]=0;q=o+16|0;c[q>>2]=0;q=o+20|0;c[q>>2]=-16;q=b+280|0;q=c[q>>2]|0;r=o+56|0;c[r>>2]=q;return}function Ru(a){a=a|0;return}function Su(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){r=c[e>>2]|0;c[r+20>>2]=25;Sb[c[r>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{t=13;break}else if(!(c[j>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}o=s+20|0;if((c[o>>2]|0)==-1)return 1;p=e+368|0;if((c[p>>2]|0)<=0)return 1;q=e+424|0;n=0;a:while(1){r=c[f+(n<<2)>>2]|0;l=c[e+372+(n<<2)>>2]|0;j=c[(c[e+344+(l<<2)>>2]|0)+20>>2]|0;h=s+60+(j<<2)|0;k=s+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[s+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768)break a;h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=s+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[r>>1]=g<>2];n=n+1|0;if((n|0)>=(c[p>>2]|0)){t=37;break}}if((t|0)==37)return 1;t=c[e>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](e,-1);c[o>>2]=-1;return 1}function Tu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=s+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){t=c[e>>2]|0;c[t+20>>2]=25;Sb[c[t>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[s+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[s+24+(g<<2)>>2]=0;c[s+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[s+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}t=s+20|0;if((c[t>>2]|0)==-1)return 1;r=c[e+432>>2]|0;p=c[f>>2]|0;o=c[(c[e+344>>2]|0)+24>>2]|0;q=s+124+(o<<2)|0;l=s+188|0;m=e+416|0;n=e+424|0;o=e+264+o|0;h=(c[e+412>>2]|0)+-1|0;a:while(1){g=(c[q>>2]|0)+(h*3|0)|0;if(Xu(e,g)|0){r=36;break}j=h+1|0;if(!(Xu(e,g+1|0)|0)){i=g;h=j;while(1){if((h|0)>=(c[m>>2]|0)){r=23;break a}g=i+3|0;j=h+1|0;if(!(Xu(e,i+4|0)|0)){i=g;h=j}else break}}k=Xu(e,l)|0;i=g+2|0;g=Xu(e,i)|0;if(g){if(Xu(e,i)|0){g=g<<1;h=(c[q>>2]|0)+((h|0)<(d[o>>0]|0|0)?189:217)|0;if(Xu(e,h)|0)do{g=g<<1;if((g|0)==32768){r=30;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{s=(Xu(e,i)|0)==0;g=(s?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(j<<2)>>2]<<1)>>1]=((k|0)==0?g+1|0:~g)<>2];if((j|0)<(c[m>>2]|0))h=j;else{r=36;break}}if((r|0)==23){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==30){s=c[e>>2]|0;c[s+20>>2]=117;Ub[c[s+4>>2]&63](e,-1);c[t>>2]=-1;return 1}else if((r|0)==36)return 1;return 0}function Uu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[d+468>>2]|0;p=d+280|0;if(c[p>>2]|0){s=r+56|0;g=c[s>>2]|0;if(!g){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){o=c[d>>2]|0;c[o+20>>2]=25;Sb[c[o>>2]&255](d)}h=d+340|0;if((c[h>>2]|0)>0){i=d+224|0;j=d+412|0;k=d+436|0;l=d+420|0;g=0;do{m=c[d+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))q=10}else q=13;else q=10;do if((q|0)==10){q=0;n=c[r+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[r+24+(g<<2)>>2]=0;c[r+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{q=13;break}else if(!(c[j>>2]|0))break;else{q=13;break}}while(0);if((q|0)==13){q=0;aP(c[r+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=-16;g=c[p>>2]|0;c[s>>2]=g}c[s>>2]=g+-1}h=r+188|0;i=1<>2];j=d+368|0;if((c[j>>2]|0)<=0)return 1;g=0;do{if(Xu(d,h)|0){s=c[f+(g<<2)>>2]|0;b[s>>1]=i|(e[s>>1]|0)}g=g+1|0}while((g|0)<(c[j>>2]|0));return 1}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[d+468>>2]|0;o=d+280|0;if(c[o>>2]|0){p=q+56|0;f=c[p>>2]|0;if(!f){if(!(Gb[c[(c[d+464>>2]|0)+8>>2]&127](d)|0)){s=c[d>>2]|0;c[s+20>>2]=25;Sb[c[s>>2]&255](d)}g=d+340|0;if((c[g>>2]|0)>0){h=d+224|0;i=d+412|0;j=d+436|0;k=d+420|0;f=0;do{l=c[d+344+(f<<2)>>2]|0;if(c[h>>2]|0)if(!(c[i>>2]|0)){if(!(c[k>>2]|0))t=10}else t=13;else t=10;do if((t|0)==10){t=0;m=c[q+60+(c[l+20>>2]<<2)>>2]|0;n=m+64|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[q+24+(f<<2)>>2]=0;c[q+40+(f<<2)>>2]=0;if(!(c[h>>2]|0))if(!(c[j>>2]|0))break;else{t=13;break}else if(!(c[i>>2]|0))break;else{t=13;break}}while(0);if((t|0)==13){t=0;aP(c[q+124+(c[l+24>>2]<<2)>>2]|0,0,256)|0}f=f+1|0}while((f|0)<(c[g>>2]|0))}c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=-16;f=c[o>>2]|0;c[p>>2]=f}c[p>>2]=f+-1}r=q+20|0;if((c[r>>2]|0)==-1)return 1;s=c[d+432>>2]|0;n=c[e>>2]|0;g=c[(c[d+344>>2]|0)+24>>2]|0;p=c[d+424>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(f<<2)>>2]<<1)>>1]|0)break;f=f+-1|0;if(!f){f=0;break}}m=q+124+(g<<2)|0;j=q+188|0;k=o&65535;l=p&65535;g=(c[d+412>>2]|0)+-1|0;a:while(1){h=(c[m>>2]|0)+(g*3|0)|0;if((g|0)>=(f|0)?Xu(d,h)|0:0){t=38;break}g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;b:do if(!(b[i>>1]|0)){while(1){if(Xu(d,h+1|0)|0)break;if((g|0)>=(c[e>>2]|0)){t=35;break a}h=h+3|0;g=g+1|0;i=n+(c[s+(g<<2)>>2]<<1)|0;if(b[i>>1]|0){t=26;break b}}if(!(Xu(d,j)|0)){b[i>>1]=k;break}else{b[i>>1]=l;break}}else t=26;while(0);do if((t|0)==26){t=0;if(Xu(d,h+2|0)|0){q=b[i>>1]|0;h=q<<16>>16;if(q<<16>>16<0){b[i>>1]=p+h;break}else{b[i>>1]=o+h;break}}}while(0);if((g|0)>=(c[e>>2]|0)){t=38;break}}if((t|0)==35){t=c[d>>2]|0;c[t+20>>2]=117;Ub[c[t+4>>2]&63](d,-1);c[r>>2]=-1;return 1}else if((t|0)==38)return 1;return 0} +function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;Jg(a+32|0,b);d=Ah(b)|0;d=Ng(c[d>>2]|0)|0;f=Ah(b)|0;f=Og(c[f>>2]|0)|0;e=Pg(b)|0;uj(a+92|0,d,f,e,Qg(b)|0,36,3.0,1.5,5,.800000011920929);e=Ah(b)|0;e=Ng(c[e>>2]|0)|0;c[a>>2]=e;e=Ah(b)|0;e=Og(c[e>>2]|0)|0;c[a+4>>2]=e;e=a+16|0;Bh(e,c[a+8>>2]|0);f=a+20|0;a=a+12|0;b=0;while(1){d=c[e>>2]|0;if(b>>>0>=(((c[f>>2]|0)-d|0)/12|0)>>>0)break;Ch(d+(b*12|0)|0,c[a>>2]|0);b=b+1|0}return}function Ah(a){a=a|0;return a+4|0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;kh(f);d=f}c[g>>2]=a}}else Kh(a,b-e|0);return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/12|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*12|0)|0;while(1){if((d|0)==(a|0))break;f=d+-12|0;lh(f);d=f}c[g>>2]=a}}else Dh(a,b-e|0);return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Fh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Gh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Hh(f,b);Ih(a,f);Jh(f);break}}else Eh(a,b);while(0);zb=i;return}function Eh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Fh(a){a=a|0;return 357913941}function Gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Hh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Jh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;lh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/12|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/12|0)+b|0;e=Mh(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/12|0;g=k<<1;Nh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/12|0,a+8|0);Oh(f,b);Ph(a,f);Qh(f);break}}else Lh(a,b);while(0);zb=i;return}function Lh(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b*12|0)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d*12|0)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b*12|0)|0;c[a>>2]=d+(b*12|0);return}function Ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[a>>2]|0;f=a+4|0;g=b+4|0;d=c[f>>2]|0;while(1){if((d|0)==(e|0))break;k=c[g>>2]|0;i=k+-12|0;h=d+-12|0;c[i>>2]=0;j=k+-8|0;c[j>>2]=0;k=k+-4|0;c[k>>2]=0;c[i>>2]=c[h>>2];i=d+-8|0;c[j>>2]=c[i>>2];j=d+-4|0;c[k>>2]=c[j>>2];c[j>>2]=0;c[i>>2]=0;c[h>>2]=0;c[g>>2]=(c[g>>2]|0)+-12;d=h}i=c[a>>2]|0;c[a>>2]=c[g>>2];c[g>>2]=i;i=b+8|0;k=c[f>>2]|0;c[f>>2]=c[i>>2];c[i>>2]=k;i=a+8|0;k=b+12|0;j=c[i>>2]|0;c[i>>2]=c[k>>2];c[k>>2]=j;c[b>>2]=c[g>>2];return}function Qh(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;e=e+-12|0;c[d>>2]=e;kh(e)}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=zb;zb=zb+32|0;d=e;if((Pg(b)|0)<=0){f=Xf(Xf(PE(Xf(Xf(Xf(56032,22918)|0,22676)|0,35e3)|0,147)|0,35007)|0,22967)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);g=XF(d,56736)|0;g=Ib[c[(c[g>>2]|0)+28>>2]&63](g,10)|0;YF(d);QE(f,g)|0;ME(f)|0;ua()}Bq(d,23866);if(Sh(d)|0)Zg(a+32|0,b);Cq(d);Bq(d,23878);if(Sh(d)|0)Th(a,b,a+32|0);Cq(d);Bq(d,23898);if(Sh(d)|0)Uh(a,b);Cq(d);Bq(d,23907);if(Sh(d)|0)Vh(a);Cq(d);Bq(d,23921);if(Sh(d)|0)Wh(a,b);Cq(d);zb=e;return}function Sh(a){a=a|0;return 1}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0.0;ha=zb;zb=zb+48|0;aa=ha;ca=a+60|0;da=a+64|0;c[da>>2]=c[ca>>2];fa=+ji(+f[a+52>>2]);V=a+32|0;W=aa+12|0;Y=aa+16|0;Z=aa+24|0;_=aa+28|0;$=aa+4|0;F=a+68|0;G=aa+12|0;H=aa+16|0;I=aa+24|0;J=aa+28|0;K=aa+4|0;L=aa+12|0;M=aa+16|0;N=aa+24|0;O=aa+28|0;P=aa+4|0;a=1;a:while(1){if(a>>>0>=((Ki(V)|0)+-1|0)>>>0){ga=3;break}Q=Li(d,a+-1|0)|0;R=Li(d,a)|0;S=a+1|0;T=Li(d,S)|0;U=Mi(d,a)|0;E=Ni(d,a)|0;D=Ng(Q)|0;b:do if((D|0)==(Ng(R)|0)?(D=Ng(Q)|0,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=7;break a}D=Og(Q)|0;if((D|0)!=(Og(T)|0)){ga=9;break a}k=(Ng(R)|0)+-1|0;l=(Og(R)|0)+-1|0;m=+(E|0);a=1;while(1){if(a>>>0>=l>>>0)break b;v=a+-1|0;n=ch(Q,v)|0;o=ch(Q,a)|0;p=a+1|0;q=ch(Q,p)|0;r=ch(R,v)|0;t=ch(R,a)|0;u=ch(R,p)|0;v=ch(T,v)|0;w=ch(T,a)|0;x=ch(T,p)|0;j=+(a>>>0);i=1;while(1){if(i>>>0>=k>>>0)break;a=t+(i<<2)|0;do if(!(+ji(+f[a>>2])>2];h=i+-1|0;e=+f[n+(h<<2)>>2];do if(((((g>e?g>+f[n+(i<<2)>>2]:0)?(X=i+1|0,g>+f[n+(X<<2)>>2]):0)?g>+f[o+(h<<2)>>2]:0)?g>+f[o+(i<<2)>>2]:0)?g>+f[o+(X<<2)>>2]:0){if(!(g>+f[q+(h<<2)>>2])){ga=42;break}if(!(g>+f[q+(i<<2)>>2])){ga=42;break}if(!(g>+f[q+(X<<2)>>2])){ga=42;break}if(!(g>+f[r+(h<<2)>>2])){ga=42;break}if(!(g>+f[r+(i<<2)>>2])){ga=42;break}if(!(g>+f[r+(X<<2)>>2])){ga=42;break}if(!(g>+f[t+(h<<2)>>2])){ga=42;break}if(!(g>+f[t+(X<<2)>>2])){ga=42;break}if(!(g>+f[u+(h<<2)>>2])){ga=42;break}if(!(g>+f[u+(i<<2)>>2])){ga=42;break}if(!(g>+f[u+(X<<2)>>2])){ga=42;break}if(!(g>+f[v+(h<<2)>>2])){ga=42;break}if(!(g>+f[v+(i<<2)>>2])){ga=42;break}if(!(g>+f[v+(X<<2)>>2])){ga=42;break}if(!(g>+f[w+(h<<2)>>2])){ga=42;break}if(!(g>+f[w+(i<<2)>>2])){ga=42;break}if(!(g>+f[w+(X<<2)>>2])){ga=42;break}if(!(g>+f[x+(h<<2)>>2])){ga=42;break}if(!(g>+f[x+(i<<2)>>2])){ga=42;break}if(!(g>+f[x+(X<<2)>>2]))ga=42}else ga=42;while(0);if((ga|0)==42){ga=0;if(!(g>2]))break;a=i+1|0;if(!(g<+f[n+(a<<2)>>2]))break;if(!(g<+f[o+(h<<2)>>2]))break;if(!(g<+f[o+(i<<2)>>2]))break;if(!(g<+f[o+(a<<2)>>2]))break;if(!(g<+f[q+(h<<2)>>2]))break;if(!(g<+f[q+(i<<2)>>2]))break;if(!(g<+f[q+(a<<2)>>2]))break;if(!(g<+f[r+(h<<2)>>2]))break;if(!(g<+f[r+(i<<2)>>2]))break;if(!(g<+f[r+(a<<2)>>2]))break;if(!(g<+f[t+(h<<2)>>2]))break;if(!(g<+f[t+(a<<2)>>2]))break;if(!(g<+f[u+(h<<2)>>2]))break;if(!(g<+f[u+(i<<2)>>2]))break;if(!(g<+f[u+(a<<2)>>2]))break;if(!(g<+f[v+(h<<2)>>2]))break;if(!(g<+f[v+(i<<2)>>2]))break;if(!(g<+f[v+(a<<2)>>2]))break;if(!(g<+f[w+(h<<2)>>2]))break;if(!(g<+f[w+(i<<2)>>2]))break;if(!(g<+f[w+(a<<2)>>2]))break;if(!(g<+f[x+(h<<2)>>2]))break;if(!(g<+f[x+(i<<2)>>2]))break;if(!(g<+f[x+(a<<2)>>2]))break}c[W>>2]=U;c[Y>>2]=E;f[Z>>2]=g;C=+si(b,U,m);f[_>>2]=C;ri(aa,$,+(i>>>0),j,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);i=i+1|0}a=p}}else ga=72;while(0);c:do if((ga|0)==72){ga=0;D=Ng(Q)|0;if((D|0)==(Ng(R)|0)?(D=(Ng(R)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=Og(Q)|0;if((D|0)!=(Og(R)|0)){ga=75;break a}D=(Og(R)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=77;break a}l=~~+s(+((+(((Ng(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;n=~~+s(+((+(((Og(T)|0)+-1|0)>>>0)+-.5)*2.0+.5))>>>0;C=+(E|0);a=2;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(Q,t)|0;p=ch(Q,a)|0;q=a+1|0;r=ch(Q,q)|0;t=ch(R,t)|0;u=ch(R,a)|0;v=ch(R,q)|0;y=+(a>>>0);z=y*.5+-.25;A=z+-.5;B=z+.5;k=2;while(1){if(k>>>0>=l>>>0)break;i=u+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0);m=j*.5+-.25;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ba=k+1|0,e>+f[o+(ba<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(k<<2)>>2])){ga=110;break}if(!(e>+f[p+(ba<<2)>>2])){ga=110;break}if(!(e>+f[r+(h<<2)>>2])){ga=110;break}if(!(e>+f[r+(k<<2)>>2])){ga=110;break}if(!(e>+f[r+(ba<<2)>>2])){ga=110;break}if(!(e>+f[t+(h<<2)>>2])){ga=110;break}if(!(e>+f[t+(k<<2)>>2])){ga=110;break}if(!(e>+f[t+(ba<<2)>>2])){ga=110;break}if(!(e>+f[u+(h<<2)>>2])){ga=110;break}if(!(e>+f[u+(ba<<2)>>2])){ga=110;break}if(!(e>+f[v+(h<<2)>>2])){ga=110;break}if(!(e>+f[v+(k<<2)>>2])){ga=110;break}if(!(e>+f[v+(ba<<2)>>2])){ga=110;break}g=m+-.5;if(!(e>+Ci(T,g,A))){ga=110;break}e=+f[i>>2];if(!(e>+Ci(T,m,A))){ga=110;break}ia=+f[i>>2];e=m+.5;if(!(ia>+Ci(T,e,A))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,z))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,g,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,m,B))){ga=110;break}ia=+f[i>>2];if(!(ia>+Ci(T,e,B)))ga=110}else ga=110;while(0);if((ga|0)==110){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(k<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=m+-.5;if(!(e<+Ci(T,g,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,A)))break;ia=+f[i>>2];e=m+.5;if(!(ia<+Ci(T,e,A)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,z)))break;ia=+f[i>>2];if(!(ia<+Ci(T,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,m,B)))break;ia=+f[i>>2];if(!(ia<+Ci(T,e,B)))break}c[G>>2]=U;c[H>>2]=E;c[I>>2]=c[i>>2];ia=+si(b,U,C);f[J>>2]=ia;ri(aa,K,j,y,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}D=(Ng(Q)|0)>>>1;if((D|0)==(Ng(R)|0)?(D=(Ng(Q)|0)>>>1,(D|0)==(Ng(T)|0)):0){D=(Og(Q)|0)>>>1;if((D|0)!=(Og(R)|0)){ga=144;break a}D=(Og(Q)|0)>>>1;if((D|0)!=(Og(T)|0)){ga=146;break a}l=(Ng(R)|0)+-1|0;n=(Og(R)|0)+-1|0;A=+(E|0);a=1;while(1){if(a>>>0>=n>>>0)break c;t=a+-1|0;o=ch(R,t)|0;p=ch(R,a)|0;q=a+1|0;r=ch(R,q)|0;t=ch(T,t)|0;u=ch(T,a)|0;v=ch(T,q)|0;B=+(a<<1>>>0)+.5;m=+(a>>>0);y=B+-2.0;z=B+2.0;k=1;while(1){if(k>>>0>=l>>>0)break;i=p+(k<<2)|0;do if(!(+ji(+f[i>>2])>>0)+.5;e=+f[i>>2];h=k+-1|0;a=o+(h<<2)|0;do if(((e>+f[a>>2]?e>+f[o+(k<<2)>>2]:0)?(ea=k+1|0,e>+f[o+(ea<<2)>>2]):0)?e>+f[p+(h<<2)>>2]:0){if(!(e>+f[p+(ea<<2)>>2])){ga=179;break}if(!(e>+f[r+(h<<2)>>2])){ga=179;break}if(!(e>+f[r+(k<<2)>>2])){ga=179;break}if(!(e>+f[r+(ea<<2)>>2])){ga=179;break}if(!(e>+f[t+(h<<2)>>2])){ga=179;break}if(!(e>+f[t+(k<<2)>>2])){ga=179;break}if(!(e>+f[t+(ea<<2)>>2])){ga=179;break}if(!(e>+f[u+(h<<2)>>2])){ga=179;break}if(!(e>+f[u+(k<<2)>>2])){ga=179;break}if(!(e>+f[u+(ea<<2)>>2])){ga=179;break}if(!(e>+f[v+(h<<2)>>2])){ga=179;break}if(!(e>+f[v+(k<<2)>>2])){ga=179;break}if(!(e>+f[v+(ea<<2)>>2])){ga=179;break}g=j+-2.0;if(!(e>+Ci(Q,g,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,y))){ga=179;break}ia=+f[i>>2];e=j+2.0;if(!(ia>+Ci(Q,e,y))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,B))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,g,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,j,z))){ga=179;break}ia=+f[i>>2];if(!(ia>+Ci(Q,e,z)))ga=179}else ga=179;while(0);if((ga|0)==179){ga=0;e=+f[i>>2];if(!(e<+f[a>>2]))break;if(!(e<+f[o+(k<<2)>>2]))break;a=k+1|0;if(!(e<+f[o+(a<<2)>>2]))break;if(!(e<+f[p+(h<<2)>>2]))break;if(!(e<+f[p+(a<<2)>>2]))break;if(!(e<+f[r+(h<<2)>>2]))break;if(!(e<+f[r+(k<<2)>>2]))break;if(!(e<+f[r+(a<<2)>>2]))break;if(!(e<+f[t+(h<<2)>>2]))break;if(!(e<+f[t+(k<<2)>>2]))break;if(!(e<+f[t+(a<<2)>>2]))break;if(!(e<+f[u+(h<<2)>>2]))break;if(!(e<+f[u+(k<<2)>>2]))break;if(!(e<+f[u+(a<<2)>>2]))break;if(!(e<+f[v+(h<<2)>>2]))break;if(!(e<+f[v+(k<<2)>>2]))break;if(!(e<+f[v+(a<<2)>>2]))break;g=j+-2.0;if(!(e<+Ci(Q,g,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,y)))break;ia=+f[i>>2];e=j+2.0;if(!(ia<+Ci(Q,e,y)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,B)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,g,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,j,z)))break;ia=+f[i>>2];if(!(ia<+Ci(Q,e,z)))break}c[L>>2]=U;c[M>>2]=E;c[N>>2]=c[i>>2];ia=+si(b,U,A);f[O>>2]=ia;ri(aa,P,+(k>>>0),m,U);a=c[da>>2]|0;if((a|0)==(c[F>>2]|0)){_h(ca,aa);break}else{h=aa;D=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(D|0));c[da>>2]=(c[da>>2]|0)+36;break}}while(0);k=k+1|0}a=q}}}while(0);a=S}if((ga|0)==3){zb=ha;return}else if((ga|0)==7){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,192)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==9){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26726)|0,22676)|0,35e3)|0,193)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==75){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26651)|0,22676)|0,35e3)|0,277)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==77){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26778)|0,22676)|0,35e3)|0,278)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==144){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26835)|0,22676)|0,35e3)|0,362)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}else if((ga|0)==146){ha=Xf(Xf(PE(Xf(Xf(Xf(56032,26892)|0,22676)|0,35e3)|0,363)|0,35007)|0,26703)|0;IE(aa,ha+(c[(c[ha>>2]|0)+-12>>2]|0)|0);ga=XF(aa,56736)|0;ga=Ib[c[(c[ga>>2]|0)+28>>2]&63](ga,10)|0;YF(aa);QE(ha,ga)|0;ME(ha)|0;ua()}}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0;J=zb;zb=zb+80|0;I=J+68|0;A=J;C=J+56|0;D=J+44|0;E=J+40|0;F=J+36|0;s=+ji(+f[a+52>>2]);H=a+56|0;w=+ji(+f[H>>2]+1.0);w=w/+f[H>>2];H=a+60|0;x=a+64|0;y=a+32|0;z=D+4|0;o=a+88|0;p=C+4|0;q=C+8|0;r=D+8|0;m=0;n=0;while(1){l=c[H>>2]|0;i=l;if(n>>>0>=(((c[x>>2]|0)-l|0)/36|0)>>>0){a=3;break}d=i+(n*36|0)|0;a=i+(n*36|0)+16|0;l=c[a>>2]|0;if((l|0)>=(li(y)|0)){a=5;break}j=i+(n*36|0)+12|0;l=c[j>>2]|0;l=B(li(y)|0,l)|0;l=l+(c[a>>2]|0)|0;k=i+(n*36|0)+4|0;mi(E,F,+f[d>>2],+f[k>>2],c[j>>2]|0);e=~~(+f[E>>2]+.5);g=~~(+f[F>>2]+.5);L=ni(y)|0;L=(c[L>>2]|0)+(l+-1<<5)|0;h=ni(y)|0;h=(c[h>>2]|0)+(l<<5)|0;K=ni(y)|0;if(((oi(A,C,L,h,(c[K>>2]|0)+(l+1<<5)|0,e,g)|0?pi(D,A,C)|0:0)?(M=+ji(+f[D>>2]),M=M+ +ji(+f[z>>2]),!(M>+f[o>>2])):0)?(G=i+(n*36|0)+32|0,qi(G,A)|0):0){l=i+(n*36|0)+24|0;M=+f[l>>2];L=(ch(h,g)|0)+(e<<2)|0;if(!(M==+f[L>>2])){a=11;break}L=(ch(h,g)|0)+(e<<2)|0;N=+f[D>>2];M=+f[z>>2];f[l>>2]=+f[L>>2]-(+f[C>>2]*N+ +f[p>>2]*M+ +f[q>>2]*+f[r>>2]);ri(d,k,N+ +f[E>>2],M+ +f[F>>2],c[j>>2]|0);M=+f[r>>2]+ +(c[a>>2]|0);a=i+(n*36|0)+20|0;f[a>>2]=M;M=+Zh(M,0.0,+(li(y)|0));f[a>>2]=M;if(((((+t(+(+f[G>>2]))>2])>=s:0)?(u=+f[d>>2],u>=0.0):0)?(L=ni(y)|0,u<+((Ng(c[L>>2]|0)|0)>>>0)):0)?(v=+f[k>>2],v>=0.0):0)?(L=ni(y)|0,v<+((Og(c[L>>2]|0)|0)>>>0)):0){N=+si(b,c[j>>2]|0,+f[a>>2]);f[i+(n*36|0)+28>>2]=N;a=m+1|0;g=(c[H>>2]|0)+(m*36|0)|0;e=g+36|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}else a=m}else a=m;m=a;n=n+1|0}if((a|0)==3){ki(H,m);zb=J;return}else if((a|0)==5){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24248)|0,22676)|0,35e3)|0,489)|0,35007)|0,24320)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}else if((a|0)==11){L=Xf(Xf(PE(Xf(Xf(Xf(56032,24357)|0,22676)|0,35e3)|0,526)|0,35007)|0,24414)|0;IE(I,L+(c[(c[L>>2]|0)+-12>>2]|0)|0);K=XF(I,56736)|0;K=Ib[c[(c[K>>2]|0)+28>>2]&63](K,10)|0;YF(I);QE(L,K)|0;ME(L)|0;ua()}}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+16|0;d=l+12|0;h=l;i=a+60|0;j=a+64|0;k=a+84|0;e=c[k>>2]|0;do if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>e>>>0){f=a+16|0;b=c[f>>2]|0;g=((c[a+20>>2]|0)-b|0)/12|0;if((g|0)!=(c[a+8>>2]|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,23939)|0,22676)|0,35e3)|0,454)|0,35007)|0,23994)|0;IE(d,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);n=XF(d,56736)|0;n=Ib[c[(c[n>>2]|0)+28>>2]&63](n,10)|0;YF(d);QE(m,n)|0;ME(m)|0;ua()}b=((c[b+4>>2]|0)-(c[b>>2]|0)|0)/12|0;if((b|0)!=(c[a+12>>2]|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24020)|0,22676)|0,35e3)|0,455)|0,35007)|0,23994)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;ai(f,h,i,g,b,c[a>>2]|0,c[a+4>>2]|0,e);Xh(i,h);if((((c[j>>2]|0)-(c[i>>2]|0)|0)/36|0)>>>0>(c[k>>2]|0)>>>0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,24078)|0,22676)|0,35e3)|0,469)|0,35007)|0,24147)|0;IE(d,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(d,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(d);QE(n,m)|0;ME(n)|0;ua()}else{hh(h);break}}while(0);zb=l;return}function Wh(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=zb;zb=zb+64|0;l=w+48|0;s=w+44|0;t=w+40|0;u=w+36|0;v=w;a:do if(!(a[b+28>>0]|0)){g=c[b+60>>2]|0;e=((c[b+64>>2]|0)-g|0)/36|0;b=0;while(1){if((b|0)==(e|0))break a;f[g+(b*36|0)+8>>2]=0.0;b=b+1|0}}else{k=b+72|0;m=b+76|0;c[m>>2]=c[k>>2];n=b+60|0;o=b+64|0;uh(k,(c[o>>2]|0)-(c[n>>2]|0)|0);p=b+92|0;vj(p,d);q=b+144|0;r=v+8|0;j=b+80|0;i=0;while(1){h=c[n>>2]|0;b=h;if(i>>>0>=(((c[o>>2]|0)-h|0)/36|0)>>>0)break;Yh(s,t,u,+f[b+(i*36|0)>>2],+f[b+(i*36|0)+4>>2],+f[b+(i*36|0)+28>>2],c[b+(i*36|0)+12>>2]|0);x=+f[s>>2];x=+Zh(x,0.0,+(((Ng(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[s>>2]=x;x=+f[t>>2];x=+Zh(x,0.0,+(((Og(Lg(d,c[(c[n>>2]|0)+(i*36|0)+12>>2]|0,0)|0)|0)+-1|0)>>>0));f[t>>2]=x;h=c[n>>2]|0;yj(p,c[q>>2]|0,l,c[h+(i*36|0)+12>>2]|0,c[h+(i*36|0)+16>>2]|0,+f[s>>2],x,+f[u>>2]);h=0;while(1){if((h|0)>=(c[l>>2]|0))break;b=v;e=(c[n>>2]|0)+(i*36|0)|0;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[r>>2]=c[(c[q>>2]|0)+(h<<2)>>2];b=c[m>>2]|0;if((b|0)==(c[j>>2]|0))_h(k,v);else{e=v;g=b+36|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(g|0));c[m>>2]=(c[m>>2]|0)+36}h=h+1|0}i=i+1|0}Xh(n,k)}while(0);zb=w;return}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function Yh(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=+d;e=+e;g=+g;h=h|0;var i=0.0,j=0.0;i=1.0/+(1<>2]=i*d+j;f[b>>2]=i*e+j;f[c>>2]=i*g;return}function Zh(a,b,c){a=+a;b=+b;c=+c;if(!(ac)a=c}else a=b;return +a}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=zb;zb=zb+32|0;i=j;d=a+4|0;e=(((c[d>>2]|0)-(c[a>>2]|0)|0)/36|0)+1|0;f=$h(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;k=((c[a+8>>2]|0)-g|0)/36|0;h=k<<1;vh(i,k>>>0>>1>>>0?(h>>>0>>0?e:h):f,((c[d>>2]|0)-g|0)/36|0,a+8|0);f=i+8|0;g=c[f>>2]|0;h=g;d=b;e=h+36|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));c[f>>2]=g+36;wh(a,i);xh(i);zb=j;return}}function $h(a){a=a|0;return 119304647}function ai(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0.0;D=zb;zb=zb+48|0;C=D+8|0;v=D+32|0;u=D+28|0;y=D+24|0;z=D+20|0;w=D+16|0;x=D;o=B(g,e)|0;n=+A(+(+(h|0)/+(e|0)));m=+A(+(+(i|0)/+(g|0)));r=b+4|0;c[r>>2]=c[b>>2];uh(b,j);s=a+4|0;g=c[a>>2]|0;i=((c[s>>2]|0)-g|0)/12|0;e=0;while(1){if((e|0)==(i|0))break;l=c[g+(e*12|0)>>2]|0;k=((c[g+(e*12|0)+4>>2]|0)-l|0)/12|0;h=0;while(1){if((h|0)==(k|0))break;c[l+(h*12|0)+4>>2]=c[l+(h*12|0)>>2];h=h+1|0}e=e+1|0}q=(j|0)/(o|0)|0;o=d+4|0;n=+(~~n|0);m=+(~~m|0);g=C+4|0;l=0;while(1){p=c[d>>2]|0;e=p;if(l>>>0>=(((c[o>>2]|0)-p|0)/36|0)>>>0)break;i=~~(+f[e+(l*36|0)+4>>2]/m);k=c[(c[a>>2]|0)+(~~(+f[e+(l*36|0)>>2]/n)*12|0)>>2]|0;E=+t(+(+f[e+(l*36|0)+24>>2]));f[C>>2]=E;c[g>>2]=l;e=k+(i*12|0)+4|0;h=c[e>>2]|0;if(h>>>0<(c[k+(i*12|0)+8>>2]|0)>>>0){k=C;j=c[k+4>>2]|0;p=h;c[p>>2]=c[k>>2];c[p+4>>2]=j;c[e>>2]=(c[e>>2]|0)+8}else bi(k+(i*12|0)|0,C);l=l+1|0}p=b+8|0;e=c[a>>2]|0;g=e;j=0;h=g;a:while(1){if(j>>>0>=(((c[s>>2]|0)-e|0)/12|0)>>>0){e=16;break}o=0;i=g;while(1){l=c[i+(j*12|0)>>2]|0;e=l;if(o>>>0>=(((c[i+(j*12|0)+4>>2]|0)-l|0)/12|0)>>>0)break;l=e+(o*12|0)|0;e=e+(o*12|0)+4|0;g=c[e>>2]|0;i=c[l>>2]|0;k=g-i>>3;k=q>>>0>>0?q:k;if(!k)e=h;else{c[y>>2]=i;c[z>>2]=i+(k<<3);c[w>>2]=g;c[u>>2]=c[y>>2];c[v>>2]=c[z>>2];c[C>>2]=c[w>>2];ci(u,v,C,x);g=c[l>>2]|0;i=g;if(k>>>0>(c[e>>2]|0)-g>>3>>>0?!(+f[i>>2]>=+f[i+(k<<3)>>2]):0){e=23;break a}i=0;while(1){if(i>>>0>=k>>>0)break;h=(c[d>>2]|0)+((c[(c[l>>2]|0)+(i<<3)+4>>2]|0)*36|0)|0;e=c[r>>2]|0;if((e|0)==(c[p>>2]|0))_h(b,h);else{g=e+36|0;do{c[e>>2]=c[h>>2];e=e+4|0;h=h+4|0}while((e|0)<(g|0));c[r>>2]=(c[r>>2]|0)+36}i=i+1|0}e=c[a>>2]|0}o=o+1|0;h=e;i=e}j=j+1|0;g=i;e=i}if((e|0)==16){zb=D;return}else if((e|0)==23){D=Xf(Xf(PE(Xf(Xf(Xf(56032,24171)|0,22676)|0,35e3)|0,661)|0,35007)|0,24229)|0;IE(C,D+(c[(c[D>>2]|0)+-12>>2]|0)|0);z=XF(C,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(C);QE(D,z)|0;ME(D)|0;ua()}}function bi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>3)+1|0;g=fi(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>2;gi(d,k>>3>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>3,a+8|0);g=d+8|0;e=c[b+4>>2]|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[g>>2]=(c[g>>2]|0)+8;hi(a,d);ii(d);zb=h;return}}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=zb;zb=zb+48|0;y=K+40|0;x=K+36|0;w=K+32|0;C=K+28|0;D=K+24|0;E=K+20|0;G=K+16|0;H=K+12|0;I=K+8|0;z=K+4|0;A=K;v=c[b>>2]|0;a:while(1){u=c[d>>2]|0;n=u;t=u+-8|0;q=t;s=u+-4|0;if((v|0)==(u|0))break;r=c[a>>2]|0;k=r;b:while(1){b=n-k|0;g=b>>3;switch(g|0){case 1:case 0:break a;case 2:{J=5;break a}case 3:{J=10;break a}default:{}}if((b|0)<64){J=12;break a}g=g>>>1;p=r+(g<<3)|0;c[I>>2]=k;c[z>>2]=p;c[A>>2]=q;c[w>>2]=c[I>>2];c[x>>2]=c[z>>2];c[y>>2]=c[A>>2];b=di(w,x,y,e)|0;l=k;j=+f[p>>2];i=+f[l>>2];if(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0:0){J=53;break}g=t;while(1){m=g+-8|0;if((m|0)==(l|0))break;i=+f[m>>2];if(j>2]|0,(c[h>>2]|0)>>>0>>0):0){J=51;break b}g=m}h=l+8|0;b=h;o=+f[t>>2];j=+f[r>>2];do if(!(o>2]|0)>>>0<(c[g>>2]|0)>>>0)break}else g=r+4|0;while(1){if((h|0)==(t|0))break a;i=+f[h>>2];if(i>2]|0,F>>>0<(c[g>>2]|0)>>>0):0){J=28;break}h=h+8|0}if((J|0)==25){J=0;g=h+4|0;b=g;g=c[g>>2]|0}else if((J|0)==28){J=0;b=h+4|0;g=F}f[h>>2]=o;f[t>>2]=i;c[b>>2]=c[s>>2];c[s>>2]=g;b=h+8|0}while(0);if((t|0)==(b|0))break a;l=r+4|0;g=q;while(1){j=+f[r>>2];k=b;while(1){b=k;i=+f[b>>2];if(i>2]|0)>>>0<(c[l>>2]|0)>>>0:0)break;k=b+8|0}h=k;while(1){b=g+-8|0;i=+f[b>>2];if(!(i>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}g=b}if(b>>>0<=h>>>0)break;m=c[k>>2]|0;f[k>>2]=i;c[b>>2]=m;m=h+4|0;g=g+-4|0;p=c[m>>2]|0;c[m>>2]=c[g>>2];c[g>>2]=p;g=b;b=h+8|0}b=k;if(v>>>0>>0)break a;c[a>>2]=k;r=b}if((J|0)==47){h=g+-4|0;g=h;h=c[h>>2]|0;J=52}else if((J|0)==51){g=g+-4|0;h=B;J=52}else if((J|0)==53){J=0;h=t;s=k}if((J|0)==52){J=0;s=k;r=c[k>>2]|0;f[k>>2]=i;c[m>>2]=r;r=s+4|0;t=c[r>>2]|0;c[r>>2]=h;c[g>>2]=t;b=b+1|0;h=m}g=s+8|0;k=g;if(g>>>0>>0){q=p;g=k;while(1){p=q;n=p+4|0;j=+f[p>>2];while(1){k=g;i=+f[k>>2];if(!(j>2]|0)>>>0>=(c[k+4>>2]|0)>>>0)break}g=k+8|0}m=g;while(1){l=h+-8|0;i=+f[l>>2];if(j>2]|0)>>>0<(c[h+-4>>2]|0)>>>0:0)break;h=l}k=l;if(l>>>0<=m>>>0)break;t=c[g>>2]|0;f[g>>2]=i;c[l>>2]=t;t=m+4|0;h=h+-4|0;g=c[t>>2]|0;c[t>>2]=c[h>>2];c[h>>2]=g;b=b+1|0;h=k;q=(p|0)==(m|0)?k:q;g=m+8|0}r=g;p=q;k=g}else r=g;n=k;do if((p|0)!=(r|0)){i=+f[r>>2];j=+f[p>>2];if(!(i>2]|0;g=p+4|0;m=c[g>>2]|0;if(h>>>0>=m>>>0)break}else{h=r+4|0;m=p+4|0;g=m;l=h;m=c[m>>2]|0;h=c[h>>2]|0}t=c[k>>2]|0;f[k>>2]=j;c[p>>2]=t;c[l>>2]=m;c[g>>2]=h;b=b+1|0}while(0);if((v|0)==(r|0))break;c:do if(!b)if(v>>>0>>0){b=s;while(1){g=b+8|0;if((g|0)==(r|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}else{b=n;while(1){g=b+8|0;if((g|0)==(u|0))break a;i=+f[b>>2];j=+f[g>>2];if(i>2]|0)>>>0<(c[b+12>>2]|0)>>>0:0)break c;b=g}}while(0);if(v>>>0>>0)c[d>>2]=k;else c[a>>2]=r+8}do if((J|0)==5){c[d>>2]=t;i=+f[r>>2];j=+f[t>>2];if(!(i>2]|0;h=c[s>>2]|0;if(g>>>0>=h>>>0)break}else{g=r+4|0;b=g;h=c[s>>2]|0;g=c[g>>2]|0}f[r>>2]=j;f[t>>2]=i;c[b>>2]=h;c[s>>2]=g}else if((J|0)==10){c[C>>2]=k;c[D>>2]=k+8;c[d>>2]=t;c[E>>2]=t;c[w>>2]=c[C>>2];c[x>>2]=c[D>>2];c[y>>2]=c[E>>2];di(w,x,y,e)|0}else if((J|0)==12){c[G>>2]=k;c[H>>2]=u;c[x>>2]=c[G>>2];c[y>>2]=c[H>>2];ei(x,y,e)}while(0);zb=K;return}function di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var g=0.0,h=0.0,i=0,j=0.0,k=0,l=0;l=c[b>>2]|0;k=c[a>>2]|0;j=+f[k>>2];h=+f[l>>2];if(!(j>2]|0)>>>0<(c[l+4>>2]|0)>>>0;else e=1;i=c[d>>2]|0;g=+f[i>>2];if(!(h>2]|0)>>>0<(c[i+4>>2]|0)>>>0;else b=1;do if(!e)if(b){f[l>>2]=g;f[i>>2]=h;d=l+4|0;i=i+4|0;a=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=a;g=+f[k>>2];h=+f[l>>2];if(!(g>2]|0;a=c[d>>2]|0;if(e>>>0>=a>>>0){b=1;break}}else{e=k+4|0;b=e;a=c[d>>2]|0;e=c[e>>2]|0}f[k>>2]=h;f[l>>2]=g;c[b>>2]=a;c[d>>2]=e;b=2}else b=0;else{if(b){f[k>>2]=g;f[i>>2]=j;k=k+4|0;b=i+4|0;l=c[k>>2]|0;c[k>>2]=c[b>>2];c[b>>2]=l;b=1;break}f[k>>2]=h;f[l>>2]=j;k=k+4|0;a=l+4|0;d=c[k>>2]|0;c[k>>2]=c[a>>2];c[a>>2]=d;g=+f[i>>2];if(!(j>2]|0;if(d>>>0>=e>>>0){b=1;break}}else{e=i+4|0;b=e;e=c[e>>2]|0}f[l>>2]=g;f[i>>2]=j;c[a>>2]=e;c[b>>2]=d;b=2}while(0);return b|0}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,g=0.0,h=0,i=0,j=0,k=0,l=0;j=c[b>>2]|0;k=j+-8|0;l=c[a>>2]|0;while(1){if((l|0)==(k|0))break;a:do if((l|0)==(j|0))b=j;else{b=l;while(1){h=b+4|0;d=b;while(1){i=d+8|0;if((i|0)==(j|0))break a;e=+f[b>>2];g=+f[i>>2];if(e>2]|0)>>>0<(c[d+12>>2]|0)>>>0:0)break;d=i}b=i}}while(0);if((b|0)!=(l|0)){d=c[l>>2]|0;c[l>>2]=c[b>>2];c[b>>2]=d;d=l+4|0;i=b+4|0;h=c[d>>2]|0;c[d>>2]=c[i>>2];c[i>>2]=h}i=l+8|0;c[a>>2]=i;l=i}return}function fi(a){a=a|0;return 536870911}function gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ii(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ji(a){a=+a;return +(a*a)}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=((c[d>>2]|0)-f|0)/36|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b*36|0)}else Hi(a,b-e|0);return}function li(a){a=a|0;return c[a+16>>2]|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;h=1.0/+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function ni(a){a=a|0;return a|0}function oi(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;k=Ng(d)|0;k=(k|0)==(Ng(e)|0)&1;do if((Ng(f)|0)==(k|0)){k=Og(d)|0;k=(k|0)==(Og(e)|0)&1;if((Og(f)|0)==(k|0)){yi(a,b,d,e,f,g,h);break}else{k=Xf(Xf(PE(Xf(Xf(Xf(56032,24457)|0,24528)|0,35e3)|0,466)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}}else{k=Ng(d)|0;if((k|0)==(Ng(e)|0)?(k=(Ng(e)|0)>>>1,(k|0)==(Ng(f)|0)):0){k=Og(d)|0;if((k|0)==(Og(e)|0)?(k=(Og(e)|0)>>>1,(k|0)==(Og(f)|0)):0){zi(a,b,d,e,f,g,h);break}k=Xf(Xf(PE(Xf(Xf(Xf(56032,24653)|0,24528)|0,35e3)|0,469)|0,35007)|0,24621)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){l=(Ng(d)|0)>>>1;if((l|0)==(Ng(e)|0)?(l=Ng(e)|0,(l|0)==(Ng(f)|0)):0){Ai(a,b,d,e,f,g,h);break}l=Xf(Xf(PE(Xf(Xf(Xf(56032,24750)|0,24528)|0,35e3)|0,472)|0,35007)|0,24621)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}l=Xf(Xf(PE(Xf(Xf(Xf(56032,31132)|0,24528)|0,35e3)|0,475)|0,35007)|0,24843)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}while(0);zb=j;return 1}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=zb;zb=zb+48|0;d=e;if(ti(d,b,1.1920928955078125e-07)|0){ui(a,d,c);a=1}else a=0;zb=e;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=b+16|0;d=+f[b>>2]*+f[c>>2];d=d-+ji(+f[b+4>>2]);if(d==0.0)a=0;else{d=+ji(+f[b>>2]+ +f[c>>2])/d;f[a>>2]=d;a=1}return a|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;var g=0.0,h=0.0;g=+hz(1.0,e+-1|0)+-.5;h=+(1<>2]=h*c+g;f[b>>2]=h*d+g;return}function si(a,b,d){a=a|0;b=b|0;d=+d;var e=0,g=0,h=0,i=0;g=zb;zb=zb+16|0;e=g;if(!(d>=0.0)){h=Xf(Xf(PE(Xf(Xf(Xf(56032,34104)|0,33900)|0,35e3)|0,232)|0,35007)|0,34138)|0;IE(e,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);i=XF(e,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(e);QE(h,i)|0;ME(h)|0;ua()}if(+(c[a+20>>2]|0)>d){d=+v(+(+f[a+24>>2]),+d)*+(1<>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(i,h)|0;ME(i)|0;ua()}return +(0.0)}function ti(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=+vi(b);if(!(+t(+e)<=d)){e=1.0/e;j=b+16|0;g=b+20|0;m=b+32|0;d=e*+wi(+f[j>>2],+f[g>>2],+f[m>>2]);f[a>>2]=d;l=b+8|0;k=b+4|0;d=e*+xi(+f[l>>2],+f[k>>2],+f[m>>2],+f[b+28>>2]);i=a+4|0;f[i>>2]=d;d=e*+xi(+f[k>>2],+f[l>>2],+f[j>>2],+f[g>>2]);h=a+8|0;f[h>>2]=d;d=e*+wi(+f[b>>2],+f[l>>2],+f[m>>2]);f[a+16>>2]=d;d=e*+xi(+f[l>>2],+f[b>>2],+f[g>>2],+f[b+12>>2]);g=a+20|0;f[g>>2]=d;e=e*+wi(+f[b>>2],+f[k>>2],+f[j>>2]);f[a+32>>2]=e;c[a+12>>2]=c[i>>2];c[a+24>>2]=c[h>>2];c[a+28>>2]=c[g>>2];a=1}else a=0;return a|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=c+4|0;d=c+8|0;f[a>>2]=+f[b>>2]*+f[c>>2]+ +f[b+4>>2]*+f[e>>2]+ +f[b+8>>2]*+f[d>>2];f[a+4>>2]=+f[b+12>>2]*+f[c>>2]+ +f[b+16>>2]*+f[e>>2]+ +f[b+20>>2]*+f[d>>2];f[a+8>>2]=+f[b+24>>2]*+f[c>>2]+ +f[b+28>>2]*+f[e>>2]+ +f[b+32>>2]*+f[d>>2];return}function vi(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,g=0.0,h=0.0,i=0;b=a+32|0;g=+f[b>>2];c=a+4|0;g=g*+ji(+f[c>>2]);e=+f[a+8>>2];i=a+20|0;h=+f[c>>2]*2.0*e*+f[i>>2];c=a+16|0;d=+f[c>>2];e=d*+ji(e);d=+f[a>>2];d=d*+ji(+f[i>>2]);return +(h-g-e-d+ +f[a>>2]*+f[c>>2]*+f[b>>2])}function wi(a,b,c){a=+a;b=+b;c=+c;return +(a*c-b*b)}function xi(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return +(a*d-b*c)}function yi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0;r=zb;zb=zb+32|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;k=r+4|0;l=r;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){m=i+-1|0;if((i|0)>0?(n=i+1|0,n>>>0<(Og(e)|0)>>>0):0){s=Ng(d)|0;if((s|0)!=(Ng(e)|0)){s=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,311)|0,35007)|0,25078)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);t=XF(o,56736)|0;t=Ib[c[(c[t>>2]|0)+28>>2]&63](t,10)|0;YF(o);QE(s,t)|0;ME(s)|0;ua()}t=Ng(d)|0;if((t|0)!=(Ng(g)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26545)|0,24528)|0,35e3)|0,312)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)!=(Og(e)|0)){t=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,313)|0,35007)|0,25078)|0;IE(o,t+(c[(c[t>>2]|0)+-12>>2]|0)|0);s=XF(o,56736)|0;s=Ib[c[(c[s>>2]|0)+28>>2]&63](s,10)|0;YF(o);QE(t,s)|0;ME(t)|0;ua()}t=Og(d)|0;if((t|0)==(Og(g)|0)){z=(ch(d,m)|0)+(h<<2)|0;A=(ch(d,i)|0)+(h<<2)|0;o=(ch(d,n)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;t=(ch(g,m)|0)+(h<<2)|0;m=(ch(g,i)|0)+(h<<2)|0;s=(ch(g,n)|0)+(h<<2)|0;Bi(p,q,j,k,l,e,h,i);v=+f[m>>2];u=+f[A>>2];w=v+(u-+f[d>>2]*2.0);y=(+f[A+-4>>2]-+f[A+4>>2]+(+f[m+4>>2]-+f[m+-4>>2]))*.25;x=(+f[z>>2]-+f[o>>2]+(+f[s>>2]-+f[t>>2]))*.25;c[a>>2]=c[j>>2];t=c[l>>2]|0;c[a+4>>2]=t;f[a+8>>2]=y;c[a+12>>2]=t;c[a+16>>2]=c[k>>2];f[a+20>>2]=x;f[a+24>>2]=y;f[a+28>>2]=x;f[a+32>>2]=w;f[b>>2]=-+f[p>>2];f[b+4>>2]=-+f[q>>2];f[b+8>>2]=-((v-u)*.5);zb=r;return}else{A=Xf(Xf(PE(Xf(Xf(Xf(56032,26597)|0,24528)|0,35e3)|0,314)|0,35007)|0,25078)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,310)|0,35007)|0,25005)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}A=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,309)|0,35007)|0,24930)|0;IE(o,A+(c[(c[A>>2]|0)+-12>>2]|0)|0);z=XF(o,56736)|0;z=Ib[c[(c[z>>2]|0)+28>>2]&63](z,10)|0;YF(o);QE(A,z)|0;ME(A)|0;ua()}function zi(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;w=zb;zb=zb+32|0;t=w+28|0;u=w+24|0;v=w+20|0;o=w+16|0;p=w+12|0;q=w+8|0;r=w+4|0;s=w;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){j=i+-1|0;if((i|0)>0?(l=i+1|0,l>>>0<(Og(e)|0)>>>0):0){n=Ng(d)|0;if((n|0)!=(Ng(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26146)|0,24528)|0,35e3)|0,415)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Ng(d)|0)>>>1;if((n|0)!=(Ng(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,416)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=Og(d)|0;if((n|0)!=(Og(e)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,26198)|0,24528)|0,35e3)|0,417)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}n=(Og(d)|0)>>>1;if((n|0)!=(Og(g)|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,418)|0,35007)|0,25078)|0;IE(t,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(t,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(t);QE(n,m)|0;ME(n)|0;ua()}m=(ch(d,j)|0)+(h<<2)|0;n=(ch(d,i)|0)+(h<<2)|0;j=(ch(d,l)|0)+(h<<2)|0;d=(ch(e,i)|0)+(h<<2)|0;mi(u,v,+(h|0),+(i|0),1);k=+f[u>>2];if(!(k+-.5>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,26252)|0,24528)|0,35e3)|0,428)|0,35007)|0,26293)|0;IE(t,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);x=XF(t,56736)|0;x=Ib[c[(c[x>>2]|0)+28>>2]&63](x,10)|0;YF(t);QE(l,x)|0;ME(l)|0;ua()}if(!(+f[v>>2]+-.5>=0.0)){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26347)|0,24528)|0,35e3)|0,429)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}if(!(k+.5<+((Ng(g)|0)>>>0))){x=Xf(Xf(PE(Xf(Xf(Xf(56032,26442)|0,24528)|0,35e3)|0,430)|0,35007)|0,26293)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);l=XF(t,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(t);QE(x,l)|0;ME(x)|0;ua()}k=+f[v>>2]+.5;if(k<+((Og(g)|0)>>>0)){Bi(o,p,q,r,s,e,h,i);y=+Ci(g,+f[u>>2],+f[v>>2]);k=+f[n>>2];z=y+(k-+f[d>>2]*2.0);C=+f[n+-4>>2];C=C+ +Ci(g,+f[u>>2]+.5,+f[v>>2]);B=+f[n+4>>2];B=(C-(B+ +Ci(g,+f[u>>2]+-.5,+f[v>>2])))*.25;C=+f[m>>2];C=C+ +Ci(g,+f[u>>2],+f[v>>2]+.5);A=+f[j>>2];A=(C-(A+ +Ci(g,+f[u>>2],+f[v>>2]+-.5)))*.25;c[a>>2]=c[q>>2];x=c[s>>2]|0;c[a+4>>2]=x;f[a+8>>2]=B;c[a+12>>2]=x;c[a+16>>2]=c[r>>2];f[a+20>>2]=A;f[a+24>>2]=B;f[a+28>>2]=A;f[a+32>>2]=z;f[b>>2]=-+f[o>>2];f[b+4>>2]=-+f[p>>2];f[b+8>>2]=-((y-k)*.5);zb=w;return}else{x=Xf(Xf(PE(Xf(Xf(Xf(56032,26493)|0,24528)|0,35e3)|0,431)|0,35007)|0,26388)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,414)|0,35007)|0,25005)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}x=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,413)|0,35007)|0,24930)|0;IE(t,x+(c[(c[x>>2]|0)+-12>>2]|0)|0);w=XF(t,56736)|0;w=Ib[c[(c[w>>2]|0)+28>>2]&63](w,10)|0;YF(t);QE(x,w)|0;ME(x)|0;ua()}function Ai(a,b,d,e,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;t=zb;zb=zb+32|0;q=t+28|0;r=t+24|0;s=t+20|0;j=t+16|0;k=t+12|0;l=t+8|0;m=t+4|0;n=t;if((h|0)>0?(h+1|0)>>>0<(Ng(e)|0)>>>0:0){o=i+-1|0;if((i|0)>0?(p=i+1|0,p>>>0<(Og(e)|0)>>>0):0){u=(Ng(d)|0)>>>1;if((u|0)!=(Ng(e)|0)){u=Xf(Xf(PE(Xf(Xf(Xf(56032,25021)|0,24528)|0,35e3)|0,361)|0,35007)|0,25078)|0;IE(q,u+(c[(c[u>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(u,v)|0;ME(u)|0;ua()}v=(Ng(d)|0)>>>1;if((v|0)!=(Ng(g)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25108)|0,24528)|0,35e3)|0,362)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)!=(Og(e)|0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,25165)|0,24528)|0,35e3)|0,363)|0,35007)|0,25078)|0;IE(q,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(q,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(q);QE(v,u)|0;ME(v)|0;ua()}v=(Og(d)|0)>>>1;if((v|0)==(Og(g)|0)){C=(ch(e,i)|0)+(h<<2)|0;v=(ch(g,o)|0)+(h<<2)|0;q=(ch(g,i)|0)+(h<<2)|0;u=(ch(g,p)|0)+(h<<2)|0;ri(r,s,+(h|0),+(i|0),1);Bi(j,k,l,m,n,e,h,i);w=+Ci(d,+f[r>>2],+f[s>>2]);x=+f[q>>2];y=x+(w-+f[C>>2]*2.0);B=+Ci(d,+f[r>>2]+-2.0,+f[s>>2]);B=B+ +f[q+4>>2];A=+Ci(d,+f[r>>2]+2.0,+f[s>>2]);A=(B-(A+ +f[q+-4>>2]))*.25;B=+Ci(d,+f[r>>2],+f[s>>2]+-2.0);B=B+ +f[u>>2];z=+Ci(d,+f[r>>2],+f[s>>2]+2.0);z=(B-(z+ +f[v>>2]))*.25;c[a>>2]=c[l>>2];v=c[n>>2]|0;c[a+4>>2]=v;f[a+8>>2]=A;c[a+12>>2]=v;c[a+16>>2]=c[m>>2];f[a+20>>2]=z;f[a+24>>2]=A;f[a+28>>2]=z;f[a+32>>2]=y;f[b>>2]=-+f[j>>2];f[b+4>>2]=-+f[k>>2];f[b+8>>2]=-((x-w)*.5);zb=t;return}else{C=Xf(Xf(PE(Xf(Xf(Xf(56032,25224)|0,24528)|0,35e3)|0,364)|0,35007)|0,25078)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24946)|0,24528)|0,35e3)|0,360)|0,35007)|0,25005)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}C=Xf(Xf(PE(Xf(Xf(Xf(56032,24872)|0,24528)|0,35e3)|0,359)|0,35007)|0,24930)|0;IE(q,C+(c[(c[C>>2]|0)+-12>>2]|0)|0);v=XF(q,56736)|0;v=Ib[c[(c[v>>2]|0)+28>>2]&63](v,10)|0;YF(q);QE(C,v)|0;ME(C)|0;ua()}function Bi(a,b,d,e,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;m=n;if((i|0)>0?(i+1|0)>>>0<(Ng(h)|0)>>>0:0){k=j+-1|0;if((j|0)>0?(l=j+1|0,l>>>0<(Og(h)|0)>>>0):0){k=(ch(h,k)|0)+(i<<2)|0;j=(ch(h,j)|0)+(i<<2)|0;m=(ch(h,l)|0)+(i<<2)|0;h=j+4|0;i=j+-4|0;f[a>>2]=(+f[h>>2]-+f[i>>2])*.5;f[b>>2]=(+f[m>>2]-+f[k>>2])*.5;f[d>>2]=+f[h>>2]+(+f[i>>2]-+f[j>>2]*2.0);f[e>>2]=+f[m>>2]+(+f[k>>2]-+f[j>>2]*2.0);f[g>>2]=(+f[k+-4>>2]+ +f[m+4>>2]-(+f[k+4>>2]+ +f[m+-4>>2]))*.25;zb=n;return}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26089)|0,24528)|0,35e3)|0,285)|0,35007)|0,25005)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}n=Xf(Xf(PE(Xf(Xf(Xf(56032,26033)|0,24528)|0,35e3)|0,284)|0,35007)|0,24930)|0;IE(m,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);j=XF(m,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(m);QE(n,j)|0;ME(n)|0;ua()}function Ci(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;f=Di(a)|0;e=Ng(a)|0;d=Og(a)|0;return +(+Fi(f,e,d,Ei(a)|0,b,c))}function Di(a){a=a|0;return c[a+24>>2]|0}function Ei(a){a=a|0;return c[a+12>>2]|0}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return +(+Gi(a,b,c,d,e,f))}function Gi(a,b,d,e,g,h){a=a|0;b=b|0;d=d|0;e=e|0;g=+g;h=+h;var i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;p=zb;zb=zb+16|0;n=p;o=~~+s(+g);if((o|0)!=(~~g|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25283)|0,25335)|0,35e3)|0,69)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);l=XF(n,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(n);QE(m,l)|0;ME(m)|0;ua()}l=~~+s(+h);if((l|0)!=(~~h|0)){m=Xf(Xf(PE(Xf(Xf(Xf(56032,25441)|0,25335)|0,35e3)|0,70)|0,35007)|0,25411)|0;IE(n,m+(c[(c[m>>2]|0)+-12>>2]|0)|0);k=XF(n,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(n);QE(m,k)|0;ME(m)|0;ua()}m=o+1|0;k=l+1|0;if(!((l|0)>-1&l>>>0>>0)){q=Xf(Xf(PE(Xf(Xf(Xf(56032,25493)|0,25335)|0,35e3)|0,79)|0,35007)|0,25539)|0;IE(n,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);r=XF(n,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(n);QE(q,r)|0;ME(q)|0;ua()}if(k>>>0>=d>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25556)|0,25335)|0,35e3)|0,80)|0,35007)|0,25616)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!((o|0)>-1&o>>>0>>0)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25640)|0,25335)|0,35e3)|0,81)|0,35007)|0,25685)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(m>>>0>=b>>>0){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25702)|0,25335)|0,35e3)|0,82)|0,35007)|0,25761)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}b=a+(B(l,e)|0)|0;a=b+e|0;u=+(m|0)-g;i=+(k|0)-h;j=u*i;t=g-+(o|0);i=t*i;h=h-+(l|0);g=u*h;h=t*h;if(!(j>=0.0)|!(j<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25785)|0,25335)|0,35e3)|0,94)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(i>=0.0)|!(i<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25845)|0,25335)|0,35e3)|0,95)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(g>=0.0)|!(g<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25892)|0,25335)|0,35e3)|0,96)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h>=0.0)|!(h<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25939)|0,25335)|0,35e3)|0,97)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}if(!(h+(g+(j+i))<=1.0001)){r=Xf(Xf(PE(Xf(Xf(Xf(56032,25986)|0,25335)|0,35e3)|0,98)|0,35007)|0,25832)|0;IE(n,r+(c[(c[r>>2]|0)+-12>>2]|0)|0);q=XF(n,56736)|0;q=Ib[c[(c[q>>2]|0)+28>>2]&63](q,10)|0;YF(n);QE(r,q)|0;ME(r)|0;ua()}else{zb=p;return +(j*+f[b+(o<<2)>>2]+i*+f[b+(m<<2)>>2]+g*+f[a+(o<<2)>>2]+h*+f[a+(m<<2)>>2])}return +(0.0)}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/36|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/36|0)+b|0;e=$h(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/36|0;g=k<<1;vh(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/36|0,a+8|0);Ji(f,b);wh(a,f);xh(f);break}}else Ii(a,b);while(0);zb=i;return}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+4|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ji(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;a=c[e>>2]|0;do{d=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));a=(c[e>>2]|0)+36|0;c[e>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Ki(a){a=a|0;return (c[a+4>>2]|0)-(c[a>>2]|0)>>5|0}function Li(a,b){a=a|0;b=b|0;return (c[a>>2]|0)+(b<<5)|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+16|0;d=f;e=c[a>>2]|0;if((c[a+4>>2]|0)-e>>5>>>0>b>>>0){e=Ng(e)|0;e=~~+Pi(+Oi(+(((e>>>0)/((Ng((c[a>>2]|0)+(b<<5)|0)|0)>>>0)|0)>>>0)));zb=f;return e|0}else{f=Xf(Xf(PE(Xf(Xf(Xf(56032,26949)|0,24528)|0,35e3)|0,94)|0,35007)|0,26995)|0;IE(d,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=XF(d,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(d);QE(f,e)|0;ME(f)|0;ua()}return 0}function Ni(a,b){a=a|0;b=b|0;return (b|0)%(c[a+16>>2]|0)|0|0}function Oi(a){a=+a;return +(+z(+a)/.6931471824645996)}function Pi(a){a=+a;return +(+s(+(a+.5)))}function Qi(a){a=a|0;c[a>>2]=15676;gh(a+56|0);gh(a+44|0);Si(a+32|0);Ti(a);return}function Ri(a){a=a|0;Qi(a);SA(a);return}function Si(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Ti(a){a=a|0;c[a>>2]=15692;mh(a+4|0);return}function Ui(a){a=a|0;Ti(a);SA(a);return}function Vi(a,g,h,i,j){a=a|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=zb;zb=zb+16|0;k=t;if(i>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,55)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}if(j>>>0<=4){s=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,56)|0,35007)|0,27176)|0;IE(k,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(k,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(k);QE(s,r)|0;ME(s)|0;ua()}o=i+-1|0;p=i+-2|0;q=i+-3|0;r=i+-4|0;l=g;m=0;while(1){if((m|0)==(j|0))break;s=h+(B(m,i)|0)|0;k=d[s>>0]|0;u=s+1|0;n=s+2|0;b[l>>1]=(k*7|0)+(d[n>>0]|0)+((d[u>>0]|0)+k<<2);k=d[s>>0]|0;b[l+2>>1]=((d[u>>0]|0)*6|0)+k+(d[s+3>>0]|0)+((d[n>>0]|0)+k<<2);k=2;n=l+4|0;while(1){if((k|0)==(p|0))break;u=k+1|0;b[n>>1]=((d[s+k>>0]|0)*6|0)+(d[s+(k+-2)>>0]|0)+((d[s+u>>0]|0)+(d[s+(k+-1)>>0]|0)<<2)+(d[s+(k+2)>>0]|0);k=u;n=n+2|0}u=l+(p<<1)|0;n=s+p|0;k=s+q|0;v=s+o|0;w=d[v>>0]|0;b[u>>1]=((d[n>>0]|0)*6|0)+w+(d[s+r>>0]|0)+(w+(d[k>>0]|0)<<2);s=d[v>>0]|0;b[u+2>>1]=(s*7|0)+(d[k>>0]|0)+((d[n>>0]|0)+s<<2);l=l+(i<<1)|0;m=m+1|0}s=j+-2|0;k=g+(i<<1)|0;q=k+(i<<1)|0;l=0;m=q;n=k;o=g;p=a;while(1){if((l|0)==(i|0))break;w=e[o>>1]|0;f[p>>2]=+((w*7|0)+((e[n>>1]|0)+w<<2)+(e[m>>1]|0)|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+4|0}o=0;p=q+(i<<1)|0;n=q;l=g;m=a+(i<<2)|0;while(1){if((o|0)==(i|0))break;w=e[l>>1]|0;f[m>>2]=+(((e[k>>1]|0)*6|0)+w+((e[n>>1]|0)+w<<2)+(e[p>>1]|0)|0)*.00390625;o=o+1|0;p=p+2|0;n=n+2|0;k=k+2|0;l=l+2|0;m=m+4|0}l=2;while(1){if((l|0)==(s|0))break;q=g+((B(l+-2|0,i)|0)<<1)|0;p=q+(i<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;k=0;m=n+(i<<1)|0;r=a+((B(l,i)|0)<<2)|0;while(1){if((k|0)==(i|0))break;f[r>>2]=+(((e[o>>1]|0)*6|0)+(e[q>>1]|0)+((e[n>>1]|0)+(e[p>>1]|0)<<2)+(e[m>>1]|0)|0)*.00390625;k=k+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;q=q+2|0;r=r+4|0}l=l+1|0}p=g+((B(j+-4|0,i)|0)<<1)|0;o=p+(i<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(s,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+(((e[n>>1]|0)*6|0)+(e[p>>1]|0)+(w+(e[o>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;p=p+2|0;k=k+4|0}o=g+((B(j+-3|0,i)|0)<<1)|0;n=o+(i<<1)|0;l=0;m=n+(i<<1)|0;k=a+((B(j+-1|0,i)|0)<<2)|0;while(1){if((l|0)==(i|0))break;w=e[m>>1]|0;f[k>>2]=+((w*6|0)+(e[o>>1]|0)+(w+(e[n>>1]|0)<<2)+w|0)*.00390625;l=l+1|0;m=m+2|0;n=n+2|0;o=o+2|0;k=k+4|0}zb=t;return}function Wi(a,b,d,e,g){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0;q=zb;zb=zb+16|0;h=q;if(e>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27047)|0,27081)|0,35e3)|0,168)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}if(g>>>0<=4){p=Xf(Xf(PE(Xf(Xf(Xf(56032,27195)|0,27081)|0,35e3)|0,169)|0,35007)|0,27176)|0;IE(h,p+(c[(c[p>>2]|0)+-12>>2]|0)|0);o=XF(h,56736)|0;o=Ib[c[(c[o>>2]|0)+28>>2]&63](o,10)|0;YF(h);QE(p,o)|0;ME(p)|0;ua()}l=e+-1|0;m=e+-2|0;n=e+-3|0;o=e+-4|0;i=b;j=0;while(1){if((j|0)==(g|0))break;p=d+((B(j,e)|0)<<2)|0;r=+f[p>>2];k=p+4|0;h=p+8|0;f[i>>2]=+f[h>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0));r=+f[p>>2];f[i+4>>2]=+f[p+12>>2]+(r+(+f[k>>2]*6.0+(r+ +f[h>>2])*4.0));h=2;k=i+8|0;while(1){if((h|0)==(m|0))break;s=h+1|0;f[k>>2]=+f[p+(h+2<<2)>>2]+(+f[p+(h+-2<<2)>>2]+(+f[p+(h<<2)>>2]*6.0+(+f[p+(h+-1<<2)>>2]+ +f[p+(s<<2)>>2])*4.0));h=s;k=k+4|0}s=i+(m<<2)|0;k=p+(m<<2)|0;h=p+(n<<2)|0;t=p+(l<<2)|0;r=+f[t>>2];f[s>>2]=r+(+f[p+(o<<2)>>2]+(+f[k>>2]*6.0+(+f[h>>2]+r)*4.0));r=+f[t>>2];f[s+4>>2]=r+(+f[h>>2]+(r*6.0+(r+ +f[k>>2])*4.0));i=i+(e<<2)|0;j=j+1|0}p=g+-2|0;h=b+(e<<2)|0;n=h+(e<<2)|0;i=0;j=n;k=h;l=b;m=a;while(1){if((i|0)==(e|0))break;r=+f[l>>2];f[m>>2]=(+f[j>>2]+(r+(r*6.0+(r+ +f[k>>2])*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0}l=0;m=n+(e<<2)|0;k=n;i=b;j=a+(e<<2)|0;while(1){if((l|0)==(e|0))break;r=+f[i>>2];f[j>>2]=(+f[m>>2]+(r+(+f[h>>2]*6.0+(r+ +f[k>>2])*4.0)))*.00390625;l=l+1|0;m=m+4|0;k=k+4|0;h=h+4|0;i=i+4|0;j=j+4|0}i=2;while(1){if((i|0)==(p|0))break;n=b+((B(i+-2|0,e)|0)<<2)|0;m=n+(e<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;h=0;j=k+(e<<2)|0;o=a+((B(i,e)|0)<<2)|0;while(1){if((h|0)==(e|0))break;f[o>>2]=(+f[j>>2]+(+f[n>>2]+(+f[l>>2]*6.0+(+f[m>>2]+ +f[k>>2])*4.0)))*.00390625;h=h+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;n=n+4|0;o=o+4|0}i=i+1|0}m=b+((B(g+-4|0,e)|0)<<2)|0;l=m+(e<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(p,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[m>>2]+(+f[k>>2]*6.0+(+f[l>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;m=m+4|0;h=h+4|0}l=b+((B(g+-3|0,e)|0)<<2)|0;k=l+(e<<2)|0;i=0;j=k+(e<<2)|0;h=a+((B(g+-1|0,e)|0)<<2)|0;while(1){if((i|0)==(e|0))break;r=+f[j>>2];f[h>>2]=(r+(+f[l>>2]+(r*6.0+(+f[k>>2]+r)*4.0)))*.00390625;i=i+1|0;j=j+4|0;k=k+4|0;l=l+4|0;h=h+4|0}zb=q;return}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c>>>1;j=d>>>1;k=c<<1;i=0;while(1){if((i|0)==(j|0))break;g=b+((B(k,i)|0)<<2)|0;d=0;e=g+(c<<2)|0;h=a;while(1){if((d|0)==(l|0))break;f[h>>2]=(+f[g>>2]+ +f[g+4>>2]+ +f[e>>2]+ +f[e+4>>2])*.25;d=d+1|0;e=e+8|0;g=g+8|0;h=h+4|0}i=i+1|0;a=a+(l<<2)|0}return}function Yi(a){a=a|0;c[a>>2]=15692;a=a+4|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;c[a+16>>2]=b;c[a+20>>2]=d;e=+La(+(1.0/+(d+-1|0)));f[a+24>>2]=e;e=1.0/+z(+e);f[a+28>>2]=e;return}function _i(a){a=a|0;var b=0;Yi(a);c[a>>2]=15676;a=a+32|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $i(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;Zi(a,e,3);k=a+4|0;l=a+20|0;Rg(k,B(c[l>>2]|0,e)|0);g=0;while(1){if((g|0)>=(e|0))break;h=b>>>g;i=d>>>g;f=0;while(1){j=c[l>>2]|0;if(f>>>0>=j>>>0)break;j=(B(j,g)|0)+f|0;cq((c[k>>2]|0)+(j<<5)|0,2,h,i,-1,1);f=f+1|0}g=g+1|0}l=B(d,b)|0;aj(a+32|0,l);fh(a+44|0,l);fh(a+56|0,l);return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>1;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<1)}else bj(a,b-e|0);return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>1>>>0>>0){d=(d-(c[a>>2]|0)>>1)+b|0;e=dj(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;g=(c[g>>2]|0)-j|0;ej(f,g>>1>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>1,a+8|0);fj(f,b);gj(a,f);hj(f);break}}else cj(a,b);while(0);zb=i;return}function cj(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function dj(a){a=a|0;return 2147483647}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if((b|0)<0){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<1)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<1)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<1);return}function fj(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<1|0)|0;c[a>>2]=d+(b<<1);return}function gj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>1)<<1)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hj(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-2|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+16|0;d=h;if((Mg(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27230)|0,27081)|0,35e3)|0,330)|0,35007)|0,27281)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}if((ah(b)|0)!=1){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27305)|0,27081)|0,35e3)|0,331)|0,35007)|0,27350)|0;IE(d,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);f=XF(d,56736)|0;f=Ib[c[(c[f>>2]|0)+28>>2]&63](f,10)|0;YF(d);QE(g,f)|0;ME(g)|0;ua()}e=a+4|0;f=a+16|0;g=a+20|0;if(((c[a+8>>2]|0)-(c[e>>2]|0)>>5|0)!=(B(c[g>>2]|0,c[f>>2]|0)|0)){i=Xf(Xf(PE(Xf(Xf(Xf(56032,27376)|0,27081)|0,35e3)|0,333)|0,35007)|0,27450)|0;IE(d,i+(c[(c[i>>2]|0)+-12>>2]|0)|0);j=XF(d,56736)|0;j=Ib[c[(c[j>>2]|0)+28>>2]&63](j,10)|0;YF(d);QE(i,j)|0;ME(i)|0;ua()}j=Ng(b)|0;if((j|0)!=(Ng(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27485)|0,27081)|0,35e3)|0,334)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}j=Og(b)|0;if((j|0)!=(Og(c[e>>2]|0)|0)){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27577)|0,27081)|0,35e3)|0,335)|0,35007)|0,27545)|0;IE(d,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(d,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(d);QE(j,i)|0;ME(j)|0;ua()}jj(a,c[e>>2]|0,b);b=c[e>>2]|0;jj(a,b+32|0,b);b=c[e>>2]|0;kj(a,b+64|0,b+32|0);b=1;while(1){if(b>>>0>=(c[f>>2]|0)>>>0)break;k=B(c[g>>2]|0,b)|0;k=lj((c[e>>2]|0)+(k<<5)|0)|0;d=(B(c[g>>2]|0,b)|0)+-1|0;d=lj((c[e>>2]|0)+(d<<5)|0)|0;i=(B(c[g>>2]|0,b)|0)+-1|0;i=Ng((c[e>>2]|0)+(i<<5)|0)|0;j=(B(c[g>>2]|0,b)|0)+-1|0;Xi(k,d,i,Og((c[e>>2]|0)+(j<<5)|0)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;jj(a,i+(j+1<<5)|0,i+(j<<5)|0);j=B(c[g>>2]|0,b)|0;i=c[e>>2]|0;kj(a,i+(j+2<<5)|0,i+(j+1<<5)|0);b=b+1|0}zb=h;return}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=zb;zb=zb+16|0;e=f;if((Mg(b)|0)!=2){g=Xf(Xf(PE(Xf(Xf(Xf(56032,27639)|0,27081)|0,35e3)|0,357)|0,35007)|0,27686)|0;IE(e,g+(c[(c[g>>2]|0)+-12>>2]|0)|0);h=XF(e,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(e);QE(g,h)|0;ME(g)|0;ua()}switch(Mg(d)|0){case 1:{e=lj(b)|0;g=c[a+32>>2]|0;h=Di(d)|0;Vi(e,g,h,Ng(d)|0,Og(d)|0);break}case 2:{e=lj(b)|0;g=c[a+44>>2]|0;h=Di(d)|0;Wi(e,g,h,Ng(d)|0,Og(d)|0);break}case 0:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27722,Yf(27722)|0);mj(h,e);Q(h|0,13208,5)}default:{h=O(16)|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;gO(e,27741,Yf(27741)|0);mj(h,e);Q(h|0,13208,5)}}zb=f;return}function kj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=zb;zb=zb+32|0;f=e;j=c[a+56>>2]|0;i=Mg(d)|0;h=Ng(d)|0;g=Og(d)|0;kq(f,j,i,h,g,Ei(d)|0,1);jj(a,f,d);jj(a,b,f);rq(f);zb=e;return}function lj(a){a=a|0;return c[a+24>>2]|0}function mj(a,b){a=a|0;b=b|0;c[a>>2]=15708;fO(a+4|0,b);return}function nj(a){a=a|0;c[a>>2]=15708;jO(a+4|0);return}function oj(a){a=a|0;nj(a);SA(a);return}function pj(b){b=b|0;b=b+4|0;if((a[b+11>>0]|0)<0)b=c[b>>2]|0;return b|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;m=c+-1|0;j=b+(c<<2)|0;h=b+4|0;n=+f[b>>2];o=+f[h>>2]-n;n=+f[j>>2]-n;p=+y(+n,+o)+3.141592653589793;f[a>>2]=p;n=+u(+(o*o+n*n));f[a+4>>2]=n;g=1;e=j;while(1){i=a+8|0;e=e+4|0;if(g>>>0>=m>>>0)break;l=h+4|0;o=+f[l>>2]-+f[h+-4>>2];p=+f[e>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;g=g+1|0;h=l;a=i}l=d+-1|0;p=+f[h>>2];o=p-+f[h+-4>>2];p=+f[e>>2]-p;n=+y(+p,+o)+3.141592653589793;f[i>>2]=n;p=+u(+(o*o+p*p));f[a+12>>2]=p;k=1;g=i;d=j+(c<<2)|0;h=b;a=j;while(1){e=g+8|0;if(k>>>0>=l>>>0)break;j=a+4|0;o=+f[j>>2]-+f[a>>2];p=+f[d>>2]-+f[h>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;i=1;g=g+16|0;while(1){a=d+4|0;e=h+4|0;if(i>>>0>=m>>>0)break;q=j+4|0;o=+f[q>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;i=i+1|0;d=a;h=e;j=q;g=g+8|0}o=+f[j>>2]-+f[j+-4>>2];p=+f[a>>2]-+f[e>>2];n=+y(+p,+o)+3.141592653589793;f[g>>2]=n;p=+u(+(o*o+p*p));f[g+4>>2]=p;k=k+1|0;d=d+8|0;h=h+8|0;a=j+4|0}h=b+((B(l,c)|0)<<2)|0;a=h+(0-c<<2)|0;q=h+4|0;p=+f[h>>2];o=+f[q>>2]-p;p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[e>>2]=n;p=+u(+(o*o+p*p));f[g+12>>2]=p;h=1;g=q;while(1){d=e+8|0;a=a+4|0;if(h>>>0>=m>>>0)break;q=g+4|0;o=+f[q>>2]-+f[g+-4>>2];p=+f[g>>2]-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;h=h+1|0;e=d;g=q}p=+f[g>>2];o=p-+f[g+-4>>2];p=p-+f[a>>2];n=+y(+p,+o)+3.141592653589793;f[d>>2]=n;p=+u(+(o*o+p*p));f[e+12>>2]=p;return}function rj(a){a=a|0;return 536870911}function sj(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;a=a+12|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tj(a){a=a|0;mh(a+40|0);gh(a+28|0);return}function uj(a,b,d,e,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=+i;j=+j;k=k|0;l=+l;var m=0,n=0,o=0;c[a>>2]=e;n=a+4|0;c[n>>2]=g;c[a+8>>2]=h;f[a+12>>2]=i;f[a+16>>2]=j;c[a+20>>2]=k;f[a+24>>2]=l;fh(a+28|0,h);o=a+40|0;Rg(o,B(c[n>>2]|0,c[a>>2]|0)|0);k=0;while(1){if((k|0)==(e|0))break;a=B(k,g)|0;m=b>>>k;n=d>>>k;h=0;while(1){if((h|0)==(g|0))break;cq((c[o>>2]|0)+(h+a<<5)|0,2,m,n,-1,2);h=h+1|0}k=k+1|0}return}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=zb;zb=zb+16|0;f=g;e=a+40|0;a=0;while(1){d=Ah(b)|0;if(a>>>0>=(c[d+4>>2]|0)-(c[d>>2]|0)>>5>>>0){a=3;break}d=Ah(b)|0;d=(c[d>>2]|0)+(a<<5)|0;h=Ng(d)|0;if((h|0)!=((Ei(d)|0)>>>2|0)){a=5;break}j=wj((c[e>>2]|0)+(a<<5)|0)|0;i=xj(d)|0;h=Ng(d)|0;qj(j,i,h,Og(d)|0);a=a+1|0}if((a|0)==3){zb=g;return}else if((a|0)==5){j=Xf(Xf(PE(Xf(Xf(Xf(56032,27784)|0,27845)|0,35e3)|0,96)|0,35007)|0,27934)|0;IE(f,j+(c[(c[j>>2]|0)+-12>>2]|0)|0);i=XF(f,56736)|0;i=Ib[c[(c[i>>2]|0)+28>>2]&63](i,10)|0;YF(f);QE(j,i)|0;ME(j)|0;ua()}}function wj(a){a=a|0;return c[a+24>>2]|0}function xj(a){a=a|0;return c[a+24>>2]|0}function yj(a,b,d,e,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;g=g|0;i=+i;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0;F=zb;zb=zb+48|0;D=F+32|0;E=F+24|0;w=F+16|0;x=F+12|0;y=F+8|0;z=F+4|0;C=F;if(!(i>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,27975)|0,27845)|0,35e3)|0,119)|0,35007)|0,28005)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}l=a+4|0;v=(B(c[l>>2]|0,e)|0)+g|0;m=a+40|0;if(!(+((Ng((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>i)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28024)|0,27845)|0,35e3)|0,120)|0,35007)|0,28104)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}if(!(j>=0.0)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28140)|0,27845)|0,35e3)|0,121)|0,35007)|0,28170)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}v=(B(c[l>>2]|0,e)|0)+g|0;if(!(+((Og((c[m>>2]|0)+(v<<5)|0)|0)>>>0)>j)){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28189)|0,27845)|0,35e3)|0,122)|0,35007)|0,28270)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}q=(B(c[l>>2]|0,e)|0)+g|0;q=(c[m>>2]|0)+(q<<5)|0;if((ah(q)|0)!=2){v=Xf(Xf(PE(Xf(Xf(Xf(56032,28307)|0,27845)|0,35e3)|0,126)|0,35007)|0,28348)|0;IE(D,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);u=XF(D,56736)|0;u=Ib[c[(c[u>>2]|0)+28>>2]&63](u,10)|0;YF(D);QE(v,u)|0;ME(v)|0;ua()}c[d>>2]=0;e=~~(i+.5);l=~~(j+.5);a:do if(((e|0)>=0?!((l|0)<0|(Ng(q)|0)>>>0<=e>>>0):0)?(Og(q)|0)>>>0>l>>>0:0){n=+zj(1.0,+f[a+12>>2]*k);s=-1.0/(+ji(n)*2.0);n=n*+f[a+16>>2];t=+A(+(+ji(n)));m=~~(n+.5);p=Aj(0,e-m|0)|0;o=Bj(m+e|0,(Ng(q)|0)+-1|0)|0;e=Aj(0,l-m|0)|0;m=Bj(m+l|0,(Og(q)|0)+-1|0)|0;u=a+28|0;v=c[u>>2]|0;Cj(v,(c[a+32>>2]|0)-v>>2);v=a+8|0;while(1){if((e|0)>(m|0))break;k=+ji(+(e|0)-j);g=ch(q,e)|0;l=p;while(1){if((l|0)>(o|0))break;n=k+ +ji(+(l|0)-i);if(!(n>t)){G=g+(l<<1<<2)|0;n=+Dj(s*n);r=c[v>>2]|0;Ej(c[u>>2]|0,+f[G>>2]*+(r|0)*.159154943091895,n*+f[G+4>>2],r)}l=l+1|0}e=e+1|0}l=a+20|0;e=0;while(1){if((e|0)>=(c[l>>2]|0))break;G=c[u>>2]|0;Fj(G,G,c[v>>2]|0,15720);e=e+1|0}l=c[v>>2]|0;e=0;s=0.0;while(1){if((e|0)>=(l|0))break;j=+f[(c[u>>2]|0)+(e<<2)>>2];e=e+1|0;s=j>s?j:s}if(!(s==0.0)){if(!(s>0.0)){G=Xf(Xf(PE(Xf(Xf(Xf(56032,28379)|0,27845)|0,35e3)|0,218)|0,35007)|0,28417)|0;IE(D,G+(c[(c[G>>2]|0)+-12>>2]|0)|0);r=XF(D,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(D);QE(G,r)|0;ME(G)|0;ua()}p=D+4|0;q=E+4|0;r=w+4|0;o=a+24|0;m=0;e=l;while(1){if((m|0)>=(e|0))break a;n=+(m|0);f[D>>2]=n;l=c[u>>2]|0;G=l+(m<<2)|0;a=c[G>>2]|0;c[p>>2]=a;g=m+-1|0;f[E>>2]=+(g|0);g=c[l+(((g+e|0)%(e|0)|0)<<2)>>2]|0;c[q>>2]=g;m=m+1|0;f[w>>2]=+(m|0);l=c[l+(((m+e|0)%(e|0)|0)<<2)>>2]|0;c[r>>2]=l;k=(c[h>>2]=a,+f[h>>2]);if(+f[G>>2]>s*+f[o>>2]?(j=(c[h>>2]=l,+f[h>>2]),k>(c[h>>2]=g,+f[h>>2])&k>j):0){f[C>>2]=n;if(Gj(x,y,z,E,D,w)|0)Hj(C,+f[x>>2],+f[y>>2],+f[z>>2])|0;j=+(c[v>>2]|0);e=c[d>>2]|0;f[b+(e<<2)>>2]=(+f[C>>2]+.5+j)/j*6.283185307179586%6.283185307179586;c[d>>2]=e+1;e=c[v>>2]|0}}}}while(0);zb=F;return}function zj(a,b){a=+a;b=+b;return +(a>b?a:b)}function Aj(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function Bj(a,b){a=a|0;b=b|0;return ((a|0)<(b|0)?a:b)|0}function Cj(a,b){a=a|0;b=b|0;aP(a|0,0,b<<2|0)|0;return}function Dj(a){a=+a;return +(((((((a+6.0)*a+30.0)*a+120.0)*a+360.0)*a+720.0)*a+720.0)*.0013888888)}function Ej(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var g=0.0,h=0,i=0,j=0,k=0,l=0;j=zb;zb=zb+16|0;i=j;if(!a){h=Xf(Xf(PE(Xf(Xf(Xf(56032,28448)|0,28484)|0,35e3)|0,139)|0,35007)|0,28571)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(h,k)|0;ME(h)|0;ua()}if(b+.5>0.0?(g=b+-.5,g<+(e|0)):0){if(!(d>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28702)|0,28484)|0,35e3)|0,141)|0,35007)|0,28740)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}if((e|0)<=-1){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28769)|0,28484)|0,35e3)|0,142)|0,35007)|0,28806)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(k,h)|0;ME(k)|0;ua()}k=~~+s(+g);b=b-+(k|0)+-.5;g=1.0-b;h=(k+e|0)%(e|0)|0;e=(k+1|0)%(e|0)|0;if(!(g>=0.0)){k=Xf(Xf(PE(Xf(Xf(Xf(56032,28835)|0,28484)|0,35e3)|0,150)|0,35007)|0,28866)|0;IE(i,k+(c[(c[k>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(k,l)|0;ME(k)|0;ua()}if(!(b>=0.0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28886)|0,28484)|0,35e3)|0,151)|0,35007)|0,28917)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((h|0)<=-1){l=Xf(Xf(PE(Xf(Xf(Xf(56032,28937)|0,28484)|0,35e3)|0,152)|0,35007)|0,28985)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}if((e|0)>-1){l=a+(h<<2)|0;f[l>>2]=g*d+ +f[l>>2];l=a+(e<<2)|0;f[l>>2]=b*d+ +f[l>>2];zb=j;return}else{l=Xf(Xf(PE(Xf(Xf(Xf(56032,29011)|0,28484)|0,35e3)|0,153)|0,35007)|0,29059)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}}l=Xf(Xf(PE(Xf(Xf(Xf(56032,28597)|0,28484)|0,35e3)|0,140)|0,35007)|0,28662)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(i,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(i);QE(l,k)|0;ME(l)|0;ua()}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;k=+f[b>>2];g=c+-1|0;h=b+(g<<2)|0;i=d+4|0;j=d+8|0;e=+f[h>>2];c=0;while(1){if((c|0)==(g|0))break;m=+f[b+(c<<2)>>2];l=c+1|0;f[a+(c<<2)>>2]=e*+f[d>>2]+m*+f[i>>2]+ +f[j>>2]*+f[b+(l<<2)>>2];e=m;c=l}f[a+(g<<2)>>2]=e*+f[d>>2]+ +f[i>>2]*+f[h>>2]+k*+f[j>>2];return}function Gj(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;h=+f[g>>2];k=+f[e>>2];l=+f[d>>2];j=h-l;h=(h-k)*j;i=l-k;j=i*j;if(i==0.0|(h==0.0|j==0.0)){f[a>>2]=0.0;f[b>>2]=0.0;b=0;h=0.0}else{l=l*l;m=e+4|0;n=+f[m>>2];e=d+4|0;h=(+f[g+4>>2]-n)/h-(+f[e>>2]-n)/j;f[a>>2]=h;h=(+f[e>>2]-+f[m>>2]+(k*k-l)*h)/i;f[b>>2]=h;b=1;h=+f[e>>2]-l*+f[a>>2]-h*+f[d>>2]}f[c>>2]=h;return b|0}function Hj(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;if(b==0.0)a=0;else{f[a>>2]=-c/(b*2.0);a=1}return a|0}function Ij(a){a=a|0;var b=0,d=0;c[a>>2]=0;d=tB(24)|0;Jj(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Kj(b);SA(b)}return}function Jj(a){a=a|0;var b=0,d=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=1065353216;d=tB(840)|0;$j(d);b=c[a>>2]|0;c[a>>2]=d;if(b|0){Mj(b);SA(b)}return}function Kj(a){a=a|0;var b=0;Lj(a+4|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0){Mj(b);SA(b)}return}function Lj(a){a=a|0;Yj(a);return}function Mj(a){a=a|0;Nj(a+788|0);kp(a+652|0);Oj(a+636|0);Pj(a+316|0);yh(a+160|0);Qi(a+92|0);Qj(a+72|0);Rj(a+64|0);Sj(a+12|0);return}function Nj(a){a=a|0;Wj(a+24|0);Xj(a+12|0);gh(a);return}function Oj(a){a=a|0;Sj(a);return}function Pj(a){a=a|0;return}function Qj(a){a=a|0;Tj(a);return}function Rj(a){a=a|0;var b=0,d=0;a=c[a+4>>2]|0;if(a|0?(d=a+4|0,b=c[d>>2]|0,c[d>>2]=b+-1,(b|0)==0):0){Sb[c[(c[a>>2]|0)+8>>2]&255](a);_N(a)}return}function Sj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Tj(a){a=a|0;var b=0;Uj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Uj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;Vj(b+8|0);Pf(b,20);b=a}return}function Vj(a){a=a|0;Rj(a+4|0);return}function Wj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Xj(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Yj(a){a=a|0;var b=0;Zj(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function Zj(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;_j(b+8|0);Pf(b,24);b=a}return}function _j(a){a=a|0;lg(a+4|0);return}function $j(b){b=b|0;var d=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+64|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+88>>2]=1065353216;_i(b+92|0);d=b+160|0;dh(d);Gp(b+316|0);ak(b+636|0);jp(b+652|0);bk(b+788|0,.009999999776482582,1024,1064,50);ck(d,3.0);dk(d,4.0);eh(d,500);f[b+4>>2]=3.0;c[b>>2]=8;a[b+8>>0]=1;return}function ak(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;f[a+12>>2]=.699999988079071;return}function bk(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=a;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));ek(a,b,d,e,f);return}function ck(a,b){a=a|0;b=+b;f[a+52>>2]=b;return}function dk(a,b){a=a|0;b=+b;f[a+56>>2]=b;return}function ek(a,b,d,e,g){a=a|0;b=+b;d=d|0;e=e|0;g=g|0;fh(a,d*9|0);fk(a+24|0,d);f[a+36>>2]=b;c[a+40>>2]=d;c[a+44>>2]=e;c[a+48>>2]=g;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>3;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<3)}else gk(a,b-e|0);return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>3>>>0>>0){d=(d-(c[a>>2]|0)>>3)+b|0;e=ik(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>2;jk(f,k>>3>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>3,a+8|0);kk(f,b);lk(a,f);mk(f);break}}else hk(a,b);while(0);zb=i;return}function hk(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function ik(a){a=a|0;return 536870911}function jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<3)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<3)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<3);return}function kk(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<3|0)|0;c[a>>2]=d+(b<<3);return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mk(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-8|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function nk(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=0;if(b|0){Kj(b);SA(b)}return}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[a+4>>2]|0;a:do if(f){g=f+-1|0;h=(g&f|0)==0;if(!h)if(e>>>0>>0)d=e;else d=(e>>>0)%(f>>>0)|0;else d=g&e;b=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(b)while(1){b=c[b>>2]|0;if(!b){b=0;break a}a=c[b+4>>2]|0;if((a|0)==(e|0)){if((c[b+8>>2]|0)==(e|0))break a}else{if(!h){if(a>>>0>=f>>>0)a=(a>>>0)%(f>>>0)|0}else a=a&g;if((a|0)!=(d|0)){b=0;break a}}}else b=0}else b=0;while(0);return b|0}function pk(a){a=a|0;return a+4|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((b|0)<(c|0)|(a|0)<(c|0))break;d=d+1|0;b=b>>1;a=a>>1}return d|0}function rk(a){a=a|0;return c[a>>2]|0}function sk(a){a=a|0;return c[a+4>>2]|0}function tk(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;bm(a+8|0);cm(a+36|0);return}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=zb;zb=zb+16|0;e=d;c[a>>2]=b;f=tB(16)|0;c[f+4>>2]=0;c[f+8>>2]=0;c[f>>2]=15740;c[f+12>>2]=b;c[a+4>>2]=f;c[e>>2]=b;c[e+4>>2]=b;Rl(a,e);zb=d;return}function vk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wk(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xk(b,d,e,g){b=b|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;i=k+20|0;j=k;if(!d){h=Xf(Xf(PE(Xf(Xf(Xf(56032,33588)|0,30067)|0,35e3)|0,212)|0,35007)|0,33688)|0;IE(i,h+(c[(c[h>>2]|0)+-12>>2]|0)|0);l=XF(i,56736)|0;l=Ib[c[(c[l>>2]|0)+28>>2]&63](l,10)|0;YF(i);QE(h,l)|0;ME(h)|0;ua()}if(!e){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30146)|0,30067)|0,35e3)|0,213)|0,35007)|0,30178)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;if((c[l+4>>2]|0)==(c[l>>2]|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30195)|0,30067)|0,35e3)|0,214)|0,35007)|0,30247)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Ng(c[l>>2]|0)|0;if((l|0)!=(rk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30264)|0,30067)|0,35e3)|0,215)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}l=Ah(d)|0;l=Og(c[l>>2]|0)|0;if((l|0)!=(sk(e)|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,30372)|0,30067)|0,35e3)|0,216)|0,35007)|0,30337)|0;IE(i,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);h=XF(i,56736)|0;h=Ib[c[(c[h>>2]|0)+28>>2]&63](h,10)|0;YF(i);QE(l,h)|0;ME(l)|0;ua()}Rh(e,d);h=Ml(e)|0;Nl(i,((c[h+4>>2]|0)-(c[h>>2]|0)|0)/36|0);h=0;while(1){l=Ml(e)|0;if(h>>>0>=(((c[l+4>>2]|0)-(c[l>>2]|0)|0)/36|0)>>>0)break;l=Ml(e)|0;l=c[l>>2]|0;gg(j,+f[l+(h*36|0)>>2],+f[l+(h*36|0)+4>>2],+f[l+(h*36|0)+8>>2],+f[l+(h*36|0)+28>>2],+f[l+(h*36|0)+24>>2]>0.0);l=(c[i>>2]|0)+(h*20|0)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];a[l+16>>0]=a[j+16>>0]|0;Of(j);h=h+1|0}Hp(g,zk(b)|0,d,i);Nf(i);zb=k;return}function yk(){if((a[54528]|0)==0?nB(54528)|0:0){sq(55464);pB(54528)}return 55464}function zk(a){a=a|0;return a+8|0}function Ak(a){a=a|0;return ((c[a+20>>2]|0)-(c[a+16>>2]|0)|0)/20|0|0}function Bk(a){a=a|0;var b=0,d=0;d=a+36|0;Gk(d,128);Hk(d,8);Ik(d,8);Jk(d,16);a=a+8|0;b=Kk(a)|0;b=c[b>>2]|0;Lk(d,b,Ak(a)|0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){Dk(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;Ek(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Dk(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(20)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)Fk(a,b)}}else Fk(a,b);return}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function Gk(a,b){a=a|0;b=b|0;Ll(a+12|0,b);return}function Hk(a,b){a=a|0;b=b|0;Kl(a+12|0,b);return}function Ik(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function Jk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function Kk(a){a=a|0;return a+4|0}function Lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;g=i;Mk(g,d);f=c[g>>2]|0;h=(c[g+4>>2]|0)-f>>2;e=0;while(1){if((e|0)==(h|0))break;c[f+(e<<2)>>2]=e;e=e+1|0}Nk(a,b,d,f,h);Xj(g);zb=i;return}function Mk(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Jl(a,b);Fl(a,b)}return}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=tB(128)|0;Pk(g,Ok(a)|0);i=a+8|0;h=c[i>>2]|0;c[i>>2]=g;if(h){Qk(h);SA(h);g=c[i>>2]|0}Rk(g,0);Sk(a,c[i>>2]|0,b,d,e,f);return}function Ok(a){a=a|0;var b=0;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;return a|0}function Pk(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Il(b+4|0,96);return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+104|0;f=a+108|0;d=0;while(1){b=c[e>>2]|0;if(d>>>0>=(c[f>>2]|0)-b>>2>>>0)break;b=c[b+(d<<2)>>2]|0;if(b|0){Qk(b);SA(b)}d=d+1|0}Xj(a+116|0);Hl(e);return}function Rk(b,c){b=b|0;c=c|0;a[b+100>>0]=c&1;return}function Sk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=zb;zb=zb+32|0;o=q+20|0;p=q;h=a+12|0;n=Tk(h)|0;if((Aj(n,c[a+108>>2]|0)|0)>=(g|0)){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break;o=c[f+(h<<2)>>2]|0;p=Uk(b)|0;c[(c[p>>2]|0)+(h<<2)>>2]=o;h=h+1|0}zb=q;return}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=1065353216;Wk(h,d,e,f,g);m=Xk(h)|0;n=m+4|0;i=c[n>>2]|0;h=c[m>>2]|0;if((i-h>>2|0)!=(g|0)){l=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29190)|0,35e3)|0,363)|0,35007)|0,29284)|0;IE(o,l+(c[(c[l>>2]|0)+-12>>2]|0)|0);k=XF(o,56736)|0;k=Ib[c[(c[k>>2]|0)+28>>2]&63](k,10)|0;YF(o);QE(l,k)|0;ME(l)|0;ua()}l=0;while(1){if(l>>>0>=i-h>>2>>>0){h=10;break}h=c[h+(l<<2)>>2]|0;if((h|0)==-1){h=12;break}if((h|0)>=(g|0)){h=14;break}h=f+(h<<2)|0;if((c[h>>2]|0)>=(e|0)){h=16;break}h=Yk(p,h)|0;i=f+(l<<2)|0;j=h+4|0;k=c[j>>2]|0;if((k|0)==(c[h+8>>2]|0))Zk(h,i);else{c[k>>2]=c[i>>2];c[j>>2]=k+4}l=l+1|0;h=c[m>>2]|0;i=c[n>>2]|0}if((h|0)==10){h=p+12|0;a:do if((c[h>>2]|0)==1){Rk(b,1);Vk(Uk(b)|0,g);h=0;while(1){if((h|0)>=(g|0))break a;e=c[f+(h<<2)>>2]|0;o=Uk(b)|0;c[(c[o>>2]|0)+(h<<2)>>2]=e;h=h+1|0}}else{g=_k(b)|0;$k(g,c[h>>2]|0);h=p+8|0;while(1){h=c[h>>2]|0;if(!h)break a;i=h;l=i+12|0;m=i+16|0;if((c[m>>2]|0)==(c[l>>2]|0))break;j=tB(128)|0;k=Ok(a)|0;al(j,k,d+((c[i+8>>2]|0)*96|0)|0);c[o>>2]=j;Rk(j,0);i=_k(b)|0;j=i+4|0;k=c[j>>2]|0;if((k|0)==(c[i+8>>2]|0))bl(i,o);else{c[k>>2]=c[o>>2];c[j>>2]=(c[j>>2]|0)+4}g=c[l>>2]|0;Sk(a,c[o>>2]|0,d,e,g,(c[m>>2]|0)-g>>2)}b=Xf(Xf(PE(Xf(Xf(Xf(56032,29507)|0,29190)|0,35e3)|0,387)|0,35007)|0,29553)|0;IE(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);e=XF(o,56736)|0;e=Ib[c[(c[e>>2]|0)+28>>2]&63](e,10)|0;YF(o);QE(b,e)|0;ME(b)|0;ua()}while(0);cl(p);zb=q;return}else if((h|0)==12){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29306)|0,29190)|0,35e3)|0,365)|0,35007)|0,29349)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==14){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29371)|0,29190)|0,35e3)|0,366)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}else if((h|0)==16){q=Xf(Xf(PE(Xf(Xf(Xf(56032,29446)|0,29190)|0,35e3)|0,367)|0,35007)|0,29422)|0;IE(o,q+(c[(c[q>>2]|0)+-12>>2]|0)|0);b=XF(o,56736)|0;b=Ib[c[(c[b>>2]|0)+28>>2]&63](b,10)|0;YF(o);QE(q,b)|0;ME(q)|0;ua()}}function Tk(a){a=a|0;return c[a+4>>2]|0}function Uk(a){a=a|0;return a+116|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+(b<<2)}else El(a,b-e|0);return}function Wk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+16|0;o=s;p=a+4|0;g=c[p>>2]|0;q=a+12|0;r=a+16|0;if((g|0)!=((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,154)|0,35007)|0,29707)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((d|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,155)|0,35007)|0,29792)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((f|0)>(d|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,156)|0,35007)|0,29879)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(f|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29906)|0,29635)|0,35e3)|0,157)|0,35007)|0,29947)|0;IE(o,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(o,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(o);QE(n,m)|0;ME(n)|0;ua()}j=a+24|0;c[o>>2]=-1;sl(j,f,o);k=a+36|0;c[o>>2]=-1;sl(k,f,o);l=a+48|0;Vk(l,f);n=c[l>>2]|0;m=a+52|0;tl(n,(c[m>>2]|0)-n>>2,0);n=a+8|0;g=-1;i=0;while(1){if((i|0)>=(c[n>>2]|0))break;h=c[l>>2]|0;ul(h,(c[m>>2]|0)-h>>2,c[p>>2]|0,c[a>>2]|0);h=vl(a,k,b,d,e,f,c[l>>2]|0,c[p>>2]|0)|0;if(h>>>0>>0){wl(j,k);xl(c[q>>2]|0,c[l>>2]|0,c[p>>2]|0);g=h}i=i+1|0}if((c[p>>2]|0)==((c[r>>2]|0)-(c[q>>2]|0)>>2|0)){zb=s;return}else{s=Xf(Xf(PE(Xf(Xf(Xf(56032,29590)|0,29635)|0,35e3)|0,187)|0,35007)|0,29707)|0;IE(o,s+(c[(c[s>>2]|0)+-12>>2]|0)|0);r=XF(o,56736)|0;r=Ib[c[(c[r>>2]|0)+28>>2]&63](r,10)|0;YF(o);QE(s,r)|0;ME(s)|0;ua()}}function Xk(a){a=a|0;return a+24|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){pl(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;ql(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=ll(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;ml(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;f=c[g>>2]|0;c[f>>2]=c[b>>2];c[g>>2]=f+4;nl(a,d);ol(d);zb=h;return}}function _k(a){a=a|0;return a+104|0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=zb;zb=zb+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0>>0){hl(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);il(a,d);jl(d)}zb=f;return}function al(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=d;a[b+100>>0]=1;d=b+104|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;kl(b+4|0,e,96);return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=zb;zb=zb+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=gl(a)|0;if(g>>>0>>0)EO(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;hl(d,k>>2>>>0>>1>>>0?(j>>>0>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;il(a,d);jl(d);zb=h;return}}function cl(a){a=a|0;dl(a);return}function dl(a){a=a|0;var b=0;el(a,c[a+8>>2]|0);b=c[a>>2]|0;c[a>>2]=0;if(b|0)Pf(b,c[a+4>>2]<<2);return}function el(a,b){a=a|0;b=b|0;while(1){if(!b)break;a=c[b>>2]|0;fl(b+8|0);Pf(b,24);b=a}return}function fl(a){a=a|0;Xj(a+4|0);return}function gl(a){a=a|0;return 1073741823}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function jl(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c|0)|0;return}function ll(a){a=a|0;return 1073741823}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823){f=O(8)|0;dO(f,37409);c[f>>2]=16392;Q(f|0,13960,22)}else{e=tB(b<<2)|0;break}else e=0;while(0);c[a>>2]=e;d=e+(d<<2)|0;c[a+8>>2]=d;c[a+4>>2]=d;c[f>>2]=e+(b<<2);return}function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){_O(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-4|0;c[d>>2]=f;e=f}b=c[a>>2]|0;if(b|0)Pf(b,(c[a+12>>2]|0)-b|0);return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function ql(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)rl(a,b)}}else rl(a,b);return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;g=c[a>>2]|0;f=(c[e>>2]|0)-g>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0)c[e>>2]=g+(b<<2)}else Cl(a,b-f|0,d);return}function tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a:do if((b|0)>=1){c[a>>2]=d;e=1;while(1){if((e|0)==(b|0))break a;f=d+1|0;c[a+(e<<2)>>2]=f;e=e+1|0;d=f}}while(0);return}function ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){if((f|0)>=(d|0))break;i=a+(f<<2)|0;g=a+(((Bl(e)|0)%(b|0)|0)<<2)|0;h=c[i>>2]|0;c[i>>2]=c[g>>2];c[g>>2]=h;f=f+1|0}return}function vl(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;a=o;if(((c[b+4>>2]|0)-(c[b>>2]|0)>>2|0)!=(g|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29134)|0,29635)|0,35e3)|0,198)|0,35007)|0,29967)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((e|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29752)|0,29635)|0,35e3)|0,199)|0,35007)|0,29792)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((g|0)>(e|0)){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29828)|0,29635)|0,35e3)|0,200)|0,35007)|0,29879)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}if((i|0)<=0){n=Xf(Xf(PE(Xf(Xf(Xf(56032,29996)|0,29635)|0,35e3)|0,201)|0,35007)|0,30035)|0;IE(a,n+(c[(c[n>>2]|0)+-12>>2]|0)|0);m=XF(a,56736)|0;m=Ib[c[(c[m>>2]|0)+28>>2]&63](m,10)|0;YF(a);QE(n,m)|0;ME(n)|0;ua()}k=0;m=0;while(1){if((m|0)>=(g|0))break;n=f+(m<<2)|0;l=0;a=-1;while(1){if((l|0)==(i|0))break;e=h+(l<<2)|0;j=yl(d+((c[n>>2]|0)*96|0)|0,d+((c[f+(c[e>>2]<<2)>>2]|0)*96|0)|0)|0;if(j>>>0>>0){c[(c[b>>2]|0)+(m<<2)>>2]=c[e>>2];a=j}l=l+1|0}k=a+k|0;m=m+1|0}zb=o;return k|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a>>2]|0;c[a>>2]=c[b>>2];c[b>>2]=f;f=a+4|0;d=b+4|0;e=c[f>>2]|0;c[f>>2]=c[d>>2];c[d>>2]=e;d=a+8|0;b=b+8|0;a=c[d>>2]|0;c[d>>2]=c[b>>2];c[b>>2]=a;return}function xl(a,b,c){a=a|0;b=b|0;c=c|0;_O(a|0,b|0,c<<2|0)|0;return}function yl(a,b){a=a|0;b=b|0;return zl(a,b)|0}function zl(a,b){a=a|0;b=b|0;var d=0;d=Al(c[a>>2]|0,c[b>>2]|0)|0;d=(Al(c[a+4>>2]|0,c[b+4>>2]|0)|0)+d|0;d=d+(Al(c[a+8>>2]|0,c[b+8>>2]|0)|0)|0;d=d+(Al(c[a+12>>2]|0,c[b+12>>2]|0)|0)|0;d=d+(Al(c[a+16>>2]|0,c[b+16>>2]|0)|0)|0;d=d+(Al(c[a+20>>2]|0,c[b+20>>2]|0)|0)|0;d=d+(Al(c[a+24>>2]|0,c[b+24>>2]|0)|0)|0;d=d+(Al(c[a+28>>2]|0,c[b+28>>2]|0)|0)|0;d=d+(Al(c[a+32>>2]|0,c[b+32>>2]|0)|0)|0;d=d+(Al(c[a+36>>2]|0,c[b+36>>2]|0)|0)|0;d=d+(Al(c[a+40>>2]|0,c[b+40>>2]|0)|0)|0;d=d+(Al(c[a+44>>2]|0,c[b+44>>2]|0)|0)|0;d=d+(Al(c[a+48>>2]|0,c[b+48>>2]|0)|0)|0;d=d+(Al(c[a+52>>2]|0,c[b+52>>2]|0)|0)|0;d=d+(Al(c[a+56>>2]|0,c[b+56>>2]|0)|0)|0;d=d+(Al(c[a+60>>2]|0,c[b+60>>2]|0)|0)|0;d=d+(Al(c[a+64>>2]|0,c[b+64>>2]|0)|0)|0;d=d+(Al(c[a+68>>2]|0,c[b+68>>2]|0)|0)|0;d=d+(Al(c[a+72>>2]|0,c[b+72>>2]|0)|0)|0;d=d+(Al(c[a+76>>2]|0,c[b+76>>2]|0)|0)|0;d=d+(Al(c[a+80>>2]|0,c[b+80>>2]|0)|0)|0;d=d+(Al(c[a+84>>2]|0,c[b+84>>2]|0)|0)|0;d=d+(Al(c[a+88>>2]|0,c[b+88>>2]|0)|0)|0;return d+(Al(c[a+92>>2]|0,c[b+92>>2]|0)|0)|0}function Al(a,b){a=a|0;b=b|0;b=b^a;b=b-(b>>>1&1431655765)|0;b=(b>>>2&858993459)+(b&858993459)|0;return (B((b>>>4)+b&252645135,16843009)|0)>>>24|0}function Bl(a){a=a|0;var b=0;b=((c[a>>2]|0)*214013|0)+2531011|0;c[a>>2]=b;return b>>>16&32767|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=zb;zb=zb+32|0;h=k;i=a+8|0;j=a+4|0;e=c[j>>2]|0;g=e;do if((c[i>>2]|0)-e>>2>>>0>>0){e=(e-(c[a>>2]|0)>>2)+b|0;f=ll(a)|0;if(f>>>0>>0)EO(a);else{g=c[a>>2]|0;l=(c[i>>2]|0)-g|0;i=l>>1;ml(h,l>>2>>>0>>1>>>0?(i>>>0>>0?e:i):f,(c[j>>2]|0)-g>>2,a+8|0);Dl(h,b,d);nl(a,h);ol(h);break}}else{e=b;f=g;while(1){c[f>>2]=c[d>>2];e=e+-1|0;if(!e)break;else f=f+4|0}c[j>>2]=g+(b<<2)}while(0);zb=k;return}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+8|0;e=c[f>>2]|0;a=b;g=e;while(1){c[g>>2]=c[d>>2];a=a+-1|0;if(!a)break;else g=g+4|0}c[f>>2]=e+(b<<2);return}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((c[g>>2]|0)-d>>2>>>0>>0){d=(d-(c[a>>2]|0)>>2)+b|0;e=ll(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k>>1;ml(f,k>>2>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j>>2,a+8|0);Gl(f,b);nl(a,f);ol(f);break}}else Fl(a,b);while(0);zb=i;return}function Fl(a,b){a=a|0;b=b|0;var d=0;a=a+4|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Gl(a,b){a=a|0;b=b|0;var d=0;a=a+8|0;d=c[a>>2]|0;aP(d|0,0,b<<2|0)|0;c[a>>2]=d+(b<<2);return}function Hl(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;d=b;if(b|0){c[a+4>>2]=d;Pf(b,(c[a+8>>2]|0)-d|0)}return}function Il(a,b){a=a|0;b=b|0;aP(a|0,0,b|0)|0;return}function Jl(a,b){a=a|0;b=b|0;var d=0;if((ll(a)|0)>>>0>>0)EO(a);if(b>>>0>1073741823){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Kl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;Vk(a+12|0,b);return}function Ll(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ml(a){a=a|0;return a+60|0}function Nl(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;if(b|0){Ol(a,b);Pl(a,b)}return}function Ol(a,b){a=a|0;b=b|0;var d=0;if((ug(a)|0)>>>0>>0)EO(a);if(b>>>0>214748364){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*20|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*20|0);return}}function Pl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Ql(b){b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=1;return}function Rl(a,b){a=a|0;b=b|0;return}function Sl(a){a=a|0;Tl(a+36|0);Ul(a+8|0);return}function Tl(a){a=a|0;var b=0;Vl(a+84|0);Xj(a+72|0);Wl(a+12|0);b=a+8|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Qk(a);SA(a)}return}function Ul(a){a=a|0;Nf(a+16|0);Mf(a+4|0);return}function Vl(a){a=a|0;Xl(a);return}function Wl(a){a=a|0;Xj(a+48|0);Xj(a+36|0);Xj(a+24|0);Xj(a+12|0);return}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-8|0;Yl(f);b=f}c[e>>2]=d;f=c[a>>2]|0;Pf(f,(c[a+8>>2]|0)-f|0)}return}function Yl(a){a=a|0;return}function Zl(a){a=a|0;ZN(a);SA(a);return}function _l(a){a=a|0;a=c[a+12>>2]|0;if(a|0){Sl(a);SA(a)}return}function $l(a,b){a=a|0;b=b|0;return ((c[b+4>>2]|0)==30447?a+12|0:0)|0}function am(a){a=a|0;Pf(a,16);return}function bm(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function cm(a){a=a|0;var b=0,d=0;c[a>>2]=1234;c[a+4>>2]=0;c[a+8>>2]=0;b=a+12|0;dm(b,a);d=a+72|0;c[a+100>>2]=0;c[a+104>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[a+108>>2]=16;Kl(b,8);Ll(b,1);return}function dm(a,b){a=a|0;b=b|0;c[a>>2]=b;a=a+4|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function em(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=zb;zb=zb+32|0;m=l+24|0;j=l+12|0;k=l+16|0;n=l+8|0;i=l;c[j>>2]=h;h=tB(148)|0;tk(h);c[n>>2]=0;c[m>>2]=c[n>>2];uk(k,h,m);vk(c[k>>2]|0,f);wk(c[k>>2]|0,g);fm(zk(c[k>>2]|0)|0,96);g=gm(zk(c[k>>2]|0)|0)|0;f=b+4|0;hm(g,((c[f>>2]|0)-(c[b>>2]|0)|0)/20|0);g=gm(zk(c[k>>2]|0)|0)|0;if((g|0)!=(b|0))im(g,c[b>>2]|0,c[f>>2]|0);g=Kk(zk(c[k>>2]|0)|0)|0;f=d+4|0;jm(g,(c[f>>2]|0)-(c[d>>2]|0)|0);g=Kk(zk(c[k>>2]|0)|0)|0;if((g|0)!=(d|0))km(g,c[d>>2]|0,c[f>>2]|0);Bk(c[k>>2]|0);f=c[c[a>>2]>>2]|0;c[i>>2]=c[k>>2];g=c[k+4>>2]|0;c[i+4>>2]=g;if(g|0){n=g+4|0;c[n>>2]=(c[n>>2]|0)+1}lm(f,i,c[j>>2]|0);Rj(i);f=mm((c[a>>2]|0)+4|0,j)|0;if((f|0)!=(e|0))nm(f,c[e>>2]|0,c[e+4>>2]|0);Rj(k);zb=l;return}function fm(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gm(a){a=a|0;return a+16|0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=a+4|0;d=c[g>>2]|0;f=c[a>>2]|0;e=(d-f|0)/20|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0){a=f+(b*20|0)|0;while(1){if((d|0)==(a|0))break;f=d+-20|0;Of(f);d=f}c[g>>2]=a}}else Cm(a,b-e|0);return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b;l=(d-e|0)/20|0;f=a+8|0;i=c[a>>2]|0;g=i;do if(l>>>0>(((c[f>>2]|0)-i|0)/20|0)>>>0){Bm(a);e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=((c[f>>2]|0)-(c[a>>2]|0)|0)/20|0;k=j<<1;Ol(a,j>>>0>>1>>>0?(k>>>0>>0?l:k):e);Am(a,b,d,l);break}}else{k=a+4|0;j=((c[k>>2]|0)-i|0)/20|0;h=l>>>0>j>>>0;j=h?b+(j*20|0)|0:d;e=j-e|0;if(e|0)$O(i|0,b|0,e|0)|0;f=g+(((e|0)/20|0)*20|0)|0;if(h){Am(a,j,d,l-(((c[k>>2]|0)-(c[a>>2]|0)|0)/20|0)|0);break}e=c[k>>2]|0;while(1){if((e|0)==(f|0))break;l=e+-20|0;Of(l);e=l}c[k>>2]=f}while(0);return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+4|0;f=c[a>>2]|0;e=(c[d>>2]|0)-f|0;if(e>>>0>=b>>>0){if(e>>>0>b>>>0)c[d>>2]=f+b}else xm(a,b-e|0);return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b;k=d-i|0;f=a+8|0;e=c[a>>2]|0;j=e;do if(k>>>0>((c[f>>2]|0)-e|0)>>>0){vm(a);e=mg(a)|0;if(e>>>0>>0)EO(a);else{i=(c[f>>2]|0)-(c[a>>2]|0)|0;j=i<<1;wm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);um(a,b,d,k);break}}else{h=a+4|0;g=(c[h>>2]|0)-e|0;f=k>>>0>g>>>0;g=f?b+g|0:d;e=g-i|0;if(e|0)$O(j|0,b|0,e|0)|0;if(f){um(a,g,d,k-(c[h>>2]|0)+(c[a>>2]|0)|0);break}else{c[h>>2]=j+e;break}}while(0);return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i+4|0;e=i;c[e>>2]=d;a=a+72|0;if(ok(a,e)|0){i=O(16)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;gO(h,29085,Yf(29085)|0);mj(i,h);Q(i|0,13208,5)}f=Ck(a,e)|0;g=c[b>>2]|0;c[h>>2]=g;e=h+4|0;a=c[b+4>>2]|0;c[e>>2]=a;if(!a){d=e;a=0}else{d=a+4|0;c[d>>2]=(c[d>>2]|0)+1;d=e;a=c[e>>2]|0}c[h>>2]=c[f>>2];c[f>>2]=g;b=f+4|0;c[d>>2]=c[b>>2];c[b>>2]=a;Rj(h);zb=i;return}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=zb;zb=zb+32|0;r=s+4|0;l=s;m=s+16|0;c[l>>2]=b;q=c[b>>2]|0;o=a+4|0;i=c[o>>2]|0;p=(i|0)==0;a:do if(!p){k=i+-1|0;e=(k&i|0)==0;if(!e)if(q>>>0>>0)j=q;else j=(q>>>0)%(i>>>0)|0;else j=k&q;b=c[(c[a>>2]|0)+(j<<2)>>2]|0;if(!b){b=j;n=16}else do{b=c[b>>2]|0;if(!b){b=j;n=16;break a}d=c[b+4>>2]|0;if((d|0)!=(q|0)){if(!e){if(d>>>0>=i>>>0)d=(d>>>0)%(i>>>0)|0}else d=d&k;if((d|0)!=(j|0)){b=j;n=16;break a}}}while((c[b+8>>2]|0)!=(q|0))}else{b=0;n=16}while(0);if((n|0)==16){rm(r,a,q,57660,l,m);j=a+12|0;g=+(((c[j>>2]|0)+1|0)>>>0);h=+f[a+16>>2];do if(p|h*+(i>>>0)>>0<3|(i+-1&i|0)!=0)&1;d=~~+A(+(g/h))>>>0;sm(a,b>>>0>>0?d:b);b=c[o>>2]|0;d=b+-1|0;if(!(d&b)){i=b;b=d&q;break}if(q>>>0>>0){i=b;b=q}else{i=b;b=(q>>>0)%(b>>>0)|0}}while(0);d=c[(c[a>>2]|0)+(b<<2)>>2]|0;if(!d){e=a+8|0;c[c[r>>2]>>2]=c[e>>2];c[e>>2]=c[r>>2];c[(c[a>>2]|0)+(b<<2)>>2]=e;e=c[r>>2]|0;b=c[e>>2]|0;if(!b)b=r;else{b=c[b+4>>2]|0;d=i+-1|0;if(d&i){if(b>>>0>=i>>>0)b=(b>>>0)%(i>>>0)|0}else b=b&d;c[(c[a>>2]|0)+(b<<2)>>2]=e;b=r}}else{c[c[r>>2]>>2]=c[d>>2];c[d>>2]=c[r>>2];b=r}r=c[b>>2]|0;c[j>>2]=(c[j>>2]|0)+1;c[b>>2]=0;b=r}zb=s;return b+12|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b;k=(d-e|0)/12|0;f=a+8|0;j=c[a>>2]|0;i=j;do if(k>>>0>(((c[f>>2]|0)-j|0)/12|0)>>>0){pm(a);e=qg(a)|0;if(e>>>0>>0)EO(a);else{i=((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0;j=i<<1;qm(a,i>>>0>>1>>>0?(j>>>0>>0?k:j):e);om(a,b,d,k);break}}else{f=a+4|0;h=((c[f>>2]|0)-j|0)/12|0;g=k>>>0>h>>>0;h=g?b+(h*12|0)|0:d;e=h-e|0;if(e|0)$O(j|0,b|0,e|0)|0;if(g){om(a,h,d,k-(((c[f>>2]|0)-(c[a>>2]|0)|0)/12|0)|0);break}else{c[f>>2]=i+(((e|0)/12|0)*12|0);break}}while(0);return}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(((a>>>0)/12|0)*12|0)}return}function pm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function qm(a,b){a=a|0;b=b|0;var d=0;if((qg(a)|0)>>>0>>0)EO(a);if(b>>>0>357913941){b=O(8)|0;dO(b,37409);c[b>>2]=16392;Q(b|0,13960,22)}else{d=tB(b*12|0)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b*12|0);return}}function rm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=tB(24)|0;c[b>>2]=h;c[b+4>>2]=d+8;c[h+8>>2]=c[c[g>>2]>>2];c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;a[b+8>>0]=1;c[h+4>>2]=e;c[h>>2]=0;return}function sm(a,b){a=a|0;b=b|0;var d=0,e=0,g=0;if((b|0)!=1){if(b+-1&b)b=AD(b)|0}else b=2;e=c[a+4>>2]|0;if(b>>>0<=e>>>0){if(b>>>0>>0){d=~~+A(+(+((c[a+12>>2]|0)>>>0)/+f[a+16>>2]))>>>0;if(e>>>0>2&(e+-1&e|0)==0){g=1<<32-(C(d+-1|0)|0);d=d>>>0<2?d:g}else d=AD(d)|0;b=b>>>0>>0?d:b;if(b>>>0>>0)tm(a,b)}}else tm(a,b);return}function tm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+4|0;a:do if(b){if(b>>>0>1073741823){a=O(8)|0;dO(a,37409);c[a>>2]=16392;Q(a|0,13960,22)}l=tB(b<<2)|0;d=c[a>>2]|0;c[a>>2]=l;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=b;d=0;while(1){if((d|0)==(b|0))break;c[(c[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}f=a+8|0;d=c[f>>2]|0;if(d|0){e=c[d+4>>2]|0;k=b+-1|0;l=(k&b|0)==0;if(!l){if(e>>>0>=b>>>0)e=(e>>>0)%(b>>>0)|0}else e=e&k;c[(c[a>>2]|0)+(e<<2)>>2]=f;while(1){j=d;b:while(1){while(1){d=c[j>>2]|0;if(!d)break a;f=c[d+4>>2]|0;if(!l){if(f>>>0>=b>>>0)f=(f>>>0)%(b>>>0)|0}else f=f&k;if((f|0)==(e|0))break;g=(c[a>>2]|0)+(f<<2)|0;if(!(c[g>>2]|0))break b;h=d+8|0;g=d;while(1){i=c[g>>2]|0;if(!i)break;if((c[h>>2]|0)==(c[i+8>>2]|0))g=i;else break}c[j>>2]=i;c[g>>2]=c[c[(c[a>>2]|0)+(f<<2)>>2]>>2];c[c[(c[a>>2]|0)+(f<<2)>>2]>>2]=d}j=d}c[g>>2]=j;e=f}}}else{d=c[a>>2]|0;c[a>>2]=0;if(d|0)Pf(d,c[a+4>>2]<<2);c[e>>2]=0}while(0);return}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){_O(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a}return}function vm(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;d=b;if(b|0){e=a+4|0;c[e>>2]=d;f=a+8|0;Pf(b,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function wm(a,b){a=a|0;b=b|0;var d=0;if((mg(a)|0)>>>0>>0)EO(a);else{d=tB(b)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+b;return}}function xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if(((c[g>>2]|0)-d|0)>>>0>>0){d=d-(c[a>>2]|0)+b|0;e=mg(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=(c[g>>2]|0)-j|0;g=k<<1;ng(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,(c[h>>2]|0)-j|0,a+8|0);zm(f,b);og(a,f);pg(f);break}}else ym(a,b);while(0);zb=i;return}function ym(b,d){b=b|0;d=d|0;var e=0;e=b+4|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function zm(b,d){b=b|0;d=d|0;var e=0;e=b+8|0;b=d;d=c[e>>2]|0;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}function Am(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=a+4|0;while(1){if((b|0)==(d|0))break;e=c[a>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[a>>2]=(c[a>>2]|0)+20;b=b+20|0}return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[a>>2]|0;if(d|0){e=a+4|0;b=c[e>>2]|0;while(1){if((b|0)==(d|0))break;f=b+-20|0;Of(f);b=f}c[e>>2]=d;d=c[a>>2]|0;f=a+8|0;Pf(d,(c[f>>2]|0)-d|0);c[f>>2]=0;c[e>>2]=0;c[a>>2]=0}return}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=zb;zb=zb+32|0;f=i;g=a+8|0;h=a+4|0;d=c[h>>2]|0;do if((((c[g>>2]|0)-d|0)/20|0)>>>0>>0){d=((d-(c[a>>2]|0)|0)/20|0)+b|0;e=ug(a)|0;if(e>>>0>>0)EO(a);else{j=c[a>>2]|0;k=((c[g>>2]|0)-j|0)/20|0;g=k<<1;vg(f,k>>>0>>1>>>0?(g>>>0>>0?d:g):e,((c[h>>2]|0)-j|0)/20|0,a+8|0);Dm(f,b);wg(a,f);xg(f);break}}else Pl(a,b);while(0);zb=i;return}function Dm(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;b=c[d>>2]|0;do{Ql(b);b=(c[d>>2]|0)+20|0;c[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function Em(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=zb;zb=zb+32|0;g=f;kq(g,b,1,d,e,d,1);e=Fm(c[c[a>>2]>>2]|0,g)|0;rq(g);zb=f;return e|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=zb;zb=zb+32|0;d=f;e=a+92|0;g=pk(e)|0;if(!(((c[g+4>>2]|0)!=(c[g>>2]|0)?(g=pk(e)|0,g=Ng(c[g>>2]|0)|0,(g|0)==(Ng(b)|0)):0)?(g=pk(e)|0,g=Og(c[g>>2]|0)|0,(g|0)==(Og(b)|0)):0)){g=Ng(b)|0;g=qk(g,Og(b)|0,8)|0;h=Ng(b)|0;$i(e,h,Og(b)|0,g)}Bq(d,29103);if(Sh(d)|0)ij(e,b);Cq(d);h=Gm(a,e)|0;zb=f;return h|0}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=zb;zb=zb+64|0;e=k+16|0;j=k;g=k+56|0;h=k+48|0;i=b+160|0;l=rk(i)|0;f=Ah(d)|0;if(!((l|0)==(Ng(c[f>>2]|0)|0)?(f=sk(i)|0,l=Ah(d)|0,(f|0)==(Og(c[l>>2]|0)|0)):0))zh(i,d);f=b+64|0;m=tB(148)|0;tk(m);c[h>>2]=0;c[e>>2]=c[h>>2];uk(g,m,e);m=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=m;m=g+4|0;l=b+68|0;h=c[m>>2]|0;c[m>>2]=c[l>>2];c[l>>2]=h;Rj(g);l=c[f>>2]|0;h=Ah(d)|0;vk(l,Ng(c[h>>2]|0)|0);h=c[f>>2]|0;l=Ah(d)|0;wk(h,Og(c[l>>2]|0)|0);Bq(e,29117);if(Sh(e)|0)xk(c[f>>2]|0,d,i,b+316|0);Cq(e);m=yk()|0;Zp(e);i=(a[e+11>>0]|0)<0?c[e>>2]|0:e;l=Ak(zk(c[f>>2]|0)|0)|0;c[j>>2]=35129;c[j+4>>2]=i;c[j+8>>2]=30646;c[j+12>>2]=l;uq(m,8,30602,j);jO(e);m=Hm(b,c[f>>2]|0)|0;zb=k;return m|0}function Hm(b,d){b=b|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=zb;zb=zb+144|0;s=D+104|0;w=D;x=D+72|0;y=D+40|0;z=b+12|0;A=b+16|0;c[A>>2]=c[z>>2];B=b+24|0;c[B>>2]=-1;k=Jm(Im(d)|0)|0;l=b+8|0;m=b+636|0;n=b+652|0;o=s+4|0;p=s+8|0;q=b+788|0;r=x+4|0;t=x+8|0;u=b+4|0;v=b+28|0;e=b+80|0;while(1){e=c[e>>2]|0;if(!e)break;Bq(s,30936);do if(Sh(s)|0){E=(a[l>>0]|0)==0;g=Im(d)|0;j=e;h=j+12|0;i=zk(c[h>>2]|0)|0;if(E){E=Mm(m,g,i)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}else{E=Lm(m,g,i,Km(c[h>>2]|0)|0)|0;if(E>>>0>=(c[b>>2]|0)>>>0){C=9;break}}Cq(s)}else{j=e;h=j+12|0;C=9}while(0);do if((C|0)==9){C=0;Cq(s);i=gm(zk(c[h>>2]|0)|0)|0;Bq(s,30953);if(Sh(s)|0){G=Nm(m)|0;F=Om(d)|0;E=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,G,F,E,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(s);break}}else g=-1;Cq(s);c[s>>2]=0;c[o>>2]=0;c[p>>2]=0;Bq(w,30970);if(Sh(w)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(w);Bq(x,30993);if(Sh(x)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0)Cq(x);else{Cq(x);c[x>>2]=0;c[r>>2]=0;c[t>>2]=0;Bq(y,31017);if(Sh(y)|0?(Tm(x,w,k,i,s,+f[u>>2]),(c[r>>2]|0)-(c[x>>2]|0)>>3>>>0<(c[b>>2]|0)>>>0):0)Cq(y);else C=20;do if((C|0)==20){C=0;Cq(y);Bq(y,31034);if(Sh(y)|0?(G=Im(d)|0,G=Um(m,G,zk(c[h>>2]|0)|0,w,10.0)|0,G>>>0<(c[b>>2]|0)>>>0):0){Cq(y);break}Cq(y);Bq(y,31051);if(Sh(y)|0){E=Nm(m)|0;F=Om(d)|0;G=Pm(d)|0;g=Om(c[h>>2]|0)|0;g=Qm(n,k,i,E,F,G,g,Pm(c[h>>2]|0)|0)|0;if((g|0)<0){Cq(y);break}}Cq(y);Bq(y,31068);if(Sh(y)|0)Rm(s,n,Nm(m)|0,g,1.0);Cq(y);Bq(y,31091);if(Sh(y)|0?(G=Om(c[h>>2]|0)|0,!(Sm(w,k,i,s,q,G,Pm(c[h>>2]|0)|0)|0)):0){Cq(y);break}Cq(y);c[r>>2]=c[x>>2];Bq(y,31115);if(Sh(y)|0)Tm(x,w,k,i,s,+f[u>>2]);Cq(y);G=(c[r>>2]|0)-(c[x>>2]|0)>>3;if(G>>>0>=(c[b>>2]|0)>>>0?G>>>0>(c[A>>2]|0)-(c[z>>2]|0)>>3>>>0:0){Vm(v,w);Wm(z,x);c[B>>2]=c[j+8>>2]}}while(0);Sj(x)}Sj(s)}while(0)}zb=D;return (c[B>>2]|0)>-1|0}function Im(a){a=a|0;return a+8|0}function Jm(a){a=a|0;return a+16|0}function Km(a){a=a|0;return a+36|0} +function Wu(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=c[e+468>>2]|0;p=e+280|0;if(c[p>>2]|0){q=v+56|0;g=c[q>>2]|0;if(!g){if(!(Gb[c[(c[e+464>>2]|0)+8>>2]&127](e)|0)){u=c[e>>2]|0;c[u+20>>2]=25;Sb[c[u>>2]&255](e)}h=e+340|0;if((c[h>>2]|0)>0){i=e+224|0;j=e+412|0;k=e+436|0;l=e+420|0;g=0;do{m=c[e+344+(g<<2)>>2]|0;if(c[i>>2]|0)if(!(c[j>>2]|0)){if(!(c[l>>2]|0))r=10}else r=13;else r=10;do if((r|0)==10){r=0;n=c[v+60+(c[m+20>>2]<<2)>>2]|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[v+24+(g<<2)>>2]=0;c[v+40+(g<<2)>>2]=0;if(!(c[i>>2]|0))if(!(c[k>>2]|0))break;else{r=13;break}else if(!(c[j>>2]|0))break;else{r=13;break}}while(0);if((r|0)==13){r=0;aP(c[v+124+(c[m+24>>2]<<2)>>2]|0,0,256)|0}g=g+1|0}while((g|0)<(c[h>>2]|0))}c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=-16;g=c[p>>2]|0;c[q>>2]=g}c[q>>2]=g+-1}u=v+20|0;if((c[u>>2]|0)==-1)return 1;p=c[e+432>>2]|0;q=e+368|0;if((c[q>>2]|0)<=0)return 1;r=e+436|0;s=v+188|0;o=0;a:while(1){t=c[f+(o<<2)>>2]|0;l=c[e+372+(o<<2)>>2]|0;n=c[e+344+(l<<2)>>2]|0;j=c[n+20>>2]|0;h=v+60+(j<<2)|0;k=v+40+(l<<2)|0;g=(c[h>>2]|0)+(c[k>>2]|0)|0;if(!(Xu(e,g)|0)){c[k>>2]=0;g=c[v+24+(l<<2)>>2]|0}else{m=Xu(e,g+1|0)|0;i=g+2+m|0;g=Xu(e,i)|0;if(g){h=(c[h>>2]|0)+20|0;if(!(Xu(e,h)|0))i=h;else while(1){g=g<<1;if((g|0)==32768){r=26;break a}h=h+1|0;if(!(Xu(e,h)|0)){i=h;break}}}else g=0;do if((g|0)>=(1<<(d[e+232+j>>0]|0)>>1|0)){h=m<<2;if((g|0)>(1<<(d[e+248+j>>0]|0)>>1|0)){h=h+12|0;break}else{h=h+4|0;break}}else h=0;while(0);c[k>>2]=h;i=i+14|0;h=g>>1;if(h)do{k=(Xu(e,i)|0)==0;g=(k?0:h)|g;h=h>>1}while((h|0)!=0);l=v+24+(l<<2)|0;g=(c[l>>2]|0)+((m|0)==0?g+1|0:~g)|0;c[l>>2]=g}b[t>>1]=g;b:do if(c[r>>2]|0){m=c[n+24>>2]|0;l=v+124+(m<<2)|0;m=e+264+m|0;g=0;while(1){h=(c[l>>2]|0)+(g*3|0)|0;if(Xu(e,h)|0)break b;j=g+1|0;if(!(Xu(e,h+1|0)|0)){i=h;g=j;while(1){if((g|0)>=(c[r>>2]|0)){r=42;break a}h=i+3|0;j=g+1|0;if(!(Xu(e,i+4|0)|0)){i=h;g=j}else break}}k=Xu(e,s)|0;h=h+2|0;i=Xu(e,h)|0;if(i){if(Xu(e,h)|0){i=i<<1;h=(c[l>>2]|0)+((g|0)<(d[m>>0]|0|0)?189:217)|0;if(!(Xu(e,h)|0))g=i;else{g=i;do{g=g<<1;if((g|0)==32768){r=49;break a}h=h+1|0}while((Xu(e,h)|0)!=0)}}else g=i;i=h+14|0;h=g>>1;if(h)do{n=(Xu(e,i)|0)==0;g=(n?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[t+(c[p+(j<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535;if((j|0)<(c[r>>2]|0))g=j;else break}}while(0);o=o+1|0;if((o|0)>=(c[q>>2]|0)){r=56;break}}if((r|0)==26){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==42){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==49){v=c[e>>2]|0;c[v+20>>2]=117;Ub[c[v+4>>2]&63](e,-1);c[u>>2]=-1;return 1}else if((r|0)==56)return 1;return 0}function Xu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b+468>>2]|0;m=g+16|0;f=c[m>>2]|0;k=g+20|0;if((f|0)<32768){h=b+440|0;j=b+24|0;i=g+12|0;f=c[k>>2]|0;while(1){g=f+-1|0;c[k>>2]=g;if((f|0)<1){if(!(c[h>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;l=a[l>>0]|0;f=l&255;a:do if(l<<24>>24==-1){b:while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Gb[c[f+12>>2]&127](b)|0)==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Sb[c[l>>2]&255](b)}c[g>>2]=(c[g>>2]|0)+-1;l=c[f>>2]|0;c[f>>2]=l+1;f=a[l>>0]|0;switch(f<<24>>24){case 0:{f=255;break a}case -1:break;default:break b}}c[h>>2]=f&255;f=0}while(0);g=c[k>>2]|0}else f=0;c[i>>2]=c[i>>2]<<8|f;f=g+8|0;c[k>>2]=f;if((g|0)<-8){f=g+9|0;c[k>>2]=f;if(!f){c[m>>2]=32768;g=0}else g=f}else g=f}f=c[m>>2]<<1;c[m>>2]=f;if((f|0)<32768)f=g;else break}}else{i=g+12|0;g=c[k>>2]|0}j=d[e>>0]|0;b=c[3360+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;h=f-l|0;c[m>>2]=h;f=h<>2]|0;if((g|0)>=(f|0)){c[i>>2]=g-f;c[m>>2]=l;f=j&128;if((h|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((h|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((h|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function Yu(a){a=a|0;var d=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;n=c[a+472>>2]|0;o=a+36|0;if((c[o>>2]|0)<=0)return;r=a+72|0;l=0;m=c[a+216>>2]|0;i=0;j=0;while(1){d=c[m+36>>2]|0;h=m+40|0;a:do switch((d<<8)+(c[h>>2]|0)|0){case 257:{d=0;k=13;break}case 514:{d=0;k=14;break}case 771:{d=0;k=15;break}case 1028:{d=0;k=16;break}case 1285:{d=0;k=17;break}case 1542:{d=0;k=18;break}case 1799:{d=0;k=19;break}case 2313:{d=0;k=20;break}case 2570:{d=0;k=21;break}case 2827:{d=0;k=22;break}case 3084:{d=0;k=23;break}case 3341:{d=0;k=24;break}case 3598:{d=0;k=25;break}case 3855:{d=0;k=26;break}case 4112:{d=0;k=27;break}case 4104:{d=0;k=28;break}case 3591:{d=0;k=29;break}case 3078:{d=0;k=30;break}case 2565:{d=0;k=31;break}case 2052:{d=0;k=32;break}case 1539:{d=0;k=33;break}case 1026:{d=0;k=34;break}case 513:{d=0;k=35;break}case 2064:{d=0;k=36;break}case 1806:{d=0;k=37;break}case 1548:{d=0;k=38;break}case 1290:{d=0;k=39;break}case 1032:{d=0;k=40;break}case 774:{d=0;k=41;break}case 516:{d=0;k=42;break}case 258:{d=0;k=43;break}case 2056:{d=c[r>>2]|0;switch(d|0){case 0:{k=44;break a}case 1:{k=45;break a}case 2:{k=46;break a}default:{d=c[a>>2]|0;c[d+20>>2]=49;Sb[c[d>>2]&255](a);d=i;k=j;break a}}}default:{k=c[a>>2]|0;c[k+20>>2]=7;c[k+24>>2]=d;c[(c[a>>2]|0)+28>>2]=c[h>>2];Sb[c[c[a>>2]>>2]&255](a);d=i;k=j}}while(0);c[n+4+(l<<2)>>2]=k;b:do if((c[m+52>>2]|0?(p=n+44+(l<<2)|0,(c[p>>2]|0)!=(d|0)):0)?(q=c[m+80>>2]|0,q|0):0){c[p>>2]=d;switch(d|0){case 0:{i=c[m+84>>2]|0;h=0;do{c[i+(h<<2)>>2]=e[q+(h<<1)>>1];h=h+1|0}while((h|0)!=64);break}case 1:{i=c[m+84>>2]|0;h=0;do{j=(B(b[5248+(h<<1)>>1]|0,e[q+(h<<1)>>1]|0)|0)+2048>>12;c[i+(h<<2)>>2]=j;h=h+1|0}while((h|0)!=64);break}case 2:{j=c[m+84>>2]|0;h=0;i=0;while(1){t=+g[5376+(h<<3)>>3];f[j+(i<<2)>>2]=t*+(e[q+(i<<1)>>1]|0)*.125;s=i|1;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.387039845*.125;s=s+1|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.306562965*.125;s=i|3;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*1.175875602*.125;u=s+1|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.125;u=s+2|0;f[j+(u<<2)>>2]=t*+(e[q+(u<<1)>>1]|0)*.785694958*.125;s=s+3|0;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.5411961*.125;s=i|7;f[j+(s<<2)>>2]=t*+(e[q+(s<<1)>>1]|0)*.275899379*.125;h=h+1|0;if((h|0)==8)break;else i=i+8|0}break}default:{u=c[a>>2]|0;c[u+20>>2]=49;Sb[c[u>>2]&255](a);break b}}}while(0);l=l+1|0;if((l|0)>=(c[o>>2]|0))break;else{m=m+88|0;i=d;j=k}}return}function Zu(d,e,g,h,i){d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=zb;zb=zb+256|0;j=q;o=c[d+336>>2]|0;n=j;m=c[e+84>>2]|0;l=8;while(1){e=b[g+16>>1]|0;d=b[g+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[g+48>>1]|0)==0?(b[g+64>>1]|0)==0:0)?(b[g+80>>1]|0)==0:0)?(b[g+96>>1]|0)==0:0)?(b[g+112>>1]|0)==0:0){k=+f[m>>2]*+(b[g>>1]|0);f[n>>2]=k;f[n+32>>2]=k;f[n+64>>2]=k;f[n+96>>2]=k;f[n+128>>2]=k;f[n+160>>2]=k;f[n+192>>2]=k;d=56}else{d=0;p=9}else p=9;if((p|0)==9){p=0;r=+f[m>>2]*+(b[g>>1]|0);x=+f[m+64>>2]*+(d<<16>>16);w=+f[m+128>>2]*+(b[g+64>>1]|0);t=+f[m+192>>2]*+(b[g+96>>1]|0);v=r+w;w=r-w;r=x+t;t=(x-t)*1.4142135381698608-r;x=v+r;r=v-r;v=w+t;t=w-t;w=+f[m+32>>2]*+(e<<16>>16);u=+f[m+96>>2]*+(b[g+48>>1]|0);z=+f[m+160>>2]*+(b[g+80>>1]|0);k=+f[m+224>>2]*+(b[g+112>>1]|0);s=u+z;u=z-u;z=w+k;k=w-k;w=s+z;y=(u+k)*1.8477590084075928;u=y-u*2.613126039505005-w;s=(z-s)*1.4142135381698608-u;k=y-k*1.0823922157287598-s;f[n>>2]=x+w;f[n+224>>2]=x-w;f[n+32>>2]=v+u;f[n+192>>2]=v-u;f[n+64>>2]=t+s;f[n+160>>2]=t-s;f[n+96>>2]=r+k;k=r-k;d=32}f[n+(d<<2)>>2]=k;if(l>>>0>1){n=n+4|0;m=m+4|0;g=g+2|0;l=l+-1|0}else break}e=o+-384|0;d=0;while(1){p=(c[h+(d<<2)>>2]|0)+i|0;s=+f[j>>2]+512.5;t=+f[j+16>>2];u=s+t;t=s-t;s=+f[j+8>>2];w=+f[j+24>>2];y=s+w;w=(s-w)*1.4142135381698608-y;s=u+y;y=u-y;u=t+w;w=t-w;t=+f[j+20>>2];v=+f[j+12>>2];x=t+v;v=t-v;t=+f[j+4>>2];z=+f[j+28>>2];k=t+z;z=t-z;t=x+k;r=(v+z)*1.8477590084075928;v=r-v*2.613126039505005-t;x=(k-x)*1.4142135381698608-v;z=r-z*1.0823922157287598-x;a[p>>0]=a[e+(~~(s+t)&1023)>>0]|0;a[p+7>>0]=a[e+(~~(s-t)&1023)>>0]|0;a[p+1>>0]=a[e+(~~(u+v)&1023)>>0]|0;a[p+6>>0]=a[e+(~~(u-v)&1023)>>0]|0;a[p+2>>0]=a[e+(~~(w+x)&1023)>>0]|0;a[p+5>>0]=a[e+(~~(w-x)&1023)>>0]|0;a[p+3>>0]=a[e+(~~(y+z)&1023)>>0]|0;a[p+4>>0]=a[e+(~~(y-z)&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else j=j+32|0}zb=q;return}function _u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(c[j>>2]|0,b[f>>1]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;p=B(c[j>>2]|0,b[f>>1]|0)|0;u=B(c[j+64>>2]|0,d<<16>>16)|0;t=B(c[j+128>>2]|0,b[f+64>>1]|0)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;s=t+p|0;t=p-t|0;p=q+u|0;q=((u-q|0)*362>>8)-p|0;u=p+s|0;p=s-p|0;s=q+t|0;q=t-q|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;w=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;e=w+r|0;r=w-r|0;w=d+t|0;d=t-d|0;t=w+e|0;v=(d+r|0)*473>>8;r=v-(r*669>>8)-t|0;e=((w-e|0)*362>>8)-r|0;d=v-(d*277>>8)-e|0;c[k>>2]=t+u;c[k+224>>2]=u-t;c[k+32>>2]=r+s;c[k+192>>2]=s-r;c[k+64>>2]=e+q;c[k+160>>2]=q-e;c[k+96>>2]=d+p;d=p-d|0;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){w=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=w;aP(f+1|0,w|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;w=c[e+16>>2]|0;r=w+i|0;w=i-w|0;t=c[e+24>>2]|0;v=t+d|0;t=((d-t|0)*362>>8)-v|0;p=v+r|0;v=r-v|0;r=t+w|0;t=w-t|0;w=c[e+20>>2]|0;s=c[e+12>>2]|0;u=s+w|0;s=w-s|0;w=c[e+28>>2]|0;i=w+j|0;w=j-w|0;q=i+u|0;m=(w+s|0)*473>>8;s=m-(s*669>>8)-q|0;u=((i-u|0)*362>>8)-s|0;w=m-(w*277>>8)-u|0;a[f>>0]=a[l+((q+p|0)>>>5&1023)>>0]|0;a[f+7>>0]=a[l+((p-q|0)>>>5&1023)>>0]|0;a[f+1>>0]=a[l+((s+r|0)>>>5&1023)>>0]|0;a[f+6>>0]=a[l+((r-s|0)>>>5&1023)>>0]|0;a[f+2>>0]=a[l+((u+t|0)>>>5&1023)>>0]|0;a[f+5>>0]=a[l+((t-u|0)>>>5&1023)>>0]|0;a[f+3>>0]=a[l+((w+v|0)>>>5&1023)>>0]|0;a[f+4>>0]=a[l+((v-w|0)>>>5&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function $u(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;f=B(c[i+32>>2]|0,b[f+16>>1]|0)|0;a[(c[g>>2]|0)+h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+32|0;j=i;d=c[d+336>>2]|0;k=c[e+84>>2]|0;n=B(c[k>>2]|0,b[f>>1]|0)|0;q=B(c[k+64>>2]|0,b[f+32>>1]|0)|0;e=q+n<<13;q=n-q<<13;n=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;l=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;p=(l+n|0)*4433|0;n=p+(n*6270|0)|0;l=p+(B(l,-15137)|0)|0;p=n+e|0;c[j>>2]=p;c[j+24>>2]=e-n;n=l+q|0;c[j+8>>2]=n;l=q-l|0;c[j+16>>2]=l;q=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[k+68>>2]|0,b[f+34>>1]|0)|0;m=e+q<<13;e=q-e<<13;q=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;k=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;o=(k+q|0)*4433|0;f=o+(q*6270|0)|0;k=o+(B(k,-15137)|0)|0;o=f+m|0;c[j+4>>2]=o;f=m-f|0;c[j+28>>2]=f;m=k+e|0;c[j+12>>2]=m;k=e-k|0;c[j+20>>2]=k;e=d+-384|0;d=(c[g>>2]|0)+h|0;p=p+33587200|0;a[d>>0]=a[e+((p+o|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;n=n+33587200|0;a[d>>0]=a[e+((n+m|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=l+33587200|0;a[d>>0]=a[e+((l+k|0)>>>16&1023)>>0]|0;a[d+1>>0]=a[e+((l-k|0)>>>16&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;g=(c[j+24>>2]|0)+33587200|0;a[h>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g-f|0)>>>16&1023)>>0]|0;zb=i;return}function bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=zb;zb=zb+80|0;j=i;m=c[d+336>>2]|0;k=c[e+84>>2]|0;t=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;q=B((b[f+64>>1]|0)*5793|0,c[k+128>>2]|0)|0;r=q+t|0;t=(B(q,-2)|0)+t>>11;q=B((b[f+32>>1]|0)*10033|0,c[k+64>>2]|0)|0;l=q+r|0;q=r-q|0;r=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;s=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;e=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;n=(e+r|0)*2998|0;d=n+(s+r<<13)|0;n=n+(e-s<<13)|0;e=r-s-e<<2;c[j>>2]=d+l>>11;c[j+60>>2]=l-d>>11;d=j+12|0;c[d>>2]=e+t;c[j+48>>2]=t-e;c[j+24>>2]=n+q>>11;c[j+36>>2]=q-n>>11;n=j+4|0;q=B(b[f+2>>1]<<13,c[k+4>>2]|0)|0|1024;e=B((b[f+66>>1]|0)*5793|0,c[k+132>>2]|0)|0;t=e+q|0;q=(B(e,-2)|0)+q>>11;e=B((b[f+34>>1]|0)*10033|0,c[k+68>>2]|0)|0;l=e+t|0;e=t-e|0;t=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;s=B(c[k+100>>2]|0,b[f+50>>1]|0)|0;r=B(c[k+164>>2]|0,b[f+82>>1]|0)|0;o=(r+t|0)*2998|0;p=o+(s+t<<13)|0;o=o+(r-s<<13)|0;r=t-s-r<<2;c[n>>2]=p+l>>11;c[j+64>>2]=l-p>>11;c[j+16>>2]=r+q;c[j+52>>2]=q-r;c[j+28>>2]=o+e>>11;c[j+40>>2]=e-o>>11;o=B(b[f+4>>1]<<13,c[k+8>>2]|0)|0|1024;e=B((b[f+68>>1]|0)*5793|0,c[k+136>>2]|0)|0;r=e+o|0;o=(B(e,-2)|0)+o>>11;e=B((b[f+36>>1]|0)*10033|0,c[k+72>>2]|0)|0;q=e+r|0;e=r-e|0;r=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;p=B(c[k+104>>2]|0,b[f+52>>1]|0)|0;k=B(c[k+168>>2]|0,b[f+84>>1]|0)|0;f=(k+r|0)*2998|0;l=f+(p+r<<13)|0;f=f+(k-p<<13)|0;k=r-p-k<<2;p=l+q>>11;c[j+8>>2]=p;c[j+68>>2]=q-l>>11;l=k+o|0;c[j+20>>2]=l;c[j+56>>2]=o-k;k=f+e>>11;c[j+32>>2]=k;c[j+44>>2]=e-f>>11;f=m+-384|0;e=(c[g>>2]|0)+h|0;m=(c[j>>2]<<13)+134348800|0;o=m+(p*5793|0)|0;m=(B(p,-11586)|0)+m|0;n=(c[n>>2]|0)*10033|0;a[e>>0]=a[f+((o+n|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(m>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;d=(c[d>>2]<<13)+134348800|0;m=d+(l*5793|0)|0;d=(B(l,-11586)|0)+d|0;l=(c[j+16>>2]|0)*10033|0;a[e>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;d=(c[j+24>>2]<<13)+134348800|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+28>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;d=(c[j+36>>2]<<13)+134348800|0;k=c[j+44>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+40>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+16>>2]|0)+h|0;d=(c[j+48>>2]<<13)+134348800|0;k=c[j+56>>2]|0;l=d+(k*5793|0)|0;d=(B(k,-11586)|0)+d|0;k=(c[j+52>>2]|0)*10033|0;a[e>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+((l-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+(d>>>18&1023)>>0]|0;h=(c[g+20>>2]|0)+h|0;g=(c[j+60>>2]<<13)+134348800|0;e=c[j+68>>2]|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+64>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+128|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=4;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+16>>2]=d;c[k+32>>2]=d;c[k+48>>2]=d;c[k+64>>2]=d;c[k+80>>2]=d;c[k+96>>2]=d;e=28}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+112>>2]=u-t>>11;c[k+16>>2]=r+s>>11;c[k+96>>2]=s-r>>11;c[k+32>>2]=e+q>>11;c[k+80>>2]=q-e>>11;c[k+48>>2]=d+p>>11;d=p-d>>11;e=16}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}u=l+-384|0;x=(c[g>>2]|0)+h|0;s=(c[m>>2]|0)+16400|0;v=c[m+8>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+4>>2]|0;t=c[m+12>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+4>>2]|0)+h|0;t=(c[m+16>>2]|0)+16400|0;v=c[m+24>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+20>>2]|0;w=c[m+28>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+8>>2]|0)+h|0;w=(c[m+32>>2]|0)+16400|0;v=c[m+40>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+36>>2]|0;s=c[m+44>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+12>>2]|0)+h|0;s=(c[m+48>>2]|0)+16400|0;v=c[m+56>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+52>>2]|0;t=c[m+60>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+16>>2]|0)+h|0;t=(c[m+64>>2]|0)+16400|0;v=c[m+72>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+68>>2]|0;w=c[m+76>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;x=(c[g+20>>2]|0)+h|0;w=(c[m+80>>2]|0)+16400|0;v=c[m+88>>2]|0;t=w+v<<13;v=w-v<<13;w=c[m+84>>2]|0;s=c[m+92>>2]|0;r=(s+w|0)*4433|0;w=r+(w*6270|0)|0;s=r+(B(s,-15137)|0)|0;a[x>>0]=a[u+((w+t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((t-w|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((s+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-s|0)>>>18&1023)>>0]|0;x=(c[g+24>>2]|0)+h|0;s=(c[m+96>>2]|0)+16400|0;v=c[m+104>>2]|0;w=s+v<<13;v=s-v<<13;s=c[m+100>>2]|0;t=c[m+108>>2]|0;r=(t+s|0)*4433|0;s=r+(s*6270|0)|0;t=r+(B(t,-15137)|0)|0;a[x>>0]=a[u+((s+w|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((w-s|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((t+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-t|0)>>>18&1023)>>0]|0;x=(c[g+28>>2]|0)+h|0;t=(c[m+112>>2]|0)+16400|0;v=c[m+120>>2]|0;s=t+v<<13;v=t-v<<13;t=c[m+116>>2]|0;w=c[m+124>>2]|0;r=(w+t|0)*4433|0;t=r+(t*6270|0)|0;w=r+(B(w,-15137)|0)|0;a[x>>0]=a[u+((t+s|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[u+((s-t|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[u+((w+v|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[u+((v-w|0)>>>18&1023)>>0]|0;zb=o;return}function dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+180>>2]=v-u>>11;c[k+20>>2]=s+t>>11;c[k+160>>2]=t-s>>11;c[k+40>>2]=q+r;c[k+140>>2]=r-q;c[k+60>>2]=o+p>>11;c[k+120>>2]=p-o>>11;c[k+80>>2]=f+n>>11;c[k+100>>2]=n-f>>11;e=e+1|0;if((e|0)==5)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;v=c[i+16>>2]|0;w=(v+x|0)*6476|0;v=x-v|0;x=(v*2896|0)+y|0;u=x+w|0;w=x-w|0;y=(B(v,-11584)|0)+y|0;v=c[i+4>>2]|0;x=c[i+12>>2]|0;t=(x+v|0)*6810|0;v=t+(v*4209|0)|0;x=t+(B(x,-17828)|0)|0;a[z>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+(y>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+20|0}zb=m;return}function ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+264>>2]=x-w>>11;c[k+24>>2]=u+v>>11;c[k+240>>2]=v-u>>11;c[k+48>>2]=s+t>>11;c[k+216>>2]=t-s>>11;c[k+72>>2]=q+r>>11;c[k+192>>2]=r-q>>11;c[k+96>>2]=o+p>>11;c[k+168>>2]=p-o>>11;c[k+120>>2]=f+n>>11;c[k+144>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*5793|0;t=z+x|0;x=z-x-x|0;z=(c[i+8>>2]|0)*10033|0;v=t+z|0;z=t-z|0;t=c[i+4>>2]|0;u=c[i+12>>2]|0;y=c[i+20>>2]|0;A=(y+t|0)*2998|0;w=A+(u+t<<13)|0;A=A+(y-u<<13)|0;y=t-u-y<<13;a[C>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+24|0}zb=m;return}function fv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+400|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+364>>2]=z-y>>11;c[k+28>>2]=w+x>>11;c[k+336>>2]=x-w>>11;c[k+56>>2]=u+v>>11;c[k+308>>2]=v-u>>11;c[k+84>>2]=s+t;c[k+280>>2]=t-s;c[k+112>>2]=q+r>>11;c[k+252>>2]=r-q>>11;c[k+140>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+168>>2]=f+n>>11;c[k+196>>2]=n-f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;t=c[i+8>>2]|0;C=c[i+16>>2]|0;v=c[i+24>>2]|0;u=(C-v|0)*7223|0;A=(t-C|0)*2578|0;x=(B(C,-15083)|0)+E+A+u|0;D=v+t|0;z=(D*10438|0)+E|0;v=u+(B(v,-637)|0)+z|0;z=A+(B(t,-20239)|0)+z|0;t=c[i+4>>2]|0;A=c[i+12>>2]|0;u=c[i+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=B(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[F>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((((C-D|0)*11585|0)+E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+28|0}zb=m;return}function gv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;H=(c[i>>2]|0)+16400|0;I=c[i+16>>2]|0;D=H+I<<13;I=H-I<<13;H=c[i+8>>2]|0;F=c[i+24>>2]|0;A=(F+H|0)*4433|0;H=A+(H*6270|0)|0;F=A+(B(F,-15137)|0)|0;A=H+D|0;H=D-H|0;D=F+I|0;F=I-F|0;I=c[i+28>>2]|0;x=c[i+20>>2]|0;z=c[i+12>>2]|0;C=c[i+4>>2]|0;E=z+I|0;G=C+x|0;y=(G+E|0)*9633|0;E=y+(B(E,-16069)|0)|0;G=y+(B(G,-3196)|0)|0;y=B(C+I|0,-7373)|0;I=y+(I*2446|0)+E|0;C=y+(C*12299|0)+G|0;y=B(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;E=y+(z*25172|0)+E|0;a[J>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function hv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;d=(c[d+336>>2]|0)+-384|0;i=c[e+84>>2]|0;h=(c[g>>2]|0)+h|0;e=(B(c[i>>2]|0,b[f>>1]|0)|0)+4100|0;g=B(c[i+4>>2]|0,b[f+2>>1]|0)|0;a[h>>0]=a[d+((g+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-g|0)>>>3&1023)>>0]|0;return}function iv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+32|0;r=i;p=c[d+336>>2]|0;k=c[e+84>>2]|0;d=B(c[k>>2]|0,b[f>>1]|0)|0;e=B(c[k+32>>2]|0,b[f+16>>1]|0)|0;q=e+d|0;c[r>>2]=q;j=r+16|0;c[j>>2]=d-e;e=B(c[k+4>>2]|0,b[f+2>>1]|0)|0;d=B(c[k+36>>2]|0,b[f+18>>1]|0)|0;o=d+e|0;c[r+4>>2]=o;d=e-d|0;c[r+20>>2]=d;e=B(c[k+8>>2]|0,b[f+4>>1]|0)|0;l=B(c[k+40>>2]|0,b[f+20>>1]|0)|0;n=l+e|0;c[r+8>>2]=n;l=e-l|0;c[r+24>>2]=l;e=B(c[k+12>>2]|0,b[f+6>>1]|0)|0;k=B(c[k+44>>2]|0,b[f+22>>1]|0)|0;m=k+e|0;c[r+12>>2]=m;k=e-k|0;c[r+28>>2]=k;e=p+-384|0;f=(c[g>>2]|0)+h|0;q=q+4100|0;p=q+n<<13;n=q-n<<13;q=(m+o|0)*4433|0;o=q+(o*6270|0)|0;m=q+(B(m,-15137)|0)|0;a[f>>0]=a[e+((o+p|0)>>>16&1023)>>0]|0;a[f+3>>0]=a[e+((p-o|0)>>>16&1023)>>0]|0;a[f+1>>0]=a[e+((m+n|0)>>>16&1023)>>0]|0;a[f+2>>0]=a[e+((n-m|0)>>>16&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;f=(c[j>>2]|0)+4100|0;j=f+l<<13;f=f-l<<13;g=(k+d|0)*4433|0;d=g+(d*6270|0)|0;g=g+(B(k,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>16&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>16&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>16&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>16&1023)>>0]|0;zb=i;return}function jv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=zb;zb=zb+80|0;k=i;q=c[d+336>>2]|0;e=c[e+84>>2]|0;s=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;n=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;l=n+s|0;s=(B(n,-2)|0)+s|0;n=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;c[k>>2]=n+l>>11;c[k+48>>2]=l-n>>11;n=k+24|0;c[n>>2]=s>>11;s=k+4|0;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;r=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;c[s>>2]=r+p>>11;c[k+52>>2]=p-r>>11;c[k+28>>2]=l>>11;l=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;r=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;c[k+8>>2]=r+p>>11;c[k+56>>2]=p-r>>11;c[k+32>>2]=l>>11;l=B(b[f+6>>1]<<13,c[e+12>>2]|0)|0|1024;r=B((b[f+38>>1]|0)*5793|0,c[e+76>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+22>>1]|0)*10033|0,c[e+44>>2]|0)|0;c[k+12>>2]=r+p>>11;c[k+60>>2]=p-r>>11;c[k+36>>2]=l>>11;l=B(b[f+8>>1]<<13,c[e+16>>2]|0)|0|1024;r=B((b[f+40>>1]|0)*5793|0,c[e+80>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;r=B((b[f+24>>1]|0)*10033|0,c[e+48>>2]|0)|0;c[k+16>>2]=r+p>>11;c[k+64>>2]=p-r>>11;c[k+40>>2]=l>>11;l=B(b[f+10>>1]<<13,c[e+20>>2]|0)|0|1024;r=B((b[f+42>>1]|0)*5793|0,c[e+84>>2]|0)|0;p=r+l|0;l=(B(r,-2)|0)+l|0;e=B((b[f+26>>1]|0)*10033|0,c[e+52>>2]|0)|0;c[k+20>>2]=e+p>>11;c[k+68>>2]=p-e>>11;l=l>>11;c[k+44>>2]=l;e=q+-384|0;f=(c[g>>2]|0)+h|0;q=(c[k>>2]<<13)+134348800|0;p=(c[k+16>>2]|0)*5793|0;r=q+p|0;p=q-p-p|0;q=(c[k+8>>2]|0)*10033|0;d=r+q|0;q=r-q|0;s=c[s>>2]|0;r=c[k+12>>2]|0;o=c[k+20>>2]|0;m=(o+s|0)*2998|0;j=m+(r+s<<13)|0;m=m+(o-r<<13)|0;o=s-r-o<<13;a[f>>0]=a[e+((j+d|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((d-j|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((o+p|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((p-o|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((m+q|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((q-m|0)>>>18&1023)>>0]|0;f=(c[g+4>>2]|0)+h|0;n=(c[n>>2]<<13)+134348800|0;m=(c[k+40>>2]|0)*5793|0;q=n+m|0;m=n-m-m|0;n=(c[k+32>>2]|0)*10033|0;o=q+n|0;n=q-n|0;q=c[k+28>>2]|0;p=c[k+36>>2]|0;j=(l+q|0)*2998|0;d=j+(p+q<<13)|0;j=j+(l-p<<13)|0;l=q-p-l<<13;a[f>>0]=a[e+((d+o|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[e+((o-d|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[e+((j+n|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[e+((n-j|0)>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;f=(c[k+48>>2]<<13)+134348800|0;j=(c[k+64>>2]|0)*5793|0;n=f+j|0;j=f-j-j|0;f=(c[k+56>>2]|0)*10033|0;l=n+f|0;f=n-f|0;n=c[k+52>>2]|0;m=c[k+60>>2]|0;d=c[k+68>>2]|0;g=(d+n|0)*2998|0;k=g+(m+n<<13)|0;g=g+(d-m<<13)|0;d=n-m-d<<13;a[h>>0]=a[e+((k+l|0)>>>18&1023)>>0]|0;a[h+5>>0]=a[e+((l-k|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function kv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=zb;zb=zb+128|0;j=i;d=c[d+336>>2]|0;m=c[e+84>>2]|0;l=B(c[m>>2]|0,b[f>>1]|0)|0;e=B(c[m+64>>2]|0,b[f+32>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+32>>2]|0,b[f+16>>1]|0)|0;k=B(c[m+96>>2]|0,b[f+48>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j>>2]=l+n;c[j+96>>2]=n-l;c[j+32>>2]=k+e;c[j+64>>2]=e-k;k=B(c[m+4>>2]|0,b[f+2>>1]|0)|0;e=B(c[m+68>>2]|0,b[f+34>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+36>>2]|0,b[f+18>>1]|0)|0;n=B(c[m+100>>2]|0,b[f+50>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+4>>2]=k+l;c[j+100>>2]=l-k;c[j+36>>2]=n+e;c[j+68>>2]=e-n;n=B(c[m+8>>2]|0,b[f+4>>1]|0)|0;e=B(c[m+72>>2]|0,b[f+36>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[m+104>>2]|0,b[f+52>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+8>>2]=n+k;c[j+104>>2]=k-n;c[j+40>>2]=l+e;c[j+72>>2]=e-l;l=B(c[m+12>>2]|0,b[f+6>>1]|0)|0;e=B(c[m+76>>2]|0,b[f+38>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+44>>2]|0,b[f+22>>1]|0)|0;k=B(c[m+108>>2]|0,b[f+54>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+12>>2]=l+n;c[j+108>>2]=n-l;c[j+44>>2]=k+e;c[j+76>>2]=e-k;k=B(c[m+16>>2]|0,b[f+8>>1]|0)|0;e=B(c[m+80>>2]|0,b[f+40>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+48>>2]|0,b[f+24>>1]|0)|0;n=B(c[m+112>>2]|0,b[f+56>>1]|0)|0;o=((n+k|0)*4433|0)+1024|0;k=o+(k*6270|0)>>11;n=o+(B(n,-15137)|0)>>11;c[j+16>>2]=k+l;c[j+112>>2]=l-k;c[j+48>>2]=n+e;c[j+80>>2]=e-n;n=B(c[m+20>>2]|0,b[f+10>>1]|0)|0;e=B(c[m+84>>2]|0,b[f+42>>1]|0)|0;k=e+n<<2;e=n-e<<2;n=B(c[m+52>>2]|0,b[f+26>>1]|0)|0;l=B(c[m+116>>2]|0,b[f+58>>1]|0)|0;o=((l+n|0)*4433|0)+1024|0;n=o+(n*6270|0)>>11;l=o+(B(l,-15137)|0)>>11;c[j+20>>2]=n+k;c[j+116>>2]=k-n;c[j+52>>2]=l+e;c[j+84>>2]=e-l;l=B(c[m+24>>2]|0,b[f+12>>1]|0)|0;e=B(c[m+88>>2]|0,b[f+44>>1]|0)|0;n=e+l<<2;e=l-e<<2;l=B(c[m+56>>2]|0,b[f+28>>1]|0)|0;k=B(c[m+120>>2]|0,b[f+60>>1]|0)|0;o=((k+l|0)*4433|0)+1024|0;l=o+(l*6270|0)>>11;k=o+(B(k,-15137)|0)>>11;c[j+24>>2]=l+n;c[j+120>>2]=n-l;c[j+56>>2]=k+e;c[j+88>>2]=e-k;k=B(c[m+28>>2]|0,b[f+14>>1]|0)|0;e=B(c[m+92>>2]|0,b[f+46>>1]|0)|0;l=e+k<<2;e=k-e<<2;k=B(c[m+60>>2]|0,b[f+30>>1]|0)|0;f=B(c[m+124>>2]|0,b[f+62>>1]|0)|0;m=((f+k|0)*4433|0)+1024|0;k=m+(k*6270|0)>>11;f=m+(B(f,-15137)|0)>>11;c[j+28>>2]=k+l;c[j+124>>2]=l-k;c[j+60>>2]=f+e;c[j+92>>2]=e-f;f=d+-384|0;d=j;e=0;while(1){o=(c[g+(e<<2)>>2]|0)+h|0;m=(c[d>>2]|0)+16400|0;n=c[d+16>>2]|0;p=m+n<<13;n=m-n<<13;m=c[d+8>>2]|0;k=c[d+24>>2]|0;r=(k+m|0)*4433|0;m=r+(m*6270|0)|0;k=r+(B(k,-15137)|0)|0;r=m+p|0;m=p-m|0;p=k+n|0;k=n-k|0;n=c[d+28>>2]|0;u=c[d+20>>2]|0;s=c[d+12>>2]|0;q=c[d+4>>2]|0;j=s+n|0;l=q+u|0;t=(l+j|0)*9633|0;j=t+(B(j,-16069)|0)|0;l=t+(B(l,-3196)|0)|0;t=B(q+n|0,-7373)|0;n=t+(n*2446|0)+j|0;q=t+(q*12299|0)+l|0;t=B(s+u|0,-20995)|0;l=t+(u*16819|0)+l|0;j=t+(s*25172|0)+j|0;a[o>>0]=a[f+((q+r|0)>>>18&1023)>>0]|0;a[o+7>>0]=a[f+((r-q|0)>>>18&1023)>>0]|0;a[o+1>>0]=a[f+((j+p|0)>>>18&1023)>>0]|0;a[o+6>>0]=a[f+((p-j|0)>>>18&1023)>>0]|0;a[o+2>>0]=a[f+((l+k|0)>>>18&1023)>>0]|0;a[o+5>>0]=a[f+((k-l|0)>>>18&1023)>>0]|0;a[o+3>>0]=a[f+((n+m|0)>>>18&1023)>>0]|0;a[o+4>>0]=a[f+((m-n|0)>>>18&1023)>>0]|0;e=e+1|0;if((e|0)==4)break;else d=d+32|0}zb=i;return}function lv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=zb;zb=zb+160|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=(p+n|0)*6476|0;p=n-p|0;n=(p*2896|0)+f|0;q=n+o|0;o=n-o|0;f=(B(p,-11584)|0)+f|0;p=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;n=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;r=(n+p|0)*6810|0;p=r+(p*4209|0)|0;n=r+(B(n,-17828)|0)|0;c[k>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+32>>2]=n+o>>11;c[k+96>>2]=o-n>>11;c[k+64>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){r=(c[g+(d<<2)>>2]|0)+h|0;p=(c[i>>2]<<13)+134348800|0;k=c[i+16>>2]|0;j=p+(k*9373|0)|0;u=p+(B(k,-3580)|0)|0;k=p+(B(k,-11586)|0)|0;p=c[i+8>>2]|0;n=c[i+24>>2]|0;t=(n+p|0)*6810|0;p=t+(p*4209|0)|0;n=t+(B(n,-17828)|0)|0;t=p+j|0;p=j-p|0;j=n+u|0;n=u-n|0;u=c[i+4>>2]|0;v=c[i+12>>2]|0;l=c[i+20>>2]<<13;f=c[i+28>>2]|0;o=f+v|0;f=v-f|0;v=f*2531|0;w=o*7791|0;q=v+l|0;s=w+(u*11443|0)+q|0;q=(u*1812|0)-w+q|0;o=o*4815|0;v=l-v-(f<<12)|0;l=(u-f<<13)-l|0;f=(u*10323|0)-o-v|0;o=v+((u*5260|0)-o)|0;a[r>>0]=a[e+((s+t|0)>>>18&1023)>>0]|0;a[r+9>>0]=a[e+((t-s|0)>>>18&1023)>>0]|0;a[r+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[r+8>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[r+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[r+7>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[r+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[r+6>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[r+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[r+5>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==5)break;else i=i+32|0}zb=m;return}function mv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+192|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+160>>2]=r-q>>11;c[k+32>>2]=o+p;c[k+128>>2]=p-o;c[k+64>>2]=f+n>>11;c[k+96>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;x=(c[i+16>>2]|0)*10033|0;w=r+x|0;x=r-x|0;k=c[i+8>>2]|0;n=c[i+24>>2]<<13;p=(k<<13)-n|0;j=p+r|0;p=r-p|0;r=n+(k*11190|0)|0;v=r+w|0;r=w-r|0;n=(k*2998|0)-n|0;k=n+x|0;n=x-n|0;x=c[i+4>>2]|0;w=c[i+12>>2]|0;q=c[i+20>>2]|0;f=c[i+28>>2]|0;z=w*10703|0;y=B(w,-4433)|0;l=q+x|0;s=(l+f|0)*7053|0;l=s+(l*2139|0)|0;u=z+(x*2295|0)+l|0;o=B(f+q|0,-8565)|0;l=(B(q,-12112)|0)+y+o+l|0;o=(f*12998|0)-z+s+o|0;s=y+(B(x,-5540)|0)+(B(f,-16244)|0)+s|0;f=x-f|0;q=w-q|0;w=(f+q|0)*4433|0;f=w+(f*6270|0)|0;q=w+(B(q,-15137)|0)|0;a[t>>0]=a[e+((u+v|0)>>>18&1023)>>0]|0;a[t+11>>0]=a[e+((v-u|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[t+10>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[t+9>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+8>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+7>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+6>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+32|0}zb=m;return}function nv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+224|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+192>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+160>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+128>>2]=q-p>>11;c[k+96>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=c[i+16>>2]|0;k=r+(p*10438|0)|0;n=r+(p*2578|0)|0;w=r+(B(p,-7223)|0)|0;p=r+(B(p,-11586)|0)|0;r=c[i+8>>2]|0;j=c[i+24>>2]|0;t=(j+r|0)*9058|0;v=t+(r*2237|0)|0;t=t+(B(j,-14084)|0)|0;r=(B(j,-11295)|0)+(r*5027|0)|0;j=v+k|0;v=k-v|0;k=t+n|0;t=n-t|0;n=r+w|0;r=w-r|0;w=c[i+4>>2]|0;A=c[i+12>>2]|0;y=c[i+20>>2]|0;q=c[i+28>>2]<<13;s=y+w|0;l=(A+w|0)*10935|0;C=s*9810|0;f=l+(B(w,-9232)|0)+C+q|0;s=s*6164|0;z=w-A|0;u=(z*3826|0)-q|0;w=s+(B(w,-8693)|0)+u|0;o=(B(y+A|0,-1297)|0)-q|0;l=l+(B(A,-3474)|0)+o|0;o=C+(B(y,-19447)|0)+o|0;C=(y-A|0)*11512|0;s=q+(B(y,-13850)|0)+C+s|0;u=C+(A*5529|0)+u|0;q=(z-y<<13)+q|0;a[x>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+32|0}zb=m;return}function ov(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;o=zb;zb=zb+256|0;i=o;m=c[d+336>>2]|0;l=i;k=c[e+84>>2]|0;j=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[k>>2]|0)|0;c[l>>2]=d;c[l+32>>2]=d;c[l+64>>2]=d;c[l+96>>2]=d;c[l+128>>2]=d;c[l+160>>2]=d;c[l+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[k+128>>2]|0)|0;p=B(b[f>>1]<<13,c[k>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[k+64>>2]|0,d<<16>>16)|0;q=B(c[k+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[k+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[k+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[k+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[k+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[l>>2]=t+u>>11;c[l+224>>2]=u-t>>11;c[l+32>>2]=r+s>>11;c[l+192>>2]=s-r>>11;c[l+64>>2]=e+q>>11;c[l+160>>2]=q-e>>11;c[l+96>>2]=d+p>>11;d=p-d>>11;e=32}c[l+(e<<2)>>2]=d;if(j>>>0>1){l=l+4|0;k=k+4|0;f=f+2|0;j=j+-1|0}else break}e=m+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;m=c[i+16>>2]|0;w=m*10703|0;m=m*4433|0;f=r+w|0;w=r-w|0;k=r+m|0;m=r-m|0;r=c[i+8>>2]|0;p=c[i+24>>2]|0;u=r-p|0;z=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=z+(r*7373|0)|0;r=u+(B(r,-4926)|0)|0;p=z+(B(p,-4176)|0)|0;z=v+f|0;v=f-v|0;f=t+k|0;t=k-t|0;k=r+m|0;r=m-r|0;m=p+w|0;p=w-p|0;w=c[i+4>>2]|0;u=c[i+12>>2]|0;C=c[i+20>>2]|0;E=c[i+28>>2]|0;A=C+w|0;j=(u+w|0)*11086|0;l=A*10217|0;s=(E+w|0)*8956|0;q=(w-E|0)*7350|0;A=A*5461|0;n=(w-u|0)*3363|0;y=j+(B(w,-18730)|0)+l+s|0;w=n+(B(w,-15038)|0)+A+q|0;H=(C+u|0)*1136|0;D=(C-u|0)*11529|0;F=E+u|0;G=B(F,-5461)|0;j=j+(u*589|0)+H+G|0;F=B(F,-10217)|0;u=n+(u*16154|0)+D+F|0;n=B(E+C|0,-11086)|0;l=H+(B(C,-9222)|0)+l+n|0;n=G+(E*8728|0)+s+n|0;s=(E-C|0)*3363|0;q=F+(E*25733|0)+q+s|0;s=D+(B(C,-6278)|0)+A+s|0;a[x>>0]=a[e+((y+z|0)>>>18&1023)>>0]|0;a[x+15>>0]=a[e+((z-y|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[x+14>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((l+k|0)>>>18&1023)>>0]|0;a[x+13>>0]=a[e+((k-l|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((n+m|0)>>>18&1023)>>0]|0;a[x+12>>0]=a[e+((m-n|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[x+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[x+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[x+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[x+7>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[x+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==8)break;else i=i+32|0}zb=o;return}function pv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;m=zb;zb=zb+512|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;v=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=v*10703|0;v=v*4433|0;z=f+r|0;f=r-f|0;x=v+r|0;v=r-v|0;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;o=r-t|0;C=o*2260|0;o=o*11363|0;n=o+(t*20995|0)|0;p=C+(r*7373|0)|0;r=o+(B(r,-4926)|0)|0;t=C+(B(t,-4176)|0)|0;C=n+z|0;n=z-n|0;z=p+x|0;p=x-p|0;x=r+v|0;r=v-r|0;v=t+f|0;t=f-t|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;o=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;G=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;D=E+f|0;y=(o+f|0)*11086|0;w=D*10217|0;q=(G+f|0)*8956|0;s=(f-G|0)*7350|0;D=D*5461|0;u=(f-o|0)*3363|0;A=y+(B(f,-18730)|0)+w+q|0;f=u+(B(f,-15038)|0)+D+s|0;J=(E+o|0)*1136|0;F=(E-o|0)*11529|0;H=G+o|0;I=B(H,-5461)|0;y=y+(o*589|0)+J+I|0;H=B(H,-10217)|0;o=u+(o*16154|0)+F+H|0;u=B(G+E|0,-11086)|0;w=J+(B(E,-9222)|0)+w+u|0;u=I+(G*8728|0)+q+u|0;q=(G-E|0)*3363|0;s=H+(G*25733|0)+s+q|0;q=F+(B(E,-6278)|0)+D+q|0;c[k>>2]=A+C>>11;c[k+480>>2]=C-A>>11;c[k+32>>2]=y+z>>11;c[k+448>>2]=z-y>>11;c[k+64>>2]=w+x>>11;c[k+416>>2]=x-w>>11;c[k+96>>2]=u+v>>11;c[k+384>>2]=v-u>>11;c[k+128>>2]=s+t>>11;c[k+352>>2]=t-s>>11;c[k+160>>2]=q+r>>11;c[k+320>>2]=r-q>>11;c[k+192>>2]=o+p>>11;c[k+288>>2]=p-o>>11;c[k+224>>2]=f+n>>11;c[k+256>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){J=(c[g+(d<<2)>>2]|0)+h|0;D=(c[i>>2]<<13)+134348800|0;y=c[i+16>>2]|0;I=y*10703|0;y=y*4433|0;u=D+I|0;I=D-I|0;w=D+y|0;y=D-y|0;D=c[i+8>>2]|0;A=c[i+24>>2]|0;G=D-A|0;s=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;F=s+(D*7373|0)|0;D=G+(B(D,-4926)|0)|0;A=s+(B(A,-4176)|0)|0;s=H+u|0;H=u-H|0;u=F+w|0;F=w-F|0;w=D+y|0;D=y-D|0;y=A+I|0;A=I-A|0;I=c[i+4>>2]|0;G=c[i+12>>2]|0;q=c[i+20>>2]|0;o=c[i+28>>2]|0;r=q+I|0;v=(G+I|0)*11086|0;x=r*10217|0;E=(o+I|0)*8956|0;C=(I-o|0)*7350|0;r=r*5461|0;z=(I-G|0)*3363|0;t=v+(B(I,-18730)|0)+x+E|0;I=z+(B(I,-15038)|0)+r+C|0;k=(q+G|0)*1136|0;p=(q-G|0)*11529|0;n=o+G|0;l=B(n,-5461)|0;v=v+(G*589|0)+k+l|0;n=B(n,-10217)|0;G=z+(G*16154|0)+p+n|0;z=B(o+q|0,-11086)|0;x=k+(B(q,-9222)|0)+x+z|0;z=l+(o*8728|0)+E+z|0;E=(o-q|0)*3363|0;C=n+(o*25733|0)+C+E|0;E=p+(B(q,-6278)|0)+r+E|0;a[J>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[J+15>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[J+1>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[J+14>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[J+2>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[J+13>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[J+3>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[J+12>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[J+4>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[J+11>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[J+5>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[J+10>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;a[J+6>>0]=a[e+((G+F|0)>>>18&1023)>>0]|0;a[J+9>>0]=a[e+((F-G|0)>>>18&1023)>>0]|0;a[J+7>>0]=a[e+((I+H|0)>>>18&1023)>>0]|0;a[J+8>>0]=a[e+((H-I|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==16)break;else i=i+32|0}zb=m;return}function qv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+480|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;s=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;w=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;y=(B(t,-3580)|0)+f|0;D=(t*9373|0)+f|0;f=(B(t,-11586)|0)+f|0;t=s-w|0;w=w+s|0;E=w*10958|0;u=t*374|0;s=s*11795|0;A=u+E+D|0;u=s-E+u+y|0;E=w*4482|0;o=B(t,-3271)|0;q=D-E+o|0;o=E-s+o+y|0;w=w*6476|0;s=t*2896|0;y=s+w+y|0;s=D-w+s|0;w=f+(t*5792|0)|0;f=(B(t,-11584)|0)+f|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;E=B((b[d+80>>1]|0)*10033|0,c[j+160>>2]|0)|0;C=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;r=D-C|0;F=(r+t|0)*6810|0;x=F+(t*4209|0)|0;r=F+(B(r,-17828)|0)|0;F=B(D,-6810)|0;D=B(D,-11018)|0;v=t-C|0;n=(v*11522|0)+E|0;z=(C*20131|0)-D+n|0;n=F+(B(t,-9113)|0)+n|0;v=(v*10033|0)-E|0;p=(C+t|0)*4712|0;t=F+(t*3897|0)-E+p|0;p=E+D+(B(C,-7121)|0)+p|0;c[k>>2]=z+A>>11;c[k+448>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+416>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+384>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+352>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+320>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+288>>2]=q-p>>11;c[k+192>>2]=n+o>>11;c[k+256>>2]=o-n>>11;c[k+224>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;E=(c[i>>2]<<13)+134348800|0;x=c[i+8>>2]|0;t=c[i+16>>2]|0;w=c[i+24>>2]|0;r=(B(w,-3580)|0)+E|0;n=(w*9373|0)+E|0;E=(B(w,-11586)|0)+E|0;w=x-t|0;t=t+x|0;l=t*10958|0;v=w*374|0;x=x*11795|0;p=v+l+n|0;v=x-l+v+r|0;l=t*4482|0;C=B(w,-3271)|0;z=n-l+C|0;C=l-x+C+r|0;t=t*6476|0;x=w*2896|0;r=x+t+r|0;x=n-t+x|0;t=E+(w*5792|0)|0;E=(B(w,-11584)|0)+E|0;w=c[i+4>>2]|0;n=c[i+12>>2]|0;l=(c[i+20>>2]|0)*10033|0;o=c[i+28>>2]|0;y=n-o|0;k=(y+w|0)*6810|0;s=k+(w*4209|0)|0;y=k+(B(y,-17828)|0)|0;k=B(n,-6810)|0;n=B(n,-11018)|0;u=w-o|0;D=(u*11522|0)+l|0;q=(o*20131|0)-n+D|0;D=k+(B(w,-9113)|0)+D|0;u=(u*10033|0)-l|0;A=(o+w|0)*4712|0;w=k+(w*3897|0)-l+A|0;A=l+n+(B(o,-7121)|0)+A|0;a[F>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[F+14>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+(E>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==15)break;else i=i+32|0}zb=m;return}function rv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=zb;zb=zb+448|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){t=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;r=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;x=(r*10438|0)+t|0;v=(r*2578|0)+t|0;f=(B(r,-7223)|0)+t|0;t=(B(r,-11586)|0)+t>>11;r=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;p=(z+r|0)*9058|0;n=p+(r*2237|0)|0;p=p+(B(z,-14084)|0)|0;r=(B(z,-11295)|0)+(r*5027|0)|0;z=n+x|0;n=x-n|0;x=p+v|0;p=v-p|0;v=r+f|0;r=f-r|0;f=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;D=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;A=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;s=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;q=s<<13;F=A+f|0;w=(D+f|0)*10935|0;E=F*9810|0;y=w+(B(f,-9232)|0)+E+q|0;F=F*6164|0;C=f-D|0;o=(C*3826|0)-q|0;f=F+(B(f,-8693)|0)+o|0;u=(B(A+D|0,-1297)|0)-q|0;w=w+(B(D,-3474)|0)+u|0;u=E+(B(A,-19447)|0)+u|0;E=(A-D|0)*11512|0;q=E+(B(A,-13850)|0)+F+q|0;o=E+(D*5529|0)+o|0;s=C-A+s<<2;c[k>>2]=y+z>>11;c[k+416>>2]=z-y>>11;c[k+32>>2]=w+x>>11;c[k+384>>2]=x-w>>11;c[k+64>>2]=u+v>>11;c[k+352>>2]=v-u>>11;c[k+96>>2]=s+t;c[k+320>>2]=t-s;c[k+128>>2]=q+r>>11;c[k+288>>2]=r-q>>11;c[k+160>>2]=o+p>>11;c[k+256>>2]=p-o>>11;c[k+192>>2]=f+n>>11;c[k+224>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){F=(c[g+(d<<2)>>2]|0)+h|0;y=(c[i>>2]<<13)+134348800|0;w=c[i+16>>2]|0;s=y+(w*10438|0)|0;u=y+(w*2578|0)|0;E=y+(B(w,-7223)|0)|0;w=y+(B(w,-11586)|0)|0;y=c[i+8>>2]|0;q=c[i+24>>2]|0;A=(q+y|0)*9058|0;D=A+(y*2237|0)|0;A=A+(B(q,-14084)|0)|0;y=(B(q,-11295)|0)+(y*5027|0)|0;q=D+s|0;D=s-D|0;s=A+u|0;A=u-A|0;u=y+E|0;y=E-y|0;E=c[i+4>>2]|0;n=c[i+12>>2]|0;p=c[i+20>>2]|0;x=c[i+28>>2]<<13;z=p+E|0;t=(n+E|0)*10935|0;l=z*9810|0;r=t+(B(E,-9232)|0)+l+x|0;z=z*6164|0;o=E-n|0;C=(o*3826|0)-x|0;E=z+(B(E,-8693)|0)+C|0;v=(B(p+n|0,-1297)|0)-x|0;t=t+(B(n,-3474)|0)+v|0;v=l+(B(p,-19447)|0)+v|0;l=(p-n|0)*11512|0;z=x+(B(p,-13850)|0)+l+z|0;C=l+(n*5529|0)+C|0;x=(o-p<<13)+x|0;a[F>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[F+13>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[F+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[F+12>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[F+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[F+11>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[F+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[F+10>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[F+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[F+9>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[F+5>>0]=a[e+((C+A|0)>>>18&1023)>>0]|0;a[F+8>>0]=a[e+((A-C|0)>>>18&1023)>>0]|0;a[F+6>>0]=a[e+((E+D|0)>>>18&1023)>>0]|0;a[F+7>>0]=a[e+((D-E|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==14)break;else i=i+32|0}zb=m;return}function sv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;m=zb;zb=zb+416|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;s=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;o=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;E=o+s|0;o=s-o|0;s=E*9465|0;w=(o*793|0)+f|0;A=s+(n*11249|0)+w|0;w=(n*4108|0)-s+w|0;s=E*2592|0;q=(o*3989|0)+f|0;y=(n*8672|0)-s+q|0;q=s+(B(n,-10258)|0)+q|0;E=E*3570|0;s=f+(B(o,-7678)|0)|0;u=(B(n,-1396)|0)-E+s|0;s=E+(B(n,-6581)|0)+s|0;E=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;r=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;C=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;p=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=(r+E|0)*10832|0;v=(C+E|0)*9534|0;D=p+E|0;F=D*7682|0;z=x+(B(E,-16549)|0)+v+F|0;H=B(C+r|0,-2773)|0;G=B(p+r|0,-9534)|0;x=x+(r*6859|0)+H+G|0;t=B(p+C|0,-5384)|0;v=H+(B(C,-12879)|0)+v+t|0;t=G+(p*18068|0)+F+t|0;D=(D*2773|0)+((C-r|0)*7682|0)|0;r=D+(E*2611|0)+(B(r,-3818)|0)|0;p=D+(C*3150|0)+(B(p,-14273)|0)|0;c[k>>2]=z+A>>11;c[k+384>>2]=A-z>>11;c[k+32>>2]=x+y>>11;c[k+352>>2]=y-x>>11;c[k+64>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+96>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+128>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+160>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+192>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){H=(c[g+(d<<2)>>2]|0)+h|0;G=(c[i>>2]<<13)+134348800|0;F=c[i+8>>2]|0;z=c[i+16>>2]|0;E=c[i+24>>2]|0;o=E+z|0;E=z-E|0;z=o*9465|0;v=(E*793|0)+G|0;r=z+(F*11249|0)+v|0;v=(F*4108|0)-z+v|0;z=o*2592|0;C=(E*3989|0)+G|0;t=(F*8672|0)-z+C|0;C=z+(B(F,-10258)|0)+C|0;o=o*3570|0;z=G+(B(E,-7678)|0)|0;x=(B(F,-1396)|0)-o+z|0;z=o+(B(F,-6581)|0)+z|0;o=c[i+4>>2]|0;A=c[i+12>>2]|0;q=c[i+20>>2]|0;D=c[i+28>>2]|0;u=(A+o|0)*10832|0;w=(q+o|0)*9534|0;p=D+o|0;n=p*7682|0;s=u+(B(o,-16549)|0)+w+n|0;k=B(q+A|0,-2773)|0;l=B(D+A|0,-9534)|0;u=u+(A*6859|0)+k+l|0;y=B(D+q|0,-5384)|0;w=k+(B(q,-12879)|0)+w+y|0;y=l+(D*18068|0)+n+y|0;p=(p*2773|0)+((q-A|0)*7682|0)|0;A=p+(o*2611|0)+(B(A,-3818)|0)|0;D=p+(q*3150|0)+(B(D,-14273)|0)|0;a[H>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[H+12>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[H+1>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[H+11>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[H+2>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[H+10>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[H+3>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[H+9>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[H+4>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[H+8>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;a[H+5>>0]=a[e+((D+C|0)>>>18&1023)>>0]|0;a[H+7>>0]=a[e+((C-D|0)>>>18&1023)>>0]|0;a[H+6>>0]=a[e+((((E-F|0)*11585|0)+G|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==13)break;else i=i+32|0}zb=m;return}function tv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+384|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){n=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;z=B((b[d+64>>1]|0)*10033|0,c[j+128>>2]|0)|0;y=z+n|0;z=n-z|0;t=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;r=B(b[d+96>>1]<<13,c[j+192>>2]|0)|0;p=(t<<13)-r|0;v=p+n|0;p=n-p|0;n=r+(t*11190|0)|0;x=n+y|0;n=y-n|0;r=(t*2998|0)-r|0;t=r+z|0;r=z-r|0;z=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;u=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y*10703|0;A=B(y,-4433)|0;s=o+z|0;f=(u+s|0)*7053|0;s=f+(s*2139|0)|0;w=C+(z*2295|0)+s|0;q=B(u+o|0,-8565)|0;s=(B(o,-12112)|0)+A+q+s|0;q=(u*12998|0)-C+f+q|0;f=A+(B(z,-5540)|0)+(B(u,-16244)|0)+f|0;u=z-u|0;o=y-o|0;y=(u+o|0)*4433|0;u=y+(u*6270|0)|0;o=y+(B(o,-15137)|0)|0;c[k>>2]=w+x>>11;c[k+352>>2]=x-w>>11;c[k+32>>2]=u+v>>11;c[k+320>>2]=v-u>>11;c[k+64>>2]=s+t>>11;c[k+288>>2]=t-s>>11;c[k+96>>2]=q+r>>11;c[k+256>>2]=r-q>>11;c[k+128>>2]=o+p>>11;c[k+224>>2]=p-o>>11;c[k+160>>2]=f+n>>11;c[k+192>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;z=(c[i>>2]<<13)+134348800|0;n=(c[i+16>>2]|0)*10033|0;o=z+n|0;n=z-n|0;t=c[i+8>>2]|0;v=c[i+24>>2]<<13;x=(t<<13)-v|0;r=x+z|0;x=z-x|0;z=v+(t*11190|0)|0;p=z+o|0;z=o-z|0;v=(t*2998|0)-v|0;t=v+n|0;v=n-v|0;n=c[i+4>>2]|0;o=c[i+12>>2]|0;y=c[i+20>>2]|0;s=c[i+28>>2]|0;k=o*10703|0;l=B(o,-4433)|0;u=y+n|0;A=(u+s|0)*7053|0;u=A+(u*2139|0)|0;q=k+(n*2295|0)+u|0;w=B(s+y|0,-8565)|0;u=(B(y,-12112)|0)+l+w+u|0;w=(s*12998|0)-k+A+w|0;A=l+(B(n,-5540)|0)+(B(s,-16244)|0)+A|0;s=n-s|0;y=o-y|0;o=(s+y|0)*4433|0;s=o+(s*6270|0)|0;y=o+(B(y,-15137)|0)|0;a[C>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[C+11>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+((A+z|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((z-A|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==12)break;else i=i+32|0}zb=m;return}function uv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;m=zb;zb=zb+352|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;y=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;z=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;s=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;q=(z-y|0)*3529|0;o=s+y|0;v=o-z|0;x=(v*11116|0)+f|0;w=x+((z-s|0)*20862|0)|0;u=w+(B(z,-14924)|0)+q|0;w=w+(s*17333|0)|0;q=x+q+(B(y,-12399)|0)|0;o=x+(B(o,-9467)|0)|0;s=o+(B(s,-6461)|0)|0;o=(z*15929|0)+(B(y,-11395)|0)+o|0;f=(B(v,-11585)|0)+f|0;v=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;y=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;z=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;C=y+v|0;n=(z+C+x|0)*3264|0;C=C*7274|0;r=(z+v|0)*5492|0;p=n+((x+v|0)*3e3|0)|0;v=C+(B(v,-7562)|0)+r+p|0;t=n+(B(z+y|0,-9527)|0)|0;r=r+(B(z,-9766)|0)+t|0;A=B(x+y|0,-14731)|0;t=C+(y*16984|0)+A+t|0;p=A+(x*17223|0)+p|0;n=(z*8203|0)+(B(y,-12019)|0)+(B(x,-13802)|0)+n|0;c[k>>2]=v+w>>11;c[k+320>>2]=w-v>>11;c[k+32>>2]=t+u>>11;c[k+288>>2]=u-t>>11;c[k+64>>2]=r+s>>11;c[k+256>>2]=s-r>>11;c[k+96>>2]=p+q>>11;c[k+224>>2]=q-p>>11;c[k+128>>2]=n+o>>11;c[k+192>>2]=o-n>>11;c[k+160>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){C=(c[g+(d<<2)>>2]|0)+h|0;A=(c[i>>2]<<13)+134348800|0;o=c[i+8>>2]|0;n=c[i+16>>2]|0;u=c[i+24>>2]|0;w=(n-o|0)*3529|0;y=u+o|0;r=y-n|0;p=(r*11116|0)+A|0;q=p+((n-u|0)*20862|0)|0;s=q+(B(n,-14924)|0)+w|0;q=q+(u*17333|0)|0;w=p+w+(B(o,-12399)|0)|0;y=p+(B(y,-9467)|0)|0;u=y+(B(u,-6461)|0)|0;y=(n*15929|0)+(B(o,-11395)|0)+y|0;A=(B(r,-11585)|0)+A|0;r=c[i+4>>2]|0;o=c[i+12>>2]|0;n=c[i+20>>2]|0;p=c[i+28>>2]|0;k=o+r|0;z=(k+n+p|0)*3264|0;k=k*7274|0;v=(n+r|0)*5492|0;x=z+((p+r|0)*3e3|0)|0;r=k+(B(r,-7562)|0)+v+x|0;t=z+(B(n+o|0,-9527)|0)|0;v=v+(B(n,-9766)|0)+t|0;l=B(p+o|0,-14731)|0;t=k+(o*16984|0)+l+t|0;x=l+(p*17223|0)+x|0;z=(n*8203|0)+(B(o,-12019)|0)+(B(p,-13802)|0)+z|0;a[C>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[C+10>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[C+1>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[C+9>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[C+2>>0]=a[e+((v+u|0)>>>18&1023)>>0]|0;a[C+8>>0]=a[e+((u-v|0)>>>18&1023)>>0]|0;a[C+3>>0]=a[e+((x+w|0)>>>18&1023)>>0]|0;a[C+7>>0]=a[e+((w-x|0)>>>18&1023)>>0]|0;a[C+4>>0]=a[e+((z+y|0)>>>18&1023)>>0]|0;a[C+6>>0]=a[e+((y-z|0)>>>18&1023)>>0]|0;a[C+5>>0]=a[e+(A>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==11)break;else i=i+32|0}zb=m;return}function vv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=zb;zb=zb+320|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){r=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;t=(n*9373|0)+r|0;w=(B(n,-3580)|0)+r|0;r=(B(n,-11586)|0)+r>>11;n=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;p=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(p+n|0)*6810|0;n=v+(n*4209|0)|0;p=v+(B(p,-17828)|0)|0;v=n+t|0;n=t-n|0;t=p+w|0;p=w-p|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;x=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;s=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;q=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;o=q+x|0;q=x-q|0;x=q*2531|0;y=s<<13;z=o*7791|0;f=x+y|0;u=z+(w*11443|0)+f|0;f=(w*1812|0)-z+f|0;o=o*4815|0;x=y-x-(q<<12)|0;q=w-s-q<<2;s=(w*10323|0)-o-x|0;o=x+((w*5260|0)-o)|0;c[k>>2]=u+v>>11;c[k+288>>2]=v-u>>11;c[k+32>>2]=s+t>>11;c[k+256>>2]=t-s>>11;c[k+64>>2]=q+r;c[k+224>>2]=r-q;c[k+96>>2]=o+p>>11;c[k+192>>2]=p-o>>11;c[k+128>>2]=f+n>>11;c[k+160>>2]=n-f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){z=(c[g+(d<<2)>>2]|0)+h|0;x=(c[i>>2]<<13)+134348800|0;t=c[i+16>>2]|0;r=x+(t*9373|0)|0;o=x+(B(t,-3580)|0)|0;t=x+(B(t,-11586)|0)|0;x=c[i+8>>2]|0;v=c[i+24>>2]|0;p=(v+x|0)*6810|0;x=p+(x*4209|0)|0;v=p+(B(v,-17828)|0)|0;p=x+r|0;x=r-x|0;r=v+o|0;v=o-v|0;o=c[i+4>>2]|0;n=c[i+12>>2]|0;u=c[i+20>>2]<<13;s=c[i+28>>2]|0;w=s+n|0;s=n-s|0;n=s*2531|0;l=w*7791|0;y=n+u|0;q=l+(o*11443|0)+y|0;y=(o*1812|0)-l+y|0;w=w*4815|0;n=u-n-(s<<12)|0;u=(o-s<<13)-u|0;s=(o*10323|0)-w-n|0;w=n+((o*5260|0)-w)|0;a[z>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[z+9>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[z+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[z+8>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[z+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[z+7>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[z+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[z+6>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[z+4>>0]=a[e+((y+x|0)>>>18&1023)>>0]|0;a[z+5>>0]=a[e+((x-y|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==10)break;else i=i+32|0}zb=m;return}function wv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=zb;zb=zb+288|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){q=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;f=B((b[d+96>>1]|0)*5793|0,c[j+192>>2]|0)|0;v=f+q|0;f=q-f-f|0;q=w-o|0;s=f+(q*5793|0)|0;f=(B(q,-11586)|0)+f|0;q=(o+w|0)*10887|0;w=w*8875|0;o=o*2012|0;u=q-o+v|0;q=v-q+w|0;o=v-w+o|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;r=B(c[j+224>>2]|0,b[d+112>>1]|0)|0;x=B(B(b[d+48>>1]|0,-10033)|0,c[j+96>>2]|0)|0;p=(v+w|0)*7447|0;n=(r+w|0)*3962|0;t=p-x+n|0;y=(v-r|0)*11409|0;p=x-y+p|0;n=y+x+n|0;r=(w-v-r|0)*10033|0;c[k>>2]=t+u>>11;c[k+256>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+224>>2]=s-r>>11;c[k+64>>2]=p+q>>11;c[k+192>>2]=q-p>>11;c[k+96>>2]=n+o>>11;c[k+160>>2]=o-n>>11;c[k+128>>2]=f>>11;e=e+1|0;if((e|0)==8)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){y=(c[g+(d<<2)>>2]|0)+h|0;t=(c[i>>2]<<13)+134348800|0;n=c[i+8>>2]|0;v=c[i+16>>2]|0;x=(c[i+24>>2]|0)*5793|0;o=x+t|0;x=t-x-x|0;t=n-v|0;r=x+(t*5793|0)|0;x=(B(t,-11586)|0)+x|0;t=(v+n|0)*10887|0;n=n*8875|0;v=v*2012|0;p=t-v+o|0;t=o-t+n|0;v=o-n+v|0;n=c[i+4>>2]|0;o=c[i+20>>2]|0;s=c[i+28>>2]|0;l=B(c[i+12>>2]|0,-10033)|0;u=(o+n|0)*7447|0;w=(s+n|0)*3962|0;q=u-l+w|0;k=(o-s|0)*11409|0;u=l-k+u|0;w=k+l+w|0;s=(n-o-s|0)*10033|0;a[y>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[y+8>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[y+1>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[y+7>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;a[y+2>>0]=a[e+((u+t|0)>>>18&1023)>>0]|0;a[y+6>>0]=a[e+((t-u|0)>>>18&1023)>>0]|0;a[y+3>>0]=a[e+((w+v|0)>>>18&1023)>>0]|0;a[y+5>>0]=a[e+((v-w|0)>>>18&1023)>>0]|0;a[y+4>>0]=a[e+(x>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==9)break;else i=i+32|0}zb=m;return}function xv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=zb;zb=zb+208|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){f=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;w=B(c[j+64>>2]|0,b[d+32>>1]|0)|0;o=B(c[j+128>>2]|0,b[d+64>>1]|0)|0;u=B(c[j+192>>2]|0,b[d+96>>1]|0)|0;v=(o-u|0)*7223|0;p=(w-o|0)*2578|0;s=(B(o,-15083)|0)+f+p+v|0;n=u+w|0;q=(n*10438|0)+f|0;u=v+(B(u,-637)|0)+q|0;q=p+(B(w,-20239)|0)+q|0;w=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;p=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;v=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;x=(p+w|0)*7663|0;t=(w-p|0)*1395|0;p=B(v+p|0,-11295)|0;r=x+t+p|0;w=(v+w|0)*5027|0;t=w+(x-t)|0;p=w+(v*15326|0)+p|0;c[k>>2]=t+u>>11;c[k+168>>2]=u-t>>11;c[k+28>>2]=r+s>>11;c[k+140>>2]=s-r>>11;c[k+56>>2]=p+q>>11;c[k+112>>2]=q-p>>11;c[k+84>>2]=((o-n|0)*11585|0)+f>>11;e=e+1|0;if((e|0)==7)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){x=(c[g+(d<<2)>>2]|0)+h|0;w=(c[i>>2]<<13)+134348800|0;l=c[i+8>>2]|0;u=c[i+16>>2]|0;o=c[i+24>>2]|0;n=(u-o|0)*7223|0;t=(l-u|0)*2578|0;q=(B(u,-15083)|0)+w+t+n|0;v=o+l|0;s=(v*10438|0)+w|0;o=n+(B(o,-637)|0)+s|0;s=t+(B(l,-20239)|0)+s|0;l=c[i+4>>2]|0;t=c[i+12>>2]|0;n=c[i+20>>2]|0;k=(t+l|0)*7663|0;p=(l-t|0)*1395|0;t=B(n+t|0,-11295)|0;r=k+p+t|0;l=(n+l|0)*5027|0;p=k-p+l|0;t=l+(n*15326|0)+t|0;a[x>>0]=a[e+((p+o|0)>>>18&1023)>>0]|0;a[x+6>>0]=a[e+((o-p|0)>>>18&1023)>>0]|0;a[x+1>>0]=a[e+((r+q|0)>>>18&1023)>>0]|0;a[x+5>>0]=a[e+((q-r|0)>>>18&1023)>>0]|0;a[x+2>>0]=a[e+((t+s|0)>>>18&1023)>>0]|0;a[x+4>>0]=a[e+((s-t|0)>>>18&1023)>>0]|0;a[x+3>>0]=a[e+((((u-v|0)*11585|0)+w|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==7)break;else i=i+28|0}zb=m;return}function yv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=zb;zb=zb+144|0;i=m;l=c[d+336>>2]|0;k=i;j=c[e+84>>2]|0;d=f;e=0;while(1){p=B(b[d>>1]<<13,c[j>>2]|0)|0|1024;n=B((b[d+64>>1]|0)*5793|0,c[j+128>>2]|0)|0;t=n+p|0;p=(B(n,-2)|0)+p>>11;n=B((b[d+32>>1]|0)*10033|0,c[j+64>>2]|0)|0;r=n+t|0;n=t-n|0;t=B(c[j+32>>2]|0,b[d+16>>1]|0)|0;s=B(c[j+96>>2]|0,b[d+48>>1]|0)|0;o=B(c[j+160>>2]|0,b[d+80>>1]|0)|0;f=(o+t|0)*2998|0;q=f+(s+t<<13)|0;f=f+(o-s<<13)|0;o=t-s-o<<2;c[k>>2]=q+r>>11;c[k+120>>2]=r-q>>11;c[k+24>>2]=o+p;c[k+96>>2]=p-o;c[k+48>>2]=f+n>>11;c[k+72>>2]=n-f>>11;e=e+1|0;if((e|0)==6)break;else{k=k+4|0;j=j+4|0;d=d+2|0}}e=l+-384|0;d=0;while(1){t=(c[g+(d<<2)>>2]|0)+h|0;r=(c[i>>2]<<13)+134348800|0;p=(c[i+16>>2]|0)*5793|0;k=r+p|0;p=r-p-p|0;r=(c[i+8>>2]|0)*10033|0;n=k+r|0;r=k-r|0;k=c[i+4>>2]|0;l=c[i+12>>2]|0;q=c[i+20>>2]|0;s=(q+k|0)*2998|0;o=s+(l+k<<13)|0;s=s+(q-l<<13)|0;q=k-l-q<<13;a[t>>0]=a[e+((o+n|0)>>>18&1023)>>0]|0;a[t+5>>0]=a[e+((n-o|0)>>>18&1023)>>0]|0;a[t+1>>0]=a[e+((q+p|0)>>>18&1023)>>0]|0;a[t+4>>0]=a[e+((p-q|0)>>>18&1023)>>0]|0;a[t+2>>0]=a[e+((s+r|0)>>>18&1023)>>0]|0;a[t+3>>0]=a[e+((r-s|0)>>>18&1023)>>0]|0;d=d+1|0;if((d|0)==6)break;else i=i+24|0}zb=m;return}function zv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=zb;zb=zb+112|0;l=i;d=c[d+336>>2]|0;o=c[e+84>>2]|0;n=B(b[f>>1]<<13,c[o>>2]|0)|0|1024;e=B(c[o+64>>2]|0,b[f+32>>1]|0)|0;j=B(c[o+128>>2]|0,b[f+64>>1]|0)|0;q=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+n|0;p=e+q|0;q=e-q|0;n=(B(j,-11584)|0)+n|0;j=B(c[o+32>>2]|0,b[f+16>>1]|0)|0;e=B(c[o+96>>2]|0,b[f+48>>1]|0)|0;m=(e+j|0)*6810|0;j=m+(j*4209|0)|0;e=m+(B(e,-17828)|0)|0;c[l>>2]=j+p>>11;c[l+80>>2]=p-j>>11;j=l+20|0;c[j>>2]=e+q>>11;c[l+60>>2]=q-e>>11;c[l+40>>2]=n>>11;n=l+4|0;e=B(b[f+2>>1]<<13,c[o+4>>2]|0)|0|1024;q=B(c[o+68>>2]|0,b[f+34>>1]|0)|0;p=B(c[o+132>>2]|0,b[f+66>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[o+100>>2]|0,b[f+50>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[n>>2]=p+k>>11;c[l+84>>2]=k-p>>11;c[l+24>>2]=q+m>>11;c[l+64>>2]=m-q>>11;c[l+44>>2]=e>>11;e=B(b[f+4>>1]<<13,c[o+8>>2]|0)|0|1024;q=B(c[o+72>>2]|0,b[f+36>>1]|0)|0;m=B(c[o+136>>2]|0,b[f+68>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+40>>2]|0,b[f+20>>1]|0)|0;q=B(c[o+104>>2]|0,b[f+52>>1]|0)|0;r=(q+m|0)*6810|0;m=r+(m*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+8>>2]=m+k>>11;c[l+88>>2]=k-m>>11;c[l+28>>2]=q+p>>11;c[l+68>>2]=p-q>>11;c[l+48>>2]=e>>11;e=B(b[f+6>>1]<<13,c[o+12>>2]|0)|0|1024;q=B(c[o+76>>2]|0,b[f+38>>1]|0)|0;p=B(c[o+140>>2]|0,b[f+70>>1]|0)|0;m=(p+q|0)*6476|0;p=q-p|0;q=(p*2896|0)+e|0;k=q+m|0;m=q-m|0;e=(B(p,-11584)|0)+e|0;p=B(c[o+44>>2]|0,b[f+22>>1]|0)|0;q=B(c[o+108>>2]|0,b[f+54>>1]|0)|0;r=(q+p|0)*6810|0;p=r+(p*4209|0)|0;q=r+(B(q,-17828)|0)|0;c[l+12>>2]=p+k>>11;c[l+92>>2]=k-p>>11;c[l+32>>2]=q+m>>11;c[l+72>>2]=m-q>>11;c[l+52>>2]=e>>11;e=B(b[f+8>>1]<<13,c[o+16>>2]|0)|0|1024;q=B(c[o+80>>2]|0,b[f+40>>1]|0)|0;m=B(c[o+144>>2]|0,b[f+72>>1]|0)|0;p=(m+q|0)*6476|0;m=q-m|0;q=(m*2896|0)+e|0;k=q+p|0;p=q-p|0;e=(B(m,-11584)|0)+e|0;m=B(c[o+48>>2]|0,b[f+24>>1]|0)|0;f=B(c[o+112>>2]|0,b[f+56>>1]|0)|0;o=(f+m|0)*6810|0;m=o+(m*4209|0)|0;f=o+(B(f,-17828)|0)|0;c[l+16>>2]=m+k>>11;c[l+96>>2]=k-m>>11;c[l+36>>2]=f+p>>11;c[l+76>>2]=p-f>>11;c[l+56>>2]=e>>11;f=d+-384|0;e=(c[g>>2]|0)+h|0;d=(c[l>>2]<<13)+134348800|0;p=c[l+8>>2]|0;m=c[l+16>>2]|0;k=(m+p|0)*6476|0;m=p-m|0;p=(m*2896|0)+d|0;o=p+k|0;k=p-k|0;d=(B(m,-11584)|0)+d|0;n=c[n>>2]|0;m=c[l+12>>2]|0;p=(m+n|0)*6810|0;n=p+(n*4209|0)|0;m=p+(B(m,-17828)|0)|0;a[e>>0]=a[f+((n+o|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((o-n|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((m+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-m|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(d>>>18&1023)>>0]|0;e=(c[g+4>>2]|0)+h|0;j=(c[j>>2]<<13)+134348800|0;d=c[l+28>>2]|0;m=c[l+36>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+24>>2]|0;d=c[l+32>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+8>>2]|0)+h|0;j=(c[l+40>>2]<<13)+134348800|0;d=c[l+48>>2]|0;k=c[l+56>>2]|0;m=(k+d|0)*6476|0;k=d-k|0;d=(k*2896|0)+j|0;n=d+m|0;m=d-m|0;j=(B(k,-11584)|0)+j|0;k=c[l+44>>2]|0;d=c[l+52>>2]|0;o=(d+k|0)*6810|0;k=o+(k*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((k+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-k|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+m|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((m-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;e=(c[g+12>>2]|0)+h|0;j=(c[l+60>>2]<<13)+134348800|0;d=c[l+68>>2]|0;m=c[l+76>>2]|0;k=(m+d|0)*6476|0;m=d-m|0;d=(m*2896|0)+j|0;n=d+k|0;k=d-k|0;j=(B(m,-11584)|0)+j|0;m=c[l+64>>2]|0;d=c[l+72>>2]|0;o=(d+m|0)*6810|0;m=o+(m*4209|0)|0;d=o+(B(d,-17828)|0)|0;a[e>>0]=a[f+((m+n|0)>>>18&1023)>>0]|0;a[e+4>>0]=a[f+((n-m|0)>>>18&1023)>>0]|0;a[e+1>>0]=a[f+((d+k|0)>>>18&1023)>>0]|0;a[e+3>>0]=a[f+((k-d|0)>>>18&1023)>>0]|0;a[e+2>>0]=a[f+(j>>>18&1023)>>0]|0;h=(c[g+16>>2]|0)+h|0;g=(c[l+80>>2]<<13)+134348800|0;e=c[l+88>>2]|0;j=c[l+96>>2]|0;d=(j+e|0)*6476|0;j=e-j|0;e=(j*2896|0)+g|0;k=e+d|0;d=e-d|0;g=(B(j,-11584)|0)+g|0;j=c[l+84>>2]|0;e=c[l+92>>2]|0;l=(e+j|0)*6810|0;j=l+(j*4209|0)|0;e=l+(B(e,-17828)|0)|0;a[h>>0]=a[f+((j+k|0)>>>18&1023)>>0]|0;a[h+4>>0]=a[f+((k-j|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+((e+d|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Av(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+64|0;k=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;m=B(c[e>>2]|0,b[f>>1]|0)|0;j=B(c[e+64>>2]|0,b[f+32>>1]|0)|0;o=j+m<<2;j=m-j<<2;m=B(c[e+32>>2]|0,b[f+16>>1]|0)|0;n=B(c[e+96>>2]|0,b[f+48>>1]|0)|0;l=((n+m|0)*4433|0)+1024|0;m=l+(m*6270|0)>>11;n=l+(B(n,-15137)|0)>>11;c[k>>2]=m+o;c[k+48>>2]=o-m;m=k+16|0;c[m>>2]=n+j;c[k+32>>2]=j-n;n=k+4|0;j=B(c[e+4>>2]|0,b[f+2>>1]|0)|0;o=B(c[e+68>>2]|0,b[f+34>>1]|0)|0;l=o+j<<2;o=j-o<<2;j=B(c[e+36>>2]|0,b[f+18>>1]|0)|0;q=B(c[e+100>>2]|0,b[f+50>>1]|0)|0;p=((q+j|0)*4433|0)+1024|0;j=p+(j*6270|0)>>11;q=p+(B(q,-15137)|0)>>11;c[n>>2]=j+l;c[k+52>>2]=l-j;c[k+20>>2]=q+o;c[k+36>>2]=o-q;q=B(c[e+8>>2]|0,b[f+4>>1]|0)|0;o=B(c[e+72>>2]|0,b[f+36>>1]|0)|0;j=o+q<<2;o=q-o<<2;q=B(c[e+40>>2]|0,b[f+20>>1]|0)|0;l=B(c[e+104>>2]|0,b[f+52>>1]|0)|0;p=((l+q|0)*4433|0)+1024|0;q=p+(q*6270|0)>>11;l=p+(B(l,-15137)|0)>>11;p=q+j|0;c[k+8>>2]=p;c[k+56>>2]=j-q;c[k+24>>2]=l+o;c[k+40>>2]=o-l;l=B(c[e+12>>2]|0,b[f+6>>1]|0)|0;o=B(c[e+76>>2]|0,b[f+38>>1]|0)|0;q=o+l<<2;o=l-o<<2;l=B(c[e+44>>2]|0,b[f+22>>1]|0)|0;e=B(c[e+108>>2]|0,b[f+54>>1]|0)|0;j=((e+l|0)*4433|0)+1024|0;l=j+(l*6270|0)>>11;e=j+(B(e,-15137)|0)>>11;j=l+q|0;c[k+12>>2]=j;c[k+60>>2]=q-l;l=e+o|0;c[k+28>>2]=l;c[k+44>>2]=o-e;e=d+-384|0;d=(c[g>>2]|0)+h|0;f=(c[k>>2]|0)+16400|0;o=f+p<<13;f=f-p<<13;n=c[n>>2]|0;p=(j+n|0)*4433|0;n=p+(n*6270|0)|0;j=p+(B(j,-15137)|0)|0;a[d>>0]=a[e+((n+o|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((o-n|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((j+f|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((f-j|0)>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;m=(c[m>>2]|0)+16400|0;j=c[k+24>>2]|0;f=m+j<<13;j=m-j<<13;m=c[k+20>>2]|0;n=(l+m|0)*4433|0;m=n+(m*6270|0)|0;l=n+(B(l,-15137)|0)|0;a[d>>0]=a[e+((m+f|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((f-m|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((l+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-l|0)>>>18&1023)>>0]|0;d=(c[g+8>>2]|0)+h|0;l=(c[k+32>>2]|0)+16400|0;j=c[k+40>>2]|0;m=l+j<<13;j=l-j<<13;l=c[k+36>>2]|0;f=c[k+44>>2]|0;n=(f+l|0)*4433|0;l=n+(l*6270|0)|0;f=n+(B(f,-15137)|0)|0;a[d>>0]=a[e+((l+m|0)>>>18&1023)>>0]|0;a[d+3>>0]=a[e+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[e+((f+j|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[e+((j-f|0)>>>18&1023)>>0]|0;h=(c[g+12>>2]|0)+h|0;d=(c[k+48>>2]|0)+16400|0;f=c[k+56>>2]|0;j=d+f<<13;f=d-f<<13;d=c[k+52>>2]|0;g=c[k+60>>2]|0;k=(g+d|0)*4433|0;d=k+(d*6270|0)|0;g=k+(B(g,-15137)|0)|0;a[h>>0]=a[e+((d+j|0)>>>18&1023)>>0]|0;a[h+3>>0]=a[e+((j-d|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[e+((g+f|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[e+((f-g|0)>>>18&1023)>>0]|0;zb=i;return}function Bv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=zb;zb=zb+48|0;j=i;d=c[d+336>>2]|0;e=c[e+84>>2]|0;l=B(b[f>>1]<<13,c[e>>2]|0)|0|1024;k=B((b[f+32>>1]|0)*5793|0,c[e+64>>2]|0)|0;n=k+l|0;l=(B(k,-2)|0)+l|0;k=B((b[f+16>>1]|0)*10033|0,c[e+32>>2]|0)|0;m=k+n>>11;c[j>>2]=m;c[j+24>>2]=n-k>>11;k=j+12|0;c[k>>2]=l>>11;l=B(b[f+2>>1]<<13,c[e+4>>2]|0)|0|1024;n=B((b[f+34>>1]|0)*5793|0,c[e+68>>2]|0)|0;q=n+l|0;l=(B(n,-2)|0)+l|0;n=B((b[f+18>>1]|0)*10033|0,c[e+36>>2]|0)|0;o=n+q>>11;c[j+4>>2]=o;c[j+28>>2]=q-n>>11;l=l>>11;c[j+16>>2]=l;n=B(b[f+4>>1]<<13,c[e+8>>2]|0)|0|1024;q=B((b[f+36>>1]|0)*5793|0,c[e+72>>2]|0)|0;p=q+n|0;n=(B(q,-2)|0)+n|0;e=B((b[f+20>>1]|0)*10033|0,c[e+40>>2]|0)|0;q=e+p>>11;c[j+8>>2]=q;e=p-e>>11;c[j+32>>2]=e;n=n>>11;c[j+20>>2]=n;f=d+-384|0;d=(c[g>>2]|0)+h|0;m=(m<<13)+134348800|0;p=m+(q*5793|0)|0;m=(B(q,-11586)|0)+m|0;o=o*10033|0;a[d>>0]=a[f+((p+o|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((p-o|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(m>>>18&1023)>>0]|0;d=(c[g+4>>2]|0)+h|0;k=(c[k>>2]<<13)+134348800|0;m=k+(n*5793|0)|0;k=(B(n,-11586)|0)+k|0;l=l*10033|0;a[d>>0]=a[f+((m+l|0)>>>18&1023)>>0]|0;a[d+2>>0]=a[f+((m-l|0)>>>18&1023)>>0]|0;a[d+1>>0]=a[f+(k>>>18&1023)>>0]|0;h=(c[g+8>>2]|0)+h|0;g=(c[j+24>>2]<<13)+134348800|0;d=g+(e*5793|0)|0;g=(B(e,-11586)|0)+g|0;e=(c[j+28>>2]|0)*10033|0;a[h>>0]=a[f+((d+e|0)>>>18&1023)>>0]|0;a[h+2>>0]=a[f+((d-e|0)>>>18&1023)>>0]|0;a[h+1>>0]=a[f+(g>>>18&1023)>>0]|0;zb=i;return}function Cv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;d=(c[d+336>>2]|0)+-384|0;j=c[e+84>>2]|0;i=B(c[j>>2]|0,b[f>>1]|0)|0;e=B(c[j+32>>2]|0,b[f+16>>1]|0)|0;i=i+4100|0;k=e+i|0;e=i-e|0;i=B(c[j+4>>2]|0,b[f+2>>1]|0)|0;f=B(c[j+36>>2]|0,b[f+18>>1]|0)|0;j=f+i|0;f=i-f|0;i=(c[g>>2]|0)+h|0;a[i>>0]=a[d+((j+k|0)>>>3&1023)>>0]|0;a[i+1>>0]=a[d+((k-j|0)>>>3&1023)>>0]|0;h=(c[g+4>>2]|0)+h|0;a[h>>0]=a[d+((f+e|0)>>>3&1023)>>0]|0;a[h+1>>0]=a[d+((e-f|0)>>>3&1023)>>0]|0;return}function Dv(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=(c[d+336>>2]|0)+-384+(((B(c[c[e+84>>2]>>2]|0,b[f>>1]|0)|0)+4100|0)>>>3&1023)|0;a[(c[g>>2]|0)+h>>0]=a[f>>0]|0;return}function Ev(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;o=zb;zb=zb+256|0;m=o;l=c[d+336>>2]|0;k=m;j=c[e+84>>2]|0;i=8;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){d=B(b[f>>1]<<2,c[j>>2]|0)|0;c[k>>2]=d;c[k+32>>2]=d;c[k+64>>2]=d;c[k+96>>2]=d;c[k+128>>2]=d;c[k+160>>2]=d;c[k+192>>2]=d;e=56}else{d=0;n=9}else n=9;if((n|0)==9){n=0;x=B(b[f+64>>1]<<13,c[j+128>>2]|0)|0;p=B(b[f>>1]<<13,c[j>>2]|0)|0|1024;s=x+p|0;x=p-x|0;p=B(c[j+64>>2]|0,d<<16>>16)|0;q=B(c[j+192>>2]|0,b[f+96>>1]|0)|0;u=(q+p|0)*4433|0;p=u+(p*6270|0)|0;q=u+(B(q,-15137)|0)|0;u=p+s|0;p=s-p|0;s=q+x|0;q=x-q|0;d=B(c[j+224>>2]|0,b[f+112>>1]|0)|0;x=B(c[j+160>>2]|0,b[f+80>>1]|0)|0;v=B(c[j+96>>2]|0,b[f+48>>1]|0)|0;t=B(c[j+32>>2]|0,e<<16>>16)|0;r=v+d|0;e=t+x|0;w=(e+r|0)*9633|0;r=w+(B(r,-16069)|0)|0;e=w+(B(e,-3196)|0)|0;w=B(t+d|0,-7373)|0;d=w+(d*2446|0)+r|0;t=w+(t*12299|0)+e|0;w=B(v+x|0,-20995)|0;e=w+(x*16819|0)+e|0;r=w+(v*25172|0)+r|0;c[k>>2]=t+u>>11;c[k+224>>2]=u-t>>11;c[k+32>>2]=r+s>>11;c[k+192>>2]=s-r>>11;c[k+64>>2]=e+q>>11;c[k+160>>2]=q-e>>11;c[k+96>>2]=d+p>>11;d=p-d>>11;e=32}c[k+(e<<2)>>2]=d;if(i>>>0>1){k=k+4|0;j=j+4|0;f=f+2|0;i=i+-1|0}else break}l=l+-384|0;k=0;e=m;while(1){f=(c[g+(k<<2)>>2]|0)+h|0;i=(c[e>>2]|0)+16400|0;j=c[e+4>>2]|0;d=c[e+8>>2]|0;if(!(j|d))if(((((c[e+12>>2]|0)==0?(c[e+16>>2]|0)==0:0)?(c[e+20>>2]|0)==0:0)?(c[e+24>>2]|0)==0:0)?(c[e+28>>2]|0)==0:0){x=a[l+(i>>>5&1023)>>0]|0;a[f>>0]=x;aP(f+1|0,x|0,7)|0}else{d=0;n=19}else n=19;if((n|0)==19){n=0;x=c[e+16>>2]|0;s=x+i<<13;x=i-x<<13;u=c[e+24>>2]|0;q=(u+d|0)*4433|0;w=q+(d*6270|0)|0;u=q+(B(u,-15137)|0)|0;q=w+s|0;w=s-w|0;s=u+x|0;u=x-u|0;x=c[e+28>>2]|0;i=c[e+20>>2]|0;p=c[e+12>>2]|0;t=p+x|0;v=i+j|0;r=(t+v|0)*9633|0;t=r+(B(t,-16069)|0)|0;v=r+(B(v,-3196)|0)|0;r=B(x+j|0,-7373)|0;x=r+(x*2446|0)+t|0;r=r+(j*12299|0)+v|0;m=B(p+i|0,-20995)|0;v=m+(i*16819|0)+v|0;t=m+(p*25172|0)+t|0;a[f>>0]=a[l+((r+q|0)>>>18&1023)>>0]|0;a[f+7>>0]=a[l+((q-r|0)>>>18&1023)>>0]|0;a[f+1>>0]=a[l+((t+s|0)>>>18&1023)>>0]|0;a[f+6>>0]=a[l+((s-t|0)>>>18&1023)>>0]|0;a[f+2>>0]=a[l+((v+u|0)>>>18&1023)>>0]|0;a[f+5>>0]=a[l+((u-v|0)>>>18&1023)>>0]|0;a[f+3>>0]=a[l+((x+w|0)>>>18&1023)>>0]|0;a[f+4>>0]=a[l+((w-x|0)>>>18&1023)>>0]|0}k=k+1|0;if((k|0)==8)break;else e=e+32|0}zb=o;return}function Fv(a,b){a=a|0;b=b|0;var d=0;d=c[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(c[a+84>>2]|0)){c[d+4>>2]=c[(c[a+476>>2]|0)+4>>2];break a}c[d+4>>2]=4;b=d+12|0;if(!(c[b>>2]|0)){a=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0;c[b>>2]=a}break}case 3:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=5;break}case 2:{if(!(c[d+8>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}c[d+4>>2]=6;break}default:{b=c[a>>2]|0;c[b+20>>2]=3;Sb[c[b>>2]&255](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function Gv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=zb;zb=zb+16|0;j=i;m=c[a+456>>2]|0;k=h-(c[g>>2]|0)|0;l=c[m+16>>2]|0;c[j>>2]=0;h=m+12|0;_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,c[h>>2]|0,j,k>>>0>l>>>0?l:k);Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0);zb=i;return}function Hv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[a+456>>2]|0;l=k+24|0;f=c[l>>2]|0;if(!f){j=k+16|0;h=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;i=k+12|0;c[i>>2]=h;f=c[l>>2]|0}else{h=k+12|0;j=k+16|0;i=h;h=c[h>>2]|0}_b[c[(c[a+476>>2]|0)+4>>2]&7](a,b,d,e,h,l,c[j>>2]|0);h=c[l>>2]|0;if(h>>>0>f>>>0){h=h-f|0;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,(c[i>>2]|0)+(f<<2)|0,0,h);c[g>>2]=(c[g>>2]|0)+h;h=c[l>>2]|0}f=c[j>>2]|0;if(h>>>0>>0)return;k=k+20|0;c[k>>2]=(c[k>>2]|0)+f;c[l>>2]=0;return}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;d=c[a+456>>2]|0;j=d+24|0;b=c[j>>2]|0;if(!b){i=d+20|0;e=d+16|0;k=Mb[c[(c[a+4>>2]|0)+28>>2]&31](a,c[d+8>>2]|0,c[i>>2]|0,c[e>>2]|0,0)|0;c[d+12>>2]=k;b=c[j>>2]|0;d=k}else{i=d+20|0;e=d+16|0;d=c[d+12>>2]|0}k=(c[e>>2]|0)-b|0;l=c[g>>2]|0;h=h-l|0;k=k>>>0>h>>>0?h:k;h=(c[a+116>>2]|0)-(c[i>>2]|0)|0;k=k>>>0>h>>>0?h:k;Xb[c[(c[a+484>>2]|0)+4>>2]&31](a,d+(b<<2)|0,f+(l<<2)|0,k);c[g>>2]=(c[g>>2]|0)+k;k=(c[j>>2]|0)+k|0;c[j>>2]=k;b=c[e>>2]|0;if(k>>>0>>0)return;c[i>>2]=(c[i>>2]|0)+b;c[j>>2]=0;return}function Jv(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+92>>2]=c[a+320>>2];c[b+96>>2]=c[a+116>>2];return}function Kv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[a+476>>2]|0;m=l+92|0;i=c[m>>2]|0;k=a+320|0;e=c[k>>2]|0;if((i|0)>=(e|0)){j=a+36|0;if((c[j>>2]|0)>0){e=c[a+216>>2]|0;i=0;while(1){n=(c[b+(i<<2)>>2]|0)+((B(c[l+100+(i<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Xb[c[l+52+(i<<2)>>2]&31](a,e,n,l+12+(i<<2)|0);i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else e=e+88|0}e=c[k>>2]|0}c[m>>2]=0;i=0}n=e-i|0;b=l+96|0;j=c[b>>2]|0;n=n>>>0>j>>>0?j:n;j=c[g>>2]|0;h=h-j|0;n=n>>>0>h>>>0?h:n;Yb[c[(c[a+480>>2]|0)+4>>2]&63](a,l+12|0,i,f+(j<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;c[b>>2]=(c[b>>2]|0)-n;n=(c[m>>2]|0)+n|0;c[m>>2]=n;if((n|0)<(c[k>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function Mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+320|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+112|0;h=0;do{b=c[j+(h<<2)>>2]|0;f=c[i>>2]|0;g=b+f|0;if((f|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function Ov(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+320|0;if((c[l>>2]|0)<=0)return;j=b+112|0;h=0;i=0;while(1){b=c[k+(i<<2)>>2]|0;d=c[j>>2]|0;g=b+d|0;if((d|0)>0){f=c[e+(h<<2)>>2]|0;d=b;while(1){b=a[f>>0]|0;a[d>>0]=b;a[d+1>>0]=b;d=d+2|0;if(d>>>0>=g>>>0)break;else f=f+1|0}d=c[j>>2]|0}Qv(k,i,k,i|1,1,d);i=i+2|0;if((i|0)>=(c[l>>2]|0))break;else h=h+1|0}return}function Pv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[b+476>>2]|0;q=c[f>>2]|0;d=c[d+4>>2]|0;f=a[r+140+d>>0]|0;o=f&255;d=a[r+150+d>>0]|0;r=d&255;p=b+320|0;g=c[p>>2]|0;if((g|0)<=0)return;n=b+112|0;k=f<<24>>24!=0;l=r+-1|0;if((d&255)>1){j=(f<<24>>24==0?~o:-2)+o+2|0;h=0;i=0;while(1){d=c[q+(i<<2)>>2]|0;f=c[n>>2]|0;g=d+f|0;if((f|0)>0){if(!k)break;b=c[e+(h<<2)>>2]|0;f=d;while(1){aP(f|0,a[b>>0]|0,j|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)b=b+1|0;else break}f=c[n>>2]|0}Qv(q,i,q,i+1|0,l,f);i=i+r|0;if((i|0)>=(c[p>>2]|0)){m=27;break}else h=h+1|0}if((m|0)==27)return;while(1){}}if(!k){d=(c[n>>2]|0)>0;f=0;while(1){if(d)break;f=f+r|0;if((f|0)>=(g|0)){m=27;break}}if((m|0)==27)return;while(1){}}b=0;h=0;while(1){f=c[q+(h<<2)>>2]|0;m=c[n>>2]|0;i=f+m|0;if((m|0)>0){g=c[e+(b<<2)>>2]|0;while(1){aP(f|0,a[g>>0]|0,o|0)|0;d=o;while(1){f=f+1|0;if((d|0)<=1)break;else d=d+-1|0}if(f>>>0>>0)g=g+1|0;else break}}h=h+r|0;if((h|0)>=(c[p>>2]|0))break;else b=b+1|0}return}function Qv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;b=a+(b<<2)|0;a=d+(e<<2)|0;while(1){_O(c[a>>2]|0,c[b>>2]|0,g|0)|0;if((f|0)>1){b=b+4|0;a=a+4|0;f=f+-1|0}else break}return}function Rv(a){a=a|0;return}function Sv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Qv(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function Tv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{a[m+b>>0]=((c[q+((d[k+b>>0]|0|256)<<2)>>2]|0)+(c[q+((d[j+b>>0]|0)<<2)>>2]|0)+(c[q+((d[l+b>>0]|0|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Uv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[(c[b+480>>2]|0)+24>>2]|0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){i=h;h=h+-1|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;k=c[(c[o>>2]|0)+(f<<2)>>2]|0;l=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;m=c[g>>2]|0;b=0;do{s=d[k+b>>0]|0;r=s+128|0;a[m+b>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+((r+(d[j+b>>0]|0)&255)<<2)>>2]|0)+(c[q+((r+(d[l+b>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;b=b+1|0}while((b|0)!=(n|0));if((i|0)<=1)break;else g=g+4|0}return}function Vv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+112>>2]|0;if((g|0)<1|(k|0)==0)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;b=0;h=c[f>>2]|0;while(1){l=a[j+b>>0]|0;a[h+2>>0]=l;a[h+1>>0]=l;a[h>>0]=l;b=b+1|0;if((b|0)==(k|0))break;else h=h+3|0}if((i|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function Wv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[b+480>>2]|0;u=c[b+112>>2]|0;n=c[b+336>>2]|0;o=c[r+8>>2]|0;p=c[r+12>>2]|0;q=c[r+16>>2]|0;r=c[r+20>>2]|0;if((h|0)<=0)return;s=e+4|0;t=e+8|0;if(!u)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;m=c[(c[t>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){v=d[k+i>>0]|0;w=d[l+i>>0]|0;x=d[m+i>>0]|0;a[b>>0]=a[n+((c[o+(x<<2)>>2]|0)+v)>>0]|0;a[b+1>>0]=a[n+(((c[q+(x<<2)>>2]|0)+(c[r+(w<<2)>>2]|0)>>16)+v)>>0]|0;a[b+2>>0]=a[n+((c[p+(w<<2)>>2]|0)+v)>>0]|0;i=i+1|0;if((i|0)==(u|0))break;else b=b+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Xv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[b+112>>2]|0;if((g|0)<=0)return;n=d+4|0;o=d+8|0;if(!m)return;while(1){i=g;g=g+-1|0;j=c[(c[d>>2]|0)+(e<<2)>>2]|0;k=c[(c[n>>2]|0)+(e<<2)>>2]|0;l=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;b=0;h=c[f>>2]|0;while(1){a[h>>0]=a[j+b>>0]|0;a[h+1>>0]=a[k+b>>0]|0;a[h+2>>0]=a[l+b>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else h=h+3|0}if((i|0)<=1)break;else f=f+4|0}return}function Yv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[b+112>>2]|0;if((h|0)<=0)return;o=e+4|0;p=e+8|0;if(!n)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[o>>2]|0)+(f<<2)>>2]|0;m=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=0;i=c[g>>2]|0;while(1){s=a[l+b>>0]|0;q=d[m+b>>0]|0;r=(s&255)+128|0;a[i>>0]=r+(d[k+b>>0]|0);a[i+1>>0]=s;a[i+2>>0]=r+q;b=b+1|0;if((b|0)==(n|0))break;else i=i+3|0}if((j|0)<=1)break;else g=g+4|0}return}function Zv(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=c[b+480>>2]|0;w=c[b+112>>2]|0;o=c[b+336>>2]|0;p=c[s+8>>2]|0;q=c[s+12>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;if((h|0)<=0)return;t=e+4|0;u=e+8|0;v=e+12|0;if(!w)return;while(1){j=h;h=h+-1|0;k=c[(c[e>>2]|0)+(f<<2)>>2]|0;l=c[(c[t>>2]|0)+(f<<2)>>2]|0;m=c[(c[u>>2]|0)+(f<<2)>>2]|0;n=c[(c[v>>2]|0)+(f<<2)>>2]|0;f=f+1|0;b=c[g>>2]|0;i=0;while(1){x=d[l+i>>0]|0;z=d[m+i>>0]|0;y=~a[k+i>>0]&255;a[b>>0]=a[o+(y-(c[p+(z<<2)>>2]|0))>>0]|0;a[b+1>>0]=a[o+(y-((c[r+(z<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16))>>0]|0;a[b+2>>0]=a[o+(y-(c[q+(x<<2)>>2]|0))>>0]|0;a[b+3>>0]=a[n+i>>0]|0;i=i+1|0;if((i|0)==(w|0))break;else b=b+4|0}if((j|0)<=1)break;else g=g+4|0}return}function _v(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;m=c[b+112>>2]|0;if((g|0)<=0)return;l=(m|0)==0;if((n|0)<=0)return;while(1){k=g;g=g+-1|0;if(!l){j=0;do{b=0;h=c[(c[d+(j<<2)>>2]|0)+(e<<2)>>2]|0;i=(c[f>>2]|0)+j|0;while(1){a[i>>0]=a[h>>0]|0;b=b+1|0;if((b|0)==(m|0))break;else{h=h+1|0;i=i+n|0}}j=j+1|0}while((j|0)!=(n|0))}if((k|0)<=1)break;else{f=f+4|0;e=e+1|0}}return}function $v(a){a=a|0;var b=0;b=c[a+476>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function aw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=zb;zb=zb+16|0;l=n;m=c[a+476>>2]|0;i=m+36|0;if(!(c[i>>2]|0)){j=m+44|0;e=c[j>>2]|0;e=e>>>0<2?e:2;k=c[g>>2]|0;h=h-k|0;e=e>>>0>h>>>0?h:e;c[l>>2]=c[f+(k<<2)>>2];if(e>>>0>1)c[l+4>>2]=c[f+(k+1<<2)>>2];else{c[l+4>>2]=c[m+32>>2];c[i>>2]=1}Xb[c[m+12>>2]&31](a,b,c[d>>2]|0,l);f=(c[i>>2]|0)==0;c[g>>2]=(c[g>>2]|0)+e;c[j>>2]=(c[j>>2]|0)-e;if(!f){zb=n;return}}else{Qv(m+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[m+40>>2]|0);c[i>>2]=0;f=m+44|0;c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+-1}c[d>>2]=(c[d>>2]|0)+1;zb=n;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=c[b+476>>2]|0;x=c[b+336>>2]|0;y=c[w+16>>2]|0;u=c[w+20>>2]|0;v=c[w+24>>2]|0;w=c[w+28>>2]|0;i=c[e>>2]|0;h=f<<1;t=c[i+(h<<2)>>2]|0;h=c[i+((h|1)<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=c[g+4>>2]|0;s=b+112|0;e=c[s>>2]|0;m=e>>>1;if(!m){j=p;b=t}else{n=i+m|0;q=e&-2;r=m*6|0;o=h+q|0;l=p;e=t;b=g;j=f;k=m;while(1){A=d[i>>0]|0;B=d[l>>0]|0;C=c[y+(B<<2)>>2]|0;B=(c[v+(B<<2)>>2]|0)+(c[w+(A<<2)>>2]|0)>>16;A=c[u+(A<<2)>>2]|0;z=d[e>>0]|0;a[j>>0]=a[x+(C+z)>>0]|0;a[j+1>>0]=a[x+(B+z)>>0]|0;a[j+2>>0]=a[x+(A+z)>>0]|0;z=d[e+1>>0]|0;a[j+3>>0]=a[x+(C+z)>>0]|0;a[j+4>>0]=a[x+(B+z)>>0]|0;a[j+5>>0]=a[x+(A+z)>>0]|0;z=d[h>>0]|0;a[b>>0]=a[x+(C+z)>>0]|0;a[b+1>>0]=a[x+(B+z)>>0]|0;a[b+2>>0]=a[x+(A+z)>>0]|0;z=d[h+1>>0]|0;a[b+3>>0]=a[x+(C+z)>>0]|0;a[b+4>>0]=a[x+(B+z)>>0]|0;a[b+5>>0]=a[x+(A+z)>>0]|0;k=k+-1|0;if(!k)break;else{l=l+1|0;i=i+1|0;h=h+2|0;e=e+2|0;b=b+6|0;j=j+6|0}}j=p+m|0;i=n;h=o;b=t+q|0;g=g+r|0;f=f+r|0;e=c[s>>2]|0}if(!(e&1))return;B=d[i>>0]|0;A=d[j>>0]|0;z=c[y+(A<<2)>>2]|0;A=(c[v+(A<<2)>>2]|0)+(c[w+(B<<2)>>2]|0)>>16;B=c[u+(B<<2)>>2]|0;C=d[b>>0]|0;a[f>>0]=a[x+(z+C)>>0]|0;a[f+1>>0]=a[x+(A+C)>>0]|0;a[f+2>>0]=a[x+(B+C)>>0]|0;C=d[h>>0]|0;a[g>>0]=a[x+(z+C)>>0]|0;a[g+1>>0]=a[x+(A+C)>>0]|0;a[g+2>>0]=a[x+(B+C)>>0]|0;return}function cw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Xb[c[(c[a+476>>2]|0)+12>>2]&31](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function dw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=c[b+476>>2]|0;t=c[b+336>>2]|0;u=c[s+16>>2]|0;q=c[s+20>>2]|0;r=c[s+24>>2]|0;s=c[s+28>>2]|0;p=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;h=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;o=b+112|0;e=c[o>>2]|0;l=e>>>1;if(!l){b=i;g=p}else{b=i+l|0;m=e&-2;n=l*6|0;k=h;e=i;g=p;i=f;j=l;while(1){w=d[e>>0]|0;x=d[k>>0]|0;y=c[u+(x<<2)>>2]|0;x=(c[r+(x<<2)>>2]|0)+(c[s+(w<<2)>>2]|0)>>16;w=c[q+(w<<2)>>2]|0;v=d[g>>0]|0;a[i>>0]=a[t+(y+v)>>0]|0;a[i+1>>0]=a[t+(x+v)>>0]|0;a[i+2>>0]=a[t+(w+v)>>0]|0;v=d[g+1>>0]|0;a[i+3>>0]=a[t+(y+v)>>0]|0;a[i+4>>0]=a[t+(x+v)>>0]|0;a[i+5>>0]=a[t+(w+v)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+1|0;e=e+1|0;g=g+2|0;i=i+6|0}}h=h+l|0;g=p+m|0;f=f+n|0;e=c[o>>2]|0}if(!(e&1))return;x=d[b>>0]|0;v=d[h>>0]|0;w=(c[r+(v<<2)>>2]|0)+(c[s+(x<<2)>>2]|0)>>16;x=c[q+(x<<2)>>2]|0;y=d[g>>0]|0;a[f>>0]=a[t+((c[u+(v<<2)>>2]|0)+y)>>0]|0;a[f+1>>0]=a[t+(w+y)>>0]|0;a[f+2>>0]=a[t+(x+y)>>0]|0;return}function ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+484>>2]|0;g=c[f+24>>2]|0;e=a+88|0;if(!(c[e>>2]|0))d=0;else{c[e>>2]=2;d=2}if(!b){c[f+4>>2]=(d|0)==2?20:21;c[f+8>>2]=134;b=c[a+132>>2]|0;if((b|0)>=1){if((b|0)>256){d=c[a>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Sb[c[c[a>>2]>>2]&255](a)}}else{d=c[a>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Sb[c[c[a>>2]>>2]&255](a)}if((c[e>>2]|0)==2){e=((c[a+112>>2]|0)*6|0)+12|0;d=f+32|0;b=c[d>>2]|0;if(!b){b=Jb[c[(c[a+4>>2]|0)+4>>2]&63](a,1,e)|0;c[d>>2]=b}aP(b|0,0,e|0)|0;if(!(c[f+40>>2]|0))gw(a);c[f+36>>2]=0}}else{c[f+4>>2]=19;c[f+8>>2]=133;c[f+28>>2]=1}b=f+28|0;if(!(c[b>>2]|0))return;aP(c[g>>2]|0,0,4096)|0;aP(c[g+4>>2]|0,0,4096)|0;aP(c[g+8>>2]|0,0,4096)|0;aP(c[g+12>>2]|0,0,4096)|0;aP(c[g+16>>2]|0,0,4096)|0;aP(c[g+20>>2]|0,0,4096)|0;aP(c[g+24>>2]|0,0,4096)|0;aP(c[g+28>>2]|0,0,4096)|0;aP(c[g+32>>2]|0,0,4096)|0;aP(c[g+36>>2]|0,0,4096)|0;aP(c[g+40>>2]|0,0,4096)|0;aP(c[g+44>>2]|0,0,4096)|0;aP(c[g+48>>2]|0,0,4096)|0;aP(c[g+52>>2]|0,0,4096)|0;aP(c[g+56>>2]|0,0,4096)|0;aP(c[g+60>>2]|0,0,4096)|0;aP(c[g+64>>2]|0,0,4096)|0;aP(c[g+68>>2]|0,0,4096)|0;aP(c[g+72>>2]|0,0,4096)|0;aP(c[g+76>>2]|0,0,4096)|0;aP(c[g+80>>2]|0,0,4096)|0;aP(c[g+84>>2]|0,0,4096)|0;aP(c[g+88>>2]|0,0,4096)|0;aP(c[g+92>>2]|0,0,4096)|0;aP(c[g+96>>2]|0,0,4096)|0;aP(c[g+100>>2]|0,0,4096)|0;aP(c[g+104>>2]|0,0,4096)|0;aP(c[g+108>>2]|0,0,4096)|0;aP(c[g+112>>2]|0,0,4096)|0;aP(c[g+116>>2]|0,0,4096)|0;aP(c[g+120>>2]|0,0,4096)|0;aP(c[g+124>>2]|0,0,4096)|0;c[b>>2]=0;return}function fw(a){a=a|0;c[(c[a+484>>2]|0)+28>>2]=1;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=c[a+484>>2]|0;a=Jb[c[c[a+4>>2]>>2]&63](a,1,2044)|0;e=a+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;d=16;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=0-d;a=a+1|0;d=(a&1^1)+d|0}while((a|0)!=48);b=0-d|0;a=48;do{c[e+(a<<2)>>2]=d;c[e+(0-a<<2)>>2]=b;a=a+1|0}while((a|0)!=256);return}function hw(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+484>>2]|0)+24>>2]|0;i=c[a+112>>2]|0;if((g|0)<1|(i|0)==0)return;a=0;do{f=i;h=c[e+(a<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;f=f+-1|0;if(!f)break;else h=h+3|0}a=a+1|0}while((a|0)!=(g|0));return}function iw(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;y=d+484|0;A=c[y>>2]|0;C=d+136|0;c[C>>2]=c[A+16>>2];s=c[A+20>>2]|0;z=Jb[c[c[d+4>>2]>>2]&63](d,1,s<<5)|0;c[z>>2]=0;c[z+4>>2]=31;c[z+8>>2]=0;c[z+12>>2]=63;c[z+16>>2]=0;c[z+20>>2]=31;nw(d,z);a:do if((s|0)>1){e=1;while(1){if((e<<1|0)>(s|0)){g=0;h=0;i=z;f=0;while(1){j=c[i+24>>2]|0;k=(j|0)>(g|0);f=k?i:f;h=h+1|0;if((h|0)==(e|0)){q=f;break}else{g=k?j:g;i=i+32|0}}}else{f=0;i=0;j=z;g=0;while(1){h=c[j+28>>2]|0;if((h|0)>(f|0)){x=(c[j+24>>2]|0)>0;g=x?j:g;f=x?h:f}i=i+1|0;if((i|0)==(e|0)){q=g;break}else j=j+32|0}}if(!q)break a;r=z+(e<<5)|0;g=q+4|0;c[z+(e<<5)+4>>2]=c[g>>2];h=q+12|0;c[z+(e<<5)+12>>2]=c[h>>2];i=q+20|0;c[z+(e<<5)+20>>2]=c[i>>2];c[r>>2]=c[q>>2];n=q+8|0;f=z+(e<<5)+8|0;c[f>>2]=c[n>>2];p=q+16|0;j=z+(e<<5)+16|0;c[j>>2]=c[p>>2];k=c[g>>2]|0;l=c[q>>2]|0;v=k-l<<4;m=c[h>>2]|0;n=c[n>>2]|0;w=(m-n|0)*12|0;o=c[i>>2]|0;p=c[p>>2]|0;x=(v|0)>(w|0);switch(((o-p<<3|0)>((x?v:w)|0)?2:(x^1)&1)&3){case 0:{t=(l+k|0)/2|0;c[g>>2]=t;f=r;g=t;t=15;break}case 1:{g=(n+m|0)/2|0;c[h>>2]=g;t=15;break}case 2:{g=(p+o|0)/2|0;c[i>>2]=g;f=j;t=15;break}default:{}}if((t|0)==15){t=0;c[f>>2]=g+1}nw(d,q);nw(d,r);e=e+1|0;if((e|0)>=(s|0))break a}}else e=1;while(0);x=0;do{r=c[(c[y>>2]|0)+24>>2]|0;j=c[z+(x<<5)>>2]|0;s=c[z+(x<<5)+4>>2]|0;t=c[z+(x<<5)+8>>2]|0;u=c[z+(x<<5)+12>>2]|0;v=c[z+(x<<5)+16>>2]|0;w=c[z+(x<<5)+20>>2]|0;if((j|0)>(s|0)|(t|0)>(u|0)|(v|0)>(w|0)){i=0;h=0;g=0;f=0}else{i=0;h=0;g=0;f=0;while(1){p=c[r+(j<<2)>>2]|0;q=j<<3|4;o=t;while(1){n=o<<2|2;l=p+(o<<6)+(v<<1)|0;m=v;while(1){D=b[l>>1]|0;k=D&65535;if(D<<16>>16){i=(B(m<<3|4,k)|0)+i|0;h=(B(n,k)|0)+h|0;g=(B(q,k)|0)+g|0;f=f+k|0}if((m|0)<(w|0)){l=l+2|0;m=m+1|0}else break}if((o|0)<(u|0))o=o+1|0;else break}if((j|0)<(s|0))j=j+1|0;else break}}D=f>>1;a[(c[c[C>>2]>>2]|0)+x>>0]=(g+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+x>>0]=(h+D|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+x>>0]=(i+D|0)/(f|0)|0;x=x+1|0}while((x|0)<(e|0));c[d+132>>2]=e;D=c[d>>2]|0;c[D+20>>2]=98;c[D+24>>2]=e;Ub[c[(c[d>>2]|0)+4>>2]&63](d,1);c[A+28>>2]=1;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;i=c[e+484>>2]|0;U=c[i+24>>2]|0;V=c[e+112>>2]|0;O=c[e+336>>2]|0;P=c[i+40>>2]|0;S=c[e+136>>2]|0;Q=c[S>>2]|0;R=c[S+4>>2]|0;S=c[S+8>>2]|0;if((h|0)<=0)return;T=i+36|0;J=i+32|0;K=(V|0)==0;L=V+-1|0;M=L*3|0;N=(V*3|0)+3|0;I=0;do{k=c[f+(I<<2)>>2]|0;j=c[g+(I<<2)>>2]|0;if(!(c[T>>2]|0)){F=3;G=1;i=c[J>>2]|0;l=1}else{F=-3;G=-1;i=(c[J>>2]|0)+(N<<1)|0;j=j+L|0;k=k+M|0;l=0}c[T>>2]=l;if(K){l=0;k=0;j=0}else{A=F+1|0;C=F+2|0;H=B(V,F)|0;p=0;q=0;w=0;x=0;y=0;l=0;D=0;E=0;z=V;m=0;u=i;while(1){v=u;u=u+(F<<1)|0;r=d[O+((c[P+(m+8+(b[u>>1]|0)>>4<<2)>>2]|0)+(d[k>>0]|0))>>0]|0;s=d[O+((c[P+(p+8+(b[v+(A<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+1>>0]|0))>>0]|0;t=d[O+((c[P+(q+8+(b[v+(C<<1)>>1]|0)>>4<<2)>>2]|0)+(d[k+2>>0]|0))>>0]|0;n=r>>>3;o=s>>>2;p=t>>>3;q=(c[U+(n<<2)>>2]|0)+(o<<6)+(p<<1)|0;m=b[q>>1]|0;if(!(m<<16>>16)){mw(e,n,o,p);m=b[q>>1]|0}m=(m&65535)+-1|0;a[j>>0]=m;o=r-(d[Q+m>>0]|0)|0;n=s-(d[R+m>>0]|0)|0;m=t-(d[S+m>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+w|0;b[v+2>>1]=(n*3|0)+D;D=(n*5|0)+x|0;b[v+4>>1]=(m*3|0)+E;E=(m*5|0)+y|0;z=z+-1|0;if(!z)break;else{p=n*7|0;q=m*7|0;w=o;x=n;y=m;m=o*7|0;j=j+G|0;k=k+F|0}}k=D;j=E;i=i+(H<<1)|0}b[i>>1]=l;b[i+2>>1]=k;b[i+4>>1]=j;I=I+1|0}while((I|0)!=(h|0));return}function kw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[(c[e+484>>2]|0)+24>>2]|0;s=c[e+112>>2]|0;if((h|0)<1|(s|0)==0)return;o=0;do{n=s;p=c[g+(o<<2)>>2]|0;q=c[f+(o<<2)>>2]|0;while(1){j=(d[q>>0]|0)>>>3;k=(d[q+1>>0]|0)>>>2;l=(d[q+2>>0]|0)>>>3;m=(c[r+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){mw(e,j,k,l);i=b[m>>1]|0}a[p>>0]=(i&65535)+255;n=n+-1|0;if(!n)break;else{p=p+1|0;q=q+3|0}}o=o+1|0}while((o|0)!=(h|0));return}function lw(a){a=a|0;return}function mw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=zb;zb=zb+1408|0;K=N+384|0;L=N+128|0;i=N;M=c[(c[e+484>>2]|0)+24>>2]|0;n=f>>>2<<5;H=n|4;p=g>>>3<<5;I=p|2;r=h>>>2<<5;J=r|4;x=c[e+132>>2]|0;n=n|28;o=n+H>>1;p=p|30;q=p+I>>1;r=r|28;s=r+J>>1;if((x|0)>0){v=c[e+136>>2]|0;t=c[v>>2]|0;u=c[v+4>>2]|0;v=c[v+8>>2]|0;w=2147483647;m=0;do{j=d[t+m>>0]|0;do if((H|0)<=(j|0)){if((n|0)<(j|0)){G=j-n<<1;l=j-H<<1;l=B(l,l)|0;j=B(G,G)|0;break}if((o|0)<(j|0)){l=j-H<<1;l=B(l,l)|0;j=0;break}else{l=j-n<<1;l=B(l,l)|0;j=0;break}}else{G=j-H<<1;l=j-n<<1;l=B(l,l)|0;j=B(G,G)|0}while(0);k=d[u+m>>0]|0;do if((I|0)<=(k|0)){if((p|0)<(k|0)){G=(k-p|0)*3|0;k=(k-I|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((q|0)<(k|0)){k=(k-I|0)*3|0;k=B(k,k)|0;break}else{k=(k-p|0)*3|0;k=B(k,k)|0;break}}else{G=(k-I|0)*3|0;k=(k-p|0)*3|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);l=k+l|0;k=d[v+m>>0]|0;do if((J|0)<=(k|0)){if((r|0)<(k|0)){G=k-r|0;k=k-J|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0;break}if((s|0)<(k|0)){k=k-J|0;k=B(k,k)|0;break}else{k=k-r|0;k=B(k,k)|0;break}}else{G=k-J|0;k=k-r|0;j=(B(G,G)|0)+j|0;k=B(k,k)|0}while(0);G=l+k|0;c[K+(m<<2)>>2]=j;w=(G|0)<(w|0)?G:w;m=m+1|0}while((m|0)!=(x|0));j=0;k=0;do{if((c[K+(k<<2)>>2]|0)<=(w|0)){a[L+j>>0]=k;j=j+1|0}k=k+1|0}while((k|0)!=(x|0))}else j=0;c[K>>2]=2147483647;c[K+4>>2]=2147483647;c[K+8>>2]=2147483647;c[K+12>>2]=2147483647;c[K+16>>2]=2147483647;c[K+20>>2]=2147483647;c[K+24>>2]=2147483647;c[K+28>>2]=2147483647;c[K+32>>2]=2147483647;c[K+36>>2]=2147483647;c[K+40>>2]=2147483647;c[K+44>>2]=2147483647;c[K+48>>2]=2147483647;c[K+52>>2]=2147483647;c[K+56>>2]=2147483647;c[K+60>>2]=2147483647;c[K+64>>2]=2147483647;c[K+68>>2]=2147483647;c[K+72>>2]=2147483647;c[K+76>>2]=2147483647;c[K+80>>2]=2147483647;c[K+84>>2]=2147483647;c[K+88>>2]=2147483647;c[K+92>>2]=2147483647;c[K+96>>2]=2147483647;c[K+100>>2]=2147483647;c[K+104>>2]=2147483647;c[K+108>>2]=2147483647;c[K+112>>2]=2147483647;c[K+116>>2]=2147483647;c[K+120>>2]=2147483647;c[K+124>>2]=2147483647;c[K+128>>2]=2147483647;c[K+132>>2]=2147483647;c[K+136>>2]=2147483647;c[K+140>>2]=2147483647;c[K+144>>2]=2147483647;c[K+148>>2]=2147483647;c[K+152>>2]=2147483647;c[K+156>>2]=2147483647;c[K+160>>2]=2147483647;c[K+164>>2]=2147483647;c[K+168>>2]=2147483647;c[K+172>>2]=2147483647;c[K+176>>2]=2147483647;c[K+180>>2]=2147483647;c[K+184>>2]=2147483647;c[K+188>>2]=2147483647;c[K+192>>2]=2147483647;c[K+196>>2]=2147483647;c[K+200>>2]=2147483647;c[K+204>>2]=2147483647;c[K+208>>2]=2147483647;c[K+212>>2]=2147483647;c[K+216>>2]=2147483647;c[K+220>>2]=2147483647;c[K+224>>2]=2147483647;c[K+228>>2]=2147483647;c[K+232>>2]=2147483647;c[K+236>>2]=2147483647;c[K+240>>2]=2147483647;c[K+244>>2]=2147483647;c[K+248>>2]=2147483647;c[K+252>>2]=2147483647;c[K+256>>2]=2147483647;c[K+260>>2]=2147483647;c[K+264>>2]=2147483647;c[K+268>>2]=2147483647;c[K+272>>2]=2147483647;c[K+276>>2]=2147483647;c[K+280>>2]=2147483647;c[K+284>>2]=2147483647;c[K+288>>2]=2147483647;c[K+292>>2]=2147483647;c[K+296>>2]=2147483647;c[K+300>>2]=2147483647;c[K+304>>2]=2147483647;c[K+308>>2]=2147483647;c[K+312>>2]=2147483647;c[K+316>>2]=2147483647;c[K+320>>2]=2147483647;c[K+324>>2]=2147483647;c[K+328>>2]=2147483647;c[K+332>>2]=2147483647;c[K+336>>2]=2147483647;c[K+340>>2]=2147483647;c[K+344>>2]=2147483647;c[K+348>>2]=2147483647;c[K+352>>2]=2147483647;c[K+356>>2]=2147483647;c[K+360>>2]=2147483647;c[K+364>>2]=2147483647;c[K+368>>2]=2147483647;c[K+372>>2]=2147483647;c[K+376>>2]=2147483647;c[K+380>>2]=2147483647;c[K+384>>2]=2147483647;c[K+388>>2]=2147483647;c[K+392>>2]=2147483647;c[K+396>>2]=2147483647;c[K+400>>2]=2147483647;c[K+404>>2]=2147483647;c[K+408>>2]=2147483647;c[K+412>>2]=2147483647;c[K+416>>2]=2147483647;c[K+420>>2]=2147483647;c[K+424>>2]=2147483647;c[K+428>>2]=2147483647;c[K+432>>2]=2147483647;c[K+436>>2]=2147483647;c[K+440>>2]=2147483647;c[K+444>>2]=2147483647;c[K+448>>2]=2147483647;c[K+452>>2]=2147483647;c[K+456>>2]=2147483647;c[K+460>>2]=2147483647;c[K+464>>2]=2147483647;c[K+468>>2]=2147483647;c[K+472>>2]=2147483647;c[K+476>>2]=2147483647;c[K+480>>2]=2147483647;c[K+484>>2]=2147483647;c[K+488>>2]=2147483647;c[K+492>>2]=2147483647;c[K+496>>2]=2147483647;c[K+500>>2]=2147483647;c[K+504>>2]=2147483647;c[K+508>>2]=2147483647;if((j|0)>0){v=e+136|0;u=0;do{w=a[L+u>>0]|0;r=w&255;x=c[v>>2]|0;q=H-(d[(c[x>>2]|0)+r>>0]|0)|0;s=q<<1;s=B(s,s)|0;G=I-(d[(c[x+4>>2]|0)+r>>0]|0)|0;z=G*3|0;s=(B(z,z)|0)+s|0;r=J-(d[(c[x+8>>2]|0)+r>>0]|0)|0;G=G*72|0;x=G+144|0;z=r<<4;e=z+64|0;y=z+192|0;z=z+320|0;A=G+432|0;C=G+720|0;D=G+1008|0;E=G+1296|0;F=G+1584|0;G=G+1872|0;p=3;q=(q<<6)+256|0;r=s+(B(r,r)|0)|0;s=i;t=K;while(1){n=t+16|0;if((r|0)<(c[t>>2]|0)){c[t>>2]=r;a[s>>0]=w}k=r+e|0;l=t+4|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+1>>0]=w}k=k+y|0;l=t+8|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+2>>0]=w}k=k+z|0;l=t+12|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+3>>0]=w}m=x+r|0;o=t+32|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+4>>0]=w}k=m+e|0;l=t+20|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+5>>0]=w}k=k+y|0;l=t+24|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+6>>0]=w}k=k+z|0;l=t+28|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+7>>0]=w}m=A+m|0;n=t+48|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+8>>0]=w}k=m+e|0;l=t+36|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+9>>0]=w}k=k+y|0;l=t+40|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+10>>0]=w}k=k+z|0;l=t+44|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+11>>0]=w}m=C+m|0;o=t+64|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+12>>0]=w}k=m+e|0;l=t+52|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+13>>0]=w}k=k+y|0;l=t+56|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+14>>0]=w}k=k+z|0;l=t+60|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+15>>0]=w}m=D+m|0;n=t+80|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+16>>0]=w}k=m+e|0;l=t+68|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+17>>0]=w}k=k+y|0;l=t+72|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+18>>0]=w}k=k+z|0;l=t+76|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+19>>0]=w}m=E+m|0;o=t+96|0;if((m|0)<(c[n>>2]|0)){c[n>>2]=m;a[s+20>>0]=w}k=m+e|0;l=t+84|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+21>>0]=w}k=k+y|0;l=t+88|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+22>>0]=w}k=k+z|0;l=t+92|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+23>>0]=w}m=F+m|0;n=t+112|0;if((m|0)<(c[o>>2]|0)){c[o>>2]=m;a[s+24>>0]=w}k=m+e|0;l=t+100|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+25>>0]=w}k=k+y|0;l=t+104|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+26>>0]=w}k=k+z|0;l=t+108|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+27>>0]=w}k=G+m|0;if((k|0)<(c[n>>2]|0)){c[n>>2]=k;a[s+28>>0]=w}k=k+e|0;l=t+116|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+29>>0]=w}k=k+y|0;l=t+120|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+30>>0]=w}k=k+z|0;l=t+124|0;if((k|0)<(c[l>>2]|0)){c[l>>2]=k;a[s+31>>0]=w}r=r+q|0;if(!p)break;else{p=p+-1|0;q=q+512|0;s=s+32|0;t=t+128|0}}u=u+1|0}while((u|0)!=(j|0))}s=f&-4;t=g&-8;l=h&-4;m=t|1;n=t|2;o=t|3;p=t|4;q=t|5;r=t|6;k=g|7;j=0;while(1){g=M+(j+s<<2)|0;h=c[g>>2]|0;L=h+(t<<6)+(l<<1)|0;b[L>>1]=(d[i>>0]|0)+1;b[L+2>>1]=(d[i+1>>0]|0)+1;b[L+4>>1]=(d[i+2>>0]|0)+1;b[L+6>>1]=(d[i+3>>0]|0)+1;L=h+(m<<6)+(l<<1)|0;b[L>>1]=(d[i+4>>0]|0)+1;b[L+2>>1]=(d[i+5>>0]|0)+1;b[L+4>>1]=(d[i+6>>0]|0)+1;b[L+6>>1]=(d[i+7>>0]|0)+1;L=h+(n<<6)+(l<<1)|0;b[L>>1]=(d[i+8>>0]|0)+1;b[L+2>>1]=(d[i+9>>0]|0)+1;b[L+4>>1]=(d[i+10>>0]|0)+1;b[L+6>>1]=(d[i+11>>0]|0)+1;h=h+(o<<6)+(l<<1)|0;b[h>>1]=(d[i+12>>0]|0)+1;b[h+2>>1]=(d[i+13>>0]|0)+1;b[h+4>>1]=(d[i+14>>0]|0)+1;b[h+6>>1]=(d[i+15>>0]|0)+1;g=c[g>>2]|0;h=g+(p<<6)+(l<<1)|0;b[h>>1]=(d[i+16>>0]|0)+1;b[h+2>>1]=(d[i+17>>0]|0)+1;b[h+4>>1]=(d[i+18>>0]|0)+1;b[h+6>>1]=(d[i+19>>0]|0)+1;h=g+(q<<6)+(l<<1)|0;b[h>>1]=(d[i+20>>0]|0)+1;b[h+2>>1]=(d[i+21>>0]|0)+1;b[h+4>>1]=(d[i+22>>0]|0)+1;b[h+6>>1]=(d[i+23>>0]|0)+1;h=g+(r<<6)+(l<<1)|0;b[h>>1]=(d[i+24>>0]|0)+1;b[h+2>>1]=(d[i+25>>0]|0)+1;b[h+4>>1]=(d[i+26>>0]|0)+1;b[h+6>>1]=(d[i+27>>0]|0)+1;g=g+(k<<6)+(l<<1)|0;b[g>>1]=(d[i+28>>0]|0)+1;b[g+2>>1]=(d[i+29>>0]|0)+1;b[g+4>>1]=(d[i+30>>0]|0)+1;b[g+6>>1]=(d[i+31>>0]|0)+1;j=j+1|0;if((j|0)==4)break;else i=i+32|0}zb=N;return} +function mO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=zb;zb=zb+16|0;n=o;if((-18-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)m=c[b>>2]|0;else m=b;if(d>>>0<2147483623){k=e+d|0;l=d<<1;k=k>>>0>>0?l:k;k=k>>>0<11?11:k+16&-16}else k=-17;l=tB(k)|0;if(g|0)VD(l,m,g)|0;if(i|0)VD(l+g|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)VD(l+g+i|0,m+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(m,e);c[b>>2]=l;c[b+8>>2]=k|-2147483648;i=f+i|0;c[b+4>>2]=i;a[n>>0]=0;bg(l+i|0,n);zb=o;return}function nO(a,b){a=a|0;b=b|0;return kO(a,b,Yf(b)|0)|0}function oO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;g=j;h=b+11|0;f=a[h>>0]|0;i=f<<24>>24<0;if(i)f=c[b+4>>2]|0;else f=f&255;do if(f>>>0>=d>>>0)if(i){i=(c[b>>2]|0)+d|0;a[g>>0]=0;bg(i,g);c[b+4>>2]=d;break}else{a[g>>0]=0;bg(b+d|0,g);a[h>>0]=d;break}else pO(b,d-f|0,e)|0;while(0);zb=j;return}function pO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;if(d|0){j=b+11|0;f=a[j>>0]|0;if(f<<24>>24<0){h=c[b+4>>2]|0;g=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;g=10}if((g-h|0)>>>0>>0){qO(b,g,h+d-g|0,h,h,0,0);f=a[j>>0]|0}if(f<<24>>24<0)g=c[b>>2]|0;else g=b;iO(g+h|0,d,e)|0;f=h+d|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}zb=k;return b|0}function qO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)eO(b);if((a[b+11>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<2147483623){j=e+d|0;k=d<<1;j=j>>>0>>0?k:j;j=j>>>0<11?11:j+16&-16}else j=-17;k=tB(j)|0;if(g|0)VD(k,l,g)|0;e=f-h-g|0;if(e|0)VD(k+g+i|0,l+g+h|0,e)|0;e=d+1|0;if((e|0)!=11)Pf(l,e);c[b>>2]=k;c[b+8>>2]=j|-2147483648;return}function rO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=b+11|0;f=a[j>>0]|0;g=f<<24>>24<0;if(g){h=c[b+4>>2]|0;f=(c[b+8>>2]&2147483647)+-1|0}else{h=f&255;f=10}if((f-h|0)>>>0>=e>>>0){if(e|0){if(g)g=c[b>>2]|0;else g=b;VD(g+h|0,d,e)|0;f=h+e|0;if((a[j>>0]|0)<0)c[b+4>>2]=f;else a[j>>0]=f;a[i>>0]=0;bg(g+f|0,i)}}else mO(b,f,h+e-f|0,h,h,0,e,d);zb=k;return b|0}function sO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=zb;zb=zb+16|0;h=j;i=j+1|0;a[h>>0]=d;g=b+11|0;d=a[g>>0]|0;e=d<<24>>24<0;if(e){f=c[b+4>>2]|0;d=(c[b+8>>2]&2147483647)+-1|0}else{f=d&255;d=10}if((f|0)==(d|0)){qO(b,d,1,d,d,0,0);if((a[g>>0]|0)<0)e=8;else e=7}else if(e)e=8;else e=7;if((e|0)==7){a[g>>0]=f+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=f+1}b=d+f|0;bg(b,h);a[i>>0]=0;bg(b+1|0,i);zb=j;return}function tO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(e>>>0>1073741807)eO(b);do if(e>>>0>=2){g=e+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=e;break}}else{a[b+8+3>>0]=e;f=b}while(0);kE(f,d,e)|0;c[h>>2]=0;JF(f+(e<<2)|0,h);zb=i;return}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=zb;zb=zb+16|0;h=i;if(d>>>0>1073741807)eO(b);do if(d>>>0>=2){g=d+4&-4;if(g>>>0>1073741823)ua();else{f=tB(g<<2)|0;c[b>>2]=f;c[b+8>>2]=g|-2147483648;c[b+4>>2]=d;break}}else{a[b+8+3>>0]=d;f=b}while(0);vO(f,d,e)|0;c[h>>2]=0;JF(f+(d<<2)|0,h);zb=i;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;if(b)uA(a,c,b)|0;return a|0}function wO(b){b=b|0;var d=0;d=b+8|0;if((a[d+3>>0]|0)<0)Pf(c[b>>2]|0,c[d>>2]<<2);return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;f=b+8|0;k=f+3|0;h=a[k>>0]|0;i=h<<24>>24<0;if(i)g=(c[f>>2]&2147483647)+-1|0;else g=1;do if(g>>>0>=e>>>0){if(i)f=c[b>>2]|0;else f=b;yO(f,d,e)|0;c[j>>2]=0;JF(f+(e<<2)|0,j);if((a[k>>0]|0)<0){c[b+4>>2]=e;break}else{a[k>>0]=e;break}}else{if(i)f=c[b+4>>2]|0;else f=h&255;zO(b,g,e-g|0,f,0,f,e,d)}while(0);zb=l;return b|0}function yO(a,b,c){a=a|0;b=b|0;c=c|0;if(c)vA(a,b,c)|0;return a|0}function zO(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=zb;zb=zb+16|0;o=p;if((1073741806-d|0)>>>0>>0)eO(b);l=b+8|0;if((a[l+3>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else m=e}else m=1073741807;k=tB(m<<2)|0;if(g|0)kE(k,n,g)|0;if(i|0)kE(k+(g<<2)|0,j,i)|0;f=f-h|0;e=f-g|0;if(e|0)kE(k+(g<<2)+(i<<2)|0,n+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(n,e<<2);c[b>>2]=k;c[l>>2]=m|-2147483648;i=f+i|0;c[b+4>>2]=i;c[o>>2]=0;JF(k+(i<<2)|0,o);zb=p;return}function AO(a,b){a=a|0;b=b|0;return xO(a,b,JI(b)|0)|0}function BO(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((1073741807-d|0)>>>0>>0)eO(b);m=b+8|0;if((a[m+3>>0]|0)<0)l=c[b>>2]|0;else l=b;if(d>>>0<536870887){e=e+d|0;j=d<<1;e=e>>>0>>0?j:e;e=e>>>0<2?2:e+4&-4;if(e>>>0>1073741823)ua();else k=e}else k=1073741807;j=tB(k<<2)|0;if(g|0)kE(j,l,g)|0;e=f-h-g|0;if(e|0)kE(j+(g<<2)+(i<<2)|0,l+(g<<2)+(h<<2)|0,e)|0;e=d+1|0;if((e|0)!=2)Pf(l,e<<2);c[b>>2]=j;c[m>>2]=k|-2147483648;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=zb;zb=zb+16|0;j=l;g=b+8|0;k=g+3|0;f=a[k>>0]|0;i=f<<24>>24<0;if(i){h=c[b+4>>2]|0;f=(c[g>>2]&2147483647)+-1|0}else{h=f&255;f=1}if((f-h|0)>>>0>=e>>>0){if(e|0){if(i)g=c[b>>2]|0;else g=b;kE(g+(h<<2)|0,d,e)|0;f=h+e|0;if((a[k>>0]|0)<0)c[b+4>>2]=f;else a[k>>0]=f;c[j>>2]=0;JF(g+(f<<2)|0,j)}}else zO(b,f,h+e-f|0,h,h,0,e,d);zb=l;return b|0}function DO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=zb;zb=zb+16|0;i=k;j=k+4|0;c[i>>2]=d;e=b+8|0;h=e+3|0;d=a[h>>0]|0;f=d<<24>>24<0;if(f){g=c[b+4>>2]|0;d=(c[e>>2]&2147483647)+-1|0}else{g=d&255;d=1}if((g|0)==(d|0)){BO(b,d,1,d,d,0,0);if((a[h>>0]|0)<0)e=8;else e=7}else if(f)e=8;else e=7;if((e|0)==7){a[h>>0]=g+1;d=b}else if((e|0)==8){d=c[b>>2]|0;c[b+4>>2]=g+1}b=d+(g<<2)|0;JF(b,i);c[j>>2]=0;JF(b+4|0,j);zb=k;return}function EO(a){a=a|0;ua()}function FO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=zb;zb=zb+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14291]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=57204+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14291]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;zb=w;return v|0}l=c[14293]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=57204+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=h;c[14296]=f;v=i;zb=w;return v|0}g=c[14292]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[57468+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=57468+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14292]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14296]|0;b=l>>>3;d=57204+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14293]=j;c[14296]=h}v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14292]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[57468+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[57468+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14293]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=57468+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=57204+(b<<1<<2)|0;a=c[14291]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=57468+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;zb=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14293]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14296]|0;if(b>>>0>15){v=a+m|0;c[14296]=v;c[14293]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14293]=0;c[14296]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;zb=w;return v|0}h=c[14294]|0;if(h>>>0>m>>>0){t=h-m|0;c[14294]=t;v=c[14297]|0;u=v+m|0;c[14297]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;zb=w;return v|0}if(!(c[14409]|0)){c[14411]=4096;c[14410]=4096;c[14412]=-1;c[14413]=-1;c[14414]=0;c[14402]=0;c[14409]=n&-16^1431655768;a=4096}else a=c[14411]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;zb=w;return v|0}a=c[14401]|0;if(a|0?(l=c[14399]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;zb=w;return v|0}d:do if(!(c[14402]&4)){d=c[14297]|0;e:do if(d){e=57612;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=LO(b)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=LO(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14410]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14399]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14401]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=LO(b)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14411]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((LO(a)|0)==(-1|0)){LO(d)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14402]=c[14402]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=LO(k)|0,p=LO(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0